@helixui/library 2.1.2-next.52 → 2.1.2-next.54

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 (817) hide show
  1. package/custom-elements.json +1110 -1249
  2. package/dist/base/helix-element.d.ts +20 -8
  3. package/dist/base/helix-element.d.ts.map +1 -1
  4. package/dist/components/hx-accordion/hx-accordion-item.d.ts +7 -4
  5. package/dist/components/hx-accordion/hx-accordion-item.d.ts.map +1 -1
  6. package/dist/components/hx-accordion/hx-accordion-item.styles.d.ts.map +1 -1
  7. package/dist/components/hx-accordion/hx-accordion.d.ts +3 -2
  8. package/dist/components/hx-accordion/hx-accordion.d.ts.map +1 -1
  9. package/dist/components/hx-accordion/hx-accordion.styles.d.ts.map +1 -1
  10. package/dist/components/hx-accordion/index.d.ts +1 -0
  11. package/dist/components/hx-accordion/index.d.ts.map +1 -1
  12. package/dist/components/hx-accordion/index.js +1 -1
  13. package/dist/components/hx-action-bar/hx-action-bar.d.ts +2 -11
  14. package/dist/components/hx-action-bar/hx-action-bar.d.ts.map +1 -1
  15. package/dist/components/hx-action-bar/hx-action-bar.styles.d.ts.map +1 -1
  16. package/dist/components/hx-action-bar/index.js +1 -1
  17. package/dist/components/hx-alert/hx-alert.d.ts +7 -2
  18. package/dist/components/hx-alert/hx-alert.d.ts.map +1 -1
  19. package/dist/components/hx-alert/hx-alert.styles.d.ts.map +1 -1
  20. package/dist/components/hx-alert/index.d.ts +1 -0
  21. package/dist/components/hx-alert/index.d.ts.map +1 -1
  22. package/dist/components/hx-alert/index.js +1 -1
  23. package/dist/components/hx-avatar/hx-avatar.d.ts +3 -2
  24. package/dist/components/hx-avatar/hx-avatar.d.ts.map +1 -1
  25. package/dist/components/hx-avatar/index.js +1 -1
  26. package/dist/components/hx-badge/hx-badge.d.ts +2 -9
  27. package/dist/components/hx-badge/hx-badge.d.ts.map +1 -1
  28. package/dist/components/hx-badge/hx-badge.styles.d.ts.map +1 -1
  29. package/dist/components/hx-badge/index.d.ts +1 -1
  30. package/dist/components/hx-badge/index.d.ts.map +1 -1
  31. package/dist/components/hx-badge/index.js +1 -1
  32. package/dist/components/hx-banner/hx-banner.d.ts +3 -2
  33. package/dist/components/hx-banner/hx-banner.d.ts.map +1 -1
  34. package/dist/components/hx-banner/hx-banner.styles.d.ts.map +1 -1
  35. package/dist/components/hx-banner/index.js +1 -1
  36. package/dist/components/hx-breadcrumb/hx-breadcrumb-item.d.ts +2 -2
  37. package/dist/components/hx-breadcrumb/hx-breadcrumb-item.d.ts.map +1 -1
  38. package/dist/components/hx-breadcrumb/hx-breadcrumb-item.styles.d.ts.map +1 -1
  39. package/dist/components/hx-breadcrumb/hx-breadcrumb.d.ts +9 -19
  40. package/dist/components/hx-breadcrumb/hx-breadcrumb.d.ts.map +1 -1
  41. package/dist/components/hx-breadcrumb/hx-breadcrumb.styles.d.ts.map +1 -1
  42. package/dist/components/hx-breadcrumb/index.js +1 -1
  43. package/dist/components/hx-button/hx-button.d.ts +31 -9
  44. package/dist/components/hx-button/hx-button.d.ts.map +1 -1
  45. package/dist/components/hx-button/hx-button.styles.d.ts.map +1 -1
  46. package/dist/components/hx-button/index.d.ts +1 -0
  47. package/dist/components/hx-button/index.d.ts.map +1 -1
  48. package/dist/components/hx-button/index.js +1 -1
  49. package/dist/components/hx-button-group/hx-button-group.d.ts +4 -6
  50. package/dist/components/hx-button-group/hx-button-group.d.ts.map +1 -1
  51. package/dist/components/hx-button-group/hx-button-group.styles.d.ts.map +1 -1
  52. package/dist/components/hx-button-group/index.js +1 -1
  53. package/dist/components/hx-card/hx-card.d.ts +19 -2
  54. package/dist/components/hx-card/hx-card.d.ts.map +1 -1
  55. package/dist/components/hx-card/hx-card.styles.d.ts.map +1 -1
  56. package/dist/components/hx-card/index.js +1 -1
  57. package/dist/components/hx-carousel/hx-carousel-item.d.ts +2 -2
  58. package/dist/components/hx-carousel/hx-carousel-item.d.ts.map +1 -1
  59. package/dist/components/hx-carousel/hx-carousel-item.styles.d.ts.map +1 -1
  60. package/dist/components/hx-carousel/hx-carousel.d.ts +2 -2
  61. package/dist/components/hx-carousel/hx-carousel.d.ts.map +1 -1
  62. package/dist/components/hx-carousel/hx-carousel.styles.d.ts.map +1 -1
  63. package/dist/components/hx-carousel/index.js +1 -1
  64. package/dist/components/hx-checkbox/hx-checkbox.d.ts +52 -5
  65. package/dist/components/hx-checkbox/hx-checkbox.d.ts.map +1 -1
  66. package/dist/components/hx-checkbox/hx-checkbox.styles.d.ts.map +1 -1
  67. package/dist/components/hx-checkbox/index.d.ts +1 -0
  68. package/dist/components/hx-checkbox/index.d.ts.map +1 -1
  69. package/dist/components/hx-checkbox/index.js +1 -1
  70. package/dist/components/hx-checkbox-group/hx-checkbox-group.d.ts +14 -20
  71. package/dist/components/hx-checkbox-group/hx-checkbox-group.d.ts.map +1 -1
  72. package/dist/components/hx-checkbox-group/hx-checkbox-group.styles.d.ts.map +1 -1
  73. package/dist/components/hx-checkbox-group/index.d.ts +1 -0
  74. package/dist/components/hx-checkbox-group/index.d.ts.map +1 -1
  75. package/dist/components/hx-checkbox-group/index.js +1 -1
  76. package/dist/components/hx-clinical-status/hx-clinical-status.d.ts +0 -7
  77. package/dist/components/hx-clinical-status/hx-clinical-status.d.ts.map +1 -1
  78. package/dist/components/hx-clinical-status/hx-clinical-status.styles.d.ts.map +1 -1
  79. package/dist/components/hx-clinical-status/index.js +1 -1
  80. package/dist/components/hx-code-snippet/hx-code-snippet.styles.d.ts.map +1 -1
  81. package/dist/components/hx-code-snippet/index.js +1 -1
  82. package/dist/components/hx-color-picker/hx-color-picker.d.ts +8 -11
  83. package/dist/components/hx-color-picker/hx-color-picker.d.ts.map +1 -1
  84. package/dist/components/hx-color-picker/hx-color-picker.styles.d.ts.map +1 -1
  85. package/dist/components/hx-color-picker/index.d.ts +1 -0
  86. package/dist/components/hx-color-picker/index.d.ts.map +1 -1
  87. package/dist/components/hx-color-picker/index.js +1 -1
  88. package/dist/components/hx-combobox/hx-combobox.d.ts +45 -22
  89. package/dist/components/hx-combobox/hx-combobox.d.ts.map +1 -1
  90. package/dist/components/hx-combobox/hx-combobox.styles.d.ts.map +1 -1
  91. package/dist/components/hx-combobox/index.d.ts +1 -0
  92. package/dist/components/hx-combobox/index.d.ts.map +1 -1
  93. package/dist/components/hx-combobox/index.js +1 -1
  94. package/dist/components/hx-container/hx-container.d.ts +2 -4
  95. package/dist/components/hx-container/hx-container.d.ts.map +1 -1
  96. package/dist/components/hx-container/hx-container.styles.d.ts.map +1 -1
  97. package/dist/components/hx-container/index.d.ts +0 -1
  98. package/dist/components/hx-container/index.d.ts.map +1 -1
  99. package/dist/components/hx-container/index.js +1 -1
  100. package/dist/components/hx-copy-button/hx-copy-button.d.ts +2 -2
  101. package/dist/components/hx-copy-button/hx-copy-button.d.ts.map +1 -1
  102. package/dist/components/hx-copy-button/hx-copy-button.styles.d.ts.map +1 -1
  103. package/dist/components/hx-copy-button/index.js +1 -1
  104. package/dist/components/hx-counter/hx-counter.d.ts +3 -2
  105. package/dist/components/hx-counter/hx-counter.d.ts.map +1 -1
  106. package/dist/components/hx-counter/hx-counter.styles.d.ts.map +1 -1
  107. package/dist/components/hx-counter/index.js +1 -1
  108. package/dist/components/hx-data-table/hx-data-table.d.ts +46 -2
  109. package/dist/components/hx-data-table/hx-data-table.d.ts.map +1 -1
  110. package/dist/components/hx-data-table/hx-data-table.styles.d.ts.map +1 -1
  111. package/dist/components/hx-data-table/index.d.ts +1 -0
  112. package/dist/components/hx-data-table/index.d.ts.map +1 -1
  113. package/dist/components/hx-data-table/index.js +1 -1
  114. package/dist/components/hx-date-picker/hx-date-picker.d.ts +35 -35
  115. package/dist/components/hx-date-picker/hx-date-picker.d.ts.map +1 -1
  116. package/dist/components/hx-date-picker/hx-date-picker.styles.d.ts.map +1 -1
  117. package/dist/components/hx-date-picker/index.d.ts +1 -0
  118. package/dist/components/hx-date-picker/index.d.ts.map +1 -1
  119. package/dist/components/hx-date-picker/index.js +1 -1
  120. package/dist/components/hx-dialog/hx-dialog.d.ts +44 -5
  121. package/dist/components/hx-dialog/hx-dialog.d.ts.map +1 -1
  122. package/dist/components/hx-dialog/hx-dialog.styles.d.ts.map +1 -1
  123. package/dist/components/hx-dialog/index.js +1 -1
  124. package/dist/components/hx-divider/hx-divider.d.ts +3 -4
  125. package/dist/components/hx-divider/hx-divider.d.ts.map +1 -1
  126. package/dist/components/hx-divider/hx-divider.styles.d.ts.map +1 -1
  127. package/dist/components/hx-divider/index.d.ts +0 -1
  128. package/dist/components/hx-divider/index.d.ts.map +1 -1
  129. package/dist/components/hx-divider/index.js +1 -1
  130. package/dist/components/hx-drawer/hx-drawer.d.ts +39 -2
  131. package/dist/components/hx-drawer/hx-drawer.d.ts.map +1 -1
  132. package/dist/components/hx-drawer/hx-drawer.styles.d.ts.map +1 -1
  133. package/dist/components/hx-drawer/index.js +1 -1
  134. package/dist/components/hx-dropdown/hx-dropdown.d.ts +11 -7
  135. package/dist/components/hx-dropdown/hx-dropdown.d.ts.map +1 -1
  136. package/dist/components/hx-dropdown/hx-dropdown.styles.d.ts.map +1 -1
  137. package/dist/components/hx-dropdown/index.js +1 -1
  138. package/dist/components/hx-field/hx-field.d.ts +4 -3
  139. package/dist/components/hx-field/hx-field.d.ts.map +1 -1
  140. package/dist/components/hx-field/hx-field.styles.d.ts.map +1 -1
  141. package/dist/components/hx-field/index.js +1 -1
  142. package/dist/components/hx-field-label/hx-field-label.d.ts +2 -2
  143. package/dist/components/hx-field-label/hx-field-label.d.ts.map +1 -1
  144. package/dist/components/hx-field-label/hx-field-label.styles.d.ts.map +1 -1
  145. package/dist/components/hx-field-label/index.js +1 -1
  146. package/dist/components/hx-file-upload/hx-file-upload.d.ts +39 -21
  147. package/dist/components/hx-file-upload/hx-file-upload.d.ts.map +1 -1
  148. package/dist/components/hx-file-upload/index.d.ts +1 -0
  149. package/dist/components/hx-file-upload/index.d.ts.map +1 -1
  150. package/dist/components/hx-file-upload/index.js +1 -1
  151. package/dist/components/hx-form/hx-form.d.ts +2 -2
  152. package/dist/components/hx-form/hx-form.d.ts.map +1 -1
  153. package/dist/components/hx-form/hx-form.styles.d.ts +8 -0
  154. package/dist/components/hx-form/hx-form.styles.d.ts.map +1 -1
  155. package/dist/components/hx-form/index.js +1 -1
  156. package/dist/components/hx-format-date/hx-format-date.d.ts +2 -2
  157. package/dist/components/hx-format-date/hx-format-date.d.ts.map +1 -1
  158. package/dist/components/hx-format-date/hx-format-date.styles.d.ts.map +1 -1
  159. package/dist/components/hx-format-date/index.js +1 -1
  160. package/dist/components/hx-grid/hx-grid.d.ts +4 -3
  161. package/dist/components/hx-grid/hx-grid.d.ts.map +1 -1
  162. package/dist/components/hx-grid/hx-grid.styles.d.ts.map +1 -1
  163. package/dist/components/hx-grid/index.js +1 -1
  164. package/dist/components/hx-help-text/hx-help-text.d.ts +2 -4
  165. package/dist/components/hx-help-text/hx-help-text.d.ts.map +1 -1
  166. package/dist/components/hx-help-text/hx-help-text.styles.d.ts.map +1 -1
  167. package/dist/components/hx-help-text/index.js +1 -1
  168. package/dist/components/hx-icon/hx-icon.d.ts +17 -2
  169. package/dist/components/hx-icon/hx-icon.d.ts.map +1 -1
  170. package/dist/components/hx-icon/hx-icon.styles.d.ts.map +1 -1
  171. package/dist/components/hx-icon/index.js +1 -1
  172. package/dist/components/hx-icon-button/hx-icon-button.d.ts +10 -14
  173. package/dist/components/hx-icon-button/hx-icon-button.d.ts.map +1 -1
  174. package/dist/components/hx-icon-button/hx-icon-button.styles.d.ts.map +1 -1
  175. package/dist/components/hx-icon-button/index.js +1 -1
  176. package/dist/components/hx-image/hx-image.d.ts +2 -2
  177. package/dist/components/hx-image/hx-image.d.ts.map +1 -1
  178. package/dist/components/hx-image/hx-image.styles.d.ts.map +1 -1
  179. package/dist/components/hx-image/index.js +1 -1
  180. package/dist/components/hx-link/hx-link.d.ts +2 -2
  181. package/dist/components/hx-link/hx-link.d.ts.map +1 -1
  182. package/dist/components/hx-link/hx-link.styles.d.ts.map +1 -1
  183. package/dist/components/hx-link/index.js +1 -1
  184. package/dist/components/hx-list/hx-list-item.d.ts +3 -2
  185. package/dist/components/hx-list/hx-list-item.d.ts.map +1 -1
  186. package/dist/components/hx-list/hx-list.d.ts +3 -2
  187. package/dist/components/hx-list/hx-list.d.ts.map +1 -1
  188. package/dist/components/hx-list/hx-list.styles.d.ts.map +1 -1
  189. package/dist/components/hx-list/index.js +1 -1
  190. package/dist/components/hx-menu/hx-menu-divider.d.ts +2 -2
  191. package/dist/components/hx-menu/hx-menu-divider.d.ts.map +1 -1
  192. package/dist/components/hx-menu/hx-menu-divider.styles.d.ts.map +1 -1
  193. package/dist/components/hx-menu/hx-menu-item.d.ts +2 -2
  194. package/dist/components/hx-menu/hx-menu-item.d.ts.map +1 -1
  195. package/dist/components/hx-menu/hx-menu-item.styles.d.ts.map +1 -1
  196. package/dist/components/hx-menu/hx-menu.d.ts +2 -2
  197. package/dist/components/hx-menu/hx-menu.d.ts.map +1 -1
  198. package/dist/components/hx-menu/hx-menu.styles.d.ts.map +1 -1
  199. package/dist/components/hx-menu/index.js +1 -1
  200. package/dist/components/hx-meter/hx-meter.d.ts +3 -4
  201. package/dist/components/hx-meter/hx-meter.d.ts.map +1 -1
  202. package/dist/components/hx-meter/hx-meter.styles.d.ts.map +1 -1
  203. package/dist/components/hx-meter/index.js +1 -1
  204. package/dist/components/hx-nav/hx-nav.d.ts +2 -4
  205. package/dist/components/hx-nav/hx-nav.d.ts.map +1 -1
  206. package/dist/components/hx-nav/hx-nav.styles.d.ts.map +1 -1
  207. package/dist/components/hx-nav/index.d.ts +1 -1
  208. package/dist/components/hx-nav/index.d.ts.map +1 -1
  209. package/dist/components/hx-nav/index.js +1 -1
  210. package/dist/components/hx-number-input/hx-number-input.d.ts +14 -20
  211. package/dist/components/hx-number-input/hx-number-input.d.ts.map +1 -1
  212. package/dist/components/hx-number-input/hx-number-input.styles.d.ts.map +1 -1
  213. package/dist/components/hx-number-input/index.d.ts +1 -0
  214. package/dist/components/hx-number-input/index.d.ts.map +1 -1
  215. package/dist/components/hx-number-input/index.js +1 -1
  216. package/dist/components/hx-overflow-menu/hx-overflow-menu.d.ts +2 -2
  217. package/dist/components/hx-overflow-menu/hx-overflow-menu.d.ts.map +1 -1
  218. package/dist/components/hx-overflow-menu/hx-overflow-menu.styles.d.ts.map +1 -1
  219. package/dist/components/hx-overflow-menu/index.js +1 -1
  220. package/dist/components/hx-pagination/hx-pagination.d.ts +10 -2
  221. package/dist/components/hx-pagination/hx-pagination.d.ts.map +1 -1
  222. package/dist/components/hx-pagination/index.d.ts +1 -0
  223. package/dist/components/hx-pagination/index.d.ts.map +1 -1
  224. package/dist/components/hx-pagination/index.js +1 -1
  225. package/dist/components/hx-patient-banner/hx-patient-banner.d.ts +47 -5
  226. package/dist/components/hx-patient-banner/hx-patient-banner.d.ts.map +1 -1
  227. package/dist/components/hx-patient-banner/hx-patient-banner.styles.d.ts.map +1 -1
  228. package/dist/components/hx-patient-banner/index.js +1 -1
  229. package/dist/components/hx-phi-field/hx-phi-field.d.ts +85 -5
  230. package/dist/components/hx-phi-field/hx-phi-field.d.ts.map +1 -1
  231. package/dist/components/hx-phi-field/hx-phi-field.styles.d.ts.map +1 -1
  232. package/dist/components/hx-phi-field/index.js +1 -1
  233. package/dist/components/hx-popover/hx-popover.d.ts +4 -2
  234. package/dist/components/hx-popover/hx-popover.d.ts.map +1 -1
  235. package/dist/components/hx-popover/hx-popover.styles.d.ts.map +1 -1
  236. package/dist/components/hx-popover/index.js +1 -1
  237. package/dist/components/hx-popup/hx-popup.d.ts +7 -2
  238. package/dist/components/hx-popup/hx-popup.d.ts.map +1 -1
  239. package/dist/components/hx-popup/hx-popup.styles.d.ts.map +1 -1
  240. package/dist/components/hx-popup/index.js +1 -1
  241. package/dist/components/hx-progress-bar/hx-progress-bar.d.ts +3 -4
  242. package/dist/components/hx-progress-bar/hx-progress-bar.d.ts.map +1 -1
  243. package/dist/components/hx-progress-bar/index.js +1 -1
  244. package/dist/components/hx-progress-ring/hx-progress-ring.d.ts +3 -2
  245. package/dist/components/hx-progress-ring/hx-progress-ring.d.ts.map +1 -1
  246. package/dist/components/hx-progress-ring/hx-progress-ring.styles.d.ts.map +1 -1
  247. package/dist/components/hx-progress-ring/index.js +1 -1
  248. package/dist/components/hx-prose/hx-prose.d.ts +3 -2
  249. package/dist/components/hx-prose/hx-prose.d.ts.map +1 -1
  250. package/dist/components/hx-prose/hx-prose.styles.d.ts +8 -0
  251. package/dist/components/hx-prose/hx-prose.styles.d.ts.map +1 -1
  252. package/dist/components/hx-prose/index.js +1 -1
  253. package/dist/components/hx-radio-group/hx-radio-group.d.ts +14 -39
  254. package/dist/components/hx-radio-group/hx-radio-group.d.ts.map +1 -1
  255. package/dist/components/hx-radio-group/hx-radio-group.styles.d.ts.map +1 -1
  256. package/dist/components/hx-radio-group/hx-radio.d.ts +19 -4
  257. package/dist/components/hx-radio-group/hx-radio.d.ts.map +1 -1
  258. package/dist/components/hx-radio-group/hx-radio.styles.d.ts.map +1 -1
  259. package/dist/components/hx-radio-group/index.d.ts +1 -0
  260. package/dist/components/hx-radio-group/index.d.ts.map +1 -1
  261. package/dist/components/hx-radio-group/index.js +1 -1
  262. package/dist/components/hx-rating/hx-rating.d.ts +9 -20
  263. package/dist/components/hx-rating/hx-rating.d.ts.map +1 -1
  264. package/dist/components/hx-rating/hx-rating.styles.d.ts.map +1 -1
  265. package/dist/components/hx-rating/index.d.ts +1 -0
  266. package/dist/components/hx-rating/index.d.ts.map +1 -1
  267. package/dist/components/hx-rating/index.js +1 -1
  268. package/dist/components/hx-select/hx-select.d.ts +26 -17
  269. package/dist/components/hx-select/hx-select.d.ts.map +1 -1
  270. package/dist/components/hx-select/hx-select.styles.d.ts.map +1 -1
  271. package/dist/components/hx-select/index.d.ts +1 -0
  272. package/dist/components/hx-select/index.d.ts.map +1 -1
  273. package/dist/components/hx-select/index.js +1 -1
  274. package/dist/components/hx-side-nav/hx-nav-item.d.ts +2 -5
  275. package/dist/components/hx-side-nav/hx-nav-item.d.ts.map +1 -1
  276. package/dist/components/hx-side-nav/hx-nav-item.styles.d.ts.map +1 -1
  277. package/dist/components/hx-side-nav/hx-side-nav.d.ts +3 -2
  278. package/dist/components/hx-side-nav/hx-side-nav.d.ts.map +1 -1
  279. package/dist/components/hx-side-nav/hx-side-nav.styles.d.ts.map +1 -1
  280. package/dist/components/hx-side-nav/index.js +1 -1
  281. package/dist/components/hx-skeleton/hx-skeleton.d.ts +3 -2
  282. package/dist/components/hx-skeleton/hx-skeleton.d.ts.map +1 -1
  283. package/dist/components/hx-skeleton/hx-skeleton.styles.d.ts.map +1 -1
  284. package/dist/components/hx-skeleton/index.js +1 -1
  285. package/dist/components/hx-slider/hx-slider.d.ts +18 -22
  286. package/dist/components/hx-slider/hx-slider.d.ts.map +1 -1
  287. package/dist/components/hx-slider/hx-slider.styles.d.ts.map +1 -1
  288. package/dist/components/hx-slider/index.d.ts +1 -0
  289. package/dist/components/hx-slider/index.d.ts.map +1 -1
  290. package/dist/components/hx-slider/index.js +1 -1
  291. package/dist/components/hx-spinner/hx-spinner.d.ts +2 -2
  292. package/dist/components/hx-spinner/hx-spinner.d.ts.map +1 -1
  293. package/dist/components/hx-spinner/hx-spinner.styles.d.ts.map +1 -1
  294. package/dist/components/hx-spinner/index.js +1 -1
  295. package/dist/components/hx-split-button/hx-split-button.d.ts +10 -4
  296. package/dist/components/hx-split-button/hx-split-button.d.ts.map +1 -1
  297. package/dist/components/hx-split-button/hx-split-button.styles.d.ts.map +1 -1
  298. package/dist/components/hx-split-button/index.js +1 -1
  299. package/dist/components/hx-split-panel/hx-split-panel.d.ts +12 -2
  300. package/dist/components/hx-split-panel/hx-split-panel.d.ts.map +1 -1
  301. package/dist/components/hx-split-panel/hx-split-panel.styles.d.ts.map +1 -1
  302. package/dist/components/hx-split-panel/index.js +1 -1
  303. package/dist/components/hx-stack/hx-stack.d.ts +2 -2
  304. package/dist/components/hx-stack/hx-stack.d.ts.map +1 -1
  305. package/dist/components/hx-stack/hx-stack.styles.d.ts.map +1 -1
  306. package/dist/components/hx-stack/index.js +1 -1
  307. package/dist/components/hx-stat/hx-stat.d.ts +4 -3
  308. package/dist/components/hx-stat/hx-stat.d.ts.map +1 -1
  309. package/dist/components/hx-stat/index.js +1 -1
  310. package/dist/components/hx-status-indicator/hx-status-indicator.d.ts +3 -2
  311. package/dist/components/hx-status-indicator/hx-status-indicator.d.ts.map +1 -1
  312. package/dist/components/hx-status-indicator/hx-status-indicator.styles.d.ts.map +1 -1
  313. package/dist/components/hx-status-indicator/index.js +1 -1
  314. package/dist/components/hx-steps/hx-step.d.ts +3 -2
  315. package/dist/components/hx-steps/hx-step.d.ts.map +1 -1
  316. package/dist/components/hx-steps/hx-step.styles.d.ts.map +1 -1
  317. package/dist/components/hx-steps/hx-steps.d.ts +11 -4
  318. package/dist/components/hx-steps/hx-steps.d.ts.map +1 -1
  319. package/dist/components/hx-steps/hx-steps.styles.d.ts.map +1 -1
  320. package/dist/components/hx-steps/index.js +1 -1
  321. package/dist/components/hx-structured-list/hx-structured-list.d.ts +3 -3
  322. package/dist/components/hx-structured-list/hx-structured-list.d.ts.map +1 -1
  323. package/dist/components/hx-structured-list/hx-structured-list.styles.d.ts.map +1 -1
  324. package/dist/components/hx-structured-list/index.js +1 -1
  325. package/dist/components/hx-style-scope/hx-style-scope.d.ts +3 -2
  326. package/dist/components/hx-style-scope/hx-style-scope.d.ts.map +1 -1
  327. package/dist/components/hx-style-scope/hx-style-scope.styles.d.ts.map +1 -1
  328. package/dist/components/hx-style-scope/index.js +1 -1
  329. package/dist/components/hx-switch/hx-switch.d.ts +25 -29
  330. package/dist/components/hx-switch/hx-switch.d.ts.map +1 -1
  331. package/dist/components/hx-switch/hx-switch.styles.d.ts.map +1 -1
  332. package/dist/components/hx-switch/index.d.ts +2 -1
  333. package/dist/components/hx-switch/index.d.ts.map +1 -1
  334. package/dist/components/hx-switch/index.js +1 -1
  335. package/dist/components/hx-table/hx-table.d.ts +3 -2
  336. package/dist/components/hx-table/hx-table.d.ts.map +1 -1
  337. package/dist/components/hx-table/hx-table.styles.d.ts.map +1 -1
  338. package/dist/components/hx-table/hx-tbody.d.ts +2 -2
  339. package/dist/components/hx-table/hx-tbody.d.ts.map +1 -1
  340. package/dist/components/hx-table/hx-td.d.ts +2 -2
  341. package/dist/components/hx-table/hx-td.d.ts.map +1 -1
  342. package/dist/components/hx-table/hx-tfoot.d.ts +2 -2
  343. package/dist/components/hx-table/hx-tfoot.d.ts.map +1 -1
  344. package/dist/components/hx-table/hx-th.d.ts +2 -2
  345. package/dist/components/hx-table/hx-th.d.ts.map +1 -1
  346. package/dist/components/hx-table/hx-thead.d.ts +2 -2
  347. package/dist/components/hx-table/hx-thead.d.ts.map +1 -1
  348. package/dist/components/hx-table/hx-tr.d.ts +2 -2
  349. package/dist/components/hx-table/hx-tr.d.ts.map +1 -1
  350. package/dist/components/hx-table/index.js +1 -1
  351. package/dist/components/hx-tabs/hx-tab-panel.d.ts +2 -2
  352. package/dist/components/hx-tabs/hx-tab-panel.d.ts.map +1 -1
  353. package/dist/components/hx-tabs/hx-tab-panel.styles.d.ts.map +1 -1
  354. package/dist/components/hx-tabs/hx-tab.d.ts +2 -2
  355. package/dist/components/hx-tabs/hx-tab.d.ts.map +1 -1
  356. package/dist/components/hx-tabs/hx-tab.styles.d.ts.map +1 -1
  357. package/dist/components/hx-tabs/hx-tabs.d.ts +14 -2
  358. package/dist/components/hx-tabs/hx-tabs.d.ts.map +1 -1
  359. package/dist/components/hx-tabs/hx-tabs.styles.d.ts.map +1 -1
  360. package/dist/components/hx-tabs/index.d.ts +1 -0
  361. package/dist/components/hx-tabs/index.d.ts.map +1 -1
  362. package/dist/components/hx-tabs/index.js +1 -1
  363. package/dist/components/hx-tag/hx-tag.d.ts +2 -4
  364. package/dist/components/hx-tag/hx-tag.d.ts.map +1 -1
  365. package/dist/components/hx-tag/hx-tag.styles.d.ts.map +1 -1
  366. package/dist/components/hx-tag/index.d.ts +0 -2
  367. package/dist/components/hx-tag/index.d.ts.map +1 -1
  368. package/dist/components/hx-tag/index.js +1 -1
  369. package/dist/components/hx-text/hx-text.d.ts +2 -2
  370. package/dist/components/hx-text/hx-text.d.ts.map +1 -1
  371. package/dist/components/hx-text/hx-text.styles.d.ts.map +1 -1
  372. package/dist/components/hx-text/index.js +1 -1
  373. package/dist/components/hx-text-input/hx-text-input.d.ts +34 -7
  374. package/dist/components/hx-text-input/hx-text-input.d.ts.map +1 -1
  375. package/dist/components/hx-text-input/hx-text-input.styles.d.ts.map +1 -1
  376. package/dist/components/hx-text-input/index.d.ts +1 -0
  377. package/dist/components/hx-text-input/index.d.ts.map +1 -1
  378. package/dist/components/hx-text-input/index.js +1 -1
  379. package/dist/components/hx-textarea/hx-textarea.d.ts +41 -25
  380. package/dist/components/hx-textarea/hx-textarea.d.ts.map +1 -1
  381. package/dist/components/hx-textarea/hx-textarea.styles.d.ts.map +1 -1
  382. package/dist/components/hx-textarea/index.d.ts +1 -0
  383. package/dist/components/hx-textarea/index.d.ts.map +1 -1
  384. package/dist/components/hx-textarea/index.js +1 -1
  385. package/dist/components/hx-theme/hx-theme.d.ts +3 -11
  386. package/dist/components/hx-theme/hx-theme.d.ts.map +1 -1
  387. package/dist/components/hx-theme/hx-theme.styles.d.ts.map +1 -1
  388. package/dist/components/hx-theme/index.d.ts +0 -2
  389. package/dist/components/hx-theme/index.d.ts.map +1 -1
  390. package/dist/components/hx-theme/index.js +1 -1
  391. package/dist/components/hx-time-picker/hx-time-picker.d.ts +13 -31
  392. package/dist/components/hx-time-picker/hx-time-picker.d.ts.map +1 -1
  393. package/dist/components/hx-time-picker/hx-time-picker.styles.d.ts.map +1 -1
  394. package/dist/components/hx-time-picker/index.d.ts +1 -0
  395. package/dist/components/hx-time-picker/index.d.ts.map +1 -1
  396. package/dist/components/hx-time-picker/index.js +1 -1
  397. package/dist/components/hx-toast/hx-toast-stack.d.ts +2 -2
  398. package/dist/components/hx-toast/hx-toast-stack.d.ts.map +1 -1
  399. package/dist/components/hx-toast/hx-toast.d.ts +3 -2
  400. package/dist/components/hx-toast/hx-toast.d.ts.map +1 -1
  401. package/dist/components/hx-toast/hx-toast.styles.d.ts.map +1 -1
  402. package/dist/components/hx-toast/index.js +1 -1
  403. package/dist/components/hx-toggle-button/hx-toggle-button.d.ts +10 -13
  404. package/dist/components/hx-toggle-button/hx-toggle-button.d.ts.map +1 -1
  405. package/dist/components/hx-toggle-button/hx-toggle-button.styles.d.ts.map +1 -1
  406. package/dist/components/hx-toggle-button/index.d.ts +1 -0
  407. package/dist/components/hx-toggle-button/index.d.ts.map +1 -1
  408. package/dist/components/hx-toggle-button/index.js +1 -1
  409. package/dist/components/hx-tooltip/hx-tooltip.d.ts +2 -2
  410. package/dist/components/hx-tooltip/hx-tooltip.d.ts.map +1 -1
  411. package/dist/components/hx-tooltip/hx-tooltip.styles.d.ts.map +1 -1
  412. package/dist/components/hx-tooltip/index.js +1 -1
  413. package/dist/components/hx-top-nav/hx-top-nav.d.ts +2 -2
  414. package/dist/components/hx-top-nav/hx-top-nav.d.ts.map +1 -1
  415. package/dist/components/hx-top-nav/hx-top-nav.styles.d.ts.map +1 -1
  416. package/dist/components/hx-top-nav/index.js +1 -1
  417. package/dist/components/hx-tree-view/hx-tree-item.d.ts +2 -4
  418. package/dist/components/hx-tree-view/hx-tree-item.d.ts.map +1 -1
  419. package/dist/components/hx-tree-view/hx-tree-item.styles.d.ts.map +1 -1
  420. package/dist/components/hx-tree-view/hx-tree-view.d.ts +2 -4
  421. package/dist/components/hx-tree-view/hx-tree-view.d.ts.map +1 -1
  422. package/dist/components/hx-tree-view/hx-tree-view.styles.d.ts.map +1 -1
  423. package/dist/components/hx-tree-view/index.d.ts +0 -4
  424. package/dist/components/hx-tree-view/index.d.ts.map +1 -1
  425. package/dist/components/hx-tree-view/index.js +1 -1
  426. package/dist/components/hx-visually-hidden/hx-visually-hidden.d.ts +2 -2
  427. package/dist/components/hx-visually-hidden/hx-visually-hidden.d.ts.map +1 -1
  428. package/dist/components/hx-visually-hidden/hx-visually-hidden.styles.d.ts.map +1 -1
  429. package/dist/components/hx-visually-hidden/index.js +1 -1
  430. package/dist/css/helix-all.css +3600 -790
  431. package/dist/css/helix-core.css +244 -50
  432. package/dist/css/helix-data.css +86 -7
  433. package/dist/css/helix-feedback.css +159 -61
  434. package/dist/css/helix-forms.css +2054 -105
  435. package/dist/css/helix-layout.css +53 -1
  436. package/dist/css/helix-media.css +40 -16
  437. package/dist/css/helix-navigation.css +209 -48
  438. package/dist/css/helix-overlay.css +99 -12
  439. package/dist/css/helix-tokens.css +30 -11
  440. package/dist/css/helix-utility.css +118 -9
  441. package/dist/css/hx-accordion.css +9 -1
  442. package/dist/css/hx-action-bar.css +17 -3
  443. package/dist/css/hx-alert.css +39 -18
  444. package/dist/css/hx-avatar.css +1 -1
  445. package/dist/css/hx-badge.css +31 -15
  446. package/dist/css/hx-banner.css +35 -18
  447. package/dist/css/hx-breadcrumb.css +27 -0
  448. package/dist/css/hx-button-group.css +13 -0
  449. package/dist/css/hx-button.css +6 -3
  450. package/dist/css/hx-card.css +18 -6
  451. package/dist/css/hx-carousel.css +40 -16
  452. package/dist/css/hx-checkbox-group.css +36 -4
  453. package/dist/css/hx-checkbox.css +74 -8
  454. package/dist/css/hx-clinical-status.css +46 -23
  455. package/dist/css/hx-code-snippet.css +25 -3
  456. package/dist/css/hx-color-picker.css +276 -1
  457. package/dist/css/hx-combobox.css +391 -1
  458. package/dist/css/hx-container.css +10 -0
  459. package/dist/css/hx-copy-button.css +31 -3
  460. package/dist/css/hx-counter.css +11 -1
  461. package/dist/css/hx-data-table.css +24 -1
  462. package/dist/css/hx-date-picker.css +437 -1
  463. package/dist/css/hx-dialog.css +23 -2
  464. package/dist/css/hx-divider.css +8 -0
  465. package/dist/css/hx-drawer.css +22 -1
  466. package/dist/css/hx-dropdown.css +10 -1
  467. package/dist/css/hx-field-label.css +18 -2
  468. package/dist/css/hx-field.css +39 -3
  469. package/dist/css/hx-file-upload.css +12 -12
  470. package/dist/css/hx-format-date.css +11 -0
  471. package/dist/css/hx-grid.css +10 -0
  472. package/dist/css/hx-help-text.css +25 -5
  473. package/dist/css/hx-icon-button.css +27 -0
  474. package/dist/css/hx-icon.css +8 -0
  475. package/dist/css/hx-image.css +11 -3
  476. package/dist/css/hx-link.css +23 -5
  477. package/dist/css/hx-list.css +10 -0
  478. package/dist/css/hx-menu.css +10 -2
  479. package/dist/css/hx-meter.css +22 -9
  480. package/dist/css/hx-nav.css +27 -12
  481. package/dist/css/hx-number-input.css +78 -0
  482. package/dist/css/hx-overflow-menu.css +41 -10
  483. package/dist/css/hx-pagination.css +13 -13
  484. package/dist/css/hx-patient-banner.css +30 -10
  485. package/dist/css/hx-phi-field.css +5 -2
  486. package/dist/css/hx-popover.css +16 -4
  487. package/dist/css/hx-popup.css +12 -0
  488. package/dist/css/hx-progress-bar.css +1 -1
  489. package/dist/css/hx-progress-ring.css +23 -1
  490. package/dist/css/hx-radio-group.css +35 -3
  491. package/dist/css/hx-rating.css +45 -4
  492. package/dist/css/hx-select.css +89 -7
  493. package/dist/css/hx-side-nav.css +26 -0
  494. package/dist/css/hx-skeleton.css +12 -0
  495. package/dist/css/hx-slider.css +16 -11
  496. package/dist/css/hx-spinner.css +12 -0
  497. package/dist/css/hx-split-button.css +37 -2
  498. package/dist/css/hx-split-panel.css +14 -0
  499. package/dist/css/hx-stack.css +10 -0
  500. package/dist/css/hx-stat.css +5 -5
  501. package/dist/css/hx-status-indicator.css +15 -2
  502. package/dist/css/hx-steps.css +12 -0
  503. package/dist/css/hx-structured-list.css +18 -2
  504. package/dist/css/hx-style-scope.css +11 -0
  505. package/dist/css/hx-switch.css +66 -4
  506. package/dist/css/hx-table.css +9 -1
  507. package/dist/css/hx-tabs.css +15 -3
  508. package/dist/css/hx-tag.css +24 -12
  509. package/dist/css/hx-text-input.css +71 -9
  510. package/dist/css/hx-text.css +38 -5
  511. package/dist/css/hx-textarea.css +71 -15
  512. package/dist/css/hx-theme.css +11 -0
  513. package/dist/css/hx-time-picker.css +224 -1
  514. package/dist/css/hx-toast.css +19 -7
  515. package/dist/css/hx-toggle-button.css +41 -4
  516. package/dist/css/hx-tooltip.css +16 -4
  517. package/dist/css/hx-top-nav.css +29 -8
  518. package/dist/css/hx-tree-view.css +9 -0
  519. package/dist/css/hx-visually-hidden.css +12 -0
  520. package/dist/css/index.css +1 -1
  521. package/dist/css/manifest.json +42 -9
  522. package/dist/form-test-utils.d.ts +45 -0
  523. package/dist/form-test-utils.d.ts.map +1 -0
  524. package/dist/index.d.ts +28 -14
  525. package/dist/index.d.ts.map +1 -1
  526. package/dist/index.js +189 -177
  527. package/dist/index.js.map +1 -1
  528. package/dist/mixins/FormMixin.d.ts +24 -5
  529. package/dist/mixins/FormMixin.d.ts.map +1 -1
  530. package/dist/mixins/aria-delegation.d.ts +1 -1
  531. package/dist/mixins/aria-delegation.d.ts.map +1 -1
  532. package/dist/mixins/index.d.ts +3 -1
  533. package/dist/mixins/index.d.ts.map +1 -1
  534. package/dist/shared/{FormMixin-Bjvw20G5.js → FormMixin-B8PXk5RQ.js} +31 -14
  535. package/dist/shared/FormMixin-B8PXk5RQ.js.map +1 -0
  536. package/dist/shared/{aria-delegation-CBP9eQ0M.js → aria-delegation-Doq6RRUy.js} +6 -6
  537. package/dist/shared/aria-delegation-Doq6RRUy.js.map +1 -0
  538. package/dist/shared/{helix-element-CZvaIEQP.js → helix-element-BNEYeiys.js} +30 -27
  539. package/dist/shared/helix-element-BNEYeiys.js.map +1 -0
  540. package/dist/shared/{hx-accordion-CpfO0YQo.js → hx-accordion-Wt52OOZD.js} +127 -80
  541. package/dist/shared/hx-accordion-Wt52OOZD.js.map +1 -0
  542. package/dist/shared/{hx-action-bar-CNLYufVd.js → hx-action-bar-BKMADbHj.js} +89 -85
  543. package/dist/shared/hx-action-bar-BKMADbHj.js.map +1 -0
  544. package/dist/shared/{hx-alert-CHOjTBds.js → hx-alert-D7n94HwI.js} +47 -26
  545. package/dist/shared/hx-alert-D7n94HwI.js.map +1 -0
  546. package/dist/shared/{hx-avatar-an-WsuLl.js → hx-avatar-iLYzu8MJ.js} +10 -10
  547. package/dist/shared/hx-avatar-iLYzu8MJ.js.map +1 -0
  548. package/dist/shared/{hx-badge-RPzd-t5l.js → hx-badge-CVCmMPyW.js} +43 -27
  549. package/dist/shared/hx-badge-CVCmMPyW.js.map +1 -0
  550. package/dist/shared/{hx-banner-B-WEDiq7.js → hx-banner-C_He7Tr4.js} +60 -43
  551. package/dist/shared/hx-banner-C_He7Tr4.js.map +1 -0
  552. package/dist/shared/{hx-breadcrumb-item-jLAKK038.js → hx-breadcrumb-item-CldCwD1d.js} +123 -83
  553. package/dist/shared/hx-breadcrumb-item-CldCwD1d.js.map +1 -0
  554. package/dist/shared/{hx-button-DoN8jjQT.js → hx-button-Ddl-T6T-.js} +117 -92
  555. package/dist/shared/hx-button-Ddl-T6T-.js.map +1 -0
  556. package/dist/shared/{hx-button-group-BXlMQTt_.js → hx-button-group-BJOGWoMa.js} +33 -21
  557. package/dist/shared/hx-button-group-BJOGWoMa.js.map +1 -0
  558. package/dist/shared/{hx-card-BgXZXDuc.js → hx-card-ycveujjL.js} +64 -38
  559. package/dist/shared/hx-card-ycveujjL.js.map +1 -0
  560. package/dist/shared/{hx-carousel-item-Dwt9Pphz.js → hx-carousel-item-D_dCv61-.js} +76 -41
  561. package/dist/shared/hx-carousel-item-D_dCv61-.js.map +1 -0
  562. package/dist/shared/{hx-checkbox-C82GjRXe.js → hx-checkbox-DkkoWoye.js} +163 -80
  563. package/dist/shared/hx-checkbox-DkkoWoye.js.map +1 -0
  564. package/dist/shared/{hx-checkbox-group-DThZeN5d.js → hx-checkbox-group-C3poJ-Zw.js} +105 -79
  565. package/dist/shared/hx-checkbox-group-C3poJ-Zw.js.map +1 -0
  566. package/dist/shared/{hx-clinical-status-BjtT5c0M.js → hx-clinical-status-BS5lcddT.js} +60 -38
  567. package/dist/shared/hx-clinical-status-BS5lcddT.js.map +1 -0
  568. package/dist/shared/{hx-code-snippet-DcVENSuC.js → hx-code-snippet-B7wUKzyb.js} +32 -11
  569. package/dist/shared/hx-code-snippet-B7wUKzyb.js.map +1 -0
  570. package/dist/shared/{hx-color-picker-C6EIuS9t.js → hx-color-picker-DBaKTVLr.js} +380 -119
  571. package/dist/shared/hx-color-picker-DBaKTVLr.js.map +1 -0
  572. package/dist/shared/hx-combobox-BmgYT7Ar.js +929 -0
  573. package/dist/shared/hx-combobox-BmgYT7Ar.js.map +1 -0
  574. package/dist/shared/{hx-container-BwWbMPTH.js → hx-container-DVI7sxfX.js} +25 -15
  575. package/dist/shared/hx-container-DVI7sxfX.js.map +1 -0
  576. package/dist/shared/{hx-copy-button-BoM0WsMd.js → hx-copy-button-8deNUdwP.js} +68 -40
  577. package/dist/shared/hx-copy-button-8deNUdwP.js.map +1 -0
  578. package/dist/shared/{hx-counter-B5NgKlw4.js → hx-counter-CKfl_g8K.js} +32 -22
  579. package/dist/shared/hx-counter-CKfl_g8K.js.map +1 -0
  580. package/dist/shared/{hx-data-table-D5Ne-goy.js → hx-data-table-B6h0RPn0.js} +203 -132
  581. package/dist/shared/hx-data-table-B6h0RPn0.js.map +1 -0
  582. package/dist/shared/hx-date-picker-Dq2Nb68_.js +1077 -0
  583. package/dist/shared/hx-date-picker-Dq2Nb68_.js.map +1 -0
  584. package/dist/shared/{hx-dialog-D4ubstxx.js → hx-dialog-CvIlY0Tc.js} +85 -52
  585. package/dist/shared/hx-dialog-CvIlY0Tc.js.map +1 -0
  586. package/dist/shared/{hx-divider-BBtOLHRP.js → hx-divider-DwpOrzMW.js} +23 -15
  587. package/dist/shared/hx-divider-DwpOrzMW.js.map +1 -0
  588. package/dist/shared/{hx-drawer--WDLuWtS.js → hx-drawer-Cx2ZJhBe.js} +101 -66
  589. package/dist/shared/hx-drawer-Cx2ZJhBe.js.map +1 -0
  590. package/dist/shared/{hx-dropdown-n5-XSmiV.js → hx-dropdown-BjDrPUq5.js} +55 -46
  591. package/dist/shared/hx-dropdown-BjDrPUq5.js.map +1 -0
  592. package/dist/shared/{hx-field-CwT9tki1.js → hx-field-Dp3qQMut.js} +61 -25
  593. package/dist/shared/hx-field-Dp3qQMut.js.map +1 -0
  594. package/dist/shared/{hx-field-label-CcOK9VU3.js → hx-field-label-BC8QViXv.js} +41 -25
  595. package/dist/shared/hx-field-label-BC8QViXv.js.map +1 -0
  596. package/dist/shared/{hx-file-upload-Di_vpQaG.js → hx-file-upload-B6Yl1u0i.js} +110 -102
  597. package/dist/shared/hx-file-upload-B6Yl1u0i.js.map +1 -0
  598. package/dist/shared/{hx-form-BM6PHsw3.js → hx-form-ButQFt9A.js} +12 -11
  599. package/dist/shared/hx-form-ButQFt9A.js.map +1 -0
  600. package/dist/shared/{hx-format-date-B7L9odbA.js → hx-format-date-CKnlQOmV.js} +20 -9
  601. package/dist/shared/hx-format-date-CKnlQOmV.js.map +1 -0
  602. package/dist/shared/{hx-grid-BIAR5h9m.js → hx-grid-CXZf3jeK.js} +28 -18
  603. package/dist/shared/hx-grid-CXZf3jeK.js.map +1 -0
  604. package/dist/shared/{hx-help-text-Bmb80bP4.js → hx-help-text-D7eytSim.js} +45 -25
  605. package/dist/shared/hx-help-text-D7eytSim.js.map +1 -0
  606. package/dist/shared/{hx-icon-BKHs3OLu.js → hx-icon-CcyDPDYY.js} +104 -62
  607. package/dist/shared/hx-icon-CcyDPDYY.js.map +1 -0
  608. package/dist/shared/{hx-icon-button-CJuy9xbw.js → hx-icon-button-BHneqPCU.js} +58 -42
  609. package/dist/shared/hx-icon-button-BHneqPCU.js.map +1 -0
  610. package/dist/shared/{hx-image-ztiXumZB.js → hx-image-2gt14zZd.js} +34 -26
  611. package/dist/shared/hx-image-2gt14zZd.js.map +1 -0
  612. package/dist/shared/{hx-link-CN7AvGOW.js → hx-link-BESrWK8M.js} +51 -33
  613. package/dist/shared/hx-link-BESrWK8M.js.map +1 -0
  614. package/dist/shared/{hx-list-Dnei26t4.js → hx-list-_9qVv02L.js} +32 -22
  615. package/dist/shared/hx-list-_9qVv02L.js.map +1 -0
  616. package/dist/shared/{hx-menu-divider-DRT8yHRZ.js → hx-menu-divider-Ck-9Os1t.js} +103 -60
  617. package/dist/shared/hx-menu-divider-Ck-9Os1t.js.map +1 -0
  618. package/dist/shared/{hx-meter-BcVC9yrt.js → hx-meter-TbROk-dw.js} +57 -43
  619. package/dist/shared/hx-meter-TbROk-dw.js.map +1 -0
  620. package/dist/shared/{hx-nav-l0Rp7WPW.js → hx-nav-BcYDmjf7.js} +71 -56
  621. package/dist/shared/hx-nav-BcYDmjf7.js.map +1 -0
  622. package/dist/shared/{hx-nav-item-CJN4VDrf.js → hx-nav-item-pqPasRUm.js} +67 -23
  623. package/dist/shared/hx-nav-item-pqPasRUm.js.map +1 -0
  624. package/dist/shared/{hx-number-input-0Waw7Z7u.js → hx-number-input-mOIZ3-46.js} +169 -96
  625. package/dist/shared/hx-number-input-mOIZ3-46.js.map +1 -0
  626. package/dist/shared/{hx-overflow-menu-DElwFSCd.js → hx-overflow-menu-Dprb9lnT.js} +70 -38
  627. package/dist/shared/hx-overflow-menu-Dprb9lnT.js.map +1 -0
  628. package/dist/shared/{hx-pagination-BNtx-LG6.js → hx-pagination-AguTQjYC.js} +35 -35
  629. package/dist/shared/hx-pagination-AguTQjYC.js.map +1 -0
  630. package/dist/shared/{hx-patient-banner-BKiN7nIE.js → hx-patient-banner-uE6gqLpT.js} +67 -47
  631. package/dist/shared/hx-patient-banner-uE6gqLpT.js.map +1 -0
  632. package/dist/shared/{hx-phi-field-DD1qcBSO.js → hx-phi-field-BC_XowhC.js} +138 -56
  633. package/dist/shared/hx-phi-field-BC_XowhC.js.map +1 -0
  634. package/dist/shared/{hx-popover-CydNuVkT.js → hx-popover-B2_203ct.js} +44 -30
  635. package/dist/shared/hx-popover-B2_203ct.js.map +1 -0
  636. package/dist/shared/{hx-popup-DbzezTOd.js → hx-popup-DZXpsJ1R.js} +89 -64
  637. package/dist/shared/hx-popup-DZXpsJ1R.js.map +1 -0
  638. package/dist/shared/{hx-progress-bar-Cm0VihTN.js → hx-progress-bar-KjEkEJLy.js} +21 -20
  639. package/dist/shared/hx-progress-bar-KjEkEJLy.js.map +1 -0
  640. package/dist/shared/{hx-progress-ring-Cs0WgWDJ.js → hx-progress-ring-3zMwvrwD.js} +53 -31
  641. package/dist/shared/hx-progress-ring-3zMwvrwD.js.map +1 -0
  642. package/dist/shared/{hx-prose-Ml_L2zje.js → hx-prose-BCtK7YL6.js} +48 -15
  643. package/dist/shared/{hx-prose-Ml_L2zje.js.map → hx-prose-BCtK7YL6.js.map} +1 -1
  644. package/dist/shared/{hx-radio-f8c5ggHG.js → hx-radio-BBC5qZgE.js} +202 -123
  645. package/dist/shared/hx-radio-BBC5qZgE.js.map +1 -0
  646. package/dist/shared/{hx-rating-qRJZXskm.js → hx-rating-C3E3ENJb.js} +92 -69
  647. package/dist/shared/hx-rating-C3E3ENJb.js.map +1 -0
  648. package/dist/shared/{hx-select-CgcgsHU5.js → hx-select-CixTo7jp.js} +206 -135
  649. package/dist/shared/hx-select-CixTo7jp.js.map +1 -0
  650. package/dist/shared/{hx-skeleton-tiYvKO-t.js → hx-skeleton-LxkI0pxr.js} +39 -27
  651. package/dist/shared/hx-skeleton-LxkI0pxr.js.map +1 -0
  652. package/dist/shared/{hx-slider-BvXtvxmN.js → hx-slider-DFHuzF3N.js} +79 -91
  653. package/dist/shared/hx-slider-DFHuzF3N.js.map +1 -0
  654. package/dist/shared/{hx-spinner-D6nzuGmj.js → hx-spinner-BKjuCdZB.js} +32 -20
  655. package/dist/shared/hx-spinner-BKjuCdZB.js.map +1 -0
  656. package/dist/shared/{hx-split-button-CPndTJlC.js → hx-split-button-CGcJMmCG.js} +59 -22
  657. package/dist/shared/hx-split-button-CGcJMmCG.js.map +1 -0
  658. package/dist/shared/{hx-split-panel-Dx72NaET.js → hx-split-panel-C-1R10Mc.js} +71 -47
  659. package/dist/shared/hx-split-panel-C-1R10Mc.js.map +1 -0
  660. package/dist/shared/{hx-stack-B76_1O6g.js → hx-stack-DGfcOfWJ.js} +21 -11
  661. package/dist/shared/hx-stack-DGfcOfWJ.js.map +1 -0
  662. package/dist/shared/{hx-stat-DKlyBL_K.js → hx-stat-BTpykQAt.js} +14 -14
  663. package/dist/shared/hx-stat-BTpykQAt.js.map +1 -0
  664. package/dist/shared/{hx-status-indicator-ClWpK6zz.js → hx-status-indicator-X2QEWNFt.js} +36 -23
  665. package/dist/shared/hx-status-indicator-X2QEWNFt.js.map +1 -0
  666. package/dist/shared/{hx-step-C2Jk4mHa.js → hx-step-CRNQlmSo.js} +83 -32
  667. package/dist/shared/hx-step-CRNQlmSo.js.map +1 -0
  668. package/dist/shared/{hx-structured-list-DKlrv7kS.js → hx-structured-list-CqNbaEXg.js} +32 -16
  669. package/dist/shared/hx-structured-list-CqNbaEXg.js.map +1 -0
  670. package/dist/shared/hx-style-scope-TDnR8H4O.js +251 -0
  671. package/dist/shared/hx-style-scope-TDnR8H4O.js.map +1 -0
  672. package/dist/shared/{hx-switch-BzMN37PV.js → hx-switch-DqOD9JR7.js} +122 -81
  673. package/dist/shared/hx-switch-DqOD9JR7.js.map +1 -0
  674. package/dist/shared/{hx-tab-panel-J58zOSjq.js → hx-tab-panel-BIzKfW5i.js} +156 -102
  675. package/dist/shared/hx-tab-panel-BIzKfW5i.js.map +1 -0
  676. package/dist/shared/{hx-tag-F0ZcYj9b.js → hx-tag-CgnrNnte.js} +30 -18
  677. package/dist/shared/hx-tag-CgnrNnte.js.map +1 -0
  678. package/dist/shared/{hx-td-CNCvzBwY.js → hx-td-Bra35cH4.js} +55 -47
  679. package/dist/shared/hx-td-Bra35cH4.js.map +1 -0
  680. package/dist/shared/{hx-text-DcWBqZwx.js → hx-text-DMC2CPlL.js} +74 -41
  681. package/dist/shared/hx-text-DMC2CPlL.js.map +1 -0
  682. package/dist/shared/{hx-text-input-Zuodg9s_.js → hx-text-input--q0GH78x.js} +123 -62
  683. package/dist/shared/hx-text-input--q0GH78x.js.map +1 -0
  684. package/dist/shared/{hx-textarea-BfSJJtA1.js → hx-textarea-CK621vSL.js} +124 -89
  685. package/dist/shared/hx-textarea-CK621vSL.js.map +1 -0
  686. package/dist/shared/{hx-theme-pc1V7dyL.js → hx-theme-DfEy-SJA.js} +72 -64
  687. package/dist/shared/hx-theme-DfEy-SJA.js.map +1 -0
  688. package/dist/shared/{hx-time-picker-CZvmihHD.js → hx-time-picker-tPUfgElQ.js} +300 -82
  689. package/dist/shared/hx-time-picker-tPUfgElQ.js.map +1 -0
  690. package/dist/shared/{hx-toggle-button-BZUQUULm.js → hx-toggle-button-L-uBJr-a.js} +72 -42
  691. package/dist/shared/hx-toggle-button-L-uBJr-a.js.map +1 -0
  692. package/dist/shared/{hx-tooltip-Ny4i1Idj.js → hx-tooltip-B_zfKvwc.js} +44 -31
  693. package/dist/shared/hx-tooltip-B_zfKvwc.js.map +1 -0
  694. package/dist/shared/{hx-top-nav-CC4FW2Hp.js → hx-top-nav-CATbRvIv.js} +53 -30
  695. package/dist/shared/hx-top-nav-CATbRvIv.js.map +1 -0
  696. package/dist/shared/{hx-tree-item-CPQ9dJiK.js → hx-tree-item-A45WCiBu.js} +37 -9
  697. package/dist/shared/hx-tree-item-A45WCiBu.js.map +1 -0
  698. package/dist/shared/hx-visually-hidden-0bZKOWgT.js +66 -0
  699. package/dist/shared/hx-visually-hidden-0bZKOWgT.js.map +1 -0
  700. package/dist/shared/id-counter-DuX8vsui.js +11 -0
  701. package/dist/shared/{id-counter-PTgF-zcG.js.map → id-counter-DuX8vsui.js.map} +1 -1
  702. package/dist/shared/{toast-factory-CEMNOt1T.js → toast-factory-BPPnG3mM.js} +58 -46
  703. package/dist/shared/toast-factory-BPPnG3mM.js.map +1 -0
  704. package/dist/utilities/injectLightStyles.d.ts.map +1 -1
  705. package/dist/utilities/sanitizeCss.d.ts +43 -0
  706. package/dist/utilities/sanitizeCss.d.ts.map +1 -0
  707. package/package.json +29 -13
  708. package/dist/shared/FormMixin-Bjvw20G5.js.map +0 -1
  709. package/dist/shared/aria-delegation-CBP9eQ0M.js.map +0 -1
  710. package/dist/shared/document-token-adoption-DuYNKd4k.js +0 -21
  711. package/dist/shared/document-token-adoption-DuYNKd4k.js.map +0 -1
  712. package/dist/shared/helix-element-CZvaIEQP.js.map +0 -1
  713. package/dist/shared/hx-accordion-CpfO0YQo.js.map +0 -1
  714. package/dist/shared/hx-action-bar-CNLYufVd.js.map +0 -1
  715. package/dist/shared/hx-alert-CHOjTBds.js.map +0 -1
  716. package/dist/shared/hx-avatar-an-WsuLl.js.map +0 -1
  717. package/dist/shared/hx-badge-RPzd-t5l.js.map +0 -1
  718. package/dist/shared/hx-banner-B-WEDiq7.js.map +0 -1
  719. package/dist/shared/hx-breadcrumb-item-jLAKK038.js.map +0 -1
  720. package/dist/shared/hx-button-DoN8jjQT.js.map +0 -1
  721. package/dist/shared/hx-button-group-BXlMQTt_.js.map +0 -1
  722. package/dist/shared/hx-card-BgXZXDuc.js.map +0 -1
  723. package/dist/shared/hx-carousel-item-Dwt9Pphz.js.map +0 -1
  724. package/dist/shared/hx-checkbox-C82GjRXe.js.map +0 -1
  725. package/dist/shared/hx-checkbox-group-DThZeN5d.js.map +0 -1
  726. package/dist/shared/hx-clinical-status-BjtT5c0M.js.map +0 -1
  727. package/dist/shared/hx-code-snippet-DcVENSuC.js.map +0 -1
  728. package/dist/shared/hx-color-picker-C6EIuS9t.js.map +0 -1
  729. package/dist/shared/hx-combobox-BJ4lQocO.js +0 -544
  730. package/dist/shared/hx-combobox-BJ4lQocO.js.map +0 -1
  731. package/dist/shared/hx-container-BwWbMPTH.js.map +0 -1
  732. package/dist/shared/hx-copy-button-BoM0WsMd.js.map +0 -1
  733. package/dist/shared/hx-counter-B5NgKlw4.js.map +0 -1
  734. package/dist/shared/hx-data-table-D5Ne-goy.js.map +0 -1
  735. package/dist/shared/hx-date-picker-Cd3I3WkX.js +0 -627
  736. package/dist/shared/hx-date-picker-Cd3I3WkX.js.map +0 -1
  737. package/dist/shared/hx-dialog-D4ubstxx.js.map +0 -1
  738. package/dist/shared/hx-divider-BBtOLHRP.js.map +0 -1
  739. package/dist/shared/hx-drawer--WDLuWtS.js.map +0 -1
  740. package/dist/shared/hx-dropdown-n5-XSmiV.js.map +0 -1
  741. package/dist/shared/hx-field-CwT9tki1.js.map +0 -1
  742. package/dist/shared/hx-field-label-CcOK9VU3.js.map +0 -1
  743. package/dist/shared/hx-file-upload-Di_vpQaG.js.map +0 -1
  744. package/dist/shared/hx-form-BM6PHsw3.js.map +0 -1
  745. package/dist/shared/hx-format-date-B7L9odbA.js.map +0 -1
  746. package/dist/shared/hx-grid-BIAR5h9m.js.map +0 -1
  747. package/dist/shared/hx-help-text-Bmb80bP4.js.map +0 -1
  748. package/dist/shared/hx-icon-BKHs3OLu.js.map +0 -1
  749. package/dist/shared/hx-icon-button-CJuy9xbw.js.map +0 -1
  750. package/dist/shared/hx-image-ztiXumZB.js.map +0 -1
  751. package/dist/shared/hx-link-CN7AvGOW.js.map +0 -1
  752. package/dist/shared/hx-list-Dnei26t4.js.map +0 -1
  753. package/dist/shared/hx-menu-divider-DRT8yHRZ.js.map +0 -1
  754. package/dist/shared/hx-meter-BcVC9yrt.js.map +0 -1
  755. package/dist/shared/hx-nav-item-CJN4VDrf.js.map +0 -1
  756. package/dist/shared/hx-nav-l0Rp7WPW.js.map +0 -1
  757. package/dist/shared/hx-number-input-0Waw7Z7u.js.map +0 -1
  758. package/dist/shared/hx-overflow-menu-DElwFSCd.js.map +0 -1
  759. package/dist/shared/hx-pagination-BNtx-LG6.js.map +0 -1
  760. package/dist/shared/hx-patient-banner-BKiN7nIE.js.map +0 -1
  761. package/dist/shared/hx-phi-field-DD1qcBSO.js.map +0 -1
  762. package/dist/shared/hx-popover-CydNuVkT.js.map +0 -1
  763. package/dist/shared/hx-popup-DbzezTOd.js.map +0 -1
  764. package/dist/shared/hx-progress-bar-Cm0VihTN.js.map +0 -1
  765. package/dist/shared/hx-progress-ring-Cs0WgWDJ.js.map +0 -1
  766. package/dist/shared/hx-radio-f8c5ggHG.js.map +0 -1
  767. package/dist/shared/hx-rating-qRJZXskm.js.map +0 -1
  768. package/dist/shared/hx-select-CgcgsHU5.js.map +0 -1
  769. package/dist/shared/hx-skeleton-tiYvKO-t.js.map +0 -1
  770. package/dist/shared/hx-slider-BvXtvxmN.js.map +0 -1
  771. package/dist/shared/hx-spinner-D6nzuGmj.js.map +0 -1
  772. package/dist/shared/hx-split-button-CPndTJlC.js.map +0 -1
  773. package/dist/shared/hx-split-panel-Dx72NaET.js.map +0 -1
  774. package/dist/shared/hx-stack-B76_1O6g.js.map +0 -1
  775. package/dist/shared/hx-stat-DKlyBL_K.js.map +0 -1
  776. package/dist/shared/hx-status-indicator-ClWpK6zz.js.map +0 -1
  777. package/dist/shared/hx-step-C2Jk4mHa.js.map +0 -1
  778. package/dist/shared/hx-structured-list-DKlrv7kS.js.map +0 -1
  779. package/dist/shared/hx-style-scope-CsQ2Phf_.js +0 -126
  780. package/dist/shared/hx-style-scope-CsQ2Phf_.js.map +0 -1
  781. package/dist/shared/hx-switch-BzMN37PV.js.map +0 -1
  782. package/dist/shared/hx-tab-panel-J58zOSjq.js.map +0 -1
  783. package/dist/shared/hx-tag-F0ZcYj9b.js.map +0 -1
  784. package/dist/shared/hx-td-CNCvzBwY.js.map +0 -1
  785. package/dist/shared/hx-text-DcWBqZwx.js.map +0 -1
  786. package/dist/shared/hx-text-input-Zuodg9s_.js.map +0 -1
  787. package/dist/shared/hx-textarea-BfSJJtA1.js.map +0 -1
  788. package/dist/shared/hx-theme-pc1V7dyL.js.map +0 -1
  789. package/dist/shared/hx-time-picker-CZvmihHD.js.map +0 -1
  790. package/dist/shared/hx-toggle-button-BZUQUULm.js.map +0 -1
  791. package/dist/shared/hx-tooltip-Ny4i1Idj.js.map +0 -1
  792. package/dist/shared/hx-top-nav-CC4FW2Hp.js.map +0 -1
  793. package/dist/shared/hx-tree-item-CPQ9dJiK.js.map +0 -1
  794. package/dist/shared/hx-visually-hidden-vKX8QjeX.js +0 -54
  795. package/dist/shared/hx-visually-hidden-vKX8QjeX.js.map +0 -1
  796. package/dist/shared/id-counter-PTgF-zcG.js +0 -15
  797. package/dist/shared/toast-factory-CEMNOt1T.js.map +0 -1
  798. package/dist/tools/cem-a11y-analyzer/analyzers/aria-analyzer.d.ts +0 -12
  799. package/dist/tools/cem-a11y-analyzer/analyzers/aria-analyzer.d.ts.map +0 -1
  800. package/dist/tools/cem-a11y-analyzer/analyzers/focus-analyzer.d.ts +0 -13
  801. package/dist/tools/cem-a11y-analyzer/analyzers/focus-analyzer.d.ts.map +0 -1
  802. package/dist/tools/cem-a11y-analyzer/analyzers/form-analyzer.d.ts +0 -13
  803. package/dist/tools/cem-a11y-analyzer/analyzers/form-analyzer.d.ts.map +0 -1
  804. package/dist/tools/cem-a11y-analyzer/analyzers/keyboard-analyzer.d.ts +0 -12
  805. package/dist/tools/cem-a11y-analyzer/analyzers/keyboard-analyzer.d.ts.map +0 -1
  806. package/dist/tools/cem-a11y-analyzer/analyzers/label-analyzer.d.ts +0 -13
  807. package/dist/tools/cem-a11y-analyzer/analyzers/label-analyzer.d.ts.map +0 -1
  808. package/dist/tools/cem-a11y-analyzer/analyzers/motion-analyzer.d.ts +0 -12
  809. package/dist/tools/cem-a11y-analyzer/analyzers/motion-analyzer.d.ts.map +0 -1
  810. package/dist/tools/cem-a11y-analyzer/index.d.ts +0 -14
  811. package/dist/tools/cem-a11y-analyzer/index.d.ts.map +0 -1
  812. package/dist/tools/cem-a11y-analyzer/reporter.d.ts +0 -6
  813. package/dist/tools/cem-a11y-analyzer/reporter.d.ts.map +0 -1
  814. package/dist/tools/cem-a11y-analyzer/scorer.d.ts +0 -22
  815. package/dist/tools/cem-a11y-analyzer/scorer.d.ts.map +0 -1
  816. package/dist/tools/cem-a11y-analyzer/types.d.ts +0 -171
  817. package/dist/tools/cem-a11y-analyzer/types.d.ts.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hx-form-ButQFt9A.js","sources":["../../src/styles/form/form.scoped.css?raw","../../src/components/hx-form/hx-form.styles.ts","../../src/components/hx-form/hx-form.ts"],"sourcesContent":["export default \"hx-form{display:flex;flex-direction:column;gap:var(--hx-form-gap, var(--hx-space-4, 1rem));max-width:var(--hx-form-max-width, none);padding:var(--hx-form-padding, 0)}hx-form .hx-form-error-summary{border:var(--hx-border-width-thin, 1px) solid var(--hx-input-error-color, var(--hx-color-error-500, #dc3545));border-radius:var(--hx-border-radius-md, .375rem);background-color:var(--hx-color-error-50, #fef2f2);color:var(--hx-input-error-color, var(--hx-color-error-500, #dc3545));padding:var(--hx-space-3, .75rem) var(--hx-space-4, 1rem);font-size:var(--hx-font-size-sm, .875rem);line-height:var(--hx-line-height-normal, 1.5);font-family:var(--hx-input-font-family, var(--hx-font-family-sans, sans-serif))}hx-form .hx-form-error-summary ul{margin:0;padding:0 0 0 var(--hx-space-4, 1rem)}hx-form .hx-form-error-summary li{margin-bottom:var(--hx-space-1, .25rem)}hx-form .hx-form-error-summary li:last-child{margin-bottom:0}hx-form .form-item{display:flex;flex-direction:column;gap:var(--hx-space-1, .25rem);font-family:var(--hx-input-font-family, var(--hx-font-family-sans, sans-serif))}hx-form .form-item+.form-item{margin-top:var(--hx-space-4, 1rem)}hx-form label{display:flex;align-items:baseline;gap:var(--hx-space-1, .25rem);font-size:var(--hx-font-size-sm, .875rem);font-weight:var(--hx-font-weight-medium, 500);color:var(--hx-input-label-color, var(--hx-color-neutral-700, #343a40));line-height:var(--hx-line-height-normal, 1.5)}hx-form .form-required{color:var(--hx-input-error-color, var(--hx-color-error-500, #dc3545));font-weight:var(--hx-font-weight-bold, 700)}hx-form .description{font-size:var(--hx-font-size-xs, .75rem);color:var(--hx-color-neutral-500, #6c757d);line-height:var(--hx-line-height-normal, 1.5)}hx-form .form-item :is(*,*:before,*:after){box-sizing:border-box}hx-form :is(input:is([type=text],[type=email],[type=password],[type=tel],[type=url],[type=search],[type=number]),textarea){display:block;width:100%;border:var(--hx-border-width-thin, 1px) solid var(--hx-input-border-color, var(--hx-color-neutral-300, #ced4da));border-radius:var(--hx-input-border-radius, var(--hx-border-radius-md, .375rem));background-color:var(--hx-input-bg, var(--hx-color-neutral-0, #ffffff));padding:var(--hx-space-2, .5rem) var(--hx-space-3, .75rem);font-family:var(--hx-input-font-family, var(--hx-font-family-sans, sans-serif));font-size:var(--hx-font-size-md, 1rem);color:var(--hx-input-color, var(--hx-color-neutral-800, #212529));line-height:var(--hx-line-height-normal, 1.5);transition:border-color var(--hx-transition-fast, .15s ease),box-shadow var(--hx-transition-fast, .15s ease)}hx-form input:is([type=text],[type=email],[type=password],[type=tel],[type=url],[type=search],[type=number]){min-height:var(--hx-size-10, 2.5rem)}hx-form :is(input:is([type=text],[type=email],[type=password],[type=tel],[type=url],[type=search],[type=number]),textarea)::placeholder{color:var(--hx-color-neutral-400, #adb5bd)}hx-form :is(input:is([type=text],[type=email],[type=password],[type=tel],[type=url],[type=search],[type=number]),textarea):focus{outline:0;border-color:var(--hx-input-focus-ring-color, var(--hx-focus-ring-color, #2563eb));box-shadow:0 0 0 var(--hx-focus-ring-width, 2px) color-mix(in srgb,var(--hx-input-focus-ring-color, var(--hx-focus-ring-color, #2563eb)) calc(var(--hx-focus-ring-opacity, .25) * 100%),transparent)}hx-form :is(input:is([type=text],[type=email],[type=password],[type=tel],[type=url],[type=search],[type=number]),textarea):disabled{opacity:var(--hx-opacity-disabled, .5);cursor:not-allowed;pointer-events:none}hx-form :is(input:is([type=text],[type=email],[type=password],[type=tel],[type=url],[type=search],[type=number]),textarea):read-only{background-color:var(--hx-color-neutral-100, #e9ecef)}hx-form input[type=search]::-webkit-search-decoration,hx-form input[type=search]::-webkit-search-cancel-button,hx-form input[type=search]::-webkit-search-results-button,hx-form input[type=search]::-webkit-search-results-decoration{-webkit-appearance:none}hx-form input[type=number]::-webkit-inner-spin-button,hx-form input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}hx-form input[type=number]{appearance:textfield}hx-form textarea{min-height:var(--hx-textarea-min-height, var(--hx-size-20, 5rem));resize:vertical}hx-form select{display:block;width:100%;border:var(--hx-border-width-thin, 1px) solid var(--hx-select-border-color, var(--hx-color-neutral-300, #ced4da));border-radius:var(--hx-select-border-radius, var(--hx-border-radius-md, .375rem));background-color:var(--hx-select-bg, var(--hx-color-neutral-0, #ffffff));padding:var(--hx-space-2, .5rem) var(--hx-space-8, 2rem) var(--hx-space-2, .5rem) var(--hx-space-3, .75rem);font-family:var(--hx-select-font-family, var(--hx-font-family-sans, sans-serif));font-size:var(--hx-font-size-md, 1rem);color:var(--hx-select-color, var(--hx-color-neutral-800, #212529));line-height:var(--hx-line-height-normal, 1.5);min-height:var(--hx-input-height-md, var(--hx-size-10, 2.5rem));cursor:pointer;transition:border-color var(--hx-transition-fast, .15s ease),box-shadow var(--hx-transition-fast, .15s ease);appearance:none;-webkit-appearance:none;-moz-appearance:none;background-image:url(\\\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath d='M1 1.5L6 6.5L11 1.5' stroke='%236c757d' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round' fill='none'/%3E%3C/svg%3E\\\");background-repeat:no-repeat;background-position:right var(--hx-space-3, .75rem) center;background-size:12px 8px}hx-form select:focus{outline:0;border-color:var(--hx-select-focus-ring-color, var(--hx-focus-ring-color, #2563eb));box-shadow:0 0 0 var(--hx-focus-ring-width, 2px) color-mix(in srgb,var(--hx-select-focus-ring-color, var(--hx-focus-ring-color, #2563eb)) calc(var(--hx-focus-ring-opacity, .25) * 100%),transparent)}hx-form select:disabled{opacity:var(--hx-opacity-disabled, .5);cursor:not-allowed;pointer-events:none}hx-form select[multiple]{min-height:var(--hx-size-20, 5rem);padding-right:var(--hx-space-3, .75rem);background-image:none}hx-form select[multiple] option{padding:var(--hx-space-1, .25rem) var(--hx-space-2, .5rem)}hx-form select::-ms-expand{display:none}hx-form :is(input[type=checkbox],input[type=radio]){appearance:none;-webkit-appearance:none;-moz-appearance:none;display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;margin:0;background-color:var(--hx-color-neutral-0, #ffffff);cursor:pointer;vertical-align:middle;transition:background-color var(--hx-transition-fast, .15s ease),border-color var(--hx-transition-fast, .15s ease),box-shadow var(--hx-transition-fast, .15s ease)}hx-form input[type=checkbox]{width:var(--hx-checkbox-size, var(--hx-size-5, 1.25rem));height:var(--hx-checkbox-size, var(--hx-size-5, 1.25rem));border:var(--hx-border-width-medium, 2px) solid var(--hx-checkbox-border-color, var(--hx-color-neutral-300, #ced4da));border-radius:var(--hx-checkbox-border-radius, var(--hx-border-radius-sm, .25rem))}hx-form input[type=checkbox]:checked{background-color:var(--hx-checkbox-checked-bg, var(--hx-color-primary-500, #2563eb));border-color:var(--hx-checkbox-checked-border-color, var(--hx-color-primary-500, #2563eb));background-image:url(\\\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none'%3E%3Cpath d='M3.5 8.5L6.5 11.5L12.5 4.5' stroke='%23ffffff' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E\\\");background-repeat:no-repeat;background-position:center;background-size:100%}hx-form input[type=checkbox]:indeterminate{background-color:var(--hx-checkbox-checked-bg, var(--hx-color-primary-500, #2563eb));border-color:var(--hx-checkbox-checked-border-color, var(--hx-color-primary-500, #2563eb));background-image:url(\\\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none'%3E%3Cpath d='M4 8H12' stroke='%23ffffff' stroke-width='2' stroke-linecap='round'/%3E%3C/svg%3E\\\");background-repeat:no-repeat;background-position:center;background-size:100%}hx-form input[type=checkbox]:focus-visible{outline:var(--hx-focus-ring-width, 2px) solid var(--hx-checkbox-focus-ring-color, var(--hx-focus-ring-color, #2563eb));outline-offset:var(--hx-focus-ring-offset, 2px)}hx-form input[type=checkbox]:hover:not(:disabled){border-color:var(--hx-color-primary-500, #2563eb)}hx-form input[type=checkbox]:checked:hover:not(:disabled){filter:brightness(var(--hx-filter-brightness-hover, .9))}hx-form :is(input[type=checkbox],input[type=radio]):disabled{opacity:var(--hx-opacity-disabled, .5);cursor:not-allowed;pointer-events:none}hx-form :is(.form-type-checkbox,.form-type-checkbox-toggle){display:flex;align-items:flex-start;gap:var(--hx-space-2, .5rem)}hx-form :is(.form-type-checkbox,.form-type-checkbox-toggle) label{font-size:var(--hx-font-size-sm, .875rem);font-weight:var(--hx-font-weight-medium, 500);color:var(--hx-checkbox-label-color, var(--hx-color-neutral-700, #343a40));line-height:var(--hx-line-height-normal, 1.5);cursor:pointer;user-select:none;-webkit-user-select:none}hx-form input[type=radio]{width:var(--hx-radio-size, var(--hx-size-5, 1.25rem));height:var(--hx-radio-size, var(--hx-size-5, 1.25rem));border:var(--hx-border-width-medium, 2px) solid var(--hx-radio-border-color, var(--hx-color-neutral-300, #ced4da));border-radius:var(--hx-border-radius-full, 9999px)}hx-form input[type=radio]:checked{border-color:var(--hx-radio-checked-border-color, var(--hx-color-primary-500, #2563eb));background-color:var(--hx-radio-checked-bg, var(--hx-color-primary-500, #2563eb));box-shadow:inset 0 0 0 calc(var(--hx-radio-size, var(--hx-size-5, 1.25rem)) * .3) var(--hx-radio-dot-color, var(--hx-color-neutral-0, #ffffff))}hx-form input[type=radio]:focus-visible{outline:var(--hx-focus-ring-width, 2px) solid var(--hx-radio-focus-ring-color, var(--hx-focus-ring-color, #2563eb));outline-offset:var(--hx-focus-ring-offset, 2px)}hx-form input[type=radio]:hover:not(:disabled):not(:checked){border-color:var(--hx-color-neutral-400, #adb5bd)}hx-form .form-type-radio{display:inline-flex;align-items:center;gap:var(--hx-space-2, .5rem)}hx-form .form-type-radio label{font-size:var(--hx-font-size-md, 1rem);color:var(--hx-radio-label-color, var(--hx-color-neutral-700, #343a40));line-height:var(--hx-line-height-normal, 1.5);cursor:pointer;user-select:none;-webkit-user-select:none}hx-form .form-radios{display:flex;flex-direction:column;gap:var(--hx-radio-group-gap, var(--hx-space-3, .75rem))}hx-form .form-radios--horizontal{flex-direction:row;flex-wrap:wrap}hx-form .form-type-switch{display:flex;flex-direction:column;gap:var(--hx-space-1, .25rem);font-family:var(--hx-font-family-sans, sans-serif)}hx-form .form-type-switch .switch__control-row{display:flex;align-items:center;gap:var(--hx-space-2, .5rem)}hx-form .form-type-switch input[type=checkbox]{position:relative;width:var(--hx-switch-track-width-md, var(--hx-size-10, 2.5rem));height:var(--hx-switch-track-height-md, var(--hx-size-5-5, 1.375rem));border:none;border-radius:var(--hx-border-radius-full, 9999px);background-color:var(--hx-switch-track-bg, var(--hx-color-neutral-300, #ced4da));transition:background-color var(--hx-transition-fast, .15s ease);background-image:none}hx-form .form-type-switch input[type=checkbox]:before{content:\\\"\\\";position:absolute;top:50%;left:var(--hx-switch-thumb-offset, var(--hx-space-0-5, .125rem));transform:translateY(-50%);width:var(--hx-switch-thumb-size-md, var(--hx-size-4-5, 1.125rem));height:var(--hx-switch-thumb-size-md, var(--hx-size-4-5, 1.125rem));border-radius:var(--hx-border-radius-full, 9999px);background-color:var(--hx-switch-thumb-bg, var(--hx-color-neutral-0, #ffffff));box-shadow:var(--hx-switch-thumb-shadow, var(--hx-shadow-sm, 0 1px 2px 0 rgb(0 0 0 / .05)));transition:transform var(--hx-transition-fast, .15s ease)}hx-form .form-type-switch input[type=checkbox]:checked{background-color:var(--hx-switch-track-checked-bg, var(--hx-color-primary-500, #2563eb));background-image:none}hx-form .form-type-switch input[type=checkbox]:checked:before{transform:translateY(-50%) translate(var(--hx-switch-thumb-size-md, var(--hx-size-4-5, 1.125rem)))}hx-form .form-type-switch input[type=checkbox]:focus-visible{outline:var(--hx-focus-ring-width, 2px) solid var(--hx-switch-focus-ring-color, var(--hx-focus-ring-color, #2563eb));outline-offset:var(--hx-focus-ring-offset, 2px)}hx-form .form-type-switch input[type=checkbox]:disabled{opacity:var(--hx-opacity-disabled, .5);cursor:not-allowed;pointer-events:none}hx-form .form-type-switch label{font-size:var(--hx-font-size-sm, .875rem);font-weight:var(--hx-font-weight-medium, 500);color:var(--hx-switch-label-color, var(--hx-color-neutral-700, #343a40));line-height:var(--hx-line-height-normal, 1.5);cursor:pointer;user-select:none;-webkit-user-select:none}hx-form .form-type-switch--sm input[type=checkbox]{width:var(--hx-switch-track-width-sm, var(--hx-size-8, 2rem));height:var(--hx-switch-track-height-sm, var(--hx-size-4-5, 1.125rem))}hx-form .form-type-switch--sm input[type=checkbox]:before{width:var(--hx-switch-thumb-size-sm, var(--hx-size-3-5, .875rem));height:var(--hx-switch-thumb-size-sm, var(--hx-size-3-5, .875rem))}hx-form .form-type-switch--sm input[type=checkbox]:checked:before{transform:translateY(-50%) translate(var(--hx-switch-thumb-size-sm, var(--hx-size-3-5, .875rem)))}hx-form .form-type-switch--lg input[type=checkbox]{width:var(--hx-switch-track-width-lg, var(--hx-size-12, 3rem));height:var(--hx-switch-track-height-lg, var(--hx-size-6-5, 1.625rem))}hx-form .form-type-switch--lg input[type=checkbox]:before{width:var(--hx-switch-thumb-size-lg, var(--hx-size-5-5, 1.375rem));height:var(--hx-switch-thumb-size-lg, var(--hx-size-5-5, 1.375rem))}hx-form .form-type-switch--lg input[type=checkbox]:checked:before{transform:translateY(-50%) translate(var(--hx-switch-thumb-size-lg, var(--hx-size-5-5, 1.375rem)))}hx-form form{display:flex;flex-direction:column;gap:var(--hx-form-gap, var(--hx-space-4, 1rem));font-family:var(--hx-input-font-family, var(--hx-font-family-sans, sans-serif))}hx-form fieldset{border:var(--hx-border-width-thin, 1px) solid var(--hx-color-neutral-200, #dee2e6);border-radius:var(--hx-border-radius-md, .375rem);padding:var(--hx-space-4, 1rem);margin:0;display:flex;flex-direction:column;gap:var(--hx-space-4, 1rem)}hx-form :is(legend,summary){font-size:var(--hx-font-size-sm, .875rem);font-weight:var(--hx-font-weight-semibold, 600);color:var(--hx-color-neutral-700, #343a40);line-height:var(--hx-line-height-normal, 1.5)}hx-form legend{display:flex;align-items:baseline;gap:var(--hx-space-1, .25rem);padding:0 var(--hx-space-1, .25rem)}hx-form details{border:var(--hx-border-width-thin, 1px) solid var(--hx-color-neutral-200, #dee2e6);border-radius:var(--hx-border-radius-md, .375rem);padding:var(--hx-space-4, 1rem);margin:0}hx-form summary{cursor:pointer;padding:var(--hx-space-1, .25rem) 0;user-select:none;-webkit-user-select:none}hx-form summary:focus-visible{outline:var(--hx-focus-ring-width, 2px) solid var(--hx-focus-ring-color, #2563eb);outline-offset:var(--hx-focus-ring-offset, 2px);border-radius:var(--hx-border-radius-sm, .25rem)}hx-form .form-actions{display:flex;align-items:center;gap:var(--hx-space-3, .75rem);padding-top:var(--hx-space-4, 1rem)}hx-form .form-actions--end{justify-content:flex-end}hx-form .form-actions--between{justify-content:space-between}hx-form .form-columns{display:grid;gap:var(--hx-space-4, 1rem)}hx-form .form-columns--2{grid-template-columns:repeat(2,1fr)}hx-form .form-columns--3{grid-template-columns:repeat(3,1fr)}hx-form .form-columns--4{grid-template-columns:repeat(4,1fr)}@media(max-width:640px){hx-form .form-columns--2,hx-form .form-columns--3,hx-form .form-columns--4{grid-template-columns:1fr}}hx-form .form-item--full{grid-column:1 / -1}hx-form .form-inline{display:flex;flex-wrap:wrap;align-items:flex-end;gap:var(--hx-space-3, .75rem)}hx-form .form-inline .form-item{flex:1;min-width:0}hx-form .form-inline .form-item+.form-item{margin-top:0}hx-form .form-divider{border:none;border-top:var(--hx-border-width-thin, 1px) solid var(--hx-color-neutral-200, #dee2e6);margin:var(--hx-space-2, .5rem) 0}hx-form :is(.form-item.error,.form-item.has-error,.form-item--error) label{color:var(--hx-input-error-color, var(--hx-color-error-500, #dc3545))}hx-form :is(.form-item.error,.form-item.has-error,.form-item--error) :is(input:is([type=text],[type=email],[type=password],[type=tel],[type=url],[type=search],[type=number]),textarea,select){border-color:var(--hx-input-error-color, var(--hx-color-error-500, #dc3545))}hx-form :is(.form-item.error,.form-item.has-error,.form-item--error) :is(input:is([type=text],[type=email],[type=password],[type=tel],[type=url],[type=search],[type=number]),textarea,select):focus{border-color:var(--hx-input-error-color, var(--hx-color-error-500, #dc3545));box-shadow:0 0 0 var(--hx-focus-ring-width, 2px) color-mix(in srgb,var(--hx-input-error-color, var(--hx-color-error-500, #dc3545)) calc(var(--hx-focus-ring-opacity, .25) * 100%),transparent)}hx-form :is(.form-item.error,.form-item.has-error,.form-item--error) input[type=checkbox]{border-color:var(--hx-checkbox-error-color, var(--hx-color-error-500, #dc3545))}hx-form :is(.form-item.error,.form-item.has-error,.form-item--error) input[type=checkbox]:checked{background-color:var(--hx-checkbox-error-color, var(--hx-color-error-500, #dc3545));border-color:var(--hx-checkbox-error-color, var(--hx-color-error-500, #dc3545))}hx-form :is(.form-item.error,.form-item.has-error,.form-item--error) input[type=radio]{border-color:var(--hx-color-error-500, #dc3545)}hx-form :is(.form-item__error-message,.form-item .error-message,.error-message,.form-item__success-message,.form-item .success-message,.success-message){font-size:var(--hx-font-size-xs, .75rem);line-height:var(--hx-line-height-normal, 1.5)}hx-form :is(.form-item__error-message,.form-item .error-message,.error-message){color:var(--hx-input-error-color, var(--hx-color-error-500, #dc3545))}hx-form :is(.form-item__success-message,.form-item .success-message,.success-message){color:var(--hx-color-success-500, #198754)}hx-form :is(.form-item.success,.form-item.has-success,.form-item--success) label{color:var(--hx-color-success-500, #198754)}hx-form :is(.form-item.success,.form-item.has-success,.form-item--success) :is(input:is([type=text],[type=email],[type=password],[type=tel],[type=url],[type=search],[type=number]),textarea,select){border-color:var(--hx-color-success-500, #198754)}hx-form :is(.form-item.success,.form-item.has-success,.form-item--success) :is(input:is([type=text],[type=email],[type=password],[type=tel],[type=url],[type=search],[type=number]),textarea,select):focus{border-color:var(--hx-color-success-500, #198754);box-shadow:0 0 0 var(--hx-focus-ring-width, 2px) color-mix(in srgb,var(--hx-color-success-500, #198754) calc(var(--hx-focus-ring-opacity, .25) * 100%),transparent)}hx-form :is(.messages--error,.messages--status,.messages--warning){border:var(--hx-border-width-thin, 1px) solid;border-radius:var(--hx-border-radius-md, .375rem);padding:var(--hx-space-3, .75rem) var(--hx-space-4, 1rem);font-size:var(--hx-font-size-sm, .875rem);line-height:var(--hx-line-height-normal, 1.5)}hx-form .messages--error{border-color:var(--hx-input-error-color, var(--hx-color-error-500, #dc3545));background-color:var(--hx-color-error-50, #fef2f2);color:var(--hx-input-error-color, var(--hx-color-error-500, #dc3545))}hx-form .messages--status{border-color:var(--hx-color-success-500, #198754);background-color:var(--hx-color-success-50, #f0fdf4);color:var(--hx-color-success-500, #198754)}hx-form .messages--warning{border-color:var(--hx-color-warning-500, #ffc107);background-color:var(--hx-color-warning-50, #fffbeb);color:var(--hx-color-warning-700, #92400e)}@media(forced-colors:active){hx-form :is(input:is([type=text],[type=email],[type=password],[type=tel],[type=url],[type=search],[type=number]),textarea,select):focus{outline:2px solid CanvasText;outline-offset:2px}hx-form .hx-form-error-summary{border-color:LinkText}}\\n\"","import formScopedCss from '../../styles/form/form.scoped.css?raw';\n\n/**\n * Scoped CSS for hx-form (applied to light DOM via CSSStyleSheet adoption).\n *\n * @media (forced-colors: active) rules are authored directly in\n * `../../styles/form/form.scoped.css` so they remain co-located with the\n * selectors they override. See the bottom of that file for the complete\n * forced-colors block.\n */\nexport const helixFormScopedCss = formScopedCss;\n","import { html, nothing } from 'lit';\nimport { customElement, property, state } from 'lit/decorators.js';\nimport { ifDefined } from 'lit/directives/if-defined.js';\nimport { HelixElement } from '../../base/index.js';\nimport { AdoptedStylesheetsController } from '../../controllers/adopted-stylesheets.js';\nimport { helixFormScopedCss } from './hx-form.styles.js';\n\n/**\n * A Light DOM form wrapper that styles native HTML form elements and\n * hx-* components with the design system's form styles.\n *\n * When `action` is set, renders a `<form>` wrapper around slotted content.\n * When no `action` is set (the Drupal pattern), renders only a `<slot>`\n * so Drupal can provide its own `<form>` tag.\n *\n * Uses adopted stylesheets to inject scoped CSS into the document without\n * Shadow DOM, keeping native form participation and Drupal compatibility.\n *\n * @summary Light DOM form wrapper with scoped styles for native and hx-* form elements.\n *\n * @tag hx-form\n *\n * @slot - Default slot for form fields and controls.\n *\n * @fires {CustomEvent<{valid: boolean, values: Record<string, FormDataEntryValue | FormDataEntryValue[]>, formData: FormData}>} hx-submit - Dispatched on valid client-side submit when no action is set.\n * @fires {CustomEvent<{errors: Array<{name: string, message: string}>}>} hx-invalid - Dispatched when validation fails on submit.\n * @fires {CustomEvent} hx-reset - Dispatched when the form is reset.\n *\n * @cssprop [--hx-form-gap=var(--hx-space-4)] - Gap between form fields.\n * @cssprop [--hx-form-max-width=none] - Maximum width of the form.\n * @cssprop [--hx-form-padding=0] - Internal padding of the form.\n */\n@customElement('hx-form')\nexport class HelixForm extends HelixElement {\n // ─── Light DOM ───\n\n override createRenderRoot(): HTMLElement {\n return this;\n }\n\n // ─── Adopted Stylesheets ───\n\n /**\n * Controller that injects scoped CSS into the document via adopted stylesheets for Light DOM styling.\n * @internal\n */\n private _styles = new AdoptedStylesheetsController(this, helixFormScopedCss, document);\n\n // ─── Internal State ───\n\n /**\n * Current list of validation errors rendered in the error summary and used to set aria-invalid on fields.\n * @internal\n */\n @state()\n private _validationErrors: Array<{ name: string; message: string }> = [];\n\n // ─── Lifecycle ───\n\n override connectedCallback(): void {\n super.connectedCallback();\n this.addEventListener('submit', this._handleSubmit);\n this.addEventListener('reset', this._handleReset);\n }\n\n override disconnectedCallback(): void {\n super.disconnectedCallback();\n this.removeEventListener('submit', this._handleSubmit);\n this.removeEventListener('reset', this._handleReset);\n }\n\n // ─── Properties ───\n\n /**\n * The URL to submit the form to. When empty, the form handles\n * submission client-side only and dispatches `hx-submit`.\n * @attr action\n */\n @property({ type: String })\n action = '';\n\n /**\n * The HTTP method used when submitting the form.\n * @attr method\n */\n @property({ type: String })\n method: 'get' | 'post' = 'post';\n\n /**\n * When true, disables the browser's built-in constraint validation\n * on form submission.\n * @attr novalidate\n */\n @property({ type: Boolean })\n novalidate = false;\n\n /**\n * Identifies the form for scripting and form discovery.\n * @attr name\n */\n @property({ type: String })\n name = '';\n\n /**\n * The encoding type for form submission. Only used when `action` is set.\n * Use `multipart/form-data` for forms with file uploads.\n * @attr enctype\n */\n @property({ type: String })\n enctype: 'application/x-www-form-urlencoded' | 'multipart/form-data' | 'text/plain' =\n 'application/x-www-form-urlencoded';\n\n // ─── Public Methods ───\n\n /**\n * Checks the validity of all child form elements without showing\n * validation UI. Returns `true` if all elements are valid.\n */\n checkValidity(): boolean {\n const formElements = this._getAllValidatableElements();\n return formElements.every((el) => {\n if ('checkValidity' in el && typeof el.checkValidity === 'function') {\n return (el as HTMLInputElement).checkValidity();\n }\n return true;\n });\n }\n\n /**\n * Checks validity and triggers the browser's constraint validation UI\n * on each invalid element. Returns `true` if all elements are valid.\n */\n reportValidity(): boolean {\n const formElements = this._getAllValidatableElements();\n let allValid = true;\n for (const el of formElements) {\n if ('reportValidity' in el && typeof el.reportValidity === 'function') {\n if (!(el as HTMLInputElement).reportValidity()) {\n allValid = false;\n }\n }\n }\n return allValid;\n }\n\n /**\n * Collects form data from all child form elements (native and hx-*).\n * Returns a `FormData` object.\n */\n getFormData(): FormData {\n // If there is a native <form> child, use it directly\n const formEl = this.querySelector('form');\n if (formEl) {\n return new FormData(formEl);\n }\n\n // Otherwise, manually collect from all named inputs\n const formData = new FormData();\n const elements = this.getNativeFormElements();\n for (const el of elements) {\n const input = el as HTMLInputElement | HTMLSelectElement | HTMLTextAreaElement;\n if (!input.name) continue;\n\n if (input instanceof HTMLInputElement) {\n if (input.type === 'checkbox' || input.type === 'radio') {\n if (input.checked) {\n formData.append(input.name, input.value || 'on');\n }\n } else {\n formData.append(input.name, input.value);\n }\n } else {\n formData.append(input.name, input.value);\n }\n }\n\n return formData;\n }\n\n /**\n * Returns all child hx-* form components that implement the form\n * component contract (hx-text-input, hx-select, hx-checkbox, hx-textarea,\n * hx-radio-group, hx-switch).\n *\n * Note: This uses a hardcoded allowlist. When a new hx-* form component\n * is added, update this selector to include it.\n */\n getFormElements(): HTMLElement[] {\n return Array.from(\n this.querySelectorAll<HTMLElement>(\n 'hx-text-input, hx-select, hx-checkbox, hx-textarea, hx-radio-group, hx-switch',\n ),\n );\n }\n\n /**\n * Returns all native form elements (input, select, textarea, button)\n * found within this component's light DOM.\n */\n getNativeFormElements(): Array<\n HTMLInputElement | HTMLSelectElement | HTMLTextAreaElement | HTMLButtonElement\n > {\n return Array.from(\n this.querySelectorAll<\n HTMLInputElement | HTMLSelectElement | HTMLTextAreaElement | HTMLButtonElement\n >('input, select, textarea, button'),\n );\n }\n\n /**\n * Programmatically sets server-side validation errors on the form.\n * Renders an error summary and sets `aria-invalid=\"true\"` on named fields.\n *\n * Useful for surfacing Drupal server-side validation responses.\n *\n * @param errors - Array of `{name, message}` pairs matching field `name` attributes.\n */\n setErrors(errors: Array<{ name: string; message: string }>): void {\n this._validationErrors = errors;\n this._applyAriaInvalidFromErrors(errors);\n }\n\n /**\n * Programmatically sets a single field error. Merges with any existing errors.\n *\n * @param name - The `name` attribute of the field.\n * @param message - The error message to display.\n */\n setFieldError(name: string, message: string): void {\n const existing = this._validationErrors.filter((e) => e.name !== name);\n this.setErrors([...existing, { name, message }]);\n }\n\n /**\n * Clears all validation errors from the error summary and removes\n * `aria-invalid` from all fields.\n */\n clearErrors(): void {\n this._clearAriaInvalid();\n this._validationErrors = [];\n }\n\n // ─── Private Helpers ───\n\n /**\n * Returns all elements that support constraint validation, including\n * both native form elements and hx-* components with `checkValidity`.\n * @internal\n */\n private _getAllValidatableElements(): HTMLElement[] {\n const native = Array.from(this.querySelectorAll<HTMLElement>('input, select, textarea'));\n const wcElements = this.getFormElements().filter(\n (el): el is HTMLElement & { checkValidity: () => boolean } =>\n 'checkValidity' in el &&\n typeof (el as { checkValidity: unknown }).checkValidity === 'function',\n );\n return [...native, ...wcElements];\n }\n\n /**\n * Sets `aria-invalid=\"true\"` on fields with errors, removes it from valid fields.\n * @internal\n */\n private _applyAriaInvalidFromErrors(errors: Array<{ name: string; message: string }>): void {\n const errorNames = new Set(errors.map((e) => e.name));\n const allElements = this._getAllValidatableElements();\n for (const el of allElements) {\n const named = el as HTMLElement & { name?: string };\n const fieldName = named.name ?? el.tagName.toLowerCase();\n if (errorNames.has(fieldName)) {\n el.setAttribute('aria-invalid', 'true');\n } else {\n el.removeAttribute('aria-invalid');\n }\n }\n }\n\n /**\n * Sets `aria-invalid` based on native constraint validation state.\n * @internal\n */\n private _applyAriaInvalidFromValidity(): void {\n const allElements = this._getAllValidatableElements();\n for (const el of allElements) {\n if ('validity' in el) {\n const validatable = el as HTMLInputElement;\n if (!validatable.validity.valid) {\n el.setAttribute('aria-invalid', 'true');\n } else {\n el.removeAttribute('aria-invalid');\n }\n }\n }\n }\n\n /**\n * Removes `aria-invalid` from all validatable elements.\n * @internal\n */\n private _clearAriaInvalid(): void {\n const allElements = this._getAllValidatableElements();\n for (const el of allElements) {\n el.removeAttribute('aria-invalid');\n }\n }\n\n // ─── Event Handling ───\n\n /**\n * Handles native form submit events, intercepting for client-side validation and hx-submit dispatch.\n * @internal\n */\n private _handleSubmit = (e: Event): void => {\n // If there is an action, let native form submission happen\n if (this.action) {\n return;\n }\n\n // Client-side only: prevent default and dispatch hx-submit or hx-invalid\n e.preventDefault();\n\n if (!this.novalidate && !this.checkValidity()) {\n const errors = this._collectValidationErrors();\n this._validationErrors = errors;\n this._applyAriaInvalidFromValidity();\n\n // Move focus to the error summary after it renders so screen readers announce it\n // immediately. tabindex=\"-1\" on the summary allows programmatic focus (WCAG 2.4.3).\n void this.updateComplete.then(() => {\n const summary = this.querySelector<HTMLElement>('.hx-form-error-summary');\n summary?.focus();\n });\n\n /**\n * Dispatched when validation fails on submit.\n * @event hx-invalid\n */\n this.dispatchEvent(\n new CustomEvent<{ errors: Array<{ name: string; message: string }> }>('hx-invalid', {\n bubbles: true,\n composed: true,\n detail: { errors },\n }),\n );\n return;\n }\n\n // Clear any previous errors on successful submit\n this._validationErrors = [];\n this._clearAriaInvalid();\n\n const formData = this.getFormData();\n const values: Record<string, FormDataEntryValue | FormDataEntryValue[]> = {};\n for (const key of new Set(formData.keys())) {\n const all = formData.getAll(key);\n if (all.length === 1 && all[0] !== undefined) {\n values[key] = all[0];\n } else {\n values[key] = all;\n }\n }\n\n /**\n * Dispatched on valid client-side submit.\n * @event hx-submit\n */\n this.dispatchEvent(\n new CustomEvent<{\n valid: boolean;\n values: Record<string, FormDataEntryValue | FormDataEntryValue[]>;\n formData: FormData;\n }>('hx-submit', {\n bubbles: true,\n composed: true,\n detail: { valid: true, values, formData },\n }),\n );\n };\n\n /**\n * Handles native form reset events, clearing validation errors and dispatching hx-reset.\n * @internal\n */\n private _handleReset = (): void => {\n this._validationErrors = [];\n this._clearAriaInvalid();\n\n /**\n * Dispatched when the form is reset.\n * @event hx-reset\n */\n this.dispatchEvent(\n new CustomEvent<void>('hx-reset', {\n bubbles: true,\n composed: true,\n }),\n );\n };\n\n /**\n * Collects constraint validation errors from all validatable elements after a failed submit attempt.\n * @internal\n */\n private _collectValidationErrors(): Array<{ name: string; message: string }> {\n const errors: Array<{ name: string; message: string }> = [];\n const elements = this._getAllValidatableElements();\n\n for (const el of elements) {\n if ('validity' in el && 'validationMessage' in el) {\n const validatable = el as HTMLInputElement;\n if (!validatable.validity.valid) {\n errors.push({\n name: validatable.name || validatable.tagName.toLowerCase(),\n message: validatable.validationMessage,\n });\n }\n }\n }\n\n return errors;\n }\n\n // ─── Render ───\n\n override render() {\n const errorSummary =\n this._validationErrors.length > 0\n ? html`\n <div class=\"hx-form-error-summary\" role=\"alert\" aria-atomic=\"true\" tabindex=\"-1\">\n <ul>\n ${this._validationErrors.map(\n (error) => html`<li>${error.message || error.name}</li>`,\n )}\n </ul>\n </div>\n `\n : nothing;\n\n if (this.action) {\n return html`\n ${errorSummary}\n <form\n action=${this.action}\n method=${this.method}\n enctype=${this.enctype}\n name=${ifDefined(this.name || undefined)}\n ?novalidate=${this.novalidate}\n >\n <slot></slot>\n </form>\n `;\n }\n\n return html`${errorSummary}<slot></slot>`;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'hx-form': HelixForm;\n }\n}\n"],"names":["formScopedCss","helixFormScopedCss","HelixForm","HelixElement","AdoptedStylesheetsController","errors","summary","formData","values","key","all","el","formElements","allValid","formEl","elements","input","name","message","existing","e","native","wcElements","errorNames","allElements","fieldName","validatable","errorSummary","html","error","nothing","ifDefined","__decorateClass","state","property","customElement"],"mappings":";;;;;AAAA,MAAAA,IAAe;AAAA,GCUFC,IAAqBD;;;;;;ACuB3B,IAAME,IAAN,cAAwBC,EAAa;AAAA,EAArC,cAAA;AAAA,UAAA,GAAA,SAAA,GAaL,KAAQ,UAAU,IAAIC,EAA6B,MAAMH,GAAoB,QAAQ,GASrF,KAAQ,oBAA8D,CAAA,GAwBtE,KAAA,SAAS,IAOT,KAAA,SAAyB,QAQzB,KAAA,aAAa,IAOb,KAAA,OAAO,IAQP,KAAA,UACE,qCA0MF,KAAQ,gBAAgB,CAAC,MAAmB;AAE1C,UAAI,KAAK;AACP;AAMF,UAFA,EAAE,eAAA,GAEE,CAAC,KAAK,cAAc,CAAC,KAAK,iBAAiB;AAC7C,cAAMI,IAAS,KAAK,yBAAA;AACpB,aAAK,oBAAoBA,GACzB,KAAK,8BAAA,GAIA,KAAK,eAAe,KAAK,MAAM;AAClC,gBAAMC,IAAU,KAAK,cAA2B,wBAAwB;AACxE,UAAAA,KAAA,QAAAA,EAAS;AAAA,QACX,CAAC,GAMD,KAAK;AAAA,UACH,IAAI,YAAkE,cAAc;AAAA,YAClF,SAAS;AAAA,YACT,UAAU;AAAA,YACV,QAAQ,EAAE,QAAAD,EAAA;AAAA,UAAO,CAClB;AAAA,QAAA;AAEH;AAAA,MACF;AAGA,WAAK,oBAAoB,CAAA,GACzB,KAAK,kBAAA;AAEL,YAAME,IAAW,KAAK,YAAA,GAChBC,IAAoE,CAAA;AAC1E,iBAAWC,KAAO,IAAI,IAAIF,EAAS,KAAA,CAAM,GAAG;AAC1C,cAAMG,IAAMH,EAAS,OAAOE,CAAG;AAC/B,QAAIC,EAAI,WAAW,KAAKA,EAAI,CAAC,MAAM,SACjCF,EAAOC,CAAG,IAAIC,EAAI,CAAC,IAEnBF,EAAOC,CAAG,IAAIC;AAAA,MAElB;AAMA,WAAK;AAAA,QACH,IAAI,YAID,aAAa;AAAA,UACd,SAAS;AAAA,UACT,UAAU;AAAA,UACV,QAAQ,EAAE,OAAO,IAAM,QAAAF,GAAQ,UAAAD,EAAA;AAAA,QAAS,CACzC;AAAA,MAAA;AAAA,IAEL,GAMA,KAAQ,eAAe,MAAY;AACjC,WAAK,oBAAoB,CAAA,GACzB,KAAK,kBAAA,GAML,KAAK;AAAA,QACH,IAAI,YAAkB,YAAY;AAAA,UAChC,SAAS;AAAA,UACT,UAAU;AAAA,QAAA,CACX;AAAA,MAAA;AAAA,IAEL;AAAA,EAAA;AAAA;AAAA,EAzWS,mBAAgC;AACvC,WAAO;AAAA,EACT;AAAA;AAAA,EAqBS,oBAA0B;AACjC,UAAM,kBAAA,GACN,KAAK,iBAAiB,UAAU,KAAK,aAAa,GAClD,KAAK,iBAAiB,SAAS,KAAK,YAAY;AAAA,EAClD;AAAA,EAES,uBAA6B;AACpC,UAAM,qBAAA,GACN,KAAK,oBAAoB,UAAU,KAAK,aAAa,GACrD,KAAK,oBAAoB,SAAS,KAAK,YAAY;AAAA,EACrD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAiDA,gBAAyB;AAEvB,WADqB,KAAK,2BAAA,EACN,MAAM,CAACI,MACrB,mBAAmBA,KAAM,OAAOA,EAAG,iBAAkB,aAC/CA,EAAwB,cAAA,IAE3B,EACR;AAAA,EACH;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,iBAA0B;AACxB,UAAMC,IAAe,KAAK,2BAAA;AAC1B,QAAIC,IAAW;AACf,eAAWF,KAAMC;AACf,MAAI,oBAAoBD,KAAM,OAAOA,EAAG,kBAAmB,eACnDA,EAAwB,qBAC5BE,IAAW;AAIjB,WAAOA;AAAA,EACT;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,cAAwB;AAEtB,UAAMC,IAAS,KAAK,cAAc,MAAM;AACxC,QAAIA;AACF,aAAO,IAAI,SAASA,CAAM;AAI5B,UAAMP,IAAW,IAAI,SAAA,GACfQ,IAAW,KAAK,sBAAA;AACtB,eAAWJ,KAAMI,GAAU;AACzB,YAAMC,IAAQL;AACd,MAAKK,EAAM,SAEPA,aAAiB,qBACfA,EAAM,SAAS,cAAcA,EAAM,SAAS,WAC1CA,EAAM,WACRT,EAAS,OAAOS,EAAM,MAAMA,EAAM,SAAS,IAAI,IAMnDT,EAAS,OAAOS,EAAM,MAAMA,EAAM,KAAK;AAAA,IAE3C;AAEA,WAAOT;AAAA,EACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,kBAAiC;AAC/B,WAAO,MAAM;AAAA,MACX,KAAK;AAAA,QACH;AAAA,MAAA;AAAA,IACF;AAAA,EAEJ;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,wBAEE;AACA,WAAO,MAAM;AAAA,MACX,KAAK,iBAEH,iCAAiC;AAAA,IAAA;AAAA,EAEvC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,UAAUF,GAAwD;AAChE,SAAK,oBAAoBA,GACzB,KAAK,4BAA4BA,CAAM;AAAA,EACzC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,cAAcY,GAAcC,GAAuB;AACjD,UAAMC,IAAW,KAAK,kBAAkB,OAAO,CAACC,MAAMA,EAAE,SAASH,CAAI;AACrE,SAAK,UAAU,CAAC,GAAGE,GAAU,EAAE,MAAAF,GAAM,SAAAC,EAAA,CAAS,CAAC;AAAA,EACjD;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,cAAoB;AAClB,SAAK,kBAAA,GACL,KAAK,oBAAoB,CAAA;AAAA,EAC3B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASQ,6BAA4C;AAClD,UAAMG,IAAS,MAAM,KAAK,KAAK,iBAA8B,yBAAyB,CAAC,GACjFC,IAAa,KAAK,gBAAA,EAAkB;AAAA,MACxC,CAACX,MACC,mBAAmBA,KACnB,OAAQA,EAAkC,iBAAkB;AAAA,IAAA;AAEhE,WAAO,CAAC,GAAGU,GAAQ,GAAGC,CAAU;AAAA,EAClC;AAAA;AAAA;AAAA;AAAA;AAAA,EAMQ,4BAA4BjB,GAAwD;AAC1F,UAAMkB,IAAa,IAAI,IAAIlB,EAAO,IAAI,CAACe,MAAMA,EAAE,IAAI,CAAC,GAC9CI,IAAc,KAAK,2BAAA;AACzB,eAAWb,KAAMa,GAAa;AAE5B,YAAMC,IADQd,EACU,QAAQA,EAAG,QAAQ,YAAA;AAC3C,MAAIY,EAAW,IAAIE,CAAS,IAC1Bd,EAAG,aAAa,gBAAgB,MAAM,IAEtCA,EAAG,gBAAgB,cAAc;AAAA,IAErC;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA,EAMQ,gCAAsC;AAC5C,UAAMa,IAAc,KAAK,2BAAA;AACzB,eAAWb,KAAMa;AACf,MAAI,cAAcb,MACIA,EACH,SAAS,QAGxBA,EAAG,gBAAgB,cAAc,IAFjCA,EAAG,aAAa,gBAAgB,MAAM;AAAA,EAM9C;AAAA;AAAA;AAAA;AAAA;AAAA,EAMQ,oBAA0B;AAChC,UAAMa,IAAc,KAAK,2BAAA;AACzB,eAAWb,KAAMa;AACf,MAAAb,EAAG,gBAAgB,cAAc;AAAA,EAErC;AAAA;AAAA;AAAA;AAAA;AAAA,EAmGQ,2BAAqE;AAC3E,UAAMN,IAAmD,CAAA,GACnDU,IAAW,KAAK,2BAAA;AAEtB,eAAWJ,KAAMI;AACf,UAAI,cAAcJ,KAAM,uBAAuBA,GAAI;AACjD,cAAMe,IAAcf;AACpB,QAAKe,EAAY,SAAS,SACxBrB,EAAO,KAAK;AAAA,UACV,MAAMqB,EAAY,QAAQA,EAAY,QAAQ,YAAA;AAAA,UAC9C,SAASA,EAAY;AAAA,QAAA,CACtB;AAAA,MAEL;AAGF,WAAOrB;AAAA,EACT;AAAA;AAAA,EAIS,SAAS;AAChB,UAAMsB,IACJ,KAAK,kBAAkB,SAAS,IAC5BC;AAAA;AAAA;AAAA,kBAGQ,KAAK,kBAAkB;AAAA,MACvB,CAACC,MAAUD,QAAWC,EAAM,WAAWA,EAAM,IAAI;AAAA,IAAA,CAClD;AAAA;AAAA;AAAA,cAIPC;AAEN,WAAI,KAAK,SACAF;AAAA,UACHD,CAAY;AAAA;AAAA,mBAEH,KAAK,MAAM;AAAA,mBACX,KAAK,MAAM;AAAA,oBACV,KAAK,OAAO;AAAA,iBACfI,EAAU,KAAK,QAAQ,MAAS,CAAC;AAAA,wBAC1B,KAAK,UAAU;AAAA;AAAA;AAAA;AAAA,UAO5BH,IAAOD,CAAY;AAAA,EAC5B;AACF;AAhZUK,EAAA;AAAA,EADPC,EAAA;AAAM,GArBI/B,EAsBH,WAAA,qBAAA,CAAA;AAwBR8B,EAAA;AAAA,EADCE,EAAS,EAAE,MAAM,OAAA,CAAQ;AAAA,GA7CfhC,EA8CX,WAAA,UAAA,CAAA;AAOA8B,EAAA;AAAA,EADCE,EAAS,EAAE,MAAM,OAAA,CAAQ;AAAA,GApDfhC,EAqDX,WAAA,UAAA,CAAA;AAQA8B,EAAA;AAAA,EADCE,EAAS,EAAE,MAAM,QAAA,CAAS;AAAA,GA5DhBhC,EA6DX,WAAA,cAAA,CAAA;AAOA8B,EAAA;AAAA,EADCE,EAAS,EAAE,MAAM,OAAA,CAAQ;AAAA,GAnEfhC,EAoEX,WAAA,QAAA,CAAA;AAQA8B,EAAA;AAAA,EADCE,EAAS,EAAE,MAAM,OAAA,CAAQ;AAAA,GA3EfhC,EA4EX,WAAA,WAAA,CAAA;AA5EWA,IAAN8B,EAAA;AAAA,EADNG,EAAc,SAAS;AAAA,GACXjC,CAAA;"}
