@helixui/library 1.0.1 → 1.1.2-next.1

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 (699) hide show
  1. package/custom-elements.json +6013 -11864
  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 +10 -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 +7 -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 +12 -2
  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 +31 -3
  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 +8 -1
  23. package/dist/components/hx-avatar/hx-avatar.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 +8 -1
  26. package/dist/components/hx-badge/hx-badge.d.ts.map +1 -1
  27. package/dist/components/hx-badge/hx-badge.styles.d.ts.map +1 -1
  28. package/dist/components/hx-badge/index.js +1 -1
  29. package/dist/components/hx-banner/hx-banner.d.ts +25 -4
  30. package/dist/components/hx-banner/hx-banner.d.ts.map +1 -1
  31. package/dist/components/hx-banner/hx-banner.styles.d.ts.map +1 -1
  32. package/dist/components/hx-banner/index.js +1 -1
  33. package/dist/components/hx-breadcrumb/hx-breadcrumb.d.ts +24 -4
  34. package/dist/components/hx-breadcrumb/hx-breadcrumb.d.ts.map +1 -1
  35. package/dist/components/hx-breadcrumb/index.js +1 -1
  36. package/dist/components/hx-button/hx-button.d.ts +16 -7
  37. package/dist/components/hx-button/hx-button.d.ts.map +1 -1
  38. package/dist/components/hx-button/hx-button.styles.d.ts.map +1 -1
  39. package/dist/components/hx-button/index.js +1 -1
  40. package/dist/components/hx-button-group/hx-button-group.d.ts +3 -6
  41. package/dist/components/hx-button-group/hx-button-group.d.ts.map +1 -1
  42. package/dist/components/hx-button-group/index.js +1 -1
  43. package/dist/components/hx-card/hx-card.d.ts +14 -7
  44. package/dist/components/hx-card/hx-card.d.ts.map +1 -1
  45. package/dist/components/hx-card/index.js +1 -1
  46. package/dist/components/hx-carousel/hx-carousel-item.d.ts +2 -0
  47. package/dist/components/hx-carousel/hx-carousel-item.d.ts.map +1 -1
  48. package/dist/components/hx-carousel/hx-carousel-item.styles.d.ts +2 -0
  49. package/dist/components/hx-carousel/hx-carousel-item.styles.d.ts.map +1 -0
  50. package/dist/components/hx-carousel/hx-carousel.d.ts +29 -2
  51. package/dist/components/hx-carousel/hx-carousel.d.ts.map +1 -1
  52. package/dist/components/hx-carousel/index.js +1 -1
  53. package/dist/components/hx-checkbox/hx-checkbox.d.ts +34 -18
  54. package/dist/components/hx-checkbox/hx-checkbox.d.ts.map +1 -1
  55. package/dist/components/hx-checkbox/hx-checkbox.styles.d.ts.map +1 -1
  56. package/dist/components/hx-checkbox/index.js +1 -1
  57. package/dist/components/hx-checkbox-group/hx-checkbox-group.d.ts +27 -6
  58. package/dist/components/hx-checkbox-group/hx-checkbox-group.d.ts.map +1 -1
  59. package/dist/components/hx-checkbox-group/index.js +1 -1
  60. package/dist/components/hx-clinical-status/hx-clinical-status.d.ts +126 -0
  61. package/dist/components/hx-clinical-status/hx-clinical-status.d.ts.map +1 -0
  62. package/dist/components/hx-clinical-status/hx-clinical-status.styles.d.ts +2 -0
  63. package/dist/components/hx-clinical-status/hx-clinical-status.styles.d.ts.map +1 -0
  64. package/dist/components/hx-clinical-status/index.d.ts +3 -0
  65. package/dist/components/hx-clinical-status/index.d.ts.map +1 -0
  66. package/dist/components/hx-clinical-status/index.js +5 -0
  67. package/dist/components/hx-clinical-status/index.js.map +1 -0
  68. package/dist/components/hx-code-snippet/hx-code-snippet.d.ts +10 -0
  69. package/dist/components/hx-code-snippet/hx-code-snippet.d.ts.map +1 -1
  70. package/dist/components/hx-code-snippet/hx-code-snippet.styles.d.ts.map +1 -1
  71. package/dist/components/hx-code-snippet/index.js +1 -1
  72. package/dist/components/hx-color-picker/color-utils.d.ts +27 -0
  73. package/dist/components/hx-color-picker/color-utils.d.ts.map +1 -0
  74. package/dist/components/hx-color-picker/hx-color-picker.d.ts +84 -4
  75. package/dist/components/hx-color-picker/hx-color-picker.d.ts.map +1 -1
  76. package/dist/components/hx-color-picker/hx-color-picker.styles.d.ts.map +1 -1
  77. package/dist/components/hx-color-picker/index.js +1 -1
  78. package/dist/components/hx-combobox/hx-combobox.d.ts +41 -6
  79. package/dist/components/hx-combobox/hx-combobox.d.ts.map +1 -1
  80. package/dist/components/hx-combobox/hx-combobox.styles.d.ts.map +1 -1
  81. package/dist/components/hx-combobox/index.js +1 -1
  82. package/dist/components/hx-container/index.js +1 -1
  83. package/dist/components/hx-copy-button/hx-copy-button.d.ts +17 -1
  84. package/dist/components/hx-copy-button/hx-copy-button.d.ts.map +1 -1
  85. package/dist/components/hx-copy-button/index.js +1 -1
  86. package/dist/components/hx-counter/hx-counter.d.ts +32 -6
  87. package/dist/components/hx-counter/hx-counter.d.ts.map +1 -1
  88. package/dist/components/hx-counter/hx-counter.styles.d.ts.map +1 -1
  89. package/dist/components/hx-counter/index.js +1 -1
  90. package/dist/components/hx-data-table/hx-data-table.d.ts +27 -2
  91. package/dist/components/hx-data-table/hx-data-table.d.ts.map +1 -1
  92. package/dist/components/hx-data-table/hx-data-table.styles.d.ts.map +1 -1
  93. package/dist/components/hx-data-table/index.js +1 -1
  94. package/dist/components/hx-date-picker/hx-date-picker.d.ts +101 -5
  95. package/dist/components/hx-date-picker/hx-date-picker.d.ts.map +1 -1
  96. package/dist/components/hx-date-picker/hx-date-picker.styles.d.ts.map +1 -1
  97. package/dist/components/hx-date-picker/index.js +1 -1
  98. package/dist/components/hx-dialog/hx-dialog.d.ts +34 -4
  99. package/dist/components/hx-dialog/hx-dialog.d.ts.map +1 -1
  100. package/dist/components/hx-dialog/hx-dialog.styles.d.ts.map +1 -1
  101. package/dist/components/hx-dialog/index.js +1 -1
  102. package/dist/components/hx-divider/hx-divider.d.ts +4 -1
  103. package/dist/components/hx-divider/hx-divider.d.ts.map +1 -1
  104. package/dist/components/hx-divider/index.js +1 -1
  105. package/dist/components/hx-drawer/hx-drawer.d.ts +28 -10
  106. package/dist/components/hx-drawer/hx-drawer.d.ts.map +1 -1
  107. package/dist/components/hx-drawer/hx-drawer.styles.d.ts.map +1 -1
  108. package/dist/components/hx-drawer/index.js +1 -1
  109. package/dist/components/hx-dropdown/hx-dropdown.d.ts +29 -3
  110. package/dist/components/hx-dropdown/hx-dropdown.d.ts.map +1 -1
  111. package/dist/components/hx-dropdown/index.js +1 -1
  112. package/dist/components/hx-field/hx-field.d.ts +11 -3
  113. package/dist/components/hx-field/hx-field.d.ts.map +1 -1
  114. package/dist/components/hx-field/index.js +1 -1
  115. package/dist/components/hx-field-label/hx-field-label.styles.d.ts.map +1 -1
  116. package/dist/components/hx-field-label/index.js +1 -1
  117. package/dist/components/hx-file-upload/hx-file-upload.d.ts +39 -3
  118. package/dist/components/hx-file-upload/hx-file-upload.d.ts.map +1 -1
  119. package/dist/components/hx-file-upload/hx-file-upload.styles.d.ts.map +1 -1
  120. package/dist/components/hx-file-upload/index.js +1 -1
  121. package/dist/components/hx-form/hx-form.d.ts.map +1 -1
  122. package/dist/components/hx-form/index.js +1 -1
  123. package/dist/components/hx-format-date/hx-format-date.d.ts +8 -0
  124. package/dist/components/hx-format-date/hx-format-date.d.ts.map +1 -1
  125. package/dist/components/hx-format-date/index.js +1 -1
  126. package/dist/components/hx-grid/hx-grid.d.ts +14 -12
  127. package/dist/components/hx-grid/hx-grid.d.ts.map +1 -1
  128. package/dist/components/hx-grid/index.js +1 -1
  129. package/dist/components/hx-help-text/index.js +1 -1
  130. package/dist/components/hx-icon/hx-icon.d.ts +10 -2
  131. package/dist/components/hx-icon/hx-icon.d.ts.map +1 -1
  132. package/dist/components/hx-icon/index.js +1 -1
  133. package/dist/components/hx-icon-button/hx-icon-button.d.ts +12 -0
  134. package/dist/components/hx-icon-button/hx-icon-button.d.ts.map +1 -1
  135. package/dist/components/hx-icon-button/index.js +1 -1
  136. package/dist/components/hx-image/hx-image.d.ts +8 -0
  137. package/dist/components/hx-image/hx-image.d.ts.map +1 -1
  138. package/dist/components/hx-image/index.js +1 -1
  139. package/dist/components/hx-link/hx-link.d.ts +4 -1
  140. package/dist/components/hx-link/hx-link.d.ts.map +1 -1
  141. package/dist/components/hx-link/hx-link.styles.d.ts.map +1 -1
  142. package/dist/components/hx-link/index.js +1 -1
  143. package/dist/components/hx-list/hx-list-item.d.ts +8 -2
  144. package/dist/components/hx-list/hx-list-item.d.ts.map +1 -1
  145. package/dist/components/hx-list/hx-list-item.styles.d.ts.map +1 -1
  146. package/dist/components/hx-list/hx-list.d.ts +6 -2
  147. package/dist/components/hx-list/hx-list.d.ts.map +1 -1
  148. package/dist/components/hx-list/index.js +1 -1
  149. package/dist/components/hx-menu/hx-menu-item.d.ts +11 -0
  150. package/dist/components/hx-menu/hx-menu-item.d.ts.map +1 -1
  151. package/dist/components/hx-menu/hx-menu-item.styles.d.ts.map +1 -1
  152. package/dist/components/hx-menu/hx-menu.d.ts +10 -1
  153. package/dist/components/hx-menu/hx-menu.d.ts.map +1 -1
  154. package/dist/components/hx-menu/index.js +1 -1
  155. package/dist/components/hx-meter/hx-meter.d.ts +10 -2
  156. package/dist/components/hx-meter/hx-meter.d.ts.map +1 -1
  157. package/dist/components/hx-meter/hx-meter.styles.d.ts.map +1 -1
  158. package/dist/components/hx-meter/index.js +1 -1
  159. package/dist/components/hx-nav/hx-nav.d.ts +15 -0
  160. package/dist/components/hx-nav/hx-nav.d.ts.map +1 -1
  161. package/dist/components/hx-nav/index.js +1 -1
  162. package/dist/components/hx-number-input/hx-number-input.d.ts +51 -4
  163. package/dist/components/hx-number-input/hx-number-input.d.ts.map +1 -1
  164. package/dist/components/hx-number-input/index.js +1 -1
  165. package/dist/components/hx-overflow-menu/hx-overflow-menu.d.ts +18 -3
  166. package/dist/components/hx-overflow-menu/hx-overflow-menu.d.ts.map +1 -1
  167. package/dist/components/hx-overflow-menu/hx-overflow-menu.styles.d.ts.map +1 -1
  168. package/dist/components/hx-overflow-menu/index.js +1 -1
  169. package/dist/components/hx-pagination/hx-pagination.d.ts +38 -0
  170. package/dist/components/hx-pagination/hx-pagination.d.ts.map +1 -1
  171. package/dist/components/hx-pagination/hx-pagination.styles.d.ts.map +1 -1
  172. package/dist/components/hx-pagination/index.js +1 -1
  173. package/dist/components/hx-patient-banner/hx-patient-banner.d.ts +105 -0
  174. package/dist/components/hx-patient-banner/hx-patient-banner.d.ts.map +1 -0
  175. package/dist/components/hx-patient-banner/hx-patient-banner.styles.d.ts +2 -0
  176. package/dist/components/hx-patient-banner/hx-patient-banner.styles.d.ts.map +1 -0
  177. package/dist/components/hx-patient-banner/index.d.ts +3 -0
  178. package/dist/components/hx-patient-banner/index.d.ts.map +1 -0
  179. package/dist/components/hx-patient-banner/index.js +5 -0
  180. package/dist/components/hx-patient-banner/index.js.map +1 -0
  181. package/dist/components/hx-phi-field/hx-phi-field.d.ts +72 -0
  182. package/dist/components/hx-phi-field/hx-phi-field.d.ts.map +1 -0
  183. package/dist/components/hx-phi-field/hx-phi-field.styles.d.ts +2 -0
  184. package/dist/components/hx-phi-field/hx-phi-field.styles.d.ts.map +1 -0
  185. package/dist/components/hx-phi-field/index.d.ts +3 -0
  186. package/dist/components/hx-phi-field/index.d.ts.map +1 -0
  187. package/dist/components/hx-phi-field/index.js +5 -0
  188. package/dist/components/hx-phi-field/index.js.map +1 -0
  189. package/dist/components/hx-popover/hx-popover.d.ts +77 -10
  190. package/dist/components/hx-popover/hx-popover.d.ts.map +1 -1
  191. package/dist/components/hx-popover/index.js +1 -1
  192. package/dist/components/hx-popup/hx-popup.d.ts +13 -8
  193. package/dist/components/hx-popup/hx-popup.d.ts.map +1 -1
  194. package/dist/components/hx-popup/hx-popup.styles.d.ts.map +1 -1
  195. package/dist/components/hx-popup/index.js +1 -1
  196. package/dist/components/hx-progress-bar/hx-progress-bar.d.ts +10 -2
  197. package/dist/components/hx-progress-bar/hx-progress-bar.d.ts.map +1 -1
  198. package/dist/components/hx-progress-bar/hx-progress-bar.styles.d.ts.map +1 -1
  199. package/dist/components/hx-progress-bar/index.js +1 -1
  200. package/dist/components/hx-progress-ring/hx-progress-ring.d.ts +8 -2
  201. package/dist/components/hx-progress-ring/hx-progress-ring.d.ts.map +1 -1
  202. package/dist/components/hx-progress-ring/index.js +1 -1
  203. package/dist/components/hx-prose/hx-prose.d.ts +6 -3
  204. package/dist/components/hx-prose/hx-prose.d.ts.map +1 -1
  205. package/dist/components/hx-prose/index.js +1 -1
  206. package/dist/components/hx-radio-group/hx-radio-group.d.ts +3 -7
  207. package/dist/components/hx-radio-group/hx-radio-group.d.ts.map +1 -1
  208. package/dist/components/hx-radio-group/hx-radio.d.ts +4 -2
  209. package/dist/components/hx-radio-group/hx-radio.d.ts.map +1 -1
  210. package/dist/components/hx-radio-group/hx-radio.styles.d.ts.map +1 -1
  211. package/dist/components/hx-radio-group/index.js +1 -1
  212. package/dist/components/hx-rating/hx-rating.d.ts +54 -2
  213. package/dist/components/hx-rating/hx-rating.d.ts.map +1 -1
  214. package/dist/components/hx-rating/hx-rating.styles.d.ts.map +1 -1
  215. package/dist/components/hx-rating/index.js +1 -1
  216. package/dist/components/hx-select/hx-select.d.ts +37 -12
  217. package/dist/components/hx-select/hx-select.d.ts.map +1 -1
  218. package/dist/components/hx-select/hx-select.styles.d.ts.map +1 -1
  219. package/dist/components/hx-select/index.js +1 -1
  220. package/dist/components/hx-side-nav/hx-nav-item.d.ts +13 -0
  221. package/dist/components/hx-side-nav/hx-nav-item.d.ts.map +1 -1
  222. package/dist/components/hx-side-nav/hx-nav-item.styles.d.ts.map +1 -1
  223. package/dist/components/hx-side-nav/hx-side-nav.d.ts +6 -1
  224. package/dist/components/hx-side-nav/hx-side-nav.d.ts.map +1 -1
  225. package/dist/components/hx-side-nav/hx-side-nav.styles.d.ts.map +1 -1
  226. package/dist/components/hx-side-nav/index.js +1 -1
  227. package/dist/components/hx-skeleton/hx-skeleton.d.ts +2 -2
  228. package/dist/components/hx-skeleton/hx-skeleton.d.ts.map +1 -1
  229. package/dist/components/hx-slider/hx-slider.d.ts +26 -9
  230. package/dist/components/hx-slider/hx-slider.d.ts.map +1 -1
  231. package/dist/components/hx-slider/hx-slider.styles.d.ts.map +1 -1
  232. package/dist/components/hx-slider/index.js +1 -1
  233. package/dist/components/hx-spinner/hx-spinner.d.ts +17 -2
  234. package/dist/components/hx-spinner/hx-spinner.d.ts.map +1 -1
  235. package/dist/components/hx-spinner/hx-spinner.styles.d.ts.map +1 -1
  236. package/dist/components/hx-spinner/index.js +1 -1
  237. package/dist/components/hx-split-button/hx-split-button.d.ts +22 -4
  238. package/dist/components/hx-split-button/hx-split-button.d.ts.map +1 -1
  239. package/dist/components/hx-split-button/hx-split-button.styles.d.ts.map +1 -1
  240. package/dist/components/hx-split-button/index.js +1 -1
  241. package/dist/components/hx-split-panel/hx-split-panel.d.ts +32 -2
  242. package/dist/components/hx-split-panel/hx-split-panel.d.ts.map +1 -1
  243. package/dist/components/hx-split-panel/hx-split-panel.styles.d.ts.map +1 -1
  244. package/dist/components/hx-split-panel/index.js +1 -1
  245. package/dist/components/hx-stack/index.js +1 -1
  246. package/dist/components/hx-stat/hx-stat.d.ts +12 -3
  247. package/dist/components/hx-stat/hx-stat.d.ts.map +1 -1
  248. package/dist/components/hx-stat/index.js +1 -1
  249. package/dist/components/hx-status-indicator/hx-status-indicator.d.ts +15 -14
  250. package/dist/components/hx-status-indicator/hx-status-indicator.d.ts.map +1 -1
  251. package/dist/components/hx-status-indicator/index.js +1 -1
  252. package/dist/components/hx-steps/hx-step.d.ts +7 -9
  253. package/dist/components/hx-steps/hx-step.d.ts.map +1 -1
  254. package/dist/components/hx-steps/hx-step.styles.d.ts.map +1 -1
  255. package/dist/components/hx-steps/hx-steps.d.ts +3 -3
  256. package/dist/components/hx-steps/hx-steps.d.ts.map +1 -1
  257. package/dist/components/hx-steps/index.js +1 -1
  258. package/dist/components/hx-structured-list/hx-structured-list.d.ts +10 -3
  259. package/dist/components/hx-structured-list/hx-structured-list.d.ts.map +1 -1
  260. package/dist/components/hx-structured-list/index.js +1 -1
  261. package/dist/components/hx-style-scope/hx-style-scope.d.ts +71 -0
  262. package/dist/components/hx-style-scope/hx-style-scope.d.ts.map +1 -0
  263. package/dist/components/hx-style-scope/hx-style-scope.styles.d.ts +10 -0
  264. package/dist/components/hx-style-scope/hx-style-scope.styles.d.ts.map +1 -0
  265. package/dist/components/hx-style-scope/index.d.ts +2 -0
  266. package/dist/components/hx-style-scope/index.d.ts.map +1 -0
  267. package/dist/components/hx-style-scope/index.js +5 -0
  268. package/dist/components/hx-style-scope/index.js.map +1 -0
  269. package/dist/components/hx-switch/hx-switch.d.ts +25 -5
  270. package/dist/components/hx-switch/hx-switch.d.ts.map +1 -1
  271. package/dist/components/hx-switch/hx-switch.styles.d.ts.map +1 -1
  272. package/dist/components/hx-switch/index.js +1 -1
  273. package/dist/components/hx-table/hx-table.d.ts +8 -2
  274. package/dist/components/hx-table/hx-table.d.ts.map +1 -1
  275. package/dist/components/hx-table/hx-table.styles.d.ts.map +1 -1
  276. package/dist/components/hx-table/hx-th.d.ts +4 -0
  277. package/dist/components/hx-table/hx-th.d.ts.map +1 -1
  278. package/dist/components/hx-table/index.js +1 -1
  279. package/dist/components/hx-tabs/hx-tab-panel.styles.d.ts.map +1 -1
  280. package/dist/components/hx-tabs/hx-tab.d.ts +4 -0
  281. package/dist/components/hx-tabs/hx-tab.d.ts.map +1 -1
  282. package/dist/components/hx-tabs/hx-tab.styles.d.ts.map +1 -1
  283. package/dist/components/hx-tabs/hx-tabs.d.ts +8 -2
  284. package/dist/components/hx-tabs/hx-tabs.d.ts.map +1 -1
  285. package/dist/components/hx-tabs/index.js +1 -1
  286. package/dist/components/hx-tag/hx-tag.d.ts +2 -0
  287. package/dist/components/hx-tag/hx-tag.d.ts.map +1 -1
  288. package/dist/components/hx-tag/hx-tag.styles.d.ts.map +1 -1
  289. package/dist/components/hx-tag/index.js +1 -1
  290. package/dist/components/hx-text/hx-text.d.ts +1 -0
  291. package/dist/components/hx-text/hx-text.d.ts.map +1 -1
  292. package/dist/components/hx-text/index.js +1 -1
  293. package/dist/components/hx-text-input/hx-text-input.d.ts +22 -16
  294. package/dist/components/hx-text-input/hx-text-input.d.ts.map +1 -1
  295. package/dist/components/hx-text-input/hx-text-input.styles.d.ts.map +1 -1
  296. package/dist/components/hx-text-input/index.js +1 -1
  297. package/dist/components/hx-textarea/hx-textarea.d.ts +13 -7
  298. package/dist/components/hx-textarea/hx-textarea.d.ts.map +1 -1
  299. package/dist/components/hx-textarea/hx-textarea.styles.d.ts.map +1 -1
  300. package/dist/components/hx-textarea/index.js +1 -1
  301. package/dist/components/hx-theme/hx-theme.d.ts +84 -5
  302. package/dist/components/hx-theme/hx-theme.d.ts.map +1 -1
  303. package/dist/components/hx-theme/index.js +1 -1
  304. package/dist/components/hx-time-picker/hx-time-picker.d.ts +24 -3
  305. package/dist/components/hx-time-picker/hx-time-picker.d.ts.map +1 -1
  306. package/dist/components/hx-time-picker/hx-time-picker.styles.d.ts.map +1 -1
  307. package/dist/components/hx-time-picker/index.js +1 -1
  308. package/dist/components/hx-toast/hx-toast-stack.d.ts +1 -1
  309. package/dist/components/hx-toast/hx-toast-stack.d.ts.map +1 -1
  310. package/dist/components/hx-toast/hx-toast.d.ts +17 -5
  311. package/dist/components/hx-toast/hx-toast.d.ts.map +1 -1
  312. package/dist/components/hx-toast/hx-toast.styles.d.ts.map +1 -1
  313. package/dist/components/hx-toast/index.js +1 -1
  314. package/dist/components/hx-toast/toast-factory.d.ts.map +1 -1
  315. package/dist/components/hx-toggle-button/hx-toggle-button.d.ts +26 -2
  316. package/dist/components/hx-toggle-button/hx-toggle-button.d.ts.map +1 -1
  317. package/dist/components/hx-toggle-button/hx-toggle-button.styles.d.ts.map +1 -1
  318. package/dist/components/hx-toggle-button/index.js +1 -1
  319. package/dist/components/hx-tooltip/hx-tooltip.d.ts +58 -2
  320. package/dist/components/hx-tooltip/hx-tooltip.d.ts.map +1 -1
  321. package/dist/components/hx-tooltip/index.js +1 -1
  322. package/dist/components/hx-top-nav/hx-top-nav.d.ts +4 -0
  323. package/dist/components/hx-top-nav/hx-top-nav.d.ts.map +1 -1
  324. package/dist/components/hx-top-nav/index.js +1 -1
  325. package/dist/components/hx-tree-view/hx-tree-item.d.ts +9 -0
  326. package/dist/components/hx-tree-view/hx-tree-item.d.ts.map +1 -1
  327. package/dist/components/hx-tree-view/hx-tree-view.d.ts +32 -2
  328. package/dist/components/hx-tree-view/hx-tree-view.d.ts.map +1 -1
  329. package/dist/components/hx-tree-view/hx-tree-view.styles.d.ts.map +1 -1
  330. package/dist/components/hx-tree-view/index.js +1 -1
  331. package/dist/controllers/helix-audit-controller.d.ts +71 -0
  332. package/dist/controllers/helix-audit-controller.d.ts.map +1 -0
  333. package/dist/css/helix-all.css +9581 -0
  334. package/dist/css/helix-core.css +1784 -0
  335. package/dist/css/helix-data.css +639 -0
  336. package/dist/css/helix-feedback.css +1239 -0
  337. package/dist/css/helix-forms.css +2498 -0
  338. package/dist/css/helix-layout.css +380 -0
  339. package/dist/css/helix-media.css +213 -0
  340. package/dist/css/helix-navigation.css +1122 -0
  341. package/dist/css/helix-overlay.css +643 -0
  342. package/dist/css/helix-tokens.css +432 -0
  343. package/dist/css/helix-utility.css +633 -0
  344. package/dist/css/hx-accordion.css +10 -0
  345. package/dist/css/hx-action-bar.css +117 -0
  346. package/dist/css/hx-alert.css +213 -0
  347. package/dist/css/hx-avatar.css +117 -0
  348. package/dist/css/hx-badge.css +174 -0
  349. package/dist/css/hx-banner.css +203 -0
  350. package/dist/css/hx-breadcrumb.css +36 -0
  351. package/dist/css/hx-button-group.css +91 -0
  352. package/dist/css/hx-button.css +262 -0
  353. package/dist/css/hx-card.css +161 -0
  354. package/dist/css/hx-carousel.css +211 -0
  355. package/dist/css/hx-checkbox-group.css +77 -0
  356. package/dist/css/hx-checkbox.css +219 -0
  357. package/dist/css/hx-clinical-status.css +246 -0
  358. package/dist/css/hx-code-snippet.css +179 -0
  359. package/dist/css/hx-color-picker.css +2 -0
  360. package/dist/css/hx-combobox.css +2 -0
  361. package/dist/css/hx-container.css +82 -0
  362. package/dist/css/hx-copy-button.css +121 -0
  363. package/dist/css/hx-counter.css +51 -0
  364. package/dist/css/hx-data-table.css +207 -0
  365. package/dist/css/hx-date-picker.css +2 -0
  366. package/dist/css/hx-dialog.css +190 -0
  367. package/dist/css/hx-divider.css +87 -0
  368. package/dist/css/hx-drawer.css +262 -0
  369. package/dist/css/hx-dropdown.css +46 -0
  370. package/dist/css/hx-field-label.css +38 -0
  371. package/dist/css/hx-field.css +119 -0
  372. package/dist/css/hx-file-upload.css +241 -0
  373. package/dist/css/hx-form.css +2 -0
  374. package/dist/css/hx-format-date.css +10 -0
  375. package/dist/css/hx-grid.css +14 -0
  376. package/dist/css/hx-help-text.css +50 -0
  377. package/dist/css/hx-icon-button.css +152 -0
  378. package/dist/css/hx-icon.css +73 -0
  379. package/dist/css/hx-image.css +41 -0
  380. package/dist/css/hx-link.css +105 -0
  381. package/dist/css/hx-list.css +48 -0
  382. package/dist/css/hx-menu.css +21 -0
  383. package/dist/css/hx-meter.css +113 -0
  384. package/dist/css/hx-nav.css +242 -0
  385. package/dist/css/hx-number-input.css +246 -0
  386. package/dist/css/hx-overflow-menu.css +133 -0
  387. package/dist/css/hx-pagination.css +193 -0
  388. package/dist/css/hx-patient-banner.css +111 -0
  389. package/dist/css/hx-phi-field.css +85 -0
  390. package/dist/css/hx-popover.css +61 -0
  391. package/dist/css/hx-popup.css +31 -0
  392. package/dist/css/hx-progress-bar.css +133 -0
  393. package/dist/css/hx-progress-ring.css +142 -0
  394. package/dist/css/hx-prose.css +2 -0
  395. package/dist/css/hx-radio-group.css +77 -0
  396. package/dist/css/hx-rating.css +96 -0
  397. package/dist/css/hx-select.css +268 -0
  398. package/dist/css/hx-side-nav.css +142 -0
  399. package/dist/css/hx-skeleton.css +82 -0
  400. package/dist/css/hx-slider.css +287 -0
  401. package/dist/css/hx-spinner.css +116 -0
  402. package/dist/css/hx-split-button.css +309 -0
  403. package/dist/css/hx-split-panel.css +168 -0
  404. package/dist/css/hx-stack.css +104 -0
  405. package/dist/css/hx-stat.css +106 -0
  406. package/dist/css/hx-status-indicator.css +97 -0
  407. package/dist/css/hx-steps.css +52 -0
  408. package/dist/css/hx-structured-list.css +75 -0
  409. package/dist/css/hx-style-scope.css +4 -0
  410. package/dist/css/hx-switch.css +169 -0
  411. package/dist/css/hx-table.css +128 -0
  412. package/dist/css/hx-tabs.css +76 -0
  413. package/dist/css/hx-tag.css +146 -0
  414. package/dist/css/hx-text-input.css +214 -0
  415. package/dist/css/hx-text.css +149 -0
  416. package/dist/css/hx-textarea.css +180 -0
  417. package/dist/css/hx-theme.css +23 -0
  418. package/dist/css/hx-time-picker.css +2 -0
  419. package/dist/css/hx-toast.css +230 -0
  420. package/dist/css/hx-toggle-button.css +207 -0
  421. package/dist/css/hx-tooltip.css +51 -0
  422. package/dist/css/hx-top-nav.css +203 -0
  423. package/dist/css/hx-tree-view.css +22 -0
  424. package/dist/css/hx-visually-hidden.css +26 -0
  425. package/dist/css/index.css +84 -0
  426. package/dist/css/manifest.json +2696 -0
  427. package/dist/index.d.ts +14 -0
  428. package/dist/index.d.ts.map +1 -1
  429. package/dist/index.js +266 -176
  430. package/dist/index.js.map +1 -1
  431. package/dist/mixins/FocusMixin.d.ts +49 -0
  432. package/dist/mixins/FocusMixin.d.ts.map +1 -0
  433. package/dist/mixins/FormMixin.d.ts +69 -0
  434. package/dist/mixins/FormMixin.d.ts.map +1 -0
  435. package/dist/mixins/aria-delegation.d.ts +97 -0
  436. package/dist/mixins/aria-delegation.d.ts.map +1 -0
  437. package/dist/mixins/index.d.ts +5 -0
  438. package/dist/mixins/index.d.ts.map +1 -0
  439. package/dist/shared/FormMixin-Bjvw20G5.js +88 -0
  440. package/dist/shared/FormMixin-Bjvw20G5.js.map +1 -0
  441. package/dist/shared/aria-delegation-CBP9eQ0M.js +107 -0
  442. package/dist/shared/aria-delegation-CBP9eQ0M.js.map +1 -0
  443. package/dist/shared/{hx-accordion-DT8qHOay.js → hx-accordion-_KeulaQR.js} +97 -57
  444. package/dist/shared/hx-accordion-_KeulaQR.js.map +1 -0
  445. package/dist/shared/{hx-action-bar-we_WJety.js → hx-action-bar-D4bulGQP.js} +38 -31
  446. package/dist/shared/hx-action-bar-D4bulGQP.js.map +1 -0
  447. package/dist/shared/{hx-alert-D6uok29t.js → hx-alert-DRZYP0Oo.js} +77 -52
  448. package/dist/shared/hx-alert-DRZYP0Oo.js.map +1 -0
  449. package/dist/shared/{hx-avatar-Cep6Urm3.js → hx-avatar-7p1cj3lG.js} +6 -2
  450. package/dist/shared/hx-avatar-7p1cj3lG.js.map +1 -0
  451. package/dist/shared/{hx-badge-BeuWuUj_.js → hx-badge-DCxvskdw.js} +60 -45
  452. package/dist/shared/hx-badge-DCxvskdw.js.map +1 -0
  453. package/dist/shared/{hx-banner-DnCBJtRR.js → hx-banner-2RS7Nux4.js} +102 -55
  454. package/dist/shared/hx-banner-2RS7Nux4.js.map +1 -0
  455. package/dist/shared/{hx-breadcrumb-item-Bj2UqhzR.js → hx-breadcrumb-item-B2rjepqy.js} +85 -72
  456. package/dist/shared/hx-breadcrumb-item-B2rjepqy.js.map +1 -0
  457. package/dist/shared/{hx-button-Cbhqpm5i.js → hx-button-6S3DwuIj.js} +96 -57
  458. package/dist/shared/hx-button-6S3DwuIj.js.map +1 -0
  459. package/dist/shared/{hx-button-group-CWjWv-wS.js → hx-button-group-ChTQsnQj.js} +10 -10
  460. package/dist/shared/hx-button-group-ChTQsnQj.js.map +1 -0
  461. package/dist/shared/{hx-card-B9j2SHyI.js → hx-card-dIKdcMhr.js} +41 -34
  462. package/dist/shared/hx-card-dIKdcMhr.js.map +1 -0
  463. package/dist/shared/{hx-carousel-item-Be0bC-7o.js → hx-carousel-item-Cm8a1nAi.js} +108 -91
  464. package/dist/shared/hx-carousel-item-Cm8a1nAi.js.map +1 -0
  465. package/dist/shared/{hx-checkbox-CuaJqEo7.js → hx-checkbox-_WUiuTo9.js} +75 -71
  466. package/dist/shared/hx-checkbox-_WUiuTo9.js.map +1 -0
  467. package/dist/shared/{hx-checkbox-group-ydUdV9Sx.js → hx-checkbox-group-B-ci-dxp.js} +62 -43
  468. package/dist/shared/hx-checkbox-group-B-ci-dxp.js.map +1 -0
  469. package/dist/shared/hx-clinical-status-De8yrA5I.js +467 -0
  470. package/dist/shared/hx-clinical-status-De8yrA5I.js.map +1 -0
  471. package/dist/shared/{hx-code-snippet-DBwIjl5p.js → hx-code-snippet-CQsyvthi.js} +72 -47
  472. package/dist/shared/hx-code-snippet-CQsyvthi.js.map +1 -0
  473. package/dist/shared/hx-color-picker-Dk2Myvaf.js +612 -0
  474. package/dist/shared/hx-color-picker-Dk2Myvaf.js.map +1 -0
  475. package/dist/shared/{hx-combobox-CNvY-es8.js → hx-combobox-CNAJXIxo.js} +100 -466
  476. package/dist/shared/hx-combobox-CNAJXIxo.js.map +1 -0
  477. package/dist/shared/{hx-container-DLUKnTi9.js → hx-container-7j16VuQE.js} +16 -16
  478. package/dist/shared/hx-container-7j16VuQE.js.map +1 -0
  479. package/dist/shared/{hx-copy-button-CLBA31to.js → hx-copy-button-B_ZHYO7_.js} +55 -40
  480. package/dist/shared/hx-copy-button-B_ZHYO7_.js.map +1 -0
  481. package/dist/shared/hx-counter-D_B7L9Pi.js +185 -0
  482. package/dist/shared/hx-counter-D_B7L9Pi.js.map +1 -0
  483. package/dist/shared/{hx-data-table-BwoJCFgs.js → hx-data-table-B1j4n4bm.js} +160 -90
  484. package/dist/shared/hx-data-table-B1j4n4bm.js.map +1 -0
  485. package/dist/shared/hx-date-picker-R-0kWFwr.js +627 -0
  486. package/dist/shared/hx-date-picker-R-0kWFwr.js.map +1 -0
  487. package/dist/shared/{hx-dialog-M7so0sRT.js → hx-dialog-U5d3s0Ps.js} +137 -108
  488. package/dist/shared/hx-dialog-U5d3s0Ps.js.map +1 -0
  489. package/dist/shared/{hx-divider-XgWIz4Mr.js → hx-divider-DdAN-_jB.js} +6 -5
  490. package/dist/shared/hx-divider-DdAN-_jB.js.map +1 -0
  491. package/dist/shared/{hx-drawer-CYxuhIQ0.js → hx-drawer-e0qeGxAD.js} +162 -93
  492. package/dist/shared/hx-drawer-e0qeGxAD.js.map +1 -0
  493. package/dist/shared/{hx-dropdown-7cfowTWv.js → hx-dropdown-DP_DNpEb.js} +71 -47
  494. package/dist/shared/hx-dropdown-DP_DNpEb.js.map +1 -0
  495. package/dist/shared/{hx-field-CDP8EXuj.js → hx-field-COM4KvMQ.js} +29 -21
  496. package/dist/shared/hx-field-COM4KvMQ.js.map +1 -0
  497. package/dist/shared/{hx-field-label-Bg-EWvqF.js → hx-field-label-BtZ9H9Yy.js} +8 -11
  498. package/dist/shared/hx-field-label-BtZ9H9Yy.js.map +1 -0
  499. package/dist/shared/{hx-file-upload-9HbONfqt.js → hx-file-upload-DbECypLe.js} +121 -91
  500. package/dist/shared/hx-file-upload-DbECypLe.js.map +1 -0
  501. package/dist/shared/hx-form-fJE-FJQV.js +262 -0
  502. package/dist/shared/hx-form-fJE-FJQV.js.map +1 -0
  503. package/dist/shared/{hx-format-date-BsVr8gpD.js → hx-format-date-C030ThSm.js} +20 -12
  504. package/dist/shared/hx-format-date-C030ThSm.js.map +1 -0
  505. package/dist/shared/{hx-grid-BsDBCTbt.js → hx-grid-DE8KM5Gf.js} +29 -22
  506. package/dist/shared/hx-grid-DE8KM5Gf.js.map +1 -0
  507. package/dist/shared/{hx-help-text-DaOPN1iB.js → hx-help-text-BAcEGRUE.js} +2 -2
  508. package/dist/shared/{hx-help-text-DaOPN1iB.js.map → hx-help-text-BAcEGRUE.js.map} +1 -1
  509. package/dist/shared/{hx-icon-button-iu0i_faq.js → hx-icon-button-Et9wq79n.js} +15 -1
  510. package/dist/shared/{hx-icon-button-iu0i_faq.js.map → hx-icon-button-Et9wq79n.js.map} +1 -1
  511. package/dist/shared/{hx-icon--xsJztDh.js → hx-icon-dYvrzvsO.js} +12 -7
  512. package/dist/shared/hx-icon-dYvrzvsO.js.map +1 -0
  513. package/dist/shared/{hx-image-xyb_tHCR.js → hx-image-DUsEi-oN.js} +20 -15
  514. package/dist/shared/hx-image-DUsEi-oN.js.map +1 -0
  515. package/dist/shared/{hx-link-DfNy_UU8.js → hx-link-Peg2LzOD.js} +19 -8
  516. package/dist/shared/hx-link-Peg2LzOD.js.map +1 -0
  517. package/dist/shared/{hx-list-CdRNgeoP.js → hx-list-DwInEX2H.js} +63 -37
  518. package/dist/shared/hx-list-DwInEX2H.js.map +1 -0
  519. package/dist/shared/{hx-menu-divider-DR8klkFT.js → hx-menu-divider-DR4G_rqw.js} +71 -40
  520. package/dist/shared/hx-menu-divider-DR4G_rqw.js.map +1 -0
  521. package/dist/shared/{hx-meter-CZ7lnMra.js → hx-meter-CVs4A649.js} +83 -67
  522. package/dist/shared/hx-meter-CVs4A649.js.map +1 -0
  523. package/dist/shared/{hx-nav-DM6-cGKF.js → hx-nav-D377Ngz4.js} +70 -54
  524. package/dist/shared/hx-nav-D377Ngz4.js.map +1 -0
  525. package/dist/shared/{hx-nav-item-D54-5eUM.js → hx-nav-item-ByU2N921.js} +84 -48
  526. package/dist/shared/hx-nav-item-ByU2N921.js.map +1 -0
  527. package/dist/shared/{hx-number-input-BP6TIA92.js → hx-number-input-BPgrlMLN.js} +97 -65
  528. package/dist/shared/hx-number-input-BPgrlMLN.js.map +1 -0
  529. package/dist/shared/{hx-overflow-menu-CobkjAb8.js → hx-overflow-menu-Bz02LPPk.js} +83 -67
  530. package/dist/shared/hx-overflow-menu-Bz02LPPk.js.map +1 -0
  531. package/dist/shared/{hx-pagination-10dpXS95.js → hx-pagination-DYhYPqDn.js} +119 -92
  532. package/dist/shared/hx-pagination-DYhYPqDn.js.map +1 -0
  533. package/dist/shared/hx-patient-banner-BoJHddAL.js +256 -0
  534. package/dist/shared/hx-patient-banner-BoJHddAL.js.map +1 -0
  535. package/dist/shared/hx-phi-field-EDWna59z.js +261 -0
  536. package/dist/shared/hx-phi-field-EDWna59z.js.map +1 -0
  537. package/dist/shared/{hx-popover-ULjonbaO.js → hx-popover-D6kYQkt3.js} +121 -89
  538. package/dist/shared/hx-popover-D6kYQkt3.js.map +1 -0
  539. package/dist/shared/{hx-popup-CYf9Q5sj.js → hx-popup-RQb6HUXc.js} +14 -2
  540. package/dist/shared/hx-popup-RQb6HUXc.js.map +1 -0
  541. package/dist/shared/{hx-progress-bar-CnTibV63.js → hx-progress-bar-ByEmxq1V.js} +77 -57
  542. package/dist/shared/hx-progress-bar-ByEmxq1V.js.map +1 -0
  543. package/dist/shared/{hx-progress-ring-BHJBaXNk.js → hx-progress-ring-CtVnNRQx.js} +36 -29
  544. package/dist/shared/hx-progress-ring-CtVnNRQx.js.map +1 -0
  545. package/dist/shared/hx-prose-Ml_L2zje.js +59 -0
  546. package/dist/shared/hx-prose-Ml_L2zje.js.map +1 -0
  547. package/dist/shared/{hx-radio-BnKcRuQu.js → hx-radio-jgeW92SV.js} +34 -34
  548. package/dist/shared/hx-radio-jgeW92SV.js.map +1 -0
  549. package/dist/shared/{hx-rating-Y_t7Z4qb.js → hx-rating-g_iy-DW_.js} +144 -81
  550. package/dist/shared/hx-rating-g_iy-DW_.js.map +1 -0
  551. package/dist/shared/{hx-select-C50lD7NS.js → hx-select-4-nHL0vd.js} +158 -208
  552. package/dist/shared/hx-select-4-nHL0vd.js.map +1 -0
  553. package/dist/shared/hx-skeleton-BHvALyd7.js.map +1 -1
  554. package/dist/shared/{hx-slider-CprSNrRi.js → hx-slider-7Q-e0_pc.js} +49 -28
  555. package/dist/shared/hx-slider-7Q-e0_pc.js.map +1 -0
  556. package/dist/shared/{hx-spinner-BOApJ-g9.js → hx-spinner-DEgrKsUo.js} +36 -28
  557. package/dist/shared/hx-spinner-DEgrKsUo.js.map +1 -0
  558. package/dist/shared/{hx-split-button-CHGy4FUc.js → hx-split-button-BA7P_ly5.js} +51 -31
  559. package/dist/shared/hx-split-button-BA7P_ly5.js.map +1 -0
  560. package/dist/shared/{hx-split-panel-DYtB45Tr.js → hx-split-panel-Bss54UN8.js} +68 -44
  561. package/dist/shared/hx-split-panel-Bss54UN8.js.map +1 -0
  562. package/dist/shared/{hx-stack-CfoW7jU7.js → hx-stack-BStY1RmV.js} +29 -29
  563. package/dist/shared/hx-stack-BStY1RmV.js.map +1 -0
  564. package/dist/shared/{hx-stat-C2wfph8W.js → hx-stat-CmkCUI8v.js} +49 -33
  565. package/dist/shared/hx-stat-CmkCUI8v.js.map +1 -0
  566. package/dist/shared/{hx-status-indicator-oYWOkWlD.js → hx-status-indicator-4ClvA5mU.js} +22 -19
  567. package/dist/shared/hx-status-indicator-4ClvA5mU.js.map +1 -0
  568. package/dist/shared/{hx-step-DYoIumpR.js → hx-step-DlANlr2A.js} +61 -89
  569. package/dist/shared/hx-step-DlANlr2A.js.map +1 -0
  570. package/dist/shared/{hx-structured-list-CMWllxGg.js → hx-structured-list-Db9rwLI_.js} +26 -23
  571. package/dist/shared/hx-structured-list-Db9rwLI_.js.map +1 -0
  572. package/dist/shared/hx-style-scope-BroUu83L.js +125 -0
  573. package/dist/shared/hx-style-scope-BroUu83L.js.map +1 -0
  574. package/dist/shared/{hx-switch-DkKchcuP.js → hx-switch-C0Lp5RGy.js} +19 -7
  575. package/dist/shared/hx-switch-C0Lp5RGy.js.map +1 -0
  576. package/dist/shared/{hx-tab-panel-BRNcLICw.js → hx-tab-panel-GGjk6Qg4.js} +139 -119
  577. package/dist/shared/hx-tab-panel-GGjk6Qg4.js.map +1 -0
  578. package/dist/shared/{hx-tag-B3N-vZ6B.js → hx-tag-K5fCjfqQ.js} +16 -14
  579. package/dist/shared/hx-tag-K5fCjfqQ.js.map +1 -0
  580. package/dist/shared/{hx-td-CVwCGBYf.js → hx-td-DZuILY3s.js} +64 -59
  581. package/dist/shared/hx-td-DZuILY3s.js.map +1 -0
  582. package/dist/shared/{hx-text-NjKoQATI.js → hx-text-DoEVOf47.js} +30 -29
  583. package/dist/shared/hx-text-DoEVOf47.js.map +1 -0
  584. package/dist/shared/{hx-text-input-CCZZbWQ9.js → hx-text-input-DTKWPVdy.js} +218 -86
  585. package/dist/shared/hx-text-input-DTKWPVdy.js.map +1 -0
  586. package/dist/shared/{hx-textarea-BsQdB1Rk.js → hx-textarea-BkSiU8oM.js} +35 -26
  587. package/dist/shared/hx-textarea-BkSiU8oM.js.map +1 -0
  588. package/dist/shared/hx-theme-Aag8QJvT.js +299 -0
  589. package/dist/shared/hx-theme-Aag8QJvT.js.map +1 -0
  590. package/dist/shared/{hx-time-picker-CJcIjH3C.js → hx-time-picker-BpCRsh_z.js} +101 -300
  591. package/dist/shared/hx-time-picker-BpCRsh_z.js.map +1 -0
  592. package/dist/shared/{hx-toggle-button-D4F1soEM.js → hx-toggle-button-CPFqs3eQ.js} +81 -41
  593. package/dist/shared/hx-toggle-button-CPFqs3eQ.js.map +1 -0
  594. package/dist/shared/{hx-tooltip-Bk1iQRHs.js → hx-tooltip-CrO4vzeX.js} +75 -53
  595. package/dist/shared/hx-tooltip-CrO4vzeX.js.map +1 -0
  596. package/dist/shared/{hx-top-nav-D2bQpns3.js → hx-top-nav-DYlnzDaU.js} +3 -1
  597. package/dist/shared/{hx-top-nav-D2bQpns3.js.map → hx-top-nav-DYlnzDaU.js.map} +1 -1
  598. package/dist/shared/{hx-tree-item-BobGN76x.js → hx-tree-item-DTDIBRrI.js} +140 -94
  599. package/dist/shared/hx-tree-item-DTDIBRrI.js.map +1 -0
  600. package/dist/shared/id-counter-JhvVCnjh.js +143 -0
  601. package/dist/shared/id-counter-JhvVCnjh.js.map +1 -0
  602. package/dist/shared/{toast-factory-MvMMreTu.js → toast-factory-f184Gi70.js} +96 -73
  603. package/dist/shared/toast-factory-f184Gi70.js.map +1 -0
  604. package/dist/styles/shared-field.styles.d.ts +6 -0
  605. package/dist/styles/shared-field.styles.d.ts.map +1 -0
  606. package/dist/utilities/adoptedStylesheetRegistry.d.ts +47 -0
  607. package/dist/utilities/adoptedStylesheetRegistry.d.ts.map +1 -0
  608. package/dist/utilities/generateScopedSelectors.d.ts +30 -0
  609. package/dist/utilities/generateScopedSelectors.d.ts.map +1 -0
  610. package/dist/utilities/injectLightStyles.d.ts +37 -0
  611. package/dist/utilities/injectLightStyles.d.ts.map +1 -0
  612. package/dist/utilities/lightStyleRegistry.d.ts +41 -0
  613. package/dist/utilities/lightStyleRegistry.d.ts.map +1 -0
  614. package/dist/utilities/sheetManager.d.ts +62 -0
  615. package/dist/utilities/sheetManager.d.ts.map +1 -0
  616. package/dist/utils/contrast-checker.d.ts +86 -0
  617. package/dist/utils/contrast-checker.d.ts.map +1 -0
  618. package/dist/utils/token-merger.d.ts +24 -0
  619. package/dist/utils/token-merger.d.ts.map +1 -0
  620. package/fouc.css +37 -0
  621. package/package.json +26 -9
  622. package/dist/shared/hx-accordion-DT8qHOay.js.map +0 -1
  623. package/dist/shared/hx-action-bar-we_WJety.js.map +0 -1
  624. package/dist/shared/hx-alert-D6uok29t.js.map +0 -1
  625. package/dist/shared/hx-avatar-Cep6Urm3.js.map +0 -1
  626. package/dist/shared/hx-badge-BeuWuUj_.js.map +0 -1
  627. package/dist/shared/hx-banner-DnCBJtRR.js.map +0 -1
  628. package/dist/shared/hx-breadcrumb-item-Bj2UqhzR.js.map +0 -1
  629. package/dist/shared/hx-button-Cbhqpm5i.js.map +0 -1
  630. package/dist/shared/hx-button-group-CWjWv-wS.js.map +0 -1
  631. package/dist/shared/hx-card-B9j2SHyI.js.map +0 -1
  632. package/dist/shared/hx-carousel-item-Be0bC-7o.js.map +0 -1
  633. package/dist/shared/hx-checkbox-CuaJqEo7.js.map +0 -1
  634. package/dist/shared/hx-checkbox-group-ydUdV9Sx.js.map +0 -1
  635. package/dist/shared/hx-code-snippet-DBwIjl5p.js.map +0 -1
  636. package/dist/shared/hx-color-picker-Bb2UPVc3.js +0 -803
  637. package/dist/shared/hx-color-picker-Bb2UPVc3.js.map +0 -1
  638. package/dist/shared/hx-combobox-CNvY-es8.js.map +0 -1
  639. package/dist/shared/hx-container-DLUKnTi9.js.map +0 -1
  640. package/dist/shared/hx-copy-button-CLBA31to.js.map +0 -1
  641. package/dist/shared/hx-counter-D-1NXzGs.js +0 -138
  642. package/dist/shared/hx-counter-D-1NXzGs.js.map +0 -1
  643. package/dist/shared/hx-data-table-BwoJCFgs.js.map +0 -1
  644. package/dist/shared/hx-date-picker-DDcIBJir.js +0 -980
  645. package/dist/shared/hx-date-picker-DDcIBJir.js.map +0 -1
  646. package/dist/shared/hx-dialog-M7so0sRT.js.map +0 -1
  647. package/dist/shared/hx-divider-XgWIz4Mr.js.map +0 -1
  648. package/dist/shared/hx-drawer-CYxuhIQ0.js.map +0 -1
  649. package/dist/shared/hx-dropdown-7cfowTWv.js.map +0 -1
  650. package/dist/shared/hx-field-CDP8EXuj.js.map +0 -1
  651. package/dist/shared/hx-field-label-Bg-EWvqF.js.map +0 -1
  652. package/dist/shared/hx-file-upload-9HbONfqt.js.map +0 -1
  653. package/dist/shared/hx-form-BFv_N1dm.js +0 -1272
  654. package/dist/shared/hx-form-BFv_N1dm.js.map +0 -1
  655. package/dist/shared/hx-format-date-BsVr8gpD.js.map +0 -1
  656. package/dist/shared/hx-grid-BsDBCTbt.js.map +0 -1
  657. package/dist/shared/hx-icon--xsJztDh.js.map +0 -1
  658. package/dist/shared/hx-image-xyb_tHCR.js.map +0 -1
  659. package/dist/shared/hx-link-DfNy_UU8.js.map +0 -1
  660. package/dist/shared/hx-list-CdRNgeoP.js.map +0 -1
  661. package/dist/shared/hx-menu-divider-DR8klkFT.js.map +0 -1
  662. package/dist/shared/hx-meter-CZ7lnMra.js.map +0 -1
  663. package/dist/shared/hx-nav-DM6-cGKF.js.map +0 -1
  664. package/dist/shared/hx-nav-item-D54-5eUM.js.map +0 -1
  665. package/dist/shared/hx-number-input-BP6TIA92.js.map +0 -1
  666. package/dist/shared/hx-overflow-menu-CobkjAb8.js.map +0 -1
  667. package/dist/shared/hx-pagination-10dpXS95.js.map +0 -1
  668. package/dist/shared/hx-popover-ULjonbaO.js.map +0 -1
  669. package/dist/shared/hx-popup-CYf9Q5sj.js.map +0 -1
  670. package/dist/shared/hx-progress-bar-CnTibV63.js.map +0 -1
  671. package/dist/shared/hx-progress-ring-BHJBaXNk.js.map +0 -1
  672. package/dist/shared/hx-prose-DZh2KrMb.js +0 -876
  673. package/dist/shared/hx-prose-DZh2KrMb.js.map +0 -1
  674. package/dist/shared/hx-radio-BnKcRuQu.js.map +0 -1
  675. package/dist/shared/hx-rating-Y_t7Z4qb.js.map +0 -1
  676. package/dist/shared/hx-select-C50lD7NS.js.map +0 -1
  677. package/dist/shared/hx-slider-CprSNrRi.js.map +0 -1
  678. package/dist/shared/hx-spinner-BOApJ-g9.js.map +0 -1
  679. package/dist/shared/hx-split-button-CHGy4FUc.js.map +0 -1
  680. package/dist/shared/hx-split-panel-DYtB45Tr.js.map +0 -1
  681. package/dist/shared/hx-stack-CfoW7jU7.js.map +0 -1
  682. package/dist/shared/hx-stat-C2wfph8W.js.map +0 -1
  683. package/dist/shared/hx-status-indicator-oYWOkWlD.js.map +0 -1
  684. package/dist/shared/hx-step-DYoIumpR.js.map +0 -1
  685. package/dist/shared/hx-structured-list-CMWllxGg.js.map +0 -1
  686. package/dist/shared/hx-switch-DkKchcuP.js.map +0 -1
  687. package/dist/shared/hx-tab-panel-BRNcLICw.js.map +0 -1
  688. package/dist/shared/hx-tag-B3N-vZ6B.js.map +0 -1
  689. package/dist/shared/hx-td-CVwCGBYf.js.map +0 -1
  690. package/dist/shared/hx-text-NjKoQATI.js.map +0 -1
  691. package/dist/shared/hx-text-input-CCZZbWQ9.js.map +0 -1
  692. package/dist/shared/hx-textarea-BsQdB1Rk.js.map +0 -1
  693. package/dist/shared/hx-theme-6GDoUG8j.js +0 -176
  694. package/dist/shared/hx-theme-6GDoUG8j.js.map +0 -1
  695. package/dist/shared/hx-time-picker-CJcIjH3C.js.map +0 -1
  696. package/dist/shared/hx-toggle-button-D4F1soEM.js.map +0 -1
  697. package/dist/shared/hx-tooltip-Bk1iQRHs.js.map +0 -1
  698. package/dist/shared/hx-tree-item-BobGN76x.js.map +0 -1
  699. package/dist/shared/toast-factory-MvMMreTu.js.map +0 -1
