@helixui/library 3.1.0 → 3.2.0

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 (608) hide show
  1. package/custom-elements.json +6597 -366
  2. package/dist/components/hx-accordion/hx-accordion-item.d.ts.map +1 -1
  3. package/dist/components/hx-accordion/hx-accordion.d.ts +3 -0
  4. package/dist/components/hx-accordion/hx-accordion.d.ts.map +1 -1
  5. package/dist/components/hx-accordion/index.js +1 -1
  6. package/dist/components/hx-action-bar/hx-action-bar.d.ts +14 -0
  7. package/dist/components/hx-action-bar/hx-action-bar.d.ts.map +1 -1
  8. package/dist/components/hx-action-bar/index.js +1 -1
  9. package/dist/components/hx-alert/hx-alert.d.ts +36 -0
  10. package/dist/components/hx-alert/hx-alert.d.ts.map +1 -1
  11. package/dist/components/hx-alert/hx-alert.styles.d.ts +12 -0
  12. package/dist/components/hx-alert/hx-alert.styles.d.ts.map +1 -1
  13. package/dist/components/hx-alert/index.js +1 -1
  14. package/dist/components/hx-avatar/hx-avatar.d.ts +17 -0
  15. package/dist/components/hx-avatar/hx-avatar.d.ts.map +1 -1
  16. package/dist/components/hx-avatar/index.js +1 -1
  17. package/dist/components/hx-badge/hx-badge.d.ts +35 -0
  18. package/dist/components/hx-badge/hx-badge.d.ts.map +1 -1
  19. package/dist/components/hx-badge/index.js +1 -1
  20. package/dist/components/hx-banner/hx-banner.d.ts +34 -0
  21. package/dist/components/hx-banner/hx-banner.d.ts.map +1 -1
  22. package/dist/components/hx-banner/hx-banner.styles.d.ts +12 -0
  23. package/dist/components/hx-banner/hx-banner.styles.d.ts.map +1 -1
  24. package/dist/components/hx-banner/index.js +1 -1
  25. package/dist/components/hx-breadcrumb/hx-breadcrumb-item.d.ts.map +1 -1
  26. package/dist/components/hx-breadcrumb/hx-breadcrumb.d.ts +3 -0
  27. package/dist/components/hx-breadcrumb/hx-breadcrumb.d.ts.map +1 -1
  28. package/dist/components/hx-breadcrumb/index.js +1 -1
  29. package/dist/components/hx-button/hx-button.d.ts +42 -0
  30. package/dist/components/hx-button/hx-button.d.ts.map +1 -1
  31. package/dist/components/hx-button/hx-button.styles.d.ts.map +1 -1
  32. package/dist/components/hx-button/index.js +1 -1
  33. package/dist/components/hx-button-group/hx-button-group.d.ts +2 -0
  34. package/dist/components/hx-button-group/hx-button-group.d.ts.map +1 -1
  35. package/dist/components/hx-button-group/hx-button-group.styles.d.ts.map +1 -1
  36. package/dist/components/hx-button-group/index.js +1 -1
  37. package/dist/components/hx-card/hx-card.d.ts +28 -0
  38. package/dist/components/hx-card/hx-card.d.ts.map +1 -1
  39. package/dist/components/hx-card/hx-card.styles.d.ts +9 -0
  40. package/dist/components/hx-card/hx-card.styles.d.ts.map +1 -1
  41. package/dist/components/hx-card/index.js +1 -1
  42. package/dist/components/hx-carousel/hx-carousel.d.ts +25 -0
  43. package/dist/components/hx-carousel/hx-carousel.d.ts.map +1 -1
  44. package/dist/components/hx-carousel/hx-carousel.styles.d.ts.map +1 -1
  45. package/dist/components/hx-carousel/index.js +1 -1
  46. package/dist/components/hx-checkbox/hx-checkbox.d.ts +38 -7
  47. package/dist/components/hx-checkbox/hx-checkbox.d.ts.map +1 -1
  48. package/dist/components/hx-checkbox/index.js +1 -1
  49. package/dist/components/hx-checkbox-group/hx-checkbox-group.d.ts +16 -2
  50. package/dist/components/hx-checkbox-group/hx-checkbox-group.d.ts.map +1 -1
  51. package/dist/components/hx-checkbox-group/index.js +1 -1
  52. package/dist/components/hx-clinical-status/hx-clinical-status.d.ts +37 -0
  53. package/dist/components/hx-clinical-status/hx-clinical-status.d.ts.map +1 -1
  54. package/dist/components/hx-clinical-status/index.js +1 -1
  55. package/dist/components/hx-code-snippet/hx-code-snippet.d.ts +35 -0
  56. package/dist/components/hx-code-snippet/hx-code-snippet.d.ts.map +1 -1
  57. package/dist/components/hx-code-snippet/hx-code-snippet.styles.d.ts.map +1 -1
  58. package/dist/components/hx-code-snippet/index.js +1 -1
  59. package/dist/components/hx-color-picker/hx-color-picker.d.ts +29 -0
  60. package/dist/components/hx-color-picker/hx-color-picker.d.ts.map +1 -1
  61. package/dist/components/hx-color-picker/hx-color-picker.styles.d.ts.map +1 -1
  62. package/dist/components/hx-color-picker/index.js +1 -1
  63. package/dist/components/hx-combobox/hx-combobox.d.ts +49 -0
  64. package/dist/components/hx-combobox/hx-combobox.d.ts.map +1 -1
  65. package/dist/components/hx-combobox/index.js +1 -1
  66. package/dist/components/hx-container/hx-container.d.ts +5 -0
  67. package/dist/components/hx-container/hx-container.d.ts.map +1 -1
  68. package/dist/components/hx-copy-button/hx-copy-button.d.ts +24 -0
  69. package/dist/components/hx-copy-button/hx-copy-button.d.ts.map +1 -1
  70. package/dist/components/hx-copy-button/hx-copy-button.styles.d.ts.map +1 -1
  71. package/dist/components/hx-copy-button/index.js +1 -1
  72. package/dist/components/hx-counter/hx-counter.d.ts +7 -0
  73. package/dist/components/hx-counter/hx-counter.d.ts.map +1 -1
  74. package/dist/components/hx-counter/index.js +1 -1
  75. package/dist/components/hx-data-table/hx-data-table.d.ts +29 -0
  76. package/dist/components/hx-data-table/hx-data-table.d.ts.map +1 -1
  77. package/dist/components/hx-data-table/hx-data-table.styles.d.ts.map +1 -1
  78. package/dist/components/hx-data-table/index.js +1 -1
  79. package/dist/components/hx-date-picker/hx-date-picker.d.ts +44 -0
  80. package/dist/components/hx-date-picker/hx-date-picker.d.ts.map +1 -1
  81. package/dist/components/hx-date-picker/index.js +1 -1
  82. package/dist/components/hx-dialog/hx-dialog.d.ts +31 -0
  83. package/dist/components/hx-dialog/hx-dialog.d.ts.map +1 -1
  84. package/dist/components/hx-dialog/hx-dialog.styles.d.ts +10 -0
  85. package/dist/components/hx-dialog/hx-dialog.styles.d.ts.map +1 -1
  86. package/dist/components/hx-dialog/index.js +1 -1
  87. package/dist/components/hx-divider/hx-divider.d.ts +9 -0
  88. package/dist/components/hx-divider/hx-divider.d.ts.map +1 -1
  89. package/dist/components/hx-divider/index.js +1 -1
  90. package/dist/components/hx-drawer/hx-drawer.d.ts +30 -0
  91. package/dist/components/hx-drawer/hx-drawer.d.ts.map +1 -1
  92. package/dist/components/hx-drawer/hx-drawer.styles.d.ts +10 -0
  93. package/dist/components/hx-drawer/hx-drawer.styles.d.ts.map +1 -1
  94. package/dist/components/hx-drawer/index.js +1 -1
  95. package/dist/components/hx-dropdown/hx-dropdown.d.ts +6 -0
  96. package/dist/components/hx-dropdown/hx-dropdown.d.ts.map +1 -1
  97. package/dist/components/hx-dropdown/index.js +1 -1
  98. package/dist/components/hx-field/hx-field.d.ts +15 -0
  99. package/dist/components/hx-field/hx-field.d.ts.map +1 -1
  100. package/dist/components/hx-field/index.js +1 -1
  101. package/dist/components/hx-field-label/hx-field-label.d.ts +11 -0
  102. package/dist/components/hx-field-label/hx-field-label.d.ts.map +1 -1
  103. package/dist/components/hx-field-label/index.js +1 -1
  104. package/dist/components/hx-file-upload/hx-file-upload.d.ts +35 -0
  105. package/dist/components/hx-file-upload/hx-file-upload.d.ts.map +1 -1
  106. package/dist/components/hx-file-upload/index.js +1 -1
  107. package/dist/components/hx-form/index.js +1 -1
  108. package/dist/components/hx-grid/hx-grid.d.ts +5 -0
  109. package/dist/components/hx-grid/hx-grid.d.ts.map +1 -1
  110. package/dist/components/hx-help-text/hx-help-text.d.ts +8 -0
  111. package/dist/components/hx-help-text/hx-help-text.d.ts.map +1 -1
  112. package/dist/components/hx-help-text/index.js +1 -1
  113. package/dist/components/hx-icon/hx-icon.d.ts +5 -0
  114. package/dist/components/hx-icon/hx-icon.d.ts.map +1 -1
  115. package/dist/components/hx-icon/index.js +1 -1
  116. package/dist/components/hx-icon-button/hx-icon-button.d.ts +27 -0
  117. package/dist/components/hx-icon-button/hx-icon-button.d.ts.map +1 -1
  118. package/dist/components/hx-icon-button/hx-icon-button.styles.d.ts.map +1 -1
  119. package/dist/components/hx-icon-button/index.js +1 -1
  120. package/dist/components/hx-image/hx-image.d.ts +4 -0
  121. package/dist/components/hx-image/hx-image.d.ts.map +1 -1
  122. package/dist/components/hx-image/index.js +1 -1
  123. package/dist/components/hx-link/hx-link.d.ts +15 -0
  124. package/dist/components/hx-link/hx-link.d.ts.map +1 -1
  125. package/dist/components/hx-link/index.js +1 -1
  126. package/dist/components/hx-list/hx-list-item.d.ts.map +1 -1
  127. package/dist/components/hx-list/hx-list.d.ts +3 -0
  128. package/dist/components/hx-list/hx-list.d.ts.map +1 -1
  129. package/dist/components/hx-list/index.js +1 -1
  130. package/dist/components/hx-menu/hx-menu-divider.d.ts.map +1 -1
  131. package/dist/components/hx-menu/hx-menu-item.d.ts.map +1 -1
  132. package/dist/components/hx-menu/hx-menu-item.styles.d.ts.map +1 -1
  133. package/dist/components/hx-menu/hx-menu.d.ts +6 -0
  134. package/dist/components/hx-menu/hx-menu.d.ts.map +1 -1
  135. package/dist/components/hx-menu/index.js +1 -1
  136. package/dist/components/hx-meter/hx-meter.d.ts +23 -0
  137. package/dist/components/hx-meter/hx-meter.d.ts.map +1 -1
  138. package/dist/components/hx-meter/hx-meter.styles.d.ts.map +1 -1
  139. package/dist/components/hx-meter/index.js +1 -1
  140. package/dist/components/hx-nav/hx-nav.d.ts +29 -0
  141. package/dist/components/hx-nav/hx-nav.d.ts.map +1 -1
  142. package/dist/components/hx-nav/hx-nav.styles.d.ts.map +1 -1
  143. package/dist/components/hx-nav/index.js +1 -1
  144. package/dist/components/hx-number-input/hx-number-input.d.ts +34 -0
  145. package/dist/components/hx-number-input/hx-number-input.d.ts.map +1 -1
  146. package/dist/components/hx-number-input/index.js +1 -1
  147. package/dist/components/hx-overflow-menu/hx-overflow-menu.d.ts +26 -0
  148. package/dist/components/hx-overflow-menu/hx-overflow-menu.d.ts.map +1 -1
  149. package/dist/components/hx-overflow-menu/hx-overflow-menu.styles.d.ts.map +1 -1
  150. package/dist/components/hx-overflow-menu/index.js +1 -1
  151. package/dist/components/hx-pagination/hx-pagination.d.ts +21 -0
  152. package/dist/components/hx-pagination/hx-pagination.d.ts.map +1 -1
  153. package/dist/components/hx-pagination/hx-pagination.styles.d.ts.map +1 -1
  154. package/dist/components/hx-pagination/index.js +1 -1
  155. package/dist/components/hx-patient-banner/hx-patient-banner.d.ts +23 -0
  156. package/dist/components/hx-patient-banner/hx-patient-banner.d.ts.map +1 -1
  157. package/dist/components/hx-patient-banner/hx-patient-banner.styles.d.ts.map +1 -1
  158. package/dist/components/hx-patient-banner/index.js +1 -1
  159. package/dist/components/hx-phi-field/hx-phi-field.d.ts +19 -5
  160. package/dist/components/hx-phi-field/hx-phi-field.d.ts.map +1 -1
  161. package/dist/components/hx-phi-field/index.js +1 -1
  162. package/dist/components/hx-popover/hx-popover.d.ts +15 -0
  163. package/dist/components/hx-popover/hx-popover.d.ts.map +1 -1
  164. package/dist/components/hx-popover/hx-popover.styles.d.ts +9 -0
  165. package/dist/components/hx-popover/hx-popover.styles.d.ts.map +1 -1
  166. package/dist/components/hx-popover/index.js +1 -1
  167. package/dist/components/hx-popup/hx-popup.d.ts +1 -0
  168. package/dist/components/hx-popup/hx-popup.d.ts.map +1 -1
  169. package/dist/components/hx-popup/hx-popup.styles.d.ts +9 -0
  170. package/dist/components/hx-popup/hx-popup.styles.d.ts.map +1 -1
  171. package/dist/components/hx-popup/index.js +1 -1
  172. package/dist/components/hx-progress-bar/hx-progress-bar.d.ts +17 -0
  173. package/dist/components/hx-progress-bar/hx-progress-bar.d.ts.map +1 -1
  174. package/dist/components/hx-progress-bar/index.js +1 -1
  175. package/dist/components/hx-progress-ring/hx-progress-ring.d.ts +15 -0
  176. package/dist/components/hx-progress-ring/hx-progress-ring.d.ts.map +1 -1
  177. package/dist/components/hx-progress-ring/index.js +1 -1
  178. package/dist/components/hx-prose/hx-prose.d.ts +2 -0
  179. package/dist/components/hx-prose/hx-prose.d.ts.map +1 -1
  180. package/dist/components/hx-prose/index.js +1 -1
  181. package/dist/components/hx-radio-group/hx-radio-group.d.ts +17 -3
  182. package/dist/components/hx-radio-group/hx-radio-group.d.ts.map +1 -1
  183. package/dist/components/hx-radio-group/hx-radio.d.ts +5 -5
  184. package/dist/components/hx-radio-group/hx-radio.d.ts.map +1 -1
  185. package/dist/components/hx-radio-group/index.js +1 -1
  186. package/dist/components/hx-rating/hx-rating.d.ts +13 -0
  187. package/dist/components/hx-rating/hx-rating.d.ts.map +1 -1
  188. package/dist/components/hx-rating/index.js +1 -1
  189. package/dist/components/hx-select/hx-select.d.ts +43 -0
  190. package/dist/components/hx-select/hx-select.d.ts.map +1 -1
  191. package/dist/components/hx-select/hx-select.styles.d.ts.map +1 -1
  192. package/dist/components/hx-select/index.js +1 -1
  193. package/dist/components/hx-side-nav/hx-nav-item.d.ts.map +1 -1
  194. package/dist/components/hx-side-nav/hx-nav-item.styles.d.ts.map +1 -1
  195. package/dist/components/hx-side-nav/hx-side-nav.d.ts +19 -0
  196. package/dist/components/hx-side-nav/hx-side-nav.d.ts.map +1 -1
  197. package/dist/components/hx-side-nav/hx-side-nav.styles.d.ts.map +1 -1
  198. package/dist/components/hx-side-nav/index.js +1 -1
  199. package/dist/components/hx-skeleton/hx-skeleton.d.ts +5 -0
  200. package/dist/components/hx-skeleton/hx-skeleton.d.ts.map +1 -1
  201. package/dist/components/hx-skeleton/index.js +1 -1
  202. package/dist/components/hx-slider/hx-slider.d.ts +38 -0
  203. package/dist/components/hx-slider/hx-slider.d.ts.map +1 -1
  204. package/dist/components/hx-slider/hx-slider.styles.d.ts.map +1 -1
  205. package/dist/components/hx-slider/index.js +1 -1
  206. package/dist/components/hx-spinner/hx-spinner.d.ts +10 -0
  207. package/dist/components/hx-spinner/hx-spinner.d.ts.map +1 -1
  208. package/dist/components/hx-spinner/index.js +1 -1
  209. package/dist/components/hx-split-button/hx-split-button.d.ts +39 -0
  210. package/dist/components/hx-split-button/hx-split-button.d.ts.map +1 -1
  211. package/dist/components/hx-split-button/hx-split-button.styles.d.ts.map +1 -1
  212. package/dist/components/hx-split-button/index.js +1 -1
  213. package/dist/components/hx-split-panel/hx-split-panel.d.ts +12 -0
  214. package/dist/components/hx-split-panel/hx-split-panel.d.ts.map +1 -1
  215. package/dist/components/hx-split-panel/hx-split-panel.styles.d.ts.map +1 -1
  216. package/dist/components/hx-split-panel/index.js +1 -1
  217. package/dist/components/hx-stack/hx-stack.d.ts +5 -0
  218. package/dist/components/hx-stack/hx-stack.d.ts.map +1 -1
  219. package/dist/components/hx-stat/hx-stat.d.ts +24 -0
  220. package/dist/components/hx-stat/hx-stat.d.ts.map +1 -1
  221. package/dist/components/hx-stat/index.js +1 -1
  222. package/dist/components/hx-status-indicator/hx-status-indicator.d.ts +13 -0
  223. package/dist/components/hx-status-indicator/hx-status-indicator.d.ts.map +1 -1
  224. package/dist/components/hx-status-indicator/index.js +1 -1
  225. package/dist/components/hx-steps/hx-step.d.ts.map +1 -1
  226. package/dist/components/hx-steps/hx-step.styles.d.ts.map +1 -1
  227. package/dist/components/hx-steps/hx-steps.d.ts +15 -0
  228. package/dist/components/hx-steps/hx-steps.d.ts.map +1 -1
  229. package/dist/components/hx-steps/index.js +1 -1
  230. package/dist/components/hx-structured-list/hx-structured-list.d.ts +7 -0
  231. package/dist/components/hx-structured-list/hx-structured-list.d.ts.map +1 -1
  232. package/dist/components/hx-structured-list/index.js +1 -1
  233. package/dist/components/hx-switch/hx-switch.d.ts +42 -0
  234. package/dist/components/hx-switch/hx-switch.d.ts.map +1 -1
  235. package/dist/components/hx-switch/hx-switch.styles.d.ts.map +1 -1
  236. package/dist/components/hx-switch/index.js +1 -1
  237. package/dist/components/hx-table/hx-table.d.ts +20 -6
  238. package/dist/components/hx-table/hx-table.d.ts.map +1 -1
  239. package/dist/components/hx-table/hx-td.d.ts +1 -1
  240. package/dist/components/hx-table/index.js +1 -1
  241. package/dist/components/hx-tabs/hx-tab-panel.d.ts +2 -2
  242. package/dist/components/hx-tabs/hx-tab-panel.d.ts.map +1 -1
  243. package/dist/components/hx-tabs/hx-tab.d.ts +6 -6
  244. package/dist/components/hx-tabs/hx-tab.d.ts.map +1 -1
  245. package/dist/components/hx-tabs/hx-tabs.d.ts +12 -8
  246. package/dist/components/hx-tabs/hx-tabs.d.ts.map +1 -1
  247. package/dist/components/hx-tabs/index.js +1 -1
  248. package/dist/components/hx-tag/hx-tag.d.ts +36 -0
  249. package/dist/components/hx-tag/hx-tag.d.ts.map +1 -1
  250. package/dist/components/hx-tag/index.js +1 -1
  251. package/dist/components/hx-text/hx-text.d.ts +22 -0
  252. package/dist/components/hx-text/hx-text.d.ts.map +1 -1
  253. package/dist/components/hx-text/hx-text.styles.d.ts.map +1 -1
  254. package/dist/components/hx-text/index.js +1 -1
  255. package/dist/components/hx-text-input/hx-text-input.d.ts +30 -0
  256. package/dist/components/hx-text-input/hx-text-input.d.ts.map +1 -1
  257. package/dist/components/hx-text-input/hx-text-input.styles.d.ts +12 -0
  258. package/dist/components/hx-text-input/hx-text-input.styles.d.ts.map +1 -1
  259. package/dist/components/hx-text-input/index.js +1 -1
  260. package/dist/components/hx-textarea/hx-textarea.d.ts +27 -0
  261. package/dist/components/hx-textarea/hx-textarea.d.ts.map +1 -1
  262. package/dist/components/hx-textarea/hx-textarea.styles.d.ts.map +1 -1
  263. package/dist/components/hx-textarea/index.js +1 -1
  264. package/dist/components/hx-theme/hx-theme.d.ts +3 -0
  265. package/dist/components/hx-theme/hx-theme.d.ts.map +1 -1
  266. package/dist/components/hx-theme/index.js +1 -1
  267. package/dist/components/hx-time-picker/hx-time-picker.d.ts +32 -0
  268. package/dist/components/hx-time-picker/hx-time-picker.d.ts.map +1 -1
  269. package/dist/components/hx-time-picker/hx-time-picker.styles.d.ts.map +1 -1
  270. package/dist/components/hx-time-picker/index.js +1 -1
  271. package/dist/components/hx-toast/hx-toast.d.ts +24 -0
  272. package/dist/components/hx-toast/hx-toast.d.ts.map +1 -1
  273. package/dist/components/hx-toast/hx-toast.styles.d.ts +10 -0
  274. package/dist/components/hx-toast/hx-toast.styles.d.ts.map +1 -1
  275. package/dist/components/hx-toast/index.js +1 -1
  276. package/dist/components/hx-toggle-button/hx-toggle-button.d.ts +35 -0
  277. package/dist/components/hx-toggle-button/hx-toggle-button.d.ts.map +1 -1
  278. package/dist/components/hx-toggle-button/hx-toggle-button.styles.d.ts.map +1 -1
  279. package/dist/components/hx-toggle-button/index.js +1 -1
  280. package/dist/components/hx-tooltip/hx-tooltip.d.ts +13 -0
  281. package/dist/components/hx-tooltip/hx-tooltip.d.ts.map +1 -1
  282. package/dist/components/hx-tooltip/hx-tooltip.styles.d.ts +8 -0
  283. package/dist/components/hx-tooltip/hx-tooltip.styles.d.ts.map +1 -1
  284. package/dist/components/hx-tooltip/index.js +1 -1
  285. package/dist/components/hx-top-nav/hx-top-nav.d.ts +21 -0
  286. package/dist/components/hx-top-nav/hx-top-nav.d.ts.map +1 -1
  287. package/dist/components/hx-top-nav/hx-top-nav.styles.d.ts.map +1 -1
  288. package/dist/components/hx-top-nav/index.js +1 -1
  289. package/dist/components/hx-tree-view/hx-tree-item.d.ts.map +1 -1
  290. package/dist/components/hx-tree-view/hx-tree-item.styles.d.ts.map +1 -1
  291. package/dist/components/hx-tree-view/hx-tree-view.d.ts +6 -0
  292. package/dist/components/hx-tree-view/hx-tree-view.d.ts.map +1 -1
  293. package/dist/components/hx-tree-view/index.js +1 -1
  294. package/dist/css/helix-all.css +1173 -828
  295. package/dist/css/helix-core.css +215 -154
  296. package/dist/css/helix-data.css +58 -45
  297. package/dist/css/helix-feedback.css +119 -92
  298. package/dist/css/helix-forms.css +502 -332
  299. package/dist/css/helix-layout.css +9 -6
  300. package/dist/css/helix-media.css +13 -9
  301. package/dist/css/helix-navigation.css +86 -59
  302. package/dist/css/helix-overlay.css +65 -50
  303. package/dist/css/helix-tokens.css +113 -101
  304. package/dist/css/helix-utility.css +57 -40
  305. package/dist/css/hx-action-bar.css +5 -5
  306. package/dist/css/hx-alert.css +27 -23
  307. package/dist/css/hx-avatar.css +3 -3
  308. package/dist/css/hx-badge.css +22 -22
  309. package/dist/css/hx-banner.css +31 -24
  310. package/dist/css/hx-button-group.css +31 -14
  311. package/dist/css/hx-button.css +38 -21
  312. package/dist/css/hx-card.css +26 -12
  313. package/dist/css/hx-carousel.css +13 -9
  314. package/dist/css/hx-checkbox-group.css +5 -5
  315. package/dist/css/hx-checkbox.css +19 -19
  316. package/dist/css/hx-clinical-status.css +28 -28
  317. package/dist/css/hx-code-snippet.css +24 -18
  318. package/dist/css/hx-color-picker.css +30 -13
  319. package/dist/css/hx-combobox.css +28 -28
  320. package/dist/css/hx-copy-button.css +6 -3
  321. package/dist/css/hx-counter.css +1 -1
  322. package/dist/css/hx-data-table.css +22 -15
  323. package/dist/css/hx-date-picker.css +34 -34
  324. package/dist/css/hx-dialog.css +31 -24
  325. package/dist/css/hx-divider.css +2 -2
  326. package/dist/css/hx-drawer.css +18 -15
  327. package/dist/css/hx-dropdown.css +2 -2
  328. package/dist/css/hx-field-label.css +3 -3
  329. package/dist/css/hx-field.css +6 -6
  330. package/dist/css/hx-file-upload.css +18 -18
  331. package/dist/css/hx-help-text.css +5 -5
  332. package/dist/css/hx-icon-button.css +49 -38
  333. package/dist/css/hx-image.css +3 -3
  334. package/dist/css/hx-link.css +9 -9
  335. package/dist/css/hx-list.css +1 -1
  336. package/dist/css/hx-menu.css +2 -2
  337. package/dist/css/hx-meter.css +11 -10
  338. package/dist/css/hx-nav.css +17 -11
  339. package/dist/css/hx-number-input.css +18 -18
  340. package/dist/css/hx-overflow-menu.css +18 -9
  341. package/dist/css/hx-pagination.css +21 -15
  342. package/dist/css/hx-patient-banner.css +17 -9
  343. package/dist/css/hx-phi-field.css +4 -4
  344. package/dist/css/hx-popover.css +10 -6
  345. package/dist/css/hx-progress-bar.css +7 -7
  346. package/dist/css/hx-progress-ring.css +6 -6
  347. package/dist/css/hx-radio-group.css +5 -5
  348. package/dist/css/hx-rating.css +5 -5
  349. package/dist/css/hx-select.css +17 -14
  350. package/dist/css/hx-side-nav.css +13 -10
  351. package/dist/css/hx-skeleton.css +1 -1
  352. package/dist/css/hx-slider.css +15 -12
  353. package/dist/css/hx-spinner.css +4 -4
  354. package/dist/css/hx-split-button.css +45 -31
  355. package/dist/css/hx-split-panel.css +9 -6
  356. package/dist/css/hx-stat.css +8 -8
  357. package/dist/css/hx-status-indicator.css +7 -7
  358. package/dist/css/hx-structured-list.css +5 -5
  359. package/dist/css/hx-switch.css +16 -8
  360. package/dist/css/hx-table.css +6 -6
  361. package/dist/css/hx-tabs.css +3 -3
  362. package/dist/css/hx-tag.css +18 -18
  363. package/dist/css/hx-text-input.css +139 -61
  364. package/dist/css/hx-text.css +9 -7
  365. package/dist/css/hx-textarea.css +66 -27
  366. package/dist/css/hx-time-picker.css +27 -21
  367. package/dist/css/hx-toast.css +22 -7
  368. package/dist/css/hx-toggle-button.css +46 -30
  369. package/dist/css/hx-tooltip.css +4 -3
  370. package/dist/css/hx-top-nav.css +11 -8
  371. package/dist/css/hx-tree-view.css +1 -1
  372. package/dist/css/index.css +1 -1
  373. package/dist/css/manifest.json +280 -194
  374. package/dist/index.js +75 -75
  375. package/dist/shared/forced-colors-CTEDFRGa.js +117 -0
  376. package/dist/shared/forced-colors-CTEDFRGa.js.map +1 -0
  377. package/dist/shared/{hx-accordion-Wt52OOZD.js → hx-accordion-cnKg4_la.js} +31 -30
  378. package/dist/shared/hx-accordion-cnKg4_la.js.map +1 -0
  379. package/dist/shared/{hx-action-bar-BKMADbHj.js → hx-action-bar-CitgcpGv.js} +38 -37
  380. package/dist/shared/hx-action-bar-CitgcpGv.js.map +1 -0
  381. package/dist/shared/{hx-alert-D7n94HwI.js → hx-alert-BZH8iHQf.js} +36 -31
  382. package/dist/shared/hx-alert-BZH8iHQf.js.map +1 -0
  383. package/dist/shared/{hx-avatar-iLYzu8MJ.js → hx-avatar-C9hOmlAb.js} +19 -18
  384. package/dist/shared/hx-avatar-C9hOmlAb.js.map +1 -0
  385. package/dist/shared/{hx-badge-CVCmMPyW.js → hx-badge-CQXgOXJM.js} +65 -64
  386. package/dist/shared/hx-badge-CQXgOXJM.js.map +1 -0
  387. package/dist/shared/{hx-banner-C_He7Tr4.js → hx-banner-DT7Zn9Bo.js} +43 -35
  388. package/dist/shared/hx-banner-DT7Zn9Bo.js.map +1 -0
  389. package/dist/shared/{hx-breadcrumb-item-CldCwD1d.js → hx-breadcrumb-item-COeYcB2x.js} +24 -23
  390. package/dist/shared/hx-breadcrumb-item-COeYcB2x.js.map +1 -0
  391. package/dist/shared/{hx-button-group-BJOGWoMa.js → hx-button-group-BI-QBqmO.js} +45 -27
  392. package/dist/shared/hx-button-group-BI-QBqmO.js.map +1 -0
  393. package/dist/shared/{hx-button-Ddl-T6T-.js → hx-button-modUSOpY.js} +50 -32
  394. package/dist/shared/hx-button-modUSOpY.js.map +1 -0
  395. package/dist/shared/{hx-card-ycveujjL.js → hx-card-CU1QnjNb.js} +54 -39
  396. package/dist/shared/hx-card-CU1QnjNb.js.map +1 -0
  397. package/dist/shared/{hx-carousel-item-D_dCv61-.js → hx-carousel-item-BaE4hpLl.js} +38 -33
  398. package/dist/shared/hx-carousel-item-BaE4hpLl.js.map +1 -0
  399. package/dist/shared/{hx-checkbox-DkkoWoye.js → hx-checkbox-C46TyXhM.js} +42 -41
  400. package/dist/shared/hx-checkbox-C46TyXhM.js.map +1 -0
  401. package/dist/shared/{hx-checkbox-group-C3poJ-Zw.js → hx-checkbox-group-C9n315Ju.js} +20 -19
  402. package/dist/shared/hx-checkbox-group-C9n315Ju.js.map +1 -0
  403. package/dist/shared/{hx-clinical-status-BS5lcddT.js → hx-clinical-status-BmSjfSEN.js} +55 -54
  404. package/dist/shared/hx-clinical-status-BmSjfSEN.js.map +1 -0
  405. package/dist/shared/{hx-code-snippet-B7wUKzyb.js → hx-code-snippet-CJ0FbQYG.js} +39 -32
  406. package/dist/shared/hx-code-snippet-CJ0FbQYG.js.map +1 -0
  407. package/dist/shared/{hx-color-picker-DBaKTVLr.js → hx-color-picker-DiDLZyvK.js} +74 -56
  408. package/dist/shared/hx-color-picker-DiDLZyvK.js.map +1 -0
  409. package/dist/shared/{hx-combobox-BmgYT7Ar.js → hx-combobox-DaA5dBC4.js} +43 -42
  410. package/dist/shared/hx-combobox-DaA5dBC4.js.map +1 -0
  411. package/dist/shared/hx-container-DVI7sxfX.js.map +1 -1
  412. package/dist/shared/{hx-copy-button-8deNUdwP.js → hx-copy-button-sUVuikyH.js} +23 -19
  413. package/dist/shared/hx-copy-button-sUVuikyH.js.map +1 -0
  414. package/dist/shared/{hx-counter-CKfl_g8K.js → hx-counter-0zYapFhf.js} +10 -9
  415. package/dist/shared/hx-counter-0zYapFhf.js.map +1 -0
  416. package/dist/shared/{hx-data-table-B6h0RPn0.js → hx-data-table-Cq3t86Ic.js} +55 -47
  417. package/dist/shared/hx-data-table-Cq3t86Ic.js.map +1 -0
  418. package/dist/shared/{hx-date-picker-Dq2Nb68_.js → hx-date-picker-DMqRQNSB.js} +45 -44
  419. package/dist/shared/hx-date-picker-DMqRQNSB.js.map +1 -0
  420. package/dist/shared/{hx-dialog-CvIlY0Tc.js → hx-dialog-eIS8tcDm.js} +68 -60
  421. package/dist/shared/hx-dialog-eIS8tcDm.js.map +1 -0
  422. package/dist/shared/{hx-divider-DwpOrzMW.js → hx-divider-CYfcUjcr.js} +18 -17
  423. package/dist/shared/hx-divider-CYfcUjcr.js.map +1 -0
  424. package/dist/shared/{hx-drawer-Cx2ZJhBe.js → hx-drawer-DDhDz7RI.js} +31 -27
  425. package/dist/shared/hx-drawer-DDhDz7RI.js.map +1 -0
  426. package/dist/shared/{hx-dropdown-BjDrPUq5.js → hx-dropdown-LyaRc8Rf.js} +16 -15
  427. package/dist/shared/hx-dropdown-LyaRc8Rf.js.map +1 -0
  428. package/dist/shared/{hx-field-Dp3qQMut.js → hx-field-B3Qo8OLS.js} +15 -15
  429. package/dist/shared/hx-field-B3Qo8OLS.js.map +1 -0
  430. package/dist/shared/{hx-field-label-BC8QViXv.js → hx-field-label-BVRyyKeh.js} +8 -7
  431. package/dist/shared/hx-field-label-BVRyyKeh.js.map +1 -0
  432. package/dist/shared/{hx-file-upload-B6Yl1u0i.js → hx-file-upload-zTDbjsRw.js} +42 -41
  433. package/dist/shared/hx-file-upload-zTDbjsRw.js.map +1 -0
  434. package/dist/shared/hx-form-CkChEATa.js +257 -0
  435. package/dist/shared/hx-form-CkChEATa.js.map +1 -0
  436. package/dist/shared/hx-grid-CXZf3jeK.js.map +1 -1
  437. package/dist/shared/{hx-help-text-D7eytSim.js → hx-help-text-Xb2Yr8x2.js} +30 -29
  438. package/dist/shared/hx-help-text-Xb2Yr8x2.js.map +1 -0
  439. package/dist/shared/{hx-icon-button-BHneqPCU.js → hx-icon-button-BmV97nqz.js} +81 -69
  440. package/dist/shared/hx-icon-button-BmV97nqz.js.map +1 -0
  441. package/dist/shared/{hx-icon-CcyDPDYY.js → hx-icon-fuVm4-bk.js} +15 -14
  442. package/dist/shared/hx-icon-fuVm4-bk.js.map +1 -0
  443. package/dist/shared/{hx-image-2gt14zZd.js → hx-image-Ben_4yM5.js} +18 -17
  444. package/dist/shared/hx-image-Ben_4yM5.js.map +1 -0
  445. package/dist/shared/{hx-link-BESrWK8M.js → hx-link-DmiV-mPw.js} +21 -20
  446. package/dist/shared/hx-link-DmiV-mPw.js.map +1 -0
  447. package/dist/shared/{hx-list-_9qVv02L.js → hx-list-CkphGi9T.js} +22 -21
  448. package/dist/shared/hx-list-CkphGi9T.js.map +1 -0
  449. package/dist/shared/{hx-menu-divider-Ck-9Os1t.js → hx-menu-divider-j__TZjH2.js} +53 -49
  450. package/dist/shared/hx-menu-divider-j__TZjH2.js.map +1 -0
  451. package/dist/shared/{hx-meter-TbROk-dw.js → hx-meter-Cm7k_Ro8.js} +42 -40
  452. package/dist/shared/hx-meter-Cm7k_Ro8.js.map +1 -0
  453. package/dist/shared/{hx-nav-BcYDmjf7.js → hx-nav-LoyEKZQC.js} +30 -23
  454. package/dist/shared/hx-nav-LoyEKZQC.js.map +1 -0
  455. package/dist/shared/{hx-nav-item-pqPasRUm.js → hx-nav-item-D8xHLVOs.js} +89 -77
  456. package/dist/shared/hx-nav-item-D8xHLVOs.js.map +1 -0
  457. package/dist/shared/{hx-number-input-mOIZ3-46.js → hx-number-input-yUzFOSC1.js} +68 -67
  458. package/dist/shared/hx-number-input-yUzFOSC1.js.map +1 -0
  459. package/dist/shared/{hx-overflow-menu-Dprb9lnT.js → hx-overflow-menu-BmKyAp5D.js} +33 -23
  460. package/dist/shared/hx-overflow-menu-BmKyAp5D.js.map +1 -0
  461. package/dist/shared/{hx-pagination-AguTQjYC.js → hx-pagination-Dqw5dorC.js} +72 -65
  462. package/dist/shared/hx-pagination-Dqw5dorC.js.map +1 -0
  463. package/dist/shared/{hx-patient-banner-uE6gqLpT.js → hx-patient-banner-CkS-Lmj4.js} +29 -20
  464. package/dist/shared/hx-patient-banner-CkS-Lmj4.js.map +1 -0
  465. package/dist/shared/{hx-phi-field-BC_XowhC.js → hx-phi-field-Bf9TdtC1.js} +13 -12
  466. package/dist/shared/hx-phi-field-Bf9TdtC1.js.map +1 -0
  467. package/dist/shared/{hx-popover-B2_203ct.js → hx-popover-B93rTAfr.js} +29 -24
  468. package/dist/shared/hx-popover-B93rTAfr.js.map +1 -0
  469. package/dist/shared/{hx-popup-DZXpsJ1R.js → hx-popup-COUXXZ9X.js} +8 -7
  470. package/dist/shared/hx-popup-COUXXZ9X.js.map +1 -0
  471. package/dist/shared/{hx-progress-bar-KjEkEJLy.js → hx-progress-bar-Bn3JEPUf.js} +28 -27
  472. package/dist/shared/hx-progress-bar-Bn3JEPUf.js.map +1 -0
  473. package/dist/shared/{hx-progress-ring-3zMwvrwD.js → hx-progress-ring-TwHyXeEp.js} +15 -14
  474. package/dist/shared/hx-progress-ring-TwHyXeEp.js.map +1 -0
  475. package/dist/shared/{hx-prose-BCtK7YL6.js → hx-prose-BThYcASV.js} +12 -12
  476. package/dist/shared/{hx-prose-BCtK7YL6.js.map → hx-prose-BThYcASV.js.map} +1 -1
  477. package/dist/shared/{hx-radio-BBC5qZgE.js → hx-radio-N8xgDd_5.js} +38 -37
  478. package/dist/shared/hx-radio-N8xgDd_5.js.map +1 -0
  479. package/dist/shared/{hx-rating-C3E3ENJb.js → hx-rating-i2FL1WUN.js} +38 -37
  480. package/dist/shared/hx-rating-i2FL1WUN.js.map +1 -0
  481. package/dist/shared/{hx-select-CixTo7jp.js → hx-select-vgaBo1Ai.js} +63 -59
  482. package/dist/shared/hx-select-vgaBo1Ai.js.map +1 -0
  483. package/dist/shared/{hx-skeleton-LxkI0pxr.js → hx-skeleton-Cnieh5Uc.js} +14 -13
  484. package/dist/shared/hx-skeleton-Cnieh5Uc.js.map +1 -0
  485. package/dist/shared/{hx-slider-DFHuzF3N.js → hx-slider-ydBamYhd.js} +83 -79
  486. package/dist/shared/hx-slider-ydBamYhd.js.map +1 -0
  487. package/dist/shared/{hx-spinner-BKjuCdZB.js → hx-spinner-DL5AYr16.js} +18 -17
  488. package/dist/shared/hx-spinner-DL5AYr16.js.map +1 -0
  489. package/dist/shared/{hx-split-button-CGcJMmCG.js → hx-split-button-BeMsmS6N.js} +74 -59
  490. package/dist/shared/hx-split-button-BeMsmS6N.js.map +1 -0
  491. package/dist/shared/{hx-split-panel-C-1R10Mc.js → hx-split-panel-BVG1VWNT.js} +16 -12
  492. package/dist/shared/hx-split-panel-BVG1VWNT.js.map +1 -0
  493. package/dist/shared/hx-stack-DGfcOfWJ.js.map +1 -1
  494. package/dist/shared/{hx-stat-BTpykQAt.js → hx-stat-WOcNV1Ry.js} +16 -15
  495. package/dist/shared/hx-stat-WOcNV1Ry.js.map +1 -0
  496. package/dist/shared/{hx-status-indicator-X2QEWNFt.js → hx-status-indicator-BlQyen43.js} +17 -16
  497. package/dist/shared/hx-status-indicator-BlQyen43.js.map +1 -0
  498. package/dist/shared/{hx-step-CRNQlmSo.js → hx-step-DL3PbOzm.js} +63 -50
  499. package/dist/shared/hx-step-DL3PbOzm.js.map +1 -0
  500. package/dist/shared/{hx-structured-list-CqNbaEXg.js → hx-structured-list-m_-dMJbC.js} +18 -17
  501. package/dist/shared/hx-structured-list-m_-dMJbC.js.map +1 -0
  502. package/dist/shared/{hx-switch-DqOD9JR7.js → hx-switch-Dougzsgp.js} +29 -20
  503. package/dist/shared/hx-switch-Dougzsgp.js.map +1 -0
  504. package/dist/shared/{hx-tab-panel-BIzKfW5i.js → hx-tab-panel-CbkO9VKu.js} +45 -44
  505. package/dist/shared/hx-tab-panel-CbkO9VKu.js.map +1 -0
  506. package/dist/shared/{hx-tag-CgnrNnte.js → hx-tag-CNSmdyaK.js} +63 -62
  507. package/dist/shared/hx-tag-CNSmdyaK.js.map +1 -0
  508. package/dist/shared/{hx-td-Bra35cH4.js → hx-td-1zwTFLRw.js} +62 -61
  509. package/dist/shared/hx-td-1zwTFLRw.js.map +1 -0
  510. package/dist/shared/{hx-text-DMC2CPlL.js → hx-text-Bz_9fJ3J.js} +28 -25
  511. package/dist/shared/hx-text-Bz_9fJ3J.js.map +1 -0
  512. package/dist/shared/{hx-text-input--q0GH78x.js → hx-text-input-B-caO5fI.js} +159 -80
  513. package/dist/shared/hx-text-input-B-caO5fI.js.map +1 -0
  514. package/dist/shared/{hx-textarea-CK621vSL.js → hx-textarea-D9O4U8cb.js} +110 -70
  515. package/dist/shared/hx-textarea-D9O4U8cb.js.map +1 -0
  516. package/dist/shared/{hx-theme-DfEy-SJA.js → hx-theme-BiyQ7UUK.js} +46 -35
  517. package/dist/shared/hx-theme-BiyQ7UUK.js.map +1 -0
  518. package/dist/shared/{hx-time-picker-tPUfgElQ.js → hx-time-picker-m0z4nFB-.js} +59 -52
  519. package/dist/shared/hx-time-picker-m0z4nFB-.js.map +1 -0
  520. package/dist/shared/{hx-toggle-button-L-uBJr-a.js → hx-toggle-button-Dd8clXB4.js} +75 -58
  521. package/dist/shared/hx-toggle-button-Dd8clXB4.js.map +1 -0
  522. package/dist/shared/{hx-tooltip-B_zfKvwc.js → hx-tooltip-nYOv9OLu.js} +18 -16
  523. package/dist/shared/hx-tooltip-nYOv9OLu.js.map +1 -0
  524. package/dist/shared/{hx-top-nav-CATbRvIv.js → hx-top-nav-CchPYaiV.js} +36 -32
  525. package/dist/shared/hx-top-nav-CchPYaiV.js.map +1 -0
  526. package/dist/shared/{hx-tree-item-A45WCiBu.js → hx-tree-item-DtMC3DTa.js} +35 -28
  527. package/dist/shared/hx-tree-item-DtMC3DTa.js.map +1 -0
  528. package/dist/shared/{toast-factory-BPPnG3mM.js → toast-factory-DvDRAh0l.js} +77 -61
  529. package/dist/shared/toast-factory-DvDRAh0l.js.map +1 -0
  530. package/dist/styles/forced-colors.d.ts +60 -0
  531. package/dist/styles/forced-colors.d.ts.map +1 -0
  532. package/figma-inventory.json +8606 -591
  533. package/package.json +2 -2
  534. package/dist/shared/hx-accordion-Wt52OOZD.js.map +0 -1
  535. package/dist/shared/hx-action-bar-BKMADbHj.js.map +0 -1
  536. package/dist/shared/hx-alert-D7n94HwI.js.map +0 -1
  537. package/dist/shared/hx-avatar-iLYzu8MJ.js.map +0 -1
  538. package/dist/shared/hx-badge-CVCmMPyW.js.map +0 -1
  539. package/dist/shared/hx-banner-C_He7Tr4.js.map +0 -1
  540. package/dist/shared/hx-breadcrumb-item-CldCwD1d.js.map +0 -1
  541. package/dist/shared/hx-button-Ddl-T6T-.js.map +0 -1
  542. package/dist/shared/hx-button-group-BJOGWoMa.js.map +0 -1
  543. package/dist/shared/hx-card-ycveujjL.js.map +0 -1
  544. package/dist/shared/hx-carousel-item-D_dCv61-.js.map +0 -1
  545. package/dist/shared/hx-checkbox-DkkoWoye.js.map +0 -1
  546. package/dist/shared/hx-checkbox-group-C3poJ-Zw.js.map +0 -1
  547. package/dist/shared/hx-clinical-status-BS5lcddT.js.map +0 -1
  548. package/dist/shared/hx-code-snippet-B7wUKzyb.js.map +0 -1
  549. package/dist/shared/hx-color-picker-DBaKTVLr.js.map +0 -1
  550. package/dist/shared/hx-combobox-BmgYT7Ar.js.map +0 -1
  551. package/dist/shared/hx-copy-button-8deNUdwP.js.map +0 -1
  552. package/dist/shared/hx-counter-CKfl_g8K.js.map +0 -1
  553. package/dist/shared/hx-data-table-B6h0RPn0.js.map +0 -1
  554. package/dist/shared/hx-date-picker-Dq2Nb68_.js.map +0 -1
  555. package/dist/shared/hx-dialog-CvIlY0Tc.js.map +0 -1
  556. package/dist/shared/hx-divider-DwpOrzMW.js.map +0 -1
  557. package/dist/shared/hx-drawer-Cx2ZJhBe.js.map +0 -1
  558. package/dist/shared/hx-dropdown-BjDrPUq5.js.map +0 -1
  559. package/dist/shared/hx-field-Dp3qQMut.js.map +0 -1
  560. package/dist/shared/hx-field-label-BC8QViXv.js.map +0 -1
  561. package/dist/shared/hx-file-upload-B6Yl1u0i.js.map +0 -1
  562. package/dist/shared/hx-form-ButQFt9A.js +0 -257
  563. package/dist/shared/hx-form-ButQFt9A.js.map +0 -1
  564. package/dist/shared/hx-help-text-D7eytSim.js.map +0 -1
  565. package/dist/shared/hx-icon-CcyDPDYY.js.map +0 -1
  566. package/dist/shared/hx-icon-button-BHneqPCU.js.map +0 -1
  567. package/dist/shared/hx-image-2gt14zZd.js.map +0 -1
  568. package/dist/shared/hx-link-BESrWK8M.js.map +0 -1
  569. package/dist/shared/hx-list-_9qVv02L.js.map +0 -1
  570. package/dist/shared/hx-menu-divider-Ck-9Os1t.js.map +0 -1
  571. package/dist/shared/hx-meter-TbROk-dw.js.map +0 -1
  572. package/dist/shared/hx-nav-BcYDmjf7.js.map +0 -1
  573. package/dist/shared/hx-nav-item-pqPasRUm.js.map +0 -1
  574. package/dist/shared/hx-number-input-mOIZ3-46.js.map +0 -1
  575. package/dist/shared/hx-overflow-menu-Dprb9lnT.js.map +0 -1
  576. package/dist/shared/hx-pagination-AguTQjYC.js.map +0 -1
  577. package/dist/shared/hx-patient-banner-uE6gqLpT.js.map +0 -1
  578. package/dist/shared/hx-phi-field-BC_XowhC.js.map +0 -1
  579. package/dist/shared/hx-popover-B2_203ct.js.map +0 -1
  580. package/dist/shared/hx-popup-DZXpsJ1R.js.map +0 -1
  581. package/dist/shared/hx-progress-bar-KjEkEJLy.js.map +0 -1
  582. package/dist/shared/hx-progress-ring-3zMwvrwD.js.map +0 -1
  583. package/dist/shared/hx-radio-BBC5qZgE.js.map +0 -1
  584. package/dist/shared/hx-rating-C3E3ENJb.js.map +0 -1
  585. package/dist/shared/hx-select-CixTo7jp.js.map +0 -1
  586. package/dist/shared/hx-skeleton-LxkI0pxr.js.map +0 -1
  587. package/dist/shared/hx-slider-DFHuzF3N.js.map +0 -1
  588. package/dist/shared/hx-spinner-BKjuCdZB.js.map +0 -1
  589. package/dist/shared/hx-split-button-CGcJMmCG.js.map +0 -1
  590. package/dist/shared/hx-split-panel-C-1R10Mc.js.map +0 -1
  591. package/dist/shared/hx-stat-BTpykQAt.js.map +0 -1
  592. package/dist/shared/hx-status-indicator-X2QEWNFt.js.map +0 -1
  593. package/dist/shared/hx-step-CRNQlmSo.js.map +0 -1
  594. package/dist/shared/hx-structured-list-CqNbaEXg.js.map +0 -1
  595. package/dist/shared/hx-switch-DqOD9JR7.js.map +0 -1
  596. package/dist/shared/hx-tab-panel-BIzKfW5i.js.map +0 -1
  597. package/dist/shared/hx-tag-CgnrNnte.js.map +0 -1
  598. package/dist/shared/hx-td-Bra35cH4.js.map +0 -1
  599. package/dist/shared/hx-text-DMC2CPlL.js.map +0 -1
  600. package/dist/shared/hx-text-input--q0GH78x.js.map +0 -1
  601. package/dist/shared/hx-textarea-CK621vSL.js.map +0 -1
  602. package/dist/shared/hx-theme-DfEy-SJA.js.map +0 -1
  603. package/dist/shared/hx-time-picker-tPUfgElQ.js.map +0 -1
  604. package/dist/shared/hx-toggle-button-L-uBJr-a.js.map +0 -1
  605. package/dist/shared/hx-tooltip-B_zfKvwc.js.map +0 -1
  606. package/dist/shared/hx-top-nav-CATbRvIv.js.map +0 -1
  607. package/dist/shared/hx-tree-item-A45WCiBu.js.map +0 -1
  608. package/dist/shared/toast-factory-BPPnG3mM.js.map +0 -1
