@adobe/design-data-spec 0.9.0 → 0.11.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 (180) hide show
  1. package/components/accordion.json +18 -1
  2. package/components/action-bar.json +12 -1
  3. package/components/action-button.json +19 -1
  4. package/components/action-group.json +12 -1
  5. package/components/alert-banner.json +11 -1
  6. package/components/alert-dialog.json +19 -1
  7. package/components/avatar-group.json +4 -1
  8. package/components/avatar.json +4 -1
  9. package/components/badge.json +4 -1
  10. package/components/body.json +3 -0
  11. package/components/bottom-navigation-android.json +17 -0
  12. package/components/breadcrumbs.json +19 -2
  13. package/components/button-group.json +12 -1
  14. package/components/button.json +21 -3
  15. package/components/calendar.json +22 -0
  16. package/components/cards.json +18 -1
  17. package/components/checkbox-group.json +17 -1
  18. package/components/checkbox.json +24 -1
  19. package/components/close-button.json +19 -1
  20. package/components/coach-indicator.json +4 -1
  21. package/components/coach-mark.json +13 -1
  22. package/components/code.json +3 -0
  23. package/components/color-area.json +24 -1
  24. package/components/color-handle.json +13 -1
  25. package/components/color-loupe.json +4 -1
  26. package/components/color-slider.json +24 -1
  27. package/components/color-wheel.json +24 -1
  28. package/components/combo-box.json +24 -1
  29. package/components/contextual-help.json +18 -1
  30. package/components/date-picker.json +23 -1
  31. package/components/detail.json +3 -0
  32. package/components/divider.json +4 -1
  33. package/components/drop-zone.json +18 -1
  34. package/components/field-label.json +4 -1
  35. package/components/heading.json +3 -0
  36. package/components/help-text.json +5 -2
  37. package/components/illustrated-message.json +4 -1
  38. package/components/in-field-progress-button.json +18 -0
  39. package/components/in-field-progress-circle.json +4 -1
  40. package/components/in-line-alert.json +11 -1
  41. package/components/link.json +19 -1
  42. package/components/list-view.json +18 -1
  43. package/components/menu.json +19 -1
  44. package/components/meter.json +4 -1
  45. package/components/number-field.json +24 -1
  46. package/components/opacity-checkerboard.json +4 -1
  47. package/components/picker.json +24 -1
  48. package/components/popover.json +12 -1
  49. package/components/progress-bar.json +4 -1
  50. package/components/progress-circle.json +4 -1
  51. package/components/radio-button.json +24 -1
  52. package/components/radio-group.json +17 -1
  53. package/components/rating.json +24 -1
  54. package/components/scroll-zoom-bar.json +12 -0
  55. package/components/search-field.json +28 -1
  56. package/components/segmented-control.json +18 -1
  57. package/components/select-box.json +18 -1
  58. package/components/side-navigation.json +18 -1
  59. package/components/slider.json +24 -1
  60. package/components/standard-dialog.json +19 -1
  61. package/components/standard-panel.json +3 -0
  62. package/components/status-light.json +4 -1
  63. package/components/steplist.json +18 -1
  64. package/components/swatch-group.json +12 -1
  65. package/components/swatch.json +18 -1
  66. package/components/switch.json +19 -1
  67. package/components/tab-bar-ios.json +17 -0
  68. package/components/table.json +23 -1
  69. package/components/tabs.json +18 -1
  70. package/components/tag-field.json +18 -1
  71. package/components/tag-group.json +18 -1
  72. package/components/tag.json +18 -1
  73. package/components/takeover-dialog.json +19 -1
  74. package/components/text-area.json +28 -1
  75. package/components/text-field.json +28 -1
  76. package/components/thumbnail.json +4 -1
  77. package/components/title.json +40 -10
  78. package/components/toast.json +13 -1
  79. package/components/tooltip.json +17 -1
  80. package/components/tray.json +11 -0
  81. package/components/tree-view.json +19 -1
  82. package/conformance/README.md +7 -7
  83. package/conformance/invalid/SPEC-001/dataset.json +10 -0
  84. package/conformance/invalid/SPEC-001/expected-errors.json +1 -1
  85. package/conformance/invalid/SPEC-002/dataset.json +16 -0
  86. package/conformance/invalid/SPEC-002/expected-errors.json +1 -1
  87. package/conformance/invalid/SPEC-003/dataset.json +15 -0
  88. package/conformance/invalid/SPEC-003/expected-errors.json +1 -1
  89. package/conformance/invalid/SPEC-004/dataset.json +15 -0
  90. package/conformance/invalid/SPEC-004/expected-errors.json +1 -1
  91. package/conformance/invalid/SPEC-005/dataset.json +11 -0
  92. package/conformance/invalid/SPEC-005/expected-errors.json +1 -1
  93. package/conformance/invalid/SPEC-006/dataset.json +15 -0
  94. package/conformance/invalid/SPEC-006/expected-errors.json +1 -1
  95. package/conformance/invalid/SPEC-007/dataset.json +9 -0
  96. package/conformance/invalid/SPEC-007/expected-errors.json +10 -0
  97. package/conformance/invalid/SPEC-008/dataset.json +25 -0
  98. package/conformance/invalid/SPEC-008/expected-errors.json +2 -1
  99. package/conformance/invalid/SPEC-009/dataset.json +12 -0
  100. package/conformance/invalid/SPEC-009/expected-errors.json +10 -0
  101. package/conformance/invalid/SPEC-010/dataset.json +12 -0
  102. package/conformance/invalid/SPEC-011/dataset.json +25 -0
  103. package/conformance/invalid/SPEC-012/dataset.json +16 -0
  104. package/conformance/invalid/SPEC-013/dataset.json +11 -0
  105. package/conformance/invalid/SPEC-014/dataset.json +12 -0
  106. package/conformance/invalid/SPEC-014/expected-errors.json +1 -1
  107. package/conformance/invalid/SPEC-015/dataset.json +22 -0
  108. package/conformance/invalid/SPEC-015/expected-errors.json +10 -0
  109. package/conformance/invalid/SPEC-015/tokens.tokens.json +19 -0
  110. package/conformance/invalid/SPEC-016/dataset.json +11 -0
  111. package/conformance/invalid/SPEC-016/expected-errors.json +2 -2
  112. package/conformance/invalid/SPEC-017/dataset.json +10 -0
  113. package/conformance/invalid/SPEC-024/dataset.json +4 -3
  114. package/conformance/invalid/SPEC-024/expected-errors.json +2 -2
  115. package/conformance/invalid/SPEC-025/dataset.json +12 -0
  116. package/conformance/invalid/SPEC-025/expected-errors.json +10 -0
  117. package/conformance/invalid/SPEC-026/dataset.json +18 -0
  118. package/conformance/invalid/SPEC-026/expected-errors.json +10 -0
  119. package/conformance/invalid/SPEC-028/dataset.json +21 -0
  120. package/conformance/invalid/SPEC-028/expected-errors.json +10 -0
  121. package/conformance/invalid/SPEC-029/dataset.json +20 -0
  122. package/conformance/invalid/SPEC-029/expected-errors.json +10 -0
  123. package/conformance/invalid/SPEC-030/dataset.json +15 -0
  124. package/conformance/invalid/SPEC-030/expected-errors.json +10 -0
  125. package/conformance/invalid/SPEC-031/dataset.json +17 -0
  126. package/conformance/invalid/SPEC-031/expected-errors.json +10 -0
  127. package/conformance/invalid/SPEC-032/dataset.json +27 -0
  128. package/conformance/invalid/SPEC-032/expected-errors.json +15 -0
  129. package/conformance/resolution/base-fallback/expected.json +1 -1
  130. package/conformance/resolution/product-layer-wins/expected.json +5 -0
  131. package/conformance/resolution/product-layer-wins/input/tokens.tokens.json +7 -0
  132. package/conformance/resolution/product-layer-wins/product-context.json +11 -0
  133. package/conformance/resolution/product-layer-wins/query.json +4 -0
  134. package/conformance/resolution/specificity-wins/expected.json +1 -1
  135. package/conformance/valid/SPEC-014/dataset.json +12 -0
  136. package/conformance/valid/SPEC-016/dataset.json +16 -0
  137. package/conformance/valid/SPEC-025/dataset.json +24 -0
  138. package/conformance/valid/SPEC-026/dataset.json +15 -0
  139. package/conformance/valid/SPEC-028/dataset.json +21 -0
  140. package/conformance/valid/SPEC-029/dataset.json +24 -0
  141. package/conformance/valid/SPEC-030/dataset.json +17 -0
  142. package/conformance/valid/SPEC-031/dataset.json +24 -0
  143. package/conformance/valid/SPEC-032/dataset.json +16 -0
  144. package/conformance/valid/component-refs/README.md +5 -0
  145. package/conformance/valid/component-with-accessibility.json +32 -0
  146. package/fields/color-scheme.json +2 -2
  147. package/fields/contrast.json +2 -2
  148. package/fields/density.json +1 -1
  149. package/fields/scale.json +2 -2
  150. package/fields/size.json +1 -1
  151. package/package.json +4 -13
  152. package/rules/rules.yaml +57 -4
  153. package/schemas/accessibility.schema.json +60 -0
  154. package/schemas/component.schema.json +19 -0
  155. package/schemas/field.schema.json +2 -2
  156. package/schemas/manifest.schema.json +1 -1
  157. package/schemas/{dimension.schema.json → mode-set.schema.json} +3 -3
  158. package/schemas/token.schema.json +5 -5
  159. package/schemas/value-types/README.md +20 -0
  160. package/schemas/value-types/drop-shadow.schema.json +5 -5
  161. package/schemas/value-types/typography-scale.schema.json +2 -2
  162. package/schemas/value-types/typography.schema.json +5 -5
  163. package/spec/accessibility-adapters.md +219 -0
  164. package/spec/agent-surface.md +4 -4
  165. package/spec/cascade.md +7 -7
  166. package/spec/component-format.md +32 -0
  167. package/spec/document-blocks.md +1 -1
  168. package/spec/index.md +33 -29
  169. package/spec/manifest.md +2 -2
  170. package/spec/mode-sets.md +64 -0
  171. package/spec/query.md +18 -18
  172. package/spec/registry.md +93 -0
  173. package/spec/taxonomy.md +5 -5
  174. package/spec/token-format.md +12 -12
  175. package/spec/dimensions.md +0 -64
  176. package/src/canonical.js +0 -61
  177. package/src/validate.js +0 -190
  178. /package/conformance/resolution/alias-resolved-after-cascade/{dimensions → mode-sets}/color-scheme.json +0 -0
  179. /package/conformance/resolution/base-fallback/{dimensions → mode-sets}/color-scheme.json +0 -0
  180. /package/conformance/resolution/specificity-wins/{dimensions → mode-sets}/color-scheme.json +0 -0
