@ktortu/aaa 0.9.2 → 0.9.3

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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ktortu/aaa",
3
- "version": "0.9.2",
3
+ "version": "0.9.3",
4
4
  "description": "Bibliothèque de composants Angular headless + thémés par tokens CSS.",
5
5
  "keywords": [
6
6
  "angular",
@@ -1,6 +1,70 @@
1
1
  import * as i0 from '@angular/core';
2
- import { InjectionToken, Provider } from '@angular/core';
2
+ import { InjectionToken, AfterContentInit, AfterViewInit, Provider } from '@angular/core';
3
3
 
4
+ /** Axe "apparence" de la surface. */
5
+ type KtCardVariant = 'elevated' | 'outlined' | 'filled';
6
+ /** Défauts applicables à toutes les `[ktCard]` (surchargeables par carte via les inputs). */
7
+ interface KtCardConfig {
8
+ /** Apparence par défaut de la surface. */
9
+ variant: KtCardVariant;
10
+ }
11
+ declare const KT_CARD_CONFIG: InjectionToken<Partial<KtCardConfig>>;
12
+ /**
13
+ * Fournit des défauts de carte (apparence de surface) pour un sous-arbre ou l'application entière.
14
+ *
15
+ * @example
16
+ * ```ts
17
+ * providers: [provideKtCard({ variant: 'outlined' })]
18
+ * ```
19
+ */
20
+ declare function provideKtCard(config: Partial<KtCardConfig>): Provider;
21
+ /**
22
+ * Carte : SURFACE de contenu. Directive (pas de composant) posée sur l'élément SÉMANTIQUE choisi
23
+ * par le consommateur (`<article>`, `<section>`, `<li>`, `<a>`…) — la lib n'impose jamais de
24
+ * wrapper non sémantique ni de rôle (cf. précédent Dialog : la sémantique appartient à l'hôte).
25
+ *
26
+ * Trois axes pilotés en `data-*` (même contrat que ktButton) :
27
+ * - variant : data-variant = elevated | outlined | filled (apparence)
28
+ * - interactive : data-interactive (affordance hover/focus — PAS un rôle ; la cible cliquable
29
+ * est un [ktCardLink], lien/bouton primaire au lien étiré)
30
+ * - disabled : data-disabled (surface inerte)
31
+ *
32
+ * La mise en forme (layout des marqueurs, lien étiré, états) vit dans `card.css` ; les couleurs
33
+ * et la géométrie dérivent du socle `--kt-*` via `card-tokens.css`.
34
+ *
35
+ * @example
36
+ * ```html
37
+ * <article ktCard variant="outlined" interactive>
38
+ * <div ktCardContent>
39
+ * <h3 id="t1">Titre</h3>
40
+ * <a ktCardLink routerLink="/detail" aria-labelledby="t1">Voir le détail</a>
41
+ * </div>
42
+ * </article>
43
+ * ```
44
+ */
45
+ declare class KtCard implements AfterContentInit {
46
+ private readonly config;
47
+ private readonly host;
48
+ private readonly platformId;
49
+ private readonly auditEnabled;
50
+ /** Référence réactive sur le lien primaire de la carte */
51
+ readonly cardLink: i0.Signal<KtCardLink | undefined>;
52
+ /** Apparence de la surface : `elevated` | `outlined` | `filled`. @default 'elevated' (ou `KT_CARD_CONFIG.variant`) */
53
+ readonly variant: i0.InputSignal<KtCardVariant>;
54
+ /**
55
+ * Affordance visuelle d'élément cliquable (hover/focus). N'AJOUTE pas de rôle : un lien/bouton
56
+ * primaire ([ktCardLink]) porte l'interaction et le nom accessible. @default false
57
+ */
58
+ readonly interactive: i0.InputSignalWithTransform<boolean, unknown>;
59
+ /** Rend la surface inerte (état `data-disabled`). @default false */
60
+ readonly disabled: i0.InputSignalWithTransform<boolean, unknown>;
61
+ private isDestroyed;
62
+ private readonly contentInitialized;
63
+ constructor();
64
+ ngAfterContentInit(): void;
65
+ static ɵfac: i0.ɵɵFactoryDeclaration<KtCard, never>;
66
+ static ɵdir: i0.ɵɵDirectiveDeclaration<KtCard, "[ktCard]", never, { "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "interactive": { "alias": "interactive"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; }, {}, ["cardLink"], never, true, never>;
67
+ }
4
68
  /**
5
69
  * En-tête de la carte (rangée flex : média/avatar + titre + éventuelle action). Marqueur
6
70
  * structurel sans logique — la mise en forme vit dans `card.css` via `[ktCardHeader]`.
@@ -58,7 +122,7 @@ declare class KtCardActions {
58
122
  }
59
123
  /**
60
124
  * Lien (ou bouton) PRIMAIRE d'une carte interactive : pattern « lien étiré » (Inclusive
61
- * Components). Un pseudo-élément `::after` couvre toute la carte (cf. `card.css`) → toute la
125
+ * Components). Un pseudo-élément `::after` covers toute la carte (cf. `card.css`) → toute la
62
126
  * surface est cliquable, SANS imbriquer de contrôles interactifs (anti-pattern WCAG 4.1.2). Les
63
127
  * actions secondaires de la carte repassent au-dessus du lien (z-index dans `card.css`).
64
128
  *
@@ -78,7 +142,7 @@ declare class KtCardActions {
78
142
  * </article>
79
143
  * ```
80
144
  */
81
- declare class KtCardLink {
145
+ declare class KtCardLink implements AfterViewInit {
82
146
  private readonly host;
83
147
  private readonly auditEnabled;
84
148
  /**
@@ -88,74 +152,11 @@ declare class KtCardLink {
88
152
  */
89
153
  protected readonly card: KtCard | null;
90
154
  handleClick(event: Event): void;
91
- constructor();
155
+ ngAfterViewInit(): void;
92
156
  static ɵfac: i0.ɵɵFactoryDeclaration<KtCardLink, never>;
93
157
  static ɵdir: i0.ɵɵDirectiveDeclaration<KtCardLink, "a[ktCardLink], button[ktCardLink]", never, {}, {}, never, never, true, never>;
94
158
  }
95
159
 
96
- /** Axe "apparence" de la surface. */
97
- type KtCardVariant = 'elevated' | 'outlined' | 'filled';
98
- /** Défauts applicables à toutes les `[ktCard]` (surchargeables par carte via les inputs). */
99
- interface KtCardConfig {
100
- /** Apparence par défaut de la surface. */
101
- variant: KtCardVariant;
102
- }
103
- declare const KT_CARD_CONFIG: InjectionToken<Partial<KtCardConfig>>;
104
- /**
105
- * Fournit des défauts de carte (apparence de surface) pour un sous-arbre ou l'application entière.
106
- *
107
- * @example
108
- * ```ts
109
- * providers: [provideKtCard({ variant: 'outlined' })]
110
- * ```
111
- */
112
- declare function provideKtCard(config: Partial<KtCardConfig>): Provider;
113
- /**
114
- * Carte : SURFACE de contenu. Directive (pas de composant) posée sur l'élément SÉMANTIQUE choisi
115
- * par le consommateur (`<article>`, `<section>`, `<li>`, `<a>`…) — la lib n'impose jamais de
116
- * wrapper non sémantique ni de rôle (cf. précédent Dialog : la sémantique appartient à l'hôte).
117
- *
118
- * Trois axes pilotés en `data-*` (même contrat que ktButton) :
119
- * - variant : data-variant = elevated | outlined | filled (apparence)
120
- * - interactive : data-interactive (affordance hover/focus — PAS un rôle ; la cible cliquable
121
- * est un [ktCardLink], lien/bouton primaire au lien étiré)
122
- * - disabled : data-disabled (surface inerte)
123
- *
124
- * La mise en forme (layout des marqueurs, lien étiré, états) vit dans `card.css` ; les couleurs
125
- * et la géométrie dérivent du socle `--kt-*` via `card-tokens.css`.
126
- *
127
- * @example
128
- * ```html
129
- * <article ktCard variant="outlined" interactive>
130
- * <div ktCardContent>
131
- * <h3 id="t1">Titre</h3>
132
- * <a ktCardLink routerLink="/detail" aria-labelledby="t1">Voir le détail</a>
133
- * </div>
134
- * </article>
135
- * ```
136
- */
137
- declare class KtCard {
138
- private readonly config;
139
- private readonly host;
140
- private readonly platformId;
141
- private readonly auditEnabled;
142
- /** Référence réactive sur le lien primaire de la carte */
143
- readonly cardLink: i0.Signal<KtCardLink | undefined>;
144
- /** Apparence de la surface : `elevated` | `outlined` | `filled`. @default 'elevated' (ou `KT_CARD_CONFIG.variant`) */
145
- readonly variant: i0.InputSignal<KtCardVariant>;
146
- /**
147
- * Affordance visuelle d'élément cliquable (hover/focus). N'AJOUTE pas de rôle : un lien/bouton
148
- * primaire ([ktCardLink]) porte l'interaction et le nom accessible. @default false
149
- */
150
- readonly interactive: i0.InputSignalWithTransform<boolean, unknown>;
151
- /** Rend la surface inerte (état `data-disabled`). @default false */
152
- readonly disabled: i0.InputSignalWithTransform<boolean, unknown>;
153
- private isDestroyed;
154
- constructor();
155
- static ɵfac: i0.ɵɵFactoryDeclaration<KtCard, never>;
156
- static ɵdir: i0.ɵɵDirectiveDeclaration<KtCard, "[ktCard]", never, { "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "interactive": { "alias": "interactive"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; }, {}, ["cardLink"], never, true, never>;
157
- }
158
-
159
160
  /**
160
161
  * Import ergonomique de toute la famille card en une fois :
161
162
  * `imports: [KtCardImports]` au lieu d'énumérer chaque directive.
@@ -1,6 +1,9 @@
1
1
  import * as i0 from '@angular/core';
2
2
  import { OnInit, OnDestroy, Provider } from '@angular/core';
3
3
  import { DialogConfig, DialogRef, CdkDialogContainer } from '@angular/cdk/dialog';
4
+ import * as _ktortu_aaa_dialog from '@ktortu/aaa/dialog';
5
+ import { Observable } from 'rxjs';
6
+ import { KtButtonColor } from '@ktortu/aaa/button';
4
7
  import { ComponentType } from '@angular/cdk/portal';
5
8
 
6
9
  /**
@@ -367,11 +370,134 @@ declare class KtDialogContainer extends CdkDialogContainer {
367
370
  static ɵcmp: i0.ɵɵComponentDeclaration<KtDialogContainer, "kt-dialog-container", never, {}, {}, never, never, true, never>;
368
371
  }
369
372
 
373
+ /**
374
+ * Configuration pour l'ouverture d'une boîte de dialogue d'alerte simple.
375
+ */
376
+ interface KtAlertData {
377
+ /** Titre de la boîte de dialogue. */
378
+ title: string;
379
+ /**
380
+ * Message explicatif. Peut être une simple chaîne de caractères
381
+ * ou un tableau de chaînes pour composer plusieurs paragraphes.
382
+ * Supporte le HTML (balises sécurisées) désinfecté à l'affichage.
383
+ */
384
+ message: string | string[];
385
+ /** Libellé du bouton de fermeture. Par défaut: 'Fermer'. */
386
+ closeLabel?: string;
387
+ }
388
+ /**
389
+ * Composant interne d'alerte générique.
390
+ * Affiche un titre, un message (simple ou multiligne HTML) et un bouton de fermeture.
391
+ */
392
+ declare class KtAlertDialog {
393
+ protected readonly data: KtAlertData;
394
+ protected isMessageArray(): boolean;
395
+ protected messageArray(): string[];
396
+ protected messageString(): string;
397
+ static ɵfac: i0.ɵɵFactoryDeclaration<KtAlertDialog, never>;
398
+ static ɵcmp: i0.ɵɵComponentDeclaration<KtAlertDialog, "kt-alert-dialog", never, {}, {}, never, never, true, never>;
399
+ }
400
+ /** Ouvreur co-localisé officiel pour l'alerte. Utilise la présentation responsive par défaut. */
401
+ declare const injectAlertDialog: () => (data: KtAlertData, config?: _ktortu_aaa_dialog.KtDialogOpenerConfig<KtAlertData, void, KtAlertDialog> | undefined) => DialogRef<void, KtAlertDialog>;
402
+ /** Option de variante visuelle pour le bouton d'action principal. */
403
+ type KtDialogColor = KtButtonColor;
404
+ /**
405
+ * Configuration pour l'ouverture d'une boîte de dialogue de confirmation binaire (Oui/Non).
406
+ */
407
+ interface KtConfirmConfig {
408
+ /** Titre de la boîte de dialogue. */
409
+ title: string;
410
+ /**
411
+ * Message explicatif. Peut être une simple chaîne ou un tableau
412
+ * de chaînes de caractères pour composer plusieurs paragraphes.
413
+ * Supporte le HTML désinfecté à l'affichage.
414
+ */
415
+ message: string | string[];
416
+ /** Libellé du bouton de validation. Par défaut: 'Oui'. */
417
+ confirmLabel?: string;
418
+ /** Libellé du bouton de rejet. Par défaut: 'Non'. */
419
+ rejectLabel?: string;
420
+ /**
421
+ * Variante de couleur du bouton principal.
422
+ * Utile pour marquer une action destructive ou critique.
423
+ * Par défaut: 'primary'.
424
+ */
425
+ color?: KtDialogColor;
426
+ }
427
+ /**
428
+ * Configuration pour une décision ternaire (inclut obligatoirement un bouton d'annulation).
429
+ */
430
+ interface KtDecideConfig extends KtConfirmConfig {
431
+ /** Libellé du bouton d'annulation. Requis. */
432
+ cancelLabel: string;
433
+ }
434
+ /**
435
+ * Type de retour d'une boîte de dialogue de confirmation ou de décision.
436
+ * - 'confirm' : Choix de validation (Oui / Enregistrer)
437
+ * - 'reject' : Choix de rejet (Non / Ignorer)
438
+ * - 'cancel' : Choix d'annulation (Annuler)
439
+ */
440
+ type KtConfirmResult = 'confirm' | 'reject' | 'cancel';
441
+ /**
442
+ * Composant interne de confirmation/décision générique.
443
+ * Supporte le mode binaire (Oui/Non) et le mode ternaire (Oui/Non/Annuler).
444
+ * Gère l'empilement vertical des boutons et les messages HTML multi-lignes.
445
+ */
446
+ declare class KtConfirmDialog {
447
+ protected readonly data: KtDecideConfig;
448
+ private readonly ref;
449
+ protected isMessageArray(): boolean;
450
+ protected messageArray(): string[];
451
+ protected messageString(): string;
452
+ protected confirm(): void;
453
+ protected reject(): void;
454
+ protected cancel(): void;
455
+ static ɵfac: i0.ɵɵFactoryDeclaration<KtConfirmDialog, never>;
456
+ static ɵcmp: i0.ɵɵComponentDeclaration<KtConfirmDialog, "kt-confirm-dialog", never, {}, {}, never, never, true, never>;
457
+ }
458
+ /** Ouvreur co-localisé officiel pour la confirmation/décision. Utilise la présentation responsive par défaut. */
459
+ declare const injectConfirmDialog: () => (data: KtDecideConfig, config?: _ktortu_aaa_dialog.KtDialogOpenerConfig<KtDecideConfig, KtConfirmResult, KtConfirmDialog> | undefined) => DialogRef<KtConfirmResult, KtConfirmDialog>;
460
+ /**
461
+ * Service d'aide global pour l'ouverture simplifiée de boîtes de dialogue d'alerte et de confirmation.
462
+ * S'appuie sur les ouvreurs de dialogues officiels co-localisés.
463
+ * Propose une présentation adaptative (centrée sur grand écran, bottom-sheet sur mobile).
464
+ */
465
+ declare class KtQuickDialog {
466
+ private readonly openAlert;
467
+ private readonly openConfirm;
468
+ /**
469
+ * Ouvre une boîte de dialogue d'alerte simple.
470
+ *
471
+ * @param title Titre de l'alerte.
472
+ * @param message Message d'explication (string simple ou tableau de strings pour du multi-lignes HTML).
473
+ * @param closeLabel Libellé du bouton de fermeture.
474
+ * @returns La référence DialogRef de la modale ouverte.
475
+ */
476
+ alert(title: string, message: string | string[], closeLabel?: string): DialogRef<void, KtAlertDialog>;
477
+ /**
478
+ * Ouvre une boîte de dialogue de confirmation binaire (Oui/Non).
479
+ *
480
+ * @param config Options de configuration (titre, message, libellés de boutons, couleur).
481
+ * @returns Un Observable émettant true si l'utilisateur valide (Oui),
482
+ * false s'il rejette (Non), et undefined si la boîte est fermée en cliquant en dehors ou via Échap.
483
+ */
484
+ confirm(config: KtConfirmConfig): Observable<boolean | undefined>;
485
+ /**
486
+ * Ouvre une boîte de dialogue de décision ternaire (Oui/Non/Annuler).
487
+ *
488
+ * @param config Options de configuration (titre, message, libellés de boutons dont cancelLabel obligatoire).
489
+ * @returns Un Observable émettant 'confirm', 'reject', 'cancel' ou undefined si fermeture externe.
490
+ */
491
+ decide(config: KtDecideConfig): Observable<KtConfirmResult | undefined>;
492
+ static ɵfac: i0.ɵɵFactoryDeclaration<KtQuickDialog, never>;
493
+ static ɵprov: i0.ɵɵInjectableDeclaration<KtQuickDialog>;
494
+ }
495
+
370
496
  /**
371
497
  * Import ergonomique de toute la famille dialog en une fois :
372
498
  * `imports: [KtDialogImports]` au lieu d'énumérer chaque directive structurelle.
373
499
  */
374
500
  declare const KtDialogImports: readonly [typeof KtDialogHeader, typeof KtDialogTitle, typeof KtDialogDescription, typeof KtDialogContent, typeof KtDialogActions, typeof KtDialogClose, typeof KtDialogFocusInitial, typeof KtDialogSheetHandle];
375
501
 
376
- export { KT_DIALOG_AAA_DEFAULTS, KtDialogActions, KtDialogClose, KtDialogContainer, KtDialogContent, KtDialogDescription, KtDialogFocusInitial, KtDialogHeader, KtDialogImports, KtDialogSheetHandle, KtDialogTitle, defineKtDialog, injectKtDialogOpener, provideKtDialogDefaults, resolveKtDialogPanelClass };
377
- export type { KtDialogContract, KtDialogOpenerConfig, KtDialogPresentation };
502
+ export { KT_DIALOG_AAA_DEFAULTS, KtAlertDialog, KtConfirmDialog, KtDialogActions, KtDialogClose, KtDialogContainer, KtDialogContent, KtDialogDescription, KtDialogFocusInitial, KtDialogHeader, KtDialogImports, KtDialogSheetHandle, KtDialogTitle, KtQuickDialog, defineKtDialog, injectAlertDialog, injectConfirmDialog, injectKtDialogOpener, provideKtDialogDefaults, resolveKtDialogPanelClass };
503
+ export type { KtAlertData, KtConfirmConfig, KtConfirmResult, KtDecideConfig, KtDialogColor, KtDialogContract, KtDialogOpenerConfig, KtDialogPresentation };
@@ -1,4 +1,6 @@
1
1
  import * as i0 from '@angular/core';
2
+ import { AfterViewInit, AfterContentInit, InjectionToken } from '@angular/core';
3
+ import * as _ktortu_aaa_disclosure from '@ktortu/aaa/disclosure';
2
4
 
3
5
  /**
4
6
  * Déclencheur d'un [ktDisclosure] : posé sur un **vrai `<button>`** (clavier Entrée/Espace
@@ -16,14 +18,14 @@ import * as i0 from '@angular/core';
16
18
  * <button ktDisclosureToggle [chevron]="false">Détails</button> <!-- sans chevron -->
17
19
  * ```
18
20
  */
19
- declare class KtDisclosureToggle {
20
- readonly disclosure: KtDisclosure;
21
+ declare class KtDisclosureToggle implements AfterViewInit {
22
+ readonly disclosure: _ktortu_aaa_disclosure.KtDisclosureInterface;
21
23
  private readonly host;
22
24
  private readonly auditEnabled;
23
- private isDestroyed;
24
25
  /** Affiche le chevron décoratif (qui pivote selon l'état). @default true */
25
26
  readonly chevron: i0.InputSignalWithTransform<boolean, unknown>;
26
27
  constructor();
28
+ ngAfterViewInit(): void;
27
29
  static ɵfac: i0.ɵɵFactoryDeclaration<KtDisclosureToggle, never>;
28
30
  static ɵdir: i0.ɵɵDirectiveDeclaration<KtDisclosureToggle, "button[ktDisclosureToggle]", never, { "chevron": { "alias": "chevron"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
29
31
  }
@@ -31,7 +33,7 @@ declare class KtDisclosureToggle {
31
33
  /**
32
34
  * Panneau repliable d'un [ktDisclosure]. **Composant** (et non directive) car l'animation grid
33
35
  * `0fr ↔ 1fr` exige un **unique enfant `overflow:hidden`** autour du contenu projeté — ce wrapper
34
- * (`.kt-disclosure-content__inner`) est fourni par le template, le consommateur reste libre d'y
36
+ * (`.kt-disclosure-content__inner`) est fourni by le template, le consommateur reste libre d'y
35
37
  * mettre autant de blocs qu'il veut.
36
38
  *
37
39
  * Porte l'`id` (cible de `aria-controls`) et passe **`inert`** quand c'est fermé : le contenu
@@ -47,7 +49,7 @@ declare class KtDisclosureToggle {
47
49
  * ```
48
50
  */
49
51
  declare class KtDisclosureContent {
50
- readonly disclosure: KtDisclosure;
52
+ readonly disclosure: _ktortu_aaa_disclosure.KtDisclosureInterface;
51
53
  static ɵfac: i0.ɵɵFactoryDeclaration<KtDisclosureContent, never>;
52
54
  static ɵcmp: i0.ɵɵComponentDeclaration<KtDisclosureContent, "kt-disclosure-content", never, {}, {}, never, ["*"], true, never>;
53
55
  }
@@ -76,10 +78,9 @@ declare class KtDisclosureContent {
76
78
  * </div>
77
79
  * ```
78
80
  */
79
- declare class KtDisclosure {
81
+ declare class KtDisclosure implements AfterContentInit {
80
82
  private readonly idGen;
81
83
  private readonly host;
82
- private isDestroyed;
83
84
  /** Identifiant stable du panneau contrôlé : cible de l'`aria-controls` du déclencheur. */
84
85
  readonly contentId: string;
85
86
  /**
@@ -92,7 +93,7 @@ declare class KtDisclosure {
92
93
  private readonly auditEnabled;
93
94
  readonly toggles: i0.Signal<readonly KtDisclosureToggle[]>;
94
95
  readonly contents: i0.Signal<readonly KtDisclosureContent[]>;
95
- constructor();
96
+ ngAfterContentInit(): void;
96
97
  /** Bascule l'état. */
97
98
  toggle(): void;
98
99
  /** Ouvre le panneau. */
@@ -103,10 +104,18 @@ declare class KtDisclosure {
103
104
  static ɵdir: i0.ɵɵDirectiveDeclaration<KtDisclosure, "[ktDisclosure]", ["ktDisclosure"], { "expanded": { "alias": "expanded"; "required": false; "isSignal": true; }; }, { "expanded": "expandedChange"; }, ["toggles", "contents"], never, true, never>;
104
105
  }
105
106
 
107
+ interface KtDisclosureInterface {
108
+ readonly contentId: string;
109
+ readonly expanded: () => boolean;
110
+ toggle(): void;
111
+ }
112
+ declare const KT_DISCLOSURE: InjectionToken<KtDisclosureInterface>;
113
+
106
114
  /**
107
115
  * Import ergonomique de toute la famille disclosure en une fois :
108
116
  * `imports: [KtDisclosureImports]` au lieu d'énumérer chaque marqueur.
109
117
  */
110
118
  declare const KtDisclosureImports: readonly [typeof KtDisclosure, typeof KtDisclosureToggle, typeof KtDisclosureContent];
111
119
 
112
- export { KtDisclosure, KtDisclosureContent, KtDisclosureImports, KtDisclosureToggle };
120
+ export { KT_DISCLOSURE, KtDisclosure, KtDisclosureContent, KtDisclosureImports, KtDisclosureToggle };
121
+ export type { KtDisclosureInterface };
@@ -1,5 +1,5 @@
1
1
  import * as _angular_core from '@angular/core';
2
- import { InjectionToken, Signal, Provider, TemplateRef, ModelSignal, ElementRef, PipeTransform } from '@angular/core';
2
+ import { InjectionToken, Signal, Provider, TemplateRef, ModelSignal, ElementRef, AfterViewInit, PipeTransform } from '@angular/core';
3
3
  import * as _angular_forms_signals from '@angular/forms/signals';
4
4
  import { ValidationError, WithOptionalFieldTree, FormValueControl } from '@angular/forms/signals';
5
5
  import * as _ktortu_aaa_forms from '@ktortu/aaa/forms';
@@ -703,7 +703,7 @@ declare class KtCheckboxGroup<V> implements FormValueControl<V[]> {
703
703
  * </kt-checkbox-group>
704
704
  * ```
705
705
  */
706
- declare class KtCheckbox<V = unknown> implements FormValueControl<boolean> {
706
+ declare class KtCheckbox<V = unknown> implements FormValueControl<boolean>, AfterViewInit {
707
707
  private readonly config;
708
708
  /** Groupe parent optionnel : présent ⇒ la case appartient à un `kt-checkbox-group`. */
709
709
  protected readonly group: KtCheckboxGroup<V> | null;
@@ -766,6 +766,7 @@ declare class KtCheckbox<V = unknown> implements FormValueControl<boolean> {
766
766
  protected readonly resolvedAriaLabel: _angular_core.Signal<string | null>;
767
767
  protected readonly describedBy: _angular_core.Signal<string | null>;
768
768
  constructor();
769
+ ngAfterViewInit(): void;
769
770
  /** Focus la case native (utilisé par Signal Forms `focusBoundControl`). */
770
771
  focus(options?: FocusOptions): void;
771
772
  protected onChange(event: Event): void;