@helixui/library 3.3.1-next.118 → 3.4.0-next.121

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 (249) hide show
  1. package/custom-elements.json +422 -322
  2. package/dist/components/hx-alert/hx-alert.d.ts +11 -0
  3. package/dist/components/hx-alert/hx-alert.d.ts.map +1 -1
  4. package/dist/components/hx-alert/hx-alert.styles.d.ts.map +1 -1
  5. package/dist/components/hx-alert/index.js +1 -1
  6. package/dist/components/hx-badge/hx-badge.styles.d.ts.map +1 -1
  7. package/dist/components/hx-badge/index.js +1 -1
  8. package/dist/components/hx-banner/hx-banner.d.ts +9 -1
  9. package/dist/components/hx-banner/hx-banner.d.ts.map +1 -1
  10. package/dist/components/hx-banner/index.js +1 -1
  11. package/dist/components/hx-button/hx-button.d.ts +11 -1
  12. package/dist/components/hx-button/hx-button.d.ts.map +1 -1
  13. package/dist/components/hx-button/index.js +1 -1
  14. package/dist/components/hx-button-group/hx-button-group.d.ts +13 -0
  15. package/dist/components/hx-button-group/hx-button-group.d.ts.map +1 -1
  16. package/dist/components/hx-button-group/index.js +1 -1
  17. package/dist/components/hx-checkbox/hx-checkbox.d.ts.map +1 -1
  18. package/dist/components/hx-checkbox/index.js +1 -1
  19. package/dist/components/hx-checkbox-group/index.js +1 -1
  20. package/dist/components/hx-color-picker/index.js +1 -1
  21. package/dist/components/hx-combobox/index.js +1 -1
  22. package/dist/components/hx-data-table/hx-data-table.d.ts.map +1 -1
  23. package/dist/components/hx-data-table/index.js +1 -1
  24. package/dist/components/hx-date-picker/index.js +1 -1
  25. package/dist/components/hx-dialog/index.js +1 -1
  26. package/dist/components/hx-drawer/hx-drawer.d.ts +201 -0
  27. package/dist/components/hx-drawer/hx-drawer.d.ts.map +1 -1
  28. package/dist/components/hx-drawer/hx-drawer.styles.d.ts.map +1 -1
  29. package/dist/components/hx-drawer/index.js +1 -1
  30. package/dist/components/hx-dropdown/hx-dropdown.d.ts +96 -8
  31. package/dist/components/hx-dropdown/hx-dropdown.d.ts.map +1 -1
  32. package/dist/components/hx-dropdown/index.js +1 -1
  33. package/dist/components/hx-icon-button/hx-icon-button.d.ts +16 -3
  34. package/dist/components/hx-icon-button/hx-icon-button.d.ts.map +1 -1
  35. package/dist/components/hx-icon-button/hx-icon-button.styles.d.ts.map +1 -1
  36. package/dist/components/hx-icon-button/index.js +1 -1
  37. package/dist/components/hx-link/hx-link.d.ts +10 -1
  38. package/dist/components/hx-link/hx-link.d.ts.map +1 -1
  39. package/dist/components/hx-link/index.js +1 -1
  40. package/dist/components/hx-list/hx-list-item.d.ts +27 -1
  41. package/dist/components/hx-list/hx-list-item.d.ts.map +1 -1
  42. package/dist/components/hx-list/hx-list.d.ts +28 -0
  43. package/dist/components/hx-list/hx-list.d.ts.map +1 -1
  44. package/dist/components/hx-list/index.js +1 -1
  45. package/dist/components/hx-menu/hx-menu-divider.d.ts +10 -0
  46. package/dist/components/hx-menu/hx-menu-divider.d.ts.map +1 -1
  47. package/dist/components/hx-menu/hx-menu-item.d.ts +99 -2
  48. package/dist/components/hx-menu/hx-menu-item.d.ts.map +1 -1
  49. package/dist/components/hx-menu/hx-menu-item.styles.d.ts.map +1 -1
  50. package/dist/components/hx-menu/hx-menu.d.ts +117 -2
  51. package/dist/components/hx-menu/hx-menu.d.ts.map +1 -1
  52. package/dist/components/hx-menu/index.js +1 -1
  53. package/dist/components/hx-meter/hx-meter.d.ts +39 -0
  54. package/dist/components/hx-meter/hx-meter.d.ts.map +1 -1
  55. package/dist/components/hx-meter/hx-meter.styles.d.ts.map +1 -1
  56. package/dist/components/hx-meter/index.js +1 -1
  57. package/dist/components/hx-overflow-menu/hx-overflow-menu.d.ts +132 -1
  58. package/dist/components/hx-overflow-menu/hx-overflow-menu.d.ts.map +1 -1
  59. package/dist/components/hx-overflow-menu/index.js +1 -1
  60. package/dist/components/hx-phi-field/hx-phi-field.d.ts +0 -1
  61. package/dist/components/hx-phi-field/hx-phi-field.d.ts.map +1 -1
  62. package/dist/components/hx-popover/index.js +1 -1
  63. package/dist/components/hx-progress-bar/hx-progress-bar.d.ts +33 -0
  64. package/dist/components/hx-progress-bar/hx-progress-bar.d.ts.map +1 -1
  65. package/dist/components/hx-progress-bar/index.js +1 -1
  66. package/dist/components/hx-radio-group/index.js +1 -1
  67. package/dist/components/hx-select/hx-select.d.ts +1 -0
  68. package/dist/components/hx-select/hx-select.d.ts.map +1 -1
  69. package/dist/components/hx-select/index.js +1 -1
  70. package/dist/components/hx-spinner/hx-spinner.d.ts +14 -0
  71. package/dist/components/hx-spinner/hx-spinner.d.ts.map +1 -1
  72. package/dist/components/hx-spinner/index.js +1 -1
  73. package/dist/components/hx-split-button/hx-split-button.d.ts +94 -7
  74. package/dist/components/hx-split-button/hx-split-button.d.ts.map +1 -1
  75. package/dist/components/hx-split-button/index.js +1 -1
  76. package/dist/components/hx-stat/hx-stat.d.ts +28 -0
  77. package/dist/components/hx-stat/hx-stat.d.ts.map +1 -1
  78. package/dist/components/hx-stat/index.js +1 -1
  79. package/dist/components/hx-switch/index.js +1 -1
  80. package/dist/components/hx-table/hx-td.d.ts +30 -3
  81. package/dist/components/hx-table/hx-td.d.ts.map +1 -1
  82. package/dist/components/hx-table/hx-th.d.ts +39 -3
  83. package/dist/components/hx-table/hx-th.d.ts.map +1 -1
  84. package/dist/components/hx-table/hx-tr.d.ts +26 -0
  85. package/dist/components/hx-table/hx-tr.d.ts.map +1 -1
  86. package/dist/components/hx-table/index.js +1 -1
  87. package/dist/components/hx-tabs/hx-tab-panel.d.ts +34 -0
  88. package/dist/components/hx-tabs/hx-tab-panel.d.ts.map +1 -1
  89. package/dist/components/hx-tabs/hx-tab.d.ts +45 -2
  90. package/dist/components/hx-tabs/hx-tab.d.ts.map +1 -1
  91. package/dist/components/hx-tabs/hx-tab.styles.d.ts.map +1 -1
  92. package/dist/components/hx-tabs/hx-tabs.d.ts +32 -2
  93. package/dist/components/hx-tabs/hx-tabs.d.ts.map +1 -1
  94. package/dist/components/hx-tabs/index.js +1 -1
  95. package/dist/components/hx-tag/hx-tag.styles.d.ts.map +1 -1
  96. package/dist/components/hx-tag/index.js +1 -1
  97. package/dist/components/hx-theme/hx-theme.d.ts +10 -5
  98. package/dist/components/hx-theme/hx-theme.d.ts.map +1 -1
  99. package/dist/components/hx-time-picker/hx-time-picker.d.ts +210 -2
  100. package/dist/components/hx-time-picker/hx-time-picker.d.ts.map +1 -1
  101. package/dist/components/hx-time-picker/hx-time-picker.styles.d.ts.map +1 -1
  102. package/dist/components/hx-time-picker/index.js +1 -1
  103. package/dist/components/hx-toast/hx-toast-stack.d.ts +14 -0
  104. package/dist/components/hx-toast/hx-toast-stack.d.ts.map +1 -1
  105. package/dist/components/hx-toast/hx-toast.d.ts +22 -3
  106. package/dist/components/hx-toast/hx-toast.d.ts.map +1 -1
  107. package/dist/components/hx-toast/index.js +1 -1
  108. package/dist/components/hx-toast/toast-factory.d.ts.map +1 -1
  109. package/dist/components/hx-toggle-button/index.js +1 -1
  110. package/dist/components/hx-tree-view/hx-tree-item.d.ts +117 -12
  111. package/dist/components/hx-tree-view/hx-tree-item.d.ts.map +1 -1
  112. package/dist/components/hx-tree-view/hx-tree-view.d.ts +87 -7
  113. package/dist/components/hx-tree-view/hx-tree-view.d.ts.map +1 -1
  114. package/dist/components/hx-tree-view/index.js +1 -1
  115. package/dist/css/helix-all.css +123 -0
  116. package/dist/css/helix-core.css +81 -0
  117. package/dist/css/helix-feedback.css +14 -0
  118. package/dist/css/helix-forms.css +11 -0
  119. package/dist/css/helix-overlay.css +17 -0
  120. package/dist/css/hx-alert.css +9 -0
  121. package/dist/css/hx-badge.css +28 -0
  122. package/dist/css/hx-drawer.css +17 -0
  123. package/dist/css/hx-icon-button.css +30 -0
  124. package/dist/css/hx-meter.css +5 -0
  125. package/dist/css/hx-tag.css +23 -0
  126. package/dist/css/hx-time-picker.css +11 -0
  127. package/dist/css/index.css +1 -1
  128. package/dist/css/manifest.json +3 -1
  129. package/dist/index.js +35 -35
  130. package/dist/shared/aria-idref-CxvyzfQS.js +126 -0
  131. package/dist/shared/aria-idref-CxvyzfQS.js.map +1 -0
  132. package/dist/shared/{hx-alert-CLn7CstP.js → hx-alert-Bto8-TIi.js} +55 -37
  133. package/dist/shared/hx-alert-Bto8-TIi.js.map +1 -0
  134. package/dist/shared/{hx-badge-CQXgOXJM.js → hx-badge-JlFtAdxS.js} +37 -9
  135. package/dist/shared/hx-badge-JlFtAdxS.js.map +1 -0
  136. package/dist/shared/{hx-banner-D3DzpfcP.js → hx-banner-fpRnciIO.js} +13 -5
  137. package/dist/shared/hx-banner-fpRnciIO.js.map +1 -0
  138. package/dist/shared/{hx-button-DPY6SPVT.js → hx-button-BOwAEcF1.js} +108 -85
  139. package/dist/shared/{hx-button-DPY6SPVT.js.map → hx-button-BOwAEcF1.js.map} +1 -1
  140. package/dist/shared/{hx-button-group-BI-QBqmO.js → hx-button-group-DcHP5MBv.js} +15 -16
  141. package/dist/shared/{hx-button-group-BI-QBqmO.js.map → hx-button-group-DcHP5MBv.js.map} +1 -1
  142. package/dist/shared/{hx-checkbox-BdgoUeWi.js → hx-checkbox-C48KYKFq.js} +87 -87
  143. package/dist/shared/hx-checkbox-C48KYKFq.js.map +1 -0
  144. package/dist/shared/{hx-checkbox-group-LWezHrvS.js → hx-checkbox-group-BJIAX3zU.js} +2 -2
  145. package/dist/shared/{hx-checkbox-group-LWezHrvS.js.map → hx-checkbox-group-BJIAX3zU.js.map} +1 -1
  146. package/dist/shared/{hx-color-picker-DVhZl88b.js → hx-color-picker-Dk4cBwYQ.js} +2 -2
  147. package/dist/shared/{hx-color-picker-DVhZl88b.js.map → hx-color-picker-Dk4cBwYQ.js.map} +1 -1
  148. package/dist/shared/{hx-combobox-DvlezcDV.js → hx-combobox-BTLO9qiK.js} +2 -2
  149. package/dist/shared/{hx-combobox-DvlezcDV.js.map → hx-combobox-BTLO9qiK.js.map} +1 -1
  150. package/dist/shared/{hx-data-table-CLqVqdxr.js → hx-data-table-Ct3gQ6ya.js} +3 -2
  151. package/dist/shared/{hx-data-table-CLqVqdxr.js.map → hx-data-table-Ct3gQ6ya.js.map} +1 -1
  152. package/dist/shared/{hx-date-picker-N-0aG5XL.js → hx-date-picker-CiR7FVnR.js} +2 -2
  153. package/dist/shared/{hx-date-picker-N-0aG5XL.js.map → hx-date-picker-CiR7FVnR.js.map} +1 -1
  154. package/dist/shared/{hx-dialog-DzB7VytW.js → hx-dialog-AOZpHSuF.js} +2 -2
  155. package/dist/shared/{hx-dialog-DzB7VytW.js.map → hx-dialog-AOZpHSuF.js.map} +1 -1
  156. package/dist/shared/{hx-drawer-Y1Ui2IWJ.js → hx-drawer-DH6CdAN1.js} +300 -98
  157. package/dist/shared/hx-drawer-DH6CdAN1.js.map +1 -0
  158. package/dist/shared/hx-dropdown-DiLd40Lm.js +401 -0
  159. package/dist/shared/hx-dropdown-DiLd40Lm.js.map +1 -0
  160. package/dist/shared/{hx-icon-button-CGNdQSFM.js → hx-icon-button-a6OpeQz5.js} +149 -68
  161. package/dist/shared/hx-icon-button-a6OpeQz5.js.map +1 -0
  162. package/dist/shared/{hx-link-C-O6vq0Q.js → hx-link-CMnZRUtQ.js} +55 -43
  163. package/dist/shared/hx-link-CMnZRUtQ.js.map +1 -0
  164. package/dist/shared/{hx-list-MyEhh8c7.js → hx-list-De66EtAP.js} +163 -107
  165. package/dist/shared/hx-list-De66EtAP.js.map +1 -0
  166. package/dist/shared/hx-menu-divider-BjiRIWKq.js +797 -0
  167. package/dist/shared/hx-menu-divider-BjiRIWKq.js.map +1 -0
  168. package/dist/shared/{hx-meter-BPscsw5t.js → hx-meter-BJdh6nrF.js} +105 -64
  169. package/dist/shared/hx-meter-BJdh6nrF.js.map +1 -0
  170. package/dist/shared/hx-overflow-menu-BQ4fiMYu.js +492 -0
  171. package/dist/shared/hx-overflow-menu-BQ4fiMYu.js.map +1 -0
  172. package/dist/shared/hx-phi-field-C19oxlrr.js.map +1 -1
  173. package/dist/shared/{hx-popover-CHxWY_cd.js → hx-popover-B9W8-tC0.js} +2 -2
  174. package/dist/shared/{hx-popover-CHxWY_cd.js.map → hx-popover-B9W8-tC0.js.map} +1 -1
  175. package/dist/shared/hx-progress-bar-C8nDMdYa.js +290 -0
  176. package/dist/shared/hx-progress-bar-C8nDMdYa.js.map +1 -0
  177. package/dist/shared/{hx-radio-CeGzARNk.js → hx-radio-Z1lV1zTO.js} +2 -2
  178. package/dist/shared/{hx-radio-CeGzARNk.js.map → hx-radio-Z1lV1zTO.js.map} +1 -1
  179. package/dist/shared/{hx-select-DrcS-YRJ.js → hx-select-D18CnJ0e.js} +2 -2
  180. package/dist/shared/hx-select-D18CnJ0e.js.map +1 -0
  181. package/dist/shared/{hx-spinner-DL5AYr16.js → hx-spinner-BB0h2hKZ.js} +62 -34
  182. package/dist/shared/hx-spinner-BB0h2hKZ.js.map +1 -0
  183. package/dist/shared/{hx-split-button-Djnc5Aeg.js → hx-split-button-BoABoEm5.js} +153 -82
  184. package/dist/shared/hx-split-button-BoABoEm5.js.map +1 -0
  185. package/dist/shared/{hx-stat-WOcNV1Ry.js → hx-stat-Dtf9lz-O.js} +77 -47
  186. package/dist/shared/hx-stat-Dtf9lz-O.js.map +1 -0
  187. package/dist/shared/{hx-switch-BX_8uNUs.js → hx-switch-B6kr-EwE.js} +2 -2
  188. package/dist/shared/{hx-switch-BX_8uNUs.js.map → hx-switch-B6kr-EwE.js.map} +1 -1
  189. package/dist/shared/{hx-tab-panel-DspCrKqo.js → hx-tab-panel-BQtBXKLD.js} +255 -131
  190. package/dist/shared/hx-tab-panel-BQtBXKLD.js.map +1 -0
  191. package/dist/shared/{hx-tag-CNSmdyaK.js → hx-tag-C5aCUpVi.js} +63 -40
  192. package/dist/shared/hx-tag-C5aCUpVi.js.map +1 -0
  193. package/dist/shared/{hx-td-DnnEMIuA.js → hx-td-BGkFOJEK.js} +267 -123
  194. package/dist/shared/hx-td-BGkFOJEK.js.map +1 -0
  195. package/dist/shared/hx-theme-BsefFWTO.js.map +1 -1
  196. package/dist/shared/hx-time-picker-iwCD7rzW.js +1038 -0
  197. package/dist/shared/hx-time-picker-iwCD7rzW.js.map +1 -0
  198. package/dist/shared/{hx-toggle-button-Dcz9IlUm.js → hx-toggle-button-BQ81EDkl.js} +2 -2
  199. package/dist/shared/{hx-toggle-button-Dcz9IlUm.js.map → hx-toggle-button-BQ81EDkl.js.map} +1 -1
  200. package/dist/shared/hx-tree-item-CHrUhuZL.js +925 -0
  201. package/dist/shared/hx-tree-item-CHrUhuZL.js.map +1 -0
  202. package/dist/shared/menu-roving-DmMnzJhn.js +14 -0
  203. package/dist/shared/menu-roving-DmMnzJhn.js.map +1 -0
  204. package/dist/shared/menu-tree-BNM0SYYq.js +42 -0
  205. package/dist/shared/menu-tree-BNM0SYYq.js.map +1 -0
  206. package/dist/shared/{toast-factory-YSznocIV.js → toast-factory-CL2BzdSB.js} +128 -77
  207. package/dist/shared/toast-factory-CL2BzdSB.js.map +1 -0
  208. package/dist/utils/aria-idref.d.ts.map +1 -1
  209. package/dist/utils/menu-label.d.ts +18 -0
  210. package/dist/utils/menu-label.d.ts.map +1 -0
  211. package/dist/utils/menu-roving.d.ts +28 -0
  212. package/dist/utils/menu-roving.d.ts.map +1 -0
  213. package/dist/utils/menu-tree.d.ts +41 -0
  214. package/dist/utils/menu-tree.d.ts.map +1 -0
  215. package/dist/utils/tree-walk.d.ts +53 -0
  216. package/dist/utils/tree-walk.d.ts.map +1 -0
  217. package/figma-inventory.json +69 -20
  218. package/package.json +2 -2
  219. package/dist/shared/aria-idref-Q0yiSR3p.js +0 -104
  220. package/dist/shared/aria-idref-Q0yiSR3p.js.map +0 -1
  221. package/dist/shared/hx-alert-CLn7CstP.js.map +0 -1
  222. package/dist/shared/hx-badge-CQXgOXJM.js.map +0 -1
  223. package/dist/shared/hx-banner-D3DzpfcP.js.map +0 -1
  224. package/dist/shared/hx-checkbox-BdgoUeWi.js.map +0 -1
  225. package/dist/shared/hx-drawer-Y1Ui2IWJ.js.map +0 -1
  226. package/dist/shared/hx-dropdown-DJWlF94E.js +0 -316
  227. package/dist/shared/hx-dropdown-DJWlF94E.js.map +0 -1
  228. package/dist/shared/hx-icon-button-CGNdQSFM.js.map +0 -1
  229. package/dist/shared/hx-link-C-O6vq0Q.js.map +0 -1
  230. package/dist/shared/hx-list-MyEhh8c7.js.map +0 -1
  231. package/dist/shared/hx-menu-divider-C2omnPtj.js +0 -558
  232. package/dist/shared/hx-menu-divider-C2omnPtj.js.map +0 -1
  233. package/dist/shared/hx-meter-BPscsw5t.js.map +0 -1
  234. package/dist/shared/hx-overflow-menu-DCLsdIBy.js +0 -374
  235. package/dist/shared/hx-overflow-menu-DCLsdIBy.js.map +0 -1
  236. package/dist/shared/hx-progress-bar-Bn3JEPUf.js +0 -258
  237. package/dist/shared/hx-progress-bar-Bn3JEPUf.js.map +0 -1
  238. package/dist/shared/hx-select-DrcS-YRJ.js.map +0 -1
  239. package/dist/shared/hx-spinner-DL5AYr16.js.map +0 -1
  240. package/dist/shared/hx-split-button-Djnc5Aeg.js.map +0 -1
  241. package/dist/shared/hx-stat-WOcNV1Ry.js.map +0 -1
  242. package/dist/shared/hx-tab-panel-DspCrKqo.js.map +0 -1
  243. package/dist/shared/hx-tag-CNSmdyaK.js.map +0 -1
  244. package/dist/shared/hx-td-DnnEMIuA.js.map +0 -1
  245. package/dist/shared/hx-time-picker-BoEIZwzv.js +0 -688
  246. package/dist/shared/hx-time-picker-BoEIZwzv.js.map +0 -1
  247. package/dist/shared/hx-tree-item-C2CiWuDE.js +0 -703
  248. package/dist/shared/hx-tree-item-C2CiWuDE.js.map +0 -1
  249. package/dist/shared/toast-factory-YSznocIV.js.map +0 -1