@@ -1,7 +1,7 @@
1
- import { css as _, LitElement as D, html as M } from "lit";
2
- import "./document-token-adoption-DuYNKd4k.js";
1
+ import { css as M, html as _ } from "lit";
3
2
  import { property as h, customElement as w } from "lit/decorators.js";
4
- const N = _`
3
+ import { H as D } from "./helix-element-BNEYeiys.js";
4
+ const N = M`
5
5
  :host {
6
6
  display: inline;
7
7
  }
@@ -11,6 +11,17 @@ const N = _`
11
11
  font: inherit;
12
12
  color: inherit;
13
13
  }
14
+
15
+ /* ─── High Contrast Mode (forced-colors) ─── */
16
+
17
+ /* hx-format-date renders text-only content using color: inherit from its parent.
18
+ forced-color-adjust: auto (default) is sufficient — the browser maps
19
+ inherited text color to CanvasText automatically in forced-colors mode. */
20
+ @media (forced-colors: active) {
21
+ :host {
22
+ forced-color-adjust: auto;
23
+ }
24
+ }
14
25
  `;
15
26
  var T = Object.defineProperty, $ = Object.getOwnPropertyDescriptor, n = (o, t, i, e) => {
16
27
  for (var a = e > 1 ? void 0 : e ? $(t, i) : t, s = o.length - 1, u; s >= 0; s--)
@@ -78,15 +89,15 @@ let r = class extends D {
78
89
  parseInt(m.hour === "24" ? "0" : m.hour ?? "0"),
79
90
  parseInt(m.minute ?? "0"),
80
91
  parseInt(m.second ?? "0")
81
- ), u = Math.round((s(e) - s(a)) / 6e4), y = u >= 0 ? "+" : "-", l = Math.abs(u), d = String(Math.floor(l / 60)).padStart(2, "0"), v = String(l % 60).padStart(2, "0"), p = e.hour === "24" ? "00" : e.hour ?? "00";
82
- return `${e.year}-${e.month}-${e.day}T${p}:${e.minute}:${e.second}${y}${d}:${v}`;
92
+ ), u = Math.round((s(e) - s(a)) / 6e4), l = u >= 0 ? "+" : "-", y = Math.abs(u), d = String(Math.floor(y / 60)).padStart(2, "0"), v = String(y % 60).padStart(2, "0"), p = e.hour === "24" ? "00" : e.hour ?? "00";
93
+ return `${e.year}-${e.month}-${e.day}T${p}:${e.minute}:${e.second}${l}${d}:${v}`;
83
94
  } catch {
84
95
  return o.toISOString();
85
96
  }
