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

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,15 @@
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, ModelSignal, 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, OverlayRuntimeShiftOptions, AngularRenderer, OverlayRuntimeAnimationDelegate, ScrollObserverDirective, ScrollToElementOptions, ConsentHandler, ProvideColorDirective } from '@ethlete/core';
5
5
  import * as _angular_forms_signals from '@angular/forms/signals';
6
- import { ValidationError, FormCheckboxControl, FormValueControl } from '@angular/forms/signals';
6
+ import { ValidationError, FormCheckboxControl, PathKind, SchemaPath, SchemaPathRules, FormValueControl } from '@angular/forms/signals';
7
7
  import * as _ethlete_components from '@ethlete/components';
8
+ import { QueryArgs, QueryCreator, RequestArgs, ResponseType, AnyNewQuery, QueryErrorResponse } from '@ethlete/query';
8
9
  import * as _angular_platform_browser from '@angular/platform-browser';
10
+ import { Placement, OffsetOptions, Padding } from '@floating-ui/dom';
9
11
  import * as rxjs from 'rxjs';
10
12
  import { Observable } from 'rxjs';
11
- import { Placement, OffsetOptions, Padding } from '@floating-ui/dom';
12
13
  import * as i1 from '@angular/router';
13
14
 
14
15
  declare class ButtonStylesDirective {
@@ -39,9 +40,44 @@ declare class ButtonDirective {
39
40
  static ɵdir: _angular_core.ɵɵDirectiveDeclaration<ButtonDirective, "[etButton]", ["etButton"], { "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "type": { "alias": "type"; "required": false; "isSignal": true; }; "pressed": { "alias": "pressed"; "required": false; "isSignal": true; }; "emitAriaPressed": { "alias": "emitAriaPressed"; "required": false; "isSignal": true; }; "mutedUntilPressed": { "alias": "mutedUntilPressed"; "required": false; "isSignal": true; }; }, {}, never, never, true, [{ directive: typeof _ethlete_core.SurfaceInteractiveDirective; inputs: {}; outputs: {}; }]>;
40
41
  }
41
42
 
43
+ declare class SplitButtonActionDirective {
44
+ private splitButton;
45
+ private destroyRef;
46
+ constructor();
47
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<SplitButtonActionDirective, never>;
48
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<SplitButtonActionDirective, "[etSplitButtonAction]", ["etSplitButtonAction"], {}, {}, never, never, true, never>;
49
+ }
50
+
51
+ declare const SPLIT_BUTTON_ERROR_CODES: {
52
+ readonly MISSING_ACTION: 2300;
53
+ readonly MISSING_TRIGGER: 2301;
54
+ readonly ACTION_OUTSIDE_SPLIT_BUTTON: 2302;
55
+ readonly TRIGGER_OUTSIDE_SPLIT_BUTTON: 2303;
56
+ };
57
+
58
+ declare class SplitButtonTriggerDirective {
59
+ private splitButton;
60
+ private destroyRef;
61
+ constructor();
62
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<SplitButtonTriggerDirective, never>;
63
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<SplitButtonTriggerDirective, "[etSplitButtonTrigger]", ["etSplitButtonTrigger"], {}, {}, never, never, true, never>;
64
+ }
65
+
66
+ declare class SplitButtonDirective {
67
+ registeredAction: _angular_core.WritableSignal<SplitButtonActionDirective | null>;
68
+ registeredTrigger: _angular_core.WritableSignal<SplitButtonTriggerDirective | null>;
69
+ constructor();
70
+ /** @internal */
71
+ unregisterAction(action: SplitButtonActionDirective): void;
72
+ /** @internal */
73
+ unregisterTrigger(trigger: SplitButtonTriggerDirective): void;
74
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<SplitButtonDirective, never>;
75
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<SplitButtonDirective, "[etSplitButton]", ["etSplitButton"], {}, {}, never, never, true, never>;
76
+ }
77
+
42
78
  declare class FocusRingDirective {
43
- disabled: _angular_core.InputSignalWithTransform<boolean, unknown>;
44
79
  private styleManager;
80
+ disabled: _angular_core.InputSignalWithTransform<boolean, unknown>;
45
81
  protected active: _angular_core.WritableSignal<boolean>;
46
82
  constructor();
47
83
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<FocusRingDirective, never>;
@@ -125,6 +161,11 @@ declare class IconButtonComponent {
125
161
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<IconButtonComponent, "[et-icon-button]", never, { "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; }, {}, never, ["[etIcon]"], true, [{ directive: typeof ButtonDirective; inputs: { "disabled": "disabled"; "loading": "loading"; "type": "type"; "pressed": "pressed"; "mutedUntilPressed": "mutedUntilPressed"; }; outputs: {}; }, { directive: typeof ButtonStylesDirective; inputs: {}; outputs: {}; }, { directive: typeof _ethlete_core.ColorInteractiveDirective; inputs: {}; outputs: {}; }, { directive: typeof FocusRingDirective; inputs: {}; outputs: {}; }, { directive: typeof _ethlete_core.ProvideColorDirective; inputs: { "etProvideColor": "color"; }; outputs: {}; }]>;
126
162
  }
127
163
 
164
+ declare class SplitButtonComponent {
165
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<SplitButtonComponent, never>;
166
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<SplitButtonComponent, "et-split-button", never, {}, {}, never, ["*"], true, [{ directive: typeof SplitButtonDirective; inputs: {}; outputs: {}; }]>;
167
+ }
168
+
128
169
  declare class TextButtonComponent {
129
170
  protected buttonDir: ButtonDirective;
130
171
  size: _angular_core.InputSignal<ButtonSize>;
@@ -172,10 +213,10 @@ declare class WindowControlButtonComponent {
172
213
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<WindowControlButtonComponent, "[et-window-control-button]", never, { "size": { "alias": "size"; "required": false; "isSignal": true; }; "kind": { "alias": "kind"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, [{ directive: typeof ButtonDirective; inputs: { "disabled": "disabled"; "loading": "loading"; "type": "type"; "pressed": "pressed"; }; outputs: {}; }, { directive: typeof ButtonStylesDirective; inputs: {}; outputs: {}; }, { directive: typeof _ethlete_core.ColorInteractiveDirective; inputs: {}; outputs: {}; }, { directive: typeof FocusRingDirective; inputs: {}; outputs: {}; }, { directive: typeof _ethlete_core.ProvideColorDirective; inputs: { "etProvideColor": "color"; }; outputs: {}; }]>;
173
214
  }
174
215
 
175
- declare const BUTTON_IMPORTS: readonly [typeof ButtonComponent, typeof FabComponent, typeof IconButtonComponent, typeof TextButtonComponent, typeof WindowControlButtonComponent, typeof ButtonDirective];
216
+ declare const BUTTON_IMPORTS: readonly [typeof ButtonComponent, typeof FabComponent, typeof IconButtonComponent, typeof SplitButtonComponent, typeof TextButtonComponent, typeof WindowControlButtonComponent, typeof ButtonDirective, typeof SplitButtonDirective, typeof SplitButtonActionDirective, typeof SplitButtonTriggerDirective];
176
217
 
177
218
  declare const FORM_FIELD_ERROR_CODES: {
178
- readonly MISSING_CONTROL: 1800;
219
+ readonly MISSING_CONTROL: 2200;
179
220
  };
180
221
 
181
222
  declare const FORM_FIELD_CONTROL_TYPES: {
@@ -186,6 +227,7 @@ declare const FORM_FIELD_CONTROL_TYPES: {
186
227
  readonly SWITCH: "switch";
187
228
  readonly SEGMENTED_BUTTON: "segmented-button";
188
229
  readonly SELECTION_LIST: "selection-list";
230
+ readonly DROPZONE: "dropzone";
189
231
  };
190
232
  type FormFieldControlType = (typeof FORM_FIELD_CONTROL_TYPES)[keyof typeof FORM_FIELD_CONTROL_TYPES];
191
233
  type FormFieldControl = {
@@ -371,11 +413,31 @@ declare class CheckboxComponent {
371
413
 
372
414
  declare const CHECKBOX_IMPORTS: readonly [typeof CheckboxComponent, typeof CheckboxDirective];
373
415
 
416
+ declare const FORM_FIELD_APPEARANCES: {
417
+ readonly BOX: "box";
418
+ readonly UNDERLINE: "underline";
419
+ };
420
+ type FormFieldAppearance = (typeof FORM_FIELD_APPEARANCES)[keyof typeof FORM_FIELD_APPEARANCES];
421
+ declare const FORM_FIELD_FILLS: {
422
+ readonly TRANSPARENT: "transparent";
423
+ readonly FILLED: "filled";
424
+ };
425
+ type FormFieldFill = (typeof FORM_FIELD_FILLS)[keyof typeof FORM_FIELD_FILLS];
426
+ declare const FORM_FIELD_LABEL_MODES: {
427
+ readonly STATIC: "static";
428
+ readonly INLINE: "inline";
429
+ readonly FLOATING_INSIDE: "floating-inside";
430
+ readonly FLOATING_OUTSIDE: "floating-outside";
431
+ };
432
+ type FormFieldLabelMode = (typeof FORM_FIELD_LABEL_MODES)[keyof typeof FORM_FIELD_LABEL_MODES];
433
+ declare const FORM_FIELD_SIZES: {
434
+ readonly SM: "sm";
435
+ readonly MD: "md";
436
+ readonly LG: "lg";
437
+ };
438
+ type FormFieldSize = (typeof FORM_FIELD_SIZES)[keyof typeof FORM_FIELD_SIZES];
439
+
374
440
  declare class ChoiceFieldComponent {
375
- private errorContentRef;
376
- private hintContentRef;
377
- private errorAnimatableRef;
378
- private hintAnimatableRef;
379
441
  support: {
380
442
  errorColorTheme: _ethlete_core.ColorTheme;
381
443
  formFieldDir: FormFieldDirective;
@@ -393,12 +455,17 @@ declare class ChoiceFieldComponent {
393
455
  visibleErrors: _angular_core.Signal<readonly _angular_forms_signals.ValidationError.WithOptionalFieldTree[]>;
394
456
  supportHeight: _angular_core.Signal<number>;
395
457
  };
458
+ size: _angular_core.InputSignal<FormFieldSize>;
459
+ private errorContentRef;
460
+ private hintContentRef;
461
+ private errorAnimatableRef;
462
+ private hintAnimatableRef;
396
463
  canAnimate: {
397
464
  state: _angular_core.Signal<boolean>;
398
465
  };
399
466
  constructor();
400
467
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<ChoiceFieldComponent, never>;
401
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<ChoiceFieldComponent, "et-choice-field", never, {}, {}, never, ["*", "et-label", "et-hint"], true, [{ directive: typeof FormFieldDirective; inputs: {}; outputs: {}; }, { directive: typeof _ethlete_core.ProvideColorDirective; inputs: { "etProvideColor": "color"; }; outputs: {}; }]>;
468
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ChoiceFieldComponent, "et-choice-field", never, { "size": { "alias": "size"; "required": false; "isSignal": true; }; }, {}, never, ["*", "et-label", "et-hint"], true, [{ directive: typeof FormFieldDirective; inputs: {}; outputs: {}; }, { directive: typeof _ethlete_core.ProvideColorDirective; inputs: { "etProvideColor": "color"; }; outputs: {}; }]>;
402
469
  }
403
470
 
404
471
  declare class HintComponent implements HintComponentBase {
@@ -416,36 +483,328 @@ declare class DescriptionComponent {
416
483
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<DescriptionComponent, "et-description", never, {}, {}, never, ["*"], true, never>;
417
484
  }
418
485
 
486
+ /**
487
+ * Display information for a value that is already part of the form control
488
+ * (e.g. media uploaded in a previous session inside an edit form).
489
+ */
490
+ type DropzoneExistingFileInfo = {
491
+ /** URL rendered as a preview thumbnail. */
492
+ previewUrl?: string | null;
493
+ /** Human readable name of the file. Falls back to the stringified value. */
494
+ name?: string;
495
+ /** File size in bytes. */
496
+ size?: number | null;
497
+ };
498
+ type DropzoneUploadConfig<TArgs extends QueryArgs = QueryArgs, TValue = unknown> = {
499
+ /**
500
+ * The query creator used to upload a single file (e.g. a POST multipart route).
501
+ *
502
+ * For per-file upload progress, create it with `reportProgress: true` and make sure the
503
+ * app uses the XHR `HttpClient` backend (upload progress events are not supported with
504
+ * `provideHttpClient(withFetch())`). Without progress information the dropzone falls
505
+ * back to an indeterminate progress display.
506
+ */
507
+ queryCreator: QueryCreator<TArgs>;
508
+ /**
509
+ * Builds the request args for one file.
510
+ * Override to change the multipart field name or to add extra fields, path params,
511
+ * query params or headers.
512
+ *
513
+ * @default (file) => ({ body: FormData with the file appended as "file" })
514
+ */
515
+ createArgs?: (file: File) => RequestArgs<TArgs>;
516
+ /**
517
+ * Maps the upload response to the value that gets pushed into the form control
518
+ * (e.g. `(media) => media.uuid`).
519
+ */
520
+ selectValue: (response: NonNullable<ResponseType<TArgs>>) => TValue;
521
+ /**
522
+ * Maps a value that is already part of the form control (edit forms) to display info.
523
+ * Called in a reactive context — reading signals inside it is supported, so async
524
+ * lookups can be modeled as signals updating over time.
525
+ *
526
+ * Required as soon as the form control can start with a non-empty value.
527
+ */
528
+ resolveExisting?: (value: TValue) => DropzoneExistingFileInfo;
529
+ };
530
+ type AnyDropzoneUploadConfig<TValue = unknown> = DropzoneUploadConfig<any, TValue>;
531
+ /**
532
+ * Identity helper that correlates the query args type with the form control value type,
533
+ * so `DropzoneUploadConfig` objects get full type inference at the definition site.
534
+ */
535
+ declare const createDropzoneUpload: <TArgs extends QueryArgs, TValue>(config: DropzoneUploadConfig<TArgs, TValue>) => DropzoneUploadConfig<TArgs, TValue>;
536
+ declare const createDefaultDropzoneArgs: (file: File) => RequestArgs<QueryArgs>;
537
+
538
+ declare const DROPZONE_ENTRY_STATUSES: {
539
+ readonly UPLOADING: "uploading";
540
+ readonly SUCCESS: "success";
541
+ readonly ERROR: "error";
542
+ readonly EXISTING: "existing";
543
+ };
544
+ type DropzoneEntryStatus = (typeof DROPZONE_ENTRY_STATUSES)[keyof typeof DROPZONE_ENTRY_STATUSES];
545
+ type DropzoneEntrySource<TValue = unknown> = {
546
+ type: 'file';
547
+ file: File;
548
+ } | {
549
+ type: 'existing';
550
+ value: TValue;
551
+ };
552
+ type DropzoneEntry<TValue = unknown> = {
553
+ /** Unique id of this entry. Stable for the lifetime of the entry. */
554
+ id: string;
555
+ /** What this entry was created from — a picked/dropped file or an existing form control value. */
556
+ source: DropzoneEntrySource<TValue>;
557
+ /** Human readable name (file name or resolved from the existing value). */
558
+ name: Signal<string>;
559
+ /** File size in bytes. `null` when unknown. */
560
+ size: Signal<number | null>;
561
+ /** Preview URL (object URL for image files, resolver-provided URL for existing values). */
562
+ previewUrl: Signal<string | null>;
563
+ status: Signal<DropzoneEntryStatus>;
564
+ /** Upload progress in percent. `null` means indeterminate (or not uploading). */
565
+ progress: Signal<number | null>;
566
+ /** The upload error, if the last upload attempt failed. */
567
+ error: Signal<QueryErrorResponse | null>;
568
+ /** The form control value of this entry. `null` until the upload succeeded. */
569
+ value: Signal<TValue | null>;
570
+ /** @internal The upload query. `null` for existing entries. */
571
+ query: AnyNewQuery | null;
572
+ /** @internal The frozen request args of the upload. Reused for retries. */
573
+ args: RequestArgs<QueryArgs> | null;
574
+ /** @internal Object URL that must be revoked when the entry is disposed. */
575
+ objectUrl: string | null;
576
+ };
577
+ type CreateFileDropzoneEntryOptions<TValue> = {
578
+ file: File;
579
+ query: AnyNewQuery;
580
+ args: RequestArgs<QueryArgs>;
581
+ selectValue: (response: unknown) => TValue;
582
+ };
583
+ declare const createFileDropzoneEntry: <TValue>(options: CreateFileDropzoneEntryOptions<TValue>) => DropzoneEntry<TValue>;
584
+ type CreateExistingDropzoneEntryOptions<TValue> = {
585
+ value: TValue;
586
+ upload: Signal<AnyDropzoneUploadConfig<TValue>>;
587
+ };
588
+ declare const createExistingDropzoneEntry: <TValue>(options: CreateExistingDropzoneEntryOptions<TValue>) => DropzoneEntry<TValue>;
589
+ /** Releases all resources held by an entry (object URL, in-flight upload). */
590
+ declare const disposeDropzoneEntry: <TValue>(entry: DropzoneEntry<TValue>) => void;
591
+ /** Checks a file against the native `accept` attribute semantics (`.ext`, `type/subtype`, `type/*`). */
592
+ declare const isFileAccepted: (file: File, accept: string) => boolean;
593
+ /** Formats a byte count as a short human readable string (e.g. `1.5 MB`). */
594
+ declare const formatFileSize: (bytes: number) => string;
595
+
596
+ declare const DROPZONE_FILE_REJECTION_REASONS: {
597
+ readonly ACCEPT: "accept";
598
+ readonly MAX_FILE_SIZE: "maxFileSize";
599
+ readonly MIN_FILE_SIZE: "minFileSize";
600
+ readonly MAX_FILES: "maxFiles";
601
+ };
602
+ type DropzoneFileRejectionReason = (typeof DROPZONE_FILE_REJECTION_REASONS)[keyof typeof DROPZONE_FILE_REJECTION_REASONS];
603
+ type DropzoneFileRejection = {
604
+ file: File;
605
+ reason: DropzoneFileRejectionReason;
606
+ };
607
+ /** The `kind` of the {@link ValidationError}s produced by {@link dropzoneFiles}. */
608
+ declare const DROPZONE_FILES_ERROR_KIND = "dropzoneFiles";
609
+ type DropzoneFileConstraints = {
610
+ /**
611
+ * Accepted file types using the native `accept` attribute semantics
612
+ * (`.png`, `image/png`, `image/*`). Also applied to the native file picker.
613
+ */
614
+ accept?: string;
615
+ /** Maximum size of a single file in bytes. */
616
+ maxFileSize?: number;
617
+ /** Minimum size of a single file in bytes. */
618
+ minFileSize?: number;
619
+ /** Overrides the built-in per-rejection error message (e.g. for i18n). */
620
+ message?: (rejection: DropzoneFileRejection) => string;
621
+ };
622
+ /**
623
+ * @internal
624
+ * The channel between the {@link dropzoneFiles} schema rule and the dropzone directive:
625
+ * the schema publishes the constraints, the directive publishes the rejected files of
626
+ * the most recent selection.
627
+ */
628
+ type DropzoneFileValidationChannel = {
629
+ constraints: Signal<DropzoneFileConstraints | undefined>;
630
+ rejections: WritableSignal<DropzoneFileRejection[]>;
631
+ };
632
+ /** @internal Read by the dropzone directive via the bound field's metadata. */
633
+ declare const DROPZONE_FILE_CONSTRAINTS: _angular_forms_signals.MetadataKey<DropzoneFileValidationChannel, DropzoneFileConstraints, DropzoneFileConstraints | undefined>;
634
+ declare const defaultDropzoneRejectionMessage: (rejection: DropzoneFileRejection, constraints: DropzoneFileConstraints | undefined) => string;
635
+ /**
636
+ * Schema rule that validates the files selected in a dropzone bound to this field.
637
+ *
638
+ * Files violating the constraints are never uploaded; each violation surfaces as a
639
+ * regular validation error (`kind: 'dropzoneFiles'`) on the field until the next
640
+ * selection, removal or clear. Count and emptiness constraints are plain value
641
+ * validation — use `required()`, `minLength()` and `maxLength()` for those.
642
+ *
643
+ * @example
644
+ * ```ts
645
+ * form(model, (s) => {
646
+ * required(s.media, { message: 'Please upload a file' });
647
+ * maxLength(s.media, 5, { message: 'Upload at most 5 files' });
648
+ * dropzoneFiles(s.media, { accept: 'image/*', maxFileSize: 5 * 1024 * 1024 });
649
+ * });
650
+ * ```
651
+ */
652
+ declare const dropzoneFiles: <TValue, TPathKind extends PathKind = PathKind.Root>(path: SchemaPath<TValue, SchemaPathRules.Supported, TPathKind>, constraints: DropzoneFileConstraints | (() => DropzoneFileConstraints)) => void;
653
+
654
+ declare class DropzoneDirective<TValue = unknown> implements FormValueControl<TValue | TValue[] | null>, FormFieldControl {
655
+ private formField;
656
+ private signalFormField;
657
+ private destroyRef;
658
+ private injector;
659
+ value: _angular_core.ModelSignal<TValue | TValue[] | null>;
660
+ touched: _angular_core.ModelSignal<boolean>;
661
+ disabled: _angular_core.InputSignal<boolean>;
662
+ invalid: _angular_core.InputSignal<boolean>;
663
+ errors: _angular_core.InputSignal<readonly ValidationError.WithOptionalFieldTree[]>;
664
+ required: _angular_core.InputSignal<boolean>;
665
+ name: _angular_core.InputSignal<string>;
666
+ /** The upload workflow configuration. Create it via `createDropzoneUpload()`. */
667
+ upload: _angular_core.InputSignal<AnyDropzoneUploadConfig<TValue>>;
668
+ /** Whether multiple files can be uploaded. The control value becomes an array. */
669
+ multiple: _angular_core.InputSignal<boolean>;
670
+ /** Emits all files of a selection that were rejected, with the reason per file. */
671
+ filesRejected: _angular_core.OutputEmitterRef<DropzoneFileRejection[]>;
672
+ /** Emits when the upload of an entry succeeded (after the control value was updated). */
673
+ uploadSucceeded: _angular_core.OutputEmitterRef<DropzoneEntry<TValue>>;
674
+ /** Emits when the upload of an entry failed. */
675
+ uploadFailed: _angular_core.OutputEmitterRef<DropzoneEntry<TValue>>;
676
+ private internalEntries;
677
+ private internalLastRejections;
678
+ private dragDepth;
679
+ private entryWatchers;
680
+ private lastSyncedValue;
681
+ private hasSyncedValue;
682
+ /** All entries currently managed by the dropzone, including uploading and failed ones. */
683
+ entries: _angular_core.Signal<DropzoneEntry<TValue>[]>;
684
+ /** The rejections of the most recent file selection. Reset by the next selection, removal or clear. */
685
+ lastRejections: _angular_core.Signal<DropzoneFileRejection[]>;
686
+ /**
687
+ * The file validation channel of the bound form field, if its schema uses the
688
+ * `dropzoneFiles()` rule. Provides the constraints and receives the rejections.
689
+ */
690
+ private fileValidation;
691
+ /** The `accept` constraint of the bound field's `dropzoneFiles()` rule. Empty accepts everything. */
692
+ accept: _angular_core.Signal<string>;
693
+ /** Whether a files drag is currently hovering the dropzone. */
694
+ isDragOver: _angular_core.Signal<boolean>;
695
+ anyUploading: _angular_core.Signal<boolean>;
696
+ anyFailed: _angular_core.Signal<boolean>;
697
+ hasValue: _angular_core.Signal<boolean>;
698
+ shouldDisplayError: _angular_core.Signal<boolean>;
699
+ describedBy: _angular_core.WritableSignal<string | null>;
700
+ controlType: _angular_core.WritableSignal<"dropzone">;
701
+ describedById: _angular_core.Signal<string | null>;
702
+ labelId: _angular_core.Signal<string | null>;
703
+ /** @internal */
704
+ focusTarget: _angular_core.WritableSignal<HTMLElement | null>;
705
+ constructor();
706
+ /** Validates the given files and uploads all accepted ones. */
707
+ selectFiles(files: FileList | readonly File[]): void;
708
+ /** Removes an entry. Cancels its upload if it is still in flight. */
709
+ removeEntry(id: string): void;
710
+ /** Retries the upload of a failed entry with its original request args. */
711
+ retryEntry(id: string): void;
712
+ /** Removes all entries and resets the control value. */
713
+ clear(): void;
714
+ activate(): void;
715
+ protected handleDragEnter(event: DragEvent): void;
716
+ protected handleDragOver(event: DragEvent): void;
717
+ protected handleDragLeave(): void;
718
+ protected handleDrop(event: DragEvent): void;
719
+ private setRejections;
720
+ private createFileEntry;
721
+ private disposeEntry;
722
+ private syncValue;
723
+ private reconcileValue;
724
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<DropzoneDirective<any>, never>;
725
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<DropzoneDirective<any>, "[etDropzone]", never, { "value": { "alias": "value"; "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; }; "upload": { "alias": "upload"; "required": true; "isSignal": true; }; "multiple": { "alias": "multiple"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "touched": "touchedChange"; "filesRejected": "filesRejected"; "uploadSucceeded": "uploadSucceeded"; "uploadFailed": "uploadFailed"; }, never, never, true, never>;
726
+ }
727
+
728
+ declare class DropzoneComponent {
729
+ protected dropzoneDir: DropzoneDirective<any>;
730
+ support: {
731
+ errorColorTheme: _ethlete_core.ColorTheme;
732
+ formFieldDir: FormFieldDirective;
733
+ errorContent: _angular_core.WritableSignal<ElementRef<HTMLElement> | undefined>;
734
+ hintContent: _angular_core.WritableSignal<ElementRef<HTMLElement> | undefined>;
735
+ errorAnimatable: _angular_core.WritableSignal<AnimatableDirective | undefined>;
736
+ hintAnimatable: _angular_core.WritableSignal<AnimatableDirective | undefined>;
737
+ semanticSupportState: _angular_core.Signal<"none" | "hint" | "error">;
738
+ displaysError: _angular_core.Signal<boolean>;
739
+ shouldRenderSupport: _angular_core.Signal<boolean>;
740
+ shouldRenderError: _angular_core.Signal<boolean>;
741
+ shouldRenderHint: _angular_core.Signal<boolean>;
742
+ errorActive: _angular_core.Signal<boolean>;
743
+ hintActive: _angular_core.Signal<boolean>;
744
+ visibleErrors: _angular_core.Signal<readonly _angular_forms_signals.ValidationError.WithOptionalFieldTree[]>;
745
+ supportHeight: _angular_core.Signal<number>;
746
+ };
747
+ private injector;
748
+ private renderer;
749
+ private prefersReducedMotion;
750
+ /** Label of the retry button shown for failed uploads. */
751
+ retryLabel: _angular_core.InputSignal<string>;
752
+ /** Accessible label prefix of the remove button. The entry name is appended. */
753
+ removeLabel: _angular_core.InputSignal<string>;
754
+ /** Accessible label of the replace button shown in single mode. */
755
+ replaceLabel: _angular_core.InputSignal<string>;
756
+ /** Fallback error message shown when the upload error has no message. */
757
+ uploadErrorLabel: _angular_core.InputSignal<string>;
758
+ /** Overrides the built-in per-entry upload failure message (e.g. for i18n). */
759
+ uploadErrorMessage: _angular_core.InputSignal<((entry: DropzoneEntry) => string) | null>;
760
+ private fileInput;
761
+ private browseButton;
762
+ private errorContentRef;
763
+ private hintContentRef;
764
+ private errorAnimatableRef;
765
+ private hintAnimatableRef;
766
+ private entryElements;
767
+ private removingEntryIds;
768
+ private filePickerOpen;
769
+ canAnimate: {
770
+ state: _angular_core.Signal<boolean>;
771
+ };
772
+ protected singleEntry: _angular_core.Signal<DropzoneEntry<any> | null>;
773
+ protected liveStatusMessage: _angular_core.Signal<string>;
774
+ /** Upload failures, rendered like validation errors below the field. */
775
+ protected internalErrorMessages: _angular_core.Signal<string[]>;
776
+ protected readonly FORMAT_FILE_SIZE: (bytes: number) => string;
777
+ constructor();
778
+ protected openFilePicker(): void;
779
+ /**
780
+ * Opening the system file picker blurs the trigger — the control must not be
781
+ * marked as touched (and show validation errors) while the dialog is open.
782
+ */
783
+ protected markTriggerTouched(): void;
784
+ /** Called when focus returns to the trigger or the picker dialog is cancelled. */
785
+ protected resetFilePickerState(): void;
786
+ protected uploadPickedFiles(event: Event): void;
787
+ /** Removes an entry, scaling out its element and FLIP-shifting the remaining ones. */
788
+ protected removeEntryAnimated(entry: DropzoneEntry, entryElement: HTMLElement): void;
789
+ private defaultUploadErrorMessage;
790
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<DropzoneComponent, never>;
791
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<DropzoneComponent, "et-dropzone", never, { "retryLabel": { "alias": "retryLabel"; "required": false; "isSignal": true; }; "removeLabel": { "alias": "removeLabel"; "required": false; "isSignal": true; }; "replaceLabel": { "alias": "replaceLabel"; "required": false; "isSignal": true; }; "uploadErrorLabel": { "alias": "uploadErrorLabel"; "required": false; "isSignal": true; }; "uploadErrorMessage": { "alias": "uploadErrorMessage"; "required": false; "isSignal": true; }; }, {}, never, ["et-label", "*", "et-hint"], true, [{ directive: typeof FormFieldDirective; inputs: {}; outputs: {}; }, { directive: typeof DropzoneDirective; inputs: { "value": "value"; "touched": "touched"; "disabled": "disabled"; "invalid": "invalid"; "errors": "errors"; "required": "required"; "name": "name"; "upload": "upload"; "multiple": "multiple"; }; outputs: { "valueChange": "valueChange"; "touchedChange": "touchedChange"; "filesRejected": "filesRejected"; "uploadSucceeded": "uploadSucceeded"; "uploadFailed": "uploadFailed"; }; }, { directive: typeof _ethlete_core.ProvideColorDirective; inputs: { "etProvideColor": "color"; }; outputs: {}; }]>;
792
+ }
793
+
794
+ declare const DROPZONE_IMPORTS: readonly [typeof DropzoneComponent, typeof DropzoneDirective];
795
+
796
+ declare const DROPZONE_ERROR_CODES: {
797
+ readonly INVALID_UPLOAD_CONFIG: 2400;
798
+ readonly MISSING_EXISTING_RESOLVER: 2401;
799
+ readonly VALUE_MODE_MISMATCH: 2402;
800
+ };
801
+
419
802
  declare class FormErrorComponent {
420
803
  error: _angular_core.InputSignal<ValidationError.WithOptionalFieldTree>;
421
804
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<FormErrorComponent, never>;
422
805
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<FormErrorComponent, "et-form-error", never, { "error": { "alias": "error"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
423
806
  }
424
807
 
425
- declare const FORM_FIELD_APPEARANCES: {
426
- readonly BOX: "box";
427
- readonly UNDERLINE: "underline";
428
- };
429
- type FormFieldAppearance = (typeof FORM_FIELD_APPEARANCES)[keyof typeof FORM_FIELD_APPEARANCES];
430
- declare const FORM_FIELD_FILLS: {
431
- readonly TRANSPARENT: "transparent";
432
- readonly FILLED: "filled";
433
- };
434
- type FormFieldFill = (typeof FORM_FIELD_FILLS)[keyof typeof FORM_FIELD_FILLS];
435
- declare const FORM_FIELD_LABEL_MODES: {
436
- readonly STATIC: "static";
437
- readonly INLINE: "inline";
438
- readonly FLOATING_INSIDE: "floating-inside";
439
- readonly FLOATING_OUTSIDE: "floating-outside";
440
- };
441
- type FormFieldLabelMode = (typeof FORM_FIELD_LABEL_MODES)[keyof typeof FORM_FIELD_LABEL_MODES];
442
- declare const FORM_FIELD_SIZES: {
443
- readonly SM: "sm";
444
- readonly MD: "md";
445
- readonly LG: "lg";
446
- };
447
- type FormFieldSize = (typeof FORM_FIELD_SIZES)[keyof typeof FORM_FIELD_SIZES];
448
-
449
808
  declare const SUPPORT_CONTENT_STATE: {
450
809
  readonly NONE: "none";
451
810
  readonly HINT: "hint";
@@ -464,6 +823,8 @@ declare class FormFieldComponent {
464
823
  private provideSurface;
465
824
  private parentSurfaceProvider;
466
825
  protected formFieldDir: FormFieldDirective;
826
+ protected errorColorTheme: _ethlete_core.ColorTheme;
827
+ private surfaceThemes;
467
828
  appearance: _angular_core.InputSignal<FormFieldAppearance>;
468
829
  fill: _angular_core.InputSignal<FormFieldFill>;
469
830
  labelMode: _angular_core.InputSignal<FormFieldLabelMode>;
@@ -473,8 +834,6 @@ declare class FormFieldComponent {
473
834
  prefixEl: _angular_core.Signal<ElementRef<HTMLElement> | undefined>;
474
835
  protected errorAnimatable: _angular_core.Signal<AnimatableDirective | undefined>;
475
836
  protected hintAnimatable: _angular_core.Signal<AnimatableDirective | undefined>;
476
- protected errorColorTheme: _ethlete_core.ColorTheme;
477
- private surfaceThemes;
478
837
  private errorDimensions;
479
838
  private hintDimensions;
480
839
  private prefixDimensions;
@@ -577,6 +936,7 @@ declare const INPUT_IMPORTS: readonly [typeof InputComponent, typeof InputDirect
577
936
 
578
937
  type InlineTag = 'strong' | 'em' | 'del';
579
938
  type ListTag = 'ul' | 'ol';
939
+ type HeadingTag = 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6';
580
940
  type EditableSelection = {
581
941
  selection: Selection;
582
942
  range: Range;
@@ -588,11 +948,28 @@ type RichTextMarkStates = {
588
948
  unorderedList: boolean;
589
949
  orderedList: boolean;
590
950
  link: boolean;
951
+ /** Heading level of the block the selection starts in, or `null` when it is not a heading. */
952
+ heading: number | null;
591
953
  };
592
954
 
593
955
  declare class RichTextEditorDirective implements FormValueControl<string>, FormFieldControl {
594
956
  private formField;
595
957
  private destroyRef;
958
+ private document;
959
+ /** @internal */
960
+ editorDom: {
961
+ root: _angular_core.WritableSignal<HTMLElement | null>;
962
+ getSelection: () => EditableSelection | null;
963
+ closestWithin: (node: Node | null, selector: string) => HTMLElement | null;
964
+ markStates: () => RichTextMarkStates | null;
965
+ toggleInline: (tag: InlineTag) => void;
966
+ toggleList: (listTag: ListTag) => void;
967
+ toggleHeading: (tag: HeadingTag) => void;
968
+ applyLink: (href: string) => void;
969
+ removeLink: () => void;
970
+ insertToken: (node: Node) => void;
971
+ handleBackspace: () => boolean;
972
+ };
596
973
  value: _angular_core.ModelSignal<string>;
597
974
  touched: _angular_core.ModelSignal<boolean>;
598
975
  disabled: _angular_core.InputSignal<boolean>;
@@ -616,21 +993,9 @@ declare class RichTextEditorDirective implements FormValueControl<string>, FormF
616
993
  unorderedListActive: _angular_core.WritableSignal<boolean>;
617
994
  orderedListActive: _angular_core.WritableSignal<boolean>;
618
995
  linkActive: _angular_core.WritableSignal<boolean>;
996
+ headingLevel: _angular_core.WritableSignal<number | null>;
619
997
  /** @internal */
620
998
  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
999
  constructor();
635
1000
  activate(): void;
636
1001
  syncFromDom(): void;
@@ -640,27 +1005,53 @@ declare class RichTextEditorDirective implements FormValueControl<string>, FormF
640
1005
  toggleStrikethrough(): void;
641
1006
  toggleUnorderedList(): void;
642
1007
  toggleOrderedList(): void;
1008
+ toggleHeading(level: number): void;
643
1009
  setLink(href: string): void;
1010
+ promptForLink(): void;
644
1011
  handleBackspace(): boolean;
645
1012
  /**
646
1013
  * @internal Extension seam for the follow-up `@`/`#` autocomplete: inserts an atomic inline
647
1014
  * node (a mention/placeholder token) at the caret, then re-syncs.
648
1015
  */
649
1016
  insertAtomicToken(node: Node): void;
1017
+ private serializeCleanHtml;
650
1018
  private runCommand;
651
1019
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<RichTextEditorDirective, never>;
652
1020
  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
1021
  }
654
1022
 
1023
+ declare class RichTextEditorFloatingToolbarComponent {
1024
+ protected dir: RichTextEditorDirective;
1025
+ private document;
1026
+ private renderer;
1027
+ private destroyRef;
1028
+ private host;
1029
+ protected visible: _angular_core.WritableSignal<boolean>;
1030
+ private activeRange;
1031
+ private floatingReference;
1032
+ private floatingCleanup;
1033
+ private pointerSelectingInContent;
1034
+ constructor();
1035
+ private selectableRange;
1036
+ private finishContentPointerSelection;
1037
+ private evaluate;
1038
+ private reposition;
1039
+ private start;
1040
+ private updatePosition;
1041
+ private hide;
1042
+ private stop;
1043
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<RichTextEditorFloatingToolbarComponent, never>;
1044
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<RichTextEditorFloatingToolbarComponent, "et-rich-text-editor-floating-toolbar", never, {}, {}, never, never, true, never>;
1045
+ }
1046
+
655
1047
  declare class RichTextEditorComponent {
656
1048
  protected dir: RichTextEditorDirective;
657
1049
  private document;
658
1050
  private editable;
659
1051
  constructor();
660
- protected onInput(): void;
661
- protected onKeydown(event: KeyboardEvent): void;
662
- protected onBeforeInput(event: InputEvent): void;
663
- protected promptForLink(): void;
1052
+ protected syncValueFromDom(): void;
1053
+ protected interceptBackspaceKey(event: KeyboardEvent): void;
1054
+ protected interceptFormattingCommand(event: InputEvent): void;
664
1055
  private renderExternalValue;
665
1056
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<RichTextEditorComponent, never>;
666
1057
  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 +1119,6 @@ declare class SelectionListDirective implements SelectionListDirectiveBase, Form
728
1119
  }
729
1120
 
730
1121
  declare class CheckboxGroupComponent {
731
- private errorContentRef;
732
- private hintContentRef;
733
- private errorAnimatableRef;
734
- private hintAnimatableRef;
735
1122
  support: {
736
1123
  errorColorTheme: _ethlete_core.ColorTheme;
737
1124
  formFieldDir: FormFieldDirective;
@@ -749,12 +1136,17 @@ declare class CheckboxGroupComponent {
749
1136
  visibleErrors: _angular_core.Signal<readonly _angular_forms_signals.ValidationError.WithOptionalFieldTree[]>;
750
1137
  supportHeight: _angular_core.Signal<number>;
751
1138
  };
1139
+ size: _angular_core.InputSignal<FormFieldSize>;
1140
+ private errorContentRef;
1141
+ private hintContentRef;
1142
+ private errorAnimatableRef;
1143
+ private hintAnimatableRef;
752
1144
  canAnimate: {
753
1145
  state: _angular_core.Signal<boolean>;
754
1146
  };
755
1147
  constructor();
756
1148
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<CheckboxGroupComponent, never>;
757
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<CheckboxGroupComponent, "et-checkbox-group", never, {}, {}, never, ["*", "et-hint"], true, [{ directive: typeof FormFieldDirective; inputs: {}; outputs: {}; }, { directive: typeof SelectionListDirective; inputs: { "value": "value"; "touched": "touched"; "disabled": "disabled"; "invalid": "invalid"; "errors": "errors"; "required": "required"; "name": "name"; }; outputs: { "valueChange": "valueChange"; "touchedChange": "touchedChange"; }; }, { directive: typeof _ethlete_core.ProvideColorDirective; inputs: { "etProvideColor": "color"; }; outputs: {}; }]>;
1149
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<CheckboxGroupComponent, "et-checkbox-group", never, { "size": { "alias": "size"; "required": false; "isSignal": true; }; }, {}, never, ["*", "et-hint"], true, [{ directive: typeof FormFieldDirective; inputs: {}; outputs: {}; }, { directive: typeof SelectionListDirective; inputs: { "value": "value"; "touched": "touched"; "disabled": "disabled"; "invalid": "invalid"; "errors": "errors"; "required": "required"; "name": "name"; }; outputs: { "valueChange": "valueChange"; "touchedChange": "touchedChange"; }; }, { directive: typeof _ethlete_core.ProvideColorDirective; inputs: { "etProvideColor": "color"; }; outputs: {}; }]>;
758
1150
  }
759
1151
 
760
1152
  declare class SelectionListControlDirective {
@@ -799,10 +1191,6 @@ declare class CheckboxOptionComponent {
799
1191
  }
800
1192
 
801
1193
  declare class RadioGroupComponent {
802
- private errorContentRef;
803
- private hintContentRef;
804
- private errorAnimatableRef;
805
- private hintAnimatableRef;
806
1194
  support: {
807
1195
  errorColorTheme: _ethlete_core.ColorTheme;
808
1196
  formFieldDir: FormFieldDirective;
@@ -820,12 +1208,17 @@ declare class RadioGroupComponent {
820
1208
  visibleErrors: _angular_core.Signal<readonly _angular_forms_signals.ValidationError.WithOptionalFieldTree[]>;
821
1209
  supportHeight: _angular_core.Signal<number>;
822
1210
  };
1211
+ size: _angular_core.InputSignal<FormFieldSize>;
1212
+ private errorContentRef;
1213
+ private hintContentRef;
1214
+ private errorAnimatableRef;
1215
+ private hintAnimatableRef;
823
1216
  canAnimate: {
824
1217
  state: _angular_core.Signal<boolean>;
825
1218
  };
826
1219
  constructor();
827
1220
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<RadioGroupComponent, never>;
828
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<RadioGroupComponent, "et-radio-group", never, {}, {}, never, ["*", "et-hint"], true, [{ directive: typeof FormFieldDirective; inputs: {}; outputs: {}; }, { directive: typeof SelectionListDirective; inputs: { "value": "value"; "touched": "touched"; "disabled": "disabled"; "invalid": "invalid"; "errors": "errors"; "required": "required"; "name": "name"; }; outputs: { "valueChange": "valueChange"; "touchedChange": "touchedChange"; }; }, { directive: typeof _ethlete_core.ProvideColorDirective; inputs: { "etProvideColor": "color"; }; outputs: {}; }]>;
1221
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<RadioGroupComponent, "et-radio-group", never, { "size": { "alias": "size"; "required": false; "isSignal": true; }; }, {}, never, ["*", "et-hint"], true, [{ directive: typeof FormFieldDirective; inputs: {}; outputs: {}; }, { directive: typeof SelectionListDirective; inputs: { "value": "value"; "touched": "touched"; "disabled": "disabled"; "invalid": "invalid"; "errors": "errors"; "required": "required"; "name": "name"; }; outputs: { "valueChange": "valueChange"; "touchedChange": "touchedChange"; }; }, { directive: typeof _ethlete_core.ProvideColorDirective; inputs: { "etProvideColor": "color"; }; outputs: {}; }]>;
829
1222
  }
830
1223
 
831
1224
  declare class RadioComponent {
@@ -838,10 +1231,6 @@ declare class RadioComponent {
838
1231
  }
839
1232
 
840
1233
  declare class SegmentedButtonGroupComponent {
841
- private errorContentRef;
842
- private hintContentRef;
843
- private errorAnimatableRef;
844
- private hintAnimatableRef;
845
1234
  support: {
846
1235
  errorColorTheme: _ethlete_core.ColorTheme;
847
1236
  formFieldDir: FormFieldDirective;
@@ -859,19 +1248,29 @@ declare class SegmentedButtonGroupComponent {
859
1248
  visibleErrors: _angular_core.Signal<readonly _angular_forms_signals.ValidationError.WithOptionalFieldTree[]>;
860
1249
  supportHeight: _angular_core.Signal<number>;
861
1250
  };
1251
+ size: _angular_core.InputSignal<FormFieldSize>;
1252
+ private errorContentRef;
1253
+ private hintContentRef;
1254
+ private errorAnimatableRef;
1255
+ private hintAnimatableRef;
1256
+ /** @internal The active background element of the currently checked button. Used as the flip animation origin. */
1257
+ lastActiveBackgroundElement: _angular_core.WritableSignal<HTMLElement | null>;
862
1258
  canAnimate: {
863
1259
  state: _angular_core.Signal<boolean>;
864
1260
  };
865
1261
  constructor();
866
1262
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<SegmentedButtonGroupComponent, never>;
867
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<SegmentedButtonGroupComponent, "et-segmented-button-group", never, {}, {}, never, ["*", "et-hint"], true, [{ directive: typeof FormFieldDirective; inputs: {}; outputs: {}; }, { directive: typeof SelectionListDirective; inputs: { "value": "value"; "touched": "touched"; "disabled": "disabled"; "invalid": "invalid"; "errors": "errors"; "required": "required"; "name": "name"; }; outputs: { "valueChange": "valueChange"; "touchedChange": "touchedChange"; }; }, { directive: typeof _ethlete_core.ProvideColorDirective; inputs: { "etProvideColor": "color"; }; outputs: {}; }]>;
1263
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<SegmentedButtonGroupComponent, "et-segmented-button-group", never, { "size": { "alias": "size"; "required": false; "isSignal": true; }; }, {}, never, ["et-label", ".et-segmented-button-group-label", "*", "et-hint"], true, [{ directive: typeof FormFieldDirective; inputs: {}; outputs: {}; }, { directive: typeof SelectionListDirective; inputs: { "value": "value"; "touched": "touched"; "disabled": "disabled"; "invalid": "invalid"; "errors": "errors"; "required": "required"; "name": "name"; }; outputs: { "valueChange": "valueChange"; "touchedChange": "touchedChange"; }; }, { directive: typeof _ethlete_core.ProvideColorDirective; inputs: { "etProvideColor": "color"; }; outputs: {}; }]>;
868
1264
  }
869
1265
 
870
1266
  declare class SegmentedButtonComponent {
871
1267
  optionDirective: SelectionOptionDirective;
1268
+ private group;
1269
+ private backgroundRef;
872
1270
  canAnimate: {
873
1271
  state: _angular_core.Signal<boolean>;
874
1272
  };
1273
+ constructor();
875
1274
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<SegmentedButtonComponent, never>;
876
1275
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<SegmentedButtonComponent, "et-segmented-button", never, {}, {}, never, ["*"], true, [{ directive: typeof SelectionOptionDirective; inputs: { "value": "value"; "checked": "checked"; "disabled": "disabled"; }; outputs: { "checkedChange": "checkedChange"; }; }, { directive: typeof _ethlete_core.ColorInteractiveDirective; inputs: {}; outputs: {}; }]>;
877
1276
  }
@@ -942,6 +1341,14 @@ type GridLayoutEntry = {
942
1341
  id: string;
943
1342
  position: GridItemPosition;
944
1343
  };
1344
+ /**
1345
+ * Contract for a grid item's `actionsComponent`: a component that receives the item's `itemId` and
1346
+ * `data` as inputs. Both are always provided by the grid.
1347
+ */
1348
+ type GridItemActionsComponent<TData = unknown> = Type<{
1349
+ itemId: InputSignal<string>;
1350
+ data: InputSignal<TData>;
1351
+ }>;
945
1352
  type GridComponentRegistration<TData = unknown> = {
946
1353
  component: Type<{
947
1354
  data: InputSignal<TData>;
@@ -979,13 +1386,16 @@ type GridDragState = {
979
1386
  };
980
1387
  declare class GridDirective {
981
1388
  private injector;
1389
+ private destroyRef;
1390
+ elementRef: ElementRef<HTMLElement>;
1391
+ private gridConfig;
1392
+ private reducedMotion;
982
1393
  breakpoints: _angular_core.InputSignal<GridBreakpointConfig[]>;
983
1394
  rowHeight: _angular_core.InputSignal<number>;
984
1395
  gap: _angular_core.InputSignal<number>;
985
1396
  initialItems: _angular_core.InputSignal<GridItemConfig[]>;
986
1397
  readOnly: _angular_core.InputSignalWithTransform<boolean, unknown>;
987
1398
  layoutChange: _angular_core.OutputEmitterRef<GridSerializedState>;
988
- private gridConfig;
989
1399
  registrations: _angular_core.Signal<GridComponentRegistration[]>;
990
1400
  private dimensions;
991
1401
  private itemConfigs;
@@ -993,40 +1403,55 @@ declare class GridDirective {
993
1403
  dragState: _angular_core.WritableSignal<GridDragState | null>;
994
1404
  private constraintsRegistry;
995
1405
  private resizeBaseLayout;
996
- private itemElements;
997
- private ghostElement;
998
- private rectSnapshot;
1406
+ private pendingResize;
1407
+ private lastResizeTarget;
1408
+ leavingIds: _angular_core.WritableSignal<ReadonlySet<string>>;
1409
+ isResizeActive: _angular_core.WritableSignal<boolean>;
1410
+ private animationsReady;
1411
+ private isContainerResizing;
999
1412
  containerWidth: _angular_core.Signal<number>;
1413
+ isReady: _angular_core.Signal<boolean>;
1414
+ animationsEnabled: _angular_core.Signal<boolean>;
1000
1415
  activeBreakpoint: _angular_core.Signal<string>;
1001
1416
  activeColumns: _angular_core.Signal<number>;
1417
+ private paddings;
1418
+ geometry: _angular_core.Signal<_ethlete_components.GridGeometry>;
1002
1419
  items: _angular_core.Signal<GridItemConfig[]>;
1003
1420
  baseLayout: _angular_core.Signal<GridLayoutEntry[]>;
1004
1421
  layout: _angular_core.Signal<GridLayoutEntry[]>;
1422
+ containerHeightPx: _angular_core.Signal<number>;
1423
+ protected hostHeight: _angular_core.Signal<number | null>;
1424
+ protected containerTransition: _angular_core.Signal<"none" | "height var(--et-grid-anim-duration, 250ms) cubic-bezier(0.2, 0, 0, 1)">;
1005
1425
  ghostPosition: _angular_core.Signal<GridItemPosition | null>;
1006
1426
  constructor();
1427
+ getContainerOrigin(): {
1428
+ left: number;
1429
+ top: number;
1430
+ };
1007
1431
  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;
1432
+ unregisterConstraints(id: string): void;
1014
1433
  getConstraints(id: string): GridItemConstraints;
1015
- snapshotRects(): void;
1016
- animateLayoutTransition(options?: {
1017
- excludeIds?: Set<string>;
1018
- scaleIds?: Set<string>;
1434
+ beginDrag(itemId: string): GridItemPosition | null;
1435
+ updateDragTarget(cell: {
1436
+ col: number;
1437
+ row: number;
1019
1438
  }): void;
1020
- beginDrag(itemId: string): void;
1021
- updateDragTarget(targetPosition: GridItemPosition): void;
1022
- commitDrag(): void;
1439
+ commitDrag(): GridItemPosition | null;
1440
+ cancelDrag(): void;
1441
+ beginResize(itemId: string): GridItemPosition | null;
1442
+ updateResize(itemId: string, target: GridItemPosition): void;
1443
+ commitResize(): GridItemPosition | null;
1444
+ cancelResize(): void;
1445
+ /** One-shot resize (keyboard / programmatic): begin + update + commit in a single call. */
1446
+ resizeItem(options: ResizeItemOptions): void;
1023
1447
  addItem(type: string, data: unknown): void;
1024
1448
  removeItem(id: string): void;
1025
1449
  moveItem(id: string, newPosition: GridItemPosition): void;
1026
- resizeItem(options: ResizeItemOptions): void;
1027
- commitResize(): void;
1028
1450
  getSerializedState(): GridSerializedState;
1029
1451
  restoreState(state: GridSerializedState): void;
1452
+ /** Dev-mode-only: rejects consumer-provided item configs whose ids are not unique. */
1453
+ private assertValidItemConfigs;
1454
+ private finalizeRemove;
1030
1455
  private placeItem;
1031
1456
  private shrinkNeighbors;
1032
1457
  /** Compact all visited breakpoints (layoutOverrides entries) after an item is removed. */
@@ -1038,42 +1463,295 @@ declare class GridDirective {
1038
1463
  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
1464
  }
1040
1465
 
1041
- declare class GridItemDirective {
1042
- private grid;
1043
- hostElement: ElementRef<HTMLElement>;
1044
- itemId: _angular_core.InputSignal<string>;
1045
- minColSpan: _angular_core.InputSignalWithTransform<number, unknown>;
1046
- maxColSpan: _angular_core.InputSignalWithTransform<number, unknown>;
1047
- minRowSpan: _angular_core.InputSignalWithTransform<number, unknown>;
1048
- maxRowSpan: _angular_core.InputSignalWithTransform<number, unknown>;
1049
- isBeingDragged: _angular_core.Signal<boolean>;
1050
- private frozenPosition;
1051
- 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>;
1059
- constructor();
1060
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<GridItemDirective, never>;
1061
- 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>;
1466
+ type AutoScrollPointer = {
1467
+ clientX: number;
1468
+ clientY: number;
1469
+ };
1470
+ type AutoScroller = {
1471
+ /** Begin the edge-proximity loop. No-op if already running. */
1472
+ start: (pointer: AutoScrollPointer) => void;
1473
+ /** Feed the latest pointer position. */
1474
+ update: (pointer: AutoScrollPointer) => void;
1475
+ stop: () => void;
1476
+ };
1477
+ declare const findScrollableAncestor: (start: Element | null) => HTMLElement | null;
1478
+ declare const createAutoScroller: (options: {
1479
+ document: Document;
1480
+ getScrollElement: () => HTMLElement | null;
1481
+ threshold?: number;
1482
+ maxSpeed?: number;
1483
+ }) => AutoScroller;
1484
+
1485
+ /** A rectangle in container-relative pixels (x/y measured from the container's padding box). */
1486
+ type PixelRect = {
1487
+ x: number;
1488
+ y: number;
1489
+ width: number;
1490
+ height: number;
1491
+ };
1492
+ type GridGeometry = {
1493
+ /** Width available for columns (container client width minus horizontal padding). */
1494
+ contentWidth: number;
1495
+ columns: number;
1496
+ gap: number;
1497
+ rowHeight: number;
1498
+ cellWidth: number;
1499
+ /** Horizontal distance between the left edges of two adjacent columns. */
1500
+ strideX: number;
1501
+ /** Vertical distance between the top edges of two adjacent rows. */
1502
+ strideY: number;
1503
+ /** Container padding-left - the x of column 0. */
1504
+ originX: number;
1505
+ /** Container padding-top - the y of row 0. */
1506
+ originY: number;
1507
+ };
1508
+ /**
1509
+ * Effective span bounds for a resize gesture. Grid bounds and item constraints are
1510
+ * unified in span units per edge, so the clamped pixel rect and the snapped span
1511
+ * are always derived from the same limits and can never disagree.
1512
+ */
1513
+ type ResizeSpanBounds = {
1514
+ minColSpan: number;
1515
+ maxColSpan: number;
1516
+ minRowSpan: number;
1517
+ maxRowSpan: number;
1518
+ };
1519
+ declare const computeGeometry: (options: {
1520
+ contentWidth: number;
1521
+ columns: number;
1522
+ gap: number;
1523
+ rowHeight: number;
1524
+ originX?: number;
1525
+ originY?: number;
1526
+ }) => GridGeometry;
1527
+ declare const spanWidth: (span: number, geometry: GridGeometry) => number;
1528
+ declare const spanHeight: (span: number, geometry: GridGeometry) => number;
1529
+ declare const positionToPixelRect: (position: GridItemPosition, geometry: GridGeometry) => PixelRect;
1530
+ /** Pixel height of the given number of rows (content only, no container padding). */
1531
+ declare const rowsToPixelHeight: (rows: number, geometry: GridGeometry) => number;
1532
+ declare const pixelRectsEqual: (a: PixelRect | null, b: PixelRect | null) => boolean;
1533
+ declare const positionsEqual: (a: GridItemPosition | null, b: GridItemPosition | null) => boolean;
1534
+ declare const SNAP_HYSTERESIS = 0.1;
1535
+ /**
1536
+ * Rounds a raw cell-unit value to the nearest integer with a hysteresis margin
1537
+ * relative to the last snapped value: the rounding boundary is shifted by
1538
+ * SNAP_HYSTERESIS against the direction of travel, so a pointer jittering exactly
1539
+ * on a cell midpoint cannot flap the snap back and forth (each flap would
1540
+ * re-trigger a full neighbour reflow).
1541
+ */
1542
+ declare const hysteresisRound: (raw: number, last: number | null) => number;
1543
+ declare const resizeSpanBounds: (options: {
1544
+ edge: ResizeEdge;
1545
+ start: GridItemPosition;
1546
+ constraints: GridItemConstraints;
1547
+ columns: number;
1548
+ }) => ResizeSpanBounds;
1549
+ declare const clampResizeRect: (options: {
1550
+ edge: ResizeEdge;
1551
+ dx: number;
1552
+ dy: number;
1553
+ startRect: PixelRect;
1554
+ bounds: ResizeSpanBounds;
1555
+ geometry: GridGeometry;
1556
+ }) => PixelRect;
1557
+ declare const snapResizeSpan: (options: {
1558
+ edge: ResizeEdge;
1559
+ rect: PixelRect;
1560
+ start: GridItemPosition;
1561
+ bounds: ResizeSpanBounds;
1562
+ geometry: GridGeometry;
1563
+ lastSnap: GridItemPosition | null;
1564
+ }) => GridItemPosition;
1565
+ declare const projectDragCell: (options: {
1566
+ float: {
1567
+ x: number;
1568
+ y: number;
1569
+ };
1570
+ colSpan: number;
1571
+ geometry: GridGeometry;
1572
+ lastTarget: {
1573
+ col: number;
1574
+ row: number;
1575
+ } | null;
1576
+ }) => {
1577
+ col: number;
1578
+ row: number;
1579
+ };
1580
+
1581
+ type FindCollisionOptions = {
1582
+ entries: GridLayoutEntry[];
1583
+ position: GridItemPosition;
1584
+ excludeId?: string;
1585
+ };
1586
+ type AutoPlaceOptions = {
1587
+ entries: GridLayoutEntry[];
1588
+ colSpan: number;
1589
+ rowSpan: number;
1590
+ columns: number;
1591
+ };
1592
+ type ClampPositionOptions = {
1593
+ position: GridItemPosition;
1594
+ constraints: GridItemConstraints;
1595
+ columns: number;
1596
+ };
1597
+ type ResolveCollisionsOptions = {
1598
+ entries: GridLayoutEntry[];
1599
+ movedId: string;
1600
+ columns: number;
1601
+ originPosition?: GridItemPosition;
1602
+ rowFloors?: RowFloors;
1603
+ };
1604
+ /**
1605
+ * Per-item lower bound (in rows) for the upward compaction pass. An item with a
1606
+ * floor is never pulled above it — used during live resize gestures to keep
1607
+ * unrelated items from collapsing into freshly vacated space while the pointer
1608
+ * is still down. Items without an entry compact all the way up (floor 0).
1609
+ */
1610
+ type RowFloors = ReadonlyMap<string, number>;
1611
+ type CompactLayoutOptions = {
1612
+ entries: GridLayoutEntry[];
1613
+ columns: number;
1614
+ rowFloors?: RowFloors;
1615
+ };
1616
+ /**
1617
+ * Checks whether two grid items overlap.
1618
+ */
1619
+ declare const itemsCollide: (a: GridItemPosition, b: GridItemPosition) => boolean;
1620
+ /**
1621
+ * Returns the first item that collides with the given position, or undefined if none.
1622
+ */
1623
+ declare const findCollision: (options: FindCollisionOptions) => GridLayoutEntry | undefined;
1624
+ /**
1625
+ * Compacts the layout vertically (moves items up as far as possible without collision).
1626
+ *
1627
+ * Also acts as a self-healing normaliser: positions that overflow the grid horizontally
1628
+ * (e.g. stale data from a wider breakpoint clamped into a narrower one — a colSpan of 12
1629
+ * or a col of 8 in a 6-column grid) are first clamped back into bounds, then any items
1630
+ * left overlapping are pushed down before the upward compaction runs. This guarantees the
1631
+ * returned layout is always in-bounds and overlap-free regardless of the input — clamping
1632
+ * a column alone is not enough, because it can drop an item on top of an existing one.
1633
+ */
1634
+ declare const compactLayout: (options: CompactLayoutOptions) => GridLayoutEntry[];
1635
+ /**
1636
+ * Finds the first available position for an item with the given span in a grid.
1637
+ * Uses top-left gravity: scans row by row, column by column.
1638
+ */
1639
+ declare const autoPlace: (options: AutoPlaceOptions) => GridItemPosition;
1640
+ /**
1641
+ * Validates and clamps a position to respect grid boundaries and item constraints.
1642
+ */
1643
+ declare const clampPosition: (options: ClampPositionOptions) => {
1644
+ col: number;
1645
+ row: number;
1646
+ colSpan: number;
1647
+ rowSpan: number;
1648
+ };
1649
+ /**
1650
+ * Resolves collisions by pushing items down when a moved/resized item overlaps others.
1651
+ * If exactly one item of the same size collides, they swap positions instead.
1652
+ * Cascades: if pushed items collide with others, those are pushed down too.
1653
+ */
1654
+ declare const resolveCollisions: (options: ResolveCollisionsOptions) => GridLayoutEntry[];
1655
+ /**
1656
+ * Computes the total number of rows occupied by the layout.
1657
+ */
1658
+ declare const computeGridHeight: (entries: GridLayoutEntry[]) => number;
1659
+
1660
+ type MapLayoutOptions = {
1661
+ entries: GridLayoutEntry[];
1662
+ fromColumns: number;
1663
+ toColumns: number;
1664
+ };
1665
+ /**
1666
+ * Resolves the active breakpoint name based on the container width.
1667
+ * Breakpoints are sorted by minWidth descending — the first one whose minWidth is <= containerWidth wins.
1668
+ */
1669
+ declare const resolveBreakpoint: (breakpoints: GridBreakpointConfig[], containerWidth: number) => GridBreakpointName;
1670
+ /**
1671
+ * Auto-generates a layout for a smaller breakpoint from a larger one.
1672
+ * Items are re-flowed into fewer columns, maintaining their relative order.
1673
+ */
1674
+ declare const mapLayoutToBreakpoint: (options: MapLayoutOptions) => GridLayoutEntry[];
1675
+ declare const DEFAULT_BREAKPOINTS: GridBreakpointConfig[];
1676
+
1677
+ type SerializeOptions = {
1678
+ items: GridItemConfig[];
1679
+ breakpoints: GridBreakpointConfig[];
1680
+ rowHeight: number;
1681
+ };
1682
+ /**
1683
+ * Serializes the current grid state into a JSON-compatible object suitable for DB storage.
1684
+ */
1685
+ declare const serializeGridLayout: (options: SerializeOptions) => GridSerializedState;
1686
+ /**
1687
+ * Deserializes a stored grid state back into working configuration.
1688
+ * Returns breakpoint configs and item configs.
1689
+ */
1690
+ declare const deserializeGridLayout: (state: GridSerializedState, breakpointMinWidths: Record<string, number>) => {
1691
+ breakpoints: GridBreakpointConfig[];
1692
+ items: GridItemConfig[];
1693
+ rowHeight: number;
1694
+ };
1695
+
1696
+ declare class GridItemDirective {
1697
+ private grid;
1698
+ private injector;
1699
+ private destroyRef;
1700
+ hostElement: ElementRef<HTMLElement>;
1701
+ itemId: _angular_core.InputSignal<string>;
1702
+ minColSpan: _angular_core.InputSignalWithTransform<number, unknown>;
1703
+ maxColSpan: _angular_core.InputSignalWithTransform<number, unknown>;
1704
+ minRowSpan: _angular_core.InputSignalWithTransform<number, unknown>;
1705
+ maxRowSpan: _angular_core.InputSignalWithTransform<number, unknown>;
1706
+ isBeingDragged: _angular_core.Signal<boolean>;
1707
+ currentPosition: _angular_core.Signal<_ethlete_components.GridItemPosition | null>;
1708
+ /** The layout-derived target rect in container-relative pixels. */
1709
+ slotRect: _angular_core.Signal<PixelRect | null>;
1710
+ private renderModeSignal;
1711
+ private liveRect;
1712
+ private isSettlingSignal;
1713
+ private enteringSignal;
1714
+ renderMode: _angular_core.Signal<"layout" | "direct">;
1715
+ isSettling: _angular_core.Signal<boolean>;
1716
+ protected entering: _angular_core.Signal<boolean>;
1717
+ protected leaving: _angular_core.Signal<boolean>;
1718
+ /** The rect currently bound to the host: pointer-driven while direct-controlled, the slot otherwise. */
1719
+ renderedRect: _angular_core.Signal<PixelRect | null>;
1720
+ protected translateStyle: _angular_core.Signal<string | null>;
1721
+ 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)">;
1722
+ private settleListener;
1723
+ constructor();
1724
+ startDirectControl(): void;
1725
+ updateDirectRect(rect: PixelRect): void;
1726
+ stopDirectControl(): void;
1727
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<GridItemDirective, never>;
1728
+ 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
1729
  }
1063
1730
 
1064
1731
  declare class GridDragDirective {
1065
- protected grid: _ethlete_components.GridDirective;
1732
+ protected grid: _ethlete_components.GridDirective | null;
1066
1733
  private gridItem;
1067
- private injector;
1068
1734
  private elementRef;
1735
+ private destroyRef;
1736
+ private document;
1069
1737
  dragHandle: DragHandleDirective;
1070
- private renderer;
1071
- private dragStartClient;
1072
- private dragPixelOffset;
1073
- protected dragTransform: _angular_core.Signal<string>;
1738
+ private origin;
1739
+ private startBreakpoint;
1740
+ private grabOffset;
1741
+ private containerOrigin;
1742
+ private lastPointer;
1743
+ private lastTarget;
1744
+ private gestureListeners;
1745
+ private autoScroller;
1074
1746
  constructor();
1075
- private applyFixed;
1076
- private releaseFixed;
1747
+ private startDrag;
1748
+ private trackDragMove;
1749
+ private applyPointer;
1750
+ private settleDrag;
1751
+ private cancelDrag;
1752
+ private finishGesture;
1753
+ private attachGestureListeners;
1754
+ private detachGestureListeners;
1077
1755
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<GridDragDirective, never>;
1078
1756
  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
1757
  }
@@ -1081,12 +1759,27 @@ declare class GridDragDirective {
1081
1759
  declare class GridResizeDirective {
1082
1760
  private grid;
1083
1761
  private gridItem;
1762
+ private destroyRef;
1763
+ private document;
1084
1764
  isResizing: _angular_core.WritableSignal<boolean>;
1085
1765
  resizeEdges: _angular_core.Signal<ResizeEdge[]>;
1086
- private resizeStartPos;
1766
+ private start;
1767
+ private startBreakpoint;
1768
+ private lastSnap;
1769
+ private lastEvent;
1770
+ private startContainerOrigin;
1771
+ private containerOrigin;
1772
+ private gestureListeners;
1773
+ private autoScroller;
1774
+ constructor();
1087
1775
  beginResize(): void;
1088
1776
  updateResize(event: ResizeMoveEvent): void;
1089
1777
  finishResize(): void;
1778
+ cancelResize(): void;
1779
+ private applyResize;
1780
+ private finishGesture;
1781
+ private attachGestureListeners;
1782
+ private detachGestureListeners;
1090
1783
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<GridResizeDirective, never>;
1091
1784
  static ɵdir: _angular_core.ɵɵDirectiveDeclaration<GridResizeDirective, "[etGridResize]", never, {}, {}, never, never, true, never>;
1092
1785
  }
@@ -1097,12 +1790,9 @@ type GridConfig = {
1097
1790
  registrations: GridComponentRegistration[];
1098
1791
  interactiveAriaLabel: string;
1099
1792
  readonlyAriaLabel: string;
1100
- dragHandleAriaLabel: string;
1793
+ removeActionAriaLabel: string;
1101
1794
  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>;
1795
+ actionsComponent?: GridItemActionsComponent | null;
1106
1796
  };
1107
1797
  declare const provideGridConfig: (valueOverride?: Partial<GridConfig> | undefined) => _angular_core.Provider[];
1108
1798
  declare const injectGridConfig: {
@@ -1135,20 +1825,16 @@ declare const fromGridPosition: (pos: GridItemPosition) => {
1135
1825
 
1136
1826
  declare class GridComponent {
1137
1827
  grid: GridDirective;
1138
- private ghostRef;
1139
1828
  private gridConfig;
1140
1829
  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>;
1830
+ protected actionsComponent: _angular_core.Signal<_ethlete_components.GridItemActionsComponent | null>;
1144
1831
  protected registeredItems: _angular_core.Signal<{
1145
1832
  item: _ethlete_components.GridItemConfig;
1146
1833
  reg: _ethlete_components.GridComponentRegistration;
1147
1834
  }[]>;
1148
1835
  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>;
1836
+ protected ghostRect: _angular_core.Signal<_ethlete_components.PixelRect | null>;
1837
+ 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)">;
1152
1838
  constructor();
1153
1839
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<GridComponent, never>;
1154
1840
  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"; }; }]>;
@@ -1161,18 +1847,33 @@ declare class GridItemComponent {
1161
1847
  private parentSurfaceProvider;
1162
1848
  gridDrag: GridDragDirective;
1163
1849
  gridResize: GridResizeDirective;
1850
+ private surfaceThemes;
1164
1851
  ariaLabel: _angular_core.InputSignal<string>;
1165
1852
  removed: _angular_core.OutputEmitterRef<void>;
1166
- private surfaceThemes;
1167
- private gridConfig;
1168
- private locale;
1169
1853
  protected isReadOnly: _angular_core.Signal<boolean>;
1170
- protected dragHandleAriaLabel: _angular_core.Signal<string>;
1171
1854
  private resolvedSurface;
1172
1855
  constructor();
1856
+ protected blockPointerDownWhenReadOnly(event: PointerEvent): void;
1173
1857
  applyKeyboardShortcut(event: KeyboardEvent): void;
1174
1858
  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: {}; }]>;
1859
+ 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: {}; }]>;
1860
+ }
1861
+
1862
+ declare class GridItemToolbarComponent {
1863
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<GridItemToolbarComponent, never>;
1864
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<GridItemToolbarComponent, "et-grid-item-toolbar, [et-grid-item-toolbar]", never, {}, {}, never, ["*"], true, never>;
1865
+ }
1866
+
1867
+ declare class GridItemDefaultActionsComponent {
1868
+ private grid;
1869
+ private gridConfig;
1870
+ private locale;
1871
+ itemId: _angular_core.InputSignal<string>;
1872
+ data: _angular_core.InputSignal<unknown>;
1873
+ protected removeAriaLabel: _angular_core.Signal<string>;
1874
+ protected remove(): void;
1875
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<GridItemDefaultActionsComponent, never>;
1876
+ 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
1877
  }
1177
1878
 
1178
1879
  /**
@@ -1223,14 +1924,52 @@ declare const GRID_ERROR_CODES: {
1223
1924
  readonly MISSING_GRID_ITEM: 1901;
1224
1925
  readonly DUPLICATE_ITEM_ID: 1902;
1225
1926
  readonly INVALID_LAYOUT_STATE: 1903;
1927
+ readonly UNKNOWN_ITEM_TYPE: 1904;
1226
1928
  };
1227
1929
 
1228
- declare const GridImports: readonly [typeof GridComponent, typeof GridItemComponent, typeof GridDebugComponent];
1930
+ declare const GridImports: readonly [typeof GridComponent, typeof GridItemComponent, typeof GridItemToolbarComponent, typeof GridItemDefaultActionsComponent, typeof GridDebugComponent];
1229
1931
 
1230
1932
  type IconDefinition = {
1231
1933
  name: string;
1934
+ /**
1935
+ * Optional style variant (e.g. `'solid'`, `'light'`, `'regular'`). Lets the same icon
1936
+ * `name` exist in several styles without encoding the style into the name. Icons
1937
+ * registered without a variant are matched by their bare name.
1938
+ */
1939
+ variant?: string;
1232
1940
  data: string;
1233
1941
  };
1942
+ /**
1943
+ * Augmentable registry for the literal set of icon names an app uses. Empty by default,
1944
+ * which keeps `etIcon` typed as plain `string`. The `@ethlete/components:icons` generator
1945
+ * writes an augmentation for this interface, or you can augment it manually:
1946
+ *
1947
+ * ```ts
1948
+ * declare module '@ethlete/components' {
1949
+ * interface EthleteIconNameRegistry {
1950
+ * name: 'shield' | 'plus';
1951
+ * }
1952
+ * }
1953
+ * ```
1954
+ */
1955
+ interface EthleteIconNameRegistry {
1956
+ }
1957
+ /**
1958
+ * Augmentable registry for the literal set of icon variants an app uses. Empty by default,
1959
+ * which keeps the `variant` input typed as plain `string`. See {@link EthleteIconNameRegistry}.
1960
+ */
1961
+ interface EthleteIconVariantRegistry {
1962
+ }
1963
+ type RegisteredIconName = EthleteIconNameRegistry extends {
1964
+ name: infer N extends string;
1965
+ } ? N : string;
1966
+ type RegisteredIconVariant = EthleteIconVariantRegistry extends {
1967
+ name: infer V extends string;
1968
+ } ? V : string;
1969
+ /** Variant the {@link IconDirective} falls back to when `etIcon` is used without an explicit `variant`. */
1970
+ declare const DEFAULT_ICON_VARIANT = "solid";
1971
+ /** Composite registry key for an icon `name` plus an optional `variant`. */
1972
+ declare const iconRegistryKey: (name: string, variant?: string | null) => string;
1234
1973
  declare const ICONS_TOKEN: InjectionToken<Record<string, IconDefinition>>;
1235
1974
  declare const provideIcons: (...icons: IconDefinition[]) => {
1236
1975
  provide: InjectionToken<Record<string, IconDefinition>>;
@@ -1247,12 +1986,20 @@ declare const CHEVRON_ICON: IconDefinition;
1247
1986
 
1248
1987
  declare const CLIPBOARD_CHECK_ICON: IconDefinition;
1249
1988
 
1989
+ declare const FILE_ICON: IconDefinition;
1990
+
1250
1991
  declare const FLOPPY_DISK_ICON: IconDefinition;
1251
1992
 
1252
1993
  declare const FOCUS_FRAME_ICON: IconDefinition;
1253
1994
 
1254
1995
  declare const GRID_2X2_ICON: IconDefinition;
1255
1996
 
1997
+ declare const HEADING_1_ICON: IconDefinition;
1998
+
1999
+ declare const HEADING_2_ICON: IconDefinition;
2000
+
2001
+ declare const HEADING_3_ICON: IconDefinition;
2002
+
1256
2003
  declare const ICON_ERROR_CODES: {
1257
2004
  readonly NO_ICONS_PROVIDED: 1800;
1258
2005
  readonly ICON_NOT_FOUND: 1801;
@@ -1263,78 +2010,806 @@ declare const ICON_ERROR_CODES: {
1263
2010
  readonly DUPLICATE_ICON_NAME: 1806;
1264
2011
  };
1265
2012
 
1266
- declare const ICON_DIRECTIVE_TOKEN: InjectionToken<IconDirective>;
1267
- declare class IconDirective {
1268
- private icons;
1269
- private sanitizer;
1270
- iconNameToUse: _angular_core.InputSignal<string>;
1271
- allowHardcodedColor: _angular_core.InputSignalWithTransform<boolean, unknown>;
1272
- iconSrc: _angular_core.Signal<_angular_platform_browser.SafeHtml | null>;
1273
- hostClasses: _angular_core.Signal<string>;
2013
+ declare const ICON_DIRECTIVE_TOKEN: InjectionToken<IconDirective>;
2014
+ declare class IconDirective {
2015
+ private icons;
2016
+ private sanitizer;
2017
+ iconNameToUse: InputSignal<RegisteredIconName>;
2018
+ variant: InputSignal<RegisteredIconVariant | undefined>;
2019
+ allowHardcodedColor: _angular_core.InputSignalWithTransform<boolean, unknown>;
2020
+ private resolvedIcon;
2021
+ iconSrc: _angular_core.Signal<_angular_platform_browser.SafeHtml | null>;
2022
+ hostClasses: _angular_core.Signal<string>;
2023
+ constructor();
2024
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<IconDirective, never>;
2025
+ 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>;
2026
+ }
2027
+
2028
+ declare const ITALIC_ICON: IconDefinition;
2029
+
2030
+ declare const LINK_ICON: IconDefinition;
2031
+
2032
+ declare const LIST_BULLETED_ICON: IconDefinition;
2033
+
2034
+ declare const LIST_NUMBERED_ICON: IconDefinition;
2035
+
2036
+ declare const LOCK_ICON: IconDefinition;
2037
+
2038
+ declare const PENCIL_ICON: IconDefinition;
2039
+
2040
+ declare const PLUS_ICON: IconDefinition;
2041
+
2042
+ declare const ROTATE_RIGHT_ICON: IconDefinition;
2043
+
2044
+ declare const STRIKETHROUGH_ICON: IconDefinition;
2045
+
2046
+ declare const TIMES_ICON: IconDefinition;
2047
+
2048
+ declare const TRIANGLE_EXCLAMATION_ICON: IconDefinition;
2049
+
2050
+ declare const UPLOAD_ICON: IconDefinition;
2051
+
2052
+ declare const ICON_IMPORTS: readonly [typeof IconDirective];
2053
+
2054
+ declare class BrandLoaderComponent {
2055
+ readonly PATH = "M15.905 6.21401C15.7794 6.8902 16.2818 7.51877 16.9517 7.51877H23.8598L22.9201 12.3378H15.6817C15.1048 12.3378 14.6071 12.7569 14.5001 13.3378C14.4861 13.4188 14.4768 13.4997 14.4768 13.5811C14.4768 14.2426 15.0071 14.8092 15.6817 14.8092H23.9435L22.9201 19.9997H6.79183L7.2198 17.814H7.64313C7.94085 17.814 8.20601 17.6907 8.40139 17.495C8.59212 17.2954 8.71307 17.0235 8.71307 16.7235C8.71307 16.1188 8.23858 15.6331 7.64778 15.6288H2.73534C2.14919 15.6288 1.67004 15.1426 1.67004 14.5378C1.67004 14.2383 1.791 13.9621 1.98172 13.7664C2.17711 13.5711 2.44227 13.4473 2.73534 13.4473H8.07111L8.96428 8.88115H9.39226C9.68533 8.88115 9.95049 8.75686 10.1459 8.5621C10.3366 8.3621 10.4576 8.08591 10.4576 7.78543C10.4576 7.18543 9.9784 6.69543 9.39226 6.69543H4.48447C3.89367 6.69543 3.41452 6.20448 3.41452 5.60496C3.41452 5.30448 3.53547 5.02877 3.7262 4.82829C3.92158 4.63353 4.19139 4.50924 4.48447 4.50924H10.2436C10.5366 4.50924 10.8064 4.3902 10.9972 4.1902C11.1879 3.99496 11.3089 3.72401 11.3089 3.41877C11.3089 2.81401 10.8344 2.32829 10.2436 2.32829H1.06994C0.479149 2.32829 0 1.83829 0 1.23305C0 0.933054 0.12095 0.656864 0.31168 0.461626C0.507061 0.266864 0.776873 0.142578 1.06994 0.142578H26.4369L25.4135 5.33305H16.9517C16.4446 5.33305 16.0027 5.70496 15.905 6.21401Z";
2056
+ readonly OUTLINE_PATH = "M1.07 0.14 L26.44 0.14 L25.41 5.33 L16.95 5.33 C16.44 5.33 16.0 5.70 15.91 6.21 C15.78 6.89 16.28 7.52 16.95 7.52 L23.86 7.52 L22.92 12.34 L15.68 12.34 C15.10 12.34 14.61 12.76 14.50 13.34 C14.49 13.42 14.48 13.50 14.48 13.58 C14.48 14.24 15.01 14.81 15.68 14.81 L23.94 14.81 L22.92 20.0 L6.79 20.0 L7.22 17.81 L7.64 17.81 C7.94 17.81 8.21 17.69 8.40 17.50 C8.59 17.30 8.71 17.02 8.71 16.72 C8.71 16.12 8.24 15.63 7.65 15.63 L2.74 15.63 C2.15 15.63 1.67 15.14 1.67 14.54 C1.67 14.24 1.79 13.96 1.98 13.77 C2.18 13.57 2.44 13.45 2.74 13.45 L8.07 13.45 L8.96 8.88 L9.39 8.88 C9.69 8.88 9.95 8.76 10.15 8.56 C10.34 8.36 10.46 8.09 10.46 7.79 C10.46 7.19 9.98 6.70 9.39 6.70 L4.48 6.70 C3.89 6.70 3.41 6.20 3.41 5.60 C3.41 5.30 3.54 5.03 3.73 4.83 C3.92 4.63 4.19 4.51 4.48 4.51 L10.24 4.51 C10.54 4.51 10.81 4.39 10.997 4.19 C11.188 3.99 11.31 3.72 11.31 3.42 C11.31 2.81 10.83 2.33 10.24 2.33 L1.07 2.33 C0.48 2.33 0 1.84 0 1.23 C0 0.93 0.12 0.66 0.31 0.46 C0.51 0.27 0.78 0.14 1.07 0.14 Z";
2057
+ readonly SHAPE_CLIP_ID: string;
2058
+ shapeClip: string;
2059
+ readonly FILL_CLIP_ID: string;
2060
+ fillClip: string;
2061
+ constructor();
2062
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<BrandLoaderComponent, never>;
2063
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<BrandLoaderComponent, "et-brand-loader", never, {}, {}, never, never, true, never>;
2064
+ }
2065
+
2066
+ declare class ProgressBarComponent {
2067
+ value: _angular_core.InputSignalWithTransform<number, unknown>;
2068
+ indeterminate: _angular_core.InputSignalWithTransform<boolean, unknown>;
2069
+ clampedValue: _angular_core.Signal<number>;
2070
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ProgressBarComponent, never>;
2071
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ProgressBarComponent, "et-progress-bar", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "indeterminate": { "alias": "indeterminate"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
2072
+ }
2073
+
2074
+ declare class SpinnerComponent {
2075
+ diameter: _angular_core.InputSignalWithTransform<number, unknown>;
2076
+ strokeWidth: _angular_core.InputSignalWithTransform<number, unknown>;
2077
+ track: _angular_core.InputSignalWithTransform<boolean, unknown>;
2078
+ value: _angular_core.InputSignalWithTransform<number, unknown>;
2079
+ determinate: _angular_core.InputSignalWithTransform<boolean, unknown>;
2080
+ circleRadius: _angular_core.Signal<number>;
2081
+ normalizedStrokeWidth: _angular_core.Signal<number>;
2082
+ viewBox: _angular_core.Signal<string>;
2083
+ strokeCircumference: _angular_core.Signal<number>;
2084
+ circleStrokeWidth: _angular_core.Signal<number>;
2085
+ clampedValue: _angular_core.Signal<number>;
2086
+ determinateDashOffset: _angular_core.Signal<number>;
2087
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<SpinnerComponent, never>;
2088
+ 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>;
2089
+ }
2090
+
2091
+ declare class MenuContextTriggerDirective {
2092
+ private menu;
2093
+ private document;
2094
+ elementRef: ElementRef<HTMLElement>;
2095
+ private destroyRef;
2096
+ private repositionSubscription;
2097
+ constructor();
2098
+ isOpen(): boolean;
2099
+ protected handleContextMenu(event: MouseEvent): void;
2100
+ private attachRepositionListener;
2101
+ private detachRepositionListener;
2102
+ private isEventOnZone;
2103
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<MenuContextTriggerDirective, never>;
2104
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<MenuContextTriggerDirective, "[etMenuContextTrigger]", ["etMenuContextTrigger"], {}, {}, never, never, true, never>;
2105
+ }
2106
+
2107
+ type OverlayStrategyContext = {
2108
+ overlayRef: OverlayRef<object, unknown>;
2109
+ runtimeRef: OverlayRuntimeRef<object, unknown>;
2110
+ /** The mounted container component's host element (the runtime pane element). */
2111
+ containerEl: HTMLElement;
2112
+ /** The runtime host element wrapping backdrop and pane. */
2113
+ hostEl: HTMLElement;
2114
+ backdropEl: HTMLElement | null;
2115
+ /** The container's animated lifecycle, driving enter/leave transitions. */
2116
+ lifecycle: AnimatedLifecycleDirective;
2117
+ config: OverlayBreakpointConfig;
2118
+ previousConfig?: OverlayBreakpointConfig;
2119
+ origin?: HTMLElement | Event;
2120
+ };
2121
+ type OverlayStrategy = {
2122
+ /** Unique identifier for the strategy */
2123
+ id: string;
2124
+ /** Configuration for the overlay when this strategy is applied */
2125
+ config: OverlayBreakpointConfig;
2126
+ /**
2127
+ * Called when the overlay transitions FROM another strategy TO this strategy.
2128
+ * Only called during breakpoint changes, not on initial open.
2129
+ * @example Fullscreen dialog → Regular dialog on viewport resize
2130
+ */
2131
+ onSwitchedTo?: (context: OverlayStrategyContext) => void;
2132
+ /**
2133
+ * Called when the overlay transitions FROM this strategy TO another strategy.
2134
+ * Only called during breakpoint changes, not on close.
2135
+ * Use this to cleanup strategy-specific state when transitioning layouts.
2136
+ * @example Regular dialog → Fullscreen dialog on viewport resize
2137
+ */
2138
+ onSwitchedAwayFrom?: (context: OverlayStrategyContext) => void;
2139
+ /**
2140
+ * Called when the overlay is first opened with this strategy.
2141
+ * Use this for initial setup and enter animations.
2142
+ * The hook is responsible for starting the enter transition (e.g. `context.lifecycle.enter()`).
2143
+ */
2144
+ onBeforeEnter?: (context: OverlayStrategyContext) => void;
2145
+ /**
2146
+ * Called after the overlay has completed its enter animation.
2147
+ */
2148
+ onAfterEnter?: (context: OverlayStrategyContext) => void;
2149
+ /**
2150
+ * Called when the overlay is about to close (beforeClosed).
2151
+ * The hook is responsible for starting the leave transition (e.g. `context.lifecycle.leave()`).
2152
+ */
2153
+ onBeforeLeave?: (context: OverlayStrategyContext) => void;
2154
+ /**
2155
+ * Called after the overlay has been closed (afterClosed).
2156
+ * Use this for final cleanup.
2157
+ */
2158
+ onAfterLeave?: (context: OverlayStrategyContext) => void;
2159
+ };
2160
+ type OverlayStrategyBreakpoint = {
2161
+ /**
2162
+ * Breakpoint to apply the strategy for. If a number is provided, it will be used as a pixel value.
2163
+ * Always uses the min-width media query.
2164
+ *
2165
+ * @default 'xs' // 0px
2166
+ */
2167
+ breakpoint?: Breakpoint | number;
2168
+ /** Overlay strategy to be applied when the breakpoint is active. */
2169
+ strategy: OverlayStrategy;
2170
+ };
2171
+ type OverlayDragToDismissConfig = {
2172
+ /** Direction in which the overlay can be dragged. */
2173
+ direction: 'to-top' | 'to-bottom' | 'to-left' | 'to-right';
2174
+ /**
2175
+ * The minimum distance in pixels that the user must swipe to dismiss the overlay.
2176
+ *
2177
+ * @default 150 // 150px
2178
+ */
2179
+ minDistanceToDismiss?: number;
2180
+ /**
2181
+ * The minimum velocity in pixels per second that the user must swipe to dismiss the overlay.
2182
+ *
2183
+ * @default 150 // 150px/s
2184
+ */
2185
+ minVelocityToDismiss?: number;
2186
+ };
2187
+ type OverlayBreakpointConfig = {
2188
+ /** Min-width of the overlay. If a number is provided, assumes pixel units. */
2189
+ minWidth?: number | string;
2190
+ /** Max-width of the overlay. If a number is provided, assumes pixel units. */
2191
+ maxWidth?: number | string;
2192
+ /** Min-height of the overlay. If a number is provided, assumes pixel units. */
2193
+ minHeight?: number | string;
2194
+ /** Max-height of the overlay. If a number is provided, assumes pixel units. */
2195
+ maxHeight?: number | string;
2196
+ /** Width of the overlay. */
2197
+ width?: number | string;
2198
+ /** Height of the overlay. */
2199
+ height?: number | string;
2200
+ /** Position strategy to be used for the overlay. */
2201
+ positionStrategy?: (origin?: HTMLElement) => OverlayRuntimePositionStrategy;
2202
+ /** Custom class for the overlay container (the runtime pane element hosting the overlay content). */
2203
+ containerClass?: string | string[];
2204
+ /** Custom class for the runtime host element wrapping backdrop and pane. */
2205
+ hostClass?: string | string[];
2206
+ /** Custom class for the backdrop. */
2207
+ backdropClass?: string | string[];
2208
+ /** Custom class for the document (`<html>` element). */
2209
+ documentClass?: string | string[];
2210
+ /** Custom class for the `<body>` element */
2211
+ bodyClass?: string | string[];
2212
+ /** Determine if and in what direction the overlay should be able to be dragged to dismiss it. */
2213
+ dragToDismiss?: OverlayDragToDismissConfig;
2214
+ /**
2215
+ * Whether a backdrop element is rendered behind the overlay. Only applied at mount time (the
2216
+ * initially matched strategy) — it cannot change during breakpoint switches. An explicit
2217
+ * `hasBackdrop` on the overlay config always wins over this strategy default.
2218
+ *
2219
+ * @default undefined // falls back to the overlay config / modal behavior
2220
+ */
2221
+ hasBackdrop?: boolean;
2222
+ /**
2223
+ * Whether the transform origin should be set using the config's `origin` property value.
2224
+ *
2225
+ * @default false
2226
+ */
2227
+ applyTransformOrigin?: boolean;
2228
+ /**
2229
+ * Renders a floating-ui-positioned arrow on the overlay container that points at the origin.
2230
+ * Only meaningful for anchored positioning. The arrow inherits the pane background; combine with
2231
+ * an `offset` so the pane leaves room for it.
2232
+ *
2233
+ * @default false
2234
+ */
2235
+ arrow?: boolean;
2236
+ };
2237
+
2238
+ type OverlayAutoFocusTarget = 'container' | 'first-heading' | 'first-tabbable';
2239
+ type OverlayRole = 'dialog' | 'alertdialog';
2240
+ type OverlayMode = 'modal' | 'non-modal';
2241
+ type OverlayConfig = {
2242
+ viewContainerRef?: ViewContainerRef;
2243
+ injector?: Injector;
2244
+ id?: string;
2245
+ /**
2246
+ * The element or event the overlay was opened from. Used as the anchor reference
2247
+ * for anchored positioning and as the transform origin for strategy animations.
2248
+ * When omitted and strategies are used, falls back to the currently focused element.
2249
+ */
2250
+ origin?: HTMLElement | Event;
2251
+ role?: OverlayRole;
2252
+ hasBackdrop?: boolean;
2253
+ disableClose?: boolean;
2254
+ /**
2255
+ * Bindings applied to the overlay component, using Angular's native binding API
2256
+ * (`inputBinding`, `outputBinding`, `twoWayBinding`).
2257
+ */
2258
+ bindings?: Binding[];
2259
+ ariaDescribedBy?: string | null;
2260
+ ariaLabelledBy?: string | null;
2261
+ ariaLabel?: string | null;
2262
+ autoFocus?: OverlayAutoFocusTarget | string | false;
2263
+ restoreFocus?: boolean;
2264
+ providers?: StaticProvider[];
2265
+ hostClass?: string | string[];
2266
+ backdropClass?: string | string[];
2267
+ panelClass?: string | string[];
2268
+ mode?: OverlayMode;
2269
+ closeOnOutsidePointer?: boolean;
2270
+ closeOnEscape?: boolean;
2271
+ /**
2272
+ * Breakpoint-driven overlay strategies (dialog, sheets, full-screen, …).
2273
+ * When set, position, sizing and classes are controlled by the active strategy.
2274
+ */
2275
+ strategies?: () => OverlayStrategyBreakpoint[];
2276
+ /**
2277
+ * Disables the default overlay animations so custom ones can be applied.
2278
+ *
2279
+ * @default false
2280
+ */
2281
+ customAnimated?: boolean;
2282
+ };
2283
+
2284
+ declare const createOverlayRef: <TComponent extends object, TResult = unknown>(config: OverlayConfig) => {
2285
+ readonly id: string;
2286
+ readonly elements: _ethlete_core.OverlayRuntimeElements | null;
2287
+ config: OverlayConfig;
2288
+ headerTemplate: _angular_core.Signal<TemplateRef<unknown> | null>;
2289
+ /** @internal Set (or clear) the active header template. */
2290
+ setHeaderTemplate: (template: TemplateRef<unknown> | null) => void;
2291
+ componentInstance: () => TComponent | null;
2292
+ close: (result?: TResult) => void;
2293
+ closeVia: (source: OverlayRuntimeCloseSource, result?: TResult) => void;
2294
+ updatePositionStrategy: (strategy: OverlayRuntimePositionStrategy) => void;
2295
+ attachComponentInstanceOverride: (getter: () => TComponent | null) => void;
2296
+ afterOpened: () => Observable<void>;
2297
+ beforeClosed: () => Observable<TResult | undefined>;
2298
+ afterClosed: () => Observable<TResult | undefined>;
2299
+ attachRuntime: (runtimeRef: OverlayRuntimeRef<TComponent, TResult>) => void;
2300
+ };
2301
+ type OverlayRef<TComponent extends object = object, TResult = unknown> = ReturnType<typeof createOverlayRef<TComponent, TResult>>;
2302
+ declare const OVERLAY_REF: InjectionToken<{
2303
+ readonly id: string;
2304
+ readonly elements: _ethlete_core.OverlayRuntimeElements | null;
2305
+ config: OverlayConfig;
2306
+ headerTemplate: _angular_core.Signal<TemplateRef<unknown> | null>;
2307
+ /** @internal Set (or clear) the active header template. */
2308
+ setHeaderTemplate: (template: TemplateRef<unknown> | null) => void;
2309
+ componentInstance: () => object | null;
2310
+ close: (result?: unknown) => void;
2311
+ closeVia: (source: OverlayRuntimeCloseSource, result?: unknown) => void;
2312
+ updatePositionStrategy: (strategy: OverlayRuntimePositionStrategy) => void;
2313
+ attachComponentInstanceOverride: (getter: () => object | null) => void;
2314
+ afterOpened: () => Observable<void>;
2315
+ beforeClosed: () => Observable<unknown>;
2316
+ afterClosed: () => Observable<unknown>;
2317
+ attachRuntime: (runtimeRef: OverlayRuntimeRef<object, unknown>) => void;
2318
+ }>;
2319
+
2320
+ declare class OverlayAnchorDirective {
2321
+ private overlay;
2322
+ private destroyRef;
2323
+ elementRef: ElementRef<HTMLElement>;
2324
+ constructor();
2325
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<OverlayAnchorDirective, never>;
2326
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<OverlayAnchorDirective, "[etOverlayAnchor]", ["etOverlayAnchor"], {}, {}, never, never, true, never>;
2327
+ }
2328
+
2329
+ declare class OverlayTriggerDirective {
2330
+ private overlay;
2331
+ private destroyRef;
2332
+ elementRef: ElementRef<HTMLElement>;
2333
+ constructor();
2334
+ toggle(): void;
2335
+ isOpen(): boolean;
2336
+ expanded(): boolean | null;
2337
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<OverlayTriggerDirective, never>;
2338
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<OverlayTriggerDirective, "[etOverlayTrigger]", ["etOverlayTrigger"], {}, {}, never, never, true, never>;
2339
+ }
2340
+
2341
+ declare class OverlayDirective {
2342
+ private destroyRef;
2343
+ private overlayManager;
2344
+ mode: _angular_core.InputSignal<OverlayMode>;
2345
+ role: _angular_core.InputSignal<OverlayRole | undefined>;
2346
+ open: _angular_core.ModelSignal<boolean>;
2347
+ disabled: _angular_core.InputSignal<boolean>;
2348
+ disableClose: _angular_core.InputSignal<boolean>;
2349
+ autoFocus: _angular_core.InputSignal<string | false | undefined>;
2350
+ restoreFocus: _angular_core.InputSignal<boolean>;
2351
+ hasBackdrop: _angular_core.InputSignal<boolean | undefined>;
2352
+ closeOnEscape: _angular_core.InputSignal<boolean>;
2353
+ closeOnOutsidePointer: _angular_core.InputSignal<boolean>;
2354
+ hostClass: _angular_core.InputSignal<string | string[] | undefined>;
2355
+ backdropClass: _angular_core.InputSignal<string | string[] | undefined>;
2356
+ panelClass: _angular_core.InputSignal<string | string[] | undefined>;
2357
+ placement: _angular_core.InputSignal<Placement>;
2358
+ fallbackPlacements: _angular_core.InputSignal<Placement[] | undefined>;
2359
+ offset: _angular_core.InputSignal<OffsetOptions | null>;
2360
+ viewportPadding: _angular_core.InputSignal<Padding | null>;
2361
+ autoResize: _angular_core.InputSignal<boolean>;
2362
+ shift: _angular_core.InputSignal<boolean>;
2363
+ autoHide: _angular_core.InputSignal<boolean>;
2364
+ autoCloseIfReferenceHidden: _angular_core.InputSignal<boolean>;
2365
+ mirrorWidth: _angular_core.InputSignal<boolean>;
2366
+ /** @internal */
2367
+ registeredAnchor: _angular_core.WritableSignal<OverlayAnchorDirective | null>;
2368
+ /** @internal */
2369
+ registeredSurface: _angular_core.WritableSignal<OverlaySurfaceDirective | null>;
2370
+ /** @internal */
2371
+ registeredTrigger: _angular_core.WritableSignal<OverlayTriggerDirective | null>;
2372
+ /** @internal */
2373
+ overlayRef: _angular_core.WritableSignal<OverlayRef<OverlayTemplateHostComponent, unknown> | null>;
2374
+ isMounted: _angular_core.Signal<boolean>;
2375
+ private originElement;
2376
+ constructor();
2377
+ show(): void;
2378
+ hide(result?: unknown): void;
2379
+ toggle(): void;
2380
+ /** @internal */
2381
+ unregisterTrigger(trigger: OverlayTriggerDirective): void;
2382
+ /** @internal */
2383
+ unregisterAnchor(anchor: OverlayAnchorDirective): void;
2384
+ /** @internal */
2385
+ unregisterSurface(surface: OverlaySurfaceDirective): void;
2386
+ private mountOverlay;
2387
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<OverlayDirective, never>;
2388
+ 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>;
2389
+ }
2390
+
2391
+ type OverlaySurfaceContext = {
2392
+ $implicit: OverlayDirective;
2393
+ overlay: OverlayDirective;
2394
+ close: (result?: unknown) => void;
2395
+ };
2396
+ declare class OverlaySurfaceDirective {
2397
+ private overlay;
2398
+ templateRef: TemplateRef<OverlaySurfaceContext>;
2399
+ private destroyRef;
2400
+ constructor();
2401
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<OverlaySurfaceDirective, never>;
2402
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<OverlaySurfaceDirective, "ng-template[etOverlaySurface]", ["etOverlaySurface"], {}, {}, never, never, true, never>;
2403
+ }
2404
+
2405
+ declare class OverlayTemplateHostComponent {
2406
+ protected template: _angular_core.InputSignal<TemplateRef<OverlaySurfaceContext>>;
2407
+ protected context: _angular_core.InputSignal<OverlaySurfaceContext>;
2408
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<OverlayTemplateHostComponent, never>;
2409
+ 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>;
2410
+ }
2411
+
2412
+ declare class MenuPanelDirective {
2413
+ /** @internal */
2414
+ menu: MenuDirective | null;
2415
+ elementRef: ElementRef<HTMLElement>;
2416
+ private destroyRef;
2417
+ protected labelledBy: _angular_core.Signal<string | null>;
2418
+ protected busy: _angular_core.Signal<true | null>;
2419
+ constructor();
2420
+ /** @internal */
2421
+ focus(): void;
2422
+ protected handleKeydown(event: KeyboardEvent): void;
2423
+ protected handlePointerEnter(event: PointerEvent): void;
2424
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<MenuPanelDirective, never>;
2425
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<MenuPanelDirective, "[etMenuPanel]", ["etMenuPanel"], {}, {}, never, never, true, never>;
2426
+ }
2427
+
2428
+ declare class MenuSearchDirective {
2429
+ private menu;
2430
+ private document;
2431
+ elementRef: ElementRef<HTMLInputElement>;
2432
+ private destroyRef;
2433
+ query: _angular_core.ModelSignal<string>;
2434
+ loading: _angular_core.InputSignalWithTransform<boolean, unknown>;
2435
+ error: _angular_core.InputSignal<string | null>;
2436
+ /** @internal Id of the element rendering the error message, set by the component displaying it. */
2437
+ errorElementId: _angular_core.WritableSignal<string | null>;
2438
+ constructor();
2439
+ /** @internal */
2440
+ isFocused(): boolean;
2441
+ /** @internal */
2442
+ focus(options?: {
2443
+ select?: boolean;
2444
+ }): void;
2445
+ /** @internal Focuses the input and appends a character typed while an item had focus. */
2446
+ appendCharacter(character: string): void;
2447
+ clear(): void;
2448
+ protected handleInput(): void;
2449
+ protected handleKeydown(event: KeyboardEvent): void;
2450
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<MenuSearchDirective, never>;
2451
+ 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>;
2452
+ }
2453
+
2454
+ type MenuSurfaceContext = {
2455
+ $implicit: MenuDirective;
2456
+ menu: MenuDirective;
2457
+ close: (result?: unknown) => void;
2458
+ };
2459
+ declare class MenuSurfaceDirective {
2460
+ private menu;
2461
+ templateRef: TemplateRef<MenuSurfaceContext>;
2462
+ private destroyRef;
2463
+ constructor();
2464
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<MenuSurfaceDirective, never>;
2465
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<MenuSurfaceDirective, "ng-template[etMenuSurface]", ["etMenuSurface"], {}, {}, never, never, true, never>;
2466
+ }
2467
+
2468
+ declare class MenuTriggerDirective {
2469
+ /** @internal The menu this trigger opens - for submenu trigger items, that is the submenu. */
2470
+ menu: MenuDirective | null;
2471
+ elementRef: ElementRef<HTMLElement>;
2472
+ private destroyRef;
2473
+ /** @internal The same-element menu item this trigger is combined with, if any. Set by the item. */
2474
+ hostItem: MenuItemDirective | null;
2475
+ constructor();
2476
+ /** @internal */
2477
+ setHostItem(item: MenuItemDirective): void;
2478
+ isOpen(): boolean;
2479
+ protected expanded(): boolean | null;
2480
+ protected controls(): string | null;
2481
+ protected handleClick(): void;
2482
+ protected handleKeydown(event: KeyboardEvent): void;
2483
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<MenuTriggerDirective, never>;
2484
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<MenuTriggerDirective, "[etMenuTrigger]", ["etMenuTrigger"], {}, {}, never, never, true, never>;
2485
+ }
2486
+
2487
+ type MenuCloseReason = 'item' | 'escape' | 'tab' | 'outside' | 'api';
2488
+ type MenuOpenSource = 'click' | 'hover' | 'keyboard' | 'api';
2489
+ type MenuAnchorPoint = {
2490
+ x: number;
2491
+ y: number;
2492
+ };
2493
+ declare class MenuDirective {
2494
+ private destroyRef;
2495
+ private document;
2496
+ private overlayManager;
2497
+ parent: MenuDirective | null;
2498
+ placement: _angular_core.InputSignal<"auto" | Placement>;
2499
+ fallbackPlacements: _angular_core.InputSignal<Placement[] | undefined>;
2500
+ offset: _angular_core.InputSignal<"auto" | OffsetOptions | null>;
2501
+ viewportPadding: _angular_core.InputSignal<Padding | null>;
2502
+ /** Render an arrow pointing at the trigger. Trigger-anchored root menus only — submenus and context menus never render one. */
2503
+ arrow: _angular_core.InputSignal<boolean>;
2504
+ arrowPadding: _angular_core.InputSignal<Padding | null>;
2505
+ autoFocus: _angular_core.InputSignal<boolean>;
2506
+ hoverOpen: _angular_core.InputSignal<boolean>;
2507
+ hoverOpenDelay: _angular_core.InputSignal<number>;
2508
+ hoverCloseDelay: _angular_core.InputSignal<number>;
2509
+ disabled: _angular_core.InputSignal<boolean>;
2510
+ open: _angular_core.ModelSignal<boolean>;
2511
+ root: MenuDirective;
2512
+ depth: number;
2513
+ isRoot: boolean;
2514
+ /** @internal */
2515
+ registeredTrigger: _angular_core.WritableSignal<MenuTriggerDirective | null>;
2516
+ /** @internal */
2517
+ registeredContextTrigger: _angular_core.WritableSignal<MenuContextTriggerDirective | null>;
2518
+ /** @internal */
2519
+ registeredSurface: _angular_core.WritableSignal<MenuSurfaceDirective | null>;
2520
+ /** @internal */
2521
+ registeredPanel: _angular_core.WritableSignal<MenuPanelDirective | null>;
2522
+ /** @internal */
2523
+ registeredSearch: _angular_core.WritableSignal<MenuSearchDirective | null>;
2524
+ /** @internal */
2525
+ overlayRef: _angular_core.WritableSignal<OverlayRef<OverlayTemplateHostComponent, unknown> | null>;
2526
+ /** @internal */
2527
+ openSubmenu: _angular_core.WritableSignal<MenuDirective | null>;
2528
+ /** @internal */
2529
+ activeItem: _angular_core.WritableSignal<MenuItemDirective | null>;
2530
+ /** @internal */
2531
+ anchorPoint: _angular_core.WritableSignal<MenuAnchorPoint | null>;
2532
+ private items;
2533
+ /** @internal */
2534
+ sortedItems: _angular_core.Signal<MenuItemDirective[]>;
2535
+ /** @internal */
2536
+ enabledItems: _angular_core.Signal<MenuItemDirective[]>;
2537
+ isMounted: _angular_core.Signal<boolean>;
2538
+ private openSource;
2539
+ private initialFocusTarget;
2540
+ private hoverIntent;
2541
+ private typeahead;
2542
+ private rootListenersCleanup;
2543
+ constructor();
2544
+ show(source?: MenuOpenSource, initialFocus?: 'first' | 'last'): void;
2545
+ hide(): void;
2546
+ toggle(source?: MenuOpenSource): void;
2547
+ /** Closes the whole menu tree, regardless of which level this is called on. */
2548
+ closeAll(reason?: MenuCloseReason): void;
2549
+ /** Opens the menu anchored to a viewport point instead of the trigger element. */
2550
+ openAt(point: MenuAnchorPoint, source?: MenuOpenSource): void;
2551
+ /** @internal Closes this level and returns focus to the trigger item in the parent menu. */
2552
+ closeLevel(reason: MenuCloseReason): void;
2553
+ /** @internal */
2554
+ openSubmenuExclusive(submenu: MenuDirective): void;
2555
+ /** @internal */
2556
+ registerItem(item: MenuItemDirective): void;
2557
+ /** @internal */
2558
+ unregisterItem(item: MenuItemDirective): void;
2559
+ /** @internal */
2560
+ unregisterTrigger(trigger: MenuTriggerDirective): void;
2561
+ /** @internal */
2562
+ unregisterContextTrigger(trigger: MenuContextTriggerDirective): void;
2563
+ /** @internal */
2564
+ unregisterSurface(surface: MenuSurfaceDirective): void;
2565
+ /** @internal */
2566
+ unregisterPanel(panel: MenuPanelDirective): void;
2567
+ /** @internal */
2568
+ unregisterSearch(search: MenuSearchDirective): void;
2569
+ /** @internal */
2570
+ setActiveItem(item: MenuItemDirective, options?: {
2571
+ focus?: boolean;
2572
+ }): void;
2573
+ /** @internal Central keyboard handling for items, the panel, and the search input. */
2574
+ handleKeydown(event: KeyboardEvent): void;
2575
+ /** @internal */
2576
+ notifyItemPointerEnter(item: MenuItemDirective): void;
2577
+ /** @internal Cancels pending submenu hover timers along the ancestor chain. */
2578
+ notifyPanelPointerEnter(): void;
2579
+ /** @internal */
2580
+ focusTrigger(): void;
2581
+ /** @internal True while a pointerdown target belongs to any open pane of this menu's tree. */
2582
+ isTargetInsideTree(target: EventTarget | null): boolean;
2583
+ private isFocusInsideTree;
2584
+ private handleItemHover;
2585
+ private moveActive;
2586
+ private setActiveToEdge;
2587
+ private mountOverlay;
2588
+ private applyInitialFocus;
2589
+ private attachRootInteractionListeners;
2590
+ private detachRootInteractionListeners;
2591
+ private buildStrategies;
2592
+ private buildVirtualAnchoredPosition;
2593
+ private resolvedPlacement;
2594
+ private resolvedFallbackPlacements;
2595
+ private resolvedArrow;
2596
+ private resolvedOffset;
2597
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<MenuDirective, never>;
2598
+ 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; }; "arrow": { "alias": "arrow"; "required": false; "isSignal": true; }; "arrowPadding": { "alias": "arrowPadding"; "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>;
2599
+ }
2600
+
2601
+ type MenuItemActivationSource = 'pointer' | 'keyboard-enter' | 'keyboard-space';
2602
+ type MenuItemActivationEvent = {
2603
+ source: MenuItemActivationSource;
2604
+ };
2605
+ declare class MenuItemDirective {
2606
+ private nearestMenu;
2607
+ private sameElementTrigger;
2608
+ elementRef: ElementRef<HTMLElement>;
2609
+ private destroyRef;
2610
+ disabled: _angular_core.InputSignal<boolean>;
2611
+ closeOnActivate: _angular_core.InputSignal<boolean | undefined>;
2612
+ activated: _angular_core.OutputEmitterRef<MenuItemActivationEvent>;
2613
+ /** @internal The menu whose item list this item belongs to. */
2614
+ owner: MenuDirective | null;
2615
+ /** @internal The submenu this item opens when it doubles as a submenu trigger. */
2616
+ submenu: MenuDirective | null;
2617
+ /** @internal Role source overriding the default `menuitem`, e.g. with `menuitemradio` or `menuitemcheckbox`. */
2618
+ roleOverride: _angular_core.WritableSignal<Signal<string> | null>;
2619
+ /** @internal Additional disabled state source, e.g. from a composing selection item directive. */
2620
+ disabledOverride: _angular_core.WritableSignal<Signal<boolean> | null>;
2621
+ private defaultCloseOnActivate;
2622
+ private pendingKeyboardSource;
2623
+ protected role: Signal<string>;
2624
+ protected isActive: Signal<boolean>;
2625
+ /** @internal Combines the item's own `disabled` input with a state pushed in by a composing directive. */
2626
+ isDisabled: Signal<boolean>;
2627
+ protected tabIndex: Signal<0 | -1>;
2628
+ constructor();
2629
+ /** @internal Sets whether activation closes the menu tree when the `closeOnActivate` input is not set. */
2630
+ setDefaultCloseOnActivate(value: boolean): void;
2631
+ /** @internal */
2632
+ focus(): void;
2633
+ /** @internal Returns the visible label used for typeahead matching. */
2634
+ textContent(): string;
2635
+ /** @internal Activates via a synthesized click so consumer (click) handlers fire for keyboard users too. */
2636
+ activateFromKeyboard(source: MenuItemActivationSource): void;
2637
+ protected handleClick(event: MouseEvent): void;
2638
+ protected handleKeydown(event: KeyboardEvent): void;
2639
+ protected handleMousedown(event: MouseEvent): void;
2640
+ protected handlePointerEnter(event: PointerEvent): void;
2641
+ protected handleFocus(): void;
2642
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<MenuItemDirective, never>;
2643
+ 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>;
2644
+ }
2645
+
2646
+ declare const MENU_SELECTION_GROUP_TOKEN: InjectionToken<MenuSelectionGroupDirectiveBase<unknown>>;
2647
+ declare const MENU_SELECTION_GROUP_MULTIPLE: InjectionToken<boolean>;
2648
+ declare const MENU_SELECTION_ITEM_KIND: InjectionToken<MenuSelectionItemKind>;
2649
+ type MenuSelectionItemKind = 'radio' | 'checkbox';
2650
+ type MenuSelectionGroupItem<TValue = unknown> = {
2651
+ value: Signal<TValue | undefined>;
2652
+ checked: WritableSignal<boolean>;
2653
+ disabled: Signal<boolean>;
2654
+ elementRef: ElementRef<HTMLElement>;
2655
+ };
2656
+ type MenuSelectionGroupDirectiveBase<TValue = unknown> = {
2657
+ value: WritableSignal<TValue | TValue[] | null>;
2658
+ multiple: Signal<boolean>;
2659
+ disabled: Signal<boolean>;
2660
+ items: Signal<MenuSelectionGroupItem<TValue>[]>;
2661
+ labelId: WritableSignal<string | null>;
2662
+ registerItem(item: MenuSelectionGroupItem<TValue>): void;
2663
+ unregisterItem(item: MenuSelectionGroupItem<TValue>): void;
2664
+ select(item: MenuSelectionGroupItem<TValue>): void;
2665
+ markTouched(): void;
2666
+ };
2667
+
2668
+ declare class MenuSelectionGroupDirective implements MenuSelectionGroupDirectiveBase {
2669
+ private multipleOverride;
2670
+ value: _angular_core.ModelSignal<unknown>;
2671
+ touched: _angular_core.ModelSignal<boolean>;
2672
+ multipleInput: _angular_core.InputSignal<boolean>;
2673
+ disabled: _angular_core.InputSignal<boolean>;
2674
+ invalid: _angular_core.InputSignal<boolean>;
2675
+ errors: _angular_core.InputSignal<readonly ValidationError.WithOptionalFieldTree[]>;
2676
+ required: _angular_core.InputSignal<boolean>;
2677
+ name: _angular_core.InputSignal<string>;
2678
+ multiple: _angular_core.Signal<boolean>;
2679
+ items: _angular_core.WritableSignal<MenuSelectionGroupItem[]>;
2680
+ shouldDisplayError: _angular_core.Signal<boolean>;
2681
+ /** @internal Set by a group label component so `aria-labelledby` can reference it. */
2682
+ labelId: _angular_core.WritableSignal<string | null>;
1274
2683
  constructor();
1275
- 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>;
2684
+ /** @internal */
2685
+ registerItem(item: MenuSelectionGroupItem): void;
2686
+ /** @internal */
2687
+ unregisterItem(item: MenuSelectionGroupItem): void;
2688
+ markTouched(): void;
2689
+ select(item: MenuSelectionGroupItem): void;
2690
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<MenuSelectionGroupDirective, never>;
2691
+ 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>;
1277
2692
  }
1278
2693
 
1279
- declare const ITALIC_ICON: IconDefinition;
1280
-
1281
- declare const LINK_ICON: IconDefinition;
1282
-
1283
- declare const LIST_BULLETED_ICON: IconDefinition;
1284
-
1285
- declare const LIST_NUMBERED_ICON: IconDefinition;
2694
+ declare class MenuSelectionItemDirective {
2695
+ private group;
2696
+ private kindOverride;
2697
+ private menuItem;
2698
+ elementRef: ElementRef<HTMLElement>;
2699
+ private destroyRef;
2700
+ value: _angular_core.InputSignal<unknown>;
2701
+ checked: _angular_core.ModelSignal<boolean>;
2702
+ indeterminate: _angular_core.ModelSignal<boolean>;
2703
+ touched: _angular_core.ModelSignal<boolean>;
2704
+ disabled: _angular_core.InputSignal<boolean>;
2705
+ invalid: _angular_core.InputSignal<boolean>;
2706
+ errors: _angular_core.InputSignal<readonly ValidationError.WithOptionalFieldTree[]>;
2707
+ required: _angular_core.InputSignal<boolean>;
2708
+ name: _angular_core.InputSignal<string>;
2709
+ kind: _angular_core.Signal<MenuSelectionItemKind>;
2710
+ ariaChecked: _angular_core.Signal<boolean | "mixed">;
2711
+ private isDisabled;
2712
+ constructor();
2713
+ toggle(): void;
2714
+ protected handleBlur(): void;
2715
+ private handleActivation;
2716
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<MenuSelectionItemDirective, never>;
2717
+ 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>;
2718
+ }
1286
2719
 
1287
- declare const LOCK_ICON: IconDefinition;
2720
+ declare class MenuCheckboxGroupComponent {
2721
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<MenuCheckboxGroupComponent, never>;
2722
+ 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"; }; }]>;
2723
+ }
1288
2724
 
1289
- declare const PENCIL_ICON: IconDefinition;
2725
+ declare class MenuCheckboxItemComponent {
2726
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<MenuCheckboxItemComponent, never>;
2727
+ 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"; }; }]>;
2728
+ }
1290
2729
 
1291
- declare const PLUS_ICON: IconDefinition;
2730
+ declare const MENU_ERROR_CODES: {
2731
+ readonly MISSING_MENU_SURFACE: 1300;
2732
+ readonly TRIGGER_OUTSIDE_MENU: 1301;
2733
+ readonly SURFACE_OUTSIDE_MENU: 1302;
2734
+ readonly ITEM_OUTSIDE_MENU: 1303;
2735
+ readonly PANEL_OUTSIDE_MENU: 1304;
2736
+ readonly SEARCH_OUTSIDE_MENU: 1305;
2737
+ readonly CONTEXT_TRIGGER_OUTSIDE_MENU: 1306;
2738
+ readonly CONTEXT_TRIGGER_ON_SUBMENU: 1307;
2739
+ readonly SELECTION_ITEM_MISSING_VALUE: 1320;
2740
+ readonly RADIO_ITEM_OUTSIDE_GROUP: 1321;
2741
+ };
1292
2742
 
1293
- declare const STRIKETHROUGH_ICON: IconDefinition;
2743
+ declare class MenuGroupLabelComponent {
2744
+ private group;
2745
+ private elementRef;
2746
+ private destroyRef;
2747
+ constructor();
2748
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<MenuGroupLabelComponent, never>;
2749
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<MenuGroupLabelComponent, "et-menu-group-label", never, {}, {}, never, ["*"], true, never>;
2750
+ }
1294
2751
 
1295
- declare const TIMES_ICON: IconDefinition;
2752
+ declare const MENU_ITEM_VARIANTS: {
2753
+ readonly DEFAULT: "default";
2754
+ readonly DESTRUCTIVE: "destructive";
2755
+ };
2756
+ type MenuItemVariant = (typeof MENU_ITEM_VARIANTS)[keyof typeof MENU_ITEM_VARIANTS];
2757
+ declare class MenuItemComponent {
2758
+ private provideColor;
2759
+ private errorColorTheme;
2760
+ variant: _angular_core.InputSignal<MenuItemVariant>;
2761
+ constructor();
2762
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<MenuItemComponent, never>;
2763
+ 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"; }; }, { directive: typeof _ethlete_core.ProvideColorDirective; inputs: {}; outputs: {}; }]>;
2764
+ }
1296
2765
 
1297
- declare const TRIANGLE_EXCLAMATION_ICON: IconDefinition;
2766
+ declare class MenuItemShortcutComponent {
2767
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<MenuItemShortcutComponent, never>;
2768
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<MenuItemShortcutComponent, "et-menu-item-shortcut", never, {}, {}, never, ["*"], true, never>;
2769
+ }
1298
2770
 
1299
- declare const ICON_IMPORTS: readonly [typeof IconDirective];
2771
+ declare class MenuRadioGroupComponent {
2772
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<MenuRadioGroupComponent, never>;
2773
+ 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"; }; }]>;
2774
+ }
1300
2775
 
1301
- declare class BrandLoaderComponent {
1302
- readonly PATH = "M15.905 6.21401C15.7794 6.8902 16.2818 7.51877 16.9517 7.51877H23.8598L22.9201 12.3378H15.6817C15.1048 12.3378 14.6071 12.7569 14.5001 13.3378C14.4861 13.4188 14.4768 13.4997 14.4768 13.5811C14.4768 14.2426 15.0071 14.8092 15.6817 14.8092H23.9435L22.9201 19.9997H6.79183L7.2198 17.814H7.64313C7.94085 17.814 8.20601 17.6907 8.40139 17.495C8.59212 17.2954 8.71307 17.0235 8.71307 16.7235C8.71307 16.1188 8.23858 15.6331 7.64778 15.6288H2.73534C2.14919 15.6288 1.67004 15.1426 1.67004 14.5378C1.67004 14.2383 1.791 13.9621 1.98172 13.7664C2.17711 13.5711 2.44227 13.4473 2.73534 13.4473H8.07111L8.96428 8.88115H9.39226C9.68533 8.88115 9.95049 8.75686 10.1459 8.5621C10.3366 8.3621 10.4576 8.08591 10.4576 7.78543C10.4576 7.18543 9.9784 6.69543 9.39226 6.69543H4.48447C3.89367 6.69543 3.41452 6.20448 3.41452 5.60496C3.41452 5.30448 3.53547 5.02877 3.7262 4.82829C3.92158 4.63353 4.19139 4.50924 4.48447 4.50924H10.2436C10.5366 4.50924 10.8064 4.3902 10.9972 4.1902C11.1879 3.99496 11.3089 3.72401 11.3089 3.41877C11.3089 2.81401 10.8344 2.32829 10.2436 2.32829H1.06994C0.479149 2.32829 0 1.83829 0 1.23305C0 0.933054 0.12095 0.656864 0.31168 0.461626C0.507061 0.266864 0.776873 0.142578 1.06994 0.142578H26.4369L25.4135 5.33305H16.9517C16.4446 5.33305 16.0027 5.70496 15.905 6.21401Z";
1303
- readonly OUTLINE_PATH = "M1.07 0.14 L26.44 0.14 L25.41 5.33 L16.95 5.33 C16.44 5.33 16.0 5.70 15.91 6.21 C15.78 6.89 16.28 7.52 16.95 7.52 L23.86 7.52 L22.92 12.34 L15.68 12.34 C15.10 12.34 14.61 12.76 14.50 13.34 C14.49 13.42 14.48 13.50 14.48 13.58 C14.48 14.24 15.01 14.81 15.68 14.81 L23.94 14.81 L22.92 20.0 L6.79 20.0 L7.22 17.81 L7.64 17.81 C7.94 17.81 8.21 17.69 8.40 17.50 C8.59 17.30 8.71 17.02 8.71 16.72 C8.71 16.12 8.24 15.63 7.65 15.63 L2.74 15.63 C2.15 15.63 1.67 15.14 1.67 14.54 C1.67 14.24 1.79 13.96 1.98 13.77 C2.18 13.57 2.44 13.45 2.74 13.45 L8.07 13.45 L8.96 8.88 L9.39 8.88 C9.69 8.88 9.95 8.76 10.15 8.56 C10.34 8.36 10.46 8.09 10.46 7.79 C10.46 7.19 9.98 6.70 9.39 6.70 L4.48 6.70 C3.89 6.70 3.41 6.20 3.41 5.60 C3.41 5.30 3.54 5.03 3.73 4.83 C3.92 4.63 4.19 4.51 4.48 4.51 L10.24 4.51 C10.54 4.51 10.81 4.39 10.997 4.19 C11.188 3.99 11.31 3.72 11.31 3.42 C11.31 2.81 10.83 2.33 10.24 2.33 L1.07 2.33 C0.48 2.33 0 1.84 0 1.23 C0 0.93 0.12 0.66 0.31 0.46 C0.51 0.27 0.78 0.14 1.07 0.14 Z";
1304
- readonly SHAPE_CLIP_ID: string;
1305
- shapeClip: string;
1306
- readonly FILL_CLIP_ID: string;
1307
- fillClip: string;
1308
- constructor();
1309
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<BrandLoaderComponent, never>;
1310
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<BrandLoaderComponent, "et-brand-loader", never, {}, {}, never, never, true, never>;
2776
+ declare class MenuRadioItemComponent {
2777
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<MenuRadioItemComponent, never>;
2778
+ 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"; }; }]>;
1311
2779
  }
1312
2780
 
1313
- declare class ProgressBarComponent {
1314
- value: _angular_core.InputSignalWithTransform<number, unknown>;
1315
- indeterminate: _angular_core.InputSignalWithTransform<boolean, unknown>;
1316
- clampedValue: _angular_core.Signal<number>;
1317
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<ProgressBarComponent, never>;
1318
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<ProgressBarComponent, "et-progress-bar", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "indeterminate": { "alias": "indeterminate"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
2781
+ declare class MenuSeparatorComponent {
2782
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<MenuSeparatorComponent, never>;
2783
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<MenuSeparatorComponent, "et-menu-separator", never, {}, {}, never, never, true, never>;
1319
2784
  }
1320
2785
 
1321
- declare class SpinnerComponent {
1322
- diameter: _angular_core.InputSignalWithTransform<number, unknown>;
1323
- strokeWidth: _angular_core.InputSignalWithTransform<number, unknown>;
1324
- track: _angular_core.InputSignalWithTransform<boolean, unknown>;
1325
- value: _angular_core.InputSignalWithTransform<number, unknown>;
1326
- determinate: _angular_core.InputSignalWithTransform<boolean, unknown>;
1327
- circleRadius: _angular_core.Signal<number>;
1328
- normalizedStrokeWidth: _angular_core.Signal<number>;
1329
- viewBox: _angular_core.Signal<string>;
1330
- strokeCircumference: _angular_core.Signal<number>;
1331
- circleStrokeWidth: _angular_core.Signal<number>;
1332
- clampedValue: _angular_core.Signal<number>;
1333
- determinateDashOffset: _angular_core.Signal<number>;
1334
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<SpinnerComponent, never>;
1335
- 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>;
2786
+ declare class MenuComponent {
2787
+ private ownColorProvider;
2788
+ private contextColorProvider;
2789
+ protected menu: MenuDirective | null;
2790
+ protected errorColorTheme: _ethlete_core.ColorTheme;
2791
+ private prefersReducedMotion;
2792
+ private elementRef;
2793
+ private destroyRef;
2794
+ private renderer;
2795
+ private headerElement;
2796
+ private bodyElement;
2797
+ private headerDimensions;
2798
+ private bodyDimensions;
2799
+ protected search: _angular_core.Signal<_ethlete_components.MenuSearchDirective | null>;
2800
+ protected searchLoading: _angular_core.Signal<boolean>;
2801
+ protected searchError: _angular_core.Signal<string | null>;
2802
+ protected searchErrorId: string;
2803
+ private lastBlockSize;
2804
+ private resizeAnimation;
2805
+ constructor();
2806
+ private animateToCurrentBlockSize;
2807
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<MenuComponent, never>;
2808
+ 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.AutoSurfaceDirective; inputs: {}; outputs: {}; }]>;
1336
2809
  }
1337
2810
 
2811
+ 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];
2812
+
1338
2813
  declare class NotificationActionDirective {
1339
2814
  private notification;
1340
2815
  constructor();
@@ -1564,156 +3039,225 @@ declare class NotificationComponent {
1564
3039
 
1565
3040
  declare const NOTIFICATION_IMPORTS: readonly [typeof NotificationComponent, typeof NotificationDirective, typeof NotificationActionDirective, typeof NotificationDismissDirective];
1566
3041
 
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;
3042
+ declare const getClosestOverlay: (element: ElementRef<HTMLElement>, openOverlays: OverlayRef<object, unknown>[]) => OverlayRef<object, unknown> | null;
3043
+ type ResolveClosestOverlayOptions = {
3044
+ overlayRef: OverlayRef<object, unknown> | null;
3045
+ element: ElementRef<HTMLElement>;
3046
+ openOverlays: OverlayRef<object, unknown>[];
1613
3047
  };
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
- }>;
3048
+ /** Returns the given ref or resolves the overlay the element is rendered inside of. Throws if neither exists. */
3049
+ declare const resolveClosestOverlay: (options: ResolveClosestOverlayOptions) => OverlayRef<object, unknown>;
1625
3050
 
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: {}; }]>;
3051
+ declare const OVERLAY_BODY_TOKEN: InjectionToken<OverlayBodyComponent>;
3052
+ type OverlayBodyDividerType = 'static' | 'dynamic' | false;
3053
+ declare class OverlayBodyComponent implements OnInit {
3054
+ private overlayRef;
3055
+ private elementRef;
3056
+ private scrollObserver;
3057
+ private overlayManager;
3058
+ dividers: _angular_core.InputSignal<OverlayBodyDividerType>;
3059
+ dividersEnabled: _angular_core.Signal<boolean>;
3060
+ dynamicDividersEnabled: _angular_core.Signal<boolean>;
3061
+ containerScrollState: _angular_core.Signal<_ethlete_core.ElementScrollState>;
3062
+ canScroll: _angular_core.Signal<boolean>;
3063
+ isAtStart: _angular_core.Signal<boolean>;
3064
+ isAtEnd: _angular_core.Signal<boolean>;
3065
+ enableDividerAnimations: _angular_core.WritableSignal<boolean>;
3066
+ constructor();
3067
+ ngOnInit(): void;
3068
+ scrollToTop(behavior?: ScrollBehavior): void;
3069
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<OverlayBodyComponent, never>;
3070
+ 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: {}; }]>;
1633
3071
  }
1634
3072
 
1635
- declare class OverlayTriggerDirective {
1636
- private overlay;
1637
- private destroyRef;
1638
- elementRef: ElementRef<HTMLElement>;
3073
+ declare class OverlayCloseDirective implements OnInit {
3074
+ private overlayRef;
3075
+ private elementRef;
3076
+ private overlayManager;
3077
+ ariaLabel: _angular_core.InputSignal<string | undefined>;
3078
+ type: _angular_core.InputSignal<"button" | "submit" | "reset">;
3079
+ closeResult: _angular_core.InputSignal<unknown>;
3080
+ closeResultAlt: _angular_core.InputSignal<unknown>;
1639
3081
  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>;
3082
+ ngOnInit(): void;
3083
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<OverlayCloseDirective, never>;
3084
+ 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>;
1645
3085
  }
1646
3086
 
1647
- declare class OverlayDirective {
3087
+ /**
3088
+ * Merges overlay configs from least to most specific (e.g. definition → opener → per-open).
3089
+ *
3090
+ * - `bindings` and `providers` are concatenated in layer order — a later binding or provider
3091
+ * for the same input/token wins, matching Angular semantics.
3092
+ * - `hostClass`, `backdropClass` and `panelClass` are normalized to arrays, concatenated and deduped.
3093
+ * - Every other key is taken from the last layer that sets it to a value other than `undefined`
3094
+ * (an explicit `null`, e.g. on the aria fields, does override earlier layers).
3095
+ */
3096
+ declare const mergeOverlayConfigs: (...configs: (OverlayConfig | undefined)[]) => OverlayConfig;
3097
+
3098
+ declare class OverlayContainerComponent {
3099
+ private ownColorProvider;
3100
+ private ownSurfaceProvider;
3101
+ private parentColorProvider;
3102
+ private parentSurfaceProvider;
1648
3103
  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>;
1671
- 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;
3104
+ private elementRef;
3105
+ protected overlayRef: {
3106
+ readonly id: string;
3107
+ readonly elements: _ethlete_core.OverlayRuntimeElements | null;
3108
+ config: _ethlete_components.OverlayConfig;
3109
+ headerTemplate: _angular_core.Signal<_angular_core.TemplateRef<unknown> | null>;
3110
+ setHeaderTemplate: (template: _angular_core.TemplateRef<unknown> | null) => void;
3111
+ componentInstance: () => object | null;
3112
+ close: (result?: unknown) => void;
3113
+ closeVia: (source: _ethlete_core.OverlayRuntimeCloseSource, result?: unknown) => void;
3114
+ updatePositionStrategy: (strategy: _ethlete_core.OverlayRuntimePositionStrategy) => void;
3115
+ attachComponentInstanceOverride: (getter: () => object | null) => void;
3116
+ afterOpened: () => rxjs.Observable<void>;
3117
+ beforeClosed: () => rxjs.Observable<unknown>;
3118
+ afterClosed: () => rxjs.Observable<unknown>;
3119
+ attachRuntime: (runtimeRef: _ethlete_core.OverlayRuntimeRef<object, unknown>) => void;
3120
+ };
3121
+ private surfaceThemes;
3122
+ private surfaceContextTracker;
3123
+ private renderer;
3124
+ rootBoundary: {
3125
+ value: _angular_core.Signal<HTMLElement>;
3126
+ override: _angular_core.WritableSignal<HTMLElement | null>;
3127
+ };
3128
+ component: _angular_core.InputSignal<Type<object>>;
3129
+ componentBindings: _angular_core.InputSignal<Binding[] | undefined>;
3130
+ renderArrow: _angular_core.InputSignal<boolean>;
3131
+ private contentOutlet;
3132
+ animatedLifecycle: _angular_core.WritableSignal<AnimatedLifecycleDirective>;
3133
+ contentComponentRef: _angular_core.WritableSignal<ComponentRef<object> | null>;
1682
3134
  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>;
1695
- }
3135
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<OverlayContainerComponent, never>;
3136
+ 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: {}; }]>;
3137
+ }
3138
+
3139
+ /** The name of the model the overlay component must expose to participate in query-param sync. */
3140
+ declare const OVERLAY_QUERY_PARAM_INPUT_NAME = "overlayQueryParam";
3141
+ /** The shape a component must have to be usable with {@link defineQueryParamOverlay}. */
3142
+ type QueryParamOverlayHost = {
3143
+ overlayQueryParam: ModelSignal<any>;
3144
+ };
3145
+ /** Extracts the query param value type from the component's `overlayQueryParam` model. */
3146
+ type QueryParamOverlayValue<TComponent> = TComponent extends {
3147
+ overlayQueryParam: ModelSignal<infer TValue>;
3148
+ } ? Extract<TValue, string> : string;
3149
+ type OverlayDefinitionConfig<TComponent extends object> = OverlayConfig & {
3150
+ /** The overlay component. */
3151
+ component: Type<TComponent>;
3152
+ };
3153
+ type QueryParamOverlayDefinitionConfig<TComponent extends object> = OverlayDefinitionConfig<TComponent> & {
3154
+ /** The query param key that drives the overlay's open/close lifecycle. */
3155
+ queryParamKey: string;
3156
+ };
3157
+ type OverlayDefinition<TComponent extends object = object, TResult = unknown> = {
3158
+ kind: 'overlay';
3159
+ /** The overlay component. */
3160
+ component: Type<TComponent>;
3161
+ /** The base overlay config. Opener- and per-open configs are merged on top of it additively. */
3162
+ config: OverlayConfig;
3163
+ /**
3164
+ * Returns the typed overlay ref. Must be called in the injection context of a component
3165
+ * opened via this definition.
3166
+ * @throws RuntimeError if called outside of an open overlay.
3167
+ */
3168
+ injectRef: () => OverlayRef<TComponent, TResult>;
3169
+ };
3170
+ type QueryParamOverlayDefinition<TComponent extends object = object, TResult = unknown> = Omit<OverlayDefinition<TComponent, TResult>, 'kind'> & {
3171
+ kind: 'queryParamOverlay';
3172
+ /** The query param key that drives the overlay's open/close lifecycle. */
3173
+ queryParamKey: string;
3174
+ };
3175
+ /**
3176
+ * Defines an overlay at module scope: the component plus its base config (strategies, classes,
3177
+ * bindings, providers, …), without any dependency injection. Consumers turn the definition into
3178
+ * something that can open the overlay via `createOverlayOpener`, and the overlay component
3179
+ * itself accesses its typed ref via `definition.injectRef()`.
3180
+ *
3181
+ * @example
3182
+ * export const productOverlay = defineOverlay<ProductOverlayComponent, ProductResult>({
3183
+ * component: ProductOverlayComponent,
3184
+ * strategies: dialogOverlayStrategy({ maxWidth: '480px' }),
3185
+ * });
3186
+ */
3187
+ declare const defineOverlay: <TComponent extends object, TResult = unknown>(config: OverlayDefinitionConfig<TComponent>) => OverlayDefinition<TComponent, TResult>;
3188
+ /**
3189
+ * Defines an overlay whose lifecycle is driven by a URL query param: it opens while the param is
3190
+ * present and closes (clearing the param) when dismissed. The component must expose an
3191
+ * `overlayQueryParam` {@link https://angular.dev/api/core/model | model} — it receives the param
3192
+ * value and is kept in two-way sync with the URL.
3193
+ *
3194
+ * Because opens are triggered by URL state, there is no per-open config; `bindings` and
3195
+ * `providers` set on the definition (or on the opener) are applied on every open.
3196
+ *
3197
+ * @example
3198
+ * export const productOverlay = defineQueryParamOverlay({
3199
+ * component: ProductOverlayComponent, // exposes `overlayQueryParam = model<string>()`
3200
+ * queryParamKey: 'product',
3201
+ * strategies: dialogOverlayStrategy({ maxWidth: '480px' }),
3202
+ * });
3203
+ */
3204
+ declare const defineQueryParamOverlay: <TComponent extends QueryParamOverlayHost, TResult = unknown>(config: QueryParamOverlayDefinitionConfig<TComponent>) => QueryParamOverlayDefinition<TComponent, TResult>;
1696
3205
 
1697
- type OverlaySurfaceContext = {
1698
- $implicit: OverlayDirective;
1699
- overlay: OverlayDirective;
1700
- close: (result?: unknown) => void;
3206
+ declare const OVERLAY_ERROR_CODES: {
3207
+ readonly MISSING_OVERLAY_SURFACE: 1200;
3208
+ readonly TRIGGER_OUTSIDE_OVERLAY: 1201;
3209
+ readonly ANCHOR_OUTSIDE_OVERLAY: 1202;
3210
+ readonly SURFACE_OUTSIDE_OVERLAY: 1203;
3211
+ readonly MULTIPLE_LAYOUT_CLASSES: 1204;
3212
+ readonly NO_CLOSEST_OVERLAY: 1205;
3213
+ readonly NESTED_OVERLAY_MAIN: 1206;
3214
+ readonly REF_OUTSIDE_OVERLAY: 1207;
1701
3215
  };
1702
- declare class OverlaySurfaceDirective {
1703
- private overlay;
1704
- templateRef: TemplateRef<OverlaySurfaceContext>;
1705
- private destroyRef;
3216
+
3217
+ declare const OVERLAY_FOOTER_TOKEN: InjectionToken<OverlayFooterDirective>;
3218
+ declare class OverlayFooterDirective implements OnInit {
3219
+ private overlayRef;
3220
+ private elementRef;
3221
+ private overlayManager;
3222
+ ngOnInit(): void;
3223
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<OverlayFooterDirective, never>;
3224
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<OverlayFooterDirective, "[etOverlayFooter], et-overlay-footer", never, {}, {}, never, never, true, never>;
3225
+ }
3226
+
3227
+ declare const OVERLAY_HEADER_TOKEN: InjectionToken<OverlayHeaderDirective>;
3228
+ declare class OverlayHeaderDirective implements OnInit {
3229
+ private overlayRef;
3230
+ private elementRef;
3231
+ private overlayManager;
3232
+ ngOnInit(): void;
3233
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<OverlayHeaderDirective, never>;
3234
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<OverlayHeaderDirective, "[etOverlayHeader], et-overlay-header", never, {}, {}, never, never, true, never>;
3235
+ }
3236
+
3237
+ declare const OVERLAY_HEADER_TEMPLATE_TOKEN: InjectionToken<OverlayHeaderTemplateDirective>;
3238
+ declare class OverlayHeaderTemplateDirective implements OnInit, OnDestroy {
3239
+ private overlayRef;
3240
+ private elementRef;
3241
+ template: TemplateRef<unknown>;
3242
+ private overlayManager;
1706
3243
  constructor();
1707
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<OverlaySurfaceDirective, never>;
1708
- static ɵdir: _angular_core.ɵɵDirectiveDeclaration<OverlaySurfaceDirective, "ng-template[etOverlaySurface]", ["etOverlaySurface"], {}, {}, never, never, true, never>;
3244
+ ngOnInit(): void;
3245
+ ngOnDestroy(): void;
3246
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<OverlayHeaderTemplateDirective, never>;
3247
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<OverlayHeaderTemplateDirective, "ng-template[etOverlayHeaderTemplate]", never, {}, {}, never, never, true, never>;
1709
3248
  }
1710
3249
 
1711
- declare const OVERLAY_ERROR_CODES: {
1712
- readonly MISSING_OVERLAY_SURFACE: 1200;
1713
- readonly TRIGGER_OUTSIDE_OVERLAY: 1201;
1714
- readonly ANCHOR_OUTSIDE_OVERLAY: 1202;
1715
- readonly SURFACE_OUTSIDE_OVERLAY: 1203;
1716
- };
3250
+ declare const OVERLAY_MAIN_TOKEN: InjectionToken<OverlayMainDirective>;
3251
+ declare class OverlayMainDirective implements OnInit {
3252
+ private parent;
3253
+ private elementRef;
3254
+ private overlayRef;
3255
+ private overlayManager;
3256
+ enabled: _angular_core.InputSignalWithTransform<boolean, unknown>;
3257
+ ngOnInit(): void;
3258
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<OverlayMainDirective, never>;
3259
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<OverlayMainDirective, "[etOverlayMain], et-overlay-main", never, { "enabled": { "alias": "etOverlayMain"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
3260
+ }
1717
3261
 
1718
3262
  type OverlayManager = {
1719
3263
  open: <TComponent extends object, TResult = unknown>(component: Type<TComponent>, config?: OverlayConfig) => OverlayRef<TComponent, TResult>;
@@ -1728,7 +3272,682 @@ declare const injectOverlayManager: {
1728
3272
  (options: _angular_core.InjectOptions): OverlayManager | null;
1729
3273
  };
1730
3274
 
3275
+ /** Per-open config overrides. The component and `strategies` are fixed by the definition. */
3276
+ type OverlayOpenConfig = Omit<OverlayConfig, 'strategies'>;
3277
+ type OverlayLifecycleConfig<TResult = unknown> = {
3278
+ /** A callback function to be executed once the overlay has been closed */
3279
+ afterClosed?: (result: TResult | null) => void;
3280
+ /** A callback function to be executed before the overlay is closed */
3281
+ beforeClosed?: (result: TResult | null) => void;
3282
+ /** A callback function to be executed once the overlay has been opened */
3283
+ afterOpened?: () => void;
3284
+ };
3285
+ /**
3286
+ * Lifecycle callbacks plus overlay config overrides applied on every open. The config is merged
3287
+ * additively on top of the definition's config (`bindings`, `providers` and class lists are
3288
+ * concatenated; scalars override).
3289
+ *
3290
+ * Note for query-param overlays: an `origin` set here anchors every URL-driven open, including
3291
+ * deep links where the originating element may not exist — omitting it is usually right (the
3292
+ * overlay then falls back to the currently focused element).
3293
+ */
3294
+ type OverlayOpenerConfig<TResult = unknown> = OverlayLifecycleConfig<TResult> & OverlayOpenConfig;
3295
+ type OverlayOpener<TComponent extends object = object, TResult = unknown> = {
3296
+ /** Open the overlay. Per-open config is merged additively on top of the definition and opener configs. */
3297
+ open: (config?: OverlayOpenConfig) => OverlayRef<TComponent, TResult>;
3298
+ };
3299
+ type QueryParamOverlayOpener<TQueryParam extends string = string> = {
3300
+ /** Open the overlay by writing the given value to the query param. */
3301
+ open: (value: TQueryParam) => void;
3302
+ /** Close the overlay by removing the query param. */
3303
+ close: () => void;
3304
+ };
3305
+ type CreateOverlayOpenerFn = {
3306
+ <TComponent extends object, TResult>(definition: QueryParamOverlayDefinition<TComponent, TResult>, config?: OverlayOpenerConfig<TResult>): QueryParamOverlayOpener<QueryParamOverlayValue<TComponent>>;
3307
+ <TComponent extends object, TResult>(definition: OverlayDefinition<TComponent, TResult>, config?: OverlayOpenerConfig<TResult>): OverlayOpener<TComponent, TResult>;
3308
+ };
3309
+ /**
3310
+ * Creates an opener for the given overlay definition. Must be called in an injection context.
3311
+ *
3312
+ * - For a `defineOverlay` definition the opener exposes `open(config?)`, returning the typed
3313
+ * `OverlayRef`.
3314
+ * - For a `defineQueryParamOverlay` definition the opener drives the overlay through the URL:
3315
+ * `open(value)` writes the query param and `close()` clears it. It also reacts to external
3316
+ * URL changes (deep links, browser navigation) for as long as the injection context lives.
3317
+ *
3318
+ * @example
3319
+ * readonly product = createOverlayOpener(productOverlay, {
3320
+ * afterClosed: (result) => console.log(result),
3321
+ * });
3322
+ */
3323
+ declare const createOverlayOpener: CreateOverlayOpenerFn;
3324
+
3325
+ /**
3326
+ * Blocks body scrolling while a modal overlay is open.
3327
+ * Register once via `provideOverlay()` (or call `injectOverlayScrollBlocker()` in an environment initializer).
3328
+ */
3329
+ declare const provideOverlayScrollBlocker: () => _angular_core.Provider[];
3330
+ declare const injectOverlayScrollBlocker: {
3331
+ (): void;
3332
+ (options: _angular_core.InjectOptions & {
3333
+ optional?: false;
3334
+ }): void;
3335
+ (options: _angular_core.InjectOptions): void | null;
3336
+ };
3337
+
3338
+ declare class OverlayTitleDirective implements OnInit {
3339
+ private overlayRef;
3340
+ private elementRef;
3341
+ private overlayManager;
3342
+ private renderer;
3343
+ id: _angular_core.InputSignal<string>;
3344
+ ngOnInit(): void;
3345
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<OverlayTitleDirective, never>;
3346
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<OverlayTitleDirective, "[et-overlay-title], [etOverlayTitle]", ["etOverlayTitle"], { "id": { "alias": "id"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
3347
+ }
3348
+
1731
3349
  declare const OVERLAY_IMPORTS: readonly [typeof OverlayDirective, typeof OverlayTriggerDirective, typeof OverlayAnchorDirective, typeof OverlaySurfaceDirective];
3350
+ declare const OVERLAY_CONTENT_IMPORTS: readonly [typeof OverlayCloseDirective, typeof OverlayTitleDirective, typeof OverlayHeaderDirective, typeof OverlayBodyComponent, typeof OverlayFooterDirective, typeof OverlayMainDirective];
3351
+ declare const provideOverlay: () => _angular_core.EnvironmentProviders[];
3352
+
3353
+ /**
3354
+ * Opens a query-param overlay declaratively by navigating its query param — the counterpart to
3355
+ * `createOverlayOpener` for links. Takes the overlay definition itself, so the query param key
3356
+ * is never duplicated as a string.
3357
+ *
3358
+ * @example
3359
+ * <a [etQueryParamOverlayLink]="productOverlay" etQueryParamOverlayLinkValue="42">Open product 42</a>
3360
+ */
3361
+ declare class QueryParamOverlayLinkDirective {
3362
+ private routerLink;
3363
+ /** The query-param overlay definition this link opens. */
3364
+ definition: _angular_core.InputSignal<Pick<QueryParamOverlayDefinition, "queryParamKey">>;
3365
+ /** The query param value the overlay opens with. */
3366
+ value: _angular_core.InputSignal<string | number>;
3367
+ constructor();
3368
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<QueryParamOverlayLinkDirective, never>;
3369
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<QueryParamOverlayLinkDirective, "[etQueryParamOverlayLink]", never, { "definition": { "alias": "etQueryParamOverlayLink"; "required": true; "isSignal": true; }; "value": { "alias": "etQueryParamOverlayLinkValue"; "required": true; "isSignal": true; }; }, {}, never, never, true, [{ directive: typeof i1.RouterLink; inputs: {}; outputs: {}; }]>;
3370
+ }
3371
+
3372
+ declare const OVERLAY_BACK_OR_CLOSE_TOKEN: InjectionToken<OverlayBackOrCloseDirective>;
3373
+ declare class OverlayBackOrCloseDirective {
3374
+ private overlayRef;
3375
+ private elementRef;
3376
+ private router;
3377
+ disabled: _angular_core.InputSignalWithTransform<boolean, unknown>;
3378
+ constructor();
3379
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<OverlayBackOrCloseDirective, never>;
3380
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<OverlayBackOrCloseDirective, "[etOverlayBackOrClose]", never, { "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
3381
+ }
3382
+
3383
+ declare class OverlayRouteHeaderTemplateOutletComponent {
3384
+ protected overlay: {
3385
+ readonly id: string;
3386
+ readonly elements: _ethlete_core.OverlayRuntimeElements | null;
3387
+ config: _ethlete_components.OverlayConfig;
3388
+ headerTemplate: _angular_core.Signal<_angular_core.TemplateRef<unknown> | null>;
3389
+ setHeaderTemplate: (template: _angular_core.TemplateRef<unknown> | null) => void;
3390
+ componentInstance: () => object | null;
3391
+ close: (result?: unknown) => void;
3392
+ closeVia: (source: _ethlete_core.OverlayRuntimeCloseSource, result?: unknown) => void;
3393
+ updatePositionStrategy: (strategy: _ethlete_core.OverlayRuntimePositionStrategy) => void;
3394
+ attachComponentInstanceOverride: (getter: () => object | null) => void;
3395
+ afterOpened: () => rxjs.Observable<void>;
3396
+ beforeClosed: () => rxjs.Observable<unknown>;
3397
+ afterClosed: () => rxjs.Observable<unknown>;
3398
+ attachRuntime: (runtimeRef: _ethlete_core.OverlayRuntimeRef<object, unknown>) => void;
3399
+ };
3400
+ protected router: _ethlete_components.OverlayRouter;
3401
+ animatedLifecycle: _angular_core.Signal<AnimatedLifecycleDirective>;
3402
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<OverlayRouteHeaderTemplateOutletComponent, never>;
3403
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<OverlayRouteHeaderTemplateOutletComponent, "et-overlay-route-header-template-outlet", never, {}, {}, never, never, true, never>;
3404
+ }
3405
+
3406
+ declare const OVERLAY_ROUTER_CONFIG_TOKEN: InjectionToken<OverlayRouterConfig>;
3407
+ type OverlayRoute = {
3408
+ /** The component to render. */
3409
+ component: Type<unknown>;
3410
+ /**
3411
+ * The route of the page.
3412
+ *
3413
+ * @example
3414
+ * "/" // The root route
3415
+ * "/two" // The route "two"
3416
+ */
3417
+ path: `/${string}`;
3418
+ /** The inputs to pass to the component. Signal values are unwrapped. */
3419
+ inputs?: Record<string, unknown>;
3420
+ /**
3421
+ * Overrides the animation direction used when navigating to or away from this route.
3422
+ * Useful for routes that conceptually sit "before" the others, like a sidebar page that
3423
+ * should slide in from the left. An explicit direction passed to `navigate()` always wins.
3424
+ */
3425
+ navigationDirection?: {
3426
+ /** Direction to play when this route becomes active. */
3427
+ to?: OverlayRouterNavigationDirection;
3428
+ /** Direction to play when navigating away from this route. */
3429
+ from?: OverlayRouterNavigationDirection;
3430
+ };
3431
+ };
3432
+ type OverlayRouterConfig = {
3433
+ /** The routes to be able to navigate to. */
3434
+ routes: OverlayRoute[];
3435
+ /**
3436
+ * The route on which to start.
3437
+ * @default routes[0].path // The first route, or "/" if none is defined
3438
+ */
3439
+ initialRoute?: string;
3440
+ /**
3441
+ * Mirror the active overlay route into the browser URL as a query param, enabling deep-linking and
3442
+ * browser back/forward integration. Requires the Angular `Router` to be available.
3443
+ *
3444
+ * @default false
3445
+ */
3446
+ syncUrl?: boolean;
3447
+ };
3448
+ type OverlayRouterNavigationDirection = 'forward' | 'backward';
3449
+ type OverlayRouterNavigateConfig = {
3450
+ navigationDirection?: OverlayRouterNavigationDirection;
3451
+ };
3452
+ type OverlayRouterTransitionType = 'slide' | 'fade' | 'overlay' | 'vertical' | 'none';
3453
+ type OverlayRouterResolvedPath = {
3454
+ route: string;
3455
+ type: 'back' | 'replace-current' | 'absolute' | 'forward';
3456
+ };
3457
+ type OverlayRouter = {
3458
+ /** The current route, but delayed by one frame to ensure that the needed animation classes are applied. */
3459
+ currentRoute: Signal<string>;
3460
+ /** Routes registered at runtime in addition to the configured ones. */
3461
+ extraRoutes: WritableSignal<OverlayRoute[]>;
3462
+ /** The transition to play when navigating between routes. */
3463
+ transitionType: WritableSignal<OverlayRouterTransitionType>;
3464
+ /** The direction of the current navigation. */
3465
+ navigationDirection: WritableSignal<OverlayRouterNavigationDirection>;
3466
+ /** Whether an in-memory history entry exists to go back to. */
3467
+ canGoBack: Signal<boolean>;
3468
+ /** All navigable routes (configured + extra) with signal inputs unwrapped. */
3469
+ routes: Signal<OverlayRoute[]>;
3470
+ /** The route currently being displayed. */
3471
+ currentPage: Signal<OverlayRoute | null>;
3472
+ navigate: (route: string | (string | number)[], config?: OverlayRouterNavigateConfig) => void;
3473
+ back: () => boolean;
3474
+ resolvePath: (route: string | (string | number)[]) => OverlayRouterResolvedPath;
3475
+ addRoute: (route: OverlayRoute) => void;
3476
+ removeRoute: (path: string) => void;
3477
+ /** @internal Returns `true` when the route actually changed. */
3478
+ updateCurrentRoute: (route: string) => boolean;
3479
+ /** @internal */
3480
+ navigateToInitialRoute: () => void;
3481
+ };
3482
+ declare const provideOverlayRouterService: () => Provider[];
3483
+ declare const injectOverlayRouter: {
3484
+ (): OverlayRouter;
3485
+ (options: _angular_core.InjectOptions & {
3486
+ optional?: false;
3487
+ }): OverlayRouter;
3488
+ (options: _angular_core.InjectOptions): OverlayRouter | null;
3489
+ };
3490
+ declare const OVERLAY_ROUTER_TOKEN: InjectionToken<OverlayRouter>;
3491
+ declare const provideOverlayRouterConfig: (config: OverlayRouterConfig) => Provider[];
3492
+ /**
3493
+ * Provides both the overlay router config and the overlay router itself, so a consumer only needs
3494
+ * a single entry in the overlay's `providers` instead of wiring the router separately.
3495
+ *
3496
+ * @example
3497
+ * overlayManager.open(MyOverlay, {
3498
+ * strategies: dialogOverlayStrategy(),
3499
+ * providers: [provideOverlayRouter({ routes: [...] })],
3500
+ * });
3501
+ */
3502
+ declare const provideOverlayRouter: (config: OverlayRouterConfig) => Provider[];
3503
+
3504
+ declare const OVERLAY_ROUTER_LINK_TOKEN: InjectionToken<OverlayRouterLinkDirective>;
3505
+ declare class OverlayRouterLinkDirective {
3506
+ private elementRef;
3507
+ private router;
3508
+ path: _angular_core.InputSignal<string | (string | number)[]>;
3509
+ disabled: _angular_core.InputSignalWithTransform<boolean, unknown>;
3510
+ navigationDirection: _angular_core.InputSignal<OverlayRouterNavigationDirection | null>;
3511
+ isActive: _angular_core.Signal<boolean>;
3512
+ constructor();
3513
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<OverlayRouterLinkDirective, never>;
3514
+ 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>;
3515
+ }
3516
+
3517
+ declare const OVERLAY_ROUTER_OUTLET_DISABLED_TEMPLATE_TOKEN: InjectionToken<OverlayRouterOutletDisabledTemplateDirective>;
3518
+ declare class OverlayRouterOutletDisabledTemplateDirective {
3519
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<OverlayRouterOutletDisabledTemplateDirective, never>;
3520
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<OverlayRouterOutletDisabledTemplateDirective, "ng-template[etOverlayRouterOutletDisabledTemplate]", never, {}, {}, never, never, true, never>;
3521
+ }
3522
+
3523
+ declare const OVERLAY_ROUTER_OUTLET_TOKEN: InjectionToken<OverlayRouterOutletComponent>;
3524
+ declare class OverlayRouterOutletComponent {
3525
+ private injector;
3526
+ private overlayRef;
3527
+ private elementRef;
3528
+ private document;
3529
+ protected router: _ethlete_components.OverlayRouter;
3530
+ private renderer;
3531
+ disabled: _angular_core.InputSignalWithTransform<boolean, unknown>;
3532
+ sharedRouteTemplate: _angular_core.Signal<TemplateRef<any> | undefined>;
3533
+ outletDisabledTemplate: _angular_core.Signal<TemplateRef<any> | undefined>;
3534
+ pageWrappers: _angular_core.Signal<readonly ElementRef<HTMLElement>[]>;
3535
+ readonly hasSidebar: boolean;
3536
+ wasDisabled: _angular_core.WritableSignal<boolean>;
3537
+ keepDisabledTransition: _angular_core.Signal<boolean>;
3538
+ activePageElement: _angular_core.Signal<HTMLElement | null>;
3539
+ protected transitionType: _angular_core.Signal<_ethlete_components.OverlayRouterTransitionType>;
3540
+ constructor();
3541
+ scrollActivePageTo(options?: ScrollToOptions | undefined): void;
3542
+ disabledPageAnimationStateChange(state: AnimatedLifecycleState): void;
3543
+ /**
3544
+ * Moves focus into the freshly navigated page, mirroring the overlay's own open-time focus behaviour
3545
+ * (first-tabbable by default, so buttons/inputs win over headings). Falls back to the page wrapper when
3546
+ * the page has nothing tabbable. Respects the overlay's `autoFocus` config, including `false`.
3547
+ */
3548
+ private focusActivePage;
3549
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<OverlayRouterOutletComponent, never>;
3550
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<OverlayRouterOutletComponent, "et-overlay-router-outlet", never, { "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; }, {}, ["sharedRouteTemplate", "outletDisabledTemplate"], ["*"], true, never>;
3551
+ }
3552
+
3553
+ declare class OverlaySharedRouteTemplateOutletComponent {
3554
+ protected routerOutlet: _ethlete_components.OverlayRouterOutletComponent;
3555
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<OverlaySharedRouteTemplateOutletComponent, never>;
3556
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<OverlaySharedRouteTemplateOutletComponent, "et-overlay-shared-route-template-outlet", never, {}, {}, never, never, true, never>;
3557
+ }
3558
+
3559
+ declare const OVERLAY_SHARED_ROUTE_TEMPLATE_TOKEN: InjectionToken<OverlaySharedRouteTemplateDirective>;
3560
+ declare class OverlaySharedRouteTemplateDirective {
3561
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<OverlaySharedRouteTemplateDirective, never>;
3562
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<OverlaySharedRouteTemplateDirective, "ng-template[etOverlaySharedRouteTemplate]", never, {}, {}, never, never, true, never>;
3563
+ }
3564
+
3565
+ declare class OverlaySidebarPageComponent {
3566
+ headerTemplate: _angular_core.InputSignal<OverlayHeaderTemplateDirective | null>;
3567
+ bodyTemplate: _angular_core.InputSignal<TemplateRef<unknown> | null>;
3568
+ pageDividers: _angular_core.InputSignal<OverlayBodyDividerType>;
3569
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<OverlaySidebarPageComponent, never>;
3570
+ 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: {}; }]>;
3571
+ }
3572
+
3573
+ declare class OverlaySidebarComponent {
3574
+ protected sidebar: _ethlete_components.SidebarOverlay;
3575
+ pageDividers: _angular_core.InputSignal<OverlayBodyDividerType>;
3576
+ sidebarContent: _angular_core.Signal<TemplateRef<unknown>>;
3577
+ sidebarHeaderContent: _angular_core.Signal<_ethlete_components.OverlayHeaderTemplateDirective | undefined>;
3578
+ constructor();
3579
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<OverlaySidebarComponent, never>;
3580
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<OverlaySidebarComponent, "et-overlay-sidebar", never, { "pageDividers": { "alias": "pageDividers"; "required": false; "isSignal": true; }; }, {}, ["sidebarHeaderContent"], ["*"], true, never>;
3581
+ }
3582
+
3583
+ declare const SIDEBAR_OVERLAY_CONFIG: InjectionToken<SidebarOverlayConfig>;
3584
+ type SidebarOverlayConfig = {
3585
+ /**
3586
+ * On mobile devices, the sidebar is shown as a separate page that can be navigated to.
3587
+ * This is the route to that sidebar page.
3588
+ *
3589
+ * @default "/sidebar"
3590
+ */
3591
+ sidebarPageRoute?: `/${string}`;
3592
+ /**
3593
+ * The width from which the sidebar renders inline (rather than collapsing into a page). Compared
3594
+ * against the overlay's own pane width — not the viewport — so a narrow dialog collapses its
3595
+ * sidebar even on a wide screen. Can be a breakpoint name or a pixel number. Works best with an
3596
+ * overlay that has a defined width.
3597
+ *
3598
+ * @default "md"
3599
+ */
3600
+ renderSidebarFrom?: Breakpoint | number;
3601
+ };
3602
+ type SidebarOverlay = {
3603
+ /** Whether the sidebar renders inline (`true`) or is collapsed into a navigable page (`false`). */
3604
+ renderSidebar: Signal<boolean>;
3605
+ sidebarContentTemplate: WritableSignal<TemplateRef<unknown> | null>;
3606
+ sidebarHeaderTemplate: WritableSignal<OverlayHeaderTemplateDirective | null>;
3607
+ sidebarPageDividers: WritableSignal<OverlayBodyDividerType>;
3608
+ };
3609
+ declare const provideSidebarOverlayService: () => Provider[];
3610
+ declare const injectSidebarOverlay: {
3611
+ (): SidebarOverlay;
3612
+ (options: _angular_core.InjectOptions & {
3613
+ optional?: false;
3614
+ }): SidebarOverlay;
3615
+ (options: _angular_core.InjectOptions): SidebarOverlay | null;
3616
+ };
3617
+ declare const SIDEBAR_OVERLAY_TOKEN: InjectionToken<SidebarOverlay>;
3618
+ declare const provideSidebarOverlayConfig: (config: SidebarOverlayConfig) => Provider[];
3619
+ /**
3620
+ * Provides both the sidebar config and the sidebar overlay service in one call, mirroring
3621
+ * {@link provideOverlayRouter}. Requires an overlay router to also be provided.
3622
+ */
3623
+ declare const provideSidebarOverlay: (config?: SidebarOverlayConfig) => Provider[];
3624
+
3625
+ type AnchoredOverlayStrategyOptions = {
3626
+ containerClass?: string | string[];
3627
+ hostClass?: string | string[];
3628
+ maxWidth?: number | string;
3629
+ maxHeight?: number | string;
3630
+ minWidth?: number | string;
3631
+ minHeight?: number | string;
3632
+ placement?: Placement;
3633
+ fallbackPlacements?: Placement[];
3634
+ offset?: OffsetOptions | null;
3635
+ arrowPadding?: Padding | null;
3636
+ viewportPadding?: Padding | null;
3637
+ shift?: boolean | OverlayRuntimeShiftOptions;
3638
+ autoResize?: boolean;
3639
+ autoHide?: boolean;
3640
+ autoCloseIfReferenceHidden?: boolean;
3641
+ mirrorWidth?: boolean;
3642
+ /** Render a floating-ui-positioned arrow on the container pointing at the origin. */
3643
+ arrow?: boolean;
3644
+ };
3645
+ type CenteredOverlayStrategyOptions = {
3646
+ containerClass?: string | string[];
3647
+ hostClass?: string | string[];
3648
+ maxWidth?: number | string;
3649
+ maxHeight?: number | string;
3650
+ minWidth?: number | string;
3651
+ minHeight?: number | string;
3652
+ };
3653
+ type AnchoredPositionOptions = Pick<AnchoredOverlayStrategyOptions, 'placement' | 'fallbackPlacements' | 'offset' | 'arrowPadding' | 'viewportPadding' | 'shift' | 'autoResize' | 'autoHide' | 'autoCloseIfReferenceHidden' | 'mirrorWidth'>;
3654
+ declare const buildAnchoredRuntimePositionStrategy: (options?: AnchoredPositionOptions) => (origin?: HTMLElement) => OverlayRuntimePositionStrategy;
3655
+ declare const anchoredOverlayStrategy: (options?: AnchoredOverlayStrategyOptions) => (() => OverlayStrategyBreakpoint[]);
3656
+ declare const centeredOverlayStrategy: (options?: CenteredOverlayStrategyOptions) => (() => OverlayStrategyBreakpoint[]);
3657
+
3658
+ type AnchoredDialogOverlayStrategyOptions = Partial<OverlayBreakpointConfig> & AnchoredPositionOptions;
3659
+ declare const provideAnchoredDialogStrategyDefaults: (valueOverride?: Partial<OverlayBreakpointConfig> | undefined) => _angular_core.Provider[];
3660
+ declare const injectAnchoredDialogStrategyDefaults: {
3661
+ (): OverlayBreakpointConfig;
3662
+ (options: _angular_core.InjectOptions & {
3663
+ optional?: false;
3664
+ }): OverlayBreakpointConfig;
3665
+ (options: _angular_core.InjectOptions): OverlayBreakpointConfig | null;
3666
+ };
3667
+ declare const provideAnchoredDialogStrategy: () => _angular_core.Provider[];
3668
+ declare const injectAnchoredDialogStrategy: {
3669
+ (): {
3670
+ build: (config?: Partial<OverlayBreakpointConfig>) => OverlayStrategy;
3671
+ };
3672
+ (options: _angular_core.InjectOptions & {
3673
+ optional?: false;
3674
+ }): {
3675
+ build: (config?: Partial<OverlayBreakpointConfig>) => OverlayStrategy;
3676
+ };
3677
+ (options: _angular_core.InjectOptions): {
3678
+ build: (config?: Partial<OverlayBreakpointConfig>) => OverlayStrategy;
3679
+ } | null;
3680
+ };
3681
+ declare const anchoredDialogOverlayStrategy: (options?: AnchoredDialogOverlayStrategyOptions) => (() => OverlayStrategyBreakpoint[]);
3682
+
3683
+ declare const provideBottomSheetStrategyDefaults: (valueOverride?: Partial<OverlayBreakpointConfig> | undefined) => _angular_core.Provider[];
3684
+ declare const injectBottomSheetStrategyDefaults: {
3685
+ (): OverlayBreakpointConfig;
3686
+ (options: _angular_core.InjectOptions & {
3687
+ optional?: false;
3688
+ }): OverlayBreakpointConfig;
3689
+ (options: _angular_core.InjectOptions): OverlayBreakpointConfig | null;
3690
+ };
3691
+ declare const provideBottomSheetStrategy: () => _angular_core.Provider[];
3692
+ declare const injectBottomSheetStrategy: {
3693
+ (): {
3694
+ build: (config?: Partial<OverlayBreakpointConfig>) => _ethlete_components.OverlayStrategy;
3695
+ };
3696
+ (options: _angular_core.InjectOptions & {
3697
+ optional?: false;
3698
+ }): {
3699
+ build: (config?: Partial<OverlayBreakpointConfig>) => _ethlete_components.OverlayStrategy;
3700
+ };
3701
+ (options: _angular_core.InjectOptions): {
3702
+ build: (config?: Partial<OverlayBreakpointConfig>) => _ethlete_components.OverlayStrategy;
3703
+ } | null;
3704
+ };
3705
+ declare const bottomSheetOverlayStrategy: (config?: Partial<OverlayBreakpointConfig>) => (() => OverlayStrategyBreakpoint[]);
3706
+
3707
+ declare const provideDialogStrategyDefaults: (valueOverride?: Partial<OverlayBreakpointConfig> | undefined) => _angular_core.Provider[];
3708
+ declare const injectDialogStrategyDefaults: {
3709
+ (): OverlayBreakpointConfig;
3710
+ (options: _angular_core.InjectOptions & {
3711
+ optional?: false;
3712
+ }): OverlayBreakpointConfig;
3713
+ (options: _angular_core.InjectOptions): OverlayBreakpointConfig | null;
3714
+ };
3715
+ declare const provideDialogStrategy: () => _angular_core.Provider[];
3716
+ declare const injectDialogStrategy: {
3717
+ (): {
3718
+ build: (config?: Partial<OverlayBreakpointConfig>) => OverlayStrategy;
3719
+ };
3720
+ (options: _angular_core.InjectOptions & {
3721
+ optional?: false;
3722
+ }): {
3723
+ build: (config?: Partial<OverlayBreakpointConfig>) => OverlayStrategy;
3724
+ };
3725
+ (options: _angular_core.InjectOptions): {
3726
+ build: (config?: Partial<OverlayBreakpointConfig>) => OverlayStrategy;
3727
+ } | null;
3728
+ };
3729
+ declare const dialogOverlayStrategy: (config?: Partial<OverlayBreakpointConfig>) => (() => OverlayStrategyBreakpoint[]);
3730
+
3731
+ declare const provideFullscreenDialogStrategyDefaults: (valueOverride?: Partial<OverlayBreakpointConfig> | undefined) => _angular_core.Provider[];
3732
+ declare const injectFullscreenDialogStrategyDefaults: {
3733
+ (): OverlayBreakpointConfig;
3734
+ (options: _angular_core.InjectOptions & {
3735
+ optional?: false;
3736
+ }): OverlayBreakpointConfig;
3737
+ (options: _angular_core.InjectOptions): OverlayBreakpointConfig | null;
3738
+ };
3739
+ declare const provideFullscreenDialogStrategy: () => _angular_core.Provider[];
3740
+ declare const injectFullscreenDialogStrategy: {
3741
+ (): {
3742
+ build: (config?: Partial<OverlayBreakpointConfig>) => OverlayStrategy;
3743
+ };
3744
+ (options: _angular_core.InjectOptions & {
3745
+ optional?: false;
3746
+ }): {
3747
+ build: (config?: Partial<OverlayBreakpointConfig>) => OverlayStrategy;
3748
+ };
3749
+ (options: _angular_core.InjectOptions): {
3750
+ build: (config?: Partial<OverlayBreakpointConfig>) => OverlayStrategy;
3751
+ } | null;
3752
+ };
3753
+ declare const fullScreenDialogOverlayStrategy: (config?: Partial<OverlayBreakpointConfig>) => (() => OverlayStrategyBreakpoint[]);
3754
+
3755
+ declare class OverlayOriginCloneComponent {
3756
+ animatedLifecycle: AnimatedLifecycleDirective;
3757
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<OverlayOriginCloneComponent, never>;
3758
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<OverlayOriginCloneComponent, "et-overlay-origin-clone", never, {}, {}, never, ["*"], true, [{ directive: typeof _ethlete_core.AnimatedLifecycleDirective; inputs: {}; outputs: {}; }]>;
3759
+ }
3760
+
3761
+ type ViewportTransformData = {
3762
+ viewportWidth: number;
3763
+ viewportHeight: number;
3764
+ rect: DOMRect;
3765
+ scaleUpX: number;
3766
+ scaleUpY: number;
3767
+ viewportCenterX: number;
3768
+ viewportCenterY: number;
3769
+ buttonCenterX: number;
3770
+ buttonCenterY: number;
3771
+ cloneTranslateX: number;
3772
+ cloneTranslateY: number;
3773
+ containerTranslateX: number;
3774
+ containerTranslateY: number;
3775
+ scaleX: number;
3776
+ scaleY: number;
3777
+ };
3778
+ type FullscreenAnimationCancellable = {
3779
+ unsubscribe: () => void;
3780
+ };
3781
+ type FullscreenAnimationState = {
3782
+ readonly originElement: HTMLElement | null;
3783
+ readonly cloneComponentRef: ComponentRef<OverlayOriginCloneComponent> | null;
3784
+ readonly subscriptions: FullscreenAnimationCancellable[];
3785
+ readonly isOriginHidden: boolean;
3786
+ };
3787
+ type FullscreenAnimationDeps = {
3788
+ readonly injector: EnvironmentInjector;
3789
+ readonly document: Document;
3790
+ readonly appRef: ApplicationRef;
3791
+ readonly renderer: AngularRenderer;
3792
+ };
3793
+ declare const cleanupFullscreenAnimationStyles: (options: {
3794
+ containerEl: HTMLElement;
3795
+ renderer: AngularRenderer;
3796
+ state: FullscreenAnimationState | null;
3797
+ }) => void;
3798
+ declare const startFullscreenEnterAnimation: (options: {
3799
+ context: OverlayStrategyContext;
3800
+ deps: FullscreenAnimationDeps;
3801
+ applyTransformOrigin: boolean;
3802
+ skipAnimation: boolean;
3803
+ }) => FullscreenAnimationState;
3804
+ declare const startFullscreenLeaveAnimation: (options: {
3805
+ context: OverlayStrategyContext;
3806
+ state: FullscreenAnimationState;
3807
+ deps: FullscreenAnimationDeps;
3808
+ applyTransformOrigin: boolean;
3809
+ }) => FullscreenAnimationState;
3810
+ declare const cleanupFullscreenAnimation: (state: FullscreenAnimationState, deps: FullscreenAnimationDeps) => void;
3811
+ declare const abortFullscreenAnimation: (options: {
3812
+ context: OverlayStrategyContext;
3813
+ state: FullscreenAnimationState;
3814
+ deps: FullscreenAnimationDeps;
3815
+ }) => void;
3816
+
3817
+ declare const provideLeftSheetStrategyDefaults: (valueOverride?: Partial<OverlayBreakpointConfig> | undefined) => _angular_core.Provider[];
3818
+ declare const injectLeftSheetStrategyDefaults: {
3819
+ (): OverlayBreakpointConfig;
3820
+ (options: _angular_core.InjectOptions & {
3821
+ optional?: false;
3822
+ }): OverlayBreakpointConfig;
3823
+ (options: _angular_core.InjectOptions): OverlayBreakpointConfig | null;
3824
+ };
3825
+ declare const provideLeftSheetStrategy: () => _angular_core.Provider[];
3826
+ declare const injectLeftSheetStrategy: {
3827
+ (): {
3828
+ build: (config?: Partial<OverlayBreakpointConfig>) => _ethlete_components.OverlayStrategy;
3829
+ };
3830
+ (options: _angular_core.InjectOptions & {
3831
+ optional?: false;
3832
+ }): {
3833
+ build: (config?: Partial<OverlayBreakpointConfig>) => _ethlete_components.OverlayStrategy;
3834
+ };
3835
+ (options: _angular_core.InjectOptions): {
3836
+ build: (config?: Partial<OverlayBreakpointConfig>) => _ethlete_components.OverlayStrategy;
3837
+ } | null;
3838
+ };
3839
+ declare const leftSheetOverlayStrategy: (config?: Partial<OverlayBreakpointConfig>) => (() => OverlayStrategyBreakpoint[]);
3840
+
3841
+ type DragToDismissContext = {
3842
+ element: HTMLElement;
3843
+ overlayRef: OverlayRef<object, unknown>;
3844
+ config: OverlayDragToDismissConfig;
3845
+ renderer: AngularRenderer;
3846
+ };
3847
+ type DragToDismissRef = {
3848
+ unsubscribe: () => void;
3849
+ };
3850
+ /**
3851
+ * Enables drag-to-dismiss functionality on an overlay element.
3852
+ * Returns a cleanup function to disable the feature.
3853
+ */
3854
+ declare const enableDragToDismiss: (context: DragToDismissContext) => DragToDismissRef;
3855
+
3856
+ declare const isHtmlElement: (element: unknown) => element is HTMLElement;
3857
+ declare const isTouchEvent: (event: Event) => event is TouchEvent;
3858
+ declare const isPointerEvent: (event: Event) => event is PointerEvent;
3859
+ declare const findNextRelevantHtmlElement: (element: HTMLElement | null, depth?: number) => HTMLElement | null;
3860
+ declare const getOriginCoordinatesAndDimensions: (origin: HTMLElement | Event | undefined) => {
3861
+ x: number;
3862
+ y: number;
3863
+ width: number;
3864
+ height: number;
3865
+ element: HTMLElement;
3866
+ } | null;
3867
+
3868
+ declare const OVERLAY_CONFIG_CLASS_KEYS: Set<string>;
3869
+ declare const mergeOverlayBreakpointConfigs: (...configs: OverlayBreakpointConfig[]) => OverlayBreakpointConfig;
3870
+
3871
+ type OverlayStrategyControllerMountConfig = {
3872
+ positionStrategy: OverlayRuntimePositionStrategy;
3873
+ paneClass: string[];
3874
+ hostClass: string[];
3875
+ backdropClass: string[];
3876
+ animationDelegate: OverlayRuntimeAnimationDelegate;
3877
+ renderArrow: boolean;
3878
+ hasBackdrop: boolean | undefined;
3879
+ };
3880
+ type OverlayStrategyController = {
3881
+ /** Values the overlay manager merges into the runtime mount config before mounting. */
3882
+ initialMountConfig: OverlayStrategyControllerMountConfig;
3883
+ /** Wires strategy lifecycle hooks and breakpoint switching. Must be called right after mounting. */
3884
+ attach: (runtimeRef: OverlayRuntimeRef<object, unknown>, overlayRef: OverlayRef<object, unknown>) => void;
3885
+ };
3886
+ declare const createOverlayStrategyController: (config: OverlayConfig, parentInjector: EnvironmentInjector) => OverlayStrategyController;
3887
+
3888
+ declare const transformingBottomSheetToDialogOverlayStrategy: (customConfig?: {
3889
+ bottomSheet?: OverlayBreakpointConfig;
3890
+ dialog?: OverlayBreakpointConfig;
3891
+ breakpoint?: Breakpoint | number;
3892
+ }) => (() => OverlayStrategyBreakpoint[]);
3893
+ declare const transformingFullScreenDialogToRightSheetOverlayStrategy: (customConfig?: {
3894
+ fullScreenDialog?: OverlayBreakpointConfig;
3895
+ rightSheet?: OverlayBreakpointConfig;
3896
+ breakpoint?: Breakpoint | number;
3897
+ }) => (() => OverlayStrategyBreakpoint[]);
3898
+ declare const transformingFullScreenDialogToDialogOverlayStrategy: (customConfig?: {
3899
+ fullScreenDialog?: OverlayBreakpointConfig;
3900
+ dialog?: OverlayBreakpointConfig;
3901
+ breakpoint?: Breakpoint | number;
3902
+ }) => (() => OverlayStrategyBreakpoint[]);
3903
+
3904
+ declare const provideRightSheetStrategyDefaults: (valueOverride?: Partial<OverlayBreakpointConfig> | undefined) => _angular_core.Provider[];
3905
+ declare const injectRightSheetStrategyDefaults: {
3906
+ (): OverlayBreakpointConfig;
3907
+ (options: _angular_core.InjectOptions & {
3908
+ optional?: false;
3909
+ }): OverlayBreakpointConfig;
3910
+ (options: _angular_core.InjectOptions): OverlayBreakpointConfig | null;
3911
+ };
3912
+ declare const provideRightSheetStrategy: () => _angular_core.Provider[];
3913
+ declare const injectRightSheetStrategy: {
3914
+ (): {
3915
+ build: (config?: Partial<OverlayBreakpointConfig>) => _ethlete_components.OverlayStrategy;
3916
+ };
3917
+ (options: _angular_core.InjectOptions & {
3918
+ optional?: false;
3919
+ }): {
3920
+ build: (config?: Partial<OverlayBreakpointConfig>) => _ethlete_components.OverlayStrategy;
3921
+ };
3922
+ (options: _angular_core.InjectOptions): {
3923
+ build: (config?: Partial<OverlayBreakpointConfig>) => _ethlete_components.OverlayStrategy;
3924
+ } | null;
3925
+ };
3926
+ declare const rightSheetOverlayStrategy: (config?: Partial<OverlayBreakpointConfig>) => (() => OverlayStrategyBreakpoint[]);
3927
+
3928
+ declare const provideTopSheetStrategyDefaults: (valueOverride?: Partial<OverlayBreakpointConfig> | undefined) => _angular_core.Provider[];
3929
+ declare const injectTopSheetStrategyDefaults: {
3930
+ (): OverlayBreakpointConfig;
3931
+ (options: _angular_core.InjectOptions & {
3932
+ optional?: false;
3933
+ }): OverlayBreakpointConfig;
3934
+ (options: _angular_core.InjectOptions): OverlayBreakpointConfig | null;
3935
+ };
3936
+ declare const provideTopSheetStrategy: () => _angular_core.Provider[];
3937
+ declare const injectTopSheetStrategy: {
3938
+ (): {
3939
+ build: (config?: Partial<OverlayBreakpointConfig>) => _ethlete_components.OverlayStrategy;
3940
+ };
3941
+ (options: _angular_core.InjectOptions & {
3942
+ optional?: false;
3943
+ }): {
3944
+ build: (config?: Partial<OverlayBreakpointConfig>) => _ethlete_components.OverlayStrategy;
3945
+ };
3946
+ (options: _angular_core.InjectOptions): {
3947
+ build: (config?: Partial<OverlayBreakpointConfig>) => _ethlete_components.OverlayStrategy;
3948
+ } | null;
3949
+ };
3950
+ declare const topSheetOverlayStrategy: (config?: Partial<OverlayBreakpointConfig>) => (() => OverlayStrategyBreakpoint[]);
1732
3951
 
1733
3952
  declare class ScrollableActiveChildDirective {
1734
3953
  private scrollable;
@@ -1935,8 +4154,8 @@ declare class ScrollableDragDirective {
1935
4154
  static ɵdir: _angular_core.ɵɵDirectiveDeclaration<ScrollableDragDirective, "[etScrollableDrag]", never, { "enabled": { "alias": "enabled"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
1936
4155
  }
1937
4156
 
1938
- declare const ScrollableErrorCode: {
1939
- readonly MISSING_SCROLL_CONTAINER: 1800;
4157
+ declare const SCROLLABLE_ERROR_CODES: {
4158
+ readonly MISSING_SCROLL_CONTAINER: 2100;
1940
4159
  };
1941
4160
 
1942
4161
  declare class ScrollableIgnoreChildDirective {
@@ -2075,6 +4294,7 @@ declare class StreamConsentComponent {
2075
4294
  private config;
2076
4295
  private locale;
2077
4296
  private surfaceThemes;
4297
+ protected readonly HEADING_ID: string;
2078
4298
  cardSurface: _angular_core.Signal<string | null>;
2079
4299
  heading: _angular_core.Signal<string>;
2080
4300
  description: _angular_core.Signal<string>;
@@ -2384,8 +4604,8 @@ type PipManager = {
2384
4604
  declare class PipBackDirective {
2385
4605
  private chrome;
2386
4606
  private tokenEntry;
2387
- entry: _angular_core.InputSignal<StreamPipEntry | undefined>;
2388
4607
  private pipManager;
4608
+ entry: _angular_core.InputSignal<StreamPipEntry | undefined>;
2389
4609
  back(event: Event): void;
2390
4610
  private resolveEntry;
2391
4611
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<PipBackDirective, never>;
@@ -2564,8 +4784,8 @@ declare class PipCloseDirective {
2564
4784
  private chrome;
2565
4785
  private pipWindow;
2566
4786
  private tokenEntry;
2567
- entry: _angular_core.InputSignal<StreamPipEntry | undefined>;
2568
4787
  private pipManager;
4788
+ entry: _angular_core.InputSignal<StreamPipEntry | undefined>;
2569
4789
  close(event: Event): void;
2570
4790
  private resolveEntry;
2571
4791
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<PipCloseDirective, never>;
@@ -2604,28 +4824,31 @@ declare class PipTitleBarDirective {
2604
4824
  declare const PIP_WINDOW_ASPECT_RATIO_TOKEN: InjectionToken<Signal<number>>;
2605
4825
 
2606
4826
  declare class StreamPipChromeComponent implements PipChromeRef {
4827
+ pipManager: _ethlete_components.PipManager;
4828
+ private provideSurface;
4829
+ private surfaceThemes;
2607
4830
  stageRef: _angular_core.Signal<ElementRef<HTMLElement> | undefined>;
2608
4831
  pipWindowRef: _angular_core.Signal<PipWindowComponent | undefined>;
2609
4832
  gridBtnRef: _angular_core.Signal<ElementRef<HTMLElement> | undefined>;
2610
- pipManager: _ethlete_components.PipManager;
2611
4833
  state: _ethlete_components.PipChromeState;
2612
4834
  animations: _ethlete_components.PipChromeAnimations;
2613
4835
  readonly CLOSE_KIND: "close";
2614
4836
  controlsColor: _angular_core.Signal<string | undefined>;
2615
4837
  readonly WINDOW_CONTROL_BUTTON_SIZE: "sm";
4838
+ constructor();
2616
4839
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<StreamPipChromeComponent, never>;
2617
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<StreamPipChromeComponent, "et-stream-pip-chrome", never, {}, {}, never, never, true, never>;
4840
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<StreamPipChromeComponent, "et-stream-pip-chrome", never, {}, {}, never, never, true, [{ directive: typeof _ethlete_core.ProvideSurfaceDirective; inputs: {}; outputs: {}; }]>;
2618
4841
  }
2619
4842
 
2620
4843
  declare class PipPlayerComponent {
2621
4844
  private document;
2622
4845
  private el;
2623
4846
  protected pipCell: PipCellDirective | null;
2624
- entry: _angular_core.InputSignal<StreamPipEntry | undefined>;
2625
- showThumbnail: _angular_core.InputSignal<boolean | undefined>;
2626
4847
  private streamManager;
2627
4848
  private pipManager;
2628
4849
  private renderer;
4850
+ entry: _angular_core.InputSignal<StreamPipEntry | undefined>;
4851
+ showThumbnail: _angular_core.InputSignal<boolean | undefined>;
2629
4852
  isReady: _angular_core.WritableSignal<boolean>;
2630
4853
  resolvedEntry: _angular_core.Signal<StreamPipEntry>;
2631
4854
  thumbnailUrl: _angular_core.Signal<string | null>;
@@ -2663,11 +4886,11 @@ declare const injectPipSlotPlaceholderConfig: {
2663
4886
  declare class PipSlotPlaceholderComponent {
2664
4887
  private slotPlayerId;
2665
4888
  private parentSurfaceProvider;
2666
- private bringBackDir;
2667
4889
  private pipManager;
2668
4890
  private config;
2669
4891
  private locale;
2670
4892
  private surfaceThemes;
4893
+ private bringBackDir;
2671
4894
  cardSurface: _angular_core.Signal<string | null>;
2672
4895
  isInPip: _angular_core.Signal<boolean>;
2673
4896
  message: _angular_core.Signal<string>;
@@ -2710,10 +4933,10 @@ declare class StreamPlayerSlotDirective {
2710
4933
  private playerComponent;
2711
4934
  private provideSurface;
2712
4935
  private parentSurfaceProvider;
2713
- streamSlotPriority: _angular_core.InputSignalWithTransform<boolean, unknown>;
2714
- streamSlotOnPipBack: _angular_core.InputSignal<(() => void) | undefined>;
2715
4936
  private surfaceThemes;
2716
4937
  private styleManager;
4938
+ streamSlotPriority: _angular_core.InputSignalWithTransform<boolean, unknown>;
4939
+ streamSlotOnPipBack: _angular_core.InputSignal<(() => void) | undefined>;
2717
4940
  private resolvedSurface;
2718
4941
  slot: _ethlete_components.StreamPlayerSlotHandle;
2719
4942
  constructor();
@@ -3476,7 +5699,7 @@ declare const StreamImports: readonly [typeof StreamConsentComponent, typeof Str
3476
5699
  declare class TabBarTriggerDirective {
3477
5700
  private elementRef;
3478
5701
  private scrollable;
3479
- protected tabBar: _ethlete_components.TabBarDirective;
5702
+ protected tabBar: _ethlete_components.TabBarDirective | null;
3480
5703
  disabled: _angular_core.InputSignal<boolean>;
3481
5704
  readonly ID: string;
3482
5705
  justActivated: _angular_core.WritableSignal<boolean>;
@@ -3559,6 +5782,7 @@ declare const TAB_BAR_TRIGGER_TOKEN: InjectionToken<TabBarTriggerDirective>;
3559
5782
 
3560
5783
  declare class NavTabLinkDirective {
3561
5784
  private routerLinkActive;
5785
+ private navTabs;
3562
5786
  private tabBar;
3563
5787
  private destroyRef;
3564
5788
  trigger: TabBarTriggerDirective;
@@ -3570,17 +5794,24 @@ declare class NavTabLinkDirective {
3570
5794
  }
3571
5795
 
3572
5796
  declare class NavTabsOutletDirective {
3573
- private tabBar;
5797
+ private nearestTabBar;
5798
+ private registry;
3574
5799
  readonly ID: string;
5800
+ private tabBar;
3575
5801
  activeTriggerId: _angular_core.Signal<string | null>;
5802
+ constructor();
3576
5803
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<NavTabsOutletDirective, never>;
3577
5804
  static ɵdir: _angular_core.ɵɵDirectiveDeclaration<NavTabsOutletDirective, "[etNavTabsOutlet]", never, {}, {}, never, never, true, never>;
3578
5805
  }
3579
5806
 
3580
5807
  declare class NavTabsDirective {
3581
5808
  private routerEvent;
5809
+ private registry;
5810
+ private tabBar;
5811
+ private destroyRef;
3582
5812
  /** @internal */
3583
5813
  navigationVersion: _angular_core.Signal<number>;
5814
+ constructor();
3584
5815
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<NavTabsDirective, never>;
3585
5816
  static ɵdir: _angular_core.ɵɵDirectiveDeclaration<NavTabsDirective, "[etNavTabs]", never, {}, {}, never, never, true, never>;
3586
5817
  }
@@ -3615,10 +5846,10 @@ declare class NavTabsComponent {
3615
5846
  }
3616
5847
 
3617
5848
  declare const TAB_ERROR_CODES: {
3618
- readonly MISSING_TAB_BAR: 1800;
3619
- readonly MISSING_TAB_GROUP: 1801;
3620
- readonly MISSING_TAB_PANEL: 1802;
3621
- readonly MISSING_NAV_TABS: 1803;
5849
+ readonly MISSING_TAB_BAR: 2000;
5850
+ readonly MISSING_TAB_GROUP: 2001;
5851
+ readonly MISSING_TAB_PANEL: 2002;
5852
+ readonly MISSING_NAV_TABS: 2003;
3622
5853
  };
3623
5854
 
3624
5855
  declare class TabPanelDirective {
@@ -3643,6 +5874,8 @@ declare class TabGroupDirective {
3643
5874
  private sessionMemoryAvailable;
3644
5875
  /** @internal */
3645
5876
  panels: _angular_core.WritableSignal<TabPanelDirective[]>;
5877
+ /** @internal Set by composing components (e.g. et-tab-group) that render panel content themselves instead of registering [etTabPanel] directives. */
5878
+ managesPanelsInternally: _angular_core.WritableSignal<boolean>;
3646
5879
  restoredSessionMemoryKey: _angular_core.WritableSignal<string>;
3647
5880
  constructor();
3648
5881
  /** @internal */
@@ -3674,6 +5907,7 @@ declare class TabLabelDirective {
3674
5907
  }
3675
5908
 
3676
5909
  declare class TabComponent {
5910
+ private tabGroup;
3677
5911
  label: _angular_core.InputSignal<string>;
3678
5912
  icon: _angular_core.InputSignal<string | null>;
3679
5913
  disabled: _angular_core.InputSignal<boolean>;
@@ -3682,6 +5916,7 @@ declare class TabComponent {
3682
5916
  implicitLabelRef: _angular_core.Signal<TemplateRef<unknown>>;
3683
5917
  /** @internal */
3684
5918
  contentRef: _angular_core.Signal<TemplateRef<unknown>>;
5919
+ constructor();
3685
5920
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<TabComponent, never>;
3686
5921
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<TabComponent, "et-tab", never, { "label": { "alias": "label"; "required": false; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; }, {}, ["customLabel"], ["*"], true, never>;
3687
5922
  }
@@ -3693,6 +5928,7 @@ declare class TabGroupComponent {
3693
5928
  protected triggerElements: _angular_core.Signal<TabBarTriggerDirective[]>;
3694
5929
  /** @internal */
3695
5930
  tabGroupId: string;
5931
+ constructor();
3696
5932
  protected isPanelHidden(index: number): boolean;
3697
5933
  protected shouldRenderPanel(index: number): boolean;
3698
5934
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<TabGroupComponent, never>;
@@ -3708,6 +5944,7 @@ declare class ToggletipDirective {
3708
5944
  private elementRef;
3709
5945
  private colorProvider;
3710
5946
  private surfaceProvider;
5947
+ private overlayManager;
3711
5948
  content: _angular_core.InputSignal<ToggletipContent | null>;
3712
5949
  ariaLabel: _angular_core.InputSignal<string | null>;
3713
5950
  ariaLabelledBy: _angular_core.InputSignal<string | null>;
@@ -3718,7 +5955,6 @@ declare class ToggletipDirective {
3718
5955
  viewportPadding: _angular_core.InputSignal<Padding | null>;
3719
5956
  disabled: _angular_core.InputSignal<boolean>;
3720
5957
  open: _angular_core.ModelSignal<boolean>;
3721
- private overlayManager;
3722
5958
  /** @internal */
3723
5959
  overlayRef: _angular_core.WritableSignal<OverlayRef<ToggletipComponent, unknown> | null>;
3724
5960
  private toggletipId;
@@ -3741,24 +5977,18 @@ declare class ToggletipDirective {
3741
5977
 
3742
5978
  declare class ToggletipComponent {
3743
5979
  private ownColorProvider;
3744
- private ownSurfaceProvider;
3745
5980
  private triggerColorProvider;
3746
- private triggerSurfaceProvider;
3747
5981
  protected injector: Injector;
3748
5982
  toggletipId: _angular_core.InputSignal<string>;
3749
5983
  protected contentId: _angular_core.InputSignal<string>;
3750
5984
  content: _angular_core.InputSignal<ToggletipContent>;
3751
5985
  colorProvider: _angular_core.InputSignal<ProvideColorDirective | null>;
3752
- surfaceProvider: _angular_core.InputSignal<ProvideSurfaceDirective | null>;
3753
- animatedLifecycle: _angular_core.Signal<AnimatedLifecycleDirective | undefined>;
3754
- private surfaceThemes;
3755
5986
  hasTemplate: _angular_core.Signal<boolean>;
3756
5987
  contentText: _angular_core.Signal<string | null>;
3757
5988
  contentTemplate: _angular_core.Signal<TemplateRef<unknown> | null>;
3758
- resolvedSurface: _angular_core.Signal<string | null>;
3759
5989
  constructor();
3760
5990
  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: {}; }]>;
5991
+ 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
5992
  }
3763
5993
 
3764
5994
  declare class ToggletipCloseDirective {
@@ -3789,22 +6019,16 @@ declare const TOGGLETIP_IMPORTS: readonly [typeof ToggletipDirective, typeof Tog
3789
6019
 
3790
6020
  declare class TooltipComponent {
3791
6021
  private ownColorProvider;
3792
- private ownSurfaceProvider;
3793
6022
  private triggerColorProvider;
3794
- private triggerSurfaceProvider;
3795
6023
  tooltipId: _angular_core.InputSignal<string>;
3796
6024
  content: _angular_core.InputSignal<TooltipContent>;
3797
6025
  colorProvider: _angular_core.InputSignal<ProvideColorDirective | null>;
3798
- surfaceProvider: _angular_core.InputSignal<ProvideSurfaceDirective | null>;
3799
- animatedLifecycle: _angular_core.Signal<AnimatedLifecycleDirective | undefined>;
3800
- private surfaceThemes;
3801
6026
  hasTemplate: _angular_core.Signal<boolean>;
3802
6027
  contentText: _angular_core.Signal<string | null>;
3803
6028
  contentTemplate: _angular_core.Signal<TemplateRef<unknown> | null>;
3804
- resolvedSurface: _angular_core.Signal<string | null>;
3805
6029
  constructor();
3806
6030
  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: {}; }]>;
6031
+ 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
6032
  }
3809
6033
 
3810
6034
  type TooltipContent = string | TemplateRef<unknown>;
@@ -3814,6 +6038,9 @@ declare class TooltipDirective {
3814
6038
  private elementRef;
3815
6039
  private colorProvider;
3816
6040
  private surfaceProvider;
6041
+ private overlayManager;
6042
+ private focusVisibleTracker;
6043
+ private renderer;
3817
6044
  content: _angular_core.InputSignal<TooltipContent | null>;
3818
6045
  ariaDescription: _angular_core.InputSignal<string | null>;
3819
6046
  placement: _angular_core.InputSignal<Placement>;
@@ -3823,9 +6050,6 @@ declare class TooltipDirective {
3823
6050
  viewportPadding: _angular_core.InputSignal<Padding | null>;
3824
6051
  showDelay: _angular_core.InputSignal<number>;
3825
6052
  disabled: _angular_core.InputSignal<boolean>;
3826
- private overlayManager;
3827
- private focusVisibleTracker;
3828
- private renderer;
3829
6053
  /** @internal */
3830
6054
  overlayRef: _angular_core.WritableSignal<OverlayRef<TooltipComponent, unknown> | null>;
3831
6055
  private hasHover;
@@ -3851,5 +6075,5 @@ declare const TOOLTIP_ERROR_CODES: {
3851
6075
 
3852
6076
  declare const TOOLTIP_IMPORTS: readonly [typeof TooltipDirective, typeof TooltipComponent];
3853
6077
 
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 };
6078
+ 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, DROPZONE_ENTRY_STATUSES, DROPZONE_ERROR_CODES, DROPZONE_FILES_ERROR_KIND, DROPZONE_FILE_CONSTRAINTS, DROPZONE_FILE_REJECTION_REASONS, DROPZONE_IMPORTS, DailymotionPlayerComponent, DailymotionPlayerDirective, DailymotionPlayerParamsDirective, DailymotionPlayerSlotComponent, DescriptionComponent, DropzoneComponent, DropzoneDirective, FACEBOOK_PLAYER_TOKEN, FILE_ICON, 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, 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, QueryParamOverlayLinkDirective, RICH_TEXT_EDITOR_IMPORTS, ROTATE_RIGHT_ICON, RadioComponent, RadioGroupComponent, RichTextEditorComponent, RichTextEditorDirective, RichTextEditorFloatingToolbarComponent, SCROLLABLE_ERROR_CODES, SCROLLABLE_IMPORTS, SELECTION_LIST_MULTIPLE, SELECTION_LIST_TOKEN, SIDEBAR_OVERLAY_CONFIG, SIDEBAR_OVERLAY_TOKEN, SNAP_HYSTERESIS, SOOP_PLAYER_TOKEN, SPLIT_BUTTON_ERROR_CODES, 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, ScrollableIgnoreChildDirective, ScrollableLoadingTemplateDirective, ScrollableMasksDirective, ScrollableNavigationDirective, ScrollableSnapDirective, SegmentedButtonComponent, SegmentedButtonGroupComponent, SelectionListControlDirective, SelectionListDirective, SelectionOptionDirective, SoopPlayerComponent, SoopPlayerDirective, SoopPlayerParamsDirective, SoopPlayerSlotComponent, SpinnerComponent, SplitButtonActionDirective, SplitButtonComponent, SplitButtonDirective, SplitButtonTriggerDirective, 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, UPLOAD_ICON, VIMEO_PLAYER_TOKEN, VimeoPlayerComponent, VimeoPlayerDirective, VimeoPlayerParamsDirective, VimeoPlayerSlotComponent, WINDOW_CONTROL_BUTTON_KINDS, WINDOW_CONTROL_BUTTON_SIZES, WindowControlButtonComponent, YOUTUBE_PLAYER_SLOT_TOKEN, YOUTUBE_PLAYER_TOKEN, YoutubePlayerComponent, YoutubePlayerDirective, YoutubePlayerParamsDirective, YoutubePlayerSlotComponent, YoutubePlayerSlotDirective, abortFullscreenAnimation, anchoredDialogOverlayStrategy, anchoredOverlayStrategy, autoPlace, bottomSheetOverlayStrategy, buildAnchoredRuntimePositionStrategy, centeredOverlayStrategy, clampPosition, clampResizeRect, cleanupFullscreenAnimation, cleanupFullscreenAnimationStyles, compactLayout, computeGeometry, computeGridHeight, createAutoScroller, createDefaultDropzoneArgs, createDropzoneUpload, createExistingDropzoneEntry, createFileDropzoneEntry, createGridAdapter, createNotificationRef, createOverlayOpener, createOverlayRef, createOverlayStrategyController, createPipChromeAnimations, createPipChromeState, createStreamConfig, createStreamPlayerSlot, defaultDropzoneRejectionMessage, defineOverlay, defineQueryParamOverlay, deserializeGridLayout, dialogOverlayStrategy, disposeDropzoneEntry, dropzoneFiles, enableDragToDismiss, findCollision, findNextRelevantHtmlElement, findScrollableAncestor, formatFileSize, 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, isFileAccepted, isHtmlElement, isPointerEvent, isTouchEvent, itemsCollide, leftSheetOverlayStrategy, mapLayoutToBreakpoint, mergeOverlayBreakpointConfigs, mergeOverlayConfigs, 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 };
6079
+ export type { AnchoredDialogOverlayStrategyOptions, AnchoredOverlayStrategyOptions, AnchoredPositionOptions, AnyDropzoneUploadConfig, AutoPlaceOptions, AutoScrollPointer, AutoScroller, ButtonIconAlignment, ButtonSize, CenteredOverlayStrategyOptions, ClampPositionOptions, CompactLayoutOptions, CreateExistingDropzoneEntryOptions, CreateFileDropzoneEntryOptions, DragToDismissContext, DragToDismissRef, DropzoneEntry, DropzoneEntrySource, DropzoneEntryStatus, DropzoneExistingFileInfo, DropzoneFileConstraints, DropzoneFileRejection, DropzoneFileRejectionReason, DropzoneFileValidationChannel, DropzoneUploadConfig, 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, OverlayDefinition, OverlayDefinitionConfig, OverlayDragToDismissConfig, OverlayLifecycleConfig, OverlayManager, OverlayMode, OverlayOpenConfig, OverlayOpener, OverlayOpenerConfig, OverlayRef, OverlayRole, OverlayRoute, OverlayRouter, OverlayRouterConfig, OverlayRouterNavigateConfig, OverlayRouterNavigationDirection, OverlayRouterResolvedPath, OverlayRouterTransitionType, OverlayStrategy, OverlayStrategyBreakpoint, OverlayStrategyContext, OverlayStrategyController, OverlayStrategyControllerMountConfig, OverlaySurfaceContext, PipCellData, PipChromeAnimations, PipChromeRef, PipChromeState, PipManager, PipSlotPlaceholderConfig, PixelRect, QueryParamOverlayDefinition, QueryParamOverlayDefinitionConfig, QueryParamOverlayHost, QueryParamOverlayOpener, QueryParamOverlayValue, 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 };