@@ -1,13 +1,14 @@
1
- import { css as g, nothing as p, html as f } from "lit";
2
- import { property as n, state as b, query as x, customElement as _ } from "lit/decorators.js";
1
+ import { css as x, nothing as p, html as f } from "lit";
2
+ import { property as n, state as b, query as g, customElement as _ } from "lit/decorators.js";
3
3
  import { classMap as y } from "lit/directives/class-map.js";
4
4
  import { ifDefined as v } from "lit/directives/if-defined.js";
5
5
  import { repeat as w } from "lit/directives/repeat.js";
6
6
  import { F as z } from "./FormMixin-B8PXk5RQ.js";
7
+ import { b as F } from "./forced-colors-CTEDFRGa.js";
7
8
  import { m as $ } from "./aria-delegation-Doq6RRUy.js";
8
- import { c as F } from "./id-counter-DuX8vsui.js";
9
- import { H as D } from "./helix-element-BNEYeiys.js";
10
- const S = g`
9
+ import { c as D } from "./id-counter-DuX8vsui.js";
10
+ import { H as S } from "./helix-element-BNEYeiys.js";
11
+ const k = x`
11
12
  :host {
12
13
  display: block;
13
14
  }
@@ -36,7 +37,7 @@ const S = g`
36
37
  gap: var(--hx-space-1, 0.25rem);
37
38
  font-size: var(--hx-font-size-sm, 0.875rem);
38
39
  font-weight: var(--hx-font-weight-medium, 500);
39
- color: var(--hx-color-neutral-700, #334155);
40
+ color: var(--hx-color-text-strong, #202b39);
40
41
  line-height: var(--hx-line-height-normal, 1.5);
41
42
  }
42
43
 
@@ -51,9 +52,9 @@ const S = g`
51
52
  min-height: var(--hx-space-32, 8rem);
