@starterlib/ui 0.10.14 → 0.11.1
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/README.md +140 -33
- package/assets/icones/catalogue.json +199 -4
- package/assets/icones/sprite.svg +14 -0
- package/fesm2022/starterlib-ui-arbre.mjs +25 -25
- package/fesm2022/starterlib-ui-arbre.mjs.map +1 -1
- package/fesm2022/starterlib-ui-donnees.mjs +760 -274
- package/fesm2022/starterlib-ui-donnees.mjs.map +1 -1
- package/fesm2022/starterlib-ui-etats.mjs +82 -82
- package/fesm2022/starterlib-ui-etats.mjs.map +1 -1
- package/fesm2022/starterlib-ui-force.mjs +18 -0
- package/fesm2022/starterlib-ui-force.mjs.map +1 -0
- package/fesm2022/starterlib-ui-formulaires.mjs +218 -218
- package/fesm2022/starterlib-ui-formulaires.mjs.map +1 -1
- package/fesm2022/starterlib-ui-graphiques.mjs +934 -0
- package/fesm2022/starterlib-ui-graphiques.mjs.map +1 -0
- package/fesm2022/starterlib-ui-indicateurs.mjs +59 -59
- package/fesm2022/starterlib-ui-indicateurs.mjs.map +1 -1
- package/fesm2022/starterlib-ui-libelles-en.mjs +12 -0
- package/fesm2022/starterlib-ui-libelles-en.mjs.map +1 -1
- package/fesm2022/starterlib-ui-listes.mjs +727 -315
- package/fesm2022/starterlib-ui-listes.mjs.map +1 -1
- package/fesm2022/starterlib-ui-messagerie.mjs +45 -45
- package/fesm2022/starterlib-ui-messagerie.mjs.map +1 -1
- package/fesm2022/starterlib-ui-mise-en-page.mjs +46 -46
- package/fesm2022/starterlib-ui-mise-en-page.mjs.map +1 -1
- package/fesm2022/starterlib-ui-navigation.mjs +201 -42
- package/fesm2022/starterlib-ui-navigation.mjs.map +1 -1
- package/fesm2022/starterlib-ui-onglets.mjs +20 -20
- package/fesm2022/starterlib-ui-onglets.mjs.map +1 -1
- package/fesm2022/starterlib-ui-parcours.mjs +632 -168
- package/fesm2022/starterlib-ui-parcours.mjs.map +1 -1
- package/fesm2022/starterlib-ui-qr.mjs +11 -11
- package/fesm2022/starterlib-ui-qr.mjs.map +1 -1
- package/fesm2022/starterlib-ui-saisie.mjs +693 -515
- package/fesm2022/starterlib-ui-saisie.mjs.map +1 -1
- package/fesm2022/starterlib-ui-selection.mjs +64 -64
- package/fesm2022/starterlib-ui-selection.mjs.map +1 -1
- package/fesm2022/starterlib-ui-sens.mjs +3 -3
- package/fesm2022/starterlib-ui-surfaces.mjs +246 -242
- package/fesm2022/starterlib-ui-surfaces.mjs.map +1 -1
- package/fesm2022/starterlib-ui-virtuel.mjs +17 -17
- package/fesm2022/starterlib-ui-virtuel.mjs.map +1 -1
- package/fesm2022/starterlib-ui.mjs +1290 -938
- package/fesm2022/starterlib-ui.mjs.map +1 -1
- package/package.json +27 -3
- package/styles/amorce.css +304 -2
- package/types/starterlib-ui-donnees.d.ts +231 -5
- package/types/starterlib-ui-force.d.ts +19 -0
- package/types/starterlib-ui-graphiques.d.ts +421 -0
- package/types/starterlib-ui-indicateurs.d.ts +11 -4
- package/types/starterlib-ui-listes.d.ts +230 -13
- package/types/starterlib-ui-navigation.d.ts +82 -1
- package/types/starterlib-ui-parcours.d.ts +265 -5
- package/types/starterlib-ui-saisie.d.ts +142 -11
- package/types/starterlib-ui-selection.d.ts +1 -1
- package/types/starterlib-ui-surfaces.d.ts +10 -9
- package/types/starterlib-ui.d.ts +294 -32
package/styles/amorce.css
CHANGED
|
@@ -14,7 +14,13 @@
|
|
|
14
14
|
|
|
15
15
|
Elle reprend la mise en page de st-splash-screen (variante clair) : le passage de
|
|
16
16
|
l'une a l'autre ne fait pas sauter le nom. Les jetons sont lus s'ils sont charges
|
|
17
|
-
(starter-tokens.css, AVANT cette feuille), avec des replis systeme sinon.
|
|
17
|
+
(starter-tokens.css, AVANT cette feuille), avec des replis systeme sinon.
|
|
18
|
+
|
|
19
|
+
Parties FACULTATIVES (0.11.1), celles d'un ecran de demarrage : la tuile du symbole (un
|
|
20
|
+
SVG EN LIGNE de l'hote, jamais une image chargee), le sous-titre de la marque et le pied ;
|
|
21
|
+
le surtitre, la scene (la tuile devant un decor, SVG en ligne de l'hote lui aussi) et la
|
|
22
|
+
pastille du bas de page. La variante `st-amorce--ample` en fait l'ecran de demarrage d'une
|
|
23
|
+
marque qui tient tout l'ecran. Sans elles, l'amorce est celle d'avant. */
|
|
18
24
|
|
|
19
25
|
.st-amorce {
|
|
20
26
|
position: fixed;
|
|
@@ -40,8 +46,29 @@
|
|
|
40
46
|
background-color: var(--st-couleur-primaire, CanvasText);
|
|
41
47
|
}
|
|
42
48
|
|
|
49
|
+
/* La tuile du symbole, comme celle de l'ecran de demarrage : 48 px, le symbole a 32. */
|
|
50
|
+
.st-amorce__tuile {
|
|
51
|
+
display: flex;
|
|
52
|
+
align-items: center;
|
|
53
|
+
justify-content: center;
|
|
54
|
+
inline-size: var(--st-espacement-12, 3rem);
|
|
55
|
+
block-size: var(--st-espacement-12, 3rem);
|
|
56
|
+
margin-block-end: var(--st-espacement-2, 0.5rem);
|
|
57
|
+
color: var(--st-couleur-texte-primaire, CanvasText);
|
|
58
|
+
background-color: var(--st-couleur-surface-conteneur-bas, Canvas);
|
|
59
|
+
border: var(--st-epaisseur-fine, 1px) solid var(--st-couleur-surface-enfoncee, CanvasText);
|
|
60
|
+
border-radius: var(--st-rayon-lg, 0.75rem);
|
|
61
|
+
box-shadow: var(--st-ombre-repos, none);
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
.st-amorce__tuile > svg {
|
|
65
|
+
inline-size: var(--st-espacement-8, 2rem);
|
|
66
|
+
block-size: var(--st-espacement-8, 2rem);
|
|
67
|
+
}
|
|
68
|
+
|
|
43
69
|
.st-amorce__nom {
|
|
44
70
|
margin: 0;
|
|
71
|
+
font-family: var(--st-police-titre, inherit);
|
|
45
72
|
font-size: var(--st-taille-lg, 1.125rem);
|
|
46
73
|
font-weight: var(--st-graisse-semi, 600);
|
|
47
74
|
line-height: var(--st-interligne-md, 1.5rem);
|
|
@@ -56,10 +83,285 @@
|
|
|
56
83
|
color: var(--st-couleur-texte-discret, CanvasText);
|
|
57
84
|
}
|
|
58
85
|
|
|
86
|
+
/* Le sous-titre de la marque, sous le nom : capitales discretes a l'encre primaire. */
|
|
87
|
+
.st-amorce__sous-titre {
|
|
88
|
+
margin: var(--st-espacement-demi, 0.125rem) 0 0;
|
|
89
|
+
font-size: var(--st-taille-2xs, 0.6875rem);
|
|
90
|
+
font-weight: var(--st-graisse-moyenne, 500);
|
|
91
|
+
line-height: var(--st-interligne-2xs, 1rem);
|
|
92
|
+
letter-spacing: var(--st-interlettrage-surtitre, 0.08em);
|
|
93
|
+
color: var(--st-couleur-texte-primaire, CanvasText);
|
|
94
|
+
text-transform: uppercase;
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
/* Le surtitre, au-dessus du symbole : capitales espacees entre deux points d'accent. */
|
|
98
|
+
.st-amorce__surtitre {
|
|
99
|
+
display: flex;
|
|
100
|
+
align-items: center;
|
|
101
|
+
gap: var(--st-espacement-2, 0.5rem);
|
|
102
|
+
margin: 0 0 var(--st-espacement-4, 1rem);
|
|
103
|
+
font-size: var(--st-taille-2xs, 0.6875rem);
|
|
104
|
+
font-weight: var(--st-graisse-moyenne, 500);
|
|
105
|
+
line-height: var(--st-interligne-2xs, 1rem);
|
|
106
|
+
letter-spacing: var(--st-interlettrage-surtitre, 0.1em);
|
|
107
|
+
color: var(--st-couleur-texte-discret, CanvasText);
|
|
108
|
+
text-transform: uppercase;
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
.st-amorce__surtitre::before,
|
|
112
|
+
.st-amorce__surtitre::after {
|
|
113
|
+
inline-size: var(--st-espacement-1-5, 0.375rem);
|
|
114
|
+
block-size: var(--st-espacement-1-5, 0.375rem);
|
|
115
|
+
content: '';
|
|
116
|
+
background-color: var(--st-couleur-accent, CanvasText);
|
|
117
|
+
border-radius: var(--st-rayon-pleine, 50%);
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
/* La scene : la tuile au centre d'un carre de 256 px (288 depuis md en ample), devant le decor
|
|
121
|
+
que l'hote dessine en SVG en ligne (cercles, axes, points), decoratif, a l'encre attenuee. */
|
|
122
|
+
.st-amorce__scene {
|
|
123
|
+
position: relative;
|
|
124
|
+
display: grid;
|
|
125
|
+
place-items: center;
|
|
126
|
+
inline-size: 16rem;
|
|
127
|
+
block-size: 16rem;
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
.st-amorce__scene > .st-amorce__tuile {
|
|
131
|
+
position: relative;
|
|
132
|
+
margin: 0;
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
.st-amorce__decor {
|
|
136
|
+
position: absolute;
|
|
137
|
+
inset: 0;
|
|
138
|
+
inline-size: 100%;
|
|
139
|
+
block-size: 100%;
|
|
140
|
+
color: color-mix(in srgb, var(--st-couleur-primaire-attenue, GrayText) 70%, transparent);
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
/* La pastille du bas de page : un point de succes, puis des mentions courtes (l'hote les
|
|
144
|
+
separe d'un point median tu au lecteur d'ecran). */
|
|
145
|
+
.st-amorce__pastille {
|
|
146
|
+
display: flex;
|
|
147
|
+
flex-wrap: wrap;
|
|
148
|
+
align-items: center;
|
|
149
|
+
justify-content: center;
|
|
150
|
+
gap: var(--st-espacement-1, 0.25rem) var(--st-espacement-2, 0.5rem);
|
|
151
|
+
max-inline-size: 32rem;
|
|
152
|
+
margin: var(--st-espacement-6, 1.5rem) 0 0;
|
|
153
|
+
padding: var(--st-espacement-2, 0.5rem) var(--st-espacement-4, 1rem);
|
|
154
|
+
font-size: var(--st-taille-2xs, 0.6875rem);
|
|
155
|
+
font-weight: var(--st-graisse-moyenne, 500);
|
|
156
|
+
line-height: var(--st-interligne-2xs, 1rem);
|
|
157
|
+
letter-spacing: var(--st-interlettrage-capitales, 0.05em);
|
|
158
|
+
color: var(--st-couleur-texte-discret, CanvasText);
|
|
159
|
+
background-color: color-mix(in srgb, var(--st-couleur-surface, Canvas) 80%, transparent);
|
|
160
|
+
border-radius: var(--st-rayon-lg, 0.75rem);
|
|
161
|
+
box-shadow: var(--st-ombre-repos, none);
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
.st-amorce__pastille::before {
|
|
165
|
+
inline-size: var(--st-espacement-2, 0.5rem);
|
|
166
|
+
block-size: var(--st-espacement-2, 0.5rem);
|
|
167
|
+
content: '';
|
|
168
|
+
background-color: var(--st-couleur-succes, CanvasText);
|
|
169
|
+
border-radius: var(--st-rayon-pleine, 50%);
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
/* Le separateur que l'hote tait au lecteur d'ecran, plus pale que les mentions ; pose a la fin de la
|
|
173
|
+
mention qu'il suit, il ne commence jamais une ligne, et l'ecart de la pastille le suit. */
|
|
174
|
+
.st-amorce__pastille [aria-hidden='true'] {
|
|
175
|
+
margin-inline-start: var(--st-espacement-2, 0.5rem);
|
|
176
|
+
color: var(--st-couleur-texte-desactive, GrayText);
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
/* Ample : l'ecran de demarrage d'une marque qui tient tout l'ecran (recette d'Aplomb du
|
|
180
|
+
2026-10-07). Fond en degrade et halos, sans liseret ; le bloc central pose sur la pastille,
|
|
181
|
+
l'espace libre au-dessus ; tuile encadree a fond primaire (le symbole de l'hote s'y dessine
|
|
182
|
+
en clair), nom a l'encre primaire la plus profonde, sous-titre en phrase, statut sur un filet
|
|
183
|
+
en degrade. */
|
|
184
|
+
.st-amorce--ample {
|
|
185
|
+
justify-content: flex-start;
|
|
186
|
+
overflow-y: auto;
|
|
187
|
+
padding-block-end: var(--st-espacement-12, 3rem);
|
|
188
|
+
background-color: var(--st-couleur-surface-conteneur-bas, Canvas);
|
|
189
|
+
background-image:
|
|
190
|
+
radial-gradient(
|
|
191
|
+
circle 16rem at 50% 4rem,
|
|
192
|
+
color-mix(in srgb, var(--st-couleur-primaire-attenue, Canvas) 55%, transparent),
|
|
193
|
+
transparent
|
|
194
|
+
),
|
|
195
|
+
radial-gradient(
|
|
196
|
+
circle 12rem at 50% calc(100% - 12rem),
|
|
197
|
+
color-mix(in srgb, var(--st-couleur-accent, Canvas) 5%, transparent),
|
|
198
|
+
transparent
|
|
199
|
+
),
|
|
200
|
+
radial-gradient(
|
|
201
|
+
ellipse at top,
|
|
202
|
+
var(--st-couleur-primaire-discret, Canvas),
|
|
203
|
+
var(--st-couleur-surface-conteneur-bas, Canvas) 50%
|
|
204
|
+
);
|
|
205
|
+
}
|
|
206
|
+
|
|
207
|
+
.st-amorce--ample::before {
|
|
208
|
+
display: none;
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
.st-amorce--ample > :first-child {
|
|
212
|
+
margin-block-start: auto;
|
|
213
|
+
}
|
|
214
|
+
|
|
215
|
+
.st-amorce--ample .st-amorce__surtitre {
|
|
216
|
+
margin-block-end: var(--st-espacement-8, 2rem);
|
|
217
|
+
}
|
|
218
|
+
|
|
219
|
+
.st-amorce--ample .st-amorce__tuile {
|
|
220
|
+
inline-size: 9rem;
|
|
221
|
+
block-size: 9rem;
|
|
222
|
+
padding: var(--st-espacement-2, 0.5rem);
|
|
223
|
+
margin-block-end: var(--st-espacement-6, 1.5rem);
|
|
224
|
+
background-color: var(--st-couleur-surface, Canvas);
|
|
225
|
+
border: 0;
|
|
226
|
+
border-radius: var(--st-rayon-lg, 0.75rem);
|
|
227
|
+
box-shadow: var(--st-ombre-flottante, none);
|
|
228
|
+
}
|
|
229
|
+
|
|
230
|
+
.st-amorce--ample .st-amorce__scene {
|
|
231
|
+
margin-block-end: var(--st-espacement-6, 1.5rem);
|
|
232
|
+
}
|
|
233
|
+
|
|
234
|
+
.st-amorce--ample .st-amorce__scene > .st-amorce__tuile {
|
|
235
|
+
margin: 0;
|
|
236
|
+
}
|
|
237
|
+
|
|
238
|
+
/* Le fond primaire de la tuile, du plus profond en haut au primaire en bas, sous de fines
|
|
239
|
+
lignes de balayage ; en sombre, les primaires sont clairs : la tuile garde un bleu profond. */
|
|
240
|
+
.st-amorce--ample .st-amorce__tuile > svg {
|
|
241
|
+
box-sizing: border-box;
|
|
242
|
+
inline-size: 100%;
|
|
243
|
+
block-size: 100%;
|
|
244
|
+
padding: var(--st-espacement-8, 2rem);
|
|
245
|
+
background-image:
|
|
246
|
+
repeating-linear-gradient(
|
|
247
|
+
to bottom,
|
|
248
|
+
color-mix(in srgb, var(--st-couleur-sur-primaire, Canvas) 4%, transparent) 0 0.0625rem,
|
|
249
|
+
transparent 0.0625rem 0.25rem
|
|
250
|
+
),
|
|
251
|
+
linear-gradient(
|
|
252
|
+
to bottom,
|
|
253
|
+
light-dark(
|
|
254
|
+
var(--st-couleur-primaire-actif, CanvasText),
|
|
255
|
+
var(--st-couleur-primaire-discret, Canvas)
|
|
256
|
+
),
|
|
257
|
+
light-dark(var(--st-couleur-primaire, CanvasText), var(--st-couleur-primaire-attenue, Canvas))
|
|
258
|
+
);
|
|
259
|
+
border-radius: var(--st-rayon-lg, 0.75rem);
|
|
260
|
+
}
|
|
261
|
+
|
|
262
|
+
.st-amorce--ample .st-amorce__nom {
|
|
263
|
+
font-size: var(--st-taille-3xl, 2rem);
|
|
264
|
+
line-height: var(--st-interligne-3xl, 2.5rem);
|
|
265
|
+
letter-spacing: var(--st-approche-3xl, -0.02em);
|
|
266
|
+
color: light-dark(
|
|
267
|
+
var(--st-couleur-primaire-actif, CanvasText),
|
|
268
|
+
var(--st-couleur-texte-primaire, CanvasText)
|
|
269
|
+
);
|
|
270
|
+
}
|
|
271
|
+
|
|
272
|
+
.st-amorce--ample .st-amorce__sous-titre {
|
|
273
|
+
max-inline-size: 24rem;
|
|
274
|
+
margin-block-start: var(--st-espacement-2, 0.5rem);
|
|
275
|
+
font-size: var(--st-taille-md, 1rem);
|
|
276
|
+
font-weight: var(--st-graisse-normale, 400);
|
|
277
|
+
line-height: 1.625;
|
|
278
|
+
letter-spacing: normal;
|
|
279
|
+
color: var(--st-couleur-texte-discret, CanvasText);
|
|
280
|
+
text-transform: none;
|
|
281
|
+
}
|
|
282
|
+
|
|
283
|
+
/* Le statut, au-dessus d'un filet en degrade de la largeur du bloc : le filet est un ornement
|
|
284
|
+
(rien ne mesure le telechargement avant le JavaScript), jamais une progression. */
|
|
285
|
+
.st-amorce--ample .st-amorce__statut {
|
|
286
|
+
inline-size: min(100%, 20rem);
|
|
287
|
+
margin-block-start: var(--st-espacement-8, 2rem);
|
|
288
|
+
font-size: var(--st-taille-2xs, 0.6875rem);
|
|
289
|
+
font-weight: var(--st-graisse-semi, 600);
|
|
290
|
+
line-height: var(--st-interligne-2xs, 1rem);
|
|
291
|
+
letter-spacing: var(--st-interlettrage-large, 0.02em);
|
|
292
|
+
color: var(--st-couleur-texte-primaire, CanvasText);
|
|
293
|
+
text-align: start;
|
|
294
|
+
}
|
|
295
|
+
|
|
296
|
+
.st-amorce--ample .st-amorce__statut::after {
|
|
297
|
+
display: block;
|
|
298
|
+
block-size: var(--st-espacement-1-5, 0.375rem);
|
|
299
|
+
margin-block-start: var(--st-espacement-2-5, 0.625rem);
|
|
300
|
+
content: '';
|
|
301
|
+
background-image:
|
|
302
|
+
linear-gradient(
|
|
303
|
+
to right,
|
|
304
|
+
transparent 25%,
|
|
305
|
+
color-mix(in srgb, var(--st-couleur-sur-primaire, Canvas) 35%, transparent),
|
|
306
|
+
transparent 75%
|
|
307
|
+
),
|
|
308
|
+
linear-gradient(
|
|
309
|
+
to right,
|
|
310
|
+
var(--st-couleur-primaire-actif, CanvasText),
|
|
311
|
+
var(--st-couleur-primaire-survol, CanvasText)
|
|
312
|
+
);
|
|
313
|
+
border-radius: var(--st-rayon-pleine, 50rem);
|
|
314
|
+
}
|
|
315
|
+
|
|
316
|
+
.st-amorce--ample .st-amorce__pastille {
|
|
317
|
+
margin-block-start: var(--st-espacement-8, 2rem);
|
|
318
|
+
}
|
|
319
|
+
|
|
320
|
+
/* Depuis md (48rem) : la scene a 288 px et la tuile a 160 px, comme la maquette de bureau. */
|
|
321
|
+
@media (min-width: 48rem) {
|
|
322
|
+
.st-amorce--ample .st-amorce__scene {
|
|
323
|
+
inline-size: 18rem;
|
|
324
|
+
block-size: 18rem;
|
|
325
|
+
}
|
|
326
|
+
|
|
327
|
+
.st-amorce--ample .st-amorce__tuile {
|
|
328
|
+
inline-size: 10rem;
|
|
329
|
+
block-size: 10rem;
|
|
330
|
+
}
|
|
331
|
+
}
|
|
332
|
+
|
|
333
|
+
/* Le pied : une ligne discrete au bas de la page, centree. */
|
|
334
|
+
.st-amorce__pied {
|
|
335
|
+
position: absolute;
|
|
336
|
+
inset: auto var(--st-espacement-4, 1rem) var(--st-espacement-4, 1rem);
|
|
337
|
+
margin: 0;
|
|
338
|
+
font-size: var(--st-taille-xs, 0.75rem);
|
|
339
|
+
line-height: var(--st-interligne-xs, 1rem);
|
|
340
|
+
color: var(--st-couleur-texte-attenue, CanvasText);
|
|
341
|
+
}
|
|
342
|
+
|
|
343
|
+
/* Bureau assez haut : le cadre de la maquette, 85 % de la hauteur centres dans la page, et
|
|
344
|
+
4,5 rem entre le statut et la pastille. */
|
|
345
|
+
@media (min-width: 48rem) and (min-height: 45rem) {
|
|
346
|
+
.st-amorce--ample {
|
|
347
|
+
padding-block: calc(7.5vh + var(--st-espacement-8, 2rem));
|
|
348
|
+
}
|
|
349
|
+
|
|
350
|
+
.st-amorce--ample .st-amorce__pastille {
|
|
351
|
+
margin-block-start: 4.5rem;
|
|
352
|
+
}
|
|
353
|
+
}
|
|
354
|
+
|
|
59
355
|
@media (forced-colors: active) {
|
|
60
|
-
.st-amorce::before
|
|
356
|
+
.st-amorce::before,
|
|
357
|
+
.st-amorce__decor {
|
|
61
358
|
display: none;
|
|
62
359
|
}
|
|
360
|
+
|
|
361
|
+
/* Le symbole garde son fond : dessine en clair, il disparaitrait sur la toile. */
|
|
362
|
+
.st-amorce--ample .st-amorce__tuile > svg {
|
|
363
|
+
forced-color-adjust: none;
|
|
364
|
+
}
|
|
63
365
|
}
|
|
64
366
|
|
|
65
367
|
@media print {
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import { AnnonceLocale, Icone, TailleDAvatar, TailleDIconeFixe, TonDAvatar } from "@starterlib/ui";
|
|
1
|
+
import { AnnonceLocale, CatalogueDuPointDEntree, Icone, TailleDAvatar, TailleDIconeFixe, TonDAvatar } from "@starterlib/ui";
|
|
2
2
|
import * as i0 from "@angular/core";
|
|
3
|
+
import { InjectionToken, Provider, Signal } from "@angular/core";
|
|
3
4
|
import { Ton, TonSemantique } from "@starterlib/util";
|
|
4
5
|
import { BlocDeDocument, DocumentStructure, EmphaseDeDocument, LienDeDocument, Montant, MorceauDeTexte } from "@starterlib/util/valeurs";
|
|
5
6
|
export type TypeMasque = 'iban' | 'carte' | 'telephone' | 'reference';
|
|
@@ -195,11 +196,13 @@ export declare class StMasked {
|
|
|
195
196
|
export type TailleDeMontant = 'sm' | 'md' | 'lg' | 'xl' | '2xl' | 'hero';
|
|
196
197
|
/**
|
|
197
198
|
* Couleur choisie par l'appelant : `discret` pour un solde nul ou clos, `primaire` pour la
|
|
198
|
-
* ligne choisie d'un tableau, `succes` et `
|
|
199
|
+
* ligne choisie d'un tableau, `succes` et `erreur` pour un statut de ligne (execute, rejete) ;
|
|
200
|
+
* `danger` reste pour une ligne a detruire ou une urgence (et pour le rejet ecrit avant le role
|
|
201
|
+
* `erreur`, P08-03, qui en a la couleur par defaut).
|
|
199
202
|
* ⚠️ Un statut, jamais un sens : un debit n'est pas une erreur (D30). Le sens d'une
|
|
200
203
|
* VARIATION se dit par `variation`, qui lit `positif` et `negatif`.
|
|
201
204
|
*/
|
|
202
|
-
export type TonDeMontant = Extract<Ton, 'neutre' | 'discret' | 'primaire' | 'succes' | 'danger'>;
|
|
205
|
+
export type TonDeMontant = Extract<Ton, 'neutre' | 'discret' | 'primaire' | 'succes' | 'erreur' | 'danger'>;
|
|
203
206
|
/** `mono` : colonne de chasse fixe des tableaux (planche 4, D19). */
|
|
204
207
|
export type PoliceDeMontant = 'base' | 'mono';
|
|
205
208
|
/** `fin` : cellule numerique, les virgules s'alignent en colonne. */
|
|
@@ -580,7 +583,7 @@ export type DecimalesDeNombre = number | {
|
|
|
580
583
|
readonly max: number;
|
|
581
584
|
};
|
|
582
585
|
/** Les tons de `st-money` : un statut choisi par l'appelant, jamais deduit du signe. */
|
|
583
|
-
export type TonDeNombre = Extract<Ton, 'neutre' | 'discret' | 'primaire' | 'succes' | 'danger'>;
|
|
586
|
+
export type TonDeNombre = Extract<Ton, 'neutre' | 'discret' | 'primaire' | 'succes' | 'erreur' | 'danger'>;
|
|
584
587
|
/**
|
|
585
588
|
* Un nombre qui n'est ni un montant (`st-money`) ni un compte (`st-count`) : un taux, un TAEG, une
|
|
586
589
|
* quantite decimale, une grandeur avec son unite (lot 256).
|
|
@@ -1565,7 +1568,7 @@ export declare class StCode {
|
|
|
1565
1568
|
protected readonly annonce: AnnonceLocale;
|
|
1566
1569
|
protected readonly copieConfirmee: import("@angular/core").WritableSignal<boolean>;
|
|
1567
1570
|
protected readonly copieRefusee: import("@angular/core").WritableSignal<boolean>;
|
|
1568
|
-
protected readonly iconeDeCopie: import("@angular/core").Signal<"iban" | "chargement" | "message" | "devise" | "cle" | "accessibilite" | "appareils" | "arborescence" | "asterisque" | "badge-coche" | "banque" | "batiment" | "bifurcation" | "billets" | "billets-envoi" | "billets-pile" | "boite" | "boite-de-reception" | "bouclier" | "bouclier-alerte" | "bouclier-coche" | "bouclier-coeur" | "bouclier-croix" | "bouclier-moitie" | "bouclier-recherche" | "bouclier-utilisateur" | "boussole" | "bouton-curseur" | "bulle-question" | "cadenas" | "cadenas-horloge" | "cadenas-ouvert" | "cadre-pied" | "cadre-texte" | "calendrier" | "calendrier-evenement" | "calendrier-horloge" | "calendrier-jour" | "calques" | "carte-bancaire" | "carte-bancaire-barre" | "carte-bancaire-cadenas" | "carte-contact" | "carte-identite" | "cartes-empilees" | "case-cochee" | "casse" | "cercle" | "cercle-alerte" | "cercle-chevron-bas" | "cercle-coche" | "cercle-coche-ouvert" | "cercle-croix" | "cercle-info" | "cercle-moins" | "cercle-plus" | "cercle-question" | "certificat" | "chandelier" | "cheque" | "chevron-bas" | "chevron-droite" | "chevron-gauche" | "chevron-haut" | "chevrons-droite" | "chevrons-haut-bas" | "cloche" | "cloche-sonnerie" | "coche" | "code" | "code-qr" | "code-qr-scanner" | "coffre-fort" | "colonnes" | "connexion" | "contraste" | "copie" | "corbeille" | "corbeille-croix" | "courriel" | "crayon" | "croix" | "curseur-clic" | "deconnexion" | "disposition" | "dollar" | "dossier" | "dossier-barre" | "dossier-ouvert" | "double-coche" | "echange" | "eclair" | "empreinte-digitale" | "enregistrer" | "entree" | "envoyer" | "epaisseur-de-trait" | "epingle" | "etoile" | "euro" | "fichier" | "fichier-image" | "fichier-pdf" | "fichier-texte" | "filtre" | "filtre-barre" | "filtre-lignes" | "fleche-bas" | "fleche-bas-gauche" | "fleche-bas-ligne" | "fleche-droite" | "fleche-gauche" | "fleche-haut" | "fleche-haut-droite" | "fleche-haut-ligne" | "fleche-large-haut" | "fleches-gauche-droite" | "flocon" | "flou" | "formes" | "globe" | "graphique-anneau" | "graphique-barres" | "graphique-barres-cadre" | "graphique-camembert" | "graphique-ligne" | "graphique-lignes" | "grille" | "grille-lignes" | "hexagone" | "historique" | "horloge" | "horloge-fleche" | "imprimer" | "interdit" | "jalons" | "jauge" | "lien" | "lien-externe" | "lignes" | "lignes-crayon" | "liste" | "liste-coche" | "liste-controle" | "liste-numerotee" | "luminosite" | "lune" | "maillet" | "maison" | "marque-page" | "menu" | "menu-ouvert" | "minuteur" | "mise-au-point" | "mise-en-page-image" | "moins" | "nuage-barre" | "nuage-televerser" | "octogone-alerte" | "oeil" | "oeil-barre" | "panneau-gauche" | "parametres" | "parapluie" | "parchemin" | "pieces" | "plus" | "pointeur" | "points" | "points-verticaux" | "portefeuille" | "portefeuille-cartes" | "presse-papiers-coche" | "presse-papiers-horloge" | "priorite-haute" | "rafraichir" | "recherche" | "recherche-barre" | "recherche-texte" | "rectangle-points" | "recu" | "redemarrer" | "reglages" | "regle" | "reseau-jauge" | "rotation-arriere" | "routeur" | "sablier" | "sablier-bas" | "sablier-haut" | "sac-argent" | "sans-contact" | "serveur" | "soleil" | "style-de-trait" | "synchro" | "synchro-probleme" | "tableau" | "tableau-de-bord" | "tableau-de-bord-plus" | "tablette" | "tabulation" | "telecharger" | "telephone-mobile" | "televerser" | "tendance-baisse" | "tendance-hausse" | "terminal" | "tirelire" | "triangle-alerte" | "triangle-bas" | "triangle-haut" | "trombone" | "utilisateur" | "utilisateur-crayon" | "utilisateurs" | "wifi" | "wifi-barre">;
|
|
1571
|
+
protected readonly iconeDeCopie: import("@angular/core").Signal<"iban" | "chargement" | "pause" | "message" | "essai" | "devise" | "cle" | "accessibilite" | "alimentation" | "appareil-photo" | "appareils" | "arborescence" | "asterisque" | "badge-coche" | "balance" | "banque" | "batiment" | "bifurcation" | "billets" | "billets-envoi" | "billets-pile" | "boite" | "boite-de-reception" | "bouclier" | "bouclier-alerte" | "bouclier-coche" | "bouclier-coeur" | "bouclier-croix" | "bouclier-moitie" | "bouclier-recherche" | "bouclier-utilisateur" | "boussole" | "bouton-curseur" | "bulle-question" | "cadenas" | "cadenas-horloge" | "cadenas-ouvert" | "cadre-pied" | "cadre-texte" | "calendrier" | "calendrier-evenement" | "calendrier-horloge" | "calendrier-jour" | "calques" | "carte-bancaire" | "carte-bancaire-barre" | "carte-bancaire-cadenas" | "carte-contact" | "carte-identite" | "cartes-empilees" | "case-cochee" | "casse" | "cercle" | "cercle-alerte" | "cercle-chevron-bas" | "cercle-coche" | "cercle-coche-ouvert" | "cercle-croix" | "cercle-info" | "cercle-moins" | "cercle-plus" | "cercle-question" | "certificat" | "chandelier" | "cheque" | "chevron-bas" | "chevron-droite" | "chevron-gauche" | "chevron-haut" | "chevrons-droite" | "chevrons-haut-bas" | "cible" | "cloche" | "cloche-sonnerie" | "coche" | "code" | "code-qr" | "code-qr-scanner" | "coffre-fort" | "colonnes" | "comparer" | "connexion" | "contraste" | "copie" | "corbeille" | "corbeille-croix" | "courriel" | "crayon" | "croix" | "curseur-clic" | "deconnexion" | "disposition" | "dollar" | "dossier" | "dossier-barre" | "dossier-ouvert" | "double-coche" | "drapeau" | "echange" | "eclair" | "empreinte-digitale" | "enregistrer" | "entree" | "envoyer" | "epaisseur-de-trait" | "epingle" | "etoile" | "euro" | "fichier" | "fichier-image" | "fichier-pdf" | "fichier-texte" | "filtre" | "filtre-barre" | "filtre-lignes" | "fleche-bas" | "fleche-bas-gauche" | "fleche-bas-ligne" | "fleche-droite" | "fleche-gauche" | "fleche-haut" | "fleche-haut-droite" | "fleche-haut-ligne" | "fleche-large-haut" | "fleches-gauche-droite" | "flocon" | "flou" | "formes" | "globe" | "graphique-anneau" | "graphique-barres" | "graphique-barres-cadre" | "graphique-camembert" | "graphique-ligne" | "graphique-lignes" | "grille" | "grille-lignes" | "hexagone" | "historique" | "horloge" | "horloge-fleche" | "imprimer" | "interdit" | "jalons" | "jauge" | "lecture" | "lien" | "lien-externe" | "lignes" | "lignes-crayon" | "liste" | "liste-coche" | "liste-controle" | "liste-numerotee" | "luminosite" | "lune" | "maillet" | "maison" | "marque-page" | "menu" | "menu-ouvert" | "minuteur" | "mise-au-point" | "mise-en-page-image" | "moins" | "nuage-barre" | "nuage-televerser" | "octogone-alerte" | "oeil" | "oeil-barre" | "panneau-gauche" | "parametres" | "parapluie" | "parchemin" | "passerelle" | "pieces" | "plus" | "pointeur" | "points" | "points-verticaux" | "portefeuille" | "portefeuille-cartes" | "presse-papiers-coche" | "presse-papiers-horloge" | "priorite-haute" | "rafraichir" | "recherche" | "recherche-barre" | "recherche-texte" | "rectangle-points" | "recu" | "redemarrer" | "reglages" | "regle" | "reseau" | "reseau-jauge" | "robot" | "rotation-arriere" | "routeur" | "sablier" | "sablier-bas" | "sablier-haut" | "sac-argent" | "sans-contact" | "serveur" | "soleil" | "style-de-trait" | "synchro" | "synchro-probleme" | "tableau" | "tableau-de-bord" | "tableau-de-bord-plus" | "tablette" | "tabulation" | "telecharger" | "telephone-mobile" | "televerser" | "tendance-baisse" | "tendance-hausse" | "terminal" | "tirelire" | "triangle-alerte" | "triangle-bas" | "triangle-haut" | "trombone" | "utilisateur" | "utilisateur-crayon" | "utilisateurs" | "visage" | "wifi" | "wifi-barre">;
|
|
1569
1572
|
protected readonly messageDeRefus: import("@angular/core").Signal<string>;
|
|
1570
1573
|
private minuterieDeConfirmation;
|
|
1571
1574
|
constructor();
|
|
@@ -1669,5 +1672,228 @@ export declare class StDocument {
|
|
|
1669
1672
|
};
|
|
1670
1673
|
}, {}, never, never, true, never>;
|
|
1671
1674
|
}
|
|
1675
|
+
/** Les bornes de l'opacite : visible sur l'ecran comme a l'impression, jamais au point de gener la lecture. */
|
|
1676
|
+
export declare const OPACITE_DE_FILIGRANE: {
|
|
1677
|
+
readonly min: 0.04;
|
|
1678
|
+
readonly defaut: 0.08;
|
|
1679
|
+
readonly max: 0.2;
|
|
1680
|
+
};
|
|
1681
|
+
/**
|
|
1682
|
+
* Le motif d'une tuile : le texte en diagonale (-30 degres), centre. Une image SVG `data:` (permise
|
|
1683
|
+
* par `img-src 'self' data:`), servie en MASQUE : la couleur est celle du theme (`texte`), lue par la
|
|
1684
|
+
* feuille, et non ecrite dans l'image.
|
|
1685
|
+
*/
|
|
1686
|
+
export declare function motifDeFiligrane(texte: string): string;
|
|
1687
|
+
/**
|
|
1688
|
+
* Filigrane (P08-04) : un texte repete en diagonale sur une zone, pour des resultats d'essai ou un
|
|
1689
|
+
* dossier imprimable (« Donnees fictives », « Specimen »). Le texte est fourni par l'application,
|
|
1690
|
+
* deja traduit.
|
|
1691
|
+
*
|
|
1692
|
+
* ```html
|
|
1693
|
+
* <section class="resultats">
|
|
1694
|
+
* <st-watermark texte="Donnees fictives" />
|
|
1695
|
+
* ...
|
|
1696
|
+
* </section>
|
|
1697
|
+
* ```
|
|
1698
|
+
*
|
|
1699
|
+
* - Il COUVRE son conteneur, que l'appelant positionne (`position: relative`), par-dessus son
|
|
1700
|
+
* contenu, a faible opacite (`opacite`, de 0,04 a 0,2 ; 0,08 par defaut) : le texte reste lisible,
|
|
1701
|
+
* a l'ecran comme a l'impression.
|
|
1702
|
+
* - Absent de l'arbre d'accessibilite : aucun noeud de texte (le motif est un masque CSS de l'hote,
|
|
1703
|
+
* `aria-hidden`), ce que la page dit deja en mots (banniere, titre). Il ne capte aucun pointeur.
|
|
1704
|
+
* - Motif SVG en ligne, sans requete ni reference `url(#...)` (que `<base href>` perd sous Safari et
|
|
1705
|
+
* Firefox), et sans attribut `style` statique : la politique de securite du contenu du socle suffit.
|
|
1706
|
+
* - Imprime par defaut (couleurs exactes) ; `[imprime]="false"` le retire du papier.
|
|
1707
|
+
*/
|
|
1708
|
+
export declare class StWatermark {
|
|
1709
|
+
/** Le texte repete, deja traduit (« Donnees fictives »). */
|
|
1710
|
+
readonly texte: import("@angular/core").InputSignal<string>;
|
|
1711
|
+
/** Present a l'impression (defaut) ; `false` le retire du papier. */
|
|
1712
|
+
readonly imprime: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
|
|
1713
|
+
/** Opacite du texte, ramenee entre 0,04 et 0,2 ; 0,08 par defaut. */
|
|
1714
|
+
readonly opacite: import("@angular/core").InputSignalWithTransform<number, number | `${number}`>;
|
|
1715
|
+
protected readonly motif: import("@angular/core").Signal<string>;
|
|
1716
|
+
protected readonly opaciteLue: import("@angular/core").Signal<number>;
|
|
1717
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<StWatermark, never>;
|
|
1718
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<StWatermark, "st-watermark", never, {
|
|
1719
|
+
"texte": {
|
|
1720
|
+
"alias": "texte";
|
|
1721
|
+
"required": true;
|
|
1722
|
+
"isSignal": true;
|
|
1723
|
+
};
|
|
1724
|
+
"imprime": {
|
|
1725
|
+
"alias": "imprime";
|
|
1726
|
+
"required": false;
|
|
1727
|
+
"isSignal": true;
|
|
1728
|
+
};
|
|
1729
|
+
"opacite": {
|
|
1730
|
+
"alias": "opacite";
|
|
1731
|
+
"required": false;
|
|
1732
|
+
"isSignal": true;
|
|
1733
|
+
};
|
|
1734
|
+
}, {}, never, never, true, never>;
|
|
1735
|
+
}
|
|
1736
|
+
/**
|
|
1737
|
+
* Lu jusqu'au bout (P08-08) : exige la lecture d'un document jusqu'a sa fin SANS exclure le clavier
|
|
1738
|
+
* ni le lecteur d'ecran, ce que ferait un simple detecteur de defilement.
|
|
1739
|
+
*
|
|
1740
|
+
* ```html
|
|
1741
|
+
* <section stLuJusquAuBout #lecture="stLuJusquAuBout" (atteint)="journaliser()">
|
|
1742
|
+
* <st-document [document]="conditions()" />
|
|
1743
|
+
* </section>
|
|
1744
|
+
* <button
|
|
1745
|
+
* stButton
|
|
1746
|
+
* [indisponible]="!lecture.lu()"
|
|
1747
|
+
* [raisonIndisponible]="lecture.lu() ? null : t('lireJusquAuBout')"
|
|
1748
|
+
* >
|
|
1749
|
+
* Accepter
|
|
1750
|
+
* </button>
|
|
1751
|
+
* ```
|
|
1752
|
+
*
|
|
1753
|
+
* - **Une sentinelle focalisable** « Fin du document » (`libelleDeFin` la remplace) suit le
|
|
1754
|
+
* contenu, dans le conteneur : un conteneur qui defile (`overflow: auto`) la cache jusqu'a la fin.
|
|
1755
|
+
* - **Trois voies** : la sentinelle visible a l'ecran (observateur d'intersection, au-dessus de la
|
|
1756
|
+
* barre inferieure et de l'action flottante) ; la tabulation jusqu'a elle ; le lecteur d'ecran,
|
|
1757
|
+
* dont le curseur fait defiler la page jusqu'a elle ou y pose le focus (VoiceOver).
|
|
1758
|
+
* - **Une seule emission** de `atteint` ; `lu()` reste vrai ensuite. Un autre document se lit dans
|
|
1759
|
+
* un autre conteneur (`@for ... track version`).
|
|
1760
|
+
* - **Aucun acces global** : la fenetre est celle du `DOCUMENT` injecte, et rien n'est observe
|
|
1761
|
+
* avant le rendu au navigateur ; un prerendu ne produit aucun effet.
|
|
1762
|
+
*
|
|
1763
|
+
* Pose sur un element du gabarit (`section`, `div`), jamais sur un composant : un element ne porte
|
|
1764
|
+
* qu'un composant. Recette : `docs/recettes/accepter-apres-lecture.md`.
|
|
1765
|
+
*/
|
|
1766
|
+
export declare class StLuJusquAuBout {
|
|
1767
|
+
private readonly document;
|
|
1768
|
+
protected readonly catalogue: import("@angular/core").Signal<import("@starterlib/ui").CatalogueDuPointDEntree<import("@starterlib/ui/donnees").LibellesDonnees>>;
|
|
1769
|
+
/** Le texte de la sentinelle, deja traduit ; `null` : « Fin du document ». */
|
|
1770
|
+
readonly libelleDeFin: import("@angular/core").InputSignal<string | null>;
|
|
1771
|
+
/** Emise UNE fois, quand la fin du document est atteinte. */
|
|
1772
|
+
readonly atteint: import("@angular/core").OutputEmitterRef<void>;
|
|
1773
|
+
private readonly etat;
|
|
1774
|
+
/** Vrai des que la fin est atteinte : a lire pour l'indisponibilite du bouton qui suit. */
|
|
1775
|
+
readonly lu: import("@angular/core").Signal<boolean>;
|
|
1776
|
+
protected readonly libelleLu: import("@angular/core").Signal<string>;
|
|
1777
|
+
/** `lang` de la sentinelle quand son texte vient du catalogue de repli (D-29). */
|
|
1778
|
+
protected readonly langueLue: import("@angular/core").Signal<string | null>;
|
|
1779
|
+
private readonly sentinelle;
|
|
1780
|
+
private observateur;
|
|
1781
|
+
private surveillant;
|
|
1782
|
+
constructor();
|
|
1783
|
+
/** La fin est atteinte : une seule emission, et plus rien a observer. */
|
|
1784
|
+
protected atteindre(): void;
|
|
1785
|
+
/**
|
|
1786
|
+
* Observe la sentinelle dans la fenetre, le bas de la fenetre retranche de ce qui le recouvre ;
|
|
1787
|
+
* re-arme quand la coquille change ces hauteurs (attribut `style` de `<html>`).
|
|
1788
|
+
*/
|
|
1789
|
+
private observer;
|
|
1790
|
+
private arreter;
|
|
1791
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<StLuJusquAuBout, never>;
|
|
1792
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<StLuJusquAuBout, "[stLuJusquAuBout]", ["stLuJusquAuBout"], {
|
|
1793
|
+
"libelleDeFin": {
|
|
1794
|
+
"alias": "libelleDeFin";
|
|
1795
|
+
"required": false;
|
|
1796
|
+
"isSignal": true;
|
|
1797
|
+
};
|
|
1798
|
+
}, {
|
|
1799
|
+
"atteint": "atteint";
|
|
1800
|
+
}, never, ["*"], true, never>;
|
|
1801
|
+
}
|
|
1802
|
+
/**
|
|
1803
|
+
* La fraicheur d'une donnee dont l'AGE compte (P08-12) : « A jour, il y a 12 s » ou « Perimee
|
|
1804
|
+
* depuis 2 min 05 s », en MOT et en FORME (une coche, un triangle), jamais par la couleur seule.
|
|
1805
|
+
*
|
|
1806
|
+
* ```html
|
|
1807
|
+
* <st-freshness [instant]="positions.lueA()" [seuil]="60" [libelle]="t('positions.titre')"
|
|
1808
|
+
* (perimee)="signaler()" />
|
|
1809
|
+
* ```
|
|
1810
|
+
*
|
|
1811
|
+
* - `instant` : la derniere lecture reussie (`lueA()` d'une `ressourceRafraichie`) ; `seuil` : l'age,
|
|
1812
|
+
* en secondes, au-dela duquel la donnee est perimee, fourni par le serveur ou l'application.
|
|
1813
|
+
* - **L'age se relit chaque seconde, onglet visible seulement** ; a son retour, le texte est juste.
|
|
1814
|
+
* - **Aucune region vivante** : le texte se reecrit chaque seconde, et une region l'annoncerait en
|
|
1815
|
+
* boucle. L'application annonce, elle, ce qui compte (`perimee`).
|
|
1816
|
+
* - **`perimee`** est emise une fois a chaque franchissement du seuil (et des la premiere lecture si
|
|
1817
|
+
* la donnee est deja perimee) ; une donnee rafraichie repasse « a jour ».
|
|
1818
|
+
*/
|
|
1819
|
+
export declare class StFreshness {
|
|
1820
|
+
private readonly document;
|
|
1821
|
+
private readonly locale;
|
|
1822
|
+
private readonly fuseau;
|
|
1823
|
+
protected readonly catalogue: import("@angular/core").Signal<import("@starterlib/ui").CatalogueDuPointDEntree<import("@starterlib/ui/donnees").LibellesDonnees>>;
|
|
1824
|
+
/** L'instant de la donnee : `Date`, chaine ISO ou millisecondes. */
|
|
1825
|
+
readonly instant: import("@angular/core").InputSignal<string | number | Date>;
|
|
1826
|
+
/** L'age, en secondes, au-dela duquel la donnee est perimee. */
|
|
1827
|
+
readonly seuil: import("@angular/core").InputSignalWithTransform<number, unknown>;
|
|
1828
|
+
/** Ce qu'est la donnee (« Positions »), deja traduit ; `null` : rien devant l'etat. */
|
|
1829
|
+
readonly libelle: import("@angular/core").InputSignal<string | null>;
|
|
1830
|
+
/** Emise a chaque franchissement du seuil. */
|
|
1831
|
+
readonly perimee: import("@angular/core").OutputEmitterRef<void>;
|
|
1832
|
+
private readonly maintenant;
|
|
1833
|
+
private readonly enMillisecondes;
|
|
1834
|
+
protected readonly estValide: import("@angular/core").Signal<boolean>;
|
|
1835
|
+
/** L'age en secondes, jamais negatif (une horloge du poste en retard sur le serveur). */
|
|
1836
|
+
private readonly age;
|
|
1837
|
+
protected readonly estPerimee: import("@angular/core").Signal<boolean>;
|
|
1838
|
+
protected readonly icone: import("@angular/core").Signal<"iban" | "chargement" | "pause" | "message" | "essai" | "devise" | "cle" | "accessibilite" | "alimentation" | "appareil-photo" | "appareils" | "arborescence" | "asterisque" | "badge-coche" | "balance" | "banque" | "batiment" | "bifurcation" | "billets" | "billets-envoi" | "billets-pile" | "boite" | "boite-de-reception" | "bouclier" | "bouclier-alerte" | "bouclier-coche" | "bouclier-coeur" | "bouclier-croix" | "bouclier-moitie" | "bouclier-recherche" | "bouclier-utilisateur" | "boussole" | "bouton-curseur" | "bulle-question" | "cadenas" | "cadenas-horloge" | "cadenas-ouvert" | "cadre-pied" | "cadre-texte" | "calendrier" | "calendrier-evenement" | "calendrier-horloge" | "calendrier-jour" | "calques" | "carte-bancaire" | "carte-bancaire-barre" | "carte-bancaire-cadenas" | "carte-contact" | "carte-identite" | "cartes-empilees" | "case-cochee" | "casse" | "cercle" | "cercle-alerte" | "cercle-chevron-bas" | "cercle-coche" | "cercle-coche-ouvert" | "cercle-croix" | "cercle-info" | "cercle-moins" | "cercle-plus" | "cercle-question" | "certificat" | "chandelier" | "cheque" | "chevron-bas" | "chevron-droite" | "chevron-gauche" | "chevron-haut" | "chevrons-droite" | "chevrons-haut-bas" | "cible" | "cloche" | "cloche-sonnerie" | "coche" | "code" | "code-qr" | "code-qr-scanner" | "coffre-fort" | "colonnes" | "comparer" | "connexion" | "contraste" | "copie" | "corbeille" | "corbeille-croix" | "courriel" | "crayon" | "croix" | "curseur-clic" | "deconnexion" | "disposition" | "dollar" | "dossier" | "dossier-barre" | "dossier-ouvert" | "double-coche" | "drapeau" | "echange" | "eclair" | "empreinte-digitale" | "enregistrer" | "entree" | "envoyer" | "epaisseur-de-trait" | "epingle" | "etoile" | "euro" | "fichier" | "fichier-image" | "fichier-pdf" | "fichier-texte" | "filtre" | "filtre-barre" | "filtre-lignes" | "fleche-bas" | "fleche-bas-gauche" | "fleche-bas-ligne" | "fleche-droite" | "fleche-gauche" | "fleche-haut" | "fleche-haut-droite" | "fleche-haut-ligne" | "fleche-large-haut" | "fleches-gauche-droite" | "flocon" | "flou" | "formes" | "globe" | "graphique-anneau" | "graphique-barres" | "graphique-barres-cadre" | "graphique-camembert" | "graphique-ligne" | "graphique-lignes" | "grille" | "grille-lignes" | "hexagone" | "historique" | "horloge" | "horloge-fleche" | "imprimer" | "interdit" | "jalons" | "jauge" | "lecture" | "lien" | "lien-externe" | "lignes" | "lignes-crayon" | "liste" | "liste-coche" | "liste-controle" | "liste-numerotee" | "luminosite" | "lune" | "maillet" | "maison" | "marque-page" | "menu" | "menu-ouvert" | "minuteur" | "mise-au-point" | "mise-en-page-image" | "moins" | "nuage-barre" | "nuage-televerser" | "octogone-alerte" | "oeil" | "oeil-barre" | "panneau-gauche" | "parametres" | "parapluie" | "parchemin" | "passerelle" | "pieces" | "plus" | "pointeur" | "points" | "points-verticaux" | "portefeuille" | "portefeuille-cartes" | "presse-papiers-coche" | "presse-papiers-horloge" | "priorite-haute" | "rafraichir" | "recherche" | "recherche-barre" | "recherche-texte" | "rectangle-points" | "recu" | "redemarrer" | "reglages" | "regle" | "reseau" | "reseau-jauge" | "robot" | "rotation-arriere" | "routeur" | "sablier" | "sablier-bas" | "sablier-haut" | "sac-argent" | "sans-contact" | "serveur" | "soleil" | "style-de-trait" | "synchro" | "synchro-probleme" | "tableau" | "tableau-de-bord" | "tableau-de-bord-plus" | "tablette" | "tabulation" | "telecharger" | "telephone-mobile" | "televerser" | "tendance-baisse" | "tendance-hausse" | "terminal" | "tirelire" | "triangle-alerte" | "triangle-bas" | "triangle-haut" | "trombone" | "utilisateur" | "utilisateur-crayon" | "utilisateurs" | "visage" | "wifi" | "wifi-barre">;
|
|
1839
|
+
protected readonly texte: import("@angular/core").Signal<string>;
|
|
1840
|
+
/** L'instant lisible par la machine (`<time datetime>`). */
|
|
1841
|
+
protected readonly iso: import("@angular/core").Signal<string | null>;
|
|
1842
|
+
constructor();
|
|
1843
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<StFreshness, never>;
|
|
1844
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<StFreshness, "st-freshness", never, {
|
|
1845
|
+
"instant": {
|
|
1846
|
+
"alias": "instant";
|
|
1847
|
+
"required": true;
|
|
1848
|
+
"isSignal": true;
|
|
1849
|
+
};
|
|
1850
|
+
"seuil": {
|
|
1851
|
+
"alias": "seuil";
|
|
1852
|
+
"required": true;
|
|
1853
|
+
"isSignal": true;
|
|
1854
|
+
};
|
|
1855
|
+
"libelle": {
|
|
1856
|
+
"alias": "libelle";
|
|
1857
|
+
"required": false;
|
|
1858
|
+
"isSignal": true;
|
|
1859
|
+
};
|
|
1860
|
+
}, {
|
|
1861
|
+
"perimee": "perimee";
|
|
1862
|
+
}, never, never, true, never>;
|
|
1863
|
+
}
|
|
1864
|
+
/**
|
|
1865
|
+
* Les libelles de `@starterlib/ui/donnees` (P08-08) : le catalogue par point d'entree (AD-10, D154),
|
|
1866
|
+
* comme ceux de la navigation et des formulaires. La langue suit celle du dictionnaire du tronc.
|
|
1867
|
+
*/
|
|
1868
|
+
export interface LibellesDonnees {
|
|
1869
|
+
/** La sentinelle de `stLuJusquAuBout`, apres le dernier mot d'un document (« Fin du document »). */
|
|
1870
|
+
readonly finDuDocument: string;
|
|
1871
|
+
/** `st-freshness` a jour, son age relatif en argument (« A jour, il y a 12 s »). */
|
|
1872
|
+
readonly aJour: (age: string) => string;
|
|
1873
|
+
/** `st-freshness` perimee, la duree depuis le seuil en argument (« Perimee depuis 2 min 05 s »). */
|
|
1874
|
+
readonly perimeeDepuis: (duree: string) => string;
|
|
1875
|
+
/** Le nom de la donnee devant son etat, espace finale comprise (« Positions : »). */
|
|
1876
|
+
readonly libelleDeLaDonnee: (libelle: string) => string;
|
|
1877
|
+
}
|
|
1878
|
+
export declare const LIBELLES_DONNEES_FR: LibellesDonnees;
|
|
1879
|
+
export declare const LIBELLES_DONNEES_EN: LibellesDonnees;
|
|
1880
|
+
/**
|
|
1881
|
+
* Les catalogues des donnees par langue (sous-etiquette primaire : `fr`, `en`). Une application qui
|
|
1882
|
+
* ajoute une langue au dictionnaire du tronc ajoute la sienne ici, par
|
|
1883
|
+
* `fournirLibellesDonnees({ de: ... })`.
|
|
1884
|
+
*/
|
|
1885
|
+
export declare const ST_LIBELLES_DONNEES: InjectionToken<Readonly<Record<string, LibellesDonnees>>>;
|
|
1886
|
+
/** Ajoute (ou remplace) des catalogues des donnees, par langue. */
|
|
1887
|
+
export declare function fournirLibellesDonnees(catalogues: Readonly<Record<string, LibellesDonnees>>): Provider;
|
|
1888
|
+
/**
|
|
1889
|
+
* Le catalogue de la langue du dictionnaire du tronc ; le francais quand la langue n'en a pas, un
|
|
1890
|
+
* repli signale en developpement (D-29). A appeler dans un contexte d'injection.
|
|
1891
|
+
*/
|
|
1892
|
+
export declare function libellesDesDonnees(): Signal<LibellesDonnees>;
|
|
1893
|
+
/**
|
|
1894
|
+
* Le catalogue des donnees ET la langue de son repli (`catalogueDuPointDEntree`) : `lang` de ce
|
|
1895
|
+
* qu'il ecrit seul (D-29). A appeler dans un contexte d'injection.
|
|
1896
|
+
*/
|
|
1897
|
+
export declare function catalogueDesDonnees(): Signal<CatalogueDuPointDEntree<LibellesDonnees>>;
|
|
1672
1898
|
|
|
1673
1899
|
export {};
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { EstimateurDeForce } from "@starterlib/ui/saisie";
|
|
2
|
+
/** Les dictionnaires de langue que l'estimateur sait ajouter au dictionnaire commun. */
|
|
3
|
+
export type LangueDuDictionnaire = 'fr' | 'en';
|
|
4
|
+
/**
|
|
5
|
+
* Charge l'estimateur zxcvbn-ts (ADR web 0011) : son noyau, le dictionnaire commun et les claviers,
|
|
6
|
+
* puis un dictionnaire par langue demandee. Chaque morceau est un import DYNAMIQUE : l'outil de
|
|
7
|
+
* construction de l'application en fait des fichiers a part, et seuls les dictionnaires demandes se
|
|
8
|
+
* telechargent. Poids mesures (brotli 11, 2026-10-07) : noyau et commun 213 Ko ; avec le francais
|
|
9
|
+
* 471 Ko ; avec l'anglais 755 Ko ; les deux 1 009 Ko.
|
|
10
|
+
*
|
|
11
|
+
* Distance de Levenshtein active : un mot du dictionnaire a une ou deux lettres pres reste un mot du
|
|
12
|
+
* dictionnaire, et la jauge en devient plus prudente (`Motdepasse1!` passe de 2 a 1). Aucun appel
|
|
13
|
+
* reseau : le matcher des mots de passe divulgues (`@zxcvbn-ts/matcher-pwned`) n'est PAS branche,
|
|
14
|
+
* cette verification reste au serveur. Aucune traduction : le retour de la bibliotheque n'est pas
|
|
15
|
+
* montre.
|
|
16
|
+
*/
|
|
17
|
+
export declare function chargerEstimateurZxcvbn(langues?: readonly LangueDuDictionnaire[]): Promise<EstimateurDeForce>;
|
|
18
|
+
|
|
19
|
+
export {};
|