@uni-design-system/uni-angular 4.0.0 → 5.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,9 +1,78 @@
1
1
  import * as _angular_core from '@angular/core';
2
- import { Signal, WritableSignal, InjectionToken, ElementRef, TemplateRef, EventEmitter, OnInit, OnDestroy, OnChanges, SimpleChanges, AfterViewInit } from '@angular/core';
2
+ import { Signal, WritableSignal, InjectionToken, ElementRef, TemplateRef, OnInit, OnDestroy, AfterViewInit } from '@angular/core';
3
3
  import * as _uni_design_system_uni_core from '@uni-design-system/uni-core';
4
- import { Icons, Variant, ContainerColorToken, UniTheme, ComponentName, ComponentTheme, NullableSize, ThemeName, TextRole, ContentColorToken, Size, Thickness, NullableStyleExpression, ColorKey, Typeface, Radius, OptionalSize, Border, Shadow, ZIndexableElements, ColorToken, RadiiSize, Elevation, TextColor, JustifyContent, StyleExpression, Orientation, OptionalAlignSelf, OptionalAlignItems, OptionalAlignContent, OptionalJustifyContent, OptionalDisplay, OptionalPosition, OptionalOverflow, OptionalFlexDirection, OptionalTextAlign, OptionalWrap } from '@uni-design-system/uni-core';
4
+ import { Icons, Variant, ContainerColorToken, PaletteConfig, GenerateColorsConfig, UniTheme, ComponentName, ComponentTheme, NullableSize, ThemeName, TextRole, ContentColorToken, Size, Thickness, NullableStyleExpression, ColorKey, ColorToken, Typeface, Radius, OptionalSize, Border, Shadow, ZIndexableElements, RadiiSize, Elevation, TextColor, JustifyContent, StyleExpression, Orientation, OptionalAlignSelf, OptionalAlignItems, OptionalAlignContent, OptionalJustifyContent, OptionalDisplay, OptionalPosition, OptionalOverflow, OptionalFlexDirection, OptionalTextAlign, OptionalWrap, ColorScheme, ColorCategory } from '@uni-design-system/uni-core';
5
5
  import { FormCheckboxControl, FormValueControl } from '@angular/forms/signals';
6
- import { Placement as Placement$1, OffsetOptions } from '@floating-ui/dom';
6
+
7
+ /**
8
+ * Returns a document-unique id for wiring ARIA relationships
9
+ * (aria-controls, aria-describedby, aria-labelledby, ...).
10
+ */
11
+ declare function uniqueId(prefix?: string): string;
12
+ /**
13
+ * Selector matching natively focusable elements. Used to locate the
14
+ * interactive element inside a projected trigger so ARIA attributes land
15
+ * on the element that actually receives focus.
16
+ */
17
+ declare const FOCUSABLE_SELECTOR = "button, [href], input, select, textarea, [tabindex]:not([tabindex=\"-1\"])";
18
+ /**
19
+ * Resolves the element that should carry ARIA state for a trigger:
20
+ * the element itself when focusable, otherwise its first focusable descendant.
21
+ */
22
+ declare function resolveFocusTarget(element: HTMLElement): HTMLElement;
23
+ /**
24
+ * Visually hides content while keeping it available to screen readers.
25
+ * Use for text alternatives (e.g. badge counts, icon-only affordances).
26
+ */
27
+ declare const visuallyHidden: {
28
+ readonly position: "absolute";
29
+ readonly width: 1;
30
+ readonly height: 1;
31
+ readonly padding: 0;
32
+ readonly margin: -1;
33
+ readonly overflow: "hidden";
34
+ readonly clipPath: "inset(50%)";
35
+ readonly whiteSpace: "nowrap";
36
+ readonly border: 0;
37
+ };
38
+ /**
39
+ * Wraps animation/transition styles so they only apply when the user has
40
+ * not requested reduced motion (WCAG 2.3.3).
41
+ */
42
+ declare function motionSafe<T extends object>(styles: T): {
43
+ '@media (prefers-reduced-motion: no-preference)': T;
44
+ };
45
+
46
+ /**
47
+ * Native CSS Anchor Positioning helpers (Baseline 2026). These replace the
48
+ * former @floating-ui/dom dependency: the browser tracks the anchor natively
49
+ * (no scroll/resize listeners), and `position-try-fallbacks` flips the panel
50
+ * at viewport edges where supported (Chrome 125+, Firefox 147+, Safari 26+;
51
+ * older Baseline browsers still position correctly but do not auto-flip).
52
+ */
53
+ type Placement = 'top' | 'right' | 'bottom' | 'left' | 'top-start' | 'right-start' | 'bottom-start' | 'left-start' | 'top-end' | 'right-end' | 'bottom-end' | 'left-end';
54
+ /** Distances between the anchor and the positioned panel, in px. */
55
+ interface AnchorOffset {
56
+ /** Gap along the placement axis (anchor → panel). */
57
+ mainAxis?: number;
58
+ /** Shift along the cross axis, from the aligned edge. */
59
+ alignmentAxis?: number;
60
+ }
61
+ /** Returns a document-unique dashed-ident usable as a CSS `anchor-name`. */
62
+ declare function newAnchorName(): string;
63
+ /**
64
+ * Emotion style object anchoring a panel to `anchor` at `placement`.
65
+ * Spread into the panel's `css()` styles. The trigger element must carry
66
+ * `anchor-name: <anchor>` (see `newAnchorName`).
67
+ */
68
+ declare function anchorStyles(anchor: string, placement: Placement, offset?: AnchorOffset): Record<string, string | number>;
69
+ /**
70
+ * Absolute positioning for a rotated-square arrow sitting on the panel edge
71
+ * that faces the anchor. Static per placement: if the browser flips the panel
72
+ * via position-try, the arrow stays on the configured side (cosmetic-only
73
+ * degradation, matching the flip-support caveat above).
74
+ */
75
+ declare function anchorArrowStyles(placement: Placement, size?: number): Record<string, string | number>;
7
76
 
8
77
  type SortDirection = 'asc' | 'desc' | 'indet';
