@helixui/library 1.1.2 → 2.0.0-next.30

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 (691) hide show
  1. package/custom-elements.json +2962 -1965
  2. package/dist/base/helix-element.d.ts +134 -0
  3. package/dist/base/helix-element.d.ts.map +1 -0
  4. package/dist/base/id-counter.d.ts +32 -0
  5. package/dist/base/id-counter.d.ts.map +1 -0
  6. package/dist/base/index.d.ts +4 -0
  7. package/dist/base/index.d.ts.map +1 -0
  8. package/dist/base/styles.d.ts +19 -0
  9. package/dist/base/styles.d.ts.map +1 -0
  10. package/dist/components/hx-accordion/hx-accordion-item.d.ts +3 -0
  11. package/dist/components/hx-accordion/hx-accordion-item.d.ts.map +1 -1
  12. package/dist/components/hx-accordion/hx-accordion.d.ts +4 -1
  13. package/dist/components/hx-accordion/hx-accordion.d.ts.map +1 -1
  14. package/dist/components/hx-accordion/index.js +1 -1
  15. package/dist/components/hx-action-bar/hx-action-bar.d.ts +1 -1
  16. package/dist/components/hx-action-bar/hx-action-bar.d.ts.map +1 -1
  17. package/dist/components/hx-action-bar/index.js +1 -1
  18. package/dist/components/hx-alert/hx-alert.d.ts +10 -5
  19. package/dist/components/hx-alert/hx-alert.d.ts.map +1 -1
  20. package/dist/components/hx-alert/hx-alert.styles.d.ts.map +1 -1
  21. package/dist/components/hx-alert/index.js +1 -1
  22. package/dist/components/hx-avatar/hx-avatar.d.ts.map +1 -1
  23. package/dist/components/hx-avatar/hx-avatar.styles.d.ts.map +1 -1
  24. package/dist/components/hx-avatar/index.js +1 -1
  25. package/dist/components/hx-badge/hx-badge.d.ts.map +1 -1
  26. package/dist/components/hx-badge/hx-badge.styles.d.ts.map +1 -1
  27. package/dist/components/hx-badge/index.js +1 -1
  28. package/dist/components/hx-banner/hx-banner.d.ts +15 -5
  29. package/dist/components/hx-banner/hx-banner.d.ts.map +1 -1
  30. package/dist/components/hx-banner/hx-banner.styles.d.ts.map +1 -1
  31. package/dist/components/hx-banner/index.js +1 -1
  32. package/dist/components/hx-breadcrumb/hx-breadcrumb-item.d.ts +1 -0
  33. package/dist/components/hx-breadcrumb/hx-breadcrumb-item.d.ts.map +1 -1
  34. package/dist/components/hx-breadcrumb/hx-breadcrumb.d.ts +42 -11
  35. package/dist/components/hx-breadcrumb/hx-breadcrumb.d.ts.map +1 -1
  36. package/dist/components/hx-breadcrumb/index.js +1 -1
  37. package/dist/components/hx-button/hx-button.d.ts +22 -13
  38. package/dist/components/hx-button/hx-button.d.ts.map +1 -1
  39. package/dist/components/hx-button/hx-button.styles.d.ts.map +1 -1
  40. package/dist/components/hx-button/index.js +1 -1
  41. package/dist/components/hx-button-group/hx-button-group.d.ts +3 -6
  42. package/dist/components/hx-button-group/hx-button-group.d.ts.map +1 -1
  43. package/dist/components/hx-button-group/index.js +1 -1
  44. package/dist/components/hx-card/hx-card.d.ts +7 -7
  45. package/dist/components/hx-card/hx-card.d.ts.map +1 -1
  46. package/dist/components/hx-card/index.js +1 -1
  47. package/dist/components/hx-carousel/hx-carousel-item.d.ts.map +1 -1
  48. package/dist/components/hx-carousel/hx-carousel.d.ts +2 -2
  49. package/dist/components/hx-carousel/hx-carousel.d.ts.map +1 -1
  50. package/dist/components/hx-carousel/index.js +1 -1
  51. package/dist/components/hx-checkbox/hx-checkbox.d.ts +18 -18
  52. package/dist/components/hx-checkbox/hx-checkbox.d.ts.map +1 -1
  53. package/dist/components/hx-checkbox/hx-checkbox.styles.d.ts.map +1 -1
  54. package/dist/components/hx-checkbox/index.js +1 -1
  55. package/dist/components/hx-checkbox-group/hx-checkbox-group.d.ts +8 -3
  56. package/dist/components/hx-checkbox-group/hx-checkbox-group.d.ts.map +1 -1
  57. package/dist/components/hx-checkbox-group/index.js +1 -1
  58. package/dist/components/hx-clinical-status/hx-clinical-status.d.ts +134 -0
  59. package/dist/components/hx-clinical-status/hx-clinical-status.d.ts.map +1 -0
  60. package/dist/components/hx-clinical-status/hx-clinical-status.styles.d.ts +2 -0
  61. package/dist/components/hx-clinical-status/hx-clinical-status.styles.d.ts.map +1 -0
  62. package/dist/components/hx-clinical-status/index.d.ts +3 -0
  63. package/dist/components/hx-clinical-status/index.d.ts.map +1 -0
  64. package/dist/components/hx-clinical-status/index.js +5 -0
  65. package/dist/components/hx-clinical-status/index.js.map +1 -0
  66. package/dist/components/hx-code-snippet/hx-code-snippet.d.ts.map +1 -1
  67. package/dist/components/hx-code-snippet/hx-code-snippet.styles.d.ts.map +1 -1
  68. package/dist/components/hx-code-snippet/index.js +1 -1
  69. package/dist/components/hx-color-picker/color-utils.d.ts +27 -0
  70. package/dist/components/hx-color-picker/color-utils.d.ts.map +1 -0
  71. package/dist/components/hx-color-picker/hx-color-picker.d.ts +16 -4
  72. package/dist/components/hx-color-picker/hx-color-picker.d.ts.map +1 -1
  73. package/dist/components/hx-color-picker/index.js +1 -1
  74. package/dist/components/hx-combobox/hx-combobox.d.ts +9 -4
  75. package/dist/components/hx-combobox/hx-combobox.d.ts.map +1 -1
  76. package/dist/components/hx-combobox/hx-combobox.styles.d.ts.map +1 -1
  77. package/dist/components/hx-combobox/index.js +1 -1
  78. package/dist/components/hx-container/hx-container.d.ts.map +1 -1
  79. package/dist/components/hx-container/index.js +1 -1
  80. package/dist/components/hx-copy-button/hx-copy-button.d.ts +6 -1
  81. package/dist/components/hx-copy-button/hx-copy-button.d.ts.map +1 -1
  82. package/dist/components/hx-copy-button/index.js +1 -1
  83. package/dist/components/hx-counter/hx-counter.d.ts +20 -3
  84. package/dist/components/hx-counter/hx-counter.d.ts.map +1 -1
  85. package/dist/components/hx-counter/hx-counter.styles.d.ts.map +1 -1
  86. package/dist/components/hx-counter/index.js +1 -1
  87. package/dist/components/hx-data-table/hx-data-table.d.ts +8 -0
  88. package/dist/components/hx-data-table/hx-data-table.d.ts.map +1 -1
  89. package/dist/components/hx-data-table/hx-data-table.styles.d.ts.map +1 -1
  90. package/dist/components/hx-data-table/index.js +1 -1
  91. package/dist/components/hx-date-picker/hx-date-picker.d.ts +40 -3
  92. package/dist/components/hx-date-picker/hx-date-picker.d.ts.map +1 -1
  93. package/dist/components/hx-date-picker/hx-date-picker.styles.d.ts.map +1 -1
  94. package/dist/components/hx-date-picker/index.js +1 -1
  95. package/dist/components/hx-dialog/hx-dialog.d.ts +4 -1
  96. package/dist/components/hx-dialog/hx-dialog.d.ts.map +1 -1
  97. package/dist/components/hx-dialog/index.js +1 -1
  98. package/dist/components/hx-divider/hx-divider.d.ts.map +1 -1
  99. package/dist/components/hx-divider/index.js +1 -1
  100. package/dist/components/hx-drawer/hx-drawer.d.ts +5 -8
  101. package/dist/components/hx-drawer/hx-drawer.d.ts.map +1 -1
  102. package/dist/components/hx-drawer/hx-drawer.styles.d.ts.map +1 -1
  103. package/dist/components/hx-drawer/index.js +1 -1
  104. package/dist/components/hx-dropdown/hx-dropdown.d.ts +14 -1
  105. package/dist/components/hx-dropdown/hx-dropdown.d.ts.map +1 -1
  106. package/dist/components/hx-dropdown/index.js +1 -1
  107. package/dist/components/hx-field/hx-field.d.ts +1 -1
  108. package/dist/components/hx-field/hx-field.d.ts.map +1 -1
  109. package/dist/components/hx-field/index.js +1 -1
  110. package/dist/components/hx-field-label/hx-field-label.d.ts.map +1 -1
  111. package/dist/components/hx-field-label/hx-field-label.styles.d.ts.map +1 -1
  112. package/dist/components/hx-field-label/index.js +1 -1
  113. package/dist/components/hx-file-upload/hx-file-upload.d.ts +8 -9
  114. package/dist/components/hx-file-upload/hx-file-upload.d.ts.map +1 -1
  115. package/dist/components/hx-file-upload/index.js +1 -1
  116. package/dist/components/hx-form/hx-form.d.ts.map +1 -1
  117. package/dist/components/hx-form/index.js +1 -1
  118. package/dist/components/hx-format-date/hx-format-date.d.ts.map +1 -1
  119. package/dist/components/hx-format-date/index.js +1 -1
  120. package/dist/components/hx-grid/hx-grid.d.ts +5 -9
  121. package/dist/components/hx-grid/hx-grid.d.ts.map +1 -1
  122. package/dist/components/hx-grid/index.js +1 -1
  123. package/dist/components/hx-help-text/hx-help-text.d.ts.map +1 -1
  124. package/dist/components/hx-help-text/index.js +1 -1
  125. package/dist/components/hx-icon/hx-icon.d.ts.map +1 -1
  126. package/dist/components/hx-icon/index.js +1 -1
  127. package/dist/components/hx-icon-button/hx-icon-button.d.ts +4 -3
  128. package/dist/components/hx-icon-button/hx-icon-button.d.ts.map +1 -1
  129. package/dist/components/hx-icon-button/index.js +1 -1
  130. package/dist/components/hx-image/hx-image.d.ts.map +1 -1
  131. package/dist/components/hx-image/index.js +1 -1
  132. package/dist/components/hx-link/hx-link.d.ts +1 -1
  133. package/dist/components/hx-link/hx-link.d.ts.map +1 -1
  134. package/dist/components/hx-link/hx-link.styles.d.ts.map +1 -1
  135. package/dist/components/hx-link/index.js +1 -1
  136. package/dist/components/hx-list/hx-list-item.d.ts.map +1 -1
  137. package/dist/components/hx-list/hx-list.d.ts.map +1 -1
  138. package/dist/components/hx-list/index.js +1 -1
  139. package/dist/components/hx-menu/hx-menu-divider.d.ts.map +1 -1
  140. package/dist/components/hx-menu/hx-menu-item.d.ts +5 -0
  141. package/dist/components/hx-menu/hx-menu-item.d.ts.map +1 -1
  142. package/dist/components/hx-menu/hx-menu.d.ts +1 -0
  143. package/dist/components/hx-menu/hx-menu.d.ts.map +1 -1
  144. package/dist/components/hx-menu/hx-menu.styles.d.ts.map +1 -1
  145. package/dist/components/hx-menu/index.js +1 -1
  146. package/dist/components/hx-meter/hx-meter.d.ts +2 -2
  147. package/dist/components/hx-meter/hx-meter.d.ts.map +1 -1
  148. package/dist/components/hx-meter/index.js +1 -1
  149. package/dist/components/hx-nav/hx-nav.d.ts +10 -0
  150. package/dist/components/hx-nav/hx-nav.d.ts.map +1 -1
  151. package/dist/components/hx-nav/index.js +1 -1
  152. package/dist/components/hx-number-input/hx-number-input.d.ts +4 -3
  153. package/dist/components/hx-number-input/hx-number-input.d.ts.map +1 -1
  154. package/dist/components/hx-number-input/index.js +1 -1
  155. package/dist/components/hx-overflow-menu/hx-overflow-menu.d.ts +3 -3
  156. package/dist/components/hx-overflow-menu/hx-overflow-menu.d.ts.map +1 -1
  157. package/dist/components/hx-overflow-menu/hx-overflow-menu.styles.d.ts.map +1 -1
  158. package/dist/components/hx-overflow-menu/index.js +1 -1
  159. package/dist/components/hx-pagination/hx-pagination.d.ts +8 -0
  160. package/dist/components/hx-pagination/hx-pagination.d.ts.map +1 -1
  161. package/dist/components/hx-pagination/hx-pagination.styles.d.ts.map +1 -1
  162. package/dist/components/hx-pagination/index.js +1 -1
  163. package/dist/components/hx-patient-banner/hx-patient-banner.d.ts +113 -0
  164. package/dist/components/hx-patient-banner/hx-patient-banner.d.ts.map +1 -0
  165. package/dist/components/hx-patient-banner/hx-patient-banner.styles.d.ts +2 -0
  166. package/dist/components/hx-patient-banner/hx-patient-banner.styles.d.ts.map +1 -0
  167. package/dist/components/hx-patient-banner/index.d.ts +3 -0
  168. package/dist/components/hx-patient-banner/index.d.ts.map +1 -0
  169. package/dist/components/hx-patient-banner/index.js +5 -0
  170. package/dist/components/hx-patient-banner/index.js.map +1 -0
  171. package/dist/components/hx-phi-field/hx-phi-field.d.ts +97 -0
  172. package/dist/components/hx-phi-field/hx-phi-field.d.ts.map +1 -0
  173. package/dist/components/hx-phi-field/hx-phi-field.styles.d.ts +2 -0
  174. package/dist/components/hx-phi-field/hx-phi-field.styles.d.ts.map +1 -0
  175. package/dist/components/hx-phi-field/index.d.ts +3 -0
  176. package/dist/components/hx-phi-field/index.d.ts.map +1 -0
  177. package/dist/components/hx-phi-field/index.js +5 -0
  178. package/dist/components/hx-phi-field/index.js.map +1 -0
  179. package/dist/components/hx-popover/hx-popover.d.ts +25 -9
  180. package/dist/components/hx-popover/hx-popover.d.ts.map +1 -1
  181. package/dist/components/hx-popover/index.js +1 -1
  182. package/dist/components/hx-popup/hx-popup.d.ts +5 -8
  183. package/dist/components/hx-popup/hx-popup.d.ts.map +1 -1
  184. package/dist/components/hx-popup/index.js +1 -1
  185. package/dist/components/hx-progress-bar/hx-progress-bar.d.ts +2 -0
  186. package/dist/components/hx-progress-bar/hx-progress-bar.d.ts.map +1 -1
  187. package/dist/components/hx-progress-bar/hx-progress-bar.styles.d.ts.map +1 -1
  188. package/dist/components/hx-progress-bar/index.js +1 -1
  189. package/dist/components/hx-progress-ring/hx-progress-ring.d.ts.map +1 -1
  190. package/dist/components/hx-progress-ring/index.js +1 -1
  191. package/dist/components/hx-prose/hx-prose.d.ts +1 -0
  192. package/dist/components/hx-prose/hx-prose.d.ts.map +1 -1
  193. package/dist/components/hx-radio-group/hx-radio-group.d.ts +3 -7
  194. package/dist/components/hx-radio-group/hx-radio-group.d.ts.map +1 -1
  195. package/dist/components/hx-radio-group/hx-radio.d.ts.map +1 -1
  196. package/dist/components/hx-radio-group/hx-radio.styles.d.ts.map +1 -1
  197. package/dist/components/hx-radio-group/index.js +1 -1
  198. package/dist/components/hx-rating/hx-rating.d.ts +3 -3
  199. package/dist/components/hx-rating/hx-rating.d.ts.map +1 -1
  200. package/dist/components/hx-rating/hx-rating.styles.d.ts.map +1 -1
  201. package/dist/components/hx-rating/index.js +1 -1
  202. package/dist/components/hx-select/hx-select.d.ts +17 -11
  203. package/dist/components/hx-select/hx-select.d.ts.map +1 -1
  204. package/dist/components/hx-select/hx-select.styles.d.ts.map +1 -1
  205. package/dist/components/hx-select/index.js +1 -1
  206. package/dist/components/hx-side-nav/hx-nav-item.d.ts +12 -0
  207. package/dist/components/hx-side-nav/hx-nav-item.d.ts.map +1 -1
  208. package/dist/components/hx-side-nav/hx-nav-item.styles.d.ts.map +1 -1
  209. package/dist/components/hx-side-nav/hx-side-nav.d.ts.map +1 -1
  210. package/dist/components/hx-side-nav/hx-side-nav.styles.d.ts.map +1 -1
  211. package/dist/components/hx-side-nav/index.js +1 -1
  212. package/dist/components/hx-skeleton/hx-skeleton.d.ts +2 -2
  213. package/dist/components/hx-skeleton/hx-skeleton.d.ts.map +1 -1
  214. package/dist/components/hx-skeleton/index.js +1 -1
  215. package/dist/components/hx-slider/hx-slider.d.ts +5 -8
  216. package/dist/components/hx-slider/hx-slider.d.ts.map +1 -1
  217. package/dist/components/hx-slider/hx-slider.styles.d.ts.map +1 -1
  218. package/dist/components/hx-slider/index.js +1 -1
  219. package/dist/components/hx-spinner/hx-spinner.d.ts +14 -1
  220. package/dist/components/hx-spinner/hx-spinner.d.ts.map +1 -1
  221. package/dist/components/hx-spinner/hx-spinner.styles.d.ts.map +1 -1
  222. package/dist/components/hx-spinner/index.js +1 -1
  223. package/dist/components/hx-split-button/hx-split-button.d.ts +10 -4
  224. package/dist/components/hx-split-button/hx-split-button.d.ts.map +1 -1
  225. package/dist/components/hx-split-button/hx-split-button.styles.d.ts.map +1 -1
  226. package/dist/components/hx-split-button/index.js +1 -1
  227. package/dist/components/hx-split-panel/hx-split-panel.d.ts.map +1 -1
  228. package/dist/components/hx-split-panel/hx-split-panel.styles.d.ts.map +1 -1
  229. package/dist/components/hx-split-panel/index.js +1 -1
  230. package/dist/components/hx-stack/hx-stack.d.ts.map +1 -1
  231. package/dist/components/hx-stack/index.js +1 -1
  232. package/dist/components/hx-stat/hx-stat.d.ts +7 -2
  233. package/dist/components/hx-stat/hx-stat.d.ts.map +1 -1
  234. package/dist/components/hx-stat/index.js +1 -1
  235. package/dist/components/hx-status-indicator/hx-status-indicator.d.ts +19 -3
  236. package/dist/components/hx-status-indicator/hx-status-indicator.d.ts.map +1 -1
  237. package/dist/components/hx-status-indicator/hx-status-indicator.styles.d.ts.map +1 -1
  238. package/dist/components/hx-status-indicator/index.js +1 -1
  239. package/dist/components/hx-steps/hx-step.d.ts +7 -0
  240. package/dist/components/hx-steps/hx-step.d.ts.map +1 -1
  241. package/dist/components/hx-steps/hx-step.styles.d.ts.map +1 -1
  242. package/dist/components/hx-steps/hx-steps.d.ts.map +1 -1
  243. package/dist/components/hx-steps/index.js +1 -1
  244. package/dist/components/hx-structured-list/hx-structured-list.d.ts +10 -3
  245. package/dist/components/hx-structured-list/hx-structured-list.d.ts.map +1 -1
  246. package/dist/components/hx-structured-list/index.js +1 -1
  247. package/dist/components/hx-style-scope/hx-style-scope.d.ts +71 -0
  248. package/dist/components/hx-style-scope/hx-style-scope.d.ts.map +1 -0
  249. package/dist/components/hx-style-scope/hx-style-scope.styles.d.ts +10 -0
  250. package/dist/components/hx-style-scope/hx-style-scope.styles.d.ts.map +1 -0
  251. package/dist/components/hx-style-scope/index.d.ts +2 -0
  252. package/dist/components/hx-style-scope/index.d.ts.map +1 -0
  253. package/dist/components/hx-style-scope/index.js +5 -0
  254. package/dist/components/hx-style-scope/index.js.map +1 -0
  255. package/dist/components/hx-switch/hx-switch.d.ts +4 -4
  256. package/dist/components/hx-switch/hx-switch.d.ts.map +1 -1
  257. package/dist/components/hx-switch/hx-switch.styles.d.ts.map +1 -1
  258. package/dist/components/hx-switch/index.js +1 -1
  259. package/dist/components/hx-table/hx-table.d.ts +1 -0
  260. package/dist/components/hx-table/hx-table.d.ts.map +1 -1
  261. package/dist/components/hx-table/hx-tbody.d.ts.map +1 -1
  262. package/dist/components/hx-table/hx-td.d.ts.map +1 -1
  263. package/dist/components/hx-table/hx-tfoot.d.ts.map +1 -1
  264. package/dist/components/hx-table/hx-th.d.ts.map +1 -1
  265. package/dist/components/hx-table/hx-thead.d.ts.map +1 -1
  266. package/dist/components/hx-table/hx-tr.d.ts.map +1 -1
  267. package/dist/components/hx-table/index.js +1 -1
  268. package/dist/components/hx-tabs/hx-tab-panel.d.ts.map +1 -1
  269. package/dist/components/hx-tabs/hx-tab-panel.styles.d.ts.map +1 -1
  270. package/dist/components/hx-tabs/hx-tab.d.ts +1 -0
  271. package/dist/components/hx-tabs/hx-tab.d.ts.map +1 -1
  272. package/dist/components/hx-tabs/hx-tab.styles.d.ts.map +1 -1
  273. package/dist/components/hx-tabs/hx-tabs.d.ts +12 -2
  274. package/dist/components/hx-tabs/hx-tabs.d.ts.map +1 -1
  275. package/dist/components/hx-tabs/index.js +1 -1
  276. package/dist/components/hx-tag/hx-tag.d.ts.map +1 -1
  277. package/dist/components/hx-tag/hx-tag.styles.d.ts.map +1 -1
  278. package/dist/components/hx-tag/index.js +1 -1
  279. package/dist/components/hx-text/hx-text.d.ts.map +1 -1
  280. package/dist/components/hx-text/index.js +1 -1
  281. package/dist/components/hx-text-input/hx-text-input.d.ts +16 -15
  282. package/dist/components/hx-text-input/hx-text-input.d.ts.map +1 -1
  283. package/dist/components/hx-text-input/hx-text-input.styles.d.ts.map +1 -1
  284. package/dist/components/hx-text-input/index.js +1 -1
  285. package/dist/components/hx-textarea/hx-textarea.d.ts +4 -4
  286. package/dist/components/hx-textarea/hx-textarea.d.ts.map +1 -1
  287. package/dist/components/hx-textarea/hx-textarea.styles.d.ts.map +1 -1
  288. package/dist/components/hx-textarea/index.js +1 -1
  289. package/dist/components/hx-theme/hx-theme.d.ts +82 -3
  290. package/dist/components/hx-theme/hx-theme.d.ts.map +1 -1
  291. package/dist/components/hx-theme/index.js +1 -1
  292. package/dist/components/hx-time-picker/hx-time-picker.d.ts +6 -1
  293. package/dist/components/hx-time-picker/hx-time-picker.d.ts.map +1 -1
  294. package/dist/components/hx-time-picker/index.js +1 -1
  295. package/dist/components/hx-toast/hx-toast-stack.d.ts +1 -1
  296. package/dist/components/hx-toast/hx-toast-stack.d.ts.map +1 -1
  297. package/dist/components/hx-toast/hx-toast.d.ts +9 -5
  298. package/dist/components/hx-toast/hx-toast.d.ts.map +1 -1
  299. package/dist/components/hx-toast/hx-toast.styles.d.ts.map +1 -1
  300. package/dist/components/hx-toast/index.js +1 -1
  301. package/dist/components/hx-toast/toast-factory.d.ts.map +1 -1
  302. package/dist/components/hx-toggle-button/hx-toggle-button.d.ts +4 -3
  303. package/dist/components/hx-toggle-button/hx-toggle-button.d.ts.map +1 -1
  304. package/dist/components/hx-toggle-button/hx-toggle-button.styles.d.ts.map +1 -1
  305. package/dist/components/hx-toggle-button/index.js +1 -1
  306. package/dist/components/hx-tooltip/hx-tooltip.d.ts +1 -2
  307. package/dist/components/hx-tooltip/hx-tooltip.d.ts.map +1 -1
  308. package/dist/components/hx-tooltip/index.js +1 -1
  309. package/dist/components/hx-top-nav/hx-top-nav.d.ts.map +1 -1
  310. package/dist/components/hx-top-nav/index.js +1 -1
  311. package/dist/components/hx-tree-view/hx-tree-item.d.ts +12 -0
  312. package/dist/components/hx-tree-view/hx-tree-item.d.ts.map +1 -1
  313. package/dist/components/hx-tree-view/hx-tree-view.d.ts +27 -2
  314. package/dist/components/hx-tree-view/hx-tree-view.d.ts.map +1 -1
  315. package/dist/components/hx-tree-view/hx-tree-view.styles.d.ts.map +1 -1
  316. package/dist/components/hx-tree-view/index.js +1 -1
  317. package/dist/components/hx-visually-hidden/hx-visually-hidden.d.ts.map +1 -1
  318. package/dist/components/hx-visually-hidden/index.js +1 -1
  319. package/dist/controllers/helix-audit-controller.d.ts +71 -0
  320. package/dist/controllers/helix-audit-controller.d.ts.map +1 -0
  321. package/dist/css/helix-all.css +9743 -0
  322. package/dist/css/helix-core.css +1839 -0
  323. package/dist/css/helix-data.css +639 -0
  324. package/dist/css/helix-feedback.css +1268 -0
  325. package/dist/css/helix-forms.css +2525 -0
  326. package/dist/css/helix-layout.css +380 -0
  327. package/dist/css/helix-media.css +213 -0
  328. package/dist/css/helix-navigation.css +1131 -0
  329. package/dist/css/helix-overlay.css +643 -0
  330. package/dist/css/helix-tokens.css +432 -0
  331. package/dist/css/helix-utility.css +633 -0
  332. package/dist/css/hx-accordion.css +10 -0
  333. package/dist/css/hx-action-bar.css +117 -0
  334. package/dist/css/hx-alert.css +213 -0
  335. package/dist/css/hx-avatar.css +134 -0
  336. package/dist/css/hx-badge.css +178 -0
  337. package/dist/css/hx-banner.css +203 -0
  338. package/dist/css/hx-breadcrumb.css +36 -0
  339. package/dist/css/hx-button-group.css +91 -0
  340. package/dist/css/hx-button.css +296 -0
  341. package/dist/css/hx-card.css +161 -0
  342. package/dist/css/hx-carousel.css +211 -0
  343. package/dist/css/hx-checkbox-group.css +77 -0
  344. package/dist/css/hx-checkbox.css +219 -0
  345. package/dist/css/hx-clinical-status.css +248 -0
  346. package/dist/css/hx-code-snippet.css +179 -0
  347. package/dist/css/hx-color-picker.css +2 -0
  348. package/dist/css/hx-combobox.css +2 -0
  349. package/dist/css/hx-container.css +82 -0
  350. package/dist/css/hx-copy-button.css +121 -0
  351. package/dist/css/hx-counter.css +51 -0
  352. package/dist/css/hx-data-table.css +207 -0
  353. package/dist/css/hx-date-picker.css +2 -0
  354. package/dist/css/hx-dialog.css +190 -0
  355. package/dist/css/hx-divider.css +87 -0
  356. package/dist/css/hx-drawer.css +262 -0
  357. package/dist/css/hx-dropdown.css +46 -0
  358. package/dist/css/hx-field-label.css +38 -0
  359. package/dist/css/hx-field.css +119 -0
  360. package/dist/css/hx-file-upload.css +241 -0
  361. package/dist/css/hx-form.css +2 -0
  362. package/dist/css/hx-format-date.css +10 -0
  363. package/dist/css/hx-grid.css +14 -0
  364. package/dist/css/hx-help-text.css +50 -0
  365. package/dist/css/hx-icon-button.css +152 -0
  366. package/dist/css/hx-icon.css +73 -0
  367. package/dist/css/hx-image.css +41 -0
  368. package/dist/css/hx-link.css +105 -0
  369. package/dist/css/hx-list.css +48 -0
  370. package/dist/css/hx-menu.css +23 -0
  371. package/dist/css/hx-meter.css +113 -0
  372. package/dist/css/hx-nav.css +242 -0
  373. package/dist/css/hx-number-input.css +246 -0
  374. package/dist/css/hx-overflow-menu.css +133 -0
  375. package/dist/css/hx-pagination.css +193 -0
  376. package/dist/css/hx-patient-banner.css +139 -0
  377. package/dist/css/hx-phi-field.css +97 -0
  378. package/dist/css/hx-popover.css +61 -0
  379. package/dist/css/hx-popup.css +31 -0
  380. package/dist/css/hx-progress-bar.css +133 -0
  381. package/dist/css/hx-progress-ring.css +142 -0
  382. package/dist/css/hx-prose.css +2 -0
  383. package/dist/css/hx-radio-group.css +77 -0
  384. package/dist/css/hx-rating.css +96 -0
  385. package/dist/css/hx-select.css +295 -0
  386. package/dist/css/hx-side-nav.css +149 -0
  387. package/dist/css/hx-skeleton.css +82 -0
  388. package/dist/css/hx-slider.css +287 -0
  389. package/dist/css/hx-spinner.css +116 -0
  390. package/dist/css/hx-split-button.css +309 -0
  391. package/dist/css/hx-split-panel.css +168 -0
  392. package/dist/css/hx-stack.css +104 -0
  393. package/dist/css/hx-stat.css +106 -0
  394. package/dist/css/hx-status-indicator.css +126 -0
  395. package/dist/css/hx-steps.css +52 -0
  396. package/dist/css/hx-structured-list.css +75 -0
  397. package/dist/css/hx-style-scope.css +4 -0
  398. package/dist/css/hx-switch.css +169 -0
  399. package/dist/css/hx-table.css +128 -0
  400. package/dist/css/hx-tabs.css +76 -0
  401. package/dist/css/hx-tag.css +146 -0
  402. package/dist/css/hx-text-input.css +214 -0
  403. package/dist/css/hx-text.css +149 -0
  404. package/dist/css/hx-textarea.css +180 -0
  405. package/dist/css/hx-theme.css +23 -0
  406. package/dist/css/hx-time-picker.css +2 -0
  407. package/dist/css/hx-toast.css +230 -0
  408. package/dist/css/hx-toggle-button.css +207 -0
  409. package/dist/css/hx-tooltip.css +51 -0
  410. package/dist/css/hx-top-nav.css +203 -0
  411. package/dist/css/hx-tree-view.css +22 -0
  412. package/dist/css/hx-visually-hidden.css +26 -0
  413. package/dist/css/index.css +84 -0
  414. package/dist/css/manifest.json +2704 -0
  415. package/dist/index.d.ts +15 -9
  416. package/dist/index.d.ts.map +1 -1
  417. package/dist/index.js +268 -176
  418. package/dist/index.js.map +1 -1
  419. package/dist/mixins/FocusMixin.d.ts +49 -0
  420. package/dist/mixins/FocusMixin.d.ts.map +1 -0
  421. package/dist/mixins/FormMixin.d.ts +69 -0
  422. package/dist/mixins/FormMixin.d.ts.map +1 -0
  423. package/dist/mixins/aria-delegation.d.ts +97 -0
  424. package/dist/mixins/aria-delegation.d.ts.map +1 -0
  425. package/dist/mixins/index.d.ts +5 -0
  426. package/dist/mixins/index.d.ts.map +1 -0
  427. package/dist/shared/FormMixin-Bjvw20G5.js +88 -0
  428. package/dist/shared/FormMixin-Bjvw20G5.js.map +1 -0
  429. package/dist/shared/aria-delegation-CBP9eQ0M.js +107 -0
  430. package/dist/shared/aria-delegation-CBP9eQ0M.js.map +1 -0
  431. package/dist/shared/document-token-adoption-Dym9ALA4.js +15 -0
  432. package/dist/shared/document-token-adoption-Dym9ALA4.js.map +1 -0
  433. package/dist/shared/{hx-accordion-D1kFhdeQ.js → hx-accordion-Cvs-uzZq.js} +86 -58
  434. package/dist/shared/hx-accordion-Cvs-uzZq.js.map +1 -0
  435. package/dist/shared/{hx-action-bar-D4bulGQP.js → hx-action-bar-B2BNlKQv.js} +34 -35
  436. package/dist/shared/hx-action-bar-B2BNlKQv.js.map +1 -0
  437. package/dist/shared/{hx-alert-CSxCF2rr.js → hx-alert-CnDlZO6m.js} +38 -34
  438. package/dist/shared/hx-alert-CnDlZO6m.js.map +1 -0
  439. package/dist/shared/{hx-avatar-Cun-O99h.js → hx-avatar-C68g1G2e.js} +32 -15
  440. package/dist/shared/hx-avatar-C68g1G2e.js.map +1 -0
  441. package/dist/shared/{hx-badge-CsFd2xtw.js → hx-badge-D5vy_5BO.js} +49 -40
  442. package/dist/shared/hx-badge-D5vy_5BO.js.map +1 -0
  443. package/dist/shared/{hx-banner-BTV-X2xF.js → hx-banner-Ccif-GaB.js} +95 -60
  444. package/dist/shared/hx-banner-Ccif-GaB.js.map +1 -0
  445. package/dist/shared/{hx-breadcrumb-item-4IwaLgaO.js → hx-breadcrumb-item-DhxDZI3r.js} +92 -89
  446. package/dist/shared/hx-breadcrumb-item-DhxDZI3r.js.map +1 -0
  447. package/dist/shared/{hx-button-7k-KeCYU.js → hx-button-BF3VwcOJ.js} +128 -63
  448. package/dist/shared/hx-button-BF3VwcOJ.js.map +1 -0
  449. package/dist/shared/{hx-button-group-CWjWv-wS.js → hx-button-group-B8u25JjV.js} +9 -9
  450. package/dist/shared/hx-button-group-B8u25JjV.js.map +1 -0
  451. package/dist/shared/{hx-card-0hT3G5hi.js → hx-card-Dps4jvG9.js} +34 -34
  452. package/dist/shared/hx-card-Dps4jvG9.js.map +1 -0
  453. package/dist/shared/{hx-carousel-item-DgeYyYZJ.js → hx-carousel-item-Dmo9pGFm.js} +25 -25
  454. package/dist/shared/hx-carousel-item-Dmo9pGFm.js.map +1 -0
  455. package/dist/shared/{hx-checkbox-BvjO-O41.js → hx-checkbox-99zyEKj7.js} +67 -70
  456. package/dist/shared/hx-checkbox-99zyEKj7.js.map +1 -0
  457. package/dist/shared/{hx-checkbox-group-Z5VvWzcj.js → hx-checkbox-group-J2CGHDwY.js} +48 -42
  458. package/dist/shared/hx-checkbox-group-J2CGHDwY.js.map +1 -0
  459. package/dist/shared/hx-clinical-status-CGx5q5PL.js +469 -0
  460. package/dist/shared/hx-clinical-status-CGx5q5PL.js.map +1 -0
  461. package/dist/shared/{hx-code-snippet-DqzPkH4K.js → hx-code-snippet-vAzJjm2O.js} +57 -48
  462. package/dist/shared/hx-code-snippet-vAzJjm2O.js.map +1 -0
  463. package/dist/shared/{hx-color-picker-Da8z6AlQ.js → hx-color-picker-CzMu9Fzw.js} +153 -137
  464. package/dist/shared/hx-color-picker-CzMu9Fzw.js.map +1 -0
  465. package/dist/shared/{hx-combobox-CivfelTS.js → hx-combobox-Dhw33U40.js} +17 -17
  466. package/dist/shared/hx-combobox-Dhw33U40.js.map +1 -0
  467. package/dist/shared/{hx-container-DLUKnTi9.js → hx-container-Dz4v6FSd.js} +15 -15
  468. package/dist/shared/hx-container-Dz4v6FSd.js.map +1 -0
  469. package/dist/shared/{hx-copy-button--0dymSvw.js → hx-copy-button-Dcul7VwZ.js} +52 -45
  470. package/dist/shared/hx-copy-button-Dcul7VwZ.js.map +1 -0
  471. package/dist/shared/hx-counter-czWWvciz.js +185 -0
  472. package/dist/shared/hx-counter-czWWvciz.js.map +1 -0
  473. package/dist/shared/{hx-data-table-BWvd5NNx.js → hx-data-table-CAVgT4JG.js} +89 -53
  474. package/dist/shared/hx-data-table-CAVgT4JG.js.map +1 -0
  475. package/dist/shared/{hx-date-picker-6voxxxNE.js → hx-date-picker-Be8lTTO7.js} +105 -92
  476. package/dist/shared/hx-date-picker-Be8lTTO7.js.map +1 -0
  477. package/dist/shared/{hx-dialog-DkUSnVgw.js → hx-dialog-DTGX2FbP.js} +98 -89
  478. package/dist/shared/hx-dialog-DTGX2FbP.js.map +1 -0
  479. package/dist/shared/{hx-divider-DNNs4e8q.js → hx-divider-BJjarZ9z.js} +15 -15
  480. package/dist/shared/hx-divider-BJjarZ9z.js.map +1 -0
  481. package/dist/shared/{hx-drawer-CJcRZcns.js → hx-drawer-C5qI7jf1.js} +87 -47
  482. package/dist/shared/hx-drawer-C5qI7jf1.js.map +1 -0
  483. package/dist/shared/{hx-dropdown-Bo0KTM1A.js → hx-dropdown-BxNnUDyD.js} +56 -41
  484. package/dist/shared/hx-dropdown-BxNnUDyD.js.map +1 -0
  485. package/dist/shared/{hx-field-3MmzJ4kZ.js → hx-field-J1IUbQ8n.js} +21 -21
  486. package/dist/shared/hx-field-J1IUbQ8n.js.map +1 -0
  487. package/dist/shared/{hx-field-label-Bg-EWvqF.js → hx-field-label-DhVdkhCN.js} +11 -14
  488. package/dist/shared/hx-field-label-DhVdkhCN.js.map +1 -0
  489. package/dist/shared/{hx-file-upload-ByjAgfNy.js → hx-file-upload-79nMhnM_.js} +79 -88
  490. package/dist/shared/hx-file-upload-79nMhnM_.js.map +1 -0
  491. package/dist/shared/{hx-form-BpS6v3Iu.js → hx-form-fJE-FJQV.js} +36 -32
  492. package/dist/shared/{hx-form-BpS6v3Iu.js.map → hx-form-fJE-FJQV.js.map} +1 -1
  493. package/dist/shared/{hx-format-date-BdnWV2kX.js → hx-format-date-BMukpO2t.js} +19 -17
  494. package/dist/shared/hx-format-date-BMukpO2t.js.map +1 -0
  495. package/dist/shared/{hx-grid-gEjuF0cR.js → hx-grid-CO6JZ6Kn.js} +12 -12
  496. package/dist/shared/hx-grid-CO6JZ6Kn.js.map +1 -0
  497. package/dist/shared/{hx-help-text-BAcEGRUE.js → hx-help-text-CYGvBLET.js} +13 -13
  498. package/dist/shared/hx-help-text-CYGvBLET.js.map +1 -0
  499. package/dist/shared/{hx-icon-CP6OnLoM.js → hx-icon-C1hDsw-b.js} +15 -15
  500. package/dist/shared/hx-icon-C1hDsw-b.js.map +1 -0
  501. package/dist/shared/{hx-icon-button-DzH_bRtC.js → hx-icon-button-DOWKUs0-.js} +10 -10
  502. package/dist/shared/hx-icon-button-DOWKUs0-.js.map +1 -0
  503. package/dist/shared/{hx-image-C6pGiI6c.js → hx-image-BqABFHGZ.js} +21 -21
  504. package/dist/shared/hx-image-BqABFHGZ.js.map +1 -0
  505. package/dist/shared/{hx-link-Tmk_YPvW.js → hx-link-CAFRuAKJ.js} +27 -25
  506. package/dist/shared/hx-link-CAFRuAKJ.js.map +1 -0
  507. package/dist/shared/{hx-list-DwInEX2H.js → hx-list-zbgO-9Xe.js} +12 -12
  508. package/dist/shared/hx-list-zbgO-9Xe.js.map +1 -0
  509. package/dist/shared/{hx-menu-divider-DR4G_rqw.js → hx-menu-divider-B1TIKAaq.js} +50 -30
  510. package/dist/shared/hx-menu-divider-B1TIKAaq.js.map +1 -0
  511. package/dist/shared/{hx-meter-uXkTZq-W.js → hx-meter-BWNeWrg2.js} +18 -18
  512. package/dist/shared/hx-meter-BWNeWrg2.js.map +1 -0
  513. package/dist/shared/{hx-nav-3JsN2Oak.js → hx-nav-DqNzqH2s.js} +119 -107
  514. package/dist/shared/hx-nav-DqNzqH2s.js.map +1 -0
  515. package/dist/shared/{hx-nav-item-D3EJatzc.js → hx-nav-item-D-9uG-Tt.js} +181 -115
  516. package/dist/shared/hx-nav-item-D-9uG-Tt.js.map +1 -0
  517. package/dist/shared/{hx-number-input-CIpL2BEh.js → hx-number-input-D7Jczm0J.js} +42 -41
  518. package/dist/shared/hx-number-input-D7Jczm0J.js.map +1 -0
  519. package/dist/shared/{hx-overflow-menu-2kgOJ_ht.js → hx-overflow-menu-UvSgk7yV.js} +20 -16
  520. package/dist/shared/hx-overflow-menu-UvSgk7yV.js.map +1 -0
  521. package/dist/shared/{hx-pagination-Blt-fFqV.js → hx-pagination-DBovb97q.js} +91 -75
  522. package/dist/shared/hx-pagination-DBovb97q.js.map +1 -0
  523. package/dist/shared/hx-patient-banner-DLeU2pC2.js +297 -0
  524. package/dist/shared/hx-patient-banner-DLeU2pC2.js.map +1 -0
  525. package/dist/shared/hx-phi-field-BwlVKfHI.js +295 -0
  526. package/dist/shared/hx-phi-field-BwlVKfHI.js.map +1 -0
  527. package/dist/shared/{hx-popover-DxE67miP.js → hx-popover-DdjLdSr8.js} +96 -69
  528. package/dist/shared/hx-popover-DdjLdSr8.js.map +1 -0
  529. package/dist/shared/{hx-popup-Dg6n_PbY.js → hx-popup-DEYZKeH1.js} +15 -15
  530. package/dist/shared/hx-popup-DEYZKeH1.js.map +1 -0
  531. package/dist/shared/{hx-progress-bar-Dm_EHyng.js → hx-progress-bar-CdbFsimb.js} +44 -42
  532. package/dist/shared/hx-progress-bar-CdbFsimb.js.map +1 -0
  533. package/dist/shared/{hx-progress-ring-DpxBDD5d.js → hx-progress-ring-3YcGRxes.js} +8 -8
  534. package/dist/shared/hx-progress-ring-3YcGRxes.js.map +1 -0
  535. package/dist/shared/hx-prose-Ml_L2zje.js.map +1 -1
  536. package/dist/shared/{hx-radio-BywgVSEu.js → hx-radio-BCEpX1tj.js} +40 -39
  537. package/dist/shared/hx-radio-BCEpX1tj.js.map +1 -0
  538. package/dist/shared/{hx-rating-CUWBQ0fZ.js → hx-rating-BXnSN-Ln.js} +92 -96
  539. package/dist/shared/hx-rating-BXnSN-Ln.js.map +1 -0
  540. package/dist/shared/{hx-select-BwDwxk-M.js → hx-select-vzsOOYNx.js} +137 -98
  541. package/dist/shared/hx-select-vzsOOYNx.js.map +1 -0
  542. package/dist/shared/{hx-skeleton-BHvALyd7.js → hx-skeleton-Dikv9b7p.js} +6 -6
  543. package/dist/shared/hx-skeleton-Dikv9b7p.js.map +1 -0
  544. package/dist/shared/{hx-slider-D_0EKJyk.js → hx-slider-DnncjdOT.js} +31 -26
  545. package/dist/shared/hx-slider-DnncjdOT.js.map +1 -0
  546. package/dist/shared/{hx-spinner-DMn4SChS.js → hx-spinner-B52nJ4Vt.js} +15 -14
  547. package/dist/shared/hx-spinner-B52nJ4Vt.js.map +1 -0
  548. package/dist/shared/{hx-split-button-CypgLXw1.js → hx-split-button-BJHIszDb.js} +44 -35
  549. package/dist/shared/hx-split-button-BJHIszDb.js.map +1 -0
  550. package/dist/shared/{hx-split-panel-CV_Kr4EK.js → hx-split-panel-uNW9xrA3.js} +18 -15
  551. package/dist/shared/hx-split-panel-uNW9xrA3.js.map +1 -0
  552. package/dist/shared/{hx-stack-BStY1RmV.js → hx-stack-BHc4gVv_.js} +9 -9
  553. package/dist/shared/hx-stack-BHc4gVv_.js.map +1 -0
  554. package/dist/shared/{hx-stat-CHntLHJM.js → hx-stat-BfgKgBeq.js} +43 -35
  555. package/dist/shared/hx-stat-BfgKgBeq.js.map +1 -0
  556. package/dist/shared/{hx-status-indicator-C1BwEvUw.js → hx-status-indicator-C146uMF0.js} +81 -40
  557. package/dist/shared/hx-status-indicator-C146uMF0.js.map +1 -0
  558. package/dist/shared/{hx-step-BIVWSPxd.js → hx-step-C0Unvyen.js} +48 -84
  559. package/dist/shared/hx-step-C0Unvyen.js.map +1 -0
  560. package/dist/shared/{hx-structured-list-CMWllxGg.js → hx-structured-list-3R69RETR.js} +25 -22
  561. package/dist/shared/hx-structured-list-3R69RETR.js.map +1 -0
  562. package/dist/shared/hx-style-scope-D3dsKS58.js +126 -0
  563. package/dist/shared/hx-style-scope-D3dsKS58.js.map +1 -0
  564. package/dist/shared/{hx-switch-BgX8kuWt.js → hx-switch-BCNpbuk-.js} +14 -11
  565. package/dist/shared/hx-switch-BCNpbuk-.js.map +1 -0
  566. package/dist/shared/{hx-tab-panel-DhOq67jj.js → hx-tab-panel-D7BTBgDQ.js} +165 -126
  567. package/dist/shared/hx-tab-panel-D7BTBgDQ.js.map +1 -0
  568. package/dist/shared/{hx-tag-CzOTDcXI.js → hx-tag-C2E-6fJ3.js} +20 -19
  569. package/dist/shared/hx-tag-C2E-6fJ3.js.map +1 -0
  570. package/dist/shared/{hx-td-h6oeW6YC.js → hx-td-DWcp2XDO.js} +49 -46
  571. package/dist/shared/hx-td-DWcp2XDO.js.map +1 -0
  572. package/dist/shared/{hx-text-DTXjiviE.js → hx-text-DxyBxz25.js} +27 -27
  573. package/dist/shared/hx-text-DxyBxz25.js.map +1 -0
  574. package/dist/shared/hx-text-input-2LTGt0vQ.js +576 -0
  575. package/dist/shared/hx-text-input-2LTGt0vQ.js.map +1 -0
  576. package/dist/shared/{hx-textarea-BgX7rxyo.js → hx-textarea-BZspivFK.js} +23 -23
  577. package/dist/shared/hx-textarea-BZspivFK.js.map +1 -0
  578. package/dist/shared/hx-theme-J2YEpSIL.js +300 -0
  579. package/dist/shared/hx-theme-J2YEpSIL.js.map +1 -0
  580. package/dist/shared/{hx-time-picker-DmLu7WUC.js → hx-time-picker-CVrw4tju.js} +89 -88
  581. package/dist/shared/hx-time-picker-CVrw4tju.js.map +1 -0
  582. package/dist/shared/{hx-toggle-button-D1jpDvSA.js → hx-toggle-button-Ss7Gppx3.js} +14 -11
  583. package/dist/shared/hx-toggle-button-Ss7Gppx3.js.map +1 -0
  584. package/dist/shared/{hx-tooltip-kh7QFPKu.js → hx-tooltip-xRNjEX7_.js} +26 -21
  585. package/dist/shared/hx-tooltip-xRNjEX7_.js.map +1 -0
  586. package/dist/shared/{hx-top-nav-DYlnzDaU.js → hx-top-nav-28mxYGuj.js} +7 -7
  587. package/dist/shared/hx-top-nav-28mxYGuj.js.map +1 -0
  588. package/dist/shared/{hx-tree-item-BP6UF_H1.js → hx-tree-item-C-cRw_ZA.js} +170 -106
  589. package/dist/shared/hx-tree-item-C-cRw_ZA.js.map +1 -0
  590. package/dist/shared/{hx-visually-hidden-CCTQTjbR.js → hx-visually-hidden-D6Dv2l8l.js} +13 -13
  591. package/dist/shared/hx-visually-hidden-D6Dv2l8l.js.map +1 -0
  592. package/dist/shared/id-counter-JhvVCnjh.js +143 -0
  593. package/dist/shared/id-counter-JhvVCnjh.js.map +1 -0
  594. package/dist/shared/{toast-factory-DTy-qN8r.js → toast-factory-oPHbhMZI.js} +58 -46
  595. package/dist/shared/toast-factory-oPHbhMZI.js.map +1 -0
  596. package/dist/utilities/adoptedStylesheetRegistry.d.ts +47 -0
  597. package/dist/utilities/adoptedStylesheetRegistry.d.ts.map +1 -0
  598. package/dist/utilities/document-token-adoption.d.ts +10 -0
  599. package/dist/utilities/document-token-adoption.d.ts.map +1 -0
  600. package/dist/utilities/generateScopedSelectors.d.ts +30 -0
  601. package/dist/utilities/generateScopedSelectors.d.ts.map +1 -0
  602. package/dist/utilities/injectLightStyles.d.ts +37 -0
  603. package/dist/utilities/injectLightStyles.d.ts.map +1 -0
  604. package/dist/utilities/lightStyleRegistry.d.ts +41 -0
  605. package/dist/utilities/lightStyleRegistry.d.ts.map +1 -0
  606. package/dist/utilities/sheetManager.d.ts +62 -0
  607. package/dist/utilities/sheetManager.d.ts.map +1 -0
  608. package/dist/utils/contrast-checker.d.ts +86 -0
  609. package/dist/utils/contrast-checker.d.ts.map +1 -0
  610. package/dist/utils/token-merger.d.ts +24 -0
  611. package/dist/utils/token-merger.d.ts.map +1 -0
  612. package/fouc.css +37 -0
  613. package/package.json +28 -6
  614. package/dist/shared/hx-accordion-D1kFhdeQ.js.map +0 -1
  615. package/dist/shared/hx-action-bar-D4bulGQP.js.map +0 -1
  616. package/dist/shared/hx-alert-CSxCF2rr.js.map +0 -1
  617. package/dist/shared/hx-avatar-Cun-O99h.js.map +0 -1
  618. package/dist/shared/hx-badge-CsFd2xtw.js.map +0 -1
  619. package/dist/shared/hx-banner-BTV-X2xF.js.map +0 -1
  620. package/dist/shared/hx-breadcrumb-item-4IwaLgaO.js.map +0 -1
  621. package/dist/shared/hx-button-7k-KeCYU.js.map +0 -1
  622. package/dist/shared/hx-button-group-CWjWv-wS.js.map +0 -1
  623. package/dist/shared/hx-card-0hT3G5hi.js.map +0 -1
  624. package/dist/shared/hx-carousel-item-DgeYyYZJ.js.map +0 -1
  625. package/dist/shared/hx-checkbox-BvjO-O41.js.map +0 -1
  626. package/dist/shared/hx-checkbox-group-Z5VvWzcj.js.map +0 -1
  627. package/dist/shared/hx-code-snippet-DqzPkH4K.js.map +0 -1
  628. package/dist/shared/hx-color-picker-Da8z6AlQ.js.map +0 -1
  629. package/dist/shared/hx-combobox-CivfelTS.js.map +0 -1
  630. package/dist/shared/hx-container-DLUKnTi9.js.map +0 -1
  631. package/dist/shared/hx-copy-button--0dymSvw.js.map +0 -1
  632. package/dist/shared/hx-counter-Duf00H7p.js +0 -147
  633. package/dist/shared/hx-counter-Duf00H7p.js.map +0 -1
  634. package/dist/shared/hx-data-table-BWvd5NNx.js.map +0 -1
  635. package/dist/shared/hx-date-picker-6voxxxNE.js.map +0 -1
  636. package/dist/shared/hx-dialog-DkUSnVgw.js.map +0 -1
  637. package/dist/shared/hx-divider-DNNs4e8q.js.map +0 -1
  638. package/dist/shared/hx-drawer-CJcRZcns.js.map +0 -1
  639. package/dist/shared/hx-dropdown-Bo0KTM1A.js.map +0 -1
  640. package/dist/shared/hx-field-3MmzJ4kZ.js.map +0 -1
  641. package/dist/shared/hx-field-label-Bg-EWvqF.js.map +0 -1
  642. package/dist/shared/hx-file-upload-ByjAgfNy.js.map +0 -1
  643. package/dist/shared/hx-format-date-BdnWV2kX.js.map +0 -1
  644. package/dist/shared/hx-grid-gEjuF0cR.js.map +0 -1
  645. package/dist/shared/hx-help-text-BAcEGRUE.js.map +0 -1
  646. package/dist/shared/hx-icon-CP6OnLoM.js.map +0 -1
  647. package/dist/shared/hx-icon-button-DzH_bRtC.js.map +0 -1
  648. package/dist/shared/hx-image-C6pGiI6c.js.map +0 -1
  649. package/dist/shared/hx-link-Tmk_YPvW.js.map +0 -1
  650. package/dist/shared/hx-list-DwInEX2H.js.map +0 -1
  651. package/dist/shared/hx-menu-divider-DR4G_rqw.js.map +0 -1
  652. package/dist/shared/hx-meter-uXkTZq-W.js.map +0 -1
  653. package/dist/shared/hx-nav-3JsN2Oak.js.map +0 -1
  654. package/dist/shared/hx-nav-item-D3EJatzc.js.map +0 -1
  655. package/dist/shared/hx-number-input-CIpL2BEh.js.map +0 -1
  656. package/dist/shared/hx-overflow-menu-2kgOJ_ht.js.map +0 -1
  657. package/dist/shared/hx-pagination-Blt-fFqV.js.map +0 -1
  658. package/dist/shared/hx-popover-DxE67miP.js.map +0 -1
  659. package/dist/shared/hx-popup-Dg6n_PbY.js.map +0 -1
  660. package/dist/shared/hx-progress-bar-Dm_EHyng.js.map +0 -1
  661. package/dist/shared/hx-progress-ring-DpxBDD5d.js.map +0 -1
  662. package/dist/shared/hx-radio-BywgVSEu.js.map +0 -1
  663. package/dist/shared/hx-rating-CUWBQ0fZ.js.map +0 -1
  664. package/dist/shared/hx-select-BwDwxk-M.js.map +0 -1
  665. package/dist/shared/hx-skeleton-BHvALyd7.js.map +0 -1
  666. package/dist/shared/hx-slider-D_0EKJyk.js.map +0 -1
  667. package/dist/shared/hx-spinner-DMn4SChS.js.map +0 -1
  668. package/dist/shared/hx-split-button-CypgLXw1.js.map +0 -1
  669. package/dist/shared/hx-split-panel-CV_Kr4EK.js.map +0 -1
  670. package/dist/shared/hx-stack-BStY1RmV.js.map +0 -1
  671. package/dist/shared/hx-stat-CHntLHJM.js.map +0 -1
  672. package/dist/shared/hx-status-indicator-C1BwEvUw.js.map +0 -1
  673. package/dist/shared/hx-step-BIVWSPxd.js.map +0 -1
  674. package/dist/shared/hx-structured-list-CMWllxGg.js.map +0 -1
  675. package/dist/shared/hx-switch-BgX8kuWt.js.map +0 -1
  676. package/dist/shared/hx-tab-panel-DhOq67jj.js.map +0 -1
  677. package/dist/shared/hx-tag-CzOTDcXI.js.map +0 -1
  678. package/dist/shared/hx-td-h6oeW6YC.js.map +0 -1
  679. package/dist/shared/hx-text-DTXjiviE.js.map +0 -1
  680. package/dist/shared/hx-text-input-CqEdDHMU.js +0 -461
  681. package/dist/shared/hx-text-input-CqEdDHMU.js.map +0 -1
  682. package/dist/shared/hx-textarea-BgX7rxyo.js.map +0 -1
  683. package/dist/shared/hx-theme-6GDoUG8j.js +0 -176
  684. package/dist/shared/hx-theme-6GDoUG8j.js.map +0 -1
  685. package/dist/shared/hx-time-picker-DmLu7WUC.js.map +0 -1
  686. package/dist/shared/hx-toggle-button-D1jpDvSA.js.map +0 -1
  687. package/dist/shared/hx-tooltip-kh7QFPKu.js.map +0 -1
  688. package/dist/shared/hx-top-nav-DYlnzDaU.js.map +0 -1
  689. package/dist/shared/hx-tree-item-BP6UF_H1.js.map +0 -1
  690. package/dist/shared/hx-visually-hidden-CCTQTjbR.js.map +0 -1
  691. package/dist/shared/toast-factory-DTy-qN8r.js.map +0 -1
