@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
@@ -148,10 +148,22 @@ export interface LibellesUi {
148
148
  readonly reglesDuMotDePasse: string;
149
149
  readonly regleRespectee: string;
150
150
  readonly regleNonRespectee: string;
151
+ /** Jauge de force du mot de passe (ADR web 0011) : son nom, ses trois niveaux, l'annonce d'un changement. */
152
+ readonly forceDuMotDePasse: string;
153
+ readonly niveauxDeForce: readonly [string, string, string];
154
+ readonly forceAnnoncee: (niveau: string) => string;
151
155
  readonly revelerPendant: (duree: string) => string;
152
156
  readonly rechercher: string;
153
157
  readonly effacerLaRecherche: string;
154
158
  readonly fermerLeMessage: string;
159
+ /**
160
+ * Environnement d'essai (P08-04) : le mot et la phrase de la banniere de `st-app-shell
161
+ * variante="essai"`, et l'annonce de sa fin. Neutres par defaut ; l'application les remplace
162
+ * (par les entrees de la coquille, ou par son dictionnaire).
163
+ */
164
+ readonly environnementDEssai: string;
165
+ readonly environnementDEssaiMessage: string;
166
+ readonly finDeLEnvironnementDEssai: (mot: string) => string;
155
167
  /** Pile des messages ephemeres (lot 233) : nom de sa region, fermeture d'un message persistant. */
156
168
  readonly regionDesMessages: string;
157
169
  readonly ignorerLeMessage: string;
@@ -162,12 +174,19 @@ export interface LibellesUi {
162
174
  /** Nom de la region du corps d'un dialogue quand il defile (`st-dialog-content`, lot 229). */
163
175
  readonly corpsDuDialogue: string;
164
176
  /**
165
- * Prefixes masques qui disent le ton d'un message EN MOTS (`st-banner`, `st-inline-message`),
166
- * ponctuation comprise : « Avertissement : » en francais, « Warning: » en anglais.
177
+ * Prefixes qui disent le ton d'un message EN MOTS (`st-banner`, `st-inline-message`),
178
+ * ponctuation comprise : « Avertissement : » en francais, « Warning: » en anglais. Masques et
179
+ * lus ; affiches sous le reglage `--st-prefixe-de-ton: visible` (P08-03).
167
180
  */
168
181
  readonly tonInformation: string;
169
182
  readonly tonSucces: string;
170
183
  readonly tonAvertissement: string;
184
+ /** Une faute ou un echec (ton `erreur`, P08-03). */
185
+ readonly tonErreur: string;
186
+ /**
187
+ * Le ton `danger` (destruction, urgence) garde « Erreur : », son mot d'avant le role `erreur` :
188
+ * ce que lisent les consommateurs du socle ne change pas. Une faute passe au ton `erreur`.
189
+ */
171
190
  readonly tonDanger: string;
172
191
  /** Montants */
173
192
  readonly montantIllisible: (exemple: string) => string;
@@ -929,7 +948,7 @@ export declare function fermerApresLaSortie(element: Element, detacher: () => vo
929
948
  * echoue a la compilation : une reference `use` vers un identifiant absent ne rend RIEN, sans
930
949
  * erreur, et le defaut passe la revue.
931
950
  */
932
- export declare const NOMS_DICONE: readonly ["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", "chargement", "cheque", "chevron-bas", "chevron-droite", "chevron-gauche", "chevron-haut", "chevrons-droite", "chevrons-haut-bas", "cle", "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", "devise", "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", "iban", "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", "message", "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"];
951
+ export declare const NOMS_DICONE: readonly ["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", "chargement", "cheque", "chevron-bas", "chevron-droite", "chevron-gauche", "chevron-haut", "chevrons-droite", "chevrons-haut-bas", "cible", "cle", "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", "devise", "disposition", "dollar", "dossier", "dossier-barre", "dossier-ouvert", "double-coche", "drapeau", "echange", "eclair", "empreinte-digitale", "enregistrer", "entree", "envoyer", "epaisseur-de-trait", "epingle", "essai", "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", "iban", "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", "message", "minuteur", "mise-au-point", "mise-en-page-image", "moins", "nuage-barre", "nuage-televerser", "octogone-alerte", "oeil", "oeil-barre", "panneau-gauche", "parametres", "parapluie", "parchemin", "passerelle", "pause", "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"];
933
952
  export type NomDIconeCourant = (typeof NOMS_DICONE)[number];
934
953
  /**
935
954
  * Anciens noms d'un train : resolus par `st-icon` avec un avertissement en developpement, puis
@@ -947,7 +966,7 @@ export interface NomDIconeResolu {
947
966
  }
948
967
  export declare function resoudreLeNomDIcone(nom: NomDIcone): NomDIconeResolu;
949
968
  /** Noms qui ont un jumeau plein `<nom>-plein` dans le sprite (`variante="plein"`). */
950
- export declare const NOMS_DICONE_PLEINE: readonly ["badge-coche", "bouclier-coche", "cercle-alerte", "cercle-coche", "cercle-croix", "cercle-info", "cercle-question", "cloche", "epingle", "etoile", "grille", "horloge", "marque-page", "octogone-alerte", "triangle-alerte"];
969
+ export declare const NOMS_DICONE_PLEINE: readonly ["badge-coche", "bouclier-coche", "cercle-alerte", "cercle-coche", "cercle-croix", "cercle-info", "cercle-question", "cloche", "epingle", "essai", "etoile", "grille", "horloge", "marque-page", "octogone-alerte", "triangle-alerte"];
951
970
  export type NomDIconePleine = (typeof NOMS_DICONE_PLEINE)[number];
952
971
  /**
953
972
  * Icones qui portent un sens HORIZONTAL : miroitees sous ecriture de droite a gauche. Viennent du
@@ -964,8 +983,11 @@ export declare const NOMS_DICONE_MARQUE: ReadonlySet<NomDIconeCourant>;
964
983
  * ⚠️ L'icone differe par sa FORME d'un ton a l'autre, jamais par sa seule couleur : un message porte
965
984
  * par la couleur est illisible pour une personne daltonienne, a l'impression et sous contraste force.
966
985
  * Chaque icone a un jumeau plein : a 16 px, un statut se lit mieux plein (02 §1.2).
986
+ *
987
+ * `essai` (P08-04), l'environnement fictif, n'est pas un ton semantique ; sa fiole est ici pour les
988
+ * composants qui le rendent (`st-banner`, `st-status-pill`).
967
989
  */
968
- export declare const ICONES_DE_TON: Readonly<Record<TonSemantique, NomDIconePleine>>;
990
+ export declare const ICONES_DE_TON: Readonly<Record<TonSemantique | Extract<Ton, 'essai'>, NomDIconePleine>>;
969
991
  /** Reliee par l'hote (`ui` ignore `core`) ; au tronc, pour ne pas charger la recherche. */
970
992
  export declare const ST_RECHERCHE_D_ADRESSES: InjectionToken<RechercheDAdresses | null>;
971
993
  /**
@@ -1050,7 +1072,7 @@ export declare class StIcon {
1050
1072
  /** La valeur unique : prime sur `nom`, `variante`, `sprite` et `nomMetier`. */
1051
1073
  readonly icone: import("@angular/core").InputSignal<Icone | null>;
1052
1074
  /** Nom d'un symbole du sprite du socle. Un alias deprecie est resolu, avec un avertissement. */
1053
- readonly nom: import("@angular/core").InputSignal<"iban" | "code" | "copie" | "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" | "chargement" | "cheque" | "chevron-bas" | "chevron-droite" | "chevron-gauche" | "chevron-haut" | "chevrons-droite" | "chevrons-haut-bas" | "cle" | "cloche" | "cloche-sonnerie" | "coche" | "code-qr" | "code-qr-scanner" | "coffre-fort" | "colonnes" | "connexion" | "contraste" | "corbeille" | "corbeille-croix" | "courriel" | "crayon" | "croix" | "curseur-clic" | "deconnexion" | "devise" | "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" | "message" | "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" | null>;
1075
+ readonly nom: import("@angular/core").InputSignal<"iban" | "code" | "copie" | "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" | "chargement" | "cheque" | "chevron-bas" | "chevron-droite" | "chevron-gauche" | "chevron-haut" | "chevrons-droite" | "chevrons-haut-bas" | "cible" | "cle" | "cloche" | "cloche-sonnerie" | "coche" | "code-qr" | "code-qr-scanner" | "coffre-fort" | "colonnes" | "comparer" | "connexion" | "contraste" | "corbeille" | "corbeille-croix" | "courriel" | "crayon" | "croix" | "curseur-clic" | "deconnexion" | "devise" | "disposition" | "dollar" | "dossier" | "dossier-barre" | "dossier-ouvert" | "double-coche" | "drapeau" | "echange" | "eclair" | "empreinte-digitale" | "enregistrer" | "entree" | "envoyer" | "epaisseur-de-trait" | "epingle" | "essai" | "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" | "message" | "minuteur" | "mise-au-point" | "mise-en-page-image" | "moins" | "nuage-barre" | "nuage-televerser" | "octogone-alerte" | "oeil" | "oeil-barre" | "panneau-gauche" | "parametres" | "parapluie" | "parchemin" | "passerelle" | "pause" | "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" | null>;
1054
1076
  /** `plein` : le jumeau FILL 1 du nom, s'il en a un (`NOMS_DICONE_PLEINE`). */
1055
1077
  readonly variante: import("@angular/core").InputSignal<VarianteDIcone>;
1056
1078
  /**
@@ -1926,7 +1948,7 @@ export declare class StSegmentedControl {
1926
1948
  export type TailleDAvatar = 'xs' | 'sm' | 'md' | 'lg' | 'xl';
1927
1949
  export type FormeDAvatar = 'cercle' | 'carre';
1928
1950
  /** Le ton du disque : papier teinte du ton (`discrete`, defaut) ou aplat (`pleine`). */
1929
- export type TonDAvatar = Exclude<Ton, 'discret' | 'inverse'>;
1951
+ export type TonDAvatar = Exclude<Ton, 'discret' | 'inverse' | 'essai'>;
1930
1952
  export type VarianteDAvatar = 'discrete' | 'pleine';
1931
1953
  /**
1932
1954
  * Representation d'une personne (planches 2, 6, 10 et 14 de Claude Design, lot 206).
@@ -2089,8 +2111,12 @@ export declare class StEmpty {
2089
2111
  };
2090
2112
  }, {}, never, ["*"], true, never>;
2091
2113
  }
2092
- /** Le ton d'une erreur : danger pour un echec, avertissement pour ce qui se resout, neutre sinon. */
2093
- export type TonDErreur = 'danger' | 'avertissement' | 'neutre';
2114
+ /**
2115
+ * Le ton d'une erreur : `erreur` pour un echec, avertissement pour ce qui se resout, neutre sinon.
2116
+ * `erreur` et non plus `danger` (P08-03) : un echec n'est ni une destruction ni une urgence, et
2117
+ * prend la couleur que la marque donne a l'erreur (le rouge du danger par defaut).
2118
+ */
2119
+ export type TonDErreur = 'erreur' | 'avertissement' | 'neutre';
2094
2120
  /** L'icone, le ton et la rejouabilite par defaut d'une variante. */
2095
2121
  export interface ProfilDErreur {
2096
2122
  readonly icone: Icone;
@@ -2718,6 +2744,13 @@ export declare class StBreadcrumb {
2718
2744
  }
2719
2745
  /** Identifiant par defaut du contenu principal, pose par `st-app-shell`. */
2720
2746
  export declare const IDENTIFIANT_DU_CONTENU_PRINCIPAL = "contenu-principal";
2747
+ /** Une cible du lien d'evitement : la seconde est l'action critique d'une application (P08-06). */
2748
+ export interface CibleDEvitement {
2749
+ /** L'identifiant de l'element a atteindre : le bouton lui-meme, pour qu'Entree l'active. */
2750
+ readonly cible: string;
2751
+ /** Le texte du lien, deja traduit (« Aller a l'arret d'urgence »). */
2752
+ readonly libelle: string;
2753
+ }
2721
2754
  /**
2722
2755
  * Lien d'evitement : aller au contenu sans traverser la navigation.
2723
2756
  *
@@ -2744,6 +2777,11 @@ export declare const IDENTIFIANT_DU_CONTENU_PRINCIPAL = "contenu-principal";
2744
2777
  * Rendu (planche 6, couche A) : masque au repos, une pilule de 44 px au focus, en haut au
2745
2778
  * debut de la ligne (a droite en RTL), primaire, rayon md, anneau force a deux voies. Aucune
2746
2779
  * icone et aucun raccourci annonce : le lien est le raccourci.
2780
+ *
2781
+ * **Seconde cible** (P08-06) : l'action critique d'une application (`secondeCible`, « Aller a
2782
+ * l'arret d'urgence »), rendue apres « Aller au contenu », ou AVANT si l'application le demande
2783
+ * (`secondeEnPremier`) : Tab puis Entree atteignent alors l'action depuis n'importe quelle page.
2784
+ * Un lien par cible ; seul celui qui a le focus se montre, dans la pilule.
2747
2785
  */
2748
2786
  export declare class StSkipLink {
2749
2787
  private readonly document;
@@ -2752,9 +2790,12 @@ export declare class StSkipLink {
2752
2790
  readonly cible: import("@angular/core").InputSignal<string>;
2753
2791
  /** `null` : le texte vient du dictionnaire de l'application. */
2754
2792
  readonly libelle: import("@angular/core").InputSignal<string | null>;
2755
- protected readonly libelleLu: import("@angular/core").Signal<string>;
2756
- protected readonly ancre: import("@angular/core").Signal<string>;
2757
- protected aller(evenement: MouseEvent): void;
2793
+ /** Une seconde cible (P08-06), fournie par l'application ; `null` : le contenu seul. */
2794
+ readonly secondeCible: import("@angular/core").InputSignal<CibleDEvitement | null>;
2795
+ /** Vrai : la seconde cible passe EN PREMIER, premier arret de tabulation du document. */
2796
+ readonly secondeEnPremier: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
2797
+ protected readonly liens: import("@angular/core").Signal<readonly CibleDEvitement[]>;
2798
+ protected aller(evenement: MouseEvent, identifiant: string): void;
2758
2799
  static ɵfac: i0.ɵɵFactoryDeclaration<StSkipLink, never>;
2759
2800
  static ɵcmp: i0.ɵɵComponentDeclaration<StSkipLink, "st-skip-link", never, {
2760
2801
  "cible": {
@@ -2767,6 +2808,16 @@ export declare class StSkipLink {
2767
2808
  "required": false;
2768
2809
  "isSignal": true;
2769
2810
  };
2811
+ "secondeCible": {
2812
+ "alias": "secondeCible";
2813
+ "required": false;
2814
+ "isSignal": true;
2815
+ };
2816
+ "secondeEnPremier": {
2817
+ "alias": "secondeEnPremier";
2818
+ "required": false;
2819
+ "isSignal": true;
2820
+ };
2770
2821
  }, {}, never, never, true, never>;
2771
2822
  }
2772
2823
  /**
@@ -2779,8 +2830,19 @@ export declare const PROPRIETE_HAUTEUR_ENTETE = "--st-hauteur-entete";
2779
2830
  * s'y colle (`inset-block-start`), juste sous l'en-tete.
2780
2831
  */
2781
2832
  export declare const PROPRIETE_HAUTEUR_ENTETE_SEUL = "--st-coquille-hauteur-entete";
2782
- /** `standard` : en-tete sur la surface ; `marque` : en-tete sur l'aplat de marque. */
2783
- export type VarianteDeCoquille = 'standard' | 'marque';
2833
+ /**
2834
+ * Propriete posee sur `<html>` sous `md`, quand l'action permanente flotte (P08-06) : la hauteur
2835
+ * couverte du bas de la fenetre au haut de l'action, barre inferieure comprise. La feuille de
2836
+ * `@starterlib/tokens` la lit dans `scroll-padding-block-end`.
2837
+ */
2838
+ export declare const PROPRIETE_HAUTEUR_ACTION = "--st-hauteur-action";
2839
+ /**
2840
+ * `standard` : en-tete sur la surface ; `marque` : en-tete sur l'aplat de marque ; `essai` (P08-04) :
2841
+ * un environnement fictif (donnees d'exemple, bac a sable), marque sans qu'on puisse l'oublier.
2842
+ */
2843
+ export type VarianteDeCoquille = 'standard' | 'marque' | 'essai';
2844
+ /** L'attribut que la variante `essai` pose sur `<html>`, et sa valeur. */
2845
+ export declare const ATTRIBUT_D_ENVIRONNEMENT = "data-environnement";
2784
2846
  /**
2785
2847
  * Coquille d'une application : lien d'evitement, en-tete, bannieres globales,
2786
2848
  * navigation, contenu principal, pied de page.
@@ -2834,6 +2896,28 @@ export type VarianteDeCoquille = 'standard' | 'marque';
2834
2896
  * `st-route-progress` est reconnu a son ELEMENT et pose dans l'en-tete, a son bord inferieur :
2835
2897
  * l'application ne le place pas.
2836
2898
  *
2899
+ * L'emplacement `navigationBasse` (P08-05) recoit `st-bottom-nav` : la barre se fixe au bas de la
2900
+ * fenetre sous `md` et publie sa hauteur (`--st-hauteur-pied`) ; la coquille la reserve sous son
2901
+ * contenu, et le focus ne passe jamais dessous. Au-dessus de `md`, `st-sidenav` prend le relais.
2902
+ *
2903
+ * ⚠️ **L'emplacement `actionPermanente` (P08-06) ne se replie jamais** : l'action critique d'une
2904
+ * application (l'arret d'urgence d'Aplomb), premier arret de tabulation apres le lien
2905
+ * d'evitement, jamais dans un tiroir ni un menu. Au-dessus de `md`, au bout de l'en-tete ; en
2906
+ * dessous, elle flotte au bout de la ligne, au-dessus de la barre inferieure (ou de la zone
2907
+ * sure), et la coquille publie la hauteur qu'elle couvre (`--st-hauteur-action`) : la feuille des
2908
+ * jetons garde le focus au-dessus d'elle (WCAG 2.4.11) et la coquille la reserve sous son contenu.
2909
+ * `lienVersLAction` ajoute au lien d'evitement la cible de l'action (« Aller a l'arret
2910
+ * d'urgence »), rendue en premier sous `lienVersLActionEnPremier`. Le raccourci clavier se
2911
+ * declare sur l'action elle-meme (`stRaccourci`, `@starterlib/core`).
2912
+ *
2913
+ * ⚠️ **La variante `essai` ne se masque pas** (P08-04) : un liseret de la couleur `essai` sur le
2914
+ * pourtour de la fenetre, fixe sous le bloc collant de l'en-tete (il reste visible au defilement, a
2915
+ * 320 px et a 200 %, et ne capte aucun pointeur) ; une banniere `essai` en tete des bannieres, qu'on
2916
+ * ne ferme pas (mot `titreDEssai`, phrase `messageDEssai`, « Donnees fictives » par defaut) ;
2917
+ * `data-environnement="essai"` sur `<html>` ; une annonce POLIE, une seule, a l'entree et a la sortie
2918
+ * de la variante. Aucune animation. Elle ne s'active que sur demande de l'application : un marqueur
2919
+ * qui serait partout n'informerait plus.
2920
+ *
2837
2921
  * Le contenu est borne a `--st-largeur-page` (90rem) et centre ; l'en-tete et la navigation
2838
2922
  * portent les `view-transition-name` `st-entete` et `st-navigation`.
2839
2923
  */
@@ -2843,16 +2927,41 @@ export declare class StAppShell {
2843
2927
  * `texteSurMarque`) ; en sombre, cette surface redevient neutre.
2844
2928
  */
2845
2929
  readonly variante: import("@angular/core").InputSignal<VarianteDeCoquille>;
2930
+ /** Le mot de l'environnement d'essai, titre de sa banniere ; `null` : « Donnees fictives ». */
2931
+ readonly titreDEssai: import("@angular/core").InputSignal<string | null>;
2932
+ /** La phrase de la banniere d'essai ; `null` : celle du dictionnaire. */
2933
+ readonly messageDEssai: import("@angular/core").InputSignal<string | null>;
2934
+ /**
2935
+ * La seconde cible du lien d'evitement (P08-06) : l'identifiant de l'action permanente et le
2936
+ * texte du lien, deja traduit ; `null` : le contenu seul.
2937
+ */
2938
+ readonly lienVersLAction: import("@angular/core").InputSignal<CibleDEvitement | null>;
2939
+ /** Vrai : le lien vers l'action passe avant « Aller au contenu », premier arret du document. */
2940
+ readonly lienVersLActionEnPremier: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
2846
2941
  private readonly document;
2847
2942
  private readonly hote;
2848
2943
  private readonly entete;
2849
2944
  private readonly bannieres;
2945
+ private readonly action;
2850
2946
  private observateur;
2947
+ private observateurDAction;
2851
2948
  private surveillant;
2852
2949
  /** Derniere hauteur de bordure connue de chaque element du bloc collant. */
2853
2950
  private readonly hauteurs;
2854
2951
  protected readonly identifiantDuContenu = "contenu-principal";
2952
+ private readonly libelles;
2953
+ protected readonly annonce: AnnonceLocale;
2954
+ protected readonly enEssai: import("@angular/core").Signal<boolean>;
2955
+ protected readonly titreDEssaiLu: import("@angular/core").Signal<string>;
2956
+ protected readonly messageDEssaiLu: import("@angular/core").Signal<string>;
2855
2957
  constructor();
2958
+ /**
2959
+ * Sous `md`, l'action flotte (`position: fixed`) : sa boite va du bas de la fenetre au haut de
2960
+ * l'action, barre et ecart compris, et sa hauteur est publiee sur `<html>`. Au-dessus, elle
2961
+ * rentre dans l'en-tete et la propriete se retire. Passer la rupture change la taille de la
2962
+ * boite : l'observateur rappelle, et la position calculee tranche.
2963
+ */
2964
+ private mesurerLActionFlottante;
2856
2965
  /**
2857
2966
  * Le bloc collant = l'en-tete PLUS les bannieres `data-collee` : c'est tout ce qui recouvre le
2858
2967
  * contenu que le navigateur fait defiler vers le haut. L'en-tete seul est aussi pose sur
@@ -2868,7 +2977,27 @@ export declare class StAppShell {
2868
2977
  "required": false;
2869
2978
  "isSignal": true;
2870
2979
  };
2871
- }, {}, never, ["[entete]", "st-route-progress", "[bannieres]", "[navigation]", "*", "[pied]"], true, never>;
2980
+ "titreDEssai": {
2981
+ "alias": "titreDEssai";
2982
+ "required": false;
2983
+ "isSignal": true;
2984
+ };
2985
+ "messageDEssai": {
2986
+ "alias": "messageDEssai";
2987
+ "required": false;
2988
+ "isSignal": true;
2989
+ };
2990
+ "lienVersLAction": {
2991
+ "alias": "lienVersLAction";
2992
+ "required": false;
2993
+ "isSignal": true;
2994
+ };
2995
+ "lienVersLActionEnPremier": {
2996
+ "alias": "lienVersLActionEnPremier";
2997
+ "required": false;
2998
+ "isSignal": true;
2999
+ };
3000
+ }, {}, never, ["[actionPermanente]", "[entete]", "st-route-progress", "[bannieres]", "[navigation]", "*", "[pied]", "[navigationBasse]"], true, never>;
2872
3001
  }
2873
3002
  /**
2874
3003
  * Contenu de l'en-tete : bouton de navigation, marque, puis actions.
@@ -3266,8 +3395,11 @@ export declare class StAuthShell {
3266
3395
  static ɵfac: i0.ɵɵFactoryDeclaration<StAuthShell, never>;
3267
3396
  static ɵcmp: i0.ɵɵComponentDeclaration<StAuthShell, "st-auth-shell", never, {}, {}, never, ["[entete]", "[banniere]", "*", "[pied]", "[version]"], true, never>;
3268
3397
  }
3269
- /** Les tons semantiques, sauf `primaire` : une banniere informe, elle ne marque pas. */
3270
- export type TonDeBanniere = Exclude<TonSemantique, 'primaire'>;
3398
+ /**
3399
+ * Les tons semantiques, sauf `primaire` : une banniere informe, elle ne marque pas. Plus `essai`
3400
+ * (P08-04), l'environnement fictif : une banniere qu'on ne ferme pas.
3401
+ */
3402
+ export type TonDeBanniere = Exclude<TonSemantique, 'primaire'> | Extract<Ton, 'essai'>;
3271
3403
  /** `bloc` : en page, au-dessus du contenu concerne. `bandeau` : sous l'en-tete de la coquille. */
3272
3404
  export type FormeDeBanniere = 'bloc' | 'bandeau';
3273
3405
  /**
@@ -3281,9 +3413,12 @@ export type FormeDeBanniere = 'bloc' | 'bandeau';
3281
3413
  * une banniere presente des l'affichage est lue avec la page, une fois, puis
3282
3414
  * son apparition ulterieure est annoncee. Le meme mecanisme sert les deux cas.
3283
3415
  *
3284
- * ⚠️ Le ton `danger` passe en `alert` (assertif) : une operation qui vient
3285
- * d'echouer doit interrompre. Les autres restent en `status`, sinon une
3416
+ * ⚠️ Les tons `erreur` et `danger` passent en `alert` (assertif) : une operation
3417
+ * qui vient d'echouer doit interrompre. Les autres restent en `status`, sinon une
3286
3418
  * confirmation couperait la lecture en cours et ferait perdre sa place.
3419
+ * `erreur` dit une faute ou un echec, `danger` une destruction ou une urgence
3420
+ * (P08-03) ; l'erreur prend la couleur du danger tant que la marque ne pose pas la
3421
+ * sienne.
3287
3422
  *
3288
3423
  * ⚠️ Comme `st-spinner` et `st-error`, elle se tait dans une region vivante
3289
3424
  * existante : sans cela, le lecteur annonce deux fois le meme message. Elle est
@@ -3294,13 +3429,19 @@ export type FormeDeBanniere = 'bloc' | 'bandeau';
3294
3429
  * ⚠️ **Le ton se dit en mots.** Un prefixe masque (« Avertissement : ») ouvre le
3295
3430
  * titre, ou le message sans titre : il est lu par la region et au parcours, la
3296
3431
  * couleur et la forme de l'icone ne le disent qu'a qui les voit. Le titre nomme
3297
- * la region (`aria-labelledby`).
3432
+ * la region (`aria-labelledby`). Le reglage `--st-prefixe-de-ton: visible` de
3433
+ * l'application l'affiche (P08-03).
3298
3434
  *
3299
3435
  * ```html
3300
3436
  * <st-banner ton="avertissement" titre="Session bientot expiree" fermable (ferme)="retirer()"
3301
3437
  * message="Enregistrez votre saisie." />
3302
3438
  * ```
3303
3439
  *
3440
+ * ⚠️ **Le ton `essai` ne se ferme pas** (P08-04) : il dit qu'un environnement est fictif
3441
+ * (« Donnees fictives », « Bac a sable ») tant qu'il l'est. `fermable` y est IGNORE, sans croix ni
3442
+ * touche ; son mot est le TITRE (exige : sans lui, la couleur et la fiole seules le diraient), et
3443
+ * aucun prefixe ne le repete. `st-app-shell variante="essai"` en pose une en tete de ses bannieres.
3444
+ *
3304
3445
  * Retrait : l'appelant retire l'element apres `ferme`, par
3305
3446
  * `(animate.leave)="fonduDeSortie($event)"`. Aucune animation d'insertion : une
3306
3447
  * banniere generique apparait d'un coup (decision du proprietaire, lot 196).
@@ -3318,15 +3459,20 @@ export declare class StBanner {
3318
3459
  readonly forme: import("@angular/core").InputSignal<FormeDeBanniere>;
3319
3460
  /** Identifiant du titre ; engendre si absent. */
3320
3461
  readonly identifiant: import("@angular/core").InputSignal<string | null>;
3462
+ /** Ignore sous le ton `essai`, qui ne se ferme jamais. */
3321
3463
  readonly fermable: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
3322
3464
  /** `null` : le texte vient du dictionnaire de l'application. */
3323
3465
  readonly libelleFermeture: import("@angular/core").InputSignal<string | null>;
3324
3466
  readonly ferme: import("@angular/core").OutputEmitterRef<void>;
3325
- protected readonly icone: import("@angular/core").Signal<"badge-coche" | "bouclier-coche" | "cercle-alerte" | "cercle-coche" | "cercle-croix" | "cercle-info" | "cercle-question" | "cloche" | "epingle" | "etoile" | "grille" | "horloge" | "marque-page" | "octogone-alerte" | "triangle-alerte">;
3467
+ protected readonly icone: import("@angular/core").Signal<"badge-coche" | "bouclier-coche" | "cercle-alerte" | "cercle-coche" | "cercle-croix" | "cercle-info" | "cercle-question" | "cloche" | "epingle" | "essai" | "etoile" | "grille" | "horloge" | "marque-page" | "octogone-alerte" | "triangle-alerte">;
3326
3468
  protected readonly idDuTitre: import("@angular/core").Signal<string>;
3469
+ /** L'essai dit son mot par le titre : aucun prefixe ne le repete. */
3327
3470
  protected readonly prefixe: import("@angular/core").Signal<string | null>;
3471
+ /** `fermable`, sauf sous le ton `essai` : un environnement fictif ne se ferme pas. */
3472
+ protected readonly fermableLu: import("@angular/core").Signal<boolean>;
3328
3473
  protected readonly libelleFermetureLu: import("@angular/core").Signal<string>;
3329
3474
  protected readonly roleLu: import("@angular/core").Signal<"status" | "alert" | null>;
3475
+ constructor();
3330
3476
  /**
3331
3477
  * ⚠️ Le focus est DEPLACE avant l'emission, vers le premier element focalisable
3332
3478
  * VISIBLE qui suit (sinon le dernier qui precede, sinon le conteneur), sans
@@ -3388,7 +3534,7 @@ export type TonDeMessage = Exclude<TonSemantique, 'primaire'>;
3388
3534
  * qui compte. Un message en ligne est lu quand on atteint l'endroit auquel il se
3389
3535
  * rattache ; en faire une region vivante le ferait annoncer hors contexte, et une
3390
3536
  * vingtaine de champs produiraient vingt annonces a l'ouverture de l'ecran.
3391
- * `annonce` en fait une region (`status`, `alert` en danger) pour un message
3537
+ * `annonce` en fait une region (`status`, `alert` en erreur ou en danger) pour un message
3392
3538
  * apparu APRES coup hors d'un formulaire (copie refusee, verification finie).
3393
3539
  * ⚠️ Une region inseree deja remplie n'est pas annoncee de facon fiable (NVDA,
3394
3540
  * JAWS) : avec `annonce`, la region est posee VIDE, et son contenu y entre apres
@@ -3396,7 +3542,12 @@ export type TonDeMessage = Exclude<TonSemantique, 'primaire'>;
3396
3542
  *
3397
3543
  * ⚠️ **Le ton se dit en mots** : un prefixe masque (« Erreur : ») ouvre le texte,
3398
3544
  * lu au parcours et par `aria-describedby`. Le texte ne repete donc jamais le
3399
- * mot « Erreur ».
3545
+ * mot « Erreur ». Le reglage `--st-prefixe-de-ton: visible` de l'application
3546
+ * l'affiche (P08-03) : une faute se lit alors au mot, sans la couleur.
3547
+ *
3548
+ * Ton `erreur` pour une faute ou un echec (champ invalide, refus) ; `danger` pour
3549
+ * une destruction ou une urgence. L'erreur prend la couleur du danger tant que la
3550
+ * marque ne pose pas la sienne.
3400
3551
  *
3401
3552
  * ⚠️ Pour une erreur de SAISIE, le champ doit porter `aria-describedby` vers
3402
3553
  * l'identifiant du message : `st-form-field` pose ce lien ; un champ nu le pose
@@ -3668,7 +3819,7 @@ export declare class StCopyButton {
3668
3819
  */
3669
3820
  protected readonly copieConfirmee: import("@angular/core").WritableSignal<boolean>;
3670
3821
  private minuterieDeConfirmation;
3671
- protected readonly icone: import("@angular/core").Signal<"iban" | "code" | "copie" | "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" | "chargement" | "cheque" | "chevron-bas" | "chevron-droite" | "chevron-gauche" | "chevron-haut" | "chevrons-droite" | "chevrons-haut-bas" | "cle" | "cloche" | "cloche-sonnerie" | "coche" | "code-qr" | "code-qr-scanner" | "coffre-fort" | "colonnes" | "connexion" | "contraste" | "corbeille" | "corbeille-croix" | "courriel" | "crayon" | "croix" | "curseur-clic" | "deconnexion" | "devise" | "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" | "message" | "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">;
3822
+ protected readonly icone: import("@angular/core").Signal<"iban" | "code" | "copie" | "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" | "chargement" | "cheque" | "chevron-bas" | "chevron-droite" | "chevron-gauche" | "chevron-haut" | "chevrons-droite" | "chevrons-haut-bas" | "cible" | "cle" | "cloche" | "cloche-sonnerie" | "coche" | "code-qr" | "code-qr-scanner" | "coffre-fort" | "colonnes" | "comparer" | "connexion" | "contraste" | "corbeille" | "corbeille-croix" | "courriel" | "crayon" | "croix" | "curseur-clic" | "deconnexion" | "devise" | "disposition" | "dollar" | "dossier" | "dossier-barre" | "dossier-ouvert" | "double-coche" | "drapeau" | "echange" | "eclair" | "empreinte-digitale" | "enregistrer" | "entree" | "envoyer" | "epaisseur-de-trait" | "epingle" | "essai" | "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" | "message" | "minuteur" | "mise-au-point" | "mise-en-page-image" | "moins" | "nuage-barre" | "nuage-televerser" | "octogone-alerte" | "oeil" | "oeil-barre" | "panneau-gauche" | "parametres" | "parapluie" | "parchemin" | "passerelle" | "pause" | "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">;
3672
3823
  /** La copie a ete refusee : le message VISIBLE reste jusqu'a la tentative suivante. */
3673
3824
  protected readonly copieRefusee: import("@angular/core").WritableSignal<boolean>;
3674
3825
  protected readonly messageDeRefus: import("@angular/core").Signal<string>;
@@ -0,0 +1,46 @@
1
+ # `@starterlib/ui/virtuel` — `st-virtual-list`, bonus sous condition ecrite (lot 267)
2
+
3
+ ## Condition d'entree
4
+
5
+ Une liste REELLE au-dela de la pagination par curseur : plusieurs milliers de lignes AFFICHEES
6
+ ensemble par un ecran nomme (un journal d'operations a parcourir d'un trait, une liste de
7
+ rapprochement). Construite le 2026-10-01 sur decision du proprietaire (vague 4) ; la condition
8
+ reste la regle de son emploi : une liste paginee par curseur (`st-list`, `st-data-table` de
9
+ `@starterlib/ui/listes`) n'en a pas besoin, et le backend ne rend pas de page plus longue que sa
10
+ borne.
11
+
12
+ Ce qu'elle n'est pas : une grille editable (`st-data-grid`) ni une liste de transfert
13
+ (`st-transfer-list`), qui restent conditionnees ; ni un tableau (pas de colonnes ni de tri).
14
+
15
+ ## API
16
+
17
+ ```html
18
+ <st-virtual-list libelle="Operations de septembre" [elements]="operations()" [suivi]="parId">
19
+ <ng-template [stVirtualItem]="operations()" let-operation let-rang="index">
20
+ {{ operation.libelle }}
21
+ </ng-template>
22
+ </st-virtual-list>
23
+ ```
24
+
25
+ - `elements` : le tableau entier ; seules les lignes de la fenetre (et cinq a dix de marge) existent
26
+ dans le document.
27
+ - `libelle` : le nom de la fenetre (`role="region"`, focalisable : elle defile aux fleches, a Page
28
+ suivante et a Fin, sans contenu focalisable requis).
29
+ - Chaque ligne porte `aria-posinset` et `aria-setsize` : « 37 sur 10 000 ».
30
+ - `hauteurDeLigne` : en pixels CSS, FIXE (44 par defaut) ; une valeur nulle ou negative est refusee
31
+ (signalee en developpement, 44 retenus) : elle ferait rendre la liste entiere.
32
+ - `suivi` : la fonction de suivi des lignes (le rang par defaut).
33
+ - `allerA(rang)` : amene une ligne dans la fenetre.
34
+ - Hauteur de la fenetre : l'entree `hauteurDeFenetre`, une longueur CSS (`24rem` par defaut).
35
+
36
+ ## Gardes et poids
37
+
38
+ - Point d'entree a lui : il traine `@angular/cdk/scrolling` et RIEN d'autre (`pnpm paquets:check`,
39
+ au sous-chemin exact) ; il n'importe aucun autre point d'entree du socle, et aucun ne l'importe.
40
+ Partage separement en federation (`partageDuSocle`, vingt-huit specificateurs en 0.10.14).
41
+ - Poids (gzip 9) : `starterlib-ui-virtuel.mjs`, 2 685 octets ; le pair `@angular/cdk/scrolling`
42
+ (22.2.0), 9 002 octets avant elagage, qu'une page paie a son premier emploi. Le tronc n'en recoit
43
+ rien.
44
+ - Essais : `st-virtual-list.spec.ts` (fenetre seule rendue sur 10 000, rang et total, fenetre
45
+ nommee et focalisable, hauteur fixe et hauteur invalide refusee, total suivi, axe) ; banc en vrai
46
+ navigateur `banc/virtuel.navigateur.spec.ts` (defilement jusqu'a la derniere ligne).