@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
@@ -2,6 +2,7 @@ import { AnnonceLocale, CatalogueDuPointDEntree, Icone, LibellesUi, NiveauDeTitr
2
2
  import * as i0 from "@angular/core";
3
3
  import { InjectionToken, Provider, Signal, TemplateRef } from "@angular/core";
4
4
  import { Ton, sansCommandesDeDirection } from "@starterlib/util";
5
+ import { TonDeStatut } from "@starterlib/ui/indicateurs";
5
6
  import { DateIso, EtatDeDocument } from "@starterlib/util/valeurs";
6
7
  /**
7
8
  * `pages` : page precedente et suivante, pour un tableau.
@@ -610,7 +611,7 @@ export declare class StSortHeader {
610
611
  * connait pas le tri en cours de la page), donc pas un candidat a `model()`.
611
612
  */
612
613
  readonly sensDemande: import("@angular/core").OutputEmitterRef<SensDeTri | null>;
613
- protected readonly icone: import("@angular/core").Signal<"code" | "menu" | "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" | "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-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">;
614
+ protected readonly icone: import("@angular/core").Signal<"code" | "menu" | "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" | "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-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">;
614
615
  protected basculer(): void;
615
616
  static ɵfac: i0.ɵɵFactoryDeclaration<StSortHeader, never>;
616
617
  static ɵcmp: i0.ɵɵComponentDeclaration<StSortHeader, "button[stSortHeader]", never, {
@@ -663,11 +664,13 @@ export interface TriDeTableau {
663
664
  readonly sens: SensDeTri;
664
665
  }
665
666
  /**
666
- * Ton d'une ligne (planche 4 : ecriture rejetee) : `danger` pose le papier `dangerDiscret` a
667
- * 40 % sous la ligne. Le texte de la ligne reste l'affaire des gabarits de cellule, et le ton ne
668
- * dit rien seul : le statut de la ligne l'ecrit en toutes lettres (WCAG 1.4.1).
667
+ * Ton d'une ligne (planche 4 : ecriture rejetee) : `erreur` pose le papier `erreurDiscret` a
668
+ * 40 % sous la ligne, `danger` le papier `dangerDiscret` (une ligne a detruire, une urgence ;
669
+ * le ton d'une ecriture rejetee avant le role `erreur`, P08-03). Le texte de la ligne reste
670
+ * l'affaire des gabarits de cellule, et le ton ne dit rien seul : le statut de la ligne l'ecrit en
671
+ * toutes lettres (WCAG 1.4.1).
669
672
  */
670
- export type TonDeLigne = Extract<Ton, 'danger'>;
673
+ export type TonDeLigne = Extract<Ton, 'erreur' | 'danger'>;
671
674
  /** Ce que le tableau vide dit : rien du tout, ou rien pour ces filtres (UX-12). */
672
675
  export type RaisonDuVide = 'aucune-donnee' | 'aucun-resultat';
673
676
  /**
@@ -834,7 +837,7 @@ export declare class StDataTable<T> {
834
837
  identifiant: string;
835
838
  nom: string | null;
836
839
  choisie: boolean;
837
- ton: "danger" | null;
840
+ ton: TonDeLigne | null;
838
841
  choisissable: boolean;
839
842
  }[]>;
840
843
  /** `lignesAttendues`, borne a `PLAFOND_DE_SQUELETTE` : un squelette trop long pese plus qu'il n'aide. */
@@ -848,7 +851,7 @@ export declare class StDataTable<T> {
848
851
  identifiant: string;
849
852
  nom: string | null;
850
853
  choisie: boolean;
851
- ton: "danger" | null;
854
+ ton: TonDeLigne | null;
852
855
  choisissable: boolean;
853
856
  }[]>;
854
857
  protected readonly toutesChoisies: import("@angular/core").Signal<boolean>;
@@ -1640,7 +1643,7 @@ export declare class StAttachment {
1640
1643
  protected demander(): void;
1641
1644
  protected readonly nomAffiche: import("@angular/core").Signal<string>;
1642
1645
  protected readonly precision: import("@angular/core").Signal<string>;
1643
- protected readonly icone: import("@angular/core").Signal<"code" | "menu" | "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" | "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-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">;
1646
+ protected readonly icone: import("@angular/core").Signal<"code" | "menu" | "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" | "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-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">;
1644
1647
  /** `2026-02-30` a la forme d'une date : lue telle quelle, elle s'afficherait « 2 mars 2026 ». */
1645
1648
  protected readonly dateAffichee: import("@angular/core").Signal<string | null>;
1646
1649
  /**
@@ -1776,9 +1779,9 @@ export declare class StDocumentList {
1776
1779
  cle: string;
1777
1780
  document: DocumentAffiche;
1778
1781
  nom: string;
1779
- iconeDuFichier: "code" | "menu" | "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" | "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-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";
1782
+ iconeDuFichier: "code" | "menu" | "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" | "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-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";
1780
1783
  telechargeable: boolean;
1781
- ton: import("@starterlib/util").TonSemantique;
1784
+ ton: TonDeStatut;
1782
1785
  icone: "horloge" | null;
1783
1786
  actions: ActionDeDocument[];
1784
1787
  }[]>;
@@ -1977,7 +1980,7 @@ export declare class StDetailDEvenement {
1977
1980
  }, {}, never, never, true, never>;
1978
1981
  }
1979
1982
  /** Le ton d'un evenement : un mot lu avant son titre, et la forme de son repere. */
1980
- export type TonDEvenement = Extract<Ton, 'neutre' | 'information' | 'succes' | 'avertissement' | 'danger'>;
1983
+ export type TonDEvenement = Extract<Ton, 'neutre' | 'information' | 'succes' | 'avertissement' | 'erreur' | 'danger'>;
1981
1984
  export type OrdreDeChronologie = 'recent-d-abord' | 'ancien-d-abord';
1982
1985
  /**
1983
1986
  * Qui a agi, quand la chronologie en sait plus que le nom : sa precision (role, service) et sa
@@ -2071,7 +2074,14 @@ interface GroupeDeChronologie {
2071
2074
  * `st-pagination` en mode `suite`), la ou il se range dans l'ordre ; au premier apres un
2072
2075
  * remplacement ; au dernier si rien n'est arrive. Aucune annonce : la pagination dit le nombre.
2073
2076
  *
2074
- * Aucune region vivante : un nouvel evenement s'annonce, s'il le faut, par l'application. Un
2077
+ * ⚠️ **Sa propre suite** (P08-14) : `suiteDisponible` montre « Afficher les evenements plus
2078
+ * anciens » (plus recents, dans l'ordre chronologique), qui emet `suite` ; l'application lit la page
2079
+ * suivante PAR CURSEUR et l'ajoute. Les pages chargees restent : au-dela de 500 evenements,
2080
+ * `st-virtual-list`. A l'arrivee de la suite, le focus va au premier evenement ajoute et le nombre
2081
+ * s'annonce UNE fois (« 50 evenements ajoutes »). Un REMPLACEMENT (un filtre de categories retire
2082
+ * par la puce d'une `st-filter-bar`) ne s'annonce pas ici : la barre le dit, avec le nombre.
2083
+ *
2084
+ * Aucune autre region vivante : un nouvel evenement s'annonce, s'il le faut, par l'application. Un
2075
2085
  * titre n'entre dans le plan de la page que sur demande (`niveauDuTitre`) : un journal de
2076
2086
  * cinquante lignes n'y met pas cinquante titres.
2077
2087
  */
@@ -2088,6 +2098,11 @@ export declare class StTimeline {
2088
2098
  private readonly document;
2089
2099
  private readonly identifiant;
2090
2100
  private readonly catalogue;
2101
+ private readonly injecteur;
2102
+ protected readonly textes: Signal<import("@starterlib/ui/listes").LibellesListes>;
2103
+ /** `lang` de ce que le catalogue ecrit seul, quand il retombe sur le francais (D-29). */
2104
+ protected readonly langue: Signal<string | null>;
2105
+ protected readonly annonce: AnnonceLocale;
2091
2106
  readonly evenements: import("@angular/core").InputSignal<readonly EvenementDeChronologie[]>;
2092
2107
  /** Le nom de la liste (« Historique du virement »). */
2093
2108
  readonly etiquette: import("@angular/core").InputSignal<string>;
@@ -2104,6 +2119,10 @@ export declare class StTimeline {
2104
2119
  readonly chargement: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
2105
2120
  /** Nombre d'evenements de la silhouette du premier chargement. */
2106
2121
  readonly lignesAttendues: import("@angular/core").InputSignalWithTransform<number, unknown>;
2122
+ /** Une suite attend sur le serveur (curseur) : le bouton de suite se montre. */
2123
+ readonly suiteDisponible: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
2124
+ /** Emis par le bouton de suite : l'application lit la page suivante, par curseur, et l'ajoute. */
2125
+ readonly suite: import("@angular/core").OutputEmitterRef<void>;
2107
2126
  /**
2108
2127
  * Le nom de la liste : l'etiquette, puis l'ordre (« Historique du virement, du plus recent au
2109
2128
  * plus ancien ») ; un lecteur d'ecran ne devine pas qu'une liste est antichronologique.
@@ -2116,6 +2135,14 @@ export declare class StTimeline {
2116
2135
  private readonly rendu;
2117
2136
  /** La cle de l'evenement vise par le prochain `focus()` ; `null` : le dernier. */
2118
2137
  private cibleDuFocus;
2138
+ /** Une suite demandee par le bouton : son arrivee prend le focus et s'annonce, une fois. */
2139
+ private suiteDemandee;
2140
+ /**
2141
+ * Une suite a ete offerte : la region de son annonce existe des lors, vide, et reste (elle doit
2142
+ * preceder le texte, et la derniere page retire le bouton dans le meme rendu). Sans suite, la
2143
+ * chronologie n'a aucune region vivante.
2144
+ */
2145
+ protected readonly avecSuite: import("@angular/core").WritableSignal<boolean>;
2119
2146
  private clesAffichees;
2120
2147
  protected readonly lignes: Signal<readonly LigneDeChronologie[]>;
2121
2148
  /**
@@ -2134,6 +2161,8 @@ export declare class StTimeline {
2134
2161
  * la chronologie s'est allongee, et la pagination dit le nombre.
2135
2162
  */
2136
2163
  focus(options?: FocusOptions): void;
2164
+ /** Le bouton de suite : l'application lit la page suivante ; son arrivee prendra le focus. */
2165
+ protected demanderLaSuite(): void;
2137
2166
  /** Le contexte du gabarit d'acteur d'une ligne. */
2138
2167
  protected contexteDActeur(ligne: LigneDeChronologie, acteur: ActeurDeLigne): ContexteDActeur;
2139
2168
  static ɵfac: i0.ɵɵFactoryDeclaration<StTimeline, never>;
@@ -2183,7 +2212,14 @@ export declare class StTimeline {
2183
2212
  "required": false;
2184
2213
  "isSignal": true;
2185
2214
  };
2186
- }, {}, ["gabarits", "gabaritDActeur"], never, true, never>;
2215
+ "suiteDisponible": {
2216
+ "alias": "suiteDisponible";
2217
+ "required": false;
2218
+ "isSignal": true;
2219
+ };
2220
+ }, {
2221
+ "suite": "suite";
2222
+ }, ["gabarits", "gabaritDActeur"], never, true, never>;
2187
2223
  }
2188
2224
  /**
2189
2225
  * Ce que `st-value-change` et `st-change-list` partagent (lot 259), interne a
@@ -2347,6 +2383,27 @@ export interface LibellesListes {
2347
2383
  readonly afficherLesChampsInchanges: (nombre: number, enChiffres: string) => string;
2348
2384
  /** Une liste de changements ou rien n'a change. */
2349
2385
  readonly aucuneModification: string;
2386
+ /**
2387
+ * Deux versions dont chaque champ est identique (P08-14) : l'etat vide EXPLICITE d'une
2388
+ * comparaison, distinct d'une liste sans champ.
2389
+ */
2390
+ readonly aucuneDifference: string;
2391
+ /** Une valeur sensible sans gabarit `st-masked` : elle ne s'affiche jamais en clair (P08-14). */
2392
+ readonly valeurMasquee: string;
2393
+ /** Les deux choix de `st-version-compare` (P08-14). */
2394
+ readonly versionDeReference: string;
2395
+ readonly versionComparee: string;
2396
+ /** Une version dans son choix : sa date, son auteur, son motif s'il y en a un. */
2397
+ readonly versionChoisie: (date: string, auteur: string, motif: string | null) => string;
2398
+ /** La legende de la liste des differences, les deux dates deja ecrites. */
2399
+ readonly differencesEntre: (avant: string, apres: string) => string;
2400
+ /** Le lien vers l'entree du journal d'audit de la version comparee. */
2401
+ readonly voirLEntreeDAudit: string;
2402
+ /** Le bouton de suite d'une chronologie (P08-14), selon son ordre. */
2403
+ readonly evenementsPlusAnciens: string;
2404
+ readonly evenementsPlusRecents: string;
2405
+ /** L'annonce unique d'une suite chargee : le nombre, et le meme ecrit a la locale. */
2406
+ readonly evenementsAjoutes: (nombre: number, enChiffres: string) => string;
2350
2407
  /**
2351
2408
  * Le nom d'une chronologie (`st-timeline`) : l'etiquette de l'application, puis son ordre, lu a
2352
2409
  * l'entree de la liste (« Historique du virement, du plus recent au plus ancien »).
@@ -2399,6 +2456,18 @@ export interface Changement {
2399
2456
  * valeurs.
2400
2457
  */
2401
2458
  readonly nature?: NatureDeChangement;
2459
+ /**
2460
+ * Les sections ou le champ se range, de la plus large a la plus fine (P08-14) : une
2461
+ * configuration imbriquee se lit par sections (« Limites › Retraits »), le libelle restant le
2462
+ * nom du champ.
2463
+ */
2464
+ readonly chemin?: readonly string[];
2465
+ /**
2466
+ * Une valeur sensible (IBAN, telephone) : jamais rendue en clair (P08-14). Son gabarit
2467
+ * `stValeurDeChangement` compose `st-masked` ; sans gabarit, « Valeur masquee » (erreur en
2468
+ * developpement).
2469
+ */
2470
+ readonly sensible?: boolean;
2402
2471
  }
2403
2472
  /** Une ligne rendue : son changement, sa nature, ses valeurs lues et son gabarit. */
2404
2473
  interface LigneDeChangement {
@@ -2413,6 +2482,15 @@ interface LigneDeChangement {
2413
2482
  readonly icone: NomDIcone;
2414
2483
  readonly mot: string;
2415
2484
  readonly gabarit: TemplateRef<ContexteDeValeurDeChangement> | null;
2485
+ /** Le chemin de la section, ecrit (« Limites › Retraits ») ; vide hors section. */
2486
+ readonly section: string;
2487
+ readonly sensible: boolean;
2488
+ }
2489
+ /** Une section de la liste : son chemin ecrit, ses lignes ; `null` : les champs hors section. */
2490
+ interface SectionDeChangements {
2491
+ readonly cle: string;
2492
+ readonly titre: string | null;
2493
+ readonly lignes: readonly LigneDeChangement[];
2416
2494
  }
2417
2495
  /**
2418
2496
  * Les changements d'une demande de modification, champ par champ : ce que le valideur voit AVANT
@@ -2455,13 +2533,34 @@ export declare class StChangeList {
2455
2533
  readonly changements: import("@angular/core").InputSignal<readonly Changement[]>;
2456
2534
  /** Le nom du tableau, en legende (« Modifications du beneficiaire »). */
2457
2535
  readonly legende: import("@angular/core").InputSignal<string>;
2536
+ /**
2537
+ * La liste compare deux versions (`st-version-compare`, P08-14) : vide, elle dit « Aucune
2538
+ * difference », et non « Aucune modification ».
2539
+ */
2540
+ readonly aucuneDifference: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
2458
2541
  /** Les champs inchanges se montrent ; le bouton bascule le change. */
2459
2542
  readonly afficherInchanges: import("@angular/core").ModelSignal<boolean>;
2543
+ /**
2544
+ * Des gabarits de valeur relayes par une composition (`st-version-compare`, P08-14) : une
2545
+ * requete de contenu ne voit pas ce qu'un composant reprojette. Ceux du contenu l'emportent.
2546
+ */
2547
+ readonly gabaritsFournis: import("@angular/core").InputSignal<readonly StValeurDeChangement[]>;
2460
2548
  private readonly gabarits;
2461
2549
  protected readonly lignes: Signal<readonly LigneDeChangement[]>;
2462
2550
  protected readonly nombreDInchanges: Signal<number>;
2463
2551
  protected readonly lignesVisibles: Signal<readonly LigneDeChangement[]>;
2552
+ /**
2553
+ * Les lignes visibles par section, dans l'ordre de la premiere ligne de chacune ; une section
2554
+ * dont chaque champ est inchange (et masque) ne s'affiche pas.
2555
+ */
2556
+ protected readonly sections: Signal<readonly SectionDeChangements[]>;
2557
+ /**
2558
+ * Rien a montrer : AUCUNE DIFFERENCE quand des champs existent, tous inchanges (deux versions
2559
+ * identiques, P08-14) ; aucune modification quand la liste n'a aucun champ.
2560
+ */
2561
+ protected readonly texteVide: Signal<string>;
2464
2562
  protected readonly texteDeLaBascule: Signal<string>;
2563
+ constructor();
2465
2564
  protected basculer(): void;
2466
2565
  static ɵfac: i0.ɵɵFactoryDeclaration<StChangeList, never>;
2467
2566
  static ɵcmp: i0.ɵɵComponentDeclaration<StChangeList, "st-change-list", never, {
@@ -2475,14 +2574,132 @@ export declare class StChangeList {
2475
2574
  "required": true;
2476
2575
  "isSignal": true;
2477
2576
  };
2577
+ "aucuneDifference": {
2578
+ "alias": "aucuneDifference";
2579
+ "required": false;
2580
+ "isSignal": true;
2581
+ };
2478
2582
  "afficherInchanges": {
2479
2583
  "alias": "afficherInchanges";
2480
2584
  "required": false;
2481
2585
  "isSignal": true;
2482
2586
  };
2587
+ "gabaritsFournis": {
2588
+ "alias": "gabaritsFournis";
2589
+ "required": false;
2590
+ "isSignal": true;
2591
+ };
2483
2592
  }, {
2484
2593
  "afficherInchanges": "afficherInchangesChange";
2485
2594
  }, ["gabarits"], never, true, never>;
2486
2595
  }
2596
+ /** Une version d'une configuration : quand, par qui, et pourquoi. */
2597
+ export interface VersionDeConfiguration {
2598
+ /** Identifiant stable de la version. */
2599
+ readonly cle: string;
2600
+ /** L'instant de la version, ISO 8601 avec son decalage. */
2601
+ readonly instant: string;
2602
+ /** Qui l'a faite, deja ecrit (« Marie Dupont »). */
2603
+ readonly auteur: string;
2604
+ /** Pourquoi, deja traduit ; `null` : aucun motif. */
2605
+ readonly motif?: string | null;
2606
+ }
2607
+ /** Une version telle que son choix l'ecrit : sa cle, sa date, et la ligne complete. */
2608
+ interface VersionEcrite {
2609
+ readonly cle: string;
2610
+ readonly date: string;
2611
+ readonly texte: string;
2612
+ }
2613
+ /**
2614
+ * Comparer deux versions d'une configuration (P08-14) : deux choix de version (date, auteur, motif),
2615
+ * la liste des differences (`st-change-list`, par sections), et le lien vers l'entree du journal
2616
+ * d'audit.
2617
+ *
2618
+ * ```html
2619
+ * <st-version-compare etiquette="Versions de la configuration" [versions]="versions()"
2620
+ * [(avant)]="reference" [(apres)]="comparee" [changements]="differences()"
2621
+ * [lienDAudit]="lienDAudit()" [chargement]="differences.isLoading()" />
2622
+ * ```
2623
+ *
2624
+ * - **Le serveur compare** : l'application lit la paire choisie (`avant`, `apres`) et donne les
2625
+ * `changements` qu'il calcule ; le composant ne compare rien. Deux versions identiques donnent
2626
+ * l'etat vide EXPLICITE (« Aucune difference »), la meme version choisie deux fois aussi.
2627
+ * - Les valeurs sensibles restent masquees : `Changement.sensible`, et un gabarit
2628
+ * `stValeurDeChangement` qui compose `st-masked`, projete ici comme dans `st-change-list`.
2629
+ * - Deux `select` natifs, nommes par leur libelle ; les dates dans le fuseau de l'application.
2630
+ */
2631
+ export declare class StVersionCompare {
2632
+ private readonly locale;
2633
+ private readonly fuseau;
2634
+ private readonly catalogue;
2635
+ protected readonly textes: import("@angular/core").Signal<import("@starterlib/ui/listes").LibellesListes>;
2636
+ /** `lang` de ce que le catalogue ecrit seul, quand il retombe sur le francais (D-29). */
2637
+ protected readonly langue: import("@angular/core").Signal<string | null>;
2638
+ /** Le nom du groupe des deux choix (« Versions de la configuration »), deja traduit. */
2639
+ readonly etiquette: import("@angular/core").InputSignal<string>;
2640
+ /** Les versions, de la plus recente a la plus ancienne, comme le serveur les donne. */
2641
+ readonly versions: import("@angular/core").InputSignal<readonly VersionDeConfiguration[]>;
2642
+ /** La version de reference. */
2643
+ readonly avant: import("@angular/core").ModelSignal<string | null>;
2644
+ /** La version comparee a la reference. */
2645
+ readonly apres: import("@angular/core").ModelSignal<string | null>;
2646
+ /** Les differences calculees par le serveur pour la paire choisie. */
2647
+ readonly changements: import("@angular/core").InputSignal<readonly Changement[]>;
2648
+ /** L'adresse de l'entree du journal d'audit de la version comparee ; `null` : aucun lien. */
2649
+ readonly lienDAudit: import("@angular/core").InputSignal<string | null>;
2650
+ /** Les differences de la paire choisie sont en cours de lecture. */
2651
+ readonly chargement: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
2652
+ /** Les gabarits de valeur projetes (`st-masked` d'une valeur sensible), relayes a la liste. */
2653
+ protected readonly gabarits: import("@angular/core").Signal<readonly StValeurDeChangement[]>;
2654
+ /** Chaque version ecrite une fois : sa date dans le fuseau de l'application, son auteur, son motif. */
2655
+ protected readonly ecrites: import("@angular/core").Signal<readonly VersionEcrite[]>;
2656
+ /** La legende des differences : les deux dates choisies, ou l'etiquette seule. */
2657
+ protected readonly legende: import("@angular/core").Signal<string>;
2658
+ /** La meme version choisie deux fois : aucune difference, quoi que le serveur ait rendu. */
2659
+ protected readonly differences: import("@angular/core").Signal<readonly Changement[]>;
2660
+ protected choisirAvant(evenement: Event): void;
2661
+ protected choisirApres(evenement: Event): void;
2662
+ static ɵfac: i0.ɵɵFactoryDeclaration<StVersionCompare, never>;
2663
+ static ɵcmp: i0.ɵɵComponentDeclaration<StVersionCompare, "st-version-compare", never, {
2664
+ "etiquette": {
2665
+ "alias": "etiquette";
2666
+ "required": true;
2667
+ "isSignal": true;
2668
+ };
2669
+ "versions": {
2670
+ "alias": "versions";
2671
+ "required": true;
2672
+ "isSignal": true;
2673
+ };
2674
+ "avant": {
2675
+ "alias": "avant";
2676
+ "required": false;
2677
+ "isSignal": true;
2678
+ };
2679
+ "apres": {
2680
+ "alias": "apres";
2681
+ "required": false;
2682
+ "isSignal": true;
2683
+ };
2684
+ "changements": {
2685
+ "alias": "changements";
2686
+ "required": true;
2687
+ "isSignal": true;
2688
+ };
2689
+ "lienDAudit": {
2690
+ "alias": "lienDAudit";
2691
+ "required": false;
2692
+ "isSignal": true;
2693
+ };
2694
+ "chargement": {
2695
+ "alias": "chargement";
2696
+ "required": false;
2697
+ "isSignal": true;
2698
+ };
2699
+ }, {
2700
+ "avant": "avantChange";
2701
+ "apres": "apresChange";
2702
+ }, ["gabarits"], never, true, never>;
2703
+ }
2487
2704
 
2488
2705
  export {};
@@ -1,6 +1,6 @@
1
1
  import * as i0 from "@angular/core";
2
2
  import { InjectionToken, Provider, Signal } from "@angular/core";
3
- import { CatalogueDuPointDEntree } from "@starterlib/ui";
3
+ import { CatalogueDuPointDEntree, Icone } from "@starterlib/ui";
4
4
  import { StDialog } from "@starterlib/ui/surfaces";
5
5
  /**
6
6
  * Les libelles de `@starterlib/ui/navigation` (lot 235) : le catalogue par point d'entree (AD-10,
@@ -12,6 +12,11 @@ export interface LibellesNavigation {
12
12
  readonly menu: string;
13
13
  /** La fermeture visible du tiroir, obligatoire au tactile (APG dialog). */
14
14
  readonly fermerLeMenu: string;
15
+ /**
16
+ * La pastille d'une entree de la barre inferieure (P08-05), dite dans le nom du lien : « Messages,
17
+ * 3 \u00e0 traiter ».
18
+ */
19
+ readonly aTraiter: (nombre: number) => string;
15
20
  }
