@ethlete/components 1.0.0-next.24 → 1.0.0-next.26

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,9 +1,9 @@
1
1
  import * as _angular_core from '@angular/core';
2
- import { Signal, WritableSignal, InjectionToken, ElementRef, TemplateRef, ViewContainerRef, Injector, Binding, StaticProvider, Provider, Type, InputSignal, OnInit, ComponentRef, ModelSignal, OnDestroy, computed, EnvironmentInjector, ApplicationRef } from '@angular/core';
2
+ import { Signal, WritableSignal, InjectionToken, ElementRef, TemplateRef, ViewContainerRef, Injector, Binding, StaticProvider, Provider, Type, OnInit, InputSignal, ComponentRef, ModelSignal, OnDestroy, computed, EnvironmentInjector, ApplicationRef } from '@angular/core';
3
3
  import * as _ethlete_core from '@ethlete/core';
4
- import { AnimatableDirective, OverlayRuntimeCloseSource, OverlayRuntimePositionStrategy, OverlayRuntimeCloseEvent, OverlayRuntimeRef, Breakpoint, AnimatedLifecycleDirective, AnimatedSizeAxis, ColorTheme, ResizeEdge, DragHandleDirective, ResizeMoveEvent, AnimatedLifecycleState, OverlayRuntimeShiftOptions, AngularRenderer, OverlayRuntimeAnimationDelegate, ScrollObserverDirective, ScrollToElementOptions, ConsentHandler, ProvideColorDirective } from '@ethlete/core';
4
+ import { AnimatableDirective, OverlayRuntimeCloseSource, OverlayRuntimeCloseGuard, OverlayRuntimePositionStrategy, OverlayRuntimeCloseEvent, OverlayRuntimeRef, Breakpoint, AnimatedLifecycleDirective, AnimatedSizeAxis, ColorTheme, ResizeEdge, DragHandleDirective, ResizeMoveEvent, CreateUnsavedChangesTrackerConfig, UnsavedChangesTrackerRef, AnimatedLifecycleState, OverlayRuntimeShiftOptions, AngularRenderer, OverlayRuntimeAnimationDelegate, ScrollObserverDirective, ScrollToElementOptions, ConsentHandler, ProvideColorDirective } from '@ethlete/core';
5
5
  import { Locale } from 'date-fns';
6
- import { AnyQueryCreator, RequestArgs, QueryArgsOf, ResponseType, QueryErrorResponse, QueryArgs, QueryCreator, AnyNewQuery, AnyV2QueryCreator, AnyLegacyQueryCreator, QueryDataOf, RequestError } from '@ethlete/query';
6
+ import { AnyQueryCreator, RequestArgs, QueryArgsOf, ResponseType, QueryErrorResponse, RequestError, QueryArgs, QueryCreator, AnyV2QueryCreator, AnyLegacyQueryCreator, QueryDataOf } from '@ethlete/query';
7
7
  import * as rxjs from 'rxjs';
8
8
  import { Observable } from 'rxjs';
9
9
  import * as _angular_forms_signals from '@angular/forms/signals';
