@verndale/accessibility-standards 1.0.0 → 2.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 (124) hide show
  1. package/OPERATING.md +2 -0
  2. package/README.md +4 -0
  3. package/bin/accessibility-standards.mjs +1 -1
  4. package/dist/manifest.json +39 -21
  5. package/dist/profiles/ai-orchestration/coverage-manifest.json +109 -2
  6. package/dist/profiles/ai-orchestration/implementation/accessibility.md +334 -0
  7. package/dist/profiles/ai-orchestration/pattern-contracts.json +125 -39
  8. package/dist/profiles/ai-orchestration/patterns/accordion.md +9 -0
  9. package/dist/profiles/ai-orchestration/patterns/alert.md +9 -0
  10. package/dist/profiles/ai-orchestration/patterns/carousel.md +9 -0
  11. package/dist/profiles/ai-orchestration/patterns/combobox.md +9 -0
  12. package/dist/profiles/ai-orchestration/patterns/consequential-submission.md +9 -0
  13. package/dist/profiles/ai-orchestration/patterns/dialog.md +9 -0
  14. package/dist/profiles/ai-orchestration/patterns/disclosure.md +9 -0
  15. package/dist/profiles/ai-orchestration/patterns/dynamic-status.md +9 -0
  16. package/dist/profiles/ai-orchestration/patterns/field.md +9 -0
  17. package/dist/profiles/ai-orchestration/patterns/image.md +9 -0
  18. package/dist/profiles/ai-orchestration/patterns/listbox.md +9 -0
  19. package/dist/profiles/ai-orchestration/patterns/media-player.md +9 -0
  20. package/dist/profiles/ai-orchestration/patterns/menu-button.md +9 -0
  21. package/dist/profiles/ai-orchestration/patterns/pagination.md +9 -0
  22. package/dist/profiles/ai-orchestration/patterns/popover.md +9 -0
  23. package/dist/profiles/ai-orchestration/patterns/progress.md +9 -0
  24. package/dist/profiles/ai-orchestration/patterns/tabs.md +9 -0
  25. package/dist/profiles/ai-orchestration/patterns/tooltip.md +9 -0
  26. package/dist/profiles/ai-orchestration/patterns/validation.md +9 -0
  27. package/dist/profiles/ai-orchestration/review/accessibility.md +8 -1
  28. package/dist/profiles/ai-orchestration/semantics/accessible-name.md +1 -0
  29. package/dist/profiles/ai-orchestration/semantics/alert.md +1 -0
  30. package/dist/profiles/ai-orchestration/semantics/consequential-action.md +1 -0
  31. package/dist/profiles/ai-orchestration/semantics/data-table.md +1 -0
  32. package/dist/profiles/ai-orchestration/semantics/expanded-state.md +1 -0
  33. package/dist/profiles/ai-orchestration/semantics/focus.initial.md +1 -0
  34. package/dist/profiles/ai-orchestration/semantics/focus.return.md +1 -0
  35. package/dist/profiles/ai-orchestration/semantics/focus.visible.md +1 -0
  36. package/dist/profiles/ai-orchestration/semantics/form-error.md +1 -0
  37. package/dist/profiles/ai-orchestration/semantics/form-label.md +1 -0
  38. package/dist/profiles/ai-orchestration/semantics/form-required.md +1 -0
  39. package/dist/profiles/ai-orchestration/semantics/headings.md +1 -0
  40. package/dist/profiles/ai-orchestration/semantics/keyboard.escape.md +1 -0
  41. package/dist/profiles/ai-orchestration/semantics/keyboard.md +1 -0
  42. package/dist/profiles/ai-orchestration/semantics/landmarks.md +1 -0
  43. package/dist/profiles/ai-orchestration/semantics/live-status.md +1 -0
  44. package/dist/profiles/ai-orchestration/semantics/media-alternatives.md +1 -0
  45. package/dist/profiles/ai-orchestration/semantics/motion-control.md +1 -0
  46. package/dist/profiles/ai-orchestration/semantics/name-role-value.md +1 -0
  47. package/dist/profiles/ai-orchestration/semantics/native-dialog.md +1 -0
  48. package/dist/profiles/ai-orchestration/semantics/native-elements.md +1 -0
  49. package/dist/profiles/ai-orchestration/semantics/non-text-alternative.md +1 -0
  50. package/dist/profiles/ai-orchestration/semantics/roles-states-properties.md +1 -0
  51. package/dist/profiles/ai-orchestration/semantics/selected-state.md +1 -0
  52. package/dist/profiles/ai-orchestration/semantics/target-size.md +1 -0
  53. package/dist/profiles/ai-orchestration/semantics.json +48 -1
  54. package/dist/profiles/ai-orchestration/testing/accessibility.md +1 -1
  55. package/dist/profiles/ai-orchestration/ui-design-brain-bindings.json +856 -0
  56. package/dist/profiles/conductor/a11y-semantics.md +22 -1
  57. package/dist/profiles/conductor/accessibility-quality.md +314 -0
  58. package/dist/profiles/conductor/applicability-matrix.json +111 -28
  59. package/dist/profiles/conductor/coverage-manifest.json +109 -2
  60. package/dist/profiles/conductor/pattern-contracts.json +125 -39
  61. package/dist/profiles/conductor/patterns/accordion.json +13 -3
  62. package/dist/profiles/conductor/patterns/alert.json +13 -3
  63. package/dist/profiles/conductor/patterns/carousel.json +13 -3
  64. package/dist/profiles/conductor/patterns/combobox.json +13 -3
  65. package/dist/profiles/conductor/patterns/consequential-submission.json +13 -3
  66. package/dist/profiles/conductor/patterns/dialog.json +13 -3
  67. package/dist/profiles/conductor/patterns/disclosure.json +13 -3
  68. package/dist/profiles/conductor/patterns/dynamic-status.json +13 -3
  69. package/dist/profiles/conductor/patterns/field.json +23 -3
  70. package/dist/profiles/conductor/patterns/image.json +23 -3
  71. package/dist/profiles/conductor/patterns/listbox.json +13 -3
  72. package/dist/profiles/conductor/patterns/media-player.json +23 -3
  73. package/dist/profiles/conductor/patterns/menu-button.json +13 -3
  74. package/dist/profiles/conductor/patterns/pagination.json +13 -3
  75. package/dist/profiles/conductor/patterns/popover.json +13 -3
  76. package/dist/profiles/conductor/patterns/progress.json +13 -3
  77. package/dist/profiles/conductor/patterns/tabs.json +13 -3
  78. package/dist/profiles/conductor/patterns/tooltip.json +13 -3
  79. package/dist/profiles/conductor/patterns/validation.json +23 -3
  80. package/dist/profiles/conductor/semantics.json +48 -1
  81. package/dist/profiles/conductor/ui-design-brain-bindings.json +856 -0
  82. package/dist/projection-manifest.json +103 -78
  83. package/dist/requirements-to-implementation.md +2 -0
  84. package/lib/build-manifest.mjs +12 -6
  85. package/lib/build.mjs +19 -5
  86. package/lib/compile-applicability.mjs +131 -10
  87. package/lib/coverage.mjs +20 -0
  88. package/lib/index.mjs +1 -1
  89. package/lib/load.mjs +31 -1
  90. package/lib/provenance.mjs +49 -0
  91. package/lib/render.mjs +69 -29
  92. package/lib/sync.mjs +240 -26
  93. package/lib/validate.mjs +255 -24
  94. package/package.json +24 -11
  95. package/profiles/ai-orchestration/profile.json +1 -1
  96. package/profiles/conductor/profile.json +1 -1
  97. package/schemas/consumer-config.schema.json +1 -1
  98. package/schemas/contract.schema.json +1 -0
  99. package/schemas/manifest.schema.json +1 -1
  100. package/schemas/projection-manifest.schema.json +84 -1
  101. package/schemas/ui-design-brain-bindings.schema.json +86 -0
  102. package/src/applicability/facts.yml +29 -1
  103. package/src/applicability/matrix.yml +3 -2
  104. package/src/applicability/ui-design-brain-bindings.yml +210 -0
  105. package/src/contract.yml +1 -0
  106. package/src/patterns/disclosure/accordion.yml +1 -1
  107. package/src/patterns/disclosure/disclosure.yml +1 -1
  108. package/src/patterns/feedback/alert.yml +1 -1
  109. package/src/patterns/feedback/dynamic-status.yml +1 -1
  110. package/src/patterns/feedback/progress.yml +1 -1
  111. package/src/patterns/forms/consequential-submission.yml +1 -1
  112. package/src/patterns/forms/field.yml +1 -1
  113. package/src/patterns/forms/validation.yml +1 -1
  114. package/src/patterns/media/carousel.yml +1 -1
  115. package/src/patterns/media/image.yml +1 -1
  116. package/src/patterns/media/media-player.yml +1 -1
  117. package/src/patterns/navigation/menu-button.yml +1 -1
  118. package/src/patterns/navigation/pagination.yml +1 -1
  119. package/src/patterns/navigation/tabs.yml +1 -1
  120. package/src/patterns/overlays/dialog.yml +1 -1
  121. package/src/patterns/overlays/popover.yml +1 -1
  122. package/src/patterns/overlays/tooltip.yml +1 -1
  123. package/src/patterns/selection/combobox.yml +1 -1
  124. package/src/patterns/selection/listbox.yml +1 -1
