@tedi-design-system/angular 8.1.0-rc.1 → 8.1.0-rc.11

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
@@ -1,6 +1,6 @@
1
1
  import * as _angular_core from '@angular/core';
2
2
  import { AfterContentChecked, AfterViewInit, InputSignal, Signal, PipeTransform, OnInit, OnDestroy, TemplateRef, ElementRef, Injector, WritableSignal, InjectionToken, AfterViewChecked, AfterContentInit, QueryList, EnvironmentProviders } from '@angular/core';
3
- import { _IdGenerator } from '@angular/cdk/a11y';
3
+ import { _IdGenerator, Highlightable } from '@angular/cdk/a11y';
4
4
  import * as _tedi_design_system_angular_tedi from '@tedi-design-system/angular/tedi';
5
5
  import { ControlValueAccessor } from '@angular/forms';
6
6
  import * as _tanstack_table_core from '@tanstack/table-core';
@@ -65,7 +65,9 @@ declare class IconComponent {
65
65
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<IconComponent, "tedi-icon", never, { "name": { "alias": "name"; "required": true; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "color": { "alias": "color"; "required": false; "isSignal": true; }; "background": { "alias": "background"; "required": false; "isSignal": true; }; "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "type": { "alias": "type"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
66
66
  }
67
67
 
68
- type TextModifiers = "h1" | "h2" | "h3" | "h4" | "h5" | "h6" | "normal" | "small" | "extra-small" | "bold" | "thin" | "italic" | "center" | "left" | "right" | "nowrap" | "break-all" | "break-word" | "break-spaces" | "uppercase" | "lowercase" | "capitalize" | "capitalize-first" | "inline-block" | "inline" | "line-normal" | "line-condensed" | "subtitle";
68
+ type HeadingLevel = 1 | 2 | 3 | 4 | 5 | 6;
69
+ type HeadingModifiers = `h${HeadingLevel}`;
70
+ type TextModifiers = HeadingModifiers | "normal" | "small" | "extra-small" | "bold" | "thin" | "italic" | "center" | "left" | "right" | "nowrap" | "break-all" | "break-word" | "break-spaces" | "uppercase" | "lowercase" | "capitalize" | "capitalize-first" | "inline-block" | "inline" | "line-normal" | "line-condensed" | "subtitle";
69
71
  type TextColor = "primary" | "secondary" | "tertiary" | "white" | "disabled" | "brand" | "success" | "warning" | "danger" | "info" | "neutral" | "inherit";
70
72
  declare class TextComponent {
71
73
  /**
@@ -352,6 +354,27 @@ declare const translationsMap: {
352
354
  en: string;
353
355
  ru: string;
354
356
  };
357
+ "search.no-results": {
358
+ description: string;
359
+ components: string[];
360
+ et: string;
361
+ en: string;
362
+ ru: string;
363
+ };
364
+ "search.loading": {
365
+ description: string;
366
+ components: string[];
367
+ et: string;
368
+ en: string;
369
+ ru: string;
370
+ };
371
+ "search.results-count": {
372
+ description: string;
373
+ components: string[];
374
+ et: (count: number) => string;
375
+ en: (count: number) => string;
376
+ ru: (count: number) => string;
377
+ };
355
378
  required: {
356
379
  description: string;
357
380
  components: string[];
@@ -575,6 +598,13 @@ declare const translationsMap: {
575
598
  en: string;
576
599
  ru: string;
577
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
+ };
578
608
  "modal.close": {
579
609
  description: string;
580
610
  components: string[];
@@ -1548,6 +1578,125 @@ declare const translationsMap: {
1548
1578
  en: string;
1549
1579
  ru: string;
1550
1580
  };
1581
+ "text-editor.bold": {
1582
+ description: string;
1583
+ components: string[];
1584
+ et: string;
1585
+ en: string;
1586
+ ru: string;
1587
+ };
1588
+ "text-editor.italic": {
1589
+ description: string;
1590
+ components: string[];
1591
+ et: string;
1592
+ en: string;
1593
+ ru: string;
1594
+ };
1595
+ "text-editor.underline": {
1596
+ description: string;
1597
+ components: string[];
1598
+ et: string;
1599
+ en: string;
1600
+ ru: string;
1601
+ };
1602
+ "text-editor.strike": {
1603
+ description: string;
1604
+ components: string[];
1605
+ et: string;
1606
+ en: string;
1607
+ ru: string;
1608
+ };
1609
+ "text-editor.align.left": {
1610
+ description: string;
1611
+ components: string[];
1612
+ et: string;
1613
+ en: string;
1614
+ ru: string;
1615
+ };
1616
+ "text-editor.align.center": {
1617
+ description: string;
1618
+ components: string[];
1619
+ et: string;
1620
+ en: string;
1621
+ ru: string;
1622
+ };
1623
+ "text-editor.align.right": {
1624
+ description: string;
1625
+ components: string[];
1626
+ et: string;
1627
+ en: string;
1628
+ ru: string;
1629
+ };
1630
+ "text-editor.align.justify": {
1631
+ description: string;
1632
+ components: string[];
1633
+ et: string;
1634
+ en: string;
1635
+ ru: string;
1636
+ };
1637
+ "text-editor.list.bullet": {
1638
+ description: string;
1639
+ components: string[];
1640
+ et: string;
1641
+ en: string;
1642
+ ru: string;
1643
+ };
1644
+ "text-editor.list.ordered": {
1645
+ description: string;
1646
+ components: string[];
1647
+ et: string;
1648
+ en: string;
1649
+ ru: string;
1650
+ };
1651
+ "text-editor.indent.increase": {
1652
+ description: string;
1653
+ components: string[];
1654
+ et: string;
1655
+ en: string;
1656
+ ru: string;
1657
+ };
1658
+ "text-editor.indent.decrease": {
1659
+ description: string;
1660
+ components: string[];
1661
+ et: string;
1662
+ en: string;
1663
+ ru: string;
1664
+ };
1665
+ "text-editor.color": {
1666
+ description: string;
1667
+ components: string[];
1668
+ et: string;
1669
+ en: string;
1670
+ ru: string;
1671
+ };
1672
+ "text-editor.background": {
1673
+ description: string;
1674
+ components: string[];
1675
+ et: string;
1676
+ en: string;
1677
+ ru: string;
1678
+ };
1679
+ "text-editor.link": {
1680
+ description: string;
1681
+ components: string[];
1682
+ et: string;
1683
+ en: string;
1684
+ ru: string;
1685
+ };
1686
+ "text-editor.blockquote": {
1687
+ description: string;
1688
+ components: string[];
1689
+ et: string;
1690
+ en: string;
1691
+ ru: string;
1692
+ };
1693
+ "text-editor.clean": {
1694
+ description: string;
1695
+ components: string[];
1696
+ et: string;
1697
+ en: string;
1698
+ ru: string;
1699
+ };
1551
1700
  "time-picker.hours": {
1552
1701
  description: string;
1553
1702
  components: string[];
@@ -1705,12 +1854,19 @@ declare class AlertComponent {
1705
1854
  * @default false
1706
1855
  */
1707
1856
  showClose: _angular_core.InputSignal<boolean>;
1857
+ /**
1858
+ * Accessible name for the close button. Override the generic default
1859
+ * ("Close") when several alerts can be on screen at once, so the button
1860
+ * says which one it closes.
1861
+ */
1862
+ closeAriaLabel: _angular_core.InputSignal<string | undefined>;
1708
1863
  /**
1709
1864
  * The ARIA role of the alert, informing screen readers about the alert's purpose.
1865
+ * The role carries its own live-region semantics, so no separate `aria-live` is set.
1710
1866
  * Options:
1711
- * - 'alert': For high-priority messages that demand immediate attention.
1712
- * - 'status': For less urgent messages providing feedback or updates.
1713
- * - 'none': Used when no ARIA role is needed.
1867
+ * - 'alert': For high-priority messages that demand immediate attention (announced assertively).
1868
+ * - 'status': For less urgent messages providing feedback or updates (announced politely).
1869
+ * - 'none': No role and no announcement.
1714
1870
  * @default alert
1715
1871
  */
1716
1872
  role: _angular_core.InputSignal<AlertRole>;
@@ -1745,8 +1901,6 @@ declare class AlertComponent {
1745
1901
  * Close click output
1746
1902
  */
1747
1903
  readonly closeClick: _angular_core.OutputEmitterRef<void>;
1748
- getAriaLive: _angular_core.Signal<"assertive" | "polite" | "off">;
1749
- getAriaLabel: _angular_core.Signal<string>;
1750
1904
  classes: _angular_core.Signal<{
1751
1905
  [x: string]: boolean;
1752
1906
  "tedi-alert": boolean;
@@ -1755,7 +1909,7 @@ declare class AlertComponent {
1755
1909
  }>;
1756
1910
  handleClose(): void;
1757
1911
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AlertComponent, never>;
1758
- 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>;
1912
+ 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>;
1759
1913
  }
1760
1914
 
1761
1915
  declare const TOAST_DEFAULT_DURATION = 6000;
@@ -1790,15 +1944,16 @@ interface ToastConfig {
1790
1944
  */
1791
1945
  showProgressBar?: boolean;
1792
1946
  /**
1793
- * Whether to pause the auto-close timer when hovering over the toast.
1947
+ * Whether to pause the auto-close timer while the toast is hovered or
1948
+ * holds keyboard focus.
1794
1949
  * @default true
1795
1950
  */
1796
1951
  pauseOnHover?: boolean;
1797
1952
  /**
1798
- * The ARIA role of the toast, informing screen readers about the notification's priority.
1799
- * - 'status': For non-critical notifications.
1800
- * - 'alert': For critical errors.
1801
- * - 'none': Used when no ARIA role is needed.
1953
+ * Politeness of the screen reader announcement.
1954
+ * - 'status': For non-critical notifications (announced politely).
1955
+ * - 'alert': For critical errors (announced immediately).
1956
+ * - 'none': No announcement.
1802
1957
  * @default status
1803
1958
  */
1804
1959
  role?: ToastRole;
@@ -1832,10 +1987,12 @@ declare class ToastComponent {
1832
1987
  */
1833
1988
  readonly icon: _angular_core.InputSignal<string>;
1834
1989
  /**
1835
- * The ARIA role of the toast, informing screen readers about the notification's priority.
1836
- * - 'status': For non-critical notifications (screen readers announce politely).
1837
- * - 'alert': For critical errors (screen readers announce immediately).
1838
- * - 'none': Used when no ARIA role is needed.
1990
+ * Politeness of the screen reader announcement made by `ToastService`.
1991
+ * The visible toast itself is never a live region — announcing from both it
1992
+ * and the announcer made screen readers read every toast two or three times.
1993
+ * - 'status': For non-critical notifications (announced politely).
1994
+ * - 'alert': For critical errors (announced immediately).
1995
+ * - 'none': No announcement.
1839
1996
  * @default status
1840
1997
  */
1841
1998
  readonly role: _angular_core.InputSignal<AlertRole>;
@@ -1858,13 +2015,25 @@ declare class ToastComponent {
1858
2015
  * Emits when the toast is closed by the user.
1859
2016
  */
1860
2017
  readonly closed: _angular_core.OutputEmitterRef<void>;
2018
+ private readonly translationService;
2019
+ protected readonly closeLabel: _angular_core.Signal<string>;
1861
2020
  readonly mouseEnter: _angular_core.OutputEmitterRef<void>;
1862
2021
  readonly mouseLeave: _angular_core.OutputEmitterRef<void>;
2022
+ /**
2023
+ * Emits when focus enters the toast, so the auto-close timer can be paused.
2024
+ */
2025
+ readonly focusIn: _angular_core.OutputEmitterRef<void>;
2026
+ /**
2027
+ * Emits when focus leaves the toast entirely.
2028
+ */
2029
+ readonly focusOut: _angular_core.OutputEmitterRef<void>;
1863
2030
  handleClose(): void;
1864
2031
  onMouseEnter(): void;
1865
2032
  onMouseLeave(): void;
2033
+ onFocusIn(): void;
2034
+ onFocusOut(event: FocusEvent): void;
1866
2035
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<ToastComponent, never>;
1867
- 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>;
2036
+ 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>;
1868
2037
  }
1869
2038
 
1870
2039
  interface ToastItem {
@@ -2150,6 +2319,81 @@ declare class ClosingButtonComponent {
2150
2319
  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>;
2151
2320
  }
2152
2321
 
2322
+ type FloatingButtonVariant = "primary" | "secondary";
2323
+ type FloatingButtonSize = "default" | "large";
2324
+ type FloatingButtonAxis = "horizontal" | "vertical";
2325
+ type FloatingButtonPosition = "fixed" | "absolute" | "sticky" | "relative" | "static";
2326
+ type FloatingButtonPlacement = {
2327
+ vertical: "top" | "bottom" | "center";
2328
+ horizontal: "left" | "right" | "center";
2329
+ };
2330
+ type FloatingButtonOffset = {
2331
+ top?: number | string;
2332
+ bottom?: number | string;
2333
+ left?: number | string;
2334
+ right?: number | string;
2335
+ };
2336
+ declare class FloatingButtonComponent implements OnInit {
2337
+ private readonly baseButton;
2338
+ /**
2339
+ * The button's color variant.
2340
+ * @default primary
2341
+ */
2342
+ readonly variant: _angular_core.InputSignal<FloatingButtonVariant>;
2343
+ /**
2344
+ * The button's size.
2345
+ * @default default
2346
+ */
2347
+ readonly size: _angular_core.InputSignal<FloatingButtonSize>;
2348
+ /**
2349
+ * `vertical` rotates the button 90° counter-clockwise, with rounded left
2350
+ * corners and square right corners. Intended for desktop side placement;
2351
+ * on mobile prefer a horizontal button near the bottom, or an icon-only one.
2352
+ *
2353
+ * Rotation does not change the layout box. To align the visible button with
2354
+ * an edge, center it in a container that reserves its rotated width and height,
2355
+ * then position the container at that edge. See the Placement story.
2356
+ * @default horizontal
2357
+ */
2358
+ readonly axis: _angular_core.InputSignal<FloatingButtonAxis>;
2359
+ /**
2360
+ * CSS positioning mode. Defaults to `fixed`; use `static` to keep the button
2361
+ * in normal document flow.
2362
+ * @default fixed
2363
+ */
2364
+ readonly position: _angular_core.InputSignal<FloatingButtonPosition>;
2365
+ /**
2366
+ * Where to pin the button within its containing block. Applied as `top` / `bottom` /
2367
+ * `left` / `right`; `center` pins the midpoint on that axis. Has no effect when
2368
+ * `position` is `static`.
2369
+ */
2370
+ readonly placement: _angular_core.InputSignal<FloatingButtonPlacement | undefined>;
2371
+ /**
2372
+ * Distance from the pinned edges, defaulting to `0`. Numbers are treated as pixels,
2373
+ * strings accept CSS lengths such as `1rem`. Only the edges named by `placement` apply.
2374
+ */
2375
+ readonly offset: _angular_core.InputSignal<FloatingButtonOffset | undefined>;
2376
+ /**
2377
+ * Overrides the button's CSS `z-index`. Defaults to `--z-index-feedback` when omitted.
2378
+ */
2379
+ readonly zIndex: _angular_core.InputSignal<number | undefined>;
2380
+ readonly classes: _angular_core.Signal<string>;
2381
+ /**
2382
+ * Uses the separate `translate` property for centering, while the vertical
2383
+ * orientation is handled by `rotate`.
2384
+ */
2385
+ protected readonly placementStyles: _angular_core.Signal<{
2386
+ top: string | null;
2387
+ bottom: string | null;
2388
+ left: string | null;
2389
+ right: string | null;
2390
+ translate: string | null;
2391
+ }>;
2392
+ ngOnInit(): void;
2393
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<FloatingButtonComponent, never>;
2394
+ 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: {}; }]>;
2395
+ }
2396
+
2153
2397
  /**
2154
2398
  * A single item inside a `tedi-accordion`. Owns the item's state (expanded)
2155
2399
  * and the inputs shared by header and content (selected, showIconCard,
@@ -2336,7 +2580,7 @@ declare class AccordionItemHeaderComponent {
2336
2580
  * `display: contents` so it doesn't affect the visual layout — it only adds
2337
2581
  * semantic information for assistive technologies and TOC tools.
2338
2582
  */
2339
- headingLevel: _angular_core.InputSignal<1 | 3 | 5 | 4 | 2 | 6 | undefined>;
2583
+ headingLevel: _angular_core.InputSignal<1 | 2 | 3 | 4 | 5 | 6 | undefined>;
2340
2584
  /**
2341
2585
  * Chevron style of the default expand action.
2342
2586
  * Only effective when `headerClickable` is `false` (otherwise the
@@ -2618,6 +2862,53 @@ declare class CardHeaderComponent extends CardContentComponent {
2618
2862
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<CardHeaderComponent, "tedi-card-header", never, {}, {}, never, ["*"], true, never>;
2619
2863
  }
2620
2864
 
2865
+ declare class HeadingWithIconComponent {
2866
+ /**
2867
+ * Name of the Material Icon
2868
+ * https://fonts.google.com/icons
2869
+ *
2870
+ * Rendered as decorative and hidden from assistive technology — the
2871
+ * projected text is the accessible heading name.
2872
+ */
2873
+ icon: _angular_core.InputSignal<string>;
2874
+ /**
2875
+ * Semantic heading tag. Also sets the typography unless a heading modifier
2876
+ * overrides it, so pick the tag that fits the surrounding document outline.
2877
+ * @default h4
2878
+ */
2879
+ element: _angular_core.InputSignal<"h1" | "h2" | "h3" | "h4" | "h5" | "h6">;
2880
+ /**
2881
+ * Single or multiple modifiers to change the heading behavior. A heading
2882
+ * modifier here styles the heading as that level while `element` keeps the
2883
+ * semantics — e.g. an `h2` that looks like an `h4`.
2884
+ */
2885
+ modifiers: _angular_core.InputSignal<TextModifiers | TextModifiers[] | undefined>;
2886
+ /**
2887
+ * Heading text color.
2888
+ * @default primary
2889
+ */
2890
+ headingColor: _angular_core.InputSignal<TextColor>;
2891
+ /**
2892
+ * Color of the icon.
2893
+ * @default primary
2894
+ */
2895
+ iconColor: _angular_core.InputSignal<IconColor>;
2896
+ /**
2897
+ * Size of the icon in pixels.
2898
+ * @default 24
2899
+ */
2900
+ iconSize: _angular_core.InputSignal<IconSize>;
2901
+ /**
2902
+ * Whether the icon should be filled or outlined.
2903
+ * @default outlined
2904
+ */
2905
+ iconVariant: _angular_core.InputSignal<IconVariant>;
2906
+ private readonly visualLevel;
2907
+ lineHeightVar: _angular_core.Signal<string>;
2908
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<HeadingWithIconComponent, never>;
2909
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<HeadingWithIconComponent, "tedi-heading-with-icon", never, { "icon": { "alias": "icon"; "required": true; "isSignal": true; }; "element": { "alias": "element"; "required": false; "isSignal": true; }; "modifiers": { "alias": "modifiers"; "required": false; "isSignal": true; }; "headingColor": { "alias": "headingColor"; "required": false; "isSignal": true; }; "iconColor": { "alias": "iconColor"; "required": false; "isSignal": true; }; "iconSize": { "alias": "iconSize"; "required": false; "isSignal": true; }; "iconVariant": { "alias": "iconVariant"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
2910
+ }
2911
+
2621
2912
  type BulletColor = "primary" | "secondary" | "tertiary" | "brand" | "brand-dark" | "success" | "warning" | "warning-dark" | "danger" | "white";
2622
2913
  declare class ListComponent {
2623
2914
  /**
@@ -3711,7 +4002,7 @@ declare class PaginationComponent {
3711
4002
  protected readonly statusText: _angular_core.Signal<string>;
3712
4003
  constructor();
3713
4004
  protected handlePageChange(nextPage: number | null): void;
3714
- protected handlePageSizeChange(value: number | null): void;
4005
+ protected handlePageSizeChange(value: unknown): void;
3715
4006
  protected openMobilePicker(): void;
3716
4007
  protected openPageSizePicker(): void;
3717
4008
  private openPickerModal;
@@ -4937,6 +5228,46 @@ declare class TediTableHeaderButtonComponent {
4937
5228
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<TediTableHeaderButtonComponent, "button[tedi-table-header-button]", never, { "icon": { "alias": "icon"; "required": true; "isSignal": true; }; "filled": { "alias": "filled"; "required": false; "isSignal": true; }; "selected": { "alias": "selected"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "iconSize": { "alias": "iconSize"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "aria-label"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
4938
5229
  }
4939
5230
 
5231
+ declare class TruncateComponent {
5232
+ /**
5233
+ * Text to display and truncate when it exceeds `maxLength`.
5234
+ */
5235
+ readonly text: _angular_core.InputSignal<string>;
5236
+ /**
5237
+ * Maximum characters shown while collapsed, excluding the ellipsis.
5238
+ * Accepts a number or a breakpoint object, e.g. `{ xs: 100, md: 200 }`.
5239
+ * @default 200
5240
+ */
5241
+ readonly maxLength: _angular_core.InputSignalWithTransform<BreakpointObject<number>, BreakpointInput<number>>;
5242
+ /**
5243
+ * Text appended when content is truncated.
5244
+ * @default "..."
5245
+ */
5246
+ readonly ellipsis: _angular_core.InputSignal<string>;
5247
+ /**
5248
+ * Shows an expand/collapse button when the text exceeds `maxLength`.
5249
+ * When false, `expanded` can still be controlled programmatically.
5250
+ * @default true
5251
+ */
5252
+ readonly expandable: _angular_core.InputSignal<boolean>;
5253
+ /**
5254
+ * Whether to show the full text. Supports two-way binding with `[(expanded)]`.
5255
+ * @default false
5256
+ */
5257
+ readonly expanded: _angular_core.ModelSignal<boolean>;
5258
+ private readonly breakpointService;
5259
+ protected readonly textId: string;
5260
+ protected readonly resolvedMaxLength: _angular_core.Signal<number>;
5261
+ private readonly characters;
5262
+ protected readonly exceedsMaxLength: _angular_core.Signal<boolean>;
5263
+ protected readonly isTruncated: _angular_core.Signal<boolean>;
5264
+ protected readonly showToggle: _angular_core.Signal<boolean>;
5265
+ protected readonly displayText: _angular_core.Signal<string>;
5266
+ protected toggle(): void;
5267
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<TruncateComponent, never>;
5268
+ 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>;
5269
+ }
5270
+
4940
5271
  type DropdownTriggerAriaHasPopup = "menu" | "listbox" | "dialog" | "true";
4941
5272
  declare class DropdownTriggerDirective implements AfterViewInit {
4942
5273
  /** 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. */
@@ -5794,6 +6125,12 @@ interface FormFieldControl<T = unknown> {
5794
6125
  dirty?: Signal<boolean>;
5795
6126
  required?: Signal<boolean>;
5796
6127
  maxLength?: Signal<number | undefined>;
6128
+ /**
6129
+ * Number of characters `tedi-form-field`'s counter should report. Implemented
6130
+ * by controls whose value is not the text the user sees — a rich text editor
6131
+ * holding markup, say. Falls back to the length of `value`.
6132
+ */
6133
+ characterCount?: Signal<number>;
5797
6134
  /**
5798
6135
  * Clears the value. Implemented by controls that can be cleared, and called
5799
6136
  * by `tedi-form-field`'s clear button.
@@ -6335,7 +6672,7 @@ declare class FeedbackTextComponent {
6335
6672
  */
6336
6673
  position: _angular_core.InputSignal<FeedbackTextPosition>;
6337
6674
  role: _angular_core.Signal<"alert" | undefined>;
6338
- ariaLive: _angular_core.Signal<"assertive" | "polite">;
6675
+ ariaLive: _angular_core.Signal<"polite" | "assertive">;
6339
6676
  classes: _angular_core.Signal<string>;
6340
6677
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<FeedbackTextComponent, never>;
6341
6678
  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>;
@@ -6556,7 +6893,78 @@ declare class FormFieldComponent implements FieldContext {
6556
6893
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<FormFieldComponent, "tedi-form-field", never, { "size": { "alias": "size"; "required": false; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "clearable": { "alias": "clearable"; "required": false; "isSignal": true; }; "inputClass": { "alias": "inputClass"; "required": false; "isSignal": true; }; "characterLimit": { "alias": "characterLimit"; "required": false; "isSignal": true; }; }, {}, ["control", "feedback"], ["label[tedi-label], tedi-label-row", "*", "tedi-feedback-text", "[tediFormFieldExtra]"], true, never>;
6557
6894
  }
6558
6895
 
6896
+ /**
6897
+ * Context passed to a custom suggestion row template.
6898
+ */
6899
+ interface SearchSuggestionContext<T = unknown> {
6900
+ /** The suggestion, so `let-item` works without naming a context key. */
6901
+ $implicit: T;
6902
+ /** The same suggestion under a name, for `let-item="item"`. */
6903
+ item: T;
6904
+ /** Position in the rendered list, matching the row's `aria-activedescendant` id. */
6905
+ index: number;
6906
+ /** Resolved display label, via `bindLabel`. */
6907
+ label: string;
6908
+ /** Resolved secondary line, via `bindDescription`. Empty when unbound. */
6909
+ description: string;
6910
+ /** Whether the row is unselectable, via `bindDisabled`. */
6911
+ disabled: boolean;
6912
+ /** Current trimmed field value, for custom match highlighting. */
6913
+ query: string;
6914
+ }
6915
+ /**
6916
+ * Renders each suggestion row. Without it, rows show the resolved label with the
6917
+ * matched substring bolded.
6918
+ *
6919
+ * @example
6920
+ * ```html
6921
+ * <tedi-search [suggestions]="people" bindLabel="name">
6922
+ * <ng-template tediSearchSuggestion let-item>
6923
+ * <span tedi-text modifiers="bold">{{ item.name }}</span>
6924
+ * <span tedi-text color="tertiary">{{ item.code }}</span>
6925
+ * </ng-template>
6926
+ * </tedi-search>
6927
+ * ```
6928
+ */
6929
+ declare class SearchSuggestionTemplateDirective<T = unknown> {
6930
+ template: TemplateRef<SearchSuggestionContext<T>>;
6931
+ static ngTemplateContextGuard<T>(_dir: SearchSuggestionTemplateDirective<T>, _ctx: unknown): _ctx is SearchSuggestionContext<T>;
6932
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<SearchSuggestionTemplateDirective<any>, never>;
6933
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<SearchSuggestionTemplateDirective<any>, "[tediSearchSuggestion]", never, {}, {}, never, never, true, never>;
6934
+ }
6935
+ /**
6936
+ * Extra content pinned below the suggestions — fallback actions and a hint, for
6937
+ * example. It shows whenever the panel is open, including the no-results state,
6938
+ * which is what makes it useful for "nothing matched, try this instead".
6939
+ *
6940
+ * Suggestions keep behaving exactly as they do without it: filtering, arrow-key
6941
+ * navigation and Enter to select are unchanged. Tab moves from the field into the
6942
+ * footer's controls.
6943
+ *
6944
+ * @example
6945
+ * ```html
6946
+ * <tedi-search [suggestions]="matches()">
6947
+ * <ng-template tediSearchFooter>
6948
+ * <tedi-search-footer-actions>
6949
+ * <button tedi-button variant="secondary">Isik teadmata</button>
6950
+ * </tedi-search-footer-actions>
6951
+ * </ng-template>
6952
+ * </tedi-search>
6953
+ * ```
6954
+ */
6955
+ declare class SearchFooterTemplateDirective {
6956
+ template: TemplateRef<unknown>;
6957
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<SearchFooterTemplateDirective, never>;
6958
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<SearchFooterTemplateDirective, "[tediSearchFooter]", never, {}, {}, never, never, true, never>;
6959
+ }
6960
+
6559
6961
  type SearchSize = InputSize;
6962
+ interface SearchSuggestionView<T = unknown> {
6963
+ item: T;
6964
+ label: string;
6965
+ description: string;
6966
+ disabled: boolean;
6967
+ }
6560
6968
  interface SearchButton {
6561
6969
  /**
6562
6970
  * Visible button text. When omitted, the button is rendered icon-only.
@@ -6578,7 +6986,7 @@ interface SearchButton {
6578
6986
  */
6579
6987
  ariaLabel?: string;
6580
6988
  }
6581
- declare class SearchComponent implements ControlValueAccessor {
6989
+ declare class SearchComponent<T = unknown> implements ControlValueAccessor {
6582
6990
  /**
6583
6991
  * Unique identifier for the input element, used to associate the label.
6584
6992
  */
@@ -6628,6 +7036,62 @@ declare class SearchComponent implements ControlValueAccessor {
6628
7036
  * `placeholder`, then the translated "search" label.
6629
7037
  */
6630
7038
  ariaLabel: _angular_core.InputSignal<string | undefined>;
7039
+ /**
7040
+ * Suggestions to show in the panel, already filtered by the consumer. Bind an
7041
+ * empty array to keep the combobox behaviour while nothing matches; leave it
7042
+ * unbound for a plain search field.
7043
+ */
7044
+ suggestions: _angular_core.InputSignal<T[] | undefined>;
7045
+ /**
7046
+ * Property holding the display label when suggestions are objects.
7047
+ * @default "label"
7048
+ */
7049
+ bindLabel: _angular_core.InputSignal<string>;
7050
+ /**
7051
+ * Property holding a secondary line shown under the label. Unset by default,
7052
+ * so rows are a single line unless asked for.
7053
+ */
7054
+ bindDescription: _angular_core.InputSignal<string | undefined>;
7055
+ /**
7056
+ * Property marking a suggestion as unselectable. Disabled rows are greyed out
7057
+ * and skipped by keyboard navigation.
7058
+ * @default "disabled"
7059
+ */
7060
+ bindDisabled: _angular_core.InputSignal<string>;
7061
+ /**
7062
+ * Characters required before the panel opens. Below it nothing is shown, not
7063
+ * even the no-results row, so short queries stay quiet.
7064
+ * @default 0
7065
+ */
7066
+ minQueryLength: _angular_core.InputSignalWithTransform<number, unknown>;
7067
+ /**
7068
+ * Shows a loading row instead of results.
7069
+ * @default false
7070
+ */
7071
+ loading: _angular_core.InputSignalWithTransform<boolean, unknown>;
7072
+ /**
7073
+ * Closes the suggestion panel when the page (or a scrollable ancestor)
7074
+ * scrolls. Scrolling the option list itself keeps the panel open.
7075
+ * @default false
7076
+ */
7077
+ hideOnScroll: _angular_core.InputSignalWithTransform<boolean, unknown>;
7078
+ /**
7079
+ * Whether the suggestion panel is open.
7080
+ * @default false
7081
+ */
7082
+ panelOpen: _angular_core.ModelSignal<boolean>;
7083
+ /**
7084
+ * Overrides the translated "no results" row.
7085
+ */
7086
+ noResultsText: _angular_core.InputSignal<string | undefined>;
7087
+ /**
7088
+ * Overrides the translated loading row.
7089
+ */
7090
+ loadingText: _angular_core.InputSignal<string | undefined>;
7091
+ /**
7092
+ * Overrides the translated screen-reader result count.
7093
+ */
7094
+ resultsCountText: _angular_core.InputSignal<((count: number) => string) | undefined>;
6631
7095
  /**
6632
7096
  * Emitted when the search is executed (Enter key or button click).
6633
7097
  */
@@ -6636,11 +7100,41 @@ declare class SearchComponent implements ControlValueAccessor {
6636
7100
  * Emitted when the clear button is clicked.
6637
7101
  */
6638
7102
  readonly clear: _angular_core.OutputEmitterRef<void>;
7103
+ /**
7104
+ * Emitted when a suggestion is accepted. The field is filled with its label.
7105
+ */
7106
+ readonly suggestionSelect: _angular_core.OutputEmitterRef<T>;
7107
+ readonly suggestionTemplate: _angular_core.Signal<SearchSuggestionTemplateDirective<any> | undefined>;
7108
+ readonly footerTemplate: _angular_core.Signal<SearchFooterTemplateDirective | undefined>;
6639
7109
  private readonly inputRef;
7110
+ private readonly overlayOrigin;
7111
+ private readonly connectedOverlay;
7112
+ private readonly suggestionRows;
6640
7113
  private readonly formDisabled;
7114
+ private readonly hostElement;
6641
7115
  private readonly translationService;
7116
+ private readonly renderer;
7117
+ private readonly document;
7118
+ private readonly injector;
7119
+ private scrollListener?;
6642
7120
  private onChange;
6643
7121
  private onTouched;
7122
+ /** Suppresses the focus-driven reopen after a selection, until the next edit. */
7123
+ private justSelected;
7124
+ /**
7125
+ * Navigation is driven from `event.key` via the explicit `set*ItemActive`
7126
+ * methods rather than `keyManager.onKeydown`, which switches on the deprecated
7127
+ * `event.keyCode` and so ignores synthesised events.
7128
+ */
7129
+ private readonly keyManager;
7130
+ private readonly activeIndex;
7131
+ readonly overlayPositions: ConnectedPosition[];
7132
+ readonly panelWidth: _angular_core.WritableSignal<number>;
7133
+ /**
7134
+ * True while the panel sits above the field on the fallback position, so the
7135
+ * rounded edge can move to the side that is not joined to the field.
7136
+ */
7137
+ readonly panelAbove: _angular_core.WritableSignal<boolean>;
6644
7138
  readonly isDisabled: _angular_core.Signal<boolean>;
6645
7139
  readonly fieldIcon: _angular_core.Signal<string | FormFieldIcon | undefined>;
6646
7140
  readonly fieldHeight: _angular_core.Signal<"var(--form-field-height-sm)" | "var(--form-field-height-lg)" | "var(--form-field-height)">;
@@ -6655,18 +7149,120 @@ declare class SearchComponent implements ControlValueAccessor {
6655
7149
  * otherwise `aria-label` would silently override the visible text.
6656
7150
  */
6657
7151
  readonly inputAriaLabel: _angular_core.Signal<string | null>;
7152
+ /**
7153
+ * Derived from capability, never from current content — an empty
7154
+ * `suggestions` array still means the consumer opted into the combobox.
7155
+ */
7156
+ readonly autocomplete: _angular_core.Signal<boolean>;
7157
+ readonly resolvedSuggestions: _angular_core.Signal<SearchSuggestionView<T>[]>;
7158
+ readonly query: _angular_core.Signal<string>;
7159
+ readonly hasSuggestions: _angular_core.Signal<boolean>;
7160
+ readonly listboxId: _angular_core.Signal<string>;
7161
+ readonly meetsMinQueryLength: _angular_core.Signal<boolean>;
7162
+ readonly panelVisible: _angular_core.Signal<boolean>;
7163
+ readonly inputRole: _angular_core.Signal<"combobox" | "searchbox">;
7164
+ readonly ariaAutocomplete: _angular_core.Signal<"list" | null>;
7165
+ readonly ariaExpanded: _angular_core.Signal<boolean | null>;
7166
+ readonly ariaControls: _angular_core.Signal<string | null>;
7167
+ readonly activeOptionId: _angular_core.Signal<string | null>;
7168
+ readonly resolvedNoResultsText: _angular_core.Signal<string>;
7169
+ readonly resolvedLoadingText: _angular_core.Signal<string>;
7170
+ readonly announcement: _angular_core.Signal<string>;
7171
+ constructor();
7172
+ optionId(index: number): string;
6658
7173
  onInputValue(value: string): void;
6659
7174
  onClear(): void;
6660
7175
  onBlur(): void;
7176
+ onInputFocus(): void;
7177
+ openPanel(): void;
7178
+ closePanel(): void;
7179
+ onPositionChange(change: ConnectedOverlayPositionChange): void;
7180
+ onOverlayAttach(): void;
7181
+ onOverlayDetach(): void;
7182
+ /**
7183
+ * Listens on the document in the capture phase so scrolls in any ancestor are
7184
+ * seen — a scroll event does not bubble past the element that scrolled.
7185
+ */
7186
+ private setupScrollListener;
7187
+ private cleanupScrollListener;
7188
+ /** Closes the panel and hands focus back to the input. */
7189
+ closeAndRestoreFocus(): void;
7190
+ onKeydown(event: KeyboardEvent): void;
7191
+ /**
7192
+ * Footer controls live in the overlay, which sits at the end of the document,
7193
+ * so they are not next in tab order. Tab reaches them explicitly; without this
7194
+ * they would be mouse-only.
7195
+ */
7196
+ private onTabFromInput;
7197
+ /**
7198
+ * Tabbing past the footer leaves the component: close the panel and continue to
7199
+ * whatever follows the field in document order, so the footer is not a trap.
7200
+ */
7201
+ onFooterKeydown(event: KeyboardEvent): void;
7202
+ private footerFocusables;
7203
+ private focusAfterField;
7204
+ selectSuggestion(suggestion: SearchSuggestionView<T>): void;
7205
+ /**
7206
+ * The panel is portalled into the overlay container, so it is not a descendant
7207
+ * of the host — both roots have to be consulted before deciding focus left.
7208
+ */
7209
+ onFocusOut(event: FocusEvent): void;
6661
7210
  emitSearch(): void;
6662
7211
  focus(): void;
6663
7212
  writeValue(value: string | null): void;
6664
7213
  registerOnChange(fn: (value: string) => void): void;
6665
7214
  registerOnTouched(fn: () => void): void;
6666
7215
  setDisabledState(isDisabled: boolean): void;
6667
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<SearchComponent, never>;
6668
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<SearchComponent, "tedi-search", never, { "inputId": { "alias": "inputId"; "required": true; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "clearable": { "alias": "clearable"; "required": false; "isSignal": true; }; "searchIcon": { "alias": "searchIcon"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "button": { "alias": "button"; "required": false; "isSignal": true; }; "feedbackText": { "alias": "feedbackText"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "searchEvent": "searchEvent"; "clear": "clear"; }, never, never, true, never>;
7216
+ private onArrowKey;
7217
+ private onEnter;
7218
+ private panelElement;
7219
+ private resetActiveOption;
7220
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<SearchComponent<any>, never>;
7221
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<SearchComponent<any>, "tedi-search", never, { "inputId": { "alias": "inputId"; "required": true; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "clearable": { "alias": "clearable"; "required": false; "isSignal": true; }; "searchIcon": { "alias": "searchIcon"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "button": { "alias": "button"; "required": false; "isSignal": true; }; "feedbackText": { "alias": "feedbackText"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; "suggestions": { "alias": "suggestions"; "required": false; "isSignal": true; }; "bindLabel": { "alias": "bindLabel"; "required": false; "isSignal": true; }; "bindDescription": { "alias": "bindDescription"; "required": false; "isSignal": true; }; "bindDisabled": { "alias": "bindDisabled"; "required": false; "isSignal": true; }; "minQueryLength": { "alias": "minQueryLength"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "hideOnScroll": { "alias": "hideOnScroll"; "required": false; "isSignal": true; }; "panelOpen": { "alias": "panelOpen"; "required": false; "isSignal": true; }; "noResultsText": { "alias": "noResultsText"; "required": false; "isSignal": true; }; "loadingText": { "alias": "loadingText"; "required": false; "isSignal": true; }; "resultsCountText": { "alias": "resultsCountText"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "panelOpen": "panelOpenChange"; "searchEvent": "searchEvent"; "clear": "clear"; "suggestionSelect": "suggestionSelect"; }, ["suggestionTemplate", "footerTemplate"], never, true, never>;
7222
+ }
7223
+
7224
+ declare class SearchSuggestionComponent implements Highlightable {
7225
+ /** Resolved display label. */
7226
+ readonly label: _angular_core.InputSignal<string>;
7227
+ /** Secondary line under the label. */
7228
+ readonly description: _angular_core.InputSignal<string>;
7229
+ /** Current field value, used to bold the matching segment. */
7230
+ readonly query: _angular_core.InputSignal<string>;
7231
+ /** Whether a custom suggestion template supplies the row content. */
7232
+ readonly custom: _angular_core.InputSignalWithTransform<boolean, unknown>;
7233
+ readonly disabledInput: _angular_core.InputSignalWithTransform<boolean, unknown>;
7234
+ readonly host: ElementRef<HTMLLIElement>;
7235
+ private readonly active;
7236
+ readonly isActive: _angular_core.Signal<boolean>;
7237
+ readonly parts: _angular_core.Signal<_tedi_design_system_angular_tedi.SearchHighlightPart[]>;
7238
+ /**
7239
+ * `Highlightable` requires a plain boolean, so the signal input is aliased and
7240
+ * this getter satisfies the CDK contract — a signal would always read truthy.
7241
+ */
7242
+ get disabled(): boolean;
7243
+ setActiveStyles(): void;
7244
+ setInactiveStyles(): void;
7245
+ getLabel(): string;
7246
+ scrollIntoView(): void;
7247
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<SearchSuggestionComponent, never>;
7248
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<SearchSuggestionComponent, "li[tedi-search-suggestion]", never, { "label": { "alias": "label"; "required": false; "isSignal": true; }; "description": { "alias": "description"; "required": false; "isSignal": true; }; "query": { "alias": "query"; "required": false; "isSignal": true; }; "custom": { "alias": "custom"; "required": false; "isSignal": true; }; "disabledInput": { "alias": "disabled"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
7249
+ }
7250
+
7251
+ /**
7252
+ * Row of buttons inside a `tediSearchFooter`. Centres them and wraps to a new
7253
+ * line when they no longer fit side by side.
7254
+ */
7255
+ declare class SearchFooterActionsComponent {
7256
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<SearchFooterActionsComponent, never>;
7257
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<SearchFooterActionsComponent, "tedi-search-footer-actions", never, {}, {}, never, ["*"], true, never>;
7258
+ }
7259
+
7260
+ interface SearchHighlightPart {
7261
+ text: string;
7262
+ match: boolean;
6669
7263
  }
7264
+ /** Splits `text` so the segment matching `query` can be emphasised. */
7265
+ declare function highlightParts(text: string, query: string): SearchHighlightPart[];
6670
7266
 
6671
7267
  /**
6672
7268
  * Context provided to custom option templates.
@@ -6864,6 +7460,12 @@ declare class SelectComponent<T = unknown> implements AfterContentChecked, After
6864
7460
  * When undefined, the entire object is used as the value.
6865
7461
  */
6866
7462
  bindValue: _angular_core.InputSignal<string | undefined>;
7463
+ /**
7464
+ * Selected value, for use without a form directive. An array in multi-select
7465
+ * mode, the bare value otherwise. Unlike `[ngModel]` it applies on the first
7466
+ * render rather than a frame later. Do not combine with a form directive.
7467
+ */
7468
+ value: _angular_core.InputSignal<unknown>;
6867
7469
  /**
6868
7470
  * Whether multiple items can be selected.
6869
7471
  * @default false
@@ -7027,6 +7629,7 @@ declare class SelectComponent<T = unknown> implements AfterContentChecked, After
7027
7629
  /** `aria-label` is only used when no labelledby reference is available. */
7028
7630
  resolvedAriaLabel: _angular_core.Signal<string | null>;
7029
7631
  isOpen: _angular_core.WritableSignal<boolean>;
7632
+ /** `allowMultiple` untracked, so flipping the mode cannot wipe the selection. */
7030
7633
  selectedValues: _angular_core.WritableSignal<unknown[]>;
7031
7634
  disabled: _angular_core.WritableSignal<boolean>;
7032
7635
  dropdownWidth: _angular_core.WritableSignal<number | null>;
@@ -7180,12 +7783,13 @@ declare class SelectComponent<T = unknown> implements AfterContentChecked, After
7180
7783
  private toggleGroupSelection;
7181
7784
  onChange: (value: unknown) => void;
7182
7785
  onTouched: () => void;
7786
+ private toSelection;
7183
7787
  writeValue(value: unknown): void;
7184
7788
  registerOnChange(fn: (value: unknown) => void): void;
7185
7789
  registerOnTouched(fn: () => void): void;
7186
7790
  setDisabledState(isDisabled: boolean): void;
7187
7791
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<SelectComponent<any>, never>;
7188
- 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; }; "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>;
7792
+ 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>;
7189
7793
  }
7190
7794
 
7191
7795
  type SliderHideLabel = boolean | "keep-space";
@@ -7389,6 +7993,27 @@ declare class FormFieldExtraDirective {
7389
7993
  static ɵdir: _angular_core.ɵɵDirectiveDeclaration<FormFieldExtraDirective, "[tediFormFieldExtra]", never, {}, {}, never, never, true, never>;
7390
7994
  }
7391
7995
 
7996
+ interface DerivedControlState {
7997
+ invalid: Signal<boolean>;
7998
+ touched: Signal<boolean>;
7999
+ dirty: Signal<boolean>;
8000
+ /** Whether the bound control carries `Validators.required`. */
8001
+ required: Signal<boolean>;
8002
+ /**
8003
+ * Call from `ngOnInit`: a control that is its own `NG_VALUE_ACCESSOR` cannot
8004
+ * inject `NgControl` in the constructor, because the accessor is what
8005
+ * `NgControl` depends on.
8006
+ */
8007
+ connect(): void;
8008
+ }
8009
+ declare function deriveControlState(): DerivedControlState;
8010
+
8011
+ interface ControlDescribedBy {
8012
+ attribute: Signal<string | null>;
8013
+ set(ids: string[]): void;
8014
+ }
8015
+ declare function controlDescribedBy(): ControlDescribedBy;
8016
+
7392
8017
  /**
7393
8018
  * Shared behavior for the prefix/suffix addon directives: reads the group's
7394
8019
  * disabled state and detects whether the addon holds plain text (so the
@@ -7469,11 +8094,6 @@ declare class InputGroupComponent implements InputGroupContext {
7469
8094
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<InputGroupComponent, "tedi-input-group", never, { "addons": { "alias": "addons"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "invalid": { "alias": "invalid"; "required": false; "isSignal": true; }; }, {}, ["prefix", "suffix"], ["label[tedi-label], tedi-label-row", "[tediInputGroupPrefix]", "tedi-form-field, tedi-select", "[tediInputGroupSuffix]", "tedi-feedback-text"], true, never>;
7470
8095
  }
7471
8096
 
7472
- interface ControlDescribedBy {
7473
- attribute: Signal<string | null>;
7474
- set(ids: string[]): void;
7475
- }
7476
-
7477
8097
  declare class TextFieldComponent implements OnInit, ControlValueAccessor, FormFieldControl {
7478
8098
  private el;
7479
8099
  private readonly fieldContext;
@@ -7507,7 +8127,7 @@ declare class TextFieldComponent implements OnInit, ControlValueAccessor, FormFi
7507
8127
  readonly disabledInput: _angular_core.InputSignalWithTransform<boolean, unknown>;
7508
8128
  readonly disabled: _angular_core.Signal<boolean>;
7509
8129
  private readonly derived;
7510
- readonly describedBy: ControlDescribedBy;
8130
+ readonly describedBy: _tedi_design_system_angular_tedi.ControlDescribedBy;
7511
8131
  readonly touched: _angular_core.Signal<boolean>;
7512
8132
  readonly dirty: _angular_core.Signal<boolean>;
7513
8133
  readonly invalid: _angular_core.Signal<boolean>;
@@ -7615,7 +8235,7 @@ declare class TextareaComponent implements OnInit, ControlValueAccessor, FormFie
7615
8235
  readonly maxHeightStyle: _angular_core.Signal<string>;
7616
8236
  readonly disabled: _angular_core.Signal<boolean>;
7617
8237
  private readonly derived;
7618
- readonly describedBy: ControlDescribedBy;
8238
+ readonly describedBy: _tedi_design_system_angular_tedi.ControlDescribedBy;
7619
8239
  readonly touched: _angular_core.Signal<boolean>;
7620
8240
  readonly dirty: _angular_core.Signal<boolean>;
7621
8241
  readonly invalid: _angular_core.Signal<boolean>;
@@ -7760,9 +8380,18 @@ interface ModalConfig<D = unknown> {
7760
8380
  fullscreen?: ModalFullscreen;
7761
8381
  /** Max-width cap (e.g. '75%', '60vw'). Overrides the default 95vw limit. */
7762
8382
  maxWidth?: string;
7763
- /** ARIA label for the dialog. */
8383
+ /**
8384
+ * Accessible name for the dialog. Set this only when the modal has no
8385
+ * visible heading, or when the heading is not the name you want announced:
8386
+ * a modal whose content renders a heading inside `<tedi-modal-header>` is
8387
+ * labelled by that heading automatically.
8388
+ */
7764
8389
  ariaLabel?: string;
7765
- /** ID of the element that labels the dialog. */
8390
+ /**
8391
+ * Id of the element that labels the dialog, for a label that lives outside
8392
+ * `<tedi-modal-header>`. Ignored when `ariaLabel` is set, and takes
8393
+ * precedence over the automatic heading lookup.
8394
+ */
7766
8395
  ariaLabelledBy?: string;
7767
8396
  }
7768
8397
  /** Injection token for data passed to a modal opened via ModalService. */
@@ -8363,8 +8992,11 @@ declare class TimelineComponent {
8363
8992
  */
8364
8993
  variant: _angular_core.InputSignal<TimelineVariant>;
8365
8994
  /**
8366
- * Item padding in rems for the card variant.
8367
- * @default 1
8995
+ * Vertical padding of each item in the "card" variant, in rems (same scale
8996
+ * as Card). Both the gaps between items and the card's top/bottom edges
8997
+ * resolve to twice this value. Horizontal item padding is fixed at the card
8998
+ * default.
8999
+ * @default 0.5
8368
9000
  */
8369
9001
  cardPadding: _angular_core.InputSignal<CardPaddingNumber | undefined>;
8370
9002
  items: _angular_core.WritableSignal<TimelineItemComponent[]>;
@@ -8728,7 +9360,7 @@ declare class HeaderMobileButtonComponent {
8728
9360
  * is confusing to assistive tech — if a popup is involved, omit `href`
8729
9361
  * so the component renders as a button.
8730
9362
  */
8731
- ariaHasPopup: _angular_core.InputSignal<"menu" | "listbox" | "dialog" | "true" | "grid" | "false" | "tree" | undefined>;
9363
+ ariaHasPopup: _angular_core.InputSignal<"menu" | "listbox" | "dialog" | "true" | "false" | "grid" | "tree" | undefined>;
8732
9364
  /**
8733
9365
  * Forwarded to the inner `<button>` as `aria-expanded`. Pair with
8734
9366
  * `ariaHasPopup` when this button toggles a dialog/menu open.
@@ -9259,6 +9891,94 @@ declare class SideNavToggleComponent {
9259
9891
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<SideNavToggleComponent, "button[tedi-sidenav-toggle]", never, {}, {}, never, never, true, never>;
9260
9892
  }
9261
9893
 
9894
+ declare class SkeletonComponent implements OnInit, OnDestroy {
9895
+ private readonly liveAnnouncer;
9896
+ private readonly translationService;
9897
+ private readonly isBrowser;
9898
+ /**
9899
+ * Announced by the skeleton's `role="status"` live region once the skeleton
9900
+ * has been on screen for `labelDelay`. Say what is loading: "Loading search
9901
+ * results" carries more than the generic fallback.
9902
+ * @default the translated `skeleton.loading` label
9903
+ */
9904
+ label: _angular_core.InputSignal<string | undefined>;
9905
+ /**
9906
+ * Announced when the skeleton is removed. The skeleton's own live region goes
9907
+ * with it, so this one goes through a page-level announcer. Only announced if
9908
+ * `label` was announced first, so content that arrives faster than
9909
+ * `labelDelay` stays silent.
9910
+ * @default the translated `skeleton.loading-completed` label
9911
+ */
9912
+ completedLabel: _angular_core.InputSignal<string | undefined>;
9913
+ /**
9914
+ * Delay in ms before `label` is announced, so brief loads do not interrupt
9915
+ * the screen reader.
9916
+ * @default 200
9917
+ */
9918
+ labelDelay: _angular_core.InputSignal<number>;
9919
+ /**
9920
+ * Text of the `role="status"` live region. Empty until `labelDelay` has
9921
+ * passed, so the region is in the DOM before it gains text: screen readers
9922
+ * only announce a live region they were already tracking.
9923
+ */
9924
+ protected readonly announcement: _angular_core.WritableSignal<string>;
9925
+ private announceTimer?;
9926
+ ngOnInit(): void;
9927
+ ngOnDestroy(): void;
9928
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<SkeletonComponent, never>;
9929
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<SkeletonComponent, "tedi-skeleton", never, { "label": { "alias": "label"; "required": false; "isSignal": true; }; "completedLabel": { "alias": "completedLabel"; "required": false; "isSignal": true; }; "labelDelay": { "alias": "labelDelay"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
9930
+ }
9931
+
9932
+ type SkeletonBlockWidth = number | `${number}` | "auto" | `${number}px`;
9933
+ type SkeletonBlockTextHeight = "p" | "h1" | "h2" | "h3" | "h4" | "h5" | "h6";
9934
+ type SkeletonBlockHeight = SkeletonBlockTextHeight | number | `${number}`;
9935
+ /**
9936
+ * The subset of inputs that can be overridden per breakpoint via the
9937
+ * `xs`–`xxl` inputs. Every field is optional; only the ones you set override
9938
+ * the base value at that breakpoint.
9939
+ */
9940
+ type SkeletonBlockInputs = {
9941
+ /** Overrides {@link SkeletonBlockComponent.width}. */
9942
+ width?: SkeletonBlockWidth;
9943
+ /** Overrides {@link SkeletonBlockComponent.height}. */
9944
+ height?: SkeletonBlockHeight;
9945
+ };
9946
+ declare class SkeletonBlockComponent {
9947
+ /**
9948
+ * Width of the block. A number is a percentage of the container, a `px`
9949
+ * string is an absolute width, and `auto` fills the container.
9950
+ * @default auto
9951
+ */
9952
+ width: _angular_core.InputSignal<SkeletonBlockWidth>;
9953
+ /**
9954
+ * Height of the block. A text style (`p`, `h1`–`h6`) takes the line height of
9955
+ * the text the block stands in for and follows it across breakpoints, so the
9956
+ * real content drops in without shifting the layout. Pass a number instead
9957
+ * for a height in px, for blocks that stand in for something other than text.
9958
+ * @default p
9959
+ */
9960
+ height: _angular_core.InputSignal<SkeletonBlockHeight>;
9961
+ /** Overrides applied from the `xs` breakpoint (≥ 0px) and up. */
9962
+ xs: _angular_core.InputSignal<SkeletonBlockInputs | undefined>;
9963
+ /** Overrides applied from the `sm` breakpoint (≥ 576px) and up. */
9964
+ sm: _angular_core.InputSignal<SkeletonBlockInputs | undefined>;
9965
+ /** Overrides applied from the `md` breakpoint (≥ 768px) and up. */
9966
+ md: _angular_core.InputSignal<SkeletonBlockInputs | undefined>;
9967
+ /** Overrides applied from the `lg` breakpoint (≥ 992px) and up. */
9968
+ lg: _angular_core.InputSignal<SkeletonBlockInputs | undefined>;
9969
+ /** Overrides applied from the `xl` breakpoint (≥ 1200px) and up. */
9970
+ xl: _angular_core.InputSignal<SkeletonBlockInputs | undefined>;
9971
+ /** Overrides applied from the `xxl` breakpoint (≥ 1400px) and up. */
9972
+ xxl: _angular_core.InputSignal<SkeletonBlockInputs | undefined>;
9973
+ private readonly breakpointService;
9974
+ protected currentProps: _angular_core.Signal<SkeletonBlockInputs>;
9975
+ protected classes: _angular_core.Signal<string>;
9976
+ protected resolvedWidth: _angular_core.Signal<string | null>;
9977
+ protected resolvedHeight: _angular_core.Signal<string | null>;
9978
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<SkeletonBlockComponent, never>;
9979
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<SkeletonBlockComponent, "tedi-skeleton-block", never, { "width": { "alias": "width"; "required": false; "isSignal": true; }; "height": { "alias": "height"; "required": false; "isSignal": true; }; "xs": { "alias": "xs"; "required": false; "isSignal": true; }; "sm": { "alias": "sm"; "required": false; "isSignal": true; }; "md": { "alias": "md"; "required": false; "isSignal": true; }; "lg": { "alias": "lg"; "required": false; "isSignal": true; }; "xl": { "alias": "xl"; "required": false; "isSignal": true; }; "xxl": { "alias": "xxl"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
9980
+ }
9981
+
9262
9982
  type SpinnerSize = 10 | 16 | 48;
9263
9983
  type SpinnerColor = "primary" | "secondary";
9264
9984
  declare class SpinnerComponent {
@@ -9637,9 +10357,21 @@ declare class ModalComponent implements AfterViewInit, OnDestroy {
9637
10357
  readonly position: _angular_core.InputSignal<ModalPosition>;
9638
10358
  /** @deprecated Whether clicking the backdrop closes the modal. Only used in standalone mode. */
9639
10359
  readonly closeOnBackdropClick: _angular_core.InputSignal<boolean>;
10360
+ /**
10361
+ * Accessible name for the dialog. Only needed when the modal has no heading
10362
+ * in `<tedi-modal-header>`, or that heading is not the name to announce.
10363
+ * Standalone mode only; service mode uses `ModalConfig.ariaLabel`.
10364
+ */
10365
+ readonly ariaLabel: _angular_core.InputSignal<string | undefined>;
10366
+ /**
10367
+ * Id of an element labelling the dialog, for a label outside
10368
+ * `<tedi-modal-header>`. Ignored when `ariaLabel` is set.
10369
+ */
10370
+ readonly ariaLabelledBy: _angular_core.InputSignal<string | undefined>;
9640
10371
  private readonly document;
9641
10372
  private readonly host;
9642
10373
  private readonly platformId;
10374
+ private readonly idGenerator;
9643
10375
  /**
9644
10376
  * When a ModalRef is available, this component is inside a CDK Dialog
9645
10377
  * and should act as a layout-only wrapper.
@@ -9650,17 +10382,29 @@ declare class ModalComponent implements AfterViewInit, OnDestroy {
9650
10382
  private readonly isPresetWidth;
9651
10383
  /** Custom width for non-preset widths (legacy mode only). */
9652
10384
  readonly customWidth: Signal<ModalWidth | null>;
10385
+ /** Re-resolved on every open, since the heading is projected content. */
10386
+ private readonly headingLabelId;
10387
+ /** @internal */
10388
+ protected readonly dialogAriaLabel: Signal<string | null>;
10389
+ /** @internal `aria-label` wins, so it is never paired with a labelledby. */
10390
+ protected readonly dialogAriaLabelledBy: Signal<string | null>;
9653
10391
  readonly classes: Signal<string>;
9654
10392
  constructor();
9655
10393
  ngAfterViewInit(): void;
9656
10394
  ngOnDestroy(): void;
9657
10395
  private onOpen;
10396
+ /**
10397
+ * A DOM query rather than a `contentChild`, because the header injects this
10398
+ * component (importing it back would close a cycle) and the heading is
10399
+ * double-projected, out of reach of any query here.
10400
+ */
10401
+ private resolveHeadingLabel;
9658
10402
  private onClose;
9659
10403
  /** @internal */
9660
10404
  onBackdropClick(): void;
9661
10405
  private handleKeydown;
9662
10406
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<ModalComponent, never>;
9663
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<ModalComponent, "tedi-modal", never, { "open": { "alias": "open"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "width": { "alias": "width"; "required": false; "isSignal": true; }; "position": { "alias": "position"; "required": false; "isSignal": true; }; "closeOnBackdropClick": { "alias": "closeOnBackdropClick"; "required": false; "isSignal": true; }; }, { "open": "openChange"; }, never, ["tedi-modal-header", "tedi-modal-content", "tedi-modal-footer"], true, never>;
10407
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ModalComponent, "tedi-modal", never, { "open": { "alias": "open"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "width": { "alias": "width"; "required": false; "isSignal": true; }; "position": { "alias": "position"; "required": false; "isSignal": true; }; "closeOnBackdropClick": { "alias": "closeOnBackdropClick"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; "ariaLabelledBy": { "alias": "ariaLabelledBy"; "required": false; "isSignal": true; }; }, { "open": "openChange"; }, never, ["tedi-modal-header", "tedi-modal-content", "tedi-modal-footer"], true, never>;
9664
10408
  }
9665
10409
 
9666
10410
  /**
@@ -9685,6 +10429,8 @@ declare class ModalRef<R = unknown> {
9685
10429
  declare class ModalService {
9686
10430
  private readonly dialog;
9687
10431
  private readonly overlay;
10432
+ private readonly injector;
10433
+ private readonly idGenerator;
9688
10434
  /**
9689
10435
  * Open a modal dialog with the given component as content.
9690
10436
  *
@@ -9706,6 +10452,16 @@ declare class ModalService {
9706
10452
  open<R = unknown, D = unknown>(component: ComponentType<unknown>, config?: ModalConfig<D>): ModalRef<R>;
9707
10453
  /** Close all open modals. */
9708
10454
  closeAll(): void;
10455
+ /**
10456
+ * Names the dialog from the heading in its `<tedi-modal-header>` when the
10457
+ * caller passed no label of their own. Deferred, because `Dialog.open`
10458
+ * returns before the content renders and the heading does not exist yet.
10459
+ *
10460
+ * Written onto the container rather than passed as
10461
+ * `DialogConfig.ariaLabelledBy`, which would commit to an id before knowing
10462
+ * whether a heading exists and leave a dangling reference when none does.
10463
+ */
10464
+ private labelFromHeading;
9709
10465
  private buildPanelClasses;
9710
10466
  private setupDialogBehavior;
9711
10467
  private buildPositionStrategy;
@@ -9962,7 +10718,7 @@ declare class StatusBadgeComponent {
9962
10718
  */
9963
10719
  icon: _angular_core.InputSignal<string>;
9964
10720
  classes: _angular_core.Signal<string[]>;
9965
- ariaLive: _angular_core.Signal<"assertive" | "polite" | null>;
10721
+ ariaLive: _angular_core.Signal<"polite" | "assertive" | null>;
9966
10722
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<StatusBadgeComponent, never>;
9967
10723
  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>;
9968
10724
  }
@@ -10086,6 +10842,6 @@ declare function isValidTime(time: string | null | undefined): boolean;
10086
10842
  */
10087
10843
  declare function normalizeTime(input: string): string | null;
10088
10844
 
10089
- 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, 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, SelectComponent, SelectOptionTemplateDirective, SelectTooltipTemplateDirective, SelectValueTemplateDirective, SeparatorComponent, ShowAtDirective, SideNavComponent, SideNavDropdownComponent, SideNavDropdownGroupComponent, SideNavDropdownItemComponent, SideNavGroupTitleComponent, SideNavItemComponent, SideNavOverlayComponent, SideNavToggleComponent, 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, VerticalSpacingDirective, VerticalSpacingItemDirective, addDays, addMonths, addYears, breakpointInput, buildMonthGrid, calculateArrowOffset, calculateVisibleTagCount, computeGroupSpans, cookieSignal, createTablePersistence, endOfMonth, formatDate, formatLocaleDate, formatLocaleDateHint, formatLocaleDateLong, formatMonthYear, generateUUID, getCardBorderPlacementColor, getDaysInMonth, getFirstDayOfWeek, getFocusableElements, getISOWeek, getMonthNames, getPaddingCssVariables, getPlacementFromPositionChange, getWeekdayNames, groupRowSpan, injectTediTableContext, isAfterDay, isBeforeDay, isDateInRange, isSameDay, isSameMonth, isSameYear, isValidTime, matchAny, matchDate, normalizeTime, parseDate, parseLocaleDate, provideTedi, resolveCardBorderRadius, startOfMonth, startOfWeek, toConnectedPositions, toggleDateInArray, usePagination };
10090
- 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, DateAfter, DateBefore, DateFieldMode, DateInterval, DatePickerDay, DatePickerInputSize, DatePickerInputState, DatePickerMatcher, DatePickerSelectorMode, DatePickerView, DateRange, DayOfWeek, 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, 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, SearchSize, SelectInputSize, SelectOption, SelectOptionContext, SelectOptionGroup, SelectValueContext, SeparatorAxis, SeparatorColor, SeparatorDotSize, SeparatorSpacing, SeparatorSpacingValue, SeparatorThickness, SeparatorVariant, SideNavItemSize, 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 };
10845
+ 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, 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 };
10846
+ 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, 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 };
10091
10847
  //# sourceMappingURL=index.d.ts.map