@@ -1,9 +1,31 @@
1
+ import { PropertyValues } from 'lit';
1
2
  import { HelixElement } from '../../base/index.js';
2
3
  /**
3
4
  * A split button combining a primary action button with an attached dropdown
4
5
  * menu for secondary actions. Implements the ARIA menu button pattern for
5
6
  * full keyboard and screen reader support.
6
7
  *
8
+ * ## Architecture Note: Composite host with two interactive children (Group 5b)
9
+ *
10
+ * The host wraps a primary `<button>`, a dropdown trigger `<button>`, and a
11
+ * panel `<div role="menu">` — three ARIA-bearing surfaces that cannot all
12
+ * collapse onto the host. Group 5b keeps role placement on the inner
13
+ * elements (consistent with `hx-overflow-menu`). The host carries no role.
14
+ *
15
+ * What Group 5b adds:
16
+ * - **Host-attribute label mirror** via `installAriaIdrefMirror`: consumer
17
+ * `aria-label` / `aria-labelledby` on the host flow to the inner primary
18
+ * button's `aria-label`. Replaces the legacy `accessible-label` shim,
19
+ * which was a workaround for ARIAMixin shadowing on the host. The shim
20
+ * is preserved with a one-time devWarn for one minor version of back-
21
+ * compat; new code should use the standard `aria-label` attribute.
22
+ * - **Roving tabindex** on slotted `hx-menu-item` children inside the
23
+ * panel. Only the focused item carries `tabindex=0`; arrow key
24
+ * navigation rewrites the tabindex map via `_applyRovingTabIndex()`.
25
+ * `setRovingTabIndex` is the same setter used by `hx-menu` for cross-
26
+ * family pattern alignment.
27
+ * - **First-character typeahead** with 500ms timeout matching `hx-menu`.
28
+ *
7
29
  * @summary Primary action button with attached dropdown menu for secondary actions.
8
30
  *
9
31
  * @tag hx-split-button
@@ -112,14 +134,16 @@ export declare class HelixSplitButton extends HelixElement {
112
134
  */