@@ -189,5 +189,22 @@
189
189
  "token": "spacing-100",
190
190
  "context": "Spacing (spacious)"
191
191
  }
192
- ]
192
+ ],
193
+ "accessibility": {
194
+ "intents": ["choose"],
195
+ "focusable": true,
196
+ "keyboardIntents": ["activate"],
197
+ "wcag": [
198
+ {
199
+ "criterion": "2.1.1",
200
+ "level": "A",
201
+ "title": "Keyboard"
202
+ },
203
+ {
204
+ "criterion": "4.1.2",
205
+ "level": "A",
206
+ "title": "Name, Role, Value"
207
+ }
208
+ ]
209
+ }
193
210
  }
@@ -301,5 +301,23 @@
301
301
  "token": "focus-indicator-color",
302
302
  "context": "Focus indicator"
303
303
  }
304
- ]
304
+ ],
305
+ "accessibility": {
306
+ "role": "switch",
307
+ "intents": ["choose"],
308
+ "focusable": true,
309
+ "keyboardIntents": ["activate"],
310
+ "wcag": [
311
+ {
312
+ "criterion": "2.1.1",
313
+ "level": "A",
314
+ "title": "Keyboard"
315
+ },
316
+ {
317
+ "criterion": "4.1.2",
318
+ "level": "A",
319
+ "title": "Name, Role, Value"
320
+ }
321
+ ]
322
+ }
305
323
  }
