@helixui/library 3.7.0 → 3.8.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 (248) hide show
  1. package/custom-elements.json +1926 -303
  2. package/dist/components/hx-action-bar/hx-action-bar.d.ts +18 -0
  3. package/dist/components/hx-action-bar/hx-action-bar.d.ts.map +1 -1
  4. package/dist/components/hx-action-bar/hx-action-bar.styles.d.ts.map +1 -1
  5. package/dist/components/hx-action-bar/index.js +1 -1
  6. package/dist/components/hx-banner/hx-banner.d.ts +19 -0
  7. package/dist/components/hx-banner/hx-banner.d.ts.map +1 -1
  8. package/dist/components/hx-breadcrumb/hx-breadcrumb-item.d.ts.map +1 -1
  9. package/dist/components/hx-breadcrumb/hx-breadcrumb-item.styles.d.ts.map +1 -1
  10. package/dist/components/hx-breadcrumb/hx-breadcrumb.d.ts +18 -0
  11. package/dist/components/hx-breadcrumb/hx-breadcrumb.d.ts.map +1 -1
  12. package/dist/components/hx-breadcrumb/index.js +1 -1
  13. package/dist/components/hx-button/hx-button.styles.d.ts.map +1 -1
  14. package/dist/components/hx-button/index.js +1 -1
  15. package/dist/components/hx-button-group/hx-button-group.d.ts +47 -0
  16. package/dist/components/hx-button-group/hx-button-group.d.ts.map +1 -1
  17. package/dist/components/hx-button-group/index.js +1 -1
  18. package/dist/components/hx-checkbox/hx-checkbox.styles.d.ts.map +1 -1
  19. package/dist/components/hx-checkbox/index.js +1 -1
  20. package/dist/components/hx-checkbox-group/hx-checkbox-group.d.ts +36 -0
  21. package/dist/components/hx-checkbox-group/hx-checkbox-group.d.ts.map +1 -1
  22. package/dist/components/hx-checkbox-group/hx-checkbox-group.styles.d.ts.map +1 -1
  23. package/dist/components/hx-checkbox-group/index.js +1 -1
  24. package/dist/components/hx-clinical-status/hx-clinical-status.d.ts +19 -0
  25. package/dist/components/hx-clinical-status/hx-clinical-status.d.ts.map +1 -1
  26. package/dist/components/hx-color-picker/hx-color-picker.d.ts +18 -0
  27. package/dist/components/hx-color-picker/hx-color-picker.d.ts.map +1 -1
  28. package/dist/components/hx-color-picker/hx-color-picker.styles.d.ts.map +1 -1
  29. package/dist/components/hx-color-picker/index.js +1 -1
  30. package/dist/components/hx-combobox/hx-combobox.d.ts +18 -0
  31. package/dist/components/hx-combobox/hx-combobox.d.ts.map +1 -1
  32. package/dist/components/hx-copy-button/hx-copy-button.d.ts +18 -0
  33. package/dist/components/hx-copy-button/hx-copy-button.d.ts.map +1 -1
  34. package/dist/components/hx-copy-button/hx-copy-button.styles.d.ts.map +1 -1
  35. package/dist/components/hx-copy-button/index.js +1 -1
  36. package/dist/components/hx-date-picker/hx-date-picker.d.ts +18 -0
  37. package/dist/components/hx-date-picker/hx-date-picker.d.ts.map +1 -1
  38. package/dist/components/hx-date-picker/hx-date-picker.styles.d.ts.map +1 -1
  39. package/dist/components/hx-date-picker/index.js +1 -1
  40. package/dist/components/hx-drawer/hx-drawer.d.ts +18 -0
  41. package/dist/components/hx-drawer/hx-drawer.d.ts.map +1 -1
  42. package/dist/components/hx-dropdown/hx-dropdown.d.ts +18 -0
  43. package/dist/components/hx-dropdown/hx-dropdown.d.ts.map +1 -1
  44. package/dist/components/hx-dropdown/hx-dropdown.styles.d.ts.map +1 -1
  45. package/dist/components/hx-dropdown/index.js +1 -1
  46. package/dist/components/hx-field/hx-field.d.ts +17 -0
  47. package/dist/components/hx-field/hx-field.d.ts.map +1 -1
  48. package/dist/components/hx-field-label/hx-field-label.d.ts +17 -0
  49. package/dist/components/hx-field-label/hx-field-label.d.ts.map +1 -1
  50. package/dist/components/hx-file-upload/hx-file-upload.d.ts +18 -0
  51. package/dist/components/hx-file-upload/hx-file-upload.d.ts.map +1 -1
  52. package/dist/components/hx-form/hx-form.d.ts +19 -0
  53. package/dist/components/hx-form/hx-form.d.ts.map +1 -1
  54. package/dist/components/hx-help-text/hx-help-text.d.ts +17 -0
  55. package/dist/components/hx-help-text/hx-help-text.d.ts.map +1 -1
  56. package/dist/components/hx-icon-button/hx-icon-button.d.ts +18 -0
  57. package/dist/components/hx-icon-button/hx-icon-button.d.ts.map +1 -1
  58. package/dist/components/hx-menu/hx-menu.d.ts +18 -0
  59. package/dist/components/hx-menu/hx-menu.d.ts.map +1 -1
  60. package/dist/components/hx-nav/hx-nav.d.ts +18 -0
  61. package/dist/components/hx-nav/hx-nav.d.ts.map +1 -1
  62. package/dist/components/hx-nav/hx-nav.styles.d.ts.map +1 -1
  63. package/dist/components/hx-nav/index.js +1 -1
  64. package/dist/components/hx-number-input/hx-number-input.d.ts +18 -0
  65. package/dist/components/hx-number-input/hx-number-input.d.ts.map +1 -1
  66. package/dist/components/hx-number-input/index.js +1 -1
  67. package/dist/components/hx-overflow-menu/hx-overflow-menu.d.ts +18 -0
  68. package/dist/components/hx-overflow-menu/hx-overflow-menu.d.ts.map +1 -1
  69. package/dist/components/hx-popover/hx-popover.d.ts +18 -0
  70. package/dist/components/hx-popover/hx-popover.d.ts.map +1 -1
  71. package/dist/components/hx-popover/hx-popover.styles.d.ts.map +1 -1
  72. package/dist/components/hx-popover/index.js +1 -1
  73. package/dist/components/hx-popup/hx-popup.d.ts +18 -0
  74. package/dist/components/hx-popup/hx-popup.d.ts.map +1 -1
  75. package/dist/components/hx-popup/hx-popup.styles.d.ts.map +1 -1
  76. package/dist/components/hx-popup/index.js +1 -1
  77. package/dist/components/hx-radio-group/hx-radio-group.d.ts +18 -0
  78. package/dist/components/hx-radio-group/hx-radio-group.d.ts.map +1 -1
  79. package/dist/components/hx-radio-group/hx-radio-group.styles.d.ts.map +1 -1
  80. package/dist/components/hx-radio-group/hx-radio.styles.d.ts.map +1 -1
  81. package/dist/components/hx-radio-group/index.js +1 -1
  82. package/dist/components/hx-rating/hx-rating.d.ts +19 -0
  83. package/dist/components/hx-rating/hx-rating.d.ts.map +1 -1
  84. package/dist/components/hx-select/hx-select.d.ts +18 -0
  85. package/dist/components/hx-select/hx-select.d.ts.map +1 -1
  86. package/dist/components/hx-side-nav/hx-side-nav.d.ts +18 -0
  87. package/dist/components/hx-side-nav/hx-side-nav.d.ts.map +1 -1
  88. package/dist/components/hx-side-nav/hx-side-nav.styles.d.ts.map +1 -1
  89. package/dist/components/hx-side-nav/index.js +1 -1
  90. package/dist/components/hx-slider/hx-slider.d.ts +19 -0
  91. package/dist/components/hx-slider/hx-slider.d.ts.map +1 -1
  92. package/dist/components/hx-split-button/hx-split-button.d.ts +18 -0
  93. package/dist/components/hx-split-button/hx-split-button.d.ts.map +1 -1
  94. package/dist/components/hx-split-button/hx-split-button.styles.d.ts.map +1 -1
  95. package/dist/components/hx-split-button/index.js +1 -1
  96. package/dist/components/hx-switch/hx-switch.d.ts +18 -0
  97. package/dist/components/hx-switch/hx-switch.d.ts.map +1 -1
  98. package/dist/components/hx-switch/hx-switch.styles.d.ts.map +1 -1
  99. package/dist/components/hx-switch/index.js +1 -1
  100. package/dist/components/hx-tabs/hx-tab.styles.d.ts.map +1 -1
  101. package/dist/components/hx-tabs/hx-tabs.d.ts +18 -0
  102. package/dist/components/hx-tabs/hx-tabs.d.ts.map +1 -1
  103. package/dist/components/hx-tabs/index.js +1 -1
  104. package/dist/components/hx-text-input/hx-text-input.styles.d.ts.map +1 -1
  105. package/dist/components/hx-text-input/index.js +1 -1
  106. package/dist/components/hx-textarea/hx-textarea.d.ts +18 -0
  107. package/dist/components/hx-textarea/hx-textarea.d.ts.map +1 -1
  108. package/dist/components/hx-time-picker/hx-time-picker.d.ts +18 -0
  109. package/dist/components/hx-time-picker/hx-time-picker.d.ts.map +1 -1
  110. package/dist/components/hx-time-picker/hx-time-picker.styles.d.ts.map +1 -1
  111. package/dist/components/hx-time-picker/index.js +1 -1
  112. package/dist/components/hx-toast/hx-toast.d.ts +19 -0
  113. package/dist/components/hx-toast/hx-toast.d.ts.map +1 -1
  114. package/dist/components/hx-toggle-button/hx-toggle-button.d.ts +18 -0
  115. package/dist/components/hx-toggle-button/hx-toggle-button.d.ts.map +1 -1
  116. package/dist/components/hx-toggle-button/hx-toggle-button.styles.d.ts.map +1 -1
  117. package/dist/components/hx-toggle-button/index.js +1 -1
  118. package/dist/components/hx-tooltip/hx-tooltip.d.ts +18 -0
  119. package/dist/components/hx-tooltip/hx-tooltip.d.ts.map +1 -1
  120. package/dist/components/hx-tooltip/hx-tooltip.styles.d.ts.map +1 -1
  121. package/dist/components/hx-tooltip/index.js +1 -1
  122. package/dist/components/hx-top-nav/hx-top-nav.d.ts +18 -0
  123. package/dist/components/hx-top-nav/hx-top-nav.d.ts.map +1 -1
  124. package/dist/components/hx-top-nav/hx-top-nav.styles.d.ts.map +1 -1
  125. package/dist/components/hx-top-nav/index.js +1 -1
  126. package/dist/css/helix-all.css +239 -30
  127. package/dist/css/helix-core.css +4 -1
  128. package/dist/css/helix-forms.css +100 -15
  129. package/dist/css/helix-navigation.css +43 -2
  130. package/dist/css/helix-overlay.css +53 -0
  131. package/dist/css/helix-tokens.css +13 -12
  132. package/dist/css/helix-utility.css +39 -12
  133. package/dist/css/hx-action-bar.css +12 -0
  134. package/dist/css/hx-button.css +4 -1
  135. package/dist/css/hx-checkbox-group.css +11 -0
  136. package/dist/css/hx-checkbox.css +10 -0
  137. package/dist/css/hx-color-picker.css +14 -1
  138. package/dist/css/hx-copy-button.css +5 -2
  139. package/dist/css/hx-date-picker.css +6 -1
  140. package/dist/css/hx-dropdown.css +13 -0
  141. package/dist/css/hx-nav.css +24 -2
  142. package/dist/css/hx-number-input.css +8 -8
  143. package/dist/css/hx-popover.css +13 -0
  144. package/dist/css/hx-popup.css +14 -0
  145. package/dist/css/hx-radio-group.css +10 -0
  146. package/dist/css/hx-side-nav.css +7 -0
  147. package/dist/css/hx-split-button.css +22 -10
  148. package/dist/css/hx-switch.css +19 -1
  149. package/dist/css/hx-text-input.css +4 -1
  150. package/dist/css/hx-time-picker.css +7 -2
  151. package/dist/css/hx-toggle-button.css +11 -1
  152. package/dist/css/hx-tooltip.css +13 -0
  153. package/dist/css/hx-top-nav.css +12 -0
  154. package/dist/css/index.css +1 -1
  155. package/dist/css/manifest.json +40 -12
  156. package/dist/index.js +24 -24
  157. package/dist/shared/{hx-action-bar-CitgcpGv.js → hx-action-bar-BlEG4aZv.js} +41 -29
  158. package/dist/shared/hx-action-bar-BlEG4aZv.js.map +1 -0
  159. package/dist/shared/hx-banner-fpRnciIO.js.map +1 -1
  160. package/dist/shared/{hx-breadcrumb-item-3tKppF9h.js → hx-breadcrumb-item-D8xYqe3s.js} +56 -43
  161. package/dist/shared/hx-breadcrumb-item-D8xYqe3s.js.map +1 -0
  162. package/dist/shared/{hx-button-rRNmD4fd.js → hx-button-DOZTZnz-.js} +18 -15
  163. package/dist/shared/hx-button-DOZTZnz-.js.map +1 -0
  164. package/dist/shared/hx-button-group-D3QUmSzl.js +248 -0
  165. package/dist/shared/hx-button-group-D3QUmSzl.js.map +1 -0
  166. package/dist/shared/{hx-checkbox-hPlIw6Lb.js → hx-checkbox-DcgyGS9V.js} +30 -20
  167. package/dist/shared/hx-checkbox-DcgyGS9V.js.map +1 -0
  168. package/dist/shared/{hx-checkbox-group-D5piJLY8.js → hx-checkbox-group-C0q6HDqn.js} +101 -58
  169. package/dist/shared/hx-checkbox-group-C0q6HDqn.js.map +1 -0
  170. package/dist/shared/hx-clinical-status-D3XQIOqX.js.map +1 -1
  171. package/dist/shared/{hx-color-picker-DBwJzT5f.js → hx-color-picker-CYjx8i8R.js} +97 -84
  172. package/dist/shared/hx-color-picker-CYjx8i8R.js.map +1 -0
  173. package/dist/shared/hx-combobox-NgJaLbs2.js.map +1 -1
  174. package/dist/shared/{hx-copy-button-sUVuikyH.js → hx-copy-button-DJirFCUL.js} +18 -15
  175. package/dist/shared/hx-copy-button-DJirFCUL.js.map +1 -0
  176. package/dist/shared/{hx-date-picker-DSKDkCy1.js → hx-date-picker-0PtEav0K.js} +66 -61
  177. package/dist/shared/hx-date-picker-0PtEav0K.js.map +1 -0
  178. package/dist/shared/hx-drawer-CM_upadk.js.map +1 -1
  179. package/dist/shared/{hx-dropdown-D626S2ZG.js → hx-dropdown-xHwTJecv.js} +44 -31
  180. package/dist/shared/hx-dropdown-xHwTJecv.js.map +1 -0
  181. package/dist/shared/hx-field-label-BVRyyKeh.js.map +1 -1
  182. package/dist/shared/hx-field-zw0U1KVi.js.map +1 -1
  183. package/dist/shared/hx-file-upload-D3rKROK5.js.map +1 -1
  184. package/dist/shared/hx-form-CkChEATa.js.map +1 -1
  185. package/dist/shared/hx-help-text-Xb2Yr8x2.js.map +1 -1
  186. package/dist/shared/hx-icon-button-B2BdVdyK.js.map +1 -1
  187. package/dist/shared/hx-menu-divider-A6Guuzi_.js.map +1 -1
  188. package/dist/shared/{hx-nav-ldFM3Fle.js → hx-nav-ChMTfn7o.js} +66 -44
  189. package/dist/shared/hx-nav-ChMTfn7o.js.map +1 -0
  190. package/dist/shared/{hx-nav-item-CODtUlew.js → hx-nav-item-ClN17f1y.js} +62 -55
  191. package/dist/shared/hx-nav-item-ClN17f1y.js.map +1 -0
  192. package/dist/shared/{hx-number-input-yUzFOSC1.js → hx-number-input-MggsT7F0.js} +13 -13
  193. package/dist/shared/hx-number-input-MggsT7F0.js.map +1 -0
  194. package/dist/shared/hx-overflow-menu-DFjJAziP.js.map +1 -1
  195. package/dist/shared/{hx-popover-BAlAFOH9.js → hx-popover-BjB0nkcq.js} +51 -38
  196. package/dist/shared/hx-popover-BjB0nkcq.js.map +1 -0
  197. package/dist/shared/{hx-popup-COUXXZ9X.js → hx-popup-BiV_2evC.js} +59 -45
  198. package/dist/shared/hx-popup-BiV_2evC.js.map +1 -0
  199. package/dist/shared/{hx-radio-CY4kQfZw.js → hx-radio-BY4zpwdh.js} +45 -27
  200. package/dist/shared/hx-radio-BY4zpwdh.js.map +1 -0
  201. package/dist/shared/hx-rating-C3QP53k9.js.map +1 -1
  202. package/dist/shared/hx-select-DahFehiZ.js.map +1 -1
  203. package/dist/shared/hx-slider-Blmv_rwS.js.map +1 -1
  204. package/dist/shared/{hx-split-button-Ddle8iVx.js → hx-split-button-CdNz1XAu.js} +62 -50
  205. package/dist/shared/hx-split-button-CdNz1XAu.js.map +1 -0
  206. package/dist/shared/{hx-switch-TvKGvZJz.js → hx-switch-BCXuNxEH.js} +42 -24
  207. package/dist/shared/hx-switch-BCXuNxEH.js.map +1 -0
  208. package/dist/shared/{hx-tab-panel-DzsX8BHV.js → hx-tab-panel-BfisavKo.js} +47 -32
  209. package/dist/shared/hx-tab-panel-BfisavKo.js.map +1 -0
  210. package/dist/shared/{hx-text-input-D6FlOZM-.js → hx-text-input-V5sQOpDh.js} +5 -2
  211. package/dist/shared/hx-text-input-V5sQOpDh.js.map +1 -0
  212. package/dist/shared/hx-textarea-CNG590KY.js.map +1 -1
  213. package/dist/shared/{hx-time-picker-Bo7FWzmf.js → hx-time-picker-DfJkBwcX.js} +41 -36
  214. package/dist/shared/hx-time-picker-DfJkBwcX.js.map +1 -0
  215. package/dist/shared/{hx-toggle-button-DSJeFlb0.js → hx-toggle-button-xNVYeA3X.js} +37 -27
  216. package/dist/shared/hx-toggle-button-xNVYeA3X.js.map +1 -0
  217. package/dist/shared/{hx-tooltip-DVqtKPCD.js → hx-tooltip-CamO-9nd.js} +24 -11
  218. package/dist/shared/hx-tooltip-CamO-9nd.js.map +1 -0
  219. package/dist/shared/{hx-top-nav-DP6OFS8C.js → hx-top-nav-CsTxOtVI.js} +26 -14
  220. package/dist/shared/hx-top-nav-CsTxOtVI.js.map +1 -0
  221. package/dist/shared/toast-factory-Dht3pVsw.js.map +1 -1
  222. package/figma-inventory.json +1121 -345
  223. package/package.json +2 -2
  224. package/dist/shared/hx-action-bar-CitgcpGv.js.map +0 -1
  225. package/dist/shared/hx-breadcrumb-item-3tKppF9h.js.map +0 -1
  226. package/dist/shared/hx-button-group-4NUBpkyC.js +0 -181
  227. package/dist/shared/hx-button-group-4NUBpkyC.js.map +0 -1
  228. package/dist/shared/hx-button-rRNmD4fd.js.map +0 -1
  229. package/dist/shared/hx-checkbox-group-D5piJLY8.js.map +0 -1
  230. package/dist/shared/hx-checkbox-hPlIw6Lb.js.map +0 -1
  231. package/dist/shared/hx-color-picker-DBwJzT5f.js.map +0 -1
  232. package/dist/shared/hx-copy-button-sUVuikyH.js.map +0 -1
  233. package/dist/shared/hx-date-picker-DSKDkCy1.js.map +0 -1
  234. package/dist/shared/hx-dropdown-D626S2ZG.js.map +0 -1
  235. package/dist/shared/hx-nav-item-CODtUlew.js.map +0 -1
  236. package/dist/shared/hx-nav-ldFM3Fle.js.map +0 -1
  237. package/dist/shared/hx-number-input-yUzFOSC1.js.map +0 -1
  238. package/dist/shared/hx-popover-BAlAFOH9.js.map +0 -1
  239. package/dist/shared/hx-popup-COUXXZ9X.js.map +0 -1
  240. package/dist/shared/hx-radio-CY4kQfZw.js.map +0 -1
  241. package/dist/shared/hx-split-button-Ddle8iVx.js.map +0 -1
  242. package/dist/shared/hx-switch-TvKGvZJz.js.map +0 -1
  243. package/dist/shared/hx-tab-panel-DzsX8BHV.js.map +0 -1
  244. package/dist/shared/hx-text-input-D6FlOZM-.js.map +0 -1
  245. package/dist/shared/hx-time-picker-Bo7FWzmf.js.map +0 -1
  246. package/dist/shared/hx-toggle-button-DSJeFlb0.js.map +0 -1
  247. package/dist/shared/hx-tooltip-DVqtKPCD.js.map +0 -1
  248. package/dist/shared/hx-top-nav-DP6OFS8C.js.map +0 -1
