@helixui/library 3.8.0 → 4.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 (250) hide show
  1. package/README.md +41 -0
  2. package/aaa-verdicts.json +2036 -0
  3. package/custom-elements.json +532 -569
  4. package/dist/components/hx-accordion/hx-accordion-item.d.ts.map +1 -1
  5. package/dist/components/hx-accordion/hx-accordion-item.styles.d.ts.map +1 -1
  6. package/dist/components/hx-accordion/index.js +1 -1
  7. package/dist/components/hx-alert/hx-alert.d.ts +0 -8
  8. package/dist/components/hx-alert/hx-alert.d.ts.map +1 -1
  9. package/dist/components/hx-alert/hx-alert.styles.d.ts.map +1 -1
  10. package/dist/components/hx-alert/index.js +1 -1
  11. package/dist/components/hx-avatar/hx-avatar.d.ts +4 -1
  12. package/dist/components/hx-avatar/hx-avatar.d.ts.map +1 -1
  13. package/dist/components/hx-avatar/hx-avatar.styles.d.ts.map +1 -1
  14. package/dist/components/hx-avatar/index.js +1 -1
  15. package/dist/components/hx-badge/hx-badge.d.ts.map +1 -1
  16. package/dist/components/hx-badge/hx-badge.styles.d.ts.map +1 -1
  17. package/dist/components/hx-badge/index.js +1 -1
  18. package/dist/components/hx-banner/hx-banner.d.ts +0 -8
  19. package/dist/components/hx-banner/hx-banner.d.ts.map +1 -1
  20. package/dist/components/hx-banner/hx-banner.styles.d.ts.map +1 -1
  21. package/dist/components/hx-banner/index.js +1 -1
  22. package/dist/components/hx-carousel/hx-carousel.d.ts.map +1 -1
  23. package/dist/components/hx-carousel/hx-carousel.styles.d.ts.map +1 -1
  24. package/dist/components/hx-carousel/index.js +1 -1
  25. package/dist/components/hx-checkbox/hx-checkbox.d.ts.map +1 -1
  26. package/dist/components/hx-checkbox/hx-checkbox.styles.d.ts.map +1 -1
  27. package/dist/components/hx-checkbox/index.js +1 -1
  28. package/dist/components/hx-clinical-status/hx-clinical-status.d.ts +7 -9
  29. package/dist/components/hx-clinical-status/hx-clinical-status.d.ts.map +1 -1
  30. package/dist/components/hx-clinical-status/hx-clinical-status.styles.d.ts.map +1 -1
  31. package/dist/components/hx-clinical-status/index.js +1 -1
  32. package/dist/components/hx-combobox/hx-combobox.d.ts.map +1 -1
  33. package/dist/components/hx-combobox/hx-combobox.styles.d.ts.map +1 -1
  34. package/dist/components/hx-combobox/index.js +1 -1
  35. package/dist/components/hx-date-picker/hx-date-picker.d.ts.map +1 -1
  36. package/dist/components/hx-date-picker/hx-date-picker.styles.d.ts.map +1 -1
  37. package/dist/components/hx-date-picker/index.js +1 -1
  38. package/dist/components/hx-drawer/hx-drawer.d.ts.map +1 -1
  39. package/dist/components/hx-drawer/hx-drawer.styles.d.ts.map +1 -1
  40. package/dist/components/hx-drawer/index.js +1 -1
  41. package/dist/components/hx-dropdown/hx-dropdown.styles.d.ts.map +1 -1
  42. package/dist/components/hx-dropdown/index.js +1 -1
  43. package/dist/components/hx-file-upload/hx-file-upload.d.ts +28 -0
  44. package/dist/components/hx-file-upload/hx-file-upload.d.ts.map +1 -1
  45. package/dist/components/hx-file-upload/hx-file-upload.styles.d.ts.map +1 -1
  46. package/dist/components/hx-file-upload/index.js +1 -1
  47. package/dist/components/hx-help-text/hx-help-text.d.ts.map +1 -1
  48. package/dist/components/hx-help-text/hx-help-text.styles.d.ts.map +1 -1
  49. package/dist/components/hx-help-text/index.js +1 -1
  50. package/dist/components/hx-icon/hx-icon.d.ts +108 -12
  51. package/dist/components/hx-icon/hx-icon.d.ts.map +1 -1
  52. package/dist/components/hx-icon/hx-icon.styles.d.ts.map +1 -1
  53. package/dist/components/hx-icon/index.js +1 -1
  54. package/dist/components/hx-link/hx-link.d.ts.map +1 -1
  55. package/dist/components/hx-link/hx-link.styles.d.ts.map +1 -1
  56. package/dist/components/hx-link/index.js +1 -1
  57. package/dist/components/hx-menu/hx-menu-item.d.ts.map +1 -1
  58. package/dist/components/hx-menu/hx-menu-item.styles.d.ts.map +1 -1
  59. package/dist/components/hx-menu/index.js +1 -1
  60. package/dist/components/hx-nav/hx-nav.d.ts.map +1 -1
  61. package/dist/components/hx-nav/hx-nav.styles.d.ts.map +1 -1
  62. package/dist/components/hx-nav/index.js +1 -1
  63. package/dist/components/hx-number-input/hx-number-input.d.ts.map +1 -1
  64. package/dist/components/hx-number-input/hx-number-input.styles.d.ts.map +1 -1
  65. package/dist/components/hx-number-input/index.js +1 -1
  66. package/dist/components/hx-overflow-menu/hx-overflow-menu.d.ts +5 -1
  67. package/dist/components/hx-overflow-menu/hx-overflow-menu.d.ts.map +1 -1
  68. package/dist/components/hx-overflow-menu/hx-overflow-menu.styles.d.ts.map +1 -1
  69. package/dist/components/hx-overflow-menu/index.js +1 -1
  70. package/dist/components/hx-phi-field/hx-phi-field.d.ts.map +1 -1
  71. package/dist/components/hx-phi-field/hx-phi-field.styles.d.ts.map +1 -1
  72. package/dist/components/hx-phi-field/index.js +1 -1
  73. package/dist/components/hx-radio-group/hx-radio-group.d.ts.map +1 -1
  74. package/dist/components/hx-radio-group/index.js +1 -1
  75. package/dist/components/hx-rating/hx-rating.d.ts.map +1 -1
  76. package/dist/components/hx-rating/hx-rating.styles.d.ts.map +1 -1
  77. package/dist/components/hx-rating/index.js +1 -1
  78. package/dist/components/hx-side-nav/hx-nav-item.d.ts.map +1 -1
  79. package/dist/components/hx-side-nav/hx-nav-item.styles.d.ts.map +1 -1
  80. package/dist/components/hx-side-nav/hx-side-nav.d.ts.map +1 -1
  81. package/dist/components/hx-side-nav/hx-side-nav.styles.d.ts.map +1 -1
  82. package/dist/components/hx-side-nav/index.js +1 -1
  83. package/dist/components/hx-slider/hx-slider.d.ts +28 -0
  84. package/dist/components/hx-slider/hx-slider.d.ts.map +1 -1
  85. package/dist/components/hx-slider/index.js +1 -1
  86. package/dist/components/hx-split-button/hx-split-button.d.ts.map +1 -1
  87. package/dist/components/hx-split-button/hx-split-button.styles.d.ts.map +1 -1
  88. package/dist/components/hx-split-button/index.js +1 -1
  89. package/dist/components/hx-stat/hx-stat.d.ts.map +1 -1
  90. package/dist/components/hx-stat/hx-stat.styles.d.ts.map +1 -1
  91. package/dist/components/hx-stat/index.js +1 -1
  92. package/dist/components/hx-steps/hx-step.d.ts.map +1 -1
  93. package/dist/components/hx-steps/hx-step.styles.d.ts.map +1 -1
  94. package/dist/components/hx-steps/index.js +1 -1
  95. package/dist/components/hx-tag/hx-tag.d.ts.map +1 -1
  96. package/dist/components/hx-tag/hx-tag.styles.d.ts.map +1 -1
  97. package/dist/components/hx-tag/index.js +1 -1
  98. package/dist/components/hx-time-picker/hx-time-picker.d.ts.map +1 -1
  99. package/dist/components/hx-time-picker/hx-time-picker.styles.d.ts.map +1 -1
  100. package/dist/components/hx-time-picker/index.js +1 -1
  101. package/dist/components/hx-toast/hx-toast.d.ts +0 -8
  102. package/dist/components/hx-toast/hx-toast.d.ts.map +1 -1
  103. package/dist/components/hx-toast/hx-toast.styles.d.ts.map +1 -1
  104. package/dist/components/hx-toast/index.js +1 -1
  105. package/dist/components/hx-top-nav/hx-top-nav.d.ts.map +1 -1
  106. package/dist/components/hx-top-nav/hx-top-nav.styles.d.ts.map +1 -1
  107. package/dist/components/hx-top-nav/index.js +1 -1
  108. package/dist/components/hx-tree-view/hx-tree-item.d.ts.map +1 -1
  109. package/dist/components/hx-tree-view/hx-tree-item.styles.d.ts.map +1 -1
  110. package/dist/components/hx-tree-view/index.js +1 -1
  111. package/dist/css/helix-all.css +116 -54
  112. package/dist/css/helix-core.css +19 -4
  113. package/dist/css/helix-feedback.css +15 -18
  114. package/dist/css/helix-forms.css +39 -12
  115. package/dist/css/helix-media.css +6 -3
  116. package/dist/css/helix-navigation.css +16 -7
  117. package/dist/css/helix-overlay.css +10 -0
  118. package/dist/css/helix-tokens.css +3 -2
  119. package/dist/css/helix-utility.css +5 -0
  120. package/dist/css/hx-alert.css +4 -8
  121. package/dist/css/hx-avatar.css +1 -2
  122. package/dist/css/hx-badge.css +5 -0
  123. package/dist/css/hx-banner.css +4 -8
  124. package/dist/css/hx-carousel.css +6 -3
  125. package/dist/css/hx-checkbox.css +4 -9
  126. package/dist/css/hx-clinical-status.css +4 -7
  127. package/dist/css/hx-combobox.css +8 -0
  128. package/dist/css/hx-date-picker.css +5 -0
  129. package/dist/css/hx-drawer.css +5 -0
  130. package/dist/css/hx-dropdown.css +5 -0
  131. package/dist/css/hx-file-upload.css +4 -0
  132. package/dist/css/hx-help-text.css +5 -0
  133. package/dist/css/hx-icon.css +7 -0
  134. package/dist/css/hx-link.css +1 -2
  135. package/dist/css/hx-nav.css +7 -0
  136. package/dist/css/hx-number-input.css +2 -3
  137. package/dist/css/hx-overflow-menu.css +5 -0
  138. package/dist/css/hx-phi-field.css +2 -3
  139. package/dist/css/hx-rating.css +6 -0
  140. package/dist/css/hx-side-nav.css +3 -5
  141. package/dist/css/hx-split-button.css +5 -0
  142. package/dist/css/hx-stat.css +1 -2
  143. package/dist/css/hx-tag.css +5 -0
  144. package/dist/css/hx-time-picker.css +5 -0
  145. package/dist/css/hx-toast.css +6 -0
  146. package/dist/css/hx-top-nav.css +1 -2
  147. package/dist/css/index.css +1 -1
  148. package/dist/css/manifest.json +4 -1
  149. package/dist/index.js +33 -33
  150. package/dist/shared/{hx-accordion-ZVzgDzTG.js → hx-accordion-DR--Ev4t.js} +48 -54
  151. package/dist/shared/hx-accordion-DR--Ev4t.js.map +1 -0
  152. package/dist/shared/{hx-alert-Bto8-TIi.js → hx-alert-C0axS32J.js} +40 -79
  153. package/dist/shared/hx-alert-C0axS32J.js.map +1 -0
  154. package/dist/shared/{hx-avatar-C9hOmlAb.js → hx-avatar-ChAYWnK8.js} +22 -24
  155. package/dist/shared/hx-avatar-ChAYWnK8.js.map +1 -0
  156. package/dist/shared/{hx-badge-DFL35nzi.js → hx-badge-vX-1cuLA.js} +16 -11
  157. package/dist/shared/hx-badge-vX-1cuLA.js.map +1 -0
  158. package/dist/shared/{hx-banner-fpRnciIO.js → hx-banner-PbHwFNSb.js} +51 -90
  159. package/dist/shared/hx-banner-PbHwFNSb.js.map +1 -0
  160. package/dist/shared/{hx-carousel-item-z1Lc24op.js → hx-carousel-item-BVIKgQ4i.js} +72 -102
  161. package/dist/shared/hx-carousel-item-BVIKgQ4i.js.map +1 -0
  162. package/dist/shared/{hx-checkbox-DcgyGS9V.js → hx-checkbox-DDSXXhps.js} +31 -38
  163. package/dist/shared/hx-checkbox-DDSXXhps.js.map +1 -0
  164. package/dist/shared/{hx-clinical-status-D3XQIOqX.js → hx-clinical-status-ZSVEc3Qg.js} +68 -87
  165. package/dist/shared/hx-clinical-status-ZSVEc3Qg.js.map +1 -0
  166. package/dist/shared/{hx-combobox-NgJaLbs2.js → hx-combobox-Be-mqOv4.js} +35 -45
  167. package/dist/shared/hx-combobox-Be-mqOv4.js.map +1 -0
  168. package/dist/shared/{hx-date-picker-0PtEav0K.js → hx-date-picker-CziP3Hm1.js} +15 -22
  169. package/dist/shared/hx-date-picker-CziP3Hm1.js.map +1 -0
  170. package/dist/shared/{hx-drawer-CM_upadk.js → hx-drawer-BlU2oX8-.js} +32 -36
  171. package/dist/shared/hx-drawer-BlU2oX8-.js.map +1 -0
  172. package/dist/shared/{hx-dropdown-xHwTJecv.js → hx-dropdown-DREqpIpm.js} +16 -11
  173. package/dist/shared/hx-dropdown-DREqpIpm.js.map +1 -0
  174. package/dist/shared/{hx-file-upload-D3rKROK5.js → hx-file-upload-CU5QGZSP.js} +137 -80
  175. package/dist/shared/hx-file-upload-CU5QGZSP.js.map +1 -0
  176. package/dist/shared/hx-help-text-CNaZ82LT.js +137 -0
  177. package/dist/shared/hx-help-text-CNaZ82LT.js.map +1 -0
  178. package/dist/shared/hx-icon-bxz9eB9a.js +386 -0
  179. package/dist/shared/hx-icon-bxz9eB9a.js.map +1 -0
  180. package/dist/shared/{hx-link-CMnZRUtQ.js → hx-link-BURSdYLp.js} +19 -26
  181. package/dist/shared/hx-link-BURSdYLp.js.map +1 -0
  182. package/dist/shared/{hx-menu-divider-A6Guuzi_.js → hx-menu-divider-g0grbWV9.js} +19 -31
  183. package/dist/shared/hx-menu-divider-g0grbWV9.js.map +1 -0
  184. package/dist/shared/{hx-nav-ChMTfn7o.js → hx-nav-GTsAZGOx.js} +46 -59
  185. package/dist/shared/hx-nav-GTsAZGOx.js.map +1 -0
  186. package/dist/shared/{hx-nav-item-ClN17f1y.js → hx-nav-item-CxE7Mp3M.js} +62 -64
  187. package/dist/shared/hx-nav-item-CxE7Mp3M.js.map +1 -0
  188. package/dist/shared/{hx-number-input-MggsT7F0.js → hx-number-input-Bvyc9kOi.js} +48 -53
  189. package/dist/shared/hx-number-input-Bvyc9kOi.js.map +1 -0
  190. package/dist/shared/{hx-overflow-menu-DFjJAziP.js → hx-overflow-menu-LrTteeR1.js} +32 -39
  191. package/dist/shared/hx-overflow-menu-LrTteeR1.js.map +1 -0
  192. package/dist/shared/{hx-phi-field-C19oxlrr.js → hx-phi-field-sZt_rYIL.js} +46 -66
  193. package/dist/shared/hx-phi-field-sZt_rYIL.js.map +1 -0
  194. package/dist/shared/{hx-radio-BY4zpwdh.js → hx-radio-BD_c9NJy.js} +51 -56
  195. package/dist/shared/{hx-radio-BY4zpwdh.js.map → hx-radio-BD_c9NJy.js.map} +1 -1
  196. package/dist/shared/{hx-rating-C3QP53k9.js → hx-rating-BGK4AxvI.js} +45 -71
  197. package/dist/shared/hx-rating-BGK4AxvI.js.map +1 -0
  198. package/dist/shared/{hx-slider-Blmv_rwS.js → hx-slider-CkOk5BCY.js} +83 -23
  199. package/dist/shared/{hx-slider-Blmv_rwS.js.map → hx-slider-CkOk5BCY.js.map} +1 -1
  200. package/dist/shared/{hx-split-button-CdNz1XAu.js → hx-split-button-Bg9FHrFK.js} +12 -16
  201. package/dist/shared/hx-split-button-Bg9FHrFK.js.map +1 -0
  202. package/dist/shared/{hx-stat-Gtw_SpK8.js → hx-stat-wKxbyep6.js} +22 -55
  203. package/dist/shared/hx-stat-wKxbyep6.js.map +1 -0
  204. package/dist/shared/{hx-step-CUzliIK_.js → hx-step-CyGQAuiB.js} +5 -25
  205. package/dist/shared/hx-step-CyGQAuiB.js.map +1 -0
  206. package/dist/shared/{hx-tag-C5aCUpVi.js → hx-tag-BqO6HY6V.js} +26 -21
  207. package/dist/shared/hx-tag-BqO6HY6V.js.map +1 -0
  208. package/dist/shared/{hx-time-picker-DfJkBwcX.js → hx-time-picker-if5Cl0Ei.js} +32 -38
  209. package/dist/shared/hx-time-picker-if5Cl0Ei.js.map +1 -0
  210. package/dist/shared/{hx-top-nav-CsTxOtVI.js → hx-top-nav-vP6oDWMV.js} +24 -38
  211. package/dist/shared/hx-top-nav-vP6oDWMV.js.map +1 -0
  212. package/dist/shared/{hx-tree-item-CXyspGxI.js → hx-tree-item-D8hwKd5m.js} +54 -57
  213. package/dist/shared/hx-tree-item-D8hwKd5m.js.map +1 -0
  214. package/dist/shared/{toast-factory-Dht3pVsw.js → toast-factory-DgnbFxVs.js} +127 -153
  215. package/dist/shared/toast-factory-DgnbFxVs.js.map +1 -0
  216. package/figma-inventory.json +283 -304
  217. package/package.json +8 -4
  218. package/dist/shared/hx-accordion-ZVzgDzTG.js.map +0 -1
  219. package/dist/shared/hx-alert-Bto8-TIi.js.map +0 -1
  220. package/dist/shared/hx-avatar-C9hOmlAb.js.map +0 -1
  221. package/dist/shared/hx-badge-DFL35nzi.js.map +0 -1
  222. package/dist/shared/hx-banner-fpRnciIO.js.map +0 -1
  223. package/dist/shared/hx-carousel-item-z1Lc24op.js.map +0 -1
  224. package/dist/shared/hx-checkbox-DcgyGS9V.js.map +0 -1
  225. package/dist/shared/hx-clinical-status-D3XQIOqX.js.map +0 -1
  226. package/dist/shared/hx-combobox-NgJaLbs2.js.map +0 -1
  227. package/dist/shared/hx-date-picker-0PtEav0K.js.map +0 -1
  228. package/dist/shared/hx-drawer-CM_upadk.js.map +0 -1
  229. package/dist/shared/hx-dropdown-xHwTJecv.js.map +0 -1
  230. package/dist/shared/hx-file-upload-D3rKROK5.js.map +0 -1
  231. package/dist/shared/hx-help-text-Xb2Yr8x2.js +0 -156
  232. package/dist/shared/hx-help-text-Xb2Yr8x2.js.map +0 -1
  233. package/dist/shared/hx-icon-fuVm4-bk.js +0 -283
  234. package/dist/shared/hx-icon-fuVm4-bk.js.map +0 -1
  235. package/dist/shared/hx-link-CMnZRUtQ.js.map +0 -1
  236. package/dist/shared/hx-menu-divider-A6Guuzi_.js.map +0 -1
  237. package/dist/shared/hx-nav-ChMTfn7o.js.map +0 -1
  238. package/dist/shared/hx-nav-item-ClN17f1y.js.map +0 -1
  239. package/dist/shared/hx-number-input-MggsT7F0.js.map +0 -1
  240. package/dist/shared/hx-overflow-menu-DFjJAziP.js.map +0 -1
  241. package/dist/shared/hx-phi-field-C19oxlrr.js.map +0 -1
  242. package/dist/shared/hx-rating-C3QP53k9.js.map +0 -1
  243. package/dist/shared/hx-split-button-CdNz1XAu.js.map +0 -1
  244. package/dist/shared/hx-stat-Gtw_SpK8.js.map +0 -1
  245. package/dist/shared/hx-step-CUzliIK_.js.map +0 -1
  246. package/dist/shared/hx-tag-C5aCUpVi.js.map +0 -1
  247. package/dist/shared/hx-time-picker-DfJkBwcX.js.map +0 -1
  248. package/dist/shared/hx-top-nav-CsTxOtVI.js.map +0 -1
  249. package/dist/shared/hx-tree-item-CXyspGxI.js.map +0 -1
  250. package/dist/shared/toast-factory-Dht3pVsw.js.map +0 -1
