@eagami/ui 5.72.1 → 5.74.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.
@@ -676,6 +676,12 @@ export type EaSize = '2xs' | 'xs' | 'sm' | 'md' | 'lg' | 'xl';
676
676
  * runs one step wider before the jump to full.
677
677
  */
678
678
  export type EaWidth = EaSize | '2xl' | 'full';
679
+ /**
680
+ * Semantic colour scheme shared by every status-carrying component. A
681
+ * component's own variant type (e.g. `BadgeVariant`) aliases this so the set
682
+ * is defined once.
683
+ */
684
+ export type EaStatusVariant = 'default' | 'success' | 'warning' | 'error' | 'info';
679
685
  /**
680
686
  * Single expandable section within an `ea-accordion`. Each item exposes a
681
687
  * header button with the supplied `label`, or with an element projected as
@@ -796,7 +802,7 @@ export declare class AccordionComponent {
796
802
  }, never, ["*"], true, never>;
797
803
  }
798
804
  /** Semantic colour scheme of an alert. Drives icon and palette. */
799
- export type AlertVariant = 'default' | 'success' | 'warning' | 'error' | 'info';
805
+ export type AlertVariant = EaStatusVariant;
800
806
  /** Scales the alert's text, icon, and gap together. */
801
807
  export type AlertSize = EaSize;
802
808
  /** How assistive technology announces an alert. */
@@ -808,7 +814,7 @@ export type AlertLive = 'auto' | 'assertive' | 'polite' | 'off';
808
814
  */