@@ -37,5 +37,22 @@
37
37
  },
38
38
  "lifecycle": {
39
39
  "introduced": "1.0.0-draft"
40
+ },
41
+ "accessibility": {
42
+ "intents": ["navigate"],
43
+ "focusable": true,
44
+ "keyboardIntents": ["navigate-items"],
45
+ "wcag": [
46
+ {
47
+ "criterion": "2.1.1",
48
+ "level": "A",
49
+ "title": "Keyboard"
50
+ },
51
+ {
52
+ "criterion": "4.1.2",
53
+ "level": "A",
54
+ "title": "Name, Role, Value"
55
+ }
56
+ ]
40
57
  }
41
58
  }
@@ -388,5 +388,27 @@
388
388
  "token": "table-selected-row-background-opacity-hover",
389
389
  "context": "S1 Selected row background (highlight selection, hover)"
390
390
  }
391
- ]
391
+ ],
392
+ "accessibility": {
393
+ "intents": ["select", "navigate"],
394
+ "focusable": true,
395
+ "keyboardIntents": ["navigate-items", "activate", "select-all"],
396
+ "wcag": [
397
+ {
398
+ "criterion": "1.3.1",
399
+ "level": "A",
400
+ "title": "Info and Relationships"
401
+ },
402
+ {
403
+ "criterion": "2.1.1",
404
+ "level": "A",
405
+ "title": "Keyboard"
406
+ },
407
+ {
408
+ "criterion": "4.1.2",
409
+ "level": "A",
410
+ "title": "Name, Role, Value"
411
+ }
412
+ ]
413
+ }
392
414
  }
