@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
@@ -102,6 +102,19 @@ export declare class HelixRadioGroup extends HelixRadioGroup_base {
102
102
  * @internal
103
103
  */
104
104
  private _hasErrorSlot;
105
+ /**
106
+ * Tracks whether the help-text slot has assigned content.
107
+ * @internal
108
+ */
109
+ private _hasHelpSlot;
110
+ /**
111
+ * Whether the platform supports IDL element references on `ElementInternals`.
112
+ * Drives the render-time branch between modern (host-canonical via
113
+ * internals) and fallback (inner fieldset is the announced surface).
114
+ * Codex round-17 P1.
115
+ * @internal
116
+ */
117
+ private _supportsIdrefRefs;
105
118
  /**
106
119
  * Unique identifier for this radio group instance used in ARIA attributes.
107
120
  * @internal
@@ -122,9 +135,104 @@ export declare class HelixRadioGroup extends HelixRadioGroup_base {
122
135
  * @internal
123
136
  */
124
137
  private _handleErrorSlotChange;
138
+ /**
139
+ * Handles slotchange events on the help-text slot to detect assigned content.
140
+ * Codex aria-group-2 finding: slot-only help text was not contributing to
141
+ * `aria-describedby` because the wrapper was conditionally rendered on the
142
+ * `helpText` property alone.
143
+ * @internal
144
+ */
145
+ private _handleHelpSlotChange;
146
+ /**
147
+ * Watches assigned `<slot name="help-text">` nodes for in-place text
148
+ * mutations so the no-IDL-ref fallback `internals.ariaDescription` stays in
149
+ * sync when a framework rewrites `textContent` of an already-assigned node
150
+ * without replacing it. `slotchange` does NOT fire for those mutations, so
151
+ * a separate observer is required. Codex round-23 P2 (Finding C).
152
+ * @internal
153
+ */
154
+ private _helpSlotTextObserver;
155
+ /**
156
+ * Watches assigned `<slot name="error">` nodes for in-place text mutations
157
+ * so the no-IDL-ref fallback `internals.ariaDescription` stays in sync when
158
+ * a framework rewrites `textContent` of an already-assigned node without
159
+ * replacing it. Codex round-23 P2 (Finding C).
160
+ * @internal
161
+ */
162
+ private _errorSlotTextObserver;
163
+ /**
164
+ * (Re-)installs the mutation observer over the current set of assigned
165
+ * help-text-slot nodes. Codex round-23 P2 (Finding C).
166
+ * @internal
167
+ */
168
+ private _installHelpSlotTextObserver;
169
+ /**
170
+ * (Re-)installs the mutation observer over the current set of assigned
171
+ * error-slot nodes. Codex round-23 P2 (Finding C).
172
+ * @internal
173
+ */
174
+ private _installErrorSlotTextObserver;
175
+ /**
176
+ * Handle for the shared IDREF observer. See `installAriaIdrefMirror()`.
177
+ * @internal
178
+ */
179
+ private _ariaMirror;
180
+ /**
181
+ * Deferred copy of `error` driven through reactive state so the persistent
182
+ * live region can re-announce on transitions without direct DOM mutation.
183
+ * Codex round-1 finding #10.
184
+ * @internal
185
+ */
186
+ private _announcedError;
187
+ /**
188
+ * Tracks group-suppressed child radios so detached children can have the
189
+ * flag cleared. Defense-in-depth symmetry with `hx-checkbox-group` —
190
+ * `hx-radio` is not form-associated today, so the flag is inert, but the
191
+ * parity keeps the contract identical between the two group/child families
192
+ * for any future form-association on `hx-radio`. Codex round-3 finding #1.
193
+ * @internal
194
+ */
195
+ private _suppressedChildren;
196
+ /**
197
+ * Snapshot of children captured before each `slotchange` so removed
198
+ * children can be released from suppression (WeakSet is non-enumerable).
199
+ * @internal
200
+ */
201
+ private _previousRadios;
202
+ /**
203
+ * Last value of `aria-labelledby` we wrote to the host. Used to distinguish
204
+ * external (consumer) attribute mutations from our own internal augmentation
205
+ * writes when refreshing the host-attribute fallback. Codex round-10 P2:
206
+ * without this guard, an internal mutation observer fire would re-read the
207
+ * already-augmented host attribute as if it were consumer-supplied, causing
208
+ * legend/help/error ids to leak forward as "consumer tokens" forever.
209
+ * @internal
210
+ */
211
+ private _lastWrittenLabelledBy;
212
+ /** @internal — see `_lastWrittenLabelledBy`. */
213
+ private _lastWrittenDescribedBy;
214
+ /**
215
+ * Most recently observed *consumer-supplied* `aria-labelledby` baseline (the
216
+ * set of tokens the consumer themselves wrote on the host). Refreshed only
217
+ * when the host attribute changes via an external write — internal writes
218
+ * leave the baseline untouched.
219
+ * @internal
220
+ */
221
+ private _consumerLabelledBy;
222
+ /** @internal — see `_consumerLabelledBy`. */
223
+ private _consumerDescribedBy;
125
224
  connectedCallback(): void;
126
225
  disconnectedCallback(): void;
127
226
  updated(changedProperties: PropertyValues<this>): void;
227
+ /**
228
+ * Mirrors radiogroup semantics onto the host via ElementInternals so that
229
+ * consumer-supplied `aria-label`, `aria-labelledby`, and `aria-describedby`
230
+ * on `<hx-radio-group>` reach the announced control. The codex aria-group-2
231
+ * finding identified that the inner `<fieldset>` was the announced node and
232
+ * the host's external IDREF tokens could not cross the shadow boundary.
233
+ * @internal
234
+ */
235
+ private _syncHostAriaSemantics;
128
236
  firstUpdated(changedProperties: PropertyValues<this>): void;
129
237
  /**
130
238
  * Cached list of child hx-radio elements; invalidated on slot change.
@@ -162,10 +270,53 @@ export declare class HelixRadioGroup extends HelixRadioGroup_base {
162
270
  */
163
271
  private _handleKeydown;
164
272
  /**
165
- * Handles slotchange events on the default slot to refresh the radio cache.
273
+ * Handles slotchange events on the default slot. Refreshes the cached
274
+ * radio list, reconciles `value`/`setFormValue`/validity against the new
275
+ * children, then re-tunes the per-child disabled observer so in-place
276
+ * `radio.disabled = true` mutations trigger the same reconcile pass.
277
+ *
278
+ * Codex round-2 finding #3: previously this handler only invalidated the
279
+ * cache and re-synced child state, so removing the currently-selected
280
+ * radio (or disabling it, or adding a new `checked` radio) left
281
+ * `this.value` and the submitted form value pointing at stale state and
282
+ * `_updateValidity` was never re-run.
283
+ *
284
+ * Codex round-7 finding #6: an in-place `selectedRadio.disabled = true`
285
+ * never re-entered this reconciler (the radio remained slotted), so the
286
+ * group could keep submitting a disabled value and stay valid until some
287
+ * unrelated slot mutation kicked things over. The per-child observer
288
+ * installed at the end of this method re-runs the same reconcile logic on
289
+ * every `disabled` attribute mutation.
166
290
  * @internal
167
291
  */
168
292
  private _handleSlotChange;
293
+ /**
294
+ * Per-child `disabled` attribute observer. Mirrors the slotchange
295
+ * reconcile pipeline so an in-place `radio.disabled = true` collapses the
296
+ * group's `value`/form participation/validity. Round-7 finding #6.
297
+ *
298
+ * One observer is shared across all currently-slotted radios; it is
299
+ * disconnected and re-attached on every slotchange so children that have
300
+ * left the group stop firing reconcile passes.
301
+ * @internal
302
+ */
303
+ private _childDisabledObserver;
304
+ /**
305
+ * Re-runs the slotchange reconcile pass without touching the disabled
306
+ * observer wiring. Called from the slotchange handler and from the
307
+ * per-child disabled observer; factored out so both entry points share
308
+ * the same value/formValue/validity reconciliation path. Round-7 #6.
309
+ * @internal
310
+ */
311
+ private _reconcileChildren;
312
+ /**
313
+ * Installs (or re-installs) a single MutationObserver across the current
314
+ * set of slotted `<hx-radio>` children, listening for `disabled` attribute
315
+ * mutations. Round-7 finding #6: in-place `disabled = true` never reaches
316
+ * the slotchange-driven reconciler otherwise.
317
+ * @internal
318
+ */
319
+ private _installChildDisabledObservers;
169
320
  /**
170
321
  * Updates the ElementInternals validity state based on the required constraint and current value.
171
322
  * @internal
@@ -1 +1 @@
1
- {"version":3,"file":"hx-radio-group.d.ts","sourceRoot":"","sources":["../../../src/components/hx-radio-group/hx-radio-group.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,KAAK,cAAc,EAAE,MAAM,KAAK,CAAC;AACzD,OAAO,4CAA4C,CAAC;AAIpD,OAAO,EAAE,YAAY,EAAmB,MAAM,qBAAqB,CAAC;AAQpE,mEAAmE;AACnE,MAAM,WAAW,wBAAwB;IACvC,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,OAAO,CAAC;CAClB;;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AACH,qBACa,eAAgB,SAAQ,oBAAuB;IAC1D,OAAgB,MAAM,4BAA8C;IAIpE;;;OAGG;IACH,OAAgB,cAAc,UAAQ;IAItC;;;OAGG;IAEH,KAAK,SAAM;IAEX;;;OAGG;IAEH,IAAI,SAAM;IAEV;;;OAGG;IAEH,KAAK,SAAM;IAEX;;;OAGG;IAEH,QAAQ,UAAS;IAEjB;;;OAGG;IAEH,QAAQ,UAAS;IAEjB;;;OAGG;IAEH,KAAK,SAAM;IAEX;;;OAGG;IAEH,QAAQ,SAAM;IAEd;;;OAGG;IAEH,WAAW,EAAE,UAAU,GAAG,YAAY,CAAc;IAEpD;;;OAGG;IACH,OAAO,KAAK,QAAQ,GAEnB;IAED;;;OAGG;IACM,OAAO,CAAC,aAAa,CAAS;IAIvC;;;OAGG;IACH,OAAO,CAAC,QAAQ,CAAuB;IACvC;;;OAGG;IACH,OAAO,CAAC,WAAW,CAA2B;IAC9C;;;OAGG;IACH,OAAO,CAAC,QAAQ,CAA4B;IAI5C;;;OAGG;IACH,OAAO,CAAC,sBAAsB;IAOrB,iBAAiB,IAAI,IAAI;IAMzB,oBAAoB,IAAI,IAAI;IAM5B,OAAO,CAAC,iBAAiB,EAAE,cAAc,CAAC,IAAI,CAAC,GAAG,IAAI;IAwBtD,YAAY,CAAC,iBAAiB,EAAE,cAAc,CAAC,IAAI,CAAC,GAAG,IAAI;IAgBpE;;;OAGG;IACH,OAAO,CAAC,aAAa,CAA6B;IAClD;;;OAGG;IACH,OAAO,CAAC,yBAAyB,CAAsC;IAEvE;;;OAGG;IACH,OAAO,CAAC,UAAU;IAOlB;;;OAGG;IACH,OAAO,CAAC,iBAAiB;IAIzB;;;OAGG;IACH,OAAO,CAAC,WAAW;IA0CnB;;;OAGG;IACH,OAAO,CAAC,kBAAkB,CAwBxB;IAEF;;;OAGG;IACH,OAAO,CAAC,cAAc,CA+DpB;IAEF;;;OAGG;IACH,OAAO,CAAC,iBAAiB;IAOzB;;;OAGG;IACM,eAAe,IAAI,IAAI;IAYhC,gBAAgB;cACG,YAAY,IAAI,IAAI;IAOvC,gBAAgB;cACG,mBAAmB,CACpC,KAAK,EAAE,IAAI,GAAG,MAAM,GAAG,QAAQ,GAAG,IAAI,EACtC,KAAK,EAAE,SAAS,GAAG,cAAc,GAChC,IAAI;IAMP,gBAAgB;cACG,eAAe,CAAC,QAAQ,EAAE,OAAO,GAAG,IAAI;IAMlD,MAAM;CAmEhB;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,gBAAgB,EAAE,eAAe,CAAC;KACnC;CACF;AAED,6DAA6D;AAC7D,MAAM,MAAM,YAAY,GAAG,eAAe,CAAC"}
1
+ {"version":3,"file":"hx-radio-group.d.ts","sourceRoot":"","sources":["../../../src/components/hx-radio-group/hx-radio-group.ts"],"names":[],"mappings":"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"}
@@ -42,6 +42,20 @@ export declare class HelixRadio extends HelixElement {
42
42
  * @attr checked
43
43
  */
44
44
  checked: boolean;
45
+ /**
46
+ * Set by `hx-radio-group` to mark this child as group-managed. `hx-radio` is
47
+ * not form-associated (the group is the sole form participant), so this
48
+ * flag is currently inert on this element. It exists for symmetry with
49
+ * `hx-checkbox._groupedSuppress` so the group/child contract is identical
50
+ * across both selection-control families and any future form-association
51
+ * change on `hx-radio` is automatically suppressed inside a group. Codex
52
+ * round-3 finding #1 (defense-in-depth).
53
+ * @internal
54
+ */
55
+ set _groupedSuppress(value: boolean);
56
+ get _groupedSuppress(): boolean;
57
+ /** @internal */
58
+ private __groupedSuppress;
45
59
  connectedCallback(): void;
46
60
  updated(changedProperties: PropertyValues<this>): void;
47
61
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"hx-radio.d.ts","sourceRoot":"","sources":["../../../src/components/hx-radio-group/hx-radio.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,KAAK,cAAc,EAAE,MAAM,KAAK,CAAC;AAChD,OAAO,4CAA4C,CAAC;AAGpD,OAAO,EAAE,YAAY,EAAmB,MAAM,qBAAqB,CAAC;AAMpE;;;;;;;;;;;;;;;;;;;GAmBG;AACH,qBACa,UAAW,SAAQ,YAAY;IAC1C,OAAgB,MAAM,4BAAyC;IAI/D;;;OAGG;IAEH,KAAK,SAAM;IAEX;;;OAGG;IAEH,KAAK,SAAM;IAEX;;;OAGG;IAEH,QAAQ,UAAS;IAEjB;;;OAGG;IAEH,OAAO,UAAS;IAIP,iBAAiB,IAAI,IAAI;IAWzB,OAAO,CAAC,iBAAiB,EAAE,cAAc,CAAC,IAAI,CAAC,GAAG,IAAI;IAW/D;;;;;;;;;;;;;;OAcG;IACH,OAAO,CAAC,cAAc;IAQtB,gBAAgB;IAChB,OAAO,CAAC,QAAQ,CAAkB;IAIlC,gBAAgB;IAChB,OAAO,CAAC,YAAY;IAqBX,MAAM;CA2BhB;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,UAAU,EAAE,UAAU,CAAC;KACxB;CACF;AAED,uDAAuD;AACvD,MAAM,MAAM,OAAO,GAAG,UAAU,CAAC"}
1
+ {"version":3,"file":"hx-radio.d.ts","sourceRoot":"","sources":["../../../src/components/hx-radio-group/hx-radio.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,KAAK,cAAc,EAAE,MAAM,KAAK,CAAC;AAChD,OAAO,4CAA4C,CAAC;AAGpD,OAAO,EAAE,YAAY,EAAmB,MAAM,qBAAqB,CAAC;AAMpE;;;;;;;;;;;;;;;;;;;GAmBG;AACH,qBACa,UAAW,SAAQ,YAAY;IAC1C,OAAgB,MAAM,4BAAyC;IAI/D;;;OAGG;IAEH,KAAK,SAAM;IAEX;;;OAGG;IAEH,KAAK,SAAM;IAEX;;;OAGG;IAEH,QAAQ,UAAS;IAEjB;;;OAGG;IAEH,OAAO,UAAS;IAEhB;;;;;;;;;OASG;IACH,IAAI,gBAAgB,CAAC,KAAK,EAAE,OAAO,EAElC;IACD,IAAI,gBAAgB,IAAI,OAAO,CAE9B;IACD,gBAAgB;IAChB,OAAO,CAAC,iBAAiB,CAAS;IAIzB,iBAAiB,IAAI,IAAI;IAWzB,OAAO,CAAC,iBAAiB,EAAE,cAAc,CAAC,IAAI,CAAC,GAAG,IAAI;IAW/D;;;;;;;;;;;;;;OAcG;IACH,OAAO,CAAC,cAAc;IAQtB,gBAAgB;IAChB,OAAO,CAAC,QAAQ,CAAkB;IAIlC,gBAAgB;IAChB,OAAO,CAAC,YAAY;IAqBX,MAAM;CA2BhB;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,UAAU,EAAE,UAAU,CAAC;KACxB;CACF;AAED,uDAAuD;AACvD,MAAM,MAAM,OAAO,GAAG,UAAU,CAAC"}
@@ -1,4 +1,4 @@
1
- import { H as i, a as e } from "../../shared/hx-radio-CJvNU2yP.js";
1
+ import { H as i, a as e } from "../../shared/hx-radio-Z1lV1zTO.js";
2
2
  export {
3
3
  i as HelixRadio,
4
4
  e as HelixRadioGroup
@@ -32,6 +32,7 @@ declare const HelixSelect_base: typeof HelixElement & (new (...args: any[]) => i
32
32
  * @slot help-text - Custom help text content (overrides the helpText property).
33
33
  *
34
34
  * @fires {CustomEvent<{value: string}>} hx-change - Dispatched when the selected option changes.
35
+ * @fires {Event} invalid - Platform constraint-validation event fired when checkValidity() / reportValidity() determine the value is invalid (form-associated component contract via ElementInternals.setValidity).
35
36
  *
36
37
  * @csspart field - The outer field container.
37
38
  * @csspart label - The label element.
@@ -102,9 +103,22 @@ declare const HelixSelect_base: typeof HelixElement & (new (...args: any[]) => i
102
103
  * @cssprop [--hx-font-size-xs] - Font size.
103
104
  */
104
105
  export declare class HelixSelect extends HelixSelect_base {
105
- static styles: import('lit').CSSResult[];
106
+ static styles: import('lit').CSSResult;
106
107
  /** Marks this element as form-associated for ElementInternals support. @internal */
107
108
  static formAssociated: boolean;
109
+ /**
110
+ * Test seam (round-3 finding 4): when set to `true` or `false`, overrides
111
+ * the platform `supportsIdrefElementReferences` probe before
112
+ * `connectedCallback` seeds `_supportsIdrefRefs`. Mid-life flag flips on a
113
+ * connected instance allowed stale modern internals (set during connect)
114
+ * to leak into the fallback branch — tests must select the path BEFORE
115
+ * the host connects so the synthetic environment matches a legacy engine.
116
+ *
117
+ * Production code MUST NOT touch this field. It is a `static` so the test
118
+ * stub cleanup is global and obvious.
119
+ * @internal
120
+ */
121
+ static __testSupportsIdrefRefsOverride: boolean | null;
108
122
  /** @internal */
109
123
  private _selectId;
110
124
  /** @internal */
@@ -192,16 +206,258 @@ export declare class HelixSelect extends HelixSelect_base {
192
206
  private _options;
193
207
  /** Whether the named error slot contains projected content. @internal */
194
208
  private _hasErrorSlot;
209
+ /**
210
+ * Whether the named label slot contributes a useful name. Round-3 finding 3:
211
+ * the previous boolean tracked `assignedNodes().length > 0`, which is `true`
212
+ * for whitespace-only slot content. That suppressed the unlabeled devWarn
213
+ * even when the slot only carried a stray newline. This flag now requires
214
+ * either a labellable element OR non-empty trimmed text content.
215
+ * @internal
216
+ */
217
+ private _hasLabelSlot;
218
+ /**
219
+ * Source of the accessible name. Round-3 finding 8 replaces the magic
220
+ * sentinel `'*slotted*'` with a discriminated union so a future caller
221
+ * setting `label="*slotted*"` literally cannot be confused with a slotted
222
+ * label.
223
+ * @internal
224
+ */
225
+ private _labelSource;
226
+ /**
227
+ * Flattened, trimmed text content of any text nodes in the label slot —
228
+ * used to drive `internals.ariaLabel` when the consumer projects only a
229
+ * text node (no element to add to `labelEls`). Round-3 finding 3.
230
+ * @internal
231
+ */
232
+ private _labelSlotText;
233
+ /** Whether the help-text slot contains projected content. @internal */
234
+ private _hasHelpSlot;
235
+ /**
236
+ * Direct reference to the first labellable element projected into the
237
+ * `<slot name="label">`. Round-3 finding 5 replaces the previous round-trip
238
+ * through `document.getElementById(this._slottedLabelId)` so we no longer
239
+ * mutate consumer light-DOM (assigning ids) and the lookup is robust under
240
+ * nested shadow roots (round-3 finding 6).
241
+ * @internal
242
+ */
243
+ private _slottedLabelEl;
195
244
  /** Zero-based index of the keyboard-focused option in the listbox; -1 means none. @internal */
196
245
  private _focusedOptionIndex;
246
+ /**
247
+ * Whether the platform supports IDL element references on `ElementInternals`.
248
+ * Drives the cross-shadow naming strategy: modern path uses
249
+ * `internals.ariaLabelledByElements` / `internals.ariaDescribedByElements`
250
+ * to bridge consumer light-DOM IDREFs into the host accessible node;
251
+ * fallback path mirrors the consumer's `aria-labelledby` / `aria-describedby`
252
+ * tokens onto host attributes and text-mirrors shadow help/error wrappers
253
+ * via `internals.ariaDescription`.
254
+ *
255
+ * ARCHITECTURE — Round-3 host-canonical (overturns scope doc Path A).
256
+ * Codex round-2 finding 1 demonstrated that the dual-channel approach
257
+ * (host roleless on modern, host-announced on fallback) creates a "named
258
+ * surface ≠ focused surface" gap on legacy engines. Round-3 commits to a
259
+ * single canonical surface — the HOST — on BOTH paths:
260
+ *
261
+ * - `internals.role = 'combobox'` on both paths (and `role="combobox"`
262
+ * attribute mirror so CSS / `getAttribute` / AT inspecting the DOM see it).
263
+ * - `tabindex="0"` on the host (so it is the focusable surface).
264
+ * - Click + keydown listeners on the host (so user input lands on the
265
+ * announced surface).
266
+ * - `focus()` routes to the host (so programmatic focus matches AT focus).
267
+ * - `setValidity()` anchor = host (so UA validation UI routes to the
268
+ * focusable announced surface).
269
+ * - Inner trigger drops `role`, `tabindex`, and the combobox ARIA mirror
270
+ * on both paths so AT does not see a doubled accessible.
271
+ *
272
+ * This matches Group 2's host-canonical pattern (PR #1625, validated for
273
+ * `hx-radio-group` and `hx-checkbox-group`). The scope doc's APG concern
274
+ * about doubled comboboxes is moot once the inner role is dropped.
275
+ * @internal
276
+ */
277
+ private _supportsIdrefRefs;
278
+ /**
279
+ * Deferred copy of `error` driven through reactive state so the persistent
280
+ * live region can re-announce on transitions without direct DOM mutation.
281
+ * Aligned with Group 2 round-1 finding #10.
282
+ * @internal
283
+ */
284
+ private _announcedError;
285
+ /**
286
+ * Cached invalidity flag derived from `internals.validity.valid` after the
287
+ * latest `setValidity()` call. Both the modern (`internals.ariaInvalid`)
288
+ * and fallback (host attribute) writes read from the same source so they
289
+ * cannot disagree. Round-2 finding 2.
290
+ * @internal
291
+ */
292
+ private _invalid;
197
293
  /** Reference to the hidden native select element used for form participation. @internal */
198
294
  private _select;
199
295
  /** Reference to the visible combobox trigger element that receives keyboard focus. @internal */
200
296
  private _trigger;
201
297
  /** @internal */
202
298
  private get _displayValue();
299
+ /**
300
+ * Handle for the shared IDREF observer. See `installAriaIdrefMirror()`.
301
+ * @internal
302
+ */
303
+ private _ariaMirror;
304
+ /**
305
+ * Watches assigned `<slot name="help-text">` nodes for in-place text
306
+ * mutations so the no-IDL-ref fallback `internals.ariaDescription` stays in
307
+ * sync. Aligned with Group 2 round-23 P2 (Finding C).
308
+ * @internal
309
+ */
310
+ private _helpSlotTextObserver;
311
+ /**
312
+ * Watches assigned `<slot name="error">` nodes for in-place text mutations.
313
+ * Aligned with Group 2 round-23 P2 (Finding C).
314
+ * @internal
315
+ */
316
+ private _errorSlotTextObserver;
317
+ /**
318
+ * Round-10 finding 1 (supersedes round-8 counter): dedicated host observer
319
+ * scoped to `aria-describedby` with `attributeOldValue: true`. The fallback
320
+ * path strips the host `aria-describedby` attribute on every sync (per
321
+ * round-6 single-channel design). Once stripped, a subsequent consumer
322
+ * `removeAttribute('aria-describedby')` causes NO DOM mutation (the
323
+ * attribute is already absent), so the post-sync `getAttribute()` baseline
324
+ * diff at the top of `_syncHostAriaSemantics` cannot detect the retraction
325
+ * — `_consumerDescribedBy` would remain pinned to the originally-cached
326
+ * string forever and the consumer's external help text would keep
327
+ * concatenating into `internals.ariaDescription` indefinitely.
328
+ *
329
+ * Round-10 architectural lockdown (`.reports/aria-group-3-architecture-
330
+ * decision-r10.md` section 7.1): the observer is governed by the
331
+ * **disconnect-during-strip** discipline. Before the fallback strip
332
+ * `removeAttribute('aria-describedby')` runs, this observer is
333
+ * `disconnect()`ed; immediately after the strip, it is re-`observe()`d.
334
+ * Self-mutations are therefore never delivered to the callback, so the
335
+ * observer only sees consumer-driven mutations. This eliminates the
336
+ * round-8 pending-strip counter / discriminator entirely and the lockstep
337
+ * invariant it depended on.
338
+ *
339
+ * The observer detects `oldValue !== null && newValue === null`
340
+ * (consumer authentically retracted the attribute) and clears
341
+ * `_consumerDescribedBy`. Framework-batched attach-then-detach (Vue /
342
+ * React / Lit reconciliation flipping `aria-describedby` from a string to
343
+ * null in one render commit) produces two records in the same callback
344
+ * batch — the second record's `oldValue` is observable. The bare
345
+ * `removeAttribute` no-op on an already-absent attribute is unobservable
346
+ * by design (a null → null DOM operation is not a mutation); see
347
+ * `hx-select.test.ts` round-10 contract block for the three documented
348
+ * retraction sequences.
349
+ *
350
+ * @internal
351
+ */
352
+ private _hostDescribedByObserver;
353
+ /**
354
+ * Last value of `aria-labelledby` we wrote to the host. Used to distinguish
355
+ * external (consumer) attribute mutations from our own internal augmentation
356
+ * writes. Aligned with Group 2 round-10 P2.
357
+ * @internal
358
+ */
359
+ private _lastWrittenLabelledBy;
360
+ /** @internal — see `_lastWrittenLabelledBy`. */
361
+ private _lastWrittenDescribedBy;
362
+ /**
363
+ * Last value of `aria-label` we wrote to the host. Used to distinguish
364
+ * external (consumer) attribute mutations from our own internal mirror
365
+ * writes on the fallback path. Round-5 finding 1: without this snapshot
366
+ * the round-3 fallback `aria-label` mirror was self-sealing — sync N
367
+ * wrote `aria-label="Country"`, sync N+1 read that same string back via
368
+ * `getAttribute('aria-label')` and treated it as a consumer override,
369
+ * caching it into `internals.ariaLabel` and short-circuiting
370
+ * `_writeHostAttributeMirror`. Subsequent label/accessibleLabel/slot
371
+ * mutations never propagated.
372
+ * @internal
373
+ */
374
+ private _lastWrittenAriaLabel;
375
+ /**
376
+ * Most recently observed *consumer-supplied* `aria-labelledby` baseline.
377
+ * Refreshed only when the host attribute changes via an external write —
378
+ * internal writes leave the baseline untouched. Cached so consumer tokens
379
+ * can replay if their target element later attaches to the DOM.
380
+ * @internal
381
+ */
382
+ private _consumerLabelledBy;
383
+ /** @internal — see `_consumerLabelledBy`. */
384
+ private _consumerDescribedBy;
385
+ connectedCallback(): void;
203
386
  disconnectedCallback(): void;
204
387
  updated(changedProperties: PropertyValues<this>): void;
388
+ firstUpdated(changedProperties: PropertyValues<this>): void;
389
+ /**
390
+ * Reads the label slot's assigned nodes and computes the discriminated
391
+ * naming state. Round-3 finding 3 + 5 + 8: an empty whitespace-only slot
392
+ * does NOT count as a useful name; the first labellable element is
393
+ * captured by reference (no consumer-DOM mutation); the result drives a
394
+ * discriminated `_labelSource` rather than a magic `'*slotted*'` string.
395
+ * @internal
396
+ */
397
+ private _readLabelSlotState;
398
+ /**
399
+ * Mirrors combobox semantics onto the host via ElementInternals so that the
400
+ * host IS the canonical announced surface on BOTH the modern (IDL element
401
+ * references) and fallback paths. Round-3 finding 1: codex round-2
402
+ * demonstrated that putting `role="combobox"` on the host on fallback while
403
+ * leaving focus/click/keyboard/validity anchored to the inner trigger
404
+ * created a "named surface ≠ focused surface" gap. Round-3 collapses both
405
+ * paths to the host-canonical model used by Group 2's `hx-radio-group` /
406
+ * `hx-checkbox-group` (PR #1625):
407
+ *
408
+ * - `internals.role = 'combobox'` so AT advertises the combobox role.
409
+ * - Host attribute `role="combobox"` mirror so legacy engines, axe-core,
410
+ * and `getAttribute('role')` agree with the internals default.
411
+ * - Host attribute `tabindex="0"` so the host is the focusable surface.
412
+ * - Host attributes `aria-expanded`, `aria-haspopup`, `aria-controls`,
413
+ * `aria-activedescendant`, `aria-required`, `aria-invalid`,
414
+ * `aria-disabled` so AT walking the host's attribute graph sees the
415
+ * combobox state without depending on internals defaults.
416
+ * - Modern path additionally sets `internals.ariaLabelledByElements` /
417
+ * `internals.ariaDescribedByElements` so consumer light-DOM IDREFs cross
418
+ * the shadow boundary into the host's accessible node.
419
+ * - Fallback path mirrors consumer label/desc tokens onto the host
420
+ * attribute and text-mirrors shadow help/error wrappers via
421
+ * `internals.ariaDescription`.
422
+ * @internal
423
+ */
424
+ private _syncHostAriaSemantics;
425
+ /**
426
+ * Writes host `role="combobox"` and `tabindex` so the host is the
427
+ * focusable, AT-visible canonical surface. Round-3 finding 1.
428
+ * @internal
429
+ */
430
+ private _writeHostRoleAndTabindex;
431
+ /**
432
+ * Writes the host's combobox state attributes (`aria-expanded`,
433
+ * `aria-haspopup`, `aria-controls`, `aria-activedescendant`,
434
+ * `aria-required`, `aria-invalid`, `aria-disabled`) on every sync. CSS
435
+ * selectors and AT inspecting the live attribute graph read these — the
436
+ * `internals.aria*` defaults are invisible. Round-3 finding 1.
437
+ * @internal
438
+ */
439
+ private _writeHostComboboxStateAttributes;
440
+ /**
441
+ * Writes a host `aria-label` attribute mirror on the fallback path so AT
442
+ * inspecting the live attribute graph sees the resolved name even when
443
+ * the platform lacks IDL element references. Skip when an effective
444
+ * `aria-labelledby` is already set on the host (labelledby > label by
445
+ * ARIA priority). Round-3 finding 1 + round-2 finding 5.
446
+ * @internal
447
+ */
448
+ private _writeHostAttributeMirror;
449
+ /**
450
+ * (Re-)installs the mutation observer over the current set of assigned
451
+ * help-text-slot nodes. Aligned with Group 2 round-23 P2 (Finding C).
452
+ * @internal
453
+ */
454
+ private _installHelpSlotTextObserver;
455
+ /**
456
+ * (Re-)installs the mutation observer over the current set of assigned
457
+ * error-slot nodes. Aligned with Group 2 round-23 P2 (Finding C).
458
+ * @internal
459
+ */
460
+ private _installErrorSlotTextObserver;
205
461
  /** @internal */
206
462
  private _updateFormValue;
207
463
  /** @internal */
@@ -220,10 +476,51 @@ export declare class HelixSelect extends HelixSelect_base {
220
476
  */
221
477
  /** @internal */
222
478
  private _handleSlotChange;
479
+ /**
480
+ * Tracks the slotted label so projected `<span slot="label">` content joins
481
+ * the accessible-name chain without forcing the consumer to also pass the
482
+ * `label` property.
483
+ *
484
+ * Round-3 findings 3, 5, 6, 8:
485
+ * - 3: count whitespace-only text as "no useful name" (devWarn must fire).
486
+ * - 5: hold the slotted element by direct reference instead of mutating
487
+ * consumer light DOM with a tracked id.
488
+ * - 6: lookup is by reference, so it survives nested shadow roots without
489
+ * the fragile `getElementById` chain.
490
+ * - 8: discriminated `_labelSource` replaces the magic `'*slotted*'`
491
+ * sentinel string.
492
+ * @internal
493
+ */
494
+ private _handleLabelSlotChange;
495
+ /**
496
+ * Recomputes the discriminated label source. Round-3 finding 8.
497
+ *
498
+ * CodeRabbit F2: slotted label wins over the `label` prop. When a
499
+ * consumer provides BOTH a `<span slot="label">` AND a `label="..."`
500
+ * attribute the visible label is the slotted node (rendered by the
501
+ * named slot's default content branch never firing). Preferring the
502
+ * string form here would route the accessible name through the prop
503
+ * and diverge from the rendered text. The slot is the canonical
504
+ * source whenever it has useful content.
505
+ * @internal
506
+ */
507
+ private _refreshLabelSource;
223
508
  /** @internal */
224
509
  private _handleErrorSlotChange;
225
510
  /** @internal */
511
+ private _handleHelpSlotChange;
512
+ /** @internal */
226
513
  private _toggleDropdown;
514
+ /**
515
+ * Click handler attached to the host. Round-3 finding 1: the host is the
516
+ * canonical combobox surface, so user input listeners live here. Clicks
517
+ * inside the open listbox are handled by the per-option `@click` binding
518
+ * in `_renderOptions()` and stop here only if `composedPath` indicates
519
+ * the original click target was the open listbox panel (so option clicks
520
+ * don't double-toggle the dropdown).
521
+ * @internal
522
+ */
523
+ private _handleHostClick;
227
524
  /** @internal */
228
525
  private _handleKeydown;
229
526
  /** @internal */
@@ -234,7 +531,12 @@ export declare class HelixSelect extends HelixSelect_base {
234
531
  private _handleNativeChange;
235
532
  /** @internal */
236
533
  private _handleOutsideClick;
237
- /** Moves focus to the visible trigger button. */
534
+ /**
535
+ * Moves focus to the host. Round-3 finding 1: the host is the canonical
536
+ * combobox surface (`role="combobox"`, `tabindex="0"`), so programmatic
537
+ * focus must land there to match where AT routes focus and where
538
+ * `setValidity()` anchors recovery.
539
+ */
238
540
  focus(options?: FocusOptions): void;
239
541
  /** @internal */
240
542
  private _optionId;
@@ -1 +1 @@
1
- {"version":3,"file":"hx-select.d.ts","sourceRoot":"","sources":["../../../src/components/hx-select/hx-select.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"hx-select.d.ts","sourceRoot":"","sources":["../../../src/components/hx-select/hx-select.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"hx-select.styles.d.ts","sourceRoot":"","sources":["../../../src/components/hx-select/hx-select.styles.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,iBAAiB,yBAsX7B,CAAC"}
1
+ {"version":3,"file":"hx-select.styles.d.ts","sourceRoot":"","sources":["../../../src/components/hx-select/hx-select.styles.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,iBAAiB,yBAyY7B,CAAC"}
@@ -1,4 +1,4 @@
1
- import { H as o } from "../../shared/hx-select-C8fEHQhC.js";
1
+ import { H as o } from "../../shared/hx-select-D18CnJ0e.js";
2
2
  export {
3
3
  o as HelixSelect
4
4
  };
@@ -1 +1 @@
1
- {"version":3,"file":"hx-nav-item.styles.d.ts","sourceRoot":"","sources":["../../../src/components/hx-side-nav/hx-nav-item.styles.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,kBAAkB,yBA6S9B,CAAC"}
1
+ {"version":3,"file":"hx-nav-item.styles.d.ts","sourceRoot":"","sources":["../../../src/components/hx-side-nav/hx-nav-item.styles.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,kBAAkB,yBAiT9B,CAAC"}
@@ -1,4 +1,4 @@
1
- import { H as i, a as x } from "../../shared/hx-nav-item-xqRPOCWX.js";
1
+ import { H as i, a as x } from "../../shared/hx-nav-item-CODtUlew.js";
2
2
  export {
3
3
  i as HelixNavItem,
4
4
  x as HelixSideNav
@@ -1,3 +1,4 @@
1
+ import { PropertyValues } from 'lit';
1
2
  import { HelixElement } from '../../base/index.js';
2
3
  /**
3
4
  * Token size values for the spinner. Use these for standard sizing.
@@ -77,6 +78,19 @@ export declare class HelixSpinner extends HelixElement {
77
78
  */
78
79
  decorative: boolean;
79
80
  connectedCallback(): void;
81
+ updated(changedProperties: PropertyValues<this>): void;
82
+ /**
83
+ * Group 9 host-canonical migration: mirror `role="status"` / `"presentation"`
84
+ * and `aria-label` onto the host via `ElementInternals` so AT walks the host
85
+ * surface as the canonical loading indicator. The inner `<div>` keeps the
86
+ * legacy role + aria-label so consumer queries and pre-host-canonical AT
87
+ * still resolve. Modern path: host is canonical; legacy path: dual-surface.
88
+ *
89
+ * Also fires a devWarn when the spinner is non-decorative AND the label is
90
+ * empty (silent unnamed `role="status"` is a WCAG 4.1.2 failure).
91
+ * @internal
92
+ */
93
+ private _syncHostAriaSemantics;
80
94
  /** @internal */
81
95
  private _isTokenSize;
82
96
  render(): import('lit').TemplateResult<1>;
@@ -1 +1 @@
1
- {"version":3,"file":"hx-spinner.d.ts","sourceRoot":"","sources":["../../../src/components/hx-spinner/hx-spinner.ts"],"names":[],"mappings":"AACA,OAAO,4CAA4C,CAAC;AAKpD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAInD;;;;GAIG;AACH,MAAM,MAAM,WAAW,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AAE7C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;AACH,qBACa,YAAa,SAAQ,YAAY;IAC5C,OAAgB,MAAM,4BAA6C;IAEnE;;;;;;;;OAQG;IAEH,IAAI,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,CAAC,MAAM,GAAG,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAQ;IAElE;;;OAGG;IAEH,OAAO,EAAE,SAAS,GAAG,SAAS,GAAG,UAAU,CAAa;IAExD;;;;OAIG;IAEH,KAAK,SAAa;IAElB;;;;;OAKG;IAEH,UAAU,UAAS;IAIV,iBAAiB,IAAI,IAAI;IAWlC,gBAAgB;IAChB,OAAO,CAAC,YAAY;IAIX,MAAM;CAqChB;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,YAAY,EAAE,YAAY,CAAC;KAC5B;CACF"}
1
+ {"version":3,"file":"hx-spinner.d.ts","sourceRoot":"","sources":["../../../src/components/hx-spinner/hx-spinner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,KAAK,cAAc,EAAE,MAAM,KAAK,CAAC;AAChD,OAAO,4CAA4C,CAAC;AAKpD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAInD;;;;GAIG;AACH,MAAM,MAAM,WAAW,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AAE7C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;AACH,qBACa,YAAa,SAAQ,YAAY;IAC5C,OAAgB,MAAM,4BAA6C;IAEnE;;;;;;;;OAQG;IAEH,IAAI,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,CAAC,MAAM,GAAG,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAQ;IAElE;;;OAGG;IAEH,OAAO,EAAE,SAAS,GAAG,SAAS,GAAG,UAAU,CAAa;IAExD;;;;OAIG;IAEH,KAAK,SAAa;IAElB;;;;;OAKG;IAEH,UAAU,UAAS;IAIV,iBAAiB,IAAI,IAAI;IAYzB,OAAO,CAAC,iBAAiB,EAAE,cAAc,CAAC,IAAI,CAAC,GAAG,IAAI;IAO/D;;;;;;;;;;OAUG;IACH,OAAO,CAAC,sBAAsB;IAoB9B,gBAAgB;IAChB,OAAO,CAAC,YAAY;IAIX,MAAM;CAqChB;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,YAAY,EAAE,YAAY,CAAC;KAC5B;CACF"}