@eagami/ui 5.20.0 → 5.22.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.
@@ -733,6 +733,7 @@ declare class AutocompleteComponent implements ControlValueAccessor {
733
733
  [x: string]: boolean;
734
734
  'ea-autocomplete__wrapper--error': boolean;
735
735
  'ea-autocomplete__wrapper--focused': boolean;
736
+ 'ea-autocomplete__wrapper--readonly': boolean;
736
737
  'ea-autocomplete__wrapper--disabled': boolean;
737
738
  }>;
738
739
  readonly listboxClasses: _angular_core.Signal<{
@@ -1333,6 +1334,7 @@ declare class ColorPickerComponent implements ControlValueAccessor {
1333
1334
  'ea-color-picker__trigger--error': boolean;
1334
1335
  'ea-color-picker__trigger--open': boolean;
1335
1336
  'ea-color-picker__trigger--disabled': boolean;
1337
+ 'ea-color-picker__trigger--readonly': boolean;
1336
1338
  }>;
1337
1339
  readonly wrapperClasses: _angular_core.Signal<{
1338
1340
  [x: string]: boolean;
@@ -1557,7 +1559,7 @@ declare class CodeInputComponent implements ControlValueAccessor {
1557
1559
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<CodeInputComponent, "ea-code-input", never, { "label": { "alias": "label"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "length": { "alias": "length"; "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; }; "errorMessages": { "alias": "errorMessages"; "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; }; "allowAllChars": { "alias": "allowAllChars"; "required": false; "isSignal": true; }; "id": { "alias": "id"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "completed": "completed"; }, never, never, true, never>;
1558
1560
  }
1559
1561
 
1560
- /** Visual size of the date picker trigger. */
1562
+ /** Visual size of the date picker field. */
1561
1563
  type DatePickerSize = EaSize;
1562
1564
  /** Locale-aware date format used for the displayed value. */
1563
1565
  type DatePickerFormat = 'short' | 'medium' | 'long';
@@ -1575,17 +1577,21 @@ interface CalendarDay {
1575
1577
  isFocused: boolean;
1576
1578
  }
1577
1579
  /**
1578
- * Calendar popover for selecting a single date. Supports `min`/`max` bounds,
1579
- * configurable week start, locale-aware formatting via `Intl.DateTimeFormat`,
1580
- * and full keyboard navigation (arrows, PageUp/PageDown, Home/End, Enter,
1581
- * Escape). Integrates with Angular forms via `ControlValueAccessor`.
1580
+ * Date field with a calendar popover. The date can be typed straight into the
1581
+ * field in any reasonable shape (ISO, all-numeric in the locale's field order,
1582
+ * or with a month name) and is rewritten in the configured `format` on commit.
1583
+ * Supports `min`/`max` bounds, configurable week start, locale-aware formatting
1584
+ * via `Intl.DateTimeFormat`, and full keyboard navigation (arrows,
1585
+ * PageUp/PageDown, Home/End, Enter, Escape). Integrates with Angular forms via
1586
+ * `ControlValueAccessor`.
1582
1587
  */
1583
1588
  declare class DatePickerComponent implements ControlValueAccessor {
1584
- protected readonly triggerEl: _angular_core.Signal<ElementRef<HTMLButtonElement> | undefined>;
1589
+ protected readonly fieldEl: _angular_core.Signal<ElementRef<HTMLElement> | undefined>;
1590
+ protected readonly inputEl: _angular_core.Signal<ElementRef<HTMLInputElement> | undefined>;
1585
1591
  private readonly injector;
1586
1592
  protected readonly i18n: EagamiI18nService;
1587
1593
  readonly label: _angular_core.InputSignal<string | undefined>;
1588
- /** Placeholder shown when no date is selected. Defaults to the active locale's text. */
1594
+ /** Placeholder shown in the field when no date is selected. */
1589
1595
  readonly placeholder: _angular_core.InputSignal<string | undefined>;
1590
1596
  readonly size: _angular_core.InputSignal<EaSize>;
1591
1597
  readonly disabled: _angular_core.InputSignal<boolean>;
@@ -1609,6 +1615,9 @@ declare class DatePickerComponent implements ControlValueAccessor {
1609
1615
  readonly viewMonth: _angular_core.WritableSignal<number>;
1610
1616
  readonly focusedDate: _angular_core.WritableSignal<Date | null>;
1611
1617
  private readonly _formDisabled;
1618
+ private readonly isFocused;
1619
+ /** Entry in progress, held verbatim until it is committed or abandoned. */
1620
+ private readonly draft;
1612
1621
  private onChange;
1613
1622
  private onTouched;
1614
1623
  readonly isDisabled: _angular_core.Signal<boolean>;
@@ -1628,23 +1637,23 @@ declare class DatePickerComponent implements ControlValueAccessor {
1628
1637
  * Some browsers ship a reduced ICU that silently falls back to English for
1629
1638
  * less common locales, so a matching request is not a given. */
1630
1639
  private readonly intlLocalizesEffectiveLocale;
1631
- /** Placeholder text: explicit `placeholder` input, else the active locale's default. */
1640
+ /** Placeholder text, empty unless a `placeholder` is given. */
1632
1641
  readonly resolvedPlaceholder: _angular_core.Signal<string>;
1642
+ /** Accessible name when no `label` is given. */
1643
+ protected readonly fallbackLabel: _angular_core.Signal<string>;
1633
1644
  readonly dialogId: _angular_core.Signal<string>;
1634
- readonly triggerLabelledBy: _angular_core.Signal<string | null>;
1635
- readonly triggerClasses: _angular_core.Signal<{
1636
- [x: string]: boolean;
1637
- 'ea-date-picker__trigger--error': boolean;
1638
- 'ea-date-picker__trigger--open': boolean;
1639
- 'ea-date-picker__trigger--disabled': boolean;
1640
- }>;
1641
- readonly wrapperClasses: _angular_core.Signal<{
1642
- [x: string]: boolean;
1645
+ readonly fieldClasses: _angular_core.Signal<{
1646
+ 'ea-date-picker__field--focused': boolean;
1647
+ 'ea-date-picker__field--error': boolean;
1648
+ 'ea-date-picker__field--disabled': boolean;
1649
+ 'ea-date-picker__field--readonly': boolean;
1643
1650
  }>;
1644
1651
  readonly popoverClasses: _angular_core.Signal<{
1645
1652
  [x: string]: boolean;
1646
1653
  }>;
1647
1654
  readonly displayValue: _angular_core.Signal<string>;
1655
+ /** Field text: the entry in progress while typing, else the formatted value. */
1656
+ readonly inputText: _angular_core.Signal<string>;
1648
1657
  readonly monthYearLabel: _angular_core.Signal<string>;
1649
1658
  readonly weekdayLabels: _angular_core.Signal<string[]>;
1650
1659
  readonly weeks: _angular_core.Signal<CalendarDay[][]>;
@@ -1659,7 +1668,7 @@ declare class DatePickerComponent implements ControlValueAccessor {
1659
1668
  /** Closes the calendar popover. */
1660
1669
  close(): void;
1661
1670
  private focusFocusedDayCell;
1662
- /** Moves keyboard focus to the trigger button. */
1671
+ /** Moves keyboard focus to the date field. */
1663
1672
  focus(): void;
1664
1673
  selectDay(day: CalendarDay): void;
1665
1674
  /** Clears the selected date and emits `changed` with `null`. */
@@ -1676,7 +1685,13 @@ declare class DatePickerComponent implements ControlValueAccessor {
1676
1685
  */
1677
1686
  private pullFocusIntoView;
1678
1687
  goToToday(): void;
1679
- handleTriggerKeydown(event: KeyboardEvent): void;
1688
+ protected onInput(event: Event): void;
1689
+ protected onInputFocus(): void;
1690
+ protected onInputBlur(): void;
1691
+ protected handleInputKeydown(event: KeyboardEvent): void;
1692
+ private commitDraft;
1693
+ private applyValue;
1694
+ private isOutOfRange;
1680
1695
  handleGridKeydown(event: KeyboardEvent): void;
1681
1696
  /** Called by `<ea-popover>` when the user clicks outside the picker. */
1682
1697
  onPopoverCloseRequested(): void;
@@ -1901,6 +1916,7 @@ declare class DropdownComponent implements ControlValueAccessor {
1901
1916
  'ea-dropdown__trigger--error': boolean;
1902
1917
  'ea-dropdown__trigger--open': boolean;
1903
1918
  'ea-dropdown__trigger--disabled': boolean;
1919
+ 'ea-dropdown__trigger--readonly': boolean;
1904
1920
  }>;
1905
1921
  readonly menuClasses: _angular_core.Signal<{
1906
1922
  [x: string]: boolean;
@@ -2094,6 +2110,11 @@ declare class FileUploaderComponent implements ControlValueAccessor {
2094
2110
  readonly size: _angular_core.InputSignal<EaSize>;
2095
2111
  readonly disabled: _angular_core.InputSignal<boolean>;
2096
2112
  readonly required: _angular_core.InputSignal<boolean>;
2113
+ /**
2114
+ * Whether a selection adds to the current files or replaces them. Defaults
2115
+ * to `true`: picking a second file appends it rather than swapping it in, so
2116
+ * a single-file field has to set this to `false` explicitly.
2117
+ */
2097
2118
  readonly multiple: _angular_core.InputSignal<boolean>;
2098
2119
  /** Comma-separated MIME types and / or file extensions, e.g. `'image/*,.pdf'`. */
2099
2120
  readonly accept: _angular_core.InputSignal<string | undefined>;
@@ -2116,6 +2137,12 @@ declare class FileUploaderComponent implements ControlValueAccessor {
2116
2137
  readonly rejected: _angular_core.OutputEmitterRef<readonly FileUploaderRejection[]>;
2117
2138
  /** Fires whenever a file is removed via its row's X button. */
2118
2139
  readonly fileRemoved: _angular_core.OutputEmitterRef<File>;
2140
+ /**
2141
+ * Fires when a drag enters or leaves the dropzone. The component consumes
2142
+ * the drag events it handles, so a wrapper tracking its own drag styling
2143
+ * reads the state from here rather than from the DOM.
2144
+ */
2145
+ readonly dragOverChanged: _angular_core.OutputEmitterRef<boolean>;
2119
2146
  protected readonly isDragOver: _angular_core.WritableSignal<boolean>;
2120
2147
  protected readonly isFocused: _angular_core.WritableSignal<boolean>;
2121
2148
  private readonly _formDisabled;
@@ -2150,9 +2177,11 @@ declare class FileUploaderComponent implements ControlValueAccessor {
2150
2177
  protected onDropzoneFocus(): void;
2151
2178
  protected onDropzoneBlur(): void;
2152
2179
  protected onFileSelected(event: Event): void;
2180
+ protected onDragEnter(event: DragEvent): void;
2153
2181
  protected onDragOver(event: DragEvent): void;
2154
2182
  protected onDragLeave(event: DragEvent): void;
2155
2183
  protected onDrop(event: DragEvent): void;
2184
+ private setDragOver;
2156
2185
  protected removeFile(file: File): void;
2157
2186
  private acceptFiles;
2158
2187
  protected formatBytes(bytes: number): string;
@@ -2161,7 +2190,7 @@ declare class FileUploaderComponent implements ControlValueAccessor {
2161
2190
  /** Stable track key for the `@for` over `value()`. */
2162
2191
  protected trackFile(_index: number, file: File): string;
2163
2192
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<FileUploaderComponent, never>;
2164
- static ɵcmp: _angular_core.ɵɵ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; }; "errorMessages": { "alias": "errorMessages"; "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>;
2193
+ static ɵcmp: _angular_core.ɵɵ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; }; "errorMessages": { "alias": "errorMessages"; "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"; "dragOverChanged": "dragOverChanged"; }, never, ["[icon]"], true, never>;
2165
2194
  }
2166
2195
 
2167
2196
  /** Visual size of the input. */
@@ -2379,6 +2408,169 @@ declare class MenuTriggerDirective {
2379
2408
  static ɵdir: _angular_core.ɵɵDirectiveDeclaration<MenuTriggerDirective, "[eaMenuTrigger]", never, { "menu": { "alias": "eaMenuTrigger"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
2380
2409
  }
2381
2410
 
2411
+ /**
2412
+ * Placement of the popover relative to its anchor. Each placement names the
2413
+ * side of the anchor the popover attaches to, optionally followed by a corner
2414
+ * suffix (`-start` or `-end`) that decides the alignment along the perpendicular
2415
+ * axis. The plain side names (`top`, `bottom`, `left`, `right`) centre the
2416
+ * popover on that axis.
2417
+ */
2418
+ type PopoverPlacement = 'top' | 'top-start' | 'top-end' | 'bottom' | 'bottom-start' | 'bottom-end' | 'left' | 'right';
2419
+ interface PopoverPositionResult {
2420
+ /** Top coordinate in viewport (px); pairs with `position: fixed`. */
2421
+ readonly top: number;
2422
+ /** Left coordinate in viewport (px). */
2423
+ readonly left: number;
2424
+ /** Width hint when the popover should match the anchor's width. */
2425
+ readonly width?: number;
2426
+ /** The anchor's measured width, for a caller capping the popover against it. */
2427
+ readonly anchorWidth: number;
2428
+ /** Effective placement after any flip logic ran. */
2429
+ readonly placement: PopoverPlacement;
2430
+ }
2431
+ interface PopoverPositionOptions {
2432
+ readonly placement: PopoverPlacement;
2433
+ /** Gap in px between the anchor and the popover. Default 4. */
2434
+ readonly offset?: number;
2435
+ /** Flip to the opposite side when the requested side overflows the viewport. Default true. */
2436
+ readonly flip?: boolean;
2437
+ /** Clamp inside the viewport when the popover still overflows after any flip. Default true. */
2438
+ readonly clamp?: boolean;
2439
+ /** Margin from the viewport edge in px when clamping. Default 8. */
2440
+ readonly margin?: number;
2441
+ /** Set the popover's width to match the anchor's. Useful for dropdown-style menus. */
2442
+ readonly matchAnchorWidth?: boolean;
2443
+ /** Right-to-left context. Swaps `-start`/`-end` alignment so they track the reading direction. */
2444
+ readonly rtl?: boolean;
2445
+ }
2446
+ interface Rect {
2447
+ readonly width: number;
2448
+ readonly height: number;
2449
+ }
2450
+ interface AnchorRect extends Rect {
2451
+ readonly top: number;
2452
+ readonly bottom: number;
2453
+ readonly left: number;
2454
+ readonly right: number;
2455
+ }
2456
+ interface Viewport {
2457
+ readonly width: number;
2458
+ readonly height: number;
2459
+ }
2460
+ /**
2461
+ * Computes the viewport-space top/left for a popover anchored to `anchorRect`,
2462
+ * applying optional flip-on-overflow and edge-clamp logic. Pure function, no
2463
+ * DOM access. Both `<ea-popover>` and `[eaTooltip]` consume this.
2464
+ *
2465
+ * @param anchorRect The anchor element's `getBoundingClientRect()`.
2466
+ * @param popoverRect Width and height of the popover (post-render measurement).
2467
+ * @param viewport Viewport dimensions (`window.innerWidth/Height`).
2468
+ * @param options Placement and behavior flags.
2469
+ */
2470
+ declare function computePopoverPosition(anchorRect: AnchorRect, popoverRect: Rect, viewport: Viewport, options: PopoverPositionOptions): PopoverPositionResult;
2471
+
2472
+ /** ARIA role to apply to the popover surface. */
2473
+ type PopoverRole = 'menu' | 'listbox' | 'dialog' | 'tooltip' | 'grid';
2474
+ /**
2475
+ * How the popover should respond to scroll / resize events while open.
2476
+ *
2477
+ * - `reposition` (default): re-measure the anchor and update the popover's
2478
+ * coordinates so it stays attached. Suitable for menus and tooltips.
2479
+ * - `close`: request close. Suitable for dropdown lists and the colour-picker
2480
+ * popover, where re-tracking a tall popover during a scroll feels intrusive.
2481
+ * - `ignore`: do nothing. The popover stays at its initial coordinates and
2482
+ * may visually detach from a scrolling anchor; useful when the anchor is
2483
+ * guaranteed not to move (e.g. inside a non-scrolling region).
2484
+ */
2485
+ type PopoverScrollBehavior = 'reposition' | 'close' | 'ignore';
2486
+ /** Width cap for a popover surface: px, or the anchor's own width. */
2487
+ type PopoverMaxWidth = number | 'anchor';
2488
+ /**
2489
+ * Floating-element primitive. Renders projected content as `position: fixed`
2490
+ * anchored to an external element, with flip-on-overflow, viewport clamping,
2491
+ * outside-click and Escape dismissal, and SSR-safe scroll / resize handling.
2492
+ *
2493
+ * The primitive is intentionally low-level: a parent component drives the
2494
+ * `[open]` state and listens for `(closeRequested)` to mirror it back. Internal
2495
+ * library components (`<ea-menu>`, `<ea-dropdown>`, `<ea-color-picker>`,
2496
+ * `<ea-date-picker>`, `[eaTooltip]`) compose on top of it; downstream apps can
2497
+ * use it directly to build their own popover-based UI.
2498
+ *
2499
+ * @example
2500
+ * ```html
2501
+ * <button #trigger (click)="open.set(!open())">Open</button>
2502
+ * <ea-popover [anchor]="trigger" [open]="open()" (closeRequested)="open.set(false)">
2503
+ * <div>Popover content</div>
2504
+ * </ea-popover>
2505
+ * ```
2506
+ */
2507
+ declare class PopoverComponent {
2508
+ private readonly destroyRef;
2509
+ private readonly surfaceEl;
2510
+ /** Anchor element the popover positions itself against. */
2511
+ readonly anchor: _angular_core.InputSignal<HTMLElement | ElementRef<HTMLElement> | undefined>;
2512
+ /** Whether the popover is currently open. */
2513
+ readonly open: _angular_core.InputSignal<boolean>;
2514
+ /** Where the popover attaches relative to the anchor. */
2515
+ readonly placement: _angular_core.InputSignal<PopoverPlacement>;
2516
+ /** ARIA role applied to the popover surface. */
2517
+ readonly role: _angular_core.InputSignal<PopoverRole>;
2518
+ /** Accessible label. Falls back to nothing; consumers should provide one when no visible heading is in the popover. */
2519
+ readonly ariaLabel: _angular_core.InputSignal<string | undefined>;
2520
+ /** Id of the element that labels the popover surface, forwarded as `aria-labelledby`. */
2521
+ readonly ariaLabelledby: _angular_core.InputSignal<string | undefined>;
2522
+ /** Keep Tab and Shift+Tab cycling within the surface while open (dialog pattern). */
2523
+ readonly trapFocus: _angular_core.InputSignal<boolean>;
2524
+ /** DOM id for the surface so trigger elements can reference it via aria-controls. */
2525
+ readonly surfaceId: _angular_core.InputSignal<string>;
2526
+ /**
2527
+ * Gap in px between the anchor and the popover. Defaults to 2 so an open panel
2528
+ * clears the anchor's active focus ring instead of sitting flush over it.
2529
+ */
2530
+ readonly offset: _angular_core.InputSignal<number>;
2531
+ /** Flip to the opposite side when the requested side overflows the viewport. */
2532
+ readonly flip: _angular_core.InputSignal<boolean>;
2533
+ /** Clamp the popover inside the viewport when it would otherwise overflow. */
2534
+ readonly clamp: _angular_core.InputSignal<boolean>;
2535
+ /** Set the popover's `min-width` to match the anchor's width (dropdown pattern). */
2536
+ readonly matchAnchorWidth: _angular_core.InputSignal<boolean>;
2537
+ /**
2538
+ * Widest the surface may grow: a px value, or `anchor` to cap it at the
2539
+ * anchor's own width so long content truncates instead of widening the panel.
2540
+ */
2541
+ readonly maxWidth: _angular_core.InputSignal<PopoverMaxWidth | undefined>;
2542
+ /** Close on click outside the popover and the anchor. */
2543
+ readonly closeOnOutsideClick: _angular_core.InputSignal<boolean>;
2544
+ /** Close on Escape. */
2545
+ readonly closeOnEscape: _angular_core.InputSignal<boolean>;
2546
+ /** What to do on scroll / resize while open. */
2547
+ readonly scrollBehavior: _angular_core.InputSignal<PopoverScrollBehavior>;
2548
+ /** Requested close. The parent should mirror this into `[open]`. */
2549
+ readonly closeRequested: _angular_core.OutputEmitterRef<void>;
2550
+ private readonly position;
2551
+ /** True placement after flip, for class-based styling (e.g. arrow direction). */
2552
+ readonly effectivePlacement: _angular_core.Signal<PopoverPlacement>;
2553
+ /** Latches true once the post-rAF reposition has run, so the surface is
2554
+ * only revealed after its dimensions are guaranteed stable. Reset on close. */
2555
+ private readonly stable;
2556
+ /** True once the first `reposition()` has resolved a placement on a
2557
+ * laid-out surface. Drives the `--positioned` class. */
2558
+ readonly isPositioned: _angular_core.Signal<boolean>;
2559
+ /** Class list for the surface. Computed in TS so the placement key (with
2560
+ * its interpolated suffix) and the positioned modifier compose cleanly. */
2561
+ readonly surfaceClass: _angular_core.Signal<string>;
2562
+ /** Inline style applied to the surface element. */
2563
+ readonly surfaceStyle: _angular_core.Signal<Record<string, string>>;
2564
+ constructor();
2565
+ private resolveAnchor;
2566
+ private reposition;
2567
+ onDocumentClick(event: MouseEvent): void;
2568
+ onSurfaceKeydown(event: KeyboardEvent): void;
2569
+ onEscape(event: Event): void;
2570
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<PopoverComponent, never>;
2571
+ static ɵcmp: _angular_core.ɵɵ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; }; "ariaLabelledby": { "alias": "aria-labelledby"; "required": false; "isSignal": true; }; "trapFocus": { "alias": "trapFocus"; "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; }; "maxWidth": { "alias": "maxWidth"; "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>;
2572
+ }
2573
+
2382
2574
  /** Visual size of the multi-select trigger. */
2383
2575
  type MultiSelectSize = EaSize;
2384
2576
  /**
@@ -2390,10 +2582,14 @@ type MultiSelectSize = EaSize;
2390
2582
  * integrates with Angular forms via `ControlValueAccessor`.
2391
2583
  */
2392
2584
  declare class MultiSelectComponent implements ControlValueAccessor {
2585
+ protected readonly wrapperEl: _angular_core.Signal<ElementRef<HTMLElement> | undefined>;
2393
2586
  protected readonly triggerEl: _angular_core.Signal<ElementRef<HTMLElement> | undefined>;
2394
2587
  protected readonly searchEl: _angular_core.Signal<ElementRef<HTMLInputElement> | undefined>;
2588
+ private readonly listEl;
2589
+ private readonly optionLabelEls;
2395
2590
  protected readonly i18n: EagamiI18nService;
2396
2591
  private readonly injector;
2592
+ private readonly destroyRef;
2397
2593
  readonly label: _angular_core.InputSignal<string | undefined>;
2398
2594
  /** Accessible name for the combobox when no visible `label` is set. */
2399
2595
  readonly ariaLabel: _angular_core.InputSignal<string | undefined>;
@@ -2414,6 +2610,16 @@ declare class MultiSelectComponent implements ControlValueAccessor {
2414
2610
  readonly selectAll: _angular_core.InputSignal<boolean>;
2415
2611
  /** Max number of chips shown inside the trigger; the rest collapse into a "+N more" pill. `0` removes the cap so every chip shows and the row scrolls horizontally. */
2416
2612
  readonly maxVisibleChips: _angular_core.InputSignal<number>;
2613
+ /**
2614
+ * Widest a selected-value chip may grow, in px; a longer label ellipsizes
2615
+ * and reveals its full text in a tooltip.
2616
+ */
2617
+ readonly maxChipWidth: _angular_core.InputSignal<number | undefined>;
2618
+ /**
2619
+ * Widest the option popover may grow: a px value, or `anchor` to hold it to
2620
+ * the field's own width so a long option truncates instead of widening it.
2621
+ */
2622
+ readonly popoverMaxWidth: _angular_core.InputSignal<PopoverMaxWidth>;
2417
2623
  readonly id: _angular_core.InputSignal<string>;
2418
2624
  /** Selected option values, in the original options order. */
2419
2625
  readonly value: _angular_core.ModelSignal<readonly string[]>;
@@ -2461,6 +2667,7 @@ declare class MultiSelectComponent implements ControlValueAccessor {
2461
2667
  'ea-multi-select__trigger--error': boolean;
2462
2668
  'ea-multi-select__trigger--open': boolean;
2463
2669
  'ea-multi-select__trigger--disabled': boolean;
2670
+ 'ea-multi-select__trigger--readonly': boolean;
2464
2671
  'ea-multi-select__trigger--placeholder': boolean;
2465
2672
  }>;
2466
2673
  readonly menuClasses: _angular_core.Signal<{
@@ -2469,6 +2676,9 @@ declare class MultiSelectComponent implements ControlValueAccessor {
2469
2676
  readonly wrapperClasses: _angular_core.Signal<{
2470
2677
  [x: string]: boolean;
2471
2678
  }>;
2679
+ /** Values whose rendered option label is currently clipped by the panel. */
2680
+ protected readonly clippedOptions: _angular_core.WritableSignal<ReadonlySet<string>>;
2681
+ constructor();
2472
2682
  writeValue(val: readonly string[] | null | undefined): void;
2473
2683
  registerOnChange(fn: (value: readonly string[]) => void): void;
2474
2684
  registerOnTouched(fn: () => void): void;
@@ -2519,8 +2729,15 @@ declare class MultiSelectComponent implements ControlValueAccessor {
2519
2729
  private orderedValues;
2520
2730
  private resetEditState;
2521
2731
  private commit;
2732
+ /**
2733
+ * Re-reads which option labels are clipped. The result is written back only
2734
+ * when the set actually differs, since an unconditional write would render,
2735
+ * re-measure, and write again forever.
2736
+ */
2737
+ private measureClippedOptions;
2738
+ private watchListWidth;
2522
2739
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<MultiSelectComponent, never>;
2523
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<MultiSelectComponent, "ea-multi-select", never, { "label": { "alias": "label"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "aria-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; }; "errorMessages": { "alias": "errorMessages"; "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>;
2740
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<MultiSelectComponent, "ea-multi-select", never, { "label": { "alias": "label"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "aria-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; }; "errorMessages": { "alias": "errorMessages"; "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; }; "maxChipWidth": { "alias": "maxChipWidth"; "required": false; "isSignal": true; }; "popoverMaxWidth": { "alias": "popoverMaxWidth"; "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>;
2524
2741
  }
2525
2742
 
2526
2743
  /** Visual size of the number input. */
@@ -2666,160 +2883,6 @@ declare class PaginatorComponent {
2666
2883
  static ɵcmp: _angular_core.ɵɵ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; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "groupThousands": { "alias": "groupThousands"; "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>;
2667
2884
  }
2668
2885
 
2669
- /**
2670
- * Placement of the popover relative to its anchor. Each placement names the
2671
- * side of the anchor the popover attaches to, optionally followed by a corner
2672
- * suffix (`-start` or `-end`) that decides the alignment along the perpendicular
2673
- * axis. The plain side names (`top`, `bottom`, `left`, `right`) centre the
2674
- * popover on that axis.
2675
- */
2676
- type PopoverPlacement = 'top' | 'top-start' | 'top-end' | 'bottom' | 'bottom-start' | 'bottom-end' | 'left' | 'right';
2677
- interface PopoverPositionResult {
2678
- /** Top coordinate in viewport (px); pairs with `position: fixed`. */
2679
- readonly top: number;
2680
- /** Left coordinate in viewport (px). */
2681
- readonly left: number;
2682
- /** Width hint when the popover should match the anchor's width. */
2683
- readonly width?: number;
2684
- /** Effective placement after any flip logic ran. */
2685
- readonly placement: PopoverPlacement;
2686
- }
2687
- interface PopoverPositionOptions {
2688
- readonly placement: PopoverPlacement;
2689
- /** Gap in px between the anchor and the popover. Default 4. */
2690
- readonly offset?: number;
2691
- /** Flip to the opposite side when the requested side overflows the viewport. Default true. */
2692
- readonly flip?: boolean;
2693
- /** Clamp inside the viewport when the popover still overflows after any flip. Default true. */
2694
- readonly clamp?: boolean;
2695
- /** Margin from the viewport edge in px when clamping. Default 8. */
2696
- readonly margin?: number;
2697
- /** Set the popover's width to match the anchor's. Useful for dropdown-style menus. */
2698
- readonly matchAnchorWidth?: boolean;
2699
- /** Right-to-left context. Swaps `-start`/`-end` alignment so they track the reading direction. */
2700
- readonly rtl?: boolean;
2701
- }
2702
- interface Rect {
2703
- readonly width: number;
2704
- readonly height: number;
2705
- }
2706
- interface AnchorRect extends Rect {
2707
- readonly top: number;
2708
- readonly bottom: number;
2709
- readonly left: number;
2710
- readonly right: number;
2711
- }
2712
- interface Viewport {
2713
- readonly width: number;
2714
- readonly height: number;
2715
- }
2716
- /**
2717
- * Computes the viewport-space top/left for a popover anchored to `anchorRect`,
2718
- * applying optional flip-on-overflow and edge-clamp logic. Pure function, no
2719
- * DOM access. Both `<ea-popover>` and `[eaTooltip]` consume this.
2720
- *
2721
- * @param anchorRect The anchor element's `getBoundingClientRect()`.
2722
- * @param popoverRect Width and height of the popover (post-render measurement).
2723
- * @param viewport Viewport dimensions (`window.innerWidth/Height`).
2724
- * @param options Placement and behavior flags.
2725
- */
2726
- declare function computePopoverPosition(anchorRect: AnchorRect, popoverRect: Rect, viewport: Viewport, options: PopoverPositionOptions): PopoverPositionResult;
2727
-
2728
- /** ARIA role to apply to the popover surface. */
2729
- type PopoverRole = 'menu' | 'listbox' | 'dialog' | 'tooltip' | 'grid';
2730
- /**
2731
- * How the popover should respond to scroll / resize events while open.
2732
- *
2733
- * - `reposition` (default): re-measure the anchor and update the popover's
2734
- * coordinates so it stays attached. Suitable for menus and tooltips.
2735
- * - `close`: request close. Suitable for dropdown lists and the colour-picker
2736
- * popover, where re-tracking a tall popover during a scroll feels intrusive.
2737
- * - `ignore`: do nothing. The popover stays at its initial coordinates and
2738
- * may visually detach from a scrolling anchor; useful when the anchor is
2739
- * guaranteed not to move (e.g. inside a non-scrolling region).
2740
- */
2741
- type PopoverScrollBehavior = 'reposition' | 'close' | 'ignore';
2742
- /**
2743
- * Floating-element primitive. Renders projected content as `position: fixed`
2744
- * anchored to an external element, with flip-on-overflow, viewport clamping,
2745
- * outside-click and Escape dismissal, and SSR-safe scroll / resize handling.
2746
- *
2747
- * The primitive is intentionally low-level: a parent component drives the
2748
- * `[open]` state and listens for `(closeRequested)` to mirror it back. Internal
2749
- * library components (`<ea-menu>`, `<ea-dropdown>`, `<ea-color-picker>`,
2750
- * `<ea-date-picker>`, `[eaTooltip]`) compose on top of it; downstream apps can
2751
- * use it directly to build their own popover-based UI.
2752
- *
2753
- * @example
2754
- * ```html
2755
- * <button #trigger (click)="open.set(!open())">Open</button>
2756
- * <ea-popover [anchor]="trigger" [open]="open()" (closeRequested)="open.set(false)">
2757
- * <div>Popover content</div>
2758
- * </ea-popover>
2759
- * ```
2760
- */
2761
- declare class PopoverComponent {
2762
- private readonly destroyRef;
2763
- private readonly surfaceEl;
2764
- /** Anchor element the popover positions itself against. */
2765
- readonly anchor: _angular_core.InputSignal<HTMLElement | ElementRef<HTMLElement> | undefined>;
2766
- /** Whether the popover is currently open. */
2767
- readonly open: _angular_core.InputSignal<boolean>;
2768
- /** Where the popover attaches relative to the anchor. */
2769
- readonly placement: _angular_core.InputSignal<PopoverPlacement>;
2770
- /** ARIA role applied to the popover surface. */
2771
- readonly role: _angular_core.InputSignal<PopoverRole>;
2772
- /** Accessible label. Falls back to nothing; consumers should provide one when no visible heading is in the popover. */
2773
- readonly ariaLabel: _angular_core.InputSignal<string | undefined>;
2774
- /** Id of the element that labels the popover surface, forwarded as `aria-labelledby`. */
2775
- readonly ariaLabelledby: _angular_core.InputSignal<string | undefined>;
2776
- /** Keep Tab and Shift+Tab cycling within the surface while open (dialog pattern). */
2777
- readonly trapFocus: _angular_core.InputSignal<boolean>;
2778
- /** DOM id for the surface so trigger elements can reference it via aria-controls. */
2779
- readonly surfaceId: _angular_core.InputSignal<string>;
2780
- /**
2781
- * Gap in px between the anchor and the popover. Defaults to 2 so an open panel
2782
- * clears the anchor's active focus ring instead of sitting flush over it.
2783
- */
2784
- readonly offset: _angular_core.InputSignal<number>;
2785
- /** Flip to the opposite side when the requested side overflows the viewport. */
2786
- readonly flip: _angular_core.InputSignal<boolean>;
2787
- /** Clamp the popover inside the viewport when it would otherwise overflow. */
2788
- readonly clamp: _angular_core.InputSignal<boolean>;
2789
- /** Set the popover's `min-width` to match the anchor's width (dropdown pattern). */
2790
- readonly matchAnchorWidth: _angular_core.InputSignal<boolean>;
2791
- /** Close on click outside the popover and the anchor. */
2792
- readonly closeOnOutsideClick: _angular_core.InputSignal<boolean>;
2793
- /** Close on Escape. */
2794
- readonly closeOnEscape: _angular_core.InputSignal<boolean>;
2795
- /** What to do on scroll / resize while open. */
2796
- readonly scrollBehavior: _angular_core.InputSignal<PopoverScrollBehavior>;
2797
- /** Requested close. The parent should mirror this into `[open]`. */
2798
- readonly closeRequested: _angular_core.OutputEmitterRef<void>;
2799
- private readonly position;
2800
- /** True placement after flip, for class-based styling (e.g. arrow direction). */
2801
- readonly effectivePlacement: _angular_core.Signal<PopoverPlacement>;
2802
- /** Latches true once the post-rAF reposition has run, so the surface is
2803
- * only revealed after its dimensions are guaranteed stable. Reset on close. */
2804
- private readonly stable;
2805
- /** True once the first `reposition()` has resolved a placement on a
2806
- * laid-out surface. Drives the `--positioned` class. */
2807
- readonly isPositioned: _angular_core.Signal<boolean>;
2808
- /** Class list for the surface. Computed in TS so the placement key (with
2809
- * its interpolated suffix) and the positioned modifier compose cleanly. */
2810
- readonly surfaceClass: _angular_core.Signal<string>;
2811
- /** Inline style applied to the surface element. */
2812
- readonly surfaceStyle: _angular_core.Signal<Record<string, string>>;
2813
- constructor();
2814
- private resolveAnchor;
2815
- private reposition;
2816
- onDocumentClick(event: MouseEvent): void;
2817
- onSurfaceKeydown(event: KeyboardEvent): void;
2818
- onEscape(event: Event): void;
2819
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<PopoverComponent, never>;
2820
- static ɵcmp: _angular_core.ɵɵ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; }; "ariaLabelledby": { "alias": "aria-labelledby"; "required": false; "isSignal": true; }; "trapFocus": { "alias": "trapFocus"; "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>;
2821
- }
2822
-
2823
2886
  /** Semantic colour scheme of the progress bar. */
2824
2887
  type ProgressBarVariant = 'default' | 'success' | 'warning' | 'error' | 'info';
2825
2888
  /** Visual height of the progress bar. */
@@ -3441,23 +3504,94 @@ declare class TabsComponent {
3441
3504
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<TabsComponent, "ea-tabs", never, { "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; "activeTab": { "alias": "activeTab"; "required": false; "isSignal": true; }; }, { "activeTab": "activeTabChange"; "changed": "changed"; }, never, ["*"], true, never>;
3442
3505
  }
3443
3506
 
3507
+ /** Placement of the tooltip relative to its host element. */
3508
+ type TooltipPosition = 'top' | 'bottom' | 'left' | 'right';
3509
+ /**
3510
+ * Attaches a positioned tooltip to its host element. Shows on hover and
3511
+ * focus, hides on leave/blur or Escape, and wires up `aria-describedby` so
3512
+ * the tooltip text is announced to assistive technology. Accepts either a
3513
+ * plain string or a `TemplateRef` for styled multi-part content. Binding an
3514
+ * empty string suppresses the bubble, which is how a host shows one only in
3515
+ * some states (a label that is currently truncated, say).
3516
+ *
3517
+ * The directive listens on `focusin`, not `focus`, so it fires for a focusable
3518
+ * descendant of the host as well as the host itself. A host listener paired
3519
+ * with `eaTooltip` has to use `focusin` for the same reason: `focus` does not
3520
+ * bubble, so it never fires when the focus lands on a child.
3521
+ */
3522
+ declare class TooltipDirective implements OnDestroy {
3523
+ private readonly el;
3524
+ private readonly renderer;
3525
+ private readonly viewContainer;
3526
+ readonly eaTooltip: _angular_core.InputSignal<string | TemplateRef<unknown>>;
3527
+ readonly tooltipPosition: _angular_core.InputSignal<TooltipPosition>;
3528
+ /** Max width in px; the text wraps at this width. Clamped to a 50px floor. */
3529
+ readonly maxWidth: _angular_core.InputSignal<number | undefined>;
3530
+ private tooltipEl;
3531
+ private templateView;
3532
+ private readonly tooltipId;
3533
+ private readonly hoverMql;
3534
+ private readonly showHandler;
3535
+ private readonly hideHandler;
3536
+ private readonly supportsFocusVisible;
3537
+ private readonly focusHandler;
3538
+ private readonly keydownHandler;
3539
+ private readonly hoverChangeHandler;
3540
+ private rafId;
3541
+ private readonly repositionHandler;
3542
+ private readonly scrollListenerOptions;
3543
+ private resizeObserver;
3544
+ constructor();
3545
+ ngOnDestroy(): void;
3546
+ private syncPointerListeners;
3547
+ private show;
3548
+ private shrinkToContent;
3549
+ private hide;
3550
+ private attachRepositionListeners;
3551
+ private detachRepositionListeners;
3552
+ private appendDescribedBy;
3553
+ private removeDescribedBy;
3554
+ private positionTooltip;
3555
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<TooltipDirective, never>;
3556
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<TooltipDirective, "[eaTooltip]", never, { "eaTooltip": { "alias": "eaTooltip"; "required": true; "isSignal": true; }; "tooltipPosition": { "alias": "tooltipPosition"; "required": false; "isSignal": true; }; "maxWidth": { "alias": "maxWidth"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
3557
+ }
3558
+
3444
3559
  /** Semantic colour scheme of a tag. */
3445
3560
  type TagVariant = 'default' | 'success' | 'warning' | 'error' | 'info';
3446
3561
  /** Visual size of a tag. */
3447
3562
  type TagSize = EaSize;
3563
+ /** Where a clipped label reveals its full text, or `none` to suppress it. */
3564
+ type TagTooltip = 'above' | 'below' | 'none';
3448
3565
  /**
3449
3566
  * Inline label commonly used to represent filters, categories, or selected
3450
3567
  * items. When `removable`, renders a close button that emits `removed`; the
3451
3568
  * accessible name of that button is configurable via `removeLabel` and
3452
3569
  * otherwise falls back to the active locale's translation.
3570
+ *
3571
+ * The projected label is capped by `maxWidth` (or the `--ea-tag-max-width`
3572
+ * custom property) and ellipsizes rather than widening the chip, revealing its
3573
+ * full text in a tooltip while it is clipped.
3453
3574
  */
3454
3575
  declare class TagComponent {
3455
3576
  private readonly i18n;
3577
+ private readonly destroyRef;
3578
+ private readonly labelEl;
3456
3579
  readonly variant: _angular_core.InputSignal<TagVariant>;
3457
3580
  readonly size: _angular_core.InputSignal<EaSize>;
3458
3581
  readonly removable: _angular_core.InputSignal<boolean>;
3459
3582
  readonly disabled: _angular_core.InputSignal<boolean>;
3460
3583
  readonly removeLabel: _angular_core.InputSignal<string | undefined>;
3584
+ /**
3585
+ * Widest the chip may grow, in px; a longer label ellipsizes instead. Also
3586
+ * settable in CSS as `--ea-tag-max-width`, which this input overrides.
3587
+ */
3588
+ readonly maxWidth: _angular_core.InputSignal<number | undefined>;
3589
+ /**
3590
+ * Where a label clipped by `maxWidth` reveals its full text. Set `none` for
3591
+ * a tag rendered inside a tooltip, which would otherwise stack a second
3592
+ * bubble over the first.
3593
+ */
3594
+ readonly tooltip: _angular_core.InputSignal<TagTooltip>;
3461
3595
  /**
3462
3596
  * Whether the remove button is a tab stop. Set `false` inside a composite
3463
3597
  * widget (a combobox trigger, a grid cell) whose own keyboard model owns
@@ -3466,15 +3600,27 @@ declare class TagComponent {
3466
3600
  readonly removeTabbable: _angular_core.InputSignal<boolean>;
3467
3601
  /** Fires when the user activates the remove button on a `removable` tag. */
3468
3602
  readonly removed: _angular_core.OutputEmitterRef<void>;
3603
+ /** Full label text, held only while the rendered label is clipped. */
3604
+ private readonly clippedText;
3469
3605
  /** Accessible label for the remove button, falling back to the active locale. */
3470
3606
  readonly resolvedRemoveLabel: _angular_core.Signal<string>;
3607
+ /** Tooltip text for the label; empty suppresses the bubble entirely. */
3608
+ protected readonly labelTooltip: _angular_core.Signal<string>;
3609
+ protected readonly tooltipPosition: _angular_core.Signal<TooltipPosition>;
3471
3610
  readonly hostClasses: _angular_core.Signal<{
3472
3611
  [x: string]: boolean;
3473
3612
  'ea-tag--disabled': boolean;
3474
3613
  }>;
3614
+ constructor();
3475
3615
  onRemove(event: MouseEvent): void;
3616
+ /**
3617
+ * Keeps `clippedText` in step with the rendered label. Size and text are
3618
+ * watched separately because a capped chip holds its width when the text
3619
+ * behind the ellipsis changes, so a resize alone would leave stale text.
3620
+ */
3621
+ private watchLabel;
3476
3622
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<TagComponent, never>;
3477
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<TagComponent, "ea-tag", never, { "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "removable": { "alias": "removable"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "removeLabel": { "alias": "removeLabel"; "required": false; "isSignal": true; }; "removeTabbable": { "alias": "removeTabbable"; "required": false; "isSignal": true; }; }, { "removed": "removed"; }, never, ["*"], true, never>;
3623
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<TagComponent, "ea-tag", never, { "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "removable": { "alias": "removable"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "removeLabel": { "alias": "removeLabel"; "required": false; "isSignal": true; }; "maxWidth": { "alias": "maxWidth"; "required": false; "isSignal": true; }; "tooltip": { "alias": "tooltip"; "required": false; "isSignal": true; }; "removeTabbable": { "alias": "removeTabbable"; "required": false; "isSignal": true; }; }, { "removed": "removed"; }, never, ["*"], true, never>;
3478
3624
  }
3479
3625
 
3480
3626
  /** Visual size of the textarea. */
@@ -3643,6 +3789,7 @@ declare class TimePickerComponent implements ControlValueAccessor {
3643
3789
  'ea-time-picker__trigger--error': boolean;
3644
3790
  'ea-time-picker__trigger--open': boolean;
3645
3791
  'ea-time-picker__trigger--disabled': boolean;
3792
+ 'ea-time-picker__trigger--readonly': boolean;
3646
3793
  'ea-time-picker__trigger--placeholder': boolean;
3647
3794
  }>;
3648
3795
  readonly wrapperClasses: _angular_core.Signal<{
@@ -3777,6 +3924,8 @@ type ToastVariant = 'default' | 'success' | 'warning' | 'error' | 'info';
3777
3924
  interface Toast {
3778
3925
  id: number;
3779
3926
  message: string;
3927
+ /** Heading shown above the message; the message steps back when set. */
3928
+ title?: string;
3780
3929
  variant: ToastVariant;
3781
3930
  duration: number;
3782
3931
  /** Icon component rendered in place of the variant's own; `null` renders none. */
@@ -3784,6 +3933,8 @@ interface Toast {
3784
3933
  }
3785
3934
  /** Optional configuration for a toast; defaults to `default` variant and 4s duration. */
3786
3935
  interface ToastOptions {
3936
+ /** Heading shown above the message; the message steps back when set. */
3937
+ title?: string;
3787
3938
  variant?: ToastVariant;
3788
3939
  duration?: number;
3789
3940
  /** Any icon component to render in place of the variant's own; `null` for no icon. */
@@ -3860,51 +4011,6 @@ declare class ToastComponent {
3860
4011
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<ToastComponent, "ea-toast", never, { "position": { "alias": "position"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "clearable": { "alias": "clearable"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
3861
4012
  }
3862
4013
 
3863
- /** Placement of the tooltip relative to its host element. */
3864
- type TooltipPosition = 'top' | 'bottom' | 'left' | 'right';
3865
- /**
3866
- * Attaches a positioned tooltip to its host element. Shows on hover and
3867
- * focus, hides on leave/blur or Escape, and wires up `aria-describedby` so
3868
- * the tooltip text is announced to assistive technology. Accepts either a
3869
- * plain string or a `TemplateRef` for styled multi-part content.
3870
- */
3871
- declare class TooltipDirective implements OnDestroy {
3872
- private readonly el;
3873
- private readonly renderer;
3874
- private readonly viewContainer;
3875
- readonly eaTooltip: _angular_core.InputSignal<string | TemplateRef<unknown>>;
3876
- readonly tooltipPosition: _angular_core.InputSignal<TooltipPosition>;
3877
- /** Max width in px; the text wraps at this width. Clamped to a 50px floor. */
3878
- readonly maxWidth: _angular_core.InputSignal<number | undefined>;
3879
- private tooltipEl;
3880
- private templateView;
3881
- private readonly tooltipId;
3882
- private readonly hoverMql;
3883
- private readonly showHandler;
3884
- private readonly hideHandler;
3885
- private readonly supportsFocusVisible;
3886
- private readonly focusHandler;
3887
- private readonly keydownHandler;
3888
- private readonly hoverChangeHandler;
3889
- private rafId;
3890
- private readonly repositionHandler;
3891
- private readonly scrollListenerOptions;
3892
- private resizeObserver;
3893
- constructor();
3894
- ngOnDestroy(): void;
3895
- private syncPointerListeners;
3896
- private show;
3897
- private shrinkToContent;
3898
- private hide;
3899
- private attachRepositionListeners;
3900
- private detachRepositionListeners;
3901
- private appendDescribedBy;
3902
- private removeDescribedBy;
3903
- private positionTooltip;
3904
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<TooltipDirective, never>;
3905
- static ɵdir: _angular_core.ɵɵDirectiveDeclaration<TooltipDirective, "[eaTooltip]", never, { "eaTooltip": { "alias": "eaTooltip"; "required": true; "isSignal": true; }; "tooltipPosition": { "alias": "tooltipPosition"; "required": false; "isSignal": true; }; "maxWidth": { "alias": "maxWidth"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
3906
- }
3907
-
3908
4014
  /**
3909
4015
  * A single transferable item in an `<ea-transfer-list>`.
3910
4016
  *
@@ -7677,4 +7783,4 @@ declare class ZoomOutIconComponent extends IconComponentBase {
7677
7783
  }
7678
7784
 
7679
7785
  export { AccordionComponent, AccordionItemComponent, ActivityIconComponent, AirplayIconComponent, AlertCircleIconComponent, AlertComponent, AlertOctagonIconComponent, AlertTriangleIconComponent, AlignCenterIconComponent, AlignJustifyIconComponent, AlignLeftIconComponent, AlignRightIconComponent, AnchorIconComponent, AndroidIconComponent, AngularIconComponent, AnthropicIconComponent, ApertureIconComponent, ArchiveIconComponent, ArrowDownCircleIconComponent, ArrowDownIconComponent, ArrowDownLeftIconComponent, ArrowDownRightIconComponent, ArrowLeftCircleIconComponent, ArrowLeftIconComponent, ArrowRightCircleIconComponent, ArrowRightIconComponent, ArrowUpCircleIconComponent, ArrowUpIconComponent, ArrowUpLeftIconComponent, ArrowUpRightIconComponent, AspectRatioIconComponent, AtSignIconComponent, AutocompleteComponent, AvatarComponent, AvatarEditorComponent, AwardIconComponent, BadgeCheckIconComponent, BadgeComponent, BarChart2IconComponent, BarChartIconComponent, BatteryChargingIconComponent, BatteryIconComponent, BellIconComponent, BellOffIconComponent, BellRingIconComponent, BitcoinIconComponent, BlueskyIconComponent, BluetoothIconComponent, BoldIconComponent, BookIconComponent, BookOpenIconComponent, BookmarkCheckIconComponent, BookmarkIconComponent, BookmarkPlusIconComponent, BotIconComponent, BottleIconComponent, BoxIconComponent, BrainIconComponent, BreadcrumbsComponent, BriefcaseIconComponent, BugIconComponent, BuildingIconComponent, ButtonComponent, CalculatorIconComponent, CalendarCheckIconComponent, CalendarDaysIconComponent, CalendarIconComponent, CameraIconComponent, CameraOffIconComponent, CandleIconComponent, CardComponent, CastIconComponent, CheckCircleIconComponent, CheckIconComponent, CheckSquareIconComponent, CheckboxComponent, ChevronDownIconComponent, ChevronLeftIconComponent, ChevronRightIconComponent, ChevronUpIconComponent, ChevronsDownIconComponent, ChevronsLeftIconComponent, ChevronsRightIconComponent, ChevronsUpDownIconComponent, ChevronsUpIconComponent, ChromeIconComponent, CircleIconComponent, ClapperboardIconComponent, ClipboardCheckIconComponent, ClipboardIconComponent, ClipboardListIconComponent, ClockIconComponent, CloudDrizzleIconComponent, CloudIconComponent, CloudLightningIconComponent, CloudOffIconComponent, CloudRainIconComponent, CloudSnowIconComponent, CloudflareIconComponent, CodeIconComponent, CodeInputComponent, CodepenIconComponent, CodesandboxIconComponent, CoffeeIconComponent, CoinsIconComponent, ColorPickerComponent, ColumnsIconComponent, CommandIconComponent, CommandPaletteComponent, CompassIconComponent, CopyIconComponent, CornerDownLeftIconComponent, CornerDownRightIconComponent, CornerLeftDownIconComponent, CornerLeftUpIconComponent, CornerRightDownIconComponent, CornerRightUpIconComponent, CornerUpLeftIconComponent, CornerUpRightIconComponent, CpuIconComponent, CreditCardIconComponent, CropIconComponent, CrosshairIconComponent, DEFAULT_PALETTE_ROLES, DataTableComponent, DatabaseIconComponent, DatePickerComponent, DeleteIconComponent, DialogComponent, DiscIconComponent, DiscordIconComponent, DivideCircleIconComponent, DivideIconComponent, DivideSquareIconComponent, DividerComponent, DockerIconComponent, DollarSignIconComponent, DownloadCloudIconComponent, DownloadIconComponent, DrawerComponent, DribbbleIconComponent, DropboxIconComponent, DropdownComponent, DropletIconComponent, EAGAMI_ALL_LOCALES, EAGAMI_I18N_CONFIG, EAGAMI_LOCALES, EAGAMI_LOCALE_META, EagamiI18nService, EagamiIconComponent, EagamiWordmarkComponent, Edit2IconComponent, Edit3IconComponent, EditIconComponent, EmptyStateComponent, ExternalLinkIconComponent, EyeIconComponent, EyeOffIconComponent, Facebook2IconComponent, FacebookIconComponent, FastForwardIconComponent, FeatherIconComponent, FieldLabelComponent, FieldMessagesComponent, Figma2IconComponent, FigmaIconComponent, FileAudioIconComponent, FileCheckIconComponent, FileIconComponent, FileImageIconComponent, FileMinusIconComponent, FilePdfIconComponent, FilePlusIconComponent, FileTextIconComponent, FileUploaderComponent, FileVideoIconComponent, FilmIconComponent, FilterIconComponent, FilterXIconComponent, FingerprintIconComponent, FlagIconComponent, FlameIconComponent, FolderIconComponent, FolderMinusIconComponent, FolderOpenIconComponent, FolderPlusIconComponent, FormFieldComponent, FramerIconComponent, FrownIconComponent, GaugeIconComponent, GeminiIconComponent, GiftIconComponent, GitBranchIconComponent, GitCommitIconComponent, GitCompareIconComponent, GitMergeIconComponent, GitPullRequestIconComponent, Github2IconComponent, GithubIconComponent, GitlabIconComponent, GlobeIconComponent, GoogleIconComponent, GridIconComponent, HalfCircleIconComponent, HalfHeartIconComponent, HardDriveIconComponent, HashIconComponent, HeadphonesIconComponent, HeartIconComponent, HelpCircleIconComponent, HeptagonIconComponent, HexagonIconComponent, HistoryIconComponent, HomeIconComponent, ICONS, IconComponentBase, ImageIconComponent, ImagesIconComponent, InboxIconComponent, InfoIconComponent, InputComponent, InstagramIconComponent, ItalicIconComponent, KeyIconComponent, KeyboardIconComponent, KeyframeIconComponent, KubernetesIconComponent, LampIconComponent, LanguagesIconComponent, LayersIconComponent, LayoutIconComponent, LeafIconComponent, LeftHalfStarIconComponent, LifeBuoyIconComponent, LightbulbIconComponent, Link2IconComponent, LinkIconComponent, Linkedin2IconComponent, LinkedinIconComponent, ListChecksIconComponent, ListIconComponent, LoaderIconComponent, LockIconComponent, LogInIconComponent, LogOutIconComponent, MailCheckIconComponent, MailIconComponent, MapIconComponent, MapPinIconComponent, MastercardIconComponent, Maximize2IconComponent, MaximizeIconComponent, MegaphoneIconComponent, 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, NodejsIconComponent, NotionIconComponent, NpmIconComponent, NumberInputComponent, OctagonIconComponent, PackageIconComponent, PaginatorComponent, PaletteIconComponent, PaperclipIconComponent, PauseCircleIconComponent, PauseIconComponent, PaypalIconComponent, PenToolIconComponent, PentagonIconComponent, PercentIconComponent, PhoneCallIconComponent, PhoneForwardedIconComponent, PhoneIconComponent, PhoneIncomingIconComponent, PhoneMissedIconComponent, PhoneOffIconComponent, PhoneOutgoingIconComponent, PictureInPictureIconComponent, PieChartIconComponent, PinIconComponent, PinterestIconComponent, PlayCircleIconComponent, PlayIconComponent, PlaylistIconComponent, PlugIconComponent, PlusCircleIconComponent, PlusIconComponent, PlusSquareIconComponent, PocketIconComponent, PopoverComponent, PowerIconComponent, PrinterIconComponent, ProgressBarComponent, PythonIconComponent, QrCodeIconComponent, RadioComponent, RadioGroupComponent, RadioIconComponent, RangeSliderComponent, RatingComponent, ReactIconComponent, ReceiptIconComponent, RecordIconComponent, RectangleHorizontalIconComponent, RectangleVerticalIconComponent, RedditIconComponent, RedoIconComponent, RefreshCcwIconComponent, RefreshCwIconComponent, RepeatIconComponent, RewindIconComponent, RightHalfStarIconComponent, RocketIconComponent, RotateCcwIconComponent, RotateCwIconComponent, RssIconComponent, SaveIconComponent, ScanIconComponent, ScissorsIconComponent, SearchIconComponent, SegmentedComponent, SendIconComponent, ServerIconComponent, SettingsIconComponent, ShareIconComponent, ShieldCheckIconComponent, ShieldIconComponent, ShieldOffIconComponent, ShopifyIconComponent, ShoppingBagIconComponent, ShoppingCartIconComponent, ShuffleIconComponent, SidebarIconComponent, SkeletonComponent, SkipBackIconComponent, SkipForwardIconComponent, Slack2IconComponent, SlackIconComponent, SlashIconComponent, SliderComponent, SlidersIconComponent, SmartphoneIconComponent, SmileIconComponent, SnowflakeIconComponent, SoccerBallIconComponent, SparklesIconComponent, SpeakerIconComponent, SpinnerComponent, SpotifyIconComponent, SquareIconComponent, StarIconComponent, StepComponent, StepperComponent, StopCircleIconComponent, StripeIconComponent, SubtitlesIconComponent, SunIconComponent, SunriseIconComponent, SunsetIconComponent, SvelteIconComponent, SwitchComponent, TabComponent, TableIconComponent, TabletIconComponent, TabsComponent, TagComponent, TagIconComponent, TailwindIconComponent, TargetIconComponent, TelegramIconComponent, TerminalIconComponent, TextareaComponent, ThermometerIconComponent, ThreadsIconComponent, ThumbsDownIconComponent, ThumbsUpIconComponent, TiktokIconComponent, TimePickerComponent, TimecodeIconComponent, TimelineComponent, TimerIconComponent, ToastComponent, ToastService, ToggleLeftIconComponent, ToggleRightIconComponent, ToolIconComponent, TooltipDirective, TranscodeIconComponent, TransferListComponent, Trash2IconComponent, TrashIconComponent, TreeComponent, TrelloIconComponent, TrendingDownIconComponent, TrendingUpIconComponent, TriangleIconComponent, TrimIconComponent, TrophyIconComponent, TruckIconComponent, TvIconComponent, Twitch2IconComponent, TwitchIconComponent, TwitterIconComponent, TypeIconComponent, UmbrellaIconComponent, UnderlineIconComponent, UndoIconComponent, UnlockIconComponent, UploadCloudIconComponent, UploadIconComponent, UserCheckIconComponent, UserIconComponent, UserMinusIconComponent, UserPlusIconComponent, UserXIconComponent, UsersIconComponent, VercelIconComponent, VideoIconComponent, VideoOffIconComponent, VirtualListComponent, VoicemailIconComponent, Volume1IconComponent, Volume2IconComponent, VolumeIconComponent, VolumeXIconComponent, VueIconComponent, WCAG_AA, WalletIconComponent, WandIconComponent, WatchIconComponent, WaveformIconComponent, WhatsappIconComponent, WifiIconComponent, WifiOffIconComponent, WindIconComponent, WordpressIconComponent, XCircleIconComponent, XIconComponent, XOctagonIconComponent, XSquareIconComponent, XTwitterIconComponent, Youtube2IconComponent, YoutubeIconComponent, ZapIconComponent, ZapOffIconComponent, ZoomInIconComponent, ZoomOutIconComponent, applyPalette, ar, computePopoverPosition, contrastRatio, de, derivePalette, el, en, esES, formatViolations, frFR, frenchSpacing, he, hexToOklch, hi, iconDisplayName, is, nl, oklchToHex, pl, provideEagamiUi, ptBR, relativeLuminance, ru, uk, validatePalette, visibleNodeIds, walkTree, zhCN };
7680
- export type { AccordionHeadingLevel, AccordionSize, AlertSize, AlertVariant, AutocompleteSize, AvatarEditorCropEvent, AvatarEditorCropState, AvatarEditorShape, AvatarShape, AvatarSize, BadgeShape, BadgeSize, BadgeVariant, BreadcrumbClickEvent, BreadcrumbItem, BreadcrumbsSeparator, BreadcrumbsSize, ButtonSize, ButtonType, ButtonVariant, CardHeaderAlign, CardPadding, CardVariant, CheckboxSize, CodeInputSize, ColorPickerFormat, ColorPickerInputMode, ColorPickerSize, ColorPickerValue, CommandPaletteItem, ContrastSurfaces, ContrastViolation, DataTableColumn, DataTableDensity, DataTableSize, DataTableSortDirection, DataTableSortState, DatePickerFormat, DatePickerSize, DatePickerValue, DatePickerWeekStart, DerivedPalette, DialogWidth, DividerOrientation, DrawerAnimation, DrawerMode, DrawerPosition, DrawerSize, DropdownSize, EaErrorMessages, EaSize, EaValidationErrorKey, EaWidth, EagamiI18nConfig, EagamiLocale, EagamiLocaleBundle, EagamiLocaleLoader, EagamiLocaleMeta, EagamiMessages, EagamiMessagesOverride, EagamiPaletteConfig, EagamiUiConfig, EagamiWordmarkLayout, EagamiWordmarkVariant, EmptyStateHeadingLevel, EmptyStateSize, FileUploaderRejection, FileUploaderRejectionReason, FileUploaderSize, FormFieldSize, IconCategory, IconComponentType, IconMeta, InputSize, InputType, MenuItemVariant, MenuPlacement, MenuSize, ModePalette, ModeSurfaces, MultiSelectSize, NumberInputSize, PaginatorAlign, PaginatorSize, PaginatorState, PaletteConfig, PaletteRoles, PaletteShade, PopoverPlacement, PopoverPositionOptions, PopoverPositionResult, PopoverRole, PopoverScrollBehavior, ProgressBarSize, ProgressBarVariant, RadioOrientation, RadioSize, RangeSliderSize, RangeSliderValue, RatingSize, RatingStarState, SegmentedSize, SelectOption, SkeletonVariant, SliderSize, SpinnerSize, StepperOrientation, StepperSize, SwitchSize, TabsSize, TabsVariant, TagSize, TagVariant, TextareaResize, TextareaSize, TimePickerFormat, TimePickerSize, TimelineAlign, TimelineItem, TimelineItemColor, TimelineOrientation, TimelineSize, Toast, ToastOptions, ToastPosition, ToastSize, ToastVariant, TooltipPosition, TransferListItem, TransferListSize, TreeNode, TreeSize, VirtualListItemContext };
7786
+ export type { AccordionHeadingLevel, AccordionSize, AlertSize, AlertVariant, AutocompleteSize, AvatarEditorCropEvent, AvatarEditorCropState, AvatarEditorShape, AvatarShape, AvatarSize, BadgeShape, BadgeSize, BadgeVariant, BreadcrumbClickEvent, BreadcrumbItem, BreadcrumbsSeparator, BreadcrumbsSize, ButtonSize, ButtonType, ButtonVariant, CardHeaderAlign, CardPadding, CardVariant, CheckboxSize, CodeInputSize, ColorPickerFormat, ColorPickerInputMode, ColorPickerSize, ColorPickerValue, CommandPaletteItem, ContrastSurfaces, ContrastViolation, DataTableColumn, DataTableDensity, DataTableSize, DataTableSortDirection, DataTableSortState, DatePickerFormat, DatePickerSize, DatePickerValue, DatePickerWeekStart, DerivedPalette, DialogWidth, DividerOrientation, DrawerAnimation, DrawerMode, DrawerPosition, DrawerSize, DropdownSize, EaErrorMessages, EaSize, EaValidationErrorKey, EaWidth, EagamiI18nConfig, EagamiLocale, EagamiLocaleBundle, EagamiLocaleLoader, EagamiLocaleMeta, EagamiMessages, EagamiMessagesOverride, EagamiPaletteConfig, EagamiUiConfig, EagamiWordmarkLayout, EagamiWordmarkVariant, EmptyStateHeadingLevel, EmptyStateSize, FileUploaderRejection, FileUploaderRejectionReason, FileUploaderSize, FormFieldSize, IconCategory, IconComponentType, IconMeta, InputSize, InputType, MenuItemVariant, MenuPlacement, MenuSize, ModePalette, ModeSurfaces, MultiSelectSize, NumberInputSize, PaginatorAlign, PaginatorSize, PaginatorState, PaletteConfig, PaletteRoles, PaletteShade, PopoverMaxWidth, PopoverPlacement, PopoverPositionOptions, PopoverPositionResult, PopoverRole, PopoverScrollBehavior, ProgressBarSize, ProgressBarVariant, RadioOrientation, RadioSize, RangeSliderSize, RangeSliderValue, RatingSize, RatingStarState, SegmentedSize, SelectOption, SkeletonVariant, SliderSize, SpinnerSize, StepperOrientation, StepperSize, SwitchSize, TabsSize, TabsVariant, TagSize, TagTooltip, TagVariant, TextareaResize, TextareaSize, TimePickerFormat, TimePickerSize, TimelineAlign, TimelineItem, TimelineItemColor, TimelineOrientation, TimelineSize, Toast, ToastOptions, ToastPosition, ToastSize, ToastVariant, TooltipPosition, TransferListItem, TransferListSize, TreeNode, TreeSize, VirtualListItemContext };