@lab-anssi/ui-kit 1.12.4 → 1.14.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 (46) hide show
  1. package/dist/Alerte.svelte +1 -31
  2. package/dist/CentreAide.svelte +1 -31
  3. package/dist/assets/icones/aide.svg +3 -0
  4. package/dist/assets/icones/fleche-droite-blanche.svg +3 -0
  5. package/dist/assets/icones/telecharger.svg +3 -0
  6. package/dist/index.d.ts +2 -0
  7. package/dist/index.js +2 -0
  8. package/dist/lab/ResumePssi.svelte +1 -31
  9. package/dist/lab/blog/BandeauTitre.svelte +152 -0
  10. package/dist/lab/blog/BandeauTitre.svelte.d.ts +22 -0
  11. package/dist/lab/blog/IconeChevronBas.svelte +19 -0
  12. package/dist/lab/blog/IconeChevronBas.svelte.d.ts +25 -0
  13. package/dist/lab/blog/IconeMenuLateral.svelte +12 -0
  14. package/dist/lab/blog/IconeMenuLateral.svelte.d.ts +25 -0
  15. package/dist/lab/blog/PageCrisp.svelte +247 -0
  16. package/dist/lab/blog/PageCrisp.svelte.d.ts +20 -0
  17. package/dist/lab/blog/SommaireBureau.svelte +69 -0
  18. package/dist/lab/blog/SommaireBureau.svelte.d.ts +21 -0
  19. package/dist/lab/blog/SommaireMobile.svelte +111 -0
  20. package/dist/lab/blog/SommaireMobile.svelte.d.ts +21 -0
  21. package/dist/lab/vitrines-produits/briques/Brique.svelte +1 -31
  22. package/dist/lab/vitrines-produits/briques/BriqueContenuADeuxColonnes.svelte +1 -31
  23. package/dist/lab/vitrines-produits/briques/BriqueHero.svelte +2 -31
  24. package/dist/lab/vitrines-produits/briques/BriqueTitreMultimedia.svelte +1 -31
  25. package/dist/lab/vitrines-produits/briques/CarrouselTuiles/CarrouselTuiles.svelte +15 -42
  26. package/dist/lab/vitrines-produits/briques/CarrouselTuiles/IconeFlecheDroite.svelte +1 -31
  27. package/dist/lab/vitrines-produits/briques/CarrouselTuiles/IconeFlecheGauche.svelte +1 -31
  28. package/dist/lab/vitrines-produits/briques/LecteurVideo.svelte +1 -31
  29. package/dist/lab/vitrines-produits/briques/PresentationANSSI.svelte +2 -31
  30. package/dist/lab/vitrines-produits/briques/RejoindreLaCommunaute.svelte +1 -31
  31. package/dist/lab/vitrines-produits/briques/Tuile.svelte +1 -31
  32. package/dist/lab/vitrines-produits/briques/marelle/Etape.svelte +14 -38
  33. package/dist/lab/vitrines-produits/briques/marelle/Marelle.svelte +1 -31
  34. package/dist/lab/vitrines-produits/briques/temoignages/IconeTemoignage.svelte +1 -31
  35. package/dist/lab/vitrines-produits/briques/temoignages/Temoignages.svelte +15 -35
  36. package/dist/mes-services-cyber/bandeau/Bandeau.svelte +1 -31
  37. package/dist/mes-services-cyber/lien/LienDiagnosticCyber.svelte +1 -31
  38. package/dist/pied-de-page/NavigationPiedDePage.svelte +1 -31
  39. package/dist/suite-cyber/navigation/AccueilMSC.svelte +1 -31
  40. package/dist/suite-cyber/navigation/BlocLiens.svelte +1 -31
  41. package/dist/suite-cyber/navigation/Navigation.svelte +1 -31
  42. package/dist/types.d.ts +20 -0
  43. package/dist/types.js +1 -1
  44. package/dist/webcomponents/lab-anssi-ui-kit.iife.js +35 -35
  45. package/dist/webcomponents/lab-anssi-ui-kit.jsx.d.ts +14 -26
  46. package/package.json +2 -2
