@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,926 @@
1
+ <svelte:options
2
+ customElement={{
3
+ tag: "dsfr-tabs",
4
+ props: {
5
+ hasIcon: { attribute: "has-icon", type: "Boolean" },
6
+ tabs: { attribute: "tabs", type: "Array" },
7
+ ariaLabel: { attribute: "aria-label", type: "String" },
8
+ activeTabIndex: { attribute: "active-tab-index", type: "Number" },
9
+ },
10
+ extend: (CustomElementClass) => {
11
+ return class extends CustomElementClass {
12
+ connectedCallback() {
13
+ super.connectedCallback();
14
+
15
+ const iconsStyleSheet = getIconsStyleSheet();
16
+ const shadow = this.shadowRoot;
17
+
18
+ if (shadow && !shadow.adoptedStyleSheets.includes(iconsStyleSheet)) {
19
+ shadow.adoptedStyleSheets = [iconsStyleSheet, ...shadow.adoptedStyleSheets];
20
+ }
21
+ }
22
+ };
23
+ },
24
+ }}
25
+ />
26
+
27
+ <script lang="ts">import { untrack } from "svelte";
28
+ import { getIconsStyleSheet, setIconClass, setThemeable } from "../utilitaires";
29
+ import { createSlot } from "../directives/actions.svelte";
30
+ setThemeable($host());
31
+ let { hasIcon, tabs = [], ariaLabel, activeTabIndex = 0, ontabchanged } = $props();
32
+ let activeIndex = $state(untrack(() => activeTabIndex));
33
+ let tabsElement;
34
+ let tabsListElement;
35
+ let tabButtons = [];
36
+ let panelEls = [];
37
+ /**
38
+ * Détermine la direction d'animation du panneau d'onglet
39
+ *
40
+ * @param {number} index - L'index du panneau à analyser
41
+ * @returns {false|string} - false si c'est le panneau actif, sinon la classe de direction
42
+ * "fr-tabs__panel--direction-start" si index < activeIndex, sinon "fr-tabs__panel--direction-end"
43
+ */
44
+ function panelDirection(index) {
45
+ if (index === activeIndex) return false;
46
+ return index < activeIndex ? "fr-tabs__panel--direction-start" : "fr-tabs__panel--direction-end";
47
+ }
48
+ $effect(() => {
49
+ const panel = panelEls[activeIndex];
50
+ if (!tabsElement || !panel || !tabsListElement) return;
51
+ const updateHeight = () => {
52
+ const panelHeight = panel.offsetHeight;
53
+ const listHeight = tabsListElement.offsetHeight;
54
+ tabsElement.style.setProperty("--tabs-height", `${panelHeight + listHeight - 4}px`);
55
+ };
56
+ const observer = new ResizeObserver(updateHeight);
57
+ observer.observe(panel);
58
+ return () => observer.disconnect();
59
+ });
60
+ /**
61
+ * Sélectionne un onglet et émet un événement personnalisé.
62
+ *
63
+ * @param {number} index - L'index de l'onglet à sélectionner
64
+ * @fires tabchanged - Événement déclenché avec l'index et l'onglet sélectionné
65
+ */
66
+ function selectTab(index) {
67
+ activeIndex = index;
68
+ ontabchanged?.({
69
+ index,
70
+ tab: tabs[index]
71
+ });
72
+ ($host() ?? tabsElement)?.dispatchEvent(new CustomEvent("tabchanged", {
73
+ detail: {
74
+ index,
75
+ tab: tabs[index]
76
+ },
77
+ bubbles: true
78
+ }));
79
+ }
80
+ </script>
81
+
82
+ <div class="fr-tabs" bind:this={tabsElement}>
83
+ <ul class="fr-tabs__list" role="tablist" aria-label={ariaLabel} bind:this={tabsListElement}>
84
+ {#each tabs as tab, i (tab.id)}
85
+ <li role="presentation">
86
+ <button
87
+ type="button"
88
+ id={tab.id}
89
+ class={[
90
+ "fr-tabs__tab",
91
+ tab.icon && `fr-icon-${tab.icon} fr-tabs__tab--icon-left`,
92
+ hasIcon && tab.icon && setIconClass(tab.icon),
93
+ ]}
94
+ tabindex={activeIndex === i ? 0 : -1}
95
+ role="tab"
96
+ aria-selected={activeIndex === i}
97
+ aria-controls={`${tab.id}-panel`}
98
+ bind:this={tabButtons[i]}
99
+ onclick={() => selectTab(i)}
100
+ use:createSlot={`tab-${i + 1}`}
101
+ >
102
+ {tab.label}
103
+ </button>
104
+ </li>
105
+ {/each}
106
+ </ul>
107
+ {#each tabs as tab, i (tab.id)}
108
+ <div
109
+ id={`${tab.id}-panel`}
110
+ class={["fr-tabs__panel", activeIndex === i && "fr-tabs__panel--selected", panelDirection(i)]}
111
+ role="tabpanel"
112
+ aria-labelledby={tab.id}
113
+ tabindex="0"
114
+ bind:this={panelEls[i]}
115
+ use:createSlot={`panel-${i + 1}`}
116
+ >
117
+ <!-- eslint-disable-next-line svelte/no-at-html-tags -->
118
+ {@html tab.content}
119
+ </div>
120
+ {/each}
121
+ </div>
122
+
123
+ <style>@charset "UTF-8";
124
+ button {
125
+ -webkit-appearance: none;
126
+ -moz-appearance: none;
127
+ appearance: none;
128
+ border: none;
129
+ margin: 0;
130
+ color: inherit;
131
+ background-color: transparent;
132
+ font-family: inherit;
133
+ font-size: inherit;
134
+ }
135
+ @media (-ms-high-contrast: active), (forced-colors: active) {
136
+ button {
137
+ color: buttontext;
138
+ }
139
+ }
140
+
141
+ @media (-ms-high-contrast: active), (forced-colors: active) {
142
+ button:disabled {
143
+ color: graytext;
144
+ }
145
+ }
146
+
147
+ input[type=range]:focus::-webkit-slider-thumb {
148
+ outline-offset: 2px;
149
+ outline-width: 2px;
150
+ outline-color: #0a76f6;
151
+ }
152
+
153
+ input[type=range]:focus::-moz-range-thumb {
154
+ outline-offset: 2px;
155
+ outline-width: 2px;
156
+ outline-color: #0a76f6;
157
+ }
158
+
159
+ input[type=range]:focus::-ms-thumb {
160
+ outline-offset: 2px;
161
+ outline-width: 2px;
162
+ outline-color: #0a76f6;
163
+ }
164
+
165
+ 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 {
166
+ outline-offset: 2px;
167
+ outline-width: 2px;
168
+ outline-color: #0a76f6;
169
+ }
170
+
171
+ input[type=range]:focus::-webkit-slider-thumb {
172
+ outline-style: solid;
173
+ }
174
+
175
+ input[type=range]:focus::-moz-range-thumb {
176
+ outline-style: solid;
177
+ }
178
+
179
+ input[type=range]:focus::-ms-thumb {
180
+ outline-style: solid;
181
+ }
182
+
183
+ 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 {
184
+ outline-style: solid;
185
+ }
186
+
187
+ input[type=range]:focus:not(:focus-visible)::-webkit-slider-thumb {
188
+ outline-style: none;
189
+ }
190
+
191
+ input[type=range]:focus:not(:focus-visible)::-moz-range-thumb {
192
+ outline-style: none;
193
+ }
194
+
195
+ input[type=range]:focus:not(:focus-visible)::-ms-thumb {
196
+ outline-style: none;
197
+ }
198
+
199
+ 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) {
200
+ outline-style: none;
201
+ }
202
+
203
+ input[type=range]:focus-visible::-webkit-slider-thumb {
204
+ outline-style: solid;
205
+ }
206
+
207
+ input[type=range]:focus-visible::-moz-range-thumb {
208
+ outline-style: solid;
209
+ }
210
+
211
+ input[type=range]:focus-visible::-ms-thumb {
212
+ outline-style: solid;
213
+ }
214
+
215
+ 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 {
216
+ outline-style: solid;
217
+ }
218
+
219
+ @media (hover: hover) and (pointer: fine) {
220
+ :root {
221
+ --brighten: -1;
222
+ }
223
+ a[href]:hover, button:not(:disabled):hover, input[type=button]:not(:disabled):hover, input[type=image]:not(:disabled):hover, input[type=reset]:not(:disabled):hover, input[type=submit]:not(:disabled):hover {
224
+ background-color: var(--hover-tint);
225
+ }
226
+ a[href]:active, button:not(:disabled):active, input[type=button]:not(:disabled):active, input[type=image]:not(:disabled):active, input[type=reset]:not(:disabled):active, input[type=submit]:not(:disabled):active {
227
+ background-color: var(--active-tint);
228
+ }
229
+ a[href]:hover, a[href]:active {
230
+ --underline-hover-width: var(--underline-max-width);
231
+ }
232
+ }
233
+ button, input[type=button], input[type=image], input[type=reset], input[type=submit] {
234
+ --hover-tint: var(--hover);
235
+ --active-tint: var(--active);
236
+ }
237
+
238
+ a {
239
+ --hover-tint: var(--idle);
240
+ --active-tint: var(--active);
241
+ }
242
+
243
+ 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 {
244
+ cursor: pointer;
245
+ }
246
+
247
+ input[type=range]:disabled::-webkit-slider-thumb, input[type=range]:disabled::-webkit-slider-thumb:active {
248
+ cursor: not-allowed;
249
+ }
250
+
251
+ input[type=range]:disabled::-moz-range-thumb, input[type=range]:disabled::-moz-range-thumb:active {
252
+ cursor: not-allowed;
253
+ }
254
+
255
+ input[type=range]:disabled::-ms-thumb, input[type=range]:disabled::-ms-thumb:active {
256
+ cursor: not-allowed;
257
+ }
258
+
259
+ 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] {
260
+ cursor: not-allowed;
261
+ }
262
+
263
+ input[type=range]::-webkit-slider-thumb {
264
+ cursor: grab;
265
+ }
266
+
267
+ input[type=range]::-moz-range-thumb {
268
+ cursor: grab;
269
+ }
270
+
271
+ input[type=range]::-ms-thumb {
272
+ cursor: grab;
273
+ }
274
+
275
+ input[type=range]::-webkit-slider-thumb:active {
276
+ cursor: grabbing;
277
+ }
278
+
279
+ input[type=range]::-moz-range-thumb:active {
280
+ cursor: grabbing;
281
+ }
282
+
283
+ input[type=range]::-ms-thumb:active {
284
+ cursor: grabbing;
285
+ }
286
+
287
+ .fr-transition-none {
288
+ transition: none !important;
289
+ }
290
+
291
+ :root {
292
+ --ul-type: disc;
293
+ --ol-type: decimal;
294
+ --ul-start: 1rem;
295
+ --ol-start: 1.5rem;
296
+ --xl-block: 0.5rem;
297
+ --li-bottom: 0.25rem;
298
+ --xl-base: 1em;
299
+ --ol-content: counters(li-counter, ".") ".\00a0\00a0";
300
+ }
301
+
302
+ ul,
303
+ ol,
304
+ dl {
305
+ margin: 0;
306
+ padding: 0;
307
+ margin-block-start: var(--xl-block);
308
+ margin-block-end: var(--xl-block);
309
+ --xl-size: var(--xl-base);
310
+ }
311
+
312
+ ul {
313
+ list-style-type: var(--ul-type);
314
+ padding-inline-start: var(--ul-start);
315
+ }
316
+ ul > li::marker {
317
+ font-size: calc(var(--xl-size) * 0.9);
318
+ }
319
+ @media (-ms-high-contrast: active), (forced-colors: active) {
320
+ ul > li::marker {
321
+ color: graytext;
322
+ }
323
+ }
324
+
325
+ ol {
326
+ list-style-type: var(--ol-type);
327
+ padding-inline-start: var(--ol-start);
328
+ counter-reset: li-counter;
329
+ }
330
+ ol > li {
331
+ counter-increment: li-counter;
332
+ }
333
+ ol > li::marker {
334
+ content: var(--ol-content);
335
+ font-size: var(--xl-size);
336
+ font-weight: bold;
337
+ }
338
+
339
+ dl,
340
+ dd {
341
+ margin: 0;
342
+ padding-inline-start: var(--ul-start);
343
+ }
344
+
345
+ li,
346
+ dd,
347
+ dt {
348
+ --xl-base: calc(var(--xl-size) * 0.9);
349
+ padding-bottom: var(--li-bottom);
350
+ }
351
+
352
+ .fr-raw-list {
353
+ --ul-type: none;
354
+ --ol-type: none;
355
+ --ul-start: 0;
356
+ --ol-start: 0;
357
+ --xl-block: 0;
358
+ --li-bottom: 0;
359
+ --ol-content: none;
360
+ }
361
+
362
+ .fr-list {
363
+ --ul-type: disc;
364
+ --ol-type: decimal;
365
+ --ul-start: 1rem;
366
+ --ol-start: 1.5rem;
367
+ --xl-block: 0.5rem;
368
+ --li-bottom: 0.25rem;
369
+ --xl-base: 1em;
370
+ --ol-content: counters(li-counter, ".") ".\00a0\00a0";
371
+ }
372
+
373
+ *,
374
+ *::before,
375
+ *::after {
376
+ box-sizing: inherit;
377
+ }
378
+
379
+ :root {
380
+ box-sizing: border-box;
381
+ }
382
+
383
+ input,
384
+ select,
385
+ textarea,
386
+ label,
387
+ button,
388
+ a {
389
+ -webkit-tap-highlight-color: transparent;
390
+ }
391
+
392
+ [class^=fr-icon-]::before, [class^=fr-icon-]::after, [class*=" fr-icon-"]::before, [class*=" fr-icon-"]::after, [class^=fr-fi-]::before, [class^=fr-fi-]::after, [class*=" fr-fi-"]::before, [class*=" fr-fi-"]::after {
393
+ flex: 0 0 auto;
394
+ display: inline-block;
395
+ vertical-align: calc((0.75em - var(--icon-size)) * 0.5);
396
+ background-color: currentColor;
397
+ width: var(--icon-size);
398
+ height: var(--icon-size);
399
+ -webkit-mask-size: 100% 100%;
400
+ mask-size: 100% 100%;
401
+ }
402
+ [class^=fr-icon-]::before, [class^=fr-icon-]::after, [class*=" fr-icon-"]::before, [class*=" fr-icon-"]::after, [class^=fr-fi-]::before, [class^=fr-fi-]::after, [class*=" fr-fi-"]::before, [class*=" fr-fi-"]::after {
403
+ --icon-size: 1.5rem;
404
+ }
405
+ [class^=fr-icon-]::before, [class*=" fr-icon-"]::before, [class^=fr-fi-]::before, [class*=" fr-fi-"]::before {
406
+ content: "";
407
+ }
408
+
409
+ @media (-ms-high-contrast: active) and (-ms-high-contrast: active), (-ms-high-contrast: active) and (forced-colors: active), (forced-colors: active) and (-ms-high-contrast: active), (forced-colors: active) and (forced-colors: active) {
410
+ [class^=fr-icon-]::before, [class^=fr-icon-]::after, [class*=" fr-icon-"]::before, [class*=" fr-icon-"]::after, [class^=fr-fi-]::before, [class^=fr-fi-]::after, [class*=" fr-fi-"]::before, [class*=" fr-fi-"]::after {
411
+ forced-color-adjust: none;
412
+ background-color: canvastext;
413
+ }
414
+ }
415
+ @media (-ms-high-contrast: active) and (-ms-high-contrast: active), (-ms-high-contrast: active) and (forced-colors: active), (forced-colors: active) and (-ms-high-contrast: active), (forced-colors: active) and (forced-colors: active) {
416
+ button[class^=fr-icon-]:not([disabled])::before, button[class^=fr-icon-]:not([disabled])::after, button[class*=" fr-icon-"]:not([disabled])::before, button[class*=" fr-icon-"]:not([disabled])::after, button[class^=fr-fi-]:not([disabled])::before, button[class^=fr-fi-]:not([disabled])::after, button[class*=" fr-fi-"]:not([disabled])::before, button[class*=" fr-fi-"]:not([disabled])::after {
417
+ background-color: buttontext;
418
+ }
419
+ }
420
+ @media (-ms-high-contrast: active) and (-ms-high-contrast: active), (-ms-high-contrast: active) and (forced-colors: active), (forced-colors: active) and (-ms-high-contrast: active), (forced-colors: active) and (forced-colors: active) {
421
+ a[href][class^=fr-icon-]::before, a[href][class^=fr-icon-]::after, a[href][class*=" fr-icon-"]::before, a[href][class*=" fr-icon-"]::after, a[href][class^=fr-fi-]::before, a[href][class^=fr-fi-]::after, a[href][class*=" fr-fi-"]::before, a[href][class*=" fr-fi-"]::after {
422
+ background-color: linktext;
423
+ }
424
+ }
425
+ @media (-ms-high-contrast: active) and (-ms-high-contrast: active), (-ms-high-contrast: active) and (forced-colors: active), (forced-colors: active) and (-ms-high-contrast: active), (forced-colors: active) and (forced-colors: active) {
426
+ a[class^=fr-icon-]:not([href])::before, a[class^=fr-icon-]:not([href])::after, a[class*=" fr-icon-"]:not([href])::before, a[class*=" fr-icon-"]:not([href])::after, a[class^=fr-fi-]:not([href])::before, a[class^=fr-fi-]:not([href])::after, a[class*=" fr-fi-"]:not([href])::before, a[class*=" fr-fi-"]:not([href])::after, button[class^=fr-icon-]:disabled::before, button[class^=fr-icon-]:disabled::after, button[class*=" fr-icon-"]:disabled::before, button[class*=" fr-icon-"]:disabled::after, button[class^=fr-fi-]:disabled::before, button[class^=fr-fi-]:disabled::after, button[class*=" fr-fi-"]:disabled::before, button[class*=" fr-fi-"]:disabled::after, input[class^=fr-icon-]:disabled::before, input[class^=fr-icon-]:disabled::after, input[class*=" fr-icon-"]:disabled::before, input[class*=" fr-icon-"]:disabled::after, input[class^=fr-fi-]:disabled::before, input[class^=fr-fi-]:disabled::after, input[class*=" fr-fi-"]:disabled::before, input[class*=" fr-fi-"]:disabled::after, input[type=checkbox][class^=fr-icon-]:disabled::before, input[type=checkbox][class^=fr-icon-]:disabled::after, input[type=checkbox][class*=" fr-icon-"]:disabled::before, input[type=checkbox][class*=" fr-icon-"]:disabled::after, input[type=checkbox][class^=fr-fi-]:disabled::before, input[type=checkbox][class^=fr-fi-]:disabled::after, input[type=checkbox][class*=" fr-fi-"]:disabled::before, input[type=checkbox][class*=" fr-fi-"]:disabled::after, input[type=checkbox]:disabled + label[class^=fr-icon-]::before, input[type=checkbox]:disabled + label[class^=fr-icon-]::after, input[type=checkbox]:disabled + label[class*=" fr-icon-"]::before, input[type=checkbox]:disabled + label[class*=" fr-icon-"]::after, input[type=checkbox]:disabled + label[class^=fr-fi-]::before, input[type=checkbox]:disabled + label[class^=fr-fi-]::after, input[type=checkbox]:disabled + label[class*=" fr-fi-"]::before, input[type=checkbox]:disabled + label[class*=" fr-fi-"]::after, input[type=radio][class^=fr-icon-]:disabled::before, input[type=radio][class^=fr-icon-]:disabled::after, input[type=radio][class*=" fr-icon-"]:disabled::before, input[type=radio][class*=" fr-icon-"]:disabled::after, input[type=radio][class^=fr-fi-]:disabled::before, input[type=radio][class^=fr-fi-]:disabled::after, input[type=radio][class*=" fr-fi-"]:disabled::before, input[type=radio][class*=" fr-fi-"]:disabled::after, input[type=radio]:disabled + label[class^=fr-icon-]::before, input[type=radio]:disabled + label[class^=fr-icon-]::after, input[type=radio]:disabled + label[class*=" fr-icon-"]::before, input[type=radio]:disabled + label[class*=" fr-icon-"]::after, input[type=radio]:disabled + label[class^=fr-fi-]::before, input[type=radio]:disabled + label[class^=fr-fi-]::after, input[type=radio]:disabled + label[class*=" fr-fi-"]::before, input[type=radio]:disabled + label[class*=" fr-fi-"]::after, select[class^=fr-icon-]:disabled::before, select[class^=fr-icon-]:disabled::after, select[class*=" fr-icon-"]:disabled::before, select[class*=" fr-icon-"]:disabled::after, select[class^=fr-fi-]:disabled::before, select[class^=fr-fi-]:disabled::after, select[class*=" fr-fi-"]:disabled::before, select[class*=" fr-fi-"]:disabled::after, textarea[class^=fr-icon-]:disabled::before, textarea[class^=fr-icon-]:disabled::after, textarea[class*=" fr-icon-"]:disabled::before, textarea[class*=" fr-icon-"]:disabled::after, textarea[class^=fr-fi-]:disabled::before, textarea[class^=fr-fi-]:disabled::after, textarea[class*=" fr-fi-"]:disabled::before, textarea[class*=" fr-fi-"]:disabled::after, video[class^=fr-icon-]:not([href])::before, video[class^=fr-icon-]:not([href])::after, video[class*=" fr-icon-"]:not([href])::before, video[class*=" fr-icon-"]:not([href])::after, video[class^=fr-fi-]:not([href])::before, video[class^=fr-fi-]:not([href])::after, video[class*=" fr-fi-"]:not([href])::before, video[class*=" fr-fi-"]:not([href])::after, audio[class^=fr-icon-]:not([href])::before, audio[class^=fr-icon-]:not([href])::after, audio[class*=" fr-icon-"]:not([href])::before, audio[class*=" fr-icon-"]:not([href])::after, audio[class^=fr-fi-]:not([href])::before, audio[class^=fr-fi-]:not([href])::after, audio[class*=" fr-fi-"]:not([href])::before, audio[class*=" fr-fi-"]:not([href])::after {
427
+ background-color: graytext;
428
+ }
429
+ }
430
+ .fr-icon--xs::before, .fr-icon--xs::after {
431
+ --icon-size: 0.75rem;
432
+ }
433
+ .fr-icon--sm::before, .fr-icon--sm::after {
434
+ --icon-size: 1rem;
435
+ }
436
+ .fr-icon--md::before, .fr-icon--md::after {
437
+ --icon-size: 1.5rem;
438
+ }
439
+ .fr-icon--lg::before, .fr-icon--lg::after {
440
+ --icon-size: 2rem;
441
+ }
442
+
443
+ body {
444
+ background-color: var(--background-default-grey);
445
+ --idle: transparent;
446
+ --hover: var(--background-default-grey-hover);
447
+ --active: var(--background-default-grey-active);
448
+ color: var(--text-default-grey);
449
+ }
450
+
451
+ 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]) {
452
+ color: var(--text-disabled-grey);
453
+ }
454
+
455
+ .fr-artwork-decorative {
456
+ fill: var(--artwork-decorative-blue-france);
457
+ }
458
+ .fr-artwork-minor {
459
+ fill: var(--artwork-minor-red-marianne);
460
+ }
461
+ .fr-artwork-major {
462
+ fill: var(--artwork-major-blue-france);
463
+ }
464
+ .fr-artwork-background {
465
+ fill: var(--artwork-background-grey);
466
+ }
467
+ .fr-artwork-motif {
468
+ fill: var(--artwork-motif-grey);
469
+ }
470
+ .fr-artwork--green-tilleul-verveine .fr-artwork-minor {
471
+ fill: var(--artwork-minor-green-tilleul-verveine);
472
+ }
473
+
474
+ .fr-artwork--green-bourgeon .fr-artwork-minor {
475
+ fill: var(--artwork-minor-green-bourgeon);
476
+ }
477
+
478
+ .fr-artwork--green-emeraude .fr-artwork-minor {
479
+ fill: var(--artwork-minor-green-emeraude);
480
+ }
481
+
482
+ .fr-artwork--green-menthe .fr-artwork-minor {
483
+ fill: var(--artwork-minor-green-menthe);
484
+ }
485
+
486
+ .fr-artwork--green-archipel .fr-artwork-minor {
487
+ fill: var(--artwork-minor-green-archipel);
488
+ }
489
+
490
+ .fr-artwork--blue-ecume .fr-artwork-minor {
491
+ fill: var(--artwork-minor-blue-ecume);
492
+ }
493
+
494
+ .fr-artwork--blue-cumulus .fr-artwork-minor {
495
+ fill: var(--artwork-minor-blue-cumulus);
496
+ }
497
+
498
+ .fr-artwork--purple-glycine .fr-artwork-minor {
499
+ fill: var(--artwork-minor-purple-glycine);
500
+ }
501
+
502
+ .fr-artwork--pink-macaron .fr-artwork-minor {
503
+ fill: var(--artwork-minor-pink-macaron);
504
+ }
505
+
506
+ .fr-artwork--pink-tuile .fr-artwork-minor {
507
+ fill: var(--artwork-minor-pink-tuile);
508
+ }
509
+
510
+ .fr-artwork--yellow-tournesol .fr-artwork-minor {
511
+ fill: var(--artwork-minor-yellow-tournesol);
512
+ }
513
+
514
+ .fr-artwork--yellow-moutarde .fr-artwork-minor {
515
+ fill: var(--artwork-minor-yellow-moutarde);
516
+ }
517
+
518
+ .fr-artwork--orange-terre-battue .fr-artwork-minor {
519
+ fill: var(--artwork-minor-orange-terre-battue);
520
+ }
521
+
522
+ .fr-artwork--brown-cafe-creme .fr-artwork-minor {
523
+ fill: var(--artwork-minor-brown-cafe-creme);
524
+ }
525
+
526
+ .fr-artwork--brown-caramel .fr-artwork-minor {
527
+ fill: var(--artwork-minor-brown-caramel);
528
+ }
529
+
530
+ .fr-artwork--brown-opera .fr-artwork-minor {
531
+ fill: var(--artwork-minor-brown-opera);
532
+ }
533
+
534
+ .fr-artwork--beige-gris-galet .fr-artwork-minor {
535
+ fill: var(--artwork-minor-beige-gris-galet);
536
+ }
537
+
538
+ [disabled] .fr-artwork * {
539
+ fill: var(--text-disabled-grey);
540
+ }
541
+
542
+ .fr-h6, .fr-h5, .fr-h4, .fr-h3, .fr-h2, .fr-h1, .fr-display-xs, .fr-display-sm, .fr-display-md, .fr-display-lg, .fr-display-xl {
543
+ color: var(--text-title-grey);
544
+ }
545
+
546
+ h6, h5, h4, h3, h2, h1 {
547
+ color: var(--text-title-grey);
548
+ }
549
+
550
+ hr {
551
+ background-image: linear-gradient(0deg, var(--border-default-grey), var(--border-default-grey));
552
+ }
553
+
554
+ .fr-hr-or::before, .fr-hr-or::after {
555
+ background-color: var(--border-default-grey);
556
+ --idle: transparent;
557
+ --hover: var(--border-default-grey-hover);
558
+ --active: var(--border-default-grey-active);
559
+ }
560
+
561
+ .fr-hr {
562
+ background-image: linear-gradient(0deg, var(--border-default-grey), var(--border-default-grey));
563
+ }
564
+
565
+ /* ¯¯¯¯¯¯¯¯¯ *\
566
+ TAB
567
+ \* ˍˍˍˍˍˍˍˍˍ */
568
+ @media (min-width: 36em) {
569
+ /*! media sm */
570
+ }
571
+ @media (min-width: 48em) {
572
+ /*! media md */
573
+ }
574
+ @media (min-width: 62em) {
575
+ /*! media lg */
576
+ }
577
+ @media (min-width: 78em) {
578
+ /*! media xl */
579
+ }
580
+ .fr-tabs__tab {
581
+ --text-spacing: 0;
582
+ --title-spacing: 0;
583
+ display: inline-flex;
584
+ flex-direction: row;
585
+ align-items: center;
586
+ width: -moz-fit-content;
587
+ width: fit-content;
588
+ }
589
+ .fr-tabs__tab::before, .fr-tabs__tab::after {
590
+ display: block;
591
+ }
592
+ .fr-tabs__tab {
593
+ --underline-img: none;
594
+ --hover-tint: var(--hover);
595
+ }
596
+
597
+ .fr-tabs__tab {
598
+ font-size: 1rem;
599
+ line-height: 1.5rem;
600
+ min-height: 2.5rem;
601
+ padding: 0.5rem 1rem;
602
+ }
603
+
604
+ .fr-tabs__tab[class^=fr-icon-]:not([class*=fr-tabs__tab--icon-]), .fr-tabs__tab[class*=" fr-icon-"]:not([class*=fr-tabs__tab--icon-]), .fr-tabs__tab[class^=fr-fi-]:not([class*=fr-tabs__tab--icon-]), .fr-tabs__tab[class*=" fr-fi-"]:not([class*=fr-tabs__tab--icon-]) {
605
+ overflow: hidden;
606
+ white-space: nowrap;
607
+ max-width: 2.5rem;
608
+ max-height: 2.5rem;
609
+ padding-left: 0.75rem;
610
+ padding-right: 0.75rem;
611
+ }
612
+ .fr-tabs__tab[class^=fr-icon-]:not([class*=fr-tabs__tab--icon-])::before, .fr-tabs__tab[class*=" fr-icon-"]:not([class*=fr-tabs__tab--icon-])::before, .fr-tabs__tab[class^=fr-fi-]:not([class*=fr-tabs__tab--icon-])::before, .fr-tabs__tab[class*=" fr-fi-"]:not([class*=fr-tabs__tab--icon-])::before {
613
+ --icon-size: 1rem;
614
+ margin-left: 0;
615
+ margin-right: 0.75rem;
616
+ }
617
+
618
+ .fr-tabs__tab--icon-left[class^=fr-icon-], .fr-tabs__tab--icon-left[class*=" fr-icon-"], .fr-tabs__tab--icon-left[class^=fr-fi-], .fr-tabs__tab--icon-left[class*=" fr-fi-"] {
619
+ overflow: initial;
620
+ max-width: 100%;
621
+ max-height: none;
622
+ }
623
+ .fr-tabs__tab--icon-left[class^=fr-icon-]::before, .fr-tabs__tab--icon-left[class*=" fr-icon-"]::before, .fr-tabs__tab--icon-left[class^=fr-fi-]::before, .fr-tabs__tab--icon-left[class*=" fr-fi-"]::before {
624
+ --icon-size: 1rem;
625
+ margin-left: -0.125rem;
626
+ margin-right: 0.5rem;
627
+ }
628
+
629
+ .fr-tabs {
630
+ --tabs-height: auto;
631
+ --ul-type: none;
632
+ --ol-type: none;
633
+ --ul-start: 0;
634
+ --ol-start: 0;
635
+ --xl-block: 0;
636
+ --li-bottom: 0;
637
+ --ol-content: none;
638
+ --underline-img: none;
639
+ position: relative;
640
+ overflow: hidden;
641
+ margin-left: 0;
642
+ margin-right: 0;
643
+ margin-top: -4px;
644
+ padding-top: 4px;
645
+ display: flex;
646
+ flex-direction: row;
647
+ align-items: flex-start;
648
+ flex-wrap: wrap;
649
+ height: var(--tabs-height);
650
+ }
651
+ @media (-ms-high-contrast: active), (forced-colors: active) {
652
+ .fr-tabs {
653
+ border-bottom: 1px solid;
654
+ }
655
+ }
656
+ @media (prefers-reduced-motion: reduce) {
657
+ .fr-tabs {
658
+ transition: none;
659
+ }
660
+ }
661
+ .fr-tabs {
662
+ /**
663
+ * Animation de la hauteur du panel
664
+ */
665
+ transition: height 0.3s;
666
+ }
667
+ .fr-tabs--viewport-width {
668
+ margin-left: calc(50% - 50vw);
669
+ margin-right: calc(50% - 50vw);
670
+ }
671
+ @media (min-width: 48em) {
672
+ .fr-tabs--viewport-width {
673
+ margin-left: 0;
674
+ margin-right: 0;
675
+ }
676
+ }
677
+ .fr-tabs::before {
678
+ content: "";
679
+ display: block;
680
+ width: 100%;
681
+ height: 100%;
682
+ margin-top: -1px;
683
+ pointer-events: none;
684
+ order: 2;
685
+ }
686
+ @media (-ms-high-contrast: active), (forced-colors: active) {
687
+ .fr-tabs::before {
688
+ border: 1px solid graytext;
689
+ }
690
+ }
691
+ .fr-tabs {
692
+ /**
693
+ * ul : element srollable des boutons
694
+ */
695
+ }
696
+ .fr-tabs__list {
697
+ display: flex;
698
+ align-items: stretch;
699
+ overflow-x: auto;
700
+ width: 100%;
701
+ min-height: 3rem;
702
+ z-index: 1;
703
+ order: 1;
704
+ /**
705
+ * overflow vertical de 4px pour le focus
706
+ */
707
+ margin: -4px 0 -4px;
708
+ padding: 4px 0.75rem;
709
+ }
710
+ .fr-tabs {
711
+ /**
712
+ * Tab button
713
+ */
714
+ }
715
+ .fr-tabs__tab {
716
+ position: relative;
717
+ overflow: visible;
718
+ font-weight: 700;
719
+ margin: 0 0.25rem;
720
+ height: 100%;
721
+ white-space: nowrap;
722
+ background-size: 0 2px, 1px 0, 1px 0, 100% 1px;
723
+ background-repeat: no-repeat, no-repeat, no-repeat, no-repeat;
724
+ background-position: 0 0, 0 calc(100% - 1px), 100% calc(100% - 1px), 100% 100%;
725
+ }
726
+ @media (-ms-high-contrast: active), (forced-colors: active) {
727
+ .fr-tabs__tab {
728
+ border: 1px solid;
729
+ }
730
+ }
731
+ .fr-tabs__tab[aria-selected=true] {
732
+ background-size: 100% 2px, 1px calc(100% - 1px), 1px calc(100% - 1px), 0 1px;
733
+ }
734
+ @media (-ms-high-contrast: active), (forced-colors: active) {
735
+ .fr-tabs__tab[aria-selected=true]:not(:disabled) {
736
+ border: 1px solid highlight;
737
+ border-top: 4px solid highlight;
738
+ border-bottom: 1px solid canvas;
739
+ color: highlight;
740
+ }
741
+ }
742
+ @media (-ms-high-contrast: active) and (-ms-high-contrast: active), (-ms-high-contrast: active) and (forced-colors: active), (forced-colors: active) and (-ms-high-contrast: active), (forced-colors: active) and (forced-colors: active) {
743
+ .fr-tabs__tab[aria-selected=true][class^=fr-icon-]:not(:disabled)::before, .fr-tabs__tab[aria-selected=true][class^=fr-icon-]:not(:disabled)::after, .fr-tabs__tab[aria-selected=true][class*=" fr-icon-"]:not(:disabled)::before, .fr-tabs__tab[aria-selected=true][class*=" fr-icon-"]:not(:disabled)::after, .fr-tabs__tab[aria-selected=true][class^=fr-fi-]:not(:disabled)::before, .fr-tabs__tab[aria-selected=true][class^=fr-fi-]:not(:disabled)::after, .fr-tabs__tab[aria-selected=true][class*=" fr-fi-"]:not(:disabled)::before, .fr-tabs__tab[aria-selected=true][class*=" fr-fi-"]:not(:disabled)::after {
744
+ background-color: highlight;
745
+ }
746
+ }
747
+ .fr-tabs {
748
+ /**
749
+ * Tab Panel
750
+ */
751
+ }
752
+ .fr-tabs__panel {
753
+ --underline-img: linear-gradient(0deg, currentColor, currentColor);
754
+ --ul-type: disc;
755
+ --ol-type: decimal;
756
+ --ul-start: 1rem;
757
+ --ol-start: 1.5rem;
758
+ --xl-block: 0.5rem;
759
+ --li-bottom: 0.25rem;
760
+ --xl-base: 1em;
761
+ --ol-content: counters(li-counter, ".") ".\00a0\00a0";
762
+ display: block;
763
+ order: 3;
764
+ position: relative;
765
+ left: -100%;
766
+ width: 100%;
767
+ height: auto;
768
+ padding: 1rem;
769
+ }
770
+ @media (min-width: 48em) {
771
+ .fr-tabs__panel {
772
+ padding: 2rem;
773
+ }
774
+ }
775
+ .fr-tabs__panel {
776
+ margin-right: -100%;
777
+ flex: 0 0 100%;
778
+ transition: visibility 0.3s, transform 0.3s;
779
+ }
780
+ @media (prefers-reduced-motion: reduce) {
781
+ .fr-tabs__panel {
782
+ transition: none;
783
+ }
784
+ }
785
+ .fr-tabs__panel:focus, .fr-tabs__panel:focus-visible {
786
+ outline-offset: calc(-1rem + 2px);
787
+ }
788
+ @media (min-width: 48em) {
789
+ .fr-tabs__panel:focus, .fr-tabs__panel:focus-visible {
790
+ outline-offset: calc(-2rem + 2px);
791
+ }
792
+ }
793
+ .fr-tabs__panel--direction-end {
794
+ transform: translate(100%);
795
+ }
796
+ .fr-tabs__panel--direction-start {
797
+ transform: translate(-100%);
798
+ }
799
+ .fr-tabs__panel {
800
+ /**
801
+ * Les éléments non sélectionnés sont cachés et rendus innaccessibles au focus
802
+ * Point d'attention : visibility hidden sur le panel et surcharge sur l'élément selected avec visibility visible créé des problèmes dans la gestion du focus en cas d'imbrication d'onglets
803
+ *
804
+ * tabs
805
+ * └─ panel selected
806
+ * └─ panel (visibility hidden, tabindex -1)
807
+ * └─ tabs
808
+ * └─ panel selected (visibility visible tabindex 0)
809
+ * ↑ ce panel est accessible alors que caché par son panel parent
810
+ * solution : visibility hidden seulement sur les éléments non sélectionnés
811
+ **/
812
+ }
813
+ .fr-tabs__panel:not(.fr-tabs__panel--selected) {
814
+ visibility: hidden;
815
+ }
816
+
817
+ /*
818
+ * Ombres ajoutées en Js si le contenu est plus grand que le conteneur
819
+ */
820
+ .fr-tabs__shadow {
821
+ --tabs-list-height: 3rem;
822
+ }
823
+ .fr-tabs__shadow::before {
824
+ content: "";
825
+ display: block;
826
+ position: absolute;
827
+ top: 4px;
828
+ right: 0;
829
+ left: 0;
830
+ z-index: 2;
831
+ box-shadow: inset 0 0 0 0 rgba(22, 22, 22, 0), inset 0 0 0 0 rgba(22, 22, 22, 0);
832
+ height: calc(var(--tabs-list-height)- 8px);
833
+ opacity: 0.8;
834
+ pointer-events: none;
835
+ transition: box-shadow 0.3s;
836
+ }
837
+ .fr-tabs__shadow {
838
+ /**
839
+ * Modifier ombre à gauche
840
+ **/
841
+ }
842
+ .fr-tabs__shadow--left::before {
843
+ box-shadow: inset 2rem 0 1.5rem -2rem #161616, inset 0 0 0 0 rgba(22, 22, 22, 0);
844
+ }
845
+ .fr-tabs__shadow {
846
+ /**
847
+ * Modifier ombre à droite
848
+ **/
849
+ }
850
+ .fr-tabs__shadow--right::before {
851
+ box-shadow: inset 0 0 0 0 rgba(22, 22, 22, 0), inset -2rem 0 1.5rem -2rem #161616;
852
+ }
853
+ .fr-tabs__shadow {
854
+ /**
855
+ * Modifier combinaison ombre à gauche et ombre à droite
856
+ **/
857
+ }
858
+ .fr-tabs__shadow--left.fr-tabs__shadow--right::before {
859
+ box-shadow: inset 2rem 0 1.5rem -2rem #161616, inset -2rem 0 1.5rem -2rem #161616;
860
+ }
861
+
862
+ :root[data-fr-theme=dark] .fr-tabs__shadow::before {
863
+ opacity: 1;
864
+ }
865
+
866
+ .fr-tabs {
867
+ box-shadow: 0 1px 0 0 var(--border-default-grey);
868
+ }
869
+ .fr-tabs::before {
870
+ box-shadow: inset 0 1px 0 0 var(--border-default-grey), inset 1px 0 0 0 var(--border-default-grey), inset -1px 0 0 0 var(--border-default-grey);
871
+ background-color: var(--background-default-grey);
872
+ --idle: transparent;
873
+ --hover: var(--background-default-grey-hover);
874
+ --active: var(--background-default-grey-active);
875
+ }
876
+ .fr-tabs {
877
+ /**
878
+ * Tab button
879
+ */
880
+ }
881
+ .fr-tabs__tab {
882
+ background-image: linear-gradient(0deg, var(--border-default-grey), var(--border-default-grey)), linear-gradient(0deg, var(--border-default-grey), var(--border-default-grey)), linear-gradient(0deg, var(--border-default-grey), var(--border-default-grey)), linear-gradient(0deg, var(--border-default-grey), var(--border-default-grey));
883
+ box-shadow: 0 2px 0 0 var(--background-default-grey);
884
+ }
885
+ .fr-tabs__tab:not([aria-selected=true]) {
886
+ background-color: var(--background-action-low-blue-france);
887
+ --idle: transparent;
888
+ --hover: var(--background-action-low-blue-france-hover);
889
+ --active: var(--background-action-low-blue-france-active);
890
+ color: var(--text-action-high-grey);
891
+ }
892
+ .fr-tabs__tab[aria-selected=true]:not(:disabled) {
893
+ background-image: linear-gradient(0deg, var(--border-active-blue-france), var(--border-active-blue-france)), linear-gradient(0deg, var(--border-default-grey), var(--border-default-grey)), linear-gradient(0deg, var(--border-default-grey), var(--border-default-grey)), linear-gradient(0deg, var(--border-default-grey), var(--border-default-grey));
894
+ background-color: var(--background-default-grey);
895
+ --idle: transparent;
896
+ --hover: var(--background-default-grey-hover);
897
+ --active: var(--background-default-grey-active);
898
+ color: var(--text-active-blue-france);
899
+ }
900
+ .fr-tabs__tab:disabled {
901
+ color: var(--text-disabled-grey);
902
+ background-color: var(--background-disabled-grey);
903
+ --idle: transparent;
904
+ --hover: var(--background-disabled-grey-hover);
905
+ --active: var(--background-disabled-grey-active);
906
+ }
907
+
908
+ :host {
909
+ display: block;
910
+ text-rendering: optimizeLegibility;
911
+ -webkit-font-smoothing: antialiased;
912
+ -moz-osx-font-smoothing: grayscale;
913
+ -webkit-text-size-adjust: 100%;
914
+ font-size: 1rem;
915
+ line-height: 1.5rem;
916
+ background-color: var(--background-default-grey);
917
+ --idle: transparent;
918
+ --hover: var(--background-default-grey-hover);
919
+ --active: var(--background-default-grey-active);
920
+ color: var(--text-default-grey);
921
+ background-color: transparent;
922
+ }
923
+
924
+ .fr-tabs {
925
+ box-sizing: border-box;
926
+ }</style>