@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
@@ -0,0 +1,127 @@
1
+ /**
2
+ * Shared utilities for resolving `aria-labelledby` and `aria-describedby`
3
+ * IDREF token lists across the Shadow DOM boundary.
4
+ *
5
+ * Selection-control components (`hx-checkbox`, `hx-radio-group`, `hx-switch`,
6
+ * etc.) elevate their semantic surface to the host via `ElementInternals` so
7
+ * that consumer-supplied `aria-labelledby` / `aria-describedby` on the host
8
+ * resolves to light-DOM elements rather than being trapped on inner shadow
9
+ * nodes.
10
+ *
11
+ * Modern Chromium 134+ and Safari 17.4+ expose the IDL element-references API
12
+ * (`internals.ariaLabelledByElements`, `internals.ariaDescribedByElements`).
13
+ * For those engines we resolve token IDs against the host's root node (a
14
+ * Document or ShadowRoot) and assign the resulting elements directly.
15
+ *
16
+ * Older engines fall back to the host-attribute path: the ARIA delegation
17
+ * mixin keeps the original token list in `data-aria-labelledby`/
18
+ * `data-aria-describedby`, which assistive technology cannot follow into the
19
+ * shadow root, but that is the same surface area as the pre-fix code and is
20
+ * not a regression.
21
+ *
22
+ * Component authors do NOT need to wire this directly — see
23
+ * `installAriaIdrefMirror()` for an installable observer that keeps an inner
24
+ * node's `aria-*` attributes in sync with the token list across mutations.
25
+ */
26
+ /**
27
+ * Resolves a whitespace-separated IDREF token list to live element references.
28
+ *
29
+ * Searches the host's containing root first (Document or ShadowRoot), then
30
+ * walks up through enclosing shadow hosts, and finally falls back to the
31
+ * top-level Document. Codex round-15 P1: hx-* controls embedded inside an
32
+ * outer component's shadow tree often legitimately reference labels/descriptions
33
+ * declared in the outer document or in an ancestor shadow tree. Restricting
34
+ * resolution to a single root left those controls anonymous on the
35
+ * `ariaLabelledByElements` / `ariaDescribedByElements` path. The IDL
36
+ * element-references API accepts any element regardless of root, so widening
37
+ * the search closes that gap.
38
+ *
39
+ * Codex round-16 P1: when the host is **slotted into** another component
40
+ * (light-DOM child of a shadow-root-bearing element), `host.getRootNode()`
41
+ * is still the document, so IDREF targets declared in the slot owner's
42
+ * shadow root are unreachable through the ancestor-shadow-host chain. We
43
+ * additionally walk `host.assignedSlot.getRootNode()` — that resolves to
44
+ * the slot owner's shadow root — and continue up that root's host chain so
45
+ * cross-shadow IDREF resolution works for the composed-tree slotting
46
+ * pattern. The walk is recursive: a slot owner that is itself slotted into
47
+ * another shadow tree contributes its own ancestor chain too.
48
+ *
49
+ * Tokens that fail to resolve at every level are silently dropped — matching
50
+ * native attribute-string platform behaviour where unresolved tokens are
51
+ * ignored.
52
+ */
53
+ export declare function resolveIdrefTokens(host: Element, tokens: string | null): Element[];
54
+ /**
55
+ * True when the runtime exposes the IDL element-references API on
56
+ * `ElementInternals`. Older Firefox / Safari builds return `undefined`
57
+ * for these accessors.
58
+ */
59
+ export declare function supportsIdrefElementReferences(internals: ElementInternals): boolean;
60
+ /**
61
+ * Mirror snapshot describing what should be applied to inner ARIA-bearing
62
+ * shadow nodes. Components consume this to project the correct attributes
63
+ * onto whichever inner element owns the announced semantic role.
64
+ */
65
+ export interface AriaIdrefSnapshot {
66
+ /** Computed `aria-labelledby` token list, or `null` to omit. */
67
+ labelledBy: string | null;
68
+ /** Computed `aria-describedby` token list, or `null` to omit. */
69
+ describedBy: string | null;
70
+ }
71
+ /**
72
+ * Merges two whitespace-separated token lists, preserving order and removing
73
+ * duplicates. `null`/empty inputs are skipped. Returns `null` when the merged
74
+ * list is empty.
75
+ */
76
+ export declare function mergeTokenLists(...lists: Array<string | null | undefined>): string | null;
77
+ /**
78
+ * Options accepted by `installAriaIdrefMirror()`.
79
+ */
80
+ export interface AriaIdrefMirrorOptions {
81
+ /**
82
+ * Attribute names on the host whose mutations should trigger a resync.
83
+ * Defaults to `['aria-labelledby', 'aria-describedby', 'aria-label']` plus
84
+ * the `data-aria-*` mirrors used by `mixinDelegatesAria`.
85
+ */
86
+ observedAttributes?: string[];
87
+ /**
88
+ * Whether to observe the resolved root for `id` attribute and `childList`
89
+ * mutations so that late-inserted IDREF targets and id renames trigger a
90
+ * resync. Defaults to `true`.
91
+ */
92
+ observeRoot?: boolean;
93
+ }
94
+ /**
95
+ * Handle returned by `installAriaIdrefMirror()`. Call `disconnect()` from
96
+ * `disconnectedCallback()` to tear the observers down. `resync()` forces an
97
+ * immediate sync — useful from `connectedCallback()` after the host has been
98
+ * re-attached to a new root.
99
+ */
100
+ export interface AriaIdrefMirrorHandle {
101
+ /** Force an immediate sync. */
102
+ resync(): void;
103
+ /** Tear down all observers and listeners. */
104
+ disconnect(): void;
105
+ }
106
+ /**
107
+ * Installs a `MutationObserver` pair that keeps host ARIA semantics in sync
108
+ * with mutations to consumer-supplied attributes AND late-target / id
109
+ * mutations in the host's resolved root.
110
+ *
111
+ * The `sync` callback is invoked on:
112
+ * 1. Initial install (synchronously)
113
+ * 2. Any change to one of the observed host attributes
114
+ * 3. Any `id` attribute mutation, child insertion, or child removal in the
115
+ * resolved root (Document or ShadowRoot containing the host)
116
+ *
117
+ * Components should call this from `connectedCallback()` and call
118
+ * `handle.disconnect()` from `disconnectedCallback()`. The handle's
119
+ * `resync()` method is safe to call from any lifecycle hook.
120
+ *
121
+ * Costs are bounded: the host observer touches one element; the root
122
+ * observer is shared per `Document`/`ShadowRoot` (codex round-7 #11) so every
123
+ * subscribing host pays a single attach cost regardless of how many other
124
+ * IDREF-aware controls share the root.
125
+ */
126
+ export declare function installAriaIdrefMirror(host: Element, sync: () => void, options?: AriaIdrefMirrorOptions): AriaIdrefMirrorHandle;
127
+ //# sourceMappingURL=aria-idref.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"aria-idref.d.ts","sourceRoot":"","sources":["../../src/utils/aria-idref.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,EAAE,CA6BlF;AAsGD;;;;GAIG;AACH,wBAAgB,8BAA8B,CAAC,SAAS,EAAE,gBAAgB,GAAG,OAAO,CAOnF;AAED;;;;GAIG;AACH,MAAM,WAAW,iBAAiB;IAChC,gEAAgE;IAChE,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,iEAAiE;IACjE,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,GAAG,KAAK,EAAE,KAAK,CAAC,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC,GAAG,MAAM,GAAG,IAAI,CAazF;AAED;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC;;;;OAIG;IACH,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC9B;;;;OAIG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED;;;;;GAKG;AACH,MAAM,WAAW,qBAAqB;IACpC,+BAA+B;IAC/B,MAAM,IAAI,IAAI,CAAC;IACf,6CAA6C;IAC7C,UAAU,IAAI,IAAI,CAAC;CACpB;AAoGD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,sBAAsB,CACpC,IAAI,EAAE,OAAO,EACb,IAAI,EAAE,MAAM,IAAI,EAChB,OAAO,GAAE,sBAA2B,GACnC,qBAAqB,CAsGvB"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Read the typeahead label for a menu item — the item's OWN text content
3
+ * EXCLUDING any nested submenu subtree projected through `slot="submenu"`.
4
+ *
5
+ * Codex push-gate round-6 finding 3 (hx-menu) + round-7 finding 3 (composites):
6
+ * a naive `item.textContent` walks the entire light-DOM tree, which on a
7
+ * parent menuitem includes the slotted nested `<hx-menu>` and its descendants.
8
+ * Typing the first letter of a child item then matches the parent (because
9
+ * the parent's subtree contains that text), causing first-character nav to
10
+ * focus the parent instead of the next sibling. Filter `slot="submenu"` out.
11
+ *
12
+ * Single source of truth for `hx-menu`, `hx-dropdown`, `hx-overflow-menu`,
13
+ * and `hx-split-button` typeahead matchers.
14
+ *
15
+ * @internal
16
+ */
17
+ export declare function getMenuItemTypeaheadLabel(item: Element): string;
18
+ //# sourceMappingURL=menu-label.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"menu-label.d.ts","sourceRoot":"","sources":["../../src/utils/menu-label.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,CAS/D"}
@@ -0,0 +1,28 @@
1
+ /**
2
+ * Write the roving tabindex value through the right surface for each menu
3
+ * item shape used inside `hx-menu`, `hx-dropdown`, `hx-overflow-menu`, and
4
+ * `hx-split-button` panels.
5
+ *
6
+ * Codex push-gate round-2 (hx-overflow-menu) + round-8 finding 2
7
+ * (hx-dropdown): host-canonical `hx-menu-item` cannot be addressed via the
8
+ * raw `tabIndex` setter on the host because:
9
+ *
10
+ * - On the modern path the host carries the announced role + IDL ARIA, so
11
+ * the roving tabindex must land on the host (so Tab and arrow advance to
12
+ * the announced surface).
13
+ * - On the fallback path the host is forced to `tabindex=-1` so the inner
14
+ * `.menu-item` element is the single focusable surface; the roving
15
+ * tabindex must land on the inner element.
16
+ *
17
+ * `hx-menu-item.setRovingTabIndex(value)` routes to the correct surface
18
+ * internally. For plain slotted `[role="menuitem"]` elements (legacy
19
+ * `<button>` / `<a>` children), fall back to the direct `tabIndex` write
20
+ * so consumers without `hx-menu-item` keep working.
21
+ *
22
+ * Single source of truth across hx-dropdown, hx-overflow-menu, etc. so
23
+ * future host-canonical menu shapes only have to teach this helper.
24
+ *
25
+ * @internal
26
+ */
27
+ export declare function writeMenuItemRovingTabIndex(item: HTMLElement, value: number): void;
28
+ //# sourceMappingURL=menu-roving.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"menu-roving.d.ts","sourceRoot":"","sources":["../../src/utils/menu-roving.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAgB,2BAA2B,CAAC,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAUlF"}
@@ -0,0 +1,41 @@
1
+ /**
2
+ * Composed-tree walkers for the `hx-menu` family.
3
+ *
4
+ * Extracted from `hx-menu.ts` (codex push-gate round-9) because the same
5
+ * walks are now needed by `hx-dropdown`, `hx-overflow-menu`, and
6
+ * `hx-split-button` to route nested `hx-item-submenu-open` /
7
+ * `hx-item-submenu-close` events to the correct parent. Keeping the helpers
8
+ * in a shared util avoids importing `hx-menu.ts` from the composites
9
+ * (cyclic) and keeps the tag-name string checks in one place.
10
+ *
11
+ * @module
12
+ */
13
+ /**
14
+ * Walks the composed tree from `start` outward and returns the closest
15
+ * enclosing `<hx-menu>` element, or `null` if none exists. Crosses both
16
+ * shadow boundaries (`getRootNode().host`) and slot boundaries
17
+ * (`assignedSlot`) so an item nested inside a submenu resolves to the
18
+ * inner menu, not the outer one. Codex push-gate round-4 P1.
19
+ *
20
+ * Returned as `Element` (rather than the concrete `HelixMenu` class) to
21
+ * avoid a circular import between `hx-menu` and this util; callers can
22
+ * narrow with `instanceof HelixMenu` if they need typed access.
23
+ *
24
+ * @internal
25
+ */
26
+ export declare function findClosestMenuAncestor(start: Element): Element | null;
27
+ /**
28
+ * Returns the `hx-menu-item` that owns `menu` as a nested submenu, or
29
+ * `null` if `menu` is a top-level menu (not slotted into a parent item's
30
+ * `slot="submenu"`). Used by ArrowLeft handling to close the correct
31
+ * submenu and return focus to the right parent. Codex push-gate round-4
32
+ * P1.
33
+ *
34
+ * Returned as `HTMLElement` (rather than the concrete `HelixMenuItem`
35
+ * class) to avoid a circular import with `hx-menu-item`; callers can
36
+ * narrow with `instanceof HelixMenuItem` if they need typed access.
37
+ *
38
+ * @internal
39
+ */
40
+ export declare function findOwningMenuItem(menu: Element): HTMLElement | null;
41
+ //# sourceMappingURL=menu-tree.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"menu-tree.d.ts","sourceRoot":"","sources":["../../src/utils/menu-tree.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH;;;;;;;;;;;;GAYG;AACH,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,GAAG,IAAI,CAiCtE;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,OAAO,GAAG,WAAW,GAAG,IAAI,CAWpE"}
@@ -0,0 +1,53 @@
1
+ /**
2
+ * Composed-tree walkers for the `hx-tree-view` family.
3
+ *
4
+ * Mirrors the `menu-tree.ts` utilities (codex push-gate round-9 extraction
5
+ * for the menu family), but specialized for `hx-tree-view` / `hx-tree-item`
6
+ * where nesting is structural rather than slot-based — child items live in a
7
+ * named `slot="children"` projected into the parent item's shadow root,
8
+ * and any number of nesting levels are legal.
9
+ *
10
+ * Group 5c (codex push-gate round-1 lift): `hx-tree-view`'s host-bound
11
+ * keydown / select handlers receive bubbled events from EVERY descendant
12
+ * tree-item, including ones that legitimately belong to an inner
13
+ * `hx-tree-view`. The same guard pattern that `hx-menu` uses (act only when
14
+ * THIS host is the closest enclosing surface of the dispatching item) is
15
+ * required for trees too. `hx-tree-item._handleClick` /
16
+ * `_handleKeyDown` need to ignore bubbled events from a CHILD `hx-tree-item`
17
+ * — otherwise selecting Child also activates Parent and Enter on Child
18
+ * re-fires Parent's handler.
19
+ *
20
+ * @module
21
+ */
22
+ /**
23
+ * Walks the composed tree from `start` outward and returns the closest
24
+ * enclosing `<hx-tree-view>` element, or `null` if none exists. Crosses
25
+ * shadow boundaries (`getRootNode().host`) and slot boundaries
26
+ * (`assignedSlot`) so that an item nested inside a child tree-item — which
27
+ * lives in the parent item's `slot="children"`, projected into the parent's
28
+ * shadow root — resolves to the correct enclosing tree.
29
+ *
30
+ * Returned as `Element` to avoid a circular import between `hx-tree-view`
31
+ * and this util; callers narrow with `instanceof HelixTreeView` if needed.
32
+ *
33
+ * @internal
34
+ */
35
+ export declare function findClosestTreeView(start: Element): Element | null;
36
+ /**
37
+ * Walks the composed tree from `start` outward and returns the closest
38
+ * enclosing `<hx-tree-item>` element, or `null` if none exists. Includes
39
+ * `start` itself when it is an `hx-tree-item`.
40
+ *
41
+ * Used by `hx-tree-item`'s `_isOwnEvent` origin guard: a click or keydown
42
+ * is "ours" iff the closest `hx-tree-item` ancestor of the original event
43
+ * target is THIS item (not a child item slotted into our `children` slot).
44
+ * The walk crosses shadow + slot boundaries so a deeply nested child item
45
+ * resolves correctly.
46
+ *
47
+ * Returned as `Element` to avoid a circular import; callers narrow with
48
+ * `instanceof HelixTreeItem` if needed.
49
+ *
50
+ * @internal
51
+ */
52
+ export declare function findClosestTreeItem(start: Element): Element | null;
53
+ //# sourceMappingURL=tree-walk.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tree-walk.d.ts","sourceRoot":"","sources":["../../src/utils/tree-walk.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH;;;;;;;;;;;;GAYG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,GAAG,IAAI,CAsBlE;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,GAAG,IAAI,CAsBlE"}
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "schemaVersion": "1.0.0",
3
- "generatedAt": "2026-05-03T13:42:50.577Z",
3
+ "generatedAt": "2026-05-06T11:01:35.731Z",
4
4
  "sourceCem": "custom-elements.json",
5
- "helixVersion": "3.3.1",
5
+ "helixVersion": "3.4.0",
6
6
  "tokensVersion": "3.3.1",
7
7
  "components": [
8
8
  {
@@ -5519,6 +5519,30 @@
5519
5519
  "type": "text",
5520
5520
  "defaultValue": ""
5521
5521
  },
5522
+ {
5523
+ "figmaPropertyName": "label",
5524
+ "cemAttribute": "label",
5525
+ "type": "text",
5526
+ "defaultValue": "undefined"
5527
+ },
5528
+ {
5529
+ "figmaPropertyName": "accessibleLabel",
5530
+ "cemAttribute": "accessible-label",
5531
+ "type": "text",
5532
+ "defaultValue": "undefined"
5533
+ },
5534
+ {
5535
+ "figmaPropertyName": "helpText",
5536
+ "cemAttribute": "help-text",
5537
+ "type": "text",
5538
+ "defaultValue": "undefined"
5539
+ },
5540
+ {
5541
+ "figmaPropertyName": "error",
5542
+ "cemAttribute": "error",
5543
+ "type": "text",
5544
+ "defaultValue": "undefined"
5545
+ },
5522
5546
  {
5523
5547
  "figmaPropertyName": "labelGradient",
5524
5548
  "cemAttribute": "label-gradient",
@@ -5569,6 +5593,27 @@
5569
5593
  "type": "instance-swap",
5570
5594
  "default": null,
5571
5595
  "description": "Custom trigger element. Default: a color swatch button."
5596
+ },
5597
+ {
5598
+ "figmaPropertyName": "label",
5599
+ "cemSlot": "label",
5600
+ "type": "instance-swap",
5601
+ "default": null,
5602
+ "description": "Visible label projected above the trigger; aggregated text contributes to the host's accessible name when no stronger naming source (aria-labelledby/aria-label/accessible-label/label) is supplied."
5603
+ },
5604
+ {
5605
+ "figmaPropertyName": "help-text",
5606
+ "cemSlot": "help-text",
5607
+ "type": "instance-swap",
5608
+ "default": null,
5609
+ "description": "Help text rendered below the trigger and joined into the host's announced description channel."
5610
+ },
5611
+ {
5612
+ "figmaPropertyName": "error",
5613
+ "cemSlot": "error",
5614
+ "type": "instance-swap",
5615
+ "default": null,
5616
+ "description": "Error message rendered below help text. When present, marks the trigger as aria-invalid and is announced via a polite live region."
5572
5617
  }
5573
5618
  ],
5574
5619
  "cssParts": [
@@ -5599,6 +5644,18 @@
5599
5644
  {
5600
5645
  "description": "The text input area.",
5601
5646
  "name": "input"
5647
+ },
5648
+ {
5649
+ "description": "The visible label container above the trigger.",
5650
+ "name": "label"
5651
+ },
5652
+ {
5653
+ "description": "The help-text container rendered below the trigger.",
5654
+ "name": "help-text"
5655
+ },
5656
+ {
5657
+ "description": "The error-message container rendered below help text.",
5658
+ "name": "error"
5602
5659
  }
5603
5660
  ],
5604
5661
  "events": [
@@ -7808,6 +7865,12 @@
7808
7865
  "cemAttribute": "next-month-label",
7809
7866
  "type": "text",
7810
7867
  "defaultValue": "Next month"
7868
+ },
7869
+ {
7870
+ "figmaPropertyName": "accessibleLabel",
7871
+ "cemAttribute": "accessible-label",
7872
+ "type": "text",
7873
+ "defaultValue": "null"
7811
7874
  }
7812
7875
  ],