@@ -225,5 +225,22 @@
225
225
  {
226
226
  "token": "line-height-100"
227
227
  }
228
- ]
228
+ ],
229
+ "accessibility": {
230
+ "intents": ["navigate"],
231
+ "focusable": true,
232
+ "keyboardIntents": ["navigate-items"],
233
+ "wcag": [
234
+ {
235
+ "criterion": "2.1.1",
236
+ "level": "A",
237
+ "title": "Keyboard"
238
+ },
239
+ {
240
+ "criterion": "4.1.2",
241
+ "level": "A",
242
+ "title": "Name, Role, Value"
243
+ }
244
+ ]
245
+ }
229
246
  }
@@ -199,5 +199,22 @@
199
199
  "token": "focus-indicator-color",
200
200
  "context": "Focus ring"
201
201
  }
202
- ]
202
+ ],
203
+ "accessibility": {
204
+ "intents": ["input", "select"],
205
+ "focusable": true,
206
+ "keyboardIntents": ["navigate-items", "activate"],
207
+ "wcag": [
208
+ {
209
+ "criterion": "1.3.1",
210
+ "level": "A",
211
+ "title": "Info and Relationships"
212
+ },
213
+ {
214
+ "criterion": "4.1.2",
215
+ "level": "A",
216
+ "title": "Name, Role, Value"
217
+ }
218
+ ]
219
+ }
203
220
  }
@@ -49,5 +49,22 @@
49
49
  "token": "help-text-to-component",
50
50
  "context": "Spacing (Text area to Help text)"
51
51
  }
