@helixui/library 3.3.1 → 3.4.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 (321) hide show
  1. package/custom-elements.json +340 -71
  2. package/dist/components/hx-accordion/hx-accordion-item.d.ts +35 -0
  3. package/dist/components/hx-accordion/hx-accordion-item.d.ts.map +1 -1
  4. package/dist/components/hx-alert/hx-alert.d.ts +11 -0
  5. package/dist/components/hx-alert/hx-alert.d.ts.map +1 -1
  6. package/dist/components/hx-alert/hx-alert.styles.d.ts.map +1 -1
  7. package/dist/components/hx-alert/index.js +1 -1
  8. package/dist/components/hx-badge/hx-badge.styles.d.ts.map +1 -1
  9. package/dist/components/hx-badge/index.js +1 -1
  10. package/dist/components/hx-banner/hx-banner.d.ts +9 -1
  11. package/dist/components/hx-banner/hx-banner.d.ts.map +1 -1
  12. package/dist/components/hx-banner/index.js +1 -1
  13. package/dist/components/hx-button/hx-button.d.ts +11 -1
  14. package/dist/components/hx-button/hx-button.d.ts.map +1 -1
  15. package/dist/components/hx-button/index.js +1 -1
  16. package/dist/components/hx-button-group/hx-button-group.d.ts +13 -0
  17. package/dist/components/hx-button-group/hx-button-group.d.ts.map +1 -1
  18. package/dist/components/hx-button-group/index.js +1 -1
  19. package/dist/components/hx-checkbox/hx-checkbox.d.ts +153 -1
  20. package/dist/components/hx-checkbox/hx-checkbox.d.ts.map +1 -1
  21. package/dist/components/hx-checkbox/hx-checkbox.styles.d.ts.map +1 -1
  22. package/dist/components/hx-checkbox/index.js +1 -1
  23. package/dist/components/hx-checkbox-group/hx-checkbox-group.d.ts +151 -2
  24. package/dist/components/hx-checkbox-group/hx-checkbox-group.d.ts.map +1 -1
  25. package/dist/components/hx-checkbox-group/index.js +1 -1
  26. package/dist/components/hx-color-picker/hx-color-picker.d.ts +163 -1
  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 +311 -2
  31. package/dist/components/hx-combobox/hx-combobox.d.ts.map +1 -1
  32. package/dist/components/hx-combobox/index.js +1 -1
  33. package/dist/components/hx-data-table/hx-data-table.d.ts.map +1 -1
  34. package/dist/components/hx-data-table/index.js +1 -1
  35. package/dist/components/hx-date-picker/hx-date-picker.d.ts +182 -56
  36. package/dist/components/hx-date-picker/hx-date-picker.d.ts.map +1 -1
  37. package/dist/components/hx-date-picker/hx-date-picker.styles.d.ts.map +1 -1
  38. package/dist/components/hx-date-picker/index.js +1 -1
  39. package/dist/components/hx-dialog/hx-dialog.d.ts +240 -0
  40. package/dist/components/hx-dialog/hx-dialog.d.ts.map +1 -1
  41. package/dist/components/hx-dialog/index.js +1 -1
  42. package/dist/components/hx-drawer/hx-drawer.d.ts +201 -0
  43. package/dist/components/hx-drawer/hx-drawer.d.ts.map +1 -1
  44. package/dist/components/hx-drawer/hx-drawer.styles.d.ts.map +1 -1
  45. package/dist/components/hx-drawer/index.js +1 -1
  46. package/dist/components/hx-dropdown/hx-dropdown.d.ts +168 -0
  47. package/dist/components/hx-dropdown/hx-dropdown.d.ts.map +1 -1
  48. package/dist/components/hx-dropdown/index.js +1 -1
  49. package/dist/components/hx-field/hx-field.d.ts +109 -0
  50. package/dist/components/hx-field/hx-field.d.ts.map +1 -1
  51. package/dist/components/hx-field/index.js +1 -1
  52. package/dist/components/hx-icon-button/hx-icon-button.d.ts +16 -3
  53. package/dist/components/hx-icon-button/hx-icon-button.d.ts.map +1 -1
  54. package/dist/components/hx-icon-button/hx-icon-button.styles.d.ts.map +1 -1
  55. package/dist/components/hx-icon-button/index.js +1 -1
  56. package/dist/components/hx-link/hx-link.d.ts +10 -1
  57. package/dist/components/hx-link/hx-link.d.ts.map +1 -1
  58. package/dist/components/hx-link/index.js +1 -1
  59. package/dist/components/hx-list/hx-list-item.d.ts +27 -1
  60. package/dist/components/hx-list/hx-list-item.d.ts.map +1 -1
  61. package/dist/components/hx-list/hx-list.d.ts +28 -0
  62. package/dist/components/hx-list/hx-list.d.ts.map +1 -1
  63. package/dist/components/hx-list/index.js +1 -1
  64. package/dist/components/hx-menu/hx-menu-divider.d.ts +10 -0
  65. package/dist/components/hx-menu/hx-menu-divider.d.ts.map +1 -1
  66. package/dist/components/hx-menu/hx-menu-item.d.ts +99 -2
  67. package/dist/components/hx-menu/hx-menu-item.d.ts.map +1 -1
  68. package/dist/components/hx-menu/hx-menu-item.styles.d.ts.map +1 -1
  69. package/dist/components/hx-menu/hx-menu.d.ts +117 -2
  70. package/dist/components/hx-menu/hx-menu.d.ts.map +1 -1
  71. package/dist/components/hx-menu/index.js +1 -1
  72. package/dist/components/hx-meter/hx-meter.d.ts +39 -0
  73. package/dist/components/hx-meter/hx-meter.d.ts.map +1 -1
  74. package/dist/components/hx-meter/hx-meter.styles.d.ts.map +1 -1
  75. package/dist/components/hx-meter/index.js +1 -1
  76. package/dist/components/hx-overflow-menu/hx-overflow-menu.d.ts +132 -1
  77. package/dist/components/hx-overflow-menu/hx-overflow-menu.d.ts.map +1 -1
  78. package/dist/components/hx-overflow-menu/index.js +1 -1
  79. package/dist/components/hx-phi-field/hx-phi-field.d.ts +0 -1
  80. package/dist/components/hx-phi-field/hx-phi-field.d.ts.map +1 -1
  81. package/dist/components/hx-popover/hx-popover.d.ts +91 -0
  82. package/dist/components/hx-popover/hx-popover.d.ts.map +1 -1
  83. package/dist/components/hx-popover/index.js +1 -1
  84. package/dist/components/hx-progress-bar/hx-progress-bar.d.ts +33 -0
  85. package/dist/components/hx-progress-bar/hx-progress-bar.d.ts.map +1 -1
  86. package/dist/components/hx-progress-bar/index.js +1 -1
  87. package/dist/components/hx-radio-group/hx-radio-group.d.ts +152 -1
  88. package/dist/components/hx-radio-group/hx-radio-group.d.ts.map +1 -1
  89. package/dist/components/hx-radio-group/hx-radio.d.ts +14 -0
  90. package/dist/components/hx-radio-group/hx-radio.d.ts.map +1 -1
  91. package/dist/components/hx-radio-group/index.js +1 -1
  92. package/dist/components/hx-select/hx-select.d.ts +304 -2
  93. package/dist/components/hx-select/hx-select.d.ts.map +1 -1
  94. package/dist/components/hx-select/hx-select.styles.d.ts.map +1 -1
  95. package/dist/components/hx-select/index.js +1 -1
  96. package/dist/components/hx-side-nav/hx-nav-item.styles.d.ts.map +1 -1
  97. package/dist/components/hx-side-nav/index.js +1 -1
  98. package/dist/components/hx-spinner/hx-spinner.d.ts +14 -0
  99. package/dist/components/hx-spinner/hx-spinner.d.ts.map +1 -1
  100. package/dist/components/hx-spinner/index.js +1 -1
  101. package/dist/components/hx-split-button/hx-split-button.d.ts +94 -7
  102. package/dist/components/hx-split-button/hx-split-button.d.ts.map +1 -1
  103. package/dist/components/hx-split-button/index.js +1 -1
  104. package/dist/components/hx-stat/hx-stat.d.ts +28 -0
  105. package/dist/components/hx-stat/hx-stat.d.ts.map +1 -1
  106. package/dist/components/hx-stat/index.js +1 -1
  107. package/dist/components/hx-switch/hx-switch.d.ts +78 -1
  108. package/dist/components/hx-switch/hx-switch.d.ts.map +1 -1
  109. package/dist/components/hx-switch/hx-switch.styles.d.ts.map +1 -1
  110. package/dist/components/hx-switch/index.js +1 -1
  111. package/dist/components/hx-table/hx-td.d.ts +30 -3
  112. package/dist/components/hx-table/hx-td.d.ts.map +1 -1
  113. package/dist/components/hx-table/hx-th.d.ts +39 -3
  114. package/dist/components/hx-table/hx-th.d.ts.map +1 -1
  115. package/dist/components/hx-table/hx-tr.d.ts +26 -0
  116. package/dist/components/hx-table/hx-tr.d.ts.map +1 -1
  117. package/dist/components/hx-table/index.js +1 -1
  118. package/dist/components/hx-tabs/hx-tab-panel.d.ts +34 -0
  119. package/dist/components/hx-tabs/hx-tab-panel.d.ts.map +1 -1
  120. package/dist/components/hx-tabs/hx-tab.d.ts +45 -2
  121. package/dist/components/hx-tabs/hx-tab.d.ts.map +1 -1
  122. package/dist/components/hx-tabs/hx-tab.styles.d.ts.map +1 -1
  123. package/dist/components/hx-tabs/hx-tabs.d.ts +32 -2
  124. package/dist/components/hx-tabs/hx-tabs.d.ts.map +1 -1
  125. package/dist/components/hx-tabs/index.js +1 -1
  126. package/dist/components/hx-tag/hx-tag.styles.d.ts.map +1 -1
  127. package/dist/components/hx-tag/index.js +1 -1
  128. package/dist/components/hx-theme/hx-theme.d.ts +10 -5
  129. package/dist/components/hx-theme/hx-theme.d.ts.map +1 -1
  130. package/dist/components/hx-time-picker/hx-time-picker.d.ts +210 -2
  131. package/dist/components/hx-time-picker/hx-time-picker.d.ts.map +1 -1
  132. package/dist/components/hx-time-picker/hx-time-picker.styles.d.ts.map +1 -1
  133. package/dist/components/hx-time-picker/index.js +1 -1
  134. package/dist/components/hx-toast/hx-toast-stack.d.ts +14 -0
  135. package/dist/components/hx-toast/hx-toast-stack.d.ts.map +1 -1
  136. package/dist/components/hx-toast/hx-toast.d.ts +22 -3
  137. package/dist/components/hx-toast/hx-toast.d.ts.map +1 -1
  138. package/dist/components/hx-toast/index.js +1 -1
  139. package/dist/components/hx-toast/toast-factory.d.ts.map +1 -1
  140. package/dist/components/hx-toggle-button/hx-toggle-button.d.ts +110 -0
  141. package/dist/components/hx-toggle-button/hx-toggle-button.d.ts.map +1 -1
  142. package/dist/components/hx-toggle-button/hx-toggle-button.styles.d.ts.map +1 -1
  143. package/dist/components/hx-toggle-button/index.js +1 -1
  144. package/dist/components/hx-tooltip/hx-tooltip.d.ts +52 -0
  145. package/dist/components/hx-tooltip/hx-tooltip.d.ts.map +1 -1
  146. package/dist/components/hx-tooltip/index.js +1 -1
  147. package/dist/components/hx-tree-view/hx-tree-item.d.ts +117 -12
  148. package/dist/components/hx-tree-view/hx-tree-item.d.ts.map +1 -1
  149. package/dist/components/hx-tree-view/hx-tree-view.d.ts +87 -7
  150. package/dist/components/hx-tree-view/hx-tree-view.d.ts.map +1 -1
  151. package/dist/components/hx-tree-view/index.js +1 -1
  152. package/dist/css/helix-all.css +221 -1
  153. package/dist/css/helix-core.css +81 -0
  154. package/dist/css/helix-feedback.css +14 -0
  155. package/dist/css/helix-forms.css +109 -1
  156. package/dist/css/helix-overlay.css +17 -0
  157. package/dist/css/hx-alert.css +9 -0
  158. package/dist/css/hx-badge.css +28 -0
  159. package/dist/css/hx-checkbox.css +18 -0
  160. package/dist/css/hx-color-picker.css +25 -0
  161. package/dist/css/hx-date-picker.css +2 -1
  162. package/dist/css/hx-drawer.css +17 -0
  163. package/dist/css/hx-icon-button.css +30 -0
  164. package/dist/css/hx-meter.css +5 -0
  165. package/dist/css/hx-select.css +19 -0
  166. package/dist/css/hx-switch.css +17 -0
  167. package/dist/css/hx-tag.css +23 -0
  168. package/dist/css/hx-time-picker.css +11 -0
  169. package/dist/css/hx-toggle-button.css +17 -0
  170. package/dist/css/index.css +1 -1
  171. package/dist/css/manifest.json +4 -1
  172. package/dist/index.js +38 -38
  173. package/dist/shared/aria-flatten-DY6v2vah.js +22 -0
  174. package/dist/shared/aria-flatten-DY6v2vah.js.map +1 -0
  175. package/dist/shared/aria-idref-CxvyzfQS.js +126 -0
  176. package/dist/shared/aria-idref-CxvyzfQS.js.map +1 -0
  177. package/dist/shared/hx-accordion-ZVzgDzTG.js.map +1 -1
  178. package/dist/shared/{hx-alert-CLn7CstP.js → hx-alert-Bto8-TIi.js} +55 -37
  179. package/dist/shared/hx-alert-Bto8-TIi.js.map +1 -0
  180. package/dist/shared/{hx-badge-CQXgOXJM.js → hx-badge-JlFtAdxS.js} +37 -9
  181. package/dist/shared/hx-badge-JlFtAdxS.js.map +1 -0
  182. package/dist/shared/{hx-banner-D3DzpfcP.js → hx-banner-fpRnciIO.js} +13 -5
  183. package/dist/shared/hx-banner-fpRnciIO.js.map +1 -0
  184. package/dist/shared/{hx-button-DPY6SPVT.js → hx-button-BOwAEcF1.js} +108 -85
  185. package/dist/shared/{hx-button-DPY6SPVT.js.map → hx-button-BOwAEcF1.js.map} +1 -1
  186. package/dist/shared/{hx-button-group-BI-QBqmO.js → hx-button-group-DcHP5MBv.js} +15 -16
  187. package/dist/shared/{hx-button-group-BI-QBqmO.js.map → hx-button-group-DcHP5MBv.js.map} +1 -1
  188. package/dist/shared/hx-checkbox-C48KYKFq.js +696 -0
  189. package/dist/shared/hx-checkbox-C48KYKFq.js.map +1 -0
  190. package/dist/shared/hx-checkbox-group-BJIAX3zU.js +496 -0
  191. package/dist/shared/hx-checkbox-group-BJIAX3zU.js.map +1 -0
  192. package/dist/shared/hx-color-picker-Dk4cBwYQ.js +1221 -0
  193. package/dist/shared/hx-color-picker-Dk4cBwYQ.js.map +1 -0
  194. package/dist/shared/hx-combobox-BTLO9qiK.js +1359 -0
  195. package/dist/shared/hx-combobox-BTLO9qiK.js.map +1 -0
  196. package/dist/shared/{hx-data-table-CLqVqdxr.js → hx-data-table-Ct3gQ6ya.js} +3 -2
  197. package/dist/shared/{hx-data-table-CLqVqdxr.js.map → hx-data-table-Ct3gQ6ya.js.map} +1 -1
  198. package/dist/shared/{hx-date-picker-2iRG1p74.js → hx-date-picker-CiR7FVnR.js} +542 -206
  199. package/dist/shared/hx-date-picker-CiR7FVnR.js.map +1 -0
  200. package/dist/shared/hx-dialog-AOZpHSuF.js +717 -0
  201. package/dist/shared/hx-dialog-AOZpHSuF.js.map +1 -0
  202. package/dist/shared/{hx-drawer-Y1Ui2IWJ.js → hx-drawer-DH6CdAN1.js} +300 -98
  203. package/dist/shared/hx-drawer-DH6CdAN1.js.map +1 -0
  204. package/dist/shared/hx-dropdown-DiLd40Lm.js +401 -0
  205. package/dist/shared/hx-dropdown-DiLd40Lm.js.map +1 -0
  206. package/dist/shared/{hx-field-B3Qo8OLS.js → hx-field-zw0U1KVi.js} +99 -38
  207. package/dist/shared/hx-field-zw0U1KVi.js.map +1 -0
  208. package/dist/shared/{hx-icon-button-CGNdQSFM.js → hx-icon-button-a6OpeQz5.js} +149 -68
  209. package/dist/shared/hx-icon-button-a6OpeQz5.js.map +1 -0
  210. package/dist/shared/{hx-link-C-O6vq0Q.js → hx-link-CMnZRUtQ.js} +55 -43
  211. package/dist/shared/hx-link-CMnZRUtQ.js.map +1 -0
  212. package/dist/shared/{hx-list-MyEhh8c7.js → hx-list-De66EtAP.js} +163 -107
  213. package/dist/shared/hx-list-De66EtAP.js.map +1 -0
  214. package/dist/shared/hx-menu-divider-BjiRIWKq.js +797 -0
  215. package/dist/shared/hx-menu-divider-BjiRIWKq.js.map +1 -0
  216. package/dist/shared/{hx-meter-BPscsw5t.js → hx-meter-BJdh6nrF.js} +105 -64
  217. package/dist/shared/hx-meter-BJdh6nrF.js.map +1 -0
  218. package/dist/shared/{hx-nav-item-xqRPOCWX.js → hx-nav-item-CODtUlew.js} +13 -9
  219. package/dist/shared/{hx-nav-item-xqRPOCWX.js.map → hx-nav-item-CODtUlew.js.map} +1 -1
  220. package/dist/shared/hx-overflow-menu-BQ4fiMYu.js +492 -0
  221. package/dist/shared/hx-overflow-menu-BQ4fiMYu.js.map +1 -0
  222. package/dist/shared/hx-phi-field-C19oxlrr.js.map +1 -1
  223. package/dist/shared/{hx-popover-B-FP3-wW.js → hx-popover-B9W8-tC0.js} +123 -66
  224. package/dist/shared/hx-popover-B9W8-tC0.js.map +1 -0
  225. package/dist/shared/hx-progress-bar-C8nDMdYa.js +290 -0
  226. package/dist/shared/hx-progress-bar-C8nDMdYa.js.map +1 -0
  227. package/dist/shared/hx-radio-Z1lV1zTO.js +822 -0
  228. package/dist/shared/hx-radio-Z1lV1zTO.js.map +1 -0
  229. package/dist/shared/hx-select-D18CnJ0e.js +1089 -0
  230. package/dist/shared/hx-select-D18CnJ0e.js.map +1 -0
  231. package/dist/shared/{hx-spinner-DL5AYr16.js → hx-spinner-BB0h2hKZ.js} +62 -34
  232. package/dist/shared/hx-spinner-BB0h2hKZ.js.map +1 -0
  233. package/dist/shared/{hx-split-button-Djnc5Aeg.js → hx-split-button-BoABoEm5.js} +153 -82
  234. package/dist/shared/hx-split-button-BoABoEm5.js.map +1 -0
  235. package/dist/shared/{hx-stat-WOcNV1Ry.js → hx-stat-Dtf9lz-O.js} +77 -47
  236. package/dist/shared/hx-stat-Dtf9lz-O.js.map +1 -0
  237. package/dist/shared/hx-switch-B6kr-EwE.js +540 -0
  238. package/dist/shared/hx-switch-B6kr-EwE.js.map +1 -0
  239. package/dist/shared/{hx-tab-panel-DspCrKqo.js → hx-tab-panel-BQtBXKLD.js} +255 -131
  240. package/dist/shared/hx-tab-panel-BQtBXKLD.js.map +1 -0
  241. package/dist/shared/{hx-tag-CNSmdyaK.js → hx-tag-C5aCUpVi.js} +63 -40
  242. package/dist/shared/hx-tag-C5aCUpVi.js.map +1 -0
  243. package/dist/shared/{hx-td-DnnEMIuA.js → hx-td-BGkFOJEK.js} +267 -123
  244. package/dist/shared/hx-td-BGkFOJEK.js.map +1 -0
  245. package/dist/shared/hx-theme-BsefFWTO.js.map +1 -1
  246. package/dist/shared/hx-time-picker-iwCD7rzW.js +1038 -0
  247. package/dist/shared/hx-time-picker-iwCD7rzW.js.map +1 -0
  248. package/dist/shared/{hx-toggle-button-iLiYrMbD.js → hx-toggle-button-BQ81EDkl.js} +226 -65
  249. package/dist/shared/hx-toggle-button-BQ81EDkl.js.map +1 -0
  250. package/dist/shared/{hx-tooltip-nYOv9OLu.js → hx-tooltip-DVqtKPCD.js} +68 -46
  251. package/dist/shared/hx-tooltip-DVqtKPCD.js.map +1 -0
  252. package/dist/shared/hx-tree-item-CHrUhuZL.js +925 -0
  253. package/dist/shared/hx-tree-item-CHrUhuZL.js.map +1 -0
  254. package/dist/shared/menu-roving-DmMnzJhn.js +14 -0
  255. package/dist/shared/menu-roving-DmMnzJhn.js.map +1 -0
  256. package/dist/shared/menu-tree-BNM0SYYq.js +42 -0
  257. package/dist/shared/menu-tree-BNM0SYYq.js.map +1 -0
  258. package/dist/shared/{toast-factory-YSznocIV.js → toast-factory-CL2BzdSB.js} +128 -77
  259. package/dist/shared/toast-factory-CL2BzdSB.js.map +1 -0
  260. package/dist/utils/aria-flatten.d.ts +56 -0
  261. package/dist/utils/aria-flatten.d.ts.map +1 -0
  262. package/dist/utils/aria-idref.d.ts +127 -0
  263. package/dist/utils/aria-idref.d.ts.map +1 -0
  264. package/dist/utils/menu-label.d.ts +18 -0
  265. package/dist/utils/menu-label.d.ts.map +1 -0
  266. package/dist/utils/menu-roving.d.ts +28 -0
  267. package/dist/utils/menu-roving.d.ts.map +1 -0
  268. package/dist/utils/menu-tree.d.ts +41 -0
  269. package/dist/utils/menu-tree.d.ts.map +1 -0
  270. package/dist/utils/tree-walk.d.ts +53 -0
  271. package/dist/utils/tree-walk.d.ts.map +1 -0
  272. package/figma-inventory.json +132 -20
  273. package/package.json +1 -1
  274. package/dist/shared/hx-alert-CLn7CstP.js.map +0 -1
  275. package/dist/shared/hx-badge-CQXgOXJM.js.map +0 -1
  276. package/dist/shared/hx-banner-D3DzpfcP.js.map +0 -1
  277. package/dist/shared/hx-checkbox-D7xma9YH.js +0 -524
  278. package/dist/shared/hx-checkbox-D7xma9YH.js.map +0 -1
  279. package/dist/shared/hx-checkbox-group-C9n315Ju.js +0 -323
  280. package/dist/shared/hx-checkbox-group-C9n315Ju.js.map +0 -1
  281. package/dist/shared/hx-color-picker-uRc865FJ.js +0 -882
  282. package/dist/shared/hx-color-picker-uRc865FJ.js.map +0 -1
  283. package/dist/shared/hx-combobox-DDzqNKEW.js +0 -924
  284. package/dist/shared/hx-combobox-DDzqNKEW.js.map +0 -1
  285. package/dist/shared/hx-date-picker-2iRG1p74.js.map +0 -1
  286. package/dist/shared/hx-dialog-DRN_1-Y-.js +0 -514
  287. package/dist/shared/hx-dialog-DRN_1-Y-.js.map +0 -1
  288. package/dist/shared/hx-drawer-Y1Ui2IWJ.js.map +0 -1
  289. package/dist/shared/hx-dropdown-LyaRc8Rf.js +0 -263
  290. package/dist/shared/hx-dropdown-LyaRc8Rf.js.map +0 -1
  291. package/dist/shared/hx-field-B3Qo8OLS.js.map +0 -1
  292. package/dist/shared/hx-icon-button-CGNdQSFM.js.map +0 -1
  293. package/dist/shared/hx-link-C-O6vq0Q.js.map +0 -1
  294. package/dist/shared/hx-list-MyEhh8c7.js.map +0 -1
  295. package/dist/shared/hx-menu-divider-C2omnPtj.js +0 -558
  296. package/dist/shared/hx-menu-divider-C2omnPtj.js.map +0 -1
  297. package/dist/shared/hx-meter-BPscsw5t.js.map +0 -1
  298. package/dist/shared/hx-overflow-menu-DCLsdIBy.js +0 -374
  299. package/dist/shared/hx-overflow-menu-DCLsdIBy.js.map +0 -1
  300. package/dist/shared/hx-popover-B-FP3-wW.js.map +0 -1
  301. package/dist/shared/hx-progress-bar-Bn3JEPUf.js +0 -258
  302. package/dist/shared/hx-progress-bar-Bn3JEPUf.js.map +0 -1
  303. package/dist/shared/hx-radio-CJvNU2yP.js +0 -621
  304. package/dist/shared/hx-radio-CJvNU2yP.js.map +0 -1
  305. package/dist/shared/hx-select-C8fEHQhC.js +0 -807
  306. package/dist/shared/hx-select-C8fEHQhC.js.map +0 -1
  307. package/dist/shared/hx-spinner-DL5AYr16.js.map +0 -1
  308. package/dist/shared/hx-split-button-Djnc5Aeg.js.map +0 -1
  309. package/dist/shared/hx-stat-WOcNV1Ry.js.map +0 -1
  310. package/dist/shared/hx-switch-BrZFaRue.js +0 -420
  311. package/dist/shared/hx-switch-BrZFaRue.js.map +0 -1
  312. package/dist/shared/hx-tab-panel-DspCrKqo.js.map +0 -1
  313. package/dist/shared/hx-tag-CNSmdyaK.js.map +0 -1
  314. package/dist/shared/hx-td-DnnEMIuA.js.map +0 -1
  315. package/dist/shared/hx-time-picker-BoEIZwzv.js +0 -688
  316. package/dist/shared/hx-time-picker-BoEIZwzv.js.map +0 -1
  317. package/dist/shared/hx-toggle-button-iLiYrMbD.js.map +0 -1
  318. package/dist/shared/hx-tooltip-nYOv9OLu.js.map +0 -1
  319. package/dist/shared/hx-tree-item-C2CiWuDE.js +0 -703
  320. package/dist/shared/hx-tree-item-C2CiWuDE.js.map +0 -1
  321. package/dist/shared/toast-factory-YSznocIV.js.map +0 -1