7813
7876
  "slots": [
@@ -11396,6 +11459,17 @@
11396
11459
  "true"
11397
11460
  ],
11398
11461
  "default": "false"
11462
+ },
11463
+ {
11464
+ "figmaAxisName": "loading",
11465
+ "cemAttribute": "loading",
11466
+ "cemFieldName": "loading",
11467
+ "type": "boolean",
11468
+ "values": [
11469
+ "false",
11470
+ "true"
11471
+ ],
11472
+ "default": "false"
11399
11473
  }
11400
11474
  ],
11401
11475
  "textProperties": [
@@ -11442,6 +11516,10 @@
11442
11516
  {
11443
11517
  "description": "The icon container span wrapping the default slot.",
11444
11518
  "name": "icon"
11519
+ },
11520
+ {
11521
+ "description": "The loading spinner SVG element shown when `loading` is true.",
11522
+ "name": "spinner"
11445
11523
  }
11446
11524
  ],
11447
11525
  "events": [
@@ -11918,6 +11996,12 @@
11918
11996
  "cemAttribute": "rel",
11919
11997
  "type": "text",
11920
11998
  "defaultValue": "undefined"
11999
+ },
12000
+ {
12001
+ "figmaPropertyName": "externalLabel",
12002
+ "cemAttribute": "external-label",
12003
+ "type": "text",
12004
+ "defaultValue": "(opens in new tab)"
11921
12005
  }