@@ -52,6 +52,24 @@ import { HelixElement } from '../../base/index.js';
52
52
  * @cssprop [--hx-space-1] - Spacing token.
53
53
  * @cssprop [--hx-space-2] - Spacing token.
54
54
  * @cssprop [--hx-border-width-thin] - Width.
55
+ * @aaa-certified 2026-05-08
56
+ * @aaa-criteria 1.4.6, 1.4.9, 2.1.3, 2.3.3, 2.4.12, 2.4.13, 2.5.5, 3.2.5, 3.3.6, forced-colors, apg-keyboard
57
+ * @aaa-audit src/components/hx-top-nav/AAA-AUDIT.md
58
+ * @keyboard-contract navigate=Arrow,Home,End; activate=Enter,Space
59
+ * @aria-pattern navigation
60
+ * @aria-pattern-source https://www.w3.org/WAI/ARIA/apg/patterns/landmarks/navigation.html
61
+ * @forced-colors-supported true
62
+ * @stability stable
63
+ * @since 3.7.0
64
+ * @form-associated false
65
+ * @theme-aware true
66
+ * @brand-aware true
67
+ * @drupal-sdc-eligible true
68
+ * @react-wrapper-status complete
69
+ * @figma-component-name hx-top-nav
70
+ * @priority-tier P0
71
+ * @phi-handles false
72
+ * @clinical-context none
55
73
  */
