@helixui/library 3.3.1 → 3.4.0-next.121

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (321) hide show
  1. package/custom-elements.json +340 -71
  2. package/dist/components/hx-accordion/hx-accordion-item.d.ts +35 -0
  3. package/dist/components/hx-accordion/hx-accordion-item.d.ts.map +1 -1
  4. package/dist/components/hx-alert/hx-alert.d.ts +11 -0
  5. package/dist/components/hx-alert/hx-alert.d.ts.map +1 -1
  6. package/dist/components/hx-alert/hx-alert.styles.d.ts.map +1 -1
  7. package/dist/components/hx-alert/index.js +1 -1
  8. package/dist/components/hx-badge/hx-badge.styles.d.ts.map +1 -1
  9. package/dist/components/hx-badge/index.js +1 -1
  10. package/dist/components/hx-banner/hx-banner.d.ts +9 -1
  11. package/dist/components/hx-banner/hx-banner.d.ts.map +1 -1
  12. package/dist/components/hx-banner/index.js +1 -1
  13. package/dist/components/hx-button/hx-button.d.ts +11 -1
  14. package/dist/components/hx-button/hx-button.d.ts.map +1 -1
  15. package/dist/components/hx-button/index.js +1 -1
  16. package/dist/components/hx-button-group/hx-button-group.d.ts +13 -0
  17. package/dist/components/hx-button-group/hx-button-group.d.ts.map +1 -1
  18. package/dist/components/hx-button-group/index.js +1 -1
  19. package/dist/components/hx-checkbox/hx-checkbox.d.ts +153 -1
  20. package/dist/components/hx-checkbox/hx-checkbox.d.ts.map +1 -1
  21. package/dist/components/hx-checkbox/hx-checkbox.styles.d.ts.map +1 -1
  22. package/dist/components/hx-checkbox/index.js +1 -1
  23. package/dist/components/hx-checkbox-group/hx-checkbox-group.d.ts +151 -2
  24. package/dist/components/hx-checkbox-group/hx-checkbox-group.d.ts.map +1 -1
  25. package/dist/components/hx-checkbox-group/index.js +1 -1
  26. package/dist/components/hx-color-picker/hx-color-picker.d.ts +163 -1
  27. package/dist/components/hx-color-picker/hx-color-picker.d.ts.map +1 -1
  28. package/dist/components/hx-color-picker/hx-color-picker.styles.d.ts.map +1 -1
  29. package/dist/components/hx-color-picker/index.js +1 -1
  30. package/dist/components/hx-combobox/hx-combobox.d.ts +311 -2
  31. package/dist/components/hx-combobox/hx-combobox.d.ts.map +1 -1
  32. package/dist/components/hx-combobox/index.js +1 -1
  33. package/dist/components/hx-data-table/hx-data-table.d.ts.map +1 -1
  34. package/dist/components/hx-data-table/index.js +1 -1
  35. package/dist/components/hx-date-picker/hx-date-picker.d.ts +182 -56
  36. package/dist/components/hx-date-picker/hx-date-picker.d.ts.map +1 -1
  37. package/dist/components/hx-date-picker/hx-date-picker.styles.d.ts.map +1 -1
  38. package/dist/components/hx-date-picker/index.js +1 -1
  39. package/dist/components/hx-dialog/hx-dialog.d.ts +240 -0
  40. package/dist/components/hx-dialog/hx-dialog.d.ts.map +1 -1
  41. package/dist/components/hx-dialog/index.js +1 -1
  42. package/dist/components/hx-drawer/hx-drawer.d.ts +201 -0
  43. package/dist/components/hx-drawer/hx-drawer.d.ts.map +1 -1
  44. package/dist/components/hx-drawer/hx-drawer.styles.d.ts.map +1 -1
  45. package/dist/components/hx-drawer/index.js +1 -1
  46. package/dist/components/hx-dropdown/hx-dropdown.d.ts +168 -0
  47. package/dist/components/hx-dropdown/hx-dropdown.d.ts.map +1 -1
  48. package/dist/components/hx-dropdown/index.js +1 -1
  49. package/dist/components/hx-field/hx-field.d.ts +109 -0
  50. package/dist/components/hx-field/hx-field.d.ts.map +1 -1
  51. package/dist/components/hx-field/index.js +1 -1
  52. package/dist/components/hx-icon-button/hx-icon-button.d.ts +16 -3
  53. package/dist/components/hx-icon-button/hx-icon-button.d.ts.map +1 -1
  54. package/dist/components/hx-icon-button/hx-icon-button.styles.d.ts.map +1 -1
  55. package/dist/components/hx-icon-button/index.js +1 -1
  56. package/dist/components/hx-link/hx-link.d.ts +10 -1
  57. package/dist/components/hx-link/hx-link.d.ts.map +1 -1
  58. package/dist/components/hx-link/index.js +1 -1
  59. package/dist/components/hx-list/hx-list-item.d.ts +27 -1
  60. package/dist/components/hx-list/hx-list-item.d.ts.map +1 -1
  61. package/dist/components/hx-list/hx-list.d.ts +28 -0
  62. package/dist/components/hx-list/hx-list.d.ts.map +1 -1
  63. package/dist/components/hx-list/index.js +1 -1
  64. package/dist/components/hx-menu/hx-menu-divider.d.ts +10 -0
  65. package/dist/components/hx-menu/hx-menu-divider.d.ts.map +1 -1
  66. package/dist/components/hx-menu/hx-menu-item.d.ts +99 -2
  67. package/dist/components/hx-menu/hx-menu-item.d.ts.map +1 -1
  68. package/dist/components/hx-menu/hx-menu-item.styles.d.ts.map +1 -1
  69. package/dist/components/hx-menu/hx-menu.d.ts +117 -2
  70. package/dist/components/hx-menu/hx-menu.d.ts.map +1 -1
  71. package/dist/components/hx-menu/index.js +1 -1
  72. package/dist/components/hx-meter/hx-meter.d.ts +39 -0
  73. package/dist/components/hx-meter/hx-meter.d.ts.map +1 -1
  74. package/dist/components/hx-meter/hx-meter.styles.d.ts.map +1 -1
  75. package/dist/components/hx-meter/index.js +1 -1
  76. package/dist/components/hx-overflow-menu/hx-overflow-menu.d.ts +132 -1
  77. package/dist/components/hx-overflow-menu/hx-overflow-menu.d.ts.map +1 -1
  78. package/dist/components/hx-overflow-menu/index.js +1 -1
  79. package/dist/components/hx-phi-field/hx-phi-field.d.ts +0 -1
  80. package/dist/components/hx-phi-field/hx-phi-field.d.ts.map +1 -1
  81. package/dist/components/hx-popover/hx-popover.d.ts +91 -0
  82. package/dist/components/hx-popover/hx-popover.d.ts.map +1 -1
  83. package/dist/components/hx-popover/index.js +1 -1
  84. package/dist/components/hx-progress-bar/hx-progress-bar.d.ts +33 -0
  85. package/dist/components/hx-progress-bar/hx-progress-bar.d.ts.map +1 -1
  86. package/dist/components/hx-progress-bar/index.js +1 -1
  87. package/dist/components/hx-radio-group/hx-radio-group.d.ts +152 -1
  88. package/dist/components/hx-radio-group/hx-radio-group.d.ts.map +1 -1
  89. package/dist/components/hx-radio-group/hx-radio.d.ts +14 -0
  90. package/dist/components/hx-radio-group/hx-radio.d.ts.map +1 -1
  91. package/dist/components/hx-radio-group/index.js +1 -1
  92. package/dist/components/hx-select/hx-select.d.ts +304 -2
  93. package/dist/components/hx-select/hx-select.d.ts.map +1 -1
  94. package/dist/components/hx-select/hx-select.styles.d.ts.map +1 -1
  95. package/dist/components/hx-select/index.js +1 -1
  96. package/dist/components/hx-side-nav/hx-nav-item.styles.d.ts.map +1 -1
  97. package/dist/components/hx-side-nav/index.js +1 -1
  98. package/dist/components/hx-spinner/hx-spinner.d.ts +14 -0
  99. package/dist/components/hx-spinner/hx-spinner.d.ts.map +1 -1
  100. package/dist/components/hx-spinner/index.js +1 -1
  101. package/dist/components/hx-split-button/hx-split-button.d.ts +94 -7
  102. package/dist/components/hx-split-button/hx-split-button.d.ts.map +1 -1
  103. package/dist/components/hx-split-button/index.js +1 -1
  104. package/dist/components/hx-stat/hx-stat.d.ts +28 -0
  105. package/dist/components/hx-stat/hx-stat.d.ts.map +1 -1
  106. package/dist/components/hx-stat/index.js +1 -1
  107. package/dist/components/hx-switch/hx-switch.d.ts +78 -1
  108. package/dist/components/hx-switch/hx-switch.d.ts.map +1 -1
  109. package/dist/components/hx-switch/hx-switch.styles.d.ts.map +1 -1
  110. package/dist/components/hx-switch/index.js +1 -1
  111. package/dist/components/hx-table/hx-td.d.ts +30 -3
  112. package/dist/components/hx-table/hx-td.d.ts.map +1 -1
  113. package/dist/components/hx-table/hx-th.d.ts +39 -3
  114. package/dist/components/hx-table/hx-th.d.ts.map +1 -1
  115. package/dist/components/hx-table/hx-tr.d.ts +26 -0
  116. package/dist/components/hx-table/hx-tr.d.ts.map +1 -1
  117. package/dist/components/hx-table/index.js +1 -1
  118. package/dist/components/hx-tabs/hx-tab-panel.d.ts +34 -0
  119. package/dist/components/hx-tabs/hx-tab-panel.d.ts.map +1 -1
  120. package/dist/components/hx-tabs/hx-tab.d.ts +45 -2
  121. package/dist/components/hx-tabs/hx-tab.d.ts.map +1 -1
  122. package/dist/components/hx-tabs/hx-tab.styles.d.ts.map +1 -1
  123. package/dist/components/hx-tabs/hx-tabs.d.ts +32 -2
  124. package/dist/components/hx-tabs/hx-tabs.d.ts.map +1 -1
  125. package/dist/components/hx-tabs/index.js +1 -1
  126. package/dist/components/hx-tag/hx-tag.styles.d.ts.map +1 -1
  127. package/dist/components/hx-tag/index.js +1 -1
  128. package/dist/components/hx-theme/hx-theme.d.ts +10 -5
  129. package/dist/components/hx-theme/hx-theme.d.ts.map +1 -1
  130. package/dist/components/hx-time-picker/hx-time-picker.d.ts +210 -2
  131. package/dist/components/hx-time-picker/hx-time-picker.d.ts.map +1 -1
  132. package/dist/components/hx-time-picker/hx-time-picker.styles.d.ts.map +1 -1
  133. package/dist/components/hx-time-picker/index.js +1 -1
  134. package/dist/components/hx-toast/hx-toast-stack.d.ts +14 -0
  135. package/dist/components/hx-toast/hx-toast-stack.d.ts.map +1 -1
  136. package/dist/components/hx-toast/hx-toast.d.ts +22 -3
  137. package/dist/components/hx-toast/hx-toast.d.ts.map +1 -1
  138. package/dist/components/hx-toast/index.js +1 -1
  139. package/dist/components/hx-toast/toast-factory.d.ts.map +1 -1
  140. package/dist/components/hx-toggle-button/hx-toggle-button.d.ts +110 -0
  141. package/dist/components/hx-toggle-button/hx-toggle-button.d.ts.map +1 -1
  142. package/dist/components/hx-toggle-button/hx-toggle-button.styles.d.ts.map +1 -1
  143. package/dist/components/hx-toggle-button/index.js +1 -1
  144. package/dist/components/hx-tooltip/hx-tooltip.d.ts +52 -0
  145. package/dist/components/hx-tooltip/hx-tooltip.d.ts.map +1 -1
  146. package/dist/components/hx-tooltip/index.js +1 -1
  147. package/dist/components/hx-tree-view/hx-tree-item.d.ts +117 -12
  148. package/dist/components/hx-tree-view/hx-tree-item.d.ts.map +1 -1
  149. package/dist/components/hx-tree-view/hx-tree-view.d.ts +87 -7
  150. package/dist/components/hx-tree-view/hx-tree-view.d.ts.map +1 -1
  151. package/dist/components/hx-tree-view/index.js +1 -1
  152. package/dist/css/helix-all.css +221 -1
  153. package/dist/css/helix-core.css +81 -0
  154. package/dist/css/helix-feedback.css +14 -0
  155. package/dist/css/helix-forms.css +109 -1
  156. package/dist/css/helix-overlay.css +17 -0
  157. package/dist/css/hx-alert.css +9 -0
  158. package/dist/css/hx-badge.css +28 -0
  159. package/dist/css/hx-checkbox.css +18 -0
  160. package/dist/css/hx-color-picker.css +25 -0
  161. package/dist/css/hx-date-picker.css +2 -1
  162. package/dist/css/hx-drawer.css +17 -0
  163. package/dist/css/hx-icon-button.css +30 -0
  164. package/dist/css/hx-meter.css +5 -0
  165. package/dist/css/hx-select.css +19 -0
  166. package/dist/css/hx-switch.css +17 -0
  167. package/dist/css/hx-tag.css +23 -0
  168. package/dist/css/hx-time-picker.css +11 -0
  169. package/dist/css/hx-toggle-button.css +17 -0
  170. package/dist/css/index.css +1 -1
  171. package/dist/css/manifest.json +4 -1
  172. package/dist/index.js +38 -38
  173. package/dist/shared/aria-flatten-DY6v2vah.js +22 -0
  174. package/dist/shared/aria-flatten-DY6v2vah.js.map +1 -0
  175. package/dist/shared/aria-idref-CxvyzfQS.js +126 -0
  176. package/dist/shared/aria-idref-CxvyzfQS.js.map +1 -0
  177. package/dist/shared/hx-accordion-ZVzgDzTG.js.map +1 -1
  178. package/dist/shared/{hx-alert-CLn7CstP.js → hx-alert-Bto8-TIi.js} +55 -37
  179. package/dist/shared/hx-alert-Bto8-TIi.js.map +1 -0
  180. package/dist/shared/{hx-badge-CQXgOXJM.js → hx-badge-JlFtAdxS.js} +37 -9
  181. package/dist/shared/hx-badge-JlFtAdxS.js.map +1 -0
  182. package/dist/shared/{hx-banner-D3DzpfcP.js → hx-banner-fpRnciIO.js} +13 -5
  183. package/dist/shared/hx-banner-fpRnciIO.js.map +1 -0
  184. package/dist/shared/{hx-button-DPY6SPVT.js → hx-button-BOwAEcF1.js} +108 -85
  185. package/dist/shared/{hx-button-DPY6SPVT.js.map → hx-button-BOwAEcF1.js.map} +1 -1
  186. package/dist/shared/{hx-button-group-BI-QBqmO.js → hx-button-group-DcHP5MBv.js} +15 -16
  187. package/dist/shared/{hx-button-group-BI-QBqmO.js.map → hx-button-group-DcHP5MBv.js.map} +1 -1
  188. package/dist/shared/hx-checkbox-C48KYKFq.js +696 -0
  189. package/dist/shared/hx-checkbox-C48KYKFq.js.map +1 -0
  190. package/dist/shared/hx-checkbox-group-BJIAX3zU.js +496 -0
  191. package/dist/shared/hx-checkbox-group-BJIAX3zU.js.map +1 -0
  192. package/dist/shared/hx-color-picker-Dk4cBwYQ.js +1221 -0
  193. package/dist/shared/hx-color-picker-Dk4cBwYQ.js.map +1 -0
  194. package/dist/shared/hx-combobox-BTLO9qiK.js +1359 -0
  195. package/dist/shared/hx-combobox-BTLO9qiK.js.map +1 -0
  196. package/dist/shared/{hx-data-table-CLqVqdxr.js → hx-data-table-Ct3gQ6ya.js} +3 -2
  197. package/dist/shared/{hx-data-table-CLqVqdxr.js.map → hx-data-table-Ct3gQ6ya.js.map} +1 -1
  198. package/dist/shared/{hx-date-picker-2iRG1p74.js → hx-date-picker-CiR7FVnR.js} +542 -206
  199. package/dist/shared/hx-date-picker-CiR7FVnR.js.map +1 -0
  200. package/dist/shared/hx-dialog-AOZpHSuF.js +717 -0
  201. package/dist/shared/hx-dialog-AOZpHSuF.js.map +1 -0
  202. package/dist/shared/{hx-drawer-Y1Ui2IWJ.js → hx-drawer-DH6CdAN1.js} +300 -98
  203. package/dist/shared/hx-drawer-DH6CdAN1.js.map +1 -0
  204. package/dist/shared/hx-dropdown-DiLd40Lm.js +401 -0
  205. package/dist/shared/hx-dropdown-DiLd40Lm.js.map +1 -0
  206. package/dist/shared/{hx-field-B3Qo8OLS.js → hx-field-zw0U1KVi.js} +99 -38
  207. package/dist/shared/hx-field-zw0U1KVi.js.map +1 -0
  208. package/dist/shared/{hx-icon-button-CGNdQSFM.js → hx-icon-button-a6OpeQz5.js} +149 -68
  209. package/dist/shared/hx-icon-button-a6OpeQz5.js.map +1 -0
  210. package/dist/shared/{hx-link-C-O6vq0Q.js → hx-link-CMnZRUtQ.js} +55 -43
  211. package/dist/shared/hx-link-CMnZRUtQ.js.map +1 -0
  212. package/dist/shared/{hx-list-MyEhh8c7.js → hx-list-De66EtAP.js} +163 -107
  213. package/dist/shared/hx-list-De66EtAP.js.map +1 -0
  214. package/dist/shared/hx-menu-divider-BjiRIWKq.js +797 -0
  215. package/dist/shared/hx-menu-divider-BjiRIWKq.js.map +1 -0
  216. package/dist/shared/{hx-meter-BPscsw5t.js → hx-meter-BJdh6nrF.js} +105 -64
  217. package/dist/shared/hx-meter-BJdh6nrF.js.map +1 -0
  218. package/dist/shared/{hx-nav-item-xqRPOCWX.js → hx-nav-item-CODtUlew.js} +13 -9
  219. package/dist/shared/{hx-nav-item-xqRPOCWX.js.map → hx-nav-item-CODtUlew.js.map} +1 -1
  220. package/dist/shared/hx-overflow-menu-BQ4fiMYu.js +492 -0
  221. package/dist/shared/hx-overflow-menu-BQ4fiMYu.js.map +1 -0
  222. package/dist/shared/hx-phi-field-C19oxlrr.js.map +1 -1
  223. package/dist/shared/{hx-popover-B-FP3-wW.js → hx-popover-B9W8-tC0.js} +123 -66
  224. package/dist/shared/hx-popover-B9W8-tC0.js.map +1 -0
  225. package/dist/shared/hx-progress-bar-C8nDMdYa.js +290 -0
  226. package/dist/shared/hx-progress-bar-C8nDMdYa.js.map +1 -0
  227. package/dist/shared/hx-radio-Z1lV1zTO.js +822 -0
  228. package/dist/shared/hx-radio-Z1lV1zTO.js.map +1 -0
  229. package/dist/shared/hx-select-D18CnJ0e.js +1089 -0
  230. package/dist/shared/hx-select-D18CnJ0e.js.map +1 -0
  231. package/dist/shared/{hx-spinner-DL5AYr16.js → hx-spinner-BB0h2hKZ.js} +62 -34
  232. package/dist/shared/hx-spinner-BB0h2hKZ.js.map +1 -0
  233. package/dist/shared/{hx-split-button-Djnc5Aeg.js → hx-split-button-BoABoEm5.js} +153 -82
  234. package/dist/shared/hx-split-button-BoABoEm5.js.map +1 -0
  235. package/dist/shared/{hx-stat-WOcNV1Ry.js → hx-stat-Dtf9lz-O.js} +77 -47
  236. package/dist/shared/hx-stat-Dtf9lz-O.js.map +1 -0
  237. package/dist/shared/hx-switch-B6kr-EwE.js +540 -0
  238. package/dist/shared/hx-switch-B6kr-EwE.js.map +1 -0
  239. package/dist/shared/{hx-tab-panel-DspCrKqo.js → hx-tab-panel-BQtBXKLD.js} +255 -131
  240. package/dist/shared/hx-tab-panel-BQtBXKLD.js.map +1 -0
  241. package/dist/shared/{hx-tag-CNSmdyaK.js → hx-tag-C5aCUpVi.js} +63 -40
  242. package/dist/shared/hx-tag-C5aCUpVi.js.map +1 -0
  243. package/dist/shared/{hx-td-DnnEMIuA.js → hx-td-BGkFOJEK.js} +267 -123
  244. package/dist/shared/hx-td-BGkFOJEK.js.map +1 -0
  245. package/dist/shared/hx-theme-BsefFWTO.js.map +1 -1
  246. package/dist/shared/hx-time-picker-iwCD7rzW.js +1038 -0
  247. package/dist/shared/hx-time-picker-iwCD7rzW.js.map +1 -0
  248. package/dist/shared/{hx-toggle-button-iLiYrMbD.js → hx-toggle-button-BQ81EDkl.js} +226 -65
  249. package/dist/shared/hx-toggle-button-BQ81EDkl.js.map +1 -0
  250. package/dist/shared/{hx-tooltip-nYOv9OLu.js → hx-tooltip-DVqtKPCD.js} +68 -46
  251. package/dist/shared/hx-tooltip-DVqtKPCD.js.map +1 -0
  252. package/dist/shared/hx-tree-item-CHrUhuZL.js +925 -0
  253. package/dist/shared/hx-tree-item-CHrUhuZL.js.map +1 -0
  254. package/dist/shared/menu-roving-DmMnzJhn.js +14 -0
  255. package/dist/shared/menu-roving-DmMnzJhn.js.map +1 -0
  256. package/dist/shared/menu-tree-BNM0SYYq.js +42 -0
  257. package/dist/shared/menu-tree-BNM0SYYq.js.map +1 -0
  258. package/dist/shared/{toast-factory-YSznocIV.js → toast-factory-CL2BzdSB.js} +128 -77
  259. package/dist/shared/toast-factory-CL2BzdSB.js.map +1 -0
  260. package/dist/utils/aria-flatten.d.ts +56 -0
  261. package/dist/utils/aria-flatten.d.ts.map +1 -0
  262. package/dist/utils/aria-idref.d.ts +127 -0
  263. package/dist/utils/aria-idref.d.ts.map +1 -0
  264. package/dist/utils/menu-label.d.ts +18 -0
  265. package/dist/utils/menu-label.d.ts.map +1 -0
  266. package/dist/utils/menu-roving.d.ts +28 -0
  267. package/dist/utils/menu-roving.d.ts.map +1 -0
  268. package/dist/utils/menu-tree.d.ts +41 -0
  269. package/dist/utils/menu-tree.d.ts.map +1 -0
  270. package/dist/utils/tree-walk.d.ts +53 -0
  271. package/dist/utils/tree-walk.d.ts.map +1 -0
  272. package/figma-inventory.json +132 -20
  273. package/package.json +2 -2
  274. package/dist/shared/hx-alert-CLn7CstP.js.map +0 -1
  275. package/dist/shared/hx-badge-CQXgOXJM.js.map +0 -1
  276. package/dist/shared/hx-banner-D3DzpfcP.js.map +0 -1
  277. package/dist/shared/hx-checkbox-D7xma9YH.js +0 -524
  278. package/dist/shared/hx-checkbox-D7xma9YH.js.map +0 -1
  279. package/dist/shared/hx-checkbox-group-C9n315Ju.js +0 -323
  280. package/dist/shared/hx-checkbox-group-C9n315Ju.js.map +0 -1
  281. package/dist/shared/hx-color-picker-uRc865FJ.js +0 -882
  282. package/dist/shared/hx-color-picker-uRc865FJ.js.map +0 -1
  283. package/dist/shared/hx-combobox-DDzqNKEW.js +0 -924
  284. package/dist/shared/hx-combobox-DDzqNKEW.js.map +0 -1
  285. package/dist/shared/hx-date-picker-2iRG1p74.js.map +0 -1
  286. package/dist/shared/hx-dialog-DRN_1-Y-.js +0 -514
  287. package/dist/shared/hx-dialog-DRN_1-Y-.js.map +0 -1
  288. package/dist/shared/hx-drawer-Y1Ui2IWJ.js.map +0 -1
  289. package/dist/shared/hx-dropdown-LyaRc8Rf.js +0 -263
  290. package/dist/shared/hx-dropdown-LyaRc8Rf.js.map +0 -1
  291. package/dist/shared/hx-field-B3Qo8OLS.js.map +0 -1
  292. package/dist/shared/hx-icon-button-CGNdQSFM.js.map +0 -1
  293. package/dist/shared/hx-link-C-O6vq0Q.js.map +0 -1
  294. package/dist/shared/hx-list-MyEhh8c7.js.map +0 -1
  295. package/dist/shared/hx-menu-divider-C2omnPtj.js +0 -558
  296. package/dist/shared/hx-menu-divider-C2omnPtj.js.map +0 -1
  297. package/dist/shared/hx-meter-BPscsw5t.js.map +0 -1
  298. package/dist/shared/hx-overflow-menu-DCLsdIBy.js +0 -374
  299. package/dist/shared/hx-overflow-menu-DCLsdIBy.js.map +0 -1
  300. package/dist/shared/hx-popover-B-FP3-wW.js.map +0 -1
  301. package/dist/shared/hx-progress-bar-Bn3JEPUf.js +0 -258
  302. package/dist/shared/hx-progress-bar-Bn3JEPUf.js.map +0 -1
  303. package/dist/shared/hx-radio-CJvNU2yP.js +0 -621
  304. package/dist/shared/hx-radio-CJvNU2yP.js.map +0 -1
  305. package/dist/shared/hx-select-C8fEHQhC.js +0 -807
  306. package/dist/shared/hx-select-C8fEHQhC.js.map +0 -1
  307. package/dist/shared/hx-spinner-DL5AYr16.js.map +0 -1
  308. package/dist/shared/hx-split-button-Djnc5Aeg.js.map +0 -1
  309. package/dist/shared/hx-stat-WOcNV1Ry.js.map +0 -1
  310. package/dist/shared/hx-switch-BrZFaRue.js +0 -420
  311. package/dist/shared/hx-switch-BrZFaRue.js.map +0 -1
  312. package/dist/shared/hx-tab-panel-DspCrKqo.js.map +0 -1
  313. package/dist/shared/hx-tag-CNSmdyaK.js.map +0 -1
  314. package/dist/shared/hx-td-DnnEMIuA.js.map +0 -1
  315. package/dist/shared/hx-time-picker-BoEIZwzv.js +0 -688
  316. package/dist/shared/hx-time-picker-BoEIZwzv.js.map +0 -1
  317. package/dist/shared/hx-toggle-button-iLiYrMbD.js.map +0 -1
  318. package/dist/shared/hx-tooltip-nYOv9OLu.js.map +0 -1
  319. package/dist/shared/hx-tree-item-C2CiWuDE.js +0 -703
  320. package/dist/shared/hx-tree-item-C2CiWuDE.js.map +0 -1
  321. package/dist/shared/toast-factory-YSznocIV.js.map +0 -1