52
53
  padding: var(--hx-space-6, 1.5rem) var(--hx-space-4, 1rem);
53
54
  border: var(--hx-border-width-thin, 1px) dashed
54
- var(--hx-file-upload-dropzone-border-color, var(--hx-color-neutral-300, #cbd5e1));
55
+ var(--hx-file-upload-dropzone-border-color, var(--hx-color-border-strong, #8e9c98));
55
56
  border-radius: var(--hx-file-upload-dropzone-border-radius, var(--hx-border-radius-lg, 0.5rem));
56
- background-color: var(--hx-file-upload-dropzone-bg, var(--hx-color-neutral-50, #f8fafc));
57
+ background-color: var(--hx-file-upload-dropzone-bg, var(--hx-color-surface-raised, #f5f8f3));
57
58
  cursor: pointer;
58
59
  text-align: center;
59
60
  transition:
@@ -61,7 +62,7 @@ const S = g`
61
62
  background-color var(--hx-transition-fast, 150ms ease),
62
63
  box-shadow var(--hx-transition-fast, 150ms ease);
63
64
  user-select: none;
64
- color: var(--hx-color-neutral-600, #475569);
65
+ color: var(--hx-color-text-secondary, #313e4b);
65
66
  font-size: var(--hx-font-size-sm, 0.875rem);
66
67
  }
67
68
 
@@ -79,20 +80,20 @@ const S = g`
79
80
  }
80
81
 
81
82
  .dropzone--drag-over {
82
- border-color: var(--hx-color-primary-500, #2563eb);
83
+ border-color: var(--hx-color-primary-500, #429797);
83
84
  background-color: var(
84
85
  --hx-file-upload-dropzone-active-bg,
85
86
  color-mix(
86
87
  in srgb,
87
- var(--hx-color-primary-500, #2563eb) 8%,
88
- var(--hx-color-neutral-0, #ffffff)
88
+ var(--hx-color-primary-500, #429797) 8%,
89
+ var(--hx-color-surface-default, #ffffff)
89
90
  )
90
91
  );
91
92
  border-style: solid;
92
93
  }
93
94
 
94
95
  .dropzone--error {
95
- border-color: var(--hx-file-upload-error-color, var(--hx-color-error-500, #dc2626));
96
+ border-color: var(--hx-file-upload-error-color, var(--hx-color-error-500, #e5493e));
96
97
  }
97
98
 
98
99
  @media (prefers-reduced-motion: reduce) {
@@ -137,9 +138,9 @@ const S = g`
137
138
  flex-direction: column;
138
139
  gap: var(--hx-space-1, 0.25rem);
139
140
  padding: var(--hx-space-2, 0.5rem) var(--hx-space-3, 0.75rem);
140
- border: var(--hx-border-width-thin, 1px) solid var(--hx-color-neutral-200, #e2e8f0);
141
+ border: var(--hx-border-width-thin, 1px) solid var(--hx-color-border-default, #d6dbd5);
141
142
  border-radius: var(--hx-border-radius-md, 0.375rem);
142
- background-color: var(--hx-color-neutral-0, #ffffff);
143
+ background-color: var(--hx-color-surface-default, #ffffff);
143
144
  }
144
145
 
145
146
  .file-item__row {
@@ -152,7 +153,7 @@ const S = g`
152
153
  flex: 1;
153
154
  font-size: var(--hx-font-size-sm, 0.875rem);
154
155
  font-weight: var(--hx-font-weight-medium, 500);
155
- color: var(--hx-color-neutral-800, #1e293b);
156
+ color: var(--hx-color-text-strong, #202b39);
156
157
  overflow: hidden;
157
158
  text-overflow: ellipsis;
158
159
  white-space: nowrap;
@@ -161,7 +162,7 @@ const S = g`
161
162
  .file-item__size {
162
163
  flex-shrink: 0;
163
164
  font-size: var(--hx-font-size-xs, 0.75rem);
164
- color: var(--hx-color-neutral-500, #64748b);
165
+ color: var(--hx-color-text-muted, #4a5362);
165
166
  }
166
167
 
167
168
  .file-item__remove {
@@ -175,7 +176,7 @@ const S = g`
175
176
  border: none;
176
177
  border-radius: var(--hx-border-radius-sm, 0.25rem);
177
178
  background: transparent;
178
- color: var(--hx-color-neutral-500, #64748b);
179
+ color: var(--hx-color-text-muted, #4a5362);
179
180
  cursor: pointer;
180
181
  line-height: 1;
181
182
  transition:
@@ -184,8 +185,8 @@ const S = g`
184
185
  }
185
186
 
186
187
  .file-item__remove:hover {
187
- color: var(--hx-file-upload-error-color, var(--hx-color-error-text, #b91c1c));
188
- background-color: color-mix(in srgb, var(--hx-color-error-500, #dc2626) 8%, transparent);
188
+ color: var(--hx-file-upload-error-color, var(--hx-color-error-text, #c92a2a));
189
+ background-color: color-mix(in srgb, var(--hx-color-error-500, #e5493e) 8%, transparent);
189
190
  }
190
191
 
191
192
  .file-item__remove:focus-visible {
@@ -208,7 +209,7 @@ const S = g`
208
209
  .progress-track {
209
210
  width: 100%;
210
211
  height: var(--hx-file-upload-progress-height, var(--hx-space-1, 0.25rem));
211
- background-color: var(--hx-color-neutral-200, #e2e8f0);
212
+ background-color: var(--hx-color-border-default, #d6dbd5);
212
213
  border-radius: var(--hx-border-radius-full, 9999px);
213
214
  overflow: hidden;
214
215
  }
@@ -216,7 +217,7 @@ const S = g`
216
217
  .progress-bar {
217
218
  height: 100%;
218
219
  width: 100%;
219
- background-color: var(--hx-file-upload-progress-color, var(--hx-color-primary-500, #2563eb));
220
+ background-color: var(--hx-file-upload-progress-color, var(--hx-color-primary-500, #429797));
220
221
  border-radius: inherit;
221
222
  transform-origin: left center;
222
223
  transform: scaleX(var(--_progress-ratio, 0));
@@ -247,7 +248,7 @@ const S = g`
247
248
 
248
249
  .field__error {
249
250
  font-size: var(--hx-font-size-xs, 0.75rem);
250
- color: var(--hx-file-upload-error-color, var(--hx-color-error-text, #b91c1c));
251
+ color: var(--hx-file-upload-error-color, var(--hx-color-error-text, #c92a2a));
251
252
  line-height: var(--hx-line-height-normal, 1.5);
252
253
  }
253
254
 
@@ -297,15 +298,15 @@ const S = g`
297
298
  }
298
299
  }
299
300
  `;
300
- var k = Object.defineProperty, L = Object.getOwnPropertyDescriptor, s = (e, r, t, i) => {
301
- for (var l = i > 1 ? void 0 : i ? L(r, t) : r, a = e.length - 1, h; a >= 0; a--)
302
- (h = e[a]) && (l = (i ? h(r, t, l) : h(l)) || l);
303
- return i && l && k(r, t, l), l;
301
+ var L = Object.defineProperty, C = Object.getOwnPropertyDescriptor, s = (e, r, t, i) => {
302
+ for (var l = i > 1 ? void 0 : i ? C(r, t) : r, a = e.length - 1, d; a >= 0; a--)
303
+ (d = e[a]) && (l = (i ? d(r, t, l) : d(l)) || l);
304
+ return i && l && L(r, t, l), l;
304
305
  };
305
- const C = F("hx-file-upload");
306
- let o = class extends z($(D)) {
306
+ const I = D("hx-file-upload");
307
+ let o = class extends z($(S)) {
307
308
  constructor() {
308
- super(...arguments), 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.accessibleLabel = "", 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 = C(), this._labelId = `${this._baseId}-label`, this._errorId = `${this._baseId}-error`, this._dropzoneId = `${this._baseId}-dropzone`, this._liveId = `${this._baseId}-live`;
309
+ super(...arguments), 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.accessibleLabel = "", 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 = I(), this._labelId = `${this._baseId}-label`, this._errorId = `${this._baseId}-error`, this._dropzoneId = `${this._baseId}-dropzone`, this._liveId = `${this._baseId}-live`;
309
310
  }
310
311
  /**
311
312
  * Returns the effective label for the dropzone, checking accessible-label first,
@@ -414,8 +415,8 @@ let o = class extends z($(D)) {
414
415
  detail: { message: l.join(" "), files: i }
415
416
  })
416
417
  ), t.length === 0) return;
417
- const a = this.multiple ? this._files.length : 0, h = this.maxFiles > 0 ? Math.max(0, this.maxFiles - a) : t.length, d = t.slice(0, h);
418
- if (d.length === 0 && this.maxFiles > 0) {
418
+ const a = this.multiple ? this._files.length : 0, d = this.maxFiles > 0 ? Math.max(0, this.maxFiles - a) : t.length, h = t.slice(0, d);
419
+ if (h.length === 0 && this.maxFiles > 0) {
419
420
  this.dispatchEvent(
420
421
  new CustomEvent("hx-error", {
421
422
  bubbles: !0,
@@ -428,17 +429,17 @@ let o = class extends z($(D)) {
428
429
  );
429
430
  return;
430
431
  }
431
- if (d.length > 0) {
432
- const c = d.map((m) => ({ file: m, progress: 0 }));
432
+ if (h.length > 0) {
433
+ const c = h.map((m) => ({ file: m, progress: 0 }));
433
434
  this.multiple ? this._files = [...this._files, ...c] : this._files = c, this._handleInteractionInput(), this.dispatchEvent(
434
435
  new CustomEvent("hx-upload", {
435
436
  bubbles: !0,
436
437
  composed: !0,
437
- detail: { files: d }
438
+ detail: { files: h }
438
439
  })
439
440
  );
440
441
  }
441
- const u = t.slice(h);
442
+ const u = t.slice(d);
442
443
  u.length > 0 && this.maxFiles > 0 && this.dispatchEvent(
443
444
  new CustomEvent("hx-error", {
444
445
  bubbles: !0,
@@ -529,8 +530,8 @@ let o = class extends z($(D)) {
529
530
  } else {
530
531
  const a = (l = this.shadowRoot) == null ? void 0 : l.querySelectorAll(".file-item__remove");
531
532
  if (a && a.length > 0) {
532
- const h = e < this._files.length ? e : this._files.length - 1, d = a[h];
533
- d && d.focus();
533
+ const d = e < this._files.length ? e : this._files.length - 1, h = a[d];
534
+ h && h.focus();
534
535
  }
535
536
  }
536
537
  }).catch(() => {
@@ -662,7 +663,7 @@ let o = class extends z($(D)) {
662
663
  `;
663
664
  }
664
665
  };
665
- o.styles = [S];
666
+ o.styles = [k, F];
666
667
  o.formAssociated = !0;
667
668
  s([
668
669
  n({ type: String, reflect: !0 })
@@ -713,7 +714,7 @@ s([
713
714
  b()
714
715
  ], o.prototype, "_hasFileListSlot", 2);
715
716
  s([
716
- x(".file-input")
717
+ g(".file-input")
717
718
  ], o.prototype, "_fileInput", 2);
718
719
  o = s([
719
720
  _("hx-file-upload")
@@ -721,4 +722,4 @@ o = s([
721
722
  export {
722
723
  o as H
723
724
  };
724
- //# sourceMappingURL=hx-file-upload-B6Yl1u0i.js.map
725
+ //# sourceMappingURL=hx-file-upload-zTDbjsRw.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hx-file-upload-zTDbjsRw.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-file-upload-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-text-strong, #202b39);\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-border-strong, #8e9c98));\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-surface-raised, #f5f8f3));\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-text-secondary, #313e4b);\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, #429797);\n background-color: var(\n --hx-file-upload-dropzone-active-bg,\n color-mix(\n in srgb,\n var(--hx-color-primary-500, #429797) 8%,\n var(--hx-color-surface-default, #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, #e5493e));\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-border-default, #d6dbd5);\n border-radius: var(--hx-border-radius-md, 0.375rem);\n background-color: var(--hx-color-surface-default, #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-text-strong, #202b39);\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-text-muted, #4a5362);\n }\n\n .file-item__remove {\n flex-shrink: 0;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n min-width: 44px;\n min-height: 44px;\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-text-muted, #4a5362);\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, #c92a2a));\n background-color: color-mix(in srgb, var(--hx-color-error-500, #e5493e) 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-border-default, #d6dbd5);\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, #429797));\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, #c92a2a));\n line-height: var(--hx-line-height-normal, 1.5);\n }\n\n /* ─── Forced colors (Windows High Contrast / Forced Colors Mode) ─── */\n\n @media (forced-colors: active) {\n .dropzone {\n border: 2px dashed ButtonText;\n background-color: Canvas;\n color: ButtonText;\n }\n\n .dropzone--drag-over {\n border: 2px solid Highlight;\n outline: none;\n background-color: Canvas;\n }\n\n .dropzone--error {\n border: 2px solid LinkText;\n }\n\n .dropzone:focus-visible {\n outline: 2px solid Highlight;\n outline-offset: 2px;\n }\n\n .progress-bar {\n background: Highlight;\n forced-color-adjust: none;\n }\n\n .file-item__remove:hover {\n outline: 2px solid Highlight;\n background-color: transparent;\n color: ButtonText;\n }\n\n .file-item__remove:focus-visible {\n outline: 2px solid Highlight;\n }\n\n :host([disabled]) .dropzone {\n border-color: GrayText;\n color: GrayText;\n opacity: 1;\n }\n }\n`;\n","import { html, nothing, type PropertyValues } from 'lit';\nimport '../../utilities/document-token-adoption.js';\nimport { customElement, property, query, state } from 'lit/decorators.js';\nimport { HelixElement, createIdCounter } from '../../base/index.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 { mixinDelegatesAria } from '../../mixins/index.js';\nimport { FormMixin } from '../../mixins/FormMixin.js';\nimport { helixFileUploadStyles } from './hx-file-upload.styles.js';\nimport { forcedColorsField } from '../../styles/forced-colors.js';\n\nconst _nextFileUploadId = createIdCounter('hx-file-upload');\n\ninterface FileEntry {\n file: File;\n progress: number;\n}\n\n/** Detail for the hx-upload event dispatched by hx-file-upload. */\nexport interface HxFileUploadDetail {\n files: File[];\n}\n\n/** Detail for the hx-remove event dispatched by hx-file-upload. */\nexport interface HxFileRemoveDetail {\n file: File;\n index: number;\n}\n\n/** Detail for the hx-error event dispatched by hx-file-upload. */\nexport interface HxFileErrorDetail {\n message: string;\n files: File[];\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 * @cssprop [--hx-opacity-disabled] - Opacity.\n * @cssprop [--hx-space-2] - Spacing token.\n * @cssprop [--hx-file-upload-font-family=var(--hx-font-family-sans)] - CSS custom property.\n * @cssprop [--hx-font-family-sans] - Font family.\n * @cssprop [--hx-space-1] - Spacing token.\n * @cssprop [--hx-font-size-sm] - Font size.\n * @cssprop [--hx-font-weight-medium] - Font weight.\n * @cssprop [--hx-color-neutral-700] - Color.\n * @cssprop [--hx-line-height-normal] - Line height.\n * @cssprop [--hx-space-32] - Spacing token.\n * @cssprop [--hx-space-6] - Spacing token.\n * @cssprop [--hx-space-4] - Spacing token.\n * @cssprop [--hx-border-width-thin] - Width.\n * @cssprop [--hx-color-neutral-300] - Color.\n * @cssprop [--hx-border-radius-lg] - CSS custom property.\n * @cssprop [--hx-color-neutral-50] - Color.\n * @cssprop [--hx-transition-fast] - Transition timing.\n * @cssprop [--hx-color-neutral-600] - Color.\n * @cssprop [--hx-focus-ring-width] - Width.\n * @cssprop [--hx-file-upload-focus-ring-color] - Color.\n * @cssprop [--hx-focus-ring-color] - Color.\n * @cssprop [--hx-color-primary-500] - Color.\n * @cssprop [--hx-focus-ring-offset] - CSS custom property.\n * @cssprop [--hx-color-neutral-0] - Color.\n * @cssprop [--hx-color-error-500] - Color.\n * @cssprop [--hx-space-3] - Spacing token.\n * @cssprop [--hx-color-neutral-200] - Color.\n * @cssprop [--hx-border-radius-md] - CSS custom property.\n * @cssprop [--hx-color-neutral-800] - Color.\n * @cssprop [--hx-font-size-xs] - Font size.\n * @cssprop [--hx-color-neutral-500] - Color.\n * @cssprop [--hx-border-radius-sm] - CSS custom property.\n * @cssprop [--hx-color-error-text] - Color.\n * @cssprop [--hx-file-upload-progress-height=var(--hx-space-1)] - Height.\n * @cssprop [--hx-border-radius-full] - CSS custom property.\n */\n@customElement('hx-file-upload')\nexport class HelixFileUpload extends FormMixin(mixinDelegatesAria(HelixElement)) {\n static override styles = [helixFileUploadStyles, forcedColorsField];\n\n // ─── Form Association ───\n\n /** Marks this element as form-associated for ElementInternals support. @internal */\n static override formAssociated = true;\n\n // ─── Properties ───\n\n /**\n * The form field name used during form submission.\n * @attr name\n */\n @property({ type: String, reflect: true })\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 * Accessible label for the dropzone when no visible label text is provided.\n * Falls back to `label-dropzone` prop value, then a default string.\n *\n * Accepts both `accessible-label` and the standard `aria-label` HTML attribute.\n * `accessible-label` takes precedence when both are set.\n *\n * @attr accessible-label\n */\n @property({ type: String, attribute: 'accessible-label' })\n accessibleLabel: string = '';\n\n /**\n * Returns the effective label for the dropzone, checking accessible-label first,\n * then the aria-label attribute, falling back to empty string.\n * @internal\n */\n private get _effectiveLabel(): string {\n return this.accessibleLabel?.trim() || this.ariaLabel?.trim() || '';\n }\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 = _nextFileUploadId();\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 // Force screen reader re-announcement when error text changes (a11y-v3-005)\n if (changedProperties.has('error') && this.error) {\n const errorEl = this.shadowRoot?.querySelector('[role=\"alert\"]');\n if (errorEl) {\n const msg = this.error;\n requestAnimationFrame(() => {\n errorEl.textContent = '';\n requestAnimationFrame(() => {\n errorEl.textContent = msg;\n });\n });\n }\n }\n }\n\n // ─── Form Integration ───\n\n /** @internal */\n protected override _onFormReset(): void {\n this._files = [];\n this._internals.setFormValue(null);\n this._resetInteractionState();\n }\n\n /** @internal */\n protected override _onFormDisabled(disabled: boolean): void {\n this.disabled = disabled;\n }\n\n /** @internal */\n protected override _onFormStateRestore(\n _state: File | string | FormData | null,\n _mode: 'restore' | 'autocomplete',\n ): 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._handleInteractionInput();\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 // Restore focus after removal so keyboard users are not stranded.\n this.updateComplete\n .then(() => {\n if (this._files.length === 0) {\n // List is now empty — return focus to the dropzone.\n const dropzone = this.shadowRoot?.querySelector<HTMLElement>('[part=\"dropzone\"]');\n dropzone?.focus();\n } else {\n // Focus the remove button at the same position, or the previous one if\n // the removed item was the last in the list.\n const removeButtons =\n this.shadowRoot?.querySelectorAll<HTMLButtonElement>('.file-item__remove');\n if (removeButtons && removeButtons.length > 0) {\n const targetIndex = index < this._files.length ? index : this._files.length - 1;\n const targetButton = removeButtons[targetIndex];\n if (targetButton) {\n targetButton.focus();\n }\n }\n }\n })\n .catch(() => {\n // Focus restoration is best-effort; ignore errors.\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._effectiveLabel || (!this.label ? dropzoneLabel : undefined))}\n aria-labelledby=${ifDefined(\n !this._effectiveLabel && this.label ? this._labelId : undefined,\n )}\n aria-disabled=${this.disabled ? 'true' : nothing}\n aria-invalid=${hasError ? '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","_nextFileUploadId","createIdCounter","HelixFileUpload","FormMixin","mixinDelegatesAria","HelixElement","name","progress","_a","_b","slot","changedProperties","errorEl","msg","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","dt","input","removedFile","_","removeButtons","targetIndex","targetButton","bytes","nothing","html","repeat","hasError","dropzoneClasses","dropzoneLabel","classMap","ifDefined","forcedColorsField","__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;AA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"}
@@ -0,0 +1,257 @@
1
+ import { html as c, nothing as m } from "lit";
2
+ import { state as x, property as h, customElement as d } from "lit/decorators.js";
3
+ import { ifDefined as f } from "lit/directives/if-defined.js";
4
+ import { A as p } from "./adopted-stylesheets-BZZnCSAs.js";
5
+ import { H as u } from "./helix-element-BNEYeiys.js";
6
+ 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-text, #c92a2a));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-text, #c92a2a))}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-text, #c92a2a))}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-text, #c92a2a))}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}}
7
+ `, b = v;
8
+ var g = Object.defineProperty, y = Object.getOwnPropertyDescriptor, s = (e, r, a, t) => {
9
+ for (var o = t > 1 ? void 0 : t ? y(r, a) : r, n = e.length - 1, l; n >= 0; n--)
10
+ (l = e[n]) && (o = (t ? l(r, a, o) : l(o)) || o);
11
+ return t && o && g(r, a, o), o;
12
+ };
13
+ let i = class extends u {
14
+ constructor() {
15
+ super(...arguments), this._styles = new p(this, b, document), this._validationErrors = [], this.action = "", this.method = "post", this.novalidate = !1, this.name = "", this.enctype = "application/x-www-form-urlencoded", this._handleSubmit = (e) => {
16
+ if (this.action)
17
+ return;
18
+ if (e.preventDefault(), !this.novalidate && !this.checkValidity()) {
19
+ const t = this._collectValidationErrors();
20
+ this._validationErrors = t, this._applyAriaInvalidFromValidity(), this.updateComplete.then(() => {
21
+ const o = this.querySelector(".hx-form-error-summary");
22
+ o == null || o.focus();
23
+ }), this.dispatchEvent(
24
+ new CustomEvent("hx-invalid", {
25
+ bubbles: !0,
26
+ composed: !0,
27
+ detail: { errors: t }
28
+ })
29
+ );
30
+ return;
31
+ }
32
+ this._validationErrors = [], this._clearAriaInvalid();
33
+ const r = this.getFormData(), a = {};
34
+ for (const t of new Set(r.keys())) {
35
+ const o = r.getAll(t);
36
+ o.length === 1 && o[0] !== void 0 ? a[t] = o[0] : a[t] = o;
37
+ }
38
+ this.dispatchEvent(
39
+ new CustomEvent("hx-submit", {
40
+ bubbles: !0,
41
+ composed: !0,
42
+ detail: { valid: !0, values: a, formData: r }
43
+ })
44
+ );
45
+ }, this._handleReset = () => {
46
+ this._validationErrors = [], this._clearAriaInvalid(), this.dispatchEvent(
47
+ new CustomEvent("hx-reset", {
48
+ bubbles: !0,
49
+ composed: !0
50
+ })
51
+ );
52
+ };
53
+ }
54
+ // ─── Light DOM ───
55
+ createRenderRoot() {
56
+ return this;
57
+ }
58
+ // ─── Lifecycle ───
59
+ connectedCallback() {
60
+ super.connectedCallback(), this.addEventListener("submit", this._handleSubmit), this.addEventListener("reset", this._handleReset);
61
+ }
62
+ disconnectedCallback() {
63
+ super.disconnectedCallback(), this.removeEventListener("submit", this._handleSubmit), this.removeEventListener("reset", this._handleReset);
64
+ }
65
+ // ─── Public Methods ───
66
+ /**
67
+ * Checks the validity of all child form elements without showing
68
+ * validation UI. Returns `true` if all elements are valid.
69
+ */
70
+ checkValidity() {
71
+ return this._getAllValidatableElements().every((r) => "checkValidity" in r && typeof r.checkValidity == "function" ? r.checkValidity() : !0);
72
+ }
73
+ /**
74
+ * Checks validity and triggers the browser's constraint validation UI
75
+ * on each invalid element. Returns `true` if all elements are valid.
76
+ */
77
+ reportValidity() {
78
+ const e = this._getAllValidatableElements();
79
+ let r = !0;
80
+ for (const a of e)
81
+ "reportValidity" in a && typeof a.reportValidity == "function" && (a.reportValidity() || (r = !1));
82
+ return r;
83
+ }
84
+ /**
85
+ * Collects form data from all child form elements (native and hx-*).
86
+ * Returns a `FormData` object.
87
+ */
88
+ getFormData() {
89
+ const e = this.querySelector("form");
90
+ if (e)
91
+ return new FormData(e);
92
+ const r = new FormData(), a = this.getNativeFormElements();
93
+ for (const t of a) {
94
+ const o = t;
95
+ 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));
96
+ }
97
+ return r;
98
+ }
99
+ /**
100
+ * Returns all child hx-* form components that implement the form
101
+ * component contract (hx-text-input, hx-select, hx-checkbox, hx-textarea,
102
+ * hx-radio-group, hx-switch).
103
+ *
104
+ * Note: This uses a hardcoded allowlist. When a new hx-* form component
105
+ * is added, update this selector to include it.
106
+ */
107
+ getFormElements() {
108
+ return Array.from(
109
+ this.querySelectorAll(
110
+ "hx-text-input, hx-select, hx-checkbox, hx-textarea, hx-radio-group, hx-switch"
111
+ )
112
+ );
113
+ }
114
+ /**
115
+ * Returns all native form elements (input, select, textarea, button)
116
+ * found within this component's light DOM.
117
+ */
118
+ getNativeFormElements() {
119
+ return Array.from(
120
+ this.querySelectorAll("input, select, textarea, button")
121
+ );
122
+ }
123
+ /**
124
+ * Programmatically sets server-side validation errors on the form.
125
+ * Renders an error summary and sets `aria-invalid="true"` on named fields.
126
+ *
127
+ * Useful for surfacing Drupal server-side validation responses.
128
+ *
129
+ * @param errors - Array of `{name, message}` pairs matching field `name` attributes.
130
+ */
131
+ setErrors(e) {
132
+ this._validationErrors = e, this._applyAriaInvalidFromErrors(e);
133
+ }
134
+ /**
135
+ * Programmatically sets a single field error. Merges with any existing errors.
136
+ *
137
+ * @param name - The `name` attribute of the field.
138
+ * @param message - The error message to display.
139
+ */
140
+ setFieldError(e, r) {
141
+ const a = this._validationErrors.filter((t) => t.name !== e);
142
+ this.setErrors([...a, { name: e, message: r }]);
143
+ }
144
+ /**
145
+ * Clears all validation errors from the error summary and removes
146
+ * `aria-invalid` from all fields.
147
+ */
148
+ clearErrors() {
149
+ this._clearAriaInvalid(), this._validationErrors = [];
150
+ }
151
+ // ─── Private Helpers ───
152
+ /**
153
+ * Returns all elements that support constraint validation, including
154
+ * both native form elements and hx-* components with `checkValidity`.
155
+ * @internal
156
+ */
157
+ _getAllValidatableElements() {
158
+ const e = Array.from(this.querySelectorAll("input, select, textarea")), r = this.getFormElements().filter(
159
+ (a) => "checkValidity" in a && typeof a.checkValidity == "function"
160
+ );
161
+ return [...e, ...r];
162
+ }
163
+ /**
164
+ * Sets `aria-invalid="true"` on fields with errors, removes it from valid fields.
165
+ * @internal
166
+ */
167
+ _applyAriaInvalidFromErrors(e) {
168
+ const r = new Set(e.map((t) => t.name)), a = this._getAllValidatableElements();
169
+ for (const t of a) {
170
+ const n = t.name ?? t.tagName.toLowerCase();
171
+ r.has(n) ? t.setAttribute("aria-invalid", "true") : t.removeAttribute("aria-invalid");
172
+ }
173
+ }
174
+ /**
175
+ * Sets `aria-invalid` based on native constraint validation state.
176
+ * @internal
177
+ */
178
+ _applyAriaInvalidFromValidity() {
179
+ const e = this._getAllValidatableElements();
180
+ for (const r of e)
181
+ "validity" in r && (r.validity.valid ? r.removeAttribute("aria-invalid") : r.setAttribute("aria-invalid", "true"));
182
+ }
183
+ /**
184
+ * Removes `aria-invalid` from all validatable elements.
185
+ * @internal
186
+ */
187
+ _clearAriaInvalid() {
188
+ const e = this._getAllValidatableElements();
189
+ for (const r of e)
190
+ r.removeAttribute("aria-invalid");
191
+ }
192
+ /**
193
+ * Collects constraint validation errors from all validatable elements after a failed submit attempt.
194
+ * @internal
195
+ */
196
+ _collectValidationErrors() {
197
+ const e = [], r = this._getAllValidatableElements();
198
+ for (const a of r)
199
+ if ("validity" in a && "validationMessage" in a) {
200
+ const t = a;
201
+ t.validity.valid || e.push({
202
+ name: t.name || t.tagName.toLowerCase(),
203
+ message: t.validationMessage
204
+ });
205
+ }
206
+ return e;
207
+ }
208
+ // ─── Render ───
209
+ render() {
210
+ const e = this._validationErrors.length > 0 ? c`
211
+ <div class="hx-form-error-summary" role="alert" aria-atomic="true" tabindex="-1">
212
+ <ul>
213
+ ${this._validationErrors.map(
214
+ (r) => c`<li>${r.message || r.name}</li>`
215
+ )}
216
+ </ul>
217
+ </div>
218
+ ` : m;
219
+ return this.action ? c`
220
+ ${e}
221
+ <form
222
+ action=${this.action}
223
+ method=${this.method}
224
+ enctype=${this.enctype}
225
+ name=${f(this.name || void 0)}
226
+ ?novalidate=${this.novalidate}
227
+ >
228
+ <slot></slot>
229
+ </form>
230
+ ` : c`${e}<slot></slot>`;
231
+ }
232
+ };
233
+ s([
234
+ x()
235
+ ], i.prototype, "_validationErrors", 2);
236
+ s([
237
+ h({ type: String })
238
+ ], i.prototype, "action", 2);
239
+ s([
240
+ h({ type: String })
241
+ ], i.prototype, "method", 2);
242
+ s([
243
+ h({ type: Boolean })
244
+ ], i.prototype, "novalidate", 2);
245
+ s([
246
+ h({ type: String })
247
+ ], i.prototype, "name", 2);
248
+ s([
249
+ h({ type: String })
250
+ ], i.prototype, "enctype", 2);
251
+ i = s([
252
+ d("hx-form")
253
+ ], i);
254
+ export {
255
+ i as H
256
+ };
257
+ //# sourceMappingURL=hx-form-CkChEATa.js.map