@tedi-design-system/angular 8.1.0-rc.9 → 8.1.1

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.
package/tedi/index.d.ts CHANGED
@@ -598,6 +598,13 @@ declare const translationsMap: {
598
598
  en: string;
599
599
  ru: string;
600
600
  };
601
+ "toast.close": {
602
+ description: string;
603
+ components: string[];
604
+ et: (title: string) => string;
605
+ en: (title: string) => string;
606
+ ru: (title: string) => string;
607
+ };
601
608
  "modal.close": {
602
609
  description: string;
603
610
  components: string[];
@@ -1053,20 +1060,6 @@ declare const translationsMap: {
1053
1060
  en: string;
1054
1061
  ru: string;
1055
1062
  };
1056
- "table-of-contents.valid": {
1057
- description: string;
1058
- components: string[];
1059
- et: (count: string | number) => string;
1060
- en: (count: string | number) => string;
1061
- ru: (count: string | number) => string;
1062
- };
1063
- "table-of-contents.invalid": {
1064
- description: string;
1065
- components: string[];
1066
- et: (count: string | number) => string;
1067
- en: (count: string | number) => string;
1068
- ru: (count: string | number) => string;
1069
- };
1070
1063
  "truncate.see-more": {
1071
1064
  description: string;
1072
1065
  components: string[];
@@ -1847,12 +1840,19 @@ declare class AlertComponent {
1847
1840
  * @default false
1848
1841
  */
1849
1842
  showClose: _angular_core.InputSignal<boolean>;
1843
+ /**
1844
+ * Accessible name for the close button. Override the generic default
1845
+ * ("Close") when several alerts can be on screen at once, so the button
1846
+ * says which one it closes.
1847
+ */
1848
+ closeAriaLabel: _angular_core.InputSignal<string | undefined>;
1850
1849
  /**
1851
1850
  * The ARIA role of the alert, informing screen readers about the alert's purpose.
1851
+ * The role carries its own live-region semantics, so no separate `aria-live` is set.
1852
1852
  * Options:
1853
- * - 'alert': For high-priority messages that demand immediate attention.
1854
- * - 'status': For less urgent messages providing feedback or updates.
1855
- * - 'none': Used when no ARIA role is needed.
1853
+ * - 'alert': For high-priority messages that demand immediate attention (announced assertively).
1854
+ * - 'status': For less urgent messages providing feedback or updates (announced politely).
1855
+ * - 'none': No role and no announcement.
1856
1856
  * @default alert
1857
1857
  */
1858
1858
  role: _angular_core.InputSignal<AlertRole>;
@@ -1887,8 +1887,6 @@ declare class AlertComponent {
1887
1887
  * Close click output
1888
1888
  */
1889
1889
  readonly closeClick: _angular_core.OutputEmitterRef<void>;
1890
- getAriaLive: _angular_core.Signal<"assertive" | "polite" | "off">;
1891
- getAriaLabel: _angular_core.Signal<string>;
1892
1890
  classes: _angular_core.Signal<{
1893
1891
  [x: string]: boolean;
1894
1892
  "tedi-alert": boolean;
@@ -1897,7 +1895,7 @@ declare class AlertComponent {
1897
1895
  }>;
1898
1896
  handleClose(): void;
1899
1897
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AlertComponent, never>;
1900
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<AlertComponent, "tedi-alert", never, { "title": { "alias": "title"; "required": false; "isSignal": true; }; "type": { "alias": "type"; "required": false; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "showClose": { "alias": "showClose"; "required": false; "isSignal": true; }; "role": { "alias": "role"; "required": false; "isSignal": true; }; "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "titleElement": { "alias": "titleElement"; "required": false; "isSignal": true; }; "open": { "alias": "open"; "required": false; "isSignal": true; }; "closeDelay": { "alias": "closeDelay"; "required": false; "isSignal": true; }; }, { "open": "openChange"; "closeClick": "closeClick"; }, never, ["[tedi-alert-action]", "*"], true, never>;
1898
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<AlertComponent, "tedi-alert", never, { "title": { "alias": "title"; "required": false; "isSignal": true; }; "type": { "alias": "type"; "required": false; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "showClose": { "alias": "showClose"; "required": false; "isSignal": true; }; "closeAriaLabel": { "alias": "closeAriaLabel"; "required": false; "isSignal": true; }; "role": { "alias": "role"; "required": false; "isSignal": true; }; "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "titleElement": { "alias": "titleElement"; "required": false; "isSignal": true; }; "open": { "alias": "open"; "required": false; "isSignal": true; }; "closeDelay": { "alias": "closeDelay"; "required": false; "isSignal": true; }; }, { "open": "openChange"; "closeClick": "closeClick"; }, never, ["[tedi-alert-action]", "*"], true, never>;
1901
1899
  }
1902
1900
 
1903
1901
  declare const TOAST_DEFAULT_DURATION = 6000;
@@ -1932,15 +1930,16 @@ interface ToastConfig {
1932
1930
  */
1933
1931
  showProgressBar?: boolean;
1934
1932
  /**
1935
- * Whether to pause the auto-close timer when hovering over the toast.
1933
+ * Whether to pause the auto-close timer while the toast is hovered or
1934
+ * holds keyboard focus.
1936
1935
  * @default true
1937
1936
  */
1938
1937
  pauseOnHover?: boolean;
1939
1938
  /**
1940
- * The ARIA role of the toast, informing screen readers about the notification's priority.
1941
- * - 'status': For non-critical notifications.
1942
- * - 'alert': For critical errors.
1943
- * - 'none': Used when no ARIA role is needed.
1939
+ * Politeness of the screen reader announcement.
1940
+ * - 'status': For non-critical notifications (announced politely).
1941
+ * - 'alert': For critical errors (announced immediately).
1942
+ * - 'none': No announcement.
1944
1943
  * @default status
1945
1944
  */
1946
1945
  role?: ToastRole;
@@ -1974,10 +1973,12 @@ declare class ToastComponent {
1974
1973
  */
1975
1974
  readonly icon: _angular_core.InputSignal<string>;
1976
1975
  /**
1977
- * The ARIA role of the toast, informing screen readers about the notification's priority.
1978
- * - 'status': For non-critical notifications (screen readers announce politely).
1979
- * - 'alert': For critical errors (screen readers announce immediately).
1980
- * - 'none': Used when no ARIA role is needed.
1976
+ * Politeness of the screen reader announcement made by `ToastService`.
1977
+ * The visible toast itself is never a live region — announcing from both it
1978
+ * and the announcer made screen readers read every toast two or three times.
1979
+ * - 'status': For non-critical notifications (announced politely).
1980
+ * - 'alert': For critical errors (announced immediately).
1981
+ * - 'none': No announcement.
1981
1982
  * @default status
1982
1983
  */
1983
1984
  readonly role: _angular_core.InputSignal<AlertRole>;
@@ -2000,13 +2001,25 @@ declare class ToastComponent {
2000
2001
  * Emits when the toast is closed by the user.
2001
2002
  */
2002
2003
  readonly closed: _angular_core.OutputEmitterRef<void>;
2004
+ private readonly translationService;
2005
+ protected readonly closeLabel: _angular_core.Signal<string>;
2003
2006
  readonly mouseEnter: _angular_core.OutputEmitterRef<void>;
2004
2007
  readonly mouseLeave: _angular_core.OutputEmitterRef<void>;
2008
+ /**
2009
+ * Emits when focus enters the toast, so the auto-close timer can be paused.
2010
+ */
2011
+ readonly focusIn: _angular_core.OutputEmitterRef<void>;
2012
+ /**
2013
+ * Emits when focus leaves the toast entirely.
2014
+ */
2015
+ readonly focusOut: _angular_core.OutputEmitterRef<void>;
2005
2016
  handleClose(): void;
2006
2017
  onMouseEnter(): void;
2007
2018
  onMouseLeave(): void;
2019
+ onFocusIn(): void;
2020
+ onFocusOut(event: FocusEvent): void;
2008
2021
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<ToastComponent, never>;
2009
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<ToastComponent, "tedi-toast", never, { "title": { "alias": "title"; "required": false; "isSignal": true; }; "type": { "alias": "type"; "required": false; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "role": { "alias": "role"; "required": false; "isSignal": true; }; "duration": { "alias": "duration"; "required": false; "isSignal": true; }; "showProgressBar": { "alias": "showProgressBar"; "required": false; "isSignal": true; }; "paused": { "alias": "paused"; "required": false; "isSignal": true; }; }, { "closed": "closed"; "mouseEnter": "mouseEnter"; "mouseLeave": "mouseLeave"; }, never, ["*"], true, never>;
2022
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ToastComponent, "tedi-toast", never, { "title": { "alias": "title"; "required": false; "isSignal": true; }; "type": { "alias": "type"; "required": false; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "role": { "alias": "role"; "required": false; "isSignal": true; }; "duration": { "alias": "duration"; "required": false; "isSignal": true; }; "showProgressBar": { "alias": "showProgressBar"; "required": false; "isSignal": true; }; "paused": { "alias": "paused"; "required": false; "isSignal": true; }; }, { "closed": "closed"; "mouseEnter": "mouseEnter"; "mouseLeave": "mouseLeave"; "focusIn": "focusIn"; "focusOut": "focusOut"; }, never, ["*"], true, never>;
2010
2023
  }
2011
2024
 
2012
2025
  interface ToastItem {
@@ -2292,6 +2305,81 @@ declare class ClosingButtonComponent {
2292
2305
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<ClosingButtonComponent, "button[tedi-closing-button]", never, { "size": { "alias": "size"; "required": false; "isSignal": true; }; "iconSize": { "alias": "iconSize"; "required": false; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; "showTitle": { "alias": "showTitle"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
2293
2306
  }
2294
2307
 
2308
+ type FloatingButtonVariant = "primary" | "secondary";
2309
+ type FloatingButtonSize = "default" | "large";
2310
+ type FloatingButtonAxis = "horizontal" | "vertical";
2311
+ type FloatingButtonPosition = "fixed" | "absolute" | "sticky" | "relative" | "static";
2312
+ type FloatingButtonPlacement = {
2313
+ vertical: "top" | "bottom" | "center";
2314
+ horizontal: "left" | "right" | "center";
2315
+ };
2316
+ type FloatingButtonOffset = {
2317
+ top?: number | string;
2318
+ bottom?: number | string;
2319
+ left?: number | string;
2320
+ right?: number | string;
2321
+ };
2322
+ declare class FloatingButtonComponent implements OnInit {
2323
+ private readonly baseButton;
2324
+ /**
2325
+ * The button's color variant.
2326
+ * @default primary
2327
+ */
2328
+ readonly variant: _angular_core.InputSignal<FloatingButtonVariant>;
2329
+ /**
2330
+ * The button's size.
2331
+ * @default default
2332
+ */
2333
+ readonly size: _angular_core.InputSignal<FloatingButtonSize>;
2334
+ /**
2335
+ * `vertical` rotates the button 90° counter-clockwise, with rounded left
2336
+ * corners and square right corners. Intended for desktop side placement;
2337
+ * on mobile prefer a horizontal button near the bottom, or an icon-only one.
2338
+ *
2339
+ * Rotation does not change the layout box. To align the visible button with
2340
+ * an edge, center it in a container that reserves its rotated width and height,
2341
+ * then position the container at that edge. See the Placement story.
2342
+ * @default horizontal
2343
+ */
2344
+ readonly axis: _angular_core.InputSignal<FloatingButtonAxis>;
2345
+ /**
2346
+ * CSS positioning mode. Defaults to `fixed`; use `static` to keep the button
2347
+ * in normal document flow.
2348
+ * @default fixed
2349
+ */
2350
+ readonly position: _angular_core.InputSignal<FloatingButtonPosition>;
2351
+ /**
2352
+ * Where to pin the button within its containing block. Applied as `top` / `bottom` /
2353
+ * `left` / `right`; `center` pins the midpoint on that axis. Has no effect when
2354
+ * `position` is `static`.
2355
+ */
2356
+ readonly placement: _angular_core.InputSignal<FloatingButtonPlacement | undefined>;
2357
+ /**
2358
+ * Distance from the pinned edges, defaulting to `0`. Numbers are treated as pixels,
2359
+ * strings accept CSS lengths such as `1rem`. Only the edges named by `placement` apply.
2360
+ */
2361
+ readonly offset: _angular_core.InputSignal<FloatingButtonOffset | undefined>;
2362
+ /**
2363
+ * Overrides the button's CSS `z-index`. Defaults to `--z-index-feedback` when omitted.
2364
+ */
2365
+ readonly zIndex: _angular_core.InputSignal<number | undefined>;
2366
+ readonly classes: _angular_core.Signal<string>;
2367
+ /**
2368
+ * Uses the separate `translate` property for centering, while the vertical
2369
+ * orientation is handled by `rotate`.
2370
+ */
2371
+ protected readonly placementStyles: _angular_core.Signal<{
2372
+ top: string | null;
2373
+ bottom: string | null;
2374
+ left: string | null;
2375
+ right: string | null;
2376
+ translate: string | null;
2377
+ }>;
2378
+ ngOnInit(): void;
2379
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<FloatingButtonComponent, never>;
2380
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<FloatingButtonComponent, "[tedi-floating-button]", never, { "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "axis": { "alias": "axis"; "required": false; "isSignal": true; }; "position": { "alias": "position"; "required": false; "isSignal": true; }; "placement": { "alias": "placement"; "required": false; "isSignal": true; }; "offset": { "alias": "offset"; "required": false; "isSignal": true; }; "zIndex": { "alias": "zIndex"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, [{ directive: typeof BaseButtonDirective; inputs: {}; outputs: {}; }]>;
2381
+ }
2382
+
2295
2383
  /**
2296
2384
  * A single item inside a `tedi-accordion`. Owns the item's state (expanded)
2297
2385
  * and the inputs shared by header and content (selected, showIconCard,
@@ -5166,10 +5254,17 @@ declare class TruncateComponent {
5166
5254
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<TruncateComponent, "tedi-truncate", never, { "text": { "alias": "text"; "required": true; "isSignal": true; }; "maxLength": { "alias": "maxLength"; "required": false; "isSignal": true; }; "ellipsis": { "alias": "ellipsis"; "required": false; "isSignal": true; }; "expandable": { "alias": "expandable"; "required": false; "isSignal": true; }; "expanded": { "alias": "expanded"; "required": false; "isSignal": true; }; }, { "expanded": "expandedChange"; }, never, never, true, never>;
5167
5255
  }
5168
5256
 
5169
- type DropdownTriggerAriaHasPopup = "menu" | "listbox" | "dialog" | "true";
5257
+ type DropdownTriggerAriaHasPopup = "menu" | "listbox" | "dialog" | "true" | "false";
5170
5258
  declare class DropdownTriggerDirective implements AfterViewInit {
5171
- /** Defines the aria-haspopup attribute for the trigger, informing assistive technologies whether it opens a menu or listbox. Improves accessibility by describing the type of popup. */
5172
- readonly ariaHaspopup: _angular_core.InputSignal<DropdownTriggerAriaHasPopup>;
5259
+ /**
5260
+ * The `aria-haspopup` value for the trigger, telling assistive technology
5261
+ * what kind of popup it opens.
5262
+ *
5263
+ * Defaults to the content's `dropdownRole`: `menu` for a menu, `listbox` for
5264
+ * a listbox, and no attribute for a plain `list`, which ARIA has no
5265
+ * `aria-haspopup` token for. `false` also omits the attribute.
5266
+ */
5267
+ readonly ariaHaspopup: _angular_core.InputSignal<DropdownTriggerAriaHasPopup | undefined>;
5173
5268
  readonly host: ElementRef<HTMLElement>;
5174
5269
  readonly dropdown: DropdownComponent;
5175
5270
  readonly overlayOrigin: CdkOverlayOrigin;
@@ -5182,6 +5277,7 @@ declare class DropdownTriggerDirective implements AfterViewInit {
5182
5277
  * would both be tab stops, and the ARIA state would land on the wrong element.
5183
5278
  */
5184
5279
  private readonly triggerElement;
5280
+ private readonly hasPopup;
5185
5281
  constructor();
5186
5282
  ngAfterViewInit(): void;
5187
5283
  focus(): void;
@@ -5190,6 +5286,7 @@ declare class DropdownTriggerDirective implements AfterViewInit {
5190
5286
  get focusableElement(): HTMLElement;
5191
5287
  onClick(): void;
5192
5288
  onKeydown(event: KeyboardEvent): void;
5289
+ private isWidgetContent;
5193
5290
  private resolveTriggerElement;
5194
5291
  private isNativelyFocusable;
5195
5292
  private openAndFocusFirst;
@@ -5198,6 +5295,18 @@ declare class DropdownTriggerDirective implements AfterViewInit {
5198
5295
  static ɵdir: _angular_core.ɵɵDirectiveDeclaration<DropdownTriggerDirective, "[tedi-dropdown-trigger]", never, { "ariaHaspopup": { "alias": "ariaHaspopup"; "required": false; "isSignal": true; }; }, {}, never, never, true, [{ directive: typeof _angular_cdk_overlay.CdkOverlayOrigin; inputs: {}; outputs: {}; }]>;
5199
5296
  }
5200
5297
 
5298
+ /**
5299
+ * How the dropdown panel is exposed to assistive technology.
5300
+ *
5301
+ * - `menu`: a menu of actions. Composite widget, so it is a single tab stop
5302
+ * with arrow-key navigation and its items are `menuitem`s.
5303
+ * - `listbox`: a list of options, one of which can be selected. Composite
5304
+ * widget, like `menu`, and its items are `option`s.
5305
+ * - `list`: a plain list, not a widget. Items keep their own semantics, so
5306
+ * navigation links stay links and each is its own tab stop. Use this
5307
+ * whenever the panel is a set of links.
5308
+ */
5309
+ type DropdownRole = "menu" | "listbox" | "list";
5201
5310
  interface DropdownApi {
5202
5311
  /** Current value of the dropdown. Used to track the selected option in listbox mode. */
5203
5312
  value: WritableSignal<string | undefined>;
@@ -5227,7 +5336,9 @@ interface DropdownApi {
5227
5336
  declare const DROPDOWN_API: InjectionToken<DropdownApi>;
5228
5337
  interface DropdownContentApi {
5229
5338
  /** The ARIA role of the dropdown content. Determines keyboard interaction and accessibility semantics. */
5230
- dropdownRole: Signal<"menu" | "listbox">;
5339
+ dropdownRole: Signal<DropdownRole>;
5340
+ /** Whether the content is a composite widget (`menu`, `listbox`) rather than a plain `list`. Widgets own focus management and key handling; a plain list leaves both to the items' own controls. */
5341
+ isWidget: Signal<boolean>;
5231
5342
  }
5232
5343
  declare const DROPDOWN_CONTENT_API: InjectionToken<DropdownContentApi>;
5233
5344
 
@@ -5279,6 +5390,20 @@ declare class DropdownItemComponent {
5279
5390
  readonly value: _angular_core.InputSignal<string | undefined>;
5280
5391
  /** Is item disabled? */
5281
5392
  readonly disabled: _angular_core.InputSignal<boolean>;
5393
+ /**
5394
+ * Whether the projected content is itself the interactive control, e.g. a
5395
+ * button. In a `menu` or `listbox` the item role and the roving tabindex then
5396
+ * move onto that element instead of the host `li`, so assistive technology
5397
+ * reports one control per item and the control keeps its own activation
5398
+ * behaviour.
5399
+ *
5400
+ * A widget role replaces the control's own role, so a projected link stops
5401
+ * being announced as a link. For navigation links use
5402
+ * `dropdownRole="list"` instead, where this input is not needed: a plain list
5403
+ * adds no roles, and the links stay links and stay in the tab order.
5404
+ * @default false
5405
+ */
5406
+ readonly interactiveContent: _angular_core.InputSignal<boolean>;
5282
5407
  /**
5283
5408
  * Whether the item's label clips overflowing content (for text ellipsis).
5284
5409
  * Set `false` when projecting content with decorations that intentionally
@@ -5304,20 +5429,58 @@ declare class DropdownItemComponent {
5304
5429
  readonly dropdownContent: DropdownContentApi;
5305
5430
  /** Check if custom dropdown-item-value is provided */
5306
5431
  readonly customItemValue: _angular_core.Signal<DropdownItemValueComponent | undefined>;
5432
+ private readonly renderer;
5433
+ private readonly destroyRef;
5434
+ private control;
5435
+ constructor();
5436
+ /** The widget role for this item, or `null` in a plain `list`. */
5437
+ itemRole(): "menuitem" | "option" | null;
5438
+ hostRole(): "option" | "menuitem" | "none" | null;
5439
+ hostAriaSelected(): boolean | null;
5440
+ hostAriaDisabled(): "true" | null;
5441
+ hostTabindex(): "-1" | null;
5442
+ /**
5443
+ * Whether the item's ARIA state and focus belong on the projected control
5444
+ * rather than the host `li`. Always true in a plain `list`, where the
5445
+ * projected control is what the item is.
5446
+ */
5447
+ private controlOwnsSemantics;
5307
5448
  isSelected(): boolean;
5449
+ /**
5450
+ * The element that carries the item's role, roving tabindex and focus: the
5451
+ * projected control when it owns the item's semantics, the host `li`
5452
+ * otherwise.
5453
+ */
5454
+ focusTarget(): HTMLElement;
5308
5455
  focus(): void;
5456
+ setTabindex(value: string | null): void;
5457
+ private controlElement;
5309
5458
  onClick(): void;
5310
5459
  onMousedown(event: MouseEvent): void;
5311
5460
  onKeydown(event: KeyboardEvent): void;
5461
+ /** Returns whether the key was an activation key and has been dealt with. */
5462
+ private handleActivationKey;
5312
5463
  private onItemSelect;
5313
5464
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<DropdownItemComponent, never>;
5314
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<DropdownItemComponent, "li[tedi-dropdown-item]", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "clipContent": { "alias": "clipContent"; "required": false; "isSignal": true; }; "closeOnSelect": { "alias": "closeOnSelect"; "required": false; "isSignal": true; }; }, { "itemSelect": "itemSelect"; }, ["customItemValue"], ["tedi-dropdown-item-value", "*"], true, never>;
5465
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<DropdownItemComponent, "li[tedi-dropdown-item]", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "interactiveContent": { "alias": "interactiveContent"; "required": false; "isSignal": true; }; "clipContent": { "alias": "clipContent"; "required": false; "isSignal": true; }; "closeOnSelect": { "alias": "closeOnSelect"; "required": false; "isSignal": true; }; }, { "itemSelect": "itemSelect"; }, ["customItemValue"], ["tedi-dropdown-item-value", "*"], true, never>;
5315
5466
  }
5316
5467
 
5317
- type DropdownRole = "menu" | "listbox";
5318
5468
  declare class DropdownContentComponent {
5319
5469
  /**
5320
- * Role for content, use listbox for list and menu for actions
5470
+ * How the panel is exposed to assistive technology: `menu` for actions,
5471
+ * `listbox` for selectable options, `list` for a plain list of links.
5472
+ *
5473
+ * `menu` and `listbox` are composite widgets, so the panel is a single tab
5474
+ * stop with arrow-key navigation and the items carry `menuitem` / `option`.
5475
+ * `list` is not a widget: it adds no item roles and no key handling, so
5476
+ * projected links keep the link role and each one is its own tab stop. A
5477
+ * panel of navigation links belongs in `list`, because a widget role would
5478
+ * replace the link role and screen readers would stop announcing them as
5479
+ * links. The `role="list"` it puts on the `ul` is redundant on paper but not
5480
+ * in Safari, which drops list semantics from a list with no marker. A `list`
5481
+ * panel also renders in the dropdown's own place in the DOM rather than at the
5482
+ * end of `<body>`, so it keeps its place in reading order for the screen
5483
+ * readers that navigate by DOM order instead of by `Tab`.
5321
5484
  * @default menu
5322
5485
  */
5323
5486
  readonly dropdownRole: _angular_core.InputSignal<DropdownRole>;
@@ -5325,6 +5488,7 @@ declare class DropdownContentComponent {
5325
5488
  private readonly dropdownApi;
5326
5489
  readonly containerId: _angular_core.Signal<string>;
5327
5490
  readonly items: _angular_core.Signal<readonly DropdownItemComponent[]>;
5491
+ readonly isWidget: _angular_core.Signal<boolean>;
5328
5492
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<DropdownContentComponent, never>;
5329
5493
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<DropdownContentComponent, "tedi-dropdown-content", never, { "dropdownRole": { "alias": "dropdownRole"; "required": false; "isSignal": true; }; }, {}, ["items"], ["*", "li[tedi-dropdown-item]"], true, never>;
5330
5494
  }
@@ -5374,6 +5538,7 @@ declare class DropdownComponent implements OnDestroy {
5374
5538
  private readonly platformId;
5375
5539
  private readonly document;
5376
5540
  private readonly renderer;
5541
+ private readonly overlayContainer;
5377
5542
  private scrollListener?;
5378
5543
  private skipNextGestureOutsideClick;
5379
5544
  constructor();
@@ -5384,6 +5549,12 @@ declare class DropdownComponent implements OnDestroy {
5384
5549
  onOutsideClick(event?: MouseEvent): void;
5385
5550
  handleFocusOut: (event: FocusEvent) => void;
5386
5551
  tabOutOfDropdown(shiftKey: boolean): void;
5552
+ /**
5553
+ * Focuses `target` and only then tears the panel down, so focus is never on a
5554
+ * detached element. `handleFocusOut` already closes on the resulting
5555
+ * `focusin`; the explicit call covers a target that refuses focus.
5556
+ */
5557
+ private moveFocusOut;
5387
5558
  focusFirstItem(): void;
5388
5559
  focusLastItem(): void;
5389
5560
  setActiveToSelectedOrFirst(): void;
@@ -5391,6 +5562,11 @@ declare class DropdownComponent implements OnDestroy {
5391
5562
  focusNextItem(fromEl: HTMLLIElement): void;
5392
5563
  focusPrevItem(fromEl: HTMLLIElement): void;
5393
5564
  updateTabindexes(): void;
5565
+ /** Moves focus to the first focusable element in the panel. */
5566
+ focusPanelStart(): void;
5567
+ onPanelKeydown(event: KeyboardEvent): void;
5568
+ private panelFocusables;
5569
+ private closeAndFocusTrigger;
5394
5570
  private setupScrollListener;
5395
5571
  private cleanupScrollListener;
5396
5572
  private findIndexByElement;
@@ -5944,6 +6120,13 @@ interface DateInputTag {
5944
6120
  }
5945
6121
  declare class DateInputComponent implements AfterViewChecked {
5946
6122
  readonly inputId: _angular_core.InputSignal<string>;
6123
+ /** `name` attribute of the text input; omitted from the DOM when not set. */
6124
+ readonly name: _angular_core.InputSignal<string | undefined>;
6125
+ /**
6126
+ * `aria-describedby` ids for the input. Handed to the `tedi-text-field`
6127
+ * directive, which owns the input's `aria-describedby` attribute.
6128
+ */
6129
+ readonly ariaDescribedby: _angular_core.InputSignal<string | null>;
5947
6130
  readonly value: _angular_core.InputSignal<string>;
5948
6131
  readonly tags: _angular_core.InputSignal<readonly DateInputTag[]>;
5949
6132
  readonly mode: _angular_core.InputSignal<DateFieldMode>;
@@ -5975,6 +6158,7 @@ declare class DateInputComponent implements AfterViewChecked {
5975
6158
  private readonly inputElement;
5976
6159
  private readonly fieldElement;
5977
6160
  private readonly tagElements;
6161
+ private readonly textField;
5978
6162
  /** Number of tags that fit on a single row; `null` until measured. */
5979
6163
  readonly visibleTagsCount: _angular_core.WritableSignal<number | null>;
5980
6164
  constructor();
@@ -5997,7 +6181,7 @@ declare class DateInputComponent implements AfterViewChecked {
5997
6181
  private calculateVisibleTags;
5998
6182
  private getAvailableTagWidth;
5999
6183
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<DateInputComponent, never>;
6000
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<DateInputComponent, "tedi-date-input", never, { "inputId": { "alias": "inputId"; "required": true; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; "tags": { "alias": "tags"; "required": false; "isSignal": true; }; "mode": { "alias": "mode"; "required": false; "isSignal": true; }; "multiRow": { "alias": "multiRow"; "required": false; "isSignal": true; }; "ellipsis": { "alias": "ellipsis"; "required": false; "isSignal": true; }; "removable": { "alias": "removable"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "readOnly": { "alias": "readOnly"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "iconActive": { "alias": "iconActive"; "required": false; "isSignal": true; }; "iconDisabled": { "alias": "iconDisabled"; "required": false; "isSignal": true; }; "useNativePicker": { "alias": "useNativePicker"; "required": false; "isSignal": true; }; "nativeIsoValue": { "alias": "nativeIsoValue"; "required": false; "isSignal": true; }; "clearable": { "alias": "clearable"; "required": false; "isSignal": true; }; }, { "inputChange": "inputChange"; "iconClick": "iconClick"; "tagRemove": "tagRemove"; "clear": "clear"; }, never, never, true, never>;
6184
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<DateInputComponent, "tedi-date-input", never, { "inputId": { "alias": "inputId"; "required": true; "isSignal": true; }; "name": { "alias": "name"; "required": false; "isSignal": true; }; "ariaDescribedby": { "alias": "ariaDescribedby"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; "tags": { "alias": "tags"; "required": false; "isSignal": true; }; "mode": { "alias": "mode"; "required": false; "isSignal": true; }; "multiRow": { "alias": "multiRow"; "required": false; "isSignal": true; }; "ellipsis": { "alias": "ellipsis"; "required": false; "isSignal": true; }; "removable": { "alias": "removable"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "readOnly": { "alias": "readOnly"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "iconActive": { "alias": "iconActive"; "required": false; "isSignal": true; }; "iconDisabled": { "alias": "iconDisabled"; "required": false; "isSignal": true; }; "useNativePicker": { "alias": "useNativePicker"; "required": false; "isSignal": true; }; "nativeIsoValue": { "alias": "nativeIsoValue"; "required": false; "isSignal": true; }; "clearable": { "alias": "clearable"; "required": false; "isSignal": true; }; }, { "inputChange": "inputChange"; "iconClick": "iconClick"; "tagRemove": "tagRemove"; "clear": "clear"; }, never, never, true, never>;
6001
6185
  }
6002
6186
 
6003
6187
  /**
@@ -6086,6 +6270,11 @@ declare class DateFieldComponent implements OnInit, ControlValueAccessor, FormFi
6086
6270
  * `<label tedi-label [for]>` to the same value.
6087
6271
  */
6088
6272
  readonly inputId: _angular_core.InputSignal<string>;
6273
+ /**
6274
+ * `name` attribute of the underlying text input, used by native form
6275
+ * submission. Omitted from the DOM when not set.
6276
+ */
6277
+ readonly name: _angular_core.InputSignal<string | undefined>;
6089
6278
  /**
6090
6279
  * The selected value (two-way / `ControlValueAccessor`). Shape follows `mode`:
6091
6280
  * `single` → `Date | null`, `multiple` → `Date[]`, `range` → `{ from, to }`.
@@ -6279,7 +6468,17 @@ declare class DateFieldComponent implements OnInit, ControlValueAccessor, FormFi
6279
6468
  readonly overlayOpen: _angular_core.WritableSignal<boolean>;
6280
6469
  private readonly openedBy;
6281
6470
  readonly overlayPositions: _angular_core.Signal<ConnectedPosition[]>;
6471
+ /**
6472
+ * `aria-describedby` ids for the inner input — the wrapping form-field's
6473
+ * feedback text, plus any set on `<tedi-date-field>` itself.
6474
+ */
6475
+ readonly describedBy: _tedi_design_system_angular_tedi.ControlDescribedBy;
6282
6476
  private readonly cvaDisabled;
6477
+ /**
6478
+ * Uncommitted input text, tracked separately so resets clear it even when
6479
+ * `value` is unchanged. Value changes discard it; `null` shows the formatted value.
6480
+ */
6481
+ private readonly typedText;
6283
6482
  private modalRef;
6284
6483
  private scrollListener?;
6285
6484
  private onChange;
@@ -6308,6 +6507,11 @@ declare class DateFieldComponent implements OnInit, ControlValueAccessor, FormFi
6308
6507
  readonly nativeIsoValue: _angular_core.Signal<string>;
6309
6508
  readonly effectivePlaceholder: _angular_core.Signal<string>;
6310
6509
  readonly displayValue: _angular_core.Signal<string>;
6510
+ /**
6511
+ * What the text input actually shows: uncommitted typed text when there is
6512
+ * any, otherwise the formatted `value`.
6513
+ */
6514
+ readonly inputText: _angular_core.Signal<string>;
6311
6515
  readonly tagsForMultipleMode: _angular_core.Signal<DateInputTag[]>;
6312
6516
  readonly canClear: _angular_core.Signal<boolean>;
6313
6517
  readonly inputIsTrigger: _angular_core.Signal<boolean>;
@@ -6317,6 +6521,7 @@ declare class DateFieldComponent implements OnInit, ControlValueAccessor, FormFi
6317
6521
  registerOnChange(fn: (value: DateFieldValue) => void): void;
6318
6522
  registerOnTouched(fn: () => void): void;
6319
6523
  setDisabledState(isDisabled: boolean): void;
6524
+ setDescribedBy(ids: string[]): void;
6320
6525
  focus(): void;
6321
6526
  reset(): void;
6322
6527
  handleClear(): void;
@@ -6356,7 +6561,7 @@ declare class DateFieldComponent implements OnInit, ControlValueAccessor, FormFi
6356
6561
  private toIsoDate;
6357
6562
  private queryNativeInput;
6358
6563
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<DateFieldComponent, never>;
6359
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<DateFieldComponent, "tedi-date-field", never, { "inputId": { "alias": "inputId"; "required": true; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; "mode": { "alias": "mode"; "required": false; "isSignal": true; }; "multiRow": { "alias": "multiRow"; "required": false; "isSignal": true; }; "tagEllipsis": { "alias": "tagEllipsis"; "required": false; "isSignal": true; }; "isTagRemovable": { "alias": "isTagRemovable"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "disabledMatchers": { "alias": "disabledMatchers"; "required": false; "isSignal": true; }; "inputDisabled": { "alias": "inputDisabled"; "required": false; "isSignal": true; }; "readOnly": { "alias": "readOnly"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "invalidInput": { "alias": "invalid"; "required": false; "isSignal": true; }; "minDate": { "alias": "minDate"; "required": false; "isSignal": true; }; "maxDate": { "alias": "maxDate"; "required": false; "isSignal": true; }; "disablePast": { "alias": "disablePast"; "required": false; "isSignal": true; }; "disableFuture": { "alias": "disableFuture"; "required": false; "isSignal": true; }; "shouldDisableMonth": { "alias": "shouldDisableMonth"; "required": false; "isSignal": true; }; "shouldDisableYear": { "alias": "shouldDisableYear"; "required": false; "isSignal": true; }; "minYear": { "alias": "minYear"; "required": false; "isSignal": true; }; "maxYear": { "alias": "maxYear"; "required": false; "isSignal": true; }; "availableDays": { "alias": "availableDays"; "required": false; "isSignal": true; }; "unavailableDays": { "alias": "unavailableDays"; "required": false; "isSignal": true; }; "selectionLevel": { "alias": "selectionLevel"; "required": false; "isSignal": true; }; "monthYearSelectType": { "alias": "monthYearSelectType"; "required": false; "isSignal": true; }; "initialMonth": { "alias": "initialMonth"; "required": false; "isSignal": true; }; "localeCode": { "alias": "localeCode"; "required": false; "isSignal": true; }; "closeOnSelect": { "alias": "closeOnSelect"; "required": false; "isSignal": true; }; "showOutsideDays": { "alias": "showOutsideDays"; "required": false; "isSignal": true; }; "showWeekNumbers": { "alias": "showWeekNumbers"; "required": false; "isSignal": true; }; "numberOfMonths": { "alias": "numberOfMonths"; "required": false; "isSignal": true; }; "enableCalendar": { "alias": "enableCalendar"; "required": false; "isSignal": true; }; "calendarTrigger": { "alias": "calendarTrigger"; "required": false; "isSignal": true; }; "useNativePicker": { "alias": "useNativePicker"; "required": false; "isSignal": true; }; "hideOnScroll": { "alias": "hideOnScroll"; "required": false; "isSignal": true; }; "modal": { "alias": "modal"; "required": false; "isSignal": true; }; "fullscreen": { "alias": "fullscreen"; "required": false; "isSignal": true; }; "formatDate": { "alias": "formatDate"; "required": false; "isSignal": true; }; "parseDate": { "alias": "parseDate"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "openChange": "openChange"; }, never, ["[tediCalendarFooter]"], true, never>;
6564
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<DateFieldComponent, "tedi-date-field", never, { "inputId": { "alias": "inputId"; "required": true; "isSignal": true; }; "name": { "alias": "name"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; "mode": { "alias": "mode"; "required": false; "isSignal": true; }; "multiRow": { "alias": "multiRow"; "required": false; "isSignal": true; }; "tagEllipsis": { "alias": "tagEllipsis"; "required": false; "isSignal": true; }; "isTagRemovable": { "alias": "isTagRemovable"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "disabledMatchers": { "alias": "disabledMatchers"; "required": false; "isSignal": true; }; "inputDisabled": { "alias": "inputDisabled"; "required": false; "isSignal": true; }; "readOnly": { "alias": "readOnly"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "invalidInput": { "alias": "invalid"; "required": false; "isSignal": true; }; "minDate": { "alias": "minDate"; "required": false; "isSignal": true; }; "maxDate": { "alias": "maxDate"; "required": false; "isSignal": true; }; "disablePast": { "alias": "disablePast"; "required": false; "isSignal": true; }; "disableFuture": { "alias": "disableFuture"; "required": false; "isSignal": true; }; "shouldDisableMonth": { "alias": "shouldDisableMonth"; "required": false; "isSignal": true; }; "shouldDisableYear": { "alias": "shouldDisableYear"; "required": false; "isSignal": true; }; "minYear": { "alias": "minYear"; "required": false; "isSignal": true; }; "maxYear": { "alias": "maxYear"; "required": false; "isSignal": true; }; "availableDays": { "alias": "availableDays"; "required": false; "isSignal": true; }; "unavailableDays": { "alias": "unavailableDays"; "required": false; "isSignal": true; }; "selectionLevel": { "alias": "selectionLevel"; "required": false; "isSignal": true; }; "monthYearSelectType": { "alias": "monthYearSelectType"; "required": false; "isSignal": true; }; "initialMonth": { "alias": "initialMonth"; "required": false; "isSignal": true; }; "localeCode": { "alias": "localeCode"; "required": false; "isSignal": true; }; "closeOnSelect": { "alias": "closeOnSelect"; "required": false; "isSignal": true; }; "showOutsideDays": { "alias": "showOutsideDays"; "required": false; "isSignal": true; }; "showWeekNumbers": { "alias": "showWeekNumbers"; "required": false; "isSignal": true; }; "numberOfMonths": { "alias": "numberOfMonths"; "required": false; "isSignal": true; }; "enableCalendar": { "alias": "enableCalendar"; "required": false; "isSignal": true; }; "calendarTrigger": { "alias": "calendarTrigger"; "required": false; "isSignal": true; }; "useNativePicker": { "alias": "useNativePicker"; "required": false; "isSignal": true; }; "hideOnScroll": { "alias": "hideOnScroll"; "required": false; "isSignal": true; }; "modal": { "alias": "modal"; "required": false; "isSignal": true; }; "fullscreen": { "alias": "fullscreen"; "required": false; "isSignal": true; }; "formatDate": { "alias": "formatDate"; "required": false; "isSignal": true; }; "parseDate": { "alias": "parseDate"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "openChange": "openChange"; }, never, ["[tediCalendarFooter]"], true, never>;
6360
6565
  }
6361
6566
 
6362
6567
  declare class DatePickerCalendarGridComponent {
@@ -6412,6 +6617,9 @@ type DatePickerMatcher = Date | Date[] | {
6412
6617
  from: Date;
6413
6618
  to?: Date;
6414
6619
  } | ((date: Date) => boolean);
6620
+ /**
6621
+ * @deprecated Use `tedi-date-field` from `@tedi-design-system/angular/tedi` instead.
6622
+ */
6415
6623
  declare class DatePickerComponent implements OnInit, ControlValueAccessor {
6416
6624
  readonly today: Date;
6417
6625
  readonly uniqueId: string;
@@ -6570,7 +6778,7 @@ declare class FeedbackTextComponent {
6570
6778
  */
6571
6779
  position: _angular_core.InputSignal<FeedbackTextPosition>;
6572
6780
  role: _angular_core.Signal<"alert" | undefined>;
6573
- ariaLive: _angular_core.Signal<"assertive" | "polite">;
6781
+ ariaLive: _angular_core.Signal<"polite" | "assertive">;
6574
6782
  classes: _angular_core.Signal<string>;
6575
6783
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<FeedbackTextComponent, never>;
6576
6784
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<FeedbackTextComponent, "tedi-feedback-text", never, { "id": { "alias": "id"; "required": false; "isSignal": true; }; "text": { "alias": "text"; "required": true; "isSignal": true; }; "type": { "alias": "type"; "required": false; "isSignal": true; }; "position": { "alias": "position"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
@@ -7279,6 +7487,11 @@ declare class SelectComponent<T = unknown> implements AfterContentChecked, After
7279
7487
  * Used for label association and accessibility.
7280
7488
  */
7281
7489
  inputId: _angular_core.InputSignal<string>;
7490
+ /**
7491
+ * Name the selection is submitted under in a native form, one entry per
7492
+ * selected value. With object options, set `bindValue` to pick what is sent.
7493
+ */
7494
+ name: _angular_core.InputSignal<string | undefined>;
7282
7495
  /**
7283
7496
  * Label text displayed above the select.
7284
7497
  */
@@ -7541,6 +7754,14 @@ declare class SelectComponent<T = unknown> implements AfterContentChecked, After
7541
7754
  measuredRowHeight: _angular_core.WritableSignal<number | null>;
7542
7755
  private static readonly DEFAULT_ROW_HEIGHT;
7543
7756
  private static readonly SMALL_ROW_HEIGHT;
7757
+ /**
7758
+ * Values written to the hidden form inputs — one entry per selected value,
7759
+ * and a single empty entry when nothing is selected, so the field is still
7760
+ * submitted.
7761
+ */
7762
+ readonly formValues: _angular_core.Signal<string[]>;
7763
+ readonly isInvalid: _angular_core.Signal<boolean>;
7764
+ readonly feedbackId: _angular_core.Signal<string | null>;
7544
7765
  hiddenTagsCount: _angular_core.Signal<number>;
7545
7766
  /**
7546
7767
  * Whether the default identity comparator is in use. When true, selection and
@@ -7687,7 +7908,7 @@ declare class SelectComponent<T = unknown> implements AfterContentChecked, After
7687
7908
  registerOnTouched(fn: () => void): void;
7688
7909
  setDisabledState(isDisabled: boolean): void;
7689
7910
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<SelectComponent<any>, never>;
7690
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<SelectComponent<any>, "tedi-select", never, { "inputId": { "alias": "inputId"; "required": true; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "tooltip": { "alias": "tooltip"; "required": false; "isSignal": true; }; "ariaLabelledby": { "alias": "ariaLabelledby"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "state": { "alias": "state"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "clearable": { "alias": "clearable"; "required": false; "isSignal": true; }; "dropdownWidthRef": { "alias": "dropdownWidthRef"; "required": false; "isSignal": true; }; "dropdownAlign": { "alias": "dropdownAlign"; "required": false; "isSignal": true; }; "feedbackText": { "alias": "feedbackText"; "required": false; "isSignal": true; }; "options": { "alias": "options"; "required": false; "isSignal": true; }; "bindLabel": { "alias": "bindLabel"; "required": false; "isSignal": true; }; "bindValue": { "alias": "bindValue"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; "allowMultiple": { "alias": "allowMultiple"; "required": false; "isSignal": true; }; "groupBy": { "alias": "groupBy"; "required": false; "isSignal": true; }; "showSelectAll": { "alias": "showSelectAll"; "required": false; "isSignal": true; }; "selectableGroups": { "alias": "selectableGroups"; "required": false; "isSignal": true; }; "isTagRemovable": { "alias": "isTagRemovable"; "required": false; "isSignal": true; }; "multiRow": { "alias": "multiRow"; "required": false; "isSignal": true; }; "tagEllipsis": { "alias": "tagEllipsis"; "required": false; "isSignal": true; }; "ellipsis": { "alias": "ellipsis"; "required": false; "isSignal": true; }; "compareWith": { "alias": "compareWith"; "required": false; "isSignal": true; }; "disabledKey": { "alias": "disabledKey"; "required": false; "isSignal": true; }; "noOptionsMessage": { "alias": "noOptionsMessage"; "required": false; "isSignal": true; }; "maxDropdownHeight": { "alias": "maxDropdownHeight"; "required": false; "isSignal": true; }; "hideOnScroll": { "alias": "hideOnScroll"; "required": false; "isSignal": true; }; "dropdownType": { "alias": "dropdownType"; "required": false; "isSignal": true; }; "virtualScroll": { "alias": "virtualScroll"; "required": false; "isSignal": true; }; "virtualItemSize": { "alias": "virtualItemSize"; "required": false; "isSignal": true; }; "searchable": { "alias": "searchable"; "required": false; "isSignal": true; }; "searchFn": { "alias": "searchFn"; "required": false; "isSignal": true; }; "clearSearchOnSelect": { "alias": "clearSearchOnSelect"; "required": false; "isSignal": true; }; }, { "selectionChange": "selectionChange"; "searchChange": "searchChange"; "opened": "opened"; "closed": "closed"; "cleared": "cleared"; }, ["optionTemplate", "valueTemplate", "tooltipTemplate"], never, true, never>;
7911
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<SelectComponent<any>, "tedi-select", never, { "inputId": { "alias": "inputId"; "required": true; "isSignal": true; }; "name": { "alias": "name"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "tooltip": { "alias": "tooltip"; "required": false; "isSignal": true; }; "ariaLabelledby": { "alias": "ariaLabelledby"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "state": { "alias": "state"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "clearable": { "alias": "clearable"; "required": false; "isSignal": true; }; "dropdownWidthRef": { "alias": "dropdownWidthRef"; "required": false; "isSignal": true; }; "dropdownAlign": { "alias": "dropdownAlign"; "required": false; "isSignal": true; }; "feedbackText": { "alias": "feedbackText"; "required": false; "isSignal": true; }; "options": { "alias": "options"; "required": false; "isSignal": true; }; "bindLabel": { "alias": "bindLabel"; "required": false; "isSignal": true; }; "bindValue": { "alias": "bindValue"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; "allowMultiple": { "alias": "allowMultiple"; "required": false; "isSignal": true; }; "groupBy": { "alias": "groupBy"; "required": false; "isSignal": true; }; "showSelectAll": { "alias": "showSelectAll"; "required": false; "isSignal": true; }; "selectableGroups": { "alias": "selectableGroups"; "required": false; "isSignal": true; }; "isTagRemovable": { "alias": "isTagRemovable"; "required": false; "isSignal": true; }; "multiRow": { "alias": "multiRow"; "required": false; "isSignal": true; }; "tagEllipsis": { "alias": "tagEllipsis"; "required": false; "isSignal": true; }; "ellipsis": { "alias": "ellipsis"; "required": false; "isSignal": true; }; "compareWith": { "alias": "compareWith"; "required": false; "isSignal": true; }; "disabledKey": { "alias": "disabledKey"; "required": false; "isSignal": true; }; "noOptionsMessage": { "alias": "noOptionsMessage"; "required": false; "isSignal": true; }; "maxDropdownHeight": { "alias": "maxDropdownHeight"; "required": false; "isSignal": true; }; "hideOnScroll": { "alias": "hideOnScroll"; "required": false; "isSignal": true; }; "dropdownType": { "alias": "dropdownType"; "required": false; "isSignal": true; }; "virtualScroll": { "alias": "virtualScroll"; "required": false; "isSignal": true; }; "virtualItemSize": { "alias": "virtualItemSize"; "required": false; "isSignal": true; }; "searchable": { "alias": "searchable"; "required": false; "isSignal": true; }; "searchFn": { "alias": "searchFn"; "required": false; "isSignal": true; }; "clearSearchOnSelect": { "alias": "clearSearchOnSelect"; "required": false; "isSignal": true; }; }, { "selectionChange": "selectionChange"; "searchChange": "searchChange"; "opened": "opened"; "closed": "closed"; "cleared": "cleared"; }, ["optionTemplate", "valueTemplate", "tooltipTemplate"], never, true, never>;
7691
7912
  }
7692
7913
 
7693
7914
  type SliderHideLabel = boolean | "keep-space";
@@ -9258,7 +9479,7 @@ declare class HeaderMobileButtonComponent {
9258
9479
  * is confusing to assistive tech — if a popup is involved, omit `href`
9259
9480
  * so the component renders as a button.
9260
9481
  */
9261
- ariaHasPopup: _angular_core.InputSignal<"menu" | "listbox" | "dialog" | "true" | "grid" | "false" | "tree" | undefined>;
9482
+ ariaHasPopup: _angular_core.InputSignal<"menu" | "listbox" | "dialog" | "true" | "false" | "grid" | "tree" | undefined>;
9262
9483
  /**
9263
9484
  * Forwarded to the inner `<button>` as `aria-expanded`. Pair with
9264
9485
  * `ariaHasPopup` when this button toggles a dialog/menu open.
@@ -9952,9 +10173,19 @@ type RenderToken = {
9952
10173
  * the current page — add `aria-current="page"` to it yourself.
9953
10174
  *
9954
10175
  * Crumb links are underlined by default. Set `[underline]="false"` on the
9955
- * `tedi-link` for non-underlined crumbs — recommended for the `short` back-link.
9956
- * Crumbs collapsed into the ellipsis dropdown are always rendered without an
9957
- * underline, regardless of their `[underline]` setting.
10176
+ * `tedi-link` for non-underlined crumbs, which is recommended for the `short`
10177
+ * back-link. A collapsed crumb keeps its own `[underline]` setting, so it looks
10178
+ * the same in the ellipsis dropdown as it does in the trail. To restyle the
10179
+ * collapsed rows, target `.tedi-breadcrumbs__dropdown-item`, which travels with
10180
+ * them into the overlay.
10181
+ *
10182
+ * The ellipsis dropdown is a plain list (`dropdownRole="list"`), not a menu, so
10183
+ * the collapsed crumbs stay links: screen readers announce them as links and
10184
+ * each one is its own tab stop. Its panel renders inside the crumb it belongs
10185
+ * to, so the collapsed crumbs come between the ellipsis button and the next
10186
+ * crumb both in the tab order and for a screen reader that swipes through the
10187
+ * DOM. Opening it moves focus to the first collapsed crumb; Escape closes it
10188
+ * and returns focus to the button.
9958
10189
  */
9959
10190
  declare class BreadcrumbsComponent implements BreakpointInputs<BreadcrumbsInputs> {
9960
10191
  private readonly breakpointService;
@@ -10095,6 +10326,252 @@ interface UsePaginationArgs {
10095
10326
  */
10096
10327
  declare function usePagination({ page, pageCount, boundaryCount, siblingCount, }: UsePaginationArgs): PaginationItem[];
10097
10328
 
10329
+ type TableOfContentsVariant = "default" | "transparent";
10330
+ type TableOfContentsHeadingLevel = "h1" | "h2" | "h3" | "h4" | "h5" | "h6";
10331
+ /**
10332
+ * A navigation aid that lists the sections of a page and highlights the one the
10333
+ * reader is on. Compose it from `tedi-table-of-contents-item` elements; nest
10334
+ * items to build a two-level hierarchy.
10335
+ *
10336
+ * The active item is controlled via `activeId`: it gets the accent bar and active link colour.
10337
+ *
10338
+ * When `sticky` is enabled the container pins while the page scrolls. Two knobs
10339
+ * adapt it to the surrounding layout: `stickyOffset` moves where it pins (raise
10340
+ * it to clear a fixed header), and `stickyMaxHeight` overrides the height cap
10341
+ * for when the TOC scrolls inside a fixed-height container rather than the window.
10342
+ *
10343
+ * The gap the sticky TOC leaves above the viewport bottom has no input — override
10344
+ * the `--tedi-table-of-contents-sticky-bottom` CSS custom property (default
10345
+ * `1.5rem`) from any ancestor when you need to clear a fixed footer.
10346
+ */
10347
+ declare class TableOfContentsComponent {
10348
+ /**
10349
+ * Heading rendered above the list. Defaults to the localised "Table of
10350
+ * contents" label; pass `null` (or an empty string) to render it headless —
10351
+ * the navigation keeps an accessible name via `aria-label`.
10352
+ */
10353
+ readonly heading: _angular_core.InputSignal<string | null | undefined>;
10354
+ /**
10355
+ * Semantic level of the heading element (`h1`–`h6`). The visual style stays
10356
+ * h4 regardless; set this to match the surrounding page's heading outline
10357
+ * (e.g. `h2` when the TOC follows only a page `h1`).
10358
+ */
10359
+ readonly headingLevel: _angular_core.InputSignal<TableOfContentsHeadingLevel>;
10360
+ /**
10361
+ * Visual variant:
10362
+ * - `default` — rendered inside a bordered card.
10363
+ * - `transparent` — no card chrome; the list sits on the page with a
10364
+ * continuous grey left rail.
10365
+ */
10366
+ readonly variant: _angular_core.InputSignal<TableOfContentsVariant>;
10367
+ /**
10368
+ * Draws a divider under each item except the last — sub-items included — so the
10369
+ * list reads as a set of separated rows.
10370
+ * @default false
10371
+ */
10372
+ readonly bordered: _angular_core.InputSignal<boolean>;
10373
+ /** Id of the currently active item. */
10374
+ readonly activeId: _angular_core.InputSignal<string | undefined>;
10375
+ /**
10376
+ * Keep the active item visible inside the TOC's own scroll area. When the list
10377
+ * is taller than a bounded or sticky container and `activeId` changes, the TOC
10378
+ * scrolls its internal scroll region just enough to reveal the active item.
10379
+ * No-op when the list isn't scrollable (short lists, unbounded layouts).
10380
+ * @default false
10381
+ */
10382
+ readonly scrollActiveIntoView: _angular_core.InputSignal<boolean>;
10383
+ /**
10384
+ * Whether nested items are expanded by default. When `true` (default) the full
10385
+ * outline is always visible. When `false`, a branch reveals its sub-items only
10386
+ * while it is on the active trail (the active item or one of its ancestors).
10387
+ * @default true
10388
+ */
10389
+ readonly defaultOpen: _angular_core.InputSignal<boolean>;
10390
+ /** Show auto-generated hierarchical numbers (`1.`, `2.`, `2.1`, …). */
10391
+ readonly numbered: _angular_core.InputSignal<boolean>;
10392
+ /** Stick the container to the viewport while scrolling. */
10393
+ readonly sticky: _angular_core.InputSignal<boolean>;
10394
+ /**
10395
+ * Distance from the top of the scroll container at which the sticky TOC pins,
10396
+ * as any CSS length or expression. Raise it to clear a fixed header — e.g.
10397
+ * `"calc(var(--layout-header-height) + 1.5rem)"`. Drives both `top` and the
10398
+ * default `max-height`. Only applies while `sticky` is `true`.
10399
+ * @default "1.5rem"
10400
+ */
10401
+ readonly stickyOffset: _angular_core.InputSignal<string | undefined>;
10402
+ /**
10403
+ * Overrides the sticky height cap. The default keeps the TOC within the
10404
+ * viewport (`calc(100dvh - offset - 1.5rem)`); set this when the TOC scrolls
10405
+ * inside a fixed-height container rather than the window — e.g.
10406
+ * `"calc(30rem - 3rem)"` for a 30rem scroll region. Only applies while
10407
+ * `sticky` is `true`.
10408
+ */
10409
+ readonly stickyMaxHeight: _angular_core.InputSignal<string | undefined>;
10410
+ /**
10411
+ * Accessible name for the navigation landmark. Overrides the default, which is
10412
+ * the heading (via `aria-labelledby`) or the localised title when headless.
10413
+ * Useful to disambiguate multiple tables of contents on one page.
10414
+ */
10415
+ readonly ariaLabel: _angular_core.InputSignal<string | undefined>;
10416
+ private readonly translations;
10417
+ private readonly host;
10418
+ private readonly platformId;
10419
+ constructor();
10420
+ /** Top-level items, used by items to compute their hierarchical numbers. */
10421
+ readonly items: _angular_core.Signal<readonly any[]>;
10422
+ private readonly titleLabel;
10423
+ readonly resolvedHeading: _angular_core.Signal<string | null>;
10424
+ readonly navLabel: _angular_core.Signal<string>;
10425
+ readonly headingId: string;
10426
+ /** Scroll the TOC's own scroll region so the active item's row is visible. */
10427
+ private revealActiveItem;
10428
+ /** Nearest scrollable ancestor within this component (e.g. the sticky `nav`). */
10429
+ private findScrollParent;
10430
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<TableOfContentsComponent, never>;
10431
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<TableOfContentsComponent, "tedi-table-of-contents", never, { "heading": { "alias": "heading"; "required": false; "isSignal": true; }; "headingLevel": { "alias": "headingLevel"; "required": false; "isSignal": true; }; "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "bordered": { "alias": "bordered"; "required": false; "isSignal": true; }; "activeId": { "alias": "activeId"; "required": false; "isSignal": true; }; "scrollActiveIntoView": { "alias": "scrollActiveIntoView"; "required": false; "isSignal": true; }; "defaultOpen": { "alias": "defaultOpen"; "required": false; "isSignal": true; }; "numbered": { "alias": "numbered"; "required": false; "isSignal": true; }; "sticky": { "alias": "sticky"; "required": false; "isSignal": true; }; "stickyOffset": { "alias": "stickyOffset"; "required": false; "isSignal": true; }; "stickyMaxHeight": { "alias": "stickyMaxHeight"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; }, {}, ["items"], ["tedi-table-of-contents-item"], true, never>;
10432
+ }
10433
+
10434
+ /**
10435
+ * A single entry in a `tedi-table-of-contents`. Its non-item content (a
10436
+ * `tedi-link`, anchor or button) is the clickable label; nested
10437
+ * `tedi-table-of-contents-item` children become this item's sub-items and are
10438
+ * only revealed when the item is on the active branch.
10439
+ */
10440
+ declare class TableOfContentsItemComponent {
10441
+ /**
10442
+ * Unique id. Required to mark the item active (via the parent's `activeId`)
10443
+ * and to be the parent of nested items. Named `itemId` to avoid
10444
+ * shadowing the native `id` attribute.
10445
+ */
10446
+ readonly itemId: _angular_core.InputSignal<string | undefined>;
10447
+ /** Render a separator below the item. */
10448
+ readonly separator: _angular_core.InputSignal<boolean>;
10449
+ private readonly root;
10450
+ private readonly parent;
10451
+ /** Direct nested items (a single level down). */
10452
+ readonly childItems: Signal<readonly TableOfContentsItemComponent[]>;
10453
+ readonly numbered: Signal<boolean>;
10454
+ readonly depth: Signal<number>;
10455
+ /** CSS indent level — capped at 2, matching the design's two-level hierarchy. */
10456
+ readonly level: Signal<number>;
10457
+ readonly hasChildren: Signal<boolean>;
10458
+ readonly isSelected: Signal<boolean>;
10459
+ /** Whether the active item is this item or somewhere in its subtree. */
10460
+ readonly containsActive: Signal<boolean>;
10461
+ /**
10462
+ * Whether this item's nested group is expanded: always when the TOC is
10463
+ * `defaultOpen`, otherwise only along the branch leading to the active item.
10464
+ */
10465
+ readonly isOpen: Signal<boolean>;
10466
+ private readonly siblings;
10467
+ private readonly index;
10468
+ private readonly numberPrefix;
10469
+ /** Hierarchical number base without trailing dot, e.g. `2` or `2.1`. */
10470
+ readonly numberBase: Signal<string>;
10471
+ /** Rendered number — `1.` at the top level, `1.1` when nested. */
10472
+ readonly numberLabel: Signal<string>;
10473
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<TableOfContentsItemComponent, never>;
10474
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<TableOfContentsItemComponent, "tedi-table-of-contents-item", never, { "itemId": { "alias": "itemId"; "required": false; "isSignal": true; }; "separator": { "alias": "separator"; "required": false; "isSignal": true; }; }, {}, ["childItems"], ["*", "[tediTocItemSuffix]", "tedi-table-of-contents-item"], true, never>;
10475
+ }
10476
+
10477
+ /**
10478
+ * Marks projected content as the trailing suffix of a
10479
+ * `tedi-table-of-contents-item`. The item renders it right-aligned at the end of
10480
+ * the row — e.g. a `tedi-tag`.
10481
+ */
10482
+ declare class TableOfContentsItemSuffixDirective {
10483
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<TableOfContentsItemSuffixDirective, never>;
10484
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<TableOfContentsItemSuffixDirective, "[tediTocItemSuffix]", never, {}, {}, never, never, true, never>;
10485
+ }
10486
+
10487
+ /**
10488
+ * Mobile variant of `tedi-table-of-contents`: a bottom bar that opens the list
10489
+ * in a bottom-sheet overlay. Takes the same `tedi-table-of-contents-item`
10490
+ * children as the desktop card; render it on small viewports.
10491
+ *
10492
+ * It provides itself as `TableOfContentsComponent` so the projected items
10493
+ * resolve their context (`activeId`, `numbered`, `items`) exactly as they do
10494
+ * inside the desktop component.
10495
+ */
10496
+ declare class TableOfContentsCollapsibleComponent implements OnDestroy {
10497
+ /**
10498
+ * Heading shown on the bar and sheet. Defaults to the localised "Table of
10499
+ * contents" label.
10500
+ */
10501
+ readonly heading: _angular_core.InputSignal<string | null | undefined>;
10502
+ /** Id of the currently active item. */
10503
+ readonly activeId: _angular_core.InputSignal<string | undefined>;
10504
+ /**
10505
+ * Whether nested items are expanded by default. When `false`, a branch reveals
10506
+ * its sub-items only while it is on the active trail. Mirrors
10507
+ * `tedi-table-of-contents` so projected items resolve it via the shared root.
10508
+ * @default true
10509
+ */
10510
+ readonly defaultOpen: _angular_core.InputSignal<boolean>;
10511
+ /** Show auto-generated hierarchical numbers (`1.`, `2.`, `2.1`, …). */
10512
+ readonly numbered: _angular_core.InputSignal<boolean>;
10513
+ /**
10514
+ * Draws a divider under each item except the last — sub-items included — so the
10515
+ * sheet's list reads as a set of separated rows. Mirrors `tedi-table-of-contents`.
10516
+ * @default false
10517
+ */
10518
+ readonly bordered: _angular_core.InputSignal<boolean>;
10519
+ /**
10520
+ * Pin the bar to the bottom of the viewport. Set `false` to render it inline.
10521
+ */
10522
+ readonly sticky: _angular_core.InputSignal<boolean>;
10523
+ /**
10524
+ * Hide the bar while the user scrolls down and reveal it when they scroll up,
10525
+ * keeping the reading area clear. Watches window scroll by default; set
10526
+ * `scrollContainer` to watch a scrollable element instead.
10527
+ * @default false
10528
+ */
10529
+ readonly hideOnScroll: _angular_core.InputSignal<boolean>;
10530
+ /**
10531
+ * Element whose scroll drives `hideOnScroll`. Defaults to the window; set it to
10532
+ * the scrollable container when the content scrolls inside a region rather than
10533
+ * the whole page.
10534
+ */
10535
+ readonly scrollContainer: _angular_core.InputSignal<HTMLElement | undefined>;
10536
+ /**
10537
+ * Accessible name for the sheet's navigation landmark and dialog. Defaults to
10538
+ * the visible title.
10539
+ */
10540
+ readonly ariaLabel: _angular_core.InputSignal<string | undefined>;
10541
+ /** Top-level items, read by items to compute their hierarchical numbers. */
10542
+ readonly items: _angular_core.Signal<readonly any[]>;
10543
+ private readonly dialog;
10544
+ private readonly overlay;
10545
+ private readonly translations;
10546
+ private readonly platformId;
10547
+ private readonly zone;
10548
+ private readonly sheet;
10549
+ private dialogRef?;
10550
+ readonly open: _angular_core.WritableSignal<boolean>;
10551
+ /** True while the sticky bar is hidden by a scroll-down gesture. */
10552
+ readonly barHidden: _angular_core.WritableSignal<boolean>;
10553
+ private lastScrollY;
10554
+ private ticking;
10555
+ private scrollTarget?;
10556
+ private readonly onScroll;
10557
+ constructor();
10558
+ private currentScrollY;
10559
+ private readonly titleLabel;
10560
+ readonly openLabel: _angular_core.Signal<string>;
10561
+ readonly closeLabel: _angular_core.Signal<string>;
10562
+ readonly title: _angular_core.Signal<string>;
10563
+ /** Accessible name for the nav/dialog — the `ariaLabel` override or the title. */
10564
+ readonly navLabel: _angular_core.Signal<string>;
10565
+ toggle(open: boolean): void;
10566
+ close(): void;
10567
+ ngOnDestroy(): void;
10568
+ private handleScroll;
10569
+ onListClick(event: Event): void;
10570
+ private openSheet;
10571
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<TableOfContentsCollapsibleComponent, never>;
10572
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<TableOfContentsCollapsibleComponent, "tedi-table-of-contents-collapsible", never, { "heading": { "alias": "heading"; "required": false; "isSignal": true; }; "activeId": { "alias": "activeId"; "required": false; "isSignal": true; }; "defaultOpen": { "alias": "defaultOpen"; "required": false; "isSignal": true; }; "numbered": { "alias": "numbered"; "required": false; "isSignal": true; }; "bordered": { "alias": "bordered"; "required": false; "isSignal": true; }; "sticky": { "alias": "sticky"; "required": false; "isSignal": true; }; "hideOnScroll": { "alias": "hideOnScroll"; "required": false; "isSignal": true; }; "scrollContainer": { "alias": "scrollContainer"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; }, {}, ["items"], ["tedi-table-of-contents-item"], true, never>;
10573
+ }
10574
+
10098
10575
  /**
10099
10576
  * Root of the Tabs compound component. Wraps `tedi-tabs-list` and
10100
10577
  * `tedi-tabs-content` elements and owns the active-tab state, which the list,
@@ -10616,7 +11093,7 @@ declare class StatusBadgeComponent {
10616
11093
  */
10617
11094
  icon: _angular_core.InputSignal<string>;
10618
11095
  classes: _angular_core.Signal<string[]>;
10619
- ariaLive: _angular_core.Signal<"assertive" | "polite" | null>;
11096
+ ariaLive: _angular_core.Signal<"polite" | "assertive" | null>;
10620
11097
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<StatusBadgeComponent, never>;
10621
11098
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<StatusBadgeComponent, "tedi-status-badge", never, { "text": { "alias": "text"; "required": false; "isSignal": true; }; "class": { "alias": "class"; "required": false; "isSignal": true; }; "title": { "alias": "title"; "required": false; "isSignal": true; }; "role": { "alias": "role"; "required": false; "isSignal": true; }; "color": { "alias": "color"; "required": false; "isSignal": true; }; "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "status": { "alias": "status"; "required": false; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
10622
11099
  }
@@ -10696,6 +11173,12 @@ declare const TEDI_TRANSLATION_DEFAULT_TOKEN: InjectionToken<Language>;
10696
11173
 
10697
11174
  declare function cookieSignal<T>(key: string, initialValue: T): _angular_core.WritableSignal<T>;
10698
11175
 
11176
+ /**
11177
+ * Logs a deprecation warning once per component, in dev mode only.
11178
+ * @internal
11179
+ */
11180
+ declare function warnDeprecated(name: string, message: string): void;
11181
+
10699
11182
  declare function getFocusableElements(container: HTMLElement): HTMLElement[];
10700
11183
 
10701
11184
  /** Horizontal gap (px) between tags in a single row. */
@@ -10740,6 +11223,6 @@ declare function isValidTime(time: string | null | undefined): boolean;
10740
11223
  */
10741
11224
  declare function normalizeTime(input: string): string | null;
10742
11225
 
10743
- export { AVAILABLE_LANGUAGES, AccordionComponent, AccordionItemComponent, AccordionItemContentComponent, AccordionItemHeaderComponent, AlertComponent, AttachmentActionsComponent, AttachmentComponent, BREAKPOINTS, BaseButtonDirective, BreadcrumbItemDirective, BreadcrumbSeparatorDirective, BreadcrumbsComponent, BreakpointService, ButtonComponent, ButtonGroupButtonDirective, ButtonGroupComponent, COUNTER_TAG_WIDTH, CalendarComponent, CardButtonComponent, CardComponent, CardContentComponent, CardHeaderComponent, CardIconComponent, CardRowComponent, CarouselComponent, CarouselContentComponent, CarouselFooterComponent, CarouselHeaderComponent, CarouselIndicatorsComponent, CarouselNavigationComponent, CarouselSlideDirective, CheckboxCardComponent, CheckboxCardGroupComponent, CheckboxComponent, CheckboxGroupComponent, ClosingButtonComponent, ColComponent, CollapseButtonComponent, CollapseComponent, DROPDOWN_API, DROPDOWN_CONTENT_API, DateFieldComponent, DatePickerComponent, DropdownComponent, DropdownContentComponent, DropdownItemComponent, DropdownItemValueComponent, DropdownItemValueLabelComponent, DropdownItemValueMetaComponent, DropdownTriggerDirective, EllipsisComponent, EmptyStateComponent, FeedbackTextComponent, FilterComponent, FilterContentDirective, FilterGroupComponent, FilterPrependDirective, FooterBodyComponent, FooterBottomComponent, FooterComponent, FooterSectionComponent, FooterSideComponent, FormFieldComponent, FormFieldExtraDirective, HeaderActionsComponent, HeaderBottomComponent, HeaderComponent, HeaderContentComponent, HeaderLanguageComponent, HeaderLoginComponent, HeaderLogoComponent, HeaderLogoDarkDirective, HeaderLogoutComponent, HeaderMobileButtonComponent, HeaderProfileComponent, HeaderRoleComponent, HeaderRoleContentDirective, HeaderRoleNoResultsDirective, HeaderRoleTitleDirective, HeaderSearchComponent, HeaderTopComponent, HeadingWithIconComponent, HideAtDirective, HorizontalPushHandler, HorizontalStepperComponent, HorizontalStepperItemComponent, IconComponent, InfoButtonComponent, InfoTooltipComponent, InputGroupComponent, InputGroupPrefixDirective, InputGroupSuffixDirective, LANGUAGE_COOKIE_NAME, LANGUAGE_FALLBACK_VALUE, LabelComponent, LabelRowComponent, LinkComponent, ListComponent, MODAL_DATA, MODAL_SIZE, ModalComponent, ModalContentComponent, ModalFooterComponent, ModalHeaderComponent, ModalRef, ModalService, NumberFieldComponent, PaginationComponent, PopoverComponent, PopoverContentComponent, PopoverTriggerDirective, ProgressBarComponent, RadioCardComponent, RadioCardGroupComponent, RadioComponent, RadioGroupComponent, RowComponent, ScrollFadeComponent, SearchComponent, SearchFooterActionsComponent, SearchFooterTemplateDirective, SearchSuggestionComponent, SearchSuggestionTemplateDirective, SelectComponent, SelectOptionTemplateDirective, SelectTooltipTemplateDirective, SelectValueTemplateDirective, SeparatorComponent, ShowAtDirective, SideNavComponent, SideNavDropdownComponent, SideNavDropdownGroupComponent, SideNavDropdownItemComponent, SideNavGroupTitleComponent, SideNavItemComponent, SideNavOverlayComponent, SideNavToggleComponent, SkeletonBlockComponent, SkeletonComponent, SliderComponent, SpecialOptionControls, SpinnerComponent, StatusBadgeComponent, StatusIndicatorComponent, TAG_GAP, TEDI_FIELD_CONTEXT, TEDI_FORM_FIELD_CONTROL, TEDI_INPUT_GROUP, TEDI_TABLE_CONTEXT, TEDI_THEME_DEFAULT_TOKEN, TEDI_TRANSLATION_DEFAULT_TOKEN, THEME_CLASS_PREFIX, THEME_COOKIE_NAME, THEME_FALLBACK_VALUE, TOAST_DEFAULT_DURATION, TabsComponent, TabsContentComponent, TabsListComponent, TabsTriggerComponent, TagComponent, TediPaginationResultsDirective, TediTableColumnsMenuComponent, TediTableComponent, TediTableHeaderButtonComponent, TediTableToolbarComponent, TediTranslationPipe, TediTranslationService, TextComponent, TextFieldComponent, TextGroupComponent, TextGroupLabelComponent, TextGroupValueComponent, TextareaComponent, ThemeService, TimeFieldComponent, TimePickerComponent, TimelineComponent, TimelineDescriptionComponent, TimelineItemComponent, TimelineTimingsBottomDirective, TimelineTitleComponent, ToastComponent, ToastService, ToggleComponent, TooltipComponent, TooltipContentComponent, TooltipTriggerComponent, TruncateComponent, VerticalSpacingDirective, VerticalSpacingItemDirective, addDays, addMonths, addYears, breakpointInput, buildMonthGrid, calculateArrowOffset, calculateVisibleTagCount, computeGroupSpans, controlDescribedBy, cookieSignal, createTablePersistence, deriveControlState, endOfMonth, formatDate, formatLocaleDate, formatLocaleDateHint, formatLocaleDateLong, formatMonthYear, generateUUID, getCardBorderPlacementColor, getDaysInMonth, getFirstDayOfWeek, getFocusableElements, getISOWeek, getMonthNames, getPaddingCssVariables, getPlacementFromPositionChange, getWeekdayNames, groupRowSpan, highlightParts, injectTediTableContext, isAfterDay, isBeforeDay, isDateInRange, isSameDay, isSameMonth, isSameYear, isValidTime, matchAny, matchDate, normalizeTime, parseDate, parseLocaleDate, provideTedi, resolveCardBorderRadius, startOfMonth, startOfWeek, toConnectedPositions, toggleDateInArray, usePagination };
10744
- export type { AccordionInputs, AlertRole, AlertSize, AlertTitleType, AlertType, AlertVariant, AlignItems, AlignSelf, ArrowOffset, ArrowType, AttachmentDirection, BreadcrumbsInputs, BreadcrumbsVariant, Breakpoint, BreakpointFlag, BreakpointInput, BreakpointInputs, BreakpointInputsWithoutSignals, BreakpointObject, BulletColor, ButtonGroupDropdownLabelMode, ButtonSize, ButtonVariant, CalendarView, CardBackground, CardBorderPlacement, CardBorderRadius, CardBorderType, CardContentInputs, CardIconSize, CardIconType, CardInputs, CardPadding, CardPaddingNumber, CardResolvedCorners, CardRowDirection, CardRowInputs, CarouselIndicatorsVariant, CheckboxCardVariant, CheckboxGroupDirection, CheckboxSize, ClosingButtonIconSize, ClosingButtonSize, ColInputs, ColWidth, CollapseButtonArrowType, CollapseButtonSize, CollapseSize, Cols, ColumnReorderPhase, CompareWithFn, ComponentInputs, ControlDescribedBy, DateAfter, DateBefore, DateFieldMode, DateInterval, DatePickerDay, DatePickerInputSize, DatePickerInputState, DatePickerMatcher, DatePickerSelectorMode, DatePickerView, DateRange, DayOfWeek, DerivedControlState, DropdownApi, DropdownContentApi, DropdownItemValueLayout, DropdownItemValueType, DropdownPosition, DropdownRole, DropdownTriggerAriaHasPopup, EllipsisPosition, EmptyStateSize, EmptyStateType, FeedbackTextPosition, FeedbackTextType, FieldContext, FilterOption, FilterSize, FilterVariant, FooterSidePlacement, FooterSidePosition, FormFieldControl, FormFieldIcon, Gap, GroupByFn, HeaderContentAlignment, HeaderLanguage, HeaderLanguageLabelPosition, HeaderLoginInputs, HeaderLoginSize, HeaderLogoutInputs, HeaderLogoutSize, HeaderProfileInputs, HeaderProfileSize, HeaderSearchMobileLabels, HeaderSearchMobileVariant, HeaderTopAlignment, HeaderTopInputs, HeadingLevel, HeadingModifiers, HorizontalStepperBackground, IconBackgroundColor, IconColor, IconSize, IconType, IconVariant, InputGroupContext, InputSize, InputState, JustifyItems, JustifySelf, LabelColor, LabelSize, LabelVisuallyHidden, Language, LinkInputs, LinkSize, LinkVariant, Matcher, ModalConfig, ModalFullscreen, ModalPosition, ModalScrollBehavior, ModalSize, ModalWidth, ModalWidthPreset, NumberFieldSize, OverlayPosition, OverlaySide, PaginationBackground, PaginationDividerPosition, PaginationItem, PaginationItemType, PaginationLabels, PaginationVisibility, PopoverPosition, PopoverWidth, PopoverWidthPreset, ProgressBarAnnounce, ProgressBarInputs, ProgressBarLabelPosition, ProgressBarSize, ProgressBarValuePosition, RadioCardVariant, RadioGroupDirection, RadioSize, Representative, RepresentativeIcon, RowInputs, ScrollFadePosition, ScrollFadeScrollbar, ScrollFadeSize, SearchButton, SearchHighlightPart, SearchSize, SearchSuggestionContext, SearchSuggestionView, SelectInputSize, SelectOption, SelectOptionContext, SelectOptionGroup, SelectValueContext, SeparatorAxis, SeparatorColor, SeparatorDotSize, SeparatorSpacing, SeparatorSpacingValue, SeparatorThickness, SeparatorVariant, SideNavItemSize, SkeletonBlockHeight, SkeletonBlockInputs, SkeletonBlockTextHeight, SkeletonBlockWidth, SliderHideLabel, SpinnerColor, SpinnerSize, StatusBadgeColor, StatusBadgeSize, StatusBadgeStatus, StatusBadgeVariant, StatusIndicatorPosition, StatusIndicatorSize, StatusIndicatorType, TEDITheme, TableColumnMeta, TableControlColumn, TableControlColumnOrder, TableExpandTrigger, TableFilterModalData, TableFilterOptions, TablePaginationOptions, TablePersistOptions, TablePersistenceController, TableSelectionMode, TableSize, TableState, TableStatePatch, TabsOverflowMode, TagEllipsis, TagOverflowOptions, TagType, TediColumnDef, TediConfig, TediTableContextValue, TediTableFilterContext, TextColor, TextGroupInputs, TextGroupType, TextModifiers, TextareaSize, Theme, TimeFieldFullscreen, TimeFieldModal, TimeFieldPickerTrigger, TimeFieldPickerVariant, TimeFieldUseNativePicker, TimePickerVariant, TimelineCardPadding, TimelineVariant, ToastConfig, ToastPosition, ToastRole, ToastType, ToggleSize, ToggleType, ToggleVariant, TooltipOpenWith, TooltipPosition, TooltipWidth, UsePaginationArgs, VerticalSpacingSize, VirtualRow };
11226
+ export { AVAILABLE_LANGUAGES, AccordionComponent, AccordionItemComponent, AccordionItemContentComponent, AccordionItemHeaderComponent, AlertComponent, AttachmentActionsComponent, AttachmentComponent, BREAKPOINTS, BaseButtonDirective, BreadcrumbItemDirective, BreadcrumbSeparatorDirective, BreadcrumbsComponent, BreakpointService, ButtonComponent, ButtonGroupButtonDirective, ButtonGroupComponent, COUNTER_TAG_WIDTH, CalendarComponent, CardButtonComponent, CardComponent, CardContentComponent, CardHeaderComponent, CardIconComponent, CardRowComponent, CarouselComponent, CarouselContentComponent, CarouselFooterComponent, CarouselHeaderComponent, CarouselIndicatorsComponent, CarouselNavigationComponent, CarouselSlideDirective, CheckboxCardComponent, CheckboxCardGroupComponent, CheckboxComponent, CheckboxGroupComponent, ClosingButtonComponent, ColComponent, CollapseButtonComponent, CollapseComponent, DROPDOWN_API, DROPDOWN_CONTENT_API, DateFieldComponent, DatePickerComponent, DropdownComponent, DropdownContentComponent, DropdownItemComponent, DropdownItemValueComponent, DropdownItemValueLabelComponent, DropdownItemValueMetaComponent, DropdownTriggerDirective, EllipsisComponent, EmptyStateComponent, FeedbackTextComponent, FilterComponent, FilterContentDirective, FilterGroupComponent, FilterPrependDirective, FloatingButtonComponent, FooterBodyComponent, FooterBottomComponent, FooterComponent, FooterSectionComponent, FooterSideComponent, FormFieldComponent, FormFieldExtraDirective, HeaderActionsComponent, HeaderBottomComponent, HeaderComponent, HeaderContentComponent, HeaderLanguageComponent, HeaderLoginComponent, HeaderLogoComponent, HeaderLogoDarkDirective, HeaderLogoutComponent, HeaderMobileButtonComponent, HeaderProfileComponent, HeaderRoleComponent, HeaderRoleContentDirective, HeaderRoleNoResultsDirective, HeaderRoleTitleDirective, HeaderSearchComponent, HeaderTopComponent, HeadingWithIconComponent, HideAtDirective, HorizontalPushHandler, HorizontalStepperComponent, HorizontalStepperItemComponent, IconComponent, InfoButtonComponent, InfoTooltipComponent, InputGroupComponent, InputGroupPrefixDirective, InputGroupSuffixDirective, LANGUAGE_COOKIE_NAME, LANGUAGE_FALLBACK_VALUE, LabelComponent, LabelRowComponent, LinkComponent, ListComponent, MODAL_DATA, MODAL_SIZE, ModalComponent, ModalContentComponent, ModalFooterComponent, ModalHeaderComponent, ModalRef, ModalService, NumberFieldComponent, PaginationComponent, PopoverComponent, PopoverContentComponent, PopoverTriggerDirective, ProgressBarComponent, RadioCardComponent, RadioCardGroupComponent, RadioComponent, RadioGroupComponent, RowComponent, ScrollFadeComponent, SearchComponent, SearchFooterActionsComponent, SearchFooterTemplateDirective, SearchSuggestionComponent, SearchSuggestionTemplateDirective, SelectComponent, SelectOptionTemplateDirective, SelectTooltipTemplateDirective, SelectValueTemplateDirective, SeparatorComponent, ShowAtDirective, SideNavComponent, SideNavDropdownComponent, SideNavDropdownGroupComponent, SideNavDropdownItemComponent, SideNavGroupTitleComponent, SideNavItemComponent, SideNavOverlayComponent, SideNavToggleComponent, SkeletonBlockComponent, SkeletonComponent, SliderComponent, SpecialOptionControls, SpinnerComponent, StatusBadgeComponent, StatusIndicatorComponent, TAG_GAP, TEDI_FIELD_CONTEXT, TEDI_FORM_FIELD_CONTROL, TEDI_INPUT_GROUP, TEDI_TABLE_CONTEXT, TEDI_THEME_DEFAULT_TOKEN, TEDI_TRANSLATION_DEFAULT_TOKEN, THEME_CLASS_PREFIX, THEME_COOKIE_NAME, THEME_FALLBACK_VALUE, TOAST_DEFAULT_DURATION, TableOfContentsCollapsibleComponent, TableOfContentsComponent, TableOfContentsItemComponent, TableOfContentsItemSuffixDirective, TabsComponent, TabsContentComponent, TabsListComponent, TabsTriggerComponent, TagComponent, TediPaginationResultsDirective, TediTableColumnsMenuComponent, TediTableComponent, TediTableHeaderButtonComponent, TediTableToolbarComponent, TediTranslationPipe, TediTranslationService, TextComponent, TextFieldComponent, TextGroupComponent, TextGroupLabelComponent, TextGroupValueComponent, TextareaComponent, ThemeService, TimeFieldComponent, TimePickerComponent, TimelineComponent, TimelineDescriptionComponent, TimelineItemComponent, TimelineTimingsBottomDirective, TimelineTitleComponent, ToastComponent, ToastService, ToggleComponent, TooltipComponent, TooltipContentComponent, TooltipTriggerComponent, TruncateComponent, VerticalSpacingDirective, VerticalSpacingItemDirective, addDays, addMonths, addYears, breakpointInput, buildMonthGrid, calculateArrowOffset, calculateVisibleTagCount, computeGroupSpans, controlDescribedBy, cookieSignal, createTablePersistence, deriveControlState, endOfMonth, formatDate, formatLocaleDate, formatLocaleDateHint, formatLocaleDateLong, formatMonthYear, generateUUID, getCardBorderPlacementColor, getDaysInMonth, getFirstDayOfWeek, getFocusableElements, getISOWeek, getMonthNames, getPaddingCssVariables, getPlacementFromPositionChange, getWeekdayNames, groupRowSpan, highlightParts, injectTediTableContext, isAfterDay, isBeforeDay, isDateInRange, isSameDay, isSameMonth, isSameYear, isValidTime, matchAny, matchDate, normalizeTime, parseDate, parseLocaleDate, provideTedi, resolveCardBorderRadius, startOfMonth, startOfWeek, toConnectedPositions, toggleDateInArray, usePagination, warnDeprecated };
11227
+ export type { AccordionInputs, AlertRole, AlertSize, AlertTitleType, AlertType, AlertVariant, AlignItems, AlignSelf, ArrowOffset, ArrowType, AttachmentDirection, BreadcrumbsInputs, BreadcrumbsVariant, Breakpoint, BreakpointFlag, BreakpointInput, BreakpointInputs, BreakpointInputsWithoutSignals, BreakpointObject, BulletColor, ButtonGroupDropdownLabelMode, ButtonSize, ButtonVariant, CalendarView, CardBackground, CardBorderPlacement, CardBorderRadius, CardBorderType, CardContentInputs, CardIconSize, CardIconType, CardInputs, CardPadding, CardPaddingNumber, CardResolvedCorners, CardRowDirection, CardRowInputs, CarouselIndicatorsVariant, CheckboxCardVariant, CheckboxGroupDirection, CheckboxSize, ClosingButtonIconSize, ClosingButtonSize, ColInputs, ColWidth, CollapseButtonArrowType, CollapseButtonSize, CollapseSize, Cols, ColumnReorderPhase, CompareWithFn, ComponentInputs, ControlDescribedBy, DateAfter, DateBefore, DateFieldMode, DateInterval, DatePickerDay, DatePickerInputSize, DatePickerInputState, DatePickerMatcher, DatePickerSelectorMode, DatePickerView, DateRange, DayOfWeek, DerivedControlState, DropdownApi, DropdownContentApi, DropdownItemValueLayout, DropdownItemValueType, DropdownPosition, DropdownRole, DropdownTriggerAriaHasPopup, EllipsisPosition, EmptyStateSize, EmptyStateType, FeedbackTextPosition, FeedbackTextType, FieldContext, FilterOption, FilterSize, FilterVariant, FloatingButtonAxis, FloatingButtonOffset, FloatingButtonPlacement, FloatingButtonPosition, FloatingButtonSize, FloatingButtonVariant, FooterSidePlacement, FooterSidePosition, FormFieldControl, FormFieldIcon, Gap, GroupByFn, HeaderContentAlignment, HeaderLanguage, HeaderLanguageLabelPosition, HeaderLoginInputs, HeaderLoginSize, HeaderLogoutInputs, HeaderLogoutSize, HeaderProfileInputs, HeaderProfileSize, HeaderSearchMobileLabels, HeaderSearchMobileVariant, HeaderTopAlignment, HeaderTopInputs, HeadingLevel, HeadingModifiers, HorizontalStepperBackground, IconBackgroundColor, IconColor, IconSize, IconType, IconVariant, InputGroupContext, InputSize, InputState, JustifyItems, JustifySelf, LabelColor, LabelSize, LabelVisuallyHidden, Language, LinkInputs, LinkSize, LinkVariant, Matcher, ModalConfig, ModalFullscreen, ModalPosition, ModalScrollBehavior, ModalSize, ModalWidth, ModalWidthPreset, NumberFieldSize, OverlayPosition, OverlaySide, PaginationBackground, PaginationDividerPosition, PaginationItem, PaginationItemType, PaginationLabels, PaginationVisibility, PopoverPosition, PopoverWidth, PopoverWidthPreset, ProgressBarAnnounce, ProgressBarInputs, ProgressBarLabelPosition, ProgressBarSize, ProgressBarValuePosition, RadioCardVariant, RadioGroupDirection, RadioSize, Representative, RepresentativeIcon, RowInputs, ScrollFadePosition, ScrollFadeScrollbar, ScrollFadeSize, SearchButton, SearchHighlightPart, SearchSize, SearchSuggestionContext, SearchSuggestionView, SelectInputSize, SelectOption, SelectOptionContext, SelectOptionGroup, SelectValueContext, SeparatorAxis, SeparatorColor, SeparatorDotSize, SeparatorSpacing, SeparatorSpacingValue, SeparatorThickness, SeparatorVariant, SideNavItemSize, SkeletonBlockHeight, SkeletonBlockInputs, SkeletonBlockTextHeight, SkeletonBlockWidth, SliderHideLabel, SpinnerColor, SpinnerSize, StatusBadgeColor, StatusBadgeSize, StatusBadgeStatus, StatusBadgeVariant, StatusIndicatorPosition, StatusIndicatorSize, StatusIndicatorType, TEDITheme, TableColumnMeta, TableControlColumn, TableControlColumnOrder, TableExpandTrigger, TableFilterModalData, TableFilterOptions, TableOfContentsHeadingLevel, TableOfContentsVariant, TablePaginationOptions, TablePersistOptions, TablePersistenceController, TableSelectionMode, TableSize, TableState, TableStatePatch, TabsOverflowMode, TagEllipsis, TagOverflowOptions, TagType, TediColumnDef, TediConfig, TediTableContextValue, TediTableFilterContext, TextColor, TextGroupInputs, TextGroupType, TextModifiers, TextareaSize, Theme, TimeFieldFullscreen, TimeFieldModal, TimeFieldPickerTrigger, TimeFieldPickerVariant, TimeFieldUseNativePicker, TimePickerVariant, TimelineCardPadding, TimelineVariant, ToastConfig, ToastPosition, ToastRole, ToastType, ToggleSize, ToggleType, ToggleVariant, TooltipOpenWith, TooltipPosition, TooltipWidth, UsePaginationArgs, VerticalSpacingSize, VirtualRow };
10745
11228
  //# sourceMappingURL=index.d.ts.map