@adobe/design-data-spec 1.5.0 → 2.1.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 (134) hide show
  1. package/conformance/invalid/SPEC-009/expected-errors.json +1 -1
  2. package/conformance/invalid/SPEC-018/dataset.json +8 -1
  3. package/conformance/invalid/SPEC-034/expected-errors.json +1 -1
  4. package/conformance/invalid/SPEC-035/expected-errors.json +1 -1
  5. package/conformance/invalid/SPEC-044/empty-optional-dir/components/.gitkeep +0 -0
  6. package/conformance/invalid/SPEC-044/empty-optional-dir/expected-errors.json +10 -0
  7. package/conformance/invalid/SPEC-044/empty-optional-dir/tokens/base.tokens.json +1 -0
  8. package/conformance/invalid/SPEC-044/missing-tokens/expected-errors.json +10 -0
  9. package/conformance/valid/SPEC-044/components/button.json +9 -0
  10. package/conformance/valid/SPEC-044/expected-errors.json +4 -0
  11. package/conformance/valid/SPEC-044/tokens/base.tokens.json +1 -0
  12. package/package.json +6 -6
  13. package/rules/rules.yaml +27 -7
  14. package/schemas/component.schema.json +1 -1
  15. package/schemas/dataset.schema.json +39 -0
  16. package/schemas/manifest.schema.json +1 -23
  17. package/schemas/mode-set.schema.json +4 -0
  18. package/schemas/platform-extension.json +79 -0
  19. package/schemas/registry-value.json +230 -0
  20. package/schemas/token.schema.json +1 -1
  21. package/spec/agent-surface.md +16 -14
  22. package/spec/anatomy-format.md +1 -1
  23. package/spec/cascade.md +1 -1
  24. package/spec/dataset-layout.md +72 -0
  25. package/spec/index.md +7 -5
  26. package/spec/mode-sets.md +1 -1
  27. package/spec/registry.md +6 -8
  28. package/spec/taxonomy.md +32 -32
  29. package/spec/token-format.md +11 -3
  30. package/components/accordion.json +0 -557
  31. package/components/action-bar.json +0 -214
  32. package/components/action-button.json +0 -522
  33. package/components/action-group.json +0 -134
  34. package/components/alert-banner.json +0 -134
  35. package/components/alert-dialog.json +0 -180
  36. package/components/avatar-group.json +0 -166
  37. package/components/avatar.json +0 -246
  38. package/components/badge.json +0 -594
  39. package/components/body.json +0 -54
  40. package/components/bottom-navigation-android.json +0 -72
  41. package/components/breadcrumbs.json +0 -307
  42. package/components/button-group.json +0 -86
  43. package/components/button.json +0 -586
  44. package/components/calendar.json +0 -133
  45. package/components/cards.json +0 -541
  46. package/components/checkbox-group.json +0 -91
  47. package/components/checkbox.json +0 -339
  48. package/components/close-button.json +0 -208
  49. package/components/coach-indicator.json +0 -105
  50. package/components/coach-mark.json +0 -169
  51. package/components/code.json +0 -44
  52. package/components/color-area.json +0 -138
  53. package/components/color-handle.json +0 -111
  54. package/components/color-loupe.json +0 -77
  55. package/components/color-slider.json +0 -165
  56. package/components/color-wheel.json +0 -117
  57. package/components/combo-box.json +0 -543
  58. package/components/contextual-help.json +0 -230
  59. package/components/date-picker.json +0 -471
  60. package/components/detail.json +0 -53
  61. package/components/divider.json +0 -93
  62. package/components/drop-zone.json +0 -238
  63. package/components/field-label.json +0 -219
  64. package/components/heading.json +0 -68
  65. package/components/help-text.json +0 -209
  66. package/components/illustrated-message.json +0 -175
  67. package/components/in-field-progress-button.json +0 -88
  68. package/components/in-field-progress-circle.json +0 -116
  69. package/components/in-line-alert.json +0 -233
  70. package/components/link.json +0 -167
  71. package/components/list-view.json +0 -382
  72. package/components/menu.json +0 -597
  73. package/components/meter.json +0 -199
  74. package/components/number-field.json +0 -518
  75. package/components/opacity-checkerboard.json +0 -69
  76. package/components/picker.json +0 -579
  77. package/components/popover.json +0 -174
  78. package/components/progress-bar.json +0 -229
  79. package/components/progress-circle.json +0 -132
  80. package/components/radio-button.json +0 -308
  81. package/components/radio-group.json +0 -113
  82. package/components/rating.json +0 -168
  83. package/components/scroll-zoom-bar.json +0 -82
  84. package/components/search-field.json +0 -346
  85. package/components/segmented-control.json +0 -248
  86. package/components/select-box.json +0 -272
  87. package/components/side-navigation.json +0 -320
  88. package/components/slider.json +0 -407
  89. package/components/standard-dialog.json +0 -179
  90. package/components/standard-panel.json +0 -83
  91. package/components/status-light.json +0 -334
  92. package/components/steplist.json +0 -294
  93. package/components/swatch-group.json +0 -114
  94. package/components/swatch.json +0 -240
  95. package/components/switch.json +0 -336
  96. package/components/tab-bar-ios.json +0 -72
  97. package/components/table.json +0 -435
  98. package/components/tabs.json +0 -253
  99. package/components/tag-field.json +0 -243
  100. package/components/tag-group.json +0 -87
  101. package/components/tag.json +0 -393
  102. package/components/takeover-dialog.json +0 -117
  103. package/components/text-area.json +0 -555
  104. package/components/text-field.json +0 -555
  105. package/components/thumbnail.json +0 -149
  106. package/components/title.json +0 -91
  107. package/components/toast.json +0 -156
  108. package/components/tooltip.json +0 -179
  109. package/components/tray.json +0 -32
  110. package/components/tree-view.json +0 -393
  111. package/fields/alignment.json +0 -15
  112. package/fields/anatomy.json +0 -15
  113. package/fields/color-scheme.json +0 -15
  114. package/fields/colorFamily.json +0 -15
  115. package/fields/component.json +0 -15
  116. package/fields/contrast.json +0 -15
  117. package/fields/density.json +0 -15
  118. package/fields/easing.json +0 -15
  119. package/fields/family.json +0 -15
  120. package/fields/motionRole.json +0 -15
  121. package/fields/object.json +0 -15
  122. package/fields/orientation.json +0 -15
  123. package/fields/position.json +0 -15
  124. package/fields/property.json +0 -15
  125. package/fields/scale.json +0 -15
  126. package/fields/scaleIndex.json +0 -15
  127. package/fields/shape.json +0 -15
  128. package/fields/size.json +0 -15
  129. package/fields/state.json +0 -15
  130. package/fields/structure.json +0 -15
  131. package/fields/style.json +0 -15
  132. package/fields/substructure.json +0 -15
  133. package/fields/variant.json +0 -15
  134. package/fields/weight.json +0 -15