@@ -1,5 +1,6 @@
1
- import { nothing } from 'lit';
1
+ import { nothing, TemplateResult } from 'lit';
2
2
  import { HelixElement } from '../../base/index.js';
3
+ declare const HelixIconButton_base: typeof HelixElement;
3
4
  /**
4
5
  * An icon-only button component for compact, accessible actions.
5
6
  * Renders a square button or anchor element containing a single icon.
@@ -16,6 +17,7 @@ import { HelixElement } from '../../base/index.js';
16
17
  *
17
18
  * @csspart button - The native button or anchor element.
18
19
  * @csspart icon - The icon container span wrapping the default slot.
20
+ * @csspart spinner - The loading spinner SVG element shown when `loading` is true.
19
21
  *
20
22
  * @cssprop [--hx-icon-button-bg=transparent] - Button background color.
21
23
  * @cssprop [--hx-icon-button-color=var(--hx-color-primary-500)] - Icon color.
@@ -51,7 +53,7 @@ import { HelixElement } from '../../base/index.js';
51
53
  * @cssprop [--hx-color-error-500] - Color.
52
54
  * @cssprop [--hx-color-error-600] - Color.
53
55
  */
54
- export declare class HelixIconButton extends HelixElement {
56
+ export declare class HelixIconButton extends HelixIconButton_base {
55
57
  static styles: import('lit').CSSResult[];
56
58
  /**
57
59
  * Accessible name for the button. Required. Rendered as `aria-label` and
@@ -81,6 +83,14 @@ export declare class HelixIconButton extends HelixElement {
81
83
  * @attr disabled
82
84
  */
83
85
  disabled: boolean;
86
+ /**
87
+ * Whether the button is in a loading state. Shows the spinner, prevents
88
+ * activation, and sets `aria-busy="true"` on the inner element. Does NOT
89
+ * set the native `disabled` attribute (loading is transient; disabled is
90
+ * persistent, and AT announces them differently).
91
+ * @attr loading
92
+ */
93
+ loading: boolean;
84
94
  /**
85
95
  * When set, renders an `<a>` element instead of a `<button>`.
86
96
  * @attr href
@@ -107,7 +117,9 @@ export declare class HelixIconButton extends HelixElement {
107
117
  private _classes;
108
118
  /** @internal */
109
119
  private _iconSlot;
110
- render(): typeof nothing | import('lit').TemplateResult<1>;
120
+ /** @internal */
121
+ private _renderSpinner;
122
+ render(): typeof nothing | TemplateResult<1>;
111
123
  }
112
124
  declare global {
113
125
  interface HTMLElementTagNameMap {
@@ -119,4 +131,5 @@ declare global {
119
131
  }>;
120
132
  }
121
133
  }
134
+ export {};
122
135
  //# sourceMappingURL=hx-icon-button.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"hx-icon-button.d.ts","sourceRoot":"","sources":["../../../src/components/hx-icon-button/hx-icon-button.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,OAAO,EAAE,MAAM,KAAK,CAAC;AACpC,OAAO,4CAA4C,CAAC;AAIpD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAKnD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkDG;AACH,qBACa,eAAgB,SAAQ,YAAY;IAC/C,OAAgB,MAAM,4BAAoD;IAE1E;;;;;OAKG;IAEH,KAAK,SAAM;IAEX;;;OAGG;IAEH,OAAO,EAAE,SAAS,GAAG,WAAW,GAAG,UAAU,GAAG,QAAQ,GAAG,OAAO,CAAW;IAE7E;;;OAGG;IAEH,IAAI,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,CAAQ;IAEhC;;;;OAIG;IAEH,IAAI,EAAE,QAAQ,GAAG,QAAQ,GAAG,OAAO,CAAY;IAE/C;;;OAGG;IAEH,QAAQ,UAAS;IAEjB;;;OAGG;IAEH,IAAI,EAAE,MAAM,GAAG,SAAS,CAAa;IAErC;;;OAGG;IAEH,IAAI,EAAE,MAAM,GAAG,SAAS,CAAa;IAErC;;;OAGG;IAEH,KAAK,EAAE,MAAM,GAAG,SAAS,CAAa;IAItC,oFAAoF;IACpF,OAAgB,cAAc,UAAQ;cAEnB,eAAe,CAAC,QAAQ,EAAE,OAAO,GAAG,IAAI;IAM3D,gBAAgB;IAChB,OAAO,CAAC,YAAY;IA+BpB,gBAAgB;IAChB,OAAO,CAAC,gBAAgB;IAIxB,gBAAgB;IAChB,OAAO,CAAC,QAAQ;IAQhB,gBAAgB;IAChB,OAAO,CAAC,SAAS;IAMR,MAAM;CAsDhB;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,gBAAgB,EAAE,eAAe,CAAC;KACnC;IACD,UAAU,mBAAmB;QAC3B,UAAU,EAAE,WAAW,CAAC;YAAE,aAAa,EAAE,UAAU,CAAA;SAAE,CAAC,CAAC;KACxD;CACF"}
1
+ {"version":3,"file":"hx-icon-button.d.ts","sourceRoot":"","sources":["../../../src/components/hx-icon-button/hx-icon-button.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,KAAK,CAAC;AACzD,OAAO,4CAA4C,CAAC;AAIpD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;;AAMnD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmDG;AACH,qBACa,eAAgB,SAAQ,oBAAgC;IACnE,OAAgB,MAAM,4BAAoD;IAE1E;;;;;OAKG;IAEH,KAAK,SAAM;IAEX;;;OAGG;IAEH,OAAO,EAAE,SAAS,GAAG,WAAW,GAAG,UAAU,GAAG,QAAQ,GAAG,OAAO,CAAW;IAE7E;;;OAGG;IAEH,IAAI,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,CAAQ;IAEhC;;;;OAIG;IAEH,IAAI,EAAE,QAAQ,GAAG,QAAQ,GAAG,OAAO,CAAY;IAE/C;;;OAGG;IAEH,QAAQ,UAAS;IAEjB;;;;;;OAMG;IAEH,OAAO,UAAS;IAEhB;;;OAGG;IAEH,IAAI,EAAE,MAAM,GAAG,SAAS,CAAa;IAErC;;;OAGG;IAEH,IAAI,EAAE,MAAM,GAAG,SAAS,CAAa;IAErC;;;OAGG;IAEH,KAAK,EAAE,MAAM,GAAG,SAAS,CAAa;IAItC,oFAAoF;IACpF,OAAgB,cAAc,UAAQ;cAEnB,eAAe,CAAC,QAAQ,EAAE,OAAO,GAAG,IAAI;IAM3D,gBAAgB;IAChB,OAAO,CAAC,YAAY;IA+BpB,gBAAgB;IAChB,OAAO,CAAC,gBAAgB;IAIxB,gBAAgB;IAChB,OAAO,CAAC,QAAQ;IAShB,gBAAgB;IAChB,OAAO,CAAC,SAAS;IAIjB,gBAAgB;IAChB,OAAO,CAAC,cAAc;IA+Bb,MAAM;CAgFhB;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,gBAAgB,EAAE,eAAe,CAAC;KACnC;IACD,UAAU,mBAAmB;QAC3B,UAAU,EAAE,WAAW,CAAC;YAAE,aAAa,EAAE,UAAU,CAAA;SAAE,CAAC,CAAC;KACxD;CACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"hx-icon-button.styles.d.ts","sourceRoot":"","sources":["../../../src/components/hx-icon-button/hx-icon-button.styles.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,qBAAqB,yBA2LjC,CAAC"}
1
+ {"version":3,"file":"hx-icon-button.styles.d.ts","sourceRoot":"","sources":["../../../src/components/hx-icon-button/hx-icon-button.styles.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,qBAAqB,yBAyNjC,CAAC"}
@@ -1,4 +1,4 @@
1
- import { H as e } from "../../shared/hx-icon-button-CGNdQSFM.js";
1
+ import { H as e } from "../../shared/hx-icon-button-a6OpeQz5.js";
2
2
  export {
3
3
  e as HelixIconButton
4
4
  };
@@ -3,6 +3,7 @@ import { HelixElement } from '../../base/index.js';
3
3
  * Variant options for the link component.
4
4
  */
5
5
  export type LinkVariant = 'default' | 'subtle' | 'danger';
6
+ declare const HelixLink_base: typeof HelixElement;
6
7
  /**
7
8
  * A semantic hyperlink component with accessibility-first design.
8
9
  * Renders a native `<a>` element for enabled state and a `<span>` for
@@ -52,7 +53,7 @@ export type LinkVariant = 'default' | 'subtle' | 'danger';
52
53
  * @cssprop [--hx-color-error-700] - Color.
53
54
  * @cssprop [--hx-color-neutral-400] - Color.
54
55
  */
55
- export declare class HelixLink extends HelixElement {
56
+ export declare class HelixLink extends HelixLink_base {
56
57
  static styles: import('lit').CSSResult[];
57
58
  /**
58
59
  * The URL the link points to.
@@ -90,6 +91,13 @@ export declare class HelixLink extends HelixElement {
90
91
  * @attr rel
91
92
  */
92
93
  rel: string | undefined;
94
+ /**
95
+ * Localised announcement text appended (visually hidden) to the link's
96
+ * accessible name when `target="_blank"`. Defaults to English. Override
97
+ * for i18n contexts so AT users hear the new-tab notice in their locale.
98
+ * @attr external-label
99
+ */
100
+ externalLabel: string;
93
101
  /** @internal Blocks Enter and Space activation on disabled span. */
94
102
  private _handleDisabledKeydown;
95
103
  /** @internal */
@@ -105,4 +113,5 @@ declare global {
105
113
  'hx-link': HelixLink;
106
114
  }
107
115
  }
116
+ export {};
108
117
  //# sourceMappingURL=hx-link.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"hx-link.d.ts","sourceRoot":"","sources":["../../../src/components/hx-link/hx-link.ts"],"names":[],"mappings":"AACA,OAAO,4CAA4C,CAAC;AAIpD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAInD;;GAEG;AACH,MAAM,MAAM,WAAW,GAAG,SAAS,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAE1D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgDG;AACH,qBACa,SAAU,SAAQ,YAAY;IACzC,OAAgB,MAAM,4BAAuC;IAE7D;;;OAGG;IAEH,IAAI,EAAE,MAAM,GAAG,SAAS,CAAa;IAErC;;;;;OAKG;IAEH,MAAM,EAAE,MAAM,GAAG,SAAS,CAAa;IAEvC;;;OAGG;IAEH,OAAO,EAAE,SAAS,GAAG,QAAQ,GAAG,QAAQ,CAAa;IAErD;;;;;OAKG;IAEH,QAAQ,UAAS;IAEjB;;;;OAIG;IAEH,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAa;IAEzC;;;;OAIG;IAEH,GAAG,EAAE,MAAM,GAAG,SAAS,CAAa;IAIpC,oEAAoE;IACpE,OAAO,CAAC,sBAAsB;IAM9B,gBAAgB;IAChB,OAAO,CAAC,YAAY;IAkBpB,gBAAgB;IAChB,OAAO,CAAC,WAAW;IAMnB,gBAAgB;IAChB,OAAO,CAAC,mBAAmB;IAuBlB,MAAM;CAsChB;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,SAAS,EAAE,SAAS,CAAC;KACtB;CACF"}
1
+ {"version":3,"file":"hx-link.d.ts","sourceRoot":"","sources":["../../../src/components/hx-link/hx-link.ts"],"names":[],"mappings":"AACA,OAAO,4CAA4C,CAAC;AAIpD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAKnD;;GAEG;AACH,MAAM,MAAM,WAAW,GAAG,SAAS,GAAG,QAAQ,GAAG,QAAQ,CAAC;;AAE1D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgDG;AACH,qBACa,SAAU,SAAQ,cAAgC;IAC7D,OAAgB,MAAM,4BAAuC;IAE7D;;;OAGG;IAEH,IAAI,EAAE,MAAM,GAAG,SAAS,CAAa;IAErC;;;;;OAKG;IAEH,MAAM,EAAE,MAAM,GAAG,SAAS,CAAa;IAEvC;;;OAGG;IAEH,OAAO,EAAE,SAAS,GAAG,QAAQ,GAAG,QAAQ,CAAa;IAErD;;;;;OAKG;IAEH,QAAQ,UAAS;IAEjB;;;;OAIG;IAEH,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAa;IAEzC;;;;OAIG;IAEH,GAAG,EAAE,MAAM,GAAG,SAAS,CAAa;IAEpC;;;;;OAKG;IAEH,aAAa,EAAE,MAAM,CAAwB;IAI7C,oEAAoE;IACpE,OAAO,CAAC,sBAAsB;IAM9B,gBAAgB;IAChB,OAAO,CAAC,YAAY;IAkBpB,gBAAgB;IAChB,OAAO,CAAC,WAAW;IAMnB,gBAAgB;IAChB,OAAO,CAAC,mBAAmB;IAuBlB,MAAM;CAuDhB;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,SAAS,EAAE,SAAS,CAAC;KACtB;CACF"}
@@ -1,4 +1,4 @@
1
- import { H as o } from "../../shared/hx-link-C-O6vq0Q.js";
1
+ import { H as o } from "../../shared/hx-link-CMnZRUtQ.js";
2
2
  export {
3
3
  o as HelixLink
4
4
  };
@@ -3,6 +3,14 @@ import { HelixElement } from '../../base/index.js';
3
3
  /**
4
4
  * A rich list item for use inside `hx-list`.
5
5
  *
6
+ * Group 7 host-canonical: `role="option"` (interactive listbox mode) is
7
+ * mirrored onto the **host** via `_internals.role` AND the legacy
8
+ * setAttribute('role',...) path. The dual-surface pattern preserves the
9
+ * existing imperative host-attribute behaviour (so consumers querying
10
+ * `host.getAttribute('role')` still work) while adding cross-shadow IDREF
11
+ * wiring through `internals.ariaLabelledByElements` for engines that
12
+ * support it.
13
+ *
6
14
  * @summary Individual list item with optional prefix, suffix, description, link, and disabled/selected states.
7
15
  *
8
16
  * @tag hx-list-item
@@ -30,6 +38,12 @@ import { HelixElement } from '../../base/index.js';
30
38
  */
31
39
  export declare class HelixListItem extends HelixElement {
32
40
  static styles: import('lit').CSSResult[];
41
+ /**
42
+ * Test seam (Group 7 host-canonical migration): see other Group 7 components.
43
+ * Production code MUST NOT touch this field.
44
+ * @internal
45
+ */
46
+ static __testSupportsIdrefRefsOverride: boolean | null;
33
47
  /**
34
48
  * Whether the item is disabled. Prevents interaction.
35
49
  * @attr disabled
@@ -61,10 +75,22 @@ export declare class HelixListItem extends HelixElement {
61
75
  * @attr type
62
76
  */
63
77
  type: 'default' | 'term' | 'definition';
78
+ /** @internal */
79
+ private _supportsIdrefRefs;
80
+ /** @internal */
81
+ private _ariaMirror;
82
+ /** @internal */
83
+ private _resolvedAccessibleName;
84
+ connectedCallback(): void;
85
+ disconnectedCallback(): void;
64
86
  updated(changedProps: PropertyValues<this>): void;
65
87
  /**
66
88
  * Syncs ARIA attributes to the host element when in interactive (listbox option) mode.
67
- * This ensures correct ARIA ownership: ul[role=listbox] > hx-list-item[role=option].
89
+ * Preserves the prior imperative `setAttribute('role', 'option')` path so existing
90
+ * consumer queries and tests continue to pass. ALSO mirrors the same surface onto
91
+ * `internals.role` / `internals.ariaSelected` (modern path) so cross-shadow IDREF
92
+ * resolution through `internals.ariaLabelledByElements` works on engines that
93
+ * support it.
68
94
  */
69
95
  /** @internal */
70
96
  private _syncHostAria;
@@ -1 +1 @@
1
- {"version":3,"file":"hx-list-item.d.ts","sourceRoot":"","sources":["../../../src/components/hx-list/hx-list-item.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;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,qBACa,aAAc,SAAQ,YAAY;IAC7C,OAAgB,MAAM,4BAA8C;IAEpE;;;OAGG;IAEH,QAAQ,UAAS;IAEjB;;;OAGG;IAEH,QAAQ,UAAS;IAEjB;;;OAGG;IAEH,IAAI,EAAE,MAAM,GAAG,SAAS,CAAa;IAErC;;;OAGG;IAEH,KAAK,EAAE,MAAM,GAAG,SAAS,CAAa;IAEtC;;;;OAIG;IAEH,WAAW,UAAS;IAEpB;;;OAGG;IAEH,IAAI,EAAE,SAAS,GAAG,MAAM,GAAG,YAAY,CAAa;IAE3C,OAAO,CAAC,YAAY,EAAE,cAAc,CAAC,IAAI,CAAC,GAAG,IAAI;IAW1D;;;OAGG;IACH,gBAAgB;IAChB,OAAO,CAAC,aAAa;IAsBrB,gBAAgB;IAChB,OAAO,CAAC,sBAAsB;IAU9B,gBAAgB;IAChB,OAAO,CAAC,YAAY;IAUpB,gBAAgB;IAChB,OAAO,CAAC,cAAc;IAmBb,MAAM;IAmFf,gBAAgB;IAChB,OAAO,CAAC,cAAc;CAQvB;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,cAAc,EAAE,aAAa,CAAC;KAC/B;CACF"}
1
+ {"version":3,"file":"hx-list-item.d.ts","sourceRoot":"","sources":["../../../src/components/hx-list/hx-list-item.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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACH,qBACa,aAAc,SAAQ,YAAY;IAC7C,OAAgB,MAAM,4BAA8C;IAEpE;;;;OAIG;IACH,MAAM,CAAC,+BAA+B,EAAE,OAAO,GAAG,IAAI,CAAQ;IAE9D;;;OAGG;IAEH,QAAQ,UAAS;IAEjB;;;OAGG;IAEH,QAAQ,UAAS;IAEjB;;;OAGG;IAEH,IAAI,EAAE,MAAM,GAAG,SAAS,CAAa;IAErC;;;OAGG;IAEH,KAAK,EAAE,MAAM,GAAG,SAAS,CAAa;IAEtC;;;;OAIG;IAEH,WAAW,UAAS;IAEpB;;;OAGG;IAEH,IAAI,EAAE,SAAS,GAAG,MAAM,GAAG,YAAY,CAAa;IAIpD,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,YAAY,EAAE,cAAc,CAAC,IAAI,CAAC,GAAG,IAAI;IAW1D;;;;;;;OAOG;IACH,gBAAgB;IAChB,OAAO,CAAC,aAAa;IAgFrB,gBAAgB;IAChB,OAAO,CAAC,sBAAsB;IAU9B,gBAAgB;IAChB,OAAO,CAAC,YAAY;IAUpB,gBAAgB;IAChB,OAAO,CAAC,cAAc;IAmBb,MAAM;IAmFf,gBAAgB;IAChB,OAAO,CAAC,cAAc;CAQvB;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,cAAc,EAAE,aAAa,CAAC;KAC/B;CACF"}
@@ -3,6 +3,12 @@ import { HelixElement } from '../../base/index.js';
3
3
  /**
4
4
  * A styled list container supporting plain, bulleted, numbered, description, and interactive variants.
5
5
  *
6
+ * Group 7 host-canonical: `role="list"` (or `role="listbox"` in interactive
7
+ * mode) lives on the **host** via `_internals.role`, harmonizing with
8
+ * `hx-structured-list` (the gold-standard exemplar for Group 7). The `<dl>`
9
+ * description variant keeps native semantics — no host role assigned, since
10
+ * `<dl>` IS the semantic surface and AT walks it directly.
11
+ *
6
12
  * @summary Container for list items with optional dividers and interactive selection.
7
13
  *
8
14
  * @tag hx-list
@@ -22,6 +28,12 @@ import { HelixElement } from '../../base/index.js';
22
28
  */
23
29
  export declare class HelixList extends HelixElement {
24
30
  static styles: import('lit').CSSResult[];
31
+ /**
32
+ * Test seam (Group 7 host-canonical migration): see other Group 7 components.
33
+ * Production code MUST NOT touch this field.
34
+ * @internal
35
+ */
36
+ static __testSupportsIdrefRefsOverride: boolean | null;
25
37
  /**
26
38
  * Visual variant of the list.
27
39
  * @attr variant
@@ -37,6 +49,12 @@ export declare class HelixList extends HelixElement {
37
49
  * @attr label
38
50
  */
39
51
  label: string | undefined;
52
+ /** @internal */
53
+ private _supportsIdrefRefs;
54
+ /** @internal */
55
+ private _ariaMirror;
56
+ /** @internal */
57
+ private _resolvedAccessibleName;
40
58
  connectedCallback(): void;
41
59
  disconnectedCallback(): void;
42
60
  updated(changedProps: PropertyValues<this>): void;
@@ -46,6 +64,16 @@ export declare class HelixList extends HelixElement {
46
64
  */
47
65
  /** @internal */
48
66
  private _updateItemStates;
67
+ /**
68
+ * Resolve the host's role for the current variant. Description variant
69
+ * uses native `<dl>` semantics (returns `null` so the host carries no
70
+ * explicit role). Interactive variant becomes `listbox`. All other
71
+ * variants are `list`.
72
+ * @internal
73
+ */
74
+ private _hostRole;
75
+ /** @internal */
76
+ private _syncHostAriaSemantics;
49
77
  /** @internal */
50
78
  private _handleSlotChange;
51
79
  /** @internal */
@@ -1 +1 @@
1
- {"version":3,"file":"hx-list.d.ts","sourceRoot":"","sources":["../../../src/components/hx-list/hx-list.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,KAAK,cAAc,EAAE,MAAM,KAAK,CAAC;AACzD,OAAO,4CAA4C,CAAC;AAGpD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAMnD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,qBACa,SAAU,SAAQ,YAAY;IACzC,OAAgB,MAAM,4BAA0C;IAEhE;;;OAGG;IAEH,OAAO,EAAE,OAAO,GAAG,UAAU,GAAG,UAAU,GAAG,aAAa,GAAG,aAAa,CAAW;IAErF;;;OAGG;IAEH,OAAO,UAAS;IAEhB;;;OAGG;IAEH,KAAK,EAAE,MAAM,GAAG,SAAS,CAAa;IAE7B,iBAAiB,IAAI,IAAI;IAKzB,oBAAoB,IAAI,IAAI;IAK5B,OAAO,CAAC,YAAY,EAAE,cAAc,CAAC,IAAI,CAAC,GAAG,IAAI;IAc1D;;;OAGG;IACH,gBAAgB;IAChB,OAAO,CAAC,iBAAiB;IAQzB,gBAAgB;IAChB,OAAO,CAAC,iBAAiB;IAIzB,gBAAgB;IAChB,OAAO,CAAC,QAAQ,CAAC,cAAc,CAiC7B;IAEF,gBAAgB;IAChB,OAAO,CAAC,gBAAgB;IAgBf,MAAM;CA+ChB;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,SAAS,EAAE,SAAS,CAAC;KACtB;CACF"}
1
+ {"version":3,"file":"hx-list.d.ts","sourceRoot":"","sources":["../../../src/components/hx-list/hx-list.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,KAAK,cAAc,EAAE,MAAM,KAAK,CAAC;AACzD,OAAO,4CAA4C,CAAC;AAGpD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAanD;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,qBACa,SAAU,SAAQ,YAAY;IACzC,OAAgB,MAAM,4BAA0C;IAEhE;;;;OAIG;IACH,MAAM,CAAC,+BAA+B,EAAE,OAAO,GAAG,IAAI,CAAQ;IAE9D;;;OAGG;IAEH,OAAO,EAAE,OAAO,GAAG,UAAU,GAAG,UAAU,GAAG,aAAa,GAAG,aAAa,CAAW;IAErF;;;OAGG;IAEH,OAAO,UAAS;IAEhB;;;OAGG;IAEH,KAAK,EAAE,MAAM,GAAG,SAAS,CAAa;IAItC,gBAAgB;IAChB,OAAO,CAAC,kBAAkB,CAAQ;IAElC,gBAAgB;IAChB,OAAO,CAAC,WAAW,CAAsC;IAEzD,gBAAgB;IAChB,OAAO,CAAC,uBAAuB,CAAM;IAE5B,iBAAiB,IAAI,IAAI;IAczB,oBAAoB,IAAI,IAAI;IAO5B,OAAO,CAAC,YAAY,EAAE,cAAc,CAAC,IAAI,CAAC,GAAG,IAAI;IAkB1D;;;OAGG;IACH,gBAAgB;IAChB,OAAO,CAAC,iBAAiB;IAQzB;;;;;;OAMG;IACH,OAAO,CAAC,SAAS;IAMjB,gBAAgB;IAChB,OAAO,CAAC,sBAAsB;IAwE9B,gBAAgB;IAChB,OAAO,CAAC,iBAAiB;IAIzB,gBAAgB;IAChB,OAAO,CAAC,QAAQ,CAAC,cAAc,CAiC7B;IAEF,gBAAgB;IAChB,OAAO,CAAC,gBAAgB;IAgBf,MAAM;CAmDhB;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,SAAS,EAAE,SAAS,CAAC;KACtB;CACF"}
@@ -1,4 +1,4 @@
1
- import { H as s, a as t } from "../../shared/hx-list-MyEhh8c7.js";
1
+ import { H as s, a as t } from "../../shared/hx-list-De66EtAP.js";
2
2
  export {
3
3
  s as HelixList,
4
4
  t as HelixListItem
@@ -2,6 +2,13 @@ import { HelixElement } from '../../base/index.js';
2
2
  /**
3
3
  * A visual separator for grouping items within an `hx-menu`.
4
4
  *
5
+ * Group 5b host-canonical: `role="separator"` lives on the **host** via
6
+ * `_internals.role` so the parent `<hx-menu>` (`role="menu"`) sees the
7
+ * separator as a direct child. `aria-orientation` is mirrored onto the host
8
+ * via `internals.ariaOrientation`. The inner div is presentational on the
9
+ * modern path and stripped of its role; the legacy fallback keeps the
10
+ * inner role for engines without ElementInternals IDL accessors.
11
+ *
5
12
  * @summary Horizontal divider between menu sections.
6
13
  *
7
14
  * @tag hx-menu-divider
@@ -12,6 +19,9 @@ import { HelixElement } from '../../base/index.js';
12
19
  */
13
20
  export declare class HelixMenuDivider extends HelixElement {
14
21
  static styles: import('lit').CSSResult[];
22
+ /** @internal */
23
+ private _supportsIdrefRefs;
24
+ connectedCallback(): void;
15
25
  render(): import('lit').TemplateResult<1>;
16
26
  }
17
27
  declare global {
@@ -1 +1 @@
1
- {"version":3,"file":"hx-menu-divider.d.ts","sourceRoot":"","sources":["../../../src/components/hx-menu/hx-menu-divider.ts"],"names":[],"mappings":"AACA,OAAO,4CAA4C,CAAC;AAEpD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAInD;;;;;;;;;;GAUG;AACH,qBACa,gBAAiB,SAAQ,YAAY;IAChD,OAAgB,MAAM,4BAAqD;IAElE,MAAM;CAQhB;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,iBAAiB,EAAE,gBAAgB,CAAC;KACrC;CACF"}
1
+ {"version":3,"file":"hx-menu-divider.d.ts","sourceRoot":"","sources":["../../../src/components/hx-menu/hx-menu-divider.ts"],"names":[],"mappings":"AACA,OAAO,4CAA4C,CAAC;AAEpD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAKnD;;;;;;;;;;;;;;;;;GAiBG;AACH,qBACa,gBAAiB,SAAQ,YAAY;IAChD,OAAgB,MAAM,4BAAqD;IAE3E,gBAAgB;IAChB,OAAO,CAAC,kBAAkB,CAAQ;IAEzB,iBAAiB,IAAI,IAAI;IAQzB,MAAM;CAehB;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,iBAAiB,EAAE,gBAAgB,CAAC;KACrC;CACF"}
@@ -1,8 +1,23 @@
1
+ import { PropertyValues } from 'lit';
1
2
  import { HelixElement } from '../../base/index.js';
2
3
  /**
3
4
  * A single interactive item for use inside `hx-menu`. Supports normal, checkbox,
4
5
  * and radio types, loading state, prefix/suffix slots, and submenu nesting.
5
- * Use `aria-label` on the parent `hx-menu` to provide an accessible name.
6
+ *
7
+ * Group 5b host-canonical: `role="menuitem"` (or `menuitemcheckbox` /
8
+ * `menuitemradio` based on `type`) lives on the **host** via
9
+ * `_internals.role`. The roving tabindex is written to the host, so the host
10
+ * is the focusable surface and lands directly under the parent `<hx-menu>`
11
+ * (which carries `role="menu"`) in the AT walked tree. The inner element is
12
+ * presentational on the modern path — no role, no aria-* attributes — and
13
+ * carries only click/keyboard event handlers. Keyboard activation
14
+ * (Enter/Space) is owned by the host's `keydown` handler.
15
+ *
16
+ * Cross-shadow naming: consumer-supplied `aria-label` / `aria-labelledby` on
17
+ * the host project to `internals.ariaLabel` / `internals.ariaLabelledByElements`
18
+ * via the shared IDREF mirror. The slotted text content is used as the default
19
+ * accessible name when no override is set (AT walks slotted children
20
+ * automatically through the host's role).
6
21
  *
7
22
  * @summary Interactive item within an hx-menu.
8
23
  *
@@ -29,6 +44,19 @@ import { HelixElement } from '../../base/index.js';
29
44
  */
30
45
  export declare class HelixMenuItem extends HelixElement {
31
46
  static styles: import('lit').CSSResult[];
47
+ /**
48
+ * Test seam (codex push-gate round-1 finding 3 mirror of hx-select
49
+ * pattern): when set to `true` or `false`, overrides the platform
50
+ * `supportsIdrefElementReferences` probe before `connectedCallback`
51
+ * seeds `_supportsIdrefRefs`. Tests that need to exercise the fallback
52
+ * path must select it BEFORE the host connects so tabindex / role
53
+ * placement matches a legacy engine for the entire lifecycle.
54
+ *
55
+ * Production code MUST NOT touch this field. It is `static` so the test
56
+ * stub cleanup is global and obvious.
57
+ * @internal
58
+ */
59
+ static __testSupportsIdrefRefsOverride: boolean | null;
32
60
  /**
33
61
  * @internal Managed by parent hx-menu for roving tabindex.
34
62
  * Only the active item in the menu has tabindex=0; all others have -1.
@@ -70,13 +98,82 @@ export declare class HelixMenuItem extends HelixElement {
70
98
  private _submenuOpen;
71
99
  /** @internal */
72
100
  private _menuItemEl;
73
- /** Focus the inner interactive element. */
101
+ /** @internal */
102
+ private _supportsIdrefRefs;
103
+ /** @internal */
104
+ private _ariaMirror;
105
+ /**
106
+ * Resolved accessible name for the menu item — read by both
107
+ * `_syncHostAriaSemantics()` (modern path: host `internals.ariaLabel`)
108
+ * and the fallback `render()` branch (legacy path: inner
109
+ * `div[role="menuitem*"]` `aria-label`). Empty string means "no
110
+ * override" — slotted text content provides the implicit name through
111
+ * the announced surface (host on modern; inner div on fallback). AccName
112
+ * 1.2 §4.3.1 precedence: consumer host `aria-labelledby` (flattened) >
113
+ * consumer host `aria-label` > implicit slotted text.
114
+ * @internal
115
+ */
116
+ private _resolvedAccessibleName;
117
+ /**
118
+ * Focus the menu item. On the modern host-canonical path, focus lands on
119
+ * the host (which carries the roving tabindex and announced role). On the
120
+ * legacy fallback path, focus delegates to the inner element which still
121
+ * carries the role.
122
+ */
74
123
  focus(options?: FocusOptions): void;
75
124
  connectedCallback(): void;
125
+ disconnectedCallback(): void;
126
+ updated(changedProperties: PropertyValues<this>): void;
127
+ /**
128
+ * Apply the roving tabindex to the host (modern path) so the host is the
129
+ * Tab stop. Disabled items are non-tabbable.
130
+ *
131
+ * Codex push-gate round-1 finding 3: on the fallback path
132
+ * (`_supportsIdrefRefs === false`), the inner `.menu-item` element
133
+ * carries `role="menuitem"` and the roving tabindex via the template
134
+ * (see `render()`'s legacy branch). If we ALSO assign a non-negative
135
+ * tabindex to the host, the user gets two focusable surfaces per item —
136
+ * Tab can land on the host even though the AT-announced role/aria-* live
137
+ * on the inner element. The host MUST be removed from the tab order on
138
+ * the fallback path; the inner element is the canonical Tab stop.
139
+ * @internal
140
+ */
141
+ private _applyHostTabIndex;
142
+ /**
143
+ * Mirror menuitem semantics onto the host via ElementInternals. Role is
144
+ * derived from `type` (normal → menuitem, checkbox → menuitemcheckbox,
145
+ * radio → menuitemradio). aria-disabled, aria-checked, aria-haspopup,
146
+ * aria-expanded, and aria-busy reactively follow component state.
147
+ * Consumer-supplied `aria-label` / `aria-labelledby` on the host project
148
+ * onto `internals.ariaLabel` / `internals.ariaLabelledByElements`.
149
+ * @internal
150
+ */
151
+ private _syncHostAriaSemantics;
76
152
  /** @internal */
77
153
  private _handleSubmenuSlotChange;
78
154
  /** @internal */
79
155
  private _activate;
156
+ /**
157
+ * Origin guard for host-bound click/keydown handlers. Returns `true` only
158
+ * when the event originated on THIS host (its shadow tree) and not on a
159
+ * nested `hx-menu-item` projected into the `submenu` slot.
160
+ *
161
+ * Codex push-gate round-5 P1: nested submenu items are slotted descendants
162
+ * in the parent's light DOM. Click/keydown events from a Child item bubble
163
+ * through the parent host's listeners — without this guard, selecting Child
164
+ * also activates Parent (double `hx-item-select`) and Enter/Space/ArrowRight
165
+ * on Child re-trigger Parent's handlers (wrong-level activation, second
166
+ * submenu reopen).
167
+ *
168
+ * Walks `composedPath()` and returns the closest `hx-menu-item` ancestor of
169
+ * the original target; the event is "ours" iff that ancestor is `this`.
170
+ * Mirrors the inner-vs-host origin discipline used by `hx-checkbox`,
171
+ * `hx-switch`, and `hx-toggle-button`'s host handlers (`path[0] !== this`)
172
+ * but adapts for hx-menu-item's nested-host case where path[0] is the
173
+ * deepest inner element of a slotted child's own shadow tree.
174
+ * @internal
175
+ */
176
+ private _isOwnEvent;
80
177
  /** @internal */
81
178
  private _handleClick;
82
179
  /** @internal */
@@ -1 +1 @@
1
- {"version":3,"file":"hx-menu-item.d.ts","sourceRoot":"","sources":["../../../src/components/hx-menu/hx-menu-item.ts"],"names":[],"mappings":"AACA,OAAO,4CAA4C,CAAC;AAGpD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAKnD;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,qBACa,aAAc,SAAQ,YAAY;IAC7C,OAAgB,MAAM,4BAAkD;IAExE;;;OAGG;IAEH,OAAO,CAAC,eAAe,CAAM;IAE7B,yEAAyE;IACzE,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAItC,mGAAmG;IACnG,cAAc,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI;IAInC;;;OAGG;IAEH,KAAK,SAAM;IAEX;;;OAGG;IAEH,QAAQ,UAAS;IAEjB;;;OAGG;IAEH,OAAO,UAAS;IAEhB;;;;OAIG;IAEH,IAAI,EAAE,QAAQ,GAAG,UAAU,GAAG,OAAO,CAAY;IAEjD;;;OAGG;IAEH,OAAO,UAAS;IAEhB,gBAAgB;IAEhB,OAAO,CAAC,WAAW,CAAS;IAE5B,qEAAqE;IAErE,OAAO,CAAC,YAAY,CAAS;IAE7B,gBAAgB;IACK,OAAO,CAAC,WAAW,CAAsB;IAE9D,2CAA2C;IAClC,KAAK,CAAC,OAAO,CAAC,EAAE,YAAY,GAAG,IAAI;IAInC,iBAAiB,IAAI,IAAI;IAclC,gBAAgB;IAChB,OAAO,CAAC,wBAAwB;IAKhC,gBAAgB;IAChB,OAAO,CAAC,SAAS;IA2BjB,gBAAgB;IAChB,OAAO,CAAC,YAAY;IASpB,gBAAgB;IAChB,OAAO,CAAC,cAAc;IA+BtB,gBAAgB;IAChB,OAAO,CAAC,kBAAkB;IAmB1B,gBAAgB;IAChB,OAAO,CAAC,kBAAkB;IAmB1B,gBAAgB;IAChB,OAAO,CAAC,cAAc;IActB,gBAAgB;IAChB,OAAO,CAAC,QAAQ;IAWP,MAAM;CAsChB;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,cAAc,EAAE,aAAa,CAAC;KAC/B;CACF"}
1
+ {"version":3,"file":"hx-menu-item.d.ts","sourceRoot":"","sources":["../../../src/components/hx-menu/hx-menu-item.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,KAAK,cAAc,EAAE,MAAM,KAAK,CAAC;AACzD,OAAO,4CAA4C,CAAC;AAGpD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAYnD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyCG;AACH,qBACa,aAAc,SAAQ,YAAY;IAC7C,OAAgB,MAAM,4BAAkD;IAExE;;;;;;;;;;;OAWG;IACH,MAAM,CAAC,+BAA+B,EAAE,OAAO,GAAG,IAAI,CAAQ;IAE9D;;;OAGG;IAEH,OAAO,CAAC,eAAe,CAAM;IAE7B,yEAAyE;IACzE,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAKtC,mGAAmG;IACnG,cAAc,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI;IAInC;;;OAGG;IAEH,KAAK,SAAM;IAEX;;;OAGG;IAEH,QAAQ,UAAS;IAEjB;;;OAGG;IAEH,OAAO,UAAS;IAEhB;;;;OAIG;IAEH,IAAI,EAAE,QAAQ,GAAG,UAAU,GAAG,OAAO,CAAY;IAEjD;;;OAGG;IAEH,OAAO,UAAS;IAEhB,gBAAgB;IAEhB,OAAO,CAAC,WAAW,CAAS;IAE5B,qEAAqE;IAErE,OAAO,CAAC,YAAY,CAAS;IAE7B,gBAAgB;IACK,OAAO,CAAC,WAAW,CAAsB;IAI9D,gBAAgB;IAChB,OAAO,CAAC,kBAAkB,CAAQ;IAElC,gBAAgB;IAChB,OAAO,CAAC,WAAW,CAAsC;IAEzD;;;;;;;;;;OAUG;IACH,OAAO,CAAC,uBAAuB,CAAM;IAErC;;;;;OAKG;IACM,KAAK,CAAC,OAAO,CAAC,EAAE,YAAY,GAAG,IAAI;IASnC,iBAAiB,IAAI,IAAI;IAmCzB,oBAAoB,IAAI,IAAI;IAQ5B,OAAO,CAAC,iBAAiB,EAAE,cAAc,CAAC,IAAI,CAAC,GAAG,IAAI;IAoB/D;;;;;;;;;;;;;OAaG;IACH,OAAO,CAAC,kBAAkB;IAc1B;;;;;;;;OAQG;IACH,OAAO,CAAC,sBAAsB;IAqG9B,gBAAgB;IAChB,OAAO,CAAC,wBAAwB;IAKhC,gBAAgB;IAChB,OAAO,CAAC,SAAS;IA2BjB;;;;;;;;;;;;;;;;;;;OAmBG;IACH,OAAO,CAAC,WAAW;IAWnB,gBAAgB;IAChB,OAAO,CAAC,YAAY,CAWlB;IAEF,gBAAgB;IAChB,OAAO,CAAC,cAAc,CAyCpB;IAEF,gBAAgB;IAChB,OAAO,CAAC,kBAAkB;IAmB1B,gBAAgB;IAChB,OAAO,CAAC,kBAAkB;IAmB1B,gBAAgB;IAChB,OAAO,CAAC,cAAc;IActB,gBAAgB;IAChB,OAAO,CAAC,QAAQ;IAWP,MAAM;CA8EhB;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,cAAc,EAAE,aAAa,CAAC;KAC/B;CACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"hx-menu-item.styles.d.ts","sourceRoot":"","sources":["../../../src/components/hx-menu/hx-menu-item.styles.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,mBAAmB,yBA8H/B,CAAC"}
1
+ {"version":3,"file":"hx-menu-item.styles.d.ts","sourceRoot":"","sources":["../../../src/components/hx-menu/hx-menu-item.styles.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,mBAAmB,yBAsJ/B,CAAC"}
@@ -1,8 +1,24 @@
1
+ import { PropertyValues } from 'lit';
1
2
  import { HelixElement } from '../../base/index.js';
2
3
  /**
3
4
  * A menu container that manages keyboard navigation over a list of menu items.
4
5
  * Use with `hx-menu-item` and `hx-menu-divider`.
5
6
  *
7
+ * Group 5b host-canonical: `role="menu"` lives on the **host** via
8
+ * `_internals.role`. The host carries the announced surface so AT walks
9
+ * `<hx-menu>` (role=menu) → slotted `<hx-menu-item>` (role=menuitem on host)
10
+ * directly without two layers of indirection. Consumer-supplied
11
+ * `aria-label` / `aria-labelledby` on the host are resolved via the shared
12
+ * IDREF mirror; cross-shadow naming uses `ariaLabelledByElements` (modern)
13
+ * with a flattened-string fallback (legacy).
14
+ *
15
+ * Submenu coordination: when an `hx-menu-item` emits `hx-item-submenu-open`
16
+ * or `hx-item-submenu-close`, the parent menu auto-handles the toggle by
17
+ * calling `setSubmenuOpen()` on the item — UNLESS the consumer has called
18
+ * `event.preventDefault()` on the bubbled event, signaling that they own the
19
+ * submenu lifecycle. This matches APG-mandated behaviour while leaving an
20
+ * opt-out for advanced consumers.
21
+ *
6
22
  * @summary Context/action menu with keyboard-navigable items.
7
23
  *
8
24
  * @tag hx-menu
@@ -30,8 +46,10 @@ import { HelixElement } from '../../base/index.js';
30
46
  export declare class HelixMenu extends HelixElement {
31
47
  static styles: import('lit').CSSResult[];
32
48
  /**
33
- * Accessible label for the menu. Rendered as `aria-label` on the inner
34
- * `role="menu"` element when set.
49
+ * Accessible label for the menu. Used as a fallback when no consumer-supplied
50
+ * `aria-label` / `aria-labelledby` is present on the host. On the modern
51
+ * host-canonical path this projects onto `internals.ariaLabel`; on the
52
+ * legacy fallback path it appears as `aria-label` on the inner div.
35
53
  * @attr label
36
54
  */
37
55
  label: string;
@@ -50,7 +68,50 @@ export declare class HelixMenu extends HelixElement {
50
68
  * @internal
51
69
  */
52
70
  private _typeaheadTimer;
71
+ /**
72
+ * Test seam (codex push-gate round-2 finding 1): when set to `true` or
73
+ * `false`, overrides the platform `supportsIdrefElementReferences` probe
74
+ * before `connectedCallback` seeds `_supportsIdrefRefs`. Mirrors the
75
+ * hx-select / hx-menu-item seam — required so tests can deterministically
76
+ * exercise the legacy fallback render branch (where the inner
77
+ * `div[role="menu"]` is the announced surface and must mirror the
78
+ * resolved accessible name).
79
+ *
80
+ * Production code MUST NOT touch this field. It is `static` so the test
81
+ * stub cleanup is global and obvious.
82
+ * @internal
83
+ */
84
+ static __testSupportsIdrefRefsOverride: boolean | null;
85
+ /** @internal */
86
+ private _supportsIdrefRefs;
53
87
  /** @internal */
88
+ private _ariaMirror;
89
+ /**
90
+ * Resolved accessible name for the menu — the single source of truth that
91
+ * both `_syncHostAriaSemantics()` (modern path: writes to
92
+ * `internals.ariaLabel`) and the fallback `render()` branch (legacy path:
93
+ * writes to inner `div[role="menu"]` `aria-label`) read. Recomputed by
94
+ * `_syncHostAriaSemantics()` whenever host aria-* or `label` changes via
95
+ * the shared IDREF mirror. AccName 1.2 §4.3.1 precedence: consumer host
96
+ * `aria-labelledby` (flattened) > consumer host `aria-label` > `label`
97
+ * property > literal "Menu".
98
+ * @internal
99
+ */
100
+ private _resolvedAccessibleName;
101
+ /**
102
+ * Return the menu's enabled, top-level `hx-menu-item` children.
103
+ *
104
+ * Codex push-gate round-6 finding 3: `querySelectorAll('hx-menu-item')`
105
+ * walks the entire descendant tree, which on a parent menuitem
106
+ * includes the slotted nested `<hx-menu>` and ITS items. Treating
107
+ * those as top-level options corrupts roving tabindex, ArrowUp/Down
108
+ * navigation, and typeahead matching (typing the first letter of a
109
+ * grandchild item lands focus there instead of on the next sibling).
110
+ * Restrict to direct children of `this` so each menu owns only its
111
+ * own items.
112
+ *
113
+ * @internal
114
+ */
54
115
  private _getItems;
55
116
  /**
56
117
  * Synchronize roving tabindex across all enabled items.
@@ -70,12 +131,66 @@ export declare class HelixMenu extends HelixElement {
70
131
  private _handleKeyDown;
71
132
  /** @internal */
72
133
  private _handleTypeahead;
134
+ /**
135
+ * Read the typeahead label for an item — delegates to the shared
136
+ * `getMenuItemTypeaheadLabel` util so all four menu-bearing components
137
+ * (`hx-menu`, `hx-dropdown`, `hx-overflow-menu`, `hx-split-button`)
138
+ * share one submenu-aware extractor. Codex push-gate round-7 finding 3
139
+ * extracted this helper from its original home here in `hx-menu.ts`.
140
+ *
141
+ * @internal
142
+ */
143
+ private _getTypeaheadLabel;
73
144
  /** @internal */
74
145
  private _handleSlotChange;
75
146
  /** @internal */
76
147
  private _handleItemSelect;
148
+ /**
149
+ * Auto-handle submenu open/close events emitted by child `hx-menu-item`
150
+ * children. APG-mandated behaviour: ArrowRight on a parent item opens the
151
+ * nested submenu and focuses its first item; ArrowLeft closes the submenu
152
+ * and returns focus to the parent item. Consumers that own submenu
153
+ * lifecycle themselves can `event.preventDefault()` to opt out.
154
+ * @internal
155
+ */
156
+ private _handleSubmenuOpen;
157
+ /** @internal */
158
+ private _handleSubmenuClose;
159
+ connectedCallback(): void;
77
160
  disconnectedCallback(): void;
161
+ /**
162
+ * Codex push-gate round-7 finding 1: keydown bound on the HOST receives
163
+ * events that bubble out of nested submenus. When a child submenu is
164
+ * open and focus lives inside it, ArrowUp/Down/Home/End/Escape on the
165
+ * inner item bubbles to EVERY enclosing `hx-menu`. Without this guard
166
+ * the outer menu would run `_focusItem(...)` against its OWN top-level
167
+ * items and steal focus back out of the child submenu, and Escape would
168
+ * dispatch one `hx-close` per enclosing menu. Mirrors the
169
+ * `findClosestMenuAncestor` pattern already used by the submenu
170
+ * open/close handlers.
171
+ * @internal
172
+ */
173
+ private _handleHostKeyDown;
174
+ /**
175
+ * Codex push-gate round-7 finding 2: `hx-item-select` bubbles composed
176
+ * through every enclosing `hx-menu`. The outer menu would otherwise
177
+ * (a) corrupt `_focusedIndex` to `-1` because the bubbled item is not
178
+ * a member of the outer menu's items, and (b) re-emit a duplicate
179
+ * `hx-select`. Only act when THIS menu is the closest enclosing menu
180
+ * of the dispatching item.
181
+ * @internal
182
+ */
183
+ private _handleItemSelectHost;
184
+ updated(changedProperties: PropertyValues<this>): void;
78
185
  firstUpdated(): void;
186
+ /**
187
+ * Mirror menu semantics onto the host via ElementInternals so consumer-
188
+ * supplied `aria-label`, `aria-labelledby`, and the `label` property all
189
+ * reach the announced control. Falls back to a flattened-string label on
190
+ * engines that do not implement `ariaLabelledByElements`.
191
+ * @internal
192
+ */
193
+ private _syncHostAriaSemantics;
79
194
  render(): import('lit').TemplateResult<1>;
80
195
  }
81
196
  declare global {
@@ -1 +1 @@
1
- {"version":3,"file":"hx-menu.d.ts","sourceRoot":"","sources":["../../../src/components/hx-menu/hx-menu.ts"],"names":[],"mappings":"AACA,OAAO,4CAA4C,CAAC;AAEpD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAMnD;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,qBACa,SAAU,SAAQ,YAAY;IACzC,OAAgB,MAAM,4BAA8C;IAEpE;;;;OAIG;IAEH,KAAK,SAAM;IAEX;;;OAGG;IACH,OAAO,CAAC,aAAa,CAAM;IAE3B;;;OAGG;IACH,OAAO,CAAC,gBAAgB,CAAM;IAE9B;;;OAGG;IACH,OAAO,CAAC,eAAe,CAA8C;IAErE,gBAAgB;IAChB,OAAO,CAAC,SAAS;IAMjB;;;OAGG;IACH,gBAAgB;IAChB,OAAO,CAAC,mBAAmB;IAQ3B,iCAAiC;IACjC,UAAU,IAAI,IAAI;IAUlB,gCAAgC;IAChC,SAAS,IAAI,IAAI;IAUjB,gBAAgB;IAChB,OAAO,CAAC,UAAU;IASlB,gBAAgB;IAChB,OAAO,CAAC,mBAAmB;IAQ3B,gBAAgB;IAChB,OAAO,CAAC,cAAc;IAkCtB,gBAAgB;IAChB,OAAO,CAAC,gBAAgB;IAqBxB,gBAAgB;IAChB,OAAO,CAAC,iBAAiB;IAiBzB,gBAAgB;IAChB,OAAO,CAAC,iBAAiB;IAehB,oBAAoB,IAAI,IAAI;IAQ5B,YAAY,IAAI,IAAI;IASpB,MAAM;CAchB;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,SAAS,EAAE,SAAS,CAAC;KACtB;CACF"}
1
+ {"version":3,"file":"hx-menu.d.ts","sourceRoot":"","sources":["../../../src/components/hx-menu/hx-menu.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,KAAK,cAAc,EAAE,MAAM,KAAK,CAAC;AACzD,OAAO,4CAA4C,CAAC;AAEpD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AA2CnD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AACH,qBACa,SAAU,SAAQ,YAAY;IACzC,OAAgB,MAAM,4BAA8C;IAEpE;;;;;;OAMG;IAEH,KAAK,SAAM;IAEX;;;OAGG;IACH,OAAO,CAAC,aAAa,CAAM;IAE3B;;;OAGG;IACH,OAAO,CAAC,gBAAgB,CAAM;IAE9B;;;OAGG;IACH,OAAO,CAAC,eAAe,CAA8C;IAIrE;;;;;;;;;;;;OAYG;IACH,MAAM,CAAC,+BAA+B,EAAE,OAAO,GAAG,IAAI,CAAQ;IAE9D,gBAAgB;IAChB,OAAO,CAAC,kBAAkB,CAAQ;IAElC,gBAAgB;IAChB,OAAO,CAAC,WAAW,CAAsC;IAEzD;;;;;;;;;;OAUG;IACH,OAAO,CAAC,uBAAuB,CAAM;IAErC;;;;;;;;;;;;;OAaG;IACH,OAAO,CAAC,SAAS;IASjB;;;OAGG;IACH,gBAAgB;IAChB,OAAO,CAAC,mBAAmB;IAQ3B,iCAAiC;IACjC,UAAU,IAAI,IAAI;IAUlB,gCAAgC;IAChC,SAAS,IAAI,IAAI;IAUjB,gBAAgB;IAChB,OAAO,CAAC,UAAU;IASlB,gBAAgB;IAChB,OAAO,CAAC,mBAAmB;IAQ3B,gBAAgB;IAChB,OAAO,CAAC,cAAc;IAkCtB,gBAAgB;IAChB,OAAO,CAAC,gBAAgB;IAqBxB;;;;;;;;OAQG;IACH,OAAO,CAAC,kBAAkB;IAI1B,gBAAgB;IAChB,OAAO,CAAC,iBAAiB;IAiBzB,gBAAgB;IAChB,OAAO,CAAC,iBAAiB;IAezB;;;;;;;OAOG;IACH,OAAO,CAAC,kBAAkB,CAyBxB;IAEF,gBAAgB;IAChB,OAAO,CAAC,mBAAmB,CA6BzB;IAIO,iBAAiB,IAAI,IAAI;IA0BzB,oBAAoB,IAAI,IAAI;IAcrC;;;;;;;;;;;OAWG;IACH,OAAO,CAAC,kBAAkB,CAMxB;IAEF;;;;;;;;OAQG;IACH,OAAO,CAAC,qBAAqB,CAQ3B;IAEO,OAAO,CAAC,iBAAiB,EAAE,cAAc,CAAC,IAAI,CAAC,GAAG,IAAI;IAOtD,YAAY,IAAI,IAAI;IAa7B;;;;;;OAMG;IACH,OAAO,CAAC,sBAAsB;IAgFrB,MAAM;CAgChB;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,SAAS,EAAE,SAAS,CAAC;KACtB;CACF"}
@@ -1,4 +1,4 @@
1
- import { H as a, a as x, b as H } from "../../shared/hx-menu-divider-C2omnPtj.js";
1
+ import { H as a, a as x, b as H } from "../../shared/hx-menu-divider-BjiRIWKq.js";
2
2
  export {
3
3
  a as HelixMenu,
4
4
  x as HelixMenuDivider,