@helixui/library 3.3.1 → 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 (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 +2 -2
  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,10 +1,12 @@
1
- import { css as v, html as _, nothing as I } from "lit";
2
- import { property as h, state as g, customElement as m } from "lit/decorators.js";
3
- import { f as y } from "./forced-colors-CTEDFRGa.js";
4
- import { d as E } from "./dev-warn-YlwPHjtX.js";
5
- import { H as T } from "./helix-element-BNEYeiys.js";
6
- import { c as N } from "./id-counter-DuX8vsui.js";
7
- const O = v`
1
+ import { css as g, html as v, nothing as C } from "lit";
2
+ import { property as b, state as u, customElement as y } from "lit/decorators.js";
3
+ import { f as E, b as H } from "./forced-colors-CTEDFRGa.js";
4
+ import { d as P } from "./dev-warn-YlwPHjtX.js";
5
+ import { s as S, i as T, r as m } from "./aria-idref-CxvyzfQS.js";
6
+ import { f as I } from "./aria-flatten-DY6v2vah.js";
7
+ import { H as A } from "./helix-element-BNEYeiys.js";
8
+ import { c as $ } from "./id-counter-DuX8vsui.js";
9
+ const R = g`
8
10
  :host {
9
11
  display: block;
10
12
  font-family: var(--hx-tabs-font-family, var(--hx-font-family-sans, sans-serif));
@@ -93,60 +95,59 @@ const O = v`
93
95
  }
94
96
  }
95
97
  `;
96
- var k = Object.defineProperty, H = Object.getOwnPropertyDescriptor, p = (t, e, a, i) => {
97
- for (var s = i > 1 ? void 0 : i ? H(e, a) : e, r = t.length - 1, o; r >= 0; r--)
98
- (o = t[r]) && (s = (i ? o(e, a, s) : o(s)) || s);
99
- return i && s && k(e, a, s), s;
98
+ var k = Object.defineProperty, O = Object.getOwnPropertyDescriptor, p = (t, e, s, i) => {
99
+ for (var a = i > 1 ? void 0 : i ? O(e, s) : e, o = t.length - 1, r; o >= 0; o--)
100
+ (r = t[o]) && (a = (i ? r(e, s, a) : r(a)) || a);
101
+ return i && a && k(e, s, a), a;
100
102
  };
101
- const L = N("hx-tabs");
102
- let b = class extends T {
103
+ const M = $("hx-tabs");
104
+ let d = class extends A {
103
105
  constructor() {
104
- super(...arguments), this._id = L(), this.orientation = "horizontal", this.activation = "automatic", this.label = "", this._activePanel = "", this._cachedTabs = null, this._cachedPanels = null, this._observer = null, this._pendingIndex = null, this._handleTabSelect = (t) => {
106
+ super(...arguments), this._id = M(), this.orientation = "horizontal", this.activation = "manual", this.label = "", this._activePanel = "", this._supportsIdrefRefs = !0, this._ariaMirror = null, this._cachedTabs = null, this._cachedPanels = null, this._observer = null, this._pendingIndex = null, this._handleTabSelect = (t) => {
105
107
  if (!(t instanceof CustomEvent)) return;
106
108
  t.stopPropagation();
107
- const e = t.composedPath().find((a) => a instanceof Element && a.tagName.toLowerCase() === "hx-tab");
109
+ const e = t.composedPath().find((s) => s instanceof Element && s.tagName.toLowerCase() === "hx-tab");
108
110
  e && this._activateTab(e);
109
111
  }, this._handleSlotChange = () => {
110
- if (this._warnInvalidSlotContent(), this._cachedTabs = null, this._cachedPanels = null, this._syncTabsAndPanels(), !this._getPanels().some((a) => a.name === this._activePanel)) {
111
- const a = this._getEnabledTabs()[0];
112
- a ? this._activateTab(a, !1) : this._activePanel = "";
112
+ if (this._warnInvalidSlotContent(), this._cachedTabs = null, this._cachedPanels = null, this._syncTabsAndPanels(), !this._getPanels().some((s) => s.name === this._activePanel)) {
113
+ const s = this._getEnabledTabs()[0];
114
+ s ? this._activateTab(s, !1) : this._activePanel = "";
113
115
  }
114
116
  }, this._handleKeydown = (t) => {
115
- var w, P, S, C;
116
117
  const e = this._getTabs();
117
118
  if (e.length === 0)
118
119
  return;
119
- const a = this.orientation === "horizontal", i = a ? "ArrowLeft" : "ArrowUp", s = a ? "ArrowRight" : "ArrowDown";
120
- if (![i, s, "Home", "End", " ", "Enter"].includes(t.key))
120
+ const s = this.orientation === "horizontal", i = s ? "ArrowLeft" : "ArrowUp", a = s ? "ArrowRight" : "ArrowDown";
121
+ if (![i, a, "Home", "End", " ", "Enter"].includes(t.key))
121
122
  return;
122
- const o = e.find((u) => u === document.activeElement);
123
+ const r = e.find((_) => _ === document.activeElement);
123
124
  if (t.key === " " || t.key === "Enter") {
124
- o && !o.disabled && (t.preventDefault(), this._activateTab(o), (P = (w = o.shadowRoot) == null ? void 0 : w.querySelector("button")) == null || P.focus());
125
+ r && !r.disabled && (t.preventDefault(), this._activateTab(r), r.focus());
125
126
  return;
126
127
  }
127
128
  t.preventDefault();
128
- let n = o ? e.indexOf(o) : -1;
129
+ let n = r ? e.indexOf(r) : -1;
129
130
  if (n === -1) {
130
- const u = e.find(($) => $.panel === this._activePanel);
131
- n = u ? e.indexOf(u) : 0;
131
+ const _ = e.find((L) => L.panel === this._activePanel);
132
+ n = _ ? e.indexOf(_) : 0;
132
133
  }
133
- let d;
134
- t.key === "Home" ? d = 0 : t.key === "End" ? d = e.length - 1 : t.key === s ? d = (n + 1) % e.length : d = n <= 0 ? e.length - 1 : n - 1;
135
- const l = e[d];
136
- l && ((C = (S = l.shadowRoot) == null ? void 0 : S.querySelector("button")) == null || C.focus(), this.activation === "automatic" && !l.disabled && this._activateTab(l));
134
+ let h;
135
+ t.key === "Home" ? h = 0 : t.key === "End" ? h = e.length - 1 : t.key === a ? h = (n + 1) % e.length : h = n <= 0 ? e.length - 1 : n - 1;
136
+ const l = e[h];
137
+ l && (l.focus(), this.activation === "automatic" && !l.disabled && this._activateTab(l));
137
138
  };
138
139
  }
139
140
  // ─── Attribute Observation ───
140
141
  static get observedAttributes() {
141
142
  return [...super.observedAttributes ?? [], "selected-index"];
142
143
  }
143
- attributeChangedCallback(t, e, a) {
144
- if (super.attributeChangedCallback(t, e, a), t === "selected-index" && a !== null && e !== a) {
145
- const i = parseInt(a, 10);
144
+ attributeChangedCallback(t, e, s) {
145
+ if (super.attributeChangedCallback(t, e, s), t === "selected-index" && s !== null && e !== s) {
146
+ const i = parseInt(s, 10);
146
147
  if (!isNaN(i) && i >= 0)
147
148
  if (this.hasUpdated) {
148
- const s = this._getTabs()[i];
149
- s && !s.disabled && this._activateTab(s, !1);
149
+ const a = this._getTabs()[i];
150
+ a && !a.disabled && this._activateTab(a, !1);
150
151
  } else
151
152
  this._pendingIndex = i;
152
153
  }
@@ -183,16 +184,18 @@ let b = class extends T {
183
184
  }
184
185
  // ─── Lifecycle ───
185
186
  connectedCallback() {
186
- super.connectedCallback(), this.addEventListener("hx-tab-select", this._handleTabSelect), this.addEventListener("keydown", this._handleKeydown), typeof MutationObserver < "u" && (this._observer = new MutationObserver(() => {
187
+ super.connectedCallback(), this._supportsIdrefRefs = S(this._internals), this.addEventListener("hx-tab-select", this._handleTabSelect), this.addEventListener("keydown", this._handleKeydown), typeof MutationObserver < "u" && (this._observer = new MutationObserver(() => {
187
188
  this._cachedTabs = null, this._cachedPanels = null, this._syncTabsAndPanels();
188
189
  }), this._observer.observe(this, {
189
190
  subtree: !1,
190
191
  attributeFilter: ["panel", "name"]
191
- }));
192
+ })), this._syncHostAriaSemantics(), this._ariaMirror = T(this, () => {
193
+ this._syncHostAriaSemantics();
194
+ });
192
195
  }
193
196
  disconnectedCallback() {
194
- var t;
195
- super.disconnectedCallback(), this.removeEventListener("hx-tab-select", this._handleTabSelect), this.removeEventListener("keydown", this._handleKeydown), (t = this._observer) == null || t.disconnect(), this._observer = null;
197
+ var t, e;
198
+ super.disconnectedCallback(), this.removeEventListener("hx-tab-select", this._handleTabSelect), this.removeEventListener("keydown", this._handleKeydown), (t = this._observer) == null || t.disconnect(), this._observer = null, (e = this._ariaMirror) == null || e.disconnect(), this._ariaMirror = null;
196
199
  }
197
200
  firstUpdated() {
198
201
  if (this.label, this._syncTabsAndPanels(), this._pendingIndex !== null) {
@@ -208,34 +211,56 @@ let b = class extends T {
208
211
  }
209
212
  }
210
213
  updated(t) {
211
- super.updated(t), t.has("_activePanel") && this._updateTabsAndPanels();
214
+ super.updated(t), t.has("_activePanel") && this._updateTabsAndPanels(), (t.has("orientation") || t.has("label")) && this._syncHostAriaSemantics();
215
+ }
216
+ // ─── Host ARIA Sync ───
217
+ /**
218
+ * Mirror tablist semantics onto the host via ElementInternals so consumer-
219
+ * supplied `aria-label`, `aria-labelledby`, and the `label` property all
220
+ * reach the announced control. The host carries `role="tablist"` and the
221
+ * orientation reflects the `orientation` property reactively.
222
+ * @internal
223
+ */
224
+ _syncHostAriaSemantics() {
225
+ var o;
226
+ const t = this._internals;
227
+ t.role = "tablist", t.ariaOrientation = this.orientation;
228
+ const e = ((o = this.getAttribute("aria-label")) == null ? void 0 : o.trim()) || "", s = this.getAttribute("aria-labelledby"), i = m(this, s), a = i.length > 0;
229
+ if (this._supportsIdrefRefs) {
230
+ const r = t;
231
+ r.ariaLabelledByElements = a ? i : null;
232
+ }
233
+ e ? t.ariaLabel = e : a ? this._supportsIdrefRefs ? t.ariaLabel = null : t.ariaLabel = i.map((r) => I(r)).filter(Boolean).join(" ") || this.label || null : t.ariaLabel = this.label || null;
212
234
  }
213
235
  // ─── Tab / Panel Sync ───
214
236
  /** @internal */
215
237
  _syncTabsAndPanels() {
216
238
  const t = this._getTabs(), e = this._getPanels();
217
- t.forEach((a, i) => {
218
- const s = a.id || `hx-tab-${this._id}-${i}`;
219
- a.id = s;
220
- const r = a.panel, o = e.find((n) => n.name === r) ?? e[i];
221
- if (o) {
222
- const n = o.id || `hx-panel-${this._id}-${i}`;
223
- o.id = n, a.controls = n;
224
- const d = Array.from(a.childNodes).filter(
225
- (l) => l.nodeType === Node.TEXT_NODE || l.nodeType === Node.ELEMENT_NODE && !l.hasAttribute("slot")
226
- ).map((l) => l.textContent ?? "").join("").trim();
227
- d ? (o.setAttribute("aria-label", d), o.removeAttribute("aria-labelledby")) : o.setAttribute("aria-labelledby", s);
239
+ t.forEach((s, i) => {
240
+ const a = s.id || `hx-tab-${this._id}-${i}`;
241
+ s.id = a;
242
+ const o = s.panel, r = e.find((n) => n.name === o) ?? e[i];
243
+ if (r) {
244
+ const n = r.id || `hx-panel-${this._id}-${i}`;
245
+ if (r.id = n, s.controls = n, s.setControlsPanel(r), r.setLabelledByTabs([s]), this._supportsIdrefRefs)
246
+ r.removeAttribute("aria-label"), r.removeAttribute("aria-labelledby");
247
+ else {
248
+ const h = Array.from(s.childNodes).filter(
249
+ (l) => l.nodeType === Node.TEXT_NODE || l.nodeType === Node.ELEMENT_NODE && !l.hasAttribute("slot")
250
+ ).map((l) => l.textContent ?? "").join("").trim();
251
+ h ? (r.setAttribute("aria-label", h), r.removeAttribute("aria-labelledby")) : r.setAttribute("aria-labelledby", a);
252
+ }
228
253
  }
229
254
  }), this._updateTabsAndPanels();
230
255
  }
231
256
  /** @internal */
232
257
  _updateTabsAndPanels() {
233
258
  const t = this._getTabs(), e = this._getPanels();
234
- t.forEach((a) => {
235
- const i = a.panel === this._activePanel;
236
- a.selected = i, a.tabIndex = i ? 0 : -1;
237
- }), e.forEach((a) => {
238
- a.name === this._activePanel ? (a.removeAttribute("hidden"), a.setAttribute("tabindex", "0")) : (a.setAttribute("hidden", ""), a.setAttribute("tabindex", "-1"));
259
+ t.forEach((s) => {
260
+ const i = s.panel === this._activePanel;
261
+ s.selected = i, s.tabIndex = i ? 0 : -1;
262
+ }), e.forEach((s) => {
263
+ s.name === this._activePanel ? (s.removeAttribute("hidden"), s.setAttribute("tabindex", "0")) : (s.setAttribute("hidden", ""), s.setAttribute("tabindex", "-1"));
239
264
  });
240
265
  }
241
266
  // ─── Tab Activation ───
@@ -243,48 +268,42 @@ let b = class extends T {
243
268
  _activateTab(t, e = !0) {
244
269
  if (t.disabled)
245
270
  return;
246
- const a = this._getTabs(), i = this._activePanel;
271
+ const s = this._getTabs(), i = this._activePanel;
247
272
  if (this._activePanel = t.panel, e && i !== this._activePanel) {
248
- const s = a.indexOf(t);
273
+ const a = s.indexOf(t);
249
274
  this.dispatchEvent(
250
275
  new CustomEvent("hx-tab-change", {
251
276
  bubbles: !0,
252
277
  composed: !0,
253
- detail: { tabId: t.id, index: s }
278
+ detail: { tabId: t.id, index: a }
254
279
  })
255
280
  );
256
281
  }
257
282
  }
258
283
  /** @internal */
259
284
  _warnInvalidSlotContent() {
260
- var a, i;
261
- const t = (a = this.shadowRoot) == null ? void 0 : a.querySelector('slot[name="tab"]'), e = (i = this.shadowRoot) == null ? void 0 : i.querySelector("slot:not([name])");
285
+ var s, i;
286
+ const t = (s = this.shadowRoot) == null ? void 0 : s.querySelector('slot[name="tab"]'), e = (i = this.shadowRoot) == null ? void 0 : i.querySelector("slot:not([name])");
262
287
  if (t) {
263
- const s = t.assignedElements().filter((r) => r.tagName.toLowerCase() !== "hx-tab");
264
- s.length > 0 && E(
288
+ const a = t.assignedElements().filter((o) => o.tagName.toLowerCase() !== "hx-tab");
289
+ a.length > 0 && P(
265
290
  "hx-tabs",
266
- `Slot "tab" expects <hx-tab> elements. Found unexpected: ${s.map((r) => `<${r.tagName.toLowerCase()}>`).join(", ")}`
291
+ `Slot "tab" expects <hx-tab> elements. Found unexpected: ${a.map((o) => `<${o.tagName.toLowerCase()}>`).join(", ")}`
267
292
  );
268
293
  }
269
294
  if (e) {
270
- const s = e.assignedElements().filter((r) => r.tagName.toLowerCase() !== "hx-tab-panel");
271
- s.length > 0 && E(
295
+ const a = e.assignedElements().filter((o) => o.tagName.toLowerCase() !== "hx-tab-panel");
296
+ a.length > 0 && P(
272
297
  "hx-tabs",
273
- `Default slot expects <hx-tab-panel> elements. Found unexpected: ${s.map((r) => `<${r.tagName.toLowerCase()}>`).join(", ")}`
298
+ `Default slot expects <hx-tab-panel> elements. Found unexpected: ${a.map((o) => `<${o.tagName.toLowerCase()}>`).join(", ")}`
274
299
  );
275
300
  }
276
301
  }
277
302
  // ─── Render ───
278
303
  render() {
279
- return _`
304
+ return v`
280
305
  <div class="tabs">
281
- <div
282
- part="tablist"
283
- class="tablist"
284
- role="tablist"
285
- aria-orientation=${this.orientation}
286
- aria-label=${this.label || "Tabs"}
287
- >
306
+ <div part="tablist" class="tablist">
288
307
  <slot name="tab" @slotchange=${this._handleSlotChange}></slot>
289
308
  </div>
290
309
  <div part="panels" class="panels">
@@ -294,23 +313,26 @@ let b = class extends T {
294
313
  `;
295
314
  }
296
315
  };
297
- b.styles = [O, y];
316
+ d.styles = [R, E];
317
+ p([
318
+ b({ type: String, reflect: !0 })
319
+ ], d.prototype, "orientation", 2);
298
320
  p([
299
- h({ type: String, reflect: !0 })
300
- ], b.prototype, "orientation", 2);
321
+ b({ type: String, attribute: "activation", reflect: !0 })
322
+ ], d.prototype, "activation", 2);
301
323
  p([
302
- h({ type: String, attribute: "activation", reflect: !0 })
303
- ], b.prototype, "activation", 2);
324
+ b({ type: String, reflect: !0 })
325
+ ], d.prototype, "label", 2);
304
326
  p([
305
- h({ type: String, reflect: !0 })
306
- ], b.prototype, "label", 2);
327
+ u()
328
+ ], d.prototype, "_activePanel", 2);
307
329
  p([
308
- g()
309
- ], b.prototype, "_activePanel", 2);
310
- b = p([
311
- m("hx-tabs")
312
- ], b);
313
- const z = v`
330
+ u()
331
+ ], d.prototype, "_supportsIdrefRefs", 2);
332
+ d = p([
333
+ y("hx-tabs")
334
+ ], d);
335
+ const N = g`
314
336
  :host {
315
337
  display: inline-block;
316
338
  }
@@ -352,16 +374,19 @@ const z = v`
352
374
  position: relative;
353
375
  }
354
376
 
355
- /* ─── Hover State ─── */
377
+ /* ─── Hover State ───
378
+ Group 5a host-canonical: drive visual state from host attributes
379
+ (selected / disabled are reflect: true), not from inner-element ARIA
380
+ attributes which now live on the host's ElementInternals. */
356
381
 
357
- .tab:not([aria-selected='true']):not([aria-disabled='true']):hover {
382
+ :host(:not([selected]):not([disabled])) .tab:hover {
358
383
  color: var(--hx-tabs-tab-hover-color, var(--hx-color-neutral-800, #202b39));
359
384
  background-color: var(--hx-tabs-tab-hover-bg, var(--hx-color-neutral-50, #f5f8f3));
360
385
  }
361
386
 
362
387
  /* ─── Selected State ─── */
363
388
 
364
- .tab[aria-selected='true'] {
389
+ :host([selected]) .tab {
365
390
  color: var(--hx-tabs-tab-active-color, var(--hx-color-primary-600, #0f7078));
366
391
  border-bottom-color: var(
367
392
  --_tab-indicator-bottom-color,
@@ -371,22 +396,30 @@ const z = v`
371
396
  font-weight: var(--hx-tabs-tab-active-font-weight, var(--hx-font-weight-semibold, 600));
372
397
  }
373
398
 
374
- /* ─── Focus State ─── */
399
+ /* ─── Focus State ───
400
+ Focus lands on the HOST in Group 5a host-canonical mode. The inner
401
+ [part="tab"] is presentational (tabindex=-1). Use :host(:focus-visible). */
375
402
 
376
- .tab:focus-visible {
403
+ :host(:focus-visible) .tab {
377
404
  outline: var(--hx-focus-ring-width, 2px) solid
378
405
  var(--hx-tabs-focus-ring-color, var(--hx-focus-ring-color, #0f7078));
379
406
  outline-offset: var(--hx-focus-ring-offset, 2px);
380
407
  border-radius: var(--hx-border-radius-sm, 0.25rem);
381
408
  }
382
409
 
410
+ /* Strip the default host focus ring — outline lands on the inner [part="tab"]
411
+ surface above for visual continuity with the existing component appearance. */
412
+ :host(:focus) {
413
+ outline: none;
414
+ }
415
+
383
416
  /* ─── Disabled State ─── */
384
417
 
385
418
  :host([disabled]) {
386
419
  cursor: not-allowed;
387
420
  }
388
421
 
389
- .tab[aria-disabled='true'] {
422
+ :host([disabled]) .tab {
390
423
  pointer-events: none;
391
424
  color: var(--hx-tabs-tab-disabled-color, var(--hx-color-neutral-400, #8e9c98));
392
425
  }
@@ -418,34 +451,73 @@ const z = v`
418
451
  background-color: ButtonFace;
419
452
  }
420
453
 
421
- .tab[aria-selected='true'] {
454
+ :host([selected]) .tab {
422
455
  color: HighlightText;
423
456
  background-color: Highlight;
424
457
  border-bottom-color: Highlight;
425
458
  }
426
459
 
427
- .tab:focus-visible {
460
+ :host(:focus-visible) .tab {
428
461
  outline: 3px solid Highlight;
429
462
  outline-offset: 2px;
430
463
  }
431
464
 
432
- .tab[aria-disabled='true'] {
465
+ :host([disabled]) .tab {
433
466
  color: GrayText;
434
467
  }
435
468
  }
436
469
  `;
437
- var D = Object.defineProperty, j = Object.getOwnPropertyDescriptor, f = (t, e, a, i) => {
438
- for (var s = i > 1 ? void 0 : i ? j(e, a) : e, r = t.length - 1, o; r >= 0; r--)
439
- (o = t[r]) && (s = (i ? o(e, a, s) : o(s)) || s);
440
- return i && s && D(e, a, s), s;
470
+ var B = Object.defineProperty, D = Object.getOwnPropertyDescriptor, f = (t, e, s, i) => {
471
+ for (var a = i > 1 ? void 0 : i ? D(e, s) : e, o = t.length - 1, r; o >= 0; o--)
472
+ (r = t[o]) && (a = (i ? r(e, s, a) : r(a)) || a);
473
+ return i && a && B(e, s, a), a;
441
474
  };
442
- let c = class extends T {
475
+ let c = class extends A {
443
476
  constructor() {
444
- super(...arguments), this.panel = "", this.selected = !1, this.disabled = !1, this.controls = "", this._hasPrefixSlot = !1, this._hasSuffixSlot = !1;
477
+ super(...arguments), this.panel = "", this.selected = !1, this.disabled = !1, this.controls = "", this._supportsIdrefRefs = !0, this._ariaMirror = null, this._controlledPanel = null, this._hasPrefixSlot = !1, this._hasSuffixSlot = !1;
445
478
  }
446
479
  // ─── Lifecycle ───
447
480
  connectedCallback() {
448
- super.connectedCallback(), this.closest("hx-tabs");
481
+ super.connectedCallback(), this._supportsIdrefRefs = S(this._internals), this.closest("hx-tabs"), this._syncHostAriaSemantics(), this._ariaMirror = T(this, () => {
482
+ this._syncHostAriaSemantics();
483
+ });
484
+ }
485
+ disconnectedCallback() {
486
+ var t;
487
+ super.disconnectedCallback(), (t = this._ariaMirror) == null || t.disconnect(), this._ariaMirror = null;
488
+ }
489
+ updated(t) {
490
+ super.updated(t), (t.has("selected") || t.has("disabled") || t.has("controls") || t.has("panel")) && this._syncHostAriaSemantics();
491
+ }
492
+ /**
493
+ * Set by `<hx-tabs>` whenever the tab→panel relationship is recomputed.
494
+ * Drives `internals.ariaControlsElements` (modern path) so AT walks across
495
+ * the shadow boundary to the controlled panel by element reference.
496
+ * @internal
497
+ */
498
+ setControlsPanel(t) {
499
+ this._controlledPanel = t, this._syncHostAriaSemantics();
500
+ }
501
+ /**
502
+ * Mirror reactive ARIA state onto ElementInternals on the **host**. The
503
+ * inner `<button>` no longer carries role/aria-* on the modern path — the
504
+ * host is the canonical AT-announced surface. The button stays as the
505
+ * activation surface (Enter/Space/click) but is `tabindex=-1` and
506
+ * presentational from AT's perspective.
507
+ * @internal
508
+ */
509
+ _syncHostAriaSemantics() {
510
+ const t = this._internals;
511
+ if (t.role = "tab", t.ariaSelected = this.selected ? "true" : "false", t.ariaDisabled = this.disabled ? "true" : null, this._supportsIdrefRefs) {
512
+ const a = t;
513
+ a.ariaControlsElements = this._controlledPanel ? [this._controlledPanel] : null;
514
+ }
515
+ const e = this.getAttribute("aria-labelledby"), s = this.getAttribute("aria-label"), i = m(this, e);
516
+ if (this._supportsIdrefRefs) {
517
+ const a = t;
518
+ a.ariaLabelledByElements = i.length > 0 ? i : null;
519
+ }
520
+ s && s.trim() ? t.ariaLabel = s : !this._supportsIdrefRefs && i.length > 0 ? t.ariaLabel = i.map((a) => I(a)).filter(Boolean).join(" ") || null : t.ariaLabel = null;
449
521
  }
450
522
  // ─── Event Handling ───
451
523
  /** @internal */
@@ -470,15 +542,31 @@ let c = class extends T {
470
542
  }
471
543
  // ─── Render ───
472
544
  render() {
473
- return _`
545
+ return !this._supportsIdrefRefs && this.controls ? this.setAttribute("aria-controls", this.controls) : this._supportsIdrefRefs && this.hasAttribute("aria-controls") && this.removeAttribute("aria-controls"), this._supportsIdrefRefs ? v`
546
+ <div
547
+ part="tab"
548
+ class="tab"
549
+ tabindex="-1"
550
+ aria-disabled=${this.disabled ? "true" : C}
551
+ @click=${this._handleClick}
552
+ >
553
+ <span part="prefix" class="tab__prefix" ?hidden=${!this._hasPrefixSlot}>
554
+ <slot name="prefix" @slotchange=${this._handlePrefixSlotChange}></slot>
555
+ </span>
556
+ <slot></slot>
557
+ <span part="suffix" class="tab__suffix" ?hidden=${!this._hasSuffixSlot}>
558
+ <slot name="suffix" @slotchange=${this._handleSuffixSlotChange}></slot>
559
+ </span>
560
+ </div>
561
+ ` : v`
474
562
  <button
475
563
  part="tab"
476
564
  class="tab"
477
565
  role="tab"
566
+ tabindex="-1"
478
567
  aria-selected=${this.selected ? "true" : "false"}
479
568
  aria-disabled=${this.disabled ? "true" : "false"}
480
- aria-controls=${this.controls || I}
481
- tabindex=${this.selected ? "0" : "-1"}
569
+ aria-controls=${this.controls || C}
482
570
  @click=${this._handleClick}
483
571
  >
484
572
  <span part="prefix" class="tab__prefix" ?hidden=${!this._hasPrefixSlot}>
@@ -492,29 +580,32 @@ let c = class extends T {
492
580
  `;
493
581
  }
494
582
  };
495
- c.styles = [z, y];
583
+ c.styles = [N, E];
496
584
  f([
497
- h({ type: String, reflect: !0 })
585
+ b({ type: String, reflect: !0 })
498
586
  ], c.prototype, "panel", 2);
499
587
  f([
500
- h({ type: Boolean, reflect: !0 })
588
+ b({ type: Boolean, reflect: !0 })
501
589
  ], c.prototype, "selected", 2);
502
590
  f([
503
- h({ type: Boolean, reflect: !0 })
591
+ b({ type: Boolean, reflect: !0 })
504
592
  ], c.prototype, "disabled", 2);
505
593
  f([
506
- h({ type: String, attribute: !1 })
594
+ b({ type: String, attribute: !1 })
507
595
  ], c.prototype, "controls", 2);
508
596
  f([
509
- g()
597
+ u()
598
+ ], c.prototype, "_supportsIdrefRefs", 2);
599
+ f([
600
+ u()
510
601
  ], c.prototype, "_hasPrefixSlot", 2);
511
602
  f([
512
- g()
603
+ u()
513
604
  ], c.prototype, "_hasSuffixSlot", 2);
514
605
  c = f([
515
- m("hx-tab")
606
+ y("hx-tab")
516
607
  ], c);
517
- const M = v`
608
+ const z = g`
518
609
  :host {
519
610
  display: block;
520
611
  }
@@ -556,38 +647,71 @@ const M = v`
556
647
  }
557
648
  }
558
649
  `;
559
- var K = Object.defineProperty, R = Object.getOwnPropertyDescriptor, A = (t, e, a, i) => {
560
- for (var s = i > 1 ? void 0 : i ? R(e, a) : e, r = t.length - 1, o; r >= 0; r--)
561
- (o = t[r]) && (s = (i ? o(e, a, s) : o(s)) || s);
562
- return i && s && K(e, a, s), s;
650
+ var j = Object.defineProperty, F = Object.getOwnPropertyDescriptor, w = (t, e, s, i) => {
651
+ for (var a = i > 1 ? void 0 : i ? F(e, s) : e, o = t.length - 1, r; o >= 0; o--)
652
+ (r = t[o]) && (a = (i ? r(e, s, a) : r(a)) || a);
653
+ return i && a && j(e, s, a), a;
563
654
  };
564
- let x = class extends T {
655
+ let x = class extends A {
565
656
  constructor() {
566
- super(...arguments), this.name = "";
657
+ super(...arguments), this.name = "", this._labelledByTabs = [], this._supportsIdrefRefs = !0, this._ariaMirror = null;
567
658
  }
568
659
  // ─── Lifecycle ───
569
660
  connectedCallback() {
570
- super.connectedCallback(), this.setAttribute("role", "tabpanel");
661
+ super.connectedCallback(), this._supportsIdrefRefs = S(this._internals), this._internals.role = "tabpanel", this._syncHostAriaSemantics(), this._ariaMirror = T(this, () => {
662
+ this._syncHostAriaSemantics();
663
+ });
664
+ }
665
+ disconnectedCallback() {
666
+ var t;
667
+ super.disconnectedCallback(), (t = this._ariaMirror) == null || t.disconnect(), this._ariaMirror = null;
668
+ }
669
+ updated(t) {
670
+ super.updated(t), this._syncHostAriaSemantics();
671
+ }
672
+ /**
673
+ * Set by `<hx-tabs>` whenever the tab→panel relationship is recomputed.
674
+ * Drives `internals.ariaLabelledByElements` so AT walks across the shadow
675
+ * boundary to the announcing tab host(s) by element reference rather than
676
+ * IDREF string. Pass an empty array to clear.
677
+ * @internal
678
+ */
679
+ setLabelledByTabs(t) {
680
+ this._labelledByTabs = t, this._syncHostAriaSemantics();
681
+ }
682
+ /** @internal */
683
+ _syncHostAriaSemantics() {
684
+ const t = this._internals;
685
+ t.role = "tabpanel";
686
+ const e = this.getAttribute("aria-labelledby"), s = this.getAttribute("aria-describedby"), i = m(this, e), a = m(this, s), o = this.getAttribute("aria-label"), r = i.length > 0 ? i : [...this._labelledByTabs];
687
+ if (this._supportsIdrefRefs) {
688
+ const n = t;
689
+ n.ariaLabelledByElements = r.length > 0 ? r : null, n.ariaDescribedByElements = a.length > 0 ? a : null, t.ariaLabel = o && o.trim() ? o : null;
690
+ } else
691
+ t.ariaLabel = o && o.trim() ? o : null;
571
692
  }
572
693
  // ─── Render ───
573
694
  render() {
574
- return _`
695
+ return v`
575
696
  <div part="panel" class="panel">
576
697
  <slot></slot>
577
698
  </div>
578
699
  `;
579
700
  }
580
701
  };
581
- x.styles = [M, y];
582
- A([
583
- h({ type: String, reflect: !0 })
702
+ x.styles = [z, H];
703
+ w([
704
+ b({ type: String, reflect: !0 })
584
705
  ], x.prototype, "name", 2);
585
- x = A([
586
- m("hx-tab-panel")
706
+ w([
707
+ u()
708
+ ], x.prototype, "_supportsIdrefRefs", 2);
709
+ x = w([
710
+ y("hx-tab-panel")
587
711
  ], x);
588
712
  export {
589
713
  c as H,
590
714
  x as a,
591
- b
715
+ d as b
592
716
  };
593
- //# sourceMappingURL=hx-tab-panel-DspCrKqo.js.map
717
+ //# sourceMappingURL=hx-tab-panel-BQtBXKLD.js.map