@lab-anssi/ui-kit 1.61.3 → 1.62.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (221) hide show
  1. package/README.md +102 -21
  2. package/dist/assets/assets.d.ts +1 -0
  3. package/dist/assets/assets.js +1 -0
  4. package/dist/assets/dsfr-icons.css +1 -0
  5. package/dist/composants/Alerte.svelte +83 -0
  6. package/dist/composants/Alerte.svelte.d.ts +32 -0
  7. package/dist/composants/AncresParcours.svelte +132 -0
  8. package/dist/composants/AncresParcours.svelte.d.ts +11 -0
  9. package/dist/composants/BandeauPage.svelte +218 -0
  10. package/dist/composants/BandeauPage.svelte.d.ts +58 -0
  11. package/dist/composants/BlocFonctionnalites.svelte +570 -0
  12. package/dist/composants/BlocFonctionnalites.svelte.d.ts +105 -0
  13. package/dist/composants/Bouton.svelte +156 -0
  14. package/dist/composants/Bouton.svelte.d.ts +36 -0
  15. package/dist/composants/CentreAide.svelte +223 -0
  16. package/dist/composants/CentreAide.svelte.d.ts +41 -0
  17. package/dist/composants/FiltresCatalogue.svelte +147 -0
  18. package/dist/composants/FiltresCatalogue.svelte.d.ts +15 -0
  19. package/dist/composants/Icone.svelte +42 -0
  20. package/dist/composants/Icone.svelte.d.ts +7 -0
  21. package/dist/composants/Lien.svelte +233 -0
  22. package/dist/composants/Lien.svelte.d.ts +39 -0
  23. package/dist/composants/MultiSelect.svelte +931 -0
  24. package/dist/composants/MultiSelect.svelte.d.ts +51 -0
  25. package/dist/composants/Reactions.svelte +360 -0
  26. package/dist/composants/Reactions.svelte.d.ts +23 -0
  27. package/dist/composants/ResumePssi.svelte +92 -0
  28. package/dist/composants/ResumePssi.svelte.d.ts +6 -0
  29. package/dist/composants/Tag.svelte +113 -0
  30. package/dist/composants/Tag.svelte.d.ts +35 -0
  31. package/dist/composants/blog/BandeauTitre.svelte +150 -0
  32. package/dist/composants/blog/BandeauTitre.svelte.d.ts +29 -0
  33. package/dist/composants/blog/CarteArticle.svelte +69 -0
  34. package/dist/composants/blog/CarteArticle.svelte.d.ts +8 -0
  35. package/dist/composants/blog/IconeChevronBas.svelte +22 -0
  36. package/dist/composants/blog/IconeChevronBas.svelte.d.ts +26 -0
  37. package/dist/composants/blog/IconeMenuLateral.svelte +15 -0
  38. package/dist/composants/blog/IconeMenuLateral.svelte.d.ts +26 -0
  39. package/dist/composants/blog/ListeArticles.svelte +62 -0
  40. package/dist/composants/blog/ListeArticles.svelte.d.ts +9 -0
  41. package/dist/composants/blog/ListeDeroulante.svelte +57 -0
  42. package/dist/composants/blog/ListeDeroulante.svelte.d.ts +10 -0
  43. package/dist/composants/blog/PageCrisp.svelte +244 -0
  44. package/dist/composants/blog/PageCrisp.svelte.d.ts +8 -0
  45. package/dist/composants/blog/SommaireBureau.svelte +64 -0
  46. package/dist/composants/blog/SommaireBureau.svelte.d.ts +9 -0
  47. package/dist/composants/blog/SommaireMobile.svelte +115 -0
  48. package/dist/composants/blog/SommaireMobile.svelte.d.ts +9 -0
  49. package/dist/composants/carrousel-tuiles/CarrouselTuiles.svelte +184 -0
  50. package/dist/composants/carrousel-tuiles/CarrouselTuiles.svelte.d.ts +34 -0
  51. package/dist/composants/carrousel-tuiles/IconeFlecheDroite.svelte +16 -0
  52. package/dist/composants/carrousel-tuiles/IconeFlecheDroite.svelte.d.ts +26 -0
  53. package/dist/composants/carrousel-tuiles/IconeFlecheGauche.svelte +12 -0
  54. package/dist/composants/carrousel-tuiles/IconeFlecheGauche.svelte.d.ts +26 -0
  55. package/dist/composants/carrousel-tuiles/Tuile.svelte +72 -0
  56. package/dist/composants/carrousel-tuiles/Tuile.svelte.d.ts +10 -0
  57. package/dist/composants/icones/Fleche.svelte +25 -0
  58. package/dist/composants/icones/Fleche.svelte.d.ts +6 -0
  59. package/dist/composants/icones/LienExterne.svelte +20 -0
  60. package/dist/composants/icones/LienExterne.svelte.d.ts +6 -0
  61. package/dist/composants/marelle/Etape.svelte +165 -0
  62. package/dist/composants/marelle/Etape.svelte.d.ts +32 -0
  63. package/dist/composants/marelle/Marelle.svelte +97 -0
  64. package/dist/composants/marelle/Marelle.svelte.d.ts +44 -0
  65. package/dist/composants/mes-services-cyber/bandeau/Bandeau.svelte +158 -0
  66. package/dist/composants/mes-services-cyber/bandeau/Bandeau.svelte.d.ts +3 -0
  67. package/dist/composants/mes-services-cyber/lien/LienDiagnosticCyber.svelte +125 -0
  68. package/dist/composants/mes-services-cyber/lien/LienDiagnosticCyber.svelte.d.ts +7 -0
  69. package/dist/composants/pied-de-page/NavigationPiedDePage.svelte +62 -0
  70. package/dist/composants/pied-de-page/NavigationPiedDePage.svelte.d.ts +6 -0
  71. package/dist/composants/suite-cyber/AccueilSuiteCyber.svelte +96 -0
  72. package/dist/composants/suite-cyber/AccueilSuiteCyber.svelte.d.ts +6 -0
  73. package/dist/composants/suite-cyber/LiensSuiteCyber.svelte +99 -0
  74. package/dist/composants/suite-cyber/LiensSuiteCyber.svelte.d.ts +14 -0
  75. package/dist/composants/suite-cyber/SuiteCyber.svelte +296 -0
  76. package/dist/composants/suite-cyber/SuiteCyber.svelte.d.ts +6 -0
  77. package/dist/composants/vitrines-produits/briques/Brique.svelte +50 -0
  78. package/dist/composants/vitrines-produits/briques/Brique.svelte.d.ts +9 -0
  79. package/dist/composants/vitrines-produits/briques/BriqueContenuADeuxColonnes.svelte +144 -0
  80. package/dist/composants/vitrines-produits/briques/BriqueContenuADeuxColonnes.svelte.d.ts +29 -0
  81. package/dist/composants/vitrines-produits/briques/BriqueHero.svelte +246 -0
  82. package/dist/composants/vitrines-produits/briques/BriqueHero.svelte.d.ts +31 -0
  83. package/dist/composants/vitrines-produits/briques/BriqueTitreMultimedia.svelte +50 -0
  84. package/dist/composants/vitrines-produits/briques/BriqueTitreMultimedia.svelte.d.ts +25 -0
  85. package/dist/composants/vitrines-produits/briques/LecteurVideo.svelte +14 -0
  86. package/dist/composants/vitrines-produits/briques/LecteurVideo.svelte.d.ts +9 -0
  87. package/dist/composants/vitrines-produits/briques/PresentationANSSI.svelte +148 -0
  88. package/dist/composants/vitrines-produits/briques/PresentationANSSI.svelte.d.ts +37 -0
  89. package/dist/composants/vitrines-produits/briques/RejoindreLaCommunaute.svelte +139 -0
  90. package/dist/composants/vitrines-produits/briques/RejoindreLaCommunaute.svelte.d.ts +36 -0
  91. package/dist/composants/vitrines-produits/briques/temoignages/IconeTemoignage.svelte +18 -0
  92. package/dist/composants/vitrines-produits/briques/temoignages/IconeTemoignage.svelte.d.ts +26 -0
  93. package/dist/composants/vitrines-produits/briques/temoignages/Temoignages.svelte +168 -0
  94. package/dist/composants/vitrines-produits/briques/temoignages/Temoignages.svelte.d.ts +13 -0
  95. package/dist/directives/actions.svelte.d.ts +32 -0
  96. package/dist/directives/actions.svelte.js +158 -0
  97. package/dist/dsfr/DsfrAccordion.svelte +889 -0
  98. package/dist/dsfr/DsfrAccordion.svelte.d.ts +40 -0
  99. package/dist/dsfr/DsfrAlert.svelte +2097 -0
  100. package/dist/dsfr/DsfrAlert.svelte.d.ts +36 -0
  101. package/dist/dsfr/DsfrBadge.svelte +532 -0
  102. package/dist/dsfr/DsfrBadge.svelte.d.ts +41 -0
  103. package/dist/dsfr/DsfrBadgesGroup.svelte +610 -0
  104. package/dist/dsfr/DsfrBadgesGroup.svelte.d.ts +25 -0
  105. package/dist/dsfr/DsfrBreadcrumb.svelte +657 -0
  106. package/dist/dsfr/DsfrBreadcrumb.svelte.d.ts +25 -0
  107. package/dist/dsfr/DsfrButton.svelte +1821 -0
  108. package/dist/dsfr/DsfrButton.svelte.d.ts +68 -0
  109. package/dist/dsfr/DsfrButtonsGroup.svelte +1896 -0
  110. package/dist/dsfr/DsfrButtonsGroup.svelte.d.ts +36 -0
  111. package/dist/dsfr/DsfrCallout.svelte +242 -0
  112. package/dist/dsfr/DsfrCallout.svelte.d.ts +46 -0
  113. package/dist/dsfr/DsfrCard.svelte +10223 -0
  114. package/dist/dsfr/DsfrCard.svelte.d.ts +102 -0
  115. package/dist/dsfr/DsfrCheckbox.svelte +1280 -0
  116. package/dist/dsfr/DsfrCheckbox.svelte.d.ts +69 -0
  117. package/dist/dsfr/DsfrCheckboxesGroup.svelte +1532 -0
  118. package/dist/dsfr/DsfrCheckboxesGroup.svelte.d.ts +73 -0
  119. package/dist/dsfr/DsfrConnect.svelte +511 -0
  120. package/dist/dsfr/DsfrConnect.svelte.d.ts +15 -0
  121. package/dist/dsfr/DsfrContainer.svelte +894 -0
  122. package/dist/dsfr/DsfrContainer.svelte.d.ts +31 -0
  123. package/dist/dsfr/DsfrContent.svelte +1140 -0
  124. package/dist/dsfr/DsfrContent.svelte.d.ts +60 -0
  125. package/dist/dsfr/DsfrDropdown.svelte +335 -0
  126. package/dist/dsfr/DsfrDropdown.svelte.d.ts +73 -0
  127. package/dist/dsfr/DsfrFooter.svelte +2370 -0
  128. package/dist/dsfr/DsfrFooter.svelte.d.ts +77 -0
  129. package/dist/dsfr/DsfrHeader.svelte +4162 -0
  130. package/dist/dsfr/DsfrHeader.svelte.d.ts +131 -0
  131. package/dist/dsfr/DsfrHighlight.svelte +294 -0
  132. package/dist/dsfr/DsfrHighlight.svelte.d.ts +33 -0
  133. package/dist/dsfr/DsfrInput.svelte +1270 -0
  134. package/dist/dsfr/DsfrInput.svelte.d.ts +86 -0
  135. package/dist/dsfr/DsfrLabel.svelte +438 -0
  136. package/dist/dsfr/DsfrLabel.svelte.d.ts +65 -0
  137. package/dist/dsfr/DsfrLink.svelte +1007 -0
  138. package/dist/dsfr/DsfrLink.svelte.d.ts +66 -0
  139. package/dist/dsfr/DsfrLogo.svelte +228 -0
  140. package/dist/dsfr/DsfrLogo.svelte.d.ts +11 -0
  141. package/dist/dsfr/DsfrMessagesGroup.svelte +260 -0
  142. package/dist/dsfr/DsfrMessagesGroup.svelte.d.ts +46 -0
  143. package/dist/dsfr/DsfrModal.svelte +2983 -0
  144. package/dist/dsfr/DsfrModal.svelte.d.ts +56 -0
  145. package/dist/dsfr/DsfrNavigation.svelte +7626 -0
  146. package/dist/dsfr/DsfrNotice.svelte +2948 -0
  147. package/dist/dsfr/DsfrNotice.svelte.d.ts +37 -0
  148. package/dist/dsfr/DsfrPagination.svelte +1036 -0
  149. package/dist/dsfr/DsfrPagination.svelte.d.ts +35 -0
  150. package/dist/dsfr/DsfrQuote.svelte +646 -0
  151. package/dist/dsfr/DsfrQuote.svelte.d.ts +29 -0
  152. package/dist/dsfr/DsfrRadio.svelte +1307 -0
  153. package/dist/dsfr/DsfrRadio.svelte.d.ts +37 -0
  154. package/dist/dsfr/DsfrRadiosGroup.svelte +1629 -0
  155. package/dist/dsfr/DsfrRadiosGroup.svelte.d.ts +76 -0
  156. package/dist/dsfr/DsfrRange.svelte +1329 -0
  157. package/dist/dsfr/DsfrRange.svelte.d.ts +77 -0
  158. package/dist/dsfr/DsfrSearch.svelte +2015 -0
  159. package/dist/dsfr/DsfrSearch.svelte.d.ts +51 -0
  160. package/dist/dsfr/DsfrSegmented.svelte +422 -0
  161. package/dist/dsfr/DsfrSegmented.svelte.d.ts +34 -0
  162. package/dist/dsfr/DsfrSelect.svelte +1068 -0
  163. package/dist/dsfr/DsfrSelect.svelte.d.ts +86 -0
  164. package/dist/dsfr/DsfrShare.svelte +2228 -0
  165. package/dist/dsfr/DsfrShare.svelte.d.ts +40 -0
  166. package/dist/dsfr/DsfrSideMenu.svelte +1211 -0
  167. package/dist/dsfr/DsfrSideMenu.svelte.d.ts +34 -0
  168. package/dist/dsfr/DsfrSkipLink.svelte +990 -0
  169. package/dist/dsfr/DsfrSkipLink.svelte.d.ts +13 -0
  170. package/dist/dsfr/DsfrStepper.svelte +340 -0
  171. package/dist/dsfr/DsfrStepper.svelte.d.ts +18 -0
  172. package/dist/dsfr/DsfrTable.svelte +829 -0
  173. package/dist/dsfr/DsfrTable.svelte.d.ts +202 -0
  174. package/dist/dsfr/DsfrTabnav.svelte +1149 -0
  175. package/dist/dsfr/DsfrTabnav.svelte.d.ts +36 -0
  176. package/dist/dsfr/DsfrTabs.svelte +926 -0
  177. package/dist/dsfr/DsfrTabs.svelte.d.ts +28 -0
  178. package/dist/dsfr/DsfrTag.svelte +1269 -0
  179. package/dist/dsfr/DsfrTag.svelte.d.ts +59 -0
  180. package/dist/dsfr/DsfrTagsGroup.svelte +1351 -0
  181. package/dist/dsfr/DsfrTagsGroup.svelte.d.ts +37 -0
  182. package/dist/dsfr/DsfrTextarea.svelte +1385 -0
  183. package/dist/dsfr/DsfrTextarea.svelte.d.ts +72 -0
  184. package/dist/dsfr/DsfrTile.svelte +7645 -0
  185. package/dist/dsfr/DsfrTile.svelte.d.ts +79 -0
  186. package/dist/dsfr/DsfrToggle.svelte +1453 -0
  187. package/dist/dsfr/DsfrToggle.svelte.d.ts +56 -0
  188. package/dist/dsfr/DsfrTooltip.svelte +396 -0
  189. package/dist/dsfr/DsfrTooltip.svelte.d.ts +36 -0
  190. package/dist/dsfr/DsfrTranscription.svelte +2962 -0
  191. package/dist/dsfr/DsfrTranscription.svelte.d.ts +39 -0
  192. package/dist/dsfr/DsfrTranslate.svelte +1384 -0
  193. package/dist/dsfr/DsfrTranslate.svelte.d.ts +19 -0
  194. package/dist/dsfr/DsfrUser.svelte +736 -0
  195. package/dist/dsfr/DsfrUser.svelte.d.ts +65 -0
  196. package/dist/index.d.ts +79 -0
  197. package/dist/index.js +79 -0
  198. package/dist/styles/apparence-bouton.scss +154 -0
  199. package/dist/styles/dsfr-icons.css +1 -0
  200. package/dist/styles/dsfr-icons.scss +4 -0
  201. package/dist/styles/dsfr-variables.scss +28 -0
  202. package/dist/styles/mixins-dsfr.scss +226 -0
  203. package/dist/styles/mixins.scss +51 -0
  204. package/dist/types/commun.d.ts +63 -0
  205. package/dist/types/commun.js +1 -0
  206. package/dist/types/global.d.ts +24 -0
  207. package/dist/types/global.js +9 -0
  208. package/dist/types/index.d.ts +2 -0
  209. package/dist/types/index.js +1 -0
  210. package/dist/ui-kit-components.json +142 -100
  211. package/dist/utilitaires/createFormValidation.svelte.d.ts +34 -0
  212. package/dist/utilitaires/createFormValidation.svelte.js +183 -0
  213. package/dist/utilitaires/icons-stylesheet.d.ts +370 -0
  214. package/dist/utilitaires/icons-stylesheet.js +33 -0
  215. package/dist/utilitaires/index.d.ts +14 -0
  216. package/dist/utilitaires/index.js +26 -0
  217. package/dist/web-types.json +149 -101
  218. package/dist/webcomponents/lab-anssi-ui-kit.iife.js +36 -9
  219. package/dist/webcomponents/lab-anssi-ui-kit.jsx.d.ts +42 -24
  220. package/package.json +49 -43
  221. package/dist/index.html +0 -0