@@ -1,308 +0,0 @@
1
- {
2
- "$schema": "https://opensource.adobe.com/spectrum-design-data/schemas/v0/component.schema.json",
3
- "$id": "https://opensource.adobe.com/spectrum-design-data/schemas/v0/components/radio-button.json",
4
- "specVersion": "1.0.0-draft",
5
- "name": "radio-button",
6
- "displayName": "Radio button",
7
- "description": "Radio buttons allow users to select a single option from a list of mutually exclusive options.",
8
- "meta": {
9
- "category": "inputs",
10
- "documentationUrl": "https://spectrum.adobe.com/page/radio-button/"
11
- },
12
- "options": {
13
- "isSelected": {
14
- "type": "boolean",
15
- "default": false
16
- },
17
- "isEmphasized": {
18
- "type": "boolean",
19
- "default": false
20
- },
21
- "label": {
22
- "type": "string",
23
- "description": "The text displayed next to a radio button."
24
- }
25
- },
26
- "states": [
27
- {
28
- "name": "hover",
29
- "trigger": "interaction"
30
- },
31
- {
32
- "name": "down",
33
- "trigger": "interaction"
34
- },
35
- {
36
- "name": "keyboard-focus",
37
- "trigger": "interaction"
38
- }
39
- ],
40
- "lifecycle": {
41
- "introduced": "1.0.0-draft"
42
- },
43
- "tokenBindings": [
44
- {
45
- "token": "radio-button-control-size-small",
46
- "context": "S2 Control (size)"
47
- },
48
- {
49
- "token": "radio-button-control-size-medium",
50
- "context": "S2 Control (size)"
51
- },
52
- {
53
- "token": "radio-button-control-size-large",
54
- "context": "S2 Control (size)"
55
- },
56
- {
57
- "token": "radio-button-control-size-extra-large",
58
- "context": "S2 Control (size)"
59
- },
60
- {
61
- "token": "radio-button-top-to-control-small",
62
- "context": "S2 Spacing (top edge to control)"
63
- },
64
- {
65
- "token": "radio-button-top-to-control-medium",
66
- "context": "S2 Spacing (top edge to control)"
67
- },
68
- {
69
- "token": "radio-button-top-to-control-large",
70
- "context": "S2 Spacing (top edge to control)"
71
- },
72
- {
73
- "token": "radio-button-top-to-control-extra-large",
74
- "context": "S2 Spacing (top edge to control)"
75
- },
76
- {
77
- "token": "neutral-content-color-selected-default",
78
- "context": "S2 Control (selected, non emphasized)"
79
- },
80
- {
81
- "token": "neutral-content-color-selected-hover",
82
- "context": "S2 Control (selected, non emphasized)"
83
- },
84
- {
85
- "token": "neutral-content-color-selected-key-focus",
86
- "context": "S2 Control (selected, non emphasized)"
87
- },
88
- {
89
- "token": "neutral-background-color-selected-default",
90
- "context": "S1 Control (selected, non emphasized)"
91
- },
92
- {
93
- "token": "neutral-background-color-selected-hover",
94
- "context": "S1 Control (selected, non emphasized)"
95
- },
96
- {
97
- "token": "neutral-background-color-selected-key-focus",
98
- "context": "S1 Control (selected, non emphasized)"
99
- },
100
- {
101
- "token": "component-height-75",
102
- "context": "Minimum height"
103
- },
104
- {
105
- "token": "component-height-100",
106
- "context": "Minimum height"
107
- },
108
- {
109
- "token": "component-height-200",
110
- "context": "Minimum height"
111
- },
112
- {
113
- "token": "component-height-300",
114
- "context": "Minimum height"
115
- },
116
- {
117
- "token": "component-size-difference-down",
118
- "context": "Component size (down)"
119
- },
120
- {
121
- "token": "component-size-width-ratio-down",
122
- "context": "Component size (down)"
123
- },
124
- {
125
- "token": "component-size-minimum-perspective-down",
126
- "context": "Component size (down)"
127
- },
128
- {
129
- "token": "border-width-200",
130
- "context": "Control (border)"
131
- },
132
- {
133
- "token": "text-to-control-75",
134
- "context": "Spacing (control to label)"
135
- },
136
- {
137
- "token": "text-to-control-100",
138
- "context": "Spacing (control to label)"
139
- },
140
- {
141
- "token": "text-to-control-200",
142
- "context": "Spacing (control to label)"
143
- },
144
- {
145
- "token": "text-to-control-300",
146
- "context": "Spacing (control to label)"
147
- },
148
- {
149
- "token": "component-top-to-text-75",
150
- "context": "Spacing (top/bottom edge to label)"
151
- },
152
- {
153
- "token": "component-top-to-text-100",
154
- "context": "Spacing (top/bottom edge to label)"
155
- },
156
- {
157
- "token": "component-top-to-text-200",
158
- "context": "Spacing (top/bottom edge to label)"
159
- },
160
- {
161
- "token": "component-top-to-text-300",
162
- "context": "Spacing (top/bottom edge to label)"
163
- },
164
- {
165
- "token": "component-bottom-to-text-75",
166
- "context": "Spacing (top/bottom edge to label)"
167
- },
168
- {
169
- "token": "component-bottom-to-text-100",
170
- "context": "Spacing (top/bottom edge to label)"
171
- },
172
- {
173
- "token": "component-bottom-to-text-200",
174
- "context": "Spacing (top/bottom edge to label)"
175
- },
176
- {
177
- "token": "component-bottom-to-text-300",
178
- "context": "Spacing (top/bottom edge to label)"
179
- },
180
- {
181
- "token": "focus-indicator-thickness",
182
- "context": "Focus ring"
183
- },
184
- {
185
- "token": "focus-indicator-gap",
186
- "context": "Focus ring"
187
- },
188
- {
189
- "token": "radio-button-selection-indicator",
190
- "context": "Selection indicator"
191
- },
192
- {
193
- "token": "spacing-300",
194
- "context": "Radio group spacing (horizontal)"
195
- },
196
- {
197
- "token": "neutral-content-color-default",
198
- "context": "Label"
199
- },
200
- {
201
- "token": "neutral-content-color-hover",
202
- "context": "Label"
203
- },
204
- {
205
- "token": "neutral-content-color-down",
206
- "context": "Label"
207
- },
208
- {
209
- "token": "neutral-content-color-key-focus",
210
- "context": "Label"
211
- },
212
- {
213
- "token": "gray-25",
214
- "context": "Control"
215
- },
216
- {
217
- "token": "accent-content-color-default",
218
- "context": "Control (selected, emphasized)"
219
- },
220
- {
221
- "token": "accent-content-color-hover",
222
- "context": "Control (selected, emphasized)"
223
- },
224
- {
225
- "token": "accent-content-color-down",
226
- "context": "Control (selected, emphasized)"
227
- },
228
- {
229
- "token": "accent-content-color-key-focus",
230
- "context": "Control (selected, emphasized)"
231
- },
232
- {
233
- "token": "disabled-content-color",
234
- "context": "Label (disabled)"
235
- },
236
- {
237
- "token": "focus-indicator-color",
238
- "context": "Focus ring"
239
- },
240
- {
241
- "token": "negative-color-900",
242
- "context": "Radio button colors"
243
- },
244
- {
245
- "token": "negative-color-1000",
246
- "context": "Radio button colors"
247
- },
248
- {
249
- "token": "default-font-family",
250
- "context": "Label"
251
- },
252
- {
253
- "token": "regular-font-weight",
254
- "context": "Label"
255
- },
256
- {
257
- "token": "default-font-style",
258
- "context": "Label"
259
- },
260
- {
261
- "token": "font-size-75",
262
- "context": "Label"
263
- },
264
- {
265
- "token": "font-size-100",
266
- "context": "Label"
267
- },
268
- {
269
- "token": "font-size-200",
270
- "context": "Label"
271
- },
272
- {
273
- "token": "font-size-300",
274
- "context": "Label"
275
- },
276
- {
277
- "token": "line-height-100",
278
- "context": "Label"
279
- },
280
- {
281
- "token": "cjk-line-height-100",
282
- "context": "Label"
283
- }
284
- ],
285
- "accessibility": {
286
- "role": "radio",
287
- "intents": ["choose"],
288
- "focusable": true,
289
- "keyboardIntents": ["activate"],
290
- "wcag": [
291
- {
292
- "criterion": "1.3.1",
293
- "level": "A",
294
- "title": "Info and Relationships"
295
- },
296
- {
297
- "criterion": "2.1.1",
298
- "level": "A",
299
- "title": "Keyboard"
300
- },
301
- {
302
- "criterion": "4.1.2",
303
- "level": "A",
304
- "title": "Name, Role, Value"
305
- }
306
- ]
307
- }
308
- }
@@ -1,113 +0,0 @@
1
- {
2
- "$schema": "https://opensource.adobe.com/spectrum-design-data/schemas/v0/component.schema.json",
3
- "$id": "https://opensource.adobe.com/spectrum-design-data/schemas/v0/components/radio-group.json",
4
- "specVersion": "1.0.0-draft",
5
- "name": "radio-group",
6
- "displayName": "Radio Group",
7
- "description": "A radio group is a grouping of radio buttons that are related to each other.",
8
- "meta": {
9
- "category": "inputs",
10
- "documentationUrl": "https://spectrum.adobe.com/page/radio-group/"
11
- },
12
- "options": {
13
- "label": {
14
- "type": "string"
15
- },
16
- "labelPosition": {
17
- "type": "string",
18
- "default": "top",
19
- "values": [
20
- {
21
- "value": "top"
22
- },
23
- {
24
- "value": "side"
25
- }
26
- ]
27
- },
28
- "orientation": {
29
- "type": "string",
30
- "default": "vertical",
31
- "values": [
32
- {
33
- "value": "horizontal"
34
- },
35
- {
36
- "value": "vertical"
37
- }
38
- ]
39
- },
40
- "size": {
41
- "type": "string",
42
- "default": "m",
43
- "values": [
44
- {
45
- "value": "s"
46
- },
47
- {
48
- "value": "m"
49
- },
50
- {
51
- "value": "l"
52
- },
53
- {
54
- "value": "xl"
55
- }
56
- ]
57
- },
58
- "isEmphasized": {
59
- "type": "boolean",
60
- "default": false
61
- },
62
- "necessityIndicator": {
63
- "type": "string",
64
- "default": "icon",
65
- "values": [
66
- {
67
- "value": "text"
68
- },
69
- {
70
- "value": "icon"
71
- }
72
- ]
73
- },
74
- "isRequired": {
75
- "type": "boolean",
76
- "default": false
77
- },
78
- "isError": {
79
- "type": "boolean",
80
- "default": false
81
- },
82
- "isDisabled": {
83
- "type": "boolean",
84
- "default": false
85
- },
86
- "errorMessage": {
87
- "type": "string"
88
- },
89
- "description": {
90
- "type": "string"
91
- }
92
- },
93
- "lifecycle": {
94
- "introduced": "1.0.0-draft"
95
- },
96
- "tokenBindings": [],
97
- "accessibility": {
98
- "intents": ["choose"],
99
- "focusable": false,
100
- "wcag": [
101
- {
102
- "criterion": "1.3.1",
103
- "level": "A",
104
- "title": "Info and Relationships"
105
- },
106
- {
107
- "criterion": "4.1.2",
108
- "level": "A",
109
- "title": "Name, Role, Value"
110
- }
111
- ]
112
- }
113
- }
@@ -1,168 +0,0 @@
1
- {
2
- "$schema": "https://opensource.adobe.com/spectrum-design-data/schemas/v0/component.schema.json",
3
- "$id": "https://opensource.adobe.com/spectrum-design-data/schemas/v0/components/rating.json",
4
- "specVersion": "1.0.0-draft",
5
- "name": "rating",
6
- "displayName": "Rating",
7
- "description": "The rating component lets users apply a rating to an item or experience, such as an image, a forum post, an item for sale in a marketplace, and more.",
8
- "meta": {
9
- "category": "inputs",
10
- "documentationUrl": "https://spectrum.adobe.com/page/rating/"
11
- },
12
- "options": {
13
- "value": {
14
- "type": "number",
15
- "minimum": 0,
16
- "maximum": 5,
17
- "default": 0,
18
- "multipleOf": 0.5,
19
- "description": "From 0 to 5, can be a decimal to represent half stars"
20
- },
21
- "isEmphasized": {
22
- "type": "boolean",
23
- "default": false
24
- },
25
- "isDisabled": {
26
- "type": "boolean",
27
- "default": false
28
- }
29
- },
30
- "states": [
31
- {
32
- "name": "hover",
33
- "trigger": "interaction"
34
- },
35
- {
36
- "name": "down",
37
- "trigger": "interaction"
38
- },
39
- {
40
- "name": "keyboard-focus",
41
- "trigger": "interaction"
42
- }
43
- ],
44
- "lifecycle": {
45
- "introduced": "1.0.0-draft"
46
- },
47
- "tokenBindings": [
48
- {
49
- "token": "worfklow-icon-size-75",
50
- "context": "Layout"
51
- },
52
- {
53
- "token": "workflow-icon-size-100",
54
- "context": "Layout"
55
- },
56
- {
57
- "token": "rating-width-small",
58
- "context": "Width"
59
- },
60
- {
61
- "token": "rating-width-medium",
62
- "context": "Width"
63
- },
64
- {
65
- "token": "rating-height-small",
66
- "context": "Height"
67
- },
68
- {
69
- "token": "rating-height-medium",
70
- "context": "Height"
71
- },
72
- {
73
- "token": "corner-radius-medium-size-small",
74
- "context": "Rounding"
75
- },
76
- {
77
- "token": "corner-radius-medium-size-medium",
78
- "context": "Rounding"
79
- },
80
- {
81
- "token": "focus-indicator-thickness",
82
- "context": "Focus ring"
83
- },
84
- {
85
- "token": "focus-indicator-grap",
86
- "context": "Focus ring"
87
- },
88
- {
89
- "token": "rating-top-to-content-area-small",
90
- "context": "Spacing (padding)"
91
- },
92
- {
93
- "token": "rating-top-to-content-area-medium",
94
- "context": "Spacing (padding)"
95
- },
96
- {
97
- "token": "rating-bottom-to-content-area-small",
98
- "context": "Spacing (padding)"
99
- },
100
- {
101
- "token": "rating-bottom-to-content-area-medium",
102
- "context": "Spacing (padding)"
103
- },
104
- {
105
- "token": "rating-edge-to-content-area-small",
106
- "context": "Spacing (padding)"
107
- },
108
- {
109
- "token": "rating-edge-to-content-area-medium",
110
- "context": "Spacing (padding)"
111
- },
112
- {
113
- "token": "spacing-75",
114
- "context": "Spacing"
115
- },
116
- {
117
- "token": "neutral-content-color-default",
118
- "context": "Default"
119
- },
120
- {
121
- "token": "accent-content-color-default",
122
- "context": "Emphasized"
123
- },
124
- {
125
- "token": "accent-content-color-hover",
126
- "context": "Hover"
127
- },
128
- {
129
- "token": "neutral-content-color-hover",
130
- "context": "Hover"
131
- },
132
- {
133
- "token": "neutral-content-color-down",
134
- "context": "Down"
135
- },
136
- {
137
- "token": "accent-content-color-down",
138
- "context": "Down"
139
- },
140
- {
141
- "token": "disabled-content-color",
142
- "context": "Disabled"
143
- }
144
- ],
145
- "accessibility": {
146
- "role": "slider",
147
- "intents": ["choose"],
148
- "focusable": true,
149
- "keyboardIntents": ["increment", "decrement"],
150
- "wcag": [
151
- {
152
- "criterion": "1.3.1",
153
- "level": "A",
154
- "title": "Info and Relationships"
155
- },
156
- {
157
- "criterion": "2.1.1",
158
- "level": "A",
159
- "title": "Keyboard"
160
- },
161
- {
162
- "criterion": "4.1.2",
163
- "level": "A",
164
- "title": "Name, Role, Value"
165
- }
166
- ]
167
- }
168
- }
@@ -1,82 +0,0 @@
1
- {
2
- "$schema": "https://opensource.adobe.com/spectrum-design-data/schemas/v0/component.schema.json",
3
- "$id": "https://opensource.adobe.com/spectrum-design-data/schemas/v0/components/scroll-zoom-bar.json",
4
- "specVersion": "1.0.0-draft",
5
- "name": "scroll-zoom-bar",
6
- "displayName": "Scroll-zoom bar",
7
- "description": "Primarily for usage in timelines, a scroll-zoom bar lets a user scroll or zoom with the same control.",
8
- "meta": {
9
- "category": "navigation",
10
- "documentationUrl": "https://spectrum.adobe.com/page/scroll-zoom-bar/"
11
- },
12
- "options": {
13
- "size": {
14
- "type": "string",
15
- "default": "m",
16
- "values": [
17
- {
18
- "value": "s"
19
- },
20
- {
21
- "value": "m"
22
- },
23
- {
24
- "value": "l"
25
- }
26
- ]
27
- },
28
- "orientation": {
29
- "type": "string",
30
- "default": "horizontal",
31
- "values": [
32
- {
33
- "value": "horizontal"
34
- },
35
- {
36
- "value": "vertical"
37
- }
38
- ]
39
- },
40
- "hideTrack": {
41
- "type": "boolean",
42
- "default": false
43
- },
44
- "hideHandles": {
45
- "type": "boolean",
46
- "default": false
47
- },
48
- "scaleDown": {
49
- "type": "boolean",
50
- "default": false
51
- },
52
- "isDetached": {
53
- "type": "boolean",
54
- "default": false
55
- }
56
- },
57
- "states": [
58
- {
59
- "name": "hover",
60
- "trigger": "interaction"
61
- },
62
- {
63
- "name": "keyboard-focus",
64
- "trigger": "interaction"
65
- }
66
- ],
67
- "lifecycle": {
68
- "introduced": "1.0.0-draft"
69
- },
70
- "accessibility": {
71
- "intents": ["choose"],
72
- "focusable": true,
73
- "keyboardIntents": ["increment", "decrement"],
74
- "wcag": [
75
- {
76
- "criterion": "2.1.1",
77
- "level": "A",
78
- "title": "Keyboard"
79
- }
80
- ]
81
- }
82
- }