@yahoo/uds-v5-wip 1.17.0 → 1.18.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.
Files changed (56) hide show
  1. package/dist/components/dist/accordion.config.js +1 -1
  2. package/dist/components/dist/alert.config.js +1 -1
  3. package/dist/components/dist/avatar-group.config.js +1 -1
  4. package/dist/components/dist/avatar.config.js +2 -2
  5. package/dist/components/dist/badge.config.js +2 -2
  6. package/dist/components/dist/button.config.js +3 -3
  7. package/dist/components/dist/card.config.js +1 -1
  8. package/dist/components/dist/command.config.js +3 -3
  9. package/dist/components/dist/control-curve.config.js +1 -1
  10. package/dist/components/dist/control-select.config.js +2 -2
  11. package/dist/components/dist/control-slider.config.js +5 -5
  12. package/dist/components/dist/control-stepper.config.js +4 -4
  13. package/dist/components/dist/dropdown.config.js +6 -6
  14. package/dist/components/dist/empty-state.config.js +1 -1
  15. package/dist/components/dist/input.config.js +3 -3
  16. package/dist/components/dist/item.config.js +2 -2
  17. package/dist/components/dist/modal.config.js +1 -1
  18. package/dist/components/dist/progress.config.js +2 -2
  19. package/dist/components/dist/select.config.js +1 -1
  20. package/dist/components/dist/sheet.config.js +1 -1
  21. package/dist/components/dist/sidebar.config.js +8 -8
  22. package/dist/components/dist/skeleton.config.js +1 -1
  23. package/dist/components/dist/slider.config.js +3 -3
  24. package/dist/components/dist/switch.config.js +2 -2
  25. package/dist/components/dist/tabs.config.js +5 -5
  26. package/dist/components/dist/textarea.config.js +3 -3
  27. package/dist/components/dist/toast.config.js +2 -2
  28. package/dist/components/dist/tooltip.config.js +1 -1
  29. package/dist/config/dist/createConfig.d.ts +18 -6
  30. package/dist/config/dist/createConfig.js +14 -6
  31. package/dist/config/dist/preset-merge.js +3 -0
  32. package/dist/config/dist/types.d.ts +6 -2
  33. package/dist/config.d.ts +384 -1
  34. package/dist/core/dist/createComponent.js +1 -1
  35. package/dist/foundational-presets/dist/boldVibrant.d.ts +384 -1
  36. package/dist/foundational-presets/dist/brutalist.d.ts +384 -1
  37. package/dist/foundational-presets/dist/candy.d.ts +384 -1
  38. package/dist/foundational-presets/dist/cleanMinimalist.d.ts +384 -1
  39. package/dist/foundational-presets/dist/corporate.d.ts +384 -1
  40. package/dist/foundational-presets/dist/darkMoody.d.ts +384 -1
  41. package/dist/foundational-presets/dist/defaultPreset.d.ts +384 -1
  42. package/dist/foundational-presets/dist/forest.d.ts +384 -1
  43. package/dist/foundational-presets/dist/highContrast.d.ts +384 -1
  44. package/dist/foundational-presets/dist/lavender.d.ts +384 -1
  45. package/dist/foundational-presets/dist/luxury.d.ts +384 -1
  46. package/dist/foundational-presets/dist/monochrome.d.ts +384 -1
  47. package/dist/foundational-presets/dist/neonCyber.d.ts +384 -1
  48. package/dist/foundational-presets/dist/newspaper.d.ts +384 -1
  49. package/dist/foundational-presets/dist/ocean.d.ts +384 -1
  50. package/dist/foundational-presets/dist/slate.d.ts +384 -1
  51. package/dist/foundational-presets/dist/sunset.d.ts +384 -1
  52. package/dist/foundational-presets/dist/terminal.d.ts +384 -1
  53. package/dist/foundational-presets/dist/warmOrganic.d.ts +384 -1
  54. package/dist/remotion/dist/components/quote-card.config.js +1 -1
  55. package/dist/tsconfig.tsbuildinfo +1 -1
  56. package/package.json +3 -3
@@ -4,9 +4,9 @@ import "../../utils/dist/index.js";
4
4
  import { getConfigurablePropMapping } from "../../core/dist/propMappings.js";
5
5
  import "../../core/dist/index.js";
6
6
  import { buildMotionReference, resolveComponentMotionAliases, validateComponentVariants } from "./component-resolution.js";