52
- ]
52
+ ],
53
+ "accessibility": {
54
+ "intents": ["select"],
55
+ "focusable": true,
56
+ "keyboardIntents": ["navigate-items", "activate"],
57
+ "wcag": [
58
+ {
59
+ "criterion": "1.3.1",
60
+ "level": "A",
61
+ "title": "Info and Relationships"
62
+ },
63
+ {
64
+ "criterion": "4.1.2",
65
+ "level": "A",
66
+ "title": "Name, Role, Value"
67
+ }
68
+ ]
69
+ }
53
70
  }
@@ -372,5 +372,22 @@
372
372
  "token": "focus-indicator-color",
373
373
  "context": "Focus indicator"
374
374
  }
375
- ]
375
+ ],
376
+ "accessibility": {
377
+ "intents": ["dismiss"],
378
+ "focusable": true,
379
+ "keyboardIntents": ["activate"],
380
+ "wcag": [
381
+ {
382
+ "criterion": "2.1.1",
383
+ "level": "A",
384
+ "title": "Keyboard"
385
+ },
386
+ {
387
+ "criterion": "4.1.2",
388
+ "level": "A",
389
+ "title": "Name, Role, Value"
390
+ }
391
+ ]
392
+ }
376
393
  }
@@ -88,5 +88,23 @@
88
88
  "token": "heading-color",
89
89
  "context": "Title"
90
90
  }
91
- ]
91
+ ],
92
+ "accessibility": {
93
+ "role": "dialog",
94
+ "intents": ["dismiss"],
95
+ "focusable": false,
96
+ "keyboardIntents": ["dismiss"],
97
+ "wcag": [
98
+ {
99
+ "criterion": "2.4.3",
100
+ "level": "A",
101
+ "title": "Focus Order"
102
+ },
103
+ {
104
+ "criterion": "4.1.2",
105
+ "level": "A",
106
+ "title": "Name, Role, Value"
107
+ }
108
+ ]
109
+ }
92
110
  }
@@ -481,5 +481,32 @@
481
481
  "token": "component-padding-vertical-300",
482
482
  "context": "S2 Spacing (top/bottom edge to text: inline)"
483
483
  }
484
- ]
484
+ ],
485
+ "accessibility": {
486
+ "role": "textbox",
487
+ "intents": ["input"],
488
+ "focusable": true,
489
+ "wcag": [
490
+ {
491
+ "criterion": "1.3.1",
492
+ "level": "A",
493
+ "title": "Info and Relationships"
494
+ },
495
+ {
496
+ "criterion": "1.3.5",
497
+ "level": "AA",
498
+ "title": "Identify Input Purpose"
499
+ },
500
+ {
501
+ "criterion": "2.1.1",
502
+ "level": "A",
503
+ "title": "Keyboard"
504
+ },
505
+ {
506
+ "criterion": "4.1.2",
507
+ "level": "A",
508
+ "title": "Name, Role, Value"
509
+ }
510
+ ]
511
+ }
485
512
  }
@@ -497,5 +497,32 @@
497
497
  "token": "field-label-top-to-asterisk-extra-large",
498
498
  "context": "Spacing (top/bottom edge to required)"
499
499
  }
500
- ]
500
+ ],
501
+ "accessibility": {
502
+ "role": "textbox",
503
+ "intents": ["input"],
504
+ "focusable": true,
505
+ "wcag": [
506
+ {
507
+ "criterion": "1.3.1",
508
+ "level": "A",
509
+ "title": "Info and Relationships"
510
+ },
511
+ {
512
+ "criterion": "1.3.5",
513
+ "level": "AA",
514
+ "title": "Identify Input Purpose"
515
+ },
516
+ {
517
+ "criterion": "2.1.1",
518
+ "level": "A",
519
+ "title": "Keyboard"
520
+ },
521
+ {
522
+ "criterion": "4.1.2",
523
+ "level": "A",
524
+ "title": "Name, Role, Value"
525
+ }
526
+ ]
527
+ }
501
528
  }
@@ -105,5 +105,8 @@
105
105
  "token": "thumbnail-opacity-disabled",
106
106
  "context": "Disabled"
107
107
  }
108
- ]
108
+ ],
109
+ "accessibility": {
110
+ "focusable": false
111
+ }
109
112
  }
