@truenas/ui-components 0.1.72 → 0.1.74

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.72",
3
+ "version": "0.1.74",
4
4
  "publishConfig": {
5
5
  "registry": "https://registry.npmjs.org",
6
6
  "access": "public"
@@ -1,9 +1,10 @@
1
1
  import * as _angular_core from '@angular/core';
2
- import { InjectionToken, OnDestroy, ElementRef, AfterViewInit, OnInit, TemplateRef, AfterContentInit, Provider, ChangeDetectorRef, Signal, PipeTransform, ViewContainerRef, AfterViewChecked, ComponentRef } from '@angular/core';
3
- import { ControlValueAccessor, NgControl } from '@angular/forms';
2
+ import { InjectionToken, Renderer2, OnDestroy, ElementRef, AfterViewInit, OnInit, TemplateRef, AfterContentInit, Provider, ChangeDetectorRef, Signal, PipeTransform, ViewContainerRef, AfterViewChecked, ComponentRef } from '@angular/core';
3
+ import { ControlValueAccessor, NgControl, AbstractControl } from '@angular/forms';
4
4
  import { ComponentHarness, BaseHarnessFilters, HarnessPredicate, HarnessLoader } from '@angular/cdk/testing';
5
5
  import { SafeHtml, SafeResourceUrl, DomSanitizer } from '@angular/platform-browser';
6
6
  import { ComponentFixture } from '@angular/core/testing';
7
+ import * as _truenas_ui_components from '@truenas/ui-components';
7
8
  import { SelectionModel, DataSource } from '@angular/cdk/collections';
8
9
  import * as rxjs from 'rxjs';
9
10
  import { Observable } from 'rxjs';
@@ -39,20 +40,24 @@ declare function kebabTestSegment(part: string | number): string;
39
40
  * Normalizes the base — a single token or an array of segments — into a flat
40
41
  * segment array and appends the suffixes, producing a value that is itself a
41
42
  * valid {@link TnTestIdValue}. This is the canonical "derive a per-child id from
42
- * a parent base" operation, e.g. a dialog's close button (`[base, 'close']`) or
43
- * a select's per-option id (`[base, option.label]`). Centralizing it keeps the
44
- * `string | array` flattening contract in one place rather than re-implemented
45
- * at each call site.
43
+ * a parent base" operation, e.g. a select's per-option id
44
+ * (`[base, option.label]`) or a menu item's id (`[base, item.id]`). Centralizing
45
+ * it keeps the `string | array` flattening contract in one place rather than
46
+ * re-implemented at each call site.
47
+ *
48
+ * Note this is *base-first*: the suffix trails the base. Fixed chrome whose role
49
+ * should lead (e.g. `tn-dialog-shell`'s `button-close-<base>`) prepends the role
50
+ * manually instead of calling this.
46
51
  *
47
52
  * Falsy segments are preserved here (not filtered) so `composeTestId` can apply
48
- * its own drop/scoping rules — `scopeTestId(undefined, 'close')` yields
49
- * `[undefined, 'close']`, which `composeTestId('button', …)` renders as the
50
- * unscoped `button-close`.
53
+ * its own drop/scoping rules — `scopeTestId(undefined, 'edit')` yields
54
+ * `[undefined, 'edit']`, which `composeTestId('menu-item', …)` renders as the
55
+ * unscoped `menu-item-edit`.
51
56
  *
52
57
  * @example
53
58
  * scopeTestId('actions', 'edit') // ['actions', 'edit']
54
59
  * scopeTestId(['menu', 'main'], 'edit') // ['menu', 'main', 'edit']
55
- * scopeTestId(undefined, 'close') // [undefined, 'close']
60
+ * scopeTestId(undefined, 'edit') // [undefined, 'edit']
56
61
  */
57
62
  declare function scopeTestId(base: TnTestIdValue, ...suffix: (string | number | null | undefined)[]): (string | number | null | undefined)[];
58
63
  /**
@@ -143,6 +148,18 @@ declare class TnTestIdDirective {
143
148
  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>;
144
149
  }
145
150
 
151
+ /**
152
+ * Apply a composed test-id string to `element`'s `attrName`, removing the
153
+ * attribute entirely when `composed` is empty (avoids `attr=""`).
154
+ *
155
+ * Shared by {@link TnTestIdDirective} and by components that must write the
156
+ * attribute imperatively because they also read their base back — notably
157
+ * `tn-table-pager`, where injecting a host directive to read its input signal
158
+ * is unreliable in the AOT-linked package build. Centralizing the set/remove
159
+ * branch keeps those write semantics in one place so they can't drift.
160
+ */
161
+ declare function writeTestId(renderer: Renderer2, element: Element, attrName: string, composed: string): void;
162
+
146
163
  declare class TnAutocompleteComponent<T = unknown> implements ControlValueAccessor, OnDestroy {
147
164
  private readonly elementRef;
148
165
  private readonly overlay;
@@ -3148,19 +3165,106 @@ declare class TnFormFieldComponent implements AfterContentInit {
3148
3165
  tooltip: _angular_core.InputSignal<string>;
3149
3166
  /** Placement of the tooltip relative to its help icon. */
3150
3167
  tooltipPosition: _angular_core.InputSignal<TooltipPosition>;
3168
+ /**
3169
+ * Per-field overrides for validation messages, keyed by error key. Values may
3170
+ * be a string or a function that receives the error's detail value. Takes
3171
+ * precedence over the app-wide {@link TN_FORM_FIELD_ERRORS} resolver and the
3172
+ * built-in defaults.
3173
+ */
3174
+ errorMessages: _angular_core.InputSignal<Partial<Record<string, _truenas_ui_components.TnFormFieldErrorMessage>>>;
3151
3175
  control: _angular_core.Signal<NgControl | undefined>;
3152
- protected hasError: _angular_core.WritableSignal<boolean>;
3153
- protected errorMessage: _angular_core.WritableSignal<string>;
3176
+ private destroyRef;
3177
+ /**
3178
+ * App-wide message resolver, captured once at construction. Unlike the
3179
+ * `errorMessages` input it is not reactive — swapping the provided function at
3180
+ * runtime will not be picked up by an already-created field.
3181
+ */
3182
+ private errorResolver;
3183
+ /**
3184
+ * Snapshot of the relevant control state. Updated from the control's status
3185
+ * stream because `NgControl` itself is not signal-based; downstream `computed`s
3186
+ * read this so the derived state stays reactive.
3187
+ */
3188
+ private controlState;
3189
+ protected hasError: _angular_core.Signal<boolean>;
3190
+ protected errorMessage: _angular_core.Signal<string>;
3154
3191
  ngAfterContentInit(): void;
3155
- private updateErrorState;
3156
- private getErrorMessage;
3192
+ private syncControlState;
3193
+ /**
3194
+ * Resolves a user-facing message for the active error. Reads the
3195
+ * `errorMessages` input (and the injected resolver), so it is reactive: the
3196
+ * displayed message updates when either the control errors or the overrides
3197
+ * change — e.g. a runtime locale switch.
3198
+ */
3199
+ private resolveErrorMessage;
3200
+ /**
3201
+ * Runs a caller-supplied message provider, swallowing any throw so a buggy
3202
+ * override or resolver cannot break change detection. Logs in dev mode and
3203
+ * returns null so resolution falls through to the next layer.
3204
+ */
3205
+ private runGuarded;
3157
3206
  showError: _angular_core.Signal<boolean>;
3158
3207
  showHint: _angular_core.Signal<boolean>;
3159
3208
  protected showSubscript: _angular_core.Signal<boolean>;
3160
3209
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<TnFormFieldComponent, never>;
3161
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<TnFormFieldComponent, "tn-form-field", never, { "label": { "alias": "label"; "required": false; "isSignal": true; }; "hint": { "alias": "hint"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "testId": { "alias": "testId"; "required": false; "isSignal": true; }; "subscriptSizing": { "alias": "subscriptSizing"; "required": false; "isSignal": true; }; "tooltip": { "alias": "tooltip"; "required": false; "isSignal": true; }; "tooltipPosition": { "alias": "tooltipPosition"; "required": false; "isSignal": true; }; }, {}, ["control"], ["*"], true, never>;
3210
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<TnFormFieldComponent, "tn-form-field", never, { "label": { "alias": "label"; "required": false; "isSignal": true; }; "hint": { "alias": "hint"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "testId": { "alias": "testId"; "required": false; "isSignal": true; }; "subscriptSizing": { "alias": "subscriptSizing"; "required": false; "isSignal": true; }; "tooltip": { "alias": "tooltip"; "required": false; "isSignal": true; }; "tooltipPosition": { "alias": "tooltipPosition"; "required": false; "isSignal": true; }; "errorMessages": { "alias": "errorMessages"; "required": false; "isSignal": true; }; }, {}, ["control"], ["*"], true, never>;
3162
3211
  }
3163
3212
 
3213
+ /**
3214
+ * A user-friendly message for a single validation error, or a function that
3215
+ * builds one from the error's detail value.
3216
+ *
3217
+ * The function form receives the error value Angular stored for that key, which
3218
+ * lets you interpolate validator metadata, e.g.
3219
+ * `minlength: (e) => \`At least ${e.requiredLength} characters\``.
3220
+ */
3221
+ type TnFormFieldErrorMessage = string | ((errorValue: unknown) => string);
3222
+ /**
3223
+ * A per-field map of validation error key -> message (or message factory).
3224
+ *
3225
+ * @example
3226
+ * ```html
3227
+ * <tn-form-field [errorMessages]="{
3228
+ * required: 'Please enter a name',
3229
+ * pattern: 'Letters only',
3230
+ * minlength: messageFn
3231
+ * }">
3232
+ * ```
3233
+ */
3234
+ type TnFormFieldErrorMessages = Partial<Record<string, TnFormFieldErrorMessage>>;
3235
+ /**
3236
+ * App-wide resolver for validation messages. Register one with the
3237
+ * {@link TN_FORM_FIELD_ERRORS} token to centralize wording and i18n.
3238
+ *
3239
+ * Return a string to provide a message, or `null`/`undefined` to defer to the
3240
+ * next layer (built-in defaults, then the raw error key).
3241
+ *
3242
+ * @param errorKey The active validation error key (e.g. `'required'`).
3243
+ * @param errorValue The value Angular stored for that key.
3244
+ * @param control The control that failed validation, if available.
3245
+ */
3246
+ type TnFormFieldErrorResolver = (errorKey: string, errorValue: unknown, control: AbstractControl | null) => string | null | undefined;
3247
+ /**
3248
+ * Injection token for an app-wide {@link TnFormFieldErrorResolver}.
3249
+ *
3250
+ * Because the library ships no localized strings, this is the recommended hook
3251
+ * for wiring a translation service so every `tn-form-field` resolves messages
3252
+ * consistently. Per-field `errorMessages` still take precedence over it.
3253
+ *
3254
+ * @example
3255
+ * ```ts
3256
+ * providers: [
3257
+ * {
3258
+ * provide: TN_FORM_FIELD_ERRORS,
3259
+ * useFactory: (translate: TranslateService): TnFormFieldErrorResolver =>
3260
+ * (key, value) => translate.instant(`errors.${key}`, value as object),
3261
+ * deps: [TranslateService],
3262
+ * },
3263
+ * ];
3264
+ * ```
3265
+ */
3266
+ declare const TN_FORM_FIELD_ERRORS: InjectionToken<TnFormFieldErrorResolver>;
3267
+
3164
3268
  /**
3165
3269
  * Harness for interacting with `tn-form-field` in tests.
3166
3270
  * Provides methods for querying label, hint, error state, and accessing
@@ -4660,7 +4764,22 @@ interface TnTableDataProvider {
4660
4764
  */
4661
4765
  declare class TnTablePagerComponent {
4662
4766
  private destroyRef;
4663
- private readonly testIdDirective;
4767
+ private renderer;
4768
+ private hostRef;
4769
+ private testAttrName;
4770
+ /**
4771
+ * Semantic base applied to the host (via the `tnTestId` host directive) and
4772
+ * used to scope each child control, so multiple pagers on one page don't
4773
+ * collide on `select-page-size` / `button-first-page`. With a base of
4774
+ * `storage` the children become `select-storage-page-size`,
4775
+ * `button-storage-first-page`, etc.; with no base they stay
4776
+ * `select-page-size` / `button-first-page`.
4777
+ *
4778
+ * The page-size dropdown also scopes each option by its value, so individual
4779
+ * sizes are addressable: `option-page-size-10` / `-20` / `-50` / `-100` (or
4780
+ * `option-storage-page-size-10` under a base).
4781
+ */
4782
+ testId: _angular_core.InputSignal<TnTestIdValue>;
4664
4783
  /**
4665
4784
  * Build a child control's test-id base by joining the pager's `testId` with
4666
4785
  * `suffix` into a single string (kebab-joined). Returning a string keeps it
@@ -4759,7 +4878,7 @@ declare class TnTablePagerComponent {
4759
4878
  /** Forwards the current page/size to the data provider, if one is bound. */
4760
4879
  private pushToProvider;
4761
4880
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<TnTablePagerComponent, never>;
4762
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<TnTablePagerComponent, "tn-table-pager", never, { "currentPage": { "alias": "currentPage"; "required": false; "isSignal": true; }; "pageSize": { "alias": "pageSize"; "required": false; "isSignal": true; }; "pageSizeOptions": { "alias": "pageSizeOptions"; "required": false; "isSignal": true; }; "totalItems": { "alias": "totalItems"; "required": false; "isSignal": true; }; "dataProvider": { "alias": "dataProvider"; "required": false; "isSignal": true; }; "itemsPerPageLabel": { "alias": "itemsPerPageLabel"; "required": false; "isSignal": true; }; "ofLabel": { "alias": "ofLabel"; "required": false; "isSignal": true; }; "firstPageLabel": { "alias": "firstPageLabel"; "required": false; "isSignal": true; }; "previousPageLabel": { "alias": "previousPageLabel"; "required": false; "isSignal": true; }; "nextPageLabel": { "alias": "nextPageLabel"; "required": false; "isSignal": true; }; "lastPageLabel": { "alias": "lastPageLabel"; "required": false; "isSignal": true; }; "tablePaginationLabel": { "alias": "tablePaginationLabel"; "required": false; "isSignal": true; }; }, { "currentPage": "currentPageChange"; "pageSize": "pageSizeChange"; "pageChange": "pageChange"; "pageSizeChange": "pageSizeChange"; }, never, never, true, [{ directive: typeof TnTestIdDirective; inputs: { "tnTestId": "testId"; }; outputs: {}; }]>;
4881
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<TnTablePagerComponent, "tn-table-pager", never, { "testId": { "alias": "testId"; "required": false; "isSignal": true; }; "currentPage": { "alias": "currentPage"; "required": false; "isSignal": true; }; "pageSize": { "alias": "pageSize"; "required": false; "isSignal": true; }; "pageSizeOptions": { "alias": "pageSizeOptions"; "required": false; "isSignal": true; }; "totalItems": { "alias": "totalItems"; "required": false; "isSignal": true; }; "dataProvider": { "alias": "dataProvider"; "required": false; "isSignal": true; }; "itemsPerPageLabel": { "alias": "itemsPerPageLabel"; "required": false; "isSignal": true; }; "ofLabel": { "alias": "ofLabel"; "required": false; "isSignal": true; }; "firstPageLabel": { "alias": "firstPageLabel"; "required": false; "isSignal": true; }; "previousPageLabel": { "alias": "previousPageLabel"; "required": false; "isSignal": true; }; "nextPageLabel": { "alias": "nextPageLabel"; "required": false; "isSignal": true; }; "lastPageLabel": { "alias": "lastPageLabel"; "required": false; "isSignal": true; }; "tablePaginationLabel": { "alias": "tablePaginationLabel"; "required": false; "isSignal": true; }; }, { "currentPage": "currentPageChange"; "pageSize": "pageSizeChange"; "pageChange": "pageChange"; "pageSizeChange": "pageSizeChange"; }, never, never, true, never>;
4763
4882
  }
4764
4883
 
4765
4884
  /**
@@ -6108,13 +6227,28 @@ declare class TnDialogShellComponent implements OnInit {
6108
6227
  /**
6109
6228
  * Optional semantic base that scopes the shell's chrome buttons. The close
6110
6229
  * and fullscreen buttons emit `button-close` / `button-fullscreen` by default,
6111
- * or `button-<testId>-close` / `-fullscreen` when a base is provided (useful
6112
- * when more than one dialog can be open).
6230
+ * or `button-close-<testId>` / `button-fullscreen-<testId>` when a base is
6231
+ * provided (useful when more than one dialog can be open).
6113
6232
  */
6114
6233
  testId: _angular_core.InputSignal<TnTestIdValue>;
6115
- /** Scoped test-id segments for the close button (`button-[<base>-]close`). */
6234
+ /**
6235
+ * The `testId` base normalized to a flat segment array. Nothing is dropped
6236
+ * here — `composeTestId` (via the `[tnTestId]` directive) filters falsy
6237
+ * segments, so an unset base collapses to the bare role (`button-close`).
6238
+ */
6239
+ private readonly baseSegments;
6240
+ /**
6241
+ * Role-first test-id segments for the close button: `button-close[-<base>]`.
6242
+ *
6243
+ * The close and fullscreen buttons are fixed dialog chrome, not content
6244
+ * children, so the role leads rather than the base (content children are
6245
+ * base-first via `scopeTestId`). This keeps every dialog's close button under
6246
+ * a shared `button-close-*` prefix — it matches webui's established
6247
+ * close-button ids and lets automation target "all close buttons" with one
6248
+ * selector.
6249
+ */
6116
6250
  protected closeTestId: _angular_core.Signal<(string | number | null | undefined)[]>;
6117
- /** Scoped test-id segments for the fullscreen button (`button-[<base>-]fullscreen`). */
6251
+ /** Role-first test-id segments for the fullscreen button: `button-fullscreen[-<base>]`. */
6118
6252
  protected fullscreenTestId: _angular_core.Signal<(string | number | null | undefined)[]>;
6119
6253
  /** Stable id for the title heading, referenced by the dialog's aria-labelledby. */
6120
6254
  readonly titleId: string;
@@ -7198,5 +7332,5 @@ declare const TN_THEME_DEFINITIONS: readonly TnThemeDefinition[];
7198
7332
  */
7199
7333
  declare const THEME_MAP: Map<TnTheme, TnThemeDefinition>;
7200
7334
 
7201
- 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, scopeTestId, setupLucideIntegration, tnIconMarker };
7202
- 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 };
7335
+ export { CommonShortcuts, DEFAULT_THEME, DiskIconComponent, DiskType, FileSizePipe, InputType, LIGHT_THEME, LinuxModifierKeys, LinuxShortcuts, ModifierKeys, QuickShortcuts, ShortcutBuilder, StripMntPrefixPipe, THEME_MAP, THEME_STORAGE_KEY, TN_FORM_FIELD_ERRORS, 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, scopeTestId, setupLucideIntegration, tnIconMarker, writeTestId };
7336
+ 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, TnFormFieldErrorMessage, TnFormFieldErrorMessages, TnFormFieldErrorResolver, TnMenuItem, TnSelectOption, TnSelectOptionGroup, TnSelectionChange, TnSortEvent, TnTableDataProvider, TnTableDataSource, TnTableHarnessFilters, TnTablePagerHarnessFilters, TnTablePagerLabels, TnTablePagination, TnTestAttrName, TnTestIdValue, TnThemeDefinition, TnToastCall, TnToastConfig, TooltipPosition, YearCell };