@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
@@ -0,0 +1,1221 @@
1
+ import { css as A, html as b, nothing as $ } from "lit";
2
+ import { F as I } from "./FormMixin-B8PXk5RQ.js";
3
+ import { property as c, state as f, query as C, customElement as R } from "lit/decorators.js";
4
+ import { ifDefined as H } from "lit/directives/if-defined.js";
5
+ import { styleMap as m } from "lit/directives/style-map.js";
6
+ import { b as F } from "./forced-colors-CTEDFRGa.js";
7
+ import { s as B, i as N, r as P } from "./aria-idref-CxvyzfQS.js";
8
+ import { f as y } from "./aria-flatten-DY6v2vah.js";
9
+ import { H as V } from "./helix-element-BNEYeiys.js";
10
+ const U = A`
11
+ :host {
12
+ display: inline-block;
13
+ position: relative;
14
+ font-family: var(--hx-font-family-sans, sans-serif);
15
+ font-size: var(--hx-font-size-sm, 0.875rem);
16
+ }
17
+ :host([disabled]) {
18
+ pointer-events: none;
19
+ opacity: var(--hx-opacity-disabled, 0.5);
20
+ }
21
+ /* Slotted label / help / error blocks for cross-shadow naming. */
22
+ .hx-color-picker__label {
23
+ display: block;
24
+ margin-bottom: var(--hx-space-1, 0.25rem);
25
+ font-weight: var(--hx-font-weight-semibold, 600);
26
+ color: var(--hx-color-neutral-900, #1a1a1a);
27
+ }
28
+ .hx-color-picker__label:empty {
29
+ display: none;
30
+ }
31
+ .hx-color-picker__help {
32
+ display: block;
33
+ margin-top: var(--hx-space-1, 0.25rem);
34
+ font-size: var(--hx-font-size-xs, 0.75rem);
35
+ color: var(--hx-color-neutral-600, #525252);
36
+ }
37
+ .hx-color-picker__error {
38
+ display: block;
39
+ margin-top: var(--hx-space-1, 0.25rem);
40
+ font-size: var(--hx-font-size-xs, 0.75rem);
41
+ color: var(--hx-color-danger-700, #c43e3e);
42
+ }
43
+ [hidden] {
44
+ display: none !important;
45
+ }
46
+ .trigger {
47
+ display: inline-flex;
48
+ align-items: center;
49
+ gap: var(--hx-space-2, 0.5rem);
50
+ padding: var(--hx-space-1, 0.25rem);
51
+ border: var(--hx-border-width-thin, 1px) solid var(--hx-color-neutral-300, #b6bfb9);
52
+ border-radius: var(--hx-border-radius-md, 0.375rem);
53
+ background: var(--hx-color-neutral-0, #ffffff);
54
+ cursor: pointer;
55
+ transition: border-color var(--hx-transition-fast, 150ms ease);
56
+ }
57
+ .trigger:hover:not([disabled]) {
58
+ border-color: var(
59
+ --hx-color-picker-trigger-hover-border-color,
60
+ var(--hx-color-primary-500, #429797)
61
+ );
62
+ }
63
+ :is(.trigger, .gradient-grid, .slider-track, .swatch-btn, .format-btn):focus-visible {
64
+ outline: var(--hx-focus-ring-width, 2px) solid
65
+ var(--hx-color-picker-focus-ring-color, var(--hx-focus-ring-color, #0f7078));
66
+ outline-offset: var(--hx-focus-ring-offset, 2px);
67
+ }
68
+ .trigger-swatch {
69
+ width: 1.5rem;
70
+ height: 1.5rem;
71
+ border-radius: var(--hx-border-radius-sm, 0.25rem);
72
+ border: var(--hx-border-width-thin, 1px) solid
73
+ var(--hx-color-picker-swatch-border, var(--hx-overlay-black-10, rgba(0, 0, 0, 0.1)));
74
+ background: var(--_preview-color, #000);
75
+ display: block;
76
+ flex-shrink: 0;
77
+ }
78
+ .trigger-label {
79
+ font-size: var(--hx-font-size-sm, 0.875rem);
80
+ color: var(--hx-color-neutral-700, #313e4b);
81
+ font-family: var(--hx-font-family-mono, monospace);
82
+ white-space: nowrap;
83
+ }
84
+ .panel {
85
+ position: absolute;
86
+ z-index: var(--hx-color-picker-z-index, 1000);
87
+ top: calc(100% + 4px);
88
+ left: 0;
89
+ background: var(--hx-color-neutral-0, #ffffff);
90
+ border: var(--hx-border-width-thin, 1px) solid var(--hx-color-neutral-200, #d6dbd5);
91
+ border-radius: var(--hx-border-radius-lg, 0.5rem);
92
+ box-shadow: 0 8px 24px
93
+ var(--hx-color-picker-panel-shadow, var(--hx-overlay-black-15, rgba(0, 0, 0, 0.15)));
94
+ padding: var(--hx-space-4, 1rem);
95
+ width: var(--hx-color-picker-width, 260px);
96
+ display: flex;
97
+ flex-direction: column;
98
+ gap: var(--hx-space-3, 0.75rem);
99
+ outline: none;
100
+ }
101
+ :host([inline]) .panel {
102
+ position: static;
103
+ box-shadow: none;
104
+ border: var(--hx-border-width-thin, 1px) solid var(--hx-color-neutral-200, #d6dbd5);
105
+ border-radius: var(--hx-border-radius-lg, 0.5rem);
106
+ }
107
+ .gradient-grid {
108
+ position: relative;
109
+ width: 100%;
110
+ height: var(--hx-color-picker-grid-height, 160px);
111
+ border-radius: var(--hx-border-radius-sm, 0.25rem);
112
+ cursor: crosshair;
113
+ overflow: hidden;
114
+ touch-action: none;
115
+ flex-shrink: 0;
116
+ }
117
+ .gradient-grid-bg {
118
+ position: absolute;
119
+ inset: 0;
120
+ background:
121
+ linear-gradient(to bottom, transparent, #000),
122
+ linear-gradient(to right, #fff, var(--_hue-color, hsl(0, 100%, 50%)));
123
+ pointer-events: none;
124
+ }
125
+ .gradient-thumb {
126
+ position: absolute;
127
+ width: 12px;
128
+ height: 12px;
129
+ border-radius: 50%;
130
+ border: none;
131
+ box-shadow:
132
+ 0 0 0 2px var(--hx-color-picker-thumb-border, var(--hx-color-neutral-0, #ffffff)),
133
+ 0 0 0 3px var(--hx-color-picker-thumb-shadow, var(--hx-overlay-black-30, rgba(0, 0, 0, 0.3)));
134
+ transform: translate(-50%, -50%);
135
+ pointer-events: none;
136
+ top: var(--_thumb-y, 0%);
137
+ left: var(--_thumb-x, 100%);
138
+ }
139
+ .slider-track {
140
+ position: relative;
141
+ width: 100%;
142
+ height: 12px;
143
+ border-radius: 6px;
144
+ cursor: pointer;
145
+ touch-action: none;
146
+ flex-shrink: 0;
147
+ }
148
+ .hue-track {
149
+ background: linear-gradient(
150
+ to right,
151
+ red,
152
+ #ff8000,
153
+ #ff0,
154
+ #80ff00,
155
+ #0f0,
156
+ #00ff80,
157
+ #0ff,
158
+ #0080ff,
159
+ #00f,
160
+ #7f00ff,
161
+ #f0f,
162
+ #ff0080,
163
+ red
164
+ );
165
+ }
166
+ .opacity-track {
167
+ background-image:
168
+ linear-gradient(to right, transparent, var(--_hue-color, hsl(0, 100%, 50%))),
169
+ repeating-conic-gradient(#ccc 0% 25%, #fff 0% 50%) 0 0 / 12px 12px;
170
+ }
171
+ .slider-thumb {
172
+ position: absolute;
173
+ top: 50%;
174
+ width: 16px;
175
+ height: 16px;
176
+ border-radius: 50%;
177
+ border: none;
178
+ box-shadow:
179
+ 0 0 0 2px var(--hx-color-picker-thumb-border, var(--hx-color-neutral-0, #ffffff)),
180
+ 0 0 0 3px var(--hx-color-picker-thumb-shadow, var(--hx-overlay-black-30, rgba(0, 0, 0, 0.3)));
181
+ transform: translate(-50%, -50%);
182
+ pointer-events: none;
183
+ left: var(--_slider-pct, 0%);
184
+ background: var(--_thumb-color, hsl(0, 100%, 50%));
185
+ }
186
+ .swatches {
187
+ display: flex;
188
+ flex-wrap: wrap;
189
+ gap: var(--hx-space-1, 0.25rem);
190
+ }
191
+ .swatch-btn {
192
+ width: 20px;
193
+ height: 20px;
194
+ border-radius: var(--hx-border-radius-sm, 0.25rem);
195
+ border: var(--hx-border-width-thin, 1px) solid
196
+ var(--hx-color-picker-swatch-border, var(--hx-overlay-black-10, rgba(0, 0, 0, 0.1)));
197
+ cursor: pointer;
198
+ padding: 0;
199
+ flex-shrink: 0;
200
+ transition: transform var(--hx-transition-fast, 150ms ease);
201
+ }
202
+ .swatch-btn:hover {
203
+ transform: scale(1.15);
204
+ border-color: var(
205
+ --hx-color-picker-swatch-border-hover,
206
+ var(--hx-overlay-black-30, rgba(0, 0, 0, 0.3))
207
+ );
208
+ }
209
+ .input-area {
210
+ display: flex;
211
+ align-items: center;
212
+ gap: var(--hx-space-2, 0.5rem);
213
+ }
214
+ .format-btn {
215
+ flex-shrink: 0;
216
+ padding: var(--hx-space-1, 0.25rem) var(--hx-space-2, 0.5rem);
217
+ background: var(--hx-color-neutral-100, #ebeee9);
218
+ border: var(--hx-border-width-thin, 1px) solid var(--hx-color-neutral-300, #b6bfb9);
219
+ border-radius: var(--hx-border-radius-sm, 0.25rem);
220
+ cursor: pointer;
221
+ font-size: var(--hx-font-size-xs, 0.75rem);
222
+ color: var(--hx-color-neutral-600, #4a5362);
223
+ text-transform: uppercase;
224
+ font-weight: var(--hx-font-weight-semibold, 600);
225
+ letter-spacing: 0.05em;
226
+ }
227
+ .color-input {
228
+ flex: 1;
229
+ min-width: 0;
230
+ padding: var(--hx-space-1, 0.25rem) var(--hx-space-2, 0.5rem);
231
+ border: var(--hx-border-width-thin, 1px) solid var(--hx-color-neutral-300, #b6bfb9);
232
+ border-radius: var(--hx-border-radius-sm, 0.25rem);
233
+ font-family: var(--hx-font-family-mono, monospace);
234
+ font-size: var(--hx-font-size-sm, 0.875rem);
235
+ color: var(--hx-color-neutral-900, #0d1825);
236
+ background: var(--hx-color-neutral-0, #ffffff);
237
+ outline: none;
238
+ }
239
+ .color-input:focus-visible {
240
+ border-color: var(--hx-color-picker-focus-ring-color, var(--hx-focus-ring-color, #0f7078));
241
+ box-shadow: 0 0 0 2px
242
+ color-mix(
243
+ in srgb,
244
+ var(--hx-color-picker-focus-ring-color, var(--hx-focus-ring-color, #0f7078)) 20%,
245
+ transparent
246
+ );
247
+ }
248
+ .input-preview {
249
+ width: 24px;
250
+ height: 24px;
251
+ border-radius: var(--hx-border-radius-sm, 0.25rem);
252
+ border: var(--hx-border-width-thin, 1px) solid
253
+ var(--hx-color-picker-swatch-border, var(--hx-overlay-black-10, rgba(0, 0, 0, 0.1)));
254
+ background: var(--_preview-color, #000);
255
+ flex-shrink: 0;
256
+ }
257
+ @media (prefers-reduced-motion: reduce) {
258
+ .trigger,
259
+ .swatch-btn {
260
+ transition: none;
261
+ }
262
+ }
263
+ @media (forced-colors: active) {
264
+ .trigger {
265
+ forced-color-adjust: none;
266
+ background-color: Field;
267
+ color: FieldText;
268
+ border: 2px solid ButtonText;
269
+ }
270
+ .trigger:hover:not([disabled]) {
271
+ border-color: Highlight;
272
+ }
273
+ :is(.trigger, .gradient-grid, .slider-track, .swatch-btn, .format-btn):focus-visible {
274
+ outline-color: Highlight;
275
+ }
276
+ .panel {
277
+ forced-color-adjust: none;
278
+ background-color: Canvas;
279
+ border: 2px solid CanvasText;
280
+ box-shadow: none;
281
+ }
282
+ .gradient-thumb,
283
+ .slider-thumb {
284
+ box-shadow: 0 0 0 2px CanvasText;
285
+ }
286
+ .swatch-btn {
287
+ border: 2px solid ButtonText;
288
+ }
289
+ .swatch-btn:hover {
290
+ border-color: Highlight;
291
+ }
292
+ .color-input {
293
+ forced-color-adjust: none;
294
+ background-color: Field;
295
+ color: FieldText;
296
+ border: 2px solid ButtonText;
297
+ }
298
+ .color-input:focus-visible {
299
+ border-color: Highlight;
300
+ box-shadow: none;
301
+ }
302
+ .format-btn {
303
+ forced-color-adjust: none;
304
+ background-color: ButtonFace;
305
+ color: ButtonText;
306
+ border: 2px solid ButtonText;
307
+ }
308
+ .trigger-label {
309
+ color: FieldText;
310
+ }
311
+ :host([disabled]) {
312
+ opacity: 1;
313
+ }
314
+ :host([disabled]) .trigger {
315
+ border-color: GrayText;
316
+ color: GrayText;
317
+ }
318
+ }
319
+ `;
320
+ function x(e, t, r) {
321
+ return Math.max(t, Math.min(r, e));
322
+ }
323
+ function q(e) {
324
+ let t = e.trim().replace(/^#/, "");
325
+ if (t.length === 3 && (t = t.replace(/(.)/g, "$1$1")), t.length === 4 && (t = t.replace(/(.)/g, "$1$1")), t.length === 6 && (t += "ff"), t.length !== 8) return null;
326
+ const r = parseInt(t, 16);
327
+ return isNaN(r) ? null : {
328
+ r: r >>> 24 & 255,
329
+ g: r >>> 16 & 255,
330
+ b: r >>> 8 & 255,
331
+ a: (r & 255) / 255
332
+ };
333
+ }
334
+ function T(e) {
335
+ return Math.round(x(e, 0, 255)).toString(16).padStart(2, "0");
336
+ }
337
+ function G(e, t) {
338
+ const r = `#${T(e.r)}${T(e.g)}${T(e.b)}`;
339
+ return t && e.a < 1 ? r + T(e.a * 255) : r;
340
+ }
341
+ function O(e) {
342
+ const t = e.r / 255, r = e.g / 255, i = e.b / 255, s = Math.max(t, r, i), h = Math.min(t, r, i), l = s - h, n = s === 0 ? 0 : l / s, p = s;
343
+ let d = 0;
344
+ return l !== 0 && (s === t ? d = ((r - i) / l + (r < i ? 6 : 0)) / 6 : s === r ? d = ((i - t) / l + 2) / 6 : d = ((t - r) / l + 4) / 6), { h: d * 360, s: n * 100, v: p * 100, a: e.a };
345
+ }
346
+ function D(e) {
347
+ const t = e.h / 360, r = e.s / 100, i = e.v / 100, s = Math.floor(t * 6), h = t * 6 - s, l = i * (1 - r), n = i * (1 - h * r), p = i * (1 - (1 - h) * r);
348
+ let d = 0, _ = 0, g = 0;
349
+ switch (s % 6) {
350
+ case 0:
351
+ d = i, _ = p, g = l;
352
+ break;
353
+ case 1:
354
+ d = n, _ = i, g = l;
355
+ break;
356
+ case 2:
357
+ d = l, _ = i, g = p;
358
+ break;
359
+ case 3:
360
+ d = l, _ = n, g = i;
361
+ break;
362
+ case 4:
363
+ d = p, _ = l, g = i;
364
+ break;
365
+ case 5:
366
+ d = i, _ = l, g = n;
367
+ break;
368
+ }
369
+ return { r: Math.round(d * 255), g: Math.round(_ * 255), b: Math.round(g * 255), a: e.a };
370
+ }
371
+ function j(e) {
372
+ const t = e.r / 255, r = e.g / 255, i = e.b / 255, s = Math.max(t, r, i), h = Math.min(t, r, i), l = (s + h) / 2;
373
+ let n = 0, p = 0;
374
+ if (s !== h) {
375
+ const d = s - h;
376
+ p = l > 0.5 ? d / (2 - s - h) : d / (s + h), s === t ? n = ((r - i) / d + (r < i ? 6 : 0)) / 6 : s === r ? n = ((i - t) / d + 2) / 6 : n = ((t - r) / d + 4) / 6;
377
+ }
378
+ return { h: n * 360, s: p * 100, l: l * 100, a: e.a };
379
+ }
380
+ function E(e) {
381
+ if (!e) return null;
382
+ if (e.startsWith("#")) {
383
+ const s = q(e);
384
+ return s ? O(s) : null;
385
+ }
386
+ const t = e.match(
387
+ /rgba?\(\s*(\d+)(?:\s*,\s*|\s+)(\d+)(?:\s*,\s*|\s+)(\d+)(?:\s*(?:\/|,)\s*([\d.]+))?\s*\)/
388
+ );
389
+ if (t) {
390
+ const [, s, h, l, n] = t;
391
+ return O({
392
+ r: parseInt(s ?? "0", 10),
393
+ g: parseInt(h ?? "0", 10),
394
+ b: parseInt(l ?? "0", 10),
395
+ a: n !== void 0 ? parseFloat(n) : 1
396
+ });
397
+ }
398
+ const r = e.match(
399
+ /hsla?\(\s*([\d.]+)(?:\s*,\s*|\s+)([\d.]+)%(?:\s*,\s*|\s+)([\d.]+)%(?:\s*(?:\/|,)\s*([\d.]+))?\s*\)/
400
+ );
401
+ if (r) {
402
+ const [, s, h, l, n] = r, p = parseFloat(s ?? "0"), d = parseFloat(h ?? "0") / 100, _ = parseFloat(l ?? "0") / 100, g = n !== void 0 ? parseFloat(n) : 1, v = (1 - Math.abs(2 * _ - 1)) * d, u = v * (1 - Math.abs(p / 60 % 2 - 1)), L = _ - v / 2;
403
+ let w = 0, S = 0, k = 0;
404
+ return p < 60 ? (w = v, S = u) : p < 120 ? (w = u, S = v) : p < 180 ? (S = v, k = u) : p < 240 ? (S = u, k = v) : p < 300 ? (w = u, k = v) : (w = v, k = u), O({
405
+ r: Math.round((w + L) * 255),
406
+ g: Math.round((S + L) * 255),
407
+ b: Math.round((k + L) * 255),
408
+ a: g
409
+ });
410
+ }
411
+ const i = e.match(
412
+ /hsva?\(\s*([\d.]+)\s*,\s*([\d.]+)%\s*,\s*([\d.]+)%(?:\s*,\s*([\d.]+))?\s*\)/
413
+ );
414
+ if (i) {
415
+ const [, s, h, l, n] = i;
416
+ return {
417
+ h: parseFloat(s ?? "0"),
418
+ s: parseFloat(h ?? "0"),
419
+ v: parseFloat(l ?? "0"),
420
+ a: n !== void 0 ? parseFloat(n) : 1
421
+ };
422
+ }
423
+ return null;
424
+ }
425
+ function M(e, t, r) {
426
+ const i = D(e);
427
+ switch (t) {
428
+ case "hex":
429
+ return G(i, r);
430
+ case "rgb":
431
+ return r && e.a < 1 ? `rgb(${i.r} ${i.g} ${i.b} / ${Math.round(e.a * 100) / 100})` : `rgb(${i.r} ${i.g} ${i.b})`;
432
+ case "hsl": {
433
+ const s = j(i);
434
+ return r && e.a < 1 ? `hsl(${Math.round(s.h)} ${Math.round(s.s)}% ${Math.round(s.l)}% / ${Math.round(e.a * 100) / 100})` : `hsl(${Math.round(s.h)} ${Math.round(s.s)}% ${Math.round(s.l)}%)`;
435
+ }
436
+ case "hsv":
437
+ return r && e.a < 1 ? `hsva(${Math.round(e.h)}, ${Math.round(e.s)}%, ${Math.round(e.v)}%, ${Math.round(e.a * 100) / 100})` : `hsv(${Math.round(e.h)}, ${Math.round(e.s)}%, ${Math.round(e.v)}%)`;
438
+ }
439
+ }
440
+ var z = Object.defineProperty, K = Object.getOwnPropertyDescriptor, a = (e, t, r, i) => {
441
+ for (var s = i > 1 ? void 0 : i ? K(t, r) : t, h = e.length - 1, l; h >= 0; h--)
442
+ (l = e[h]) && (s = (i ? l(t, r, s) : l(s)) || s);
443
+ return i && s && z(t, r, s), s;
444
+ };
445
+ let X = 0, o = class extends I(V) {
446
+ constructor() {
447
+ super(), this.value = "#000000", this.format = "hex", this.opacity = !1, this.swatches = [], this.swatchesOnly = !1, this.disabled = !1, this.name = "", this.inline = !1, this.required = !1, this.labelGradient = "Color gradient", this.labelHue = "Hue", this.labelOpacity = "Opacity", this.labelSwatches = "Preset colors", this.labelSwitchFormat = "Switch color format", this.labelColorValue = "Color value", this.labelPicker = "Color picker", this.label = void 0, this.accessibleLabel = void 0, this.helpText = void 0, this.error = void 0, this.labelTrigger = (e) => `Choose color: ${e}`, this._hsv = { h: 0, s: 0, v: 0, a: 1 }, this._open = !1, this._inputValue = "#000000", this._supportsIdrefRefs = !0, this._slottedLabelEls = [], this._labelSlotText = "", this._hasLabelSlot = !1, this._helpSlotText = "", this._errorSlotText = "", this._announcedError = "", this._instanceId = ++X, this._helpId = `hx-color-picker-help-${this._instanceId}`, this._errorId = `hx-color-picker-error-${this._instanceId}`, this._hostDescId = `hx-color-picker-host-desc-${this._instanceId}`, this._fallbackTriggerAriaLabelledBy = null, this._fallbackTriggerAriaDescribedBy = null, this._fallbackTriggerAriaLabel = null, this._externalDescText = "", this._ariaMirror = null, this._labelSlotTextObserver = null, this._helpSlotTextObserver = null, this._errorSlotTextObserver = null, this._externalRefsObserver = null, this._draggingGrid = !1, this._draggingHue = !1, this._draggingOpacity = !1, this._dragRect = null, this._boundPointerMove = this._handlePointerMove.bind(this), this._boundPointerUp = this._handlePointerUp.bind(this), this._boundDocumentClick = this._handleDocumentClick.bind(this);
448
+ }
449
+ // ─── Lifecycle ───────────────────────────────────────────────────────────
450
+ connectedCallback() {
451
+ super.connectedCallback(), this._syncFromValue();
452
+ const e = this.constructor;
453
+ this._supportsIdrefRefs = e.__testSupportsIdrefRefsOverride !== null ? e.__testSupportsIdrefRefsOverride : B(this._internals), this._syncHostAriaSemantics(), this._ariaMirror = N(this, () => {
454
+ this._syncHostAriaSemantics();
455
+ });
456
+ }
457
+ disconnectedCallback() {
458
+ var e, t, r, i, s;
459
+ super.disconnectedCallback(), typeof document < "u" && (document.removeEventListener("click", this._boundDocumentClick, !0), document.removeEventListener("pointermove", this._boundPointerMove), document.removeEventListener("pointerup", this._boundPointerUp)), (e = this._ariaMirror) == null || e.disconnect(), this._ariaMirror = null, (t = this._labelSlotTextObserver) == null || t.disconnect(), this._labelSlotTextObserver = null, (r = this._helpSlotTextObserver) == null || r.disconnect(), this._helpSlotTextObserver = null, (i = this._errorSlotTextObserver) == null || i.disconnect(), this._errorSlotTextObserver = null, (s = this._externalRefsObserver) == null || s.disconnect(), this._externalRefsObserver = null;
460
+ }
461
+ willUpdate(e) {
462
+ e.has("value") && this._syncFromValue(), (e.has("error") || !this.hasUpdated) && (this._announcedError = this.error ?? "");
463
+ }
464
+ firstUpdated(e) {
465
+ super.firstUpdated(e), this._seedSlotStateSync(), this._syncHostAriaSemantics();
466
+ }
467
+ updated(e) {
468
+ super.updated(e), e.has("error") && (e.get("error") && this.error ? (this._announcedError = "", requestAnimationFrame(() => {
469
+ this._announcedError = this.error ?? "";
470
+ })) : this._announcedError = this.error ?? ""), this._syncHostAriaSemantics();
471
+ }
472
+ // ─── Sync ────────────────────────────────────────────────────────────────
473
+ /** @internal */
474
+ _syncFromValue() {
475
+ const e = E(this.value);
476
+ e && (this._hsv = e), this._inputValue = M(this._hsv, this.format, this.opacity), this._internals.setFormValue(this.value);
477
+ }
478
+ // ─── Slot state seeding ──────────────────────────────────────────────────
479
+ /**
480
+ * Synchronous slot-state seed. Mirrors the side effects of the slotchange
481
+ * handlers but is driven by direct `slot.assignedNodes()` reads so we can
482
+ * populate state BEFORE the microtask `slotchange` events fire after the
483
+ * first render.
484
+ * @internal
485
+ */
486
+ _seedSlotStateSync() {
487
+ const e = this.shadowRoot;
488
+ if (!e) return;
489
+ const t = e.querySelector('slot[name="label"]');
490
+ t && this._captureLabelSlot(t);
491
+ const r = e.querySelector('slot[name="help-text"]');
492
+ r && this._captureHelpSlot(r);
493
+ const i = e.querySelector('slot[name="error"]');
494
+ i && this._captureErrorSlot(i);
495
+ }
496
+ /** @internal */
497
+ _captureLabelSlot(e) {
498
+ const t = e.assignedNodes({ flatten: !0 }).filter((s) => s.nodeType === Node.ELEMENT_NODE), r = t.length > 0 ? t : [], i = r.map((s) => y(s)).filter((s) => s.length > 0).join(" ").replace(/\s+/g, " ").trim();
499
+ this._slottedLabelEls = r, this._labelSlotText = i, this._hasLabelSlot = i.length > 0, this._installLabelSlotTextObserver(r);
500
+ }
501
+ /** @internal */
502
+ _captureHelpSlot(e) {
503
+ const t = e.assignedNodes({ flatten: !0 }).filter((r) => r.nodeType === Node.ELEMENT_NODE).map((r) => y(r)).filter((r) => r.length > 0).join(" ").replace(/\s+/g, " ").trim();
504
+ this._helpSlotText = t, this._installHelpSlotTextObserver(e);
505
+ }
506
+ /** @internal */
507
+ _captureErrorSlot(e) {
508
+ const t = e.assignedNodes({ flatten: !0 }).filter((r) => r.nodeType === Node.ELEMENT_NODE).map((r) => y(r)).filter((r) => r.length > 0).join(" ").replace(/\s+/g, " ").trim();
509
+ this._errorSlotText = t, this._installErrorSlotTextObserver(e);
510
+ }
511
+ /** @internal */
512
+ _handleLabelSlotChange(e) {
513
+ this._captureLabelSlot(e.target), this._syncHostAriaSemantics();
514
+ }
515
+ /** @internal */
516
+ _handleHelpSlotChange(e) {
517
+ this._captureHelpSlot(e.target), this._syncHostAriaSemantics();
518
+ }
519
+ /** @internal */
520
+ _handleErrorSlotChange(e) {
521
+ this._captureErrorSlot(e.target), this._syncHostAriaSemantics();
522
+ }
523
+ /** @internal */
524
+ _installLabelSlotTextObserver(e) {
525
+ var r;
526
+ if ((r = this._labelSlotTextObserver) == null || r.disconnect(), e.length === 0) {
527
+ this._labelSlotTextObserver = null;
528
+ return;
529
+ }
530
+ const t = new MutationObserver(() => {
531
+ const i = this._slottedLabelEls.map((s) => y(s)).filter((s) => s.length > 0).join(" ").replace(/\s+/g, " ").trim();
532
+ this._labelSlotText = i, this._hasLabelSlot = i.length > 0, this._syncHostAriaSemantics();
533
+ });
534
+ e.forEach((i) => {
535
+ t.observe(i, {
536
+ characterData: !0,
537
+ childList: !0,
538
+ subtree: !0,
539
+ attributes: !0,
540
+ attributeFilter: ["aria-hidden", "hidden"]
541
+ });
542
+ }), this._labelSlotTextObserver = t;
543
+ }
544
+ /** @internal */
545
+ _installHelpSlotTextObserver(e) {
546
+ var r;
547
+ (r = this._helpSlotTextObserver) == null || r.disconnect();
548
+ const t = new MutationObserver(() => {
549
+ const i = e.assignedNodes({ flatten: !0 }).filter((s) => s.nodeType === Node.ELEMENT_NODE).map((s) => y(s)).filter((s) => s.length > 0).join(" ").replace(/\s+/g, " ").trim();
550
+ this._helpSlotText = i, this._syncHostAriaSemantics();
551
+ });
552
+ e.assignedNodes({ flatten: !0 }).forEach((i) => {
553
+ i.nodeType === Node.ELEMENT_NODE && t.observe(i, {
554
+ characterData: !0,
555
+ childList: !0,
556
+ subtree: !0,
557
+ attributes: !0,
558
+ attributeFilter: ["aria-hidden", "hidden"]
559
+ });
560
+ }), this._helpSlotTextObserver = t;
561
+ }
562
+ /** @internal */
563
+ _installErrorSlotTextObserver(e) {
564
+ var r;
565
+ (r = this._errorSlotTextObserver) == null || r.disconnect();
566
+ const t = new MutationObserver(() => {
567
+ const i = e.assignedNodes({ flatten: !0 }).filter((s) => s.nodeType === Node.ELEMENT_NODE).map((s) => y(s)).filter((s) => s.length > 0).join(" ").replace(/\s+/g, " ").trim();
568
+ this._errorSlotText = i, this._syncHostAriaSemantics();
569
+ });
570
+ e.assignedNodes({ flatten: !0 }).forEach((i) => {
571
+ i.nodeType === Node.ELEMENT_NODE && t.observe(i, {
572
+ characterData: !0,
573
+ childList: !0,
574
+ subtree: !0,
575
+ attributes: !0,
576
+ attributeFilter: ["aria-hidden", "hidden"]
577
+ });
578
+ }), this._errorSlotTextObserver = t;
579
+ }
580
+ /**
581
+ * Watches the elements referenced by `aria-labelledby` / `aria-describedby`
582
+ * for in-place text mutations so the announced name/description stays
583
+ * accurate when consumers rewrite external label text without swapping the
584
+ * referenced node.
585
+ * @internal
586
+ */
587
+ _installExternalRefsObserver(e) {
588
+ var r;
589
+ if ((r = this._externalRefsObserver) == null || r.disconnect(), e.length === 0) {
590
+ this._externalRefsObserver = null;
591
+ return;
592
+ }
593
+ const t = new MutationObserver(() => {
594
+ this._syncHostAriaSemantics();
595
+ });
596
+ e.forEach((i) => {
597
+ t.observe(i, {
598
+ characterData: !0,
599
+ childList: !0,
600
+ subtree: !0,
601
+ attributes: !0,
602
+ attributeFilter: ["aria-hidden", "hidden"]
603
+ });
604
+ }), this._externalRefsObserver = t;
605
+ }
606
+ // ─── Host-canonical ARIA-delegation sync ─────────────────────────────────
607
+ /**
608
+ * Compute and apply the cross-shadow ARIA contract for the trigger surface.
609
+ *
610
+ * Naming precedence (highest first):
611
+ * 1. consumer `aria-labelledby` (when at least one IDREF resolves)
612
+ * 2. consumer `aria-label`
613
+ * 3. `accessible-label` property
614
+ * 4. `label` property
615
+ * 5. slotted `<slot name="label">` text
616
+ * 6. `labelTrigger(value)` (default)
617
+ *
618
+ * Description channel (joined, deduped):
619
+ * - consumer `aria-describedby` resolved text
620
+ * - `help-text` property + slotted help-text
621
+ * - `error` property + slotted error (when present)
622
+ *
623
+ * Modern path (`_supportsIdrefRefs === true`): host owns the announced
624
+ * surface via `internals.aria*` + IDL refs. Trigger button mirrors only.
625
+ *
626
+ * Fallback path (`_supportsIdrefRefs === false`): trigger button carries
627
+ * the full aria contract via attribute mirrors.
628
+ * @internal
629
+ */
630
+ _syncHostAriaSemantics() {
631
+ var v;
632
+ const e = this._internals, t = ((v = this.getAttribute("aria-label")) == null ? void 0 : v.trim()) || "", r = this.getAttribute("aria-labelledby"), i = this.getAttribute("aria-describedby"), s = P(this, r), h = P(this, i), l = s.length > 0;
633
+ let n;
634
+ l ? n = s.map((u) => y(u)).filter((u) => u.length > 0).join(" ").replace(/\s+/g, " ").trim() || null : t ? n = t : this.accessibleLabel ? n = this.accessibleLabel : this.label ? n = this.label : this._hasLabelSlot && this._labelSlotText ? n = this._labelSlotText : n = this.labelTrigger(this._inputValue);
635
+ const p = h.length > 0 ? h.map((u) => y(u)).filter((u) => u.length > 0).join(" ").replace(/\s+/g, " ").trim() : "";
636
+ this._externalDescText = p, this._installExternalRefsObserver([...s, ...h]);
637
+ const d = !!(this.error || this._errorSlotText), g = !e.validity.valid || d;
638
+ if (this._supportsIdrefRefs) {
639
+ e.ariaLabel = n ?? null, e.ariaInvalid = g ? "true" : "false", e.ariaDisabled = this.disabled ? "true" : "false", e.ariaRequired = this.required ? "true" : "false";
640
+ const u = e;
641
+ u.ariaLabelledByElements = l ? s : null, u.ariaDescribedByElements = h.length > 0 ? h : null, this._fallbackTriggerAriaLabelledBy = null, this._fallbackTriggerAriaDescribedBy = null, this._fallbackTriggerAriaLabel = null;
642
+ } else {
643
+ e.ariaLabel = null, e.ariaInvalid = null, e.ariaDisabled = null, e.ariaRequired = null;
644
+ const u = e;
645
+ u.ariaLabelledByElements = null, u.ariaDescribedByElements = null, this._fallbackTriggerAriaLabelledBy = l ? r : null, this._fallbackTriggerAriaDescribedBy = i || null, this._fallbackTriggerAriaLabel = n;
646
+ }
647
+ }
648
+ // ─── Effective text helpers (rendered into hidden host-desc span) ────────
649
+ /** @internal */
650
+ _effectiveHelpText() {
651
+ var e;
652
+ return (((e = this.helpText) == null ? void 0 : e.trim()) || this._helpSlotText || "").trim();
653
+ }
654
+ /** @internal */
655
+ _effectiveErrorText() {
656
+ var e;
657
+ return (((e = this._announcedError) == null ? void 0 : e.trim()) || this._errorSlotText || "").trim();
658
+ }
659
+ /** @internal */
660
+ _onFormDisabled(e) {
661
+ this.disabled = e;
662
+ }
663
+ /** @internal */
664
+ _onFormReset() {
665
+ this.value = "#000000", this._internals.setFormValue(null), this._resetInteractionState();
666
+ }
667
+ /** @internal */
668
+ _onFormStateRestore(e, t) {
669
+ typeof e == "string" && (this.value = e);
670
+ }
671
+ /** @internal */
672
+ _updateValidity() {
673
+ var r, i;
674
+ const e = ((r = this.shadowRoot) == null ? void 0 : r.querySelector('[part="trigger"]')) ?? ((i = this.shadowRoot) == null ? void 0 : i.querySelector('[part="grid"]')) ?? void 0, t = (this.error || this._errorSlotText || "").trim();
675
+ this.required && !this.value ? this._internals.setValidity(
676
+ { valueMissing: !0, customError: !!t },
677
+ t || "Please select a color.",
678
+ e
679
+ ) : t ? this._internals.setValidity({ customError: !0 }, t, e) : this._internals.setValidity({}), this._syncHostAriaSemantics();
680
+ }
681
+ /** @internal */
682
+ _commit(e) {
683
+ const t = M(this._hsv, this.format, this.opacity);
684
+ this.value = t, this._inputValue = t, this._internals.setFormValue(t), this._handleInteractionInput();
685
+ const i = {
686
+ bubbles: !0,
687
+ composed: !0,
688
+ detail: { value: t }
689
+ };
690
+ e === "drag" ? this.dispatchEvent(new CustomEvent("hx-input", i)) : this.dispatchEvent(new CustomEvent("hx-change", i));
691
+ }
692
+ // ─── Panel open/close ────────────────────────────────────────────────────
693
+ /** @internal */
694
+ _show() {
695
+ this._open || this.inline || (this._open = !0, typeof document < "u" && document.addEventListener("click", this._boundDocumentClick, !0), this.updateComplete.then(() => {
696
+ var r;
697
+ const e = (r = this.shadowRoot) == null ? void 0 : r.querySelector(".panel"), t = (e == null ? void 0 : e.querySelector("input, button")) ?? e;
698
+ t == null || t.focus();
699
+ }));
700
+ }
701
+ /** @internal */
702
+ _hide() {
703
+ this._open && (this._open = !1, typeof document < "u" && document.removeEventListener("click", this._boundDocumentClick, !0));
704
+ }
705
+ /** @internal */
706
+ _handleDocumentClick(e) {
707
+ this._open && (e.composedPath().includes(this) || this._hide());
708
+ }
709
+ /** @internal */
710
+ _handleTriggerClick(e) {
711
+ e.stopPropagation(), this._open ? this._hide() : this._show();
712
+ }
713
+ /** @internal */
714
+ _handlePanelKeydown(e) {
715
+ var t, r;
716
+ e.key === "Escape" && (e.stopPropagation(), this._hide(), (r = (t = this.shadowRoot) == null ? void 0 : t.querySelector('[part="trigger"]')) == null || r.focus());
717
+ }
718
+ // ─── Gradient grid dragging ───────────────────────────────────────────────
719
+ /** @internal */
720
+ _handleGridPointerDown(e) {
721
+ var t;
722
+ this.disabled || (e.preventDefault(), this._draggingGrid = !0, this._dragRect = ((t = this._gridEl) == null ? void 0 : t.getBoundingClientRect()) ?? null, e.currentTarget.setPointerCapture(e.pointerId), typeof document < "u" && (document.addEventListener("pointermove", this._boundPointerMove), document.addEventListener("pointerup", this._boundPointerUp)), this._updateGridFromPointer(e));
723
+ }
724
+ /** @internal */
725
+ _updateGridFromPointer(e) {
726
+ var s;
727
+ const t = this._dragRect ?? ((s = this._gridEl) == null ? void 0 : s.getBoundingClientRect());
728
+ if (!t) return;
729
+ const r = x((e.clientX - t.left) / t.width, 0, 1), i = x((e.clientY - t.top) / t.height, 0, 1);
730
+ this._hsv = { ...this._hsv, s: r * 100, v: (1 - i) * 100 }, this._commit("drag"), this.requestUpdate();
731
+ }
732
+ // P0-1: Keyboard support for gradient grid — fixes WCAG 2.1 SC 2.1.1 failure
733
+ /** @internal */
734
+ _handleGridKeydown(e) {
735
+ let t = 0, r = 0;
736
+ if (e.key === "ArrowLeft") t = -1;
737
+ else if (e.key === "ArrowRight") t = 1;
738
+ else if (e.key === "ArrowUp") r = 1;
739
+ else if (e.key === "ArrowDown") r = -1;
740
+ else if (e.key === "PageUp") r = 10;
741
+ else if (e.key === "PageDown") r = -10;
742
+ else if (e.key === "Home") {
743
+ this._hsv = { ...this._hsv, s: 0, v: 100 }, this._commit("change");
744
+ return;
745
+ } else if (e.key === "End") {
746
+ this._hsv = { ...this._hsv, s: 100, v: 0 }, this._commit("change");
747
+ return;
748
+ }
749
+ (t !== 0 || r !== 0) && (e.preventDefault(), this._hsv = {
750
+ ...this._hsv,
751
+ s: x(this._hsv.s + t, 0, 100),
752
+ v: x(this._hsv.v + r, 0, 100)
753
+ }, this._commit("change"));
754
+ }
755
+ // ─── Hue slider dragging ─────────────────────────────────────────────────
756
+ /** @internal */
757
+ _handleHuePointerDown(e) {
758
+ var t;
759
+ this.disabled || (e.preventDefault(), this._draggingHue = !0, this._dragRect = ((t = this._hueSliderEl) == null ? void 0 : t.getBoundingClientRect()) ?? null, e.currentTarget.setPointerCapture(e.pointerId), typeof document < "u" && (document.addEventListener("pointermove", this._boundPointerMove), document.addEventListener("pointerup", this._boundPointerUp)), this._updateHueFromPointer(e));
760
+ }
761
+ /** @internal */
762
+ _updateHueFromPointer(e) {
763
+ var i;
764
+ const t = this._dragRect ?? ((i = this._hueSliderEl) == null ? void 0 : i.getBoundingClientRect());
765
+ if (!t) return;
766
+ const r = x((e.clientX - t.left) / t.width, 0, 1);
767
+ this._hsv = { ...this._hsv, h: r * 360 }, this._commit("drag"), this.requestUpdate();
768
+ }
769
+ // ─── Opacity slider dragging ──────────────────────────────────────────────
770
+ /** @internal */
771
+ _handleOpacityPointerDown(e) {
772
+ var t;
773
+ this.disabled || (e.preventDefault(), this._draggingOpacity = !0, this._dragRect = ((t = this._opacitySliderEl) == null ? void 0 : t.getBoundingClientRect()) ?? null, e.currentTarget.setPointerCapture(e.pointerId), typeof document < "u" && (document.addEventListener("pointermove", this._boundPointerMove), document.addEventListener("pointerup", this._boundPointerUp)), this._updateOpacityFromPointer(e));
774
+ }
775
+ /** @internal */
776
+ _updateOpacityFromPointer(e) {
777
+ var i;
778
+ const t = this._dragRect ?? ((i = this._opacitySliderEl) == null ? void 0 : i.getBoundingClientRect());
779
+ if (!t) return;
780
+ const r = x((e.clientX - t.left) / t.width, 0, 1);
781
+ this._hsv = { ...this._hsv, a: r }, this._commit("drag"), this.requestUpdate();
782
+ }
783
+ // ─── Document-level pointer handlers ─────────────────────────────────────
784
+ /** @internal */
785
+ _handlePointerMove(e) {
786
+ this._draggingGrid ? this._updateGridFromPointer(e) : this._draggingHue ? this._updateHueFromPointer(e) : this._draggingOpacity && this._updateOpacityFromPointer(e);
787
+ }
788
+ /** @internal */
789
+ _handlePointerUp() {
790
+ (this._draggingGrid || this._draggingHue || this._draggingOpacity) && (this._draggingGrid = !1, this._draggingHue = !1, this._draggingOpacity = !1, this._dragRect = null, typeof document < "u" && (document.removeEventListener("pointermove", this._boundPointerMove), document.removeEventListener("pointerup", this._boundPointerUp)), this._commit("change"));
791
+ }
792
+ // ─── Keyboard handling for sliders ───────────────────────────────────────
793
+ /** @internal */
794
+ _handleHueKeydown(e) {
795
+ let t = 0;
796
+ if (e.key === "ArrowLeft" || e.key === "ArrowDown") t = -1;
797
+ else if (e.key === "ArrowRight" || e.key === "ArrowUp") t = 1;
798
+ else if (e.key === "PageDown") t = -10;
799
+ else if (e.key === "PageUp") t = 10;
800
+ else if (e.key === "Home") {
801
+ this._hsv = { ...this._hsv, h: 0 }, this._commit("change");
802
+ return;
803
+ } else if (e.key === "End") {
804
+ this._hsv = { ...this._hsv, h: 360 }, this._commit("change");
805
+ return;
806
+ }
807
+ t !== 0 && (e.preventDefault(), this._hsv = { ...this._hsv, h: x(this._hsv.h + t, 0, 360) }, this._commit("change"));
808
+ }
809
+ /** @internal */
810
+ _handleOpacityKeydown(e) {
811
+ let t = 0;
812
+ if (e.key === "ArrowLeft" || e.key === "ArrowDown") t = -0.01;
813
+ else if (e.key === "ArrowRight" || e.key === "ArrowUp") t = 0.01;
814
+ else if (e.key === "PageDown") t = -0.1;
815
+ else if (e.key === "PageUp") t = 0.1;
816
+ else if (e.key === "Home") {
817
+ this._hsv = { ...this._hsv, a: 0 }, this._commit("change");
818
+ return;
819
+ } else if (e.key === "End") {
820
+ this._hsv = { ...this._hsv, a: 1 }, this._commit("change");
821
+ return;
822
+ }
823
+ t !== 0 && (e.preventDefault(), this._hsv = { ...this._hsv, a: x(this._hsv.a + t, 0, 1) }, this._commit("change"));
824
+ }
825
+ // ─── Input ───────────────────────────────────────────────────────────────
826
+ // P1-7: Bound to @input (was @change) for real-time color preview while typing
827
+ /** @internal */
828
+ _handleInputChange(e) {
829
+ const t = e.target, r = E(t.value.trim());
830
+ r && (this._hsv = r, this._commit("change")), this._inputValue = t.value;
831
+ }
832
+ /** @internal */
833
+ _handleInputBlur(e) {
834
+ const t = e.target, r = E(t.value.trim());
835
+ r ? (this._hsv = r, this._commit("change")) : this._inputValue = M(this._hsv, this.format, this.opacity);
836
+ }
837
+ /** @internal */
838
+ _handleFormatCycle() {
839
+ const e = ["hex", "rgb", "hsl", "hsv"], t = e.indexOf(this.format), r = e[(t + 1) % e.length];
840
+ r !== void 0 && (this.format = r), this._inputValue = M(this._hsv, this.format, this.opacity);
841
+ }
842
+ // ─── Swatches ────────────────────────────────────────────────────────────
843
+ /** @internal */
844
+ _handleSwatchClick(e) {
845
+ const t = E(e);
846
+ t && (this._hsv = t, this._commit("change"));
847
+ }
848
+ // ─── Computed values ──────────────────────────────────────────────────────
849
+ /** @internal */
850
+ _hueColor() {
851
+ return `hsl(${Math.round(this._hsv.h)}, 100%, 50%)`;
852
+ }
853
+ /** @internal */
854
+ _previewColor() {
855
+ const e = D(this._hsv);
856
+ return this.opacity && this._hsv.a < 1 ? `rgb(${e.r} ${e.g} ${e.b} / ${Math.round(this._hsv.a * 100) / 100})` : `rgb(${e.r} ${e.g} ${e.b})`;
857
+ }
858
+ // ─── Render helpers ───────────────────────────────────────────────────────
859
+ /** @internal */
860
+ _renderGrid() {
861
+ const e = `${this._hsv.s}%`, t = `${100 - this._hsv.v}%`, r = this._hueColor();
862
+ return b`
863
+ <div
864
+ part="grid"
865
+ class="gradient-grid"
866
+ role="slider"
867
+ tabindex="0"
868
+ aria-label=${this.labelGradient}
869
+ aria-valuemin="0"
870
+ aria-valuemax="100"
871
+ aria-valuenow=${Math.round(this._hsv.s)}
872
+ aria-valuetext="Saturation ${Math.round(this._hsv.s)}%, Value ${Math.round(this._hsv.v)}%"
873
+ @pointerdown=${this._handleGridPointerDown}
874
+ @keydown=${this._handleGridKeydown}
875
+ >
876
+ <div class="gradient-grid-bg" style=${m({ "--_hue-color": r })}></div>
877
+ <div
878
+ class="gradient-thumb"
879
+ style=${m({ "--_thumb-x": e, "--_thumb-y": t })}
880
+ aria-hidden="true"
881
+ ></div>
882
+ </div>
883
+ `;
884
+ }
885
+ /** @internal */
886
+ _renderHueSlider() {
887
+ const e = `${this._hsv.h / 360 * 100}%`, t = this._hueColor();
888
+ return b`
889
+ <div
890
+ part="slider hue-slider"
891
+ class="slider-track hue-track"
892
+ role="slider"
893
+ tabindex="0"
894
+ aria-label=${this.labelHue}
895
+ aria-valuemin="0"
896
+ aria-valuemax="360"
897
+ aria-valuenow=${Math.round(this._hsv.h)}
898
+ aria-valuetext="${Math.round(this._hsv.h)}°"
899
+ @pointerdown=${this._handleHuePointerDown}
900
+ @keydown=${this._handleHueKeydown}
901
+ >
902
+ <div
903
+ class="slider-thumb"
904
+ style=${m({ "--_slider-pct": e, "--_thumb-color": t })}
905
+ aria-hidden="true"
906
+ ></div>
907
+ </div>
908
+ `;
909
+ }
910
+ /** @internal */
911
+ _renderOpacitySlider() {
912
+ if (!this.opacity) return $;
913
+ const e = `${this._hsv.a * 100}%`, t = D(this._hsv), r = `rgb(${t.r} ${t.g} ${t.b} / ${Math.round(this._hsv.a * 100) / 100})`, i = this._hueColor();
914
+ return b`
915
+ <div
916
+ part="slider opacity-slider"
917
+ class="slider-track opacity-track"
918
+ role="slider"
919
+ tabindex="0"
920
+ aria-label=${this.labelOpacity}
921
+ aria-valuemin="0"
922
+ aria-valuemax="100"
923
+ aria-valuenow=${Math.round(this._hsv.a * 100)}
924
+ aria-valuetext="${Math.round(this._hsv.a * 100)}%"
925
+ style=${m({ "--_hue-color": i })}
926
+ @pointerdown=${this._handleOpacityPointerDown}
927
+ @keydown=${this._handleOpacityKeydown}
928
+ >
929
+ <div
930
+ class="slider-thumb"
931
+ style=${m({ "--_slider-pct": e, "--_thumb-color": r })}
932
+ aria-hidden="true"
933
+ ></div>
934
+ </div>
935
+ `;
936
+ }
937
+ /** @internal */
938
+ _renderSwatches() {
939
+ var e;
940
+ return (e = this.swatches) != null && e.length ? b`
941
+ <div part="swatches" class="swatches" role="group" aria-label=${this.labelSwatches}>
942
+ ${this.swatches.map(
943
+ (t) => b`
944
+ <button
945
+ type="button"
946
+ class="swatch-btn"
947
+ style=${m({ background: t })}
948
+ aria-label=${t}
949
+ title=${t}
950
+ @click=${() => this._handleSwatchClick(t)}
951
+ ></button>
952
+ `
953
+ )}
954
+ </div>
955
+ ` : $;
956
+ }
957
+ /** @internal */
958
+ _renderInput() {
959
+ return b`
960
+ <div part="input" class="input-area">
961
+ <div
962
+ class="input-preview"
963
+ style=${m({ "--_preview-color": this._previewColor() })}
964
+ aria-hidden="true"
965
+ ></div>
966
+ <button
967
+ type="button"
968
+ class="format-btn"
969
+ aria-label=${this.labelSwitchFormat}
970
+ title="Switch format"
971
+ @click=${this._handleFormatCycle}
972
+ >
973
+ ${this.format}
974
+ </button>
975
+ <input
976
+ type="text"
977
+ class="color-input"
978
+ .value=${this._inputValue}
979
+ aria-label=${this.labelColorValue}
980
+ autocomplete="off"
981
+ spellcheck="false"
982
+ @input=${this._handleInputChange}
983
+ @blur=${this._handleInputBlur}
984
+ />
985
+ </div>
986
+ `;
987
+ }
988
+ /** @internal */
989
+ _renderPanel() {
990
+ return b`
991
+ <div
992
+ class="panel"
993
+ role="group"
994
+ aria-label=${this.labelPicker}
995
+ tabindex="-1"
996
+ @keydown=${this._handlePanelKeydown}
997
+ >
998
+ ${this.swatchesOnly ? $ : b`${this._renderGrid()} ${this._renderHueSlider()} ${this._renderOpacitySlider()}`}
999
+ ${this._renderSwatches()} ${this._renderInput()}
1000
+ </div>
1001
+ `;
1002
+ }
1003
+ // ─── Description-channel helpers ─────────────────────────────────────────
1004
+ /**
1005
+ * Builds the synthesized host-level description span text by joining the
1006
+ * external (consumer-resolved) description text with help and error text.
1007
+ * The hidden span lives in the shadow root so AT can resolve a single
1008
+ * `aria-describedby` token to it without leaving the host's name surface.
1009
+ * @internal
1010
+ */
1011
+ _hostDescriptionText() {
1012
+ return [
1013
+ this._externalDescText,
1014
+ this._effectiveHelpText(),
1015
+ this._effectiveErrorText()
1016
+ ].filter((t) => t.length > 0).join(" ").replace(/\s+/g, " ").trim();
1017
+ }
1018
+ /** @internal */
1019
+ _renderHostDescriptionSpan() {
1020
+ const e = this._hostDescriptionText();
1021
+ return e ? b`<span
1022
+ id=${this._hostDescId}
1023
+ class="hx-visually-hidden"
1024
+ aria-hidden="true"
1025
+ data-hx-host-desc
1026
+ style="position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0;"
1027
+ >${e}</span
1028
+ >` : $;
1029
+ }
1030
+ /** @internal */
1031
+ _renderLabelSlot() {
1032
+ return b`<span class="hx-color-picker__label" part="label">
1033
+ <slot name="label" @slotchange=${this._handleLabelSlotChange}>${this.label ?? ""}</slot>
1034
+ </span>`;
1035
+ }
1036
+ /** @internal */
1037
+ _renderHelpSlot() {
1038
+ const e = this._effectiveHelpText();
1039
+ return b`<span
1040
+ id=${this._helpId}
1041
+ class="hx-color-picker__help"
1042
+ part="help-text"
1043
+ ?hidden=${!e}
1044
+ >
1045
+ <slot name="help-text" @slotchange=${this._handleHelpSlotChange}>${this.helpText ?? ""}</slot>
1046
+ </span>`;
1047
+ }
1048
+ /** @internal */
1049
+ _renderErrorSlot() {
1050
+ const e = this._effectiveErrorText();
1051
+ return b`<span
1052
+ id=${this._errorId}
1053
+ class="hx-color-picker__error"
1054
+ part="error"
1055
+ role="alert"
1056
+ aria-live="assertive"
1057
+ aria-atomic="true"
1058
+ ?hidden=${!e}
1059
+ >
1060
+ <slot name="error" @slotchange=${this._handleErrorSlotChange}
1061
+ >${this._announcedError ?? ""}</slot
1062
+ >
1063
+ </span>`;
1064
+ }
1065
+ // ─── Main render ─────────────────────────────────────────────────────────
1066
+ render() {
1067
+ const e = this._previewColor(), r = this._hostDescriptionText() ? this._hostDescId : void 0, i = this._supportsIdrefRefs ? this.labelTrigger(this._inputValue) : this._fallbackTriggerAriaLabel ?? this.labelTrigger(this._inputValue), s = this._supportsIdrefRefs ? void 0 : this._fallbackTriggerAriaLabelledBy ?? void 0, h = this._supportsIdrefRefs ? r : [this._fallbackTriggerAriaDescribedBy, r].filter((n) => !!n && n.length > 0).join(" ") || void 0, l = !this._internals.validity.valid || !!this._effectiveErrorText();
1068
+ return this.inline ? b`
1069
+ <div style=${m({ "--_preview-color": e })}>
1070
+ ${this._renderLabelSlot()} ${this._renderHostDescriptionSpan()} ${this._renderPanel()}
1071
+ ${this._renderHelpSlot()} ${this._renderErrorSlot()}
1072
+ </div>
1073
+ ` : b`
1074
+ ${this._renderLabelSlot()} ${this._renderHostDescriptionSpan()}
1075
+ <button
1076
+ part="trigger"
1077
+ type="button"
1078
+ class="trigger"
1079
+ aria-label=${i}
1080
+ aria-labelledby=${H(s)}
1081
+ aria-describedby=${H(h)}
1082
+ aria-expanded=${this._open ? "true" : "false"}
1083
+ aria-invalid=${l ? "true" : "false"}
1084
+ ?disabled=${this.disabled}
1085
+ style=${m({ "--_preview-color": e })}
1086
+ @click=${this._handleTriggerClick}
1087
+ >
1088
+ <slot name="trigger">
1089
+ <span class="trigger-swatch" aria-hidden="true"></span>
1090
+ <span class="trigger-label">${this._inputValue}</span>
1091
+ </slot>
1092
+ </button>
1093
+ ${this._renderHelpSlot()} ${this._renderErrorSlot()}
1094
+ ${this._open ? this._renderPanel() : $}
1095
+ `;
1096
+ }
1097
+ };
1098
+ o.styles = [U, F];
1099
+ o.formAssociated = !0;
1100
+ o.__testSupportsIdrefRefsOverride = null;
1101
+ a([
1102
+ c({ type: String, reflect: !0 })
1103
+ ], o.prototype, "value", 2);
1104
+ a([
1105
+ c({ type: String, reflect: !0 })
1106
+ ], o.prototype, "format", 2);
1107
+ a([
1108
+ c({ type: Boolean, reflect: !0 })
1109
+ ], o.prototype, "opacity", 2);
1110
+ a([
1111
+ c({ attribute: !1 })
1112
+ ], o.prototype, "swatches", 2);
1113
+ a([
1114
+ c({ type: Boolean, reflect: !0, attribute: "swatches-only" })
1115
+ ], o.prototype, "swatchesOnly", 2);
1116
+ a([
1117
+ c({ type: Boolean, reflect: !0 })
1118
+ ], o.prototype, "disabled", 2);
1119
+ a([
1120
+ c({ type: String, reflect: !0 })
1121
+ ], o.prototype, "name", 2);
1122
+ a([
1123
+ c({ type: Boolean, reflect: !0 })
1124
+ ], o.prototype, "inline", 2);
1125
+ a([
1126
+ c({ type: Boolean, reflect: !0 })
1127
+ ], o.prototype, "required", 2);
1128
+ a([
1129
+ c({ type: String, attribute: "label-gradient" })
1130
+ ], o.prototype, "labelGradient", 2);
1131
+ a([
1132
+ c({ type: String, attribute: "label-hue" })
1133
+ ], o.prototype, "labelHue", 2);
1134
+ a([
1135
+ c({ type: String, attribute: "label-opacity" })
1136
+ ], o.prototype, "labelOpacity", 2);
1137
+ a([
1138
+ c({ type: String, attribute: "label-swatches" })
1139
+ ], o.prototype, "labelSwatches", 2);
1140
+ a([
1141
+ c({ type: String, attribute: "label-switch-format" })
1142
+ ], o.prototype, "labelSwitchFormat", 2);
1143
+ a([
1144
+ c({ type: String, attribute: "label-color-value" })
1145
+ ], o.prototype, "labelColorValue", 2);
1146
+ a([
1147
+ c({ type: String, attribute: "label-picker" })
1148
+ ], o.prototype, "labelPicker", 2);
1149
+ a([
1150
+ c({ type: String, reflect: !0 })
1151
+ ], o.prototype, "label", 2);
1152
+ a([
1153
+ c({ type: String, attribute: "accessible-label" })
1154
+ ], o.prototype, "accessibleLabel", 2);
1155
+ a([
1156
+ c({ type: String, attribute: "help-text" })
1157
+ ], o.prototype, "helpText", 2);
1158
+ a([
1159
+ c({ type: String, reflect: !0 })
1160
+ ], o.prototype, "error", 2);
1161
+ a([
1162
+ c({ attribute: !1 })
1163
+ ], o.prototype, "labelTrigger", 2);
1164
+ a([
1165
+ f()
1166
+ ], o.prototype, "_hsv", 2);
1167
+ a([
1168
+ f()
1169
+ ], o.prototype, "_open", 2);
1170
+ a([
1171
+ f()
1172
+ ], o.prototype, "_inputValue", 2);
1173
+ a([
1174
+ f()
1175
+ ], o.prototype, "_supportsIdrefRefs", 2);
1176
+ a([
1177
+ f()
1178
+ ], o.prototype, "_slottedLabelEls", 2);
1179
+ a([
1180
+ f()
1181
+ ], o.prototype, "_labelSlotText", 2);
1182
+ a([
1183
+ f()
1184
+ ], o.prototype, "_hasLabelSlot", 2);
1185
+ a([
1186
+ f()
1187
+ ], o.prototype, "_helpSlotText", 2);
1188
+ a([
1189
+ f()
1190
+ ], o.prototype, "_errorSlotText", 2);
1191
+ a([
1192
+ f()
1193
+ ], o.prototype, "_announcedError", 2);
1194
+ a([
1195
+ f()
1196
+ ], o.prototype, "_fallbackTriggerAriaLabelledBy", 2);
1197
+ a([
1198
+ f()
1199
+ ], o.prototype, "_fallbackTriggerAriaDescribedBy", 2);
1200
+ a([
1201
+ f()
1202
+ ], o.prototype, "_fallbackTriggerAriaLabel", 2);
1203
+ a([
1204
+ f()
1205
+ ], o.prototype, "_externalDescText", 2);
1206
+ a([
1207
+ C('[part="grid"]')
1208
+ ], o.prototype, "_gridEl", 2);
1209
+ a([
1210
+ C('[part="hue-slider"]')
1211
+ ], o.prototype, "_hueSliderEl", 2);
1212
+ a([
1213
+ C('[part="opacity-slider"]')
1214
+ ], o.prototype, "_opacitySliderEl", 2);
1215
+ o = a([
1216
+ R("hx-color-picker")
1217
+ ], o);
1218
+ export {
1219
+ o as H
1220
+ };
1221
+ //# sourceMappingURL=hx-color-picker-Dk4cBwYQ.js.map