@eagami/ui 1.5.0 → 2.1.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.
@@ -71,6 +71,26 @@ interface EagamiMessages {
71
71
  dropdown: {
72
72
  placeholder: string;
73
73
  };
74
+ fileUploader: {
75
+ prompt: string;
76
+ promptSingle: string;
77
+ browse: string;
78
+ removeFile: (name: string) => string;
79
+ fileListLabel: string;
80
+ constraintsAccept: (accept: string) => string;
81
+ constraintsMaxSize: (size: string) => string;
82
+ constraintsMaxFiles: (count: number) => string;
83
+ rejectionType: (name: string) => string;
84
+ rejectionSize: (name: string, max: string) => string;
85
+ rejectionCount: (max: number) => string;
86
+ bytesUnit: {
87
+ b: string;
88
+ kb: string;
89
+ mb: string;
90
+ gb: string;
91
+ tb: string;
92
+ };
93
+ };
74
94
  input: {
75
95
  showPassword: string;
76
96
  hidePassword: string;
@@ -78,6 +98,15 @@ interface EagamiMessages {
78
98
  menu: {
79
99
  label: string;
80
100
  };
101
+ multiSelect: {
102
+ placeholder: string;
103
+ searchPlaceholder: string;
104
+ searchEmpty: string;
105
+ selectAll: string;
106
+ clearAll: string;
107
+ removeOption: (label: string) => string;
108
+ selectedCount: (count: number) => string;
109
+ };
81
110
  paginator: {
82
111
  label: string;
83
112
  rowsPerPage: string;
@@ -88,12 +117,35 @@ interface EagamiMessages {
88
117
  progressBar: {
89
118
  label: string;
90
119
  };
120
+ rating: {
121
+ label: string;
122
+ valueLabel: (value: number, max: number) => string;
123
+ clear: string;
124
+ };
91
125
  spinner: {
92
126
  label: string;
93
127
  };
128
+ stepper: {
129
+ optional: string;
130
+ };
94
131
  tag: {
95
132
  remove: string;
96
133
  };
134
+ timePicker: {
135
+ placeholder: string;
136
+ clear: string;
137
+ hoursLabel: string;
138
+ minutesLabel: string;
139
+ secondsLabel: string;
140
+ incrementHours: string;
141
+ decrementHours: string;
142
+ incrementMinutes: string;
143
+ decrementMinutes: string;
144
+ incrementSeconds: string;
145
+ decrementSeconds: string;
146
+ amLabel: string;
147
+ pmLabel: string;
148
+ };
97
149
  toast: {
98
150
  dismiss: string;
99
151
  };
@@ -142,6 +194,7 @@ declare class EagamiI18nService {
142
194
  private readonly _locale;
143
195
  /** The currently active locale. Read it reactively or call `setLocale()`. */
144
196
  readonly locale: Signal<EagamiLocale>;
197
+ constructor();
145
198
  /** The resolved message dictionary for the active locale. */
146
199
  readonly messages: Signal<EagamiMessages>;
147
200
  /** Switches the active locale; falls back to English if unsupported. */
@@ -406,6 +459,8 @@ declare class AvatarEditorComponent implements OnDestroy {
406
459
  [x: string]: boolean;
407
460
  'ea-avatar-editor--has-image': boolean;
408
461
  'ea-avatar-editor--drag-over': boolean;
462
+ 'ea-avatar-editor--compact': boolean;
463
+ 'ea-avatar-editor--ultra-compact': boolean;
409
464
  }>;
410
465
  private readonly injector;
411
466
  private readonly boundWheel;
@@ -496,17 +551,25 @@ type BadgeVariant = 'default' | 'success' | 'warning' | 'error' | 'info';
496
551
  /** Visual size of a badge. */
497
552
  type BadgeSize = 'sm' | 'md' | 'lg';
498
553
  /**
499
- * Compact pill-shaped indicator used to communicate status, counts, or labels
500
- * inline with surrounding content.
554
+ * Outer shape of a badge.
555
+ * - `pill` (default): content-shaped pill, ideal for inline status labels
556
+ * - `pin`: fixed-min square that renders as a perfect circle for single
557
+ * characters (counts) and expands into a pill for longer content
558
+ */
559
+ type BadgeShape = 'pill' | 'pin';
560
+ /**
561
+ * Compact indicator used to communicate status, counts, or labels inline with
562
+ * surrounding content.
501
563
  */
502
564
  declare class BadgeComponent {
503
565
  readonly variant: i0.InputSignal<BadgeVariant>;
504
566
  readonly size: i0.InputSignal<BadgeSize>;
567
+ readonly shape: i0.InputSignal<BadgeShape>;
505
568
  readonly hostClasses: i0.Signal<{
506
569
  [x: string]: boolean;
507
570
  }>;
508
571
  static ɵfac: i0.ɵɵFactoryDeclaration<BadgeComponent, never>;
509
- 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>;
572
+ 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>;
510
573
  }
511
574
 
512
575
  /** Visual style of the separator rendered between breadcrumb items. */
@@ -674,14 +737,11 @@ interface Rgb {
674
737
  * `ControlValueAccessor`. Accepts any CSS color string in `writeValue`.
675
738
  */
676
739
  declare class ColorPickerComponent implements ControlValueAccessor {
677
- private readonly hostEl;
678
- private readonly triggerEl;
679
- private readonly popoverEl;
740
+ protected readonly triggerEl: i0.Signal<ElementRef<HTMLButtonElement> | undefined>;
680
741
  private readonly svAreaEl;
681
742
  private readonly hueTrackEl;
682
743
  private readonly alphaTrackEl;
683
744
  private readonly injector;
684
- private readonly destroyRef;
685
745
  protected readonly i18n: EagamiI18nService;
686
746
  readonly label: i0.InputSignal<string | undefined>;
687
747
  readonly placeholder: i0.InputSignal<string | undefined>;
@@ -716,13 +776,6 @@ declare class ColorPickerComponent implements ControlValueAccessor {
716
776
  * can type a partial value (`#1`, `#12`, `#123…`) without each keystroke being
717
777
  * expanded back into a 6-digit canonical form. */
718
778
  readonly hexInputValue: i0.WritableSignal<string>;
719
- /** Pixel position of the popover when open. Calculated from the trigger's
720
- * bounding rect so the popover can use `position: fixed` and escape any
721
- * ancestor with `overflow: hidden`. */
722
- readonly popoverPosition: i0.WritableSignal<{
723
- top: number;
724
- left: number;
725
- } | null>;
726
779
  private readonly _formDisabled;
727
780
  private onChange;
728
781
  private onTouched;
@@ -744,9 +797,14 @@ declare class ColorPickerComponent implements ControlValueAccessor {
744
797
  'ea-color-picker__trigger--open': boolean;
745
798
  'ea-color-picker__trigger--disabled': boolean;
746
799
  }>;
747
- /** True when the browser supports the EyeDropper API. */
748
- readonly hasEyeDropper: i0.Signal<boolean>;
749
- constructor();
800
+ /**
801
+ * True when the browser supports the EyeDropper API. Not a `computed` —
802
+ * `window.EyeDropper` isn't a signal, so a memoized computed would cache the
803
+ * first read (typically `false`, since the popover content's bindings now
804
+ * evaluate at parent-view creation time via content projection, before any
805
+ * polyfill / test setup runs). A plain method re-checks on every call.
806
+ */
807
+ hasEyeDropper(): boolean;
750
808
  writeValue(val: ColorPickerValue): void;
751
809
  registerOnChange(fn: (value: string | null) => void): void;
752
810
  registerOnTouched(fn: () => void): void;
@@ -794,13 +852,8 @@ declare class ColorPickerComponent implements ControlValueAccessor {
794
852
  selectPreset(hex: string): void;
795
853
  onTriggerKeydown(event: KeyboardEvent): void;
796
854
  onPopoverKeydown(event: KeyboardEvent): void;
797
- onDocumentClick(event: Event): void;
798
- /**
799
- * Repositions the popover when it would extend past the viewport edges.
800
- * Prefers flipping above the trigger when there's more room there, then
801
- * clamps so the popover always has a small margin from the viewport edges.
802
- */
803
- private clampPopoverToViewport;
855
+ /** Called by `<ea-popover>` when the user clicks outside the picker. */
856
+ onPopoverCloseRequested(): void;
804
857
  private applyHsv;
805
858
  private applyRgba;
806
859
  private commit;
@@ -945,8 +998,7 @@ interface CalendarDay {
945
998
  * Escape). Integrates with Angular forms via `ControlValueAccessor`.
946
999
  */
947
1000
  declare class DatePickerComponent implements ControlValueAccessor {
948
- private readonly hostEl;
949
- private readonly triggerEl;
1001
+ protected readonly triggerEl: i0.Signal<ElementRef<HTMLButtonElement> | undefined>;
950
1002
  private readonly injector;
951
1003
  protected readonly i18n: EagamiI18nService;
952
1004
  readonly label: i0.InputSignal<string | undefined>;
@@ -1015,7 +1067,8 @@ declare class DatePickerComponent implements ControlValueAccessor {
1015
1067
  goToToday(): void;
1016
1068
  handleTriggerKeydown(event: KeyboardEvent): void;
1017
1069
  handleGridKeydown(event: KeyboardEvent): void;
1018
- onDocumentClick(event: Event): void;
1070
+ /** Called by `<ea-popover>` when the user clicks outside the picker. */
1071
+ onPopoverCloseRequested(): void;
1019
1072
  private formatOptions;
1020
1073
  private toDate;
1021
1074
  private startOfDay;
@@ -1120,12 +1173,11 @@ type DropdownSize = 'sm' | 'md' | 'lg';
1120
1173
  * Single-select dropdown with a custom popup list. Supports keyboard
1121
1174
  * navigation (arrow keys, Enter/Space to select, Escape to close), closes
1122
1175
  * on outside click or viewport scroll/resize, and integrates with Angular
1123
- * forms via `ControlValueAccessor`.
1176
+ * forms via `ControlValueAccessor`. Positioning, dismissal, and SSR-safe
1177
+ * scroll handling are provided by `<ea-popover>`.
1124
1178
  */
1125
1179
  declare class DropdownComponent implements ControlValueAccessor {
1126
1180
  private readonly elRef;
1127
- private readonly menuEl;
1128
- private readonly destroyRef;
1129
1181
  private readonly i18n;
1130
1182
  readonly label: i0.InputSignal<string | undefined>;
1131
1183
  readonly placeholder: i0.InputSignal<string | undefined>;
@@ -1158,7 +1210,6 @@ declare class DropdownComponent implements ControlValueAccessor {
1158
1210
  'ea-dropdown__trigger--open': boolean;
1159
1211
  'ea-dropdown__trigger--disabled': boolean;
1160
1212
  }>;
1161
- constructor();
1162
1213
  writeValue(val: string): void;
1163
1214
  registerOnChange(fn: (value: string) => void): void;
1164
1215
  registerOnTouched(fn: () => void): void;
@@ -1171,9 +1222,10 @@ declare class DropdownComponent implements ControlValueAccessor {
1171
1222
  close(): void;
1172
1223
  /** Moves keyboard focus to the dropdown trigger. */
1173
1224
  focus(): void;
1225
+ /** Called by `<ea-popover>` when the user clicks outside the dropdown. */
1226
+ onPopoverCloseRequested(): void;
1174
1227
  handleKeydown(event: KeyboardEvent): void;
1175
1228
  private moveFocus;
1176
- onDocumentClick(event: Event): void;
1177
1229
  static ɵfac: i0.ɵɵFactoryDeclaration<DropdownComponent, never>;
1178
1230
  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>;
1179
1231
  }
@@ -1228,6 +1280,110 @@ declare class EmptyStateComponent {
1228
1280
  static ɵcmp: i0.ɵɵComponentDeclaration<EmptyStateComponent, "ea-empty-state", never, { "title": { "alias": "title"; "required": false; "isSignal": true; }; "description": { "alias": "description"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "headingLevel": { "alias": "headingLevel"; "required": false; "isSignal": true; }; }, {}, never, ["[slot=media]", "[slot=actions]"], true, never>;
1229
1281
  }
1230
1282
 
1283
+ /** Visual size of the file uploader. */
1284
+ type FileUploaderSize = 'sm' | 'md' | 'lg';
1285
+ /** Reason a file was rejected during selection. */
1286
+ type FileUploaderRejectionReason = 'type' | 'size' | 'count';
1287
+ /** Detail object emitted on the `rejected` output when one or more files fail validation. */
1288
+ interface FileUploaderRejection {
1289
+ readonly file: File;
1290
+ readonly reason: FileUploaderRejectionReason;
1291
+ }
1292
+ /**
1293
+ * Multi-file uploader with a drag-and-drop zone and a per-file list. Pure UI:
1294
+ * the component manages selection, validation, and removal but does not perform
1295
+ * any network I/O — consumers are responsible for uploading the resulting
1296
+ * `File[]` and (optionally) feeding progress back via the `progress` map.
1297
+ *
1298
+ * The dropzone icon (default `<ea-icon-upload-cloud>`) is exposed as a content
1299
+ * slot via the `icon` attribute: project any element to override it, and the
1300
+ * dropzone's size-aware wrapper handles sizing automatically.
1301
+ *
1302
+ * @example
1303
+ * ```html
1304
+ * <ea-file-uploader label="Attach files">
1305
+ * <ea-icon-paperclip icon />
1306
+ * </ea-file-uploader>
1307
+ * ```
1308
+ */
1309
+ declare class FileUploaderComponent implements ControlValueAccessor {
1310
+ private readonly fileInputEl;
1311
+ private readonly dropzoneEl;
1312
+ protected readonly i18n: EagamiI18nService;
1313
+ readonly label: i0.InputSignal<string | undefined>;
1314
+ readonly hint: i0.InputSignal<string | undefined>;
1315
+ readonly errorMsg: i0.InputSignal<string | undefined>;
1316
+ readonly size: i0.InputSignal<FileUploaderSize>;
1317
+ readonly disabled: i0.InputSignal<boolean>;
1318
+ readonly required: i0.InputSignal<boolean>;
1319
+ readonly multiple: i0.InputSignal<boolean>;
1320
+ /** Comma-separated MIME types and / or file extensions, e.g. `'image/*,.pdf'`. */
1321
+ readonly accept: i0.InputSignal<string | undefined>;
1322
+ /** Max size per file in bytes. Files larger than this are rejected. */
1323
+ readonly maxSize: i0.InputSignal<number | undefined>;
1324
+ /** Max total number of files. Extra files are rejected. */
1325
+ readonly maxFiles: i0.InputSignal<number | undefined>;
1326
+ /** Toggle the file list under the dropzone. */
1327
+ readonly showFileList: i0.InputSignal<boolean>;
1328
+ /**
1329
+ * Optional per-file progress (0-100). Keyed by `File` object identity, so
1330
+ * consumers must keep the same `File` references between change-detection
1331
+ * runs. When unset, no progress bar is rendered.
1332
+ */
1333
+ readonly progress: i0.InputSignal<ReadonlyMap<File, number> | undefined>;
1334
+ readonly id: i0.InputSignal<string>;
1335
+ /** Two-way binding to the current `File[]`. Also written by Angular forms. */
1336
+ readonly value: i0.ModelSignal<readonly File[]>;
1337
+ /** Fires when one or more selected files fail validation. */
1338
+ readonly rejected: i0.OutputEmitterRef<readonly FileUploaderRejection[]>;
1339
+ /** Fires whenever a file is removed via its row's X button. */
1340
+ readonly fileRemoved: i0.OutputEmitterRef<File>;
1341
+ protected readonly isDragOver: i0.WritableSignal<boolean>;
1342
+ protected readonly isFocused: i0.WritableSignal<boolean>;
1343
+ private readonly _formDisabled;
1344
+ private onChange;
1345
+ private onTouched;
1346
+ protected readonly isDisabled: i0.Signal<boolean>;
1347
+ protected readonly hasError: i0.Signal<boolean>;
1348
+ protected readonly showError: i0.Signal<boolean>;
1349
+ protected readonly showHint: i0.Signal<boolean>;
1350
+ protected readonly hostClasses: i0.Signal<{
1351
+ [x: string]: boolean;
1352
+ 'ea-file-uploader-field--error': boolean;
1353
+ 'ea-file-uploader-field--disabled': boolean;
1354
+ 'ea-file-uploader-field--drag-over': boolean;
1355
+ 'ea-file-uploader-field--focused': boolean;
1356
+ }>;
1357
+ protected readonly errorId: i0.Signal<string>;
1358
+ protected readonly hintId: i0.Signal<string>;
1359
+ protected readonly constraintsId: i0.Signal<string>;
1360
+ protected readonly describedBy: i0.Signal<string | null>;
1361
+ /** Joined human-readable description of accept / maxSize / maxFiles limits. */
1362
+ protected readonly constraintsText: i0.Signal<string>;
1363
+ protected readonly promptText: i0.Signal<string>;
1364
+ writeValue(value: readonly File[] | null | undefined): void;
1365
+ registerOnChange(fn: (value: readonly File[]) => void): void;
1366
+ registerOnTouched(fn: () => void): void;
1367
+ setDisabledState(isDisabled: boolean): void;
1368
+ protected openFilePicker(): void;
1369
+ protected onDropzoneKeydown(event: KeyboardEvent): void;
1370
+ protected onDropzoneFocus(): void;
1371
+ protected onDropzoneBlur(): void;
1372
+ protected onFileSelected(event: Event): void;
1373
+ protected onDragOver(event: DragEvent): void;
1374
+ protected onDragLeave(event: DragEvent): void;
1375
+ protected onDrop(event: DragEvent): void;
1376
+ protected removeFile(file: File): void;
1377
+ private acceptFiles;
1378
+ protected formatBytes(bytes: number): string;
1379
+ protected iconKey(file: File): 'image' | 'film' | 'music' | 'archive' | 'text' | 'file';
1380
+ protected progressFor(file: File): number | undefined;
1381
+ /** Stable track key for the `@for` over `value()`. */
1382
+ protected trackFile(_index: number, file: File): string;
1383
+ static ɵfac: i0.ɵɵFactoryDeclaration<FileUploaderComponent, never>;
1384
+ static ɵcmp: i0.ɵɵComponentDeclaration<FileUploaderComponent, "ea-file-uploader", never, { "label": { "alias": "label"; "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; }; "multiple": { "alias": "multiple"; "required": false; "isSignal": true; }; "accept": { "alias": "accept"; "required": false; "isSignal": true; }; "maxSize": { "alias": "maxSize"; "required": false; "isSignal": true; }; "maxFiles": { "alias": "maxFiles"; "required": false; "isSignal": true; }; "showFileList": { "alias": "showFileList"; "required": false; "isSignal": true; }; "progress": { "alias": "progress"; "required": false; "isSignal": true; }; "id": { "alias": "id"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "rejected": "rejected"; "fileRemoved": "fileRemoved"; }, never, ["[icon]"], true, never>;
1385
+ }
1386
+
1231
1387
  /**
1232
1388
  * Primary classification for an icon component. Every icon ships with a single
1233
1389
  * `category` (read off the component's `static readonly category` field) plus
@@ -1264,13 +1420,22 @@ type IconComponentType = Type<unknown> & IconMeta;
1264
1420
  * config in their `@Component` decorator. Brand icons with their own host
1265
1421
  * bindings (e.g. a colour binding tied to a `brand` input) layer those onto
1266
1422
  * this base via additional `@HostBinding` getters.
1423
+ *
1424
+ * Feather-derived icons read the `strokeWidth` input via `[attr.stroke-width]`
1425
+ * in their SVG template, so consumers can thin or thicken any icon at the
1426
+ * call site (e.g. `<ea-icon-star [strokeWidth]="1.5" />`). Subclasses can
1427
+ * change the default by setting `static override readonly defaultStrokeWidth`
1428
+ * — used by icons whose dense paths read better at a different default
1429
+ * (e.g. camera, upload at 1.5).
1267
1430
  */
1268
1431
  declare abstract class IconComponentBase {
1269
1432
  readonly display = "inline-flex";
1270
1433
  readonly width = "1em";
1271
1434
  readonly height = "1em";
1435
+ static readonly defaultStrokeWidth: number;
1436
+ readonly strokeWidth: i0.InputSignal<number>;
1272
1437
  static ɵfac: i0.ɵɵFactoryDeclaration<IconComponentBase, never>;
1273
- static ɵdir: i0.ɵɵDirectiveDeclaration<IconComponentBase, never, never, {}, {}, never, never, true, never>;
1438
+ static ɵdir: i0.ɵɵDirectiveDeclaration<IconComponentBase, never, never, { "strokeWidth": { "alias": "strokeWidth"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
1274
1439
  }
1275
1440
 
1276
1441
  /**
@@ -1294,9 +1459,6 @@ declare function iconDisplayName(iconOrSlug: IconComponentType | string): string
1294
1459
  * the full set. For single-icon usage import the component directly (e.g.
1295
1460
  * `import { HomeIconComponent } from '@eagami/ui'`) and the bundler will
1296
1461
  * tree-shake `ICONS` away.
1297
- *
1298
- * Deprecated aliases (e.g. `PencilIconComponent`) are intentionally excluded
1299
- * so they don't surface in generated catalogues.
1300
1462
  */
1301
1463
  declare const ICONS: ReadonlyArray<IconComponentType>;
1302
1464
 
@@ -1388,18 +1550,6 @@ declare class ApertureIconComponent extends IconComponentBase {
1388
1550
  static ɵcmp: i0.ɵɵComponentDeclaration<ApertureIconComponent, "ea-icon-aperture", never, {}, {}, never, never, true, never>;
1389
1551
  }
1390
1552
 
1391
- /**
1392
- * @deprecated Will be removed in v2.0.0. The icon depicts Apple Inc.'s logo,
1393
- * which is more strictly protected than other brand marks. Source the asset
1394
- * directly from Apple per their brand guidelines for use cases like "Sign in
1395
- * with Apple".
1396
- */
1397
- declare class AppleIconComponent extends IconComponentBase {
1398
- readonly brand: i0.InputSignal<boolean>;
1399
- static ɵfac: i0.ɵɵFactoryDeclaration<AppleIconComponent, never>;
1400
- static ɵcmp: i0.ɵɵComponentDeclaration<AppleIconComponent, "ea-icon-apple", never, { "brand": { "alias": "brand"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
1401
- }
1402
-
1403
1553
  declare class ArchiveIconComponent extends IconComponentBase {
1404
1554
  static readonly slug = "archive";
1405
1555
  static readonly category: IconCategory;
@@ -1643,6 +1793,7 @@ declare class CalendarIconComponent extends IconComponentBase {
1643
1793
  declare class CameraIconComponent extends IconComponentBase {
1644
1794
  static readonly slug = "camera";
1645
1795
  static readonly category: IconCategory;
1796
+ static readonly defaultStrokeWidth = 1.5;
1646
1797
  static readonly tags: ReadonlyArray<string>;
1647
1798
  static ɵfac: i0.ɵɵFactoryDeclaration<CameraIconComponent, never>;
1648
1799
  static ɵcmp: i0.ɵɵComponentDeclaration<CameraIconComponent, "ea-icon-camera", never, {}, {}, never, never, true, never>;
@@ -2638,6 +2789,14 @@ declare class LayoutIconComponent extends IconComponentBase {
2638
2789
  static ɵcmp: i0.ɵɵComponentDeclaration<LayoutIconComponent, "ea-icon-layout", never, {}, {}, never, never, true, never>;
2639
2790
  }
2640
2791
 
2792
+ declare class LeftHalfStarIconComponent extends IconComponentBase {
2793
+ static readonly slug = "left-half-star";
2794
+ static readonly category: IconCategory;
2795
+ static readonly tags: ReadonlyArray<string>;
2796
+ static ɵfac: i0.ɵɵFactoryDeclaration<LeftHalfStarIconComponent, never>;
2797
+ static ɵcmp: i0.ɵɵComponentDeclaration<LeftHalfStarIconComponent, "ea-icon-left-half-star", never, {}, {}, never, never, true, never>;
2798
+ }
2799
+
2641
2800
  declare class LifeBuoyIconComponent extends IconComponentBase {
2642
2801
  static readonly slug = "life-buoy";
2643
2802
  static readonly category: IconCategory;
@@ -3053,20 +3212,6 @@ declare class PenToolIconComponent extends IconComponentBase {
3053
3212
  static ɵcmp: i0.ɵɵComponentDeclaration<PenToolIconComponent, "ea-icon-pen-tool", never, {}, {}, never, never, true, never>;
3054
3213
  }
3055
3214
 
3056
- /**
3057
- * @deprecated Will be removed in v2.0.0. The `pencil` icon depicts the same
3058
- * mark as Feather's canonical `edit-2` (with a marginally different cap
3059
- * curvature) and is being retired as redundant. Switch to `<ea-icon-edit-2>`
3060
- * / `Edit2IconComponent`.
3061
- */
3062
- declare class PencilIconComponent extends IconComponentBase {
3063
- static readonly slug = "pencil";
3064
- static readonly category: IconCategory;
3065
- static readonly tags: ReadonlyArray<string>;
3066
- static ɵfac: i0.ɵɵFactoryDeclaration<PencilIconComponent, never>;
3067
- static ɵcmp: i0.ɵɵComponentDeclaration<PencilIconComponent, "ea-icon-pencil", never, {}, {}, never, never, true, never>;
3068
- }
3069
-
3070
3215
  declare class PentagonIconComponent extends IconComponentBase {
3071
3216
  static readonly slug = "pentagon";
3072
3217
  static readonly category: IconCategory;
@@ -3277,6 +3422,14 @@ declare class RewindIconComponent extends IconComponentBase {
3277
3422
  static ɵcmp: i0.ɵɵComponentDeclaration<RewindIconComponent, "ea-icon-rewind", never, {}, {}, never, never, true, never>;
3278
3423
  }
3279
3424
 
3425
+ declare class RightHalfStarIconComponent extends IconComponentBase {
3426
+ static readonly slug = "right-half-star";
3427
+ static readonly category: IconCategory;
3428
+ static readonly tags: ReadonlyArray<string>;
3429
+ static ɵfac: i0.ɵɵFactoryDeclaration<RightHalfStarIconComponent, never>;
3430
+ static ɵcmp: i0.ɵɵComponentDeclaration<RightHalfStarIconComponent, "ea-icon-right-half-star", never, {}, {}, never, never, true, never>;
3431
+ }
3432
+
3280
3433
  declare class RotateCcwIconComponent extends IconComponentBase {
3281
3434
  static readonly slug = "rotate-ccw";
3282
3435
  static readonly category: IconCategory;
@@ -3821,6 +3974,7 @@ declare class UnlockIconComponent extends IconComponentBase {
3821
3974
  declare class UploadIconComponent extends IconComponentBase {
3822
3975
  static readonly slug = "upload";
3823
3976
  static readonly category: IconCategory;
3977
+ static readonly defaultStrokeWidth = 1.5;
3824
3978
  static readonly tags: ReadonlyArray<string>;
3825
3979
  static ɵfac: i0.ɵɵFactoryDeclaration<UploadIconComponent, never>;
3826
3980
  static ɵcmp: i0.ɵɵComponentDeclaration<UploadIconComponent, "ea-icon-upload", never, {}, {}, never, never, true, never>;
@@ -4162,7 +4316,8 @@ type MenuPlacement = 'bottom-start' | 'bottom-end' | 'top-start' | 'top-end';
4162
4316
  * Popup action menu attached to any focusable element via the
4163
4317
  * `[eaMenuTrigger]` directive. Supports keyboard navigation
4164
4318
  * (arrow keys, Home/End), closes on outside click or Escape, and restores
4165
- * focus to the trigger on close.
4319
+ * focus to the trigger on close. Positioning, dismissal, and SSR-safe scroll
4320
+ * handling are provided by `<ea-popover>`.
4166
4321
  */
4167
4322
  declare class MenuComponent {
4168
4323
  private readonly injector;
@@ -4179,12 +4334,8 @@ declare class MenuComponent {
4179
4334
  readonly opened: i0.OutputEmitterRef<void>;
4180
4335
  /** Fires when the menu closes. */
4181
4336
  readonly closed: i0.OutputEmitterRef<void>;
4182
- private triggerEl;
4183
- private readonly triggerRect;
4184
- readonly listClasses: i0.Signal<{
4185
- [x: string]: boolean;
4186
- }>;
4187
- readonly listStyle: i0.Signal<Record<string, string>>;
4337
+ /** Trigger element currently anchoring the menu. Signal-typed so `<ea-popover>` reacts when it changes. */
4338
+ protected readonly triggerEl: i0.WritableSignal<HTMLElement | undefined>;
4188
4339
  /** Toggles the menu open state, anchoring it to the given trigger element. */
4189
4340
  toggleAt(triggerEl: HTMLElement): void;
4190
4341
  /** Opens the menu anchored to the given trigger element and focuses the first item. */
@@ -4195,6 +4346,8 @@ declare class MenuComponent {
4195
4346
  * not used on outside click, where the user has chosen a new focus target).
4196
4347
  */
4197
4348
  close(restoreFocus?: boolean): void;
4349
+ /** Called by `<ea-popover>` when the user clicks outside the menu. */
4350
+ onPopoverCloseRequested(): void;
4198
4351
  private getEnabledItems;
4199
4352
  /**
4200
4353
  * `preventScroll: true` is critical here. The menu list is `position: fixed`
@@ -4208,9 +4361,7 @@ declare class MenuComponent {
4208
4361
  */
4209
4362
  private focusFirstItem;
4210
4363
  onKeydown(event: KeyboardEvent): void;
4211
- onDocumentClick(event: Event): void;
4212
4364
  onEscape(): void;
4213
- onViewportChange(): void;
4214
4365
  static ɵfac: i0.ɵɵFactoryDeclaration<MenuComponent, never>;
4215
4366
  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>;
4216
4367
  }
@@ -4247,6 +4398,116 @@ declare class MenuTriggerDirective {
4247
4398
  static ɵdir: i0.ɵɵDirectiveDeclaration<MenuTriggerDirective, "[eaMenuTrigger]", never, { "menu": { "alias": "eaMenuTrigger"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
4248
4399
  }
4249
4400
 
4401
+ /** Visual size of the multi-select trigger. */
4402
+ type MultiSelectSize = 'sm' | 'md' | 'lg';
4403
+ /**
4404
+ * Multi-select dropdown. Renders selections as removable `<ea-tag>` chips
4405
+ * inside the trigger, opens a popover containing an optional search input,
4406
+ * a tri-state "Select all" toggle, and a list of `<ea-checkbox>` options.
4407
+ * The wire value is a `readonly string[]` of selected option values, ordered
4408
+ * to match the input `options` array. Closes on outside click / scroll, and
4409
+ * integrates with Angular forms via `ControlValueAccessor`.
4410
+ */
4411
+ declare class MultiSelectComponent implements ControlValueAccessor {
4412
+ protected readonly triggerEl: i0.Signal<ElementRef<HTMLElement> | undefined>;
4413
+ protected readonly searchEl: i0.Signal<ElementRef<HTMLInputElement> | undefined>;
4414
+ protected readonly i18n: EagamiI18nService;
4415
+ private readonly injector;
4416
+ readonly label: i0.InputSignal<string | undefined>;
4417
+ readonly placeholder: i0.InputSignal<string | undefined>;
4418
+ readonly searchPlaceholder: i0.InputSignal<string | undefined>;
4419
+ readonly options: i0.InputSignal<readonly SelectOption[]>;
4420
+ readonly size: i0.InputSignal<MultiSelectSize>;
4421
+ readonly disabled: i0.InputSignal<boolean>;
4422
+ readonly readonly: i0.InputSignal<boolean>;
4423
+ readonly required: i0.InputSignal<boolean>;
4424
+ readonly hint: i0.InputSignal<string | undefined>;
4425
+ readonly errorMsg: i0.InputSignal<string | undefined>;
4426
+ /** Toggle the search input at the top of the popover. */
4427
+ readonly searchable: i0.InputSignal<boolean>;
4428
+ /** Toggle the "Select all" row at the top of the option list. */
4429
+ readonly selectAll: i0.InputSignal<boolean>;
4430
+ /** Max number of chips shown inside the trigger; the rest collapse into a "+N more" pill. `0` removes the cap. */
4431
+ readonly maxVisibleChips: i0.InputSignal<number>;
4432
+ readonly id: i0.InputSignal<string>;
4433
+ /** Selected option values, in the original options order. */
4434
+ readonly value: i0.ModelSignal<readonly string[]>;
4435
+ /** Fires with the new value whenever the selection changes. */
4436
+ readonly changed: i0.OutputEmitterRef<readonly string[]>;
4437
+ readonly isOpen: i0.WritableSignal<boolean>;
4438
+ readonly searchTerm: i0.WritableSignal<string>;
4439
+ /** Index into `filteredOptions()` for keyboard navigation. `-1` when none focused. */
4440
+ readonly focusedIndex: i0.WritableSignal<number>;
4441
+ private readonly _formDisabled;
4442
+ private onChange;
4443
+ private onTouched;
4444
+ readonly isDisabled: i0.Signal<boolean>;
4445
+ readonly hasError: i0.Signal<boolean>;
4446
+ readonly showError: i0.Signal<boolean>;
4447
+ readonly showHint: i0.Signal<boolean>;
4448
+ /** Set-backed lookup for `selectedSet().has(value)`. */
4449
+ readonly selectedSet: i0.Signal<Set<string>>;
4450
+ /** Options matching the current search term (case-insensitive substring on label). */
4451
+ readonly filteredOptions: i0.Signal<readonly SelectOption[]>;
4452
+ /** Currently selected options, ordered to match the input `options`. */
4453
+ readonly selectedOptions: i0.Signal<readonly SelectOption[]>;
4454
+ readonly hasValue: i0.Signal<boolean>;
4455
+ /** Chips visible inside the trigger, capped by `maxVisibleChips`. */
4456
+ readonly visibleChips: i0.Signal<readonly SelectOption[]>;
4457
+ /** Count behind the "+N more" pill, or `0` when all chips fit. */
4458
+ readonly hiddenChipCount: i0.Signal<number>;
4459
+ /** Tri-state of the Select-all checkbox over the **currently filtered** list. */
4460
+ readonly selectAllState: i0.Signal<"some" | "none" | "all">;
4461
+ readonly resolvedPlaceholder: i0.Signal<string>;
4462
+ readonly resolvedSearchPlaceholder: i0.Signal<string>;
4463
+ readonly triggerClasses: i0.Signal<{
4464
+ [x: string]: boolean;
4465
+ 'ea-multi-select__trigger--error': boolean;
4466
+ 'ea-multi-select__trigger--open': boolean;
4467
+ 'ea-multi-select__trigger--disabled': boolean;
4468
+ 'ea-multi-select__trigger--placeholder': boolean;
4469
+ }>;
4470
+ writeValue(val: readonly string[] | null | undefined): void;
4471
+ registerOnChange(fn: (value: readonly string[]) => void): void;
4472
+ registerOnTouched(fn: () => void): void;
4473
+ setDisabledState(isDisabled: boolean): void;
4474
+ toggle(): void;
4475
+ close(): void;
4476
+ /** Called by `<ea-popover>` when the user clicks outside or scrolls. */
4477
+ onPopoverCloseRequested(): void;
4478
+ /** Toggle one option's membership in the selection. */
4479
+ toggleOption(opt: SelectOption): void;
4480
+ /**
4481
+ * Remove a single chip from the trigger. `<ea-tag>` already stops the
4482
+ * click from bubbling to the trigger's `(click)`, so no event handling
4483
+ * is needed here.
4484
+ */
4485
+ removeChip(opt: SelectOption): void;
4486
+ /** Clear every selection via the trigger × button. */
4487
+ clear(event: Event): void;
4488
+ /**
4489
+ * Toggle the Select-all checkbox. If any filtered option is unselected, the
4490
+ * action selects all filtered. Otherwise, the action removes every filtered
4491
+ * value from the selection. Disabled options are skipped either way.
4492
+ */
4493
+ toggleSelectAll(): void;
4494
+ onSearchInput(event: Event): void;
4495
+ handleTriggerKeydown(event: KeyboardEvent): void;
4496
+ /**
4497
+ * Keyboard navigation inside the popover. Bound to both the search input
4498
+ * and each option row; Space passes through to the search input naturally
4499
+ * so users can type spaces in their query.
4500
+ */
4501
+ handlePopoverKeydown(event: KeyboardEvent): void;
4502
+ private focusSearchWhenReady;
4503
+ /** Reorder a value-set against the input `options` array. */
4504
+ private orderedValues;
4505
+ private resetEditState;
4506
+ private commit;
4507
+ static ɵfac: i0.ɵɵFactoryDeclaration<MultiSelectComponent, never>;
4508
+ 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>;
4509
+ }
4510
+
4250
4511
  /** Horizontal alignment of paginator controls within their container. */
4251
4512
  type PaginatorAlign = 'left' | 'center' | 'right';
4252
4513
  /** Snapshot of the paginator's page and page size. */
@@ -4289,6 +4550,141 @@ declare class PaginatorComponent {
4289
4550
  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>;
4290
4551
  }
4291
4552
 
4553
+ /**
4554
+ * Placement of the popover relative to its anchor. Each placement names the
4555
+ * side of the anchor the popover attaches to, optionally followed by a corner
4556
+ * suffix (`-start` or `-end`) that decides the alignment along the perpendicular
4557
+ * axis. The plain side names (`top`, `bottom`, `left`, `right`) centre the
4558
+ * popover on that axis.
4559
+ */
4560
+ type PopoverPlacement = 'top' | 'top-start' | 'top-end' | 'bottom' | 'bottom-start' | 'bottom-end' | 'left' | 'right';
4561
+ interface PopoverPositionResult {
4562
+ /** Top coordinate in viewport (px); pairs with `position: fixed`. */
4563
+ readonly top: number;
4564
+ /** Left coordinate in viewport (px). */
4565
+ readonly left: number;
4566
+ /** Width hint when the popover should match the anchor's width. */
4567
+ readonly width?: number;
4568
+ /** Effective placement after any flip logic ran. */
4569
+ readonly placement: PopoverPlacement;
4570
+ }
4571
+ interface PopoverPositionOptions {
4572
+ readonly placement: PopoverPlacement;
4573
+ /** Gap in px between the anchor and the popover. Default 4. */
4574
+ readonly offset?: number;
4575
+ /** Flip to the opposite side when the requested side overflows the viewport. Default true. */
4576
+ readonly flip?: boolean;
4577
+ /** Clamp inside the viewport when the popover still overflows after any flip. Default true. */
4578
+ readonly clamp?: boolean;
4579
+ /** Margin from the viewport edge in px when clamping. Default 8. */
4580
+ readonly margin?: number;
4581
+ /** Set the popover's width to match the anchor's. Useful for dropdown-style menus. */
4582
+ readonly matchAnchorWidth?: boolean;
4583
+ }
4584
+ interface Rect {
4585
+ readonly width: number;
4586
+ readonly height: number;
4587
+ }
4588
+ interface AnchorRect extends Rect {
4589
+ readonly top: number;
4590
+ readonly bottom: number;
4591
+ readonly left: number;
4592
+ readonly right: number;
4593
+ }
4594
+ interface Viewport {
4595
+ readonly width: number;
4596
+ readonly height: number;
4597
+ }
4598
+ /**
4599
+ * Computes the viewport-space top/left for a popover anchored to `anchorRect`,
4600
+ * applying optional flip-on-overflow and edge-clamp logic. Pure function — no
4601
+ * DOM access. Both `<ea-popover>` and `[eaTooltip]` consume this.
4602
+ *
4603
+ * @param anchorRect The anchor element's `getBoundingClientRect()`.
4604
+ * @param popoverRect Width and height of the popover (post-render measurement).
4605
+ * @param viewport Viewport dimensions (`window.innerWidth/Height`).
4606
+ * @param options Placement and behavior flags.
4607
+ */
4608
+ declare function computePopoverPosition(anchorRect: AnchorRect, popoverRect: Rect, viewport: Viewport, options: PopoverPositionOptions): PopoverPositionResult;
4609
+
4610
+ /** ARIA role to apply to the popover surface. */
4611
+ type PopoverRole = 'menu' | 'listbox' | 'dialog' | 'tooltip' | 'grid';
4612
+ /**
4613
+ * How the popover should respond to scroll / resize events while open.
4614
+ *
4615
+ * - `reposition` (default): re-measure the anchor and update the popover's
4616
+ * coordinates so it stays attached. Suitable for menus and tooltips.
4617
+ * - `close`: request close. Suitable for dropdown lists and the colour-picker
4618
+ * popover, where re-tracking a tall popover during a scroll feels intrusive.
4619
+ * - `ignore`: do nothing. The popover stays at its initial coordinates and
4620
+ * may visually detach from a scrolling anchor — useful when the anchor is
4621
+ * guaranteed not to move (e.g. inside a non-scrolling region).
4622
+ */
4623
+ type PopoverScrollBehavior = 'reposition' | 'close' | 'ignore';
4624
+ /**
4625
+ * Floating-element primitive. Renders projected content as `position: fixed`
4626
+ * anchored to an external element, with flip-on-overflow, viewport clamping,
4627
+ * outside-click and Escape dismissal, and SSR-safe scroll / resize handling.
4628
+ *
4629
+ * The primitive is intentionally low-level: a parent component drives the
4630
+ * `[open]` state and listens for `(closeRequested)` to mirror it back. Internal
4631
+ * library components (`<ea-menu>`, `<ea-dropdown>`, `<ea-color-picker>`,
4632
+ * `<ea-date-picker>`, `[eaTooltip]`) compose on top of it; downstream apps can
4633
+ * use it directly to build their own popover-based UI.
4634
+ *
4635
+ * @example
4636
+ * ```html
4637
+ * <button #trigger (click)="open.set(!open())">Open</button>
4638
+ * <ea-popover [anchor]="trigger" [open]="open()" (closeRequested)="open.set(false)">
4639
+ * <div>Popover content</div>
4640
+ * </ea-popover>
4641
+ * ```
4642
+ */
4643
+ declare class PopoverComponent {
4644
+ private readonly destroyRef;
4645
+ private readonly surfaceEl;
4646
+ /** Anchor element the popover positions itself against. */
4647
+ readonly anchor: i0.InputSignal<HTMLElement | ElementRef<HTMLElement> | undefined>;
4648
+ /** Whether the popover is currently open. */
4649
+ readonly open: i0.InputSignal<boolean>;
4650
+ /** Where the popover attaches relative to the anchor. */
4651
+ readonly placement: i0.InputSignal<PopoverPlacement>;
4652
+ /** ARIA role applied to the popover surface. */
4653
+ readonly role: i0.InputSignal<PopoverRole>;
4654
+ /** Accessible label. Falls back to nothing; consumers should provide one when no visible heading is in the popover. */
4655
+ readonly ariaLabel: i0.InputSignal<string | undefined>;
4656
+ /** DOM id for the surface so trigger elements can reference it via aria-controls. */
4657
+ readonly surfaceId: i0.InputSignal<string>;
4658
+ /** Gap in px between the anchor and the popover. */
4659
+ readonly offset: i0.InputSignal<number>;
4660
+ /** Flip to the opposite side when the requested side overflows the viewport. */
4661
+ readonly flip: i0.InputSignal<boolean>;
4662
+ /** Clamp the popover inside the viewport when it would otherwise overflow. */
4663
+ readonly clamp: i0.InputSignal<boolean>;
4664
+ /** Set the popover's `min-width` to match the anchor's width (dropdown pattern). */
4665
+ readonly matchAnchorWidth: i0.InputSignal<boolean>;
4666
+ /** Close on click outside the popover and the anchor. */
4667
+ readonly closeOnOutsideClick: i0.InputSignal<boolean>;
4668
+ /** Close on Escape. */
4669
+ readonly closeOnEscape: i0.InputSignal<boolean>;
4670
+ /** What to do on scroll / resize while open. */
4671
+ readonly scrollBehavior: i0.InputSignal<PopoverScrollBehavior>;
4672
+ /** Requested close. The parent should mirror this into `[open]`. */
4673
+ readonly closeRequested: i0.OutputEmitterRef<void>;
4674
+ private readonly position;
4675
+ /** True placement after flip, for class-based styling (e.g. arrow direction). */
4676
+ readonly effectivePlacement: i0.Signal<PopoverPlacement>;
4677
+ /** Inline style applied to the surface element. */
4678
+ readonly surfaceStyle: i0.Signal<Record<string, string>>;
4679
+ constructor();
4680
+ private resolveAnchor;
4681
+ private reposition;
4682
+ onDocumentClick(event: MouseEvent): void;
4683
+ onEscape(): void;
4684
+ static ɵfac: i0.ɵɵFactoryDeclaration<PopoverComponent, never>;
4685
+ 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>;
4686
+ }
4687
+
4292
4688
  /** Semantic colour scheme of the progress bar. */
4293
4689
  type ProgressBarVariant = 'default' | 'success' | 'warning' | 'error' | 'info';
4294
4690
  /** Visual height of the progress bar. */
@@ -4382,6 +4778,171 @@ declare class RadioComponent {
4382
4778
  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>;
4383
4779
  }
4384
4780
 
4781
+ /** Visual size of the range slider track and thumbs. */
4782
+ type RangeSliderSize = 'sm' | 'md' | 'lg';
4783
+ /** Tuple model emitted by the range slider — `[low, high]`, with `low <= high`. */
4784
+ type RangeSliderValue = readonly [number, number];
4785
+ /** Identifies which of the two thumbs an event affects. */
4786
+ type Thumb = 'low' | 'high';
4787
+ /**
4788
+ * Two-thumb extension of `<ea-slider>`. Drives a `[low, high]` numeric range
4789
+ * with pointer drag (the closer thumb to the pointer responds) and full
4790
+ * keyboard navigation per thumb (arrows / PageUp / PageDown / Home / End).
4791
+ * Tab moves between thumbs. Configurable `min`, `max`, `step`, optional value
4792
+ * display, and integrates with Angular forms via `ControlValueAccessor`.
4793
+ *
4794
+ * Overlap rule: a thumb cannot cross past the other; once it reaches the
4795
+ * opposite thumb's position, it clamps to that boundary. Drag-induced
4796
+ * overlap (where the user yanks the low thumb past the high) is resolved by
4797
+ * keeping the moving thumb on its side and the other thumb pinned.
4798
+ */
4799
+ declare class RangeSliderComponent implements ControlValueAccessor {
4800
+ readonly trackEl: i0.Signal<ElementRef<HTMLDivElement> | undefined>;
4801
+ readonly label: i0.InputSignal<string | undefined>;
4802
+ readonly hint: i0.InputSignal<string | undefined>;
4803
+ readonly errorMsg: i0.InputSignal<string | undefined>;
4804
+ readonly min: i0.InputSignal<number>;
4805
+ readonly max: i0.InputSignal<number>;
4806
+ readonly step: i0.InputSignal<number>;
4807
+ readonly size: i0.InputSignal<RangeSliderSize>;
4808
+ readonly disabled: i0.InputSignal<boolean>;
4809
+ readonly required: i0.InputSignal<boolean>;
4810
+ readonly showValue: i0.InputSignal<boolean>;
4811
+ readonly showMinMaxLabels: i0.InputSignal<boolean>;
4812
+ readonly formatValue: i0.InputSignal<(value: number) => string>;
4813
+ /** Accessible label for the low (start) thumb. Falls back to the field label when omitted. */
4814
+ readonly ariaLabelLow: i0.InputSignal<string | undefined>;
4815
+ /** Accessible label for the high (end) thumb. Falls back to the field label when omitted. */
4816
+ readonly ariaLabelHigh: i0.InputSignal<string | undefined>;
4817
+ readonly id: i0.InputSignal<string>;
4818
+ readonly value: i0.ModelSignal<RangeSliderValue>;
4819
+ /** Fires with the new `[low, high]` tuple whenever either thumb moves. */
4820
+ readonly changed: i0.OutputEmitterRef<RangeSliderValue>;
4821
+ private readonly _formDisabled;
4822
+ readonly dragging: i0.WritableSignal<Thumb | null>;
4823
+ private onChange;
4824
+ private onTouched;
4825
+ readonly isDisabled: i0.Signal<boolean>;
4826
+ /** Clamped, ordered `[low, high]` tuple — `low <= high`, both within `[min, max]`. */
4827
+ readonly clampedValue: i0.Signal<RangeSliderValue>;
4828
+ readonly lowPercent: i0.Signal<number>;
4829
+ readonly highPercent: i0.Signal<number>;
4830
+ readonly hasError: i0.Signal<boolean>;
4831
+ readonly showError: i0.Signal<boolean>;
4832
+ readonly showHint: i0.Signal<boolean>;
4833
+ readonly hostClasses: i0.Signal<{
4834
+ [x: string]: boolean;
4835
+ 'ea-range-slider--error': boolean;
4836
+ 'ea-range-slider--disabled': boolean;
4837
+ 'ea-range-slider--dragging': boolean;
4838
+ }>;
4839
+ writeValue(val: RangeSliderValue | null | undefined): void;
4840
+ registerOnChange(fn: (value: RangeSliderValue) => void): void;
4841
+ registerOnTouched(fn: () => void): void;
4842
+ setDisabledState(isDisabled: boolean): void;
4843
+ handleKeydown(event: KeyboardEvent, thumb: Thumb): void;
4844
+ handleBlur(): void;
4845
+ handleTrackPointerDown(event: PointerEvent): void;
4846
+ handleTrackPointerMove(event: PointerEvent): void;
4847
+ handleTrackPointerUp(event: PointerEvent): void;
4848
+ private toPercent;
4849
+ private pointerToValue;
4850
+ /** Snap to step, clamp to `[min, max]`, then constrain by the opposite thumb. */
4851
+ private commitThumb;
4852
+ static ɵfac: i0.ɵɵFactoryDeclaration<RangeSliderComponent, never>;
4853
+ 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>;
4854
+ }
4855
+
4856
+ /** Per-position render state, computed from the current display value. */
4857
+ type RatingStarState = 'empty' | 'half' | 'full';
4858
+ /** Visual size of the rating. */
4859
+ type RatingSize = 'sm' | 'md' | 'lg';
4860
+ /**
4861
+ * Star-based rating input. Supports whole-star or half-star granularity (via
4862
+ * `allowHalf`), hover preview, keyboard navigation (Left/Right/Up/Down,
4863
+ * Home/End, 0-9 to jump), and a read-only display mode.
4864
+ *
4865
+ * The default `<ea-icon-star>` can be swapped via the `iconClass` input
4866
+ * (any standalone Angular component reference, e.g. `[iconClass]="HeartIconComponent"`).
4867
+ * When `allowHalf` is true, the half-position render uses `halfIconClass`
4868
+ * (default `<ea-icon-left-half-star>`); if a consumer supplies their own
4869
+ * `iconClass` without a matching `halfIconClass`, the half is rendered with the
4870
+ * default left-half-star.
4871
+ *
4872
+ * Integrates with Angular forms via `ControlValueAccessor`. Emits the new
4873
+ * value through the `value` model (numeric 0..max in 1 or 0.5 increments).
4874
+ */
4875
+ declare class RatingComponent implements ControlValueAccessor {
4876
+ private readonly starsEl;
4877
+ protected readonly i18n: EagamiI18nService;
4878
+ readonly label: i0.InputSignal<string | undefined>;
4879
+ readonly hint: i0.InputSignal<string | undefined>;
4880
+ readonly errorMsg: i0.InputSignal<string | undefined>;
4881
+ readonly size: i0.InputSignal<RatingSize>;
4882
+ readonly max: i0.InputSignal<number>;
4883
+ readonly allowHalf: i0.InputSignal<boolean>;
4884
+ readonly readonly: i0.InputSignal<boolean>;
4885
+ readonly disabled: i0.InputSignal<boolean>;
4886
+ readonly required: i0.InputSignal<boolean>;
4887
+ /** Clicking the current value clears the rating back to 0. */
4888
+ readonly clearable: i0.InputSignal<boolean>;
4889
+ /** Standalone component class rendered for empty / full positions. */
4890
+ readonly iconClass: i0.InputSignal<Type<unknown>>;
4891
+ /** Standalone component class rendered for half positions (when `allowHalf` is true). */
4892
+ readonly halfIconClass: i0.InputSignal<Type<unknown>>;
4893
+ readonly id: i0.InputSignal<string>;
4894
+ /** Current rating value, 0..max in 1 (or 0.5 when `allowHalf`) increments. */
4895
+ readonly value: i0.ModelSignal<number>;
4896
+ /** Fires when the user pre-selects a value via hover; `null` when the cursor leaves. */
4897
+ readonly hoverChanged: i0.OutputEmitterRef<number | null>;
4898
+ protected readonly hoverValue: i0.WritableSignal<number | null>;
4899
+ protected readonly isFocused: i0.WritableSignal<boolean>;
4900
+ private readonly _formDisabled;
4901
+ private onChange;
4902
+ private onTouched;
4903
+ protected readonly isDisabled: i0.Signal<boolean>;
4904
+ protected readonly isInteractive: i0.Signal<boolean>;
4905
+ protected readonly hasError: i0.Signal<boolean>;
4906
+ protected readonly showError: i0.Signal<boolean>;
4907
+ protected readonly showHint: i0.Signal<boolean>;
4908
+ protected readonly step: i0.Signal<1 | 0.5>;
4909
+ /** Value used to render the stars (hover preview wins over committed value). */
4910
+ protected readonly displayValue: i0.Signal<number>;
4911
+ /** 1..max positions for the @for loop. */
4912
+ protected readonly positions: i0.Signal<number[]>;
4913
+ protected readonly hostClasses: i0.Signal<{
4914
+ [x: string]: boolean;
4915
+ 'ea-rating-field--error': boolean;
4916
+ 'ea-rating-field--disabled': boolean;
4917
+ 'ea-rating-field--readonly': boolean;
4918
+ 'ea-rating-field--focused': boolean;
4919
+ }>;
4920
+ protected readonly errorId: i0.Signal<string>;
4921
+ protected readonly hintId: i0.Signal<string>;
4922
+ protected readonly describedBy: i0.Signal<string | null>;
4923
+ protected readonly resolvedAriaLabel: i0.Signal<string>;
4924
+ /** Resolves the render state for star `pos` against the current display value. */
4925
+ protected stateFor(pos: number): RatingStarState;
4926
+ /** Component class to instantiate for star `pos`. */
4927
+ protected iconForState(state: RatingStarState): Type<unknown>;
4928
+ protected starAriaLabel(pos: number): string;
4929
+ writeValue(value: number | null | undefined): void;
4930
+ registerOnChange(fn: (value: number) => void): void;
4931
+ registerOnTouched(fn: () => void): void;
4932
+ setDisabledState(isDisabled: boolean): void;
4933
+ protected onPointerMove(event: PointerEvent, pos: number): void;
4934
+ protected onPointerLeave(): void;
4935
+ protected onClick(event: MouseEvent, pos: number): void;
4936
+ protected onFocus(): void;
4937
+ protected onBlur(): void;
4938
+ protected onKeydown(event: KeyboardEvent): void;
4939
+ private commit;
4940
+ private clamp;
4941
+ private computePointerValue;
4942
+ static ɵfac: i0.ɵɵFactoryDeclaration<RatingComponent, never>;
4943
+ static ɵcmp: i0.ɵɵComponentDeclaration<RatingComponent, "ea-rating", never, { "label": { "alias": "label"; "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; }; "max": { "alias": "max"; "required": false; "isSignal": true; }; "allowHalf": { "alias": "allowHalf"; "required": false; "isSignal": true; }; "readonly": { "alias": "readonly"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "clearable": { "alias": "clearable"; "required": false; "isSignal": true; }; "iconClass": { "alias": "iconClass"; "required": false; "isSignal": true; }; "halfIconClass": { "alias": "halfIconClass"; "required": false; "isSignal": true; }; "id": { "alias": "id"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "hoverChanged": "hoverChanged"; }, never, never, true, never>;
4944
+ }
4945
+
4385
4946
  /** Visual size of the segmented control. */
4386
4947
  type SegmentedSize = 'sm' | 'md' | 'lg';
4387
4948
  /**
@@ -4531,6 +5092,71 @@ declare class SpinnerComponent {
4531
5092
  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>;
4532
5093
  }
4533
5094
 
5095
+ /**
5096
+ * Single step within an `<ea-stepper>`. Registers itself with the parent on
5097
+ * init, exposes its `label` / `completed` / `optional` flags, and shows its
5098
+ * projected content when active.
5099
+ */
5100
+ declare class StepComponent implements OnInit, OnDestroy {
5101
+ private readonly stepper;
5102
+ readonly label: i0.InputSignal<string>;
5103
+ readonly completed: i0.InputSignal<boolean>;
5104
+ readonly disabled: i0.InputSignal<boolean>;
5105
+ readonly optional: i0.InputSignal<boolean>;
5106
+ readonly id: i0.InputSignal<string>;
5107
+ readonly isActive: i0.Signal<boolean>;
5108
+ ngOnInit(): void;
5109
+ ngOnDestroy(): void;
5110
+ static ɵfac: i0.ɵɵFactoryDeclaration<StepComponent, never>;
5111
+ 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>;
5112
+ }
5113
+
5114
+ /** Visual size of the stepper. */
5115
+ type StepperSize = 'sm' | 'md' | 'lg';
5116
+ /**
5117
+ * Multi-step navigation paired with content panels. Child `<ea-step>`
5118
+ * components register themselves automatically and the active panel is
5119
+ * shown based on the `activeStep` (zero-based index) two-way binding.
5120
+ *
5121
+ * In `linear` mode, steps cannot be navigated to until all earlier
5122
+ * non-optional steps are marked `completed`. Otherwise any step can be
5123
+ * clicked. ArrowLeft / ArrowRight walk through reachable steps; Home/End
5124
+ * jump to the extremes.
5125
+ */
5126
+ declare class StepperComponent {
5127
+ protected readonly i18n: EagamiI18nService;
5128
+ readonly registeredSteps: i0.WritableSignal<StepComponent[]>;
5129
+ readonly activeStep: i0.ModelSignal<number>;
5130
+ readonly linear: i0.InputSignal<boolean>;
5131
+ readonly size: i0.InputSignal<StepperSize>;
5132
+ readonly disabled: i0.InputSignal<boolean>;
5133
+ readonly id: i0.InputSignal<string>;
5134
+ /** Fires with the new active step index when the user navigates. */
5135
+ readonly changed: i0.OutputEmitterRef<number>;
5136
+ readonly hostClasses: i0.Signal<{
5137
+ [x: string]: boolean;
5138
+ 'ea-stepper--disabled': boolean;
5139
+ }>;
5140
+ registerStep(step: StepComponent): void;
5141
+ unregisterStep(step: StepComponent): void;
5142
+ /** Returns the index of a given step, or `-1` if it isn't registered. */
5143
+ indexOf(step: StepComponent): number;
5144
+ /**
5145
+ * True when the user can navigate directly to the step at `index`. In
5146
+ * non-linear mode this is true for any non-disabled step; in linear mode,
5147
+ * every non-optional earlier step must also be marked `completed`.
5148
+ */
5149
+ canNavigateTo(index: number): boolean;
5150
+ /** Activate the step at `index` if reachable. */
5151
+ selectStep(index: number): void;
5152
+ handleKeydown(event: KeyboardEvent): void;
5153
+ private nextReachable;
5154
+ private firstReachable;
5155
+ private lastReachable;
5156
+ static ɵfac: i0.ɵɵFactoryDeclaration<StepperComponent, never>;
5157
+ 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>;
5158
+ }
5159
+
4534
5160
  /** Visual size of the switch. */
4535
5161
  type SwitchSize = 'sm' | 'md' | 'lg';
4536
5162
  /**
@@ -4704,6 +5330,165 @@ declare class TextareaComponent implements ControlValueAccessor {
4704
5330
  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>;
4705
5331
  }
4706
5332
 
5333
+ /** Visual size of the time picker trigger. */
5334
+ type TimePickerSize = 'sm' | 'md' | 'lg';
5335
+ /** Display format for the trigger label. The wire value is always 24h. */
5336
+ type TimePickerFormat = '12h' | '24h';
5337
+ /** Internal identifier for the three unit columns. */
5338
+ type Unit = 'hours' | 'minutes' | 'seconds';
5339
+ interface ParsedTime {
5340
+ readonly hours: number;
5341
+ readonly minutes: number;
5342
+ readonly seconds: number;
5343
+ }
5344
+ /**
5345
+ * Pops a stepper UI for selecting an `HH:MM[:SS]` time. The wire value is
5346
+ * always a 24-hour string (`"14:30"` or `"14:30:00"`); the `format` input
5347
+ * toggles the trigger's display between 12-hour and 24-hour styles. Supports
5348
+ * configurable steps for minutes and seconds, optional seconds column, and
5349
+ * integrates with Angular forms via `ControlValueAccessor`.
5350
+ *
5351
+ * Keyboard: Tab moves between the hour, minute, (seconds), and AM/PM columns.
5352
+ * Each spinner accepts ArrowUp/ArrowDown to step by 1 (or by the configured
5353
+ * step), PageUp/PageDown for a coarser bump, and digit keys to type a value
5354
+ * directly. After typing two digits (or one digit that already maxes the
5355
+ * unit), focus auto-advances to the next column. Backspace clears the typed
5356
+ * buffer; Escape closes the popover.
5357
+ */
5358
+ declare class TimePickerComponent implements ControlValueAccessor {
5359
+ protected readonly triggerEl: i0.Signal<ElementRef<HTMLButtonElement> | undefined>;
5360
+ protected readonly hoursEl: i0.Signal<ElementRef<HTMLInputElement> | undefined>;
5361
+ protected readonly minutesEl: i0.Signal<ElementRef<HTMLInputElement> | undefined>;
5362
+ protected readonly secondsEl: i0.Signal<ElementRef<HTMLInputElement> | undefined>;
5363
+ protected readonly i18n: EagamiI18nService;
5364
+ private readonly destroyRef;
5365
+ private readonly injector;
5366
+ readonly label: i0.InputSignal<string | undefined>;
5367
+ readonly placeholder: i0.InputSignal<string | undefined>;
5368
+ readonly size: i0.InputSignal<TimePickerSize>;
5369
+ readonly disabled: i0.InputSignal<boolean>;
5370
+ readonly readonly: i0.InputSignal<boolean>;
5371
+ readonly required: i0.InputSignal<boolean>;
5372
+ readonly hint: i0.InputSignal<string | undefined>;
5373
+ readonly errorMsg: i0.InputSignal<string | undefined>;
5374
+ /** Display format for the trigger label. Wire value is always 24h. */
5375
+ readonly format: i0.InputSignal<TimePickerFormat>;
5376
+ readonly includeSeconds: i0.InputSignal<boolean>;
5377
+ readonly minuteStep: i0.InputSignal<number>;
5378
+ readonly secondStep: i0.InputSignal<number>;
5379
+ readonly id: i0.InputSignal<string>;
5380
+ /** `"HH:MM"` or `"HH:MM:SS"` in 24-hour notation, or `null` when unset. */
5381
+ readonly value: i0.ModelSignal<string | null>;
5382
+ /** Fires with the new value whenever the user changes the time. */
5383
+ readonly changed: i0.OutputEmitterRef<string | null>;
5384
+ readonly isOpen: i0.WritableSignal<boolean>;
5385
+ /** Typed-digit buffer for the currently focused column, or `null` when idle. */
5386
+ readonly editBuffer: i0.WritableSignal<{
5387
+ unit: Unit;
5388
+ digits: string;
5389
+ } | null>;
5390
+ private readonly _formDisabled;
5391
+ private onChange;
5392
+ private onTouched;
5393
+ /** Long-press timers for the chevron buttons. Cleared on release/destroy. */
5394
+ private holdDelayTimer;
5395
+ private holdIntervalTimer;
5396
+ private holdStartedAt;
5397
+ readonly isDisabled: i0.Signal<boolean>;
5398
+ readonly hasError: i0.Signal<boolean>;
5399
+ readonly showError: i0.Signal<boolean>;
5400
+ readonly showHint: i0.Signal<boolean>;
5401
+ /** Parsed `[hh, mm, ss]` from the current value, defaulting to midnight. */
5402
+ readonly parsed: i0.Signal<ParsedTime>;
5403
+ /** True when the picker has a non-null value. Drives the clear button + placeholder fallback. */
5404
+ readonly hasValue: i0.Signal<boolean>;
5405
+ /** Hours digit displayed in the popover stepper. Honors the `format` input. */
5406
+ readonly displayHours: i0.Signal<number>;
5407
+ /**
5408
+ * Text shown in a column's value cell. Reflects the typed-digit buffer when
5409
+ * the user is mid-edit on that column; otherwise renders the committed
5410
+ * value. Hours pad to two digits in 24h mode only (so 9 AM still reads as
5411
+ * "9", but 09:00 in 24h reads as "09").
5412
+ */
5413
+ hoursText: i0.Signal<string>;
5414
+ minutesText: i0.Signal<string>;
5415
+ secondsText: i0.Signal<string>;
5416
+ /** `'AM' | 'PM'` for 12h mode; `null` in 24h. */
5417
+ readonly period: i0.Signal<"AM" | "PM" | null>;
5418
+ /** Localized text shown on the trigger. Falls back to placeholder when no value. */
5419
+ readonly displayValue: i0.Signal<string | null>;
5420
+ readonly resolvedPlaceholder: i0.Signal<string>;
5421
+ readonly triggerClasses: i0.Signal<{
5422
+ [x: string]: boolean;
5423
+ 'ea-time-picker__trigger--error': boolean;
5424
+ 'ea-time-picker__trigger--open': boolean;
5425
+ 'ea-time-picker__trigger--disabled': boolean;
5426
+ 'ea-time-picker__trigger--placeholder': boolean;
5427
+ }>;
5428
+ writeValue(val: string | null | undefined): void;
5429
+ registerOnChange(fn: (value: string | null) => void): void;
5430
+ registerOnTouched(fn: () => void): void;
5431
+ setDisabledState(isDisabled: boolean): void;
5432
+ constructor();
5433
+ toggle(): void;
5434
+ /**
5435
+ * Push focus into the hours input once the popover surface has been
5436
+ * rendered. `afterNextRender` guarantees the DOM has been updated (and the
5437
+ * surface is no longer `display: none`) before we call `.focus()`.
5438
+ */
5439
+ private focusHoursWhenReady;
5440
+ close(): void;
5441
+ /** Called by `<ea-popover>` when the user clicks outside or scrolls. */
5442
+ onPopoverCloseRequested(): void;
5443
+ clear(event: Event): void;
5444
+ handleTriggerKeydown(event: KeyboardEvent): void;
5445
+ /** Stepper button or keyboard arrow nudges one column up or down. */
5446
+ step(unit: Unit, direction: 1 | -1): void;
5447
+ /**
5448
+ * Begin a long-press repeat on a chevron button. Fires once immediately,
5449
+ * then after a `HOLD_INITIAL_DELAY` pause repeats at `HOLD_INTERVAL_MS`,
5450
+ * accelerating to `HOLD_FAST_INTERVAL_MS` after `HOLD_ACCELERATE_AFTER_MS`
5451
+ * of continuous holding. Pointer up / leave / cancel stops the repeat.
5452
+ */
5453
+ startHold(unit: Unit, direction: 1 | -1, event: Event): void;
5454
+ /** End any in-flight long-press repeat. Idempotent. */
5455
+ stopHold(): void;
5456
+ /** Switches the AM/PM period in 12h mode by toggling the 12-hour offset. */
5457
+ togglePeriod(): void;
5458
+ handlePopoverKeydown(event: KeyboardEvent, unit: Unit): void;
5459
+ /** Select-all on focus so the first keystroke replaces the current value. */
5460
+ onSpinnerFocus(event: FocusEvent): void;
5461
+ /**
5462
+ * Native `(input)` event: the typed value is already in `el.value`. Strip
5463
+ * non-digits, update the buffer (which drives the displayed text), and
5464
+ * commit + auto-advance once the column is full or a third digit would
5465
+ * overflow.
5466
+ */
5467
+ onSpinnerInput(unit: Unit, event: Event): void;
5468
+ /** Commits the current buffer if any. Wired to each input's `(blur)`. */
5469
+ onSpinnerBlur(): void;
5470
+ /** True when no digit `0`–`9` can validly extend the current buffer. */
5471
+ private cannotExtend;
5472
+ /** Commits any pending buffer. Called on blur, on arrow keys, on Tab. */
5473
+ private flushBuffer;
5474
+ /** Writes the buffered digits into the value and clears the buffer. */
5475
+ private commitDigits;
5476
+ /**
5477
+ * Map a typed hours value back to 24h. In 24h mode the typed value is the
5478
+ * hour. In 12h mode the typed value is interpreted in the current period
5479
+ * (AM → 12 maps to 0, others stay; PM → 12 stays, others add 12).
5480
+ */
5481
+ private hoursFromTyped;
5482
+ private minFor;
5483
+ private maxFor;
5484
+ /** Move focus to the next unit column, looping back to hours at the end. */
5485
+ private advanceFocus;
5486
+ private nextUnit;
5487
+ private commit;
5488
+ static ɵfac: i0.ɵɵFactoryDeclaration<TimePickerComponent, never>;
5489
+ 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>;
5490
+ }
5491
+
4707
5492
  /** Semantic colour scheme of a toast. */
4708
5493
  type ToastVariant = 'default' | 'success' | 'warning' | 'error' | 'info';
4709
5494
  /** A single live toast notification rendered by `ea-toast`. */
@@ -4797,5 +5582,5 @@ declare class TooltipDirective implements OnDestroy {
4797
5582
  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>;
4798
5583
  }
4799
5584
 
4800
- 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, 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, 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 };
4801
- export type { AlertVariant, AutocompleteSize, AvatarEditorCropEvent, AvatarEditorCropState, AvatarEditorShape, AvatarShape, AvatarSize, 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, PaginatorAlign, PaginatorState, ProgressBarSize, ProgressBarVariant, RadioOrientation, RadioSize, SegmentedSize, SelectOption, SkeletonVariant, SliderSize, SpinnerSize, SwitchSize, TabsSize, TabsVariant, TagSize, TagVariant, TextareaResize, TextareaSize, Toast, ToastOptions, ToastVariant, TooltipPosition };
5585
+ 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, FileUploaderComponent, 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, RatingComponent, 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 };
5586
+ 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, FileUploaderRejection, FileUploaderRejectionReason, FileUploaderSize, IconCategory, IconComponentType, IconMeta, InputSize, InputType, MenuItemVariant, MenuPlacement, MultiSelectSize, PaginatorAlign, PaginatorState, PopoverPlacement, PopoverPositionOptions, PopoverPositionResult, PopoverRole, PopoverScrollBehavior, ProgressBarSize, ProgressBarVariant, RadioOrientation, RadioSize, RangeSliderSize, RangeSliderValue, RatingSize, RatingStarState, SegmentedSize, SelectOption, SkeletonVariant, SliderSize, SpinnerSize, StepperSize, SwitchSize, TabsSize, TabsVariant, TagSize, TagVariant, TextareaResize, TextareaSize, TimePickerFormat, TimePickerSize, Toast, ToastOptions, ToastVariant, TooltipPosition };