@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.
- package/dist/Alerte.svelte +1 -31
- package/dist/CentreAide.svelte +1 -31
- package/dist/assets/icones/aide.svg +3 -0
- package/dist/assets/icones/fleche-droite-blanche.svg +3 -0
- package/dist/assets/icones/telecharger.svg +3 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +2 -0
- package/dist/lab/ResumePssi.svelte +1 -31
- package/dist/lab/blog/BandeauTitre.svelte +152 -0
- package/dist/lab/blog/BandeauTitre.svelte.d.ts +22 -0
- package/dist/lab/blog/IconeChevronBas.svelte +19 -0
- package/dist/lab/blog/IconeChevronBas.svelte.d.ts +25 -0
- package/dist/lab/blog/IconeMenuLateral.svelte +12 -0
- package/dist/lab/blog/IconeMenuLateral.svelte.d.ts +25 -0
- package/dist/lab/blog/PageCrisp.svelte +247 -0
- package/dist/lab/blog/PageCrisp.svelte.d.ts +20 -0
- package/dist/lab/blog/SommaireBureau.svelte +69 -0
- package/dist/lab/blog/SommaireBureau.svelte.d.ts +21 -0
- package/dist/lab/blog/SommaireMobile.svelte +111 -0
- package/dist/lab/blog/SommaireMobile.svelte.d.ts +21 -0
- package/dist/lab/vitrines-produits/briques/Brique.svelte +1 -31
- package/dist/lab/vitrines-produits/briques/BriqueContenuADeuxColonnes.svelte +1 -31
- package/dist/lab/vitrines-produits/briques/BriqueHero.svelte +2 -31
- package/dist/lab/vitrines-produits/briques/BriqueTitreMultimedia.svelte +1 -31
- package/dist/lab/vitrines-produits/briques/CarrouselTuiles/CarrouselTuiles.svelte +15 -42
- package/dist/lab/vitrines-produits/briques/CarrouselTuiles/IconeFlecheDroite.svelte +1 -31
- package/dist/lab/vitrines-produits/briques/CarrouselTuiles/IconeFlecheGauche.svelte +1 -31
- package/dist/lab/vitrines-produits/briques/LecteurVideo.svelte +1 -31
- package/dist/lab/vitrines-produits/briques/PresentationANSSI.svelte +2 -31
- package/dist/lab/vitrines-produits/briques/RejoindreLaCommunaute.svelte +1 -31
- package/dist/lab/vitrines-produits/briques/Tuile.svelte +1 -31
- package/dist/lab/vitrines-produits/briques/marelle/Etape.svelte +14 -38
- package/dist/lab/vitrines-produits/briques/marelle/Marelle.svelte +1 -31
- package/dist/lab/vitrines-produits/briques/temoignages/IconeTemoignage.svelte +1 -31
- package/dist/lab/vitrines-produits/briques/temoignages/Temoignages.svelte +15 -35
- package/dist/mes-services-cyber/bandeau/Bandeau.svelte +1 -31
- package/dist/mes-services-cyber/lien/LienDiagnosticCyber.svelte +1 -31
- package/dist/pied-de-page/NavigationPiedDePage.svelte +1 -31
- package/dist/suite-cyber/navigation/AccueilMSC.svelte +1 -31
- package/dist/suite-cyber/navigation/BlocLiens.svelte +1 -31
- package/dist/suite-cyber/navigation/Navigation.svelte +1 -31
- package/dist/types.d.ts +20 -0
- package/dist/types.js +1 -1
- package/dist/webcomponents/lab-anssi-ui-kit.iife.js +35 -35
- package/dist/webcomponents/lab-anssi-ui-kit.jsx.d.ts +14 -26
- package/package.json +2 -2
package/dist/Alerte.svelte
CHANGED
|
@@ -17,37 +17,7 @@ let estOuvert = true;
|
|
|
17
17
|
</div>
|
|
18
18
|
{/if}
|
|
19
19
|
|
|
20
|
-
<style>.
|
|
21
|
-
display: none !important;
|
|
22
|
-
}
|
|
23
|
-
@media (min-width: 576px) {
|
|
24
|
-
.visible-tablette {
|
|
25
|
-
display: unset !important;
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
@media (min-width: 576px) {
|
|
30
|
-
.invisible-tablette {
|
|
31
|
-
display: none !important;
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
.visible-desktop {
|
|
36
|
-
display: none !important;
|
|
37
|
-
}
|
|
38
|
-
@media (min-width: 932px) {
|
|
39
|
-
.visible-desktop {
|
|
40
|
-
display: unset !important;
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
@media (min-width: 932px) {
|
|
45
|
-
.invisible-desktop {
|
|
46
|
-
display: none !important;
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
.alerte {
|
|
20
|
+
<style>.alerte {
|
|
51
21
|
display: flex;
|
|
52
22
|
border: 1px solid #0163cb;
|
|
53
23
|
min-width: 200px;
|
package/dist/CentreAide.svelte
CHANGED
|
@@ -83,37 +83,7 @@ let ouvert = false;
|
|
|
83
83
|
</div>
|
|
84
84
|
{/if}
|
|
85
85
|
|
|
86
|
-
<style>.
|
|
87
|
-
display: none !important;
|
|
88
|
-
}
|
|
89
|
-
@media (min-width: 576px) {
|
|
90
|
-
.visible-tablette {
|
|
91
|
-
display: unset !important;
|
|
92
|
-
}
|
|
93
|
-
}
|
|
94
|
-
|
|
95
|
-
@media (min-width: 576px) {
|
|
96
|
-
.invisible-tablette {
|
|
97
|
-
display: none !important;
|
|
98
|
-
}
|
|
99
|
-
}
|
|
100
|
-
|
|
101
|
-
.visible-desktop {
|
|
102
|
-
display: none !important;
|
|
103
|
-
}
|
|
104
|
-
@media (min-width: 932px) {
|
|
105
|
-
.visible-desktop {
|
|
106
|
-
display: unset !important;
|
|
107
|
-
}
|
|
108
|
-
}
|
|
109
|
-
|
|
110
|
-
@media (min-width: 932px) {
|
|
111
|
-
.invisible-desktop {
|
|
112
|
-
display: none !important;
|
|
113
|
-
}
|
|
114
|
-
}
|
|
115
|
-
|
|
116
|
-
.declencheur-centre-aide {
|
|
86
|
+
<style>.declencheur-centre-aide {
|
|
117
87
|
position: fixed;
|
|
118
88
|
bottom: 24px;
|
|
119
89
|
right: 24px;
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
+
<path fill-rule="evenodd" clip-rule="evenodd" d="M12 22C6.477 22 2 17.523 2 12C2 6.477 6.477 2 12 2C17.523 2 22 6.477 22 12C22 17.523 17.523 22 12 22ZM12 20C16.4183 20 20 16.4183 20 12C20 7.58172 16.4183 4 12 4C7.58172 4 4 7.58172 4 12C4 16.4183 7.58172 20 12 20ZM11 15H13V17H11V15ZM13 13.355V14H11V12.5C11 11.9477 11.4477 11.5 12 11.5C12.7902 11.5 13.4448 10.887 13.4967 10.0985C13.5486 9.31006 12.9799 8.61655 12.1966 8.51295C11.4133 8.40935 10.6839 8.93117 10.529 9.706L8.567 9.313C8.90349 7.63124 10.4087 6.44085 12.1228 6.50102C13.8368 6.56119 15.2549 7.8542 15.4726 9.55541C15.6904 11.2566 14.6436 12.8651 13 13.355Z" fill="#0D0C21"/>
|
|
3
|
+
</svg>
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
+
<path fill-rule="evenodd" clip-rule="evenodd" d="M8.78145 7.99999L5.48145 4.69999L6.42411 3.75732L10.6668 7.99999L6.42411 12.2427L5.48145 11.3L8.78145 7.99999Z" fill="white"/>
|
|
3
|
+
</svg>
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
<svg width="16" height="17" viewBox="0 0 16 17" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
+
<path fill-rule="evenodd" clip-rule="evenodd" d="M2 13.2823H14V14.6156H2V13.2823ZM8.66667 9.39697L12.714 5.34897L13.6567 6.29164L8 11.949L2.34333 6.29231L3.286 5.34897L7.33333 9.39564V1.94897H8.66667V9.39697Z" fill="black"/>
|
|
3
|
+
</svg>
|
package/dist/index.d.ts
CHANGED
|
@@ -13,3 +13,5 @@ export { default as Temoignages } from "./lab/vitrines-produits/briques/temoigna
|
|
|
13
13
|
export { default as BriqueContenuADeuxColonnes } from "./lab/vitrines-produits/briques/BriqueContenuADeuxColonnes.svelte";
|
|
14
14
|
export { default as PresentationANSSI } from "./lab/vitrines-produits/briques/PresentationANSSI.svelte";
|
|
15
15
|
export { default as RejoindreLaCommunaute } from "./lab/vitrines-produits/briques/RejoindreLaCommunaute.svelte";
|
|
16
|
+
export { default as BandeauTitre } from "./lab/blog/BandeauTitre.svelte";
|
|
17
|
+
export { default as PageCrisp } from "./lab/blog/PageCrisp.svelte";
|
package/dist/index.js
CHANGED
|
@@ -13,3 +13,5 @@ export { default as Temoignages } from "./lab/vitrines-produits/briques/temoigna
|
|
|
13
13
|
export { default as BriqueContenuADeuxColonnes } from "./lab/vitrines-produits/briques/BriqueContenuADeuxColonnes.svelte";
|
|
14
14
|
export { default as PresentationANSSI } from "./lab/vitrines-produits/briques/PresentationANSSI.svelte";
|
|
15
15
|
export { default as RejoindreLaCommunaute } from "./lab/vitrines-produits/briques/RejoindreLaCommunaute.svelte";
|
|
16
|
+
export { default as BandeauTitre } from "./lab/blog/BandeauTitre.svelte";
|
|
17
|
+
export { default as PageCrisp } from "./lab/blog/PageCrisp.svelte";
|
|
@@ -82,37 +82,7 @@
|
|
|
82
82
|
production dans un délai très court.
|
|
83
83
|
</p>
|
|
84
84
|
|
|
85
|
-
<style
|
|
86
|
-
display: none !important;
|
|
87
|
-
}
|
|
88
|
-
@media (min-width: 576px) {
|
|
89
|
-
.visible-tablette {
|
|
90
|
-
display: unset !important;
|
|
91
|
-
}
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
@media (min-width: 576px) {
|
|
95
|
-
.invisible-tablette {
|
|
96
|
-
display: none !important;
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
|
-
|
|
100
|
-
.visible-desktop {
|
|
101
|
-
display: none !important;
|
|
102
|
-
}
|
|
103
|
-
@media (min-width: 932px) {
|
|
104
|
-
.visible-desktop {
|
|
105
|
-
display: unset !important;
|
|
106
|
-
}
|
|
107
|
-
}
|
|
108
|
-
|
|
109
|
-
@media (min-width: 932px) {
|
|
110
|
-
.invisible-desktop {
|
|
111
|
-
display: none !important;
|
|
112
|
-
}
|
|
113
|
-
}
|
|
114
|
-
|
|
115
|
-
a {
|
|
85
|
+
<style>a {
|
|
116
86
|
display: inline-flex;
|
|
117
87
|
color: #000091;
|
|
118
88
|
border: none;
|
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
<svelte:options
|
|
2
|
+
customElement={{
|
|
3
|
+
tag: "lab-anssi-bandeau-titre",
|
|
4
|
+
props: {
|
|
5
|
+
titre: { reflect: false, type: "String", attribute: "titre" },
|
|
6
|
+
description: { reflect: false, type: "String", attribute: "description" },
|
|
7
|
+
filAriane: { reflect: false, type: "Array", attribute: "fil-ariane" },
|
|
8
|
+
tag: { reflect: false, type: "Object", attribute: "tag" },
|
|
9
|
+
},
|
|
10
|
+
}}
|
|
11
|
+
/>
|
|
12
|
+
|
|
13
|
+
<script>import { estLien } from "../../types.js";
|
|
14
|
+
export let titre;
|
|
15
|
+
export let description = "";
|
|
16
|
+
export let filAriane = [];
|
|
17
|
+
export let tag = null;
|
|
18
|
+
let filArianeVisible = window.matchMedia("(min-width: 576px)").matches;
|
|
19
|
+
</script>
|
|
20
|
+
|
|
21
|
+
<div class="conteneur-bandeau-entete">
|
|
22
|
+
<div class="contenu-bandeau-entete">
|
|
23
|
+
{#if filAriane.length}
|
|
24
|
+
<div class="fil-ariane">
|
|
25
|
+
{#if !filArianeVisible}
|
|
26
|
+
<button on:click={() => (filArianeVisible = true)}>Voir le fil d'Ariane</button>
|
|
27
|
+
{:else}
|
|
28
|
+
{#each filAriane as noeud, index (index)}
|
|
29
|
+
{#if estLien(noeud)}
|
|
30
|
+
<a href={noeud.href}>{noeud.label}</a>
|
|
31
|
+
{:else}
|
|
32
|
+
<span>{noeud.label}</span>
|
|
33
|
+
{/if}
|
|
34
|
+
{/each}
|
|
35
|
+
{/if}
|
|
36
|
+
</div>
|
|
37
|
+
{/if}
|
|
38
|
+
<div class="conteneur-texte">
|
|
39
|
+
{#if tag}
|
|
40
|
+
<div class="conteneur-tag">
|
|
41
|
+
<span class="tag" style="background: {tag.couleurFond}; color: {tag.couleurTexte};"
|
|
42
|
+
>{tag.label}</span
|
|
43
|
+
>
|
|
44
|
+
</div>
|
|
45
|
+
{/if}
|
|
46
|
+
<div class="conteneur-corps">
|
|
47
|
+
<h1>{titre}</h1>
|
|
48
|
+
{#if description}
|
|
49
|
+
<span>{description}</span>
|
|
50
|
+
{/if}
|
|
51
|
+
</div>
|
|
52
|
+
</div>
|
|
53
|
+
</div>
|
|
54
|
+
</div>
|
|
55
|
+
|
|
56
|
+
<style>.conteneur-bandeau-entete {
|
|
57
|
+
background: var(--bandeau-titre-background);
|
|
58
|
+
}
|
|
59
|
+
.conteneur-bandeau-entete .contenu-bandeau-entete {
|
|
60
|
+
padding: 16px;
|
|
61
|
+
color: white;
|
|
62
|
+
display: flex;
|
|
63
|
+
flex-direction: column;
|
|
64
|
+
align-items: flex-start;
|
|
65
|
+
font-family: Marianne;
|
|
66
|
+
max-width: 1200px;
|
|
67
|
+
margin: 0 auto;
|
|
68
|
+
text-align: left;
|
|
69
|
+
}
|
|
70
|
+
.conteneur-bandeau-entete .contenu-bandeau-entete .conteneur-texte {
|
|
71
|
+
display: flex;
|
|
72
|
+
padding: 8px 0 12px 0;
|
|
73
|
+
flex-direction: column;
|
|
74
|
+
align-items: flex-start;
|
|
75
|
+
gap: 4px;
|
|
76
|
+
}
|
|
77
|
+
.conteneur-bandeau-entete .contenu-bandeau-entete .conteneur-texte .conteneur-tag {
|
|
78
|
+
padding-top: 8px;
|
|
79
|
+
}
|
|
80
|
+
.conteneur-bandeau-entete .contenu-bandeau-entete .conteneur-texte .conteneur-tag .tag {
|
|
81
|
+
padding: 2px 8px;
|
|
82
|
+
border-radius: 12px;
|
|
83
|
+
font-family: Marianne;
|
|
84
|
+
font-size: 0.75rem;
|
|
85
|
+
font-weight: 400;
|
|
86
|
+
line-height: 1.25rem;
|
|
87
|
+
}
|
|
88
|
+
.conteneur-bandeau-entete .contenu-bandeau-entete .conteneur-texte .conteneur-corps {
|
|
89
|
+
display: flex;
|
|
90
|
+
flex-direction: column;
|
|
91
|
+
align-items: flex-start;
|
|
92
|
+
gap: 8px;
|
|
93
|
+
}
|
|
94
|
+
.conteneur-bandeau-entete .contenu-bandeau-entete .conteneur-texte .conteneur-corps h1 {
|
|
95
|
+
font-family: Marianne;
|
|
96
|
+
font-size: 2rem;
|
|
97
|
+
font-weight: 700;
|
|
98
|
+
line-height: 2.5rem;
|
|
99
|
+
margin: 0;
|
|
100
|
+
}
|
|
101
|
+
@media (min-width: 576px) {
|
|
102
|
+
.conteneur-bandeau-entete .contenu-bandeau-entete .conteneur-texte .conteneur-corps h1 {
|
|
103
|
+
font-size: 2.5rem;
|
|
104
|
+
line-height: 3rem;
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
.conteneur-bandeau-entete .contenu-bandeau-entete .conteneur-texte .conteneur-corps span {
|
|
108
|
+
font-family: Marianne;
|
|
109
|
+
font-size: 1.125rem;
|
|
110
|
+
font-weight: 400;
|
|
111
|
+
line-height: 1.75rem;
|
|
112
|
+
margin: 0;
|
|
113
|
+
}
|
|
114
|
+
.conteneur-bandeau-entete .contenu-bandeau-entete .fil-ariane {
|
|
115
|
+
display: flex;
|
|
116
|
+
flex-direction: row;
|
|
117
|
+
gap: 4px;
|
|
118
|
+
flex-wrap: wrap;
|
|
119
|
+
}
|
|
120
|
+
.conteneur-bandeau-entete .contenu-bandeau-entete .fil-ariane a,
|
|
121
|
+
.conteneur-bandeau-entete .contenu-bandeau-entete .fil-ariane span,
|
|
122
|
+
.conteneur-bandeau-entete .contenu-bandeau-entete .fil-ariane button {
|
|
123
|
+
color: white;
|
|
124
|
+
font-family: Marianne;
|
|
125
|
+
font-size: 0.75rem;
|
|
126
|
+
font-weight: 400;
|
|
127
|
+
line-height: 1.25rem;
|
|
128
|
+
}
|
|
129
|
+
.conteneur-bandeau-entete .contenu-bandeau-entete .fil-ariane button {
|
|
130
|
+
border: none;
|
|
131
|
+
background: none;
|
|
132
|
+
margin: 0;
|
|
133
|
+
padding: 0;
|
|
134
|
+
}
|
|
135
|
+
.conteneur-bandeau-entete .contenu-bandeau-entete .fil-ariane button,
|
|
136
|
+
.conteneur-bandeau-entete .contenu-bandeau-entete .fil-ariane a {
|
|
137
|
+
text-decoration: underline;
|
|
138
|
+
text-underline-offset: 2px;
|
|
139
|
+
}
|
|
140
|
+
.conteneur-bandeau-entete .contenu-bandeau-entete .fil-ariane a {
|
|
141
|
+
display: flex;
|
|
142
|
+
flex-direction: row;
|
|
143
|
+
gap: 4px;
|
|
144
|
+
align-items: center;
|
|
145
|
+
white-space: nowrap;
|
|
146
|
+
}
|
|
147
|
+
.conteneur-bandeau-entete .contenu-bandeau-entete .fil-ariane a:after {
|
|
148
|
+
content: url("https://lab-anssi-ui-kit-prod-s3-assets.cellar-c2.services.clever-cloud.com/icones/fleche-droite-blanche.svg");
|
|
149
|
+
width: 16px;
|
|
150
|
+
height: 16px;
|
|
151
|
+
display: flex;
|
|
152
|
+
}</style>
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { SvelteComponent } from "svelte";
|
|
2
|
+
import { type NoeudFilAriane, type Tag } from "../../types.js";
|
|
3
|
+
declare const __propDef: {
|
|
4
|
+
props: {
|
|
5
|
+
titre: string;
|
|
6
|
+
description?: string;
|
|
7
|
+
filAriane?: NoeudFilAriane[];
|
|
8
|
+
tag?: Tag | null;
|
|
9
|
+
};
|
|
10
|
+
events: {
|
|
11
|
+
[evt: string]: CustomEvent<any>;
|
|
12
|
+
};
|
|
13
|
+
slots: {};
|
|
14
|
+
exports?: {} | undefined;
|
|
15
|
+
bindings?: string | undefined;
|
|
16
|
+
};
|
|
17
|
+
export type BandeauTitreProps = typeof __propDef.props;
|
|
18
|
+
export type BandeauTitreEvents = typeof __propDef.events;
|
|
19
|
+
export type BandeauTitreSlots = typeof __propDef.slots;
|
|
20
|
+
export default class BandeauTitre extends SvelteComponent<BandeauTitreProps, BandeauTitreEvents, BandeauTitreSlots> {
|
|
21
|
+
}
|
|
22
|
+
export {};
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
<svg
|
|
2
|
+
width="16"
|
|
3
|
+
height="16"
|
|
4
|
+
viewBox="0 0 16 16"
|
|
5
|
+
fill="none"
|
|
6
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
7
|
+
class="chevron"
|
|
8
|
+
>
|
|
9
|
+
<path
|
|
10
|
+
fill-rule="evenodd"
|
|
11
|
+
clip-rule="evenodd"
|
|
12
|
+
d="M7.99999 8.78096L11.3 5.48096L12.2427 6.42362L7.99999 10.6663L3.75732 6.42362L4.69999 5.48096L7.99999 8.78096Z"
|
|
13
|
+
fill="black"
|
|
14
|
+
/>
|
|
15
|
+
</svg>
|
|
16
|
+
|
|
17
|
+
<style>path {
|
|
18
|
+
fill: var(--sommaire-actif-couleur);
|
|
19
|
+
}</style>
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/** @typedef {typeof __propDef.props} IconeChevronBasProps */
|
|
2
|
+
/** @typedef {typeof __propDef.events} IconeChevronBasEvents */
|
|
3
|
+
/** @typedef {typeof __propDef.slots} IconeChevronBasSlots */
|
|
4
|
+
export default class IconeChevronBas extends SvelteComponent<{
|
|
5
|
+
[x: string]: never;
|
|
6
|
+
}, {
|
|
7
|
+
[evt: string]: CustomEvent<any>;
|
|
8
|
+
}, {}> {
|
|
9
|
+
}
|
|
10
|
+
export type IconeChevronBasProps = typeof __propDef.props;
|
|
11
|
+
export type IconeChevronBasEvents = typeof __propDef.events;
|
|
12
|
+
export type IconeChevronBasSlots = typeof __propDef.slots;
|
|
13
|
+
import { SvelteComponent } from "svelte";
|
|
14
|
+
declare const __propDef: {
|
|
15
|
+
props: {
|
|
16
|
+
[x: string]: never;
|
|
17
|
+
};
|
|
18
|
+
events: {
|
|
19
|
+
[evt: string]: CustomEvent<any>;
|
|
20
|
+
};
|
|
21
|
+
slots: {};
|
|
22
|
+
exports?: undefined;
|
|
23
|
+
bindings?: undefined;
|
|
24
|
+
};
|
|
25
|
+
export {};
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
+
<path
|
|
3
|
+
fill-rule="evenodd"
|
|
4
|
+
clip-rule="evenodd"
|
|
5
|
+
d="M2 2.66626H14V3.99959H2V2.66626ZM2 7.33293H10V8.66626H2V7.33293ZM2 11.9996H14V13.3329H2V11.9996Z"
|
|
6
|
+
fill="black"
|
|
7
|
+
/>
|
|
8
|
+
</svg>
|
|
9
|
+
|
|
10
|
+
<style>path {
|
|
11
|
+
fill: var(--sommaire-actif-couleur);
|
|
12
|
+
}</style>
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/** @typedef {typeof __propDef.props} IconeMenuLateralProps */
|
|
2
|
+
/** @typedef {typeof __propDef.events} IconeMenuLateralEvents */
|
|
3
|
+
/** @typedef {typeof __propDef.slots} IconeMenuLateralSlots */
|
|
4
|
+
export default class IconeMenuLateral extends SvelteComponent<{
|
|
5
|
+
[x: string]: never;
|
|
6
|
+
}, {
|
|
7
|
+
[evt: string]: CustomEvent<any>;
|
|
8
|
+
}, {}> {
|
|
9
|
+
}
|
|
10
|
+
export type IconeMenuLateralProps = typeof __propDef.props;
|
|
11
|
+
export type IconeMenuLateralEvents = typeof __propDef.events;
|
|
12
|
+
export type IconeMenuLateralSlots = typeof __propDef.slots;
|
|
13
|
+
import { SvelteComponent } from "svelte";
|
|
14
|
+
declare const __propDef: {
|
|
15
|
+
props: {
|
|
16
|
+
[x: string]: never;
|
|
17
|
+
};
|
|
18
|
+
events: {
|
|
19
|
+
[evt: string]: CustomEvent<any>;
|
|
20
|
+
};
|
|
21
|
+
slots: {};
|
|
22
|
+
exports?: undefined;
|
|
23
|
+
bindings?: undefined;
|
|
24
|
+
};
|
|
25
|
+
export {};
|
|
@@ -0,0 +1,247 @@
|
|
|
1
|
+
<svelte:options
|
|
2
|
+
customElement={{
|
|
3
|
+
tag: "lab-anssi-page-crisp",
|
|
4
|
+
props: {
|
|
5
|
+
contenu: { reflect: false, type: "String", attribute: "contenu" },
|
|
6
|
+
tableDesMatieres: { reflect: false, type: "Array", attribute: "table-des-matieres" },
|
|
7
|
+
},
|
|
8
|
+
}}
|
|
9
|
+
/>
|
|
10
|
+
|
|
11
|
+
<script>import SommaireMobile from "./SommaireMobile.svelte";
|
|
12
|
+
import { onDestroy, tick } from "svelte";
|
|
13
|
+
import SommaireBureau from "./SommaireBureau.svelte";
|
|
14
|
+
export let contenu;
|
|
15
|
+
export let tableDesMatieres;
|
|
16
|
+
let composant;
|
|
17
|
+
let observateurDIntersection;
|
|
18
|
+
const observeLesSections = () => {
|
|
19
|
+
observateurDIntersection = new IntersectionObserver(
|
|
20
|
+
(sections) => {
|
|
21
|
+
sections.forEach((section) => {
|
|
22
|
+
const titreDeLaSection = section.target.querySelector("h2");
|
|
23
|
+
const lesLiens = composant.querySelectorAll(
|
|
24
|
+
`.sommaire ul li a[href='#${titreDeLaSection.id}']`
|
|
25
|
+
);
|
|
26
|
+
if (!lesLiens) return;
|
|
27
|
+
if (section.isIntersecting) {
|
|
28
|
+
lesLiens.forEach((l) => l.parentElement.classList.add("actif"));
|
|
29
|
+
const menuMobileVisible = composant.querySelector("#section-active");
|
|
30
|
+
if (menuMobileVisible) menuMobileVisible.textContent = titreDeLaSection.textContent;
|
|
31
|
+
} else lesLiens.forEach((l) => l.parentElement.classList.remove("actif"));
|
|
32
|
+
});
|
|
33
|
+
},
|
|
34
|
+
{ rootMargin: "-30% 0% -62% 0%" }
|
|
35
|
+
);
|
|
36
|
+
const lesSections = composant.querySelectorAll("article .contenu section");
|
|
37
|
+
lesSections.forEach((s) => observateurDIntersection.observe(s));
|
|
38
|
+
};
|
|
39
|
+
$: if (contenu) tick().then(observeLesSections);
|
|
40
|
+
const attendChargementImages = async () => {
|
|
41
|
+
const images = composant.querySelectorAll("img");
|
|
42
|
+
await Promise.all(
|
|
43
|
+
Array.from(images).map((image) => {
|
|
44
|
+
if (image.complete) return Promise.resolve();
|
|
45
|
+
return new Promise((res) => {
|
|
46
|
+
image.addEventListener("load", res);
|
|
47
|
+
image.addEventListener("error", res);
|
|
48
|
+
});
|
|
49
|
+
})
|
|
50
|
+
);
|
|
51
|
+
};
|
|
52
|
+
const scroll = (cible) => {
|
|
53
|
+
if (cible) {
|
|
54
|
+
tick().then(async () => {
|
|
55
|
+
const ancre = composant && composant.querySelector(cible);
|
|
56
|
+
if (ancre) {
|
|
57
|
+
await attendChargementImages();
|
|
58
|
+
ancre.scrollIntoView(true);
|
|
59
|
+
}
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
};
|
|
63
|
+
$: if (contenu) scroll(window.location.hash);
|
|
64
|
+
const ancreOuverte = (evenement) => scroll(`#${evenement.detail}`);
|
|
65
|
+
onDestroy(() => {
|
|
66
|
+
const lesSections = composant.querySelectorAll("section");
|
|
67
|
+
lesSections.forEach((s) => {
|
|
68
|
+
if (observateurDIntersection) observateurDIntersection.unobserve(s);
|
|
69
|
+
});
|
|
70
|
+
});
|
|
71
|
+
</script>
|
|
72
|
+
|
|
73
|
+
<div bind:this={composant}>
|
|
74
|
+
<SommaireMobile {tableDesMatieres} on:ancreOuverte={ancreOuverte} />
|
|
75
|
+
|
|
76
|
+
<article>
|
|
77
|
+
<SommaireBureau {tableDesMatieres} on:ancreOuverte={ancreOuverte} />
|
|
78
|
+
<div class="contenu">
|
|
79
|
+
<!-- eslint-disable-next-line svelte/no-at-html-tags-->
|
|
80
|
+
{@html contenu}
|
|
81
|
+
</div>
|
|
82
|
+
</article>
|
|
83
|
+
</div>
|
|
84
|
+
|
|
85
|
+
<style>article {
|
|
86
|
+
font-family: Marianne, sans-serif;
|
|
87
|
+
color: #3a3a3a;
|
|
88
|
+
display: flex;
|
|
89
|
+
flex-direction: column;
|
|
90
|
+
max-width: 1200px;
|
|
91
|
+
margin: 0 auto;
|
|
92
|
+
padding: 48px 16px 72px;
|
|
93
|
+
}
|
|
94
|
+
@media (min-width: 932px) {
|
|
95
|
+
article {
|
|
96
|
+
padding: 48px 24px 72px;
|
|
97
|
+
flex-direction: row;
|
|
98
|
+
gap: 24px;
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
article .contenu {
|
|
102
|
+
display: flex;
|
|
103
|
+
flex-direction: column;
|
|
104
|
+
gap: 72px;
|
|
105
|
+
}
|
|
106
|
+
article .contenu :global(section) {
|
|
107
|
+
display: flex;
|
|
108
|
+
flex-direction: column;
|
|
109
|
+
gap: 32px;
|
|
110
|
+
}
|
|
111
|
+
article .contenu :global(p) {
|
|
112
|
+
margin: 0;
|
|
113
|
+
font-size: 1rem;
|
|
114
|
+
line-height: 1.5rem;
|
|
115
|
+
font-weight: 400;
|
|
116
|
+
}
|
|
117
|
+
article .contenu :global(h2) {
|
|
118
|
+
color: #161616;
|
|
119
|
+
font-size: 1.75rem;
|
|
120
|
+
line-height: 2.25rem;
|
|
121
|
+
font-weight: 700;
|
|
122
|
+
margin: 0;
|
|
123
|
+
scroll-margin-top: 50px; /* Hauteur de la barre de navigation */
|
|
124
|
+
}
|
|
125
|
+
@media (min-width: 576px) {
|
|
126
|
+
article .contenu :global(h2) {
|
|
127
|
+
font-size: 2rem;
|
|
128
|
+
line-height: 2.5rem;
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
@media (min-width: 932px) {
|
|
132
|
+
article .contenu :global(h2) {
|
|
133
|
+
scroll-margin-top: 0;
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
article .contenu :global(h3) {
|
|
137
|
+
color: #161616;
|
|
138
|
+
font-size: 1.375rem;
|
|
139
|
+
line-height: 1.75rem;
|
|
140
|
+
font-weight: 700;
|
|
141
|
+
margin: 0;
|
|
142
|
+
}
|
|
143
|
+
@media (min-width: 576px) {
|
|
144
|
+
article .contenu :global(h3) {
|
|
145
|
+
font-size: 1.5rem;
|
|
146
|
+
line-height: 2rem;
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
article .contenu :global(h4) {
|
|
150
|
+
color: #161616;
|
|
151
|
+
font-size: 1.125rem;
|
|
152
|
+
line-height: 1.5rem;
|
|
153
|
+
font-weight: 700;
|
|
154
|
+
margin: 0;
|
|
155
|
+
}
|
|
156
|
+
@media (min-width: 576px) {
|
|
157
|
+
article .contenu :global(h4) {
|
|
158
|
+
font-size: 1.25rem;
|
|
159
|
+
line-height: 1.75rem;
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
article .contenu :global(img),
|
|
163
|
+
article .contenu :global(video) {
|
|
164
|
+
width: 100%;
|
|
165
|
+
}
|
|
166
|
+
article .contenu :global(video) {
|
|
167
|
+
border-radius: 10px;
|
|
168
|
+
}
|
|
169
|
+
article .contenu :global(.conteneur-video .legende) {
|
|
170
|
+
font-style: italic;
|
|
171
|
+
text-align: center;
|
|
172
|
+
margin: 0;
|
|
173
|
+
padding: 0;
|
|
174
|
+
}
|
|
175
|
+
article .contenu :global(.information) {
|
|
176
|
+
background: #e8edff;
|
|
177
|
+
padding: 16px 16px 16px 24px;
|
|
178
|
+
border-radius: 4px;
|
|
179
|
+
color: #0163cb;
|
|
180
|
+
border-left: 4px solid #0163cb;
|
|
181
|
+
font-size: 0.875rem;
|
|
182
|
+
line-height: 1.5rem;
|
|
183
|
+
display: flex;
|
|
184
|
+
flex-direction: column;
|
|
185
|
+
}
|
|
186
|
+
article .contenu :global(.information):before {
|
|
187
|
+
content: "Information";
|
|
188
|
+
font-weight: bold;
|
|
189
|
+
}
|
|
190
|
+
article .contenu :global(.aide) {
|
|
191
|
+
background: #f6f6f6;
|
|
192
|
+
position: relative;
|
|
193
|
+
padding: 24px 24px 24px 64px;
|
|
194
|
+
border-radius: 4px;
|
|
195
|
+
font-size: 0.875rem;
|
|
196
|
+
line-height: 1.5rem;
|
|
197
|
+
}
|
|
198
|
+
article .contenu :global(.aide):before {
|
|
199
|
+
content: "";
|
|
200
|
+
display: block;
|
|
201
|
+
background-image: url("https://lab-anssi-ui-kit-prod-s3-assets.cellar-c2.services.clever-cloud.com/icones/aide.svg");
|
|
202
|
+
width: 24px;
|
|
203
|
+
height: 24px;
|
|
204
|
+
position: absolute;
|
|
205
|
+
top: 24px;
|
|
206
|
+
left: 24px;
|
|
207
|
+
}
|
|
208
|
+
article .contenu :global(a) {
|
|
209
|
+
color: var(--couleur-lien);
|
|
210
|
+
text-decoration: underline;
|
|
211
|
+
text-underline-offset: 4px;
|
|
212
|
+
text-decoration-thickness: 1px;
|
|
213
|
+
}
|
|
214
|
+
article .contenu :global(a):hover {
|
|
215
|
+
text-decoration-thickness: 2px;
|
|
216
|
+
}
|
|
217
|
+
article .contenu :global(a.telechargement) {
|
|
218
|
+
display: inline-flex;
|
|
219
|
+
align-items: center;
|
|
220
|
+
gap: 8px;
|
|
221
|
+
text-decoration: none;
|
|
222
|
+
position: relative;
|
|
223
|
+
}
|
|
224
|
+
article .contenu :global(a.telechargement):after {
|
|
225
|
+
content: "";
|
|
226
|
+
display: block;
|
|
227
|
+
background: url("https://lab-anssi-ui-kit-prod-s3-assets.cellar-c2.services.clever-cloud.com/icones/telecharger.svg");
|
|
228
|
+
filter: var(--filtre-couleur-primaire);
|
|
229
|
+
width: 16px;
|
|
230
|
+
height: 16px;
|
|
231
|
+
}
|
|
232
|
+
article .contenu :global(a.telechargement):before {
|
|
233
|
+
content: "";
|
|
234
|
+
position: absolute;
|
|
235
|
+
bottom: 0;
|
|
236
|
+
left: 0;
|
|
237
|
+
width: 100%;
|
|
238
|
+
height: 1px;
|
|
239
|
+
background-color: var(--couleur-lien);
|
|
240
|
+
}
|
|
241
|
+
article .contenu :global(a.telechargement):hover:before {
|
|
242
|
+
bottom: -1px;
|
|
243
|
+
height: 2px;
|
|
244
|
+
}
|
|
245
|
+
article .contenu :global(ul li) {
|
|
246
|
+
padding-bottom: 8px;
|
|
247
|
+
}</style>
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { SvelteComponent } from "svelte";
|
|
2
|
+
import type { TableDesMatieres } from "../../types";
|
|
3
|
+
declare const __propDef: {
|
|
4
|
+
props: {
|
|
5
|
+
contenu: string;
|
|
6
|
+
tableDesMatieres: TableDesMatieres;
|
|
7
|
+
};
|
|
8
|
+
events: {
|
|
9
|
+
[evt: string]: CustomEvent<any>;
|
|
10
|
+
};
|
|
11
|
+
slots: {};
|
|
12
|
+
exports?: {} | undefined;
|
|
13
|
+
bindings?: string | undefined;
|
|
14
|
+
};
|
|
15
|
+
export type PageCrispProps = typeof __propDef.props;
|
|
16
|
+
export type PageCrispEvents = typeof __propDef.events;
|
|
17
|
+
export type PageCrispSlots = typeof __propDef.slots;
|
|
18
|
+
export default class PageCrisp extends SvelteComponent<PageCrispProps, PageCrispEvents, PageCrispSlots> {
|
|
19
|
+
}
|
|
20
|
+
export {};
|