11922
12006
  ],
11923
12007
  "slots": [
@@ -12685,7 +12769,7 @@
12685
12769
  "figmaEligible": true,
12686
12770
  "figmaComponentName": "hx-menu-item",
12687
12771
  "figmaPagePlacement": "4a",
12688
- "description": "A single interactive item for use inside `hx-menu`. Supports normal, checkbox, and radio types, loading state, prefix/suffix slots, and submenu nesting. Use `aria-label` on the parent `hx-menu` to…",
12772
+ "description": "A single interactive item for use inside `hx-menu`. Supports normal, checkbox, and radio types, loading state, prefix/suffix slots, and submenu nesting.",
12689
12773
  "tier": "atom",
12690
12774
  "variantAxes": [
12691
12775
  {
@@ -12807,18 +12891,18 @@
12807
12891
  "description": "Dispatched when the item is activated via click, Enter, or Space."
12808
12892
  },
12809
12893
  {
12810
- "name": "hx-item-submenu-open",
12811
12894
  "type": {
12812
12895
  "text": "CustomEvent<{item: HelixMenuItem}>"
12813
12896
  },
12814
- "description": "Dispatched when ArrowRight is pressed on an item with a submenu."
12897
+ "description": "Dispatched when ArrowRight is pressed on an item with a submenu.",
12898
+ "name": "hx-item-submenu-open"
12815
12899
  },
12816
12900
  {
12817
- "name": "hx-item-submenu-close",
12818
12901
  "type": {
12819
12902
  "text": "CustomEvent<{item: HelixMenuItem}>"
12820
12903
  },
12821
- "description": "Dispatched when ArrowLeft is pressed on an item, signaling the parent to close the submenu and return focus."
12904
+ "description": "Dispatched when ArrowLeft is pressed on an item, signaling the parent to close the submenu and return focus.",
12905
+ "name": "hx-item-submenu-close"
12822
12906
  }
12823
12907
  ],
12824
12908
  "cssProperties": [
@@ -17071,6 +17155,13 @@
17071
17155
  "text": "CustomEvent<{value: string}>"
17072
17156
  },
17073
17157
  "description": "Dispatched when the selected option changes."
17158
+ },
17159
+ {
17160
+ "type": {
17161
+ "text": "Event"
17162
+ },
17163
+ "description": "Platform constraint-validation event fired when checkValidity() / reportValidity() determine the value is invalid (form-associated component contract via ElementInternals.setValidity).",
17164
+ "name": "invalid"
17074
17165
  }
