@uni-design-system/uni-angular 10.1.0 → 10.2.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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@uni-design-system/uni-angular",
3
- "version": "10.1.0",
3
+ "version": "10.2.0",
4
4
  "license": "MIT",
5
5
  "repository": {
6
6
  "type": "git",
@@ -22,7 +22,7 @@
22
22
  "@angular/core": "^21.2.0",
23
23
  "@angular/forms": "^21.2.0",
24
24
  "@emotion/css": "^11.0.0",
25
- "@uni-design-system/uni-core": "^10.1.0"
25
+ "@uni-design-system/uni-core": "^10.2.0"
26
26
  },
27
27
  "module": "fesm2022/uni-design-system-uni-angular.mjs",
28
28
  "typings": "types/uni-design-system-uni-angular.d.ts",
@@ -901,6 +901,30 @@ var buildBorders = (c) => ({
901
901
  * surface and draws the edge — so every role stays consistent and a theme can
902
902
  * still override any single cell.
903
903
  */
904
+ /**
905
+ * Accent roles for the selection controls (checkbox, radio, toggle).
906
+ *
907
+ * A variant names the intent; this says which colour token draws it, and the
908
+ * component decides where it lands — the box fill, the ring, the dot, the
909
+ * track, the focus ring. Keeping it as a role rather than a `variants`
910
+ * StyleExpression is what stops interior class names like `.checkbox-check`
911
+ * becoming public theme contract.
912
+ *
913
+ * The same seven names `button` and `iconButton` theme, so the library is
914
+ * consistent about which intents exist by default.
915
+ */
916
+ var SELECTION_ACCENTS = {
917
+ primary: { accent: "primary" },
918
+ secondary: { accent: "secondary" },
919
+ tertiary: { accent: "tertiary" },
920
+ warn: { accent: "warn" },
921
+ success: { accent: "success" },
922
+ disabled: { accent: "disabled" },
923
+ ghost: {
924
+ accent: "ghost",
925
+ onAccent: "on-primary"
926
+ }
927
+ };
904
928
  var tagVariant = (c, role) => ({ [role]: {
905
929
  backgroundColor: c[`${role}-container`],
906
930
  color: c[`on-${role}-container`],
@@ -1037,18 +1061,24 @@ var buildComponents = (c) => ({
1037
1061
  activeColor: "primary-container",
1038
1062
  maxSuggestions: 8
1039
1063
  } },
1040
- checkbox: { options: {
1041
- size: 20,
1042
- boxColor: "surface",
1043
- borderRadius: 2,
1044
- focusRingGap: 2
1045
- } },
1046
- radio: { options: {
1047
- size: 20,
1048
- ringColor: "outline",
1049
- fillColor: "surface",
1050
- motion: "control"
1051
- } },
1064
+ checkbox: {
1065
+ options: {
1066
+ size: 20,
1067
+ boxColor: "surface",
1068
+ borderRadius: 2,
1069
+ focusRingGap: 2
1070
+ },
1071
+ variantOptions: SELECTION_ACCENTS
1072
+ },
1073
+ radio: {
1074
+ options: {
1075
+ size: 20,
1076
+ ringColor: "outline",
1077
+ fillColor: "surface",
1078
+ motion: "control"
1079
+ },
1080
+ variantOptions: SELECTION_ACCENTS
1081
+ },
1052
1082
  dialog: { options: {
1053
1083
  borderRadius: "lg",
1054
1084
  color: "primary-surface",
@@ -1110,13 +1140,16 @@ var buildComponents = (c) => ({
1110
1140
  activeSymbol: "check",
1111
1141
  motion: "control"
1112
1142
  },
1113
- variants: { warn: {
1114
- color: c.warn,
1115
- [HOVER_OR_KEYBOARD_FOCUS]: {
1116
- backgroundColor: c["warn-container"],
1117
- color: c["on-warn-container"]
1143
+ variants: {
1144
+ primary: {},
1145
+ warn: {
1146
+ color: c.warn,
1147
+ [HOVER_OR_KEYBOARD_FOCUS]: {
1148
+ backgroundColor: c["warn-container"],
1149
+ color: c["on-warn-container"]
1150
+ }
1118
1151
  }
1119
- } }
1152
+ }
1120
1153
  },
1121
1154
  popover: { options: {
1122
1155
  color: "primary-surface",
@@ -1665,6 +1698,7 @@ var buildComponents = (c) => ({
1665
1698
  knobColor: "surface",
1666
1699
  motion: "control"
1667
1700
  },
1701
+ variantOptions: SELECTION_ACCENTS,
1668
1702
  sizes: {
1669
1703
  sm: {
1670
1704
  width: 28,
@@ -2125,7 +2159,7 @@ var UniThemes = {
2125
2159
  Object.keys(UniThemes)[0];
2126
2160
  //#endregion
2127
2161
  //#region package.json
2128
- var version = "10.1.0";
2162
+ var version = "10.2.0";
2129
2163
  //#endregion
2130
2164
  //#region schematics-src/ng-add/transforms.ts
2131
2165
  var addDependencies = (packageJsonText, deps) => {
@@ -1008,8 +1008,8 @@ declare class ThemeService {
1008
1008
  readonly theme: Signal<UniTheme>;
1009
1009
  /** Selectable themes, derived from the registry — reactive to registration. */
1010
1010
  readonly themeOptions: Signal<Options<string>>;
1011
- components: Signal<Partial<Record<ComponentName, ComponentTheme<object>>>>;
1012
- component: <T>(componentName: ComponentName) => Signal<ComponentTheme<T>>;
1011
+ components: Signal<Partial<Record<ComponentName, ComponentTheme<object, object>>>>;
1012
+ component: <T, V = object>(componentName: ComponentName) => Signal<ComponentTheme<T, V>>;
1013
1013
  colors: Signal<Partial<Record<string, string>>>;
1014
1014
  typeFaces: Signal<Record<string, _uni_design_system_uni_core.TypeFaceDefinition>>;
1015
1015
  spacing: Signal<_uni_design_system_uni_core.Spacing>;
@@ -1068,6 +1068,28 @@ declare class ThemeService {
1068
1068
  componentStyle: (componentName: ComponentName, variant: Variant, size: Size) => Signal<{
1069
1069
  [x: string]: string | number | _uni_design_system_uni_core.StyleExpression;
1070
1070
  }>;
1071
+ /**
1072
+ * The active variant's roles from a component's `variantOptions` map — the
1073
+ * per-variant data a component *reads* rather than CSS it applies. See
1074
+ * `ComponentTheme.variantOptions`.
1075
+ */
1076
+ variantRoles: <V>(componentName: ComponentName, variant: Variant) => Signal<V | undefined>;
1077
+ private readonly warnedVariants;
1078
+ /**
1079
+ * Say something when a component is asked for a variant its theme does not
1080
+ * define, once per component/variant pair.
1081
+ *
1082
+ * `Variant` is an open registry, so a name the theme never styled cannot be a
1083
+ * compile error — and the miss is silent by construction, because an absent
1084
+ * style spreads to nothing and an absent role falls back. That is exactly the
1085
+ * ordinary state of a work in progress: a designer registers `destructive`,
1086
+ * uses it, and has not written its theme block yet. Same reasoning as
1087
+ * {@link resolveSpacing}, whose open scale has the same problem.
1088
+ *
1089
+ * A component that themes no variants at all is not missing anything — most
1090
+ * of the library never varies by intent — so silence there is correct.
1091
+ */
1092
+ private warnUnthemedVariant;
1071
1093
  /**
1072
1094
  * Resolve a spacing token to its CSS value. `'none'` resolves through the
1073
1095
  * scale like any other token — it is `0`, not the string `'none'`, which is
@@ -1161,7 +1183,7 @@ declare class ThemeService {
1161
1183
  gap(gap: OptionalSize): NullableStyleExpression;
1162
1184
  zIndex(element: ZIndexableElements | undefined): NullableStyleExpression;
1163
1185
  borderColor(borderColor: ColorToken): NullableStyleExpression;
1164
- getComponentTheme<T>(componentName: ComponentName): Signal<ComponentTheme<T>>;
1186
+ getComponentTheme<T, V = object>(componentName: ComponentName): Signal<ComponentTheme<T, V>>;
1165
1187
  getComponentOptions: <T>(componentName: ComponentName) => _angular_core.WritableSignal<T>;
1166
1188
  componentOptions: (componentName: ComponentName) => Signal<unknown>;
1167
1189
  style(prop: string, value: string | number | undefined): NullableStyleExpression;
@@ -1177,20 +1199,44 @@ declare class ThemeService {
1177
1199
 
1178
1200
  declare const UNI_THEMES: InjectionToken<Record<string, UniTheme>>;
1179
1201
 
1180
- declare class BaseComponent<T = unknown> {
1202
+ declare class BaseComponent<T = unknown, V = unknown> {
1181
1203
  protected componentName: ComponentName;
1182
1204
  theme: ThemeService;
1183
- variant: _angular_core.InputSignal<Variant>;
1205
+ variant: _angular_core.InputSignal<keyof _uni_design_system_uni_core.UniVariantRegistry>;
1184
1206
  size: _angular_core.InputSignal<Size>;
1185
- componentTheme: _angular_core.Signal<_uni_design_system_uni_core.ComponentTheme<T>>;
1207
+ componentTheme: _angular_core.Signal<_uni_design_system_uni_core.ComponentTheme<T, V>>;
1208
+ /**
1209
+ * The active variant's roles from the theme's `variantOptions` map, for
1210
+ * components whose accent lands on several interior elements and so cannot
1211
+ * be expressed as a single applied style. Undefined when the theme does not
1212
+ * define this variant — which also raises a dev warning.
1213
+ */
1214
+ variantRoles: _angular_core.Signal<V>;
1186
1215
  componentOptions: _angular_core.Signal<T>;
1187
1216
  style: _angular_core.Signal<{
1188
1217
  [x: string]: string | number | _uni_design_system_uni_core.StyleExpression;
1189
1218
  }>;
1190
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<BaseComponent<any>, never>;
1191
- 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>;
1219
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<BaseComponent<any, any>, never>;
1220
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<BaseComponent<any, any>, "ng-component", never, { "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
1192
1221
  }
1193
1222
 
1223
+ /**
1224
+ * What a variant means for a checkbox, as theme data the component reads.
1225
+ *
1226
+ * The accent lands in five places — the box outline, the checked border, the
1227
+ * checked and indeterminate fills, and the focus ring — so it cannot be a
1228
+ * single applied style without naming interior classes in the theme. Naming
1229
+ * the role instead keeps `.checkbox-box` and `.checkbox-check` private.
1230
+ */
1231
+ interface UniCheckboxVariant {
1232
+ /** Box outline, checked fill and focus ring. */
1233
+ accent: ColorKey;
1234
+ /**
1235
+ * The tick and dash, which draw on top of the accent fill. Defaults to the
1236
+ * accent's paired `on-` token; set it where no such pair exists.
1237
+ */
1238
+ onAccent?: ColorKey;
1239
+ }
1194
1240
  interface UniCheckboxOptions {
1195
1241
  size?: string | number;
1196
1242
  borderRadius?: string | number;
@@ -1199,7 +1245,7 @@ interface UniCheckboxOptions {
1199
1245
  focusRingGap?: string | number;
1200
1246
  }
1201
1247
 
1202
- declare class UniCheckboxComponent extends BaseComponent<UniCheckboxOptions> implements FormCheckboxControl {
1248
+ declare class UniCheckboxComponent extends BaseComponent<UniCheckboxOptions, UniCheckboxVariant> implements FormCheckboxControl {
1203
1249
  readonly checked: _angular_core.ModelSignal<boolean>;
1204
1250
  readonly disabled: _angular_core.InputSignal<boolean>;
1205
1251
  readonly touched: _angular_core.ModelSignal<boolean>;
@@ -1207,6 +1253,13 @@ declare class UniCheckboxComponent extends BaseComponent<UniCheckboxOptions> imp
1207
1253
  readonly dirty: _angular_core.InputSignal<boolean>;
1208
1254
  /** Synced from required() validators by the Signal Forms [formField] directive. */
1209
1255
  readonly required: _angular_core.InputSignal<boolean>;
1256
+ /**
1257
+ * Accent colour token, overriding the variant's themed accent for one
1258
+ * instance. Mirrors `uni-toggle`'s input of the same name — it exists because
1259
+ * `variant` defaults to `'primary'`, so the component cannot tell "set to
1260
+ * primary" from "not set".
1261
+ */
1262
+ readonly checkedColor: _angular_core.InputSignal<string>;
1210
1263
  /**
1211
1264
  * Id(s) of external element(s) describing this control — typically your
1212
1265
  * app-rendered error message — exposed as aria-describedby.
@@ -1223,11 +1276,22 @@ declare class UniCheckboxComponent extends BaseComponent<UniCheckboxOptions> imp
1223
1276
  handleChange(event: Event): void;
1224
1277
  protected readonly checkboxLabel: _angular_core.Signal<string>;
1225
1278
  protected readonly checkboxInput: _angular_core.Signal<string>;
1226
- getThemeColor(token: ColorToken): string;
1227
- /** The content color paired with a variant fill (on-primary, on-warn, …). */
1228
- getOnColor(variant: ColorToken): string;
1279
+ /**
1280
+ * The accent and its paired content colour, from the theme's variant roles.
1281
+ *
1282
+ * Previously the variant *name* was looked up as a colour token, which held
1283
+ * together only because every variant happened to also be a colour. With the
1284
+ * registry open that coincidence ends by design: `variant="destructive"`
1285
+ * would have missed and silently rendered primary. The theme now says which
1286
+ * colour draws the intent, and an unthemed variant warns rather than lying.
1287
+ *
1288
+ * `primary` is the last resort because it is a reserved variant name — the
1289
+ * default every component inherits.
1290
+ */
1291
+ private readonly accent;
1292
+ protected readonly boxColor: _angular_core.Signal<string>;
1229
1293
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<UniCheckboxComponent, never>;
1230
- 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>;
1294
+ 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; }; "checkedColor": { "alias": "checkedColor"; "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>;
1231
1295
  }
1232
1296
 
1233
1297
  /** A commit was refused (no match); the field reverted to the committed label. */
@@ -1834,7 +1898,7 @@ declare class UniGridDirective extends UniBoxDirective {
1834
1898
  templateColumns: _angular_core.InputSignal<string>;
1835
1899
  templateRows: _angular_core.InputSignal<string>;
1836
1900
  outline: _angular_core.InputSignal<Thickness>;
1837
- outlineColor: _angular_core.InputSignal<Variant>;
1901
+ outlineColor: _angular_core.InputSignal<keyof _uni_design_system_uni_core.UniVariantRegistry>;
1838
1902
  protected readonly gridClassName: _angular_core.Signal<string>;
1839
1903
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<UniGridDirective, never>;
1840
1904
  static ɵdir: _angular_core.ɵɵDirectiveDeclaration<UniGridDirective, "[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, never, true, never>;
@@ -1989,6 +2053,14 @@ interface UniRadioOption {
1989
2053
  */
1990
2054
  disabled?: boolean;
1991
2055
  }
2056
+ /**
2057
+ * What a variant means for a radio, as theme data the component reads. The
2058
+ * accent lands on the dot, the hover and checked rings, and the focus ring.
2059
+ */
2060
+ interface UniRadioVariant {
2061
+ /** Dot fill, checked/hover ring and focus ring. */
2062
+ accent: ColorKey;
2063
+ }
1992
2064
  interface UniRadioOptions {
1993
2065
  /**
1994
2066
  * The size of the radio buttons
@@ -2003,7 +2075,7 @@ interface UniRadioOptions {
2003
2075
  motion?: Motion;
2004
2076
  }
2005
2077
 
2006
- declare class UniRadioComponent extends BaseComponent<UniRadioOptions> implements FormValueControl<string> {
2078
+ declare class UniRadioComponent extends BaseComponent<UniRadioOptions, UniRadioVariant> implements FormValueControl<string> {
2007
2079
  readonly value: _angular_core.ModelSignal<string>;
2008
2080
  readonly disabled: _angular_core.InputSignal<boolean>;
2009
2081
  readonly touched: _angular_core.ModelSignal<boolean>;
@@ -2011,6 +2083,12 @@ declare class UniRadioComponent extends BaseComponent<UniRadioOptions> implement
2011
2083
  readonly dirty: _angular_core.InputSignal<boolean>;
2012
2084
  /** Synced from required() validators by the Signal Forms [formField] directive. */
2013
2085
  readonly required: _angular_core.InputSignal<boolean>;
2086
+ /**
2087
+ * Accent colour token, overriding the variant's themed accent for one
2088
+ * instance. Mirrors the input of the same name on `uni-checkbox` and
2089
+ * `uni-toggle`.
2090
+ */
2091
+ readonly checkedColor: _angular_core.InputSignal<string>;
2014
2092
  /**
2015
2093
  * Id(s) of external element(s) describing this control — typically your
2016
2094
  * app-rendered error message — exposed as aria-describedby.
@@ -2028,9 +2106,20 @@ declare class UniRadioComponent extends BaseComponent<UniRadioOptions> implement
2028
2106
  protected readonly radioOptionClass: _angular_core.Signal<string>;
2029
2107
  protected readonly radioInputClass: _angular_core.Signal<string>;
2030
2108
  handleRadioChange(optionValue: string): void;
2031
- getThemeColor(token: ColorToken): string;
2109
+ /**
2110
+ * The accent colour, from the theme's variant roles rather than by treating
2111
+ * the variant name as a colour token — see `uni-checkbox` for why that had
2112
+ * to stop. `primary` is the last resort: a reserved variant name.
2113
+ */
2114
+ /**
2115
+ * A chrome colour by token. Unlike the `getThemeColor` this replaces, there
2116
+ * is no silent fallback to primary: these are tokens the theme is required
2117
+ * to define, so a miss should be visible rather than disguised.
2118
+ */
2119
+ private color;
2120
+ private readonly accent;
2032
2121
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<UniRadioComponent, never>;
2033
- 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>;
2122
+ 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; }; "checkedColor": { "alias": "checkedColor"; "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>;
2034
2123
  }
2035
2124
 
2036
2125
  /**
@@ -2290,7 +2379,7 @@ declare class UniSliderComponent extends BaseComponent<UniSliderOptions> impleme
2290
2379
  formatValue: _angular_core.InputSignal<(value: number) => string>;
2291
2380
  /** Enforced distance between the two ends, in range mode. */
2292
2381
  minGap: _angular_core.InputSignal<number>;
2293
- variant: _angular_core.InputSignal<Variant>;
2382
+ variant: _angular_core.InputSignal<keyof _uni_design_system_uni_core.UniVariantRegistry>;
2294
2383
  /** Continuous, during a drag or a held key. Bind this for a live preview. */
2295
2384
  sliding: _angular_core.OutputEmitterRef<number | UniNumberRange>;
2296
2385
  /**
@@ -3083,7 +3172,7 @@ declare class UniTagInputComponent extends BaseComponent<UniTagInputOptions> imp
3083
3172
  max: _angular_core.InputSignal<number>;
3084
3173
  validate: _angular_core.InputSignal<(raw: string) => boolean>;
3085
3174
  parse: _angular_core.InputSignal<(pasted: string) => string[]>;
3086
- tagVariant: _angular_core.InputSignal<Variant>;
3175
+ tagVariant: _angular_core.InputSignal<keyof _uni_design_system_uni_core.UniVariantRegistry>;
3087
3176
  tagTone: _angular_core.InputSignal<TagTone>;
3088
3177
  tagSize: _angular_core.InputSignal<Size>;
3089
3178
  suggestions: _angular_core.InputSignal<UniTagSuggestion[]>;
@@ -3338,6 +3427,14 @@ declare class UniTimeInputComponent extends BaseComponent<UniTimeInputOptions> i
3338
3427
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<UniTimeInputComponent, "uni-time-input, TimeInput", 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; }; "minuteStep": { "alias": "minuteStep"; "required": false; "isSignal": true; }; "minTime": { "alias": "minTime"; "required": false; "isSignal": true; }; "maxTime": { "alias": "maxTime"; "required": false; "isSignal": true; }; "slots": { "alias": "slots"; "required": false; "isSignal": true; }; "hour12": { "alias": "hour12"; "required": false; "isSignal": true; }; "locale": { "alias": "locale"; "required": false; "isSignal": true; }; "commitOnBlur": { "alias": "commitOnBlur"; "required": false; "isSignal": true; }; "embedded": { "alias": "embedded"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "touched": "touchedChange"; "rejected": "rejected"; }, never, never, true, never>;
3339
3428
  }
3340
3429
 
3430
+ /**
3431
+ * What a variant means for a toggle, as theme data the component reads. The
3432
+ * accent fills the checked track and colours the focus ring.
3433
+ */
3434
+ interface UniToggleVariant {
3435
+ /** Checked track fill and focus ring. */
3436
+ accent: ColorKey;
3437
+ }
3341
3438
  interface UniToggleOptions {
3342
3439
  /**
3343
3440
  * @deprecated Track height in px, from before the toggle had a `sizes` block.
@@ -3362,7 +3459,7 @@ interface UniToggleOptions {
3362
3459
  motion?: Motion;
3363
3460
  }
3364
3461
 
3365
- declare class UniToggleComponent extends BaseComponent<UniToggleOptions> implements FormCheckboxControl {
3462
+ declare class UniToggleComponent extends BaseComponent<UniToggleOptions, UniToggleVariant> implements FormCheckboxControl {
3366
3463
  readonly checked: _angular_core.ModelSignal<boolean>;
3367
3464
  readonly disabled: _angular_core.InputSignal<boolean>;
3368
3465
  readonly touched: _angular_core.ModelSignal<boolean>;
@@ -3398,13 +3495,23 @@ declare class UniToggleComponent extends BaseComponent<UniToggleOptions> impleme
3398
3495
  * treats its size block the same way.
3399
3496
  */
3400
3497
  private readonly metrics;
3401
- /** The resolved checked/accent color: input, then theme option, then variant. */
3498
+ /**
3499
+ * The resolved checked/accent color: the per-instance input, then the
3500
+ * variant's themed accent, then the theme option.
3501
+ *
3502
+ * The last link used to be `this.variant()` — the variant *name* resolved as
3503
+ * a colour token. That only ever worked because every variant happened to
3504
+ * also be a colour; with the registry open, `variant="destructive"` would
3505
+ * have missed and silently rendered primary. `primary` is the last resort
3506
+ * because it is a reserved variant name.
3507
+ */
3402
3508
  private readonly accent;
3403
3509
  /** Knob slide and track color change, as a motion token — never `all`. */
3404
3510
  private readonly transitions;
3405
3511
  protected readonly toggleLabel: _angular_core.Signal<string>;
3406
3512
  protected readonly toggleInput: _angular_core.Signal<string>;
3407
- getThemeColor(token: ColorToken): string;
3513
+ /** A chrome colour by token no silent fallback; see `uni-radio`. */
3514
+ private color;
3408
3515
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<UniToggleComponent, never>;
3409
3516
  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; }; "checkedColor": { "alias": "checkedColor"; "required": false; "isSignal": true; }; }, { "checked": "checkedChange"; "touched": "touchedChange"; }, never, never, true, never>;
3410
3517
  }
@@ -3529,7 +3636,7 @@ interface UniBadgeOptions {
3529
3636
  }
3530
3637
 
3531
3638
  declare class UniBadgeComponent extends BaseComponent<UniBadgeOptions> {
3532
- color: _angular_core.InputSignal<Variant>;
3639
+ color: _angular_core.InputSignal<keyof _uni_design_system_uni_core.UniVariantRegistry>;
3533
3640
  useVariant: _angular_core.InputSignal<boolean>;
3534
3641
  width: _angular_core.InputSignal<number>;
3535
3642
  protected readonly className: _angular_core.Signal<string>;
@@ -3766,7 +3873,7 @@ declare class UniCalendarComponent extends BaseComponent<UniCalendarOptions> imp
3766
3873
  protected readonly outsideDayClass: _angular_core.Signal<string>;
3767
3874
  protected readonly dotsClass: _angular_core.Signal<string>;
3768
3875
  /** One dot class per marker variant present, resolved from the palette. */
3769
- protected readonly dotClasses: _angular_core.Signal<Map<Variant, string>>;
3876
+ protected readonly dotClasses: _angular_core.Signal<Map<keyof _uni_design_system_uni_core.UniVariantRegistry, string>>;
3770
3877
  protected dotClassFor(variant: Variant | undefined): string;
3771
3878
  protected readonly showOutside: _angular_core.Signal<boolean>;
3772
3879
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<UniCalendarComponent, never>;
@@ -4068,16 +4175,16 @@ interface UniDialogButtonsOptions {
4068
4175
  declare class UniDialogButtonsComponent extends BaseComponent<UniDialogButtonsOptions> {
4069
4176
  private dialog;
4070
4177
  confirmButtonText: _angular_core.InputSignal<string>;
4071
- confirmButtonVariant: _angular_core.InputSignal<Variant>;
4178
+ confirmButtonVariant: _angular_core.InputSignal<keyof _uni_design_system_uni_core.UniVariantRegistry>;
4072
4179
  cancelButtonText: _angular_core.InputSignal<string>;
4073
- cancelButtonVariant: _angular_core.InputSignal<Variant>;
4180
+ cancelButtonVariant: _angular_core.InputSignal<keyof _uni_design_system_uni_core.UniVariantRegistry>;
4074
4181
  disableConfirm: _angular_core.InputSignal<boolean>;
4075
4182
  padding: _angular_core.InputSignal<NullableSize>;
4076
4183
  paddingBottom: _angular_core.InputSignal<NullableSize>;
4077
4184
  justifyContent: _angular_core.InputSignal<JustifyContent>;
4078
4185
  confirmed: _angular_core.OutputEmitterRef<void>;
4079
- protected confirmVariant: _angular_core.Signal<Variant>;
4080
- protected cancelVariant: _angular_core.Signal<Variant>;
4186
+ protected confirmVariant: _angular_core.Signal<keyof _uni_design_system_uni_core.UniVariantRegistry>;
4187
+ protected cancelVariant: _angular_core.Signal<keyof _uni_design_system_uni_core.UniVariantRegistry>;
4081
4188
  protected paddingValue: _angular_core.Signal<NullableSize>;
4082
4189
  protected paddingBottomValue: _angular_core.Signal<NullableSize>;
4083
4190
  protected justifyContentValue: _angular_core.Signal<JustifyContent>;
@@ -4207,15 +4314,15 @@ interface UniDrawerButtonsOptions {
4207
4314
  declare class UniDrawerButtonsComponent extends BaseComponent<UniDrawerButtonsOptions> {
4208
4315
  private readonly drawer;
4209
4316
  confirmButtonText: _angular_core.InputSignal<string>;
4210
- confirmButtonVariant: _angular_core.InputSignal<Variant>;
4317
+ confirmButtonVariant: _angular_core.InputSignal<keyof _uni_design_system_uni_core.UniVariantRegistry>;
4211
4318
  cancelButtonText: _angular_core.InputSignal<string>;
4212
- cancelButtonVariant: _angular_core.InputSignal<Variant>;
4319
+ cancelButtonVariant: _angular_core.InputSignal<keyof _uni_design_system_uni_core.UniVariantRegistry>;
4213
4320
  disableConfirm: _angular_core.InputSignal<boolean>;
4214
4321
  padding: _angular_core.InputSignal<NullableSize>;
4215
4322
  justifyContent: _angular_core.InputSignal<JustifyContent>;
4216
4323
  confirmed: _angular_core.OutputEmitterRef<void>;
4217
- protected confirmVariant: _angular_core.Signal<Variant>;
4218
- protected cancelVariant: _angular_core.Signal<Variant>;
4324
+ protected confirmVariant: _angular_core.Signal<keyof _uni_design_system_uni_core.UniVariantRegistry>;
4325
+ protected cancelVariant: _angular_core.Signal<keyof _uni_design_system_uni_core.UniVariantRegistry>;
4219
4326
  protected paddingValue: _angular_core.Signal<NullableSize>;
4220
4327
  protected justifyContentValue: _angular_core.Signal<JustifyContent>;
4221
4328
  protected gapValue: _angular_core.Signal<NullableSize>;
@@ -4670,7 +4777,7 @@ declare class UniFileDropZoneComponent {
4670
4777
  get fileSelectorElement(): HTMLInputElement;
4671
4778
  height: _angular_core.InputSignal<string | number>;
4672
4779
  borderRadius: _angular_core.InputSignal<string>;
4673
- border: _angular_core.InputSignal<Variant>;
4780
+ border: _angular_core.InputSignal<keyof _uni_design_system_uni_core.UniVariantRegistry>;
4674
4781
  padding: _angular_core.InputSignal<NullableSize>;
4675
4782
  useBrowseButton: _angular_core.InputSignal<boolean>;
4676
4783
  browseButtonText: _angular_core.InputSignal<string>;
@@ -4819,7 +4926,7 @@ declare class UniIconButtonComponent {
4819
4926
  private theme;
4820
4927
  config: _angular_core.Signal<_uni_design_system_uni_core.ComponentTheme<{
4821
4928
  borderRadius?: RadiiSize;
4822
- }>>;
4929
+ }, object>>;
4823
4930
  /**
4824
4931
  * Accessible name for the button. Alternative to projecting text content
4825
4932
  * (`<button icon-button>Close</button>`); one of the two is required for
@@ -4828,7 +4935,7 @@ declare class UniIconButtonComponent {
4828
4935
  ariaLabel: _angular_core.InputSignal<string>;
4829
4936
  iconName: _angular_core.InputSignal<IconName>;
4830
4937
  symbolName: _angular_core.InputSignal<string>;
4831
- variant: _angular_core.InputSignal<Variant>;
4938
+ variant: _angular_core.InputSignal<keyof _uni_design_system_uni_core.UniVariantRegistry>;
4832
4939
  size: _angular_core.InputSignal<Size>;
4833
4940
  disable: _angular_core.InputSignal<boolean>;
4834
4941
  loading: _angular_core.InputSignal<boolean>;
@@ -4962,7 +5069,7 @@ declare class UniNotificationBadgeComponent extends BaseComponent<UniNotificatio
4962
5069
  count: _angular_core.InputSignal<number>;
4963
5070
  maxCount: _angular_core.InputSignal<number>;
4964
5071
  badgeVariant: _angular_core.InputSignal<"dot" | "count" | "pill">;
4965
- color: _angular_core.InputSignal<Variant>;
5072
+ color: _angular_core.InputSignal<keyof _uni_design_system_uni_core.UniVariantRegistry>;
4966
5073
  position: _angular_core.InputSignal<"top-right" | "top-left" | "bottom-right" | "bottom-left">;
4967
5074
  show: _angular_core.InputSignal<boolean>;
4968
5075
  /**
@@ -5307,7 +5414,7 @@ declare class UniScrollAreaComponent {
5307
5414
  paddingRight: _angular_core.InputSignal<OptionalSize>;
5308
5415
  paddingTop: _angular_core.InputSignal<OptionalSize>;
5309
5416
  paddingBottom: _angular_core.InputSignal<OptionalSize>;
5310
- border: _angular_core.InputSignal<Variant>;
5417
+ border: _angular_core.InputSignal<keyof _uni_design_system_uni_core.UniVariantRegistry>;
5311
5418
  height: _angular_core.InputSignal<OptionalValue>;
5312
5419
  width: _angular_core.InputSignal<OptionalValue>;
5313
5420
  appearance: _angular_core.InputSignal<ScrollbarAppearance>;
@@ -5629,7 +5736,7 @@ declare class UniTagComponent extends BaseComponent<UniTagOptions> {
5629
5736
  removed: _angular_core.OutputEmitterRef<UniTagValue>;
5630
5737
  activated: _angular_core.OutputEmitterRef<UniTagValue>;
5631
5738
  /** A disabled chip wears the theme's `disabled` role, whatever its variant. */
5632
- protected readonly resolvedVariant: _angular_core.Signal<_uni_design_system_uni_core.Variant>;
5739
+ protected readonly resolvedVariant: _angular_core.Signal<keyof _uni_design_system_uni_core.UniVariantRegistry>;
5633
5740
  protected readonly themeStyle: _angular_core.Signal<{
5634
5741
  [x: string]: string | number | _uni_design_system_uni_core.StyleExpression;
5635
5742
  }>;
@@ -5659,7 +5766,7 @@ declare class UniThemeBuilderComponent {
5659
5766
  protected readonly schemes: ColorScheme[];
5660
5767
  protected readonly categories: ColorCategory[];
5661
5768
  protected readonly shapes: ThemeShape[];
5662
- protected readonly variants: Variant[];
5769
+ protected readonly variants: (keyof _uni_design_system_uni_core.UniVariantRegistry)[];
5663
5770
  protected readonly sizes: readonly ["sm", "md", "lg", "xl"];
5664
5771
  protected readonly swatches: {
5665
5772
  label: string;
@@ -5922,4 +6029,4 @@ declare class DragAndDropDirective {
5922
6029
  }
5923
6030
 
5924
6031
  export { BodyRenderDirective, ConfirmationDialogComponent, DRAWER_PANEL, DragAndDropDirective, FOCUSABLE_SELECTOR, ListboxNavigation, LocalStorageService, NotificationService, NotificationsComponent, RippleDirective, TRANSFORM_ORIGINS, ThemeService, UNI_FORMS, UNI_LAYOUT, UNI_THEMES, UniAlertComponent, UniAppBarComponent, UniAvatarComponent, UniAvatarGroupComponent, UniBackgroundComponent, UniBadgeComponent, UniBaseDatasource, UniBoxDirective, UniBreadcrumbComponent, UniButtonComponent, UniButtonGroupComponent, UniCalendarComponent, UniCalloutComponent, UniCardComponent, UniCardContentComponent, UniCardHeaderComponent, UniCenterDirective, UniCheckboxComponent, UniComboboxComponent, UniDataSearchComponent, UniDataTableComponent, UniDateInputComponent, UniDateTimeInputComponent, UniDebounceInputComponent, UniDialogButtonsComponent, UniDialogComponent, UniDialogHeaderComponent, UniDividerComponent, UniDrawerButtonsComponent, UniDrawerComponent, UniDrawerHeaderComponent, UniDropdownComponent, UniExpandAreaComponent, UniExpandComponent, UniExpandToggleComponent, UniFileDropZoneComponent, UniGridAreaDirective, UniGridDirective, UniIconButtonComponent, UniIconComponent, UniInputBoxComponent, UniInputComponent, UniJsonViewComponent, UniMenuComponent, UniMultiSelectComponent, UniMultiSelectDropdownComponent, UniNotificationBadgeComponent, UniNumberInputComponent, UniNumberRangeInputComponent, UniPaginatorComponent, UniPopoverComponent, UniProgressBarComponent, UniProgressGaugeComponent, UniQuantityStepperComponent, UniRadioComponent, UniRecordDatasource, UniRowDirective, UniScrollAreaComponent, UniSearchInputComponent, UniSelectComponent, UniServerSideDatasource, UniSkeletonComponent, UniSliderComponent, UniSnackbarComponent, UniSortHeaderComponent, UniStackDirective, UniStatComponent, UniSymbolComponent, UniTabComponent, UniTabsComponent, UniTagComponent, UniTagInputComponent, UniTextDirective, UniTextareaComponent, UniThemeBuilderComponent, UniThemeSwitchComponent, UniTimeInputComponent, UniToggleComponent, UniTooltipComponent, UniTourComponent, UniWrapDirective, acceptableFile, addDays, addMonths, anchorArrowStyles, anchorStyles, buildMonthGrid, clampDecimal, clearAnchorName, compareDecimal, createAnnouncer, createListboxNavigation, createPressRepeat, dayOfWeek, daysInMonth, decimalScale, discreteOverlayTransition, evaluateExpression, focusableElements, formatDate, formatMonthHeading, formatNumber, formatTime, fromScaled, getFileExtension, inclusiveDayCount, isCanonicalDecimal, isDivider, isToggleOpen, isValidDate, isoDate, joinDateTime, listboxPopupAttr, listboxPopupStyles, localeDatePlaceholder, localeDefaultHour12, localeFieldOrder, localeMonthNames, localeNumberParts, localeWeekStart, losesPrecision, monthOf, motionSafe, newAnchorName, newListboxAnchor, normalizeDecimal, parseDateText, parseNumber, parseTimeText, promoteListboxPopup, rawNumberText, resolveElement, resolveFocusTarget, resolveNumberFormat, restoreOverlayFocus, roundDecimal, setAnchorName, settleNumber, shiftDecimal, speakNumber, splitDateTime, spotlightStyles, stepDecimal, supportsAnchoredPopup, timeSlots, toAsciiDigits, toDecimal, toNumber, toScaled, todayIso, transformOriginFor, uniqueId, useTimer, visuallyHidden, weekdayNames };
5925
- export type { Alert, AnchorOffset, AnchorRect, Announcer, BrandPaletteConfig, BreadcrumbItem, ButtonGroupConfig, ButtonGroupItem, ColumnDefinition, Confirmation, DataLoader, DrawerBackground, DrawerCloseReason, DrawerMode, DrawerPosition, ImagePosition, ListboxNavigationConfig, MenuDivider, MenuItem, MenuItemWithLabel, MenuItemWithTemplate, Option, Options, PageRequest, PageResponse, Placement, PressRepeat, PressRepeatConfig, PressRepeatTiming, ScrollbarAppearance, SkeletonShape, SkeletonSweepDirection, Snackbar, Sort, SortDirection, SpotlightOptions, SpotlightStyles, UniAppBarOptions, UniAvatarGroupOptions, UniAvatarOptions, UniBreadcrumbOptions, UniCalendarMarker, UniCalendarMode, UniCalendarOptions, UniCalendarValue, UniCalloutDismissal, UniCalloutOptions, UniCheckboxOptions, UniComboboxOptions, UniComboboxRejection, UniDataSearchOptions, UniDataTableOptions, UniDatasource, UniDate, UniDateInputOptions, UniDateInputRejection, UniDateRange, UniDateTime, UniDateTimeInputOptions, UniDrawerButtonsOptions, UniDrawerCloseRequest, UniDrawerHeaderOptions, UniDrawerOptions, UniDrawerPanel, UniExpandOptions, UniInputBoxOptions, UniInputMode, UniInputType, UniListboxPopupOptions, UniLocaleNumberParts, UniMenuItemOptions, UniMenuOptions, UniMonthGridCell, UniMultiSelectDropdownOptions, UniNotificationBadgeOptions, UniNumberClamp, UniNumberFormatConfig, UniNumberGrouping, UniNumberInputOptions, UniNumberParseResult, UniNumberPreset, UniNumberRange, UniNumberRangeInputOptions, UniNumberRangePart, UniNumberRangeRejection, UniNumberRejectReason, UniNumberRejection, UniNumberStepConfig, UniNumberStepped, UniPaginatorOptions, UniPopoverOptions, UniQuantityStepperOptions, UniRadioOption, UniRadioOptions, UniResolvedNumberFormat, UniRoundingMode, UniSearchInputOptions, UniSkeletonOptions, UniSliderMark, UniSliderOptions, UniSliderThumb, UniStatOptions, UniStepperLayout, UniTabsOptions, UniTagInputOptions, UniTagItem, UniTagOptions, UniTagRejection, UniTagSuggestion, UniTagValue, UniTextareaOptions, UniTime, UniTimeInputOptions, UniTimeInputRejection, UniToggleOptions, UniTourAdvance, UniTourOptions, UniTourStep, UniWeekdayName };
6032
+ export type { Alert, AnchorOffset, AnchorRect, Announcer, BrandPaletteConfig, BreadcrumbItem, ButtonGroupConfig, ButtonGroupItem, ColumnDefinition, Confirmation, DataLoader, DrawerBackground, DrawerCloseReason, DrawerMode, DrawerPosition, ImagePosition, ListboxNavigationConfig, MenuDivider, MenuItem, MenuItemWithLabel, MenuItemWithTemplate, Option, Options, PageRequest, PageResponse, Placement, PressRepeat, PressRepeatConfig, PressRepeatTiming, ScrollbarAppearance, SkeletonShape, SkeletonSweepDirection, Snackbar, Sort, SortDirection, SpotlightOptions, SpotlightStyles, UniAppBarOptions, UniAvatarGroupOptions, UniAvatarOptions, UniBreadcrumbOptions, UniCalendarMarker, UniCalendarMode, UniCalendarOptions, UniCalendarValue, UniCalloutDismissal, UniCalloutOptions, UniCheckboxOptions, UniCheckboxVariant, UniComboboxOptions, UniComboboxRejection, UniDataSearchOptions, UniDataTableOptions, UniDatasource, UniDate, UniDateInputOptions, UniDateInputRejection, UniDateRange, UniDateTime, UniDateTimeInputOptions, UniDrawerButtonsOptions, UniDrawerCloseRequest, UniDrawerHeaderOptions, UniDrawerOptions, UniDrawerPanel, UniExpandOptions, UniInputBoxOptions, UniInputMode, UniInputType, UniListboxPopupOptions, UniLocaleNumberParts, UniMenuItemOptions, UniMenuOptions, UniMonthGridCell, UniMultiSelectDropdownOptions, UniNotificationBadgeOptions, UniNumberClamp, UniNumberFormatConfig, UniNumberGrouping, UniNumberInputOptions, UniNumberParseResult, UniNumberPreset, UniNumberRange, UniNumberRangeInputOptions, UniNumberRangePart, UniNumberRangeRejection, UniNumberRejectReason, UniNumberRejection, UniNumberStepConfig, UniNumberStepped, UniPaginatorOptions, UniPopoverOptions, UniQuantityStepperOptions, UniRadioOption, UniRadioOptions, UniRadioVariant, UniResolvedNumberFormat, UniRoundingMode, UniSearchInputOptions, UniSkeletonOptions, UniSliderMark, UniSliderOptions, UniSliderThumb, UniStatOptions, UniStepperLayout, UniTabsOptions, UniTagInputOptions, UniTagItem, UniTagOptions, UniTagRejection, UniTagSuggestion, UniTagValue, UniTextareaOptions, UniTime, UniTimeInputOptions, UniTimeInputRejection, UniToggleOptions, UniToggleVariant, UniTourAdvance, UniTourOptions, UniTourStep, UniWeekdayName };