@cadriciel/ui 0.7.1 → 0.9.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.
@@ -145,6 +145,7 @@ declare class CadIconRegistry {
145
145
  /**
146
146
  * <cad-icon name="search" [size]="16" />
147
147
  * SVG inline, trait 2 px, hérite `currentColor`. `spin` (animation), `filled` (icône pleine), `flip`, `rotate`, `title` (info-bulle native).
148
+ * @atelier icone=sparkles largeur=1 hauteur=1
148
149
  */
149
150
  declare class CadIconComponent {
150
151
  private readonly registry;
@@ -178,6 +179,7 @@ declare class CadIconComponent {
178
179
  * - Directive-composant appliquée sur un vrai <button>/<a> : sémantique native, focus, formulaire.
179
180
  * - Signals inputs, OnPush, classes hôtes reflétées (stylables sans ::ng-deep).
180
181
  * - Ne lit QUE les tokens --cad-* (thème clair/sombre transparent).
182
+ * @atelier icone=square largeur=2 hauteur=1 contenu=Bouton
181
183
  */
182
184
  declare class CadButtonComponent {
183
185
  readonly el: ElementRef<HTMLElement>;
@@ -208,6 +210,7 @@ declare class CadButtonComponent {
208
210
  * Accole les boutons (radius aux extrémités, bordures fusionnées). Sans `attached`, simple groupe espacé (gap).
209
211
  * Remplace p-buttonGroup. Le focus reste visible (z-index sur le bouton focusé).
210
212
  * `selectable="single|multiple"` + `[(value)]` : les boutons portant `value` deviennent des options (état enfoncé, aria-pressed).
213
+ * @atelier icone=columns-3 hauteur=1 conteneur=direct ajustement=naturel
211
214
  */
212
215
  declare class CadButtonGroupComponent {
213
216
  readonly orientation: _angular_core.InputSignal<"horizontal" | "vertical">;
@@ -222,6 +225,15 @@ declare class CadButtonGroupComponent {
222
225
  readonly value: _angular_core.ModelSignal<unknown>;
223
226
  readonly changed: _angular_core.OutputEmitterRef<unknown>;
224
227
  private readonly buttons;
228
+ /**
229
+ * Enfants créés DYNAMIQUEMENT (atelier CadGrid, composition programmatique) : une
230
+ * requête de contenu ne voit JAMAIS un composant né de `createComponent`, donc sans
231
+ * ce registre le groupe serait sourd à leurs clics. Contrat d'accueil duck-typé —
232
+ * l'appelant fournit les instances, le groupe filtre ce qui n'est pas un bouton.
233
+ */
234
+ private readonly enfantsDynamiques;
235
+ enregistrerEnfants(instances: unknown[]): void;
236
+ private readonly tousBoutons;
225
237
  constructor();
226
238
  protected onClick(e: Event): void;
227
239
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<CadButtonGroupComponent, never>;
@@ -258,6 +270,7 @@ declare class CadInputDirective {
258
270
  *
259
271
  * Le focus se pose sur la BOÎTE (`.cad-field__box:focus-within`) — jamais sur un morceau (règle SZU 17/08).
260
272
  * L'erreur remplace l'aide quand elle est présente. `label` lié au contrôle via `for`.
273
+ * @atelier icone=text-cursor-input largeur=4 hauteur=1 pose-label=Champ
261
274
  */
262
275
  declare class CadFieldComponent {
263
276
  readonly label: _angular_core.InputSignal<string>;
@@ -283,6 +296,7 @@ declare class CadFieldComponent {
283
296
  /**
284
297
  * <cad-number [(value)]="port" [min]="1" [max]="65535" [step]="1" suffix=" ms" [decimals]="0" showButtons/>
285
298
  * CVA<number|null>. Clavier : ↑/↓ (± step), Shift+↑/↓ (× 10), Home/End (min/max). Locale via `locale`.
299
+ * @atelier icone=hash largeur=3 hauteur=1
286
300
  */
287
301
  declare class CadNumberComponent extends CadValueAccessor<number> {
288
302
  readonly min: _angular_core.InputSignalWithTransform<number | null, unknown>;
@@ -320,6 +334,7 @@ declare class CadNumberComponent extends CadValueAccessor<number> {
320
334
  /**
321
335
  * <cad-password [(value)]="pwd" placeholder="…" toggleMask [feedback]="true" />
322
336
  * CVA<string>. Bouton œil (afficher/masquer), jauge de robustesse optionnelle (`feedback`), `autocomplete`.
337
+ * @atelier icone=lock largeur=3 hauteur=1
323
338
  */
324
339
  declare class CadPasswordComponent extends CadValueAccessor<string> {
325
340
  readonly placeholder: _angular_core.InputSignal<string>;
@@ -347,6 +362,7 @@ type CadSliderSeverity = 'primary' | 'success' | 'warning' | 'danger' | 'info';
347
362
  * <cad-slider range [(value)]="[a,b]" [marks]="[0,25,50,75,100]"/>
348
363
  * CVA<number | [number, number]>. Remplace p-slider. Clavier ←→↑↓ (±step), PageUp/Down (±10 steps), Home/End, Shift = ×10.
349
364
  * `lazy` : `valueChange`/`changed` émis au relâchement seulement (`sliding` pendant le drag).
365
+ * @atelier icone=sliders-horizontal largeur=4 hauteur=1
350
366
  */
351
367
  declare class CadSliderComponent extends CadValueAccessor<CadSliderValue> {
352
368
  readonly min: _angular_core.InputSignalWithTransform<number, unknown>;
@@ -449,6 +465,7 @@ declare const CAD_COLOR_PRESETS: string[];
449
465
  * <cad-colorpicker [(value)]="color" format="hex" alpha [presets]="[…]" inline/>
450
466
  * CVA<string>. Panneau : zone saturation/luminosité + barre de teinte (+ alpha), champs hex/r/g/b, palette, pipette (EyeDropper si dispo).
451
467
  * Clavier : flèches sur les poignées (Shift = ×10). Events `changed`, `opened`, `closed`.
468
+ * @atelier icone=palette largeur=3 hauteur=1
452
469
  */
453
470
  declare class CadColorpickerComponent extends CadValueAccessor<string> {
454
471
  readonly format: _angular_core.InputSignal<CadColorFormat>;
@@ -508,6 +525,7 @@ declare class CadColorpickerComponent extends CadValueAccessor<string> {
508
525
  /**
509
526
  * <cad-rating [(value)]="note" [max]="5" allowHalf clearable showValue severity="warning"/>
510
527
  * CVA<number>. Clavier ←→ (± 1 ou ½), Home/End, Suppr = 0 (clearable). `role="slider"`.
528
+ * @atelier ajustement=naturel icone=star largeur=2 hauteur=1 pose-value=3
511
529
  */
512
530
  declare class CadRatingComponent extends CadValueAccessor<number> {
513
531
  readonly max: _angular_core.InputSignalWithTransform<number, unknown>;
@@ -612,6 +630,7 @@ declare class CadInplaceContentDirective {
612
630
  * <ng-template cadInplaceContent><input cadInput [(ngModel)]="name"></ng-template>
613
631
  * </cad-inplace>
614
632
  * Texte → éditeur au clic/Entrée ; Échap ou blur referme (`closeOnEscape`, `closeOnBlur`) ; crayon au survol.
633
+ * @atelier icone=pen-line hauteur=1
615
634
  */
616
635
  declare class CadInplaceComponent {
617
636
  readonly active: _angular_core.ModelSignal<boolean>;
@@ -635,6 +654,7 @@ declare class CadInplaceComponent {
635
654
  /**
636
655
  * <cad-switch [(value)]="on" label="Auto-park 7 j" size="sm" labelPosition="left" />
637
656
  * CVA<boolean>. Espace/Entrée basculent. `readonly` = visible mais figé.
657
+ * @atelier ajustement=naturel icone=toggle-right largeur=2 hauteur=1 pose-label=Interrupteur
638
658
  */
639
659
  declare class CadSwitchComponent extends CadValueAccessor<boolean> {
640
660
  readonly label: _angular_core.InputSignal<string>;
@@ -653,6 +673,7 @@ declare class CadSwitchComponent extends CadValueAccessor<boolean> {
653
673
  * <cad-checkbox [(value)]="checked" label="PostGIS" [indeterminate]="some" />
654
674
  * CVA<boolean>. `indeterminate` (two-way) = état visuel « partiel » ; un clic passe à coché.
655
675
  * `invalid` pour l'état d'erreur (ex. CGU non acceptées).
676
+ * @atelier ajustement=naturel icone=check-square largeur=2 hauteur=1 pose-label="Case à cocher"
656
677
  */
657
678
  declare class CadCheckboxComponent extends CadValueAccessor<boolean> {
658
679
  readonly label: _angular_core.InputSignal<string>;
@@ -673,6 +694,7 @@ declare class CadCheckboxComponent extends CadValueAccessor<boolean> {
673
694
  * <cad-radio value="session" label="Session" [disabled]="true" />
674
695
  * </cad-radio-group>
675
696
  * CVA<T> sur le GROUPE. Clavier : ←/→/↑/↓ déplacent la sélection (pattern WAI-ARIA radiogroup).
697
+ * @atelier icone=circle-dot largeur=2
676
698
  */
677
699
  declare class CadRadioGroupComponent<T = unknown> extends CadValueAccessor<T> {
678
700
  readonly orientation: _angular_core.InputSignal<"horizontal" | "vertical">;
@@ -711,6 +733,8 @@ type CadSegmentOption = {
711
733
  * <cad-segmented [(value)]="view" [options]="[{label:'Tableau',value:'t'},{label:'SQL',value:'s',icon:'code'}]" />
712
734
  * Remplace p-selectButton. CVA<T>. `multiple` = tableau de valeurs. `allowEmpty` (single) autorise la désélection.
713
735
  * `optionLabel`/`optionValue` pour des objets. Template d'option : <ng-template let-o>…</ng-template>.
736
+ * @atelier icone=columns-3 hauteur=1
737
+ * @atelier-exemple options [{"label":"Jour","value":"jour"},{"label":"Semaine","value":"semaine"},{"label":"Mois","value":"mois"}]
714
738
  */
715
739
  declare class CadSegmentedComponent<T = unknown> extends CadValueAccessor<T | T[]> {
716
740
  readonly options: _angular_core.InputSignal<CadSegmentOption[]>;
@@ -736,6 +760,7 @@ declare class CadSegmentedComponent<T = unknown> extends CadValueAccessor<T | T[
736
760
  /**
737
761
  * <cad-toggle-button [(value)]="on" onLabel="Actif" offLabel="Inactif" onIcon="check" offIcon="x" severity="primary"/>
738
762
  * CVA<boolean>. Actif = bouton plein, inactif = contour. `aria-pressed`. Remplace p-toggleButton.
763
+ * @atelier icone=toggle-left largeur=2 hauteur=1
739
764
  */
740
765
  declare class CadToggleButtonComponent extends CadValueAccessor<boolean> {
741
766
  readonly onLabel: _angular_core.InputSignal<string>;
@@ -1119,6 +1144,8 @@ declare abstract class CadSelectBase<T, V> extends CadValueAccessor<V> {
1119
1144
  * Escape/Tab ferment, lettres = typeahead (sélection directe quand fermé), Suppr/Retour = effacer si `clearable`.
1120
1145
  * - `open()/close()/toggle()/focus()` publiques ; events `changed`, `opened`, `closed`, `filtered`, `cleared`, `focusChange`.
1121
1146
  * - mobile : `mobile="auto|sheet|popover"` — sous le seuil mobile le panneau s'ouvre en feuille basse (cad-sheet), options 44 px.
1147
+ * @atelier icone=chevrons-up-down largeur=3 hauteur=1
1148
+ * @atelier-exemple options [{"label":"Béton"},{"label":"Acier"},{"label":"Bois"},{"label":"Mixte"}]
1122
1149
  */
1123
1150
  declare class CadSelectComponent<T = unknown, V = unknown> extends CadSelectBase<T, V> {
1124
1151
  /** Émis quand l'utilisateur choisit (ou efface) une option. */
@@ -1147,6 +1174,8 @@ declare class CadSelectComponent<T = unknown, V = unknown> extends CadSelectBase
1147
1174
  * - Espace/Entrée basculent l'option SANS fermer le panneau ; Escape ferme.
1148
1175
  * - events : `changed<V[]>`, `removed<V>` (chip retirée), + `opened/closed/filtered/cleared/focusChange`.
1149
1176
  * - mobile : `mobile="auto|sheet|popover"` — feuille basse avec pied « OK (n) » sous le seuil mobile.
1177
+ * @atelier icone=list-checks largeur=3 hauteur=1
1178
+ * @atelier-exemple options [{"label":"Nord"},{"label":"Sud"},{"label":"Est"},{"label":"Ouest"}]
1150
1179
  */
1151
1180
  declare class CadMultiselectComponent<T = unknown, V = unknown> extends CadSelectBase<T, V[]> {
1152
1181
  readonly display: _angular_core.InputSignal<"chip" | "comma">;
@@ -1423,6 +1452,7 @@ interface CadColumnFilterOption {
1423
1452
  * <ng-template cadFilterTemplate let-col>…</ng-template>
1424
1453
  * </cad-column>
1425
1454
  * Déclaration d'une colonne de cad-table (élément sans rendu propre).
1455
+ * @atelier icone=columns
1426
1456
  */
1427
1457
  declare class CadColumnComponent {
1428
1458
  /** Chemin (pointé) de la donnée dans la ligne. */
@@ -1485,6 +1515,7 @@ declare class CadColumnComponent {
1485
1515
  /**
1486
1516
  * <cad-filter-chip label="Statut" value="en ligne, en pause" active removable (removed)="…" (clicked)="…"/>
1487
1517
  * Chip de filtre de la barre d'outils (pointillé inactif = « + Filtre », plein accent quand actif).
1518
+ * @atelier ajustement=naturel icone=filter largeur=2 hauteur=1 pose-label=Filtre
1488
1519
  */
1489
1520
  declare class CadFilterChipComponent {
1490
1521
  readonly label: _angular_core.InputSignal<string>;
@@ -1509,6 +1540,9 @@ interface CadPageEvent {
1509
1540
  /**
1510
1541
  * <cad-paginator [(first)]="first" [(rows)]="rows" [totalRecords]="42" [rowsPerPageOptions]="[10,25,50]" (pageChange)="…"/>
1511
1542
  * Remplace p-paginator. Réutilisé par cad-table. `currentPageReportTemplate` : {first} {last} {totalRecords} {currentPage} {totalPages} {rows}.
1543
+ * @atelier icone=arrow-left-right hauteur=1
1544
+ * @atelier-exemple totalRecords 120
1545
+ * @atelier-exemple rows 10
1512
1546
  */
1513
1547
  declare class CadPaginatorComponent {
1514
1548
  readonly first: _angular_core.ModelSignal<number>;
@@ -1853,6 +1887,7 @@ declare class CadTabComponent {
1853
1887
  /**
1854
1888
  * <cad-tabs [(value)]="tab" [(activeIndex)]="i" variant="line|pill|enclosed" size="sm|md" [stretch] [scrollable] [lazy]="true" [keepAlive]="true" (changed) (tabChange)>
1855
1889
  * `value` prime sur `activeIndex` (les deux sont two-way et synchronisés). Clavier ←/→/Home/End sur la liste.
1890
+ * @atelier icone=folder
1856
1891
  */
1857
1892
  declare class CadTabsComponent {
1858
1893
  readonly value: _angular_core.ModelSignal<unknown>;
@@ -1912,6 +1947,7 @@ declare class CadStepComponent {
1912
1947
  /**
1913
1948
  * <cad-stepper [(activeIndex)]="i" [linear] [clickable]="true" orientation="horizontal|vertical" size="sm|md" (changed) (stepClick)>
1914
1949
  * `linear` : impossible d'aller au-delà de la première étape non `completed`. Méthodes next()/prev()/goTo(i).
1950
+ * @atelier icone=git-commit
1915
1951
  */
1916
1952
  declare class CadStepperComponent {
1917
1953
  readonly activeIndex: _angular_core.ModelSignal<number>;
@@ -1984,6 +2020,7 @@ declare class CadAccordionPanelComponent {
1984
2020
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<CadAccordionPanelComponent, never>;
1985
2021
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<CadAccordionPanelComponent, "cad-accordion-panel", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "header": { "alias": "header"; "required": false; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "expanded": { "alias": "expanded"; "required": false; "isSignal": true; }; }, { "expanded": "expandedChange"; "opened": "opened"; "closed": "closed"; }, ["headerTpl", "contentTpl"], ["[cadPanelExtra]", "*"], true, never>;
1986
2022
  }
2023
+ /** @atelier icone=chevron-down */
1987
2024
  declare class CadAccordionComponent {
1988
2025
  readonly multiple: _angular_core.InputSignalWithTransform<boolean, unknown>;
1989
2026
  /** Ouvert(s) : string (single) ou string[] (multiple). */
@@ -2022,6 +2059,8 @@ declare class CadBreadcrumbItemDirective {
2022
2059
  * <cad-breadcrumb [items]="[{label:'Projets', routerLink:'/projets'}, {label:'gestion-flotte'}, {label:'Environnements'}]"
2023
2060
  * [home]="{icon:'home', routerLink:'/'}" separatorIcon="chevron-right" [maxItems]="4" (itemClick)>
2024
2061
  * Le dernier élément porte aria-current="page". Au-delà de `maxItems`, les éléments du milieu sont repliés en « … » (clic = déplie).
2062
+ * @atelier icone=chevron-right hauteur=1
2063
+ * @atelier-exemple items [{"label":"Accueil"},{"label":"Ouvrages"},{"label":"Pont de Sèvres"}]
2025
2064
  */
2026
2065
  declare class CadBreadcrumbComponent {
2027
2066
  readonly items: _angular_core.InputSignal<CadBreadcrumbItem[]>;
@@ -2073,6 +2112,8 @@ interface CadMenuItem {
2073
2112
  * inline : liste verticale. Sous-menu 1 niveau (`items`), ouvert au survol / →. Clavier ↑/↓/Home/End/Entrée/→/←/Escape.
2074
2113
  * mobile : `mobile="auto|sheet|popover"` — sous le seuil mobile, le menu popup s'ouvre en feuille basse (items 44 px,
2075
2114
  * sous-menus dépliés en accordéon) sauf menu contextuel (clic droit) sur desktop.
2115
+ * @atelier icone=menu
2116
+ * @atelier-exemple items [{"label":"Ouvrir","icon":"folder-open"},{"label":"Exporter","icon":"download"},{"separator":true},{"label":"Supprimer","icon":"trash-2","severity":"danger"}]
2076
2117
  */
2077
2118
  declare class CadMenuComponent {
2078
2119
  private readonly overlay;
@@ -2138,6 +2179,8 @@ interface CadMenubarItem extends CadMenuItem {
2138
2179
  * Barre horizontale : racines (routerLink actif souligné), sous-menus en overlay CDK (`cad-menu` popup, 2 niveaux) au clic ou au survol,
2139
2180
  * méga-menu multi-colonnes (`columns`), clavier ←→ entre racines, ↓/Entrée ouvre, Échap ferme, `role=menubar`.
2140
2181
  * Sous `breakpoint` (fenêtre) : bouton hamburger + menu vertical déplié en accordéon.
2182
+ * @atelier icone=menu
2183
+ * @atelier-exemple items [{"label":"Fichier","items":[{"label":"Nouveau"},{"label":"Ouvrir"}]},{"label":"Édition","items":[{"label":"Annuler"},{"label":"Rétablir"}]},{"label":"Affichage"}]
2141
2184
  */
2142
2185
  declare class CadMenubarComponent {
2143
2186
  private readonly overlay;
@@ -2215,6 +2258,9 @@ declare class CadSplitButtonComponent {
2215
2258
  /**
2216
2259
  * <cad-speed-dial [items]="items" direction="up" type="linear" [(visible)] mask/>
2217
2260
  * FAB 48 px + items déployés en ligne (`linear`), en cercle ou demi-cercle. Clic dehors / Échap ferment. Tooltips (label), clavier ↑↓ Entrée.
2261
+ * @atelier icone=plus-circle
2262
+ * @atelier-exemple items [{"icon":"pen-line","title":"Éditer"},{"icon":"share-2","title":"Partager"},{"icon":"trash-2","title":"Supprimer"}]
2263
+ * @atelier-exemple visible true
2218
2264
  */
2219
2265
  declare class CadSpeedDialComponent {
2220
2266
  readonly items: _angular_core.InputSignal<CadMenuItem[]>;
@@ -2279,6 +2325,9 @@ interface CadBottomNavItem {
2279
2325
  * couleur : la couleur seule disparaît pour une personne daltonienne. Les cibles font 44 px de
2280
2326
  * haut au minimum, et la barre réserve la zone sûre des téléphones à encoche
2281
2327
  * (`env(safe-area-inset-bottom)`), sans quoi la dernière rangée passe sous la barre d'accueil.
2328
+ * @atelier icone=panel-bottom
2329
+ * @atelier-exemple items [{"value":"carte","label":"Carte","icon":"map"},{"value":"releves","label":"Relevés","icon":"clipboard-list"},{"value":"alertes","label":"Alertes","icon":"bell"},{"value":"profil","label":"Profil","icon":"user-round"}]
2330
+ * @atelier-exemple value "carte"
2282
2331
  */
2283
2332
  declare class CadBottomNavComponent {
2284
2333
  private readonly bp;
@@ -2391,6 +2440,9 @@ interface CadNavDrawerRow {
2391
2440
  *
2392
2441
  * LA LISTE EST DISTINCTE DE CELLE DE `cad-bottom-nav`, volontairement — voir la note qui s'y
2393
2442
  * trouve : on ne met pas en avant les mêmes destinations au pouce que dans un menu complet.
2443
+ * @atelier icone=sidebar-open
2444
+ * @atelier-exemple items [{"value":"tableau","label":"Tableau de bord","icon":"layout-dashboard"},{"value":"ouvrages","label":"Ouvrages","icon":"building-2"},{"value":"releves","label":"Relevés","icon":"clipboard-list"},{"value":"parametres","label":"Paramètres","icon":"settings-2"}]
2445
+ * @atelier-exemple value "tableau"
2394
2446
  */
2395
2447
  declare class CadNavDrawerComponent {
2396
2448
  private readonly bp;
@@ -2481,6 +2533,15 @@ interface CadColumnReorderEvent {
2481
2533
  columns: CadColumnComponent[];
2482
2534
  order: string[];
2483
2535
  }
2536
+ /** Une colonne définie par entrée (`[colonnes]`) — le sous-ensemble utile de `<cad-column>`. */
2537
+ interface CadColonneDef {
2538
+ field: string;
2539
+ header?: string;
2540
+ dataType?: CadColumnDataType;
2541
+ align?: CadColumnAlign;
2542
+ width?: string;
2543
+ sortable?: boolean;
2544
+ }
2484
2545
  interface CadFilterChangeEvent {
2485
2546
  filters: CadFilters;
2486
2547
  globalFilter: string;
@@ -2704,7 +2765,21 @@ declare abstract class CadTableBase<T> {
2704
2765
  /** Pied « N lignes · filtrées · sélectionnées ». */
2705
2766
  readonly showRowCount: _angular_core.InputSignalWithTransform<boolean, unknown>;
2706
2767
  readonly rowCountLabel: _angular_core.InputSignal<string>;
2707
- readonly columns: _angular_core.Signal<readonly CadColumnComponent[]>;
2768
+ /**
2769
+ * Colonnes par ENTRÉE — jumelles des `<cad-column>` projetées, pour les contextes où
2770
+ * la projection n'existe pas : construction dynamique (l'atelier CadGrid instancie par
2771
+ * `createComponent`, et une requête de contenu ne voit JAMAIS un composant créé
2772
+ * dynamiquement), configuration programmatique, colonnes venues d'une API.
2773
+ *
2774
+ * Le gabarit de `cad-table` rend ces définitions en `<cad-column>` réels (masqués,
2775
+ * la colonne ne dessine rien) et une requête de VUE les récupère : tout le moteur
2776
+ * continue de consommer des `CadColumnComponent`, aucune seconde voie interne.
2777
+ * Les deux sources se cumulent, projection d'abord.
2778
+ */
2779
+ readonly colonnes: _angular_core.InputSignal<CadColonneDef[]>;
2780
+ protected readonly columnsProjetees: _angular_core.Signal<readonly CadColumnComponent[]>;
2781
+ protected readonly columnsSynthetisees: _angular_core.Signal<readonly CadColumnComponent[]>;
2782
+ readonly columns: _angular_core.Signal<CadColumnComponent[]>;
2708
2783
  readonly expansionTpl: _angular_core.Signal<CadRowExpansionDirective | undefined>;
2709
2784
  readonly rowActionsTpl: _angular_core.Signal<CadRowActionsDirective | undefined>;
2710
2785
  readonly emptyTpl: _angular_core.Signal<CadEmptyDirective | undefined>;
@@ -2715,7 +2790,7 @@ declare abstract class CadTableBase<T> {
2715
2790
  readonly cardTpl: _angular_core.Signal<CadCardDirective | undefined>;
2716
2791
  readonly rowCountTpl: _angular_core.Signal<CadRowCountDirective | undefined>;
2717
2792
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<CadTableBase<any>, never>;
2718
- static ɵdir: _angular_core.ɵɵDirectiveDeclaration<CadTableBase<any>, never, never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "dataKey": { "alias": "dataKey"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "loadingRows": { "alias": "loadingRows"; "required": false; "isSignal": true; }; "emptyMessage": { "alias": "emptyMessage"; "required": false; "isSignal": true; }; "emptyHint": { "alias": "emptyHint"; "required": false; "isSignal": true; }; "emptyIcon": { "alias": "emptyIcon"; "required": false; "isSignal": true; }; "cellFormatter": { "alias": "cellFormatter"; "required": false; "isSignal": true; }; "dense": { "alias": "dense"; "required": false; "isSignal": true; }; "striped": { "alias": "striped"; "required": false; "isSignal": true; }; "hoverable": { "alias": "hoverable"; "required": false; "isSignal": true; }; "bordered": { "alias": "bordered"; "required": false; "isSignal": true; }; "borderless": { "alias": "borderless"; "required": false; "isSignal": true; }; "stickyHeader": { "alias": "stickyHeader"; "required": false; "isSignal": true; }; "scrollHeight": { "alias": "scrollHeight"; "required": false; "isSignal": true; }; "resizableColumns": { "alias": "resizableColumns"; "required": false; "isSignal": true; }; "styleClass": { "alias": "styleClass"; "required": false; "isSignal": true; }; "tableClass": { "alias": "tableClass"; "required": false; "isSignal": true; }; "tableStyle": { "alias": "tableStyle"; "required": false; "isSignal": true; }; "rowClass": { "alias": "rowClass"; "required": false; "isSignal": true; }; "rowStyle": { "alias": "rowStyle"; "required": false; "isSignal": true; }; "rowActionsWidth": { "alias": "rowActionsWidth"; "required": false; "isSignal": true; }; "rowActionsAlwaysVisible": { "alias": "rowActionsAlwaysVisible"; "required": false; "isSignal": true; }; "showToolbar": { "alias": "showToolbar"; "required": false; "isSignal": true; }; "title": { "alias": "title"; "required": false; "isSignal": true; }; "count": { "alias": "count"; "required": false; "isSignal": true; }; "showCount": { "alias": "showCount"; "required": false; "isSignal": true; }; "showSearch": { "alias": "showSearch"; "required": false; "isSignal": true; }; "searchPlaceholder": { "alias": "searchPlaceholder"; "required": false; "isSignal": true; }; "columnToggle": { "alias": "columnToggle"; "required": false; "isSignal": true; }; "columnsLabel": { "alias": "columnsLabel"; "required": false; "isSignal": true; }; "showDensityToggle": { "alias": "showDensityToggle"; "required": false; "isSignal": true; }; "showSelectionBar": { "alias": "showSelectionBar"; "required": false; "isSignal": true; }; "selectedLabel": { "alias": "selectedLabel"; "required": false; "isSignal": true; }; "selectedLabelPlural": { "alias": "selectedLabelPlural"; "required": false; "isSignal": true; }; "filtersLabel": { "alias": "filtersLabel"; "required": false; "isSignal": true; }; "selectionMode": { "alias": "selectionMode"; "required": false; "isSignal": true; }; "selection": { "alias": "selection"; "required": false; "isSignal": true; }; "selectAll": { "alias": "selectAll"; "required": false; "isSignal": true; }; "selectAllScope": { "alias": "selectAllScope"; "required": false; "isSignal": true; }; "rowSelectable": { "alias": "rowSelectable"; "required": false; "isSignal": true; }; "metaKeySelection": { "alias": "metaKeySelection"; "required": false; "isSignal": true; }; "selectionPropagation": { "alias": "selectionPropagation"; "required": false; "isSignal": true; }; "sortField": { "alias": "sortField"; "required": false; "isSignal": true; }; "sortOrder": { "alias": "sortOrder"; "required": false; "isSignal": true; }; "sortMode": { "alias": "sortMode"; "required": false; "isSignal": true; }; "multiSortMeta": { "alias": "multiSortMeta"; "required": false; "isSignal": true; }; "defaultSortOrder": { "alias": "defaultSortOrder"; "required": false; "isSignal": true; }; "customSort": { "alias": "customSort"; "required": false; "isSignal": true; }; "paginator": { "alias": "paginator"; "required": false; "isSignal": true; }; "first": { "alias": "first"; "required": false; "isSignal": true; }; "rows": { "alias": "rows"; "required": false; "isSignal": true; }; "rowsPerPageOptions": { "alias": "rowsPerPageOptions"; "required": false; "isSignal": true; }; "totalRecords": { "alias": "totalRecords"; "required": false; "isSignal": true; }; "showCurrentPageReport": { "alias": "showCurrentPageReport"; "required": false; "isSignal": true; }; "currentPageReportTemplate": { "alias": "currentPageReportTemplate"; "required": false; "isSignal": true; }; "pageLinks": { "alias": "pageLinks"; "required": false; "isSignal": true; }; "showFirstLastIcon": { "alias": "showFirstLastIcon"; "required": false; "isSignal": true; }; "alwaysShowPaginator": { "alias": "alwaysShowPaginator"; "required": false; "isSignal": true; }; "globalFilter": { "alias": "globalFilter"; "required": false; "isSignal": true; }; "globalFilterFields": { "alias": "globalFilterFields"; "required": false; "isSignal": true; }; "filters": { "alias": "filters"; "required": false; "isSignal": true; }; "filterDelay": { "alias": "filterDelay"; "required": false; "isSignal": true; }; "lazy": { "alias": "lazy"; "required": false; "isSignal": true; }; "lazyLoadOnInit": { "alias": "lazyLoadOnInit"; "required": false; "isSignal": true; }; "rowExpandable": { "alias": "rowExpandable"; "required": false; "isSignal": true; }; "expandedRowKeys": { "alias": "expandedRowKeys"; "required": false; "isSignal": true; }; "expandMode": { "alias": "expandMode"; "required": false; "isSignal": true; }; "treeField": { "alias": "treeField"; "required": false; "isSignal": true; }; "parentKey": { "alias": "parentKey"; "required": false; "isSignal": true; }; "treeColumn": { "alias": "treeColumn"; "required": false; "isSignal": true; }; "indent": { "alias": "indent"; "required": false; "isSignal": true; }; "expandedNodeKeys": { "alias": "expandedNodeKeys"; "required": false; "isSignal": true; }; "lazyChildren": { "alias": "lazyChildren"; "required": false; "isSignal": true; }; "hasChildren": { "alias": "hasChildren"; "required": false; "isSignal": true; }; "showTreeLines": { "alias": "showTreeLines"; "required": false; "isSignal": true; }; "treeIcon": { "alias": "treeIcon"; "required": false; "isSignal": true; }; "keepAncestors": { "alias": "keepAncestors"; "required": false; "isSignal": true; }; "groupBy": { "alias": "groupBy"; "required": false; "isSignal": true; }; "expandedGroups": { "alias": "expandedGroups"; "required": false; "isSignal": true; }; "aggregates": { "alias": "aggregates"; "required": false; "isSignal": true; }; "showGrandTotal": { "alias": "showGrandTotal"; "required": false; "isSignal": true; }; "grandTotalLabel": { "alias": "grandTotalLabel"; "required": false; "isSignal": true; }; "groupSort": { "alias": "groupSort"; "required": false; "isSignal": true; }; "groupLabel": { "alias": "groupLabel"; "required": false; "isSignal": true; }; "responsive": { "alias": "responsive"; "required": false; "isSignal": true; }; "stackAt": { "alias": "stackAt"; "required": false; "isSignal": true; }; "priorityBreakpoints": { "alias": "priorityBreakpoints"; "required": false; "isSignal": true; }; "showHiddenInExpansion": { "alias": "showHiddenInExpansion"; "required": false; "isSignal": true; }; "stickyFirstColumn": { "alias": "stickyFirstColumn"; "required": false; "isSignal": true; }; "stickyActions": { "alias": "stickyActions"; "required": false; "isSignal": true; }; "reorderableColumns": { "alias": "reorderableColumns"; "required": false; "isSignal": true; }; "columnOrder": { "alias": "columnOrder"; "required": false; "isSignal": true; }; "headerGroups": { "alias": "headerGroups"; "required": false; "isSignal": true; }; "virtualScroll": { "alias": "virtualScroll"; "required": false; "isSignal": true; }; "virtualRowHeight": { "alias": "virtualRowHeight"; "required": false; "isSignal": true; }; "virtualBuffer": { "alias": "virtualBuffer"; "required": false; "isSignal": true; }; "editMode": { "alias": "editMode"; "required": false; "isSignal": true; }; "editOnClick": { "alias": "editOnClick"; "required": false; "isSignal": true; }; "commitOnBlur": { "alias": "commitOnBlur"; "required": false; "isSignal": true; }; "mutate": { "alias": "mutate"; "required": false; "isSignal": true; }; "showEditIcon": { "alias": "showEditIcon"; "required": false; "isSignal": true; }; "showRowEditButton": { "alias": "showRowEditButton"; "required": false; "isSignal": true; }; "rowEditDialogHeader": { "alias": "rowEditDialogHeader"; "required": false; "isSignal": true; }; "rowEditDialogSize": { "alias": "rowEditDialogSize"; "required": false; "isSignal": true; }; "rowEditDialogCols": { "alias": "rowEditDialogCols"; "required": false; "isSignal": true; }; "columnMenu": { "alias": "columnMenu"; "required": false; "isSignal": true; }; "columnMenuItems": { "alias": "columnMenuItems"; "required": false; "isSignal": true; }; "columnMenuExtra": { "alias": "columnMenuExtra"; "required": false; "isSignal": true; }; "pinnedColumns": { "alias": "pinnedColumns"; "required": false; "isSignal": true; }; "showFilterRow": { "alias": "showFilterRow"; "required": false; "isSignal": true; }; "showGroupZone": { "alias": "showGroupZone"; "required": false; "isSignal": true; }; "groupZoneLabel": { "alias": "groupZoneLabel"; "required": false; "isSignal": true; }; "hideGroupedColumns": { "alias": "hideGroupedColumns"; "required": false; "isSignal": true; }; "showRowNumber": { "alias": "showRowNumber"; "required": false; "isSignal": true; }; "reorderableRows": { "alias": "reorderableRows"; "required": false; "isSignal": true; }; "rowDragDisabled": { "alias": "rowDragDisabled"; "required": false; "isSignal": true; }; "showRowCount": { "alias": "showRowCount"; "required": false; "isSignal": true; }; "rowCountLabel": { "alias": "rowCountLabel"; "required": false; "isSignal": true; }; }, { "dense": "denseChange"; "selection": "selectionChange"; "rowSelect": "rowSelect"; "rowUnselect": "rowUnselect"; "rowClick": "rowClick"; "rowDblClick": "rowDblClick"; "sortField": "sortFieldChange"; "sortOrder": "sortOrderChange"; "multiSortMeta": "multiSortMetaChange"; "sortChange": "sortChange"; "first": "firstChange"; "rows": "rowsChange"; "pageChange": "pageChange"; "globalFilter": "globalFilterChange"; "filters": "filtersChange"; "filterChange": "filterChange"; "lazyLoad": "lazyLoad"; "expandedRowKeys": "expandedRowKeysChange"; "rowExpand": "rowExpand"; "rowCollapse": "rowCollapse"; "expandedNodeKeys": "expandedNodeKeysChange"; "nodeExpand": "nodeExpand"; "nodeCollapse": "nodeCollapse"; "groupBy": "groupByChange"; "expandedGroups": "expandedGroupsChange"; "aggregates": "aggregatesChange"; "columnResize": "columnResize"; "columnToggled": "columnToggled"; "columnOrder": "columnOrderChange"; "columnReorder": "columnReorder"; "editInit": "editInit"; "editComplete": "editComplete"; "editCancel": "editCancel"; "cellChange": "cellChange"; "rowEditInit": "rowEditInit"; "rowEditSave": "rowEditSave"; "rowEditCancel": "rowEditCancel"; "columnMenuAction": "columnMenuAction"; "pinnedColumns": "pinnedColumnsChange"; "columnPin": "columnPin"; "rowReorder": "rowReorder"; }, ["columns", "expansionTpl", "rowActionsTpl", "emptyTpl", "footerTpl", "captionTpl", "groupHeaderTpl", "groupFooterTpl", "cardTpl", "rowCountTpl"], never, true, never>;
2793
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<CadTableBase<any>, never, never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "dataKey": { "alias": "dataKey"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "loadingRows": { "alias": "loadingRows"; "required": false; "isSignal": true; }; "emptyMessage": { "alias": "emptyMessage"; "required": false; "isSignal": true; }; "emptyHint": { "alias": "emptyHint"; "required": false; "isSignal": true; }; "emptyIcon": { "alias": "emptyIcon"; "required": false; "isSignal": true; }; "cellFormatter": { "alias": "cellFormatter"; "required": false; "isSignal": true; }; "dense": { "alias": "dense"; "required": false; "isSignal": true; }; "striped": { "alias": "striped"; "required": false; "isSignal": true; }; "hoverable": { "alias": "hoverable"; "required": false; "isSignal": true; }; "bordered": { "alias": "bordered"; "required": false; "isSignal": true; }; "borderless": { "alias": "borderless"; "required": false; "isSignal": true; }; "stickyHeader": { "alias": "stickyHeader"; "required": false; "isSignal": true; }; "scrollHeight": { "alias": "scrollHeight"; "required": false; "isSignal": true; }; "resizableColumns": { "alias": "resizableColumns"; "required": false; "isSignal": true; }; "styleClass": { "alias": "styleClass"; "required": false; "isSignal": true; }; "tableClass": { "alias": "tableClass"; "required": false; "isSignal": true; }; "tableStyle": { "alias": "tableStyle"; "required": false; "isSignal": true; }; "rowClass": { "alias": "rowClass"; "required": false; "isSignal": true; }; "rowStyle": { "alias": "rowStyle"; "required": false; "isSignal": true; }; "rowActionsWidth": { "alias": "rowActionsWidth"; "required": false; "isSignal": true; }; "rowActionsAlwaysVisible": { "alias": "rowActionsAlwaysVisible"; "required": false; "isSignal": true; }; "showToolbar": { "alias": "showToolbar"; "required": false; "isSignal": true; }; "title": { "alias": "title"; "required": false; "isSignal": true; }; "count": { "alias": "count"; "required": false; "isSignal": true; }; "showCount": { "alias": "showCount"; "required": false; "isSignal": true; }; "showSearch": { "alias": "showSearch"; "required": false; "isSignal": true; }; "searchPlaceholder": { "alias": "searchPlaceholder"; "required": false; "isSignal": true; }; "columnToggle": { "alias": "columnToggle"; "required": false; "isSignal": true; }; "columnsLabel": { "alias": "columnsLabel"; "required": false; "isSignal": true; }; "showDensityToggle": { "alias": "showDensityToggle"; "required": false; "isSignal": true; }; "showSelectionBar": { "alias": "showSelectionBar"; "required": false; "isSignal": true; }; "selectedLabel": { "alias": "selectedLabel"; "required": false; "isSignal": true; }; "selectedLabelPlural": { "alias": "selectedLabelPlural"; "required": false; "isSignal": true; }; "filtersLabel": { "alias": "filtersLabel"; "required": false; "isSignal": true; }; "selectionMode": { "alias": "selectionMode"; "required": false; "isSignal": true; }; "selection": { "alias": "selection"; "required": false; "isSignal": true; }; "selectAll": { "alias": "selectAll"; "required": false; "isSignal": true; }; "selectAllScope": { "alias": "selectAllScope"; "required": false; "isSignal": true; }; "rowSelectable": { "alias": "rowSelectable"; "required": false; "isSignal": true; }; "metaKeySelection": { "alias": "metaKeySelection"; "required": false; "isSignal": true; }; "selectionPropagation": { "alias": "selectionPropagation"; "required": false; "isSignal": true; }; "sortField": { "alias": "sortField"; "required": false; "isSignal": true; }; "sortOrder": { "alias": "sortOrder"; "required": false; "isSignal": true; }; "sortMode": { "alias": "sortMode"; "required": false; "isSignal": true; }; "multiSortMeta": { "alias": "multiSortMeta"; "required": false; "isSignal": true; }; "defaultSortOrder": { "alias": "defaultSortOrder"; "required": false; "isSignal": true; }; "customSort": { "alias": "customSort"; "required": false; "isSignal": true; }; "paginator": { "alias": "paginator"; "required": false; "isSignal": true; }; "first": { "alias": "first"; "required": false; "isSignal": true; }; "rows": { "alias": "rows"; "required": false; "isSignal": true; }; "rowsPerPageOptions": { "alias": "rowsPerPageOptions"; "required": false; "isSignal": true; }; "totalRecords": { "alias": "totalRecords"; "required": false; "isSignal": true; }; "showCurrentPageReport": { "alias": "showCurrentPageReport"; "required": false; "isSignal": true; }; "currentPageReportTemplate": { "alias": "currentPageReportTemplate"; "required": false; "isSignal": true; }; "pageLinks": { "alias": "pageLinks"; "required": false; "isSignal": true; }; "showFirstLastIcon": { "alias": "showFirstLastIcon"; "required": false; "isSignal": true; }; "alwaysShowPaginator": { "alias": "alwaysShowPaginator"; "required": false; "isSignal": true; }; "globalFilter": { "alias": "globalFilter"; "required": false; "isSignal": true; }; "globalFilterFields": { "alias": "globalFilterFields"; "required": false; "isSignal": true; }; "filters": { "alias": "filters"; "required": false; "isSignal": true; }; "filterDelay": { "alias": "filterDelay"; "required": false; "isSignal": true; }; "lazy": { "alias": "lazy"; "required": false; "isSignal": true; }; "lazyLoadOnInit": { "alias": "lazyLoadOnInit"; "required": false; "isSignal": true; }; "rowExpandable": { "alias": "rowExpandable"; "required": false; "isSignal": true; }; "expandedRowKeys": { "alias": "expandedRowKeys"; "required": false; "isSignal": true; }; "expandMode": { "alias": "expandMode"; "required": false; "isSignal": true; }; "treeField": { "alias": "treeField"; "required": false; "isSignal": true; }; "parentKey": { "alias": "parentKey"; "required": false; "isSignal": true; }; "treeColumn": { "alias": "treeColumn"; "required": false; "isSignal": true; }; "indent": { "alias": "indent"; "required": false; "isSignal": true; }; "expandedNodeKeys": { "alias": "expandedNodeKeys"; "required": false; "isSignal": true; }; "lazyChildren": { "alias": "lazyChildren"; "required": false; "isSignal": true; }; "hasChildren": { "alias": "hasChildren"; "required": false; "isSignal": true; }; "showTreeLines": { "alias": "showTreeLines"; "required": false; "isSignal": true; }; "treeIcon": { "alias": "treeIcon"; "required": false; "isSignal": true; }; "keepAncestors": { "alias": "keepAncestors"; "required": false; "isSignal": true; }; "groupBy": { "alias": "groupBy"; "required": false; "isSignal": true; }; "expandedGroups": { "alias": "expandedGroups"; "required": false; "isSignal": true; }; "aggregates": { "alias": "aggregates"; "required": false; "isSignal": true; }; "showGrandTotal": { "alias": "showGrandTotal"; "required": false; "isSignal": true; }; "grandTotalLabel": { "alias": "grandTotalLabel"; "required": false; "isSignal": true; }; "groupSort": { "alias": "groupSort"; "required": false; "isSignal": true; }; "groupLabel": { "alias": "groupLabel"; "required": false; "isSignal": true; }; "responsive": { "alias": "responsive"; "required": false; "isSignal": true; }; "stackAt": { "alias": "stackAt"; "required": false; "isSignal": true; }; "priorityBreakpoints": { "alias": "priorityBreakpoints"; "required": false; "isSignal": true; }; "showHiddenInExpansion": { "alias": "showHiddenInExpansion"; "required": false; "isSignal": true; }; "stickyFirstColumn": { "alias": "stickyFirstColumn"; "required": false; "isSignal": true; }; "stickyActions": { "alias": "stickyActions"; "required": false; "isSignal": true; }; "reorderableColumns": { "alias": "reorderableColumns"; "required": false; "isSignal": true; }; "columnOrder": { "alias": "columnOrder"; "required": false; "isSignal": true; }; "headerGroups": { "alias": "headerGroups"; "required": false; "isSignal": true; }; "virtualScroll": { "alias": "virtualScroll"; "required": false; "isSignal": true; }; "virtualRowHeight": { "alias": "virtualRowHeight"; "required": false; "isSignal": true; }; "virtualBuffer": { "alias": "virtualBuffer"; "required": false; "isSignal": true; }; "editMode": { "alias": "editMode"; "required": false; "isSignal": true; }; "editOnClick": { "alias": "editOnClick"; "required": false; "isSignal": true; }; "commitOnBlur": { "alias": "commitOnBlur"; "required": false; "isSignal": true; }; "mutate": { "alias": "mutate"; "required": false; "isSignal": true; }; "showEditIcon": { "alias": "showEditIcon"; "required": false; "isSignal": true; }; "showRowEditButton": { "alias": "showRowEditButton"; "required": false; "isSignal": true; }; "rowEditDialogHeader": { "alias": "rowEditDialogHeader"; "required": false; "isSignal": true; }; "rowEditDialogSize": { "alias": "rowEditDialogSize"; "required": false; "isSignal": true; }; "rowEditDialogCols": { "alias": "rowEditDialogCols"; "required": false; "isSignal": true; }; "columnMenu": { "alias": "columnMenu"; "required": false; "isSignal": true; }; "columnMenuItems": { "alias": "columnMenuItems"; "required": false; "isSignal": true; }; "columnMenuExtra": { "alias": "columnMenuExtra"; "required": false; "isSignal": true; }; "pinnedColumns": { "alias": "pinnedColumns"; "required": false; "isSignal": true; }; "showFilterRow": { "alias": "showFilterRow"; "required": false; "isSignal": true; }; "showGroupZone": { "alias": "showGroupZone"; "required": false; "isSignal": true; }; "groupZoneLabel": { "alias": "groupZoneLabel"; "required": false; "isSignal": true; }; "hideGroupedColumns": { "alias": "hideGroupedColumns"; "required": false; "isSignal": true; }; "showRowNumber": { "alias": "showRowNumber"; "required": false; "isSignal": true; }; "reorderableRows": { "alias": "reorderableRows"; "required": false; "isSignal": true; }; "rowDragDisabled": { "alias": "rowDragDisabled"; "required": false; "isSignal": true; }; "showRowCount": { "alias": "showRowCount"; "required": false; "isSignal": true; }; "rowCountLabel": { "alias": "rowCountLabel"; "required": false; "isSignal": true; }; "colonnes": { "alias": "colonnes"; "required": false; "isSignal": true; }; }, { "dense": "denseChange"; "selection": "selectionChange"; "rowSelect": "rowSelect"; "rowUnselect": "rowUnselect"; "rowClick": "rowClick"; "rowDblClick": "rowDblClick"; "sortField": "sortFieldChange"; "sortOrder": "sortOrderChange"; "multiSortMeta": "multiSortMetaChange"; "sortChange": "sortChange"; "first": "firstChange"; "rows": "rowsChange"; "pageChange": "pageChange"; "globalFilter": "globalFilterChange"; "filters": "filtersChange"; "filterChange": "filterChange"; "lazyLoad": "lazyLoad"; "expandedRowKeys": "expandedRowKeysChange"; "rowExpand": "rowExpand"; "rowCollapse": "rowCollapse"; "expandedNodeKeys": "expandedNodeKeysChange"; "nodeExpand": "nodeExpand"; "nodeCollapse": "nodeCollapse"; "groupBy": "groupByChange"; "expandedGroups": "expandedGroupsChange"; "aggregates": "aggregatesChange"; "columnResize": "columnResize"; "columnToggled": "columnToggled"; "columnOrder": "columnOrderChange"; "columnReorder": "columnReorder"; "editInit": "editInit"; "editComplete": "editComplete"; "editCancel": "editCancel"; "cellChange": "cellChange"; "rowEditInit": "rowEditInit"; "rowEditSave": "rowEditSave"; "rowEditCancel": "rowEditCancel"; "columnMenuAction": "columnMenuAction"; "pinnedColumns": "pinnedColumnsChange"; "columnPin": "columnPin"; "rowReorder": "rowReorder"; }, ["columnsProjetees", "expansionTpl", "rowActionsTpl", "emptyTpl", "footerTpl", "captionTpl", "groupHeaderTpl", "groupFooterTpl", "cardTpl", "rowCountTpl"], never, true, never>;
2719
2794
  }
2720
2795
 
2721
2796
  /**
@@ -2726,6 +2801,9 @@ declare abstract class CadTableBase<T> {
2726
2801
  * </cad-table>
2727
2802
  * UN composant : plat, ARBRE (`treeField`/`parentKey`), GROUPEMENT (`groupBy`) — moteur CadTreeAdapter ; responsive scroll|priority|stack ; colonnes figées,
2728
2803
  * réordonnables (`columnOrder`), virtual scroll, édition inline cell|row. Tri/filtre/pagination locaux, ou tout délégué en `lazy`.
2804
+ * @atelier icone=table
2805
+ * @atelier-exemple colonnes [{"field":"nom","header":"Nom"},{"field":"etat","header":"État"},{"field":"controle","header":"Dernier contrôle"}]
2806
+ * @atelier-exemple value [{"nom":"Pont de Sèvres","etat":"Bon","controle":"12/03/2026"},{"nom":"Viaduc de Meudon","etat":"À surveiller","controle":"28/05/2026"},{"nom":"Passerelle Rive Sud","etat":"Bon","controle":"02/07/2026"},{"nom":"Tunnel des Acacias","etat":"Dégradé","controle":"19/08/2026"}]
2729
2807
  */
2730
2808
  declare class CadTableComponent<T = Record<string, unknown>> extends CadTableBase<T> {
2731
2809
  private readonly host;
@@ -2994,6 +3072,11 @@ interface CadTreeNodeEvent<T> {
2994
3072
  * </cad-tree>
2995
3073
  * Arbre sans colonnes ; même moteur (CadTreeAdapter) que le mode arbre de cad-table. Données imbriquées (`treeField`) ou plates (`parentKey`+`dataKey`).
2996
3074
  * Clavier : ↑/↓ (nœud suivant/précédent), → déplie / va au 1er enfant, ← replie / remonte au parent, Home/End, Entrée = sélection, Espace = case, * = déplie la fratrie.
3075
+ * @atelier icone=folder-tree
3076
+ * @atelier-exemple value [{"id":1,"label":"Infrastructures"},{"id":2,"label":"Pont de Sèvres","parent":1},{"id":3,"label":"Viaduc de Meudon","parent":1},{"id":4,"label":"Équipements"},{"id":5,"label":"Éclairage public","parent":4},{"id":6,"label":"Signalisation","parent":4}]
3077
+ * @atelier-exemple parentKey "parent"
3078
+ * @atelier-exemple dataKey "id"
3079
+ * @atelier-exemple labelField "label"
2997
3080
  */
2998
3081
  declare class CadTreeComponent<T = Record<string, unknown>> {
2999
3082
  private readonly host;
@@ -3123,6 +3206,7 @@ interface FilterDraft {
3123
3206
  * </div>
3124
3207
  * ou dans `<cad-split ratio="1fr auto">` / `<cad-sidebar>` de la couche layout.
3125
3208
  * Sous `md` (fenêtre) le panneau devient un overlay à droite, fermé par défaut.
3209
+ * @atelier icone=table-properties
3126
3210
  */
3127
3211
  declare class CadTablePanelComponent<T = unknown> {
3128
3212
  private readonly bp;
@@ -3291,6 +3375,8 @@ type CadDataviewLayout = 'list' | 'grid';
3291
3375
  * <ng-template cadDataviewGrid let-p>…carte…</ng-template>
3292
3376
  * </cad-dataview>
3293
3377
  * Remplace p-dataView : liste ou grille de templates, tri/filtre/pagination locaux, squelettes en `loading`.
3378
+ * @atelier icone=layout-list
3379
+ * @atelier-exemple value [{"label":"Pont de Sèvres","etat":"Bon"},{"label":"Viaduc de Meudon","etat":"À surveiller"},{"label":"Passerelle Rive Sud","etat":"Bon"}]
3294
3380
  */
3295
3381
  declare class CadDataviewComponent<T = unknown> {
3296
3382
  readonly value: _angular_core.InputSignal<T[]>;
@@ -3332,6 +3418,7 @@ declare class CadDataviewComponent<T = unknown> {
3332
3418
  * <cad-treeselect [(value)]="v" [options]="arbre" treeField="children" labelField="name" dataKey="id" selectionMode="checkbox" filter clearable/>
3333
3419
  * CVA : valeur = nœud(s) (objets) ; `optionValue` (chemin) pour stocker un identifiant. Panneau CDK avec un cad-tree.
3334
3420
  * single → ferme à la sélection ; multiple/checkbox → chips ou « n sélectionnés » (`display`). Events changed/opened/closed/nodeExpand.
3421
+ * @atelier icone=folder-tree largeur=3 hauteur=1
3335
3422
  */
3336
3423
  declare class CadTreeselectComponent<T = unknown> extends CadValueAccessor<T | T[] | unknown> {
3337
3424
  readonly options: _angular_core.InputSignal<T[]>;
@@ -3394,6 +3481,7 @@ declare class CadTreeselectComponent<T = unknown> extends CadValueAccessor<T | T
3394
3481
  /**
3395
3482
  * <cad-cascade-select [(value)]="commune" [options]="regions" optionLabel="nom" optionValue="code" optionGroupLabel="nom" optionGroupChildren="items" showPath/>
3396
3483
  * CVA valeur FEUILLE. Panneau à colonnes successives (survol/clic ouvre le niveau suivant, ← → ↑ ↓, Entrée choisit). Events changed/opened/closed/groupChange.
3484
+ * @atelier icone=corner-down-right largeur=3 hauteur=1
3397
3485
  */
3398
3486
  declare class CadCascadeSelectComponent<T = unknown, V = unknown> extends CadValueAccessor<V> {
3399
3487
  readonly options: _angular_core.InputSignal<T[]>;
@@ -3450,6 +3538,8 @@ type CadComboSource<T> = T[] | ((query: string) => T[] | Promise<T[]> | Observab
3450
3538
  * <cad-combo [(value)]="ville" [suggestions]="search" optionLabel="nom" [minLength]="2" [delay]="250" dropdown forceSelection placeholder="Commune…"/>
3451
3539
  * Autocomplete (remplace p-autocomplete et le cad-combo du studio). CVA string (texte libre) ou objet (`forceSelection`), `multiple` = chips.
3452
3540
  * `suggestions` = tableau (filtré localement) ou fonction (query) → tableau | Promise | Observable. Template `cadSelectItem`. Clavier ↑↓ Entrée Échap.
3541
+ * @atelier icone=list-filter largeur=3 hauteur=1
3542
+ * @atelier-exemple suggestions [{"label":"Béton armé"},{"label":"Béton précontraint"},{"label":"Acier"},{"label":"Bois lamellé"}]
3453
3543
  */
3454
3544
  declare class CadComboComponent<T = unknown> extends CadValueAccessor<unknown> {
3455
3545
  readonly suggestions: _angular_core.InputSignal<CadComboSource<T>>;
@@ -3561,6 +3651,7 @@ interface DayCell {
3561
3651
  * CVA<CadDateValue>. `dataType='string'` (défaut, compat studio/Postgres) → ISO local
3562
3652
  * ("yyyy-MM-dd" / "yyyy-MM-ddTHH:mm" / "HH:mm" / "yyyy-MM" / "yyyy") ; `dataType='date'` → Date.
3563
3653
  * `selectionMode='range'` → [debut, fin] ; 'multiple' → tableau.
3654
+ * @atelier icone=calendar-days largeur=3 hauteur=1
3564
3655
  */
3565
3656
  declare class CadDatepickerComponent extends CadValueAccessor<CadDateValue> {
3566
3657
  private readonly host;
@@ -3884,6 +3975,7 @@ declare abstract class CadOverlayBase implements OnDestroy {
3884
3975
  * </cad-dialog>
3885
3976
  * Remplace p-dialog. Chrome partagé (CadDialogContainerComponent), focus trap, Escape/backdrop configurables.
3886
3977
  * Mobile : plein écran par défaut (`mobileFullscreen`), ou feuille basse (`mobileSheet`).
3978
+ * @atelier icone=message-square
3887
3979
  */
3888
3980
  declare class CadDialogComponent extends CadOverlayBase {
3889
3981
  readonly width: _angular_core.InputSignal<string | undefined>;
@@ -3911,6 +4003,7 @@ declare class CadDialogComponent extends CadOverlayBase {
3911
4003
  * </cad-drawer>
3912
4004
  * Remplace p-drawer. Même chrome/slots que cad-dialog (cadDialogHeader / cadDialogFooter), glissement 180 ms.
3913
4005
  * Mobile : `mobileSize` ('full' par défaut = pleine largeur / hauteur).
4006
+ * @atelier icone=panel-right
3914
4007
  */
3915
4008
  declare class CadDrawerComponent extends CadOverlayBase {
3916
4009
  readonly position: _angular_core.InputSignal<CadDrawerPosition>;
@@ -3983,6 +4076,7 @@ declare class CadConfirmService {
3983
4076
  /**
3984
4077
  * <cad-confirm-dialog key="…"/> — wrapper de migration (PrimeNG exigeait un p-confirmDialog dans le template).
3985
4078
  * cadriciel-ui n'en a PAS besoin (CadConfirmService rend lui-même) : ce composant ne fait rien et peut être retiré.
4079
+ * @atelier icone=help-circle
3986
4080
  */
3987
4081
  declare class CadConfirmDialogComponent {
3988
4082
  readonly key: _angular_core.InputSignal<string>;
@@ -4046,6 +4140,7 @@ declare class CadTooltipDirective implements OnDestroy {
4046
4140
  * <button (click)="p.toggle($event)">…</button>
4047
4141
  * Panneau flottant ancré sur une cible passée à `open(target)`. Base du futur menu contextuel.
4048
4142
  * Mobile : `mobile="sheet"` → sous le seuil mobile le contenu s'ouvre en feuille basse (défaut 'popover' = inchangé).
4143
+ * @atelier icone=message-circle
4049
4144
  */
4050
4145
  declare class CadPopoverComponent implements OnDestroy {
4051
4146
  private readonly overlay;
@@ -4161,6 +4256,7 @@ interface ToastItem {
4161
4256
  /**
4162
4257
  * <cad-toast position="top-right" [life]="4000" [maxVisible]="5" [preventDuplicates]="true" [showProgress]="true" />
4163
4258
  * Conteneur des toasts d'un `key` (ou sans clé). Position fixe hors flux, pause au survol, aria-live.
4259
+ * @atelier icone=bell
4164
4260
  */
4165
4261
  declare class CadToastComponent {
4166
4262
  private readonly svc;
@@ -4196,6 +4292,7 @@ declare class CadToastComponent {
4196
4292
  /**
4197
4293
  * <cad-message severity="warning" [closable]="true">Le certificat expire dans 6 jours.</cad-message>
4198
4294
  * Message inline (remplace p-message). `text` ou contenu projeté ; `icon` (nom cad-icon, '' = sans icône) ; variant soft|outline ; size sm|md.
4295
+ * @atelier icone=info largeur=6 hauteur=1 pose-text="Message d'information"
4199
4296
  */
4200
4297
  declare class CadMessageComponent {
4201
4298
  readonly severity: _angular_core.InputSignal<"secondary" | "success" | "warning" | "danger" | "info">;
@@ -4218,6 +4315,7 @@ declare class CadMessageComponent {
4218
4315
  /**
4219
4316
  * <cad-avatar [src]="url" text="SZ" icon="user" size="sm|md|lg" shape="circle|square" [color]="'#…'" />
4220
4317
  * Sans `color`, la teinte est dérivée du texte (hash → hue) : stable pour un même utilisateur.
4318
+ * @atelier ajustement=naturel icone=user-round largeur=1 hauteur=1 pose-text=AB
4221
4319
  */
4222
4320
  declare class CadAvatarComponent {
4223
4321
  readonly src: _angular_core.InputSignal<string | null | undefined>;
@@ -4239,6 +4337,7 @@ declare class CadAvatarComponent {
4239
4337
  /**
4240
4338
  * <cad-chip label="szu" icon="user" [image]="url" avatarText="SZ" removable [selected] [disabled] size="sm|md" severity="primary" (removed) (clicked)/>
4241
4339
  * Backspace/Suppr sur un chip focalisé → `removed`. `clickable` rend le chip actionnable (role=button).
4340
+ * @atelier ajustement=naturel icone=tags largeur=2 hauteur=1 pose-label=Élément
4242
4341
  */
4243
4342
  declare class CadChipComponent {
4244
4343
  readonly label: _angular_core.InputSignal<string>;
@@ -4262,7 +4361,10 @@ declare class CadChipComponent {
4262
4361
  }
4263
4362
 
4264
4363
  type CadTagSeverity = 'primary' | 'success' | 'warning' | 'danger' | 'info' | 'neutral';
4265
- /** <cad-tag severity="success" dot value="En ligne" /> — statut compact (fond soft + point). */
4364
+ /**
4365
+ * <cad-tag severity="success" dot value="En ligne" /> — statut compact (fond soft + point).
4366
+ * @atelier ajustement=naturel icone=tag largeur=1 hauteur=1 pose-value=Étiquette
4367
+ */
4266
4368
  declare class CadTagComponent {
4267
4369
  readonly value: _angular_core.InputSignal<string>;
4268
4370
  readonly severity: _angular_core.InputSignal<CadTagSeverity>;
@@ -4275,7 +4377,10 @@ declare class CadTagComponent {
4275
4377
  }
4276
4378
 
4277
4379
  type CadBadgeSeverity = 'primary' | 'success' | 'warning' | 'danger' | 'info' | 'neutral';
4278
- /** <cad-badge [value]="3" [max]="99" severity="danger" [dot] size="sm|md" /> */
4380
+ /**
4381
+ * <cad-badge [value]="3" [max]="99" severity="danger" [dot] size="sm|md" />
4382
+ * @atelier ajustement=naturel icone=badge-check largeur=1 hauteur=1 pose-value=3
4383
+ */
4279
4384
  declare class CadBadgeComponent {
4280
4385
  readonly value: _angular_core.InputSignal<string | number | null>;
4281
4386
  readonly max: _angular_core.InputSignalWithTransform<number, unknown>;
@@ -4306,7 +4411,10 @@ declare class CadBadgeDirective {
4306
4411
  }
4307
4412
 
4308
4413
  type CadProgressSeverity = 'primary' | 'success' | 'warning' | 'danger' | 'info';
4309
- /** <cad-progress [value]="62" [max]="100" [indeterminate] severity size="sm|md|lg" showValue label="Build" striped /> */
4414
+ /**
4415
+ * <cad-progress [value]="62" [max]="100" [indeterminate] severity size="sm|md|lg" showValue label="Build" striped />
4416
+ * @atelier icone=percent largeur=4 hauteur=1 pose-value=60
4417
+ */
4310
4418
  declare class CadProgressComponent {
4311
4419
  readonly value: _angular_core.InputSignalWithTransform<number, unknown>;
4312
4420
  readonly max: _angular_core.InputSignalWithTransform<number, unknown>;
@@ -4321,7 +4429,10 @@ declare class CadProgressComponent {
4321
4429
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<CadProgressComponent, never>;
4322
4430
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<CadProgressComponent, "cad-progress", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "max": { "alias": "max"; "required": false; "isSignal": true; }; "indeterminate": { "alias": "indeterminate"; "required": false; "isSignal": true; }; "severity": { "alias": "severity"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "showValue": { "alias": "showValue"; "required": false; "isSignal": true; }; "striped": { "alias": "striped"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
4323
4431
  }
4324
- /** <cad-spinner [size]="24" [strokeWidth]="2.5" severity ariaLabel="Chargement" /> */
4432
+ /**
4433
+ * <cad-spinner [size]="24" [strokeWidth]="2.5" severity ariaLabel="Chargement" />
4434
+ * @atelier ajustement=naturel icone=loader-2 largeur=1 hauteur=1
4435
+ */
4325
4436
  declare class CadSpinnerComponent {
4326
4437
  readonly size: _angular_core.InputSignalWithTransform<number, unknown>;
4327
4438
  readonly strokeWidth: _angular_core.InputSignalWithTransform<number, unknown>;
@@ -4331,7 +4442,10 @@ declare class CadSpinnerComponent {
4331
4442
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<CadSpinnerComponent, "cad-spinner", never, { "size": { "alias": "size"; "required": false; "isSignal": true; }; "strokeWidth": { "alias": "strokeWidth"; "required": false; "isSignal": true; }; "severity": { "alias": "severity"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
4332
4443
  }
4333
4444
 
4334
- /** <cad-skeleton width="70%" height="12px" shape="text|rect|circle" [lines]="3" [animation]="true" /> */
4445
+ /**
4446
+ * <cad-skeleton width="70%" height="12px" shape="text|rect|circle" [lines]="3" [animation]="true" />
4447
+ * @atelier icone=loader
4448
+ */
4335
4449
  declare class CadSkeletonComponent {
4336
4450
  readonly width: _angular_core.InputSignal<string>;
4337
4451
  readonly height: _angular_core.InputSignal<string>;
@@ -4358,6 +4472,7 @@ declare class CadCardHeaderDirective {
4358
4472
  * contenu
4359
4473
  * <div cadCardFooter>…</div>
4360
4474
  * </cad-card>
4475
+ * @atelier icone=layout-template conteneur=flux largeur=6 hauteur=6 rang=2
4361
4476
  */
4362
4477
  declare class CadCardComponent {
4363
4478
  readonly header: _angular_core.InputSignal<string>;
@@ -4373,7 +4488,10 @@ declare class CadCardComponent {
4373
4488
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<CadCardComponent, "cad-card", never, { "header": { "alias": "header"; "required": false; "isSignal": true; }; "subheader": { "alias": "subheader"; "required": false; "isSignal": true; }; "hoverable": { "alias": "hoverable"; "required": false; "isSignal": true; }; "flat": { "alias": "flat"; "required": false; "isSignal": true; }; "compact": { "alias": "compact"; "required": false; "isSignal": true; }; "padding": { "alias": "padding"; "required": false; "isSignal": true; }; }, {}, ["headerTpl"], ["[cadCardActions]", "*", "[cadCardFooter]"], true, never>;
4374
4489
  }
4375
4490
 
4376
- /** <cad-divider [vertical] align="left|center|right" [dashed]>texte optionnel</cad-divider> */
4491
+ /**
4492
+ * <cad-divider [vertical] align="left|center|right" [dashed]>texte optionnel</cad-divider>
4493
+ * @atelier icone=minus largeur=12 hauteur=1
4494
+ */
4377
4495
  declare class CadDividerComponent {
4378
4496
  readonly vertical: _angular_core.InputSignalWithTransform<boolean, unknown>;
4379
4497
  readonly dashed: _angular_core.InputSignalWithTransform<boolean, unknown>;
@@ -4391,6 +4509,7 @@ declare class CadFieldsetLegendDirective {
4391
4509
  /**
4392
4510
  * <cad-fieldset legend="Options avancées" toggleable [(collapsed)]="c" (toggled)="…">…</cad-fieldset>
4393
4511
  * Remplace p-fieldset : légende posée sur la bordure, contenu repliable (animation grid-rows, `inert` fermé).
4512
+ * @atelier icone=square-dashed conteneur=flux largeur=6 hauteur=5
4394
4513
  */
4395
4514
  declare class CadFieldsetComponent {
4396
4515
  readonly legend: _angular_core.InputSignal<string>;
@@ -4417,6 +4536,7 @@ declare class CadPanelHeadingDirective {
4417
4536
  * <div cadPanelFooter>…</div>
4418
4537
  * </cad-panel>
4419
4538
  * Remplace p-panel : en-tête 42 px fond `--cad-bg-subtle`, repli animé.
4539
+ * @atelier icone=panel-top conteneur=flux largeur=6 hauteur=6 rang=1
4420
4540
  */
4421
4541
  declare class CadPanelComponent {
4422
4542
  readonly header: _angular_core.InputSignal<string>;
@@ -4426,6 +4546,14 @@ declare class CadPanelComponent {
4426
4546
  readonly flat: _angular_core.InputSignalWithTransform<boolean, unknown>;
4427
4547
  readonly toggled: _angular_core.OutputEmitterRef<boolean>;
4428
4548
  readonly headingTpl: _angular_core.Signal<CadPanelHeadingDirective | undefined>;
4549
+ /**
4550
+ * Un en-tête qui n'a RIEN à montrer ne se dessine pas (SZU 24/08 : un panel nu posé
4551
+ * dans l'atelier arborait une barre vide de 42 px). Masqué en CSS et non par un @if :
4552
+ * un `@if` autour d'un `<ng-content>` ferait retomber la projection dans le corps —
4553
+ * piège payé le 22/08. Limite assumée : des actions `[cadPanelActions]` SANS titre ni
4554
+ * repli restent masquées avec l'en-tête — donner alors un `header`.
4555
+ */
4556
+ protected readonly sansEntete: _angular_core.Signal<boolean>;
4429
4557
  protected readonly id: string;
4430
4558
  toggle(): void;
4431
4559
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<CadPanelComponent, never>;
@@ -4435,6 +4563,7 @@ declare class CadPanelComponent {
4435
4563
  /**
4436
4564
  * <cad-avatar-group [max]="3" size="md"><cad-avatar text="SZ"/><cad-avatar text="PA"/>…</cad-avatar-group>
4437
4565
  * Avatars empilés (chevauchement, bordure surface) ; au-delà de `max` un avatar « +N » (title = noms masqués).
4566
+ * @atelier ajustement=naturel icone=users largeur=2 hauteur=1
4438
4567
  */
4439
4568
  declare class CadAvatarGroupComponent {
4440
4569
  readonly max: _angular_core.InputSignalWithTransform<number | null, unknown>;
@@ -4465,6 +4594,8 @@ declare class CadMeterLabelDirective {
4465
4594
  /**
4466
4595
  * <cad-meter [values]="[{label:'Utilisé', value: 62, severity:'primary'}, {label:'Réservé', value: 18, severity:'warning'}]" [max]="100" unit="Gi" showLabels/>
4467
4596
  * Jauge segmentée (remplace p-meterGroup) : segments proportionnels, légende (point + label + valeur/%), horizontal ou vertical.
4597
+ * @atelier icone=gauge
4598
+ * @atelier-exemple values [{"label":"Utilisé","value":62,"severity":"primary"},{"label":"Réservé","value":21,"severity":"warning"}]
4468
4599
  */
4469
4600
  declare class CadMeterComponent {
4470
4601
  readonly values: _angular_core.InputSignal<CadMeterValue[]>;
@@ -4518,6 +4649,8 @@ type CadTimelineAlign = 'left' | 'right' | 'alternate' | 'top' | 'bottom';
4518
4649
  * <ng-template cadTimelineContent let-e let-i="index"><b>{{ e.title }}</b></ng-template>
4519
4650
  * </cad-timeline>
4520
4651
  * `activeIndex` : les événements d'index ≤ activeIndex sont « passés » (marqueur/connecteur en accent).
4652
+ * @atelier icone=milestone
4653
+ * @atelier-exemple events [{"title":"Mise en service","date":"2019"},{"title":"Première inspection","date":"2022"},{"title":"Réparations","date":"2024"},{"title":"Inspection décennale","date":"2029"}]
4521
4654
  */
4522
4655
  declare class CadTimelineComponent<T = unknown> {
4523
4656
  readonly events: _angular_core.InputSignal<T[]>;
@@ -4548,6 +4681,7 @@ interface CadCarouselResponsive {
4548
4681
  * <ng-template cadCarouselItem let-it let-i="index">…</ng-template>
4549
4682
  * </cad-carousel>
4550
4683
  * `numVisible` responsive par breakpoints FENÊTRE ("1 sm:2 lg:3") ou `[responsive]="[{breakpoint:768,numVisible:1}]"` (max-width du CONTENEUR).
4684
+ * @atelier icone=images
4551
4685
  */
4552
4686
  declare class CadCarouselComponent<T = unknown> {
4553
4687
  private readonly bp;
@@ -4591,6 +4725,7 @@ declare class CadCarouselComponent<T = unknown> {
4591
4725
  /**
4592
4726
  * <cad-image src="…" alt="…" width="240px" height="160px" fit="cover" rounded preview caption="Légende" fallback="/assets/nope.png"/>
4593
4727
  * Aperçu plein écran (clic) : zoom ± / molette, rotation, téléchargement, Échap/croix ; squelette pendant le chargement, image de repli sur erreur.
4728
+ * @atelier icone=image
4594
4729
  */
4595
4730
  declare class CadImageComponent {
4596
4731
  readonly src: _angular_core.InputSignal<string>;
@@ -4628,6 +4763,7 @@ declare class CadImageComponent {
4628
4763
  /**
4629
4764
  * <cad-scroll-top [threshold]="400" target="window" behavior="smooth"/> — bouton flottant « remonter » (fondu au-delà du seuil).
4630
4765
  * `target` = 'window' ou un élément défilant (`[target]="scroller"`).
4766
+ * @atelier icone=arrow-up largeur=1 hauteur=1
4631
4767
  */
4632
4768
  declare class CadScrollTopComponent {
4633
4769
  readonly target: _angular_core.InputSignal<HTMLElement | "window">;
@@ -4696,7 +4832,10 @@ declare class CadIfDirective {
4696
4832
 
4697
4833
  type Align = 'stretch' | 'start' | 'center' | 'end' | 'baseline';
4698
4834
  type Justify = 'start' | 'center' | 'end' | 'between' | 'around' | 'evenly';
4699
- /** Pile verticale : `<cad-stack gap="sm" align="stretch">` — les enfants s'empilent avec un gap uniforme (jamais de marges). */
4835
+ /**
4836
+ * Pile verticale : `<cad-stack gap="sm" align="stretch">` — les enfants s'empilent avec un gap uniforme (jamais de marges).
4837
+ * @atelier icone=rows conteneur=flux largeur=4 hauteur=5
4838
+ */
4700
4839
  declare class CadStackComponent {
4701
4840
  readonly gap: _angular_core.InputSignal<CadGap>;
4702
4841
  readonly align: _angular_core.InputSignal<Align>;
@@ -4708,7 +4847,10 @@ declare class CadStackComponent {
4708
4847
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<CadStackComponent, never>;
4709
4848
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<CadStackComponent, "cad-stack", never, { "gap": { "alias": "gap"; "required": false; "isSignal": true; }; "align": { "alias": "align"; "required": false; "isSignal": true; }; "justify": { "alias": "justify"; "required": false; "isSignal": true; }; "inline": { "alias": "inline"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
4710
4849
  }
4711
- /** Groupe horizontal qui replie : `<cad-cluster gap="sm" justify="between" align="center">` (boutons, chips, méta). */
4850
+ /**
4851
+ * Groupe horizontal qui replie : `<cad-cluster gap="sm" justify="between" align="center">` (boutons, chips, méta).
4852
+ * @atelier icone=boxes conteneur=flux largeur=6 hauteur=3
4853
+ */
4712
4854
  declare class CadClusterComponent {
4713
4855
  readonly gap: _angular_core.InputSignal<CadGap>;
4714
4856
  readonly align: _angular_core.InputSignal<Align>;
@@ -4725,6 +4867,7 @@ declare class CadClusterComponent {
4725
4867
  * Grille responsive : `<cad-grid cols="1 sm:2 lg:4" gap="md">` (breakpoints FENÊTRE, mobile-first)
4726
4868
  * ou `<cad-grid min="220px">` (auto-fit : autant de colonnes que le CONTENEUR en accepte — préférer pour les composants).
4727
4869
  * Enfant : `<div cadCol="2">` / `cadCol="1 md:2"` = span, `cadCol="full"` = toute la largeur.
4870
+ * @atelier icone=grid
4728
4871
  */
4729
4872
  declare class CadGridComponent {
4730
4873
  readonly cols: _angular_core.InputSignal<string | number>;
@@ -4748,7 +4891,10 @@ declare class CadColDirective {
4748
4891
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<CadColDirective, never>;
4749
4892
  static ɵdir: _angular_core.ɵɵDirectiveDeclaration<CadColDirective, "[cadCol]", never, { "cadCol": { "alias": "cadCol"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
4750
4893
  }
4751
- /** Deux zones : `<cad-split ratio="1fr auto" gap="md" stackAt="md">` — sous `stackAt`, empilé. */
4894
+ /**
4895
+ * Deux zones : `<cad-split ratio="1fr auto" gap="md" stackAt="md">` — sous `stackAt`, empilé.
4896
+ * @atelier icone=split-square-horizontal
4897
+ */
4752
4898
  declare class CadSplitComponent {
4753
4899
  private readonly bp;
4754
4900
  readonly ratio: _angular_core.InputSignal<string>;
@@ -4771,6 +4917,7 @@ declare class CadSidebarPanelDirective {
4771
4917
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<CadSidebarPanelDirective, never>;
4772
4918
  static ɵdir: _angular_core.ɵɵDirectiveDeclaration<CadSidebarPanelDirective, "[cadSidebarPanel]", never, {}, {}, never, never, true, never>;
4773
4919
  }
4920
+ /** @atelier icone=panel-left */
4774
4921
  declare class CadSidebarComponent {
4775
4922
  private readonly bp;
4776
4923
  readonly side: _angular_core.InputSignal<"left" | "right">;
@@ -4785,7 +4932,10 @@ declare class CadSidebarComponent {
4785
4932
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<CadSidebarComponent, never>;
4786
4933
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<CadSidebarComponent, "cad-sidebar", never, { "side": { "alias": "side"; "required": false; "isSignal": true; }; "width": { "alias": "width"; "required": false; "isSignal": true; }; "contentMin": { "alias": "contentMin"; "required": false; "isSignal": true; }; "gap": { "alias": "gap"; "required": false; "isSignal": true; }; "align": { "alias": "align"; "required": false; "isSignal": true; }; "collapseAt": { "alias": "collapseAt"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
4787
4934
  }
4788
- /** Centre horizontalement avec largeur max : `<cad-center maxWidth="60ch" [gutters]="'16px'" andText>` */
4935
+ /**
4936
+ * Centre horizontalement avec largeur max : `<cad-center maxWidth="60ch" [gutters]="'16px'" andText>`
4937
+ * @atelier icone=crosshair
4938
+ */
4789
4939
  declare class CadCenterComponent {
4790
4940
  readonly maxWidth: _angular_core.InputSignal<string>;
4791
4941
  readonly gutters: _angular_core.InputSignal<string>;
@@ -4794,7 +4944,10 @@ declare class CadCenterComponent {
4794
4944
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<CadCenterComponent, never>;
4795
4945
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<CadCenterComponent, "cad-center", never, { "maxWidth": { "alias": "maxWidth"; "required": false; "isSignal": true; }; "gutters": { "alias": "gutters"; "required": false; "isSignal": true; }; "andText": { "alias": "andText"; "required": false; "isSignal": true; }; "intrinsic": { "alias": "intrinsic"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
4796
4946
  }
4797
- /** Conteneur de page : `<cad-container size="lg" padding="md">` — largeur max par taille (sm 640, md 768, lg 1024, xl 1280, 2xl 1536, full = --cad-container-max), centré. */
4947
+ /**
4948
+ * Conteneur de page : `<cad-container size="lg" padding="md">` — largeur max par taille (sm 640, md 768, lg 1024, xl 1280, 2xl 1536, full = --cad-container-max), centré.
4949
+ * @atelier icone=box conteneur=flux largeur=6 hauteur=5
4950
+ */
4798
4951
  declare class CadContainerComponent {
4799
4952
  readonly size: _angular_core.InputSignal<"sm" | "md" | "lg" | "xl" | "2xl" | "full">;
4800
4953
  readonly padding: _angular_core.InputSignal<CadGap>;
@@ -4803,7 +4956,10 @@ declare class CadContainerComponent {
4803
4956
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<CadContainerComponent, never>;
4804
4957
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<CadContainerComponent, "cad-container", never, { "size": { "alias": "size"; "required": false; "isSignal": true; }; "padding": { "alias": "padding"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
4805
4958
  }
4806
- /** Espace flexible (pousse ce qui suit) ou fixe : `<cad-spacer/>` · `<cad-spacer size="lg"/>` */
4959
+ /**
4960
+ * Espace flexible (pousse ce qui suit) ou fixe : `<cad-spacer/>` · `<cad-spacer size="lg"/>`
4961
+ * @atelier icone=move-horizontal
4962
+ */
4807
4963
  declare class CadSpacerComponent {
4808
4964
  readonly size: _angular_core.InputSignal<"" | CadGap>;
4809
4965
  protected readonly cadGap: typeof cadGap;
@@ -4823,6 +4979,7 @@ declare class CadSplitterPanelComponent {
4823
4979
  * <cad-splitter-panel>…</cad-splitter-panel><cad-splitter-panel>…</cad-splitter-panel>
4824
4980
  * </cad-splitter>
4825
4981
  * Gouttière glissable (pointer), double-clic = tailles initiales, clavier ←→/↑↓ (±2 %), `role=separator`, persistance localStorage via `stateKey`, imbriquable.
4982
+ * @atelier icone=columns
4826
4983
  */
4827
4984
  declare class CadSplitterComponent {
4828
4985
  private readonly host;
@@ -4942,6 +5099,7 @@ declare const CAD_SHELL: InjectionToken<CadShellApi>;
4942
5099
  * En application autonome (ajoutée à l'écran d'accueil), la page ne passe pas sous la bande
4943
5100
  * d'état : `viewport-fit=cover` n'y suffit pas et c'est `<meta name="theme-color">`, tenu à
4944
5101
  * jour avec le thème, qui donne la continuité.
5102
+ * @atelier icone=layout-dashboard
4945
5103
  */
4946
5104
  declare class CadAppShellComponent implements CadShellApi {
4947
5105
  private readonly bp;
@@ -5201,6 +5359,7 @@ declare const CAD_MAP_CHILD: InjectionToken<CadMapChild>;
5201
5359
  * <div cadMapTopLeft>…</div> ← coins (recherche, légende, chrome…)
5202
5360
  * </cad-map>
5203
5361
  * MapLibre est chargé à la demande ; le fond change sans perdre les couches ; `followTheme` bascule clair/sombre avec `.theme-dark`.
5362
+ * @atelier icone=map conteneur=direct
5204
5363
  */
5205
5364
  declare class CadMapComponent {
5206
5365
  private readonly registry;
@@ -5373,6 +5532,7 @@ interface CadFeatureEvent {
5373
5532
  * <cad-map-layer id="oa" label="Ouvrages d'art" type="geojson" [data]="geojson" [style]="{ color: { field:'etat', categories:{…} }, radius: 6 }" cluster [popupTemplate]="tpl" (featureClick)/>
5374
5533
  * <cad-map-layer id="ppri" label="PPRI" type="wms" url="https://…/wms" layers="PPRI" [opacity]=".6"/>
5375
5534
  * Enfant de <cad-map>, sans rendu : crée/maintient sources et couches MapLibre, réagit aux inputs, survit aux changements de fond.
5535
+ * @atelier icone=layers dans=cad-map
5376
5536
  */
5377
5537
  declare class CadMapLayerComponent implements CadMapChild {
5378
5538
  private readonly mapCmp;
@@ -5478,6 +5638,7 @@ declare class CadMapLayerComponent implements CadMapChild {
5478
5638
  /**
5479
5639
  * <cad-map-legend/> (dans un coin de la carte : `<cad-map-legend cadMapBottomRight/>`) — légende auto des couches visibles de la carte parente,
5480
5640
  * ou `[layers]="[layerA, layerB]"`, ou `[items]="CadLegendItem[]"` (manuel). Repliable, `title`, `compact`.
5641
+ * @atelier icone=clipboard-list dans=cad-map
5481
5642
  */
5482
5643
  declare class CadMapLegendComponent {
5483
5644
  private readonly mapCmp;
@@ -5544,6 +5705,7 @@ declare class CadGeocodingService {
5544
5705
  /**
5545
5706
  * <cad-map-search cadMapTopLeft placeholder="Adresse, commune…" (select)="…"/> — recherche d'adresse (BAN par défaut ou `provider`),
5546
5707
  * résultats au fil de la frappe, ↑↓ Entrée Échap, sélection → flyTo + marqueur temporaire sur la carte parente.
5708
+ * @atelier icone=search dans=cad-map
5547
5709
  */
5548
5710
  declare class CadMapSearchComponent {
5549
5711
  private readonly geo;
@@ -5592,6 +5754,7 @@ declare class CadMapSearchComponent {
5592
5754
  * <div cadMapRailBottom>v1.2</div>
5593
5755
  * </cad-map-rail>
5594
5756
  */
5757
+ /** @atelier dans=cad-map */
5595
5758
  declare class CadMapRailComponent {
5596
5759
  private readonly mapCmp;
5597
5760
  readonly position: _angular_core.InputSignal<CadMapSide>;
@@ -5600,6 +5763,7 @@ declare class CadMapRailComponent {
5600
5763
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<CadMapRailComponent, never>;
5601
5764
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<CadMapRailComponent, "cad-map-rail", never, { "position": { "alias": "position"; "required": false; "isSignal": true; }; "width": { "alias": "width"; "required": false; "isSignal": true; }; }, {}, never, ["*", "[cadMapRailBottom]"], true, never>;
5602
5765
  }
5766
+ /** @atelier dans=cad-map */
5603
5767
  declare class CadMapRailItemComponent {
5604
5768
  readonly mapCmp: CadMapComponent | null;
5605
5769
  readonly icon: _angular_core.InputSignal<string>;
@@ -5619,6 +5783,7 @@ declare class CadMapRailItemComponent {
5619
5783
  * Panneau accolé au rail : <cad-map-panel id="carto" header="Cartographie" [width]="300" side="left" [(open)]>
5620
5784
  * <cad-map-section header="Fonds de carte" expanded><cad-map-basemaps/></cad-map-section>
5621
5785
  * </cad-map-panel>
5786
+ * @atelier icone=panel-right dans=cad-map
5622
5787
  */
5623
5788
  declare class CadMapPanelComponent {
5624
5789
  private readonly mapCmp;
@@ -5640,6 +5805,7 @@ declare class CadMapPanelComponent {
5640
5805
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<CadMapPanelComponent, "cad-map-panel", never, { "id": { "alias": "id"; "required": false; "isSignal": true; }; "header": { "alias": "header"; "required": false; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "side": { "alias": "side"; "required": false; "isSignal": true; }; "width": { "alias": "width"; "required": false; "isSignal": true; }; "open": { "alias": "open"; "required": false; "isSignal": true; }; "closable": { "alias": "closable"; "required": false; "isSignal": true; }; }, { "open": "openChange"; "opened": "opened"; "closed": "closed"; }, never, ["[cadMapPanelActions]", "*", "[cadMapPanelFooter]"], true, never>;
5641
5806
  }
5642
5807
  /** Section repliable d'un panneau : <cad-map-section header="Gares" [expanded]="true" icon="server"> contenu libre </cad-map-section> */
5808
+ /** @atelier dans=cad-map */
5643
5809
  declare class CadMapSectionComponent {
5644
5810
  readonly header: _angular_core.InputSignal<string>;
5645
5811
  readonly icon: _angular_core.InputSignal<string>;
@@ -5660,6 +5826,7 @@ declare function cadMapLayerOf(map: CadMapComponent | null, id: string): CadMapL
5660
5826
  /**
5661
5827
  * Sélecteur de fonds en vignettes + transparence + overlays :
5662
5828
  * <cad-map-basemaps [ids]="['ign-plan','ign-ortho']" [columns]="2" showOpacity showOverlays/>
5829
+ * @atelier icone=globe dans=cad-map
5663
5830
  */
5664
5831
  declare class CadMapBasemapsComponent {
5665
5832
  protected thumbUrl(b: {
@@ -5692,6 +5859,7 @@ declare class CadMapBasemapsComponent {
5692
5859
  * Ligne « couche » : picto dérivé de la symbologie + case de visibilité + label + opacité + zoom.
5693
5860
  * <cad-map-layer-toggle layer="ouvrages" showOpacity showLegend zoomTo/>
5694
5861
  */
5862
+ /** @atelier dans=cad-map */
5695
5863
  declare class CadMapLayerToggleComponent {
5696
5864
  readonly mapCmp: CadMapComponent | null;
5697
5865
  readonly layer: _angular_core.InputSignal<string>;
@@ -5718,7 +5886,10 @@ declare class CadMapLayerToggleComponent {
5718
5886
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<CadMapLayerToggleComponent, never>;
5719
5887
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<CadMapLayerToggleComponent, "cad-map-layer-toggle", never, { "layer": { "alias": "layer"; "required": true; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "showOpacity": { "alias": "showOpacity"; "required": false; "isSignal": true; }; "showLegend": { "alias": "showLegend"; "required": false; "isSignal": true; }; "zoomTo": { "alias": "zoomTo"; "required": false; "isSignal": true; }; }, { "visibleChange": "visibleChange"; }, never, never, true, never>;
5720
5888
  }
5721
- /** Groupe de couches avec case parent tri-état : <cad-map-layer-group header="Risques" [layers]="['ppri','argiles']" showOpacity/> */
5889
+ /**
5890
+ * Groupe de couches avec case parent tri-état : <cad-map-layer-group header="Risques" [layers]="['ppri','argiles']" showOpacity/>
5891
+ * @atelier icone=layers dans=cad-map
5892
+ */
5722
5893
  declare class CadMapLayerGroupComponent {
5723
5894
  readonly mapCmp: CadMapComponent | null;
5724
5895
  readonly header: _angular_core.InputSignal<string>;
@@ -5801,6 +5972,7 @@ interface CadMapMenuConfig {
5801
5972
  /**
5802
5973
  * Menu de carte généré depuis une config JSON (rail + panneaux + sections + blocs), posé dans <cad-map> :
5803
5974
  * <cad-map-menu [config]="cfg" [templates]="{ meteo: tplMeteo }" (action)="…"/>
5975
+ * @atelier icone=menu dans=cad-map
5804
5976
  */
5805
5977
  declare class CadMapMenuComponent {
5806
5978
  readonly config: _angular_core.InputSignal<CadMapMenuConfig>;
@@ -5907,6 +6079,8 @@ declare function cadJsonErrorPos(err: unknown, src: string): {
5907
6079
  /**
5908
6080
  * <cad-json-editor [(value)]="obj" mode="object" height="320px" [validator]="cadValidateGeoJSON" (invalid)="…"/>
5909
6081
  * CVA string|object : textarea + numéros de ligne + coloration + validation en direct (JSON puis `validator`) + Formater/Compacter/Copier/Importer/Télécharger.
6082
+ * @atelier icone=braces
6083
+ * @atelier-exemple value {"ouvrage":"Pont de Sèvres","etat":"Bon","inspection":{"date":"2026-03-12","agent":"SZU"},"geometrie":{"lat":48.8264,"lng":2.2275}}
5910
6084
  */
5911
6085
  declare class CadJsonEditorComponent extends CadValueAccessor<string | object> {
5912
6086
  private readonly san;
@@ -5952,6 +6126,7 @@ type CadGeoJSON = FeatureCollection | Feature | Geometry;
5952
6126
  * <cad-map-card [(value)]="geojson" header="Emprise" height="320px" editable showStats/>
5953
6127
  * ControlValueAccessor GeoJSON en carte « flip » : recto = carte (couche auto, fit, dessin optionnel), verso = éditeur JSON validé.
5954
6128
  * `mode="string"` : la valeur est la chaîne JSON. Utilisable dans <cad-field plain>.
6129
+ * @atelier icone=map-pinned
5955
6130
  */
5956
6131
  declare class CadMapCardComponent extends CadValueAccessor<CadGeoJSON | string> {
5957
6132
  readonly header: _angular_core.InputSignal<string>;
@@ -6183,6 +6358,8 @@ declare class CadOrgNodeDirective {
6183
6358
  * <cad-listbox [(value)]="v" [options]="opts" optionLabel="name" optionValue="id" [multiple] checkbox filter listHeight="240px" selectAll/>
6184
6359
  * Liste de sélection toujours visible (remplace p-listbox). CVA<V | V[]>. Clavier ↑↓ Home End PageUp/Down Espace/Entrée, typeahead,
6185
6360
  * Shift+clic = plage, Ctrl/⌘+clic (metaKeySelection) = bascule sans désélectionner en multiple.
6361
+ * @atelier icone=list
6362
+ * @atelier-exemple options [{"label":"Ouvrage d'art"},{"label":"Chaussée"},{"label":"Signalisation"},{"label":"Éclairage"}]
6186
6363
  */
6187
6364
  declare class CadListboxComponent<T = unknown, V = unknown> extends CadValueAccessor<V | V[]> {
6188
6365
  readonly options: _angular_core.InputSignal<T[]>;
@@ -6257,6 +6434,9 @@ declare class CadListboxComponent<T = unknown, V = unknown> extends CadValueAcce
6257
6434
  /**
6258
6435
  * <cad-orderlist [(value)]="items" optionLabel="name" header="Colonnes" controls="side" dragHandle filter listHeight="260px" (reorder)="…"/>
6259
6436
  * Liste réordonnable (drag CDK vertical + boutons ↑ ↓ ⤒ ⤓, sélection multiple Ctrl/Shift). CVA<T[]> : la valeur = NOUVEAU tableau réordonné.
6437
+ * @atelier icone=list-ordered
6438
+ * @atelier-exemple value [{"label":"1. Inspection visuelle"},{"label":"2. Relevé des désordres"},{"label":"3. Essais matériaux"},{"label":"4. Rapport"}]
6439
+ * @atelier-exemple header "Étapes"
6260
6440
  */
6261
6441
  declare class CadOrderlistComponent<T = unknown> extends CadValueAccessor<T[]> {
6262
6442
  readonly optionLabel: _angular_core.InputSignal<string>;
@@ -6310,6 +6490,8 @@ type Side = 'source' | 'target';
6310
6490
  * <cad-picklist [(value)]="selected" [options]="tous" optionLabel="name" sourceHeader="Disponibles" targetHeader="Sélectionnés" filter showTargetControls/>
6311
6491
  * Deux listes reliées par des boutons → ← ⇒ ⇐ + drag & drop entre listes (CDK). CVA<T[]> = cible ; source = options − cible.
6312
6492
  * Responsive : sous 640 px de large (conteneur), les listes s'empilent et les boutons passent à l'horizontale.
6493
+ * @atelier icone=arrow-right-left
6494
+ * @atelier-exemple options [{"label":"Pont de Sèvres"},{"label":"Viaduc de Meudon"},{"label":"Passerelle Rive Sud"},{"label":"Tunnel des Acacias"}]
6313
6495
  */
6314
6496
  declare class CadPicklistComponent<T = unknown> extends CadValueAccessor<T[]> {
6315
6497
  private readonly destroyRef;
@@ -6415,6 +6597,8 @@ interface Flat<T> {
6415
6597
  * <cad-orgchart [value]="nodes" labelField="name" sublabelField="role" avatarField="initials" collapsible zoomable selectionMode="single" [(selection)]="sel"/>
6416
6598
  * Organigramme maison (grille CSS + connecteurs), template de nœud `cadOrgNode`, orientation vertical/horizontal, mode compact (liste indentée) sous 640 px
6417
6599
  * ou forcé, zoom molette/± + drag pour panner. Clavier ←→↑↓ (nœuds), Entrée sélectionne, +/− déplie/replie.
6600
+ * @atelier icone=git-fork
6601
+ * @atelier-exemple value [{"data":{"label":"Direction technique"},"expanded":true,"children":[{"data":{"label":"Bureau d'études"}},{"data":{"label":"Travaux"}},{"data":{"label":"Maintenance"}}]}]
6418
6602
  */
6419
6603
  declare class CadOrgchartComponent<T = unknown> {
6420
6604
  private readonly destroyRef;
@@ -6529,6 +6713,7 @@ declare function cadFormatSize(b: number): string;
6529
6713
  * <cad-upload url="/api/upload" multiple accept="image/*,.pdf" [maxFileSize]="5e6" [maxFiles]="5" auto (upload)="…"/>
6530
6714
  * Modes : `advanced` (zone de dépôt + liste + boutons), `dropzone` (zone seule, liste), `basic` (un bouton).
6531
6715
  * Envoi : `url` (HttpClient — `provideHttpClient()` requis dans l'app) OU `customUpload` + `(uploadHandler)` OU `selectOnly` (l'app lit `files()`).
6716
+ * @atelier icone=upload-cloud
6532
6717
  */
6533
6718
  declare class CadUploadComponent {
6534
6719
  private readonly http;
@@ -6622,6 +6807,9 @@ interface CadChartClickEvent {
6622
6807
  * <cad-chart type="bar" [data]="data" [options]="options" height="280px" (chartClick)="…"/>
6623
6808
  * Wrapper Chart.js 4 (chargé à la demande) : thème automatique depuis les tokens (police, grille, tooltip) et re-rendu au changement `.theme-dark`,
6624
6809
  * palette par défaut sur les datasets sans couleur, ResizeObserver, `getChart()/update()/toBase64Image()`, canvas `role="img"` + table accessible optionnelle.
6810
+ * @atelier icone=chart-bar
6811
+ * @atelier-exemple type "bar"
6812
+ * @atelier-exemple data {"labels":["Jan","Fév","Mar","Avr","Mai"],"datasets":[{"label":"Relevés","data":[12,19,8,15,11]}]}
6625
6813
  */
6626
6814
  declare class CadChartComponent {
6627
6815
  private readonly hostEl;
@@ -7372,6 +7560,103 @@ declare function cadProjeterClavier(kind: CadEditKind, base: CadEditBase, jours:
7372
7560
  end: Date;
7373
7561
  };
7374
7562
 
7563
+ /**
7564
+ * Mise en page du scheduler — logique PURE, sans DOM, donc testable seule.
7565
+ *
7566
+ * Le scheduler n'a pas de projection à lui : un geste horizontal y est exactement la
7567
+ * projection HORAIRE du calendrier tournée d'un quart de tour (échelle heure), ou la
7568
+ * projection de MOIS sans rangées (échelle jour). On réutilise `cadProjeterEdition` et
7569
+ * `cadProjeterMois` en réinterprétant leur géométrie — une seule logique de placement à
7570
+ * éprouver, pas trois.
7571
+ *
7572
+ * Ce fichier ne porte donc que ce qui est PROPRE au scheduler : l'empilement en voies,
7573
+ * la partition planifié / non planifié, et le découpage d'une barre à la fenêtre.
7574
+ */
7575
+
7576
+ interface CadLaneSpan {
7577
+ start: Date;
7578
+ end: Date;
7579
+ }
7580
+ /**
7581
+ * Empilement des chevauchements : balayage, première voie libre.
7582
+ *
7583
+ * Les voies sont attribuées DANS L'ORDRE D'ENTRÉE trié par début (puis fin) ; le résultat
7584
+ * est aligné sur l'ordre d'entrée, pas sur l'ordre de balayage — l'appelant garde ses index.
7585
+ * Deux barres qui se touchent bord à bord (end === start) partagent une voie : une réunion
7586
+ * qui finit à 10 h et une qui commence à 10 h ne se chevauchent pas.
7587
+ */
7588
+ declare function cadPackLanes(items: readonly CadLaneSpan[]): {
7589
+ lanes: number[];
7590
+ count: number;
7591
+ };
7592
+ /**
7593
+ * Partition planifié / non planifié — LA règle du document commun : une tâche que la vue ne
7594
+ * sait pas placer part dans sa zone « non planifié » avec un compteur, jamais dans le silence.
7595
+ * Ici, placer exige un début, une fin ET au moins une affectation (les lignes SONT des
7596
+ * ressources : sans affectation, aucune ligne ne peut l'accueillir).
7597
+ */
7598
+ declare function cadSchedulerPartition(tasks: readonly CadPlannedTask[]): {
7599
+ posables: CadPlannedTask[];
7600
+ nonPlanifiees: CadPlannedTask[];
7601
+ };
7602
+ interface CadFenetreSpan {
7603
+ start: Date;
7604
+ end: Date;
7605
+ /** La barre continue avant / après la fenêtre — bord en pointillé, jamais coupé en silence. */
7606
+ continueAvant: boolean;
7607
+ continueApres: boolean;
7608
+ }
7609
+ /** Découpe une plage à la fenêtre. `null` si elle est entièrement dehors. */
7610
+ declare function cadClipFenetre(start: Date, end: Date, f0: Date, f1: Date): CadFenetreSpan | null;
7611
+
7612
+ /**
7613
+ * Mise en page du gantt — logique PURE, sans DOM, donc testable seule.
7614
+ *
7615
+ * Deux responsabilités, et rien d'autre : quelles rangées sont VISIBLES (l'arbre replié), et
7616
+ * par où passe une flèche de dépendance. L'axe de temps vient de planning.axis, la hiérarchie
7617
+ * et les dates roulées de planning.model — le gantt n'invente aucune donnée.
7618
+ */
7619
+
7620
+ interface CadGanttRow {
7621
+ task: CadPlannedTask;
7622
+ level: number;
7623
+ }
7624
+ /**
7625
+ * Rangées visibles, dans l'ordre hiérarchique : on descend depuis les racines et on saute la
7626
+ * descendance des nœuds ABSENTS de `expanded`. Une tâche non plaçable (ni dates propres ni
7627
+ * dates roulées) ne produit pas de rangée : elle appartient à la zone « non planifié ».
7628
+ */
7629
+ declare function cadGanttRows(tasks: readonly CadPlannedTask[], roots: readonly string[], expanded: ReadonlySet<string>): CadGanttRow[];
7630
+ /** Ancre d'une barre pour le routage : ses deux bouts et son centre vertical, en pixels. */
7631
+ interface CadLienAncre {
7632
+ x1: number;
7633
+ x2: number;
7634
+ y: number;
7635
+ }
7636
+ interface CadLienTrace {
7637
+ /** Chemin SVG orthogonal. */
7638
+ d: string;
7639
+ /** Pointe de flèche : sommet, et sens d'entrée ('right' = elle pointe vers la droite). */
7640
+ fleche: {
7641
+ x: number;
7642
+ y: number;
7643
+ sens: 'right' | 'left';
7644
+ };
7645
+ }
7646
+ /**
7647
+ * Routage orthogonal d'un lien, 3 segments — 5 quand l'entrée est à contre-sens.
7648
+ *
7649
+ * Les conventions MS Project portent tout : le type dit de quel BOUT on sort (F = fin, S =
7650
+ * début) et par quel bout on entre. On sort d'une longueur de garde `g`, on descend, on entre.
7651
+ * Le chemin direct n'est licite que si l'approche se fait DU BON CÔTÉ (par la gauche pour une
7652
+ * entrée sur un début, par la droite pour une entrée sur une fin) — sinon la flèche
7653
+ * traverserait la barre qu'elle vise. À contre-sens, on passe par le bord de la rangée cible.
7654
+ * L'évitement d'obstacles est EXCLU (acté le 21/08) : un lien peut croiser une barre tierce.
7655
+ */
7656
+ declare function cadRouterLien(type: CadPlanLinkType, a: CadLienAncre, b: CadLienAncre, g?: number, demiRangee?: number): CadLienTrace;
7657
+ /** Points du polygone de la pointe, prêt pour l'attribut `points`. */
7658
+ declare function cadPointeFleche(f: CadLienTrace['fleche'], taille?: number): string;
7659
+
7375
7660
  /** Contenu d'une carte : `<ng-template cadTaskCard let-task let-bucket="bucket">`. */
7376
7661
  declare class CadTaskCardDirective {
7377
7662
  readonly tpl: TemplateRef<any>;
@@ -7442,6 +7727,8 @@ interface Column {
7442
7727
  *
7443
7728
  * Clavier : Entrée / Espace ouvrent la tâche ; Ctrl (ou Cmd) + flèches la déplacent — gauche et
7444
7729
  * droite changent de colonne, haut et bas changent de rang. Chaque déplacement est annoncé.
7730
+ * @atelier icone=kanban
7731
+ * @atelier-exemple plan {"buckets":[{"id":"afaire","label":"À faire","wipLimit":4},{"id":"encours","label":"En cours","wipLimit":3},{"id":"fait","label":"Fait"}],"tasks":[{"id":"t1","label":"Inspection du pont","bucket":"afaire"},{"id":"t2","label":"Rapport d'étude","bucket":"afaire"},{"id":"t3","label":"Levé topographique","bucket":"encours"},{"id":"t4","label":"Diagnostic béton","bucket":"fait"}]}
7445
7732
  */
7446
7733
  declare class CadTaskboardComponent {
7447
7734
  /** Document de planification brut ; il est normalisé en interne et jamais muté. */
@@ -7554,6 +7841,9 @@ interface CadCalendarDateEvent {
7554
7841
  *
7555
7842
  * LE COMPOSANT N'ÉCRIT JAMAIS : il émet `eventClick`, `dateClick`, `rangeChange`. Masquer un
7556
7843
  * agenda est en revanche un état de PRÉSENTATION, donc un `model()` qu'il porte lui-même.
7844
+ * @atelier icone=calendar
7845
+ * @atelier-exemple plan {"tasks":[{"id":"v1","label":"Visite d'ouvrage","start":"@aujourdhuiT09:00","end":"@aujourdhuiT10:30"},{"id":"v2","label":"Relevé terrain","start":"@aujourdhui+1T14:00","end":"@aujourdhui+1T16:00"},{"id":"v3","label":"Réunion de service","start":"@aujourdhui+2","allDay":true},{"id":"v4","label":"Contrôle technique","start":"@aujourdhui-1T11:00","end":"@aujourdhui-1T12:00"}]}
7846
+ * @atelier-exemple view "week"
7557
7847
  */
7558
7848
  declare class CadCalendarComponent {
7559
7849
  protected readonly Math: Math;
@@ -7731,6 +8021,364 @@ declare class CadCalendarComponent {
7731
8021
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<CadCalendarComponent, "cad-calendar", never, { "plan": { "alias": "plan"; "required": false; "isSignal": true; }; "sources": { "alias": "sources"; "required": false; "isSignal": true; }; "hidden": { "alias": "hidden"; "required": false; "isSignal": true; }; "view": { "alias": "view"; "required": false; "isSignal": true; }; "date": { "alias": "date"; "required": false; "isSignal": true; }; "firstDay": { "alias": "firstDay"; "required": false; "isSignal": true; }; "dayStart": { "alias": "dayStart"; "required": false; "isSignal": true; }; "dayEnd": { "alias": "dayEnd"; "required": false; "isSignal": true; }; "hourHeight": { "alias": "hourHeight"; "required": false; "isSignal": true; }; "maxPerDay": { "alias": "maxPerDay"; "required": false; "isSignal": true; }; "workCalendar": { "alias": "workCalendar"; "required": false; "isSignal": true; }; "today": { "alias": "today"; "required": false; "isSignal": true; }; "locale": { "alias": "locale"; "required": false; "isSignal": true; }; "emptyText": { "alias": "emptyText"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; "showNow": { "alias": "showNow"; "required": false; "isSignal": true; }; "editable": { "alias": "editable"; "required": false; "isSignal": true; }; "snap": { "alias": "snap"; "required": false; "isSignal": true; }; }, { "hidden": "hiddenChange"; "view": "viewChange"; "date": "dateChange"; "eventClick": "eventClick"; "dateClick": "dateClick"; "rangeChange": "rangeChange"; "eventMove": "eventMove"; "eventResize": "eventResize"; "eventCreate": "eventCreate"; }, never, never, true, never>;
7732
8022
  }
7733
8023
 
8024
+ type CadSchedulerScale = 'day' | 'week' | 'month';
8025
+ type CadSchedulerMode = 'timeline' | 'list' | 'auto';
8026
+ interface CadSchedulerEventEvent {
8027
+ occurrence: CadOccurrence;
8028
+ originalEvent: Event;
8029
+ }
8030
+ /** Intention d'écriture. Le composant ne l'applique pas : il la propose. */
8031
+ interface CadSchedulerChangeEvent {
8032
+ occurrence: CadOccurrence;
8033
+ start: Date;
8034
+ end: Date;
8035
+ }
8036
+ /** Réaffectation : SEULE l'affectation saisie change de ligne, les dates ne bougent pas. */
8037
+ interface CadSchedulerAssignEvent {
8038
+ occurrence: CadOccurrence;
8039
+ assignmentIndex: number;
8040
+ from: string;
8041
+ to: string;
8042
+ }
8043
+ interface CadSchedulerCreateEvent {
8044
+ resource: string;
8045
+ start: Date;
8046
+ end: Date;
8047
+ }
8048
+ /** Une tâche de la zone « non planifié » déposée sur une ligne. */
8049
+ interface CadSchedulerScheduleEvent {
8050
+ task: CadPlannedTask;
8051
+ resource: string;
8052
+ start: Date;
8053
+ end: Date;
8054
+ }
8055
+ interface Rangee {
8056
+ type: 'groupe' | 'ligne';
8057
+ res: CadPlanResource;
8058
+ }
8059
+ interface Barre {
8060
+ o: CadOccurrence;
8061
+ ai: number;
8062
+ x: number;
8063
+ w: number;
8064
+ voie: number;
8065
+ continueAvant: boolean;
8066
+ continueApres: boolean;
8067
+ }
8068
+ /**
8069
+ * `<cad-scheduler [plan]="plan" scale="week" editable/>`
8070
+ *
8071
+ * LES LIGNES SONT DES RESSOURCES — c'est ce qui le distingue de `cad-calendar`, dont la
8072
+ * grille est le temps. On répond ici à « qui est libre jeudi ? ». Même document JSON.
8073
+ *
8074
+ * MULTI-RESSOURCE = 'each' (arbitré sur maquette le 24/08/2026) : une tâche affectée à N
8075
+ * ressources dessine UNE BARRE PAR LIGNE (⧉). Un déplacement horizontal bouge la tâche —
8076
+ * donc toutes ses barres ; un déplacement vertical ne réaffecte que l'affectation saisie.
8077
+ * C'est le seul rendu qui ne mente pas quand les lignes SONT les ressources.
8078
+ *
8079
+ * LES CHEVAUCHEMENTS S'EMPILENT en voies (balayage, première voie libre) : deux barres ne se
8080
+ * recouvrent jamais, la ligne grandit. La hauteur d'une ligne est donc une CONSÉQUENCE de la
8081
+ * donnée, pas un réglage.
8082
+ *
8083
+ * LE COMPOSANT N'ÉCRIT JAMAIS : il émet eventMove / eventResize / eventAssign / eventCreate /
8084
+ * eventSchedule et garde le geste vivant à l'écran (correctif optimiste, patron du taskboard).
8085
+ * Une tâche sans dates ou sans affectation part dans la zone « non planifié » avec un
8086
+ * compteur — jamais dans le silence — et se pose au glisser.
8087
+ * @atelier icone=chart-no-axes-gantt
8088
+ * @atelier-exemple plan {"resources":[{"id":"claire","label":"Claire Fontaine","color":"#2f6feb"},{"id":"marc","label":"Marc Delorme","color":"#a371f7"}],"tasks":[{"id":"t1","label":"Diagnostic OA 214","start":"@aujourdhuiT09:00","end":"@aujourdhui+2T17:00","assignments":[{"resource":"claire"}]},{"id":"t2","label":"Relevés terrain","start":"@aujourdhui+1T09:00","end":"@aujourdhui+3T12:00","assignments":[{"resource":"marc"}]},{"id":"t3","label":"Avis technique mur R27"}]}
8089
+ */
8090
+ declare class CadSchedulerComponent {
8091
+ private readonly bp;
8092
+ private readonly hote;
8093
+ readonly plan: _angular_core.InputSignal<CadPlan | null>;
8094
+ readonly mode: _angular_core.InputSignal<CadSchedulerMode>;
8095
+ readonly scale: _angular_core.ModelSignal<CadSchedulerScale>;
8096
+ /** Date d'ancrage : le jour, la semaine ou le mois affiché. */
8097
+ readonly date: _angular_core.ModelSignal<Date>;
8098
+ readonly firstDay: _angular_core.InputSignal<0 | 1>;
8099
+ /** Plage horaire de l'échelle jour, en heures. */
8100
+ readonly dayStart: _angular_core.InputSignal<number>;
8101
+ readonly dayEnd: _angular_core.InputSignal<number>;
8102
+ /** Largeur d'une graduation en pixels. null = défaut selon l'échelle (64 / 76 / 27). */
8103
+ readonly tickWidth: _angular_core.InputSignal<number | null>;
8104
+ /** Aimantage à l'échelle jour, en minutes. Les échelles semaine et mois aimantent au JOUR. */
8105
+ readonly snap: _angular_core.InputSignal<number>;
8106
+ readonly workCalendar: _angular_core.InputSignal<CadWorkCalendar | null>;
8107
+ readonly today: _angular_core.InputSignal<Date | null>;
8108
+ readonly locale: _angular_core.InputSignal<string>;
8109
+ readonly emptyText: _angular_core.InputSignal<string>;
8110
+ readonly ariaLabel: _angular_core.InputSignal<string>;
8111
+ readonly showNow: _angular_core.InputSignalWithTransform<boolean, unknown>;
8112
+ readonly showUnplanned: _angular_core.InputSignalWithTransform<boolean, unknown>;
8113
+ readonly editable: _angular_core.InputSignalWithTransform<boolean, unknown>;
8114
+ readonly eventClick: _angular_core.OutputEmitterRef<CadSchedulerEventEvent>;
8115
+ readonly eventMove: _angular_core.OutputEmitterRef<CadSchedulerChangeEvent>;
8116
+ readonly eventResize: _angular_core.OutputEmitterRef<CadSchedulerChangeEvent>;
8117
+ readonly eventAssign: _angular_core.OutputEmitterRef<CadSchedulerAssignEvent>;
8118
+ readonly eventCreate: _angular_core.OutputEmitterRef<CadSchedulerCreateEvent>;
8119
+ readonly eventSchedule: _angular_core.OutputEmitterRef<CadSchedulerScheduleEvent>;
8120
+ /** La fenêtre affichée a changé : l'hôte peut aller chercher les données qui manquent. */
8121
+ readonly rangeChange: _angular_core.OutputEmitterRef<{
8122
+ start: Date;
8123
+ end: Date;
8124
+ }>;
8125
+ /** `auto` : liste par ressource sous le seuil. Une grille de 14 jours à 390 px ne montre rien. */
8126
+ protected readonly modeEffectif: _angular_core.Signal<"list" | "timeline">;
8127
+ private readonly normalise;
8128
+ private readonly calendrier;
8129
+ /** Anomalies de normalisation et de dépliage — jamais tues : l'hôte peut les montrer. */
8130
+ readonly issues: _angular_core.Signal<(_cadriciel_ui.CadPlanIssue | _cadriciel_ui.CadRecurrenceIssue)[]>;
8131
+ protected readonly unite: _angular_core.Signal<number>;
8132
+ /** Fenêtre affichée : 1 jour en heures, 14 jours, ou 6 semaines pleines autour du mois. */
8133
+ protected readonly fenetre: _angular_core.Signal<{
8134
+ start: Date;
8135
+ end: Date;
8136
+ }>;
8137
+ private readonly tete;
8138
+ protected readonly axe: _angular_core.Signal<CadTimeAxis>;
8139
+ protected readonly enTete: _angular_core.Signal<{
8140
+ hautes: {
8141
+ label: string;
8142
+ w: number;
8143
+ }[];
8144
+ basses: {
8145
+ label: string;
8146
+ sub: string;
8147
+ off: boolean;
8148
+ today: boolean;
8149
+ }[];
8150
+ }>;
8151
+ /**
8152
+ * Rangées : les ressources dans leur ordre de déclaration ; celles que d'autres référencent
8153
+ * comme `parent` deviennent des bandes de groupe. Un groupe ne porte pas de barres — un
8154
+ * congé n'est pas un jour férié, une équipe n'est pas une ressource de travail.
8155
+ */
8156
+ protected readonly rangees: _angular_core.Signal<Rangee[]>;
8157
+ /**
8158
+ * CORRECTIF OPTIMISTE — patron de cad-taskboard et cad-calendar : le composant n'écrit
8159
+ * jamais dans le document, mais garde les bornes, réaffectations et planifications
8160
+ * PROPOSÉES, attachées au `plan` d'origine, et les abandonne dès qu'un nouveau plan arrive.
8161
+ */
8162
+ private readonly patch;
8163
+ private patchCourant;
8164
+ private readonly partition;
8165
+ protected readonly nonPlanifiees: _angular_core.Signal<CadPlannedTask[]>;
8166
+ private readonly occurrences;
8167
+ /** Barres par ligne : une par AFFECTATION (multi-ressource 'each'), empilées en voies. */
8168
+ private readonly rendu;
8169
+ protected barresDe(res: string): Barre[];
8170
+ protected hauteurDe(res: string): number;
8171
+ /**
8172
+ * Cellules de fond par ligne : fermé global (week-end, férié) ou pour CETTE ressource.
8173
+ * MÉMOÏSÉ en un seul computed — une méthode appelée du template serait recalculée à
8174
+ * chaque cycle de détection de changements, pour un résultat identique.
8175
+ */
8176
+ private readonly cellules;
8177
+ protected cellulesDe(res: string): {
8178
+ off: boolean;
8179
+ ex: boolean;
8180
+ }[];
8181
+ protected readonly marqueurs: _angular_core.Signal<{
8182
+ x: number;
8183
+ label: string;
8184
+ }[]>;
8185
+ protected readonly ligneNow: _angular_core.Signal<number | null>;
8186
+ protected readonly survol: _angular_core.WritableSignal<string | null>;
8187
+ protected readonly cible: _angular_core.WritableSignal<string | null>;
8188
+ protected readonly fantome: _angular_core.WritableSignal<{
8189
+ res: string;
8190
+ x: number;
8191
+ w: number;
8192
+ texte: string;
8193
+ } | null>;
8194
+ protected readonly annonce: _angular_core.WritableSignal<string>;
8195
+ protected couleur(o: CadOccurrence): string;
8196
+ protected etp(c: number): string;
8197
+ protected heure(d: Date): string;
8198
+ private jour;
8199
+ protected periodeListe(o: CadOccurrence): string;
8200
+ protected titre(o: CadOccurrence): string;
8201
+ protected motifNonPlanifie(t: CadPlannedTask): string;
8202
+ /** Une occurrence de SÉRIE ou une tâche verrouillée n'est pas manipulable — on le MONTRE. */
8203
+ protected manipulable(o: CadOccurrence): boolean;
8204
+ protected motifVerrou(o: CadOccurrence): string;
8205
+ /**
8206
+ * Projection d'un geste HORIZONTAL — aucune logique neuve : à l'échelle jour c'est la
8207
+ * projection horaire du calendrier tournée d'un quart de tour (dx joue le rôle de dy,
8208
+ * la largeur de graduation celui de la hauteur d'heure) ; aux échelles semaine et mois
8209
+ * c'est la projection de mois sans rangées (des JOURS entiers, l'heure ne bouge pas).
8210
+ */
8211
+ private projeter;
8212
+ private poserBornes;
8213
+ private lignesEcran;
8214
+ /** Le clic qui SUIT un glisser est celui du navigateur, pas celui de l'utilisateur. */
8215
+ private finGeste;
8216
+ /**
8217
+ * Geste au pointeur sur une barre. Patron de cad-calendar : écoute sur le DOCUMENT.
8218
+ * Horizontal = les dates (la tâche entière, donc toutes ses barres) ; vertical = la SEULE
8219
+ * affectation saisie change de ligne, dates intactes. Les deux ne se combinent pas dans un
8220
+ * même geste : une intention est atomique, l'hôte n'a jamais à en deviner la moitié.
8221
+ */
8222
+ protected geste(kind: CadEditKind, b: Barre, origine: string, ev: PointerEvent): void;
8223
+ /** Création par glisser sur une plage libre d'une ligne. Un clic sec produit un pas. */
8224
+ protected creer(res: CadPlanResource, ev: PointerEvent, zone: HTMLElement): void;
8225
+ /** Glisser d'un chip « non planifié » vers une ligne. */
8226
+ protected prendreChip(t: CadPlannedTask, ev: PointerEvent): void;
8227
+ /**
8228
+ * Le CLAVIER passe par la MÊME projection que le pointeur. Ctrl/Cmd + ←/→ déplacent d'un
8229
+ * pas (un jour, ou l'aimantage à l'échelle jour), Maj + ←/→ redimensionnent par la fin,
8230
+ * Ctrl/Cmd + ↑/↓ réaffectent à la ligne voisine.
8231
+ */
8232
+ protected clavier(b: Barre, origine: string, e: KeyboardEvent): void;
8233
+ private nomDe;
8234
+ /** L'annonce dit OÙ la tâche atterrit, pas seulement qu'elle a bougé. */
8235
+ private annoncer;
8236
+ protected clicEvenement(occurrence: CadOccurrence, originalEvent: Event): void;
8237
+ constructor();
8238
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<CadSchedulerComponent, never>;
8239
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<CadSchedulerComponent, "cad-scheduler", never, { "plan": { "alias": "plan"; "required": false; "isSignal": true; }; "mode": { "alias": "mode"; "required": false; "isSignal": true; }; "scale": { "alias": "scale"; "required": false; "isSignal": true; }; "date": { "alias": "date"; "required": false; "isSignal": true; }; "firstDay": { "alias": "firstDay"; "required": false; "isSignal": true; }; "dayStart": { "alias": "dayStart"; "required": false; "isSignal": true; }; "dayEnd": { "alias": "dayEnd"; "required": false; "isSignal": true; }; "tickWidth": { "alias": "tickWidth"; "required": false; "isSignal": true; }; "snap": { "alias": "snap"; "required": false; "isSignal": true; }; "workCalendar": { "alias": "workCalendar"; "required": false; "isSignal": true; }; "today": { "alias": "today"; "required": false; "isSignal": true; }; "locale": { "alias": "locale"; "required": false; "isSignal": true; }; "emptyText": { "alias": "emptyText"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; "showNow": { "alias": "showNow"; "required": false; "isSignal": true; }; "showUnplanned": { "alias": "showUnplanned"; "required": false; "isSignal": true; }; "editable": { "alias": "editable"; "required": false; "isSignal": true; }; }, { "scale": "scaleChange"; "date": "dateChange"; "eventClick": "eventClick"; "eventMove": "eventMove"; "eventResize": "eventResize"; "eventAssign": "eventAssign"; "eventCreate": "eventCreate"; "eventSchedule": "eventSchedule"; "rangeChange": "rangeChange"; }, never, never, true, never>;
8240
+ }
8241
+
8242
+ type CadGanttScale = 'day' | 'week' | 'month';
8243
+ interface CadGanttTaskEvent {
8244
+ task: CadPlannedTask;
8245
+ originalEvent: Event;
8246
+ }
8247
+ interface LigneTable {
8248
+ id: string;
8249
+ parent: string | null;
8250
+ label: string;
8251
+ debut: string;
8252
+ fin: string;
8253
+ duree: string;
8254
+ pct: string;
8255
+ [extra: string]: unknown;
8256
+ }
8257
+ /**
8258
+ * `<cad-gantt [plan]="plan" scale="week"/>` — VOLET 1 : affichage.
8259
+ *
8260
+ * LES LIGNES SONT DES TÂCHES, avec dépendances — on répond à « si ça glisse, qu'est-ce qui
8261
+ * tombe ? ». Même document JSON que le taskboard, le calendrier et le scheduler.
8262
+ *
8263
+ * LE VOLET GAUCHE EST `cad-table` EN MODE ARBRE — le même composant, pas une ressemblance
8264
+ * (acté le 21/08) : hiérarchie par `parentKey`, repli par `expandedNodeKeys`, sélection
8265
+ * simple. Le volet droit s'aligne sur lui en MESURANT (ResizeObserver) la hauteur réelle de
8266
+ * son en-tête et de ses rangées : un calcul serait faux au premier changement de densité.
8267
+ *
8268
+ * RIEN NE SE DÉPLACE ICI. L'écriture (déplacer, redimensionner, relier) est le lot 5 ; le
8269
+ * moteur CPM (chemin critique, marge) est le volet 2. Les barres récapitulatives portent des
8270
+ * dates ROULÉES depuis leurs enfants — jamais saisies. Une tâche sans dates part dans la zone
8271
+ * « non planifié », comptée, jamais dans le silence.
8272
+ *
8273
+ * LES LIENS suivent les conventions MS Project (FS/SS/FF/SF, décalage) : routage orthogonal
8274
+ * 3 segments, 5 à contre-sens, évitement d'obstacles exclu (acté 21/08). Un lien dont une
8275
+ * extrémité est repliée est MASQUÉ. Survoler une barre allume ses liens et ses voisines.
8276
+ * @atelier icone=milestone
8277
+ * @atelier-exemple plan {"tasks":[{"id":"p1","label":"Études"},{"id":"t1","parent":"p1","label":"Relevés","start":"@aujourdhui-7","end":"@aujourdhui-3","progress":1},{"id":"t2","parent":"p1","label":"Diagnostic","start":"@aujourdhui-2","end":"@aujourdhui+4","progress":0.4},{"id":"t3","label":"Rapport","start":"@aujourdhui+5","end":"@aujourdhui+9"},{"id":"j1","label":"Remise","start":"@aujourdhui+10","milestone":true}],"links":[{"from":"t1","to":"t2"},{"from":"t2","to":"t3"},{"from":"t3","to":"j1"}]}
8278
+ */
8279
+ declare class CadGanttComponent {
8280
+ private readonly hote;
8281
+ readonly plan: _angular_core.InputSignal<CadPlan | null>;
8282
+ readonly scale: _angular_core.ModelSignal<CadGanttScale>;
8283
+ /** Nœuds dépliés. `null` (défaut) = tout déplié. */
8284
+ readonly expandedKeys: _angular_core.ModelSignal<string[] | null>;
8285
+ readonly selectedKey: _angular_core.ModelSignal<string | null>;
8286
+ /** Largeur d'une graduation en pixels. null = défaut selon l'échelle (36 / 90 / 120). */
8287
+ readonly tickWidth: _angular_core.InputSignal<number | null>;
8288
+ readonly workCalendar: _angular_core.InputSignal<CadWorkCalendar | null>;
8289
+ readonly today: _angular_core.InputSignal<Date | null>;
8290
+ readonly locale: _angular_core.InputSignal<string>;
8291
+ readonly firstDay: _angular_core.InputSignal<0 | 1>;
8292
+ readonly emptyText: _angular_core.InputSignal<string>;
8293
+ readonly ariaLabel: _angular_core.InputSignal<string>;
8294
+ readonly showNow: _angular_core.InputSignalWithTransform<boolean, unknown>;
8295
+ readonly showUnplanned: _angular_core.InputSignalWithTransform<boolean, unknown>;
8296
+ /** Largeur de la colonne Tâche du volet gauche. */
8297
+ readonly taskColumnWidth: _angular_core.InputSignal<string>;
8298
+ readonly taskClick: _angular_core.OutputEmitterRef<CadGanttTaskEvent>;
8299
+ private readonly normalise;
8300
+ private readonly calendrier;
8301
+ /** Anomalies de normalisation — jamais tues : l'hôte peut les montrer. */
8302
+ readonly issues: _angular_core.Signal<_cadriciel_ui.CadPlanIssue[]>;
8303
+ protected readonly colTache: _angular_core.Signal<string>;
8304
+ protected readonly leftWidth: _angular_core.Signal<string>;
8305
+ protected readonly unite: _angular_core.Signal<number>;
8306
+ private readonly parents;
8307
+ protected readonly expansion: _angular_core.Signal<string[]>;
8308
+ protected basculer(key: unknown, ouvert: boolean): void;
8309
+ protected readonly rangeesVisibles: _angular_core.Signal<CadGanttRow[]>;
8310
+ protected readonly nonPlanifiees: _angular_core.Signal<CadPlannedTask[]>;
8311
+ private readonly bornes;
8312
+ private readonly tete;
8313
+ protected readonly axe: _angular_core.Signal<CadTimeAxis>;
8314
+ protected readonly enTete: _angular_core.Signal<{
8315
+ hautes: {
8316
+ label: string;
8317
+ w: number;
8318
+ }[];
8319
+ basses: {
8320
+ label: string;
8321
+ off: boolean;
8322
+ today: boolean;
8323
+ }[];
8324
+ }>;
8325
+ protected readonly colonnesFermees: _angular_core.Signal<{
8326
+ off: boolean;
8327
+ x: number;
8328
+ w: number;
8329
+ }[]>;
8330
+ /** Traits verticaux : chaque graduation quand elle est lisible, sinon les majeures seules. */
8331
+ protected readonly traits: _angular_core.Signal<number[]>;
8332
+ protected readonly marqueurs: _angular_core.Signal<{
8333
+ x: number;
8334
+ label: string;
8335
+ }[]>;
8336
+ protected readonly ligneNow: _angular_core.Signal<number | null>;
8337
+ protected readonly hdH: _angular_core.WritableSignal<number>;
8338
+ /** Géométrie PAR RANGÉE mesurée sur la vraie table : un libellé qui replie sur deux lignes
8339
+ * rend les rangées inégales — un pas uniforme ferait dériver toutes les barres suivantes. */
8340
+ private readonly mesures;
8341
+ protected readonly geo: _angular_core.Signal<{
8342
+ tops: number[];
8343
+ hauteurs: number[];
8344
+ total: number;
8345
+ }>;
8346
+ private readonly geometrie;
8347
+ protected readonly barres: _angular_core.Signal<{
8348
+ task: CadPlannedTask;
8349
+ genre: "barre" | "recap" | "jalon";
8350
+ x: number;
8351
+ w: number;
8352
+ y: number;
8353
+ titre: string;
8354
+ }[]>;
8355
+ protected readonly traces: _angular_core.Signal<{
8356
+ id: string;
8357
+ d: string;
8358
+ pointe: string;
8359
+ titre: string;
8360
+ from: string;
8361
+ to: string;
8362
+ }[]>;
8363
+ protected readonly chaud: _angular_core.WritableSignal<string | null>;
8364
+ protected readonly chauds: _angular_core.Signal<Set<string>>;
8365
+ protected readonly voisins: _angular_core.Signal<Set<string>>;
8366
+ protected readonly lignesTable: _angular_core.Signal<LigneTable[]>;
8367
+ protected surLigneTable(e: {
8368
+ row: LigneTable;
8369
+ event: Event;
8370
+ }): void;
8371
+ protected selectionner(t: CadPlannedTask, ev: Event): void;
8372
+ protected ouvrir(t: CadPlannedTask, ev: Event): void;
8373
+ private dateCourt;
8374
+ private duree;
8375
+ private titre;
8376
+ private titreLien;
8377
+ constructor();
8378
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<CadGanttComponent, never>;
8379
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<CadGanttComponent, "cad-gantt", never, { "plan": { "alias": "plan"; "required": false; "isSignal": true; }; "scale": { "alias": "scale"; "required": false; "isSignal": true; }; "expandedKeys": { "alias": "expandedKeys"; "required": false; "isSignal": true; }; "selectedKey": { "alias": "selectedKey"; "required": false; "isSignal": true; }; "tickWidth": { "alias": "tickWidth"; "required": false; "isSignal": true; }; "workCalendar": { "alias": "workCalendar"; "required": false; "isSignal": true; }; "today": { "alias": "today"; "required": false; "isSignal": true; }; "locale": { "alias": "locale"; "required": false; "isSignal": true; }; "firstDay": { "alias": "firstDay"; "required": false; "isSignal": true; }; "emptyText": { "alias": "emptyText"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; "showNow": { "alias": "showNow"; "required": false; "isSignal": true; }; "showUnplanned": { "alias": "showUnplanned"; "required": false; "isSignal": true; }; "taskColumnWidth": { "alias": "taskColumnWidth"; "required": false; "isSignal": true; }; }, { "scale": "scaleChange"; "expandedKeys": "expandedKeysChange"; "selectedKey": "selectedKeyChange"; "taskClick": "taskClick"; }, never, never, true, never>;
8380
+ }
8381
+
7734
8382
  /**
7735
8383
  * Le format d'une maquette de l'Atelier CadGrid.
7736
8384
  *
@@ -7763,6 +8411,8 @@ declare const ATELIER_BORNES: {
7763
8411
  readonly hMax: 100;
7764
8412
  readonly itemsMax: 200;
7765
8413
  readonly propsMax: 30;
8414
+ /** Enfants directs d'un conteneur. Le plafond GLOBAL reste `itemsMax`, enfants compris. */
8415
+ readonly enfantsMax: 30;
7766
8416
  };
7767
8417
  /** Un composant posé sur le plan. */
7768
8418
  interface AtelierItem {
@@ -7787,6 +8437,21 @@ interface AtelierItem {
7787
8437
  label?: string;
7788
8438
  };
7789
8439
  hideMobile?: boolean;
8440
+ /**
8441
+ * Enfants d'un CONTENEUR (panel, carte, fieldset…), projetés dans son emplacement par
8442
+ * défaut — arbitrage SZU 24/08.
8443
+ *
8444
+ * · Les enfants vivent en GRILLE DE FLUX (le patron du `cad-grid` homonyme) : leur
8445
+ * ORDRE fait loi, et leur `w` est une LARGEUR en colonnes (1–12 de la largeur du
8446
+ * conteneur) — quatre tags à `w=3` tiennent côte à côte. `x`, `y` et `h` restent
8447
+ * normalisés (0/0/1) : pas de placement absolu à l'intérieur, c'est ce qui évite le
8448
+ * glisser inter-grilles, là où les outils de maquette meurent.
8449
+ * · UN SEUL niveau en v1 : un enfant n'a jamais d'enfants (l'assainisseur écarte le
8450
+ * surplus, la pose le refuse). Élargir = décision, pas dérive.
8451
+ * · ⚠️ Frontless ne REND pas encore ce champ (grid.ts à enseigner — noté au Task
8452
+ * Board) : une maquette imbriquée exportée y montre le conteneur sans ses enfants.
8453
+ */
8454
+ children?: AtelierItem[];
7790
8455
  }
7791
8456
  interface AtelierLayout {
7792
8457
  version: 1;
@@ -7811,19 +8476,41 @@ declare function atelierPremierePlaceLibre(items: readonly AtelierItem[], w: num
7811
8476
  x: number;
7812
8477
  y: number;
7813
8478
  };
7814
- /** Pose un composant, à la première place libre ou à l'endroit demandé. */
8479
+ /** Nombre TOTAL de composants, enfants compris c'est lui que borne `itemsMax`. */
8480
+ declare function atelierCompter(layout: AtelierLayout): number;
8481
+ /**
8482
+ * Retrouve un composant OÙ QU'IL VIVE — au premier niveau ou dans un conteneur.
8483
+ * `parentId` dit d'où il vient : c'est ce qui permet à l'inspecteur de remonter.
8484
+ */
8485
+ declare function atelierTrouver(layout: AtelierLayout, id: string): {
8486
+ item: AtelierItem;
8487
+ parentId: string | null;
8488
+ } | null;
8489
+ /**
8490
+ * Pose un composant — sur le plan, ou DANS un conteneur (`dansId`).
8491
+ *
8492
+ * Dans un conteneur, l'enfant vit en FLUX : ajouté en fin, x/y/w/h normalisés (0/0/12/1),
8493
+ * l'ordre fait loi. Refus VISIBLE (id vide) si le conteneur n'existe pas, est lui-même un
8494
+ * enfant (un seul niveau en v1), ou si un plafond est atteint — jamais de troncature
8495
+ * silencieuse, même doctrine que le plafond global.
8496
+ */
7815
8497
  declare function atelierAjouter(layout: AtelierLayout, type: string, gabarit?: {
7816
8498
  w?: number;
7817
8499
  h?: number;
7818
8500
  props?: AtelierItem['props'];
7819
- }): {
8501
+ }, dansId?: string): {
7820
8502
  layout: AtelierLayout;
7821
8503
  id: string;
7822
8504
  };
7823
- /** Retire un composant. Sans effet si l'identifiant est inconnu. */
8505
+ /** Retire un composant, où qu'il vive. Retirer un conteneur emporte ses enfants. */
7824
8506
  declare function atelierRetirer(layout: AtelierLayout, id: string): AtelierLayout;
7825
- /** Change une propriété. `undefined` la supprime plutôt que d'écrire un vide. */
8507
+ /** Change une propriété — où que vive le composant. `undefined` la supprime. */
7826
8508
  declare function atelierDefinirProp(layout: AtelierLayout, id: string, nom: string, valeur: string | number | boolean | string[] | undefined): AtelierLayout;
8509
+ /**
8510
+ * Déplace un ENFANT d'un cran dans son conteneur (le flux : l'ordre fait loi).
8511
+ * Même chemin pour la souris et le clavier, comme le reste du modèle.
8512
+ */
8513
+ declare function atelierReordonnerEnfant(layout: AtelierLayout, parentId: string, id: string, sens: -1 | 1): AtelierLayout;
7827
8514
  /**
7828
8515
  * Change la largeur, en gardant le bloc DANS la grille.
7829
8516
  *
@@ -7877,6 +8564,12 @@ interface AtelierProp {
7877
8564
  controle: 'interrupteur' | 'liste' | 'nombre' | 'texte' | 'liaison';
7878
8565
  /** Valeurs proposées quand `controle === 'liste'`. */
7879
8566
  choix?: string[];
8567
+ /**
8568
+ * La liste accepte AUSSI l'état vide : union `'a' | 'b' | null` — le troisième état
8569
+ * est « rien », pas un texte libre. L'inspecteur propose alors « (aucun) », qui
8570
+ * RETIRE la prop. Signalé par SZU le 24/08 sur `selectable`.
8571
+ */
8572
+ videAutorise?: boolean;
7880
8573
  }
7881
8574
  interface AtelierComposant {
7882
8575
  /**
@@ -7905,6 +8598,67 @@ interface AtelierComposant {
7905
8598
  largeur: number;
7906
8599
  /** Hauteur de départ, en lignes de grille. */
7907
8600
  hauteur: number;
8601
+ /**
8602
+ * Comment le composant occupe sa cellule : il la REMPLIT (défaut — un bouton d'une
8603
+ * rangée fait la hauteur d'une rangée), ou il garde sa taille NATURELLE, centré
8604
+ * verticalement — pour les composants plus petits qu'un contrôle (tag, badge,
8605
+ * interrupteur…), qu'étirer déformerait.
8606
+ *
8607
+ * Vient de l'annotation `@atelier ajustement=naturel` portée par le composant : la
8608
+ * métadonnée voyage avec lui, l'atelier n'a aucune liste.
8609
+ */
8610
+ ajustement: 'remplir' | 'naturel';
8611
+ /**
8612
+ * Icône de palette (`@atelier icone=…`), VALIDÉE contre le jeu d'icônes réel : un nom
8613
+ * inconnu retombe sur `null` plutôt que d'afficher un carré cassé — mieux vaut vide
8614
+ * que faux, comme `role`. Les correspondances vivent sur les composants (88 posées le
8615
+ * 24/08), jamais dans une table de l'atelier.
8616
+ */
8617
+ icone: string | null;
8618
+ /**
8619
+ * Texte projeté DE DÉPART (`@atelier contenu=…`) : un bouton posé dit « Bouton » au
8620
+ * lieu de ressembler à un point. Réservé aux composants dont le corps passe par
8621
+ * `<ng-content>` ; l'atelier l'écrit sous la clé `__contenu` à la pose.
8622
+ */
8623
+ contenu: string | null;
8624
+ /**
8625
+ * Ce composant ACCUEILLE des enfants, et dit COMMENT :
8626
+ * · `flux` (panel, carte, fieldset…) — enfants dans une grille de flux 12 colonnes,
8627
+ * chacun enveloppé d'un bloc d'atelier (largeur, isolation d'échec, ajustement) ;
8628
+ * · `direct` (groupe de boutons…) — enfants projetés NUS, sans enveloppe ni grille :
8629
+ * pour les composants dont les styles ciblent leurs enfants DIRECTS et que toute
8630
+ * enveloppe casserait (pilule, segments accolés).
8631
+ * `false` : rien ne se pose dedans. Un seul niveau dans tous les cas.
8632
+ */
8633
+ conteneur: 'flux' | 'direct' | false;
8634
+ /**
8635
+ * Ce composant n'a de sens QUE DANS un hôte (`@atelier dans=cad-map`) : les pièces de
8636
+ * carte, par exemple, s'instancient sans erreur mais ne montrent rien de sensé posées
8637
+ * seules. La palette les MASQUE tant que leur hôte n'est pas la cible de pose — elles
8638
+ * apparaissent dans leur groupe quand on est « dans » le bon conteneur.
8639
+ */
8640
+ dans: string | null;
8641
+ /**
8642
+ * Valeurs de départ des ENTRÉES à la pose (`@atelier pose-value=Étiquette`) — le
8643
+ * pendant de `contenu` pour les composants dont le visible passe par une entrée et
8644
+ * non par la projection : un tag sans `value` est une coquille invisible, constaté
8645
+ * au clic le 24/08. Modifiables et effaçables ensuite comme toute saisie.
8646
+ */
8647
+ proposDeDepart: Record<string, string | number | boolean>;
8648
+ /**
8649
+ * Rang d'affichage DANS son groupe (`@atelier rang=1`), 99 sans annotation. Sert à
8650
+ * mettre en tête ce qu'on pose en premier (le panel chez les conteneurs) sans
8651
+ * qu'aucune liste d'ordre ne vive dans l'atelier.
8652
+ */
8653
+ rang: number;
8654
+ /**
8655
+ * Jeux d'exemple (`@atelier-exemple <entrée> <JSON>`) : ce qui rend un composant À
8656
+ * DONNÉES jugeable posé nu — une table montre des lignes, un select des options.
8657
+ * Poussés AU RENDU quand l'item ne fournit pas l'entrée, JAMAIS écrits dans le
8658
+ * layout ni dans le code généré : le gabarit reste scalaire, l'exemple s'efface dès
8659
+ * qu'une vraie valeur arrive.
8660
+ */
8661
+ exemples: Record<string, unknown>;
7908
8662
  }
7909
8663
  /** `CadBadgeComponent` → `cad-badge`. Dérivé, jamais saisi. */
7910
8664
  declare function atelierCleDeSymbole(symbole: string): string;
@@ -7925,14 +8679,34 @@ declare function atelierBalise(selecteur: string): {
7925
8679
  * retomberait sur un champ texte, y compris les 253 booléens de la bibliothèque.
7926
8680
  */
7927
8681
  declare function atelierControle(type: string | undefined): Pick<AtelierProp, 'controle' | 'choix'>;
7928
- /** Tous les composants posables, calculés une fois. */
7929
- declare const ATELIER_PALETTE: readonly AtelierComposant[];
8682
+ /**
8683
+ * Tous les composants posables — calculés à la PREMIÈRE DEMANDE, jamais au chargement.
8684
+ *
8685
+ * ⚠️ CE N'EST PAS UNE OPTIMISATION, C'EST UN CORRECTIF. Construire au chargement du
8686
+ * module obligeait `REGISTRE` — qui vit dans un AUTRE module — à être déjà initialisé.
8687
+ * Quand l'ordre d'évaluation s'inverse, et le rechargement à chaud d'Angular le fait,
8688
+ * la palette naissait VIDE et le restait jusqu'à un vrai rechargement de la page.
8689
+ *
8690
+ * Symptôme observé deux fois par SZU le 23/08 : boîte à outils vide, glisser-déposer
8691
+ * erratique, puis « je rafraîchis et là ça marche ». Le diagnostic a coûté cher parce
8692
+ * que rien ne lève : la palette vide ressemble à un bug d'affichage, et le glisser
8693
+ * ratait pour une raison qui n'avait rien à voir avec lui.
8694
+ *
8695
+ * Différé, l'ordre des modules cesse d'exister comme problème : au premier appel, tout
8696
+ * est chargé, quelle que soit la façon dont on y est arrivé.
8697
+ */
8698
+ declare function atelierPalette(): readonly AtelierComposant[];
7930
8699
  /** Le composant derrière une clé de `layout.json`, ou `null` s'il n'existe plus. */
7931
8700
  declare function atelierComposant(cle: string): AtelierComposant | null;
7932
- /** Recherche par nom, clé ou sélecteur. Sans terme, rend tout. */
7933
- declare function atelierChercher(terme: string): AtelierComposant[];
8701
+ /**
8702
+ * Recherche par nom, clé ou sélecteur. Sans terme, rend tout — SAUF les composants
8703
+ * `dans=`, réservés à leur hôte : ils n'apparaissent que quand `hote` est le leur
8704
+ * (la cible de pose courante). `cad-map-panel` posé seul ne montre rien de sensé —
8705
+ * signalé par SZU le 24/08.
8706
+ */
8707
+ declare function atelierChercher(terme: string, hote?: string | null): AtelierComposant[];
7934
8708
  /** Les composants groupés, dans l'ordre d'affichage de la palette. */
7935
- declare function atelierGroupes(terme?: string): {
8709
+ declare function atelierGroupes(terme?: string, hote?: string | null): {
7936
8710
  groupe: string;
7937
8711
  composants: AtelierComposant[];
7938
8712
  }[];
@@ -7955,11 +8729,12 @@ declare function atelierImports(layout: AtelierLayout): string[];
7955
8729
  */
7956
8730
  declare function atelierGabarit(layout: AtelierLayout): string;
7957
8731
  /**
7958
- * Les styles du plan — RECOPIÉS du rendu de frontless (`serverless/shell/src/frontless/
7959
- * grid.ts`), pas réinventés. Une maquette doit s'afficher chez qui la colle exactement
8732
+ * Les styles du plan — la grille de frontless (`serverless/shell/src/frontless/grid.ts`),
8733
+ * à la rangée près : 44 px comme l'atelier (divergence assumée du 24/08 — la rangée fait
8734
+ * la hauteur d'un contrôle). Une maquette doit s'afficher chez qui la colle exactement
7960
8735
  * comme dans l'atelier, y compris son repli mobile à une colonne.
7961
8736
  */
7962
- declare const ATELIER_STYLES_PLAN = " .plan {\n display: grid;\n grid-template-columns: repeat(12, 1fr);\n grid-auto-rows: 58px;\n gap: 10px;\n }\n .bloc { grid-column: var(--gc); grid-row: var(--gr); min-width: 0; overflow: hidden; }\n @media (max-width: 700px) {\n .plan { grid-template-columns: 1fr; grid-auto-rows: minmax(58px, auto); }\n .bloc { grid-column: auto; grid-row: auto; }\n .bloc.cache-mobile { display: none; }\n }";
8737
+ declare const ATELIER_STYLES_PLAN = " .plan {\n display: grid;\n grid-template-columns: repeat(12, 1fr);\n grid-auto-rows: 44px;\n gap: 10px;\n }\n .bloc { grid-column: var(--gc); grid-row: var(--gr); min-width: 0; overflow: hidden; }\n .flux { display: grid; grid-template-columns: repeat(12, 1fr); gap: 8px; width: 100%; }\n .flux > * { min-width: 0; }\n @media (max-width: 700px) {\n .plan { grid-template-columns: 1fr; grid-auto-rows: minmax(44px, auto); }\n .bloc { grid-column: auto; grid-row: auto; }\n .bloc.cache-mobile { display: none; }\n .flux { grid-template-columns: 1fr; }\n .flux > * { grid-column: auto !important; }\n }";
7963
8738
  /** Le composant Angular complet, prêt à coller dans un projet. */
7964
8739
  declare function atelierCode(layout: AtelierLayout, titre?: string): string;
7965
8740
 
@@ -7988,10 +8763,10 @@ interface EntreeRegistre {
7988
8763
  /** La balise à créer pour l'héberger. */
7989
8764
  readonly hote: string;
7990
8765
  }
7991
- /** Symbole -> de quoi le construire. 102 composants posables. */
8766
+ /** Symbole -> de quoi le construire. 104 composants posables. */
7992
8767
  declare const REGISTRE: Readonly<Record<string, EntreeRegistre>>;
7993
8768
  /** La classe d'un symbole, ou `null` s'il n'est pas posable (directive, ou hôte indéterminable). */
7994
8769
  declare function classeDe(symbole: string): Type<unknown> | null;
7995
8770
 
7996
- export { ATELIER_BORNES, ATELIER_COLONNES, ATELIER_PALETTE, ATELIER_STYLES_PLAN, BanGeocoder, CAD_BREAKPOINTS, CAD_CHART_PALETTE, CAD_COLOR_PRESETS, CAD_DEFAULT_BASEMAPS, CAD_DEFAULT_PRIORITY_BREAKPOINTS, CAD_DIALOG_DATA, CAD_FILTER_OPERATORS, CAD_GEOCODER, CAD_ICONS, CAD_ICONS_CEREMA, CAD_ICONS_CORE, CAD_ICONS_DATA, CAD_ICONS_FILES, CAD_ICONS_GEO, CAD_ICONS_SUBSET, CAD_ICONS_TOKEN, CAD_ICONS_UI, CAD_ICON_ALIASES, CAD_ICON_CATEGORIES, CAD_MAPLIBRE_CSS_URL, CAD_MAP_CHILD, CAD_MAP_DEFAULTS, CAD_MAP_GLOBAL_STYLES, CAD_MAP_GLYPHS, CAD_MAP_PALETTE, CAD_MASK_PRESETS, CAD_MOBILE_BREAKPOINT, CAD_RECURRENCE_INTERNE, CAD_SELECT_POSITIONS, CAD_SELECT_TRIGGER_STYLES, CAD_SHEET_DATA, CAD_SHELL, CAD_TOUCH_DENSITY, CadAccordionComponent, CadAccordionPanelComponent, CadAppShellComponent, CadAvatarComponent, CadAvatarGroupComponent, CadBadgeComponent, CadBadgeDirective, CadBlockDirective, CadBlockOverlayComponent, CadBlockUiComponent, CadBottomNavComponent, CadBreadcrumbComponent, CadBreadcrumbItemDirective, CadBreakpointService, CadButtonComponent, CadButtonGroupComponent, CadCalendarComponent, CadCaptionDirective, CadCardComponent, CadCardDirective, CadCardHeaderDirective, CadCarouselComponent, CadCarouselItemDirective, CadCascadeSelectComponent, CadCellTemplateDirective, CadCenterComponent, CadChartComponent, CadCheckboxComponent, CadChipComponent, CadClusterComponent, CadColDirective, CadColorpickerComponent, CadColumnComponent, CadComboComponent, CadConfirmContentComponent, CadConfirmDialogComponent, CadConfirmService, CadContainerComponent, CadDataviewComponent, CadDataviewGridDirective, CadDataviewListDirective, CadDatepickerComponent, CadDialogComponent, CadDialogContainerComponent, CadDialogFooterDirective, CadDialogHeaderDirective, CadDialogRef, CadDialogService, CadDividerComponent, CadDrawerComponent, CadEditFocusDirective, CadEditorTemplateDirective, CadEmptyDirective, CadFieldComponent, CadFieldsetComponent, CadFieldsetLegendDirective, CadFilterChipComponent, CadFilterTemplateDirective, CadGeocodingService, CadGridComponent, CadGroupFooterDirective, CadGroupHeaderDirective, CadHeaderTemplateDirective, CadIconComponent, CadIconRegistry, CadIfDirective, CadImageComponent, CadInplaceComponent, CadInplaceContentDirective, CadInplaceDisplayDirective, CadInputDirective, CadJsonEditorComponent, CadKeyFilterDirective, CadListEmptyDirective, CadListFooterDirective, CadListHeaderDirective, CadListItemDirective, CadListboxComponent, CadMapBasemapRegistry, CadMapBasemapsComponent, CadMapCardComponent, CadMapChromeComponent, CadMapComponent, CadMapDrawEngine, CadMapLayerComponent, CadMapLayerGroupComponent, CadMapLayerToggleComponent, CadMapLegendComponent, CadMapMenuComponent, CadMapPanelComponent, CadMapPanels, CadMapRailComponent, CadMapRailItemComponent, CadMapSearchComponent, CadMapSectionComponent, CadMaskDirective, CadMenuComponent, CadMenubarComponent, CadMessageComponent, CadMeterComponent, CadMeterLabelDirective, CadMultiselectComponent, CadNavDrawerComponent, CadNavDrawerFooterDirective, CadNavDrawerHeaderDirective, CadNumberComponent, CadOptionListComponent, CadOrderlistComponent, CadOrgNodeDirective, CadOrgchartComponent, CadOverlayBase, CadPaginatorComponent, CadPanelComponent, CadPanelContentDirective, CadPanelHeaderDirective, CadPanelHeadingDirective, CadPasswordComponent, CadPicklistComponent, CadPopoverComponent, CadProgressComponent, CadRadioComponent, CadRadioGroupComponent, CadRatingComponent, CadRowActionsDirective, CadRowCountDirective, CadRowExpansionDirective, CadScrollTopComponent, CadSegmentedComponent, CadSelectBase, CadSelectComponent, CadSelectEmptyDirective, CadSelectFooterDirective, CadSelectHeaderDirective, CadSelectItemDirective, CadSelectSelectedDirective, CadSheetContainerComponent, CadSheetRef, CadSheetService, CadSidebarComponent, CadSidebarPanelDirective, CadSkeletonComponent, CadSliderComponent, CadSpacerComponent, CadSpeedDialComponent, CadSpinnerComponent, CadSplitButtonComponent, CadSplitComponent, CadSplitterComponent, CadSplitterPanelComponent, CadStackComponent, CadStepComponent, CadStepperComponent, CadSwitchComponent, CadTabComponent, CadTabContentDirective, CadTabLabelDirective, CadTableBase, CadTableComponent, CadTableEdit, CadTableEditUi, CadTableFooterDirective, CadTablePanelComponent, CadTableResponsive, CadTableSelection, CadTableSticky, CadTableVirtual, CadTabsComponent, CadTagComponent, CadTaskCardDirective, CadTaskRowDirective, CadTaskboardComponent, CadTimeAxis, CadTimelineComponent, CadTimelineContentDirective, CadTimelineMarkerDirective, CadTimelineOppositeDirective, CadToastComponent, CadToastItemDirective, CadToastService, CadToggleButtonComponent, CadTooltipComponent, CadTooltipDirective, CadTreeAdapter, CadTreeComponent, CadTreeNodeDirective, CadTreeselectComponent, CadUploadComponent, CadUploadContentDirective, CadUploadEmptyDirective, CadUploadItemDirective, CadValueAccessor, CadWorkCalendar, MAPLIBRE_MIN_CSS, REGISTRE, addDays, addMonths, addYears, atelierAjouter, atelierBalise, atelierChercher, atelierCleDeSymbole, atelierCode, atelierComposant, atelierControle, atelierDefinirProp, atelierDeplacer, atelierGabarit, atelierGroupes, atelierImports, atelierLayoutVide, atelierManques, atelierNomDeClasse, atelierNormaliser, atelierNouvelId, atelierPoser, atelierPremierePlaceLibre, atelierRecompacter, atelierRedimensionner, atelierReinitialiserIds, atelierRetirer, atelierSelecteurDeClasse, cadAggregate, cadApplyColumnOrder, cadApplyMask, cadArea, cadAutosizeWidth, cadBasemapThumbnail, cadBoundsOf, cadCategories, cadCentroid, cadColorExpr, cadCompare, cadCompareRank, cadCurrentOperator, cadDebutSemaine, cadDefaultMatchMode, cadDistance, cadDownloadCsv, cadDurationToMinutes, cadEstBandeau, cadExpandOccurrences, cadFilterData, cadFilterKindOf, cadFilterOperators, cadFilterRows, cadFindLinkCycle, cadFmtArea, cadFmtLength, cadFormatCell, cadFormatColor, cadFormatDuration, cadFormatSize, cadFrenchHolidays, cadGap, cadGeoJSONStats, cadGeometryKinds, cadHeaderMenuItems, cadHighlightJson, cadHslToRgb, cadHsvToRgb, cadId, cadIsGroupKey, cadIsRank, cadJsonErrorPos, cadLegendFromStyle, cadLength, cadMapEstVivante, cadMapLayerOf, cadMapLayersOf, cadMatch, cadMinuit, cadMonthGrid, cadMoveColumn, cadMoveItems, cadNormalize, cadNormalizeOptions, cadNormalizePlan, cadNumberExpr, cadNumeroJour, cadPackDay, cadPadBounds, cadParseColor, cadParseDuration, cadParseRRule, cadParseResponsive, cadPlanHeader, cadPlanTicks, cadProjeterClavier, cadProjeterCreation, cadProjeterEdition, cadProjeterMois, cadPropsTable, cadRankBetween, cadRankFirst, cadRankLast, cadRankSequence, cadResolve, cadResolveResponsive, cadResponsive, cadRgbToHsl, cadRgbToHsv, cadRingArea, cadRowKey, cadRowPredicate, cadSameValue, cadScaleNext, cadScaleStart, cadSortData, cadStartResize, cadStyleToExpressions, cadUnmask, cadUnscheduled, cadValidateGeoJSON, cadValueForOperator, cadWeekBands, cadWriteField, classeDe, compareDay, daysInMonth, endOfMonth, ensureMaplibreCss, formatDate, isBetweenDay, isSameDay, isSameMonth, isValidDate, isoOf, isoWeek, loadChartJs, loadMaplibre, monthNames, pad2, parseIso, parseWithFormat, provideCadIcons, startOfDay, startOfMonth, toDate, weekdayNames };
7997
- export type { AtelierComposant, AtelierItem, AtelierLayout, AtelierProp, CadAggregate, CadAggregateFn, CadAggregates, CadBadgeSeverity, CadBand, CadBandRow, CadBasemap, CadBasemapKind, CadBottomNavItem, CadBounds, CadBreadcrumbItem, CadBreakpoint, CadCalendarChangeEvent, CadCalendarCreateEvent, CadCalendarDateEvent, CadCalendarEventEvent, CadCalendarSource, CadCalendarView, CadCarouselResponsive, CadCellContext, CadCellEditState, CadChartClickEvent, CadChartType, CadColorFormat, CadColorSpec, CadColumnAlign, CadColumnDataType, CadColumnEditor, CadColumnFilterOption, CadColumnFilterType, CadColumnMenuActionEvent, CadColumnPinEvent, CadColumnReorderEvent, CadColumnResizeEvent, CadColumnToggleEvent, CadComboSource, CadConfirmOptions, CadDataviewLayout, CadDateMode, CadDateSelection, CadDateValue, CadDialogConfig, CadDialogPosition, CadDialogSize, CadDisplayRow, CadDrawMode, CadDrawOptions, CadDrawerPosition, CadDuration, CadDurationUnit, CadEditBase, CadEditCompleteEvent, CadEditEvent, CadEditGeometry, CadEditKind, CadEditMode, CadEditorContext, CadExpandResult, CadFeatureEvent, CadFilterChangeEvent, CadFilterKind, CadFilterMatchMode, CadFilterMeta, CadFilterOperator, CadFilters, CadGap, CadGeoJSON, CadGeocodeOptions, CadGeocodeResult, CadGeocoder, CadGeometryKind, CadGroupBy, CadGroupContext, CadGroupInfo, CadGroupItem, CadHeaderMenuHost, CadHsva, CadLayerStyle, CadLazyLoadEvent, CadLegendItem, CadListGroup, CadListItem, CadListNormalizeOpts, CadListOption, CadListRow, CadLngLat, CadMapChild, CadMapChrome, CadMapClick, CadMapControl, CadMapLayerType, CadMapMenuConfig, CadMapMenuItem, CadMapMenuPanel, CadMapMenuRailItem, CadMapMenuSection, CadMapPosition, CadMapSide, CadMapView, CadMeasure, CadMenuItem, CadMenubarItem, CadMeterValue, CadMonthGrid, CadNavDrawerItem, CadNavDrawerMode, CadNavDrawerRow, CadNodeEvent, CadNormalizePlanOptions, CadNormalizedPlan, CadNumberSpec, CadOccurrence, CadOptionItem, CadOrgNode, CadOverlayHandle, CadPageEvent, CadPaintSet, CadPinnedColumns, CadPlacement, CadPlan, CadPlanAssignment, CadPlanBucket, CadPlanCalendar, CadPlanCalendarException, CadPlanDateInput, CadPlanHeader, CadPlanHours, CadPlanIssue, CadPlanLink, CadPlanLinkType, CadPlanMarker, CadPlanResource, CadPlanScale, CadPlanTask, CadPlanTick, CadPlanTicksOptions, CadPlannedLink, CadPlannedTask, CadPriorityBreakpoints, CadProgressSeverity, CadRRule, CadRRuleFreq, CadRecurrenceIssue, CadRgba, CadRowEditEvent, CadRowEditState, CadRowEvent, CadRowReorderEvent, CadSegmentOption, CadSelectItemContext, CadSelectionMode, CadSelectionPropagation, CadSeverity, CadSheetConfig, CadSheetHeight, CadShellApi, CadSize, CadSliderMark, CadSliderSeverity, CadSliderValue, CadSlot, CadSortEvent, CadSortMeta, CadSortOrder, CadStepState, CadTableEditContext, CadTableEditUiContext, CadTablePanelTab, CadTableResponsiveMode, CadTableSelectionContext, CadTagSeverity, CadTaskAssignEvent, CadTaskMoveEvent, CadTaskOpenEvent, CadTaskboardGroupBy, CadTaskboardMode, CadTimelineAlign, CadToastAction, CadToastMessage, CadToastPosition, CadToastSeverity, CadTreeAdapterOptions, CadTreeNode, CadTreeNodeEvent, CadUploadFile, CadUploadHandlerEvent, CadUploadStatus, CadVariant, CadVirtualRange, CadWipEvent, EntreeRegistre, MLExpression, MaplibreModule };
8771
+ export { ATELIER_BORNES, ATELIER_COLONNES, ATELIER_STYLES_PLAN, BanGeocoder, CAD_BREAKPOINTS, CAD_CHART_PALETTE, CAD_COLOR_PRESETS, CAD_DEFAULT_BASEMAPS, CAD_DEFAULT_PRIORITY_BREAKPOINTS, CAD_DIALOG_DATA, CAD_FILTER_OPERATORS, CAD_GEOCODER, CAD_ICONS, CAD_ICONS_CEREMA, CAD_ICONS_CORE, CAD_ICONS_DATA, CAD_ICONS_FILES, CAD_ICONS_GEO, CAD_ICONS_SUBSET, CAD_ICONS_TOKEN, CAD_ICONS_UI, CAD_ICON_ALIASES, CAD_ICON_CATEGORIES, CAD_MAPLIBRE_CSS_URL, CAD_MAP_CHILD, CAD_MAP_DEFAULTS, CAD_MAP_GLOBAL_STYLES, CAD_MAP_GLYPHS, CAD_MAP_PALETTE, CAD_MASK_PRESETS, CAD_MOBILE_BREAKPOINT, CAD_RECURRENCE_INTERNE, CAD_SELECT_POSITIONS, CAD_SELECT_TRIGGER_STYLES, CAD_SHEET_DATA, CAD_SHELL, CAD_TOUCH_DENSITY, CadAccordionComponent, CadAccordionPanelComponent, CadAppShellComponent, CadAvatarComponent, CadAvatarGroupComponent, CadBadgeComponent, CadBadgeDirective, CadBlockDirective, CadBlockOverlayComponent, CadBlockUiComponent, CadBottomNavComponent, CadBreadcrumbComponent, CadBreadcrumbItemDirective, CadBreakpointService, CadButtonComponent, CadButtonGroupComponent, CadCalendarComponent, CadCaptionDirective, CadCardComponent, CadCardDirective, CadCardHeaderDirective, CadCarouselComponent, CadCarouselItemDirective, CadCascadeSelectComponent, CadCellTemplateDirective, CadCenterComponent, CadChartComponent, CadCheckboxComponent, CadChipComponent, CadClusterComponent, CadColDirective, CadColorpickerComponent, CadColumnComponent, CadComboComponent, CadConfirmContentComponent, CadConfirmDialogComponent, CadConfirmService, CadContainerComponent, CadDataviewComponent, CadDataviewGridDirective, CadDataviewListDirective, CadDatepickerComponent, CadDialogComponent, CadDialogContainerComponent, CadDialogFooterDirective, CadDialogHeaderDirective, CadDialogRef, CadDialogService, CadDividerComponent, CadDrawerComponent, CadEditFocusDirective, CadEditorTemplateDirective, CadEmptyDirective, CadFieldComponent, CadFieldsetComponent, CadFieldsetLegendDirective, CadFilterChipComponent, CadFilterTemplateDirective, CadGanttComponent, CadGeocodingService, CadGridComponent, CadGroupFooterDirective, CadGroupHeaderDirective, CadHeaderTemplateDirective, CadIconComponent, CadIconRegistry, CadIfDirective, CadImageComponent, CadInplaceComponent, CadInplaceContentDirective, CadInplaceDisplayDirective, CadInputDirective, CadJsonEditorComponent, CadKeyFilterDirective, CadListEmptyDirective, CadListFooterDirective, CadListHeaderDirective, CadListItemDirective, CadListboxComponent, CadMapBasemapRegistry, CadMapBasemapsComponent, CadMapCardComponent, CadMapChromeComponent, CadMapComponent, CadMapDrawEngine, CadMapLayerComponent, CadMapLayerGroupComponent, CadMapLayerToggleComponent, CadMapLegendComponent, CadMapMenuComponent, CadMapPanelComponent, CadMapPanels, CadMapRailComponent, CadMapRailItemComponent, CadMapSearchComponent, CadMapSectionComponent, CadMaskDirective, CadMenuComponent, CadMenubarComponent, CadMessageComponent, CadMeterComponent, CadMeterLabelDirective, CadMultiselectComponent, CadNavDrawerComponent, CadNavDrawerFooterDirective, CadNavDrawerHeaderDirective, CadNumberComponent, CadOptionListComponent, CadOrderlistComponent, CadOrgNodeDirective, CadOrgchartComponent, CadOverlayBase, CadPaginatorComponent, CadPanelComponent, CadPanelContentDirective, CadPanelHeaderDirective, CadPanelHeadingDirective, CadPasswordComponent, CadPicklistComponent, CadPopoverComponent, CadProgressComponent, CadRadioComponent, CadRadioGroupComponent, CadRatingComponent, CadRowActionsDirective, CadRowCountDirective, CadRowExpansionDirective, CadSchedulerComponent, CadScrollTopComponent, CadSegmentedComponent, CadSelectBase, CadSelectComponent, CadSelectEmptyDirective, CadSelectFooterDirective, CadSelectHeaderDirective, CadSelectItemDirective, CadSelectSelectedDirective, CadSheetContainerComponent, CadSheetRef, CadSheetService, CadSidebarComponent, CadSidebarPanelDirective, CadSkeletonComponent, CadSliderComponent, CadSpacerComponent, CadSpeedDialComponent, CadSpinnerComponent, CadSplitButtonComponent, CadSplitComponent, CadSplitterComponent, CadSplitterPanelComponent, CadStackComponent, CadStepComponent, CadStepperComponent, CadSwitchComponent, CadTabComponent, CadTabContentDirective, CadTabLabelDirective, CadTableBase, CadTableComponent, CadTableEdit, CadTableEditUi, CadTableFooterDirective, CadTablePanelComponent, CadTableResponsive, CadTableSelection, CadTableSticky, CadTableVirtual, CadTabsComponent, CadTagComponent, CadTaskCardDirective, CadTaskRowDirective, CadTaskboardComponent, CadTimeAxis, CadTimelineComponent, CadTimelineContentDirective, CadTimelineMarkerDirective, CadTimelineOppositeDirective, CadToastComponent, CadToastItemDirective, CadToastService, CadToggleButtonComponent, CadTooltipComponent, CadTooltipDirective, CadTreeAdapter, CadTreeComponent, CadTreeNodeDirective, CadTreeselectComponent, CadUploadComponent, CadUploadContentDirective, CadUploadEmptyDirective, CadUploadItemDirective, CadValueAccessor, CadWorkCalendar, MAPLIBRE_MIN_CSS, REGISTRE, addDays, addMonths, addYears, atelierAjouter, atelierBalise, atelierChercher, atelierCleDeSymbole, atelierCode, atelierComposant, atelierCompter, atelierControle, atelierDefinirProp, atelierDeplacer, atelierGabarit, atelierGroupes, atelierImports, atelierLayoutVide, atelierManques, atelierNomDeClasse, atelierNormaliser, atelierNouvelId, atelierPalette, atelierPoser, atelierPremierePlaceLibre, atelierRecompacter, atelierRedimensionner, atelierReinitialiserIds, atelierReordonnerEnfant, atelierRetirer, atelierSelecteurDeClasse, atelierTrouver, cadAggregate, cadApplyColumnOrder, cadApplyMask, cadArea, cadAutosizeWidth, cadBasemapThumbnail, cadBoundsOf, cadCategories, cadCentroid, cadClipFenetre, cadColorExpr, cadCompare, cadCompareRank, cadCurrentOperator, cadDebutSemaine, cadDefaultMatchMode, cadDistance, cadDownloadCsv, cadDurationToMinutes, cadEstBandeau, cadExpandOccurrences, cadFilterData, cadFilterKindOf, cadFilterOperators, cadFilterRows, cadFindLinkCycle, cadFmtArea, cadFmtLength, cadFormatCell, cadFormatColor, cadFormatDuration, cadFormatSize, cadFrenchHolidays, cadGanttRows, cadGap, cadGeoJSONStats, cadGeometryKinds, cadHeaderMenuItems, cadHighlightJson, cadHslToRgb, cadHsvToRgb, cadId, cadIsGroupKey, cadIsRank, cadJsonErrorPos, cadLegendFromStyle, cadLength, cadMapEstVivante, cadMapLayerOf, cadMapLayersOf, cadMatch, cadMinuit, cadMonthGrid, cadMoveColumn, cadMoveItems, cadNormalize, cadNormalizeOptions, cadNormalizePlan, cadNumberExpr, cadNumeroJour, cadPackDay, cadPackLanes, cadPadBounds, cadParseColor, cadParseDuration, cadParseRRule, cadParseResponsive, cadPlanHeader, cadPlanTicks, cadPointeFleche, cadProjeterClavier, cadProjeterCreation, cadProjeterEdition, cadProjeterMois, cadPropsTable, cadRankBetween, cadRankFirst, cadRankLast, cadRankSequence, cadResolve, cadResolveResponsive, cadResponsive, cadRgbToHsl, cadRgbToHsv, cadRingArea, cadRouterLien, cadRowKey, cadRowPredicate, cadSameValue, cadScaleNext, cadScaleStart, cadSchedulerPartition, cadSortData, cadStartResize, cadStyleToExpressions, cadUnmask, cadUnscheduled, cadValidateGeoJSON, cadValueForOperator, cadWeekBands, cadWriteField, classeDe, compareDay, daysInMonth, endOfMonth, ensureMaplibreCss, formatDate, isBetweenDay, isSameDay, isSameMonth, isValidDate, isoOf, isoWeek, loadChartJs, loadMaplibre, monthNames, pad2, parseIso, parseWithFormat, provideCadIcons, startOfDay, startOfMonth, toDate, weekdayNames };
8772
+ export type { AtelierComposant, AtelierItem, AtelierLayout, AtelierProp, CadAggregate, CadAggregateFn, CadAggregates, CadBadgeSeverity, CadBand, CadBandRow, CadBasemap, CadBasemapKind, CadBottomNavItem, CadBounds, CadBreadcrumbItem, CadBreakpoint, CadCalendarChangeEvent, CadCalendarCreateEvent, CadCalendarDateEvent, CadCalendarEventEvent, CadCalendarSource, CadCalendarView, CadCarouselResponsive, CadCellContext, CadCellEditState, CadChartClickEvent, CadChartType, CadColonneDef, CadColorFormat, CadColorSpec, CadColumnAlign, CadColumnDataType, CadColumnEditor, CadColumnFilterOption, CadColumnFilterType, CadColumnMenuActionEvent, CadColumnPinEvent, CadColumnReorderEvent, CadColumnResizeEvent, CadColumnToggleEvent, CadComboSource, CadConfirmOptions, CadDataviewLayout, CadDateMode, CadDateSelection, CadDateValue, CadDialogConfig, CadDialogPosition, CadDialogSize, CadDisplayRow, CadDrawMode, CadDrawOptions, CadDrawerPosition, CadDuration, CadDurationUnit, CadEditBase, CadEditCompleteEvent, CadEditEvent, CadEditGeometry, CadEditKind, CadEditMode, CadEditorContext, CadExpandResult, CadFeatureEvent, CadFenetreSpan, CadFilterChangeEvent, CadFilterKind, CadFilterMatchMode, CadFilterMeta, CadFilterOperator, CadFilters, CadGanttRow, CadGanttScale, CadGanttTaskEvent, CadGap, CadGeoJSON, CadGeocodeOptions, CadGeocodeResult, CadGeocoder, CadGeometryKind, CadGroupBy, CadGroupContext, CadGroupInfo, CadGroupItem, CadHeaderMenuHost, CadHsva, CadLaneSpan, CadLayerStyle, CadLazyLoadEvent, CadLegendItem, CadLienAncre, CadLienTrace, CadListGroup, CadListItem, CadListNormalizeOpts, CadListOption, CadListRow, CadLngLat, CadMapChild, CadMapChrome, CadMapClick, CadMapControl, CadMapLayerType, CadMapMenuConfig, CadMapMenuItem, CadMapMenuPanel, CadMapMenuRailItem, CadMapMenuSection, CadMapPosition, CadMapSide, CadMapView, CadMeasure, CadMenuItem, CadMenubarItem, CadMeterValue, CadMonthGrid, CadNavDrawerItem, CadNavDrawerMode, CadNavDrawerRow, CadNodeEvent, CadNormalizePlanOptions, CadNormalizedPlan, CadNumberSpec, CadOccurrence, CadOptionItem, CadOrgNode, CadOverlayHandle, CadPageEvent, CadPaintSet, CadPinnedColumns, CadPlacement, CadPlan, CadPlanAssignment, CadPlanBucket, CadPlanCalendar, CadPlanCalendarException, CadPlanDateInput, CadPlanHeader, CadPlanHours, CadPlanIssue, CadPlanLink, CadPlanLinkType, CadPlanMarker, CadPlanResource, CadPlanScale, CadPlanTask, CadPlanTick, CadPlanTicksOptions, CadPlannedLink, CadPlannedTask, CadPriorityBreakpoints, CadProgressSeverity, CadRRule, CadRRuleFreq, CadRecurrenceIssue, CadRgba, CadRowEditEvent, CadRowEditState, CadRowEvent, CadRowReorderEvent, CadSchedulerAssignEvent, CadSchedulerChangeEvent, CadSchedulerCreateEvent, CadSchedulerEventEvent, CadSchedulerMode, CadSchedulerScale, CadSchedulerScheduleEvent, CadSegmentOption, CadSelectItemContext, CadSelectionMode, CadSelectionPropagation, CadSeverity, CadSheetConfig, CadSheetHeight, CadShellApi, CadSize, CadSliderMark, CadSliderSeverity, CadSliderValue, CadSlot, CadSortEvent, CadSortMeta, CadSortOrder, CadStepState, CadTableEditContext, CadTableEditUiContext, CadTablePanelTab, CadTableResponsiveMode, CadTableSelectionContext, CadTagSeverity, CadTaskAssignEvent, CadTaskMoveEvent, CadTaskOpenEvent, CadTaskboardGroupBy, CadTaskboardMode, CadTimelineAlign, CadToastAction, CadToastMessage, CadToastPosition, CadToastSeverity, CadTreeAdapterOptions, CadTreeNode, CadTreeNodeEvent, CadUploadFile, CadUploadHandlerEvent, CadUploadStatus, CadVariant, CadVirtualRange, CadWipEvent, EntreeRegistre, MLExpression, MaplibreModule };