17075
17166
  ],
17076
17167
  "cssProperties": [
@@ -21641,7 +21732,7 @@
21641
21732
  "figmaEligible": true,
21642
21733
  "figmaComponentName": "hx-tab-panel",
21643
21734
  "figmaPagePlacement": "4a",
21644
- "description": "A content panel associated with an `<hx-tab>`, managed by a parent `<hx-tabs>`.",
21735
+ "description": "A content panel associated with an `<hx-tab>`, managed by a parent `<hx-tabs>`. Group 5a host-canonical: `role=\"tabpanel\"` lives on the host via `_internals.role`. The host carries the canonical AT…",
21645
21736
  "tier": "atom",
21646
21737
  "variantAxes": [],
21647
21738
  "textProperties": [
@@ -21980,7 +22071,7 @@
21980
22071
  "manual",
21981
22072
  "automatic"
21982
22073
  ],
21983
- "default": "automatic"
22074
+ "default": "manual"
21984
22075
  }
21985
22076
  ],
21986
22077
  "textProperties": [
@@ -24138,31 +24229,46 @@
24138
24229
  ],
24139
24230
  "cssParts": [
24140
24231
  {
24141
- "description": "The inner slot wrapper element. `display: contents` — no layout effect.",
24232
+ "description": "The inner slot wrapper element. `display: contents` — no layout effect. Theme-injected CSS custom properties (semantic surface — full token catalog lives in `@helixui/tokens`; the wildcard `--hx-*` was previously documented here but the CEM cssProperties[] surface requires explicit names).",
24142
24233
  "name": "base"
24143
24234
  }
24144
24235
  ],