56
74
  export declare class HelixTopNav extends HelixElement {
57
75
  static styles: import('lit').CSSResult[];
@@ -1 +1 @@
1
- {"version":3,"file":"hx-top-nav.d.ts","sourceRoot":"","sources":["../../../src/components/hx-top-nav/hx-top-nav.ts"],"names":[],"mappings":"AACA,OAAO,4CAA4C,CAAC;AAGpD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAInD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqDG;AACH,qBACa,WAAY,SAAQ,YAAY;IAC3C,OAAgB,MAAM,4BAAgD;IAItE;;;OAGG;IAEH,MAAM,UAAS;IAEf;;;OAGG;IAEH,KAAK,SAAqB;IAI1B,6DAA6D;IAC7D,gBAAgB;IACP,OAAO,CAAC,WAAW,CAAS;IAI5B,iBAAiB,IAAI,IAAI;IAKzB,oBAAoB,IAAI,IAAI;IAOrC,gBAAgB;IAChB,OAAO,CAAC,mBAAmB;IAyC3B,gBAAgB;IAChB,OAAO,CAAC,cAAc,CAepB;IAIF,gBAAgB;IAChB,OAAO,CAAC,oBAAoB;IA4BnB,MAAM;CAwChB;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,YAAY,EAAE,WAAW,CAAC;KAC3B;CACF"}
1
+ {"version":3,"file":"hx-top-nav.d.ts","sourceRoot":"","sources":["../../../src/components/hx-top-nav/hx-top-nav.ts"],"names":[],"mappings":"AACA,OAAO,4CAA4C,CAAC;AAGpD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAInD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuEG;AACH,qBACa,WAAY,SAAQ,YAAY;IAC3C,OAAgB,MAAM,4BAAgD;IAItE;;;OAGG;IAEH,MAAM,UAAS;IAEf;;;OAGG;IAEH,KAAK,SAAqB;IAI1B,6DAA6D;IAC7D,gBAAgB;IACP,OAAO,CAAC,WAAW,CAAS;IAI5B,iBAAiB,IAAI,IAAI;IAKzB,oBAAoB,IAAI,IAAI;IAOrC,gBAAgB;IAChB,OAAO,CAAC,mBAAmB;IAyC3B,gBAAgB;IAChB,OAAO,CAAC,cAAc,CAepB;IAIF,gBAAgB;IAChB,OAAO,CAAC,oBAAoB;IA4BnB,MAAM;CAwChB;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,YAAY,EAAE,WAAW,CAAC;KAC3B;CACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"hx-top-nav.styles.d.ts","sourceRoot":"","sources":["../../../src/components/hx-top-nav/hx-top-nav.styles.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,iBAAiB,yBAgO7B,CAAC"}
1
+ {"version":3,"file":"hx-top-nav.styles.d.ts","sourceRoot":"","sources":["../../../src/components/hx-top-nav/hx-top-nav.styles.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,iBAAiB,yBA4O7B,CAAC"}
@@ -1,4 +1,4 @@
1
- import { H as e } from "../../shared/hx-top-nav-DP6OFS8C.js";
1
+ import { H as e } from "../../shared/hx-top-nav-CsTxOtVI.js";
2
2
  export {
3
3
  e as HelixTopNav
4
4
  };
@@ -136,6 +136,18 @@
136
136
  flex-shrink: 0;
137
137
  }
138
138
 
139
+ /*
140
+ * AAA 2.4.13 Focus Appearance — enforce a ≥2px focus ring on slotted
141
+ * natives (e.g. bare <button>, <a>) so consumers who slot non-HELiX
142
+ * controls inherit the same indicator as the HELiX components do.
143
+ * Token-driven: --hx-focus-ring-width resolves to 2px (default).
144
+ */
145
+ ::slotted(:focus-visible) {
146
+ outline: var(--hx-focus-ring-width, 2px) solid
147
+ var(--hx-action-bar-focus-ring-color, var(--hx-focus-ring-color, #0f7078));
148
+ outline-offset: var(--hx-focus-ring-offset, 2px);
149
+ }
150
+
139
151
  /* ─── High Contrast Mode (forced-colors) ─── */
140
152
 
141
153
  @media (forced-colors: active) {
@@ -1126,7 +1138,10 @@
1126
1138
  .button--md {
1127
1139
  padding: var(--hx-space-2, 0.5rem) var(--hx-space-4, 1rem);
1128
1140
  font-size: var(--hx-font-size-md, 1rem);
1129
- min-height: var(--hx-size-10, 2.5rem);
1141
+ /* WCAG 2.5.5 AAA Target Size (Enhanced): 44×44 minimum.
1142
+ Bound to --hx-touch-target-min so the default md variant clears the
1143
+ AAA-strict floor without requiring consumers to opt into sm or lg. */
1144
+ min-height: var(--hx-touch-target-min, 2.75rem);
1130
1145
  }
1131
1146
 
1132
1147
  .button--lg {
@@ -2137,6 +2152,16 @@
2137
2152
 
2138
2153
  /* ─── Focus Ring ─── */
2139
2154
 
2155
+ /*
2156
+ * Suppress the browser default ~1px host outline. Without this, the formal
2157
+ * AAA audit harness (which measures computed outline-width on the focused
2158
+ * host) records a sub-2px outline and reports WCAG 2.4.13 Partially Supports.
2159
+ * The visual focus indicator is rendered on the inner .checkbox__box below.
2160
+ */
2161
+ :host {
2162
+ outline: none;
2163
+ }
2164
+
2140
2165
  /*
2141
2166
  * Host-focus path: on the modern (IDL element-references) render branch the
2142
2167
  * host is the tabbable surface (tabindex=0) and the inner input is demoted
@@ -2381,6 +2406,17 @@
2381
2406
  cursor: not-allowed;
2382
2407
  }
2383
2408
 
2409
+ /*
2410
+ * AAA 2.4.13 Focus Appearance — host-level focus ring (group is focusable
2411
+ * via roving tabindex in Tier-2). Token-driven: --hx-focus-ring-width
2412
+ * resolves to ≥2px.
2413
+ */
2414
+ :host(:focus-visible) {
2415
+ outline: var(--hx-focus-ring-width, 2px) solid
2416
+ var(--hx-checkbox-group-focus-ring-color, var(--hx-focus-ring-color, #0f7078));
2417
+ outline-offset: var(--hx-focus-ring-offset, 2px);
2418
+ }
2419
+
2384
2420
  * {
2385
2421
  box-sizing: border-box;
2386
2422
  }
@@ -3016,6 +3052,10 @@
3016
3052
  background: var(--hx-color-neutral-0, #ffffff);
3017
3053
  cursor: pointer;
3018
3054
  transition: border-color var(--hx-transition-fast, 150ms ease);
3055
+ /* WCAG 2.5.5 AAA Target Size (Enhanced): 44×44 minimum.
3056
+ Bound to --hx-touch-target-min so the trigger clears the AAA-strict
3057
+ floor at default sizing. */
3058
+ min-height: var(--hx-touch-target-min, 2.75rem);
3019
3059
  }
3020
3060
  .trigger:hover:not([disabled]) {
3021
3061
  border-color: var(
@@ -3176,13 +3216,20 @@
3176
3216
  }
3177
3217
  .format-btn {
3178
3218
  flex-shrink: 0;
3219
+ /* WCAG 2.5.5 (Enhanced) AAA — interactive panel controls must clear
3220
+ 44×44. Without min-width/min-height the format toggle collapses to
3221
+ its label box (~44×24 in default rendering, sub-44 on the y-axis). */
3222
+ min-width: var(--hx-touch-target-min, 2.75rem);
3223
+ min-height: var(--hx-touch-target-min, 2.75rem);
3179
3224
  padding: var(--hx-space-1, 0.25rem) var(--hx-space-2, 0.5rem);
3180
3225
  background: var(--hx-color-neutral-100, #ebeee9);
3181
3226
  border: var(--hx-border-width-thin, 1px) solid var(--hx-color-neutral-300, #b6bfb9);
3182
3227
  border-radius: var(--hx-border-radius-sm, 0.25rem);
3183
3228
  cursor: pointer;
3184
3229
  font-size: var(--hx-font-size-xs, 0.75rem);
3185
- color: var(--hx-color-neutral-600, #4a5362);
3230
+ /* AAA 1.4.6: 12px label vs neutral-100 must be ≥7:1; neutral-700 = 9.34:1
3231
+ (neutral-600 was 6.63:1, a tight AAA miss). */
3232
+ color: var(--hx-color-neutral-700, #313e4b);
3186
3233
  text-transform: uppercase;
3187
3234
  font-weight: var(--hx-font-weight-semibold, 600);
3188
3235
  letter-spacing: 0.05em;
@@ -3190,6 +3237,8 @@
3190
3237
  .color-input {
3191
3238
  flex: 1;
3192
3239
  min-width: 0;
3240
+ /* WCAG 2.5.5 (Enhanced) AAA — text input must clear 44×44. */
3241
+ min-height: var(--hx-touch-target-min, 2.75rem);
3193
3242
  padding: var(--hx-space-1, 0.25rem) var(--hx-space-2, 0.5rem);
3194
3243
  border: var(--hx-border-width-thin, 1px) solid var(--hx-color-neutral-300, #b6bfb9);
3195
3244
  border-radius: var(--hx-border-radius-sm, 0.25rem);
@@ -3808,10 +3857,13 @@
3808
3857
  font-size: var(--hx-font-size-sm);
3809
3858
  }
3810
3859
 
3860
+ /* md — WCAG 2.5.5 AAA Target Size (Enhanced): 44×44 minimum.
3861
+ Bound to --hx-touch-target-min so the default md variant clears the
3862
+ AAA-strict floor without requiring consumers to opt into sm or lg. */
3811
3863
  .button--md {
3812
3864
  padding: var(--hx-space-2);
3813
- min-width: var(--hx-size-10);
3814
- height: var(--hx-size-10);
3865
+ min-width: var(--hx-touch-target-min, 2.75rem);
3866
+ min-height: var(--hx-touch-target-min, 2.75rem);
3815
3867
  font-size: var(--hx-font-size-md);
3816
3868
  }
3817
3869
 
@@ -4302,7 +4354,8 @@
4302
4354
  font-size: var(--hx-font-size-md, 1rem);
4303
4355
  color: var(--hx-date-picker-color, var(--hx-color-text-strong, #202b39));
4304
4356
  line-height: var(--hx-line-height-normal, 1.5);
4305
- min-height: var(--hx-size-10, 2.5rem);
4357
+ /* WCAG 2.5.5 (Enhanced) AAA — primary input surface must meet 44×44. */
4358
+ min-height: var(--hx-touch-target-min, 2.75rem);
4306
4359
  width: 100%;
4307
4360
  cursor: default;
4308
4361
  }
@@ -4323,6 +4376,10 @@
4323
4376
  display: flex;
4324
4377
  align-items: center;
4325
4378
  justify-content: center;
4379
+ /* WCAG 2.5.5 (Enhanced) AAA — calendar trigger must clear 44×44.
4380
+ Without min-width the icon button collapses to ~41 px wide. */
4381
+ min-width: var(--hx-touch-target-min, 2.75rem);
4382
+ min-height: var(--hx-touch-target-min, 2.75rem);
4326
4383
  padding: 0 var(--hx-space-3, 0.75rem);
4327
4384
  border: none;
4328
4385
  border-left: var(--hx-border-width-thin, 1px) solid
@@ -5246,6 +5303,19 @@
5246
5303
  display: inline-block;
5247
5304
  }
5248
5305
 
5306
+ /*
5307
+ * AAA 2.4.13 Focus Appearance — enforce a ≥2px focus ring on the slotted
5308
+ * trigger (typically <hx-button>, <button>, or <hx-icon-button>). The host
5309
+ * is a popover-container; the interactive surface is the slotted trigger.
5310
+ */
5311
+ ::slotted([slot='trigger']:focus-visible),
5312
+ ::slotted(button:focus-visible),
5313
+ ::slotted(a:focus-visible) {
5314
+ outline: var(--hx-focus-ring-width, 2px) solid
5315
+ var(--hx-dropdown-focus-ring-color, var(--hx-focus-ring-color, #0f7078));
5316
+ outline-offset: var(--hx-focus-ring-offset, 2px);
5317
+ }
5318
+
5249
5319
  [part='panel'] {
5250
5320
  position: fixed;
5251
5321
  z-index: var(--hx-dropdown-panel-z-index, 1000);
@@ -6649,6 +6719,16 @@ export const helixGridItemStyles = css`
6649
6719
  align-items: center;
6650
6720
  gap: var(--hx-space-1, 0.25rem);
6651
6721
  padding: var(--hx-nav-item-padding, var(--hx-space-2, 0.5rem) var(--hx-space-3, 0.75rem));
6722
+ /*
6723
+ * WCAG 2.5.5 (Enhanced) AAA — nav links rendered with default padding
6724
+ * land at ~37 px tall (8 px + 1.5 line-height + 8 px). The link
6725
+ * content is first-party (rendered via consumer-supplied props on
6726
+ * <hx-nav-item>), so the slotted-content carve-out does not apply —
6727
+ * this is a real component obligation. Bind --hx-nav-link-min-height
6728
+ * to --hx-touch-target-min (2.75rem / 44 px) to grow the interactive
6729
+ * area without enlarging the visible label.
6730
+ */
6731
+ min-height: var(--hx-nav-link-min-height, var(--hx-touch-target-min, 2.75rem));
6652
6732
  color: var(--hx-nav-link-color, var(--hx-color-neutral-100, #ebeee9));
6653
6733
  text-decoration: none;
6654
6734
  border-radius: var(--hx-nav-border-radius, var(--hx-border-radius-sm, 0.25rem));
@@ -6677,8 +6757,20 @@ export const helixGridItemStyles = css`
6677
6757
  }
6678
6758
 
6679
6759
  .nav__link--active {
6680
- background-color: var(--hx-nav-link-active-bg, var(--hx-color-primary-600, #0f7078));
6681
- color: var(--hx-nav-link-active-color, var(--hx-color-neutral-0, #ffffff));
6760
+ background-color: var(--hx-nav-link-active-bg, var(--hx-color-action-primary-bg, #0f6363));
6761
+ /* Use --hx-color-text-on-primary so the active-link text inherits the
6762
+ * action-surface AAA-strict pairing (white on primary-700 in default
6763
+ * themes; black on lighter primary-700 in the high-contrast theme).
6764
+ * Pre-3.4.0 this consumed --hx-color-primary-600 directly which
6765
+ * resolved to Apex #0F7078 + white = 5.82:1 — AAA-large only, AAA
6766
+ * normal fail under WCAG 1.4.6 for body-text-sized link labels. The
6767
+ * Phase 4 Tier 3 chain shift moved action.primary.bg to primary-700
6768
+ * (Apex 7.03:1 with white) and consuming the action semantic here
6769
+ * picks up the AAA-strict pairing across the full 6-brand matrix.
6770
+ * Hardcoding white previously failed AAA-large in high-contrast
6771
+ * (ratio 2.54 vs. 4.5 floor); the on-primary token resolves correctly
6772
+ * in HC mode. */
6773
+ color: var(--hx-nav-link-active-color, var(--hx-color-text-on-primary, #ffffff));
6682
6774
  }
6683
6775
 
6684
6776
  /* ─── Chevron Icon ─── */
@@ -6894,13 +6986,13 @@ export const helixGridItemStyles = css`
6894
6986
  .field__input-wrapper:focus-within {
6895
6987
  border-color: var(--hx-number-input-focus-ring-color, var(--hx-focus-ring-color));
6896
6988
  /* Fallback for Safari < 16.2 (no color-mix support) */
6897
- box-shadow: 0 0 0 var(--hx-focus-ring-width)
6989
+ box-shadow: 0 0 0 var(--hx-focus-ring-width, 2px)
6898
6990
  var(--hx-number-input-focus-ring-color, var(--hx-focus-ring-color));
6899
- box-shadow: 0 0 0 var(--hx-focus-ring-width)
6991
+ box-shadow: 0 0 0 var(--hx-focus-ring-width, 2px)
6900
6992
  color-mix(
6901
6993
  in srgb,
6902
6994
  var(--hx-number-input-focus-ring-color, var(--hx-focus-ring-color))
6903
- calc(var(--hx-focus-ring-opacity) * 100%),
6995
+ calc(var(--hx-focus-ring-opacity, 0.25) * 100%),
6904
6996
  transparent
6905
6997
  );
6906
6998
  }
@@ -6914,13 +7006,13 @@ export const helixGridItemStyles = css`
6914
7006
  .field--error .field__input-wrapper:focus-within {
6915
7007
  border-color: var(--hx-number-input-error-color, var(--hx-color-error-500, #e5493e));
6916
7008
  /* Fallback for Safari < 16.2 (no color-mix support) */
6917
- box-shadow: 0 0 0 var(--hx-focus-ring-width)
7009
+ box-shadow: 0 0 0 var(--hx-focus-ring-width, 2px)
6918
7010
  var(--hx-number-input-error-color, var(--hx-color-error-500, #e5493e));
6919
- box-shadow: 0 0 0 var(--hx-focus-ring-width)
7011
+ box-shadow: 0 0 0 var(--hx-focus-ring-width, 2px)
6920
7012
  color-mix(
6921
7013
  in srgb,
6922
7014
  var(--hx-number-input-error-color, var(--hx-color-error-500, #e5493e))
6923
- calc(var(--hx-focus-ring-opacity) * 100%),
7015
+ calc(var(--hx-focus-ring-opacity, 0.25) * 100%),
6924
7016
  transparent
6925
7017
  );
6926
7018
  }
@@ -6947,10 +7039,10 @@ export const helixGridItemStyles = css`
6947
7039
  color: var(--hx-number-input-color, var(--hx-color-text-strong));
6948
7040
  line-height: var(--hx-line-height-normal);
6949
7041
  width: 100%;
6950
- /* Size: md (default) */
7042
+ /* Size: md (default) — WCAG 2.5.5 (Enhanced) AAA touch target. */
6951
7043
  padding: var(--hx-space-2) var(--hx-space-3);
6952
7044
  font-size: var(--hx-font-size-md);
6953
- min-height: var(--hx-size-10);
7045
+ min-height: var(--hx-touch-target-min, 2.75rem);
6954
7046
  }
6955
7047
 
6956
7048
  .field__input::placeholder {
@@ -7810,6 +7902,19 @@ export const helixGridItemStyles = css`
7810
7902
  display: inline-block;
7811
7903
  }
7812
7904
 
7905
+ /*
7906
+ * AAA 2.4.13 Focus Appearance — enforce a ≥2px focus ring on the slotted
7907
+ * trigger so consumers who slot bare HTML controls inherit the same ring
7908
+ * width as <hx-button>. Token-driven: --hx-focus-ring-width (default 2px).
7909
+ */
7910
+ ::slotted([slot='trigger']:focus-visible),
7911
+ ::slotted(button:focus-visible),
7912
+ ::slotted(a:focus-visible) {
7913
+ outline: var(--hx-focus-ring-width, 2px) solid
7914
+ var(--hx-popover-focus-ring-color, var(--hx-focus-ring-color, #0f7078));
7915
+ outline-offset: var(--hx-focus-ring-offset, 2px);
7916
+ }
7917
+
7813
7918
  [part='body'] {
7814
7919
  position: fixed;
7815
7920
  z-index: var(--hx-popover-z-index, 9999);
@@ -7878,6 +7983,20 @@ export const helixGridItemStyles = css`
7878
7983
  display: inline-block;
7879
7984
  }
7880
7985
 
7986
+ /*
7987
+ * AAA 2.4.13 Focus Appearance — enforce a ≥2px focus ring on slotted
7988
+ * trigger / anchor controls. hx-popup is a positioning primitive: it
7989
+ * paints no surface itself, but slotted natives (<button>, <a>) must
7990
+ * still meet the AAA ring threshold. Token-driven.
7991
+ */
7992
+ ::slotted([slot='anchor']:focus-visible),
7993
+ ::slotted(button:focus-visible),
7994
+ ::slotted(a:focus-visible) {
7995
+ outline: var(--hx-focus-ring-width, 2px) solid
7996
+ var(--hx-popup-focus-ring-color, var(--hx-focus-ring-color, #0f7078));
7997
+ outline-offset: var(--hx-focus-ring-offset, 2px);
7998
+ }
7999
+
7881
8000
  [part='popup'] {
7882
8001
  position: fixed;
7883
8002
  z-index: var(--hx-popup-z-index, 9000);
@@ -8223,6 +8342,16 @@ export const helixGridItemStyles = css`
8223
8342
  pointer-events: none;
8224
8343
  }
8225
8344
 
8345
+ /*
8346
+ * AAA 2.4.13 Focus Appearance — host-level focus ring for the group host
8347
+ * when it carries focus via roving tabindex. Token-driven: ≥2px width.
8348
+ */
8349
+ :host(:focus-visible) {
8350
+ outline: var(--hx-focus-ring-width, 2px) solid
8351
+ var(--hx-radio-group-focus-ring-color, var(--hx-focus-ring-color, #0f7078));
8352
+ outline-offset: var(--hx-focus-ring-offset, 2px);
8353
+ }
8354
+
8226
8355
  * {
8227
8356
  box-sizing: border-box;
8228
8357
  }
@@ -8949,8 +9078,15 @@ export const helixGridItemStyles = css`
8949
9078
  display: flex;
8950
9079
  align-items: center;
8951
9080
  justify-content: center;
9081
+ /* Visual icon area stays 2rem (32px) — preserves the side-nav header
9082
+ silhouette while the wrapping touch target grows to 44×44 to meet
9083
+ WCAG 2.5.5 (Enhanced) AAA. min-width/min-height own the hit area;
9084
+ width/height drive the visual painted area, but the button's
9085
+ intrinsic size always matches the hit-area floor. */
8952
9086
  width: var(--hx-space-8, 2rem);
8953
9087
  height: var(--hx-space-8, 2rem);
9088
+ min-width: var(--hx-touch-target-min, 2.75rem);
9089
+ min-height: var(--hx-touch-target-min, 2.75rem);
8954
9090
  margin-inline-start: auto;
8955
9091
  flex-shrink: 0;
8956
9092
  padding: 0;
@@ -9706,16 +9842,22 @@ export const helixGridItemStyles = css`
9706
9842
  min-height: var(--hx-size-8, 2rem);
9707
9843
  }
9708
9844
 
9709
- /* md */
9845
+ /* md — WCAG 2.5.5 AAA Target Size (Enhanced): 44×44 minimum.
9846
+ Bound to --hx-touch-target-min so the default md variant clears the
9847
+ AAA-strict floor without requiring consumers to opt into sm or lg. */
9710
9848
  .split-button--md .split-button__primary {
9711
9849
  padding: var(--hx-space-2, 0.5rem) var(--hx-space-4, 1rem);
9712
9850
  font-size: var(--hx-font-size-md, 1rem);
9713
- min-height: var(--hx-size-10, 2.5rem);
9851
+ min-height: var(--hx-touch-target-min, 2.75rem);
9714
9852
  }
9715
9853
 
9716
9854
  .split-button--md .split-button__trigger {
9717
9855
  padding: var(--hx-space-2, 0.5rem) var(--hx-space-3, 0.75rem);
9718
- min-height: var(--hx-size-10, 2.5rem);
9856
+ /* WCAG 2.5.5 (Enhanced) AAA — chevron trigger must clear 44×44 in
9857
+ BOTH dimensions. Without min-width, the trigger collapses to its
9858
+ icon width (~38 px) and fails the brand-theme matrix audit. */
9859
+ min-width: var(--hx-touch-target-min, 2.75rem);
9860
+ min-height: var(--hx-touch-target-min, 2.75rem);
9719
9861
  }
9720
9862
 
9721
9863
  /* lg */
@@ -9732,21 +9874,27 @@ export const helixGridItemStyles = css`
9732
9874
 
9733
9875
  /* ─── Variant: primary ─── */
9734
9876
 
9877
+ /* Primary resting — bind through action.primary.bg (resolves to primary-600
9878
+ across all 6 brands) coordinated with text.on-primary. Inline fallback
9879
+ #0d1825 matches text.on-primary's resolved primitive (neutral-900) so a
9880
+ cold-start without semantic tokens paints AA-tuned dark-on-teal (5.20:1)
9881
+ rather than white-on-teal (3.43:1 fail). Mirrors hx-button precedent
9882
+ (hx-button.styles.ts ~line 88) and Phase C structural fix. */
9735
9883
  .split-button--primary .split-button__primary,
9736
9884
  .split-button--primary .split-button__trigger {
9737
- --hx-split-button-bg: var(--hx-color-primary-500, #429797);
9738
- --hx-split-button-color: var(--hx-color-text-on-primary, #ffffff);
9885
+ --hx-split-button-bg: var(--hx-color-action-primary-bg, #429797);
9886
+ --hx-split-button-color: var(--hx-color-text-on-primary, #0d1825);
9739
9887
  --hx-split-button-border-color: transparent;
9740
9888
  --hx-split-button-divider-color: var(--hx-color-primary-900, #0b3232);
9741
9889
  }
9742
9890
 
9743
- /* primary:hover — replace the universal brightness(0.9) filter (which would
9744
- drop primary-500 + on-primary contrast to ~4.4:1) with an explicit swap
9745
- to primary-600 and a neutral-0 foreground. Mirrors hx-button precedent. */
9891
+ /* primary:hover — lift to action.primary.bg-hover (primary-700) with
9892
+ text.on-primary-strong (neutral-0). Replaces the universal brightness(0.9)
9893
+ filter which would degrade contrast on the resting pair. */
9746
9894
  .split-button--primary .split-button__primary:hover,
9747
9895
  .split-button--primary .split-button__trigger:hover {
9748
- --hx-split-button-bg: var(--hx-color-primary-600, #0f7078);
9749
- --hx-split-button-color: var(--hx-color-neutral-0, #ffffff);
9896
+ --hx-split-button-bg: var(--hx-color-action-primary-bg-hover, #0f7078);
9897
+ --hx-split-button-color: var(--hx-color-text-on-primary-strong, #ffffff);
9750
9898
  filter: none;
9751
9899
  }
9752
9900
 
@@ -10679,6 +10827,13 @@ export const helixStructuredListRowStyles = css`
10679
10827
  /* ── hx-switch ── */
10680
10828
  :host {
10681
10829
  display: block;
10830
+ /*
10831
+ * Suppress the browser default ~1px host outline. Without this the formal
10832
+ * AAA audit harness (which measures computed outline-width on the focused
10833
+ * host) records a sub-2px outline and reports WCAG 2.4.13 Partially Supports.
10834
+ * The visual focus indicator is rendered on the inner .switch__track below.
10835
+ */
10836
+ outline: none;
10682
10837
  }
10683
10838
 
10684
10839
  :host([disabled]) {
@@ -10750,7 +10905,18 @@ export const helixStructuredListRowStyles = css`
10750
10905
  }
10751
10906
 
10752
10907
  .switch--checked .switch__track {
10753
- background-color: var(--hx-switch-track-checked-bg, var(--hx-color-primary-500, #429797));
10908
+ /* WCAG 1.4.6 AAA-strict 7:1: consume action.primary.bg (primary-700 since
10909
+ 3.4.0) so the checked track inherits the elevated AAA-strict action
10910
+ surface contract used by every other primary interactive surface
10911
+ (hx-button, hx-checkbox checked-bg, hx-radio checked-bg, etc.). The
10912
+ prior primary-500 fallback (#429797 in Apex) clears AA (5.20:1) but
10913
+ only resolves to ~6.11:1 in the formal harness's contrast probe —
10914
+ below the 7:1 AAA-strict floor. action.primary.bg = primary-700
10915
+ (#0F6363 in Apex) clears 7.03:1 across all 6 brands. */
10916
+ background-color: var(
10917
+ --hx-switch-track-checked-bg,
10918
+ var(--hx-color-action-primary-bg, var(--hx-color-primary-700, #0f7078))
10919
+ );
10754
10920
  }
10755
10921
 
10756
10922
  .switch:not(.switch--checked) .switch__track:hover {
@@ -11740,7 +11906,10 @@ export const helixTableSectionBaseStyles = css`
11740
11906
  font-size: var(--_text-input-font-size);
11741
11907
  color: var(--_text-input-color);
11742
11908
  line-height: var(--hx-line-height-normal, 1.5);
11743
- min-height: var(--hx-size-10, 2.5rem);
11909
+ /* WCAG 2.5.5 (Enhanced) AAA — primary input surface must meet 44×44.
11910
+ --hx-touch-target-min resolves to 2.75rem (44px); --hx-size-10 alone
11911
+ resolves to 2.5rem (40px) and fails AAA on the inner input. */
11912
+ min-height: var(--hx-touch-target-min, 2.75rem);
11744
11913
  width: 100%;
11745
11914
  }
11746
11915
 
@@ -12248,7 +12417,8 @@ export const helixTableSectionBaseStyles = css`
12248
12417
  font-size: var(--hx-font-size-md, 1rem);
12249
12418
  color: var(--hx-time-picker-color, var(--hx-color-text-strong, #202b39));
12250
12419
  line-height: var(--hx-line-height-normal, 1.5);
12251
- min-height: var(--hx-size-10, 2.5rem);
12420
+ /* WCAG 2.5.5 (Enhanced) AAA — primary input surface must meet 44×44. */
12421
+ min-height: var(--hx-touch-target-min, 2.75rem);
12252
12422
  width: 100%;
12253
12423
  cursor: text;
12254
12424
  }
@@ -12268,7 +12438,11 @@ export const helixTableSectionBaseStyles = css`
12268
12438
  color: var(--hx-time-picker-chevron-color, var(--hx-color-text-muted, #4a5362));
12269
12439
  cursor: pointer;
12270
12440
  height: 100%;
12271
- min-height: var(--hx-size-10, 2.5rem);
12441
+ /* WCAG 2.5.5 (Enhanced) AAA — toggle button must meet 44×44 in
12442
+ BOTH dimensions; without min-width the icon button collapses to
12443
+ ~41 px wide and fails the matrix audit. */
12444
+ min-width: var(--hx-touch-target-min, 2.75rem);
12445
+ min-height: var(--hx-touch-target-min, 2.75rem);
12272
12446
  flex-shrink: 0;
12273
12447
  border-inline-start: var(--hx-border-width-thin, 1px) solid
12274
12448
  var(--hx-time-picker-border-color, var(--hx-color-border-strong, #66787b));
@@ -12684,6 +12858,13 @@ export const helixToastStackStyles = css`
12684
12858
  /* ── hx-toggle-button ── */
12685
12859
  :host {
12686
12860
  display: inline-block;
12861
+ /*
12862
+ * Suppress the browser default ~1px host outline. Without this the formal
12863
+ * AAA audit harness (which measures computed outline-width on the focused
12864
+ * host) records a sub-2px outline and reports WCAG 2.4.13 Partially Supports.
12865
+ * The visual focus indicator is rendered on the inner .button below.
12866
+ */
12867
+ outline: none;
12687
12868
  }
12688
12869
 
12689
12870
  :host([disabled]) {
@@ -12761,7 +12942,10 @@ export const helixToastStackStyles = css`
12761
12942
  .button--md {
12762
12943
  padding: var(--hx-space-2, 0.5rem) var(--hx-space-4, 1rem);
12763
12944
  font-size: var(--hx-font-size-md, 1rem);
12764
- min-height: var(--hx-size-10, 2.5rem);
12945
+ /* WCAG 2.5.5 AAA Target Size (Enhanced): 44×44 minimum.
12946
+ Bound to --hx-touch-target-min so the default md variant clears the
12947
+ AAA-strict floor without requiring consumers to opt into sm or lg. */
12948
+ min-height: var(--hx-touch-target-min, 2.75rem);
12765
12949
  }
12766
12950
 
12767
12951
  .button--lg {
@@ -12971,6 +13155,19 @@ export const helixToastStackStyles = css`
12971
13155
  display: inline-block;
12972
13156
  }
12973
13157
 
13158
+ /*
13159
+ * AAA 2.4.13 Focus Appearance — enforce a ≥2px focus ring on the slotted
13160
+ * trigger. APG forbids the tooltip body from holding focus, so the
13161
+ * trigger is the only AAA-relevant focus surface. Token-driven.
13162
+ */
13163
+ ::slotted([slot='trigger']:focus-visible),
13164
+ ::slotted(button:focus-visible),
13165
+ ::slotted(a:focus-visible) {
13166
+ outline: var(--hx-focus-ring-width, 2px) solid
13167
+ var(--hx-tooltip-focus-ring-color, var(--hx-focus-ring-color, #0f7078));
13168
+ outline-offset: var(--hx-focus-ring-offset, 2px);
13169
+ }
13170
+
12974
13171
  [part='tooltip'] {
12975
13172
  position: fixed;
12976
13173
  z-index: var(--hx-tooltip-z-index, var(--hx-z-index-tooltip, 1600));
@@ -13105,6 +13302,18 @@ export const helixToastStackStyles = css`
13105
13302
  outline-offset: var(--hx-focus-ring-offset, 2px);
13106
13303
  }
13107
13304
 
13305
+ /*
13306
+ * AAA 2.4.13 Focus Appearance — enforce a ≥2px ring on slotted nav
13307
+ * controls (links, buttons, hx-link, hx-button). Slotted bare anchors
13308
+ * otherwise fall back to the 1px browser default.
13309
+ */
13310
+ ::slotted(a:focus-visible),
13311
+ ::slotted(button:focus-visible) {
13312
+ outline: var(--hx-focus-ring-width, 2px) solid
13313
+ var(--hx-top-nav-focus-ring-color, var(--hx-focus-ring-color, #0f7078));
13314
+ outline-offset: var(--hx-focus-ring-offset, 2px);
13315
+ }
13316
+
13108
13317
  .mobile-toggle__icon {
13109
13318
  width: var(--hx-space-6, 1.5rem);
13110
13319
  height: var(--hx-space-6, 1.5rem);
@@ -449,7 +449,10 @@
449
449
  .button--md {
450
450
  padding: var(--hx-space-2, 0.5rem) var(--hx-space-4, 1rem);
451
451
  font-size: var(--hx-font-size-md, 1rem);
452
- min-height: var(--hx-size-10, 2.5rem);
452
+ /* WCAG 2.5.5 AAA Target Size (Enhanced): 44×44 minimum.
453
+ Bound to --hx-touch-target-min so the default md variant clears the
454
+ AAA-strict floor without requiring consumers to opt into sm or lg. */
455
+ min-height: var(--hx-touch-target-min, 2.75rem);
453
456
  }
454
457
 
455
458
  .button--lg {