@eagami/ui 1.4.0 → 2.0.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.
@@ -1,5 +1,5 @@
1
1
  import * as i0 from '@angular/core';
2
- import { InjectionToken, EnvironmentProviders, Signal, OnDestroy, ElementRef, TemplateRef, Type, AfterViewInit, OnInit } from '@angular/core';
2
+ import { InjectionToken, EnvironmentProviders, Signal, OnDestroy, ElementRef, TemplateRef, Type, OnInit } from '@angular/core';
3
3
  import { ControlValueAccessor } from '@angular/forms';
4
4
  import * as _eagami_ui from '@eagami/ui';
5
5
 
@@ -40,6 +40,16 @@ interface EagamiMessages {
40
40
  groupLabel: (length: number) => string;
41
41
  digitLabel: (index: number, length: number) => string;
42
42
  };
43
+ colorPicker: {
44
+ placeholder: string;
45
+ clear: string;
46
+ hue: string;
47
+ saturationAndValue: string;
48
+ alpha: string;
49
+ eyedropper: string;
50
+ presets: string;
51
+ toggleFormat: string;
52
+ };
43
53
  dataTable: {
44
54
  noData: string;
45
55
  };
@@ -68,6 +78,15 @@ interface EagamiMessages {
68
78
  menu: {
69
79
  label: string;
70
80
  };
81
+ multiSelect: {
82
+ placeholder: string;
83
+ searchPlaceholder: string;
84
+ searchEmpty: string;
85
+ selectAll: string;
86
+ clearAll: string;
87
+ removeOption: (label: string) => string;
88
+ selectedCount: (count: number) => string;
89
+ };
71
90
  paginator: {
72
91
  label: string;
73
92
  rowsPerPage: string;
@@ -81,9 +100,27 @@ interface EagamiMessages {
81
100
  spinner: {
82
101
  label: string;
83
102
  };
103
+ stepper: {
104
+ optional: string;
105
+ };
84
106
  tag: {
85
107
  remove: string;
86
108
  };
109
+ timePicker: {
110
+ placeholder: string;
111
+ clear: string;
112
+ hoursLabel: string;
113
+ minutesLabel: string;
114
+ secondsLabel: string;
115
+ incrementHours: string;
116
+ decrementHours: string;
117
+ incrementMinutes: string;
118
+ decrementMinutes: string;
119
+ incrementSeconds: string;
120
+ decrementSeconds: string;
121
+ amLabel: string;
122
+ pmLabel: string;
123
+ };
87
124
  toast: {
88
125
  dismiss: string;
89
126
  };
@@ -132,6 +169,7 @@ declare class EagamiI18nService {
132
169
  private readonly _locale;
133
170
  /** The currently active locale. Read it reactively or call `setLocale()`. */
134
171
  readonly locale: Signal<EagamiLocale>;
172
+ constructor();
135
173
  /** The resolved message dictionary for the active locale. */
136
174
  readonly messages: Signal<EagamiMessages>;
137
175
  /** Switches the active locale; falls back to English if unsupported. */
@@ -396,6 +434,8 @@ declare class AvatarEditorComponent implements OnDestroy {
396
434
  [x: string]: boolean;
397
435
  'ea-avatar-editor--has-image': boolean;
398
436
  'ea-avatar-editor--drag-over': boolean;
437
+ 'ea-avatar-editor--compact': boolean;
438
+ 'ea-avatar-editor--ultra-compact': boolean;
399
439
  }>;
400
440
  private readonly injector;
401
441
  private readonly boundWheel;
@@ -486,17 +526,25 @@ type BadgeVariant = 'default' | 'success' | 'warning' | 'error' | 'info';
486
526
  /** Visual size of a badge. */
487
527
  type BadgeSize = 'sm' | 'md' | 'lg';
488
528
  /**
489
- * Compact pill-shaped indicator used to communicate status, counts, or labels
490
- * inline with surrounding content.
529
+ * Outer shape of a badge.
530
+ * - `pill` (default): content-shaped pill, ideal for inline status labels
531
+ * - `pin`: fixed-min square that renders as a perfect circle for single
532
+ * characters (counts) and expands into a pill for longer content
533
+ */
534
+ type BadgeShape = 'pill' | 'pin';
535
+ /**
536
+ * Compact indicator used to communicate status, counts, or labels inline with
537
+ * surrounding content.
491
538
  */
492
539
  declare class BadgeComponent {
493
540
  readonly variant: i0.InputSignal<BadgeVariant>;
494
541
  readonly size: i0.InputSignal<BadgeSize>;
542
+ readonly shape: i0.InputSignal<BadgeShape>;
495
543
  readonly hostClasses: i0.Signal<{
496
544
  [x: string]: boolean;
497
545
  }>;
498
546
  static ɵfac: i0.ɵɵFactoryDeclaration<BadgeComponent, never>;
499
- static ɵcmp: i0.ɵɵComponentDeclaration<BadgeComponent, "ea-badge", never, { "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
547
+ static ɵcmp: i0.ɵɵComponentDeclaration<BadgeComponent, "ea-badge", never, { "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "shape": { "alias": "shape"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
500
548
  }
501
549
 
502
550
  /** Visual style of the separator rendered between breadcrumb items. */
@@ -644,6 +692,151 @@ declare class CheckboxComponent implements ControlValueAccessor {
644
692
  static ɵcmp: i0.ɵɵComponentDeclaration<CheckboxComponent, "ea-checkbox", never, { "label": { "alias": "label"; "required": false; "isSignal": true; }; "count": { "alias": "count"; "required": false; "isSignal": true; }; "hint": { "alias": "hint"; "required": false; "isSignal": true; }; "errorMsg": { "alias": "errorMsg"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "indeterminate": { "alias": "indeterminate"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "aria-label"; "required": false; "isSignal": true; }; "id": { "alias": "id"; "required": false; "isSignal": true; }; "checked": { "alias": "checked"; "required": false; "isSignal": true; }; }, { "checked": "checkedChange"; "changed": "changed"; }, never, never, true, never>;
645
693
  }
646
694
 
695
+ /** Visual size of the color picker trigger. */
696
+ type ColorPickerSize = 'sm' | 'md' | 'lg';
697
+ /** Format used to emit the selected value via `value` / `changed`. */
698
+ type ColorPickerFormat = 'hex' | 'rgb' | 'hsl';
699
+ /** Which group of inputs the popover currently shows (hex string or RGB channels). */
700
+ type ColorPickerInputMode = 'hex' | 'rgb';
701
+ /** Value accepted via `writeValue` — any CSS color string or `null`. */
702
+ type ColorPickerValue = string | null;
703
+ interface Rgb {
704
+ r: number;
705
+ g: number;
706
+ b: number;
707
+ }
708
+ /**
709
+ * Popover color picker with a saturation/value gradient area, hue slider,
710
+ * optional alpha slider, hex + RGB inputs, a configurable preset palette,
711
+ * and an eyedropper (Chromium browsers). Integrates with Angular forms via
712
+ * `ControlValueAccessor`. Accepts any CSS color string in `writeValue`.
713
+ */
714
+ declare class ColorPickerComponent implements ControlValueAccessor {
715
+ protected readonly triggerEl: i0.Signal<ElementRef<HTMLButtonElement> | undefined>;
716
+ private readonly svAreaEl;
717
+ private readonly hueTrackEl;
718
+ private readonly alphaTrackEl;
719
+ private readonly injector;
720
+ protected readonly i18n: EagamiI18nService;
721
+ readonly label: i0.InputSignal<string | undefined>;
722
+ readonly placeholder: i0.InputSignal<string | undefined>;
723
+ readonly size: i0.InputSignal<ColorPickerSize>;
724
+ readonly disabled: i0.InputSignal<boolean>;
725
+ readonly readonly: i0.InputSignal<boolean>;
726
+ readonly required: i0.InputSignal<boolean>;
727
+ readonly hint: i0.InputSignal<string | undefined>;
728
+ readonly errorMsg: i0.InputSignal<string | undefined>;
729
+ /** Whether to show the alpha slider. When `false` the emitted value always has alpha = 1. */
730
+ readonly showAlpha: i0.InputSignal<boolean>;
731
+ /** Output format for emitted values. */
732
+ readonly format: i0.InputSignal<ColorPickerFormat>;
733
+ /** Preset swatches shown at the bottom of the popover. Pass an empty array to hide. */
734
+ readonly presets: i0.InputSignal<readonly string[]>;
735
+ readonly id: i0.InputSignal<string>;
736
+ readonly value: i0.ModelSignal<string | null>;
737
+ /** Fires with the new color string whenever the selection changes. */
738
+ readonly changed: i0.OutputEmitterRef<string | null>;
739
+ readonly isOpen: i0.WritableSignal<boolean>;
740
+ private readonly hue;
741
+ private readonly sat;
742
+ private readonly val;
743
+ private readonly alpha;
744
+ /** Tracks the active drag target so pointermove can route correctly. */
745
+ private readonly dragging;
746
+ /** Which input row is visible (hex string or RGB channels). Toggles via the
747
+ * format button. Independent of the `format` input, which only controls the
748
+ * emitted value. */
749
+ readonly inputMode: i0.WritableSignal<ColorPickerInputMode>;
750
+ /** What the hex input shows. Kept separate from the canonical hex so the user
751
+ * can type a partial value (`#1`, `#12`, `#123…`) without each keystroke being
752
+ * expanded back into a 6-digit canonical form. */
753
+ readonly hexInputValue: i0.WritableSignal<string>;
754
+ private readonly _formDisabled;
755
+ private onChange;
756
+ private onTouched;
757
+ readonly isDisabled: i0.Signal<boolean>;
758
+ readonly hasError: i0.Signal<boolean>;
759
+ readonly showError: i0.Signal<boolean>;
760
+ readonly showHint: i0.Signal<boolean>;
761
+ readonly rgb: i0.Signal<Rgb>;
762
+ readonly displayColor: i0.Signal<string>;
763
+ /** Opaque version of the current color — used as the hue/SV reference. */
764
+ readonly opaqueColor: i0.Signal<string>;
765
+ readonly hueColor: i0.Signal<string>;
766
+ readonly hexDisplay: i0.Signal<string>;
767
+ readonly displayValue: i0.Signal<string>;
768
+ readonly resolvedPlaceholder: i0.Signal<string>;
769
+ readonly triggerClasses: i0.Signal<{
770
+ [x: string]: boolean;
771
+ 'ea-color-picker__trigger--error': boolean;
772
+ 'ea-color-picker__trigger--open': boolean;
773
+ 'ea-color-picker__trigger--disabled': boolean;
774
+ }>;
775
+ /**
776
+ * True when the browser supports the EyeDropper API. Not a `computed` —
777
+ * `window.EyeDropper` isn't a signal, so a memoized computed would cache the
778
+ * first read (typically `false`, since the popover content's bindings now
779
+ * evaluate at parent-view creation time via content projection, before any
780
+ * polyfill / test setup runs). A plain method re-checks on every call.
781
+ */
782
+ hasEyeDropper(): boolean;
783
+ writeValue(val: ColorPickerValue): void;
784
+ registerOnChange(fn: (value: string | null) => void): void;
785
+ registerOnTouched(fn: () => void): void;
786
+ setDisabledState(isDisabled: boolean): void;
787
+ toggle(): void;
788
+ open(): void;
789
+ close(): void;
790
+ focus(): void;
791
+ clear(event: Event): void;
792
+ readonly svPointerLeft: i0.Signal<string>;
793
+ readonly svPointerTop: i0.Signal<string>;
794
+ readonly huePointerLeft: i0.Signal<string>;
795
+ readonly alphaPointerLeft: i0.Signal<string>;
796
+ readonly hueRounded: i0.Signal<number>;
797
+ readonly alphaPercentRounded: i0.Signal<number>;
798
+ onSvPointerDown(event: PointerEvent): void;
799
+ onSvPointerMove(event: PointerEvent): void;
800
+ onSvPointerUp(event: PointerEvent): void;
801
+ onSvKeydown(event: KeyboardEvent): void;
802
+ private updateSvFromPointer;
803
+ onHuePointerDown(event: PointerEvent): void;
804
+ onHuePointerMove(event: PointerEvent): void;
805
+ onHuePointerUp(event: PointerEvent): void;
806
+ onHueKeydown(event: KeyboardEvent): void;
807
+ private updateHueFromPointer;
808
+ onAlphaPointerDown(event: PointerEvent): void;
809
+ onAlphaPointerMove(event: PointerEvent): void;
810
+ onAlphaPointerUp(event: PointerEvent): void;
811
+ onAlphaKeydown(event: KeyboardEvent): void;
812
+ private updateAlphaFromPointer;
813
+ /**
814
+ * Mirrors the user's literal text into `hexInputValue` and (if the text
815
+ * parses) applies the new color silently — without rewriting the input.
816
+ * Without `refreshHex: false`, typing `#123` would parse, commit, and then
817
+ * snap the input back to `#112233` mid-keystroke, fighting the user's caret.
818
+ * Canonicalization happens only on blur via {@link onHexBlur}.
819
+ */
820
+ onHexInput(event: Event): void;
821
+ onHexBlur(): void;
822
+ onRgbInput(channel: 'r' | 'g' | 'b', event: Event): void;
823
+ /** Cycles the input row between hex string and RGB channels. */
824
+ cycleInputMode(): void;
825
+ onAlphaInput(event: Event): void;
826
+ pickFromScreen(): Promise<void>;
827
+ selectPreset(hex: string): void;
828
+ onTriggerKeydown(event: KeyboardEvent): void;
829
+ onPopoverKeydown(event: KeyboardEvent): void;
830
+ /** Called by `<ea-popover>` when the user clicks outside the picker. */
831
+ onPopoverCloseRequested(): void;
832
+ private applyHsv;
833
+ private applyRgba;
834
+ private commit;
835
+ private refreshHexInput;
836
+ static ɵfac: i0.ɵɵFactoryDeclaration<ColorPickerComponent, never>;
837
+ static ɵcmp: i0.ɵɵComponentDeclaration<ColorPickerComponent, "ea-color-picker", never, { "label": { "alias": "label"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "readonly": { "alias": "readonly"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "hint": { "alias": "hint"; "required": false; "isSignal": true; }; "errorMsg": { "alias": "errorMsg"; "required": false; "isSignal": true; }; "showAlpha": { "alias": "showAlpha"; "required": false; "isSignal": true; }; "format": { "alias": "format"; "required": false; "isSignal": true; }; "presets": { "alias": "presets"; "required": false; "isSignal": true; }; "id": { "alias": "id"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "changed": "changed"; }, never, never, true, never>;
838
+ }
839
+
647
840
  /** Vertical density preset for table rows and header cells. */
648
841
  type DataTableDensity = 'compact' | 'comfortable' | 'spacious';
649
842
  /** Sort direction; `null` means no sort is applied. */
@@ -780,8 +973,7 @@ interface CalendarDay {
780
973
  * Escape). Integrates with Angular forms via `ControlValueAccessor`.
781
974
  */
782
975
  declare class DatePickerComponent implements ControlValueAccessor {
783
- private readonly hostEl;
784
- private readonly triggerEl;
976
+ protected readonly triggerEl: i0.Signal<ElementRef<HTMLButtonElement> | undefined>;
785
977
  private readonly injector;
786
978
  protected readonly i18n: EagamiI18nService;
787
979
  readonly label: i0.InputSignal<string | undefined>;
@@ -850,7 +1042,8 @@ declare class DatePickerComponent implements ControlValueAccessor {
850
1042
  goToToday(): void;
851
1043
  handleTriggerKeydown(event: KeyboardEvent): void;
852
1044
  handleGridKeydown(event: KeyboardEvent): void;
853
- onDocumentClick(event: Event): void;
1045
+ /** Called by `<ea-popover>` when the user clicks outside the picker. */
1046
+ onPopoverCloseRequested(): void;
854
1047
  private formatOptions;
855
1048
  private toDate;
856
1049
  private startOfDay;
@@ -955,12 +1148,11 @@ type DropdownSize = 'sm' | 'md' | 'lg';
955
1148
  * Single-select dropdown with a custom popup list. Supports keyboard
956
1149
  * navigation (arrow keys, Enter/Space to select, Escape to close), closes
957
1150
  * on outside click or viewport scroll/resize, and integrates with Angular
958
- * forms via `ControlValueAccessor`.
1151
+ * forms via `ControlValueAccessor`. Positioning, dismissal, and SSR-safe
1152
+ * scroll handling are provided by `<ea-popover>`.
959
1153
  */
960
1154
  declare class DropdownComponent implements ControlValueAccessor {
961
1155
  private readonly elRef;
962
- private readonly menuEl;
963
- private readonly destroyRef;
964
1156
  private readonly i18n;
965
1157
  readonly label: i0.InputSignal<string | undefined>;
966
1158
  readonly placeholder: i0.InputSignal<string | undefined>;
@@ -993,7 +1185,6 @@ declare class DropdownComponent implements ControlValueAccessor {
993
1185
  'ea-dropdown__trigger--open': boolean;
994
1186
  'ea-dropdown__trigger--disabled': boolean;
995
1187
  }>;
996
- constructor();
997
1188
  writeValue(val: string): void;
998
1189
  registerOnChange(fn: (value: string) => void): void;
999
1190
  registerOnTouched(fn: () => void): void;
@@ -1006,9 +1197,10 @@ declare class DropdownComponent implements ControlValueAccessor {
1006
1197
  close(): void;
1007
1198
  /** Moves keyboard focus to the dropdown trigger. */
1008
1199
  focus(): void;
1200
+ /** Called by `<ea-popover>` when the user clicks outside the dropdown. */
1201
+ onPopoverCloseRequested(): void;
1009
1202
  handleKeydown(event: KeyboardEvent): void;
1010
1203
  private moveFocus;
1011
- onDocumentClick(event: Event): void;
1012
1204
  static ɵfac: i0.ɵɵFactoryDeclaration<DropdownComponent, never>;
1013
1205
  static ɵcmp: i0.ɵɵComponentDeclaration<DropdownComponent, "ea-dropdown", never, { "label": { "alias": "label"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "options": { "alias": "options"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "readonly": { "alias": "readonly"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "hint": { "alias": "hint"; "required": false; "isSignal": true; }; "errorMsg": { "alias": "errorMsg"; "required": false; "isSignal": true; }; "id": { "alias": "id"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "changed": "changed"; }, never, never, true, never>;
1014
1206
  }
@@ -1129,9 +1321,6 @@ declare function iconDisplayName(iconOrSlug: IconComponentType | string): string
1129
1321
  * the full set. For single-icon usage import the component directly (e.g.
1130
1322
  * `import { HomeIconComponent } from '@eagami/ui'`) and the bundler will
1131
1323
  * tree-shake `ICONS` away.
1132
- *
1133
- * Deprecated aliases (e.g. `PencilIconComponent`) are intentionally excluded
1134
- * so they don't surface in generated catalogues.
1135
1324
  */
1136
1325
  declare const ICONS: ReadonlyArray<IconComponentType>;
1137
1326
 
@@ -1223,18 +1412,6 @@ declare class ApertureIconComponent extends IconComponentBase {
1223
1412
  static ɵcmp: i0.ɵɵComponentDeclaration<ApertureIconComponent, "ea-icon-aperture", never, {}, {}, never, never, true, never>;
1224
1413
  }
1225
1414
 
1226
- /**
1227
- * @deprecated Will be removed in v2.0.0. The icon depicts Apple Inc.'s logo,
1228
- * which is more strictly protected than other brand marks. Source the asset
1229
- * directly from Apple per their brand guidelines for use cases like "Sign in
1230
- * with Apple".
1231
- */
1232
- declare class AppleIconComponent extends IconComponentBase {
1233
- readonly brand: i0.InputSignal<boolean>;
1234
- static ɵfac: i0.ɵɵFactoryDeclaration<AppleIconComponent, never>;
1235
- static ɵcmp: i0.ɵɵComponentDeclaration<AppleIconComponent, "ea-icon-apple", never, { "brand": { "alias": "brand"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
1236
- }
1237
-
1238
1415
  declare class ArchiveIconComponent extends IconComponentBase {
1239
1416
  static readonly slug = "archive";
1240
1417
  static readonly category: IconCategory;
@@ -2473,6 +2650,14 @@ declare class LayoutIconComponent extends IconComponentBase {
2473
2650
  static ɵcmp: i0.ɵɵComponentDeclaration<LayoutIconComponent, "ea-icon-layout", never, {}, {}, never, never, true, never>;
2474
2651
  }
2475
2652
 
2653
+ declare class LeftHalfStarIconComponent extends IconComponentBase {
2654
+ static readonly slug = "left-half-star";
2655
+ static readonly category: IconCategory;
2656
+ static readonly tags: ReadonlyArray<string>;
2657
+ static ɵfac: i0.ɵɵFactoryDeclaration<LeftHalfStarIconComponent, never>;
2658
+ static ɵcmp: i0.ɵɵComponentDeclaration<LeftHalfStarIconComponent, "ea-icon-left-half-star", never, {}, {}, never, never, true, never>;
2659
+ }
2660
+
2476
2661
  declare class LifeBuoyIconComponent extends IconComponentBase {
2477
2662
  static readonly slug = "life-buoy";
2478
2663
  static readonly category: IconCategory;
@@ -2888,20 +3073,6 @@ declare class PenToolIconComponent extends IconComponentBase {
2888
3073
  static ɵcmp: i0.ɵɵComponentDeclaration<PenToolIconComponent, "ea-icon-pen-tool", never, {}, {}, never, never, true, never>;
2889
3074
  }
2890
3075
 
2891
- /**
2892
- * @deprecated Will be removed in v2.0.0. The `pencil` icon depicts the same
2893
- * mark as Feather's canonical `edit-2` (with a marginally different cap
2894
- * curvature) and is being retired as redundant. Switch to `<ea-icon-edit-2>`
2895
- * / `Edit2IconComponent`.
2896
- */
2897
- declare class PencilIconComponent extends IconComponentBase {
2898
- static readonly slug = "pencil";
2899
- static readonly category: IconCategory;
2900
- static readonly tags: ReadonlyArray<string>;
2901
- static ɵfac: i0.ɵɵFactoryDeclaration<PencilIconComponent, never>;
2902
- static ɵcmp: i0.ɵɵComponentDeclaration<PencilIconComponent, "ea-icon-pencil", never, {}, {}, never, never, true, never>;
2903
- }
2904
-
2905
3076
  declare class PentagonIconComponent extends IconComponentBase {
2906
3077
  static readonly slug = "pentagon";
2907
3078
  static readonly category: IconCategory;
@@ -3112,6 +3283,14 @@ declare class RewindIconComponent extends IconComponentBase {
3112
3283
  static ɵcmp: i0.ɵɵComponentDeclaration<RewindIconComponent, "ea-icon-rewind", never, {}, {}, never, never, true, never>;
3113
3284
  }
3114
3285
 
3286
+ declare class RightHalfStarIconComponent extends IconComponentBase {
3287
+ static readonly slug = "right-half-star";
3288
+ static readonly category: IconCategory;
3289
+ static readonly tags: ReadonlyArray<string>;
3290
+ static ɵfac: i0.ɵɵFactoryDeclaration<RightHalfStarIconComponent, never>;
3291
+ static ɵcmp: i0.ɵɵComponentDeclaration<RightHalfStarIconComponent, "ea-icon-right-half-star", never, {}, {}, never, never, true, never>;
3292
+ }
3293
+
3115
3294
  declare class RotateCcwIconComponent extends IconComponentBase {
3116
3295
  static readonly slug = "rotate-ccw";
3117
3296
  static readonly category: IconCategory;
@@ -3936,8 +4115,9 @@ type InputType = 'text' | 'email' | 'password' | 'number' | 'search' | 'tel' | '
3936
4115
  * with Angular forms via `ControlValueAccessor`. Prefix and suffix content
3937
4116
  * can be projected via the `prefix` and `suffix` slots.
3938
4117
  */
3939
- declare class InputComponent implements ControlValueAccessor, AfterViewInit {
4118
+ declare class InputComponent implements ControlValueAccessor {
3940
4119
  readonly inputEl: i0.Signal<ElementRef<HTMLInputElement> | undefined>;
4120
+ private readonly injector;
3941
4121
  protected readonly i18n: EagamiI18nService;
3942
4122
  readonly label: i0.InputSignal<string | undefined>;
3943
4123
  readonly type: i0.InputSignal<InputType>;
@@ -3974,7 +4154,7 @@ declare class InputComponent implements ControlValueAccessor, AfterViewInit {
3974
4154
  'ea-input-wrapper--disabled': boolean;
3975
4155
  'ea-input-wrapper--readonly': boolean;
3976
4156
  }>;
3977
- ngAfterViewInit(): void;
4157
+ constructor();
3978
4158
  writeValue(val: string): void;
3979
4159
  registerOnChange(fn: (value: string) => void): void;
3980
4160
  registerOnTouched(fn: () => void): void;
@@ -3996,7 +4176,8 @@ type MenuPlacement = 'bottom-start' | 'bottom-end' | 'top-start' | 'top-end';
3996
4176
  * Popup action menu attached to any focusable element via the
3997
4177
  * `[eaMenuTrigger]` directive. Supports keyboard navigation
3998
4178
  * (arrow keys, Home/End), closes on outside click or Escape, and restores
3999
- * focus to the trigger on close.
4179
+ * focus to the trigger on close. Positioning, dismissal, and SSR-safe scroll
4180
+ * handling are provided by `<ea-popover>`.
4000
4181
  */
4001
4182
  declare class MenuComponent {
4002
4183
  private readonly injector;
@@ -4013,12 +4194,8 @@ declare class MenuComponent {
4013
4194
  readonly opened: i0.OutputEmitterRef<void>;
4014
4195
  /** Fires when the menu closes. */
4015
4196
  readonly closed: i0.OutputEmitterRef<void>;
4016
- private triggerEl;
4017
- private readonly triggerRect;
4018
- readonly listClasses: i0.Signal<{
4019
- [x: string]: boolean;
4020
- }>;
4021
- readonly listStyle: i0.Signal<Record<string, string>>;
4197
+ /** Trigger element currently anchoring the menu. Signal-typed so `<ea-popover>` reacts when it changes. */
4198
+ protected readonly triggerEl: i0.WritableSignal<HTMLElement | undefined>;
4022
4199
  /** Toggles the menu open state, anchoring it to the given trigger element. */
4023
4200
  toggleAt(triggerEl: HTMLElement): void;
4024
4201
  /** Opens the menu anchored to the given trigger element and focuses the first item. */
@@ -4029,12 +4206,22 @@ declare class MenuComponent {
4029
4206
  * not used on outside click, where the user has chosen a new focus target).
4030
4207
  */
4031
4208
  close(restoreFocus?: boolean): void;
4209
+ /** Called by `<ea-popover>` when the user clicks outside the menu. */
4210
+ onPopoverCloseRequested(): void;
4032
4211
  private getEnabledItems;
4212
+ /**
4213
+ * `preventScroll: true` is critical here. The menu list is `position: fixed`
4214
+ * but its DOM ancestor is whatever element hosts the menu (often a sticky
4215
+ * header). When `.focus()` is called without `preventScroll`, Chromium uses
4216
+ * the focused element's DOM-tree position (inside the sticky ancestor) rather
4217
+ * than its rendered fixed position to decide whether to scroll — which on a
4218
+ * scrolled page nudges the document up by a few pixels per open, until the
4219
+ * trigger reaches the top edge. The same guard applies to keyboard navigation
4220
+ * and restoring focus on close.
4221
+ */
4033
4222
  private focusFirstItem;
4034
4223
  onKeydown(event: KeyboardEvent): void;
4035
- onDocumentClick(event: Event): void;
4036
4224
  onEscape(): void;
4037
- onViewportChange(): void;
4038
4225
  static ɵfac: i0.ɵɵFactoryDeclaration<MenuComponent, never>;
4039
4226
  static ɵcmp: i0.ɵɵComponentDeclaration<MenuComponent, "ea-menu", never, { "placement": { "alias": "placement"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "aria-label"; "required": false; "isSignal": true; }; "id": { "alias": "id"; "required": false; "isSignal": true; }; "open": { "alias": "open"; "required": false; "isSignal": true; }; }, { "open": "openChange"; "opened": "opened"; "closed": "closed"; }, never, ["*"], true, never>;
4040
4227
  }
@@ -4071,6 +4258,116 @@ declare class MenuTriggerDirective {
4071
4258
  static ɵdir: i0.ɵɵDirectiveDeclaration<MenuTriggerDirective, "[eaMenuTrigger]", never, { "menu": { "alias": "eaMenuTrigger"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
4072
4259
  }
4073
4260
 
4261
+ /** Visual size of the multi-select trigger. */
4262
+ type MultiSelectSize = 'sm' | 'md' | 'lg';
4263
+ /**
4264
+ * Multi-select dropdown. Renders selections as removable `<ea-tag>` chips
4265
+ * inside the trigger, opens a popover containing an optional search input,
4266
+ * a tri-state "Select all" toggle, and a list of `<ea-checkbox>` options.
4267
+ * The wire value is a `readonly string[]` of selected option values, ordered
4268
+ * to match the input `options` array. Closes on outside click / scroll, and
4269
+ * integrates with Angular forms via `ControlValueAccessor`.
4270
+ */
4271
+ declare class MultiSelectComponent implements ControlValueAccessor {
4272
+ protected readonly triggerEl: i0.Signal<ElementRef<HTMLElement> | undefined>;
4273
+ protected readonly searchEl: i0.Signal<ElementRef<HTMLInputElement> | undefined>;
4274
+ protected readonly i18n: EagamiI18nService;
4275
+ private readonly injector;
4276
+ readonly label: i0.InputSignal<string | undefined>;
4277
+ readonly placeholder: i0.InputSignal<string | undefined>;
4278
+ readonly searchPlaceholder: i0.InputSignal<string | undefined>;
4279
+ readonly options: i0.InputSignal<readonly SelectOption[]>;
4280
+ readonly size: i0.InputSignal<MultiSelectSize>;
4281
+ readonly disabled: i0.InputSignal<boolean>;
4282
+ readonly readonly: i0.InputSignal<boolean>;
4283
+ readonly required: i0.InputSignal<boolean>;
4284
+ readonly hint: i0.InputSignal<string | undefined>;
4285
+ readonly errorMsg: i0.InputSignal<string | undefined>;
4286
+ /** Toggle the search input at the top of the popover. */
4287
+ readonly searchable: i0.InputSignal<boolean>;
4288
+ /** Toggle the "Select all" row at the top of the option list. */
4289
+ readonly selectAll: i0.InputSignal<boolean>;
4290
+ /** Max number of chips shown inside the trigger; the rest collapse into a "+N more" pill. `0` removes the cap. */
4291
+ readonly maxVisibleChips: i0.InputSignal<number>;
4292
+ readonly id: i0.InputSignal<string>;
4293
+ /** Selected option values, in the original options order. */
4294
+ readonly value: i0.ModelSignal<readonly string[]>;
4295
+ /** Fires with the new value whenever the selection changes. */
4296
+ readonly changed: i0.OutputEmitterRef<readonly string[]>;
4297
+ readonly isOpen: i0.WritableSignal<boolean>;
4298
+ readonly searchTerm: i0.WritableSignal<string>;
4299
+ /** Index into `filteredOptions()` for keyboard navigation. `-1` when none focused. */
4300
+ readonly focusedIndex: i0.WritableSignal<number>;
4301
+ private readonly _formDisabled;
4302
+ private onChange;
4303
+ private onTouched;
4304
+ readonly isDisabled: i0.Signal<boolean>;
4305
+ readonly hasError: i0.Signal<boolean>;
4306
+ readonly showError: i0.Signal<boolean>;
4307
+ readonly showHint: i0.Signal<boolean>;
4308
+ /** Set-backed lookup for `selectedSet().has(value)`. */
4309
+ readonly selectedSet: i0.Signal<Set<string>>;
4310
+ /** Options matching the current search term (case-insensitive substring on label). */
4311
+ readonly filteredOptions: i0.Signal<readonly SelectOption[]>;
4312
+ /** Currently selected options, ordered to match the input `options`. */
4313
+ readonly selectedOptions: i0.Signal<readonly SelectOption[]>;
4314
+ readonly hasValue: i0.Signal<boolean>;
4315
+ /** Chips visible inside the trigger, capped by `maxVisibleChips`. */
4316
+ readonly visibleChips: i0.Signal<readonly SelectOption[]>;
4317
+ /** Count behind the "+N more" pill, or `0` when all chips fit. */
4318
+ readonly hiddenChipCount: i0.Signal<number>;
4319
+ /** Tri-state of the Select-all checkbox over the **currently filtered** list. */
4320
+ readonly selectAllState: i0.Signal<"some" | "none" | "all">;
4321
+ readonly resolvedPlaceholder: i0.Signal<string>;
4322
+ readonly resolvedSearchPlaceholder: i0.Signal<string>;
4323
+ readonly triggerClasses: i0.Signal<{
4324
+ [x: string]: boolean;
4325
+ 'ea-multi-select__trigger--error': boolean;
4326
+ 'ea-multi-select__trigger--open': boolean;
4327
+ 'ea-multi-select__trigger--disabled': boolean;
4328
+ 'ea-multi-select__trigger--placeholder': boolean;
4329
+ }>;
4330
+ writeValue(val: readonly string[] | null | undefined): void;
4331
+ registerOnChange(fn: (value: readonly string[]) => void): void;
4332
+ registerOnTouched(fn: () => void): void;
4333
+ setDisabledState(isDisabled: boolean): void;
4334
+ toggle(): void;
4335
+ close(): void;
4336
+ /** Called by `<ea-popover>` when the user clicks outside or scrolls. */
4337
+ onPopoverCloseRequested(): void;
4338
+ /** Toggle one option's membership in the selection. */
4339
+ toggleOption(opt: SelectOption): void;
4340
+ /**
4341
+ * Remove a single chip from the trigger. `<ea-tag>` already stops the
4342
+ * click from bubbling to the trigger's `(click)`, so no event handling
4343
+ * is needed here.
4344
+ */
4345
+ removeChip(opt: SelectOption): void;
4346
+ /** Clear every selection via the trigger × button. */
4347
+ clear(event: Event): void;
4348
+ /**
4349
+ * Toggle the Select-all checkbox. If any filtered option is unselected, the
4350
+ * action selects all filtered. Otherwise, the action removes every filtered
4351
+ * value from the selection. Disabled options are skipped either way.
4352
+ */
4353
+ toggleSelectAll(): void;
4354
+ onSearchInput(event: Event): void;
4355
+ handleTriggerKeydown(event: KeyboardEvent): void;
4356
+ /**
4357
+ * Keyboard navigation inside the popover. Bound to both the search input
4358
+ * and each option row; Space passes through to the search input naturally
4359
+ * so users can type spaces in their query.
4360
+ */
4361
+ handlePopoverKeydown(event: KeyboardEvent): void;
4362
+ private focusSearchWhenReady;
4363
+ /** Reorder a value-set against the input `options` array. */
4364
+ private orderedValues;
4365
+ private resetEditState;
4366
+ private commit;
4367
+ static ɵfac: i0.ɵɵFactoryDeclaration<MultiSelectComponent, never>;
4368
+ static ɵcmp: i0.ɵɵComponentDeclaration<MultiSelectComponent, "ea-multi-select", never, { "label": { "alias": "label"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "searchPlaceholder": { "alias": "searchPlaceholder"; "required": false; "isSignal": true; }; "options": { "alias": "options"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "readonly": { "alias": "readonly"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "hint": { "alias": "hint"; "required": false; "isSignal": true; }; "errorMsg": { "alias": "errorMsg"; "required": false; "isSignal": true; }; "searchable": { "alias": "searchable"; "required": false; "isSignal": true; }; "selectAll": { "alias": "selectAll"; "required": false; "isSignal": true; }; "maxVisibleChips": { "alias": "maxVisibleChips"; "required": false; "isSignal": true; }; "id": { "alias": "id"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "changed": "changed"; }, never, never, true, never>;
4369
+ }
4370
+
4074
4371
  /** Horizontal alignment of paginator controls within their container. */
4075
4372
  type PaginatorAlign = 'left' | 'center' | 'right';
4076
4373
  /** Snapshot of the paginator's page and page size. */
@@ -4113,6 +4410,141 @@ declare class PaginatorComponent {
4113
4410
  static ɵcmp: i0.ɵɵComponentDeclaration<PaginatorComponent, "ea-paginator", never, { "totalItems": { "alias": "totalItems"; "required": true; "isSignal": true; }; "pageSizeOptions": { "alias": "pageSizeOptions"; "required": false; "isSignal": true; }; "showPageSizeSelector": { "alias": "showPageSizeSelector"; "required": false; "isSignal": true; }; "showRangeLabel": { "alias": "showRangeLabel"; "required": false; "isSignal": true; }; "align": { "alias": "align"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "page": { "alias": "page"; "required": false; "isSignal": true; }; "pageSize": { "alias": "pageSize"; "required": false; "isSignal": true; }; }, { "page": "pageChange"; "pageSize": "pageSizeChange"; "changed": "changed"; }, never, never, true, never>;
4114
4411
  }
4115
4412
 
4413
+ /**
4414
+ * Placement of the popover relative to its anchor. Each placement names the
4415
+ * side of the anchor the popover attaches to, optionally followed by a corner
4416
+ * suffix (`-start` or `-end`) that decides the alignment along the perpendicular
4417
+ * axis. The plain side names (`top`, `bottom`, `left`, `right`) centre the
4418
+ * popover on that axis.
4419
+ */
4420
+ type PopoverPlacement = 'top' | 'top-start' | 'top-end' | 'bottom' | 'bottom-start' | 'bottom-end' | 'left' | 'right';
4421
+ interface PopoverPositionResult {
4422
+ /** Top coordinate in viewport (px); pairs with `position: fixed`. */
4423
+ readonly top: number;
4424
+ /** Left coordinate in viewport (px). */
4425
+ readonly left: number;
4426
+ /** Width hint when the popover should match the anchor's width. */
4427
+ readonly width?: number;
4428
+ /** Effective placement after any flip logic ran. */
4429
+ readonly placement: PopoverPlacement;
4430
+ }
4431
+ interface PopoverPositionOptions {
4432
+ readonly placement: PopoverPlacement;
4433
+ /** Gap in px between the anchor and the popover. Default 4. */
4434
+ readonly offset?: number;
4435
+ /** Flip to the opposite side when the requested side overflows the viewport. Default true. */
4436
+ readonly flip?: boolean;
4437
+ /** Clamp inside the viewport when the popover still overflows after any flip. Default true. */
4438
+ readonly clamp?: boolean;
4439
+ /** Margin from the viewport edge in px when clamping. Default 8. */
4440
+ readonly margin?: number;
4441
+ /** Set the popover's width to match the anchor's. Useful for dropdown-style menus. */
4442
+ readonly matchAnchorWidth?: boolean;
4443
+ }
4444
+ interface Rect {
4445
+ readonly width: number;
4446
+ readonly height: number;
4447
+ }
4448
+ interface AnchorRect extends Rect {
4449
+ readonly top: number;
4450
+ readonly bottom: number;
4451
+ readonly left: number;
4452
+ readonly right: number;
4453
+ }
4454
+ interface Viewport {
4455
+ readonly width: number;
4456
+ readonly height: number;
4457
+ }
4458
+ /**
4459
+ * Computes the viewport-space top/left for a popover anchored to `anchorRect`,
4460
+ * applying optional flip-on-overflow and edge-clamp logic. Pure function — no
4461
+ * DOM access. Both `<ea-popover>` and `[eaTooltip]` consume this.
4462
+ *
4463
+ * @param anchorRect The anchor element's `getBoundingClientRect()`.
4464
+ * @param popoverRect Width and height of the popover (post-render measurement).
4465
+ * @param viewport Viewport dimensions (`window.innerWidth/Height`).
4466
+ * @param options Placement and behavior flags.
4467
+ */
4468
+ declare function computePopoverPosition(anchorRect: AnchorRect, popoverRect: Rect, viewport: Viewport, options: PopoverPositionOptions): PopoverPositionResult;
4469
+
4470
+ /** ARIA role to apply to the popover surface. */
4471
+ type PopoverRole = 'menu' | 'listbox' | 'dialog' | 'tooltip' | 'grid';
4472
+ /**
4473
+ * How the popover should respond to scroll / resize events while open.
4474
+ *
4475
+ * - `reposition` (default): re-measure the anchor and update the popover's
4476
+ * coordinates so it stays attached. Suitable for menus and tooltips.
4477
+ * - `close`: request close. Suitable for dropdown lists and the colour-picker
4478
+ * popover, where re-tracking a tall popover during a scroll feels intrusive.
4479
+ * - `ignore`: do nothing. The popover stays at its initial coordinates and
4480
+ * may visually detach from a scrolling anchor — useful when the anchor is
4481
+ * guaranteed not to move (e.g. inside a non-scrolling region).
4482
+ */
4483
+ type PopoverScrollBehavior = 'reposition' | 'close' | 'ignore';
4484
+ /**
4485
+ * Floating-element primitive. Renders projected content as `position: fixed`
4486
+ * anchored to an external element, with flip-on-overflow, viewport clamping,
4487
+ * outside-click and Escape dismissal, and SSR-safe scroll / resize handling.
4488
+ *
4489
+ * The primitive is intentionally low-level: a parent component drives the
4490
+ * `[open]` state and listens for `(closeRequested)` to mirror it back. Internal
4491
+ * library components (`<ea-menu>`, `<ea-dropdown>`, `<ea-color-picker>`,
4492
+ * `<ea-date-picker>`, `[eaTooltip]`) compose on top of it; downstream apps can
4493
+ * use it directly to build their own popover-based UI.
4494
+ *
4495
+ * @example
4496
+ * ```html
4497
+ * <button #trigger (click)="open.set(!open())">Open</button>
4498
+ * <ea-popover [anchor]="trigger" [open]="open()" (closeRequested)="open.set(false)">
4499
+ * <div>Popover content</div>
4500
+ * </ea-popover>
4501
+ * ```
4502
+ */
4503
+ declare class PopoverComponent {
4504
+ private readonly destroyRef;
4505
+ private readonly surfaceEl;
4506
+ /** Anchor element the popover positions itself against. */
4507
+ readonly anchor: i0.InputSignal<HTMLElement | ElementRef<HTMLElement> | undefined>;
4508
+ /** Whether the popover is currently open. */
4509
+ readonly open: i0.InputSignal<boolean>;
4510
+ /** Where the popover attaches relative to the anchor. */
4511
+ readonly placement: i0.InputSignal<PopoverPlacement>;
4512
+ /** ARIA role applied to the popover surface. */
4513
+ readonly role: i0.InputSignal<PopoverRole>;
4514
+ /** Accessible label. Falls back to nothing; consumers should provide one when no visible heading is in the popover. */
4515
+ readonly ariaLabel: i0.InputSignal<string | undefined>;
4516
+ /** DOM id for the surface so trigger elements can reference it via aria-controls. */
4517
+ readonly surfaceId: i0.InputSignal<string>;
4518
+ /** Gap in px between the anchor and the popover. */
4519
+ readonly offset: i0.InputSignal<number>;
4520
+ /** Flip to the opposite side when the requested side overflows the viewport. */
4521
+ readonly flip: i0.InputSignal<boolean>;
4522
+ /** Clamp the popover inside the viewport when it would otherwise overflow. */
4523
+ readonly clamp: i0.InputSignal<boolean>;
4524
+ /** Set the popover's `min-width` to match the anchor's width (dropdown pattern). */
4525
+ readonly matchAnchorWidth: i0.InputSignal<boolean>;
4526
+ /** Close on click outside the popover and the anchor. */
4527
+ readonly closeOnOutsideClick: i0.InputSignal<boolean>;
4528
+ /** Close on Escape. */
4529
+ readonly closeOnEscape: i0.InputSignal<boolean>;
4530
+ /** What to do on scroll / resize while open. */
4531
+ readonly scrollBehavior: i0.InputSignal<PopoverScrollBehavior>;
4532
+ /** Requested close. The parent should mirror this into `[open]`. */
4533
+ readonly closeRequested: i0.OutputEmitterRef<void>;
4534
+ private readonly position;
4535
+ /** True placement after flip, for class-based styling (e.g. arrow direction). */
4536
+ readonly effectivePlacement: i0.Signal<PopoverPlacement>;
4537
+ /** Inline style applied to the surface element. */
4538
+ readonly surfaceStyle: i0.Signal<Record<string, string>>;
4539
+ constructor();
4540
+ private resolveAnchor;
4541
+ private reposition;
4542
+ onDocumentClick(event: MouseEvent): void;
4543
+ onEscape(): void;
4544
+ static ɵfac: i0.ɵɵFactoryDeclaration<PopoverComponent, never>;
4545
+ static ɵcmp: i0.ɵɵComponentDeclaration<PopoverComponent, "ea-popover", never, { "anchor": { "alias": "anchor"; "required": true; "isSignal": true; }; "open": { "alias": "open"; "required": false; "isSignal": true; }; "placement": { "alias": "placement"; "required": false; "isSignal": true; }; "role": { "alias": "role"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "aria-label"; "required": false; "isSignal": true; }; "surfaceId": { "alias": "surfaceId"; "required": false; "isSignal": true; }; "offset": { "alias": "offset"; "required": false; "isSignal": true; }; "flip": { "alias": "flip"; "required": false; "isSignal": true; }; "clamp": { "alias": "clamp"; "required": false; "isSignal": true; }; "matchAnchorWidth": { "alias": "matchAnchorWidth"; "required": false; "isSignal": true; }; "closeOnOutsideClick": { "alias": "closeOnOutsideClick"; "required": false; "isSignal": true; }; "closeOnEscape": { "alias": "closeOnEscape"; "required": false; "isSignal": true; }; "scrollBehavior": { "alias": "scrollBehavior"; "required": false; "isSignal": true; }; }, { "closeRequested": "closeRequested"; }, never, ["*"], true, never>;
4546
+ }
4547
+
4116
4548
  /** Semantic colour scheme of the progress bar. */
4117
4549
  type ProgressBarVariant = 'default' | 'success' | 'warning' | 'error' | 'info';
4118
4550
  /** Visual height of the progress bar. */
@@ -4206,6 +4638,81 @@ declare class RadioComponent {
4206
4638
  static ɵcmp: i0.ɵɵComponentDeclaration<RadioComponent, "ea-radio", never, { "value": { "alias": "value"; "required": true; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "id": { "alias": "id"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
4207
4639
  }
4208
4640
 
4641
+ /** Visual size of the range slider track and thumbs. */
4642
+ type RangeSliderSize = 'sm' | 'md' | 'lg';
4643
+ /** Tuple model emitted by the range slider — `[low, high]`, with `low <= high`. */
4644
+ type RangeSliderValue = readonly [number, number];
4645
+ /** Identifies which of the two thumbs an event affects. */
4646
+ type Thumb = 'low' | 'high';
4647
+ /**
4648
+ * Two-thumb extension of `<ea-slider>`. Drives a `[low, high]` numeric range
4649
+ * with pointer drag (the closer thumb to the pointer responds) and full
4650
+ * keyboard navigation per thumb (arrows / PageUp / PageDown / Home / End).
4651
+ * Tab moves between thumbs. Configurable `min`, `max`, `step`, optional value
4652
+ * display, and integrates with Angular forms via `ControlValueAccessor`.
4653
+ *
4654
+ * Overlap rule: a thumb cannot cross past the other; once it reaches the
4655
+ * opposite thumb's position, it clamps to that boundary. Drag-induced
4656
+ * overlap (where the user yanks the low thumb past the high) is resolved by
4657
+ * keeping the moving thumb on its side and the other thumb pinned.
4658
+ */
4659
+ declare class RangeSliderComponent implements ControlValueAccessor {
4660
+ readonly trackEl: i0.Signal<ElementRef<HTMLDivElement> | undefined>;
4661
+ readonly label: i0.InputSignal<string | undefined>;
4662
+ readonly hint: i0.InputSignal<string | undefined>;
4663
+ readonly errorMsg: i0.InputSignal<string | undefined>;
4664
+ readonly min: i0.InputSignal<number>;
4665
+ readonly max: i0.InputSignal<number>;
4666
+ readonly step: i0.InputSignal<number>;
4667
+ readonly size: i0.InputSignal<RangeSliderSize>;
4668
+ readonly disabled: i0.InputSignal<boolean>;
4669
+ readonly required: i0.InputSignal<boolean>;
4670
+ readonly showValue: i0.InputSignal<boolean>;
4671
+ readonly showMinMaxLabels: i0.InputSignal<boolean>;
4672
+ readonly formatValue: i0.InputSignal<(value: number) => string>;
4673
+ /** Accessible label for the low (start) thumb. Falls back to the field label when omitted. */
4674
+ readonly ariaLabelLow: i0.InputSignal<string | undefined>;
4675
+ /** Accessible label for the high (end) thumb. Falls back to the field label when omitted. */
4676
+ readonly ariaLabelHigh: i0.InputSignal<string | undefined>;
4677
+ readonly id: i0.InputSignal<string>;
4678
+ readonly value: i0.ModelSignal<RangeSliderValue>;
4679
+ /** Fires with the new `[low, high]` tuple whenever either thumb moves. */
4680
+ readonly changed: i0.OutputEmitterRef<RangeSliderValue>;
4681
+ private readonly _formDisabled;
4682
+ readonly dragging: i0.WritableSignal<Thumb | null>;
4683
+ private onChange;
4684
+ private onTouched;
4685
+ readonly isDisabled: i0.Signal<boolean>;
4686
+ /** Clamped, ordered `[low, high]` tuple — `low <= high`, both within `[min, max]`. */
4687
+ readonly clampedValue: i0.Signal<RangeSliderValue>;
4688
+ readonly lowPercent: i0.Signal<number>;
4689
+ readonly highPercent: i0.Signal<number>;
4690
+ readonly hasError: i0.Signal<boolean>;
4691
+ readonly showError: i0.Signal<boolean>;
4692
+ readonly showHint: i0.Signal<boolean>;
4693
+ readonly hostClasses: i0.Signal<{
4694
+ [x: string]: boolean;
4695
+ 'ea-range-slider--error': boolean;
4696
+ 'ea-range-slider--disabled': boolean;
4697
+ 'ea-range-slider--dragging': boolean;
4698
+ }>;
4699
+ writeValue(val: RangeSliderValue | null | undefined): void;
4700
+ registerOnChange(fn: (value: RangeSliderValue) => void): void;
4701
+ registerOnTouched(fn: () => void): void;
4702
+ setDisabledState(isDisabled: boolean): void;
4703
+ handleKeydown(event: KeyboardEvent, thumb: Thumb): void;
4704
+ handleBlur(): void;
4705
+ handleTrackPointerDown(event: PointerEvent): void;
4706
+ handleTrackPointerMove(event: PointerEvent): void;
4707
+ handleTrackPointerUp(event: PointerEvent): void;
4708
+ private toPercent;
4709
+ private pointerToValue;
4710
+ /** Snap to step, clamp to `[min, max]`, then constrain by the opposite thumb. */
4711
+ private commitThumb;
4712
+ static ɵfac: i0.ɵɵFactoryDeclaration<RangeSliderComponent, never>;
4713
+ static ɵcmp: i0.ɵɵComponentDeclaration<RangeSliderComponent, "ea-range-slider", never, { "label": { "alias": "label"; "required": false; "isSignal": true; }; "hint": { "alias": "hint"; "required": false; "isSignal": true; }; "errorMsg": { "alias": "errorMsg"; "required": false; "isSignal": true; }; "min": { "alias": "min"; "required": false; "isSignal": true; }; "max": { "alias": "max"; "required": false; "isSignal": true; }; "step": { "alias": "step"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "showValue": { "alias": "showValue"; "required": false; "isSignal": true; }; "showMinMaxLabels": { "alias": "showMinMaxLabels"; "required": false; "isSignal": true; }; "formatValue": { "alias": "formatValue"; "required": false; "isSignal": true; }; "ariaLabelLow": { "alias": "aria-label-low"; "required": false; "isSignal": true; }; "ariaLabelHigh": { "alias": "aria-label-high"; "required": false; "isSignal": true; }; "id": { "alias": "id"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "changed": "changed"; }, never, never, true, never>;
4714
+ }
4715
+
4209
4716
  /** Visual size of the segmented control. */
4210
4717
  type SegmentedSize = 'sm' | 'md' | 'lg';
4211
4718
  /**
@@ -4355,6 +4862,71 @@ declare class SpinnerComponent {
4355
4862
  static ɵcmp: i0.ɵɵComponentDeclaration<SpinnerComponent, "ea-spinner", never, { "size": { "alias": "size"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
4356
4863
  }
4357
4864
 
4865
+ /**
4866
+ * Single step within an `<ea-stepper>`. Registers itself with the parent on
4867
+ * init, exposes its `label` / `completed` / `optional` flags, and shows its
4868
+ * projected content when active.
4869
+ */
4870
+ declare class StepComponent implements OnInit, OnDestroy {
4871
+ private readonly stepper;
4872
+ readonly label: i0.InputSignal<string>;
4873
+ readonly completed: i0.InputSignal<boolean>;
4874
+ readonly disabled: i0.InputSignal<boolean>;
4875
+ readonly optional: i0.InputSignal<boolean>;
4876
+ readonly id: i0.InputSignal<string>;
4877
+ readonly isActive: i0.Signal<boolean>;
4878
+ ngOnInit(): void;
4879
+ ngOnDestroy(): void;
4880
+ static ɵfac: i0.ɵɵFactoryDeclaration<StepComponent, never>;
4881
+ static ɵcmp: i0.ɵɵComponentDeclaration<StepComponent, "ea-step", never, { "label": { "alias": "label"; "required": true; "isSignal": true; }; "completed": { "alias": "completed"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "optional": { "alias": "optional"; "required": false; "isSignal": true; }; "id": { "alias": "id"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
4882
+ }
4883
+
4884
+ /** Visual size of the stepper. */
4885
+ type StepperSize = 'sm' | 'md' | 'lg';
4886
+ /**
4887
+ * Multi-step navigation paired with content panels. Child `<ea-step>`
4888
+ * components register themselves automatically and the active panel is
4889
+ * shown based on the `activeStep` (zero-based index) two-way binding.
4890
+ *
4891
+ * In `linear` mode, steps cannot be navigated to until all earlier
4892
+ * non-optional steps are marked `completed`. Otherwise any step can be
4893
+ * clicked. ArrowLeft / ArrowRight walk through reachable steps; Home/End
4894
+ * jump to the extremes.
4895
+ */
4896
+ declare class StepperComponent {
4897
+ protected readonly i18n: EagamiI18nService;
4898
+ readonly registeredSteps: i0.WritableSignal<StepComponent[]>;
4899
+ readonly activeStep: i0.ModelSignal<number>;
4900
+ readonly linear: i0.InputSignal<boolean>;
4901
+ readonly size: i0.InputSignal<StepperSize>;
4902
+ readonly disabled: i0.InputSignal<boolean>;
4903
+ readonly id: i0.InputSignal<string>;
4904
+ /** Fires with the new active step index when the user navigates. */
4905
+ readonly changed: i0.OutputEmitterRef<number>;
4906
+ readonly hostClasses: i0.Signal<{
4907
+ [x: string]: boolean;
4908
+ 'ea-stepper--disabled': boolean;
4909
+ }>;
4910
+ registerStep(step: StepComponent): void;
4911
+ unregisterStep(step: StepComponent): void;
4912
+ /** Returns the index of a given step, or `-1` if it isn't registered. */
4913
+ indexOf(step: StepComponent): number;
4914
+ /**
4915
+ * True when the user can navigate directly to the step at `index`. In
4916
+ * non-linear mode this is true for any non-disabled step; in linear mode,
4917
+ * every non-optional earlier step must also be marked `completed`.
4918
+ */
4919
+ canNavigateTo(index: number): boolean;
4920
+ /** Activate the step at `index` if reachable. */
4921
+ selectStep(index: number): void;
4922
+ handleKeydown(event: KeyboardEvent): void;
4923
+ private nextReachable;
4924
+ private firstReachable;
4925
+ private lastReachable;
4926
+ static ɵfac: i0.ɵɵFactoryDeclaration<StepperComponent, never>;
4927
+ static ɵcmp: i0.ɵɵComponentDeclaration<StepperComponent, "ea-stepper", never, { "activeStep": { "alias": "activeStep"; "required": false; "isSignal": true; }; "linear": { "alias": "linear"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "id": { "alias": "id"; "required": false; "isSignal": true; }; }, { "activeStep": "activeStepChange"; "changed": "changed"; }, never, ["*"], true, never>;
4928
+ }
4929
+
4358
4930
  /** Visual size of the switch. */
4359
4931
  type SwitchSize = 'sm' | 'md' | 'lg';
4360
4932
  /**
@@ -4528,6 +5100,165 @@ declare class TextareaComponent implements ControlValueAccessor {
4528
5100
  static ɵcmp: i0.ɵɵComponentDeclaration<TextareaComponent, "ea-textarea", never, { "label": { "alias": "label"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "hint": { "alias": "hint"; "required": false; "isSignal": true; }; "errorMsg": { "alias": "errorMsg"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "readonly": { "alias": "readonly"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "rows": { "alias": "rows"; "required": false; "isSignal": true; }; "resize": { "alias": "resize"; "required": false; "isSignal": true; }; "maxlength": { "alias": "maxlength"; "required": false; "isSignal": true; }; "id": { "alias": "id"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "focused": "focused"; "blurred": "blurred"; }, never, never, true, never>;
4529
5101
  }
4530
5102
 
5103
+ /** Visual size of the time picker trigger. */
5104
+ type TimePickerSize = 'sm' | 'md' | 'lg';
5105
+ /** Display format for the trigger label. The wire value is always 24h. */
5106
+ type TimePickerFormat = '12h' | '24h';
5107
+ /** Internal identifier for the three unit columns. */
5108
+ type Unit = 'hours' | 'minutes' | 'seconds';
5109
+ interface ParsedTime {
5110
+ readonly hours: number;
5111
+ readonly minutes: number;
5112
+ readonly seconds: number;
5113
+ }
5114
+ /**
5115
+ * Pops a stepper UI for selecting an `HH:MM[:SS]` time. The wire value is
5116
+ * always a 24-hour string (`"14:30"` or `"14:30:00"`); the `format` input
5117
+ * toggles the trigger's display between 12-hour and 24-hour styles. Supports
5118
+ * configurable steps for minutes and seconds, optional seconds column, and
5119
+ * integrates with Angular forms via `ControlValueAccessor`.
5120
+ *
5121
+ * Keyboard: Tab moves between the hour, minute, (seconds), and AM/PM columns.
5122
+ * Each spinner accepts ArrowUp/ArrowDown to step by 1 (or by the configured
5123
+ * step), PageUp/PageDown for a coarser bump, and digit keys to type a value
5124
+ * directly. After typing two digits (or one digit that already maxes the
5125
+ * unit), focus auto-advances to the next column. Backspace clears the typed
5126
+ * buffer; Escape closes the popover.
5127
+ */
5128
+ declare class TimePickerComponent implements ControlValueAccessor {
5129
+ protected readonly triggerEl: i0.Signal<ElementRef<HTMLButtonElement> | undefined>;
5130
+ protected readonly hoursEl: i0.Signal<ElementRef<HTMLInputElement> | undefined>;
5131
+ protected readonly minutesEl: i0.Signal<ElementRef<HTMLInputElement> | undefined>;
5132
+ protected readonly secondsEl: i0.Signal<ElementRef<HTMLInputElement> | undefined>;
5133
+ protected readonly i18n: EagamiI18nService;
5134
+ private readonly destroyRef;
5135
+ private readonly injector;
5136
+ readonly label: i0.InputSignal<string | undefined>;
5137
+ readonly placeholder: i0.InputSignal<string | undefined>;
5138
+ readonly size: i0.InputSignal<TimePickerSize>;
5139
+ readonly disabled: i0.InputSignal<boolean>;
5140
+ readonly readonly: i0.InputSignal<boolean>;
5141
+ readonly required: i0.InputSignal<boolean>;
5142
+ readonly hint: i0.InputSignal<string | undefined>;
5143
+ readonly errorMsg: i0.InputSignal<string | undefined>;
5144
+ /** Display format for the trigger label. Wire value is always 24h. */
5145
+ readonly format: i0.InputSignal<TimePickerFormat>;
5146
+ readonly includeSeconds: i0.InputSignal<boolean>;
5147
+ readonly minuteStep: i0.InputSignal<number>;
5148
+ readonly secondStep: i0.InputSignal<number>;
5149
+ readonly id: i0.InputSignal<string>;
5150
+ /** `"HH:MM"` or `"HH:MM:SS"` in 24-hour notation, or `null` when unset. */
5151
+ readonly value: i0.ModelSignal<string | null>;
5152
+ /** Fires with the new value whenever the user changes the time. */
5153
+ readonly changed: i0.OutputEmitterRef<string | null>;
5154
+ readonly isOpen: i0.WritableSignal<boolean>;
5155
+ /** Typed-digit buffer for the currently focused column, or `null` when idle. */
5156
+ readonly editBuffer: i0.WritableSignal<{
5157
+ unit: Unit;
5158
+ digits: string;
5159
+ } | null>;
5160
+ private readonly _formDisabled;
5161
+ private onChange;
5162
+ private onTouched;
5163
+ /** Long-press timers for the chevron buttons. Cleared on release/destroy. */
5164
+ private holdDelayTimer;
5165
+ private holdIntervalTimer;
5166
+ private holdStartedAt;
5167
+ readonly isDisabled: i0.Signal<boolean>;
5168
+ readonly hasError: i0.Signal<boolean>;
5169
+ readonly showError: i0.Signal<boolean>;
5170
+ readonly showHint: i0.Signal<boolean>;
5171
+ /** Parsed `[hh, mm, ss]` from the current value, defaulting to midnight. */
5172
+ readonly parsed: i0.Signal<ParsedTime>;
5173
+ /** True when the picker has a non-null value. Drives the clear button + placeholder fallback. */
5174
+ readonly hasValue: i0.Signal<boolean>;
5175
+ /** Hours digit displayed in the popover stepper. Honors the `format` input. */
5176
+ readonly displayHours: i0.Signal<number>;
5177
+ /**
5178
+ * Text shown in a column's value cell. Reflects the typed-digit buffer when
5179
+ * the user is mid-edit on that column; otherwise renders the committed
5180
+ * value. Hours pad to two digits in 24h mode only (so 9 AM still reads as
5181
+ * "9", but 09:00 in 24h reads as "09").
5182
+ */
5183
+ hoursText: i0.Signal<string>;
5184
+ minutesText: i0.Signal<string>;
5185
+ secondsText: i0.Signal<string>;
5186
+ /** `'AM' | 'PM'` for 12h mode; `null` in 24h. */
5187
+ readonly period: i0.Signal<"AM" | "PM" | null>;
5188
+ /** Localized text shown on the trigger. Falls back to placeholder when no value. */
5189
+ readonly displayValue: i0.Signal<string | null>;
5190
+ readonly resolvedPlaceholder: i0.Signal<string>;
5191
+ readonly triggerClasses: i0.Signal<{
5192
+ [x: string]: boolean;
5193
+ 'ea-time-picker__trigger--error': boolean;
5194
+ 'ea-time-picker__trigger--open': boolean;
5195
+ 'ea-time-picker__trigger--disabled': boolean;
5196
+ 'ea-time-picker__trigger--placeholder': boolean;
5197
+ }>;
5198
+ writeValue(val: string | null | undefined): void;
5199
+ registerOnChange(fn: (value: string | null) => void): void;
5200
+ registerOnTouched(fn: () => void): void;
5201
+ setDisabledState(isDisabled: boolean): void;
5202
+ constructor();
5203
+ toggle(): void;
5204
+ /**
5205
+ * Push focus into the hours input once the popover surface has been
5206
+ * rendered. `afterNextRender` guarantees the DOM has been updated (and the
5207
+ * surface is no longer `display: none`) before we call `.focus()`.
5208
+ */
5209
+ private focusHoursWhenReady;
5210
+ close(): void;
5211
+ /** Called by `<ea-popover>` when the user clicks outside or scrolls. */
5212
+ onPopoverCloseRequested(): void;
5213
+ clear(event: Event): void;
5214
+ handleTriggerKeydown(event: KeyboardEvent): void;
5215
+ /** Stepper button or keyboard arrow nudges one column up or down. */
5216
+ step(unit: Unit, direction: 1 | -1): void;
5217
+ /**
5218
+ * Begin a long-press repeat on a chevron button. Fires once immediately,
5219
+ * then after a `HOLD_INITIAL_DELAY` pause repeats at `HOLD_INTERVAL_MS`,
5220
+ * accelerating to `HOLD_FAST_INTERVAL_MS` after `HOLD_ACCELERATE_AFTER_MS`
5221
+ * of continuous holding. Pointer up / leave / cancel stops the repeat.
5222
+ */
5223
+ startHold(unit: Unit, direction: 1 | -1, event: Event): void;
5224
+ /** End any in-flight long-press repeat. Idempotent. */
5225
+ stopHold(): void;
5226
+ /** Switches the AM/PM period in 12h mode by toggling the 12-hour offset. */
5227
+ togglePeriod(): void;
5228
+ handlePopoverKeydown(event: KeyboardEvent, unit: Unit): void;
5229
+ /** Select-all on focus so the first keystroke replaces the current value. */
5230
+ onSpinnerFocus(event: FocusEvent): void;
5231
+ /**
5232
+ * Native `(input)` event: the typed value is already in `el.value`. Strip
5233
+ * non-digits, update the buffer (which drives the displayed text), and
5234
+ * commit + auto-advance once the column is full or a third digit would
5235
+ * overflow.
5236
+ */
5237
+ onSpinnerInput(unit: Unit, event: Event): void;
5238
+ /** Commits the current buffer if any. Wired to each input's `(blur)`. */
5239
+ onSpinnerBlur(): void;
5240
+ /** True when no digit `0`–`9` can validly extend the current buffer. */
5241
+ private cannotExtend;
5242
+ /** Commits any pending buffer. Called on blur, on arrow keys, on Tab. */
5243
+ private flushBuffer;
5244
+ /** Writes the buffered digits into the value and clears the buffer. */
5245
+ private commitDigits;
5246
+ /**
5247
+ * Map a typed hours value back to 24h. In 24h mode the typed value is the
5248
+ * hour. In 12h mode the typed value is interpreted in the current period
5249
+ * (AM → 12 maps to 0, others stay; PM → 12 stays, others add 12).
5250
+ */
5251
+ private hoursFromTyped;
5252
+ private minFor;
5253
+ private maxFor;
5254
+ /** Move focus to the next unit column, looping back to hours at the end. */
5255
+ private advanceFocus;
5256
+ private nextUnit;
5257
+ private commit;
5258
+ static ɵfac: i0.ɵɵFactoryDeclaration<TimePickerComponent, never>;
5259
+ static ɵcmp: i0.ɵɵComponentDeclaration<TimePickerComponent, "ea-time-picker", never, { "label": { "alias": "label"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "readonly": { "alias": "readonly"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "hint": { "alias": "hint"; "required": false; "isSignal": true; }; "errorMsg": { "alias": "errorMsg"; "required": false; "isSignal": true; }; "format": { "alias": "format"; "required": false; "isSignal": true; }; "includeSeconds": { "alias": "includeSeconds"; "required": false; "isSignal": true; }; "minuteStep": { "alias": "minuteStep"; "required": false; "isSignal": true; }; "secondStep": { "alias": "secondStep"; "required": false; "isSignal": true; }; "id": { "alias": "id"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "changed": "changed"; }, never, never, true, never>;
5260
+ }
5261
+
4531
5262
  /** Semantic colour scheme of a toast. */
4532
5263
  type ToastVariant = 'default' | 'success' | 'warning' | 'error' | 'info';
4533
5264
  /** A single live toast notification rendered by `ea-toast`. */
@@ -4621,5 +5352,5 @@ declare class TooltipDirective implements OnDestroy {
4621
5352
  static ɵdir: i0.ɵɵDirectiveDeclaration<TooltipDirective, "[eaTooltip]", never, { "eaTooltip": { "alias": "eaTooltip"; "required": true; "isSignal": true; }; "tooltipPosition": { "alias": "tooltipPosition"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
4622
5353
  }
4623
5354
 
4624
- export { AccordionComponent, AccordionItemComponent, ActivityIconComponent, AirplayIconComponent, AlertCircleIconComponent, AlertComponent, AlertOctagonIconComponent, AlertTriangleIconComponent, AlignCenterIconComponent, AlignJustifyIconComponent, AlignLeftIconComponent, AlignRightIconComponent, AnchorIconComponent, ApertureIconComponent, AppleIconComponent, ArchiveIconComponent, ArrowDownCircleIconComponent, ArrowDownIconComponent, ArrowDownLeftIconComponent, ArrowDownRightIconComponent, ArrowLeftCircleIconComponent, ArrowLeftIconComponent, ArrowRightCircleIconComponent, ArrowRightIconComponent, ArrowUpCircleIconComponent, ArrowUpIconComponent, ArrowUpLeftIconComponent, ArrowUpRightIconComponent, AtSignIconComponent, AutocompleteComponent, AvatarComponent, AvatarEditorComponent, AwardIconComponent, BadgeComponent, BarChart2IconComponent, BarChartIconComponent, BatteryChargingIconComponent, BatteryIconComponent, BellIconComponent, BellOffIconComponent, BluetoothIconComponent, BoldIconComponent, BookIconComponent, BookOpenIconComponent, BookmarkIconComponent, BottleIconComponent, BoxIconComponent, BreadcrumbsComponent, BriefcaseIconComponent, ButtonComponent, CalendarIconComponent, CameraIconComponent, CameraOffIconComponent, CandleIconComponent, CardComponent, CastIconComponent, CheckCircleIconComponent, CheckIconComponent, CheckSquareIconComponent, CheckboxComponent, ChevronDownIconComponent, ChevronLeftIconComponent, ChevronRightIconComponent, ChevronUpIconComponent, ChevronsDownIconComponent, ChevronsLeftIconComponent, ChevronsRightIconComponent, ChevronsUpDownIconComponent, ChevronsUpIconComponent, ChromeIconComponent, CircleIconComponent, ClipboardIconComponent, ClockIconComponent, CloudDrizzleIconComponent, CloudIconComponent, CloudLightningIconComponent, CloudOffIconComponent, CloudRainIconComponent, CloudSnowIconComponent, CloudflareIconComponent, CodeIconComponent, CodeInputComponent, CodepenIconComponent, CodesandboxIconComponent, CoffeeIconComponent, ColumnsIconComponent, CommandIconComponent, CompassIconComponent, CopyIconComponent, CornerDownLeftIconComponent, CornerDownRightIconComponent, CornerLeftDownIconComponent, CornerLeftUpIconComponent, CornerRightDownIconComponent, CornerRightUpIconComponent, CornerUpLeftIconComponent, CornerUpRightIconComponent, CpuIconComponent, CreditCardIconComponent, CropIconComponent, CrosshairIconComponent, DataTableComponent, DatabaseIconComponent, DatePickerComponent, DeleteIconComponent, DialogComponent, DiscIconComponent, DiscordIconComponent, DivideCircleIconComponent, DivideIconComponent, DivideSquareIconComponent, DividerComponent, DockerIconComponent, DollarSignIconComponent, DownloadCloudIconComponent, DownloadIconComponent, DrawerComponent, DribbbleIconComponent, DropboxIconComponent, DropdownComponent, DropletIconComponent, EAGAMI_I18N_CONFIG, EAGAMI_LOCALES, EAGAMI_MESSAGES, EagamiI18nService, EagamiIconComponent, EagamiWordmarkComponent, Edit2IconComponent, Edit3IconComponent, EditIconComponent, EmptyStateComponent, ExternalLinkIconComponent, EyeIconComponent, EyeOffIconComponent, Facebook2IconComponent, FacebookIconComponent, FastForwardIconComponent, FeatherIconComponent, Figma2IconComponent, FigmaIconComponent, FileIconComponent, FileMinusIconComponent, FilePlusIconComponent, FileTextIconComponent, FilmIconComponent, FilterIconComponent, FlagIconComponent, FolderIconComponent, FolderMinusIconComponent, FolderPlusIconComponent, FramerIconComponent, FrownIconComponent, GiftIconComponent, GitBranchIconComponent, GitCommitIconComponent, GitMergeIconComponent, GitPullRequestIconComponent, Github2IconComponent, GithubIconComponent, GitlabIconComponent, GlobeIconComponent, GoogleIconComponent, GridIconComponent, HardDriveIconComponent, HashIconComponent, HeadphonesIconComponent, HeartIconComponent, HelpCircleIconComponent, HeptagonIconComponent, HexagonIconComponent, HomeIconComponent, ICONS, IconComponentBase, ImageIconComponent, InboxIconComponent, InfoIconComponent, InputComponent, InstagramIconComponent, ItalicIconComponent, KeyIconComponent, KubernetesIconComponent, LampIconComponent, LayersIconComponent, LayoutIconComponent, LifeBuoyIconComponent, Link2IconComponent, LinkIconComponent, Linkedin2IconComponent, LinkedinIconComponent, ListIconComponent, LoaderIconComponent, LockIconComponent, LogInIconComponent, LogOutIconComponent, MailIconComponent, MapIconComponent, MapPinIconComponent, MastercardIconComponent, Maximize2IconComponent, MaximizeIconComponent, MehIconComponent, MenuComponent, MenuIconComponent, MenuItemComponent, MenuTriggerDirective, MessageCircleIconComponent, MessageSquareIconComponent, MicIconComponent, MicOffIconComponent, MicrosoftIconComponent, Minimize2IconComponent, MinimizeIconComponent, MinusCircleIconComponent, MinusIconComponent, MinusSquareIconComponent, MongodbIconComponent, MonitorIconComponent, MoonIconComponent, MoreHorizontalIconComponent, MoreVerticalIconComponent, MousePointerIconComponent, MoveIconComponent, MusicIconComponent, Navigation2IconComponent, NavigationIconComponent, NetlifyIconComponent, NotionIconComponent, NpmIconComponent, OctagonIconComponent, PackageIconComponent, PaginatorComponent, PaperclipIconComponent, PauseCircleIconComponent, PauseIconComponent, PaypalIconComponent, PenToolIconComponent, PencilIconComponent, PentagonIconComponent, PercentIconComponent, PhoneCallIconComponent, PhoneForwardedIconComponent, PhoneIconComponent, PhoneIncomingIconComponent, PhoneMissedIconComponent, PhoneOffIconComponent, PhoneOutgoingIconComponent, PieChartIconComponent, PlayCircleIconComponent, PlayIconComponent, PlusCircleIconComponent, PlusIconComponent, PlusSquareIconComponent, PocketIconComponent, PowerIconComponent, PrinterIconComponent, ProgressBarComponent, RadioComponent, RadioGroupComponent, RadioIconComponent, RectangleHorizontalIconComponent, RectangleVerticalIconComponent, RedditIconComponent, RefreshCcwIconComponent, RefreshCwIconComponent, RepeatIconComponent, RewindIconComponent, RotateCcwIconComponent, RotateCwIconComponent, RssIconComponent, SaveIconComponent, ScissorsIconComponent, SearchIconComponent, SegmentedComponent, SendIconComponent, ServerIconComponent, SettingsIconComponent, Share2IconComponent, ShareIconComponent, ShieldIconComponent, ShieldOffIconComponent, ShoppingBagIconComponent, ShoppingCartIconComponent, ShuffleIconComponent, SidebarIconComponent, SkeletonComponent, SkipBackIconComponent, SkipForwardIconComponent, Slack2IconComponent, SlackIconComponent, SlashIconComponent, SliderComponent, SlidersIconComponent, SmartphoneIconComponent, SmileIconComponent, SoccerBallIconComponent, SpeakerIconComponent, SpinnerComponent, SpotifyIconComponent, SquareIconComponent, StarIconComponent, StopCircleIconComponent, StripeIconComponent, SunIconComponent, SunriseIconComponent, SunsetIconComponent, SwitchComponent, TabComponent, TableIconComponent, TabletIconComponent, TabsComponent, TagComponent, TagIconComponent, TargetIconComponent, TerminalIconComponent, TextareaComponent, ThermometerIconComponent, ThumbsDownIconComponent, ThumbsUpIconComponent, ToastComponent, ToastService, ToggleLeftIconComponent, ToggleRightIconComponent, ToolIconComponent, TooltipDirective, Trash2IconComponent, TrashIconComponent, TrelloIconComponent, TrendingDownIconComponent, TrendingUpIconComponent, TriangleIconComponent, TrophyIconComponent, TruckIconComponent, TvIconComponent, Twitch2IconComponent, TwitchIconComponent, TwitterIconComponent, TypeIconComponent, UmbrellaIconComponent, UnderlineIconComponent, UnlockIconComponent, UploadCloudIconComponent, UploadIconComponent, UserCheckIconComponent, UserIconComponent, UserMinusIconComponent, UserPlusIconComponent, UserXIconComponent, UsersIconComponent, VercelIconComponent, VideoIconComponent, VideoOffIconComponent, VoicemailIconComponent, Volume1IconComponent, Volume2IconComponent, VolumeIconComponent, VolumeXIconComponent, WatchIconComponent, WifiIconComponent, WifiOffIconComponent, WindIconComponent, XCircleIconComponent, XIconComponent, XOctagonIconComponent, XSquareIconComponent, XTwitterIconComponent, Youtube2IconComponent, YoutubeIconComponent, ZapIconComponent, ZapOffIconComponent, ZoomInIconComponent, ZoomOutIconComponent, el, en, esES, frFR, frenchSpacing, iconDisplayName, pl, provideEagamiUi };
4625
- export type { AlertVariant, AutocompleteSize, AvatarEditorCropEvent, AvatarEditorCropState, AvatarEditorShape, AvatarShape, AvatarSize, BadgeSize, BadgeVariant, BreadcrumbClickEvent, BreadcrumbItem, BreadcrumbsSeparator, ButtonSize, ButtonType, ButtonVariant, CardHeaderAlign, CardPadding, CardVariant, CheckboxSize, CodeInputSize, DataTableColumn, DataTableDensity, DataTableSortDirection, DataTableSortState, DatePickerFormat, DatePickerSize, DatePickerValue, DatePickerWeekStart, DialogSize, DividerOrientation, DrawerPosition, DrawerSize, DropdownSize, EagamiI18nConfig, EagamiLocale, EagamiMessages, EagamiMessagesOverride, EagamiWordmarkLayout, EagamiWordmarkVariant, EmptyStateHeadingLevel, EmptyStateSize, IconCategory, IconComponentType, IconMeta, InputSize, InputType, MenuItemVariant, MenuPlacement, PaginatorAlign, PaginatorState, ProgressBarSize, ProgressBarVariant, RadioOrientation, RadioSize, SegmentedSize, SelectOption, SkeletonVariant, SliderSize, SpinnerSize, SwitchSize, TabsSize, TabsVariant, TagSize, TagVariant, TextareaResize, TextareaSize, Toast, ToastOptions, ToastVariant, TooltipPosition };
5355
+ export { AccordionComponent, AccordionItemComponent, ActivityIconComponent, AirplayIconComponent, AlertCircleIconComponent, AlertComponent, AlertOctagonIconComponent, AlertTriangleIconComponent, AlignCenterIconComponent, AlignJustifyIconComponent, AlignLeftIconComponent, AlignRightIconComponent, AnchorIconComponent, ApertureIconComponent, ArchiveIconComponent, ArrowDownCircleIconComponent, ArrowDownIconComponent, ArrowDownLeftIconComponent, ArrowDownRightIconComponent, ArrowLeftCircleIconComponent, ArrowLeftIconComponent, ArrowRightCircleIconComponent, ArrowRightIconComponent, ArrowUpCircleIconComponent, ArrowUpIconComponent, ArrowUpLeftIconComponent, ArrowUpRightIconComponent, AtSignIconComponent, AutocompleteComponent, AvatarComponent, AvatarEditorComponent, AwardIconComponent, BadgeComponent, BarChart2IconComponent, BarChartIconComponent, BatteryChargingIconComponent, BatteryIconComponent, BellIconComponent, BellOffIconComponent, BluetoothIconComponent, BoldIconComponent, BookIconComponent, BookOpenIconComponent, BookmarkIconComponent, BottleIconComponent, BoxIconComponent, BreadcrumbsComponent, BriefcaseIconComponent, ButtonComponent, CalendarIconComponent, CameraIconComponent, CameraOffIconComponent, CandleIconComponent, CardComponent, CastIconComponent, CheckCircleIconComponent, CheckIconComponent, CheckSquareIconComponent, CheckboxComponent, ChevronDownIconComponent, ChevronLeftIconComponent, ChevronRightIconComponent, ChevronUpIconComponent, ChevronsDownIconComponent, ChevronsLeftIconComponent, ChevronsRightIconComponent, ChevronsUpDownIconComponent, ChevronsUpIconComponent, ChromeIconComponent, CircleIconComponent, ClipboardIconComponent, ClockIconComponent, CloudDrizzleIconComponent, CloudIconComponent, CloudLightningIconComponent, CloudOffIconComponent, CloudRainIconComponent, CloudSnowIconComponent, CloudflareIconComponent, CodeIconComponent, CodeInputComponent, CodepenIconComponent, CodesandboxIconComponent, CoffeeIconComponent, ColorPickerComponent, ColumnsIconComponent, CommandIconComponent, CompassIconComponent, CopyIconComponent, CornerDownLeftIconComponent, CornerDownRightIconComponent, CornerLeftDownIconComponent, CornerLeftUpIconComponent, CornerRightDownIconComponent, CornerRightUpIconComponent, CornerUpLeftIconComponent, CornerUpRightIconComponent, CpuIconComponent, CreditCardIconComponent, CropIconComponent, CrosshairIconComponent, DataTableComponent, DatabaseIconComponent, DatePickerComponent, DeleteIconComponent, DialogComponent, DiscIconComponent, DiscordIconComponent, DivideCircleIconComponent, DivideIconComponent, DivideSquareIconComponent, DividerComponent, DockerIconComponent, DollarSignIconComponent, DownloadCloudIconComponent, DownloadIconComponent, DrawerComponent, DribbbleIconComponent, DropboxIconComponent, DropdownComponent, DropletIconComponent, EAGAMI_I18N_CONFIG, EAGAMI_LOCALES, EAGAMI_MESSAGES, EagamiI18nService, EagamiIconComponent, EagamiWordmarkComponent, Edit2IconComponent, Edit3IconComponent, EditIconComponent, EmptyStateComponent, ExternalLinkIconComponent, EyeIconComponent, EyeOffIconComponent, Facebook2IconComponent, FacebookIconComponent, FastForwardIconComponent, FeatherIconComponent, Figma2IconComponent, FigmaIconComponent, FileIconComponent, FileMinusIconComponent, FilePlusIconComponent, FileTextIconComponent, FilmIconComponent, FilterIconComponent, FlagIconComponent, FolderIconComponent, FolderMinusIconComponent, FolderPlusIconComponent, FramerIconComponent, FrownIconComponent, GiftIconComponent, GitBranchIconComponent, GitCommitIconComponent, GitMergeIconComponent, GitPullRequestIconComponent, Github2IconComponent, GithubIconComponent, GitlabIconComponent, GlobeIconComponent, GoogleIconComponent, GridIconComponent, HardDriveIconComponent, HashIconComponent, HeadphonesIconComponent, HeartIconComponent, HelpCircleIconComponent, HeptagonIconComponent, HexagonIconComponent, HomeIconComponent, ICONS, IconComponentBase, ImageIconComponent, InboxIconComponent, InfoIconComponent, InputComponent, InstagramIconComponent, ItalicIconComponent, KeyIconComponent, KubernetesIconComponent, LampIconComponent, LayersIconComponent, LayoutIconComponent, LeftHalfStarIconComponent, LifeBuoyIconComponent, Link2IconComponent, LinkIconComponent, Linkedin2IconComponent, LinkedinIconComponent, ListIconComponent, LoaderIconComponent, LockIconComponent, LogInIconComponent, LogOutIconComponent, MailIconComponent, MapIconComponent, MapPinIconComponent, MastercardIconComponent, Maximize2IconComponent, MaximizeIconComponent, MehIconComponent, MenuComponent, MenuIconComponent, MenuItemComponent, MenuTriggerDirective, MessageCircleIconComponent, MessageSquareIconComponent, MicIconComponent, MicOffIconComponent, MicrosoftIconComponent, Minimize2IconComponent, MinimizeIconComponent, MinusCircleIconComponent, MinusIconComponent, MinusSquareIconComponent, MongodbIconComponent, MonitorIconComponent, MoonIconComponent, MoreHorizontalIconComponent, MoreVerticalIconComponent, MousePointerIconComponent, MoveIconComponent, MultiSelectComponent, MusicIconComponent, Navigation2IconComponent, NavigationIconComponent, NetlifyIconComponent, NotionIconComponent, NpmIconComponent, OctagonIconComponent, PackageIconComponent, PaginatorComponent, PaperclipIconComponent, PauseCircleIconComponent, PauseIconComponent, PaypalIconComponent, PenToolIconComponent, PentagonIconComponent, PercentIconComponent, PhoneCallIconComponent, PhoneForwardedIconComponent, PhoneIconComponent, PhoneIncomingIconComponent, PhoneMissedIconComponent, PhoneOffIconComponent, PhoneOutgoingIconComponent, PieChartIconComponent, PlayCircleIconComponent, PlayIconComponent, PlusCircleIconComponent, PlusIconComponent, PlusSquareIconComponent, PocketIconComponent, PopoverComponent, PowerIconComponent, PrinterIconComponent, ProgressBarComponent, RadioComponent, RadioGroupComponent, RadioIconComponent, RangeSliderComponent, RectangleHorizontalIconComponent, RectangleVerticalIconComponent, RedditIconComponent, RefreshCcwIconComponent, RefreshCwIconComponent, RepeatIconComponent, RewindIconComponent, RightHalfStarIconComponent, RotateCcwIconComponent, RotateCwIconComponent, RssIconComponent, SaveIconComponent, ScissorsIconComponent, SearchIconComponent, SegmentedComponent, SendIconComponent, ServerIconComponent, SettingsIconComponent, Share2IconComponent, ShareIconComponent, ShieldIconComponent, ShieldOffIconComponent, ShoppingBagIconComponent, ShoppingCartIconComponent, ShuffleIconComponent, SidebarIconComponent, SkeletonComponent, SkipBackIconComponent, SkipForwardIconComponent, Slack2IconComponent, SlackIconComponent, SlashIconComponent, SliderComponent, SlidersIconComponent, SmartphoneIconComponent, SmileIconComponent, SoccerBallIconComponent, SpeakerIconComponent, SpinnerComponent, SpotifyIconComponent, SquareIconComponent, StarIconComponent, StepComponent, StepperComponent, StopCircleIconComponent, StripeIconComponent, SunIconComponent, SunriseIconComponent, SunsetIconComponent, SwitchComponent, TabComponent, TableIconComponent, TabletIconComponent, TabsComponent, TagComponent, TagIconComponent, TargetIconComponent, TerminalIconComponent, TextareaComponent, ThermometerIconComponent, ThumbsDownIconComponent, ThumbsUpIconComponent, TimePickerComponent, ToastComponent, ToastService, ToggleLeftIconComponent, ToggleRightIconComponent, ToolIconComponent, TooltipDirective, Trash2IconComponent, TrashIconComponent, TrelloIconComponent, TrendingDownIconComponent, TrendingUpIconComponent, TriangleIconComponent, TrophyIconComponent, TruckIconComponent, TvIconComponent, Twitch2IconComponent, TwitchIconComponent, TwitterIconComponent, TypeIconComponent, UmbrellaIconComponent, UnderlineIconComponent, UnlockIconComponent, UploadCloudIconComponent, UploadIconComponent, UserCheckIconComponent, UserIconComponent, UserMinusIconComponent, UserPlusIconComponent, UserXIconComponent, UsersIconComponent, VercelIconComponent, VideoIconComponent, VideoOffIconComponent, VoicemailIconComponent, Volume1IconComponent, Volume2IconComponent, VolumeIconComponent, VolumeXIconComponent, WatchIconComponent, WifiIconComponent, WifiOffIconComponent, WindIconComponent, XCircleIconComponent, XIconComponent, XOctagonIconComponent, XSquareIconComponent, XTwitterIconComponent, Youtube2IconComponent, YoutubeIconComponent, ZapIconComponent, ZapOffIconComponent, ZoomInIconComponent, ZoomOutIconComponent, computePopoverPosition, el, en, esES, frFR, frenchSpacing, iconDisplayName, pl, provideEagamiUi };
5356
+ export type { AlertVariant, AutocompleteSize, AvatarEditorCropEvent, AvatarEditorCropState, AvatarEditorShape, AvatarShape, AvatarSize, BadgeShape, BadgeSize, BadgeVariant, BreadcrumbClickEvent, BreadcrumbItem, BreadcrumbsSeparator, ButtonSize, ButtonType, ButtonVariant, CardHeaderAlign, CardPadding, CardVariant, CheckboxSize, CodeInputSize, ColorPickerFormat, ColorPickerInputMode, ColorPickerSize, ColorPickerValue, DataTableColumn, DataTableDensity, DataTableSortDirection, DataTableSortState, DatePickerFormat, DatePickerSize, DatePickerValue, DatePickerWeekStart, DialogSize, DividerOrientation, DrawerPosition, DrawerSize, DropdownSize, EagamiI18nConfig, EagamiLocale, EagamiMessages, EagamiMessagesOverride, EagamiWordmarkLayout, EagamiWordmarkVariant, EmptyStateHeadingLevel, EmptyStateSize, IconCategory, IconComponentType, IconMeta, InputSize, InputType, MenuItemVariant, MenuPlacement, MultiSelectSize, PaginatorAlign, PaginatorState, PopoverPlacement, PopoverPositionOptions, PopoverPositionResult, PopoverRole, PopoverScrollBehavior, ProgressBarSize, ProgressBarVariant, RadioOrientation, RadioSize, RangeSliderSize, RangeSliderValue, SegmentedSize, SelectOption, SkeletonVariant, SliderSize, SpinnerSize, StepperSize, SwitchSize, TabsSize, TabsVariant, TagSize, TagVariant, TextareaResize, TextareaSize, TimePickerFormat, TimePickerSize, Toast, ToastOptions, ToastVariant, TooltipPosition };