@yahoo/uds-create-config 3.0.5 → 3.0.7

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 (33) hide show
  1. package/dist/configs/CanvasConfig.d.ts +24 -0
  2. package/dist/configs/react-native-system.d.ts +20 -2
  3. package/dist/configs/react-native-system.js +1 -1
  4. package/dist/configs/system.d.ts +18 -0
  5. package/dist/configs/system.js +5 -1
  6. package/dist/entities/native/NativeStyleProperty.d.ts +2 -2
  7. package/dist/entities/system/Component.d.ts +12 -0
  8. package/dist/entities/system/Component.js +6 -0
  9. package/dist/entities/system/Font.d.ts +25 -1
  10. package/dist/entities/system/Font.js +34 -1
  11. package/dist/entities/system/Token.js +1 -1
  12. package/dist/entities/system/defineComponent.d.ts +32 -11
  13. package/dist/entities/system/defineComponent.js +10 -1
  14. package/dist/entities/system/icon-library.js +5 -1
  15. package/dist/entities/system/style-bag.js +1 -0
  16. package/dist/framework/Config.d.ts +16 -1
  17. package/dist/framework/Config.js +33 -1
  18. package/dist/framework/projections.d.ts +23 -2
  19. package/dist/framework/projections.js +67 -11
  20. package/dist/framework/render-spec.js +16 -1
  21. package/dist/framework/schema-version.d.ts +1 -1
  22. package/dist/framework/schema-version.js +5 -5
  23. package/dist/framework/utils/field-schema.js +3 -2
  24. package/dist/index.d.ts +3 -3
  25. package/dist/index.js +3 -3
  26. package/dist/migrations/2.0.0/v1-artifact.d.ts +20 -0
  27. package/dist/migrations/2.0.0/v1-artifact.js +358 -18
  28. package/dist/migrations/20260912161840_preview_conditions.d.ts +9 -0
  29. package/dist/migrations/20260912161840_preview_conditions.js +10 -0
  30. package/dist/migrations/20260912164927_font_variable.d.ts +18 -0
  31. package/dist/migrations/20260912164927_font_variable.js +10 -0
  32. package/dist/tsconfig.tsbuildinfo +1 -1
  33. package/package.json +2 -2