@@ -1,10 +1,10 @@
1
- import { css as b, LitElement as g, nothing as p, html as f } from "lit";
2
- import { property as a, state as x, query as _, customElement as y } from "lit/decorators.js";
1
+ import { css as x, LitElement as g, nothing as p, html as c } from "lit";
2
+ import "./document-token-adoption-Dym9ALA4.js";
3
+ import { property as a, state as b, query as _, customElement as y } from "lit/decorators.js";
3
4
  import { classMap as w } from "lit/directives/class-map.js";
4
5
  import { ifDefined as v } from "lit/directives/if-defined.js";
5
6
  import { repeat as $ } from "lit/directives/repeat.js";
6
- import { tokenStyles as z } from "@helixui/tokens/lit";
7
- const F = b`
7
+ const z = x`
8
8
  :host {
9
9
  display: block;
10
10
  }
@@ -45,7 +45,7 @@ const F = b`
45
45
  align-items: center;
46
46
  justify-content: center;
47
47
  gap: var(--hx-space-2, 0.5rem);
48
- min-height: var(--hx-size-32, 8rem);
48
+ min-height: var(--hx-space-32, 8rem);
49
49
  padding: var(--hx-space-6, 1.5rem) var(--hx-space-4, 1rem);
50
50
  border: var(--hx-border-width-thin, 1px) dashed
51
51
  var(--hx-file-upload-dropzone-border-color, var(--hx-color-neutral-300, #ced4da));
@@ -202,7 +202,7 @@ const F = b`
202
202
 