@@ -1,6 +1,14 @@
1
1
  {
2
2
  "_generated": "GENERATED by @verndale/accessibility-standards; DO NOT EDIT",
3
- "schema_version": 1,
3
+ "_provenance": {
4
+ "package": "@verndale/accessibility-standards@2.0.0",
5
+ "profile": "ai-orchestration",
6
+ "profile_version": "2.0.0",
7
+ "profile_digest": "5865a240f47ed5756a8b7a03fddd28fd8734051b61194dd378064b764859d691",
8
+ "schema_version": 2,
9
+ "source_digest": "e4bf4272751c21e417ddd3e6c52308bf804fab097629ba843964532e7f97d9f0"
10
+ },
11
+ "schema_version": 2,
4
12
  "patterns": [
5
13
  {
6
14
  "id": "pattern.accordion",
@@ -15,8 +23,10 @@
15
23
  "semantics.focus.visible"
16
24
  ],
17
25
  "activation": {
18
- "fact": "component.pattern",
19
- "equals": "accordion"
26
+ "contains": {
27
+ "fact": "component.accessibility_pattern_ids",
28
+ "value": "pattern.accordion"
29
+ }
20
30
  },
21
31
  "scope": "Grouped disclosure sections",
22
32
  "behavior": [
@@ -51,8 +61,10 @@
51
61
  "semantics.alert"
52
62
  ],
53
63
  "activation": {
54
- "fact": "component.pattern",
55
- "equals": "alert"
64
+ "contains": {
65
+ "fact": "component.accessibility_pattern_ids",
66
+ "value": "pattern.alert"
67
+ }
56
68
  },
57
69
  "scope": "Urgent message",
58
70
  "behavior": [
@@ -85,8 +97,10 @@
85
97
  "semantics.live-status"
86
98
  ],
87
99
  "activation": {
88
- "fact": "component.pattern",
89
- "equals": "carousel"
100
+ "contains": {
101
+ "fact": "component.accessibility_pattern_ids",
102
+ "value": "pattern.carousel"
103
+ }
90
104
  },
91
105
  "scope": "Rotating content set",
92
106
  "behavior": [
@@ -126,8 +140,10 @@
126
140
  "semantics.live-status"
127
141
  ],
128
142
  "activation": {
129
- "fact": "component.pattern",
130
- "equals": "combobox"
143
+ "contains": {
144
+ "fact": "component.accessibility_pattern_ids",
145
+ "value": "pattern.combobox"
146
+ }
131
147
  },
132
148
  "scope": "Input with selectable popup",
133
149
  "behavior": [
@@ -164,8 +180,10 @@
164
180
  "semantics.keyboard"
165
181
  ],
166
182
  "activation": {
167
- "fact": "component.submission_consequence",
168
- "contains": "consequential"
183
+ "contains": {
184
+ "fact": "component.submission_consequence",
185
+ "value": "consequential"
186
+ }
169
187
  },
170
188
  "scope": "Legal, financial, destructive, or irreversible submission",
171
189
  "behavior": [
@@ -200,8 +218,10 @@
200
218
  "semantics.focus.return"
201
219
  ],
202
220
  "activation": {
203
- "fact": "component.pattern",
204
- "equals": "dialog"
221
+ "contains": {
222
+ "fact": "component.accessibility_pattern_ids",
223
+ "value": "pattern.dialog"
224
+ }
205
225
  },
206
226
  "scope": "Modal and non-modal dialogs",
207
227
  "behavior": [
@@ -242,8 +262,10 @@
242
262
  "semantics.keyboard"
243
263
  ],
244
264
  "activation": {
245
- "fact": "component.pattern",
246
- "equals": "disclosure"
265
+ "contains": {
266
+ "fact": "component.accessibility_pattern_ids",
267
+ "value": "pattern.disclosure"
268
+ }
247
269
  },
248
270
  "scope": "Show and hide supplementary content",
249
271
  "behavior": [
@@ -274,8 +296,10 @@
274
296
  "semantics.live-status"
275
297
  ],
276
298
  "activation": {
277
- "fact": "component.has_dynamic_status",
278
- "equals": true
299
+ "equals": {
300
+ "fact": "component.has_dynamic_status",
301
+ "value": true
302
+ }
279
303
  },
280
304
  "scope": "Asynchronous status message",
281
305
  "behavior": [
@@ -308,8 +332,20 @@
308
332
  "semantics.focus.visible"
309
333
  ],
310
334
  "activation": {
311
- "fact": "component.has_form_fields",
312
- "equals": true
335
+ "any": [
336
+ {
337
+ "contains": {
338
+ "fact": "component.accessibility_pattern_ids",
339
+ "value": "pattern.field"
340
+ }
341
+ },
342
+ {
343
+ "equals": {
344
+ "fact": "component.has_form_fields",
345
+ "value": true
346
+ }
347
+ }
348
+ ]
313
349
  },
314
350
  "scope": "Labeled form input",
315
351
  "behavior": [
@@ -341,8 +377,20 @@
341
377
  "semantics.non-text-alternative"
342
378
  ],
343
379
  "activation": {
344
- "fact": "content.has_non_text",
345
- "equals": true
380
+ "any": [
381
+ {
382
+ "contains": {
383
+ "fact": "component.accessibility_pattern_ids",
384
+ "value": "pattern.image"
385
+ }
386
+ },
387
+ {
388
+ "equals": {
389
+ "fact": "content.has_non_text",
390
+ "value": true
391
+ }
392
+ }
393
+ ]
346
394
  },
347
395
  "scope": "Informative, functional, complex, or decorative image",
348
396
  "behavior": [
@@ -375,8 +423,10 @@
375
423
  "semantics.focus.visible"
376
424
  ],
377
425
  "activation": {
378
- "fact": "component.pattern",
379
- "equals": "listbox"
426
+ "contains": {
427
+ "fact": "component.accessibility_pattern_ids",
428
+ "value": "pattern.listbox"
429
+ }
380
430
  },
381
431
  "scope": "Single or multi-select option list",
382
432
  "behavior": [
@@ -415,8 +465,20 @@
415
465
  "semantics.motion-control"
416
466
  ],
417
467
  "activation": {
418
- "fact": "content.has_media",
419
- "equals": true
468
+ "any": [
469
+ {
470
+ "contains": {
471
+ "fact": "component.accessibility_pattern_ids",
472
+ "value": "pattern.media-player"
473
+ }
474
+ },
475
+ {
476
+ "equals": {
477
+ "fact": "content.has_media",
478
+ "value": true
479
+ }
480
+ }
481
+ ]
420
482
  },
421
483
  "scope": "Audio or video playback",
422
484
  "behavior": [
@@ -456,8 +518,10 @@
456
518
  "semantics.focus.return"
457
519
  ],
458
520
  "activation": {
459
- "fact": "component.pattern",
460
- "equals": "menu-button"
521
+ "contains": {
522
+ "fact": "component.accessibility_pattern_ids",
523
+ "value": "pattern.menu-button"
524
+ }
461
525
  },
462
526
  "scope": "Button opening a command menu",
463
527
  "behavior": [
@@ -492,8 +556,10 @@
492
556
  "semantics.focus.visible"
493
557
  ],
494
558
  "activation": {
495
- "fact": "component.pattern",
496
- "equals": "pagination"
559
+ "contains": {
560
+ "fact": "component.accessibility_pattern_ids",
561
+ "value": "pattern.pagination"
562
+ }
497
563
  },
498
564
  "scope": "Paged result navigation",
499
565
  "behavior": [
@@ -527,8 +593,10 @@
527
593
  "semantics.focus.return"
528
594
  ],
529
595
  "activation": {
530
- "fact": "component.pattern",
531
- "equals": "popover"
596
+ "contains": {
597
+ "fact": "component.accessibility_pattern_ids",
598
+ "value": "pattern.popover"
599
+ }
532
600
  },
533
601
  "scope": "Non-modal transient surface",
534
602
  "behavior": [
@@ -561,8 +629,10 @@
561
629
  "semantics.live-status"
562
630
  ],
563
631
  "activation": {
564
- "fact": "component.pattern",
565
- "equals": "progress"
632
+ "contains": {
633
+ "fact": "component.accessibility_pattern_ids",
634
+ "value": "pattern.progress"
635
+ }
566
636
  },
567
637
  "scope": "Determinate or indeterminate progress",
568
638
  "behavior": [
@@ -596,8 +666,10 @@
596
666
  "semantics.focus.visible"
597
667
  ],
598
668
  "activation": {
599
- "fact": "component.pattern",
600
- "equals": "tabs"
669
+ "contains": {
670
+ "fact": "component.accessibility_pattern_ids",
671
+ "value": "pattern.tabs"
672
+ }
601
673
  },
602
674
  "scope": "Tabbed interfaces",
603
675
  "behavior": [
@@ -632,8 +704,10 @@
632
704
  "semantics.keyboard.escape"
633
705
  ],
634
706
  "activation": {
635
- "fact": "component.pattern",
636
- "equals": "tooltip"
707
+ "contains": {
708
+ "fact": "component.accessibility_pattern_ids",
709
+ "value": "pattern.tooltip"
710
+ }
637
711
  },
638
712
  "scope": "Supplementary description",
639
713
  "behavior": [
@@ -666,8 +740,20 @@
666
740
  "semantics.focus.initial"
667
741
  ],
668
742
  "activation": {
669
- "fact": "component.has_validation",
670
- "equals": true
743
+ "any": [
744
+ {
745
+ "contains": {
746
+ "fact": "component.accessibility_pattern_ids",
747
+ "value": "pattern.validation"
748
+ }
749
+ },
750
+ {
751
+ "equals": {
752
+ "fact": "component.has_validation",
753
+ "value": true
754
+ }
755
+ }
756
+ ]
671
757
  },
672
758
  "scope": "Client or server validation",
673
759
  "behavior": [
@@ -1,12 +1,21 @@
1
1
  <!-- GENERATED by @verndale/accessibility-standards; DO NOT EDIT -->
2
+ <!-- package: @verndale/accessibility-standards@2.0.0; profile: ai-orchestration@2.0.0; schema: 2; source-digest: e4bf4272751c21e417ddd3e6c52308bf804fab097629ba843964532e7f97d9f0; profile-digest: 5865a240f47ed5756a8b7a03fddd28fd8734051b61194dd378064b764859d691 -->
2
3
  # pattern.accordion
3
4
 
4
5
  ## pattern.accordion
5
6
 
6
7
  Requires: semantics.native-elements, semantics.accessible-name, semantics.expanded-state, semantics.keyboard, semantics.focus.visible.
7
8
 
9
+ Scope: Grouped disclosure sections.
10
+
8
11
  Behavior:
9
12
  - Toggle only the controlled panel
10
13
  - Preserve DOM and focus order
11
14
 
15
+ Product decisions: single_or_multiple_open.
16
+
17
+ Functional Spec bindings: behavior, states, keyboard.
18
+
19
+ Implementation outcomes: accordion-control, accordion-panel.
20
+
12
21
  Evidence: unit, axe, e2e, human.
@@ -1,11 +1,20 @@
1
1
  <!-- GENERATED by @verndale/accessibility-standards; DO NOT EDIT -->
2
+ <!-- package: @verndale/accessibility-standards@2.0.0; profile: ai-orchestration@2.0.0; schema: 2; source-digest: e4bf4272751c21e417ddd3e6c52308bf804fab097629ba843964532e7f97d9f0; profile-digest: 5865a240f47ed5756a8b7a03fddd28fd8734051b61194dd378064b764859d691 -->
2
3
  # pattern.alert
3
4
 
4
5
  ## pattern.alert
5
6
 
6
7
  Requires: semantics.alert.
7
8
 
9
+ Scope: Urgent message.
10
+
8
11
  Behavior:
9
12
  - Announce once without moving focus
10
13
 
14
+ Product decisions: urgency.
15
+
16
+ Functional Spec bindings: messaging.
17
+
18
+ Implementation outcomes: alert-announcement.
19
+
11
20
  Evidence: unit, human.
@@ -1,12 +1,21 @@
1
1
  <!-- GENERATED by @verndale/accessibility-standards; DO NOT EDIT -->
2
+ <!-- package: @verndale/accessibility-standards@2.0.0; profile: ai-orchestration@2.0.0; schema: 2; source-digest: e4bf4272751c21e417ddd3e6c52308bf804fab097629ba843964532e7f97d9f0; profile-digest: 5865a240f47ed5756a8b7a03fddd28fd8734051b61194dd378064b764859d691 -->
2
3
  # pattern.carousel
3
4
 
4
5
  ## pattern.carousel
5
6
 
6
7
  Requires: semantics.accessible-name, semantics.keyboard, semantics.focus.visible, semantics.motion-control, semantics.live-status.
7
8
 
9
+ Scope: Rotating content set.
10
+
8
11
  Behavior:
9
12
  - Pause rotation on interaction
10
13
  - Provide named controls and current position
11
14
 
15
+ Product decisions: auto_rotation, looping.
16
+
17
+ Functional Spec bindings: behavior, states, controls.
18
+
19
+ Implementation outcomes: carousel-controls, carousel-rotation.
20
+
12
21
  Evidence: unit, axe, e2e, human.
@@ -1,11 +1,20 @@
1
1
  <!-- GENERATED by @verndale/accessibility-standards; DO NOT EDIT -->
2
+ <!-- package: @verndale/accessibility-standards@2.0.0; profile: ai-orchestration@2.0.0; schema: 2; source-digest: e4bf4272751c21e417ddd3e6c52308bf804fab097629ba843964532e7f97d9f0; profile-digest: 5865a240f47ed5756a8b7a03fddd28fd8734051b61194dd378064b764859d691 -->
2
3
  # pattern.combobox
3
4
 
4
5
  ## pattern.combobox
5
6
 
6
7
  Requires: semantics.accessible-name, semantics.expanded-state, semantics.selected-state, semantics.keyboard, semantics.live-status.
7
8
 
9
+ Scope: Input with selectable popup.
10
+
8
11
  Behavior:
9
12
  - Keyboard controls popup, option, and input independently
10
13
 
14
+ Product decisions: editable, autocomplete, selection_commit.
15
+
16
+ Functional Spec bindings: behavior, states, keyboard.
17
+
18
+ Implementation outcomes: combobox-state-machine.
19
+
11
20
  Evidence: unit, axe, e2e, human.
@@ -1,11 +1,20 @@
1
1
  <!-- GENERATED by @verndale/accessibility-standards; DO NOT EDIT -->
2
+ <!-- package: @verndale/accessibility-standards@2.0.0; profile: ai-orchestration@2.0.0; schema: 2; source-digest: e4bf4272751c21e417ddd3e6c52308bf804fab097629ba843964532e7f97d9f0; profile-digest: 5865a240f47ed5756a8b7a03fddd28fd8734051b61194dd378064b764859d691 -->
2
3
  # pattern.consequential-submission
3
4
 
4
5
  ## pattern.consequential-submission
5
6
 
6
7
  Requires: semantics.consequential-action, semantics.form-error, semantics.keyboard.
7
8
 
9
+ Scope: Legal, financial, destructive, or irreversible submission.
10
+
8
11
  Behavior:
9
12
  - Support review, correction, confirmation, or reversal
10
13
 
14
+ Product decisions: safeguard, reversal_window.
15
+
16
+ Functional Spec bindings: submission, confirmation.
17
+
18
+ Implementation outcomes: submission-safeguard.
19
+
11
20
  Evidence: e2e, human.
@@ -1,12 +1,21 @@
1
1
  <!-- GENERATED by @verndale/accessibility-standards; DO NOT EDIT -->
2
+ <!-- package: @verndale/accessibility-standards@2.0.0; profile: ai-orchestration@2.0.0; schema: 2; source-digest: e4bf4272751c21e417ddd3e6c52308bf804fab097629ba843964532e7f97d9f0; profile-digest: 5865a240f47ed5756a8b7a03fddd28fd8734051b61194dd378064b764859d691 -->
2
3
  # pattern.dialog
3
4
 
4
5
  ## pattern.dialog
5
6
 
6
7
  Requires: semantics.native-dialog, semantics.accessible-name, semantics.keyboard.escape, semantics.focus.initial, semantics.focus.return.
7
8
 
9
+ Scope: Modal and non-modal dialogs.
10
+
8
11
  Behavior:
9
12
  - Manage initial, contained, and return focus
10
13
  - Dismiss topmost dialog with Escape
11
14
 
15
+ Product decisions: modal, initial_focus, dismissal.
16
+
17
+ Functional Spec bindings: behavior, states, focus, keyboard.
18
+
19
+ Implementation outcomes: dialog-semantics, dialog-focus-lifecycle.
20
+
12
21
  Evidence: unit, axe, e2e, human.
@@ -1,11 +1,20 @@
1
1
  <!-- GENERATED by @verndale/accessibility-standards; DO NOT EDIT -->
2
+ <!-- package: @verndale/accessibility-standards@2.0.0; profile: ai-orchestration@2.0.0; schema: 2; source-digest: e4bf4272751c21e417ddd3e6c52308bf804fab097629ba843964532e7f97d9f0; profile-digest: 5865a240f47ed5756a8b7a03fddd28fd8734051b61194dd378064b764859d691 -->
2
3
  # pattern.disclosure
3
4
 
4
5
  ## pattern.disclosure
5
6
 
6
7
  Requires: semantics.native-elements, semantics.accessible-name, semantics.expanded-state, semantics.keyboard.
7
8
 
9
+ Scope: Show and hide supplementary content.
10
+
8
11
  Behavior:
9
12
  - Control toggles one region
10
13
 
14
+ Product decisions: initial_state.
15
+
16
+ Functional Spec bindings: behavior, states.
17
+
18
+ Implementation outcomes: disclosure-control.
19
+
11
20
  Evidence: unit, axe, e2e.
@@ -1,11 +1,20 @@
1
1
  <!-- GENERATED by @verndale/accessibility-standards; DO NOT EDIT -->
2
+ <!-- package: @verndale/accessibility-standards@2.0.0; profile: ai-orchestration@2.0.0; schema: 2; source-digest: e4bf4272751c21e417ddd3e6c52308bf804fab097629ba843964532e7f97d9f0; profile-digest: 5865a240f47ed5756a8b7a03fddd28fd8734051b61194dd378064b764859d691 -->
2
3
  # pattern.dynamic-status
3
4
 
4
5
  ## pattern.dynamic-status
5
6
 
6
7
  Requires: semantics.live-status.
7
8
 
9
+ Scope: Asynchronous status message.
10
+
8
11
  Behavior:
9
12
  - Announce meaningful changes once
10
13
 
14
+ Product decisions: announcement_copy.
15
+
16
+ Functional Spec bindings: messaging, states.
17
+
18
+ Implementation outcomes: status-live-region.
19
+
11
20
  Evidence: unit, e2e, human.
@@ -1,11 +1,20 @@
1
1
  <!-- GENERATED by @verndale/accessibility-standards; DO NOT EDIT -->
2
+ <!-- package: @verndale/accessibility-standards@2.0.0; profile: ai-orchestration@2.0.0; schema: 2; source-digest: e4bf4272751c21e417ddd3e6c52308bf804fab097629ba843964532e7f97d9f0; profile-digest: 5865a240f47ed5756a8b7a03fddd28fd8734051b61194dd378064b764859d691 -->
2
3
  # pattern.field
3
4
 
4
5
  ## pattern.field
5
6
 
6
7
  Requires: semantics.form-label, semantics.form-required, semantics.focus.visible.
7
8
 
9
+ Scope: Labeled form input.
10
+
8
11
  Behavior:
9
12
  - Expose label, instructions, and requiredness before interaction
10
13
 
14
+ Product decisions: required, instructions.
15
+
16
+ Functional Spec bindings: fields, requiredness.
17
+
18
+ Implementation outcomes: field-associations.
19
+
11
20
  Evidence: unit, axe, human.
@@ -1,11 +1,20 @@
1
1
  <!-- GENERATED by @verndale/accessibility-standards; DO NOT EDIT -->
2
+ <!-- package: @verndale/accessibility-standards@2.0.0; profile: ai-orchestration@2.0.0; schema: 2; source-digest: e4bf4272751c21e417ddd3e6c52308bf804fab097629ba843964532e7f97d9f0; profile-digest: 5865a240f47ed5756a8b7a03fddd28fd8734051b61194dd378064b764859d691 -->
2
3
  # pattern.image
3
4
 
4
5
  ## pattern.image
5
6
 
6
7
  Requires: semantics.non-text-alternative.
7
8
 
9
+ Scope: Informative, functional, complex, or decorative image.
10
+
8
11
  Behavior:
9
12
  - Alternative follows image purpose
10
13
 
14
+ Product decisions: purpose, long_description.
15
+
16
+ Functional Spec bindings: content.
17
+
18
+ Implementation outcomes: image-alternative.
19
+
11
20
  Evidence: axe, human.
@@ -1,12 +1,21 @@
1
1
  <!-- GENERATED by @verndale/accessibility-standards; DO NOT EDIT -->
2
+ <!-- package: @verndale/accessibility-standards@2.0.0; profile: ai-orchestration@2.0.0; schema: 2; source-digest: e4bf4272751c21e417ddd3e6c52308bf804fab097629ba843964532e7f97d9f0; profile-digest: 5865a240f47ed5756a8b7a03fddd28fd8734051b61194dd378064b764859d691 -->
2
3
  # pattern.listbox
3
4
 
4
5
  ## pattern.listbox
5
6
 
6
7
  Requires: semantics.accessible-name, semantics.selected-state, semantics.keyboard, semantics.focus.visible.
7
8
 
9
+ Scope: Single or multi-select option list.
10
+
8
11
  Behavior:
9
12
  - Arrow keys move active option
10
13
  - Selection follows declared model
11
14
 
15
+ Product decisions: single_or_multi, selection_follows_focus.
16
+
17
+ Functional Spec bindings: behavior, states, keyboard.
18
+
19
+ Implementation outcomes: listbox-keyboard-model.
20
+
12
21
  Evidence: unit, axe, e2e, human.
@@ -1,11 +1,20 @@
1
1
  <!-- GENERATED by @verndale/accessibility-standards; DO NOT EDIT -->
2
+ <!-- package: @verndale/accessibility-standards@2.0.0; profile: ai-orchestration@2.0.0; schema: 2; source-digest: e4bf4272751c21e417ddd3e6c52308bf804fab097629ba843964532e7f97d9f0; profile-digest: 5865a240f47ed5756a8b7a03fddd28fd8734051b61194dd378064b764859d691 -->
2
3
  # pattern.media-player
3
4
 
4
5
  ## pattern.media-player
5
6
 
6
7
  Requires: semantics.media-alternatives, semantics.accessible-name, semantics.keyboard, semantics.focus.visible, semantics.motion-control.
7
8
 
9
+ Scope: Audio or video playback.
10
+
8
11
  Behavior:
9
12
  - Provide keyboard-operable named controls and required alternatives
10
13
 
14
+ Product decisions: captions, transcript, audio_description, autoplay.
15
+
16
+ Functional Spec bindings: content, controls, behavior.
17
+
18
+ Implementation outcomes: media-alternatives, media-controls.
19
+
11
20
  Evidence: axe, e2e, human.
@@ -1,11 +1,20 @@
1
1
  <!-- GENERATED by @verndale/accessibility-standards; DO NOT EDIT -->
2
+ <!-- package: @verndale/accessibility-standards@2.0.0; profile: ai-orchestration@2.0.0; schema: 2; source-digest: e4bf4272751c21e417ddd3e6c52308bf804fab097629ba843964532e7f97d9f0; profile-digest: 5865a240f47ed5756a8b7a03fddd28fd8734051b61194dd378064b764859d691 -->
2
3
  # pattern.menu-button
3
4
 
4
5
  ## pattern.menu-button
5
6
 
6
7
  Requires: semantics.accessible-name, semantics.expanded-state, semantics.keyboard, semantics.focus.initial, semantics.focus.return.
7
8
 
9
+ Scope: Button opening a command menu.
10
+
8
11
  Behavior:
9
12
  - Open and navigate menu by keyboard
10
13
 
14
+ Product decisions: focus_strategy.
15
+
16
+ Functional Spec bindings: behavior, keyboard, focus.
17
+
18
+ Implementation outcomes: menu-button-keyboard.
19
+
11
20
  Evidence: unit, e2e, human.
@@ -1,11 +1,20 @@
1
1
  <!-- GENERATED by @verndale/accessibility-standards; DO NOT EDIT -->
2
+ <!-- package: @verndale/accessibility-standards@2.0.0; profile: ai-orchestration@2.0.0; schema: 2; source-digest: e4bf4272751c21e417ddd3e6c52308bf804fab097629ba843964532e7f97d9f0; profile-digest: 5865a240f47ed5756a8b7a03fddd28fd8734051b61194dd378064b764859d691 -->
2
3
  # pattern.pagination
3
4
 
4
5
  ## pattern.pagination
5
6
 
6
7
  Requires: semantics.native-elements, semantics.accessible-name, semantics.landmarks, semantics.focus.visible.
7
8
 
9
+ Scope: Paged result navigation.
10
+
8
11
  Behavior:
9
12
  - Expose current page and named navigation
10
13
 
14
+ Product decisions: url_behavior.
15
+
16
+ Functional Spec bindings: states, navigation.
17
+
18
+ Implementation outcomes: pagination-current-page.
19
+
11
20
  Evidence: unit, axe, human.
@@ -1,11 +1,20 @@
1
1
  <!-- GENERATED by @verndale/accessibility-standards; DO NOT EDIT -->
2
+ <!-- package: @verndale/accessibility-standards@2.0.0; profile: ai-orchestration@2.0.0; schema: 2; source-digest: e4bf4272751c21e417ddd3e6c52308bf804fab097629ba843964532e7f97d9f0; profile-digest: 5865a240f47ed5756a8b7a03fddd28fd8734051b61194dd378064b764859d691 -->
2
3
  # pattern.popover
3
4
 
4
5
  ## pattern.popover
5
6
 
6
7
  Requires: semantics.native-elements, semantics.accessible-name, semantics.keyboard.escape, semantics.focus.return.
7
8
 
9
+ Scope: Non-modal transient surface.
10
+
8
11
  Behavior:
9
12
  - Dismiss without trapping focus
10
13
 
14
+ Product decisions: dismissal, focus_entry.
15
+
16
+ Functional Spec bindings: behavior, focus.
17
+
18
+ Implementation outcomes: popover-dismissal.
19
+
11
20
  Evidence: unit, e2e, human.
@@ -1,11 +1,20 @@
1
1
  <!-- GENERATED by @verndale/accessibility-standards; DO NOT EDIT -->
2
+ <!-- package: @verndale/accessibility-standards@2.0.0; profile: ai-orchestration@2.0.0; schema: 2; source-digest: e4bf4272751c21e417ddd3e6c52308bf804fab097629ba843964532e7f97d9f0; profile-digest: 5865a240f47ed5756a8b7a03fddd28fd8734051b61194dd378064b764859d691 -->
2
3
  # pattern.progress
3
4
 
4
5
  ## pattern.progress
5
6
 
6
7
  Requires: semantics.name-role-value, semantics.live-status.
7
8
 
9
+ Scope: Determinate or indeterminate progress.
10
+
8
11
  Behavior:
9
12
  - Expose value and completion changes without announcement noise
10
13
 
14
+ Product decisions: determinate.
15
+
16
+ Functional Spec bindings: states, messaging.
17
+
18
+ Implementation outcomes: progress-value.
19
+
11
20
  Evidence: unit, axe, human.
@@ -1,12 +1,21 @@
1
1
  <!-- GENERATED by @verndale/accessibility-standards; DO NOT EDIT -->
2
+ <!-- package: @verndale/accessibility-standards@2.0.0; profile: ai-orchestration@2.0.0; schema: 2; source-digest: e4bf4272751c21e417ddd3e6c52308bf804fab097629ba843964532e7f97d9f0; profile-digest: 5865a240f47ed5756a8b7a03fddd28fd8734051b61194dd378064b764859d691 -->
2
3
  # pattern.tabs
3
4
 
4
5
  ## pattern.tabs
5
6
 
6
7
  Requires: semantics.accessible-name, semantics.selected-state, semantics.keyboard, semantics.focus.visible.
7
8
 
9
+ Scope: Tabbed interfaces.
10
+
8
11
  Behavior:
9
12
  - Arrow keys move between tabs
10
13
  - Selection and activation follow the documented model
11
14
 
15
+ Product decisions: automatic_or_manual_activation.
16
+
17
+ Functional Spec bindings: behavior, states, keyboard.
18
+
19
+ Implementation outcomes: tabs-keyboard-model.
20
+
12
21
  Evidence: unit, axe, e2e, human.