@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,296 @@
1
+ <svelte:options
2
+ customElement={{
3
+ tag: "lab-anssi-bouton-suite-cyber-navigation",
4
+ props: {
5
+ sourceUtm: { attribute: "source-utm", type: "String" },
6
+ },
7
+ extend: withIconsStyleSheet,
8
+ }}
9
+ />
10
+
11
+ <script lang="ts">import { srcAsset } from "../../assets/assets.js";
12
+ import { slide } from "svelte/transition";
13
+ import { withIconsStyleSheet } from "../../utilitaires";
14
+ import DsfrButton from "../../dsfr/DsfrButton.svelte";
15
+ import DsfrLink from "../../dsfr/DsfrLink.svelte";
16
+ import AccueilSuiteCyber from "./AccueilSuiteCyber.svelte";
17
+ import LiensSuiteCyber from "./LiensSuiteCyber.svelte";
18
+ const gauffre = srcAsset("/icones/bouton-gauffre.svg");
19
+ const logoCERTFR = srcAsset("/icones/CERT-FR.svg");
20
+ const logoMSS = srcAsset("/icones/MSS.svg");
21
+ const logoMAC = srcAsset("/icones/MAC.svg");
22
+ let { sourceUtm } = $props();
23
+ let estOuvert = $state(false);
24
+ $effect(() => {
25
+ $host()?.toggleAttribute("data-open", estOuvert);
26
+ });
27
+ </script>
28
+
29
+ <div class="suite-cyber">
30
+ <div class="navigation">
31
+ <button
32
+ class={["bouton-suite-cyber-mobile", { active: estOuvert }]}
33
+ aria-expanded={estOuvert}
34
+ onclick={() => {
35
+ estOuvert = !estOuvert;
36
+ }}
37
+ >
38
+ <img src={gauffre} alt="La Suite cyber" />
39
+ <span class="sr-only">La Suite cyber</span>
40
+ </button>
41
+
42
+ <DsfrButton
43
+ kind="tertiary-no-outline"
44
+ class="bouton-suite-cyber-desktop"
45
+ size="sm"
46
+ expandable
47
+ onclick={() => {
48
+ estOuvert = !estOuvert;
49
+ }}
50
+ aria-expanded={estOuvert}
51
+ data-themeable="false"
52
+ >
53
+ <span class="contenu-bouton">
54
+ <svg
55
+ aria-hidden="true"
56
+ width="16"
57
+ height="16"
58
+ viewBox="0 0 16 16"
59
+ fill="none"
60
+ xmlns="http://www.w3.org/2000/svg"
61
+ >
62
+ <path
63
+ d="M4.66683 2.99992C4.66683 3.91992 3.92016 4.66659 3.00016 4.66659C2.08016 4.66659 1.3335 3.91992 1.3335 2.99992C1.3335 2.07992 2.08016 1.33325 3.00016 1.33325C3.92016 1.33325 4.66683 2.07992 4.66683 2.99992ZM8.00016 1.33325C7.08016 1.33325 6.3335 2.07992 6.3335 2.99992C6.3335 3.91992 7.08016 4.66659 8.00016 4.66659C8.92016 4.66659 9.66683 3.91992 9.66683 2.99992C9.66683 2.07992 8.92016 1.33325 8.00016 1.33325ZM13.0002 6.33325C12.0802 6.33325 11.3335 7.07992 11.3335 7.99992C11.3335 8.91992 12.0802 9.66658 13.0002 9.66658C13.9202 9.66658 14.6668 8.91992 14.6668 7.99992C14.6668 7.07992 13.9202 6.33325 13.0002 6.33325ZM8.00016 6.33325C7.08016 6.33325 6.3335 7.07992 6.3335 7.99992C6.3335 8.91992 7.08016 9.66658 8.00016 9.66658C8.92016 9.66658 9.66683 8.91992 9.66683 7.99992C9.66683 7.07992 8.92016 6.33325 8.00016 6.33325ZM13.0002 11.3333C12.0802 11.3333 11.3335 12.0799 11.3335 12.9999C11.3335 13.9199 12.0802 14.6666 13.0002 14.6666C13.9202 14.6666 14.6668 13.9199 14.6668 12.9999C14.6668 12.0799 13.9202 11.3333 13.0002 11.3333ZM8.00016 11.3333C7.08016 11.3333 6.3335 12.0799 6.3335 12.9999C6.3335 13.9199 7.08016 14.6666 8.00016 14.6666C8.92016 14.6666 9.66683 13.9199 9.66683 12.9999C9.66683 12.0799 8.92016 11.3333 8.00016 11.3333ZM13.0002 1.33325C12.0802 1.33325 11.3335 2.07992 11.3335 2.99992C11.3335 3.91992 12.0802 4.66659 13.0002 4.66659C13.9202 4.66659 14.6668 3.91992 14.6668 2.99992C14.6668 2.07992 13.9202 1.33325 13.0002 1.33325ZM3.00016 6.33325C2.08016 6.33325 1.3335 7.07992 1.3335 7.99992C1.3335 8.91992 2.08016 9.66658 3.00016 9.66658C3.92016 9.66658 4.66683 8.91992 4.66683 7.99992C4.66683 7.07992 3.92016 6.33325 3.00016 6.33325ZM3.00016 11.3333C2.08016 11.3333 1.3335 12.0799 1.3335 12.9999C1.3335 13.9199 2.08016 14.6666 3.00016 14.6666C3.92016 14.6666 4.66683 13.9199 4.66683 12.9999C4.66683 12.0799 3.92016 11.3333 3.00016 11.3333Z"
64
+ fill="currentColor"
65
+ />
66
+ </svg>
67
+ <span class="texte-bouton">La Suite cyber</span>
68
+ <span
69
+ class={["fr-icon", estOuvert ? "fr-icon-arrow-up-s-line" : "fr-icon-arrow-down-s-line"]}
70
+ aria-hidden="true"
71
+ ></span>
72
+ </span>
73
+ </DsfrButton>
74
+ </div>
75
+
76
+ {#if estOuvert}
77
+ <div class="contenu" transition:slide>
78
+ <div class="fermeture">
79
+ <DsfrButton label="Fermer" preset="close" onclick={() => (estOuvert = false)} />
80
+ </div>
81
+
82
+ <AccueilSuiteCyber service={sourceUtm} />
83
+
84
+ <div class="services-anssi">
85
+ <LiensSuiteCyber
86
+ titre="S'informer"
87
+ services={[
88
+ {
89
+ nom: "Le portail du CERT-FR",
90
+ lien: `https://www.cert.ssi.gouv.fr?utm_campaign=suite-cyber&utm_source=${sourceUtm}`,
91
+ icone: logoCERTFR,
92
+ classeTracking: "cert-fr",
93
+ },
94
+ ]}
95
+ />
96
+ <LiensSuiteCyber
97
+ titre="Piloter"
98
+ services={[
99
+ {
100
+ nom: "MonServiceSécurisé",
101
+ lien: `https://monservicesecurise.cyber.gouv.fr?utm_campaign=suite-cyber&utm_source=${sourceUtm}`,
102
+ icone: logoMSS,
103
+ labels: ["Entités publiques"],
104
+ classeTracking: "mss",
105
+ },
106
+ ]}
107
+ />
108
+ <LiensSuiteCyber
109
+ titre="Accompagner"
110
+ services={[
111
+ {
112
+ nom: "MonAideCyber",
113
+ lien: `https://monaide.cyber.gouv.fr?utm_campaign=suite-cyber&utm_source=${sourceUtm}`,
114
+ icone: logoMAC,
115
+ classeTracking: "mac",
116
+ },
117
+ ]}
118
+ />
119
+ </div>
120
+
121
+ <div class="acces-anssi">
122
+ <DsfrLink
123
+ label="Accéder au site de l'ANSSI"
124
+ href={`https://cyber.gouv.fr?utm_campaign=suite-cyber&utm_source=${sourceUtm}`}
125
+ blank
126
+ neutral
127
+ />
128
+ </div>
129
+ </div>
130
+ {/if}
131
+ </div>
132
+
133
+ <style>[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 {
134
+ flex: 0 0 auto;
135
+ display: inline-block;
136
+ vertical-align: calc((0.75em - var(--icon-size)) * 0.5);
137
+ background-color: currentColor;
138
+ width: var(--icon-size);
139
+ height: var(--icon-size);
140
+ -webkit-mask-size: 100% 100%;
141
+ mask-size: 100% 100%;
142
+ }
143
+ [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 {
144
+ --icon-size: 1.5rem;
145
+ }
146
+ [class^=fr-icon-]::before, [class*=" fr-icon-"]::before, [class^=fr-fi-]::before, [class*=" fr-fi-"]::before {
147
+ content: "";
148
+ }
149
+
150
+ @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) {
151
+ [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 {
152
+ forced-color-adjust: none;
153
+ background-color: canvastext;
154
+ }
155
+ }
156
+ @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) {
157
+ 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 {
158
+ background-color: buttontext;
159
+ }
160
+ }
161
+ @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) {
162
+ 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 {
163
+ background-color: linktext;
164
+ }
165
+ }
166
+ @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) {
167
+ 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 {
168
+ background-color: graytext;
169
+ }
170
+ }
171
+ .fr-icon--xs::before, .fr-icon--xs::after {
172
+ --icon-size: 0.75rem;
173
+ }
174
+ .fr-icon--sm::before, .fr-icon--sm::after {
175
+ --icon-size: 1rem;
176
+ }
177
+ .fr-icon--md::before, .fr-icon--md::after {
178
+ --icon-size: 1.5rem;
179
+ }
180
+ .fr-icon--lg::before, .fr-icon--lg::after {
181
+ --icon-size: 2rem;
182
+ }
183
+
184
+ @media (min-width: 992px) {
185
+ .suite-cyber {
186
+ position: relative;
187
+ }
188
+ }
189
+
190
+ .contenu-bouton {
191
+ display: flex;
192
+ align-items: center;
193
+ justify-content: center;
194
+ gap: 0.5rem;
195
+ white-space: nowrap;
196
+ }
197
+ .contenu-bouton svg {
198
+ width: 1rem;
199
+ height: 1rem;
200
+ }
201
+ .contenu-bouton .fr-icon::before {
202
+ --icon-size: 1rem;
203
+ }
204
+
205
+ .contenu {
206
+ display: flex;
207
+ flex-direction: column;
208
+ background-color: var(--background-overlap-grey);
209
+ width: 100vw;
210
+ height: 100vh;
211
+ padding-top: 0.5rem;
212
+ position: fixed;
213
+ top: 0;
214
+ left: 0;
215
+ overflow-y: scroll !important;
216
+ overflow-x: hidden;
217
+ z-index: var(--suite-cyber-z-index, 1000);
218
+ text-align: left;
219
+ }
220
+ @media (min-width: 992px) {
221
+ .contenu {
222
+ border-top: 1px solid var(--border-open-blue-france);
223
+ position: absolute;
224
+ top: 2rem;
225
+ right: 0;
226
+ left: unset;
227
+ width: 21.25rem;
228
+ height: 35rem;
229
+ box-shadow: 0px 4px 12px 0px rgba(0, 0, 18, 0.16);
230
+ }
231
+ }
232
+
233
+ .fermeture {
234
+ padding-top: 0.5rem;
235
+ padding-right: 1rem;
236
+ }
237
+ @media (min-width: 992px) {
238
+ .fermeture {
239
+ display: none;
240
+ }
241
+ }
242
+
243
+ .services-anssi {
244
+ padding: 12px 16px 0px;
245
+ }
246
+
247
+ .acces-anssi {
248
+ font-size: 0.75rem;
249
+ line-height: 1.25rem;
250
+ color: var(--text-mention-grey);
251
+ padding: 1rem;
252
+ }
253
+
254
+ .bouton-suite-cyber-mobile {
255
+ display: flex;
256
+ border: none;
257
+ padding: 8px;
258
+ justify-content: center;
259
+ align-items: center;
260
+ color: #000091;
261
+ font-size: 14px;
262
+ font-weight: 500;
263
+ line-height: 24px;
264
+ cursor: pointer;
265
+ gap: 8px;
266
+ background: white;
267
+ }
268
+ .bouton-suite-cyber-mobile:active, .bouton-suite-cyber-mobile.active {
269
+ background: rgba(0, 0, 0, 0.08);
270
+ }
271
+ .bouton-suite-cyber-mobile:hover {
272
+ background: rgba(0, 0, 0, 0.04);
273
+ }
274
+ @media (min-width: 992px) {
275
+ .bouton-suite-cyber-mobile {
276
+ display: none;
277
+ }
278
+ }
279
+
280
+ @media (max-width: 991px) {
281
+ :global(.bouton-suite-cyber-desktop) {
282
+ display: none !important;
283
+ }
284
+ }
285
+
286
+ .sr-only {
287
+ position: absolute;
288
+ width: 1px;
289
+ height: 1px;
290
+ padding: 0;
291
+ margin: -1px;
292
+ overflow: hidden;
293
+ clip: rect(0, 0, 0, 0);
294
+ white-space: nowrap;
295
+ border-width: 0;
296
+ }</style>
@@ -0,0 +1,6 @@
1
+ interface Props {
2
+ sourceUtm?: string;
3
+ }
4
+ declare const SuiteCyber: import("svelte").Component<Props, {}, "">;
5
+ type SuiteCyber = ReturnType<typeof SuiteCyber>;
6
+ export default SuiteCyber;
@@ -0,0 +1,50 @@
1
+ <script lang="ts">let { variation = "primaire", sansMargeHaute = false, sansMargeLaterale = false, children } = $props();
2
+ </script>
3
+
4
+ <section
5
+ class={variation}
6
+ class:sans-marge-haute={sansMargeHaute}
7
+ class:sans-marge-laterale={sansMargeLaterale}
8
+ >
9
+ <div class="contenu-brique">
10
+ {@render children?.()}
11
+ </div>
12
+ </section>
13
+
14
+ <style>section {
15
+ padding: var(--padding-section, 48px 16px);
16
+ box-sizing: border-box;
17
+ text-align: left;
18
+ color: white;
19
+ }
20
+ section.sans-marge-haute {
21
+ padding-top: 0;
22
+ }
23
+ section.sans-marge-laterale {
24
+ padding-left: 0;
25
+ padding-right: 0;
26
+ }
27
+ @media (min-width: 576px) {
28
+ section {
29
+ padding: var(--padding-section, 72px 24px);
30
+ }
31
+ }
32
+ @media (min-width: 932px) {
33
+ section {
34
+ padding: var(--padding-section, 48px 24px);
35
+ }
36
+ }
37
+ section.primaire {
38
+ background: var(--brique-background-primaire);
39
+ }
40
+ section.transparent {
41
+ background: none;
42
+ }
43
+ section.secondaire {
44
+ background: var(--brique-background-secondaire);
45
+ }
46
+
47
+ .contenu-brique {
48
+ max-width: 1200px;
49
+ margin: 0 auto;
50
+ }</style>
@@ -0,0 +1,9 @@
1
+ interface Props {
2
+ variation?: "primaire" | "transparent" | "secondaire";
3
+ sansMargeHaute?: boolean;
4
+ sansMargeLaterale?: boolean;
5
+ children?: import("svelte").Snippet;
6
+ }
7
+ declare const Brique: import("svelte").Component<Props, {}, "">;
8
+ type Brique = ReturnType<typeof Brique>;
9
+ export default Brique;
@@ -0,0 +1,144 @@
1
+ <svelte:options
2
+ customElement={{
3
+ tag: "lab-anssi-brique-contenu-a-deux-colonnes",
4
+ props: {
5
+ titre: { reflect: false, type: "String", attribute: "titre" },
6
+ paragraphe: { reflect: false, type: "String", attribute: "paragraphe" },
7
+ action: { reflect: false, type: "Object", attribute: "action" },
8
+ ordre: { reflect: false, type: "String", attribute: "ordre" },
9
+ illustration: { reflect: false, type: "Object", attribute: "illustration" },
10
+ },
11
+ }}
12
+ />
13
+
14
+ <script lang="ts">import Brique from "./Brique.svelte";
15
+ let { titre = undefined, paragraphe = undefined, action = undefined, ordre = "texte-gauche", illustration } = $props();
16
+ </script>
17
+
18
+ <Brique variation="primaire">
19
+ <div class={`grille-contenu ${ordre}`}>
20
+ <div class="illustration">
21
+ <img src={illustration.lien} alt={illustration.alt} />
22
+ </div>
23
+ <div class="contenu">
24
+ <slot name="titre"><h2>{titre}</h2></slot>
25
+ <slot name="paragraphe"><p>{paragraphe}</p></slot>
26
+ <div class="action">
27
+ {#if action}
28
+ <a role="button" href={action.lien} target="_blank">
29
+ {action.titre}
30
+ </a>
31
+ {/if}
32
+ </div>
33
+ </div>
34
+ </div>
35
+ </Brique>
36
+
37
+ <style>.grille-contenu {
38
+ display: grid;
39
+ grid-template-columns: 1fr;
40
+ grid-template-areas: "illustration" "contenu";
41
+ gap: 32px;
42
+ }
43
+ @media (min-width: 932px) {
44
+ .grille-contenu {
45
+ grid-template-columns: 1fr 1fr;
46
+ grid-template-areas: "contenu illustration";
47
+ column-gap: 24px;
48
+ }
49
+ .grille-contenu.texte-gauche {
50
+ grid-template-areas: "contenu illustration";
51
+ }
52
+ .grille-contenu.texte-droite {
53
+ grid-template-areas: "illustration contenu";
54
+ }
55
+ }
56
+ .grille-contenu .contenu {
57
+ grid-area: contenu;
58
+ display: flex;
59
+ flex-direction: column;
60
+ row-gap: 8px;
61
+ }
62
+ @media (min-width: 932px) {
63
+ .grille-contenu .contenu {
64
+ justify-content: center;
65
+ }
66
+ }
67
+ .grille-contenu .contenu h2 {
68
+ font-size: 1.75rem;
69
+ line-height: 2.25rem;
70
+ font-weight: 700;
71
+ word-break: break-word;
72
+ margin: 0;
73
+ }
74
+ .grille-contenu .contenu p {
75
+ font-size: 1rem;
76
+ font-weight: 400;
77
+ line-height: 1.5rem;
78
+ margin: 0;
79
+ }
80
+ .grille-contenu .contenu .action a[role=button] {
81
+ display: flex;
82
+ justify-content: center;
83
+ text-decoration: none;
84
+ padding: 8px 16px;
85
+ max-width: 100%;
86
+ text-align: center;
87
+ font-weight: 500;
88
+ font-size: 1rem;
89
+ line-height: 24px;
90
+ border-radius: 4px;
91
+ background-color: var(--brique-contenu-deux-colonnes-action-bouton-background);
92
+ color: var(--brique-contenu-deux-colonnes-action-bouton-texte);
93
+ border: none;
94
+ cursor: pointer;
95
+ }
96
+ .grille-contenu .contenu .action a[role=button]:active {
97
+ background-color: var(--brique-contenu-deux-colonnes-action-bouton-background-active);
98
+ box-shadow: none;
99
+ border: none;
100
+ }
101
+ .grille-contenu .contenu .action a[role=button]:hover {
102
+ background-color: var(--brique-contenu-deux-colonnes-action-bouton-background-hover);
103
+ box-shadow: none;
104
+ border: none;
105
+ }
106
+ @media (min-width: 576px) {
107
+ .grille-contenu .contenu .action a[role=button] {
108
+ max-width: unset;
109
+ width: fit-content;
110
+ }
111
+ }
112
+ .grille-contenu .contenu .action {
113
+ margin-top: 32px;
114
+ }
115
+ .grille-contenu .illustration {
116
+ grid-area: illustration;
117
+ }
118
+ .grille-contenu .illustration img {
119
+ width: 100%;
120
+ max-height: 250px;
121
+ }
122
+ @media (min-width: 576px) {
123
+ .grille-contenu .illustration img {
124
+ max-height: none;
125
+ }
126
+ }
127
+ @media (min-width: 932px) {
128
+ .grille-contenu .illustration img {
129
+ max-height: 330px;
130
+ }
131
+ }
132
+ .grille-contenu :global(::slotted([slot="titre"])) {
133
+ font-size: 1.75rem;
134
+ line-height: 2.25rem;
135
+ font-weight: 700;
136
+ word-break: break-word;
137
+ margin: 0;
138
+ }
139
+ .grille-contenu :global(::slotted([slot="paragraphe"])) {
140
+ font-size: 1rem;
141
+ font-weight: 400;
142
+ line-height: 1.5rem;
143
+ margin: 0;
144
+ }</style>
@@ -0,0 +1,29 @@
1
+ import type { Action, Image } from "../../../types";
2
+ interface Props {
3
+ titre?: string;
4
+ paragraphe?: string;
5
+ action?: Action | undefined;
6
+ ordre?: "texte-gauche" | "texte-droite";
7
+ illustration: Image;
8
+ }
9
+ interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string, any> = any, Events extends Record<string, any> = any, Slots extends Record<string, any> = any, Exports = {}, Bindings = string> {
10
+ new (options: import('svelte').ComponentConstructorOptions<Props>): import('svelte').SvelteComponent<Props, Events, Slots> & {
11
+ $$bindings?: Bindings;
12
+ } & Exports;
13
+ (internal: unknown, props: Props & {
14
+ $$events?: Events;
15
+ $$slots?: Slots;
16
+ }): Exports & {
17
+ $set?: any;
18
+ $on?: any;
19
+ };
20
+ z_$$bindings?: Bindings;
21
+ }
22
+ declare const BriqueContenuADeuxColonnes: $$__sveltets_2_IsomorphicComponent<Props, {
23
+ [evt: string]: CustomEvent<any>;
24
+ }, {
25
+ titre: {};
26
+ paragraphe: {};
27
+ }, {}, "">;
28
+ type BriqueContenuADeuxColonnes = InstanceType<typeof BriqueContenuADeuxColonnes>;
29
+ export default BriqueContenuADeuxColonnes;