203
203
  .progress-track {
204
204
  width: 100%;
205
- height: 4px;
205
+ height: var(--hx-file-upload-progress-height, var(--hx-space-1, 0.25rem));
206
206
  background-color: var(--hx-color-neutral-200, #e9ecef);
207
207
  border-radius: var(--hx-border-radius-full, 9999px);
208
208
  overflow: hidden;
@@ -246,14 +246,14 @@ const F = b`
246
246
  line-height: var(--hx-line-height-normal, 1.5);
247
247
  }
248
248
  `;
249
- var k = Object.defineProperty, D = Object.getOwnPropertyDescriptor, o = (e, r, i, s) => {
250
- for (var l = s > 1 ? void 0 : s ? D(r, i) : r, d = e.length - 1, n; d >= 0; d--)
251
- (n = e[d]) && (l = (s ? n(r, i, l) : n(l)) || l);
252
- return s && l && k(r, i, l), l;
249
+ var F = Object.defineProperty, D = Object.getOwnPropertyDescriptor, o = (e, r, t, s) => {
250
+ for (var l = s > 1 ? void 0 : s ? D(r, t) : r, d = e.length - 1, n; d >= 0; d--)
251
+ (n = e[d]) && (l = (s ? n(r, t, l) : n(l)) || l);
252
+ return s && l && F(r, t, l), l;
253
253
  };
254
- let S = 0, t = class extends g {
254
+ let k = 0, i = class extends g {
255
255
  constructor() {
256
- super(), this.name = "", this.accept = "", this.maxSize = 0, this.maxFiles = 0, this.multiple = !1, this.label = "", this.disabled = !1, this.error = "", this.labelDropzone = "Drag files here or click to browse", this.labelFileList = "Selected files", this.labelUploadProgress = (e, r) => `Upload progress for ${e}: ${r}%`, this._files = [], this._dragOver = !1, this._hasFileListSlot = !1, this._baseId = `hx-file-upload-${++S}`, this._labelId = `${this._baseId}-label`, this._errorId = `${this._baseId}-error`, this._dropzoneId = `${this._baseId}-dropzone`, this._liveId = `${this._baseId}-live`, this._internals = this.attachInternals();
256
+ super(), this.name = "", this.accept = "", this.maxSize = 0, this.maxFiles = 0, this.multiple = !1, this.label = "", this.disabled = !1, this.error = "", this.labelDropzone = "Drag files here or click to browse", this.labelFileList = "Selected files", this.labelUploadProgress = (e, r) => `Upload progress for ${e}: ${r}%`, this.labelDragDetected = "File detected. Release to upload.", this._files = [], this._dragOver = !1, this._hasFileListSlot = !1, this._baseId = `hx-file-upload-${++k}`, this._labelId = `${this._baseId}-label`, this._errorId = `${this._baseId}-error`, this._dropzoneId = `${this._baseId}-dropzone`, this._liveId = `${this._baseId}-live`, this._internals = this.attachInternals();
257
257
  }
258
258
  // ─── Slot Handling ───
259
259
  /** @internal */
@@ -286,21 +286,15 @@ let S = 0, t = class extends g {
286
286
  reportValidity() {
287
287
  return this._internals.reportValidity();
288
288
  }
289
- /** Called by the form when it resets. */
289
+ /** @internal */
290
290
  formResetCallback() {
291
291
  this._files = [], this._internals.setFormValue(null);
292
292
  }
293
- /** Called when a parent fieldset is disabled/enabled. */
293
+ /** @internal */
294
294
  formDisabledCallback(e) {
295
295
  this.disabled = e;
296
296
  }
297
- /**
298
- * Called by the browser to restore form state during back/forward navigation
299
- * or autocomplete. File objects cannot be persisted across navigation sessions,
300
- * so this callback clears the selection to avoid stale UI state.
301
- * @param _state - Previously saved form state (not usable for File restoration).
302
- * @param mode - 'restore' for back/forward navigation, 'autocomplete' for autofill.
303
- */
297
+ /** @internal */
304
298
  formStateRestoreCallback(e, r) {
305
299
  (r === "restore" || r === "autocomplete") && (this._files = [], this._internals.setFormValue(null));
306
300
  }
@@ -342,24 +336,24 @@ let S = 0, t = class extends g {
342
336
  */
343
337
  /** @internal */
344
338
  _isAccepted(e) {
345
- const r = this.accept.split(",").map((i) => i.trim().toLowerCase());
346
- for (const i of r)
347
- if (i.startsWith(".")) {
348
- if (e.name.toLowerCase().endsWith(i)) return !0;
349
- } else if (i.endsWith("/*")) {
350
- const s = i.slice(0, -2);
339
+ const r = this.accept.split(",").map((t) => t.trim().toLowerCase());
340
+ for (const t of r)
341
+ if (t.startsWith(".")) {
342
+ if (e.name.toLowerCase().endsWith(t)) return !0;
343
+ } else if (t.endsWith("/*")) {
344
+ const s = t.slice(0, -2);
351
345
  if (e.type.toLowerCase().startsWith(s)) return !0;
352
- } else if (e.type.toLowerCase() === i) return !0;
346
+ } else if (e.type.toLowerCase() === t) return !0;
353
347
  return !1;
354
348
  }
355
349
  // ─── File Processing ───
356
350
  /** @internal */
357
351
  _processFiles(e) {
358
352
  if (this.disabled) return;
359
- const r = this.multiple ? e : e.slice(0, 1), i = [], s = [], l = [];
353
+ const r = this.multiple ? e : e.slice(0, 1), t = [], s = [], l = [];
360
354
  for (const h of r) {
361
355
  const m = this._validateFile(h);
362
- m ? (s.push(h), l.push(m)) : i.push(h);
356
+ m ? (s.push(h), l.push(m)) : t.push(h);
363
357
  }
364
358
  if (s.length > 0 && this.dispatchEvent(
365
359
  new CustomEvent("hx-error", {
@@ -367,32 +361,32 @@ let S = 0, t = class extends g {
367
361
  composed: !0,
368
362
  detail: { message: l.join(" "), files: s }
369
363
  })
370
- ), i.length === 0) return;
371
- const d = this.multiple ? this._files.length : 0, n = this.maxFiles > 0 ? Math.max(0, this.maxFiles - d) : i.length, c = i.slice(0, n);
372
- if (c.length === 0 && this.maxFiles > 0) {
364
+ ), t.length === 0) return;
365
+ const d = this.multiple ? this._files.length : 0, n = this.maxFiles > 0 ? Math.max(0, this.maxFiles - d) : t.length, f = t.slice(0, n);
366
+ if (f.length === 0 && this.maxFiles > 0) {
373
367
  this.dispatchEvent(
374
368
  new CustomEvent("hx-error", {
375
369
  bubbles: !0,
376
370
  composed: !0,
377
371
  detail: {
378
372
  message: `Maximum of ${this.maxFiles} file${this.maxFiles === 1 ? "" : "s"} allowed.`,
379
- files: i
373
+ files: t
380
374
  }
381
375
  })
382
376
  );
383
377
  return;
384
378
  }
385
- if (c.length > 0) {
386
- const h = c.map((m) => ({ file: m, progress: 0 }));
379
+ if (f.length > 0) {
380
+ const h = f.map((m) => ({ file: m, progress: 0 }));
387
381
  this.multiple ? this._files = [...this._files, ...h] : this._files = h, this.dispatchEvent(
388
382
  new CustomEvent("hx-upload", {
389
383
  bubbles: !0,
390
384
  composed: !0,
391
- detail: { files: c }
385
+ detail: { files: f }
392
386
  })
393
387
  );
394
388
  }
395
- const u = i.slice(n);
389
+ const u = t.slice(n);
396
390
  u.length > 0 && this.maxFiles > 0 && this.dispatchEvent(
397
391
  new CustomEvent("hx-error", {
398
392
  bubbles: !0,
@@ -412,9 +406,9 @@ let S = 0, t = class extends g {
412
406
  */
413
407
  setProgress(e, r) {
414
408
  if (e < 0 || e >= this._files.length) return;
415
- const i = Math.max(0, Math.min(100, r));
409
+ const t = Math.max(0, Math.min(100, r));
416
410
  this._files = this._files.map(
417
- (s, l) => l === e ? { ...s, progress: i } : s
411
+ (s, l) => l === e ? { ...s, progress: t } : s
418
412
  );
419
413
  }
420
414
  /**
@@ -433,16 +427,16 @@ let S = 0, t = class extends g {
433
427
  var s;
434
428
  const r = e.relatedTarget;
435
429
  if (r && this.contains(r)) return;
436
- const i = (s = this.shadowRoot) == null ? void 0 : s.querySelector(".dropzone");
437
- i && i.contains(r) || (this._dragOver = !1);
430
+ const t = (s = this.shadowRoot) == null ? void 0 : s.querySelector(".dropzone");
431
+ t && t.contains(r) || (this._dragOver = !1);
438
432
  }
439
433
  /** @internal */
440
434
  _handleDrop(e) {
441
435
  if (e.preventDefault(), this._dragOver = !1, this.disabled) return;
442
436
  const r = e.dataTransfer;
443
437
  if (!r) return;
444
- const i = Array.from(r.files);
445
- i.length !== 0 && this._processFiles(i);
438
+ const t = Array.from(r.files);
439
+ t.length !== 0 && this._processFiles(t);
446
440
  }
447
441
  // ─── Click / Keyboard Handlers ───
448
442
  /** @internal */
@@ -459,8 +453,8 @@ let S = 0, t = class extends g {
459
453
  _handleFileInputChange(e) {
460
454
  const r = e.target;
461
455
  if (!r.files || r.files.length === 0) return;
462
- const i = Array.from(r.files);
463
- r.value = "", this._processFiles(i);
456
+ const t = Array.from(r.files);
457
+ r.value = "", this._processFiles(t);
464
458
  }
465
459
  // ─── Remove Handler ───
466
460
  /** @internal */
@@ -468,12 +462,12 @@ let S = 0, t = class extends g {
468
462
  if (this.disabled) return;
469
463
  const r = this._files[e];
470
464
  if (!r) return;
471
- const i = r.file;
465
+ const t = r.file;
472
466
  this._files = this._files.filter((s, l) => l !== e), this.dispatchEvent(
473
467
  new CustomEvent("hx-remove", {
474
468
  bubbles: !0,
475
469
  composed: !0,
476
- detail: { file: i, index: e }
470
+ detail: { file: t, index: e }
477
471
  })
478
472
  );
479
473
  }
@@ -485,12 +479,12 @@ let S = 0, t = class extends g {
485
479
  // ─── Render Helpers ───
486
480
  /** @internal */
487
481
  _renderFileList() {
488
- return this._hasFileListSlot ? p : this._files.length === 0 ? p : f`
482
+ return this._hasFileListSlot ? p : this._files.length === 0 ? p : c`
489
483
  <ul part="file-list" class="file-list" aria-label=${this.labelFileList}>
490
484
  ${$(
491
485
  this._files,
492
486
  (e) => e.file.name + e.file.size,
493
- (e, r) => f`
487
+ (e, r) => c`
494
488
  <li part="file-item" class="file-item">
495
489
  <div class="file-item__row">
496
490
  <span class="file-item__name" title=${e.file.name}> ${e.file.name} </span>
@@ -545,10 +539,10 @@ let S = 0, t = class extends g {
545
539
  dropzone: !0,
546
540
  "dropzone--drag-over": this._dragOver,
547
541
  "dropzone--error": e
548
- }, i = this.label ? `${this.label} — ${this.labelDropzone}` : this.labelDropzone;
549
- return f`
542
+ }, t = this.label ? `${this.label} — ${this.labelDropzone}` : this.labelDropzone;
543
+ return c`
550
544
  <div class="field">
551
- ${this.label ? f`
545
+ ${this.label ? c`
552
546
  <label part="label" class="field__label" id=${this._labelId} for=${this._dropzoneId}>
553
547
  ${this.label}
554
548
  </label>
@@ -560,7 +554,7 @@ let S = 0, t = class extends g {
560
554
  id=${this._dropzoneId}
561
555
  role="button"
562
556
  tabindex=${this.disabled ? "-1" : "0"}
563
- aria-label=${v(this.label ? void 0 : i)}
557
+ aria-label=${v(this.label ? void 0 : t)}
564
558
  aria-labelledby=${v(this.label ? this._labelId : void 0)}
565
559
  aria-disabled=${this.disabled ? "true" : p}
566
560
  aria-describedby=${v(e ? this._errorId : void 0)}
@@ -587,76 +581,73 @@ let S = 0, t = class extends g {
587
581
  <slot name="file-list" @slotchange=${this._handleFileListSlotChange}></slot>
588
582
 
589
583
  ${this._renderFileList()}
590
- ${e ? f`
591
- <div
592
- part="error"
593
- class="field__error"
594
- id=${this._errorId}
595
- role="alert"
596
- aria-live="polite"
597
- >
584
+ ${e ? c`
585
+ <div part="error" class="field__error" id=${this._errorId} role="alert">
598
586
  ${this.error}
599
587
  </div>
600
588
  ` : p}
601
589
 
602
- <div id=${this._liveId} class="sr-only" aria-live="assertive" aria-atomic="true">
603
- ${this._dragOver ? "File detected. Release to upload." : ""}
590
+ <div id=${this._liveId} class="sr-only" aria-live="polite" aria-atomic="true">
591
+ ${this._dragOver ? this.labelDragDetected : ""}
604
592
  </div>
605
593
  </div>
606
594
  `;
607
595
  }
608
596
  };
609
- t.styles = [z, F];
610
- t.formAssociated = !0;
597
+ i.styles = [z];
598
+ i.formAssociated = !0;
611
599
  o([
612
600
  a({ type: String })
613
- ], t.prototype, "name", 2);
601
+ ], i.prototype, "name", 2);
614
602
  o([
615
603
  a({ type: String })
616
- ], t.prototype, "accept", 2);
604
+ ], i.prototype, "accept", 2);
617
605
  o([
618
606
  a({ type: Number, attribute: "max-size" })
619
- ], t.prototype, "maxSize", 2);
607
+ ], i.prototype, "maxSize", 2);
620
608
  o([
621
609
  a({ type: Number, attribute: "max-files" })
622
- ], t.prototype, "maxFiles", 2);
610
+ ], i.prototype, "maxFiles", 2);
623
611
  o([
624
612
  a({ type: Boolean })
625
- ], t.prototype, "multiple", 2);
613
+ ], i.prototype, "multiple", 2);
626
614
  o([
627
615
  a({ type: String })
628
- ], t.prototype, "label", 2);
616
+ ], i.prototype, "label", 2);
629
617
  o([
630
618
  a({ type: Boolean, reflect: !0 })
631
- ], t.prototype, "disabled", 2);
619
+ ], i.prototype, "disabled", 2);
632
620
  o([
633
621
  a({ type: String })
634
- ], t.prototype, "error", 2);
622
+ ], i.prototype, "error", 2);
635
623
  o([
636
624
  a({ type: String, attribute: "label-dropzone" })
637
- ], t.prototype, "labelDropzone", 2);
625
+ ], i.prototype, "labelDropzone", 2);
638
626
  o([
639
627
  a({ type: String, attribute: "label-file-list" })
640
- ], t.prototype, "labelFileList", 2);
628
+ ], i.prototype, "labelFileList", 2);
641
629
  o([
642
630
  a({ attribute: !1 })
643
- ], t.prototype, "labelUploadProgress", 2);
631
+ ], i.prototype, "labelUploadProgress", 2);
632
+ o([
633
+ a({ attribute: "label-drag-detected" })
634
+ ], i.prototype, "labelDragDetected", 2);
644
635
  o([
645
- x()
646
- ], t.prototype, "_files", 2);
636
+ b()
637
+ ], i.prototype, "_files", 2);
647
638
  o([
648
- x()
649
- ], t.prototype, "_dragOver", 2);
639
+ b()
640
+ ], i.prototype, "_dragOver", 2);
650
641
  o([
651
- x()
652
- ], t.prototype, "_hasFileListSlot", 2);
642
+ b()
643
+ ], i.prototype, "_hasFileListSlot", 2);
653
644
  o([
654
645
  _(".file-input")
655
- ], t.prototype, "_fileInput", 2);
656
- t = o([
646
+ ], i.prototype, "_fileInput", 2);
647
+ i = o([
657
648
  y("hx-file-upload")
658
- ], t);
649
+ ], i);
659
650
  export {
660
- t as H
651
+ i as H
661
652
  };
