@duyluonganduin/acl-web-components 0.0.70 → 0.0.72

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,4 +1,6 @@
1
+ import { ComplexAttributeConverter } from 'lit';
1
2
  import { CSSResult } from 'lit';
3
+ import { CSSResultGroup } from 'lit';
2
4
  import { LitElement } from 'lit';
3
5
  import { nothing } from 'lit';
4
6
  import { PropertyValues } from 'lit';
@@ -7,6 +9,9 @@ import { TemplateResult } from 'lit-html';
7
9
  /** Add `count` months, clamping the day to the target month's length. */
8
10
  export declare function addMonths(date: Date, count: number): Date;
9
11
 
12
+ /** The `uid` that renders the Anduin logo avatar (design repo). */
13
+ export declare const ANDUIN_AVATAR_UID = "anduin";
14
+
10
15
  /**
11
16
  * The Anduin Intelligence mark as an activity indicator for AI-assisted work — extracting terms from a
12
17
  * subscription document, categorizing documents, mapping investors.
@@ -60,17 +65,196 @@ export declare class AnduinAiSpinner extends LitElement {
60
65
  private dropPhaseClasses;
61
66
  }
62
67
 
68
+ /**
69
+ * `<anduin-autocomplete>` — the design repo's free-text field with suggestions. The value is
70
+ * whatever the field holds; picking a suggestion writes its label into the field. Unlike
71
+ * `anduin-combobox` the text is never reverted when the list closes.
72
+ *
73
+ * ```html
74
+ * <anduin-autocomplete>
75
+ * <anduin-autocomplete-input placeholder="Search funds..."></anduin-autocomplete-input>
76
+ * <anduin-autocomplete-content>
77
+ * <anduin-autocomplete-empty>No matching funds</anduin-autocomplete-empty>
78
+ * <anduin-autocomplete-list>
79
+ * <anduin-autocomplete-item value="nw-x">Northwind Real Estate Partners X</anduin-autocomplete-item>
80
+ * </anduin-autocomplete-list>
81
+ * </anduin-autocomplete-content>
82
+ * </anduin-autocomplete>
83
+ * ```
84
+ *
85
+ * `value` follows the text (written back on every keystroke); a value set from outside updates
86
+ * the field and re-filters without firing `change`, so a controlled binding cannot loop.
87
+ */
88
+ export declare class AnduinAutocomplete extends PickerRoot {
89
+ static family: string;
90
+ private _current;
91
+ firstUpdated(): void;
92
+ updated(changed: PropertyValues<this>): void;
93
+ /** The text in the field. */
94
+ get text(): string;
95
+ private _syncText;
96
+ /** Records new text and reports it as `change`. */
97
+ private _commit;
98
+ protected openQuery(): string;
99
+ protected emptyVisible(_query: string, nothingMatched: boolean): boolean;
100
+ /** With nothing to suggest and no empty element, the panel hides itself rather than show an empty box. */
101
+ protected panelVisible(nothingMatched: boolean): boolean;
102
+ protected onClosed(): void;
103
+ protected onItemChosen(value: string): void;
104
+ /** Commits a suggestion: its label becomes the text, `on-choose` fires with its value, the list closes. */
105
+ choose(value: string): void;
106
+ get hasHighlight(): boolean;
107
+ /** Enter on the highlighted suggestion. */
108
+ chooseHighlighted(): void;
109
+ /** Empties the field (the ✕, or Escape on a closed single-row field) and hands focus back to it. */
110
+ clear(): void;
111
+ fieldFocus(): void;
112
+ fieldInput(text: string): void;
113
+ }
114
+
115
+ /** `<anduin-autocomplete-clear>` — slotted in a field: a ✕ shown only while there is text; clears it and refocuses. */
116
+ export declare class AnduinAutocompleteClear extends LitElement {
117
+ static styles: CSSResult;
118
+ hasText: boolean;
119
+ connectedCallback(): void;
120
+ private _onClick;
121
+ render(): TemplateResult<1>;
122
+ }
123
+
124
+ /** `<anduin-autocomplete-content>` — the floating panel. `width` (px) pins its width; otherwise it shrink-wraps (min 160px). */
125
+ export declare class AnduinAutocompleteContent extends PickerContent {
126
+ static family: string;
127
+ }
128
+
129
+ /** `<anduin-autocomplete-empty>` — shown when the text matches nothing. Without one, the panel hides instead. */
130
+ export declare class AnduinAutocompleteEmpty extends PickerEmpty {
131
+ static family: string;
132
+ }
133
+
134
+ /** `<anduin-autocomplete-group>` — a labelled section; hides itself when every suggestion in it is filtered out. */
135
+ export declare class AnduinAutocompleteGroup extends PickerGroup {
136
+ static family: string;
137
+ }
138
+
139
+ /**
140
+ * `<anduin-autocomplete-input>` — the single-row field. Attributes: `placeholder`, `size`
141
+ * (`small` 24px / `default` 32px / `large` 40px), `status`, `disabled="true"`, `open-on-focus`,
142
+ * `label`. JS property `filter`. Slot an `<anduin-autocomplete-clear>` for a ✕.
143
+ */
144
+ export declare class AnduinAutocompleteInput extends AutocompleteFieldBase {
145
+ static styles: CSSResult[];
146
+ private _onKeyDown;
147
+ render(): TemplateResult<1>;
148
+ }
149
+
150
+ /**
151
+ * `<anduin-autocomplete-item value="…">Label</anduin-autocomplete-item>` — a suggestion. `label`
152
+ * overrides the text committed and filtered on; `start-icon` adds a leading icon; `disabled`
153
+ * keeps it visible but unpickable.
154
+ */
155
+ export declare class AnduinAutocompleteItem extends PickerItem {
156
+ static family: string;
157
+ static styles: CSSResultGroup[];
158
+ startIcon: string;
159
+ protected renderStart(): TemplateResult<1> | typeof nothing;
160
+ }
161
+
162
+ /** `<anduin-autocomplete-label>` — a group's heading. */
163
+ export declare class AnduinAutocompleteLabel extends PickerLabel {
164
+ static family: string;
165
+ }
166
+
167
+ /** `<anduin-autocomplete-list>` — the listbox. `max-height` caps it (any CSS length); `items` (JS) renders data. */
168
+ export declare class AnduinAutocompleteList extends PickerList {
169
+ static family: string;
170
+ }
171
+
172
+ /** `<anduin-autocomplete-separator>` — a divider; hides when left dangling by the filter. */
173
+ export declare class AnduinAutocompleteSeparator extends PickerSeparator {
174
+ static family: string;
175
+ }
176
+
177
+ /**
178
+ * `<anduin-autocomplete-textarea>` — the multi-row field. Same API as the input plus `rows`
179
+ * (default 3) and `max-rows` (default 6): it grows a line at a time between them, then scrolls.
180
+ * Enter commits a highlighted suggestion; otherwise it reports `on-submit` and, unless that is
181
+ * cancelled, inserts a newline. Shift+Enter is always a newline.
182
+ */
183
+ export declare class AnduinAutocompleteTextarea extends AutocompleteFieldBase {
184
+ static styles: CSSResult[];
185
+ rows: number;
186
+ maxRows: number;
187
+ updated(changed: PropertyValues<this>): void;
188
+ /** Grows the field between `rows` and `max-rows` lines; past that it scrolls. */
189
+ private _grow;
190
+ protected _onInput(e: Event): void;
191
+ set text(value: string);
192
+ get text(): string;
193
+ private _onKeyDown;
194
+ render(): TemplateResult<1>;
195
+ }
196
+
63
197
  export declare class AnduinAvatar extends LitElement {
64
198
  static styles: CSSResult;
65
199
  src: string;
66
200
  name: string;
67
201
  alt: string;
68
202
  icon: string;
69
- size: AvatarSize;
203
+ /** 16 | 20 | 24 | 32 | 40, or the design repo's 'small' | 'medium' | 'large' | 'extraLarge'. */
204
+ size: AvatarSize | DesignAvatarSize;
70
205
  shape: AvatarShape;
206
+ /**
207
+ * Design-repo API. Setting `uid` (even to `""`) or `value` switches the avatar to the design repo's behaviour:
208
+ * initials from `value`, a deterministic colour from `uid`, `uid="anduin"` for the Anduin logo, and an empty
209
+ * `uid` for an inactive avatar that shows its slotted content. `name` / `src` / `icon` keep their old behaviour.
210
+ */
211
+ uid: string | null;
212
+ value: string | null;
213
+ /** Accessible name (design API); replaces `value` as what the avatar is read as. */
214
+ label: string;
71
215
  private _imgError;
72
216
  private _onImgError;
217
+ /** The size in pixels, for either API. */
218
+ private get _px();
219
+ /** The design repo's named size, for either API. */
220
+ private get _designSize();
221
+ /** Whether the design repo's `uid` / `value` API is in use. */
222
+ get isDesignMode(): boolean;
73
223
  private _iconSize;
224
+ private _renderDesign;
225
+ render(): TemplateResult<1>;
226
+ }
227
+
228
+ /**
229
+ * `<anduin-avatar-block>` — the design repo's avatar + name + email block.
230
+ *
231
+ * The avatar (an `anduin-avatar` in the design `uid` / `value` mode, `aria-hidden` because the name is written
232
+ * beside it) sits on the left; the name (`value`) on top and the email below with a copy-to-clipboard button. Both
233
+ * text rows truncate with an ellipsis when the block is narrower than its content (give it `display: block` or a
234
+ * width to constrain it).
235
+ *
236
+ * Slots: `value` replaces the name row (the `value` attribute still drives the initials); `email` replaces the
237
+ * whole email row, including the copy button.
238
+ */
239
+ export declare class AnduinAvatarBlock extends LitElement {
240
+ static styles: CSSResult;
241
+ /** Drives the avatar colour. Empty: an inactive (gray) avatar; `"anduin"`: the Anduin logo. */
242
+ uid: string;
243
+ /** Full name: the displayed name and the source of the avatar initials. */
244
+ value: string;
245
+ /** Email shown under the name with a copy button. Empty: no email row. */
246
+ email: string;
247
+ /** Avatar shape: 'circle' (default) | 'square'. */
248
+ shape: 'circle' | 'square' | '';
249
+ /** Avatar size: 'small' | 'medium' | 'large' (default) | 'extraLarge'. */
250
+ size: 'small' | 'medium' | 'large' | 'extraLarge' | '';
251
+ private _copyStatus;
252
+ private _announcement;
253
+ private _resetTimer;
254
+ disconnectedCallback(): void;
255
+ /** Copies the email as the built-in copy button does. Resolves with whether the write succeeded. */
256
+ copyEmail(): Promise<boolean>;
257
+ private _renderEmail;
74
258
  render(): TemplateResult<1>;
75
259
  }
76
260
 
@@ -202,6 +386,273 @@ export declare class AnduinCheckbox extends LitElement {
202
386
  render(): TemplateResult<1>;
203
387
  }
204
388
 
