@uni-design-system/uni-angular 5.1.0 → 6.0.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,7 +1,7 @@
1
1
  import * as _angular_core from '@angular/core';
2
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, 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';
4
+ import { Icons, Variant, ContainerColorToken, PaletteConfig, GenerateColorsConfig, Radii, UniTheme, ComponentName, ComponentTheme, NullableSize, ThemeName, TextRole, ContentColorToken, Size, Thickness, NullableStyleExpression, ColorKey, ColorToken, Typeface, Radius, OptionalSize, Border, Shadow, ZIndexableElements, Elevation, RadiiSize, TextColor, JustifyContent, StyleExpression, Orientation, OptionalAlignSelf, OptionalAlignItems, OptionalAlignContent, OptionalJustifyContent, OptionalDisplay, OptionalPosition, OptionalOverflow, OptionalFlexDirection, OptionalTextAlign, OptionalWrap, ColorScheme, ColorCategory, ThemeShape, ContrastCheck, Colors, GenerationInput } from '@uni-design-system/uni-core';
5
5
  import { FormCheckboxControl, FormValueControl } from '@angular/forms/signals';
6
6
 
7
7
  /**
@@ -263,7 +263,10 @@ declare const getFileExtension: (file: File) => string;
263
263
  * strengths: `brand` pins are emitted verbatim (may fail contrast), `targets`
264
264
  * are brand-faithful but the WCAG guard-rail may adjust their lightness.
265
265
  */