@@ -255,6 +255,10 @@ declare const Node: EntityClass<z.ZodObject<{
255
255
  anatomy: z.ZodOptional<SubEntityClass<z.ZodType<ComponentElementBody, unknown, z.core.$ZodTypeInternals<ComponentElementBody, unknown>>>>;
256
256
  defaultProps: z.ZodOptional<SubEntityClass<z.ZodType<StyleValue, unknown, z.core.$ZodTypeInternals<StyleValue, unknown>>>>;
257
257
  previewProps: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
258
+ previewWhen: z.ZodOptional<z.ZodArray<z.ZodObject<{
259
+ when: z.ZodRecord<z.ZodString, z.ZodUnknown>;
260
+ props: z.ZodRecord<z.ZodString, z.ZodUnknown>;
261
+ }, z.core.$strip>>>;
258
262
  file: z.ZodOptional<z.ZodObject<{
259
263
  __ref: z.ZodString;
260
264
  }, z.core.$strip>>;
@@ -369,6 +373,10 @@ declare const Node: EntityClass<z.ZodObject<{
369
373
  anatomy: z.ZodOptional<SubEntityClass<z.ZodType<ComponentElementBody, unknown, z.core.$ZodTypeInternals<ComponentElementBody, unknown>>>>;
370
374
  defaultProps: z.ZodOptional<SubEntityClass<z.ZodType<StyleValue, unknown, z.core.$ZodTypeInternals<StyleValue, unknown>>>>;
371
375
  previewProps: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
376
+ previewWhen: z.ZodOptional<z.ZodArray<z.ZodObject<{
377
+ when: z.ZodRecord<z.ZodString, z.ZodUnknown>;
378
+ props: z.ZodRecord<z.ZodString, z.ZodUnknown>;
379
+ }, z.core.$strip>>>;
372
380
  file: z.ZodOptional<z.ZodObject<{
373
381
  __ref: z.ZodString;
374
382
  }, z.core.$strip>>;
@@ -1113,6 +1121,10 @@ declare const CanvasConfig: ConfigClass<{
1113
1121
  anatomy: z.ZodOptional<SubEntityClass<z.ZodType<ComponentElementBody, unknown, z.core.$ZodTypeInternals<ComponentElementBody, unknown>>>>;
1114
1122
  defaultProps: z.ZodOptional<SubEntityClass<z.ZodType<StyleValue, unknown, z.core.$ZodTypeInternals<StyleValue, unknown>>>>;
1115
1123
  previewProps: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
1124
+ previewWhen: z.ZodOptional<z.ZodArray<z.ZodObject<{
1125
+ when: z.ZodRecord<z.ZodString, z.ZodUnknown>;
1126
+ props: z.ZodRecord<z.ZodString, z.ZodUnknown>;
1127
+ }, z.core.$strip>>>;
1116
1128
  file: z.ZodOptional<z.ZodObject<{
1117
1129
  __ref: z.ZodString;
1118
1130
  }, z.core.$strip>>;
@@ -1227,6 +1239,10 @@ declare const CanvasConfig: ConfigClass<{
1227
1239
  anatomy: z.ZodOptional<SubEntityClass<z.ZodType<ComponentElementBody, unknown, z.core.$ZodTypeInternals<ComponentElementBody, unknown>>>>;
1228
1240
  defaultProps: z.ZodOptional<SubEntityClass<z.ZodType<StyleValue, unknown, z.core.$ZodTypeInternals<StyleValue, unknown>>>>;
1229
1241
  previewProps: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
1242
+ previewWhen: z.ZodOptional<z.ZodArray<z.ZodObject<{
1243
+ when: z.ZodRecord<z.ZodString, z.ZodUnknown>;
1244
+ props: z.ZodRecord<z.ZodString, z.ZodUnknown>;
1245
+ }, z.core.$strip>>>;
1230
1246
  file: z.ZodOptional<z.ZodObject<{
1231
1247
  __ref: z.ZodString;
1232
1248
  }, z.core.$strip>>;
@@ -2236,6 +2252,10 @@ declare function createCanvasConfig(system: AnySystemConfig): ConfigInstance<{
2236
2252
  anatomy: z.ZodOptional<SubEntityClass<z.ZodType<ComponentElementBody, unknown, z.core.$ZodTypeInternals<ComponentElementBody, unknown>>>>;
2237
2253
  defaultProps: z.ZodOptional<SubEntityClass<z.ZodType<StyleValue, unknown, z.core.$ZodTypeInternals<StyleValue, unknown>>>>;
2238
2254
  previewProps: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
2255
+ previewWhen: z.ZodOptional<z.ZodArray<z.ZodObject<{
2256
+ when: z.ZodRecord<z.ZodString, z.ZodUnknown>;
2257
+ props: z.ZodRecord<z.ZodString, z.ZodUnknown>;
2258
+ }, z.core.$strip>>>;
2239
2259
  file: z.ZodOptional<z.ZodObject<{
2240
2260
  __ref: z.ZodString;
2241
2261
  }, z.core.$strip>>;
@@ -2350,6 +2370,10 @@ declare function createCanvasConfig(system: AnySystemConfig): ConfigInstance<{
2350
2370
  anatomy: z.ZodOptional<SubEntityClass<z.ZodType<ComponentElementBody, unknown, z.core.$ZodTypeInternals<ComponentElementBody, unknown>>>>;
2351
2371
  defaultProps: z.ZodOptional<SubEntityClass<z.ZodType<StyleValue, unknown, z.core.$ZodTypeInternals<StyleValue, unknown>>>>;
2352
2372
  previewProps: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
2373
+ previewWhen: z.ZodOptional<z.ZodArray<z.ZodObject<{
2374
+ when: z.ZodRecord<z.ZodString, z.ZodUnknown>;
2375
+ props: z.ZodRecord<z.ZodString, z.ZodUnknown>;
2376
+ }, z.core.$strip>>>;
2353
2377
  file: z.ZodOptional<z.ZodObject<{
2354
2378
  __ref: z.ZodString;
2355
2379
  }, z.core.$strip>>;
@@ -182,6 +182,10 @@ declare const ReactNativeSystem: ConfigClass<{
182
182
  anatomy: _$zod.ZodOptional<SubEntityClass<_$zod.ZodType<ComponentElementBody, unknown, _$zod_v4_core0.$ZodTypeInternals<ComponentElementBody, unknown>>>>;
183
183
  defaultProps: _$zod.ZodOptional<SubEntityClass<_$zod.ZodType<StyleValue, unknown, _$zod_v4_core0.$ZodTypeInternals<StyleValue, unknown>>>>;
184
184
  previewProps: _$zod.ZodOptional<_$zod.ZodRecord<_$zod.ZodString, _$zod.ZodUnknown>>;
185
+ previewWhen: _$zod.ZodOptional<_$zod.ZodArray<_$zod.ZodObject<{
186
+ when: _$zod.ZodRecord<_$zod.ZodString, _$zod.ZodUnknown>;
187
+ props: _$zod.ZodRecord<_$zod.ZodString, _$zod.ZodUnknown>;
188
+ }, _$zod_v4_core0.$strip>>>;
185
189
  file: _$zod.ZodOptional<_$zod.ZodObject<{
186
190
  __ref: _$zod.ZodString;
187
191
  }, _$zod_v4_core0.$strip>>;
@@ -296,6 +300,10 @@ declare const ReactNativeSystem: ConfigClass<{
296
300
  anatomy: _$zod.ZodOptional<SubEntityClass<_$zod.ZodType<ComponentElementBody, unknown, _$zod_v4_core0.$ZodTypeInternals<ComponentElementBody, unknown>>>>;
297
301
  defaultProps: _$zod.ZodOptional<SubEntityClass<_$zod.ZodType<StyleValue, unknown, _$zod_v4_core0.$ZodTypeInternals<StyleValue, unknown>>>>;
298
302
  previewProps: _$zod.ZodOptional<_$zod.ZodRecord<_$zod.ZodString, _$zod.ZodUnknown>>;
303
+ previewWhen: _$zod.ZodOptional<_$zod.ZodArray<_$zod.ZodObject<{
304
+ when: _$zod.ZodRecord<_$zod.ZodString, _$zod.ZodUnknown>;
305
+ props: _$zod.ZodRecord<_$zod.ZodString, _$zod.ZodUnknown>;
306
+ }, _$zod_v4_core0.$strip>>>;
299
307
  file: _$zod.ZodOptional<_$zod.ZodObject<{
300
308
  __ref: _$zod.ZodString;
301
309
  }, _$zod_v4_core0.$strip>>;
@@ -874,6 +882,7 @@ declare const ReactNativeSystem: ConfigClass<{
874
882
  overflow: "overflow";
875
883
  padding: "padding";
876
884
  width: "width";
885
+ fontFamily: "fontFamily";
877
886
  alignContent: "alignContent";
878
887
  alignItems: "alignItems";
879
888
  alignSelf: "alignSelf";
@@ -925,7 +934,6 @@ declare const ReactNativeSystem: ConfigClass<{
925
934
  flexGrow: "flexGrow";
926
935
  flexShrink: "flexShrink";
927
936
  flexWrap: "flexWrap";
928
- fontFamily: "fontFamily";
929
937
  fontSize: "fontSize";
930
938
  fontStyle: "fontStyle";
931
939
  fontVariant: "fontVariant";
@@ -1041,6 +1049,7 @@ declare const ReactNativeSystem: ConfigClass<{
1041
1049
  postscriptName: _$zod.ZodOptional<_$zod.ZodString>;
1042
1050
  }, _$zod_v4_core0.$strip>>>;
1043
1051
  fallbackStack: _$zod.ZodOptional<_$zod.ZodArray<_$zod.ZodString>>;
1052
+ variable: _$zod.ZodOptional<_$zod.ZodString>;
1044
1053
  isVariableFont: _$zod.ZodOptional<_$zod.ZodBoolean>;
1045
1054
  }, _$zod_v4_core0.$strict>, _$zod.ZodObject<{
1046
1055
  version: _$zod.ZodOptional<_$zod.ZodString>;
@@ -1676,6 +1685,10 @@ declare const ReactNativeSystem: ConfigClass<{
1676
1685
  anatomy: _$zod.ZodOptional<SubEntityClass<_$zod.ZodType<ComponentElementBody, unknown, _$zod_v4_core0.$ZodTypeInternals<ComponentElementBody, unknown>>>>;
1677
1686
  defaultProps: _$zod.ZodOptional<SubEntityClass<_$zod.ZodType<StyleValue, unknown, _$zod_v4_core0.$ZodTypeInternals<StyleValue, unknown>>>>;
1678
1687
  previewProps: _$zod.ZodOptional<_$zod.ZodRecord<_$zod.ZodString, _$zod.ZodUnknown>>;
1688
+ previewWhen: _$zod.ZodOptional<_$zod.ZodArray<_$zod.ZodObject<{
1689
+ when: _$zod.ZodRecord<_$zod.ZodString, _$zod.ZodUnknown>;
1690
+ props: _$zod.ZodRecord<_$zod.ZodString, _$zod.ZodUnknown>;
1691
+ }, _$zod_v4_core0.$strip>>>;
1679
1692
  file: _$zod.ZodOptional<_$zod.ZodObject<{
1680
1693
  __ref: _$zod.ZodString;
1681
1694
  }, _$zod_v4_core0.$strip>>;
@@ -1790,6 +1803,10 @@ declare const ReactNativeSystem: ConfigClass<{
1790
1803
  anatomy: _$zod.ZodOptional<SubEntityClass<_$zod.ZodType<ComponentElementBody, unknown, _$zod_v4_core0.$ZodTypeInternals<ComponentElementBody, unknown>>>>;
1791
1804
  defaultProps: _$zod.ZodOptional<SubEntityClass<_$zod.ZodType<StyleValue, unknown, _$zod_v4_core0.$ZodTypeInternals<StyleValue, unknown>>>>;
1792
1805
  previewProps: _$zod.ZodOptional<_$zod.ZodRecord<_$zod.ZodString, _$zod.ZodUnknown>>;
1806
+ previewWhen: _$zod.ZodOptional<_$zod.ZodArray<_$zod.ZodObject<{
1807
+ when: _$zod.ZodRecord<_$zod.ZodString, _$zod.ZodUnknown>;
1808
+ props: _$zod.ZodRecord<_$zod.ZodString, _$zod.ZodUnknown>;
1809
+ }, _$zod_v4_core0.$strip>>>;
1793
1810
  file: _$zod.ZodOptional<_$zod.ZodObject<{
1794
1811
  __ref: _$zod.ZodString;
1795
1812
  }, _$zod_v4_core0.$strip>>;
@@ -2368,6 +2385,7 @@ declare const ReactNativeSystem: ConfigClass<{
2368
2385
  overflow: "overflow";
2369
2386
  padding: "padding";
2370
2387
  width: "width";
2388
+ fontFamily: "fontFamily";
2371
2389
  alignContent: "alignContent";
2372
2390
  alignItems: "alignItems";
2373
2391
  alignSelf: "alignSelf";
@@ -2419,7 +2437,6 @@ declare const ReactNativeSystem: ConfigClass<{
2419
2437
  flexGrow: "flexGrow";
2420
2438
  flexShrink: "flexShrink";
2421
2439
  flexWrap: "flexWrap";
2422
- fontFamily: "fontFamily";
2423
2440
  fontSize: "fontSize";
2424
2441
  fontStyle: "fontStyle";
2425
2442
  fontVariant: "fontVariant";
@@ -2535,6 +2552,7 @@ declare const ReactNativeSystem: ConfigClass<{
2535
2552
  postscriptName: _$zod.ZodOptional<_$zod.ZodString>;
2536
2553
  }, _$zod_v4_core0.$strip>>>;
2537
2554
  fallbackStack: _$zod.ZodOptional<_$zod.ZodArray<_$zod.ZodString>>;
2555
+ variable: _$zod.ZodOptional<_$zod.ZodString>;
2538
2556
  isVariableFont: _$zod.ZodOptional<_$zod.ZodBoolean>;
2539
2557
  }, _$zod_v4_core0.$strict>, _$zod.ZodObject<{
2540
2558
  version: _$zod.ZodOptional<_$zod.ZodString>;
@@ -1,3 +1,4 @@
1
+ import { Font } from "../entities/system/Font.js";
1
2
  import { Composite } from "../entities/system/Composite.js";
2
3
  import { Package } from "../entities/system/Package.js";
3
4
  import { File } from "../entities/system/File.js";
@@ -9,7 +10,6 @@ import { Tool } from "../entities/system/Tool.js";
9
10
  import { registerSchemaMigrations, registeredSchemaMigrations } from "../framework/schema-version.js";
10
11
  import { defineConfig } from "../framework/defineConfig.js";
11
12
  import { CanvasRole } from "../entities/system/CanvasRole.js";
12
- import { Font } from "../entities/system/Font.js";
13
13
  import { Guidance } from "../entities/system/Guidance.js";
14
14
  import { NATIVE_CONFIG_NAME } from "./platform.js";
15
15
  import { LinkedSystem } from "../entities/system/LinkedSystem.js";
@@ -170,6 +170,10 @@ declare const System: ConfigClass<{
170
170
  anatomy: _$zod.ZodOptional<SubEntityClass<_$zod.ZodType<ComponentElementBody, unknown, _$zod_v4_core0.$ZodTypeInternals<ComponentElementBody, unknown>>>>;
171
171
  defaultProps: _$zod.ZodOptional<SubEntityClass<_$zod.ZodType<StyleValue, unknown, _$zod_v4_core0.$ZodTypeInternals<StyleValue, unknown>>>>;
172
172
  previewProps: _$zod.ZodOptional<_$zod.ZodRecord<_$zod.ZodString, _$zod.ZodUnknown>>;
173
+ previewWhen: _$zod.ZodOptional<_$zod.ZodArray<_$zod.ZodObject<{
174
+ when: _$zod.ZodRecord<_$zod.ZodString, _$zod.ZodUnknown>;
175
+ props: _$zod.ZodRecord<_$zod.ZodString, _$zod.ZodUnknown>;
176
+ }, _$zod_v4_core0.$strip>>>;
173
177
  file: _$zod.ZodOptional<_$zod.ZodObject<{
174
178
  __ref: _$zod.ZodString;
175
179
  }, _$zod_v4_core0.$strip>>;
@@ -284,6 +288,10 @@ declare const System: ConfigClass<{
284
288
  anatomy: _$zod.ZodOptional<SubEntityClass<_$zod.ZodType<ComponentElementBody, unknown, _$zod_v4_core0.$ZodTypeInternals<ComponentElementBody, unknown>>>>;
285
289
  defaultProps: _$zod.ZodOptional<SubEntityClass<_$zod.ZodType<StyleValue, unknown, _$zod_v4_core0.$ZodTypeInternals<StyleValue, unknown>>>>;
286
290
  previewProps: _$zod.ZodOptional<_$zod.ZodRecord<_$zod.ZodString, _$zod.ZodUnknown>>;
291
+ previewWhen: _$zod.ZodOptional<_$zod.ZodArray<_$zod.ZodObject<{
292
+ when: _$zod.ZodRecord<_$zod.ZodString, _$zod.ZodUnknown>;
293
+ props: _$zod.ZodRecord<_$zod.ZodString, _$zod.ZodUnknown>;
294
+ }, _$zod_v4_core0.$strip>>>;
287
295
  file: _$zod.ZodOptional<_$zod.ZodObject<{
288
296
  __ref: _$zod.ZodString;
289
297
  }, _$zod_v4_core0.$strip>>;
@@ -892,6 +900,7 @@ declare const System: ConfigClass<{
892
900
  postscriptName: _$zod.ZodOptional<_$zod.ZodString>;
893
901
  }, _$zod_v4_core0.$strip>>>;
894
902
  fallbackStack: _$zod.ZodOptional<_$zod.ZodArray<_$zod.ZodString>>;
903
+ variable: _$zod.ZodOptional<_$zod.ZodString>;
895
904
  isVariableFont: _$zod.ZodOptional<_$zod.ZodBoolean>;
896
905
  }, _$zod_v4_core0.$strict>, _$zod.ZodObject<{
897
906
  version: _$zod.ZodOptional<_$zod.ZodString>;
@@ -1536,6 +1545,10 @@ declare const System: ConfigClass<{
1536
1545
  anatomy: _$zod.ZodOptional<SubEntityClass<_$zod.ZodType<ComponentElementBody, unknown, _$zod_v4_core0.$ZodTypeInternals<ComponentElementBody, unknown>>>>;
1537
1546
  defaultProps: _$zod.ZodOptional<SubEntityClass<_$zod.ZodType<StyleValue, unknown, _$zod_v4_core0.$ZodTypeInternals<StyleValue, unknown>>>>;
1538
1547
  previewProps: _$zod.ZodOptional<_$zod.ZodRecord<_$zod.ZodString, _$zod.ZodUnknown>>;
1548
+ previewWhen: _$zod.ZodOptional<_$zod.ZodArray<_$zod.ZodObject<{
1549
+ when: _$zod.ZodRecord<_$zod.ZodString, _$zod.ZodUnknown>;
1550
+ props: _$zod.ZodRecord<_$zod.ZodString, _$zod.ZodUnknown>;
1551
+ }, _$zod_v4_core0.$strip>>>;
1539
1552
  file: _$zod.ZodOptional<_$zod.ZodObject<{
1540
1553
  __ref: _$zod.ZodString;
1541
1554
  }, _$zod_v4_core0.$strip>>;
@@ -1650,6 +1663,10 @@ declare const System: ConfigClass<{
1650
1663
  anatomy: _$zod.ZodOptional<SubEntityClass<_$zod.ZodType<ComponentElementBody, unknown, _$zod_v4_core0.$ZodTypeInternals<ComponentElementBody, unknown>>>>;
1651
1664
  defaultProps: _$zod.ZodOptional<SubEntityClass<_$zod.ZodType<StyleValue, unknown, _$zod_v4_core0.$ZodTypeInternals<StyleValue, unknown>>>>;
1652
1665
  previewProps: _$zod.ZodOptional<_$zod.ZodRecord<_$zod.ZodString, _$zod.ZodUnknown>>;
1666
+ previewWhen: _$zod.ZodOptional<_$zod.ZodArray<_$zod.ZodObject<{
1667
+ when: _$zod.ZodRecord<_$zod.ZodString, _$zod.ZodUnknown>;
1668
+ props: _$zod.ZodRecord<_$zod.ZodString, _$zod.ZodUnknown>;
1669
+ }, _$zod_v4_core0.$strip>>>;
1653
1670
  file: _$zod.ZodOptional<_$zod.ZodObject<{
1654
1671
  __ref: _$zod.ZodString;
1655
1672
  }, _$zod_v4_core0.$strip>>;
@@ -2258,6 +2275,7 @@ declare const System: ConfigClass<{
2258
2275
  postscriptName: _$zod.ZodOptional<_$zod.ZodString>;
2259
2276
  }, _$zod_v4_core0.$strip>>>;
2260
2277
  fallbackStack: _$zod.ZodOptional<_$zod.ZodArray<_$zod.ZodString>>;
2278
+ variable: _$zod.ZodOptional<_$zod.ZodString>;
2261
2279
  isVariableFont: _$zod.ZodOptional<_$zod.ZodBoolean>;
2262
2280
  }, _$zod_v4_core0.$strict>, _$zod.ZodObject<{
2263
2281
  version: _$zod.ZodOptional<_$zod.ZodString>;
@@ -1,3 +1,4 @@
1
+ import { Font } from "../entities/system/Font.js";
1
2
  import { Composite } from "../entities/system/Composite.js";
2
3
  import { Modifier } from "../entities/system/Modifier.js";
3
4
  import { Settings } from "../entities/system/Settings.js";
@@ -12,7 +13,6 @@ import { Tool } from "../entities/system/Tool.js";
12
13
  import { registerSchemaMigrations, registeredSchemaMigrations } from "../framework/schema-version.js";
13
14
  import { defineConfig } from "../framework/defineConfig.js";
14
15
  import { CanvasRole } from "../entities/system/CanvasRole.js";
15
- import { Font } from "../entities/system/Font.js";
16
16
  import { GlobalStyle } from "../entities/system/GlobalStyle.js";
17
17
  import { Guidance } from "../entities/system/Guidance.js";
18
18
  import { GuidanceStyle } from "../entities/system/GuidanceStyle.js";
@@ -25,6 +25,8 @@ import { settingsAsKindMigration } from "../migrations/20260908171448_settings_a
25
25
  import { visibleStatePointerMigration } from "../migrations/20260908194245_visible_state_pointer.js";
26
26
  import { iconKnockoutVariantsMigration } from "../migrations/20260909183001_icon_knockout_variants.js";
27
27
  import { linkedSystemLinkOpsMigration } from "../migrations/20260910212453_linked_system_link_ops.js";
28
+ import { previewConditionsMigration } from "../migrations/20260912161840_preview_conditions.js";
29
+ import { fontVariableMigration } from "../migrations/20260912164927_font_variable.js";
28
30
  //#region src/configs/system.ts
29
31
  /**
30
32
  * `System` — the design-system config TYPE. Declares the exact kinds a design system owns (tokens,
@@ -70,5 +72,7 @@ if (!registeredSchemaMigrations().has(20260908171448)) registerSchemaMigrations(
70
72
  if (!registeredSchemaMigrations().has(20260908194245)) registerSchemaMigrations(visibleStatePointerMigration);
71
73
  if (!registeredSchemaMigrations().has(20260909183001)) registerSchemaMigrations(iconKnockoutVariantsMigration);
72
74
  if (!registeredSchemaMigrations().has(20260910212453)) registerSchemaMigrations(linkedSystemLinkOpsMigration);
75
+ if (!registeredSchemaMigrations().has(20260912161840)) registerSchemaMigrations(previewConditionsMigration);
76
+ if (!registeredSchemaMigrations().has(20260912164927)) registerSchemaMigrations(fontVariableMigration);
73
77
  //#endregion
74
78
  export { System };
@@ -30,6 +30,7 @@ declare const rnStyleKey: z.ZodEnum<{
30
30
  overflow: "overflow";
31
31
  padding: "padding";
32
32
  width: "width";
33
+ fontFamily: "fontFamily";
33
34
  alignContent: "alignContent";
34
35
  alignItems: "alignItems";
35
36
  alignSelf: "alignSelf";
@@ -81,7 +82,6 @@ declare const rnStyleKey: z.ZodEnum<{
81
82
  flexGrow: "flexGrow";
82
83
  flexShrink: "flexShrink";
83
84
  flexWrap: "flexWrap";
84
- fontFamily: "fontFamily";
85
85
  fontSize: "fontSize";
86
86
  fontStyle: "fontStyle";
87
87
  fontVariant: "fontVariant";
@@ -197,6 +197,7 @@ declare const NativeStyleProperty: EntityClass<z.ZodObject<Omit<{
197
197
  overflow: "overflow";
198
198
  padding: "padding";
199
199
  width: "width";
200
+ fontFamily: "fontFamily";
200
201
  alignContent: "alignContent";
201
202
  alignItems: "alignItems";
202
203
  alignSelf: "alignSelf";
@@ -248,7 +249,6 @@ declare const NativeStyleProperty: EntityClass<z.ZodObject<Omit<{
248
249
  flexGrow: "flexGrow";
249
250
  flexShrink: "flexShrink";
250
251
  flexWrap: "flexWrap";
251
- fontFamily: "fontFamily";
252
252
  fontSize: "fontSize";
253
253
  fontStyle: "fontStyle";
254
254
  fontVariant: "fontVariant";
@@ -421,6 +421,10 @@ declare const componentFields: z.ZodObject<{
421
421
  anatomy: z.ZodOptional<SubEntityClass<z.ZodType<ComponentElementBody, unknown, z.core.$ZodTypeInternals<ComponentElementBody, unknown>>>>;
422
422
  defaultProps: z.ZodOptional<SubEntityClass<z.ZodType<StyleValue, unknown, z.core.$ZodTypeInternals<StyleValue, unknown>>>>;
423
423
  previewProps: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
424
+ previewWhen: z.ZodOptional<z.ZodArray<z.ZodObject<{
425
+ when: z.ZodRecord<z.ZodString, z.ZodUnknown>;
426
+ props: z.ZodRecord<z.ZodString, z.ZodUnknown>;
427
+ }, z.core.$strip>>>;
424
428
  file: z.ZodOptional<z.ZodObject<{
425
429
  __ref: z.ZodString;
426
430
  }, z.core.$strip>>;
@@ -540,6 +544,10 @@ declare const ComponentEntity: EntityClass<z.ZodObject<{
540
544
  anatomy: z.ZodOptional<SubEntityClass<z.ZodType<ComponentElementBody, unknown, z.core.$ZodTypeInternals<ComponentElementBody, unknown>>>>;
541
545
  defaultProps: z.ZodOptional<SubEntityClass<z.ZodType<StyleValue, unknown, z.core.$ZodTypeInternals<StyleValue, unknown>>>>;
542
546
  previewProps: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
547
+ previewWhen: z.ZodOptional<z.ZodArray<z.ZodObject<{
548
+ when: z.ZodRecord<z.ZodString, z.ZodUnknown>;
549
+ props: z.ZodRecord<z.ZodString, z.ZodUnknown>;
550
+ }, z.core.$strip>>>;
543
551
  file: z.ZodOptional<z.ZodObject<{
544
552
  __ref: z.ZodString;
545
553
  }, z.core.$strip>>;
@@ -654,6 +662,10 @@ declare const ComponentEntity: EntityClass<z.ZodObject<{
654
662
  anatomy: z.ZodOptional<SubEntityClass<z.ZodType<ComponentElementBody, unknown, z.core.$ZodTypeInternals<ComponentElementBody, unknown>>>>;
655
663
  defaultProps: z.ZodOptional<SubEntityClass<z.ZodType<StyleValue, unknown, z.core.$ZodTypeInternals<StyleValue, unknown>>>>;
656
664
  previewProps: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
665
+ previewWhen: z.ZodOptional<z.ZodArray<z.ZodObject<{
666
+ when: z.ZodRecord<z.ZodString, z.ZodUnknown>;
667
+ props: z.ZodRecord<z.ZodString, z.ZodUnknown>;
668
+ }, z.core.$strip>>>;
657
669
  file: z.ZodOptional<z.ZodObject<{
658
670
  __ref: z.ZodString;
659
671
  }, z.core.$strip>>;
@@ -1207,6 +1207,12 @@ const componentFields = z.strictObject({
1207
1207
  * into the tree by invoking a render with them, so a tile's example icon ends up stored as
1208
1208
  * part of the component itself. */
1209
1209
  previewProps: z.record(z.string(), z.unknown()).optional().describe("The props the catalogue tile and the variant matrix render with. A component whose root takes children renders empty until this or `defaultProps` carries some."),
1210
+ /** Preview props that hold under a condition on the cell — see `preview({ when })`. Like
1211
+ * `previewProps`, read off `.preview()` at build and never authored as data. */
1212
+ previewWhen: z.array(z.object({
1213
+ when: z.record(z.string(), z.unknown()),
1214
+ props: z.record(z.string(), z.unknown())
1215
+ })).optional().describe("Preview props that hold only when the cell matches `when`, in the grammar a style rule uses: `{ \"when\": { \"type\": \"image\" }, \"props\": { \"src\": \"…\" } }`. A condition on a prop no rule styles makes that prop a preview axis with the value named."),
1210
1216
  /**
1211
1217
  * The source that implements this component — a ref, because the file is an entity the seal owns.
1212
1218
  *
@@ -40,9 +40,33 @@ declare const Font: EntityClass<z.ZodObject<{
40
40
  postscriptName: z.ZodOptional<z.ZodString>;
41
41
  }, z.core.$strip>>>;
42
42
  fallbackStack: z.ZodOptional<z.ZodArray<z.ZodString>>;
43
+ variable: z.ZodOptional<z.ZodString>;
43
44
  isVariableFont: z.ZodOptional<z.ZodBoolean>;
44
45
  }, z.core.$strict>, z.ZodObject<{
45
46
  version: z.ZodOptional<z.ZodString>;
46
47
  }, z.core.$strict>, "font", Record<never, never>, Record<never, never>, false>;
48
+ /**
49
+ * The `font-family` value a family stands for: its own name, quoted, then its fallback stack as
50
+ * authored — `"YA Sans VF", Helvetica Neue, Arial, sans-serif`.
51
+ *
52
+ * This is what a `font:` ref DENOTES wherever a value is wanted: a `fontFamily/sans` token valued
53
+ * `Font.ref('fonts/yas')` emits this string as its custom property, a Studio specimen paints in it,
54
+ * and a picker matches the active card against it. One derivation, so the three cannot disagree —
55
+ * and the reason a token's stack is not a second field of its own: the family already knows it.
56
+ *
57
+ * The family name is always quoted (a name with spaces needs it; a name without tolerates it), the
58
+ * fallbacks are not — `sans-serif` is a generic keyword, and quoting one turns it into a family
59
+ * nothing has. Blank fallbacks are dropped rather than emitted as empty list members.
60
+ *
61
+ * A family the host loads under a custom property (`variable`) reads that property FIRST, with the
62
+ * whole named stack as the property's fallback: `var(--uds-font-family-inter, "Inter", ui-sans-serif,
63
+ * …)`. The host's face wins where it is defined, and where it is not — a consumer without the loader,
64
+ * a canvas the host did not wrap — the family by name and its fallbacks paint as they would anyway.
65
+ */
66
+ declare function fontFamilyStack(font: {
67
+ readonly fontFamily: string;
68
+ readonly fallbackStack?: readonly string[] | undefined;
69
+ readonly variable?: string | undefined;
70
+ }): string;
47
71
  //#endregion
48
- export { Font, FontFile };
72
+ export { Font, FontFile, fontFamilyStack };
@@ -46,11 +46,44 @@ const Font = defineEntity({
46
46
  files: FontFile.optional(),
47
47
  /** Families to fall back to after this one, for a `font-family` stack. */
48
48
  fallbackStack: z.array(z.string()).optional(),
49
+ /**
50
+ * A CSS custom property the HOST publishes the loaded face's family under — `next/font`'s
51
+ * `variable` option (`--uds-font-family-inter`), or any loader that hands the page a variable
52
+ * rather than a `@font-face`. When set, the family's stack reads the property first and falls
53
+ * back to the family by name: `var(--uds-font-family-inter, "Inter", ui-sans-serif, …)`. That
54
+ * is how a token can be `Font.ref(…)` to such a family and still render the host's face, whose
55
+ * real family name (`__Inter_a1b2c3`) nothing in a config can know.
56
+ */
57
+ variable: z.string().regex(/^--[A-Za-z0-9_-]+$/, "a CSS custom property name: `--name`").optional(),
49
58
  /** Set explicitly; otherwise inferred from a file declaring a weight RANGE. */
50
59
  isVariableFont: z.boolean().optional()
51
60
  }),
52
61
  groupFields: z.strictObject({ version: z.string().optional() }),
53
62
  subEntities: { files: FontFile }
54
63
  });
64
+ /**
65
+ * The `font-family` value a family stands for: its own name, quoted, then its fallback stack as
66
+ * authored — `"YA Sans VF", Helvetica Neue, Arial, sans-serif`.
67
+ *
68
+ * This is what a `font:` ref DENOTES wherever a value is wanted: a `fontFamily/sans` token valued
69
+ * `Font.ref('fonts/yas')` emits this string as its custom property, a Studio specimen paints in it,
70
+ * and a picker matches the active card against it. One derivation, so the three cannot disagree —
71
+ * and the reason a token's stack is not a second field of its own: the family already knows it.
72
+ *
73
+ * The family name is always quoted (a name with spaces needs it; a name without tolerates it), the
74
+ * fallbacks are not — `sans-serif` is a generic keyword, and quoting one turns it into a family
75
+ * nothing has. Blank fallbacks are dropped rather than emitted as empty list members.
76
+ *
77
+ * A family the host loads under a custom property (`variable`) reads that property FIRST, with the
78
+ * whole named stack as the property's fallback: `var(--uds-font-family-inter, "Inter", ui-sans-serif,
79
+ * …)`. The host's face wins where it is defined, and where it is not — a consumer without the loader,
80
+ * a canvas the host did not wrap — the family by name and its fallbacks paint as they would anyway.
81
+ */
82
+ function fontFamilyStack(font) {
83
+ const family = `"${font.fontFamily.replace(/^['"]|['"]$/g, "")}"`;
84
+ const fallbacks = (font.fallbackStack ?? []).map((name) => name.trim()).filter((name) => name.length > 0);
85
+ const named = fallbacks.length > 0 ? `${family}, ${fallbacks.join(", ")}` : family;
86
+ return font.variable ? `var(${font.variable}, ${named})` : named;
87
+ }
55
88
  //#endregion
56
- export { Font, FontFile };
89
+ export { Font, FontFile, fontFamilyStack };
@@ -2,8 +2,8 @@ import { isRef, pathOf, ref, sourceOf } from "../../framework/utils/refs.js";
2
2
  import { defineEntity } from "../../framework/defineEntity.js";
3
3
  import { defineSubEntity } from "../../framework/defineSubEntity.js";
4
4
  import { derivedColor, gradient } from "./color.js";
5
- import { Modifier } from "./Modifier.js";
6
5
  import { Font } from "./Font.js";
6
+ import { Modifier } from "./Modifier.js";
7
7
  import { z } from "zod";
8
8
  //#region src/entities/system/Token.ts
9
9
  /**
@@ -1,8 +1,8 @@
1
- import { Ref } from "../../framework/utils/refs.js";
1
+ import { Ref as Ref$1 } from "../../framework/utils/refs.js";
2
2
  import { Authored } from "../../framework/authoring.js";
3
3
  import { StyleValue } from "./style-bag.js";
4
4
  import { VariantValues } from "./Component.js";
5
- import { ComponentPropsWithoutRef, JSX, ReactNode } from "react";
5
+ import { ComponentPropsWithoutRef, JSX, ReactNode, Ref } from "react";
6
6
 
7
7
  //#region src/entities/system/defineComponent.d.ts
8
8
  /**
@@ -34,7 +34,7 @@ type PackageElement = ((...args: never[]) => unknown) | (abstract new (...args:
34
34
  * it names exposes are gone by the time anything could read them, and a component built on `Pressable`
35
35
  * typed `onClick` as nothing at all.
36
36
  */
37
- type LayerElement = string | ComponentElement | Ref | PackageElement;
37
+ type LayerElement = string | ComponentElement | Ref$1 | PackageElement;
38
38
  /**
39
39
  * A component's layers. `root` is REQUIRED and is the element a consumer addresses: its React props
40
40
  * are the component's props, and a component that doesn't declare one has no element to be.
@@ -87,7 +87,7 @@ interface SlotDecl {
87
87
  * into a hole. A route into a value prop has nothing to narrow: which values are valid is that prop's
88
88
  * own declaration.
89
89
  */
90
- accepts?: Ref | Ref[];
90
+ accepts?: Ref$1 | Ref$1[];
91
91
  text?: boolean;
92
92
  required?: boolean;
93
93
  }
@@ -120,14 +120,14 @@ type Forwarded = '*' | readonly string[];
120
120
  interface ForwardDecl<Path extends string = string> {
121
121
  type: 'forward';
122
122
  /** `<layer>/<prop>` as authored; a `layerRef` once stored, with the prop moved to `into`. */
123
- target: Path | Ref;
123
+ target: Path | Ref$1;
124
124
  /** STORED only — a member ref at the prop on that layer's element
125
125
  * (`component:Input#props/disabled`). Minted at registration, when the layer's element has a path. */
126
- into?: string | Ref;
126
+ into?: string | Ref$1;
127
127
  /** Only where this route LANDS on a hole — it means exactly what {@link SlotDecl.accepts} means.
128
128
  * That the target is a hole is computed from it (`routesContent`), so the rule is checked rather
129
129
  * than trusted, and a route into a value prop is refused by name. */
130
- accepts?: Ref | Ref[];
130
+ accepts?: Ref$1 | Ref$1[];
131
131
  text?: boolean;
132
132
  required?: boolean;
133
133
  }
@@ -151,15 +151,15 @@ interface ForwardDecl<Path extends string = string> {
151
151
  */
152
152
  type PropDecl<Path extends string = string> = SlotDecl | ForwardDecl<Path> | {
153
153
  type: 'variant';
154
- value: readonly string[] | VariantValues | Ref;
154
+ value: readonly string[] | VariantValues | Ref$1;
155
155
  required?: boolean;
156
156
  } | {
157
157
  type: 'styleProperty';
158
- value: Ref;
158
+ value: Ref$1;
159
159
  required?: boolean;
160
160
  } | {
161
161
  type: 'composite';
162
- value: Ref;
162
+ value: Ref$1;
163
163
  required?: boolean;
164
164
  } | {
165
165
  type: 'motion';
@@ -180,7 +180,7 @@ type PropDecl<Path extends string = string> = SlotDecl | ForwardDecl<Path> | {
180
180
  * every reader switches on. (v1 did the same in its authoring adapter — it just assumed every bare ref
181
181
  * was a style property, where this reads the kind.)
182
182
  */
183
- type AuthoredProp<Path extends string = string> = PropDecl<Path> | Ref | readonly string[];
183
+ type AuthoredProp<Path extends string = string> = PropDecl<Path> | Ref$1 | readonly string[];
184
184
  /**
185
185
  * A component's prop declarations. `null` is the OMIT tombstone the stored schema already accepts: a
186
186
  * component that `.forwards({ root: '*' })` drops one of the base's props by declaring it `null`, which is
@@ -308,6 +308,13 @@ type DefaultsOf<P extends PropMap> = Partial<DeclaredProps<P>> & {
308
308
  /** What a render receives: the generated per-layer bundle, plus the props the component declared. */
309
309
  type RenderArgs<L extends LayerMap, P extends PropMap> = {
310
310
  readonly props: Record<keyof L & string, Record<string, unknown>>;
311
+ /**
312
+ * The ref the emitted module forwards to the render, for the element it chooses to attach it to.
313
+ * `any` rather than a union of element types: a React ref is contravariant in its element, so
314
+ * only `any` lets one declared type land on `<svg ref={ref}>` in one component and
315
+ * `<input ref={ref}>` in another — and which element is the render's decision.
316
+ */
317
+ readonly ref?: Ref<any>;
311
318
  } & DeclaredProps<P> & Record<string, unknown>;
312
319
  interface ComponentBuilder<L extends LayerMap, P extends PropMap,
313
320
  /** Props the RENDER takes that the config doesn't describe — React handlers, mostly (`onPress`).
@@ -407,10 +414,24 @@ F extends string = never> extends Authored {
407
414
  */
408
415
  preview(spec: {
409
416
  defaultProps?: DefaultsOf<P>;
417
+ /**
418
+ * Preview props that hold only under a condition — the same `when` grammar a style rule uses.
419
+ * The grid is derived from the styles; what it cannot derive is the CONTENT a cell needs at a
420
+ * given point on an axis: `{ when: { type: 'image' }, props: { src } }` gives the image kind a
421
+ * photo, `{ when: { invalid: true }, props: { selected: true } }` shows the invalid state checked.
422
+ * A condition naming a prop no rule styles makes that prop an axis too, with the value named —
423
+ * so a preview can say a boolean is worth a column the way a rule would.
424
+ */
425
+ when?: readonly PreviewCondition<P>[];
410
426
  }): ComponentBuilder<L, P, E, D, F>;
411
427
  toStored(): Record<string, unknown>;
412
428
  assignPath(path: string): void;
413
429
  }
430
+ /** Preview props that hold under a condition on the cell's props — see `preview({ when })`. */
431
+ interface PreviewCondition<P extends PropMap = PropMap> {
432
+ readonly when: Partial<Record<keyof P & string, unknown>>;
433
+ readonly props: DefaultsOf<P>;
434
+ }
414
435
  /** A component under authorship, with its declarations forgotten — what a registry holds. */
415
436
  type AuthoredComponent = ComponentBuilder<LayerMap, PropMap, unknown, unknown>;
416
437
  interface DefineComponent {
@@ -19,7 +19,12 @@ function build(body) {
19
19
  metadata: (meta) => next(meta),
20
20
  render: () => handle,
21
21
  renderCanvas: () => handle,
22
- preview: (spec) => spec?.defaultProps === void 0 ? handle : next({ previewProps: spec.defaultProps }),
22
+ preview: (spec) => {
23
+ const patch = {};
24
+ if (spec?.defaultProps !== void 0) patch.previewProps = spec.defaultProps;
25
+ if (spec?.when?.length) patch.previewWhen = spec.when;
26
+ return Object.keys(patch).length === 0 ? handle : next(patch);
27
+ },
23
28
  toStored: () => toStored(body),
24
29
  assignPath(path) {
25
30
  handle.path = path;
@@ -282,6 +287,10 @@ function toStored(body) {
282
287
  if (previewProps === void 0) delete stored.previewProps;
283
288
  else stored.previewProps = previewProps;
284
289
  }
290
+ if (Array.isArray(body.previewWhen)) stored.previewWhen = body.previewWhen.map(({ when, props }) => ({
291
+ when,
292
+ props: storableProps(props) ?? {}
293
+ }));
285
294
  if (body.props && typeof body.props === "object") {
286
295
  const props = {};
287
296
  for (const [name, decl] of Object.entries(body.props)) props[name] = storedProp(decl, body.layers);
@@ -96,7 +96,11 @@ function memberVariantOptions(library, _member) {
96
96
  function isDeclaredElementProp(config, elementType, propName) {
97
97
  if (!config) return false;
98
98
  const component = Component.get(config, elementType);
99
- if (component) return resolveComponentProps(config, component.path)[propName] !== void 0;
99
+ if (component) {
100
+ if (resolveComponentProps(config, component.path)[propName] !== void 0) return true;
101
+ if (propName.startsWith("--")) return false;
102
+ return config.resolve("style-property", propName) === void 0;
103
+ }
100
104
  const parsed = parseAssetType(elementType);
101
105
  if (!parsed) return false;
102
106
  const library = iconLibrary(config, parsed.slug);
@@ -49,6 +49,7 @@ const Style = defineSubEntity({
49
49
  const bound = (config, declaration) => z.union([valueSchemaOf(declaration, config), styleValue]);
50
50
  const declared = parent?.props?.[key];
51
51
  if (isRef(declared?.value)) return bound(config, declared);
52
+ if (declared) return styleValue;
52
53
  if (!config.resolve("style-property", key)) return styleValue;
53
54
  return bound(config, {
54
55
  type: "styleProperty",
@@ -72,7 +72,7 @@ interface RecordedSource {
72
72
  * The dense-counter `2` a short-lived scheme stamped before the chain existed reads as the mint
73
73
  * that replaced it (see `detectedWireVersion`).
74
74
  */
75
- declare const SERIALIZED_CONFIG_VERSION = 20260910212453;
75
+ declare const SERIALIZED_CONFIG_VERSION = 20260912164927;
76
76
  interface SerializedConfig {
77
77
  /** See {@link SERIALIZED_CONFIG_VERSION}. Always written; a stored artifact may lack it. */
78
78
  readonly version: number;
@@ -643,6 +643,21 @@ declare class Config {
643
643
  * was registered into this instance. `undefined` for a kind this config doesn't know. The single
644
644
  * accessor every internal read routes through. */
645
645
  entityOf(kind: string): EntityKind | undefined;
646
+ /**
647
+ * The value each of a kind's fields takes when a create leaves it out — `responsive: false` on a
648
+ * style property, say.
649
+ *
650
+ * A create stores the schema's parsed output, so a body that never mentioned `responsive` holds
651
+ * `responsive: false` from then on, indistinguishable from one that wrote it. What authored source
652
+ * is emitted from is that stored body, and writing every filled-in default back out turned a
653
+ * one-line hand-authored prop into four — which is why the emitter asks here what it may leave out.
654
+ * Read off the create op's `data` schema with this config as context, since a kind's fields may be
655
+ * a factory over it; a field with no default is absent from the answer.
656
+ */
657
+ fieldDefaults(kind: string): Record<string, unknown>;
658
+ /** A style bag read back to the leaves an author wrote — `projections.authoredBag`, reachable
659
+ * from a consumer that holds the config and not the module. */
660
+ authoredBag(bag: Record<string, unknown>): Record<string, unknown>;
646
661
  /**
647
662
  * Run one of a kind's operations — the input parsed through the op's own schema, then handed to
648
663
  * its handler.