113
135
  label: string | undefined;
114
136
  /**
115
- * Accessible label for the primary action button. Required for icon-only usage
116
- * or when the button label alone is insufficient context.
117
- * Uses `accessible-label` attribute instead of `aria-label` to avoid
118
- * ARIAMixin shadowing on the host element.
137
+ * @deprecated Use the standard host `aria-label` attribute instead. Group
138
+ * 5b replaces the `accessible-label` shim with a host-attribute mirror
139
+ * driven by `installAriaIdrefMirror` consumer host `aria-label` /
140
+ * `aria-labelledby` flow to the inner primary button's `aria-label`,
141
+ * which is the same composed-tree result as the legacy shim without
142
+ * the ARIAMixin shadowing concern.
119
143
  *
120
- * Note: `mixinDelegatesAria` is not applied to this component because the
121
- * `accessible-label` attribute approach avoids the ARIAMixin property conflict
122
- * without requiring mixin overhead.
144
+ * The attribute remains observed for one minor version so existing
145
+ * consumers do not regress; setting it logs a devWarn pointing them to
146
+ * the standard `aria-label` path.
123
147
  * @attr accessible-label
124
148
  */
125
149
  accessibleLabel: string;
@@ -138,8 +162,36 @@ export declare class HelixSplitButton extends HelixElement {
138
162
  * @internal
139
163
  */
140
164
  private readonly _menuId;
165
+ /**
166
+ * Resolved accessible name for the primary action button — written to
167
+ * the inner primary button's `aria-label` on render. AccName 1.2 §4.3.1
168
+ * precedence: host `aria-labelledby` (resolved IDREFs, flattened) >
169
+ * host `aria-label` > deprecated `accessible-label` (with devWarn) >
170
+ * `label` property > slotted text content (no aria-label set when this
171
+ * branch is taken so AT walks the inner content for the name).
172
+ * @internal
173
+ */
174
+ private _resolvedPrimaryLabel;
175
+ /** @internal */
176
+ private _ariaMirror;
177
+ /** @internal */
178
+ private _rovingIndex;
179
+ /** @internal */
180
+ private _typeaheadBuffer;
181
+ /** @internal */
182
+ private _typeaheadTimer;
141
183
  connectedCallback(): void;
142
184
  disconnectedCallback(): void;
185
+ willUpdate(changedProperties: PropertyValues<this>): void;
186
+ /**
187
+ * Resolve the primary button's accessible name from host attributes
188
+ * and (deprecated) properties. See `_resolvedPrimaryLabel` jsdoc for
189
+ * precedence rules.
190
+ * @internal
191
+ */
192
+ private _syncResolvedPrimaryLabel;
193
+ /** @internal */
194
+ private _deprecatedAccessibleLabelWarned;
143
195
  /** @internal */
144
196
  private readonly _handleOutsideClick;
145
197
  /** @internal */
@@ -155,7 +207,42 @@ export declare class HelixSplitButton extends HelixElement {
155
207
  /** @internal */
156
208
  private _handleMenuKeydown;
157
209
  /** @internal */
210
+ private _focusMenuItem;
211
+ /**
212
+ * Roving tabindex: only the focused item carries tabindex=0; the rest
213
+ * are tabindex=-1. Tab from the panel exits the menu via document
214
+ * keydown (line ~_handleDocumentKeydown), so the closing-Tab path
215
+ * remains correct.
216
+ * @internal
217
+ */
218
+ private _applyRovingTabIndex;
219
+ /** @internal */
220
+ private _handleTypeahead;
221
+ /** @internal */
158
222
  private _handleMenuItemSelect;
223
+ /**
224
+ * Bubbled `hx-item-submenu-open` from a slotted `hx-menu-item` host.
225
+ * Codex push-gate round-9 P1: when slotted `hx-menu-item`s open / close
226
+ * a nested submenu inside this menu panel (no enclosing `hx-menu`), the
227
+ * events fly past with no handler. Match the round-4
228
+ * `hx-menu._handleSubmenuOpen` shape so APG behaviour holds. Defer to
229
+ * an inner `hx-menu` when present (it owns the toggle). Otherwise this
230
+ * panel is the enclosing menu surface — call `setSubmenuOpen(true)` on
231
+ * the dispatching item and focus its first nested child.
232
+ * @internal
233
+ */
234
+ private _handleMenuSubmenuOpen;
235
+ /**
236
+ * Bubbled `hx-item-submenu-close` from a slotted `hx-menu-item` host.
237
+ * Codex push-gate round-9 P1: when an inner `hx-menu` (a nested
238
+ * submenu) handles its own close, the event still bubbles through this
239
+ * panel — defer in that case so the panel stays open. When the
240
+ * dispatching item is top-level inside this panel (no enclosing
241
+ * `hx-menu`), there is no parent submenu to collapse, so close the
242
+ * composite's menu and return focus to the trigger button.
243
+ * @internal
244
+ */
245
+ private _handleMenuSubmenuClose;
159
246
  /** @internal */
160
247
  private _openMenu;
161
248
  /** @internal */
@@ -1 +1 @@
1
- {"version":3,"file":"hx-split-button.d.ts","sourceRoot":"","sources":["../../../src/components/hx-split-button/hx-split-button.ts"],"names":[],"mappings":"AACA,OAAO,4CAA4C,CAAC;AAGpD,OAAO,EAAE,YAAY,EAAmB,MAAM,qBAAqB,CAAC;AAOpE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyEG;AACH,qBACa,gBAAiB,SAAQ,YAAY;IAChD,OAAgB,MAAM,4BAAqD;IAI3E;;;OAGG;IAEH,OAAO,CAAC,UAAU,CAA0B;IAE5C;;;OAGG;IAEH,OAAO,CAAC,cAAc,CAAgC;IAItD;;;OAGG;IACM,OAAO,CAAC,KAAK,CAAS;IAI/B;;;OAGG;IAEH,OAAO,EAAE,SAAS,GAAG,WAAW,GAAG,UAAU,GAAG,QAAQ,GAAG,OAAO,GAAG,SAAS,CAAa;IAE3F;;;OAGG;IAEH,IAAI,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,CAAQ;IAEhC;;;;OAIG;IAEH,QAAQ,UAAS;IAEjB;;;OAGG;IAEH,KAAK,EAAE,MAAM,GAAG,SAAS,CAAa;IAEtC;;;;;;;;;;OAUG;IAEH,eAAe,SAAM;IAErB;;;OAGG;IAEH,YAAY,SAAkB;IAE9B;;;OAGG;IAEH,SAAS,SAAuB;IAIhC;;;OAGG;IACH,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAkC;IAIjD,iBAAiB,IAAI,IAAI;IAMzB,oBAAoB,IAAI,IAAI;IAQrC,gBAAgB;IAChB,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAMlC;IAEF,gBAAgB;IAChB,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAKrC;IAIF,gBAAgB;IAChB,OAAO,CAAC,mBAAmB;IAoB3B,gBAAgB;IAChB,OAAO,CAAC,qBAAqB;IAU7B,gBAAgB;IAChB,OAAO,CAAC,mBAAmB;IAW3B,gBAAgB;IAChB,OAAO,CAAC,qBAAqB;IAU7B,gBAAgB;IAChB,OAAO,CAAC,kBAAkB;IA0C1B,gBAAgB;IAChB,OAAO,CAAC,qBAAqB;IAwB7B,gBAAgB;IAChB,OAAO,CAAC,SAAS;IAYjB,gBAAgB;IAChB,OAAO,CAAC,UAAU;IAIlB,gBAAgB;IAChB,OAAO,CAAC,WAAW;IAQnB;;;;;OAKG;IACH,gBAAgB;IAChB,OAAO,CAAC,aAAa;IAcZ,MAAM;CA+EhB;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,iBAAiB,EAAE,gBAAgB,CAAC;KACrC;CACF"}
1
+ {"version":3,"file":"hx-split-button.d.ts","sourceRoot":"","sources":["../../../src/components/hx-split-button/hx-split-button.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,KAAK,cAAc,EAAE,MAAM,KAAK,CAAC;AACzD,OAAO,4CAA4C,CAAC;AAGpD,OAAO,EAAE,YAAY,EAAmB,MAAM,qBAAqB,CAAC;AAgBpE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8FG;AACH,qBACa,gBAAiB,SAAQ,YAAY;IAChD,OAAgB,MAAM,4BAAqD;IAI3E;;;OAGG;IAEH,OAAO,CAAC,UAAU,CAA0B;IAE5C;;;OAGG;IAEH,OAAO,CAAC,cAAc,CAAgC;IAItD;;;OAGG;IACM,OAAO,CAAC,KAAK,CAAS;IAI/B;;;OAGG;IAEH,OAAO,EAAE,SAAS,GAAG,WAAW,GAAG,UAAU,GAAG,QAAQ,GAAG,OAAO,GAAG,SAAS,CAAa;IAE3F;;;OAGG;IAEH,IAAI,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,CAAQ;IAEhC;;;;OAIG;IAEH,QAAQ,UAAS;IAEjB;;;OAGG;IAEH,KAAK,EAAE,MAAM,GAAG,SAAS,CAAa;IAEtC;;;;;;;;;;;;OAYG;IAEH,eAAe,SAAM;IAErB;;;OAGG;IAEH,YAAY,SAAkB;IAE9B;;;OAGG;IAEH,SAAS,SAAuB;IAIhC;;;OAGG;IACH,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAkC;IAI1D;;;;;;;;OAQG;IACM,OAAO,CAAC,qBAAqB,CAAuB;IAE7D,gBAAgB;IAChB,OAAO,CAAC,WAAW,CAAsC;IAIzD,gBAAgB;IAChB,OAAO,CAAC,YAAY,CAAM;IAE1B,gBAAgB;IAChB,OAAO,CAAC,gBAAgB,CAAM;IAE9B,gBAAgB;IAChB,OAAO,CAAC,eAAe,CAA8C;IAI5D,iBAAiB,IAAI,IAAI;IAUzB,oBAAoB,IAAI,IAAI;IAY5B,UAAU,CAAC,iBAAiB,EAAE,cAAc,CAAC,IAAI,CAAC,GAAG,IAAI;IAOlE;;;;;OAKG;IACH,OAAO,CAAC,yBAAyB;IA8CjC,gBAAgB;IAChB,OAAO,CAAC,gCAAgC,CAAS;IAIjD,gBAAgB;IAChB,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAMlC;IAEF,gBAAgB;IAChB,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAKrC;IAIF,gBAAgB;IAChB,OAAO,CAAC,mBAAmB;IAoB3B,gBAAgB;IAChB,OAAO,CAAC,qBAAqB;IAU7B,gBAAgB;IAChB,OAAO,CAAC,mBAAmB;IAW3B,gBAAgB;IAChB,OAAO,CAAC,qBAAqB;IAU7B,gBAAgB;IAChB,OAAO,CAAC,kBAAkB;IAiD1B,gBAAgB;IAChB,OAAO,CAAC,cAAc;IAMtB;;;;;;OAMG;IACH,OAAO,CAAC,oBAAoB;IAM5B,gBAAgB;IAChB,OAAO,CAAC,gBAAgB;IAwBxB,gBAAgB;IAChB,OAAO,CAAC,qBAAqB;IAsB7B;;;;;;;;;;OAUG;IACH,OAAO,CAAC,sBAAsB,CAsB5B;IAEF;;;;;;;;;OASG;IACH,OAAO,CAAC,uBAAuB,CAS7B;IAIF,gBAAgB;IAChB,OAAO,CAAC,SAAS;IAgBjB,gBAAgB;IAChB,OAAO,CAAC,UAAU;IAIlB,gBAAgB;IAChB,OAAO,CAAC,WAAW;IAQnB;;;;;OAKG;IACH,gBAAgB;IAChB,OAAO,CAAC,aAAa;IAcZ,MAAM;CAiFhB;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,iBAAiB,EAAE,gBAAgB,CAAC;KACrC;CACF"}
@@ -1,4 +1,4 @@
1
- import { H as e } from "../../shared/hx-split-button-Djnc5Aeg.js";
1
+ import { H as e } from "../../shared/hx-split-button-BoABoEm5.js";
2
2
  export {
3
3
  e as HelixSplitButton
4
4
  };
@@ -5,6 +5,13 @@ export type StatTrend = 'up' | 'down' | 'neutral';
5
5
  /**
6
6
  * A static stat display component for presenting key metrics in a healthcare dashboard.
7
7
  *
8
+ * Group 7 host-canonical: `role="group"` lives on the **host** via
9
+ * `_internals.role`. The host carries the resolved accessible name so AT
10
+ * walks `<hx-stat>` (role=group, label="value: label") directly. The
11
+ * internal `aria-live="polite"` announcer remains in the shadow tree —
12
+ * `role="group"` does NOT imply a live region, so the announcer is required
13
+ * for value/label/trend update announcements.
14
+ *
8
15
  * @summary Displays a labeled metric value with optional trend indicator and icon slot.
9
16
  *
10
17
  * @tag hx-stat
@@ -63,6 +70,12 @@ export type StatTrend = 'up' | 'down' | 'neutral';
63
70
  */
64
71
  export declare class HelixStat extends HelixElement {
65
72
  static styles: import('lit').CSSResult[];
73
+ /**
74
+ * Test seam (Group 7 host-canonical migration): see other Group 7 components.
75
+ * Production code MUST NOT touch this field.
76
+ * @internal
77
+ */
78
+ static __testSupportsIdrefRefsOverride: boolean | null;
66
79
  /**
67
80
  * The metric label displayed below the value.
68
81
  * @attr label
@@ -90,8 +103,23 @@ export declare class HelixStat extends HelixElement {
90
103
  labelTrend: string;
91
104
  /** @internal tracks whether the "unnamed" devWarn has already fired this lifecycle */
92
105
  private _hasWarnedUnnamed;
106
+ /** @internal */
107
+ private _supportsIdrefRefs;
108
+ /** @internal */
109
+ private _ariaMirror;
110
+ /** @internal */
111
+ private _resolvedAccessibleName;
93
112
  connectedCallback(): void;
113
+ disconnectedCallback(): void;
94
114
  updated(changedProperties: PropertyValues<this>): void;
115
+ /**
116
+ * Mirror group semantics onto the host. The default group label is
117
+ * `${value}: ${label}` (matching the prior inner-div behaviour). Consumer
118
+ * `aria-label` / `aria-labelledby` on the host take precedence per AccName
119
+ * 1.2 §4.3.1.
120
+ * @internal
121
+ */
122
+ private _syncHostAriaSemantics;
95
123
  /** @internal */
96
124
  private _hasIcon;
97
125
  /** @internal */
@@ -1 +1 @@
1
- {"version":3,"file":"hx-stat.d.ts","sourceRoot":"","sources":["../../../src/components/hx-stat/hx-stat.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,KAAK,cAAc,EAAE,MAAM,KAAK,CAAC;AACzD,OAAO,4CAA4C,CAAC;AAIpD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAInD,MAAM,MAAM,QAAQ,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AAC1C,MAAM,MAAM,SAAS,GAAG,IAAI,GAAG,MAAM,GAAG,SAAS,CAAC;AAElD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0DG;AACH,qBACa,SAAU,SAAQ,YAAY;IACzC,OAAgB,MAAM,4BAA0C;IAEhE;;;OAGG;IAEH,KAAK,SAAM;IAEX;;;OAGG;IAEH,KAAK,SAAM;IAEX;;;OAGG;IAEH,KAAK,EAAE,IAAI,GAAG,MAAM,GAAG,SAAS,CAAa;IAE7C;;;OAGG;IAEH,IAAI,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,CAAQ;IAEhC;;;OAGG;IACqC,UAAU,SAAW;IAE7D,sFAAsF;IACtF,OAAO,CAAC,iBAAiB,CAAS;IAIzB,iBAAiB,IAAI,IAAI;IAWzB,OAAO,CAAC,iBAAiB,EAAE,cAAc,CAAC,IAAI,CAAC,GAAG,IAAI;IAmB/D,gBAAgB;IACP,OAAO,CAAC,QAAQ,CAAS;IAElC,gBAAgB;IAChB,OAAO,CAAC,iBAAiB;IAOzB,gBAAgB;IAChB,OAAO,CAAC,iBAAiB;IAyChB,MAAM;CAsDhB;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,SAAS,EAAE,SAAS,CAAC;KACtB;CACF"}
1
+ {"version":3,"file":"hx-stat.d.ts","sourceRoot":"","sources":["../../../src/components/hx-stat/hx-stat.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,KAAK,cAAc,EAAE,MAAM,KAAK,CAAC;AACzD,OAAO,4CAA4C,CAAC;AAIpD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAWnD,MAAM,MAAM,QAAQ,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AAC1C,MAAM,MAAM,SAAS,GAAG,IAAI,GAAG,MAAM,GAAG,SAAS,CAAC;AAElD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiEG;AACH,qBACa,SAAU,SAAQ,YAAY;IACzC,OAAgB,MAAM,4BAA0C;IAEhE;;;;OAIG;IACH,MAAM,CAAC,+BAA+B,EAAE,OAAO,GAAG,IAAI,CAAQ;IAE9D;;;OAGG;IAEH,KAAK,SAAM;IAEX;;;OAGG;IAEH,KAAK,SAAM;IAEX;;;OAGG;IAEH,KAAK,EAAE,IAAI,GAAG,MAAM,GAAG,SAAS,CAAa;IAE7C;;;OAGG;IAEH,IAAI,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,CAAQ;IAEhC;;;OAGG;IACqC,UAAU,SAAW;IAE7D,sFAAsF;IACtF,OAAO,CAAC,iBAAiB,CAAS;IAIlC,gBAAgB;IAChB,OAAO,CAAC,kBAAkB,CAAQ;IAElC,gBAAgB;IAChB,OAAO,CAAC,WAAW,CAAsC;IAEzD,gBAAgB;IAChB,OAAO,CAAC,uBAAuB,CAAM;IAI5B,iBAAiB,IAAI,IAAI;IAqBzB,oBAAoB,IAAI,IAAI;IAM5B,OAAO,CAAC,iBAAiB,EAAE,cAAc,CAAC,IAAI,CAAC,GAAG,IAAI;IA0B/D;;;;;;OAMG;IACH,OAAO,CAAC,sBAAsB;IAkE9B,gBAAgB;IACP,OAAO,CAAC,QAAQ,CAAS;IAElC,gBAAgB;IAChB,OAAO,CAAC,iBAAiB;IAOzB,gBAAgB;IAChB,OAAO,CAAC,iBAAiB;IAyChB,MAAM;CA0DhB;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,SAAS,EAAE,SAAS,CAAC;KACtB;CACF"}
@@ -1,4 +1,4 @@
1
- import { H as e } from "../../shared/hx-stat-WOcNV1Ry.js";
1
+ import { H as e } from "../../shared/hx-stat-Dtf9lz-O.js";
2
2
  export {
3
3
  e as HelixStat
4
4
  };
@@ -1,4 +1,4 @@
1
- import { H as o } from "../../shared/hx-switch-BX_8uNUs.js";
1
+ import { H as o } from "../../shared/hx-switch-B6kr-EwE.js";
2
2
  export {
3
3
  o as HelixSwitch
4
4
  };
@@ -1,7 +1,13 @@
1
+ import { PropertyValues } from 'lit';
1
2
  import { HelixElement } from '../../base/index.js';
2
3
  /**
3
4
  * Semantic table data cell. Must be a child of `hx-tr`.
4
5
  *
6
+ * Group 7 host-canonical: `role="cell"` lives on the **host** via
7
+ * `_internals.role`. The host carries the cell's accessible name (resolved
8
+ * from the `label` property — fixing audit B-A1, where mobile screen reader
9
+ * users lost column context because `data-label` was visual-only).
10
+ *
5
11
  * @summary Table data cell (`<td>`) for use inside `hx-tr`.
6
12
  *
7
13
  * @tag hx-td
@@ -14,6 +20,12 @@ import { HelixElement } from '../../base/index.js';
14
20
  */
15
21
  export declare class HelixTableCell extends HelixElement {
16
22
  static styles: import('lit').CSSResult[];
23
+ /**
24
+ * Test seam (Group 7 host-canonical migration): see other Group 7 components.
25
+ * Production code MUST NOT touch this field.
26
+ * @internal
27
+ */
28
+ static __testSupportsIdrefRefsOverride: boolean | null;
17
29
  /**
18
30
  * Horizontal alignment for cell content.
19
31
  * @attr align
@@ -30,12 +42,27 @@ export declare class HelixTableCell extends HelixElement {
30
42
  */
31
43
  rowspan: number;
32
44
  /**
33
- * Column header label for this cell. Forwarded as `data-label` on the native `<td>` for
34
- * the mobile card layout (`td::before { content: attr(data-label) }`) and as `aria-label`
35
- * so screen readers identify the column when the header row is hidden.
45
+ * Column header label for this cell. Forwarded as `data-label` on the native
46
+ * `<td>` for the mobile card layout (`td::before { content: attr(data-label) }`)
47
+ * AND projected to `aria-label` so screen readers identify the column when
48
+ * the header row is hidden via the mobile breakpoint. Group 7 audit B-A1
49
+ * fix: prior to migration, the JSDoc claimed aria-label projection but the
50
+ * implementation only set `data-label` — `::before { content: attr(...) }`
51
+ * is not reliably announced by VoiceOver / NVDA across versions.
36
52
  * @attr label
37
53
  */
38
54
  label: string;
55
+ /** @internal */
56
+ private _supportsIdrefRefs;
57
+ /** @internal */
58
+ private _ariaMirror;
59
+ /** @internal */
60
+ private _resolvedAccessibleName;
61
+ connectedCallback(): void;
62
+ disconnectedCallback(): void;
63
+ updated(changed: PropertyValues<this>): void;
64
+ /** @internal */
65
+ private _syncHostAriaSemantics;
39
66
  render(): import('lit').TemplateResult<1>;
40
67
  }
41
68
  declare global {
@@ -1 +1 @@
1
- {"version":3,"file":"hx-td.d.ts","sourceRoot":"","sources":["../../../src/components/hx-table/hx-td.ts"],"names":[],"mappings":"AACA,OAAO,4CAA4C,CAAC;AAGpD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAEnD;;;;;;;;;;;;GAYG;AACH,qBACa,cAAe,SAAQ,YAAY;IAC9C,OAAgB,MAAM,4BAqDpB;IAEF;;;OAGG;IAEH,KAAK,EAAE,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAU;IAE5C;;;OAGG;IAEH,OAAO,SAAK;IAEZ;;;OAGG;IAEH,OAAO,SAAK;IAEZ;;;;;OAKG;IAEH,KAAK,SAAM;IAEF,MAAM;CAahB;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,OAAO,EAAE,cAAc,CAAC;KACzB;CACF"}
1
+ {"version":3,"file":"hx-td.d.ts","sourceRoot":"","sources":["../../../src/components/hx-table/hx-td.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,KAAK,cAAc,EAAE,MAAM,KAAK,CAAC;AACrD,OAAO,4CAA4C,CAAC;AAGpD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AASnD;;;;;;;;;;;;;;;;;GAiBG;AACH,qBACa,cAAe,SAAQ,YAAY;IAC9C,OAAgB,MAAM,4BAkEpB;IAEF;;;;OAIG;IACH,MAAM,CAAC,+BAA+B,EAAE,OAAO,GAAG,IAAI,CAAQ;IAE9D;;;OAGG;IAEH,KAAK,EAAE,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAU;IAE5C;;;OAGG;IAEH,OAAO,SAAK;IAEZ;;;OAGG;IAEH,OAAO,SAAK;IAEZ;;;;;;;;;OASG;IAEH,KAAK,SAAM;IAIX,gBAAgB;IAChB,OAAO,CAAC,kBAAkB,CAAQ;IAElC,gBAAgB;IAChB,OAAO,CAAC,WAAW,CAAsC;IAEzD,gBAAgB;IAChB,OAAO,CAAC,uBAAuB,CAAM;IAE5B,iBAAiB,IAAI,IAAI;IAazB,oBAAoB,IAAI,IAAI;IAM5B,OAAO,CAAC,OAAO,EAAE,cAAc,CAAC,IAAI,CAAC,GAAG,IAAI;IAOrD,gBAAgB;IAChB,OAAO,CAAC,sBAAsB;IAgErB,MAAM;CAmBhB;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,OAAO,EAAE,cAAc,CAAC;KACzB;CACF"}
@@ -1,3 +1,4 @@
1
+ import { PropertyValues } from 'lit';
1
2
  import { HelixElement } from '../../base/index.js';
2
3
  /**
3
4
  * Detail type for `hx-sort` events dispatched from `hx-th`.
@@ -9,6 +10,12 @@ export interface HxTableSortDetail {
9
10
  * Semantic table header cell. Must be a child of `hx-tr`.
10
11
  * Supports sortable columns with accessible sort state.
11
12
  *
13
+ * Group 7 host-canonical: `role="columnheader"` lives on the **host** via
14
+ * `_internals.role`. The host carries `aria-sort` reflecting the current
15
+ * sort direction (when `sortable` is true). The sort `<button>` aria-label
16
+ * incorporates the slotted column text so AT users hear "Sort by Patient
17
+ * name, currently sorted ascending" rather than just "Sort ascending".
18
+ *
12
19
  * @summary Table header cell (`<th>`) with optional sort support.
13
20
  *
14
21
  * @tag hx-th
@@ -22,6 +29,12 @@ export interface HxTableSortDetail {
22
29
  */
23
30
  export declare class HelixTableHeader extends HelixElement {
24
31
  static styles: import('lit').CSSResult[];
32
+ /**
33
+ * Test seam (Group 7 host-canonical migration): see other Group 7 components.
34
+ * Production code MUST NOT touch this field.
35
+ * @internal
36
+ */
37
+ static __testSupportsIdrefRefsOverride: boolean | null;
25
38
  /**
26
39
  * When true, the header renders a sort button and emits `hx-sort` on activation.
27
40
  * @attr sortable
@@ -48,13 +61,36 @@ export declare class HelixTableHeader extends HelixElement {
48
61
  */
49
62
  rowspan: number;
50
63
  /** @internal */
64
+ private _slotText;
65
+ /** @internal */
66
+ private _supportsIdrefRefs;
67
+ /** @internal */
68
+ private _ariaMirror;
69
+ connectedCallback(): void;
70
+ disconnectedCallback(): void;
71
+ updated(changed: PropertyValues<this>): void;
72
+ /** @internal */
73
+ private _onSlotChange;
74
+ /** @internal */
75
+ private _syncHostAriaSemantics;
76
+ /** @internal */
51
77
  private _handleSort;
52
78
  /** @internal */
53
- private _renderSortIcon;
79
+ protected _renderSortIcon(): import('lit').TemplateResult<1>;
54
80
  /** @internal */
55
- private _ariaSort;
81
+ private _ariaSortValue;
56
82
  /** @internal */
57
- private _sortLabel;
83
+ private _ariaSortAttr;
84
+ /**
85
+ * Build the sort button's aria-label. Includes the slotted column text
86
+ * when available so a blind user pressing Tab through 5 sortable columns
87
+ * hears "Sort by Patient name, currently sorted ascending" instead of
88
+ * just "Sort. Sort. Sort." (audit B-A2-style label disambiguation).
89
+ * Promoted to `protected` so subclasses can override the i18n surface
90
+ * without re-implementing the full sort cycle.
91
+ * @internal
92
+ */
93
+ protected _sortLabel(): string;
58
94
  render(): import('lit').TemplateResult<1>;
59
95
  }
60
96
  declare global {
@@ -1 +1 @@
1
- {"version":3,"file":"hx-th.d.ts","sourceRoot":"","sources":["../../../src/components/hx-table/hx-th.ts"],"names":[],"mappings":"AACA,OAAO,4CAA4C,CAAC;AAGpD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAEnD;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,SAAS,EAAE,KAAK,GAAG,MAAM,CAAC;CAC3B;AAED;;;;;;;;;;;;;;GAcG;AACH,qBACa,gBAAiB,SAAQ,YAAY;IAChD,OAAgB,MAAM,4BAwGpB;IAEF;;;OAGG;IAEH,QAAQ,UAAS;IAEjB;;;OAGG;IAEH,aAAa,EAAE,KAAK,GAAG,MAAM,GAAG,MAAM,CAAU;IAEhD;;;OAGG;IAEH,KAAK,EAAE,KAAK,GAAG,KAAK,GAAG,UAAU,GAAG,UAAU,CAAS;IAEvD;;;OAGG;IAEH,OAAO,SAAK;IAEZ;;;OAGG;IAEH,OAAO,SAAK;IAIZ,gBAAgB;IAChB,OAAO,CAAC,WAAW;IAcnB,gBAAgB;IAChB,OAAO,CAAC,eAAe;IAyBvB,gBAAgB;IAChB,OAAO,CAAC,SAAS;IAOjB,gBAAgB;IAChB,OAAO,CAAC,UAAU;IAMT,MAAM;CAqBhB;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,OAAO,EAAE,gBAAgB,CAAC;KAC3B;CACF"}
1
+ {"version":3,"file":"hx-th.d.ts","sourceRoot":"","sources":["../../../src/components/hx-table/hx-th.ts"],"names":[],"mappings":"AAAA,OAAO,EAAsB,KAAK,cAAc,EAAE,MAAM,KAAK,CAAC;AAC9D,OAAO,4CAA4C,CAAC;AAGpD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AASnD;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,SAAS,EAAE,KAAK,GAAG,MAAM,CAAC;CAC3B;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,qBACa,gBAAiB,SAAQ,YAAY;IAChD,OAAgB,MAAM,4BA0HpB;IAEF;;;;OAIG;IACH,MAAM,CAAC,+BAA+B,EAAE,OAAO,GAAG,IAAI,CAAQ;IAE9D;;;OAGG;IAEH,QAAQ,UAAS;IAEjB;;;OAGG;IAEH,aAAa,EAAE,KAAK,GAAG,MAAM,GAAG,MAAM,CAAU;IAEhD;;;OAGG;IAEH,KAAK,EAAE,KAAK,GAAG,KAAK,GAAG,UAAU,GAAG,UAAU,CAAS;IAEvD;;;OAGG;IAEH,OAAO,SAAK;IAEZ;;;OAGG;IAEH,OAAO,SAAK;IAEZ,gBAAgB;IACP,OAAO,CAAC,SAAS,CAAM;IAIhC,gBAAgB;IAChB,OAAO,CAAC,kBAAkB,CAAQ;IAElC,gBAAgB;IAChB,OAAO,CAAC,WAAW,CAAsC;IAIhD,iBAAiB,IAAI,IAAI;IAazB,oBAAoB,IAAI,IAAI;IAM5B,OAAO,CAAC,OAAO,EAAE,cAAc,CAAC,IAAI,CAAC,GAAG,IAAI;IAOrD,gBAAgB;IAChB,OAAO,CAAC,aAAa;IAcrB,gBAAgB;IAChB,OAAO,CAAC,sBAAsB;IA+C9B,gBAAgB;IAChB,OAAO,CAAC,WAAW;IAcnB,gBAAgB;IAChB,SAAS,CAAC,eAAe;IAyBzB,gBAAgB;IAChB,OAAO,CAAC,cAAc;IAOtB,gBAAgB;IAChB,OAAO,CAAC,aAAa;IAKrB;;;;;;;;OAQG;IACH,SAAS,CAAC,UAAU,IAAI,MAAM;IAgBrB,MAAM;CAyBhB;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,OAAO,EAAE,gBAAgB,CAAC;KAC3B;CACF"}
@@ -1,8 +1,17 @@
1
+ import { PropertyValues } from 'lit';
1
2
  import { HelixElement } from '../../base/index.js';
2
3
  /**
3
4
  * Semantic table row. Must be a child of `hx-thead`, `hx-tbody`, or `hx-tfoot`.
4
5
  * Contains `hx-th` or `hx-td` cells.
5
6
  *
7
+ * Group 7 host-canonical: `role="row"` lives on the **host** via
8
+ * `_internals.role`. The host carries `aria-selected` / `aria-disabled`
9
+ * mirroring `selected` / `disabled` reflected attributes. Consumer-supplied
10
+ * `aria-label` / `aria-labelledby` on the host project to the host's
11
+ * announced surface so AT walks `<hx-tr>` (role=row) directly. Fallback
12
+ * path keeps the inner `<tr role="row">` as the announced surface for
13
+ * engines without IDL element references.
14
+ *
6
15
  * @summary Table row (`<tr>`) for use inside `hx-thead`, `hx-tbody`, or `hx-tfoot`.
7
16
  *
8
17
  * @tag hx-tr
@@ -13,6 +22,12 @@ import { HelixElement } from '../../base/index.js';
13
22
  */
14
23
  export declare class HelixTableRow extends HelixElement {
15
24
  static styles: import('lit').CSSResult[];
25
+ /**
26
+ * Test seam (Group 7 host-canonical migration): see other Group 7 components.
27
+ * Production code MUST NOT touch this field.
28
+ * @internal
29
+ */
30
+ static __testSupportsIdrefRefsOverride: boolean | null;
16
31
  /**
17
32
  * When true, marks the row as selected and applies selected styling.
18
33
  * @attr selected
@@ -23,6 +38,17 @@ export declare class HelixTableRow extends HelixElement {
23
38
  * @attr disabled
24
39
  */
25
40
  disabled: boolean;
41
+ /** @internal */
42
+ private _supportsIdrefRefs;
43
+ /** @internal */
44
+ private _ariaMirror;
45
+ /** @internal */
46
+ private _resolvedAccessibleName;
47
+ connectedCallback(): void;
48
+ disconnectedCallback(): void;
49
+ updated(changed: PropertyValues<this>): void;
50
+ /** @internal */
51
+ private _syncHostAriaSemantics;
26
52
  render(): import('lit').TemplateResult<1>;
27
53
  }
28
54
  declare global {
@@ -1 +1 @@
1
- {"version":3,"file":"hx-tr.d.ts","sourceRoot":"","sources":["../../../src/components/hx-table/hx-tr.ts"],"names":[],"mappings":"AACA,OAAO,4CAA4C,CAAC;AAEpD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAEnD;;;;;;;;;;;GAWG;AACH,qBACa,aAAc,SAAQ,YAAY;IAC7C,OAAgB,MAAM,4BA8BpB;IAEF;;;OAGG;IAEH,QAAQ,UAAS;IAEjB;;;OAGG;IAEH,QAAQ,UAAS;IAER,MAAM;CAYhB;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,OAAO,EAAE,aAAa,CAAC;KACxB;CACF"}
1
+ {"version":3,"file":"hx-tr.d.ts","sourceRoot":"","sources":["../../../src/components/hx-table/hx-tr.ts"],"names":[],"mappings":"AAAA,OAAO,EAAsB,KAAK,cAAc,EAAE,MAAM,KAAK,CAAC;AAC9D,OAAO,4CAA4C,CAAC;AAEpD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AASnD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,qBACa,aAAc,SAAQ,YAAY;IAC7C,OAAgB,MAAM,4BA8BpB;IAEF;;;;OAIG;IACH,MAAM,CAAC,+BAA+B,EAAE,OAAO,GAAG,IAAI,CAAQ;IAE9D;;;OAGG;IAEH,QAAQ,UAAS;IAEjB;;;OAGG;IAEH,QAAQ,UAAS;IAIjB,gBAAgB;IAChB,OAAO,CAAC,kBAAkB,CAAQ;IAElC,gBAAgB;IAChB,OAAO,CAAC,WAAW,CAAsC;IAEzD,gBAAgB;IAChB,OAAO,CAAC,uBAAuB,CAAM;IAE5B,iBAAiB,IAAI,IAAI;IAazB,oBAAoB,IAAI,IAAI;IAM5B,OAAO,CAAC,OAAO,EAAE,cAAc,CAAC,IAAI,CAAC,GAAG,IAAI;IAOrD,gBAAgB;IAChB,OAAO,CAAC,sBAAsB;IA6DrB,MAAM;CAgBhB;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,OAAO,EAAE,aAAa,CAAC;KACxB;CACF"}
@@ -1,4 +1,4 @@
1
- import { H as l, a as H, b, c as x, d as i, e as s, f as T } from "../../shared/hx-td-DnnEMIuA.js";
1
+ import { H as l, a as H, b, c as x, d as i, e as s, f as T } from "../../shared/hx-td-BGkFOJEK.js";
2
2
  export {
3
3
  l as HelixTable,
4
4
  H as HelixTableBody,
@@ -1,6 +1,13 @@
1
+ import { PropertyValues } from 'lit';
1
2
  import { HelixElement } from '../../base/index.js';
2
3
  /**
3
4
  * A content panel associated with an `<hx-tab>`, managed by a parent `<hx-tabs>`.
5
+ * Group 5a host-canonical: `role="tabpanel"` lives on the host via
6
+ * `_internals.role`. The host carries the canonical AT surface — consumer
7
+ * `aria-labelledby` / `aria-describedby` on the host resolve through the
8
+ * shared IDREF mirror. The parent `hx-tabs` writes `internals.ariaLabelledByElements`
9
+ * referencing the corresponding `<hx-tab>` host so cross-shadow naming works
10
+ * via IDL element references (the modern path) without serializing tab text.
4
11
  *
5
12
  * @summary Tab content panel shown when its corresponding tab is selected.
6
13
  *
@@ -21,7 +28,34 @@ export declare class HelixTabPanel extends HelixElement {
21
28
  * @attr name
22
29
  */
23
30
  name: string;
31
+ /**
32
+ * Element references for the controlling `<hx-tab>` host(s). Set by the
33
+ * parent `<hx-tabs>` via `setLabelledByTabs()` and projected onto
34
+ * `internals.ariaLabelledByElements` so cross-shadow naming via IDL element
35
+ * references resolves to the live tab host without flattening text.
36
+ * @internal
37
+ */
38
+ private _labelledByTabs;
39
+ /**
40
+ * Whether the platform supports IDL element references on `ElementInternals`.
41
+ * @internal
42
+ */
43
+ private _supportsIdrefRefs;
44
+ /** @internal */
45
+ private _ariaMirror;
24
46
  connectedCallback(): void;
47
+ disconnectedCallback(): void;
48
+ updated(changedProperties: PropertyValues<this>): void;
49
+ /**
50
+ * Set by `<hx-tabs>` whenever the tab→panel relationship is recomputed.
51
+ * Drives `internals.ariaLabelledByElements` so AT walks across the shadow
52
+ * boundary to the announcing tab host(s) by element reference rather than
53
+ * IDREF string. Pass an empty array to clear.
54
+ * @internal
55
+ */
56
+ setLabelledByTabs(tabs: Element[]): void;
57
+ /** @internal */
58
+ private _syncHostAriaSemantics;
25
59
  render(): import('lit').TemplateResult<1>;
26
60
  }
27
61
  declare global {
@@ -1 +1 @@
1
- {"version":3,"file":"hx-tab-panel.d.ts","sourceRoot":"","sources":["../../../src/components/hx-tabs/hx-tab-panel.ts"],"names":[],"mappings":"AACA,OAAO,4CAA4C,CAAC;AAEpD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAInD;;;;;;;;;;;;;;GAcG;AACH,qBACa,aAAc,SAAQ,YAAY;IAC7C,OAAgB,MAAM,4BAAkD;IAIxE;;;OAGG;IAEH,IAAI,SAAM;IAID,iBAAiB,IAAI,IAAI;IASzB,MAAM;CAOhB;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,cAAc,EAAE,aAAa,CAAC;KAC/B;CACF"}
1
+ {"version":3,"file":"hx-tab-panel.d.ts","sourceRoot":"","sources":["../../../src/components/hx-tabs/hx-tab-panel.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,KAAK,cAAc,EAAE,MAAM,KAAK,CAAC;AAChD,OAAO,4CAA4C,CAAC;AAEpD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAUnD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,qBACa,aAAc,SAAQ,YAAY;IAC7C,OAAgB,MAAM,4BAA4C;IAIlE;;;OAGG;IAEH,IAAI,SAAM;IAIV;;;;;;OAMG;IACH,OAAO,CAAC,eAAe,CAAiB;IAExC;;;OAGG;IACM,OAAO,CAAC,kBAAkB,CAAQ;IAE3C,gBAAgB;IAChB,OAAO,CAAC,WAAW,CAAsC;IAIhD,iBAAiB,IAAI,IAAI;IAYzB,oBAAoB,IAAI,IAAI;IAM5B,OAAO,CAAC,iBAAiB,EAAE,cAAc,CAAC,IAAI,CAAC,GAAG,IAAI;IAK/D;;;;;;OAMG;IACH,iBAAiB,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI;IAKxC,gBAAgB;IAChB,OAAO,CAAC,sBAAsB;IA6CrB,MAAM;CAOhB;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,cAAc,EAAE,aAAa,CAAC;KAC/B;CACF"}
@@ -1,8 +1,19 @@
1
+ import { PropertyValues } from 'lit';
1
2
  import { HelixElement } from '../../base/index.js';
2
3
  /**
3
4
  * An individual tab button, designed to be used inside an `<hx-tabs>` container.
4
5
  * Must be placed in the `tab` named slot of `<hx-tabs>`.
5
6
  *
7
+ * Group 5a host-canonical: `role="tab"` lives on the **host** via
8
+ * `_internals.role`. The host is the focusable surface (carries the roving
9
+ * tabindex); the inner `<button>` retains click activation semantics
10
+ * (Enter/Space and pointer events) but is no longer the AT-announced surface
11
+ * — its role and ARIA state are stripped on the modern path so the host's
12
+ * canonical surface wins. `internals.ariaSelected`, `ariaDisabled`, and
13
+ * `ariaControlsElements` mirror reactive state. The host `aria-label` /
14
+ * `aria-labelledby` resolved via the shared IDREF mirror name the tab
15
+ * cross-shadow.
16
+ *
6
17
  * @summary Presentational tab button that activates a corresponding panel.
7
18
  *
8
19
  * @tag hx-tab
@@ -47,12 +58,44 @@ export declare class HelixTab extends HelixElement {
47
58
  */
48
59
  disabled: boolean;
49
60
  /**
50
- * The id of the panel this tab controls. Set by the parent `<hx-tabs>` to establish the
51
- * aria-controls relationship on the inner button element (which carries role="tab").
61
+ * The id of the panel this tab controls. Set by the parent `<hx-tabs>` to
62
+ * establish the aria-controls relationship via element references on the
63
+ * host (modern path) or as a string fallback (legacy path).
52
64
  * @internal
53
65
  */
54
66
  controls: string;
67
+ /** @internal */
68
+ private _supportsIdrefRefs;
69
+ /** @internal */
70
+ private _ariaMirror;
71
+ /**
72
+ * Element reference for the controlled `<hx-tab-panel>` host. Set by the
73
+ * parent `<hx-tabs>` via `setControlsPanel()` and projected onto
74
+ * `internals.ariaControlsElements` so cross-shadow controls resolution
75
+ * works via IDL element references. Falls through to the `controls`
76
+ * string property on the legacy path.
77
+ * @internal
78
+ */
79
+ private _controlledPanel;
55
80
  connectedCallback(): void;
81
+ disconnectedCallback(): void;
82
+ updated(changedProperties: PropertyValues<this>): void;
83
+ /**
84
+ * Set by `<hx-tabs>` whenever the tab→panel relationship is recomputed.
85
+ * Drives `internals.ariaControlsElements` (modern path) so AT walks across
86
+ * the shadow boundary to the controlled panel by element reference.
87
+ * @internal
88
+ */
89
+ setControlsPanel(panel: Element | null): void;
90
+ /**
91
+ * Mirror reactive ARIA state onto ElementInternals on the **host**. The
92
+ * inner `<button>` no longer carries role/aria-* on the modern path — the
93
+ * host is the canonical AT-announced surface. The button stays as the
94
+ * activation surface (Enter/Space/click) but is `tabindex=-1` and
95
+ * presentational from AT's perspective.
96
+ * @internal
97
+ */
98
+ private _syncHostAriaSemantics;
56
99
  /** @internal */
57
100
  private _hasPrefixSlot;
58
101
  /** @internal */
@@ -1 +1 @@
1
- {"version":3,"file":"hx-tab.d.ts","sourceRoot":"","sources":["../../../src/components/hx-tabs/hx-tab.ts"],"names":[],"mappings":"AACA,OAAO,4CAA4C,CAAC;AAEpD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAKnD;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,qBACa,QAAS,SAAQ,YAAY;IACxC,OAAgB,MAAM,4BAA6C;IAInE;;;;OAIG;IAEH,KAAK,SAAM;IAEX;;;OAGG;IAEH,QAAQ,UAAS;IAEjB;;;OAGG;IAEH,QAAQ,UAAS;IAEjB;;;;OAIG;IAEH,QAAQ,SAAM;IAIL,iBAAiB,IAAI,IAAI;IASlC,gBAAgB;IACP,OAAO,CAAC,cAAc,CAAS;IACxC,gBAAgB;IACP,OAAO,CAAC,cAAc,CAAS;IAIxC,gBAAgB;IAChB,OAAO,CAAC,YAAY;IAkBpB,gBAAgB;IAChB,OAAO,CAAC,uBAAuB;IAK/B,gBAAgB;IAChB,OAAO,CAAC,uBAAuB;IAOtB,MAAM;CAsBhB;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,QAAQ,EAAE,QAAQ,CAAC;KACpB;CACF"}
1
+ {"version":3,"file":"hx-tab.d.ts","sourceRoot":"","sources":["../../../src/components/hx-tabs/hx-tab.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,KAAK,cAAc,EAAE,MAAM,KAAK,CAAC;AACzD,OAAO,4CAA4C,CAAC;AAEpD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAYnD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AACH,qBACa,QAAS,SAAQ,YAAY;IACxC,OAAgB,MAAM,4BAA6C;IAInE;;;;OAIG;IAEH,KAAK,SAAM;IAEX;;;OAGG;IAEH,QAAQ,UAAS;IAEjB;;;OAGG;IAEH,QAAQ,UAAS;IAEjB;;;;;OAKG;IAEH,QAAQ,SAAM;IAId,gBAAgB;IACP,OAAO,CAAC,kBAAkB,CAAQ;IAE3C,gBAAgB;IAChB,OAAO,CAAC,WAAW,CAAsC;IAEzD;;;;;;;OAOG;IACH,OAAO,CAAC,gBAAgB,CAAwB;IAIvC,iBAAiB,IAAI,IAAI;IAYzB,oBAAoB,IAAI,IAAI;IAM5B,OAAO,CAAC,iBAAiB,EAAE,cAAc,CAAC,IAAI,CAAC,GAAG,IAAI;IAY/D;;;;;OAKG;IACH,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI,GAAG,IAAI;IAK7C;;;;;;;OAOG;IACH,OAAO,CAAC,sBAAsB;IAmD9B,gBAAgB;IACP,OAAO,CAAC,cAAc,CAAS;IACxC,gBAAgB;IACP,OAAO,CAAC,cAAc,CAAS;IAIxC,gBAAgB;IAChB,OAAO,CAAC,YAAY;IAkBpB,gBAAgB;IAChB,OAAO,CAAC,uBAAuB;IAK/B,gBAAgB;IAChB,OAAO,CAAC,uBAAuB;IAOtB,MAAM;CA6EhB;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,QAAQ,EAAE,QAAQ,CAAC;KACpB;CACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"hx-tab.styles.d.ts","sourceRoot":"","sources":["../../../src/components/hx-tabs/hx-tab.styles.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,cAAc,yBA2H1B,CAAC"}
1
+ {"version":3,"file":"hx-tab.styles.d.ts","sourceRoot":"","sources":["../../../src/components/hx-tabs/hx-tab.styles.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,cAAc,yBAsI1B,CAAC"}
@@ -10,6 +10,16 @@ export interface HxTabChangeDetail {
10
10
  * Supports horizontal and vertical orientations, automatic and manual activation modes,
11
11
  * and full keyboard navigation per the ARIA Authoring Practices Guide.
12
12
  *
13
+ * Group 5a host-canonical: `role="tablist"` lives on the host via
14
+ * `_internals.role`. `aria-orientation`, `aria-label`, and consumer
15
+ * `aria-labelledby` resolve through the host. Per-tab `role="tab"` and
16
+ * per-panel `role="tabpanel"` likewise live on their respective hosts.
17
+ *
18
+ * Activation defaults to **manual** per healthcare patterns — keyboard arrow
19
+ * keys move focus only; Enter/Space activates. APG explicitly allows both
20
+ * automatic and manual activation; manual is safer when panels are heavy or
21
+ * announce changes via live regions.
22
+ *
13
23
  * @summary Tab container that organizes content into selectable panels.
14
24
  *
15
25
  * @tag hx-tabs
@@ -58,18 +68,30 @@ export declare class HelixTabs extends HelixElement {
58
68
  * Controls how keyboard navigation activates tabs.
59
69
  * In `automatic` mode, focus also activates the tab.
60
70
  * In `manual` mode, focus moves independently; Space or Enter activates.
71
+ *
72
+ * Group 5a default: `manual` — safer for healthcare patterns where panel
73
+ * content may be heavy or announce updates via live regions. APG explicitly
74
+ * allows both modes; manual avoids disorienting auto-activation when users
75
+ * scan tabs with arrow keys.
76
+ *
61
77
  * @attr activation
62
78
  */
63
79
  activation: 'manual' | 'automatic';
64
80
  /**
65
- * Accessible label for the tablist. Rendered as `aria-label` on the tablist container.
66
- * Provide a brief description of what the tabs represent (e.g., "Patient record sections").
81
+ * Accessible label for the tablist. Drives the host `internals.ariaLabel`.
82
+ * Provide a brief description of what the tabs represent (e.g., "Patient
83
+ * record sections"). Consumer `aria-label` / `aria-labelledby` on the host
84
+ * override this property when present.
67
85
  * @attr label
68
86
  */
69
87
  label: string;
70
88
  /** @internal */
71
89
  private _activePanel;
72
90
  /** @internal */
91
+ private _supportsIdrefRefs;
92
+ /** @internal */
93
+ private _ariaMirror;
94
+ /** @internal */
73
95
  private _cachedTabs;
74
96
  /** @internal */
75
97
  private _cachedPanels;
@@ -101,6 +123,14 @@ export declare class HelixTabs extends HelixElement {
101
123
  disconnectedCallback(): void;
102
124
  firstUpdated(): void;
103
125
  updated(changedProperties: PropertyValues<this>): void;
126
+ /**
127
+ * Mirror tablist semantics onto the host via ElementInternals so consumer-
128
+ * supplied `aria-label`, `aria-labelledby`, and the `label` property all
129
+ * reach the announced control. The host carries `role="tablist"` and the
130
+ * orientation reflects the `orientation` property reactively.
131
+ * @internal
132
+ */
133
+ private _syncHostAriaSemantics;
104
134
  /** @internal */
105
135
  private _syncTabsAndPanels;
106
136
  /** @internal */
@@ -1 +1 @@
1
- {"version":3,"file":"hx-tabs.d.ts","sourceRoot":"","sources":["../../../src/components/hx-tabs/hx-tabs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,KAAK,cAAc,EAAE,MAAM,KAAK,CAAC;AAChD,OAAO,4CAA4C,CAAC;AAEpD,OAAO,EAAE,YAAY,EAAmB,MAAM,qBAAqB,CAAC;AASpE,gEAAgE;AAChE,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AACH,qBACa,SAAU,SAAQ,YAAY;IACzC,OAAgB,MAAM,4BAA8C;IAIpE,gBAAgB;IAChB,OAAO,CAAC,GAAG,CAAiB;IAI5B;;;OAGG;IAEH,WAAW,EAAE,YAAY,GAAG,UAAU,CAAgB;IAEtD;;;;;OAKG;IAEH,UAAU,EAAE,QAAQ,GAAG,WAAW,CAAe;IAEjD;;;;OAIG;IAEH,KAAK,SAAM;IAIX,gBAAgB;IACP,OAAO,CAAC,YAAY,CAAM;IAInC,gBAAgB;IAChB,OAAO,CAAC,WAAW,CAA2B;IAC9C,gBAAgB;IAChB,OAAO,CAAC,aAAa,CAAgC;IACrD,gBAAgB;IAChB,OAAO,CAAC,SAAS,CAAiC;IAClD;;;;OAIG;IACH,OAAO,CAAC,aAAa,CAAuB;IAI5C,WAAoB,kBAAkB,IAAI,MAAM,EAAE,CAEjD;IAEQ,wBAAwB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI;IAqB/F;;;;;OAKG;IACH,IAAI,aAAa,IAAI,MAAM,CAE1B;IAED,IAAI,aAAa,CAAC,KAAK,EAAE,MAAM,EAK9B;IAED,gBAAgB;IAChB,OAAO,CAAC,QAAQ;IAShB,gBAAgB;IAChB,OAAO,CAAC,UAAU;IASlB,gBAAgB;IAChB,OAAO,CAAC,eAAe;IAMd,iBAAiB,IAAI,IAAI;IAkBzB,oBAAoB,IAAI,IAAI;IAQ5B,YAAY,IAAI,IAAI;IA6BpB,OAAO,CAAC,iBAAiB,EAAE,cAAc,CAAC,IAAI,CAAC,GAAG,IAAI;IAS/D,gBAAgB;IAChB,OAAO,CAAC,kBAAkB;IA6C1B,gBAAgB;IAChB,OAAO,CAAC,oBAAoB;IA6B5B,gBAAgB;IAChB,OAAO,CAAC,YAAY;IA2BpB,gBAAgB;IAChB,OAAO,CAAC,gBAAgB,CAStB;IAEF,gBAAgB;IAChB,OAAO,CAAC,uBAAuB;IA2B/B,gBAAgB;IAChB,OAAO,CAAC,iBAAiB,CAgBvB;IAEF,gBAAgB;IAChB,OAAO,CAAC,cAAc,CAiEpB;IAIO,MAAM;CAkBhB;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,SAAS,EAAE,SAAS,CAAC;KACtB;IACD,UAAU,mBAAmB;QAC3B,eAAe,EAAE,WAAW,CAAC;YAAE,KAAK,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;KAChE;CACF"}
1
+ {"version":3,"file":"hx-tabs.d.ts","sourceRoot":"","sources":["../../../src/components/hx-tabs/hx-tabs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,KAAK,cAAc,EAAE,MAAM,KAAK,CAAC;AAChD,OAAO,4CAA4C,CAAC;AAEpD,OAAO,EAAE,YAAY,EAAmB,MAAM,qBAAqB,CAAC;AAgBpE,gEAAgE;AAChE,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiDG;AACH,qBACa,SAAU,SAAQ,YAAY;IACzC,OAAgB,MAAM,4BAA8C;IAIpE,gBAAgB;IAChB,OAAO,CAAC,GAAG,CAAiB;IAI5B;;;OAGG;IAEH,WAAW,EAAE,YAAY,GAAG,UAAU,CAAgB;IAEtD;;;;;;;;;;;OAWG;IAEH,UAAU,EAAE,QAAQ,GAAG,WAAW,CAAY;IAE9C;;;;;;OAMG;IAEH,KAAK,SAAM;IAIX,gBAAgB;IACP,OAAO,CAAC,YAAY,CAAM;IAEnC,gBAAgB;IACP,OAAO,CAAC,kBAAkB,CAAQ;IAI3C,gBAAgB;IAChB,OAAO,CAAC,WAAW,CAAsC;IAIzD,gBAAgB;IAChB,OAAO,CAAC,WAAW,CAA2B;IAC9C,gBAAgB;IAChB,OAAO,CAAC,aAAa,CAAgC;IACrD,gBAAgB;IAChB,OAAO,CAAC,SAAS,CAAiC;IAClD;;;;OAIG;IACH,OAAO,CAAC,aAAa,CAAuB;IAI5C,WAAoB,kBAAkB,IAAI,MAAM,EAAE,CAEjD;IAEQ,wBAAwB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI;IAqB/F;;;;;OAKG;IACH,IAAI,aAAa,IAAI,MAAM,CAE1B;IAED,IAAI,aAAa,CAAC,KAAK,EAAE,MAAM,EAK9B;IAED,gBAAgB;IAChB,OAAO,CAAC,QAAQ;IAShB,gBAAgB;IAChB,OAAO,CAAC,UAAU;IASlB,gBAAgB;IAChB,OAAO,CAAC,eAAe;IAMd,iBAAiB,IAAI,IAAI;IAwBzB,oBAAoB,IAAI,IAAI;IAU5B,YAAY,IAAI,IAAI;IA6BpB,OAAO,CAAC,iBAAiB,EAAE,cAAc,CAAC,IAAI,CAAC,GAAG,IAAI;IAe/D;;;;;;OAMG;IACH,OAAO,CAAC,sBAAsB;IA4C9B,gBAAgB;IAChB,OAAO,CAAC,kBAAkB;IA6D1B,gBAAgB;IAChB,OAAO,CAAC,oBAAoB;IA4B5B,gBAAgB;IAChB,OAAO,CAAC,YAAY;IA2BpB,gBAAgB;IAChB,OAAO,CAAC,gBAAgB,CAStB;IAEF,gBAAgB;IAChB,OAAO,CAAC,uBAAuB;IA2B/B,gBAAgB;IAChB,OAAO,CAAC,iBAAiB,CAgBvB;IAEF,gBAAgB;IAChB,OAAO,CAAC,cAAc,CAuEpB;IAIO,MAAM;CAYhB;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,SAAS,EAAE,SAAS,CAAC;KACtB;IACD,UAAU,mBAAmB;QAC3B,eAAe,EAAE,WAAW,CAAC;YAAE,KAAK,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;KAChE;CACF"}