7
+ import { applyPresetToData, deepMerge, mergeAtomic } from "./preset-merge.js";
7
8
  import { expandPropertyGroups } from "./propertyGroups.js";
8
9
  import { resolveTokenType, sniffTokenTypeFromValue } from "./resolveTokenTypes.js";
9
- import { applyPresetToData, deepMerge, mergeAtomic } from "./preset-merge.js";
10
10
  //#region ../config/dist/createConfig.js
11
11
  /** biome-ignore-all lint/suspicious/noExplicitAny: necessary for dynamic builder to work correctly */
12
12
  /** Build a structured token reference object from atomic tokens */
@@ -43,20 +43,26 @@ function buildMacroReference(macros) {
43
43
  /**
44
44
  * Convert a VarGroupDef into AtomicToken tokens, extracting modifier overrides.
45
45
  *
46
- * Also extracts `$type` metadata:
46
+ * Also extracts group-level metadata:
47
47
  * - A top-level `$type` on the group → `groupType`
48
+ * - A top-level `$description` on the group → `groupDescription`
48
49
  * - A `$type` on an individual token → `type` on that token (overrides group)
49
50
  *
50
- * `$type` is filtered out of the emitted tokens; it is metadata only.
51
+ * Metadata keys (`$type`, `$description`) are filtered out of the emitted tokens.
51
52
  */
52
53
  function varGroupToTokens(varGroup, knownModifiers) {
53
54
  let groupType;
55
+ let groupDescription;
54
56
  const tokens = [];
55
57
  for (const [tokenName, rawDef] of Object.entries(varGroup)) {
56
58
  if (tokenName === "$type") {
57
59
  if (typeof rawDef === "string") groupType = rawDef;
58
60
  continue;
59
61
  }
62
+ if (tokenName === "$description") {
63
+ if (typeof rawDef === "string") groupDescription = rawDef;
64
+ continue;
65
+ }
60
66
  if (rawDef == null || typeof rawDef !== "object") continue;
61
67
  const tokenDef = rawDef;
62
68
  const modifiers = {};
@@ -73,7 +79,8 @@ function varGroupToTokens(varGroup, knownModifiers) {
73
79
  }
74
80
  return {
75
81
  tokens,
76
- groupType
82
+ groupType,
83
+ groupDescription
77
84
  };
78
85
  }
79
86
  /**
@@ -102,7 +109,7 @@ function synthesizeAtomicFromScopesAndVars(vars, scopes, modes) {
102
109
  if (!varGroup) continue;
103
110
  const properties = expandPropertyGroups(groupIds);
104
111
  if (properties.length === 0) continue;
105
- const { tokens, groupType } = varGroupToTokens(varGroup, knownModifiers);
112
+ const { tokens, groupType, groupDescription } = varGroupToTokens(varGroup, knownModifiers);
106
113
  const cssPfx = (properties.includes(namespace) ? getConfigurablePropMapping(namespace) : void 0)?.defaultVarPrefix ?? kebabCase(namespace);
107
114
  const sorted = sortPropertiesByPrefixMatch(properties, namespace, cssPfx);
108
115
  const resolvedGroupType = resolveTokenType({
@@ -117,7 +124,8 @@ function synthesizeAtomicFromScopesAndVars(vars, scopes, modes) {
117
124
  properties: sorted,
118
125
  tokens,
119
126
  cssPrefix: cssPfx,
120
- ...resolvedGroupType ? { type: resolvedGroupType } : {}
127
+ ...resolvedGroupType ? { type: resolvedGroupType } : {},
128
+ ...groupDescription ? { description: groupDescription } : {}
121
129
  });
122
130
  }
123
131
  return disambiguateOverlappingProperties(result, scopes);
@@ -15,6 +15,7 @@ function flattenAtomic(atomic) {
15
15
  property,
16
16
  cssPrefix: group.cssPrefix,
17
17
  groupType: group.type,
18
+ groupDescription: group.description,
18
19
  token
19
20
  });
20
21
  return entries;
@@ -41,12 +42,14 @@ function mergeAtomic(base, incoming, mode) {
41
42
  if (existing) {
42
43
  existing.tokens.push(entry.token);
43
44
  if (entry.groupType) existing.type = entry.groupType;
45
+ if (entry.groupDescription) existing.description = entry.groupDescription;
44
46
  continue;
45
47
  }
46
48
  regrouped.set(groupKey, {
47
49
  properties: [entry.property],
48
50
  ...entry.cssPrefix ? { cssPrefix: entry.cssPrefix } : {},
49
51
  ...entry.groupType ? { type: entry.groupType } : {},
52
+ ...entry.groupDescription ? { description: entry.groupDescription } : {},
50
53
  tokens: [entry.token]
51
54
  });
52
55
  }
@@ -33,19 +33,23 @@ type VarTokenDef<M extends `_${string}` = `_${string}`> = {
33
33
  * A group of named tokens within a var namespace.
34
34
  *
35
35
  * The group may declare a `$type` that applies to all tokens in the group;
36
- * individual tokens may override it with their own `$type`.
36
+ * individual tokens may override it with their own `$type`. A `$description`
37
+ * is free-form documentation surfaced in Studio (e.g. as the readonly subtitle
38
+ * on the token group editor) and is otherwise inert at runtime.
37
39
  *
38
40
  * @example
39
41
  * {
40
42
  * $type: 'color',
43
+ * $description: 'Brand-aligned semantic colors. Light/dark pairs only.',
41
44
  * brand: { value: '#1167f4', _dark: '#88bcfb' },
42
45
  * accent: { value: '#7c3aed' },
43
46
  * }
44
47
  */
45
48
  type VarGroupDef<M extends `_${string}` = `_${string}`> = {
46
49
  $type?: TokenType;
50
+ $description?: string;
47
51
  } & {
48
- [tokenName: string]: VarTokenDef<M> | TokenType | undefined;
52
+ [tokenName: string]: VarTokenDef<M> | TokenType | string | undefined;
49
53
  };
50
54
  /**
51
55
  * Top-level vars config — namespaces to groups of tokens.
package/dist/config.d.ts CHANGED
@@ -8,7 +8,390 @@ import * as _$_uds_types0 from "@uds/types";
8
8
  //#region src/config.d.ts
9
9
  declare const uds: UdsConfig<_$_uds_types0.ModifierProp, {}, {}, {}, {}, never, {}>;
10
10
  declare const defaultPreset: UdsConfig<_$_uds_types0.ModifierProp | "_light" | "_dark" | "_sm" | "_md" | "_lg" | "_xl" | "_2xl", {
11
- [x: string]: Record<string, string>;
11
+ opacity: {
12
+ 0: string;
13
+ 5: string;
14
+ 10: string;
15
+ 20: string;
16
+ 40: string;
17
+ 60: string;
18
+ 80: string;
19
+ 25: string;
20
+ 30: string;
21
+ 50: string;
22
+ 70: string;
23
+ 75: string;
24
+ 90: string;
25
+ 95: string;
26
+ 100: string;
27
+ };
28
+ scale: {
29
+ 0: string;
30
+ 50: string;
31
+ 75: string;
32
+ 90: string;
33
+ 95: string;
34
+ 100: string;
35
+ 105: string;
36
+ 110: string;
37
+ 125: string;
38
+ 150: string;
39
+ 200: string;
40
+ };
41
+ rotate: {
42
+ 0: string;
43
+ 2: string;
44
+ 1: string;
45
+ 3: string;
46
+ 6: string;
47
+ 12: string;
48
+ 90: string;
49
+ 45: string;
50
+ 180: string;
51
+ };
52
+ color: {
53
+ inherit: string;
54
+ current: string;
55
+ transparent: string;
56
+ "always/black": string;
57
+ "always/white": string;
58
+ brand: string;
59
+ "on-brand": string;
60
+ accent: string;
61
+ "on-accent": string;
62
+ alert: string;
63
+ "on-alert": string;
64
+ positive: string;
65
+ "on-positive": string;
66
+ warning: string;
67
+ "on-warning": string;
68
+ primary: string;
69
+ "on-primary": string;
70
+ secondary: string;
71
+ "on-secondary": string;
72
+ tertiary: string;
73
+ "on-tertiary": string;
74
+ inverse: string;
75
+ "on-inverse": string;
76
+ };
77
+ borderColor: {
78
+ brand: string;
79
+ accent: string;
80
+ alert: string;
81
+ positive: string;
82
+ warning: string;
83
+ primary: string;
84
+ secondary: string;
85
+ tertiary: string;
86
+ inverse: string;
87
+ surface: string;
88
+ "brand-wash": string;
89
+ "accent-wash": string;
90
+ "alert-wash": string;
91
+ "positive-wash": string;
92
+ "warning-wash": string;
93
+ };
94
+ position: {
95
+ auto: string;
96
+ full: string;
97
+ "1/2": string;
98
+ "1/3": string;
99
+ "2/3": string;
100
+ "1/4": string;
101
+ "2/4": string;
102
+ "3/4": string;
103
+ };
104
+ size: {
105
+ auto: string;
106
+ full: string;
107
+ max: string;
108
+ min: string;
109
+ "1/2": string;
110
+ "1/3": string;
111
+ "2/3": string;
112
+ "1/4": string;
113
+ "2/4": string;
114
+ "3/4": string;
115
+ fit: string;
116
+ "1/5": string;
117
+ "2/5": string;
118
+ "3/5": string;
119
+ "4/5": string;
120
+ "1/6": string;
121
+ "2/6": string;
122
+ "3/6": string;
123
+ "4/6": string;
124
+ "5/6": string;
125
+ };
126
+ animation: {
127
+ none: string;
128
+ ping: string;
129
+ spin: string;
130
+ };
131
+ bg: {
132
+ overlay: string;
133
+ brand: string;
134
+ accent: string;
135
+ alert: string;
136
+ positive: string;
137
+ warning: string;
138
+ primary: string;
139
+ secondary: string;
140
+ tertiary: string;
141
+ inverse: string;
142
+ surface: string;
143
+ "elevation-1": string;
144
+ "elevation-2": string;
145
+ "elevation-3": string;
146
+ "brand-wash": string;
147
+ "accent-wash": string;
148
+ "alert-wash": string;
149
+ "positive-wash": string;
150
+ "warning-wash": string;
151
+ };
152
+ borderWidth: {
153
+ none: string;
154
+ thin: string;
155
+ medium: string;
156
+ thick: string;
157
+ };
158
+ divideWidth: {
159
+ 0: string;
160
+ 4: string;
161
+ reverse: string;
162
+ 2: string;
163
+ 8: string;
164
+ };
165
+ flex: {
166
+ none: string;
167
+ initial: string;
168
+ auto: string;
169
+ 1: string;
170
+ };
171
+ flexGrow: {
172
+ 0: string;
173
+ 1: string;
174
+ };
175
+ flexShrink: {
176
+ 0: string;
177
+ };
178
+ aspectRatio: {
179
+ square: string;
180
+ landscape: string;
181
+ portrait: string;
182
+ widescreen: string;
183
+ ultrawide: string;
184
+ golden: string;
185
+ };
186
+ zIndex: {
187
+ 0: string;
188
+ auto: string;
189
+ 10: string;
190
+ 20: string;
191
+ 40: string;
192
+ 30: string;
193
+ 50: string;
194
+ };
195
+ spacing: {
196
+ 0: string;
197
+ 4: string;
198
+ 2: string;
199
+ 5: string;
200
+ 1: string;
201
+ px: string;
202
+ 8: string;
203
+ 0.5: string;
204
+ 1.5: string;
205
+ 2.5: string;
206
+ 3: string;
207
+ 3.5: string;
208
+ 6: string;
209
+ 7: string;
210
+ 9: string;
211
+ 10: string;
212
+ 11: string;
213
+ 12: string;
214
+ 14: string;
215
+ 16: string;
216
+ 20: string;
217
+ 24: string;
218
+ 28: string;
219
+ 32: string;
220
+ 36: string;
221
+ 40: string;
222
+ 44: string;
223
+ 48: string;
224
+ 52: string;
225
+ 56: string;
226
+ 60: string;
227
+ 64: string;
228
+ 72: string;
229
+ 80: string;
230
+ 96: string;
231
+ };
232
+ w: {
233
+ screen: string;
234
+ svw: string;
235
+ lvw: string;
236
+ dvw: string;
237
+ };
238
+ outlineWidth: {
239
+ 0: string;
240
+ 4: string;
241
+ 2: string;
242
+ 1: string;
243
+ 8: string;
244
+ };
245
+ outlineOffset: {
246
+ 0: string;
247
+ 4: string;
248
+ 2: string;
249
+ 1: string;
250
+ 8: string;
251
+ };
252
+ ringWidth: {
253
+ 0: string;
254
+ 4: string;
255
+ inset: string;
256
+ 2: string;
257
+ 1: string;
258
+ 8: string;
259
+ };
260
+ ringOffsetWidth: {
261
+ 0: string;
262
+ 4: string;
263
+ 2: string;
264
+ 1: string;
265
+ 8: string;
266
+ };
267
+ shadow: {
268
+ none: string;
269
+ sm: string;
270
+ md: string;
271
+ lg: string;
272
+ xl: string;
273
+ "2xl": string;
274
+ "2xs": string;
275
+ xs: string;
276
+ inner: string;
277
+ };
278
+ strokeWidth: {
279
+ 0: string;
280
+ 2: string;
281
+ 1: string;
282
+ };
283
+ fontFamily: {
284
+ sans: string;
285
+ serif: string;
286
+ mono: string;
287
+ };
288
+ fontWeight: {
289
+ normal: string;
290
+ thin: string;
291
+ bold: string;
292
+ light: string;
293
+ medium: string;
294
+ extralight: string;
295
+ semibold: string;
296
+ extrabold: string;
297
+ black: string;
298
+ };
299
+ letterSpacing: {
300
+ normal: string;
301
+ tight: string;
302
+ tighter: string;
303
+ wide: string;
304
+ wider: string;
305
+ widest: string;
306
+ };
307
+ lineHeight: {
308
+ none: string;
309
+ normal: string;
310
+ tight: string;
311
+ relaxed: string;
312
+ };
313
+ textShadow: {
314
+ none: string;
315
+ sm: string;
316
+ md: string;
317
+ lg: string;
318
+ "2xs": string;
319
+ xs: string;
320
+ };
321
+ blur: {
322
+ none: string;
323
+ sm: string;
324
+ md: string;
325
+ lg: string;
326
+ xl: string;
327
+ "2xl": string;
328
+ "3xl": string;
329
+ };
330
+ translate: {
331
+ 0: string;
332
+ 4: string;
333
+ full: string;
334
+ 2: string;
335
+ 5: string;
336
+ 1: string;
337
+ "1/2": string;
338
+ "1/3": string;
339
+ "2/3": string;
340
+ "1/4": string;
341
+ "3/4": string;
342
+ 8: string;
343
+ 0.5: string;
344
+ 1.5: string;
345
+ 2.5: string;
346
+ 3: string;
347
+ 3.5: string;
348
+ 6: string;
349
+ 7: string;
350
+ 9: string;
351
+ 10: string;
352
+ 11: string;
353
+ 12: string;
354
+ 14: string;
355
+ 16: string;
356
+ 20: string;
357
+ 24: string;
358
+ 28: string;
359
+ 32: string;
360
+ 36: string;
361
+ 40: string;
362
+ 44: string;
363
+ 48: string;
364
+ 52: string;
365
+ 56: string;
366
+ 60: string;
367
+ 64: string;
368
+ 72: string;
369
+ 80: string;
370
+ 96: string;
371
+ };
372
+ radius: {
373
+ none: string;
374
+ sm: string;
375
+ md: string;
376
+ lg: string;
377
+ xl: string;
378
+ xs: string;
379
+ full: string;
380
+ };
381
+ h: {
382
+ screen: string;
383
+ svh: string;
384
+ lvh: string;
385
+ dvh: string;
386
+ };
387
+ skew: {
388
+ 0: string;
389
+ 2: string;
390
+ 1: string;
391
+ 3: string;
392
+ 6: string;
393
+ 12: string;
394
+ };
12
395
  }, {}, {}, {}, "_light" | "_dark" | "_sm" | "_md" | "_lg" | "_xl" | "_2xl", {
13
396
  readonly color: {
14
397
  readonly $type: "color";
@@ -1,6 +1,6 @@
1
+ import { applySlotOverrides, assertTransformedConfig, buildSlotProps, buildUntransformedSlotProps, inferComponentNameFromRenderFn, mergeMotionConfig, mergeRootClassName, mergeSlotMotionProps, partitionMergedProps } from "./createComponent.boundaries.js";
1
2
  import { processStyleProps } from "./getStyles.js";
2
3
  import { createComponentStyler } from "./getComponentStyles.js";
3
- import { applySlotOverrides, assertTransformedConfig, buildSlotProps, buildUntransformedSlotProps, inferComponentNameFromRenderFn, mergeMotionConfig, mergeRootClassName, mergeSlotMotionProps, partitionMergedProps } from "./createComponent.boundaries.js";
4
4
  import { createElement } from "react";
5
5
  //#region ../core/dist/createComponent.js
6
6
  function createPrimitiveRenderFn(tag) {