@starterlib/ui 0.10.13 → 0.11.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 (63) hide show
  1. package/LICENCES-TIERCES.md +9 -3
  2. package/README.md +167 -32
  3. package/assets/icones/catalogue.json +199 -4
  4. package/assets/icones/sprite.svg +14 -0
  5. package/assets/logos/starter-bank-clair.svg +1 -0
  6. package/assets/logos/starter-bank-monochrome.svg +1 -0
  7. package/assets/logos/starter-bank-sombre.svg +1 -0
  8. package/fesm2022/starterlib-ui-arbre.mjs +25 -25
  9. package/fesm2022/starterlib-ui-arbre.mjs.map +1 -1
  10. package/fesm2022/starterlib-ui-donnees.mjs +760 -274
  11. package/fesm2022/starterlib-ui-donnees.mjs.map +1 -1
  12. package/fesm2022/starterlib-ui-etats.mjs +82 -82
  13. package/fesm2022/starterlib-ui-etats.mjs.map +1 -1
  14. package/fesm2022/starterlib-ui-force.mjs +18 -0
  15. package/fesm2022/starterlib-ui-force.mjs.map +1 -0
  16. package/fesm2022/starterlib-ui-formulaires.mjs +580 -198
  17. package/fesm2022/starterlib-ui-formulaires.mjs.map +1 -1
  18. package/fesm2022/starterlib-ui-graphiques.mjs +934 -0
  19. package/fesm2022/starterlib-ui-graphiques.mjs.map +1 -0
  20. package/fesm2022/starterlib-ui-indicateurs.mjs +59 -59
  21. package/fesm2022/starterlib-ui-indicateurs.mjs.map +1 -1
  22. package/fesm2022/starterlib-ui-libelles-en.mjs +11 -0
  23. package/fesm2022/starterlib-ui-libelles-en.mjs.map +1 -1
  24. package/fesm2022/starterlib-ui-listes.mjs +727 -315
  25. package/fesm2022/starterlib-ui-listes.mjs.map +1 -1
  26. package/fesm2022/starterlib-ui-messagerie.mjs +45 -45
  27. package/fesm2022/starterlib-ui-messagerie.mjs.map +1 -1
  28. package/fesm2022/starterlib-ui-mise-en-page.mjs +46 -46
  29. package/fesm2022/starterlib-ui-mise-en-page.mjs.map +1 -1
  30. package/fesm2022/starterlib-ui-navigation.mjs +200 -42
  31. package/fesm2022/starterlib-ui-navigation.mjs.map +1 -1
  32. package/fesm2022/starterlib-ui-onglets.mjs +20 -20
  33. package/fesm2022/starterlib-ui-onglets.mjs.map +1 -1
  34. package/fesm2022/starterlib-ui-parcours.mjs +631 -168
  35. package/fesm2022/starterlib-ui-parcours.mjs.map +1 -1
  36. package/fesm2022/starterlib-ui-qr.mjs +11 -11
  37. package/fesm2022/starterlib-ui-qr.mjs.map +1 -1
  38. package/fesm2022/starterlib-ui-saisie.mjs +617 -511
  39. package/fesm2022/starterlib-ui-saisie.mjs.map +1 -1
  40. package/fesm2022/starterlib-ui-selection.mjs +64 -64
  41. package/fesm2022/starterlib-ui-selection.mjs.map +1 -1
  42. package/fesm2022/starterlib-ui-sens.mjs +3 -3
  43. package/fesm2022/starterlib-ui-surfaces.mjs +246 -242
  44. package/fesm2022/starterlib-ui-surfaces.mjs.map +1 -1
  45. package/fesm2022/starterlib-ui-virtuel.mjs +272 -0
  46. package/fesm2022/starterlib-ui-virtuel.mjs.map +1 -0
  47. package/fesm2022/starterlib-ui.mjs +1142 -898
  48. package/fesm2022/starterlib-ui.mjs.map +1 -1
  49. package/package.json +31 -3
  50. package/types/starterlib-ui-donnees.d.ts +231 -5
  51. package/types/starterlib-ui-force.d.ts +19 -0
  52. package/types/starterlib-ui-formulaires.d.ts +132 -1
  53. package/types/starterlib-ui-graphiques.d.ts +421 -0
  54. package/types/starterlib-ui-indicateurs.d.ts +11 -4
  55. package/types/starterlib-ui-listes.d.ts +230 -13
  56. package/types/starterlib-ui-navigation.d.ts +82 -1
  57. package/types/starterlib-ui-parcours.d.ts +265 -5
  58. package/types/starterlib-ui-saisie.d.ts +91 -10
  59. package/types/starterlib-ui-selection.d.ts +1 -1
  60. package/types/starterlib-ui-surfaces.d.ts +10 -9
  61. package/types/starterlib-ui-virtuel.d.ts +103 -0
  62. package/types/starterlib-ui.d.ts +175 -24
  63. package/virtuel/README.md +46 -0