@@ -26,14 +26,44 @@
26
26
  "introduced": "1.0.0-draft"
27
27
  },
28
28
  "tokenBindings": [
29
- { "token": "font-family", "context": "Title-XXXL" },
30
- { "token": "font-weight", "context": "Title-XXXL" },
31
- { "token": "font-size", "context": "Title-XXXL" },
32
- { "token": "line-height", "context": "Title-XXXL" },
33
- { "token": "letter-spacing", "context": "Title-XXXL" },
34
- { "token": "font-style", "context": "Title-XXXL" },
35
- { "token": "title-margin-top-multiplier", "context": "Margins" },
36
- { "token": "title-margin-bottom-multiplier", "context": "Margins" },
37
- { "token": "title-color", "context": "Color" }
38
- ]
29
+ {
30
+ "token": "font-family",
31
+ "context": "Title-XXXL"
32
+ },
33
+ {
34
+ "token": "font-weight",
35
+ "context": "Title-XXXL"
36
+ },
37
+ {
38
+ "token": "font-size",
39
+ "context": "Title-XXXL"
40
+ },
41
+ {
42
+ "token": "line-height",
43
+ "context": "Title-XXXL"
44
+ },
45
+ {
46
+ "token": "letter-spacing",
47
+ "context": "Title-XXXL"
48
+ },
49
+ {
50
+ "token": "font-style",
51
+ "context": "Title-XXXL"
52
+ },
53
+ {
54
+ "token": "title-margin-top-multiplier",
55
+ "context": "Margins"
56
+ },
57
+ {
58
+ "token": "title-margin-bottom-multiplier",
59
+ "context": "Margins"
60
+ },
61
+ {
62
+ "token": "title-color",
63
+ "context": "Color"
64
+ }
65
+ ],
66
+ "accessibility": {
67
+ "focusable": false
68
+ }
39
69
  }
@@ -127,5 +127,17 @@
127
127
  "token": "neutral-background-color-default",
128
128
  "context": "Toast token changes (Jan 2025)"
129
129
  }
130
- ]
130
+ ],
131
+ "accessibility": {
132
+ "intents": ["dismiss"],
133
+ "focusable": true,
134
+ "keyboardIntents": ["dismiss"],
135
+ "wcag": [
136
+ {
137
+ "criterion": "4.1.3",
138
+ "level": "AA",
139
+ "title": "Status Messages"
140
+ }
141
+ ]
142
+ }
131
143
  }
@@ -136,5 +136,21 @@
136
136
  "token": "negative-background-color-default",
137
137
  "context": "Background (Negative)"
138
138
  }
139
- ]
139
+ ],
140
+ "accessibility": {
141
+ "role": "tooltip",
142
+ "focusable": false,
143
+ "wcag": [
144
+ {
145
+ "criterion": "1.4.13",
146
+ "level": "AA",
147
+ "title": "Content on Hover or Focus"
148
+ },
149
+ {
150
+ "criterion": "4.1.2",
151
+ "level": "A",
152
+ "title": "Name, Role, Value"
153
+ }
154
+ ]
155
+ }
140
156
  }
@@ -17,5 +17,16 @@
17
17
  },
18
18
  "lifecycle": {
19
19
  "introduced": "1.0.0-draft"
20
+ },
21
+ "accessibility": {
22
+ "intents": ["dismiss"],
23
+ "focusable": false,
24
+ "wcag": [
25
+ {
26
+ "criterion": "4.1.2",
27
+ "level": "A",
28
+ "title": "Name, Role, Value"
29
+ }
30
+ ]
20
31
  }
21
32
  }
@@ -337,5 +337,23 @@
337
337
  "token": "thumbnail-opacity-disabled",
338
338
  "context": "Disabled"
339
339
  }
