@ethlete/components 0.1.0-next.9 → 1.0.0-next.17

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,14 +1,14 @@
1
1
  import * as _angular_core from '@angular/core';
2
- import { Signal, WritableSignal, InjectionToken, ElementRef, Type, InputSignal, ViewContainerRef, Injector, StaticProvider, TemplateRef, computed, Binding, EnvironmentInjector, ComponentRef } from '@angular/core';
2
+ import { Signal, WritableSignal, InjectionToken, ElementRef, Type, InputSignal, ViewContainerRef, Injector, Binding, StaticProvider, TemplateRef, OnInit, ComponentRef, OnDestroy, computed, Provider, EnvironmentInjector, ApplicationRef } from '@angular/core';
3
3
  import * as _ethlete_core from '@ethlete/core';
4
- import { AnimatableDirective, DragHandleDirective, ResizeEdge, ResizeMoveEvent, OverlayRuntimePositionStrategy, OverlayRuntimeRef, AnimatedLifecycleDirective, ScrollObserverDirective, ScrollToElementOptions, ConsentHandler, ProvideColorDirective, ProvideSurfaceDirective } from '@ethlete/core';
4
+ import { AnimatableDirective, ResizeEdge, DragHandleDirective, ResizeMoveEvent, OverlayRuntimePositionStrategy, Breakpoint, OverlayRuntimeRef, AnimatedLifecycleDirective, OverlayRuntimeCloseSource, AnimatedLifecycleState, AngularRenderer, OverlayRuntimeAnimationDelegate, ScrollObserverDirective, ScrollToElementOptions, ConsentHandler, ProvideColorDirective } from '@ethlete/core';
5
5
  import * as _angular_forms_signals from '@angular/forms/signals';
6
6
  import { ValidationError, FormCheckboxControl, FormValueControl } from '@angular/forms/signals';
7
7
  import * as _ethlete_components from '@ethlete/components';
8
8
  import * as _angular_platform_browser from '@angular/platform-browser';
9
+ import { Placement, OffsetOptions, Padding } from '@floating-ui/dom';
9
10
  import * as rxjs from 'rxjs';
10
11
  import { Observable } from 'rxjs';
11
- import { Placement, OffsetOptions, Padding } from '@floating-ui/dom';
12
12
  import * as i1 from '@angular/router';
13
13
 
