@yahoo/uds-v5-wip 1.52.0 → 1.53.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.
@@ -167,6 +167,78 @@ type PropBinding = PrimitivePropBinding;
167
167
  * disabled: bool(),
168
168
  * }
169
169
  */
170
+ /**
171
+ * Names of prop bindings that participate in matrix/strip iteration —
172
+ * i.e. props authored as `enums({...})` or `bool()`. Other prop bindings
173
+ * (style props, forwards, composites) don't have a fixed enumerable
174
+ * set of values to iterate over and so aren't valid axes.
175
+ *
176
+ * Resolves to `never` when `TProps` declares no enum/bool bindings.
177
+ */
178
+ type IterableAxisOf<TProps> = { [K in keyof TProps]: TProps[K] extends EnumMarker<Record<string, unknown>> | BoolMarker ? K : never }[keyof TProps] & string;
179
+ /**
180
+ * A single example entry — describes one cell, one row, or one matrix.
181
+ *
182
+ * Three iteration shapes are supported, distinguished by which fields
183
+ * are present:
184
+ *
185
+ * - Static: only `props`. Renders one cell with `props` as the consumer-
186
+ * facing prop values.
187
+ * - 1D strip: `axis` plus `props`. Iterates the named enum/bool prop and
188
+ * renders one cell per value.
189
+ * - 2D matrix: `rows` and `cols` plus `props`. Iterates both and renders
190
+ * the Cartesian product as a labeled grid.
191
+ *
192
+ * `axis` and `rows`/`cols` are mutually exclusive; `rows` and `cols`
193
+ * must appear together. The runtime validator enforces both.
194
+ *
195
+ * `props` is keyed by *consumer-facing prop name* — the same names a
196
+ * caller of `<Link href='#'>` would pass — not by internal layer name.
197
+ * The renderer maps consumer props to layer bundles using the
198
+ * component's own `props` bindings.
199
+ *
200
+ * Authors don't control wrapper layout (gaps, padding, alignment) — the
201
+ * renderer (Studio / docs) owns those decisions so the matrix surface
202
+ * stays consistent across components.
203
+ */
204
+ interface ExampleEntry<TAxis extends string = string> {
205
+ /** 1D iteration — one cell per value of this enum/bool prop. */
206
+ axis?: TAxis;
207
+ /** 2D iteration — rows × cols matrix. Mutually exclusive with `axis`. */
208
+ rows?: TAxis;
209
+ cols?: TAxis;
210
+ /**
211
+ * Consumer-facing prop values used by every cell. For 1D / 2D entries,
212
+ * the cell's axis coords are overlaid on top of these (axis values win
213
+ * on collision with `props.<axis>`).
214
+ */
215
+ props?: Record<string, unknown>;
216
+ }
217
+ /**
218
+ * Component examples — required `default` plus any number of additional
219
+ * named entries. `default` is the canonical single-instance showcase
220
+ * Studio + docs fall back to when no specific example is requested.
221
+ *
222
+ * `default` is distinct from `defaultProps`: `defaultProps` is the
223
+ * runtime API default applied when a consumer omits a prop; `examples.default`
224
+ * is the showcase content (label, icons, href) used by tooling. A
225
+ * component can declare both without conflict.
226
+ *
227
+ * Axis types narrow to `IterableAxisOf<TProps>` so referencing a non-
228
+ * enum/bool prop name in `axis` / `rows` / `cols` is a type error.
229
+ */
230
+ type Examples<TProps extends Record<string, unknown> = Record<string, unknown>> = {
231
+ default: ExampleEntry<IterableAxisOf<TProps>>;
232
+ } & Record<string, ExampleEntry<IterableAxisOf<TProps>>>;
233
+ /**
234
+ * The architecture-doc-target component config. Distinct from today's
235
+ * `SingleComponentDef` (`base` + `variants` shape) — this is the
236
+ * pure-data, layers-first shape the new `defineComponent` accepts.
237
+ *
238
+ * `TLayers` is inferred from the `layers` block so prop bindings can
239
+ * narrow their `layer` field against the component's actual layer
240
+ * names; typos surface at the authoring site.
241
+ */
170
242
  /**
171
243
  * Branded shape returned by `defineComponent({...})`. Carries `layers`,
172
244
  * `props`, AND a phantom `__tag` slot as const-narrowed types so
@@ -191,6 +263,11 @@ interface ComponentConfigValue<TLayers extends Record<string, LayerInput>, TProp
191
263
  readonly layers: TLayers;
192
264
  readonly props?: TProps;
193
265
  readonly defaultProps?: Record<string, unknown>;
266
+ /**
267
+ * Component examples — see {@link Examples}. Carried through from
268
+ * `ComponentConfigInput.examples`.
269
+ */
270
+ readonly examples?: Examples<TProps>;
194
271
  }