340
- ]
340
+ ],
341
+ "accessibility": {
342
+ "role": "tree",
343
+ "intents": ["navigate", "select", "expand"],
344
+ "focusable": true,
345
+ "keyboardIntents": ["navigate-items", "expand", "collapse", "activate"],
346
+ "wcag": [
347
+ {
348
+ "criterion": "2.1.1",
349
+ "level": "A",
350
+ "title": "Keyboard"
351
+ },
352
+ {
353
+ "criterion": "4.1.2",
354
+ "level": "A",
355
+ "title": "Name, Role, Value"
356
+ }
357
+ ]
358
+ }
341
359
  }
@@ -13,7 +13,7 @@ Each **invalid** case lives under `invalid/<RULE_ID>/` with:
13
13
  | `invalid/SPEC-002` | SPEC-002 | Alias resolves to incompatible type (semantic). |
14
14
  | `invalid/SPEC-003` | SPEC-003 | Circular alias chain. |
15
15
  | `invalid/SPEC-004` | SPEC-004 | Duplicate `uuid` across tokens. |
16
- | `invalid/SPEC-005` | SPEC-005 | Dimension `default` not in `modes`. |
16
+ | `invalid/SPEC-005` | SPEC-005 | Mode set `default` not in `modes`. |
17
17
  | `invalid/SPEC-006` | SPEC-006 | Ambiguous resolution / specificity tie (warning). |
18
18
  | `invalid/SPEC-008` | SPEC-008 | Non-default mode variants with no base/default variant. |
19
19
 
@@ -26,15 +26,15 @@ Implementors SHOULD run these fixtures once the Rust validator exposes rule IDs
26
26
  Each **resolution** case lives under `resolution/<name>/` with:
27
27
 
28
28
  * `input/` — cascade-format `.tokens.json` files
29
- * `dimensions/` — (optional) dimension declaration JSON files
29
+ * `mode-sets/` — (optional) mode set declaration JSON files
30
30
  * `query.json` — `{ "property": "...", "context": { ... } }` — the resolution query
31
31
  * `expected.json` — `{ "resolved": bool, "expected_uuid": "..." }` — expected outcome
32
32
 
33
- | Folder | Intent |
34
- | ----------------------------------------- | -------------------------------------------------------------------- |
35
- | `resolution/base-fallback` | Dimensionless base token MUST match any context (wildcard behavior). |
36
- | `resolution/specificity-wins` | Higher-specificity variant MUST win over base when both match. |
37
- | `resolution/alias-resolved-after-cascade` | Cascade selects the winner first; alias `$ref` chain resolves after. |
33
+ | Folder | Intent |
34
+ | ----------------------------------------- | ------------------------------------------------------------------------ |
35
+ | `resolution/base-fallback` | Mode-set-agnostic base token MUST match any context (wildcard behavior). |
36
+ | `resolution/specificity-wins` | Higher-specificity variant MUST win over base when both match. |
37
+ | `resolution/alias-resolved-after-cascade` | Cascade selects the winner first; alias `$ref` chain resolves after. |
38
38
 