16
21
  export declare const LIBELLES_NAVIGATION_FR: LibellesNavigation;
17
22
  export declare const LIBELLES_NAVIGATION_EN: LibellesNavigation;
@@ -320,5 +325,81 @@ export declare class StPageNav {
320
325
  };
321
326
  }, {}, never, never, true, never>;
322
327
  }
328
+ /** Une entree de la barre de navigation inferieure. */
329
+ export interface EntreeDeNavigationBasse {
330
+ /** Le libelle, deja traduit, TOUJOURS visible sous l'icone (une dizaine de caracteres a 320 px). */
331
+ readonly libelle: string;
332
+ /** L'icone, toujours visible au-dessus du libelle. */
333
+ readonly icone: Icone;
334
+ /** La destination, telle que `routerLink` la recoit. */
335
+ readonly lien: string | readonly unknown[];
336
+ /**
337
+ * Le nombre d'elements A TRAITER (messages non lus, demandes a signer) : jamais un volume ni un
338
+ * score. `0`, `null` ou absent : aucune pastille.
339
+ */
340
+ readonly pastille?: number | null;
341
+ }
342
+ /** Cinq entrees au plus (decision du socle) : une sixieme destination passe par une page ou un menu. */
343
+ export declare const ENTREES_DE_NAVIGATION_BASSE_MAX = 5;
344
+ /** La propriete que la barre pose sur `<html>` : sa hauteur, zone sure comprise. */
345
+ export declare const PROPRIETE_HAUTEUR_PIED = "--st-hauteur-pied";
346
+ /**
347
+ * Barre de navigation inferieure (P08-05) : la navigation d'un petit ecran, sans tiroir — sous
348
+ * `md`, un menu replie cacherait les destinations ; au-dessus, la colonne laterale (`st-sidenav`)
349
+ * prend le relais et la barre se retire (`hidden`, hors de l'arbre d'accessibilite).
350
+ *
351
+ * ```html
352
+ * <st-app-shell>
353
+ * ...
354
+ * <st-bottom-nav navigationBasse [entrees]="entrees" />
355
+ * </st-app-shell>
356
+ * ```
357
+ *
358
+ * - **Cinq entrees au plus** ; au-dela, une erreur en developpement (les cinq premieres en
359
+ * production). Chacune est un `a[stNavLink]` : `aria-current="page"` pose par le routeur, lien
360
+ * racine exact.
361
+ * - **Icone ET libelle toujours visibles**, l'une sur l'autre ; une cible de la hauteur de commande
362
+ * (`--st-commande-hauteur`), jamais sous la cible tactile du socle (44 px).
363
+ * - **Une region de navigation nommee** (`etiquette` ; « Navigation principale » par defaut).
364
+ * - **Pastille** : le nombre d'elements a traiter, dit aussi en mots dans le nom du lien
365
+ * (« Messages, 3 a traiter »).
366
+ * - **Le focus ne passe jamais dessous** (WCAG 2.4.11) : la barre pose sa hauteur, zone sure comprise
367
+ * (`env(safe-area-inset-bottom)`), sur `<html>` (`--st-hauteur-pied`), que la feuille des jetons lit
368
+ * dans `scroll-padding-block-end` et `st-app-shell` dans la place qu'il reserve sous son contenu.
369
+ */
370
+ export declare class StBottomNav {
371
+ private readonly document;
372
+ private readonly hote;
373
+ private readonly libelles;
374
+ protected readonly libellesNavigation: import("@angular/core").Signal<import("@starterlib/ui/navigation").LibellesNavigation>;
375
+ /** Les destinations, cinq au plus. */
376
+ readonly entrees: import("@angular/core").InputSignal<readonly EntreeDeNavigationBasse[]>;
377
+ /** Le nom de la region de navigation ; `null` : « Navigation principale ». */
378
+ readonly etiquette: import("@angular/core").InputSignal<string | null>;
379
+ /** Vrai au-dessus de `md` : la colonne laterale prend le relais, la barre se retire. */
380
+ protected readonly ecranMoyen: import("@angular/core").WritableSignal<boolean>;
381
+ protected readonly etiquetteLue: import("@angular/core").Signal<string>;
382
+ protected readonly entreesLues: import("@angular/core").Signal<EntreeDeNavigationBasse[]>;
383
+ /** Le nombre de la pastille, s'il y a quelque chose a traiter. */
384
+ protected pastilleDe(entree: EntreeDeNavigationBasse): number | null;
385
+ /** Le chiffre de la pastille : « 99+ » au-dela de 99, comme `st-badge`. */
386
+ protected texteDePastille(nombre: number): string;
387
+ /** La pastille dite en mots, collee au libelle (« , 3 a traiter ») ; vide sans pastille. */
388
+ protected pastilleLue(entree: EntreeDeNavigationBasse): string;
389
+ constructor();
390
+ static ɵfac: i0.ɵɵFactoryDeclaration<StBottomNav, never>;
391
+ static ɵcmp: i0.ɵɵComponentDeclaration<StBottomNav, "st-bottom-nav", never, {
392
+ "entrees": {
393
+ "alias": "entrees";
394
+ "required": true;
395
+ "isSignal": true;
396
+ };
397
+ "etiquette": {
398
+ "alias": "etiquette";
399
+ "required": false;
400
+ "isSignal": true;
401
+ };
402
+ }, {}, never, never, true, never>;
403
+ }
323
404
 
324
405
  export {};