662
- //# sourceMappingURL=hx-file-upload-ByjAgfNy.js.map
653
+ //# sourceMappingURL=hx-file-upload-79nMhnM_.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hx-file-upload-79nMhnM_.js","sources":["../../src/components/hx-file-upload/hx-file-upload.styles.ts","../../src/components/hx-file-upload/hx-file-upload.ts"],"sourcesContent":["import { css } from 'lit';\n\nexport const helixFileUploadStyles = css`\n :host {\n display: block;\n }\n\n :host([disabled]) {\n opacity: var(--hx-opacity-disabled, 0.5);\n pointer-events: none;\n }\n\n * {\n box-sizing: border-box;\n }\n\n .field {\n display: flex;\n flex-direction: column;\n gap: var(--hx-space-2, 0.5rem);\n font-family: var(--hx-font-family-sans, sans-serif);\n }\n\n /* ─── Label ─── */\n\n .field__label {\n display: flex;\n align-items: baseline;\n gap: var(--hx-space-1, 0.25rem);\n font-size: var(--hx-font-size-sm, 0.875rem);\n font-weight: var(--hx-font-weight-medium, 500);\n color: var(--hx-color-neutral-700, #343a40);\n line-height: var(--hx-line-height-normal, 1.5);\n }\n\n /* ─── Dropzone ─── */\n\n .dropzone {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n gap: var(--hx-space-2, 0.5rem);\n min-height: var(--hx-space-32, 8rem);\n padding: var(--hx-space-6, 1.5rem) var(--hx-space-4, 1rem);\n border: var(--hx-border-width-thin, 1px) dashed\n var(--hx-file-upload-dropzone-border-color, var(--hx-color-neutral-300, #ced4da));\n border-radius: var(--hx-file-upload-dropzone-border-radius, var(--hx-border-radius-lg, 0.5rem));\n background-color: var(--hx-file-upload-dropzone-bg, var(--hx-color-neutral-50, #f8f9fa));\n cursor: pointer;\n text-align: center;\n transition:\n border-color var(--hx-transition-fast, 150ms ease),\n background-color var(--hx-transition-fast, 150ms ease),\n box-shadow var(--hx-transition-fast, 150ms ease);\n user-select: none;\n color: var(--hx-color-neutral-600, #495057);\n font-size: var(--hx-font-size-sm, 0.875rem);\n }\n\n .dropzone:focus-visible {\n outline: var(--hx-focus-ring-width, 2px) solid\n var(\n --hx-file-upload-focus-ring-color,\n var(--hx-focus-ring-color, var(--hx-color-primary-500))\n );\n outline-offset: var(--hx-focus-ring-offset, 2px);\n border-color: var(\n --hx-file-upload-focus-ring-color,\n var(--hx-focus-ring-color, var(--hx-color-primary-500))\n );\n }\n\n .dropzone--drag-over {\n border-color: var(--hx-color-primary-500, #2563eb);\n background-color: var(\n --hx-file-upload-dropzone-active-bg,\n color-mix(\n in srgb,\n var(--hx-color-primary-500, #2563eb) 8%,\n var(--hx-color-neutral-0, #ffffff)\n )\n );\n border-style: solid;\n }\n\n .dropzone--error {\n border-color: var(--hx-file-upload-error-color, var(--hx-color-error-500, #dc3545));\n }\n\n @media (prefers-reduced-motion: reduce) {\n .dropzone {\n transition: none;\n }\n }\n\n /* ─── Hidden file input ─── */\n\n .file-input {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n border-width: 0;\n }\n\n /* ─── File list ─── */\n\n .file-list {\n display: flex;\n flex-direction: column;\n gap: var(--hx-space-2, 0.5rem);\n list-style: none;\n margin: 0;\n padding: 0;\n }\n\n .file-list:empty {\n display: none;\n }\n\n /* ─── File item ─── */\n\n .file-item {\n display: flex;\n flex-direction: column;\n gap: var(--hx-space-1, 0.25rem);\n padding: var(--hx-space-2, 0.5rem) var(--hx-space-3, 0.75rem);\n border: var(--hx-border-width-thin, 1px) solid var(--hx-color-neutral-200, #e9ecef);\n border-radius: var(--hx-border-radius-md, 0.375rem);\n background-color: var(--hx-color-neutral-0, #ffffff);\n }\n\n .file-item__row {\n display: flex;\n align-items: center;\n gap: var(--hx-space-2, 0.5rem);\n }\n\n .file-item__name {\n flex: 1;\n font-size: var(--hx-font-size-sm, 0.875rem);\n font-weight: var(--hx-font-weight-medium, 500);\n color: var(--hx-color-neutral-800, #212529);\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n\n .file-item__size {\n flex-shrink: 0;\n font-size: var(--hx-font-size-xs, 0.75rem);\n color: var(--hx-color-neutral-500, #6c757d);\n }\n\n .file-item__remove {\n flex-shrink: 0;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n padding: var(--hx-space-1, 0.25rem);\n border: none;\n border-radius: var(--hx-border-radius-sm, 0.25rem);\n background: transparent;\n color: var(--hx-color-neutral-500, #6c757d);\n cursor: pointer;\n line-height: 1;\n transition:\n color var(--hx-transition-fast, 150ms ease),\n background-color var(--hx-transition-fast, 150ms ease);\n }\n\n .file-item__remove:hover {\n color: var(--hx-file-upload-error-color, var(--hx-color-error-text, #b91c1c));\n background-color: color-mix(in srgb, var(--hx-color-error-500, #dc3545) 8%, transparent);\n }\n\n .file-item__remove:focus-visible {\n outline: var(--hx-focus-ring-width, 2px) solid\n var(\n --hx-file-upload-focus-ring-color,\n var(--hx-focus-ring-color, var(--hx-color-primary-500))\n );\n outline-offset: var(--hx-focus-ring-offset, 2px);\n }\n\n @media (prefers-reduced-motion: reduce) {\n .file-item__remove {\n transition: none;\n }\n }\n\n /* ─── Progress bar ─── */\n\n .progress-track {\n width: 100%;\n height: var(--hx-file-upload-progress-height, var(--hx-space-1, 0.25rem));\n background-color: var(--hx-color-neutral-200, #e9ecef);\n border-radius: var(--hx-border-radius-full, 9999px);\n overflow: hidden;\n }\n\n .progress-bar {\n height: 100%;\n width: 100%;\n background-color: var(--hx-file-upload-progress-color, var(--hx-color-primary-500, #2563eb));\n border-radius: inherit;\n transform-origin: left center;\n transform: scaleX(var(--_progress-ratio, 0));\n transition: transform var(--hx-transition-fast, 150ms ease);\n }\n\n @media (prefers-reduced-motion: reduce) {\n .progress-bar {\n transition: none;\n }\n }\n\n /* ─── Screen-reader only utility ─── */\n\n .sr-only {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n border-width: 0;\n }\n\n /* ─── Error message ─── */\n\n .field__error {\n font-size: var(--hx-font-size-xs, 0.75rem);\n color: var(--hx-file-upload-error-color, var(--hx-color-error-text, #b91c1c));\n line-height: var(--hx-line-height-normal, 1.5);\n }\n`;\n","import { LitElement, html, nothing, type PropertyValues } from 'lit';\nimport '../../utilities/document-token-adoption.js';\nimport { customElement, property, query, state } from 'lit/decorators.js';\nimport { classMap } from 'lit/directives/class-map.js';\nimport { ifDefined } from 'lit/directives/if-defined.js';\nimport { repeat } from 'lit/directives/repeat.js';\nimport { helixFileUploadStyles } from './hx-file-upload.styles.js';\n\n// Module-level counter for stable, SSR-safe IDs (avoids Math.random() hydration mismatch)\nlet _hxFileUploadIdCounter = 0;\n\ninterface FileEntry {\n file: File;\n progress: number;\n}\n\n/**\n * A drag-and-drop file upload component with client-side validation,\n * file list management, per-file progress, and native form association.\n *\n * @summary Form-associated file upload dropzone with drag-and-drop, validation, and progress tracking.\n *\n * @tag hx-file-upload\n *\n * @slot - Default dropzone content. Replaces the built-in \"Drag files here or click to browse\" prompt.\n * @slot file-list - Custom file list display. When provided, the built-in file list is hidden.\n *\n * @fires {CustomEvent<{files: File[]}>} hx-upload - Dispatched when valid files are selected via drag-and-drop or the file picker.\n * @fires {CustomEvent<{file: File, index: number}>} hx-remove - Dispatched when a file is removed from the list.\n * @fires {CustomEvent<{message: string, files: File[]}>} hx-error - Dispatched when file validation fails (type or size constraint).\n *\n * @csspart dropzone - The drag-and-drop target area.\n * @csspart file-list - The container wrapping the list of selected files.\n * @csspart file-item - An individual file entry in the list.\n * @csspart progress - The progress bar track for a file item.\n * @csspart label - The visible label element.\n * @csspart error - The error message container below the dropzone.\n *\n * @cssprop [--hx-file-upload-dropzone-bg=var(--hx-color-neutral-50)] - Dropzone background color.\n * @cssprop [--hx-file-upload-dropzone-border-color=var(--hx-color-neutral-300)] - Dropzone border color.\n * @cssprop [--hx-file-upload-dropzone-border-radius=var(--hx-border-radius-lg)] - Dropzone border radius.\n * @cssprop [--hx-file-upload-dropzone-active-bg] - Dropzone background when a file is dragged over.\n * @cssprop [--hx-file-upload-progress-color=var(--hx-color-primary-500)] - Progress bar fill color.\n * @cssprop [--hx-file-upload-error-color=var(--hx-color-error-500)] - Error state and remove-button hover color.\n */\n@customElement('hx-file-upload')\nexport class HelixFileUpload extends LitElement {\n static override styles = [helixFileUploadStyles];\n\n // ─── Form Association ───\n\n /** Marks this element as form-associated for ElementInternals support. @internal */\n static formAssociated = true;\n\n /** Holds the ElementInternals instance used for form value and validity management. @internal */\n private _internals: ElementInternals;\n\n constructor() {\n super();\n /** @internal */\n this._internals = this.attachInternals();\n }\n\n // ─── Properties ───\n\n /**\n * The form field name used during form submission.\n * @attr name\n */\n @property({ type: String })\n name = '';\n\n /**\n * Accepted file types as a comma-separated list of MIME types or extensions.\n * Mirrors the native `<input type=\"file\" accept>` attribute.\n * @attr accept\n */\n @property({ type: String })\n accept = '';\n\n /**\n * Maximum allowed file size in bytes. 0 means unlimited.\n * @attr max-size\n */\n @property({ type: Number, attribute: 'max-size' })\n maxSize = 0;\n\n /**\n * Maximum number of files that can be selected. 0 means unlimited.\n * @attr max-files\n */\n @property({ type: Number, attribute: 'max-files' })\n maxFiles = 0;\n\n /**\n * Whether multiple files may be selected at once.\n * @attr multiple\n */\n @property({ type: Boolean })\n multiple = false;\n\n /**\n * Visible label text for the dropzone.\n * @attr label\n */\n @property({ type: String })\n label = '';\n\n /**\n * Whether the component is disabled.\n * @attr disabled\n */\n @property({ type: Boolean, reflect: true })\n disabled = false;\n\n /**\n * Error message displayed below the dropzone. Also puts the dropzone in an error visual state.\n * @attr error\n */\n @property({ type: String })\n error = '';\n\n /**\n * Instructional text shown in the dropzone when no custom slot content is provided.\n * Also used as the accessible label for the dropzone.\n * @attr label-dropzone\n */\n @property({ type: String, attribute: 'label-dropzone' })\n labelDropzone = 'Drag files here or click to browse';\n\n /** Accessible label for the selected files list. */\n @property({ type: String, attribute: 'label-file-list' })\n labelFileList = 'Selected files';\n\n /**\n * Generates upload progress description for screen readers.\n * @param name - file name\n * @param progress - progress percentage 0-100\n */\n @property({ attribute: false })\n labelUploadProgress: (name: string, progress: number) => string = (name, progress) =>\n `Upload progress for ${name}: ${progress}%`;\n\n /**\n * Screen reader announcement when file drag detected. Override for i18n.\n * @attr label-drag-detected\n */\n @property({ attribute: 'label-drag-detected' })\n labelDragDetected = 'File detected. Release to upload.';\n\n // ─── Internal State ───\n\n /** The list of currently selected file entries, each with a file reference and upload progress. @internal */\n @state() private _files: FileEntry[] = [];\n /** Whether a file is currently being dragged over the dropzone. @internal */\n @state() private _dragOver = false;\n /** Whether the named file-list slot contains projected content. @internal */\n @state() private _hasFileListSlot = false;\n\n // ─── Internal References ───\n\n /** Reference to the hidden native file input element used to open the OS file picker. @internal */\n @query('.file-input')\n private _fileInput: HTMLInputElement | null | undefined;\n\n // ─── Stable IDs ───\n\n /** @internal */\n private readonly _baseId = `hx-file-upload-${++_hxFileUploadIdCounter}`;\n /** @internal */\n private readonly _labelId = `${this._baseId}-label`;\n /** @internal */\n private readonly _errorId = `${this._baseId}-error`;\n /** @internal */\n private readonly _dropzoneId = `${this._baseId}-dropzone`;\n /** @internal */\n private readonly _liveId = `${this._baseId}-live`;\n\n // ─── Slot Handling ───\n\n /** @internal */\n private _handleFileListSlotChange(e: Event): void {\n const slot = e.target as HTMLSlotElement;\n this._hasFileListSlot = slot.assignedElements({ flatten: true }).length > 0;\n }\n\n // ─── Lifecycle ───\n\n override updated(changedProperties: PropertyValues<this>): void {\n super.updated(changedProperties);\n if (changedProperties.has('_files' as keyof HelixFileUpload) || changedProperties.has('name')) {\n this._syncFormValue();\n }\n }\n\n // ─── Form Integration ───\n\n /** Returns the associated form element, if any. */\n get form(): HTMLFormElement | null {\n return this._internals.form;\n }\n\n /** Returns the validation message. */\n get validationMessage(): string {\n return this._internals.validationMessage;\n }\n\n /** Returns the ValidityState object. */\n get validity(): ValidityState {\n return this._internals.validity;\n }\n\n /** Checks whether the component satisfies its constraints. */\n checkValidity(): boolean {\n return this._internals.checkValidity();\n }\n\n /** Reports validity and shows the browser's constraint validation UI. */\n reportValidity(): boolean {\n return this._internals.reportValidity();\n }\n\n /** @internal */\n formResetCallback(): void {\n this._files = [];\n this._internals.setFormValue(null);\n }\n\n /** @internal */\n formDisabledCallback(disabled: boolean): void {\n this.disabled = disabled;\n }\n\n /** @internal */\n formStateRestoreCallback(_state: string | File | FormData, mode: string): void {\n if (mode === 'restore' || mode === 'autocomplete') {\n this._files = [];\n this._internals.setFormValue(null);\n }\n }\n\n /** @internal */\n private _syncFormValue(): void {\n if (this._files.length === 0) {\n this._internals.setFormValue(null);\n return;\n }\n\n if (this._files.length === 1) {\n // Single file — pass directly as File (accepted by setFormValue)\n const firstEntry = this._files[0];\n if (firstEntry) {\n this._internals.setFormValue(firstEntry.file);\n }\n return;\n }\n\n // Multiple files — use FormData so all files are submitted under the same name\n const formData = new FormData();\n for (const entry of this._files) {\n formData.append(this.name, entry.file, entry.file.name);\n }\n this._internals.setFormValue(formData);\n }\n\n // ─── Validation ───\n\n /**\n * Validates a file against `accept` and `maxSize` constraints.\n * Returns null on success, or an error message string on failure.\n */\n /** @internal */\n private _validateFile(file: File): string | null {\n if (this.accept) {\n const accepted = this._isAccepted(file);\n if (!accepted) {\n return `\"${file.name}\" has an unsupported file type. Accepted types: ${this.accept}`;\n }\n }\n\n if (this.maxSize > 0 && file.size > this.maxSize) {\n const maxMb = (this.maxSize / (1024 * 1024)).toFixed(1);\n return `\"${file.name}\" exceeds the maximum size of ${maxMb} MB.`;\n }\n\n return null;\n }\n\n /**\n * Checks whether a file is accepted given the `accept` attribute value.\n * Handles MIME types (e.g. \"image/png\"), wildcard MIME types (e.g. \"image/*\"),\n * and extensions (e.g. \".pdf\").\n */\n /** @internal */\n private _isAccepted(file: File): boolean {\n const tokens = this.accept.split(',').map((t) => t.trim().toLowerCase());\n\n for (const token of tokens) {\n if (token.startsWith('.')) {\n // Extension match\n if (file.name.toLowerCase().endsWith(token)) return true;\n } else if (token.endsWith('/*')) {\n // Wildcard MIME type e.g. \"image/*\"\n const baseType = token.slice(0, -2);\n if (file.type.toLowerCase().startsWith(baseType)) return true;\n } else {\n // Exact MIME type\n if (file.type.toLowerCase() === token) return true;\n }\n }\n\n return false;\n }\n\n // ─── File Processing ───\n\n /** @internal */\n private _processFiles(rawFiles: File[]): void {\n if (this.disabled) return;\n\n const candidateFiles = this.multiple ? rawFiles : rawFiles.slice(0, 1);\n const validFiles: File[] = [];\n const invalidFiles: File[] = [];\n const errorMessages: string[] = [];\n\n for (const file of candidateFiles) {\n const validationError = this._validateFile(file);\n if (validationError) {\n invalidFiles.push(file);\n errorMessages.push(validationError);\n } else {\n validFiles.push(file);\n }\n }\n\n if (invalidFiles.length > 0) {\n this.dispatchEvent(\n new CustomEvent<{ message: string; files: File[] }>('hx-error', {\n bubbles: true,\n composed: true,\n detail: { message: errorMessages.join(' '), files: invalidFiles },\n }),\n );\n }\n\n if (validFiles.length === 0) return;\n\n // Enforce maxFiles limit (only in multiple mode — single-file mode always replaces)\n const currentCount = this.multiple ? this._files.length : 0;\n const capacity =\n this.maxFiles > 0 ? Math.max(0, this.maxFiles - currentCount) : validFiles.length;\n const allowedFiles = validFiles.slice(0, capacity);\n\n if (allowedFiles.length === 0 && this.maxFiles > 0) {\n this.dispatchEvent(\n new CustomEvent<{ message: string; files: File[] }>('hx-error', {\n bubbles: true,\n composed: true,\n detail: {\n message: `Maximum of ${this.maxFiles} file${this.maxFiles === 1 ? '' : 's'} allowed.`,\n files: validFiles,\n },\n }),\n );\n return;\n }\n\n if (allowedFiles.length > 0) {\n const newEntries: FileEntry[] = allowedFiles.map((file) => ({ file, progress: 0 }));\n\n if (this.multiple) {\n this._files = [...this._files, ...newEntries];\n } else {\n this._files = newEntries;\n }\n\n this.dispatchEvent(\n new CustomEvent<{ files: File[] }>('hx-upload', {\n bubbles: true,\n composed: true,\n detail: { files: allowedFiles },\n }),\n );\n }\n\n // If remaining valid files were cut by maxFiles, report that too\n const overflow = validFiles.slice(capacity);\n if (overflow.length > 0 && this.maxFiles > 0) {\n this.dispatchEvent(\n new CustomEvent<{ message: string; files: File[] }>('hx-error', {\n bubbles: true,\n composed: true,\n detail: {\n message: `Maximum of ${this.maxFiles} file${this.maxFiles === 1 ? '' : 's'} allowed. ${overflow.length} file${overflow.length === 1 ? ' was' : 's were'} not added.`,\n files: overflow,\n },\n }),\n );\n }\n }\n\n // ─── Public Methods ───\n\n /**\n * Sets the upload progress for a file at the given index.\n * @param index - Zero-based index into the current file list.\n * @param percent - Progress percentage from 0 to 100.\n */\n setProgress(index: number, percent: number): void {\n if (index < 0 || index >= this._files.length) return;\n const clamped = Math.max(0, Math.min(100, percent));\n this._files = this._files.map((entry, i) =>\n i === index ? { ...entry, progress: clamped } : entry,\n );\n }\n\n /**\n * Returns a read-only copy of the currently selected files.\n */\n get files(): File[] {\n return this._files.map((e) => e.file);\n }\n\n // ─── Drag and Drop Handlers ───\n\n /** @internal */\n private _handleDragOver(e: DragEvent): void {\n e.preventDefault();\n if (this.disabled) return;\n this._dragOver = true;\n }\n\n /** @internal */\n private _handleDragLeave(e: DragEvent): void {\n // Only clear drag state when leaving the dropzone entirely\n const target = e.relatedTarget as Node | null;\n if (target && this.contains(target)) return;\n const dropzone = this.shadowRoot?.querySelector('.dropzone');\n if (dropzone && dropzone.contains(target)) return;\n this._dragOver = false;\n }\n\n /** @internal */\n private _handleDrop(e: DragEvent): void {\n e.preventDefault();\n this._dragOver = false;\n if (this.disabled) return;\n\n const dt = e.dataTransfer;\n if (!dt) return;\n\n const rawFiles = Array.from(dt.files);\n if (rawFiles.length === 0) return;\n\n this._processFiles(rawFiles);\n }\n\n // ─── Click / Keyboard Handlers ───\n\n /** @internal */\n private _handleDropzoneClick(): void {\n if (this.disabled) return;\n this._fileInput?.click();\n }\n\n /** @internal */\n private _handleDropzoneKeyDown(e: KeyboardEvent): void {\n if (this.disabled) return;\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n this._fileInput?.click();\n }\n }\n\n /** @internal */\n private _handleFileInputChange(e: Event): void {\n const input = e.target as HTMLInputElement;\n if (!input.files || input.files.length === 0) return;\n\n const rawFiles = Array.from(input.files);\n // Reset the input so the same file can be re-selected after removal\n input.value = '';\n this._processFiles(rawFiles);\n }\n\n // ─── Remove Handler ───\n\n /** @internal */\n private _handleRemove(index: number): void {\n if (this.disabled) return;\n const entry = this._files[index];\n if (!entry) return;\n\n const removedFile = entry.file;\n this._files = this._files.filter((_, i) => i !== index);\n\n this.dispatchEvent(\n new CustomEvent<{ file: File; index: number }>('hx-remove', {\n bubbles: true,\n composed: true,\n detail: { file: removedFile, index },\n }),\n );\n }\n\n // ─── Formatters ───\n\n /** @internal */\n private _formatSize(bytes: number): string {\n if (bytes < 1024) return `${bytes} B`;\n if (bytes < 1024 * 1024) return `${(bytes / 1024).toFixed(1)} KB`;\n return `${(bytes / (1024 * 1024)).toFixed(1)} MB`;\n }\n\n // ─── Render Helpers ───\n\n /** @internal */\n private _renderFileList() {\n if (this._hasFileListSlot) return nothing;\n if (this._files.length === 0) return nothing;\n\n return html`\n <ul part=\"file-list\" class=\"file-list\" aria-label=${this.labelFileList}>\n ${repeat(\n this._files,\n (entry) => entry.file.name + entry.file.size,\n (entry, index) => html`\n <li part=\"file-item\" class=\"file-item\">\n <div class=\"file-item__row\">\n <span class=\"file-item__name\" title=${entry.file.name}> ${entry.file.name} </span>\n <span class=\"file-item__size\">${this._formatSize(entry.file.size)}</span>\n <button\n type=\"button\"\n class=\"file-item__remove\"\n aria-label=${`Remove ${entry.file.name}`}\n @click=${() => this._handleRemove(index)}\n >\n <svg\n width=\"14\"\n height=\"14\"\n viewBox=\"0 0 14 14\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-hidden=\"true\"\n focusable=\"false\"\n >\n <path\n d=\"M1 1L13 13M13 1L1 13\"\n stroke=\"currentColor\"\n stroke-width=\"1.75\"\n stroke-linecap=\"round\"\n />\n </svg>\n </button>\n </div>\n <div\n part=\"progress\"\n class=\"progress-track\"\n role=\"progressbar\"\n aria-valuenow=${entry.progress}\n aria-valuemin=\"0\"\n aria-valuemax=\"100\"\n aria-label=${this.labelUploadProgress(entry.file.name, entry.progress)}\n >\n <div\n class=\"progress-bar\"\n style=\"--_progress-ratio: ${String(entry.progress / 100)}\"\n ></div>\n </div>\n </li>\n `,\n )}\n </ul>\n `;\n }\n\n // ─── Render ───\n\n override render() {\n const hasError = !!this.error;\n\n const dropzoneClasses = {\n dropzone: true,\n 'dropzone--drag-over': this._dragOver,\n 'dropzone--error': hasError,\n };\n\n const dropzoneLabel = this.label ? `${this.label} — ${this.labelDropzone}` : this.labelDropzone;\n\n return html`\n <div class=\"field\">\n ${this.label\n ? html`\n <label part=\"label\" class=\"field__label\" id=${this._labelId} for=${this._dropzoneId}>\n ${this.label}\n </label>\n `\n : nothing}\n\n <div\n part=\"dropzone\"\n class=${classMap(dropzoneClasses)}\n id=${this._dropzoneId}\n role=\"button\"\n tabindex=${this.disabled ? '-1' : '0'}\n aria-label=${ifDefined(!this.label ? dropzoneLabel : undefined)}\n aria-labelledby=${ifDefined(this.label ? this._labelId : undefined)}\n aria-disabled=${this.disabled ? 'true' : nothing}\n aria-describedby=${ifDefined(hasError ? this._errorId : undefined)}\n @click=${this._handleDropzoneClick}\n @keydown=${this._handleDropzoneKeyDown}\n @dragover=${this._handleDragOver}\n @dragleave=${this._handleDragLeave}\n @drop=${this._handleDrop}\n >\n <slot>${this.labelDropzone}</slot>\n </div>\n\n <input\n class=\"file-input\"\n type=\"file\"\n tabindex=\"-1\"\n aria-hidden=\"true\"\n accept=${ifDefined(this.accept || undefined)}\n ?multiple=${this.multiple}\n ?disabled=${this.disabled}\n @change=${this._handleFileInputChange}\n />\n\n <slot name=\"file-list\" @slotchange=${this._handleFileListSlotChange}></slot>\n\n ${this._renderFileList()}\n ${hasError\n ? html`\n <div part=\"error\" class=\"field__error\" id=${this._errorId} role=\"alert\">\n ${this.error}\n </div>\n `\n : nothing}\n\n <div id=${this._liveId} class=\"sr-only\" aria-live=\"polite\" aria-atomic=\"true\">\n ${this._dragOver ? this.labelDragDetected : ''}\n </div>\n </div>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'hx-file-upload': HelixFileUpload;\n }\n}\n"],"names":["helixFileUploadStyles","css","_hxFileUploadIdCounter","HelixFileUpload","LitElement","name","progress","slot","changedProperties","disabled","_state","mode","firstEntry","formData","entry","file","maxMb","tokens","token","baseType","rawFiles","candidateFiles","validFiles","invalidFiles","errorMessages","validationError","currentCount","capacity","allowedFiles","newEntries","overflow","index","percent","clamped","i","target","dropzone","_a","dt","input","removedFile","_","bytes","nothing","html","repeat","hasError","dropzoneClasses","dropzoneLabel","classMap","ifDefined","__decorateClass","property","state","query","customElement"],"mappings":";;;;;;AAEO,MAAMA,IAAwBC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;A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"}
@@ -4,10 +4,10 @@ import { ifDefined as p } from "lit/directives/if-defined.js";
4
4
  import { A as u } from "./adopted-stylesheets-BZZnCSAs.js";