@@ -0,0 +1,66 @@
1
+ import type { Size } from "../types";
2
+ type LinkSize = Extract<Size, "sm" | "md" | "lg">;
3
+ type IconPlace = "left" | "right";
4
+ interface Props {
5
+ /** Libellé du lien. Optionnel si le slot par défaut est utilisé. */
6
+ label?: string;
7
+ /** Taille du lien */
8
+ size?: LinkSize;
9
+ /** Attribut 'id' du lien */
10
+ id?: string;
11
+ /** Le lien est désactivé */
12
+ disabled?: boolean;
13
+ /** Si true, target prend la valeur _blank, sinon _self */
14
+ blank?: boolean;
15
+ /** Attribut title du lien */
16
+ title?: string;
17
+ /** Adresse url du lien */
18
+ href?: string;
19
+ /**
20
+ * Si défini, active le "mode" téléchargement du navigateur (i.e. n'ouvre pas un nouvel onglet)
21
+ * Si chaîne vide, se base sur diverses sources pour calculer le nom du fichier (voir https://developer.mozilla.org/fr/docs/Web/HTML/Reference/Elements/a#download)
22
+ * Si chaine non-vide, remplace le nom du fichier téléchargé
23
+ * */
24
+ download?: string;
25
+ /** Détail du lien de téléchargement */
26
+ detail?: string;
27
+ /** Code langue du fichier à télécharger */
28
+ hreflang?: string;
29
+ /** si true, ajoute l'attribut permettant le remplissage automatique des informations du fichier à télécharger. Si string, ajoute l'attribut avec la valeur de la string (ex: "bytes" pour les poids en bytes) */
30
+ assess?: boolean;
31
+ /** Le lien a une icône */
32
+ hasIcon?: boolean;
33
+ /** Nom de l'icône dans le lien */
34
+ icon?: string;
35
+ /** Emplacement de l'icône<br>Si non défini alors que le paramètre icon est défini, lien avec icône seule, sans label<br>valeurs :<br>- left : icône à gauche du label<br>- right : icône à droite du label */
36
+ iconPlace?: IconPlace;
37
+ /** Si true, affiche le lien dans une teinte neutre */
38
+ neutral?: boolean;
39
+ }
40
+ interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string, any> = any, Events extends Record<string, any> = any, Slots extends Record<string, any> = any, Exports = {}, Bindings = string> {
41
+ new (options: import('svelte').ComponentConstructorOptions<Props>): import('svelte').SvelteComponent<Props, Events, Slots> & {
42
+ $$bindings?: Bindings;
43
+ } & Exports;
44
+ (internal: unknown, props: Props & {
45
+ $$events?: Events;
46
+ $$slots?: Slots;
47
+ }): Exports & {
48
+ $set?: any;
49
+ $on?: any;
50
+ };
51
+ z_$$bindings?: Bindings;
52
+ }
53
+ type $$__sveltets_2_PropsWithChildren<Props, Slots> = Props & (Slots extends {
54
+ default: any;
55
+ } ? Props extends Record<string, never> ? any : {
56
+ children?: any;
57
+ } : {});
58
+ declare const DsfrLink: $$__sveltets_2_IsomorphicComponent<$$__sveltets_2_PropsWithChildren<Props, {
59
+ default: {};
60
+ }>, {
61
+ [evt: string]: CustomEvent<any>;
62
+ }, {
63
+ default: {};
64
+ }, {}, "">;
65
+ type DsfrLink = InstanceType<typeof DsfrLink>;
66
+ export default DsfrLink;
@@ -0,0 +1,228 @@
1
+ <svelte:options
2
+ customElement={{
3
+ tag: "dsfr-logo",
4
+ props: {
5
+ title: { attribute: "title", type: "String" },
6
+ size: { attribute: "size", type: "String" },
7
+ },
8
+ }}
9
+ />
10
+
11
+ <script lang="ts">let { title = "République<br>Française", size = "md" } = $props();
12
+ export {};
13
+ </script>
14
+
15
+ <p class={["fr-logo", `fr-logo--${size}`]}>
16
+ <!-- eslint-disable-next-line svelte/no-at-html-tags -->
17
+ {@html title}
18
+ </p>
19
+
20
+ <style>/*!
21
+ * DSFR v1.14.4 | SPDX-License-Identifier: MIT | License-Filename: LICENSE.md | restricted use (see terms and conditions)
22
+ *//* ¯¯¯¯¯¯¯¯¯ *\
23
+ LOGO
24
+ \* ˍˍˍˍˍˍˍˍˍ */
25
+ .fr-logo {
26
+ --text-spacing: 0;
27
+ --underline-img: none;
28
+ display: inline-block;
29
+ font-weight: 700;
30
+ line-height: 1.0317460317em;
31
+ letter-spacing: -0.01em;
32
+ text-transform: uppercase;
33
+ vertical-align: middle;
34
+ text-indent: -0.1em;
35
+ font-size: 1.05rem;
36
+ color: var(--text-black-white-grey);
37
+ }
38
+
39
+ .fr-logo::before {
40
+ width: 2.75rem;
41
+ height: 1rem;
42
+ margin-bottom: 0.3333333333rem;
43
+ background-size: 2.75rem 1.125rem, 2.75rem 1rem, 0;
44
+ background-position: 0 -0.0625rem, 0 0, 0 0;
45
+ content: "";
46
+ display: block;
47
+ background-repeat: no-repeat, no-repeat, no-repeat;
48
+ background-image: url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 44 18'%3E%3Cpath fill='%23fff' d='M11.3 10.2c-.9.6-1.7 1.3-2.3 2.1v-.1c.4-.5.7-1 1-1.5.4-.2.7-.5 1-.8.5-.5 1-1 1.7-1.3.3-.1.5-.1.8 0-.1.1-.2.1-.4.2H13v-.1c-.3.3-.7.5-1 .9-.1.2-.2.6-.7.6 0 .1.1 0 0 0zm1.6 4.6c0-.1-.1 0-.2 0l-.1.1-.1.1-.2.2s.1.1.2 0l.1-.1c.1 0 .2-.1.2-.2.1 0 .1 0 .1-.1 0 .1 0 0 0 0zm-1.6-4.3c.1 0 .2 0 .2-.1s.1-.1.1-.1v-.1c-.2.1-.3.2-.3.3zm2.4 1.9s0-.1 0 0c.1-.1.2-.1.3-.1.7-.1 1.4-.3 2.1-.6-.8-.5-1.7-.9-2.6-1h.1c-.1-.1-.3-.1-.5-.2h.1c-.2-.1-.5-.1-.7-.2.1 0 .2-.2.2-.3h-.1c-.4.2-.6.5-.8.9.2.1.5 0 .7.1h-.3c-.1 0-.2.1-.2.2h.1c-.1 0-.1.1-.2.1.1.1.2 0 .4 0 0 .1.1.1.1.1-.1 0-.2.1-.3.3-.1.2-.2.2-.3.3v.1c-.3.2-.6.5-.9.8v.1c-.1.1-.2.1-.2.2v.1c.4-.1.6-.4 1-.5l.6-.3c.2 0 .3-.1.5-.1v.1h.2c0 .1-.2 0-.1.1s.3.1.4 0c.2-.2.3-.2.4-.2zM12.4 14c-.4.2-.9.2-1.2.4 0 0 0 .1-.1.1 0 0-.1 0-.1.1-.1 0-.1.1-.2.2l-.1.1s0 .1.1 0l.1-.1s-.1.1-.1.2V15.3l-.1.1s0 .1-.1.1l-.1.1.2-.2.1-.1h.2s0-.1.1-.1c.1-.1.2-.2.3-.2h.1c.1-.1.3-.1.4-.2.1-.1.2-.2.3-.2.2-.2.5-.3.8-.5-.1 0-.2-.1-.3-.1 0 .1-.2 0-.3 0zM30 9.7c-.1.2-.4.2-.6.3-.2.2 0 .4.1.5.1.3-.2.5-.4.5.1.1.2.1.2.1 0 .2.2.2.1.4s-.5.3-.3.5c.1.2.1.5 0 .7-.1.2-.3.4-.5.5-.2.1-.4.1-.6 0-.1 0-.1-.1-.2-.1-.5-.1-1-.2-1.5-.2-.1 0-.3.1-.4.1-.1.1-.3.2-.4.3l-.1.1c-.1.1-.2.2-.2.3-.1.2-.2.4-.2.6-.2.5-.2 1 0 1.4 0 0 1 .3 1.7.6.2.1.5.2.7.4l1.7 1H13.2l1.6-1c.6-.4 1.3-.7 2-1 .5-.2 1.1-.5 1.5-.9.2-.2.3-.4.5-.5.3-.4.6-.7 1-1l.3-.3s0-.1.1-.1c-.2.1-.2.2-.4.2 0 0-.1 0 0-.1s.2-.2.3-.2v-.1c-.4 0-.7.2-1 .5h-.2c-.5.2-.8.5-1.2.7v-.1c-.2.1-.4.2-.5.2-.2 0-.5.1-.8 0-.4 0-.7.1-1.1.2-.2.1-.4.1-.6.2v.1l-.2.2c-.2.1-.3.2-.5.4l-.5.5h-.1l.1-.1.1-.1c0-.1.1-.1.1-.2.2-.1.3-.3.5-.4 0 0-.1 0 0 0 0 0 0-.1.1-.1l-.1.1c-.1.1-.1.2-.2.2v-.1-.1l.2-.2c.1-.1.2-.1.3-.2h.1c-.2.1-.3.1-.5.2H14h-.1c0-.1.1-.1.2-.2h.1c1-.8 2.3-.6 3.4-1 .1-.1.2-.1.3-.2.1-.1.3-.2.5-.3.2-.2.4-.4.5-.7v-.1c-.4.4-.8.7-1.3 1-.6.2-1.3.4-2 .4 0-.1.1-.1.1-.1 0-.1.1-.1.1-.2h.1s0-.1.1-.1h.1c-.1-.1-.3.1-.4 0 .1-.1 0-.2.1-.2h.1s0-.1.1-.1c.5-.3.9-.5 1.3-.7-.1 0-.1.1-.2 0 .1 0 0-.1.1-.1.3-.1.6-.3.9-.4-.1 0-.2.1-.3 0 .1 0 .1-.1.2-.1v-.1h0c0-.1.1 0 .2-.1h-.1c.1-.1.2-.2.4-.2 0-.1-.1 0-.1-.1h.1-.5c-.1 0 0-.1 0-.1.1-.2.2-.5.3-.7h-.1c-.3.3-.8.5-1.2.6h-.2c-.2.1-.4.1-.5 0-.1-.1-.2-.2-.3-.2-.2-.1-.5-.3-.8-.4-.7-.2-1.5-.4-2.3-.3.3-.1.7-.2 1.1-.3.5-.2 1-.3 1.5-.3h-.3c-.4 0-.9.1-1.3.2-.3.1-.6.2-.9.2-.2.1-.3.2-.5.2v-.1c.3-.4.7-.7 1.1-.8.5-.1 1.1 0 1.6.1.4 0 .8.1 1.1.2.1 0 .2.2.3.3.2.1.4 0 .5.1v-.2c.1-.1.3 0 .4 0 .2-.2-.2-.4-.3-.6v-.1c.2.2.5.4.7.6.1.1.5.2.5 0-.2-.3-.4-.6-.7-.9v-.2c-.1 0-.1 0-.1-.1-.1-.1-.1-.2-.1-.3-.1-.2 0-.4-.1-.5-.1-.2-.1-.3-.1-.5-.1-.5-.2-1-.3-1.4-.1-.6.3-1 .6-1.5.2-.4.5-.7.8-1 .1-.4.3-.7.6-1 .3-.3.6-.5.9-.6.3-.1.5-.2.8-.3l2.5-.4H25l1.8.3c.1 0 .2 0 .2.1.1.1.3.2.4.2.2.1.4.3.6.5.1.1.2.3.1.4-.1.1-.1.4-.2.4-.2.1-.4.1-.6.1-.1 0-.2 0-.4-.1.5.2.9.4 1.2.8 0 .1.2.1.3.1v.1c-.1.1-.1.1-.1.2h.1c.1-.1.1-.4.3-.3.2.1.2.3.1.4-.1.1-.2.2-.4.3v.2c.1.1.1.2.2.4s.1.5.2.7c.1.5.2.9.2 1.4 0 .2-.1.5 0 .7l.3.6c.1.2.2.3.3.5.2.3.6.6.4 1zm-15.6 5.2c-.1 0-.1.1-.1.1s.1 0 .1-.1zm5.8-1.8c-.1.1 0 0 0 0zm-6.7-.2c0 .1.1 0 .1 0 .2-.1.5 0 .6-.2-.1-.1-.2 0-.2-.1-.1 0-.2 0-.2.1-.1.1-.3.1-.3.2z'/%3E%3Cpath fill='gray' d='M27.9 6.8c.1 0 .3 0 .3.1-.1.2-.4.3-.6.5h-.1c-.1.1-.1.2-.1.2h-.3c.1.1.3.2.5.2l.1.1h.2V8c-.1.1-.2.1-.4.1.2.1.5.1.7 0 .2-.1 0-.4.1-.5-.1 0 0-.1-.1-.1.1-.1.1-.2.2-.2s.1 0 .2-.1c0-.1-.1-.1-.1-.2.2-.1.3-.3.3-.5 0-.1-.3-.1-.4-.2h-.5c-.2 0-.3.1-.5.1l-.6.3c.2-.1.4-.1.7-.2 0 .3.2.3.4.3'/%3E%3C/svg%3E"), linear-gradient(90deg, #000091 0%, #000091 50%, #e1000f 50%, #e1000f 100%), linear-gradient(90deg, #000 0%, #000 100%);
49
+ forced-color-adjust: none;
50
+ }
51
+
52
+ :root[data-fr-mourning] .fr-logo::before {
53
+ background-size: 2.75rem 1.125rem, 0, 2.75rem 1rem;
54
+ box-shadow: 0 0 0 1px #fff;
55
+ }
56
+
57
+ .fr-logo::after {
58
+ min-width: 2.625rem;
59
+ background-size: 5.25rem 3.75rem;
60
+ background-position: 0 calc(100% + 1.875rem);
61
+ padding-top: 2.2083333333rem;
62
+ content: "";
63
+ display: block;
64
+ background-repeat: no-repeat;
65
+ background-image: url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 252 180'%3E%3Cdefs%3E%3Csymbol id='a' viewBox='0 0 11 15.5'%3E%3Cpath d='M10.4 5.3C11.9 1.5 10.1 0 7.9 0 4.2 0 0 6.5 0 11.7c0 2.5 1.2 3.8 3 3.8 2.1 0 4.3-2 6.2-5.5h-1c-1.2 1.5-2.6 2.6-3.9 2.6-1.3 0-2-.8-2-2.6a10.7 10.7 0 01.3-2.2zm-4-3.1c1.1 0 2 .8 1.5 2.6L3.1 6.1c.8-2.2 2.2-4 3.4-4z'/%3E%3C/symbol%3E%3Csymbol id='b' viewBox='0 0 12.4 21.8'%3E%3Cuse width='11' height='15.5' y='6.4' href='%23a'/%3E%3Cpath d='M7.9 4.7L12.4.6V0h-3L6.7 4.7H8z'/%3E%3C/symbol%3E%3Csymbol id='c' viewBox='0 0 11.5 19'%3E%3Cpath d='M1.7 5.7h2.6L.1 17.1a1.3 1.3 0 001.2 2c3 0 6.4-2.6 7.8-6.2h-.7a9.4 9.4 0 01-5.1 3.5L7 5.7H11l.5-1.6H7.7L9 0H7.6L4.9 4.1l-3.2.4v1.2z'/%3E%3C/symbol%3E%3Csymbol id='d' viewBox='0 0 9.8 21.9'%3E%3Cpath d='M7.6 8c.3-1-.4-1.6-1-1.6-2.2 0-5 2.1-6 5h.7A5.6 5.6 0 014.4 9L.1 20.3a1.1 1.1 0 001 1.6c2.2 0 4.7-2 5.8-5H6A5.6 5.6 0 013 19.5zM8 3.7a1.8 1.8 0 001.8-1.8A1.8 1.8 0 008 0a1.8 1.8 0 00-1.8 1.8A1.8 1.8 0 008 3.6'/%3E%3C/symbol%3E%3Csymbol id='e' viewBox='0 0 14.8 15.5'%3E%3Cpath d='M3.3 3.1c.7 0 1 1 0 3.4l-3 6.8c-.7 1.3 0 2.2 1.2 2.2a1.3 1.3 0 001.5-1l3-8C7.4 4.8 10 3 11 3s.8.6.3 1.6l-4.6 9a1.3 1.3 0 001.1 1.9c2.3 0 5-2 6-5h-.6A5.6 5.6 0 0110 13l4-8a6.1 6.1 0 00.8-2.8A2 2 0 0012.6 0c-2 0-3.6 2.2-6 5V2.8C6.6 1.4 6.1 0 4.8 0 3.2 0 1.8 2.5.7 4.9h.7c.7-1.1 1.3-1.8 2-1.8'/%3E%3C/symbol%3E%3Csymbol id='f' viewBox='0 0 12 15.5'%3E%3Cpath d='M11.8 3.5c.5-1.9.2-3.5-1.2-3.5-1.8 0-2.3 1.2-4 5V2.8C6.5 1.3 6 0 4.6 0 3.1 0 1.7 2.5.5 5h.8C2 3.7 2.8 3 3.3 3c.7 0 1 1 0 3.4l-3 6.8c-.7 1.3 0 2.1 1.2 2.1a1.3 1.3 0 001.5-1l3-8a50.3 50.3 0 012.6-3h3.2z'/%3E%3C/symbol%3E%3Csymbol id='g' viewBox='0 0 14.7 16.2'%3E%3Cpath d='M10.5 13.1c-.6 0-1-1 0-3.4L14.6.1 13.4 0l-1.3 1.3h-.3C6.1 1.3 0 8.6 0 14.2a2 2 0 002.1 2.1c1.7 0 3.3-2.4 5.2-5l-.1 1c-.3 2.6.6 4 2 4 1.5 0 3-2.4 4-4.9h-.7c-.7 1.1-1.5 1.8-2 1.8zM7.9 9.8c-1.3 1.6-3.4 3.5-4.3 3.5-.5 0-.9-.5-.9-1.6 0-3.5 4-8.2 6-8.2a4.2 4.2 0 011.4.2z'/%3E%3C/symbol%3E%3Csymbol id='h' viewBox='0 0 21.9 19.8'%3E%3Cpath d='M11.2 19.8l.3-.9c-3.8-.7-4.3-.7-2.7-4.8l1.4-3.9h3c1.9 0 1.9.9 1.6 3h1l2.6-6.9h-1c-1 1.6-1.8 2.9-3.8 2.9h-3l2-5.6c.8-2 1.1-2.4 3.7-2.4h.7c2.6 0 3 .7 3 3.5h1l.9-4.7H7.3L7 .9c3 .6 3.3.9 2 4.8L5.7 14c-1.5 3.9-2 4.2-5.5 4.8l-.3.9z'/%3E%3C/symbol%3E%3Csymbol id='i' viewBox='0 0 10.1 21.9'%3E%3Cpath d='M2.9 19.4L10.1.3 9.8 0l-5 .6v.6l1 .7c.9.7.6 1.3-.2 3.4L.2 19.9a1.3 1.3 0 001.1 2c2.3 0 4.7-2.1 5.8-5h-.7a6.5 6.5 0 01-3.5 2.5'/%3E%3C/symbol%3E%3Csymbol id='j' viewBox='0 0 18 22'%3E%3Cpath d='M18 .6h-4.3a3.8 3.8 0 00-2.1-.6A6.6 6.6 0 005 6.5a3.3 3.3 0 003 3.6c-1.9.8-3 1.8-3 2.9a1.7 1.7 0 00.9 1.5c-4.3 1.3-6 2.8-6 4.7 0 2 2.6 2.8 5.6 2.8 5.3 0 9.6-2.7 9.6-5.1 0-1.8-1.6-2.5-4.3-3.3-2.2-.7-3.2-.8-3.2-1.6A2.4 2.4 0 019 10.2a6.6 6.6 0 006.1-6.5 4.5 4.5 0 00-.2-1.5h2.5zM9.8 16.2c2.1.7 3 1 3 1.6 0 1.4-2 2.5-5.6 2.5-2.7 0-4-.6-4-2 0-1.5 1.4-2.5 3.5-3.3a21.5 21.5 0 003 1.2zM9 9c-1 0-1.3-.8-1.3-1.7 0-2.8 1.4-6.2 3.5-6.2 1 0 1.3.8 1.3 1.6 0 2.9-1.4 6.3-3.5 6.3z'/%3E%3C/symbol%3E%3Csymbol id='k' viewBox='0 0 23 25.1'%3E%3Cpath d='M14.3 15.6c1.9 0 2 .8 1.6 2.8H17l2.5-6.8h-1c-1 1.6-1.7 2.9-3.8 2.9h-4.1l2-5.6c.7-2 1-2.4 3.7-2.4H18c2.6 0 3 .7 3 3.5h1l.9-4.7H7.3l-.3.9c3 .6 3.3.9 2 4.8l-3.2 8.4c-1.5 3.9-2 4.2-5.6 4.8l-.2 1h17.4l3.2-5h-1.2c-2 2-4 3.8-8 3.8-4.7 0-4.3-.3-2.7-4.6l1.4-3.8h4.2zm2.3-11.8L21 .6V0h-3l-2.6 3.9h1.2v-.1z'/%3E%3C/symbol%3E%3Csymbol id='l' viewBox='0 0 13.6 21.8'%3E%3Cpath d='M11.4 6.4c-2 0-4 2.2-5.8 4.8L9.6.3 9.4 0l-5 .6V1l1 .8c.9.7.6 1.3-.2 3.4L.8 16.8A13.9 13.9 0 000 19c0 1.4 1.8 2.7 3.5 2.7 3.8 0 10-6.9 10-12.2 0-2.3-.5-3.2-2.1-3.2zM4.8 19.5c-.8 0-1.9-.7-1.9-1.3a15.5 15.5 0 01.8-2.2L5 12.7C6.3 11 8.4 9.3 9.6 9.3c.7 0 1.2.4 1.2 1.5 0 3.1-2.9 8.7-6 8.7z'/%3E%3C/symbol%3E%3Csymbol id='m' viewBox='0 0 19.2 19.9'%3E%3Cpath d='M17.6 0H7.3L7 .9c3 .6 3.3.9 2 4.8l-3.2 8.5c-1.5 3.9-2 4.2-5.5 4.8L0 20h15.7l3.5-6H18c-2 2-4.2 4.8-7.7 4.8-2.7 0-3-.5-1.6-4.5l3.1-8.5c1.4-3.9 2-4.2 5.5-4.8z'/%3E%3C/symbol%3E%3Csymbol id='n' viewBox='0 0 126 90'%3E%3Cuse width='12.4' height='21.8' x='112.7' y='66.1' href='%23b'/%3E%3Cuse width='11.5' height='19' x='102.2' y='69' href='%23c'/%3E%3Cuse width='9.8' height='21.9' x='93.6' y='66.1' href='%23d'/%3E%3Cuse width='14.8' height='15.5' x='77.2' y='72.5' href='%23e'/%3E%3Cuse width='12' height='15.5' x='65.7' y='72.5' href='%23f'/%3E%3Cuse width='11' height='15.5' x='54.3' y='72.5' href='%23a'/%3E%3Cuse width='11.5' height='19' x='43.7' y='69' href='%23c'/%3E%3Cuse width='14.7' height='16.2' x='28.9' y='71.8' href='%23g'/%3E%3Cuse width='12' height='15.5' x='19.6' y='72.5' href='%23f'/%3E%3Cuse width='21.9' height='19.8' y='67.6' href='%23h'/%3E%3Cuse width='12.4' height='21.8' x='77.3' y='33.1' href='%23b'/%3E%3Cuse width='11.5' height='19' x='66.8' y='36' href='%23c'/%3E%3Cuse width='9.8' height='21.9' x='58.2' y='33' href='%23d'/%3E%3Cuse width='10.1' height='21.9' x='49.4' y='33.1' href='%23i'/%3E%3Cuse width='14.7' height='16.2' x='34.9' y='38.8' href='%23g'/%3E%3Cuse width='18' height='22' x='18.6' y='39.4' href='%23j'/%3E%3Cuse width='23' height='25.1' y='29.3' href='%23k'/%3E%3Cuse width='12.4' height='21.8' x='76.8' y='.1' href='%23b'/%3E%3Cuse width='11.5' height='19' x='66.2' y='2.9' href='%23c'/%3E%3Cuse width='12' height='15.5' x='54.8' y='6.5' href='%23f'/%3E%3Cuse width='11' height='15.5' x='43.4' y='6.4' href='%23a'/%3E%3Cuse width='13.6' height='21.8' x='29.4' y='.1' href='%23l'/%3E%3Cuse width='9.8' height='21.9' x='20.6' href='%23d'/%3E%3Cuse width='19.2' height='19.9' y='1.4' href='%23m'/%3E%3C/symbol%3E%3C/defs%3E%3Cuse fill='%23000' width='126' height='90' x='0' y='0' href='%23n'/%3E%3Cuse fill='%23fff' width='126' height='90' x='126' y='90' href='%23n'/%3E%3C/svg%3E");
66
+ }
67
+
68
+ [data-fr-theme=dark] .fr-logo::after {
69
+ background-position: -2.625rem 100%;
70
+ }
71
+
72
+ .fr-logo--sm {
73
+ font-size: 0.7875rem;
74
+ }
75
+
76
+ .fr-logo--sm::before {
77
+ width: 2.0625rem;
78
+ height: 0.75rem;
79
+ margin-bottom: 0.25rem;
80
+ background-size: 2.0625rem 0.84375rem, 2.0625rem 0.75rem, 0;
81
+ background-position: 0 -0.046875rem, 0 0, 0 0;
82
+ }
83
+
84
+ :root[data-fr-mourning] .fr-logo--sm::before {
85
+ background-size: 2.0625rem 0.84375rem, 0, 2.0625rem 0.75rem;
86
+ }
87
+
88
+ .fr-logo--sm::after {
89
+ min-width: 1.96875rem;
90
+ background-size: 3.9375rem 2.8125rem;
91
+ background-position: 0 calc(100% + 1.40625rem);
92
+ padding-top: 1.65625rem;
93
+ }
94
+
95
+ [data-fr-theme=dark] .fr-logo--sm::after {
96
+ background-position: -1.96875rem 100%;
97
+ }
98
+
99
+ .fr-logo--lg {
100
+ font-size: 1.3125rem;
101
+ }
102
+
103
+ .fr-logo--lg::before {
104
+ width: 3.4375rem;
105
+ height: 1.25rem;
106
+ margin-bottom: 0.4166666667rem;
107
+ background-size: 3.4375rem 1.40625rem, 3.4375rem 1.25rem, 0;
108
+ background-position: 0 -0.078125rem, 0 0, 0 0;
109
+ }
110
+
111
+ :root[data-fr-mourning] .fr-logo--lg::before {
112
+ background-size: 3.4375rem 1.40625rem, 0, 3.4375rem 1.25rem;
113
+ }
114
+
115
+ .fr-logo--lg::after {
116
+ min-width: 3.28125rem;
117
+ background-size: 6.5625rem 4.6875rem;
118
+ background-position: 0 calc(100% + 2.34375rem);
119
+ padding-top: 2.7604166667rem;
120
+ }
121
+
122
+ [data-fr-theme=dark] .fr-logo--lg::after {
123
+ background-position: -3.28125rem 100%;
124
+ }
125
+
126
+ @media (min-width: 36em) {
127
+ /*! media sm */
128
+ }
129
+
130
+ @media (min-width: 48em) {
131
+ /*! media md */
132
+ }
133
+
134
+ @media (min-width: 62em) {
135
+ /*! media lg */
136
+ }
137
+
138
+ @media (min-width: 78em) {
139
+ /*! media xl */
140
+ }
141
+
142
+ @media (prefers-color-scheme: dark) and (forced-colors: active) {
143
+ .fr-logo::after {
144
+ background-position: -2.625rem 100%;
145
+ }
146
+
147
+ [data-fr-theme=dark] .fr-logo::after {
148
+ background-position: -2.625rem 100%;
149
+ }
150
+
151
+ .fr-logo--sm::after {
152
+ background-position: -1.96875rem 100%;
153
+ }
154
+
155
+ [data-fr-theme=dark] .fr-logo--sm::after {
156
+ background-position: -1.96875rem 100%;
157
+ }
158
+
159
+ .fr-logo--lg::after {
160
+ background-position: -3.28125rem 100%;
161
+ }
162
+
163
+ [data-fr-theme=dark] .fr-logo--lg::after {
164
+ background-position: -3.28125rem 100%;
165
+ }
166
+ }
167
+
168
+ @media (prefers-color-scheme: light) and (forced-colors: active) {
169
+ .fr-logo::after {
170
+ background-position: 0 calc(100% + 1.875rem);
171
+ }
172
+
173
+ [data-fr-theme=dark] .fr-logo::after {
174
+ background-position: 0 calc(100% + 1.875rem);
175
+ }
176
+
177
+ .fr-logo--sm::after {
178
+ background-position: 0 calc(100% + 1.40625rem);
179
+ }
180
+
181
+ [data-fr-theme=dark] .fr-logo--sm::after {
182
+ background-position: 0 calc(100% + 1.40625rem);
183
+ }
184
+
185
+ .fr-logo--lg::after {
186
+ background-position: 0 calc(100% + 2.34375rem);
187
+ }
188
+
189
+ [data-fr-theme=dark] .fr-logo--lg::after {
190
+ background-position: 0 calc(100% + 2.34375rem);
191
+ }
192
+ }
193
+
194
+ p {
195
+ font-size: 1rem;
196
+ line-height: 1.5rem;
197
+ margin: var(--text-spacing);
198
+ }
199
+
200
+ *,
201
+ *::before,
202
+ *::after {
203
+ box-sizing: inherit;
204
+ }
205
+
206
+ :root {
207
+ box-sizing: border-box;
208
+ }
209
+
210
+ :host {
211
+ display: inline-block;
212
+ text-rendering: optimizeLegibility;
213
+ -webkit-font-smoothing: antialiased;
214
+ -moz-osx-font-smoothing: grayscale;
215
+ -webkit-text-size-adjust: 100%;
216
+ font-size: 1rem;
217
+ line-height: 1.5rem;
218
+ background-color: var(--background-default-grey);
219
+ --idle: transparent;
220
+ --hover: var(--background-default-grey-hover);
221
+ --active: var(--background-default-grey-active);
222
+ color: var(--text-default-grey);
223
+ background-color: transparent;
224
+ }
225
+
226
+ .fr-logo {
227
+ box-sizing: border-box;
228
+ }</style>
@@ -0,0 +1,11 @@
1
+ import type { Size } from "../types";
2
+ type LogoSize = Extract<Size, "sm" | "md" | "lg">;
3
+ interface Props {
4
+ /** Titre du logo (nom de l'entité) */
5
+ title: string;
6
+ /** Taille du logo */
7
+ size?: LogoSize;
8
+ }
9
+ declare const DsfrLogo: import("svelte").Component<Props, {}, "">;
10
+ type DsfrLogo = ReturnType<typeof DsfrLogo>;
11
+ export default DsfrLogo;
@@ -0,0 +1,260 @@
1
+ <svelte:options
2
+ customElement={{
3
+ tag: "dsfr-messages-group",
4
+ props: {
5
+ id: { attribute: "id", type: "String" },
6
+ status: { attribute: "status", type: "String" },
7
+ errorMessage: { attribute: "error-message", type: "String" },
8
+ validMessage: { attribute: "valid-message", type: "String" },
9
+ infoMessage: { attribute: "info-message", type: "String" },
10
+ warningMessage: { attribute: "warning-message", type: "String" },
11
+ messages: { attribute: "messages", type: "Object" },
12
+ context: { attribute: "context", type: "String" },
13
+ },
14
+ }}
15
+ />
16
+
17
+ <script lang="ts">const { id, status = "default", errorMessage, validMessage, infoMessage, warningMessage, messages, context = "field" } = $props();
18
+ function toResolved(type, texts = []) {
19
+ return texts.map((text) => ({
20
+ type,
21
+ text
22
+ }));
23
+ }
24
+ const resolvedMessages = $derived.by(() => {
25
+ if (messages) {
26
+ return [
27
+ ...toResolved("error", messages.errors),
28
+ ...toResolved("valid", messages.valids),
29
+ ...toResolved("warning", messages.warnings),
30
+ ...toResolved("info", messages.infos)
31
+ ];
32
+ }
33
+ if (status === "default") return [];
34
+ const text = validMessage || errorMessage || infoMessage || warningMessage;
35
+ if (!text) return [];
36
+ return [{
37
+ type: status,
38
+ text
39
+ }];
40
+ });
41
+ const messageIds = $derived.by(() => {
42
+ const counts = {};
43
+ return resolvedMessages.map(({ type }) => {
44
+ const count = counts[type] ?? 0;
45
+ counts[type] = count + 1;
46
+ return `${id}-message-${type}${count > 0 ? `-${count}` : ""}`;
47
+ });
48
+ });
49
+ export {};
50
+ </script>
51
+
52
+ {#if resolvedMessages.length > 0}
53
+ <div
54
+ class="fr-messages-group"
55
+ class:fr-messages-group--field={context === "field"}
56
+ class:fr-messages-group--fieldset={context === "fieldset"}
57
+ id={`${id}-messages`}
58
+ aria-live="polite"
59
+ >
60
+ {#each resolvedMessages as message, i (i)}
61
+ <p class={["fr-message", `fr-message--${message.type}`]} id={messageIds[i]}>
62
+ {message.text}
63
+ </p>
64
+ {/each}
65
+ </div>
66
+ {/if}
67
+
68
+ <style>p {
69
+ font-size: 1rem;
70
+ line-height: 1.5rem;
71
+ margin: var(--text-spacing);
72
+ }
73
+
74
+ .fr-message {
75
+ --comma: ", ";
76
+ --content: var(--comma);
77
+ display: flex;
78
+ flex-direction: row;
79
+ align-items: flex-start;
80
+ font-size: 0.75rem;
81
+ line-height: 1.25rem;
82
+ margin: 0 0 0.25rem 0;
83
+ }
84
+ .fr-message::after {
85
+ content: var(--content);
86
+ position: absolute;
87
+ width: 1px;
88
+ height: 1px;
89
+ padding: 0;
90
+ margin: -1px;
91
+ overflow: hidden;
92
+ clip: rect(0, 0, 0, 0);
93
+ white-space: nowrap; /* added line */
94
+ border: 0;
95
+ display: block;
96
+ }
97
+ .fr-message:last-child {
98
+ --comma: ". ";
99
+ margin-bottom: 0;
100
+ }
101
+ .fr-message--error::before, .fr-message--valid::before, .fr-message--warning::before, .fr-message--info::before {
102
+ flex: 0 0 auto;
103
+ display: inline-block;
104
+ vertical-align: calc((0.75em - var(--icon-size)) * 0.5);
105
+ background-color: currentColor;
106
+ width: var(--icon-size);
107
+ height: var(--icon-size);
108
+ -webkit-mask-size: 100% 100%;
109
+ mask-size: 100% 100%;
110
+ }
111
+ .fr-message--error::before, .fr-message--valid::before, .fr-message--warning::before, .fr-message--info::before {
112
+ --icon-size: 1rem;
113
+ }
114
+ .fr-message--error::before, .fr-message--valid::before, .fr-message--warning::before, .fr-message--info::before {
115
+ content: "";
116
+ display: inline-block;
117
+ margin-right: 0.25rem;
118
+ margin-top: 0.125rem;
119
+ }
120
+ @media (-ms-high-contrast: active), (forced-colors: active) {
121
+ .fr-message--error::before, .fr-message--error::after, .fr-message--valid::before, .fr-message--valid::after, .fr-message--warning::before, .fr-message--warning::after, .fr-message--info::before, .fr-message--info::after {
122
+ forced-color-adjust: none;
123
+ background-color: canvasText;
124
+ }
125
+ }
126
+ .fr-message--error::before {
127
+ -webkit-mask-image: url("https://lab-anssi-ui-kit-prod-s3-assets.cellar-c2.services.clever-cloud.com/icones/dsfr/system/fr--error-fill.svg");
128
+ mask-image: url("https://lab-anssi-ui-kit-prod-s3-assets.cellar-c2.services.clever-cloud.com/icones/dsfr/system/fr--error-fill.svg");
129
+ }
130
+ .fr-message--valid::before {
131
+ -webkit-mask-image: url("https://lab-anssi-ui-kit-prod-s3-assets.cellar-c2.services.clever-cloud.com/icones/dsfr/system/fr--success-fill.svg");
132
+ mask-image: url("https://lab-anssi-ui-kit-prod-s3-assets.cellar-c2.services.clever-cloud.com/icones/dsfr/system/fr--success-fill.svg");
133
+ }
134
+ .fr-message--info::before {
135
+ -webkit-mask-image: url("https://lab-anssi-ui-kit-prod-s3-assets.cellar-c2.services.clever-cloud.com/icones/dsfr/system/fr--info-fill.svg");
136
+ mask-image: url("https://lab-anssi-ui-kit-prod-s3-assets.cellar-c2.services.clever-cloud.com/icones/dsfr/system/fr--info-fill.svg");
137
+ }
138
+ .fr-message--warning::before {
139
+ -webkit-mask-image: url("https://lab-anssi-ui-kit-prod-s3-assets.cellar-c2.services.clever-cloud.com/icones/dsfr/system/fr--warning-fill.svg");
140
+ mask-image: url("https://lab-anssi-ui-kit-prod-s3-assets.cellar-c2.services.clever-cloud.com/icones/dsfr/system/fr--warning-fill.svg");
141
+ }
142
+
143
+ .fr-select-group--valid label, .fr-input-group--valid label, .fr-range-group--valid label, .fr-upload-group--valid label {
144
+ color: var(--text-default-success);
145
+ }
146
+ .fr-select-group--error label, .fr-input-group--error label, .fr-range-group--error label, .fr-upload-group--error label {
147
+ color: var(--text-default-error);
148
+ }
149
+ .fr-select-group--info label, .fr-input-group--info label, .fr-range-group--info label, .fr-upload-group--info label {
150
+ color: var(--text-default-info);
151
+ }
152
+ .fr-select-group--disabled label,
153
+ .fr-select-group--disabled .fr-hint-text, .fr-input-group--disabled label,
154
+ .fr-input-group--disabled .fr-hint-text, .fr-range-group--disabled label,
155
+ .fr-range-group--disabled .fr-hint-text, .fr-upload-group--disabled label,
156
+ .fr-upload-group--disabled .fr-hint-text {
157
+ color: var(--text-disabled-grey);
158
+ }
159
+
160
+ .fr-label {
161
+ color: var(--text-label-grey);
162
+ }
163
+ .fr-label--error {
164
+ color: var(--text-default-error);
165
+ }
166
+ .fr-label--success {
167
+ color: var(--text-default-success);
168
+ }
169
+ .fr-label--info {
170
+ color: var(--text-default-info);
171
+ }
172
+ .fr-label--disabled, .fr-label--disabled .fr-hint-text {
173
+ color: var(--text-disabled-grey);
174
+ }
175
+
176
+ .fr-hint-text,
177
+ .fr-message {
178
+ color: var(--text-mention-grey);
179
+ }
180
+
181
+ .fr-message--error {
182
+ color: var(--text-default-error);
183
+ }
184
+ .fr-message--valid {
185
+ color: var(--text-default-success);
186
+ }
187
+ .fr-message--info {
188
+ color: var(--text-default-info);
189
+ }
190
+ .fr-message--warning {
191
+ color: var(--text-default-warning);
192
+ }
193
+
194
+ .fr-fieldset:disabled .fr-label,
195
+ .fr-fieldset:disabled .fr-hint-text,
196
+ .fr-fieldset:disabled .fr-fieldset__legend {
197
+ color: var(--text-disabled-grey);
198
+ }
199
+
200
+ .fr-fieldset input:disabled + label,
201
+ .fr-fieldset input:disabled + label .fr-hint-text,
202
+ .fr-fieldset input:disabled + label + .fr-hint-text {
203
+ color: var(--text-disabled-grey);
204
+ }
205
+
206
+ .fr-fieldset__legend {
207
+ color: var(--text-label-grey);
208
+ }
209
+ .fr-fieldset--error, .fr-fieldset--error .fr-fieldset__legend {
210
+ background-image: linear-gradient(0deg, var(--border-plain-error), var(--border-plain-error));
211
+ }
212
+ .fr-fieldset--error .fr-fieldset__legend, .fr-fieldset--error .fr-label {
213
+ color: var(--text-default-error);
214
+ }
215
+ .fr-fieldset--valid, .fr-fieldset--valid .fr-fieldset__legend {
216
+ background-image: linear-gradient(0deg, var(--border-plain-success), var(--border-plain-success));
217
+ }
218
+ .fr-fieldset--valid .fr-fieldset__legend, .fr-fieldset--valid .fr-label {
219
+ color: var(--text-default-success);
220
+ }
221
+ .fr-fieldset--info, .fr-fieldset--info .fr-fieldset__legend {
222
+ background-image: linear-gradient(0deg, var(--border-plain-info), var(--border-plain-info));
223
+ }
224
+ .fr-fieldset--info .fr-fieldset__legend, .fr-fieldset--info .fr-label {
225
+ color: var(--text-default-info);
226
+ }
227
+
228
+ :host {
229
+ display: block;
230
+ text-rendering: optimizeLegibility;
231
+ -webkit-font-smoothing: antialiased;
232
+ -moz-osx-font-smoothing: grayscale;
233
+ -webkit-text-size-adjust: 100%;
234
+ font-size: 1rem;
235
+ line-height: 1.5rem;
236
+ background-color: var(--background-default-grey);
237
+ --idle: transparent;
238
+ --hover: var(--background-default-grey-hover);
239
+ --active: var(--background-default-grey-active);
240
+ color: var(--text-default-grey);
241
+ background-color: transparent;
242
+ }
243
+
244
+ .fr-messages-group {
245
+ box-sizing: border-box;
246
+ }
247
+ .fr-messages-group--field .fr-message:first-child {
248
+ margin-top: 1rem;
249
+ }
250
+ .fr-messages-group--fieldset {
251
+ flex: 1 1 100%;
252
+ padding-left: 0.5rem;
253
+ padding-right: 0.5rem;
254
+ }
255
+ .fr-messages-group--fieldset .fr-message:first-child {
256
+ margin-top: 0;
257
+ }
258
+ .fr-messages-group--fieldset .fr-message:last-child {
259
+ margin-bottom: 1rem;
260
+ }</style>
@@ -0,0 +1,46 @@
1
+ /**
2
+ * Structure de messages contrainte :
3
+ * - `errors` et `valids` sont mutuellement exclusifs (union discriminée)
4
+ * - `infos` et `warnings` peuvent coexister avec n'importe quel statut
5
+ */
6
+ export type MessagesGroup = {
7
+ errors: string[];
8
+ valids?: never;
9
+ infos?: string[];
10
+ warnings?: string[];
11
+ } | {
12
+ valids: string[];
13
+ errors?: never;
14
+ infos?: string[];
15
+ warnings?: string[];
16
+ } | {
17
+ errors?: never;
18
+ valids?: never;
19
+ infos?: string[];
20
+ warnings?: string[];
21
+ };
22
+ interface Props {
23
+ /** Attribut id du champ parent, utilisé pour générer les IDs des messages */
24
+ id: string;
25
+ /** Statut du message (API simplifiée) */
26
+ status?: "default" | "valid" | "error" | "info" | "warning";
27
+ /** Texte du message d'erreur (API simplifiée) */
28
+ errorMessage?: string;
29
+ /** Texte du message de succès (API simplifiée) */
30
+ validMessage?: string;
31
+ /** Texte du message d'information (API simplifiée) */
32
+ infoMessage?: string;
33
+ /** Texte du message d'avertissement (API simplifiée) */
34
+ warningMessage?: string;
35
+ /** API avancée : messages structurés (erreurs et succès sont mutuellement exclusifs) */
36
+ messages?: MessagesGroup;
37
+ /**
38
+ * Contexte d'affichage du composant.
39
+ * - "field" (défaut) : le premier message reçoit une marge supérieure (input, select, checkbox, toggle…)
40
+ * - "fieldset" : le groupe reçoit un layout flex avec padding, et le dernier message une marge inférieure
41
+ */
42
+ context?: "field" | "fieldset";
43
+ }
44
+ declare const DsfrMessagesGroup: import("svelte").Component<Props, {}, "">;
45
+ type DsfrMessagesGroup = ReturnType<typeof DsfrMessagesGroup>;
46
+ export default DsfrMessagesGroup;