266
- type BrandPaletteConfig = Required<Pick<PaletteConfig, 'seed' | 'scheme' | 'category'>> & Pick<GenerateColorsConfig, 'mode' | 'accentSaturationFloor' | 'brand' | 'targets'>;
266
+ type BrandPaletteConfig = Required<Pick<PaletteConfig, 'seed' | 'scheme' | 'category'>> & Pick<GenerateColorsConfig, 'mode' | 'accentSaturationFloor' | 'brand' | 'targets'> & {
267
+ /** Radii override (e.g. a `ShapeRadii` shape-language preset). */
268
+ radii?: Radii;
269
+ };
267
270
  declare class ThemeService {
268
271
  /** localStorage key marking the custom brand theme as active. */
269
272
  static readonly CUSTOM_KEY = "CustomTheme";
@@ -356,19 +359,6 @@ declare class ThemeService {
356
359
 
357
360
  declare const UNI_THEMES: InjectionToken<Record<string, UniTheme>>;
358
361
 
359
- type ImagePosition = 'top' | 'bottom' | 'left' | 'right' | 'center' | string;
360
- declare class UniBackgroundComponent {
361
- theme: ThemeService;
362
- image: _angular_core.InputSignal<string>;
363
- imagePosition: _angular_core.InputSignal<string>;
364
- imageSize: _angular_core.InputSignal<string | number>;
365
- height: _angular_core.InputSignal<string | number>;
366
- width: _angular_core.InputSignal<string | number>;
367
- protected readonly className: _angular_core.Signal<string>;
368
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<UniBackgroundComponent, never>;
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>;
370
- }
371
-
372
362
  declare class BaseComponent<T = unknown> {
373
363
  protected componentName: ComponentName;
374
364
  theme: ThemeService;
@@ -383,6 +373,109 @@ declare class BaseComponent<T = unknown> {
383
373
  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>;
384
374
  }
385
375
 
376
+ /** Theme-level options for `uni-app-bar`, resolved by token name. */
377
+ interface UniAppBarOptions {
378
+ /** Bar surface color token (with its paired on-color). */
379
+ color?: ContainerColorToken;
380
+ /** Bar height in px. */
381
+ height?: number;
382
+ /** Rule under the bar, as a border primitive token. */
383
+ divider?: Border;
384
+ /** Title typography token. */
385
+ typeface?: Typeface;
386
+ /** Horizontal padding, as a spacing token. */
387
+ padding?: OptionalSize;
388
+ /** Space between bar children, as a spacing token. */
389
+ gap?: OptionalSize;
390
+ /** Optional elevation shadow token (e.g. 'raised'). */
391
+ elevation?: Elevation;
392
+ }
393
+
394
+ /**
395
+ * Horizontal application bar: project leading controls (menu button, logo)
396
+ * with the `leading` attribute, actions with `trailing` (pushed to the far
397
+ * edge), and either pass `title` or project custom center content. Surface,
398
+ * divider, height, typography and spacing all resolve from `appBar` tokens.
399
+ * Place it inside your page's `<header>` landmark.
400
+ */
401
+ declare class UniAppBarComponent extends BaseComponent<UniAppBarOptions> {
402
+ /** Bar title; alternatively project your own center content. */
403
+ title: _angular_core.InputSignal<string>;
404
+ /** Stick the bar to the top of its scroll container. */
405
+ sticky: _angular_core.InputSignal<boolean>;
406
+ protected readonly className: _angular_core.Signal<string>;
407
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<UniAppBarComponent, never>;
408
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<UniAppBarComponent, "uni-app-bar", never, { "title": { "alias": "title"; "required": false; "isSignal": true; }; "sticky": { "alias": "sticky"; "required": false; "isSignal": true; }; }, {}, never, ["[leading]", "*", "[trailing]"], true, never>;
409
+ }
410
+
411
+ /** Theme-level options for `uni-avatar`, resolved by token name. */
412
+ interface UniAvatarOptions {
413
+ /** Corner radius token — `max` renders circles; `sharp` themes get squares. */
414
+ borderRadius?: Radius;
415
+ /** Typeface token for the initials. */
416
+ typeface?: Typeface;
417
+ /** Symbol shown when there is no image and no name to take initials from. */
418
+ fallbackSymbol?: string;
419
+ }
420
+ /** Theme-level options for `uni-avatar-group`. */
421
+ interface UniAvatarGroupOptions {
422
+ /** How far stacked avatars overlap, as a spacing token. */
423
+ overlap?: OptionalSize;
424
+ /** Ring color separating stacked avatars from each other. */
425
+ ringColor?: ColorKey;
426
+ /** Ring width in px. */
427
+ ringWidth?: number;
428
+ }
429
+
430
+ /**
431
+ * Identity avatar with a graceful fallback chain: image → initials from
432
+ * `name` → themed symbol. Coloring, radius, typeface and sizes all resolve
433
+ * from `avatar` theme tokens; `variant` picks the container palette.
434
+ */
435
+ declare class UniAvatarComponent extends BaseComponent<UniAvatarOptions> {
436
+ /** Image URL; on load error the avatar falls back to initials/symbol. */
437
+ src: _angular_core.InputSignal<string>;
438
+ /** Person's name: drives the initials and the accessible label. */
439
+ name: _angular_core.InputSignal<string>;
440
+ /** Verbatim text instead of derived initials (e.g. a group's “+3”). */
441
+ text: _angular_core.InputSignal<string>;
442
+ protected readonly imageFailed: _angular_core.WritableSignal<boolean>;
443
+ protected readonly showImage: _angular_core.Signal<boolean>;
444
+ protected readonly initials: _angular_core.Signal<string>;
445
+ protected readonly label: _angular_core.Signal<string>;
446
+ protected readonly className: _angular_core.Signal<string>;
447
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<UniAvatarComponent, never>;
448
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<UniAvatarComponent, "uni-avatar", never, { "src": { "alias": "src"; "required": false; "isSignal": true; }; "name": { "alias": "name"; "required": false; "isSignal": true; }; "text": { "alias": "text"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
449
+ }
450
+
451
+ /**
452
+ * Overlapping stack of avatars. `max` collapses the overflow into a themed
453
+ * “+N” chip (itself a `uni-avatar`). Overlap and separator ring resolve from
454
+ * `avatarGroup` theme tokens.
455
+ */
456
+ declare class UniAvatarGroupComponent extends BaseComponent<UniAvatarGroupOptions> {
457
+ /** Show at most this many avatars; the rest collapse into a “+N” chip. */
458
+ max: _angular_core.InputSignal<number>;
459
+ private readonly avatars;
460
+ protected readonly surplus: _angular_core.Signal<number>;
461
+ protected readonly className: _angular_core.Signal<string>;
462
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<UniAvatarGroupComponent, never>;
463
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<UniAvatarGroupComponent, "uni-avatar-group", never, { "max": { "alias": "max"; "required": false; "isSignal": true; }; }, {}, ["avatars"], ["*"], true, never>;
464
+ }
465
+
466
+ type ImagePosition = 'top' | 'bottom' | 'left' | 'right' | 'center' | string;
467
+ declare class UniBackgroundComponent {
468
+ theme: ThemeService;
469
+ image: _angular_core.InputSignal<string>;
470
+ imagePosition: _angular_core.InputSignal<string>;
471
+ imageSize: _angular_core.InputSignal<string | number>;
472
+ height: _angular_core.InputSignal<string | number>;
473
+ width: _angular_core.InputSignal<string | number>;
474
+ protected readonly className: _angular_core.Signal<string>;
475
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<UniBackgroundComponent, never>;
476
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<UniBackgroundComponent, "uni-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>;
477
+ }
478
+
386
479
  interface UniBadgeOptions {
387
480
  borderRadius?: RadiiSize;
388
481
  }
@@ -393,7 +486,63 @@ declare class UniBadgeComponent extends BaseComponent<UniBadgeOptions> {
393
486
  width: _angular_core.InputSignal<number>;
394
487
  protected readonly className: _angular_core.Signal<string>;
395
488
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<UniBadgeComponent, 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>;
489
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<UniBadgeComponent, "[uni-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>;
490
+ }
491
+
492
+ /** One step in the trail. The last item is treated as the current page. */
493
+ interface BreadcrumbItem {
494
+ label: string;
495
+ /** Link target. Omit for SPA routing and handle `itemClicked` instead. */
496
+ href?: string;
497
+ }
498
+ /** Theme-level options for `uni-breadcrumb`, resolved by token name. */
499
+ interface UniBreadcrumbOptions {
500
+ /** Trail typography token. */
501
+ typeface?: Typeface;
502
+ /** Link color for ancestor items. */
503
+ color?: ColorKey;
504
+ /** Color of the current (last) item. */
505
+ currentColor?: ColorKey;
506
+ /** Material symbol drawn between items. */
507
+ separatorSymbol?: string;
508
+ /** Space around separators, as a spacing token. */
509
+ gap?: OptionalSize;
510
+ }
511
+
512
+ /**
513
+ * WAI-ARIA breadcrumb: a `nav` landmark wrapping an ordered list; the last
514
+ * item is the current page (`aria-current="page"`), separators are decorative.
515
+ * Items with `href` render as real links; without one they render as
516
+ * link-styled buttons emitting `itemClicked` — wire that to your router.
517
+ */
518
+ declare class UniBreadcrumbComponent extends BaseComponent<UniBreadcrumbOptions> {
519
+ /** The trail, root first; the last item is the current page. */
520
+ items: _angular_core.InputSignal<BreadcrumbItem[]>;
521
+ /** Landmark label distinguishing this nav from others on the page. */
522
+ ariaLabel: _angular_core.InputSignal<string>;
523
+ /** Emits the clicked ancestor item (also fires for `href` links). */
524
+ itemClicked: _angular_core.OutputEmitterRef<BreadcrumbItem>;
525
+ protected readonly className: _angular_core.Signal<string>;
526
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<UniBreadcrumbComponent, never>;
527
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<UniBreadcrumbComponent, "uni-breadcrumb", never, { "items": { "alias": "items"; "required": true; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; }, { "itemClicked": "itemClicked"; }, never, never, true, never>;
528
+ }
529
+
530
+ /** Theme-level options for `uni-text-button`, resolved by token name. */
531
+ interface UniButtonOptions {
532
+ /**
533
+ * Corner radius as a radii token. The default theme uses `max` (pill);
534
+ * because this is a token, the theme's radii scale — including generated
535
+ * shape languages (`sharp`/`modern`/`playful`) and custom primitives —
536
+ * restyles every button without touching component code.
537
+ */
538
+ borderRadius?: RadiiSize;
539
+ /**
540
+ * Label typography as a typeface token. Defaults to the type scale's
541
+ * `button` role (family/weight/transform); per-size `fontSize` overrides
542
+ * from the theme's `sizes` still apply on top. Point it at any typeface —
543
+ * including custom primitives added to the theme's typography.
544
+ */
545
+ typeface?: Typeface;
397
546
  }
398
547
 
399
548
  declare class RippleDirective {
@@ -408,7 +557,7 @@ declare class RippleDirective {
408
557
  static ɵdir: _angular_core.ɵɵDirectiveDeclaration<RippleDirective, "[uniRipple]", never, {}, {}, never, never, true, never>;
409
558
  }
410
559
 
411
- declare class UniButtonComponent extends BaseComponent {
560
+ declare class UniButtonComponent extends BaseComponent<UniButtonOptions> {
412
561
  readonly disable: _angular_core.InputSignal<boolean>;
413
562
  readonly loading: _angular_core.InputSignal<boolean>;
414
563
  readonly fullWidth: _angular_core.InputSignal<boolean>;
@@ -418,14 +567,14 @@ declare class UniButtonComponent extends BaseComponent {
418
567
  protected readonly className: _angular_core.Signal<string>;
419
568
  symbolSize: _angular_core.Signal<number>;
420
569
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<UniButtonComponent, never>;
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: {}; }]>;
570
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<UniButtonComponent, "button[uni-text-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: {}; }]>;
422
571
  }
423
572
 
424
573
  declare class UniButtonGroupComponent {
425
574
  private themeService;
426
575
  protected readonly className: _angular_core.Signal<string>;
427
576
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<UniButtonGroupComponent, never>;
428
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<UniButtonGroupComponent, "uni-button-group, ButtonGroup", never, {}, {}, never, ["*"], true, never>;
577
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<UniButtonGroupComponent, "uni-button-group", never, {}, {}, never, ["*"], true, never>;
429
578
  }
430
579
 
431
580
  interface ButtonGroupConfig {
@@ -443,7 +592,7 @@ interface ButtonGroupItem {
443
592
 
444
593
  declare class UniCardContentComponent extends BaseComponent {
445
594
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<UniCardContentComponent, never>;
446
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<UniCardContentComponent, "uni-card-content, CardContent", never, {}, {}, never, ["*"], true, never>;
595
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<UniCardContentComponent, "uni-card-content", never, {}, {}, never, ["*"], true, never>;
447
596
  }
448
597
 
449
598
  declare class UniCardHeaderComponent extends BaseComponent {
@@ -453,24 +602,43 @@ declare class UniCardHeaderComponent extends BaseComponent {
453
602
  constructor();
454
603
  className: string;
455
604
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<UniCardHeaderComponent, never>;
456
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<UniCardHeaderComponent, "uni-card-header, CardHeader", never, { "title": { "alias": "title"; "required": false; "isSignal": true; }; "titleTextRole": { "alias": "titleTextRole"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
605
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<UniCardHeaderComponent, "uni-card-header", never, { "title": { "alias": "title"; "required": false; "isSignal": true; }; "titleTextRole": { "alias": "titleTextRole"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
457
606
  }
458
607
 
608
+ /** Theme-level options for `uni-card`, resolved by token name. */
459
609
  interface UniCardOptions {
460
- defaultVariant: Variant;
461
- borderRadius: Radius;
462
- transitionSpeed: number;
610
+ defaultVariant?: Variant;
611
+ /** Corner radius as a radii token. The default theme uses `xs`. */
612
+ borderRadius?: Radius;
613
+ /**
614
+ * Frame as a border primitive token. When unset, the card follows its
615
+ * variant — `borders.primary`, `borders.warn`, … — so redefining a border
616
+ * primitive restyles every card (and every other component) sharing it.
617
+ */
618
+ border?: Border;
619
+ /** Optional elevation shadow token; cards are flat by default. */
463
620
  elevation?: Elevation;
621
+ transitionSpeed?: number;
464
622
  }
465
623
 
466
624
  declare class UniCardComponent extends BaseComponent<UniCardOptions> {
625
+ /**
626
+ * Token-resolved frame (variant-named border primitive, radii, elevation)
627
+ * under the merged theme style, so hand-authored fixed/variant styles from
628
+ * older themes keep winning.
629
+ */
630
+ protected readonly cardStyle: _angular_core.Signal<{
631
+ boxShadow: string;
632
+ }>;
467
633
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<UniCardComponent, never>;
468
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<UniCardComponent, "uni-card, Card", never, {}, {}, never, ["*"], true, never>;
634
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<UniCardComponent, "uni-card", never, {}, {}, never, ["*"], true, never>;
469
635
  }
470
636
 
471
637
  interface UniCheckboxOptions {
472
638
  size?: string | number;
473
639
  borderRadius?: string | number;
640
+ /** Unchecked box background token. */
641
+ boxColor?: ColorKey;
474
642
  }
475
643
 
476
644
  declare class UniCheckboxComponent extends BaseComponent<UniCheckboxOptions> implements FormCheckboxControl {
@@ -498,8 +666,10 @@ declare class UniCheckboxComponent extends BaseComponent<UniCheckboxOptions> imp
498
666
  protected readonly checkboxLabel: _angular_core.Signal<string>;
499
667
  protected readonly checkboxInput: _angular_core.Signal<string>;
500
668
  getThemeColor(token: ColorToken): string;
669
+ /** The content color paired with a variant fill (on-primary, on-warn, …). */
670
+ getOnColor(variant: ColorToken): string;
501
671
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<UniCheckboxComponent, 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>;
672
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<UniCheckboxComponent, "uni-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>;
503
673
  }
504
674
 
505
675
  interface UniDataSearchOptions {
@@ -591,7 +761,7 @@ declare class UniDataTableComponent<T> extends BaseComponent<UniDataTableOptions
591
761
  handleScrollable(scrollable: boolean): void;
592
762
  getBorder(name: string | undefined): string;
593
763
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<UniDataTableComponent<any>, never>;
594
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<UniDataTableComponent<any>, "uni-data-table, DataTable", never, { "datasource": { "alias": "datasource"; "required": true; "isSignal": true; }; "columns": { "alias": "columns"; "required": true; "isSignal": true; }; "detailRowTemplate": { "alias": "detailRowTemplate"; "required": false; "isSignal": true; }; "useMultiSelect": { "alias": "useMultiSelect"; "required": false; "isSignal": true; }; "useRowClick": { "alias": "useRowClick"; "required": false; "isSignal": true; }; "highlight": { "alias": "highlight"; "required": false; "isSignal": true; }; "height": { "alias": "height"; "required": false; "isSignal": true; }; }, { "rowSelect": "rowSelect"; "rowClick": "rowClick"; }, never, ["data-table-header", "data-table-footer"], true, never>;
764
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<UniDataTableComponent<any>, "uni-data-table", never, { "datasource": { "alias": "datasource"; "required": true; "isSignal": true; }; "columns": { "alias": "columns"; "required": true; "isSignal": true; }; "detailRowTemplate": { "alias": "detailRowTemplate"; "required": false; "isSignal": true; }; "useMultiSelect": { "alias": "useMultiSelect"; "required": false; "isSignal": true; }; "useRowClick": { "alias": "useRowClick"; "required": false; "isSignal": true; }; "highlight": { "alias": "highlight"; "required": false; "isSignal": true; }; "height": { "alias": "height"; "required": false; "isSignal": true; }; }, { "rowSelect": "rowSelect"; "rowClick": "rowClick"; }, never, ["data-table-header", "data-table-footer"], true, never>;
595
765
  }
596
766
 
597
767
  declare class UniDialogButtonsComponent {
@@ -606,7 +776,7 @@ declare class UniDialogButtonsComponent {
606
776
  confirmed: _angular_core.OutputEmitterRef<void>;
607
777
  closeDialog(): void;
608
778
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<UniDialogButtonsComponent, 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>;
779
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<UniDialogButtonsComponent, "[uni-dialog-buttons], [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>;
610
780
  }
611
781
 
612
782
  interface UniDialogHeaderOptions {
@@ -628,7 +798,7 @@ declare class UniDialogHeaderComponent extends BaseComponent<UniDialogHeaderOpti
628
798
  constructor();
629
799
  closeDialog(): void;
630
800
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<UniDialogHeaderComponent, never>;
631
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<UniDialogHeaderComponent, "div[uni-dialog-header], DialogHeader", never, {}, {}, never, ["*"], true, never>;
801
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<UniDialogHeaderComponent, "[uni-dialog-header]", never, {}, {}, never, ["*"], true, never>;
632
802
  }
633
803
 
634
804
  interface UniDialogOptions {
@@ -677,7 +847,7 @@ declare class UniDialogComponent extends BaseComponent<UniDialogOptions> {
677
847
  open(): void;
678
848
  close(): void;
679
849
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<UniDialogComponent, 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>;
850
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<UniDialogComponent, "dialog[uni-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>;
681
851
  }
682
852
 
683
853
  declare class UniDividerComponent {
@@ -686,7 +856,63 @@ declare class UniDividerComponent {
686
856
  border: _angular_core.InputSignal<string>;
687
857
  protected readonly className: _angular_core.Signal<string>;
688
858
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<UniDividerComponent, never>;
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>;
859
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<UniDividerComponent, "uni-divider", never, { "orientation": { "alias": "orientation"; "required": false; "isSignal": true; }; "border": { "alias": "border"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
860
+ }
861
+
862
+ /** How the drawer coexists with page content. */
863
+ type DrawerMode = 'side' | 'over';
864
+ /** Which edge the drawer attaches to (logical: start = left in LTR). */
865
+ type DrawerPosition = 'start' | 'end';
866
+ /** Theme-level options for `uni-drawer`, resolved by token name. */
867
+ interface UniDrawerOptions {
868
+ /** Panel surface color token (with its paired on-color). */
869
+ color?: ContainerColorToken;
870
+ /** Panel width in px. */
871
+ width?: number;
872
+ /** Edge rule separating a side drawer from content, as a border primitive. */
873
+ divider?: Border;
874
+ /** Elevation shadow token for the overlay mode. */
875
+ elevation?: Elevation;
876
+ /** Inner padding, as a spacing token. */
877
+ padding?: OptionalSize;
878
+ /** Backdrop styling for the overlay mode. */
879
+ backdrop?: StyleExpression;
880
+ }
881
+
882
+ /**
883
+ * Navigation drawer with two modes sharing one content slot:
884
+ *
885
+ * - `side` — an in-flow `<aside>` that pushes content (dashboard sidenav);
886
+ * opening/closing animates its width, and the divider border primitive
887
+ * separates it from the page.
888
+ * - `over` — a native `<dialog>` in the top layer: focus trap, Escape and
889
+ * scrim backdrop come from the platform (same machinery as `uni-dialog`),
890
+ * sliding in from its edge.
891
+ *
892
+ * Surface, width, divider, elevation, padding and backdrop all resolve from
893
+ * `drawer` theme tokens.
894
+ */
895
+ declare class UniDrawerComponent extends BaseComponent<UniDrawerOptions> {
896
+ /** Two-way bindable open state: [(open)]. */
897
+ readonly open: _angular_core.ModelSignal<boolean>;
898
+ mode: _angular_core.InputSignal<DrawerMode>;
899
+ position: _angular_core.InputSignal<DrawerPosition>;
900
+ /** Accessible name for the overlay mode's dialog. */
901
+ ariaLabel: _angular_core.InputSignal<string>;
902
+ protected readonly contentTemplate: _angular_core.Signal<TemplateRef<unknown>>;
903
+ private readonly overlay;
904
+ constructor();
905
+ protected onBackdropClick(event: Event): void;
906
+ /** Route Escape through the animated close, keeping `open` in sync. */
907
+ protected onCancel(event: Event): void;
908
+ protected onAnimationEnd(event: AnimationEvent): void;
909
+ private readonly edge;
910
+ private readonly slideIn;
911
+ private readonly slideOut;
912
+ protected readonly sideClass: _angular_core.Signal<string>;
913
+ protected readonly overClass: _angular_core.Signal<string>;
914
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<UniDrawerComponent, never>;
915
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<UniDrawerComponent, "uni-drawer", never, { "open": { "alias": "open"; "required": false; "isSignal": true; }; "mode": { "alias": "mode"; "required": false; "isSignal": true; }; "position": { "alias": "position"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; }, { "open": "openChange"; }, never, ["*"], true, never>;
690
916
  }
691
917
 
692
918
  interface UniDropdownOptions {
@@ -736,7 +962,7 @@ declare class UniDropdownComponent extends BaseComponent<UniDropdownOptions> imp
736
962
  hideDropdown(): void;
737
963
  ngOnDestroy(): void;
738
964
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<UniDropdownComponent, 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>;
965
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<UniDropdownComponent, "uni-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>;
740
966
  }
741
967
 
742
968
  declare class UniExpandComponent {
@@ -751,7 +977,7 @@ declare class UniExpandComponent {
751
977
  expandAnimation: string;
752
978
  collapseAnimation: string;
753
979
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<UniExpandComponent, never>;
754
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<UniExpandComponent, "uni-expand, Expand", never, { "collapsed": { "alias": "collapsed"; "required": false; "isSignal": true; }; }, { "collapsed": "collapsedChange"; }, never, ["*"], true, never>;
980
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<UniExpandComponent, "uni-expand", never, { "collapsed": { "alias": "collapsed"; "required": false; "isSignal": true; }; }, { "collapsed": "collapsedChange"; }, never, ["*"], true, never>;
755
981
  }
756
982
 
757
983
  declare class UniExpandToggleComponent {
@@ -761,7 +987,7 @@ declare class UniExpandToggleComponent {
761
987
  protected readonly className: _angular_core.Signal<string>;
762
988
  toggle(): void;
763
989
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<UniExpandToggleComponent, 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>;
990
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<UniExpandToggleComponent, "uni-expand-toggle", never, { "collapsed": { "alias": "collapsed"; "required": false; "isSignal": true; }; "ariaControls": { "alias": "ariaControls"; "required": false; "isSignal": true; }; }, { "collapsed": "collapsedChange"; }, never, never, true, never>;
765
991
  }
766
992
 
767
993
  declare class UniExpandAreaComponent {
@@ -772,7 +998,7 @@ declare class UniExpandAreaComponent {
772
998
  toggleRef: _angular_core.Signal<UniExpandToggleComponent>;
773
999
  toggleExpand(): void;
774
1000
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<UniExpandAreaComponent, never>;
775
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<UniExpandAreaComponent, "uni-expand-area, ExpandArea", never, { "title": { "alias": "title"; "required": true; "isSignal": true; }; "initCollapsed": { "alias": "initCollapsed"; "required": false; "isSignal": true; }; "padding": { "alias": "padding"; "required": false; "isSignal": true; }; }, { "collapsed": "collapsed"; }, never, ["*"], true, never>;
1001
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<UniExpandAreaComponent, "uni-expand-area", never, { "title": { "alias": "title"; "required": true; "isSignal": true; }; "initCollapsed": { "alias": "initCollapsed"; "required": false; "isSignal": true; }; "padding": { "alias": "padding"; "required": false; "isSignal": true; }; }, { "collapsed": "collapsed"; }, never, ["*"], true, never>;
776
1002
  }
777
1003
 
778
1004
  declare class UniFileDropZoneComponent {
@@ -811,34 +1037,57 @@ declare class UniFileDropZoneComponent {
811
1037
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<UniFileDropZoneComponent, "uni-file-drop-zone", never, { "height": { "alias": "height"; "required": false; "isSignal": true; }; "borderRadius": { "alias": "borderRadius"; "required": false; "isSignal": true; }; "border": { "alias": "border"; "required": false; "isSignal": true; }; "padding": { "alias": "padding"; "required": false; "isSignal": true; }; "useBrowseButton": { "alias": "useBrowseButton"; "required": false; "isSignal": true; }; "browseButtonText": { "alias": "browseButtonText"; "required": false; "isSignal": true; }; "allowedFileExtensions": { "alias": "allowedFileExtensions"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "helpTemplate": { "alias": "helpTemplate"; "required": false; "isSignal": true; }; "helpTemplateContext": { "alias": "helpTemplateContext"; "required": false; "isSignal": true; }; }, { "fileAttached": "fileAttached"; "fileRemoved": "fileRemoved"; }, never, never, true, never>;
812
1038
  }
813
1039
 
1040
+ /**
1041
+ * Text input that emits `change` only after the user pauses typing. Wears the
1042
+ * shared input chrome (themed color, border, typeface, focus ring) via
1043
+ * `uni-input-box`; project adornments with the `pre-input` / `post-input`
1044
+ * slots, matching `uni-input`'s convention. The ARIA passthrough inputs let a
1045
+ * wrapping composite (e.g. SearchInput's combobox) annotate the real input
1046
+ * element.
1047
+ */
814
1048
  declare class UniDebounceInputComponent {
815
1049
  inputName: _angular_core.InputSignal<string>;
816
1050
  inputId: _angular_core.InputSignal<string>;
817
1051
  debounceTime: _angular_core.InputSignal<number>;
1052
+ /** Accessible name for the input. */
1053
+ label: _angular_core.InputSignal<string>;
1054
+ placeholder: _angular_core.InputSignal<string>;
1055
+ disabled: _angular_core.InputSignal<boolean>;
1056
+ role: _angular_core.InputSignal<string>;
1057
+ ariaExpanded: _angular_core.InputSignal<boolean>;
1058
+ ariaControls: _angular_core.InputSignal<string>;
1059
+ ariaActivedescendant: _angular_core.InputSignal<string>;
818
1060
  change: _angular_core.OutputEmitterRef<string>;
819
1061
  value: _angular_core.WritableSignal<string>;
1062
+ private readonly inputElement;
820
1063
  private timeoutId;
821
1064
  private lastEmitted;
822
1065
  constructor();
823
1066
  handleInput(event: Event): void;
1067
+ /** Empty the field immediately, cancelling any pending emit. */
1068
+ clear(): void;
1069
+ focus(): void;
824
1070
  inputClass: string;
825
1071
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<UniDebounceInputComponent, never>;
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>;
1072
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<UniDebounceInputComponent, "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; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "role": { "alias": "role"; "required": false; "isSignal": true; }; "ariaExpanded": { "alias": "ariaExpanded"; "required": false; "isSignal": true; }; "ariaControls": { "alias": "ariaControls"; "required": false; "isSignal": true; }; "ariaActivedescendant": { "alias": "ariaActivedescendant"; "required": false; "isSignal": true; }; }, { "change": "change"; }, never, ["[pre-input]", "[post-input]"], true, never>;
827
1073
  }
828
1074
 
829
1075
  declare class UniIconComponent {
830
1076
  private themeService;
831
1077
  color: _angular_core.InputSignal<string>;
832
1078
  name: _angular_core.InputSignal<string>;
1079
+ /** Resolved from the theme's icon primitives; unknown names render nothing. */
833
1080
  protected readonly path: _angular_core.Signal<string>;
834
1081
  protected readonly className: _angular_core.Signal<string>;
835
1082
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<UniIconComponent, 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>;
1083
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<UniIconComponent, "uni-icon", never, { "color": { "alias": "color"; "required": false; "isSignal": true; }; "name": { "alias": "name"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
837
1084
  }
838
1085
 
839
1086
  declare class UniIconButtonComponent {
840
1087
  private theme;
841
- config: _angular_core.Signal<_uni_design_system_uni_core.ComponentTheme<unknown>>;
1088
+ config: _angular_core.Signal<_uni_design_system_uni_core.ComponentTheme<{
1089
+ borderRadius?: RadiiSize;
1090
+ }>>;
842
1091
  /**
843
1092
  * Accessible name for the button. Alternative to projecting text content
844
1093
  * (`<button icon-button>Close</button>`); one of the two is required for
@@ -905,12 +1154,14 @@ declare class UniInputBoxComponent extends BaseComponent<UniInputBoxOptions> {
905
1154
  disabled: _angular_core.InputSignal<boolean>;
906
1155
  error: _angular_core.InputSignal<boolean>;
907
1156
  minWidth: _angular_core.InputSignal<string>;
1157
+ /** Override the themed field height, e.g. `'auto'` for multi-line fields. */
1158
+ height: _angular_core.InputSignal<string | number>;
908
1159
  protected readonly color: _angular_core.Signal<_uni_design_system_uni_core.ContainerColorToken>;
909
1160
  protected readonly border: _angular_core.Signal<string>;
910
1161
  protected readonly shadow: _angular_core.Signal<string>;
911
1162
  protected readonly inputBoxClass: _angular_core.Signal<string>;
912
1163
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<UniInputBoxComponent, never>;
913
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<UniInputBoxComponent, "uni-input-box", never, { "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "error": { "alias": "error"; "required": false; "isSignal": true; }; "minWidth": { "alias": "minWidth"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
1164
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<UniInputBoxComponent, "uni-input-box", never, { "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "error": { "alias": "error"; "required": false; "isSignal": true; }; "minWidth": { "alias": "minWidth"; "required": false; "isSignal": true; }; "height": { "alias": "height"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
914
1165
  }
915
1166
 
916
1167
  declare class UniJsonViewComponent {
@@ -926,6 +1177,16 @@ declare class UniJsonViewComponent {
926
1177
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<UniJsonViewComponent, "uni-json-view", never, { "json": { "alias": "json"; "required": false; "isSignal": true; }; "rows": { "alias": "rows"; "required": false; "isSignal": true; }; "fontSize": { "alias": "fontSize"; "required": false; "isSignal": true; }; "width": { "alias": "width"; "required": false; "isSignal": true; }; "selectOnClick": { "alias": "selectOnClick"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
927
1178
  }
928
1179
 
1180
+ /**
1181
+ * The base layout primitive, applied as an attribute to any element so
1182
+ * semantics stay yours: `<main box-layout [grow]="1" padding="md">`.
1183
+ * Exception: other components' host elements (`<uni-card box-layout>` would
1184
+ * put two components on one element) — wrap those in a `<div box-layout>`.
1185
+ *
1186
+ * Sizing convention (height/width/min/max/inset): a **number is px and needs
1187
+ * a binding** — `[height]="420"`; a **plain attribute is a CSS length
1188
+ * string** — `height="420px"`. Spacing/radius/color inputs take theme tokens.
1189
+ */
929
1190
  declare class UniBoxComponent {
930
1191
  theme: ThemeService;
931
1192
  color: _angular_core.InputSignal<ContainerColorToken>;
@@ -956,9 +1217,11 @@ declare class UniBoxComponent {
956
1217
  display: _angular_core.InputSignal<OptionalDisplay>;
957
1218
  position: _angular_core.InputSignal<OptionalPosition>;
958
1219
  inset: _angular_core.InputSignal<string | number>;
1220
+ /** Number = px via binding (`[height]="420"`); string = CSS length (`height="420px"`). */
959
1221
  height: _angular_core.InputSignal<string | number>;
960
1222
  minHeight: _angular_core.InputSignal<string | number>;
961
1223
  maxHeight: _angular_core.InputSignal<string | number>;
1224
+ /** Number = px via binding (`[width]="420"`); string = CSS length (`width="50%"`). */
962
1225
  width: _angular_core.InputSignal<string | number>;
963
1226
  minWidth: _angular_core.InputSignal<string | number>;
964
1227
  maxWidth: _angular_core.InputSignal<string | number>;
@@ -978,7 +1241,7 @@ declare class UniBoxComponent {
978
1241
  zIndex: _angular_core.InputSignal<ZIndexableElements>;
979
1242
  protected readonly boxClassName: _angular_core.Signal<string>;
980
1243
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<UniBoxComponent, never>;
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>;
1244
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<UniBoxComponent, "[uni-box-layout], [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>;
982
1245
  }
983
1246
 
984
1247
  declare class UniCenterComponent extends UniBoxComponent {
@@ -987,14 +1250,14 @@ declare class UniCenterComponent extends UniBoxComponent {
987
1250
  alignItems: _angular_core.InputSignal<OptionalAlignItems>;
988
1251
  constructor();
989
1252
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<UniCenterComponent, never>;
990
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<UniCenterComponent, "div[uni-center-layout], div[center-layout]", never, { "display": { "alias": "display"; "required": false; "isSignal": true; }; "justifyContent": { "alias": "justifyContent"; "required": false; "isSignal": true; }; "alignItems": { "alias": "alignItems"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
1253
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<UniCenterComponent, "[uni-center-layout], [center-layout]", never, { "display": { "alias": "display"; "required": false; "isSignal": true; }; "justifyContent": { "alias": "justifyContent"; "required": false; "isSignal": true; }; "alignItems": { "alias": "alignItems"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
991
1254
  }
992
1255
 
993
1256
  declare class UniGridAreaComponent {
994
1257
  area: _angular_core.InputSignal<string>;
995
1258
  protected readonly className: _angular_core.Signal<string>;
996
1259
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<UniGridAreaComponent, never>;
997
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<UniGridAreaComponent, "GridArea", never, { "area": { "alias": "area"; "required": true; "isSignal": true; }; }, {}, never, ["*"], true, never>;
1260
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<UniGridAreaComponent, "[uni-grid-area-layout], [grid-area-layout]", never, { "area": { "alias": "area"; "required": true; "isSignal": true; }; }, {}, never, ["*"], true, never>;
998
1261
  }
999
1262
 
1000
1263
  declare class UniGridComponent extends UniBoxComponent {
@@ -1006,25 +1269,35 @@ declare class UniGridComponent extends UniBoxComponent {
1006
1269
  outlineColor: _angular_core.InputSignal<Variant>;
1007
1270
  protected readonly gridClassName: _angular_core.Signal<string>;
1008
1271
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<UniGridComponent, 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>;
1272
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<UniGridComponent, "[uni-grid-layout], [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>;
1010
1273
  }
1011
1274
 
1012
1275
  declare class UniRowComponent extends UniBoxComponent {
1013
1276
  display: _angular_core.InputSignal<OptionalDisplay>;
1014
1277
  flexDirection: _angular_core.InputSignal<OptionalFlexDirection>;
1278
+ /**
1279
+ * Defaults to `fit-content` (guards content collapse). Set `[minWidth]="0"`
1280
+ * when the row must shrink inside a constrained flex parent (scroll or
1281
+ * text truncation containment).
1282
+ */
1015
1283
  minWidth: _angular_core.InputSignal<string | number>;
1016
1284
  constructor();
1017
1285
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<UniRowComponent, never>;
1018
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<UniRowComponent, "div[uni-row-layout], Row, div[row-layout]", never, { "display": { "alias": "display"; "required": false; "isSignal": true; }; "flexDirection": { "alias": "flexDirection"; "required": false; "isSignal": true; }; "minWidth": { "alias": "minWidth"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
1286
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<UniRowComponent, "[uni-row-layout], [row-layout]", never, { "display": { "alias": "display"; "required": false; "isSignal": true; }; "flexDirection": { "alias": "flexDirection"; "required": false; "isSignal": true; }; "minWidth": { "alias": "minWidth"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
1019
1287
  }
1020
1288
 
1021
1289
  declare class UniStackComponent extends UniBoxComponent {
1022
1290
  display: _angular_core.InputSignal<OptionalDisplay>;
1023
1291
  flexDirection: _angular_core.InputSignal<OptionalFlexDirection>;
1292
+ /**
1293
+ * Defaults to `fit-content` (guards content collapse). Set `[minHeight]="0"`
1294
+ * when the stack must shrink inside a constrained flex parent (scroll
1295
+ * containment).
1296
+ */
1024
1297
  minHeight: _angular_core.InputSignal<string | number>;
1025
1298
  constructor();
1026
1299
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<UniStackComponent, never>;
1027
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<UniStackComponent, "div[uni-stack-layout], Stack, div[stack-layout]", never, { "display": { "alias": "display"; "required": false; "isSignal": true; }; "flexDirection": { "alias": "flexDirection"; "required": false; "isSignal": true; }; "minHeight": { "alias": "minHeight"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
1300
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<UniStackComponent, "[uni-stack-layout], [stack-layout]", never, { "display": { "alias": "display"; "required": false; "isSignal": true; }; "flexDirection": { "alias": "flexDirection"; "required": false; "isSignal": true; }; "minHeight": { "alias": "minHeight"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
1028
1301
  }
1029
1302
 
1030
1303
  declare class UniWrapComponent extends UniBoxComponent {
@@ -1032,7 +1305,7 @@ declare class UniWrapComponent extends UniBoxComponent {
1032
1305
  wrapItems: _angular_core.InputSignal<OptionalWrap>;
1033
1306
  constructor();
1034
1307
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<UniWrapComponent, never>;
1035
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<UniWrapComponent, "div[uni-wrap-layout], Wrap, div[wrap-layout]", never, { "display": { "alias": "display"; "required": false; "isSignal": true; }; "wrapItems": { "alias": "wrapItems"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
1308
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<UniWrapComponent, "[uni-wrap-layout], [wrap-layout]", never, { "display": { "alias": "display"; "required": false; "isSignal": true; }; "wrapItems": { "alias": "wrapItems"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
1036
1309
  }
1037
1310
 
1038
1311
  interface BaseMenuItem {
@@ -1071,7 +1344,7 @@ declare class UniMenuComponent {
1071
1344
  /** First-character matching, starting after the focused item and wrapping. */
1072
1345
  private typeahead;
1073
1346
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<UniMenuComponent, never>;
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>;
1347
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<UniMenuComponent, "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>;
1075
1348
  }
1076
1349
 
1077
1350
  declare class UniMultiSelectComponent<T = unknown> {
@@ -1088,7 +1361,7 @@ declare class UniMultiSelectComponent<T = unknown> {
1088
1361
  deselectAll(): void;
1089
1362
  optionWrapper: string;
1090
1363
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<UniMultiSelectComponent<any>, never>;
1091
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<UniMultiSelectComponent<any>, "uni-multi-select, MultiSelect", never, { "options": { "alias": "options"; "required": false; "isSignal": true; }; "selections": { "alias": "selections"; "required": false; "isSignal": true; }; "flexDirection": { "alias": "flexDirection"; "required": false; "isSignal": true; }; "checkboxGap": { "alias": "checkboxGap"; "required": false; "isSignal": true; }; }, { "updates": "updates"; }, never, never, true, never>;
1364
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<UniMultiSelectComponent<any>, "uni-multi-select", never, { "options": { "alias": "options"; "required": false; "isSignal": true; }; "selections": { "alias": "selections"; "required": false; "isSignal": true; }; "flexDirection": { "alias": "flexDirection"; "required": false; "isSignal": true; }; "checkboxGap": { "alias": "checkboxGap"; "required": false; "isSignal": true; }; }, { "updates": "updates"; }, never, never, true, never>;
1092
1365
  }
1093
1366
 
1094
1367
  interface UniMultiSelectDropdownOptions {
@@ -1131,7 +1404,7 @@ declare class UniMultiSelectDropdownComponent<T = unknown> extends BaseComponent
1131
1404
  protected isOptionSelected(option: Option<T>): _angular_core.Signal<boolean>;
1132
1405
  toggleOption(option: Option<T>, checked: boolean): void;
1133
1406
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<UniMultiSelectDropdownComponent<any>, 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>;
1407
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<UniMultiSelectDropdownComponent<any>, "uni-multi-select-dropdown", 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>;
1135
1408
  }
1136
1409
 
1137
1410
  interface UniNotificationBadgeOptions {
@@ -1186,7 +1459,7 @@ declare class UniAlertComponent extends BaseComponent<UniAlertOptions> implement
1186
1459
  close(): void;
1187
1460
  protected readonly effectiveIconName: _angular_core.Signal<string>;
1188
1461
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<UniAlertComponent, never>;
1189
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<UniAlertComponent, "uni-alert, Alert", never, { "show": { "alias": "show"; "required": false; "isSignal": true; }; "iconName": { "alias": "iconName"; "required": false; "isSignal": true; }; "symbolName": { "alias": "symbolName"; "required": false; "isSignal": true; }; "useVariant": { "alias": "useVariant"; "required": false; "isSignal": true; }; }, { "show": "showChange"; "showing": "showing"; }, never, ["*"], true, never>;
1462
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<UniAlertComponent, "uni-alert", never, { "show": { "alias": "show"; "required": false; "isSignal": true; }; "iconName": { "alias": "iconName"; "required": false; "isSignal": true; }; "symbolName": { "alias": "symbolName"; "required": false; "isSignal": true; }; "useVariant": { "alias": "useVariant"; "required": false; "isSignal": true; }; }, { "show": "showChange"; "showing": "showing"; }, never, ["*"], true, never>;
1190
1463
  }
1191
1464
 
1192
1465
  declare class ConfirmationDialogComponent {
@@ -1194,7 +1467,7 @@ declare class ConfirmationDialogComponent {
1194
1467
  confirmation: _angular_core.InputSignal<Confirmation>;
1195
1468
  showing: _angular_core.OutputEmitterRef<boolean>;
1196
1469
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<ConfirmationDialogComponent, 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>;
1470
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ConfirmationDialogComponent, "uni-confirmation-dialog", never, { "show": { "alias": "show"; "required": false; "isSignal": true; }; "confirmation": { "alias": "confirmation"; "required": false; "isSignal": true; }; }, { "showing": "showing"; }, never, never, true, never>;
1198
1471
  }
1199
1472
 
1200
1473
  declare class NotificationsComponent {
@@ -1213,7 +1486,7 @@ declare class NotificationsComponent {
1213
1486
  handleSnackbarShowingEvent(showing: boolean): void;
1214
1487
  handleAlertShowingEvent(showing: boolean): void;
1215
1488
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<NotificationsComponent, never>;
1216
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<NotificationsComponent, "uni-notifications, Notifications", never, {}, {}, never, never, true, never>;
1489
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<NotificationsComponent, "uni-notifications", never, {}, {}, never, never, true, never>;
1217
1490
  }
1218
1491
 
1219
1492
  interface UniSnackbarOptions {
@@ -1254,7 +1527,7 @@ declare class UniSnackbarComponent extends BaseComponent<UniSnackbarOptions> imp
1254
1527
  protected pauseTimer(): void;
1255
1528
  protected resumeTimer(): void;
1256
1529
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<UniSnackbarComponent, 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>;
1530
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<UniSnackbarComponent, "uni-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>;
1258
1531
  }
1259
1532
 
1260
1533
  interface UniPaginatorOptions {
@@ -1281,7 +1554,7 @@ declare class UniPaginatorComponent<T> extends BaseComponent<UniPaginatorOptions
1281
1554
  jumpToPage(event: Event): void;
1282
1555
  isNumber(page: unknown): page is number;
1283
1556
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<UniPaginatorComponent<any>, never>;
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>;
1557
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<UniPaginatorComponent<any>, "uni-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>;
1285
1558
  }
1286
1559
 
1287
1560
  declare class UniPopoverComponent {
@@ -1304,7 +1577,7 @@ declare class UniPopoverComponent {
1304
1577
  protected readonly popoverClassName: _angular_core.Signal<string>;
1305
1578
  protected readonly arrowClassName: _angular_core.Signal<string>;
1306
1579
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<UniPopoverComponent, never>;
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>;
1580
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<UniPopoverComponent, "uni-popover", never, { "placement": { "alias": "placement"; "required": false; "isSignal": true; }; "autoClose": { "alias": "autoClose"; "required": false; "isSignal": true; }; }, {}, never, ["[trigger]", "*"], true, never>;
1308
1581
  }
1309
1582
 
1310
1583
  declare class UniProgressBarComponent {
@@ -1319,7 +1592,7 @@ declare class UniProgressBarComponent {
1319
1592
  protected readonly className: _angular_core.Signal<string>;
1320
1593
  protected readonly Math: Math;
1321
1594
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<UniProgressBarComponent, 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>;
1595
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<UniProgressBarComponent, "uni-progress-bar", 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>;
1323
1596
  }
1324
1597
 
1325
1598
  declare class UniProgressGaugeComponent extends BaseComponent {
@@ -1330,7 +1603,7 @@ declare class UniProgressGaugeComponent extends BaseComponent {
1330
1603
  private progress;
1331
1604
  protected readonly className: _angular_core.Signal<string>;
1332
1605
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<UniProgressGaugeComponent, 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>;
1606
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<UniProgressGaugeComponent, "uni-progress-gauge", never, { "percent": { "alias": "percent"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
1334
1607
  }
1335
1608
 
1336
1609
  interface UniRadioOption {
@@ -1351,7 +1624,11 @@ interface UniRadioOptions {
1351
1624
  /**
1352
1625
  * The size of the radio buttons
1353
1626
  */
1354
- size: number;
1627
+ size?: number;
1628
+ /** Unselected ring color token. */
1629
+ ringColor?: ColorKey;
1630
+ /** Circle background token. */
1631
+ fillColor?: ColorKey;
1355
1632
  }
1356
1633
 
1357
1634
  declare class UniRadioComponent extends BaseComponent<UniRadioOptions> implements FormValueControl<string> {
@@ -1381,7 +1658,7 @@ declare class UniRadioComponent extends BaseComponent<UniRadioOptions> implement
1381
1658
  handleRadioChange(optionValue: string): void;
1382
1659
  getThemeColor(token: ColorToken): string;
1383
1660
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<UniRadioComponent, 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>;
1661
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<UniRadioComponent, "uni-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>;
1385
1662
  }
1386
1663
 
1387
1664
  /**
@@ -1427,19 +1704,64 @@ declare class UniScrollAreaComponent {
1427
1704
  protected contentClassName: _angular_core.Signal<string>;
1428
1705
  constructor();
1429
1706
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<UniScrollAreaComponent, never>;
1430
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<UniScrollAreaComponent, "div[uni-scroll-area], ScrollArea, div[scroll-area]", never, { "color": { "alias": "color"; "required": false; "isSignal": true; }; "borderRadius": { "alias": "borderRadius"; "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; }; "height": { "alias": "height"; "required": false; "isSignal": true; }; "width": { "alias": "width"; "required": false; "isSignal": true; }; "appearance": { "alias": "appearance"; "required": false; "isSignal": true; }; "autoHeightDisabled": { "alias": "autoHeightDisabled"; "required": false; "isSignal": true; }; "verticalScrollPadding": { "alias": "verticalScrollPadding"; "required": false; "isSignal": true; }; }, { "scrollable": "scrollable"; }, never, ["*"], true, never>;
1707
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<UniScrollAreaComponent, "[uni-scroll-area], [scroll-area]", never, { "color": { "alias": "color"; "required": false; "isSignal": true; }; "borderRadius": { "alias": "borderRadius"; "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; }; "height": { "alias": "height"; "required": false; "isSignal": true; }; "width": { "alias": "width"; "required": false; "isSignal": true; }; "appearance": { "alias": "appearance"; "required": false; "isSignal": true; }; "autoHeightDisabled": { "alias": "autoHeightDisabled"; "required": false; "isSignal": true; }; "verticalScrollPadding": { "alias": "verticalScrollPadding"; "required": false; "isSignal": true; }; }, { "scrollable": "scrollable"; }, never, ["*"], true, never>;
1431
1708
  }
1432
1709
 
1433
- declare class UniSearchInputComponent {
1710
+ /** Theme-level options for `uni-search-input`, resolved by token name. */
1711
+ interface UniSearchInputOptions {
1712
+ /** Leading (decorative) symbol. */
1713
+ searchSymbol?: string;
1714
+ /** Clear-button symbol. */
1715
+ clearSymbol?: string;
1716
+ /** Suggestion list surface color token. */
1717
+ listColor?: ColorKey;
1718
+ /** Suggestion list elevation token. */
1719
+ listShadow?: Shadow;
1720
+ /** Suggestion list radius token. */
1721
+ listBorderRadius?: Radius;
1722
+ /** Cap on rendered suggestions. */
1723
+ maxSuggestions?: number;
1724
+ }
1725
+
1726
+ /**
1727
+ * Generic search field: shared input chrome with a leading magnifier, a clear
1728
+ * button while there's a query, Enter to submit, and optional type-ahead —
1729
+ * pass `suggestions` (refresh them from `change`) and the field becomes an
1730
+ * ARIA combobox with a keyboard-navigable listbox. Escape closes the list
1731
+ * first, then clears the query.
1732
+ */
1733
+ declare class UniSearchInputComponent extends BaseComponent<UniSearchInputOptions> {
1734
+ /** Accessible name for the field, also the placeholder fallback. */
1434
1735
  label: _angular_core.InputSignal<string>;
1736
+ placeholder: _angular_core.InputSignal<string>;
1435
1737
  width: _angular_core.InputSignal<string | number>;
1738
+ debounceTime: _angular_core.InputSignal<number>;
1739
+ /**
1740
+ * Type-ahead entries. Keep them fresh from `change` emissions; the list
1741
+ * shows while the field has focus and entries exist.
1742
+ */
1743
+ suggestions: _angular_core.InputSignal<string[]>;
1436
1744
  change: _angular_core.OutputEmitterRef<string>;
1437
1745
  search: _angular_core.OutputEmitterRef<string>;
1746
+ suggestionSelected: _angular_core.OutputEmitterRef<string>;
1747
+ protected readonly field: _angular_core.Signal<UniDebounceInputComponent>;
1748
+ readonly listboxId: string;
1749
+ protected readonly listOpen: _angular_core.WritableSignal<boolean>;
1750
+ protected readonly activeIndex: _angular_core.WritableSignal<number>;
1751
+ protected readonly visibleSuggestions: _angular_core.Signal<string[]>;
1752
+ protected readonly showList: _angular_core.Signal<boolean>;
1753
+ protected readonly activeOptionId: _angular_core.Signal<string>;
1754
+ protected readonly hasQuery: _angular_core.Signal<boolean>;
1755
+ protected handleChange(value: string): void;
1756
+ protected submit(): void;
1757
+ protected select(suggestion: string): void;
1758
+ protected clear(): void;
1759
+ protected onKeydown(event: KeyboardEvent): void;
1760
+ protected onFocusOut(event: FocusEvent): void;
1438
1761
  protected readonly className: _angular_core.Signal<string>;
1439
- handleSearchInput(searchInput: string): void;
1440
- handleSearch(searchInput: string | undefined): void;
1762
+ protected readonly listClass: _angular_core.Signal<string>;
1441
1763
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<UniSearchInputComponent, never>;
1442
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<UniSearchInputComponent, "SearchInput, uni-search-input", never, { "label": { "alias": "label"; "required": true; "isSignal": true; }; "width": { "alias": "width"; "required": false; "isSignal": true; }; }, { "change": "change"; "search": "search"; }, never, never, true, never>;
1764
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<UniSearchInputComponent, "uni-search-input", never, { "label": { "alias": "label"; "required": true; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "width": { "alias": "width"; "required": false; "isSignal": true; }; "debounceTime": { "alias": "debounceTime"; "required": false; "isSignal": true; }; "suggestions": { "alias": "suggestions"; "required": false; "isSignal": true; }; }, { "change": "change"; "search": "search"; "suggestionSelected": "suggestionSelected"; }, never, never, true, never>;
1443
1765
  }
1444
1766
 
1445
1767
  declare class UniSelectComponent<T> implements FormValueControl<T | null> {
@@ -1470,7 +1792,260 @@ declare class UniSelectComponent<T> implements FormValueControl<T | null> {
1470
1792
  selectClass: string;
1471
1793
  arrowClass: string;
1472
1794
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<UniSelectComponent<any>, 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>;
1795
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<UniSelectComponent<any>, "uni-select", 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>;
1796
+ }
1797
+
1798
+ /** Placeholder geometry: a text line block, a rectangle, or a circle. */
1799
+ type SkeletonShape = 'text' | 'rect' | 'circle';
1800
+ /** Theme-level options for `uni-skeleton`, resolved by token name. */
1801
+ interface UniSkeletonOptions {
1802
+ /** Base placeholder color. */
1803
+ color?: ColorKey;
1804
+ /** Sweep highlight color for the shimmer. */
1805
+ highlightColor?: ColorKey;
1806
+ /** Corner radius token for text/rect shapes (circles are always round). */
1807
+ borderRadius?: Radius;
1808
+ /** 'shimmer' animates a highlight sweep; 'none' renders static blocks. */
1809
+ animation?: 'shimmer' | 'none';
1810
+ /** Shimmer sweep duration in seconds. */
1811
+ duration?: number;
1812
+ /** Vertical gap between text lines, as a spacing token. */
1813
+ gap?: OptionalSize;
1814
+ }
1815
+
1816
+ /**
1817
+ * Loading placeholder painted with surface tokens. `text` renders one or more
1818
+ * lines (the last line shortened, as real text would be), `rect` and `circle`
1819
+ * render fixed shapes. The shimmer only animates when the user allows motion;
1820
+ * it degrades to static blocks under `prefers-reduced-motion`.
1821
+ */
1822
+ declare class UniSkeletonComponent extends BaseComponent<UniSkeletonOptions> {
1823
+ shape: _angular_core.InputSignal<SkeletonShape>;
1824
+ /** CSS width; defaults to 100% for text/rect and `height` for circles. */
1825
+ width: _angular_core.InputSignal<string | number>;
1826
+ /** CSS height per block; defaults to 1em (text), 96px (rect), 40px (circle). */
1827
+ height: _angular_core.InputSignal<string | number>;
1828
+ /** Number of text lines (text shape only). */
1829
+ lines: _angular_core.InputSignal<number>;
1830
+ private readonly cssSize;
1831
+ protected readonly resolvedHeight: _angular_core.Signal<string>;
1832
+ protected readonly lineWidths: _angular_core.Signal<string[]>;
1833
+ private readonly sweep;
1834
+ protected readonly className: _angular_core.Signal<string>;
1835
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<UniSkeletonComponent, never>;
1836
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<UniSkeletonComponent, "uni-skeleton", never, { "shape": { "alias": "shape"; "required": false; "isSignal": true; }; "width": { "alias": "width"; "required": false; "isSignal": true; }; "height": { "alias": "height"; "required": false; "isSignal": true; }; "lines": { "alias": "lines"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
1837
+ }
1838
+
1839
+ /** Theme-level options for `uni-slider`, resolved by token name. */
1840
+ interface UniSliderOptions {
1841
+ /** Fill and thumb color. */
1842
+ color?: ColorKey;
1843
+ /** Unfilled track color. */
1844
+ trackColor?: ColorKey;
1845
+ /** Track and thumb radius token. */
1846
+ borderRadius?: Radius;
1847
+ /** Track height in px. */
1848
+ trackHeight?: number;
1849
+ /** Thumb diameter in px. */
1850
+ thumbSize?: number;
1851
+ }
1852
+
1853
+ /**
1854
+ * Range slider on a native `<input type="range">` — keyboard interaction and
1855
+ * the ARIA slider contract come from the platform. Fill, track, thumb and
1856
+ * radii resolve from `slider` theme tokens; the fill percentage rides a CSS
1857
+ * custom property so dragging never regenerates styles.
1858
+ */
1859
+ declare class UniSliderComponent extends BaseComponent<UniSliderOptions> implements FormValueControl<number> {
1860
+ readonly value: _angular_core.ModelSignal<number>;
1861
+ readonly disabled: _angular_core.InputSignal<boolean>;
1862
+ readonly touched: _angular_core.ModelSignal<boolean>;
1863
+ readonly invalid: _angular_core.InputSignal<boolean>;
1864
+ readonly dirty: _angular_core.InputSignal<boolean>;
1865
+ /** Synced from required() validators by the Signal Forms [field] directive. */
1866
+ readonly required: _angular_core.InputSignal<boolean>;
1867
+ /**
1868
+ * Id(s) of external element(s) describing this control — typically your
1869
+ * app-rendered value or error text — exposed as aria-describedby.
1870
+ */
1871
+ readonly ariaDescribedBy: _angular_core.InputSignal<string>;
1872
+ label: _angular_core.InputSignal<string>;
1873
+ min: _angular_core.InputSignal<number>;
1874
+ max: _angular_core.InputSignal<number>;
1875
+ step: _angular_core.InputSignal<number>;
1876
+ protected readonly resolvedMin: _angular_core.Signal<number>;
1877
+ protected readonly resolvedMax: _angular_core.Signal<number>;
1878
+ markAsTouched(): void;
1879
+ handleInput(event: Event): void;
1880
+ protected readonly fillPercent: _angular_core.Signal<string>;
1881
+ protected readonly inputClass: _angular_core.Signal<string>;
1882
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<UniSliderComponent, never>;
1883
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<UniSliderComponent, "uni-slider", 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; }; "min": { "alias": "min"; "required": false; "isSignal": true; }; "max": { "alias": "max"; "required": false; "isSignal": true; }; "step": { "alias": "step"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "touched": "touchedChange"; }, never, never, true, never>;
1884
+ }
1885
+
1886
+ /** Theme-level options for `uni-stat`, resolved by token name. */
1887
+ interface UniStatOptions {
1888
+ /** Label typography token (muted, small). */
1889
+ labelTypeface?: Typeface;
1890
+ /** Value typography token — defaults to the type scale's `stat` role. */
1891
+ valueTypeface?: Typeface;
1892
+ /** Tile surface color token. */
1893
+ color?: ContainerColorToken;
1894
+ /** Frame as a border primitive token. */
1895
+ border?: Border;
1896
+ /** Corner radius token. */
1897
+ borderRadius?: Radius;
1898
+ /** Delta ink when the movement is good. */
1899
+ positiveColor?: ColorKey;
1900
+ /** Delta ink when the movement is bad. */
1901
+ negativeColor?: ColorKey;
1902
+ /** Sparkline stroke color. */
1903
+ trendColor?: ColorKey;
1904
+ /** Sparkline endpoint color. */
1905
+ trendAccent?: ColorKey;
1906
+ /** Inner padding, as a spacing token. */
1907
+ padding?: OptionalSize;
1908
+ /** Vertical gap between rows, as a spacing token. */
1909
+ gap?: OptionalSize;
1910
+ }
1911
+
1912
+ /**
1913
+ * KPI stat tile: muted label, large value (numbers auto-compact: 48234 →
1914
+ * "48.2K"), an optional delta whose ink is decided by *direction × whether up
1915
+ * is good* (never direction alone — churn going down is good news), and an
1916
+ * optional decorative sparkline. Frame, typography and inks are all `stat`
1917
+ * theme tokens.
1918
+ */
1919
+ declare class UniStatComponent extends BaseComponent<UniStatOptions> {
1920
+ /** What is being measured, sentence case. */
1921
+ label: _angular_core.InputSignal<string>;
1922
+ /** The headline number: strings render verbatim, numbers auto-compact. */
1923
+ value: _angular_core.InputSignal<string | number>;
1924
+ /** Signed change, e.g. "+12.4%" or "-0.4%". The sign drives the arrow. */
1925
+ delta: _angular_core.InputSignal<string>;
1926
+ /** Whether an upward movement is good news. Flip for churn, errors, cost. */
1927
+ upIsGood: _angular_core.InputSignal<boolean>;
1928
+ /** Names the comparison period, e.g. "vs last month". */
1929
+ caption: _angular_core.InputSignal<string>;
1930
+ /** Recent values for the decorative sparkline (12 points reads best). */
1931
+ trend: _angular_core.InputSignal<number[]>;
1932
+ protected readonly srOnly: string;
1933
+ protected readonly displayValue: _angular_core.Signal<string>;
1934
+ protected readonly deltaIsUp: _angular_core.Signal<boolean>;
1935
+ protected readonly deltaIsGood: _angular_core.Signal<boolean>;
1936
+ protected readonly deltaMagnitude: _angular_core.Signal<string>;
1937
+ protected readonly sparkline: _angular_core.Signal<{
1938
+ width: number;
1939
+ height: number;
1940
+ path: string;
1941
+ endX: string;
1942
+ endY: string;
1943
+ }>;
1944
+ protected readonly className: _angular_core.Signal<string>;
1945
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<UniStatComponent, never>;
1946
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<UniStatComponent, "uni-stat", never, { "label": { "alias": "label"; "required": true; "isSignal": true; }; "value": { "alias": "value"; "required": true; "isSignal": true; }; "delta": { "alias": "delta"; "required": false; "isSignal": true; }; "upIsGood": { "alias": "upIsGood"; "required": false; "isSignal": true; }; "caption": { "alias": "caption"; "required": false; "isSignal": true; }; "trend": { "alias": "trend"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
1947
+ }
1948
+
1949
+ /**
1950
+ * One tab inside `uni-tabs`: a label for the tablist plus projected panel
1951
+ * content. Content is captured in a template and only instantiated while the
1952
+ * tab is selected, so inactive panels cost nothing.
1953
+ */
1954
+ declare class UniTabComponent {
1955
+ label: _angular_core.InputSignal<string>;
1956
+ disabled: _angular_core.InputSignal<boolean>;
1957
+ /** Stable ids wiring tab ↔ panel ARIA relationships. */
1958
+ readonly id: string;
1959
+ readonly panelId: string;
1960
+ readonly content: _angular_core.Signal<TemplateRef<unknown>>;
1961
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<UniTabComponent, never>;
1962
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<UniTabComponent, "uni-tab", never, { "label": { "alias": "label"; "required": true; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
1963
+ }
1964
+
1965
+ /**
1966
+ * Theme-level options for `uni-tabs`, resolved by token name. The defaults
1967
+ * render Material-style underline tabs; a theme can re-point the tokens to
1968
+ * get pills (`borderRadius: 'max'` + `activeColor`) or any custom treatment.
1969
+ */
1970
+ interface UniTabsOptions {
1971
+ /** Tab label typography. */
1972
+ typeface?: Typeface;
1973
+ /** Inactive tab label color. */
1974
+ textColor?: ColorKey;
1975
+ /** Active tab label color. */
1976
+ activeTextColor?: ColorKey;
1977
+ /** Active indicator (underline) color. */
1978
+ indicatorColor?: ColorKey;
1979
+ /** Active indicator height as a thickness token. */
1980
+ indicatorThickness?: Thickness;
1981
+ /** Rule under the whole tablist, as a border primitive token. */
1982
+ divider?: Border;
1983
+ /** Space between tabs, as a spacing token. */
1984
+ gap?: OptionalSize;
1985
+ /** Tab corner radius — 'max' plus `activeColor` gives segmented pills. */
1986
+ borderRadius?: Radius;
1987
+ /** Horizontal padding inside each tab, as a spacing token. */
1988
+ padding?: OptionalSize;
1989
+ /** Optional active tab background color (pill styles). */
1990
+ activeColor?: ColorKey;
1991
+ }
1992
+
1993
+ /**
1994
+ * WAI-ARIA tabs: roving tabindex, automatic activation (arrow keys move focus
1995
+ * and select), Home/End, disabled tabs skipped. Only the selected panel is
1996
+ * instantiated. All styling resolves from `tabs` theme option tokens.
1997
+ */
1998
+ declare class UniTabsComponent extends BaseComponent<UniTabsOptions> {
1999
+ /** Index of the selected tab; two-way bindable. */
2000
+ readonly selectedIndex: _angular_core.ModelSignal<number>;
2001
+ protected readonly tabs: _angular_core.Signal<readonly UniTabComponent[]>;
2002
+ private readonly tabButtons;
2003
+ /** The selection, snapped to the nearest enabled tab. */
2004
+ protected readonly activeIndex: _angular_core.Signal<number>;
2005
+ protected readonly activeTab: _angular_core.Signal<UniTabComponent>;
2006
+ protected select(index: number): void;
2007
+ protected onKeydown(event: KeyboardEvent): void;
2008
+ protected readonly tablistClass: _angular_core.Signal<string>;
2009
+ protected readonly tabClass: _angular_core.Signal<string>;
2010
+ protected readonly panelClass: _angular_core.Signal<string>;
2011
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<UniTabsComponent, never>;
2012
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<UniTabsComponent, "uni-tabs", never, { "selectedIndex": { "alias": "selectedIndex"; "required": false; "isSignal": true; }; }, { "selectedIndex": "selectedIndexChange"; }, ["tabs"], never, true, never>;
2013
+ }
2014
+
2015
+ declare class UniTextareaComponent implements FormValueControl<string> {
2016
+ private theme;
2017
+ readonly value: _angular_core.ModelSignal<string>;
2018
+ readonly disabled: _angular_core.InputSignal<boolean>;
2019
+ readonly touched: _angular_core.ModelSignal<boolean>;
2020
+ readonly invalid: _angular_core.InputSignal<boolean>;
2021
+ readonly dirty: _angular_core.InputSignal<boolean>;
2022
+ /** Synced from required() validators by the Signal Forms [field] directive. */
2023
+ readonly required: _angular_core.InputSignal<boolean>;
2024
+ /**
2025
+ * Id(s) of external element(s) describing this control — typically your
2026
+ * app-rendered error message — exposed as aria-describedby.
2027
+ */
2028
+ readonly ariaDescribedBy: _angular_core.InputSignal<string>;
2029
+ label: _angular_core.InputSignal<string>;
2030
+ placeholder: _angular_core.InputSignal<string>;
2031
+ /** Visible text rows. Defaults to the theme's `textarea` options. */
2032
+ rows: _angular_core.InputSignal<number>;
2033
+ private options;
2034
+ protected readonly resolvedRows: _angular_core.Signal<number>;
2035
+ protected readonly showError: _angular_core.Signal<boolean>;
2036
+ protected readonly textareaClass: _angular_core.Signal<string>;
2037
+ markAsTouched(): void;
2038
+ handleInput(event: Event): void;
2039
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<UniTextareaComponent, never>;
2040
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<UniTextareaComponent, "uni-textarea", 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; }; "rows": { "alias": "rows"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "touched": "touchedChange"; }, never, never, true, never>;
2041
+ }
2042
+
2043
+ /** Theme-level options for `uni-textarea`. */
2044
+ interface UniTextareaOptions {
2045
+ /** Default visible text rows when the component doesn't set `rows`. */
2046
+ rows?: number;
2047
+ /** CSS resize behavior of the field. */
2048
+ resize?: 'none' | 'vertical' | 'horizontal' | 'both';
1474
2049
  }
1475
2050
 
1476
2051
  declare class UniSortHeaderComponent<T> {
@@ -1503,7 +2078,7 @@ declare class UniSymbolComponent extends BaseComponent<SymbolOptions> {
1503
2078
  opticalSize: _angular_core.InputSignal<number>;
1504
2079
  protected readonly className: _angular_core.Signal<string>;
1505
2080
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<UniSymbolComponent, never>;
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>;
2081
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<UniSymbolComponent, "uni-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>;
1507
2082
  }
1508
2083
 
1509
2084
  declare class UniTagComponent {
@@ -1512,11 +2087,23 @@ declare class UniTagComponent {
1512
2087
  close: _angular_core.OutputEmitterRef<string | number>;
1513
2088
  handleClose(): void;
1514
2089
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<UniTagComponent, never>;
1515
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<UniTagComponent, "Tag, uni-tag", never, { "label": { "alias": "label"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; }, { "close": "close"; }, never, never, true, never>;
2090
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<UniTagComponent, "uni-tag", never, { "label": { "alias": "label"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; }, { "close": "close"; }, never, never, true, never>;
1516
2091
  }
1517
2092
 
2093
+ /**
2094
+ * The typography primitive, applied as an attribute to any element so
2095
+ * semantics stay yours. The attribute value is the typeface:
2096
+ * `<h1 uni-text="display-small">`, `<span uni-text="caption">`, dynamic via
2097
+ * `[uni-text]="role()"`. With no value, the typeface is inferred from the
2098
+ * host element (h1 → headline-large, p → body-1-long, …), falling back to
2099
+ * `title-small`; the `typeface` input remains as an explicit override.
2100
+ */
1518
2101
  declare class UniTextComponent {
1519
2102
  theme: ThemeService;
2103
+ private readonly tag;
2104
+ /** Typeface via the selector attribute: `uni-text="headline-large"`. */
2105
+ readonly uniText: _angular_core.InputSignal<string>;
2106
+ /** Explicit typeface; the attribute value wins when both are set. */
1520
2107
  typeface: _angular_core.InputSignal<string>;
1521
2108
  color: _angular_core.InputSignal<string>;
1522
2109
  display: _angular_core.InputSignal<OptionalDisplay>;
@@ -1524,9 +2111,10 @@ declare class UniTextComponent {
1524
2111
  nowrap: _angular_core.InputSignal<boolean>;
1525
2112
  maxWidth: _angular_core.InputSignal<number>;
1526
2113
  ellipsis: _angular_core.InputSignal<boolean>;
2114
+ protected readonly resolvedTypeface: _angular_core.Signal<string>;
1527
2115
  protected readonly className: _angular_core.Signal<string>;
1528
2116
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<UniTextComponent, never>;
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>;
2117
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<UniTextComponent, "[uni-text]", never, { "uniText": { "alias": "uni-text"; "required": false; "isSignal": true; }; "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>;
1530
2118
  }
1531
2119
 
1532
2120
  interface Preset {
@@ -1537,6 +2125,7 @@ declare class UniThemeBuilderComponent {
1537
2125
  protected theme: ThemeService;
1538
2126
  protected readonly schemes: ColorScheme[];
1539
2127
  protected readonly categories: ColorCategory[];
2128
+ protected readonly shapes: ThemeShape[];
1540
2129
  protected readonly variants: Variant[];
1541
2130
  protected readonly sizes: readonly ["sm", "md", "lg", "xl"];
1542
2131
  protected readonly swatches: {
@@ -1548,6 +2137,7 @@ declare class UniThemeBuilderComponent {
1548
2137
  protected seed: _angular_core.WritableSignal<string>;
1549
2138
  protected scheme: _angular_core.WritableSignal<ColorScheme>;
1550
2139
  protected category: _angular_core.WritableSignal<ColorCategory>;
2140
+ protected shape: _angular_core.WritableSignal<ThemeShape>;
1551
2141
  protected floor: _angular_core.WritableSignal<number>;
1552
2142
  protected mode: _angular_core.WritableSignal<"light" | "dark">;
1553
2143
  protected pinPrimary: _angular_core.WritableSignal<boolean>;
@@ -1556,14 +2146,43 @@ declare class UniThemeBuilderComponent {
1556
2146
  protected secondaryHex: _angular_core.WritableSignal<string>;
1557
2147
  /** Soft brand targets carried by the active preset (cleared on seed edits). */
1558
2148
  protected targets: _angular_core.WritableSignal<Partial<Record<_uni_design_system_uni_core.BrandRole, string>>>;
2149
+ protected copied: _angular_core.WritableSignal<"file" | "ngadd" | "dtcg">;
2150
+ protected showAllPairs: _angular_core.WritableSignal<boolean>;
1559
2151
  constructor();
1560
2152
  protected config: _angular_core.Signal<BrandPaletteConfig>;
2153
+ /**
2154
+ * Both modes generated on every input change (< 15 ms each), independent of
2155
+ * the storybook-wide theme — the side-by-side preview and the contrast
2156
+ * report always show the full light+dark picture.
2157
+ */
2158
+ protected palettes: _angular_core.Signal<{
2159
+ light: Partial<Record<string, string>>;
2160
+ dark: Partial<Record<string, string>>;
2161
+ checks: ContrastCheck[];
2162
+ }>;
2163
+ protected modePanels: _angular_core.Signal<{
2164
+ label: "light" | "dark";
2165
+ colors: Colors;
2166
+ }[]>;
2167
+ protected report: _angular_core.Signal<{
2168
+ checks: ContrastCheck[];
2169
+ failing: ContrastCheck[];
2170
+ worst: number;
2171
+ }>;
2172
+ protected visibleChecks: _angular_core.Signal<ContrastCheck[]>;
1561
2173
  protected snippet: _angular_core.Signal<string>;
2174
+ /** The builder state expressed as engine input — drives all three exports. */
2175
+ protected generationInput: _angular_core.Signal<GenerationInput>;
1562
2176
  protected color(token: ColorToken): string;
1563
2177
  private apply;
2178
+ private copyToClipboard;
2179
+ protected copyThemeFile(): void;
2180
+ protected copyNgAdd(): void;
2181
+ protected copyDtcg(): void;
1564
2182
  protected setSeed(v: string): void;
1565
2183
  protected setScheme(v: ColorScheme): void;
1566
2184
  protected setCategory(v: ColorCategory): void;
2185
+ protected setShape(v: ThemeShape): void;
1567
2186
  protected setFloor(v: string): void;
1568
2187
  protected setMode(v: 'light' | 'dark'): void;
1569
2188
  protected setPinPrimary(v: boolean): void;
@@ -1584,7 +2203,11 @@ interface UniToggleOptions {
1584
2203
  /**
1585
2204
  * The size of the toggle switch
1586
2205
  */
1587
- size: number;
2206
+ size?: number;
2207
+ /** Off-state track color token. */
2208
+ trackColor?: ColorKey;
2209
+ /** Knob color token. */
2210
+ knobColor?: ColorKey;
1588
2211
  }
1589
2212
 
1590
2213
  declare class UniToggleComponent extends BaseComponent<UniToggleOptions> implements FormCheckboxControl {
@@ -1609,7 +2232,7 @@ declare class UniToggleComponent extends BaseComponent<UniToggleOptions> impleme
1609
2232
  protected readonly toggleInput: _angular_core.Signal<string>;
1610
2233
  getThemeColor(token: ColorToken): string;
1611
2234
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<UniToggleComponent, 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>;
2235
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<UniToggleComponent, "uni-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>;
1613
2236
  }
1614
2237
 
1615
2238
  interface UniTooltipOptions {
@@ -1652,7 +2275,7 @@ declare class UniTooltipComponent extends BaseComponent<UniTooltipOptions> {
1652
2275
  protected readonly tooltipClassName: _angular_core.Signal<string>;
1653
2276
  protected readonly arrowClassName: _angular_core.Signal<string>;
1654
2277
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<UniTooltipComponent, 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>;
2278
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<UniTooltipComponent, "uni-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>;
1656
2279
  }
1657
2280
 
1658
2281
  declare class BodyRenderDirective implements OnInit {
@@ -1673,5 +2296,5 @@ declare class DragAndDropDirective {
1673
2296
  static ɵdir: _angular_core.ɵɵDirectiveDeclaration<DragAndDropDirective, "[uni-drag-n-drop], [dragAndDrop]", never, {}, { "onFileDropped": "onFileDropped"; }, never, never, true, never>;
1674
2297
  }
1675
2298
 
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 };
2299
+ export { BodyRenderDirective, ConfirmationDialogComponent, DragAndDropDirective, FOCUSABLE_SELECTOR, LocalStorageService, NotificationService, NotificationsComponent, RippleDirective, ThemeService, UNI_THEMES, UniAlertComponent, UniAppBarComponent, UniAvatarComponent, UniAvatarGroupComponent, UniBackgroundComponent, UniBadgeComponent, UniBaseDatasource, UniBoxComponent, UniBreadcrumbComponent, UniButtonComponent, UniButtonGroupComponent, UniCardComponent, UniCardContentComponent, UniCardHeaderComponent, UniCenterComponent, UniCheckboxComponent, UniDataSearchComponent, UniDataTableComponent, UniDebounceInputComponent, UniDialogButtonsComponent, UniDialogComponent, UniDialogHeaderComponent, UniDividerComponent, UniDrawerComponent, 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, UniSkeletonComponent, UniSliderComponent, UniSnackbarComponent, UniSortHeaderComponent, UniStackComponent, UniStatComponent, UniSymbolComponent, UniTabComponent, UniTabsComponent, UniTagComponent, UniTextComponent, UniTextareaComponent, UniThemeBuilderComponent, UniToggleComponent, UniTooltipComponent, UniWrapComponent, acceptableFile, anchorArrowStyles, anchorStyles, getFileExtension, motionSafe, newAnchorName, resolveFocusTarget, uniqueId, useTimer, visuallyHidden };
2300
+ export type { Alert, AnchorOffset, BrandPaletteConfig, BreadcrumbItem, ButtonGroupConfig, ButtonGroupItem, ColumnDefinition, Confirmation, DataLoader, DrawerMode, DrawerPosition, ImagePosition, MenuItem, MenuItemWithLabel, MenuItemWithTemplate, Option, Options, PageRequest, PageResponse, Placement, ScrollbarAppearance, SkeletonShape, Snackbar, Sort, SortDirection, UniAppBarOptions, UniAvatarGroupOptions, UniAvatarOptions, UniBreadcrumbOptions, UniCheckboxOptions, UniDataSearchOptions, UniDataTableOptions, UniDatasource, UniDrawerOptions, UniInputBoxOptions, UniMultiSelectDropdownOptions, UniNotificationBadgeOptions, UniPaginatorOptions, UniRadioOption, UniRadioOptions, UniSearchInputOptions, UniSkeletonOptions, UniSliderOptions, UniStatOptions, UniTabsOptions, UniTextareaOptions, UniToggleOptions };