5
5
  const v = `hx-form{display:flex;flex-direction:column;gap:var(--hx-form-gap, var(--hx-space-4, 1rem));max-width:var(--hx-form-max-width, none);padding:var(--hx-form-padding, 0)}hx-form .hx-form-error-summary{border:var(--hx-border-width-thin, 1px) solid var(--hx-input-error-color, var(--hx-color-error-500, #dc3545));border-radius:var(--hx-border-radius-md, .375rem);background-color:var(--hx-color-error-50, #fef2f2);color:var(--hx-input-error-color, var(--hx-color-error-500, #dc3545));padding:var(--hx-space-3, .75rem) var(--hx-space-4, 1rem);font-size:var(--hx-font-size-sm, .875rem);line-height:var(--hx-line-height-normal, 1.5);font-family:var(--hx-input-font-family, var(--hx-font-family-sans, sans-serif))}hx-form .hx-form-error-summary ul{margin:0;padding:0 0 0 var(--hx-space-4, 1rem)}hx-form .hx-form-error-summary li{margin-bottom:var(--hx-space-1, .25rem)}hx-form .hx-form-error-summary li:last-child{margin-bottom:0}hx-form .form-item{display:flex;flex-direction:column;gap:var(--hx-space-1, .25rem);font-family:var(--hx-input-font-family, var(--hx-font-family-sans, sans-serif))}hx-form .form-item+.form-item{margin-top:var(--hx-space-4, 1rem)}hx-form label{display:flex;align-items:baseline;gap:var(--hx-space-1, .25rem);font-size:var(--hx-font-size-sm, .875rem);font-weight:var(--hx-font-weight-medium, 500);color:var(--hx-input-label-color, var(--hx-color-neutral-700, #343a40));line-height:var(--hx-line-height-normal, 1.5)}hx-form .form-required{color:var(--hx-input-error-color, var(--hx-color-error-500, #dc3545));font-weight:var(--hx-font-weight-bold, 700)}hx-form .description{font-size:var(--hx-font-size-xs, .75rem);color:var(--hx-color-neutral-500, #6c757d);line-height:var(--hx-line-height-normal, 1.5)}hx-form .form-item :is(*,*:before,*:after){box-sizing:border-box}hx-form :is(input:is([type=text],[type=email],[type=password],[type=tel],[type=url],[type=search],[type=number]),textarea){display:block;width:100%;border:var(--hx-border-width-thin, 1px) solid var(--hx-input-border-color, var(--hx-color-neutral-300, #ced4da));border-radius:var(--hx-input-border-radius, var(--hx-border-radius-md, .375rem));background-color:var(--hx-input-bg, var(--hx-color-neutral-0, #ffffff));padding:var(--hx-space-2, .5rem) var(--hx-space-3, .75rem);font-family:var(--hx-input-font-family, var(--hx-font-family-sans, sans-serif));font-size:var(--hx-font-size-md, 1rem);color:var(--hx-input-color, var(--hx-color-neutral-800, #212529));line-height:var(--hx-line-height-normal, 1.5);transition:border-color var(--hx-transition-fast, .15s ease),box-shadow var(--hx-transition-fast, .15s ease)}hx-form input:is([type=text],[type=email],[type=password],[type=tel],[type=url],[type=search],[type=number]){min-height:var(--hx-size-10, 2.5rem)}hx-form :is(input:is([type=text],[type=email],[type=password],[type=tel],[type=url],[type=search],[type=number]),textarea)::placeholder{color:var(--hx-color-neutral-400, #adb5bd)}hx-form :is(input:is([type=text],[type=email],[type=password],[type=tel],[type=url],[type=search],[type=number]),textarea):focus{outline:0;border-color:var(--hx-input-focus-ring-color, var(--hx-focus-ring-color, #2563eb));box-shadow:0 0 0 var(--hx-focus-ring-width, 2px) color-mix(in srgb,var(--hx-input-focus-ring-color, var(--hx-focus-ring-color, #2563eb)) calc(var(--hx-focus-ring-opacity, .25) * 100%),transparent)}hx-form :is(input:is([type=text],[type=email],[type=password],[type=tel],[type=url],[type=search],[type=number]),textarea):disabled{opacity:var(--hx-opacity-disabled, .5);cursor:not-allowed;pointer-events:none}hx-form :is(input:is([type=text],[type=email],[type=password],[type=tel],[type=url],[type=search],[type=number]),textarea):read-only{background-color:var(--hx-color-neutral-100, #e9ecef)}hx-form input[type=search]::-webkit-search-decoration,hx-form input[type=search]::-webkit-search-cancel-button,hx-form input[type=search]::-webkit-search-results-button,hx-form input[type=search]::-webkit-search-results-decoration{-webkit-appearance:none}hx-form input[type=number]::-webkit-inner-spin-button,hx-form input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}hx-form input[type=number]{appearance:textfield}hx-form textarea{min-height:var(--hx-textarea-min-height, var(--hx-size-20, 5rem));resize:vertical}hx-form select{display:block;width:100%;border:var(--hx-border-width-thin, 1px) solid var(--hx-select-border-color, var(--hx-color-neutral-300, #ced4da));border-radius:var(--hx-select-border-radius, var(--hx-border-radius-md, .375rem));background-color:var(--hx-select-bg, var(--hx-color-neutral-0, #ffffff));padding:var(--hx-space-2, .5rem) var(--hx-space-8, 2rem) var(--hx-space-2, .5rem) var(--hx-space-3, .75rem);font-family:var(--hx-select-font-family, var(--hx-font-family-sans, sans-serif));font-size:var(--hx-font-size-md, 1rem);color:var(--hx-select-color, var(--hx-color-neutral-800, #212529));line-height:var(--hx-line-height-normal, 1.5);min-height:var(--hx-input-height-md, var(--hx-size-10, 2.5rem));cursor:pointer;transition:border-color var(--hx-transition-fast, .15s ease),box-shadow var(--hx-transition-fast, .15s ease);appearance:none;-webkit-appearance:none;-moz-appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath d='M1 1.5L6 6.5L11 1.5' stroke='%236c757d' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round' fill='none'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right var(--hx-space-3, .75rem) center;background-size:12px 8px}hx-form select:focus{outline:0;border-color:var(--hx-select-focus-ring-color, var(--hx-focus-ring-color, #2563eb));box-shadow:0 0 0 var(--hx-focus-ring-width, 2px) color-mix(in srgb,var(--hx-select-focus-ring-color, var(--hx-focus-ring-color, #2563eb)) calc(var(--hx-focus-ring-opacity, .25) * 100%),transparent)}hx-form select:disabled{opacity:var(--hx-opacity-disabled, .5);cursor:not-allowed;pointer-events:none}hx-form select[multiple]{min-height:var(--hx-size-20, 5rem);padding-right:var(--hx-space-3, .75rem);background-image:none}hx-form select[multiple] option{padding:var(--hx-space-1, .25rem) var(--hx-space-2, .5rem)}hx-form select::-ms-expand{display:none}hx-form :is(input[type=checkbox],input[type=radio]){appearance:none;-webkit-appearance:none;-moz-appearance:none;display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;margin:0;background-color:var(--hx-color-neutral-0, #ffffff);cursor:pointer;vertical-align:middle;transition:background-color var(--hx-transition-fast, .15s ease),border-color var(--hx-transition-fast, .15s ease),box-shadow var(--hx-transition-fast, .15s ease)}hx-form input[type=checkbox]{width:var(--hx-checkbox-size, var(--hx-size-5, 1.25rem));height:var(--hx-checkbox-size, var(--hx-size-5, 1.25rem));border:var(--hx-border-width-medium, 2px) solid var(--hx-checkbox-border-color, var(--hx-color-neutral-300, #ced4da));border-radius:var(--hx-checkbox-border-radius, var(--hx-border-radius-sm, .25rem))}hx-form input[type=checkbox]:checked{background-color:var(--hx-checkbox-checked-bg, var(--hx-color-primary-500, #2563eb));border-color:var(--hx-checkbox-checked-border-color, var(--hx-color-primary-500, #2563eb));background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none'%3E%3Cpath d='M3.5 8.5L6.5 11.5L12.5 4.5' stroke='%23ffffff' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:center;background-size:100%}hx-form input[type=checkbox]:indeterminate{background-color:var(--hx-checkbox-checked-bg, var(--hx-color-primary-500, #2563eb));border-color:var(--hx-checkbox-checked-border-color, var(--hx-color-primary-500, #2563eb));background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none'%3E%3Cpath d='M4 8H12' stroke='%23ffffff' stroke-width='2' stroke-linecap='round'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:center;background-size:100%}hx-form input[type=checkbox]:focus-visible{outline:var(--hx-focus-ring-width, 2px) solid var(--hx-checkbox-focus-ring-color, var(--hx-focus-ring-color, #2563eb));outline-offset:var(--hx-focus-ring-offset, 2px)}hx-form input[type=checkbox]:hover:not(:disabled){border-color:var(--hx-color-primary-500, #2563eb)}hx-form input[type=checkbox]:checked:hover:not(:disabled){filter:brightness(var(--hx-filter-brightness-hover, .9))}hx-form :is(input[type=checkbox],input[type=radio]):disabled{opacity:var(--hx-opacity-disabled, .5);cursor:not-allowed;pointer-events:none}hx-form :is(.form-type-checkbox,.form-type-checkbox-toggle){display:flex;align-items:flex-start;gap:var(--hx-space-2, .5rem)}hx-form :is(.form-type-checkbox,.form-type-checkbox-toggle) label{font-size:var(--hx-font-size-sm, .875rem);font-weight:var(--hx-font-weight-medium, 500);color:var(--hx-checkbox-label-color, var(--hx-color-neutral-700, #343a40));line-height:var(--hx-line-height-normal, 1.5);cursor:pointer;user-select:none;-webkit-user-select:none}hx-form input[type=radio]{width:var(--hx-radio-size, var(--hx-size-5, 1.25rem));height:var(--hx-radio-size, var(--hx-size-5, 1.25rem));border:var(--hx-border-width-medium, 2px) solid var(--hx-radio-border-color, var(--hx-color-neutral-300, #ced4da));border-radius:var(--hx-border-radius-full, 9999px)}hx-form input[type=radio]:checked{border-color:var(--hx-radio-checked-border-color, var(--hx-color-primary-500, #2563eb));background-color:var(--hx-radio-checked-bg, var(--hx-color-primary-500, #2563eb));box-shadow:inset 0 0 0 calc(var(--hx-radio-size, var(--hx-size-5, 1.25rem)) * .3) var(--hx-radio-dot-color, var(--hx-color-neutral-0, #ffffff))}hx-form input[type=radio]:focus-visible{outline:var(--hx-focus-ring-width, 2px) solid var(--hx-radio-focus-ring-color, var(--hx-focus-ring-color, #2563eb));outline-offset:var(--hx-focus-ring-offset, 2px)}hx-form input[type=radio]:hover:not(:disabled):not(:checked){border-color:var(--hx-color-neutral-400, #adb5bd)}hx-form .form-type-radio{display:inline-flex;align-items:center;gap:var(--hx-space-2, .5rem)}hx-form .form-type-radio label{font-size:var(--hx-font-size-md, 1rem);color:var(--hx-radio-label-color, var(--hx-color-neutral-700, #343a40));line-height:var(--hx-line-height-normal, 1.5);cursor:pointer;user-select:none;-webkit-user-select:none}hx-form .form-radios{display:flex;flex-direction:column;gap:var(--hx-radio-group-gap, var(--hx-space-3, .75rem))}hx-form .form-radios--horizontal{flex-direction:row;flex-wrap:wrap}hx-form .form-type-switch{display:flex;flex-direction:column;gap:var(--hx-space-1, .25rem);font-family:var(--hx-font-family-sans, sans-serif)}hx-form .form-type-switch .switch__control-row{display:flex;align-items:center;gap:var(--hx-space-2, .5rem)}hx-form .form-type-switch input[type=checkbox]{position:relative;width:var(--hx-switch-track-width-md, var(--hx-size-10, 2.5rem));height:var(--hx-switch-track-height-md, var(--hx-size-5-5, 1.375rem));border:none;border-radius:var(--hx-border-radius-full, 9999px);background-color:var(--hx-switch-track-bg, var(--hx-color-neutral-300, #ced4da));transition:background-color var(--hx-transition-fast, .15s ease);background-image:none}hx-form .form-type-switch input[type=checkbox]:before{content:"";position:absolute;top:50%;left:var(--hx-switch-thumb-offset, var(--hx-space-0-5, .125rem));transform:translateY(-50%);width:var(--hx-switch-thumb-size-md, var(--hx-size-4-5, 1.125rem));height:var(--hx-switch-thumb-size-md, var(--hx-size-4-5, 1.125rem));border-radius:var(--hx-border-radius-full, 9999px);background-color:var(--hx-switch-thumb-bg, var(--hx-color-neutral-0, #ffffff));box-shadow:var(--hx-switch-thumb-shadow, var(--hx-shadow-sm, 0 1px 2px 0 rgb(0 0 0 / .05)));transition:transform var(--hx-transition-fast, .15s ease)}hx-form .form-type-switch input[type=checkbox]:checked{background-color:var(--hx-switch-track-checked-bg, var(--hx-color-primary-500, #2563eb));background-image:none}hx-form .form-type-switch input[type=checkbox]:checked:before{transform:translateY(-50%) translate(var(--hx-switch-thumb-size-md, var(--hx-size-4-5, 1.125rem)))}hx-form .form-type-switch input[type=checkbox]:focus-visible{outline:var(--hx-focus-ring-width, 2px) solid var(--hx-switch-focus-ring-color, var(--hx-focus-ring-color, #2563eb));outline-offset:var(--hx-focus-ring-offset, 2px)}hx-form .form-type-switch input[type=checkbox]:disabled{opacity:var(--hx-opacity-disabled, .5);cursor:not-allowed;pointer-events:none}hx-form .form-type-switch label{font-size:var(--hx-font-size-sm, .875rem);font-weight:var(--hx-font-weight-medium, 500);color:var(--hx-switch-label-color, var(--hx-color-neutral-700, #343a40));line-height:var(--hx-line-height-normal, 1.5);cursor:pointer;user-select:none;-webkit-user-select:none}hx-form .form-type-switch--sm input[type=checkbox]{width:var(--hx-switch-track-width-sm, var(--hx-size-8, 2rem));height:var(--hx-switch-track-height-sm, var(--hx-size-4-5, 1.125rem))}hx-form .form-type-switch--sm input[type=checkbox]:before{width:var(--hx-switch-thumb-size-sm, var(--hx-size-3-5, .875rem));height:var(--hx-switch-thumb-size-sm, var(--hx-size-3-5, .875rem))}hx-form .form-type-switch--sm input[type=checkbox]:checked:before{transform:translateY(-50%) translate(var(--hx-switch-thumb-size-sm, var(--hx-size-3-5, .875rem)))}hx-form .form-type-switch--lg input[type=checkbox]{width:var(--hx-switch-track-width-lg, var(--hx-size-12, 3rem));height:var(--hx-switch-track-height-lg, var(--hx-size-6-5, 1.625rem))}hx-form .form-type-switch--lg input[type=checkbox]:before{width:var(--hx-switch-thumb-size-lg, var(--hx-size-5-5, 1.375rem));height:var(--hx-switch-thumb-size-lg, var(--hx-size-5-5, 1.375rem))}hx-form .form-type-switch--lg input[type=checkbox]:checked:before{transform:translateY(-50%) translate(var(--hx-switch-thumb-size-lg, var(--hx-size-5-5, 1.375rem)))}hx-form form{display:flex;flex-direction:column;gap:var(--hx-form-gap, var(--hx-space-4, 1rem));font-family:var(--hx-input-font-family, var(--hx-font-family-sans, sans-serif))}hx-form fieldset{border:var(--hx-border-width-thin, 1px) solid var(--hx-color-neutral-200, #dee2e6);border-radius:var(--hx-border-radius-md, .375rem);padding:var(--hx-space-4, 1rem);margin:0;display:flex;flex-direction:column;gap:var(--hx-space-4, 1rem)}hx-form :is(legend,summary){font-size:var(--hx-font-size-sm, .875rem);font-weight:var(--hx-font-weight-semibold, 600);color:var(--hx-color-neutral-700, #343a40);line-height:var(--hx-line-height-normal, 1.5)}hx-form legend{display:flex;align-items:baseline;gap:var(--hx-space-1, .25rem);padding:0 var(--hx-space-1, .25rem)}hx-form details{border:var(--hx-border-width-thin, 1px) solid var(--hx-color-neutral-200, #dee2e6);border-radius:var(--hx-border-radius-md, .375rem);padding:var(--hx-space-4, 1rem);margin:0}hx-form summary{cursor:pointer;padding:var(--hx-space-1, .25rem) 0;user-select:none;-webkit-user-select:none}hx-form summary:focus-visible{outline:var(--hx-focus-ring-width, 2px) solid var(--hx-focus-ring-color, #2563eb);outline-offset:var(--hx-focus-ring-offset, 2px);border-radius:var(--hx-border-radius-sm, .25rem)}hx-form .form-actions{display:flex;align-items:center;gap:var(--hx-space-3, .75rem);padding-top:var(--hx-space-4, 1rem)}hx-form .form-actions--end{justify-content:flex-end}hx-form .form-actions--between{justify-content:space-between}hx-form .form-columns{display:grid;gap:var(--hx-space-4, 1rem)}hx-form .form-columns--2{grid-template-columns:repeat(2,1fr)}hx-form .form-columns--3{grid-template-columns:repeat(3,1fr)}hx-form .form-columns--4{grid-template-columns:repeat(4,1fr)}@media(max-width:640px){hx-form .form-columns--2,hx-form .form-columns--3,hx-form .form-columns--4{grid-template-columns:1fr}}hx-form .form-item--full{grid-column:1 / -1}hx-form .form-inline{display:flex;flex-wrap:wrap;align-items:flex-end;gap:var(--hx-space-3, .75rem)}hx-form .form-inline .form-item{flex:1;min-width:0}hx-form .form-inline .form-item+.form-item{margin-top:0}hx-form .form-divider{border:none;border-top:var(--hx-border-width-thin, 1px) solid var(--hx-color-neutral-200, #dee2e6);margin:var(--hx-space-2, .5rem) 0}hx-form :is(.form-item.error,.form-item.has-error,.form-item--error) label{color:var(--hx-input-error-color, var(--hx-color-error-500, #dc3545))}hx-form :is(.form-item.error,.form-item.has-error,.form-item--error) :is(input:is([type=text],[type=email],[type=password],[type=tel],[type=url],[type=search],[type=number]),textarea,select){border-color:var(--hx-input-error-color, var(--hx-color-error-500, #dc3545))}hx-form :is(.form-item.error,.form-item.has-error,.form-item--error) :is(input:is([type=text],[type=email],[type=password],[type=tel],[type=url],[type=search],[type=number]),textarea,select):focus{border-color:var(--hx-input-error-color, var(--hx-color-error-500, #dc3545));box-shadow:0 0 0 var(--hx-focus-ring-width, 2px) color-mix(in srgb,var(--hx-input-error-color, var(--hx-color-error-500, #dc3545)) calc(var(--hx-focus-ring-opacity, .25) * 100%),transparent)}hx-form :is(.form-item.error,.form-item.has-error,.form-item--error) input[type=checkbox]{border-color:var(--hx-checkbox-error-color, var(--hx-color-error-500, #dc3545))}hx-form :is(.form-item.error,.form-item.has-error,.form-item--error) input[type=checkbox]:checked{background-color:var(--hx-checkbox-error-color, var(--hx-color-error-500, #dc3545));border-color:var(--hx-checkbox-error-color, var(--hx-color-error-500, #dc3545))}hx-form :is(.form-item.error,.form-item.has-error,.form-item--error) input[type=radio]{border-color:var(--hx-color-error-500, #dc3545)}hx-form :is(.form-item__error-message,.form-item .error-message,.error-message,.form-item__success-message,.form-item .success-message,.success-message){font-size:var(--hx-font-size-xs, .75rem);line-height:var(--hx-line-height-normal, 1.5)}hx-form :is(.form-item__error-message,.form-item .error-message,.error-message){color:var(--hx-input-error-color, var(--hx-color-error-500, #dc3545))}hx-form :is(.form-item__success-message,.form-item .success-message,.success-message){color:var(--hx-color-success-500, #198754)}hx-form :is(.form-item.success,.form-item.has-success,.form-item--success) label{color:var(--hx-color-success-500, #198754)}hx-form :is(.form-item.success,.form-item.has-success,.form-item--success) :is(input:is([type=text],[type=email],[type=password],[type=tel],[type=url],[type=search],[type=number]),textarea,select){border-color:var(--hx-color-success-500, #198754)}hx-form :is(.form-item.success,.form-item.has-success,.form-item--success) :is(input:is([type=text],[type=email],[type=password],[type=tel],[type=url],[type=search],[type=number]),textarea,select):focus{border-color:var(--hx-color-success-500, #198754);box-shadow:0 0 0 var(--hx-focus-ring-width, 2px) color-mix(in srgb,var(--hx-color-success-500, #198754) calc(var(--hx-focus-ring-opacity, .25) * 100%),transparent)}hx-form :is(.messages--error,.messages--status,.messages--warning){border:var(--hx-border-width-thin, 1px) solid;border-radius:var(--hx-border-radius-md, .375rem);padding:var(--hx-space-3, .75rem) var(--hx-space-4, 1rem);font-size:var(--hx-font-size-sm, .875rem);line-height:var(--hx-line-height-normal, 1.5)}hx-form .messages--error{border-color:var(--hx-input-error-color, var(--hx-color-error-500, #dc3545));background-color:var(--hx-color-error-50, #fef2f2);color:var(--hx-input-error-color, var(--hx-color-error-500, #dc3545))}hx-form .messages--status{border-color:var(--hx-color-success-500, #198754);background-color:var(--hx-color-success-50, #f0fdf4);color:var(--hx-color-success-500, #198754)}hx-form .messages--warning{border-color:var(--hx-color-warning-500, #ffc107);background-color:var(--hx-color-warning-50, #fffbeb);color:var(--hx-color-warning-700, #92400e)}@media(forced-colors:active){hx-form :is(input:is([type=text],[type=email],[type=password],[type=tel],[type=url],[type=search],[type=number]),textarea,select):focus{outline:2px solid CanvasText;outline-offset:2px}hx-form .hx-form-error-summary{border-color:LinkText}}
6
6
  `, b = v;
