@starterlib/ui 0.7.2 → 0.8.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 (35) hide show
  1. package/README.md +95 -42
  2. package/fesm2022/starterlib-ui-arbre.mjs +82 -0
  3. package/fesm2022/starterlib-ui-arbre.mjs.map +1 -0
  4. package/fesm2022/starterlib-ui-donnees.mjs +532 -0
  5. package/fesm2022/starterlib-ui-donnees.mjs.map +1 -0
  6. package/fesm2022/starterlib-ui-formulaires.mjs +2 -1
  7. package/fesm2022/starterlib-ui-formulaires.mjs.map +1 -1
  8. package/fesm2022/starterlib-ui-interactions.mjs +34 -589
  9. package/fesm2022/starterlib-ui-interactions.mjs.map +1 -1
  10. package/fesm2022/starterlib-ui-libelles-en.mjs +142 -0
  11. package/fesm2022/starterlib-ui-libelles-en.mjs.map +1 -0
  12. package/fesm2022/starterlib-ui-listes.mjs +671 -0
  13. package/fesm2022/starterlib-ui-listes.mjs.map +1 -0
  14. package/fesm2022/starterlib-ui-navigation.mjs +246 -0
  15. package/fesm2022/starterlib-ui-navigation.mjs.map +1 -0
  16. package/fesm2022/starterlib-ui-onglets.mjs +137 -0
  17. package/fesm2022/starterlib-ui-onglets.mjs.map +1 -0
  18. package/fesm2022/starterlib-ui-saisie.mjs +1632 -0
  19. package/fesm2022/starterlib-ui-saisie.mjs.map +1 -0
  20. package/fesm2022/starterlib-ui-selection.mjs +269 -0
  21. package/fesm2022/starterlib-ui-selection.mjs.map +1 -0
  22. package/fesm2022/starterlib-ui.mjs +105 -2931
  23. package/fesm2022/starterlib-ui.mjs.map +1 -1
  24. package/package.json +35 -3
  25. package/types/starterlib-ui-arbre.d.ts +51 -0
  26. package/types/starterlib-ui-donnees.d.ts +228 -0
  27. package/types/starterlib-ui-formulaires.d.ts +5 -4
  28. package/types/starterlib-ui-interactions.d.ts +4 -316
  29. package/types/starterlib-ui-libelles-en.d.ts +25 -0
  30. package/types/starterlib-ui-listes.d.ts +432 -0
  31. package/types/starterlib-ui-navigation.d.ts +104 -0
  32. package/types/starterlib-ui-onglets.d.ts +89 -0
  33. package/types/starterlib-ui-saisie.d.ts +924 -0
  34. package/types/starterlib-ui-selection.d.ts +112 -0
  35. package/types/starterlib-ui.d.ts +9 -1575
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@starterlib/ui",
3
- "version": "0.7.2",
3
+ "version": "0.8.0",
4
4
  "description": "Bibliotheque de composants st-* du socle frontal starter, sur CDK et Aria.",
5
5
  "license": "UNLICENSED",
6
6
  "sideEffects": false,
@@ -25,8 +25,8 @@
25
25
  "@angular/forms": "^22.1.0",
26
26
  "@angular/cdk": "^22.1.0",
27
27
  "@angular/aria": "^22.1.0",
28
- "@starterlib/tokens": "^0.7.0",
29
- "@starterlib/util": "^0.7.0"
28
+ "@starterlib/tokens": "^0.8.0",
29
+ "@starterlib/util": "^0.8.0"
30
30
  },