@@ -0,0 +1,421 @@
1
+ import * as i0 from "@angular/core";
2
+ import { InjectionToken, Provider, Signal } from "@angular/core";
3
+ import { AnnonceLocale, CatalogueDuPointDEntree } from "@starterlib/ui";
4
+ import { ColonneDeTableau } from "@starterlib/ui/listes";
5
+ import { UniteDeTemps } from "@starterlib/util/graduations";
6
+ /**
7
+ * Les donnees d'un graphique (P08-07), telles que l'API les donne : des instants ISO 8601 et des
8
+ * valeurs en CHAINE DECIMALE, jamais en flottant (regles-front §2). L'echelle se calcule sur des
9
+ * nombres derives ; l'affichage relit la chaine.
10
+ */
11
+ /**
12
+ * Le trait d'une serie : la couleur ne porte jamais rien seule (WCAG 1.4.1), et sous contraste force
13
+ * le trait est tout ce qui distingue deux series. `mixte` (trait et point) sert la quatrieme.
14
+ */
15
+ export type TraitDeSerie = 'plein' | 'tirets' | 'points' | 'mixte';
16
+ /** Un point d'une serie. */
17
+ export interface PointDeSerie {
18
+ /**
19
+ * ISO 8601 : un instant avec son decalage (`2026-10-07T08:00:00Z`), une heure de mur lue dans le
20
+ * fuseau du graphique (`2026-10-07T10:00`), ou un jour seul (`2026-10-07`), qui vaut minuit DANS
21
+ * ce fuseau : une courbe journaliere ne change pas de jour selon qui la regarde.
22
+ */
23
+ readonly instant: string;
24
+ /** La valeur en chaine decimale (`12450.30`, `-0.0825`) ; illisible, le point est ecarte. */
25
+ readonly valeur: string;
26
+ }
27
+ /** Une serie : son libelle (legende et colonne du tableau), ses points, son trait. */
28
+ export interface SerieDeGraphique {
29
+ readonly libelle: string;
30
+ /** 500 points au plus, recommandes : au-dela, la reduction se fait cote SERVEUR. */
31
+ readonly points: readonly PointDeSerie[];
32
+ /** Par defaut, selon le rang : `plein`, `tirets`, `points`, `mixte`. */
33
+ readonly trait?: TraitDeSerie;
34
+ }
35
+ /**
36
+ * L'aire « perte depuis le sommet » : entre le PLAFOND fourni (le sommet atteint jusque-la, calcule
37
+ * par le serveur) et la premiere serie, hachuree. Le composant ne calcule aucun sommet.
38
+ */
39
+ export interface ZoneDePerte {
40
+ /** Le nom de l'aire, dans la legende et en tete de sa colonne du tableau. */
41
+ readonly libelle: string;
42
+ /** Le plafond, aux instants de la premiere serie. */
43
+ readonly plafond: readonly PointDeSerie[];
44
+ }
45
+ /** Un evenement date : un trait vertical numerote, et sa ligne dans la liste des evenements. */
46
+ export interface MarqueurDeGraphique {
47
+ /** Meme ecriture qu'un point (`PointDeSerie.instant`). */
48
+ readonly instant: string;
49
+ readonly libelle: string;
50
+ }
51
+ /**
52
+ * Les libelles de `@starterlib/ui/graphiques` (P08-07) : le catalogue par point d'entree (AD-10,
53
+ * D154), comme ceux des donnees et de la navigation. La langue suit celle du dictionnaire du tronc.
54
+ */
55
+ export interface LibellesGraphiques {
56
+ /** Le bouton de `st-line-chart` qui montre le tableau equivalent. */
57
+ readonly voirLesDonnees: string;
58
+ /** Le meme bouton, le tableau montre : revenir a la courbe. */
59
+ readonly voirLeGraphique: string;
60
+ /** Annonce de la bascule vers le tableau. */
61
+ readonly tableauAffiche: string;
62
+ /** Annonce de la bascule vers la courbe. */
63
+ readonly graphiqueAffiche: string;
64
+ /** L'en-tete de la colonne des instants du tableau equivalent. */
65
+ readonly colonneDate: string;
66
+ /** Le nom de la legende (liste des series). */
67
+ readonly legende: string;
68
+ /** Le nom de la liste des evenements dates (marqueurs). */
69
+ readonly evenements: string;
70
+ /** Entre la date d'un evenement et son libelle (« 12 mars 2026 : changement de strategie »). */
71
+ readonly separateurDEvenement: string;
72
+ /** Une courbe ou une tendance sans aucun point lisible. */
73
+ readonly aucuneDonnee: string;
74
+ /**
75
+ * Ce que dit une tendance decorative (`st-sparkline` sans etiquette) : la derniere valeur et la
76
+ * variation depuis le premier point, deja formatees ; `null` : un seul point.
77
+ */
78
+ readonly tendance: (dernier: string, variation: string | null) => string;
79
+ }
80
+ export declare const LIBELLES_GRAPHIQUES_FR: LibellesGraphiques;
81
+ export declare const LIBELLES_GRAPHIQUES_EN: LibellesGraphiques;
82
+ /**
83
+ * Les catalogues des graphiques par langue (sous-etiquette primaire : `fr`, `en`). Une application qui
84
+ * ajoute une langue au dictionnaire du tronc ajoute la sienne ici, par
85
+ * `fournirLibellesGraphiques({ de: ... })`.
86
+ */
87
+ export declare const ST_LIBELLES_GRAPHIQUES: InjectionToken<Readonly<Record<string, LibellesGraphiques>>>;
88
+ /** Ajoute (ou remplace) des catalogues des graphiques, par langue. */
89
+ export declare function fournirLibellesGraphiques(catalogues: Readonly<Record<string, LibellesGraphiques>>): Provider;
90
+ /**
91
+ * Le catalogue de la langue du dictionnaire du tronc ; le francais quand la langue n'en a pas, un
92
+ * repli signale en developpement (D-29). A appeler dans un contexte d'injection.
93
+ */
94
+ export declare function libellesDesGraphiques(): Signal<LibellesGraphiques>;
95
+ /**
96
+ * Le catalogue des graphiques ET la langue de son repli (`catalogueDuPointDEntree`) : `lang` de ce
97
+ * qu'il ecrit seul (D-29). A appeler dans un contexte d'injection.
98
+ */
99
+ export declare function catalogueDesGraphiques(): Signal<CatalogueDuPointDEntree<LibellesGraphiques>>;
100
+ /** Le vrai signe moins (D30, EA-16), comme `st-number` et `st-money`. */
101
+ declare const SIGNE_MOINS = "−";
102
+ /** Un point lu : l'instant (millisecondes), la valeur derivee pour l'echelle, la chaine pour l'affichage. */
103
+ interface PointLu {
104
+ readonly instant: number;
105
+ readonly valeur: number;
106
+ readonly texte: `${number}`;
107
+ }
108
+ /** Vrai si `texte` est une chaine decimale lisible. */
109
+ declare function estDecimale(texte: string): texte is `${number}`;
110
+ /**
111
+ * Le fuseau, s'il est connu d'Intl ; sinon UTC, signale en developpement. Un fuseau mal ecrit ne
112
+ * casse pas la page : il leverait a chaque format.
113
+ */
114
+ declare function fuseauLisible(fuseau: string): string;
115
+ /**
116
+ * L'instant d'un point ou d'un marqueur, en millisecondes : un jour seul vaut minuit dans `fuseau`,
117
+ * le reste se lit comme `st-date` (`lireInstant`) ; `null` si illisible.
118
+ */
119
+ declare function instantDuPoint(texte: string, fuseau: string): number | null;
120
+ /**
121
+ * Les points lisibles d'une serie, dans l'ordre du temps. Un point illisible (instant ou valeur) est
122
+ * ecarte, et signale en developpement : une courbe ne ment pas en le placant a zero.
123
+ */
124
+ declare function lirePoints(points: readonly PointDeSerie[], fuseau: string, nom: string): PointLu[];
125
+ /** Les evenements lisibles, dans l'ordre du temps ; un instant illisible est ecarte. */
126
+ declare function lireMarqueurs(marqueurs: readonly MarqueurDeGraphique[], fuseau: string): {
127
+ readonly instant: number;
128
+ readonly libelle: string;
129
+ }[];
130
+ /**
131
+ * Des instants dans l'ordre du temps : les lignes du tableau equivalent. L'ordre d'une serie
132
+ * temporelle n'est pas un tri de tableau (V4-3) : aucune colonne n'y est triable, et la courbe
133
+ * montre deja ces instants dans cet ordre.
134
+ */
135
+ declare function dansLOrdreDuTemps(instants: Iterable<number>): number[];
136
+ /**
137
+ * La difference EXACTE `a - b` de deux chaines decimales, en entiers longs : « 12450.3 » moins
138
+ * « 11250.30 » donne « 1200.00 ». Une variation ne passe jamais par un flottant.
139
+ */
140
+ declare function differenceDecimale(a: `${number}`, b: `${number}`): `${number}`;
141
+ /** Ce que vaut une valeur : un montant dans sa devise, un pourcentage (3.25 : « 3,25 % »), un nombre. */
142
+ interface FormeDeValeur {
143
+ readonly devise: string | null;
144
+ readonly pourcentage: boolean;
145
+ }
146
+ /**
147
+ * Le formateur des valeurs, depuis leur CHAINE exacte (Intl, ES2023) : un nombre garde les decimales
148
+ * de sa chaine (« 3.10 » : « 3,10 ») ; un montant, celles de sa devise. `signe` : la variation, son
149
+ * signe ecrit (« +1 200,00 € »), zero sans signe. Les formats se gardent par nombre de decimales :
150
+ * 500 points n'en creent qu'une poignee.
151
+ */
152
+ declare function formateurDeValeurs(locale: string, forme: FormeDeValeur): (texte: `${number}`, signe?: boolean) => string;
153
+ /**
154
+ * Le formateur des graduations d'un axe : les decimales du pas ; au-dela du million, la forme compacte
155
+ * (« 1,25 M€ »), pour qu'une etiquette tienne a 320 px. Une graduation n'est qu'un repere : elle ne
156
+ * relit aucune chaine.
157
+ */
158
+ declare function formateurDeGraduations(locale: string, forme: FormeDeValeur, pas: number, plusGrande: number): (valeur: number) => string;
159
+ /** Vrai si chaque instant tombe a minuit dans le fuseau : une serie de jours, sans heure a dire. */
160
+ declare function tousAMinuit(instants: readonly number[], fuseau: string): boolean;
161
+ /**
162
+ * Le formateur des reperes de l'axe du temps, selon l'unite du pas : l'heure, le jour et le mois, le
163
+ * mois (l'annee au premier repere et en janvier), l'annee. Dans le fuseau du graphique.
164
+ */
165
+ declare function formateurDeReperes(locale: string, fuseau: string): (instant: number, unite: UniteDeTemps, premier: boolean) => string;
166
+ /** Le formateur des dates du tableau equivalent : le jour, et l'heure si la serie en porte une. */
167
+ declare function formateurDeDates(locale: string, fuseau: string, avecHeure: boolean): (instant: number) => string;
168
+ /** Une serie lue : son rang (1 a 4, sa couleur), son trait, son libelle, ses points dans l'ordre. */
169
+ interface SerieLue {
170
+ readonly rang: number;
171
+ readonly trait: TraitDeSerie;
172
+ readonly libelle: string;
173
+ readonly points: readonly PointLu[];
174
+ }
175
+ /** Un evenement lu, numerote dans l'ordre du temps. */
176
+ interface MarqueurLu {
177
+ readonly numero: number;
178
+ readonly instant: number;
179
+ readonly iso: string;
180
+ readonly date: string;
181
+ readonly libelle: string;
182
+ }
183
+ /** Ce que le gabarit dessine : calcule une fois par changement des donnees ou de la largeur. */
184
+ interface Dessin {
185
+ readonly largeur: number;
186
+ readonly hauteur: number;
187
+ /** Le cadre du trace : de `gauche` a `droite`, de `haut` a `bas`. */
188
+ readonly gauche: number;
189
+ readonly droite: number;
190
+ readonly haut: number;
191
+ readonly bas: number;
192
+ readonly graduations: readonly {
193
+ readonly y: number;
194
+ readonly texte: string;
195
+ readonly zero: boolean;
196
+ }[];
197
+ readonly reperes: readonly {
198
+ readonly x: number;
199
+ readonly texte: string;
200
+ readonly ancre: 'start' | 'middle' | 'end';
201
+ }[];
202
+ readonly traces: readonly {
203
+ readonly rang: number;
204
+ readonly trait: TraitDeSerie;
205
+ /** Le chemin de la serie ; `null` pour un point seul, dessine en disque (`point`). */
206
+ readonly d: string | null;
207
+ readonly point: {
208
+ readonly x: number;
209
+ readonly y: number;
210
+ } | null;
211
+ }[];
212
+ readonly perte: string | null;
213
+ readonly marqueurs: readonly {
214
+ readonly x: number;
215
+ readonly numero: number;
216
+ }[];
217
+ }
218
+ /**
219
+ * Une courbe dans le temps (P08-07, DEC-103) : une a quatre series, l'aire « perte depuis le
220
+ * sommet » sous un plafond fourni, des evenements dates ; en SVG ecrit a la main, sans bibliotheque.
221
+ *
222
+ * ```html
223
+ * <st-line-chart etiquette="Capital du compte" [resume]="resume()" devise="EUR"
224
+ * [series]="[{ libelle: 'Capital', points: capital() }]"
225
+ * [zonePerte]="{ libelle: 'Perte depuis le sommet', plafond: sommets() }" />
226
+ * ```
227
+ *
228
+ * - **Accessible** : un `svg` `role="img"` nomme (`etiquette`) et decrit (`resume`, texte fourni et
229
+ * visible) ; la legende et les evenements sont du TEXTE ; « Voir les donnees » bascule vers un
230
+ * `st-data-table` equivalent, au clavier, et la bascule s'annonce.
231
+ * - **La couleur ne dit rien seule** : chaque serie a son trait (plein, tirets, points, mixte), que le
232
+ * contraste force garde quand les couleurs s'effacent ; l'aire de perte est hachuree.
233
+ * - **Des chaines decimales** : l'echelle se calcule sur des nombres derives, toute valeur affichee
234
+ * relit sa chaine (regles-front §2). Les graduations viennent de `@starterlib/util/graduations`.
235
+ * - **Sobre** : aucune animation ; un calcul par changement des donnees ou de la largeur, jamais a
236
+ * la seconde. 500 points par serie au plus, recommandes : au-dela, la reduction se fait cote
237
+ * serveur (signale en developpement), le composant ne reechantillonne pas.
238
+ * - `pariteEchelle` : des graduations symetriques autour de zero, un gain et une perte de meme
239
+ * ampleur a la meme taille (parite d'echelle).
240
+ */
241
+ export declare class StLineChart {
242
+ private readonly locale;
243
+ private readonly fuseauParDefaut;
244
+ protected readonly catalogue: import("@angular/core").Signal<import("@starterlib/ui").CatalogueDuPointDEntree<import("@starterlib/ui/graphiques").LibellesGraphiques>>;
245
+ protected readonly annonce: AnnonceLocale;
246
+ /** Une a quatre series ; au-dela, les suivantes ne sont pas dessinees (signale en developpement). */
247
+ readonly series: import("@angular/core").InputSignal<readonly SerieDeGraphique[]>;
248
+ /** L'aire « perte depuis le sommet » sous le plafond fourni, sur la premiere serie. */
249
+ readonly zonePerte: import("@angular/core").InputSignal<ZoneDePerte | null>;
250
+ readonly marqueurs: import("@angular/core").InputSignal<readonly MarqueurDeGraphique[]>;
251
+ /** Code ISO 4217 : les valeurs sont des montants dans cette devise. */
252
+ readonly devise: import("@angular/core").InputSignal<string | null>;
253
+ /** Sans devise : les valeurs sont EN POUR CENT, telles que l'API les donne (3.25 : « 3,25 % »). */
254
+ readonly pourcentage: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
255
+ /** Le fuseau des reperes et des dates ; par defaut, celui de l'application. */
256
+ readonly fuseau: import("@angular/core").InputSignal<string | null>;
257
+ /** Le nom du graphique, deja traduit. */
258
+ readonly etiquette: import("@angular/core").InputSignal<string>;
259
+ /** Ce que la courbe montre, en une ou deux phrases, deja traduites : lu et affiche. */
260
+ readonly resume: import("@angular/core").InputSignal<string>;
261
+ /** Graduations symetriques autour de zero : un gain et une perte a la meme taille. */
262
+ readonly pariteEchelle: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
263
+ /** La hauteur du trace, en pixels CSS. */
264
+ readonly hauteur: import("@angular/core").InputSignal<number>;
265
+ protected readonly vueDonnees: import("@angular/core").WritableSignal<boolean>;
266
+ private readonly largeur;
267
+ protected readonly identifiants: {
268
+ readonly motif: `${string}-motif`;
269
+ readonly resume: `${string}-resume`;
270
+ };
271
+ private readonly fuseauDeRendu;
272
+ private readonly forme;
273
+ protected readonly seriesLues: import("@angular/core").Signal<readonly SerieLue[]>;
274
+ protected readonly plafond: import("@angular/core").Signal<{
275
+ libelle: string;
276
+ points: PointLu[];
277
+ } | null>;
278
+ protected readonly marqueursLus: import("@angular/core").Signal<readonly MarqueurLu[]>;
279
+ /** Aucun point lisible, ni dans les series ni dans le plafond. */
280
+ protected readonly vide: import("@angular/core").Signal<boolean>;
281
+ protected readonly dessin: import("@angular/core").Signal<Dessin | null>;
282
+ /** Les colonnes du tableau equivalent : l'instant, chaque serie, le plafond. */
283
+ protected readonly colonnes: import("@angular/core").Signal<readonly ColonneDeTableau[]>;
284
+ /** Une ligne par instant, dans l'ordre du temps ; chaque valeur relue depuis sa chaine. */
285
+ protected readonly lignes: import("@angular/core").Signal<readonly Readonly<Record<string, string>>[]>;
286
+ constructor();
287
+ /** La courbe ou le tableau ; le bouton garde le focus, et la bascule s'annonce. */
288
+ protected basculer(): void;
289
+ static ɵfac: i0.ɵɵFactoryDeclaration<StLineChart, never>;
290
+ static ɵcmp: i0.ɵɵComponentDeclaration<StLineChart, "st-line-chart", never, {
291
+ "series": {
292
+ "alias": "series";
293
+ "required": true;
294
+ "isSignal": true;
295
+ };
296
+ "zonePerte": {
297
+ "alias": "zonePerte";
298
+ "required": false;
299
+ "isSignal": true;
300
+ };
301
+ "marqueurs": {
302
+ "alias": "marqueurs";
303
+ "required": false;
304
+ "isSignal": true;
305
+ };
306
+ "devise": {
307
+ "alias": "devise";
308
+ "required": false;
309
+ "isSignal": true;
310
+ };
311
+ "pourcentage": {
312
+ "alias": "pourcentage";
313
+ "required": false;
314
+ "isSignal": true;
315
+ };
316
+ "fuseau": {
317
+ "alias": "fuseau";
318
+ "required": false;
319
+ "isSignal": true;
320
+ };
321
+ "etiquette": {
322
+ "alias": "etiquette";
323
+ "required": true;
324
+ "isSignal": true;
325
+ };
326
+ "resume": {
327
+ "alias": "resume";
328
+ "required": true;
329
+ "isSignal": true;
330
+ };
331
+ "pariteEchelle": {
332
+ "alias": "pariteEchelle";
333
+ "required": false;
334
+ "isSignal": true;
335
+ };
336
+ "hauteur": {
337
+ "alias": "hauteur";
338
+ "required": false;
339
+ "isSignal": true;
340
+ };
341
+ }, {}, never, never, true, never>;
342
+ }
343
+ /**
344
+ * Une tendance (P08-07) : une serie, sans axe, a cote d'un chiffre ou dans une cellule ; meme moteur
345
+ * d'echelle que `st-line-chart` (`@starterlib/util/graduations`).
346
+ *
347
+ * ```html
348
+ * <st-sparkline [points]="soldes()" devise="EUR" />
349
+ * <st-sparkline [points]="cours()" etiquette="Cours sur trente jours, en hausse de 4 %" />
350
+ * ```
351
+ *
352
+ * - Sans `etiquette` : DECORATIVE (`aria-hidden`), et toujours accompagnee de son texte, la derniere
353
+ * valeur et la variation depuis le premier point, relues depuis leurs chaines (variation calculee
354
+ * exactement, jamais en flottant). Ce texte se lit en phrase (« Derniere valeur : ..., variation :
355
+ * ... »), le signe moins en toutes lettres.
356
+ * - Avec `etiquette` : une image NOMMEE, sans texte ; l'etiquette dit la tendance.
357
+ * - Le trait garde son epaisseur quelle que soit la taille de la boite (`non-scaling-stroke`) ;
358
+ * aucune animation.
359
+ */
360
+ export declare class StSparkline {
361
+ private readonly locale;
362
+ private readonly libellesDuTronc;
363
+ private readonly fuseauParDefaut;
364
+ protected readonly catalogue: import("@angular/core").Signal<import("@starterlib/ui").CatalogueDuPointDEntree<import("@starterlib/ui/graphiques").LibellesGraphiques>>;
365
+ readonly points: import("@angular/core").InputSignal<readonly PointDeSerie[]>;
366
+ /** `null` : decorative, avec son texte. Donnee : le nom de l'image, deja traduit, sans texte. */
367
+ readonly etiquette: import("@angular/core").InputSignal<string | null>;
368
+ /** Code ISO 4217 : les valeurs sont des montants dans cette devise. */
369
+ readonly devise: import("@angular/core").InputSignal<string | null>;
370
+ /** Sans devise : les valeurs sont EN POUR CENT (3.25 : « 3,25 % »). */
371
+ readonly pourcentage: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
372
+ readonly trait: import("@angular/core").InputSignal<TraitDeSerie>;
373
+ /** Le fuseau de lecture des instants sans decalage ; par defaut, celui de l'application. */
374
+ readonly fuseau: import("@angular/core").InputSignal<string | null>;
375
+ private readonly lus;
376
+ protected readonly trace: import("@angular/core").Signal<{
377
+ ligne: string | null;
378
+ dernier: string;
379
+ } | null>;
380
+ /** La derniere valeur et la variation, vues et lues ; `null` sans aucun point. */
381
+ protected readonly texte: import("@angular/core").Signal<{
382
+ dernier: string;
383
+ variation: string | null;
384
+ lu: string;
385
+ } | null>;
386
+ static ɵfac: i0.ɵɵFactoryDeclaration<StSparkline, never>;
387
+ static ɵcmp: i0.ɵɵComponentDeclaration<StSparkline, "st-sparkline", never, {
388
+ "points": {
389
+ "alias": "points";
390
+ "required": true;
391
+ "isSignal": true;
392
+ };
393
+ "etiquette": {
394
+ "alias": "etiquette";
395
+ "required": false;
396
+ "isSignal": true;
397
+ };
398
+ "devise": {
399
+ "alias": "devise";
400
+ "required": false;
401
+ "isSignal": true;
402
+ };
403
+ "pourcentage": {
404
+ "alias": "pourcentage";
405
+ "required": false;
406
+ "isSignal": true;
407
+ };
408
+ "trait": {
409
+ "alias": "trait";
410
+ "required": false;
411
+ "isSignal": true;
412
+ };
413
+ "fuseau": {
414
+ "alias": "fuseau";
415
+ "required": false;
416
+ "isSignal": true;
417
+ };
418
+ }, {}, never, never, true, never>;
419
+ }
420
+
421
+ export {};
@@ -6,8 +6,11 @@ import { InjectionToken } from "@angular/core";
6
6
  * ⚠️ `primaire` et non « info » : les deux designaient deja la meme couleur