@@ -0,0 +1,69 @@
1
+ <script>import { createEventDispatcher } from "svelte";
2
+ export let tableDesMatieres;
3
+ const emets = createEventDispatcher();
4
+ const ouvreEntree = (ancre) => {
5
+ emets("ancreOuverte", ancre);
6
+ };
7
+ </script>
8
+
9
+ <div class="sommaire sommaire-deplie">
10
+ <ul>
11
+ {#each tableDesMatieres as entree (entree.id)}
12
+ <li>
13
+ <a href={`#${entree.id}`} on:click={() => ouvreEntree(entree.id)}>
14
+ <!-- eslint-disable-next-line svelte/no-at-html-tags -->
15
+ {@html entree.texte}
16
+ </a>
17
+ </li>
18
+ {/each}
19
+ </ul>
20
+ </div>
21
+
22
+ <style>.sommaire-deplie {
23
+ display: none;
24
+ width: 282px;
25
+ flex: 0 0 auto;
26
+ align-self: flex-start;
27
+ font-family: Marianne, sans-serif;
28
+ }
29
+ @media (min-width: 932px) {
30
+ .sommaire-deplie {
31
+ display: flex;
32
+ flex-direction: column;
33
+ position: sticky;
34
+ top: 0;
35
+ }
36
+ }
37
+ .sommaire-deplie ul {
38
+ list-style-type: none;
39
+ padding: 0;
40
+ margin: 0 0 40px;
41
+ }
42
+ .sommaire-deplie ul li {
43
+ padding-top: 12px;
44
+ padding-bottom: 12px;
45
+ }
46
+ .sommaire-deplie ul li.actif {
47
+ font-weight: bold;
48
+ }
49
+ .sommaire-deplie ul li.actif a {
50
+ color: var(--sommaire-actif-couleur);
51
+ border-left: 2px solid var(--sommaire-actif-indicateur-couleur);
52
+ padding-left: 6px;
53
+ font-size: 1rem;
54
+ font-style: normal;
55
+ font-weight: 700;
56
+ line-height: 1.5rem;
57
+ }
58
+ .sommaire-deplie ul li a {
59
+ color: #161616;
60
+ border-bottom: none;
61
+ text-decoration: none;
62
+ padding-left: 8px;
63
+ display: inline-block;
64
+ }
65
+ .sommaire-deplie span {
66
+ margin-bottom: 16px;
67
+ font-size: 0.85rem;
68
+ line-height: 1.5rem;
69
+ }</style>
@@ -0,0 +1,21 @@
1
+ import { SvelteComponent } from "svelte";
2
+ import type { TableDesMatieres } from "../../types";
3
+ declare const __propDef: {
4
+ props: {
5
+ tableDesMatieres: TableDesMatieres;
6
+ };
7
+ events: {
8
+ ancreOuverte: CustomEvent<string>;
9
+ } & {
10
+ [evt: string]: CustomEvent<any>;
11
+ };
12
+ slots: {};
13
+ exports?: {} | undefined;
14
+ bindings?: string | undefined;
15
+ };
16
+ export type SommaireBureauProps = typeof __propDef.props;
17
+ export type SommaireBureauEvents = typeof __propDef.events;
18
+ export type SommaireBureauSlots = typeof __propDef.slots;
19
+ export default class SommaireBureau extends SvelteComponent<SommaireBureauProps, SommaireBureauEvents, SommaireBureauSlots> {
20
+ }
21
+ export {};
@@ -0,0 +1,111 @@
1
+ <script>import { createEventDispatcher } from "svelte";
2
+ import IconeMenuLateral from "./IconeMenuLateral.svelte";
3
+ import IconeChevronBas from "./IconeChevronBas.svelte";
4
+ export let tableDesMatieres;
5
+ let detailsElement;
6
+ const emets = createEventDispatcher();
7
+ const ouvreEntree = (ancre) => {
8
+ detailsElement.open = false;
9
+ emets("ancreOuverte", ancre);
10
+ };
11
+ </script>
12
+
13
+ <div class="sommaire sommaire-replie">
14
+ <details bind:this={detailsElement}>
15
+ <summary>
16
+ <div class="entete-filtres">
17
+ <IconeMenuLateral />
18
+ <span id="section-active" class="titre-menu">
19
+ {tableDesMatieres[0]?.texte}
20
+ </span>
21
+ <IconeChevronBas />
22
+ </div>
23
+ </summary>
24
+
25
+ <ul>
26
+ {#each tableDesMatieres as entree (entree.id)}
27
+ <li>
28
+ <a href={`#${entree.id}`} on:click={() => ouvreEntree(entree.id)}>
29
+ <!-- eslint-disable-next-line svelte/no-at-html-tags -->
30
+ {@html entree.texte}</a
31
+ >
32
+ </li>
33
+ {/each}
34
+ </ul>
35
+ </details>
36
+ </div>
37
+
38
+ <style>.sommaire-replie {
39
+ border-top: 1px solid #ddd;
40
+ border-bottom: 1px solid #ddd;
41
+ background: white;
42
+ position: sticky;
43
+ top: 0;
44
+ z-index: 2;
45
+ font-family: Marianne, sans-serif;
46
+ }
47
+ @media (min-width: 932px) {
48
+ .sommaire-replie {
49
+ display: none;
50
+ }
51
+ }
52
+ .sommaire-replie:has(details[open]) {
53
+ position: fixed;
54
+ top: 0;
55
+ height: 100vh;
56
+ width: 100%;
57
+ box-sizing: border-box;
58
+ overflow: auto;
59
+ }
60
+ .sommaire-replie details .entete-filtres {
61
+ padding: 12px 16px;
62
+ background: var(--sommaire-mobile-fond);
63
+ color: var(--sommaire-actif-couleur);
64
+ font-size: 1rem;
65
+ font-style: normal;
66
+ font-weight: 500;
67
+ line-height: 1.5rem;
68
+ }
69
+ .sommaire-replie details ul {
70
+ list-style-type: none;
71
+ margin: 0;
72
+ padding: 16px;
73
+ }
74
+ .sommaire-replie details ul li {
75
+ border-bottom: 1px solid #ddd;
76
+ padding-top: 12px;
77
+ padding-bottom: 12px;
78
+ }
79
+ .sommaire-replie details ul li.actif a {
80
+ color: var(--sommaire-actif-couleur);
81
+ border-left: 2px solid var(--sommaire-actif-indicateur-couleur);
82
+ padding-left: 14px;
83
+ border-bottom: none;
84
+ }
85
+ .sommaire-replie details ul li a {
86
+ color: #161616;
87
+ text-decoration: none;
88
+ padding-left: 16px;
89
+ display: inline-block;
90
+ border-bottom: none;
91
+ font-size: 1rem;
92
+ font-weight: 700;
93
+ line-height: 1.5rem;
94
+ }
95
+ .sommaire-replie details[open] summary .entete-filtres :global(.chevron) {
96
+ transform: rotate(180deg);
97
+ }
98
+ .sommaire-replie details summary::marker {
99
+ content: "";
100
+ }
101
+ .sommaire-replie details summary::-webkit-details-marker {
102
+ display: none;
103
+ }
104
+ .sommaire-replie details summary .entete-filtres {
105
+ display: flex;
106
+ align-items: center;
107
+ gap: 8px;
108
+ }
109
+ .sommaire-replie details .titre-menu {
110
+ flex-grow: 1;
111
+ }</style>
@@ -0,0 +1,21 @@
1
+ import { SvelteComponent } from "svelte";
2
+ import type { TableDesMatieres } from "../../types";
3
+ declare const __propDef: {
4
+ props: {
5
+ tableDesMatieres: TableDesMatieres;
6
+ };
7
+ events: {
8
+ ancreOuverte: CustomEvent<string>;
9
+ } & {
10
+ [evt: string]: CustomEvent<any>;
11
+ };
12
+ slots: {};
13
+ exports?: {} | undefined;
14
+ bindings?: string | undefined;
15
+ };
16
+ export type SommaireMobileProps = typeof __propDef.props;
17
+ export type SommaireMobileEvents = typeof __propDef.events;
18
+ export type SommaireMobileSlots = typeof __propDef.slots;
19
+ export default class SommaireMobile extends SvelteComponent<SommaireMobileProps, SommaireMobileEvents, SommaireMobileSlots> {
20
+ }
21
+ export {};
@@ -13,37 +13,7 @@ export let sansMargeLaterale = false;
13
13
  </div>
14
14
  </section>
15
15
 
16
- <style>.visible-tablette {
17
- display: none !important;
18
- }
19
- @media (min-width: 576px) {
20
- .visible-tablette {
21
- display: unset !important;
22
- }
23
- }
24
-
25
- @media (min-width: 576px) {
26
- .invisible-tablette {
27
- display: none !important;
28
- }
29
- }
30
-
31
- .visible-desktop {
32
- display: none !important;
33
- }
34
- @media (min-width: 932px) {
35
- .visible-desktop {
36
- display: unset !important;
37
- }
38
- }
39
-
40
- @media (min-width: 932px) {
41
- .invisible-desktop {
42
- display: none !important;
43
- }
44
- }
45
-
46
- section {
16
+ <style>section {
47
17
  font-family: Marianne;
48
18
  padding: 48px 16px;
49
19
  box-sizing: border-box;
@@ -38,37 +38,7 @@ export let illustration;
38
38
  </div>
39
39
  </Brique>
40
40
 
41
- <style>.visible-tablette {
42
- display: none !important;
43
- }
44
- @media (min-width: 576px) {
45
- .visible-tablette {
46
- display: unset !important;
47
- }
48
- }
49
-
50
- @media (min-width: 576px) {
51
- .invisible-tablette {
52
- display: none !important;
53
- }
54
- }
55
-
56
- .visible-desktop {
57
- display: none !important;
58
- }
59
- @media (min-width: 932px) {
60
- .visible-desktop {
61
- display: unset !important;
62
- }
63
- }
64
-
65
- @media (min-width: 932px) {
66
- .invisible-desktop {
67
- display: none !important;
68
- }
69
- }
70
-
71
- .grille-contenu {
41
+ <style>.grille-contenu {
72
42
  display: grid;
73
43
  grid-template-columns: 1fr;
74
44
  grid-template-areas: "illustration" "contenu";
@@ -79,37 +79,7 @@ export let partenaires = [];
79
79
  </div>
80
80
  </Brique>
81
81
 
82
- <style>.visible-tablette {
83
- display: none !important;
84
- }
85
- @media (min-width: 576px) {
86
- .visible-tablette {
87
- display: unset !important;
88
- }
89
- }
90
-
91
- @media (min-width: 576px) {
92
- .invisible-tablette {
93
- display: none !important;
94
- }
95
- }
96
-
97
- .visible-desktop {
98
- display: none !important;
99
- }
100
- @media (min-width: 932px) {
101
- .visible-desktop {
102
- display: unset !important;
103
- }
104
- }
105
-
106
- @media (min-width: 932px) {
107
- .invisible-desktop {
108
- display: none !important;
109
- }
110
- }
111
-
112
- .hero {
82
+ <style>.hero {
113
83
  display: grid;
114
84
  grid-template-columns: 1fr;
115
85
  grid-template-areas: "contenu" "image" "partenaires";
@@ -239,6 +209,7 @@ export let partenaires = [];
239
209
  line-height: 24px;
240
210
  border-radius: 4px;
241
211
  display: flex;
212
+ justify-content: center;
242
213
  align-items: center;
243
214
  gap: 8px;
244
215
  }
@@ -27,37 +27,7 @@ export let multimedia;
27
27
  </div>
28
28
  </Brique>
29
29
 
30
- <style>.visible-tablette {
31
- display: none !important;
32
- }
33
- @media (min-width: 576px) {
34
- .visible-tablette {
35
- display: unset !important;
36
- }
37
- }
38
-
39
- @media (min-width: 576px) {
40
- .invisible-tablette {
41
- display: none !important;
42
- }
43
- }
44
-
45
- .visible-desktop {
46
- display: none !important;
47
- }
48
- @media (min-width: 932px) {
49
- .visible-desktop {
50
- display: unset !important;
51
- }
52
- }
53
-
54
- @media (min-width: 932px) {
55
- .invisible-desktop {
56
- display: none !important;
57
- }
58
- }
59
-
60
- .bloc-multimedia {
30
+ <style>.bloc-multimedia {
61
31
  display: flex;
62
32
  flex-direction: column;
63
33
  align-items: center;
@@ -51,37 +51,7 @@ const suivant = () => versDirection(1);
51
51
  </Brique>
52
52
  </div>
53
53
 
54
- <style>.visible-tablette {
55
- display: none !important;
56
- }
57
- @media (min-width: 576px) {
58
- .visible-tablette {
59
- display: unset !important;
60
- }
61
- }
62
-
63
- @media (min-width: 576px) {
64
- .invisible-tablette {
65
- display: none !important;
66
- }
67
- }
68
-
69
- .visible-desktop {
70
- display: none !important;
71
- }
72
- @media (min-width: 932px) {
73
- .visible-desktop {
74
- display: unset !important;
75
- }
76
- }
77
-
78
- @media (min-width: 932px) {
79
- .invisible-desktop {
80
- display: none !important;
81
- }
82
- }
83
-
84
- .carrousel-tuiles {
54
+ <style>.carrousel-tuiles {
85
55
  --espacement: 16px;
86
56
  padding: 0;
87
57
  }
@@ -114,6 +84,7 @@ const suivant = () => versDirection(1);
114
84
  }
115
85
 
116
86
  .conteneur-actions button {
87
+ position: relative;
117
88
  background: none;
118
89
  border: none;
119
90
  color: var(--brique-carrousel-bouton-action-texte-couleur);
@@ -124,7 +95,19 @@ const suivant = () => versDirection(1);
124
95
  display: flex;
125
96
  align-items: center;
126
97
  gap: 8px;
127
- box-shadow: inset 0 -1px 0 var(--brique-carrousel-bouton-action-texte-couleur);
98
+ }
99
+ .conteneur-actions button:hover:after {
100
+ bottom: -1px;
101
+ height: 2px;
102
+ }
103
+ .conteneur-actions button:after {
104
+ position: absolute;
105
+ left: 0;
106
+ bottom: 0;
107
+ content: "";
108
+ width: 100%;
109
+ height: 1px;
110
+ background: var(--brique-carrousel-bouton-action-texte-couleur);
128
111
  }
129
112
 
130
113
  .conteneur-actions .precedent > .icone,
@@ -133,10 +116,6 @@ const suivant = () => versDirection(1);
133
116
  align-items: center;
134
117
  }
135
118
 
136
- .conteneur-actions button:hover {
137
- box-shadow: inset 0 -2px 0 var(--brique-carrousel-bouton-action-texte-couleur);
138
- }
139
-
140
119
  @media (min-width: 932px) {
141
120
  .carrousel-tuiles {
142
121
  --espacement: 24px;
@@ -144,10 +123,4 @@ const suivant = () => versDirection(1);
144
123
  .carrousel-tuiles .conteneur-actions {
145
124
  display: none;
146
125
  }
147
- .carrousel-tuiles .tuile-presentation:first-of-type {
148
- margin-left: 0;
149
- }
150
- .carrousel-tuiles .tuile-presentation:last-of-type {
151
- margin-right: 0;
152
- }
153
126
  }</style>
@@ -7,37 +7,7 @@
7
7
  />
8
8
  </svg>
9
9
 
10
- <style>.visible-tablette {
11
- display: none !important;
12
- }
13
- @media (min-width: 576px) {
14
- .visible-tablette {
15
- display: unset !important;
16
- }
17
- }
18
-
19
- @media (min-width: 576px) {
20
- .invisible-tablette {
21
- display: none !important;
22
- }
23
- }
24
-
25
- .visible-desktop {
26
- display: none !important;
27
- }
28
- @media (min-width: 932px) {
29
- .visible-desktop {
30
- display: unset !important;
31
- }
32
- }
33
-
34
- @media (min-width: 932px) {
35
- .invisible-desktop {
36
- display: none !important;
37
- }
38
- }
39
-
40
- svg {
10
+ <style>svg {
41
11
  transform: rotate(180deg);
42
12
  }
43
13
 
@@ -7,36 +7,6 @@
7
7
  />
8
8
  </svg>
9
9
 
10
- <style>.visible-tablette {
11
- display: none !important;
12
- }
13
- @media (min-width: 576px) {
14
- .visible-tablette {
15
- display: unset !important;
16
- }
17
- }
18
-
19
- @media (min-width: 576px) {
20
- .invisible-tablette {
21
- display: none !important;
22
- }
23
- }
24
-
25
- .visible-desktop {
26
- display: none !important;
27
- }
28
- @media (min-width: 932px) {
29
- .visible-desktop {
30
- display: unset !important;
31
- }
32
- }
33
-
34
- @media (min-width: 932px) {
35
- .invisible-desktop {
36
- display: none !important;
37
- }
38
- }
39
-
40
- svg path {
10
+ <style>svg path {
41
11
  fill: var(--brique-carrousel-bouton-action-texte-couleur);
42
12
  }</style>
@@ -10,37 +10,7 @@ export let classe = "";
10
10
  Votre navigateur ne supporte pas la fonctionnalité de lecture de vidéos.
11
11
  </video>
12
12
 
13
- <style>.visible-tablette {
14
- display: none !important;
15
- }
16
- @media (min-width: 576px) {
17
- .visible-tablette {
18
- display: unset !important;
19
- }
20
- }
21
-
22
- @media (min-width: 576px) {
23
- .invisible-tablette {
24
- display: none !important;
25
- }
26
- }
27
-
28
- .visible-desktop {
29
- display: none !important;
30
- }
31
- @media (min-width: 932px) {
32
- .visible-desktop {
33
- display: unset !important;
34
- }
35
- }
36
-
37
- @media (min-width: 932px) {
38
- .invisible-desktop {
39
- display: none !important;
40
- }
41
- }
42
-
43
- video {
13
+ <style>video {
44
14
  width: 100%;
45
15
  max-width: 792px;
46
16
  max-height: 446px;
@@ -36,37 +36,7 @@ import LienExterne from "../../icones/LienExterne.svelte";
36
36
  </div>
37
37
  </Brique>
38
38
 
39
- <style>.visible-tablette {
40
- display: none !important;
41
- }
42
- @media (min-width: 576px) {
43
- .visible-tablette {
44
- display: unset !important;
45
- }
46
- }
47
-
48
- @media (min-width: 576px) {
49
- .invisible-tablette {
50
- display: none !important;
51
- }
52
- }
53
-
54
- .visible-desktop {
55
- display: none !important;
56
- }
57
- @media (min-width: 932px) {
58
- .visible-desktop {
59
- display: unset !important;
60
- }
61
- }
62
-
63
- @media (min-width: 932px) {
64
- .invisible-desktop {
65
- display: none !important;
66
- }
67
- }
68
-
69
- .presentation-anssi {
39
+ <style>.presentation-anssi {
70
40
  color: #3a3a3a;
71
41
  display: grid;
72
42
  grid-template-columns: 1fr;
@@ -140,6 +110,7 @@ import LienExterne from "../../icones/LienExterne.svelte";
140
110
  font-family: Marianne, sans-serif;
141
111
  padding: 8px 16px;
142
112
  display: flex;
113
+ justify-content: center;
143
114
  align-items: center;
144
115
  gap: 8px;
145
116
  text-align: center;
@@ -43,37 +43,7 @@ export let illustration;
43
43
  </div>
44
44
  </Brique>
45
45
 
46
- <style>.visible-tablette {
47
- display: none !important;
48
- }
49
- @media (min-width: 576px) {
50
- .visible-tablette {
51
- display: unset !important;
52
- }
53
- }
54
-
55
- @media (min-width: 576px) {
56
- .invisible-tablette {
57
- display: none !important;
58
- }
59
- }
60
-
61
- .visible-desktop {
62
- display: none !important;
63
- }
64
- @media (min-width: 932px) {
65
- .visible-desktop {
66
- display: unset !important;
67
- }
68
- }
69
-
70
- @media (min-width: 932px) {
71
- .invisible-desktop {
72
- display: none !important;
73
- }
74
- }
75
-
76
- .grille-contenu {
46
+ <style>.grille-contenu {
77
47
  display: grid;
78
48
  grid-template-columns: 1fr;
79
49
  grid-template-areas: "contenu" "illustration" "action";