@verndale/accessibility-standards 1.0.0 → 3.0.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 (171) hide show
  1. package/OPERATING.md +3 -1
  2. package/README.md +4 -0
  3. package/bin/accessibility-standards.mjs +1 -1
  4. package/dist/manifest.json +159 -101
  5. package/dist/profiles/ai-orchestration/coverage-manifest.json +724 -68
  6. package/dist/profiles/ai-orchestration/implementation/accessibility.md +825 -10
  7. package/dist/profiles/ai-orchestration/pattern-contracts.json +1015 -343
  8. package/dist/profiles/ai-orchestration/patterns/accordion.md +14 -0
  9. package/dist/profiles/ai-orchestration/patterns/alert.md +14 -0
  10. package/dist/profiles/ai-orchestration/patterns/carousel.md +14 -0
  11. package/dist/profiles/ai-orchestration/patterns/checkbox.md +27 -0
  12. package/dist/profiles/ai-orchestration/patterns/combobox.md +14 -0
  13. package/dist/profiles/ai-orchestration/patterns/consequential-submission.md +15 -1
  14. package/dist/profiles/ai-orchestration/patterns/dialog.md +14 -0
  15. package/dist/profiles/ai-orchestration/patterns/disclosure.md +14 -0
  16. package/dist/profiles/ai-orchestration/patterns/dynamic-status.md +14 -0
  17. package/dist/profiles/ai-orchestration/patterns/field.md +15 -0
  18. package/dist/profiles/ai-orchestration/patterns/image.md +14 -0
  19. package/dist/profiles/ai-orchestration/patterns/listbox.md +14 -0
  20. package/dist/profiles/ai-orchestration/patterns/media-player.md +17 -0
  21. package/dist/profiles/ai-orchestration/patterns/menu-button.md +14 -0
  22. package/dist/profiles/ai-orchestration/patterns/menu.md +30 -0
  23. package/dist/profiles/ai-orchestration/patterns/pagination.md +14 -0
  24. package/dist/profiles/ai-orchestration/patterns/popover.md +15 -0
  25. package/dist/profiles/ai-orchestration/patterns/progress.md +15 -0
  26. package/dist/profiles/ai-orchestration/patterns/radio-group.md +27 -0
  27. package/dist/profiles/ai-orchestration/patterns/slider.md +31 -0
  28. package/dist/profiles/ai-orchestration/patterns/spinbutton.md +28 -0
  29. package/dist/profiles/ai-orchestration/patterns/tabs.md +14 -0
  30. package/dist/profiles/ai-orchestration/patterns/tooltip.md +14 -0
  31. package/dist/profiles/ai-orchestration/patterns/tree-view.md +31 -0
  32. package/dist/profiles/ai-orchestration/patterns/validation.md +15 -0
  33. package/dist/profiles/ai-orchestration/review/accessibility.md +21 -6
  34. package/dist/profiles/ai-orchestration/semantics/accessible-authentication.md +13 -0
  35. package/dist/profiles/ai-orchestration/semantics/accessible-name.md +8 -1
  36. package/dist/profiles/ai-orchestration/semantics/alert.md +7 -0
  37. package/dist/profiles/ai-orchestration/semantics/consequential-action.md +6 -1
  38. package/dist/profiles/ai-orchestration/semantics/consistent-help.md +13 -0
  39. package/dist/profiles/ai-orchestration/semantics/data-table.md +7 -1
  40. package/dist/profiles/ai-orchestration/semantics/dragging-alternative.md +13 -0
  41. package/dist/profiles/ai-orchestration/semantics/expanded-state.md +6 -0
  42. package/dist/profiles/ai-orchestration/semantics/focus.initial.md +4 -0
  43. package/dist/profiles/ai-orchestration/semantics/focus.return.md +4 -0
  44. package/dist/profiles/ai-orchestration/semantics/focus.visible.md +8 -1
  45. package/dist/profiles/ai-orchestration/semantics/form-error.md +8 -1
  46. package/dist/profiles/ai-orchestration/semantics/form-label.md +7 -0
  47. package/dist/profiles/ai-orchestration/semantics/form-required.md +7 -0
  48. package/dist/profiles/ai-orchestration/semantics/headings.md +7 -0
  49. package/dist/profiles/ai-orchestration/semantics/keyboard.escape.md +4 -0
  50. package/dist/profiles/ai-orchestration/semantics/keyboard.md +7 -0
  51. package/dist/profiles/ai-orchestration/semantics/landmarks.md +6 -0
  52. package/dist/profiles/ai-orchestration/semantics/live-status.md +7 -1
  53. package/dist/profiles/ai-orchestration/semantics/media-alternatives.md +11 -0
  54. package/dist/profiles/ai-orchestration/semantics/motion-control.md +8 -1
  55. package/dist/profiles/ai-orchestration/semantics/name-role-value.md +6 -1
  56. package/dist/profiles/ai-orchestration/semantics/native-dialog.md +7 -0
  57. package/dist/profiles/ai-orchestration/semantics/native-elements.md +5 -0
  58. package/dist/profiles/ai-orchestration/semantics/non-text-alternative.md +5 -0
  59. package/dist/profiles/ai-orchestration/semantics/redundant-entry.md +13 -0
  60. package/dist/profiles/ai-orchestration/semantics/roles-states-properties.md +6 -0
  61. package/dist/profiles/ai-orchestration/semantics/selected-state.md +6 -0
  62. package/dist/profiles/ai-orchestration/semantics/target-size.md +6 -1
  63. package/dist/profiles/ai-orchestration/semantics.json +843 -100
  64. package/dist/profiles/ai-orchestration/testing/accessibility.md +33 -3
  65. package/dist/profiles/ai-orchestration/ui-design-brain-bindings.json +836 -0
  66. package/dist/profiles/conductor/a11y-semantics.md +270 -10
  67. package/dist/profiles/conductor/accessibility-quality.md +557 -1
  68. package/dist/profiles/conductor/applicability-matrix.json +270 -230
  69. package/dist/profiles/conductor/coverage-manifest.json +724 -68
  70. package/dist/profiles/conductor/pattern-contracts.json +1015 -343
  71. package/dist/profiles/conductor/patterns/accordion.json +42 -24
  72. package/dist/profiles/conductor/patterns/alert.json +36 -18
  73. package/dist/profiles/conductor/patterns/carousel.json +43 -25
  74. package/dist/profiles/conductor/patterns/checkbox.json +67 -0
  75. package/dist/profiles/conductor/patterns/combobox.json +44 -26
  76. package/dist/profiles/conductor/patterns/consequential-submission.json +41 -22
  77. package/dist/profiles/conductor/patterns/dialog.json +44 -26
  78. package/dist/profiles/conductor/patterns/disclosure.json +40 -22
  79. package/dist/profiles/conductor/patterns/dynamic-status.json +38 -19
  80. package/dist/profiles/conductor/patterns/field.json +58 -22
  81. package/dist/profiles/conductor/patterns/image.json +48 -19
  82. package/dist/profiles/conductor/patterns/listbox.json +42 -24
  83. package/dist/profiles/conductor/patterns/media-player.json +76 -26
  84. package/dist/profiles/conductor/patterns/menu-button.json +41 -23
  85. package/dist/profiles/conductor/patterns/menu.json +78 -0
  86. package/dist/profiles/conductor/patterns/pagination.json +41 -22
  87. package/dist/profiles/conductor/patterns/popover.json +49 -23
  88. package/dist/profiles/conductor/patterns/progress.json +45 -20
  89. package/dist/profiles/conductor/patterns/radio-group.json +69 -0
  90. package/dist/profiles/conductor/patterns/slider.json +84 -0
  91. package/dist/profiles/conductor/patterns/spinbutton.json +74 -0
  92. package/dist/profiles/conductor/patterns/tabs.json +41 -23
  93. package/dist/profiles/conductor/patterns/tooltip.json +38 -20
  94. package/dist/profiles/conductor/patterns/tree-view.json +77 -0
  95. package/dist/profiles/conductor/patterns/validation.json +59 -23
  96. package/dist/profiles/conductor/semantics.json +843 -100
  97. package/dist/profiles/conductor/ui-design-brain-bindings.json +836 -0
  98. package/dist/projection-manifest.json +123 -82
  99. package/dist/requirements-to-implementation.md +8 -0
  100. package/lib/build-manifest.mjs +12 -6
  101. package/lib/build.mjs +21 -7
  102. package/lib/compile-applicability.mjs +131 -10
  103. package/lib/coverage.mjs +20 -0
  104. package/lib/digest.mjs +8 -0
  105. package/lib/index.mjs +1 -1
  106. package/lib/load.mjs +44 -1
  107. package/lib/provenance.mjs +51 -0
  108. package/lib/render.mjs +115 -31
  109. package/lib/sync.mjs +242 -28
  110. package/lib/validate.mjs +557 -24
  111. package/package.json +27 -10
  112. package/profiles/ai-orchestration/profile.json +1 -1
  113. package/profiles/ai-orchestration/templates/patterns/README.md +1 -1
  114. package/profiles/ai-orchestration/templates/review/README.md +1 -1
  115. package/profiles/ai-orchestration/templates/semantics/README.md +1 -1
  116. package/profiles/ai-orchestration/templates/testing/README.md +1 -1
  117. package/profiles/conductor/profile.json +1 -1
  118. package/profiles/conductor/templates/evidence/README.md +1 -1
  119. package/profiles/conductor/templates/patterns/README.md +1 -1
  120. package/profiles/conductor/templates/semantics/README.md +1 -1
  121. package/schemas/consumer-config.schema.json +1 -1
  122. package/schemas/contract.schema.json +1 -0
  123. package/schemas/manifest.schema.json +1 -1
  124. package/schemas/pattern.schema.json +98 -1
  125. package/schemas/profile.schema.json +1 -1
  126. package/schemas/projection-manifest.schema.json +84 -1
  127. package/schemas/semantic.schema.json +26 -1
  128. package/schemas/standards-reference.schema.json +105 -0
  129. package/schemas/ui-design-brain-bindings.schema.json +86 -0
  130. package/schemas/wcag-coverage.schema.json +93 -0
  131. package/src/applicability/facts.yml +27 -1
  132. package/src/applicability/matrix.yml +8 -9
  133. package/src/applicability/ui-design-brain-bindings.yml +196 -0
  134. package/src/contract.yml +1 -0
  135. package/src/coverage/wcag-2.2.yml +68 -0
  136. package/src/patterns/disclosure/accordion.yml +1 -1
  137. package/src/patterns/disclosure/disclosure.yml +1 -1
  138. package/src/patterns/feedback/alert.yml +1 -1
  139. package/src/patterns/feedback/dynamic-status.yml +1 -1
  140. package/src/patterns/feedback/progress.yml +1 -1
  141. package/src/patterns/forms/consequential-submission.yml +1 -1
  142. package/src/patterns/forms/field.yml +1 -1
  143. package/src/patterns/forms/spinbutton.yml +1 -0
  144. package/src/patterns/forms/validation.yml +1 -1
  145. package/src/patterns/media/carousel.yml +1 -1
  146. package/src/patterns/media/image.yml +1 -1
  147. package/src/patterns/media/media-player.yml +1 -1
  148. package/src/patterns/navigation/menu-button.yml +1 -1
  149. package/src/patterns/navigation/menu.yml +1 -0
  150. package/src/patterns/navigation/pagination.yml +1 -1
  151. package/src/patterns/navigation/tabs.yml +1 -1
  152. package/src/patterns/navigation/tree-view.yml +1 -0
  153. package/src/patterns/overlays/dialog.yml +1 -1
  154. package/src/patterns/overlays/popover.yml +1 -1
  155. package/src/patterns/overlays/tooltip.yml +1 -1
  156. package/src/patterns/selection/checkbox.yml +1 -0
  157. package/src/patterns/selection/combobox.yml +1 -1
  158. package/src/patterns/selection/listbox.yml +1 -1
  159. package/src/patterns/selection/radio-group.yml +1 -0
  160. package/src/patterns/selection/slider.yml +1 -0
  161. package/src/semantics/accessible-names.yml +1 -1
  162. package/src/semantics/forms.yml +1 -1
  163. package/src/semantics/headings-landmarks.yml +1 -1
  164. package/src/semantics/keyboard-focus.yml +1 -1
  165. package/src/semantics/live-regions.yml +1 -1
  166. package/src/semantics/media.yml +1 -1
  167. package/src/semantics/native-elements.yml +1 -1
  168. package/src/semantics/roles-states-properties.yml +1 -1
  169. package/src/semantics/tables.yml +1 -1
  170. package/src/semantics/wcag-2.2.yml +1 -0
  171. package/src/sources.yml +1 -1