7
7
  * d'accent, et rien ne distinguait un statut « info » d'un statut « primaire »
8
8
  * ailleurs dans le socle.
9
+ *
10
+ * `essai` (P08-04) : un environnement fictif (« Donnees fictives », « Bac a sable »), avec sa
11
+ * fiole ; le mot est le libelle, fourni par l'application.
9
12
  */
10
- export type TonDeStatut = TonSemantique;
13
+ export type TonDeStatut = TonSemantique | Extract<Ton, 'essai'>;
11
14
  /**
12
15
  * `md` (defaut) : 24 px, libelle de 11 px, icone de 16 px au trait (planche 2 de Claude Design).
13
16
  * `sm` : 18 px, icone de 14 px PLEINE, pour les tableaux denses (a cette taille, un trait ne
@@ -49,11 +52,12 @@ export declare class StStatusPill {
49
52
  readonly libelle: import("@angular/core").InputSignal<string>;
50
53
  /**
51
54
  * `null` : la forme du ton (neutre `cercle`, information et primaire `cercle-info`, succes
52
- * `cercle-coche`, avertissement `triangle-alerte`, danger `cercle-croix`). Fournie, une forme
55
+ * `cercle-coche`, avertissement `triangle-alerte`, erreur et danger `cercle-croix`, essai `essai`).
56
+ * Fournie, une forme
53
57
  * plus precise : `horloge` (en attente), `octogone-alerte` (bloque), `interdit` (opposition).
54
58
  */