389
+ /**
390
+ * `<anduin-clipboard>` — copies `value` to the clipboard when its
391
+ * `<anduin-clipboard-trigger>` (or `<anduin-clipboard-indicator>`) is clicked.
392
+ *
393
+ * The status goes to `copied` at once, to `failed` if the browser refuses the
394
+ * write, and back to `idle` 2 seconds after the request. A polite live region
395
+ * announces the outcome ("Invoice number copied to clipboard").
396
+ */
397
+ export declare class AnduinClipboard extends LitElement {
398
+ static styles: CSSResult;
399
+ /** The text to copy, read at click time. */
400
+ value: string;
401
+ /** What the value is ("Invoice number"): names an icon-only trigger and the announcement. */
402
+ label: string;
403
+ private _status;
404
+ private _announcement;
405
+ private _resetTimer;
406
+ /** Where the last copy stands. */
407
+ get status(): ClipboardStatus;
408
+ constructor();
409
+ disconnectedCallback(): void;
410
+ /** Copies `value` as a trigger click would. Resolves once the write has settled. */
411
+ copy(): Promise<void>;
412
+ private _write;
413
+ /** The pre-`navigator.clipboard` way, for pages without it (plain HTTP). */
414
+ private _copyByExecCommand;
415
+ private _reportOutcome;
416
+ private _setStatus;
417
+ updated(changed: Map<string, unknown>): void;
418
+ render(): TemplateResult<1>;
419
+ }
420
+
421
+ /**
422
+ * `<anduin-clipboard-indicator>` — a ready-made copy icon button (duplicate
423
+ * icon that turns into a check while copied). `appearance`: `plain` (32×32,
424
+ * hover background; default) or `text` (bare inline icon).
425
+ */
426
+ export declare class AnduinClipboardIndicator extends LitElement {
427
+ static styles: CSSResult;
428
+ appearance: ClipboardIndicatorAppearance;
429
+ private _copied;
430
+ private _label;
431
+ private _link;
432
+ connectedCallback(): void;
433
+ disconnectedCallback(): void;
434
+ render(): TemplateResult<1>;
435
+ }
436
+
437
+ /**
438
+ * `<anduin-clipboard-trigger>` — the click target. Wraps its child in an
439
+ * `anduin-tooltip` that says "Click to copy", then "✓ Copied to clipboard".
440
+ * An icon-only child (no text, no `label` / `aria-label`) is named "Copy <label>".
441
+ */
442
+ export declare class AnduinClipboardTrigger extends LitElement {
443
+ static styles: CSSResult;
444
+ private _status;
445
+ private _hovered;
446
+ private _link;
447
+ constructor();
448
+ connectedCallback(): void;
449
+ disconnectedCallback(): void;
450
+ private _onClick;
451
+ private _onRootChange;
452
+ private _tooltip;
453
+ /** Offer an icon-only control a name; a control with its own words or name keeps them. */
454
+ private _nameControl;
455
+ render(): TemplateResult<1>;
456
+ }
457
+
458
+ /**
459
+ * `<anduin-collapsible>` — a disclosure widget: an `<anduin-collapsible-trigger>`
460
+ * shows and hides an `<anduin-collapsible-content>`; an optional
461
+ * `<anduin-collapsible-icon>` rotates with it. The root has no layout box.
462
+ *
463
+ * - Uncontrolled (default): `default-open` sets the start state; clicks toggle it.
464
+ * - Controlled: once `open` is set (attribute or property), clicks only fire
465
+ * `anduin-collapsible-open-change`; the consumer updates `open`.
466
+ */
467
+ export declare class AnduinCollapsible extends LitElement {
468
+ static styles: CSSResult;
469
+ /** Controlled open state. Setting it (attribute or property) switches to controlled mode. */
470
+ get open(): boolean;
471
+ set open(value: boolean);
472
+ private _open;
473
+ private _controlled;
474
+ /** Start state in uncontrolled mode. */
475
+ defaultOpen: boolean;
476
+ /** Ignores the trigger: clicks neither toggle nor fire an event. The open state still follows `open` / `default-open`. */
477
+ disabled: boolean;
478
+ /** Animation axis: `vertical` (height, default) or `horizontal` (width). */
479
+ direction: CollapsibleDirection;
480
+ /** `off`, or a duration such as `100ms`. Absent means 150ms. Read at every toggle. */
481
+ animation: string;
482
+ /** The content panel's id — the trigger's `aria-controls`. */
483
+ readonly contentId: string;
484
+ private _uncontrolledOpen;
485
+ get isControlled(): boolean;
486
+ /** The state the collapsible currently shows. */
487
+ get isOpen(): boolean;
488
+ get isHorizontal(): boolean;
489
+ get animationDuration(): number;
490
+ /** Toggles as a trigger click would: ignored while disabled. */
491
+ toggle(): void;
492
+ updated(): void;
493
+ private _broadcast;
494
+ render(): TemplateResult<1>;
495
+ }
496
+
497
+ /**
498
+ * `<anduin-collapsible-content>` — the panel. Always in the DOM (child state is
499
+ * kept); shown / hidden with a height (or width, `direction="horizontal"`)
500
+ * animation. A horizontal panel's inner box fills the host's height.
501
+ */
502
+ export declare class AnduinCollapsibleContent extends LitElement {
503
+ static styles: CSSResult;
504
+ private _link;
505
+ private _el;
506
+ /** The state last applied to the panel; null until the first one, which never animates. */
507
+ private _shown;
508
+ connectedCallback(): void;
509
+ disconnectedCallback(): void;
510
+ firstUpdated(): void;
511
+ private _onState;
512
+ render(): TemplateResult<1>;
513
+ }
514
+
515
+ /**
516
+ * `<anduin-collapsible-icon>` — wraps an icon and rotates it to `rotation`
517
+ * degrees (default 90; negative turns counterclockwise) while open.
518
+ */
519
+ export declare class AnduinCollapsibleIcon extends LitElement {
520
+ static styles: CSSResult;
521
+ /** The angle, in whole degrees, the icon turns to when open. Unreadable values fall back to 90. */
522
+ rotation: string | number;
523
+ private _link;
524
+ private _el;
525
+ private _shown;
526
+ private get _openAngle();
527
+ connectedCallback(): void;
528
+ disconnectedCallback(): void;
529
+ firstUpdated(): void;
530
+ updated(changed: Map<string, unknown>): void;
531
+ private _rest;
532
+ private _onState;
533
+ render(): TemplateResult<1>;
534
+ }
535
+
536
+ /**
537
+ * `<anduin-collapsible-trigger>` — any click inside toggles the root. No layout
538
+ * box. Writes `aria-expanded` / `aria-controls` / `aria-disabled` on itself and
539
+ * on the element slotted in; a plain `span`/`div` with text becomes a
540
+ * `role="button"` tab stop that toggles on Enter / Space.
541
+ */
542
+ export declare class AnduinCollapsibleTrigger extends LitElement {
543
+ static styles: CSSResult;
544
+ private _link;
545
+ private _synced;
546
+ constructor();
547
+ connectedCallback(): void;
548
+ disconnectedCallback(): void;
549
+ private _onKeyDown;
550
+ private _sync;
551
+ /**
552
+ * `anduin-button` keeps its `<button>` in a shadow root and has no
553
+ * `control-expanded` relay, so the expanded state is written onto that inner
554
+ * button directly (aria-controls cannot cross the shadow boundary).
555
+ */
556
+ private _relayIntoButton;
557
+ render(): TemplateResult<1>;
558
+ }
559
+
560
+ /**
561
+ * `<anduin-combobox>` — the design repo's pick-from-list field: a text input that filters a list
562
+ * of predefined options. The value is always one of the items; typed text is only a filter, and
563
+ * the input reverts to the chosen item's label when the list closes.
564
+ *
565
+ * ```html
566
+ * <anduin-combobox>
567
+ * <anduin-combobox-input placeholder="Search..."></anduin-combobox-input>
568
+ * <anduin-combobox-content>
569
+ * <anduin-combobox-empty>No results</anduin-combobox-empty>
570
+ * <anduin-combobox-list>
571
+ * <anduin-combobox-item value="us">United States</anduin-combobox-item>
572
+ * </anduin-combobox-list>
573
+ * </anduin-combobox-content>
574
+ * </anduin-combobox>
575
+ * ```
576
+ *
577
+ * `value` is written back on a pick (so uncontrolled markup works) and `change` fires with
578
+ * `{ value }`; a value set from outside updates the field without firing `change`.
579
+ */
580
+ export declare class AnduinCombobox extends PickerRoot {
581
+ static family: string;
582
+ /** Inline-block, as in the design repo: the field shrink-wraps to the input (an autocomplete is block). */
583
+ static styles: CSSResult;
584
+ private _query;
585
+ firstUpdated(): void;
586
+ updated(changed: PropertyValues<this>): void;
587
+ /** Marks the chosen item and, while closed, shows its label in the field. */
588
+ private _syncSelection;
589
+ protected openQuery(): string;
590
+ protected emptyVisible(query: string, nothingMatched: boolean): boolean;
591
+ protected panelVisible(): boolean;
592
+ protected onOpened(): void;
593
+ protected onClosed(): void;
594
+ protected onItemChosen(value: string): void;
595
+ fieldFocus(): void;
596
+ fieldInput(text: string): void;
597
+ /** Keyboard handling for the input (it keeps focus; the highlight is virtual). */
598
+ fieldKeyDown(e: KeyboardEvent): void;
599
+ }
600
+
601
+ /** `<anduin-combobox-content>` — the floating panel. `width` (px) pins its width; otherwise it shrink-wraps (min 160px). */
602
+ export declare class AnduinComboboxContent extends PickerContent {
603
+ static family: string;
604
+ }
605
+
606
+ /** `<anduin-combobox-empty>` — shown when a non-empty query matches nothing. */
607
+ export declare class AnduinComboboxEmpty extends PickerEmpty {
608
+ static family: string;
609
+ }
610
+
611
+ /** `<anduin-combobox-group>` — a labelled section (`role="group"`); hides itself when every item in it is filtered out. */
612
+ export declare class AnduinComboboxGroup extends PickerGroup {
613
+ static family: string;
614
+ }
615
+
616
+ /** `<anduin-combobox-input>` — the text field that opens, filters and drives the list. Chevron on the right. */
617
+ export declare class AnduinComboboxInput extends PickerField {
618
+ static family: string;
619
+ static styles: CSSResult[];
620
+ private _onKeyDown;
621
+ firstUpdated(): void;
622
+ render(): TemplateResult<1>;
623
+ }
624
+
625
+ /**
626
+ * `<anduin-combobox-item value="…">Label</anduin-combobox-item>` — an option. `label` overrides the
627
+ * text used in the field and by the filter; `description` adds a second line; `disabled` keeps it
628
+ * visible but unpickable. The chosen item shows a check.
629
+ */
630
+ export declare class AnduinComboboxItem extends PickerItem {
631
+ static family: string;
632
+ static styles: CSSResultGroup[];
633
+ /** Secondary line under the label (or slot content into `slot="description"`). */
634
+ description: string;
635
+ private _hasSlottedDescription;
636
+ protected rowClass(): string;
637
+ protected renderContent(): TemplateResult<1>;
638
+ protected renderEnd(): TemplateResult<1>;
639
+ }
640
+
641
+ /** `<anduin-combobox-label>` — a group's heading. */
642
+ export declare class AnduinComboboxLabel extends PickerLabel {
643
+ static family: string;
644
+ }
645
+
646
+ /** `<anduin-combobox-list>` — the listbox. `max-height` caps it (any CSS length); `items` (JS) renders data. */
647
+ export declare class AnduinComboboxList extends PickerList {
648
+ static family: string;
649
+ }
650
+
651
+ /** `<anduin-combobox-separator>` — a divider between groups; hides when left dangling by the filter. */
652
+ export declare class AnduinComboboxSeparator extends PickerSeparator {
653
+ static family: string;
654
+ }
655
+
205
656
  /**
206
657
  * A formatted date input. Displays a pattern such as `MM/dd/yyyy` and lets users
207
658
  * type digits into each segment; clicking a segment highlights it, and focus
@@ -434,6 +885,169 @@ export declare class AnduinDateRangeStart extends AnduinDateRangePanel {
434
885
  protected readonly panelRole: "start";
435
886
  }
436
887
 
888
+ /**
889
+ * Root coordinator. Renders nothing itself (`display: contents`).
890
+ *
891
+ * - Uncontrolled (no `open` attribute): the trigger, overlay, Escape and close
892
+ * parts open/close it directly; `default-open` opens it on mount.
893
+ * - Controlled (`open="true|false"`): a request fires `anduin-dialog-open-change`
894
+ * and then writes `open` itself, like the design repo (so it still closes when
895
+ * the consumer only listens to `anduin-dialog-on-close`).
896
+ */
897
+ export declare class AnduinDialog extends LitElement {
898
+ static styles: CSSResult;
899
+ /** Controlled open state. Leave unset for uncontrolled. */
900
+ open: boolean | undefined;
901
+ /** Uncontrolled: start open. */
902
+ defaultOpen: boolean;
903
+ /** Escape closes the topmost dialog (default true). */
904
+ closeOnEscape: boolean;
905
+ /** Overlay click closes. Unset: true, except for an `alert` content. */
906
+ closeOnClickOutside: boolean | undefined;
907
+ private _visible;
908
+ private _focusFrame;
909
+ /** Whether the dialog is currently shown. */
910
+ get isOpen(): boolean;
911
+ private get _controlled();
912
+ /** This dialog's own content (never a nested dialog's). */
913
+ get contentElement(): AnduinDialogContent | null;
914
+ private get _trigger();
915
+ connectedCallback(): void;
916
+ disconnectedCallback(): void;
917
+ protected willUpdate(changed: PropertyValues<this>): void;
918
+ render(): TemplateResult<1>;
919
+ /** Open or close as a user action would: controlled mode fires `anduin-dialog-open-change` first. */
920
+ requestOpen(wantOpen: boolean): void;
921
+ toggle(): void;
922
+ /** Overlay click: close, or shake when click-outside is off. */
923
+ requestCloseFromOutside(): void;
924
+ private get _closesOnClickOutside();
925
+ private _show;
926
+ private _hide;
927
+ private _attach;
928
+ private _detach;
929
+ /** Focus goes back to the trigger's control after the closed frame renders. */
930
+ private _focusTrigger;
931
+ private _onDocKeyDown;
932
+ /** ACL interop: an `anduin-modal-close` inside the dialog closes it too. */
933
+ private _onLegacyClose;
934
+ }
935
+
936
+ /** The scrolling middle region. `flush` drops its 16px 24px padding. */
937
+ export declare class AnduinDialogBody extends LitElement {
938
+ static styles: CSSResult;
939
+ flush: boolean;
940
+ render(): TemplateResult<1>;
941
+ }
942
+
943
+ /** Closes its dialog when anything inside it is clicked (both modes; ignores close-on-click-outside). */
944
+ export declare class AnduinDialogClose extends LitElement {
945
+ static styles: CSSResult;
946
+ connectedCallback(): void;
947
+ disconnectedCallback(): void;
948
+ private _onClick;
949
+ render(): TemplateResult<1>;
950
+ }
951
+
952
+ /**
953
+ * The overlay + panel. Hidden until its dialog opens; then fixed over the
954
+ * viewport, body scroll locked, focus moved in and trapped.
955
+ */
956
+ export declare class AnduinDialogContent extends LitElement {
957
+ static styles: CSSResult[];
958
+ /** small (480) | medium (720) | large (960) | extraLarge (1160) | full | fitContent, or any CSS width. */
959
+ width: DialogWidth | string;
960
+ /** fill (75vh), or any CSS height. Unset: fits content. */
961
+ height: DialogHeight | string;
962
+ /** Move focus into the dialog on open (default true). */
963
+ autoFocus: boolean;
964
+ /** Alert dialog: role="alertdialog", focus on the first close action, overlay click does not close. */
965
+ alert: boolean;
966
+ /** Explicit accessible name; overrides the title. */
967
+ dialogLabel: string | null;
968
+ private _leaving;
969
+ private _shown;
970
+ private _holdsScrollLock;
971
+ private _leaveTimer;
972
+ private _focusFrame;
973
+ private get _dialog();
974
+ private get _panel();
975
+ connectedCallback(): void;
976
+ disconnectedCallback(): void;
977
+ protected willUpdate(changed: PropertyValues<this>): void;
978
+ protected updated(changed: PropertyValues<this>): void;
979
+ private _applySizing;
980
+ /** Follow the owning dialog's open state (called by the root). */
981
+ syncOpen(): void;
982
+ private _enter;
983
+ private _exit;
984
+ private _releaseScroll;
985
+ /** Own descendants matching `selector` (never a nested dialog's). */
986
+ private _own;
987
+ /** `[autofocus]` / `[data-autofocus]` first, then (alert) the first close action, else the panel. */
988
+ private _focusInitial;
989
+ /** Keep Tab / Shift+Tab inside the panel (called by the root while topmost). */
990
+ trapTab(e: KeyboardEvent): void;
991
+ /** Play the "can't dismiss" nudge (overlay click with click-outside off). */
992
+ shake(): void;
993
+ /**
994
+ * Name / describe the panel from this content's own title and description.
995
+ * IDREFs cannot cross the shadow boundary, so their text is copied into
996
+ * `aria-label` / `aria-description`, as the design repo does.
997
+ */
998
+ refreshAccessibleText(): void;
999
+ private _onOverlayClick;
1000
+ render(): TemplateResult<1>;
1001
+ }
1002
+
1003
+ /** Supporting text under the title; also becomes the panel's accessible description. */
1004
+ export declare class AnduinDialogDescription extends DialogTextElement {
1005
+ static styles: CSSResult;
1006
+ render(): TemplateResult<1>;
1007
+ }
1008
+
1009
+ /** Right-aligned action row. `divider` draws a line above it. */
1010
+ export declare class AnduinDialogFooter extends LitElement {
1011
+ static styles: CSSResult;
1012
+ divider: boolean;
1013
+ render(): TemplateResult<1>;
1014
+ }
1015
+
1016
+ /** Title + description block. `divider` draws a line below it. */
1017
+ export declare class AnduinDialogHeader extends LitElement {
1018
+ static styles: CSSResult;
1019
+ divider: boolean;
1020
+ render(): TemplateResult<1>;
1021
+ }
1022
+
1023
+ /**
1024
+ * A full-viewport backdrop around its children; a click on the backdrop itself
1025
+ * (not on the children) asks the dialog to close. `anduin-dialog-content`
1026
+ * already draws its own overlay; this is for custom compositions.
1027
+ */
1028
+ export declare class AnduinDialogOverlay extends LitElement {
1029
+ static styles: CSSResult;
1030
+ private _onClick;
1031
+ render(): TemplateResult<1>;
1032
+ }
1033
+
1034
+ /** `<h2>` heading with a built-in close (×) button; `show-close-button="false"` hides it. */
1035
+ export declare class AnduinDialogTitle extends DialogTextElement {
1036
+ static styles: CSSResult;
1037
+ showCloseButton: boolean;
1038
+ render(): TemplateResult<1>;
1039
+ }
1040
+
1041
+ /** Wraps the control that opens the dialog; click / Enter / Space toggles it. */
1042
+ export declare class AnduinDialogTrigger extends LitElement {
1043
+ static styles: CSSResult;
1044
+ connectedCallback(): void;
1045
+ disconnectedCallback(): void;
1046
+ private _onClick;
1047
+ private _onKeyDown;
1048
+ render(): TemplateResult<1>;
1049
+ }
1050
+
437
1051
  export declare class AnduinDivider extends LitElement {
438
1052
  static styles: CSSResult;
439
1053
  direction: string;
@@ -890,34 +1504,219 @@ export declare class AnduinLoadingState extends LitElement {
890
1504
  export declare class AnduinMenu extends LitElement {
891
1505
  static styles: CSSResult;
892
1506
  open: boolean;
893
- placement: 'bottom-start' | 'bottom-end' | 'bottom' | 'top-start' | 'top-end' | 'top';
1507
+ /**
1508
+ * Old API: `bottom-start | bottom | bottom-end | top-start | top | top-end`. With the design parts, any of the
1509
+ * 12 design placements (`top|bottom|left|right` × `start|center|end`).
1510
+ */
1511
+ placement: string;
1512
+ defaultOpen: boolean;
1513
+ disabled: boolean;
1514
+ offsetX: number;
1515
+ offsetY: number;
1516
+ /** True when the children are design parts rather than `slot="trigger"` + items. */
1517
+ private _design;
894
1518
  private _triggerEl;
895
1519
  private _panelEl;
896
1520
  private _onTriggerClick;
1521
+ /** Whether the design parts are in use (rather than `slot="trigger"`). */
1522
+ get isDesignMode(): boolean;
1523
+ private _detectMode;
1524
+ private _ownParts;
1525
+ /* Excluded from this release type: triggerPart */
1526
+ private get _contentPart();
1527
+ /** Design API: ask for a new open state. Fires `anduin-menu-open-change`, then applies it. */
1528
+ requestOpen(want: boolean): void;
1529
+ /* Excluded from this release type: toggleFromTrigger */
1530
+ /* Excluded from this release type: openAndFocus */
1531
+ private _overlay;
1532
+ private _onDesignPointerDown;
1533
+ private _onItemCommit;
1534
+ private _applyDesignOpen;
897
1535
  private _onOutsideClick;
898
1536
  private _onItemClick;
899
1537
  private _onScrollOrResize;
900
1538
  connectedCallback(): void;
901
1539
  disconnectedCallback(): void;
1540
+ private _defaultOpenApplied;
1541
+ willUpdate(changed: Map<string, unknown>): void;
902
1542
  updated(changed: Map<string, unknown>): void;
903
1543
  private _updatePosition;
904
1544
  render(): TemplateResult<1>;
905
1545
  }
906
1546
 
907
- export declare class AnduinMenuItem extends LitElement {
908
- static styles: CSSResult;
909
- icon: string;
910
- variant: 'default' | 'danger';
911
- disabled: boolean;
912
- private _onClick;
1547
+ /**
1548
+ * The menu popup (`role="menu"`), shown in the top layer next to the trigger. With `standalone`, it renders inline
1549
+ * with no popup chrome — for a menu list inside a popover or a panel.
1550
+ */
1551
+ export declare class AnduinMenuContent extends MenuSurface {
1552
+ static styles: CSSResult[];
1553
+ /** Accessible name; defaults to the trigger's text. */
1554
+ label: string;
1555
+ /** Render inline, without a trigger or popup. Read once, on connect. */
1556
+ standalone: boolean;
1557
+ firstUpdated(): void;
1558
+ protected _beforeShow(): void;
1559
+ protected _anchor(): {
1560
+ ref: HTMLElement;
1561
+ placement: "top-start" | "top-center" | "top-end" | "right-start" | "right-center" | "right-end" | "bottom-start" | "bottom-center" | "bottom-end" | "left-start" | "left-center" | "left-end";
1562
+ dx: number;
1563
+ dy: number;
1564
+ } | null;
913
1565
  render(): TemplateResult<1>;
914
1566
  }
915
1567
 
916
- export declare class AnduinModal extends LitElement {
1568
+ /** Groups related items (`role="group"`), usually under an `anduin-menu-label`. */
1569
+ export declare class AnduinMenuGroup extends LitElement {
917
1570
  static styles: CSSResult;
918
- open: boolean;
919
- heading: string;
920
- hideHeader: boolean;
1571
+ render(): TemplateResult<1>;
1572
+ }
1573
+
1574
+ /**
1575
+ * A menu item. Old API: `icon`, `variant="default|danger"`, `disabled`, fires `anduin-menu-item:click`.
1576
+ * Design API adds `start-icon`, `variant="gray"`, `checked` (+ `radio`), `inset`, `loading`, `href` (+ `open-new-tab`),
1577
+ * `size="medium|free"`, `description` (or `slot="description"`), `label`, and the cancelable
1578
+ * `anduin-menu-item-selected` event. Inside `anduin-menu-content` it also takes the design repo's metrics
1579
+ * (32px row, 8px icon gap) and roving focus.
1580
+ */
1581
+ export declare class AnduinMenuItem extends LitElement {
1582
+ static shadowRootOptions: {
1583
+ delegatesFocus: boolean;
1584
+ clonable?: boolean;
1585
+ customElementRegistry?: CustomElementRegistry;
1586
+ mode: ShadowRootMode;
1587
+ serializable?: boolean;
1588
+ slotAssignment?: SlotAssignmentMode;
1589
+ };
1590
+ static styles: CSSResult;
1591
+ /** Old API: icon before the label. Same as `start-icon`. */
1592
+ icon: string;
1593
+ /** Design API: icon before the label. */
1594
+ startIcon: string;
1595
+ /** `default` / `gray` (same thing) or `danger`. */
1596
+ variant: 'default' | 'gray' | 'danger';
1597
+ disabled: boolean;
1598
+ /** Present (any value but `"false"` means on): a checkable item showing a check. Absent: a plain item. */
1599
+ checked: boolean | undefined;
1600
+ /** With `checked`: one of a set where a single option is on (announced as a radio item). */
1601
+ radio: boolean;
1602
+ /** Indent the label to line up with items that have an icon. */
1603
+ inset: boolean;
1604
+ /** Busy: a spinner replaces the icon and activation is blocked. */
1605
+ loading: boolean;
1606
+ /** Render as a link. */
1607
+ href: string;
1608
+ openNewTab: boolean;
1609
+ /** `medium` (32px row, default) or `free` (content height). */
1610
+ size: 'medium' | 'free';
1611
+ /** Second line under the label. Rich content can go in `slot="description"` instead. */
1612
+ description: string;
1613
+ /** Accessible name for the item when its text isn't enough. */
1614
+ label: string;
1615
+ private _design;
1616
+ private _slottedDescription;
1617
+ connectedCallback(): void;
1618
+ disconnectedCallback(): void;
1619
+ private _onHostClickCapture;
1620
+ private _onClick;
1621
+ private _onKeyDown;
1622
+ private _onPointerEnter;
1623
+ private _onDescriptionSlotChange;
1624
+ render(): TemplateResult<1>;
1625
+ }
1626
+
1627
+ /** A non-interactive heading inside a menu. */
1628
+ export declare class AnduinMenuLabel extends LitElement {
1629
+ static styles: CSSResult;
1630
+ render(): TemplateResult<1>;
1631
+ }
1632
+
1633
+ /** A 1px divider between menu sections. */
1634
+ export declare class AnduinMenuSeparator extends LitElement {
1635
+ static styles: CSSResult;
1636
+ render(): TemplateResult<1>;
1637
+ }
1638
+
1639
+ /**
1640
+ * A nested menu: holds an `anduin-menu-sub-trigger` and an `anduin-menu-sub-content`. Opens on hover (and stays
1641
+ * open while the pointer is over the trigger or the panel), on click, and on ArrowRight / Enter / Space.
1642
+ */
1643
+ export declare class AnduinMenuSub extends LitElement {
1644
+ static styles: CSSResult;
1645
+ /** Where the sub-menu opens relative to its trigger (default `right-start`; flips when there's no room). */
1646
+ placement: string;
1647
+ private _open;
1648
+ private _closeTimer;
1649
+ get open(): boolean;
1650
+ private _own;
1651
+ /* Excluded from this release type: triggerPart */
1652
+ /* Excluded from this release type: contentPart */
1653
+ setOpen(open: boolean): void;
1654
+ /** Opens and moves focus to the first item of the sub-menu. */
1655
+ openAndFocusFirst(): Promise<void>;
1656
+ /** Closes and returns focus to the sub-trigger. */
1657
+ closeAndFocusTrigger(): void;
1658
+ /* Excluded from this release type: scheduleClose */
1659
+ /* Excluded from this release type: cancelClose */
1660
+ disconnectedCallback(): void;
1661
+ render(): TemplateResult<1>;
1662
+ }
1663
+
1664
+ /** The panel of a sub-menu. ArrowLeft or Escape inside it closes it and returns focus to the sub-trigger. */
1665
+ export declare class AnduinMenuSubContent extends MenuSurface {
1666
+ static styles: CSSResult;
1667
+ private get _sub();
1668
+ firstUpdated(): void;
1669
+ protected _anchor(): {
1670
+ ref: AnduinMenuSubTrigger;
1671
+ placement: "top-start" | "top-center" | "top-end" | "right-start" | "right-center" | "right-end" | "bottom-start" | "bottom-center" | "bottom-end" | "left-start" | "left-center" | "left-end";
1672
+ dx: number;
1673
+ dy: number;
1674
+ } | null;
1675
+ protected _handleOwnKey(e: KeyboardEvent): boolean;
1676
+ private _onPointerEnter;
1677
+ private _onPointerLeave;
1678
+ render(): TemplateResult<1>;
1679
+ }
1680
+
1681
+ /** The item that opens a sub-menu: an item row with a trailing chevron. */
1682
+ export declare class AnduinMenuSubTrigger extends LitElement {
1683
+ static shadowRootOptions: {
1684
+ delegatesFocus: boolean;
1685
+ clonable?: boolean;
1686
+ customElementRegistry?: CustomElementRegistry;
1687
+ mode: ShadowRootMode;
1688
+ serializable?: boolean;
1689
+ slotAssignment?: SlotAssignmentMode;
1690
+ };
1691
+ static styles: CSSResult;
1692
+ disabled: boolean;
1693
+ inset: boolean;
1694
+ startIcon: string;
1695
+ private _expanded;
1696
+ private get _sub();
1697
+ /* Excluded from this release type: setExpanded */
1698
+ private _onPointerEnter;
1699
+ private _onPointerLeave;
1700
+ private _onClick;
1701
+ private _onKeyDown;
1702
+ render(): TemplateResult<1>;
1703
+ }
1704
+
1705
+ /** Wraps the element that opens the menu. Click toggles; Enter/Space/ArrowDown open on the first item, ArrowUp on the last. */
1706
+ export declare class AnduinMenuTrigger extends LitElement {
1707
+ static styles: CSSResult;
1708
+ connectedCallback(): void;
1709
+ disconnectedCallback(): void;
1710
+ private _onClick;
1711
+ private _onKeyDown;
1712
+ render(): TemplateResult<1>;
1713
+ }
1714
+
1715
+ export declare class AnduinModal extends LitElement {
1716
+ static styles: CSSResult[];
1717
+ open: boolean;
1718
+ heading: string;
1719
+ hideHeader: boolean;
921
1720
  hideFooter: boolean;
922
1721
  maxWidth: "480" | "600" | "720" | "960" | "1160" | string;
923
1722
  fullscreen: boolean;
@@ -974,15 +1773,86 @@ export declare class AnduinNavigation extends LitElement {
974
1773
  value: string | null;
975
1774
  theme: NavigationTheme;
976
1775
  alignment: NavigationAlignment;
977
- private internalValue;
978
- private get isControlled();
979
- private get selection();
1776
+ protected internalValue: string;
1777
+ protected get isControlled(): boolean;
1778
+ protected get selection(): string;
980
1779
  connectedCallback(): void;
981
1780
  disconnectedCallback(): void;
982
1781
  updated(): void;
983
- private get items();
984
- private syncItems;
1782
+ protected get items(): AnduinNavigationItem[];
1783
+ protected syncItems(): void;
985
1784
  private onItemClick;
1785
+ /** Reacts to an item activation. Subclasses (e.g. anduin-navigation-bar) override the event contract. */
1786
+ protected handleItemClick(clicked: string): void;
1787
+ render(): TemplateResult<1>;
1788
+ }
1789
+
1790
+ /**
1791
+ * The design repo's `anduin-navigation-bar`: primary navigation between peer pages.
1792
+ *
1793
+ * Selection is uncontrolled with `default-value`, controlled with `value`, and falls back to the first
1794
+ * item when neither is set. Every activation fires `anduin-navigation-bar-value-change` (`detail: { value }`).
1795
+ * When the items no longer fit, previous/next arrow buttons appear and the active item is scrolled into view.
1796
+ * Items stay ordinary light-DOM children, so they can be wrapped (e.g. in a tooltip trigger).
1797
+ *
1798
+ * Built on `anduin-navigation`'s selection model; `anduin-navigation` itself is unchanged.
1799
+ */
1800
+ export declare class AnduinNavigationBar extends AnduinNavigation {
1801
+ static styles: CSSResult;
1802
+ private overflowing;
1803
+ private viewport;
1804
+ private resizeObserver?;
1805
+ private mutationObserver?;
1806
+ private layoutFrame;
1807
+ connectedCallback(): void;
1808
+ disconnectedCallback(): void;
1809
+ willUpdate(changed: Map<PropertyKey, unknown>): void;
1810
+ firstUpdated(): void;
1811
+ /** Items owned by this bar (nested bars keep their own). */
1812
+ protected get items(): AnduinNavigationBarItem[];
1813
+ protected syncItems(): void;
1814
+ protected handleItemClick(clicked: string): void;
1815
+ private refreshObserved;
1816
+ private scheduleLayout;
1817
+ private updateLayout;
1818
+ private scrollOneItem;
1819
+ private scheduleScrollToValue;
1820
+ private scrollToItem;
1821
+ private renderArrow;
1822
+ render(): TemplateResult<1>;
1823
+ }
1824
+
1825
+ /**
1826
+ * The design repo's `anduin-navigation-bar-item`. Renders a native link when `href` is set, otherwise a
1827
+ * native button. `selected` (when present) overrides the bar's selection for this item.
1828
+ */
1829
+ export declare class AnduinNavigationBarItem extends AnduinNavigationItem {
1830
+ static shadowRootOptions: {
1831
+ delegatesFocus: boolean;
1832
+ clonable?: boolean;
1833
+ customElementRegistry?: CustomElementRegistry;
1834
+ mode: ShadowRootMode;
1835
+ serializable?: boolean;
1836
+ slotAssignment?: SlotAssignmentMode;
1837
+ };
1838
+ static styles: CSSResult;
1839
+ /** Design boolean: `disabled="false"` is enabled. */
1840
+ disabled: boolean;
1841
+ /** Opens `href` in a new tab (`target="_blank"`, `rel="noreferrer noopener"`). */
1842
+ openNewTab: boolean;
1843
+ /**
1844
+ * Per-item selection override (attribute `selected`, design boolean). Unset (`null` / `undefined`, or the
1845
+ * attribute removed) means "follow the bar". Typed `boolean` to stay compatible with the base item.
1846
+ */
1847
+ selected: boolean;
1848
+ /** Set by the parent anduin-navigation-bar; not a consumer-facing attribute. */
1849
+ barSelected: boolean;
1850
+ /** Mirrored onto the inner control, e.g. to name an icon-only item. */
1851
+ controlLabel: string | null;
1852
+ /** Whether the item renders as selected: the `selected` override, else the bar's value. */
1853
+ get isSelected(): boolean;
1854
+ updated(): void;
1855
+ private onControlClick;
986
1856
  render(): TemplateResult<1>;
987
1857
  }
988
1858
 
@@ -1002,6 +1872,57 @@ export declare class AnduinNavigationItem extends LitElement {
1002
1872
  render(): TemplateResult<1>;
1003
1873
  }
1004
1874
 
1875
+ /**
1876
+ * `<anduin-non-ideal-state>` — the design repo's empty / unavailable / error state.
1877
+ *
1878
+ * Fills its parent (`width` and `height: 100%`) and centers its regions in a column with a 12px gap. Compose it
1879
+ * from any of `anduin-non-ideal-state-icon`, `-title`, `-description` and `-action`; a region left out takes no
1880
+ * space. Give the parent an intentional height.
1881
+ */
1882
+ export declare class AnduinNonIdealState extends LitElement {
1883
+ static styles: CSSResult;
1884
+ render(): TemplateResult<1>;
1885
+ }
1886
+
1887
+ /** `<anduin-non-ideal-state-action>` — action region; holds one or more buttons or links, intentionally unstyled. */
1888
+ export declare class AnduinNonIdealStateAction extends LitElement {
1889
+ static styles: CSSResult;
1890
+ render(): TemplateResult<1>;
1891
+ }
1892
+
1893
+ /**
1894
+ * `<anduin-non-ideal-state-description>` — secondary text in the muted foreground colour, 13px / 20px. (The design
1895
+ * repo inherits both from its page base, which is 13px / 20px; ACL pages do not set a body line-height, so it is
1896
+ * explicit here.)
1897
+ */
1898
+ export declare class AnduinNonIdealStateDescription extends LitElement {
1899
+ static styles: CSSResult;
1900
+ render(): TemplateResult<1>;
1901
+ }
1902
+
1903
+ /**
1904
+ * `<anduin-non-ideal-state-icon>` — icon region; its content is intentionally unstyled.
1905
+ *
1906
+ * Sets `aria-hidden="true"` on itself unless the consumer already wrote an `aria-hidden` (e.g. `"false"` for an
1907
+ * icon that carries meaning the title does not).
1908
+ */
1909
+ export declare class AnduinNonIdealStateIcon extends LitElement {
1910
+ static styles: CSSResult;
1911
+ connectedCallback(): void;
1912
+ render(): TemplateResult<1>;
1913
+ }
1914
+
1915
+ /**
1916
+ * `<anduin-non-ideal-state-title>` — the title, exposed as a heading (`role="heading"`, `aria-level` from
1917
+ * `heading-level`, default 2). 17px / 28px semibold.
1918
+ */
1919
+ export declare class AnduinNonIdealStateTitle extends LitElement {
1920
+ static styles: CSSResult;
1921
+ /** Heading level, 1–6. Anything else falls back to 2. */
1922
+ headingLevel: number | string | null;
1923
+ render(): TemplateResult<1>;
1924
+ }
1925
+
1005
1926
  /**
1006
1927
  * Page navigation controls for paginated content. Renders a row of page-number
1007
1928
  * buttons with previous/next navigators, ellipsis menus for skipped ranges, and
@@ -1060,20 +1981,49 @@ export declare class AnduinPaginationLastPage extends BoundaryButton {
1060
1981
  export declare class AnduinPopover extends LitElement {
1061
1982
  static styles: CSSResult;
1062
1983
  open: boolean;
1063
- placement: 'bottom-start' | 'bottom-end' | 'bottom' | 'top-start' | 'top-end' | 'top';
1984
+ /**
1985
+ * Old API: `bottom-start | bottom | bottom-end | top-start | top | top-end`. With the design parts, any of the
1986
+ * 12 design placements (`top|bottom|left|right` × `start|center|end`).
1987
+ */
1988
+ placement: string;
1064
1989
  fullWidth: boolean;
1990
+ defaultOpen: boolean;
1991
+ disabled: boolean;
1992
+ offsetX: number;
1993
+ offsetY: number;
1994
+ closeOnEscape: boolean;
1995
+ closeOnClickOutside: boolean;
1996
+ /** True when the children are design parts rather than `slot="trigger"` + panel content. */
1997
+ private _design;
1065
1998
  private _visible;
1066
1999
  private _closing;
1067
2000
  private _triggerEl;
1068
2001
  private _panelEl;
1069
2002
  private _closeTransitionEndHandler;
1070
2003
  private _onTriggerClick;
2004
+ /** Whether the design parts are in use (rather than `slot="trigger"`). */
2005
+ get isDesignMode(): boolean;
2006
+ private _detectMode;
2007
+ private _ownParts;
2008
+ /* Excluded from this release type: triggerPart */
2009
+ private get _contentPart();
2010
+ /**
2011
+ * Design API: ask for a new open state. Fires `anduin-popover-open-change`, then applies it. (The design repo's
2012
+ * controlled mode writes `open` itself as well, so controlled and uncontrolled behave alike.)
2013
+ */
2014
+ requestOpen(want: boolean): void;
2015
+ /* Excluded from this release type: toggleFromTrigger */
2016
+ private _overlay;
2017
+ private _onDesignPointerDown;
1071
2018
  private _onOutsideClick;
1072
2019
  private _onScrollOrResize;
1073
2020
  private _onPopoverClose;
1074
2021
  connectedCallback(): void;
1075
2022
  disconnectedCallback(): void;
2023
+ private _defaultOpenApplied;
2024
+ willUpdate(changed: Map<string, unknown>): void;
1076
2025
  updated(changed: Map<string, unknown>): void;
2026
+ private _applyDesignOpen;
1077
2027
  private _cancelCloseAnimation;
1078
2028
  private _startCloseAnimation;
1079
2029
  private _updatePosition;
@@ -1086,6 +2036,52 @@ export declare class AnduinPopoverClose extends LitElement {
1086
2036
  render(): TemplateResult<1>;
1087
2037
  }
1088
2038
 
2039
+ /**
2040
+ * The floating panel. Promoted to the top layer (Popover API), positioned against the trigger every frame while
2041
+ * open, flips when there's no room, traps Tab and moves focus inside on open (unless `auto-focus="false"`).
2042
+ */
2043
+ export declare class AnduinPopoverContent extends LitElement {
2044
+ static styles: CSSResult;
2045
+ /** Move focus to the first focusable element on open (default true). */
2046
+ autoFocus: boolean;
2047
+ /** Marks the popup `aria-modal="true"`. */
2048
+ modal: boolean;
2049
+ /** Accessible name; defaults to the text of an `anduin-popover-title` inside. */
2050
+ label: string;
2051
+ private _popup;
2052
+ private _active;
2053
+ private _shown;
2054
+ private _stopTracking;
2055
+ private _focusFrame;
2056
+ /* Excluded from this release type: setActive */
2057
+ firstUpdated(): void;
2058
+ connectedCallback(): void;
2059
+ disconnectedCallback(): void;
2060
+ private _onKeyDown;
2061
+ private _sync;
2062
+ private _accessibleName;
2063
+ private _show;
2064
+ private _hide;
2065
+ private _position;
2066
+ render(): TemplateResult<1>;
2067
+ }
2068
+
2069
+ /** Heading for the content panel, with a built-in close (×) button. */
2070
+ export declare class AnduinPopoverTitle extends LitElement {
2071
+ static styles: CSSResult;
2072
+ render(): TemplateResult<1>;
2073
+ }
2074
+
2075
+ /** Wraps the element that opens the popover. Click, Enter and Space toggle it. */
2076
+ export declare class AnduinPopoverTrigger extends LitElement {
2077
+ static styles: CSSResult;
2078
+ connectedCallback(): void;
2079
+ disconnectedCallback(): void;
2080
+ private _onClick;
2081
+ private _onKeyDown;
2082
+ render(): TemplateResult<1>;
2083
+ }
2084
+
1089
2085
  export declare class AnduinProgress extends LitElement {
1090
2086
  static styles: CSSResult;
1091
2087
  percent: string;
@@ -1148,40 +2144,497 @@ export declare class AnduinResizableHandle extends LitElement {
1148
2144
  render(): TemplateResult<1>;
1149
2145
  }
1150
2146
 
1151
- export declare class AnduinResizablePanel extends LitElement {
2147
+ export declare class AnduinResizablePanel extends LitElement {
2148
+ static styles: CSSResult;
2149
+ /** Initial share of the group: a percentage ("50%") or a fixed pixel size ("200px"). */
2150
+ defaultSize: string;
2151
+ /** Smallest size a drag may shrink this panel to ("20%" or "150px"). */
2152
+ minSize: string;
2153
+ /** Largest size a drag may grow this panel to ("80%" or "600px"). */
2154
+ maxSize: string;
2155
+ private applied;
2156
+ updated(changed: Map<string, unknown>): void;
2157
+ private applyDefaultSize;
2158
+ /** Switch to the proportional model with the given flex-grow weight. */
2159
+ setGrow(grow: number): void;
2160
+ axisSize(vertical: boolean): number;
2161
+ minPx(groupSize: number): number;
2162
+ maxPx(groupSize: number): number;
2163
+ render(): TemplateResult<1>;
2164
+ }
2165
+
2166
+ export declare class AnduinResizablePanelGroup extends LitElement {
2167
+ static styles: CSSResult;
2168
+ orientation: ResizeOrientation;
2169
+ connectedCallback(): void;
2170
+ get isVertical(): boolean;
2171
+ /** Size of the group along its main axis, in px. */
2172
+ get axisSize(): number;
2173
+ get panels(): AnduinResizablePanel[];
2174
+ updated(): void;
2175
+ /**
2176
+ * Convert every panel to the proportional (flex-grow) model based on its
2177
+ * current rendered size, so fixed-pixel panels "fold into" the weighted
2178
+ * model when a resize begins.
2179
+ */
2180
+ normalizeToGrow(): void;
2181
+ render(): TemplateResult<1>;
2182
+ }
2183
+
2184
+ /**
2185
+ * `<anduin-select>` — the design repo's compound single-value select: a free-form
2186
+ * `<anduin-select-trigger>` (usually an `anduin-button`) and an `<anduin-select-content>` popup holding an
2187
+ * optional search input, header/footer, empty state and an `<anduin-select-list>` of items.
2188
+ *
2189
+ * The parts are light-DOM children that find this root with `closest()`; the root drives them imperatively
2190
+ * (selected/highlighted/hidden state, the selected label, the clear ✕) whenever its value, the query or the
2191
+ * markup changes. `anduin-dropdown` (options as a JS array) is a separate element and keeps its own API.
2192
+ */
2193
+ export declare class AnduinSelect extends LitElement {
2194
+ static styles: CSSResult[];
2195
+ /** The selected item's value. Set it to control the select; a pick also writes it back (reflected). */
2196
+ value: string;
2197
+ /** Where the popup opens relative to the trigger. */
2198
+ placement: SelectPlacement;
2199
+ /** While true the list shows a spinner and selection/navigation pause. `loading="false"` is false. */
2200
+ loading: boolean;
2201
+ /** Fixed row height in px for every item (default 32). */
2202
+ itemHeight: number | null;
2203
+ private _announcement;
2204
+ private _open;
2205
+ private _query;
2206
+ private _highlighted;
2207
+ private _ignorePointer;
2208
+ private _typeahead;
2209
+ private _typeaheadTimer;
2210
+ private _syncQueued;
2211
+ private _focusFrame;
2212
+ private _rankedOrder;
2213
+ private _observer;
2214
+ /** Whether the dropdown is open. */
2215
+ get open(): boolean;
2216
+ connectedCallback(): void;
2217
+ disconnectedCallback(): void;
2218
+ protected updated(changed: PropertyValues<this>): void;
2219
+ render(): TemplateResult<1>;
2220
+ private _own;
2221
+ /* Excluded from this release type: _trigger */
2222
+ /* Excluded from this release type: _content */
2223
+ /* Excluded from this release type: _list */
2224
+ /* Excluded from this release type: _input */
2225
+ /* Excluded from this release type: _items */
2226
+ /** The label the trigger shows for a value: the matching item's label, else the raw value. */
2227
+ labelFor(value: string): string;
2228
+ /** Re-derive every part's state on the next microtask (parts call this when they connect or change). */
2229
+ requestSync(): void;
2230
+ private _sync;
2231
+ private _applyFilter;
2232
+ /** The accessible name: the trigger's `label`/`aria-label`, an enclosing field's label, else the placeholder. */
2233
+ private _comboboxName;
2234
+ private _syncTrigger;
2235
+ /** Opens the dropdown. */
2236
+ show(): void;
2237
+ /** Closes the dropdown without changing the value. */
2238
+ hide(): void;
2239
+ /** Opens a closed dropdown, closes an open one. */
2240
+ toggle(): void;
2241
+ private _close;
2242
+ private _teardownOpen;
2243
+ /** Clears the value (firing `change` with `''`), as the ✕ and Delete/Backspace do. */
2244
+ clear(): void;
2245
+ private _selectValue;
2246
+ private _focusTrigger;
2247
+ private _onItemSelected;
2248
+ private _onDocPointerDown;
2249
+ private _onDocPointerMove;
2250
+ private _onDocKeyDown;
2251
+ private _navigable;
2252
+ private _setHighlight;
2253
+ private _scrollIntoView;
2254
+ private _move;
2255
+ private _highlightEdge;
2256
+ private _selectHighlighted;
2257
+ private _typeaheadKey;
2258
+ /* Excluded from this release type: _hover */
2259
+ /* Excluded from this release type: _setQuery */
2260
+ /* Excluded from this release type: _onTriggerKeyDown */
2261
+ /* Excluded from this release type: _onInputKeyDown */
2262
+ /* Excluded from this release type: _onTriggerClick */
2263
+ }
2264
+
2265
+ /** A small ✕ for the trigger, shown only while a value is selected. Clicking it clears without opening. */
2266
+ export declare class AnduinSelectClear extends LitElement {
2267
+ static styles: CSSResult;
2268
+ visible: boolean;
2269
+ connectedCallback(): void;
2270
+ disconnectedCallback(): void;
2271
+ private _onClick;
2272
+ render(): TemplateResult<1>;
2273
+ }
2274
+
2275
+ /**
2276
+ * The floating panel. Its light-DOM children (input, header, empty, list, footer) are slotted into a top-layer
2277
+ * popover positioned against the trigger. `width` pins a width in px (or any CSS length); otherwise it
2278
+ * shrink-wraps with a 160px minimum.
2279
+ */
2280
+ export declare class AnduinSelectContent extends LitElement {
2281
+ static styles: CSSResult;
2282
+ width: string | null;
2283
+ private _anchor;
2284
+ private _placement;
2285
+ private _list;
2286
+ private _frame;
2287
+ private _last;
2288
+ /* Excluded from this release type: popup */
2289
+ get isOpen(): boolean;
2290
+ connectedCallback(): void;
2291
+ disconnectedCallback(): void;
2292
+ protected updated(changed: PropertyValues<this>): void;
2293
+ render(): TemplateResult<1>;
2294
+ /* Excluded from this release type: _show */
2295
+ /* Excluded from this release type: _hide */
2296
+ private _reposition;
2297
+ }
2298
+
2299
+ /** Shown in place of the list when the search matches nothing. */
2300
+ export declare class AnduinSelectEmpty extends LitElement {
2301
+ static styles: CSSResult;
2302
+ connectedCallback(): void;
2303
+ render(): TemplateResult<1>;
2304
+ }
2305
+
2306
+ /** Content pinned below the list, with a full-width divider above it. */
2307
+ export declare class AnduinSelectFooter extends LitElement {
2308
+ static styles: CSSResult;
2309
+ render(): TemplateResult<1>;
2310
+ }
2311
+
2312
+ /** Groups items under an `<anduin-select-label>`; hides when the search leaves it empty. */
2313
+ export declare class AnduinSelectGroup extends LitElement {
2314
+ static styles: CSSResult;
2315
+ connectedCallback(): void;
2316
+ render(): TemplateResult<1>;
2317
+ }
2318
+
2319
+ /** Content pinned above the list, with a full-width divider below it. */
2320
+ export declare class AnduinSelectHeader extends LitElement {
2321
+ static styles: CSSResult;
2322
+ render(): TemplateResult<1>;
2323
+ }
2324
+
2325
+ /**
2326
+ * The search field inside the content. Typing filters the items by label (case-insensitive substring), or by
2327
+ * a custom `filter` / `rank` function set as a JS property. `size`: small (24px) / default (32px) / large (40px).
2328
+ */
2329
+ export declare class AnduinSelectInput extends LitElement {
2330
+ static styles: CSSResult;
2331
+ placeholder: string;
2332
+ size: SelectInputSize;
2333
+ /** Accessible name for the search box (the placeholder otherwise). */
2334
+ label: string;
2335
+ private _filter;
2336
+ private _rank;
2337
+ /** Custom match predicate (JS property). */
2338
+ get filter(): SelectItemFilter | null;
2339
+ set filter(fn: SelectItemFilter | null);
2340
+ /** Custom scoring function: matches and orders (JS property). Wins over `filter`. */
2341
+ get rank(): SelectItemRank | null;
2342
+ set rank(fn: SelectItemRank | null);
2343
+ private get _inputEl();
2344
+ /** The current query text. */
2345
+ get query(): string;
2346
+ connectedCallback(): void;
2347
+ focusInput(): void;
2348
+ /* Excluded from this release type: _reset */
2349
+ /* Excluded from this release type: _syncAria */
2350
+ private _onInput;
2351
+ private _onKeyDown;
2352
+ render(): TemplateResult<1>;
2353
+ }
2354
+
2355
+ /**
2356
+ * One option. `value` is what the select reports; `label` is what the trigger shows and search matches
2357
+ * (default: the item's text). `description` (or a `slot="description"` child) adds a second line,
2358
+ * `start-icon` an icon, `disabled` keeps it visible but unselectable, `size="free"` lets custom content set
2359
+ * the height. Fires the cancelable `anduin-select-item-selected` when picked.
2360
+ */
2361
+ export declare class AnduinSelectItem extends LitElement {
2362
+ static styles: CSSResult;
2363
+ value: string;
2364
+ label: string | null;
2365
+ description: string;
2366
+ disabled: boolean;
2367
+ size: SelectItemSize;
2368
+ startIcon: string;
2369
+ /** Set by the root. */
2370
+ selected: boolean;
2371
+ /** Set by the root. */
2372
+ highlighted: boolean;
2373
+ private _hasSlottedDescription;
2374
+ /** The label used by the trigger, search and typeahead. */
2375
+ get labelText(): string;
2376
+ connectedCallback(): void;
2377
+ disconnectedCallback(): void;
2378
+ protected updated(changed: PropertyValues<this>): void;
2379
+ private _onClick;
2380
+ private _onPointer;
2381
+ private _onPointerMove;
2382
+ private _onDescriptionSlotChange;
2383
+ render(): TemplateResult<1>;
2384
+ }
2385
+
2386
+ /** A group's heading. */
2387
+ export declare class AnduinSelectLabel extends LitElement {
2388
+ static styles: CSSResult;
2389
+ connectedCallback(): void;
2390
+ render(): TemplateResult<1>;
2391
+ }
2392
+
2393
+ /** The scrolling `listbox` of items. `max-height` caps it with any CSS length (or `none`). */
2394
+ export declare class AnduinSelectList extends LitElement {
2395
+ static styles: CSSResult;
2396
+ maxHeight: string | null;
2397
+ loading: boolean;
2398
+ connectedCallback(): void;
2399
+ protected updated(changed: PropertyValues<this>): void;
2400
+ render(): TemplateResult<1>;
2401
+ }
2402
+
2403
+ /** Shows the selected item's label inside the trigger, or `placeholder` (muted) when nothing is selected. */
2404
+ export declare class AnduinSelectSelectedLabel extends LitElement {
2405
+ static styles: CSSResult;
2406
+ placeholder: string;
2407
+ connectedCallback(): void;
2408
+ protected updated(changed: PropertyValues<this>): void;
2409
+ /* Excluded from this release type: _show */
2410
+ render(): TemplateResult<1>;
2411
+ }
2412
+
2413
+ /** A divider between groups; hides when the search leaves nothing on one side of it. */
2414
+ export declare class AnduinSelectSeparator extends LitElement {
2415
+ static styles: CSSResult;
2416
+ connectedCallback(): void;
2417
+ render(): TemplateResult<1>;
2418
+ }
2419
+
2420
+ /**
2421
+ * Generic container that toggles the dropdown on click and handles the keyboard. Put any content inside —
2422
+ * usually `<anduin-button end-icon="caretDown">` holding an `<anduin-select-selected-label>`. With a slotted
2423
+ * button the combobox semantics go on its inner `<button>`; otherwise the trigger host itself is the focusable
2424
+ * combobox. `label` (or `aria-label`) names it.
2425
+ */
2426
+ export declare class AnduinSelectTrigger extends LitElement {
2427
+ static styles: CSSResult;
2428
+ label: string;
2429
+ private _root;
2430
+ connectedCallback(): void;
2431
+ disconnectedCallback(): void;
2432
+ protected updated(): void;
2433
+ render(): TemplateResult<1>;
2434
+ private _onClick;
2435
+ private _onKeyDown;
2436
+ /** The slotted `anduin-button` (or native button) that takes focus, if any. */
2437
+ private _control;
2438
+ /* Excluded from this release type: _isDisabled */
2439
+ /* Excluded from this release type: _focusControl */
2440
+ /* Excluded from this release type: _syncAria */
2441
+ private _lastName;
2442
+ }
2443
+
2444
+ /**
2445
+ * `<anduin-sheet>` — the design repo's sheet: a panel that slides in from a
2446
+ * viewport edge. Root of `anduin-sheet-trigger` + `anduin-sheet-content`.
2447
+ * (`anduin-drawer` keeps its own API.)
2448
+ *
2449
+ * - Uncontrolled (default): the trigger toggles it, the overlay / Escape /
2450
+ * `anduin-sheet-close` close it; `default-open` opens it on mount.
2451
+ * - Controlled: once `open` is set (attribute or property), every request fires
2452
+ * `anduin-sheet-open-change` and then applies itself, as the design repo does.
2453
+ */
2454
+ export declare class AnduinSheet extends LitElement {
2455
+ static styles: CSSResult;
2456
+ /** Controlled open state. Setting it (attribute or property) switches to controlled mode. */
2457
+ get open(): boolean;
2458
+ set open(value: boolean);
2459
+ private _open;
2460
+ private _controlled;
2461
+ /** Uncontrolled: open on mount. Ignored in controlled mode. */
2462
+ defaultOpen: boolean;
2463
+ /** Edge the panel slides in from. */
2464
+ side: SheetSide;
2465
+ /** `false` keeps Escape from closing the sheet. */
2466
+ closeOnEscape: boolean;
2467
+ private _visible;
2468
+ private _trigger;
2469
+ private _content;
2470
+ private _focusFrame;
2471
+ /** Whether the sheet is currently open. */
2472
+ get isOpen(): boolean;
2473
+ private get _isControlled();
2474
+ private get _side();
2475
+ constructor();
2476
+ connectedCallback(): void;
2477
+ disconnectedCallback(): void;
2478
+ protected updated(changed: PropertyValues<this>): void;
2479
+ /** Opens or closes the sheet the way a trigger would (fires `anduin-sheet-open-change` when controlled). */
2480
+ requestOpen(wantOpen: boolean): void;
2481
+ private _setContent;
2482
+ private _maybeShowInitial;
2483
+ private _show;
2484
+ private _hide;
2485
+ private _focusTrigger;
2486
+ private _stopAtSelf;
2487
+ private _onRegister;
2488
+ private _onCommand;
2489
+ private _onDocKeyDown;
2490
+ render(): TemplateResult<1>;
2491
+ }
2492
+
2493
+ /** `<anduin-sheet-close>` — clicking anything inside it closes the enclosing sheet. */
2494
+ export declare class AnduinSheetClose extends HTMLElement {
2495
+ connectedCallback(): void;
2496
+ disconnectedCallback(): void;
2497
+ private _onClick;
2498
+ }
2499
+
2500
+ /**
2501
+ * `<anduin-sheet-content>` — the panel of an `anduin-sheet`. Fixed to a viewport
2502
+ * edge (the root's `side`), it slides in over a transparent overlay that closes it
2503
+ * on click. Modal by default: body scroll locked, Tab trapped, `aria-modal`.
2504
+ * `modal="false"` lets the page stay in use; `dock="true"` splits the viewport
2505
+ * instead of covering it (implies non-modal). `width` takes small / medium /
2506
+ * large / extraLarge / fitContent or any CSS length; `resizable="true"` adds a
2507
+ * drag handle on the edge facing the page.
2508
+ */
2509
+ export declare class AnduinSheetContent extends LitElement {
2510
+ static styles: CSSResult;
2511
+ /** Splits the viewport instead of covering the page. Implies non-modal. */
2512
+ dock: boolean;
2513
+ /** `false` keeps the page usable: no overlay, no scroll lock, no focus trap. Ignored while docked. */
2514
+ modal: boolean;
2515
+ /** Shows a drag handle on the edge facing the page. */
2516
+ resizable: boolean;
2517
+ /** `false` leaves focus where it was on open. Otherwise focus goes to `[autofocus]` / `[data-autofocus]` or the panel. */
2518
+ autoFocus: boolean;
2519
+ /** small (320) · medium (360) · large (400) · extraLarge (640) · fitContent, or any CSS length. Height for top/bottom. */
2520
+ width: SheetWidth;
2521
+ private _shown;
2522
+ private _entered;
2523
+ private _side;
2524
+ private _dragging;
2525
+ private _closing;
2526
+ private _hideToken;
2527
+ private _releaseLock;
2528
+ private _dockListeners;
2529
+ private _drag;
2530
+ /** The side the panel is (or will be) anchored to. */
2531
+ get side(): SheetSide;
2532
+ /** Whether the open panel blocks the page. A docked panel never does. */
2533
+ get isModal(): boolean;
2534
+ /** Whether the panel is on screen (shown and not closing). */
2535
+ get isPanelOpen(): boolean;
2536
+ get panel(): HTMLElement | null;
2537
+ connectedCallback(): void;
2538
+ disconnectedCallback(): void;
2539
+ protected willUpdate(changed: PropertyValues<this>): void;
2540
+ protected updated(changed: PropertyValues<this>): void;
2541
+ /** Moves the panel to another edge without replaying the open animation. */
2542
+ setSide(side: SheetSide): void;
2543
+ /** Slides the panel in from `side`. */
2544
+ show(side: SheetSide): Promise<void>;
2545
+ /** Slides the panel out, then hides it and hands back the scroll lock / page inset. */
2546
+ hide(): void;
2547
+ /** Called by the sheet's dock toggle. */
2548
+ requestDock(docked: boolean): void;
2549
+ private _applyModalState;
2550
+ private _panelSize;
2551
+ private _syncDockInset;
2552
+ private _applyAccessibleName;
2553
+ private _focusInitial;
2554
+ private _onDocKeyDown;
2555
+ private _onWindowResize;
2556
+ private _onDockToggle;
2557
+ private _onDockRegister;
2558
+ /** `anduin-drawer-close` / `anduin-modal-close` inside the panel close the sheet too. */
2559
+ private _onLegacyClose;
2560
+ private _onOverlayClick;
2561
+ private _onResizeStart;
2562
+ private _onResizeMove;
2563
+ private _onResizeEnd;
2564
+ private _onResizeKeyDown;
2565
+ private _clamp;
2566
+ private _applySize;
2567
+ render(): TemplateResult<1>;
2568
+ /** Whether focus currently sits inside this panel (used by the root to return focus on close). */
2569
+ containsFocus(): boolean;
2570
+ }
2571
+
2572
+ /** `<anduin-sheet-description>` — subdued supporting text under the title. Describes the panel. */
2573
+ export declare class AnduinSheetDescription extends LitElement {
2574
+ static styles: CSSResult;
2575
+ render(): TemplateResult<1>;
2576
+ }
2577
+
2578
+ /**
2579
+ * `<anduin-sheet-dock-toggle>` — clicking anything inside it flips the enclosing
2580
+ * panel between docked and floating. Put the docked-state control in
2581
+ * `anduin-sheet-dock-toggle-on` and the floating-state one in `-off`.
2582
+ */
2583
+ export declare class AnduinSheetDockToggle extends HTMLElement {
2584
+ private _docked;
2585
+ private _branches;
2586
+ /** Whether the enclosing panel is docked. */
2587
+ get docked(): boolean;
2588
+ connectedCallback(): void;
2589
+ disconnectedCallback(): void;
2590
+ /** Called by the panel whenever its `dock` changes. */
2591
+ setDocked(docked: boolean): void;
2592
+ private _onClick;
2593
+ private _onBranch;
2594
+ }
2595
+
2596
+ declare abstract class AnduinSheetDockToggleBranch extends HTMLElement {
2597
+ protected abstract readonly showWhenDocked: boolean;
2598
+ connectedCallback(): void;
2599
+ /** Hidden rather than removed, so the consumer's control keeps its own state. */
2600
+ setDocked(docked: boolean): void;
2601
+ }
2602
+
2603
+ /** `<anduin-sheet-dock-toggle-off>` — shown while the panel floats (so it offers to dock). */
2604
+ export declare class AnduinSheetDockToggleOff extends AnduinSheetDockToggleBranch {
2605
+ protected readonly showWhenDocked = false;
2606
+ }
2607
+
2608
+ /** `<anduin-sheet-dock-toggle-on>` — shown while the panel is docked (so it offers to float). */
2609
+ export declare class AnduinSheetDockToggleOn extends AnduinSheetDockToggleBranch {
2610
+ protected readonly showWhenDocked = true;
2611
+ }
2612
+
2613
+ /** `<anduin-sheet-footer>` — action area pushed to the bottom of the panel, 16px padding. */
2614
+ export declare class AnduinSheetFooter extends LitElement {
2615
+ static styles: CSSResult;
2616
+ render(): TemplateResult<1>;
2617
+ }
2618
+
2619
+ /** `<anduin-sheet-header>` — groups title and description with 16px padding. */
2620
+ export declare class AnduinSheetHeader extends LitElement {
1152
2621
  static styles: CSSResult;
1153
- /** Initial share of the group: a percentage ("50%") or a fixed pixel size ("200px"). */
1154
- defaultSize: string;
1155
- /** Smallest size a drag may shrink this panel to ("20%" or "150px"). */
1156
- minSize: string;
1157
- /** Largest size a drag may grow this panel to ("80%" or "600px"). */
1158
- maxSize: string;
1159
- private applied;
1160
- updated(changed: Map<string, unknown>): void;
1161
- private applyDefaultSize;
1162
- /** Switch to the proportional model with the given flex-grow weight. */
1163
- setGrow(grow: number): void;
1164
- axisSize(vertical: boolean): number;
1165
- minPx(groupSize: number): number;
1166
- maxPx(groupSize: number): number;
1167
2622
  render(): TemplateResult<1>;
1168
2623
  }
1169
2624
 
1170
- export declare class AnduinResizablePanelGroup extends LitElement {
2625
+ /** `<anduin-sheet-title>` — the sheet's `<h2>` heading, with a built-in close (×) button. Names the panel. */
2626
+ export declare class AnduinSheetTitle extends LitElement {
2627
+ static styles: CSSResult;
2628
+ render(): TemplateResult<1>;
2629
+ }
2630
+
2631
+ /** `<anduin-sheet-trigger>` — toggles its sheet on click, Enter or Space. */
2632
+ export declare class AnduinSheetTrigger extends LitElement {
1171
2633
  static styles: CSSResult;
1172
- orientation: ResizeOrientation;
1173
2634
  connectedCallback(): void;
1174
- get isVertical(): boolean;
1175
- /** Size of the group along its main axis, in px. */
1176
- get axisSize(): number;
1177
- get panels(): AnduinResizablePanel[];
1178
- updated(): void;
1179
- /**
1180
- * Convert every panel to the proportional (flex-grow) model based on its
1181
- * current rendered size, so fixed-pixel panels "fold into" the weighted
1182
- * model when a resize begins.
1183
- */
1184
- normalizeToGrow(): void;
2635
+ disconnectedCallback(): void;
2636
+ private _onClick;
2637
+ private _onKeyDown;
1185
2638
  render(): TemplateResult<1>;
1186
2639
  }
1187
2640
 
@@ -1342,7 +2795,7 @@ export declare class AnduinSpinner extends LitElement {
1342
2795
  }
1343
2796
 
1344
2797
  export declare class AnduinSuggestion extends LitElement {
1345
- static styles: CSSResult;
2798
+ static styles: CSSResult[];
1346
2799
  value: string;
1347
2800
  size: 'small' | 'default' | 'large';
1348
2801
  disabled: boolean;
@@ -1381,6 +2834,54 @@ export declare class AnduinSuggestion extends LitElement {
1381
2834
  render(): TemplateResult<1>;
1382
2835
  }
1383
2836
 
2837
+ /**
2838
+ * `<anduin-switch>` — the design repo's name and API for a toggle switch
2839
+ * (`anduin-switcher` keeps its own API).
2840
+ *
2841
+ * - Uncontrolled (default): `default-checked` sets the initial state and the
2842
+ * switch flips itself on click.
2843
+ * - Controlled: once `checked` is set (attribute or property), clicks only
2844
+ * fire `anduin-switch-checked-change`; the consumer updates `checked`.
2845
+ *
2846
+ * Boolean attributes follow the design repo: `disabled="false"` is false.
2847
+ * Inside an `<anduin-field>`, clicking its `<anduin-field-label>` toggles it.
2848
+ */
2849
+ export declare class AnduinSwitch extends LitElement {
2850
+ static shadowRootOptions: {
2851
+ delegatesFocus: boolean;
2852
+ clonable?: boolean;
2853
+ customElementRegistry?: CustomElementRegistry;
2854
+ mode: ShadowRootMode;
2855
+ serializable?: boolean;
2856
+ slotAssignment?: SlotAssignmentMode;
2857
+ };
2858
+ static styles: CSSResult;
2859
+ /** Controlled state. Setting it (attribute or property) switches the element to controlled mode. */
2860
+ get checked(): boolean;
2861
+ set checked(value: boolean);
2862
+ private _checked;
2863
+ /** Initial state in uncontrolled mode. */
2864
+ defaultChecked: boolean;
2865
+ disabled: boolean;
2866
+ /** Accessible name for the switch (an enclosing field's label otherwise). */
2867
+ label: string;
2868
+ private _controlled;
2869
+ private _uncontrolledChecked;
2870
+ private _hasLabel;
2871
+ private _fieldLabel;
2872
+ private _field;
2873
+ /** The state the switch currently shows. */
2874
+ get isChecked(): boolean;
2875
+ connectedCallback(): void;
2876
+ disconnectedCallback(): void;
2877
+ /** Toggles the switch as a click would. */
2878
+ toggle(): void;
2879
+ private _onFieldClick;
2880
+ private _onClick;
2881
+ private _onSlotChange;
2882
+ render(): TemplateResult<1>;
2883
+ }
2884
+
1384
2885
  export declare class AnduinSwitcher extends LitElement {
1385
2886
  static styles: CSSResult;
1386
2887
  checked: boolean;
@@ -1686,6 +3187,8 @@ export declare class AnduinTag extends LitElement {
1686
3187
  icon: string;
1687
3188
  /** Colors the icon in place of the variant's color: a palette name, or an ID marked with `uid:` */
1688
3189
  iconColor: TagIconColor | '';
3190
+ /** Colors the icon from an ID, as the design repo's `icon-color-uid` does. Wins over `iconColor` */
3191
+ iconColorUid: string;
1689
3192
  disabled: boolean;
1690
3193
  render(): TemplateResult<1>;
1691
3194
  }
@@ -2014,6 +3517,56 @@ export declare class AnduinTooltipTrigger extends LitElement {
2014
3517
  render(): TemplateResult<1>;
2015
3518
  }
2016
3519
 
3520
+ /**
3521
+ * `<anduin-truncated>` — the design repo's truncation wrapper.
3522
+ *
3523
+ * It truncates its single element child without introducing a layout box: the host and its shadow root are
3524
+ * `display: contents`, so the child stays the flex / grid / inline item its parent lays out and keeps its own
3525
+ * sizing. The truncation CSS is applied to the child through `::slotted(:only-child)`:
3526
+ *
3527
+ * - default: single-line ellipsis (`overflow: hidden; text-overflow: ellipsis; white-space: nowrap`)
3528
+ * - `line-clamp="N"`: an N-line clamp (`display: -webkit-box; -webkit-line-clamp: N`). Non-positive or invalid
3529
+ * values fall back to one line.
3530
+ *
3531
+ * On pointer entry or keyboard focus it measures the child and, only when the content is actually clipped, shows
3532
+ * the full value in an `anduin-tooltip` anchored to the child. The tooltip text is the `tooltip` attribute when
3533
+ * present (even empty), otherwise the normalized text content. Inside an `anduin-tooltip-trigger` (across shadow
3534
+ * boundaries) its own tooltip stays off so the outer tooltip wins. No `title` is added, and nothing is measured or
3535
+ * rendered until the first interaction.
3536
+ */
3537
+ export declare class AnduinTruncated extends LitElement {
3538
+ static styles: CSSResult;
3539
+ /** Number of lines before clipping. Absent: single-line ellipsis. */
3540
+ lineClamp: number | string | null;
3541
+ /** Tooltip text override. Absent: the element's normalized text content. Read on interaction. */
3542
+ tooltip: string | null;
3543
+ private _tooltipRendered;
3544
+ private _tooltipText;
3545
+ private _describedTarget;
3546
+ /** Bumped by every enter and leave, so a show that finishes rendering after the pointer left is dropped. */
3547
+ private _requestId;
3548
+ connectedCallback(): void;
3549
+ disconnectedCallback(): void;
3550
+ /** The single element child the truncation applies to, or null when there is not exactly one. */
3551
+ get target(): HTMLElement | null;
3552
+ /** Whether the child's content is currently clipped. */
3553
+ get isTruncated(): boolean;
3554
+ private get _normalizedText();
3555
+ private _isInsideTooltipTrigger;
3556
+ private _onEnter;
3557
+ private _onLeave;
3558
+ private _onFocusOut;
3559
+ private _onKeyDown;
3560
+ private _hide;
3561
+ /**
3562
+ * The tooltip describes the element only when it says something the element does not already say: a tooltip that
3563
+ * repeats the visible text is a magnifying glass, not a description.
3564
+ */
3565
+ private _describe;
3566
+ private _clearDescription;
3567
+ render(): TemplateResult<1>;
3568
+ }
3569
+
2017
3570
  export declare class AnduinWell extends LitElement {
2018
3571
  static styles: CSSResult;
2019
3572
  variant: string;
@@ -2026,7 +3579,57 @@ export declare class AnduinWellClose extends LitElement {
2026
3579
  render(): TemplateResult<1>;
2027
3580
  }
2028
3581
 
2029
- export declare type AvatarShape = 'circle' | 'rounded';
3582
+ /** Field: before typed/pasted/dropped text lands — detail `{ value }` (the candidate). Cancelable: refuses it. */
3583
+ export declare const AUTOCOMPLETE_BEFORE_INPUT = "anduin-autocomplete-on-before-input";
3584
+
3585
+ /** Field: focus left the text field — detail `{ value }` (the text). */
3586
+ export declare const AUTOCOMPLETE_BLUR = "anduin-autocomplete-on-blur";
3587
+
3588
+ /** Root: the text changed (every keystroke, and once more with the label on a pick) — detail `{ value }` (the text). */
3589
+ export declare const AUTOCOMPLETE_CHANGE = "change";
3590
+
3591
+ /** Root: a suggestion was picked (click or Enter) — detail `{ value }` (the item's `value`). Fires after `change`. */
3592
+ export declare const AUTOCOMPLETE_CHOOSE = "anduin-autocomplete-on-choose";
3593
+
3594
+ /** Root: the list closed (pick, Escape, Tab, Enter, outside click). Does not bubble. */
3595
+ export declare const AUTOCOMPLETE_CLOSE = "anduin-autocomplete-on-close";
3596
+
3597
+ /** Item: clicked — detail `{ value }`. Cancelable: `preventDefault()` keeps the text and the list open. */
3598
+ export declare const AUTOCOMPLETE_ITEM_SELECTED = "anduin-autocomplete-item-selected";
3599
+
3600
+ /** Field: Enter with no suggestion highlighted — detail `{ value }`. Cancelable: cancelling claims the key. */
3601
+ export declare const AUTOCOMPLETE_SUBMIT = "anduin-autocomplete-on-submit";
3602
+
3603
+ /** Shared by `-input` and `-textarea`: size, status, disabled, open-on-focus, and the design events. */
3604
+ declare abstract class AutocompleteFieldBase extends PickerField {
3605
+ static family: string;
3606
+ disabled: boolean;
3607
+ /** Open the list on every focus, not only when the field is empty. */
3608
+ openOnFocus: boolean;
3609
+ size: 'small' | 'default' | 'large';
3610
+ /** `valid` | `invalid` | `warning` | `none` — border colour only. */
3611
+ status: string;
3612
+ protected _hasAdornment: boolean;
3613
+ get isDisabled(): boolean;
3614
+ get autocomplete(): AnduinAutocomplete | null;
3615
+ firstUpdated(): void;
3616
+ updated(changed: PropertyValues<this>): void;
3617
+ protected controlClasses(base: string): string;
3618
+ protected wrapperClasses(): string;
3619
+ protected _onSlotChange(e: Event): void;
3620
+ protected _onBlur(): void;
3621
+ /** Reports insertions as a cancelable candidate; cancelling refuses the insertion before the browser applies it. */
3622
+ protected _onBeforeInput(e: InputEvent): void;
3623
+ /** Enter with nothing highlighted: report `on-submit`; cancelling it claims the key. Returns whether it was claimed. */
3624
+ protected submit(e: KeyboardEvent): boolean;
3625
+ protected closeOnEscape(e: KeyboardEvent): boolean;
3626
+ }
3627
+
3628
+ /** The design repo's deterministic avatar colour for a `uid` (`AvatarColor.generate`). */
3629
+ export declare function avatarColorForUid(uid: string): string;
3630
+
3631
+ /** `square` is the design repo's name for `rounded` (4px corners). */
3632
+ export declare type AvatarShape = 'circle' | 'rounded' | 'square';
2030
3633
 
2031
3634
  export declare type AvatarSize = 16 | 20 | 24 | 32;
2032
3635
 
@@ -2058,6 +3661,44 @@ export declare const CALENDAR_DAY_HOVER = "anduin-calendar:day-hover";
2058
3661
 
2059
3662
  export declare const CHECKBOX_CHANGE = "anduin-checkbox:change";
2060
3663
 
3664
+ /** How long the "copied" feedback stays before the status resets to `idle` (as in the design repo). */
3665
+ export declare const CLIPBOARD_RESET_MS = 2000;
3666
+
3667
+ export declare type ClipboardIndicatorAppearance = 'plain' | 'text';
3668
+
3669
+ /** Where a copy stands: requested-and-written, refused, or back at rest 2 seconds after the request. */
3670
+ export declare type ClipboardStatus = 'idle' | 'copied' | 'failed';
3671
+
3672
+ /** The tooltip text for each status. */
3673
+ export declare function clipboardTooltipText(status: ClipboardStatus): string;
3674
+
3675
+ /** Default animation length, in milliseconds. */
3676
+ export declare const COLLAPSIBLE_DEFAULT_DURATION_MS = 150;
3677
+
3678
+ /**
3679
+ * Fired on `<anduin-collapsible>` when the user toggles it (unless `disabled`).
3680
+ * Detail: `{ value: boolean }` — the requested open state. Does not bubble, as
3681
+ * in the design repo, so a nested collapsible never toggles its parent's handler.
3682
+ */
3683
+ export declare const COLLAPSIBLE_OPEN_CHANGE = "anduin-collapsible-open-change";
3684
+
3685
+ export declare type CollapsibleDirection = 'vertical' | 'horizontal';
3686
+
3687
+ /**
3688
+ * The duration an `animation` value asks for, in ms: `off` (or `0ms`) is 0,
3689
+ * `"100ms"` is 100, and absent or unreadable is the 150ms default.
3690
+ */
3691
+ export declare function collapsibleDurationOf(value: string | null | undefined): number;
3692
+
3693
+ /** Fired by the root when the user picks an item — detail: `{ value }` (the item's `value`). */
3694
+ export declare const COMBOBOX_CHANGE = "change";
3695
+
3696
+ /** Fired by an item when it is clicked — detail: `{ value }`. Cancelable: `preventDefault()` keeps the list open. */
3697
+ export declare const COMBOBOX_ITEM_SELECTED = "anduin-combobox-item-selected";
3698
+
3699
+ /** "Copy invoice number", or "Copy" without a label — the name an icon-only control is given. */
3700
+ export declare function copyActionName(label: string): string;
3701
+
2061
3702
  /** Fired when every segment is filled. `event.detail` is the formatted date string. */
2062
3703
  export declare const DATE_INPUT_CHANGE = "anduin-date-input:change";
2063
3704
 
@@ -2081,6 +3722,45 @@ export declare interface DateRangeChangeDetail {
2081
3722
 
2082
3723
  export declare type DateRangePanelRole = 'start' | 'end';
2083
3724
 
3725
+ /** The design repo's named sizes: small 20px, medium 24px, large 32px (default), extraLarge 40px. */
3726
+ export declare type DesignAvatarSize = 'small' | 'medium' | 'large' | 'extraLarge';
3727
+
3728
+ /** A design boolean whose absent attribute means `true` (`modal`, `auto-focus`). */
3729
+ export declare const designBooleanDefaultTrue: ComplexAttributeConverter<boolean>;
3730
+
3731
+ /** The design repo's initials: the first letter of the first two words, uppercased. */
3732
+ export declare function designInitials(value: string): string;
3733
+
3734
+ /** The dialog became hidden (either mode). `detail: { value: undefined }`. Does not bubble. */
3735
+ export declare const DIALOG_ON_CLOSE = "anduin-dialog-on-close";
3736
+
3737
+ /** The dialog became visible (either mode). `detail: { value: undefined }`. Does not bubble. */
3738
+ export declare const DIALOG_ON_OPEN = "anduin-dialog-on-open";
3739
+
3740
+ /** Controlled mode: the dialog asks to open or close. `detail: { value: boolean }`. Does not bubble. */
3741
+ export declare const DIALOG_OPEN_CHANGE = "anduin-dialog-open-change";
3742
+
3743
+ export declare type DialogHeight = 'fill';
3744
+
3745
+ /** Re-names the owning content whenever this element's text changes. */
3746
+ declare abstract class DialogTextElement extends LitElement {
3747
+ private _observer?;
3748
+ private _owner;
3749
+ connectedCallback(): void;
3750
+ disconnectedCallback(): void;
3751
+ }
3752
+
3753
+ export declare type DialogWidth = 'small' | 'medium' | 'large' | 'extraLarge' | 'full' | 'fitContent';
3754
+
3755
+ export declare function dispatchSheetCommand(from: Element, action: SheetCommand): void;
3756
+
3757
+ /** Something that follows the panel's dock state (the dock toggle). */
3758
+ export declare interface DockListener extends Element {
3759
+ setDocked(docked: boolean): void;
3760
+ }
3761
+
3762
+ declare type DockSide = 'top' | 'right' | 'bottom' | 'left';
3763
+
2084
3764
  export declare type DotVariant = 'gray' | 'success' | 'primary' | 'danger' | 'warning' | 'purple' | 'customAqua' | 'customBlue' | 'customBlueGreen' | 'customGreen' | 'customHotPink' | 'customIndigo' | 'customMagenta' | 'customOrange' | 'customPink' | 'customPurple' | 'customRed' | 'customYellow' | 'customYellowGreen' | 'customYellowOrange';
2085
3765
 
2086
3766
  /** Fired once the exit animation has finished. Stops at the drawer element too. */
@@ -2161,8 +3841,59 @@ export declare const INPUT_CHANGE = "anduin-input:change";
2161
3841
 
2162
3842
  export declare const INPUT_CLEAR = "anduin-input:clear";
2163
3843
 
3844
+ /** Old API: fired by `anduin-menu-item` on every click (no detail). */
2164
3845
  export declare const MENU_ITEM_CLICK = "anduin-menu-item:click";
2165
3846
 
3847
+ /* Excluded from this release type: MENU_ITEM_COMMIT */
3848
+
3849
+ /**
3850
+ * Design API: an item was chosen (click, Enter, Space). `detail` is `{ value: true }`. Cancelable — call
3851
+ * `preventDefault()` to keep the menu open (checkbox-style items, loading items).
3852
+ */
3853
+ export declare const MENU_ITEM_SELECTED = "anduin-menu-item-selected";
3854
+
3855
+ /** Design API: the menu asks to open (`detail.value === true`) or close. Fired before `open` changes. */
3856
+ export declare const MENU_OPEN_CHANGE = "anduin-menu-open-change";
3857
+
3858
+ /**
3859
+ * Keyboard navigation shared by `anduin-menu-content` and `anduin-menu-sub-content`: ArrowUp/Down (wrapping),
3860
+ * Home/End and typeahead over the items this surface owns (not those of a nested sub-menu).
3861
+ */
3862
+ declare abstract class MenuSurface extends LitElement {
3863
+ protected _popup: HTMLElement;
3864
+ protected _active: boolean;
3865
+ protected _shown: boolean;
3866
+ private _stopTracking;
3867
+ private _typed;
3868
+ private _typedAt;
3869
+ connectedCallback(): void;
3870
+ disconnectedCallback(): void;
3871
+ /** Enabled items and sub-triggers that belong to this surface, in DOM order. */
3872
+ items(): HTMLElement[];
3873
+ /** Focuses the first or last enabled item. */
3874
+ focusEdge(which: 'first' | 'last'): void;
3875
+ /* Excluded from this release type: setActive */
3876
+ protected _sync(): void;
3877
+ protected _show(): void;
3878
+ protected _hide(): void;
3879
+ protected _beforeShow(): void;
3880
+ protected abstract _anchor(): {
3881
+ ref: Element;
3882
+ placement: PopupPlacement;
3883
+ dx: number;
3884
+ dy: number;
3885
+ } | null;
3886
+ private _position;
3887
+ protected _onKeyDown: (e: KeyboardEvent) => void;
3888
+ /** Keys a surface handles itself before list navigation (sub-menus: ArrowLeft / Escape). */
3889
+ protected _handleOwnKey(_e: KeyboardEvent): boolean;
3890
+ /**
3891
+ * Characters typed within half a second spell one word; the same character repeated cycles through the items
3892
+ * starting with it. Matching ignores case and wraps.
3893
+ */
3894
+ private _typeahead;
3895
+ }
3896
+
2166
3897
  /** Event fired after the exit animation finishes and the modal is fully hidden.
2167
3898
  * Use this to safely unmount / clear data when using conditional rendering.
2168
3899
  * Like MODAL_CLOSE_EVENT, it stops at the modal element.
@@ -2182,14 +3913,37 @@ export declare const MODAL_AFTER_CLOSE_EVENT = "anduin-after-close";
2182
3913
  */
2183
3914
  export declare const MODAL_CLOSE_EVENT = "anduin-close";
2184
3915
 
3916
+ /** Scala's `MurmurHash3.stringHash`, so a `uid` gets the same colour as in the design repo. */
3917
+ export declare function murmurStringHash(str: string): number;
3918
+
3919
+ /** Public CSS custom properties read by `theme="custom"` (and, per item, the background override). */
3920
+ export declare const NAVIGATION_BAR_CSS_VARS: {
3921
+ readonly backgroundColor: "--anduin-navigation-bar-background-color";
3922
+ readonly textColor: "--anduin-navigation-bar-text-color";
3923
+ readonly activeBackgroundColor: "--anduin-navigation-bar-active-background-color";
3924
+ readonly activeTextColor: "--anduin-navigation-bar-active-text-color";
3925
+ readonly itemBackgroundColor: "--anduin-navigation-bar-item-background-color";
3926
+ };
3927
+
3928
+ /** Fired when a user activates an item, even the selected one. `detail: { value }` is the item's `value`. */
3929
+ export declare const NAVIGATION_BAR_VALUE_CHANGE = "anduin-navigation-bar-value-change";
3930
+
2185
3931
  export declare const NAVIGATION_CHANGE = "anduin-navigation:change";
2186
3932
 
2187
3933
  export declare const NAVIGATION_ITEM_CLICK = "anduin-navigation-item:item-click";
2188
3934
 
2189
3935
  export declare type NavigationAlignment = 'left' | 'center' | 'right';
2190
3936
 
3937
+ export declare type NavigationBarTheme = 'light' | 'dark' | 'custom';
3938
+
2191
3939
  export declare type NavigationTheme = 'light' | 'dark';
2192
3940
 
3941
+ /** Reads `heading-level` the way the design repo does: 1–6, anything else is 2. */
3942
+ export declare function normalizedHeadingLevel(value: number | string | null | undefined): number;
3943
+
3944
+ /** Reads a `line-clamp` attribute the way the design repo does: a positive integer, anything else is one line. */
3945
+ export declare function normalizedLineClamp(value: number | string | null): number;
3946
+
2193
3947
  /** Fired when a page is requested. `event.detail` is the target page number. */
2194
3948
  export declare const PAGINATION_CHANGE = "anduin-pagination:change";
2195
3949
 
@@ -2209,11 +3963,264 @@ export declare const PAGINATION_JUMP = "anduin-pagination:jump";
2209
3963
  */
2210
3964
  export declare function parseISODate(value: string | null | undefined): Date | null;
2211
3965
 
3966
+ declare class PickerContent extends LitElement {
3967
+ static family: string;
3968
+ static styles: CSSResult[];
3969
+ /** Fixed panel width in px. Unset: the panel shrink-wraps its items (min 160px). */
3970
+ width: number | null;
3971
+ private _visible;
3972
+ private _natural;
3973
+ get visible(): boolean;
3974
+ private get _panel();
3975
+ private get _inner();
3976
+ /** Shows/hides the panel; `remeasure` re-reads its natural size (contents changed). */
3977
+ setVisible(visible: boolean, remeasure?: boolean): void;
3978
+ /** Places the panel beside `anchor`, capping its height to the room on the side it opens on. */
3979
+ reposition(anchor: DOMRect, placement: string, remeasure?: boolean): void;
3980
+ render(): TemplateResult<1>;
3981
+ }
3982
+
3983
+ declare class PickerEmpty extends LitElement {
3984
+ static family: string;
3985
+ static styles: CSSResult;
3986
+ connectedCallback(): void;
3987
+ render(): TemplateResult<1>;
3988
+ }
3989
+
3990
+ declare abstract class PickerField extends LitElement {
3991
+ static family: string;
3992
+ placeholder: string;
3993
+ /** Accessible name (else `aria-label`, an enclosing field's label, then the placeholder). */
3994
+ label: string;
3995
+ /** Custom match predicate: `({ query, value, label }) => boolean`, consulted for a non-empty query. */
3996
+ filter: PickerFilter | null;
3997
+ protected _text: string;
3998
+ get root(): PickerRoot | null;
3999
+ /** The native `<input>` / `<textarea>` inside. */
4000
+ get control(): HTMLInputElement | HTMLTextAreaElement | null;
4001
+ get isDisabled(): boolean;
4002
+ /** The text in the field. */
4003
+ get text(): string;
4004
+ set text(value: string);
4005
+ focusField(): void;
4006
+ protected accessibleName(): string;
4007
+ /** Writes the popup state onto the native field (the element with `role="combobox"`). */
4008
+ syncAria(expanded: boolean, list: HTMLElement | null, active: HTMLElement | null): void;
4009
+ protected _onFocus(): void;
4010
+ protected _onInput(e: Event): void;
4011
+ }
4012
+
4013
+ declare type PickerFilter = (item: PickerFilterItem) => boolean;
4014
+ export { PickerFilter as AutocompleteFilter }
4015
+ export { PickerFilter as ComboboxFilter }
4016
+
4017
+ /**
4018
+ * Shared internals of the design repo's two text-field pickers:
4019
+ *
4020
+ * - `anduin-combobox` — pick ONE OF the listed items; the typed text is only a filter, and the
4021
+ * field reverts to the chosen item's label when the list closes.
4022
+ * - `anduin-autocomplete` — the value IS the typed text; the list is a shortcut for typing.
4023
+ *
4024
+ * Both are compound: a root coordinates light-DOM parts (`-input`, `-content`, `-list`, `-item`,
4025
+ * `-group`, `-label`, `-separator`, `-empty`) that find their root with `closest()`. Every part
4026
+ * class here is family-agnostic; a family subclass sets `static family` to its root tag name.
4027
+ *
4028
+ * The floating panel reuses `anduin-suggestion`'s shell and positioning (`popupPanelStyles`,
4029
+ * `positionPopup`).
4030
+ */
4031
+ /** What a custom `filter` predicate receives (design: `ItemFilter`). */
4032
+ declare interface PickerFilterItem {
4033
+ query: string;
4034
+ value: string;
4035
+ label: string;
4036
+ }
4037
+ export { PickerFilterItem as AutocompleteFilterItem }
4038
+ export { PickerFilterItem as ComboboxFilterItem }
4039
+
4040
+ declare class PickerGroup extends LitElement {
4041
+ static family: string;
4042
+ static styles: CSSResult;
4043
+ connectedCallback(): void;
4044
+ render(): TemplateResult<1>;
4045
+ }
4046
+
4047
+ declare class PickerItem extends LitElement {
4048
+ static family: string;
4049
+ static styles: CSSResultGroup;
4050
+ value: string;
4051
+ /** Text shown in the field and matched by the filter (default: the item's text). */
4052
+ label: string | null;
4053
+ disabled: boolean;
4054
+ private _highlighted;
4055
+ get root(): PickerRoot | null;
4056
+ get highlighted(): boolean;
4057
+ set highlighted(value: boolean);
4058
+ /** The item's display label: `label`, else its text (without a `description` slot). */
4059
+ get labelText(): string;
4060
+ connectedCallback(): void;
4061
+ disconnectedCallback(): void;
4062
+ updated(changed: PropertyValues<this>): void;
4063
+ private _onPointer;
4064
+ private _onMouseDown;
4065
+ private _onClick;
4066
+ /** Leading part of the row (autocomplete: `start-icon`). */
4067
+ protected renderStart(): unknown;
4068
+ /** Trailing part of the row (combobox: the check). */
4069
+ protected renderEnd(): unknown;
4070
+ protected renderContent(): unknown;
4071
+ protected rowClass(): string;
4072
+ render(): TemplateResult<1>;
4073
+ }
4074
+
4075
+ /** One entry of a list's data-driven `items` property. */
4076
+ declare interface PickerItemData {
4077
+ value: string;
4078
+ label?: string;
4079
+ description?: string;
4080
+ disabled?: boolean;
4081
+ }
4082
+ export { PickerItemData as AutocompleteItemData }
4083
+ export { PickerItemData as ComboboxItemData }
4084
+
4085
+ declare class PickerLabel extends LitElement {
4086
+ static family: string;
4087
+ static styles: CSSResult;
4088
+ render(): TemplateResult<1>;
4089
+ }
4090
+
4091
+ declare class PickerList extends LitElement {
4092
+ static family: string;
4093
+ static styles: CSSResult;
4094
+ /** Cap on the scrolling list: any CSS length (`400px`, `50vh`, `24rem`) or `none`. */
4095
+ maxHeight: string | null;
4096
+ /**
4097
+ * Data-driven items (`{ value, label?, description?, disabled? }`), rendered as items in this
4098
+ * list's light DOM. Not virtualised: every item is materialised.
4099
+ */
4100
+ items: PickerItemData[] | null;
4101
+ connectedCallback(): void;
4102
+ updated(changed: PropertyValues<this>): void;
4103
+ private _renderItems;
4104
+ render(): TemplateResult<1>;
4105
+ }
4106
+
4107
+ declare abstract class PickerRoot extends LitElement {
4108
+ static family: string;
4109
+ static styles: CSSResult;
4110
+ /** The value. Combobox: the chosen item's `value`. Autocomplete: the text in the field. */
4111
+ value: string;
4112
+ /** Where the panel opens: `bottom-start` (default), `bottom-end`, `top-start`, … */
4113
+ placement: string;
4114
+ /** Row height in px for every item (sets `--<family>-item-height`). */
4115
+ itemHeight: string | null;
4116
+ protected _open: boolean;
4117
+ protected _highlighted: PickerItem | null;
4118
+ private _ignorePointer;
4119
+ private _raf;
4120
+ private _anchorKey;
4121
+ /** Whether the list is open. */
4122
+ get open(): boolean;
4123
+ get family(): string;
4124
+ /** Descendants matching `selector` that belong to this root (not to a nested picker). */
4125
+ protected own<T extends Element>(selector: string): T[];
4126
+ get field(): PickerField | null;
4127
+ get content(): PickerContent | null;
4128
+ get list(): PickerList | null;
4129
+ /** Every item, in DOM order. */
4130
+ items(): PickerItem[];
4131
+ protected get emptyElement(): HTMLElement | null;
4132
+ connectedCallback(): void;
4133
+ disconnectedCallback(): void;
4134
+ updated(changed: PropertyValues<this>): void;
4135
+ render(): TemplateResult<1>;
4136
+ /** The query the list is filtered by when it opens. */
4137
+ protected abstract openQuery(): string;
4138
+ /** Whether the empty element shows for this result. */
4139
+ protected abstract emptyVisible(query: string, nothingMatched: boolean): boolean;
4140
+ /** Whether the panel shows at all for this result. */
4141
+ protected abstract panelVisible(nothingMatched: boolean): boolean;
4142
+ /** An item was clicked (and the consumer did not cancel `-item-selected`). */
4143
+ protected abstract onItemChosen(value: string): void;
4144
+ /** Text field typed into. */
4145
+ abstract fieldInput(text: string): void;
4146
+ /** Text field focused. */
4147
+ abstract fieldFocus(): void;
4148
+ /** Called after the list opened (no keyboard highlight requested). */
4149
+ protected onOpened(): void;
4150
+ /** Called after the list closed. */
4151
+ protected onClosed(): void;
4152
+ /** Opens the list. `highlight` picks the first/last navigable item, as ArrowDown/ArrowUp do. */
4153
+ openPanel(highlight?: 'first' | 'last'): void;
4154
+ closePanel(): void;
4155
+ /** Whether `item` matches a non-empty `query`: the field's `filter`, else a case-insensitive label match. */
4156
+ protected itemMatches(query: string, item: PickerItem): boolean;
4157
+ /** Hides the items that do not match `query`, collapses emptied groups and their separators. */
4158
+ protected applyFilter(query: string): number;
4159
+ private _updateStructure;
4160
+ get highlighted(): PickerItem | null;
4161
+ /** Visible, enabled items: the ones the arrow keys move through. */
4162
+ protected navigable(): PickerItem[];
4163
+ protected setHighlight(item: PickerItem, scroll?: boolean): void;
4164
+ clearHighlight(): void;
4165
+ highlightFirst(): void;
4166
+ highlightLast(): void;
4167
+ /** ArrowDown (+1) / ArrowUp (-1) while open, wrapping, skipping disabled and filtered-out items. */
4168
+ moveHighlight(direction: 1 | -1): void;
4169
+ /** Pointer over an item. Ignored until the pointer really moves after the list opens or re-filters. */
4170
+ itemHovered(item: PickerItem): void;
4171
+ protected ignorePointerUntilMove(): void;
4172
+ protected syncField(): void;
4173
+ /** The label an item shows in the field: its `label`, else its text. */
4174
+ protected labelFor(value: string): string;
4175
+ private _onItemSelected;
4176
+ private _onDocumentPointerDown;
4177
+ private _onDocumentPointerMove;
4178
+ /** The element the panel is placed against: the field host. */
4179
+ protected get anchor(): Element | null;
4180
+ private _startLoop;
4181
+ private _stopLoop;
4182
+ /** Re-measures and places the panel now (after its contents changed). */
4183
+ reposition(): void;
4184
+ }
4185
+
4186
+ declare class PickerSeparator extends LitElement {
4187
+ static family: string;
4188
+ static styles: CSSResult;
4189
+ connectedCallback(): void;
4190
+ render(): symbol;
4191
+ }
4192
+
2212
4193
  export declare const POPOVER_CLOSE = "anduin-popover:close";
2213
4194
 
4195
+ /**
4196
+ * Design API: the popover asks to open (`detail.value === true`) or close — trigger click, Escape, outside click,
4197
+ * a close part. Fired before `open` changes; set `open` back from the handler to keep it controlled.
4198
+ */
4199
+ export declare const POPOVER_DESIGN_OPEN_CHANGE = "anduin-popover-open-change";
4200
+
4201
+ /** Design API: the popover was hidden. `detail` is `{ value: undefined }`. */
4202
+ export declare const POPOVER_ON_CLOSE = "anduin-popover-on-close";
4203
+
4204
+ /** Design API: the popover became visible. `detail` is `{ value: undefined }`. */
4205
+ export declare const POPOVER_ON_OPEN = "anduin-popover-on-open";
4206
+
2214
4207
  /** Fired whenever `open` changes, including self-initiated toggles and outside clicks. `event.detail` is the new state. */
2215
4208
  export declare const POPOVER_OPEN_CHANGE = "anduin-popover:open-change";
2216
4209
 
4210
+ declare type PopupAlign = 'start' | 'center' | 'end';
4211
+
4212
+ declare type PopupPlacement = `${PopupSide}-${PopupAlign}`;
4213
+
4214
+ /** The design repo's 12 placements (`PlacementTypes.Placement`); `top`/`bottom`/`left`/`right` mean `-center`. */
4215
+ declare type PopupPlacement_2 = 'top-center' | 'top-start' | 'top-end' | 'bottom-center' | 'bottom-start' | 'bottom-end' | 'left-center' | 'left-start' | 'left-end' | 'right-center' | 'right-start' | 'right-end' | 'top' | 'bottom' | 'left' | 'right';
4216
+
4217
+ /**
4218
+ * Shared machinery for the design-API popups (`anduin-popover-content`, `anduin-menu-content`,
4219
+ * `anduin-menu-sub-content`): placement, frame-by-frame tracking, the Escape stack and focus helpers.
4220
+ * Ported from the design repo's `PopupPlacement`, `PopupPositionTracker`, `OverlayStack` and `FocusUtils`.
4221
+ */
4222
+ declare type PopupSide = 'top' | 'bottom' | 'left' | 'right';
4223
+
2217
4224
  export declare const RADIO_CHANGE = "anduin-radio:change";
2218
4225
 
2219
4226
  export declare const RADIO_GROUP_CHANGE = "anduin-radio-group:change";
@@ -2227,6 +4234,73 @@ export declare type ResizeOrientation = 'horizontal' | 'vertical';
2227
4234
 
2228
4235
  export declare function resolveFileIcon(type: string, size: 16 | 24 | 32): FileIconDef | null;
2229
4236
 
4237
+ /**
4238
+ * Fired on `<anduin-select>` when the user picks a value (or clears it) — detail: `{ value: string }`.
4239
+ * The design repo's name, used verbatim: it is the plain `change`.
4240
+ */
4241
+ export declare const SELECT_CHANGE = "change";
4242
+
4243
+ /** Fired on `<anduin-select>` whenever the dropdown closes (selection, outside click, Escape, trigger). Does not bubble. */
4244
+ export declare const SELECT_CLOSE = "anduin-select-on-close";
4245
+
4246
+ /**
4247
+ * Fired on the `<anduin-select-item>` the user picks (click, or Enter/Space on the highlighted one) — detail:
4248
+ * `{ value: string }`, bubbles, **cancelable**: `preventDefault()` keeps the dropdown open and leaves the value alone.
4249
+ */
4250
+ export declare const SELECT_ITEM_SELECTED = "anduin-select-item-selected";
4251
+
4252
+ export declare type SelectInputSize = 'small' | 'default' | 'large';
4253
+
4254
+ /** Return whether the item stays visible. Replaces the default case-insensitive substring match on the label. */
4255
+ export declare type SelectItemFilter = (item: SelectItemMatch) => boolean;
4256
+
4257
+ /** What a custom `filter` / `rank` on `<anduin-select-input>` is asked about, once per item per non-empty query. */
4258
+ export declare interface SelectItemMatch {
4259
+ query: string;
4260
+ value: string;
4261
+ label: string;
4262
+ }
4263
+
4264
+ /** Return `null`/`undefined` to hide the item, or a score: higher scores sort first within their group. */
4265
+ export declare type SelectItemRank = (item: SelectItemMatch) => number | null | undefined;
4266
+
4267
+ export declare type SelectItemSize = 'medium' | 'free';
4268
+
4269
+ export declare type SelectPlacement = PopupPlacement_2;
4270
+
4271
+ /** Internal: a part asks its sheet root to do something. Detail `{ action }`. */
4272
+ export declare const SHEET_COMMAND = "anduin-sheet:command";
4273
+
4274
+ /** Fired by `anduin-sheet-content` after a built-in dock toggle flips its `dock` — detail `{ value: boolean }` (now docked). */
4275
+ export declare const SHEET_DOCK_CHANGE = "anduin-sheet-dock-change";
4276
+
4277
+ /** Internal: a dock toggle announces itself to its panel. Detail `{ el }`. */
4278
+ export declare const SHEET_DOCK_REGISTER = "anduin-sheet:dock-register";
4279
+
4280
+ /** Internal: a dock toggle asks its panel to flip. */
4281
+ export declare const SHEET_DOCK_TOGGLE = "anduin-sheet:dock-toggle";
4282
+
4283
+ /** Fired by `anduin-sheet` once it closes (both modes). Stops at the sheet element. */
4284
+ export declare const SHEET_ON_CLOSE = "anduin-sheet-on-close";
4285
+
4286
+ /** Fired by `anduin-sheet` once it opens (both modes). Stops at the sheet element. */
4287
+ export declare const SHEET_ON_OPEN = "anduin-sheet-on-open";
4288
+
4289
+ /** Fired by `anduin-sheet-content` when the user resizes it — detail `{ value: number }`, the new size in px. */
4290
+ export declare const SHEET_ON_RESIZE = "anduin-sheet-on-resize";
4291
+
4292
+ /** Fired by `anduin-sheet` in controlled mode when it wants to open or close — detail `{ value: boolean }`. Does not bubble. */
4293
+ export declare const SHEET_OPEN_CHANGE = "anduin-sheet-open-change";
4294
+
4295
+ /** Internal: a trigger / content announces itself to its sheet root. Detail `{ kind, el }`. */
4296
+ export declare const SHEET_REGISTER = "anduin-sheet:register";
4297
+
4298
+ export declare type SheetCommand = 'toggle' | 'close';
4299
+
4300
+ export declare type SheetSide = DockSide;
4301
+
4302
+ export declare type SheetWidth = 'small' | 'medium' | 'large' | 'extraLarge' | 'fitContent' | (string & {});
4303
+
2230
4304
  /**
2231
4305
  * Fired when a (non-disabled) sidebar menu item is activated by click or
2232
4306
  * keyboard. `detail` is the activated `anduin-sidebar-menu-item` element.
@@ -2254,6 +4328,9 @@ export declare interface SuggestionItem {
2254
4328
  icon?: string;
2255
4329
  }
2256
4330
 
4331
+ /** Fired when the user toggles the switch — detail: `{ value: boolean }` (the requested state). */
4332
+ export declare const SWITCH_CHECKED_CHANGE = "anduin-switch-checked-change";
4333
+
2257
4334
  export declare const SWITCHER_CHANGE = "anduin-switcher:change";
2258
4335
 
2259
4336
  export declare const TAB_CHANGE = "anduin-tab:change";