@@ -1,807 +0,0 @@
1
- import { css as g, html as h, nothing as n } from "lit";
2
- import { property as d, state as u, query as x, customElement as m } from "lit/decorators.js";
3
- import { classMap as _ } from "lit/directives/class-map.js";
4
- import { ifDefined as c } from "lit/directives/if-defined.js";
5
- import { repeat as y } from "lit/directives/repeat.js";
6
- import { F as I } from "./FormMixin-B8PXk5RQ.js";
7
- import { b as w } from "./forced-colors-CTEDFRGa.js";
8
- import { d as $ } from "./dev-warn-YlwPHjtX.js";
9
- import { H as O } from "./helix-element-BNEYeiys.js";
10
- import { c as k } from "./id-counter-DuX8vsui.js";
11
- const C = g`
12
- /* ─── 3-tier token cascade: component → semantic → hardcoded fallback ─── */
13
- :host {
14
- display: block;
15
-
16
- /* Background & foreground */
17
- --_bg: var(--hx-select-bg, var(--hx-color-surface-default, #ffffff));
18
- --_color: var(--hx-select-color, var(--hx-color-text-strong, #202b39));
19
- --_placeholder-color: var(
20
- --hx-select-placeholder-color,
21
- var(--hx-color-text-placeholder, #66787b)
22
- );
23
-
24
- /* Label */
25
- --_label-color: var(--hx-select-label-color, var(--hx-color-text-strong, #202b39));
26
-
27
- /* Border */
28
- --_border-color: var(--hx-select-border-color, var(--hx-color-border-strong, #66787b));
29
- --_border-radius: var(--hx-select-border-radius, var(--hx-border-radius-md, 0.375rem));
30
-
31
- /* Focus ring */
32
- --_focus-ring-color: var(--hx-select-focus-ring-color, var(--hx-focus-ring-color, #0f7078));
33
-
34
- /* Error */
35
- --_error-color: var(--hx-select-error-color, var(--hx-color-error-500, #e5493e));
36
-
37
- /* Chevron */
38
- --_chevron-color: var(--hx-select-chevron-color, var(--hx-color-text-muted, #4a5362));
39
- --_chevron-size: var(--hx-select-chevron-size, 0.5rem);
40
-
41
- /* Listbox */
42
- --_listbox-bg: var(--hx-select-listbox-bg, var(--hx-color-surface-default, #ffffff));
43
- --_option-hover-bg: var(--hx-select-option-hover-bg, var(--hx-color-primary-50, #ebf8f8));
44
- --_option-selected-bg: var(
45
- --hx-select-option-selected-bg,
46
- var(--hx-color-primary-100, #dbf0f0)
47
- );
48
-
49
- /* Typography */
50
- --_font-family: var(--hx-select-font-family, var(--hx-font-family-sans, sans-serif));
51
- }
52
-
53
- :host([disabled]) {
54
- opacity: var(--hx-opacity-disabled, 0.5);
55
- pointer-events: none;
56
- }
57
-
58
- * {
59
- box-sizing: border-box;
60
- }
61
-
62
- .field {
63
- display: flex;
64
- flex-direction: column;
65
- gap: var(--hx-space-1, 0.25rem);
66
- font-family: var(--_font-family);
67
- position: relative;
68
- }
69
-
70
- .field__label {
71
- display: flex;
72
- align-items: baseline;
73
- gap: var(--hx-space-1, 0.25rem);
74
- font-size: var(--hx-font-size-sm, 0.875rem);
75
- font-weight: var(--hx-font-weight-medium, 500);
76
- color: var(--_label-color);
77
- line-height: var(--hx-line-height-normal, 1.5);
78
- }
79
-
80
- .field__required-marker {
81
- color: var(--hx-select-error-color, var(--hx-color-error-text, #c92a2a));
82
- font-weight: var(--hx-font-weight-bold, 700);
83
- }
84
-
85
- .field__select-wrapper {
86
- position: relative;
87
- display: block;
88
- }
89
-
90
- .field__trigger {
91
- display: flex;
92
- align-items: center;
93
- justify-content: space-between;
94
- gap: var(--hx-space-2, 0.5rem);
95
- width: 100%;
96
- min-height: var(--hx-input-height-md, var(--hx-size-10, 2.5rem));
97
- border: var(--hx-border-width-thin, 1px) solid var(--_border-color);
98
- border-radius: var(--_border-radius);
99
- background-color: var(--_bg);
100
- color: var(--_color);
101
- font-family: inherit;
102
- font-size: var(--hx-font-size-md, 1rem);
103
- line-height: var(--hx-line-height-normal, 1.5);
104
- padding: var(--hx-space-2, 0.5rem) var(--hx-space-3, 0.75rem);
105
- cursor: pointer;
106
- text-align: start;
107
- transition:
108
- border-color var(--hx-transition-fast, 150ms ease),
109
- box-shadow var(--hx-transition-fast, 150ms ease);
110
- outline: none;
111
- }
112
-
113
- .field__trigger:focus-visible {
114
- border-color: var(--_focus-ring-color);
115
- box-shadow: 0 0 0 var(--hx-focus-ring-width, 2px)
116
- color-mix(
117
- in srgb,
118
- var(--_focus-ring-color) calc(var(--hx-focus-ring-opacity, 0.25) * 100%),
119
- transparent
120
- );
121
- }
122
-
123
- .field__trigger[aria-disabled='true'] {
124
- cursor: not-allowed;
125
- }
126
-
127
- .field__trigger--sm {
128
- min-height: var(--hx-input-height-sm, var(--hx-size-8, 2rem));
129
- font-size: var(--hx-font-size-sm, 0.875rem);
130
- padding: var(--hx-space-1, 0.25rem) var(--hx-space-3, 0.75rem);
131
- }
132
-
133
- .field__trigger--lg {
134
- min-height: var(--hx-input-height-lg, var(--hx-size-12, 3rem));
135
- font-size: var(--hx-font-size-lg, 1.125rem);
136
- padding: var(--hx-space-3, 0.75rem) var(--hx-space-4, 1rem);
137
- }
138
-
139
- .field__trigger-value {
140
- flex: 1;
141
- min-width: 0;
142
- white-space: nowrap;
143
- overflow: hidden;
144
- text-overflow: ellipsis;
145
- }
146
-
147
- .field__trigger--placeholder .field__trigger-value {
148
- color: var(--_placeholder-color);
149
- }
150
-
151
- .field__chevron {
152
- flex-shrink: 0;
153
- width: calc(var(--_chevron-size) * 1.5);
154
- height: var(--_chevron-size);
155
- position: relative;
156
- color: var(--_chevron-color);
157
- pointer-events: none;
158
- transition: transform var(--hx-transition-fast, 150ms ease);
159
- }
160
-
161
- .field__chevron::after {
162
- content: '';
163
- position: absolute;
164
- top: 0;
165
- left: var(--hx-space-px, 2px);
166
- width: var(--_chevron-size);
167
- height: var(--_chevron-size);
168
- border-inline-end: var(--hx-border-width-thin, 1.5px) solid currentColor;
169
- border-bottom: var(--hx-border-width-thin, 1.5px) solid currentColor;
170
- transform: rotate(45deg);
171
- }
172
-
173
- .field--open .field__chevron {
174
- transform: rotate(180deg);
175
- }
176
-
177
- .field--error .field__trigger {
178
- border-color: var(--_error-color);
179
- }
180
-
181
- .field--error .field__trigger:focus-visible {
182
- border-color: var(--_error-color);
183
- box-shadow: 0 0 0 var(--hx-focus-ring-width, 2px)
184
- color-mix(
185
- in srgb,
186
- var(--_error-color) calc(var(--hx-focus-ring-opacity, 0.25) * 100%),
187
- transparent
188
- );
189
- }
190
-
191
- .field__listbox {
192
- position: absolute;
193
- top: calc(100% + var(--hx-space-1, 0.25rem));
194
- left: 0;
195
- right: 0;
196
- z-index: var(--hx-z-index-dropdown, 1000);
197
- background-color: var(--_listbox-bg);
198
- border: var(--hx-border-width-thin, 1px) solid var(--_border-color);
199
- border-radius: var(--_border-radius);
200
- box-shadow: var(
201
- --hx-select-listbox-shadow,
202
- 0 4px 16px var(--hx-overlay-neutral-12, rgba(13, 17, 23, 0.12))
203
- );
204
- max-height: var(--hx-select-listbox-max-height, 16rem);
205
- overflow: hidden;
206
- display: flex;
207
- flex-direction: column;
208
- }
209
-
210
- .field__listbox[hidden] {
211
- display: none;
212
- }
213
-
214
- .field__options {
215
- overflow-y: auto;
216
- flex: 1;
217
- padding: var(--hx-space-1, 0.25rem) 0;
218
- }
219
-
220
- .field__option {
221
- display: flex;
222
- align-items: center;
223
- gap: var(--hx-space-2, 0.5rem);
224
- padding: var(--hx-space-2, 0.5rem) var(--hx-space-3, 0.75rem);
225
- font-size: var(--hx-font-size-md, 1rem);
226
- color: var(--_color);
227
- cursor: pointer;
228
- user-select: none;
229
- -webkit-user-select: none;
230
- transition: background-color var(--hx-transition-fast, 150ms ease);
231
- }
232
-
233
- .field__option:hover {
234
- background-color: var(--_option-hover-bg);
235
- }
236
-
237
- .field__option--selected {
238
- background-color: var(--_option-selected-bg);
239
- font-weight: var(--hx-font-weight-medium, 500);
240
- }
241
-
242
- .field__option--focused {
243
- background-color: var(--_option-hover-bg);
244
- outline: var(--hx-focus-ring-width, 2px) solid var(--_focus-ring-color);
245
- outline-offset: var(--hx-select-option-focus-ring-offset, -2px);
246
- }
247
-
248
- .field__option--focused.field__option--selected {
249
- background-color: var(--_option-selected-bg);
250
- }
251
-
252
- .field__option--disabled {
253
- opacity: var(--hx-opacity-disabled, 0.5);
254
- cursor: not-allowed;
255
- pointer-events: none;
256
- }
257
-
258
- .field__option-label {
259
- flex: 1;
260
- white-space: nowrap;
261
- overflow: hidden;
262
- text-overflow: ellipsis;
263
- }
264
-
265
- .field__no-options {
266
- padding: var(--hx-space-3, 0.75rem);
267
- text-align: center;
268
- color: var(--_placeholder-color);
269
- font-size: var(--hx-font-size-sm, 0.875rem);
270
- }
271
-
272
- .field__select {
273
- position: absolute;
274
- width: 1px;
275
- height: 1px;
276
- overflow: hidden;
277
- opacity: 0;
278
- pointer-events: none;
279
- clip: rect(0, 0, 0, 0);
280
- }
281
-
282
- .field__help-text,
283
- .field__error {
284
- font-size: var(--hx-font-size-xs, 0.75rem);
285
- line-height: var(--hx-line-height-normal, 1.5);
286
- }
287
-
288
- .field__help-text {
289
- color: var(--hx-color-text-muted, #4a5362);
290
- }
291
-
292
- .field__error {
293
- color: var(--hx-select-error-color, var(--hx-color-error-text, #c92a2a));
294
- }
295
-
296
- @media (prefers-reduced-motion: reduce) {
297
- .field__trigger,
298
- .field__chevron,
299
- .field__option {
300
- transition: none;
301
- }
302
- }
303
-
304
- /* ─── High Contrast Mode (forced-colors) ─── */
305
-
306
- @media (forced-colors: active) {
307
- .field__trigger {
308
- forced-color-adjust: none;
309
- background-color: Field;
310
- color: FieldText;
311
- border: 2px solid ButtonText;
312
- }
313
-
314
- .field__trigger:focus-visible {
315
- outline: 3px solid Highlight;
316
- outline-offset: 2px;
317
- box-shadow: none;
318
- }
319
-
320
- .field__trigger[aria-disabled='true'] {
321
- color: GrayText;
322
- border-color: GrayText;
323
- }
324
-
325
- .field__trigger--placeholder .field__trigger-value {
326
- color: GrayText;
327
- }
328
-
329
- .field__chevron::after {
330
- border-color: FieldText;
331
- }
332
-
333
- .field__listbox {
334
- forced-color-adjust: none;
335
- background-color: Canvas;
336
- border: 2px solid CanvasText;
337
- box-shadow: none;
338
- }
339
-
340
- .field__option {
341
- color: CanvasText;
342
- }
343
-
344
- .field__option:hover {
345
- background-color: Highlight;
346
- color: HighlightText;
347
- }
348
-
349
- .field__option--selected {
350
- background-color: Highlight;
351
- color: HighlightText;
352
- }
353
-
354
- .field__option--focused {
355
- outline-color: Highlight;
356
- background-color: Highlight;
357
- color: HighlightText;
358
- }
359
-
360
- .field__option--disabled {
361
- color: GrayText;
362
- opacity: 1;
363
- }
364
-
365
- .field--error .field__trigger {
366
- border-color: LinkText;
367
- }
368
-
369
- :host([disabled]) {
370
- opacity: 1;
371
- }
372
-
373
- .field__label {
374
- color: CanvasText;
375
- }
376
-
377
- .field__help-text {
378
- color: GrayText;
379
- }
380
-
381
- .field__error {
382
- color: LinkText;
383
- }
384
- }
385
- `;
386
- var z = Object.defineProperty, S = Object.getOwnPropertyDescriptor, l = (e, t, s, o) => {
387
- for (var r = o > 1 ? void 0 : o ? S(t, s) : t, a = e.length - 1, f; a >= 0; a--)
388
- (f = e[a]) && (r = (o ? f(t, s, r) : f(r)) || r);
389
- return o && r && z(t, s, r), r;
390
- };
391
- const T = k("hx-select");
392
- let i = class extends I(O) {
393
- constructor() {
394
- super(...arguments), this._selectId = T(), this._listboxId = `${this._selectId}-listbox`, this._labelId = `${this._selectId}-label`, this._helpTextId = `${this._selectId}-help`, this._errorId = `${this._selectId}-error`, this.label = "", this.placeholder = "", this.value = "", this.required = !1, this.disabled = !1, this.name = "", this.error = "", this.helpText = "", this.size = "md", this.accessibleLabel = null, this.open = !1, this.labelRequired = "Please select an option.", this.labelNoOptions = "No options found", this._options = [], this._hasErrorSlot = !1, this._focusedOptionIndex = -1, this._handleOutsideClick = (e) => {
395
- this.open && !e.composedPath().includes(this) && (this.open = !1);
396
- };
397
- }
398
- // ─── Computed helpers ───
399
- /** @internal */
400
- get _displayValue() {
401
- if (!this.value) return "";
402
- const e = this._options.find((t) => t.value === this.value);
403
- return e ? e.label : this.value;
404
- }
405
- // ─── Lifecycle ───
406
- disconnectedCallback() {
407
- super.disconnectedCallback(), document.removeEventListener("click", this._handleOutsideClick), this.open && (this.open = !1, this._focusedOptionIndex = -1);
408
- }
409
- updated(e) {
410
- var t;
411
- if (super.updated(e), e.has("open") && (this.open ? document.addEventListener("click", this._handleOutsideClick) : document.removeEventListener("click", this._handleOutsideClick)), e.has("value") && (this._syncNativeSelect(), this._updateFormValue()), e.has("size")) {
412
- const s = ["sm", "md", "lg"];
413
- s.includes(this.size) || $(
414
- "hx-select",
415
- `Invalid size "${this.size}". Expected one of: ${s.join(", ")}.`
416
- );
417
- }
418
- if (e.has("error") && this.error) {
419
- const s = (t = this.shadowRoot) == null ? void 0 : t.querySelector('[role="alert"]');
420
- if (s) {
421
- const o = this.error;
422
- requestAnimationFrame(() => {
423
- s.textContent = "", requestAnimationFrame(() => {
424
- s.textContent = o;
425
- });
426
- });
427
- }
428
- }
429
- }
430
- // ─── Form Integration ───
431
- /** @internal */
432
- _updateFormValue() {
433
- this._internals.setFormValue(this.value || null);
434
- }
435
- /** @internal */
436
- _updateValidity() {
437
- this.required && !this.value ? this._internals.setValidity(
438
- { valueMissing: !0 },
439
- this.error || this.labelRequired,
440
- this._trigger ?? this._select
441
- ) : this._internals.setValidity({});
442
- }
443
- // ─── Form Lifecycle Hooks ───
444
- _onFormReset() {
445
- this.value = "", this._internals.setFormValue(null), this._resetInteractionState();
446
- }
447
- _onFormStateRestore(e, t) {
448
- typeof e == "string" && (this.value = e);
449
- }
450
- _onFormDisabled(e) {
451
- this.disabled = e;
452
- }
453
- // ─── Native Select Sync ───
454
- /** @internal */
455
- _syncNativeSelect() {
456
- this._select && this.value && (this._select.value = this.value);
457
- }
458
- // ─── Option Syncing from Slot ───
459
- /** @internal */
460
- _parseOption(e) {
461
- var t;
462
- return { value: e.value, label: ((t = e.textContent) == null ? void 0 : t.trim()) ?? e.value, disabled: e.disabled };
463
- }
464
- /**
465
- * Single-pass slot handler: reads options into _options for the custom
466
- * listbox AND clones them into the native <select> for form participation.
467
- * Handles both top-level <option> and <optgroup> children.
468
- */
469
- /** @internal */
470
- _handleSlotChange() {
471
- var o;
472
- const e = (o = this.shadowRoot) == null ? void 0 : o.querySelector("slot:not([name])");
473
- if (!e) return;
474
- const t = [];
475
- this._select && this._select.querySelectorAll("option[data-cloned]").forEach((r) => r.remove());
476
- const s = (r) => {
477
- if (!this._select) return;
478
- const a = r.cloneNode(!0);
479
- a.setAttribute("data-cloned", ""), this._select.appendChild(a);
480
- };
481
- for (const r of e.assignedElements({ flatten: !0 }))
482
- if (r instanceof HTMLOptionElement)
483
- t.push(this._parseOption(r)), s(r);
484
- else if (r instanceof HTMLOptGroupElement)
485
- for (const a of Array.from(r.children))
486
- a instanceof HTMLOptionElement && (t.push(this._parseOption(a)), s(a));
487
- this._options = t, t.length, this._select && (this.value ? this._select.value = this.value : !this.placeholder && t.length > 0 && (this.value = this._select.value, this._updateFormValue()));
488
- }
489
- // ─── Slot Change Handlers ───
490
- /** @internal */
491
- _handleErrorSlotChange(e) {
492
- const t = e.target;
493
- this._hasErrorSlot = t.assignedNodes({ flatten: !0 }).length > 0;
494
- }
495
- // ─── Dropdown Control ───
496
- /** @internal */
497
- _toggleDropdown() {
498
- if (!this.disabled)
499
- if (this.open = !this.open, this.open) {
500
- const e = this._options.findIndex((t) => t.value === this.value);
501
- this._focusedOptionIndex = e >= 0 ? e : 0;
502
- } else
503
- this._focusedOptionIndex = -1;
504
- }
505
- // ─── Keyboard Navigation ───
506
- /** @internal */
507
- _handleKeydown(e) {
508
- var s;
509
- if (this.disabled) return;
510
- const t = this._options.map((o, r) => ({ o, i: r })).filter(({ o }) => !o.disabled).map(({ i: o }) => o);
511
- switch (e.key) {
512
- case "ArrowDown": {
513
- if (e.preventDefault(), !this.open) {
514
- this.open = !0, this._focusedOptionIndex = t.length > 0 ? t[0] ?? 0 : 0;
515
- break;
516
- }
517
- const o = t.find((r) => r > this._focusedOptionIndex);
518
- this._focusedOptionIndex = o !== void 0 ? o : t[0] ?? this._focusedOptionIndex;
519
- break;
520
- }
521
- case "ArrowUp": {
522
- if (e.preventDefault(), !this.open) {
523
- this.open = !0;
524
- const a = t[t.length - 1];
525
- this._focusedOptionIndex = a !== void 0 ? a : 0;
526
- break;
527
- }
528
- const o = [...t].reverse().find((a) => a < this._focusedOptionIndex), r = t[t.length - 1];
529
- this._focusedOptionIndex = o !== void 0 ? o : r ?? this._focusedOptionIndex;
530
- break;
531
- }
532
- case "Home": {
533
- e.preventDefault(), this.open || (this.open = !0), this._focusedOptionIndex = t.length > 0 ? t[0] ?? 0 : 0;
534
- break;
535
- }
536
- case "End": {
537
- e.preventDefault(), this.open || (this.open = !0);
538
- const o = t[t.length - 1];
539
- this._focusedOptionIndex = o !== void 0 ? o : 0;
540
- break;
541
- }
542
- case "Enter":
543
- case " ": {
544
- if (e.preventDefault(), !this.open) {
545
- this.open = !0;
546
- const o = this._options.findIndex((r) => r.value === this.value);
547
- this._focusedOptionIndex = o >= 0 ? o : t[0] ?? 0;
548
- break;
549
- }
550
- if (this._focusedOptionIndex >= 0 && this._focusedOptionIndex < this._options.length) {
551
- const o = this._options[this._focusedOptionIndex];
552
- o && this._selectOption(o);
553
- }
554
- break;
555
- }
556
- case "Escape": {
557
- e.preventDefault(), this.open = !1, this._focusedOptionIndex = -1, (s = this._trigger) == null || s.focus();
558
- break;
559
- }
560
- case "Tab": {
561
- this.open && (this.open = !1, this._focusedOptionIndex = -1);
562
- break;
563
- }
564
- default: {
565
- if (!e.ctrlKey && !e.metaKey && !e.altKey && e.key.length === 1) {
566
- const o = e.key.toLowerCase(), r = this.open ? this._focusedOptionIndex + 1 : 0, a = this._options.map((p, b) => ({ o: p, i: b })).filter(({ o: p }) => !p.disabled && p.label.toLowerCase().startsWith(o)), v = a.find(({ i: p }) => p >= r) ?? a[0];
567
- v && (this.open || (this.open = !0), this._focusedOptionIndex = v.i, e.preventDefault());
568
- }
569
- break;
570
- }
571
- }
572
- }
573
- // ─── Selection ───
574
- /** @internal */
575
- _selectOption(e) {
576
- e.disabled || (this.value = e.value, this._handleInteractionInput(), this._handleInteractionBlur(), this._dispatchChange(), this.open = !1, this._focusedOptionIndex = -1);
577
- }
578
- // ─── Event Dispatchers ───
579
- /** @internal */
580
- _dispatchChange() {
581
- this.dispatchEvent(
582
- new CustomEvent("hx-change", {
583
- bubbles: !0,
584
- composed: !0,
585
- detail: { value: this.value }
586
- })
587
- );
588
- }
589
- /** @internal */
590
- _handleNativeChange(e) {
591
- this.value = e.target.value, this._handleInteractionInput(), this._handleInteractionBlur(), this._dispatchChange();
592
- }
593
- // ─── Public Methods ───
594
- /** Moves focus to the visible trigger button. */
595
- focus(e) {
596
- var t;
597
- (t = this._trigger) == null || t.focus(e);
598
- }
599
- // ─── Render Helpers ───
600
- /** @internal */
601
- _optionId(e) {
602
- return `hx-select-option-${this._selectId}-${e}`;
603
- }
604
- /** @internal */
605
- _renderOptions() {
606
- return this._options.length === 0 ? h`<div class="field__no-options">${this.labelNoOptions}</div>` : y(
607
- this._options,
608
- (e) => e.value,
609
- (e, t) => {
610
- const s = e.value === this.value, o = t === this._focusedOptionIndex;
611
- return h`
612
- <div
613
- id=${this._optionId(t)}
614
- part="option"
615
- role="option"
616
- class=${_({
617
- field__option: !0,
618
- "field__option--selected": s,
619
- "field__option--focused": o,
620
- "field__option--disabled": e.disabled
621
- })}
622
- aria-selected=${s ? "true" : "false"}
623
- aria-disabled=${e.disabled ? "true" : n}
624
- @click=${() => this._selectOption(e)}
625
- >
626
- <span class="field__option-label">${e.label}</span>
627
- </div>
628
- `;
629
- }
630
- );
631
- }
632
- // ─── Main Render ───
633
- render() {
634
- const e = !!this.error || this._hasErrorSlot, t = {
635
- field: !0,
636
- "field--error": e,
637
- "field--disabled": this.disabled,
638
- "field--required": this.required,
639
- "field--open": this.open
640
- }, s = {
641
- field__trigger: !0,
642
- [`field__trigger--${this.size}`]: !0,
643
- "field__trigger--placeholder": !this.value
644
- }, o = {
645
- field__select: !0,
646
- [`field__select--${this.size}`]: !0
647
- }, r = [
648
- e || this._hasErrorSlot ? this._errorId : null,
649
- this.helpText ? this._helpTextId : null
650
- ].filter(Boolean).join(" ") || void 0;
651
- return h`
652
- <div part="field" class=${_(t)}>
653
- <!-- Label -->
654
- <slot name="label">
655
- ${this.label ? h`<label
656
- part="label"
657
- class="field__label"
658
- id=${this._labelId}
659
- for=${this._selectId}
660
- >
661
- ${this.label}
662
- ${this.required ? h`<span class="field__required-marker" aria-hidden="true">*</span>` : n}
663
- </label>` : n}
664
- </slot>
665
-
666
- <!-- Select Wrapper: trigger + listbox -->
667
- <div part="select-wrapper" class="field__select-wrapper">
668
- <!-- Custom Trigger (combobox — div to avoid native role conflicts per APG) -->
669
- <div
670
- part="trigger"
671
- id=${this._selectId}
672
- class=${_(s)}
673
- role="combobox"
674
- tabindex=${this.disabled ? "-1" : "0"}
675
- aria-expanded=${this.open ? "true" : "false"}
676
- aria-haspopup="listbox"
677
- aria-controls=${this._listboxId}
678
- aria-activedescendant=${this.open && this._focusedOptionIndex >= 0 ? this._optionId(this._focusedOptionIndex) : n}
679
- aria-invalid=${e ? "true" : n}
680
- aria-describedby=${c(r)}
681
- aria-required=${this.required ? "true" : n}
682
- aria-disabled=${this.disabled ? "true" : n}
683
- aria-labelledby=${c(this.label ? this._labelId : void 0)}
684
- aria-label=${c(this.accessibleLabel ?? void 0)}
685
- @click=${this._toggleDropdown}
686
- @keydown=${this._handleKeydown}
687
- >
688
- <span class="field__trigger-value"
689
- >${this._displayValue || this.placeholder || n}</span
690
- >
691
- <span class="field__chevron" aria-hidden="true"></span>
692
- </div>
693
-
694
- <!-- Custom Listbox Panel -->
695
- <div
696
- part="listbox"
697
- role="listbox"
698
- id=${this._listboxId}
699
- class="field__listbox"
700
- aria-label=${c(this.label || this.accessibleLabel || void 0)}
701
- ?hidden=${!this.open}
702
- >
703
- <div class="field__options">${this._renderOptions()}</div>
704
- </div>
705
-
706
- <!-- Hidden native select (form participation + test compat) -->
707
- <select
708
- part="select"
709
- class=${_(o)}
710
- tabindex="-1"
711
- aria-hidden="true"
712
- ?required=${this.required}
713
- ?disabled=${this.disabled}
714
- name=${c(this.name || void 0)}
715
- aria-label=${c(this.accessibleLabel ?? void 0)}
716
- aria-invalid=${e ? "true" : n}
717
- aria-describedby=${c(r)}
718
- aria-required=${this.required ? "true" : n}
719
- @change=${this._handleNativeChange}
720
- >
721
- ${this.placeholder ? h`<option value="" disabled selected>${this.placeholder}</option>` : n}
722
- </select>
723
- </div>
724
-
725
- <!-- Hidden slot (options are read from here) -->
726
- <slot @slotchange=${this._handleSlotChange} style="display:none;"></slot>
727
-
728
- <!-- Error -->
729
- <slot name="error" @slotchange=${this._handleErrorSlotChange}>
730
- ${e ? h`<div part="error" class="field__error" id=${this._errorId} role="alert">
731
- ${this.error}
732
- </div>` : n}
733
- </slot>
734
-
735
- <!-- Help Text -->
736
- ${this.helpText && !e ? h`
737
- <div part="help-text" class="field__help-text" id=${this._helpTextId}>
738
- <slot name="help-text">${this.helpText}</slot>
739
- </div>
740
- ` : n}
741
- </div>
742
- `;
743
- }
744
- };
745
- i.styles = [C, w];
746
- i.formAssociated = !0;
747
- l([
748
- d({ type: String })
749
- ], i.prototype, "label", 2);
750
- l([
751
- d({ type: String })
752
- ], i.prototype, "placeholder", 2);
753
- l([
754
- d({ type: String, reflect: !0 })
755
- ], i.prototype, "value", 2);
756
- l([
757
- d({ type: Boolean, reflect: !0 })
758
- ], i.prototype, "required", 2);
759
- l([
760
- d({ type: Boolean, reflect: !0 })
761
- ], i.prototype, "disabled", 2);
762
- l([
763
- d({ type: String, reflect: !0 })
764
- ], i.prototype, "name", 2);
765
- l([
766
- d({ type: String })
767
- ], i.prototype, "error", 2);
768
- l([
769
- d({ type: String, attribute: "help-text" })
770
- ], i.prototype, "helpText", 2);
771
- l([
772
- d({ type: String, attribute: "hx-size", reflect: !0 })
773
- ], i.prototype, "size", 2);
774
- l([
775
- d({ type: String, attribute: "accessible-label" })
776
- ], i.prototype, "accessibleLabel", 2);
777
- l([
778
- d({ type: Boolean, reflect: !0 })
779
- ], i.prototype, "open", 2);
780
- l([
781
- d({ attribute: "label-required" })
782
- ], i.prototype, "labelRequired", 2);
783
- l([
784
- d({ attribute: "label-no-options" })
785
- ], i.prototype, "labelNoOptions", 2);
786
- l([
787
- u()
788
- ], i.prototype, "_options", 2);
789
- l([
790
- u()
791
- ], i.prototype, "_hasErrorSlot", 2);
792
- l([
793
- u()
794
- ], i.prototype, "_focusedOptionIndex", 2);
795
- l([
796
- x(".field__select")
797
- ], i.prototype, "_select", 2);
798
- l([
799
- x(".field__trigger")
800
- ], i.prototype, "_trigger", 2);
801
- i = l([
802
- m("hx-select")
803
- ], i);
804
- export {
805
- i as H
806
- };
807
- //# sourceMappingURL=hx-select-C8fEHQhC.js.map