@@ -1,74 +1,18 @@
1
1
  {
2
2
  "_generated": "GENERATED by @verndale/accessibility-standards; DO NOT EDIT",
3
- "schema_version": 1,
4
- "projected_ids": [
5
- "applicability.authentication-captcha",
6
- "applicability.character-shortcuts",
7
- "applicability.complex-pointer",
8
- "applicability.consequential-submission",
9
- "applicability.consistent-help",
10
- "applicability.data-table-grid",
11
- "applicability.dynamic-status",
12
- "applicability.focus-obstruction",
13
- "applicability.forms",
14
- "applicability.locale-bidi",
15
- "applicability.media",
16
- "applicability.motion-timing",
17
- "applicability.non-text-content",
18
- "applicability.orientation-sensory",
19
- "applicability.overlays",
20
- "applicability.page-context",
21
- "applicability.redundant-entry",
22
- "applicability.target-size",
23
- "pattern.accordion",
24
- "pattern.alert",
25
- "pattern.carousel",
26
- "pattern.combobox",
27
- "pattern.consequential-submission",
28
- "pattern.dialog",
29
- "pattern.disclosure",
30
- "pattern.dynamic-status",
31
- "pattern.field",
32
- "pattern.image",
33
- "pattern.listbox",
34
- "pattern.media-player",
35
- "pattern.menu-button",
36
- "pattern.pagination",
37
- "pattern.popover",
38
- "pattern.progress",
39
- "pattern.tabs",
40
- "pattern.tooltip",
41
- "pattern.validation",
42
- "semantics.accessible-name",
43
- "semantics.alert",
44
- "semantics.consequential-action",
45
- "semantics.data-table",
46
- "semantics.expanded-state",
47
- "semantics.focus.initial",
48
- "semantics.focus.return",
49
- "semantics.focus.visible",
50
- "semantics.form-error",
51
- "semantics.form-label",
52
- "semantics.form-required",
53
- "semantics.headings",
54
- "semantics.keyboard",
55
- "semantics.keyboard.escape",
56
- "semantics.landmarks",
57
- "semantics.live-status",
58
- "semantics.media-alternatives",
59
- "semantics.motion-control",
60
- "semantics.name-role-value",
61
- "semantics.native-dialog",
62
- "semantics.native-elements",
63
- "semantics.non-text-alternative",
64
- "semantics.roles-states-properties",
65
- "semantics.selected-state",
66
- "semantics.target-size"
67
- ],
3
+ "_provenance": {
4
+ "package": "@verndale/accessibility-standards@3.0.0",
5
+ "profile": "ai-orchestration",
6
+ "profile_digest": "de396e9a23010dff2e8abf3ae7e8500153599583ffa31a595b3a94fbe9df3da4",
7
+ "profile_version": "3.0.0",
8
+ "schema_version": 3,
9
+ "source_digest": "708ac82783bfb5ebcce31e4dada15d8580863f5e37b32d1807adf61e415ed5af"
10
+ },
68
11
  "lane_coverage": {
69
12
  "axe": [
70
13
  "pattern.accordion",
71
14
  "pattern.carousel",
15
+ "pattern.checkbox",
72
16
  "pattern.combobox",
73
17
  "pattern.dialog",
74
18
  "pattern.disclosure",
@@ -76,9 +20,14 @@
76
20
  "pattern.image",
77
21
  "pattern.listbox",
78
22
  "pattern.media-player",
23
+ "pattern.menu",
79
24
  "pattern.pagination",
80
25
  "pattern.progress",
26
+ "pattern.radio-group",
27
+ "pattern.slider",
28
+ "pattern.spinbutton",
81
29
  "pattern.tabs",
30
+ "pattern.tree-view",
82
31
  "pattern.validation",
83
32
  "semantics.accessible-name",
84
33
  "semantics.data-table",
@@ -97,21 +46,29 @@
97
46
  "e2e": [
98
47
  "pattern.accordion",
99
48
  "pattern.carousel",
49
+ "pattern.checkbox",
100
50
  "pattern.combobox",
101
51
  "pattern.consequential-submission",
102
52
  "pattern.dialog",
103
53
  "pattern.disclosure",
104
54
  "pattern.dynamic-status",
105
- "pattern.field",
106
55
  "pattern.listbox",
107
56
  "pattern.media-player",
57
+ "pattern.menu",
108
58
  "pattern.menu-button",
109
59
  "pattern.popover",
60
+ "pattern.radio-group",
61
+ "pattern.slider",
62
+ "pattern.spinbutton",
110
63
  "pattern.tabs",
111
64
  "pattern.tooltip",
65
+ "pattern.tree-view",
112
66
  "pattern.validation",
67
+ "semantics.accessible-authentication",
113
68
  "semantics.consequential-action",
69
+ "semantics.consistent-help",
114
70
  "semantics.data-table",
71
+ "semantics.dragging-alternative",
115
72
  "semantics.expanded-state",
116
73
  "semantics.focus.initial",
117
74
  "semantics.focus.return",
@@ -123,6 +80,7 @@
123
80
  "semantics.live-status",
124
81
  "semantics.motion-control",
125
82
  "semantics.native-dialog",
83
+ "semantics.redundant-entry",
126
84
  "semantics.roles-states-properties",
127
85
  "semantics.selected-state",
128
86
  "semantics.target-size"
@@ -131,6 +89,7 @@
131
89
  "pattern.accordion",
132
90
  "pattern.alert",
133
91
  "pattern.carousel",
92
+ "pattern.checkbox",
134
93
  "pattern.combobox",
135
94
  "pattern.consequential-submission",
136
95
  "pattern.dialog",
@@ -139,17 +98,25 @@
139
98
  "pattern.image",
140
99
  "pattern.listbox",
141
100
  "pattern.media-player",
101
+ "pattern.menu",
142
102
  "pattern.menu-button",
143
103
  "pattern.pagination",
144
104
  "pattern.popover",
145
105
  "pattern.progress",
106
+ "pattern.radio-group",
107
+ "pattern.slider",
108
+ "pattern.spinbutton",
146
109
  "pattern.tabs",
147
110
  "pattern.tooltip",
111
+ "pattern.tree-view",
148
112
  "pattern.validation",
113
+ "semantics.accessible-authentication",
149
114
  "semantics.accessible-name",
150
115
  "semantics.alert",
151
116
  "semantics.consequential-action",
117
+ "semantics.consistent-help",
152
118
  "semantics.data-table",
119
+ "semantics.dragging-alternative",
153
120
  "semantics.focus.visible",
154
121
  "semantics.form-error",
155
122
  "semantics.form-label",
@@ -163,24 +130,31 @@
163
130
  "semantics.native-dialog",
164
131
  "semantics.native-elements",
165
132
  "semantics.non-text-alternative",
133
+ "semantics.redundant-entry",
166
134
  "semantics.target-size"
167
135
  ],
168
136
  "unit": [
169
137
  "pattern.accordion",
170
138
  "pattern.alert",
171
139
  "pattern.carousel",
140
+ "pattern.checkbox",
172
141
  "pattern.combobox",
173
142
  "pattern.dialog",
174
143
  "pattern.disclosure",
175
144
  "pattern.dynamic-status",
176
145
  "pattern.field",
177
146
  "pattern.listbox",
147
+ "pattern.menu",
178
148
  "pattern.menu-button",
179
149
  "pattern.pagination",
180
150
  "pattern.popover",
181
151
  "pattern.progress",
152
+ "pattern.radio-group",
153
+ "pattern.slider",
154
+ "pattern.spinbutton",
182
155
  "pattern.tabs",
183
156
  "pattern.tooltip",
157
+ "pattern.tree-view",
184
158
  "pattern.validation",
185
159
  "semantics.accessible-name",
186
160
  "semantics.alert",
@@ -190,13 +164,695 @@
190
164
  "semantics.form-error",
191
165
  "semantics.form-label",
192
166
  "semantics.form-required",
193
- "semantics.keyboard",
194
167
  "semantics.keyboard.escape",
195
168
  "semantics.live-status",
196
169
  "semantics.name-role-value",
197
- "semantics.native-elements",
198
170
  "semantics.roles-states-properties",
199
171
  "semantics.selected-state"
200
172
  ]
173
+ },
174
+ "projected_ids": [
175
+ "applicability.accessible-authentication",
176
+ "applicability.complex-pointer",
177
+ "applicability.consequential-submission",
178
+ "applicability.consistent-help",
179
+ "applicability.data-table",
180
+ "applicability.dragging-alternative",
181
+ "applicability.dynamic-status",
182
+ "applicability.focus-obstruction",
183
+ "applicability.forms",
184
+ "applicability.media",
185
+ "applicability.motion-timing",
186
+ "applicability.non-text-content",
187
+ "applicability.overlays",
188
+ "applicability.page-context",
189
+ "applicability.redundant-entry",
190
+ "applicability.target-size",
191
+ "applicability.validation",
192
+ "foundation.conformance-boundary",
193
+ "foundation.standards-hierarchy",
194
+ "foundation.wcag-2.2",
195
+ "pattern.accordion",
196
+ "pattern.alert",
197
+ "pattern.carousel",
198
+ "pattern.checkbox",
199
+ "pattern.combobox",
200
+ "pattern.consequential-submission",
201
+ "pattern.dialog",
202
+ "pattern.disclosure",
203
+ "pattern.dynamic-status",
204
+ "pattern.field",
205
+ "pattern.image",
206
+ "pattern.listbox",
207
+ "pattern.media-player",
208
+ "pattern.menu",
209
+ "pattern.menu-button",
210
+ "pattern.pagination",
211
+ "pattern.popover",
212
+ "pattern.progress",
213
+ "pattern.radio-group",
214
+ "pattern.slider",
215
+ "pattern.spinbutton",
216
+ "pattern.tabs",
217
+ "pattern.tooltip",
218
+ "pattern.tree-view",
219
+ "pattern.validation",
220
+ "policy.enhanced-quality",
221
+ "policy.target-size",
222
+ "semantics.accessible-authentication",
223
+ "semantics.accessible-name",
224
+ "semantics.alert",
225
+ "semantics.consequential-action",
226
+ "semantics.consistent-help",
227
+ "semantics.data-table",
228
+ "semantics.dragging-alternative",
229
+ "semantics.expanded-state",
230
+ "semantics.focus.initial",
231
+ "semantics.focus.return",
232
+ "semantics.focus.visible",
233
+ "semantics.form-error",
234
+ "semantics.form-label",
235
+ "semantics.form-required",
236
+ "semantics.headings",
237
+ "semantics.keyboard",
238
+ "semantics.keyboard.escape",
239
+ "semantics.landmarks",
240
+ "semantics.live-status",
241
+ "semantics.media-alternatives",
242
+ "semantics.motion-control",
243
+ "semantics.name-role-value",
244
+ "semantics.native-dialog",
245
+ "semantics.native-elements",
246
+ "semantics.non-text-alternative",
247
+ "semantics.redundant-entry",
248
+ "semantics.roles-states-properties",
249
+ "semantics.selected-state",
250
+ "semantics.target-size"
251
+ ],
252
+ "schema_version": 3,
253
+ "ui_design_brain": {
254
+ "binding_digest": "9c2e5264b3706778d800e6c8f7fb77ebceb34a8bb00937431cd42f5c0b2e9d39",
255
+ "catalog_authority_version": "1.15.1",
256
+ "manifest_digest": "sha256:63a0bc8d9537d6d4c0aef8fd8a539bf4a9181a50d0761bd63eae6fe59b4eddc9",
257
+ "manifest_path": "skills/ui-design-brain/catalog-manifest.json",
258
+ "package": "@verndale/ui-design-brain",
259
+ "package_version": "1.16.0",
260
+ "pattern_count": 80,
261
+ "repository": "https://github.com/verndale/ui-design-brain",
262
+ "source_digest": "sha256:1eda596fe341786b5ada25742b6487bc06685fff17cbd582bc1b58302097e3ff",
263
+ "tracking_issue": "https://github.com/verndale/ui-design-brain/issues/47"
264
+ },
265
+ "ui_pattern_ids": [
266
+ "accordion",
267
+ "alert",
268
+ "avatar",
269
+ "badge",
270
+ "breadcrumbs",
271
+ "button",
272
+ "button-group",
273
+ "card",
274
+ "carousel",
275
+ "checkbox",
276
+ "color-picker",
277
+ "combobox",
278
+ "comparison-table",
279
+ "context-menu",
280
+ "date-input",
281
+ "datepicker",
282
+ "drawer",
283
+ "dropdown-menu",
284
+ "empty-state",
285
+ "error-message",
286
+ "eyebrow",
287
+ "fieldset",
288
+ "file",
289
+ "file-upload",
290
+ "filter",
291
+ "footer",
292
+ "form",
293
+ "header",
294
+ "heading",
295
+ "helper-text",
296
+ "hero",
297
+ "icon",
298
+ "image",
299
+ "in-page-navigation",
300
+ "label",
301
+ "link",
302
+ "list",
303
+ "logo-bar",
304
+ "marquee",
305
+ "masthead",
306
+ "media-object",
307
+ "mega-menu",
308
+ "modal",
309
+ "navigation",
310
+ "number-input",
311
+ "pagination",
312
+ "popover",
313
+ "progress-bar",
314
+ "progress-indicator",
315
+ "quote",
316
+ "radio-button",
317
+ "rating",
318
+ "rich-text",
319
+ "rich-text-editor",
320
+ "search-input",
321
+ "search-overlay",
322
+ "section-header",
323
+ "segmented-control",
324
+ "select",
325
+ "separator",
326
+ "sidebar",
327
+ "skeleton",
328
+ "skip-link",
329
+ "slider",
330
+ "spinner",
331
+ "stack",
332
+ "stat",
333
+ "stepper",
334
+ "table",
335
+ "tabs",
336
+ "text-input",
337
+ "textarea",
338
+ "toast",
339
+ "toggle",
340
+ "tooltip",
341
+ "tree-view",
342
+ "utility-bar",
343
+ "video",
344
+ "visually-hidden",
345
+ "wizard"
346
+ ],
347
+ "wcag_2_2": {
348
+ "authority": "wcag-2.2",
349
+ "criteria": [
350
+ {
351
+ "id": "1.1.1",
352
+ "level": "A",
353
+ "note": "Meaningful and decorative non-text content are covered, but dedicated obligations for controls and input, time-based media identification, tests, sensory experiences, and CAPTCHA alternatives are not all represented.",
354
+ "semantic_ids": [
355
+ "semantics.non-text-alternative"
356
+ ],
357
+ "status": "partial",
358
+ "title": "Non-text Content"
359
+ },
360
+ {
361
+ "id": "1.2.1",
362
+ "level": "A",
363
+ "note": "The shared media rule does not distinguish every audio-only and video-only alternative.",
364
+ "semantic_ids": [
365
+ "semantics.media-alternatives"
366
+ ],
367
+ "status": "partial",
368
+ "title": "Audio-only and Video-only (Prerecorded)"
369
+ },
370
+ {
371
+ "id": "1.2.2",
372
+ "level": "A",
373
+ "note": "Captions are required broadly, without a criterion-specific prerecorded contract.",
374
+ "semantic_ids": [
375
+ "semantics.media-alternatives"
376
+ ],
377
+ "status": "partial",
378
+ "title": "Captions (Prerecorded)"
379
+ },
380
+ {
381
+ "id": "1.2.3",
382
+ "level": "A",
383
+ "note": "The shared media rule covers both alternatives but does not encode the criterion's conditional choice.",
384
+ "semantic_ids": [
385
+ "semantics.media-alternatives"
386
+ ],
387
+ "status": "partial",
388
+ "title": "Audio Description or Media Alternative (Prerecorded)"
389
+ },
390
+ {
391
+ "id": "1.2.4",
392
+ "level": "AA",
393
+ "note": "No semantic rule requires live captions.",
394
+ "semantic_ids": [],
395
+ "status": "gap",
396
+ "title": "Captions (Live)"
397
+ },
398
+ {
399
+ "id": "1.2.5",
400
+ "level": "AA",
401
+ "note": "Audio description is named, but prerecorded applicability is not represented independently.",
402
+ "semantic_ids": [
403
+ "semantics.media-alternatives"
404
+ ],
405
+ "status": "partial",
406
+ "title": "Audio Description (Prerecorded)"
407
+ },
408
+ {
409
+ "id": "1.3.1",
410
+ "level": "A",
411
+ "note": "Several structural cases are covered, but the general criterion is broader than the current rules.",
412
+ "semantic_ids": [
413
+ "semantics.data-table",
414
+ "semantics.form-label",
415
+ "semantics.form-required",
416
+ "semantics.headings",
417
+ "semantics.landmarks"
418
+ ],
419
+ "status": "partial",
420
+ "title": "Info and Relationships"
421
+ },
422
+ {
423
+ "id": "1.3.2",
424
+ "level": "A",
425
+ "note": "No semantic rule explicitly preserves meaningful reading sequence.",
426
+ "semantic_ids": [],
427
+ "status": "gap",
428
+ "title": "Meaningful Sequence"
429
+ },
430
+ {
431
+ "id": "1.3.3",
432
+ "level": "A",
433
+ "note": "No semantic rule prevents instructions from relying only on sensory characteristics.",
434
+ "semantic_ids": [],
435
+ "status": "gap",
436
+ "title": "Sensory Characteristics"
437
+ },
438
+ {
439
+ "id": "1.3.4",
440
+ "level": "AA",
441
+ "note": "No semantic rule prevents unnecessary orientation restrictions.",
442
+ "semantic_ids": [],
443
+ "status": "gap",
444
+ "title": "Orientation"
445
+ },
446
+ {
447
+ "id": "1.3.5",
448
+ "level": "AA",
449
+ "note": "No semantic rule requires programmatic input-purpose tokens.",
450
+ "semantic_ids": [],
451
+ "status": "gap",
452
+ "title": "Identify Input Purpose"
453
+ },
454
+ {
455
+ "id": "1.4.1",
456
+ "level": "A",
457
+ "note": "No semantic rule prohibits color-only communication.",
458
+ "semantic_ids": [],
459
+ "status": "gap",
460
+ "title": "Use of Color"
461
+ },
462
+ {
463
+ "id": "1.4.2",
464
+ "level": "A",
465
+ "note": "No semantic rule requires independent control of automatically playing audio.",
466
+ "semantic_ids": [],
467
+ "status": "gap",
468
+ "title": "Audio Control"
469
+ },
470
+ {
471
+ "id": "1.4.3",
472
+ "level": "AA",
473
+ "note": "No semantic rule defines minimum text contrast.",
474
+ "semantic_ids": [],
475
+ "status": "gap",
476
+ "title": "Contrast (Minimum)"
477
+ },
478
+ {
479
+ "id": "1.4.4",
480
+ "level": "AA",
481
+ "note": "No semantic rule defines text resizing behavior.",
482
+ "semantic_ids": [],
483
+ "status": "gap",
484
+ "title": "Resize Text"
485
+ },
486
+ {
487
+ "id": "1.4.5",
488
+ "level": "AA",
489
+ "note": "Text alternatives do not replace a rule limiting images of text.",
490
+ "semantic_ids": [],
491
+ "status": "gap",
492
+ "title": "Images of Text"
493
+ },
494
+ {
495
+ "id": "1.4.10",
496
+ "level": "AA",
497
+ "note": "No semantic rule defines responsive reflow requirements.",
498
+ "semantic_ids": [],
499
+ "status": "gap",
500
+ "title": "Reflow"
501
+ },
502
+ {
503
+ "id": "1.4.11",
504
+ "level": "AA",
505
+ "note": "No semantic rule defines contrast for controls, states, or graphical objects.",
506
+ "semantic_ids": [],
507
+ "status": "gap",
508
+ "title": "Non-text Contrast"
509
+ },
510
+ {
511
+ "id": "1.4.12",
512
+ "level": "AA",
513
+ "note": "No semantic rule protects content under user-adjusted text spacing.",
514
+ "semantic_ids": [],
515
+ "status": "gap",
516
+ "title": "Text Spacing"
517
+ },
518
+ {
519
+ "id": "1.4.13",
520
+ "level": "AA",
521
+ "note": "Pattern behavior exists for tooltips, but no semantic rule covers dismissibility, hoverability, and persistence together.",
522
+ "semantic_ids": [],
523
+ "status": "gap",
524
+ "title": "Content on Hover or Focus"
525
+ },
526
+ {
527
+ "id": "2.1.1",
528
+ "level": "A",
529
+ "semantic_ids": [
530
+ "semantics.keyboard"
531
+ ],
532
+ "status": "covered",
533
+ "title": "Keyboard"
534
+ },
535
+ {
536
+ "id": "2.1.2",
537
+ "level": "A",
538
+ "semantic_ids": [
539
+ "semantics.keyboard"
540
+ ],
541
+ "status": "covered",
542
+ "title": "No Keyboard Trap"
543
+ },
544
+ {
545
+ "id": "2.1.4",
546
+ "level": "A",
547
+ "note": "Keyboard operability does not define shortcut remapping or deactivation.",
548
+ "semantic_ids": [],
549
+ "status": "gap",
550
+ "title": "Character Key Shortcuts"
551
+ },
552
+ {
553
+ "id": "2.2.1",
554
+ "level": "A",
555
+ "note": "No semantic rule encodes timing adjustment and its exceptions.",
556
+ "semantic_ids": [],
557
+ "status": "gap",
558
+ "title": "Timing Adjustable"
559
+ },
560
+ {
561
+ "id": "2.2.2",
562
+ "level": "A",
563
+ "semantic_ids": [
564
+ "semantics.motion-control"
565
+ ],
566
+ "status": "covered",
567
+ "title": "Pause, Stop, Hide"
568
+ },
569
+ {
570
+ "id": "2.3.1",
571
+ "level": "A",
572
+ "note": "No semantic rule limits flashing content.",
573
+ "semantic_ids": [],
574
+ "status": "gap",
575
+ "title": "Three Flashes or Below Threshold"
576
+ },
577
+ {
578
+ "id": "2.4.1",
579
+ "level": "A",
580
+ "note": "Landmarks alone do not establish a required bypass mechanism.",
581
+ "semantic_ids": [],
582
+ "status": "gap",
583
+ "title": "Bypass Blocks"
584
+ },
585
+ {
586
+ "id": "2.4.2",
587
+ "level": "A",
588
+ "note": "No semantic rule requires descriptive page titles.",
589
+ "semantic_ids": [],
590
+ "status": "gap",
591
+ "title": "Page Titled"
592
+ },
593
+ {
594
+ "id": "2.4.3",
595
+ "level": "A",
596
+ "note": "Pattern focus lifecycles do not establish document-wide focus order.",
597
+ "semantic_ids": [],
598
+ "status": "gap",
599
+ "title": "Focus Order"
600
+ },
601
+ {
602
+ "id": "2.4.4",
603
+ "level": "A",
604
+ "note": "No semantic rule explicitly defines contextual link purpose.",
605
+ "semantic_ids": [],
606
+ "status": "gap",
607
+ "title": "Link Purpose (In Context)"
608
+ },
609
+ {
610
+ "id": "2.4.5",
611
+ "level": "AA",
612
+ "note": "No semantic rule requires multiple ways to locate pages.",
613
+ "semantic_ids": [],
614
+ "status": "gap",
615
+ "title": "Multiple Ways"
616
+ },
617
+ {
618
+ "id": "2.4.6",
619
+ "level": "AA",
620
+ "note": "Heading structure is covered, but a unified descriptive-purpose rule for all headings and labels is absent.",
621
+ "semantic_ids": [
622
+ "semantics.headings"
623
+ ],
624
+ "status": "partial",
625
+ "title": "Headings and Labels"
626
+ },
627
+ {
628
+ "id": "2.4.7",
629
+ "level": "AA",
630
+ "semantic_ids": [
631
+ "semantics.focus.visible"
632
+ ],
633
+ "status": "covered",
634
+ "title": "Focus Visible"
635
+ },
636
+ {
637
+ "id": "2.4.11",
638
+ "level": "AA",
639
+ "semantic_ids": [
640
+ "semantics.focus.visible"
641
+ ],
642
+ "status": "covered",
643
+ "title": "Focus Not Obscured (Minimum)"
644
+ },
645
+ {
646
+ "id": "2.5.1",
647
+ "level": "A",
648
+ "note": "Keyboard operation does not guarantee a single-pointer alternative to multipoint or path-based gestures.",
649
+ "semantic_ids": [],
650
+ "status": "gap",
651
+ "title": "Pointer Gestures"
652
+ },
653
+ {
654
+ "id": "2.5.2",
655
+ "level": "A",
656
+ "note": "No semantic rule defines down-event cancellation behavior.",
657
+ "semantic_ids": [],
658
+ "status": "gap",
659
+ "title": "Pointer Cancellation"
660
+ },
661
+ {
662
+ "id": "2.5.3",
663
+ "level": "A",
664
+ "semantic_ids": [
665
+ "semantics.accessible-name"
666
+ ],
667
+ "status": "covered",
668
+ "title": "Label in Name"
669
+ },
670
+ {
671
+ "id": "2.5.4",
672
+ "level": "A",
673
+ "note": "No semantic rule addresses device or user motion actuation.",
674
+ "semantic_ids": [],
675
+ "status": "gap",
676
+ "title": "Motion Actuation"
677
+ },
678
+ {
679
+ "id": "2.5.7",
680
+ "level": "AA",
681
+ "semantic_ids": [
682
+ "semantics.dragging-alternative"
683
+ ],
684
+ "status": "covered",
685
+ "title": "Dragging Movements"
686
+ },
687
+ {
688
+ "id": "2.5.8",
689
+ "level": "AA",
690
+ "semantic_ids": [
691
+ "semantics.target-size"
692
+ ],
693
+ "status": "covered",
694
+ "title": "Target Size (Minimum)"
695
+ },
696
+ {
697
+ "id": "3.1.1",
698
+ "level": "A",
699
+ "note": "No semantic rule explicitly requires the default page language.",
700
+ "semantic_ids": [],
701
+ "status": "gap",
702
+ "title": "Language of Page"
703
+ },
704
+ {
705
+ "id": "3.1.2",
706
+ "level": "AA",
707
+ "note": "No semantic rule explicitly identifies changes in human language.",
708
+ "semantic_ids": [],
709
+ "status": "gap",
710
+ "title": "Language of Parts"
711
+ },
712
+ {
713
+ "id": "3.2.1",
714
+ "level": "A",
715
+ "note": "No semantic rule prohibits unexpected context changes on focus.",
716
+ "semantic_ids": [],
717
+ "status": "gap",
718
+ "title": "On Focus"
719
+ },
720
+ {
721
+ "id": "3.2.2",
722
+ "level": "A",
723
+ "note": "No semantic rule prohibits unexpected context changes on input.",
724
+ "semantic_ids": [],
725
+ "status": "gap",
726
+ "title": "On Input"
727
+ },
728
+ {
729
+ "id": "3.2.3",
730
+ "level": "AA",
731
+ "note": "Landmarks do not establish consistent repeated navigation order.",
732
+ "semantic_ids": [],
733
+ "status": "gap",
734
+ "title": "Consistent Navigation"
735
+ },
736
+ {
737
+ "id": "3.2.4",
738
+ "level": "AA",
739
+ "note": "No semantic rule requires consistent identification of repeated components.",
740
+ "semantic_ids": [],
741
+ "status": "gap",
742
+ "title": "Consistent Identification"
743
+ },
744
+ {
745
+ "id": "3.2.6",
746
+ "level": "A",
747
+ "semantic_ids": [
748
+ "semantics.consistent-help"
749
+ ],
750
+ "status": "covered",
751
+ "title": "Consistent Help"
752
+ },
753
+ {
754
+ "id": "3.3.1",
755
+ "level": "A",
756
+ "semantic_ids": [
757
+ "semantics.form-error"
758
+ ],
759
+ "status": "covered",
760
+ "title": "Error Identification"
761
+ },
762
+ {
763
+ "id": "3.3.2",
764
+ "level": "A",
765
+ "note": "Labels and requiredness are covered, but a dedicated rule for format and task-specific input instructions is absent.",
766
+ "semantic_ids": [
767
+ "semantics.form-label",
768
+ "semantics.form-required"
769
+ ],
770
+ "status": "partial",
771
+ "title": "Labels or Instructions"
772
+ },
773
+ {
774
+ "id": "3.3.3",
775
+ "level": "AA",
776
+ "semantic_ids": [
777
+ "semantics.form-error"
778
+ ],
779
+ "status": "covered",
780
+ "title": "Error Suggestion"
781
+ },
782
+ {
783
+ "id": "3.3.4",
784
+ "level": "AA",
785
+ "semantic_ids": [
786
+ "semantics.consequential-action"
787
+ ],
788
+ "status": "covered",
789
+ "title": "Error Prevention (Legal, Financial, Data)"
790
+ },
791
+ {
792
+ "id": "3.3.7",
793
+ "level": "A",
794
+ "semantic_ids": [
795
+ "semantics.redundant-entry"
796
+ ],
797
+ "status": "covered",
798
+ "title": "Redundant Entry"
799
+ },
800
+ {
801
+ "id": "3.3.8",
802
+ "level": "AA",
803
+ "semantic_ids": [
804
+ "semantics.accessible-authentication"
805
+ ],
806
+ "status": "covered",
807
+ "title": "Accessible Authentication (Minimum)"
808
+ },
809
+ {
810
+ "id": "4.1.2",
811
+ "level": "A",
812
+ "semantic_ids": [
813
+ "semantics.accessible-name",
814
+ "semantics.expanded-state",
815
+ "semantics.name-role-value",
816
+ "semantics.native-dialog",
817
+ "semantics.roles-states-properties",
818
+ "semantics.selected-state"
819
+ ],
820
+ "status": "covered",
821
+ "title": "Name, Role, Value"
822
+ },
823
+ {
824
+ "id": "4.1.3",
825
+ "level": "AA",
826
+ "semantic_ids": [
827
+ "semantics.alert",
828
+ "semantics.live-status"
829
+ ],
830
+ "status": "covered",
831
+ "title": "Status Messages"
832
+ }
833
+ ],
834
+ "deferred_patterns": [
835
+ {
836
+ "id": "alert-dialog",
837
+ "reason": "Deferred until dialog purpose distinguishes urgent confirmation or attention from a general modal dialog."
838
+ },
839
+ {
840
+ "id": "grid",
841
+ "reason": "Deferred until a static-versus-interactive grid discriminator and keyboard interaction model are defined."
842
+ },
843
+ {
844
+ "id": "switch",
845
+ "reason": "Deferred until a binary toggle model distinguishes switch behavior from a generic form field."
846
+ },
847
+ {
848
+ "id": "toolbar",
849
+ "reason": "Deferred until control-group behavior and its focus-management model are defined."
850
+ },
851
+ {
852
+ "id": "treegrid",
853
+ "reason": "Deferred until static-versus-interactive grid selection and the hierarchical tree interaction model are defined."
854
+ }
855
+ ],
856
+ "version": 1
201
857
  }
202
858
  }