14
14
  declare class ButtonStylesDirective {
@@ -40,8 +40,8 @@ declare class ButtonDirective {
40
40
  }
41
41
 
42
42
  declare class FocusRingDirective {
43
- disabled: _angular_core.InputSignalWithTransform<boolean, unknown>;
44
43
  private styleManager;
44
+ disabled: _angular_core.InputSignalWithTransform<boolean, unknown>;
45
45
  protected active: _angular_core.WritableSignal<boolean>;
46
46
  constructor();
47
47
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<FocusRingDirective, never>;
@@ -372,10 +372,6 @@ declare class CheckboxComponent {
372
372
  declare const CHECKBOX_IMPORTS: readonly [typeof CheckboxComponent, typeof CheckboxDirective];
373
373
 
374
374
  declare class ChoiceFieldComponent {
375
- private errorContentRef;
376
- private hintContentRef;
377
- private errorAnimatableRef;
378
- private hintAnimatableRef;
379
375
  support: {
380
376
  errorColorTheme: _ethlete_core.ColorTheme;
381
377
  formFieldDir: FormFieldDirective;
@@ -393,6 +389,10 @@ declare class ChoiceFieldComponent {
393
389
  visibleErrors: _angular_core.Signal<readonly _angular_forms_signals.ValidationError.WithOptionalFieldTree[]>;
394
390
  supportHeight: _angular_core.Signal<number>;
395
391
  };
392
+ private errorContentRef;
393
+ private hintContentRef;
394
+ private errorAnimatableRef;
395
+ private hintAnimatableRef;
396
396
  canAnimate: {
397
397
  state: _angular_core.Signal<boolean>;
398
398
  };
@@ -464,6 +464,8 @@ declare class FormFieldComponent {
464
464
  private provideSurface;
465
465
  private parentSurfaceProvider;
466
466
  protected formFieldDir: FormFieldDirective;
467
+ protected errorColorTheme: _ethlete_core.ColorTheme;
468
+ private surfaceThemes;
467
469
  appearance: _angular_core.InputSignal<FormFieldAppearance>;
468
470
  fill: _angular_core.InputSignal<FormFieldFill>;
469
471
  labelMode: _angular_core.InputSignal<FormFieldLabelMode>;
@@ -473,8 +475,6 @@ declare class FormFieldComponent {
473
475
  prefixEl: _angular_core.Signal<ElementRef<HTMLElement> | undefined>;
474
476
  protected errorAnimatable: _angular_core.Signal<AnimatableDirective | undefined>;
475
477
  protected hintAnimatable: _angular_core.Signal<AnimatableDirective | undefined>;
476
- protected errorColorTheme: _ethlete_core.ColorTheme;
477
- private surfaceThemes;
478
478
  private errorDimensions;
479
479
  private hintDimensions;
480
480
  private prefixDimensions;
@@ -577,6 +577,7 @@ declare const INPUT_IMPORTS: readonly [typeof InputComponent, typeof InputDirect
577
577
 
578
578
  type InlineTag = 'strong' | 'em' | 'del';
579
579
  type ListTag = 'ul' | 'ol';
580
+ type HeadingTag = 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6';
580
581
  type EditableSelection = {
581
582
  selection: Selection;
582
583
  range: Range;
@@ -588,11 +589,28 @@ type RichTextMarkStates = {
588
589
  unorderedList: boolean;
589
590
  orderedList: boolean;
590
591
  link: boolean;
592
+ /** Heading level of the block the selection starts in, or `null` when it is not a heading. */
593
+ heading: number | null;
591
594
  };
592
595
 
593
596
  declare class RichTextEditorDirective implements FormValueControl<string>, FormFieldControl {
594
597
  private formField;
595
598
  private destroyRef;
599
+ private document;
600
+ /** @internal */
601
+ editorDom: {
602
+ root: _angular_core.WritableSignal<HTMLElement | null>;
603
+ getSelection: () => EditableSelection | null;
604
+ closestWithin: (node: Node | null, selector: string) => HTMLElement | null;
605
+ markStates: () => RichTextMarkStates | null;
606
+ toggleInline: (tag: InlineTag) => void;
607
+ toggleList: (listTag: ListTag) => void;
608
+ toggleHeading: (tag: HeadingTag) => void;
609
+ applyLink: (href: string) => void;
610
+ removeLink: () => void;
611
+ insertToken: (node: Node) => void;
612
+ handleBackspace: () => boolean;
613
+ };
596
614
  value: _angular_core.ModelSignal<string>;
597
615
  touched: _angular_core.ModelSignal<boolean>;
598
616
  disabled: _angular_core.InputSignal<boolean>;
@@ -616,21 +634,9 @@ declare class RichTextEditorDirective implements FormValueControl<string>, FormF
616
634
  unorderedListActive: _angular_core.WritableSignal<boolean>;
617
635
  orderedListActive: _angular_core.WritableSignal<boolean>;
618
636
  linkActive: _angular_core.WritableSignal<boolean>;
637
+ headingLevel: _angular_core.WritableSignal<number | null>;
619
638
  /** @internal */
620
639
  lastEmittedMarkdown: string | null;
621
- /** @internal */
622
- editorDom: {
623
- root: _angular_core.WritableSignal<HTMLElement | null>;
624
- getSelection: () => EditableSelection | null;
625
- closestWithin: (node: Node | null, selector: string) => HTMLElement | null;
626
- markStates: () => RichTextMarkStates | null;
627
- toggleInline: (tag: InlineTag) => void;
628
- toggleList: (listTag: ListTag) => void;
629
- applyLink: (href: string) => void;
630
- removeLink: () => void;
631
- insertToken: (node: Node) => void;
632
- handleBackspace: () => boolean;
633
- };
634
640
  constructor();
635
641
  activate(): void;
636
642
  syncFromDom(): void;
@@ -640,27 +646,53 @@ declare class RichTextEditorDirective implements FormValueControl<string>, FormF
640
646
  toggleStrikethrough(): void;
641
647
  toggleUnorderedList(): void;
642
648
  toggleOrderedList(): void;
649
+ toggleHeading(level: number): void;
643
650
  setLink(href: string): void;
651
+ promptForLink(): void;
644
652
  handleBackspace(): boolean;
645
653
  /**
646
654
  * @internal Extension seam for the follow-up `@`/`#` autocomplete: inserts an atomic inline
647
655
  * node (a mention/placeholder token) at the caret, then re-syncs.
648
656
  */
649
657
  insertAtomicToken(node: Node): void;
658
+ private serializeCleanHtml;
650
659
  private runCommand;
651
660
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<RichTextEditorDirective, never>;
652
661
  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; }; }, { "value": "valueChange"; "touched": "touchedChange"; }, never, never, true, never>;
653
662
  }
654
663
 
664
+ declare class RichTextEditorFloatingToolbarComponent {
665
+ protected dir: RichTextEditorDirective;
666
+ private document;
667
+ private renderer;
668
+ private destroyRef;
669
+ private host;
670
+ protected visible: _angular_core.WritableSignal<boolean>;
671
+ private activeRange;
672
+ private floatingReference;
673
+ private floatingCleanup;
674
+ private pointerSelectingInContent;
675
+ constructor();
676
+ private selectableRange;
677
+ private finishContentPointerSelection;
678
+ private evaluate;
679
+ private reposition;
680
+ private start;
681
+ private updatePosition;
682
+ private hide;
683
+ private stop;
684
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<RichTextEditorFloatingToolbarComponent, never>;
685
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<RichTextEditorFloatingToolbarComponent, "et-rich-text-editor-floating-toolbar", never, {}, {}, never, never, true, never>;
686
+ }
687
+
655
688
  declare class RichTextEditorComponent {
656
689
  protected dir: RichTextEditorDirective;
657
690
  private document;
658
691
  private editable;
659
692
  constructor();
660
- protected onInput(): void;
661
- protected onKeydown(event: KeyboardEvent): void;
662
- protected onBeforeInput(event: InputEvent): void;
663
- protected promptForLink(): void;
693
+ protected syncValueFromDom(): void;
694
+ protected interceptBackspaceKey(event: KeyboardEvent): void;
695
+ protected interceptFormattingCommand(event: InputEvent): void;
664
696
  private renderExternalValue;
665
697
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<RichTextEditorComponent, never>;
666
698
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<RichTextEditorComponent, "et-rich-text-editor", never, {}, {}, never, never, true, [{ directive: typeof RichTextEditorDirective; inputs: { "value": "value"; "disabled": "disabled"; "readonly": "readonly"; "hidden": "hidden"; "invalid": "invalid"; "errors": "errors"; "required": "required"; "name": "name"; "placeholder": "placeholder"; }; outputs: { "valueChange": "valueChange"; "touchedChange": "touchedChange"; }; }]>;
@@ -728,10 +760,6 @@ declare class SelectionListDirective implements SelectionListDirectiveBase, Form
728
760
  }
729
761
 
730
762
  declare class CheckboxGroupComponent {
731
- private errorContentRef;
732
- private hintContentRef;
733
- private errorAnimatableRef;
734
- private hintAnimatableRef;
735
763
  support: {
736
764
  errorColorTheme: _ethlete_core.ColorTheme;
737
765
  formFieldDir: FormFieldDirective;
@@ -749,6 +777,10 @@ declare class CheckboxGroupComponent {
749
777
  visibleErrors: _angular_core.Signal<readonly _angular_forms_signals.ValidationError.WithOptionalFieldTree[]>;
750
778
  supportHeight: _angular_core.Signal<number>;
751
779
  };
780
+ private errorContentRef;
781
+ private hintContentRef;
782
+ private errorAnimatableRef;
783
+ private hintAnimatableRef;
752
784
  canAnimate: {
753
785
  state: _angular_core.Signal<boolean>;
754
786
  };
@@ -799,10 +831,6 @@ declare class CheckboxOptionComponent {
799
831
  }
800
832
 
801
833
  declare class RadioGroupComponent {
802
- private errorContentRef;
803
- private hintContentRef;
804
- private errorAnimatableRef;
805
- private hintAnimatableRef;
806
834
  support: {
807
835
  errorColorTheme: _ethlete_core.ColorTheme;
808
836
  formFieldDir: FormFieldDirective;
@@ -820,6 +848,10 @@ declare class RadioGroupComponent {
820
848
  visibleErrors: _angular_core.Signal<readonly _angular_forms_signals.ValidationError.WithOptionalFieldTree[]>;
821
849
  supportHeight: _angular_core.Signal<number>;
822
850
  };
851
+ private errorContentRef;
852
+ private hintContentRef;
853
+ private errorAnimatableRef;
854
+ private hintAnimatableRef;
823
855
  canAnimate: {
824
856
  state: _angular_core.Signal<boolean>;
825
857
  };
@@ -838,10 +870,6 @@ declare class RadioComponent {
838
870
  }
839
871
 
840
872
  declare class SegmentedButtonGroupComponent {
841
- private errorContentRef;
842
- private hintContentRef;
843
- private errorAnimatableRef;
844
- private hintAnimatableRef;
845
873
  support: {
846
874
  errorColorTheme: _ethlete_core.ColorTheme;
847
875
  formFieldDir: FormFieldDirective;
@@ -859,6 +887,10 @@ declare class SegmentedButtonGroupComponent {
859
887
  visibleErrors: _angular_core.Signal<readonly _angular_forms_signals.ValidationError.WithOptionalFieldTree[]>;
860
888
  supportHeight: _angular_core.Signal<number>;
861
889
  };
890
+ private errorContentRef;
891
+ private hintContentRef;
892
+ private errorAnimatableRef;
893
+ private hintAnimatableRef;
862
894
  canAnimate: {
863
895
  state: _angular_core.Signal<boolean>;
864
896
  };
@@ -942,6 +974,14 @@ type GridLayoutEntry = {
942
974
  id: string;
943
975
  position: GridItemPosition;
944
976
  };
977
+ /**
978
+ * Contract for a grid item's `actionsComponent`: a component that receives the item's `itemId` and
979
+ * `data` as inputs. Both are always provided by the grid.
980
+ */
981
+ type GridItemActionsComponent<TData = unknown> = Type<{
982
+ itemId: InputSignal<string>;
983
+ data: InputSignal<TData>;
984
+ }>;
945
985
  type GridComponentRegistration<TData = unknown> = {
946
986
  component: Type<{
947
987
  data: InputSignal<TData>;
@@ -979,13 +1019,16 @@ type GridDragState = {
979
1019
  };
980
1020
  declare class GridDirective {
981
1021
  private injector;
1022
+ private destroyRef;
1023
+ elementRef: ElementRef<HTMLElement>;
1024
+ private gridConfig;
1025
+ private reducedMotion;
982
1026
  breakpoints: _angular_core.InputSignal<GridBreakpointConfig[]>;
983
1027
  rowHeight: _angular_core.InputSignal<number>;
984
1028
  gap: _angular_core.InputSignal<number>;
985
1029
  initialItems: _angular_core.InputSignal<GridItemConfig[]>;
986
1030
  readOnly: _angular_core.InputSignalWithTransform<boolean, unknown>;
987
1031
  layoutChange: _angular_core.OutputEmitterRef<GridSerializedState>;
988
- private gridConfig;
989
1032
  registrations: _angular_core.Signal<GridComponentRegistration[]>;
990
1033
  private dimensions;
991
1034
  private itemConfigs;
@@ -993,40 +1036,53 @@ declare class GridDirective {
993
1036
  dragState: _angular_core.WritableSignal<GridDragState | null>;
994
1037
  private constraintsRegistry;
995
1038
  private resizeBaseLayout;
996
- private itemElements;
997
- private ghostElement;
998
- private rectSnapshot;
1039
+ private pendingResize;
1040
+ private lastResizeTarget;
1041
+ leavingIds: _angular_core.WritableSignal<ReadonlySet<string>>;
1042
+ isResizeActive: _angular_core.WritableSignal<boolean>;
1043
+ private animationsReady;
1044
+ private isContainerResizing;
999
1045
  containerWidth: _angular_core.Signal<number>;
1046
+ isReady: _angular_core.Signal<boolean>;
1047
+ animationsEnabled: _angular_core.Signal<boolean>;
1000
1048
  activeBreakpoint: _angular_core.Signal<string>;
1001
1049
  activeColumns: _angular_core.Signal<number>;
1050
+ private paddings;
1051
+ geometry: _angular_core.Signal<_ethlete_components.GridGeometry>;
1002
1052
  items: _angular_core.Signal<GridItemConfig[]>;
1003
1053
  baseLayout: _angular_core.Signal<GridLayoutEntry[]>;
1004
1054
  layout: _angular_core.Signal<GridLayoutEntry[]>;
1055
+ containerHeightPx: _angular_core.Signal<number>;
1056
+ protected hostHeight: _angular_core.Signal<number | null>;
1057
+ protected containerTransition: _angular_core.Signal<"none" | "height var(--et-grid-anim-duration, 250ms) cubic-bezier(0.2, 0, 0, 1)">;
1005
1058
  ghostPosition: _angular_core.Signal<GridItemPosition | null>;
1006
1059
  constructor();
1060
+ getContainerOrigin(): {
1061
+ left: number;
1062
+ top: number;
1063
+ };
1007
1064
  registerConstraints(id: string, constraints: GridItemConstraints): void;
1008
- registerItem(id: string, options: {
1009
- el: HTMLElement;
1010
- constraints: GridItemConstraints;
1011
- }): void;
1012
- unregisterItem(id: string): void;
1013
- setGhostElement(el: HTMLElement | null): void;
1065
+ unregisterConstraints(id: string): void;
1014
1066
  getConstraints(id: string): GridItemConstraints;
1015
- snapshotRects(): void;
1016
- animateLayoutTransition(options?: {
1017
- excludeIds?: Set<string>;
1018
- scaleIds?: Set<string>;
1067
+ beginDrag(itemId: string): GridItemPosition | null;
1068
+ updateDragTarget(cell: {
1069
+ col: number;
1070
+ row: number;
1019
1071
  }): void;
1020
- beginDrag(itemId: string): void;
1021
- updateDragTarget(targetPosition: GridItemPosition): void;
1022
- commitDrag(): void;
1072
+ commitDrag(): GridItemPosition | null;
1073
+ cancelDrag(): void;
1074
+ beginResize(itemId: string): GridItemPosition | null;
1075
+ updateResize(itemId: string, target: GridItemPosition): void;
1076
+ commitResize(): GridItemPosition | null;
1077
+ cancelResize(): void;
1078
+ /** One-shot resize (keyboard / programmatic): begin + update + commit in a single call. */
1079
+ resizeItem(options: ResizeItemOptions): void;
1023
1080
  addItem(type: string, data: unknown): void;
1024
1081
  removeItem(id: string): void;
1025
1082
  moveItem(id: string, newPosition: GridItemPosition): void;
1026
- resizeItem(options: ResizeItemOptions): void;
1027
- commitResize(): void;
1028
1083
  getSerializedState(): GridSerializedState;
1029
1084
  restoreState(state: GridSerializedState): void;
1085
+ private finalizeRemove;
1030
1086
  private placeItem;
1031
1087
  private shrinkNeighbors;
1032
1088
  /** Compact all visited breakpoints (layoutOverrides entries) after an item is removed. */
@@ -1038,8 +1094,240 @@ declare class GridDirective {
1038
1094
  static ɵdir: _angular_core.ɵɵDirectiveDeclaration<GridDirective, "[etGrid]", ["etGrid"], { "breakpoints": { "alias": "breakpoints"; "required": false; "isSignal": true; }; "rowHeight": { "alias": "rowHeight"; "required": false; "isSignal": true; }; "gap": { "alias": "gap"; "required": false; "isSignal": true; }; "initialItems": { "alias": "initialItems"; "required": false; "isSignal": true; }; "readOnly": { "alias": "readOnly"; "required": false; "isSignal": true; }; }, { "layoutChange": "layoutChange"; }, never, never, true, never>;
1039
1095
  }
1040
1096
 
1097
+ type AutoScrollPointer = {
1098
+ clientX: number;
1099
+ clientY: number;
1100
+ };
1101
+ type AutoScroller = {
1102
+ /** Begin the edge-proximity loop. No-op if already running. */
1103
+ start: (pointer: AutoScrollPointer) => void;
1104
+ /** Feed the latest pointer position. */
1105
+ update: (pointer: AutoScrollPointer) => void;
1106
+ stop: () => void;
1107
+ };
1108
+ declare const findScrollableAncestor: (start: Element | null) => HTMLElement | null;
1109
+ declare const createAutoScroller: (options: {
1110
+ document: Document;
1111
+ getScrollElement: () => HTMLElement | null;
1112
+ threshold?: number;
1113
+ maxSpeed?: number;
1114
+ }) => AutoScroller;
1115
+
1116
+ /** A rectangle in container-relative pixels (x/y measured from the container's padding box). */
1117
+ type PixelRect = {
1118
+ x: number;
1119
+ y: number;
1120
+ width: number;
1121
+ height: number;
1122
+ };
1123
+ type GridGeometry = {
1124
+ /** Width available for columns (container client width minus horizontal padding). */
1125
+ contentWidth: number;
1126
+ columns: number;
1127
+ gap: number;
1128
+ rowHeight: number;
1129
+ cellWidth: number;
1130
+ /** Horizontal distance between the left edges of two adjacent columns. */
1131
+ strideX: number;
1132
+ /** Vertical distance between the top edges of two adjacent rows. */
1133
+ strideY: number;
1134
+ /** Container padding-left - the x of column 0. */
1135
+ originX: number;
1136
+ /** Container padding-top - the y of row 0. */
1137
+ originY: number;
1138
+ };
1139
+ /**
1140
+ * Effective span bounds for a resize gesture. Grid bounds and item constraints are
1141
+ * unified in span units per edge, so the clamped pixel rect and the snapped span
1142
+ * are always derived from the same limits and can never disagree.
1143
+ */
1144
+ type ResizeSpanBounds = {
1145
+ minColSpan: number;
1146
+ maxColSpan: number;
1147
+ minRowSpan: number;
1148
+ maxRowSpan: number;
1149
+ };
1150
+ declare const computeGeometry: (options: {
1151
+ contentWidth: number;
1152
+ columns: number;
1153
+ gap: number;
1154
+ rowHeight: number;
1155
+ originX?: number;
1156
+ originY?: number;
1157
+ }) => GridGeometry;
1158
+ declare const spanWidth: (span: number, geometry: GridGeometry) => number;
1159
+ declare const spanHeight: (span: number, geometry: GridGeometry) => number;
1160
+ declare const positionToPixelRect: (position: GridItemPosition, geometry: GridGeometry) => PixelRect;
1161
+ /** Pixel height of the given number of rows (content only, no container padding). */
1162
+ declare const rowsToPixelHeight: (rows: number, geometry: GridGeometry) => number;
1163
+ declare const pixelRectsEqual: (a: PixelRect | null, b: PixelRect | null) => boolean;
1164
+ declare const positionsEqual: (a: GridItemPosition | null, b: GridItemPosition | null) => boolean;
1165
+ declare const SNAP_HYSTERESIS = 0.1;
1166
+ /**
1167
+ * Rounds a raw cell-unit value to the nearest integer with a hysteresis margin
1168
+ * relative to the last snapped value: the rounding boundary is shifted by
1169
+ * SNAP_HYSTERESIS against the direction of travel, so a pointer jittering exactly
1170
+ * on a cell midpoint cannot flap the snap back and forth (each flap would
1171
+ * re-trigger a full neighbour reflow).
1172
+ */
1173
+ declare const hysteresisRound: (raw: number, last: number | null) => number;
1174
+ declare const resizeSpanBounds: (options: {
1175
+ edge: ResizeEdge;
1176
+ start: GridItemPosition;
1177
+ constraints: GridItemConstraints;
1178
+ columns: number;
1179
+ }) => ResizeSpanBounds;
1180
+ declare const clampResizeRect: (options: {
1181
+ edge: ResizeEdge;
1182
+ dx: number;
1183
+ dy: number;
1184
+ startRect: PixelRect;
1185
+ bounds: ResizeSpanBounds;
1186
+ geometry: GridGeometry;
1187
+ }) => PixelRect;
1188
+ declare const snapResizeSpan: (options: {
1189
+ edge: ResizeEdge;
1190
+ rect: PixelRect;
1191
+ start: GridItemPosition;
1192
+ bounds: ResizeSpanBounds;
1193
+ geometry: GridGeometry;
1194
+ lastSnap: GridItemPosition | null;
1195
+ }) => GridItemPosition;
1196
+ declare const projectDragCell: (options: {
1197
+ float: {
1198
+ x: number;
1199
+ y: number;
1200
+ };
1201
+ colSpan: number;
1202
+ geometry: GridGeometry;
1203
+ lastTarget: {
1204
+ col: number;
1205
+ row: number;
1206
+ } | null;
1207
+ }) => {
1208
+ col: number;
1209
+ row: number;
1210
+ };
1211
+
1212
+ type FindCollisionOptions = {
1213
+ entries: GridLayoutEntry[];
1214
+ position: GridItemPosition;
1215
+ excludeId?: string;
1216
+ };
1217
+ type AutoPlaceOptions = {
1218
+ entries: GridLayoutEntry[];
1219
+ colSpan: number;
1220
+ rowSpan: number;
1221
+ columns: number;
1222
+ };
1223
+ type ClampPositionOptions = {
1224
+ position: GridItemPosition;
1225
+ constraints: GridItemConstraints;
1226
+ columns: number;
1227
+ };
1228
+ type ResolveCollisionsOptions = {
1229
+ entries: GridLayoutEntry[];
1230
+ movedId: string;
1231
+ columns: number;
1232
+ originPosition?: GridItemPosition;
1233
+ rowFloors?: RowFloors;
1234
+ };
1235
+ /**
1236
+ * Per-item lower bound (in rows) for the upward compaction pass. An item with a
1237
+ * floor is never pulled above it — used during live resize gestures to keep
1238
+ * unrelated items from collapsing into freshly vacated space while the pointer
1239
+ * is still down. Items without an entry compact all the way up (floor 0).
1240
+ */
1241
+ type RowFloors = ReadonlyMap<string, number>;
1242
+ type CompactLayoutOptions = {
1243
+ entries: GridLayoutEntry[];
1244
+ columns: number;
1245
+ rowFloors?: RowFloors;
1246
+ };
1247
+ /**
1248
+ * Checks whether two grid items overlap.
1249
+ */
1250
+ declare const itemsCollide: (a: GridItemPosition, b: GridItemPosition) => boolean;
1251
+ /**
1252
+ * Returns the first item that collides with the given position, or undefined if none.
1253
+ */
1254
+ declare const findCollision: (options: FindCollisionOptions) => GridLayoutEntry | undefined;
1255
+ /**
1256
+ * Compacts the layout vertically (moves items up as far as possible without collision).
1257
+ *
1258
+ * Also acts as a self-healing normaliser: positions that overflow the grid horizontally
1259
+ * (e.g. stale data from a wider breakpoint clamped into a narrower one — a colSpan of 12
1260
+ * or a col of 8 in a 6-column grid) are first clamped back into bounds, then any items
1261
+ * left overlapping are pushed down before the upward compaction runs. This guarantees the
1262
+ * returned layout is always in-bounds and overlap-free regardless of the input — clamping
1263
+ * a column alone is not enough, because it can drop an item on top of an existing one.
1264
+ */
1265
+ declare const compactLayout: (options: CompactLayoutOptions) => GridLayoutEntry[];
1266
+ /**
1267
+ * Finds the first available position for an item with the given span in a grid.
1268
+ * Uses top-left gravity: scans row by row, column by column.
1269
+ */
1270
+ declare const autoPlace: (options: AutoPlaceOptions) => GridItemPosition;
1271
+ /**
1272
+ * Validates and clamps a position to respect grid boundaries and item constraints.
1273
+ */
1274
+ declare const clampPosition: (options: ClampPositionOptions) => {
1275
+ col: number;
1276
+ row: number;
1277
+ colSpan: number;
1278
+ rowSpan: number;
1279
+ };
1280
+ /**
1281
+ * Resolves collisions by pushing items down when a moved/resized item overlaps others.
1282
+ * If exactly one item of the same size collides, they swap positions instead.
1283
+ * Cascades: if pushed items collide with others, those are pushed down too.
1284
+ */
1285
+ declare const resolveCollisions: (options: ResolveCollisionsOptions) => GridLayoutEntry[];
1286
+ /**
1287
+ * Computes the total number of rows occupied by the layout.
1288
+ */
1289
+ declare const computeGridHeight: (entries: GridLayoutEntry[]) => number;
1290
+
1291
+ type MapLayoutOptions = {
1292
+ entries: GridLayoutEntry[];
1293
+ fromColumns: number;
1294
+ toColumns: number;
1295
+ };
1296
+ /**
1297
+ * Resolves the active breakpoint name based on the container width.
1298
+ * Breakpoints are sorted by minWidth descending — the first one whose minWidth is <= containerWidth wins.
1299
+ */
1300
+ declare const resolveBreakpoint: (breakpoints: GridBreakpointConfig[], containerWidth: number) => GridBreakpointName;
1301
+ /**
1302
+ * Auto-generates a layout for a smaller breakpoint from a larger one.
1303
+ * Items are re-flowed into fewer columns, maintaining their relative order.
1304
+ */
1305
+ declare const mapLayoutToBreakpoint: (options: MapLayoutOptions) => GridLayoutEntry[];
1306
+ declare const DEFAULT_BREAKPOINTS: GridBreakpointConfig[];
1307
+
1308
+ type SerializeOptions = {
1309
+ items: GridItemConfig[];
1310
+ breakpoints: GridBreakpointConfig[];
1311
+ rowHeight: number;
1312
+ };
1313
+ /**
1314
+ * Serializes the current grid state into a JSON-compatible object suitable for DB storage.
1315
+ */
1316
+ declare const serializeGridLayout: (options: SerializeOptions) => GridSerializedState;
1317
+ /**
1318
+ * Deserializes a stored grid state back into working configuration.
1319
+ * Returns breakpoint configs and item configs.
1320
+ */
1321
+ declare const deserializeGridLayout: (state: GridSerializedState, breakpointMinWidths: Record<string, number>) => {
1322
+ breakpoints: GridBreakpointConfig[];
1323
+ items: GridItemConfig[];
1324
+ rowHeight: number;
1325
+ };
1326
+
1041
1327
  declare class GridItemDirective {
1042
1328
  private grid;
1329
+ private injector;
1330
+ private destroyRef;
1043
1331
  hostElement: ElementRef<HTMLElement>;
1044
1332
  itemId: _angular_core.InputSignal<string>;
1045
1333
  minColSpan: _angular_core.InputSignalWithTransform<number, unknown>;
@@ -1047,16 +1335,26 @@ declare class GridItemDirective {
1047
1335
  minRowSpan: _angular_core.InputSignalWithTransform<number, unknown>;
1048
1336
  maxRowSpan: _angular_core.InputSignalWithTransform<number, unknown>;
1049
1337
  isBeingDragged: _angular_core.Signal<boolean>;
1050
- private frozenPosition;
1051
1338
  currentPosition: _angular_core.Signal<_ethlete_components.GridItemPosition | null>;
1052
- renderPosition: _angular_core.Signal<_ethlete_components.GridItemPosition | null>;
1053
- currentCol: _angular_core.Signal<number>;
1054
- currentRow: _angular_core.Signal<number>;
1055
- currentColSpan: _angular_core.Signal<number>;
1056
- currentRowSpan: _angular_core.Signal<number>;
1057
- protected gridColumn: _angular_core.Signal<string>;
1058
- protected gridRow: _angular_core.Signal<string>;
1339
+ /** The layout-derived target rect in container-relative pixels. */
1340
+ slotRect: _angular_core.Signal<PixelRect | null>;
1341
+ private renderModeSignal;
1342
+ private liveRect;
1343
+ private isSettlingSignal;
1344
+ private enteringSignal;
1345
+ renderMode: _angular_core.Signal<"layout" | "direct">;
1346
+ isSettling: _angular_core.Signal<boolean>;
1347
+ protected entering: _angular_core.Signal<boolean>;
1348
+ protected leaving: _angular_core.Signal<boolean>;
1349
+ /** The rect currently bound to the host: pointer-driven while direct-controlled, the slot otherwise. */
1350
+ renderedRect: _angular_core.Signal<PixelRect | null>;
1351
+ protected translateStyle: _angular_core.Signal<string | null>;
1352
+ protected transitionStyle: _angular_core.Signal<"none" | "translate var(--et-grid-anim-duration, 250ms) cubic-bezier(0.2, 0, 0, 1), width var(--et-grid-anim-duration, 250ms) cubic-bezier(0.2, 0, 0, 1), height var(--et-grid-anim-duration, 250ms) cubic-bezier(0.2, 0, 0, 1), scale 200ms cubic-bezier(0.2, 0, 0, 1), opacity 200ms cubic-bezier(0.2, 0, 0, 1)">;
1353
+ private settleListener;
1059
1354
  constructor();
1355
+ startDirectControl(): void;
1356
+ updateDirectRect(rect: PixelRect): void;
1357
+ stopDirectControl(): void;
1060
1358
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<GridItemDirective, never>;
1061
1359
  static ɵdir: _angular_core.ɵɵDirectiveDeclaration<GridItemDirective, "[etGridItem]", ["etGridItem"], { "itemId": { "alias": "itemId"; "required": true; "isSignal": true; }; "minColSpan": { "alias": "minColSpan"; "required": false; "isSignal": true; }; "maxColSpan": { "alias": "maxColSpan"; "required": false; "isSignal": true; }; "minRowSpan": { "alias": "minRowSpan"; "required": false; "isSignal": true; }; "maxRowSpan": { "alias": "maxRowSpan"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
1062
1360
  }
@@ -1064,16 +1362,27 @@ declare class GridItemDirective {
1064
1362
  declare class GridDragDirective {
1065
1363
  protected grid: _ethlete_components.GridDirective;
1066
1364
  private gridItem;
1067
- private injector;
1068
1365
  private elementRef;
1366
+ private destroyRef;
1367
+ private document;
1069
1368
  dragHandle: DragHandleDirective;
1070
- private renderer;
1071
- private dragStartClient;
1072
- private dragPixelOffset;
1073
- protected dragTransform: _angular_core.Signal<string>;
1369
+ private origin;
1370
+ private startBreakpoint;
1371
+ private grabOffset;
1372
+ private containerOrigin;
1373
+ private lastPointer;
1374
+ private lastTarget;
1375
+ private gestureListeners;
1376
+ private autoScroller;
1074
1377
  constructor();
1075
- private applyFixed;
1076
- private releaseFixed;
1378
+ private startDrag;
1379
+ private trackDragMove;
1380
+ private applyPointer;
1381
+ private settleDrag;
1382
+ private cancelDrag;
1383
+ private finishGesture;
1384
+ private attachGestureListeners;
1385
+ private detachGestureListeners;
1077
1386
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<GridDragDirective, never>;
1078
1387
  static ɵdir: _angular_core.ɵɵDirectiveDeclaration<GridDragDirective, "[etGridDrag]", never, {}, {}, never, never, true, [{ directive: typeof _ethlete_core.DragHandleDirective; inputs: {}; outputs: { "dragStarted": "dragStarted"; "dragMoved": "dragMoved"; "dragEnded": "dragEnded"; }; }]>;
1079
1388
  }
@@ -1081,12 +1390,27 @@ declare class GridDragDirective {
1081
1390
  declare class GridResizeDirective {
1082
1391
  private grid;
1083
1392
  private gridItem;
1393
+ private destroyRef;
1394
+ private document;
1084
1395
  isResizing: _angular_core.WritableSignal<boolean>;
1085
1396
  resizeEdges: _angular_core.Signal<ResizeEdge[]>;
1086
- private resizeStartPos;
1397
+ private start;
1398
+ private startBreakpoint;
1399
+ private lastSnap;
1400
+ private lastEvent;
1401
+ private startContainerOrigin;
1402
+ private containerOrigin;
1403
+ private gestureListeners;
1404
+ private autoScroller;
1405
+ constructor();
1087
1406
  beginResize(): void;
1088
1407
  updateResize(event: ResizeMoveEvent): void;
1089
1408
  finishResize(): void;
1409
+ cancelResize(): void;
1410
+ private applyResize;
1411
+ private finishGesture;
1412
+ private attachGestureListeners;
1413
+ private detachGestureListeners;
1090
1414
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<GridResizeDirective, never>;
1091
1415
  static ɵdir: _angular_core.ɵɵDirectiveDeclaration<GridResizeDirective, "[etGridResize]", never, {}, {}, never, never, true, never>;
1092
1416
  }
@@ -1097,12 +1421,9 @@ type GridConfig = {
1097
1421
  registrations: GridComponentRegistration[];
1098
1422
  interactiveAriaLabel: string;
1099
1423
  readonlyAriaLabel: string;
1100
- dragHandleAriaLabel: string;
1424
+ removeActionAriaLabel: string;
1101
1425
  transformer: (text: string, locale: string) => string;
1102
- /** Replaces the default drag handle for all registered items. Receives `data` and `itemId` as inputs. */
1103
- dragHandleComponent?: Type<unknown>;
1104
- /** Replaces the default ✕ button for all registered items. Receives `data` and `itemId` as inputs. */
1105
- actionsComponent?: Type<unknown>;
1426
+ actionsComponent?: GridItemActionsComponent | null;
1106
1427
  };
1107
1428
  declare const provideGridConfig: (valueOverride?: Partial<GridConfig> | undefined) => _angular_core.Provider[];
1108
1429
  declare const injectGridConfig: {
@@ -1135,21 +1456,16 @@ declare const fromGridPosition: (pos: GridItemPosition) => {
1135
1456
 
1136
1457
  declare class GridComponent {
1137
1458
  grid: GridDirective;
1138
- private ghostRef;
1139
1459
  private gridConfig;
1140
1460
  private locale;
1141
- protected isReadOnly: _angular_core.Signal<boolean>;
1142
- protected dragHandleComponent: _angular_core.Signal<_angular_core.Type<unknown> | undefined>;
1143
- protected actionsComponent: _angular_core.Signal<_angular_core.Type<unknown> | undefined>;
1461
+ protected actionsComponent: _angular_core.Signal<_ethlete_components.GridItemActionsComponent | null>;
1144
1462
  protected registeredItems: _angular_core.Signal<{
1145
1463
  item: _ethlete_components.GridItemConfig;
1146
1464
  reg: _ethlete_components.GridComponentRegistration;
1147
1465
  }[]>;
1148
1466
  protected ariaLabel: _angular_core.Signal<string>;
1149
- protected gridColumns: _angular_core.Signal<number>;
1150
- protected gridGap: _angular_core.Signal<string>;
1151
- protected gridRowHeight: _angular_core.Signal<string>;
1152
- constructor();
1467
+ protected ghostRect: _angular_core.Signal<_ethlete_components.PixelRect | null>;
1468
+ protected ghostTransition: _angular_core.Signal<"none" | "translate 200ms cubic-bezier(0.2, 0, 0, 1), width 200ms cubic-bezier(0.2, 0, 0, 1), height 200ms cubic-bezier(0.2, 0, 0, 1)">;
1153
1469
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<GridComponent, never>;
1154
1470
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<GridComponent, "et-grid, [et-grid]", never, {}, {}, never, ["*"], true, [{ directive: typeof GridDirective; inputs: { "breakpoints": "breakpoints"; "rowHeight": "rowHeight"; "gap": "gap"; "initialItems": "initialItems"; "readOnly": "readOnly"; }; outputs: { "layoutChange": "layoutChange"; }; }]>;
1155
1471
  }
@@ -1161,18 +1477,33 @@ declare class GridItemComponent {
1161
1477
  private parentSurfaceProvider;
1162
1478
  gridDrag: GridDragDirective;
1163
1479
  gridResize: GridResizeDirective;
1480
+ private surfaceThemes;
1164
1481
  ariaLabel: _angular_core.InputSignal<string>;
1165
1482
  removed: _angular_core.OutputEmitterRef<void>;
1166
- private surfaceThemes;
1167
- private gridConfig;
1168
- private locale;
1169
1483
  protected isReadOnly: _angular_core.Signal<boolean>;
1170
- protected dragHandleAriaLabel: _angular_core.Signal<string>;
1171
1484
  private resolvedSurface;
1172
1485
  constructor();
1486
+ protected blockPointerDownWhenReadOnly(event: PointerEvent): void;
1173
1487
  applyKeyboardShortcut(event: KeyboardEvent): void;
1174
1488
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<GridItemComponent, never>;
1175
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<GridItemComponent, "et-grid-item, [et-grid-item]", never, { "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; }, { "removed": "removed"; }, never, ["[etGridItemDragHandle]", "*", "[etGridItemAction]"], true, [{ directive: typeof GridItemDirective; inputs: { "itemId": "itemId"; "minColSpan": "minColSpan"; "maxColSpan": "maxColSpan"; "minRowSpan": "minRowSpan"; "maxRowSpan": "maxRowSpan"; }; outputs: {}; }, { directive: typeof GridDragDirective; inputs: {}; outputs: {}; }, { directive: typeof GridResizeDirective; inputs: {}; outputs: {}; }, { directive: typeof _ethlete_core.ProvideSurfaceDirective; inputs: {}; outputs: {}; }]>;
1489
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<GridItemComponent, "et-grid-item, [et-grid-item]", never, { "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; }, { "removed": "removed"; }, never, ["*", "[etGridItemAction]"], true, [{ directive: typeof GridItemDirective; inputs: { "itemId": "itemId"; "minColSpan": "minColSpan"; "maxColSpan": "maxColSpan"; "minRowSpan": "minRowSpan"; "maxRowSpan": "maxRowSpan"; }; outputs: {}; }, { directive: typeof GridDragDirective; inputs: {}; outputs: {}; }, { directive: typeof GridResizeDirective; inputs: {}; outputs: {}; }, { directive: typeof _ethlete_core.ProvideSurfaceDirective; inputs: {}; outputs: {}; }]>;
1490
+ }
1491
+
1492
+ declare class GridItemToolbarComponent {
1493
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<GridItemToolbarComponent, never>;
1494
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<GridItemToolbarComponent, "et-grid-item-toolbar, [et-grid-item-toolbar]", never, {}, {}, never, ["*"], true, never>;
1495
+ }
1496
+
1497
+ declare class GridItemDefaultActionsComponent {
1498
+ private grid;
1499
+ private gridConfig;
1500
+ private locale;
1501
+ itemId: _angular_core.InputSignal<string>;
1502
+ data: _angular_core.InputSignal<unknown>;
1503
+ protected removeAriaLabel: _angular_core.Signal<string>;
1504
+ protected remove(): void;
1505
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<GridItemDefaultActionsComponent, never>;
1506
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<GridItemDefaultActionsComponent, "et-grid-item-default-actions", never, { "itemId": { "alias": "itemId"; "required": true; "isSignal": true; }; "data": { "alias": "data"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
1176
1507
  }
1177
1508
 
1178
1509
  /**
@@ -1225,12 +1556,49 @@ declare const GRID_ERROR_CODES: {
1225
1556
  readonly INVALID_LAYOUT_STATE: 1903;
1226
1557
  };
1227
1558
 
1228
- declare const GridImports: readonly [typeof GridComponent, typeof GridItemComponent, typeof GridDebugComponent];
1559
+ declare const GridImports: readonly [typeof GridComponent, typeof GridItemComponent, typeof GridItemToolbarComponent, typeof GridItemDefaultActionsComponent, typeof GridDebugComponent];
1229
1560
 
1230
1561
  type IconDefinition = {
1231
1562
  name: string;
1563
+ /**
1564
+ * Optional style variant (e.g. `'solid'`, `'light'`, `'regular'`). Lets the same icon
1565
+ * `name` exist in several styles without encoding the style into the name. Icons
1566
+ * registered without a variant are matched by their bare name.
1567
+ */
1568
+ variant?: string;
1232
1569
  data: string;
1233
1570
  };
1571
+ /**
1572
+ * Augmentable registry for the literal set of icon names an app uses. Empty by default,
1573
+ * which keeps `etIcon` typed as plain `string`. The `@ethlete/components:icons` generator
1574
+ * writes an augmentation for this interface, or you can augment it manually:
1575
+ *
1576
+ * ```ts
1577
+ * declare module '@ethlete/components' {
1578
+ * interface EthleteIconNameRegistry {
1579
+ * name: 'shield' | 'plus';
1580
+ * }
1581
+ * }
1582
+ * ```
1583
+ */
1584
+ interface EthleteIconNameRegistry {
1585
+ }
1586
+ /**
1587
+ * Augmentable registry for the literal set of icon variants an app uses. Empty by default,
1588
+ * which keeps the `variant` input typed as plain `string`. See {@link EthleteIconNameRegistry}.
1589
+ */
1590
+ interface EthleteIconVariantRegistry {
1591
+ }
1592
+ type RegisteredIconName = EthleteIconNameRegistry extends {
1593
+ name: infer N extends string;
1594
+ } ? N : string;
1595
+ type RegisteredIconVariant = EthleteIconVariantRegistry extends {
1596
+ name: infer V extends string;
1597
+ } ? V : string;
1598
+ /** Variant the {@link IconDirective} falls back to when `etIcon` is used without an explicit `variant`. */
1599
+ declare const DEFAULT_ICON_VARIANT = "solid";
1600
+ /** Composite registry key for an icon `name` plus an optional `variant`. */
1601
+ declare const iconRegistryKey: (name: string, variant?: string | null) => string;
1234
1602
  declare const ICONS_TOKEN: InjectionToken<Record<string, IconDefinition>>;
1235
1603
  declare const provideIcons: (...icons: IconDefinition[]) => {
1236
1604
  provide: InjectionToken<Record<string, IconDefinition>>;
@@ -1253,6 +1621,12 @@ declare const FOCUS_FRAME_ICON: IconDefinition;
1253
1621
 
1254
1622
  declare const GRID_2X2_ICON: IconDefinition;
1255
1623
 
1624
+ declare const HEADING_1_ICON: IconDefinition;
1625
+
1626
+ declare const HEADING_2_ICON: IconDefinition;
1627
+
1628
+ declare const HEADING_3_ICON: IconDefinition;
1629
+
1256
1630
  declare const ICON_ERROR_CODES: {
1257
1631
  readonly NO_ICONS_PROVIDED: 1800;
1258
1632
  readonly ICON_NOT_FOUND: 1801;
@@ -1267,13 +1641,15 @@ declare const ICON_DIRECTIVE_TOKEN: InjectionToken<IconDirective>;
1267
1641
  declare class IconDirective {
1268
1642
  private icons;
1269
1643
  private sanitizer;
1270
- iconNameToUse: _angular_core.InputSignal<string>;
1644
+ iconNameToUse: InputSignal<RegisteredIconName>;
1645
+ variant: InputSignal<RegisteredIconVariant | undefined>;
1271
1646
  allowHardcodedColor: _angular_core.InputSignalWithTransform<boolean, unknown>;
1647
+ private resolvedIcon;
1272
1648
  iconSrc: _angular_core.Signal<_angular_platform_browser.SafeHtml | null>;
1273
1649
  hostClasses: _angular_core.Signal<string>;
1274
1650
  constructor();
1275
1651
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<IconDirective, never>;
1276
- static ɵdir: _angular_core.ɵɵDirectiveDeclaration<IconDirective, "[etIcon]", never, { "iconNameToUse": { "alias": "etIcon"; "required": true; "isSignal": true; }; "allowHardcodedColor": { "alias": "allowHardcodedColor"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
1652
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<IconDirective, "[etIcon]", never, { "iconNameToUse": { "alias": "etIcon"; "required": true; "isSignal": true; }; "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "allowHardcodedColor": { "alias": "allowHardcodedColor"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
1277
1653
  }
1278
1654
 
1279
1655
  declare const ITALIC_ICON: IconDefinition;
@@ -1335,45 +1711,752 @@ declare class SpinnerComponent {
1335
1711
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<SpinnerComponent, "et-spinner", never, { "diameter": { "alias": "diameter"; "required": false; "isSignal": true; }; "strokeWidth": { "alias": "strokeWidth"; "required": false; "isSignal": true; }; "track": { "alias": "track"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; "determinate": { "alias": "determinate"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
1336
1712
  }
1337
1713
 
1338
- declare class NotificationActionDirective {
1339
- private notification;
1340
- constructor();
1341
- runAction(): void;
1342
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<NotificationActionDirective, never>;
1343
- static ɵdir: _angular_core.ɵɵDirectiveDeclaration<NotificationActionDirective, "[etNotificationAction]", ["etNotificationAction"], {}, {}, never, never, true, never>;
1344
- }
1345
-
1346
- declare class NotificationDismissDirective {
1347
- private notification;
1348
- constructor();
1349
- dismiss(): void;
1350
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<NotificationDismissDirective, never>;
1351
- static ɵdir: _angular_core.ɵɵDirectiveDeclaration<NotificationDismissDirective, "[etNotificationDismiss]", ["etNotificationDismiss"], {}, {}, never, never, true, never>;
1352
- }
1353
-
1354
- declare class NotificationItemDirective {
1355
- private elementRef;
1356
- private stack;
1357
- ref: _angular_core.InputSignal<{
1358
- id: string;
1359
- entry: _angular_core.Signal<_ethlete_components.NotificationEntry>;
1360
- update: (partial: Partial<_ethlete_components.NotificationConfig>) => void;
1361
- dismiss: () => void;
1362
- pauseTimer: () => void;
1363
- resumeTimer: () => void;
1364
- afterDismissed: () => rxjs.Observable<void>;
1365
- markDismissed: () => void;
1366
- }>;
1714
+ declare class MenuContextTriggerDirective {
1715
+ private menu;
1716
+ private document;
1717
+ elementRef: ElementRef<HTMLElement>;
1718
+ private destroyRef;
1719
+ private repositionSubscription;
1367
1720
  constructor();
1368
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<NotificationItemDirective, never>;
1369
- static ɵdir: _angular_core.ɵɵDirectiveDeclaration<NotificationItemDirective, "[etNotificationItem]", never, { "ref": { "alias": "etNotificationItem"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
1370
- }
1371
-
1372
- type RegisteredNotificationItem = {
1721
+ isOpen(): boolean;
1722
+ protected handleContextMenu(event: MouseEvent): void;
1723
+ private attachRepositionListener;
1724
+ private detachRepositionListener;
1725
+ private isEventOnZone;
1726
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<MenuContextTriggerDirective, never>;
1727
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<MenuContextTriggerDirective, "[etMenuContextTrigger]", ["etMenuContextTrigger"], {}, {}, never, never, true, never>;
1728
+ }
1729
+
1730
+ type OverlayStrategyContext = {
1731
+ overlayRef: OverlayRef<object, unknown>;
1732
+ runtimeRef: OverlayRuntimeRef<object, unknown>;
1733
+ /** The mounted container component's host element (the runtime pane element). */
1734
+ containerEl: HTMLElement;
1735
+ /** The runtime host element wrapping backdrop and pane. */
1736
+ hostEl: HTMLElement;
1737
+ backdropEl: HTMLElement | null;
1738
+ /** The container's animated lifecycle, driving enter/leave transitions. */
1739
+ lifecycle: AnimatedLifecycleDirective;
1740
+ config: OverlayBreakpointConfig;
1741
+ previousConfig?: OverlayBreakpointConfig;
1742
+ origin?: HTMLElement | Event;
1743
+ };
1744
+ type OverlayStrategy = {
1745
+ /** Unique identifier for the strategy */
1373
1746
  id: string;
1374
- el: HTMLElement;
1747
+ /** Configuration for the overlay when this strategy is applied */
1748
+ config: OverlayBreakpointConfig;
1749
+ /**
1750
+ * Called when the overlay transitions FROM another strategy TO this strategy.
1751
+ * Only called during breakpoint changes, not on initial open.
1752
+ * @example Fullscreen dialog → Regular dialog on viewport resize
1753
+ */
1754
+ onSwitchedTo?: (context: OverlayStrategyContext) => void;
1755
+ /**
1756
+ * Called when the overlay transitions FROM this strategy TO another strategy.
1757
+ * Only called during breakpoint changes, not on close.
1758
+ * Use this to cleanup strategy-specific state when transitioning layouts.
1759
+ * @example Regular dialog → Fullscreen dialog on viewport resize
1760
+ */
1761
+ onSwitchedAwayFrom?: (context: OverlayStrategyContext) => void;
1762
+ /**
1763
+ * Called when the overlay is first opened with this strategy.
1764
+ * Use this for initial setup and enter animations.
1765
+ * The hook is responsible for starting the enter transition (e.g. `context.lifecycle.enter()`).
1766
+ */
1767
+ onBeforeEnter?: (context: OverlayStrategyContext) => void;
1768
+ /**
1769
+ * Called after the overlay has completed its enter animation.
1770
+ */
1771
+ onAfterEnter?: (context: OverlayStrategyContext) => void;
1772
+ /**
1773
+ * Called when the overlay is about to close (beforeClosed).
1774
+ * The hook is responsible for starting the leave transition (e.g. `context.lifecycle.leave()`).
1775
+ */
1776
+ onBeforeLeave?: (context: OverlayStrategyContext) => void;
1777
+ /**
1778
+ * Called after the overlay has been closed (afterClosed).
1779
+ * Use this for final cleanup.
1780
+ */
1781
+ onAfterLeave?: (context: OverlayStrategyContext) => void;
1375
1782
  };
1376
- declare class NotificationStackDirective {
1783
+ type OverlayStrategyBreakpoint = {
1784
+ /**
1785
+ * Breakpoint to apply the strategy for. If a number is provided, it will be used as a pixel value.
1786
+ * Always uses the min-width media query.
1787
+ *
1788
+ * @default 'xs' // 0px
1789
+ */
1790
+ breakpoint?: Breakpoint | number;
1791
+ /** Overlay strategy to be applied when the breakpoint is active. */
1792
+ strategy: OverlayStrategy;
1793
+ };
1794
+ type OverlayDragToDismissConfig = {
1795
+ /** Direction in which the overlay can be dragged. */
1796
+ direction: 'to-top' | 'to-bottom' | 'to-left' | 'to-right';
1797
+ /**
1798
+ * The minimum distance in pixels that the user must swipe to dismiss the overlay.
1799
+ *
1800
+ * @default 150 // 150px
1801
+ */
1802
+ minDistanceToDismiss?: number;
1803
+ /**
1804
+ * The minimum velocity in pixels per second that the user must swipe to dismiss the overlay.
1805
+ *
1806
+ * @default 150 // 150px/s
1807
+ */
1808
+ minVelocityToDismiss?: number;
1809
+ };
1810
+ type OverlayBreakpointConfig = {
1811
+ /** Min-width of the overlay. If a number is provided, assumes pixel units. */
1812
+ minWidth?: number | string;
1813
+ /** Max-width of the overlay. If a number is provided, assumes pixel units. */
1814
+ maxWidth?: number | string;
1815
+ /** Min-height of the overlay. If a number is provided, assumes pixel units. */
1816
+ minHeight?: number | string;
1817
+ /** Max-height of the overlay. If a number is provided, assumes pixel units. */
1818
+ maxHeight?: number | string;
1819
+ /** Width of the overlay. */
1820
+ width?: number | string;
1821
+ /** Height of the overlay. */
1822
+ height?: number | string;
1823
+ /** Position strategy to be used for the overlay. */
1824
+ positionStrategy?: (origin?: HTMLElement) => OverlayRuntimePositionStrategy;
1825
+ /** Custom class for the overlay container (the runtime pane element hosting the overlay content). */
1826
+ containerClass?: string | string[];
1827
+ /** Custom class for the runtime host element wrapping backdrop and pane. */
1828
+ hostClass?: string | string[];
1829
+ /** Custom class for the backdrop. */
1830
+ backdropClass?: string | string[];
1831
+ /** Custom class for the document (`<html>` element). */
1832
+ documentClass?: string | string[];
1833
+ /** Custom class for the `<body>` element */
1834
+ bodyClass?: string | string[];
1835
+ /** Determine if and in what direction the overlay should be able to be dragged to dismiss it. */
1836
+ dragToDismiss?: OverlayDragToDismissConfig;
1837
+ /**
1838
+ * Whether a backdrop element is rendered behind the overlay. Only applied at mount time (the
1839
+ * initially matched strategy) — it cannot change during breakpoint switches. An explicit
1840
+ * `hasBackdrop` on the overlay config always wins over this strategy default.
1841
+ *
1842
+ * @default undefined // falls back to the overlay config / modal behavior
1843
+ */
1844
+ hasBackdrop?: boolean;
1845
+ /**
1846
+ * Whether the transform origin should be set using the config's `origin` property value.
1847
+ *
1848
+ * @default false
1849
+ */
1850
+ applyTransformOrigin?: boolean;
1851
+ /**
1852
+ * Renders a floating-ui-positioned arrow on the overlay container that points at the origin.
1853
+ * Only meaningful for anchored positioning. The arrow inherits the pane background; combine with
1854
+ * an `offset` so the pane leaves room for it.
1855
+ *
1856
+ * @default false
1857
+ */
1858
+ arrow?: boolean;
1859
+ };
1860
+
1861
+ type OverlayAutoFocusTarget = 'container' | 'first-heading' | 'first-tabbable';
1862
+ type OverlayRole = 'dialog' | 'alertdialog';
1863
+ type OverlayMode = 'modal' | 'non-modal';
1864
+ type OverlayConfig = {
1865
+ viewContainerRef?: ViewContainerRef;
1866
+ injector?: Injector;
1867
+ id?: string;
1868
+ /**
1869
+ * The element or event the overlay was opened from. Used as the anchor reference
1870
+ * for anchored positioning and as the transform origin for strategy animations.
1871
+ * When omitted and strategies are used, falls back to the currently focused element.
1872
+ */
1873
+ origin?: HTMLElement | Event;
1874
+ role?: OverlayRole;
1875
+ hasBackdrop?: boolean;
1876
+ disableClose?: boolean;
1877
+ /**
1878
+ * Bindings applied to the overlay component, using Angular's native binding API
1879
+ * (`inputBinding`, `outputBinding`, `twoWayBinding`).
1880
+ */
1881
+ bindings?: Binding[];
1882
+ ariaDescribedBy?: string | null;
1883
+ ariaLabelledBy?: string | null;
1884
+ ariaLabel?: string | null;
1885
+ autoFocus?: OverlayAutoFocusTarget | string | false;
1886
+ restoreFocus?: boolean;
1887
+ providers?: StaticProvider[];
1888
+ hostClass?: string | string[];
1889
+ backdropClass?: string | string[];
1890
+ panelClass?: string | string[];
1891
+ mode?: OverlayMode;
1892
+ closeOnOutsidePointer?: boolean;
1893
+ closeOnEscape?: boolean;
1894
+ /**
1895
+ * Breakpoint-driven overlay strategies (dialog, sheets, full-screen, …).
1896
+ * When set, position, sizing and classes are controlled by the active strategy.
1897
+ */
1898
+ strategies?: () => OverlayStrategyBreakpoint[];
1899
+ /**
1900
+ * Disables the default overlay animations so custom ones can be applied.
1901
+ *
1902
+ * @default false
1903
+ */
1904
+ customAnimated?: boolean;
1905
+ };
1906
+
1907
+ declare const createOverlayRef: <TComponent extends object, TResult = unknown>(config: OverlayConfig) => {
1908
+ readonly id: string;
1909
+ readonly elements: _ethlete_core.OverlayRuntimeElements | null;
1910
+ config: OverlayConfig;
1911
+ headerTemplate: _angular_core.Signal<TemplateRef<unknown> | null>;
1912
+ /** @internal Set (or clear) the active header template. */
1913
+ setHeaderTemplate: (template: TemplateRef<unknown> | null) => void;
1914
+ componentInstance: () => TComponent | null;
1915
+ close: (result?: TResult) => void;
1916
+ closeVia: (source: OverlayRuntimeCloseSource, result?: TResult) => void;
1917
+ updatePositionStrategy: (strategy: OverlayRuntimePositionStrategy) => void;
1918
+ attachComponentInstanceOverride: (getter: () => TComponent | null) => void;
1919
+ afterOpened: () => Observable<void>;
1920
+ beforeClosed: () => Observable<TResult | undefined>;
1921
+ afterClosed: () => Observable<TResult | undefined>;
1922
+ attachRuntime: (runtimeRef: OverlayRuntimeRef<TComponent, TResult>) => void;
1923
+ };
1924
+ type OverlayRef<TComponent extends object = object, TResult = unknown> = ReturnType<typeof createOverlayRef<TComponent, TResult>>;
1925
+ declare const OVERLAY_REF: InjectionToken<{
1926
+ readonly id: string;
1927
+ readonly elements: _ethlete_core.OverlayRuntimeElements | null;
1928
+ config: OverlayConfig;
1929
+ headerTemplate: _angular_core.Signal<TemplateRef<unknown> | null>;
1930
+ /** @internal Set (or clear) the active header template. */
1931
+ setHeaderTemplate: (template: TemplateRef<unknown> | null) => void;
1932
+ componentInstance: () => object | null;
1933
+ close: (result?: unknown) => void;
1934
+ closeVia: (source: OverlayRuntimeCloseSource, result?: unknown) => void;
1935
+ updatePositionStrategy: (strategy: OverlayRuntimePositionStrategy) => void;
1936
+ attachComponentInstanceOverride: (getter: () => object | null) => void;
1937
+ afterOpened: () => Observable<void>;
1938
+ beforeClosed: () => Observable<unknown>;
1939
+ afterClosed: () => Observable<unknown>;
1940
+ attachRuntime: (runtimeRef: OverlayRuntimeRef<object, unknown>) => void;
1941
+ }>;
1942
+
1943
+ declare class OverlayAnchorDirective {
1944
+ private overlay;
1945
+ private destroyRef;
1946
+ elementRef: ElementRef<HTMLElement>;
1947
+ constructor();
1948
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<OverlayAnchorDirective, never>;
1949
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<OverlayAnchorDirective, "[etOverlayAnchor]", ["etOverlayAnchor"], {}, {}, never, never, true, never>;
1950
+ }
1951
+
1952
+ declare class OverlayTriggerDirective {
1953
+ private overlay;
1954
+ private destroyRef;
1955
+ elementRef: ElementRef<HTMLElement>;
1956
+ constructor();
1957
+ toggle(): void;
1958
+ isOpen(): boolean;
1959
+ expanded(): boolean | null;
1960
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<OverlayTriggerDirective, never>;
1961
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<OverlayTriggerDirective, "[etOverlayTrigger]", ["etOverlayTrigger"], {}, {}, never, never, true, never>;
1962
+ }
1963
+
1964
+ declare class OverlayDirective {
1965
+ private destroyRef;
1966
+ private overlayManager;
1967
+ mode: _angular_core.InputSignal<OverlayMode>;
1968
+ role: _angular_core.InputSignal<OverlayRole | undefined>;
1969
+ open: _angular_core.ModelSignal<boolean>;
1970
+ disabled: _angular_core.InputSignal<boolean>;
1971
+ disableClose: _angular_core.InputSignal<boolean>;
1972
+ autoFocus: _angular_core.InputSignal<string | false | undefined>;
1973
+ restoreFocus: _angular_core.InputSignal<boolean>;
1974
+ hasBackdrop: _angular_core.InputSignal<boolean | undefined>;
1975
+ closeOnEscape: _angular_core.InputSignal<boolean>;
1976
+ closeOnOutsidePointer: _angular_core.InputSignal<boolean>;
1977
+ hostClass: _angular_core.InputSignal<string | string[] | undefined>;
1978
+ backdropClass: _angular_core.InputSignal<string | string[] | undefined>;
1979
+ panelClass: _angular_core.InputSignal<string | string[] | undefined>;
1980
+ placement: _angular_core.InputSignal<Placement>;
1981
+ fallbackPlacements: _angular_core.InputSignal<Placement[] | undefined>;
1982
+ offset: _angular_core.InputSignal<OffsetOptions | null>;
1983
+ viewportPadding: _angular_core.InputSignal<Padding | null>;
1984
+ autoResize: _angular_core.InputSignal<boolean>;
1985
+ shift: _angular_core.InputSignal<boolean>;
1986
+ autoHide: _angular_core.InputSignal<boolean>;
1987
+ autoCloseIfReferenceHidden: _angular_core.InputSignal<boolean>;
1988
+ mirrorWidth: _angular_core.InputSignal<boolean>;
1989
+ /** @internal */
1990
+ registeredAnchor: _angular_core.WritableSignal<OverlayAnchorDirective | null>;
1991
+ /** @internal */
1992
+ registeredSurface: _angular_core.WritableSignal<OverlaySurfaceDirective | null>;
1993
+ /** @internal */
1994
+ registeredTrigger: _angular_core.WritableSignal<OverlayTriggerDirective | null>;
1995
+ /** @internal */
1996
+ overlayRef: _angular_core.WritableSignal<OverlayRef<OverlayTemplateHostComponent, unknown> | null>;
1997
+ isMounted: _angular_core.Signal<boolean>;
1998
+ private originElement;
1999
+ constructor();
2000
+ show(): void;
2001
+ hide(result?: unknown): void;
2002
+ toggle(): void;
2003
+ /** @internal */
2004
+ unregisterTrigger(trigger: OverlayTriggerDirective): void;
2005
+ /** @internal */
2006
+ unregisterAnchor(anchor: OverlayAnchorDirective): void;
2007
+ /** @internal */
2008
+ unregisterSurface(surface: OverlaySurfaceDirective): void;
2009
+ private mountOverlay;
2010
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<OverlayDirective, never>;
2011
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<OverlayDirective, "[etOverlay]", ["etOverlay"], { "mode": { "alias": "mode"; "required": false; "isSignal": true; }; "role": { "alias": "role"; "required": false; "isSignal": true; }; "open": { "alias": "open"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "disableClose": { "alias": "disableClose"; "required": false; "isSignal": true; }; "autoFocus": { "alias": "autoFocus"; "required": false; "isSignal": true; }; "restoreFocus": { "alias": "restoreFocus"; "required": false; "isSignal": true; }; "hasBackdrop": { "alias": "hasBackdrop"; "required": false; "isSignal": true; }; "closeOnEscape": { "alias": "closeOnEscape"; "required": false; "isSignal": true; }; "closeOnOutsidePointer": { "alias": "closeOnOutsidePointer"; "required": false; "isSignal": true; }; "hostClass": { "alias": "hostClass"; "required": false; "isSignal": true; }; "backdropClass": { "alias": "backdropClass"; "required": false; "isSignal": true; }; "panelClass": { "alias": "panelClass"; "required": false; "isSignal": true; }; "placement": { "alias": "placement"; "required": false; "isSignal": true; }; "fallbackPlacements": { "alias": "fallbackPlacements"; "required": false; "isSignal": true; }; "offset": { "alias": "offset"; "required": false; "isSignal": true; }; "viewportPadding": { "alias": "viewportPadding"; "required": false; "isSignal": true; }; "autoResize": { "alias": "autoResize"; "required": false; "isSignal": true; }; "shift": { "alias": "shift"; "required": false; "isSignal": true; }; "autoHide": { "alias": "autoHide"; "required": false; "isSignal": true; }; "autoCloseIfReferenceHidden": { "alias": "autoCloseIfReferenceHidden"; "required": false; "isSignal": true; }; "mirrorWidth": { "alias": "mirrorWidth"; "required": false; "isSignal": true; }; }, { "open": "openChange"; }, never, never, true, never>;
2012
+ }
2013
+
2014
+ type OverlaySurfaceContext = {
2015
+ $implicit: OverlayDirective;
2016
+ overlay: OverlayDirective;
2017
+ close: (result?: unknown) => void;
2018
+ };
2019
+ declare class OverlaySurfaceDirective {
2020
+ private overlay;
2021
+ templateRef: TemplateRef<OverlaySurfaceContext>;
2022
+ private destroyRef;
2023
+ constructor();
2024
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<OverlaySurfaceDirective, never>;
2025
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<OverlaySurfaceDirective, "ng-template[etOverlaySurface]", ["etOverlaySurface"], {}, {}, never, never, true, never>;
2026
+ }
2027
+
2028
+ declare class OverlayTemplateHostComponent {
2029
+ protected template: _angular_core.InputSignal<TemplateRef<OverlaySurfaceContext>>;
2030
+ protected context: _angular_core.InputSignal<OverlaySurfaceContext>;
2031
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<OverlayTemplateHostComponent, never>;
2032
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<OverlayTemplateHostComponent, "et-overlay-template-host", never, { "template": { "alias": "template"; "required": true; "isSignal": true; }; "context": { "alias": "context"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
2033
+ }
2034
+
2035
+ declare class MenuPanelDirective {
2036
+ /** @internal */
2037
+ menu: MenuDirective | null;
2038
+ elementRef: ElementRef<HTMLElement>;
2039
+ private destroyRef;
2040
+ protected labelledBy: _angular_core.Signal<string | null>;
2041
+ protected busy: _angular_core.Signal<true | null>;
2042
+ constructor();
2043
+ /** @internal */
2044
+ focus(): void;
2045
+ protected handleKeydown(event: KeyboardEvent): void;
2046
+ protected handlePointerEnter(event: PointerEvent): void;
2047
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<MenuPanelDirective, never>;
2048
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<MenuPanelDirective, "[etMenuPanel]", ["etMenuPanel"], {}, {}, never, never, true, never>;
2049
+ }
2050
+
2051
+ declare class MenuSearchDirective {
2052
+ private menu;
2053
+ private document;
2054
+ elementRef: ElementRef<HTMLInputElement>;
2055
+ private destroyRef;
2056
+ query: _angular_core.ModelSignal<string>;
2057
+ loading: _angular_core.InputSignalWithTransform<boolean, unknown>;
2058
+ error: _angular_core.InputSignal<string | null>;
2059
+ /** @internal Id of the element rendering the error message, set by the component displaying it. */
2060
+ errorElementId: _angular_core.WritableSignal<string | null>;
2061
+ constructor();
2062
+ /** @internal */
2063
+ isFocused(): boolean;
2064
+ /** @internal */
2065
+ focus(options?: {
2066
+ select?: boolean;
2067
+ }): void;
2068
+ /** @internal Focuses the input and appends a character typed while an item had focus. */
2069
+ appendCharacter(character: string): void;
2070
+ clear(): void;
2071
+ protected handleInput(): void;
2072
+ protected handleKeydown(event: KeyboardEvent): void;
2073
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<MenuSearchDirective, never>;
2074
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<MenuSearchDirective, "input[etMenuSearch]", ["etMenuSearch"], { "query": { "alias": "query"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "error": { "alias": "error"; "required": false; "isSignal": true; }; }, { "query": "queryChange"; }, never, never, true, never>;
2075
+ }
2076
+
2077
+ type MenuSurfaceContext = {
2078
+ $implicit: MenuDirective;
2079
+ menu: MenuDirective;
2080
+ close: (result?: unknown) => void;
2081
+ };
2082
+ declare class MenuSurfaceDirective {
2083
+ private menu;
2084
+ templateRef: TemplateRef<MenuSurfaceContext>;
2085
+ private destroyRef;
2086
+ constructor();
2087
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<MenuSurfaceDirective, never>;
2088
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<MenuSurfaceDirective, "ng-template[etMenuSurface]", ["etMenuSurface"], {}, {}, never, never, true, never>;
2089
+ }
2090
+
2091
+ declare class MenuTriggerDirective {
2092
+ /** @internal The menu this trigger opens - for submenu trigger items, that is the submenu. */
2093
+ menu: MenuDirective | null;
2094
+ elementRef: ElementRef<HTMLElement>;
2095
+ private destroyRef;
2096
+ /** @internal The same-element menu item this trigger is combined with, if any. Set by the item. */
2097
+ hostItem: MenuItemDirective | null;
2098
+ constructor();
2099
+ /** @internal */
2100
+ setHostItem(item: MenuItemDirective): void;
2101
+ isOpen(): boolean;
2102
+ protected expanded(): boolean | null;
2103
+ protected controls(): string | null;
2104
+ protected handleClick(): void;
2105
+ protected handleKeydown(event: KeyboardEvent): void;
2106
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<MenuTriggerDirective, never>;
2107
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<MenuTriggerDirective, "[etMenuTrigger]", ["etMenuTrigger"], {}, {}, never, never, true, never>;
2108
+ }
2109
+
2110
+ type MenuCloseReason = 'item' | 'escape' | 'tab' | 'outside' | 'api';
2111
+ type MenuOpenSource = 'click' | 'hover' | 'keyboard' | 'api';
2112
+ type MenuAnchorPoint = {
2113
+ x: number;
2114
+ y: number;
2115
+ };
2116
+ declare class MenuDirective {
2117
+ private destroyRef;
2118
+ private document;
2119
+ private overlayManager;
2120
+ parent: MenuDirective | null;
2121
+ placement: _angular_core.InputSignal<Placement | "auto">;
2122
+ fallbackPlacements: _angular_core.InputSignal<Placement[] | undefined>;
2123
+ offset: _angular_core.InputSignal<OffsetOptions | "auto" | null>;
2124
+ viewportPadding: _angular_core.InputSignal<Padding | null>;
2125
+ autoFocus: _angular_core.InputSignal<boolean>;
2126
+ hoverOpen: _angular_core.InputSignal<boolean>;
2127
+ hoverOpenDelay: _angular_core.InputSignal<number>;
2128
+ hoverCloseDelay: _angular_core.InputSignal<number>;
2129
+ disabled: _angular_core.InputSignal<boolean>;
2130
+ open: _angular_core.ModelSignal<boolean>;
2131
+ root: MenuDirective;
2132
+ depth: number;
2133
+ isRoot: boolean;
2134
+ /** @internal */
2135
+ registeredTrigger: _angular_core.WritableSignal<MenuTriggerDirective | null>;
2136
+ /** @internal */
2137
+ registeredContextTrigger: _angular_core.WritableSignal<MenuContextTriggerDirective | null>;
2138
+ /** @internal */
2139
+ registeredSurface: _angular_core.WritableSignal<MenuSurfaceDirective | null>;
2140
+ /** @internal */
2141
+ registeredPanel: _angular_core.WritableSignal<MenuPanelDirective | null>;
2142
+ /** @internal */
2143
+ registeredSearch: _angular_core.WritableSignal<MenuSearchDirective | null>;
2144
+ /** @internal */
2145
+ overlayRef: _angular_core.WritableSignal<OverlayRef<OverlayTemplateHostComponent, unknown> | null>;
2146
+ /** @internal */
2147
+ openSubmenu: _angular_core.WritableSignal<MenuDirective | null>;
2148
+ /** @internal */
2149
+ activeItem: _angular_core.WritableSignal<MenuItemDirective | null>;
2150
+ /** @internal */
2151
+ anchorPoint: _angular_core.WritableSignal<MenuAnchorPoint | null>;
2152
+ private items;
2153
+ /** @internal */
2154
+ sortedItems: _angular_core.Signal<MenuItemDirective[]>;
2155
+ /** @internal */
2156
+ enabledItems: _angular_core.Signal<MenuItemDirective[]>;
2157
+ isMounted: _angular_core.Signal<boolean>;
2158
+ private openSource;
2159
+ private initialFocusTarget;
2160
+ private hoverIntent;
2161
+ private typeahead;
2162
+ private rootListenersCleanup;
2163
+ constructor();
2164
+ show(source?: MenuOpenSource, initialFocus?: 'first' | 'last'): void;
2165
+ hide(): void;
2166
+ toggle(source?: MenuOpenSource): void;
2167
+ /** Closes the whole menu tree, regardless of which level this is called on. */
2168
+ closeAll(reason?: MenuCloseReason): void;
2169
+ /** Opens the menu anchored to a viewport point instead of the trigger element. */
2170
+ openAt(point: MenuAnchorPoint, source?: MenuOpenSource): void;
2171
+ /** @internal Closes this level and returns focus to the trigger item in the parent menu. */
2172
+ closeLevel(reason: MenuCloseReason): void;
2173
+ /** @internal */
2174
+ openSubmenuExclusive(submenu: MenuDirective): void;
2175
+ /** @internal */
2176
+ registerItem(item: MenuItemDirective): void;
2177
+ /** @internal */
2178
+ unregisterItem(item: MenuItemDirective): void;
2179
+ /** @internal */
2180
+ unregisterTrigger(trigger: MenuTriggerDirective): void;
2181
+ /** @internal */
2182
+ unregisterContextTrigger(trigger: MenuContextTriggerDirective): void;
2183
+ /** @internal */
2184
+ unregisterSurface(surface: MenuSurfaceDirective): void;
2185
+ /** @internal */
2186
+ unregisterPanel(panel: MenuPanelDirective): void;
2187
+ /** @internal */
2188
+ unregisterSearch(search: MenuSearchDirective): void;
2189
+ /** @internal */
2190
+ setActiveItem(item: MenuItemDirective, options?: {
2191
+ focus?: boolean;
2192
+ }): void;
2193
+ /** @internal Central keyboard handling for items, the panel, and the search input. */
2194
+ handleKeydown(event: KeyboardEvent): void;
2195
+ /** @internal */
2196
+ notifyItemPointerEnter(item: MenuItemDirective): void;
2197
+ /** @internal Cancels pending submenu hover timers along the ancestor chain. */
2198
+ notifyPanelPointerEnter(): void;
2199
+ /** @internal */
2200
+ focusTrigger(): void;
2201
+ /** @internal True while a pointerdown target belongs to any open pane of this menu's tree. */
2202
+ isTargetInsideTree(target: EventTarget | null): boolean;
2203
+ private isFocusInsideTree;
2204
+ private handleItemHover;
2205
+ private moveActive;
2206
+ private setActiveToEdge;
2207
+ private mountOverlay;
2208
+ private applyInitialFocus;
2209
+ private attachRootInteractionListeners;
2210
+ private detachRootInteractionListeners;
2211
+ private buildStrategies;
2212
+ private buildVirtualAnchoredPosition;
2213
+ private resolvedPlacement;
2214
+ private resolvedFallbackPlacements;
2215
+ private resolvedOffset;
2216
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<MenuDirective, never>;
2217
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<MenuDirective, "[etMenu]", ["etMenu"], { "placement": { "alias": "placement"; "required": false; "isSignal": true; }; "fallbackPlacements": { "alias": "fallbackPlacements"; "required": false; "isSignal": true; }; "offset": { "alias": "offset"; "required": false; "isSignal": true; }; "viewportPadding": { "alias": "viewportPadding"; "required": false; "isSignal": true; }; "autoFocus": { "alias": "autoFocus"; "required": false; "isSignal": true; }; "hoverOpen": { "alias": "hoverOpen"; "required": false; "isSignal": true; }; "hoverOpenDelay": { "alias": "hoverOpenDelay"; "required": false; "isSignal": true; }; "hoverCloseDelay": { "alias": "hoverCloseDelay"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "open": { "alias": "open"; "required": false; "isSignal": true; }; }, { "open": "openChange"; }, never, never, true, never>;
2218
+ }
2219
+
2220
+ type MenuItemActivationSource = 'pointer' | 'keyboard-enter' | 'keyboard-space';
2221
+ type MenuItemActivationEvent = {
2222
+ source: MenuItemActivationSource;
2223
+ };
2224
+ declare class MenuItemDirective {
2225
+ private nearestMenu;
2226
+ private sameElementTrigger;
2227
+ elementRef: ElementRef<HTMLElement>;
2228
+ private destroyRef;
2229
+ disabled: _angular_core.InputSignal<boolean>;
2230
+ closeOnActivate: _angular_core.InputSignal<boolean | undefined>;
2231
+ activated: _angular_core.OutputEmitterRef<MenuItemActivationEvent>;
2232
+ /** @internal The menu whose item list this item belongs to. */
2233
+ owner: MenuDirective | null;
2234
+ /** @internal The submenu this item opens when it doubles as a submenu trigger. */
2235
+ submenu: MenuDirective | null;
2236
+ /** @internal Role source overriding the default `menuitem`, e.g. with `menuitemradio` or `menuitemcheckbox`. */
2237
+ roleOverride: _angular_core.WritableSignal<Signal<string> | null>;
2238
+ /** @internal Additional disabled state source, e.g. from a composing selection item directive. */
2239
+ disabledOverride: _angular_core.WritableSignal<Signal<boolean> | null>;
2240
+ private defaultCloseOnActivate;
2241
+ private pendingKeyboardSource;
2242
+ protected role: Signal<string>;
2243
+ protected isActive: Signal<boolean>;
2244
+ /** @internal Combines the item's own `disabled` input with a state pushed in by a composing directive. */
2245
+ isDisabled: Signal<boolean>;
2246
+ protected tabIndex: Signal<0 | -1>;
2247
+ constructor();
2248
+ /** @internal Sets whether activation closes the menu tree when the `closeOnActivate` input is not set. */
2249
+ setDefaultCloseOnActivate(value: boolean): void;
2250
+ /** @internal */
2251
+ focus(): void;
2252
+ /** @internal Returns the visible label used for typeahead matching. */
2253
+ textContent(): string;
2254
+ /** @internal Activates via a synthesized click so consumer (click) handlers fire for keyboard users too. */
2255
+ activateFromKeyboard(source: MenuItemActivationSource): void;
2256
+ protected handleClick(event: MouseEvent): void;
2257
+ protected handleKeydown(event: KeyboardEvent): void;
2258
+ protected handleMousedown(event: MouseEvent): void;
2259
+ protected handlePointerEnter(event: PointerEvent): void;
2260
+ protected handleFocus(): void;
2261
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<MenuItemDirective, never>;
2262
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<MenuItemDirective, "[etMenuItem]", ["etMenuItem"], { "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "closeOnActivate": { "alias": "closeOnActivate"; "required": false; "isSignal": true; }; }, { "activated": "activated"; }, never, never, true, never>;
2263
+ }
2264
+
2265
+ declare const MENU_SELECTION_GROUP_TOKEN: InjectionToken<MenuSelectionGroupDirectiveBase<unknown>>;
2266
+ declare const MENU_SELECTION_GROUP_MULTIPLE: InjectionToken<boolean>;
2267
+ declare const MENU_SELECTION_ITEM_KIND: InjectionToken<MenuSelectionItemKind>;
2268
+ type MenuSelectionItemKind = 'radio' | 'checkbox';
2269
+ type MenuSelectionGroupItem<TValue = unknown> = {
2270
+ value: Signal<TValue | undefined>;
2271
+ checked: WritableSignal<boolean>;
2272
+ disabled: Signal<boolean>;
2273
+ elementRef: ElementRef<HTMLElement>;
2274
+ };
2275
+ type MenuSelectionGroupDirectiveBase<TValue = unknown> = {
2276
+ value: WritableSignal<TValue | TValue[] | null>;
2277
+ multiple: Signal<boolean>;
2278
+ disabled: Signal<boolean>;
2279
+ items: Signal<MenuSelectionGroupItem<TValue>[]>;
2280
+ labelId: WritableSignal<string | null>;
2281
+ registerItem(item: MenuSelectionGroupItem<TValue>): void;
2282
+ unregisterItem(item: MenuSelectionGroupItem<TValue>): void;
2283
+ select(item: MenuSelectionGroupItem<TValue>): void;
2284
+ markTouched(): void;
2285
+ };
2286
+
2287
+ declare class MenuSelectionGroupDirective implements MenuSelectionGroupDirectiveBase {
2288
+ private multipleOverride;
2289
+ value: _angular_core.ModelSignal<unknown>;
2290
+ touched: _angular_core.ModelSignal<boolean>;
2291
+ multipleInput: _angular_core.InputSignal<boolean>;
2292
+ disabled: _angular_core.InputSignal<boolean>;
2293
+ invalid: _angular_core.InputSignal<boolean>;
2294
+ errors: _angular_core.InputSignal<readonly ValidationError.WithOptionalFieldTree[]>;
2295
+ required: _angular_core.InputSignal<boolean>;
2296
+ name: _angular_core.InputSignal<string>;
2297
+ multiple: _angular_core.Signal<boolean>;
2298
+ items: _angular_core.WritableSignal<MenuSelectionGroupItem[]>;
2299
+ shouldDisplayError: _angular_core.Signal<boolean>;
2300
+ /** @internal Set by a group label component so `aria-labelledby` can reference it. */
2301
+ labelId: _angular_core.WritableSignal<string | null>;
2302
+ constructor();
2303
+ /** @internal */
2304
+ registerItem(item: MenuSelectionGroupItem): void;
2305
+ /** @internal */
2306
+ unregisterItem(item: MenuSelectionGroupItem): void;
2307
+ markTouched(): void;
2308
+ select(item: MenuSelectionGroupItem): void;
2309
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<MenuSelectionGroupDirective, never>;
2310
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<MenuSelectionGroupDirective, "[etMenuSelectionGroup]", ["etMenuSelectionGroup"], { "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; }; "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>;
2311
+ }
2312
+
2313
+ declare class MenuSelectionItemDirective {
2314
+ private group;
2315
+ private kindOverride;
2316
+ private menuItem;
2317
+ elementRef: ElementRef<HTMLElement>;
2318
+ private destroyRef;
2319
+ value: _angular_core.InputSignal<unknown>;
2320
+ checked: _angular_core.ModelSignal<boolean>;
2321
+ indeterminate: _angular_core.ModelSignal<boolean>;
2322
+ touched: _angular_core.ModelSignal<boolean>;
2323
+ disabled: _angular_core.InputSignal<boolean>;
2324
+ invalid: _angular_core.InputSignal<boolean>;
2325
+ errors: _angular_core.InputSignal<readonly ValidationError.WithOptionalFieldTree[]>;
2326
+ required: _angular_core.InputSignal<boolean>;
2327
+ name: _angular_core.InputSignal<string>;
2328
+ kind: _angular_core.Signal<MenuSelectionItemKind>;
2329
+ ariaChecked: _angular_core.Signal<boolean | "mixed">;
2330
+ private isDisabled;
2331
+ constructor();
2332
+ toggle(): void;
2333
+ protected handleBlur(): void;
2334
+ private handleActivation;
2335
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<MenuSelectionItemDirective, never>;
2336
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<MenuSelectionItemDirective, "[etMenuSelectionItem]", ["etMenuSelectionItem"], { "value": { "alias": "value"; "required": false; "isSignal": true; }; "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; }; "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>;
2337
+ }
2338
+
2339
+ declare class MenuCheckboxGroupComponent {
2340
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<MenuCheckboxGroupComponent, never>;
2341
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<MenuCheckboxGroupComponent, "et-menu-checkbox-group", never, {}, {}, never, ["et-menu-group-label", "*"], true, [{ directive: typeof MenuSelectionGroupDirective; inputs: { "value": "value"; "touched": "touched"; "disabled": "disabled"; "invalid": "invalid"; "errors": "errors"; "required": "required"; "name": "name"; }; outputs: { "valueChange": "valueChange"; "touchedChange": "touchedChange"; }; }]>;
2342
+ }
2343
+
2344
+ declare class MenuCheckboxItemComponent {
2345
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<MenuCheckboxItemComponent, never>;
2346
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<MenuCheckboxItemComponent, "et-menu-checkbox-item", never, {}, {}, never, ["*"], true, [{ directive: typeof MenuItemDirective; inputs: { "closeOnActivate": "closeOnActivate"; }; outputs: { "activated": "activated"; }; }, { directive: typeof MenuSelectionItemDirective; inputs: { "value": "value"; "checked": "checked"; "indeterminate": "indeterminate"; "touched": "touched"; "disabled": "disabled"; "invalid": "invalid"; "errors": "errors"; "required": "required"; "name": "name"; }; outputs: { "checkedChange": "checkedChange"; "indeterminateChange": "indeterminateChange"; "touchedChange": "touchedChange"; }; }]>;
2347
+ }
2348
+
2349
+ declare const MENU_ERROR_CODES: {
2350
+ readonly MISSING_MENU_SURFACE: 1300;
2351
+ readonly TRIGGER_OUTSIDE_MENU: 1301;
2352
+ readonly SURFACE_OUTSIDE_MENU: 1302;
2353
+ readonly ITEM_OUTSIDE_MENU: 1303;
2354
+ readonly PANEL_OUTSIDE_MENU: 1304;
2355
+ readonly SEARCH_OUTSIDE_MENU: 1305;
2356
+ readonly CONTEXT_TRIGGER_OUTSIDE_MENU: 1306;
2357
+ readonly CONTEXT_TRIGGER_ON_SUBMENU: 1307;
2358
+ readonly SELECTION_ITEM_MISSING_VALUE: 1320;
2359
+ readonly RADIO_ITEM_OUTSIDE_GROUP: 1321;
2360
+ };
2361
+
2362
+ declare class MenuGroupLabelComponent {
2363
+ private group;
2364
+ private elementRef;
2365
+ private destroyRef;
2366
+ constructor();
2367
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<MenuGroupLabelComponent, never>;
2368
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<MenuGroupLabelComponent, "et-menu-group-label", never, {}, {}, never, ["*"], true, never>;
2369
+ }
2370
+
2371
+ declare const MENU_ITEM_VARIANTS: {
2372
+ readonly DEFAULT: "default";
2373
+ readonly DESTRUCTIVE: "destructive";
2374
+ };
2375
+ type MenuItemVariant = (typeof MENU_ITEM_VARIANTS)[keyof typeof MENU_ITEM_VARIANTS];
2376
+ declare class MenuItemComponent {
2377
+ variant: _angular_core.InputSignal<MenuItemVariant>;
2378
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<MenuItemComponent, never>;
2379
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<MenuItemComponent, "button[et-menu-item], a[et-menu-item]", never, { "variant": { "alias": "variant"; "required": false; "isSignal": true; }; }, {}, never, ["[etIcon]", "*", "et-menu-item-shortcut"], true, [{ directive: typeof MenuItemDirective; inputs: { "disabled": "disabled"; "closeOnActivate": "closeOnActivate"; }; outputs: { "activated": "activated"; }; }]>;
2380
+ }
2381
+
2382
+ declare class MenuItemShortcutComponent {
2383
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<MenuItemShortcutComponent, never>;
2384
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<MenuItemShortcutComponent, "et-menu-item-shortcut", never, {}, {}, never, ["*"], true, never>;
2385
+ }
2386
+
2387
+ declare class MenuRadioGroupComponent {
2388
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<MenuRadioGroupComponent, never>;
2389
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<MenuRadioGroupComponent, "et-menu-radio-group", never, {}, {}, never, ["et-menu-group-label", "*"], true, [{ directive: typeof MenuSelectionGroupDirective; inputs: { "value": "value"; "touched": "touched"; "disabled": "disabled"; "invalid": "invalid"; "errors": "errors"; "required": "required"; "name": "name"; }; outputs: { "valueChange": "valueChange"; "touchedChange": "touchedChange"; }; }]>;
2390
+ }
2391
+
2392
+ declare class MenuRadioItemComponent {
2393
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<MenuRadioItemComponent, never>;
2394
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<MenuRadioItemComponent, "et-menu-radio-item", never, {}, {}, never, ["*"], true, [{ directive: typeof MenuItemDirective; inputs: { "closeOnActivate": "closeOnActivate"; }; outputs: { "activated": "activated"; }; }, { directive: typeof MenuSelectionItemDirective; inputs: { "value": "value"; "checked": "checked"; "touched": "touched"; "disabled": "disabled"; "invalid": "invalid"; "errors": "errors"; "required": "required"; "name": "name"; }; outputs: { "checkedChange": "checkedChange"; "touchedChange": "touchedChange"; }; }]>;
2395
+ }
2396
+
2397
+ declare class MenuSeparatorComponent {
2398
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<MenuSeparatorComponent, never>;
2399
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<MenuSeparatorComponent, "et-menu-separator", never, {}, {}, never, never, true, never>;
2400
+ }
2401
+
2402
+ declare class MenuComponent {
2403
+ private ownColorProvider;
2404
+ private ownSurfaceProvider;
2405
+ private contextColorProvider;
2406
+ private contextSurfaceProvider;
2407
+ protected menu: MenuDirective | null;
2408
+ private surfaceThemes;
2409
+ protected search: _angular_core.Signal<_ethlete_components.MenuSearchDirective | null>;
2410
+ protected searchLoading: _angular_core.Signal<boolean>;
2411
+ protected searchError: _angular_core.Signal<string | null>;
2412
+ protected searchErrorId: string;
2413
+ private resolvedSurface;
2414
+ constructor();
2415
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<MenuComponent, never>;
2416
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<MenuComponent, "et-menu", never, {}, {}, never, ["input[etMenuSearch]", "*"], true, [{ directive: typeof MenuPanelDirective; inputs: {}; outputs: {}; }, { directive: typeof _ethlete_core.ProvideColorDirective; inputs: {}; outputs: {}; }, { directive: typeof _ethlete_core.ProvideSurfaceDirective; inputs: {}; outputs: {}; }]>;
2417
+ }
2418
+
2419
+ declare const MENU_IMPORTS: readonly [typeof MenuDirective, typeof MenuTriggerDirective, typeof MenuContextTriggerDirective, typeof MenuSurfaceDirective, typeof MenuPanelDirective, typeof MenuItemDirective, typeof MenuSearchDirective, typeof MenuSelectionGroupDirective, typeof MenuSelectionItemDirective, typeof MenuComponent, typeof MenuItemComponent, typeof MenuItemShortcutComponent, typeof MenuSeparatorComponent, typeof MenuGroupLabelComponent, typeof MenuRadioGroupComponent, typeof MenuRadioItemComponent, typeof MenuCheckboxGroupComponent, typeof MenuCheckboxItemComponent];
2420
+
2421
+ declare class NotificationActionDirective {
2422
+ private notification;
2423
+ constructor();
2424
+ runAction(): void;
2425
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<NotificationActionDirective, never>;
2426
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<NotificationActionDirective, "[etNotificationAction]", ["etNotificationAction"], {}, {}, never, never, true, never>;
2427
+ }
2428
+
2429
+ declare class NotificationDismissDirective {
2430
+ private notification;
2431
+ constructor();
2432
+ dismiss(): void;
2433
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<NotificationDismissDirective, never>;
2434
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<NotificationDismissDirective, "[etNotificationDismiss]", ["etNotificationDismiss"], {}, {}, never, never, true, never>;
2435
+ }
2436
+
2437
+ declare class NotificationItemDirective {
2438
+ private elementRef;
2439
+ private stack;
2440
+ ref: _angular_core.InputSignal<{
2441
+ id: string;
2442
+ entry: _angular_core.Signal<_ethlete_components.NotificationEntry>;
2443
+ update: (partial: Partial<_ethlete_components.NotificationConfig>) => void;
2444
+ dismiss: () => void;
2445
+ pauseTimer: () => void;
2446
+ resumeTimer: () => void;
2447
+ afterDismissed: () => rxjs.Observable<void>;
2448
+ markDismissed: () => void;
2449
+ }>;
2450
+ constructor();
2451
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<NotificationItemDirective, never>;
2452
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<NotificationItemDirective, "[etNotificationItem]", never, { "ref": { "alias": "etNotificationItem"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
2453
+ }
2454
+
2455
+ type RegisteredNotificationItem = {
2456
+ id: string;
2457
+ el: HTMLElement;
2458
+ };
2459
+ declare class NotificationStackDirective {
1377
2460
  protected context: _ethlete_components.NotificationStackContext;
1378
2461
  private destroyRef;
1379
2462
  private injector;
@@ -1564,148 +2647,90 @@ declare class NotificationComponent {
1564
2647
 
1565
2648
  declare const NOTIFICATION_IMPORTS: readonly [typeof NotificationComponent, typeof NotificationDirective, typeof NotificationActionDirective, typeof NotificationDismissDirective];
1566
2649
 
1567
- declare class OverlayAnchorDirective {
1568
- private overlay;
1569
- private destroyRef;
1570
- elementRef: ElementRef<HTMLElement>;
1571
- constructor();
1572
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<OverlayAnchorDirective, never>;
1573
- static ɵdir: _angular_core.ɵɵDirectiveDeclaration<OverlayAnchorDirective, "[etOverlayAnchor]", ["etOverlayAnchor"], {}, {}, never, never, true, never>;
1574
- }
1575
-
1576
- type OverlayAutoFocusTarget = 'container' | 'first-heading' | 'first-tabbable';
1577
- type OverlayRole = 'dialog' | 'alertdialog';
1578
- type OverlayMode = 'modal' | 'non-modal';
1579
- type OverlayPositionStrategy = OverlayRuntimePositionStrategy;
1580
- type OverlayConfig = {
1581
- viewContainerRef?: ViewContainerRef;
1582
- injector?: Injector;
1583
- id?: string;
1584
- origin?: HTMLElement;
1585
- role?: OverlayRole;
1586
- positionStrategy?: OverlayPositionStrategy;
1587
- hasBackdrop?: boolean;
1588
- disableClose?: boolean;
1589
- inputBindings?: Record<string, unknown>;
1590
- ariaDescribedBy?: string | null;
1591
- ariaLabelledBy?: string | null;
1592
- ariaLabel?: string | null;
1593
- autoFocus?: OverlayAutoFocusTarget | string | false;
1594
- restoreFocus?: boolean;
1595
- providers?: StaticProvider[];
1596
- hostClass?: string | string[];
1597
- backdropClass?: string | string[];
1598
- panelClass?: string | string[];
1599
- mode?: OverlayMode;
1600
- closeOnOutsidePointer?: boolean;
1601
- closeOnEscape?: boolean;
1602
- };
1603
-
1604
- declare const createOverlayRef: <TComponent extends object, TResult = unknown>(config: OverlayConfig) => {
1605
- readonly id: string;
1606
- config: OverlayConfig;
1607
- readonly componentInstance: TComponent | null;
1608
- close(result?: TResult): void;
1609
- afterOpened(): Observable<void>;
1610
- beforeClosed(): Observable<TResult | undefined>;
1611
- afterClosed(): Observable<TResult | undefined>;
1612
- attachRuntime(runtimeRef: OverlayRuntimeRef<TComponent, TResult>): void;
2650
+ declare const getClosestOverlay: (element: ElementRef<HTMLElement>, openOverlays: OverlayRef<object, unknown>[]) => OverlayRef<object, unknown> | null;
2651
+ type ResolveClosestOverlayOptions = {
2652
+ overlayRef: OverlayRef<object, unknown> | null;
2653
+ element: ElementRef<HTMLElement>;
2654
+ openOverlays: OverlayRef<object, unknown>[];
1613
2655
  };
1614
- type OverlayRef<TComponent extends object = object, TResult = unknown> = ReturnType<typeof createOverlayRef<TComponent, TResult>>;
1615
- declare const OVERLAY_REF: InjectionToken<{
1616
- readonly id: string;
1617
- config: OverlayConfig;
1618
- readonly componentInstance: object | null;
1619
- close(result?: unknown): void;
1620
- afterOpened(): Observable<void>;
1621
- beforeClosed(): Observable<unknown>;
1622
- afterClosed(): Observable<unknown>;
1623
- attachRuntime(runtimeRef: OverlayRuntimeRef<object, unknown>): void;
1624
- }>;
1625
-
1626
- declare class OverlayTemplateHostComponent {
1627
- private animatedLifecycleInstance;
1628
- protected template: _angular_core.InputSignal<TemplateRef<OverlaySurfaceContext>>;
1629
- protected context: _angular_core.InputSignal<OverlaySurfaceContext>;
1630
- animatedLifecycle: _angular_core.WritableSignal<AnimatedLifecycleDirective>;
1631
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<OverlayTemplateHostComponent, never>;
1632
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<OverlayTemplateHostComponent, "et-overlay-template-host", never, { "template": { "alias": "template"; "required": true; "isSignal": true; }; "context": { "alias": "context"; "required": true; "isSignal": true; }; }, {}, never, never, true, [{ directive: typeof _ethlete_core.AnimatedLifecycleDirective; inputs: {}; outputs: {}; }]>;
1633
- }
1634
-
1635
- declare class OverlayTriggerDirective {
1636
- private overlay;
1637
- private destroyRef;
1638
- elementRef: ElementRef<HTMLElement>;
1639
- constructor();
1640
- toggle(): void;
1641
- isOpen(): boolean;
1642
- expanded(): boolean | null;
1643
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<OverlayTriggerDirective, never>;
1644
- static ɵdir: _angular_core.ɵɵDirectiveDeclaration<OverlayTriggerDirective, "[etOverlayTrigger]", ["etOverlayTrigger"], {}, {}, never, never, true, never>;
1645
- }
2656
+ /** Returns the given ref or resolves the overlay the element is rendered inside of. Throws if neither exists. */
2657
+ declare const resolveClosestOverlay: (options: ResolveClosestOverlayOptions) => OverlayRef<object, unknown>;
1646
2658
 
1647
- declare class OverlayDirective {
1648
- private destroyRef;
1649
- mode: _angular_core.InputSignal<OverlayMode>;
1650
- role: _angular_core.InputSignal<OverlayRole | undefined>;
1651
- open: _angular_core.ModelSignal<boolean>;
1652
- disabled: _angular_core.InputSignal<boolean>;
1653
- disableClose: _angular_core.InputSignal<boolean>;
1654
- autoFocus: _angular_core.InputSignal<string | false | undefined>;
1655
- restoreFocus: _angular_core.InputSignal<boolean>;
1656
- hasBackdrop: _angular_core.InputSignal<boolean | undefined>;
1657
- closeOnEscape: _angular_core.InputSignal<boolean>;
1658
- closeOnOutsidePointer: _angular_core.InputSignal<boolean>;
1659
- hostClass: _angular_core.InputSignal<string | string[] | undefined>;
1660
- backdropClass: _angular_core.InputSignal<string | string[] | undefined>;
1661
- panelClass: _angular_core.InputSignal<string | string[] | undefined>;
1662
- placement: _angular_core.InputSignal<Placement>;
1663
- fallbackPlacements: _angular_core.InputSignal<Placement[] | undefined>;
1664
- offset: _angular_core.InputSignal<OffsetOptions | null>;
1665
- viewportPadding: _angular_core.InputSignal<Padding | null>;
1666
- autoResize: _angular_core.InputSignal<boolean>;
1667
- shift: _angular_core.InputSignal<boolean>;
1668
- autoHide: _angular_core.InputSignal<boolean>;
1669
- autoCloseIfReferenceHidden: _angular_core.InputSignal<boolean>;
1670
- mirrorWidth: _angular_core.InputSignal<boolean>;
2659
+ declare const OVERLAY_BODY_TOKEN: InjectionToken<OverlayBodyComponent>;
2660
+ type OverlayBodyDividerType = 'static' | 'dynamic' | false;
2661
+ declare class OverlayBodyComponent implements OnInit {
2662
+ private overlayRef;
2663
+ private elementRef;
2664
+ private scrollObserver;
1671
2665
  private overlayManager;
1672
- /** @internal */
1673
- registeredAnchor: _angular_core.WritableSignal<OverlayAnchorDirective | null>;
1674
- /** @internal */
1675
- registeredSurface: _angular_core.WritableSignal<OverlaySurfaceDirective | null>;
1676
- /** @internal */
1677
- registeredTrigger: _angular_core.WritableSignal<OverlayTriggerDirective | null>;
1678
- /** @internal */
1679
- overlayRef: _angular_core.WritableSignal<OverlayRef<OverlayTemplateHostComponent, unknown> | null>;
1680
- isMounted: _angular_core.Signal<boolean>;
1681
- private originElement;
2666
+ dividers: _angular_core.InputSignal<OverlayBodyDividerType>;
2667
+ dividersEnabled: _angular_core.Signal<boolean>;
2668
+ dynamicDividersEnabled: _angular_core.Signal<boolean>;
2669
+ containerScrollState: _angular_core.Signal<_ethlete_core.ElementScrollState>;
2670
+ canScroll: _angular_core.Signal<boolean>;
2671
+ isAtStart: _angular_core.Signal<boolean>;
2672
+ isAtEnd: _angular_core.Signal<boolean>;
2673
+ enableDividerAnimations: _angular_core.WritableSignal<boolean>;
1682
2674
  constructor();
1683
- show(): void;
1684
- hide(result?: unknown): void;
1685
- toggle(): void;
1686
- /** @internal */
1687
- unregisterTrigger(trigger: OverlayTriggerDirective): void;
1688
- /** @internal */
1689
- unregisterAnchor(anchor: OverlayAnchorDirective): void;
1690
- /** @internal */
1691
- unregisterSurface(surface: OverlaySurfaceDirective): void;
1692
- private mountOverlay;
1693
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<OverlayDirective, never>;
1694
- static ɵdir: _angular_core.ɵɵDirectiveDeclaration<OverlayDirective, "[etOverlay]", ["etOverlay"], { "mode": { "alias": "mode"; "required": false; "isSignal": true; }; "role": { "alias": "role"; "required": false; "isSignal": true; }; "open": { "alias": "open"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "disableClose": { "alias": "disableClose"; "required": false; "isSignal": true; }; "autoFocus": { "alias": "autoFocus"; "required": false; "isSignal": true; }; "restoreFocus": { "alias": "restoreFocus"; "required": false; "isSignal": true; }; "hasBackdrop": { "alias": "hasBackdrop"; "required": false; "isSignal": true; }; "closeOnEscape": { "alias": "closeOnEscape"; "required": false; "isSignal": true; }; "closeOnOutsidePointer": { "alias": "closeOnOutsidePointer"; "required": false; "isSignal": true; }; "hostClass": { "alias": "hostClass"; "required": false; "isSignal": true; }; "backdropClass": { "alias": "backdropClass"; "required": false; "isSignal": true; }; "panelClass": { "alias": "panelClass"; "required": false; "isSignal": true; }; "placement": { "alias": "placement"; "required": false; "isSignal": true; }; "fallbackPlacements": { "alias": "fallbackPlacements"; "required": false; "isSignal": true; }; "offset": { "alias": "offset"; "required": false; "isSignal": true; }; "viewportPadding": { "alias": "viewportPadding"; "required": false; "isSignal": true; }; "autoResize": { "alias": "autoResize"; "required": false; "isSignal": true; }; "shift": { "alias": "shift"; "required": false; "isSignal": true; }; "autoHide": { "alias": "autoHide"; "required": false; "isSignal": true; }; "autoCloseIfReferenceHidden": { "alias": "autoCloseIfReferenceHidden"; "required": false; "isSignal": true; }; "mirrorWidth": { "alias": "mirrorWidth"; "required": false; "isSignal": true; }; }, { "open": "openChange"; }, never, never, true, never>;
2675
+ ngOnInit(): void;
2676
+ scrollToTop(behavior?: ScrollBehavior): void;
2677
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<OverlayBodyComponent, never>;
2678
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<OverlayBodyComponent, "[et-overlay-body], et-overlay-body", never, { "dividers": { "alias": "dividers"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, [{ directive: typeof _ethlete_core.ScrollObserverDirective; inputs: {}; outputs: {}; }]>;
1695
2679
  }
1696
2680
 
1697
- type OverlaySurfaceContext = {
1698
- $implicit: OverlayDirective;
1699
- overlay: OverlayDirective;
1700
- close: (result?: unknown) => void;
1701
- };
1702
- declare class OverlaySurfaceDirective {
1703
- private overlay;
1704
- templateRef: TemplateRef<OverlaySurfaceContext>;
2681
+ declare class OverlayCloseDirective implements OnInit {
2682
+ private overlayRef;
2683
+ private elementRef;
2684
+ private overlayManager;
2685
+ ariaLabel: _angular_core.InputSignal<string | undefined>;
2686
+ type: _angular_core.InputSignal<"button" | "submit" | "reset">;
2687
+ closeResult: _angular_core.InputSignal<unknown>;
2688
+ closeResultAlt: _angular_core.InputSignal<unknown>;
2689
+ constructor();
2690
+ ngOnInit(): void;
2691
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<OverlayCloseDirective, never>;
2692
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<OverlayCloseDirective, "[et-overlay-close], [etOverlayClose]", ["etOverlayClose"], { "ariaLabel": { "alias": "aria-label"; "required": false; "isSignal": true; }; "type": { "alias": "type"; "required": false; "isSignal": true; }; "closeResult": { "alias": "etOverlayClose"; "required": false; "isSignal": true; }; "closeResultAlt": { "alias": "et-overlay-close"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
2693
+ }
2694
+
2695
+ declare class OverlayContainerComponent {
2696
+ private ownColorProvider;
2697
+ private ownSurfaceProvider;
2698
+ private parentColorProvider;
2699
+ private parentSurfaceProvider;
1705
2700
  private destroyRef;
2701
+ private elementRef;
2702
+ protected overlayRef: {
2703
+ readonly id: string;
2704
+ readonly elements: _ethlete_core.OverlayRuntimeElements | null;
2705
+ config: _ethlete_components.OverlayConfig;
2706
+ headerTemplate: _angular_core.Signal<_angular_core.TemplateRef<unknown> | null>;
2707
+ setHeaderTemplate: (template: _angular_core.TemplateRef<unknown> | null) => void;
2708
+ componentInstance: () => object | null;
2709
+ close: (result?: unknown) => void;
2710
+ closeVia: (source: _ethlete_core.OverlayRuntimeCloseSource, result?: unknown) => void;
2711
+ updatePositionStrategy: (strategy: _ethlete_core.OverlayRuntimePositionStrategy) => void;
2712
+ attachComponentInstanceOverride: (getter: () => object | null) => void;
2713
+ afterOpened: () => rxjs.Observable<void>;
2714
+ beforeClosed: () => rxjs.Observable<unknown>;
2715
+ afterClosed: () => rxjs.Observable<unknown>;
2716
+ attachRuntime: (runtimeRef: _ethlete_core.OverlayRuntimeRef<object, unknown>) => void;
2717
+ };
2718
+ private surfaceThemes;
2719
+ private surfaceContextTracker;
2720
+ private renderer;
2721
+ rootBoundary: {
2722
+ value: _angular_core.Signal<HTMLElement>;
2723
+ override: _angular_core.WritableSignal<HTMLElement | null>;
2724
+ };
2725
+ component: _angular_core.InputSignal<Type<object>>;
2726
+ componentBindings: _angular_core.InputSignal<Binding[] | undefined>;
2727
+ renderArrow: _angular_core.InputSignal<boolean>;
2728
+ private contentOutlet;
2729
+ animatedLifecycle: _angular_core.WritableSignal<AnimatedLifecycleDirective>;
2730
+ contentComponentRef: _angular_core.WritableSignal<ComponentRef<object> | null>;
1706
2731
  constructor();
1707
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<OverlaySurfaceDirective, never>;
1708
- static ɵdir: _angular_core.ɵɵDirectiveDeclaration<OverlaySurfaceDirective, "ng-template[etOverlaySurface]", ["etOverlaySurface"], {}, {}, never, never, true, never>;
2732
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<OverlayContainerComponent, never>;
2733
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<OverlayContainerComponent, "et-overlay-container", never, { "component": { "alias": "component"; "required": true; "isSignal": true; }; "componentBindings": { "alias": "componentBindings"; "required": false; "isSignal": true; }; "renderArrow": { "alias": "renderArrow"; "required": false; "isSignal": true; }; }, {}, never, never, true, [{ directive: typeof _ethlete_core.AnimatedLifecycleDirective; inputs: {}; outputs: {}; }, { directive: typeof _ethlete_core.ProvideColorDirective; inputs: {}; outputs: {}; }, { directive: typeof _ethlete_core.ProvideSurfaceDirective; inputs: {}; outputs: {}; }]>;
1709
2734
  }
1710
2735
 
1711
2736
  declare const OVERLAY_ERROR_CODES: {
@@ -1713,7 +2738,121 @@ declare const OVERLAY_ERROR_CODES: {
1713
2738
  readonly TRIGGER_OUTSIDE_OVERLAY: 1201;
1714
2739
  readonly ANCHOR_OUTSIDE_OVERLAY: 1202;
1715
2740
  readonly SURFACE_OUTSIDE_OVERLAY: 1203;
2741
+ readonly MULTIPLE_LAYOUT_CLASSES: 1204;
2742
+ readonly NO_CLOSEST_OVERLAY: 1205;
2743
+ readonly NESTED_OVERLAY_MAIN: 1206;
2744
+ };
2745
+
2746
+ declare const OVERLAY_FOOTER_TOKEN: InjectionToken<OverlayFooterDirective>;
2747
+ declare class OverlayFooterDirective implements OnInit {
2748
+ private overlayRef;
2749
+ private elementRef;
2750
+ private overlayManager;
2751
+ ngOnInit(): void;
2752
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<OverlayFooterDirective, never>;
2753
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<OverlayFooterDirective, "[etOverlayFooter], et-overlay-footer", never, {}, {}, never, never, true, never>;
2754
+ }
2755
+
2756
+ type CreateOverlayHandlerConfig<TComponent extends object> = OverlayConfig & {
2757
+ /** The overlay component. */
2758
+ component: Type<TComponent>;
2759
+ };
2760
+ /** Per-open config overrides. Strategies are fixed by the handler's root config. */
2761
+ type OverlayConsumerConfig = Omit<OverlayConfig, 'strategies'>;
2762
+ type OverlayHandler<TComponent extends object, TResult = unknown> = {
2763
+ /** Open the overlay using a combination of the given configs */
2764
+ open: (config?: OverlayConsumerConfig) => OverlayRef<TComponent, TResult>;
2765
+ /**
2766
+ * Returns the typed overlay ref.
2767
+ * @throws Error if the overlay ref gets accessed outside of the overlay component
2768
+ */
2769
+ injectOverlayRef: () => OverlayRef<TComponent, TResult>;
2770
+ };
2771
+ type CreateOverlayHandlerInnerConfig<TResult = unknown> = {
2772
+ /** A callback function to be executed once the overlay has been closed */
2773
+ afterClosed?: (result: TResult | null) => void;
2774
+ /** A callback function to be executed before the overlay is closed */
2775
+ beforeClosed?: (result: TResult | null) => void;
2776
+ /** A callback function to be executed once the overlay has been opened */
2777
+ afterOpened?: () => void;
2778
+ };
2779
+ declare const createOverlayHandler: <TComponent extends object, TResult = unknown>(rootConfig: CreateOverlayHandlerConfig<TComponent>) => (innerConfig?: CreateOverlayHandlerInnerConfig<TResult>) => OverlayHandler<TComponent, TResult>;
2780
+ /** The name of the model the overlay component must expose to participate in query-param sync. */
2781
+ declare const OVERLAY_QUERY_PARAM_INPUT_NAME = "overlayQueryParam";
2782
+ type OverlayHandlerWithQueryParamLifecycle<TQueryParam extends string = string> = {
2783
+ /** Open the overlay by writing the given value to the query param. */
2784
+ open: (value: TQueryParam) => void;
2785
+ /** Close the overlay by removing the query param. */
2786
+ close: () => void;
2787
+ };
2788
+ type CreateOverlayHandlerWithQueryParamLifecycleConfig<TComponent extends object> = CreateOverlayHandlerConfig<TComponent> & {
2789
+ /** The query param key that drives this overlay's open/close lifecycle. */
2790
+ queryParamKey: string;
1716
2791
  };
2792
+ /**
2793
+ * Drives an overlay's lifecycle from a URL query param: the overlay opens while the param is present
2794
+ * and closes (clearing the param) when dismissed. The param value is forwarded to the overlay via an
2795
+ * `overlayQueryParam` {@link https://angular.dev/api/core/model | model}, which is kept in two-way sync
2796
+ * with the URL — reading the model reflects the URL, and writing it updates the URL.
2797
+ *
2798
+ * Open it declaratively with {@link OverlayHandlerLinkDirective}, or imperatively via the returned
2799
+ * handler's `open()` / `close()`.
2800
+ *
2801
+ * @example
2802
+ * // in the overlay component:
2803
+ * readonly overlayQueryParam = model<string>();
2804
+ *
2805
+ * // once, in a long-lived component (e.g. AppComponent):
2806
+ * private handler = createProductOverlay(); // returned by this factory
2807
+ */
2808
+ declare const createOverlayHandlerWithQueryParamLifecycle: <TComponent extends object, TQueryParam extends string = string, TResult = unknown>(config: CreateOverlayHandlerWithQueryParamLifecycleConfig<TComponent>) => {
2809
+ (innerConfig?: CreateOverlayHandlerInnerConfig<TResult>): OverlayHandlerWithQueryParamLifecycle<TQueryParam>;
2810
+ injectOverlayRef(): OverlayRef<TComponent, TResult>;
2811
+ };
2812
+
2813
+ declare class OverlayHandlerLinkDirective {
2814
+ private routerLink;
2815
+ linkValue: _angular_core.InputSignal<string | number>;
2816
+ linkKey: _angular_core.InputSignal<string>;
2817
+ constructor();
2818
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<OverlayHandlerLinkDirective, never>;
2819
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<OverlayHandlerLinkDirective, "[etOverlayHandlerLink]", never, { "linkValue": { "alias": "etOverlayHandlerLink"; "required": true; "isSignal": true; }; "linkKey": { "alias": "etOverlayHandlerQueryParamName"; "required": true; "isSignal": true; }; }, {}, never, never, true, [{ directive: typeof i1.RouterLink; inputs: {}; outputs: {}; }]>;
2820
+ }
2821
+
2822
+ declare const OVERLAY_HEADER_TOKEN: InjectionToken<OverlayHeaderDirective>;
2823
+ declare class OverlayHeaderDirective implements OnInit {
2824
+ private overlayRef;
2825
+ private elementRef;
2826
+ private overlayManager;
2827
+ ngOnInit(): void;
2828
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<OverlayHeaderDirective, never>;
2829
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<OverlayHeaderDirective, "[etOverlayHeader], et-overlay-header", never, {}, {}, never, never, true, never>;
2830
+ }
2831
+
2832
+ declare const OVERLAY_HEADER_TEMPLATE_TOKEN: InjectionToken<OverlayHeaderTemplateDirective>;
2833
+ declare class OverlayHeaderTemplateDirective implements OnInit, OnDestroy {
2834
+ private overlayRef;
2835
+ private elementRef;
2836
+ template: TemplateRef<unknown>;
2837
+ private overlayManager;
2838
+ constructor();
2839
+ ngOnInit(): void;
2840
+ ngOnDestroy(): void;
2841
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<OverlayHeaderTemplateDirective, never>;
2842
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<OverlayHeaderTemplateDirective, "ng-template[etOverlayHeaderTemplate]", never, {}, {}, never, never, true, never>;
2843
+ }
2844
+
2845
+ declare const OVERLAY_MAIN_TOKEN: InjectionToken<OverlayMainDirective>;
2846
+ declare class OverlayMainDirective implements OnInit {
2847
+ private parent;
2848
+ private elementRef;
2849
+ private overlayRef;
2850
+ private overlayManager;
2851
+ enabled: _angular_core.InputSignalWithTransform<boolean, unknown>;
2852
+ ngOnInit(): void;
2853
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<OverlayMainDirective, never>;
2854
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<OverlayMainDirective, "[etOverlayMain], et-overlay-main", never, { "enabled": { "alias": "etOverlayMain"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
2855
+ }
1717
2856
 
1718
2857
  type OverlayManager = {
1719
2858
  open: <TComponent extends object, TResult = unknown>(component: Type<TComponent>, config?: OverlayConfig) => OverlayRef<TComponent, TResult>;
@@ -1728,7 +2867,613 @@ declare const injectOverlayManager: {
1728
2867
  (options: _angular_core.InjectOptions): OverlayManager | null;
1729
2868
  };
1730
2869
 
2870
+ /**
2871
+ * Blocks body scrolling while a modal overlay is open.
2872
+ * Register once via `provideOverlay()` (or call `injectOverlayScrollBlocker()` in an environment initializer).
2873
+ */
2874
+ declare const provideOverlayScrollBlocker: () => _angular_core.Provider[];
2875
+ declare const injectOverlayScrollBlocker: {
2876
+ (): void;
2877
+ (options: _angular_core.InjectOptions & {
2878
+ optional?: false;
2879
+ }): void;
2880
+ (options: _angular_core.InjectOptions): void | null;
2881
+ };
2882
+
2883
+ declare class OverlayTitleDirective implements OnInit {
2884
+ private overlayRef;
2885
+ private elementRef;
2886
+ private overlayManager;
2887
+ private renderer;
2888
+ id: _angular_core.InputSignal<string>;
2889
+ ngOnInit(): void;
2890
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<OverlayTitleDirective, never>;
2891
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<OverlayTitleDirective, "[et-overlay-title], [etOverlayTitle]", ["etOverlayTitle"], { "id": { "alias": "id"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
2892
+ }
2893
+
1731
2894
  declare const OVERLAY_IMPORTS: readonly [typeof OverlayDirective, typeof OverlayTriggerDirective, typeof OverlayAnchorDirective, typeof OverlaySurfaceDirective];
2895
+ declare const OVERLAY_CONTENT_IMPORTS: readonly [typeof OverlayCloseDirective, typeof OverlayTitleDirective, typeof OverlayHeaderDirective, typeof OverlayBodyComponent, typeof OverlayFooterDirective, typeof OverlayMainDirective];
2896
+ declare const provideOverlay: () => _angular_core.EnvironmentProviders[];
2897
+
2898
+ declare const OVERLAY_BACK_OR_CLOSE_TOKEN: InjectionToken<OverlayBackOrCloseDirective>;
2899
+ declare class OverlayBackOrCloseDirective {
2900
+ private overlayRef;
2901
+ private elementRef;
2902
+ private router;
2903
+ disabled: _angular_core.InputSignalWithTransform<boolean, unknown>;
2904
+ constructor();
2905
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<OverlayBackOrCloseDirective, never>;
2906
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<OverlayBackOrCloseDirective, "[etOverlayBackOrClose]", never, { "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
2907
+ }
2908
+
2909
+ declare class OverlayRouteHeaderTemplateOutletComponent {
2910
+ protected overlay: {
2911
+ readonly id: string;
2912
+ readonly elements: _ethlete_core.OverlayRuntimeElements | null;
2913
+ config: _ethlete_components.OverlayConfig;
2914
+ headerTemplate: _angular_core.Signal<_angular_core.TemplateRef<unknown> | null>;
2915
+ setHeaderTemplate: (template: _angular_core.TemplateRef<unknown> | null) => void;
2916
+ componentInstance: () => object | null;
2917
+ close: (result?: unknown) => void;
2918
+ closeVia: (source: _ethlete_core.OverlayRuntimeCloseSource, result?: unknown) => void;
2919
+ updatePositionStrategy: (strategy: _ethlete_core.OverlayRuntimePositionStrategy) => void;
2920
+ attachComponentInstanceOverride: (getter: () => object | null) => void;
2921
+ afterOpened: () => rxjs.Observable<void>;
2922
+ beforeClosed: () => rxjs.Observable<unknown>;
2923
+ afterClosed: () => rxjs.Observable<unknown>;
2924
+ attachRuntime: (runtimeRef: _ethlete_core.OverlayRuntimeRef<object, unknown>) => void;
2925
+ };
2926
+ protected router: _ethlete_components.OverlayRouter;
2927
+ animatedLifecycle: _angular_core.Signal<AnimatedLifecycleDirective>;
2928
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<OverlayRouteHeaderTemplateOutletComponent, never>;
2929
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<OverlayRouteHeaderTemplateOutletComponent, "et-overlay-route-header-template-outlet", never, {}, {}, never, never, true, never>;
2930
+ }
2931
+
2932
+ declare const OVERLAY_ROUTER_CONFIG_TOKEN: InjectionToken<OverlayRouterConfig>;
2933
+ type OverlayRoute = {
2934
+ /** The component to render. */
2935
+ component: Type<unknown>;
2936
+ /**
2937
+ * The route of the page.
2938
+ *
2939
+ * @example
2940
+ * "/" // The root route
2941
+ * "/two" // The route "two"
2942
+ */
2943
+ path: `/${string}`;
2944
+ /** The inputs to pass to the component. Signal values are unwrapped. */
2945
+ inputs?: Record<string, unknown>;
2946
+ /**
2947
+ * Overrides the animation direction used when navigating to or away from this route.
2948
+ * Useful for routes that conceptually sit "before" the others, like a sidebar page that
2949
+ * should slide in from the left. An explicit direction passed to `navigate()` always wins.
2950
+ */
2951
+ navigationDirection?: {
2952
+ /** Direction to play when this route becomes active. */
2953
+ to?: OverlayRouterNavigationDirection;
2954
+ /** Direction to play when navigating away from this route. */
2955
+ from?: OverlayRouterNavigationDirection;
2956
+ };
2957
+ };
2958
+ type OverlayRouterConfig = {
2959
+ /** The routes to be able to navigate to. */
2960
+ routes: OverlayRoute[];
2961
+ /**
2962
+ * The route on which to start.
2963
+ * @default routes[0].path // The first route, or "/" if none is defined
2964
+ */
2965
+ initialRoute?: string;
2966
+ /**
2967
+ * Mirror the active overlay route into the browser URL as a query param, enabling deep-linking and
2968
+ * browser back/forward integration. Requires the Angular `Router` to be available.
2969
+ *
2970
+ * @default false
2971
+ */
2972
+ syncUrl?: boolean;
2973
+ };
2974
+ type OverlayRouterNavigationDirection = 'forward' | 'backward';
2975
+ type OverlayRouterNavigateConfig = {
2976
+ navigationDirection?: OverlayRouterNavigationDirection;
2977
+ };
2978
+ type OverlayRouterTransitionType = 'slide' | 'fade' | 'overlay' | 'vertical' | 'none';
2979
+ type OverlayRouterResolvedPath = {
2980
+ route: string;
2981
+ type: 'back' | 'replace-current' | 'absolute' | 'forward';
2982
+ };
2983
+ type OverlayRouter = {
2984
+ /** The current route, but delayed by one frame to ensure that the needed animation classes are applied. */
2985
+ currentRoute: Signal<string>;
2986
+ /** Routes registered at runtime in addition to the configured ones. */
2987
+ extraRoutes: WritableSignal<OverlayRoute[]>;
2988
+ /** The transition to play when navigating between routes. */
2989
+ transitionType: WritableSignal<OverlayRouterTransitionType>;
2990
+ /** The direction of the current navigation. */
2991
+ navigationDirection: WritableSignal<OverlayRouterNavigationDirection>;
2992
+ /** Whether an in-memory history entry exists to go back to. */
2993
+ canGoBack: Signal<boolean>;
2994
+ /** All navigable routes (configured + extra) with signal inputs unwrapped. */
2995
+ routes: Signal<OverlayRoute[]>;
2996
+ /** The route currently being displayed. */
2997
+ currentPage: Signal<OverlayRoute | null>;
2998
+ navigate: (route: string | (string | number)[], config?: OverlayRouterNavigateConfig) => void;
2999
+ back: () => boolean;
3000
+ resolvePath: (route: string | (string | number)[]) => OverlayRouterResolvedPath;
3001
+ addRoute: (route: OverlayRoute) => void;
3002
+ removeRoute: (path: string) => void;
3003
+ /** @internal Returns `true` when the route actually changed. */
3004
+ updateCurrentRoute: (route: string) => boolean;
3005
+ /** @internal */
3006
+ navigateToInitialRoute: () => void;
3007
+ };
3008
+ declare const provideOverlayRouterService: () => Provider[];
3009
+ declare const injectOverlayRouter: {
3010
+ (): OverlayRouter;
3011
+ (options: _angular_core.InjectOptions & {
3012
+ optional?: false;
3013
+ }): OverlayRouter;
3014
+ (options: _angular_core.InjectOptions): OverlayRouter | null;
3015
+ };
3016
+ declare const OVERLAY_ROUTER_TOKEN: InjectionToken<OverlayRouter>;
3017
+ declare const provideOverlayRouterConfig: (config: OverlayRouterConfig) => Provider[];
3018
+ /**
3019
+ * Provides both the overlay router config and the overlay router itself, so a consumer only needs
3020
+ * a single entry in the overlay's `providers` instead of wiring the router separately.
3021
+ *
3022
+ * @example
3023
+ * overlayManager.open(MyOverlay, {
3024
+ * strategies: dialogOverlayStrategy(),
3025
+ * providers: [provideOverlayRouter({ routes: [...] })],
3026
+ * });
3027
+ */
3028
+ declare const provideOverlayRouter: (config: OverlayRouterConfig) => Provider[];
3029
+
3030
+ declare const OVERLAY_ROUTER_LINK_TOKEN: InjectionToken<OverlayRouterLinkDirective>;
3031
+ declare class OverlayRouterLinkDirective {
3032
+ private elementRef;
3033
+ private router;
3034
+ path: _angular_core.InputSignal<string | (string | number)[]>;
3035
+ disabled: _angular_core.InputSignalWithTransform<boolean, unknown>;
3036
+ navigationDirection: _angular_core.InputSignal<OverlayRouterNavigationDirection | null>;
3037
+ isActive: _angular_core.Signal<boolean>;
3038
+ constructor();
3039
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<OverlayRouterLinkDirective, never>;
3040
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<OverlayRouterLinkDirective, "[etOverlayRouterLink]", never, { "path": { "alias": "etOverlayRouterLink"; "required": true; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "navigationDirection": { "alias": "navigationDirection"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
3041
+ }
3042
+
3043
+ declare const OVERLAY_ROUTER_OUTLET_DISABLED_TEMPLATE_TOKEN: InjectionToken<OverlayRouterOutletDisabledTemplateDirective>;
3044
+ declare class OverlayRouterOutletDisabledTemplateDirective {
3045
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<OverlayRouterOutletDisabledTemplateDirective, never>;
3046
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<OverlayRouterOutletDisabledTemplateDirective, "ng-template[etOverlayRouterOutletDisabledTemplate]", never, {}, {}, never, never, true, never>;
3047
+ }
3048
+
3049
+ declare const OVERLAY_ROUTER_OUTLET_TOKEN: InjectionToken<OverlayRouterOutletComponent>;
3050
+ declare class OverlayRouterOutletComponent {
3051
+ private injector;
3052
+ private overlayRef;
3053
+ private elementRef;
3054
+ private document;
3055
+ protected router: _ethlete_components.OverlayRouter;
3056
+ private renderer;
3057
+ disabled: _angular_core.InputSignalWithTransform<boolean, unknown>;
3058
+ sharedRouteTemplate: _angular_core.Signal<TemplateRef<any> | undefined>;
3059
+ outletDisabledTemplate: _angular_core.Signal<TemplateRef<any> | undefined>;
3060
+ pageWrappers: _angular_core.Signal<readonly ElementRef<HTMLElement>[]>;
3061
+ readonly hasSidebar: boolean;
3062
+ wasDisabled: _angular_core.WritableSignal<boolean>;
3063
+ keepDisabledTransition: _angular_core.Signal<boolean>;
3064
+ activePageElement: _angular_core.Signal<HTMLElement | null>;
3065
+ protected transitionType: _angular_core.Signal<_ethlete_components.OverlayRouterTransitionType>;
3066
+ constructor();
3067
+ scrollActivePageTo(options?: ScrollToOptions | undefined): void;
3068
+ disabledPageAnimationStateChange(state: AnimatedLifecycleState): void;
3069
+ /**
3070
+ * Moves focus into the freshly navigated page, mirroring the overlay's own open-time focus behaviour
3071
+ * (first-tabbable by default, so buttons/inputs win over headings). Falls back to the page wrapper when
3072
+ * the page has nothing tabbable. Respects the overlay's `autoFocus` config, including `false`.
3073
+ */
3074
+ private focusActivePage;
3075
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<OverlayRouterOutletComponent, never>;
3076
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<OverlayRouterOutletComponent, "et-overlay-router-outlet", never, { "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; }, {}, ["sharedRouteTemplate", "outletDisabledTemplate"], ["*"], true, never>;
3077
+ }
3078
+
3079
+ declare class OverlaySharedRouteTemplateOutletComponent {
3080
+ protected routerOutlet: _ethlete_components.OverlayRouterOutletComponent;
3081
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<OverlaySharedRouteTemplateOutletComponent, never>;
3082
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<OverlaySharedRouteTemplateOutletComponent, "et-overlay-shared-route-template-outlet", never, {}, {}, never, never, true, never>;
3083
+ }
3084
+
3085
+ declare const OVERLAY_SHARED_ROUTE_TEMPLATE_TOKEN: InjectionToken<OverlaySharedRouteTemplateDirective>;
3086
+ declare class OverlaySharedRouteTemplateDirective {
3087
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<OverlaySharedRouteTemplateDirective, never>;
3088
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<OverlaySharedRouteTemplateDirective, "ng-template[etOverlaySharedRouteTemplate]", never, {}, {}, never, never, true, never>;
3089
+ }
3090
+
3091
+ declare class OverlaySidebarPageComponent {
3092
+ headerTemplate: _angular_core.InputSignal<OverlayHeaderTemplateDirective | null>;
3093
+ bodyTemplate: _angular_core.InputSignal<TemplateRef<unknown> | null>;
3094
+ pageDividers: _angular_core.InputSignal<OverlayBodyDividerType>;
3095
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<OverlaySidebarPageComponent, never>;
3096
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<OverlaySidebarPageComponent, "et-overlay-sidebar-page", never, { "headerTemplate": { "alias": "headerTemplate"; "required": true; "isSignal": true; }; "bodyTemplate": { "alias": "bodyTemplate"; "required": true; "isSignal": true; }; "pageDividers": { "alias": "pageDividers"; "required": false; "isSignal": true; }; }, {}, never, never, true, [{ directive: typeof OverlayMainDirective; inputs: {}; outputs: {}; }]>;
3097
+ }
3098
+
3099
+ declare class OverlaySidebarComponent {
3100
+ protected sidebar: _ethlete_components.SidebarOverlay;
3101
+ pageDividers: _angular_core.InputSignal<OverlayBodyDividerType>;
3102
+ sidebarContent: _angular_core.Signal<TemplateRef<unknown>>;
3103
+ sidebarHeaderContent: _angular_core.Signal<_ethlete_components.OverlayHeaderTemplateDirective | undefined>;
3104
+ constructor();
3105
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<OverlaySidebarComponent, never>;
3106
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<OverlaySidebarComponent, "et-overlay-sidebar", never, { "pageDividers": { "alias": "pageDividers"; "required": false; "isSignal": true; }; }, {}, ["sidebarHeaderContent"], ["*"], true, never>;
3107
+ }
3108
+
3109
+ declare const SIDEBAR_OVERLAY_CONFIG: InjectionToken<SidebarOverlayConfig>;
3110
+ type SidebarOverlayConfig = {
3111
+ /**
3112
+ * On mobile devices, the sidebar is shown as a separate page that can be navigated to.
3113
+ * This is the route to that sidebar page.
3114
+ *
3115
+ * @default "/sidebar"
3116
+ */
3117
+ sidebarPageRoute?: `/${string}`;
3118
+ /**
3119
+ * The width from which the sidebar renders inline (rather than collapsing into a page). Compared
3120
+ * against the overlay's own pane width — not the viewport — so a narrow dialog collapses its
3121
+ * sidebar even on a wide screen. Can be a breakpoint name or a pixel number. Works best with an
3122
+ * overlay that has a defined width.
3123
+ *
3124
+ * @default "md"
3125
+ */
3126
+ renderSidebarFrom?: Breakpoint | number;
3127
+ };
3128
+ type SidebarOverlay = {
3129
+ /** Whether the sidebar renders inline (`true`) or is collapsed into a navigable page (`false`). */
3130
+ renderSidebar: Signal<boolean>;
3131
+ sidebarContentTemplate: WritableSignal<TemplateRef<unknown> | null>;
3132
+ sidebarHeaderTemplate: WritableSignal<OverlayHeaderTemplateDirective | null>;
3133
+ sidebarPageDividers: WritableSignal<OverlayBodyDividerType>;
3134
+ };
3135
+ declare const provideSidebarOverlayService: () => Provider[];
3136
+ declare const injectSidebarOverlay: {
3137
+ (): SidebarOverlay;
3138
+ (options: _angular_core.InjectOptions & {
3139
+ optional?: false;
3140
+ }): SidebarOverlay;
3141
+ (options: _angular_core.InjectOptions): SidebarOverlay | null;
3142
+ };
3143
+ declare const SIDEBAR_OVERLAY_TOKEN: InjectionToken<SidebarOverlay>;
3144
+ declare const provideSidebarOverlayConfig: (config: SidebarOverlayConfig) => Provider[];
3145
+ /**
3146
+ * Provides both the sidebar config and the sidebar overlay service in one call, mirroring
3147
+ * {@link provideOverlayRouter}. Requires an overlay router to also be provided.
3148
+ */
3149
+ declare const provideSidebarOverlay: (config?: SidebarOverlayConfig) => Provider[];
3150
+
3151
+ type AnchoredOverlayStrategyOptions = {
3152
+ containerClass?: string | string[];
3153
+ hostClass?: string | string[];
3154
+ maxWidth?: number | string;
3155
+ maxHeight?: number | string;
3156
+ minWidth?: number | string;
3157
+ minHeight?: number | string;
3158
+ placement?: Placement;
3159
+ fallbackPlacements?: Placement[];
3160
+ offset?: OffsetOptions | null;
3161
+ arrowPadding?: Padding | null;
3162
+ viewportPadding?: Padding | null;
3163
+ shift?: boolean;
3164
+ autoResize?: boolean;
3165
+ autoHide?: boolean;
3166
+ autoCloseIfReferenceHidden?: boolean;
3167
+ mirrorWidth?: boolean;
3168
+ /** Render a floating-ui-positioned arrow on the container pointing at the origin. */
3169
+ arrow?: boolean;
3170
+ };
3171
+ type CenteredOverlayStrategyOptions = {
3172
+ containerClass?: string | string[];
3173
+ hostClass?: string | string[];
3174
+ maxWidth?: number | string;
3175
+ maxHeight?: number | string;
3176
+ minWidth?: number | string;
3177
+ minHeight?: number | string;
3178
+ };
3179
+ type AnchoredPositionOptions = Pick<AnchoredOverlayStrategyOptions, 'placement' | 'fallbackPlacements' | 'offset' | 'arrowPadding' | 'viewportPadding' | 'shift' | 'autoResize' | 'autoHide' | 'autoCloseIfReferenceHidden' | 'mirrorWidth'>;
3180
+ declare const buildAnchoredRuntimePositionStrategy: (options?: AnchoredPositionOptions) => (origin?: HTMLElement) => OverlayRuntimePositionStrategy;
3181
+ declare const anchoredOverlayStrategy: (options?: AnchoredOverlayStrategyOptions) => (() => OverlayStrategyBreakpoint[]);
3182
+ declare const centeredOverlayStrategy: (options?: CenteredOverlayStrategyOptions) => (() => OverlayStrategyBreakpoint[]);
3183
+
3184
+ type AnchoredDialogOverlayStrategyOptions = Partial<OverlayBreakpointConfig> & AnchoredPositionOptions;
3185
+ declare const provideAnchoredDialogStrategyDefaults: (valueOverride?: Partial<OverlayBreakpointConfig> | undefined) => _angular_core.Provider[];
3186
+ declare const injectAnchoredDialogStrategyDefaults: {
3187
+ (): OverlayBreakpointConfig;
3188
+ (options: _angular_core.InjectOptions & {
3189
+ optional?: false;
3190
+ }): OverlayBreakpointConfig;
3191
+ (options: _angular_core.InjectOptions): OverlayBreakpointConfig | null;
3192
+ };
3193
+ declare const provideAnchoredDialogStrategy: () => _angular_core.Provider[];
3194
+ declare const injectAnchoredDialogStrategy: {
3195
+ (): {
3196
+ build: (config?: Partial<OverlayBreakpointConfig>) => OverlayStrategy;
3197
+ };
3198
+ (options: _angular_core.InjectOptions & {
3199
+ optional?: false;
3200
+ }): {
3201
+ build: (config?: Partial<OverlayBreakpointConfig>) => OverlayStrategy;
3202
+ };
3203
+ (options: _angular_core.InjectOptions): {
3204
+ build: (config?: Partial<OverlayBreakpointConfig>) => OverlayStrategy;
3205
+ } | null;
3206
+ };
3207
+ declare const anchoredDialogOverlayStrategy: (options?: AnchoredDialogOverlayStrategyOptions) => (() => OverlayStrategyBreakpoint[]);
3208
+
3209
+ declare const provideBottomSheetStrategyDefaults: (valueOverride?: Partial<OverlayBreakpointConfig> | undefined) => _angular_core.Provider[];
3210
+ declare const injectBottomSheetStrategyDefaults: {
3211
+ (): OverlayBreakpointConfig;
3212
+ (options: _angular_core.InjectOptions & {
3213
+ optional?: false;
3214
+ }): OverlayBreakpointConfig;
3215
+ (options: _angular_core.InjectOptions): OverlayBreakpointConfig | null;
3216
+ };
3217
+ declare const provideBottomSheetStrategy: () => _angular_core.Provider[];
3218
+ declare const injectBottomSheetStrategy: {
3219
+ (): {
3220
+ build: (config?: Partial<OverlayBreakpointConfig>) => _ethlete_components.OverlayStrategy;
3221
+ };
3222
+ (options: _angular_core.InjectOptions & {
3223
+ optional?: false;
3224
+ }): {
3225
+ build: (config?: Partial<OverlayBreakpointConfig>) => _ethlete_components.OverlayStrategy;
3226
+ };
3227
+ (options: _angular_core.InjectOptions): {
3228
+ build: (config?: Partial<OverlayBreakpointConfig>) => _ethlete_components.OverlayStrategy;
3229
+ } | null;
3230
+ };
3231
+ declare const bottomSheetOverlayStrategy: (config?: Partial<OverlayBreakpointConfig>) => (() => OverlayStrategyBreakpoint[]);
3232
+
3233
+ declare const provideDialogStrategyDefaults: (valueOverride?: Partial<OverlayBreakpointConfig> | undefined) => _angular_core.Provider[];
3234
+ declare const injectDialogStrategyDefaults: {
3235
+ (): OverlayBreakpointConfig;
3236
+ (options: _angular_core.InjectOptions & {
3237
+ optional?: false;
3238
+ }): OverlayBreakpointConfig;
3239
+ (options: _angular_core.InjectOptions): OverlayBreakpointConfig | null;
3240
+ };
3241
+ declare const provideDialogStrategy: () => _angular_core.Provider[];
3242
+ declare const injectDialogStrategy: {
3243
+ (): {
3244
+ build: (config?: Partial<OverlayBreakpointConfig>) => OverlayStrategy;
3245
+ };
3246
+ (options: _angular_core.InjectOptions & {
3247
+ optional?: false;
3248
+ }): {
3249
+ build: (config?: Partial<OverlayBreakpointConfig>) => OverlayStrategy;
3250
+ };
3251
+ (options: _angular_core.InjectOptions): {
3252
+ build: (config?: Partial<OverlayBreakpointConfig>) => OverlayStrategy;
3253
+ } | null;
3254
+ };
3255
+ declare const dialogOverlayStrategy: (config?: Partial<OverlayBreakpointConfig>) => (() => OverlayStrategyBreakpoint[]);
3256
+
3257
+ declare const provideFullscreenDialogStrategyDefaults: (valueOverride?: Partial<OverlayBreakpointConfig> | undefined) => _angular_core.Provider[];
3258
+ declare const injectFullscreenDialogStrategyDefaults: {
3259
+ (): OverlayBreakpointConfig;
3260
+ (options: _angular_core.InjectOptions & {
3261
+ optional?: false;
3262
+ }): OverlayBreakpointConfig;
3263
+ (options: _angular_core.InjectOptions): OverlayBreakpointConfig | null;
3264
+ };
3265
+ declare const provideFullscreenDialogStrategy: () => _angular_core.Provider[];
3266
+ declare const injectFullscreenDialogStrategy: {
3267
+ (): {
3268
+ build: (config?: Partial<OverlayBreakpointConfig>) => OverlayStrategy;
3269
+ };
3270
+ (options: _angular_core.InjectOptions & {
3271
+ optional?: false;
3272
+ }): {
3273
+ build: (config?: Partial<OverlayBreakpointConfig>) => OverlayStrategy;
3274
+ };
3275
+ (options: _angular_core.InjectOptions): {
3276
+ build: (config?: Partial<OverlayBreakpointConfig>) => OverlayStrategy;
3277
+ } | null;
3278
+ };
3279
+ declare const fullScreenDialogOverlayStrategy: (config?: Partial<OverlayBreakpointConfig>) => (() => OverlayStrategyBreakpoint[]);
3280
+
3281
+ declare class OverlayOriginCloneComponent {
3282
+ animatedLifecycle: AnimatedLifecycleDirective;
3283
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<OverlayOriginCloneComponent, never>;
3284
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<OverlayOriginCloneComponent, "et-overlay-origin-clone", never, {}, {}, never, ["*"], true, [{ directive: typeof _ethlete_core.AnimatedLifecycleDirective; inputs: {}; outputs: {}; }]>;
3285
+ }
3286
+
3287
+ type ViewportTransformData = {
3288
+ viewportWidth: number;
3289
+ viewportHeight: number;
3290
+ rect: DOMRect;
3291
+ scaleUpX: number;
3292
+ scaleUpY: number;
3293
+ viewportCenterX: number;
3294
+ viewportCenterY: number;
3295
+ buttonCenterX: number;
3296
+ buttonCenterY: number;
3297
+ cloneTranslateX: number;
3298
+ cloneTranslateY: number;
3299
+ containerTranslateX: number;
3300
+ containerTranslateY: number;
3301
+ scaleX: number;
3302
+ scaleY: number;
3303
+ };
3304
+ type FullscreenAnimationCancellable = {
3305
+ unsubscribe: () => void;
3306
+ };
3307
+ type FullscreenAnimationState = {
3308
+ readonly originElement: HTMLElement | null;
3309
+ readonly cloneComponentRef: ComponentRef<OverlayOriginCloneComponent> | null;
3310
+ readonly subscriptions: FullscreenAnimationCancellable[];
3311
+ readonly isOriginHidden: boolean;
3312
+ };
3313
+ type FullscreenAnimationDeps = {
3314
+ readonly injector: EnvironmentInjector;
3315
+ readonly document: Document;
3316
+ readonly appRef: ApplicationRef;
3317
+ readonly renderer: AngularRenderer;
3318
+ };
3319
+ declare const cleanupFullscreenAnimationStyles: (options: {
3320
+ containerEl: HTMLElement;
3321
+ renderer: AngularRenderer;
3322
+ state: FullscreenAnimationState | null;
3323
+ }) => void;
3324
+ declare const startFullscreenEnterAnimation: (options: {
3325
+ context: OverlayStrategyContext;
3326
+ deps: FullscreenAnimationDeps;
3327
+ applyTransformOrigin: boolean;
3328
+ skipAnimation: boolean;
3329
+ }) => FullscreenAnimationState;
3330
+ declare const startFullscreenLeaveAnimation: (options: {
3331
+ context: OverlayStrategyContext;
3332
+ state: FullscreenAnimationState;
3333
+ deps: FullscreenAnimationDeps;
3334
+ applyTransformOrigin: boolean;
3335
+ }) => FullscreenAnimationState;
3336
+ declare const cleanupFullscreenAnimation: (state: FullscreenAnimationState, deps: FullscreenAnimationDeps) => void;
3337
+ declare const abortFullscreenAnimation: (options: {
3338
+ context: OverlayStrategyContext;
3339
+ state: FullscreenAnimationState;
3340
+ deps: FullscreenAnimationDeps;
3341
+ }) => void;
3342
+
3343
+ declare const provideLeftSheetStrategyDefaults: (valueOverride?: Partial<OverlayBreakpointConfig> | undefined) => _angular_core.Provider[];
3344
+ declare const injectLeftSheetStrategyDefaults: {
3345
+ (): OverlayBreakpointConfig;
3346
+ (options: _angular_core.InjectOptions & {
3347
+ optional?: false;
3348
+ }): OverlayBreakpointConfig;
3349
+ (options: _angular_core.InjectOptions): OverlayBreakpointConfig | null;
3350
+ };
3351
+ declare const provideLeftSheetStrategy: () => _angular_core.Provider[];
3352
+ declare const injectLeftSheetStrategy: {
3353
+ (): {
3354
+ build: (config?: Partial<OverlayBreakpointConfig>) => _ethlete_components.OverlayStrategy;
3355
+ };
3356
+ (options: _angular_core.InjectOptions & {
3357
+ optional?: false;
3358
+ }): {
3359
+ build: (config?: Partial<OverlayBreakpointConfig>) => _ethlete_components.OverlayStrategy;
3360
+ };
3361
+ (options: _angular_core.InjectOptions): {
3362
+ build: (config?: Partial<OverlayBreakpointConfig>) => _ethlete_components.OverlayStrategy;
3363
+ } | null;
3364
+ };
3365
+ declare const leftSheetOverlayStrategy: (config?: Partial<OverlayBreakpointConfig>) => (() => OverlayStrategyBreakpoint[]);
3366
+
3367
+ type DragToDismissContext = {
3368
+ element: HTMLElement;
3369
+ overlayRef: OverlayRef<object, unknown>;
3370
+ config: OverlayDragToDismissConfig;
3371
+ renderer: AngularRenderer;
3372
+ };
3373
+ type DragToDismissRef = {
3374
+ unsubscribe: () => void;
3375
+ };
3376
+ /**
3377
+ * Enables drag-to-dismiss functionality on an overlay element.
3378
+ * Returns a cleanup function to disable the feature.
3379
+ */
3380
+ declare const enableDragToDismiss: (context: DragToDismissContext) => DragToDismissRef;
3381
+
3382
+ declare const isHtmlElement: (element: unknown) => element is HTMLElement;
3383
+ declare const isTouchEvent: (event: Event) => event is TouchEvent;
3384
+ declare const isPointerEvent: (event: Event) => event is PointerEvent;
3385
+ declare const findNextRelevantHtmlElement: (element: HTMLElement | null, depth?: number) => HTMLElement | null;
3386
+ declare const getOriginCoordinatesAndDimensions: (origin: HTMLElement | Event | undefined) => {
3387
+ x: number;
3388
+ y: number;
3389
+ width: number;
3390
+ height: number;
3391
+ element: HTMLElement;
3392
+ } | null;
3393
+
3394
+ declare const OVERLAY_CONFIG_CLASS_KEYS: Set<string>;
3395
+ declare const mergeOverlayBreakpointConfigs: (...configs: OverlayBreakpointConfig[]) => OverlayBreakpointConfig;
3396
+
3397
+ type OverlayStrategyControllerMountConfig = {
3398
+ positionStrategy: OverlayRuntimePositionStrategy;
3399
+ paneClass: string[];
3400
+ hostClass: string[];
3401
+ backdropClass: string[];
3402
+ animationDelegate: OverlayRuntimeAnimationDelegate;
3403
+ renderArrow: boolean;
3404
+ hasBackdrop: boolean | undefined;
3405
+ };
3406
+ type OverlayStrategyController = {
3407
+ /** Values the overlay manager merges into the runtime mount config before mounting. */
3408
+ initialMountConfig: OverlayStrategyControllerMountConfig;
3409
+ /** Wires strategy lifecycle hooks and breakpoint switching. Must be called right after mounting. */
3410
+ attach: (runtimeRef: OverlayRuntimeRef<object, unknown>, overlayRef: OverlayRef<object, unknown>) => void;
3411
+ };
3412
+ declare const createOverlayStrategyController: (config: OverlayConfig, parentInjector: EnvironmentInjector) => OverlayStrategyController;
3413
+
3414
+ declare const transformingBottomSheetToDialogOverlayStrategy: (customConfig?: {
3415
+ bottomSheet?: OverlayBreakpointConfig;
3416
+ dialog?: OverlayBreakpointConfig;
3417
+ breakpoint?: Breakpoint | number;
3418
+ }) => (() => OverlayStrategyBreakpoint[]);
3419
+ declare const transformingFullScreenDialogToRightSheetOverlayStrategy: (customConfig?: {
3420
+ fullScreenDialog?: OverlayBreakpointConfig;
3421
+ rightSheet?: OverlayBreakpointConfig;
3422
+ breakpoint?: Breakpoint | number;
3423
+ }) => (() => OverlayStrategyBreakpoint[]);
3424
+ declare const transformingFullScreenDialogToDialogOverlayStrategy: (customConfig?: {
3425
+ fullScreenDialog?: OverlayBreakpointConfig;
3426
+ dialog?: OverlayBreakpointConfig;
3427
+ breakpoint?: Breakpoint | number;
3428
+ }) => (() => OverlayStrategyBreakpoint[]);
3429
+
3430
+ declare const provideRightSheetStrategyDefaults: (valueOverride?: Partial<OverlayBreakpointConfig> | undefined) => _angular_core.Provider[];
3431
+ declare const injectRightSheetStrategyDefaults: {
3432
+ (): OverlayBreakpointConfig;
3433
+ (options: _angular_core.InjectOptions & {
3434
+ optional?: false;
3435
+ }): OverlayBreakpointConfig;
3436
+ (options: _angular_core.InjectOptions): OverlayBreakpointConfig | null;
3437
+ };
3438
+ declare const provideRightSheetStrategy: () => _angular_core.Provider[];
3439
+ declare const injectRightSheetStrategy: {
3440
+ (): {
3441
+ build: (config?: Partial<OverlayBreakpointConfig>) => _ethlete_components.OverlayStrategy;
3442
+ };
3443
+ (options: _angular_core.InjectOptions & {
3444
+ optional?: false;
3445
+ }): {
3446
+ build: (config?: Partial<OverlayBreakpointConfig>) => _ethlete_components.OverlayStrategy;
3447
+ };
3448
+ (options: _angular_core.InjectOptions): {
3449
+ build: (config?: Partial<OverlayBreakpointConfig>) => _ethlete_components.OverlayStrategy;
3450
+ } | null;
3451
+ };
3452
+ declare const rightSheetOverlayStrategy: (config?: Partial<OverlayBreakpointConfig>) => (() => OverlayStrategyBreakpoint[]);
3453
+
3454
+ declare const provideTopSheetStrategyDefaults: (valueOverride?: Partial<OverlayBreakpointConfig> | undefined) => _angular_core.Provider[];
3455
+ declare const injectTopSheetStrategyDefaults: {
3456
+ (): OverlayBreakpointConfig;
3457
+ (options: _angular_core.InjectOptions & {
3458
+ optional?: false;
3459
+ }): OverlayBreakpointConfig;
3460
+ (options: _angular_core.InjectOptions): OverlayBreakpointConfig | null;
3461
+ };
3462
+ declare const provideTopSheetStrategy: () => _angular_core.Provider[];
3463
+ declare const injectTopSheetStrategy: {
3464
+ (): {
3465
+ build: (config?: Partial<OverlayBreakpointConfig>) => _ethlete_components.OverlayStrategy;
3466
+ };
3467
+ (options: _angular_core.InjectOptions & {
3468
+ optional?: false;
3469
+ }): {
3470
+ build: (config?: Partial<OverlayBreakpointConfig>) => _ethlete_components.OverlayStrategy;
3471
+ };
3472
+ (options: _angular_core.InjectOptions): {
3473
+ build: (config?: Partial<OverlayBreakpointConfig>) => _ethlete_components.OverlayStrategy;
3474
+ } | null;
3475
+ };
3476
+ declare const topSheetOverlayStrategy: (config?: Partial<OverlayBreakpointConfig>) => (() => OverlayStrategyBreakpoint[]);
1732
3477
 
1733
3478
  declare class ScrollableActiveChildDirective {
1734
3479
  private scrollable;
@@ -2384,8 +4129,8 @@ type PipManager = {
2384
4129
  declare class PipBackDirective {
2385
4130
  private chrome;
2386
4131
  private tokenEntry;
2387
- entry: _angular_core.InputSignal<StreamPipEntry | undefined>;
2388
4132
  private pipManager;
4133
+ entry: _angular_core.InputSignal<StreamPipEntry | undefined>;
2389
4134
  back(event: Event): void;
2390
4135
  private resolveEntry;
2391
4136
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<PipBackDirective, never>;
@@ -2564,8 +4309,8 @@ declare class PipCloseDirective {
2564
4309
  private chrome;
2565
4310
  private pipWindow;
2566
4311
  private tokenEntry;
2567
- entry: _angular_core.InputSignal<StreamPipEntry | undefined>;
2568
4312
  private pipManager;
4313
+ entry: _angular_core.InputSignal<StreamPipEntry | undefined>;
2569
4314
  close(event: Event): void;
2570
4315
  private resolveEntry;
2571
4316
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<PipCloseDirective, never>;
@@ -2604,10 +4349,10 @@ declare class PipTitleBarDirective {
2604
4349
  declare const PIP_WINDOW_ASPECT_RATIO_TOKEN: InjectionToken<Signal<number>>;
2605
4350
 
2606
4351
  declare class StreamPipChromeComponent implements PipChromeRef {
4352
+ pipManager: _ethlete_components.PipManager;
2607
4353
  stageRef: _angular_core.Signal<ElementRef<HTMLElement> | undefined>;
2608
4354
  pipWindowRef: _angular_core.Signal<PipWindowComponent | undefined>;
2609
4355
  gridBtnRef: _angular_core.Signal<ElementRef<HTMLElement> | undefined>;
2610
- pipManager: _ethlete_components.PipManager;
2611
4356
  state: _ethlete_components.PipChromeState;
2612
4357
  animations: _ethlete_components.PipChromeAnimations;
2613
4358
  readonly CLOSE_KIND: "close";
@@ -2621,11 +4366,11 @@ declare class PipPlayerComponent {
2621
4366
  private document;
2622
4367
  private el;
2623
4368
  protected pipCell: PipCellDirective | null;
2624
- entry: _angular_core.InputSignal<StreamPipEntry | undefined>;
2625
- showThumbnail: _angular_core.InputSignal<boolean | undefined>;
2626
4369
  private streamManager;
2627
4370
  private pipManager;
2628
4371
  private renderer;
4372
+ entry: _angular_core.InputSignal<StreamPipEntry | undefined>;
4373
+ showThumbnail: _angular_core.InputSignal<boolean | undefined>;
2629
4374
  isReady: _angular_core.WritableSignal<boolean>;
2630
4375
  resolvedEntry: _angular_core.Signal<StreamPipEntry>;
2631
4376
  thumbnailUrl: _angular_core.Signal<string | null>;
@@ -2663,11 +4408,11 @@ declare const injectPipSlotPlaceholderConfig: {
2663
4408
  declare class PipSlotPlaceholderComponent {
2664
4409
  private slotPlayerId;
2665
4410
  private parentSurfaceProvider;
2666
- private bringBackDir;
2667
4411
  private pipManager;
2668
4412
  private config;
2669
4413
  private locale;
2670
4414
  private surfaceThemes;
4415
+ private bringBackDir;
2671
4416
  cardSurface: _angular_core.Signal<string | null>;
2672
4417
  isInPip: _angular_core.Signal<boolean>;
2673
4418
  message: _angular_core.Signal<string>;
@@ -2710,10 +4455,10 @@ declare class StreamPlayerSlotDirective {
2710
4455
  private playerComponent;
2711
4456
  private provideSurface;
2712
4457
  private parentSurfaceProvider;
2713
- streamSlotPriority: _angular_core.InputSignalWithTransform<boolean, unknown>;
2714
- streamSlotOnPipBack: _angular_core.InputSignal<(() => void) | undefined>;
2715
4458
  private surfaceThemes;
2716
4459
  private styleManager;
4460
+ streamSlotPriority: _angular_core.InputSignalWithTransform<boolean, unknown>;
4461
+ streamSlotOnPipBack: _angular_core.InputSignal<(() => void) | undefined>;
2717
4462
  private resolvedSurface;
2718
4463
  slot: _ethlete_components.StreamPlayerSlotHandle;
2719
4464
  constructor();
@@ -3708,6 +5453,7 @@ declare class ToggletipDirective {
3708
5453
  private elementRef;
3709
5454
  private colorProvider;
3710
5455
  private surfaceProvider;
5456
+ private overlayManager;
3711
5457
  content: _angular_core.InputSignal<ToggletipContent | null>;
3712
5458
  ariaLabel: _angular_core.InputSignal<string | null>;
3713
5459
  ariaLabelledBy: _angular_core.InputSignal<string | null>;
@@ -3718,7 +5464,6 @@ declare class ToggletipDirective {
3718
5464
  viewportPadding: _angular_core.InputSignal<Padding | null>;
3719
5465
  disabled: _angular_core.InputSignal<boolean>;
3720
5466
  open: _angular_core.ModelSignal<boolean>;
3721
- private overlayManager;
3722
5467
  /** @internal */
3723
5468
  overlayRef: _angular_core.WritableSignal<OverlayRef<ToggletipComponent, unknown> | null>;
3724
5469
  private toggletipId;
@@ -3741,24 +5486,18 @@ declare class ToggletipDirective {
3741
5486
 
3742
5487
  declare class ToggletipComponent {
3743
5488
  private ownColorProvider;
3744
- private ownSurfaceProvider;
3745
5489
  private triggerColorProvider;
3746
- private triggerSurfaceProvider;
3747
5490
  protected injector: Injector;
3748
5491
  toggletipId: _angular_core.InputSignal<string>;
3749
5492
  protected contentId: _angular_core.InputSignal<string>;
3750
5493
  content: _angular_core.InputSignal<ToggletipContent>;
3751
5494
  colorProvider: _angular_core.InputSignal<ProvideColorDirective | null>;
3752
- surfaceProvider: _angular_core.InputSignal<ProvideSurfaceDirective | null>;
3753
- animatedLifecycle: _angular_core.Signal<AnimatedLifecycleDirective | undefined>;
3754
- private surfaceThemes;
3755
5495
  hasTemplate: _angular_core.Signal<boolean>;
3756
5496
  contentText: _angular_core.Signal<string | null>;
3757
5497
  contentTemplate: _angular_core.Signal<TemplateRef<unknown> | null>;
3758
- resolvedSurface: _angular_core.Signal<string | null>;
3759
5498
  constructor();
3760
5499
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<ToggletipComponent, never>;
3761
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<ToggletipComponent, "et-toggletip", never, { "toggletipId": { "alias": "toggletipId"; "required": true; "isSignal": true; }; "contentId": { "alias": "contentId"; "required": true; "isSignal": true; }; "content": { "alias": "content"; "required": true; "isSignal": true; }; "colorProvider": { "alias": "colorProvider"; "required": true; "isSignal": true; }; "surfaceProvider": { "alias": "surfaceProvider"; "required": true; "isSignal": true; }; }, {}, never, never, true, [{ directive: typeof _ethlete_core.ProvideColorDirective; inputs: {}; outputs: {}; }, { directive: typeof _ethlete_core.ProvideSurfaceDirective; inputs: {}; outputs: {}; }]>;
5500
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ToggletipComponent, "et-toggletip", never, { "toggletipId": { "alias": "toggletipId"; "required": true; "isSignal": true; }; "contentId": { "alias": "contentId"; "required": true; "isSignal": true; }; "content": { "alias": "content"; "required": true; "isSignal": true; }; "colorProvider": { "alias": "colorProvider"; "required": true; "isSignal": true; }; }, {}, never, never, true, [{ directive: typeof _ethlete_core.ProvideColorDirective; inputs: {}; outputs: {}; }, { directive: typeof _ethlete_core.AutoSurfaceDirective; inputs: { "surfaceProvider": "surfaceProvider"; }; outputs: {}; }]>;
3762
5501
  }
3763
5502
 
3764
5503
  declare class ToggletipCloseDirective {
@@ -3789,22 +5528,16 @@ declare const TOGGLETIP_IMPORTS: readonly [typeof ToggletipDirective, typeof Tog
3789
5528
 
3790
5529
  declare class TooltipComponent {
3791
5530
  private ownColorProvider;
3792
- private ownSurfaceProvider;
3793
5531
  private triggerColorProvider;
3794
- private triggerSurfaceProvider;
3795
5532
  tooltipId: _angular_core.InputSignal<string>;
3796
5533
  content: _angular_core.InputSignal<TooltipContent>;
3797
5534
  colorProvider: _angular_core.InputSignal<ProvideColorDirective | null>;
3798
- surfaceProvider: _angular_core.InputSignal<ProvideSurfaceDirective | null>;
3799
- animatedLifecycle: _angular_core.Signal<AnimatedLifecycleDirective | undefined>;
3800
- private surfaceThemes;
3801
5535
  hasTemplate: _angular_core.Signal<boolean>;
3802
5536
  contentText: _angular_core.Signal<string | null>;
3803
5537
  contentTemplate: _angular_core.Signal<TemplateRef<unknown> | null>;
3804
- resolvedSurface: _angular_core.Signal<string | null>;
3805
5538
  constructor();
3806
5539
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<TooltipComponent, never>;
3807
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<TooltipComponent, "et-tooltip", never, { "tooltipId": { "alias": "tooltipId"; "required": true; "isSignal": true; }; "content": { "alias": "content"; "required": true; "isSignal": true; }; "colorProvider": { "alias": "colorProvider"; "required": true; "isSignal": true; }; "surfaceProvider": { "alias": "surfaceProvider"; "required": true; "isSignal": true; }; }, {}, never, never, true, [{ directive: typeof _ethlete_core.ProvideColorDirective; inputs: {}; outputs: {}; }, { directive: typeof _ethlete_core.ProvideSurfaceDirective; inputs: {}; outputs: {}; }]>;
5540
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<TooltipComponent, "et-tooltip", never, { "tooltipId": { "alias": "tooltipId"; "required": true; "isSignal": true; }; "content": { "alias": "content"; "required": true; "isSignal": true; }; "colorProvider": { "alias": "colorProvider"; "required": true; "isSignal": true; }; }, {}, never, never, true, [{ directive: typeof _ethlete_core.ProvideColorDirective; inputs: {}; outputs: {}; }, { directive: typeof _ethlete_core.AutoSurfaceDirective; inputs: { "surfaceProvider": "surfaceProvider"; }; outputs: {}; }]>;
3808
5541
  }
3809
5542
 
3810
5543
  type TooltipContent = string | TemplateRef<unknown>;
@@ -3814,6 +5547,9 @@ declare class TooltipDirective {
3814
5547
  private elementRef;
3815
5548
  private colorProvider;
3816
5549
  private surfaceProvider;
5550
+ private overlayManager;
5551
+ private focusVisibleTracker;
5552
+ private renderer;
3817
5553
  content: _angular_core.InputSignal<TooltipContent | null>;
3818
5554
  ariaDescription: _angular_core.InputSignal<string | null>;
3819
5555
  placement: _angular_core.InputSignal<Placement>;
@@ -3823,9 +5559,6 @@ declare class TooltipDirective {
3823
5559
  viewportPadding: _angular_core.InputSignal<Padding | null>;
3824
5560
  showDelay: _angular_core.InputSignal<number>;
3825
5561
  disabled: _angular_core.InputSignal<boolean>;
3826
- private overlayManager;
3827
- private focusVisibleTracker;
3828
- private renderer;
3829
5562
  /** @internal */
3830
5563
  overlayRef: _angular_core.WritableSignal<OverlayRef<TooltipComponent, unknown> | null>;
3831
5564
  private hasHover;
@@ -3851,5 +5584,5 @@ declare const TOOLTIP_ERROR_CODES: {
3851
5584
 
3852
5585
  declare const TOOLTIP_IMPORTS: readonly [typeof TooltipDirective, typeof TooltipComponent];
3853
5586
 
3854
- export { 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, CHECKBOX_IMPORTS, CHEVRON_ICON, CHOICE_FIELD_IMPORTS, CLIPBOARD_CHECK_ICON, CheckboxComponent, CheckboxDirective, CheckboxGroupComponent, CheckboxOptionComponent, ChoiceFieldComponent, DAILYMOTION_PLAYER_TOKEN, DEFAULT_NOTIFICATION_MANAGER_CONFIG, DEFAULT_PIP_WINDOW_CONFIG, DEFAULT_STREAM_PLAYER_STATE, DailymotionPlayerComponent, DailymotionPlayerDirective, DailymotionPlayerParamsDirective, DailymotionPlayerSlotComponent, DescriptionComponent, FACEBOOK_PLAYER_TOKEN, FLOPPY_DISK_ICON, FOCUS_FRAME_ICON, 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, GridItemDirective, GridItemRef, GridResizeDirective, HintComponent, ICONS_TOKEN, ICON_DIRECTIVE_TOKEN, ICON_ERROR_CODES, ICON_IMPORTS, INPUT_IMPORTS, INPUT_TEXT_ALIGNMENTS, INPUT_TYPES, ITALIC_ICON, IconButtonComponent, IconDirective, InputComponent, InputDirective, InputPrefixDirective, InputSuffixDirective, KICK_PLAYER_TOKEN, KickPlayerComponent, KickPlayerDirective, KickPlayerParamsDirective, KickPlayerSlotComponent, LINK_ICON, LIST_BULLETED_ICON, LIST_NUMBERED_ICON, LOCK_ICON, LabelDirective, NAV_TABS_TOKEN, NOTIFICATION_ERROR_CODES, NOTIFICATION_IMPORTS, NOTIFICATION_STACK_CONTEXT_TOKEN, NOTIFICATION_STATUS, NavTabImports, NavTabLinkComponent, NavTabLinkDirective, NavTabsComponent, NavTabsDirective, NavTabsOutletComponent, NavTabsOutletDirective, NotificationActionDirective, NotificationComponent, NotificationDirective, NotificationDismissDirective, NotificationItemDirective, NotificationStackDirective, OVERLAY_ERROR_CODES, OVERLAY_IMPORTS, OVERLAY_REF, OverlayAnchorDirective, OverlayDirective, OverlaySurfaceDirective, OverlayTriggerDirective, PENCIL_ICON, PIP_CHROME_REF_TOKEN, PIP_ENTRY_TOKEN, PIP_WINDOW_ASPECT_RATIO_TOKEN, PLUS_ICON, PipBackDirective, PipBringBackDirective, PipCellDirective, PipCloseDirective, PipCollapseOverlayDirective, PipGridToggleDirective, PipPlayerComponent, PipSlotPlaceholderComponent, PipStageDirective, PipTitleBarDirective, PipTitleBarTemplateDirective, PipWindowComponent, PipWindowParamsDirective, ProgressBarComponent, RICH_TEXT_EDITOR_IMPORTS, RadioComponent, RadioGroupComponent, RichTextEditorComponent, RichTextEditorDirective, SCROLLABLE_IMPORTS, SELECTION_LIST_MULTIPLE, SELECTION_LIST_TOKEN, SOOP_PLAYER_TOKEN, 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, SWITCH_IMPORTS, ScrollableActiveChildDirective, ScrollableButtonsDirective, ScrollableComponent, ScrollableDarkenDirective, ScrollableDirective, ScrollableDragDirective, ScrollableErrorCode, ScrollableIgnoreChildDirective, ScrollableLoadingTemplateDirective, ScrollableMasksDirective, ScrollableNavigationDirective, ScrollableSnapDirective, SegmentedButtonComponent, SegmentedButtonGroupComponent, SelectionListControlDirective, SelectionListDirective, SelectionOptionDirective, SoopPlayerComponent, SoopPlayerDirective, SoopPlayerParamsDirective, SoopPlayerSlotComponent, SpinnerComponent, StreamConsentAcceptDirective, StreamConsentComponent, StreamConsentDirective, StreamImports, StreamPipChromeComponent, StreamPlayerErrorComponent, StreamPlayerErrorDirective, StreamPlayerLoadingComponent, StreamPlayerSlotDirective, SwitchComponent, SwitchDirective, 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, TIKTOK_PLAYER_TOKEN, TIMES_ICON, 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, TextButtonComponent, TikTokPlayerComponent, TikTokPlayerDirective, TikTokPlayerParamsDirective, TikTokPlayerSlotComponent, ToggletipCloseDirective, ToggletipComponent, ToggletipDirective, ToggletipTriggerDirective, TooltipComponent, TooltipDirective, TwitchPlayerComponent, TwitchPlayerDirective, TwitchPlayerParamsDirective, TwitchPlayerSlotComponent, 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, createGridAdapter, createNotificationRef, createOverlayRef, createPipChromeAnimations, createPipChromeState, createStreamConfig, createStreamPlayerSlot, fromGridPosition, injectFormSupport, injectGridConfig, injectNotificationManager, injectNotificationManagerConfig, injectOverlayManager, injectPipChromeManager, injectPipManager, injectPipSlotPlaceholderConfig, injectStreamConfig, injectStreamConsentConfig, injectStreamManager, injectStreamPlayerErrorConfig, injectStreamPlayerLoadingConfig, injectStreamScriptLoader, injectStreamUserConsentProvider, provideFormSupport, provideGridConfig, provideIcons, provideNotificationManager, provideNotificationManagerConfig, provideNotificationManagerInstance, provideOverlayManager, providePipChromeManager, providePipManager, providePipSlotPlaceholderConfig, provideStreamConfig, provideStreamConsentConfig, provideStreamManager, provideStreamPlayerErrorConfig, provideStreamPlayerLoadingConfig, toGridPosition };
3855
- export type { ButtonIconAlignment, ButtonSize, FacebookVideoPlayer, FacebookWindow, FormFieldAppearance, FormFieldControl, FormFieldControlType, FormFieldDirectiveBase, FormFieldFill, FormFieldLabelMode, FormFieldSize, GridAdapter, GridBreakpointConfig, GridBreakpointName, GridComponentRegistration, GridConfig, GridItemConfig, GridItemConstraints, GridItemPosition, GridLayoutEntry, GridSerializedState, HintComponentBase, IconDefinition, InputTextAlignment, LabelDirectiveBase, NotificationAction, NotificationConfig, NotificationEntry, NotificationManager, NotificationManagerConfig, NotificationRef, NotificationStackContext, NotificationStatus, OverlayAutoFocusTarget, OverlayConfig, OverlayManager, OverlayMode, OverlayPositionStrategy, OverlayRef, OverlayRole, OverlaySurfaceContext, PipCellData, PipChromeAnimations, PipChromeRef, PipChromeState, PipManager, PipSlotPlaceholderConfig, ScrollableActiveChildRef, ScrollableButtonPosition, ScrollableDirection, ScrollableIntersectionChange, ScrollableItemSize, ScrollableLoadingTemplatePosition, ScrollableLoadingTemplateRef, ScrollableMaskVariant, ScrollableNavigation, ScrollableNavigationItem, ScrollableScrollMode, ScrollableScrollOrigin, ScrollableScrollState, SelectionListDirectiveBase, SelectionListItem, StreamConfig, StreamConsentConfig, StreamManager, StreamPipEntry, StreamPipWindowConfig, StreamPlayer, StreamPlayerCapabilities, StreamPlayerEntry, StreamPlayerErrorConfig, StreamPlayerErrorContext, StreamPlayerId, StreamPlayerLoadingConfig, StreamPlayerParams, StreamPlayerSlotHandle, StreamPlayerSlotOptions, StreamPlayerState, StreamScriptLoader, StreamSlotEntry, TabBarFit, TabBarOrientation, TabBarVariant, TabSize, ToggletipContent, TooltipContent, TwitchEmbed, TwitchEmbedConstructor, TwitchEmbedPlayer, TwitchPlayerParams, TwitchWindow, VimeoDurationChangeEvent, VimeoPlaybackEvent, VimeoPlayer, VimeoPlayerOptions, VimeoWindow, WindowControlButtonKind, WindowControlButtonSize, YtPlayer, YtPlayerConfig, YtPlayerErrorEvent, YtPlayerEvent, YtPlayerStateChangeEvent, YtPlayerVars, YtWindow };
5587
+ export { 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, CHECKBOX_IMPORTS, CHEVRON_ICON, CHOICE_FIELD_IMPORTS, CLIPBOARD_CHECK_ICON, CheckboxComponent, CheckboxDirective, CheckboxGroupComponent, CheckboxOptionComponent, ChoiceFieldComponent, DAILYMOTION_PLAYER_TOKEN, DEFAULT_BREAKPOINTS, DEFAULT_ICON_VARIANT, DEFAULT_NOTIFICATION_MANAGER_CONFIG, DEFAULT_PIP_WINDOW_CONFIG, DEFAULT_STREAM_PLAYER_STATE, DailymotionPlayerComponent, DailymotionPlayerDirective, DailymotionPlayerParamsDirective, DailymotionPlayerSlotComponent, DescriptionComponent, FACEBOOK_PLAYER_TOKEN, FLOPPY_DISK_ICON, FOCUS_FRAME_ICON, 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, INPUT_IMPORTS, INPUT_TEXT_ALIGNMENTS, INPUT_TYPES, ITALIC_ICON, IconButtonComponent, IconDirective, InputComponent, InputDirective, InputPrefixDirective, InputSuffixDirective, KICK_PLAYER_TOKEN, KickPlayerComponent, KickPlayerDirective, KickPlayerParamsDirective, KickPlayerSlotComponent, LINK_ICON, LIST_BULLETED_ICON, LIST_NUMBERED_ICON, LOCK_ICON, LabelDirective, MENU_ERROR_CODES, MENU_IMPORTS, MENU_ITEM_VARIANTS, MENU_SELECTION_GROUP_MULTIPLE, MENU_SELECTION_GROUP_TOKEN, MENU_SELECTION_ITEM_KIND, MenuCheckboxGroupComponent, MenuCheckboxItemComponent, MenuComponent, MenuContextTriggerDirective, MenuDirective, MenuGroupLabelComponent, MenuItemComponent, MenuItemDirective, MenuItemShortcutComponent, MenuPanelDirective, MenuRadioGroupComponent, MenuRadioItemComponent, MenuSearchDirective, MenuSelectionGroupDirective, MenuSelectionItemDirective, MenuSeparatorComponent, MenuSurfaceDirective, MenuTriggerDirective, NAV_TABS_TOKEN, NOTIFICATION_ERROR_CODES, NOTIFICATION_IMPORTS, NOTIFICATION_STACK_CONTEXT_TOKEN, NOTIFICATION_STATUS, NavTabImports, NavTabLinkComponent, NavTabLinkDirective, NavTabsComponent, NavTabsDirective, NavTabsOutletComponent, NavTabsOutletDirective, NotificationActionDirective, NotificationComponent, NotificationDirective, NotificationDismissDirective, NotificationItemDirective, NotificationStackDirective, 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, OverlayAnchorDirective, OverlayBackOrCloseDirective, OverlayBodyComponent, OverlayCloseDirective, OverlayContainerComponent, OverlayDirective, OverlayFooterDirective, OverlayHandlerLinkDirective, OverlayHeaderDirective, OverlayHeaderTemplateDirective, OverlayMainDirective, OverlayOriginCloneComponent, OverlayRouteHeaderTemplateOutletComponent, OverlayRouterLinkDirective, OverlayRouterOutletComponent, OverlayRouterOutletDisabledTemplateDirective, OverlaySharedRouteTemplateDirective, OverlaySharedRouteTemplateOutletComponent, OverlaySidebarComponent, OverlaySidebarPageComponent, OverlaySurfaceDirective, OverlayTitleDirective, OverlayTriggerDirective, PENCIL_ICON, PIP_CHROME_REF_TOKEN, PIP_ENTRY_TOKEN, PIP_WINDOW_ASPECT_RATIO_TOKEN, PLUS_ICON, PipBackDirective, PipBringBackDirective, PipCellDirective, PipCloseDirective, PipCollapseOverlayDirective, PipGridToggleDirective, PipPlayerComponent, PipSlotPlaceholderComponent, PipStageDirective, PipTitleBarDirective, PipTitleBarTemplateDirective, PipWindowComponent, PipWindowParamsDirective, ProgressBarComponent, RICH_TEXT_EDITOR_IMPORTS, RadioComponent, RadioGroupComponent, RichTextEditorComponent, RichTextEditorDirective, RichTextEditorFloatingToolbarComponent, SCROLLABLE_IMPORTS, SELECTION_LIST_MULTIPLE, SELECTION_LIST_TOKEN, SIDEBAR_OVERLAY_CONFIG, SIDEBAR_OVERLAY_TOKEN, SNAP_HYSTERESIS, SOOP_PLAYER_TOKEN, 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, SWITCH_IMPORTS, ScrollableActiveChildDirective, ScrollableButtonsDirective, ScrollableComponent, ScrollableDarkenDirective, ScrollableDirective, ScrollableDragDirective, ScrollableErrorCode, ScrollableIgnoreChildDirective, ScrollableLoadingTemplateDirective, ScrollableMasksDirective, ScrollableNavigationDirective, ScrollableSnapDirective, SegmentedButtonComponent, SegmentedButtonGroupComponent, SelectionListControlDirective, SelectionListDirective, SelectionOptionDirective, SoopPlayerComponent, SoopPlayerDirective, SoopPlayerParamsDirective, SoopPlayerSlotComponent, SpinnerComponent, StreamConsentAcceptDirective, StreamConsentComponent, StreamConsentDirective, StreamImports, StreamPipChromeComponent, StreamPlayerErrorComponent, StreamPlayerErrorDirective, StreamPlayerLoadingComponent, StreamPlayerSlotDirective, SwitchComponent, SwitchDirective, 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, TIKTOK_PLAYER_TOKEN, TIMES_ICON, 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, TextButtonComponent, TikTokPlayerComponent, TikTokPlayerDirective, TikTokPlayerParamsDirective, TikTokPlayerSlotComponent, ToggletipCloseDirective, ToggletipComponent, ToggletipDirective, ToggletipTriggerDirective, TooltipComponent, TooltipDirective, TwitchPlayerComponent, TwitchPlayerDirective, TwitchPlayerParamsDirective, TwitchPlayerSlotComponent, 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, centeredOverlayStrategy, clampPosition, clampResizeRect, cleanupFullscreenAnimation, cleanupFullscreenAnimationStyles, compactLayout, computeGeometry, computeGridHeight, createAutoScroller, createGridAdapter, createNotificationRef, createOverlayHandler, createOverlayHandlerWithQueryParamLifecycle, createOverlayRef, createOverlayStrategyController, createPipChromeAnimations, createPipChromeState, createStreamConfig, createStreamPlayerSlot, deserializeGridLayout, dialogOverlayStrategy, enableDragToDismiss, findCollision, findNextRelevantHtmlElement, findScrollableAncestor, fromGridPosition, fullScreenDialogOverlayStrategy, getClosestOverlay, getOriginCoordinatesAndDimensions, hysteresisRound, iconRegistryKey, injectAnchoredDialogStrategy, injectAnchoredDialogStrategyDefaults, injectBottomSheetStrategy, injectBottomSheetStrategyDefaults, injectDialogStrategy, injectDialogStrategyDefaults, injectFormSupport, injectFullscreenDialogStrategy, injectFullscreenDialogStrategyDefaults, injectGridConfig, injectLeftSheetStrategy, injectLeftSheetStrategyDefaults, injectNotificationManager, injectNotificationManagerConfig, injectOverlayManager, injectOverlayRouter, injectOverlayScrollBlocker, injectPipChromeManager, injectPipManager, injectPipSlotPlaceholderConfig, injectRightSheetStrategy, injectRightSheetStrategyDefaults, injectSidebarOverlay, injectStreamConfig, injectStreamConsentConfig, injectStreamManager, injectStreamPlayerErrorConfig, injectStreamPlayerLoadingConfig, injectStreamScriptLoader, injectStreamUserConsentProvider, injectTopSheetStrategy, injectTopSheetStrategyDefaults, isHtmlElement, isPointerEvent, isTouchEvent, itemsCollide, leftSheetOverlayStrategy, mapLayoutToBreakpoint, mergeOverlayBreakpointConfigs, pixelRectsEqual, positionToPixelRect, positionsEqual, projectDragCell, provideAnchoredDialogStrategy, provideAnchoredDialogStrategyDefaults, provideBottomSheetStrategy, provideBottomSheetStrategyDefaults, provideDialogStrategy, provideDialogStrategyDefaults, provideFormSupport, provideFullscreenDialogStrategy, provideFullscreenDialogStrategyDefaults, provideGridConfig, provideIcons, provideLeftSheetStrategy, provideLeftSheetStrategyDefaults, provideNotificationManager, provideNotificationManagerConfig, provideNotificationManagerInstance, provideOverlay, provideOverlayManager, provideOverlayRouter, provideOverlayRouterConfig, provideOverlayRouterService, provideOverlayScrollBlocker, providePipChromeManager, providePipManager, providePipSlotPlaceholderConfig, provideRightSheetStrategy, provideRightSheetStrategyDefaults, provideSidebarOverlay, provideSidebarOverlayConfig, provideSidebarOverlayService, provideStreamConfig, provideStreamConsentConfig, provideStreamManager, provideStreamPlayerErrorConfig, provideStreamPlayerLoadingConfig, provideTopSheetStrategy, provideTopSheetStrategyDefaults, resizeSpanBounds, resolveBreakpoint, resolveClosestOverlay, resolveCollisions, rightSheetOverlayStrategy, rowsToPixelHeight, serializeGridLayout, snapResizeSpan, spanHeight, spanWidth, startFullscreenEnterAnimation, startFullscreenLeaveAnimation, toGridPosition, topSheetOverlayStrategy, transformingBottomSheetToDialogOverlayStrategy, transformingFullScreenDialogToDialogOverlayStrategy, transformingFullScreenDialogToRightSheetOverlayStrategy };
5588
+ export type { AnchoredDialogOverlayStrategyOptions, AnchoredOverlayStrategyOptions, AnchoredPositionOptions, AutoPlaceOptions, AutoScrollPointer, AutoScroller, ButtonIconAlignment, ButtonSize, CenteredOverlayStrategyOptions, ClampPositionOptions, CompactLayoutOptions, CreateOverlayHandlerConfig, CreateOverlayHandlerInnerConfig, CreateOverlayHandlerWithQueryParamLifecycleConfig, DragToDismissContext, DragToDismissRef, EthleteIconNameRegistry, EthleteIconVariantRegistry, FacebookVideoPlayer, FacebookWindow, FindCollisionOptions, FormFieldAppearance, FormFieldControl, FormFieldControlType, FormFieldDirectiveBase, FormFieldFill, FormFieldLabelMode, FormFieldSize, FullscreenAnimationCancellable, FullscreenAnimationDeps, FullscreenAnimationState, GridAdapter, GridBreakpointConfig, GridBreakpointName, GridComponentRegistration, GridConfig, GridGeometry, GridItemActionsComponent, GridItemConfig, GridItemConstraints, GridItemPosition, GridLayoutEntry, GridSerializedState, HintComponentBase, IconDefinition, InputTextAlignment, LabelDirectiveBase, MapLayoutOptions, MenuAnchorPoint, MenuCloseReason, MenuItemActivationEvent, MenuItemActivationSource, MenuItemVariant, MenuOpenSource, MenuSelectionGroupDirectiveBase, MenuSelectionGroupItem, MenuSelectionItemKind, MenuSurfaceContext, NotificationAction, NotificationConfig, NotificationEntry, NotificationManager, NotificationManagerConfig, NotificationRef, NotificationStackContext, NotificationStatus, OverlayAutoFocusTarget, OverlayBodyDividerType, OverlayBreakpointConfig, OverlayConfig, OverlayConsumerConfig, OverlayDragToDismissConfig, OverlayHandler, OverlayHandlerWithQueryParamLifecycle, OverlayManager, OverlayMode, OverlayRef, OverlayRole, OverlayRoute, OverlayRouter, OverlayRouterConfig, OverlayRouterNavigateConfig, OverlayRouterNavigationDirection, OverlayRouterResolvedPath, OverlayRouterTransitionType, OverlayStrategy, OverlayStrategyBreakpoint, OverlayStrategyContext, OverlayStrategyController, OverlayStrategyControllerMountConfig, OverlaySurfaceContext, PipCellData, PipChromeAnimations, PipChromeRef, PipChromeState, PipManager, PipSlotPlaceholderConfig, PixelRect, RegisteredIconName, RegisteredIconVariant, ResizeSpanBounds, ResolveClosestOverlayOptions, ResolveCollisionsOptions, RowFloors, ScrollableActiveChildRef, ScrollableButtonPosition, ScrollableDirection, ScrollableIntersectionChange, ScrollableItemSize, ScrollableLoadingTemplatePosition, ScrollableLoadingTemplateRef, ScrollableMaskVariant, ScrollableNavigation, ScrollableNavigationItem, ScrollableScrollMode, ScrollableScrollOrigin, ScrollableScrollState, SelectionListDirectiveBase, SelectionListItem, SerializeOptions, SidebarOverlay, SidebarOverlayConfig, StreamConfig, StreamConsentConfig, StreamManager, StreamPipEntry, StreamPipWindowConfig, StreamPlayer, StreamPlayerCapabilities, StreamPlayerEntry, StreamPlayerErrorConfig, StreamPlayerErrorContext, StreamPlayerId, StreamPlayerLoadingConfig, StreamPlayerParams, StreamPlayerSlotHandle, StreamPlayerSlotOptions, StreamPlayerState, StreamScriptLoader, StreamSlotEntry, TabBarFit, TabBarOrientation, TabBarVariant, TabSize, ToggletipContent, TooltipContent, TwitchEmbed, TwitchEmbedConstructor, TwitchEmbedPlayer, TwitchPlayerParams, TwitchWindow, ViewportTransformData, VimeoDurationChangeEvent, VimeoPlaybackEvent, VimeoPlayer, VimeoPlayerOptions, VimeoWindow, WindowControlButtonKind, WindowControlButtonSize, YtPlayer, YtPlayerConfig, YtPlayerErrorEvent, YtPlayerEvent, YtPlayerStateChangeEvent, YtPlayerVars, YtWindow };