@@ -0,0 +1,2036 @@
1
+ {
2
+ "generatedAt": "2026-05-10T20:28:11.924Z",
3
+ "sourceAuditRunAt": "2026-05-10T20:26:54.143Z",
4
+ "standards": "WCAG 2.2 AAA",
5
+ "standardsSource": "https://www.w3.org/TR/WCAG22/",
6
+ "components": {
7
+ "hx-action-bar": {
8
+ "1.4.9": {
9
+ "verdict": "Supports",
10
+ "evidence": "No raster <img> tags rendered in component output."
11
+ },
12
+ "2.1.3": {
13
+ "verdict": "Supports",
14
+ "evidence": "Component uses a native focusable element (<button>, <a>, <input>, <textarea>, <select>) for primary interaction."
15
+ },
16
+ "2.3.3": {
17
+ "verdict": "Not Applicable",
18
+ "evidence": "No transition or animation declarations in component styles."
19
+ },
20
+ "3.2.5": {
21
+ "verdict": "Supports",
22
+ "evidence": "No auto-submit on focus, no location mutation in focus/input handlers."
23
+ },
24
+ "3.3.6": {
25
+ "verdict": "Not Applicable",
26
+ "evidence": "Component is not form-associated."
27
+ },
28
+ "forced-colors": {
29
+ "verdict": "Supports",
30
+ "evidence": "@media (forced-colors: active) guard present; system colors used (CanvasText / ButtonText / etc.)"
31
+ },
32
+ "apg-keyboard": {
33
+ "verdict": "Supports",
34
+ "evidence": "@aria-pattern=\"toolbar\" — all required key groups referenced (ArrowLeft|ArrowRight)."
35
+ },
36
+ "1.4.6": {
37
+ "verdict": "Supports",
38
+ "evidence": "21.00:1 (fg rgb(0, 0, 0), bg rgb(255, 255, 255)); axe color-contrast-enhanced sweep: 0 violations across full story DOM."
39
+ },
40
+ "2.4.12": {
41
+ "verdict": "Supports",
42
+ "evidence": "No element covers the focused target center."
43
+ },
44
+ "2.4.13": {
45
+ "verdict": "Supports",
46
+ "evidence": "computed outline 2px solid rgb(15, 112, 120) (keyboard-focused via Tab×1 on <button> (shadow descendant of <hx-action-bar> — focus ring rendered on inner part))"
47
+ },
48
+ "2.5.5": {
49
+ "verdict": "Supports",
50
+ "evidence": "target=hx-action-bar 1184.0x47.0 px"
51
+ }
52
+ },
53
+ "hx-alert": {
54
+ "1.4.9": {
55
+ "verdict": "Supports",
56
+ "evidence": "No raster <img> tags rendered in component output."
57
+ },
58
+ "2.1.3": {
59
+ "verdict": "Supports",
60
+ "evidence": "Component uses a native focusable element (<button>, <a>, <input>, <textarea>, <select>) for primary interaction."
61
+ },
62
+ "2.3.3": {
63
+ "verdict": "Supports",
64
+ "evidence": "Component has 1 transition + 0 animation declaration(s) and at least one @media (prefers-reduced-motion: reduce) guard."
65
+ },
66
+ "3.2.5": {
67
+ "verdict": "Supports",
68
+ "evidence": "No auto-submit on focus, no location mutation in focus/input handlers."
69
+ },
70
+ "3.3.6": {
71
+ "verdict": "Not Applicable",
72
+ "evidence": "Component is not form-associated."
73
+ },
74
+ "forced-colors": {
75
+ "verdict": "Supports",
76
+ "evidence": "@media (forced-colors: active) guard present; system colors used (CanvasText / ButtonText / etc.)"
77
+ },
78
+ "apg-keyboard": {
79
+ "verdict": "Supports",
80
+ "evidence": "@aria-pattern=\"alert\" requires no specific key set (alert / textbox)."
81
+ },
82
+ "1.4.6": {
83
+ "verdict": "Not Applicable",
84
+ "evidence": "Component target (hx-alert) is transparent (bg=rgba(0, 0, 0, 0)); foreground contrast inherits the consumer page background."
85
+ },
86
+ "2.4.12": {
87
+ "verdict": "Supports",
88
+ "evidence": "No element covers the focused target center."
89
+ },
90
+ "2.4.13": {
91
+ "verdict": "Not Applicable",
92
+ "evidence": "@aria-pattern=\"alert\" is a non-interactive role per WAI-ARIA 1.2; the host cannot receive keyboard focus by design, so WCAG 2.4.13 Focus Appearance does not apply."
93
+ },
94
+ "2.5.5": {
95
+ "verdict": "Not Applicable",
96
+ "evidence": "@aria-pattern=\"alert\" is a non-interactive role; WCAG 2.5.5 Target Size only applies to pointer-input targets."
97
+ }
98
+ },
99
+ "hx-banner": {
100
+ "1.4.9": {
101
+ "verdict": "Supports",
102
+ "evidence": "No raster <img> tags rendered in component output."
103
+ },
104
+ "2.1.3": {
105
+ "verdict": "Supports",
106
+ "evidence": "Component uses a native focusable element (<button>, <a>, <input>, <textarea>, <select>) for primary interaction."
107
+ },
108
+ "2.3.3": {
109
+ "verdict": "Supports",
110
+ "evidence": "Component has 1 transition + 0 animation declaration(s) and at least one @media (prefers-reduced-motion: reduce) guard."
111
+ },
112
+ "3.2.5": {
113
+ "verdict": "Supports",
114
+ "evidence": "No auto-submit on focus, no location mutation in focus/input handlers."
115
+ },
116
+ "3.3.6": {
117
+ "verdict": "Not Applicable",
118
+ "evidence": "Component is not form-associated."
119
+ },
120
+ "forced-colors": {
121
+ "verdict": "Supports",
122
+ "evidence": "@media (forced-colors: active) guard present; system colors used (CanvasText / ButtonText / etc.)"
123
+ },
124
+ "apg-keyboard": {
125
+ "verdict": "Supports",
126
+ "evidence": "@aria-pattern=\"alert\" requires no specific key set (alert / textbox)."
127
+ },
128
+ "1.4.6": {
129
+ "verdict": "Not Applicable",
130
+ "evidence": "Component target (hx-banner) is transparent (bg=rgba(0, 0, 0, 0)); foreground contrast inherits the consumer page background."
131
+ },
132
+ "2.4.12": {
133
+ "verdict": "Supports",
134
+ "evidence": "No element covers the focused target center."
135
+ },
136
+ "2.4.13": {
137
+ "verdict": "Not Applicable",
138
+ "evidence": "@aria-pattern=\"alert\" is a non-interactive role per WAI-ARIA 1.2; the host cannot receive keyboard focus by design, so WCAG 2.4.13 Focus Appearance does not apply."
139
+ },
140
+ "2.5.5": {
141
+ "verdict": "Not Applicable",
142
+ "evidence": "@aria-pattern=\"alert\" is a non-interactive role; WCAG 2.5.5 Target Size only applies to pointer-input targets."
143
+ }
144
+ },
145
+ "hx-breadcrumb": {
146
+ "1.4.9": {
147
+ "verdict": "Supports",
148
+ "evidence": "No raster <img> tags rendered in component output."
149
+ },
150
+ "2.1.3": {
151
+ "verdict": "Supports",
152
+ "evidence": "Component uses a native focusable element (<button>, <a>, <input>, <textarea>, <select>) for primary interaction."
153
+ },
154
+ "2.3.3": {
155
+ "verdict": "Not Applicable",
156
+ "evidence": "No transition or animation declarations in component styles."
157
+ },
158
+ "3.2.5": {
159
+ "verdict": "Supports",
160
+ "evidence": "No auto-submit on focus, no location mutation in focus/input handlers."
161
+ },
162
+ "3.3.6": {
163
+ "verdict": "Not Applicable",
164
+ "evidence": "Component is not form-associated."
165
+ },
166
+ "forced-colors": {
167
+ "verdict": "Not Applicable",
168
+ "evidence": "Component styles set no color/background/border/shadow declarations."
169
+ },
170
+ "apg-keyboard": {
171
+ "verdict": "Supports",
172
+ "evidence": "@aria-pattern=\"breadcrumb\" requires no specific key set (alert / textbox)."
173
+ },
174
+ "1.4.6": {
175
+ "verdict": "Not Applicable",
176
+ "evidence": "Component target (hx-breadcrumb) is transparent (bg=rgba(0, 0, 0, 0)); foreground contrast inherits the consumer page background."
177
+ },
178
+ "2.4.12": {
179
+ "verdict": "Supports",
180
+ "evidence": "No element covers the focused target center."
181
+ },
182
+ "2.4.13": {
183
+ "verdict": "Supports",
184
+ "evidence": "computed outline 2px solid rgb(15, 112, 120) (keyboard-focused via Tab×1 on <a> (shadow descendant of <hx-breadcrumb> — focus ring rendered on inner part))"
185
+ },
186
+ "2.5.5": {
187
+ "verdict": "Supports",
188
+ "evidence": "target=hx-breadcrumb 1184.0x60.0 px"
189
+ }
190
+ },
191
+ "hx-button": {
192
+ "1.4.9": {
193
+ "verdict": "Supports",
194
+ "evidence": "No raster <img> tags rendered in component output."
195
+ },
196
+ "2.1.3": {
197
+ "verdict": "Supports",
198
+ "evidence": "Component uses a native focusable element (<button>, <a>, <input>, <textarea>, <select>) for primary interaction."
199
+ },
200
+ "2.3.3": {
201
+ "verdict": "Supports",
202
+ "evidence": "Component has 1 transition + 1 animation declaration(s) and at least one @media (prefers-reduced-motion: reduce) guard."
203
+ },
204
+ "3.2.5": {
205
+ "verdict": "Supports",
206
+ "evidence": "No auto-submit on focus, no location mutation in focus/input handlers."
207
+ },
208
+ "3.3.6": {
209
+ "verdict": "Not Applicable",
210
+ "evidence": "Form-associated submission trigger (aria-pattern=button) with no user-entered data value."
211
+ },
212
+ "forced-colors": {
213
+ "verdict": "Supports",
214
+ "evidence": "@media (forced-colors: active) guard present; system colors used (CanvasText / ButtonText / etc.); forced-color-adjust property declared"
215
+ },
216
+ "apg-keyboard": {
217
+ "verdict": "Supports",
218
+ "evidence": "@aria-pattern=\"button\" — component renders a native element that provides the canonical keyboard contract via the user agent (no custom handler required)."
219
+ },
220
+ "1.4.6": {
221
+ "verdict": "Supports",
222
+ "evidence": "7.03:1 (fg rgb(255, 255, 255), bg rgb(15, 99, 99)); axe color-contrast-enhanced sweep: 0 violations across full story DOM."
223
+ },
224
+ "2.4.12": {
225
+ "verdict": "Supports",
226
+ "evidence": "No element covers the focused target center."
227
+ },
228
+ "2.4.13": {
229
+ "verdict": "Supports",
230
+ "evidence": "computed outline 2px solid rgb(15, 112, 120) (keyboard-focused via Tab×1 on <button> (shadow descendant of <hx-button> — focus ring rendered on inner part))"
231
+ },
232
+ "2.5.5": {
233
+ "verdict": "Supports",
234
+ "evidence": "target=hx-button 226.8x44.0 px"
235
+ }
236
+ },
237
+ "hx-button-group": {
238
+ "1.4.9": {
239
+ "verdict": "Supports",
240
+ "evidence": "No raster <img> tags rendered in component output."
241
+ },
242
+ "2.1.3": {
243
+ "verdict": "Supports",
244
+ "evidence": "Component declares keydown handlers and is focusable."
245
+ },
246
+ "2.3.3": {
247
+ "verdict": "Not Applicable",
248
+ "evidence": "No transition or animation declarations in component styles."
249
+ },
250
+ "3.2.5": {
251
+ "verdict": "Supports",
252
+ "evidence": "No auto-submit on focus, no location mutation in focus/input handlers."
253
+ },
254
+ "3.3.6": {
255
+ "verdict": "Not Applicable",
256
+ "evidence": "Component is not form-associated."
257
+ },
258
+ "forced-colors": {
259
+ "verdict": "Not Applicable",
260
+ "evidence": "Component styles set no color/background/border/shadow declarations."
261
+ },
262
+ "apg-keyboard": {
263
+ "verdict": "Supports",
264
+ "evidence": "@aria-pattern=\"toolbar\" — all required key groups referenced (ArrowLeft|ArrowRight)."
265
+ },
266
+ "1.4.6": {
267
+ "verdict": "Not Applicable",
268
+ "evidence": "Component target (hx-button-group) is transparent (bg=rgba(0, 0, 0, 0)); foreground contrast inherits the consumer page background."
269
+ },
270
+ "2.4.12": {
271
+ "verdict": "Supports",
272
+ "evidence": "No element covers the focused target center."
273
+ },
274
+ "2.4.13": {
275
+ "verdict": "Supports",
276
+ "evidence": "computed outline 2px solid rgb(15, 112, 120) (keyboard-focused via Tab×1 on <button> (shadow descendant of <hx-button-group> — focus ring rendered on inner part))"
277
+ },
278
+ "2.5.5": {
279
+ "verdict": "Supports",
280
+ "evidence": "target=hx-button-group 283.3x44.0 px"
281
+ }
282
+ },
283
+ "hx-checkbox": {
284
+ "1.4.9": {
285
+ "verdict": "Supports",
286
+ "evidence": "No raster <img> tags rendered in component output."
287
+ },
288
+ "2.1.3": {
289
+ "verdict": "Supports",
290
+ "evidence": "Component uses a native focusable element (<button>, <a>, <input>, <textarea>, <select>) for primary interaction."
291
+ },
292
+ "2.3.3": {
293
+ "verdict": "Supports",
294
+ "evidence": "Component has 1 transition + 0 animation declaration(s) and at least one @media (prefers-reduced-motion: reduce) guard."
295
+ },
296
+ "3.2.5": {
297
+ "verdict": "Supports",
298
+ "evidence": "No auto-submit on focus, no location mutation in focus/input handlers."
299
+ },
300
+ "3.3.6": {
301
+ "verdict": "Supports",
302
+ "evidence": "Component is form-associated and exposes ElementInternals + setValidity for client-side error prevention."
303
+ },
304
+ "forced-colors": {
305
+ "verdict": "Supports",
306
+ "evidence": "@media (forced-colors: active) guard present; system colors used (CanvasText / ButtonText / etc.); forced-color-adjust property declared"
307
+ },
308
+ "apg-keyboard": {
309
+ "verdict": "Supports",
310
+ "evidence": "@aria-pattern=\"checkbox\" — component renders a native element that provides the canonical keyboard contract via the user agent (no custom handler required)."
311
+ },
312
+ "1.4.6": {
313
+ "verdict": "Not Applicable",
314
+ "evidence": "Focus-paint surface <span> renders no own text content; WCAG 1.4.6 applies only to text and images of text."
315
+ },
316
+ "2.4.12": {
317
+ "verdict": "Supports",
318
+ "evidence": "No element covers the focused target center."
319
+ },
320
+ "2.4.13": {
321
+ "verdict": "Supports",
322
+ "evidence": "computed outline 2px solid rgb(15, 112, 120) (keyboard-focused via Tab×1 on <span> (shadow descendant of <hx-checkbox> — focus ring rendered on inner part))"
323
+ },
324
+ "2.5.5": {
325
+ "verdict": "Supports",
326
+ "evidence": "target=hx-checkbox 1184.0x44.0 px"
327
+ }
328
+ },
329
+ "hx-checkbox-group": {
330
+ "1.4.9": {
331
+ "verdict": "Supports",
332
+ "evidence": "No raster <img> tags rendered in component output."
333
+ },
334
+ "2.1.3": {
335
+ "verdict": "Not Applicable",
336
+ "evidence": "@aria-pattern=\"group\" is a structural / coordinator pattern (HTML AAM / WAI-ARIA 1.2)."
337
+ },
338
+ "2.3.3": {
339
+ "verdict": "Not Applicable",
340
+ "evidence": "No transition or animation declarations in component styles."
341
+ },
342
+ "3.2.5": {
343
+ "verdict": "Supports",
344
+ "evidence": "No auto-submit on focus, no location mutation in focus/input handlers."
345
+ },
346
+ "3.3.6": {
347
+ "verdict": "Supports",
348
+ "evidence": "Component is form-associated and exposes ElementInternals + setValidity for client-side error prevention."
349
+ },
350
+ "forced-colors": {
351
+ "verdict": "Supports",
352
+ "evidence": "@media (forced-colors: active) guard present; system colors used (CanvasText / ButtonText / etc.)"
353
+ },
354
+ "apg-keyboard": {
355
+ "verdict": "Supports",
356
+ "evidence": "@aria-pattern=\"group\" requires no specific key set (alert / textbox)."
357
+ },
358
+ "1.4.6": {
359
+ "verdict": "Not Applicable",
360
+ "evidence": "Focus-paint surface <span> renders no own text content; WCAG 1.4.6 applies only to text and images of text."
361
+ },
362
+ "2.4.12": {
363
+ "verdict": "Supports",
364
+ "evidence": "No element covers the focused target center."
365
+ },
366
+ "2.4.13": {
367
+ "verdict": "Not Applicable",
368
+ "evidence": "@aria-pattern=\"group\" is a non-interactive role per WAI-ARIA 1.2; the host cannot receive keyboard focus by design, so WCAG 2.4.13 Focus Appearance does not apply."
369
+ },
370
+ "2.5.5": {
371
+ "verdict": "Not Applicable",
372
+ "evidence": "@aria-pattern=\"group\" is a non-interactive role; WCAG 2.5.5 Target Size only applies to pointer-input targets."
373
+ }
374
+ },
375
+ "hx-clinical-status": {
376
+ "1.4.9": {
377
+ "verdict": "Supports",
378
+ "evidence": "No raster <img> tags rendered in component output."
379
+ },
380
+ "2.1.3": {
381
+ "verdict": "Supports",
382
+ "evidence": "Component uses a native focusable element (<button>, <a>, <input>, <textarea>, <select>) for primary interaction."
383
+ },
384
+ "2.3.3": {
385
+ "verdict": "Supports",
386
+ "evidence": "Component has 2 transition + 0 animation declaration(s) and at least one @media (prefers-reduced-motion: reduce) guard."
387
+ },
388
+ "3.2.5": {
389
+ "verdict": "Supports",
390
+ "evidence": "No auto-submit on focus, no location mutation in focus/input handlers."
391
+ },
392
+ "3.3.6": {
393
+ "verdict": "Not Applicable",
394
+ "evidence": "Component is not form-associated."
395
+ },
396
+ "forced-colors": {
397
+ "verdict": "Supports",
398
+ "evidence": "@media (forced-colors: active) guard present; system colors used (CanvasText / ButtonText / etc.)"
399
+ },
400
+ "apg-keyboard": {
401
+ "verdict": "Supports",
402
+ "evidence": "@aria-pattern=\"alert\" requires no specific key set (alert / textbox)."
403
+ },
404
+ "1.4.6": {
405
+ "verdict": "Not Applicable",
406
+ "evidence": "Component target (hx-clinical-status) is transparent (bg=rgba(0, 0, 0, 0)); foreground contrast inherits the consumer page background."
407
+ },
408
+ "2.4.12": {
409
+ "verdict": "Supports",
410
+ "evidence": "No element covers the focused target center."
411
+ },
412
+ "2.4.13": {
413
+ "verdict": "Not Applicable",
414
+ "evidence": "@aria-pattern=\"alert\" is a non-interactive role per WAI-ARIA 1.2; the host cannot receive keyboard focus by design, so WCAG 2.4.13 Focus Appearance does not apply."
415
+ },
416
+ "2.5.5": {
417
+ "verdict": "Not Applicable",
418
+ "evidence": "@aria-pattern=\"alert\" is a non-interactive role; WCAG 2.5.5 Target Size only applies to pointer-input targets."
419
+ }
420
+ },
421
+ "hx-color-picker": {
422
+ "1.4.9": {
423
+ "verdict": "Supports",
424
+ "evidence": "No raster <img> tags rendered in component output."
425
+ },
426
+ "2.1.3": {
427
+ "verdict": "Supports",
428
+ "evidence": "Component uses a native focusable element (<button>, <a>, <input>, <textarea>, <select>) for primary interaction."
429
+ },
430
+ "2.3.3": {
431
+ "verdict": "Supports",
432
+ "evidence": "Component has 2 transition + 0 animation declaration(s) and at least one @media (prefers-reduced-motion: reduce) guard."
433
+ },
434
+ "3.2.5": {
435
+ "verdict": "Supports",
436
+ "evidence": "No auto-submit on focus, no location mutation in focus/input handlers."
437
+ },
438
+ "3.3.6": {
439
+ "verdict": "Supports",
440
+ "evidence": "Component is form-associated and exposes ElementInternals + setValidity for client-side error prevention."
441
+ },
442
+ "forced-colors": {
443
+ "verdict": "Supports",
444
+ "evidence": "@media (forced-colors: active) guard present; system colors used (CanvasText / ButtonText / etc.); forced-color-adjust property declared"
445
+ },
446
+ "apg-keyboard": {
447
+ "verdict": "Supports",
448
+ "evidence": "@aria-pattern=\"slider\" — all required key groups referenced (ArrowLeft|ArrowRight|ArrowUp|ArrowDown, Home, End)."
449
+ },
450
+ "1.4.6": {
451
+ "verdict": "Supports",
452
+ "evidence": "21.00:1 (fg rgb(0, 0, 0), bg rgb(255, 255, 255)); axe color-contrast-enhanced sweep: 0 violations across full story DOM."
453
+ },
454
+ "2.4.12": {
455
+ "verdict": "Supports",
456
+ "evidence": "No element covers the focused target center."
457
+ },
458
+ "2.4.13": {
459
+ "verdict": "Supports",
460
+ "evidence": "computed outline 2px solid rgb(15, 112, 120) (keyboard-focused via Tab×1 on <button> (shadow descendant of <hx-color-picker> — focus ring rendered on inner part))"
461
+ },
462
+ "2.5.5": {
463
+ "verdict": "Supports",
464
+ "evidence": "target=hx-color-picker 102.8x48.0 px"
465
+ }
466
+ },
467
+ "hx-combobox": {
468
+ "1.4.9": {
469
+ "verdict": "Supports",
470
+ "evidence": "No raster <img> tags rendered in component output."
471
+ },
472
+ "2.1.3": {
473
+ "verdict": "Supports",
474
+ "evidence": "Component uses a native focusable element (<button>, <a>, <input>, <textarea>, <select>) for primary interaction."
475
+ },
476
+ "2.3.3": {
477
+ "verdict": "Supports",
478
+ "evidence": "Component has 4 transition + 1 animation declaration(s) and at least one @media (prefers-reduced-motion: reduce) guard."
479
+ },
480
+ "3.2.5": {
481
+ "verdict": "Supports",
482
+ "evidence": "No auto-submit on focus, no location mutation in focus/input handlers."
483
+ },
484
+ "3.3.6": {
485
+ "verdict": "Supports",
486
+ "evidence": "Component is form-associated and exposes ElementInternals + setValidity for client-side error prevention."
487
+ },
488
+ "forced-colors": {
489
+ "verdict": "Supports",
490
+ "evidence": "@media (forced-colors: active) guard present; system colors used (CanvasText / ButtonText / etc.); forced-color-adjust property declared"
491
+ },
492
+ "apg-keyboard": {
493
+ "verdict": "Supports",
494
+ "evidence": "@aria-pattern=\"combobox\" — all required key groups referenced (ArrowDown, ArrowUp, Escape, Enter)."
495
+ },
496
+ "1.4.6": {
497
+ "verdict": "Not Applicable",
498
+ "evidence": "Focus-paint surface <div> renders no own text content; WCAG 1.4.6 applies only to text and images of text."
499
+ },
500
+ "2.4.12": {
501
+ "verdict": "Supports",
502
+ "evidence": "No element covers the focused target center."
503
+ },
504
+ "2.4.13": {
505
+ "verdict": "Supports",
506
+ "evidence": "box-shadow focus indicator: color(srgb 0.0588235 0.439216 0.470588 / 0.25) 0px 0px 0px 2px (keyboard-focused via Tab×1 on <div> (shadow descendant of <hx-combobox> — focus ring rendered on inner part))."
507
+ },
508
+ "2.5.5": {
509
+ "verdict": "Supports",
510
+ "evidence": "target=hx-combobox 1184.0x71.0 px"
511
+ }
512
+ },
513
+ "hx-copy-button": {
514
+ "1.4.9": {
515
+ "verdict": "Supports",
516
+ "evidence": "No raster <img> tags rendered in component output."
517
+ },
518
+ "2.1.3": {
519
+ "verdict": "Supports",
520
+ "evidence": "Component uses a native focusable element (<button>, <a>, <input>, <textarea>, <select>) for primary interaction."
521
+ },
522
+ "2.3.3": {
523
+ "verdict": "Supports",
524
+ "evidence": "Component has 1 transition + 0 animation declaration(s) and at least one @media (prefers-reduced-motion: reduce) guard."
525
+ },
526
+ "3.2.5": {
527
+ "verdict": "Supports",
528
+ "evidence": "No auto-submit on focus, no location mutation in focus/input handlers."
529
+ },
530
+ "3.3.6": {
531
+ "verdict": "Not Applicable",
532
+ "evidence": "Component is not form-associated."
533
+ },
534
+ "forced-colors": {
535
+ "verdict": "Supports",
536
+ "evidence": "@media (forced-colors: active) guard present; system colors used (CanvasText / ButtonText / etc.); forced-color-adjust property declared"
537
+ },
538
+ "apg-keyboard": {
539
+ "verdict": "Supports",
540
+ "evidence": "@aria-pattern=\"button\" — component renders a native element that provides the canonical keyboard contract via the user agent (no custom handler required)."
541
+ },
542
+ "1.4.6": {
543
+ "verdict": "Not Applicable",
544
+ "evidence": "Component target (hx-copy-button) is transparent (bg=rgba(0, 0, 0, 0)); foreground contrast inherits the consumer page background."
545
+ },
546
+ "2.4.12": {
547
+ "verdict": "Supports",
548
+ "evidence": "No element covers the focused target center."
549
+ },
550
+ "2.4.13": {
551
+ "verdict": "Supports",
552
+ "evidence": "computed outline 2px solid rgb(15, 112, 120) (keyboard-focused via Tab×1 on <button> (shadow descendant of <hx-copy-button> — focus ring rendered on inner part))"
553
+ },
554
+ "2.5.5": {
555
+ "verdict": "Supports",
556
+ "evidence": "target=hx-copy-button 44.0x44.0 px"
557
+ }
558
+ },
559
+ "hx-date-picker": {
560
+ "1.4.9": {
561
+ "verdict": "Supports",
562
+ "evidence": "No raster <img> tags rendered in component output."
563
+ },
564
+ "2.1.3": {
565
+ "verdict": "Supports",
566
+ "evidence": "Component uses a native focusable element (<button>, <a>, <input>, <textarea>, <select>) for primary interaction."
567
+ },
568
+ "2.3.3": {
569
+ "verdict": "Supports",
570
+ "evidence": "Component has 3 transition + 1 animation declaration(s) and at least one @media (prefers-reduced-motion: reduce) guard."
571
+ },
572
+ "3.2.5": {
573
+ "verdict": "Supports",
574
+ "evidence": "No auto-submit on focus, no location mutation in focus/input handlers."
575
+ },
576
+ "3.3.6": {
577
+ "verdict": "Supports",
578
+ "evidence": "Component is form-associated and exposes ElementInternals + setValidity for client-side error prevention."
579
+ },
580
+ "forced-colors": {
581
+ "verdict": "Supports",
582
+ "evidence": "@media (forced-colors: active) guard present; system colors used (CanvasText / ButtonText / etc.)"
583
+ },
584
+ "apg-keyboard": {
585
+ "verdict": "Supports",
586
+ "evidence": "@aria-pattern=\"dialog\" — all required key groups referenced (Escape, Tab)."
587
+ },
588
+ "1.4.6": {
589
+ "verdict": "Not Applicable",
590
+ "evidence": "Focus-paint surface <div> renders no own text content; WCAG 1.4.6 applies only to text and images of text."
591
+ },
592
+ "2.4.12": {
593
+ "verdict": "Supports",
594
+ "evidence": "No element covers the focused target center."
595
+ },
596
+ "2.4.13": {
597
+ "verdict": "Supports",
598
+ "evidence": "box-shadow focus indicator: color(srgb 0.0588235 0.439216 0.470588 / 0.25) 0px 0px 0px 2px (keyboard-focused via Tab×1 on <div> (shadow descendant of <hx-date-picker> — focus ring rendered on inner part))."
599
+ },
600
+ "2.5.5": {
601
+ "verdict": "Supports",
602
+ "evidence": "target=hx-date-picker 1184.0x71.0 px"
603
+ }
604
+ },
605
+ "hx-dialog": {
606
+ "1.4.9": {
607
+ "verdict": "Supports",
608
+ "evidence": "No raster <img> tags rendered in component output."
609
+ },
610
+ "2.1.3": {
611
+ "verdict": "Supports",
612
+ "evidence": "Component uses a native focusable element (<button>, <a>, <input>, <textarea>, <select>) for primary interaction."
613
+ },
614
+ "2.3.3": {
615
+ "verdict": "Supports",
616
+ "evidence": "Component has 3 transition + 0 animation declaration(s) and at least one @media (prefers-reduced-motion: reduce) guard."
617
+ },
618
+ "3.2.5": {
619
+ "verdict": "Supports",
620
+ "evidence": "No auto-submit on focus, no location mutation in focus/input handlers."
621
+ },
622
+ "3.3.6": {
623
+ "verdict": "Not Applicable",
624
+ "evidence": "Component is not form-associated."
625
+ },
626
+ "forced-colors": {
627
+ "verdict": "Supports",
628
+ "evidence": "@media (forced-colors: active) guard present; system colors used (CanvasText / ButtonText / etc.)"
629
+ },
630
+ "apg-keyboard": {
631
+ "verdict": "Supports",
632
+ "evidence": "@aria-pattern=\"dialog\" — all required key groups referenced (Escape, Tab)."
633
+ },
634
+ "1.4.6": {
635
+ "verdict": "Supports",
636
+ "evidence": "17.88:1 (fg rgb(13, 24, 37), bg rgb(255, 255, 255)); axe color-contrast-enhanced sweep: 0 violations across full story DOM."
637
+ },
638
+ "2.4.12": {
639
+ "verdict": "Supports",
640
+ "evidence": "No element covers the focused target center."
641
+ },
642
+ "2.4.13": {
643
+ "verdict": "Supports",
644
+ "evidence": "box-shadow focus indicator: rgba(0, 0, 0, 0.1) 0px 20px 25px -5px, rgba(0, 0, 0, 0.1) 0px 8px 10px -6px (Tab walk did not reach target after 80 presses; fell back to programmatic focus on <div> (shadow descendant of <hx-dialog> — focus ring rendered on inner part))."
645
+ },
646
+ "2.5.5": {
647
+ "verdict": "Not Applicable",
648
+ "evidence": "Host <hx-dialog> has 0x0 bounding box in default story (component likely closed/hidden)."
649
+ }
650
+ },
651
+ "hx-drawer": {
652
+ "1.4.9": {
653
+ "verdict": "Supports",
654
+ "evidence": "No raster <img> tags rendered in component output."
655
+ },
656
+ "2.1.3": {
657
+ "verdict": "Supports",
658
+ "evidence": "Component uses a native focusable element (<button>, <a>, <input>, <textarea>, <select>) for primary interaction."
659
+ },
660
+ "2.3.3": {
661
+ "verdict": "Supports",
662
+ "evidence": "Component has 3 transition + 0 animation declaration(s) and at least one @media (prefers-reduced-motion: reduce) guard."
663
+ },
664
+ "3.2.5": {
665
+ "verdict": "Supports",
666
+ "evidence": "No auto-submit on focus, no location mutation in focus/input handlers."
667
+ },
668
+ "3.3.6": {
669
+ "verdict": "Not Applicable",
670
+ "evidence": "Component is not form-associated."
671
+ },
672
+ "forced-colors": {
673
+ "verdict": "Supports",
674
+ "evidence": "@media (forced-colors: active) guard present; system colors used (CanvasText / ButtonText / etc.)"
675
+ },
676
+ "apg-keyboard": {
677
+ "verdict": "Supports",
678
+ "evidence": "@aria-pattern=\"dialog\" — all required key groups referenced (Escape, Tab)."
679
+ },
680
+ "1.4.6": {
681
+ "verdict": "Not Applicable",
682
+ "evidence": "Component target (hx-drawer) is transparent (bg=rgba(0, 0, 0, 0)); foreground contrast inherits the consumer page background."
683
+ },
684
+ "2.4.12": {
685
+ "verdict": "Supports",
686
+ "evidence": "No element covers the focused target center."
687
+ },
688
+ "2.4.13": {
689
+ "verdict": "Supports",
690
+ "evidence": "computed outline 2px solid rgb(15, 112, 120) (keyboard-focused via Tab×2 on <button> (shadow descendant of <hx-drawer> — focus ring rendered on inner part))"
691
+ },
692
+ "2.5.5": {
693
+ "verdict": "Not Applicable",
694
+ "evidence": "Host <hx-drawer> has 0x0 bounding box in default story (component likely closed/hidden)."
695
+ }
696
+ },
697
+ "hx-dropdown": {
698
+ "1.4.9": {
699
+ "verdict": "Supports",
700
+ "evidence": "No raster <img> tags rendered in component output."
701
+ },
702
+ "2.1.3": {
703
+ "verdict": "Supports",
704
+ "evidence": "Component uses a native focusable element (<button>, <a>, <input>, <textarea>, <select>) for primary interaction."
705
+ },
706
+ "2.3.3": {
707
+ "verdict": "Supports",
708
+ "evidence": "Component has 1 transition + 0 animation declaration(s) and at least one @media (prefers-reduced-motion: reduce) guard."
709
+ },
710
+ "3.2.5": {
711
+ "verdict": "Supports",
712
+ "evidence": "No auto-submit on focus, no location mutation in focus/input handlers."
713
+ },
714
+ "3.3.6": {
715
+ "verdict": "Not Applicable",
716
+ "evidence": "Component is not form-associated."
717
+ },
718
+ "forced-colors": {
719
+ "verdict": "Supports",
720
+ "evidence": "@media (forced-colors: active) guard present; system colors used (CanvasText / ButtonText / etc.)"
721
+ },
722
+ "apg-keyboard": {
723
+ "verdict": "Supports",
724
+ "evidence": "@aria-pattern=\"menu\" — all required key groups referenced (ArrowDown, ArrowUp, Escape)."
725
+ },
726
+ "1.4.6": {
727
+ "verdict": "Not Applicable",
728
+ "evidence": "Component target (hx-dropdown) is transparent (bg=rgba(0, 0, 0, 0)); foreground contrast inherits the consumer page background."
729
+ },
730
+ "2.4.12": {
731
+ "verdict": "Supports",
732
+ "evidence": "No element covers the focused target center."
733
+ },
734
+ "2.4.13": {
735
+ "verdict": "Supports",
736
+ "evidence": "computed outline 2px solid rgb(15, 112, 120) (keyboard-focused via Tab×1 on <button> (shadow descendant of <hx-dropdown> — focus ring rendered on inner part))"
737
+ },
738
+ "2.5.5": {
739
+ "verdict": "Not Applicable",
740
+ "evidence": "Popover-container component — host wraps a slotted trigger and a floating panel."
741
+ }
742
+ },
743
+ "hx-field": {
744
+ "1.4.9": {
745
+ "verdict": "Supports",
746
+ "evidence": "No raster <img> tags rendered in component output."
747
+ },
748
+ "2.1.3": {
749
+ "verdict": "Not Applicable",
750
+ "evidence": "@aria-pattern=\"label\" is a structural / coordinator pattern (HTML AAM / WAI-ARIA 1.2)."
751
+ },
752
+ "2.3.3": {
753
+ "verdict": "Not Applicable",
754
+ "evidence": "No transition or animation declarations in component styles."
755
+ },
756
+ "3.2.5": {
757
+ "verdict": "Supports",
758
+ "evidence": "No auto-submit on focus, no location mutation in focus/input handlers."
759
+ },
760
+ "3.3.6": {
761
+ "verdict": "Not Applicable",
762
+ "evidence": "Component is not form-associated."
763
+ },
764
+ "forced-colors": {
765
+ "verdict": "Supports",
766
+ "evidence": "@media (forced-colors: active) guard present; system colors used (CanvasText / ButtonText / etc.)"
767
+ },
768
+ "apg-keyboard": {
769
+ "verdict": "Supports",
770
+ "evidence": "@aria-pattern=\"label\" requires no specific key set (alert / textbox)."
771
+ },
772
+ "1.4.6": {
773
+ "verdict": "Not Applicable",
774
+ "evidence": "Focus-paint surface <input> renders no own text content; WCAG 1.4.6 applies only to text and images of text."
775
+ },
776
+ "2.4.12": {
777
+ "verdict": "Supports",
778
+ "evidence": "No element covers the focused target center."
779
+ },
780
+ "2.4.13": {
781
+ "verdict": "Not Applicable",
782
+ "evidence": "@aria-pattern=\"label\" is a non-interactive role per WAI-ARIA 1.2; the host cannot receive keyboard focus by design, so WCAG 2.4.13 Focus Appearance does not apply."
783
+ },
784
+ "2.5.5": {
785
+ "verdict": "Not Applicable",
786
+ "evidence": "@aria-pattern=\"label\" is a non-interactive role; WCAG 2.5.5 Target Size only applies to pointer-input targets."
787
+ }
788
+ },
789
+ "hx-field-label": {
790
+ "1.4.9": {
791
+ "verdict": "Supports",
792
+ "evidence": "No raster <img> tags rendered in component output."
793
+ },
794
+ "2.1.3": {
795
+ "verdict": "Not Applicable",
796
+ "evidence": "@aria-pattern=\"label\" is a structural / coordinator pattern (HTML AAM / WAI-ARIA 1.2)."
797
+ },
798
+ "2.3.3": {
799
+ "verdict": "Not Applicable",
800
+ "evidence": "No transition or animation declarations in component styles."
801
+ },
802
+ "3.2.5": {
803
+ "verdict": "Supports",
804
+ "evidence": "No auto-submit on focus, no location mutation in focus/input handlers."
805
+ },
806
+ "3.3.6": {
807
+ "verdict": "Not Applicable",
808
+ "evidence": "Component is not form-associated."
809
+ },
810
+ "forced-colors": {
811
+ "verdict": "Supports",
812
+ "evidence": "@media (forced-colors: active) guard present; system colors used (CanvasText / ButtonText / etc.)"
813
+ },
814
+ "apg-keyboard": {
815
+ "verdict": "Supports",
816
+ "evidence": "@aria-pattern=\"label\" requires no specific key set (alert / textbox)."
817
+ },
818
+ "1.4.6": {
819
+ "verdict": "Not Applicable",
820
+ "evidence": "Component target (hx-field-label) is transparent (bg=rgba(0, 0, 0, 0)); foreground contrast inherits the consumer page background."
821
+ },
822
+ "2.4.12": {
823
+ "verdict": "Supports",
824
+ "evidence": "No element covers the focused target center."
825
+ },
826
+ "2.4.13": {
827
+ "verdict": "Not Applicable",
828
+ "evidence": "@aria-pattern=\"label\" is a non-interactive role per WAI-ARIA 1.2; the host cannot receive keyboard focus by design, so WCAG 2.4.13 Focus Appearance does not apply."
829
+ },
830
+ "2.5.5": {
831
+ "verdict": "Not Applicable",
832
+ "evidence": "@aria-pattern=\"label\" is a non-interactive role; WCAG 2.5.5 Target Size only applies to pointer-input targets."
833
+ }
834
+ },
835
+ "hx-file-upload": {
836
+ "1.4.9": {
837
+ "verdict": "Supports",
838
+ "evidence": "No raster <img> tags rendered in component output."
839
+ },
840
+ "2.1.3": {
841
+ "verdict": "Supports",
842
+ "evidence": "Component uses a native focusable element (<button>, <a>, <input>, <textarea>, <select>) for primary interaction."
843
+ },
844
+ "2.3.3": {
845
+ "verdict": "Supports",
846
+ "evidence": "Component has 3 transition + 0 animation declaration(s) and at least one @media (prefers-reduced-motion: reduce) guard."
847
+ },
848
+ "3.2.5": {
849
+ "verdict": "Supports",
850
+ "evidence": "No auto-submit on focus, no location mutation in focus/input handlers."
851
+ },
852
+ "3.3.6": {
853
+ "verdict": "Supports",
854
+ "evidence": "Component is form-associated and exposes ElementInternals + setValidity for client-side error prevention."
855
+ },
856
+ "forced-colors": {
857
+ "verdict": "Supports",
858
+ "evidence": "@media (forced-colors: active) guard present; system colors used (CanvasText / ButtonText / etc.); forced-color-adjust property declared"
859
+ },
860
+ "apg-keyboard": {
861
+ "verdict": "Supports",
862
+ "evidence": "@aria-pattern=\"button\" — component renders a native element that provides the canonical keyboard contract via the user agent (no custom handler required)."
863
+ },
864
+ "1.4.6": {
865
+ "verdict": "Supports",
866
+ "evidence": "10.20:1 (fg rgb(49, 62, 75), bg rgb(245, 248, 243)); axe color-contrast-enhanced sweep: 0 violations across full story DOM."
867
+ },
868
+ "2.4.12": {
869
+ "verdict": "Supports",
870
+ "evidence": "No element covers the focused target center."
871
+ },
872
+ "2.4.13": {
873
+ "verdict": "Supports",
874
+ "evidence": "computed outline 2px solid rgb(15, 112, 120) (keyboard-focused via Tab×1 on <div> (shadow descendant of <hx-file-upload> — focus ring rendered on inner part))"
875
+ },
876
+ "2.5.5": {
877
+ "verdict": "Supports",
878
+ "evidence": "target=hx-file-upload 1184.0x128.0 px"
879
+ }
880
+ },
881
+ "hx-form": {
882
+ "1.4.9": {
883
+ "verdict": "Supports",
884
+ "evidence": "No raster <img> tags rendered in component output."
885
+ },
886
+ "2.1.3": {
887
+ "verdict": "Not Applicable",
888
+ "evidence": "@aria-pattern=\"form\" is a structural / coordinator pattern (HTML AAM / WAI-ARIA 1.2)."
889
+ },
890
+ "2.3.3": {
891
+ "verdict": "Not Applicable",
892
+ "evidence": "No transition or animation declarations in component styles."
893
+ },
894
+ "3.2.5": {
895
+ "verdict": "Supports",
896
+ "evidence": "No auto-submit on focus, no location mutation in focus/input handlers."
897
+ },
898
+ "3.3.6": {
899
+ "verdict": "Not Applicable",
900
+ "evidence": "Component is not form-associated."
901
+ },
902
+ "forced-colors": {
903
+ "verdict": "Not Applicable",
904
+ "evidence": "Component styles set no color/background/border/shadow declarations."
905
+ },
906
+ "apg-keyboard": {
907
+ "verdict": "Supports",
908
+ "evidence": "@aria-pattern=\"form\" requires no specific key set (alert / textbox)."
909
+ },
910
+ "1.4.6": {
911
+ "verdict": "Not Applicable",
912
+ "evidence": "Component target (hx-form) is transparent (bg=rgba(0, 0, 0, 0)); foreground contrast inherits the consumer page background."
913
+ },
914
+ "2.4.12": {
915
+ "verdict": "Supports",
916
+ "evidence": "No element covers the focused target center."
917
+ },
918
+ "2.4.13": {
919
+ "verdict": "Not Applicable",
920
+ "evidence": "@aria-pattern=\"form\" is a non-interactive role per WAI-ARIA 1.2; the host cannot receive keyboard focus by design, so WCAG 2.4.13 Focus Appearance does not apply."
921
+ },
922
+ "2.5.5": {
923
+ "verdict": "Not Applicable",
924
+ "evidence": "@aria-pattern=\"form\" is a non-interactive role; WCAG 2.5.5 Target Size only applies to pointer-input targets."
925
+ }
926
+ },
927
+ "hx-help-text": {
928
+ "1.4.9": {
929
+ "verdict": "Supports",
930
+ "evidence": "No raster <img> tags rendered in component output."
931
+ },
932
+ "2.1.3": {
933
+ "verdict": "Not Applicable",
934
+ "evidence": "@aria-pattern=\"label\" is a structural / coordinator pattern (HTML AAM / WAI-ARIA 1.2)."
935
+ },
936
+ "2.3.3": {
937
+ "verdict": "Not Applicable",
938
+ "evidence": "No transition or animation declarations in component styles."
939
+ },
940
+ "3.2.5": {
941
+ "verdict": "Supports",
942
+ "evidence": "No auto-submit on focus, no location mutation in focus/input handlers."
943
+ },
944
+ "3.3.6": {
945
+ "verdict": "Not Applicable",
946
+ "evidence": "Component is not form-associated."
947
+ },
948
+ "forced-colors": {
949
+ "verdict": "Supports",
950
+ "evidence": "@media (forced-colors: active) guard present; system colors used (CanvasText / ButtonText / etc.)"
951
+ },
952
+ "apg-keyboard": {
953
+ "verdict": "Supports",
954
+ "evidence": "@aria-pattern=\"label\" requires no specific key set (alert / textbox)."
955
+ },
956
+ "1.4.6": {
957
+ "verdict": "Not Applicable",
958
+ "evidence": "Component target (hx-help-text) is transparent (bg=rgba(0, 0, 0, 0)); foreground contrast inherits the consumer page background."
959
+ },
960
+ "2.4.12": {
961
+ "verdict": "Supports",
962
+ "evidence": "No element covers the focused target center."
963
+ },
964
+ "2.4.13": {
965
+ "verdict": "Not Applicable",
966
+ "evidence": "@aria-pattern=\"label\" is a non-interactive role per WAI-ARIA 1.2; the host cannot receive keyboard focus by design, so WCAG 2.4.13 Focus Appearance does not apply."
967
+ },
968
+ "2.5.5": {
969
+ "verdict": "Not Applicable",
970
+ "evidence": "@aria-pattern=\"label\" is a non-interactive role; WCAG 2.5.5 Target Size only applies to pointer-input targets."
971
+ }
972
+ },
973
+ "hx-icon": {
974
+ "1.4.9": {
975
+ "verdict": "Supports",
976
+ "evidence": "No raster <img> tags rendered in component output."
977
+ },
978
+ "2.1.3": {
979
+ "verdict": "Not Applicable",
980
+ "evidence": "@aria-pattern=\"none\" declares a presentational primitive with no widget role; WCAG 2.1.3 Keyboard applies only to interactive functionality."
981
+ },
982
+ "2.3.3": {
983
+ "verdict": "Not Applicable",
984
+ "evidence": "No transition or animation declarations in component styles."
985
+ },
986
+ "3.2.5": {
987
+ "verdict": "Supports",
988
+ "evidence": "No auto-submit on focus, no location mutation in focus/input handlers."
989
+ },
990
+ "3.3.6": {
991
+ "verdict": "Not Applicable",
992
+ "evidence": "Component is not form-associated."
993
+ },
994
+ "forced-colors": {
995
+ "verdict": "Supports",
996
+ "evidence": "@media (forced-colors: active) guard present; system colors used (CanvasText / ButtonText / etc.)"
997
+ },
998
+ "apg-keyboard": {
999
+ "verdict": "Supports",
1000
+ "evidence": "@aria-pattern=\"none\" requires no specific key set (alert / textbox)."
1001
+ },
1002
+ "non-text-contrast-icon": {
1003
+ "verdict": "Supports",
1004
+ "evidence": "WCAG 1.4.11 Non-text Contrast: 1 hx-icon sample(s) measured; min ratio 21.00:1 (≥3:1 required)."
1005
+ },
1006
+ "1.4.6": {
1007
+ "verdict": "Not Applicable",
1008
+ "evidence": "Component target (hx-icon) is transparent (bg=rgba(0, 0, 0, 0)); foreground contrast inherits the consumer page background."
1009
+ },
1010
+ "2.4.12": {
1011
+ "verdict": "Supports",
1012
+ "evidence": "No element covers the focused target center."
1013
+ },
1014
+ "2.4.13": {
1015
+ "verdict": "Not Applicable",
1016
+ "evidence": "@aria-pattern=\"none\" is a non-interactive role per WAI-ARIA 1.2; the host cannot receive keyboard focus by design, so WCAG 2.4.13 Focus Appearance does not apply."
1017
+ },
1018
+ "2.5.5": {
1019
+ "verdict": "Not Applicable",
1020
+ "evidence": "@aria-pattern=\"none\" is a non-interactive role; WCAG 2.5.5 Target Size only applies to pointer-input targets."
1021
+ }
1022
+ },
1023
+ "hx-icon-button": {
1024
+ "1.4.9": {
1025
+ "verdict": "Supports",
1026
+ "evidence": "No raster <img> tags rendered in component output."
1027
+ },
1028
+ "2.1.3": {
1029
+ "verdict": "Supports",
1030
+ "evidence": "Component uses a native focusable element (<button>, <a>, <input>, <textarea>, <select>) for primary interaction."
1031
+ },
1032
+ "2.3.3": {
1033
+ "verdict": "Supports",
1034
+ "evidence": "Component has 1 transition + 1 animation declaration(s) and at least one @media (prefers-reduced-motion: reduce) guard."
1035
+ },
1036
+ "3.2.5": {
1037
+ "verdict": "Supports",
1038
+ "evidence": "No auto-submit on focus, no location mutation in focus/input handlers."
1039
+ },
1040
+ "3.3.6": {
1041
+ "verdict": "Not Applicable",
1042
+ "evidence": "Form-associated submission trigger (aria-pattern=button) with no user-entered data value."
1043
+ },
1044
+ "forced-colors": {
1045
+ "verdict": "Supports",
1046
+ "evidence": "@media (forced-colors: active) guard present; system colors used (CanvasText / ButtonText / etc.); forced-color-adjust property declared"
1047
+ },
1048
+ "apg-keyboard": {
1049
+ "verdict": "Supports",
1050
+ "evidence": "@aria-pattern=\"button\" — component renders a native element that provides the canonical keyboard contract via the user agent (no custom handler required)."
1051
+ },
1052
+ "1.4.6": {
1053
+ "verdict": "Not Applicable",
1054
+ "evidence": "Component target (hx-icon-button) is transparent (bg=rgba(0, 0, 0, 0)); foreground contrast inherits the consumer page background."
1055
+ },
1056
+ "2.4.12": {
1057
+ "verdict": "Supports",
1058
+ "evidence": "No element covers the focused target center."
1059
+ },
1060
+ "2.4.13": {
1061
+ "verdict": "Supports",
1062
+ "evidence": "computed outline 2px solid rgb(15, 112, 120) (keyboard-focused via Tab×1 on <button> (shadow descendant of <hx-icon-button> — focus ring rendered on inner part))"
1063
+ },
1064
+ "2.5.5": {
1065
+ "verdict": "Supports",
1066
+ "evidence": "target=hx-icon-button 44.0x44.0 px"
1067
+ }
1068
+ },
1069
+ "hx-menu": {
1070
+ "1.4.9": {
1071
+ "verdict": "Supports",
1072
+ "evidence": "No raster <img> tags rendered in component output."
1073
+ },
1074
+ "2.1.3": {
1075
+ "verdict": "Supports",
1076
+ "evidence": "Component declares keydown handlers and is focusable."
1077
+ },
1078
+ "2.3.3": {
1079
+ "verdict": "Not Applicable",
1080
+ "evidence": "No transition or animation declarations in component styles."
1081
+ },
1082
+ "3.2.5": {
1083
+ "verdict": "Supports",
1084
+ "evidence": "No auto-submit on focus, no location mutation in focus/input handlers."
1085
+ },
1086
+ "3.3.6": {
1087
+ "verdict": "Not Applicable",
1088
+ "evidence": "Component is not form-associated."
1089
+ },
1090
+ "forced-colors": {
1091
+ "verdict": "Supports",
1092
+ "evidence": "@media (forced-colors: active) guard present; system colors used (CanvasText / ButtonText / etc.)"
1093
+ },
1094
+ "apg-keyboard": {
1095
+ "verdict": "Supports",
1096
+ "evidence": "@aria-pattern=\"menu\" — all required key groups referenced (ArrowDown, ArrowUp, Escape)."
1097
+ },
1098
+ "1.4.6": {
1099
+ "verdict": "Supports",
1100
+ "evidence": "21.00:1 (fg rgb(0, 0, 0), bg rgb(255, 255, 255)); axe color-contrast-enhanced sweep: 0 violations across full story DOM."
1101
+ },
1102
+ "2.4.12": {
1103
+ "verdict": "Supports",
1104
+ "evidence": "No element covers the focused target center."
1105
+ },
1106
+ "2.4.13": {
1107
+ "verdict": "Supports",
1108
+ "evidence": "box-shadow focus indicator: rgba(0, 0, 0, 0.1) 0px 4px 6px -1px, rgba(0, 0, 0, 0.1) 0px 2px 4px -2px (keyboard-focused via Tab×1 on <div> (shadow descendant of <hx-menu> — focus ring rendered on inner part))."
1109
+ },
1110
+ "2.5.5": {
1111
+ "verdict": "Supports",
1112
+ "evidence": "target=hx-menu 1184.0x142.0 px"
1113
+ }
1114
+ },
1115
+ "hx-nav": {
1116
+ "1.4.9": {
1117
+ "verdict": "Supports",
1118
+ "evidence": "No raster <img> tags rendered in component output."
1119
+ },
1120
+ "2.1.3": {
1121
+ "verdict": "Supports",
1122
+ "evidence": "Component uses a native focusable element (<button>, <a>, <input>, <textarea>, <select>) for primary interaction."
1123
+ },
1124
+ "2.3.3": {
1125
+ "verdict": "Supports",
1126
+ "evidence": "Component has 3 transition + 0 animation declaration(s) and at least one @media (prefers-reduced-motion: reduce) guard."
1127
+ },
1128
+ "3.2.5": {
1129
+ "verdict": "Supports",
1130
+ "evidence": "No auto-submit on focus, no location mutation in focus/input handlers."
1131
+ },
1132
+ "3.3.6": {
1133
+ "verdict": "Not Applicable",
1134
+ "evidence": "Component is not form-associated."
1135
+ },
1136
+ "forced-colors": {
1137
+ "verdict": "Supports",
1138
+ "evidence": "@media (forced-colors: active) guard present; system colors used (CanvasText / ButtonText / etc.)"
1139
+ },
1140
+ "apg-keyboard": {
1141
+ "verdict": "Supports",
1142
+ "evidence": "@aria-pattern=\"navigation\" requires no specific key set (alert / textbox)."
1143
+ },
1144
+ "1.4.6": {
1145
+ "verdict": "Supports",
1146
+ "evidence": "7.03:1 (fg rgb(255, 255, 255), bg rgb(15, 99, 99)); axe color-contrast-enhanced sweep: 0 violations across full story DOM."
1147
+ },
1148
+ "2.4.12": {
1149
+ "verdict": "Supports",
1150
+ "evidence": "No element covers the focused target center."
1151
+ },
1152
+ "2.4.13": {
1153
+ "verdict": "Supports",
1154
+ "evidence": "computed outline 2px solid rgb(15, 112, 120) (keyboard-focused via Tab×1 on <a> (shadow descendant of <hx-nav> — focus ring rendered on inner part))"
1155
+ },
1156
+ "2.5.5": {
1157
+ "verdict": "Supports",
1158
+ "evidence": "target=hx-nav 1184.0x60.0 px"
1159
+ }
1160
+ },
1161
+ "hx-number-input": {
1162
+ "1.4.9": {
1163
+ "verdict": "Supports",
1164
+ "evidence": "No raster <img> tags rendered in component output."
1165
+ },
1166
+ "2.1.3": {
1167
+ "verdict": "Supports",
1168
+ "evidence": "Component uses a native focusable element (<button>, <a>, <input>, <textarea>, <select>) for primary interaction."
1169
+ },
1170
+ "2.3.3": {
1171
+ "verdict": "Supports",
1172
+ "evidence": "Component has 2 transition + 0 animation declaration(s) and at least one @media (prefers-reduced-motion: reduce) guard."
1173
+ },
1174
+ "3.2.5": {
1175
+ "verdict": "Supports",
1176
+ "evidence": "No auto-submit on focus, no location mutation in focus/input handlers."
1177
+ },
1178
+ "3.3.6": {
1179
+ "verdict": "Supports",
1180
+ "evidence": "Component is form-associated and exposes ElementInternals + setValidity for client-side error prevention."
1181
+ },
1182
+ "forced-colors": {
1183
+ "verdict": "Supports",
1184
+ "evidence": "@media (forced-colors: active) guard present; system colors used (CanvasText / ButtonText / etc.); forced-color-adjust property declared"
1185
+ },
1186
+ "apg-keyboard": {
1187
+ "verdict": "Supports",
1188
+ "evidence": "@aria-pattern=\"spinbutton\" — all required key groups referenced (ArrowUp|ArrowDown)."
1189
+ },
1190
+ "1.4.6": {
1191
+ "verdict": "Not Applicable",
1192
+ "evidence": "Focus-paint surface <div> renders no own text content; WCAG 1.4.6 applies only to text and images of text."
1193
+ },
1194
+ "2.4.12": {
1195
+ "verdict": "Supports",
1196
+ "evidence": "No element covers the focused target center."
1197
+ },
1198
+ "2.4.13": {
1199
+ "verdict": "Supports",
1200
+ "evidence": "box-shadow focus indicator: color(srgb 0.0588235 0.439216 0.470588 / 0.25) 0px 0px 0px 2px (keyboard-focused via Tab×1 on <div> (shadow descendant of <hx-number-input> — focus ring rendered on inner part))."
1201
+ },
1202
+ "2.5.5": {
1203
+ "verdict": "Supports",
1204
+ "evidence": "target=hx-number-input 1184.0x71.0 px"
1205
+ }
1206
+ },
1207
+ "hx-overflow-menu": {
1208
+ "1.4.9": {
1209
+ "verdict": "Supports",
1210
+ "evidence": "No raster <img> tags rendered in component output."
1211
+ },
1212
+ "2.1.3": {
1213
+ "verdict": "Supports",
1214
+ "evidence": "Component uses a native focusable element (<button>, <a>, <input>, <textarea>, <select>) for primary interaction."
1215
+ },
1216
+ "2.3.3": {
1217
+ "verdict": "Supports",
1218
+ "evidence": "Component has 1 transition + 0 animation declaration(s) and at least one @media (prefers-reduced-motion: reduce) guard."
1219
+ },
1220
+ "3.2.5": {
1221
+ "verdict": "Supports",
1222
+ "evidence": "No auto-submit on focus, no location mutation in focus/input handlers."
1223
+ },
1224
+ "3.3.6": {
1225
+ "verdict": "Not Applicable",
1226
+ "evidence": "Component is not form-associated."
1227
+ },
1228
+ "forced-colors": {
1229
+ "verdict": "Supports",
1230
+ "evidence": "@media (forced-colors: active) guard present; system colors used (CanvasText / ButtonText / etc.); forced-color-adjust property declared"
1231
+ },
1232
+ "apg-keyboard": {
1233
+ "verdict": "Supports",
1234
+ "evidence": "@aria-pattern=\"menu\" — all required key groups referenced (ArrowDown, ArrowUp, Escape)."
1235
+ },
1236
+ "1.4.6": {
1237
+ "verdict": "Not Applicable",
1238
+ "evidence": "Focus-paint surface <button> renders no own text content; WCAG 1.4.6 applies only to text and images of text."
1239
+ },
1240
+ "2.4.12": {
1241
+ "verdict": "Supports",
1242
+ "evidence": "No element covers the focused target center."
1243
+ },
1244
+ "2.4.13": {
1245
+ "verdict": "Supports",
1246
+ "evidence": "computed outline 2px solid rgb(15, 112, 120) (keyboard-focused via Tab×1 on <button> (shadow descendant of <hx-overflow-menu> — focus ring rendered on inner part))"
1247
+ },
1248
+ "2.5.5": {
1249
+ "verdict": "Supports",
1250
+ "evidence": "target=hx-overflow-menu 44.0x44.0 px"
1251
+ }
1252
+ },
1253
+ "hx-popover": {
1254
+ "1.4.9": {
1255
+ "verdict": "Supports",
1256
+ "evidence": "No raster <img> tags rendered in component output."
1257
+ },
1258
+ "2.1.3": {
1259
+ "verdict": "Supports",
1260
+ "evidence": "Component uses a native focusable element (<button>, <a>, <input>, <textarea>, <select>) for primary interaction."
1261
+ },
1262
+ "2.3.3": {
1263
+ "verdict": "Supports",
1264
+ "evidence": "Component has 1 transition + 0 animation declaration(s) and at least one @media (prefers-reduced-motion: reduce) guard."
1265
+ },
1266
+ "3.2.5": {
1267
+ "verdict": "Supports",
1268
+ "evidence": "No auto-submit on focus, no location mutation in focus/input handlers."
1269
+ },
1270
+ "3.3.6": {
1271
+ "verdict": "Not Applicable",
1272
+ "evidence": "Component is not form-associated."
1273
+ },
1274
+ "forced-colors": {
1275
+ "verdict": "Supports",
1276
+ "evidence": "@media (forced-colors: active) guard present; system colors used (CanvasText / ButtonText / etc.)"
1277
+ },
1278
+ "apg-keyboard": {
1279
+ "verdict": "Supports",
1280
+ "evidence": "@aria-pattern=\"dialog\" — all required key groups referenced (Escape, Tab)."
1281
+ },
1282
+ "1.4.6": {
1283
+ "verdict": "Supports",
1284
+ "evidence": "17.88:1 (fg rgb(13, 24, 37), bg rgb(255, 255, 255)); axe color-contrast-enhanced sweep: 0 violations across full story DOM."
1285
+ },
1286
+ "2.4.12": {
1287
+ "verdict": "Supports",
1288
+ "evidence": "No element covers the focused target center."
1289
+ },
1290
+ "2.4.13": {
1291
+ "verdict": "Supports",
1292
+ "evidence": "box-shadow focus indicator: rgba(0, 0, 0, 0.1) 0px 4px 6px -1px, rgba(0, 0, 0, 0.1) 0px 2px 4px -2px (Tab walk did not reach target after 80 presses; fell back to programmatic focus on <div> (shadow descendant of <hx-popover> — focus ring rendered on inner part))."
1293
+ },
1294
+ "2.5.5": {
1295
+ "verdict": "Not Applicable",
1296
+ "evidence": "Host <hx-popover> has 0x0 bounding box in default story (component likely closed/hidden)."
1297
+ }
1298
+ },
1299
+ "hx-popup": {
1300
+ "1.4.9": {
1301
+ "verdict": "Supports",
1302
+ "evidence": "No raster <img> tags rendered in component output."
1303
+ },
1304
+ "2.1.3": {
1305
+ "verdict": "Not Applicable",
1306
+ "evidence": "@aria-pattern=\"none\" declares a presentational primitive with no widget role; WCAG 2.1.3 Keyboard applies only to interactive functionality."
1307
+ },
1308
+ "2.3.3": {
1309
+ "verdict": "Supports",
1310
+ "evidence": "Component has 1 transition + 0 animation declaration(s) and at least one @media (prefers-reduced-motion: reduce) guard."
1311
+ },
1312
+ "3.2.5": {
1313
+ "verdict": "Supports",
1314
+ "evidence": "No auto-submit on focus, no location mutation in focus/input handlers."
1315
+ },
1316
+ "3.3.6": {
1317
+ "verdict": "Not Applicable",
1318
+ "evidence": "Component is not form-associated."
1319
+ },
1320
+ "forced-colors": {
1321
+ "verdict": "Supports",
1322
+ "evidence": "@media (forced-colors: active) guard present; system colors used (CanvasText / ButtonText / etc.)"
1323
+ },
1324
+ "apg-keyboard": {
1325
+ "verdict": "Supports",
1326
+ "evidence": "@aria-pattern=\"none\" requires no specific key set (alert / textbox)."
1327
+ },
1328
+ "1.4.6": {
1329
+ "verdict": "Supports",
1330
+ "evidence": "18.26:1 (fg rgb(0, 0, 0), bg rgb(239, 239, 239)); axe color-contrast-enhanced sweep: 0 violations across full story DOM."
1331
+ },
1332
+ "2.4.12": {
1333
+ "verdict": "Supports",
1334
+ "evidence": "No element covers the focused target center."
1335
+ },
1336
+ "2.4.13": {
1337
+ "verdict": "Not Applicable",
1338
+ "evidence": "@aria-pattern=\"none\" is a non-interactive role per WAI-ARIA 1.2; the host cannot receive keyboard focus by design, so WCAG 2.4.13 Focus Appearance does not apply."
1339
+ },
1340
+ "2.5.5": {
1341
+ "verdict": "Not Applicable",
1342
+ "evidence": "@aria-pattern=\"none\" is a non-interactive role; WCAG 2.5.5 Target Size only applies to pointer-input targets."
1343
+ }
1344
+ },
1345
+ "hx-radio-group": {
1346
+ "1.4.9": {
1347
+ "verdict": "Supports",
1348
+ "evidence": "No raster <img> tags rendered in component output."
1349
+ },
1350
+ "2.1.3": {
1351
+ "verdict": "Supports",
1352
+ "evidence": "Component declares keydown handlers and is focusable."
1353
+ },
1354
+ "2.3.3": {
1355
+ "verdict": "Not Applicable",
1356
+ "evidence": "No transition or animation declarations in component styles."
1357
+ },
1358
+ "3.2.5": {
1359
+ "verdict": "Supports",
1360
+ "evidence": "No auto-submit on focus, no location mutation in focus/input handlers."
1361
+ },
1362
+ "3.3.6": {
1363
+ "verdict": "Supports",
1364
+ "evidence": "Component is form-associated and exposes ElementInternals + setValidity for client-side error prevention."
1365
+ },
1366
+ "forced-colors": {
1367
+ "verdict": "Supports",
1368
+ "evidence": "@media (forced-colors: active) guard present; system colors used (CanvasText / ButtonText / etc.)"
1369
+ },
1370
+ "apg-keyboard": {
1371
+ "verdict": "Supports",
1372
+ "evidence": "@aria-pattern=\"radiogroup\" — all required key groups referenced (ArrowDown|ArrowUp, ArrowLeft|ArrowRight)."
1373
+ },
1374
+ "1.4.6": {
1375
+ "verdict": "Not Applicable",
1376
+ "evidence": "Focus-paint surface <span> renders no own text content; WCAG 1.4.6 applies only to text and images of text."
1377
+ },
1378
+ "2.4.12": {
1379
+ "verdict": "Supports",
1380
+ "evidence": "No element covers the focused target center."
1381
+ },
1382
+ "2.4.13": {
1383
+ "verdict": "Supports",
1384
+ "evidence": "computed outline 2px solid rgb(15, 112, 120) (keyboard-focused via Tab×1 on <span> (shadow descendant of <hx-radio-group> — focus ring rendered on inner part))"
1385
+ },
1386
+ "2.5.5": {
1387
+ "verdict": "Supports",
1388
+ "evidence": "target=hx-radio-group 1184.0x263.0 px"
1389
+ }
1390
+ },
1391
+ "hx-rating": {
1392
+ "1.4.9": {
1393
+ "verdict": "Supports",
1394
+ "evidence": "No raster <img> tags rendered in component output."
1395
+ },
1396
+ "2.1.3": {
1397
+ "verdict": "Supports",
1398
+ "evidence": "Component declares keydown handlers and is focusable."
1399
+ },
1400
+ "2.3.3": {
1401
+ "verdict": "Supports",
1402
+ "evidence": "Component has 1 transition + 0 animation declaration(s) and at least one @media (prefers-reduced-motion: reduce) guard."
1403
+ },
1404
+ "3.2.5": {
1405
+ "verdict": "Supports",
1406
+ "evidence": "No auto-submit on focus, no location mutation in focus/input handlers."
1407
+ },
1408
+ "3.3.6": {
1409
+ "verdict": "Supports",
1410
+ "evidence": "Component is form-associated and exposes ElementInternals + setValidity for client-side error prevention."
1411
+ },
1412
+ "forced-colors": {
1413
+ "verdict": "Supports",
1414
+ "evidence": "@media (forced-colors: active) guard present; system colors used (CanvasText / ButtonText / etc.); forced-color-adjust property declared"
1415
+ },
1416
+ "apg-keyboard": {
1417
+ "verdict": "Supports",
1418
+ "evidence": "@aria-pattern=\"radiogroup\" — all required key groups referenced (ArrowDown|ArrowUp, ArrowLeft|ArrowRight)."
1419
+ },
1420
+ "1.4.6": {
1421
+ "verdict": "Not Applicable",
1422
+ "evidence": "Component target (hx-rating) is transparent (bg=rgba(0, 0, 0, 0)); foreground contrast inherits the consumer page background."
1423
+ },
1424
+ "2.4.12": {
1425
+ "verdict": "Supports",
1426
+ "evidence": "No element covers the focused target center."
1427
+ },
1428
+ "2.4.13": {
1429
+ "verdict": "Supports",
1430
+ "evidence": "computed outline 2px solid rgb(15, 112, 120) (keyboard-focused via Tab×1 on <span> (shadow descendant of <hx-rating> — focus ring rendered on inner part))"
1431
+ },
1432
+ "2.5.5": {
1433
+ "verdict": "Supports",
1434
+ "evidence": "target=hx-rating 236.0x44.0 px"
1435
+ }
1436
+ },
1437
+ "hx-select": {
1438
+ "1.4.9": {
1439
+ "verdict": "Supports",
1440
+ "evidence": "No raster <img> tags rendered in component output."
1441
+ },
1442
+ "2.1.3": {
1443
+ "verdict": "Supports",
1444
+ "evidence": "Component uses a native focusable element (<button>, <a>, <input>, <textarea>, <select>) for primary interaction."
1445
+ },
1446
+ "2.3.3": {
1447
+ "verdict": "Supports",
1448
+ "evidence": "Component has 3 transition + 0 animation declaration(s) and at least one @media (prefers-reduced-motion: reduce) guard."
1449
+ },
1450
+ "3.2.5": {
1451
+ "verdict": "Supports",
1452
+ "evidence": "No auto-submit on focus, no location mutation in focus/input handlers."
1453
+ },
1454
+ "3.3.6": {
1455
+ "verdict": "Supports",
1456
+ "evidence": "Component is form-associated and exposes ElementInternals + setValidity for client-side error prevention."
1457
+ },
1458
+ "forced-colors": {
1459
+ "verdict": "Supports",
1460
+ "evidence": "@media (forced-colors: active) guard present; system colors used (CanvasText / ButtonText / etc.); forced-color-adjust property declared"
1461
+ },
1462
+ "apg-keyboard": {
1463
+ "verdict": "Supports",
1464
+ "evidence": "@aria-pattern=\"combobox\" — all required key groups referenced (ArrowDown, ArrowUp, Escape, Enter)."
1465
+ },
1466
+ "1.4.6": {
1467
+ "verdict": "Supports",
1468
+ "evidence": "14.32:1 (fg rgb(32, 43, 57), bg rgb(255, 255, 255)); axe color-contrast-enhanced sweep: 0 violations across full story DOM."
1469
+ },
1470
+ "2.4.12": {
1471
+ "verdict": "Supports",
1472
+ "evidence": "No element covers the focused target center."
1473
+ },
1474
+ "2.4.13": {
1475
+ "verdict": "Supports",
1476
+ "evidence": "box-shadow focus indicator: color(srgb 0.0588235 0.439216 0.470588 / 0.25) 0px 0px 0px 2px (keyboard-focused via Tab×1 on <button> (shadow descendant of <hx-select> — focus ring rendered on inner part))."
1477
+ },
1478
+ "2.5.5": {
1479
+ "verdict": "Supports",
1480
+ "evidence": "target=hx-select 1184.0x69.0 px"
1481
+ }
1482
+ },
1483
+ "hx-side-nav": {
1484
+ "1.4.9": {
1485
+ "verdict": "Supports",
1486
+ "evidence": "No raster <img> tags rendered in component output."
1487
+ },
1488
+ "2.1.3": {
1489
+ "verdict": "Supports",
1490
+ "evidence": "Component uses a native focusable element (<button>, <a>, <input>, <textarea>, <select>) for primary interaction."
1491
+ },
1492
+ "2.3.3": {
1493
+ "verdict": "Supports",
1494
+ "evidence": "Component has 3 transition + 0 animation declaration(s) and at least one @media (prefers-reduced-motion: reduce) guard."
1495
+ },
1496
+ "3.2.5": {
1497
+ "verdict": "Supports",
1498
+ "evidence": "No auto-submit on focus, no location mutation in focus/input handlers."
1499
+ },
1500
+ "3.3.6": {
1501
+ "verdict": "Not Applicable",
1502
+ "evidence": "Component is not form-associated."
1503
+ },
1504
+ "forced-colors": {
1505
+ "verdict": "Supports",
1506
+ "evidence": "@media (forced-colors: active) guard present; system colors used (CanvasText / ButtonText / etc.); forced-color-adjust property declared"
1507
+ },
1508
+ "apg-keyboard": {
1509
+ "verdict": "Supports",
1510
+ "evidence": "@aria-pattern=\"navigation\" requires no specific key set (alert / textbox)."
1511
+ },
1512
+ "1.4.6": {
1513
+ "verdict": "Not Applicable",
1514
+ "evidence": "Component target (hx-side-nav) is transparent (bg=rgba(0, 0, 0, 0)); foreground contrast inherits the consumer page background."
1515
+ },
1516
+ "2.4.12": {
1517
+ "verdict": "Supports",
1518
+ "evidence": "No element covers the focused target center."
1519
+ },
1520
+ "2.4.13": {
1521
+ "verdict": "Supports",
1522
+ "evidence": "computed outline 2px solid rgb(15, 112, 120) (keyboard-focused via Tab×1 on <button> (shadow descendant of <hx-side-nav> — focus ring rendered on inner part))"
1523
+ },
1524
+ "2.5.5": {
1525
+ "verdict": "Supports",
1526
+ "evidence": "target=hx-side-nav 256.0x500.0 px"
1527
+ }
1528
+ },
1529
+ "hx-slider": {
1530
+ "1.4.9": {
1531
+ "verdict": "Supports",
1532
+ "evidence": "No raster <img> tags rendered in component output."
1533
+ },
1534
+ "2.1.3": {
1535
+ "verdict": "Supports",
1536
+ "evidence": "Component uses a native focusable element (<button>, <a>, <input>, <textarea>, <select>) for primary interaction."
1537
+ },
1538
+ "2.3.3": {
1539
+ "verdict": "Supports",
1540
+ "evidence": "Component has 2 transition + 0 animation declaration(s) and at least one @media (prefers-reduced-motion: reduce) guard."
1541
+ },
1542
+ "3.2.5": {
1543
+ "verdict": "Supports",
1544
+ "evidence": "No auto-submit on focus, no location mutation in focus/input handlers."
1545
+ },
1546
+ "3.3.6": {
1547
+ "verdict": "Supports",
1548
+ "evidence": "Component is form-associated and exposes ElementInternals + setValidity for client-side error prevention."
1549
+ },
1550
+ "forced-colors": {
1551
+ "verdict": "Supports",
1552
+ "evidence": "@media (forced-colors: active) guard present; system colors used (CanvasText / ButtonText / etc.)"
1553
+ },
1554
+ "apg-keyboard": {
1555
+ "verdict": "Supports",
1556
+ "evidence": "@aria-pattern=\"slider\" — component renders a native element that provides the canonical keyboard contract via the user agent (no custom handler required)."
1557
+ },
1558
+ "1.4.6": {
1559
+ "verdict": "Not Applicable",
1560
+ "evidence": "Focus-paint surface <span> renders no own text content; WCAG 1.4.6 applies only to text and images of text."
1561
+ },
1562
+ "2.4.12": {
1563
+ "verdict": "Supports",
1564
+ "evidence": "No element covers the focused target center."
1565
+ },
1566
+ "2.4.13": {
1567
+ "verdict": "Supports",
1568
+ "evidence": "box-shadow focus indicator: rgb(15, 112, 120) 0px 0px 0px 2px, rgba(0, 0, 0, 0.05) 0px 1px 2px 0px (keyboard-focused via Tab×1 on <span> (shadow descendant of <hx-slider> — focus ring rendered on inner part))."
1569
+ },
1570
+ "2.5.5": {
1571
+ "verdict": "Not Applicable",
1572
+ "evidence": "User-agent-controlled target — component delegates to a native <input type=\"range\"> whose thumb is sized by the platform (typically 16-20px)."
1573
+ }
1574
+ },
1575
+ "hx-split-button": {
1576
+ "1.4.9": {
1577
+ "verdict": "Supports",
1578
+ "evidence": "No raster <img> tags rendered in component output."
1579
+ },
1580
+ "2.1.3": {
1581
+ "verdict": "Supports",
1582
+ "evidence": "Component uses a native focusable element (<button>, <a>, <input>, <textarea>, <select>) for primary interaction."
1583
+ },
1584
+ "2.3.3": {
1585
+ "verdict": "Supports",
1586
+ "evidence": "Component has 3 transition + 1 animation declaration(s) and at least one @media (prefers-reduced-motion: reduce) guard."
1587
+ },
1588
+ "3.2.5": {
1589
+ "verdict": "Supports",
1590
+ "evidence": "No auto-submit on focus, no location mutation in focus/input handlers."
1591
+ },
1592
+ "3.3.6": {
1593
+ "verdict": "Not Applicable",
1594
+ "evidence": "Component is not form-associated."
1595
+ },
1596
+ "forced-colors": {
1597
+ "verdict": "Supports",
1598
+ "evidence": "@media (forced-colors: active) guard present; system colors used (CanvasText / ButtonText / etc.); forced-color-adjust property declared"
1599
+ },
1600
+ "apg-keyboard": {
1601
+ "verdict": "Supports",
1602
+ "evidence": "@aria-pattern=\"button\" — component renders a native element that provides the canonical keyboard contract via the user agent (no custom handler required)."
1603
+ },
1604
+ "1.4.6": {
1605
+ "verdict": "Supports",
1606
+ "evidence": "7.03:1 (fg rgb(255, 255, 255), bg rgb(15, 99, 99)); axe color-contrast-enhanced sweep: 0 violations across full story DOM."
1607
+ },
1608
+ "2.4.12": {
1609
+ "verdict": "Supports",
1610
+ "evidence": "No element covers the focused target center."
1611
+ },
1612
+ "2.4.13": {
1613
+ "verdict": "Supports",
1614
+ "evidence": "computed outline 2px solid rgb(15, 112, 120) (keyboard-focused via Tab×1 on <button> (shadow descendant of <hx-split-button> — focus ring rendered on inner part))"
1615
+ },
1616
+ "2.5.5": {
1617
+ "verdict": "Supports",
1618
+ "evidence": "target=hx-split-button 173.7x44.0 px"
1619
+ }
1620
+ },
1621
+ "hx-switch": {
1622
+ "1.4.9": {
1623
+ "verdict": "Supports",
1624
+ "evidence": "No raster <img> tags rendered in component output."
1625
+ },
1626
+ "2.1.3": {
1627
+ "verdict": "Supports",
1628
+ "evidence": "Component uses a native focusable element (<button>, <a>, <input>, <textarea>, <select>) for primary interaction."
1629
+ },
1630
+ "2.3.3": {
1631
+ "verdict": "Supports",
1632
+ "evidence": "Component has 2 transition + 0 animation declaration(s) and at least one @media (prefers-reduced-motion: reduce) guard."
1633
+ },
1634
+ "3.2.5": {
1635
+ "verdict": "Supports",
1636
+ "evidence": "No auto-submit on focus, no location mutation in focus/input handlers."
1637
+ },
1638
+ "3.3.6": {
1639
+ "verdict": "Supports",
1640
+ "evidence": "Component is form-associated and exposes ElementInternals + setValidity for client-side error prevention."
1641
+ },
1642
+ "forced-colors": {
1643
+ "verdict": "Supports",
1644
+ "evidence": "@media (forced-colors: active) guard present; system colors used (CanvasText / ButtonText / etc.); forced-color-adjust property declared"
1645
+ },
1646
+ "apg-keyboard": {
1647
+ "verdict": "Supports",
1648
+ "evidence": "@aria-pattern=\"switch\" — all required key groups referenced (' '|Enter)."
1649
+ },
1650
+ "1.4.6": {
1651
+ "verdict": "Not Applicable",
1652
+ "evidence": "Focus-paint surface <button> renders no own text content; WCAG 1.4.6 applies only to text and images of text."
1653
+ },
1654
+ "2.4.12": {
1655
+ "verdict": "Supports",
1656
+ "evidence": "No element covers the focused target center."
1657
+ },
1658
+ "2.4.13": {
1659
+ "verdict": "Supports",
1660
+ "evidence": "computed outline 2px solid rgb(15, 112, 120) (keyboard-focused via Tab×1 on <button> (shadow descendant of <hx-switch> — focus ring rendered on inner part))"
1661
+ },
1662
+ "2.5.5": {
1663
+ "verdict": "Supports",
1664
+ "evidence": "target=hx-switch 1184.0x44.0 px"
1665
+ }
1666
+ },
1667
+ "hx-tabs": {
1668
+ "1.4.9": {
1669
+ "verdict": "Supports",
1670
+ "evidence": "No raster <img> tags rendered in component output."
1671
+ },
1672
+ "2.1.3": {
1673
+ "verdict": "Supports",
1674
+ "evidence": "Component declares keydown handlers and is focusable."
1675
+ },
1676
+ "2.3.3": {
1677
+ "verdict": "Not Applicable",
1678
+ "evidence": "No transition or animation declarations in component styles."
1679
+ },
1680
+ "3.2.5": {
1681
+ "verdict": "Supports",
1682
+ "evidence": "No auto-submit on focus, no location mutation in focus/input handlers."
1683
+ },
1684
+ "3.3.6": {
1685
+ "verdict": "Not Applicable",
1686
+ "evidence": "Component is not form-associated."
1687
+ },
1688
+ "forced-colors": {
1689
+ "verdict": "Supports",
1690
+ "evidence": "@media (forced-colors: active) guard present; system colors used (CanvasText / ButtonText / etc.)"
1691
+ },
1692
+ "apg-keyboard": {
1693
+ "verdict": "Supports",
1694
+ "evidence": "@aria-pattern=\"tabs\" — all required key groups referenced (ArrowLeft|ArrowRight|ArrowUp|ArrowDown, Home, End)."
1695
+ },
1696
+ "1.4.6": {
1697
+ "verdict": "Not Applicable",
1698
+ "evidence": "Component target (hx-tabs) is transparent (bg=rgba(0, 0, 0, 0)); foreground contrast inherits the consumer page background."
1699
+ },
1700
+ "2.4.12": {
1701
+ "verdict": "Supports",
1702
+ "evidence": "No element covers the focused target center."
1703
+ },
1704
+ "2.4.13": {
1705
+ "verdict": "Supports",
1706
+ "evidence": "computed outline 2px solid rgb(15, 112, 120) (keyboard-focused via Tab×1 on <hx-tab> (shadow descendant of <hx-tabs> — focus ring rendered on inner part))"
1707
+ },
1708
+ "2.5.5": {
1709
+ "verdict": "Supports",
1710
+ "evidence": "target=hx-tabs 1184.0x133.0 px"
1711
+ }
1712
+ },
1713
+ "hx-text-input": {
1714
+ "1.4.9": {
1715
+ "verdict": "Supports",
1716
+ "evidence": "No raster <img> tags rendered in component output."
1717
+ },
1718
+ "2.1.3": {
1719
+ "verdict": "Supports",
1720
+ "evidence": "Component uses a native focusable element (<button>, <a>, <input>, <textarea>, <select>) for primary interaction."
1721
+ },
1722
+ "2.3.3": {
1723
+ "verdict": "Supports",
1724
+ "evidence": "Component has 1 transition + 0 animation declaration(s) and at least one @media (prefers-reduced-motion: reduce) guard."
1725
+ },
1726
+ "3.2.5": {
1727
+ "verdict": "Supports",
1728
+ "evidence": "No auto-submit on focus, no location mutation in focus/input handlers."
1729
+ },
1730
+ "3.3.6": {
1731
+ "verdict": "Supports",
1732
+ "evidence": "Component is form-associated and exposes ElementInternals + setValidity for client-side error prevention."
1733
+ },
1734
+ "forced-colors": {
1735
+ "verdict": "Supports",
1736
+ "evidence": "@media (forced-colors: active) guard present; system colors used (CanvasText / ButtonText / etc.); forced-color-adjust property declared"
1737
+ },
1738
+ "apg-keyboard": {
1739
+ "verdict": "Supports",
1740
+ "evidence": "@aria-pattern=\"textbox\" requires no specific key set (alert / textbox)."
1741
+ },
1742
+ "1.4.6": {
1743
+ "verdict": "Not Applicable",
1744
+ "evidence": "Focus-paint surface <div> renders no own text content; WCAG 1.4.6 applies only to text and images of text."
1745
+ },
1746
+ "2.4.12": {
1747
+ "verdict": "Supports",
1748
+ "evidence": "No element covers the focused target center."
1749
+ },
1750
+ "2.4.13": {
1751
+ "verdict": "Supports",
1752
+ "evidence": "box-shadow focus indicator: color(srgb 0.0588235 0.439216 0.470588 / 0.25) 0px 0px 0px 2px (keyboard-focused via Tab×1 on <div> (shadow descendant of <hx-text-input> — focus ring rendered on inner part))."
1753
+ },
1754
+ "2.5.5": {
1755
+ "verdict": "Supports",
1756
+ "evidence": "target=hx-text-input 1184.0x71.0 px"
1757
+ }
1758
+ },
1759
+ "hx-textarea": {
1760
+ "1.4.9": {
1761
+ "verdict": "Supports",
1762
+ "evidence": "No raster <img> tags rendered in component output."
1763
+ },
1764
+ "2.1.3": {
1765
+ "verdict": "Supports",
1766
+ "evidence": "Component uses a native focusable element (<button>, <a>, <input>, <textarea>, <select>) for primary interaction."
1767
+ },
1768
+ "2.3.3": {
1769
+ "verdict": "Supports",
1770
+ "evidence": "Component has 1 transition + 0 animation declaration(s) and at least one @media (prefers-reduced-motion: reduce) guard."
1771
+ },
1772
+ "3.2.5": {
1773
+ "verdict": "Supports",
1774
+ "evidence": "No auto-submit on focus, no location mutation in focus/input handlers."
1775
+ },
1776
+ "3.3.6": {
1777
+ "verdict": "Supports",
1778
+ "evidence": "Component is form-associated and exposes ElementInternals + setValidity for client-side error prevention."
1779
+ },
1780
+ "forced-colors": {
1781
+ "verdict": "Supports",
1782
+ "evidence": "@media (forced-colors: active) guard present; system colors used (CanvasText / ButtonText / etc.); forced-color-adjust property declared"
1783
+ },
1784
+ "apg-keyboard": {
1785
+ "verdict": "Supports",
1786
+ "evidence": "@aria-pattern=\"textbox\" requires no specific key set (alert / textbox)."
1787
+ },
1788
+ "1.4.6": {
1789
+ "verdict": "Not Applicable",
1790
+ "evidence": "Focus-paint surface <div> renders no own text content; WCAG 1.4.6 applies only to text and images of text."
1791
+ },
1792
+ "2.4.12": {
1793
+ "verdict": "Supports",
1794
+ "evidence": "No element covers the focused target center."
1795
+ },
1796
+ "2.4.13": {
1797
+ "verdict": "Supports",
1798
+ "evidence": "box-shadow focus indicator: color(srgb 0.0588235 0.439216 0.470588 / 0.25) 0px 0px 0px 2px (keyboard-focused via Tab×1 on <div> (shadow descendant of <hx-textarea> — focus ring rendered on inner part))."
1799
+ },
1800
+ "2.5.5": {
1801
+ "verdict": "Supports",
1802
+ "evidence": "target=hx-textarea 1184.0x139.0 px"
1803
+ }
1804
+ },
1805
+ "hx-time-picker": {
1806
+ "1.4.9": {
1807
+ "verdict": "Supports",
1808
+ "evidence": "No raster <img> tags rendered in component output."
1809
+ },
1810
+ "2.1.3": {
1811
+ "verdict": "Supports",
1812
+ "evidence": "Component uses a native focusable element (<button>, <a>, <input>, <textarea>, <select>) for primary interaction."
1813
+ },
1814
+ "2.3.3": {
1815
+ "verdict": "Supports",
1816
+ "evidence": "Component has 2 transition + 1 animation declaration(s) and at least one @media (prefers-reduced-motion: reduce) guard."
1817
+ },
1818
+ "3.2.5": {
1819
+ "verdict": "Supports",
1820
+ "evidence": "No auto-submit on focus, no location mutation in focus/input handlers."
1821
+ },
1822
+ "3.3.6": {
1823
+ "verdict": "Supports",
1824
+ "evidence": "Component is form-associated and exposes ElementInternals + setValidity for client-side error prevention."
1825
+ },
1826
+ "forced-colors": {
1827
+ "verdict": "Supports",
1828
+ "evidence": "@media (forced-colors: active) guard present; system colors used (CanvasText / ButtonText / etc.); forced-color-adjust property declared"
1829
+ },
1830
+ "apg-keyboard": {
1831
+ "verdict": "Supports",
1832
+ "evidence": "@aria-pattern=\"dialog\" — all required key groups referenced (Escape, Tab)."
1833
+ },
1834
+ "1.4.6": {
1835
+ "verdict": "Not Applicable",
1836
+ "evidence": "Focus-paint surface <div> renders no own text content; WCAG 1.4.6 applies only to text and images of text."
1837
+ },
1838
+ "2.4.12": {
1839
+ "verdict": "Supports",
1840
+ "evidence": "No element covers the focused target center."
1841
+ },
1842
+ "2.4.13": {
1843
+ "verdict": "Supports",
1844
+ "evidence": "box-shadow focus indicator: color(srgb 0.0588235 0.439216 0.470588 / 0.25) 0px 0px 0px 2px (keyboard-focused via Tab×1 on <div> (shadow descendant of <hx-time-picker> — focus ring rendered on inner part))."
1845
+ },
1846
+ "2.5.5": {
1847
+ "verdict": "Supports",
1848
+ "evidence": "target=hx-time-picker 1184.0x71.0 px"
1849
+ }
1850
+ },
1851
+ "hx-toast": {
1852
+ "1.4.9": {
1853
+ "verdict": "Supports",
1854
+ "evidence": "No raster <img> tags rendered in component output."
1855
+ },
1856
+ "2.1.3": {
1857
+ "verdict": "Supports",
1858
+ "evidence": "Component uses a native focusable element (<button>, <a>, <input>, <textarea>, <select>) for primary interaction."
1859
+ },
1860
+ "2.3.3": {
1861
+ "verdict": "Supports",
1862
+ "evidence": "Component has 2 transition + 0 animation declaration(s) and at least one @media (prefers-reduced-motion: reduce) guard."
1863
+ },
1864
+ "3.2.5": {
1865
+ "verdict": "Supports",
1866
+ "evidence": "No auto-submit on focus, no location mutation in focus/input handlers."
1867
+ },
1868
+ "3.3.6": {
1869
+ "verdict": "Not Applicable",
1870
+ "evidence": "Component is not form-associated."
1871
+ },
1872
+ "forced-colors": {
1873
+ "verdict": "Supports",
1874
+ "evidence": "@media (forced-colors: active) guard present; system colors used (CanvasText / ButtonText / etc.)"
1875
+ },
1876
+ "apg-keyboard": {
1877
+ "verdict": "Supports",
1878
+ "evidence": "@aria-pattern=\"alert\" requires no specific key set (alert / textbox)."
1879
+ },
1880
+ "1.4.6": {
1881
+ "verdict": "Not Applicable",
1882
+ "evidence": "Component target (hx-toast) is transparent (bg=rgba(0, 0, 0, 0)); foreground contrast inherits the consumer page background."
1883
+ },
1884
+ "2.4.12": {
1885
+ "verdict": "Supports",
1886
+ "evidence": "No element covers the focused target center."
1887
+ },
1888
+ "2.4.13": {
1889
+ "verdict": "Not Applicable",
1890
+ "evidence": "@aria-pattern=\"alert\" is a non-interactive role per WAI-ARIA 1.2; the host cannot receive keyboard focus by design, so WCAG 2.4.13 Focus Appearance does not apply."
1891
+ },
1892
+ "2.5.5": {
1893
+ "verdict": "Not Applicable",
1894
+ "evidence": "@aria-pattern=\"alert\" is a non-interactive role; WCAG 2.5.5 Target Size only applies to pointer-input targets."
1895
+ }
1896
+ },
1897
+ "hx-toggle-button": {
1898
+ "1.4.9": {
1899
+ "verdict": "Supports",
1900
+ "evidence": "No raster <img> tags rendered in component output."
1901
+ },
1902
+ "2.1.3": {
1903
+ "verdict": "Supports",
1904
+ "evidence": "Component uses a native focusable element (<button>, <a>, <input>, <textarea>, <select>) for primary interaction."
1905
+ },
1906
+ "2.3.3": {
1907
+ "verdict": "Supports",
1908
+ "evidence": "Component has 1 transition + 0 animation declaration(s) and at least one @media (prefers-reduced-motion: reduce) guard."
1909
+ },
1910
+ "3.2.5": {
1911
+ "verdict": "Supports",
1912
+ "evidence": "No auto-submit on focus, no location mutation in focus/input handlers."
1913
+ },
1914
+ "3.3.6": {
1915
+ "verdict": "Supports",
1916
+ "evidence": "Form-associated submission trigger that also exposes ElementInternals + setValidity for any stateful value (e.g."
1917
+ },
1918
+ "forced-colors": {
1919
+ "verdict": "Supports",
1920
+ "evidence": "@media (forced-colors: active) guard present; system colors used (CanvasText / ButtonText / etc.); forced-color-adjust property declared"
1921
+ },
1922
+ "apg-keyboard": {
1923
+ "verdict": "Supports",
1924
+ "evidence": "@aria-pattern=\"button\" — component renders a native element that provides the canonical keyboard contract via the user agent (no custom handler required)."
1925
+ },
1926
+ "1.4.6": {
1927
+ "verdict": "Supports",
1928
+ "evidence": "7.03:1 (fg rgb(255, 255, 255), bg rgb(15, 99, 99)); axe color-contrast-enhanced sweep: 0 violations across full story DOM."
1929
+ },
1930
+ "2.4.12": {
1931
+ "verdict": "Supports",
1932
+ "evidence": "No element covers the focused target center."
1933
+ },
1934
+ "2.4.13": {
1935
+ "verdict": "Supports",
1936
+ "evidence": "computed outline 2px solid rgb(15, 112, 120) (keyboard-focused via Tab×1 on <button> (shadow descendant of <hx-toggle-button> — focus ring rendered on inner part))"
1937
+ },
1938
+ "2.5.5": {
1939
+ "verdict": "Supports",
1940
+ "evidence": "target=hx-toggle-button 158.4x44.0 px"
1941
+ }
1942
+ },
1943
+ "hx-tooltip": {
1944
+ "1.4.9": {
1945
+ "verdict": "Supports",
1946
+ "evidence": "No raster <img> tags rendered in component output."
1947
+ },
1948
+ "2.1.3": {
1949
+ "verdict": "Supports",
1950
+ "evidence": "Component uses a native focusable element (<button>, <a>, <input>, <textarea>, <select>) for primary interaction."
1951
+ },
1952
+ "2.3.3": {
1953
+ "verdict": "Supports",
1954
+ "evidence": "Component has 1 transition + 0 animation declaration(s) and at least one @media (prefers-reduced-motion: reduce) guard."
1955
+ },
1956
+ "3.2.5": {
1957
+ "verdict": "Supports",
1958
+ "evidence": "No auto-submit on focus, no location mutation in focus/input handlers."
1959
+ },
1960
+ "3.3.6": {
1961
+ "verdict": "Not Applicable",
1962
+ "evidence": "Component is not form-associated."
1963
+ },
1964
+ "forced-colors": {
1965
+ "verdict": "Supports",
1966
+ "evidence": "@media (forced-colors: active) guard present; system colors used (CanvasText / ButtonText / etc.)"
1967
+ },
1968
+ "apg-keyboard": {
1969
+ "verdict": "Supports",
1970
+ "evidence": "@aria-pattern=\"tooltip\" — all required key groups referenced (Escape)."
1971
+ },
1972
+ "1.4.6": {
1973
+ "verdict": "Supports",
1974
+ "evidence": "18.26:1 (fg rgb(0, 0, 0), bg rgb(239, 239, 239)); axe color-contrast-enhanced sweep: 0 violations across full story DOM."
1975
+ },
1976
+ "2.4.12": {
1977
+ "verdict": "Supports",
1978
+ "evidence": "No element covers the focused target center."
1979
+ },
1980
+ "2.4.13": {
1981
+ "verdict": "Supports",
1982
+ "evidence": "computed outline 2px solid rgb(15, 112, 120) (keyboard-focused via Tab×1 on <button> (shadow descendant of <hx-tooltip> — focus ring rendered on inner part))"
1983
+ },
1984
+ "2.5.5": {
1985
+ "verdict": "Not Applicable",
1986
+ "evidence": "Popover-container component — host wraps a slotted trigger and a floating panel."
1987
+ }
1988
+ },
1989
+ "hx-top-nav": {
1990
+ "1.4.9": {
1991
+ "verdict": "Supports",
1992
+ "evidence": "No raster <img> tags rendered in component output."
1993
+ },
1994
+ "2.1.3": {
1995
+ "verdict": "Supports",
1996
+ "evidence": "Component uses a native focusable element (<button>, <a>, <input>, <textarea>, <select>) for primary interaction."
1997
+ },
1998
+ "2.3.3": {
1999
+ "verdict": "Supports",
2000
+ "evidence": "Component has 0 transition + 1 animation declaration(s) and at least one @media (prefers-reduced-motion: reduce) guard."
2001
+ },
2002
+ "3.2.5": {
2003
+ "verdict": "Supports",
2004
+ "evidence": "No auto-submit on focus, no location mutation in focus/input handlers."
2005
+ },
2006
+ "3.3.6": {
2007
+ "verdict": "Not Applicable",
2008
+ "evidence": "Component is not form-associated."
2009
+ },
2010
+ "forced-colors": {
2011
+ "verdict": "Supports",
2012
+ "evidence": "@media (forced-colors: active) guard present; system colors used (CanvasText / ButtonText / etc.)"
2013
+ },
2014
+ "apg-keyboard": {
2015
+ "verdict": "Supports",
2016
+ "evidence": "@aria-pattern=\"navigation\" requires no specific key set (alert / textbox)."
2017
+ },
2018
+ "1.4.6": {
2019
+ "verdict": "Not Applicable",
2020
+ "evidence": "Component target (hx-top-nav) is transparent (bg=rgba(0, 0, 0, 0)); foreground contrast inherits the consumer page background."
2021
+ },
2022
+ "2.4.12": {
2023
+ "verdict": "Supports",
2024
+ "evidence": "No element covers the focused target center."
2025
+ },
2026
+ "2.4.13": {
2027
+ "verdict": "Supports",
2028
+ "evidence": "computed outline 2px solid rgb(15, 112, 120) (keyboard-focused via Tab×1 on <a> (shadow descendant of <hx-top-nav> — focus ring rendered on inner part))"
2029
+ },
2030
+ "2.5.5": {
2031
+ "verdict": "Supports",
2032
+ "evidence": "target=hx-top-nav 1184.0x65.0 px"
2033
+ }
2034
+ }
2035
+ }
2036
+ }