7
- var g = Object.defineProperty, y = Object.getOwnPropertyDescriptor, s = (e, r, t, o) => {
8
- for (var a = o > 1 ? void 0 : o ? y(r, t) : r, n = e.length - 1, l; n >= 0; n--)
9
- (l = e[n]) && (a = (o ? l(r, t, a) : l(a)) || a);
10
- return o && a && g(r, t, a), a;
7
+ var g = Object.defineProperty, y = Object.getOwnPropertyDescriptor, s = (e, r, a, t) => {
8
+ for (var o = t > 1 ? void 0 : t ? y(r, a) : r, n = e.length - 1, l; n >= 0; n--)
9
+ (l = e[n]) && (o = (t ? l(r, a, o) : l(o)) || o);
10
+ return t && o && g(r, a, o), o;
11
11
  };
12
12
  let i = class extends m {
13
13
  constructor() {
@@ -15,27 +15,30 @@ let i = class extends m {
15
15
  if (this.action)
16
16
  return;
17
17
  if (e.preventDefault(), !this.novalidate && !this.checkValidity()) {
18
- const o = this._collectValidationErrors();
19
- this._validationErrors = o, this._applyAriaInvalidFromValidity(), this.dispatchEvent(
18
+ const t = this._collectValidationErrors();
19
+ this._validationErrors = t, this._applyAriaInvalidFromValidity(), this.updateComplete.then(() => {
20
+ const o = this.querySelector(".hx-form-error-summary");
21
+ o == null || o.focus();
22
+ }), this.dispatchEvent(
20
23
  new CustomEvent("hx-invalid", {
21
24
  bubbles: !0,
22
25
  composed: !0,
23
- detail: { errors: o }
26
+ detail: { errors: t }
24
27
  })
25
28
  );
26
29
  return;
27
30
  }
28
31
  this._validationErrors = [], this._clearAriaInvalid();
29
- const r = this.getFormData(), t = {};
30
- for (const o of new Set(r.keys())) {
31
- const a = r.getAll(o);
32
- a.length === 1 && a[0] !== void 0 ? t[o] = a[0] : t[o] = a;
32
+ const r = this.getFormData(), a = {};
33
+ for (const t of new Set(r.keys())) {
34
+ const o = r.getAll(t);
35
+ o.length === 1 && o[0] !== void 0 ? a[t] = o[0] : a[t] = o;
33
36
  }
34
37
  this.dispatchEvent(
35
38
  new CustomEvent("hx-submit", {
36
39
  bubbles: !0,
37
40
  composed: !0,
38
- detail: { valid: !0, values: t, formData: r }
41
+ detail: { valid: !0, values: a, formData: r }
39
42
  })
40
43
  );
41
44
  }, this._handleReset = () => {
@@ -73,8 +76,8 @@ let i = class extends m {
73
76
  reportValidity() {
74
77
  const e = this._getAllValidatableElements();
75
78
  let r = !0;
76
- for (const t of e)
77
- "reportValidity" in t && typeof t.reportValidity == "function" && (t.reportValidity() || (r = !1));
79
+ for (const a of e)
80
+ "reportValidity" in a && typeof a.reportValidity == "function" && (a.reportValidity() || (r = !1));
78
81
  return r;
79
82
  }
80
83
  /**
@@ -85,10 +88,10 @@ let i = class extends m {
85
88
  const e = this.querySelector("form");
86
89
  if (e)
87
90
  return new FormData(e);
88
- const r = new FormData(), t = this.getNativeFormElements();
89
- for (const o of t) {
90
- const a = o;
91
- a.name && (a instanceof HTMLInputElement && (a.type === "checkbox" || a.type === "radio") ? a.checked && r.append(a.name, a.value || "on") : r.append(a.name, a.value));
91
+ const r = new FormData(), a = this.getNativeFormElements();
92
+ for (const t of a) {
93
+ const o = t;
94
+ o.name && (o instanceof HTMLInputElement && (o.type === "checkbox" || o.type === "radio") ? o.checked && r.append(o.name, o.value || "on") : r.append(o.name, o.value));
92
95
  }
93
96
  return r;
94
97
  }
@@ -134,8 +137,8 @@ let i = class extends m {
134
137
  * @param message - The error message to display.
135
138
  */
136
139
  setFieldError(e, r) {
137
- const t = this._validationErrors.filter((o) => o.name !== e);
138
- this.setErrors([...t, { name: e, message: r }]);
140
+ const a = this._validationErrors.filter((t) => t.name !== e);
141
+ this.setErrors([...a, { name: e, message: r }]);
139
142
  }
140
143
  /**
141
144
  * Clears all validation errors from the error summary and removes
@@ -152,7 +155,7 @@ let i = class extends m {
152
155
  */
153
156
  _getAllValidatableElements() {
154
157
  const e = Array.from(this.querySelectorAll("input, select, textarea")), r = this.getFormElements().filter(
155
- (t) => "checkValidity" in t && typeof t.checkValidity == "function"
158
+ (a) => "checkValidity" in a && typeof a.checkValidity == "function"
156
159
  );
157
160
  return [...e, ...r];
158
161
  }
@@ -161,10 +164,10 @@ let i = class extends m {
161
164
  * @internal
162
165
  */
163
166
  _applyAriaInvalidFromErrors(e) {
164
- const r = new Set(e.map((o) => o.name)), t = this._getAllValidatableElements();
165
- for (const o of t) {
166
- const n = o.name ?? o.tagName.toLowerCase();
167
- r.has(n) ? o.setAttribute("aria-invalid", "true") : o.removeAttribute("aria-invalid");
167
+ const r = new Set(e.map((t) => t.name)), a = this._getAllValidatableElements();
168
+ for (const t of a) {
169
+ const n = t.name ?? t.tagName.toLowerCase();
170
+ r.has(n) ? t.setAttribute("aria-invalid", "true") : t.removeAttribute("aria-invalid");
168
171
  }
169
172
  }
170
173
  /**
@@ -191,12 +194,12 @@ let i = class extends m {
191
194
  */
192
195
  _collectValidationErrors() {
193
196
  const e = [], r = this._getAllValidatableElements();
194
- for (const t of r)
195
- if ("validity" in t && "validationMessage" in t) {
196
- const o = t;
197
- o.validity.valid || e.push({
198
- name: o.name || o.tagName.toLowerCase(),
199
- message: o.validationMessage
197
+ for (const a of r)
198
+ if ("validity" in a && "validationMessage" in a) {
199
+ const t = a;
200
+ t.validity.valid || e.push({
201
+ name: t.name || t.tagName.toLowerCase(),
202
+ message: t.validationMessage
200
203
  });
201
204
  }
202
205
  return e;
@@ -209,6 +212,7 @@ let i = class extends m {
209
212
  role="alert"
210
213
  aria-live="assertive"
211
214
  aria-atomic="true"
215
+ tabindex="-1"
212
216
  >
213
217
  <ul>
214
218
  ${this._validationErrors.map(
@@ -255,4 +259,4 @@ i = s([
255
259
  export {
256
260
  i as H
257
261
  };
258
- //# sourceMappingURL=hx-form-BpS6v3Iu.js.map
262
+ //# sourceMappingURL=hx-form-fJE-FJQV.js.map