31
31
  "peerDependenciesMeta": {
32
32
  "@angular/cdk": {
@@ -49,6 +49,14 @@
49
49
  "types": "./types/starterlib-ui.d.ts",
50
50
  "default": "./fesm2022/starterlib-ui.mjs"
51
51
  },
52
+ "./arbre": {
53
+ "types": "./types/starterlib-ui-arbre.d.ts",
54
+ "default": "./fesm2022/starterlib-ui-arbre.mjs"
55
+ },
56
+ "./donnees": {
57
+ "types": "./types/starterlib-ui-donnees.d.ts",
58
+ "default": "./fesm2022/starterlib-ui-donnees.mjs"
59
+ },
52
60
  "./formulaires": {
53
61
  "types": "./types/starterlib-ui-formulaires.d.ts",
54
62
  "default": "./fesm2022/starterlib-ui-formulaires.mjs"
@@ -57,6 +65,30 @@
57
65
  "types": "./types/starterlib-ui-interactions.d.ts",
58
66
  "default": "./fesm2022/starterlib-ui-interactions.mjs"
59
67
  },
68
+ "./libelles-en": {
69
+ "types": "./types/starterlib-ui-libelles-en.d.ts",
70
+ "default": "./fesm2022/starterlib-ui-libelles-en.mjs"
71
+ },
72
+ "./listes": {
73
+ "types": "./types/starterlib-ui-listes.d.ts",
74
+ "default": "./fesm2022/starterlib-ui-listes.mjs"
75
+ },
76
+ "./navigation": {
77
+ "types": "./types/starterlib-ui-navigation.d.ts",
78
+ "default": "./fesm2022/starterlib-ui-navigation.mjs"
79
+ },
80
+ "./onglets": {
81
+ "types": "./types/starterlib-ui-onglets.d.ts",
82
+ "default": "./fesm2022/starterlib-ui-onglets.mjs"
83
+ },
84
+ "./saisie": {
85
+ "types": "./types/starterlib-ui-saisie.d.ts",
86
+ "default": "./fesm2022/starterlib-ui-saisie.mjs"
87
+ },
88
+ "./selection": {
89
+ "types": "./types/starterlib-ui-selection.d.ts",
90
+ "default": "./fesm2022/starterlib-ui-selection.mjs"
91
+ },
60
92
  "./surfaces": {
61
93
  "types": "./types/starterlib-ui-surfaces.d.ts",
62
94
  "default": "./fesm2022/starterlib-ui-surfaces.mjs"
@@ -0,0 +1,51 @@
1
+ import * as _angular_core from '@angular/core';
2
+
3
+ /** Un noeud, decrit en donnees. */
4
+ interface NoeudDArbre {
5
+ /** Identifiant stable : il porte la selection et le depliage. */
6
+ readonly valeur: string;
7
+ readonly libelle: string;
8
+ readonly enfants?: readonly NoeudDArbre[];
9
+ readonly desactive?: boolean;
10
+ }
11
+ /**
12
+ * Arbre de donnees hierarchiques, sur `@angular/aria/tree` : dossiers, plan
13
+ * comptable, organisation.
14
+ *
15
+ * ```html
16
+ * <st-tree etiquette="Plan comptable" [noeuds]="comptes" [(selection)]="compte" [(deplies)]="ouverts" />
17
+ * ```
18
+ *
19
+ * ⚠️ **Jamais pour la navigation du site** (UX-17) : une navigation est une liste
20
+ * de liens, que le lecteur d'ecran liste et parcourt comme telle. Un arbre se
21
+ * parcourt aux fleches, un element a la fois, et ses elements ne sont pas des
22
+ * liens. Le mode « navigation » de la primitive n'est donc pas expose.
23
+ *
24
+ * ⚠️ **Les noeuds sont rendus par le composant, a partir de donnees** (FE-6) : la
25
+ * primitive relie un element a son arbre par injection, et un contenu projete
26
+ * garde l'injecteur de l'endroit ou il est ecrit — lecon de `st-menu`.
27
+ *
28
+ * Clavier de la primitive : fleches haut et bas entre les elements visibles,
29
+ * droite pour deplier ou entrer, gauche pour replier ou remonter, Debut et Fin,
30
+ * recherche a la frappe ; Espace ou Entree choisit. Selection et depliage sont des
31
+ * listes de VALEURS, lisibles et restaurables par l'application.
32
+ */
33
+ declare class StTree {
34
+ /** Nom de l'arbre, lu a l'entree. Obligatoire. */
35
+ readonly etiquette: _angular_core.InputSignal<string>;
36
+ readonly noeuds: _angular_core.InputSignal<readonly NoeudDArbre[]>;
37
+ readonly multiple: _angular_core.InputSignalWithTransform<boolean, unknown>;
38
+ readonly selection: _angular_core.ModelSignal<readonly string[]>;
39
+ readonly deplies: _angular_core.ModelSignal<readonly string[]>;
40
+ /** La primitive attend un tableau modifiable ; le modele est en lecture seule. */
41
+ protected readonly valeursChoisies: _angular_core.Signal<string[]>;
42
+ private readonly ensembleDeplie;
43
+ protected estDeplie(noeud: NoeudDArbre): boolean;
44
+ protected surDepliage(noeud: NoeudDArbre, deplie: boolean): void;
45
+ protected surSelection(valeurs: readonly string[]): void;
46
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<StTree, never>;
47
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<StTree, "st-tree", never, { "etiquette": { "alias": "etiquette"; "required": true; "isSignal": true; }; "noeuds": { "alias": "noeuds"; "required": true; "isSignal": true; }; "multiple": { "alias": "multiple"; "required": false; "isSignal": true; }; "selection": { "alias": "selection"; "required": false; "isSignal": true; }; "deplies": { "alias": "deplies"; "required": false; "isSignal": true; }; }, { "selection": "selectionChange"; "deplies": "depliesChange"; }, never, never, true, never>;
48
+ }
49
+
50
+ export { StTree };
51
+ export type { NoeudDArbre };
@@ -0,0 +1,228 @@
1
+ import * as _angular_core from '@angular/core';
2
+ import { AnnonceLocale } from '@starterlib/ui';
3
+ import { Montant, TonSemantique } from '@starterlib/util';
4
+
5
+ type TypeMasque = 'iban' | 'carte' | 'telephone';
6
+ /**
7
+ * Identifiant sensible, masque par defaut.
8
+ *
9
+ * ⚠️ La valeur masquee porte un `aria-label` en toutes lettres (« IBAN se
10
+ * terminant par 2606 ») : plusieurs lecteurs d'ecran epellent une suite de
11
+ * puces caractere par caractere, ce qui est a la fois illisible et interminable.
12
+ *
13
+ * La revelation est un EVENEMENT METIER : elle se journalise cote appelant par
14
+ * la sortie `revelation`. La valeur revelee, elle, ne part jamais dans un
15
+ * journal.
16
+ */
17
+ declare class StMasked {
18
+ private readonly libelles;
19
+ readonly valeur: _angular_core.InputSignal<string>;
20
+ readonly type: _angular_core.InputSignal<TypeMasque>;
21
+ readonly revele: _angular_core.ModelSignal<boolean>;
22
+ readonly revelationAutorisee: _angular_core.InputSignalWithTransform<boolean, unknown>;
23
+ readonly dureeDeRevelationEnSecondes: _angular_core.InputSignal<number>;
24
+ /** `null` : les textes viennent du dictionnaire de l'application. */
25
+ readonly libelleAfficher: _angular_core.InputSignal<string | null>;
26
+ readonly libelleMasquer: _angular_core.InputSignal<string | null>;
27
+ readonly revelation: _angular_core.OutputEmitterRef<{
28
+ type: TypeMasque;
29
+ }>;
30
+ /**
31
+ * ⚠️ Par `AnnonceLocale`, et non par un signal pose directement. La 0.2.0
32
+ * reposait « Valeur masquee a nouveau » a l'identique : aucune mutation, donc
33
+ * une seconde remise en masque jamais annoncee.
34
+ */
35
+ protected readonly annonce: AnnonceLocale;
36
+ private minuterie;
37
+ constructor();
38
+ protected readonly valeurMasquee: _angular_core.Signal<string>;
39
+ protected readonly valeurAffichee: _angular_core.Signal<string>;
40
+ /**
41
+ * La nature et la tournure viennent du dictionnaire : l'ordre des mots change
42
+ * d'une langue a l'autre, « IBAN se terminant par 2606 » contre « IBAN ending
43
+ * in 2606 ». Une chaine a trous ne suffirait pas.
44
+ */
45
+ protected readonly nomAccessible: _angular_core.Signal<string>;
46
+ protected readonly libelleDuBouton: _angular_core.Signal<string>;
47
+ private valeurLisible;
48
+ protected basculer(): void;
49
+ private masquer;
50
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<StMasked, never>;
51
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<StMasked, "st-masked", never, { "valeur": { "alias": "valeur"; "required": true; "isSignal": true; }; "type": { "alias": "type"; "required": false; "isSignal": true; }; "revele": { "alias": "revele"; "required": false; "isSignal": true; }; "revelationAutorisee": { "alias": "revelationAutorisee"; "required": false; "isSignal": true; }; "dureeDeRevelationEnSecondes": { "alias": "dureeDeRevelationEnSecondes"; "required": false; "isSignal": true; }; "libelleAfficher": { "alias": "libelleAfficher"; "required": false; "isSignal": true; }; "libelleMasquer": { "alias": "libelleMasquer"; "required": false; "isSignal": true; }; }, { "revele": "reveleChange"; "revelation": "revelation"; }, never, never, true, never>;
52
+ }
53
+
54
+ /**
55
+ * Somme d'argent.
56
+ *
57
+ * Le montant entre sous forme d'unites mineures entieres : un nombre a virgule
58
+ * flottante ne represente pas exactement 0,10 EUR, et les erreurs s'accumulent.
59
+ * La conversion n'a lieu qu'a l'instant du rendu.
60
+ *
61
+ * ⚠️ Le signe negatif est TOUJOURS rendu en texte. La couleur ne fait que le
62
+ * renforcer : un daltonien, une impression en noir et blanc ou un theme a fort
63
+ * contraste ne doivent jamais transformer un debit en credit.
64
+ */
65
+ declare class StMoney {
66
+ private readonly locale;
67
+ readonly valeur: _angular_core.InputSignal<Montant>;
68
+ readonly signeExplicite: _angular_core.InputSignalWithTransform<boolean, unknown>;
69
+ readonly sansDevise: _angular_core.InputSignalWithTransform<boolean, unknown>;
70
+ readonly taille: _angular_core.InputSignal<"sm" | "md" | "lg" | "xl">;
71
+ protected readonly signe: _angular_core.Signal<"negatif" | "positif" | "nul">;
72
+ protected readonly texte: _angular_core.Signal<string>;
73
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<StMoney, never>;
74
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<StMoney, "st-money", never, { "valeur": { "alias": "valeur"; "required": true; "isSignal": true; }; "signeExplicite": { "alias": "signeExplicite"; "required": false; "isSignal": true; }; "sansDevise": { "alias": "sansDevise"; "required": false; "isSignal": true; }; "taille": { "alias": "taille"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
75
+ }
76
+
77
+ type FormatDeDate = 'court' | 'long' | 'date-heure' | 'heure';
78
+ /**
79
+ * Date rendue dans la locale et le fuseau de l'application.
80
+ *
81
+ * ⚠️ La locale et le fuseau sont EXPLICITES, jamais deduits de l'environnement
82
+ * d'execution. Un rendu serveur et un rendu navigateur qui ne s'accordent pas
83
+ * produisent deux textes differents, et l'hydratation casse. Le rendu serveur
84
+ * est ecarte en version 1, mais la compatibilite reste gardee a cout nul.
85
+ *
86
+ * Le format court garde un nom accessible en toutes lettres : « 12/09/26 » est
87
+ * ambigu a l'oral, et l'ordre jour-mois n'est pas universel.
88
+ */
89
+ declare class StDate {
90
+ private readonly locale;
91
+ private readonly fuseauParDefaut;
92
+ readonly valeur: _angular_core.InputSignal<string | Date>;
93
+ readonly format: _angular_core.InputSignal<FormatDeDate>;
94
+ readonly fuseau: _angular_core.InputSignal<string | null>;
95
+ /**
96
+ * Une DATE DE CALENDRIER (`2026-09-12`) n'est pas un instant : une date de
97
+ * naissance, une echeance ou un jour de valeur n'ont pas d'heure, et ne
98
+ * doivent pas changer de jour selon le fuseau de qui les regarde.
99
+ *
100
+ * ⚠️ Le piege est dans la norme : `new Date('2026-09-12')` vaut minuit UTC,
101
+ * donc le 11 septembre partout a l'ouest de Greenwich. Une echeance affichee
102
+ * la veille est un defaut que personne ne voit depuis l'Europe.
103
+ */
104
+ private readonly estDateDeCalendrier;
105
+ private readonly date;
106
+ protected readonly estValide: _angular_core.Signal<boolean>;
107
+ /**
108
+ * Le fuseau de rendu. Pour une date de calendrier, c'est UTC : la valeur a
109
+ * ete construite a minuit UTC, la relire en UTC rend donc le jour ecrit.
110
+ */
111
+ private readonly fuseauDeRendu;
112
+ /**
113
+ * Une date de calendrier porte `2026-09-12`, sans heure ni decalage : c'est
114
+ * la forme que la norme HTML attend, et la seule qui ne mente pas.
115
+ */
116
+ protected readonly iso: _angular_core.Signal<string | null>;
117
+ /** Une date sans heure ne peut pas en afficher une. */
118
+ private readonly optionsDeFormat;
119
+ protected readonly texte: _angular_core.Signal<string>;
120
+ /** Forme longue, lue par les technologies d'assistance. */
121
+ protected readonly texteAccessible: _angular_core.Signal<string | null>;
122
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<StDate, never>;
123
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<StDate, "st-date", never, { "valeur": { "alias": "valeur"; "required": true; "isSignal": true; }; "format": { "alias": "format"; "required": false; "isSignal": true; }; "fuseau": { "alias": "fuseau"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
124
+ }
125
+
126
+ /**
127
+ * Temps ecoule, exprime relativement (« il y a 5 minutes »).
128
+ *
129
+ * ⚠️ Ce composant ne doit JAMAIS etre place dans une region vivante : son texte
130
+ * se reecrit tout seul, et une region vivante le ferait annoncer en boucle.
131
+ * Son nom accessible porte la date absolue, qui elle ne bouge pas.
132
+ *
133
+ * La cadence de rafraichissement s'adapte : rafraichir chaque seconde une date
134
+ * vieille de trois jours reveille l'onglet pour rien.
135
+ */
136
+ declare class StRelativeTime {
137
+ private readonly locale;
138
+ private readonly libelles;
139
+ private readonly fuseau;
140
+ readonly valeur: _angular_core.InputSignal<string | Date>;
141
+ readonly rafraichir: _angular_core.InputSignalWithTransform<boolean, unknown>;
142
+ /** Au-dela de ce nombre de jours, la date absolue est plus parlante. */
143
+ readonly seuilAbsoluEnJours: _angular_core.InputSignal<number>;
144
+ private readonly destruction;
145
+ private readonly maintenant;
146
+ constructor();
147
+ private dateEnMillisecondes;
148
+ protected readonly estValide: _angular_core.Signal<boolean>;
149
+ protected readonly iso: _angular_core.Signal<string | null>;
150
+ protected readonly depasseLeSeuil: _angular_core.Signal<boolean>;
151
+ protected readonly texte: _angular_core.Signal<string>;
152
+ protected readonly texteAccessible: _angular_core.Signal<string>;
153
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<StRelativeTime, never>;
154
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<StRelativeTime, "st-relative-time", never, { "valeur": { "alias": "valeur"; "required": true; "isSignal": true; }; "rafraichir": { "alias": "rafraichir"; "required": false; "isSignal": true; }; "seuilAbsoluEnJours": { "alias": "seuilAbsoluEnJours"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
155
+ }
156
+
157
+ /**
158
+ * Nombre dans le flux du texte.
159
+ *
160
+ * Distinct de `st-badge`, qui est une pastille superposee a un autre element.
161
+ *
162
+ * ⚠️ Quand la valeur est abregee (« 1,2 k »), le nom accessible porte le nombre
163
+ * COMPLET : l'abreviation est une commodite visuelle, pas une perte
164
+ * d'information pour qui ecoute la page.
165
+ */
166
+ declare class StCount {
167
+ private readonly locale;
168
+ readonly valeur: _angular_core.InputSignal<number>;
169
+ readonly ton: _angular_core.InputSignal<"neutre" | "discret">;
170
+ /** `null` : jamais d'abreviation. */
171
+ readonly abregerAuDela: _angular_core.InputSignal<number | null>;
172
+ protected readonly estAbrege: _angular_core.Signal<boolean>;
173
+ protected readonly texteComplet: _angular_core.Signal<string>;
174
+ protected readonly texte: _angular_core.Signal<string>;
175
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<StCount, never>;
176
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<StCount, "st-count", never, { "valeur": { "alias": "valeur"; "required": true; "isSignal": true; }; "ton": { "alias": "ton"; "required": false; "isSignal": true; }; "abregerAuDela": { "alias": "abregerAuDela"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
177
+ }
178
+
179
+ type SensDeTendance = 'hausse' | 'baisse' | 'stable';
180
+ /** La tendance d'un indicateur, decrite par l'appelant. Le texte est deja traduit. */
181
+ interface TendanceDeStat {
182
+ readonly sens: SensDeTendance;
183
+ /** Ce qui s'affiche a cote de la fleche : « +2,4 % sur un mois ». */
184
+ readonly texte: string;
185
+ /**
186
+ * ⚠️ Choisi par l'appelant, et non deduit du sens : une hausse des frais est
187
+ * un `danger`, une hausse de l'epargne un `succes`. Le socle ne sait pas
188
+ * lequel des deux il affiche.
189
+ */
190
+ readonly ton?: TonSemantique;
191
+ }
192
+ /**
193
+ * Indicateur chiffre : un libelle, une valeur, et sa tendance.
194
+ *
195
+ * ```html
196
+ * <st-stat libelle="Solde disponible" [tendance]="{ sens: 'hausse', texte: '+2,4 % sur un mois', ton: 'succes' }">
197
+ * <st-money [valeur]="solde" />
198
+ * </st-stat>
199
+ * ```
200
+ *
201
+ * La valeur est PROJETEE : c'est `st-money`, `st-count` ou `st-date` qui la
202
+ * formate dans la langue courante, et le socle n'a pas a redire comment.
203
+ *
204
+ * ⚠️ **La tendance se lit par un texte ET une icone, jamais par la couleur
205
+ * seule.** Le texte de l'appelant porte deja le signe ; l'icone porte le sens ;
206
+ * et un mot lisible par lecteur seulement — « en hausse », « en baisse »,
207
+ * « stable » — precede le texte, parce qu'un lecteur d'ecran ne lit pas un
208
+ * chevron.
209
+ *
210
+ * Le libelle vient AVANT la valeur dans le document, comme dans une phrase :
211
+ * « Solde disponible, 1 234,50 € ». A l'ecran, il se pose au-dessus, en petit.
212
+ */
213
+ declare class StStat {
214
+ private readonly libelles;
215
+ /** Texte visible, deja traduit. */
216
+ readonly libelle: _angular_core.InputSignal<string>;
217
+ readonly tendance: _angular_core.InputSignal<TendanceDeStat | null>;
218
+ /** Precision sous la valeur : la periode, la source. Jamais une information critique. */
219
+ readonly precision: _angular_core.InputSignal<string | null>;
220
+ protected readonly icone: _angular_core.Signal<"boite-vide" | "calendrier" | "cercle" | "cercle-coche" | "cercle-croix" | "cercle-info" | "chevron-bas" | "chevron-droite" | "chevron-gauche" | "chevron-haut" | "coche" | "copie" | "corbeille" | "croix" | "fichier" | "hors-ligne" | "lien-externe" | "menu" | "oeil" | "oeil-barre" | "plus" | "rafraichir" | "recherche" | "serveur" | "televerser" | "tri" | "triangle-alerte" | "utilisateur" | null>;
221
+ protected readonly tonDeTendance: _angular_core.Signal<TonSemantique>;
222
+ protected readonly sensLu: _angular_core.Signal<string>;
223
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<StStat, never>;
224
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<StStat, "st-stat", never, { "libelle": { "alias": "libelle"; "required": true; "isSignal": true; }; "tendance": { "alias": "tendance"; "required": false; "isSignal": true; }; "precision": { "alias": "precision"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
225
+ }
226
+
227
+ export { StCount, StDate, StMasked, StMoney, StRelativeTime, StStat };
228
+ export type { FormatDeDate, SensDeTendance, TendanceDeStat, TypeMasque };
@@ -1,8 +1,9 @@
1
- import * as _starterlib_ui from '@starterlib/ui';
2
- import { ContratDeChamp, ErreurAffichable } from '@starterlib/ui';
1
+ import * as _starterlib_ui_saisie from '@starterlib/ui/saisie';
2
+ import { ContratDeChamp, ErreurAffichable } from '@starterlib/ui/saisie';
3
3
  import * as _angular_forms_signals from '@angular/forms/signals';
4
4
  import { FormValueControl } from '@angular/forms/signals';
5
5
  import * as _angular_core from '@angular/core';
6
+ import * as _starterlib_ui from '@starterlib/ui';
6
7
  import { DateIso, PlageDeDates } from '@starterlib/util';
7
8
 
8
9
  /**
@@ -43,7 +44,7 @@ declare class StAmountField extends ContratDeChamp implements FormValueControl<b
43
44
  */
44
45
  protected readonly quitte: _angular_core.WritableSignal<boolean>;
45
46
  protected readonly saisie: _angular_forms_signals.TransformedValueSignal<string>;
46
- protected readonly erreursAffichees: _angular_core.Signal<readonly _starterlib_ui.ErreurAffichable[]>;
47
+ protected readonly erreursAffichees: _angular_core.Signal<readonly _starterlib_ui_saisie.ErreurAffichable[]>;
47
48
  /** Symbole affiche a cote du champ ; le nom de la devise, lui, est lu. */
48
49
  protected readonly symbole: _angular_core.Signal<string>;
49
50
  protected readonly deviseLue: _angular_core.Signal<string>;
@@ -101,7 +102,7 @@ declare class StDateField extends ContratDeChamp implements FormValueControl<Dat
101
102
  protected readonly quitte: _angular_core.WritableSignal<boolean>;
102
103
  protected readonly saisie: _angular_forms_signals.TransformedValueSignal<string>;
103
104
  protected readonly aideLue: _angular_core.Signal<string>;
104
- protected readonly erreursAffichees: _angular_core.Signal<readonly _starterlib_ui.ErreurAffichable[]>;
105
+ protected readonly erreursAffichees: _angular_core.Signal<readonly _starterlib_ui_saisie.ErreurAffichable[]>;
105
106
  protected surSaisie(evenement: Event): void;
106
107
  protected aLaSortieDuChamp(): void;
107
108
  protected basculer(): void;