55
59
  readonly icone: import("@angular/core").InputSignal<Icone | null>;
56
- readonly ton: import("@angular/core").InputSignal<TonSemantique>;
60
+ readonly ton: import("@angular/core").InputSignal<TonDeStatut>;
57
61
  readonly taille: import("@angular/core").InputSignal<TailleDePastille>;
58
62
  readonly variante: import("@angular/core").InputSignal<VarianteDePastille>;
59
63
  readonly casse: import("@angular/core").InputSignal<CasseDePastille>;
@@ -200,7 +204,10 @@ export declare class StBadge {
200
204
  };
201
205
  }, {}, never, never, true, never>;
202
206
  }
203
- /** Le ton de l'etiquette : papier teinte du ton (`discrete`) ou aplat (`pleine`). */
207
+ /**
208
+ * Le ton de l'etiquette : papier teinte du ton (`discrete`) ou aplat (`pleine`). `essai` (P08-04) :
209
+ * un environnement fictif, dont le mot est le libelle (« Donnees fictives »).
210
+ */
204
211
  export type TonDEtiquette = Exclude<Ton, 'discret' | 'inverse'>;
205
212
  /**
206
213
  * `md` (defaut) : 22 px, 4 x 10 de marge (planches 10 a 12) ; `sm` : 18 px, 2 x 8 (planches 2,