@@ -401,6 +401,7 @@ declare const CASCADER_ERROR_CODES: {
401
401
 
402
402
  declare const FORM_FIELD_ERROR_CODES: {
403
403
  readonly MISSING_CONTROL: 2200;
404
+ readonly MISSING_LABEL: 2201;
404
405
  };
405
406
 
406
407
  declare const FORM_FIELD_CONTROL_TYPES: {
@@ -445,11 +446,24 @@ type FormFieldControl = {
445
446
  describedBy: WritableSignal<string | null>;
446
447
  controlType: Signal<FormFieldControlType>;
447
448
  focused?: Signal<boolean>;
449
+ /**
450
+ * True while the control's own popup (a date picker, select/cascader panel, …) is open. The
451
+ * field keeps its focused styling while set — focus itself has moved into the detached overlay,
452
+ * so `:focus-visible` no longer matches the field.
453
+ */
454
+ expanded?: Signal<boolean>;
448
455
  hasValue?: Signal<boolean>;
449
456
  /** True while the committed text can't be parsed (date/time/duration typed entry). */
450
457
  parseError?: Signal<boolean>;
451
458
  /** User-facing message shown when `parseError` is set and there is no validation error. */
452
459
  parseErrorMessage?: Signal<string>;
460
+ /**
461
+ * True when the control carries an author-supplied accessible name (its own `aria-label` /
462
+ * `aria-labelledby`) independent of a projected `<et-label>`. The field's dev-time labelling
463
+ * guard treats such a control as named even without an `<et-label>`. Controls that only support
464
+ * `<et-label>` for labelling leave this unset.
465
+ */
466
+ hasCustomAccessibleName?: Signal<boolean>;
453
467
  activate(): void;
454
468
  };
455
469
  type HintComponentBase = object;
@@ -491,6 +505,8 @@ declare class FormFieldDirective implements FormFieldDirectiveBase {
491
505
  parseErrorMessage: _angular_core.Signal<string | null>;
492
506
  controlType: _angular_core.Signal<_ethlete_components.FormFieldControlType>;
493
507
  focused: _angular_core.Signal<boolean>;
508
+ /** Whether the registered control's popup (picker/select/cascader panel) is open. */
509
+ expanded: _angular_core.Signal<boolean>;
494
510
  hasValue: _angular_core.Signal<boolean>;
495
511
  isReadonly: _angular_core.Signal<boolean>;
496
512
  isDisabled: _angular_core.Signal<boolean>;
@@ -649,6 +665,8 @@ declare const wireFormSupport: (support: FormSupport, refs: {
649
665
  hintAnimatable: Signal<AnimatableDirective | undefined>;
650
666
  }) => void;
651
667
 
668
+ /** A synchronous veto for a pending overlay close — see {@link OverlayRuntimeCloseGuard}. */
669
+ type OverlayCloseGuard<TResult = unknown> = OverlayRuntimeCloseGuard<TResult | undefined>;
652
670
  declare const createOverlayRef: <TComponent extends object, TResult = unknown>(config: OverlayConfig) => {
653
671
  readonly id: string;
654
672
  readonly elements: _ethlete_core.OverlayRuntimeElements | null;
@@ -659,6 +677,8 @@ declare const createOverlayRef: <TComponent extends object, TResult = unknown>(c
659
677
  componentInstance: () => TComponent | null;
660
678
  close: (result?: TResult) => void;
661
679
  closeVia: (source: OverlayRuntimeCloseSource, result?: TResult) => void;
680
+ registerCloseGuard: (guard: OverlayCloseGuard<TResult>) => (() => void);
681
+ forceClose: (source?: OverlayRuntimeCloseSource, result?: TResult) => void;
662
682
  updatePositionStrategy: (strategy: OverlayRuntimePositionStrategy) => void;
663
683
  attachComponentInstanceOverride: (getter: () => TComponent | null) => void;
664
684
  afterOpened: () => Observable<void>;
@@ -678,6 +698,8 @@ declare const OVERLAY_REF: InjectionToken<{
678
698
  componentInstance: () => object | null;
679
699
  close: (result?: unknown) => void;
680
700
  closeVia: (source: OverlayRuntimeCloseSource, result?: unknown) => void;
701
+ registerCloseGuard: (guard: OverlayCloseGuard<unknown>) => () => void;
702
+ forceClose: (source?: OverlayRuntimeCloseSource, result?: unknown) => void;
681
703
  updatePositionStrategy: (strategy: OverlayRuntimePositionStrategy) => void;
682
704
  attachComponentInstanceOverride: (getter: () => object | null) => void;
683
705
  afterOpened: () => Observable<void>;
@@ -1074,6 +1096,15 @@ declare const registerSingleton: <T>(target: WritableSignal<T | null> | null | u
1074
1096
  declare abstract class TextFieldControlDirective implements FormFieldControl {
1075
1097
  private formField;
1076
1098
  touched: _angular_core.ModelSignal<boolean>;
1099
+ /**
1100
+ * View state for a bulk-edit field whose source values disagree. While set, the raw `value`
1101
+ * stays untouched but is masked: the native control renders empty with `mixedLabel` as its
1102
+ * placeholder. The first user edit that produces content commits over the raw value (replace
1103
+ * semantics) and resolves `mixed`; external/programmatic value writes do not.
1104
+ */
1105
+ mixed: _angular_core.ModelSignal<boolean>;
1106
+ /** Placeholder text shown while `mixed` is set — overrides the consumer placeholder. */
1107
+ mixedLabel: _angular_core.InputSignal<string>;
1077
1108
  disabled: _angular_core.InputSignal<boolean>;
1078
1109
  readonly: _angular_core.InputSignal<boolean>;
1079
1110
  hidden: _angular_core.InputSignal<boolean>;
@@ -1081,18 +1112,34 @@ declare abstract class TextFieldControlDirective implements FormFieldControl {
1081
1112
  errors: _angular_core.InputSignal<readonly ValidationError.WithOptionalFieldTree[]>;
1082
1113
  required: _angular_core.InputSignal<boolean>;
1083
1114
  name: _angular_core.InputSignal<string>;
1115
+ /**
1116
+ * Author-supplied accessible name, forwarded onto the native control. Use this (or an
1117
+ * `<et-label>`) when the field has no visible label — a placeholder is not an accessible name.
1118
+ */
1119
+ ariaLabel: _angular_core.InputSignal<string | null>;
1120
+ /**
1121
+ * Author-supplied `aria-labelledby`, forwarded onto the native control. Takes precedence over the
1122
+ * id of a projected `<et-label>`.
1123
+ */
1124
+ ariaLabelledby: _angular_core.InputSignal<string | null>;
1084
1125
  shouldDisplayError: Signal<boolean>;
1085
1126
  describedBy: _angular_core.WritableSignal<string | null>;
1086
1127
  focused: _angular_core.WritableSignal<boolean>;
1087
1128
  /** @internal The element `activate()` focuses — the native control by default. */
1088
1129
  focusTarget: _angular_core.WritableSignal<HTMLElement | null>;
1130
+ private registeredLabelId;
1131
+ /**
1132
+ * The `aria-labelledby` the native control should render: a consumer-supplied value wins,
1133
+ * otherwise the id of a projected `<et-label>`.
1134
+ */
1089
1135
  labelId: Signal<string | null>;
1136
+ hasCustomAccessibleName: Signal<boolean>;
1090
1137
  /** The control-type tag the form-field switches its shell/aria on. */
1091
1138
  abstract controlType: Signal<FormFieldControlType>;
1092
1139
  constructor();
1093
1140
  activate(): void;
1094
1141
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<TextFieldControlDirective, never>;
1095
- static ɵdir: _angular_core.ɵɵDirectiveDeclaration<TextFieldControlDirective, never, never, { "touched": { "alias": "touched"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "readonly": { "alias": "readonly"; "required": false; "isSignal": true; }; "hidden": { "alias": "hidden"; "required": false; "isSignal": true; }; "invalid": { "alias": "invalid"; "required": false; "isSignal": true; }; "errors": { "alias": "errors"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "name": { "alias": "name"; "required": false; "isSignal": true; }; }, { "touched": "touchedChange"; }, never, never, true, never>;
1142
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<TextFieldControlDirective, never, never, { "touched": { "alias": "touched"; "required": false; "isSignal": true; }; "mixed": { "alias": "mixed"; "required": false; "isSignal": true; }; "mixedLabel": { "alias": "mixedLabel"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "readonly": { "alias": "readonly"; "required": false; "isSignal": true; }; "hidden": { "alias": "hidden"; "required": false; "isSignal": true; }; "invalid": { "alias": "invalid"; "required": false; "isSignal": true; }; "errors": { "alias": "errors"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "name": { "alias": "name"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "aria-label"; "required": false; "isSignal": true; }; "ariaLabelledby": { "alias": "aria-labelledby"; "required": false; "isSignal": true; }; }, { "touched": "touchedChange"; "mixed": "mixedChange"; }, never, never, true, never>;
1096
1143
  }
1097
1144
 
1098
1145
  /** A single entry in a cascader's hierarchy. `T` is the consumer's value type. */
@@ -1213,6 +1260,8 @@ declare class CascaderDirective<T = unknown> implements FormValueControl<T | T[]
1213
1260
  private bottomSheetStrategy;
1214
1261
  /** The committed value: `T | null` in single mode, `T[]` with `multiple`. */
1215
1262
  value: _angular_core.ModelSignal<T | T[] | null>;
1263
+ /** View state for a field whose source values disagree. The raw form value stays untouched. */
1264
+ mixed: _angular_core.ModelSignal<boolean>;
1216
1265
  touched: _angular_core.ModelSignal<boolean>;
1217
1266
  open: _angular_core.ModelSignal<boolean>;
1218
1267
  disabled: _angular_core.InputSignal<boolean>;
@@ -1224,6 +1273,8 @@ declare class CascaderDirective<T = unknown> implements FormValueControl<T | T[]
1224
1273
  required: _angular_core.InputSignal<boolean>;
1225
1274
  name: _angular_core.InputSignal<string>;
1226
1275
  placeholder: _angular_core.InputSignal<string>;
1276
+ /** Trigger text shown while `mixed` is set. */
1277
+ mixedLabel: _angular_core.InputSignal<string>;
1227
1278
  /** The hierarchical source browsed by the cascader. Required. */
1228
1279
  dataSource: _angular_core.InputSignal<CascaderDataSource<T> | null>;
1229
1280
  /** Whether only leaves (`'leaf'`, default) or any node (`'any'`) can be committed as the value. */
@@ -1255,6 +1306,8 @@ declare class CascaderDirective<T = unknown> implements FormValueControl<T | T[]
1255
1306
  /** @internal Set by the trigger. The field also counts as focused while the panel is open. */
1256
1307
  triggerFocused: _angular_core.WritableSignal<boolean>;
1257
1308
  focused: Signal<boolean>;
1309
+ /** @internal Keeps the form field in its focused style while the panel is open. */
1310
+ expanded: Signal<boolean>;
1258
1311
  labelId: Signal<string | null>;
1259
1312
  /** @internal */
1260
1313
  registeredTrigger: _angular_core.WritableSignal<CascaderTriggerLike | null>;
@@ -1426,7 +1479,7 @@ declare class CascaderDirective<T = unknown> implements FormValueControl<T | T[]
1426
1479
  private resolveAnchorElement;
1427
1480
  private handleFrameClick;
1428
1481
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<CascaderDirective<any>, never>;
1429
- static ɵdir: _angular_core.ɵɵDirectiveDeclaration<CascaderDirective<any>, "[etCascader]", ["etCascader"], { "value": { "alias": "value"; "required": false; "isSignal": true; }; "touched": { "alias": "touched"; "required": false; "isSignal": true; }; "open": { "alias": "open"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "readonly": { "alias": "readonly"; "required": false; "isSignal": true; }; "multiple": { "alias": "multiple"; "required": false; "isSignal": true; }; "invalid": { "alias": "invalid"; "required": false; "isSignal": true; }; "errors": { "alias": "errors"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "name": { "alias": "name"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "dataSource": { "alias": "dataSource"; "required": false; "isSignal": true; }; "selectableLevels": { "alias": "selectableLevels"; "required": false; "isSignal": true; }; "compareWith": { "alias": "compareWith"; "required": false; "isSignal": true; }; "toErrorMessage": { "alias": "toErrorMessage"; "required": false; "isSignal": true; }; "mirrorPanelWidth": { "alias": "mirrorPanelWidth"; "required": false; "isSignal": true; }; "maxVisibleColumns": { "alias": "maxVisibleColumns"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "touched": "touchedChange"; "open": "openChange"; "opened": "opened"; "closed": "closed"; }, never, never, true, never>;
1482
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<CascaderDirective<any>, "[etCascader]", ["etCascader"], { "value": { "alias": "value"; "required": false; "isSignal": true; }; "mixed": { "alias": "mixed"; "required": false; "isSignal": true; }; "touched": { "alias": "touched"; "required": false; "isSignal": true; }; "open": { "alias": "open"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "readonly": { "alias": "readonly"; "required": false; "isSignal": true; }; "multiple": { "alias": "multiple"; "required": false; "isSignal": true; }; "invalid": { "alias": "invalid"; "required": false; "isSignal": true; }; "errors": { "alias": "errors"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "name": { "alias": "name"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "mixedLabel": { "alias": "mixedLabel"; "required": false; "isSignal": true; }; "dataSource": { "alias": "dataSource"; "required": false; "isSignal": true; }; "selectableLevels": { "alias": "selectableLevels"; "required": false; "isSignal": true; }; "compareWith": { "alias": "compareWith"; "required": false; "isSignal": true; }; "toErrorMessage": { "alias": "toErrorMessage"; "required": false; "isSignal": true; }; "mirrorPanelWidth": { "alias": "mirrorPanelWidth"; "required": false; "isSignal": true; }; "maxVisibleColumns": { "alias": "maxVisibleColumns"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "mixed": "mixedChange"; "touched": "touchedChange"; "open": "openChange"; "opened": "opened"; "closed": "closed"; }, never, never, true, never>;
1430
1483
  }
1431
1484
  type CascaderSurfaceContext<T = unknown> = {
1432
1485
  $implicit: CascaderDirective<T>;
@@ -1656,7 +1709,7 @@ declare class CascaderComponent {
1656
1709
  /** Whether a breadcrumb's column is currently inside the window (its level is on screen). */
1657
1710
  protected isCrumbCurrent(columnIndex: number): boolean;
1658
1711
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<CascaderComponent, never>;
1659
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<CascaderComponent, "et-cascader", never, { "clearable": { "alias": "clearable"; "required": false; "isSignal": true; }; "clearLabel": { "alias": "clearLabel"; "required": false; "isSignal": true; }; "backLabel": { "alias": "backLabel"; "required": false; "isSignal": true; }; "searchPlaceholder": { "alias": "searchPlaceholder"; "required": false; "isSignal": true; }; }, {}, never, never, true, [{ directive: typeof CascaderDirective; inputs: { "value": "value"; "touched": "touched"; "open": "open"; "dataSource": "dataSource"; "multiple": "multiple"; "selectableLevels": "selectableLevels"; "compareWith": "compareWith"; "toErrorMessage": "toErrorMessage"; "mirrorPanelWidth": "mirrorPanelWidth"; "maxVisibleColumns": "maxVisibleColumns"; "placeholder": "placeholder"; "disabled": "disabled"; "readonly": "readonly"; "invalid": "invalid"; "errors": "errors"; "required": "required"; "name": "name"; }; outputs: { "valueChange": "valueChange"; "touchedChange": "touchedChange"; "openChange": "openChange"; "opened": "opened"; "closed": "closed"; }; }, { directive: typeof _ethlete_core.ColorInteractiveDirective; inputs: {}; outputs: {}; }]>;
1712
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<CascaderComponent, "et-cascader", never, { "clearable": { "alias": "clearable"; "required": false; "isSignal": true; }; "clearLabel": { "alias": "clearLabel"; "required": false; "isSignal": true; }; "backLabel": { "alias": "backLabel"; "required": false; "isSignal": true; }; "searchPlaceholder": { "alias": "searchPlaceholder"; "required": false; "isSignal": true; }; }, {}, never, never, true, [{ directive: typeof CascaderDirective; inputs: { "value": "value"; "mixed": "mixed"; "touched": "touched"; "open": "open"; "dataSource": "dataSource"; "multiple": "multiple"; "selectableLevels": "selectableLevels"; "compareWith": "compareWith"; "toErrorMessage": "toErrorMessage"; "mirrorPanelWidth": "mirrorPanelWidth"; "maxVisibleColumns": "maxVisibleColumns"; "mixedLabel": "mixedLabel"; "placeholder": "placeholder"; "disabled": "disabled"; "readonly": "readonly"; "invalid": "invalid"; "errors": "errors"; "required": "required"; "name": "name"; }; outputs: { "valueChange": "valueChange"; "mixedChange": "mixedChange"; "touchedChange": "touchedChange"; "openChange": "openChange"; "opened": "opened"; "closed": "closed"; }; }, { directive: typeof _ethlete_core.ColorInteractiveDirective; inputs: {}; outputs: {}; }]>;
1660
1713
  }
1661
1714
 
1662
1715
  declare const CASCADER_IMPORTS: readonly [typeof CascaderComponent, typeof CascaderPanelComponent, typeof CascaderDirective, typeof CascaderTriggerDirective, typeof CascaderSurfaceDirective, typeof CascaderColumnDirective, typeof CascaderNodeDirective, typeof CascaderSearchDirective, typeof CascaderSearchOptionDirective];
@@ -1780,8 +1833,15 @@ declare class ColorInputDirective extends TextFieldControlDirective implements F
1780
1833
  * and the value sync no-ops as a backstop.
1781
1834
  */
1782
1835
  interactive: _angular_core.Signal<boolean>;
1783
- /** The color the native input currently paints — `#000000` until a value is picked. */
1836
+ /**
1837
+ * The color the native input currently paints — `#000000` until a value is picked, and
1838
+ * while mixed (the picker must not preselect and thereby reveal the hidden raw color).
1839
+ */
1784
1840
  resolvedColor: _angular_core.Signal<string>;
1841
+ /** The color the swatch paints — `null` while mixed so the CSS neutral treatment takes over. */
1842
+ swatchColor: _angular_core.Signal<string | null>;
1843
+ /** The text the value slot renders — `mixedLabel` while mixed, never the hidden raw color. */
1844
+ displayValue: _angular_core.Signal<string>;
1785
1845
  controlType: _angular_core.WritableSignal<"color-input">;
1786
1846
  /**
1787
1847
  * The native color input this directive controls. Set automatically when the
@@ -1790,7 +1850,10 @@ declare class ColorInputDirective extends TextFieldControlDirective implements F
1790
1850
  */
1791
1851
  nativeControl: _angular_core.WritableSignal<HTMLInputElement | null>;
1792
1852
  constructor();
1793
- /** @internal */
1853
+ /**
1854
+ * @internal Routes a picked color from the native input into the model. Picking is the
1855
+ * commit over a mixed state: it replaces the raw value and resolves `mixed`.
1856
+ */
1794
1857
  syncFromNativeInput(inputElement: HTMLInputElement): void;
1795
1858
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<ColorInputDirective, never>;
1796
1859
  static ɵdir: _angular_core.ɵɵDirectiveDeclaration<ColorInputDirective, "[etColorInput]", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; }, never, never, true, never>;
@@ -1808,7 +1871,7 @@ declare class ColorInputComponent {
1808
1871
  */
1809
1872
  protected blockWhenReadonly(event: Event): void;
1810
1873
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<ColorInputComponent, never>;
1811
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<ColorInputComponent, "et-color-input", never, {}, {}, never, never, true, [{ directive: typeof ColorInputDirective; inputs: { "value": "value"; "disabled": "disabled"; "readonly": "readonly"; "hidden": "hidden"; "invalid": "invalid"; "errors": "errors"; "required": "required"; "name": "name"; }; outputs: { "valueChange": "valueChange"; "touchedChange": "touchedChange"; }; }, { directive: typeof _ethlete_core.ColorInteractiveDirective; inputs: {}; outputs: {}; }]>;
1874
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ColorInputComponent, "et-color-input", never, {}, {}, never, never, true, [{ directive: typeof ColorInputDirective; inputs: { "value": "value"; "mixed": "mixed"; "mixedLabel": "mixedLabel"; "disabled": "disabled"; "readonly": "readonly"; "hidden": "hidden"; "invalid": "invalid"; "errors": "errors"; "required": "required"; "name": "name"; "aria-label": "aria-label"; "aria-labelledby": "aria-labelledby"; }; outputs: { "valueChange": "valueChange"; "mixedChange": "mixedChange"; "touchedChange": "touchedChange"; }; }, { directive: typeof _ethlete_core.ColorInteractiveDirective; inputs: {}; outputs: {}; }]>;
1812
1875
  }
1813
1876
 
1814
1877
  declare const COLOR_INPUT_IMPORTS: readonly [typeof ColorInputComponent, typeof ColorInputDirective];
@@ -1829,6 +1892,12 @@ declare const DATE_INPUT_ERROR_CODES: {
1829
1892
  type InputMaskHost = {
1830
1893
  /** The text model the mask writes — raw or masked per `maskValueMode`. */
1831
1894
  value: WritableSignal<string>;
1895
+ /**
1896
+ * Bulk-edit mixed state of the host, when it has one. While set, the mask leaves the
1897
+ * host's (empty) mixed display alone instead of repainting the hidden raw value, and the
1898
+ * first edit that produces raw content commits it and resolves the flag.
1899
+ */
1900
+ mixed?: WritableSignal<boolean>;
1832
1901
  /** Whether the field has focus — drives the guide display. */
1833
1902
  focused: Signal<boolean>;
1834
1903
  /** The native input element the mask rewrites. */
@@ -1892,7 +1961,7 @@ type DatePickerInputFieldBase = {
1892
1961
  declare abstract class DatePickerInputDirective implements FormValueControl<string | null>, FormFieldControl, DatePickerHost {
1893
1962
  private formField;
1894
1963
  private document;
1895
- protected defaultLocale: Locale | null;
1964
+ defaultLocale: Locale | null;
1896
1965
  /** date-fns wire format used when `valueFormat` is unset — the token differs per control. */
1897
1966
  protected abstract defaultValueFormat: string;
1898
1967
  /** The form-field control-type tag (date-input / time-input / date-time-input). */
@@ -1909,6 +1978,8 @@ declare abstract class DatePickerInputDirective implements FormValueControl<stri
1909
1978
  abstract commitInput(raw: string): void;
1910
1979
  /** The wire value in `valueFormat`, or `null` while empty/unparseable. */
1911
1980
  value: _angular_core.ModelSignal<string | null>;
1981
+ /** View state for a field whose source values disagree (bulk edit). The raw form value stays untouched. */
1982
+ mixed: _angular_core.ModelSignal<boolean>;
1912
1983
  touched: _angular_core.ModelSignal<boolean>;
1913
1984
  disabled: _angular_core.InputSignal<boolean>;
1914
1985
  readonly: _angular_core.InputSignal<boolean>;
@@ -1917,6 +1988,12 @@ declare abstract class DatePickerInputDirective implements FormValueControl<stri
1917
1988
  required: _angular_core.InputSignal<boolean>;
1918
1989
  name: _angular_core.InputSignal<string>;
1919
1990
  placeholder: _angular_core.InputSignal<string>;
1991
+ /**
1992
+ * Field placeholder shown while `mixed` is set. Presentation only — a masked
1993
+ * date field cannot render arbitrary text, so the field stays empty and the
1994
+ * label shows through the placeholder slot; it never enters the form value.
1995
+ */
1996
+ mixedLabel: _angular_core.InputSignal<string>;
1920
1997
  /** date-fns format of the string value. Defaults to the control's format token. */
1921
1998
  valueFormat: _angular_core.InputSignal<string | undefined>;
1922
1999
  locale: _angular_core.InputSignal<Locale | null>;
@@ -1937,6 +2014,8 @@ declare abstract class DatePickerInputDirective implements FormValueControl<stri
1937
2014
  /** `true` while the field holds text that does not parse. */
1938
2015
  parseError: _angular_core.WritableSignal<boolean>;
1939
2016
  focused: _angular_core.WritableSignal<boolean>;
2017
+ /** @internal Keeps the form field in its focused style while the picker overlay is open. */
2018
+ expanded: Signal<boolean>;
1940
2019
  describedBy: _angular_core.WritableSignal<string | null>;
1941
2020
  /** @internal */
1942
2021
  registeredField: _angular_core.WritableSignal<DatePickerInputFieldBase | null>;
@@ -1947,6 +2026,8 @@ declare abstract class DatePickerInputDirective implements FormValueControl<stri
1947
2026
  interactive: Signal<boolean>;
1948
2027
  hasValue: Signal<boolean>;
1949
2028
  shouldDisplayError: Signal<boolean>;
2029
+ /** What the field renders as its placeholder — `mixedLabel` while mixed masks the value. */
2030
+ effectivePlaceholder: Signal<string>;
1950
2031
  labelId: Signal<string | null>;
1951
2032
  /** The `[etInputMask]` pattern derived from `displayFormat` — `null` while `mask` is off or the format is refused. */
1952
2033
  maskPattern: Signal<string | null>;
@@ -1958,9 +2039,9 @@ declare abstract class DatePickerInputDirective implements FormValueControl<stri
1958
2039
  openPicker(): void;
1959
2040
  closePicker(): void;
1960
2041
  togglePicker(): void;
1961
- protected resolveAnchorElement(): HTMLElement | undefined;
2042
+ resolveAnchorElement(): HTMLElement | undefined;
1962
2043
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<DatePickerInputDirective, never>;
1963
- static ɵdir: _angular_core.ɵɵDirectiveDeclaration<DatePickerInputDirective, never, never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "touched": { "alias": "touched"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "readonly": { "alias": "readonly"; "required": false; "isSignal": true; }; "invalid": { "alias": "invalid"; "required": false; "isSignal": true; }; "errors": { "alias": "errors"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "name": { "alias": "name"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "valueFormat": { "alias": "valueFormat"; "required": false; "isSignal": true; }; "locale": { "alias": "locale"; "required": false; "isSignal": true; }; "mask": { "alias": "mask"; "required": false; "isSignal": true; }; "pickerOpen": { "alias": "pickerOpen"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "touched": "touchedChange"; "pickerOpen": "pickerOpenChange"; }, never, never, true, never>;
2044
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<DatePickerInputDirective, never, never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "mixed": { "alias": "mixed"; "required": false; "isSignal": true; }; "touched": { "alias": "touched"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "readonly": { "alias": "readonly"; "required": false; "isSignal": true; }; "invalid": { "alias": "invalid"; "required": false; "isSignal": true; }; "errors": { "alias": "errors"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "name": { "alias": "name"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "mixedLabel": { "alias": "mixedLabel"; "required": false; "isSignal": true; }; "valueFormat": { "alias": "valueFormat"; "required": false; "isSignal": true; }; "locale": { "alias": "locale"; "required": false; "isSignal": true; }; "mask": { "alias": "mask"; "required": false; "isSignal": true; }; "pickerOpen": { "alias": "pickerOpen"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "mixed": "mixedChange"; "touched": "touchedChange"; "pickerOpen": "pickerOpenChange"; }, never, never, true, never>;
1964
2045
  }
1965
2046
 
1966
2047
  /**
@@ -2061,7 +2142,7 @@ declare class DateInputComponent {
2061
2142
  protected showClear: _angular_core.Signal<boolean>;
2062
2143
  protected handleClearClick(event: Event): void;
2063
2144
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<DateInputComponent, never>;
2064
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<DateInputComponent, "et-date-input", never, { "pickerTriggerLabel": { "alias": "pickerTriggerLabel"; "required": false; "isSignal": true; }; "clearable": { "alias": "clearable"; "required": false; "isSignal": true; }; "clearLabel": { "alias": "clearLabel"; "required": false; "isSignal": true; }; }, {}, never, never, true, [{ directive: typeof DateInputDirective; inputs: { "value": "value"; "touched": "touched"; "disabled": "disabled"; "readonly": "readonly"; "invalid": "invalid"; "errors": "errors"; "required": "required"; "name": "name"; "placeholder": "placeholder"; "parseErrorMessage": "parseErrorMessage"; "valueFormat": "valueFormat"; "displayFormat": "displayFormat"; "locale": "locale"; "mask": "mask"; "minDate": "minDate"; "maxDate": "maxDate"; "dateFilter": "dateFilter"; "pickerOpen": "pickerOpen"; }; outputs: { "valueChange": "valueChange"; "touchedChange": "touchedChange"; "pickerOpenChange": "pickerOpenChange"; }; }]>;
2145
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<DateInputComponent, "et-date-input", never, { "pickerTriggerLabel": { "alias": "pickerTriggerLabel"; "required": false; "isSignal": true; }; "clearable": { "alias": "clearable"; "required": false; "isSignal": true; }; "clearLabel": { "alias": "clearLabel"; "required": false; "isSignal": true; }; }, {}, never, never, true, [{ directive: typeof DateInputDirective; inputs: { "value": "value"; "mixed": "mixed"; "mixedLabel": "mixedLabel"; "touched": "touched"; "disabled": "disabled"; "readonly": "readonly"; "invalid": "invalid"; "errors": "errors"; "required": "required"; "name": "name"; "placeholder": "placeholder"; "parseErrorMessage": "parseErrorMessage"; "valueFormat": "valueFormat"; "displayFormat": "displayFormat"; "locale": "locale"; "mask": "mask"; "minDate": "minDate"; "maxDate": "maxDate"; "dateFilter": "dateFilter"; "pickerOpen": "pickerOpen"; }; outputs: { "valueChange": "valueChange"; "mixedChange": "mixedChange"; "touchedChange": "touchedChange"; "pickerOpenChange": "pickerOpenChange"; }; }]>;
2065
2146
  }
2066
2147
 
2067
2148
  /** The template rendered inside a date control's picker overlay pane. */
@@ -2116,6 +2197,11 @@ declare class DateRangeInputDirective implements FormValueControl<DateRangeValue
2116
2197
  private defaultLocale;
2117
2198
  /** Wire values in `valueFormat`; a side is `null` while empty/unparseable. */
2118
2199
  value: _angular_core.ModelSignal<DateRangeValue>;
2200
+ /**
2201
+ * View state for a field whose source values disagree (bulk edit). One flag masks
2202
+ * the whole range value — not per side. The raw form value stays untouched.
2203
+ */
2204
+ mixed: _angular_core.ModelSignal<boolean>;
2119
2205
  touched: _angular_core.ModelSignal<boolean>;
2120
2206
  disabled: _angular_core.InputSignal<boolean>;
2121
2207
  readonly: _angular_core.InputSignal<boolean>;
@@ -2125,6 +2211,12 @@ declare class DateRangeInputDirective implements FormValueControl<DateRangeValue
2125
2211
  name: _angular_core.InputSignal<string>;
2126
2212
  startPlaceholder: _angular_core.InputSignal<string>;
2127
2213
  endPlaceholder: _angular_core.InputSignal<string>;
2214
+ /**
2215
+ * Placeholder both fields show while `mixed` is set. Presentation only — a masked
2216
+ * date field cannot render arbitrary text, so the fields stay empty and the label
2217
+ * shows through the placeholder slot; it never enters the form value.
2218
+ */
2219
+ mixedLabel: _angular_core.InputSignal<string>;
2128
2220
  /** Message the form field shows when either side's typed text can't be parsed as a date. */
2129
2221
  parseErrorMessage: _angular_core.InputSignal<string>;
2130
2222
  /** date-fns format of the string values. Defaults to the `DATE_FORMAT` token. */
@@ -2164,6 +2256,8 @@ declare class DateRangeInputDirective implements FormValueControl<DateRangeValue
2164
2256
  describedBy: _angular_core.WritableSignal<string | null>;
2165
2257
  controlType: _angular_core.WritableSignal<"date-range-input">;
2166
2258
  focused: Signal<boolean>;
2259
+ /** @internal Keeps the form field in its focused style while the picker overlay is open. */
2260
+ expanded: Signal<boolean>;
2167
2261
  /** @internal */
2168
2262
  registeredTrigger: _angular_core.WritableSignal<DatePickerTriggerDirective | null>;
2169
2263
  /** @internal */
@@ -2193,6 +2287,8 @@ declare class DateRangeInputDirective implements FormValueControl<DateRangeValue
2193
2287
  start: Date | null;
2194
2288
  end: Date | null;
2195
2289
  }): void;
2290
+ /** Clears both sides and any uncommitted field text — wired to the styled input's clear button. */
2291
+ clearRange(): void;
2196
2292
  /** @internal */
2197
2293
  registerField(side: DateRangeSide, field: DateRangeInputFieldDirective): void;
2198
2294
  /** @internal */
@@ -2201,7 +2297,7 @@ declare class DateRangeInputDirective implements FormValueControl<DateRangeValue
2201
2297
  private writeSide;
2202
2298
  private resolveAnchorElement;
2203
2299
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<DateRangeInputDirective, never>;
2204
- static ɵdir: _angular_core.ɵɵDirectiveDeclaration<DateRangeInputDirective, "[etDateRangeInput]", ["etDateRangeInput"], { "value": { "alias": "value"; "required": false; "isSignal": true; }; "touched": { "alias": "touched"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "readonly": { "alias": "readonly"; "required": false; "isSignal": true; }; "invalid": { "alias": "invalid"; "required": false; "isSignal": true; }; "errors": { "alias": "errors"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "name": { "alias": "name"; "required": false; "isSignal": true; }; "startPlaceholder": { "alias": "startPlaceholder"; "required": false; "isSignal": true; }; "endPlaceholder": { "alias": "endPlaceholder"; "required": false; "isSignal": true; }; "parseErrorMessage": { "alias": "parseErrorMessage"; "required": false; "isSignal": true; }; "valueFormat": { "alias": "valueFormat"; "required": false; "isSignal": true; }; "displayFormat": { "alias": "displayFormat"; "required": false; "isSignal": true; }; "locale": { "alias": "locale"; "required": false; "isSignal": true; }; "mask": { "alias": "mask"; "required": false; "isSignal": true; }; "minDate": { "alias": "minDate"; "required": false; "isSignal": true; }; "maxDate": { "alias": "maxDate"; "required": false; "isSignal": true; }; "dateFilter": { "alias": "dateFilter"; "required": false; "isSignal": true; }; "pickerOpen": { "alias": "pickerOpen"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "touched": "touchedChange"; "pickerOpen": "pickerOpenChange"; }, never, never, true, never>;
2300
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<DateRangeInputDirective, "[etDateRangeInput]", ["etDateRangeInput"], { "value": { "alias": "value"; "required": false; "isSignal": true; }; "mixed": { "alias": "mixed"; "required": false; "isSignal": true; }; "touched": { "alias": "touched"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "readonly": { "alias": "readonly"; "required": false; "isSignal": true; }; "invalid": { "alias": "invalid"; "required": false; "isSignal": true; }; "errors": { "alias": "errors"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "name": { "alias": "name"; "required": false; "isSignal": true; }; "startPlaceholder": { "alias": "startPlaceholder"; "required": false; "isSignal": true; }; "endPlaceholder": { "alias": "endPlaceholder"; "required": false; "isSignal": true; }; "mixedLabel": { "alias": "mixedLabel"; "required": false; "isSignal": true; }; "parseErrorMessage": { "alias": "parseErrorMessage"; "required": false; "isSignal": true; }; "valueFormat": { "alias": "valueFormat"; "required": false; "isSignal": true; }; "displayFormat": { "alias": "displayFormat"; "required": false; "isSignal": true; }; "locale": { "alias": "locale"; "required": false; "isSignal": true; }; "mask": { "alias": "mask"; "required": false; "isSignal": true; }; "minDate": { "alias": "minDate"; "required": false; "isSignal": true; }; "maxDate": { "alias": "maxDate"; "required": false; "isSignal": true; }; "dateFilter": { "alias": "dateFilter"; "required": false; "isSignal": true; }; "pickerOpen": { "alias": "pickerOpen"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "mixed": "mixedChange"; "touched": "touchedChange"; "pickerOpen": "pickerOpenChange"; }, never, never, true, never>;
2205
2301
  }
2206
2302
 
2207
2303
  /**
@@ -2253,8 +2349,13 @@ declare class DateRangeInputComponent {
2253
2349
  startAriaLabel: _angular_core.InputSignal<string>;
2254
2350
  endAriaLabel: _angular_core.InputSignal<string>;
2255
2351
  pickerTriggerLabel: _angular_core.InputSignal<string>;
2352
+ /** Shows a clear (×) control while a value is set and the field is in use. */
2353
+ clearable: _angular_core.InputSignal<boolean>;
2354
+ clearLabel: _angular_core.InputSignal<string>;
2355
+ protected showClear: _angular_core.Signal<boolean>;
2356
+ protected handleClearClick(event: Event): void;
2256
2357
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<DateRangeInputComponent, never>;
2257
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<DateRangeInputComponent, "et-date-range-input", never, { "startAriaLabel": { "alias": "startAriaLabel"; "required": false; "isSignal": true; }; "endAriaLabel": { "alias": "endAriaLabel"; "required": false; "isSignal": true; }; "pickerTriggerLabel": { "alias": "pickerTriggerLabel"; "required": false; "isSignal": true; }; }, {}, never, never, true, [{ directive: typeof DateRangeInputDirective; inputs: { "value": "value"; "touched": "touched"; "disabled": "disabled"; "readonly": "readonly"; "invalid": "invalid"; "errors": "errors"; "required": "required"; "name": "name"; "startPlaceholder": "startPlaceholder"; "endPlaceholder": "endPlaceholder"; "parseErrorMessage": "parseErrorMessage"; "valueFormat": "valueFormat"; "displayFormat": "displayFormat"; "locale": "locale"; "mask": "mask"; "minDate": "minDate"; "maxDate": "maxDate"; "dateFilter": "dateFilter"; "pickerOpen": "pickerOpen"; }; outputs: { "valueChange": "valueChange"; "touchedChange": "touchedChange"; "pickerOpenChange": "pickerOpenChange"; }; }]>;
2358
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<DateRangeInputComponent, "et-date-range-input", never, { "startAriaLabel": { "alias": "startAriaLabel"; "required": false; "isSignal": true; }; "endAriaLabel": { "alias": "endAriaLabel"; "required": false; "isSignal": true; }; "pickerTriggerLabel": { "alias": "pickerTriggerLabel"; "required": false; "isSignal": true; }; "clearable": { "alias": "clearable"; "required": false; "isSignal": true; }; "clearLabel": { "alias": "clearLabel"; "required": false; "isSignal": true; }; }, {}, never, never, true, [{ directive: typeof DateRangeInputDirective; inputs: { "value": "value"; "mixed": "mixed"; "mixedLabel": "mixedLabel"; "touched": "touched"; "disabled": "disabled"; "readonly": "readonly"; "invalid": "invalid"; "errors": "errors"; "required": "required"; "name": "name"; "startPlaceholder": "startPlaceholder"; "endPlaceholder": "endPlaceholder"; "parseErrorMessage": "parseErrorMessage"; "valueFormat": "valueFormat"; "displayFormat": "displayFormat"; "locale": "locale"; "mask": "mask"; "minDate": "minDate"; "maxDate": "maxDate"; "dateFilter": "dateFilter"; "pickerOpen": "pickerOpen"; }; outputs: { "valueChange": "valueChange"; "mixedChange": "mixedChange"; "touchedChange": "touchedChange"; "pickerOpenChange": "pickerOpenChange"; }; }]>;
2258
2359
  }
2259
2360
 
2260
2361
  declare const DATE_RANGE_INPUT_IMPORTS: readonly [typeof DateRangeInputComponent, typeof DateRangeInputDirective, typeof DateRangeInputFieldDirective, typeof DatePickerTriggerDirective, typeof DatePickerSurfaceDirective];
@@ -2366,7 +2467,7 @@ declare class DateTimeInputComponent {
2366
2467
  protected handleClearClick(event: Event): void;
2367
2468
  protected setActivePane(pane: unknown): void;
2368
2469
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<DateTimeInputComponent, never>;
2369
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<DateTimeInputComponent, "et-date-time-input", never, { "pickerTriggerLabel": { "alias": "pickerTriggerLabel"; "required": false; "isSignal": true; }; "minuteStep": { "alias": "minuteStep"; "required": false; "isSignal": true; }; "secondStep": { "alias": "secondStep"; "required": false; "isSignal": true; }; "dateTabLabel": { "alias": "dateTabLabel"; "required": false; "isSignal": true; }; "timeTabLabel": { "alias": "timeTabLabel"; "required": false; "isSignal": true; }; "clearable": { "alias": "clearable"; "required": false; "isSignal": true; }; "clearLabel": { "alias": "clearLabel"; "required": false; "isSignal": true; }; }, {}, never, never, true, [{ directive: typeof DateTimeInputDirective; inputs: { "value": "value"; "touched": "touched"; "disabled": "disabled"; "readonly": "readonly"; "invalid": "invalid"; "errors": "errors"; "required": "required"; "name": "name"; "placeholder": "placeholder"; "parseErrorMessage": "parseErrorMessage"; "valueFormat": "valueFormat"; "displayFormat": "displayFormat"; "locale": "locale"; "mask": "mask"; "minDate": "minDate"; "maxDate": "maxDate"; "dateFilter": "dateFilter"; "pickerOpen": "pickerOpen"; }; outputs: { "valueChange": "valueChange"; "touchedChange": "touchedChange"; "pickerOpenChange": "pickerOpenChange"; }; }]>;
2470
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<DateTimeInputComponent, "et-date-time-input", never, { "pickerTriggerLabel": { "alias": "pickerTriggerLabel"; "required": false; "isSignal": true; }; "minuteStep": { "alias": "minuteStep"; "required": false; "isSignal": true; }; "secondStep": { "alias": "secondStep"; "required": false; "isSignal": true; }; "dateTabLabel": { "alias": "dateTabLabel"; "required": false; "isSignal": true; }; "timeTabLabel": { "alias": "timeTabLabel"; "required": false; "isSignal": true; }; "clearable": { "alias": "clearable"; "required": false; "isSignal": true; }; "clearLabel": { "alias": "clearLabel"; "required": false; "isSignal": true; }; }, {}, never, never, true, [{ directive: typeof DateTimeInputDirective; inputs: { "value": "value"; "mixed": "mixed"; "mixedLabel": "mixedLabel"; "touched": "touched"; "disabled": "disabled"; "readonly": "readonly"; "invalid": "invalid"; "errors": "errors"; "required": "required"; "name": "name"; "placeholder": "placeholder"; "parseErrorMessage": "parseErrorMessage"; "valueFormat": "valueFormat"; "displayFormat": "displayFormat"; "locale": "locale"; "mask": "mask"; "minDate": "minDate"; "maxDate": "maxDate"; "dateFilter": "dateFilter"; "pickerOpen": "pickerOpen"; }; outputs: { "valueChange": "valueChange"; "mixedChange": "mixedChange"; "touchedChange": "touchedChange"; "pickerOpenChange": "pickerOpenChange"; }; }]>;
2370
2471
  }
2371
2472
 
2372
2473
  declare const DATE_TIME_INPUT_IMPORTS: readonly [typeof DateTimeInputComponent, typeof DateTimeInputDirective, typeof DateTimeInputFieldDirective, typeof DatePickerTriggerDirective, typeof DatePickerSurfaceDirective];
@@ -2386,6 +2487,8 @@ declare class DurationInputDirective implements FormValueControl<number | null>,
2386
2487
  private destroyRef;
2387
2488
  /** Total elapsed milliseconds, or `null` while empty/unparseable. */
2388
2489
  value: _angular_core.ModelSignal<number | null>;
2490
+ /** View state for a field whose source values disagree (bulk edit). The raw form value stays untouched. */
2491
+ mixed: _angular_core.ModelSignal<boolean>;
2389
2492
  touched: _angular_core.ModelSignal<boolean>;
2390
2493
  disabled: _angular_core.InputSignal<boolean>;
2391
2494
  readonly: _angular_core.InputSignal<boolean>;
@@ -2394,12 +2497,17 @@ declare class DurationInputDirective implements FormValueControl<number | null>,
2394
2497
  required: _angular_core.InputSignal<boolean>;
2395
2498
  name: _angular_core.InputSignal<string>;
2396
2499
  placeholder: _angular_core.InputSignal<string>;
2500
+ /**
2501
+ * Field placeholder shown while `mixed` is set. Presentation only — the field stays
2502
+ * empty and the label shows through the placeholder slot; it never enters the form value.
2503
+ */
2504
+ mixedLabel: _angular_core.InputSignal<string>;
2397
2505
  /** Message the form field shows when typed text can't be parsed as a duration. */
2398
2506
  parseErrorMessage: _angular_core.InputSignal<string>;
2399
2507
  /** The segment layout: `h`/`m`/`s`/`S` token runs plus separators. @default `'mm:ss'` */
2400
2508
  durationFormat: _angular_core.InputSignal<string>;
2401
2509
  spec: _angular_core.Signal<_ethlete_components.DurationFormatSpec>;
2402
- /** The committed value formatted for display. */
2510
+ /** The committed value formatted for display — masked (empty) while mixed. */
2403
2511
  displayValue: _angular_core.Signal<string>;
2404
2512
  /** The raw text currently in the field (tracked so unparseable input survives). */
2405
2513
  inputText: _angular_core.WritableSignal<string>;
@@ -2408,6 +2516,8 @@ declare class DurationInputDirective implements FormValueControl<number | null>,
2408
2516
  focused: _angular_core.WritableSignal<boolean>;
2409
2517
  shouldDisplayError: _angular_core.Signal<boolean>;
2410
2518
  hasValue: _angular_core.Signal<boolean>;
2519
+ /** What the field renders as its placeholder — `mixedLabel` while mixed masks the value. */
2520
+ effectivePlaceholder: _angular_core.Signal<string>;
2411
2521
  describedBy: _angular_core.WritableSignal<string | null>;
2412
2522
  controlType: _angular_core.WritableSignal<"duration-input">;
2413
2523
  labelId: _angular_core.Signal<string | null>;
@@ -2420,7 +2530,7 @@ declare class DurationInputDirective implements FormValueControl<number | null>,
2420
2530
  /** Parses typed text and commits the resulting value (or flags a parse error). */
2421
2531
  commitInput(rawValue: string): void;
2422
2532
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<DurationInputDirective, never>;
2423
- static ɵdir: _angular_core.ɵɵDirectiveDeclaration<DurationInputDirective, "[etDurationInput]", ["etDurationInput"], { "value": { "alias": "value"; "required": false; "isSignal": true; }; "touched": { "alias": "touched"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "readonly": { "alias": "readonly"; "required": false; "isSignal": true; }; "invalid": { "alias": "invalid"; "required": false; "isSignal": true; }; "errors": { "alias": "errors"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "name": { "alias": "name"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "parseErrorMessage": { "alias": "parseErrorMessage"; "required": false; "isSignal": true; }; "durationFormat": { "alias": "durationFormat"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "touched": "touchedChange"; }, never, never, true, never>;
2533
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<DurationInputDirective, "[etDurationInput]", ["etDurationInput"], { "value": { "alias": "value"; "required": false; "isSignal": true; }; "mixed": { "alias": "mixed"; "required": false; "isSignal": true; }; "touched": { "alias": "touched"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "readonly": { "alias": "readonly"; "required": false; "isSignal": true; }; "invalid": { "alias": "invalid"; "required": false; "isSignal": true; }; "errors": { "alias": "errors"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "name": { "alias": "name"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "mixedLabel": { "alias": "mixedLabel"; "required": false; "isSignal": true; }; "parseErrorMessage": { "alias": "parseErrorMessage"; "required": false; "isSignal": true; }; "durationFormat": { "alias": "durationFormat"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "mixed": "mixedChange"; "touched": "touchedChange"; }, never, never, true, never>;
2424
2534
  }
2425
2535
 
2426
2536
  /**
@@ -2477,7 +2587,7 @@ declare class DurationInputComponent {
2477
2587
  protected showClear: _angular_core.Signal<boolean>;
2478
2588
  protected handleClearClick(event: Event): void;
2479
2589
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<DurationInputComponent, never>;
2480
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<DurationInputComponent, "et-duration-input", never, { "clearable": { "alias": "clearable"; "required": false; "isSignal": true; }; "clearLabel": { "alias": "clearLabel"; "required": false; "isSignal": true; }; }, {}, never, never, true, [{ directive: typeof DurationInputDirective; inputs: { "value": "value"; "touched": "touched"; "disabled": "disabled"; "readonly": "readonly"; "invalid": "invalid"; "errors": "errors"; "required": "required"; "name": "name"; "placeholder": "placeholder"; "parseErrorMessage": "parseErrorMessage"; "durationFormat": "durationFormat"; }; outputs: { "valueChange": "valueChange"; "touchedChange": "touchedChange"; }; }]>;
2590
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<DurationInputComponent, "et-duration-input", never, { "clearable": { "alias": "clearable"; "required": false; "isSignal": true; }; "clearLabel": { "alias": "clearLabel"; "required": false; "isSignal": true; }; }, {}, never, never, true, [{ directive: typeof DurationInputDirective; inputs: { "value": "value"; "mixed": "mixed"; "mixedLabel": "mixedLabel"; "touched": "touched"; "disabled": "disabled"; "readonly": "readonly"; "invalid": "invalid"; "errors": "errors"; "required": "required"; "name": "name"; "placeholder": "placeholder"; "parseErrorMessage": "parseErrorMessage"; "durationFormat": "durationFormat"; }; outputs: { "valueChange": "valueChange"; "mixedChange": "mixedChange"; "touchedChange": "touchedChange"; }; }]>;
2481
2591
  }
2482
2592
 
2483
2593
  declare const DURATION_INPUT_IMPORTS: readonly [typeof DurationInputComponent, typeof DurationInputDirective, typeof DurationInputFieldDirective];
@@ -2544,7 +2654,7 @@ declare class TimeInputComponent {
2544
2654
  protected showClear: _angular_core.Signal<boolean>;
2545
2655
  protected handleClearClick(event: Event): void;
2546
2656
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<TimeInputComponent, never>;
2547
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<TimeInputComponent, "et-time-input", never, { "pickerTriggerLabel": { "alias": "pickerTriggerLabel"; "required": false; "isSignal": true; }; "minuteStep": { "alias": "minuteStep"; "required": false; "isSignal": true; }; "secondStep": { "alias": "secondStep"; "required": false; "isSignal": true; }; "clearable": { "alias": "clearable"; "required": false; "isSignal": true; }; "clearLabel": { "alias": "clearLabel"; "required": false; "isSignal": true; }; }, {}, never, never, true, [{ directive: typeof TimeInputDirective; inputs: { "value": "value"; "touched": "touched"; "disabled": "disabled"; "readonly": "readonly"; "invalid": "invalid"; "errors": "errors"; "required": "required"; "name": "name"; "placeholder": "placeholder"; "parseErrorMessage": "parseErrorMessage"; "valueFormat": "valueFormat"; "displayFormat": "displayFormat"; "locale": "locale"; "mask": "mask"; "pickerOpen": "pickerOpen"; }; outputs: { "valueChange": "valueChange"; "touchedChange": "touchedChange"; "pickerOpenChange": "pickerOpenChange"; }; }]>;
2657
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<TimeInputComponent, "et-time-input", never, { "pickerTriggerLabel": { "alias": "pickerTriggerLabel"; "required": false; "isSignal": true; }; "minuteStep": { "alias": "minuteStep"; "required": false; "isSignal": true; }; "secondStep": { "alias": "secondStep"; "required": false; "isSignal": true; }; "clearable": { "alias": "clearable"; "required": false; "isSignal": true; }; "clearLabel": { "alias": "clearLabel"; "required": false; "isSignal": true; }; }, {}, never, never, true, [{ directive: typeof TimeInputDirective; inputs: { "value": "value"; "mixed": "mixed"; "mixedLabel": "mixedLabel"; "touched": "touched"; "disabled": "disabled"; "readonly": "readonly"; "invalid": "invalid"; "errors": "errors"; "required": "required"; "name": "name"; "placeholder": "placeholder"; "parseErrorMessage": "parseErrorMessage"; "valueFormat": "valueFormat"; "displayFormat": "displayFormat"; "locale": "locale"; "mask": "mask"; "pickerOpen": "pickerOpen"; }; outputs: { "valueChange": "valueChange"; "mixedChange": "mixedChange"; "touchedChange": "touchedChange"; "pickerOpenChange": "pickerOpenChange"; }; }]>;
2548
2658
  }
2549
2659
 
2550
2660
  declare const TIME_INPUT_IMPORTS: readonly [typeof TimeInputComponent, typeof TimeInputDirective, typeof TimeInputFieldDirective, typeof DatePickerTriggerDirective, typeof DatePickerSurfaceDirective];
@@ -2566,6 +2676,64 @@ type DropzoneExistingFileInfo = {
2566
2676
  /** File size in bytes. */
2567
2677
  size?: number | null;
2568
2678
  };
2679
+ /**
2680
+ * The upload error of a failed entry. Either the new query's `QueryErrorResponse` or the
2681
+ * legacy v2 client's `RequestError`, depending on which upload flavor created the entry.
2682
+ */
2683
+ type DropzoneUploadError = QueryErrorResponse | RequestError;
2684
+ /** The lifecycle state of a single file upload, abstracted away from the query flavor. */
2685
+ type DropzoneUploadState = 'uploading' | 'success' | 'error';
2686
+ /**
2687
+ * @internal
2688
+ * A per-file upload handle. It hides which query system runs the upload (the new
2689
+ * `@ethlete/query` API or the legacy `V2QueryClient`) behind a uniform set of signals plus
2690
+ * `execute`/`dispose`, so the dropzone directive and entry work the same for both flavors.
2691
+ */
2692
+ type DropzoneUploadHandle<TValue> = {
2693
+ /** Current upload lifecycle state. */
2694
+ state: Signal<DropzoneUploadState>;
2695
+ /** Upload progress in percent. `null` when indeterminate (or not uploading). */
2696
+ progress: Signal<number | null>;
2697
+ /** The raw upload error of the last failed attempt, kept for `uploadFail` consumers. */
2698
+ error: Signal<DropzoneUploadError | null>;
2699
+ /** The first human readable error message, normalized across query flavors. */
2700
+ errorMessage: Signal<string | null>;
2701
+ /** The resolved form control value. `null` until the upload succeeded. */
2702
+ value: Signal<TValue | null>;
2703
+ /** (Re)runs the upload with the frozen request args. Used for the initial upload and retries. */
2704
+ execute: () => void;
2705
+ /** Releases the underlying query (aborts an in-flight request). */
2706
+ dispose: () => void;
2707
+ };
2708
+ /** @internal Options passed to a config's `createUploadHandle`. */
2709
+ type DropzoneUploadHandleOptions = {
2710
+ file: File;
2711
+ injector: Injector;
2712
+ };
2713
+ /**
2714
+ * The resolved upload config the dropzone directive consumes. Both `createDropzoneUpload` (new
2715
+ * query) and `createV2DropzoneUpload` (legacy v2) produce this shape — the query flavor lives
2716
+ * entirely inside `createUploadHandle`.
2717
+ */
2718
+ type ResolvedDropzoneUploadConfig<TValue = unknown> = {
2719
+ /**
2720
+ * Maps the upload response to the value that gets pushed into the form control
2721
+ * (e.g. `(media) => media.uuid`).
2722
+ */
2723
+ selectValue: (response: any) => TValue;
2724
+ /**
2725
+ * Maps a value that is already part of the form control (edit forms) to display info.
2726
+ * Called in a reactive context — reading signals inside it is supported, so async
2727
+ * lookups can be modeled as signals updating over time.
2728
+ *
2729
+ * Required as soon as the form control can start with a non-empty value.
2730
+ */
2731
+ resolveExisting?: (value: TValue) => DropzoneExistingFileInfo;
2732
+ /** @internal Creates a per-file upload handle. Set by `createDropzoneUpload` / `createV2DropzoneUpload`. */
2733
+ createUploadHandle: (options: DropzoneUploadHandleOptions) => DropzoneUploadHandle<TValue>;
2734
+ };
2735
+ type AnyDropzoneUploadConfig<TValue = unknown> = ResolvedDropzoneUploadConfig<TValue>;
2736
+ /** The authoring config for `createDropzoneUpload` (new `@ethlete/query` API). */
2569
2737
  type DropzoneUploadConfig<TArgs extends QueryArgs = QueryArgs, TValue = unknown> = {
2570
2738
  /**
2571
2739
  * The query creator used to upload a single file (e.g. a POST multipart route).
@@ -2598,13 +2766,67 @@ type DropzoneUploadConfig<TArgs extends QueryArgs = QueryArgs, TValue = unknown>
2598
2766
  */
2599
2767
  resolveExisting?: (value: TValue) => DropzoneExistingFileInfo;
2600
2768
  };
2601
- type AnyDropzoneUploadConfig<TValue = unknown> = DropzoneUploadConfig<any, TValue>;
2769
+ /** The args accepted by a legacy v2 creator's `prepare()` — includes `mock`/`config` extras. */
2770
+ type V2DropzonePrepareArgsOf<TCreator extends AnyV2QueryCreator | AnyLegacyQueryCreator> = Parameters<TCreator['prepare']>[0];
2602
2771
  /**
2603
- * Identity helper that correlates the query args type with the form control value type,
2604
- * so `DropzoneUploadConfig` objects get full type inference at the definition site.
2772
+ * The authoring config for `createV2DropzoneUpload` — the legacy `V2QueryClient` counterpart of
2773
+ * `DropzoneUploadConfig`, for apps that haven't migrated to the new `@ethlete/query` API yet.
2605
2774
  */
2606
- declare const createDropzoneUpload: <TArgs extends QueryArgs, TValue>(config: DropzoneUploadConfig<TArgs, TValue>) => DropzoneUploadConfig<TArgs, TValue>;
2775
+ type V2DropzoneUploadConfig<TCreator extends AnyV2QueryCreator | AnyLegacyQueryCreator, TValue> = {
2776
+ /**
2777
+ * The legacy query creator used to upload a single file (from `V2QueryClient`'s `post`/`put`,
2778
+ * or a `createLegacyQueryCreator` interop wrapper). A fresh query is prepared and executed per
2779
+ * file, and re-prepared on retry.
2780
+ *
2781
+ * For per-file upload progress, create it with `reportProgress: true` and make sure the app
2782
+ * uses the XHR `HttpClient` backend. Without progress information the dropzone falls back to an
2783
+ * indeterminate progress display.
2784
+ */
2785
+ queryCreator: TCreator;
2786
+ /**
2787
+ * Builds the `prepare()` args for one file.
2788
+ * Override to change the multipart field name or to add extra fields, path params,
2789
+ * query params or headers.
2790
+ *
2791
+ * @default (file) => ({ body: FormData with the file appended as "file" })
2792
+ */
2793
+ createArgs?: (file: File) => V2DropzonePrepareArgsOf<TCreator>;
2794
+ /**
2795
+ * Maps the upload response to the value that gets pushed into the form control
2796
+ * (e.g. `(media) => media.uuid`).
2797
+ */
2798
+ selectValue: (response: NonNullable<QueryDataOf<TCreator>>) => TValue;
2799
+ /**
2800
+ * Maps a value that is already part of the form control (edit forms) to display info.
2801
+ * Called in a reactive context — reading signals inside it is supported, so async
2802
+ * lookups can be modeled as signals updating over time.
2803
+ *
2804
+ * Required as soon as the form control can start with a non-empty value.
2805
+ */
2806
+ resolveExisting?: (value: TValue) => DropzoneExistingFileInfo;
2807
+ };
2607
2808
  declare const createDefaultDropzoneArgs: (file: File) => RequestArgs<QueryArgs>;
2809
+ /**
2810
+ * Builds a dropzone upload config from a **new `@ethlete/query`** query creator. Pass the result
2811
+ * to the dropzone's `upload` input.
2812
+ *
2813
+ * For apps still on the legacy `V2QueryClient`, use {@link createV2DropzoneUpload} instead.
2814
+ */
2815
+ declare const createDropzoneUpload: <TArgs extends QueryArgs, TValue>(config: DropzoneUploadConfig<TArgs, TValue>) => AnyDropzoneUploadConfig<TValue>;
2816
+ /**
2817
+ * The legacy `V2QueryClient` counterpart of {@link createDropzoneUpload}. Builds a dropzone upload
2818
+ * config from a legacy v2 query creator (or a `createLegacyQueryCreator` interop wrapper), so apps
2819
+ * that haven't migrated to the new query API can still use the dropzone. Pass the result to the
2820
+ * same `upload` input.
2821
+ *
2822
+ * ```ts
2823
+ * upload = createV2DropzoneUpload({
2824
+ * queryCreator: client.post({ route: '/media', types: { … }, reportProgress: true }),
2825
+ * selectValue: (media) => media.uuid,
2826
+ * });
2827
+ * ```
2828
+ */
2829
+ declare const createV2DropzoneUpload: <TCreator extends AnyV2QueryCreator | AnyLegacyQueryCreator, TValue>(config: V2DropzoneUploadConfig<TCreator, TValue>) => AnyDropzoneUploadConfig<TValue>;
2608
2830
 
2609
2831
  declare const DROPZONE_ENTRY_STATUSES: {
2610
2832
  readonly UPLOADING: "uploading";
@@ -2635,21 +2857,19 @@ type DropzoneEntry<TValue = unknown> = {
2635
2857
  /** Upload progress in percent. `null` means indeterminate (or not uploading). */
2636
2858
  progress: Signal<number | null>;
2637
2859
  /** The upload error, if the last upload attempt failed. */
2638
- error: Signal<QueryErrorResponse | null>;
2860
+ error: Signal<DropzoneUploadError | null>;
2861
+ /** The first human readable error message of a failed upload, normalized across query flavors. */
2862
+ errorMessage: Signal<string | null>;
2639
2863
  /** The form control value of this entry. `null` until the upload succeeded. */
2640
2864
  value: Signal<TValue | null>;
2641
- /** @internal The upload query. `null` for existing entries. */
2642
- query: AnyNewQuery | null;
2643
- /** @internal The frozen request args of the upload. Reused for retries. */
2644
- args: RequestArgs<QueryArgs> | null;
2865
+ /** @internal The upload handle driving this entry. `null` for existing entries. */
2866
+ handle: DropzoneUploadHandle<TValue> | null;
2645
2867
  /** @internal Object URL that must be revoked when the entry is disposed. */
2646
2868
  objectUrl: string | null;
2647
2869
  };
2648
2870
  type CreateFileDropzoneEntryOptions<TValue> = {
2649
2871
  file: File;
2650
- query: AnyNewQuery;
2651
- args: RequestArgs<QueryArgs>;
2652
- selectValue: (response: unknown) => TValue;
2872
+ handle: DropzoneUploadHandle<TValue>;
2653
2873
  };
2654
2874
  declare const createFileDropzoneEntry: <TValue>(options: CreateFileDropzoneEntryOptions<TValue>) => DropzoneEntry<TValue>;
2655
2875
  type CreateExistingDropzoneEntryOptions<TValue> = {
@@ -2974,6 +3194,10 @@ declare class InputDirective extends TextFieldControlDirective implements FormVa
2974
3194
  private nativeSyncSuppressed;
2975
3195
  hasValue: _angular_core.Signal<boolean>;
2976
3196
  controlType: _angular_core.WritableSignal<"text-input">;
3197
+ /** The text the native input renders — empty while mixed so the raw value never reaches the DOM. */
3198
+ displayValue: _angular_core.Signal<string>;
3199
+ /** The placeholder the native input renders — `mixedLabel` overrides the consumer placeholder while mixed. */
3200
+ effectivePlaceholder: _angular_core.Signal<string>;
2977
3201
  /**
2978
3202
  * The native input element this directive controls. Set automatically when the
2979
3203
  * directive is placed on an `<input>` element; otherwise the hosting component
@@ -2987,10 +3211,16 @@ declare class InputDirective extends TextFieldControlDirective implements FormVa
2987
3211
  resumeNativeSync(): void;
2988
3212
  /**
2989
3213
  * Keeps the model in sync while typing. The wrapper components also bind `(input)` on their
2990
- * inner element, so this is redundant there (it writes the same value); its real job is the
2991
- * standalone `input[etInput]` case, which otherwise has no listener updating the model.
3214
+ * inner element, so this is redundant there (it routes through the same sync); its real job is
3215
+ * the standalone `input[etInput]` case, which otherwise has no listener updating the model.
2992
3216
  */
2993
3217
  protected handleNativeInput(event: Event): void;
3218
+ /**
3219
+ * @internal Routes a user edit from the native input into the model. Typing is the commit
3220
+ * over a mixed state: the first edit that produces content replaces the raw value and
3221
+ * resolves `mixed`; an edit that leaves the input empty keeps both untouched.
3222
+ */
3223
+ syncFromNativeInput(inputElement: HTMLInputElement): void;
2994
3224
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<InputDirective, never>;
2995
3225
  static ɵdir: _angular_core.ɵɵDirectiveDeclaration<InputDirective, "[etInput]", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "type": { "alias": "type"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "autocomplete": { "alias": "autocomplete"; "required": false; "isSignal": true; }; "textAlign": { "alias": "textAlign"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; }, never, never, true, never>;
2996
3226
  }
@@ -3005,20 +3235,30 @@ declare class NumberInputDirective extends TextFieldControlDirective implements
3005
3235
  textAlign: _angular_core.InputSignal<InputTextAlignment>;
3006
3236
  hasValue: _angular_core.Signal<boolean>;
3007
3237
  controlType: _angular_core.WritableSignal<"number-input">;
3238
+ /** What the native input renders — empty while mixed so the raw value never reaches the DOM. */
3239
+ displayValue: _angular_core.Signal<number | "">;
3240
+ /** The placeholder the native input renders — `mixedLabel` overrides the consumer placeholder while mixed. */
3241
+ effectivePlaceholder: _angular_core.Signal<string>;
3008
3242
  /**
3009
3243
  * The native input element this directive controls. Set automatically when the
3010
3244
  * directive is placed on an `<input>` element; otherwise the hosting component
3011
3245
  * registers it.
3012
3246
  */
3013
3247
  nativeControl: _angular_core.WritableSignal<HTMLInputElement | null>;
3248
+ /** The value stepping starts from — `0` while mixed (deriving from the hidden raw value would leak it). */
3249
+ private steppingBase;
3014
3250
  /** Whether stepping up would change the value — `false` at the `max` bound or while non-interactive. */
3015
3251
  canStepUp: _angular_core.Signal<boolean>;
3016
3252
  /** Whether stepping down would change the value — `false` at the `min` bound or while non-interactive. */
3017
3253
  canStepDown: _angular_core.Signal<boolean>;
3018
3254
  constructor();
3019
- /** Steps the value by `step` (an empty value starts from `0`), clamped to `min`/`max`. */
3255
+ /** Steps the value by `step` (an empty or mixed value starts from `0`), clamped to `min`/`max`. */
3020
3256
  stepBy(direction: 1 | -1): void;
3021
- /** @internal */
3257
+ /**
3258
+ * @internal Routes a user edit from the native input into the model. Typing is the commit
3259
+ * over a mixed state: the first edit that produces content replaces the raw value and
3260
+ * resolves `mixed`; an edit that leaves the input empty keeps both untouched.
3261
+ */
3022
3262
  syncFromNativeInput(inputElement: HTMLInputElement): void;
3023
3263
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<NumberInputDirective, never>;
3024
3264
  static ɵdir: _angular_core.ɵɵDirectiveDeclaration<NumberInputDirective, "[etNumberInput]", never, { "value": { "alias": "value"; "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; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "autocomplete": { "alias": "autocomplete"; "required": false; "isSignal": true; }; "textAlign": { "alias": "textAlign"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; }, never, never, true, never>;
@@ -3035,12 +3275,17 @@ declare class PasswordInputDirective extends TextFieldControlDirective implement
3035
3275
  /**
3036
3276
  * A 0–4 typing-feedback score from a simple length + character-class heuristic —
3037
3277
  * render it however you like (deliberately not a zxcvbn-style security estimate).
3278
+ * `0` while mixed — scoring the hidden raw value would leak information about it.
3038
3279
  */
3039
3280
  strength: _angular_core.Signal<number>;
3040
3281
  /** The native `type` the input element should carry. */
3041
3282
  inputType: _angular_core.Signal<"text" | "password">;
3042
3283
  hasValue: _angular_core.Signal<boolean>;
3043
3284
  controlType: _angular_core.WritableSignal<"password-input">;
3285
+ /** The text the native input renders — empty while mixed so the raw value never reaches the DOM. */
3286
+ displayValue: _angular_core.Signal<string>;
3287
+ /** The placeholder the native input renders — `mixedLabel` overrides the consumer placeholder while mixed. */
3288
+ effectivePlaceholder: _angular_core.Signal<string>;
3044
3289
  /**
3045
3290
  * The native input element this directive controls. Set automatically when the
3046
3291
  * directive is placed on an `<input>` element; otherwise the hosting component
@@ -3048,6 +3293,12 @@ declare class PasswordInputDirective extends TextFieldControlDirective implement
3048
3293
  */
3049
3294
  nativeControl: _angular_core.WritableSignal<HTMLInputElement | null>;
3050
3295
  constructor();
3296
+ /**
3297
+ * @internal Routes a user edit from the native input into the model. Typing is the commit
3298
+ * over a mixed state: the first edit that produces content replaces the raw value and
3299
+ * resolves `mixed`; an edit that leaves the input empty keeps both untouched.
3300
+ */
3301
+ syncFromNativeInput(inputElement: HTMLInputElement): void;
3051
3302
  toggleRevealed(): void;
3052
3303
  /**
3053
3304
  * Feed keyboard or pointer events from the native input so `capsLockOn` stays current.
@@ -3066,7 +3317,7 @@ declare class InputComponent {
3066
3317
  constructor();
3067
3318
  syncNativeValue(event: Event): void;
3068
3319
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<InputComponent, never>;
3069
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<InputComponent, "et-input", never, {}, {}, never, never, true, [{ directive: typeof InputDirective; inputs: { "type": "type"; "placeholder": "placeholder"; "autocomplete": "autocomplete"; "textAlign": "textAlign"; "value": "value"; "disabled": "disabled"; "readonly": "readonly"; "hidden": "hidden"; "invalid": "invalid"; "errors": "errors"; "required": "required"; "name": "name"; }; outputs: { "valueChange": "valueChange"; "touchedChange": "touchedChange"; }; }, { directive: typeof _ethlete_core.ColorInteractiveDirective; inputs: {}; outputs: {}; }]>;
3320
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<InputComponent, "et-input", never, {}, {}, never, never, true, [{ directive: typeof InputDirective; inputs: { "type": "type"; "placeholder": "placeholder"; "autocomplete": "autocomplete"; "textAlign": "textAlign"; "value": "value"; "mixed": "mixed"; "mixedLabel": "mixedLabel"; "disabled": "disabled"; "readonly": "readonly"; "hidden": "hidden"; "invalid": "invalid"; "errors": "errors"; "required": "required"; "name": "name"; "aria-label": "aria-label"; "aria-labelledby": "aria-labelledby"; }; outputs: { "valueChange": "valueChange"; "mixedChange": "mixedChange"; "touchedChange": "touchedChange"; }; }, { directive: typeof _ethlete_core.ColorInteractiveDirective; inputs: {}; outputs: {}; }]>;
3070
3321
  }
3071
3322
 
3072
3323
  declare class NumberInputComponent {
@@ -3086,7 +3337,7 @@ declare class NumberInputComponent {
3086
3337
  protected startStepRepeat(event: PointerEvent, direction: 1 | -1): void;
3087
3338
  protected stopStepRepeat(): void;
3088
3339
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<NumberInputComponent, never>;
3089
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<NumberInputComponent, "et-number-input", never, { "stepper": { "alias": "stepper"; "required": false; "isSignal": true; }; "incrementLabel": { "alias": "incrementLabel"; "required": false; "isSignal": true; }; "decrementLabel": { "alias": "decrementLabel"; "required": false; "isSignal": true; }; }, {}, never, never, true, [{ directive: typeof NumberInputDirective; inputs: { "min": "min"; "max": "max"; "step": "step"; "placeholder": "placeholder"; "autocomplete": "autocomplete"; "textAlign": "textAlign"; "value": "value"; "disabled": "disabled"; "readonly": "readonly"; "hidden": "hidden"; "invalid": "invalid"; "errors": "errors"; "required": "required"; "name": "name"; }; outputs: { "valueChange": "valueChange"; "touchedChange": "touchedChange"; }; }, { directive: typeof _ethlete_core.ColorInteractiveDirective; inputs: {}; outputs: {}; }]>;
3340
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<NumberInputComponent, "et-number-input", never, { "stepper": { "alias": "stepper"; "required": false; "isSignal": true; }; "incrementLabel": { "alias": "incrementLabel"; "required": false; "isSignal": true; }; "decrementLabel": { "alias": "decrementLabel"; "required": false; "isSignal": true; }; }, {}, never, never, true, [{ directive: typeof NumberInputDirective; inputs: { "min": "min"; "max": "max"; "step": "step"; "placeholder": "placeholder"; "autocomplete": "autocomplete"; "textAlign": "textAlign"; "value": "value"; "mixed": "mixed"; "mixedLabel": "mixedLabel"; "disabled": "disabled"; "readonly": "readonly"; "hidden": "hidden"; "invalid": "invalid"; "errors": "errors"; "required": "required"; "name": "name"; "aria-label": "aria-label"; "aria-labelledby": "aria-labelledby"; }; outputs: { "valueChange": "valueChange"; "mixedChange": "mixedChange"; "touchedChange": "touchedChange"; }; }, { directive: typeof _ethlete_core.ColorInteractiveDirective; inputs: {}; outputs: {}; }]>;
3090
3341
  }
3091
3342
 
3092
3343
  declare class PasswordInputComponent {
@@ -3106,7 +3357,7 @@ declare class PasswordInputComponent {
3106
3357
  protected showCapsLockWarning(): boolean;
3107
3358
  syncNativeValue(event: Event): void;
3108
3359
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<PasswordInputComponent, never>;
3109
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<PasswordInputComponent, "et-password-input", never, { "revealable": { "alias": "revealable"; "required": false; "isSignal": true; }; "revealLabel": { "alias": "revealLabel"; "required": false; "isSignal": true; }; "hideLabel": { "alias": "hideLabel"; "required": false; "isSignal": true; }; "capsLockWarning": { "alias": "capsLockWarning"; "required": false; "isSignal": true; }; "capsLockLabel": { "alias": "capsLockLabel"; "required": false; "isSignal": true; }; }, {}, never, never, true, [{ directive: typeof PasswordInputDirective; inputs: { "placeholder": "placeholder"; "autocomplete": "autocomplete"; "value": "value"; "revealed": "revealed"; "disabled": "disabled"; "readonly": "readonly"; "hidden": "hidden"; "invalid": "invalid"; "errors": "errors"; "required": "required"; "name": "name"; }; outputs: { "valueChange": "valueChange"; "touchedChange": "touchedChange"; "revealedChange": "revealedChange"; }; }, { directive: typeof _ethlete_core.ColorInteractiveDirective; inputs: {}; outputs: {}; }]>;
3360
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<PasswordInputComponent, "et-password-input", never, { "revealable": { "alias": "revealable"; "required": false; "isSignal": true; }; "revealLabel": { "alias": "revealLabel"; "required": false; "isSignal": true; }; "hideLabel": { "alias": "hideLabel"; "required": false; "isSignal": true; }; "capsLockWarning": { "alias": "capsLockWarning"; "required": false; "isSignal": true; }; "capsLockLabel": { "alias": "capsLockLabel"; "required": false; "isSignal": true; }; }, {}, never, never, true, [{ directive: typeof PasswordInputDirective; inputs: { "placeholder": "placeholder"; "autocomplete": "autocomplete"; "value": "value"; "mixed": "mixed"; "mixedLabel": "mixedLabel"; "revealed": "revealed"; "disabled": "disabled"; "readonly": "readonly"; "hidden": "hidden"; "invalid": "invalid"; "errors": "errors"; "required": "required"; "name": "name"; "aria-label": "aria-label"; "aria-labelledby": "aria-labelledby"; }; outputs: { "valueChange": "valueChange"; "mixedChange": "mixedChange"; "touchedChange": "touchedChange"; "revealedChange": "revealedChange"; }; }, { directive: typeof _ethlete_core.ColorInteractiveDirective; inputs: {}; outputs: {}; }]>;
3110
3361
  }
3111
3362
 
3112
3363
  declare const INPUT_IMPORTS: readonly [typeof InputComponent, typeof InputDirective];
@@ -3471,7 +3722,6 @@ declare class RichTextEditorTriggersDirective {
3471
3722
  private buildAnchoredPosition;
3472
3723
  private setAriaExpanded;
3473
3724
  private assertUniqueTriggers;
3474
- private assertValidToken;
3475
3725
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<RichTextEditorTriggersDirective, never>;
3476
3726
  static ɵdir: _angular_core.ɵɵDirectiveDeclaration<RichTextEditorTriggersDirective, "[etRichTextEditorTriggers]", never, { "triggers": { "alias": "triggers"; "required": false; "isSignal": true; }; "emptyLabel": { "alias": "emptyLabel"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
3477
3727
  }
@@ -3593,6 +3843,13 @@ type RichTextEditorToolDefinition = {
3593
3843
  /** Multi-provider token opt-in tools register their {@link RichTextEditorToolDefinition} into. */
3594
3844
  declare const RICH_TEXT_EDITOR_TOOL: InjectionToken<RichTextEditorToolDefinition[]>;
3595
3845
 
3846
+ /** The type, id and label needed to render a token chip, plus the optional trigger char to show. */
3847
+ type RichTextEditorTokenChip = {
3848
+ type: string;
3849
+ id: string;
3850
+ label: string;
3851
+ prefix?: string;
3852
+ };
3596
3853
  /**
3597
3854
  * Bridges token chips and their serialized `{{type:id}}` Markdown form. The
3598
3855
  * {@link RichTextEditorTokenCodec.serialize} direction reconstructs the token purely from the
@@ -3607,12 +3864,20 @@ type RichTextEditorTokenCodec = {
3607
3864
  render: (html: string) => string;
3608
3865
  /** Asynchronously resolves chip labels in `root` and patches them in place. */
3609
3866
  hydrate: (root: HTMLElement) => void;
3867
+ /**
3868
+ * Resolves a `type`/`id` to the chip descriptor (label + trigger-char prefix) needed to build a
3869
+ * chip element for a programmatic insert. The label resolves synchronously (falling back to the
3870
+ * raw id); async resolvers are patched afterwards by {@link hydrate}. Powers the editor's public
3871
+ * `insertToken` API.
3872
+ */
3873
+ resolveChip: (type: string, id: string) => RichTextEditorTokenChip;
3610
3874
  };
3611
3875
 
3612
3876
  declare class RichTextEditorDirective implements FormValueControl<string>, FormFieldControl {
3613
3877
  private formField;
3614
3878
  private destroyRef;
3615
3879
  private document;
3880
+ private renderer;
3616
3881
  private toolsConfig;
3617
3882
  /** @internal */
3618
3883
  editorDom: {
@@ -3621,6 +3886,7 @@ declare class RichTextEditorDirective implements FormValueControl<string>, FormF
3621
3886
  restoreSelection: () => void;
3622
3887
  closestWithin: (node: Node | null, selector: string) => HTMLElement | null;
3623
3888
  markStates: () => RichTextMarkStates | null;
3889
+ ensureCaret: () => boolean;
3624
3890
  insertToken: (node: Node) => void;
3625
3891
  toggleInline: (tag: InlineTag) => void;
3626
3892
  activeInlineTags: () => InlineTag[];
@@ -3751,12 +4017,40 @@ declare class RichTextEditorDirective implements FormValueControl<string>, FormF
3751
4017
  handleBackspace(): boolean;
3752
4018
  pasteHtml(html: string): boolean;
3753
4019
  insertAtomicToken(node: Node): void;
4020
+ /**
4021
+ * Inserts a `{{type:id}}` token chip at the caret — the same result as picking it from the `#`/`@`
4022
+ * trigger popup — resolving its label via the matching trigger's `resolveItem`. Lets a consumer
4023
+ * wire a click-to-insert palette (their own placeholder/merge-field buttons) in a single call,
4024
+ * reusing the editor's codec and label resolution instead of appending token markdown to the value.
4025
+ *
4026
+ * Inserts at the current caret, or — if the editor isn't focused — at the position it last held,
4027
+ * falling back to the end of the content. The caret is left after the chip. A token codec must be
4028
+ * installed (by `[etRichTextEditorTriggers]` or `provideRichTextEditorTokenRendering`); without one
4029
+ * token markdown can't round-trip, so this throws in dev and no-ops in production.
4030
+ *
4031
+ * @param opts.focus Focus the editor after inserting so the user can keep typing. @default true
4032
+ */
4033
+ insertToken(type: string, id: string, opts?: {
4034
+ focus?: boolean;
4035
+ }): void;
4036
+ /**
4037
+ * Like {@link insertToken}, but for when the app already holds the resolved `{ id, label }` item
4038
+ * (e.g. the row a palette button represents) — the label is used as-is, skipping resolution. The
4039
+ * trigger-char prefix still comes from the installed codec, so the chip matches the popup's.
4040
+ *
4041
+ * @param opts.focus Focus the editor after inserting so the user can keep typing. @default true
4042
+ */
4043
+ insertTokenItem(type: string, item: RichTextEditorTriggerItem, opts?: {
4044
+ focus?: boolean;
4045
+ }): void;
4046
+ private requireTokenCodec;
4047
+ private insertChip;
3754
4048
  private serializeCleanHtml;
3755
4049
  private toggleMark;
3756
4050
  private reflectMarks;
3757
4051
  private runCommand;
3758
4052
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<RichTextEditorDirective, never>;
3759
- static ɵdir: _angular_core.ɵɵDirectiveDeclaration<RichTextEditorDirective, "[etRichTextEditor]", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "touched": { "alias": "touched"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "readonly": { "alias": "readonly"; "required": false; "isSignal": true; }; "hidden": { "alias": "hidden"; "required": false; "isSignal": true; }; "invalid": { "alias": "invalid"; "required": false; "isSignal": true; }; "errors": { "alias": "errors"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "name": { "alias": "name"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "tools": { "alias": "tools"; "required": false; "isSignal": true; }; "autoformat": { "alias": "autoformat"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "touched": "touchedChange"; }, never, never, true, never>;
4053
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<RichTextEditorDirective, "[etRichTextEditor]", ["etRichTextEditor"], { "value": { "alias": "value"; "required": false; "isSignal": true; }; "touched": { "alias": "touched"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "readonly": { "alias": "readonly"; "required": false; "isSignal": true; }; "hidden": { "alias": "hidden"; "required": false; "isSignal": true; }; "invalid": { "alias": "invalid"; "required": false; "isSignal": true; }; "errors": { "alias": "errors"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "name": { "alias": "name"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "tools": { "alias": "tools"; "required": false; "isSignal": true; }; "autoformat": { "alias": "autoformat"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "touched": "touchedChange"; }, never, never, true, never>;
3760
4054
  }
3761
4055
 
3762
4056
  declare class RichTextEditorFloatingToolbarComponent {
@@ -3828,6 +4122,55 @@ declare class RichTextEditorLinkEditorComponent {
3828
4122
  */
3829
4123
  declare const RICH_TEXT_EDITOR_TOKEN_CODEC: InjectionToken<RichTextEditorTokenCodec>;
3830
4124
 
4125
+ /** A trigger and the items it currently offers, rendered as one run of chip buttons. */
4126
+ type RichTextEditorTokenPaletteGroup = {
4127
+ trigger: RichTextEditorTrigger;
4128
+ items: readonly RichTextEditorTriggerItem[];
4129
+ };
4130
+ /**
4131
+ * An opt-in row of click-to-insert token chips, driven by the same `RichTextEditorTrigger[]` as the
4132
+ * `#`/`@` popup. Clicking a chip inserts its `{{type:id}}` token into the bound editor at the caret
4133
+ * (via {@link RichTextEditorDirective.insertTokenItem}) — the palette equivalent of picking it from
4134
+ * the popup — so apps get a merge-field/placeholder palette without re-implementing chip rendering,
4135
+ * label resolution, or caret handling.
4136
+ *
4137
+ * Point it at the editor with `[editor]` (a template ref to the `[etRichTextEditor]` directive) and
4138
+ * pass the trigger config with `[triggers]`. Only items available for an empty query are shown, so
4139
+ * static-array sources list all their items while search-only (`minQueryLength`) sources stay empty
4140
+ * — a palette is for fixed sets, not search. The editor must have a token codec installed (by
4141
+ * `[etRichTextEditorTriggers]` or `provideRichTextEditorTokenRendering`) so tokens (de)serialize.
4142
+ *
4143
+ * ```html
4144
+ * <et-rich-text-editor #rte="etRichTextEditor" [triggers]="triggers" etRichTextEditorTriggers />
4145
+ * <et-rich-text-editor-token-palette [editor]="rte" [triggers]="triggers" />
4146
+ * ```
4147
+ */
4148
+ declare class RichTextEditorTokenPaletteComponent {
4149
+ /** The editor to insert into — a template ref to its `[etRichTextEditor]` directive. */
4150
+ editor: _angular_core.InputSignal<RichTextEditorDirective>;
4151
+ /** The triggers whose items become chip buttons. Use the same array as the editor's triggers. */
4152
+ triggers: _angular_core.InputSignal<readonly RichTextEditorTrigger[]>;
4153
+ /** Accessible name for the palette group. */
4154
+ label: _angular_core.InputSignal<string>;
4155
+ /** Focus the editor after inserting so the user can keep typing. */
4156
+ focusEditorOnInsert: _angular_core.InputSignal<boolean>;
4157
+ private groups;
4158
+ /** Only groups that actually have items to offer — empty (e.g. search-only) triggers are dropped. */
4159
+ protected visibleGroups: _angular_core.Signal<RichTextEditorTokenPaletteGroup[]>;
4160
+ /** Chips are inert while the editor can't take an edit. */
4161
+ protected editorInactive: _angular_core.Signal<boolean>;
4162
+ protected insert(trigger: RichTextEditorTrigger, item: RichTextEditorTriggerItem): void;
4163
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<RichTextEditorTokenPaletteComponent, never>;
4164
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<RichTextEditorTokenPaletteComponent, "et-rich-text-editor-token-palette", never, { "editor": { "alias": "editor"; "required": true; "isSignal": true; }; "triggers": { "alias": "triggers"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "focusEditorOnInsert": { "alias": "focusEditorOnInsert"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
4165
+ }
4166
+
4167
+ /**
4168
+ * Opt-in click-to-insert token palette. Spread this into a component's `imports` alongside
4169
+ * `RICH_TEXT_EDITOR_IMPORTS` when the editor should be paired with a row of merge-field/placeholder
4170
+ * chip buttons. Kept separate so editors without a palette don't pull it in.
4171
+ */
4172
+ declare const RICH_TEXT_EDITOR_TOKEN_PALETTE_IMPORTS: readonly [typeof RichTextEditorTokenPaletteComponent];
4173
+
3831
4174
  /**
3832
4175
  * The caret-anchored autocomplete list opened by `[etRichTextEditorTriggers]`. Purely
3833
4176
  * presentational: it renders items / loading / error / empty states and reports selection and
@@ -4758,6 +5101,8 @@ declare class PhoneInputDirective implements FormValueControl<string>, FormField
4758
5101
  private destroyRef;
4759
5102
  /** Normalized `+<dialCode><national digits>` — empty string while nothing is entered. */
4760
5103
  value: _angular_core.ModelSignal<string>;
5104
+ /** View state for a field whose source values disagree. The raw form value stays untouched. */
5105
+ mixed: _angular_core.ModelSignal<boolean>;
4761
5106
  touched: _angular_core.ModelSignal<boolean>;
4762
5107
  disabled: _angular_core.InputSignal<boolean>;
4763
5108
  readonly: _angular_core.InputSignal<boolean>;
@@ -4766,11 +5111,15 @@ declare class PhoneInputDirective implements FormValueControl<string>, FormField
4766
5111
  required: _angular_core.InputSignal<boolean>;
4767
5112
  name: _angular_core.InputSignal<string>;
4768
5113
  placeholder: _angular_core.InputSignal<string>;
5114
+ /** Field placeholder shown while `mixed` is set. */
5115
+ mixedLabel: _angular_core.InputSignal<string>;
4769
5116
  defaultCountry: _angular_core.InputSignal<string>;
4770
5117
  /** ISO codes listed on top of the country dropdown. */
4771
5118
  preferredCountries: _angular_core.InputSignal<string[]>;
4772
5119
  shouldDisplayError: _angular_core.Signal<boolean>;
4773
5120
  hasValue: _angular_core.Signal<boolean>;
5121
+ /** The placeholder the tel field currently shows — `mixedLabel` while mixed. */
5122
+ effectivePlaceholder: _angular_core.Signal<string>;
4774
5123
  describedBy: _angular_core.WritableSignal<string | null>;
4775
5124
  controlType: _angular_core.WritableSignal<"phone-input">;
4776
5125
  focused: _angular_core.WritableSignal<boolean>;
@@ -4787,7 +5136,7 @@ declare class PhoneInputDirective implements FormValueControl<string>, FormField
4787
5136
  */
4788
5137
  country: _angular_core.WritableSignal<string>;
4789
5138
  dialCode: _angular_core.Signal<string>;
4790
- /** The digits after the dial code. */
5139
+ /** The digits after the dial code. Mixed masks the hidden raw number — it is never displayed. */
4791
5140
  nationalNumber: _angular_core.Signal<string>;
4792
5141
  /**
4793
5142
  * Cosmetic display grouping (groups of three) — deliberately **not** metadata-driven
@@ -4809,9 +5158,15 @@ declare class PhoneInputDirective implements FormValueControl<string>, FormField
4809
5158
  * (`0171…` with Germany active → `+49171…`).
4810
5159
  */
4811
5160
  setNationalInput(raw: string): void;
5161
+ /**
5162
+ * Writes a user-typed value. While mixed, only a non-empty entry commits — it is built
5163
+ * from scratch with the chosen country (never from the hidden number) and resolves mixed;
5164
+ * an empty entry leaves the hidden raw value untouched.
5165
+ */
5166
+ private commitTypedValue;
4812
5167
  private dialCodeOf;
4813
5168
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<PhoneInputDirective, never>;
4814
- static ɵdir: _angular_core.ɵɵDirectiveDeclaration<PhoneInputDirective, "[etPhoneInput]", ["etPhoneInput"], { "value": { "alias": "value"; "required": false; "isSignal": true; }; "touched": { "alias": "touched"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "readonly": { "alias": "readonly"; "required": false; "isSignal": true; }; "invalid": { "alias": "invalid"; "required": false; "isSignal": true; }; "errors": { "alias": "errors"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "name": { "alias": "name"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "defaultCountry": { "alias": "defaultCountry"; "required": false; "isSignal": true; }; "preferredCountries": { "alias": "preferredCountries"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "touched": "touchedChange"; }, never, never, true, never>;
5169
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<PhoneInputDirective, "[etPhoneInput]", ["etPhoneInput"], { "value": { "alias": "value"; "required": false; "isSignal": true; }; "mixed": { "alias": "mixed"; "required": false; "isSignal": true; }; "touched": { "alias": "touched"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "readonly": { "alias": "readonly"; "required": false; "isSignal": true; }; "invalid": { "alias": "invalid"; "required": false; "isSignal": true; }; "errors": { "alias": "errors"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "name": { "alias": "name"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "mixedLabel": { "alias": "mixedLabel"; "required": false; "isSignal": true; }; "defaultCountry": { "alias": "defaultCountry"; "required": false; "isSignal": true; }; "preferredCountries": { "alias": "preferredCountries"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "mixed": "mixedChange"; "touched": "touchedChange"; }, never, never, true, never>;
4815
5170
  }
4816
5171
 
4817
5172
  /** The tel field of a phone input — displays the national number, grouped while unfocused. */
@@ -4853,7 +5208,7 @@ declare class PhoneInputComponent {
4853
5208
  protected handleClearClick(event: Event): void;
4854
5209
  protected handleCountryChange(value: unknown): void;
4855
5210
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<PhoneInputComponent, never>;
4856
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<PhoneInputComponent, "et-phone-input", never, { "countryLabel": { "alias": "countryLabel"; "required": false; "isSignal": true; }; "clearable": { "alias": "clearable"; "required": false; "isSignal": true; }; "clearLabel": { "alias": "clearLabel"; "required": false; "isSignal": true; }; }, {}, never, never, true, [{ directive: typeof PhoneInputDirective; inputs: { "value": "value"; "touched": "touched"; "disabled": "disabled"; "readonly": "readonly"; "invalid": "invalid"; "errors": "errors"; "required": "required"; "name": "name"; "placeholder": "placeholder"; "defaultCountry": "defaultCountry"; "preferredCountries": "preferredCountries"; }; outputs: { "valueChange": "valueChange"; "touchedChange": "touchedChange"; }; }, { directive: typeof _ethlete_core.ColorInteractiveDirective; inputs: {}; outputs: {}; }]>;
5211
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<PhoneInputComponent, "et-phone-input", never, { "countryLabel": { "alias": "countryLabel"; "required": false; "isSignal": true; }; "clearable": { "alias": "clearable"; "required": false; "isSignal": true; }; "clearLabel": { "alias": "clearLabel"; "required": false; "isSignal": true; }; }, {}, never, never, true, [{ directive: typeof PhoneInputDirective; inputs: { "value": "value"; "mixed": "mixed"; "touched": "touched"; "disabled": "disabled"; "readonly": "readonly"; "invalid": "invalid"; "errors": "errors"; "required": "required"; "name": "name"; "placeholder": "placeholder"; "mixedLabel": "mixedLabel"; "defaultCountry": "defaultCountry"; "preferredCountries": "preferredCountries"; }; outputs: { "valueChange": "valueChange"; "mixedChange": "mixedChange"; "touchedChange": "touchedChange"; }; }, { directive: typeof _ethlete_core.ColorInteractiveDirective; inputs: {}; outputs: {}; }]>;
4857
5212
  }
4858
5213
 
4859
5214
  declare const PHONE_INPUT_IMPORTS: readonly [typeof PhoneInputComponent, typeof PhoneInputDirective, typeof PhoneInputFieldDirective, typeof PhoneInputFlagDirective];
@@ -4864,6 +5219,10 @@ declare class RatingDirective implements FormValueControl<number | null>, FormFi
4864
5219
  private destroyRef;
4865
5220
  private elementRef;
4866
5221
  value: _angular_core.ModelSignal<number | null>;
5222
+ /** View state for a field whose source values disagree. The raw form value stays untouched. */
5223
+ mixed: _angular_core.ModelSignal<boolean>;
5224
+ /** `aria-valuetext` announced while `mixed` is set. */
5225
+ mixedLabel: _angular_core.InputSignal<string>;
4867
5226
  touched: _angular_core.ModelSignal<boolean>;
4868
5227
  disabled: _angular_core.InputSignal<boolean>;
4869
5228
  readonly: _angular_core.InputSignal<boolean>;
@@ -4881,7 +5240,10 @@ declare class RatingDirective implements FormValueControl<number | null>, FormFi
4881
5240
  step: _angular_core.Signal<1 | 0.5>;
4882
5241
  /** The value previewed under the pointer, set by the rendered icons. */
4883
5242
  hoverValue: _angular_core.WritableSignal<number | null>;
4884
- /** What the icons render: the hover preview wins over the committed value. */
5243
+ /**
5244
+ * What the icons render: the hover preview wins over the committed value. While mixed,
5245
+ * the hidden raw value contributes nothing — no icon fills until the user hovers or commits.
5246
+ */
4885
5247
  displayValue: _angular_core.Signal<number>;
4886
5248
  interactive: _angular_core.Signal<boolean>;
4887
5249
  shouldDisplayError: _angular_core.Signal<boolean>;
@@ -4903,9 +5265,11 @@ declare class RatingDirective implements FormValueControl<number | null>, FormFi
4903
5265
  commitPointer(value: number): void;
4904
5266
  protected handleBlur(): void;
4905
5267
  protected handleKeydown(event: KeyboardEvent): void;
5268
+ /** Writes a user-chosen value with replace semantics — user commits resolve mixed. */
5269
+ private commitUserValue;
4906
5270
  private clamp;
4907
5271
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<RatingDirective, never>;
4908
- static ɵdir: _angular_core.ɵɵDirectiveDeclaration<RatingDirective, "[etRating]", ["etRating"], { "value": { "alias": "value"; "required": false; "isSignal": true; }; "touched": { "alias": "touched"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "readonly": { "alias": "readonly"; "required": false; "isSignal": true; }; "invalid": { "alias": "invalid"; "required": false; "isSignal": true; }; "errors": { "alias": "errors"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "name": { "alias": "name"; "required": false; "isSignal": true; }; "max": { "alias": "max"; "required": false; "isSignal": true; }; "allowHalf": { "alias": "allowHalf"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "touched": "touchedChange"; }, never, never, true, never>;
5272
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<RatingDirective, "[etRating]", ["etRating"], { "value": { "alias": "value"; "required": false; "isSignal": true; }; "mixed": { "alias": "mixed"; "required": false; "isSignal": true; }; "mixedLabel": { "alias": "mixedLabel"; "required": false; "isSignal": true; }; "touched": { "alias": "touched"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "readonly": { "alias": "readonly"; "required": false; "isSignal": true; }; "invalid": { "alias": "invalid"; "required": false; "isSignal": true; }; "errors": { "alias": "errors"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "name": { "alias": "name"; "required": false; "isSignal": true; }; "max": { "alias": "max"; "required": false; "isSignal": true; }; "allowHalf": { "alias": "allowHalf"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "mixed": "mixedChange"; "touched": "touchedChange"; }, never, never, true, never>;
4909
5273
  }
4910
5274
 
4911
5275
  type RatingIconContext = {
@@ -4964,7 +5328,7 @@ declare class RatingComponent {
4964
5328
  protected handleIconClick(index: number, event: MouseEvent): void;
4965
5329
  private valueFromPointer;
4966
5330
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<RatingComponent, never>;
4967
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<RatingComponent, "et-rating", never, {}, {}, never, ["*", "et-hint"], true, [{ directive: typeof FormFieldDirective; inputs: {}; outputs: {}; }, { directive: typeof RatingDirective; inputs: { "value": "value"; "touched": "touched"; "disabled": "disabled"; "readonly": "readonly"; "invalid": "invalid"; "errors": "errors"; "required": "required"; "name": "name"; "max": "max"; "allowHalf": "allowHalf"; }; outputs: { "valueChange": "valueChange"; "touchedChange": "touchedChange"; }; }, { directive: typeof _ethlete_core.ProvideColorDirective; inputs: { "etProvideColor": "color"; }; outputs: {}; }]>;
5331
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<RatingComponent, "et-rating", never, {}, {}, never, ["*", "et-hint"], true, [{ directive: typeof FormFieldDirective; inputs: {}; outputs: {}; }, { directive: typeof RatingDirective; inputs: { "value": "value"; "mixed": "mixed"; "mixedLabel": "mixedLabel"; "touched": "touched"; "disabled": "disabled"; "readonly": "readonly"; "invalid": "invalid"; "errors": "errors"; "required": "required"; "name": "name"; "max": "max"; "allowHalf": "allowHalf"; }; outputs: { "valueChange": "valueChange"; "mixedChange": "mixedChange"; "touchedChange": "touchedChange"; }; }, { directive: typeof _ethlete_core.ProvideColorDirective; inputs: { "etProvideColor": "color"; }; outputs: {}; }]>;
4968
5332
  }
4969
5333
 
4970
5334
  declare const RATING_IMPORTS: readonly [typeof RatingComponent, typeof RatingDirective, typeof RatingIconDirective];
@@ -5074,6 +5438,7 @@ declare class SelectSearchDirective {
5074
5438
  protected controls: _angular_core.Signal<string | null>;
5075
5439
  protected activeDescendant: _angular_core.Signal<string | null>;
5076
5440
  protected isFull: _angular_core.Signal<boolean>;
5441
+ protected describedBy: _angular_core.Signal<string | null>;
5077
5442
  constructor();
5078
5443
  /** @internal */
5079
5444
  isFocused(): boolean;
@@ -5082,6 +5447,8 @@ declare class SelectSearchDirective {
5082
5447
  /** @internal Selects a displayed value label on open, so typing replaces it (single select). */
5083
5448
  handleOpened(): void;
5084
5449
  clear(): void;
5450
+ /** @internal Restores and selects the masked label after Escape without changing normal search behavior. */
5451
+ restoreMixedDisplay(): void;
5085
5452
  protected handleInput(): void;
5086
5453
  protected handleKeydown(event: KeyboardEvent): void;
5087
5454
  protected handlePaste(event: ClipboardEvent): void;
@@ -5200,11 +5567,23 @@ declare const SELECT_FILTER_MODES: {
5200
5567
  readonly EXTERNAL: "external";
5201
5568
  };
5202
5569
  type SelectFilterMode = (typeof SELECT_FILTER_MODES)[keyof typeof SELECT_FILTER_MODES];
5570
+ /**
5571
+ * The async option state a source (e.g. the bundle from `selectOptionsFromQuery`) pushes into a
5572
+ * select via `[etSelectOptions]`. While one is set it overrides the `loading`/`error`/`hasMoreItems`
5573
+ * inputs and forces `filterMode` to `external`. Structurally satisfied by `SelectOptionsFromQuery`.
5574
+ */
5575
+ type SelectAsyncOptions = {
5576
+ loading: Signal<boolean>;
5577
+ error: Signal<string | null>;
5578
+ hasMore: Signal<boolean>;
5579
+ };
5203
5580
  declare class SelectDirective implements FormValueControl<unknown>, FormFieldControl {
5204
5581
  private formField;
5205
5582
  private destroyRef;
5206
5583
  private document;
5207
5584
  value: _angular_core.ModelSignal<unknown>;
5585
+ /** View state for a field whose source values disagree. The raw form value stays untouched. */
5586
+ mixed: _angular_core.ModelSignal<boolean>;
5208
5587
  touched: _angular_core.ModelSignal<boolean>;
5209
5588
  open: _angular_core.ModelSignal<boolean>;
5210
5589
  multiple: _angular_core.InputSignal<boolean>;
@@ -5215,6 +5594,8 @@ declare class SelectDirective implements FormValueControl<unknown>, FormFieldCon
5215
5594
  required: _angular_core.InputSignal<boolean>;
5216
5595
  name: _angular_core.InputSignal<string>;
5217
5596
  placeholder: _angular_core.InputSignal<string>;
5597
+ /** Trigger text shown while `mixed` is set. */
5598
+ mixedLabel: _angular_core.InputSignal<string>;
5218
5599
  /**
5219
5600
  * Data-driven options: the select owns the option rows instead of the consumer projecting
5220
5601
  * `et-select-option`s, and windows their rendering (virtualization) — only rows near the
@@ -5224,7 +5605,7 @@ declare class SelectDirective implements FormValueControl<unknown>, FormFieldCon
5224
5605
  * with projected options (e.g. a pinned row), which render normally and are not windowed.
5225
5606
  */
5226
5607
  options: _angular_core.InputSignal<readonly SelectOptionData[] | null>;
5227
- filterMode: _angular_core.InputSignal<SelectFilterMode>;
5608
+ filterModeInput: _angular_core.InputSignal<SelectFilterMode>;
5228
5609
  /** Enter with a search query that matches no option commits the raw query string as the value. */
5229
5610
  allowCustomValues: _angular_core.InputSignal<boolean>;
5230
5611
  /**
@@ -5244,25 +5625,56 @@ declare class SelectDirective implements FormValueControl<unknown>, FormFieldCon
5244
5625
  /** Renders an "Add new" row in `et-select`'s panel — clicking it emits `addNew`. */
5245
5626
  allowAddNew: _angular_core.InputSignal<boolean>;
5246
5627
  /** Async option state — rendered by `et-select` as a loading row inside the panel. */
5247
- loading: _angular_core.InputSignal<boolean>;
5628
+ loadingInput: _angular_core.InputSignal<boolean>;
5248
5629
  /** Async option state — rendered by `et-select` as an error row inside the panel. */
5249
- error: _angular_core.InputSignal<string | null>;
5630
+ errorInput: _angular_core.InputSignal<string | null>;
5250
5631
  /** Async option state — `et-select` renders a load-more control emitting `loadMore`. */
5251
- hasMoreItems: _angular_core.InputSignal<boolean>;
5632
+ hasMoreItemsInput: _angular_core.InputSignal<boolean>;
5252
5633
  /** Whether the panel mirrors the anchor's width. Off for compact triggers (e.g. a country picker). */
5253
5634
  mirrorPanelWidth: _angular_core.InputSignal<boolean>;
5635
+ /**
5636
+ * Fire-and-forget picker mode (single select): committing an option emits `pickOption`
5637
+ * without ever writing `value`, so the select stays empty and can feed an external list
5638
+ * without the set-then-clear dance. No effect in multi select.
5639
+ */
5640
+ pickOnly: _angular_core.InputSignal<boolean>;
5254
5641
  queryChange: _angular_core.OutputEmitterRef<string>;
5255
5642
  loadMore: _angular_core.OutputEmitterRef<void>;
5256
5643
  /** The user picked the "Add new" row (`allowAddNew`). Emits the current search query for prefilling. */
5257
5644
  addNew: _angular_core.OutputEmitterRef<string>;
5258
- shouldDisplayError: _angular_core.Signal<boolean>;
5259
- hasValue: _angular_core.Signal<boolean>;
5645
+ /**
5646
+ * Single select committed an option — carries the picked value. In `pickOnly` mode this is
5647
+ * the only pick signal and `value` is never mutated; otherwise it fires alongside the normal
5648
+ * value selection.
5649
+ */
5650
+ pickOption: _angular_core.OutputEmitterRef<unknown>;
5651
+ /**
5652
+ * An async option source pushed in by `[etSelectOptions]` (from `selectOptionsFromQuery` /
5653
+ * `selectOptionsFromV2Query`). While set it overrides the `loading`/`error`/`hasMoreItems`
5654
+ * inputs and forces `filterMode` to `external`. `null` when the select is wired manually.
5655
+ * @internal
5656
+ */
5657
+ asyncOptions: WritableSignal<SelectAsyncOptions | null>;
5658
+ /** How a search query filters. Forced to `external` while an `[etSelectOptions]` source is set. */
5659
+ filterMode: Signal<SelectFilterMode>;
5660
+ /** Async option state — rendered by `et-select` as a loading row. From `[etSelectOptions]` if set. */
5661
+ loading: Signal<boolean>;
5662
+ /** Async option state — rendered by `et-select` as an error row. From `[etSelectOptions]` if set. */
5663
+ error: Signal<string | null>;
5664
+ /** Async option state — drives the load-more control. From `[etSelectOptions]` if set. */
5665
+ hasMoreItems: Signal<boolean>;
5666
+ shouldDisplayError: Signal<boolean>;
5667
+ /** The raw value normalized to the selection the control currently exposes. Mixed has no effective selection. */
5668
+ private effectiveValues;
5669
+ hasValue: Signal<boolean>;
5260
5670
  describedBy: WritableSignal<string | null>;
5261
5671
  controlType: WritableSignal<"select">;
5262
5672
  /** @internal Set by the trigger. The field also counts as focused while the panel is open (focus may sit in the search input). */
5263
5673
  triggerFocused: WritableSignal<boolean>;
5264
- focused: _angular_core.Signal<boolean>;
5265
- labelId: _angular_core.Signal<string | null>;
5674
+ focused: Signal<boolean>;
5675
+ /** @internal Keeps the form field in its focused style while the panel is open. */
5676
+ expanded: Signal<boolean>;
5677
+ labelId: Signal<string | null>;
5266
5678
  /** @internal */
5267
5679
  registeredTrigger: WritableSignal<SelectTriggerDirective | null>;
5268
5680
  /** @internal */
@@ -5273,6 +5685,8 @@ declare class SelectDirective implements FormValueControl<unknown>, FormFieldCon
5273
5685
  registeredValueTemplate: WritableSignal<SelectValueDirective | null>;
5274
5686
  /** @internal */
5275
5687
  registeredSearch: WritableSignal<SelectSearchDirective | null>;
5688
+ /** @internal ID of the component-rendered mixed label, when present. */
5689
+ mixedLabelId: WritableSignal<string | null>;
5276
5690
  /** @internal */
5277
5691
  registeredLoadingTemplate: WritableSignal<SelectLoadingDirective | null>;
5278
5692
  /** @internal */
@@ -5293,19 +5707,19 @@ declare class SelectDirective implements FormValueControl<unknown>, FormFieldCon
5293
5707
  */
5294
5708
  activeItemSource: WritableSignal<"keyboard" | "pointer">;
5295
5709
  selection: SelectionState<unknown, SelectItem>;
5296
- activeId: _angular_core.Signal<string | null>;
5297
- listboxId: _angular_core.Signal<string | null>;
5710
+ activeId: Signal<string | null>;
5711
+ listboxId: Signal<string | null>;
5298
5712
  /** @internal */
5299
5713
  overlayRef: WritableSignal<AnchoredPanelOverlayRef | null>;
5300
- isMounted: _angular_core.Signal<boolean>;
5714
+ isMounted: Signal<boolean>;
5301
5715
  private panel;
5302
5716
  private dataItems;
5303
5717
  private dataItemRegistry;
5304
- sortedItems: _angular_core.Signal<SelectItem[]>;
5718
+ sortedItems: Signal<SelectItem[]>;
5305
5719
  /** The current search query (empty string when no search is registered). */
5306
- query: _angular_core.Signal<string>;
5720
+ query: Signal<string>;
5307
5721
  /** @internal Lower-cased query for option matching. */
5308
- normalizedQuery: _angular_core.Signal<string>;
5722
+ normalizedQuery: Signal<string>;
5309
5723
  /**
5310
5724
  * @internal The query the panel filters by. Live while open; frozen at its last value
5311
5725
  * otherwise — the close-time query clear must not unfilter the options while the panel
@@ -5313,11 +5727,11 @@ declare class SelectDirective implements FormValueControl<unknown>, FormFieldCon
5313
5727
  */
5314
5728
  panelFilterQuery: WritableSignal<string>;
5315
5729
  /** The options the panel currently shows — with `filterMode` `internal`, non-matching ones are excluded. */
5316
- visibleItems: _angular_core.Signal<SelectItem[]>;
5317
- enabledItems: _angular_core.Signal<SelectItem[]>;
5318
- selectedItems: _angular_core.Signal<SelectItem[]>;
5730
+ visibleItems: Signal<SelectItem[]>;
5731
+ enabledItems: Signal<SelectItem[]>;
5732
+ selectedItems: Signal<SelectItem[]>;
5319
5733
  /** @internal The query-visible slice of data-driven options — the virtual window renders these. */
5320
- visibleDataItems: _angular_core.Signal<SelectItem[]>;
5734
+ visibleDataItems: Signal<SelectItem[]>;
5321
5735
  /**
5322
5736
  * The window over the data-driven rows: `paddingTop()`/`paddingBottom()` stand in for the
5323
5737
  * scroll height of everything outside `virtualizedItems()` — apply them as block paddings
@@ -5329,10 +5743,10 @@ declare class SelectDirective implements FormValueControl<unknown>, FormFieldCon
5329
5743
  * `etSelectViewport` is registered. Render with `etSelectVirtualOption` rows between the
5330
5744
  * `virtualWindow` block paddings.
5331
5745
  */
5332
- virtualizedItems: _angular_core.Signal<SelectItem[]>;
5746
+ virtualizedItems: Signal<SelectItem[]>;
5333
5747
  private pendingActiveScrollItem;
5334
5748
  /** True once `maxSelection` is reached (multi select) — further adds are ignored. */
5335
- isFull: _angular_core.Signal<boolean>;
5749
+ isFull: Signal<boolean>;
5336
5750
  /**
5337
5751
  * The normalized custom value the current search query would commit, or `null` when there
5338
5752
  * is nothing to commit: custom values are off, the query is empty/rejected, the value is
@@ -5341,7 +5755,7 @@ declare class SelectDirective implements FormValueControl<unknown>, FormFieldCon
5341
5755
  * virtual focus) — headless consumers render their own row, marked with `customValueOption`
5342
5756
  * so it is excluded from the duplicate check here.
5343
5757
  */
5344
- customValueCandidate: _angular_core.Signal<string | null>;
5758
+ customValueCandidate: Signal<string | null>;
5345
5759
  private labelCache;
5346
5760
  /**
5347
5761
  * One entry per selected value, resolved for display: the label comes from the live
@@ -5349,14 +5763,16 @@ declare class SelectDirective implements FormValueControl<unknown>, FormFieldCon
5349
5763
  * (custom values) — from the value itself. `item` is `null` when no live option
5350
5764
  * carries the value. Drives the trigger's chips and label display.
5351
5765
  */
5352
- selectedEntries: _angular_core.Signal<SelectSelectedEntry[]>;
5766
+ selectedEntries: Signal<SelectSelectedEntry[]>;
5353
5767
  /**
5354
5768
  * The label(s) of the current value for trigger display. `null` when no label is
5355
5769
  * known (show the placeholder).
5356
5770
  */
5357
- displayValue: _angular_core.Signal<string | null>;
5771
+ displayValue: Signal<string | null>;
5358
5772
  private typeahead;
5359
5773
  constructor();
5774
+ /** @internal Whether a value belongs to the effective selection (always false while mixed). */
5775
+ isValueSelected(value: unknown): boolean;
5360
5776
  show(): void;
5361
5777
  hide(): void;
5362
5778
  toggle(): void;
@@ -5394,6 +5810,9 @@ declare class SelectDirective implements FormValueControl<unknown>, FormFieldCon
5394
5810
  * single mode. Returns whether the value was committed.
5395
5811
  */
5396
5812
  commitCustomValue(raw: string): boolean;
5813
+ private pickSingleOption;
5814
+ /** Writes the first explicit choice over a mixed value without consulting raw checked state. */
5815
+ private commitMixedOption;
5397
5816
  private createDataItem;
5398
5817
  private handleClosedKeydown;
5399
5818
  private commitActiveOrClose;
@@ -5408,7 +5827,7 @@ declare class SelectDirective implements FormValueControl<unknown>, FormFieldCon
5408
5827
  private handlePanelBeforeClosed;
5409
5828
  private handlePanelKeydown;
5410
5829
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<SelectDirective, never>;
5411
- static ɵdir: _angular_core.ɵɵDirectiveDeclaration<SelectDirective, "[etSelect]", ["etSelect"], { "value": { "alias": "value"; "required": false; "isSignal": true; }; "touched": { "alias": "touched"; "required": false; "isSignal": true; }; "open": { "alias": "open"; "required": false; "isSignal": true; }; "multiple": { "alias": "multiple"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "readonly": { "alias": "readonly"; "required": false; "isSignal": true; }; "invalid": { "alias": "invalid"; "required": false; "isSignal": true; }; "errors": { "alias": "errors"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "name": { "alias": "name"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "options": { "alias": "options"; "required": false; "isSignal": true; }; "filterMode": { "alias": "filterMode"; "required": false; "isSignal": true; }; "allowCustomValues": { "alias": "allowCustomValues"; "required": false; "isSignal": true; }; "customValueSeparators": { "alias": "customValueSeparators"; "required": false; "isSignal": true; }; "normalizeCustomValue": { "alias": "normalizeCustomValue"; "required": false; "isSignal": true; }; "commitCustomValueOnClose": { "alias": "commitCustomValueOnClose"; "required": false; "isSignal": true; }; "maxSelection": { "alias": "maxSelection"; "required": false; "isSignal": true; }; "allowAddNew": { "alias": "allowAddNew"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "error": { "alias": "error"; "required": false; "isSignal": true; }; "hasMoreItems": { "alias": "hasMoreItems"; "required": false; "isSignal": true; }; "mirrorPanelWidth": { "alias": "mirrorPanelWidth"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "touched": "touchedChange"; "open": "openChange"; "queryChange": "queryChange"; "loadMore": "loadMore"; "addNew": "addNew"; }, never, never, true, never>;
5830
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<SelectDirective, "[etSelect]", ["etSelect"], { "value": { "alias": "value"; "required": false; "isSignal": true; }; "mixed": { "alias": "mixed"; "required": false; "isSignal": true; }; "touched": { "alias": "touched"; "required": false; "isSignal": true; }; "open": { "alias": "open"; "required": false; "isSignal": true; }; "multiple": { "alias": "multiple"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "readonly": { "alias": "readonly"; "required": false; "isSignal": true; }; "invalid": { "alias": "invalid"; "required": false; "isSignal": true; }; "errors": { "alias": "errors"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "name": { "alias": "name"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "mixedLabel": { "alias": "mixedLabel"; "required": false; "isSignal": true; }; "options": { "alias": "options"; "required": false; "isSignal": true; }; "filterModeInput": { "alias": "filterMode"; "required": false; "isSignal": true; }; "allowCustomValues": { "alias": "allowCustomValues"; "required": false; "isSignal": true; }; "customValueSeparators": { "alias": "customValueSeparators"; "required": false; "isSignal": true; }; "normalizeCustomValue": { "alias": "normalizeCustomValue"; "required": false; "isSignal": true; }; "commitCustomValueOnClose": { "alias": "commitCustomValueOnClose"; "required": false; "isSignal": true; }; "maxSelection": { "alias": "maxSelection"; "required": false; "isSignal": true; }; "allowAddNew": { "alias": "allowAddNew"; "required": false; "isSignal": true; }; "loadingInput": { "alias": "loading"; "required": false; "isSignal": true; }; "errorInput": { "alias": "error"; "required": false; "isSignal": true; }; "hasMoreItemsInput": { "alias": "hasMoreItems"; "required": false; "isSignal": true; }; "mirrorPanelWidth": { "alias": "mirrorPanelWidth"; "required": false; "isSignal": true; }; "pickOnly": { "alias": "pickOnly"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "mixed": "mixedChange"; "touched": "touchedChange"; "open": "openChange"; "queryChange": "queryChange"; "loadMore": "loadMore"; "addNew": "addNew"; "pickOption": "pickOption"; }, never, never, true, never>;
5412
5831
  }
5413
5832
 
5414
5833
  declare class SelectListboxDirective {
@@ -5494,57 +5913,6 @@ declare class SelectOptionDirective {
5494
5913
  static ɵdir: _angular_core.ɵɵDirectiveDeclaration<SelectOptionDirective, "[etSelectOption]", ["etSelectOption"], { "value": { "alias": "value"; "required": true; "isSignal": true; }; "labelInput": { "alias": "label"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "customValueOption": { "alias": "customValueOption"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
5495
5914
  }
5496
5915
 
5497
- /**
5498
- * Renders one select-owned item (an entry of `virtualizedItems()`, data-driven `options`
5499
- * mode) as a listbox option. Unlike `etSelectOption` it registers nothing — the item
5500
- * already lives in the select's registry; this directive wires the rendered row to it
5501
- * (ARIA attributes, active/selected state, pointer handling) while the row is inside the
5502
- * virtual window.
5503
- */
5504
- declare class SelectVirtualOptionDirective {
5505
- private select;
5506
- elementRef: ElementRef<HTMLElement>;
5507
- item: _angular_core.InputSignal<SelectItem>;
5508
- selected: _angular_core.Signal<boolean>;
5509
- active: _angular_core.Signal<boolean>;
5510
- protected activeSource: _angular_core.Signal<"keyboard" | "pointer" | null>;
5511
- constructor();
5512
- protected handleClick(event: MouseEvent): void;
5513
- protected handleMousedown(event: MouseEvent): void;
5514
- protected handlePointerEnter(event: PointerEvent): void;
5515
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<SelectVirtualOptionDirective, never>;
5516
- static ɵdir: _angular_core.ɵɵDirectiveDeclaration<SelectVirtualOptionDirective, "[etSelectVirtualOption]", ["etSelectVirtualOption"], { "item": { "alias": "etSelectVirtualOption"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
5517
- }
5518
-
5519
- declare const SELECT_ERROR_CODES: {
5520
- readonly MISSING_TRIGGER: 1000;
5521
- readonly MISSING_SURFACE: 1001;
5522
- readonly TRIGGER_OUTSIDE_SELECT: 1002;
5523
- readonly SURFACE_OUTSIDE_SELECT: 1003;
5524
- readonly LISTBOX_OUTSIDE_SELECT: 1004;
5525
- readonly OPTION_OUTSIDE_SELECT: 1005;
5526
- readonly VALUE_OUTSIDE_SELECT: 1006;
5527
- readonly SEARCH_OUTSIDE_SELECT: 1007;
5528
- readonly STATE_TEMPLATE_OUTSIDE_SELECT: 1008;
5529
- readonly OPTION_GROUP_OUTSIDE_SELECT: 1009;
5530
- readonly VIRTUAL_OPTION_OUTSIDE_SELECT: 1010;
5531
- readonly OPTION_TEMPLATE_OUTSIDE_SELECT: 1011;
5532
- readonly VIEWPORT_OUTSIDE_SELECT: 1012;
5533
- };
5534
-
5535
- declare class SelectOptionGroupComponent {
5536
- protected group: SelectOptionGroupDirective;
5537
- protected readonly labelId: string;
5538
- constructor();
5539
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<SelectOptionGroupComponent, never>;
5540
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<SelectOptionGroupComponent, "et-select-option-group", never, {}, {}, never, ["*"], true, [{ directive: typeof SelectOptionGroupDirective; inputs: { "label": "label"; }; outputs: {}; }]>;
5541
- }
5542
-
5543
- declare class SelectOptionComponent {
5544
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<SelectOptionComponent, never>;
5545
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<SelectOptionComponent, "et-select-option", never, {}, {}, never, ["*"], true, [{ directive: typeof SelectOptionDirective; inputs: { "value": "value"; "label": "label"; "disabled": "disabled"; "customValueOption": "customValueOption"; }; outputs: {}; }]>;
5546
- }
5547
-
5548
5916
  /** Config for {@link selectOptionsFromQuery}. */
5549
5917
  type SelectOptionsFromQueryConfig<TCreator extends AnyQueryCreator, TOption> = {
5550
5918
  /**
@@ -5645,6 +6013,88 @@ type SelectOptionsFromQuery<TOption> = {
5645
6013
  */
5646
6014
  declare const selectOptionsFromQuery: <TCreator extends AnyQueryCreator, TOption>(config: SelectOptionsFromQueryConfig<TCreator, TOption>) => SelectOptionsFromQuery<TOption>;
5647
6015
 
6016
+ /**
6017
+ * Wires an async options bundle — the return value of `selectOptionsFromQuery` or
6018
+ * `selectOptionsFromV2Query` — into a select with a single binding, replacing the manual
6019
+ * per-input wiring. Push the bundle in and it forwards `loading`, `error` and `hasMoreItems`,
6020
+ * forces `filterMode` to `external`, and drives the bundle's `setQuery`/`loadMore` from the
6021
+ * select's `(queryChange)`/`(loadMore)` outputs. Render `options` yourself as before:
6022
+ *
6023
+ * ```html
6024
+ * <et-select [formField]="form.assignee" [etSelectOptions]="users">
6025
+ * <input etSelectSearch placeholder="Search users" />
6026
+ * @for (user of users.options(); track user.id) {
6027
+ * <et-select-option [value]="user.id">{{ user.name }}</et-select-option>
6028
+ * }
6029
+ * </et-select>
6030
+ * ```
6031
+ *
6032
+ * Both flavors return the same bundle shape, so one directive serves the current query client and
6033
+ * the legacy `V2QueryClient` alike.
6034
+ */
6035
+ declare class SelectOptionsDirective implements OnInit {
6036
+ private select;
6037
+ private destroyRef;
6038
+ /** The bundle from `selectOptionsFromQuery` / `selectOptionsFromV2Query`. */
6039
+ bundle: _angular_core.InputSignal<SelectOptionsFromQuery<unknown>>;
6040
+ constructor();
6041
+ ngOnInit(): void;
6042
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<SelectOptionsDirective, never>;
6043
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<SelectOptionsDirective, "[etSelectOptions]", ["etSelectOptions"], { "bundle": { "alias": "etSelectOptions"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
6044
+ }
6045
+
6046
+ /**
6047
+ * Renders one select-owned item (an entry of `virtualizedItems()`, data-driven `options`
6048
+ * mode) as a listbox option. Unlike `etSelectOption` it registers nothing — the item
6049
+ * already lives in the select's registry; this directive wires the rendered row to it
6050
+ * (ARIA attributes, active/selected state, pointer handling) while the row is inside the
6051
+ * virtual window.
6052
+ */
6053
+ declare class SelectVirtualOptionDirective {
6054
+ private select;
6055
+ elementRef: ElementRef<HTMLElement>;
6056
+ item: _angular_core.InputSignal<SelectItem>;
6057
+ selected: _angular_core.Signal<boolean>;
6058
+ active: _angular_core.Signal<boolean>;
6059
+ protected activeSource: _angular_core.Signal<"keyboard" | "pointer" | null>;
6060
+ constructor();
6061
+ protected handleClick(event: MouseEvent): void;
6062
+ protected handleMousedown(event: MouseEvent): void;
6063
+ protected handlePointerEnter(event: PointerEvent): void;
6064
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<SelectVirtualOptionDirective, never>;
6065
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<SelectVirtualOptionDirective, "[etSelectVirtualOption]", ["etSelectVirtualOption"], { "item": { "alias": "etSelectVirtualOption"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
6066
+ }
6067
+
6068
+ declare const SELECT_ERROR_CODES: {
6069
+ readonly MISSING_TRIGGER: 1000;
6070
+ readonly MISSING_SURFACE: 1001;
6071
+ readonly TRIGGER_OUTSIDE_SELECT: 1002;
6072
+ readonly SURFACE_OUTSIDE_SELECT: 1003;
6073
+ readonly LISTBOX_OUTSIDE_SELECT: 1004;
6074
+ readonly OPTION_OUTSIDE_SELECT: 1005;
6075
+ readonly VALUE_OUTSIDE_SELECT: 1006;
6076
+ readonly SEARCH_OUTSIDE_SELECT: 1007;
6077
+ readonly STATE_TEMPLATE_OUTSIDE_SELECT: 1008;
6078
+ readonly OPTION_GROUP_OUTSIDE_SELECT: 1009;
6079
+ readonly VIRTUAL_OPTION_OUTSIDE_SELECT: 1010;
6080
+ readonly OPTION_TEMPLATE_OUTSIDE_SELECT: 1011;
6081
+ readonly VIEWPORT_OUTSIDE_SELECT: 1012;
6082
+ readonly OPTIONS_OUTSIDE_SELECT: 1013;
6083
+ };
6084
+
6085
+ declare class SelectOptionGroupComponent {
6086
+ protected group: SelectOptionGroupDirective;
6087
+ protected readonly labelId: string;
6088
+ constructor();
6089
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<SelectOptionGroupComponent, never>;
6090
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<SelectOptionGroupComponent, "et-select-option-group", never, {}, {}, never, ["*"], true, [{ directive: typeof SelectOptionGroupDirective; inputs: { "label": "label"; }; outputs: {}; }]>;
6091
+ }
6092
+
6093
+ declare class SelectOptionComponent {
6094
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<SelectOptionComponent, never>;
6095
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<SelectOptionComponent, "et-select-option", never, {}, {}, never, ["*"], true, [{ directive: typeof SelectOptionDirective; inputs: { "value": "value"; "label": "label"; "disabled": "disabled"; "customValueOption": "customValueOption"; }; outputs: {}; }]>;
6096
+ }
6097
+
5648
6098
  /** The args accepted by the creator's `prepare()` — includes `mock`/`config` extras. */
5649
6099
  type V2PrepareArgsOf<TCreator extends AnyV2QueryCreator | AnyLegacyQueryCreator> = Parameters<TCreator['prepare']>[0];
5650
6100
  /** Config for {@link selectOptionsFromV2Query}. */
@@ -5755,19 +6205,21 @@ declare class SelectComponent {
5755
6205
  /** Shows a clear (×) control while a value is selected. */
5756
6206
  clearable: _angular_core.InputSignal<boolean>;
5757
6207
  clearLabel: _angular_core.InputSignal<string>;
6208
+ protected mixedLabelId: string;
5758
6209
  protected showClear: _angular_core.Signal<boolean>;
5759
6210
  hasSearch: _angular_core.Signal<boolean>;
5760
6211
  protected showValueLabel: _angular_core.Signal<boolean>;
5761
6212
  protected valueContext: _angular_core.Signal<SelectValueContext>;
5762
6213
  protected showCustomValue: _angular_core.Signal<boolean>;
5763
6214
  protected stackedValue: _angular_core.Signal<boolean>;
6215
+ constructor();
5764
6216
  protected handleClearClick(event: Event): void;
5765
6217
  protected handleArrowClick(event: Event): void;
5766
6218
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<SelectComponent, never>;
5767
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<SelectComponent, "et-select", never, { "loadMoreLabel": { "alias": "loadMoreLabel"; "required": false; "isSignal": true; }; "addNewLabel": { "alias": "addNewLabel"; "required": false; "isSignal": true; }; "createLabel": { "alias": "createLabel"; "required": false; "isSignal": true; }; "clearable": { "alias": "clearable"; "required": false; "isSignal": true; }; "clearLabel": { "alias": "clearLabel"; "required": false; "isSignal": true; }; }, {}, never, ["input[etSelectSearch]", "*"], true, [{ directive: typeof SelectDirective; inputs: { "value": "value"; "touched": "touched"; "open": "open"; "multiple": "multiple"; "placeholder": "placeholder"; "disabled": "disabled"; "readonly": "readonly"; "invalid": "invalid"; "errors": "errors"; "required": "required"; "name": "name"; "options": "options"; "filterMode": "filterMode"; "allowCustomValues": "allowCustomValues"; "customValueSeparators": "customValueSeparators"; "normalizeCustomValue": "normalizeCustomValue"; "commitCustomValueOnClose": "commitCustomValueOnClose"; "maxSelection": "maxSelection"; "allowAddNew": "allowAddNew"; "loading": "loading"; "error": "error"; "hasMoreItems": "hasMoreItems"; }; outputs: { "valueChange": "valueChange"; "touchedChange": "touchedChange"; "openChange": "openChange"; "queryChange": "queryChange"; "loadMore": "loadMore"; "addNew": "addNew"; }; }, { directive: typeof _ethlete_core.ColorInteractiveDirective; inputs: {}; outputs: {}; }]>;
6219
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<SelectComponent, "et-select", never, { "loadMoreLabel": { "alias": "loadMoreLabel"; "required": false; "isSignal": true; }; "addNewLabel": { "alias": "addNewLabel"; "required": false; "isSignal": true; }; "createLabel": { "alias": "createLabel"; "required": false; "isSignal": true; }; "clearable": { "alias": "clearable"; "required": false; "isSignal": true; }; "clearLabel": { "alias": "clearLabel"; "required": false; "isSignal": true; }; }, {}, never, ["input[etSelectSearch]", "*"], true, [{ directive: typeof SelectDirective; inputs: { "value": "value"; "mixed": "mixed"; "touched": "touched"; "open": "open"; "multiple": "multiple"; "placeholder": "placeholder"; "mixedLabel": "mixedLabel"; "disabled": "disabled"; "readonly": "readonly"; "invalid": "invalid"; "errors": "errors"; "required": "required"; "name": "name"; "options": "options"; "filterMode": "filterMode"; "allowCustomValues": "allowCustomValues"; "customValueSeparators": "customValueSeparators"; "normalizeCustomValue": "normalizeCustomValue"; "commitCustomValueOnClose": "commitCustomValueOnClose"; "maxSelection": "maxSelection"; "allowAddNew": "allowAddNew"; "loading": "loading"; "error": "error"; "hasMoreItems": "hasMoreItems"; "pickOnly": "pickOnly"; }; outputs: { "valueChange": "valueChange"; "mixedChange": "mixedChange"; "touchedChange": "touchedChange"; "openChange": "openChange"; "queryChange": "queryChange"; "loadMore": "loadMore"; "addNew": "addNew"; "pickOption": "pickOption"; }; }, { directive: typeof _ethlete_core.ColorInteractiveDirective; inputs: {}; outputs: {}; }]>;
5768
6220
  }
5769
6221
 
5770
- declare const SELECT_IMPORTS: readonly [typeof SelectComponent, typeof SelectOptionComponent, typeof SelectOptionGroupComponent, typeof SelectPanelComponent, typeof SelectVirtualOptionComponent, typeof SelectDirective, typeof SelectTriggerDirective, typeof SelectSurfaceDirective, typeof SelectListboxDirective, typeof SelectOptionDirective, typeof SelectOptionGroupDirective, typeof SelectOptionTemplateDirective, typeof SelectValueDirective, typeof SelectSearchDirective, typeof SelectViewportDirective, typeof SelectVirtualOptionDirective, typeof SelectLoadingDirective, typeof SelectErrorDirective, typeof SelectEmptyDirective];
6222
+ declare const SELECT_IMPORTS: readonly [typeof SelectComponent, typeof SelectOptionComponent, typeof SelectOptionGroupComponent, typeof SelectPanelComponent, typeof SelectVirtualOptionComponent, typeof SelectDirective, typeof SelectTriggerDirective, typeof SelectSurfaceDirective, typeof SelectListboxDirective, typeof SelectOptionDirective, typeof SelectOptionGroupDirective, typeof SelectOptionTemplateDirective, typeof SelectValueDirective, typeof SelectSearchDirective, typeof SelectOptionsDirective, typeof SelectViewportDirective, typeof SelectVirtualOptionDirective, typeof SelectLoadingDirective, typeof SelectErrorDirective, typeof SelectEmptyDirective];
5771
6223
 
5772
6224
  declare const SELECTION_LIST_TOKEN: InjectionToken<SelectionListDirectiveBase<unknown>>;
5773
6225
  declare const SELECTION_LIST_MULTIPLE: InjectionToken<boolean>;
@@ -5794,6 +6246,12 @@ declare class SelectionListDirective implements SelectionListDirectiveBase, Form
5794
6246
  private destroyRef;
5795
6247
  private multipleOverride;
5796
6248
  value: _angular_core.ModelSignal<unknown>;
6249
+ /**
6250
+ * View state for a group whose source values disagree (bulk edit). The raw `value` stays
6251
+ * untouched but no option reports as checked; the first user commit replaces it and
6252
+ * resolves the flag. There is no text display slot — the masking itself is the presentation.
6253
+ */
6254
+ mixed: _angular_core.ModelSignal<boolean>;
5797
6255
  touched: _angular_core.ModelSignal<boolean>;
5798
6256
  multipleInput: _angular_core.InputSignal<boolean>;
5799
6257
  disabled: _angular_core.InputSignal<boolean>;
@@ -5815,7 +6273,7 @@ declare class SelectionListDirective implements SelectionListDirectiveBase, Form
5815
6273
  focusItem(item: SelectionListItem): void;
5816
6274
  activate(): void;
5817
6275
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<SelectionListDirective, never>;
5818
- static ɵdir: _angular_core.ɵɵDirectiveDeclaration<SelectionListDirective, "[etSelectionList]", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "touched": { "alias": "touched"; "required": false; "isSignal": true; }; "multipleInput": { "alias": "multiple"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "readonly": { "alias": "readonly"; "required": false; "isSignal": true; }; "invalid": { "alias": "invalid"; "required": false; "isSignal": true; }; "errors": { "alias": "errors"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "name": { "alias": "name"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "touched": "touchedChange"; }, never, never, true, never>;
6276
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<SelectionListDirective, "[etSelectionList]", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "mixed": { "alias": "mixed"; "required": false; "isSignal": true; }; "touched": { "alias": "touched"; "required": false; "isSignal": true; }; "multipleInput": { "alias": "multiple"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "readonly": { "alias": "readonly"; "required": false; "isSignal": true; }; "invalid": { "alias": "invalid"; "required": false; "isSignal": true; }; "errors": { "alias": "errors"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "name": { "alias": "name"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "mixed": "mixedChange"; "touched": "touchedChange"; }, never, never, true, never>;
5819
6277
  }
5820
6278
 
5821
6279
  declare class CheckboxGroupComponent {
@@ -5846,7 +6304,7 @@ declare class CheckboxGroupComponent {
5846
6304
  };
5847
6305
  constructor();
5848
6306
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<CheckboxGroupComponent, never>;
5849
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<CheckboxGroupComponent, "et-checkbox-group", never, { "size": { "alias": "size"; "required": false; "isSignal": true; }; }, {}, never, ["*", "et-hint"], true, [{ directive: typeof FormFieldDirective; inputs: {}; outputs: {}; }, { directive: typeof SelectionListDirective; inputs: { "value": "value"; "touched": "touched"; "disabled": "disabled"; "readonly": "readonly"; "invalid": "invalid"; "errors": "errors"; "required": "required"; "name": "name"; }; outputs: { "valueChange": "valueChange"; "touchedChange": "touchedChange"; }; }, { directive: typeof _ethlete_core.ProvideColorDirective; inputs: { "etProvideColor": "color"; }; outputs: {}; }]>;
6307
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<CheckboxGroupComponent, "et-checkbox-group", never, { "size": { "alias": "size"; "required": false; "isSignal": true; }; }, {}, never, ["*", "et-hint"], true, [{ directive: typeof FormFieldDirective; inputs: {}; outputs: {}; }, { directive: typeof SelectionListDirective; inputs: { "value": "value"; "mixed": "mixed"; "touched": "touched"; "disabled": "disabled"; "readonly": "readonly"; "invalid": "invalid"; "errors": "errors"; "required": "required"; "name": "name"; }; outputs: { "valueChange": "valueChange"; "mixedChange": "mixedChange"; "touchedChange": "touchedChange"; }; }, { directive: typeof _ethlete_core.ProvideColorDirective; inputs: { "etProvideColor": "color"; }; outputs: {}; }]>;
5850
6308
  }
5851
6309
 
5852
6310
  declare class SelectionListControlDirective {
@@ -5919,7 +6377,7 @@ declare class RadioGroupComponent {
5919
6377
  };
5920
6378
  constructor();
5921
6379
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<RadioGroupComponent, never>;
5922
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<RadioGroupComponent, "et-radio-group", never, { "size": { "alias": "size"; "required": false; "isSignal": true; }; }, {}, never, ["*", "et-hint"], true, [{ directive: typeof FormFieldDirective; inputs: {}; outputs: {}; }, { directive: typeof SelectionListDirective; inputs: { "value": "value"; "touched": "touched"; "disabled": "disabled"; "readonly": "readonly"; "invalid": "invalid"; "errors": "errors"; "required": "required"; "name": "name"; }; outputs: { "valueChange": "valueChange"; "touchedChange": "touchedChange"; }; }, { directive: typeof _ethlete_core.ProvideColorDirective; inputs: { "etProvideColor": "color"; }; outputs: {}; }]>;
6380
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<RadioGroupComponent, "et-radio-group", never, { "size": { "alias": "size"; "required": false; "isSignal": true; }; }, {}, never, ["*", "et-hint"], true, [{ directive: typeof FormFieldDirective; inputs: {}; outputs: {}; }, { directive: typeof SelectionListDirective; inputs: { "value": "value"; "mixed": "mixed"; "touched": "touched"; "disabled": "disabled"; "readonly": "readonly"; "invalid": "invalid"; "errors": "errors"; "required": "required"; "name": "name"; }; outputs: { "valueChange": "valueChange"; "mixedChange": "mixedChange"; "touchedChange": "touchedChange"; }; }, { directive: typeof _ethlete_core.ProvideColorDirective; inputs: { "etProvideColor": "color"; }; outputs: {}; }]>;
5923
6381
  }
5924
6382
 
5925
6383
  declare class RadioComponent {
@@ -5961,7 +6419,7 @@ declare class SegmentedButtonGroupComponent {
5961
6419
  };
5962
6420
  constructor();
5963
6421
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<SegmentedButtonGroupComponent, never>;
5964
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<SegmentedButtonGroupComponent, "et-segmented-button-group", never, { "size": { "alias": "size"; "required": false; "isSignal": true; }; }, {}, never, ["et-label", ".et-segmented-button-group-label", "*", "et-hint"], true, [{ directive: typeof FormFieldDirective; inputs: {}; outputs: {}; }, { directive: typeof SelectionListDirective; inputs: { "value": "value"; "touched": "touched"; "disabled": "disabled"; "readonly": "readonly"; "invalid": "invalid"; "errors": "errors"; "required": "required"; "name": "name"; }; outputs: { "valueChange": "valueChange"; "touchedChange": "touchedChange"; }; }, { directive: typeof _ethlete_core.ProvideColorDirective; inputs: { "etProvideColor": "color"; }; outputs: {}; }]>;
6422
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<SegmentedButtonGroupComponent, "et-segmented-button-group", never, { "size": { "alias": "size"; "required": false; "isSignal": true; }; }, {}, never, ["et-label", ".et-segmented-button-group-label", "*", "et-hint"], true, [{ directive: typeof FormFieldDirective; inputs: {}; outputs: {}; }, { directive: typeof SelectionListDirective; inputs: { "value": "value"; "mixed": "mixed"; "touched": "touched"; "disabled": "disabled"; "readonly": "readonly"; "invalid": "invalid"; "errors": "errors"; "required": "required"; "name": "name"; }; outputs: { "valueChange": "valueChange"; "mixedChange": "mixedChange"; "touchedChange": "touchedChange"; }; }, { directive: typeof _ethlete_core.ProvideColorDirective; inputs: { "etProvideColor": "color"; }; outputs: {}; }]>;
5965
6423
  }
5966
6424
 
5967
6425
  declare class SegmentedButtonComponent {
@@ -5987,6 +6445,8 @@ type SliderThumbLabelBase = {
5987
6445
  };
5988
6446
  type SliderThumbBase = {
5989
6447
  focused: Signal<boolean>;
6448
+ /** The thumb's own `aria-label`, if the consumer set one instead of a shared `<et-label>`. */
6449
+ label: Signal<string>;
5990
6450
  focus(): void;
5991
6451
  };
5992
6452
  /**
@@ -5997,6 +6457,10 @@ type SliderHostBase = {
5997
6457
  effectiveMin: Signal<number>;
5998
6458
  effectiveMax: Signal<number>;
5999
6459
  step: Signal<number>;
6460
+ /** Bulk-edit view state — while set, thumbs park at the track start and hide their value from ARIA. */
6461
+ mixed: Signal<boolean>;
6462
+ /** `aria-valuetext` the thumbs announce while `mixed` is set. */
6463
+ mixedLabel: Signal<string>;
6000
6464
  disabled: Signal<boolean>;
6001
6465
  readonly: Signal<boolean>;
6002
6466
  interactive: Signal<boolean>;
@@ -6030,6 +6494,10 @@ declare class RangeSliderDirective implements FormValueControl<RangeSliderValue>
6030
6494
  private formField;
6031
6495
  private destroyRef;
6032
6496
  value: _angular_core.ModelSignal<RangeSliderValue>;
6497
+ /** View state for a field whose source values disagree. The raw form value stays untouched. */
6498
+ mixed: _angular_core.ModelSignal<boolean>;
6499
+ /** `aria-valuetext` both thumbs announce while `mixed` is set. */
6500
+ mixedLabel: _angular_core.InputSignal<string>;
6033
6501
  touched: _angular_core.ModelSignal<boolean>;
6034
6502
  disabled: _angular_core.InputSignal<boolean>;
6035
6503
  readonly: _angular_core.InputSignal<boolean>;
@@ -6054,6 +6522,7 @@ declare class RangeSliderDirective implements FormValueControl<RangeSliderValue>
6054
6522
  thumbs: _angular_core.WritableSignal<readonly SliderThumbBase[]>;
6055
6523
  registeredThumbLabelTemplate: _angular_core.WritableSignal<SliderThumbLabelBase | null>;
6056
6524
  focused: _angular_core.Signal<boolean>;
6525
+ hasCustomAccessibleName: _angular_core.Signal<boolean>;
6057
6526
  private bounds;
6058
6527
  thumbValues: _angular_core.Signal<readonly number[]>;
6059
6528
  thumbPercents: _angular_core.Signal<readonly number[]>;
@@ -6070,7 +6539,7 @@ declare class RangeSliderDirective implements FormValueControl<RangeSliderValue>
6070
6539
  /** @internal */
6071
6540
  unregisterThumb(thumb: SliderThumbBase): void;
6072
6541
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<RangeSliderDirective, never>;
6073
- static ɵdir: _angular_core.ɵɵDirectiveDeclaration<RangeSliderDirective, "[etRangeSlider]", ["etRangeSlider"], { "value": { "alias": "value"; "required": false; "isSignal": true; }; "touched": { "alias": "touched"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "readonly": { "alias": "readonly"; "required": false; "isSignal": true; }; "invalid": { "alias": "invalid"; "required": false; "isSignal": true; }; "errors": { "alias": "errors"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "name": { "alias": "name"; "required": false; "isSignal": true; }; "minValue": { "alias": "minValue"; "required": false; "isSignal": true; }; "maxValue": { "alias": "maxValue"; "required": false; "isSignal": true; }; "step": { "alias": "step"; "required": false; "isSignal": true; }; "minDistance": { "alias": "minDistance"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "touched": "touchedChange"; }, never, never, true, never>;
6542
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<RangeSliderDirective, "[etRangeSlider]", ["etRangeSlider"], { "value": { "alias": "value"; "required": false; "isSignal": true; }; "mixed": { "alias": "mixed"; "required": false; "isSignal": true; }; "mixedLabel": { "alias": "mixedLabel"; "required": false; "isSignal": true; }; "touched": { "alias": "touched"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "readonly": { "alias": "readonly"; "required": false; "isSignal": true; }; "invalid": { "alias": "invalid"; "required": false; "isSignal": true; }; "errors": { "alias": "errors"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "name": { "alias": "name"; "required": false; "isSignal": true; }; "minValue": { "alias": "minValue"; "required": false; "isSignal": true; }; "maxValue": { "alias": "maxValue"; "required": false; "isSignal": true; }; "step": { "alias": "step"; "required": false; "isSignal": true; }; "minDistance": { "alias": "minDistance"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "mixed": "mixedChange"; "touched": "touchedChange"; }, never, never, true, never>;
6074
6543
  }
6075
6544
 
6076
6545
  /** Opts the slider into value labels — rendered once per thumb with its current value. */
@@ -6129,6 +6598,10 @@ declare class SliderDirective implements FormValueControl<number>, FormFieldCont
6129
6598
  private formField;
6130
6599
  private destroyRef;
6131
6600
  value: _angular_core.ModelSignal<number>;
6601
+ /** View state for a field whose source values disagree. The raw form value stays untouched. */
6602
+ mixed: _angular_core.ModelSignal<boolean>;
6603
+ /** `aria-valuetext` the thumb announces while `mixed` is set. */
6604
+ mixedLabel: _angular_core.InputSignal<string>;
6132
6605
  touched: _angular_core.ModelSignal<boolean>;
6133
6606
  disabled: _angular_core.InputSignal<boolean>;
6134
6607
  readonly: _angular_core.InputSignal<boolean>;
@@ -6150,6 +6623,7 @@ declare class SliderDirective implements FormValueControl<number>, FormFieldCont
6150
6623
  draggingThumbIndex: _angular_core.WritableSignal<number | null>;
6151
6624
  thumbs: _angular_core.WritableSignal<readonly SliderThumbBase[]>;
6152
6625
  registeredThumbLabelTemplate: _angular_core.WritableSignal<SliderThumbLabelBase | null>;
6626
+ hasCustomAccessibleName: _angular_core.Signal<boolean>;
6153
6627
  focused: _angular_core.Signal<boolean>;
6154
6628
  private bounds;
6155
6629
  thumbValues: _angular_core.Signal<readonly number[]>;
@@ -6167,7 +6641,7 @@ declare class SliderDirective implements FormValueControl<number>, FormFieldCont
6167
6641
  /** @internal */
6168
6642
  unregisterThumb(thumb: SliderThumbBase): void;
6169
6643
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<SliderDirective, never>;
6170
- static ɵdir: _angular_core.ɵɵDirectiveDeclaration<SliderDirective, "[etSlider]", ["etSlider"], { "value": { "alias": "value"; "required": false; "isSignal": true; }; "touched": { "alias": "touched"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "readonly": { "alias": "readonly"; "required": false; "isSignal": true; }; "invalid": { "alias": "invalid"; "required": false; "isSignal": true; }; "errors": { "alias": "errors"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "name": { "alias": "name"; "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; }; }, { "value": "valueChange"; "touched": "touchedChange"; }, never, never, true, never>;
6644
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<SliderDirective, "[etSlider]", ["etSlider"], { "value": { "alias": "value"; "required": false; "isSignal": true; }; "mixed": { "alias": "mixed"; "required": false; "isSignal": true; }; "mixedLabel": { "alias": "mixedLabel"; "required": false; "isSignal": true; }; "touched": { "alias": "touched"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "readonly": { "alias": "readonly"; "required": false; "isSignal": true; }; "invalid": { "alias": "invalid"; "required": false; "isSignal": true; }; "errors": { "alias": "errors"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "name": { "alias": "name"; "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; }; }, { "value": "valueChange"; "mixed": "mixedChange"; "touched": "touchedChange"; }, never, never, true, never>;
6171
6645
  }
6172
6646
 
6173
6647
  declare class RangeSliderComponent {
@@ -6203,7 +6677,7 @@ declare class RangeSliderComponent {
6203
6677
  constructor();
6204
6678
  protected thumbLabelContext(index: number): SliderThumbLabelContext;
6205
6679
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<RangeSliderComponent, never>;
6206
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<RangeSliderComponent, "et-range-slider", never, { "startLabel": { "alias": "startLabel"; "required": false; "isSignal": true; }; "endLabel": { "alias": "endLabel"; "required": false; "isSignal": true; }; }, {}, never, ["*", "et-hint"], true, [{ directive: typeof FormFieldDirective; inputs: {}; outputs: {}; }, { directive: typeof RangeSliderDirective; inputs: { "value": "value"; "touched": "touched"; "disabled": "disabled"; "readonly": "readonly"; "invalid": "invalid"; "errors": "errors"; "required": "required"; "name": "name"; "minValue": "minValue"; "maxValue": "maxValue"; "step": "step"; "minDistance": "minDistance"; }; outputs: { "valueChange": "valueChange"; "touchedChange": "touchedChange"; }; }, { directive: typeof _ethlete_core.ProvideColorDirective; inputs: { "etProvideColor": "color"; }; outputs: {}; }]>;
6680
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<RangeSliderComponent, "et-range-slider", never, { "startLabel": { "alias": "startLabel"; "required": false; "isSignal": true; }; "endLabel": { "alias": "endLabel"; "required": false; "isSignal": true; }; }, {}, never, ["*", "et-hint"], true, [{ directive: typeof FormFieldDirective; inputs: {}; outputs: {}; }, { directive: typeof RangeSliderDirective; inputs: { "value": "value"; "mixed": "mixed"; "mixedLabel": "mixedLabel"; "touched": "touched"; "disabled": "disabled"; "readonly": "readonly"; "invalid": "invalid"; "errors": "errors"; "required": "required"; "name": "name"; "minValue": "minValue"; "maxValue": "maxValue"; "step": "step"; "minDistance": "minDistance"; }; outputs: { "valueChange": "valueChange"; "mixedChange": "mixedChange"; "touchedChange": "touchedChange"; }; }, { directive: typeof _ethlete_core.ProvideColorDirective; inputs: { "etProvideColor": "color"; }; outputs: {}; }]>;
6207
6681
  }
6208
6682
 
6209
6683
  declare const SLIDER_ERROR_CODES: {
@@ -6242,7 +6716,7 @@ declare class SliderComponent {
6242
6716
  constructor();
6243
6717
  protected thumbLabelContext(index: number): SliderThumbLabelContext;
6244
6718
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<SliderComponent, never>;
6245
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<SliderComponent, "et-slider", never, {}, {}, never, ["*", "et-hint"], true, [{ directive: typeof FormFieldDirective; inputs: {}; outputs: {}; }, { directive: typeof SliderDirective; inputs: { "value": "value"; "touched": "touched"; "disabled": "disabled"; "readonly": "readonly"; "invalid": "invalid"; "errors": "errors"; "required": "required"; "name": "name"; "min": "min"; "max": "max"; "step": "step"; }; outputs: { "valueChange": "valueChange"; "touchedChange": "touchedChange"; }; }, { directive: typeof _ethlete_core.ProvideColorDirective; inputs: { "etProvideColor": "color"; }; outputs: {}; }]>;
6719
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<SliderComponent, "et-slider", never, {}, {}, never, ["*", "et-hint"], true, [{ directive: typeof FormFieldDirective; inputs: {}; outputs: {}; }, { directive: typeof SliderDirective; inputs: { "value": "value"; "mixed": "mixed"; "mixedLabel": "mixedLabel"; "touched": "touched"; "disabled": "disabled"; "readonly": "readonly"; "invalid": "invalid"; "errors": "errors"; "required": "required"; "name": "name"; "min": "min"; "max": "max"; "step": "step"; }; outputs: { "valueChange": "valueChange"; "mixedChange": "mixedChange"; "touchedChange": "touchedChange"; }; }, { directive: typeof _ethlete_core.ProvideColorDirective; inputs: { "etProvideColor": "color"; }; outputs: {}; }]>;
6246
6720
  }
6247
6721
 
6248
6722
  declare const SLIDER_IMPORTS: readonly [typeof SliderComponent, typeof RangeSliderComponent, typeof SliderDirective, typeof RangeSliderDirective, typeof SliderThumbDirective, typeof SliderThumbLabelDirective, typeof SliderTrackDirective];
@@ -6252,6 +6726,12 @@ declare class SwitchDirective implements FormFieldControl {
6252
6726
  private destroyRef;
6253
6727
  private el;
6254
6728
  checked: _angular_core.ModelSignal<boolean>;
6729
+ /**
6730
+ * Bulk-edit state for a switch whose source records disagree (some on, some off), mirroring
6731
+ * checkbox's platform `indeterminate`. The committed `checked` value stays untouched while
6732
+ * indeterminate; the first user toggle resolves the flag and turns the switch on.
6733
+ */
6734
+ indeterminate: _angular_core.ModelSignal<boolean>;
6255
6735
  touched: _angular_core.ModelSignal<boolean>;
6256
6736
  disabled: _angular_core.InputSignal<boolean>;
6257
6737
  /** View-only: keeps the normal look and focusability but blocks toggling (unlike `disabled`). */
@@ -6268,7 +6748,7 @@ declare class SwitchDirective implements FormFieldControl {
6268
6748
  toggle(): void;
6269
6749
  activate(): void;
6270
6750
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<SwitchDirective, never>;
6271
- static ɵdir: _angular_core.ɵɵDirectiveDeclaration<SwitchDirective, "[etSwitch]", never, { "checked": { "alias": "checked"; "required": false; "isSignal": true; }; "touched": { "alias": "touched"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "readonly": { "alias": "readonly"; "required": false; "isSignal": true; }; "invalid": { "alias": "invalid"; "required": false; "isSignal": true; }; "errors": { "alias": "errors"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "name": { "alias": "name"; "required": false; "isSignal": true; }; }, { "checked": "checkedChange"; "touched": "touchedChange"; }, never, never, true, never>;
6751
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<SwitchDirective, "[etSwitch]", never, { "checked": { "alias": "checked"; "required": false; "isSignal": true; }; "indeterminate": { "alias": "indeterminate"; "required": false; "isSignal": true; }; "touched": { "alias": "touched"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "readonly": { "alias": "readonly"; "required": false; "isSignal": true; }; "invalid": { "alias": "invalid"; "required": false; "isSignal": true; }; "errors": { "alias": "errors"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "name": { "alias": "name"; "required": false; "isSignal": true; }; }, { "checked": "checkedChange"; "indeterminate": "indeterminateChange"; "touched": "touchedChange"; }, never, never, true, never>;
6272
6752
  }
6273
6753
 
6274
6754
  declare class SwitchComponent {
@@ -6276,7 +6756,7 @@ declare class SwitchComponent {
6276
6756
  state: _angular_core.Signal<boolean>;
6277
6757
  };
6278
6758
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<SwitchComponent, never>;
6279
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<SwitchComponent, "et-switch", never, {}, {}, never, never, true, [{ directive: typeof SwitchDirective; inputs: { "checked": "checked"; "disabled": "disabled"; "readonly": "readonly"; "invalid": "invalid"; "errors": "errors"; "required": "required"; "name": "name"; }; outputs: { "checkedChange": "checkedChange"; "touchedChange": "touchedChange"; }; }, { directive: typeof _ethlete_core.ColorInteractiveDirective; inputs: {}; outputs: {}; }]>;
6759
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<SwitchComponent, "et-switch", never, {}, {}, never, never, true, [{ directive: typeof SwitchDirective; inputs: { "checked": "checked"; "indeterminate": "indeterminate"; "disabled": "disabled"; "readonly": "readonly"; "invalid": "invalid"; "errors": "errors"; "required": "required"; "name": "name"; }; outputs: { "checkedChange": "checkedChange"; "indeterminateChange": "indeterminateChange"; "touchedChange": "touchedChange"; }; }, { directive: typeof _ethlete_core.ColorInteractiveDirective; inputs: {}; outputs: {}; }]>;
6280
6760
  }
6281
6761
 
6282
6762
  declare const SWITCH_IMPORTS: readonly [typeof SwitchComponent, typeof SwitchDirective];
@@ -6285,6 +6765,8 @@ declare class TagInputDirective implements FormValueControl<string[]>, FormField
6285
6765
  private formField;
6286
6766
  private destroyRef;
6287
6767
  value: _angular_core.ModelSignal<string[]>;
6768
+ /** View state for a field whose source values disagree. The raw form value stays untouched. */
6769
+ mixed: _angular_core.ModelSignal<boolean>;
6288
6770
  touched: _angular_core.ModelSignal<boolean>;
6289
6771
  disabled: _angular_core.InputSignal<boolean>;
6290
6772
  readonly: _angular_core.InputSignal<boolean>;
@@ -6293,6 +6775,8 @@ declare class TagInputDirective implements FormValueControl<string[]>, FormField
6293
6775
  required: _angular_core.InputSignal<boolean>;
6294
6776
  name: _angular_core.InputSignal<string>;
6295
6777
  placeholder: _angular_core.InputSignal<string>;
6778
+ /** Field placeholder shown while `mixed` is set. */
6779
+ mixedLabel: _angular_core.InputSignal<string>;
6296
6780
  /**
6297
6781
  * What commits the pending text as a tag: multi-character entries are key names
6298
6782
  * (`'Enter'`), single characters commit as soon as they are typed (and split pastes).
@@ -6303,7 +6787,11 @@ declare class TagInputDirective implements FormValueControl<string[]>, FormField
6303
6787
  normalizeTag: _angular_core.InputSignal<(raw: string) => string | null>;
6304
6788
  maxTags: _angular_core.InputSignal<number | undefined>;
6305
6789
  shouldDisplayError: _angular_core.Signal<boolean>;
6790
+ /** The raw value normalized to the tags the control currently shows. Mixed has no effective tags. */
6791
+ effectiveValues: _angular_core.Signal<readonly string[]>;
6306
6792
  hasValue: _angular_core.Signal<boolean>;
6793
+ /** The placeholder the text field currently shows — `mixedLabel` while mixed. */
6794
+ effectivePlaceholder: _angular_core.Signal<string>;
6307
6795
  describedBy: _angular_core.WritableSignal<string | null>;
6308
6796
  controlType: _angular_core.WritableSignal<"tag-input">;
6309
6797
  focused: _angular_core.WritableSignal<boolean>;
@@ -6311,7 +6799,7 @@ declare class TagInputDirective implements FormValueControl<string[]>, FormField
6311
6799
  /** @internal */
6312
6800
  registeredField: _angular_core.WritableSignal<TagInputFieldDirective | null>;
6313
6801
  interactive: _angular_core.Signal<boolean>;
6314
- /** True once `maxTags` is reached — further adds are ignored. */
6802
+ /** True once `maxTags` is reached — further adds are ignored. Mixed counts as no tags. */
6315
6803
  isFull: _angular_core.Signal<boolean>;
6316
6804
  /** @internal Single-character separators — they split pastes and commit while typing. */
6317
6805
  characterSeparators: _angular_core.Signal<string[]>;
@@ -6319,7 +6807,10 @@ declare class TagInputDirective implements FormValueControl<string[]>, FormField
6319
6807
  keySeparators: _angular_core.Signal<string[]>;
6320
6808
  constructor();
6321
6809
  activate(): void;
6322
- /** Normalizes and appends a tag. Returns whether it was added. */
6810
+ /**
6811
+ * Normalizes and appends a tag. Returns whether it was added. While mixed, the first
6812
+ * added tag REPLACES the hidden raw value (starting a fresh set) and resolves mixed.
6813
+ */
6323
6814
  add(raw: string): boolean;
6324
6815
  /** Adds several raw values at once (a paste split by separators). */
6325
6816
  addAll(raws: string[]): void;
@@ -6327,7 +6818,7 @@ declare class TagInputDirective implements FormValueControl<string[]>, FormField
6327
6818
  removeAt(index: number): void;
6328
6819
  removeLast(): void;
6329
6820
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<TagInputDirective, never>;
6330
- static ɵdir: _angular_core.ɵɵDirectiveDeclaration<TagInputDirective, "[etTagInput]", ["etTagInput"], { "value": { "alias": "value"; "required": false; "isSignal": true; }; "touched": { "alias": "touched"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "readonly": { "alias": "readonly"; "required": false; "isSignal": true; }; "invalid": { "alias": "invalid"; "required": false; "isSignal": true; }; "errors": { "alias": "errors"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "name": { "alias": "name"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "separators": { "alias": "separators"; "required": false; "isSignal": true; }; "allowDuplicates": { "alias": "allowDuplicates"; "required": false; "isSignal": true; }; "normalizeTag": { "alias": "normalizeTag"; "required": false; "isSignal": true; }; "maxTags": { "alias": "maxTags"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "touched": "touchedChange"; }, never, never, true, never>;
6821
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<TagInputDirective, "[etTagInput]", ["etTagInput"], { "value": { "alias": "value"; "required": false; "isSignal": true; }; "mixed": { "alias": "mixed"; "required": false; "isSignal": true; }; "touched": { "alias": "touched"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "readonly": { "alias": "readonly"; "required": false; "isSignal": true; }; "invalid": { "alias": "invalid"; "required": false; "isSignal": true; }; "errors": { "alias": "errors"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "name": { "alias": "name"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "mixedLabel": { "alias": "mixedLabel"; "required": false; "isSignal": true; }; "separators": { "alias": "separators"; "required": false; "isSignal": true; }; "allowDuplicates": { "alias": "allowDuplicates"; "required": false; "isSignal": true; }; "normalizeTag": { "alias": "normalizeTag"; "required": false; "isSignal": true; }; "maxTags": { "alias": "maxTags"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "mixed": "mixedChange"; "touched": "touchedChange"; }, never, never, true, never>;
6331
6822
  }
6332
6823
 
6333
6824
  /** The text field of a tag input — commits its text as a tag on separators and blur. */
@@ -6356,7 +6847,7 @@ declare const TAG_INPUT_ERROR_CODES: {
6356
6847
  declare class TagInputComponent {
6357
6848
  protected tagInput: TagInputDirective;
6358
6849
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<TagInputComponent, never>;
6359
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<TagInputComponent, "et-tag-input", never, {}, {}, never, never, true, [{ directive: typeof TagInputDirective; inputs: { "value": "value"; "touched": "touched"; "disabled": "disabled"; "readonly": "readonly"; "invalid": "invalid"; "errors": "errors"; "required": "required"; "name": "name"; "placeholder": "placeholder"; "separators": "separators"; "allowDuplicates": "allowDuplicates"; "normalizeTag": "normalizeTag"; "maxTags": "maxTags"; }; outputs: { "valueChange": "valueChange"; "touchedChange": "touchedChange"; }; }, { directive: typeof _ethlete_core.ColorInteractiveDirective; inputs: {}; outputs: {}; }]>;
6850
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<TagInputComponent, "et-tag-input", never, {}, {}, never, never, true, [{ directive: typeof TagInputDirective; inputs: { "value": "value"; "mixed": "mixed"; "touched": "touched"; "disabled": "disabled"; "readonly": "readonly"; "invalid": "invalid"; "errors": "errors"; "required": "required"; "name": "name"; "placeholder": "placeholder"; "mixedLabel": "mixedLabel"; "separators": "separators"; "allowDuplicates": "allowDuplicates"; "normalizeTag": "normalizeTag"; "maxTags": "maxTags"; }; outputs: { "valueChange": "valueChange"; "mixedChange": "mixedChange"; "touchedChange": "touchedChange"; }; }, { directive: typeof _ethlete_core.ColorInteractiveDirective; inputs: {}; outputs: {}; }]>;
6360
6851
  }
6361
6852
 
6362
6853
  declare const TAG_INPUT_IMPORTS: readonly [typeof TagInputComponent, typeof TagInputDirective, typeof TagInputFieldDirective];
@@ -6379,6 +6870,10 @@ declare class TextareaDirective extends TextFieldControlDirective implements For
6379
6870
  resize: _angular_core.InputSignal<TextareaResizeMode>;
6380
6871
  hasValue: _angular_core.Signal<boolean>;
6381
6872
  controlType: _angular_core.WritableSignal<"textarea">;
6873
+ /** The text the native textarea renders — empty while mixed so the raw value never reaches the DOM. */
6874
+ displayValue: _angular_core.Signal<string>;
6875
+ /** The placeholder the native textarea renders — `mixedLabel` overrides the consumer placeholder while mixed. */
6876
+ effectivePlaceholder: _angular_core.Signal<string>;
6382
6877
  effectiveResize: _angular_core.Signal<TextareaResizeMode>;
6383
6878
  /**
6384
6879
  * The native textarea element this directive controls. Set automatically when
@@ -6388,6 +6883,12 @@ declare class TextareaDirective extends TextFieldControlDirective implements For
6388
6883
  nativeControl: _angular_core.WritableSignal<HTMLTextAreaElement | null>;
6389
6884
  private nativeControlDimensions;
6390
6885
  constructor();
6886
+ /**
6887
+ * @internal Routes a user edit from the native textarea into the model. Typing is the commit
6888
+ * over a mixed state: the first edit that produces content replaces the raw value and
6889
+ * resolves `mixed`; an edit that leaves the textarea empty keeps both untouched.
6890
+ */
6891
+ syncFromNativeInput(textareaElement: HTMLTextAreaElement): void;
6391
6892
  private resizeToFit;
6392
6893
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<TextareaDirective, never>;
6393
6894
  static ɵdir: _angular_core.ɵɵDirectiveDeclaration<TextareaDirective, "[etTextarea]", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "autocomplete": { "alias": "autocomplete"; "required": false; "isSignal": true; }; "rows": { "alias": "rows"; "required": false; "isSignal": true; }; "autosize": { "alias": "autosize"; "required": false; "isSignal": true; }; "minRows": { "alias": "minRows"; "required": false; "isSignal": true; }; "maxRows": { "alias": "maxRows"; "required": false; "isSignal": true; }; "resize": { "alias": "resize"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; }, never, never, true, never>;
@@ -6399,7 +6900,7 @@ declare class TextareaComponent {
6399
6900
  constructor();
6400
6901
  syncNativeValue(event: Event): void;
6401
6902
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<TextareaComponent, never>;
6402
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<TextareaComponent, "et-textarea", never, {}, {}, never, never, true, [{ directive: typeof TextareaDirective; inputs: { "placeholder": "placeholder"; "autocomplete": "autocomplete"; "rows": "rows"; "autosize": "autosize"; "minRows": "minRows"; "maxRows": "maxRows"; "resize": "resize"; "value": "value"; "disabled": "disabled"; "readonly": "readonly"; "hidden": "hidden"; "invalid": "invalid"; "errors": "errors"; "required": "required"; "name": "name"; }; outputs: { "valueChange": "valueChange"; "touchedChange": "touchedChange"; }; }, { directive: typeof _ethlete_core.ColorInteractiveDirective; inputs: {}; outputs: {}; }]>;
6903
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<TextareaComponent, "et-textarea", never, {}, {}, never, never, true, [{ directive: typeof TextareaDirective; inputs: { "placeholder": "placeholder"; "autocomplete": "autocomplete"; "rows": "rows"; "autosize": "autosize"; "minRows": "minRows"; "maxRows": "maxRows"; "resize": "resize"; "value": "value"; "mixed": "mixed"; "mixedLabel": "mixedLabel"; "disabled": "disabled"; "readonly": "readonly"; "hidden": "hidden"; "invalid": "invalid"; "errors": "errors"; "required": "required"; "name": "name"; "aria-label": "aria-label"; "aria-labelledby": "aria-labelledby"; }; outputs: { "valueChange": "valueChange"; "mixedChange": "mixedChange"; "touchedChange": "touchedChange"; }; }, { directive: typeof _ethlete_core.ColorInteractiveDirective; inputs: {}; outputs: {}; }]>;
6403
6904
  }
6404
6905
 
6405
6906
  declare const TEXTAREA_IMPORTS: readonly [typeof TextareaComponent, typeof TextareaDirective];
@@ -7493,6 +7994,23 @@ declare class NotificationComponent {
7493
7994
  declare const NOTIFICATION_IMPORTS: readonly [typeof NotificationComponent, typeof NotificationDirective, typeof NotificationActionDirective, typeof NotificationDismissDirective];
7494
7995
 
7495
7996
  declare const getClosestOverlay: (element: ElementRef<HTMLElement>, openOverlays: OverlayRef<object, unknown>[]) => OverlayRef<object, unknown> | null;
7997
+ type OverlayTreeContainmentOptions = {
7998
+ /** The pointerdown/click target to test. */
7999
+ target: Node;
8000
+ /** The panel whose tree defines "inside" — typically the anchored panel's own pane. */
8001
+ rootPane: HTMLElement;
8002
+ /** All currently open overlays (from the overlay manager). */
8003
+ openOverlays: OverlayRef<object, unknown>[];
8004
+ };
8005
+ /**
8006
+ * True when `target` is inside `rootPane` or inside any open overlay transitively anchored from
8007
+ * within it. A nested popover (a select body, menu, tooltip, …) opened from inside a panel mounts
8008
+ * as a sibling pane in the overlay root — not a DOM descendant — so a plain `pane.contains(target)`
8009
+ * misses it. An anchored panel uses this so a pointerdown in a child popover it opened does not read
8010
+ * as an outside-close. Nesting is resolved by each overlay's `origin` (its anchor/trigger element)
8011
+ * living inside an ancestor pane, so popovers nested several levels deep are covered.
8012
+ */
8013
+ declare const isTargetInsideOverlayTree: ({ target, rootPane, openOverlays }: OverlayTreeContainmentOptions) => boolean;
7496
8014
  type ResolveClosestOverlayOptions = {
7497
8015
  overlayRef: OverlayRef<object, unknown> | null;
7498
8016
  element: ElementRef<HTMLElement>;
@@ -7565,6 +8083,8 @@ declare class OverlayContainerComponent {
7565
8083
  componentInstance: () => object | null;
7566
8084
  close: (result?: unknown) => void;
7567
8085
  closeVia: (source: _ethlete_core.OverlayRuntimeCloseSource, result?: unknown) => void;
8086
+ registerCloseGuard: (guard: _ethlete_components.OverlayCloseGuard<unknown>) => () => void;
8087
+ forceClose: (source?: _ethlete_core.OverlayRuntimeCloseSource, result?: unknown) => void;
7568
8088
  updatePositionStrategy: (strategy: _ethlete_core.OverlayRuntimePositionStrategy) => void;
7569
8089
  attachComponentInstanceOverride: (getter: () => object | null) => void;
7570
8090
  afterOpened: () => rxjs.Observable<void>;
@@ -7785,6 +8305,45 @@ type CreateOverlayOpenerFn = {
7785
8305
  */
7786
8306
  declare const createOverlayOpener: CreateOverlayOpenerFn;
7787
8307
 
8308
+ /**
8309
+ * Which close sources the guard should intercept. All default to `true`.
8310
+ * Maps to the runtime's close sources: `outsidePointer` → `outside-pointer`, `escape` → `escape`,
8311
+ * `closeCall` → `api` (programmatic `overlayRef.close()`), `drag` → drag-to-dismiss.
8312
+ */
8313
+ type OverlayUnsavedChangesDismissSources = {
8314
+ outsidePointer?: boolean;
8315
+ escape?: boolean;
8316
+ closeCall?: boolean;
8317
+ drag?: boolean;
8318
+ };
8319
+ type CreateOverlayUnsavedChangesGuardConfig<T> = CreateUnsavedChangesTrackerConfig<T> & {
8320
+ /** The close sources to guard. All enabled by default. */
8321
+ dismissSources?: OverlayUnsavedChangesDismissSources;
8322
+ };
8323
+ type OverlayUnsavedChangesGuardRef<T> = UnsavedChangesTrackerRef<T> & {
8324
+ /** Stop guarding closes and release the guard. Also runs automatically on injector destroy. */
8325
+ destroy: () => void;
8326
+ };
8327
+ /**
8328
+ * The overlay flavor of the unsaved-changes family. Injects the current `OVERLAY_REF` and vetoes a
8329
+ * dismissal (outside pointer, escape, drag, or a programmatic `close()`) while the watched form has
8330
+ * unsaved changes: it runs the `confirm` and only then re-issues the close. Call from an overlay
8331
+ * content component's injection context.
8332
+ *
8333
+ * ```ts
8334
+ * guard = createOverlayUnsavedChangesGuard({
8335
+ * source: this.form, // a signal-forms FieldTree
8336
+ * confirm: () => this.overlays
8337
+ * .open(ConfirmDiscardComponent)
8338
+ * .afterClosed(), // truthy result = discard
8339
+ * });
8340
+ * ```
8341
+ *
8342
+ * After a save that keeps the overlay open, call `guard.refreshDefaultValue()` to re-baseline so the
8343
+ * saved state no longer counts as unsaved changes.
8344
+ */
8345
+ declare const createOverlayUnsavedChangesGuard: <T>(config: CreateOverlayUnsavedChangesGuardConfig<T>) => OverlayUnsavedChangesGuardRef<T>;
8346
+
7788
8347
  /**
7789
8348
  * Blocks body scrolling while a modal overlay is open.
7790
8349
  * Register once via `provideOverlay()` (or call `injectOverlayScrollBlocker()` in an environment initializer).
@@ -7853,6 +8412,8 @@ declare class OverlayRouteHeaderTemplateOutletComponent {
7853
8412
  componentInstance: () => object | null;
7854
8413
  close: (result?: unknown) => void;
7855
8414
  closeVia: (source: _ethlete_core.OverlayRuntimeCloseSource, result?: unknown) => void;
8415
+ registerCloseGuard: (guard: _ethlete_components.OverlayCloseGuard<unknown>) => () => void;
8416
+ forceClose: (source?: _ethlete_core.OverlayRuntimeCloseSource, result?: unknown) => void;
7856
8417
  updatePositionStrategy: (strategy: _ethlete_core.OverlayRuntimePositionStrategy) => void;
7857
8418
  attachComponentInstanceOverride: (getter: () => object | null) => void;
7858
8419
  afterOpened: () => rxjs.Observable<void>;
@@ -10665,5 +11226,5 @@ declare const TOOLTIP_ERROR_CODES: {
10665
11226
 
10666
11227
  declare const TOOLTIP_IMPORTS: readonly [typeof TooltipDirective, typeof TooltipComponent];
10667
11228
 
10668
- export { ALIGN_CENTER_ICON, ALIGN_JUSTIFY_ICON, ALIGN_LEFT_ICON, ALIGN_RIGHT_ICON, ARROW_OUT_UP_RIGHT_ICON, ARROW_RIGHT_ICON, BOLD_ICON, BUTTON_ICON_ALIGNMENTS, BUTTON_IMPORTS, BUTTON_SIZES, BUTTON_SPINNER_CONFIG, BUTTON_TYPES, BUTTON_VARIANTS, BrandLoaderComponent, ButtonComponent, ButtonDirective, ButtonStylesDirective, CALENDAR_ERROR_CODES, CALENDAR_ICON, CALENDAR_IMPORTS, CASCADER_ERROR_CODES, CASCADER_IMPORTS, CASCADER_SELECTABLE_LEVELS, CHECKBOX_IMPORTS, CHECK_ICON, CHEVRON_ICON, CHIP_ERROR_CODES, CHIP_IMPORTS, CHOICE_FIELD_IMPORTS, CLIPBOARD_CHECK_ICON, CLOCK_ICON, CODE_ICON, COLOR_INPUT_IMPORTS, CalendarCellDirective, CalendarComponent, CalendarDirective, CalendarGridDirective, CascaderColumnDirective, CascaderComponent, CascaderDirective, CascaderNodeDirective, CascaderPanelComponent, CascaderSearchDirective, CascaderSearchOptionDirective, CascaderSurfaceDirective, CascaderTriggerDirective, CheckboxComponent, CheckboxDirective, CheckboxGroupComponent, CheckboxOptionComponent, ChipComponent, ChipDirective, ChipRemoveDirective, ChoiceFieldComponent, ColorInputComponent, ColorInputDirective, DAILYMOTION_PLAYER_TOKEN, DATE_FORMAT, DATE_INPUT_ERROR_CODES, DATE_INPUT_IMPORTS, DATE_LOCALE, DATE_PICKER_HOST, DATE_RANGE_INPUT_ERROR_CODES, DATE_RANGE_INPUT_IMPORTS, DATE_TIME_INPUT_ERROR_CODES, DATE_TIME_INPUT_IMPORTS, DEFAULT_BREAKPOINTS, DEFAULT_ICON_VARIANT, DEFAULT_NOTIFICATION_MANAGER_CONFIG, DEFAULT_PIP_WINDOW_CONFIG, DEFAULT_RICH_TEXT_EDITOR_TOOLS, DEFAULT_STREAM_PLAYER_STATE, DROPZONE_ENTRY_STATUSES, DROPZONE_ERROR_CODES, DROPZONE_FILES_ERROR_KIND, DROPZONE_FILE_CONSTRAINTS, DROPZONE_FILE_REJECTION_REASONS, DROPZONE_IMPORTS, DURATION_INPUT_ERROR_CODES, DURATION_INPUT_IMPORTS, DailymotionPlayerComponent, DailymotionPlayerDirective, DailymotionPlayerParamsDirective, DailymotionPlayerSlotComponent, DateInputComponent, DateInputDirective, DateInputFieldDirective, DatePickerPanelComponent, DatePickerSurfaceDirective, DatePickerTriggerDirective, DateRangeInputComponent, DateRangeInputDirective, DateRangeInputFieldDirective, DateTimeInputComponent, DateTimeInputDirective, DateTimeInputFieldDirective, DescriptionComponent, DropzoneComponent, DropzoneDirective, DurationInputComponent, DurationInputDirective, DurationInputFieldDirective, ET_BUILT_IN_ICON_NAMES, EYE_ICON, EYE_SLASH_ICON, FACEBOOK_PLAYER_TOKEN, FILE_ICON, FLOPPY_DISK_ICON, FOCUS_FRAME_ICON, FORM_ERROR_MESSAGE_RESOLVER, FORM_FIELD_APPEARANCES, FORM_FIELD_CONTROL_TYPES, FORM_FIELD_ERROR_CODES, FORM_FIELD_FILLS, FORM_FIELD_IMPORTS, FORM_FIELD_LABEL_MODES, FORM_FIELD_SIZES, FORM_FIELD_TOKEN, FabComponent, FacebookPlayerComponent, FacebookPlayerDirective, FacebookPlayerParamsDirective, FacebookPlayerSlotComponent, FocusRingDirective, FormErrorComponent, FormFieldComponent, FormFieldDirective, GRID_2X2_ICON, GRID_ERROR_CODES, GRID_TOKEN, GridComponent, GridDebugComponent, GridDirective, GridDragDirective, GridImports, GridItemComponent, GridItemDefaultActionsComponent, GridItemDirective, GridItemRef, GridItemToolbarComponent, GridResizeDirective, HEADING_1_ICON, HEADING_2_ICON, HEADING_3_ICON, HintComponent, ICONS_TOKEN, ICON_DIRECTIVE_TOKEN, ICON_ERROR_CODES, ICON_IMPORTS, ICON_OVERRIDES_TOKEN, INITIAL_SUPPORT_PRESENTATION_STATE, INPUT_IMPORTS, INPUT_MASK_HOST, INPUT_TEXT_ALIGNMENTS, INPUT_TYPES, INTERACTIVE_TAGS, ITALIC_ICON, IconButtonComponent, IconDirective, InputComponent, InputDirective, InputMaskDirective, InputPrefixDirective, InputSuffixDirective, KICK_PLAYER_TOKEN, KickPlayerComponent, KickPlayerDirective, KickPlayerParamsDirective, KickPlayerSlotComponent, LINK_ICON, LIST_BULLETED_ICON, LIST_NUMBERED_ICON, LOCK_ICON, LabelDirective, MASKED_INPUT_ERROR_CODES, MASKED_INPUT_IMPORTS, MASK_VALUE_MODES, MENU_ERROR_CODES, MENU_IMPORTS, MENU_ITEM_VARIANTS, MENU_SELECTION_GROUP_MULTIPLE, MENU_SELECTION_GROUP_TOKEN, MENU_SELECTION_ITEM_KIND, MINUS_ICON, MULTI_LANGUAGE_RICH_TEXT_EDITOR_ERROR_CODES, MULTI_LANGUAGE_RICH_TEXT_EDITOR_IMPORTS, MenuCheckboxGroupComponent, MenuCheckboxItemComponent, MenuComponent, MenuContextTriggerDirective, MenuDirective, MenuGroupLabelComponent, MenuItemComponent, MenuItemDirective, MenuItemShortcutComponent, MenuPanelDirective, MenuRadioGroupComponent, MenuRadioItemComponent, MenuSearchDirective, MenuSelectionGroupDirective, MenuSelectionItemDirective, MenuSeparatorComponent, MenuSurfaceDirective, MenuTriggerDirective, MultiLanguageRichTextEditorComponent, MultiLanguageRichTextEditorDirective, MultiLanguageRichTextEditorLanguageToolComponent, NAV_TABS_TOKEN, NOTIFICATION_ERROR_CODES, NOTIFICATION_IMPORTS, NOTIFICATION_STACK_CONTEXT_TOKEN, NOTIFICATION_STATUS, NUMBER_INPUT_IMPORTS, NavTabImports, NavTabLinkComponent, NavTabLinkDirective, NavTabsComponent, NavTabsDirective, NavTabsOutletComponent, NavTabsOutletDirective, NotificationActionDirective, NotificationComponent, NotificationDirective, NotificationDismissDirective, NotificationItemDirective, NotificationStackDirective, NumberInputComponent, NumberInputDirective, OTP_INPUT_IMPORTS, OVERLAY_BACK_OR_CLOSE_TOKEN, OVERLAY_BODY_TOKEN, OVERLAY_CONFIG_CLASS_KEYS, OVERLAY_CONTENT_IMPORTS, OVERLAY_ERROR_CODES, OVERLAY_FOOTER_TOKEN, OVERLAY_HEADER_TEMPLATE_TOKEN, OVERLAY_HEADER_TOKEN, OVERLAY_IMPORTS, OVERLAY_MAIN_TOKEN, OVERLAY_QUERY_PARAM_INPUT_NAME, OVERLAY_REF, OVERLAY_ROUTER_CONFIG_TOKEN, OVERLAY_ROUTER_LINK_TOKEN, OVERLAY_ROUTER_OUTLET_DISABLED_TEMPLATE_TOKEN, OVERLAY_ROUTER_OUTLET_TOKEN, OVERLAY_ROUTER_TOKEN, OVERLAY_SHARED_ROUTE_TEMPLATE_TOKEN, OtpInputComponent, OtpInputDirective, OverlayAnchorDirective, OverlayBackOrCloseDirective, OverlayBodyComponent, OverlayCloseDirective, OverlayContainerComponent, OverlayDirective, OverlayFooterDirective, OverlayHeaderDirective, OverlayHeaderTemplateDirective, OverlayMainDirective, OverlayOriginCloneComponent, OverlayRouteHeaderTemplateOutletComponent, OverlayRouterLinkDirective, OverlayRouterOutletComponent, OverlayRouterOutletDisabledTemplateDirective, OverlaySharedRouteTemplateDirective, OverlaySharedRouteTemplateOutletComponent, OverlaySidebarComponent, OverlaySidebarPageComponent, OverlaySurfaceDirective, OverlayTitleDirective, OverlayTriggerDirective, PARAGRAPH_ICON, PASSWORD_INPUT_IMPORTS, PENCIL_ICON, PHONE_COUNTRIES, PHONE_INPUT_ERROR_CODES, PHONE_INPUT_IMPORTS, PIP_CHROME_REF_TOKEN, PIP_ENTRY_TOKEN, PIP_WINDOW_ASPECT_RATIO_TOKEN, PLUS_ICON, PasswordInputComponent, PasswordInputDirective, PhoneInputComponent, PhoneInputDirective, PhoneInputFieldDirective, PhoneInputFlagDirective, PipBackDirective, PipBringBackDirective, PipCellDirective, PipCloseDirective, PipCollapseOverlayDirective, PipGridToggleDirective, PipPlayerComponent, PipSlotPlaceholderComponent, PipStageDirective, PipTitleBarDirective, PipTitleBarTemplateDirective, PipWindowComponent, PipWindowParamsDirective, ProgressBarComponent, QueryParamOverlayLinkDirective, RATING_IMPORTS, RICH_TEXT_EDITOR_HEADING_OPTIONS, RICH_TEXT_EDITOR_IMPORTS, RICH_TEXT_EDITOR_INLINE_TOOLS, RICH_TEXT_EDITOR_LANGUAGE_TOOL, RICH_TEXT_EDITOR_TOKEN_CODEC, RICH_TEXT_EDITOR_TOOL, RICH_TEXT_EDITOR_TOOLS, RICH_TEXT_EDITOR_TOOL_BUTTONS, RICH_TEXT_EDITOR_TRIGGERS_IMPORTS, ROTATE_RIGHT_ICON, RadioComponent, RadioGroupComponent, RangeSliderComponent, RangeSliderDirective, RatingComponent, RatingDirective, RatingIconDirective, RichTextEditorAlignToolComponent, RichTextEditorComponent, RichTextEditorDirective, RichTextEditorFloatingToolbarComponent, RichTextEditorFloatingToolbarDirective, RichTextEditorLinkEditorComponent, RichTextEditorLinkEditorDirective, RichTextEditorTableToolComponent, RichTextEditorTokenPopupComponent, RichTextEditorTriggersDirective, SCROLLABLE_ERROR_CODES, SCROLLABLE_IMPORTS, SELECTION_LIST_MULTIPLE, SELECTION_LIST_TOKEN, SELECT_ERROR_CODES, SELECT_FILTER_MODES, SELECT_IMPORTS, SIDEBAR_OVERLAY_CONFIG, SIDEBAR_OVERLAY_TOKEN, SLIDER_ERROR_CODES, SLIDER_IMPORTS, SLIDER_TOKEN, SNAP_HYSTERESIS, SOOP_PLAYER_TOKEN, SPLIT_BUTTON_ERROR_CODES, STAR_ICON, STREAM_CONSENT_TOKEN, STREAM_PLAYER_COMPONENT_TOKEN, STREAM_PLAYER_ERROR_CONTEXT_TOKEN, STREAM_PLAYER_ERROR_TOKEN, STREAM_PLAYER_PARAMS_TOKEN, STREAM_PLAYER_SLOT_TOKEN, STREAM_PLAYER_TOKEN, STREAM_SLOT_PLAYER_ID_TOKEN, STREAM_USER_CONSENT_PROVIDER_TOKEN, STRIKETHROUGH_ICON, SUPPORT_CONTENT_STATE, SUPPORT_TRANSITION_DIRECTION, SWITCH_IMPORTS, ScrollableActiveChildDirective, ScrollableButtonsDirective, ScrollableComponent, ScrollableDarkenDirective, ScrollableDirective, ScrollableDragDirective, ScrollableIgnoreChildDirective, ScrollableLoadingTemplateDirective, ScrollableMasksDirective, ScrollableNavigationDirective, ScrollableSnapDirective, SegmentedButtonComponent, SegmentedButtonGroupComponent, SelectComponent, SelectDirective, SelectEmptyDirective, SelectErrorDirective, SelectListboxDirective, SelectLoadingDirective, SelectOptionComponent, SelectOptionDirective, SelectOptionGroupComponent, SelectOptionGroupDirective, SelectOptionTemplateDirective, SelectPanelComponent, SelectSearchDirective, SelectSurfaceDirective, SelectTriggerDirective, SelectValueDirective, SelectViewportDirective, SelectVirtualOptionComponent, SelectVirtualOptionDirective, SelectionListControlDirective, SelectionListDirective, SelectionOptionDirective, SliderComponent, SliderDirective, SliderThumbDirective, SliderThumbLabelDirective, SliderTrackDirective, SoopPlayerComponent, SoopPlayerDirective, SoopPlayerParamsDirective, SoopPlayerSlotComponent, SpinnerComponent, SplitButtonActionDirective, SplitButtonComponent, SplitButtonDirective, SplitButtonTriggerDirective, StreamConsentAcceptDirective, StreamConsentComponent, StreamConsentDirective, StreamImports, StreamPipChromeComponent, StreamPlayerErrorComponent, StreamPlayerErrorDirective, StreamPlayerLoadingComponent, StreamPlayerSlotDirective, SwitchComponent, SwitchDirective, TABLE_ICON, TAB_BAR_FITS, TAB_BAR_ORIENTATIONS, TAB_BAR_TOKEN, TAB_BAR_TRIGGER_TOKEN, TAB_BAR_VARIANTS, TAB_ERROR_CODES, TAB_GROUP_TOKEN, TAB_PANEL_TOKEN, TAB_SIZES, TAG_INPUT_ERROR_CODES, TAG_INPUT_IMPORTS, TEXTAREA_IMPORTS, TEXTAREA_RESIZE_MODES, TEXT_ALIGNS, TIKTOK_PLAYER_TOKEN, TIMES_ICON, TIME_FORMAT, TIME_INPUT_ERROR_CODES, TIME_INPUT_IMPORTS, TIME_PICKER_ERROR_CODES, TIME_PICKER_IMPORTS, TOGGLETIP_ERROR_CODES, TOGGLETIP_IMPORTS, TOOLTIP_ERROR_CODES, TOOLTIP_IMPORTS, TRIANGLE_EXCLAMATION_ICON, TWITCH_PLAYER_TOKEN, TabBarDirective, TabBarTriggerDirective, TabBarUnderlineDirective, TabComponent, TabGroupComponent, TabGroupDirective, TabImports, TabLabelDirective, TabPanelDirective, TabTriggerDirective, TagInputComponent, TagInputDirective, TagInputFieldDirective, TextButtonComponent, TextFieldControlDirective, TextareaComponent, TextareaDirective, TikTokPlayerComponent, TikTokPlayerDirective, TikTokPlayerParamsDirective, TikTokPlayerSlotComponent, TimeInputComponent, TimeInputDirective, TimeInputFieldDirective, TimePickerColumnDirective, TimePickerComponent, TimePickerDirective, TimePickerOptionDirective, ToggletipCloseDirective, ToggletipComponent, ToggletipDirective, ToggletipTriggerDirective, TooltipComponent, TooltipDirective, TwitchPlayerComponent, TwitchPlayerDirective, TwitchPlayerParamsDirective, TwitchPlayerSlotComponent, UNDERLINE_ICON, UNIT_MS, UPLOAD_ICON, VIMEO_PLAYER_TOKEN, VimeoPlayerComponent, VimeoPlayerDirective, VimeoPlayerParamsDirective, VimeoPlayerSlotComponent, WINDOW_CONTROL_BUTTON_KINDS, WINDOW_CONTROL_BUTTON_SIZES, WindowControlButtonComponent, YOUTUBE_PLAYER_SLOT_TOKEN, YOUTUBE_PLAYER_TOKEN, YoutubePlayerComponent, YoutubePlayerDirective, YoutubePlayerParamsDirective, YoutubePlayerSlotComponent, YoutubePlayerSlotDirective, abortFullscreenAnimation, anchoredDialogOverlayStrategy, anchoredOverlayStrategy, autoPlace, bottomSheetOverlayStrategy, buildAnchoredRuntimePositionStrategy, canHaveChildren, cascaderFromQuery, centeredOverlayStrategy, clampPosition, clampResizeRect, cleanupFullscreenAnimation, cleanupFullscreenAnimationStyles, compactLayout, computeGeometry, computeGridHeight, createAnchoredPanelController, createAutoScroller, createCardMask, createCurrencyMask, createDefaultDropzoneArgs, createDropzoneUpload, createExistingDropzoneEntry, createFileDropzoneEntry, createGridAdapter, createIbanMask, createNotificationRef, createOverlayOpener, createOverlayRef, createOverlayStrategyController, createPipChromeAnimations, createPipChromeState, createRichTextEditorTrigger, createRichTextEditorTriggerWithQuery, createStreamConfig, createStreamPlayerSlot, defaultCompareWith, defaultDropzoneRejectionMessage, defineOverlay, defineQueryParamOverlay, deriveDurationFormatSpec, deserializeGridLayout, dialogOverlayStrategy, disposeDropzoneEntry, dropzoneFiles, enableDragToDismiss, findCollision, findNextRelevantHtmlElement, findScrollableAncestor, formatDuration, formatFileSize, fromGridPosition, fullScreenDialogOverlayStrategy, getClosestOverlay, getOriginCoordinatesAndDimensions, hysteresisRound, iconRegistryKey, indexOfNode, injectAnchoredDialogStrategy, injectAnchoredDialogStrategyDefaults, injectBottomSheetStrategy, injectBottomSheetStrategyDefaults, injectDateFormat, injectDateLocale, injectDialogStrategy, injectDialogStrategyDefaults, injectFormSupport, injectFullscreenDialogStrategy, injectFullscreenDialogStrategyDefaults, injectGridConfig, injectLeftSheetStrategy, injectLeftSheetStrategyDefaults, injectNotificationManager, injectNotificationManagerConfig, injectOverlayManager, injectOverlayRouter, injectOverlayScrollBlocker, injectOverlaySurfaceContext, injectPipChromeManager, injectPipManager, injectPipSlotPlaceholderConfig, injectRichTextEditorTools, injectRightSheetStrategy, injectRightSheetStrategyDefaults, injectSidebarOverlay, injectStreamConfig, injectStreamConsentConfig, injectStreamManager, injectStreamPlayerErrorConfig, injectStreamPlayerLoadingConfig, injectStreamScriptLoader, injectStreamUserConsentProvider, injectTimeFormat, injectTopSheetStrategy, injectTopSheetStrategyDefaults, isFileAccepted, isHtmlElement, isInteractiveElement, isPointerEvent, isTouchEvent, itemsCollide, leftSheetOverlayStrategy, mapLayoutToBreakpoint, matchCountryByDialCode, mergeOverlayBreakpointConfigs, mergeOverlayConfigs, nodesEqual, parseDuration, phoneCountryFlag, phoneCountryName, pixelRectsEqual, positionToPixelRect, positionsEqual, projectDragCell, provideAnchoredDialogStrategy, provideAnchoredDialogStrategyDefaults, provideBottomSheetStrategy, provideBottomSheetStrategyDefaults, provideDateFormat, provideDateLocale, provideDialogStrategy, provideDialogStrategyDefaults, provideFormErrorMessageResolver, provideFormSupport, provideFullscreenDialogStrategy, provideFullscreenDialogStrategyDefaults, provideGridConfig, provideIconOverrides, provideIcons, provideLeftSheetStrategy, provideLeftSheetStrategyDefaults, provideNotificationManager, provideNotificationManagerConfig, provideNotificationManagerInstance, provideOverlay, provideOverlayManager, provideOverlayRouter, provideOverlayRouterConfig, provideOverlayRouterService, provideOverlayScrollBlocker, providePipChromeManager, providePipManager, providePipSlotPlaceholderConfig, provideRichTextEditorAlignmentTool, provideRichTextEditorLanguageTool, provideRichTextEditorTableTool, provideRichTextEditorTokenRendering, provideRichTextEditorTools, provideRightSheetStrategy, provideRightSheetStrategyDefaults, provideSidebarOverlay, provideSidebarOverlayConfig, provideSidebarOverlayService, provideStreamConfig, provideStreamConsentConfig, provideStreamManager, provideStreamPlayerErrorConfig, provideStreamPlayerLoadingConfig, provideTimeFormat, provideTopSheetStrategy, provideTopSheetStrategyDefaults, reduceSupportPresentation, registerSingleton, requiredLanguages, resizeSpanBounds, resolveBreakpoint, resolveClosestOverlay, resolveCollisions, rightSheetOverlayStrategy, rowsToPixelHeight, selectOptionsFromQuery, selectOptionsFromV2Query, serializeGridLayout, snapResizeSpan, spanHeight, spanWidth, startFullscreenEnterAnimation, startFullscreenLeaveAnimation, stripTrunkZero, supportPresentationIncludesState, toChildrenObservable, toGridPosition, toPathObservable, toSearchObservable, topSheetOverlayStrategy, transformingBottomSheetToDialogOverlayStrategy, transformingFullScreenDialogToDialogOverlayStrategy, transformingFullScreenDialogToRightSheetOverlayStrategy, wireFormSupport };
10669
- export type { AnchoredDialogOverlayStrategyOptions, AnchoredOverlayStrategyOptions, AnchoredPanelCloseInfo, AnchoredPanelOverlayRef, AnchoredPanelSurfaceLike, AnchoredPositionOptions, AnyDropzoneUploadConfig, AutoPlaceOptions, AutoScrollPointer, AutoScroller, ButtonIconAlignment, ButtonSize, CalendarCell, CalendarMode, CalendarRange, CalendarWeekday, CascaderColumnState, CascaderCompareWith, CascaderDataSource, CascaderFromQueryConfig, CascaderFromQuerySearchConfig, CascaderNode, CascaderNodeSignal, CascaderSearchState, CascaderSelectableLevels, CascaderSurfaceContext, CenteredOverlayStrategyOptions, ClampPositionOptions, CompactLayoutOptions, CreateAnchoredPanelControllerOptions, CreateExistingDropzoneEntryOptions, CreateFileDropzoneEntryOptions, CurrencyMaskOptions, DatePickerHost, DatePickerSurfaceBase, DatePickerSurfaceContext, DatePickerTriggerBase, DateRangeSide, DateRangeValue, DragToDismissContext, DragToDismissRef, DropzoneEntry, DropzoneEntrySource, DropzoneEntryStatus, DropzoneExistingFileInfo, DropzoneFileConstraints, DropzoneFileRejection, DropzoneFileRejectionReason, DropzoneFileValidationChannel, DropzoneUploadConfig, DurationFormatSpec, DurationSegment, DurationUnit, EtBuiltInIconName, EthleteIconNameRegistry, EthleteIconVariantRegistry, FacebookVideoPlayer, FacebookWindow, FindCollisionOptions, FormErrorMessageResolver, FormFieldAppearance, FormFieldControl, FormFieldControlType, FormFieldDirectiveBase, FormFieldFill, FormFieldLabelMode, FormFieldSize, FormSupport, FullscreenAnimationCancellable, FullscreenAnimationDeps, FullscreenAnimationState, GridAdapter, GridBreakpointConfig, GridBreakpointName, GridComponentRegistration, GridConfig, GridGeometry, GridItemActionsComponent, GridItemConfig, GridItemConstraints, GridItemPosition, GridLayoutEntry, GridSerializedState, HintComponentBase, IconDefinition, IconOverride, InputMaskHost, InputTextAlignment, LabelDirectiveBase, MapLayoutOptions, MaskSpec, MaskValueMode, MenuAnchorPoint, MenuCloseReason, MenuItemActivationEvent, MenuItemActivationSource, MenuItemVariant, MenuOpenSource, MenuSelectionGroupDirectiveBase, MenuSelectionGroupItem, MenuSelectionItemKind, MenuSurfaceContext, MultiLanguageRichTextEditorLanguage, MultiLanguageRichTextEditorValue, NotificationAction, NotificationConfig, NotificationEntry, NotificationManager, NotificationManagerConfig, NotificationRef, NotificationStackContext, NotificationStatus, OtpInputCharset, OverlayAutoFocusTarget, OverlayBodyDividerType, OverlayBreakpointConfig, OverlayConfig, OverlayDefinition, OverlayDefinitionConfig, OverlayDragToDismissConfig, OverlayLifecycleConfig, OverlayManager, OverlayMode, OverlayOpenConfig, OverlayOpener, OverlayOpenerConfig, OverlayRef, OverlayRole, OverlayRoute, OverlayRouter, OverlayRouterConfig, OverlayRouterNavigateConfig, OverlayRouterNavigationDirection, OverlayRouterResolvedPath, OverlayRouterTransitionType, OverlayStrategy, OverlayStrategyBreakpoint, OverlayStrategyContext, OverlayStrategyController, OverlayStrategyControllerMountConfig, OverlaySurfaceContext, PhoneCountry, PhoneInputFlagContext, PhoneInputFlagCountry, PipCellData, PipChromeAnimations, PipChromeRef, PipChromeState, PipManager, PipSlotPlaceholderConfig, PixelRect, QueryParamOverlayDefinition, QueryParamOverlayDefinitionConfig, QueryParamOverlayHost, QueryParamOverlayOpener, QueryParamOverlayValue, RangeSliderValue, RatingIconContext, RatingIconState, ReduceSupportPresentationInput, RegisteredIconName, RegisteredIconVariant, RequiredLanguagesOptions, ResizeSpanBounds, ResolveClosestOverlayOptions, ResolveCollisionsOptions, RichTextEditorLinkEditorValue, RichTextEditorQueryTriggerConfig, RichTextEditorTool, RichTextEditorToolButton, RichTextEditorToolDefinition, RichTextEditorToolsConfig, RichTextEditorTrigger, RichTextEditorTriggerItem, RichTextEditorTriggerItemResolver, RichTextEditorTriggerItemSource, RichTextEditorTriggerType, RowFloors, ScrollableActiveChildRef, ScrollableButtonPosition, ScrollableDirection, ScrollableIntersectionChange, ScrollableItemSize, ScrollableLoadingTemplatePosition, ScrollableLoadingTemplateRef, ScrollableMaskVariant, ScrollableNavigation, ScrollableNavigationItem, ScrollableScrollMode, ScrollableScrollOrigin, ScrollableScrollState, SelectErrorContext, SelectFilterMode, SelectItem, SelectOptionData, SelectOptionGroupItem, SelectOptionTemplateContext, SelectOptionsFromQuery, SelectOptionsFromQueryConfig, SelectOptionsFromV2QueryConfig, SelectSelectedEntry, SelectSurfaceContext, SelectValueContext, SelectionListDirectiveBase, SelectionListItem, SerializeOptions, SidebarOverlay, SidebarOverlayConfig, SliderHostBase, SliderThumbBase, SliderThumbLabelBase, SliderThumbLabelContext, StreamConfig, StreamConsentConfig, StreamManager, StreamPipEntry, StreamPipWindowConfig, StreamPlayer, StreamPlayerCapabilities, StreamPlayerEntry, StreamPlayerErrorConfig, StreamPlayerErrorContext, StreamPlayerId, StreamPlayerLoadingConfig, StreamPlayerParams, StreamPlayerSlotHandle, StreamPlayerSlotOptions, StreamPlayerState, StreamScriptLoader, StreamSlotEntry, SupportContentState, SupportPresentationState, SupportTransitionDirection, TabBarFit, TabBarOrientation, TabBarVariant, TabSize, TextAlign, TextareaResizeMode, TimePickerColumn, TimePickerOption, TimePickerUnit, ToggletipContent, TooltipContent, TwitchEmbed, TwitchEmbedConstructor, TwitchEmbedPlayer, TwitchPlayerParams, TwitchWindow, V2PrepareArgsOf, ViewportTransformData, VimeoDurationChangeEvent, VimeoPlaybackEvent, VimeoPlayer, VimeoPlayerOptions, VimeoWindow, WindowControlButtonKind, WindowControlButtonSize, YtPlayer, YtPlayerConfig, YtPlayerErrorEvent, YtPlayerEvent, YtPlayerStateChangeEvent, YtPlayerVars, YtWindow };
11229
+ export { ALIGN_CENTER_ICON, ALIGN_JUSTIFY_ICON, ALIGN_LEFT_ICON, ALIGN_RIGHT_ICON, ARROW_OUT_UP_RIGHT_ICON, ARROW_RIGHT_ICON, BOLD_ICON, BUTTON_ICON_ALIGNMENTS, BUTTON_IMPORTS, BUTTON_SIZES, BUTTON_SPINNER_CONFIG, BUTTON_TYPES, BUTTON_VARIANTS, BrandLoaderComponent, ButtonComponent, ButtonDirective, ButtonStylesDirective, CALENDAR_ERROR_CODES, CALENDAR_ICON, CALENDAR_IMPORTS, CASCADER_ERROR_CODES, CASCADER_IMPORTS, CASCADER_SELECTABLE_LEVELS, CHECKBOX_IMPORTS, CHECK_ICON, CHEVRON_ICON, CHIP_ERROR_CODES, CHIP_IMPORTS, CHOICE_FIELD_IMPORTS, CLIPBOARD_CHECK_ICON, CLOCK_ICON, CODE_ICON, COLOR_INPUT_IMPORTS, CalendarCellDirective, CalendarComponent, CalendarDirective, CalendarGridDirective, CascaderColumnDirective, CascaderComponent, CascaderDirective, CascaderNodeDirective, CascaderPanelComponent, CascaderSearchDirective, CascaderSearchOptionDirective, CascaderSurfaceDirective, CascaderTriggerDirective, CheckboxComponent, CheckboxDirective, CheckboxGroupComponent, CheckboxOptionComponent, ChipComponent, ChipDirective, ChipRemoveDirective, ChoiceFieldComponent, ColorInputComponent, ColorInputDirective, DAILYMOTION_PLAYER_TOKEN, DATE_FORMAT, DATE_INPUT_ERROR_CODES, DATE_INPUT_IMPORTS, DATE_LOCALE, DATE_PICKER_HOST, DATE_RANGE_INPUT_ERROR_CODES, DATE_RANGE_INPUT_IMPORTS, DATE_TIME_INPUT_ERROR_CODES, DATE_TIME_INPUT_IMPORTS, DEFAULT_BREAKPOINTS, DEFAULT_ICON_VARIANT, DEFAULT_NOTIFICATION_MANAGER_CONFIG, DEFAULT_PIP_WINDOW_CONFIG, DEFAULT_RICH_TEXT_EDITOR_TOOLS, DEFAULT_STREAM_PLAYER_STATE, DROPZONE_ENTRY_STATUSES, DROPZONE_ERROR_CODES, DROPZONE_FILES_ERROR_KIND, DROPZONE_FILE_CONSTRAINTS, DROPZONE_FILE_REJECTION_REASONS, DROPZONE_IMPORTS, DURATION_INPUT_ERROR_CODES, DURATION_INPUT_IMPORTS, DailymotionPlayerComponent, DailymotionPlayerDirective, DailymotionPlayerParamsDirective, DailymotionPlayerSlotComponent, DateInputComponent, DateInputDirective, DateInputFieldDirective, DatePickerPanelComponent, DatePickerSurfaceDirective, DatePickerTriggerDirective, DateRangeInputComponent, DateRangeInputDirective, DateRangeInputFieldDirective, DateTimeInputComponent, DateTimeInputDirective, DateTimeInputFieldDirective, DescriptionComponent, DropzoneComponent, DropzoneDirective, DurationInputComponent, DurationInputDirective, DurationInputFieldDirective, ET_BUILT_IN_ICON_NAMES, EYE_ICON, EYE_SLASH_ICON, FACEBOOK_PLAYER_TOKEN, FILE_ICON, FLOPPY_DISK_ICON, FOCUS_FRAME_ICON, FORM_ERROR_MESSAGE_RESOLVER, FORM_FIELD_APPEARANCES, FORM_FIELD_CONTROL_TYPES, FORM_FIELD_ERROR_CODES, FORM_FIELD_FILLS, FORM_FIELD_IMPORTS, FORM_FIELD_LABEL_MODES, FORM_FIELD_SIZES, FORM_FIELD_TOKEN, FabComponent, FacebookPlayerComponent, FacebookPlayerDirective, FacebookPlayerParamsDirective, FacebookPlayerSlotComponent, FocusRingDirective, FormErrorComponent, FormFieldComponent, FormFieldDirective, GRID_2X2_ICON, GRID_ERROR_CODES, GRID_TOKEN, GridComponent, GridDebugComponent, GridDirective, GridDragDirective, GridImports, GridItemComponent, GridItemDefaultActionsComponent, GridItemDirective, GridItemRef, GridItemToolbarComponent, GridResizeDirective, HEADING_1_ICON, HEADING_2_ICON, HEADING_3_ICON, HintComponent, ICONS_TOKEN, ICON_DIRECTIVE_TOKEN, ICON_ERROR_CODES, ICON_IMPORTS, ICON_OVERRIDES_TOKEN, INITIAL_SUPPORT_PRESENTATION_STATE, INPUT_IMPORTS, INPUT_MASK_HOST, INPUT_TEXT_ALIGNMENTS, INPUT_TYPES, INTERACTIVE_TAGS, ITALIC_ICON, IconButtonComponent, IconDirective, InputComponent, InputDirective, InputMaskDirective, InputPrefixDirective, InputSuffixDirective, KICK_PLAYER_TOKEN, KickPlayerComponent, KickPlayerDirective, KickPlayerParamsDirective, KickPlayerSlotComponent, LINK_ICON, LIST_BULLETED_ICON, LIST_NUMBERED_ICON, LOCK_ICON, LabelDirective, MASKED_INPUT_ERROR_CODES, MASKED_INPUT_IMPORTS, MASK_VALUE_MODES, MENU_ERROR_CODES, MENU_IMPORTS, MENU_ITEM_VARIANTS, MENU_SELECTION_GROUP_MULTIPLE, MENU_SELECTION_GROUP_TOKEN, MENU_SELECTION_ITEM_KIND, MINUS_ICON, MULTI_LANGUAGE_RICH_TEXT_EDITOR_ERROR_CODES, MULTI_LANGUAGE_RICH_TEXT_EDITOR_IMPORTS, MenuCheckboxGroupComponent, MenuCheckboxItemComponent, MenuComponent, MenuContextTriggerDirective, MenuDirective, MenuGroupLabelComponent, MenuItemComponent, MenuItemDirective, MenuItemShortcutComponent, MenuPanelDirective, MenuRadioGroupComponent, MenuRadioItemComponent, MenuSearchDirective, MenuSelectionGroupDirective, MenuSelectionItemDirective, MenuSeparatorComponent, MenuSurfaceDirective, MenuTriggerDirective, MultiLanguageRichTextEditorComponent, MultiLanguageRichTextEditorDirective, MultiLanguageRichTextEditorLanguageToolComponent, NAV_TABS_TOKEN, NOTIFICATION_ERROR_CODES, NOTIFICATION_IMPORTS, NOTIFICATION_STACK_CONTEXT_TOKEN, NOTIFICATION_STATUS, NUMBER_INPUT_IMPORTS, NavTabImports, NavTabLinkComponent, NavTabLinkDirective, NavTabsComponent, NavTabsDirective, NavTabsOutletComponent, NavTabsOutletDirective, NotificationActionDirective, NotificationComponent, NotificationDirective, NotificationDismissDirective, NotificationItemDirective, NotificationStackDirective, NumberInputComponent, NumberInputDirective, OTP_INPUT_IMPORTS, OVERLAY_BACK_OR_CLOSE_TOKEN, OVERLAY_BODY_TOKEN, OVERLAY_CONFIG_CLASS_KEYS, OVERLAY_CONTENT_IMPORTS, OVERLAY_ERROR_CODES, OVERLAY_FOOTER_TOKEN, OVERLAY_HEADER_TEMPLATE_TOKEN, OVERLAY_HEADER_TOKEN, OVERLAY_IMPORTS, OVERLAY_MAIN_TOKEN, OVERLAY_QUERY_PARAM_INPUT_NAME, OVERLAY_REF, OVERLAY_ROUTER_CONFIG_TOKEN, OVERLAY_ROUTER_LINK_TOKEN, OVERLAY_ROUTER_OUTLET_DISABLED_TEMPLATE_TOKEN, OVERLAY_ROUTER_OUTLET_TOKEN, OVERLAY_ROUTER_TOKEN, OVERLAY_SHARED_ROUTE_TEMPLATE_TOKEN, OtpInputComponent, OtpInputDirective, OverlayAnchorDirective, OverlayBackOrCloseDirective, OverlayBodyComponent, OverlayCloseDirective, OverlayContainerComponent, OverlayDirective, OverlayFooterDirective, OverlayHeaderDirective, OverlayHeaderTemplateDirective, OverlayMainDirective, OverlayOriginCloneComponent, OverlayRouteHeaderTemplateOutletComponent, OverlayRouterLinkDirective, OverlayRouterOutletComponent, OverlayRouterOutletDisabledTemplateDirective, OverlaySharedRouteTemplateDirective, OverlaySharedRouteTemplateOutletComponent, OverlaySidebarComponent, OverlaySidebarPageComponent, OverlaySurfaceDirective, OverlayTitleDirective, OverlayTriggerDirective, PARAGRAPH_ICON, PASSWORD_INPUT_IMPORTS, PENCIL_ICON, PHONE_COUNTRIES, PHONE_INPUT_ERROR_CODES, PHONE_INPUT_IMPORTS, PIP_CHROME_REF_TOKEN, PIP_ENTRY_TOKEN, PIP_WINDOW_ASPECT_RATIO_TOKEN, PLUS_ICON, PasswordInputComponent, PasswordInputDirective, PhoneInputComponent, PhoneInputDirective, PhoneInputFieldDirective, PhoneInputFlagDirective, PipBackDirective, PipBringBackDirective, PipCellDirective, PipCloseDirective, PipCollapseOverlayDirective, PipGridToggleDirective, PipPlayerComponent, PipSlotPlaceholderComponent, PipStageDirective, PipTitleBarDirective, PipTitleBarTemplateDirective, PipWindowComponent, PipWindowParamsDirective, ProgressBarComponent, QueryParamOverlayLinkDirective, RATING_IMPORTS, RICH_TEXT_EDITOR_HEADING_OPTIONS, RICH_TEXT_EDITOR_IMPORTS, RICH_TEXT_EDITOR_INLINE_TOOLS, RICH_TEXT_EDITOR_LANGUAGE_TOOL, RICH_TEXT_EDITOR_TOKEN_CODEC, RICH_TEXT_EDITOR_TOKEN_PALETTE_IMPORTS, RICH_TEXT_EDITOR_TOOL, RICH_TEXT_EDITOR_TOOLS, RICH_TEXT_EDITOR_TOOL_BUTTONS, RICH_TEXT_EDITOR_TRIGGERS_IMPORTS, ROTATE_RIGHT_ICON, RadioComponent, RadioGroupComponent, RangeSliderComponent, RangeSliderDirective, RatingComponent, RatingDirective, RatingIconDirective, RichTextEditorAlignToolComponent, RichTextEditorComponent, RichTextEditorDirective, RichTextEditorFloatingToolbarComponent, RichTextEditorFloatingToolbarDirective, RichTextEditorLinkEditorComponent, RichTextEditorLinkEditorDirective, RichTextEditorTableToolComponent, RichTextEditorTokenPaletteComponent, RichTextEditorTokenPopupComponent, RichTextEditorTriggersDirective, SCROLLABLE_ERROR_CODES, SCROLLABLE_IMPORTS, SELECTION_LIST_MULTIPLE, SELECTION_LIST_TOKEN, SELECT_ERROR_CODES, SELECT_FILTER_MODES, SELECT_IMPORTS, SIDEBAR_OVERLAY_CONFIG, SIDEBAR_OVERLAY_TOKEN, SLIDER_ERROR_CODES, SLIDER_IMPORTS, SLIDER_TOKEN, SNAP_HYSTERESIS, SOOP_PLAYER_TOKEN, SPLIT_BUTTON_ERROR_CODES, STAR_ICON, STREAM_CONSENT_TOKEN, STREAM_PLAYER_COMPONENT_TOKEN, STREAM_PLAYER_ERROR_CONTEXT_TOKEN, STREAM_PLAYER_ERROR_TOKEN, STREAM_PLAYER_PARAMS_TOKEN, STREAM_PLAYER_SLOT_TOKEN, STREAM_PLAYER_TOKEN, STREAM_SLOT_PLAYER_ID_TOKEN, STREAM_USER_CONSENT_PROVIDER_TOKEN, STRIKETHROUGH_ICON, SUPPORT_CONTENT_STATE, SUPPORT_TRANSITION_DIRECTION, SWITCH_IMPORTS, ScrollableActiveChildDirective, ScrollableButtonsDirective, ScrollableComponent, ScrollableDarkenDirective, ScrollableDirective, ScrollableDragDirective, ScrollableIgnoreChildDirective, ScrollableLoadingTemplateDirective, ScrollableMasksDirective, ScrollableNavigationDirective, ScrollableSnapDirective, SegmentedButtonComponent, SegmentedButtonGroupComponent, SelectComponent, SelectDirective, SelectEmptyDirective, SelectErrorDirective, SelectListboxDirective, SelectLoadingDirective, SelectOptionComponent, SelectOptionDirective, SelectOptionGroupComponent, SelectOptionGroupDirective, SelectOptionTemplateDirective, SelectOptionsDirective, SelectPanelComponent, SelectSearchDirective, SelectSurfaceDirective, SelectTriggerDirective, SelectValueDirective, SelectViewportDirective, SelectVirtualOptionComponent, SelectVirtualOptionDirective, SelectionListControlDirective, SelectionListDirective, SelectionOptionDirective, SliderComponent, SliderDirective, SliderThumbDirective, SliderThumbLabelDirective, SliderTrackDirective, SoopPlayerComponent, SoopPlayerDirective, SoopPlayerParamsDirective, SoopPlayerSlotComponent, SpinnerComponent, SplitButtonActionDirective, SplitButtonComponent, SplitButtonDirective, SplitButtonTriggerDirective, StreamConsentAcceptDirective, StreamConsentComponent, StreamConsentDirective, StreamImports, StreamPipChromeComponent, StreamPlayerErrorComponent, StreamPlayerErrorDirective, StreamPlayerLoadingComponent, StreamPlayerSlotDirective, SwitchComponent, SwitchDirective, TABLE_ICON, TAB_BAR_FITS, TAB_BAR_ORIENTATIONS, TAB_BAR_TOKEN, TAB_BAR_TRIGGER_TOKEN, TAB_BAR_VARIANTS, TAB_ERROR_CODES, TAB_GROUP_TOKEN, TAB_PANEL_TOKEN, TAB_SIZES, TAG_INPUT_ERROR_CODES, TAG_INPUT_IMPORTS, TEXTAREA_IMPORTS, TEXTAREA_RESIZE_MODES, TEXT_ALIGNS, TIKTOK_PLAYER_TOKEN, TIMES_ICON, TIME_FORMAT, TIME_INPUT_ERROR_CODES, TIME_INPUT_IMPORTS, TIME_PICKER_ERROR_CODES, TIME_PICKER_IMPORTS, TOGGLETIP_ERROR_CODES, TOGGLETIP_IMPORTS, TOOLTIP_ERROR_CODES, TOOLTIP_IMPORTS, TRIANGLE_EXCLAMATION_ICON, TWITCH_PLAYER_TOKEN, TabBarDirective, TabBarTriggerDirective, TabBarUnderlineDirective, TabComponent, TabGroupComponent, TabGroupDirective, TabImports, TabLabelDirective, TabPanelDirective, TabTriggerDirective, TagInputComponent, TagInputDirective, TagInputFieldDirective, TextButtonComponent, TextFieldControlDirective, TextareaComponent, TextareaDirective, TikTokPlayerComponent, TikTokPlayerDirective, TikTokPlayerParamsDirective, TikTokPlayerSlotComponent, TimeInputComponent, TimeInputDirective, TimeInputFieldDirective, TimePickerColumnDirective, TimePickerComponent, TimePickerDirective, TimePickerOptionDirective, ToggletipCloseDirective, ToggletipComponent, ToggletipDirective, ToggletipTriggerDirective, TooltipComponent, TooltipDirective, TwitchPlayerComponent, TwitchPlayerDirective, TwitchPlayerParamsDirective, TwitchPlayerSlotComponent, UNDERLINE_ICON, UNIT_MS, UPLOAD_ICON, VIMEO_PLAYER_TOKEN, VimeoPlayerComponent, VimeoPlayerDirective, VimeoPlayerParamsDirective, VimeoPlayerSlotComponent, WINDOW_CONTROL_BUTTON_KINDS, WINDOW_CONTROL_BUTTON_SIZES, WindowControlButtonComponent, YOUTUBE_PLAYER_SLOT_TOKEN, YOUTUBE_PLAYER_TOKEN, YoutubePlayerComponent, YoutubePlayerDirective, YoutubePlayerParamsDirective, YoutubePlayerSlotComponent, YoutubePlayerSlotDirective, abortFullscreenAnimation, anchoredDialogOverlayStrategy, anchoredOverlayStrategy, autoPlace, bottomSheetOverlayStrategy, buildAnchoredRuntimePositionStrategy, canHaveChildren, cascaderFromQuery, centeredOverlayStrategy, clampPosition, clampResizeRect, cleanupFullscreenAnimation, cleanupFullscreenAnimationStyles, compactLayout, computeGeometry, computeGridHeight, createAnchoredPanelController, createAutoScroller, createCardMask, createCurrencyMask, createDefaultDropzoneArgs, createDropzoneUpload, createExistingDropzoneEntry, createFileDropzoneEntry, createGridAdapter, createIbanMask, createNotificationRef, createOverlayOpener, createOverlayRef, createOverlayStrategyController, createOverlayUnsavedChangesGuard, createPipChromeAnimations, createPipChromeState, createRichTextEditorTrigger, createRichTextEditorTriggerWithQuery, createStreamConfig, createStreamPlayerSlot, createV2DropzoneUpload, defaultCompareWith, defaultDropzoneRejectionMessage, defineOverlay, defineQueryParamOverlay, deriveDurationFormatSpec, deserializeGridLayout, dialogOverlayStrategy, disposeDropzoneEntry, dropzoneFiles, enableDragToDismiss, findCollision, findNextRelevantHtmlElement, findScrollableAncestor, formatDuration, formatFileSize, fromGridPosition, fullScreenDialogOverlayStrategy, getClosestOverlay, getOriginCoordinatesAndDimensions, hysteresisRound, iconRegistryKey, indexOfNode, injectAnchoredDialogStrategy, injectAnchoredDialogStrategyDefaults, injectBottomSheetStrategy, injectBottomSheetStrategyDefaults, injectDateFormat, injectDateLocale, injectDialogStrategy, injectDialogStrategyDefaults, injectFormSupport, injectFullscreenDialogStrategy, injectFullscreenDialogStrategyDefaults, injectGridConfig, injectLeftSheetStrategy, injectLeftSheetStrategyDefaults, injectNotificationManager, injectNotificationManagerConfig, injectOverlayManager, injectOverlayRouter, injectOverlayScrollBlocker, injectOverlaySurfaceContext, injectPipChromeManager, injectPipManager, injectPipSlotPlaceholderConfig, injectRichTextEditorTools, injectRightSheetStrategy, injectRightSheetStrategyDefaults, injectSidebarOverlay, injectStreamConfig, injectStreamConsentConfig, injectStreamManager, injectStreamPlayerErrorConfig, injectStreamPlayerLoadingConfig, injectStreamScriptLoader, injectStreamUserConsentProvider, injectTimeFormat, injectTopSheetStrategy, injectTopSheetStrategyDefaults, isFileAccepted, isHtmlElement, isInteractiveElement, isPointerEvent, isTargetInsideOverlayTree, isTouchEvent, itemsCollide, leftSheetOverlayStrategy, mapLayoutToBreakpoint, matchCountryByDialCode, mergeOverlayBreakpointConfigs, mergeOverlayConfigs, nodesEqual, parseDuration, phoneCountryFlag, phoneCountryName, pixelRectsEqual, positionToPixelRect, positionsEqual, projectDragCell, provideAnchoredDialogStrategy, provideAnchoredDialogStrategyDefaults, provideBottomSheetStrategy, provideBottomSheetStrategyDefaults, provideDateFormat, provideDateLocale, provideDialogStrategy, provideDialogStrategyDefaults, provideFormErrorMessageResolver, provideFormSupport, provideFullscreenDialogStrategy, provideFullscreenDialogStrategyDefaults, provideGridConfig, provideIconOverrides, provideIcons, provideLeftSheetStrategy, provideLeftSheetStrategyDefaults, provideNotificationManager, provideNotificationManagerConfig, provideNotificationManagerInstance, provideOverlay, provideOverlayManager, provideOverlayRouter, provideOverlayRouterConfig, provideOverlayRouterService, provideOverlayScrollBlocker, providePipChromeManager, providePipManager, providePipSlotPlaceholderConfig, provideRichTextEditorAlignmentTool, provideRichTextEditorLanguageTool, provideRichTextEditorTableTool, provideRichTextEditorTokenRendering, provideRichTextEditorTools, provideRightSheetStrategy, provideRightSheetStrategyDefaults, provideSidebarOverlay, provideSidebarOverlayConfig, provideSidebarOverlayService, provideStreamConfig, provideStreamConsentConfig, provideStreamManager, provideStreamPlayerErrorConfig, provideStreamPlayerLoadingConfig, provideTimeFormat, provideTopSheetStrategy, provideTopSheetStrategyDefaults, reduceSupportPresentation, registerSingleton, requiredLanguages, resizeSpanBounds, resolveBreakpoint, resolveClosestOverlay, resolveCollisions, rightSheetOverlayStrategy, rowsToPixelHeight, selectOptionsFromQuery, selectOptionsFromV2Query, serializeGridLayout, snapResizeSpan, spanHeight, spanWidth, startFullscreenEnterAnimation, startFullscreenLeaveAnimation, stripTrunkZero, supportPresentationIncludesState, toChildrenObservable, toGridPosition, toPathObservable, toSearchObservable, topSheetOverlayStrategy, transformingBottomSheetToDialogOverlayStrategy, transformingFullScreenDialogToDialogOverlayStrategy, transformingFullScreenDialogToRightSheetOverlayStrategy, wireFormSupport };
11230
+ export type { AnchoredDialogOverlayStrategyOptions, AnchoredOverlayStrategyOptions, AnchoredPanelCloseInfo, AnchoredPanelOverlayRef, AnchoredPanelSurfaceLike, AnchoredPositionOptions, AnyDropzoneUploadConfig, AutoPlaceOptions, AutoScrollPointer, AutoScroller, ButtonIconAlignment, ButtonSize, CalendarCell, CalendarMode, CalendarRange, CalendarWeekday, CascaderColumnState, CascaderCompareWith, CascaderDataSource, CascaderFromQueryConfig, CascaderFromQuerySearchConfig, CascaderNode, CascaderNodeSignal, CascaderSearchState, CascaderSelectableLevels, CascaderSurfaceContext, CenteredOverlayStrategyOptions, ClampPositionOptions, CompactLayoutOptions, CreateAnchoredPanelControllerOptions, CreateExistingDropzoneEntryOptions, CreateFileDropzoneEntryOptions, CreateOverlayUnsavedChangesGuardConfig, CurrencyMaskOptions, DatePickerHost, DatePickerSurfaceBase, DatePickerSurfaceContext, DatePickerTriggerBase, DateRangeSide, DateRangeValue, DragToDismissContext, DragToDismissRef, DropzoneEntry, DropzoneEntrySource, DropzoneEntryStatus, DropzoneExistingFileInfo, DropzoneFileConstraints, DropzoneFileRejection, DropzoneFileRejectionReason, DropzoneFileValidationChannel, DropzoneUploadConfig, DropzoneUploadError, DropzoneUploadHandle, DropzoneUploadHandleOptions, DropzoneUploadState, DurationFormatSpec, DurationSegment, DurationUnit, EtBuiltInIconName, EthleteIconNameRegistry, EthleteIconVariantRegistry, FacebookVideoPlayer, FacebookWindow, FindCollisionOptions, FormErrorMessageResolver, FormFieldAppearance, FormFieldControl, FormFieldControlType, FormFieldDirectiveBase, FormFieldFill, FormFieldLabelMode, FormFieldSize, FormSupport, FullscreenAnimationCancellable, FullscreenAnimationDeps, FullscreenAnimationState, GridAdapter, GridBreakpointConfig, GridBreakpointName, GridComponentRegistration, GridConfig, GridGeometry, GridItemActionsComponent, GridItemConfig, GridItemConstraints, GridItemPosition, GridLayoutEntry, GridSerializedState, HintComponentBase, IconDefinition, IconOverride, InputMaskHost, InputTextAlignment, LabelDirectiveBase, MapLayoutOptions, MaskSpec, MaskValueMode, MenuAnchorPoint, MenuCloseReason, MenuItemActivationEvent, MenuItemActivationSource, MenuItemVariant, MenuOpenSource, MenuSelectionGroupDirectiveBase, MenuSelectionGroupItem, MenuSelectionItemKind, MenuSurfaceContext, MultiLanguageRichTextEditorLanguage, MultiLanguageRichTextEditorValue, NotificationAction, NotificationConfig, NotificationEntry, NotificationManager, NotificationManagerConfig, NotificationRef, NotificationStackContext, NotificationStatus, OtpInputCharset, OverlayAutoFocusTarget, OverlayBodyDividerType, OverlayBreakpointConfig, OverlayCloseGuard, OverlayConfig, OverlayDefinition, OverlayDefinitionConfig, OverlayDragToDismissConfig, OverlayLifecycleConfig, OverlayManager, OverlayMode, OverlayOpenConfig, OverlayOpener, OverlayOpenerConfig, OverlayRef, OverlayRole, OverlayRoute, OverlayRouter, OverlayRouterConfig, OverlayRouterNavigateConfig, OverlayRouterNavigationDirection, OverlayRouterResolvedPath, OverlayRouterTransitionType, OverlayStrategy, OverlayStrategyBreakpoint, OverlayStrategyContext, OverlayStrategyController, OverlayStrategyControllerMountConfig, OverlaySurfaceContext, OverlayTreeContainmentOptions, OverlayUnsavedChangesDismissSources, OverlayUnsavedChangesGuardRef, PhoneCountry, PhoneInputFlagContext, PhoneInputFlagCountry, PipCellData, PipChromeAnimations, PipChromeRef, PipChromeState, PipManager, PipSlotPlaceholderConfig, PixelRect, QueryParamOverlayDefinition, QueryParamOverlayDefinitionConfig, QueryParamOverlayHost, QueryParamOverlayOpener, QueryParamOverlayValue, RangeSliderValue, RatingIconContext, RatingIconState, ReduceSupportPresentationInput, RegisteredIconName, RegisteredIconVariant, RequiredLanguagesOptions, ResizeSpanBounds, ResolveClosestOverlayOptions, ResolveCollisionsOptions, ResolvedDropzoneUploadConfig, RichTextEditorLinkEditorValue, RichTextEditorQueryTriggerConfig, RichTextEditorTool, RichTextEditorToolButton, RichTextEditorToolDefinition, RichTextEditorToolsConfig, RichTextEditorTrigger, RichTextEditorTriggerItem, RichTextEditorTriggerItemResolver, RichTextEditorTriggerItemSource, RichTextEditorTriggerType, RowFloors, ScrollableActiveChildRef, ScrollableButtonPosition, ScrollableDirection, ScrollableIntersectionChange, ScrollableItemSize, ScrollableLoadingTemplatePosition, ScrollableLoadingTemplateRef, ScrollableMaskVariant, ScrollableNavigation, ScrollableNavigationItem, ScrollableScrollMode, ScrollableScrollOrigin, ScrollableScrollState, SelectAsyncOptions, SelectErrorContext, SelectFilterMode, SelectItem, SelectOptionData, SelectOptionGroupItem, SelectOptionTemplateContext, SelectOptionsFromQuery, SelectOptionsFromQueryConfig, SelectOptionsFromV2QueryConfig, SelectSelectedEntry, SelectSurfaceContext, SelectValueContext, SelectionListDirectiveBase, SelectionListItem, SerializeOptions, SidebarOverlay, SidebarOverlayConfig, SliderHostBase, SliderThumbBase, SliderThumbLabelBase, SliderThumbLabelContext, StreamConfig, StreamConsentConfig, StreamManager, StreamPipEntry, StreamPipWindowConfig, StreamPlayer, StreamPlayerCapabilities, StreamPlayerEntry, StreamPlayerErrorConfig, StreamPlayerErrorContext, StreamPlayerId, StreamPlayerLoadingConfig, StreamPlayerParams, StreamPlayerSlotHandle, StreamPlayerSlotOptions, StreamPlayerState, StreamScriptLoader, StreamSlotEntry, SupportContentState, SupportPresentationState, SupportTransitionDirection, TabBarFit, TabBarOrientation, TabBarVariant, TabSize, TextAlign, TextareaResizeMode, TimePickerColumn, TimePickerOption, TimePickerUnit, ToggletipContent, TooltipContent, TwitchEmbed, TwitchEmbedConstructor, TwitchEmbedPlayer, TwitchPlayerParams, TwitchWindow, V2DropzonePrepareArgsOf, V2DropzoneUploadConfig, V2PrepareArgsOf, ViewportTransformData, VimeoDurationChangeEvent, VimeoPlaybackEvent, VimeoPlayer, VimeoPlayerOptions, VimeoWindow, WindowControlButtonKind, WindowControlButtonSize, YtPlayer, YtPlayerConfig, YtPlayerErrorEvent, YtPlayerEvent, YtPlayerStateChangeEvent, YtPlayerVars, YtWindow };