39
39
  The Rust SDK drives these fixtures in `sdk/core/src/lib.rs` (`resolution_conformance` module, closes [#768](https://github.com/adobe/spectrum-design-data/issues/768)).
40
40
 
@@ -0,0 +1,10 @@
1
+ {
2
+ "tokens": [
3
+ {
4
+ "name": { "property": "alias-missing-target" },
5
+ "$ref": "nonexistent-token",
6
+ "uuid": "aaaaaaaa-0001-4000-8000-000000000001"
7
+ }
8
+ ],
9
+ "components": []
10
+ }
@@ -1,5 +1,5 @@
1
1
  {
2
- "layer": 2,
2
+ "layer": 1,
3
3
  "errors": [
4
4
  {
5
5
  "rule_id": "SPEC-001",
@@ -0,0 +1,16 @@
1
+ {
2
+ "tokens": [
3
+ {
4
+ "name": "spacing-alias",
5
+ "$ref": "base-color",
6
+ "uuid": "bbbbbbbb-0002-4000-8000-000000000001"
7
+ },
8
+ {
9
+ "name": "base-color",
10
+ "$schema": "https://opensource.adobe.com/spectrum-tokens/schemas/token-types/color.json",
11
+ "value": "rgb(0, 128, 255)",
12
+ "uuid": "aaaaaaaa-0002-4000-8000-000000000002"
13
+ }
14
+ ],
15
+ "components": []
16
+ }
@@ -1,5 +1,5 @@
1
1
  {
2
- "layer": 2,
2
+ "layer": 1,
3
3
  "errors": [
4
4
  {
5
5
  "rule_id": "SPEC-002",
@@ -0,0 +1,15 @@
1
+ {
2
+ "tokens": [
3
+ {
4
+ "name": "cycle-a",
5
+ "$ref": "cycle-b",
6
+ "uuid": "cccccccc-0003-4000-8000-000000000001"
7
+ },
8
+ {
9
+ "name": "cycle-b",
10
+ "$ref": "cycle-a",
11
+ "uuid": "dddddddd-0003-4000-8000-000000000002"
12
+ }
13
+ ],
14
+ "components": []
15
+ }
@@ -1,5 +1,5 @@
1
1
  {
2
- "layer": 2,
2
+ "layer": 1,
3
3
  "errors": [
4
4
  {
5
5
  "rule_id": "SPEC-003",
@@ -0,0 +1,15 @@
1
+ {
2
+ "tokens": [
3
+ {
4
+ "name": { "property": "first" },
5
+ "value": "rgb(1, 2, 3)",
6
+ "uuid": "eeeeeeee-0004-4000-8000-000000000001"
7
+ },
8
+ {
9
+ "name": { "property": "second" },
10
+ "value": "rgb(4, 5, 6)",
11
+ "uuid": "eeeeeeee-0004-4000-8000-000000000001"
12
+ }
13
+ ],
14
+ "components": []
15
+ }
@@ -1,5 +1,5 @@
1
1
  {
2
- "layer": 2,
2
+ "layer": 1,
3
3
  "errors": [
4
4
  {
5
5
  "rule_id": "SPEC-004",
@@ -0,0 +1,11 @@
1
+ {
2
+ "tokens": [],
3
+ "components": [],
4
+ "modeSets": [
5
+ {
6
+ "name": "scale",
7
+ "modes": ["medium", "large"],
8
+ "default": "xlarge"
9
+ }
10
+ ]
11
+ }
@@ -1,5 +1,5 @@
1
1
  {
2
- "layer": 2,
2
+ "layer": 1,
3
3
  "errors": [
4
4
  {
5
5
  "rule_id": "SPEC-005",
@@ -0,0 +1,15 @@
1
+ {
2
+ "tokens": [
3
+ {
4
+ "name": { "property": "ambiguous", "colorScheme": "dark" },
5
+ "value": "rgb(20, 20, 20)",
6
+ "uuid": "11111111-0006-4000-8000-000000000001"
7
+ },
8
+ {
9
+ "name": { "property": "ambiguous", "colorScheme": "dark" },
10
+ "value": "rgb(10, 10, 10)",
11
+ "uuid": "ffffffff-0006-4000-8000-000000000002"
12
+ }
13
+ ],
14
+ "components": []
15
+ }
@@ -1,5 +1,5 @@
1
1
  {
2
- "layer": 2,
2
+ "layer": 1,
3
3
  "errors": [
4
4
  {
5
5
  "rule_id": "SPEC-006",
@@ -0,0 +1,9 @@
1
+ {
2
+ "tokens": [
3
+ {
4
+ "name": "button-hover-border-color",
5
+ "value": "#0265dc",
6
+ "component": "button"
7
+ }
8
+ ]
9
+ }
@@ -0,0 +1,10 @@
1
+ {
2
+ "layer": 2,
3
+ "errors": [
4
+ {
5
+ "rule_id": "SPEC-007",
6
+ "severity": "warning",
7
+ "message_pattern": ".*does not roundtrip.*"
8
+ }
9
+ ]
10
+ }