195
272
  /**
196
273
  * The bundle passed to the render function for each layer — a ready-to-
package/dist/config.d.ts CHANGED
@@ -35,50 +35,9 @@ declare const defaultPreset: UdsConfig<_$_uds_types0.ModifierProp | GetModifierF
35
35
  };
36
36
  };
37
37
  }>, {
38
- opacity: {
39
- 0: string;
40
- 5: string;
41
- 10: string;
42
- 20: string;
43
- 40: string;
44
- 60: string;
45
- 80: string;
46
- 25: string;
47
- 30: string;
48
- 50: string;
49
- 70: string;
50
- 75: string;
51
- 90: string;
52
- 95: string;
53
- 100: string;
54
- };
55
- scale: {
56
- 0: string;
57
- 50: string;
58
- 75: string;
59
- 90: string;
60
- 95: string;
61
- 100: string;
62
- 105: string;
63
- 110: string;
64
- 125: string;
65
- 150: string;
66
- 200: string;
67
- };
68
- rotate: {
69
- 0: string;
70
- 1: string;
71
- 2: string;
72
- 3: string;
73
- 6: string;
74
- 12: string;
75
- 90: string;
76
- 45: string;
77
- 180: string;
78
- };
79
38
  color: {
80
- inherit: string;
81
39
  transparent: string;
40
+ inherit: string;
82
41
  current: string;
83
42
  "always/black": string;
84
43
  "always/white": string;
@@ -101,22 +60,16 @@ declare const defaultPreset: UdsConfig<_$_uds_types0.ModifierProp | GetModifierF
101
60
  inverse: string;
102
61
  "on-inverse": string;
103
62
  };
104
- borderColor: {
105
- brand: string;
106
- accent: string;
107
- alert: string;
108
- positive: string;
109
- warning: string;
110
- primary: string;
111
- secondary: string;
112
- tertiary: string;
113
- inverse: string;
114
- surface: string;
115
- "brand-wash": string;
116
- "accent-wash": string;
117
- "alert-wash": string;
118
- "positive-wash": string;
119
- "warning-wash": string;
63
+ shadow: {
64
+ none: string;
65
+ sm: string;
66
+ md: string;
67
+ lg: string;
68
+ xl: string;
69
+ "2xl": string;
70
+ xs: string;
71
+ "2xs": string;
72
+ inner: string;
120
73
  };
121
74
  position: {
122
75
  auto: string;
@@ -128,17 +81,111 @@ declare const defaultPreset: UdsConfig<_$_uds_types0.ModifierProp | GetModifierF
128
81
  "2/4": string;
129
82
  "3/4": string;
130
83
  };
84
+ flex: {
85
+ 1: string;
86
+ initial: string;
87
+ auto: string;
88
+ none: string;
89
+ };
90
+ rotate: {
91
+ 0: string;
92
+ 1: string;
93
+ 2: string;
94
+ 3: string;
95
+ 6: string;
96
+ 12: string;
97
+ 90: string;
98
+ 45: string;
99
+ 180: string;
100
+ };
101
+ scale: {
102
+ 0: string;
103
+ 50: string;
104
+ 75: string;
105
+ 90: string;
106
+ 95: string;
107
+ 100: string;
108
+ 105: string;
109
+ 110: string;
110
+ 125: string;
111
+ 150: string;
112
+ 200: string;
113
+ };
114
+ translate: {
115
+ 0: string;
116
+ 1: string;
117
+ 2: string;
118
+ full: string;
119
+ "1/2": string;
120
+ "1/3": string;
121
+ "2/3": string;
122
+ "1/4": string;
123
+ "3/4": string;
124
+ 4: string;
125
+ 8: string;
126
+ 0.5: string;
127
+ 1.5: string;
128
+ 2.5: string;
129
+ 3: string;
130
+ 3.5: string;
131
+ 5: string;
132
+ 6: string;
133
+ 7: string;
134
+ 9: string;
135
+ 10: string;
136
+ 11: string;
137
+ 12: string;
138
+ 14: string;
139
+ 16: string;
140
+ 20: string;
141
+ 24: string;
142
+ 28: string;
143
+ 32: string;
144
+ 36: string;
145
+ 40: string;
146
+ 44: string;
147
+ 48: string;
148
+ 52: string;
149
+ 56: string;
150
+ 60: string;
151
+ 64: string;
152
+ 72: string;
153
+ 80: string;
154
+ 96: string;
155
+ };
156
+ animation: {
157
+ none: string;
158
+ spin: string;
159
+ ping: string;
160
+ };
161
+ opacity: {
162
+ 0: string;
163
+ 5: string;
164
+ 10: string;
165
+ 20: string;
166
+ 40: string;
167
+ 60: string;
168
+ 80: string;
169
+ 25: string;
170
+ 30: string;
171
+ 50: string;
172
+ 70: string;
173
+ 75: string;
174
+ 90: string;
175
+ 95: string;
176
+ 100: string;
177
+ };
131
178
  size: {
132
179
  auto: string;
133
180
  full: string;
134
- max: string;
135
- min: string;
136
181
  "1/2": string;
137
182
  "1/3": string;
138
183
  "2/3": string;
139
184
  "1/4": string;
140
185
  "2/4": string;
141
186
  "3/4": string;
187
+ min: string;
188
+ max: string;
142
189
  fit: string;
143
190
  "1/5": string;
144
191
  "2/5": string;
@@ -150,11 +197,6 @@ declare const defaultPreset: UdsConfig<_$_uds_types0.ModifierProp | GetModifierF
150
197
  "4/6": string;
151
198
  "5/6": string;
152
199
  };
153
- animation: {
154
- none: string;
155
- ping: string;
156
- spin: string;
157
- };
158
200
  bg: {
159
201
  overlay: string;
160
202
  brand: string;
@@ -176,6 +218,32 @@ declare const defaultPreset: UdsConfig<_$_uds_types0.ModifierProp | GetModifierF
176
218
  "positive-wash": string;
177
219
  "warning-wash": string;
178
220
  };
221
+ radius: {
222
+ none: string;
223
+ sm: string;
224
+ md: string;
225
+ lg: string;
226
+ xl: string;
227
+ full: string;
228
+ xs: string;
229
+ };
230
+ borderColor: {
231
+ brand: string;
232
+ accent: string;
233
+ alert: string;
234
+ positive: string;
235
+ warning: string;
236
+ primary: string;
237
+ secondary: string;
238
+ tertiary: string;
239
+ inverse: string;
240
+ surface: string;
241
+ "brand-wash": string;
242
+ "accent-wash": string;
243
+ "alert-wash": string;
244
+ "positive-wash": string;
245
+ "warning-wash": string;
246
+ };
179
247
  borderWidth: {
180
248
  none: string;
181
249
  thin: string;
@@ -184,16 +252,19 @@ declare const defaultPreset: UdsConfig<_$_uds_types0.ModifierProp | GetModifierF
184
252
  };
185
253
  divideWidth: {
186
254
  0: string;
187
- 4: string;
188
- reverse: string;
189
255
  2: string;
256
+ reverse: string;
257
+ 4: string;
190
258
  8: string;
191
259
  };
192
- flex: {
260
+ blur: {
193
261
  none: string;
194
- initial: string;
195
- auto: string;
196
- 1: string;
262
+ sm: string;
263
+ md: string;
264
+ lg: string;
265
+ xl: string;
266
+ "2xl": string;
267
+ "3xl": string;
197
268
  };
198
269
  flexGrow: {
199
270
  0: string;
@@ -202,29 +273,12 @@ declare const defaultPreset: UdsConfig<_$_uds_types0.ModifierProp | GetModifierF
202
273
  flexShrink: {
203
274
  0: string;
204
275
  };
205
- aspectRatio: {
206
- square: string;
207
- landscape: string;
208
- portrait: string;
209
- widescreen: string;
210
- ultrawide: string;
211
- golden: string;
212
- };
213
- zIndex: {
214
- 0: string;
215
- auto: string;
216
- 10: string;
217
- 20: string;
218
- 40: string;
219
- 30: string;
220
- 50: string;
221
- };
222
276
  spacing: {
223
277
  0: string;
224
- 4: string;
225
278
  1: string;
226
279
  2: string;
227
280
  px: string;
281
+ 4: string;
228
282
  8: string;
229
283
  0.5: string;
230
284
  1.5: string;
@@ -256,57 +310,62 @@ declare const defaultPreset: UdsConfig<_$_uds_types0.ModifierProp | GetModifierF
256
310
  80: string;
257
311
  96: string;
258
312
  };
259
- w: {
260
- screen: string;
261
- svw: string;
262
- lvw: string;
263
- dvw: string;
264
- };
265
- outlineWidth: {
313
+ zIndex: {
266
314
  0: string;
267
- 4: string;
268
- 1: string;
269
- 2: string;
270
- 8: string;
315
+ auto: string;
316
+ 10: string;
317
+ 20: string;
318
+ 40: string;
319
+ 30: string;
320
+ 50: string;
271
321
  };
272
322
  outlineOffset: {
273
323
  0: string;
274
- 4: string;
275
324
  1: string;
276
325
  2: string;
326
+ 4: string;
277
327
  8: string;
278
328
  };
279
329
  ringWidth: {
280
330
  0: string;
281
- 4: string;
282
- inset: string;
283
331
  1: string;
332
+ inset: string;
284
333
  2: string;
334
+ 4: string;
285
335
  8: string;
286
336
  };
287
337
  ringOffsetWidth: {
288
338
  0: string;
289
- 4: string;
290
339
  1: string;
291
340
  2: string;
341
+ 4: string;
292
342
  8: string;
293
343
  };
294
- shadow: {
295
- none: string;
296
- sm: string;
297
- md: string;
298
- lg: string;
299
- xl: string;
300
- "2xl": string;
301
- "2xs": string;
302
- xs: string;
303
- inner: string;
344
+ h: {
345
+ screen: string;
346
+ svh: string;
347
+ lvh: string;
348
+ dvh: string;
349
+ };
350
+ w: {
351
+ screen: string;
352
+ svw: string;
353
+ lvw: string;
354
+ dvw: string;
304
355
  };
305
356
  strokeWidth: {
306
357
  0: string;
307
358
  1: string;
308
359
  2: string;
309
360
  };
361
+ skew: {
362
+ 0: string;
363
+ 1: string;
364
+ 2: string;
365
+ 3: string;
366
+ 6: string;
367
+ 12: string;
368
+ };
310
369
  fontFamily: {
311
370
  sans: string;
312
371
  serif: string;
@@ -314,8 +373,8 @@ declare const defaultPreset: UdsConfig<_$_uds_types0.ModifierProp | GetModifierF
314
373
  };
315
374
  fontWeight: {
316
375
  normal: string;
317
- thin: string;
318
376
  bold: string;
377
+ thin: string;
319
378
  medium: string;
320
379
  extralight: string;
321
380
  light: string;
@@ -332,8 +391,8 @@ declare const defaultPreset: UdsConfig<_$_uds_types0.ModifierProp | GetModifierF
332
391
  widest: string;
333
392
  };
334
393
  lineHeight: {
335
- none: string;
336
394
  normal: string;
395
+ none: string;
337
396
  tight: string;
338
397
  relaxed: string;
339
398
  };
@@ -342,82 +401,23 @@ declare const defaultPreset: UdsConfig<_$_uds_types0.ModifierProp | GetModifierF
342
401
  sm: string;
343
402
  md: string;
344
403
  lg: string;
345
- "2xs": string;
346
404
  xs: string;
405
+ "2xs": string;
347
406
  };
348
- blur: {
349
- none: string;
350
- sm: string;
351
- md: string;
352
- lg: string;
353
- xl: string;
354
- "2xl": string;
355
- "3xl": string;
356
- };
357
- translate: {
407
+ outlineWidth: {
358
408
  0: string;
359
- 4: string;
360
- full: string;
361
409
  1: string;
362
410
  2: string;
363
- "1/2": string;
364
- "1/3": string;
365
- "2/3": string;
366
- "1/4": string;
367
- "3/4": string;
411
+ 4: string;
368
412
  8: string;
369
- 0.5: string;
370
- 1.5: string;
371
- 2.5: string;
372
- 3: string;
373
- 3.5: string;
374
- 5: string;
375
- 6: string;
376
- 7: string;
377
- 9: string;
378
- 10: string;
379
- 11: string;
380
- 12: string;
381
- 14: string;
382
- 16: string;
383
- 20: string;
384
- 24: string;
385
- 28: string;
386
- 32: string;
387
- 36: string;
388
- 40: string;
389
- 44: string;
390
- 48: string;
391
- 52: string;
392
- 56: string;
393
- 60: string;
394
- 64: string;
395
- 72: string;
396
- 80: string;
397
- 96: string;
398
- };
399
- radius: {
400
- none: string;
401
- sm: string;
402
- md: string;
403
- lg: string;
404
- xl: string;
405
- xs: string;
406
- full: string;
407
- };
408
- h: {
409
- screen: string;
410
- svh: string;
411
- lvh: string;
412
- dvh: string;
413
413
  };
414
- skew: {
415
- 0: string;
416
- 1: string;
417
- 2: string;
418
- 3: string;
419
- 6: string;
420
- 12: string;
414
+ aspectRatio: {
415
+ square: string;
416
+ landscape: string;
417
+ portrait: string;
418
+ widescreen: string;
419
+ ultrawide: string;
420
+ golden: string;
421
421
  };
422
422
  }, {}, {}, {}, GetModifierFromInput<{
423
423
  readonly colorMode: {
@@ -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) {
@@ -3,8 +3,8 @@ import "../../utils/dist/index.js";
3
3
  import { expandCompositeStyles, getCompositeStylesConfig } from "./compositeStyles.js";
4
4
  import { propMappings } from "./style-prop-data.js";
5
5
  import { stylePropsTwMap } from "./generated/stylePropsTwMap.js";
6
- import { modifierMappings } from "./modifier-mappings.js";
7
6
  import { colorPropToOpacityProp } from "./color-opacity-map.js";
7
+ import { modifierMappings } from "./modifier-mappings.js";
8
8
  import { clsx } from "clsx";
9
9
  //#region ../core/dist/getStyles.js
10
10
  /** Convert kebab-case CSS property to camelCase for React inline styles.