diff --git a/package-lock.json b/package-lock.json
index 5dda5724420..7491ec5e96a 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -13,6 +13,7 @@
"app.territoiresentransitions.react"
],
"dependencies": {
+ "react-icons": "^5.0.1",
"react-markdown": "^9.0.1"
},
"devDependencies": {
@@ -29946,6 +29947,14 @@
"version": "2.0.4",
"license": "MIT"
},
+ "node_modules/react-icons": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/react-icons/-/react-icons-5.0.1.tgz",
+ "integrity": "sha512-WqLZJ4bLzlhmsvme6iFdgO8gfZP17rfjYEJ2m9RsZjZ+cc4k1hTzknEz63YS1MeT50kVzoa1Nz36f4BEx+Wigw==",
+ "peerDependencies": {
+ "react": "*"
+ }
+ },
"node_modules/react-is": {
"version": "18.2.0",
"license": "MIT"
diff --git a/package.json b/package.json
index bdd1e5b8f26..19f24ae4807 100644
--- a/package.json
+++ b/package.json
@@ -41,6 +41,7 @@
"react-refresh": "^0.11.0"
},
"dependencies": {
+ "react-icons": "^5.0.1",
"react-markdown": "^9.0.1"
}
}
diff --git a/packages/site/app/programme/[uid]/ListeGallerieService.tsx b/packages/site/app/programme/[uid]/ListeGallerieService.tsx
index 6207f5887b6..b228625c3a7 100644
--- a/packages/site/app/programme/[uid]/ListeGallerieService.tsx
+++ b/packages/site/app/programme/[uid]/ListeGallerieService.tsx
@@ -2,6 +2,7 @@ import MasonryGallery from '@components/galleries/MasonryGallery';
import {Liste} from './types';
import Markdown from '@components/markdown/Markdown';
import {StrapiImage} from '@components/strapiImage/StrapiImage';
+import ReactIcon from '@components/react-icons/ReactIcon';
const ListeGallerieService = ({liste}: {liste: Liste}) => {
return (
@@ -12,13 +13,22 @@ const ListeGallerieService = ({liste}: {liste: Liste}) => {
- {!!l.preTitre && (
-
- )}
-
{l.titre}
-
+
+ {!!l.icone && (
+
+ )}
+ {!!l.preTitre && (
+
+ )}
+
+
+ {!!l.titre &&
{l.titre}
}
+
{!!l.image && (
{
return (
@@ -9,11 +10,19 @@ const ListeGrilleService = ({liste}: {liste: Liste}) => {
{liste.map(l => (
- {!!l.preTitre && (
-
- {l.preTitre}
-
- )}
+
+ {!!l.icone && (
+
+ )}
+ {!!l.preTitre && (
+
+ {l.preTitre}
+
+ )}
+
{!!l.titre && (
{l.titre}
@@ -21,7 +30,7 @@ const ListeGrilleService = ({liste}: {liste: Liste}) => {
)}
{!!l.image && (
{
@@ -18,7 +19,13 @@ const ListeVerticaleService = ({liste}: {liste: Liste}) => {
/>
)}
- {!!l.titre &&
{l.titre}
}
+
+ {!!l.icone && (
+
+ )}
+ {!!l.titre &&
{l.titre}
}
+
+
diff --git a/packages/site/app/programme/[uid]/types.ts b/packages/site/app/programme/[uid]/types.ts
index fc8aad7972a..6a60eaf0dcf 100644
--- a/packages/site/app/programme/[uid]/types.ts
+++ b/packages/site/app/programme/[uid]/types.ts
@@ -40,6 +40,7 @@ export type ListeFetchedData = {
introduction?: string;
liste: {
id: number;
+ icone?: string;
pre_titre?: string;
titre?: string;
texte: string;
@@ -51,6 +52,7 @@ export type ListeFetchedData = {
export type Liste = {
id: number;
preTitre?: string;
+ icone?: string;
titre?: string;
texte: string;
image?: StrapiItem;
diff --git a/packages/site/app/programme/[uid]/utils.ts b/packages/site/app/programme/[uid]/utils.ts
index d92e1f88c95..3ce19d166d6 100644
--- a/packages/site/app/programme/[uid]/utils.ts
+++ b/packages/site/app/programme/[uid]/utils.ts
@@ -73,6 +73,7 @@ export const getServiceStrapiData = async (uid: string) => {
introduction: listeData.introduction,
liste: listeData.liste.map(ct => ({
id: ct.id,
+ icone: ct.icone,
preTitre: ct.pre_titre,
titre: ct.titre,
texte: ct.texte,
diff --git a/packages/site/components/react-icons/ReactIcon.tsx b/packages/site/components/react-icons/ReactIcon.tsx
new file mode 100644
index 00000000000..ac8af424381
--- /dev/null
+++ b/packages/site/components/react-icons/ReactIcon.tsx
@@ -0,0 +1,17 @@
+import * as ReactIcons from 'react-icons/ri';
+
+interface IIconComponent {
+ icon: string;
+ className?: string;
+}
+type TReactIcon = keyof typeof ReactIcons;
+
+const ReactIcon: React.FC
= ({icon, className}) => {
+ const DynamicIconComponent = ReactIcons[icon as TReactIcon];
+
+ if (DynamicIconComponent === undefined) return <>>;
+
+ return ;
+};
+
+export default ReactIcon;
diff --git a/strapi/.strapi/client/app.js b/strapi/.strapi/client/app.js
index e0f39d01137..4ac4b09a054 100644
--- a/strapi/.strapi/client/app.js
+++ b/strapi/.strapi/client/app.js
@@ -4,11 +4,13 @@
*/
import i18N from "@strapi/plugin-i18n/strapi-admin";
import usersPermissions from "@strapi/plugin-users-permissions/strapi-admin";
+import reactIcons from "strapi-plugin-react-icons/strapi-admin";
import { renderAdmin } from "@strapi/strapi/admin";
renderAdmin(document.getElementById("strapi"), {
plugins: {
i18n: i18N,
"users-permissions": usersPermissions,
+ "react-icons": reactIcons,
},
});
diff --git a/strapi/config/plugins.ts b/strapi/config/plugins.ts
new file mode 100644
index 00000000000..96981416a4e
--- /dev/null
+++ b/strapi/config/plugins.ts
@@ -0,0 +1 @@
+export default ({ env }) => ({ "react-icons": true });
diff --git a/strapi/package-lock.json b/strapi/package-lock.json
index 25fb1d7e238..b98ddda7a8e 100644
--- a/strapi/package-lock.json
+++ b/strapi/package-lock.json
@@ -17,6 +17,7 @@
"react": "^18.2.0",
"react-dom": "^18.2.0",
"react-router-dom": "^5.3.4",
+ "strapi-plugin-react-icons": "^0.2.2",
"styled-components": "^5.3.11"
},
"engines": {
@@ -1141,28 +1142,28 @@
}
},
"node_modules/@floating-ui/core": {
- "version": "1.4.1",
- "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.4.1.tgz",
- "integrity": "sha512-jk3WqquEJRlcyu7997NtR5PibI+y5bi+LS3hPmguVClypenMsCY3CBa3LAQnozRCtCrYWSEtAdiskpamuJRFOQ==",
+ "version": "1.5.3",
+ "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.5.3.tgz",
+ "integrity": "sha512-O0WKDOo0yhJuugCx6trZQj5jVJ9yR0ystG2JaNAemYUWce+pmM6WUEFIibnWyEJKdrDxhm75NoSRME35FNaM/Q==",
"dependencies": {
- "@floating-ui/utils": "^0.1.1"
+ "@floating-ui/utils": "^0.2.0"
}
},
"node_modules/@floating-ui/dom": {
- "version": "1.5.1",
- "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.5.1.tgz",
- "integrity": "sha512-KwvVcPSXg6mQygvA1TjbN/gh///36kKtllIF8SUm0qpFj8+rvYrpvlYdL1JoA71SHpDqgSSdGOSoQ0Mp3uY5aw==",
+ "version": "1.5.4",
+ "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.5.4.tgz",
+ "integrity": "sha512-jByEsHIY+eEdCjnTVu+E3ephzTOzkQ8hgUfGwos+bg7NlH33Zc5uO+QHz1mrQUOgIKKDD1RtS201P9NvAfq3XQ==",
"dependencies": {
- "@floating-ui/core": "^1.4.1",
- "@floating-ui/utils": "^0.1.1"
+ "@floating-ui/core": "^1.5.3",
+ "@floating-ui/utils": "^0.2.0"
}
},
"node_modules/@floating-ui/react-dom": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/@floating-ui/react-dom/-/react-dom-2.0.4.tgz",
- "integrity": "sha512-CF8k2rgKeh/49UrnIBs4BdxPUV6vize/Db1d/YbCLyp9GiVZ0BEwf5AiDSxJRCr6yOkGqTFHtmrULxkEfYZ7dQ==",
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/@floating-ui/react-dom/-/react-dom-2.0.6.tgz",
+ "integrity": "sha512-IB8aCRFxr8nFkdYZgH+Otd9EVQPJoynxeFRGTB8voPoZMRWo8XjYuCRgpI1btvuKY69XMiLnW+ym7zoBHM90Rw==",
"dependencies": {
- "@floating-ui/dom": "^1.5.1"
+ "@floating-ui/dom": "^1.5.4"
},
"peerDependencies": {
"react": ">=16.8.0",
@@ -1170,9 +1171,9 @@
}
},
"node_modules/@floating-ui/utils": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.1.1.tgz",
- "integrity": "sha512-m0G6wlnhm/AX0H12IOWtK8gASEMffnX08RtKkCgTdHb9JpHKGloI7icFfLg9ZmQeavcvR0PKmzxClyuFPSjKWw=="
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.1.tgz",
+ "integrity": "sha512-9TANp6GPoMtYzQdt54kfAyMmz1+osLlXdg2ENroU7zzrtflTLrrC/lgrIfaSe+Wu0b89GKccT7vxXA0MoAIO+Q=="
},
"node_modules/@formatjs/ecma402-abstract": {
"version": "1.14.3",
@@ -1301,17 +1302,17 @@
"integrity": "sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig=="
},
"node_modules/@internationalized/date": {
- "version": "3.5.0",
- "resolved": "https://registry.npmjs.org/@internationalized/date/-/date-3.5.0.tgz",
- "integrity": "sha512-nw0Q+oRkizBWMioseI8+2TeUPEyopJVz5YxoYVzR0W1v+2YytiYah7s/ot35F149q/xAg4F1gT/6eTd+tsUpFQ==",
+ "version": "3.5.1",
+ "resolved": "https://registry.npmjs.org/@internationalized/date/-/date-3.5.1.tgz",
+ "integrity": "sha512-LUQIfwU9e+Fmutc/DpRTGXSdgYZLBegi4wygCWDSVmUdLTaMHsQyASDiJtREwanwKuQLq0hY76fCJ9J/9I2xOQ==",
"dependencies": {
"@swc/helpers": "^0.5.0"
}
},
"node_modules/@internationalized/number": {
- "version": "3.4.0",
- "resolved": "https://registry.npmjs.org/@internationalized/number/-/number-3.4.0.tgz",
- "integrity": "sha512-8TvotW3qVDHC4uv/BVoN6Qx0Dm8clHY1/vpH+dh+XRiPW/9NVpKn1P8d1A+WLphWrMwyqyWXI7uWehJPviaeIw==",
+ "version": "3.5.0",
+ "resolved": "https://registry.npmjs.org/@internationalized/number/-/number-3.5.0.tgz",
+ "integrity": "sha512-ZY1BW8HT9WKYvaubbuqXbbDdHhOUMfE2zHHFJeTppid0S+pc8HtdIxFxaYMsGjCb4UsF+MEJ4n2TfU7iHnUK8w==",
"dependencies": {
"@swc/helpers": "^0.5.0"
}
@@ -3286,9 +3287,9 @@
}
},
"node_modules/@strapi/ui-primitives": {
- "version": "1.13.2",
- "resolved": "https://registry.npmjs.org/@strapi/ui-primitives/-/ui-primitives-1.13.2.tgz",
- "integrity": "sha512-Koaun6riXoTOvvlKNgFy44BVUfLfchgpabRhrNH/KfmBQQlhLCqJDQu023FcFQDQQ4XFO3DpvzDk8pCbmva7oQ==",
+ "version": "1.14.1",
+ "resolved": "https://registry.npmjs.org/@strapi/ui-primitives/-/ui-primitives-1.14.1.tgz",
+ "integrity": "sha512-AmwyfZuazN7J1AgVf7i7oly+zwcJdWFqh/UCd3uPtoonnPmdCIRjkK8aBWlU9M+k3277FGIaCHOwNHiMSiBbbA==",
"dependencies": {
"@radix-ui/number": "^1.0.1",
"@radix-ui/primitive": "^1.0.1",
@@ -11835,6 +11836,14 @@
"resolved": "https://registry.npmjs.org/react-fast-compare/-/react-fast-compare-3.2.2.tgz",
"integrity": "sha512-nsO+KSNgo1SbJqJEYRE9ERzo7YtYbou/OqjSQKxV7jcKox7+usiUVZOAC+XnDOABXggQTno0Y1CpVnuWEc1boQ=="
},
+ "node_modules/react-icons": {
+ "version": "4.8.0",
+ "resolved": "https://registry.npmjs.org/react-icons/-/react-icons-4.8.0.tgz",
+ "integrity": "sha512-N6+kOLcihDiAnj5Czu637waJqSnwlMNROzVZMhfX68V/9bu9qHaMIJC4UdozWoOk57gahFCNHwVvWzm0MTzRjg==",
+ "peerDependencies": {
+ "react": "*"
+ }
+ },
"node_modules/react-intl": {
"version": "6.4.1",
"resolved": "https://registry.npmjs.org/react-intl/-/react-intl-6.4.1.tgz",
@@ -13507,6 +13516,94 @@
"node": ">= 0.8"
}
},
+ "node_modules/strapi-plugin-react-icons": {
+ "version": "0.2.2",
+ "resolved": "https://registry.npmjs.org/strapi-plugin-react-icons/-/strapi-plugin-react-icons-0.2.2.tgz",
+ "integrity": "sha512-zGgdAU8w/62dDWG9qNdBePVyO+g5cz2ZcDC5h0FOSbPRUXppswp7DPgY0B9fDQiXi7y/ooFpe6WeON99cXsKmQ==",
+ "dependencies": {
+ "@strapi/design-system": "^1.13.1",
+ "@strapi/helper-plugin": "^4.16.2",
+ "@strapi/icons": "^1.13.0",
+ "prop-types": "^15.8.1",
+ "react-icons": "4.8.0"
+ },
+ "engines": {
+ "node": ">=14.19.1 <=20.x.x",
+ "npm": ">=6.0.0"
+ },
+ "peerDependencies": {
+ "@strapi/strapi": "^4.14.5",
+ "react": "^17.0.0 || ^18.0.0",
+ "react-dom": "^17.0.0 || ^18.0.0",
+ "react-router-dom": "^5.3.4",
+ "styled-components": "^5.3.3 || ^6.1.0"
+ }
+ },
+ "node_modules/strapi-plugin-react-icons/node_modules/@strapi/design-system": {
+ "version": "1.14.1",
+ "resolved": "https://registry.npmjs.org/@strapi/design-system/-/design-system-1.14.1.tgz",
+ "integrity": "sha512-BHWX0f8l4JNhds4c4S2Vop60eF+wK2c0dLoq+8fKB3rZOftS5deO1BuFWo7XzZHF4MFbGT5mYWys9J5ANVBA6A==",
+ "dependencies": {
+ "@codemirror/lang-json": "^6.0.1",
+ "@floating-ui/react-dom": "^2.0.5",
+ "@internationalized/date": "^3.5.1",
+ "@internationalized/number": "^3.5.0",
+ "@radix-ui/react-dismissable-layer": "^1.0.5",
+ "@radix-ui/react-dropdown-menu": "^2.0.6",
+ "@radix-ui/react-focus-scope": "1.0.4",
+ "@strapi/ui-primitives": "^1.14.1",
+ "@uiw/react-codemirror": "^4.21.21",
+ "aria-hidden": "^1.2.3",
+ "compute-scroll-into-view": "^3.1.0",
+ "prop-types": "^15.8.1",
+ "react-remove-scroll": "^2.5.7"
+ },
+ "peerDependencies": {
+ "@strapi/icons": "^1.5.0",
+ "react": "^17.0.0 || ^18.0.0",
+ "react-dom": "^17.0.0 || ^18.0.0",
+ "react-router-dom": "^5.2.0",
+ "styled-components": "^5.2.1"
+ }
+ },
+ "node_modules/strapi-plugin-react-icons/node_modules/@strapi/helper-plugin": {
+ "version": "4.17.1",
+ "resolved": "https://registry.npmjs.org/@strapi/helper-plugin/-/helper-plugin-4.17.1.tgz",
+ "integrity": "sha512-2c5wI6PFQ/kRrEoVvmo6gUrgVJMdnK/P99YD10Vw3ljn7n1G5ejlyef1lkbElgRoNFFQdGPK9+n0jvTZ0dhyWQ==",
+ "dependencies": {
+ "axios": "1.6.0",
+ "date-fns": "2.30.0",
+ "formik": "2.4.0",
+ "immer": "9.0.19",
+ "lodash": "4.17.21",
+ "qs": "6.11.1",
+ "react-helmet": "6.1.0",
+ "react-intl": "6.4.1",
+ "react-query": "3.39.3",
+ "react-select": "5.7.0"
+ },
+ "engines": {
+ "node": ">=18.0.0 <=20.x.x",
+ "npm": ">=6.0.0"
+ },
+ "peerDependencies": {
+ "@strapi/design-system": "1.14.1",
+ "@strapi/icons": "1.14.1",
+ "react": "^17.0.0 || ^18.0.0",
+ "react-dom": "^17.0.0 || ^18.0.0",
+ "react-router-dom": "^5.2.0",
+ "styled-components": "^5.2.1"
+ }
+ },
+ "node_modules/strapi-plugin-react-icons/node_modules/@strapi/icons": {
+ "version": "1.14.1",
+ "resolved": "https://registry.npmjs.org/@strapi/icons/-/icons-1.14.1.tgz",
+ "integrity": "sha512-ja3et1QIo+6kTfk/mzeSiLTtZ6pCC6mwvUlp8qGyBTQ5BJvMacgxEdXBnYRn6fbYt6fl7gAKCORRQpnHNQfwjg==",
+ "peerDependencies": {
+ "react": "^17.0.0 || ^18.0.0",
+ "react-dom": "^17.0.0 || ^18.0.0"
+ }
+ },
"node_modules/stream-chain": {
"version": "2.2.5",
"resolved": "https://registry.npmjs.org/stream-chain/-/stream-chain-2.2.5.tgz",
@@ -16195,34 +16292,34 @@
"optional": true
},
"@floating-ui/core": {
- "version": "1.4.1",
- "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.4.1.tgz",
- "integrity": "sha512-jk3WqquEJRlcyu7997NtR5PibI+y5bi+LS3hPmguVClypenMsCY3CBa3LAQnozRCtCrYWSEtAdiskpamuJRFOQ==",
+ "version": "1.5.3",
+ "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.5.3.tgz",
+ "integrity": "sha512-O0WKDOo0yhJuugCx6trZQj5jVJ9yR0ystG2JaNAemYUWce+pmM6WUEFIibnWyEJKdrDxhm75NoSRME35FNaM/Q==",
"requires": {
- "@floating-ui/utils": "^0.1.1"
+ "@floating-ui/utils": "^0.2.0"
}
},
"@floating-ui/dom": {
- "version": "1.5.1",
- "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.5.1.tgz",
- "integrity": "sha512-KwvVcPSXg6mQygvA1TjbN/gh///36kKtllIF8SUm0qpFj8+rvYrpvlYdL1JoA71SHpDqgSSdGOSoQ0Mp3uY5aw==",
+ "version": "1.5.4",
+ "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.5.4.tgz",
+ "integrity": "sha512-jByEsHIY+eEdCjnTVu+E3ephzTOzkQ8hgUfGwos+bg7NlH33Zc5uO+QHz1mrQUOgIKKDD1RtS201P9NvAfq3XQ==",
"requires": {
- "@floating-ui/core": "^1.4.1",
- "@floating-ui/utils": "^0.1.1"
+ "@floating-ui/core": "^1.5.3",
+ "@floating-ui/utils": "^0.2.0"
}
},
"@floating-ui/react-dom": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/@floating-ui/react-dom/-/react-dom-2.0.4.tgz",
- "integrity": "sha512-CF8k2rgKeh/49UrnIBs4BdxPUV6vize/Db1d/YbCLyp9GiVZ0BEwf5AiDSxJRCr6yOkGqTFHtmrULxkEfYZ7dQ==",
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/@floating-ui/react-dom/-/react-dom-2.0.6.tgz",
+ "integrity": "sha512-IB8aCRFxr8nFkdYZgH+Otd9EVQPJoynxeFRGTB8voPoZMRWo8XjYuCRgpI1btvuKY69XMiLnW+ym7zoBHM90Rw==",
"requires": {
- "@floating-ui/dom": "^1.5.1"
+ "@floating-ui/dom": "^1.5.4"
}
},
"@floating-ui/utils": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.1.1.tgz",
- "integrity": "sha512-m0G6wlnhm/AX0H12IOWtK8gASEMffnX08RtKkCgTdHb9JpHKGloI7icFfLg9ZmQeavcvR0PKmzxClyuFPSjKWw=="
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.1.tgz",
+ "integrity": "sha512-9TANp6GPoMtYzQdt54kfAyMmz1+osLlXdg2ENroU7zzrtflTLrrC/lgrIfaSe+Wu0b89GKccT7vxXA0MoAIO+Q=="
},
"@formatjs/ecma402-abstract": {
"version": "1.14.3",
@@ -16359,17 +16456,17 @@
}
},
"@internationalized/date": {
- "version": "3.5.0",
- "resolved": "https://registry.npmjs.org/@internationalized/date/-/date-3.5.0.tgz",
- "integrity": "sha512-nw0Q+oRkizBWMioseI8+2TeUPEyopJVz5YxoYVzR0W1v+2YytiYah7s/ot35F149q/xAg4F1gT/6eTd+tsUpFQ==",
+ "version": "3.5.1",
+ "resolved": "https://registry.npmjs.org/@internationalized/date/-/date-3.5.1.tgz",
+ "integrity": "sha512-LUQIfwU9e+Fmutc/DpRTGXSdgYZLBegi4wygCWDSVmUdLTaMHsQyASDiJtREwanwKuQLq0hY76fCJ9J/9I2xOQ==",
"requires": {
"@swc/helpers": "^0.5.0"
}
},
"@internationalized/number": {
- "version": "3.4.0",
- "resolved": "https://registry.npmjs.org/@internationalized/number/-/number-3.4.0.tgz",
- "integrity": "sha512-8TvotW3qVDHC4uv/BVoN6Qx0Dm8clHY1/vpH+dh+XRiPW/9NVpKn1P8d1A+WLphWrMwyqyWXI7uWehJPviaeIw==",
+ "version": "3.5.0",
+ "resolved": "https://registry.npmjs.org/@internationalized/number/-/number-3.5.0.tgz",
+ "integrity": "sha512-ZY1BW8HT9WKYvaubbuqXbbDdHhOUMfE2zHHFJeTppid0S+pc8HtdIxFxaYMsGjCb4UsF+MEJ4n2TfU7iHnUK8w==",
"requires": {
"@swc/helpers": "^0.5.0"
}
@@ -17687,9 +17784,9 @@
}
},
"@strapi/ui-primitives": {
- "version": "1.13.2",
- "resolved": "https://registry.npmjs.org/@strapi/ui-primitives/-/ui-primitives-1.13.2.tgz",
- "integrity": "sha512-Koaun6riXoTOvvlKNgFy44BVUfLfchgpabRhrNH/KfmBQQlhLCqJDQu023FcFQDQQ4XFO3DpvzDk8pCbmva7oQ==",
+ "version": "1.14.1",
+ "resolved": "https://registry.npmjs.org/@strapi/ui-primitives/-/ui-primitives-1.14.1.tgz",
+ "integrity": "sha512-AmwyfZuazN7J1AgVf7i7oly+zwcJdWFqh/UCd3uPtoonnPmdCIRjkK8aBWlU9M+k3277FGIaCHOwNHiMSiBbbA==",
"requires": {
"@radix-ui/number": "^1.0.1",
"@radix-ui/primitive": "^1.0.1",
@@ -24039,6 +24136,12 @@
}
}
},
+ "react-icons": {
+ "version": "4.8.0",
+ "resolved": "https://registry.npmjs.org/react-icons/-/react-icons-4.8.0.tgz",
+ "integrity": "sha512-N6+kOLcihDiAnj5Czu637waJqSnwlMNROzVZMhfX68V/9bu9qHaMIJC4UdozWoOk57gahFCNHwVvWzm0MTzRjg==",
+ "requires": {}
+ },
"react-intl": {
"version": "6.4.1",
"resolved": "https://registry.npmjs.org/react-intl/-/react-intl-6.4.1.tgz",
@@ -25295,6 +25398,63 @@
"resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz",
"integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ=="
},
+ "strapi-plugin-react-icons": {
+ "version": "0.2.2",
+ "resolved": "https://registry.npmjs.org/strapi-plugin-react-icons/-/strapi-plugin-react-icons-0.2.2.tgz",
+ "integrity": "sha512-zGgdAU8w/62dDWG9qNdBePVyO+g5cz2ZcDC5h0FOSbPRUXppswp7DPgY0B9fDQiXi7y/ooFpe6WeON99cXsKmQ==",
+ "requires": {
+ "@strapi/design-system": "^1.13.1",
+ "@strapi/helper-plugin": "^4.16.2",
+ "@strapi/icons": "^1.13.0",
+ "prop-types": "^15.8.1",
+ "react-icons": "4.8.0"
+ },
+ "dependencies": {
+ "@strapi/design-system": {
+ "version": "1.14.1",
+ "resolved": "https://registry.npmjs.org/@strapi/design-system/-/design-system-1.14.1.tgz",
+ "integrity": "sha512-BHWX0f8l4JNhds4c4S2Vop60eF+wK2c0dLoq+8fKB3rZOftS5deO1BuFWo7XzZHF4MFbGT5mYWys9J5ANVBA6A==",
+ "requires": {
+ "@codemirror/lang-json": "^6.0.1",
+ "@floating-ui/react-dom": "^2.0.5",
+ "@internationalized/date": "^3.5.1",
+ "@internationalized/number": "^3.5.0",
+ "@radix-ui/react-dismissable-layer": "^1.0.5",
+ "@radix-ui/react-dropdown-menu": "^2.0.6",
+ "@radix-ui/react-focus-scope": "1.0.4",
+ "@strapi/ui-primitives": "^1.14.1",
+ "@uiw/react-codemirror": "^4.21.21",
+ "aria-hidden": "^1.2.3",
+ "compute-scroll-into-view": "^3.1.0",
+ "prop-types": "^15.8.1",
+ "react-remove-scroll": "^2.5.7"
+ }
+ },
+ "@strapi/helper-plugin": {
+ "version": "4.17.1",
+ "resolved": "https://registry.npmjs.org/@strapi/helper-plugin/-/helper-plugin-4.17.1.tgz",
+ "integrity": "sha512-2c5wI6PFQ/kRrEoVvmo6gUrgVJMdnK/P99YD10Vw3ljn7n1G5ejlyef1lkbElgRoNFFQdGPK9+n0jvTZ0dhyWQ==",
+ "requires": {
+ "axios": "1.6.0",
+ "date-fns": "2.30.0",
+ "formik": "2.4.0",
+ "immer": "9.0.19",
+ "lodash": "4.17.21",
+ "qs": "6.11.1",
+ "react-helmet": "6.1.0",
+ "react-intl": "6.4.1",
+ "react-query": "3.39.3",
+ "react-select": "5.7.0"
+ }
+ },
+ "@strapi/icons": {
+ "version": "1.14.1",
+ "resolved": "https://registry.npmjs.org/@strapi/icons/-/icons-1.14.1.tgz",
+ "integrity": "sha512-ja3et1QIo+6kTfk/mzeSiLTtZ6pCC6mwvUlp8qGyBTQ5BJvMacgxEdXBnYRn6fbYt6fl7gAKCORRQpnHNQfwjg==",
+ "requires": {}
+ }
+ }
+ },
"stream-chain": {
"version": "2.2.5",
"resolved": "https://registry.npmjs.org/stream-chain/-/stream-chain-2.2.5.tgz",
diff --git a/strapi/package.json b/strapi/package.json
index 5604b4f9d05..21b62b3e667 100644
--- a/strapi/package.json
+++ b/strapi/package.json
@@ -22,6 +22,7 @@
"react": "^18.2.0",
"react-dom": "^18.2.0",
"react-router-dom": "^5.3.4",
+ "strapi-plugin-react-icons": "^0.2.2",
"styled-components": "^5.3.11"
},
"engines": {
diff --git a/strapi/src/components/services/carte.json b/strapi/src/components/services/carte.json
index 6c5228b212d..09a23224209 100644
--- a/strapi/src/components/services/carte.json
+++ b/strapi/src/components/services/carte.json
@@ -7,6 +7,10 @@
},
"options": {},
"attributes": {
+ "icone": {
+ "type": "customField",
+ "customField": "plugin::react-icons.icon"
+ },
"pre_titre": {
"type": "string",
"maxLength": 255
@@ -24,9 +28,7 @@
"type": "media",
"multiple": false,
"required": false,
- "allowedTypes": [
- "images"
- ]
+ "allowedTypes": ["images"]
}
}
}
diff --git a/strapi/types/generated/components.d.ts b/strapi/types/generated/components.d.ts
index d0d5491c904..c2ee5f62bd9 100644
--- a/strapi/types/generated/components.d.ts
+++ b/strapi/types/generated/components.d.ts
@@ -243,6 +243,7 @@ export interface ServicesCarte extends Schema.Component {
description: '';
};
attributes: {
+ icone: Attribute.String & Attribute.CustomField<'plugin::react-icons.icon'>;
pre_titre: Attribute.String &
Attribute.SetMinMaxLength<{
maxLength: 255;
diff --git a/strapi/types/generated/contentTypes.d.ts b/strapi/types/generated/contentTypes.d.ts
index ccf5101c198..62aa53bf490 100644
--- a/strapi/types/generated/contentTypes.d.ts
+++ b/strapi/types/generated/contentTypes.d.ts
@@ -482,6 +482,51 @@ export interface PluginUploadFolder extends Schema.CollectionType {
};
}
+export interface PluginReactIconsIconlibrary extends Schema.CollectionType {
+ collectionName: 'iconlibrary';
+ info: {
+ singularName: 'iconlibrary';
+ pluralName: 'iconlibraries';
+ displayName: 'IconLibrary';
+ };
+ options: {
+ draftAndPublish: false;
+ comment: '';
+ };
+ pluginOptions: {
+ 'content-manager': {
+ visible: false;
+ };
+ 'content-type-builder': {
+ visible: false;
+ };
+ };
+ attributes: {
+ name: Attribute.String & Attribute.Required;
+ abbreviation: Attribute.String &
+ Attribute.Required &
+ Attribute.Unique &
+ Attribute.SetMinMaxLength<{
+ maxLength: 3;
+ }>;
+ isEnabled: Attribute.Boolean & Attribute.DefaultTo;
+ createdAt: Attribute.DateTime;
+ updatedAt: Attribute.DateTime;
+ createdBy: Attribute.Relation<
+ 'plugin::react-icons.iconlibrary',
+ 'oneToOne',
+ 'admin::user'
+ > &
+ Attribute.Private;
+ updatedBy: Attribute.Relation<
+ 'plugin::react-icons.iconlibrary',
+ 'oneToOne',
+ 'admin::user'
+ > &
+ Attribute.Private;
+ };
+}
+
export interface PluginI18NLocale extends Schema.CollectionType {
collectionName: 'i18n_locale';
info: {
@@ -1250,6 +1295,7 @@ declare module '@strapi/types' {
'admin::transfer-token-permission': AdminTransferTokenPermission;
'plugin::upload.file': PluginUploadFile;
'plugin::upload.folder': PluginUploadFolder;
+ 'plugin::react-icons.iconlibrary': PluginReactIconsIconlibrary;
'plugin::i18n.locale': PluginI18NLocale;
'plugin::users-permissions.permission': PluginUsersPermissionsPermission;
'plugin::users-permissions.role': PluginUsersPermissionsRole;