86
97
  }
87
98
  /** @internal */
88
99
  _formatRelative(o) {
89
- const t = /* @__PURE__ */ new Date(), i = o.getTime() - t.getTime(), e = Math.round(i / 1e3), a = Math.abs(e), s = Math.round(e / 60), u = Math.abs(s), y = Math.round(e / 3600), l = Math.abs(y), d = Math.round(e / 86400), v = Math.abs(d), p = Math.round(d / 30), m = Math.abs(p), g = Math.round(d / 365), f = this._getLocale(), b = `${f}|${this.numeric}`;
100
+ const t = /* @__PURE__ */ new Date(), i = o.getTime() - t.getTime(), e = Math.round(i / 1e3), a = Math.abs(e), s = Math.round(e / 60), u = Math.abs(s), l = Math.round(e / 3600), y = Math.abs(l), d = Math.round(e / 86400), v = Math.abs(d), p = Math.round(d / 30), m = Math.abs(p), g = Math.round(d / 365), f = this._getLocale(), b = `${f}|${this.numeric}`;
90
101
  let c = r._rtfCache.get(b);
91
102
  if (!c)
92
103
  try {
@@ -95,7 +106,7 @@ let r = class extends D {
95
106
  return "";
96
107
  }
97
108
  try {
98
- return a < 60 ? c.format(e, "second") : u < 60 ? c.format(s, "minute") : l < 24 ? c.format(y, "hour") : v < 30 ? c.format(d, "day") : m < 12 ? c.format(p, "month") : c.format(g, "year");
109
+ return a < 60 ? c.format(e, "second") : u < 60 ? c.format(s, "minute") : y < 24 ? c.format(l, "hour") : v < 30 ? c.format(d, "day") : m < 12 ? c.format(p, "month") : c.format(g, "year");
99
110
  } catch {
100
111
  return "";
101
112
  }
@@ -123,7 +134,7 @@ let r = class extends D {
123
134
  // ─── Render ───
124
135
  render() {
125
136
  const o = this._getDate(), t = this._getDatetimeAttr(o), i = this.relative ? this._formatRelative(o) : this._formatAbsolute(o);
126
- return M`<time part="base" datetime=${t}>${i}</time>`;
137
+ return _`<time part="base" datetime=${t}>${i}</time>`;
127
138
  }
128
139
  };
129
140
  r.styles = [N];
@@ -177,4 +188,4 @@ r = n([
177
188
  export {
178
189
  r as H
179
190
  };
180
- //# sourceMappingURL=hx-format-date-B7L9odbA.js.map
191
+ //# sourceMappingURL=hx-format-date-CKnlQOmV.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hx-format-date-CKnlQOmV.js","sources":["../../src/components/hx-format-date/hx-format-date.styles.ts","../../src/components/hx-format-date/hx-format-date.ts"],"sourcesContent":["import { css } from 'lit';\n\nexport const helixFormatDateStyles = css`\n :host {\n display: inline;\n }\n\n [part='base'] {\n display: inline;\n font: inherit;\n color: inherit;\n }\n\n /* ─── High Contrast Mode (forced-colors) ─── */\n\n /* hx-format-date renders text-only content using color: inherit from its parent.\n forced-color-adjust: auto (default) is sufficient — the browser maps\n inherited text color to CanvasText automatically in forced-colors mode. */\n @media (forced-colors: active) {\n :host {\n forced-color-adjust: auto;\n }\n }\n`;\n","import { html } from 'lit';\nimport '../../utilities/document-token-adoption.js';\nimport { customElement, property } from 'lit/decorators.js';\nimport { HelixElement } from '../../base/index.js';\nimport { helixFormatDateStyles } from './hx-format-date.styles.js';\n\n/**\n * Formats and displays a date/time value using the browser's `Intl.DateTimeFormat`\n * (or `Intl.RelativeTimeFormat` when `relative` is set). Renders as an inline\n * `<time>` element — machine-readable via `datetime`, human-readable via formatted text.\n *\n * No external dependencies. Uses native Intl APIs only.\n *\n * @summary Inline date/time formatter using Intl APIs with semantic `<time>` output.\n *\n * @tag hx-format-date\n *\n * @csspart base - The inner `<time>` element.\n */\n@customElement('hx-format-date')\nexport class HelixFormatDate extends HelixElement {\n static override styles = [helixFormatDateStyles];\n\n // ─── Intl formatter caches (keyed by locale+options fingerprint) ───\n /** @internal */\n private static _dtfCache = new Map<string, Intl.DateTimeFormat>();\n /** @internal */\n private static _rtfCache = new Map<string, Intl.RelativeTimeFormat>();\n\n /**\n * The date/time value to format. Accepts an ISO string, a Unix timestamp (ms), or\n * a `Date` object. Defaults to the current date/time when empty.\n * @attr date\n */\n @property()\n date: string | number | Date = '';\n\n /**\n * BCP 47 locale tag used for formatting (e.g. `\"en-US\"`, `\"de\"`, `\"ja\"`).\n * Defaults to `document.documentElement.lang`, then `navigator.language`.\n * @attr lang\n */\n @property()\n override lang = '';\n\n /**\n * Month display format.\n * @attr month\n */\n @property()\n month: 'narrow' | 'short' | 'long' | 'numeric' | '2-digit' | undefined = undefined;\n\n /**\n * Year display format.\n * @attr year\n */\n @property()\n year: 'numeric' | '2-digit' | undefined = undefined;\n\n /**\n * Day display format.\n * @attr day\n */\n @property()\n day: 'numeric' | '2-digit' | undefined = undefined;\n\n /**\n * Weekday display format.\n * @attr weekday\n */\n @property()\n weekday: 'narrow' | 'short' | 'long' | undefined = undefined;\n\n /**\n * Hour display format.\n * @attr hour\n */\n @property()\n hour: 'numeric' | '2-digit' | undefined = undefined;\n\n /**\n * Minute display format.\n * @attr minute\n */\n @property()\n minute: 'numeric' | '2-digit' | undefined = undefined;\n\n /**\n * Second display format.\n * @attr second\n */\n @property()\n second: 'numeric' | '2-digit' | undefined = undefined;\n\n /**\n * Time zone name display format. Accepts all values supported by\n * `Intl.DateTimeFormatOptions.timeZoneName` including `'short'`, `'long'`,\n * `'shortOffset'`, `'longOffset'`, `'shortGeneric'`, and `'longGeneric'`.\n * @attr time-zone-name\n */\n @property({ attribute: 'time-zone-name' })\n timeZoneName: Intl.DateTimeFormatOptions['timeZoneName'] = undefined;\n\n /**\n * IANA time zone identifier (e.g. `\"America/New_York\"`, `\"UTC\"`).\n * @attr time-zone\n */\n @property({ attribute: 'time-zone' })\n timeZone: string | undefined = undefined;\n\n /**\n * Whether to use 12-hour or 24-hour clock. `\"auto\"` defers to locale default.\n * @attr hour-format\n */\n @property({ attribute: 'hour-format' })\n hourFormat: 'auto' | '12' | '24' = 'auto';\n\n /**\n * Controls whether `Intl.RelativeTimeFormat` always shows numeric output\n * (`\"always\"`) or uses natural language when possible (`\"auto\"`, e.g. \"yesterday\").\n * Only used when `relative` is true.\n * @attr numeric\n */\n @property()\n numeric: 'always' | 'auto' = 'auto';\n\n /**\n * When true, displays a relative time string such as \"2 hours ago\" or \"in 3 days\"\n * using `Intl.RelativeTimeFormat`.\n *\n * **Important:** The relative time string is computed once at render time and does\n * not auto-update. If the displayed text must stay current (e.g. a live \"X minutes\n * ago\" counter), the consuming component must re-set the `date` property on its own\n * interval to trigger a re-render.\n * @attr relative\n */\n @property({ type: Boolean })\n relative = false;\n\n // ─── Private helpers ───\n\n /** @internal */\n private _getDate(): Date {\n const val = this.date;\n if (val === '') return new Date();\n if (val instanceof Date) {\n return isNaN(val.getTime()) ? new Date() : val;\n }\n if (typeof val === 'number') {\n const d = new Date(val);\n return isNaN(d.getTime()) ? new Date() : d;\n }\n // Numeric strings (e.g. Unix timestamps set via HTML attribute) must be\n // converted to a number before passing to Date — new Date(\"1718462400000\")\n // returns Invalid Date in most JS engines.\n const asNumber = Number(val);\n if (!isNaN(asNumber)) {\n const d = new Date(asNumber);\n return isNaN(d.getTime()) ? new Date() : d;\n }\n const parsed = new Date(val);\n return isNaN(parsed.getTime()) ? new Date() : parsed;\n }\n\n /** @internal */\n private _getLocale(): string {\n if (this.lang) return this.lang;\n const docLang = typeof document !== 'undefined' ? document.documentElement.lang : '';\n const navLang = typeof navigator !== 'undefined' ? navigator.language : '';\n return docLang || navLang || 'en';\n }\n\n /** @internal */\n private _getHour12(): boolean | undefined {\n if (this.hourFormat === '12') return true;\n if (this.hourFormat === '24') return false;\n return undefined;\n }\n\n /**\n * Returns the `datetime` attribute value. When `timeZone` is set, returns a\n * timezone-offset ISO string (e.g. `2024-09-20T05:00:00-04:00`) so that\n * assistive technology reads the same local time as the visual display.\n */\n /** @internal */\n private _getDatetimeAttr(date: Date): string {\n if (!this.timeZone) return date.toISOString();\n try {\n const fmtOpts: Intl.DateTimeFormatOptions = {\n timeZone: this.timeZone,\n year: 'numeric',\n month: '2-digit',\n day: '2-digit',\n hour: '2-digit',\n minute: '2-digit',\n second: '2-digit',\n hour12: false,\n };\n const reduceParts = (parts: Intl.DateTimeFormatPart[]) =>\n parts.reduce<Record<string, string>>((acc, p) => {\n if (p.type !== 'literal') acc[p.type] = p.value;\n return acc;\n }, {});\n\n const tzParts = reduceParts(new Intl.DateTimeFormat('en-CA', fmtOpts).formatToParts(date));\n const utcParts = reduceParts(\n new Intl.DateTimeFormat('en-CA', { ...fmtOpts, timeZone: 'UTC' }).formatToParts(date),\n );\n\n const toMs = (p: Record<string, string>) =>\n Date.UTC(\n parseInt(p['year'] ?? '0'),\n parseInt(p['month'] ?? '1') - 1,\n parseInt(p['day'] ?? '1'),\n parseInt(p['hour'] === '24' ? '0' : (p['hour'] ?? '0')),\n parseInt(p['minute'] ?? '0'),\n parseInt(p['second'] ?? '0'),\n );\n\n const offsetMin = Math.round((toMs(tzParts) - toMs(utcParts)) / 60000);\n const sign = offsetMin >= 0 ? '+' : '-';\n const absMin = Math.abs(offsetMin);\n const hh = String(Math.floor(absMin / 60)).padStart(2, '0');\n const mm = String(absMin % 60).padStart(2, '0');\n const h = tzParts['hour'] === '24' ? '00' : (tzParts['hour'] ?? '00');\n return `${tzParts['year']}-${tzParts['month']}-${tzParts['day']}T${h}:${tzParts['minute']}:${tzParts['second']}${sign}${hh}:${mm}`;\n } catch {\n return date.toISOString();\n }\n }\n\n /** @internal */\n private _formatRelative(date: Date): string {\n const now = new Date();\n const diffMs = date.getTime() - now.getTime();\n const diffSec = Math.round(diffMs / 1000);\n const absSec = Math.abs(diffSec);\n const diffMin = Math.round(diffSec / 60);\n const absMin = Math.abs(diffMin);\n const diffHour = Math.round(diffSec / 3600);\n const absHour = Math.abs(diffHour);\n const diffDay = Math.round(diffSec / 86400);\n const absDay = Math.abs(diffDay);\n const diffMonth = Math.round(diffDay / 30);\n const absMonth = Math.abs(diffMonth);\n const diffYear = Math.round(diffDay / 365);\n\n const locale = this._getLocale();\n const cacheKey = `${locale}|${this.numeric}`;\n let rtf = HelixFormatDate._rtfCache.get(cacheKey);\n if (!rtf) {\n try {\n rtf = new Intl.RelativeTimeFormat(locale, { numeric: this.numeric });\n HelixFormatDate._rtfCache.set(cacheKey, rtf);\n } catch {\n return '';\n }\n }\n\n try {\n if (absSec < 60) return rtf.format(diffSec, 'second');\n if (absMin < 60) return rtf.format(diffMin, 'minute');\n if (absHour < 24) return rtf.format(diffHour, 'hour');\n if (absDay < 30) return rtf.format(diffDay, 'day');\n if (absMonth < 12) return rtf.format(diffMonth, 'month');\n return rtf.format(diffYear, 'year');\n } catch {\n return '';\n }\n }\n\n /** @internal */\n private _formatAbsolute(date: Date): string {\n const options: Intl.DateTimeFormatOptions = {};\n\n if (this.month !== undefined) options.month = this.month;\n if (this.year !== undefined) options.year = this.year;\n if (this.day !== undefined) options.day = this.day;\n if (this.weekday !== undefined) options.weekday = this.weekday;\n if (this.hour !== undefined) options.hour = this.hour;\n if (this.minute !== undefined) options.minute = this.minute;\n if (this.second !== undefined) options.second = this.second;\n if (this.timeZoneName !== undefined) options.timeZoneName = this.timeZoneName;\n if (this.timeZone !== undefined) options.timeZone = this.timeZone;\n\n const hour12 = this._getHour12();\n if (hour12 !== undefined) options.hour12 = hour12;\n\n // Fall back to a sensible default when no format options are specified\n if (Object.keys(options).length === 0) {\n options.year = 'numeric';\n options.month = 'long';\n options.day = 'numeric';\n }\n\n const locale = this._getLocale();\n const cacheKey = `${locale}|${JSON.stringify(options)}`;\n let dtf = HelixFormatDate._dtfCache.get(cacheKey);\n if (!dtf) {\n try {\n dtf = new Intl.DateTimeFormat(locale, options);\n HelixFormatDate._dtfCache.set(cacheKey, dtf);\n } catch {\n // Invalid options (e.g. unknown timeZone) — return empty string\n return '';\n }\n }\n\n try {\n return dtf.format(date);\n } catch {\n return '';\n }\n }\n\n // ─── Render ───\n\n override render() {\n const date = this._getDate();\n const datetimeAttr = this._getDatetimeAttr(date);\n const formattedText = this.relative ? this._formatRelative(date) : this._formatAbsolute(date);\n\n return html`<time part=\"base\" datetime=${datetimeAttr}>${formattedText}</time>`;\n }\n}\n\nexport type HxFormatDate = HelixFormatDate;\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'hx-format-date': HelixFormatDate;\n }\n}\n"],"names":["helixFormatDateStyles","css","HelixFormatDate","HelixElement","val","d","asNumber","parsed","docLang","navLang","date","fmtOpts","reduceParts","parts","acc","p","tzParts","utcParts","toMs","offsetMin","sign","absMin","hh","mm","h","now","diffMs","diffSec","absSec","diffMin","diffHour","absHour","diffDay","absDay","diffMonth","absMonth","diffYear","locale","cacheKey","rtf","options","hour12","dtf","datetimeAttr","formattedText","html","__decorateClass","property","customElement"],"mappings":"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"}
@@ -1,26 +1,36 @@
1
- import { css as m, LitElement as c, html as d } from "lit";
2
- import "./document-token-adoption-DuYNKd4k.js";
3
- import { property as s, customElement as g } from "lit/decorators.js";
1
+ import { css as h, html as m } from "lit";
2
+ import { property as s, customElement as d } from "lit/decorators.js";
4
3
  import { styleMap as y } from "lit/directives/style-map.js";
5
- const f = m`
4
+ import { H as g } from "./helix-element-BNEYeiys.js";
5
+ const f = h`
6
6
  :host {
7
7
  display: block;
8
8
  box-sizing: border-box;
9
9
  width: 100%;
10
10
  }
11
- `, v = m`
11
+ `, v = h`
12
12
  :host {
13
13
  display: block;
14
14
  min-width: 0;
15
15
  min-height: 0;
16
16
  }
17
+
18
+ /* ─── High Contrast Mode (forced-colors) ─── */
19
+
20
+ /* hx-grid and hx-grid-item are layout wrappers with no state communicated
21
+ via color. forced-color-adjust: auto (default) is sufficient. */
22
+ @media (forced-colors: active) {
23
+ :host {
24
+ forced-color-adjust: auto;
25
+ }
26
+ }
17
27
  `;
18
- var x = Object.defineProperty, G = Object.getOwnPropertyDescriptor, e = (t, l, a, p) => {
19
- for (var o = p > 1 ? void 0 : p ? G(l, a) : l, n = t.length - 1, u; n >= 0; n--)
20
- (u = t[n]) && (o = (p ? u(l, a, o) : u(o)) || o);
21
- return p && o && x(l, a, o), o;
28
+ var x = Object.defineProperty, G = Object.getOwnPropertyDescriptor, e = (t, l, p, a) => {
29
+ for (var o = a > 1 ? void 0 : a ? G(l, p) : l, u = t.length - 1, n; u >= 0; u--)
30
+ (n = t[u]) && (o = (a ? n(l, p, o) : n(o)) || o);
31
+ return a && o && x(l, p, o), o;
22
32
  };
23
- const h = {
33
+ const c = {
24
34
  none: "0",
25
35
  xs: "var(--hx-space-1, 0.25rem)",
26
36
  sm: "var(--hx-space-2, 0.5rem)",
@@ -28,7 +38,7 @@ const h = {
28
38
  lg: "var(--hx-space-6, 1.5rem)",
29
39
  xl: "var(--hx-space-8, 2rem)"
30
40
  };
31
- let r = class extends c {
41
+ let r = class extends g {
32
42
  constructor() {
33
43
  super(...arguments), this.columns = 1, this.gap = "md", this.align = "stretch", this.justify = "stretch";
34
44
  }
@@ -39,7 +49,7 @@ let r = class extends c {
39
49
  }
40
50
  /** @internal */
41
51
  _resolveGap(t) {
42
- return h[t] ?? h.md;
52
+ return c[t] ?? c.md;
43
53
  }
44
54
  /** @internal */
45
55
  _computedRowGap() {
@@ -61,7 +71,7 @@ let r = class extends c {
61
71
  };
62
72
  }
63
73
  render() {
64
- return d`
74
+ return m`
65
75
  <div part="base" role="presentation" style=${y(this._baseStyleMap())}>
66
76
  <slot></slot>
67
77
  </div>
@@ -88,9 +98,9 @@ e([
88
98
  s({ reflect: !0 })
89
99
  ], r.prototype, "justify", 2);
90
100
  r = e([
91
- g("hx-grid")
101
+ d("hx-grid")
92
102
  ], r);
93
- let i = class extends c {
103
+ let i = class extends g {
94
104
  updated(t) {
95
105
  super.updated(t), (t.has("column") || t.has("row") || t.has("span")) && this._applyHostGridStyles();
96
106
  }
@@ -102,7 +112,7 @@ let i = class extends c {
102
112
  this.column ? this.style.gridColumn = this.column : this.span !== void 0 ? this.style.gridColumn = `span ${this.span}` : this.style.gridColumn = "", this.row ? this.style.gridRow = this.row : this.style.gridRow = "";
103
113
  }
104
114
  render() {
105
- return d`<slot></slot>`;
115
+ return m`<slot></slot>`;
106
116
  }
107
117
  };
108
118
  i.styles = [v];
@@ -116,10 +126,10 @@ e([
116
126
  s({ type: Number, reflect: !0 })
117
127
  ], i.prototype, "span", 2);
118
128
  i = e([
119
- g("hx-grid-item")
129
+ d("hx-grid-item")
120
130
  ], i);
121
131
  export {
122
132
  r as H,
123
133
  i as a
124
134
  };
125
- //# sourceMappingURL=hx-grid-BIAR5h9m.js.map
135
+ //# sourceMappingURL=hx-grid-CXZf3jeK.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hx-grid-CXZf3jeK.js","sources":["../../src/components/hx-grid/hx-grid.styles.ts","../../src/components/hx-grid/hx-grid.ts"],"sourcesContent":["import { css } from 'lit';\n\nexport const helixGridStyles = css`\n :host {\n display: block;\n box-sizing: border-box;\n width: 100%;\n }\n`;\n\nexport const helixGridItemStyles = css`\n :host {\n display: block;\n min-width: 0;\n min-height: 0;\n }\n\n /* ─── High Contrast Mode (forced-colors) ─── */\n\n /* hx-grid and hx-grid-item are layout wrappers with no state communicated\n via color. forced-color-adjust: auto (default) is sufficient. */\n @media (forced-colors: active) {\n :host {\n forced-color-adjust: auto;\n }\n }\n`;\n","import { html, type PropertyValues } from 'lit';\nimport '../../utilities/document-token-adoption.js';\nimport { customElement, property } from 'lit/decorators.js';\nimport { styleMap } from 'lit/directives/style-map.js';\nimport { HelixElement } from '../../base/index.js';\nimport { helixGridStyles, helixGridItemStyles } from './hx-grid.styles.js';\n\ntype GapSize = 'none' | 'xs' | 'sm' | 'md' | 'lg' | 'xl';\n\nconst GAP_TOKENS: Record<GapSize, string> = {\n none: '0',\n xs: 'var(--hx-space-1, 0.25rem)',\n sm: 'var(--hx-space-2, 0.5rem)',\n md: 'var(--hx-space-4, 1rem)',\n lg: 'var(--hx-space-6, 1.5rem)',\n xl: 'var(--hx-space-8, 2rem)',\n};\n\n/**\n * A CSS Grid layout wrapper with design-token-based column and gap system.\n *\n * @summary CSS Grid layout primitive for building responsive grid layouts.\n *\n * @tag hx-grid\n *\n * @slot - Default slot for grid content (use `hx-grid-item` for precise placement).\n *\n * @csspart base - The grid container element.\n *\n * @cssprop [--hx-grid-columns] - Override the computed grid-template-columns.\n * @cssprop [--hx-grid-gap] - Override the computed gap.\n * @cssprop [--hx-grid-row-gap] - Override the computed row-gap.\n * @cssprop [--hx-grid-column-gap] - Override the computed column-gap.\n */\n@customElement('hx-grid')\nexport class HelixGrid extends HelixElement {\n static override styles = [helixGridStyles];\n\n /**\n * Number of equal columns (`repeat(N, 1fr)`) or a CSS grid-template-columns string.\n * @attr columns\n */\n @property({ reflect: true })\n columns: number | string = 1;\n\n /**\n * Gap size applied to both row and column gaps.\n * @attr gap\n */\n @property({ reflect: true })\n gap: 'none' | 'xs' | 'sm' | 'md' | 'lg' | 'xl' = 'md';\n\n /**\n * Row gap override. When set, takes precedence over `gap` for row spacing.\n * @attr row-gap\n */\n @property({ attribute: 'row-gap', reflect: true })\n rowGap: 'none' | 'xs' | 'sm' | 'md' | 'lg' | 'xl' | undefined;\n\n /**\n * Column gap override. When set, takes precedence over `gap` for column spacing.\n * @attr column-gap\n */\n @property({ attribute: 'column-gap', reflect: true })\n columnGap: 'none' | 'xs' | 'sm' | 'md' | 'lg' | 'xl' | undefined;\n\n /**\n * Aligns grid items along the block axis (align-items).\n * @attr align\n */\n @property({ reflect: true })\n align: 'start' | 'center' | 'end' | 'stretch' = 'stretch';\n\n /**\n * Justifies grid items along the inline axis (justify-items).\n * @attr justify\n */\n @property({ reflect: true })\n justify: 'start' | 'center' | 'end' | 'stretch' = 'stretch';\n\n /** @internal */\n private _gridTemplateColumns(): string {\n const cols = this.columns;\n if (typeof cols === 'number' || /^\\d+$/.test(String(cols))) {\n return `var(--hx-grid-columns, repeat(${cols}, 1fr))`;\n }\n return `var(--hx-grid-columns, ${cols})`;\n }\n\n /** @internal */\n private _resolveGap(size: GapSize): string {\n return GAP_TOKENS[size] ?? GAP_TOKENS.md;\n }\n\n /** @internal */\n private _computedRowGap(): string {\n if (this.rowGap) {\n return `var(--hx-grid-row-gap, ${this._resolveGap(this.rowGap)})`;\n }\n return `var(--hx-grid-row-gap, var(--hx-grid-gap, ${this._resolveGap(this.gap)}))`;\n }\n\n /** @internal */\n private _computedColumnGap(): string {\n if (this.columnGap) {\n return `var(--hx-grid-column-gap, ${this._resolveGap(this.columnGap)})`;\n }\n return `var(--hx-grid-column-gap, var(--hx-grid-gap, ${this._resolveGap(this.gap)}))`;\n }\n\n /** @internal */\n private _baseStyleMap(): Record<string, string> {\n return {\n display: 'grid',\n 'grid-template-columns': this._gridTemplateColumns(),\n 'row-gap': this._computedRowGap(),\n 'column-gap': this._computedColumnGap(),\n 'align-items': this.align,\n 'justify-items': this.justify,\n };\n }\n\n override render() {\n return html`\n <div part=\"base\" role=\"presentation\" style=${styleMap(this._baseStyleMap())}>\n <slot></slot>\n </div>\n `;\n }\n}\n\n/**\n * Optional companion element for precise grid item placement.\n * Applies grid-column and grid-row directly to the host element\n * so it participates correctly in the parent CSS grid layout.\n *\n * @summary Grid item with explicit column/row placement.\n *\n * @tag hx-grid-item\n *\n * @slot - Default slot for item content.\n */\n@customElement('hx-grid-item')\nexport class HelixGridItem extends HelixElement {\n static override styles = [helixGridItemStyles];\n\n /**\n * CSS grid-column value (e.g., \"1 / 3\", \"span 2\").\n * @attr column\n */\n @property({ reflect: true })\n column: string | undefined;\n\n /**\n * CSS grid-row value (e.g., \"1 / 2\").\n * @attr row\n */\n @property({ reflect: true })\n row: string | undefined;\n\n /**\n * Column span shorthand — equivalent to setting `column: \"span N\"`.\n * @attr span\n */\n @property({ type: Number, reflect: true })\n span: number | undefined;\n\n override updated(changed: PropertyValues<this>): void {\n super.updated(changed);\n if (changed.has('column') || changed.has('row') || changed.has('span')) {\n this._applyHostGridStyles();\n }\n }\n\n override connectedCallback(): void {\n super.connectedCallback();\n this._applyHostGridStyles();\n }\n\n /** @internal */\n private _applyHostGridStyles(): void {\n if (this.column) {\n this.style.gridColumn = this.column;\n } else if (this.span !== undefined) {\n this.style.gridColumn = `span ${this.span}`;\n } else {\n this.style.gridColumn = '';\n }\n if (this.row) {\n this.style.gridRow = this.row;\n } else {\n this.style.gridRow = '';\n }\n }\n\n override render() {\n return html`<slot></slot>`;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'hx-grid': HelixGrid;\n 'hx-grid-item': HelixGridItem;\n }\n}\n"],"names":["helixGridStyles","css","helixGridItemStyles","GAP_TOKENS","HelixGrid","HelixElement","cols","size","html","styleMap","__decorateClass","property","customElement","HelixGridItem","changed"],"mappings":"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"}
@@ -1,8 +1,8 @@
1
- import { css as p, LitElement as v, nothing as c, html as n } from "lit";
2
- import "./document-token-adoption-DuYNKd4k.js";
3
- import { property as f, customElement as u } from "lit/decorators.js";
4
- import { classMap as d } from "lit/directives/class-map.js";
1
+ import { css as p, nothing as c, html as l } from "lit";
2
+ import { property as v, customElement as f } from "lit/decorators.js";
3
+ import { classMap as u } from "lit/directives/class-map.js";
5
4
  import { ifDefined as h } from "lit/directives/if-defined.js";
5
+ import { H as d } from "./helix-element-BNEYeiys.js";
6
6
  const m = p`
7
7
  :host {
8
8
  display: block;
@@ -16,7 +16,7 @@ const m = p`
16
16
  font-size: var(--hx-help-text-font-size, var(--hx-font-size-sm, 0.875rem));
17
17
  font-weight: var(--hx-help-text-font-weight, var(--hx-font-weight-normal, 400));
18
18
  line-height: var(--hx-help-text-line-height, var(--hx-line-height-normal, 1.5));
19
- color: var(--hx-help-text-color, var(--hx-color-neutral-500, #6b7280));
19
+ color: var(--hx-help-text-color, var(--hx-color-neutral-500, #64748b));
20
20
  margin: 0;
21
21
  }
22
22
 
@@ -33,33 +33,53 @@ const m = p`
33
33
  /* ─── Variant: default ─── */
34
34
 
35
35
  .help-text--default {
36
- --hx-help-text-color: var(--hx-color-neutral-500, #6b7280);
36
+ --hx-help-text-color: var(--hx-color-neutral-500, #64748b);
37
37
  }
38
38
 
39
39
  /* ─── Variant: error ─── */
40
40
 
41
41
  .help-text--error {
42
- --hx-help-text-color: var(--hx-color-error-600, #dc2626);
42
+ --hx-help-text-color: var(--hx-color-error-600, #b91c1c);
43
43
  }
44
44
 
45
45
  /* ─── Variant: warning ─── */
46
46
 
47
47
  .help-text--warning {
48
- --hx-help-text-color: var(--hx-color-warning-700, #b45309);
48
+ --hx-help-text-color: var(--hx-color-warning-700, #92400e);
49
49
  }
50
50
 
51
51
  /* ─── Variant: success ─── */
52
52
 
53
53
  .help-text--success {
54
- --hx-help-text-color: var(--hx-color-success-700, #15803d);
54
+ --hx-help-text-color: var(--hx-color-success-700, #166534);
55
+ }
56
+
57
+ /* ─── High Contrast Mode (forced-colors) ─── */
58
+
59
+ @media (forced-colors: active) {
60
+ .help-text {
61
+ color: GrayText;
62
+ }
63
+
64
+ .help-text--error {
65
+ color: LinkText;
66
+ }
67
+
68
+ .help-text--warning {
69
+ color: CanvasText;
70
+ }
71
+
72
+ .help-text--success {
73
+ color: CanvasText;
74
+ }
55
75
  }
56
76
  `;
57
- var g = Object.defineProperty, w = Object.getOwnPropertyDescriptor, x = (l, e, o, r) => {
58
- for (var t = r > 1 ? void 0 : r ? w(e, o) : e, s = l.length - 1, a; s >= 0; s--)
59
- (a = l[s]) && (t = (r ? a(e, o, t) : a(t)) || t);
77
+ var g = Object.defineProperty, w = Object.getOwnPropertyDescriptor, x = (n, e, o, r) => {
78
+ for (var t = r > 1 ? void 0 : r ? w(e, o) : e, s = n.length - 1, a; s >= 0; s--)
79
+ (a = n[s]) && (t = (r ? a(e, o, t) : a(t)) || t);
60
80
  return r && t && g(e, o, t), t;
61
81
  };
62
- const y = n`<svg viewBox="0 0 16 16" aria-hidden="true" width="1em" height="1em">
82
+ const y = l`<svg viewBox="0 0 16 16" aria-hidden="true" width="1em" height="1em">
63
83
  <circle cx="8" cy="8" r="7" stroke="currentColor" stroke-width="1.5" fill="none" />
64
84
  <line
65
85
  x1="8"
@@ -71,7 +91,7 @@ const y = n`<svg viewBox="0 0 16 16" aria-hidden="true" width="1em" height="1em"
71
91
  stroke-linecap="round"
72
92
  />
73
93
  <circle cx="8" cy="11" r="0.75" fill="currentColor" />
74
- </svg>`, _ = n`<svg viewBox="0 0 16 16" aria-hidden="true" width="1em" height="1em">
94
+ </svg>`, k = l`<svg viewBox="0 0 16 16" aria-hidden="true" width="1em" height="1em">
75
95
  <path
76
96
  d="M7.134 2.5a1 1 0 011.732 0l5.196 9a1 1 0 01-.866 1.5H2.804a1 1 0 01-.866-1.5l5.196-9z"
77
97
  stroke="currentColor"
@@ -88,7 +108,7 @@ const y = n`<svg viewBox="0 0 16 16" aria-hidden="true" width="1em" height="1em"
88
108
  stroke-linecap="round"
89
109
  />
90
110
  <circle cx="8" cy="11" r="0.625" fill="currentColor" />
91
- </svg>`, k = n`<svg viewBox="0 0 16 16" aria-hidden="true" width="1em" height="1em">
111
+ </svg>`, _ = l`<svg viewBox="0 0 16 16" aria-hidden="true" width="1em" height="1em">
92
112
  <circle cx="8" cy="8" r="7" stroke="currentColor" stroke-width="1.5" fill="none" />
93
113
  <path
94
114
  d="M5.25 8.25l1.75 1.75 3.75-3.75"
@@ -101,35 +121,35 @@ const y = n`<svg viewBox="0 0 16 16" aria-hidden="true" width="1em" height="1em"
101
121
  </svg>`, C = {
102
122
  default: c,
103
123
  error: y,
104
- warning: _,
105
- success: k
124
+ warning: k,
125
+ success: _
106
126
  };
107
- let i = class extends v {
127
+ let i = class extends d {
108
128
  constructor() {
109
129
  super(...arguments), this.variant = "default";
110
130
  }
111
131
  render() {
112
- const l = {
132
+ const n = {
113
133
  "help-text": !0,
114
134
  [`help-text--${this.variant}`]: !0
115
135
  }, e = C[this.variant], o = this.variant === "error" ? "alert" : void 0, r = this.variant === "warning" || this.variant === "success" ? "polite" : void 0;
116
- return n`<span
136
+ return l`<span
117
137
  part="base"
118
- class=${d(l)}
138
+ class=${u(n)}
119
139
  role=${h(o)}
120
140
  aria-live=${h(r)}
121
- >${e !== c ? n`<span part="icon" class="help-text__icon">${e}</span>` : c}<span part="text" class="help-text__text"><slot></slot></span>
141
+ >${e !== c ? l`<span part="icon" class="help-text__icon">${e}</span>` : c}<span part="text" class="help-text__text"><slot></slot></span>
122
142
  </span>`;
123
143
  }
124
144
  };
125
145
  i.styles = [m];
126
146
  x([
127
- f({ type: String, reflect: !0 })
147
+ v({ type: String, reflect: !0 })
128
148
  ], i.prototype, "variant", 2);
129
149
  i = x([
130
- u("hx-help-text")
150
+ f("hx-help-text")
131
151
  ], i);
132
152
  export {
133
153
  i as H
134
154
  };
135
- //# sourceMappingURL=hx-help-text-Bmb80bP4.js.map
155
+ //# sourceMappingURL=hx-help-text-D7eytSim.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hx-help-text-D7eytSim.js","sources":["../../src/components/hx-help-text/hx-help-text.styles.ts","../../src/components/hx-help-text/hx-help-text.ts"],"sourcesContent":["import { css } from 'lit';\n\nexport const helixHelpTextStyles = css`\n :host {\n display: block;\n }\n\n .help-text {\n display: inline-flex;\n align-items: baseline;\n gap: var(--hx-help-text-icon-gap, 0.375rem);\n font-family: var(--hx-help-text-font-family, var(--hx-font-family-sans, sans-serif));\n font-size: var(--hx-help-text-font-size, var(--hx-font-size-sm, 0.875rem));\n font-weight: var(--hx-help-text-font-weight, var(--hx-font-weight-normal, 400));\n line-height: var(--hx-help-text-line-height, var(--hx-line-height-normal, 1.5));\n color: var(--hx-help-text-color, var(--hx-color-neutral-500, #64748b));\n margin: 0;\n }\n\n .help-text__icon {\n flex-shrink: 0;\n display: inline-flex;\n align-items: center;\n }\n\n .help-text__text {\n min-width: 0;\n }\n\n /* ─── Variant: default ─── */\n\n .help-text--default {\n --hx-help-text-color: var(--hx-color-neutral-500, #64748b);\n }\n\n /* ─── Variant: error ─── */\n\n .help-text--error {\n --hx-help-text-color: var(--hx-color-error-600, #b91c1c);\n }\n\n /* ─── Variant: warning ─── */\n\n .help-text--warning {\n --hx-help-text-color: var(--hx-color-warning-700, #92400e);\n }\n\n /* ─── Variant: success ─── */\n\n .help-text--success {\n --hx-help-text-color: var(--hx-color-success-700, #166534);\n }\n\n /* ─── High Contrast Mode (forced-colors) ─── */\n\n @media (forced-colors: active) {\n .help-text {\n color: GrayText;\n }\n\n .help-text--error {\n color: LinkText;\n }\n\n .help-text--warning {\n color: CanvasText;\n }\n\n .help-text--success {\n color: CanvasText;\n }\n }\n`;\n","import { html, nothing } from 'lit';\nimport '../../utilities/document-token-adoption.js';\nimport { customElement, property } from 'lit/decorators.js';\nimport { classMap } from 'lit/directives/class-map.js';\nimport { ifDefined } from 'lit/directives/if-defined.js';\nimport { HelixElement } from '../../base/index.js';\nimport { helixHelpTextStyles } from './hx-help-text.styles.js';\n\n/** Icon SVG for error variant (circle with exclamation mark). */\nconst errorIcon = html`<svg viewBox=\"0 0 16 16\" aria-hidden=\"true\" width=\"1em\" height=\"1em\">\n <circle cx=\"8\" cy=\"8\" r=\"7\" stroke=\"currentColor\" stroke-width=\"1.5\" fill=\"none\" />\n <line\n x1=\"8\"\n y1=\"4.5\"\n x2=\"8\"\n y2=\"8.5\"\n stroke=\"currentColor\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n />\n <circle cx=\"8\" cy=\"11\" r=\"0.75\" fill=\"currentColor\" />\n</svg>`;\n\n/** Icon SVG for warning variant (triangle with exclamation mark). */\nconst warningIcon = html`<svg viewBox=\"0 0 16 16\" aria-hidden=\"true\" width=\"1em\" height=\"1em\">\n <path\n d=\"M7.134 2.5a1 1 0 011.732 0l5.196 9a1 1 0 01-.866 1.5H2.804a1 1 0 01-.866-1.5l5.196-9z\"\n stroke=\"currentColor\"\n stroke-width=\"1.25\"\n fill=\"none\"\n />\n <line\n x1=\"8\"\n y1=\"6\"\n x2=\"8\"\n y2=\"9\"\n stroke=\"currentColor\"\n stroke-width=\"1.25\"\n stroke-linecap=\"round\"\n />\n <circle cx=\"8\" cy=\"11\" r=\"0.625\" fill=\"currentColor\" />\n</svg>`;\n\n/** Icon SVG for success variant (circle with checkmark). */\nconst successIcon = html`<svg viewBox=\"0 0 16 16\" aria-hidden=\"true\" width=\"1em\" height=\"1em\">\n <circle cx=\"8\" cy=\"8\" r=\"7\" stroke=\"currentColor\" stroke-width=\"1.5\" fill=\"none\" />\n <path\n d=\"M5.25 8.25l1.75 1.75 3.75-3.75\"\n stroke=\"currentColor\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n fill=\"none\"\n />\n</svg>`;\n\n/** Map of variant to icon template. Default has no icon. */\nconst variantIcons = {\n default: nothing,\n error: errorIcon,\n warning: warningIcon,\n success: successIcon,\n} as const;\n\n/**\n * Standardized help/hint text displayed below form fields.\n * Used by hx-field as a consistent sub-component for guidance and validation messages.\n *\n * Non-default variants render an inline icon alongside the text to satisfy\n * WCAG 1.4.1 (color is not the sole visual indicator). The `error` variant\n * uses `role=\"alert\"` for immediate screen-reader announcement; `warning`\n * and `success` use `aria-live=\"polite\"` for non-intrusive announcements.\n *\n * @summary Help text displayed below form controls for guidance or validation feedback.\n *\n * @tag hx-help-text\n *\n * @slot - The help text content.\n *\n * @csspart base - The root element of the help text.\n * @csspart icon - The icon wrapper (only rendered for non-default variants).\n * @csspart text - The text wrapper around the default slot.\n *\n * @cssprop [--hx-help-text-color=var(--hx-color-neutral-500)] - Text color.\n * @cssprop [--hx-help-text-font-family=var(--hx-font-family-sans)] - Font family.\n * @cssprop [--hx-help-text-font-size=var(--hx-font-size-sm)] - Font size.\n * @cssprop [--hx-help-text-font-weight=var(--hx-font-weight-normal)] - Font weight.\n * @cssprop [--hx-help-text-line-height=var(--hx-line-height-normal)] - Line height.\n * @cssprop [--hx-help-text-icon-gap=0.375rem] - Gap between icon and text.\n */\n@customElement('hx-help-text')\nexport class HelixHelpText extends HelixElement {\n static override styles = [helixHelpTextStyles];\n\n /**\n * Visual variant that determines the text color and icon.\n * Use `error` for validation errors, `warning` for cautions, `success` for confirmation.\n * @attr variant\n */\n @property({ type: String, reflect: true })\n variant: 'default' | 'error' | 'warning' | 'success' = 'default';\n\n override render() {\n const classes = {\n 'help-text': true,\n [`help-text--${this.variant}`]: true,\n };\n\n const icon = variantIcons[this.variant];\n const role = this.variant === 'error' ? 'alert' : undefined;\n const ariaLive =\n this.variant === 'warning' || this.variant === 'success' ? 'polite' : undefined;\n\n return html`<span\n part=\"base\"\n class=${classMap(classes)}\n role=${ifDefined(role)}\n aria-live=${ifDefined(ariaLive)}\n >${icon !== nothing\n ? html`<span part=\"icon\" class=\"help-text__icon\">${icon}</span>`\n : nothing}<span part=\"text\" class=\"help-text__text\"><slot></slot></span>\n </span>`;\n }\n}\n\n/** Canonical type alias for the hx-help-text component. */\nexport type HxHelpText = HelixHelpText;\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'hx-help-text': HelixHelpText;\n }\n}\n"],"names":["helixHelpTextStyles","css","errorIcon","html","warningIcon","successIcon","variantIcons","nothing","HelixHelpText","HelixElement","classes","icon","role","ariaLive","classMap","ifDefined","__decorateClass","property","customElement"],"mappings":";;;;;AAEO,MAAMA,IAAsBC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;;ACOnC,MAAMC,IAAYC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,SAeZC,IAAcD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,SAoBdE,IAAcF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,SAadG,IAAe;AAAA,EACnB,SAASC;AAAA,EACT,OAAOL;AAAA,EACP,SAASE;AAAA,EACT,SAASC;AACX;AA6BO,IAAMG,IAAN,cAA4BC,EAAa;AAAA,EAAzC,cAAA;AAAA,UAAA,GAAA,SAAA,GASL,KAAA,UAAuD;AAAA,EAAA;AAAA,EAE9C,SAAS;AAChB,UAAMC,IAAU;AAAA,MACd,aAAa;AAAA,MACb,CAAC,cAAc,KAAK,OAAO,EAAE,GAAG;AAAA,IAAA,GAG5BC,IAAOL,EAAa,KAAK,OAAO,GAChCM,IAAO,KAAK,YAAY,UAAU,UAAU,QAC5CC,IACJ,KAAK,YAAY,aAAa,KAAK,YAAY,YAAY,WAAW;AAExE,WAAOV;AAAA;AAAA,cAEGW,EAASJ,CAAO,CAAC;AAAA,aAClBK,EAAUH,CAAI,CAAC;AAAA,kBACVG,EAAUF,CAAQ,CAAC;AAAA,SAC5BF,MAASJ,IACRJ,8CAAiDQ,CAAI,YACrDJ,CAAO;AAAA;AAAA,EAEf;AACF;AAhCaC,EACK,SAAS,CAACR,CAAmB;AAQ7CgB,EAAA;AAAA,EADCC,EAAS,EAAE,MAAM,QAAQ,SAAS,IAAM;AAAA,GAR9BT,EASX,WAAA,WAAA,CAAA;AATWA,IAANQ,EAAA;AAAA,EADNE,EAAc,cAAc;AAAA,GAChBV,CAAA;"}