24145
24236
  "events": [],
24146
24237
  "cssProperties": [
24147
24238
  {
24148
- "description": "All design tokens for the selected theme are injected as CSS custom properties on the host element.",
24149
- "name": "--hx-*",
24239
+ "description": "Primary text color (theme-injected).",
24240
+ "name": "--hx-color-text-primary",
24150
24241
  "figmaBinding": null
24151
24242
  },
24152
24243
  {
24153
- "description": "Color.",
24154
- "name": "--hx-color-text-primary",
24244
+ "description": "Base surface background (theme-injected).",
24245
+ "name": "--hx-color-surface-base",
24155
24246
  "figmaBinding": null
24156
24247
  },
24157
24248
  {
24158
- "description": "Spacing token.",
24249
+ "description": "Default border color (theme-injected).",
24250
+ "name": "--hx-color-border-default",
24251
+ "figmaBinding": null
24252
+ },
24253
+ {
24254
+ "description": "Spacing token (theme-injected).",
24159
24255
  "name": "--hx-space-4",
24160
24256
  "figmaBinding": null
24161
24257
  },
24162
24258
  {
24163
- "description": "Animation duration.",
24259
+ "description": "Animation duration (theme-injected).",
24164
24260
  "name": "--hx-duration-fast",
24165
24261
  "figmaBinding": null
24262
+ },
24263
+ {
24264
+ "description": "Medium border-radius (theme-injected).",
24265
+ "name": "--hx-radius-md",
24266
+ "figmaBinding": null
24267
+ },
24268
+ {
24269
+ "description": "Body font family (theme-injected).",
24270
+ "name": "--hx-font-family-body",
24271
+ "figmaBinding": null
24166
24272
  }
24167
24273
  ],
