@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,1329 @@
1
+ <svelte:options
2
+ customElement={{
3
+ tag: "dsfr-range",
4
+ props: {
5
+ id: { attribute: "id", type: "String" },
6
+ label: { attribute: "label", type: "String" },
7
+ hideLabel: { attribute: "hide-label", type: "Boolean" },
8
+ name: { attribute: "name", type: "String" },
9
+ hint: { attribute: "hint", type: "String" },
10
+ size: { attribute: "size", type: "String" },
11
+ min: { attribute: "min", type: "Number" },
12
+ max: { attribute: "max", type: "Number" },
13
+ value: { attribute: "value", type: "Number", reflect: true },
14
+ step: { attribute: "step", type: "Number" },
15
+ prefix: { attribute: "prefix", type: "String" },
16
+ suffix: { attribute: "suffix", type: "String" },
17
+ disabled: { attribute: "disabled", type: "Boolean" },
18
+ isDouble: { attribute: "is-double", type: "Boolean" },
19
+ value2: { attribute: "value2", type: "Number", reflect: true },
20
+ minValueLabel: { attribute: "min-value-label", type: "String" },
21
+ maxValueLabel: { attribute: "max-value-label", type: "String" },
22
+ isStep: { attribute: "is-step", type: "Boolean" },
23
+ indicators: { attribute: "indicators", type: "Boolean" },
24
+ status: { attribute: "status", type: "String" },
25
+ errorMessage: { attribute: "error-message", type: "String" },
26
+ hideOutputLabel: { attribute: "hide-output-label", type: "Boolean" },
27
+ labelSize: { attribute: "label-size", type: "String" },
28
+ labelWeight: { attribute: "label-weight", type: "String" },
29
+ },
30
+ }}
31
+ />
32
+
33
+ <script lang="ts">import { untrack } from "svelte";
34
+ import { setThemeable } from "../utilitaires";
35
+ import DsfrLabel from "./DsfrLabel.svelte";
36
+ setThemeable($host());
37
+ let { id, label, hideLabel = false, name, hint, size = "md", min, max, value = $bindable(), step = 1, prefix, suffix, disabled = false, isDouble = false, value2 = $bindable(), minValueLabel, maxValueLabel, isStep = false, indicators = true, status = "default", errorMessage: _errorMessage, hideOutputLabel = false, onvaluechanged, onvalue2changed, labelSize, labelWeight } = $props();
38
+ const decorate = (val) => `${prefix ?? ""}${val}${suffix ?? ""}`;
39
+ // Diamètres du thumb selon le DSFR source : 24px (md) / 16px (sm)
40
+ const THUMB_MD = 24;
41
+ const THUMB_SM = 16;
42
+ let rangeEl = $state();
43
+ let rangeWidth = $state(0);
44
+ // Observe la largeur du conteneur pour recalculer les positions
45
+ $effect(() => {
46
+ if (!rangeEl) return;
47
+ const observer = new ResizeObserver(() => {
48
+ rangeWidth = rangeEl.getBoundingClientRect().width;
49
+ });
50
+ observer.observe(rangeEl);
51
+ return () => observer.disconnect();
52
+ });
53
+ const isLabelEmpty = $derived(label === "");
54
+ // Espace total réservé aux thumbs aux extrémités du rail (1 thumb en simple, 2 en double)
55
+ const thumbDiameter = $derived(size === "sm" ? THUMB_SM : THUMB_MD);
56
+ // Largeur du rail disponible pour le déplacement des thumbs
57
+ const thumbsReservedWidth = $derived(isDouble ? thumbDiameter * 2 : thumbDiameter);
58
+ // Amplitude totale des valeurs possibles (max - min)
59
+ const usableRailWidth = $derived(rangeWidth - thumbsReservedWidth);
60
+ // Position du 1er curseur sur le rail
61
+ const valueRange = $derived(max - min);
62
+ // Position du 2e curseur sur le rail (mode double uniquement)
63
+ const valueRatio = $derived(valueRange > 0 ? (value - min) / valueRange : 0);
64
+ const value2Ratio = $derived(valueRange > 0 ? (value2 - min) / valueRange : 0);
65
+ // Texte de la bulle (décoration prefix/suffix, "val1 - val2" en double)
66
+ const outputText = $derived(isDouble ? `${decorate(value)} - ${decorate(value2)}` : decorate(value));
67
+ // Transform CSS de la bulle : centrée sur le thumb courant (ou la moyenne en double)
68
+ const outputTransform = $derived.by(() => {
69
+ const r = isDouble ? (valueRatio + value2Ratio) / 2 : valueRatio;
70
+ return `translateX(${(r * rangeWidth).toFixed(2)}px) translateX(-${(r * 100).toFixed(2)}%)`;
71
+ });
72
+ // --progress-right : bord droit de la barre colorée
73
+ // --progress-left : bord gauche en mode double uniquement
74
+ const progressRight = $derived(`${(usableRailWidth * (isDouble ? value2Ratio : valueRatio) + thumbsReservedWidth * (isDouble ? .75 : .5)).toFixed(2)}px`);
75
+ const progressLeft = $derived(isDouble ? `${(usableRailWidth * valueRatio + thumbsReservedWidth * .25).toFixed(2)}px` : undefined);
76
+ // --step-width : espacement visuel des crans (mode step uniquement)
77
+ const stepWidth = $derived.by(() => {
78
+ if (!isStep || valueRange === 0) return undefined;
79
+ const steps = valueRange / step;
80
+ let sw = usableRailWidth / steps;
81
+ if (sw < 1 || !isFinite(sw)) sw = 4;
82
+ while (sw < 4) sw *= 2;
83
+ return `${sw.toFixed(3)}px`;
84
+ });
85
+ // En mode double (value doit toujours être ≤ value2)
86
+ // Quand input1 dépasse input2, on pousse input2 vers la droite
87
+ function handleInput1(e) {
88
+ const newVal = parseFloat(e.target.value);
89
+ value = newVal;
90
+ onvaluechanged?.(newVal);
91
+ $host()?.dispatchEvent(new CustomEvent("valuechanged", {
92
+ detail: newVal,
93
+ bubbles: true
94
+ }));
95
+ if (isDouble && value2 < newVal) {
96
+ untrack(() => value2 = newVal);
97
+ onvalue2changed?.(newVal);
98
+ $host()?.dispatchEvent(new CustomEvent("value2changed", {
99
+ detail: newVal,
100
+ bubbles: true
101
+ }));
102
+ }
103
+ }
104
+ // Quand input2 passe sous input1, on ramène input1 vers la gauche
105
+ function handleInput2(e) {
106
+ const newVal = parseFloat(e.target.value);
107
+ value2 = newVal;
108
+ onvalue2changed?.(newVal);
109
+ $host()?.dispatchEvent(new CustomEvent("value2changed", {
110
+ detail: newVal,
111
+ bubbles: true
112
+ }));
113
+ if (isDouble && value > newVal) {
114
+ untrack(() => value = newVal);
115
+ onvaluechanged?.(newVal);
116
+ $host()?.dispatchEvent(new CustomEvent("valuechanged", {
117
+ detail: newVal,
118
+ bubbles: true
119
+ }));
120
+ }
121
+ }
122
+ </script>
123
+
124
+ <div
125
+ class={[
126
+ "fr-range-group",
127
+ disabled && "fr-range-group--disabled",
128
+ status === "error" && "fr-range-group--error",
129
+ ]}
130
+ id="{id}-group"
131
+ >
132
+ <DsfrLabel
133
+ for={id}
134
+ {label}
135
+ {hint}
136
+ id="{id}-label"
137
+ {status}
138
+ {disabled}
139
+ hidden={hideLabel || isLabelEmpty}
140
+ {labelSize}
141
+ {labelWeight}
142
+ />
143
+
144
+ <div
145
+ bind:this={rangeEl}
146
+ class={[
147
+ "fr-range",
148
+ size === "sm" && "fr-range--sm",
149
+ isDouble && "fr-range--double",
150
+ isStep && "fr-range--step",
151
+ ]}
152
+ data-fr-prefix={prefix}
153
+ data-fr-suffix={suffix}
154
+ data-fr-js-range="true"
155
+ style:--progress-left={progressLeft}
156
+ style:--progress-right={progressRight}
157
+ style:--step-width={stepWidth}
158
+ >
159
+ <span
160
+ class="fr-range__output"
161
+ class:fr-range__output--hide={hideOutputLabel}
162
+ style:transform={outputTransform}
163
+ >
164
+ {outputText}
165
+ </span>
166
+
167
+ <input
168
+ {id}
169
+ {name}
170
+ type="range"
171
+ aria-labelledby={isDouble ? `${id} ${id}-label` : `${id}-label`}
172
+ aria-label={isDouble ? minValueLabel : undefined}
173
+ {min}
174
+ {max}
175
+ {value}
176
+ oninput={handleInput1}
177
+ {step}
178
+ {disabled}
179
+ aria-describedby="{id}-messages"
180
+ />
181
+
182
+ {#if isDouble}
183
+ <input
184
+ id="{id}-2"
185
+ name={name ? `${name}-2` : undefined}
186
+ type="range"
187
+ aria-labelledby="{id}-2 {id}-label"
188
+ aria-label={maxValueLabel}
189
+ {min}
190
+ {max}
191
+ value={value2}
192
+ oninput={handleInput2}
193
+ {step}
194
+ {disabled}
195
+ aria-describedby="{id}-messages"
196
+ />
197
+ {/if}
198
+
199
+ {#if indicators}
200
+ <span class="fr-range__min" aria-hidden="true">{decorate(min)}</span>
201
+ <span class="fr-range__max" aria-hidden="true">{decorate(max)}</span>
202
+ {/if}
203
+ </div>
204
+
205
+ <slot name="messagesgroup"></slot>
206
+ </div>
207
+
208
+ <style>@charset "UTF-8"; /*!
209
+ * DSFR v1.14.4 | SPDX-License-Identifier: MIT | License-Filename: LICENSE.md | restricted use (see terms and conditions)
210
+ */ /* ¯¯¯¯¯¯¯¯¯ *\
211
+ FORM
212
+ \* ˍˍˍˍˍˍˍˍˍ */
213
+ .fr-label {
214
+ display: block;
215
+ font-size: 1rem;
216
+ line-height: 1.5rem;
217
+ color: var(--text-label-grey);
218
+ }
219
+
220
+ .fr-label + .fr-input,
221
+ .fr-label + .fr-input-wrap,
222
+ .fr-label + .fr-select {
223
+ margin-top: 0.5rem;
224
+ }
225
+
226
+ .fr-hint-text {
227
+ display: block;
228
+ font-size: 0.75rem;
229
+ line-height: 1.25rem;
230
+
231
+ --text-spacing: 0 0 1rem;
232
+ }
233
+
234
+ .fr-hint-text + .fr-hint-text {
235
+ margin-top: 0.25rem;
236
+ }
237
+
238
+ .fr-fieldset {
239
+ position: relative;
240
+ margin: 0 -0.75rem 1rem;
241
+ padding: 0 0.25rem;
242
+ display: flex;
243
+ flex-direction: row;
244
+ align-items: last baseline;
245
+ flex-wrap: wrap;
246
+ border: 0;
247
+ }
248
+
249
+ .fr-fieldset__legend {
250
+ padding-bottom: 1rem;
251
+ padding-left: 0.75rem;
252
+ padding-right: 0.75rem;
253
+ margin-left: -0.25rem;
254
+ margin-right: -0.25rem;
255
+ font-size: 1rem;
256
+ line-height: 1.5rem;
257
+ font-weight: 700;
258
+ width: 100%;
259
+ color: var(--text-label-grey);
260
+ }
261
+
262
+ .fr-fieldset__legend--regular {
263
+ font-weight: 400;
264
+ }
265
+
266
+ .fr-fieldset__legend .fr-hint-text {
267
+ margin-top: 0.5rem;
268
+ font-weight: 400;
269
+ }
270
+
271
+ .fr-fieldset--valid,
272
+ .fr-fieldset--error,
273
+ .fr-fieldset--info {
274
+ background-repeat: no-repeat;
275
+ background-position: 0 -2.25rem;
276
+ background-size: 2px calc(100% + 1.25rem);
277
+ }
278
+
279
+ .fr-fieldset--valid .fr-fieldset__legend,
280
+ .fr-fieldset--error .fr-fieldset__legend,
281
+ .fr-fieldset--info .fr-fieldset__legend {
282
+ background-repeat: no-repeat;
283
+ background-position: 0 0;
284
+ background-size: 2px 100%;
285
+ }
286
+
287
+ .fr-fieldset__element {
288
+ flex: 1 1 100%;
289
+ max-width: 100%;
290
+ padding-left: 0.5rem;
291
+ padding-right: 0.5rem;
292
+ margin-bottom: 1rem;
293
+ }
294
+
295
+ .fr-fieldset__element--inline {
296
+ flex: 0 0 auto;
297
+ }
298
+
299
+ .fr-fieldset__element--inline-grow,
300
+ .fr-fieldset__element--inline\@md.fr-fieldset__element--inline-grow {
301
+ flex-grow: 1;
302
+ }
303
+
304
+ .fr-fieldset__element.fr-fieldset__element--year {
305
+ flex: 0 0 8rem;
306
+ }
307
+
308
+ .fr-fieldset__element--year:not(.fr-fieldset__element--inline) {
309
+ margin-right: calc(100% - 8rem);
310
+ }
311
+
312
+ .fr-fieldset__element.fr-fieldset__element--postal {
313
+ flex: 0 0 16rem;
314
+ }
315
+
316
+ .fr-fieldset__element--postal:not(.fr-fieldset__element--inline) {
317
+ margin-right: calc(100% - 16rem);
318
+ }
319
+
320
+ .fr-fieldset__element.fr-fieldset__element--number {
321
+ flex: 0 0 6rem;
322
+ }
323
+
324
+ .fr-fieldset__element--number:not(.fr-fieldset__element--inline) {
325
+ margin-right: calc(100% - 6rem);
326
+ }
327
+
328
+ .fr-fieldset__legend > h1:last-child::after,
329
+ .fr-fieldset__legend > h2:last-child::after,
330
+ .fr-fieldset__legend > h3:last-child::after,
331
+ .fr-fieldset__legend > h4:last-child::after,
332
+ .fr-fieldset__legend > h5:last-child::after,
333
+ .fr-fieldset__legend > h6:last-child::after,
334
+ .fr-fieldset__legend > p:last-child::after,
335
+ .fr-fieldset__legend > .fr-fieldset:last-child::after,
336
+ .fr-fieldset__element > h1:last-child::after,
337
+ .fr-fieldset__element > h2:last-child::after,
338
+ .fr-fieldset__element > h3:last-child::after,
339
+ .fr-fieldset__element > h4:last-child::after,
340
+ .fr-fieldset__element > h5:last-child::after,
341
+ .fr-fieldset__element > h6:last-child::after,
342
+ .fr-fieldset__element > p:last-child::after,
343
+ .fr-fieldset__element > .fr-fieldset:last-child::after {
344
+ content: "";
345
+ display: block;
346
+ margin-bottom: -1rem;
347
+ }
348
+
349
+ .fr-fieldset > .fr-messages-group {
350
+ flex: 1 1 100%;
351
+ padding-left: 0.5rem;
352
+ padding-right: 0.5rem;
353
+ }
354
+
355
+ .fr-fieldset > .fr-messages-group > .fr-message:last-child {
356
+ margin-bottom: 1rem;
357
+ }
358
+
359
+ .fr-message {
360
+ --comma: ", ";
361
+ --content: var(--comma);
362
+ display: flex;
363
+ flex-direction: row;
364
+ align-items: flex-start;
365
+ font-size: 0.75rem;
366
+ line-height: 1.25rem;
367
+ margin: 0 0 0.25rem 0;
368
+ }
369
+
370
+ .fr-message::after {
371
+ content: var(--content);
372
+ position: absolute;
373
+ width: 1px;
374
+ height: 1px;
375
+ padding: 0;
376
+ margin: -1px;
377
+ overflow: hidden;
378
+ clip: rect(0, 0, 0, 0);
379
+ white-space: nowrap; /* added line */
380
+ border: 0;
381
+ display: block;
382
+ }
383
+
384
+ .fr-message:last-child {
385
+ --comma: ". ";
386
+ margin-bottom: 0;
387
+ }
388
+
389
+ .fr-message--error::before,
390
+ .fr-message--valid::before,
391
+ .fr-message--warning::before,
392
+ .fr-message--info::before {
393
+ flex: 0 0 auto;
394
+ vertical-align: calc((0.75em - var(--icon-size)) * 0.5);
395
+ background-color: currentColor;
396
+ width: var(--icon-size);
397
+ height: var(--icon-size);
398
+ -webkit-mask-size: 100% 100%;
399
+ mask-size: 100% 100%;
400
+ --icon-size: 1rem;
401
+ content: "";
402
+ display: inline-block;
403
+ margin-right: 0.25rem;
404
+ margin-top: 0.125rem;
405
+ }
406
+
407
+ .fr-message--error::before {
408
+ -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");
409
+ mask-image: url("https://lab-anssi-ui-kit-prod-s3-assets.cellar-c2.services.clever-cloud.com/icones/dsfr/system/fr--error-fill.svg");
410
+ }
411
+
412
+ .fr-message--valid::before {
413
+ -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");
414
+ mask-image: url("https://lab-anssi-ui-kit-prod-s3-assets.cellar-c2.services.clever-cloud.com/icones/dsfr/system/fr--success-fill.svg");
415
+ }
416
+
417
+ .fr-message--info::before {
418
+ -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");
419
+ mask-image: url("https://lab-anssi-ui-kit-prod-s3-assets.cellar-c2.services.clever-cloud.com/icones/dsfr/system/fr--info-fill.svg");
420
+ }
421
+
422
+ .fr-message--warning::before {
423
+ -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");
424
+ mask-image: url("https://lab-anssi-ui-kit-prod-s3-assets.cellar-c2.services.clever-cloud.com/icones/dsfr/system/fr--warning-fill.svg");
425
+ }
426
+
427
+ .fr-select-group--valid label,
428
+ .fr-input-group--valid label,
429
+ .fr-range-group--valid label,
430
+ .fr-upload-group--valid label {
431
+ color: var(--text-default-success);
432
+ }
433
+
434
+ .fr-select-group--error label,
435
+ .fr-input-group--error label,
436
+ .fr-range-group--error label,
437
+ .fr-upload-group--error label {
438
+ color: var(--text-default-error);
439
+ }
440
+
441
+ .fr-select-group--info label,
442
+ .fr-input-group--info label,
443
+ .fr-range-group--info label,
444
+ .fr-upload-group--info label {
445
+ color: var(--text-default-info);
446
+ }
447
+
448
+ .fr-select-group--disabled label,
449
+ .fr-select-group--disabled .fr-hint-text,
450
+ .fr-input-group--disabled label,
451
+ .fr-input-group--disabled .fr-hint-text,
452
+ .fr-range-group--disabled label,
453
+ .fr-range-group--disabled .fr-hint-text,
454
+ .fr-upload-group--disabled label,
455
+ .fr-upload-group--disabled .fr-hint-text {
456
+ color: var(--text-disabled-grey);
457
+ }
458
+
459
+ .fr-label--error {
460
+ color: var(--text-default-error);
461
+ }
462
+
463
+ .fr-label--success {
464
+ color: var(--text-default-success);
465
+ }
466
+
467
+ .fr-label--info {
468
+ color: var(--text-default-info);
469
+ }
470
+
471
+ .fr-label--disabled,
472
+ .fr-label--disabled .fr-hint-text {
473
+ color: var(--text-disabled-grey);
474
+ }
475
+
476
+ .fr-hint-text,
477
+ .fr-message {
478
+ color: var(--text-mention-grey);
479
+ }
480
+
481
+ .fr-message--error {
482
+ color: var(--text-default-error);
483
+ }
484
+
485
+ .fr-message--valid {
486
+ color: var(--text-default-success);
487
+ }
488
+
489
+ .fr-message--info {
490
+ color: var(--text-default-info);
491
+ }
492
+
493
+ .fr-message--warning {
494
+ color: var(--text-default-warning);
495
+ }
496
+
497
+ .fr-fieldset:disabled .fr-label,
498
+ .fr-fieldset:disabled .fr-hint-text,
499
+ .fr-fieldset:disabled .fr-fieldset__legend {
500
+ color: var(--text-disabled-grey);
501
+ }
502
+
503
+ .fr-fieldset input:disabled + label,
504
+ .fr-fieldset input:disabled + label .fr-hint-text,
505
+ .fr-fieldset input:disabled + label + .fr-hint-text {
506
+ color: var(--text-disabled-grey);
507
+ }
508
+
509
+ .fr-fieldset--error,
510
+ .fr-fieldset--error .fr-fieldset__legend {
511
+ background-image: linear-gradient(0deg, var(--border-plain-error), var(--border-plain-error));
512
+ }
513
+
514
+ .fr-fieldset--error .fr-fieldset__legend,
515
+ .fr-fieldset--error .fr-label {
516
+ color: var(--text-default-error);
517
+ }
518
+
519
+ .fr-fieldset--valid,
520
+ .fr-fieldset--valid .fr-fieldset__legend {
521
+ background-image: linear-gradient(0deg, var(--border-plain-success), var(--border-plain-success));
522
+ }
523
+
524
+ .fr-fieldset--valid .fr-fieldset__legend,
525
+ .fr-fieldset--valid .fr-label {
526
+ color: var(--text-default-success);
527
+ }
528
+
529
+ .fr-fieldset--info,
530
+ .fr-fieldset--info .fr-fieldset__legend {
531
+ background-image: linear-gradient(0deg, var(--border-plain-info), var(--border-plain-info));
532
+ }
533
+
534
+ .fr-fieldset--info .fr-fieldset__legend,
535
+ .fr-fieldset--info .fr-label {
536
+ color: var(--text-default-info);
537
+ }
538
+
539
+ .fr-select-group:not(:last-child),
540
+ .fr-input-group:not(:last-child) {
541
+ margin-bottom: 1.5rem;
542
+ }
543
+
544
+ .fr-select-group .fr-label .fr-hint-text,
545
+ .fr-input-group .fr-label .fr-hint-text {
546
+ margin-top: 0.25rem;
547
+ }
548
+
549
+ .fr-fieldset--inline .fr-fieldset__content {
550
+ display: flex;
551
+ align-items: baseline;
552
+ justify-content: flex-start;
553
+ flex-wrap: wrap;
554
+ margin: -0.75rem 0.5rem 0 0.5rem;
555
+ }
556
+
557
+ .fr-fieldset--inline .fr-checkbox-group {
558
+ display: inline-flex;
559
+ margin-bottom: 0;
560
+ }
561
+
562
+ .fr-fieldset--inline .fr-checkbox-group:first-child {
563
+ margin-top: 0;
564
+ }
565
+
566
+ .fr-fieldset--inline .fr-checkbox-group:not(:last-child) {
567
+ margin-right: 1.25rem;
568
+ }
569
+
570
+ .fr-fieldset--inline .fr-checkbox-group:last-child {
571
+ margin-bottom: 0;
572
+ }
573
+
574
+ .fr-fieldset--inline .fr-radio-group {
575
+ display: inline-flex;
576
+ }
577
+
578
+ .fr-fieldset--inline .fr-radio-group:not(:last-child) {
579
+ margin-right: 1.75rem;
580
+ }
581
+
582
+ .fr-fieldset--inline .fr-radio-group:first-child {
583
+ margin-top: 0;
584
+ }
585
+
586
+ .fr-fieldset--inline .fr-radio-group:last-child {
587
+ margin-bottom: 0;
588
+ }
589
+
590
+ .fr-fieldset__content {
591
+ position: relative;
592
+ margin: 0 0.5rem;
593
+ width: 100%;
594
+ }
595
+
596
+ .fr-fieldset__content .fr-radio-group:first-child,
597
+ .fr-fieldset__content .fr-checkbox-group:first-child {
598
+ margin-top: -0.75rem;
599
+ }
600
+
601
+ .fr-fieldset__content .fr-radio-group label,
602
+ .fr-fieldset__content .fr-checkbox-group label {
603
+ padding: 0.75rem 0;
604
+ }
605
+
606
+ .fr-fieldset__content .fr-radio-group:not(.fr-radio-rich) input[type=radio] + label::before,
607
+ .fr-fieldset__content .fr-checkbox-group input[type=checkbox] + label::before {
608
+ top: 0.75rem;
609
+ }
610
+
611
+ .fr-fieldset__content + .fr-error-text,
612
+ .fr-fieldset__content + .fr-valid-text,
613
+ .fr-fieldset__content + .fr-info-text {
614
+ margin-top: 0;
615
+ margin-left: 0.5rem;
616
+ margin-bottom: 1rem;
617
+ }
618
+
619
+ .fr-error-text,
620
+ .fr-valid-text,
621
+ .fr-info-text {
622
+ display: flex;
623
+ flex-direction: row;
624
+ align-items: center;
625
+ font-size: 0.75rem;
626
+ line-height: 1.25rem;
627
+ margin-top: 1rem;
628
+ margin-bottom: 0;
629
+ }
630
+
631
+ .fr-error-text::before,
632
+ .fr-valid-text::before,
633
+ .fr-info-text::before {
634
+ flex: 0 0 auto;
635
+ vertical-align: calc((0.75em - var(--icon-size)) * 0.5);
636
+ background-color: currentColor;
637
+ width: var(--icon-size);
638
+ height: var(--icon-size);
639
+ -webkit-mask-size: 100% 100%;
640
+ mask-size: 100% 100%;
641
+ --icon-size: 1rem;
642
+ content: "";
643
+ display: inline-block;
644
+ margin-right: 0.25rem;
645
+ }
646
+
647
+ .fr-error-text + .fr-error-text,
648
+ .fr-error-text + .fr-valid-text,
649
+ .fr-error-text + .fr-info-text,
650
+ .fr-valid-text + .fr-error-text,
651
+ .fr-valid-text + .fr-valid-text,
652
+ .fr-valid-text + .fr-info-text,
653
+ .fr-info-text + .fr-error-text,
654
+ .fr-info-text + .fr-valid-text,
655
+ .fr-info-text + .fr-info-text {
656
+ margin-top: 0.25rem;
657
+ }
658
+
659
+ .fr-error-text::before {
660
+ -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");
661
+ mask-image: url("https://lab-anssi-ui-kit-prod-s3-assets.cellar-c2.services.clever-cloud.com/icones/dsfr/system/fr--error-fill.svg");
662
+ }
663
+
664
+ .fr-valid-text::before {
665
+ -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");
666
+ mask-image: url("https://lab-anssi-ui-kit-prod-s3-assets.cellar-c2.services.clever-cloud.com/icones/dsfr/system/fr--success-fill.svg");
667
+ }
668
+
669
+ .fr-info-text::before {
670
+ -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");
671
+ mask-image: url("https://lab-anssi-ui-kit-prod-s3-assets.cellar-c2.services.clever-cloud.com/icones/dsfr/system/fr--info-fill.svg");
672
+ }
673
+
674
+ .fr-error-text {
675
+ color: var(--text-default-error);
676
+ }
677
+
678
+ .fr-valid-text {
679
+ color: var(--text-default-success);
680
+ }
681
+
682
+ .fr-info-text {
683
+ color: var(--text-default-info);
684
+ }
685
+
686
+ .fr-fieldset--valid .fr-fieldset__content::before {
687
+ box-shadow: inset 2px 0 0 0 var(--border-plain-success);
688
+ }
689
+
690
+ .fr-fieldset--error .fr-fieldset__content::before {
691
+ box-shadow: inset 2px 0 0 0 var(--border-plain-error);
692
+ }
693
+
694
+ .fr-fieldset--info .fr-fieldset__content::before {
695
+ box-shadow: inset 2px 0 0 0 var(--border-plain-info);
696
+ }
697
+ @media (min-width: 36em) {
698
+ /*! media sm */
699
+ }
700
+ @media (min-width: 48em) {
701
+ /*! media md */
702
+ .fr-fieldset__element--inline\@md {
703
+ flex: 0 0 auto;
704
+ }
705
+
706
+ .fr-fieldset__element--year.fr-fieldset__element--inline\@md {
707
+ margin-right: 0;
708
+ }
709
+
710
+ .fr-fieldset__element--postal.fr-fieldset__element--inline\@md {
711
+ margin-right: 0;
712
+ }
713
+
714
+ .fr-fieldset__element--number.fr-fieldset__element--inline\@md {
715
+ margin-right: 0;
716
+ }
717
+ }
718
+ @media (min-width: 62em) {
719
+ /*! media lg */
720
+ }
721
+ @media (min-width: 78em) {
722
+ /*! media xl */
723
+ }
724
+ @media (-ms-high-contrast: active), (forced-colors: active) {
725
+ .fr-fieldset:disabled .fr-label,
726
+ .fr-fieldset:disabled .fr-hint-text,
727
+ .fr-fieldset:disabled .fr-fieldset__legend {
728
+ color: graytext;
729
+ }
730
+
731
+ .fr-fieldset input:disabled + label,
732
+ .fr-fieldset input:disabled + label .fr-hint-text,
733
+ .fr-fieldset input:disabled + label + .fr-hint-text {
734
+ color: graytext;
735
+ }
736
+
737
+ .fr-message--error::before,
738
+ .fr-message--error::after,
739
+ .fr-message--valid::before,
740
+ .fr-message--valid::after,
741
+ .fr-message--warning::before,
742
+ .fr-message--warning::after,
743
+ .fr-message--info::before,
744
+ .fr-message--info::after {
745
+ forced-color-adjust: none;
746
+ background-color: canvastext;
747
+ }
748
+
749
+ .fr-error-text::before,
750
+ .fr-valid-text::before,
751
+ .fr-info-text::before {
752
+ forced-color-adjust: none;
753
+ background-color: canvastext;
754
+ }
755
+ }
756
+ /*!
757
+ * DSFR v1.14.4 | SPDX-License-Identifier: MIT | License-Filename: LICENSE.md | restricted use (see terms and conditions)
758
+ */
759
+ /* ¯¯¯¯¯¯¯¯¯ *\
760
+ RANGE
761
+ \* ˍˍˍˍˍˍˍˍˍ */
762
+ .fr-range-group {
763
+ position: relative;
764
+ }
765
+
766
+ .fr-range-group--valid::before,
767
+ .fr-range-group--error::before {
768
+ content: "";
769
+ display: block;
770
+ pointer-events: none;
771
+ position: absolute;
772
+ top: 0;
773
+ right: -0.75rem;
774
+ bottom: 0;
775
+ left: -0.75rem;
776
+ background-repeat: no-repeat;
777
+ background-position: 0 0;
778
+ background-size: 0.125rem 100%;
779
+ }
780
+
781
+ .fr-range {
782
+ --thumb-size: 1.5rem;
783
+ position: relative;
784
+ display: flex;
785
+ flex-direction: row;
786
+ justify-content: space-between;
787
+ flex-wrap: wrap;
788
+ }
789
+
790
+ .fr-range input[type=range] {
791
+ outline: none;
792
+ width: 100%;
793
+ }
794
+
795
+ .fr-range__output {
796
+ visibility: hidden;
797
+ color: var(--text-active-blue-france);
798
+ }
799
+
800
+ .fr-range__output,
801
+ .fr-range__min,
802
+ .fr-range__max {
803
+ text-align: center;
804
+ min-width: var(--thumb-size);
805
+ font-size: 0.75rem;
806
+ line-height: 1.25rem;
807
+ }
808
+
809
+ .fr-range[data-fr-js-range] {
810
+ --progress-left: 0;
811
+ --progress-right: calc(var(--thumb-size) * 0.5);
812
+ }
813
+
814
+ .fr-range[data-fr-js-range]::before,
815
+ .fr-range[data-fr-js-range]::after {
816
+ content: "";
817
+ display: block;
818
+ position: absolute;
819
+ top: 1.625rem;
820
+ right: 0;
821
+ left: 0;
822
+ width: 100%;
823
+ height: 0.75rem;
824
+ border-radius: 0.375rem;
825
+ forced-color-adjust: none;
826
+ }
827
+
828
+ .fr-range[data-fr-js-range]::before {
829
+ outline-offset: -1px;
830
+ box-shadow: inset 0 0 0 1px var(--border-action-high-blue-france);
831
+ }
832
+
833
+ .fr-range[data-fr-js-range]::after {
834
+ clip-path: polygon(var(--progress-left) 0, var(--progress-right) 0, var(--progress-right) 100%, var(--progress-left) 100%);
835
+ background-color: var(--background-active-blue-france);
836
+
837
+ --idle: transparent;
838
+ --hover: var(--background-active-blue-france-hover);
839
+ --active: var(--background-active-blue-france-active);
840
+ }
841
+
842
+ .fr-range[data-fr-js-range] input[type=range] {
843
+ -webkit-appearance: none;
844
+ -moz-appearance: none;
845
+ appearance: none;
846
+ background-color: transparent;
847
+ width: 100%;
848
+ height: var(--thumb-size);
849
+ z-index: 1;
850
+ }
851
+
852
+ .fr-range[data-fr-js-range] input[type=range]:not(:only-of-type) {
853
+ pointer-events: none;
854
+ }
855
+
856
+ .fr-range[data-fr-js-range] input[type=range]::-webkit-slider-thumb {
857
+ -webkit-appearance: none;
858
+ -moz-appearance: none;
859
+ appearance: none;
860
+ width: var(--thumb-size);
861
+ height: var(--thumb-size);
862
+ border-radius: 50%;
863
+ border: none;
864
+ pointer-events: auto;
865
+ z-index: calc(var(--ground) + 500);
866
+ background-color: var(--background-raised-grey);
867
+ --hover: var(--background-raised-grey-hover);
868
+ --active: var(--background-raised-grey-active);
869
+ filter: drop-shadow(var(--raised-shadow));
870
+ background-color: var(--background-default-grey);
871
+
872
+ --idle: transparent;
873
+ --hover: var(--background-default-grey-hover);
874
+ --active: var(--background-default-grey-active);
875
+ border: 1px solid var(--border-action-high-blue-france);
876
+ }
877
+
878
+ .fr-range[data-fr-js-range] input[type=range]::-webkit-slider-thumb:active {
879
+ z-index: 2;
880
+ }
881
+
882
+ .fr-range[data-fr-js-range] input[type=range]::-moz-range-thumb {
883
+ -webkit-appearance: none;
884
+ -moz-appearance: none;
885
+ appearance: none;
886
+ width: var(--thumb-size);
887
+ height: var(--thumb-size);
888
+ border-radius: 50%;
889
+ border: none;
890
+ pointer-events: auto;
891
+ z-index: calc(var(--ground) + 500);
892
+ background-color: var(--background-raised-grey);
893
+ --hover: var(--background-raised-grey-hover);
894
+ --active: var(--background-raised-grey-active);
895
+ filter: drop-shadow(var(--raised-shadow));
896
+ background-color: var(--background-default-grey);
897
+
898
+ --idle: transparent;
899
+ --hover: var(--background-default-grey-hover);
900
+ --active: var(--background-default-grey-active);
901
+ border: 1px solid var(--border-action-high-blue-france);
902
+ }
903
+
904
+ .fr-range[data-fr-js-range] input[type=range]::-moz-range-thumb:active {
905
+ z-index: 2;
906
+ }
907
+
908
+ .fr-range[data-fr-js-range] input[type=range]:disabled {
909
+ border-color: graytext;
910
+ }
911
+
912
+ .fr-range[data-fr-js-range] .fr-range__output {
913
+ visibility: visible;
914
+ }
915
+
916
+ .fr-range--sm {
917
+ --thumb-size: 1rem;
918
+ }
919
+
920
+ .fr-range--sm[data-fr-js-range]::before,
921
+ .fr-range--sm[data-fr-js-range]::after {
922
+ top: 1.5rem;
923
+ height: 0.5rem;
924
+ border-radius: 0.25rem;
925
+ }
926
+
927
+ .fr-range--step[data-fr-js-range] {
928
+ --step-width: 0;
929
+ }
930
+
931
+ .fr-range--step[data-fr-js-range]::before,
932
+ .fr-range--step[data-fr-js-range]::after {
933
+ padding-left: 0.625rem;
934
+ padding-right: 0.625rem;
935
+ background-repeat: repeat-x;
936
+ background-size: var(--step-width) 100%;
937
+ background-position: 0.625rem 0;
938
+ background-clip: content-box;
939
+ }
940
+
941
+ .fr-range--step.fr-range--sm[data-fr-js-range]::before,
942
+ .fr-range--step.fr-range--sm[data-fr-js-range]::after {
943
+ background-position: 0.375rem 0;
944
+ padding-left: 0.375rem;
945
+ padding-right: 0.375rem;
946
+ }
947
+
948
+ .fr-range--double .fr-range__output {
949
+ min-width: calc(var(--thumb-size) * 2);
950
+ }
951
+
952
+ .fr-range--double[data-fr-js-range] input[type=range] {
953
+ width: calc(100% - var(--thumb-size));
954
+ }
955
+
956
+ .fr-range--double[data-fr-js-range] input[type=range]:nth-of-type(1) {
957
+ margin-right: var(--thumb-size);
958
+ }
959
+
960
+ .fr-range--double[data-fr-js-range] input[type=range]:nth-of-type(2) {
961
+ position: absolute;
962
+ right: 0;
963
+ top: 1.25rem;
964
+ }
965
+
966
+ .fr-range--double.fr-range--step[data-fr-js-range]::before,
967
+ .fr-range--double.fr-range--step[data-fr-js-range]::after {
968
+ background-size: 0;
969
+ }
970
+
971
+ .fr-range[data-fr-js-range] input[type=range]:disabled::-webkit-slider-thumb {
972
+ border: 1px solid var(--border-disabled-grey);
973
+ }
974
+
975
+ .fr-range[data-fr-js-range] input[type=range]:disabled::-moz-range-thumb {
976
+ border: 1px solid var(--border-disabled-grey);
977
+ }
978
+
979
+ .fr-range__min,
980
+ .fr-range__max {
981
+ color: var(--text-mention-grey);
982
+ }
983
+
984
+ .fr-range--step[data-fr-js-range]::before {
985
+ background-image: radial-gradient(circle at 2px 50%, var(--background-action-high-blue-france) 0, var(--background-action-high-blue-france) 1px, transparent 1px);
986
+ }
987
+
988
+ .fr-range--step[data-fr-js-range]::after {
989
+ background-image: radial-gradient(circle at 2px 50%, var(--background-action-low-blue-france) 0, var(--background-action-low-blue-france) 2px, transparent 2px);
990
+ box-shadow: inset 10px 0 0 0 var(--border-active-blue-france), inset -10px 0 0 0 var(--border-active-blue-france);
991
+ }
992
+
993
+ .fr-range--step.fr-range--sm[data-fr-js-range]::after {
994
+ box-shadow: inset 6px 0 0 0 var(--border-active-blue-france), inset -6px 0 0 0 var(--border-active-blue-france);
995
+ }
996
+
997
+ .fr-range-group--error::before {
998
+ background-image: linear-gradient(0deg, var(--border-plain-error), var(--border-plain-error));
999
+ }
1000
+
1001
+ .fr-range-group--valid::before {
1002
+ background-image: linear-gradient(0deg, var(--border-plain-success), var(--border-plain-success));
1003
+ }
1004
+
1005
+ .fr-range-group--disabled .fr-range[data-fr-js-range]::before {
1006
+ box-shadow: inset 0 0 0 1px var(--border-disabled-grey);
1007
+ }
1008
+
1009
+ .fr-range-group--disabled .fr-range[data-fr-js-range]::after {
1010
+ background-color: var(--background-disabled-grey);
1011
+
1012
+ --idle: transparent;
1013
+ --hover: var(--background-disabled-grey-hover);
1014
+ --active: var(--background-disabled-grey-active);
1015
+ }
1016
+
1017
+ .fr-range-group--disabled .fr-range--step[data-fr-js-range]::before {
1018
+ background-image: radial-gradient(circle at 2px 50%, var(--background-disabled-grey) 0, var(--background-disabled-grey) 1px, transparent 1px);
1019
+ }
1020
+
1021
+ .fr-range-group--disabled .fr-range--step[data-fr-js-range]::after {
1022
+ background-image: radial-gradient(circle at 2px 50%, var(--background-default-grey) 0, var(--background-default-grey) 2px, transparent 2px);
1023
+ box-shadow: inset 10px 0 0 0 var(--border-disabled-grey), inset -10px 0 0 0 var(--border-disabled-grey);
1024
+ }
1025
+
1026
+ .fr-range-group--disabled .fr-range__output,
1027
+ .fr-range-group--disabled .fr-range__min,
1028
+ .fr-range-group--disabled .fr-range__max {
1029
+ color: var(--text-disabled-grey);
1030
+ }
1031
+ @media (min-width: 36em) {
1032
+ /*! media sm */
1033
+ }
1034
+ @media (min-width: 48em) {
1035
+ /*! media md */
1036
+ }
1037
+ @media (min-width: 62em) {
1038
+ /*! media lg */
1039
+ }
1040
+ @media (min-width: 78em) {
1041
+ /*! media xl */
1042
+ }
1043
+ @media (-ms-high-contrast: active), (forced-colors: active) {
1044
+ .fr-range-group--disabled .fr-range__output,
1045
+ .fr-range-group--disabled .fr-range__min,
1046
+ .fr-range-group--disabled .fr-range__max {
1047
+ color: graytext;
1048
+ }
1049
+
1050
+ .fr-range-group--disabled .fr-range[data-fr-js-range]::before,
1051
+ .fr-range-group--disabled .fr-range[data-fr-js-range]::after {
1052
+ border: 1px solid graytext;
1053
+ }
1054
+
1055
+ .fr-range-group--disabled .fr-label,
1056
+ .fr-range-group--disabled .fr-label .fr-hint-text {
1057
+ color: graytext;
1058
+ }
1059
+
1060
+ .fr-range input[type=range] {
1061
+ border: none;
1062
+ }
1063
+
1064
+ .fr-range[data-fr-js-range]::before {
1065
+ box-shadow: 0 0 0 1px buttontext;
1066
+ }
1067
+
1068
+ .fr-range[data-fr-js-range]::after {
1069
+ background-color: highlight;
1070
+ }
1071
+
1072
+ .fr-range[data-fr-js-range] input[type=range] {
1073
+ border: none;
1074
+ }
1075
+
1076
+ .fr-range[data-fr-js-range] input[type=range]:focus::-webkit-slider-thumb {
1077
+ outline-color: highlight;
1078
+ }
1079
+
1080
+ .fr-range[data-fr-js-range] input[type=range]:focus::-moz-range-thumb {
1081
+ outline-color: highlight;
1082
+ }
1083
+
1084
+ .fr-range[data-fr-js-range] input[type=range]::-webkit-slider-thumb {
1085
+ background: buttontext;
1086
+ box-shadow: none;
1087
+ }
1088
+
1089
+ .fr-range[data-fr-js-range] input[type=range]::-moz-range-thumb {
1090
+ background: buttontext;
1091
+ box-shadow: none;
1092
+ }
1093
+
1094
+ .fr-range[data-fr-js-range] input[type=range]:disabled::-webkit-slider-thumb {
1095
+ background: graytext;
1096
+ }
1097
+
1098
+ .fr-range[data-fr-js-range] input[type=range]:disabled::-moz-range-thumb {
1099
+ background: graytext;
1100
+ }
1101
+
1102
+ .fr-range--step[data-fr-js-range]::before {
1103
+ background-image: radial-gradient(circle at 2px 50%, buttontext 0, buttontext 1px, transparent 1px);
1104
+ }
1105
+
1106
+ .fr-range--step[data-fr-js-range]::after {
1107
+ box-shadow: inset 10px 0 0 0 highlight, inset -10px 0 0 0 highlight;
1108
+ background-image: radial-gradient(circle at 2px 50%, highlighttext 0, highlighttext 2px, transparent 2px);
1109
+ }
1110
+
1111
+ .fr-range--step.fr-range--sm[data-fr-js-range]::after {
1112
+ box-shadow: inset 6px 0 0 0 highlight, inset -6px 0 0 0 highlight;
1113
+ }
1114
+
1115
+ .fr-range--double[data-fr-js-range] input[type=range]:nth-of-type(1) {
1116
+ border-right: none;
1117
+ }
1118
+
1119
+ .fr-range--double[data-fr-js-range] input[type=range]:nth-of-type(2) {
1120
+ border-left: none;
1121
+ }
1122
+ }
1123
+ input,
1124
+ select,
1125
+ textarea {
1126
+ -webkit-appearance: none;
1127
+ -moz-appearance: none;
1128
+ appearance: none;
1129
+ font-family: "Marianne", arial, sans-serif;
1130
+ text-rendering: optimizeLegibility;
1131
+ -webkit-font-smoothing: antialiased;
1132
+ -moz-osx-font-smoothing: grayscale;
1133
+ -webkit-text-size-adjust: 100%;
1134
+ border-radius: 0;
1135
+ border: 0;
1136
+ background-color: transparent;
1137
+ margin: 0;
1138
+ }
1139
+ @media (-ms-high-contrast: active), (forced-colors: active) {
1140
+ input,
1141
+ select,
1142
+ textarea {
1143
+ border: 1px solid;
1144
+ }
1145
+ }
1146
+
1147
+ input[type=search] {
1148
+ -webkit-appearance: none;
1149
+ -moz-appearance: none;
1150
+ appearance: none;
1151
+ }
1152
+
1153
+ input[type=checkbox],
1154
+ input[type=radio],
1155
+ input[type=range] {
1156
+ -webkit-appearance: auto;
1157
+ -moz-appearance: auto;
1158
+ appearance: auto;
1159
+ }
1160
+
1161
+ input::-webkit-contacts-auto-fill-button,
1162
+ input::-webkit-credentials-auto-fill-button {
1163
+ margin-left: 1rem;
1164
+ margin-right: -1px;
1165
+ width: 1.25rem;
1166
+ height: 1.25rem;
1167
+ -webkit-mask-size: 1.25rem 1.25rem;
1168
+ }
1169
+
1170
+ input[type=range]:focus::-webkit-slider-thumb {
1171
+ outline-offset: 2px;
1172
+ outline-width: 2px;
1173
+ outline-color: #0a76f6;
1174
+ }
1175
+
1176
+ input[type=range]:focus::-moz-range-thumb {
1177
+ outline-offset: 2px;
1178
+ outline-width: 2px;
1179
+ outline-color: #0a76f6;
1180
+ }
1181
+
1182
+ input[type=range]:focus::-ms-thumb {
1183
+ outline-offset: 2px;
1184
+ outline-width: 2px;
1185
+ outline-color: #0a76f6;
1186
+ }
1187
+
1188
+ a:focus, button:focus, input:focus, input[type=checkbox]:focus + label::before, input[type=radio]:focus + label::before, input[type=button]:focus, input[type=image]:focus, input[type=reset]:focus, input[type=submit]:focus, select:focus, textarea:focus, [tabindex]:focus, video:focus[controls], audio:focus[controls], [contenteditable]:not([contenteditable=false]):focus, details:focus, details > summary:first-of-type:focus {
1189
+ outline-offset: 2px;
1190
+ outline-width: 2px;
1191
+ outline-color: #0a76f6;
1192
+ }
1193
+
1194
+ input[type=range]:focus::-webkit-slider-thumb {
1195
+ outline-style: solid;
1196
+ }
1197
+
1198
+ input[type=range]:focus::-moz-range-thumb {
1199
+ outline-style: solid;
1200
+ }
1201
+
1202
+ input[type=range]:focus::-ms-thumb {
1203
+ outline-style: solid;
1204
+ }
1205
+
1206
+ a:focus, button:focus, input:focus, input[type=checkbox]:focus + label::before, input[type=radio]:focus + label::before, input[type=button]:focus, input[type=image]:focus, input[type=reset]:focus, input[type=submit]:focus, select:focus, textarea:focus, [tabindex]:focus, video:focus[controls], audio:focus[controls], [contenteditable]:not([contenteditable=false]):focus, details:focus, details > summary:first-of-type:focus {
1207
+ outline-style: solid;
1208
+ }
1209
+
1210
+ input[type=range]:focus:not(:focus-visible)::-webkit-slider-thumb {
1211
+ outline-style: none;
1212
+ }
1213
+
1214
+ input[type=range]:focus:not(:focus-visible)::-moz-range-thumb {
1215
+ outline-style: none;
1216
+ }
1217
+
1218
+ input[type=range]:focus:not(:focus-visible)::-ms-thumb {
1219
+ outline-style: none;
1220
+ }
1221
+
1222
+ a:focus:not(:focus-visible), button:focus:not(:focus-visible), input:focus:not(:focus-visible), input[type=checkbox]:focus:not(:focus-visible) + label::before, input[type=radio]:focus:not(:focus-visible) + label::before, input[type=button]:focus:not(:focus-visible), input[type=image]:focus:not(:focus-visible), input[type=reset]:focus:not(:focus-visible), input[type=submit]:focus:not(:focus-visible), select:focus:not(:focus-visible), textarea:focus:not(:focus-visible), [tabindex]:focus:not(:focus-visible), video:focus:not(:focus-visible)[controls], audio:focus:not(:focus-visible)[controls], [contenteditable]:not([contenteditable=false]):focus:not(:focus-visible), details:focus:not(:focus-visible), details > summary:first-of-type:focus:not(:focus-visible) {
1223
+ outline-style: none;
1224
+ }
1225
+
1226
+ input[type=range]:focus-visible::-webkit-slider-thumb {
1227
+ outline-style: solid;
1228
+ }
1229
+
1230
+ input[type=range]:focus-visible::-moz-range-thumb {
1231
+ outline-style: solid;
1232
+ }
1233
+
1234
+ input[type=range]:focus-visible::-ms-thumb {
1235
+ outline-style: solid;
1236
+ }
1237
+
1238
+ a:focus-visible, button:focus-visible, input:focus-visible, input[type=checkbox]:focus-visible + label::before, input[type=radio]:focus-visible + label::before, input[type=button]:focus-visible, input[type=image]:focus-visible, input[type=reset]:focus-visible, input[type=submit]:focus-visible, select:focus-visible, textarea:focus-visible, [tabindex]:focus-visible, video:focus-visible[controls], audio:focus-visible[controls], [contenteditable]:not([contenteditable=false]):focus-visible, details:focus-visible, details > summary:first-of-type:focus-visible {
1239
+ outline-style: solid;
1240
+ }
1241
+
1242
+ a, button, input[type=checkbox], input[type=checkbox] + label, input[type=radio], input[type=radio] + label, input[type=file], input[type=range], input[type=button], input[type=image], input[type=reset], input[type=submit], select, video[controls], audio[controls], details, details > summary:first-of-type {
1243
+ cursor: pointer;
1244
+ }
1245
+
1246
+ input[type=range]:disabled::-webkit-slider-thumb, input[type=range]:disabled::-webkit-slider-thumb:active {
1247
+ cursor: not-allowed;
1248
+ }
1249
+
1250
+ input[type=range]:disabled::-moz-range-thumb, input[type=range]:disabled::-moz-range-thumb:active {
1251
+ cursor: not-allowed;
1252
+ }
1253
+
1254
+ input[type=range]:disabled::-ms-thumb, input[type=range]:disabled::-ms-thumb:active {
1255
+ cursor: not-allowed;
1256
+ }
1257
+
1258
+ a:not([href]), button:disabled, input:disabled, input[type=checkbox]:disabled, input[type=checkbox]:disabled + label, input[type=radio]:disabled, input[type=radio]:disabled + label, input[type=file]:disabled, input[type=range]:disabled, input[type=button]:disabled, input[type=image]:disabled, input[type=reset]:disabled, input[type=submit]:disabled, select:disabled, textarea:disabled, video:not([href])[controls], audio:not([href])[controls] {
1259
+ cursor: not-allowed;
1260
+ }
1261
+
1262
+ input[type=range]::-webkit-slider-thumb {
1263
+ cursor: grab;
1264
+ }
1265
+
1266
+ input[type=range]::-moz-range-thumb {
1267
+ cursor: grab;
1268
+ }
1269
+
1270
+ input[type=range]::-ms-thumb {
1271
+ cursor: grab;
1272
+ }
1273
+
1274
+ input[type=range]::-webkit-slider-thumb:active {
1275
+ cursor: grabbing;
1276
+ }
1277
+
1278
+ input[type=range]::-moz-range-thumb:active {
1279
+ cursor: grabbing;
1280
+ }
1281
+
1282
+ input[type=range]::-ms-thumb:active {
1283
+ cursor: grabbing;
1284
+ }
1285
+
1286
+ /**
1287
+ * Override de l'opacité chrome sur un élément disabled
1288
+ */
1289
+ a:not([href]), button:disabled, input:disabled, input[type=checkbox]:disabled, input[type=checkbox]:disabled + label, input[type=radio]:disabled, input[type=radio]:disabled + label, select:disabled, textarea:disabled, video:not([href]), audio:not([href]) {
1290
+ opacity: 1;
1291
+ }
1292
+
1293
+ input,
1294
+ select,
1295
+ textarea,
1296
+ label,
1297
+ button,
1298
+ a {
1299
+ -webkit-tap-highlight-color: transparent;
1300
+ }
1301
+
1302
+ :host {
1303
+ display: block;
1304
+ text-rendering: optimizeLegibility;
1305
+ -webkit-font-smoothing: antialiased;
1306
+ -moz-osx-font-smoothing: grayscale;
1307
+ -webkit-text-size-adjust: 100%;
1308
+ font-size: 1rem;
1309
+ line-height: 1.5rem;
1310
+ background-color: var(--background-default-grey);
1311
+ --idle: transparent;
1312
+ --hover: var(--background-default-grey-hover);
1313
+ --active: var(--background-default-grey-active);
1314
+ color: var(--text-default-grey);
1315
+ background-color: transparent;
1316
+ }
1317
+
1318
+ .fr-range-group {
1319
+ box-sizing: border-box;
1320
+ }
1321
+ .fr-range-group *,
1322
+ .fr-range-group *::after,
1323
+ .fr-range-group *::before {
1324
+ box-sizing: inherit;
1325
+ }
1326
+
1327
+ .fr-range[data-fr-js-range] .fr-range__output.fr-range__output--hide {
1328
+ visibility: hidden;
1329
+ }</style>