809
815
  export declare class AlertComponent {
810
816
  protected readonly i18n: EagamiI18nService;
811
- readonly variant: import("@angular/core").InputSignal<AlertVariant>;
817
+ readonly variant: import("@angular/core").InputSignal<EaStatusVariant>;
812
818
  readonly size: import("@angular/core").InputSignal<EaSize>;
813
819
  readonly dismissible: import("@angular/core").InputSignal<boolean>;
814
820
  readonly visible: import("@angular/core").ModelSignal<boolean>;
@@ -921,6 +927,86 @@ declare function flattenGroups(groups: readonly SelectOptionGroup[]): SelectOpti
921
927
  * left out, so neither a heading nor a rule can render over nothing.
922
928
  */
923
929
  declare function toRenderedGroups(groups: readonly SelectOptionGroup[]): RenderedGroup[];
930
+ /**
931
+ * Label, hint and validation inputs shared by every form control that renders
932
+ * `<ea-field-messages>`. Controls with an inline label (checkbox, switch)
933
+ * extend this directly; controls with a field label above them extend
934
+ * `LabelledFieldControlBase`.
935
+ */
936
+ export declare abstract class FieldControlBase {
937
+ /** Text label for the control. */
938
+ readonly label: import("@angular/core").InputSignal<string | undefined>;
939
+ /** Helper text shown below the control; hidden while an error is showing. */
940
+ readonly hint: import("@angular/core").InputSignal<string | undefined>;
941
+ /** Error message shown below the control; replaces the hint and flags the control invalid. */
942
+ readonly errorMsg: import("@angular/core").InputSignal<string | undefined>;
943
+ /** Per-validator-key message overrides for a bound form control (e.g. `{ required: '...' }`). */
944
+ readonly errorMessages: import("@angular/core").InputSignal<Partial<Record<string, string | null>> | undefined>;
945
+ /** When the error shows: `'change'` once the user changes the field and leaves it, `'blur'` once they leave it, even unchanged, `'touch'` the same but live while they edit; unset follows the app-wide `forms` option of `provideEagamiUi`. */
946
+ readonly showErrorsOn: import("@angular/core").InputSignal<EaShowErrorsOn | undefined>;
947
+ /** Marks the control as required. */
948
+ readonly required: import("@angular/core").InputSignal<boolean>;
949
+ static ɵfac: i0.ɵɵFactoryDeclaration<FieldControlBase, never>;
950
+ static ɵdir: i0.ɵɵDirectiveDeclaration<FieldControlBase, never, never, {
951
+ "label": {
952
+ "alias": "label";
953
+ "required": false;
954
+ "isSignal": true;
955
+ };
956
+ "hint": {
957
+ "alias": "hint";
958
+ "required": false;
959
+ "isSignal": true;
960
+ };
961
+ "errorMsg": {
962
+ "alias": "errorMsg";
963
+ "required": false;
964
+ "isSignal": true;
965
+ };
966
+ "errorMessages": {
967
+ "alias": "errorMessages";
968
+ "required": false;
969
+ "isSignal": true;
970
+ };
971
+ "showErrorsOn": {
972
+ "alias": "showErrorsOn";
973
+ "required": false;
974
+ "isSignal": true;
975
+ };
976
+ "required": {
977
+ "alias": "required";
978
+ "required": false;
979
+ "isSignal": true;
980
+ };
981
+ }, {}, never, never, true, never>;
982
+ }
983
+ /** Field label inputs on top of `FieldControlBase`, for controls that render `<ea-field-label>`. */
984
+ export declare abstract class LabelledFieldControlBase extends FieldControlBase {
985
+ /** Optional icon component rendered before the label text. */
986
+ readonly labelIcon: import("@angular/core").InputSignal<Type<unknown> | undefined>;
987
+ /** Help revealed by an info button beside the label, as plain text or a template. */
988
+ readonly labelHelp: import("@angular/core").InputSignal<string | TemplateRef<unknown> | undefined>;
989
+ /** Adds a muted "(optional)" note after the label, unless `required` is also set. */
990
+ readonly optional: import("@angular/core").InputSignal<boolean>;
991
+ static ɵfac: i0.ɵɵFactoryDeclaration<LabelledFieldControlBase, never>;
992
+ static ɵdir: i0.ɵɵDirectiveDeclaration<LabelledFieldControlBase, never, never, {
993
+ "labelIcon": {
994
+ "alias": "labelIcon";
995
+ "required": false;
996
+ "isSignal": true;
997
+ };
998
+ "labelHelp": {
999
+ "alias": "labelHelp";
1000
+ "required": false;
1001
+ "isSignal": true;
1002
+ };
1003
+ "optional": {
1004
+ "alias": "optional";
1005
+ "required": false;
1006
+ "isSignal": true;
1007
+ };
1008
+ }, {}, never, never, true, never>;
1009
+ }
924
1010
  /** Visual size of the autocomplete input. */
925
1011
  export type AutocompleteSize = EaSize;
926
1012
  /**
@@ -929,16 +1015,9 @@ export type AutocompleteSize = EaSize;
929
1015
  * implements `ControlValueAccessor` for use with reactive and template-driven
930
1016
  * forms.
931
1017
  */
932
- export declare class AutocompleteComponent implements ControlValueAccessor {
1018
+ export declare class AutocompleteComponent extends LabelledFieldControlBase implements ControlValueAccessor {
933
1019
  private readonly inputEl;
934
1020
  private readonly i18n;
935
- readonly label: import("@angular/core").InputSignal<string | undefined>;
936
- /** Optional icon component rendered before the label text. */
937
- readonly labelIcon: import("@angular/core").InputSignal<Type<unknown> | undefined>;
938
- /** Help revealed by an info button beside the label, as plain text or a template. */
939
- readonly labelHelp: import("@angular/core").InputSignal<string | TemplateRef<unknown> | undefined>;
940
- /** Adds a muted "(optional)" note after the label, unless `required` is also set. */
941
- readonly optional: import("@angular/core").InputSignal<boolean>;
942
1021
  /** Accessible name for the input and suggestion list when no visible label is provided. */
943
1022
  readonly ariaLabel: import("@angular/core").InputSignal<string | undefined>;
944
1023
  readonly placeholder: import("@angular/core").InputSignal<string>;
@@ -947,13 +1026,6 @@ export declare class AutocompleteComponent implements ControlValueAccessor {
947
1026
  readonly size: import("@angular/core").InputSignal<EaSize>;
948
1027
  readonly disabled: import("@angular/core").InputSignal<boolean>;
949
1028
  readonly readonly: import("@angular/core").InputSignal<boolean>;
950
- readonly required: import("@angular/core").InputSignal<boolean>;
951
- readonly hint: import("@angular/core").InputSignal<string | undefined>;
952
- readonly errorMsg: import("@angular/core").InputSignal<string | undefined>;
953
- /** Per-validator-key message overrides for a bound form control (e.g. `{ required: '...' }`). */
954
- readonly errorMessages: import("@angular/core").InputSignal<Partial<Record<string, string | null>> | undefined>;
955
- /** When the error shows: `'change'` once the user changes the field and leaves it, `'blur'` once they leave it, even unchanged, `'touch'` the same but live while they edit; unset follows the app-wide `forms` option of `provideEagamiUi`. */
956
- readonly showErrorsOn: import("@angular/core").InputSignal<EaShowErrorsOn | undefined>;
957
1029
  readonly minLength: import("@angular/core").InputSignal<number>;
958
1030
  /** Maximum number of characters the input accepts (native `maxlength`). */
959
1031
  readonly maxLength: import("@angular/core").InputSignal<number | undefined>;
@@ -1021,26 +1093,6 @@ export declare class AutocompleteComponent implements ControlValueAccessor {
1021
1093
  private moveFocus;
1022
1094
  static ɵfac: i0.ɵɵFactoryDeclaration<AutocompleteComponent, never>;
1023
1095
  static ɵcmp: i0.ɵɵComponentDeclaration<AutocompleteComponent, "ea-autocomplete", never, {
1024
- "label": {
1025
- "alias": "label";
1026
- "required": false;
1027
- "isSignal": true;
1028
- };
1029
- "labelIcon": {
1030
- "alias": "labelIcon";
1031
- "required": false;
1032
- "isSignal": true;
1033
- };
1034
- "labelHelp": {
1035
- "alias": "labelHelp";
1036
- "required": false;
1037
- "isSignal": true;
1038
- };
1039
- "optional": {
1040
- "alias": "optional";
1041
- "required": false;
1042
- "isSignal": true;
1043
- };
1044
1096
  "ariaLabel": {
1045
1097
  "alias": "ariaLabel";
1046
1098
  "required": false;
@@ -1071,31 +1123,6 @@ export declare class AutocompleteComponent implements ControlValueAccessor {
1071
1123
  "required": false;
1072
1124
  "isSignal": true;
1073
1125
  };
1074
- "required": {
1075
- "alias": "required";
1076
- "required": false;
1077
- "isSignal": true;
1078
- };
1079
- "hint": {
1080
- "alias": "hint";
1081
- "required": false;
1082
- "isSignal": true;
1083
- };
1084
- "errorMsg": {
1085
- "alias": "errorMsg";
1086
- "required": false;
1087
- "isSignal": true;
1088
- };
1089
- "errorMessages": {
1090
- "alias": "errorMessages";
1091
- "required": false;
1092
- "isSignal": true;
1093
- };
1094
- "showErrorsOn": {
1095
- "alias": "showErrorsOn";
1096
- "required": false;
1097
- "isSignal": true;
1098
- };
1099
1126
  "minLength": {
1100
1127
  "alias": "minLength";
1101
1128
  "required": false;
@@ -1384,7 +1411,7 @@ export declare class AvatarComponent {
1384
1411
  }, {}, never, never, true, never>;
1385
1412
  }
1386
1413
  /** Semantic colour scheme of a badge. */
1387
- export type BadgeVariant = 'default' | 'success' | 'warning' | 'error' | 'info';
1414
+ export type BadgeVariant = EaStatusVariant;
1388
1415
  /** Visual size of a badge. */
1389
1416
  /**
1390
1417
  * The badge ladder sits one step below the shared scale (its `xs` is already
@@ -1403,7 +1430,7 @@ export type BadgeShape = 'pill' | 'pin';
1403
1430
  * surrounding content.
1404
1431
  */
1405
1432
  export declare class BadgeComponent {
1406
- readonly variant: import("@angular/core").InputSignal<BadgeVariant>;
1433
+ readonly variant: import("@angular/core").InputSignal<EaStatusVariant>;
1407
1434
  readonly size: import("@angular/core").InputSignal<BadgeSize>;
1408
1435
  readonly shape: import("@angular/core").InputSignal<BadgeShape>;
1409
1436
  readonly uppercase: import("@angular/core").InputSignal<boolean>;
@@ -2188,8 +2215,7 @@ export type CheckboxSize = EaSize;
2188
2215
  * a visually hidden native input with a custom checkmark and integrates with
2189
2216
  * Angular forms via `ControlValueAccessor`.
2190
2217
  */
2191
- export declare class CheckboxComponent implements ControlValueAccessor {
2192
- readonly label: import("@angular/core").InputSignal<string | undefined>;
2218
+ export declare class CheckboxComponent extends FieldControlBase implements ControlValueAccessor {
2193
2219
  /**
2194
2220
  * Optional supplementary value shown immediately after the label, dimmed
2195
2221
  * to the tertiary text token. Renders inside the same `<span>` as the
@@ -2198,12 +2224,6 @@ export declare class CheckboxComponent implements ControlValueAccessor {
2198
2224
  * fighting flex / inline-flow centring at the consumer's call site.
2199
2225
  */
2200
2226
  readonly count: import("@angular/core").InputSignal<string | number | undefined>;
2201
- readonly hint: import("@angular/core").InputSignal<string | undefined>;
2202
- readonly errorMsg: import("@angular/core").InputSignal<string | undefined>;
2203
- /** Per-validator-key message overrides for a bound form control (e.g. `{ required: '...' }`). */
2204
- readonly errorMessages: import("@angular/core").InputSignal<Partial<Record<string, string | null>> | undefined>;
2205
- /** When the error shows: `'change'` once the user changes the field and leaves it, `'blur'` once they leave it, even unchanged, `'touch'` the same but live while they edit; unset follows the app-wide `forms` option of `provideEagamiUi`. */
2206
- readonly showErrorsOn: import("@angular/core").InputSignal<EaShowErrorsOn | undefined>;
2207
2227
  readonly size: import("@angular/core").InputSignal<EaSize>;
2208
2228
  /**
2209
2229
  * Ellipsize a label too long for the space the checkbox is given, revealing
@@ -2212,9 +2232,10 @@ export declare class CheckboxComponent implements ControlValueAccessor {
2212
2232
  */
2213
2233
  readonly truncate: import("@angular/core").InputSignal<boolean>;
2214
2234
  readonly disabled: import("@angular/core").InputSignal<boolean>;
2215
- readonly required: import("@angular/core").InputSignal<boolean>;
2216
2235
  readonly indeterminate: import("@angular/core").InputSignal<boolean>;
2217
2236
  readonly ariaLabel: import("@angular/core").InputSignal<string | undefined>;
2237
+ /** Space-separated ids of the elements whose text names the checkbox, such as a label outside the component. */
2238
+ readonly ariaLabelledby: import("@angular/core").InputSignal<string | undefined>;
2218
2239
  readonly id: import("@angular/core").InputSignal<string>;
2219
2240
  readonly checked: import("@angular/core").ModelSignal<boolean>;
2220
2241
  /** Fires with the new checked state whenever the user toggles the checkbox. */
@@ -2246,36 +2267,11 @@ export declare class CheckboxComponent implements ControlValueAccessor {
2246
2267
  handleChange(): void;
2247
2268
  static ɵfac: i0.ɵɵFactoryDeclaration<CheckboxComponent, never>;
2248
2269
  static ɵcmp: i0.ɵɵComponentDeclaration<CheckboxComponent, "ea-checkbox", never, {
2249
- "label": {
2250
- "alias": "label";
2251
- "required": false;
2252
- "isSignal": true;
2253
- };
2254
2270
  "count": {
2255
2271
  "alias": "count";
2256
2272
  "required": false;
2257
2273
  "isSignal": true;
2258
2274
  };
2259
- "hint": {
2260
- "alias": "hint";
2261
- "required": false;
2262
- "isSignal": true;
2263
- };
2264
- "errorMsg": {
2265
- "alias": "errorMsg";
2266
- "required": false;
2267
- "isSignal": true;
2268
- };
2269
- "errorMessages": {
2270
- "alias": "errorMessages";
2271
- "required": false;
2272
- "isSignal": true;
2273
- };
2274
- "showErrorsOn": {
2275
- "alias": "showErrorsOn";
2276
- "required": false;
2277
- "isSignal": true;
2278
- };
2279
2275
  "size": {
2280
2276
  "alias": "size";
2281
2277
  "required": false;
@@ -2291,11 +2287,6 @@ export declare class CheckboxComponent implements ControlValueAccessor {
2291
2287
  "required": false;
2292
2288
  "isSignal": true;
2293
2289
  };
2294
- "required": {
2295
- "alias": "required";
2296
- "required": false;
2297
- "isSignal": true;
2298
- };
2299
2290
  "indeterminate": {
2300
2291
  "alias": "indeterminate";
2301
2292
  "required": false;
@@ -2306,6 +2297,11 @@ export declare class CheckboxComponent implements ControlValueAccessor {
2306
2297
  "required": false;
2307
2298
  "isSignal": true;
2308
2299
  };
2300
+ "ariaLabelledby": {
2301
+ "alias": "aria-labelledby";
2302
+ "required": false;
2303
+ "isSignal": true;
2304
+ };
2309
2305
  "id": {
2310
2306
  "alias": "id";
2311
2307
  "required": false;
@@ -2569,31 +2565,17 @@ interface Rgb {
2569
2565
  * and an eyedropper (Chromium browsers). Integrates with Angular forms via
2570
2566
  * `ControlValueAccessor`. Accepts any CSS color string in `writeValue`.
2571
2567
  */
2572
- export declare class ColorPickerComponent implements ControlValueAccessor {
2568
+ export declare class ColorPickerComponent extends LabelledFieldControlBase implements ControlValueAccessor {
2573
2569
  protected readonly triggerEl: import("@angular/core").Signal<ElementRef<HTMLButtonElement> | undefined>;
2574
2570
  private readonly svAreaEl;
2575
2571
  private readonly hueTrackEl;
2576
2572
  private readonly alphaTrackEl;
2577
2573
  private readonly injector;
2578
2574
  protected readonly i18n: EagamiI18nService;
2579
- readonly label: import("@angular/core").InputSignal<string | undefined>;
2580
- /** Optional icon component rendered before the label text. */
2581
- readonly labelIcon: import("@angular/core").InputSignal<Type<unknown> | undefined>;
2582
- /** Help revealed by an info button beside the label, as plain text or a template. */
2583
- readonly labelHelp: import("@angular/core").InputSignal<string | TemplateRef<unknown> | undefined>;
2584
- /** Adds a muted "(optional)" note after the label, unless `required` is also set. */
2585
- readonly optional: import("@angular/core").InputSignal<boolean>;
2586
2575
  readonly placeholder: import("@angular/core").InputSignal<string | undefined>;
2587
2576
  readonly size: import("@angular/core").InputSignal<EaSize>;
2588
2577
  readonly disabled: import("@angular/core").InputSignal<boolean>;
2589
2578
  readonly readonly: import("@angular/core").InputSignal<boolean>;
2590
- readonly required: import("@angular/core").InputSignal<boolean>;
2591
- readonly hint: import("@angular/core").InputSignal<string | undefined>;
2592
- readonly errorMsg: import("@angular/core").InputSignal<string | undefined>;
2593
- /** Per-validator-key message overrides for a bound form control (e.g. `{ required: '...' }`). */
2594
- readonly errorMessages: import("@angular/core").InputSignal<Partial<Record<string, string | null>> | undefined>;
2595
- /** When the error shows: `'change'` once the user changes the field and leaves it, `'blur'` once they leave it, even unchanged, `'touch'` the same but live while they edit; unset follows the app-wide `forms` option of `provideEagamiUi`. */
2596
- readonly showErrorsOn: import("@angular/core").InputSignal<EaShowErrorsOn | undefined>;
2597
2579
  /** Whether to show the alpha slider. When `false` the emitted value always has alpha = 1. */
2598
2580
  readonly showAlpha: import("@angular/core").InputSignal<boolean>;
2599
2581
  /** Whether to show the clear button when a value is set. */
@@ -2748,26 +2730,6 @@ export declare class ColorPickerComponent implements ControlValueAccessor {
2748
2730
  private refreshHexInput;
2749
2731
  static ɵfac: i0.ɵɵFactoryDeclaration<ColorPickerComponent, never>;
2750
2732
  static ɵcmp: i0.ɵɵComponentDeclaration<ColorPickerComponent, "ea-color-picker", never, {
2751
- "label": {
2752
- "alias": "label";
2753
- "required": false;
2754
- "isSignal": true;
2755
- };
2756
- "labelIcon": {
2757
- "alias": "labelIcon";
2758
- "required": false;
2759
- "isSignal": true;
2760
- };
2761
- "labelHelp": {
2762
- "alias": "labelHelp";
2763
- "required": false;
2764
- "isSignal": true;
2765
- };
2766
- "optional": {
2767
- "alias": "optional";
2768
- "required": false;
2769
- "isSignal": true;
2770
- };
2771
2733
  "placeholder": {
2772
2734
  "alias": "placeholder";
2773
2735
  "required": false;
@@ -2788,31 +2750,6 @@ export declare class ColorPickerComponent implements ControlValueAccessor {
2788
2750
  "required": false;
2789
2751
  "isSignal": true;
2790
2752
  };
2791
- "required": {
2792
- "alias": "required";
2793
- "required": false;
2794
- "isSignal": true;
2795
- };
2796
- "hint": {
2797
- "alias": "hint";
2798
- "required": false;
2799
- "isSignal": true;
2800
- };
2801
- "errorMsg": {
2802
- "alias": "errorMsg";
2803
- "required": false;
2804
- "isSignal": true;
2805
- };
2806
- "errorMessages": {
2807
- "alias": "errorMessages";
2808
- "required": false;
2809
- "isSignal": true;
2810
- };
2811
- "showErrorsOn": {
2812
- "alias": "showErrorsOn";
2813
- "required": false;
2814
- "isSignal": true;
2815
- };
2816
2753
  "showAlpha": {
2817
2754
  "alias": "showAlpha";
2818
2755
  "required": false;
@@ -3074,8 +3011,8 @@ export type PopoverRole = 'menu' | 'listbox' | 'dialog' | 'tooltip' | 'grid';
3074
3011
  * guaranteed not to move (e.g. inside a non-scrolling region).
3075
3012
  */
3076
3013
  export type PopoverScrollBehavior = 'reposition' | 'close' | 'ignore';
3077
- /** Width cap for a popover surface: px, or the anchor's own width. */
3078
- export type PopoverMaxWidth = number | 'anchor';
3014
+ /** Width cap for a popover surface: a CSS length, or `'anchor'` for the anchor's own width. */
3015
+ export type PopoverMaxWidth = string;
3079
3016
  /**
3080
3017
  * Floating-element primitive. Renders projected content as `position: fixed`
3081
3018
  * anchored to an external element, with flip-on-overflow, viewport clamping,
@@ -3134,10 +3071,10 @@ export declare class PopoverComponent {
3134
3071
  /** Set the popover's `min-width` to match the anchor's width (dropdown pattern). */
3135
3072
  readonly matchAnchorWidth: import("@angular/core").InputSignal<boolean>;
3136
3073
  /**
3137
- * Widest the surface may grow: a px value, or `anchor` to cap it at the
3074
+ * Widest the surface may grow: a CSS length, or `anchor` to cap it at the
3138
3075
  * anchor's own width so long content truncates instead of widening the panel.
3139
3076
  */
3140
- readonly maxWidth: import("@angular/core").InputSignal<PopoverMaxWidth | undefined>;
3077
+ readonly maxWidth: import("@angular/core").InputSignal<string | undefined>;
3141
3078
  /** Close on click outside the popover and the anchor. */
3142
3079
  readonly closeOnOutsideClick: import("@angular/core").InputSignal<boolean>;
3143
3080
  /** Close on Escape. */
@@ -3635,35 +3572,23 @@ export type CodeInputSize = EaSize;
3635
3572
  * input, supports paste of the full code at once, and integrates with Angular
3636
3573
  * forms via `ControlValueAccessor`.
3637
3574
  */
3638
- export declare class CodeInputComponent implements ControlValueAccessor {
3575
+ export declare class CodeInputComponent extends LabelledFieldControlBase implements ControlValueAccessor {
3639
3576
  readonly digitEls: import("@angular/core").Signal<readonly ElementRef<HTMLInputElement>[]>;
3640
3577
  protected readonly i18n: EagamiI18nService;
3641
- readonly label: import("@angular/core").InputSignal<string | undefined>;
3642
3578
  /** Space-separated ids of the elements whose text names the group of digit fields, such as a label outside the component. */
3643
3579
  readonly ariaLabelledby: import("@angular/core").InputSignal<string | undefined>;
3644
- /** Optional icon component rendered before the label text. */
3645
- readonly labelIcon: import("@angular/core").InputSignal<Type<unknown> | undefined>;
3646
- /** Help revealed by an info button beside the label, as plain text or a template. */
3647
- readonly labelHelp: import("@angular/core").InputSignal<string | TemplateRef<unknown> | undefined>;
3648
- /** Adds a muted "(optional)" note after the label, unless `required` is also set. */
3649
- readonly optional: import("@angular/core").InputSignal<boolean>;
3650
3580
  /** Placeholder text spread one character per cell (cell i shows character i). */
3651
3581
  readonly placeholder: import("@angular/core").InputSignal<string>;
3652
3582
  readonly length: import("@angular/core").InputSignal<number>;
3653
3583
  readonly size: import("@angular/core").InputSignal<EaSize>;
3654
- readonly hint: import("@angular/core").InputSignal<string | undefined>;
3655
- readonly errorMsg: import("@angular/core").InputSignal<string | undefined>;
3656
- /** Per-validator-key message overrides for a bound form control (e.g. `{ required: '...' }`). */
3657
- readonly errorMessages: import("@angular/core").InputSignal<Partial<Record<string, string | null>> | undefined>;
3658
- /** When the error shows: `'change'` once the user changes the field and leaves it, `'blur'` once they leave it, even unchanged, `'touch'` the same but live while they edit; unset follows the app-wide `forms` option of `provideEagamiUi`. */
3659
- readonly showErrorsOn: import("@angular/core").InputSignal<EaShowErrorsOn | undefined>;
3660
3584
  readonly disabled: import("@angular/core").InputSignal<boolean>;
3661
3585
  readonly readonly: import("@angular/core").InputSignal<boolean>;
3662
- readonly required: import("@angular/core").InputSignal<boolean>;
3663
3586
  /** Allow any non-whitespace character; when false (default) only digits are accepted. */
3664
3587
  readonly allowAllChars: import("@angular/core").InputSignal<boolean>;
3665
3588
  readonly id: import("@angular/core").InputSignal<string>;
3666
3589
  readonly value: import("@angular/core").ModelSignal<string>;
3590
+ /** Fires with the new value whenever the user edits the code. */
3591
+ readonly changed: import("@angular/core").OutputEmitterRef<string>;
3667
3592
  readonly focusedIndex: import("@angular/core").WritableSignal<number>;
3668
3593
  private readonly _formDisabled;
3669
3594
  /** Fires with the full code once every digit has been entered. */
@@ -3694,33 +3619,13 @@ export declare class CodeInputComponent implements ControlValueAccessor {
3694
3619
  private focusDigit;
3695
3620
  static ɵfac: i0.ɵɵFactoryDeclaration<CodeInputComponent, never>;
3696
3621
  static ɵcmp: i0.ɵɵComponentDeclaration<CodeInputComponent, "ea-code-input", never, {
3697
- "label": {
3698
- "alias": "label";
3699
- "required": false;
3700
- "isSignal": true;
3701
- };
3702
3622
  "ariaLabelledby": {
3703
3623
  "alias": "aria-labelledby";
3704
3624
  "required": false;
3705
3625
  "isSignal": true;
3706
3626
  };
3707
- "labelIcon": {
3708
- "alias": "labelIcon";
3709
- "required": false;
3710
- "isSignal": true;
3711
- };
3712
- "labelHelp": {
3713
- "alias": "labelHelp";
3714
- "required": false;
3715
- "isSignal": true;
3716
- };
3717
- "optional": {
3718
- "alias": "optional";
3719
- "required": false;
3720
- "isSignal": true;
3721
- };
3722
- "placeholder": {
3723
- "alias": "placeholder";
3627
+ "placeholder": {
3628
+ "alias": "placeholder";
3724
3629
  "required": false;
3725
3630
  "isSignal": true;
3726
3631
  };
@@ -3734,26 +3639,6 @@ export declare class CodeInputComponent implements ControlValueAccessor {
3734
3639
  "required": false;
3735
3640
  "isSignal": true;
3736
3641
  };
3737
- "hint": {
3738
- "alias": "hint";
3739
- "required": false;
3740
- "isSignal": true;
3741
- };
3742
- "errorMsg": {
3743
- "alias": "errorMsg";
3744
- "required": false;
3745
- "isSignal": true;
3746
- };
3747
- "errorMessages": {
3748
- "alias": "errorMessages";
3749
- "required": false;
3750
- "isSignal": true;
3751
- };
3752
- "showErrorsOn": {
3753
- "alias": "showErrorsOn";
3754
- "required": false;
3755
- "isSignal": true;
3756
- };
3757
3642
  "disabled": {
3758
3643
  "alias": "disabled";
3759
3644
  "required": false;
@@ -3764,11 +3649,6 @@ export declare class CodeInputComponent implements ControlValueAccessor {
3764
3649
  "required": false;
3765
3650
  "isSignal": true;
3766
3651
  };
3767
- "required": {
3768
- "alias": "required";
3769
- "required": false;
3770
- "isSignal": true;
3771
- };
3772
3652
  "allowAllChars": {
3773
3653
  "alias": "allowAllChars";
3774
3654
  "required": false;
@@ -3786,6 +3666,7 @@ export declare class CodeInputComponent implements ControlValueAccessor {
3786
3666
  };
3787
3667
  }, {
3788
3668
  "value": "valueChange";
3669
+ "changed": "changed";
3789
3670
  "completed": "completed";
3790
3671
  }, never, never, true, never>;
3791
3672
  }
@@ -3820,18 +3701,11 @@ interface CalendarDay {
3820
3701
  * navigation (arrows, PageUp/PageDown, Home/End, Enter, Escape). Integrates
3821
3702
  * with Angular forms via `ControlValueAccessor`.
3822
3703
  */
3823
- export declare class DatePickerComponent implements ControlValueAccessor {
3704
+ export declare class DatePickerComponent extends LabelledFieldControlBase implements ControlValueAccessor {
3824
3705
  protected readonly fieldEl: import("@angular/core").Signal<ElementRef<HTMLElement> | undefined>;
3825
3706
  protected readonly inputEl: import("@angular/core").Signal<ElementRef<HTMLInputElement> | undefined>;
3826
3707
  private readonly injector;
3827
3708
  protected readonly i18n: EagamiI18nService;
3828
- readonly label: import("@angular/core").InputSignal<string | undefined>;
3829
- /** Optional icon component rendered before the label text. */
3830
- readonly labelIcon: import("@angular/core").InputSignal<Type<unknown> | undefined>;
3831
- /** Help revealed by an info button beside the label, as plain text or a template. */
3832
- readonly labelHelp: import("@angular/core").InputSignal<string | TemplateRef<unknown> | undefined>;
3833
- /** Adds a muted "(optional)" note after the label, unless `required` is also set. */
3834
- readonly optional: import("@angular/core").InputSignal<boolean>;
3835
3709
  /** Placeholder shown in the field when no date is selected. */
3836
3710
  readonly placeholder: import("@angular/core").InputSignal<string | undefined>;
3837
3711
  /** Space-separated ids of the elements whose text names the field, such as a label outside the component. */
@@ -3839,13 +3713,6 @@ export declare class DatePickerComponent implements ControlValueAccessor {
3839
3713
  readonly size: import("@angular/core").InputSignal<EaSize>;
3840
3714
  readonly disabled: import("@angular/core").InputSignal<boolean>;
3841
3715
  readonly readonly: import("@angular/core").InputSignal<boolean>;
3842
- readonly required: import("@angular/core").InputSignal<boolean>;
3843
- readonly hint: import("@angular/core").InputSignal<string | undefined>;
3844
- readonly errorMsg: import("@angular/core").InputSignal<string | undefined>;
3845
- /** Per-validator-key message overrides for a bound form control (e.g. `{ required: '...' }`). */
3846
- readonly errorMessages: import("@angular/core").InputSignal<Partial<Record<string, string | null>> | undefined>;
3847
- /** When the error shows: `'change'` once the user changes the field and leaves it, `'blur'` once they leave it, even unchanged, `'touch'` the same but live while they edit; unset follows the app-wide `forms` option of `provideEagamiUi`. */
3848
- readonly showErrorsOn: import("@angular/core").InputSignal<EaShowErrorsOn | undefined>;
3849
3716
  readonly minDate: import("@angular/core").InputSignal<Date | null>;
3850
3717
  readonly maxDate: import("@angular/core").InputSignal<Date | null>;
3851
3718
  /** Weekdays that cannot be picked, numbered as `Date.getDay()` does: 0 for Sunday through 6 for Saturday. */
@@ -3953,26 +3820,6 @@ export declare class DatePickerComponent implements ControlValueAccessor {
3953
3820
  private addMonths;
3954
3821
  static ɵfac: i0.ɵɵFactoryDeclaration<DatePickerComponent, never>;
3955
3822
  static ɵcmp: i0.ɵɵComponentDeclaration<DatePickerComponent, "ea-date-picker", never, {
3956
- "label": {
3957
- "alias": "label";
3958
- "required": false;
3959
- "isSignal": true;
3960
- };
3961
- "labelIcon": {
3962
- "alias": "labelIcon";
3963
- "required": false;
3964
- "isSignal": true;
3965
- };
3966
- "labelHelp": {
3967
- "alias": "labelHelp";
3968
- "required": false;
3969
- "isSignal": true;
3970
- };
3971
- "optional": {
3972
- "alias": "optional";
3973
- "required": false;
3974
- "isSignal": true;
3975
- };
3976
3823
  "placeholder": {
3977
3824
  "alias": "placeholder";
3978
3825
  "required": false;
@@ -3998,31 +3845,6 @@ export declare class DatePickerComponent implements ControlValueAccessor {
3998
3845
  "required": false;
3999
3846
  "isSignal": true;
4000
3847
  };
4001
- "required": {
4002
- "alias": "required";
4003
- "required": false;
4004
- "isSignal": true;
4005
- };
4006
- "hint": {
4007
- "alias": "hint";
4008
- "required": false;
4009
- "isSignal": true;
4010
- };
4011
- "errorMsg": {
4012
- "alias": "errorMsg";
4013
- "required": false;
4014
- "isSignal": true;
4015
- };
4016
- "errorMessages": {
4017
- "alias": "errorMessages";
4018
- "required": false;
4019
- "isSignal": true;
4020
- };
4021
- "showErrorsOn": {
4022
- "alias": "showErrorsOn";
4023
- "required": false;
4024
- "isSignal": true;
4025
- };
4026
3848
  "minDate": {
4027
3849
  "alias": "minDate";
4028
3850
  "required": false;
@@ -4488,36 +4310,22 @@ export type DropdownSize = EaSize;
4488
4310
  * trigger and a search field above the options. Positioning, dismissal, and
4489
4311
  * SSR-safe scroll handling are provided by `<ea-popover>`.
4490
4312
  */
4491
- export declare class DropdownComponent implements ControlValueAccessor {
4313
+ export declare class DropdownComponent extends LabelledFieldControlBase implements ControlValueAccessor {
4492
4314
  private readonly elRef;
4493
4315
  private readonly popover;
4494
4316
  private readonly searchEl;
4495
4317
  protected readonly i18n: EagamiI18nService;
4496
4318
  private readonly injector;
4497
- readonly label: import("@angular/core").InputSignal<string | undefined>;
4498
- /** Optional icon component rendered before the label text. */
4499
- readonly labelIcon: import("@angular/core").InputSignal<Type<unknown> | undefined>;
4500
- /** Help revealed by an info button beside the label, as plain text or a template. */
4501
- readonly labelHelp: import("@angular/core").InputSignal<string | TemplateRef<unknown> | undefined>;
4502
- /** Adds a muted "(optional)" note after the label, unless `required` is also set. */
4503
- readonly optional: import("@angular/core").InputSignal<boolean>;
4504
4319
  readonly placeholder: import("@angular/core").InputSignal<string | undefined>;
4505
4320
  /** Selectable options, either flat or split into groups. */
4506
4321
  readonly options: import("@angular/core").InputSignal<SelectOptions>;
4507
4322
  readonly size: import("@angular/core").InputSignal<EaSize>;
4508
4323
  readonly disabled: import("@angular/core").InputSignal<boolean>;
4509
4324
  readonly readonly: import("@angular/core").InputSignal<boolean>;
4510
- readonly required: import("@angular/core").InputSignal<boolean>;
4511
4325
  /** Shows a clear button on the trigger while an option is selected. */
4512
4326
  readonly clearable: import("@angular/core").InputSignal<boolean>;
4513
4327
  /** Adds a search field above the options that filters them as the user types. */
4514
4328
  readonly searchable: import("@angular/core").InputSignal<boolean>;
4515
- readonly hint: import("@angular/core").InputSignal<string | undefined>;
4516
- readonly errorMsg: import("@angular/core").InputSignal<string | undefined>;
4517
- /** Per-validator-key message overrides for a bound form control (e.g. `{ required: '...' }`). */
4518
- readonly errorMessages: import("@angular/core").InputSignal<Partial<Record<string, string | null>> | undefined>;
4519
- /** When the error shows: `'change'` once the user changes the field and leaves it, `'blur'` once they leave it, even unchanged, `'touch'` the same but live while they edit; unset follows the app-wide `forms` option of `provideEagamiUi`. */
4520
- readonly showErrorsOn: import("@angular/core").InputSignal<EaShowErrorsOn | undefined>;
4521
4329
  readonly id: import("@angular/core").InputSignal<string>;
4522
4330
  readonly value: import("@angular/core").ModelSignal<string>;
4523
4331
  /** Fires with the new value when the user selects an option or clears the selection. */
@@ -4598,26 +4406,6 @@ export declare class DropdownComponent implements ControlValueAccessor {
4598
4406
  private moveFocus;
4599
4407
  static ɵfac: i0.ɵɵFactoryDeclaration<DropdownComponent, never>;
4600
4408
  static ɵcmp: i0.ɵɵComponentDeclaration<DropdownComponent, "ea-dropdown", never, {
4601
- "label": {
4602
- "alias": "label";
4603
- "required": false;
4604
- "isSignal": true;
4605
- };
4606
- "labelIcon": {
4607
- "alias": "labelIcon";
4608
- "required": false;
4609
- "isSignal": true;
4610
- };
4611
- "labelHelp": {
4612
- "alias": "labelHelp";
4613
- "required": false;
4614
- "isSignal": true;
4615
- };
4616
- "optional": {
4617
- "alias": "optional";
4618
- "required": false;
4619
- "isSignal": true;
4620
- };
4621
4409
  "placeholder": {
4622
4410
  "alias": "placeholder";
4623
4411
  "required": false;
@@ -4643,11 +4431,6 @@ export declare class DropdownComponent implements ControlValueAccessor {
4643
4431
  "required": false;
4644
4432
  "isSignal": true;
4645
4433
  };
4646
- "required": {
4647
- "alias": "required";
4648
- "required": false;
4649
- "isSignal": true;
4650
- };
4651
4434
  "clearable": {
4652
4435
  "alias": "clearable";
4653
4436
  "required": false;
@@ -4658,26 +4441,6 @@ export declare class DropdownComponent implements ControlValueAccessor {
4658
4441
  "required": false;
4659
4442
  "isSignal": true;
4660
4443
  };
4661
- "hint": {
4662
- "alias": "hint";
4663
- "required": false;
4664
- "isSignal": true;
4665
- };
4666
- "errorMsg": {
4667
- "alias": "errorMsg";
4668
- "required": false;
4669
- "isSignal": true;
4670
- };
4671
- "errorMessages": {
4672
- "alias": "errorMessages";
4673
- "required": false;
4674
- "isSignal": true;
4675
- };
4676
- "showErrorsOn": {
4677
- "alias": "showErrorsOn";
4678
- "required": false;
4679
- "isSignal": true;
4680
- };
4681
4444
  "id": {
4682
4445
  "alias": "id";
4683
4446
  "required": false;
@@ -4907,26 +4670,8 @@ export type FormFieldSize = EaSize;
4907
4670
  * projected control can't be reached before it exists; the server ships the
4908
4671
  * plain markup and the associations complete on hydration.
4909
4672
  */
4910
- export declare class FormFieldComponent {
4673
+ export declare class FormFieldComponent extends LabelledFieldControlBase {
4911
4674
  private readonly host;
4912
- /** Text label rendered above the control. */
4913
- readonly label: import("@angular/core").InputSignal<string | undefined>;
4914
- /** Optional icon component rendered before the label text. */
4915
- readonly labelIcon: import("@angular/core").InputSignal<Type<unknown> | undefined>;
4916
- /** Help revealed by an info button beside the label, as plain text or a template. */
4917
- readonly labelHelp: import("@angular/core").InputSignal<string | TemplateRef<unknown> | undefined>;
4918
- /** Adds a muted "(optional)" note after the label, unless `required` is also set. */
4919
- readonly optional: import("@angular/core").InputSignal<boolean>;
4920
- /** Helper text shown below the control; hidden while an error is showing. */
4921
- readonly hint: import("@angular/core").InputSignal<string | undefined>;
4922
- /** Error message shown below the control; replaces the hint and flags the field invalid. */
4923
- readonly errorMsg: import("@angular/core").InputSignal<string | undefined>;
4924
- /** Per-validator-key message overrides for the projected form control (e.g. `{ required: '...' }`). */
4925
- readonly errorMessages: import("@angular/core").InputSignal<Partial<Record<string, string | null>> | undefined>;
4926
- /** When the error shows: `'change'` once the user changes the field and leaves it, `'blur'` once they leave it, even unchanged, `'touch'` the same but live while they edit; unset follows the app-wide `forms` option of `provideEagamiUi`. */
4927
- readonly showErrorsOn: import("@angular/core").InputSignal<EaShowErrorsOn | undefined>;
4928
- /** Marks the field as required. */
4929
- readonly required: import("@angular/core").InputSignal<boolean>;
4930
4675
  /** Visual size of the field; the label, control text, spacing, and messages scale with it. */
4931
4676
  readonly size: import("@angular/core").InputSignal<EaSize>;
4932
4677
  /** id seed for the label and message wiring; auto-generated when omitted. */
@@ -4944,51 +4689,6 @@ export declare class FormFieldComponent {
4944
4689
  constructor();
4945
4690
  static ɵfac: i0.ɵɵFactoryDeclaration<FormFieldComponent, never>;
4946
4691
  static ɵcmp: i0.ɵɵComponentDeclaration<FormFieldComponent, "ea-form-field", never, {
4947
- "label": {
4948
- "alias": "label";
4949
- "required": false;
4950
- "isSignal": true;
4951
- };
4952
- "labelIcon": {
4953
- "alias": "labelIcon";
4954
- "required": false;
4955
- "isSignal": true;
4956
- };
4957
- "labelHelp": {
4958
- "alias": "labelHelp";
4959
- "required": false;
4960
- "isSignal": true;
4961
- };
4962
- "optional": {
4963
- "alias": "optional";
4964
- "required": false;
4965
- "isSignal": true;
4966
- };
4967
- "hint": {
4968
- "alias": "hint";
4969
- "required": false;
4970
- "isSignal": true;
4971
- };
4972
- "errorMsg": {
4973
- "alias": "errorMsg";
4974
- "required": false;
4975
- "isSignal": true;
4976
- };
4977
- "errorMessages": {
4978
- "alias": "errorMessages";
4979
- "required": false;
4980
- "isSignal": true;
4981
- };
4982
- "showErrorsOn": {
4983
- "alias": "showErrorsOn";
4984
- "required": false;
4985
- "isSignal": true;
4986
- };
4987
- "required": {
4988
- "alias": "required";
4989
- "required": false;
4990
- "isSignal": true;
4991
- };
4992
4692
  "size": {
4993
4693
  "alias": "size";
4994
4694
  "required": false;
@@ -5099,24 +4799,11 @@ export interface FileUploaderRejection {
5099
4799
  * [multiple]="false" />
5100
4800
  * ```
5101
4801
  */
5102
- export declare class FileUploaderComponent implements ControlValueAccessor {
4802
+ export declare class FileUploaderComponent extends LabelledFieldControlBase implements ControlValueAccessor {
5103
4803
  private readonly fileInputEl;
5104
4804
  private readonly dropzoneEl;
5105
4805
  private readonly pickerButton;
5106
4806
  protected readonly i18n: EagamiI18nService;
5107
- readonly label: import("@angular/core").InputSignal<string | undefined>;
5108
- /** Optional icon component rendered before the label text. */
5109
- readonly labelIcon: import("@angular/core").InputSignal<Type<unknown> | undefined>;
5110
- /** Help revealed by an info button beside the label, as plain text or a template. */
5111
- readonly labelHelp: import("@angular/core").InputSignal<string | TemplateRef<unknown> | undefined>;
5112
- /** Adds a muted "(optional)" note after the label, unless `required` is also set. */
5113
- readonly optional: import("@angular/core").InputSignal<boolean>;
5114
- readonly hint: import("@angular/core").InputSignal<string | undefined>;
5115
- readonly errorMsg: import("@angular/core").InputSignal<string | undefined>;
5116
- /** Per-validator-key message overrides for a bound form control (e.g. `{ required: '...' }`). */
5117
- readonly errorMessages: import("@angular/core").InputSignal<Partial<Record<string, string | null>> | undefined>;
5118
- /** When the error shows: `'change'` once the user changes the field and leaves it, `'blur'` once they leave it, even unchanged, `'touch'` the same but live while they edit; unset follows the app-wide `forms` option of `provideEagamiUi`. */
5119
- readonly showErrorsOn: import("@angular/core").InputSignal<EaShowErrorsOn | undefined>;
5120
4807
  readonly size: import("@angular/core").InputSignal<EaSize>;
5121
4808
  /**
5122
4809
  * `dropzone` renders the drag-and-drop area; `button` renders a compact
@@ -5136,7 +4823,6 @@ export declare class FileUploaderComponent implements ControlValueAccessor {
5136
4823
  */
5137
4824
  readonly ariaLabel: import("@angular/core").InputSignal<string | undefined>;
5138
4825
  readonly disabled: import("@angular/core").InputSignal<boolean>;
5139
- readonly required: import("@angular/core").InputSignal<boolean>;
5140
4826
  /**
5141
4827
  * Whether a selection adds to the current files or replaces them. Defaults
5142
4828
  * to `true`: picking a second file appends it rather than swapping it in, so
@@ -5231,78 +4917,33 @@ export declare class FileUploaderComponent implements ControlValueAccessor {
5231
4917
  protected trackFile(_index: number, file: File): string;
5232
4918
  static ɵfac: i0.ɵɵFactoryDeclaration<FileUploaderComponent, never>;
5233
4919
  static ɵcmp: i0.ɵɵComponentDeclaration<FileUploaderComponent, "ea-file-uploader", never, {
5234
- "label": {
5235
- "alias": "label";
4920
+ "size": {
4921
+ "alias": "size";
5236
4922
  "required": false;
5237
4923
  "isSignal": true;
5238
4924
  };
5239
- "labelIcon": {
5240
- "alias": "labelIcon";
4925
+ "variant": {
4926
+ "alias": "variant";
5241
4927
  "required": false;
5242
4928
  "isSignal": true;
5243
4929
  };
5244
- "labelHelp": {
5245
- "alias": "labelHelp";
4930
+ "buttonLabel": {
4931
+ "alias": "buttonLabel";
5246
4932
  "required": false;
5247
4933
  "isSignal": true;
5248
4934
  };
5249
- "optional": {
5250
- "alias": "optional";
4935
+ "buttonIcon": {
4936
+ "alias": "buttonIcon";
5251
4937
  "required": false;
5252
4938
  "isSignal": true;
5253
4939
  };
5254
- "hint": {
5255
- "alias": "hint";
4940
+ "ariaLabel": {
4941
+ "alias": "aria-label";
5256
4942
  "required": false;
5257
4943
  "isSignal": true;
5258
4944
  };
5259
- "errorMsg": {
5260
- "alias": "errorMsg";
5261
- "required": false;
5262
- "isSignal": true;
5263
- };
5264
- "errorMessages": {
5265
- "alias": "errorMessages";
5266
- "required": false;
5267
- "isSignal": true;
5268
- };
5269
- "showErrorsOn": {
5270
- "alias": "showErrorsOn";
5271
- "required": false;
5272
- "isSignal": true;
5273
- };
5274
- "size": {
5275
- "alias": "size";
5276
- "required": false;
5277
- "isSignal": true;
5278
- };
5279
- "variant": {
5280
- "alias": "variant";
5281
- "required": false;
5282
- "isSignal": true;
5283
- };
5284
- "buttonLabel": {
5285
- "alias": "buttonLabel";
5286
- "required": false;
5287
- "isSignal": true;
5288
- };
5289
- "buttonIcon": {
5290
- "alias": "buttonIcon";
5291
- "required": false;
5292
- "isSignal": true;
5293
- };
5294
- "ariaLabel": {
5295
- "alias": "aria-label";
5296
- "required": false;
5297
- "isSignal": true;
5298
- };
5299
- "disabled": {
5300
- "alias": "disabled";
5301
- "required": false;
5302
- "isSignal": true;
5303
- };
5304
- "required": {
5305
- "alias": "required";
4945
+ "disabled": {
4946
+ "alias": "disabled";
5306
4947
  "required": false;
5307
4948
  "isSignal": true;
5308
4949
  };
@@ -5381,27 +5022,21 @@ declare function injectTypedPlaceholder(hints: Signal<readonly string[]>): Typed
5381
5022
  /** Visual size of the input. */
5382
5023
  export type InputSize = EaSize;
5383
5024
  /** HTML `type` attribute applied to the underlying `<input>`. */
5384
- export type InputType = 'text' | 'email' | 'password' | 'number' | 'search' | 'tel' | 'url';
5025
+ export type InputType = 'text' | 'email' | 'password' | 'search' | 'tel' | 'url';
5385
5026
  /**
5386
5027
  * Single-line text field with label, hint, and error message support.
5387
5028
  * Includes a built-in show/hide toggle for `password` inputs and integrates
5388
5029
  * with Angular forms via `ControlValueAccessor`. Prefix and suffix content
5389
5030
  * can be projected via the `prefix` and `suffix` slots.
5390
5031
  */
5391
- export declare class InputComponent implements ControlValueAccessor {
5032
+ export declare class InputComponent extends LabelledFieldControlBase implements ControlValueAccessor {
5392
5033
  readonly inputEl: import("@angular/core").Signal<ElementRef<HTMLInputElement> | undefined>;
5393
5034
  private readonly injector;
5394
5035
  protected readonly i18n: EagamiI18nService;
5395
- /** Text label rendered above the field. */
5396
- readonly label: import("@angular/core").InputSignal<string | undefined>;
5397
- /** Optional icon component rendered before the label text. */
5398
- readonly labelIcon: import("@angular/core").InputSignal<Type<unknown> | undefined>;
5399
- /** Help revealed by an info button beside the label, as plain text or a template. */
5400
- readonly labelHelp: import("@angular/core").InputSignal<string | TemplateRef<unknown> | undefined>;
5401
- /** Adds a muted "(optional)" note after the label, unless `required` is also set. */
5402
- readonly optional: import("@angular/core").InputSignal<boolean>;
5403
5036
  /** Accessible name for the control when no visible `label` is set. */
5404
5037
  readonly ariaLabel: import("@angular/core").InputSignal<string | undefined>;
5038
+ /** Space-separated ids of the elements whose text names the field, such as a label outside the component. */
5039
+ readonly ariaLabelledby: import("@angular/core").InputSignal<string | undefined>;
5405
5040
  /** ARIA role applied to the native input, e.g. `combobox` for a typeahead host. */
5406
5041
  readonly role: import("@angular/core").InputSignal<string | undefined>;
5407
5042
  /** Expanded state of a controlled popup, forwarded as `aria-expanded`. */
@@ -5430,33 +5065,17 @@ export declare class InputComponent implements ControlValueAccessor {
5430
5065
  readonly keepIcon: import("@angular/core").InputSignal<boolean>;
5431
5066
  /** Visual size of the field. */
5432
5067
  readonly size: import("@angular/core").InputSignal<EaSize>;
5433
- /** Helper text shown below the field; hidden while an error is showing. */
5434
- readonly hint: import("@angular/core").InputSignal<string | undefined>;
5435
- /** Error message shown below the field; replaces the hint and flags the field invalid. */
5436
- readonly errorMsg: import("@angular/core").InputSignal<string | undefined>;
5437
- /** Per-validator-key message overrides for a bound form control (e.g. `{ required: '...' }`). */
5438
- readonly errorMessages: import("@angular/core").InputSignal<Partial<Record<string, string | null>> | undefined>;
5439
- /** When the error shows: `'change'` once the user changes the field and leaves it, `'blur'` once they leave it, even unchanged, `'touch'` the same but live while they edit; unset follows the app-wide `forms` option of `provideEagamiUi`. */
5440
- readonly showErrorsOn: import("@angular/core").InputSignal<EaShowErrorsOn | undefined>;
5441
5068
  /** Disables the field. */
5442
5069
  readonly disabled: import("@angular/core").InputSignal<boolean>;
5443
5070
  /** Renders the field read-only. */
5444
5071
  readonly readonly: import("@angular/core").InputSignal<boolean>;
5445
- /** Marks the field as required. */
5446
- readonly required: import("@angular/core").InputSignal<boolean>;
5447
5072
  /** Value for the native `autocomplete` attribute. */
5448
5073
  readonly autocomplete: import("@angular/core").InputSignal<string | undefined>;
5449
5074
  /** Value for the native `spellcheck` attribute; left to the browser default when unset. */
5450
5075
  readonly spellcheck: import("@angular/core").InputSignal<boolean | undefined>;
5451
5076
  /** `id` of a `<datalist>` to associate for native suggestions. */
5452
5077
  readonly list: import("@angular/core").InputSignal<string | undefined>;
5453
- /** Minimum value for `type="number"`; the value is clamped to it on blur. */
5454
- readonly min: import("@angular/core").InputSignal<number | undefined>;
5455
- /** Maximum value for `type="number"`; the value is clamped to it on blur. */
5456
- readonly max: import("@angular/core").InputSignal<number | undefined>;
5457
- /** Step increment for `type="number"`. */
5458
- readonly step: import("@angular/core").InputSignal<number | undefined>;
5459
- /** Maximum number of characters; enforced for `type="number"`, where native `maxlength` is ignored. */
5078
+ /** Maximum number of characters (native `maxlength`). */
5460
5079
  readonly maxLength: import("@angular/core").InputSignal<number | undefined>;
5461
5080
  /** Minimum number of characters (native `minlength`). */
5462
5081
  readonly minLength: import("@angular/core").InputSignal<number | undefined>;
@@ -5470,6 +5089,8 @@ export declare class InputComponent implements ControlValueAccessor {
5470
5089
  readonly id: import("@angular/core").InputSignal<string>;
5471
5090
  /** Current field value; two-way bindable via `[(value)]`. */
5472
5091
  readonly value: import("@angular/core").ModelSignal<string>;
5092
+ /** Fires with the new value whenever the user edits the field. */
5093
+ readonly changed: import("@angular/core").OutputEmitterRef<string>;
5473
5094
  readonly isFocused: import("@angular/core").WritableSignal<boolean>;
5474
5095
  readonly passwordVisible: import("@angular/core").WritableSignal<boolean>;
5475
5096
  private readonly _formDisabled;
@@ -5497,22 +5118,14 @@ export declare class InputComponent implements ControlValueAccessor {
5497
5118
  'ea-input-wrapper--disabled': boolean;
5498
5119
  'ea-input-wrapper--readonly': boolean;
5499
5120
  }>;
5500
- /** Characters a bounded number field can hold, from `maxLength` or its bounds' digits. */
5501
- private readonly numberCharCapacity;
5502
- /** Caps a bounded number field to the widest value it can hold. */
5503
- readonly numberWidth: import("@angular/core").Signal<string | null>;
5504
5121
  constructor();
5505
5122
  writeValue(val: string): void;
5506
5123
  registerOnChange(fn: (value: string) => void): void;
5507
5124
  registerOnTouched(fn: () => void): void;
5508
5125
  setDisabledState(isDisabled: boolean): void;
5509
5126
  handleInput(event: Event): void;
5510
- handleKeydown(event: KeyboardEvent): void;
5511
- handleWheel(event: WheelEvent): void;
5512
5127
  handleFocus(event: FocusEvent): void;
5513
5128
  handleBlur(event: FocusEvent): void;
5514
- /** Clamps a number value into `[min, max]` once editing finishes. */
5515
- private clampToBounds;
5516
5129
  /** Toggles the password reveal state for `type="password"` inputs. */
5517
5130
  togglePasswordVisibility(): void;
5518
5131
  protected onClearMousedown(event: MouseEvent): void;
@@ -5522,28 +5135,13 @@ export declare class InputComponent implements ControlValueAccessor {
5522
5135
  focus(): void;
5523
5136
  static ɵfac: i0.ɵɵFactoryDeclaration<InputComponent, never>;
5524
5137
  static ɵcmp: i0.ɵɵComponentDeclaration<InputComponent, "ea-input", never, {
5525
- "label": {
5526
- "alias": "label";
5527
- "required": false;
5528
- "isSignal": true;
5529
- };
5530
- "labelIcon": {
5531
- "alias": "labelIcon";
5532
- "required": false;
5533
- "isSignal": true;
5534
- };
5535
- "labelHelp": {
5536
- "alias": "labelHelp";
5537
- "required": false;
5538
- "isSignal": true;
5539
- };
5540
- "optional": {
5541
- "alias": "optional";
5138
+ "ariaLabel": {
5139
+ "alias": "aria-label";
5542
5140
  "required": false;
5543
5141
  "isSignal": true;
5544
5142
  };
5545
- "ariaLabel": {
5546
- "alias": "aria-label";
5143
+ "ariaLabelledby": {
5144
+ "alias": "aria-labelledby";
5547
5145
  "required": false;
5548
5146
  "isSignal": true;
5549
5147
  };
@@ -5602,26 +5200,6 @@ export declare class InputComponent implements ControlValueAccessor {
5602
5200
  "required": false;
5603
5201
  "isSignal": true;
5604
5202
  };
5605
- "hint": {
5606
- "alias": "hint";
5607
- "required": false;
5608
- "isSignal": true;
5609
- };
5610
- "errorMsg": {
5611
- "alias": "errorMsg";
5612
- "required": false;
5613
- "isSignal": true;
5614
- };
5615
- "errorMessages": {
5616
- "alias": "errorMessages";
5617
- "required": false;
5618
- "isSignal": true;
5619
- };
5620
- "showErrorsOn": {
5621
- "alias": "showErrorsOn";
5622
- "required": false;
5623
- "isSignal": true;
5624
- };
5625
5203
  "disabled": {
5626
5204
  "alias": "disabled";
5627
5205
  "required": false;
@@ -5632,11 +5210,6 @@ export declare class InputComponent implements ControlValueAccessor {
5632
5210
  "required": false;
5633
5211
  "isSignal": true;
5634
5212
  };
5635
- "required": {
5636
- "alias": "required";
5637
- "required": false;
5638
- "isSignal": true;
5639
- };
5640
5213
  "autocomplete": {
5641
5214
  "alias": "autocomplete";
5642
5215
  "required": false;
@@ -5652,21 +5225,6 @@ export declare class InputComponent implements ControlValueAccessor {
5652
5225
  "required": false;
5653
5226
  "isSignal": true;
5654
5227
  };
5655
- "min": {
5656
- "alias": "min";
5657
- "required": false;
5658
- "isSignal": true;
5659
- };
5660
- "max": {
5661
- "alias": "max";
5662
- "required": false;
5663
- "isSignal": true;
5664
- };
5665
- "step": {
5666
- "alias": "step";
5667
- "required": false;
5668
- "isSignal": true;
5669
- };
5670
5228
  "maxLength": {
5671
5229
  "alias": "maxLength";
5672
5230
  "required": false;
@@ -5704,6 +5262,7 @@ export declare class InputComponent implements ControlValueAccessor {
5704
5262
  };
5705
5263
  }, {
5706
5264
  "value": "valueChange";
5265
+ "changed": "changed";
5707
5266
  "focused": "focused";
5708
5267
  "blurred": "blurred";
5709
5268
  }, never, ["[slot=prefix]", "[slot=suffix]"], true, never>;
@@ -6153,7 +5712,7 @@ export type MultiSelectSize = EaSize;
6153
5712
  * to match the input `options` array. Closes on outside click / scroll, and
6154
5713
  * integrates with Angular forms via `ControlValueAccessor`.
6155
5714
  */
6156
- export declare class MultiSelectComponent implements ControlValueAccessor {
5715
+ export declare class MultiSelectComponent extends LabelledFieldControlBase implements ControlValueAccessor {
6157
5716
  protected readonly wrapperEl: import("@angular/core").Signal<ElementRef<HTMLElement> | undefined>;
6158
5717
  private readonly popover;
6159
5718
  protected readonly triggerEl: import("@angular/core").Signal<ElementRef<HTMLElement> | undefined>;
@@ -6163,13 +5722,6 @@ export declare class MultiSelectComponent implements ControlValueAccessor {
6163
5722
  protected readonly i18n: EagamiI18nService;
6164
5723
  private readonly injector;
6165
5724
  private readonly destroyRef;
6166
- readonly label: import("@angular/core").InputSignal<string | undefined>;
6167
- /** Optional icon component rendered before the label text. */
6168
- readonly labelIcon: import("@angular/core").InputSignal<Type<unknown> | undefined>;
6169
- /** Help revealed by an info button beside the label, as plain text or a template. */
6170
- readonly labelHelp: import("@angular/core").InputSignal<string | TemplateRef<unknown> | undefined>;
6171
- /** Adds a muted "(optional)" note after the label, unless `required` is also set. */
6172
- readonly optional: import("@angular/core").InputSignal<boolean>;
6173
5725
  /** Accessible name for the combobox when no visible `label` is set. */
6174
5726
  readonly ariaLabel: import("@angular/core").InputSignal<string | undefined>;
6175
5727
  /** Space-separated ids of the elements whose text names the combobox, such as a label outside the component. */
@@ -6181,13 +5733,6 @@ export declare class MultiSelectComponent implements ControlValueAccessor {
6181
5733
  readonly size: import("@angular/core").InputSignal<EaSize>;
6182
5734
  readonly disabled: import("@angular/core").InputSignal<boolean>;
6183
5735
  readonly readonly: import("@angular/core").InputSignal<boolean>;
6184
- readonly required: import("@angular/core").InputSignal<boolean>;
6185
- readonly hint: import("@angular/core").InputSignal<string | undefined>;
6186
- readonly errorMsg: import("@angular/core").InputSignal<string | undefined>;
6187
- /** Per-validator-key message overrides for a bound form control (e.g. `{ required: '...' }`). */
6188
- readonly errorMessages: import("@angular/core").InputSignal<Partial<Record<string, string | null>> | undefined>;
6189
- /** When the error shows: `'change'` once the user changes the field and leaves it, `'blur'` once they leave it, even unchanged, `'touch'` the same but live while they edit; unset follows the app-wide `forms` option of `provideEagamiUi`. */
6190
- readonly showErrorsOn: import("@angular/core").InputSignal<EaShowErrorsOn | undefined>;
6191
5736
  /** Toggle the search input at the top of the popover. */
6192
5737
  readonly searchable: import("@angular/core").InputSignal<boolean>;
6193
5738
  /** Toggle the "Select all" row at the top of the option list. */
@@ -6202,20 +5747,20 @@ export declare class MultiSelectComponent implements ControlValueAccessor {
6202
5747
  /** Max number of chips shown inside the trigger; the rest collapse into a "+N more" pill. `0` removes the cap so every chip shows and the row scrolls horizontally. */
6203
5748
  readonly maxVisibleChips: import("@angular/core").InputSignal<number>;
6204
5749
  /**
6205
- * Widest a selected-value chip may grow, in px; a longer label ellipsizes
6206
- * and reveals its full text in a tooltip.
5750
+ * Widest a selected-value chip may grow, as a CSS length; a longer label
5751
+ * ellipsizes and reveals its full text in a tooltip.
6207
5752
  */
6208
- readonly maxChipWidth: import("@angular/core").InputSignal<number | undefined>;
5753
+ readonly maxChipWidth: import("@angular/core").InputSignal<string | undefined>;
6209
5754
  /**
6210
- * Tallest the option popover may grow, in px, before the option list
6211
- * scrolls; left unset, the popover keeps its built-in 20rem cap.
5755
+ * Tallest the option popover may grow, as a CSS length, before the option
5756
+ * list scrolls; left unset, the popover keeps its built-in 20rem cap.
6212
5757
  */
6213
- readonly popoverMaxHeight: import("@angular/core").InputSignal<number | undefined>;
5758
+ readonly popoverMaxHeight: import("@angular/core").InputSignal<string | undefined>;
6214
5759
  /**
6215
- * Widest the option popover may grow: a px value, or `anchor` to hold it to
5760
+ * Widest the option popover may grow: a CSS length, or `anchor` to hold it to
6216
5761
  * the field's own width so a long option truncates instead of widening it.
6217
5762
  */
6218
- readonly popoverMaxWidth: import("@angular/core").InputSignal<PopoverMaxWidth>;
5763
+ readonly popoverMaxWidth: import("@angular/core").InputSignal<string>;
6219
5764
  readonly id: import("@angular/core").InputSignal<string>;
6220
5765
  /** Selected option values, in the original options order. */
6221
5766
  readonly value: import("@angular/core").ModelSignal<readonly string[]>;
@@ -6352,26 +5897,6 @@ export declare class MultiSelectComponent implements ControlValueAccessor {
6352
5897
  private watchListWidth;
6353
5898
  static ɵfac: i0.ɵɵFactoryDeclaration<MultiSelectComponent, never>;
6354
5899
  static ɵcmp: i0.ɵɵComponentDeclaration<MultiSelectComponent, "ea-multi-select", never, {
6355
- "label": {
6356
- "alias": "label";
6357
- "required": false;
6358
- "isSignal": true;
6359
- };
6360
- "labelIcon": {
6361
- "alias": "labelIcon";
6362
- "required": false;
6363
- "isSignal": true;
6364
- };
6365
- "labelHelp": {
6366
- "alias": "labelHelp";
6367
- "required": false;
6368
- "isSignal": true;
6369
- };
6370
- "optional": {
6371
- "alias": "optional";
6372
- "required": false;
6373
- "isSignal": true;
6374
- };
6375
5900
  "ariaLabel": {
6376
5901
  "alias": "aria-label";
6377
5902
  "required": false;
@@ -6412,31 +5937,6 @@ export declare class MultiSelectComponent implements ControlValueAccessor {
6412
5937
  "required": false;
6413
5938
  "isSignal": true;
6414
5939
  };
6415
- "required": {
6416
- "alias": "required";
6417
- "required": false;
6418
- "isSignal": true;
6419
- };
6420
- "hint": {
6421
- "alias": "hint";
6422
- "required": false;
6423
- "isSignal": true;
6424
- };
6425
- "errorMsg": {
6426
- "alias": "errorMsg";
6427
- "required": false;
6428
- "isSignal": true;
6429
- };
6430
- "errorMessages": {
6431
- "alias": "errorMessages";
6432
- "required": false;
6433
- "isSignal": true;
6434
- };
6435
- "showErrorsOn": {
6436
- "alias": "showErrorsOn";
6437
- "required": false;
6438
- "isSignal": true;
6439
- };
6440
5940
  "searchable": {
6441
5941
  "alias": "searchable";
6442
5942
  "required": false;
@@ -6496,35 +5996,17 @@ export type NumberInputSize = EaSize;
6496
5996
  * `spinbutton` role, so arrow keys step it; the steppers are pointer
6497
5997
  * affordances. Integrates with Angular forms via `ControlValueAccessor`.
6498
5998
  */
6499
- export declare class NumberInputComponent implements ControlValueAccessor {
5999
+ export declare class NumberInputComponent extends LabelledFieldControlBase implements ControlValueAccessor {
6500
6000
  readonly inputEl: import("@angular/core").Signal<ElementRef<HTMLInputElement> | undefined>;
6501
6001
  protected readonly i18n: EagamiI18nService;
6502
- /** Text label rendered above the field. */
6503
- readonly label: import("@angular/core").InputSignal<string | undefined>;
6504
- /** Optional icon component rendered before the label text. */
6505
- readonly labelIcon: import("@angular/core").InputSignal<Type<unknown> | undefined>;
6506
- /** Help revealed by an info button beside the label, as plain text or a template. */
6507
- readonly labelHelp: import("@angular/core").InputSignal<string | TemplateRef<unknown> | undefined>;
6508
- /** Adds a muted "(optional)" note after the label, unless `required` is also set. */
6509
- readonly optional: import("@angular/core").InputSignal<boolean>;
6510
6002
  /** Placeholder shown while the field is empty. */
6511
6003
  readonly placeholder: import("@angular/core").InputSignal<string>;
6512
6004
  /** Visual size of the field. */
6513
6005
  readonly size: import("@angular/core").InputSignal<EaSize>;
6514
- /** Helper text shown below the field; hidden while an error is showing. */
6515
- readonly hint: import("@angular/core").InputSignal<string | undefined>;
6516
- /** Error message shown below the field; replaces the hint and flags the field invalid. */
6517
- readonly errorMsg: import("@angular/core").InputSignal<string | undefined>;
6518
- /** Per-validator-key message overrides for a bound form control (e.g. `{ required: '...' }`). */
6519
- readonly errorMessages: import("@angular/core").InputSignal<Partial<Record<string, string | null>> | undefined>;
6520
- /** When the error shows: `'change'` once the user changes the field and leaves it, `'blur'` once they leave it, even unchanged, `'touch'` the same but live while they edit; unset follows the app-wide `forms` option of `provideEagamiUi`. */
6521
- readonly showErrorsOn: import("@angular/core").InputSignal<EaShowErrorsOn | undefined>;
6522
6006
  /** Disables the field. */
6523
6007
  readonly disabled: import("@angular/core").InputSignal<boolean>;
6524
6008
  /** Renders the field read-only. */
6525
6009
  readonly readonly: import("@angular/core").InputSignal<boolean>;
6526
- /** Marks the field as required. */
6527
- readonly required: import("@angular/core").InputSignal<boolean>;
6528
6010
  /** Minimum value; typed values are clamped to it on blur and the steppers respect it. */
6529
6011
  readonly min: import("@angular/core").InputSignal<number | undefined>;
6530
6012
  /** Maximum value; typed values are clamped to it on blur. */
@@ -6541,6 +6023,8 @@ export declare class NumberInputComponent implements ControlValueAccessor {
6541
6023
  readonly allowNegative: import("@angular/core").InputSignal<boolean>;
6542
6024
  /** Accessible name for the field when no visible `label` is set. */
6543
6025
  readonly ariaLabel: import("@angular/core").InputSignal<string | undefined>;
6026
+ /** Space-separated ids of the elements whose text names the field, such as a label outside the component. */
6027
+ readonly ariaLabelledby: import("@angular/core").InputSignal<string | undefined>;
6544
6028
  /** `id` applied to the native input and label `for`; auto-generated when omitted. */
6545
6029
  readonly id: import("@angular/core").InputSignal<string>;
6546
6030
  /** Current field value; `null` when empty. Two-way bindable via `[(value)]`. */
@@ -6587,26 +6071,6 @@ export declare class NumberInputComponent implements ControlValueAccessor {
6587
6071
  private clampToBounds;
6588
6072
  static ɵfac: i0.ɵɵFactoryDeclaration<NumberInputComponent, never>;
6589
6073
  static ɵcmp: i0.ɵɵComponentDeclaration<NumberInputComponent, "ea-number-input", never, {
6590
- "label": {
6591
- "alias": "label";
6592
- "required": false;
6593
- "isSignal": true;
6594
- };
6595
- "labelIcon": {
6596
- "alias": "labelIcon";
6597
- "required": false;
6598
- "isSignal": true;
6599
- };
6600
- "labelHelp": {
6601
- "alias": "labelHelp";
6602
- "required": false;
6603
- "isSignal": true;
6604
- };
6605
- "optional": {
6606
- "alias": "optional";
6607
- "required": false;
6608
- "isSignal": true;
6609
- };
6610
6074
  "placeholder": {
6611
6075
  "alias": "placeholder";
6612
6076
  "required": false;
@@ -6617,26 +6081,6 @@ export declare class NumberInputComponent implements ControlValueAccessor {
6617
6081
  "required": false;
6618
6082
  "isSignal": true;
6619
6083
  };
6620
- "hint": {
6621
- "alias": "hint";
6622
- "required": false;
6623
- "isSignal": true;
6624
- };
6625
- "errorMsg": {
6626
- "alias": "errorMsg";
6627
- "required": false;
6628
- "isSignal": true;
6629
- };
6630
- "errorMessages": {
6631
- "alias": "errorMessages";
6632
- "required": false;
6633
- "isSignal": true;
6634
- };
6635
- "showErrorsOn": {
6636
- "alias": "showErrorsOn";
6637
- "required": false;
6638
- "isSignal": true;
6639
- };
6640
6084
  "disabled": {
6641
6085
  "alias": "disabled";
6642
6086
  "required": false;
@@ -6647,11 +6091,6 @@ export declare class NumberInputComponent implements ControlValueAccessor {
6647
6091
  "required": false;
6648
6092
  "isSignal": true;
6649
6093
  };
6650
- "required": {
6651
- "alias": "required";
6652
- "required": false;
6653
- "isSignal": true;
6654
- };
6655
6094
  "min": {
6656
6095
  "alias": "min";
6657
6096
  "required": false;
@@ -6682,6 +6121,11 @@ export declare class NumberInputComponent implements ControlValueAccessor {
6682
6121
  "required": false;
6683
6122
  "isSignal": true;
6684
6123
  };
6124
+ "ariaLabelledby": {
6125
+ "alias": "aria-labelledby";
6126
+ "required": false;
6127
+ "isSignal": true;
6128
+ };
6685
6129
  "id": {
6686
6130
  "alias": "id";
6687
6131
  "required": false;
@@ -7024,7 +6468,7 @@ export declare class PieChartComponent {
7024
6468
  }, never, never, true, never>;
7025
6469
  }
7026
6470
  /** Semantic colour scheme of the progress bar. */
7027
- export type ProgressBarVariant = 'default' | 'success' | 'warning' | 'error' | 'info';
6471
+ export type ProgressBarVariant = EaStatusVariant;
7028
6472
  /** Visual height of the progress bar. */
7029
6473
  export type ProgressBarSize = EaSize;
7030
6474
  /**
@@ -7036,7 +6480,7 @@ export declare class ProgressBarComponent {
7036
6480
  protected readonly i18n: EagamiI18nService;
7037
6481
  readonly value: import("@angular/core").InputSignal<number>;
7038
6482
  readonly max: import("@angular/core").InputSignal<number>;
7039
- readonly variant: import("@angular/core").InputSignal<ProgressBarVariant>;
6483
+ readonly variant: import("@angular/core").InputSignal<EaStatusVariant>;
7040
6484
  readonly size: import("@angular/core").InputSignal<EaSize>;
7041
6485
  readonly label: import("@angular/core").InputSignal<string | undefined>;
7042
6486
  /** Shows the rounded percentage alongside the label. */
@@ -7110,26 +6554,12 @@ export type RadioOrientation = 'vertical' | 'horizontal';
7110
6554
  * shared state (name, size, disabled) for its options and integrates with
7111
6555
  * Angular forms via `ControlValueAccessor`.
7112
6556
  */
7113
- export declare class RadioGroupComponent implements ControlValueAccessor {
6557
+ export declare class RadioGroupComponent extends LabelledFieldControlBase implements ControlValueAccessor {
7114
6558
  readonly id: import("@angular/core").InputSignal<string>;
7115
6559
  readonly name: import("@angular/core").InputSignal<string>;
7116
6560
  readonly size: import("@angular/core").InputSignal<EaSize>;
7117
6561
  readonly orientation: import("@angular/core").InputSignal<RadioOrientation>;
7118
6562
  readonly disabled: import("@angular/core").InputSignal<boolean>;
7119
- readonly required: import("@angular/core").InputSignal<boolean>;
7120
- readonly label: import("@angular/core").InputSignal<string | undefined>;
7121
- /** Optional icon component rendered before the label text. */
7122
- readonly labelIcon: import("@angular/core").InputSignal<Type<unknown> | undefined>;
7123
- /** Help revealed by an info button beside the label, as plain text or a template. */
7124
- readonly labelHelp: import("@angular/core").InputSignal<string | TemplateRef<unknown> | undefined>;
7125
- /** Adds a muted "(optional)" note after the label, unless `required` is also set. */
7126
- readonly optional: import("@angular/core").InputSignal<boolean>;
7127
- readonly hint: import("@angular/core").InputSignal<string | undefined>;
7128
- readonly errorMsg: import("@angular/core").InputSignal<string | undefined>;
7129
- /** Per-validator-key message overrides for a bound form control (e.g. `{ required: '...' }`). */
7130
- readonly errorMessages: import("@angular/core").InputSignal<Partial<Record<string, string | null>> | undefined>;
7131
- /** When the error shows: `'change'` once the user changes the field and leaves it, `'blur'` once they leave it, even unchanged, `'touch'` the same but live while they edit; unset follows the app-wide `forms` option of `provideEagamiUi`. */
7132
- readonly showErrorsOn: import("@angular/core").InputSignal<EaShowErrorsOn | undefined>;
7133
6563
  readonly ariaLabel: import("@angular/core").InputSignal<string | undefined>;
7134
6564
  /** Space-separated ids of the elements whose text names the group, such as a label outside the component. */
7135
6565
  readonly ariaLabelledby: import("@angular/core").InputSignal<string | undefined>;
@@ -7178,51 +6608,6 @@ export declare class RadioGroupComponent implements ControlValueAccessor {
7178
6608
  "required": false;
7179
6609
  "isSignal": true;
7180
6610
  };
7181
- "required": {
7182
- "alias": "required";
7183
- "required": false;
7184
- "isSignal": true;
7185
- };
7186
- "label": {
7187
- "alias": "label";
7188
- "required": false;
7189
- "isSignal": true;
7190
- };
7191
- "labelIcon": {
7192
- "alias": "labelIcon";
7193
- "required": false;
7194
- "isSignal": true;
7195
- };
7196
- "labelHelp": {
7197
- "alias": "labelHelp";
7198
- "required": false;
7199
- "isSignal": true;
7200
- };
7201
- "optional": {
7202
- "alias": "optional";
7203
- "required": false;
7204
- "isSignal": true;
7205
- };
7206
- "hint": {
7207
- "alias": "hint";
7208
- "required": false;
7209
- "isSignal": true;
7210
- };
7211
- "errorMsg": {
7212
- "alias": "errorMsg";
7213
- "required": false;
7214
- "isSignal": true;
7215
- };
7216
- "errorMessages": {
7217
- "alias": "errorMessages";
7218
- "required": false;
7219
- "isSignal": true;
7220
- };
7221
- "showErrorsOn": {
7222
- "alias": "showErrorsOn";
7223
- "required": false;
7224
- "isSignal": true;
7225
- };
7226
6611
  "ariaLabel": {
7227
6612
  "alias": "aria-label";
7228
6613
  "required": false;
@@ -7306,28 +6691,14 @@ type Thumb = 'low' | 'high';
7306
6691
  * overlap (where the user yanks the low thumb past the high) is resolved by
7307
6692
  * keeping the moving thumb on its side and the other thumb pinned.
7308
6693
  */
7309
- export declare class RangeSliderComponent implements ControlValueAccessor {
6694
+ export declare class RangeSliderComponent extends LabelledFieldControlBase implements ControlValueAccessor {
7310
6695
  private readonly i18n;
7311
6696
  readonly trackEl: import("@angular/core").Signal<ElementRef<HTMLDivElement> | undefined>;
7312
- readonly label: import("@angular/core").InputSignal<string | undefined>;
7313
- /** Optional icon component rendered before the label text. */
7314
- readonly labelIcon: import("@angular/core").InputSignal<Type<unknown> | undefined>;
7315
- /** Help revealed by an info button beside the label, as plain text or a template. */
7316
- readonly labelHelp: import("@angular/core").InputSignal<string | TemplateRef<unknown> | undefined>;
7317
- /** Adds a muted "(optional)" note after the label, unless `required` is also set. */
7318
- readonly optional: import("@angular/core").InputSignal<boolean>;
7319
- readonly hint: import("@angular/core").InputSignal<string | undefined>;
7320
- readonly errorMsg: import("@angular/core").InputSignal<string | undefined>;
7321
- /** Per-validator-key message overrides for a bound form control (e.g. `{ required: '...' }`). */
7322
- readonly errorMessages: import("@angular/core").InputSignal<Partial<Record<string, string | null>> | undefined>;
7323
- /** When the error shows: `'change'` once the user changes the field and leaves it, `'blur'` once they leave it, even unchanged, `'touch'` the same but live while they edit; unset follows the app-wide `forms` option of `provideEagamiUi`. */
7324
- readonly showErrorsOn: import("@angular/core").InputSignal<EaShowErrorsOn | undefined>;
7325
6697
  readonly min: import("@angular/core").InputSignal<number>;
7326
6698
  readonly max: import("@angular/core").InputSignal<number>;
7327
6699
  readonly step: import("@angular/core").InputSignal<number>;
7328
6700
  readonly size: import("@angular/core").InputSignal<EaSize>;
7329
6701
  readonly disabled: import("@angular/core").InputSignal<boolean>;
7330
- readonly required: import("@angular/core").InputSignal<boolean>;
7331
6702
  readonly showValue: import("@angular/core").InputSignal<boolean>;
7332
6703
  readonly showMinMaxLabels: import("@angular/core").InputSignal<boolean>;
7333
6704
  readonly formatValue: import("@angular/core").InputSignal<(value: number) => string>;
@@ -7385,46 +6756,6 @@ export declare class RangeSliderComponent implements ControlValueAccessor {
7385
6756
  private commitThumb;
7386
6757
  static ɵfac: i0.ɵɵFactoryDeclaration<RangeSliderComponent, never>;
7387
6758
  static ɵcmp: i0.ɵɵComponentDeclaration<RangeSliderComponent, "ea-range-slider", never, {
7388
- "label": {
7389
- "alias": "label";
7390
- "required": false;
7391
- "isSignal": true;
7392
- };
7393
- "labelIcon": {
7394
- "alias": "labelIcon";
7395
- "required": false;
7396
- "isSignal": true;
7397
- };
7398
- "labelHelp": {
7399
- "alias": "labelHelp";
7400
- "required": false;
7401
- "isSignal": true;
7402
- };
7403
- "optional": {
7404
- "alias": "optional";
7405
- "required": false;
7406
- "isSignal": true;
7407
- };
7408
- "hint": {
7409
- "alias": "hint";
7410
- "required": false;
7411
- "isSignal": true;
7412
- };
7413
- "errorMsg": {
7414
- "alias": "errorMsg";
7415
- "required": false;
7416
- "isSignal": true;
7417
- };
7418
- "errorMessages": {
7419
- "alias": "errorMessages";
7420
- "required": false;
7421
- "isSignal": true;
7422
- };
7423
- "showErrorsOn": {
7424
- "alias": "showErrorsOn";
7425
- "required": false;
7426
- "isSignal": true;
7427
- };
7428
6759
  "min": {
7429
6760
  "alias": "min";
7430
6761
  "required": false;
@@ -7450,11 +6781,6 @@ export declare class RangeSliderComponent implements ControlValueAccessor {
7450
6781
  "required": false;
7451
6782
  "isSignal": true;
7452
6783
  };
7453
- "required": {
7454
- "alias": "required";
7455
- "required": false;
7456
- "isSignal": true;
7457
- };
7458
6784
  "showValue": {
7459
6785
  "alias": "showValue";
7460
6786
  "required": false;
@@ -7514,51 +6840,39 @@ export type RatingSize = EaSize;
7514
6840
  * `allowHalf`), hover preview, keyboard navigation (Left/Right/Up/Down,
7515
6841
  * Home/End, 0-9 to jump), and a read-only display mode.
7516
6842
  *
7517
- * The default `<ea-icon-star>` can be swapped via the `iconClass` input
7518
- * (any standalone Angular component reference, e.g. `[iconClass]="HeartIconComponent"`).
7519
- * When `allowHalf` is true, the half-position render uses `halfIconClass`
6843
+ * The default `<ea-icon-star>` can be swapped via the `icon` input
6844
+ * (any standalone Angular component reference, e.g. `[icon]="HeartIconComponent"`).
6845
+ * When `allowHalf` is true, the half-position render uses `halfIcon`
7520
6846
  * (default `<ea-icon-left-half-star>`); if a consumer supplies their own
7521
- * `iconClass` without a matching `halfIconClass`, the half is rendered with the
6847
+ * `icon` without a matching `halfIcon`, the half is rendered with the
7522
6848
  * default left-half-star.
7523
6849
  *
7524
6850
  * Integrates with Angular forms via `ControlValueAccessor`. Emits the new
7525
6851
  * value through the `value` model (numeric 0..max in 1 or 0.5 increments).
7526
6852
  */
7527
- export declare class RatingComponent implements ControlValueAccessor {
6853
+ export declare class RatingComponent extends LabelledFieldControlBase implements ControlValueAccessor {
7528
6854
  constructor();
7529
6855
  private readonly starsEl;
7530
6856
  protected readonly i18n: EagamiI18nService;
7531
- readonly label: import("@angular/core").InputSignal<string | undefined>;
7532
6857
  /** Space-separated ids of the elements whose text names the rating, such as a label outside the component. */
7533
6858
  readonly ariaLabelledby: import("@angular/core").InputSignal<string | undefined>;
7534
- /** Optional icon component rendered before the label text. */
7535
- readonly labelIcon: import("@angular/core").InputSignal<Type<unknown> | undefined>;
7536
- /** Help revealed by an info button beside the label, as plain text or a template. */
7537
- readonly labelHelp: import("@angular/core").InputSignal<string | TemplateRef<unknown> | undefined>;
7538
- /** Adds a muted "(optional)" note after the label, unless `required` is also set. */
7539
- readonly optional: import("@angular/core").InputSignal<boolean>;
7540
- readonly hint: import("@angular/core").InputSignal<string | undefined>;
7541
- readonly errorMsg: import("@angular/core").InputSignal<string | undefined>;
7542
- /** Per-validator-key message overrides for a bound form control (e.g. `{ required: '...' }`). */
7543
- readonly errorMessages: import("@angular/core").InputSignal<Partial<Record<string, string | null>> | undefined>;
7544
- /** When the error shows: `'change'` once the user changes the field and leaves it, `'blur'` once they leave it, even unchanged, `'touch'` the same but live while they edit; unset follows the app-wide `forms` option of `provideEagamiUi`. */
7545
- readonly showErrorsOn: import("@angular/core").InputSignal<EaShowErrorsOn | undefined>;
7546
6859
  readonly size: import("@angular/core").InputSignal<EaSize>;
7547
6860
  readonly min: import("@angular/core").InputSignal<number>;
7548
6861
  readonly max: import("@angular/core").InputSignal<number>;
7549
6862
  readonly allowHalf: import("@angular/core").InputSignal<boolean>;
7550
6863
  readonly readonly: import("@angular/core").InputSignal<boolean>;
7551
6864
  readonly disabled: import("@angular/core").InputSignal<boolean>;
7552
- readonly required: import("@angular/core").InputSignal<boolean>;
7553
6865
  /** Clicking the current value clears the rating back to 0. */
7554
6866
  readonly clearable: import("@angular/core").InputSignal<boolean>;
7555
6867
  /** Standalone component class rendered for empty / full positions. */
7556
- readonly iconClass: import("@angular/core").InputSignal<Type<unknown>>;
6868
+ readonly icon: import("@angular/core").InputSignal<Type<unknown>>;
7557
6869
  /** Standalone component class rendered for half positions (when `allowHalf` is true). */
7558
- readonly halfIconClass: import("@angular/core").InputSignal<Type<unknown>>;
6870
+ readonly halfIcon: import("@angular/core").InputSignal<Type<unknown>>;
7559
6871
  readonly id: import("@angular/core").InputSignal<string>;
7560
6872
  /** Current rating value, 0..max in 1 (or 0.5 when `allowHalf`) increments. */
7561
6873
  readonly value: import("@angular/core").ModelSignal<number>;
6874
+ /** Fires with the new value whenever the user picks a rating. */
6875
+ readonly changed: import("@angular/core").OutputEmitterRef<number>;
7562
6876
  /** Fires when the user pre-selects a value via hover; `null` when the cursor leaves. */
7563
6877
  readonly hoverChanged: import("@angular/core").OutputEmitterRef<number | null>;
7564
6878
  protected readonly hoverValue: import("@angular/core").WritableSignal<number | null>;
@@ -7609,51 +6923,11 @@ export declare class RatingComponent implements ControlValueAccessor {
7609
6923
  private computePointerValue;
7610
6924
  static ɵfac: i0.ɵɵFactoryDeclaration<RatingComponent, never>;
7611
6925
  static ɵcmp: i0.ɵɵComponentDeclaration<RatingComponent, "ea-rating", never, {
7612
- "label": {
7613
- "alias": "label";
7614
- "required": false;
7615
- "isSignal": true;
7616
- };
7617
6926
  "ariaLabelledby": {
7618
6927
  "alias": "aria-labelledby";
7619
6928
  "required": false;
7620
6929
  "isSignal": true;
7621
6930
  };
7622
- "labelIcon": {
7623
- "alias": "labelIcon";
7624
- "required": false;
7625
- "isSignal": true;
7626
- };
7627
- "labelHelp": {
7628
- "alias": "labelHelp";
7629
- "required": false;
7630
- "isSignal": true;
7631
- };
7632
- "optional": {
7633
- "alias": "optional";
7634
- "required": false;
7635
- "isSignal": true;
7636
- };
7637
- "hint": {
7638
- "alias": "hint";
7639
- "required": false;
7640
- "isSignal": true;
7641
- };
7642
- "errorMsg": {
7643
- "alias": "errorMsg";
7644
- "required": false;
7645
- "isSignal": true;
7646
- };
7647
- "errorMessages": {
7648
- "alias": "errorMessages";
7649
- "required": false;
7650
- "isSignal": true;
7651
- };
7652
- "showErrorsOn": {
7653
- "alias": "showErrorsOn";
7654
- "required": false;
7655
- "isSignal": true;
7656
- };
7657
6931
  "size": {
7658
6932
  "alias": "size";
7659
6933
  "required": false;
@@ -7684,23 +6958,18 @@ export declare class RatingComponent implements ControlValueAccessor {
7684
6958
  "required": false;
7685
6959
  "isSignal": true;
7686
6960
  };
7687
- "required": {
7688
- "alias": "required";
7689
- "required": false;
7690
- "isSignal": true;
7691
- };
7692
6961
  "clearable": {
7693
6962
  "alias": "clearable";
7694
6963
  "required": false;
7695
6964
  "isSignal": true;
7696
6965
  };
7697
- "iconClass": {
7698
- "alias": "iconClass";
6966
+ "icon": {
6967
+ "alias": "icon";
7699
6968
  "required": false;
7700
6969
  "isSignal": true;
7701
6970
  };
7702
- "halfIconClass": {
7703
- "alias": "halfIconClass";
6971
+ "halfIcon": {
6972
+ "alias": "halfIcon";
7704
6973
  "required": false;
7705
6974
  "isSignal": true;
7706
6975
  };
@@ -7716,6 +6985,7 @@ export declare class RatingComponent implements ControlValueAccessor {
7716
6985
  };
7717
6986
  }, {
7718
6987
  "value": "valueChange";
6988
+ "changed": "changed";
7719
6989
  "hoverChanged": "hoverChanged";
7720
6990
  }, never, never, true, never>;
7721
6991
  }
@@ -7727,25 +6997,11 @@ export type SegmentedSize = EaSize;
7727
6997
  * and `ControlValueAccessor`, with full keyboard support
7728
6998
  * (arrow keys, Home/End, Enter/Space).
7729
6999
  */
7730
- export declare class SegmentedComponent implements ControlValueAccessor {
7000
+ export declare class SegmentedComponent extends LabelledFieldControlBase implements ControlValueAccessor {
7731
7001
  readonly buttonEls: import("@angular/core").Signal<readonly ElementRef<HTMLButtonElement>[]>;
7732
7002
  readonly options: import("@angular/core").InputSignal<SelectOption[]>;
7733
- readonly label: import("@angular/core").InputSignal<string | undefined>;
7734
- /** Optional icon component rendered before the label text. */
7735
- readonly labelIcon: import("@angular/core").InputSignal<Type<unknown> | undefined>;
7736
- /** Help revealed by an info button beside the label, as plain text or a template. */
7737
- readonly labelHelp: import("@angular/core").InputSignal<string | TemplateRef<unknown> | undefined>;
7738
- /** Adds a muted "(optional)" note after the label, unless `required` is also set. */
7739
- readonly optional: import("@angular/core").InputSignal<boolean>;
7740
- readonly hint: import("@angular/core").InputSignal<string | undefined>;
7741
- readonly errorMsg: import("@angular/core").InputSignal<string | undefined>;
7742
- /** Per-validator-key message overrides for a bound form control (e.g. `{ required: '...' }`). */
7743
- readonly errorMessages: import("@angular/core").InputSignal<Partial<Record<string, string | null>> | undefined>;
7744
- /** When the error shows: `'change'` once the user changes the field and leaves it, `'blur'` once they leave it, even unchanged, `'touch'` the same but live while they edit; unset follows the app-wide `forms` option of `provideEagamiUi`. */
7745
- readonly showErrorsOn: import("@angular/core").InputSignal<EaShowErrorsOn | undefined>;
7746
7003
  readonly size: import("@angular/core").InputSignal<EaSize>;
7747
7004
  readonly disabled: import("@angular/core").InputSignal<boolean>;
7748
- readonly required: import("@angular/core").InputSignal<boolean>;
7749
7005
  readonly fullWidth: import("@angular/core").InputSignal<boolean>;
7750
7006
  readonly ariaLabel: import("@angular/core").InputSignal<string | undefined>;
7751
7007
  /** Space-separated ids of the elements whose text names the group, such as a label outside the component. */
@@ -7773,59 +7029,19 @@ export declare class SegmentedComponent implements ControlValueAccessor {
7773
7029
  'ea-segmented--error': boolean;
7774
7030
  }>;
7775
7031
  writeValue(val: string): void;
7776
- registerOnChange(fn: (value: string) => void): void;
7777
- registerOnTouched(fn: () => void): void;
7778
- setDisabledState(isDisabled: boolean): void;
7779
- isSelected(option: SelectOption): boolean;
7780
- isOptionDisabled(option: SelectOption): boolean;
7781
- /** Programmatically selects the given option. */
7782
- select(option: SelectOption): void;
7783
- handleKeydown(event: KeyboardEvent, index: number): void;
7784
- static ɵfac: i0.ɵɵFactoryDeclaration<SegmentedComponent, never>;
7785
- static ɵcmp: i0.ɵɵComponentDeclaration<SegmentedComponent, "ea-segmented", never, {
7786
- "options": {
7787
- "alias": "options";
7788
- "required": true;
7789
- "isSignal": true;
7790
- };
7791
- "label": {
7792
- "alias": "label";
7793
- "required": false;
7794
- "isSignal": true;
7795
- };
7796
- "labelIcon": {
7797
- "alias": "labelIcon";
7798
- "required": false;
7799
- "isSignal": true;
7800
- };
7801
- "labelHelp": {
7802
- "alias": "labelHelp";
7803
- "required": false;
7804
- "isSignal": true;
7805
- };
7806
- "optional": {
7807
- "alias": "optional";
7808
- "required": false;
7809
- "isSignal": true;
7810
- };
7811
- "hint": {
7812
- "alias": "hint";
7813
- "required": false;
7814
- "isSignal": true;
7815
- };
7816
- "errorMsg": {
7817
- "alias": "errorMsg";
7818
- "required": false;
7819
- "isSignal": true;
7820
- };
7821
- "errorMessages": {
7822
- "alias": "errorMessages";
7823
- "required": false;
7824
- "isSignal": true;
7825
- };
7826
- "showErrorsOn": {
7827
- "alias": "showErrorsOn";
7828
- "required": false;
7032
+ registerOnChange(fn: (value: string) => void): void;
7033
+ registerOnTouched(fn: () => void): void;
7034
+ setDisabledState(isDisabled: boolean): void;
7035
+ isSelected(option: SelectOption): boolean;
7036
+ isOptionDisabled(option: SelectOption): boolean;
7037
+ /** Programmatically selects the given option. */
7038
+ select(option: SelectOption): void;
7039
+ handleKeydown(event: KeyboardEvent, index: number): void;
7040
+ static ɵfac: i0.ɵɵFactoryDeclaration<SegmentedComponent, never>;
7041
+ static ɵcmp: i0.ɵɵComponentDeclaration<SegmentedComponent, "ea-segmented", never, {
7042
+ "options": {
7043
+ "alias": "options";
7044
+ "required": true;
7829
7045
  "isSignal": true;
7830
7046
  };
7831
7047
  "size": {
@@ -7838,11 +7054,6 @@ export declare class SegmentedComponent implements ControlValueAccessor {
7838
7054
  "required": false;
7839
7055
  "isSignal": true;
7840
7056
  };
7841
- "required": {
7842
- "alias": "required";
7843
- "required": false;
7844
- "isSignal": true;
7845
- };
7846
7057
  "fullWidth": {
7847
7058
  "alias": "fullWidth";
7848
7059
  "required": false;
@@ -7916,32 +7127,14 @@ export declare class SkeletonComponent {
7916
7127
  }
7917
7128
  /** Visual size of the slider track and thumb. */
7918
7129
  export type SliderSize = EaSize;
7919
- export declare class SliderComponent implements ControlValueAccessor {
7130
+ export declare class SliderComponent extends LabelledFieldControlBase implements ControlValueAccessor {
7920
7131
  private readonly i18n;
7921
7132
  readonly trackEl: import("@angular/core").Signal<ElementRef<HTMLDivElement> | undefined>;
7922
- readonly label: import("@angular/core").InputSignal<string | undefined>;
7923
- /** Optional icon component rendered before the label text. */
7924
- readonly labelIcon: import("@angular/core").InputSignal<Type<unknown> | undefined>;
7925
- /** Help revealed by an info button beside the label, as plain text or a template. */
7926
- readonly labelHelp: import("@angular/core").InputSignal<string | TemplateRef<unknown> | undefined>;
7927
- /** Adds a muted "(optional)" note after the label, unless `required` is also set. */
7928
- readonly optional: import("@angular/core").InputSignal<boolean>;
7929
- readonly hint: import("@angular/core").InputSignal<string | undefined>;
7930
- readonly errorMsg: import("@angular/core").InputSignal<string | undefined>;
7931
- /** Per-validator-key message overrides for a bound form control (e.g. `{ required: '...' }`). */
7932
- readonly errorMessages: import("@angular/core").InputSignal<Partial<Record<string, string | null>> | undefined>;
7933
- /** When the error shows: `'change'` once the user changes the field and leaves it, `'blur'` once they leave it, even unchanged, `'touch'` the same but live while they edit; unset follows the app-wide `forms` option of `provideEagamiUi`. */
7934
- readonly showErrorsOn: import("@angular/core").InputSignal<EaShowErrorsOn | undefined>;
7935
- /** Force the error-state styling without binding `errorMsg`. Lets consumers
7936
- * render the error text themselves (e.g. above the slider in a form layout)
7937
- * while still getting the built-in recolour of the fill and thumb. */
7938
- readonly hasError: import("@angular/core").InputSignal<boolean>;
7939
7133
  readonly min: import("@angular/core").InputSignal<number>;
7940
7134
  readonly max: import("@angular/core").InputSignal<number>;
7941
7135
  readonly step: import("@angular/core").InputSignal<number>;
7942
7136
  readonly size: import("@angular/core").InputSignal<EaSize>;
7943
7137
  readonly disabled: import("@angular/core").InputSignal<boolean>;
7944
- readonly required: import("@angular/core").InputSignal<boolean>;
7945
7138
  readonly showValue: import("@angular/core").InputSignal<boolean>;
7946
7139
  readonly showMinMaxLabels: import("@angular/core").InputSignal<boolean>;
7947
7140
  readonly formatValue: import("@angular/core").InputSignal<(value: number) => string>;
@@ -7973,7 +7166,6 @@ export declare class SliderComponent implements ControlValueAccessor {
7973
7166
  protected formatDisplay(value: number): string;
7974
7167
  private readonly errorState;
7975
7168
  readonly errorText: import("@angular/core").Signal<string | null>;
7976
- readonly errored: import("@angular/core").Signal<boolean>;
7977
7169
  readonly showError: import("@angular/core").Signal<boolean>;
7978
7170
  readonly showHint: import("@angular/core").Signal<boolean>;
7979
7171
  readonly hostClasses: import("@angular/core").Signal<{
@@ -7997,51 +7189,6 @@ export declare class SliderComponent implements ControlValueAccessor {
7997
7189
  private commitValue;
7998
7190
  static ɵfac: i0.ɵɵFactoryDeclaration<SliderComponent, never>;
7999
7191
  static ɵcmp: i0.ɵɵComponentDeclaration<SliderComponent, "ea-slider", never, {
8000
- "label": {
8001
- "alias": "label";
8002
- "required": false;
8003
- "isSignal": true;
8004
- };
8005
- "labelIcon": {
8006
- "alias": "labelIcon";
8007
- "required": false;
8008
- "isSignal": true;
8009
- };
8010
- "labelHelp": {
8011
- "alias": "labelHelp";
8012
- "required": false;
8013
- "isSignal": true;
8014
- };
8015
- "optional": {
8016
- "alias": "optional";
8017
- "required": false;
8018
- "isSignal": true;
8019
- };
8020
- "hint": {
8021
- "alias": "hint";
8022
- "required": false;
8023
- "isSignal": true;
8024
- };
8025
- "errorMsg": {
8026
- "alias": "errorMsg";
8027
- "required": false;
8028
- "isSignal": true;
8029
- };
8030
- "errorMessages": {
8031
- "alias": "errorMessages";
8032
- "required": false;
8033
- "isSignal": true;
8034
- };
8035
- "showErrorsOn": {
8036
- "alias": "showErrorsOn";
8037
- "required": false;
8038
- "isSignal": true;
8039
- };
8040
- "hasError": {
8041
- "alias": "hasError";
8042
- "required": false;
8043
- "isSignal": true;
8044
- };
8045
7192
  "min": {
8046
7193
  "alias": "min";
8047
7194
  "required": false;
@@ -8067,11 +7214,6 @@ export declare class SliderComponent implements ControlValueAccessor {
8067
7214
  "required": false;
8068
7215
  "isSignal": true;
8069
7216
  };
8070
- "required": {
8071
- "alias": "required";
8072
- "required": false;
8073
- "isSignal": true;
8074
- };
8075
7217
  "showValue": {
8076
7218
  "alias": "showValue";
8077
7219
  "required": false;
@@ -8458,33 +7600,27 @@ export declare class StepperComponent {
8458
7600
  /** Visual size of the switch. */
8459
7601
  export type SwitchSize = EaSize;
8460
7602
  /** Status tone applied to the switch track in both states. */
8461
- export type SwitchVariant = 'default' | 'success' | 'warning' | 'error' | 'info';
7603
+ export type SwitchVariant = EaStatusVariant;
8462
7604
  /**
8463
7605
  * On/off toggle styled as a sliding switch. Backed by a visually hidden
8464
7606
  * native checkbox and integrates with Angular forms via
8465
7607
  * `ControlValueAccessor`.
8466
7608
  */
8467
- export declare class SwitchComponent implements ControlValueAccessor {
8468
- readonly label: import("@angular/core").InputSignal<string | undefined>;
8469
- readonly hint: import("@angular/core").InputSignal<string | undefined>;
8470
- readonly errorMsg: import("@angular/core").InputSignal<string | undefined>;
8471
- /** Per-validator-key message overrides for a bound form control (e.g. `{ required: '...' }`). */
8472
- readonly errorMessages: import("@angular/core").InputSignal<Partial<Record<string, string | null>> | undefined>;
8473
- /** When the error shows: `'change'` once the user changes the field and leaves it, `'blur'` once they leave it, even unchanged, `'touch'` the same but live while they edit; unset follows the app-wide `forms` option of `provideEagamiUi`. */
8474
- readonly showErrorsOn: import("@angular/core").InputSignal<EaShowErrorsOn | undefined>;
7609
+ export declare class SwitchComponent extends FieldControlBase implements ControlValueAccessor {
8475
7610
  readonly size: import("@angular/core").InputSignal<EaSize>;
8476
7611
  /**
8477
7612
  * Status tone for the track: a tinted wash with a toned border while off and
8478
7613
  * the solid tone while on. `default` keeps the neutral off track and brand on track.
8479
7614
  */
8480
- readonly variant: import("@angular/core").InputSignal<SwitchVariant>;
7615
+ readonly variant: import("@angular/core").InputSignal<EaStatusVariant>;
8481
7616
  /** Optional icon component drawn in the thumb while the switch is on. */
8482
7617
  readonly onIcon: import("@angular/core").InputSignal<Type<unknown> | undefined>;
8483
7618
  /** Optional icon component drawn in the thumb while the switch is off. */
8484
7619
  readonly offIcon: import("@angular/core").InputSignal<Type<unknown> | undefined>;
8485
7620
  readonly disabled: import("@angular/core").InputSignal<boolean>;
8486
- readonly required: import("@angular/core").InputSignal<boolean>;
8487
7621
  readonly ariaLabel: import("@angular/core").InputSignal<string | undefined>;
7622
+ /** Space-separated ids of the elements whose text names the switch, such as a label outside the component. */
7623
+ readonly ariaLabelledby: import("@angular/core").InputSignal<string | undefined>;
8488
7624
  readonly id: import("@angular/core").InputSignal<string>;
8489
7625
  readonly checked: import("@angular/core").ModelSignal<boolean>;
8490
7626
  /** Fires with the new checked state whenever the user toggles the switch. */
@@ -8512,31 +7648,6 @@ export declare class SwitchComponent implements ControlValueAccessor {
8512
7648
  handleChange(): void;
8513
7649
  static ɵfac: i0.ɵɵFactoryDeclaration<SwitchComponent, never>;
8514
7650
  static ɵcmp: i0.ɵɵComponentDeclaration<SwitchComponent, "ea-switch", never, {
8515
- "label": {
8516
- "alias": "label";
8517
- "required": false;
8518
- "isSignal": true;
8519
- };
8520
- "hint": {
8521
- "alias": "hint";
8522
- "required": false;
8523
- "isSignal": true;
8524
- };
8525
- "errorMsg": {
8526
- "alias": "errorMsg";
8527
- "required": false;
8528
- "isSignal": true;
8529
- };
8530
- "errorMessages": {
8531
- "alias": "errorMessages";
8532
- "required": false;
8533
- "isSignal": true;
8534
- };
8535
- "showErrorsOn": {
8536
- "alias": "showErrorsOn";
8537
- "required": false;
8538
- "isSignal": true;
8539
- };
8540
7651
  "size": {
8541
7652
  "alias": "size";
8542
7653
  "required": false;
@@ -8562,13 +7673,13 @@ export declare class SwitchComponent implements ControlValueAccessor {
8562
7673
  "required": false;
8563
7674
  "isSignal": true;
8564
7675
  };
8565
- "required": {
8566
- "alias": "required";
7676
+ "ariaLabel": {
7677
+ "alias": "aria-label";
8567
7678
  "required": false;
8568
7679
  "isSignal": true;
8569
7680
  };
8570
- "ariaLabel": {
8571
- "alias": "aria-label";
7681
+ "ariaLabelledby": {
7682
+ "alias": "aria-labelledby";
8572
7683
  "required": false;
8573
7684
  "isSignal": true;
8574
7685
  };
@@ -8731,10 +7842,10 @@ export declare class TooltipDirective implements OnDestroy {
8731
7842
  */
8732
7843
  readonly whenClipped: import("@angular/core").InputSignal<boolean>;
8733
7844
  /**
8734
- * Max width in px; the text wraps at this width. Clamped to a 50px floor, and
8735
- * to the viewport, which no value can push the bubble past.
7845
+ * Max width, as a CSS length; the text wraps at this width. Clamped to a 50px
7846
+ * floor, and to the viewport, which no value can push the bubble past.
8736
7847
  */
8737
- readonly maxWidth: import("@angular/core").InputSignal<number | undefined>;
7848
+ readonly maxWidth: import("@angular/core").InputSignal<string | undefined>;
8738
7849
  /**
8739
7850
  * Wait in ms before the bubble appears on hover or keyboard focus, so a
8740
7851
  * pointer passing over the trigger does not flash it. Leaving the trigger
@@ -8843,11 +7954,11 @@ export declare class TooltipDirective implements OnDestroy {
8843
7954
  }, {}, never, never, true, never>;
8844
7955
  }
8845
7956
  /** Semantic colour scheme of a tag. */
8846
- export type TagVariant = 'default' | 'success' | 'warning' | 'error' | 'info';
7957
+ export type TagVariant = EaStatusVariant;
8847
7958
  /** Visual size of a tag. */
8848
7959
  export type TagSize = EaSize;
8849
7960
  /** Where a clipped label reveals its full text, or `none` to suppress it. */
8850
- export type TagTooltip = 'above' | 'below' | 'none';
7961
+ export type TagTooltip = 'top' | 'bottom' | 'none';
8851
7962
  /**
8852
7963
  * Inline label commonly used to represent filters, categories, or selected
8853
7964
  * items. When `removable`, renders a close button that emits `removed`; the
@@ -8862,7 +7973,7 @@ export declare class TagComponent {
8862
7973
  private readonly i18n;
8863
7974
  private readonly destroyRef;
8864
7975
  private readonly labelEl;
8865
- readonly variant: import("@angular/core").InputSignal<TagVariant>;
7976
+ readonly variant: import("@angular/core").InputSignal<EaStatusVariant>;
8866
7977
  readonly size: import("@angular/core").InputSignal<EaSize>;
8867
7978
  /** Optional icon component rendered before the label. */
8868
7979
  readonly icon: import("@angular/core").InputSignal<Type<unknown> | undefined>;
@@ -8870,11 +7981,11 @@ export declare class TagComponent {
8870
7981
  readonly disabled: import("@angular/core").InputSignal<boolean>;
8871
7982
  readonly removeLabel: import("@angular/core").InputSignal<string | undefined>;
8872
7983
  /**
8873
- * Widest the chip may grow: a number of px, or any CSS length for a chip that
8874
- * has to give way to its container (`'100%'` in a responsive grid cell).
7984
+ * Widest the chip may grow, as a CSS length; `'100%'` lets the chip give way
7985
+ * to its container in a responsive grid cell.
8875
7986
  * Also settable in CSS as `--ea-tag-max-width`, which this input overrides.
8876
7987
  */
8877
- readonly maxWidth: import("@angular/core").InputSignal<string | number | undefined>;
7988
+ readonly maxWidth: import("@angular/core").InputSignal<string | undefined>;
8878
7989
  /**
8879
7990
  * Fill colour, for a tag carrying a colour of its own (a user-chosen label).
8880
7991
  * Paints the chip and its border, and takes precedence over `variant`. On
@@ -8916,8 +8027,6 @@ export declare class TagComponent {
8916
8027
  'ea-tag--disabled': boolean;
8917
8028
  'ea-tag--uppercase': boolean;
8918
8029
  }>;
8919
- /** `maxWidth` as a CSS length; a bare number is px, as the input documents. */
8920
- protected readonly resolvedMaxWidth: import("@angular/core").Signal<string | null>;
8921
8030
  /** The caller's `ink`, else one that reads on a hex `color`, else `null`. */
8922
8031
  protected readonly resolvedInk: import("@angular/core").Signal<string | null>;
8923
8032
  protected readonly resolvedColor: import("@angular/core").Signal<string | null>;
@@ -9006,21 +8115,16 @@ export interface TextareaSelection {
9006
8115
  }
9007
8116
  /**
9008
8117
  * Multiline text field that mirrors the `ea-input` API. Supports configurable
9009
- * `resize` direction, `maxlength` and a character count, exposes the caret
8118
+ * `resize` direction, `maxLength` and a character count, exposes the caret
9010
8119
  * through `getSelection()` and `insertText()`, and integrates with Angular
9011
8120
  * forms via `ControlValueAccessor`.
9012
8121
  */
9013
- export declare class TextareaComponent implements ControlValueAccessor {
8122
+ export declare class TextareaComponent extends LabelledFieldControlBase implements ControlValueAccessor {
9014
8123
  readonly textareaEl: import("@angular/core").Signal<ElementRef<HTMLTextAreaElement> | undefined>;
9015
- readonly label: import("@angular/core").InputSignal<string | undefined>;
9016
- /** Optional icon component rendered before the label text. */
9017
- readonly labelIcon: import("@angular/core").InputSignal<Type<unknown> | undefined>;
9018
- /** Help revealed by an info button beside the label, as plain text or a template. */
9019
- readonly labelHelp: import("@angular/core").InputSignal<string | TemplateRef<unknown> | undefined>;
9020
- /** Adds a muted "(optional)" note after the label, unless `required` is also set. */
9021
- readonly optional: import("@angular/core").InputSignal<boolean>;
9022
8124
  /** Accessible name for the control when no visible `label` is set. */
9023
8125
  readonly ariaLabel: import("@angular/core").InputSignal<string | undefined>;
8126
+ /** Space-separated ids of the elements whose text names the field, such as a label outside the component. */
8127
+ readonly ariaLabelledby: import("@angular/core").InputSignal<string | undefined>;
9024
8128
  readonly placeholder: import("@angular/core").InputSignal<string>;
9025
8129
  /**
9026
8130
  * Hints typed into the empty field one character at a time, trailed by a
@@ -9031,27 +8135,22 @@ export declare class TextareaComponent implements ControlValueAccessor {
9031
8135
  */
9032
8136
  readonly typedPlaceholder: import("@angular/core").InputSignal<readonly string[]>;
9033
8137
  readonly size: import("@angular/core").InputSignal<EaSize>;
9034
- readonly hint: import("@angular/core").InputSignal<string | undefined>;
9035
- readonly errorMsg: import("@angular/core").InputSignal<string | undefined>;
9036
- /** Per-validator-key message overrides for a bound form control (e.g. `{ required: '...' }`). */
9037
- readonly errorMessages: import("@angular/core").InputSignal<Partial<Record<string, string | null>> | undefined>;
9038
- /** When the error shows: `'change'` once the user changes the field and leaves it, `'blur'` once they leave it, even unchanged, `'touch'` the same but live while they edit; unset follows the app-wide `forms` option of `provideEagamiUi`. */
9039
- readonly showErrorsOn: import("@angular/core").InputSignal<EaShowErrorsOn | undefined>;
9040
8138
  readonly disabled: import("@angular/core").InputSignal<boolean>;
9041
8139
  readonly readonly: import("@angular/core").InputSignal<boolean>;
9042
- readonly required: import("@angular/core").InputSignal<boolean>;
9043
8140
  readonly resize: import("@angular/core").InputSignal<TextareaResize>;
9044
- readonly maxlength: import("@angular/core").InputSignal<number | undefined>;
9045
- /** Shows the number of characters typed below the field, against `maxlength` when one is set. */
8141
+ readonly maxLength: import("@angular/core").InputSignal<number | undefined>;
8142
+ /** Shows the number of characters typed below the field, against `maxLength` when one is set. */
9046
8143
  readonly showCount: import("@angular/core").InputSignal<boolean>;
9047
- /** Optional pixel ceiling for the textarea's height. Beyond it, the inner
9048
- * field scrolls vertically instead of growing. */
9049
- readonly maxHeight: import("@angular/core").InputSignal<number | undefined>;
9050
- /** Optional pixel floor for the textarea's height. Clamped so it never drops
9051
- * below the default height. */
9052
- readonly minHeight: import("@angular/core").InputSignal<number | undefined>;
8144
+ /** Optional ceiling for the textarea's height, as a CSS length. Beyond it,
8145
+ * the inner field scrolls vertically instead of growing. */
8146
+ readonly maxHeight: import("@angular/core").InputSignal<string | undefined>;
8147
+ /** Optional floor for the textarea's height, as a CSS length. Clamped so it
8148
+ * never drops below the default height. */
8149
+ readonly minHeight: import("@angular/core").InputSignal<string | undefined>;
9053
8150
  readonly id: import("@angular/core").InputSignal<string>;
9054
8151
  readonly value: import("@angular/core").ModelSignal<string>;
8152
+ /** Fires with the new value whenever the user edits the textarea. */
8153
+ readonly changed: import("@angular/core").OutputEmitterRef<string>;
9055
8154
  readonly isFocused: import("@angular/core").WritableSignal<boolean>;
9056
8155
  private readonly _formDisabled;
9057
8156
  /** Fires when the textarea receives focus. */
@@ -9103,28 +8202,13 @@ export declare class TextareaComponent implements ControlValueAccessor {
9103
8202
  insertText(text: string): void;
9104
8203
  static ɵfac: i0.ɵɵFactoryDeclaration<TextareaComponent, never>;
9105
8204
  static ɵcmp: i0.ɵɵComponentDeclaration<TextareaComponent, "ea-textarea", never, {
9106
- "label": {
9107
- "alias": "label";
9108
- "required": false;
9109
- "isSignal": true;
9110
- };
9111
- "labelIcon": {
9112
- "alias": "labelIcon";
9113
- "required": false;
9114
- "isSignal": true;
9115
- };
9116
- "labelHelp": {
9117
- "alias": "labelHelp";
9118
- "required": false;
9119
- "isSignal": true;
9120
- };
9121
- "optional": {
9122
- "alias": "optional";
8205
+ "ariaLabel": {
8206
+ "alias": "aria-label";
9123
8207
  "required": false;
9124
8208
  "isSignal": true;
9125
8209
  };
9126
- "ariaLabel": {
9127
- "alias": "aria-label";
8210
+ "ariaLabelledby": {
8211
+ "alias": "aria-labelledby";
9128
8212
  "required": false;
9129
8213
  "isSignal": true;
9130
8214
  };
@@ -9143,26 +8227,6 @@ export declare class TextareaComponent implements ControlValueAccessor {
9143
8227
  "required": false;
9144
8228
  "isSignal": true;
9145
8229
  };
9146
- "hint": {
9147
- "alias": "hint";
9148
- "required": false;
9149
- "isSignal": true;
9150
- };
9151
- "errorMsg": {
9152
- "alias": "errorMsg";
9153
- "required": false;
9154
- "isSignal": true;
9155
- };
9156
- "errorMessages": {
9157
- "alias": "errorMessages";
9158
- "required": false;
9159
- "isSignal": true;
9160
- };
9161
- "showErrorsOn": {
9162
- "alias": "showErrorsOn";
9163
- "required": false;
9164
- "isSignal": true;
9165
- };
9166
8230
  "disabled": {
9167
8231
  "alias": "disabled";
9168
8232
  "required": false;
@@ -9173,18 +8237,13 @@ export declare class TextareaComponent implements ControlValueAccessor {
9173
8237
  "required": false;
9174
8238
  "isSignal": true;
9175
8239
  };
9176
- "required": {
9177
- "alias": "required";
9178
- "required": false;
9179
- "isSignal": true;
9180
- };
9181
8240
  "resize": {
9182
8241
  "alias": "resize";
9183
8242
  "required": false;
9184
8243
  "isSignal": true;
9185
8244
  };
9186
- "maxlength": {
9187
- "alias": "maxlength";
8245
+ "maxLength": {
8246
+ "alias": "maxLength";
9188
8247
  "required": false;
9189
8248
  "isSignal": true;
9190
8249
  };
@@ -9215,6 +8274,7 @@ export declare class TextareaComponent implements ControlValueAccessor {
9215
8274
  };
9216
8275
  }, {
9217
8276
  "value": "valueChange";
8277
+ "changed": "changed";
9218
8278
  "focused": "focused";
9219
8279
  "blurred": "blurred";
9220
8280
  }, never, never, true, never>;
@@ -9253,7 +8313,7 @@ interface ParsedTime {
9253
8313
  * unit), focus auto-advances to the next column. Backspace clears the typed
9254
8314
  * buffer; Escape closes the popover.
9255
8315
  */
9256
- export declare class TimePickerComponent implements ControlValueAccessor {
8316
+ export declare class TimePickerComponent extends LabelledFieldControlBase implements ControlValueAccessor {
9257
8317
  protected readonly triggerEl: import("@angular/core").Signal<ElementRef<HTMLElement> | undefined>;
9258
8318
  protected readonly inputEl: import("@angular/core").Signal<ElementRef<HTMLInputElement> | undefined>;
9259
8319
  protected readonly hoursEl: import("@angular/core").Signal<ElementRef<HTMLInputElement> | undefined>;
@@ -9262,24 +8322,10 @@ export declare class TimePickerComponent implements ControlValueAccessor {
9262
8322
  protected readonly i18n: EagamiI18nService;
9263
8323
  private readonly destroyRef;
9264
8324
  private readonly injector;
9265
- readonly label: import("@angular/core").InputSignal<string | undefined>;
9266
- /** Optional icon component rendered before the label text. */
9267
- readonly labelIcon: import("@angular/core").InputSignal<Type<unknown> | undefined>;
9268
- /** Help revealed by an info button beside the label, as plain text or a template. */
9269
- readonly labelHelp: import("@angular/core").InputSignal<string | TemplateRef<unknown> | undefined>;
9270
- /** Adds a muted "(optional)" note after the label, unless `required` is also set. */
9271
- readonly optional: import("@angular/core").InputSignal<boolean>;
9272
8325
  readonly placeholder: import("@angular/core").InputSignal<string | undefined>;
9273
8326
  readonly size: import("@angular/core").InputSignal<EaSize>;
9274
8327
  readonly disabled: import("@angular/core").InputSignal<boolean>;
9275
8328
  readonly readonly: import("@angular/core").InputSignal<boolean>;
9276
- readonly required: import("@angular/core").InputSignal<boolean>;
9277
- readonly hint: import("@angular/core").InputSignal<string | undefined>;
9278
- readonly errorMsg: import("@angular/core").InputSignal<string | undefined>;
9279
- /** Per-validator-key message overrides for a bound form control (e.g. `{ required: '...' }`). */
9280
- readonly errorMessages: import("@angular/core").InputSignal<Partial<Record<string, string | null>> | undefined>;
9281
- /** When the error shows: `'change'` once the user changes the field and leaves it, `'blur'` once they leave it, even unchanged, `'touch'` the same but live while they edit; unset follows the app-wide `forms` option of `provideEagamiUi`. */
9282
- readonly showErrorsOn: import("@angular/core").InputSignal<EaShowErrorsOn | undefined>;
9283
8329
  /** Display format for the trigger label. Wire value is always 24h. */
9284
8330
  readonly format: import("@angular/core").InputSignal<TimePickerFormat>;
9285
8331
  readonly includeSeconds: import("@angular/core").InputSignal<boolean>;
@@ -9431,26 +8477,6 @@ export declare class TimePickerComponent implements ControlValueAccessor {
9431
8477
  private commit;
9432
8478
  static ɵfac: i0.ɵɵFactoryDeclaration<TimePickerComponent, never>;
9433
8479
  static ɵcmp: i0.ɵɵComponentDeclaration<TimePickerComponent, "ea-time-picker", never, {
9434
- "label": {
9435
- "alias": "label";
9436
- "required": false;
9437
- "isSignal": true;
9438
- };
9439
- "labelIcon": {
9440
- "alias": "labelIcon";
9441
- "required": false;
9442
- "isSignal": true;
9443
- };
9444
- "labelHelp": {
9445
- "alias": "labelHelp";
9446
- "required": false;
9447
- "isSignal": true;
9448
- };
9449
- "optional": {
9450
- "alias": "optional";
9451
- "required": false;
9452
- "isSignal": true;
9453
- };
9454
8480
  "placeholder": {
9455
8481
  "alias": "placeholder";
9456
8482
  "required": false;
@@ -9471,31 +8497,6 @@ export declare class TimePickerComponent implements ControlValueAccessor {
9471
8497
  "required": false;
9472
8498
  "isSignal": true;
9473
8499
  };
9474
- "required": {
9475
- "alias": "required";
9476
- "required": false;
9477
- "isSignal": true;
9478
- };
9479
- "hint": {
9480
- "alias": "hint";
9481
- "required": false;
9482
- "isSignal": true;
9483
- };
9484
- "errorMsg": {
9485
- "alias": "errorMsg";
9486
- "required": false;
9487
- "isSignal": true;
9488
- };
9489
- "errorMessages": {
9490
- "alias": "errorMessages";
9491
- "required": false;
9492
- "isSignal": true;
9493
- };
9494
- "showErrorsOn": {
9495
- "alias": "showErrorsOn";
9496
- "required": false;
9497
- "isSignal": true;
9498
- };
9499
8500
  "format": {
9500
8501
  "alias": "format";
9501
8502
  "required": false;
@@ -9599,7 +8600,7 @@ export declare class TimelineComponent {
9599
8600
  }, {}, never, never, true, never>;
9600
8601
  }
9601
8602
  /** Semantic colour scheme of a toast. */
9602
- export type ToastVariant = 'default' | 'success' | 'warning' | 'error' | 'info';
8603
+ export type ToastVariant = EaStatusVariant;
9603
8604
  /** One run of a toast's title or message. */
9604
8605
  export interface ToastSegment {
9605
8606
  text: string;
@@ -9689,7 +8690,7 @@ export declare class ToastComponent {
9689
8690
  /** Visual size applied to every toast in the stack. */
9690
8691
  readonly size: import("@angular/core").InputSignal<EaSize>;
9691
8692
  /** Show a dismiss button on each toast. */
9692
- readonly clearable: import("@angular/core").InputSignal<boolean>;
8693
+ readonly dismissible: import("@angular/core").InputSignal<boolean>;
9693
8694
  protected readonly containerClass: import("@angular/core").Signal<string>;
9694
8695
  protected toastRole(variant: string): 'alert' | 'status';
9695
8696
  protected segmentsOf(text: ToastText): readonly ToastSegment[] | null;
@@ -9711,8 +8712,8 @@ export declare class ToastComponent {
9711
8712
  "required": false;
9712
8713
  "isSignal": true;
9713
8714
  };
9714
- "clearable": {
9715
- "alias": "clearable";
8715
+ "dismissible": {
8716
+ "alias": "dismissible";
9716
8717
  "required": false;
9717
8718
  "isSignal": true;
9718
8719
  };