@@ -1,10 +1,10 @@
1
- import { css as b, LitElement as g, nothing as p, html as c } 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 { property as a, state as b, query as _, customElement as y } from "lit/decorators.js";
3
3
  import { classMap as w } from "lit/directives/class-map.js";
4
4
  import { ifDefined as v } from "lit/directives/if-defined.js";
5
5
  import { repeat as $ } from "lit/directives/repeat.js";
6
6
  import { tokenStyles as z } from "@helixui/tokens/lit";
7
- const F = b`
7
+ const F = 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;
@@ -210,10 +210,12 @@ const F = b`
210
210
 
211
211
  .progress-bar {
212
212
  height: 100%;
213
+ width: 100%;
213
214
  background-color: var(--hx-file-upload-progress-color, var(--hx-color-primary-500, #2563eb));
214
215
  border-radius: inherit;
215
- transition: width var(--hx-transition-fast, 150ms ease);
216
- width: 0%;
216
+ transform-origin: left center;
217
+ transform: scaleX(var(--_progress-ratio, 0));
218
+ transition: transform var(--hx-transition-fast, 150ms ease);
217
219
  }
218
220
 
219
221
  @media (prefers-reduced-motion: reduce) {
@@ -244,16 +246,17 @@ const F = b`
244
246
  line-height: var(--hx-line-height-normal, 1.5);
245
247
  }
246
248
  `;
247
- var k = Object.defineProperty, D = Object.getOwnPropertyDescriptor, l = (e, r, i, t) => {
248
- for (var o = t > 1 ? void 0 : t ? D(r, i) : r, d = e.length - 1, n; d >= 0; d--)
249
- (n = e[d]) && (o = (t ? n(r, i, o) : n(o)) || o);
250
- return t && o && k(r, i, o), o;
249
+ var D = Object.defineProperty, k = Object.getOwnPropertyDescriptor, o = (e, r, t, s) => {
250
+ for (var l = s > 1 ? void 0 : s ? k(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 && D(r, t, l), l;
251
253
  };
252
- let I = 0, s = class extends g {
254
+ let S = 0, i = class extends g {
253
255
  constructor() {
254
- 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._files = [], this._dragOver = !1, this._hasFileListSlot = !1, this._baseId = `hx-file-upload-${++I}`, 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-${++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();
255
257
  }
256
258
  // ─── Slot Handling ───
259
+ /** @internal */
257
260
  _handleFileListSlotChange(e) {
258
261
  const r = e.target;
259
262
  this._hasFileListSlot = r.assignedElements({ flatten: !0 }).length > 0;
@@ -283,10 +286,19 @@ let I = 0, s = class extends g {
283
286
  reportValidity() {
284
287
  return this._internals.reportValidity();
285
288
  }
286
- /** Called by the form when it resets. */
289
+ /** @internal */
287
290
  formResetCallback() {
288
291
  this._files = [], this._internals.setFormValue(null);
289
292
  }
293
+ /** @internal */
294
+ formDisabledCallback(e) {
295
+ this.disabled = e;
296
+ }
297
+ /** @internal */
298
+ formStateRestoreCallback(e, r) {
299
+ (r === "restore" || r === "autocomplete") && (this._files = [], this._internals.setFormValue(null));
300
+ }
301
+ /** @internal */
290
302
  _syncFormValue() {
291
303
  if (this._files.length === 0) {
292
304
  this._internals.setFormValue(null);
@@ -307,6 +319,7 @@ let I = 0, s = class extends g {
307
319
  * Validates a file against `accept` and `maxSize` constraints.
308
320
  * Returns null on success, or an error message string on failure.
309
321
  */
322
+ /** @internal */
310
323
  _validateFile(e) {
311
324
  if (this.accept && !this._isAccepted(e))
312
325
  return `"${e.name}" has an unsupported file type. Accepted types: ${this.accept}`;
@@ -321,33 +334,35 @@ let I = 0, s = class extends g {
321
334
  * Handles MIME types (e.g. "image/png"), wildcard MIME types (e.g. "image/*"),
322
335
  * and extensions (e.g. ".pdf").
323
336
  */
337
+ /** @internal */
324
338
  _isAccepted(e) {
325
- const r = this.accept.split(",").map((i) => i.trim().toLowerCase());
326
- for (const i of r)
327
- if (i.startsWith(".")) {
328
- if (e.name.toLowerCase().endsWith(i)) return !0;
329
- } else if (i.endsWith("/*")) {
330
- const t = i.slice(0, -2);
331
- if (e.type.toLowerCase().startsWith(t)) return !0;
332
- } else if (e.type.toLowerCase() === i) return !0;
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);
345
+ if (e.type.toLowerCase().startsWith(s)) return !0;
346
+ } else if (e.type.toLowerCase() === t) return !0;
333
347
  return !1;
334
348
  }
335
349
  // ─── File Processing ───
350
+ /** @internal */
336
351
  _processFiles(e) {
337
352
  if (this.disabled) return;
338
- const r = this.multiple ? e : e.slice(0, 1), i = [], t = [], o = [];
353
+ const r = this.multiple ? e : e.slice(0, 1), t = [], s = [], l = [];
339
354
  for (const h of r) {
340
355
  const m = this._validateFile(h);
341
- m ? (t.push(h), o.push(m)) : i.push(h);
356
+ m ? (s.push(h), l.push(m)) : t.push(h);
342
357
  }
343
- if (t.length > 0 && this.dispatchEvent(
358
+ if (s.length > 0 && this.dispatchEvent(
344
359
  new CustomEvent("hx-error", {
345
360
  bubbles: !0,
346
361
  composed: !0,
347
- detail: { message: o.join(" "), files: t }
362
+ detail: { message: l.join(" "), files: s }
348
363
  })
349
- ), i.length === 0) return;
350
- const d = this.multiple ? this._files.length : 0, n = this.maxFiles > 0 ? Math.max(0, this.maxFiles - d) : i.length, f = i.slice(0, n);
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);
351
366
  if (f.length === 0 && this.maxFiles > 0) {
352
367
  this.dispatchEvent(
353
368
  new CustomEvent("hx-error", {
@@ -355,7 +370,7 @@ let I = 0, s = class extends g {
355
370
  composed: !0,
356
371
  detail: {
357
372
  message: `Maximum of ${this.maxFiles} file${this.maxFiles === 1 ? "" : "s"} allowed.`,
358
- files: i
373
+ files: t
359
374
  }
360
375
  })
361
376
  );
@@ -371,7 +386,7 @@ let I = 0, s = class extends g {
371
386
  })
372
387
  );
373
388
  }
374
- const u = i.slice(n);
389
+ const u = t.slice(n);
375
390
  u.length > 0 && this.maxFiles > 0 && this.dispatchEvent(
376
391
  new CustomEvent("hx-error", {
377
392
  bubbles: !0,
@@ -391,9 +406,9 @@ let I = 0, s = class extends g {
391
406
  */
392
407
  setProgress(e, r) {
393
408
  if (e < 0 || e >= this._files.length) return;
394
- const i = Math.max(0, Math.min(100, r));
409
+ const t = Math.max(0, Math.min(100, r));
395
410
  this._files = this._files.map(
396
- (t, o) => o === e ? { ...t, progress: i } : t
411
+ (s, l) => l === e ? { ...s, progress: t } : s
397
412
  );
398
413
  }
399
414
  /**
@@ -403,60 +418,69 @@ let I = 0, s = class extends g {
403
418
  return this._files.map((e) => e.file);
404
419
  }
405
420
  // ─── Drag and Drop Handlers ───
421
+ /** @internal */
406
422
  _handleDragOver(e) {
407
423
  e.preventDefault(), !this.disabled && (this._dragOver = !0);
408
424
  }
425
+ /** @internal */
409
426
  _handleDragLeave(e) {
410
- var t;
427
+ var s;
411
428
  const r = e.relatedTarget;
412
429
  if (r && this.contains(r)) return;
413
- const i = (t = this.shadowRoot) == null ? void 0 : t.querySelector(".dropzone");
414
- 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);
415
432
  }
433
+ /** @internal */
416
434
  _handleDrop(e) {
417
435
  if (e.preventDefault(), this._dragOver = !1, this.disabled) return;
418
436
  const r = e.dataTransfer;
419
437
  if (!r) return;
420
- const i = Array.from(r.files);
421
- i.length !== 0 && this._processFiles(i);
438
+ const t = Array.from(r.files);
439
+ t.length !== 0 && this._processFiles(t);
422
440
  }
423
441
  // ─── Click / Keyboard Handlers ───
442
+ /** @internal */
424
443
  _handleDropzoneClick() {
425
444
  var e;
426
445
  this.disabled || (e = this._fileInput) == null || e.click();
427
446
  }
447
+ /** @internal */
428
448
  _handleDropzoneKeyDown(e) {
429
449
  var r;
430
450
  this.disabled || (e.key === "Enter" || e.key === " ") && (e.preventDefault(), (r = this._fileInput) == null || r.click());
431
451
  }
452
+ /** @internal */
432
453
  _handleFileInputChange(e) {
433
454
  const r = e.target;
434
455
  if (!r.files || r.files.length === 0) return;
435
- const i = Array.from(r.files);
436
- r.value = "", this._processFiles(i);
456
+ const t = Array.from(r.files);
457
+ r.value = "", this._processFiles(t);
437
458
  }
438
459
  // ─── Remove Handler ───
460
+ /** @internal */
439
461
  _handleRemove(e) {
440
462
  if (this.disabled) return;
441
463
  const r = this._files[e];
442
464
  if (!r) return;
443
- const i = r.file;
444
- this._files = this._files.filter((t, o) => o !== e), this.dispatchEvent(
465
+ const t = r.file;
466
+ this._files = this._files.filter((s, l) => l !== e), this.dispatchEvent(
445
467
  new CustomEvent("hx-remove", {
446
468
  bubbles: !0,
447
469
  composed: !0,
448
- detail: { file: i, index: e }
470
+ detail: { file: t, index: e }
449
471
  })
450
472
  );
451
473
  }
452
474
  // ─── Formatters ───
475
+ /** @internal */
453
476
  _formatSize(e) {
454
477
  return e < 1024 ? `${e} B` : e < 1024 * 1024 ? `${(e / 1024).toFixed(1)} KB` : `${(e / (1024 * 1024)).toFixed(1)} MB`;
455
478
  }
456
479
  // ─── Render Helpers ───
480
+ /** @internal */
457
481
  _renderFileList() {
458
482
  return this._hasFileListSlot ? p : this._files.length === 0 ? p : c`
459
- <ul part="file-list" class="file-list" aria-label="Selected files">
483
+ <ul part="file-list" class="file-list" aria-label=${this.labelFileList}>
460
484
  ${$(
461
485
  this._files,
462
486
  (e) => e.file.name + e.file.size,
@@ -496,9 +520,12 @@ let I = 0, s = class extends g {
496
520
  aria-valuenow=${e.progress}
497
521
  aria-valuemin="0"
498
522
  aria-valuemax="100"
499
- aria-label=${`Upload progress for ${e.file.name}: ${e.progress}%`}
523
+ aria-label=${this.labelUploadProgress(e.file.name, e.progress)}
500
524
  >
501
- <div class="progress-bar" style="width: ${e.progress}%"></div>
525
+ <div
526
+ class="progress-bar"
527
+ style="--_progress-ratio: ${String(e.progress / 100)}"
528
+ ></div>
502
529
  </div>
503
530
  </li>
504
531
  `
@@ -512,7 +539,7 @@ let I = 0, s = class extends g {
512
539
  dropzone: !0,
513
540
  "dropzone--drag-over": this._dragOver,
514
541
  "dropzone--error": e
515
- }, i = this.label ? `${this.label} — ${this.labelDropzone}` : this.labelDropzone;
542
+ }, t = this.label ? `${this.label} — ${this.labelDropzone}` : this.labelDropzone;
516
543
  return c`
517
544
  <div class="field">
518
545
  ${this.label ? c`
@@ -527,7 +554,7 @@ let I = 0, s = class extends g {
527
554
  id=${this._dropzoneId}
528
555
  role="button"
529
556
  tabindex=${this.disabled ? "-1" : "0"}
530
- aria-label=${v(this.label ? void 0 : i)}
557
+ aria-label=${v(this.label ? void 0 : t)}
531
558
  aria-labelledby=${v(this.label ? this._labelId : void 0)}
532
559
  aria-disabled=${this.disabled ? "true" : p}
533
560
  aria-describedby=${v(e ? this._errorId : void 0)}
@@ -555,69 +582,72 @@ let I = 0, s = class extends g {
555
582
 
556
583
  ${this._renderFileList()}
557
584
  ${e ? c`
558
- <div
559
- part="error"
560
- class="field__error"
561
- id=${this._errorId}
562
- role="alert"
563
- aria-live="polite"
564
- >
585
+ <div part="error" class="field__error" id=${this._errorId} role="alert">
565
586
  ${this.error}
566
587
  </div>
567
588
  ` : p}
568
589
 
569
- <div id=${this._liveId} class="sr-only" aria-live="assertive" aria-atomic="true">
570
- ${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 : ""}
571
592
  </div>
572
593
  </div>
573
594
  `;
574
595
  }
575
596
  };
576
- s.styles = [z, F];
577
- s.formAssociated = !0;
578
- l([
597
+ i.styles = [z, F];
598
+ i.formAssociated = !0;
599
+ o([
579
600
  a({ type: String })
580
- ], s.prototype, "name", 2);
581
- l([
601
+ ], i.prototype, "name", 2);
602
+ o([
582
603
  a({ type: String })
583
- ], s.prototype, "accept", 2);
584
- l([
604
+ ], i.prototype, "accept", 2);
605
+ o([
585
606
  a({ type: Number, attribute: "max-size" })
586
- ], s.prototype, "maxSize", 2);
587
- l([
607
+ ], i.prototype, "maxSize", 2);
608
+ o([
588
609
  a({ type: Number, attribute: "max-files" })
589
- ], s.prototype, "maxFiles", 2);
590
- l([
610
+ ], i.prototype, "maxFiles", 2);
611
+ o([
591
612
  a({ type: Boolean })
592
- ], s.prototype, "multiple", 2);
593
- l([
613
+ ], i.prototype, "multiple", 2);
614
+ o([
594
615
  a({ type: String })
595
- ], s.prototype, "label", 2);
596
- l([
616
+ ], i.prototype, "label", 2);
617
+ o([
597
618
  a({ type: Boolean, reflect: !0 })
598
- ], s.prototype, "disabled", 2);
599
- l([
619
+ ], i.prototype, "disabled", 2);
620
+ o([
600
621
  a({ type: String })
601
- ], s.prototype, "error", 2);
602
- l([
622
+ ], i.prototype, "error", 2);
623
+ o([
603
624
  a({ type: String, attribute: "label-dropzone" })
604
- ], s.prototype, "labelDropzone", 2);
605
- l([
606
- x()
607
- ], s.prototype, "_files", 2);
608
- l([
609
- x()
610
- ], s.prototype, "_dragOver", 2);
611
- l([
612
- x()
613
- ], s.prototype, "_hasFileListSlot", 2);
614
- l([
625
+ ], i.prototype, "labelDropzone", 2);
626
+ o([
627
+ a({ type: String, attribute: "label-file-list" })
628
+ ], i.prototype, "labelFileList", 2);
629
+ o([
630
+ a({ attribute: !1 })
631
+ ], i.prototype, "labelUploadProgress", 2);
632
+ o([
633
+ a({ attribute: "label-drag-detected" })
634
+ ], i.prototype, "labelDragDetected", 2);
635
+ o([
636
+ b()
637
+ ], i.prototype, "_files", 2);
638
+ o([
639
+ b()
640
+ ], i.prototype, "_dragOver", 2);
641
+ o([
642
+ b()
643
+ ], i.prototype, "_hasFileListSlot", 2);
644
+ o([
615
645
  _(".file-input")
616
- ], s.prototype, "_fileInput", 2);
617
- s = l([
646
+ ], i.prototype, "_fileInput", 2);
647
+ i = o([
618
648
  y("hx-file-upload")
619
- ], s);
649
+ ], i);
620
650
  export {
621
- s as H
651
+ i as H
622
652
  };
623
- //# sourceMappingURL=hx-file-upload-9HbONfqt.js.map
653
+ //# sourceMappingURL=hx-file-upload-DbECypLe.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hx-file-upload-DbECypLe.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 { 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 { tokenStyles } from '@helixui/tokens/lit';\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 = [tokenStyles, 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","tokenStyles","__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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"}