@truenas/ui-components 0.1.68 → 0.1.70

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@truenas/ui-components",
3
- "version": "0.1.68",
3
+ "version": "0.1.70",
4
4
  "publishConfig": {
5
5
  "registry": "https://registry.npmjs.org",
6
6
  "access": "public"
@@ -1,5 +1,5 @@
1
1
  import * as _angular_core from '@angular/core';
2
- import { OnDestroy, ElementRef, AfterViewInit, OnInit, TemplateRef, AfterContentInit, Provider, ChangeDetectorRef, InjectionToken, Signal, PipeTransform, ViewContainerRef, AfterViewChecked, ComponentRef } from '@angular/core';
2
+ import { OnDestroy, ElementRef, InjectionToken, AfterViewInit, OnInit, TemplateRef, AfterContentInit, Provider, ChangeDetectorRef, Signal, PipeTransform, ViewContainerRef, AfterViewChecked, ComponentRef } from '@angular/core';
3
3
  import { ControlValueAccessor, NgControl } from '@angular/forms';
4
4
  import { ComponentHarness, BaseHarnessFilters, HarnessPredicate, HarnessLoader } from '@angular/cdk/testing';
5
5
  import { SafeHtml, SafeResourceUrl, DomSanitizer } from '@angular/platform-browser';
@@ -11,7 +11,7 @@ import * as i1 from '@angular/cdk/tree';
11
11
  import { CdkTree, FlatTreeControl, CdkTreeNode, CdkNestedTreeNode } from '@angular/cdk/tree';
12
12
  export { FlatTreeControl } from '@angular/cdk/tree';
13
13
  import { Overlay } from '@angular/cdk/overlay';
14
- import { DialogConfig, DialogRef } from '@angular/cdk/dialog';
14
+ import { DialogRef, DialogConfig } from '@angular/cdk/dialog';
15
15
  import { ComponentType } from '@angular/cdk/portal';
16
16
 
17
17
  declare class TnAutocompleteComponent<T = unknown> implements ControlValueAccessor, OnDestroy {
@@ -289,6 +289,113 @@ interface AutocompleteHarnessFilters extends BaseHarnessFilters {
289
289
  placeholder?: string;
290
290
  }
291
291
 
292
+ /**
293
+ * Value shapes accepted as a test-id base.
294
+ *
295
+ * A consumer supplies the *semantic* part of a test id — a single token
296
+ * (`'save'`, `'username'`) or an ordered list of segments
297
+ * (`['username', option.value]`). The library owns the element-type prefix and
298
+ * the final string assembly; consumers never hand-craft the full id.
299
+ */
300
+ type TnTestIdValue = string | number | (string | number | null | undefined)[] | null | undefined;
301
+ /**
302
+ * Normalize one segment to a kebab-case token: split camelCase, lower-case,
303
+ * collapse any run of non-alphanumeric characters to a single hyphen, and trim
304
+ * leading/trailing hyphens.
305
+ *
306
+ * Mirrors the normalization webui's legacy `ixTest` directive applied via
307
+ * lodash `kebabCase`, so migrated values stay stable (`sshPort` → `ssh-port`,
308
+ * `addr_trtype` → `addr-trtype`, `'My Label'` → `my-label`).
309
+ */
310
+ declare function kebabTestSegment(part: string | number): string;
311
+ /**
312
+ * Compose the canonical test-id string: `${type}-${...segments}`.
313
+ *
314
+ * - `type` is the element-type prefix the component declares (e.g. `'button'`,
315
+ * `'option'`, `'menu-item'`). Pass `null`/`undefined` for no prefix.
316
+ * - `value` is the consumer-provided base — a single token or an array of
317
+ * segments (used to scope dynamic/repeated children, e.g. `[base, item.id]`).
318
+ *
319
+ * Falsy/empty parts are dropped, every part is kebab-normalized, and parts are
320
+ * joined with `-`. Returns `''` when nothing usable remains — callers treat
321
+ * `''` as "render no attribute" (avoids `data-testid=""`).
322
+ *
323
+ * @example
324
+ * composeTestId('button', 'save') // 'button-save'
325
+ * composeTestId('option', ['username', 'Jane Doe'])// 'option-username-jane-doe'
326
+ * composeTestId('menu-item', [undefined, 'edit']) // 'menu-item-edit' (no base → unscoped)
327
+ * composeTestId('menu-item', ['actions', 'edit']) // 'menu-item-actions-edit'
328
+ * composeTestId(undefined, 'already-made') // 'already-made' (verbatim passthrough)
329
+ * composeTestId('button', 'button-first-page') // 'button-first-page' (idempotent — not doubled)
330
+ */
331
+ declare function composeTestId(type: string | null | undefined, value: TnTestIdValue): string;
332
+
333
+ /**
334
+ * Test-id attribute names supported by the library.
335
+ *
336
+ * - `'data-testid'` is the modern industry default and the library's out-of-the-box behavior.
337
+ * - `'data-test'` exists for consumers that have an established convention they don't want to disrupt
338
+ * (notably webui, which has thousands of selectors targeting `data-test`).
339
+ */
340
+ type TnTestAttrName = 'data-test' | 'data-testid';
341
+ /**
342
+ * Controls which attribute name the library renders `testId` values to.
343
+ *
344
+ * Defaults to `'data-testid'`. Consumers can override at the application root:
345
+ *
346
+ * ```ts
347
+ * bootstrapApplication(AppComponent, {
348
+ * providers: [
349
+ * { provide: TN_TEST_ATTR, useValue: 'data-test' },
350
+ * ],
351
+ * });
352
+ * ```
353
+ *
354
+ * Every component-level `testId` input and every `[tnTestId]` directive usage reads this token
355
+ * so that a single override switches the entire library consistently.
356
+ */
357
+ declare const TN_TEST_ATTR: InjectionToken<TnTestAttrName>;
358
+
359
+ /**
360
+ * Writes a composed `testId` value to whichever attribute name is configured via
361
+ * {@link TN_TEST_ATTR} (default `data-testid`).
362
+ *
363
+ * The library owns the whole id: the consumer passes only the *semantic* base
364
+ * (`tnTestId`), the component declares its element type (`tnTestIdType`), and
365
+ * this directive assembles `${type}-${base}` (kebab-cased, see
366
+ * {@link composeTestId}). When no `tnTestIdType` is set the value is written
367
+ * verbatim, so existing call sites are unaffected.
368
+ *
369
+ * @example
370
+ * ```html
371
+ * <!-- component-owned prefix: emits data-testid="button-save" -->
372
+ * <button [tnTestId]="'save'" tnTestIdType="button">Save</button>
373
+ *
374
+ * <!-- array base scopes a dynamic child: emits data-testid="option-username-jane-doe" -->
375
+ * <li [tnTestId]="['username', option.label]" tnTestIdType="option"></li>
376
+ *
377
+ * <!-- no type: written verbatim (legacy behavior) -->
378
+ * <button [tnTestId]="myTestId()">Click me</button>
379
+ * ```
380
+ *
381
+ * Falsy / empty results remove the attribute entirely (avoids `data-testid=""`).
382
+ */
383
+ declare class TnTestIdDirective {
384
+ private readonly renderer;
385
+ private readonly host;
386
+ private readonly attrName;
387
+ /** The semantic base value (token or ordered segments). Falsy parts are dropped. */
388
+ readonly testId: _angular_core.InputSignal<TnTestIdValue>;
389
+ /**
390
+ * Element-type prefix the component declares (e.g. `'button'`, `'option'`).
391
+ * Omit to write the base verbatim with no prefix.
392
+ */
393
+ readonly tnTestIdType: _angular_core.InputSignal<string | null | undefined>;
394
+ constructor();
395
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<TnTestIdDirective, never>;
396
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<TnTestIdDirective, "[tnTestId]", never, { "testId": { "alias": "tnTestId"; "required": false; "isSignal": true; }; "tnTestIdType": { "alias": "tnTestIdType"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
397
+ }
398
+
292
399
  type TnDrawerMode = 'side' | 'over';
293
400
  type TnDrawerPosition = 'start' | 'end';
294
401
  declare class TnDrawerComponent implements OnDestroy {
@@ -309,7 +416,7 @@ declare class TnDrawerComponent implements OnDestroy {
309
416
  * Test-id applied to the drawer panel. Rendered under whichever attribute name is
310
417
  * configured via `TN_TEST_ATTR` (default `data-testid`).
311
418
  */
312
- testId: _angular_core.InputSignal<string | undefined>;
419
+ testId: _angular_core.InputSignal<TnTestIdValue>;
313
420
  /** Fires after the open transition completes */
314
421
  openedComplete: _angular_core.OutputEmitterRef<void>;
315
422
  /** Fires after the close transition completes */
@@ -568,10 +675,13 @@ declare class TnButtonComponent implements AfterViewInit {
568
675
  label: _angular_core.InputSignal<string>;
569
676
  disabled: _angular_core.InputSignal<boolean>;
570
677
  /**
571
- * Test-id applied to the rendered element. Rendered under whichever attribute
572
- * name is configured via `TN_TEST_ATTR` (default `data-testid`).
678
+ * Semantic test-id base for the rendered element. The library prepends the
679
+ * element type (`button`) and renders the result under whichever attribute
680
+ * name is configured via `TN_TEST_ATTR` (default `data-testid`) — e.g.
681
+ * `testId="save"` → `button-save`. Accepts an array of segments to scope the
682
+ * id (e.g. `[formControlName, 'submit']`).
573
683
  */
574
- testId: _angular_core.InputSignal<string | undefined>;
684
+ testId: _angular_core.InputSignal<TnTestIdValue>;
575
685
  /**
576
686
  * Renders the button as an `<a>` with a plain `href` attribute.
577
687
  * Mutually exclusive with `routerLink` — if both are provided, `routerLink` wins.
@@ -807,10 +917,12 @@ declare class TnIconButtonComponent implements AfterViewInit {
807
917
  /** Reflects an expanded/collapsed state (e.g. toggling a panel) onto the inner button. */
808
918
  ariaExpanded: _angular_core.InputSignal<boolean | undefined>;
809
919
  /**
810
- * Test-id applied to the rendered `<button>` element. Rendered under whichever attribute
811
- * name is configured via `TN_TEST_ATTR` (default `data-testid`).
920
+ * Semantic test-id base for the rendered `<button>`. The library prepends the
921
+ * element type (`button`) and renders the result under whichever attribute
922
+ * name is configured via `TN_TEST_ATTR` (default `data-testid`) — e.g.
923
+ * `testId="first-page"` → `button-first-page`.
812
924
  */
813
- testId: _angular_core.InputSignal<string | undefined>;
925
+ testId: _angular_core.InputSignal<TnTestIdValue>;
814
926
  name: _angular_core.InputSignal<string>;
815
927
  size: _angular_core.InputSignal<IconSize>;
816
928
  color: _angular_core.InputSignal<string | undefined>;
@@ -996,7 +1108,7 @@ declare class TnInputComponent implements AfterViewInit, OnDestroy, ControlValue
996
1108
  inputEl: _angular_core.Signal<ElementRef<HTMLInputElement | HTMLTextAreaElement>>;
997
1109
  inputType: _angular_core.InputSignal<InputType>;
998
1110
  placeholder: _angular_core.InputSignal<string>;
999
- testId: _angular_core.InputSignal<string | undefined>;
1111
+ testId: _angular_core.InputSignal<TnTestIdValue>;
1000
1112
  disabled: _angular_core.InputSignal<boolean>;
1001
1113
  multiline: _angular_core.InputSignal<boolean>;
1002
1114
  rows: _angular_core.InputSignal<number>;
@@ -1403,7 +1515,7 @@ declare class TnChipComponent implements AfterViewInit, OnDestroy {
1403
1515
  closable: _angular_core.InputSignal<boolean>;
1404
1516
  disabled: _angular_core.InputSignal<boolean>;
1405
1517
  color: _angular_core.InputSignal<ChipColor>;
1406
- testId: _angular_core.InputSignal<string | undefined>;
1518
+ testId: _angular_core.InputSignal<TnTestIdValue>;
1407
1519
  onClose: _angular_core.OutputEmitterRef<void>;
1408
1520
  onClick: _angular_core.OutputEmitterRef<MouseEvent>;
1409
1521
  private focusMonitor;
@@ -1520,6 +1632,13 @@ declare class TnMenuItemComponent {
1520
1632
  itemClick: _angular_core.OutputEmitterRef<MouseEvent>;
1521
1633
  /** Template capturing whatever the consumer projected as item content. */
1522
1634
  content: _angular_core.Signal<TemplateRef<unknown>>;
1635
+ /**
1636
+ * Semantic *base* for the test id — either the explicit `testId` or the `id`.
1637
+ * The owning `<tn-menu-panel>` button declares `tnTestIdType="button"`, so
1638
+ * `TnTestIdDirective` composes the final `button-…` id (and is idempotent, so
1639
+ * an already-`button-`-prefixed value is not doubled). Returns `undefined`
1640
+ * when neither is set, which composes to no attribute.
1641
+ */
1523
1642
  resolvedTestId: _angular_core.Signal<string | undefined>;
1524
1643
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<TnMenuItemComponent, never>;
1525
1644
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<TnMenuItemComponent, "tn-menu-item", never, { "id": { "alias": "id"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "iconLibrary": { "alias": "iconLibrary"; "required": false; "isSignal": true; }; "shortcut": { "alias": "shortcut"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "selected": { "alias": "selected"; "required": false; "isSignal": true; }; "testId": { "alias": "testId"; "required": false; "isSignal": true; }; }, { "itemClick": "itemClick"; }, never, ["*"], true, never>;
@@ -1570,6 +1689,16 @@ interface TnMenuItem {
1570
1689
  declare class TnMenuComponent implements OnDestroy {
1571
1690
  items: _angular_core.InputSignal<TnMenuItem[]>;
1572
1691
  contextMenu: _angular_core.InputSignal<boolean>;
1692
+ /**
1693
+ * Semantic base that scopes the test ids of this menu's items. Each item
1694
+ * resolves to `button-${testId}-${item.id}` (e.g. menu `testId="actions"`
1695
+ * + item `id="edit"` → `button-actions-edit`), which keeps ids unique when
1696
+ * several menus render on one page. Omit it and items fall back to the
1697
+ * unscoped `button-${item.id}`. A per-item `testId` overrides the base and is
1698
+ * composed with the same `button-` prefix (idempotently, so an already
1699
+ * `button-`-prefixed value is not doubled).
1700
+ */
1701
+ testId: _angular_core.InputSignal<string | undefined>;
1573
1702
  menuItemClick: _angular_core.OutputEmitterRef<TnMenuItem>;
1574
1703
  menuOpen: _angular_core.OutputEmitterRef<void>;
1575
1704
  menuClose: _angular_core.OutputEmitterRef<void>;
@@ -1599,7 +1728,7 @@ declare class TnMenuComponent implements OnDestroy {
1599
1728
  ngOnDestroy(): void;
1600
1729
  onContextMenu(event: MouseEvent): void;
1601
1730
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<TnMenuComponent, never>;
1602
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<TnMenuComponent, "tn-menu", never, { "items": { "alias": "items"; "required": false; "isSignal": true; }; "contextMenu": { "alias": "contextMenu"; "required": false; "isSignal": true; }; }, { "menuItemClick": "menuItemClick"; "menuOpen": "menuOpen"; "menuClose": "menuClose"; }, ["contentItems"], ["*"], true, never>;
1731
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<TnMenuComponent, "tn-menu", never, { "items": { "alias": "items"; "required": false; "isSignal": true; }; "contextMenu": { "alias": "contextMenu"; "required": false; "isSignal": true; }; "testId": { "alias": "testId"; "required": false; "isSignal": true; }; }, { "menuItemClick": "menuItemClick"; "menuOpen": "menuOpen"; "menuClose": "menuClose"; }, ["contentItems"], ["*"], true, never>;
1603
1732
  }
1604
1733
 
1605
1734
  declare class TnCardComponent {
@@ -1655,11 +1784,11 @@ declare class TnExpansionPanelComponent {
1655
1784
  * Test-id applied to the panel's root element. Rendered under whichever attribute name
1656
1785
  * is configured via `TN_TEST_ATTR` (default `data-testid`).
1657
1786
  */
1658
- testId: _angular_core.InputSignal<string | undefined>;
1787
+ testId: _angular_core.InputSignal<TnTestIdValue>;
1659
1788
  /**
1660
1789
  * Test-id applied to the expand/collapse toggle header button.
1661
1790
  */
1662
- toggleTestId: _angular_core.InputSignal<string | undefined>;
1791
+ toggleTestId: _angular_core.InputSignal<TnTestIdValue>;
1663
1792
  expandedChange: _angular_core.OutputEmitterRef<boolean>;
1664
1793
  toggleEvent: _angular_core.OutputEmitterRef<void>;
1665
1794
  private internalExpanded;
@@ -1810,7 +1939,7 @@ declare class TnCheckboxComponent implements AfterViewInit, OnDestroy, ControlVa
1810
1939
  disabled: _angular_core.InputSignal<boolean>;
1811
1940
  required: _angular_core.InputSignal<boolean>;
1812
1941
  indeterminate: _angular_core.InputSignal<boolean>;
1813
- testId: _angular_core.InputSignal<string | undefined>;
1942
+ testId: _angular_core.InputSignal<TnTestIdValue>;
1814
1943
  error: _angular_core.InputSignal<string | null>;
1815
1944
  checked: _angular_core.InputSignal<boolean>;
1816
1945
  change: _angular_core.OutputEmitterRef<boolean>;
@@ -2019,7 +2148,7 @@ declare class TnRadioComponent implements AfterViewInit, OnDestroy, ControlValue
2019
2148
  name: _angular_core.InputSignal<string | undefined>;
2020
2149
  disabled: _angular_core.InputSignal<boolean>;
2021
2150
  required: _angular_core.InputSignal<boolean>;
2022
- testId: _angular_core.InputSignal<string | undefined>;
2151
+ testId: _angular_core.InputSignal<TnTestIdValue>;
2023
2152
  error: _angular_core.InputSignal<string | null>;
2024
2153
  change: _angular_core.OutputEmitterRef<unknown>;
2025
2154
  id: string;
@@ -2162,7 +2291,7 @@ declare class TnSlideToggleComponent implements AfterViewInit, OnDestroy, Contro
2162
2291
  disabled: _angular_core.InputSignal<boolean>;
2163
2292
  required: _angular_core.InputSignal<boolean>;
2164
2293
  color: _angular_core.InputSignal<SlideToggleColor>;
2165
- testId: _angular_core.InputSignal<string | undefined>;
2294
+ testId: _angular_core.InputSignal<TnTestIdValue>;
2166
2295
  ariaLabel: _angular_core.InputSignal<string | undefined>;
2167
2296
  ariaLabelledby: _angular_core.InputSignal<string | undefined>;
2168
2297
  checked: _angular_core.InputSignal<boolean>;
@@ -2275,7 +2404,7 @@ declare class TnTabComponent implements AfterContentInit {
2275
2404
  disabled: _angular_core.InputSignal<boolean>;
2276
2405
  icon: _angular_core.InputSignal<string | undefined>;
2277
2406
  iconTemplate: _angular_core.InputSignal<TemplateRef<unknown> | undefined>;
2278
- testId: _angular_core.InputSignal<string | undefined>;
2407
+ testId: _angular_core.InputSignal<TnTestIdValue>;
2279
2408
  selected: _angular_core.OutputEmitterRef<void>;
2280
2409
  iconContent: _angular_core.Signal<TemplateRef<unknown> | undefined>;
2281
2410
  index: _angular_core.WritableSignal<number>;
@@ -2299,7 +2428,7 @@ declare class TnTabComponent implements AfterContentInit {
2299
2428
  declare class TnTabPanelComponent {
2300
2429
  label: _angular_core.InputSignal<string>;
2301
2430
  lazyLoad: _angular_core.InputSignal<boolean>;
2302
- testId: _angular_core.InputSignal<string | undefined>;
2431
+ testId: _angular_core.InputSignal<TnTestIdValue>;
2303
2432
  content: _angular_core.Signal<TemplateRef<unknown>>;
2304
2433
  index: _angular_core.WritableSignal<number>;
2305
2434
  isActive: _angular_core.WritableSignal<boolean>;
@@ -2328,7 +2457,7 @@ declare class TnTabsComponent implements AfterContentInit, AfterViewInit, OnDest
2328
2457
  * Test-id applied to the tablist root element. Rendered under whichever attribute name
2329
2458
  * is configured via `TN_TEST_ATTR` (default `data-testid`).
2330
2459
  */
2331
- testId: _angular_core.InputSignal<string | undefined>;
2460
+ testId: _angular_core.InputSignal<TnTestIdValue>;
2332
2461
  selectedIndexChange: _angular_core.OutputEmitterRef<number>;
2333
2462
  tabChange: _angular_core.OutputEmitterRef<TabChangeEvent>;
2334
2463
  private internalSelectedIndex;
@@ -2963,7 +3092,7 @@ declare class TnFormFieldComponent implements AfterContentInit {
2963
3092
  label: _angular_core.InputSignal<string>;
2964
3093
  hint: _angular_core.InputSignal<string>;
2965
3094
  required: _angular_core.InputSignal<boolean>;
2966
- testId: _angular_core.InputSignal<string>;
3095
+ testId: _angular_core.InputSignal<TnTestIdValue>;
2967
3096
  subscriptSizing: _angular_core.InputSignal<SubscriptSizing>;
2968
3097
  /** Optional tooltip shown via a help icon next to the label. */
2969
3098
  tooltip: _angular_core.InputSignal<string>;
@@ -3195,6 +3324,18 @@ declare class TnSelectComponent<T = unknown> implements ControlValueAccessor, On
3195
3324
  disabled: _angular_core.InputSignal<boolean>;
3196
3325
  testId: _angular_core.InputSignal<string>;
3197
3326
  multiple: _angular_core.InputSignal<boolean>;
3327
+ /**
3328
+ * Optional extractor for the per-option test-id discriminator. Defaults to
3329
+ * the option's `value` (when a string/number) or its `label`. Provide this
3330
+ * when option values are objects, or to pick a more stable/unique key —
3331
+ * mirrors webui's `[ixTest]="[controlName, option.<field>]"` discriminator.
3332
+ *
3333
+ * @example
3334
+ * ```html
3335
+ * <tn-select testId="user" [optionTestIdKey]="(o) => o.value.id" ... />
3336
+ * ```
3337
+ */
3338
+ optionTestIdKey: _angular_core.InputSignal<((option: TnSelectOption<T>) => string | number | null | undefined) | undefined>;
3198
3339
  /**
3199
3340
  * Custom comparator for matching option values against the selected value(s).
3200
3341
  *
@@ -3244,6 +3385,15 @@ declare class TnSelectComponent<T = unknown> implements ControlValueAccessor, On
3244
3385
  optionId(option: TnSelectOption<T>): string | null;
3245
3386
  /** Whether `option` is the keyboard-highlighted item. */
3246
3387
  isOptionFocused(option: TnSelectOption<T>): boolean;
3388
+ /**
3389
+ * Test-id segments for an option row, consumed by `[tnTestId]` with
3390
+ * `tnTestIdType="option"`. The select's `testId` scopes each option so ids
3391
+ * stay unique across selects: base `quick-filters` + option value `ssd` →
3392
+ * `option-quick-filters-ssd`; with no base → `option-ssd`. The discriminator
3393
+ * comes from `optionTestIdKey` when provided, else the option's primitive
3394
+ * `value`, else its `label`.
3395
+ */
3396
+ protected optionTestIdParts(option: TnSelectOption<T>): (string | number | null | undefined)[];
3247
3397
  private onChange;
3248
3398
  private onTouched;
3249
3399
  private elementRef;
@@ -3330,7 +3480,7 @@ declare class TnSelectComponent<T = unknown> implements ControlValueAccessor, On
3330
3480
  private activateFocusedOption;
3331
3481
  private scrollFocusedIntoView;
3332
3482
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<TnSelectComponent<any>, never>;
3333
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<TnSelectComponent<any>, "tn-select", never, { "options": { "alias": "options"; "required": false; "isSignal": true; }; "optionGroups": { "alias": "optionGroups"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; "noOptionsLabel": { "alias": "noOptionsLabel"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "testId": { "alias": "testId"; "required": false; "isSignal": true; }; "multiple": { "alias": "multiple"; "required": false; "isSignal": true; }; "compareWith": { "alias": "compareWith"; "required": false; "isSignal": true; }; }, { "selectionChange": "selectionChange"; "multiSelectionChange": "multiSelectionChange"; }, never, never, true, never>;
3483
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<TnSelectComponent<any>, "tn-select", never, { "options": { "alias": "options"; "required": false; "isSignal": true; }; "optionGroups": { "alias": "optionGroups"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; "noOptionsLabel": { "alias": "noOptionsLabel"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "testId": { "alias": "testId"; "required": false; "isSignal": true; }; "multiple": { "alias": "multiple"; "required": false; "isSignal": true; }; "optionTestIdKey": { "alias": "optionTestIdKey"; "required": false; "isSignal": true; }; "compareWith": { "alias": "compareWith"; "required": false; "isSignal": true; }; }, { "selectionChange": "selectionChange"; "multiSelectionChange": "multiSelectionChange"; }, never, never, true, never>;
3334
3484
  }
3335
3485
 
3336
3486
  /**
@@ -4022,32 +4172,6 @@ declare class TnListOptionComponent implements AfterContentInit {
4022
4172
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<TnListOptionComponent, "tn-list-option", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "selected": { "alias": "selected"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "color": { "alias": "color"; "required": false; "isSignal": true; }; }, { "selectionChange": "selectionChange"; }, never, ["[tnListIcon], [tnListAvatar]", "[tnListItemTitle], [tnListItemPrimary]", "*", "[tnListItemLine], [tnListItemSecondary]"], true, never>;
4023
4173
  }
4024
4174
 
4025
- /**
4026
- * Primitive directive that writes a raw `testId` value to whichever attribute name has been
4027
- * configured via {@link TN_TEST_ATTR} (default `data-testid`).
4028
- *
4029
- * Library components should use this directive instead of hard-coding `[attr.data-testid]` so
4030
- * the attribute name remains centrally controlled and consumers with different conventions
4031
- * (e.g. `data-test`) can opt in with a single root-level provider.
4032
- *
4033
- * @example
4034
- * ```html
4035
- * <button [tnTestId]="myTestId()">Click me</button>
4036
- * ```
4037
- *
4038
- * Passing `null` / `undefined` / `''` removes the attribute entirely (avoids `data-testid=""`).
4039
- */
4040
- declare class TnTestIdDirective {
4041
- private readonly renderer;
4042
- private readonly host;
4043
- private readonly attrName;
4044
- /** The raw test-id value to apply. Falsy values remove the attribute. */
4045
- readonly testId: _angular_core.InputSignal<string | null | undefined>;
4046
- constructor();
4047
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<TnTestIdDirective, never>;
4048
- static ɵdir: _angular_core.ɵɵDirectiveDeclaration<TnTestIdDirective, "[tnTestId]", never, { "testId": { "alias": "tnTestId"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
4049
- }
4050
-
4051
4175
  interface TnSelectionChange {
4052
4176
  source: TnSelectionListComponent;
4053
4177
  options: TnListOptionComponent[];
@@ -4486,6 +4610,14 @@ interface TnTableDataProvider {
4486
4610
  */
4487
4611
  declare class TnTablePagerComponent {
4488
4612
  private destroyRef;
4613
+ private readonly testIdDirective;
4614
+ /**
4615
+ * Build a child control's test-id base by joining the pager's `testId` with
4616
+ * `suffix` into a single string (kebab-joined). Returning a string keeps it
4617
+ * assignable to both `tn-select`'s `string` testId and `tn-icon-button`'s
4618
+ * `TnTestIdValue` testId.
4619
+ */
4620
+ protected childTestId(suffix: string): string;
4489
4621
  /**
4490
4622
  * Normalize the injected token into a Signal so consumers can supply either
4491
4623
  * a plain object or a reactive signal (e.g. derived from a TranslateService's
@@ -5556,7 +5688,7 @@ declare class TnSliderComponent implements ControlValueAccessor, OnDestroy, Afte
5556
5688
  * Test-id applied to the slider's root container. Rendered under whichever attribute name
5557
5689
  * is configured via `TN_TEST_ATTR` (default `data-testid`).
5558
5690
  */
5559
- testId: _angular_core.InputSignal<string | undefined>;
5691
+ testId: _angular_core.InputSignal<TnTestIdValue>;
5560
5692
  thumbDirective: _angular_core.Signal<TnSliderThumbDirective>;
5561
5693
  sliderContainer: _angular_core.Signal<ElementRef<HTMLDivElement>>;
5562
5694
  thumbVisual: _angular_core.Signal<ElementRef<HTMLDivElement>>;
@@ -5637,7 +5769,7 @@ declare class TnButtonToggleGroupComponent implements ControlValueAccessor {
5637
5769
  * Test-id applied to the group root. Rendered under whichever attribute name
5638
5770
  * is configured via `TN_TEST_ATTR` (default `data-testid`).
5639
5771
  */
5640
- testId: _angular_core.InputSignal<string | undefined>;
5772
+ testId: _angular_core.InputSignal<TnTestIdValue>;
5641
5773
  change: _angular_core.OutputEmitterRef<{
5642
5774
  source: TnButtonToggleComponent;
5643
5775
  value: unknown;
@@ -5675,7 +5807,7 @@ declare class TnButtonToggleComponent implements ControlValueAccessor {
5675
5807
  * Test-id applied to the rendered toggle button. Rendered under whichever attribute name
5676
5808
  * is configured via `TN_TEST_ATTR` (default `data-testid`).
5677
5809
  */
5678
- testId: _angular_core.InputSignal<string | undefined>;
5810
+ testId: _angular_core.InputSignal<TnTestIdValue>;
5679
5811
  change: _angular_core.OutputEmitterRef<{
5680
5812
  source: TnButtonToggleComponent;
5681
5813
  value: unknown;
@@ -5868,6 +6000,27 @@ declare class TnTooltipComponent {
5868
6000
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<TnTooltipComponent, "tn-tooltip", never, { "message": { "alias": "message"; "required": false; "isSignal": true; }; "id": { "alias": "id"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
5869
6001
  }
5870
6002
 
6003
+ interface TnConfirmDialogData {
6004
+ title: string;
6005
+ message?: string;
6006
+ confirmText?: string;
6007
+ cancelText?: string;
6008
+ destructive?: boolean;
6009
+ /**
6010
+ * Semantic test-id bases for the library-rendered action buttons. The buttons
6011
+ * emit `button-confirm` / `button-cancel` by default (the library adds the
6012
+ * `button-` prefix); override here when a page opens more than one dialog.
6013
+ */
6014
+ confirmTestId?: string;
6015
+ cancelTestId?: string;
6016
+ }
6017
+ declare class TnConfirmDialogComponent {
6018
+ ref: DialogRef<boolean, unknown>;
6019
+ data: TnConfirmDialogData;
6020
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<TnConfirmDialogComponent, never>;
6021
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<TnConfirmDialogComponent, "tn-confirm-dialog", never, {}, {}, never, never, true, never>;
6022
+ }
6023
+
5871
6024
  type TnDialogOpenTarget<C> = ComponentType<C> | TemplateRef<unknown>;
5872
6025
  interface TnDialogDefaults {
5873
6026
  panelClass?: string | string[];
@@ -5894,13 +6047,7 @@ declare class TnDialog {
5894
6047
  /**
5895
6048
  * Open a confirmation dialog. Resolves to true if confirmed, false otherwise.
5896
6049
  */
5897
- confirm(opts: {
5898
- title: string;
5899
- message?: string;
5900
- confirmText?: string;
5901
- cancelText?: string;
5902
- destructive?: boolean;
5903
- }): Promise<boolean>;
6050
+ confirm(opts: TnConfirmDialogData): Promise<boolean>;
5904
6051
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<TnDialog, never>;
5905
6052
  static ɵprov: _angular_core.ɵɵInjectableDeclaration<TnDialog>;
5906
6053
  }
@@ -5908,6 +6055,13 @@ declare class TnDialog {
5908
6055
  declare class TnDialogShellComponent implements OnInit {
5909
6056
  title: _angular_core.InputSignal<string>;
5910
6057
  showFullscreenButton: _angular_core.InputSignal<boolean>;
6058
+ /**
6059
+ * Optional semantic base that scopes the shell's chrome buttons. The close
6060
+ * and fullscreen buttons emit `button-close` / `button-fullscreen` by default,
6061
+ * or `button-<testId>-close` / `-fullscreen` when a base is provided (useful
6062
+ * when more than one dialog can be open).
6063
+ */
6064
+ testId: _angular_core.InputSignal<string | undefined>;
5911
6065
  /** Stable id for the title heading, referenced by the dialog's aria-labelledby. */
5912
6066
  readonly titleId: string;
5913
6067
  isFullscreen: _angular_core.WritableSignal<boolean>;
@@ -5923,21 +6077,7 @@ declare class TnDialogShellComponent implements OnInit {
5923
6077
  private enterFullscreen;
5924
6078
  private exitFullscreen;
5925
6079
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<TnDialogShellComponent, never>;
5926
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<TnDialogShellComponent, "tn-dialog-shell", never, { "title": { "alias": "title"; "required": false; "isSignal": true; }; "showFullscreenButton": { "alias": "showFullscreenButton"; "required": false; "isSignal": true; }; }, {}, never, ["*", "[tnDialogAction]"], true, never>;
5927
- }
5928
-
5929
- interface TnConfirmDialogData {
5930
- title: string;
5931
- message?: string;
5932
- confirmText?: string;
5933
- cancelText?: string;
5934
- destructive?: boolean;
5935
- }
5936
- declare class TnConfirmDialogComponent {
5937
- ref: DialogRef<boolean, unknown>;
5938
- data: TnConfirmDialogData;
5939
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<TnConfirmDialogComponent, never>;
5940
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<TnConfirmDialogComponent, "tn-confirm-dialog", never, {}, {}, never, never, true, never>;
6080
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<TnDialogShellComponent, "tn-dialog-shell", never, { "title": { "alias": "title"; "required": false; "isSignal": true; }; "showFullscreenButton": { "alias": "showFullscreenButton"; "required": false; "isSignal": true; }; "testId": { "alias": "testId"; "required": false; "isSignal": true; }; }, {}, never, ["*", "[tnDialogAction]"], true, never>;
5941
6081
  }
5942
6082
 
5943
6083
  /**
@@ -6261,7 +6401,7 @@ declare class TnStepperComponent {
6261
6401
  * Test-id applied to the stepper root. Rendered under whichever attribute name
6262
6402
  * is configured via `TN_TEST_ATTR` (default `data-testid`).
6263
6403
  */
6264
- testId: _angular_core.InputSignal<string | undefined>;
6404
+ testId: _angular_core.InputSignal<TnTestIdValue>;
6265
6405
  selectionChange: _angular_core.OutputEmitterRef<{
6266
6406
  selectedIndex: number;
6267
6407
  previouslySelectedIndex: number;
@@ -6810,32 +6950,6 @@ declare class TnKeyboardShortcutService {
6810
6950
  static ɵprov: _angular_core.ɵɵInjectableDeclaration<TnKeyboardShortcutService>;
6811
6951
  }
6812
6952
 
6813
- /**
6814
- * Test-id attribute names supported by the library.
6815
- *
6816
- * - `'data-testid'` is the modern industry default and the library's out-of-the-box behavior.
6817
- * - `'data-test'` exists for consumers that have an established convention they don't want to disrupt
6818
- * (notably webui, which has thousands of selectors targeting `data-test`).
6819
- */
6820
- type TnTestAttrName = 'data-test' | 'data-testid';
6821
- /**
6822
- * Controls which attribute name the library renders `testId` values to.
6823
- *
6824
- * Defaults to `'data-testid'`. Consumers can override at the application root:
6825
- *
6826
- * ```ts
6827
- * bootstrapApplication(AppComponent, {
6828
- * providers: [
6829
- * { provide: TN_TEST_ATTR, useValue: 'data-test' },
6830
- * ],
6831
- * });
6832
- * ```
6833
- *
6834
- * Every component-level `testId` input and every `[tnTestId]` directive usage reads this token
6835
- * so that a single override switches the entire library consistently.
6836
- */
6837
- declare const TN_TEST_ATTR: InjectionToken<TnTestAttrName>;
6838
-
6839
6953
  /**
6840
6954
  * Enum of available theme names.
6841
6955
  * Use these constants instead of hardcoded strings.
@@ -7030,5 +7144,5 @@ declare const TN_THEME_DEFINITIONS: readonly TnThemeDefinition[];
7030
7144
  */
7031
7145
  declare const THEME_MAP: Map<TnTheme, TnThemeDefinition>;
7032
7146
 
7033
- export { CommonShortcuts, DEFAULT_THEME, DiskIconComponent, DiskType, FileSizePipe, InputType, LIGHT_THEME, LinuxModifierKeys, LinuxShortcuts, ModifierKeys, QuickShortcuts, ShortcutBuilder, StripMntPrefixPipe, THEME_MAP, THEME_STORAGE_KEY, TN_TABLE_PAGER_DEFAULT_LABELS, TN_TABLE_PAGER_LABELS, TN_TEST_ATTR, TN_THEME_DEFINITIONS, TnAutocompleteComponent, TnAutocompleteHarness, TnBannerActionDirective, TnBannerComponent, TnBannerHarness, TnBrandedSpinnerComponent, TnButtonComponent, TnButtonHarness, TnButtonToggleComponent, TnButtonToggleGroupComponent, TnButtonToggleGroupHarness, TnButtonToggleHarness, TnCalendarComponent, TnCalendarHeaderComponent, TnCardComponent, TnCardHeaderDirective, TnCellDefDirective, TnCheckboxComponent, TnCheckboxHarness, TnCheckboxLabelDirective, TnChipComponent, TnConfirmDialogComponent, TnDateInputComponent, TnDateInputHarness, TnDateRangeInputComponent, TnDateRangeInputHarness, TnDetailRowDefDirective, TnDialog, TnDialogHarness, TnDialogShellComponent, TnDialogTesting, TnDividerComponent, TnDividerDirective, TnDrawerComponent, TnDrawerContainerComponent, TnDrawerContainerHarness, TnDrawerContentComponent, TnDrawerHarness, TnEmptyComponent, TnEmptyHarness, TnExpansionPanelComponent, TnExpansionPanelHarness, TnFilePickerComponent, TnFilePickerPopupComponent, TnFormFieldComponent, TnFormFieldHarness, TnHeaderCellDefDirective, TnIconButtonComponent, TnIconButtonHarness, TnIconComponent, TnIconHarness, TnIconRegistryService, TnIconTesting, TnInputComponent, TnInputDirective, TnInputHarness, TnKeyboardShortcutComponent, TnKeyboardShortcutService, TnListAvatarDirective, TnListComponent, TnListIconDirective, TnListItemComponent, TnListItemLineDirective, TnListItemPrimaryDirective, TnListItemSecondaryDirective, TnListItemTitleDirective, TnListItemTrailingDirective, TnListOptionComponent, TnListSubheaderComponent, TnMenuActivateHoverDirective, TnMenuComponent, TnMenuHarness, TnMenuItemComponent, TnMenuTesting, TnMenuTriggerDirective, TnMonthViewComponent, TnMultiYearViewComponent, TnNestedTreeNodeComponent, TnParticleProgressBarComponent, TnProgressBarComponent, TnRadioComponent, TnRadioHarness, TnSelectComponent, TnSelectHarness, TnSelectionListComponent, TnSidePanelActionDirective, TnSidePanelComponent, TnSidePanelHarness, TnSidePanelHeaderActionDirective, TnSlideToggleComponent, TnSlideToggleHarness, TnSliderComponent, TnSliderThumbDirective, TnSliderWithLabelDirective, TnSpinnerComponent, TnSpriteLoaderService, TnStepComponent, TnStepperComponent, TnTabComponent, TnTabHarness, TnTabPanelComponent, TnTabPanelHarness, TnTableColumnDirective, TnTableComponent, TnTableHarness, TnTablePagerComponent, TnTablePagerHarness, TnTabsComponent, TnTabsHarness, TnTestIdDirective, TnTheme, TnThemeService, TnTimeInputComponent, TnToastComponent, TnToastMock, TnToastPosition, TnToastRef, TnToastService, TnToastTesting, TnToastType, TnTooltipComponent, TnTooltipDirective, TnTreeComponent, TnTreeFlatDataSource, TnTreeFlattener, TnTreeNodeComponent, TnTreeNodeOutletDirective, TruncatePathPipe, WindowsModifierKeys, WindowsShortcuts, createLucideLibrary, createShortcut, defaultSpriteBasePath, defaultSpriteConfigPath, libIconMarker, registerLucideIcons, setupLucideIntegration, tnIconMarker };
7034
- export type { AutocompleteHarnessFilters, BannerHarnessFilters, ButtonHarnessFilters, ButtonToggleHarnessFilters, CalendarCell, CheckboxHarnessFilters, ChipColor, CreateFolderEvent, DateInputHarnessFilters, DateRange, DateRangeInputHarnessFilters, DialogHarnessFilters, EmptyHarnessFilters, ExpansionPanelHarnessFilters, FilePickerCallbacks, FilePickerError, FilePickerMode, FileSystemItem, FormFieldHarnessFilters, IconButtonHarnessFilters, IconHarnessFilters, IconLibrary, IconLibraryType, IconResult, IconSize, IconSource, IconTestingMockOverrides, InputHarnessFilters, KeyCombination, LabelType, LucideIconOptions, MenuHarnessFilters, MockIconRegistry, MockSpriteLoader, PathSegment, PlatformType, ProgressBarMode, RadioHarnessFilters, ResolvedIcon, SelectHarnessFilters, ShortcutHandler, SidePanelHarnessFilters, SlideToggleColor, SlideToggleHarnessFilters, SpinnerMode, SpriteConfig, SubscriptSizing, TabChangeEvent, TabHarnessFilters, TabPanelHarnessFilters, TabsHarnessFilters, TnBannerType, TnButtonToggleType, TnCardAction, TnCardControl, TnCardFooterLink, TnCardHeaderStatus, TnConfirmDialogData, TnDialogDefaults, TnDialogOpenTarget, TnDrawerMode, TnDrawerPosition, TnEmptySize, TnFlatTreeNode, TnMenuItem, TnSelectOption, TnSelectOptionGroup, TnSelectionChange, TnSortEvent, TnTableDataProvider, TnTableDataSource, TnTableHarnessFilters, TnTablePagerHarnessFilters, TnTablePagerLabels, TnTablePagination, TnTestAttrName, TnThemeDefinition, TnToastCall, TnToastConfig, TooltipPosition, YearCell };
7147
+ export { CommonShortcuts, DEFAULT_THEME, DiskIconComponent, DiskType, FileSizePipe, InputType, LIGHT_THEME, LinuxModifierKeys, LinuxShortcuts, ModifierKeys, QuickShortcuts, ShortcutBuilder, StripMntPrefixPipe, THEME_MAP, THEME_STORAGE_KEY, TN_TABLE_PAGER_DEFAULT_LABELS, TN_TABLE_PAGER_LABELS, TN_TEST_ATTR, TN_THEME_DEFINITIONS, TnAutocompleteComponent, TnAutocompleteHarness, TnBannerActionDirective, TnBannerComponent, TnBannerHarness, TnBrandedSpinnerComponent, TnButtonComponent, TnButtonHarness, TnButtonToggleComponent, TnButtonToggleGroupComponent, TnButtonToggleGroupHarness, TnButtonToggleHarness, TnCalendarComponent, TnCalendarHeaderComponent, TnCardComponent, TnCardHeaderDirective, TnCellDefDirective, TnCheckboxComponent, TnCheckboxHarness, TnCheckboxLabelDirective, TnChipComponent, TnConfirmDialogComponent, TnDateInputComponent, TnDateInputHarness, TnDateRangeInputComponent, TnDateRangeInputHarness, TnDetailRowDefDirective, TnDialog, TnDialogHarness, TnDialogShellComponent, TnDialogTesting, TnDividerComponent, TnDividerDirective, TnDrawerComponent, TnDrawerContainerComponent, TnDrawerContainerHarness, TnDrawerContentComponent, TnDrawerHarness, TnEmptyComponent, TnEmptyHarness, TnExpansionPanelComponent, TnExpansionPanelHarness, TnFilePickerComponent, TnFilePickerPopupComponent, TnFormFieldComponent, TnFormFieldHarness, TnHeaderCellDefDirective, TnIconButtonComponent, TnIconButtonHarness, TnIconComponent, TnIconHarness, TnIconRegistryService, TnIconTesting, TnInputComponent, TnInputDirective, TnInputHarness, TnKeyboardShortcutComponent, TnKeyboardShortcutService, TnListAvatarDirective, TnListComponent, TnListIconDirective, TnListItemComponent, TnListItemLineDirective, TnListItemPrimaryDirective, TnListItemSecondaryDirective, TnListItemTitleDirective, TnListItemTrailingDirective, TnListOptionComponent, TnListSubheaderComponent, TnMenuActivateHoverDirective, TnMenuComponent, TnMenuHarness, TnMenuItemComponent, TnMenuTesting, TnMenuTriggerDirective, TnMonthViewComponent, TnMultiYearViewComponent, TnNestedTreeNodeComponent, TnParticleProgressBarComponent, TnProgressBarComponent, TnRadioComponent, TnRadioHarness, TnSelectComponent, TnSelectHarness, TnSelectionListComponent, TnSidePanelActionDirective, TnSidePanelComponent, TnSidePanelHarness, TnSidePanelHeaderActionDirective, TnSlideToggleComponent, TnSlideToggleHarness, TnSliderComponent, TnSliderThumbDirective, TnSliderWithLabelDirective, TnSpinnerComponent, TnSpriteLoaderService, TnStepComponent, TnStepperComponent, TnTabComponent, TnTabHarness, TnTabPanelComponent, TnTabPanelHarness, TnTableColumnDirective, TnTableComponent, TnTableHarness, TnTablePagerComponent, TnTablePagerHarness, TnTabsComponent, TnTabsHarness, TnTestIdDirective, TnTheme, TnThemeService, TnTimeInputComponent, TnToastComponent, TnToastMock, TnToastPosition, TnToastRef, TnToastService, TnToastTesting, TnToastType, TnTooltipComponent, TnTooltipDirective, TnTreeComponent, TnTreeFlatDataSource, TnTreeFlattener, TnTreeNodeComponent, TnTreeNodeOutletDirective, TruncatePathPipe, WindowsModifierKeys, WindowsShortcuts, composeTestId, createLucideLibrary, createShortcut, defaultSpriteBasePath, defaultSpriteConfigPath, kebabTestSegment, libIconMarker, registerLucideIcons, setupLucideIntegration, tnIconMarker };
7148
+ export type { AutocompleteHarnessFilters, BannerHarnessFilters, ButtonHarnessFilters, ButtonToggleHarnessFilters, CalendarCell, CheckboxHarnessFilters, ChipColor, CreateFolderEvent, DateInputHarnessFilters, DateRange, DateRangeInputHarnessFilters, DialogHarnessFilters, EmptyHarnessFilters, ExpansionPanelHarnessFilters, FilePickerCallbacks, FilePickerError, FilePickerMode, FileSystemItem, FormFieldHarnessFilters, IconButtonHarnessFilters, IconHarnessFilters, IconLibrary, IconLibraryType, IconResult, IconSize, IconSource, IconTestingMockOverrides, InputHarnessFilters, KeyCombination, LabelType, LucideIconOptions, MenuHarnessFilters, MockIconRegistry, MockSpriteLoader, PathSegment, PlatformType, ProgressBarMode, RadioHarnessFilters, ResolvedIcon, SelectHarnessFilters, ShortcutHandler, SidePanelHarnessFilters, SlideToggleColor, SlideToggleHarnessFilters, SpinnerMode, SpriteConfig, SubscriptSizing, TabChangeEvent, TabHarnessFilters, TabPanelHarnessFilters, TabsHarnessFilters, TnBannerType, TnButtonToggleType, TnCardAction, TnCardControl, TnCardFooterLink, TnCardHeaderStatus, TnConfirmDialogData, TnDialogDefaults, TnDialogOpenTarget, TnDrawerMode, TnDrawerPosition, TnEmptySize, TnFlatTreeNode, TnMenuItem, TnSelectOption, TnSelectOptionGroup, TnSelectionChange, TnSortEvent, TnTableDataProvider, TnTableDataSource, TnTableHarnessFilters, TnTablePagerHarnessFilters, TnTablePagerLabels, TnTablePagination, TnTestAttrName, TnTestIdValue, TnThemeDefinition, TnToastCall, TnToastConfig, TooltipPosition, YearCell };