9
78
  interface Sort<T> {
@@ -187,7 +256,19 @@ declare function useTimer(): {
187
256
  declare const acceptableFile: (file: File, acceptedFileExtensions: string[] | undefined) => boolean;
188
257
  declare const getFileExtension: (file: File) => string;
189
258
 
259
+ /**
260
+ * The editable shape a theme builder manipulates: a seed + scheme + category
261
+ * (plus optional saturation floor, brand colors, and light/dark mode).
262
+ * Everything else in a theme is derived from this. Brand colors come in two
263
+ * strengths: `brand` pins are emitted verbatim (may fail contrast), `targets`
264
+ * are brand-faithful but the WCAG guard-rail may adjust their lightness.
265
+ */
266
+ type BrandPaletteConfig = Required<Pick<PaletteConfig, 'seed' | 'scheme' | 'category'>> & Pick<GenerateColorsConfig, 'mode' | 'accentSaturationFloor' | 'brand' | 'targets'>;
190
267
  declare class ThemeService {
268
+ /** localStorage key marking the custom brand theme as active. */
269
+ static readonly CUSTOM_KEY = "CustomTheme";
270
+ /** localStorage key holding the serialized brand palette config. */
271
+ static readonly PALETTE_KEY = "uni-custom-palette";
191
272
  private themes;
192
273
  private localStorage;
193
274
  theme: _angular_core.WritableSignal<UniTheme>;
@@ -195,7 +276,7 @@ declare class ThemeService {
195
276
  components: Signal<Partial<Record<ComponentName, ComponentTheme<object>>>>;
196
277
  component: <T>(componentName: ComponentName) => Signal<ComponentTheme<T>>;
197
278
  colors: Signal<Partial<Record<string, string>>>;
198
- typeFaces: Signal<Partial<Record<string, _uni_design_system_uni_core.TypeFaceDefinition>>>;
279
+ typeFaces: Signal<Record<string, _uni_design_system_uni_core.TypeFaceDefinition>>;
199
280
  spacing: Signal<Partial<Record<NullableSize, string | number>>>;
200
281
  thicknesses: Signal<_uni_design_system_uni_core.Thicknesses>;
201
282
  radii: Signal<Partial<Record<string, string>>>;
@@ -204,11 +285,22 @@ declare class ThemeService {
204
285
  icons: Signal<_uni_design_system_uni_core.Icons>;
205
286
  constructor();
206
287
  selectTheme(themeName: ThemeName): void;
288
+ /** The live brand palette config, when a custom theme is active. */
289
+ customPalette: _angular_core.WritableSignal<BrandPaletteConfig>;
290
+ isCustomTheme: Signal<boolean>;
291
+ /**
292
+ * Generate a full theme from a brand palette config and make it active. When
293
+ * `persist` is true the config is saved so every subsequent story (and
294
+ * reload) renders with the same brand.
295
+ */
296
+ applyPalette(config: BrandPaletteConfig, persist?: boolean): void;
297
+ /** Drop the custom brand theme and fall back to the first built-in theme. */
298
+ clearCustomPalette(): void;
207
299
  selectedThemeName: Signal<string>;
208
300
  selectedThemeKey: _angular_core.WritableSignal<string>;
209
301
  textClass: (textRole: TextRole, textColor?: ContentColorToken) => string;
210
302
  componentStyle: (componentName: ComponentName, variant: Variant, size: Size) => Signal<{
211
- [x: string]: string | number;
303
+ [x: string]: string | number | _uni_design_system_uni_core.StyleExpression;
212
304
  }>;
213
305
  getSpacing: (size: NullableSize) => string | number;
214
306
  getThickness: (thickness: Thickness) => string | number;
@@ -217,6 +309,16 @@ declare class ThemeService {
217
309
  backgroundColor: (token?: ColorKey) => NullableStyleExpression;
218
310
  backgroundImage: (url?: string) => NullableStyleExpression;
219
311
  getContainerColors: (color: Variant, useVariant?: boolean) => _uni_design_system_uni_core.StyleExpression;
312
+ /**
313
+ * Shared keyboard-focus indicator (WCAG 2.4.7). Spread into a component's
314
+ * Emotion styles: `...this.theme.focusRing()` or `focusRing('primary')`.
315
+ */
316
+ focusRing: (token?: ColorToken) => {
317
+ '&:focus-visible': {
318
+ outline: string;
319
+ outlineOffset: string;
320
+ };
321
+ };
220
322
  typeface: (typeface?: Typeface) => _uni_design_system_uni_core.TypeFaceDefinition;
221
323
  colorPalette: () => Partial<Record<string, string>>;
222
324
  color(color?: ColorKey): NullableStyleExpression;
@@ -262,7 +364,7 @@ declare class UniBackgroundComponent {
262
364
  imageSize: _angular_core.InputSignal<string | number>;
263
365
  height: _angular_core.InputSignal<string | number>;
264
366
  width: _angular_core.InputSignal<string | number>;
265
- get className(): string;
367
+ protected readonly className: _angular_core.Signal<string>;
266
368
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<UniBackgroundComponent, never>;
267
369
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<UniBackgroundComponent, "uni-background, Background", never, { "image": { "alias": "image"; "required": false; "isSignal": true; }; "imagePosition": { "alias": "imagePosition"; "required": false; "isSignal": true; }; "imageSize": { "alias": "imageSize"; "required": false; "isSignal": true; }; "height": { "alias": "height"; "required": false; "isSignal": true; }; "width": { "alias": "width"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
268
370
  }
@@ -275,7 +377,7 @@ declare class BaseComponent<T = unknown> {
275
377
  componentTheme: _angular_core.Signal<_uni_design_system_uni_core.ComponentTheme<T>>;
276
378
  componentOptions: _angular_core.Signal<T>;
277
379
  style: _angular_core.Signal<{
278
- [x: string]: string | number;
380
+ [x: string]: string | number | _uni_design_system_uni_core.StyleExpression;
279
381
  }>;
280
382
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<BaseComponent<any>, never>;
281
383
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<BaseComponent<any>, "ng-component", never, { "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
@@ -288,10 +390,10 @@ interface UniBadgeOptions {
288
390
  declare class UniBadgeComponent extends BaseComponent<UniBadgeOptions> {
289
391
  color: _angular_core.InputSignal<Variant>;
290
392
  useVariant: _angular_core.InputSignal<boolean>;
291
- width?: number;
292
- get className(): string;
393
+ width: _angular_core.InputSignal<number>;
394
+ protected readonly className: _angular_core.Signal<string>;
293
395
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<UniBadgeComponent, never>;
294
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<UniBadgeComponent, "div[uni-badge], Badge", never, { "color": { "alias": "color"; "required": false; "isSignal": true; }; "useVariant": { "alias": "useVariant"; "required": false; "isSignal": true; }; "width": { "alias": "width"; "required": false; }; }, {}, never, ["*"], true, never>;
396
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<UniBadgeComponent, "div[uni-badge], Badge", never, { "color": { "alias": "color"; "required": false; "isSignal": true; }; "useVariant": { "alias": "useVariant"; "required": false; "isSignal": true; }; "width": { "alias": "width"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
295
397
  }
296
398
 
297
399
  declare class RippleDirective {
@@ -310,24 +412,22 @@ declare class UniButtonComponent extends BaseComponent {
310
412
  readonly disable: _angular_core.InputSignal<boolean>;
311
413
  readonly loading: _angular_core.InputSignal<boolean>;
312
414
  readonly fullWidth: _angular_core.InputSignal<boolean>;
313
- symbolLeft?: string;
314
- symbolRight?: string;
415
+ readonly symbolLeft: _angular_core.InputSignal<string>;
416
+ readonly symbolRight: _angular_core.InputSignal<string>;
315
417
  spinnerBox: string;
316
- get className(): string;
418
+ protected readonly className: _angular_core.Signal<string>;
317
419
  symbolSize: _angular_core.Signal<number>;
318
420
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<UniButtonComponent, never>;
319
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<UniButtonComponent, "button[uni-text-button], Button, button[text-button]", never, { "disable": { "alias": "disable"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "fullWidth": { "alias": "fullWidth"; "required": false; "isSignal": true; }; "symbolLeft": { "alias": "symbolLeft"; "required": false; }; "symbolRight": { "alias": "symbolRight"; "required": false; }; }, {}, never, ["*"], true, [{ directive: typeof RippleDirective; inputs: {}; outputs: {}; }]>;
421
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<UniButtonComponent, "button[uni-text-button], Button, button[text-button]", never, { "disable": { "alias": "disable"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "fullWidth": { "alias": "fullWidth"; "required": false; "isSignal": true; }; "symbolLeft": { "alias": "symbolLeft"; "required": false; "isSignal": true; }; "symbolRight": { "alias": "symbolRight"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, [{ directive: typeof RippleDirective; inputs: {}; outputs: {}; }]>;
320
422
  }
321
423
 
322
424
  declare class UniButtonGroupComponent {
323
425
  private themeService;
324
- get className(): string;
426
+ protected readonly className: _angular_core.Signal<string>;
325
427
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<UniButtonGroupComponent, never>;
326
428
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<UniButtonGroupComponent, "uni-button-group, ButtonGroup", never, {}, {}, never, ["*"], true, never>;
327
429
  }
328
430
 
329
- type Placement = 'top' | 'right' | 'bottom' | 'left' | 'top-start' | 'right-start' | 'bottom-start' | 'left-start' | 'top-end' | 'right-end' | 'bottom-end' | 'left-end';
330
-
331
431
  interface ButtonGroupConfig {
332
432
  tooltipPlacement?: Placement;
333
433
  buttonSize: Size;
@@ -374,20 +474,32 @@ interface UniCheckboxOptions {
374
474
  }
375
475
 
376
476
  declare class UniCheckboxComponent extends BaseComponent<UniCheckboxOptions> implements FormCheckboxControl {
377
- checkboxLabel: string;
378
- checkboxInput: string;
379
477
  readonly checked: _angular_core.ModelSignal<boolean>;
380
478
  readonly disabled: _angular_core.InputSignal<boolean>;
381
479
  readonly touched: _angular_core.ModelSignal<boolean>;
382
480
  readonly invalid: _angular_core.InputSignal<boolean>;
383
481
  readonly dirty: _angular_core.InputSignal<boolean>;
482
+ /** Synced from required() validators by the Signal Forms [field] directive. */
483
+ readonly required: _angular_core.InputSignal<boolean>;
484
+ /**
485
+ * Id(s) of external element(s) describing this control — typically your
486
+ * app-rendered error message — exposed as aria-describedby.
487
+ */
488
+ readonly ariaDescribedBy: _angular_core.InputSignal<string>;
384
489
  readonly label: _angular_core.InputSignal<string>;
490
+ /**
491
+ * Mixed state for "select all"-style parent checkboxes. Cleared
492
+ * automatically on the next user interaction, matching native behavior.
493
+ */
494
+ readonly indeterminate: _angular_core.ModelSignal<boolean>;
385
495
  protected readonly showError: _angular_core.Signal<boolean>;
386
496
  markAsTouched(): void;
387
- constructor();
497
+ handleChange(event: Event): void;
498
+ protected readonly checkboxLabel: _angular_core.Signal<string>;
499
+ protected readonly checkboxInput: _angular_core.Signal<string>;
388
500
  getThemeColor(token: ColorToken): string;
389
501
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<UniCheckboxComponent, never>;
390
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<UniCheckboxComponent, "uni-checkbox, Checkbox", never, { "checked": { "alias": "checked"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "touched": { "alias": "touched"; "required": false; "isSignal": true; }; "invalid": { "alias": "invalid"; "required": false; "isSignal": true; }; "dirty": { "alias": "dirty"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; }, { "checked": "checkedChange"; "touched": "touchedChange"; }, never, never, true, never>;
502
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<UniCheckboxComponent, "uni-checkbox, Checkbox", never, { "checked": { "alias": "checked"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "touched": { "alias": "touched"; "required": false; "isSignal": true; }; "invalid": { "alias": "invalid"; "required": false; "isSignal": true; }; "dirty": { "alias": "dirty"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "ariaDescribedBy": { "alias": "ariaDescribedBy"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "indeterminate": { "alias": "indeterminate"; "required": false; "isSignal": true; }; }, { "checked": "checkedChange"; "touched": "touchedChange"; "indeterminate": "indeterminateChange"; }, never, never, true, never>;
391
503
  }
392
504
 
393
505
  interface UniDataSearchOptions {
@@ -459,21 +571,21 @@ declare class UniDataTableComponent<T> extends BaseComponent<UniDataTableOptions
459
571
  highlight?: _angular_core.InputSignal<(row: T) => boolean>;
460
572
  height: _angular_core.InputSignal<string>;
461
573
  scrollable: _angular_core.WritableSignal<boolean>;
462
- tableClass: string;
463
- headerClass: string;
464
- footerClass: string;
465
- thClass: string;
466
- tdClass: string;
467
- trClass: string;
468
- detailRowClass: string;
469
574
  loadingOverlayClass: string;
470
575
  rowSelect: _angular_core.OutputEmitterRef<T>;
471
576
  rowClick: _angular_core.OutputEmitterRef<T>;
472
- displayedColumns: _angular_core.WritableSignal<string[]>;
473
- constructor();
577
+ protected readonly tableClass: _angular_core.Signal<string>;
578
+ protected readonly headerClass: _angular_core.Signal<string>;
579
+ protected readonly footerClass: _angular_core.Signal<string>;
580
+ protected readonly thClass: _angular_core.Signal<string>;
581
+ protected readonly tdClass: _angular_core.Signal<string>;
582
+ protected readonly trClass: _angular_core.Signal<string>;
583
+ protected readonly detailRowClass: _angular_core.Signal<string>;
474
584
  isLoading: _angular_core.WritableSignal<boolean>;
475
585
  toggleRow(index: number): void;
476
586
  handleRowClick(row: T, index: number): void;
587
+ /** aria-sort value for a column header, or null when the column is unsorted. */
588
+ protected ariaSort(column: ColumnDefinition<T>): 'ascending' | 'descending' | null;
477
589
  isHighlighted(row: T): boolean;
478
590
  protected readonly String: StringConstructor;
479
591
  handleScrollable(scrollable: boolean): void;
@@ -484,17 +596,17 @@ declare class UniDataTableComponent<T> extends BaseComponent<UniDataTableOptions
484
596
 
485
597
  declare class UniDialogButtonsComponent {
486
598
  private dialog;
487
- confirmButtonText?: string;
488
- confirmButtonVariant: Variant;
489
- cancelButtonText?: string;
490
- disableConfirm?: boolean;
491
- padding?: NullableSize;
492
- paddingBottom?: NullableSize;
493
- justifyContent?: JustifyContent;
494
- confirmed: EventEmitter<any>;
599
+ confirmButtonText: _angular_core.InputSignal<string>;
600
+ confirmButtonVariant: _angular_core.InputSignal<Variant>;
601
+ cancelButtonText: _angular_core.InputSignal<string>;
602
+ disableConfirm: _angular_core.InputSignal<boolean>;
603
+ padding: _angular_core.InputSignal<NullableSize>;
604
+ paddingBottom: _angular_core.InputSignal<NullableSize>;
605
+ justifyContent: _angular_core.InputSignal<JustifyContent>;
606
+ confirmed: _angular_core.OutputEmitterRef<void>;
495
607
  closeDialog(): void;
496
608
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<UniDialogButtonsComponent, never>;
497
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<UniDialogButtonsComponent, "uni-dialog-buttons, DialogButtons, div[dialog-buttons]", never, { "confirmButtonText": { "alias": "confirmButtonText"; "required": false; }; "confirmButtonVariant": { "alias": "confirmButtonVariant"; "required": false; }; "cancelButtonText": { "alias": "cancelButtonText"; "required": false; }; "disableConfirm": { "alias": "disableConfirm"; "required": false; }; "padding": { "alias": "padding"; "required": false; }; "paddingBottom": { "alias": "paddingBottom"; "required": false; }; "justifyContent": { "alias": "justifyContent"; "required": false; }; }, { "confirmed": "confirmed"; }, never, never, true, never>;
609
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<UniDialogButtonsComponent, "uni-dialog-buttons, DialogButtons, div[dialog-buttons]", never, { "confirmButtonText": { "alias": "confirmButtonText"; "required": false; "isSignal": true; }; "confirmButtonVariant": { "alias": "confirmButtonVariant"; "required": false; "isSignal": true; }; "cancelButtonText": { "alias": "cancelButtonText"; "required": false; "isSignal": true; }; "disableConfirm": { "alias": "disableConfirm"; "required": false; "isSignal": true; }; "padding": { "alias": "padding"; "required": false; "isSignal": true; }; "paddingBottom": { "alias": "paddingBottom"; "required": false; "isSignal": true; }; "justifyContent": { "alias": "justifyContent"; "required": false; "isSignal": true; }; }, { "confirmed": "confirmed"; }, never, never, true, never>;
498
610
  }
499
611
 
500
612
  interface UniDialogHeaderOptions {
@@ -511,6 +623,9 @@ interface UniDialogHeaderOptions {
511
623
 
512
624
  declare class UniDialogHeaderComponent extends BaseComponent<UniDialogHeaderOptions> {
513
625
  private dialog;
626
+ /** Attached to the title element so the parent dialog is labelled by it. */
627
+ protected readonly titleId: string;
628
+ constructor();
514
629
  closeDialog(): void;
515
630
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<UniDialogHeaderComponent, never>;
516
631
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<UniDialogHeaderComponent, "div[uni-dialog-header], DialogHeader", never, {}, {}, never, ["*"], true, never>;
@@ -527,29 +642,49 @@ interface UniDialogOptions {
527
642
 
528
643
  declare class UniDialogComponent extends BaseComponent<UniDialogOptions> {
529
644
  private elem;
530
- show: _angular_core.InputSignal<boolean>;
531
- private readonly _show;
532
- defaultCloseButton?: boolean;
533
- showing: EventEmitter<any>;
645
+ /** Two-way bindable open state: [(show)]. */
646
+ show: _angular_core.ModelSignal<boolean>;
647
+ /**
648
+ * Accessible name for dialogs without a DialogHeader. When a DialogHeader
649
+ * is present it labels the dialog automatically via aria-labelledby.
650
+ */
651
+ ariaLabel: _angular_core.InputSignal<string>;
652
+ /**
653
+ * CSS selector for the element to focus when the dialog opens. Defaults to
654
+ * the browser's native behavior (first focusable element).
655
+ */
656
+ initialFocus: _angular_core.InputSignal<string>;
657
+ defaultCloseButton: _angular_core.InputSignal<boolean>;
658
+ /** Id referenced by aria-labelledby; DialogHeader attaches it to the title. */
659
+ readonly titleId: string;
660
+ readonly hasTitle: _angular_core.WritableSignal<boolean>;
661
+ /** Emits true once opened and false once the closing animation finishes. */
662
+ showing: _angular_core.OutputEmitterRef<boolean>;
534
663
  constructor();
535
664
  private get _dialog();
536
- get className(): string;
537
- BackdropClick(event: Event): void;
538
- ClosingAnimation(e: AnimationEvent): void;
665
+ protected readonly className: _angular_core.Signal<string>;
666
+ protected backdropClick(event: Event): void;
667
+ /**
668
+ * Escape fires the native 'cancel' event, which would close the dialog
669
+ * instantly and leave our show-state out of sync. Route it through the
670
+ * animated close() instead.
671
+ */
672
+ protected escapeCancel(event: Event): void;
673
+ protected closingAnimation(e: AnimationEvent): void;
539
674
  closeButton: string;
540
675
  private dialogFadeIn;
541
676
  private dialogFadeOut;
542
677
  open(): void;
543
678
  close(): void;
544
679
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<UniDialogComponent, never>;
545
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<UniDialogComponent, "dialog[uni-dialog], Dialog", never, { "show": { "alias": "show"; "required": false; "isSignal": true; }; "defaultCloseButton": { "alias": "defaultCloseButton"; "required": false; }; }, { "showing": "showing"; }, never, ["*"], true, never>;
680
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<UniDialogComponent, "dialog[uni-dialog], Dialog", never, { "show": { "alias": "show"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; "initialFocus": { "alias": "initialFocus"; "required": false; "isSignal": true; }; "defaultCloseButton": { "alias": "defaultCloseButton"; "required": false; "isSignal": true; }; }, { "show": "showChange"; "showing": "showing"; }, never, ["*"], true, never>;
546
681
  }
547
682
 
548
683
  declare class UniDividerComponent {
549
684
  themeService: ThemeService;
550
685
  orientation: _angular_core.InputSignal<Orientation>;
551
686
  border: _angular_core.InputSignal<string>;
552
- get className(): string;
687
+ protected readonly className: _angular_core.Signal<string>;
553
688
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<UniDividerComponent, never>;
554
689
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<UniDividerComponent, "uni-divider, Divider", never, { "orientation": { "alias": "orientation"; "required": false; "isSignal": true; }; "border": { "alias": "border"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
555
690
  }
@@ -561,14 +696,24 @@ interface UniDropdownOptions {
561
696
  color: ContainerColorToken;
562
697
  }
563
698
 
699
+ type AriaHasPopup = 'menu' | 'listbox' | 'dialog' | 'grid' | 'tree' | 'true';
564
700
  declare class UniDropdownComponent extends BaseComponent<UniDropdownOptions> implements OnInit, OnDestroy {
565
701
  private renderer;
566
- private cleanupAutoUpdate?;
567
702
  private delay;
568
703
  showing: _angular_core.WritableSignal<boolean>;
569
704
  trigger: _angular_core.InputSignal<HTMLElement>;
570
- placement: _angular_core.InputSignal<Placement$1>;
571
- offset: _angular_core.InputSignal<OffsetOptions>;
705
+ placement: _angular_core.InputSignal<Placement>;
706
+ offset: _angular_core.InputSignal<AnchorOffset>;
707
+ /** CSS anchor-name linking the trigger to the popover panel. */
708
+ private readonly anchorName;
709
+ /**
710
+ * Value for aria-haspopup on the trigger, describing what the popover
711
+ * contains (e.g. 'menu' for Menu, 'dialog' for rich content). When unset,
712
+ * only aria-expanded/aria-controls are managed.
713
+ */
714
+ ariaHasPopup: _angular_core.InputSignal<AriaHasPopup>;
715
+ /** Document-unique id of the popover element, for aria-controls wiring. */
716
+ readonly popoverId: string;
572
717
  paddingVertical: _angular_core.InputSignal<NullableSize>;
573
718
  paddingHorizontal: _angular_core.InputSignal<NullableSize>;
574
719
  dropdownShowing: _angular_core.OutputEmitterRef<boolean>;
@@ -578,17 +723,26 @@ declare class UniDropdownComponent extends BaseComponent<UniDropdownOptions> imp
578
723
  private get _dropdown();
579
724
  private transformOriginMap;
580
725
  dropdownClass: _angular_core.Signal<string>;
726
+ /** The element that receives focus and carries the ARIA popup state. */
727
+ private get _focusTarget();
581
728
  ngOnInit(): void;
729
+ /**
730
+ * Returns focus to the trigger when the popover closes while focus was
731
+ * inside it (or was dropped on <body> by the top layer closing), so
732
+ * keyboard users are never stranded (WCAG 2.4.3).
733
+ */
734
+ private restoreFocus;
582
735
  toggleDropdown(): void;
583
736
  hideDropdown(): void;
584
- private updatePosition;
585
737
  ngOnDestroy(): void;
586
738
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<UniDropdownComponent, never>;
587
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<UniDropdownComponent, "uni-dropdown, Dropdown", never, { "trigger": { "alias": "trigger"; "required": true; "isSignal": true; }; "placement": { "alias": "placement"; "required": false; "isSignal": true; }; "offset": { "alias": "offset"; "required": false; "isSignal": true; }; "paddingVertical": { "alias": "paddingVertical"; "required": false; "isSignal": true; }; "paddingHorizontal": { "alias": "paddingHorizontal"; "required": false; "isSignal": true; }; }, { "dropdownShowing": "dropdownShowing"; "dropdownHiding": "dropdownHiding"; }, never, ["*"], true, never>;
739
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<UniDropdownComponent, "uni-dropdown, Dropdown", never, { "trigger": { "alias": "trigger"; "required": true; "isSignal": true; }; "placement": { "alias": "placement"; "required": false; "isSignal": true; }; "offset": { "alias": "offset"; "required": false; "isSignal": true; }; "ariaHasPopup": { "alias": "ariaHasPopup"; "required": false; "isSignal": true; }; "paddingVertical": { "alias": "paddingVertical"; "required": false; "isSignal": true; }; "paddingHorizontal": { "alias": "paddingHorizontal"; "required": false; "isSignal": true; }; }, { "dropdownShowing": "dropdownShowing"; "dropdownHiding": "dropdownHiding"; }, never, ["*"], true, never>;
588
740
  }
589
741
 
590
742
  declare class UniExpandComponent {
591
743
  collapsed: _angular_core.ModelSignal<boolean>;
744
+ /** Referenced by the controlling toggle's aria-controls. */
745
+ readonly regionId: string;
592
746
  toggle(): void;
593
747
  expandClassName: string;
594
748
  contentClassName: string;
@@ -602,10 +756,12 @@ declare class UniExpandComponent {
602
756
 
603
757
  declare class UniExpandToggleComponent {
604
758
  collapsed: _angular_core.ModelSignal<boolean>;
605
- get className(): string;
759
+ /** Id of the Expand region this toggle controls (see UniExpandComponent.regionId). */
760
+ ariaControls: _angular_core.InputSignal<string>;
761
+ protected readonly className: _angular_core.Signal<string>;
606
762
  toggle(): void;
607
763
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<UniExpandToggleComponent, never>;
608
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<UniExpandToggleComponent, "uni-expand-toggle, ExpandToggle", never, { "collapsed": { "alias": "collapsed"; "required": false; "isSignal": true; }; }, { "collapsed": "collapsedChange"; }, never, never, true, never>;
764
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<UniExpandToggleComponent, "uni-expand-toggle, ExpandToggle", never, { "collapsed": { "alias": "collapsed"; "required": false; "isSignal": true; }; "ariaControls": { "alias": "ariaControls"; "required": false; "isSignal": true; }; }, { "collapsed": "collapsedChange"; }, never, never, true, never>;
609
765
  }
610
766
 
611
767
  declare class UniExpandAreaComponent {
@@ -637,6 +793,12 @@ declare class UniFileDropZoneComponent {
637
793
  helpTemplateContext: _angular_core.InputSignal<unknown>;
638
794
  fileAttached: _angular_core.OutputEmitterRef<File>;
639
795
  fileRemoved: _angular_core.OutputEmitterRef<void>;
796
+ /**
797
+ * The zone acts as the keyboard-reachable file picker only when no browse
798
+ * button is rendered (nesting a button inside a button-role zone would be
799
+ * invalid ARIA) and no file is attached yet.
800
+ */
801
+ zoneIsInteractive: _angular_core.Signal<boolean>;
640
802
  sanitizedFileExtensions: _angular_core.Signal<string[]>;
641
803
  helpText: _angular_core.Signal<string>;
642
804
  constructor();
@@ -658,7 +820,7 @@ declare class UniDebounceInputComponent {
658
820
  private timeoutId;
659
821
  private lastEmitted;
660
822
  constructor();
661
- handleInput(value: string): void;
823
+ handleInput(event: Event): void;
662
824
  inputClass: string;
663
825
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<UniDebounceInputComponent, never>;
664
826
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<UniDebounceInputComponent, "DebounceInput, uni-debounce-input", never, { "inputName": { "alias": "inputName"; "required": false; "isSignal": true; }; "inputId": { "alias": "inputId"; "required": false; "isSignal": true; }; "debounceTime": { "alias": "debounceTime"; "required": false; "isSignal": true; }; }, { "change": "change"; }, never, never, true, never>;
@@ -667,27 +829,33 @@ declare class UniDebounceInputComponent {
667
829
  declare class UniIconComponent {
668
830
  private themeService;
669
831
  color: _angular_core.InputSignal<string>;
670
- protected _path: string;
671
- get className(): string;
672
- set name(iconName: keyof Icons);
832
+ name: _angular_core.InputSignal<string>;
833
+ protected readonly path: _angular_core.Signal<string>;
834
+ protected readonly className: _angular_core.Signal<string>;
673
835
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<UniIconComponent, never>;
674
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<UniIconComponent, "uni-icon, Icon", never, { "color": { "alias": "color"; "required": false; "isSignal": true; }; "name": { "alias": "name"; "required": false; }; }, {}, never, never, true, never>;
836
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<UniIconComponent, "uni-icon, Icon", never, { "color": { "alias": "color"; "required": false; "isSignal": true; }; "name": { "alias": "name"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
675
837
  }
676
838
 
677
- declare class UniIconButtonComponent implements OnChanges {
839
+ declare class UniIconButtonComponent {
678
840
  private theme;
679
841
  config: _angular_core.Signal<_uni_design_system_uni_core.ComponentTheme<unknown>>;
680
- iconName?: IconName;
681
- symbolName?: string;
682
- variant: Variant;
683
- size: Size;
684
- disable?: boolean;
685
- loading?: boolean;
686
- opticalSize: number;
687
- get className(): string;
688
- ngOnChanges(changes: SimpleChanges): void;
842
+ /**
843
+ * Accessible name for the button. Alternative to projecting text content
844
+ * (`<button icon-button>Close</button>`); one of the two is required for
845
+ * an icon-only button to be announced correctly.
846
+ */
847
+ ariaLabel: _angular_core.InputSignal<string>;
848
+ iconName: _angular_core.InputSignal<string>;
849
+ symbolName: _angular_core.InputSignal<string>;
850
+ variant: _angular_core.InputSignal<Variant>;
851
+ size: _angular_core.InputSignal<Size>;
852
+ disable: _angular_core.InputSignal<boolean>;
853
+ loading: _angular_core.InputSignal<boolean>;
854
+ opticalSize: _angular_core.InputSignal<number>;
855
+ protected readonly srOnlyClass: string;
856
+ protected readonly className: _angular_core.Signal<string>;
689
857
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<UniIconButtonComponent, never>;
690
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<UniIconButtonComponent, "button[uni-icon-button], button[icon-button]", never, { "iconName": { "alias": "iconName"; "required": false; }; "symbolName": { "alias": "symbolName"; "required": false; }; "variant": { "alias": "variant"; "required": false; }; "size": { "alias": "size"; "required": false; }; "disable": { "alias": "disable"; "required": false; }; "loading": { "alias": "loading"; "required": false; }; "opticalSize": { "alias": "opticalSize"; "required": false; }; }, {}, never, never, true, [{ directive: typeof RippleDirective; inputs: {}; outputs: {}; }]>;
858
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<UniIconButtonComponent, "button[uni-icon-button], button[icon-button]", never, { "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; "iconName": { "alias": "iconName"; "required": false; "isSignal": true; }; "symbolName": { "alias": "symbolName"; "required": false; "isSignal": true; }; "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "disable": { "alias": "disable"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "opticalSize": { "alias": "opticalSize"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, [{ directive: typeof RippleDirective; inputs: {}; outputs: {}; }]>;
691
859
  }
692
860
 
693
861
  declare class UniInputComponent implements FormValueControl<string> {
@@ -696,13 +864,21 @@ declare class UniInputComponent implements FormValueControl<string> {
696
864
  readonly touched: _angular_core.ModelSignal<boolean>;
697
865
  readonly invalid: _angular_core.InputSignal<boolean>;
698
866
  readonly dirty: _angular_core.InputSignal<boolean>;
867
+ /** Synced from required() validators by the Signal Forms [field] directive. */
868
+ readonly required: _angular_core.InputSignal<boolean>;
869
+ /**
870
+ * Id(s) of external element(s) describing this control — typically your
871
+ * app-rendered error message — exposed as aria-describedby.
872
+ */
873
+ readonly ariaDescribedBy: _angular_core.InputSignal<string>;
699
874
  label: _angular_core.InputSignal<string>;
700
875
  placeholder: _angular_core.InputSignal<string>;
701
876
  protected readonly showError: _angular_core.Signal<boolean>;
702
877
  markAsTouched(): void;
878
+ handleInput(event: Event): void;
703
879
  inputClass: string;
704
880
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<UniInputComponent, never>;
705
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<UniInputComponent, "uni-input", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "touched": { "alias": "touched"; "required": false; "isSignal": true; }; "invalid": { "alias": "invalid"; "required": false; "isSignal": true; }; "dirty": { "alias": "dirty"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": true; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "touched": "touchedChange"; }, never, ["pre-input", "post-input"], true, never>;
881
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<UniInputComponent, "uni-input", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "touched": { "alias": "touched"; "required": false; "isSignal": true; }; "invalid": { "alias": "invalid"; "required": false; "isSignal": true; }; "dirty": { "alias": "dirty"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "ariaDescribedBy": { "alias": "ariaDescribedBy"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": true; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "touched": "touchedChange"; }, never, ["pre-input", "post-input"], true, never>;
706
882
  }
707
883
 
708
884
  interface UniInputBoxOptions {
@@ -725,7 +901,7 @@ interface UniInputBoxOptions {
725
901
  }
726
902
 
727
903
  declare class UniInputBoxComponent extends BaseComponent<UniInputBoxOptions> {
728
- className: string;
904
+ protected readonly className: string;
729
905
  disabled: _angular_core.InputSignal<boolean>;
730
906
  error: _angular_core.InputSignal<boolean>;
731
907
  minWidth: _angular_core.InputSignal<string>;
@@ -800,7 +976,7 @@ declare class UniBoxComponent {
800
976
  textAlign: _angular_core.InputSignal<OptionalTextAlign>;
801
977
  wrapItems: _angular_core.InputSignal<OptionalWrap>;
802
978
  zIndex: _angular_core.InputSignal<ZIndexableElements>;
803
- get boxClassName(): string;
979
+ protected readonly boxClassName: _angular_core.Signal<string>;
804
980
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<UniBoxComponent, never>;
805
981
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<UniBoxComponent, "div[uni-box-layout], Box, div[box-layout]", never, { "color": { "alias": "color"; "required": false; "isSignal": true; }; "backgroundColor": { "alias": "backgroundColor"; "required": false; "isSignal": true; }; "borderRadius": { "alias": "borderRadius"; "required": false; "isSignal": true; }; "borderRadiusLeft": { "alias": "borderRadiusLeft"; "required": false; "isSignal": true; }; "borderRadiusRight": { "alias": "borderRadiusRight"; "required": false; "isSignal": true; }; "borderRadiusTop": { "alias": "borderRadiusTop"; "required": false; "isSignal": true; }; "borderRadiusBottom": { "alias": "borderRadiusBottom"; "required": false; "isSignal": true; }; "padding": { "alias": "padding"; "required": false; "isSignal": true; }; "paddingHorizontal": { "alias": "paddingHorizontal"; "required": false; "isSignal": true; }; "paddingVertical": { "alias": "paddingVertical"; "required": false; "isSignal": true; }; "paddingLeft": { "alias": "paddingLeft"; "required": false; "isSignal": true; }; "paddingRight": { "alias": "paddingRight"; "required": false; "isSignal": true; }; "paddingTop": { "alias": "paddingTop"; "required": false; "isSignal": true; }; "paddingBottom": { "alias": "paddingBottom"; "required": false; "isSignal": true; }; "border": { "alias": "border"; "required": false; "isSignal": true; }; "borderTop": { "alias": "borderTop"; "required": false; "isSignal": true; }; "borderBottom": { "alias": "borderBottom"; "required": false; "isSignal": true; }; "borderLeft": { "alias": "borderLeft"; "required": false; "isSignal": true; }; "borderRight": { "alias": "borderRight"; "required": false; "isSignal": true; }; "dashBorder": { "alias": "dashBorder"; "required": false; "isSignal": true; }; "alignSelf": { "alias": "alignSelf"; "required": false; "isSignal": true; }; "alignItems": { "alias": "alignItems"; "required": false; "isSignal": true; }; "alignContent": { "alias": "alignContent"; "required": false; "isSignal": true; }; "justifyContent": { "alias": "justifyContent"; "required": false; "isSignal": true; }; "grow": { "alias": "grow"; "required": false; "isSignal": true; }; "display": { "alias": "display"; "required": false; "isSignal": true; }; "position": { "alias": "position"; "required": false; "isSignal": true; }; "inset": { "alias": "inset"; "required": false; "isSignal": true; }; "height": { "alias": "height"; "required": false; "isSignal": true; }; "minHeight": { "alias": "minHeight"; "required": false; "isSignal": true; }; "maxHeight": { "alias": "maxHeight"; "required": false; "isSignal": true; }; "width": { "alias": "width"; "required": false; "isSignal": true; }; "minWidth": { "alias": "minWidth"; "required": false; "isSignal": true; }; "maxWidth": { "alias": "maxWidth"; "required": false; "isSignal": true; }; "ignoreDir": { "alias": "ignoreDir"; "required": false; "isSignal": true; }; "gridArea": { "alias": "gridArea"; "required": false; "isSignal": true; }; "gridColumn": { "alias": "gridColumn"; "required": false; "isSignal": true; }; "gridRow": { "alias": "gridRow"; "required": false; "isSignal": true; }; "overflow": { "alias": "overflow"; "required": false; "isSignal": true; }; "elevation": { "alias": "elevation"; "required": false; "isSignal": true; }; "shadow": { "alias": "shadow"; "required": false; "isSignal": true; }; "gap": { "alias": "gap"; "required": false; "isSignal": true; }; "fullWidth": { "alias": "fullWidth"; "required": false; "isSignal": true; }; "fullHeight": { "alias": "fullHeight"; "required": false; "isSignal": true; }; "flexDirection": { "alias": "flexDirection"; "required": false; "isSignal": true; }; "textAlign": { "alias": "textAlign"; "required": false; "isSignal": true; }; "wrapItems": { "alias": "wrapItems"; "required": false; "isSignal": true; }; "zIndex": { "alias": "zIndex"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
806
982
  }
@@ -815,23 +991,22 @@ declare class UniCenterComponent extends UniBoxComponent {
815
991
  }
816
992
 
817
993
  declare class UniGridAreaComponent {
818
- area: string;
819
- get className(): string;
994
+ area: _angular_core.InputSignal<string>;
995
+ protected readonly className: _angular_core.Signal<string>;
820
996
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<UniGridAreaComponent, never>;
821
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<UniGridAreaComponent, "GridArea", never, { "area": { "alias": "area"; "required": false; }; }, {}, never, ["*"], true, never>;
997
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<UniGridAreaComponent, "GridArea", never, { "area": { "alias": "area"; "required": true; "isSignal": true; }; }, {}, never, ["*"], true, never>;
822
998
  }
823
999
 
824
1000
  declare class UniGridComponent extends UniBoxComponent {
825
1001
  display: _angular_core.InputSignal<OptionalDisplay>;
826
- constructor();
827
- templateAreas?: string;
828
- templateColumns?: string;
829
- templateRows?: string;
830
- outline?: Thickness;
831
- outlineColor?: Variant;
832
- get className(): string;
1002
+ templateAreas: _angular_core.InputSignal<string>;
1003
+ templateColumns: _angular_core.InputSignal<string>;
1004
+ templateRows: _angular_core.InputSignal<string>;
1005
+ outline: _angular_core.InputSignal<Thickness>;
1006
+ outlineColor: _angular_core.InputSignal<Variant>;
1007
+ protected readonly gridClassName: _angular_core.Signal<string>;
833
1008
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<UniGridComponent, never>;
834
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<UniGridComponent, "div[uni-grid-layout], Grid, div[grid-layout]", never, { "display": { "alias": "display"; "required": false; "isSignal": true; }; "templateAreas": { "alias": "templateAreas"; "required": false; }; "templateColumns": { "alias": "templateColumns"; "required": false; }; "templateRows": { "alias": "templateRows"; "required": false; }; "outline": { "alias": "outline"; "required": false; }; "outlineColor": { "alias": "outlineColor"; "required": false; }; }, {}, never, ["*"], true, never>;
1009
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<UniGridComponent, "div[uni-grid-layout], Grid, div[grid-layout]", never, { "display": { "alias": "display"; "required": false; "isSignal": true; }; "templateAreas": { "alias": "templateAreas"; "required": false; "isSignal": true; }; "templateColumns": { "alias": "templateColumns"; "required": false; "isSignal": true; }; "templateRows": { "alias": "templateRows"; "required": false; "isSignal": true; }; "outline": { "alias": "outline"; "required": false; "isSignal": true; }; "outlineColor": { "alias": "outlineColor"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
835
1010
  }
836
1011
 
837
1012
  declare class UniRowComponent extends UniBoxComponent {
@@ -877,14 +1052,24 @@ interface MenuItemWithTemplate<T = any> extends BaseMenuItem {
877
1052
  type MenuItem<T = any> = MenuItemWithLabel | MenuItemWithTemplate<T>;
878
1053
 
879
1054
  declare class UniMenuComponent {
880
- private cdr;
881
1055
  menuItems: _angular_core.InputSignal<MenuItem[]>;
882
1056
  activeItem: _angular_core.InputSignal<MenuItem>;
883
- placement: _angular_core.InputSignal<Placement$1>;
1057
+ placement: _angular_core.InputSignal<Placement>;
884
1058
  menuItemClicked: _angular_core.OutputEmitterRef<MenuItem>;
885
1059
  TriggerClassName: string;
886
- get className(): string;
1060
+ private itemComponents;
1061
+ private dropdownComponent;
1062
+ /** Which item receives focus when the menu opens (ArrowUp opens onto the last item). */
1063
+ private pendingFocus;
1064
+ protected readonly className: _angular_core.Signal<string>;
887
1065
  handleMenuItemClick(item: MenuItem, dropdown: UniDropdownComponent): void;
1066
+ /** Enabled items participating in keyboard navigation. */
1067
+ private get navigableItems();
1068
+ onOpened(): void;
1069
+ onTriggerKeydown(event: KeyboardEvent): void;
1070
+ onMenuKeydown(event: KeyboardEvent, dropdown: UniDropdownComponent): void;
1071
+ /** First-character matching, starting after the focused item and wrapping. */
1072
+ private typeahead;
888
1073
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<UniMenuComponent, never>;
889
1074
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<UniMenuComponent, "Menu, uni-menu", never, { "menuItems": { "alias": "menuItems"; "required": true; "isSignal": true; }; "activeItem": { "alias": "activeItem"; "required": false; "isSignal": true; }; "placement": { "alias": "placement"; "required": false; "isSignal": true; }; }, { "menuItemClicked": "menuItemClicked"; }, never, ["*"], true, never>;
890
1075
  }
@@ -895,10 +1080,9 @@ declare class UniMultiSelectComponent<T = unknown> {
895
1080
  updates: _angular_core.OutputEmitterRef<T[]>;
896
1081
  flexDirection: _angular_core.InputSignal<"column" | "row" | "column-reverse" | "row-reverse">;
897
1082
  checkboxGap: _angular_core.InputSignal<NullableSize>;
898
- optionsWithSelections: Option<T>[];
899
- values: unknown[];
900
- className: string;
901
- constructor();
1083
+ protected readonly values: _angular_core.Signal<unknown[]>;
1084
+ protected readonly optionsWithSelections: _angular_core.Signal<Option<T>[]>;
1085
+ protected readonly className: string;
902
1086
  handleCheck(checked: boolean, value: T): void;
903
1087
  selectAll(): void;
904
1088
  deselectAll(): void;
@@ -919,12 +1103,19 @@ interface UniMultiSelectDropdownOptions {
919
1103
  }
920
1104
 
921
1105
  declare class UniMultiSelectDropdownComponent<T = unknown> extends BaseComponent<UniMultiSelectDropdownOptions> implements FormValueControl<T[]> {
922
- className: string;
1106
+ protected readonly className: string;
923
1107
  readonly value: _angular_core.ModelSignal<T[]>;
924
1108
  readonly disabled: _angular_core.InputSignal<boolean>;
925
1109
  readonly touched: _angular_core.ModelSignal<boolean>;
926
1110
  readonly invalid: _angular_core.InputSignal<boolean>;
927
1111
  readonly dirty: _angular_core.InputSignal<boolean>;
1112
+ /** Synced from required() validators by the Signal Forms [field] directive. */
1113
+ readonly required: _angular_core.InputSignal<boolean>;
1114
+ /**
1115
+ * Id(s) of external element(s) describing this control — typically your
1116
+ * app-rendered error message — exposed as aria-describedby.
1117
+ */
1118
+ readonly ariaDescribedBy: _angular_core.InputSignal<string>;
928
1119
  readonly options: _angular_core.InputSignal<Options<T>>;
929
1120
  readonly placeholder: _angular_core.InputSignal<string>;
930
1121
  protected readonly query: _angular_core.WritableSignal<string>;
@@ -933,14 +1124,14 @@ declare class UniMultiSelectDropdownComponent<T = unknown> extends BaseComponent
933
1124
  protected readonly showError: _angular_core.Signal<boolean>;
934
1125
  protected readonly textColor: _angular_core.Signal<_uni_design_system_uni_core.TextColor>;
935
1126
  triggerClass: string;
936
- searchInputClass: string;
937
- constructor();
1127
+ protected readonly searchInputClass: _angular_core.Signal<string>;
1128
+ protected handleQueryInput(event: Event): void;
938
1129
  selectAll(): void;
939
1130
  deselectAll(): void;
940
1131
  protected isOptionSelected(option: Option<T>): _angular_core.Signal<boolean>;
941
1132
  toggleOption(option: Option<T>, checked: boolean): void;
942
1133
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<UniMultiSelectDropdownComponent<any>, never>;
943
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<UniMultiSelectDropdownComponent<any>, "uni-multi-select-dropdown, MultiSelectDropdown", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "touched": { "alias": "touched"; "required": false; "isSignal": true; }; "invalid": { "alias": "invalid"; "required": false; "isSignal": true; }; "dirty": { "alias": "dirty"; "required": false; "isSignal": true; }; "options": { "alias": "options"; "required": true; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "touched": "touchedChange"; }, never, never, true, never>;
1134
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<UniMultiSelectDropdownComponent<any>, "uni-multi-select-dropdown, MultiSelectDropdown", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "touched": { "alias": "touched"; "required": false; "isSignal": true; }; "invalid": { "alias": "invalid"; "required": false; "isSignal": true; }; "dirty": { "alias": "dirty"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "ariaDescribedBy": { "alias": "ariaDescribedBy"; "required": false; "isSignal": true; }; "options": { "alias": "options"; "required": true; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "touched": "touchedChange"; }, never, never, true, never>;
944
1135
  }
945
1136
 
946
1137
  interface UniNotificationBadgeOptions {
@@ -956,11 +1147,18 @@ declare class UniNotificationBadgeComponent extends BaseComponent<UniNotificatio
956
1147
  color: _angular_core.InputSignal<Variant>;
957
1148
  position: _angular_core.InputSignal<"top-right" | "top-left" | "bottom-right" | "bottom-left">;
958
1149
  show: _angular_core.InputSignal<boolean>;
1150
+ /**
1151
+ * Screen-reader text for the badge (e.g. "5 unread messages"). Without it
1152
+ * a sensible default is announced; a bare number or dot carries no meaning.
1153
+ */
1154
+ ariaLabel: _angular_core.InputSignal<string>;
1155
+ protected readonly srOnlyClass: string;
1156
+ protected readonly announcement: _angular_core.Signal<string>;
959
1157
  displayValue: _angular_core.Signal<string>;
960
1158
  shouldShow: _angular_core.Signal<boolean>;
961
- get className(): string;
1159
+ protected readonly className: _angular_core.Signal<string>;
962
1160
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<UniNotificationBadgeComponent, never>;
963
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<UniNotificationBadgeComponent, "uni-notification-badge", never, { "count": { "alias": "count"; "required": false; "isSignal": true; }; "maxCount": { "alias": "maxCount"; "required": false; "isSignal": true; }; "badgeVariant": { "alias": "badgeVariant"; "required": false; "isSignal": true; }; "color": { "alias": "color"; "required": false; "isSignal": true; }; "position": { "alias": "position"; "required": false; "isSignal": true; }; "show": { "alias": "show"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
1161
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<UniNotificationBadgeComponent, "uni-notification-badge", never, { "count": { "alias": "count"; "required": false; "isSignal": true; }; "maxCount": { "alias": "maxCount"; "required": false; "isSignal": true; }; "badgeVariant": { "alias": "badgeVariant"; "required": false; "isSignal": true; }; "color": { "alias": "color"; "required": false; "isSignal": true; }; "position": { "alias": "position"; "required": false; "isSignal": true; }; "show": { "alias": "show"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
964
1162
  }
965
1163
 
966
1164
  interface UniAlertOptions {
@@ -976,7 +1174,7 @@ declare class UniAlertComponent extends BaseComponent<UniAlertOptions> implement
976
1174
  iconName: _angular_core.InputSignal<string>;
977
1175
  symbolName: _angular_core.InputSignal<string>;
978
1176
  useVariant: _angular_core.InputSignal<boolean>;
979
- showing: EventEmitter<boolean>;
1177
+ showing: _angular_core.OutputEmitterRef<boolean>;
980
1178
  alertRef?: ElementRef<HTMLDialogElement>;
981
1179
  private readonly alertState;
982
1180
  private readonly effectiveVariant;
@@ -993,10 +1191,10 @@ declare class UniAlertComponent extends BaseComponent<UniAlertOptions> implement
993
1191
 
994
1192
  declare class ConfirmationDialogComponent {
995
1193
  show: _angular_core.InputSignal<boolean>;
996
- confirmation?: Confirmation;
997
- showing: EventEmitter<any>;
1194
+ confirmation: _angular_core.InputSignal<Confirmation>;
1195
+ showing: _angular_core.OutputEmitterRef<boolean>;
998
1196
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<ConfirmationDialogComponent, never>;
999
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<ConfirmationDialogComponent, "uni-confirmation-dialog, Confirmation", never, { "show": { "alias": "show"; "required": false; "isSignal": true; }; "confirmation": { "alias": "confirmation"; "required": false; }; }, { "showing": "showing"; }, never, never, true, never>;
1197
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ConfirmationDialogComponent, "uni-confirmation-dialog, Confirmation", never, { "show": { "alias": "show"; "required": false; "isSignal": true; }; "confirmation": { "alias": "confirmation"; "required": false; "isSignal": true; }; }, { "showing": "showing"; }, never, never, true, never>;
1000
1198
  }
1001
1199
 
1002
1200
  declare class NotificationsComponent {
@@ -1024,7 +1222,7 @@ interface UniSnackbarOptions {
1024
1222
  autoCloseDelay: number;
1025
1223
  }
1026
1224
 
1027
- declare class UniSnackbarComponent extends BaseComponent<UniSnackbarOptions> implements AfterViewInit, OnChanges {
1225
+ declare class UniSnackbarComponent extends BaseComponent<UniSnackbarOptions> implements AfterViewInit {
1028
1226
  timer: {
1029
1227
  start: (durationMs: number, onComplete?: () => void) => void;
1030
1228
  pause: () => void;
@@ -1035,20 +1233,20 @@ declare class UniSnackbarComponent extends BaseComponent<UniSnackbarOptions> imp
1035
1233
  isActive: _angular_core.Signal<boolean>;
1036
1234
  secondsRemaining: _angular_core.Signal<number>;
1037
1235
  };
1038
- snackbarClass?: string;
1039
- show?: boolean;
1236
+ /** Two-way bindable open state: [(show)]. */
1237
+ show: _angular_core.ModelSignal<boolean>;
1040
1238
  iconName: _angular_core.InputSignal<string>;
1041
1239
  symbolName: _angular_core.InputSignal<string>;
1042
1240
  timeout: _angular_core.InputSignal<string | number>;
1043
1241
  actionLabel: _angular_core.InputSignal<string>;
1044
1242
  useVariant: _angular_core.InputSignal<boolean>;
1045
- action: EventEmitter<any>;
1046
- showing: EventEmitter<any>;
1047
- snackbarRef?: ElementRef;
1243
+ action: _angular_core.OutputEmitterRef<void>;
1244
+ showing: _angular_core.OutputEmitterRef<boolean>;
1245
+ snackbarRef: _angular_core.Signal<ElementRef<any>>;
1048
1246
  private get _snackbar();
1049
1247
  constructor();
1248
+ protected readonly snackbarClass: _angular_core.Signal<string>;
1050
1249
  fadeOut: string;
1051
- ngOnChanges(changes: SimpleChanges): void;
1052
1250
  ngAfterViewInit(): void;
1053
1251
  private get _timeout();
1054
1252
  open(): void;
@@ -1056,7 +1254,7 @@ declare class UniSnackbarComponent extends BaseComponent<UniSnackbarOptions> imp
1056
1254
  protected pauseTimer(): void;
1057
1255
  protected resumeTimer(): void;
1058
1256
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<UniSnackbarComponent, never>;
1059
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<UniSnackbarComponent, "uni-snackbar, Snackbar", never, { "show": { "alias": "show"; "required": false; }; "iconName": { "alias": "iconName"; "required": false; "isSignal": true; }; "symbolName": { "alias": "symbolName"; "required": false; "isSignal": true; }; "timeout": { "alias": "timeout"; "required": false; "isSignal": true; }; "actionLabel": { "alias": "actionLabel"; "required": false; "isSignal": true; }; "useVariant": { "alias": "useVariant"; "required": false; "isSignal": true; }; }, { "action": "action"; "showing": "showing"; }, never, ["*"], true, never>;
1257
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<UniSnackbarComponent, "uni-snackbar, Snackbar", never, { "show": { "alias": "show"; "required": false; "isSignal": true; }; "iconName": { "alias": "iconName"; "required": false; "isSignal": true; }; "symbolName": { "alias": "symbolName"; "required": false; "isSignal": true; }; "timeout": { "alias": "timeout"; "required": false; "isSignal": true; }; "actionLabel": { "alias": "actionLabel"; "required": false; "isSignal": true; }; "useVariant": { "alias": "useVariant"; "required": false; "isSignal": true; }; }, { "show": "showChange"; "action": "action"; "showing": "showing"; }, never, ["*"], true, never>;
1060
1258
  }
1061
1259
 
1062
1260
  interface UniPaginatorOptions {
@@ -1076,9 +1274,9 @@ declare class UniPaginatorComponent<T> extends BaseComponent<UniPaginatorOptions
1076
1274
  showPageSize: _angular_core.InputSignal<boolean>;
1077
1275
  showPageJumper: _angular_core.InputSignal<boolean>;
1078
1276
  showPageNumbers: _angular_core.InputSignal<boolean>;
1079
- inputClass: string;
1080
- pageClass: string;
1081
1277
  constructor();
1278
+ protected readonly inputClass: _angular_core.Signal<string>;
1279
+ protected readonly pageClass: _angular_core.Signal<string>;
1082
1280
  updatePageSize(event: Event): void;
1083
1281
  jumpToPage(event: Event): void;
1084
1282
  isNumber(page: unknown): page is number;
@@ -1086,30 +1284,25 @@ declare class UniPaginatorComponent<T> extends BaseComponent<UniPaginatorOptions
1086
1284
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<UniPaginatorComponent<any>, "uni-paginator, Paginator", never, { "datasource": { "alias": "datasource"; "required": false; "isSignal": true; }; "initPageSize": { "alias": "initPageSize"; "required": false; "isSignal": true; }; "showPageSize": { "alias": "showPageSize"; "required": false; "isSignal": true; }; "showPageJumper": { "alias": "showPageJumper"; "required": false; "isSignal": true; }; "showPageNumbers": { "alias": "showPageNumbers"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
1087
1285
  }
1088
1286
 
1089
- declare class UniPopoverComponent implements OnInit, OnDestroy {
1287
+ declare class UniPopoverComponent {
1090
1288
  private renderer;
1091
1289
  private theme;
1092
- private delay;
1093
- private showing;
1094
- private clickListener?;
1095
1290
  placement: _angular_core.InputSignal<Placement>;
1291
+ /** Light-dismiss on outside click / Escape (native popover="auto"). */
1096
1292
  autoClose: _angular_core.InputSignal<boolean>;
1097
- triggerRef: _angular_core.Signal<ElementRef<any>>;
1098
- popoverRef: _angular_core.Signal<ElementRef<any>>;
1099
- arrowRef: _angular_core.Signal<ElementRef<any>>;
1100
- private get _trigger();
1101
- private get _popover();
1102
- private get _arrow();
1103
- ngOnInit(): void;
1293
+ readonly panelId: string;
1294
+ private readonly anchorName;
1295
+ private readonly showing;
1296
+ private triggerRef;
1297
+ private panelRef;
1298
+ constructor();
1299
+ protected onToggle(event: Event): void;
1104
1300
  showPopover(): void;
1105
1301
  hidePopover(): void;
1106
1302
  togglePopover(event: MouseEvent): void;
1107
- popoverClassName: string;
1108
- arrowClassName: string;
1109
- private showClassName;
1110
- private arrowClasses;
1111
- private setPosition;
1112
- ngOnDestroy(): void;
1303
+ protected readonly triggerClassName: string;
1304
+ protected readonly popoverClassName: _angular_core.Signal<string>;
1305
+ protected readonly arrowClassName: _angular_core.Signal<string>;
1113
1306
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<UniPopoverComponent, never>;
1114
1307
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<UniPopoverComponent, "uni-popover, Popover", never, { "placement": { "alias": "placement"; "required": false; "isSignal": true; }; "autoClose": { "alias": "autoClose"; "required": false; "isSignal": true; }; }, {}, never, ["[trigger]", "*"], true, never>;
1115
1308
  }
@@ -1120,20 +1313,24 @@ declare class UniProgressBarComponent {
1120
1313
  width: _angular_core.InputSignal<number>;
1121
1314
  height: _angular_core.InputSignal<number>;
1122
1315
  percent: _angular_core.InputSignal<number>;
1316
+ /** Accessible name describing what is progressing (e.g. "Upload progress"). */
1317
+ ariaLabel: _angular_core.InputSignal<string>;
1123
1318
  stroke: number;
1124
- get className(): string;
1319
+ protected readonly className: _angular_core.Signal<string>;
1125
1320
  protected readonly Math: Math;
1126
1321
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<UniProgressBarComponent, never>;
1127
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<UniProgressBarComponent, "uni-progress-bar, ProgressBar", never, { "width": { "alias": "width"; "required": false; "isSignal": true; }; "height": { "alias": "height"; "required": false; "isSignal": true; }; "percent": { "alias": "percent"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
1322
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<UniProgressBarComponent, "uni-progress-bar, ProgressBar", never, { "width": { "alias": "width"; "required": false; "isSignal": true; }; "height": { "alias": "height"; "required": false; "isSignal": true; }; "percent": { "alias": "percent"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
1128
1323
  }
1129
1324
 
1130
1325
  declare class UniProgressGaugeComponent extends BaseComponent {
1131
1326
  percent: _angular_core.InputSignal<number>;
1132
- textStyle: _angular_core.Signal<string | number>;
1327
+ /** Accessible name describing what is progressing. */
1328
+ ariaLabel: _angular_core.InputSignal<string>;
1329
+ textStyle: _angular_core.Signal<string | number | _uni_design_system_uni_core.StyleExpression>;
1133
1330
  private progress;
1134
- get className(): string;
1331
+ protected readonly className: _angular_core.Signal<string>;
1135
1332
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<UniProgressGaugeComponent, never>;
1136
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<UniProgressGaugeComponent, "uni-progress-gauge, ProgressGauge", never, { "percent": { "alias": "percent"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
1333
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<UniProgressGaugeComponent, "uni-progress-gauge, ProgressGauge", never, { "percent": { "alias": "percent"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
1137
1334
  }
1138
1335
 
1139
1336
  interface UniRadioOption {
@@ -1158,24 +1355,33 @@ interface UniRadioOptions {
1158
1355
  }
1159
1356
 
1160
1357
  declare class UniRadioComponent extends BaseComponent<UniRadioOptions> implements FormValueControl<string> {
1161
- radioGroupClass: string;
1162
- radioOptionClass: string;
1163
- radioInputClass: string;
1164
1358
  readonly value: _angular_core.ModelSignal<string>;
1165
1359
  readonly disabled: _angular_core.InputSignal<boolean>;
1166
1360
  readonly touched: _angular_core.ModelSignal<boolean>;
1167
1361
  readonly invalid: _angular_core.InputSignal<boolean>;
1168
1362
  readonly dirty: _angular_core.InputSignal<boolean>;
1363
+ /** Synced from required() validators by the Signal Forms [field] directive. */
1364
+ readonly required: _angular_core.InputSignal<boolean>;
1365
+ /**
1366
+ * Id(s) of external element(s) describing this control — typically your
1367
+ * app-rendered error message — exposed as aria-describedby.
1368
+ */
1369
+ readonly ariaDescribedBy: _angular_core.InputSignal<string>;
1169
1370
  readonly options: _angular_core.InputSignal<UniRadioOption[]>;
1170
1371
  readonly label: _angular_core.InputSignal<string>;
1171
1372
  readonly name: _angular_core.InputSignal<string>;
1373
+ /** Links the group label to the radiogroup container. */
1374
+ protected readonly groupLabelId: string;
1172
1375
  protected readonly showError: _angular_core.Signal<boolean>;
1173
1376
  markAsTouched(): void;
1174
- constructor();
1377
+ private readonly metrics;
1378
+ protected readonly radioGroupClass: string;
1379
+ protected readonly radioOptionClass: _angular_core.Signal<string>;
1380
+ protected readonly radioInputClass: _angular_core.Signal<string>;
1175
1381
  handleRadioChange(optionValue: string): void;
1176
1382
  getThemeColor(token: ColorToken): string;
1177
1383
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<UniRadioComponent, never>;
1178
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<UniRadioComponent, "uni-radio, Radio", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "touched": { "alias": "touched"; "required": false; "isSignal": true; }; "invalid": { "alias": "invalid"; "required": false; "isSignal": true; }; "dirty": { "alias": "dirty"; "required": false; "isSignal": true; }; "options": { "alias": "options"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "name": { "alias": "name"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "touched": "touchedChange"; }, never, never, true, never>;
1384
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<UniRadioComponent, "uni-radio, Radio", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "touched": { "alias": "touched"; "required": false; "isSignal": true; }; "invalid": { "alias": "invalid"; "required": false; "isSignal": true; }; "dirty": { "alias": "dirty"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "ariaDescribedBy": { "alias": "ariaDescribedBy"; "required": false; "isSignal": true; }; "options": { "alias": "options"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "name": { "alias": "name"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "touched": "touchedChange"; }, never, never, true, never>;
1179
1385
  }
1180
1386
 
1181
1387
  /**
@@ -1216,7 +1422,7 @@ declare class UniScrollAreaComponent {
1216
1422
  scrollable: _angular_core.OutputEmitterRef<boolean>;
1217
1423
  scrollToBottom(): void;
1218
1424
  scrollToTop(): void;
1219
- get className(): string;
1425
+ protected readonly className: _angular_core.Signal<string>;
1220
1426
  protected viewportClassName: _angular_core.Signal<string>;
1221
1427
  protected contentClassName: _angular_core.Signal<string>;
1222
1428
  constructor();
@@ -1229,7 +1435,7 @@ declare class UniSearchInputComponent {
1229
1435
  width: _angular_core.InputSignal<string | number>;
1230
1436
  change: _angular_core.OutputEmitterRef<string>;
1231
1437
  search: _angular_core.OutputEmitterRef<string>;
1232
- get className(): string;
1438
+ protected readonly className: _angular_core.Signal<string>;
1233
1439
  handleSearchInput(searchInput: string): void;
1234
1440
  handleSearch(searchInput: string | undefined): void;
1235
1441
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<UniSearchInputComponent, never>;
@@ -1242,8 +1448,17 @@ declare class UniSelectComponent<T> implements FormValueControl<T | null> {
1242
1448
  readonly touched: _angular_core.ModelSignal<boolean>;
1243
1449
  readonly invalid: _angular_core.InputSignal<boolean>;
1244
1450
  readonly dirty: _angular_core.InputSignal<boolean>;
1451
+ /** Synced from required() validators by the Signal Forms [field] directive. */
1452
+ readonly required: _angular_core.InputSignal<boolean>;
1453
+ /**
1454
+ * Id(s) of external element(s) describing this control — typically your
1455
+ * app-rendered error message — exposed as aria-describedby.
1456
+ */
1457
+ readonly ariaDescribedBy: _angular_core.InputSignal<string>;
1245
1458
  readonly options: _angular_core.InputSignal<Options<T>>;
1246
1459
  readonly placeholder: _angular_core.InputSignal<string>;
1460
+ /** Accessible name for the select; a placeholder is not a label. */
1461
+ readonly ariaLabel: _angular_core.InputSignal<string>;
1247
1462
  protected readonly UNSELECTED = -1;
1248
1463
  /**
1249
1464
  * We use the index as the HTML value to avoid issues with
@@ -1255,14 +1470,15 @@ declare class UniSelectComponent<T> implements FormValueControl<T | null> {
1255
1470
  selectClass: string;
1256
1471
  arrowClass: string;
1257
1472
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<UniSelectComponent<any>, never>;
1258
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<UniSelectComponent<any>, "uni-select, SelectInput", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "touched": { "alias": "touched"; "required": false; "isSignal": true; }; "invalid": { "alias": "invalid"; "required": false; "isSignal": true; }; "dirty": { "alias": "dirty"; "required": false; "isSignal": true; }; "options": { "alias": "options"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "touched": "touchedChange"; }, never, never, true, never>;
1473
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<UniSelectComponent<any>, "uni-select, SelectInput", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "touched": { "alias": "touched"; "required": false; "isSignal": true; }; "invalid": { "alias": "invalid"; "required": false; "isSignal": true; }; "dirty": { "alias": "dirty"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "ariaDescribedBy": { "alias": "ariaDescribedBy"; "required": false; "isSignal": true; }; "options": { "alias": "options"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "touched": "touchedChange"; }, never, never, true, never>;
1259
1474
  }
1260
1475
 
1261
1476
  declare class UniSortHeaderComponent<T> {
1262
1477
  column: _angular_core.InputSignal<keyof T>;
1263
1478
  datasource: _angular_core.InputSignal<UniDatasource<T>>;
1479
+ protected readonly buttonClass: string;
1264
1480
  direction: _angular_core.Signal<SortDirection>;
1265
- get className(): string;
1481
+ protected readonly className: _angular_core.Signal<string>;
1266
1482
  cycleSort(): void;
1267
1483
  sortDatasource(direction: SortDirection): void;
1268
1484
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<UniSortHeaderComponent<any>, never>;
@@ -1285,7 +1501,7 @@ declare class UniSymbolComponent extends BaseComponent<SymbolOptions> {
1285
1501
  weight: _angular_core.InputSignal<SymbolWeight>;
1286
1502
  grade: _angular_core.InputSignal<SymbolGrade>;
1287
1503
  opticalSize: _angular_core.InputSignal<number>;
1288
- get className(): string;
1504
+ protected readonly className: _angular_core.Signal<string>;
1289
1505
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<UniSymbolComponent, never>;
1290
1506
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<UniSymbolComponent, "uni-symbol, Symbol", never, { "name": { "alias": "name"; "required": true; "isSignal": true; }; "fill": { "alias": "fill"; "required": false; "isSignal": true; }; "weight": { "alias": "weight"; "required": false; "isSignal": true; }; "grade": { "alias": "grade"; "required": false; "isSignal": true; }; "opticalSize": { "alias": "opticalSize"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
1291
1507
  }
@@ -1308,11 +1524,62 @@ declare class UniTextComponent {
1308
1524
  nowrap: _angular_core.InputSignal<boolean>;
1309
1525
  maxWidth: _angular_core.InputSignal<number>;
1310
1526
  ellipsis: _angular_core.InputSignal<boolean>;
1311
- get className(): string;
1527
+ protected readonly className: _angular_core.Signal<string>;
1312
1528
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<UniTextComponent, never>;
1313
1529
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<UniTextComponent, "uni-text, Text", never, { "typeface": { "alias": "typeface"; "required": false; "isSignal": true; }; "color": { "alias": "color"; "required": false; "isSignal": true; }; "display": { "alias": "display"; "required": false; "isSignal": true; }; "align": { "alias": "align"; "required": false; "isSignal": true; }; "nowrap": { "alias": "nowrap"; "required": false; "isSignal": true; }; "maxWidth": { "alias": "maxWidth"; "required": false; "isSignal": true; }; "ellipsis": { "alias": "ellipsis"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
1314
1530
  }
1315
1531
 
1532
+ interface Preset {
1533
+ label: string;
1534
+ config: BrandPaletteConfig;
1535
+ }
1536
+ declare class UniThemeBuilderComponent {
1537
+ protected theme: ThemeService;
1538
+ protected readonly schemes: ColorScheme[];
1539
+ protected readonly categories: ColorCategory[];
1540
+ protected readonly variants: Variant[];
1541
+ protected readonly sizes: readonly ["sm", "md", "lg", "xl"];
1542
+ protected readonly swatches: {
1543
+ label: string;
1544
+ token: ColorToken;
1545
+ on: ColorToken;
1546
+ }[];
1547
+ protected readonly presets: Preset[];
1548
+ protected seed: _angular_core.WritableSignal<string>;
1549
+ protected scheme: _angular_core.WritableSignal<ColorScheme>;
1550
+ protected category: _angular_core.WritableSignal<ColorCategory>;
1551
+ protected floor: _angular_core.WritableSignal<number>;
1552
+ protected mode: _angular_core.WritableSignal<"light" | "dark">;
1553
+ protected pinPrimary: _angular_core.WritableSignal<boolean>;
1554
+ protected primaryHex: _angular_core.WritableSignal<string>;
1555
+ protected pinSecondary: _angular_core.WritableSignal<boolean>;
1556
+ protected secondaryHex: _angular_core.WritableSignal<string>;
1557
+ /** Soft brand targets carried by the active preset (cleared on seed edits). */
1558
+ protected targets: _angular_core.WritableSignal<Partial<Record<_uni_design_system_uni_core.BrandRole, string>>>;
1559
+ constructor();
1560
+ protected config: _angular_core.Signal<BrandPaletteConfig>;
1561
+ protected snippet: _angular_core.Signal<string>;
1562
+ protected color(token: ColorToken): string;
1563
+ private apply;
1564
+ protected setSeed(v: string): void;
1565
+ protected setScheme(v: ColorScheme): void;
1566
+ protected setCategory(v: ColorCategory): void;
1567
+ protected setFloor(v: string): void;
1568
+ protected setMode(v: 'light' | 'dark'): void;
1569
+ protected setPinPrimary(v: boolean): void;
1570
+ protected setPrimaryHex(v: string): void;
1571
+ protected setPinSecondary(v: boolean): void;
1572
+ protected setSecondaryHex(v: string): void;
1573
+ protected applyPreset(config: BrandPaletteConfig): void;
1574
+ protected reset(): void;
1575
+ private c;
1576
+ protected shell: _angular_core.Signal<string>;
1577
+ protected controls: _angular_core.Signal<string>;
1578
+ protected preview: _angular_core.Signal<string>;
1579
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<UniThemeBuilderComponent, never>;
1580
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<UniThemeBuilderComponent, "uni-theme-builder", never, {}, {}, never, never, true, never>;
1581
+ }
1582
+
1316
1583
  interface UniToggleOptions {
1317
1584
  /**
1318
1585
  * The size of the toggle switch
@@ -1321,20 +1588,28 @@ interface UniToggleOptions {
1321
1588
  }
1322
1589
 
1323
1590
  declare class UniToggleComponent extends BaseComponent<UniToggleOptions> implements FormCheckboxControl {
1324
- toggleLabel: string;
1325
- toggleInput: string;
1326
1591
  readonly checked: _angular_core.ModelSignal<boolean>;
1327
1592
  readonly disabled: _angular_core.InputSignal<boolean>;
1328
1593
  readonly touched: _angular_core.ModelSignal<boolean>;
1329
1594
  readonly invalid: _angular_core.InputSignal<boolean>;
1330
1595
  readonly dirty: _angular_core.InputSignal<boolean>;
1596
+ /** Synced from required() validators by the Signal Forms [field] directive. */
1597
+ readonly required: _angular_core.InputSignal<boolean>;
1598
+ /**
1599
+ * Id(s) of external element(s) describing this control — typically your
1600
+ * app-rendered error message — exposed as aria-describedby.
1601
+ */
1602
+ readonly ariaDescribedBy: _angular_core.InputSignal<string>;
1331
1603
  readonly label: _angular_core.InputSignal<string>;
1332
1604
  protected readonly showError: _angular_core.Signal<boolean>;
1333
1605
  markAsTouched(): void;
1334
- constructor();
1606
+ handleChange(event: Event): void;
1607
+ private readonly metrics;
1608
+ protected readonly toggleLabel: _angular_core.Signal<string>;
1609
+ protected readonly toggleInput: _angular_core.Signal<string>;
1335
1610
  getThemeColor(token: ColorToken): string;
1336
1611
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<UniToggleComponent, never>;
1337
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<UniToggleComponent, "uni-toggle, Toggle", never, { "checked": { "alias": "checked"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "touched": { "alias": "touched"; "required": false; "isSignal": true; }; "invalid": { "alias": "invalid"; "required": false; "isSignal": true; }; "dirty": { "alias": "dirty"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; }, { "checked": "checkedChange"; "touched": "touchedChange"; }, never, never, true, never>;
1612
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<UniToggleComponent, "uni-toggle, Toggle", never, { "checked": { "alias": "checked"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "touched": { "alias": "touched"; "required": false; "isSignal": true; }; "invalid": { "alias": "invalid"; "required": false; "isSignal": true; }; "dirty": { "alias": "dirty"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "ariaDescribedBy": { "alias": "ariaDescribedBy"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; }, { "checked": "checkedChange"; "touched": "touchedChange"; }, never, never, true, never>;
1338
1613
  }
1339
1614
 
1340
1615
  interface UniTooltipOptions {
@@ -1345,38 +1620,39 @@ interface UniTooltipOptions {
1345
1620
  typeface: TextRole;
1346
1621
  }
1347
1622
 
1348
- declare class UniTooltipComponent extends BaseComponent<UniTooltipOptions> implements OnDestroy {
1623
+ declare class UniTooltipComponent extends BaseComponent<UniTooltipOptions> {
1349
1624
  private elRef;
1350
1625
  private renderer;
1351
1626
  private timer;
1352
- hoverDelayMs: _angular_core.WritableSignal<number>;
1353
1627
  isMouseInside: _angular_core.WritableSignal<boolean>;
1354
- private tooltip;
1355
- private arrow;
1628
+ /** Whether the bubble is currently shown (or fading out). */
1629
+ private readonly visible;
1630
+ readonly tooltipId: string;
1631
+ private readonly anchorName;
1356
1632
  hoverDelay: _angular_core.InputSignal<number>;
1357
1633
  label: _angular_core.InputSignal<string>;
1358
1634
  placement: _angular_core.InputSignal<Placement>;
1359
1635
  inlineText: _angular_core.InputSignal<boolean>;
1360
- appendToBody?: boolean;
1636
+ /** @deprecated The tooltip renders in the native top layer; ignored. */
1637
+ appendToBody: _angular_core.InputSignal<boolean>;
1638
+ private tipRef;
1361
1639
  constructor();
1640
+ onFocusIn(event: FocusEvent): void;
1641
+ onFocusOut(): void;
1642
+ onEscape(event: Event): void;
1362
1643
  toggleTooltip(): void;
1363
1644
  mouseenter(): void;
1364
1645
  mouseleave(): void;
1365
1646
  showTooltip(): void;
1366
1647
  hideTooltip(): void;
1367
- get className(): string;
1648
+ protected onAnimationEnd(event: AnimationEvent): void;
1649
+ protected readonly className: _angular_core.Signal<string>;
1368
1650
  private tooltipFadeIn;
1369
1651
  private tooltipFadeOut;
1370
- private tooltipClassName;
1371
- private arrowClassName;
1372
- private createTooltip;
1373
- private createArrow;
1374
- private setPosition;
1375
- private initializeTooltip;
1376
- private destroyTooltip;
1377
- ngOnDestroy(): void;
1652
+ protected readonly tooltipClassName: _angular_core.Signal<string>;
1653
+ protected readonly arrowClassName: _angular_core.Signal<string>;
1378
1654
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<UniTooltipComponent, never>;
1379
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<UniTooltipComponent, "uni-tooltip, Tooltip", never, { "hoverDelay": { "alias": "hoverDelay"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": true; "isSignal": true; }; "placement": { "alias": "placement"; "required": false; "isSignal": true; }; "inlineText": { "alias": "inlineText"; "required": false; "isSignal": true; }; "appendToBody": { "alias": "appendToBody"; "required": false; }; }, {}, never, ["*"], true, never>;
1655
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<UniTooltipComponent, "uni-tooltip, Tooltip", never, { "hoverDelay": { "alias": "hoverDelay"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": true; "isSignal": true; }; "placement": { "alias": "placement"; "required": false; "isSignal": true; }; "inlineText": { "alias": "inlineText"; "required": false; "isSignal": true; }; "appendToBody": { "alias": "appendToBody"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
1380
1656
  }
1381
1657
 
1382
1658
  declare class BodyRenderDirective implements OnInit {
@@ -1397,5 +1673,5 @@ declare class DragAndDropDirective {
1397
1673
  static ɵdir: _angular_core.ɵɵDirectiveDeclaration<DragAndDropDirective, "[uni-drag-n-drop], [dragAndDrop]", never, {}, { "onFileDropped": "onFileDropped"; }, never, never, true, never>;
1398
1674
  }
1399
1675
 
1400
- export { BodyRenderDirective, ConfirmationDialogComponent, DragAndDropDirective, LocalStorageService, NotificationService, NotificationsComponent, RippleDirective, ThemeService, UNI_THEMES, UniAlertComponent, UniBackgroundComponent, UniBadgeComponent, UniBaseDatasource, UniBoxComponent, UniButtonComponent, UniButtonGroupComponent, UniCardComponent, UniCardContentComponent, UniCardHeaderComponent, UniCenterComponent, UniCheckboxComponent, UniDataSearchComponent, UniDataTableComponent, UniDebounceInputComponent, UniDialogButtonsComponent, UniDialogComponent, UniDialogHeaderComponent, UniDividerComponent, UniDropdownComponent, UniExpandAreaComponent, UniExpandComponent, UniExpandToggleComponent, UniFileDropZoneComponent, UniGridAreaComponent, UniGridComponent, UniIconButtonComponent, UniIconComponent, UniInputBoxComponent, UniInputComponent, UniJsonViewComponent, UniMenuComponent, UniMultiSelectComponent, UniMultiSelectDropdownComponent, UniNotificationBadgeComponent, UniPaginatorComponent, UniPopoverComponent, UniProgressBarComponent, UniProgressGaugeComponent, UniRadioComponent, UniRecordDatasource, UniRowComponent, UniScrollAreaComponent, UniSearchInputComponent, UniSelectComponent, UniServerSideDatasource, UniSnackbarComponent, UniSortHeaderComponent, UniStackComponent, UniSymbolComponent, UniTagComponent, UniTextComponent, UniToggleComponent, UniTooltipComponent, UniWrapComponent, acceptableFile, getFileExtension, useTimer };
1401
- export type { Alert, ButtonGroupConfig, ButtonGroupItem, ColumnDefinition, Confirmation, DataLoader, ImagePosition, MenuItem, MenuItemWithLabel, MenuItemWithTemplate, Option, Options, PageRequest, PageResponse, ScrollbarAppearance, Snackbar, Sort, SortDirection, UniCheckboxOptions, UniDataSearchOptions, UniDataTableOptions, UniDatasource, UniInputBoxOptions, UniMultiSelectDropdownOptions, UniNotificationBadgeOptions, UniPaginatorOptions, UniRadioOption, UniRadioOptions, UniToggleOptions };
1676
+ export { BodyRenderDirective, ConfirmationDialogComponent, DragAndDropDirective, FOCUSABLE_SELECTOR, LocalStorageService, NotificationService, NotificationsComponent, RippleDirective, ThemeService, UNI_THEMES, UniAlertComponent, UniBackgroundComponent, UniBadgeComponent, UniBaseDatasource, UniBoxComponent, UniButtonComponent, UniButtonGroupComponent, UniCardComponent, UniCardContentComponent, UniCardHeaderComponent, UniCenterComponent, UniCheckboxComponent, UniDataSearchComponent, UniDataTableComponent, UniDebounceInputComponent, UniDialogButtonsComponent, UniDialogComponent, UniDialogHeaderComponent, UniDividerComponent, UniDropdownComponent, UniExpandAreaComponent, UniExpandComponent, UniExpandToggleComponent, UniFileDropZoneComponent, UniGridAreaComponent, UniGridComponent, UniIconButtonComponent, UniIconComponent, UniInputBoxComponent, UniInputComponent, UniJsonViewComponent, UniMenuComponent, UniMultiSelectComponent, UniMultiSelectDropdownComponent, UniNotificationBadgeComponent, UniPaginatorComponent, UniPopoverComponent, UniProgressBarComponent, UniProgressGaugeComponent, UniRadioComponent, UniRecordDatasource, UniRowComponent, UniScrollAreaComponent, UniSearchInputComponent, UniSelectComponent, UniServerSideDatasource, UniSnackbarComponent, UniSortHeaderComponent, UniStackComponent, UniSymbolComponent, UniTagComponent, UniTextComponent, UniThemeBuilderComponent, UniToggleComponent, UniTooltipComponent, UniWrapComponent, acceptableFile, anchorArrowStyles, anchorStyles, getFileExtension, motionSafe, newAnchorName, resolveFocusTarget, uniqueId, useTimer, visuallyHidden };
1677
+ export type { Alert, AnchorOffset, BrandPaletteConfig, ButtonGroupConfig, ButtonGroupItem, ColumnDefinition, Confirmation, DataLoader, ImagePosition, MenuItem, MenuItemWithLabel, MenuItemWithTemplate, Option, Options, PageRequest, PageResponse, Placement, ScrollbarAppearance, Snackbar, Sort, SortDirection, UniCheckboxOptions, UniDataSearchOptions, UniDataTableOptions, UniDatasource, UniInputBoxOptions, UniMultiSelectDropdownOptions, UniNotificationBadgeOptions, UniPaginatorOptions, UniRadioOption, UniRadioOptions, UniToggleOptions };