24168
24274
  "dependsOn": [],
@@ -24255,6 +24361,12 @@
24255
24361
  "cemAttribute": "error",
24256
24362
  "type": "text",
24257
24363
  "defaultValue": ""
24364
+ },
24365
+ {
24366
+ "figmaPropertyName": "accessibleLabel",
24367
+ "cemAttribute": "accessible-label",
24368
+ "type": "text",
24369
+ "defaultValue": "null"
24258
24370
  }
24259
24371
  ],
24260
24372
  "slots": [
@@ -25087,7 +25199,7 @@
25087
25199
  "events": [],
25088
25200
  "cssProperties": [
25089
25201
  {
25090
- "description": "Z-index for the fixed stack.",
25202
+ "description": "Z-index for the fixed stack. ─── ARIA scope (group-6 §3.2 / §5.9) ───────────────────────────────────── `hx-toast-stack` deliberately has NO `role`, `aria-live`, `aria-atomic`, or `aria-relevant` on its host or inner container. Each child `hx-toast` is its own live region (role=alert/status via ElementInternals). Wrapping those toasts in a second live region (e.g. `role=\"log\"` on the stack) would create nested live regions, which causes older NVDA/JAWS to announce every toast TWICE — once for the toast's own role, once for the surrounding log region. The stack is purely a positional/z-index container; it is invisible to the AT tree. Do NOT add a container role unless this entire architecture is rewritten so individual toasts no longer carry their own roles.",
25091
25203
  "name": "--hx-z-index-toast",
25092
25204
  "default": "9000",
25093
25205
  "figmaBinding": {
@@ -26205,7 +26317,7 @@
26205
26317
  "name": "item"
26206
26318
  },
26207
26319
  {
26208
- "description": "The interactive item row (contains expand icon, icon slot, and label).",
26320
+ "description": "The interactive item row (presentational on the modern path; carries role=\"treeitem\" + aria-* on the legacy fallback).",
26209
26321
  "name": "row"
26210
26322
  },
26211
26323
  {
@@ -26217,7 +26329,7 @@
26217
26329
  "name": "label"
26218
26330
  },
26219
26331
  {
26220
- "description": "The children container.",
26332
+ "description": "The children container (always carries role=\"group\").",
26221
26333
  "name": "children"
26222
26334
  }
26223
26335
  ],
@@ -26361,7 +26473,7 @@
26361
26473
  ],
26362
26474
  "cssParts": [
26363
26475
  {
26364
- "description": "The tree container element with role=\"tree\".",
26476
+ "description": "The tree container element with role=\"tree\" (legacy fallback path) or the inner shadow surface (modern path; role lives on the host).",
26365
26477
  "name": "tree"
26366
26478
  }
26367
26479
  ],
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@helixui/library",
3
- "version": "3.3.1",
3
+ "version": "3.4.0",
4
4
  "description": "Enterprise Web Component Library built with Lit 3.x",
5
5
  "type": "module",
6
6
  "sideEffects": [