@helixui/library 1.1.2 → 2.0.0-next.30

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (691) hide show
  1. package/custom-elements.json +2962 -1965
  2. package/dist/base/helix-element.d.ts +134 -0
  3. package/dist/base/helix-element.d.ts.map +1 -0
  4. package/dist/base/id-counter.d.ts +32 -0
  5. package/dist/base/id-counter.d.ts.map +1 -0
  6. package/dist/base/index.d.ts +4 -0
  7. package/dist/base/index.d.ts.map +1 -0
  8. package/dist/base/styles.d.ts +19 -0
  9. package/dist/base/styles.d.ts.map +1 -0
  10. package/dist/components/hx-accordion/hx-accordion-item.d.ts +3 -0
  11. package/dist/components/hx-accordion/hx-accordion-item.d.ts.map +1 -1
  12. package/dist/components/hx-accordion/hx-accordion.d.ts +4 -1
  13. package/dist/components/hx-accordion/hx-accordion.d.ts.map +1 -1
  14. package/dist/components/hx-accordion/index.js +1 -1
  15. package/dist/components/hx-action-bar/hx-action-bar.d.ts +1 -1
  16. package/dist/components/hx-action-bar/hx-action-bar.d.ts.map +1 -1
  17. package/dist/components/hx-action-bar/index.js +1 -1
  18. package/dist/components/hx-alert/hx-alert.d.ts +10 -5
  19. package/dist/components/hx-alert/hx-alert.d.ts.map +1 -1
  20. package/dist/components/hx-alert/hx-alert.styles.d.ts.map +1 -1
  21. package/dist/components/hx-alert/index.js +1 -1
  22. package/dist/components/hx-avatar/hx-avatar.d.ts.map +1 -1
  23. package/dist/components/hx-avatar/hx-avatar.styles.d.ts.map +1 -1
  24. package/dist/components/hx-avatar/index.js +1 -1
  25. package/dist/components/hx-badge/hx-badge.d.ts.map +1 -1
  26. package/dist/components/hx-badge/hx-badge.styles.d.ts.map +1 -1
  27. package/dist/components/hx-badge/index.js +1 -1
  28. package/dist/components/hx-banner/hx-banner.d.ts +15 -5
  29. package/dist/components/hx-banner/hx-banner.d.ts.map +1 -1
  30. package/dist/components/hx-banner/hx-banner.styles.d.ts.map +1 -1
  31. package/dist/components/hx-banner/index.js +1 -1
  32. package/dist/components/hx-breadcrumb/hx-breadcrumb-item.d.ts +1 -0
  33. package/dist/components/hx-breadcrumb/hx-breadcrumb-item.d.ts.map +1 -1
  34. package/dist/components/hx-breadcrumb/hx-breadcrumb.d.ts +42 -11
  35. package/dist/components/hx-breadcrumb/hx-breadcrumb.d.ts.map +1 -1
  36. package/dist/components/hx-breadcrumb/index.js +1 -1
  37. package/dist/components/hx-button/hx-button.d.ts +22 -13
  38. package/dist/components/hx-button/hx-button.d.ts.map +1 -1
  39. package/dist/components/hx-button/hx-button.styles.d.ts.map +1 -1
  40. package/dist/components/hx-button/index.js +1 -1
  41. package/dist/components/hx-button-group/hx-button-group.d.ts +3 -6
  42. package/dist/components/hx-button-group/hx-button-group.d.ts.map +1 -1
  43. package/dist/components/hx-button-group/index.js +1 -1
  44. package/dist/components/hx-card/hx-card.d.ts +7 -7
  45. package/dist/components/hx-card/hx-card.d.ts.map +1 -1
  46. package/dist/components/hx-card/index.js +1 -1
  47. package/dist/components/hx-carousel/hx-carousel-item.d.ts.map +1 -1
  48. package/dist/components/hx-carousel/hx-carousel.d.ts +2 -2
  49. package/dist/components/hx-carousel/hx-carousel.d.ts.map +1 -1
  50. package/dist/components/hx-carousel/index.js +1 -1
  51. package/dist/components/hx-checkbox/hx-checkbox.d.ts +18 -18
  52. package/dist/components/hx-checkbox/hx-checkbox.d.ts.map +1 -1
  53. package/dist/components/hx-checkbox/hx-checkbox.styles.d.ts.map +1 -1
  54. package/dist/components/hx-checkbox/index.js +1 -1
  55. package/dist/components/hx-checkbox-group/hx-checkbox-group.d.ts +8 -3
  56. package/dist/components/hx-checkbox-group/hx-checkbox-group.d.ts.map +1 -1
  57. package/dist/components/hx-checkbox-group/index.js +1 -1
  58. package/dist/components/hx-clinical-status/hx-clinical-status.d.ts +134 -0
  59. package/dist/components/hx-clinical-status/hx-clinical-status.d.ts.map +1 -0
  60. package/dist/components/hx-clinical-status/hx-clinical-status.styles.d.ts +2 -0
  61. package/dist/components/hx-clinical-status/hx-clinical-status.styles.d.ts.map +1 -0
  62. package/dist/components/hx-clinical-status/index.d.ts +3 -0
  63. package/dist/components/hx-clinical-status/index.d.ts.map +1 -0
  64. package/dist/components/hx-clinical-status/index.js +5 -0
  65. package/dist/components/hx-clinical-status/index.js.map +1 -0
  66. package/dist/components/hx-code-snippet/hx-code-snippet.d.ts.map +1 -1
  67. package/dist/components/hx-code-snippet/hx-code-snippet.styles.d.ts.map +1 -1
  68. package/dist/components/hx-code-snippet/index.js +1 -1
  69. package/dist/components/hx-color-picker/color-utils.d.ts +27 -0
  70. package/dist/components/hx-color-picker/color-utils.d.ts.map +1 -0
  71. package/dist/components/hx-color-picker/hx-color-picker.d.ts +16 -4
  72. package/dist/components/hx-color-picker/hx-color-picker.d.ts.map +1 -1
  73. package/dist/components/hx-color-picker/index.js +1 -1
  74. package/dist/components/hx-combobox/hx-combobox.d.ts +9 -4
  75. package/dist/components/hx-combobox/hx-combobox.d.ts.map +1 -1
  76. package/dist/components/hx-combobox/hx-combobox.styles.d.ts.map +1 -1
  77. package/dist/components/hx-combobox/index.js +1 -1
  78. package/dist/components/hx-container/hx-container.d.ts.map +1 -1
  79. package/dist/components/hx-container/index.js +1 -1
  80. package/dist/components/hx-copy-button/hx-copy-button.d.ts +6 -1
  81. package/dist/components/hx-copy-button/hx-copy-button.d.ts.map +1 -1
  82. package/dist/components/hx-copy-button/index.js +1 -1
  83. package/dist/components/hx-counter/hx-counter.d.ts +20 -3
  84. package/dist/components/hx-counter/hx-counter.d.ts.map +1 -1
  85. package/dist/components/hx-counter/hx-counter.styles.d.ts.map +1 -1
  86. package/dist/components/hx-counter/index.js +1 -1
  87. package/dist/components/hx-data-table/hx-data-table.d.ts +8 -0
  88. package/dist/components/hx-data-table/hx-data-table.d.ts.map +1 -1
  89. package/dist/components/hx-data-table/hx-data-table.styles.d.ts.map +1 -1
  90. package/dist/components/hx-data-table/index.js +1 -1
  91. package/dist/components/hx-date-picker/hx-date-picker.d.ts +40 -3
  92. package/dist/components/hx-date-picker/hx-date-picker.d.ts.map +1 -1
  93. package/dist/components/hx-date-picker/hx-date-picker.styles.d.ts.map +1 -1
  94. package/dist/components/hx-date-picker/index.js +1 -1
  95. package/dist/components/hx-dialog/hx-dialog.d.ts +4 -1
  96. package/dist/components/hx-dialog/hx-dialog.d.ts.map +1 -1
  97. package/dist/components/hx-dialog/index.js +1 -1
  98. package/dist/components/hx-divider/hx-divider.d.ts.map +1 -1
  99. package/dist/components/hx-divider/index.js +1 -1
  100. package/dist/components/hx-drawer/hx-drawer.d.ts +5 -8
  101. package/dist/components/hx-drawer/hx-drawer.d.ts.map +1 -1
  102. package/dist/components/hx-drawer/hx-drawer.styles.d.ts.map +1 -1
  103. package/dist/components/hx-drawer/index.js +1 -1
  104. package/dist/components/hx-dropdown/hx-dropdown.d.ts +14 -1
  105. package/dist/components/hx-dropdown/hx-dropdown.d.ts.map +1 -1
  106. package/dist/components/hx-dropdown/index.js +1 -1
  107. package/dist/components/hx-field/hx-field.d.ts +1 -1
  108. package/dist/components/hx-field/hx-field.d.ts.map +1 -1
  109. package/dist/components/hx-field/index.js +1 -1
  110. package/dist/components/hx-field-label/hx-field-label.d.ts.map +1 -1
  111. package/dist/components/hx-field-label/hx-field-label.styles.d.ts.map +1 -1
  112. package/dist/components/hx-field-label/index.js +1 -1
  113. package/dist/components/hx-file-upload/hx-file-upload.d.ts +8 -9
  114. package/dist/components/hx-file-upload/hx-file-upload.d.ts.map +1 -1
  115. package/dist/components/hx-file-upload/index.js +1 -1
  116. package/dist/components/hx-form/hx-form.d.ts.map +1 -1
  117. package/dist/components/hx-form/index.js +1 -1
  118. package/dist/components/hx-format-date/hx-format-date.d.ts.map +1 -1
  119. package/dist/components/hx-format-date/index.js +1 -1
  120. package/dist/components/hx-grid/hx-grid.d.ts +5 -9
  121. package/dist/components/hx-grid/hx-grid.d.ts.map +1 -1
  122. package/dist/components/hx-grid/index.js +1 -1
  123. package/dist/components/hx-help-text/hx-help-text.d.ts.map +1 -1
  124. package/dist/components/hx-help-text/index.js +1 -1
  125. package/dist/components/hx-icon/hx-icon.d.ts.map +1 -1
  126. package/dist/components/hx-icon/index.js +1 -1
  127. package/dist/components/hx-icon-button/hx-icon-button.d.ts +4 -3
  128. package/dist/components/hx-icon-button/hx-icon-button.d.ts.map +1 -1
  129. package/dist/components/hx-icon-button/index.js +1 -1
  130. package/dist/components/hx-image/hx-image.d.ts.map +1 -1
  131. package/dist/components/hx-image/index.js +1 -1
  132. package/dist/components/hx-link/hx-link.d.ts +1 -1
  133. package/dist/components/hx-link/hx-link.d.ts.map +1 -1
  134. package/dist/components/hx-link/hx-link.styles.d.ts.map +1 -1
  135. package/dist/components/hx-link/index.js +1 -1
  136. package/dist/components/hx-list/hx-list-item.d.ts.map +1 -1
  137. package/dist/components/hx-list/hx-list.d.ts.map +1 -1
  138. package/dist/components/hx-list/index.js +1 -1
  139. package/dist/components/hx-menu/hx-menu-divider.d.ts.map +1 -1
  140. package/dist/components/hx-menu/hx-menu-item.d.ts +5 -0
  141. package/dist/components/hx-menu/hx-menu-item.d.ts.map +1 -1
  142. package/dist/components/hx-menu/hx-menu.d.ts +1 -0
  143. package/dist/components/hx-menu/hx-menu.d.ts.map +1 -1
  144. package/dist/components/hx-menu/hx-menu.styles.d.ts.map +1 -1
  145. package/dist/components/hx-menu/index.js +1 -1
  146. package/dist/components/hx-meter/hx-meter.d.ts +2 -2
  147. package/dist/components/hx-meter/hx-meter.d.ts.map +1 -1
  148. package/dist/components/hx-meter/index.js +1 -1
  149. package/dist/components/hx-nav/hx-nav.d.ts +10 -0
  150. package/dist/components/hx-nav/hx-nav.d.ts.map +1 -1
  151. package/dist/components/hx-nav/index.js +1 -1
  152. package/dist/components/hx-number-input/hx-number-input.d.ts +4 -3
  153. package/dist/components/hx-number-input/hx-number-input.d.ts.map +1 -1
  154. package/dist/components/hx-number-input/index.js +1 -1
  155. package/dist/components/hx-overflow-menu/hx-overflow-menu.d.ts +3 -3
  156. package/dist/components/hx-overflow-menu/hx-overflow-menu.d.ts.map +1 -1
  157. package/dist/components/hx-overflow-menu/hx-overflow-menu.styles.d.ts.map +1 -1
  158. package/dist/components/hx-overflow-menu/index.js +1 -1
  159. package/dist/components/hx-pagination/hx-pagination.d.ts +8 -0
  160. package/dist/components/hx-pagination/hx-pagination.d.ts.map +1 -1
  161. package/dist/components/hx-pagination/hx-pagination.styles.d.ts.map +1 -1
  162. package/dist/components/hx-pagination/index.js +1 -1
  163. package/dist/components/hx-patient-banner/hx-patient-banner.d.ts +113 -0
  164. package/dist/components/hx-patient-banner/hx-patient-banner.d.ts.map +1 -0
  165. package/dist/components/hx-patient-banner/hx-patient-banner.styles.d.ts +2 -0
  166. package/dist/components/hx-patient-banner/hx-patient-banner.styles.d.ts.map +1 -0
  167. package/dist/components/hx-patient-banner/index.d.ts +3 -0
  168. package/dist/components/hx-patient-banner/index.d.ts.map +1 -0
  169. package/dist/components/hx-patient-banner/index.js +5 -0
  170. package/dist/components/hx-patient-banner/index.js.map +1 -0
  171. package/dist/components/hx-phi-field/hx-phi-field.d.ts +97 -0
  172. package/dist/components/hx-phi-field/hx-phi-field.d.ts.map +1 -0
  173. package/dist/components/hx-phi-field/hx-phi-field.styles.d.ts +2 -0
  174. package/dist/components/hx-phi-field/hx-phi-field.styles.d.ts.map +1 -0
  175. package/dist/components/hx-phi-field/index.d.ts +3 -0
  176. package/dist/components/hx-phi-field/index.d.ts.map +1 -0
  177. package/dist/components/hx-phi-field/index.js +5 -0
  178. package/dist/components/hx-phi-field/index.js.map +1 -0
  179. package/dist/components/hx-popover/hx-popover.d.ts +25 -9
  180. package/dist/components/hx-popover/hx-popover.d.ts.map +1 -1
  181. package/dist/components/hx-popover/index.js +1 -1
  182. package/dist/components/hx-popup/hx-popup.d.ts +5 -8
  183. package/dist/components/hx-popup/hx-popup.d.ts.map +1 -1
  184. package/dist/components/hx-popup/index.js +1 -1
  185. package/dist/components/hx-progress-bar/hx-progress-bar.d.ts +2 -0
  186. package/dist/components/hx-progress-bar/hx-progress-bar.d.ts.map +1 -1
  187. package/dist/components/hx-progress-bar/hx-progress-bar.styles.d.ts.map +1 -1
  188. package/dist/components/hx-progress-bar/index.js +1 -1
  189. package/dist/components/hx-progress-ring/hx-progress-ring.d.ts.map +1 -1
  190. package/dist/components/hx-progress-ring/index.js +1 -1
  191. package/dist/components/hx-prose/hx-prose.d.ts +1 -0
  192. package/dist/components/hx-prose/hx-prose.d.ts.map +1 -1
  193. package/dist/components/hx-radio-group/hx-radio-group.d.ts +3 -7
  194. package/dist/components/hx-radio-group/hx-radio-group.d.ts.map +1 -1
  195. package/dist/components/hx-radio-group/hx-radio.d.ts.map +1 -1
  196. package/dist/components/hx-radio-group/hx-radio.styles.d.ts.map +1 -1
  197. package/dist/components/hx-radio-group/index.js +1 -1
  198. package/dist/components/hx-rating/hx-rating.d.ts +3 -3
  199. package/dist/components/hx-rating/hx-rating.d.ts.map +1 -1
  200. package/dist/components/hx-rating/hx-rating.styles.d.ts.map +1 -1
  201. package/dist/components/hx-rating/index.js +1 -1
  202. package/dist/components/hx-select/hx-select.d.ts +17 -11
  203. package/dist/components/hx-select/hx-select.d.ts.map +1 -1
  204. package/dist/components/hx-select/hx-select.styles.d.ts.map +1 -1
  205. package/dist/components/hx-select/index.js +1 -1
  206. package/dist/components/hx-side-nav/hx-nav-item.d.ts +12 -0
  207. package/dist/components/hx-side-nav/hx-nav-item.d.ts.map +1 -1
  208. package/dist/components/hx-side-nav/hx-nav-item.styles.d.ts.map +1 -1
  209. package/dist/components/hx-side-nav/hx-side-nav.d.ts.map +1 -1
  210. package/dist/components/hx-side-nav/hx-side-nav.styles.d.ts.map +1 -1
  211. package/dist/components/hx-side-nav/index.js +1 -1
  212. package/dist/components/hx-skeleton/hx-skeleton.d.ts +2 -2
  213. package/dist/components/hx-skeleton/hx-skeleton.d.ts.map +1 -1
  214. package/dist/components/hx-skeleton/index.js +1 -1
  215. package/dist/components/hx-slider/hx-slider.d.ts +5 -8
  216. package/dist/components/hx-slider/hx-slider.d.ts.map +1 -1
  217. package/dist/components/hx-slider/hx-slider.styles.d.ts.map +1 -1
  218. package/dist/components/hx-slider/index.js +1 -1
  219. package/dist/components/hx-spinner/hx-spinner.d.ts +14 -1
  220. package/dist/components/hx-spinner/hx-spinner.d.ts.map +1 -1
  221. package/dist/components/hx-spinner/hx-spinner.styles.d.ts.map +1 -1
  222. package/dist/components/hx-spinner/index.js +1 -1
  223. package/dist/components/hx-split-button/hx-split-button.d.ts +10 -4
  224. package/dist/components/hx-split-button/hx-split-button.d.ts.map +1 -1
  225. package/dist/components/hx-split-button/hx-split-button.styles.d.ts.map +1 -1
  226. package/dist/components/hx-split-button/index.js +1 -1
  227. package/dist/components/hx-split-panel/hx-split-panel.d.ts.map +1 -1
  228. package/dist/components/hx-split-panel/hx-split-panel.styles.d.ts.map +1 -1
  229. package/dist/components/hx-split-panel/index.js +1 -1
  230. package/dist/components/hx-stack/hx-stack.d.ts.map +1 -1
  231. package/dist/components/hx-stack/index.js +1 -1
  232. package/dist/components/hx-stat/hx-stat.d.ts +7 -2
  233. package/dist/components/hx-stat/hx-stat.d.ts.map +1 -1
  234. package/dist/components/hx-stat/index.js +1 -1
  235. package/dist/components/hx-status-indicator/hx-status-indicator.d.ts +19 -3
  236. package/dist/components/hx-status-indicator/hx-status-indicator.d.ts.map +1 -1
  237. package/dist/components/hx-status-indicator/hx-status-indicator.styles.d.ts.map +1 -1
  238. package/dist/components/hx-status-indicator/index.js +1 -1
  239. package/dist/components/hx-steps/hx-step.d.ts +7 -0
  240. package/dist/components/hx-steps/hx-step.d.ts.map +1 -1
  241. package/dist/components/hx-steps/hx-step.styles.d.ts.map +1 -1
  242. package/dist/components/hx-steps/hx-steps.d.ts.map +1 -1
  243. package/dist/components/hx-steps/index.js +1 -1
  244. package/dist/components/hx-structured-list/hx-structured-list.d.ts +10 -3
  245. package/dist/components/hx-structured-list/hx-structured-list.d.ts.map +1 -1
  246. package/dist/components/hx-structured-list/index.js +1 -1
  247. package/dist/components/hx-style-scope/hx-style-scope.d.ts +71 -0
  248. package/dist/components/hx-style-scope/hx-style-scope.d.ts.map +1 -0
  249. package/dist/components/hx-style-scope/hx-style-scope.styles.d.ts +10 -0
  250. package/dist/components/hx-style-scope/hx-style-scope.styles.d.ts.map +1 -0
  251. package/dist/components/hx-style-scope/index.d.ts +2 -0
  252. package/dist/components/hx-style-scope/index.d.ts.map +1 -0
  253. package/dist/components/hx-style-scope/index.js +5 -0
  254. package/dist/components/hx-style-scope/index.js.map +1 -0
  255. package/dist/components/hx-switch/hx-switch.d.ts +4 -4
  256. package/dist/components/hx-switch/hx-switch.d.ts.map +1 -1
  257. package/dist/components/hx-switch/hx-switch.styles.d.ts.map +1 -1
  258. package/dist/components/hx-switch/index.js +1 -1
  259. package/dist/components/hx-table/hx-table.d.ts +1 -0
  260. package/dist/components/hx-table/hx-table.d.ts.map +1 -1
  261. package/dist/components/hx-table/hx-tbody.d.ts.map +1 -1
  262. package/dist/components/hx-table/hx-td.d.ts.map +1 -1
  263. package/dist/components/hx-table/hx-tfoot.d.ts.map +1 -1
  264. package/dist/components/hx-table/hx-th.d.ts.map +1 -1
  265. package/dist/components/hx-table/hx-thead.d.ts.map +1 -1
  266. package/dist/components/hx-table/hx-tr.d.ts.map +1 -1
  267. package/dist/components/hx-table/index.js +1 -1
  268. package/dist/components/hx-tabs/hx-tab-panel.d.ts.map +1 -1
  269. package/dist/components/hx-tabs/hx-tab-panel.styles.d.ts.map +1 -1
  270. package/dist/components/hx-tabs/hx-tab.d.ts +1 -0
  271. package/dist/components/hx-tabs/hx-tab.d.ts.map +1 -1
  272. package/dist/components/hx-tabs/hx-tab.styles.d.ts.map +1 -1
  273. package/dist/components/hx-tabs/hx-tabs.d.ts +12 -2
  274. package/dist/components/hx-tabs/hx-tabs.d.ts.map +1 -1
  275. package/dist/components/hx-tabs/index.js +1 -1
  276. package/dist/components/hx-tag/hx-tag.d.ts.map +1 -1
  277. package/dist/components/hx-tag/hx-tag.styles.d.ts.map +1 -1
  278. package/dist/components/hx-tag/index.js +1 -1
  279. package/dist/components/hx-text/hx-text.d.ts.map +1 -1
  280. package/dist/components/hx-text/index.js +1 -1
  281. package/dist/components/hx-text-input/hx-text-input.d.ts +16 -15
  282. package/dist/components/hx-text-input/hx-text-input.d.ts.map +1 -1
  283. package/dist/components/hx-text-input/hx-text-input.styles.d.ts.map +1 -1
  284. package/dist/components/hx-text-input/index.js +1 -1
  285. package/dist/components/hx-textarea/hx-textarea.d.ts +4 -4
  286. package/dist/components/hx-textarea/hx-textarea.d.ts.map +1 -1
  287. package/dist/components/hx-textarea/hx-textarea.styles.d.ts.map +1 -1
  288. package/dist/components/hx-textarea/index.js +1 -1
  289. package/dist/components/hx-theme/hx-theme.d.ts +82 -3
  290. package/dist/components/hx-theme/hx-theme.d.ts.map +1 -1
  291. package/dist/components/hx-theme/index.js +1 -1
  292. package/dist/components/hx-time-picker/hx-time-picker.d.ts +6 -1
  293. package/dist/components/hx-time-picker/hx-time-picker.d.ts.map +1 -1
  294. package/dist/components/hx-time-picker/index.js +1 -1
  295. package/dist/components/hx-toast/hx-toast-stack.d.ts +1 -1
  296. package/dist/components/hx-toast/hx-toast-stack.d.ts.map +1 -1
  297. package/dist/components/hx-toast/hx-toast.d.ts +9 -5
  298. package/dist/components/hx-toast/hx-toast.d.ts.map +1 -1
  299. package/dist/components/hx-toast/hx-toast.styles.d.ts.map +1 -1
  300. package/dist/components/hx-toast/index.js +1 -1
  301. package/dist/components/hx-toast/toast-factory.d.ts.map +1 -1
  302. package/dist/components/hx-toggle-button/hx-toggle-button.d.ts +4 -3
  303. package/dist/components/hx-toggle-button/hx-toggle-button.d.ts.map +1 -1
  304. package/dist/components/hx-toggle-button/hx-toggle-button.styles.d.ts.map +1 -1
  305. package/dist/components/hx-toggle-button/index.js +1 -1
  306. package/dist/components/hx-tooltip/hx-tooltip.d.ts +1 -2
  307. package/dist/components/hx-tooltip/hx-tooltip.d.ts.map +1 -1
  308. package/dist/components/hx-tooltip/index.js +1 -1
  309. package/dist/components/hx-top-nav/hx-top-nav.d.ts.map +1 -1
  310. package/dist/components/hx-top-nav/index.js +1 -1
  311. package/dist/components/hx-tree-view/hx-tree-item.d.ts +12 -0
  312. package/dist/components/hx-tree-view/hx-tree-item.d.ts.map +1 -1
  313. package/dist/components/hx-tree-view/hx-tree-view.d.ts +27 -2
  314. package/dist/components/hx-tree-view/hx-tree-view.d.ts.map +1 -1
  315. package/dist/components/hx-tree-view/hx-tree-view.styles.d.ts.map +1 -1
  316. package/dist/components/hx-tree-view/index.js +1 -1
  317. package/dist/components/hx-visually-hidden/hx-visually-hidden.d.ts.map +1 -1
  318. package/dist/components/hx-visually-hidden/index.js +1 -1
  319. package/dist/controllers/helix-audit-controller.d.ts +71 -0
  320. package/dist/controllers/helix-audit-controller.d.ts.map +1 -0
  321. package/dist/css/helix-all.css +9743 -0
  322. package/dist/css/helix-core.css +1839 -0
  323. package/dist/css/helix-data.css +639 -0
  324. package/dist/css/helix-feedback.css +1268 -0
  325. package/dist/css/helix-forms.css +2525 -0
  326. package/dist/css/helix-layout.css +380 -0
  327. package/dist/css/helix-media.css +213 -0
  328. package/dist/css/helix-navigation.css +1131 -0
  329. package/dist/css/helix-overlay.css +643 -0
  330. package/dist/css/helix-tokens.css +432 -0
  331. package/dist/css/helix-utility.css +633 -0
  332. package/dist/css/hx-accordion.css +10 -0
  333. package/dist/css/hx-action-bar.css +117 -0
  334. package/dist/css/hx-alert.css +213 -0
  335. package/dist/css/hx-avatar.css +134 -0
  336. package/dist/css/hx-badge.css +178 -0
  337. package/dist/css/hx-banner.css +203 -0
  338. package/dist/css/hx-breadcrumb.css +36 -0
  339. package/dist/css/hx-button-group.css +91 -0
  340. package/dist/css/hx-button.css +296 -0
  341. package/dist/css/hx-card.css +161 -0
  342. package/dist/css/hx-carousel.css +211 -0
  343. package/dist/css/hx-checkbox-group.css +77 -0
  344. package/dist/css/hx-checkbox.css +219 -0
  345. package/dist/css/hx-clinical-status.css +248 -0
  346. package/dist/css/hx-code-snippet.css +179 -0
  347. package/dist/css/hx-color-picker.css +2 -0
  348. package/dist/css/hx-combobox.css +2 -0
  349. package/dist/css/hx-container.css +82 -0
  350. package/dist/css/hx-copy-button.css +121 -0
  351. package/dist/css/hx-counter.css +51 -0
  352. package/dist/css/hx-data-table.css +207 -0
  353. package/dist/css/hx-date-picker.css +2 -0
  354. package/dist/css/hx-dialog.css +190 -0
  355. package/dist/css/hx-divider.css +87 -0
  356. package/dist/css/hx-drawer.css +262 -0
  357. package/dist/css/hx-dropdown.css +46 -0
  358. package/dist/css/hx-field-label.css +38 -0
  359. package/dist/css/hx-field.css +119 -0
  360. package/dist/css/hx-file-upload.css +241 -0
  361. package/dist/css/hx-form.css +2 -0
  362. package/dist/css/hx-format-date.css +10 -0
  363. package/dist/css/hx-grid.css +14 -0
  364. package/dist/css/hx-help-text.css +50 -0
  365. package/dist/css/hx-icon-button.css +152 -0
  366. package/dist/css/hx-icon.css +73 -0
  367. package/dist/css/hx-image.css +41 -0
  368. package/dist/css/hx-link.css +105 -0
  369. package/dist/css/hx-list.css +48 -0
  370. package/dist/css/hx-menu.css +23 -0
  371. package/dist/css/hx-meter.css +113 -0
  372. package/dist/css/hx-nav.css +242 -0
  373. package/dist/css/hx-number-input.css +246 -0
  374. package/dist/css/hx-overflow-menu.css +133 -0
  375. package/dist/css/hx-pagination.css +193 -0
  376. package/dist/css/hx-patient-banner.css +139 -0
  377. package/dist/css/hx-phi-field.css +97 -0
  378. package/dist/css/hx-popover.css +61 -0
  379. package/dist/css/hx-popup.css +31 -0
  380. package/dist/css/hx-progress-bar.css +133 -0
  381. package/dist/css/hx-progress-ring.css +142 -0
  382. package/dist/css/hx-prose.css +2 -0
  383. package/dist/css/hx-radio-group.css +77 -0
  384. package/dist/css/hx-rating.css +96 -0
  385. package/dist/css/hx-select.css +295 -0
  386. package/dist/css/hx-side-nav.css +149 -0
  387. package/dist/css/hx-skeleton.css +82 -0
  388. package/dist/css/hx-slider.css +287 -0
  389. package/dist/css/hx-spinner.css +116 -0
  390. package/dist/css/hx-split-button.css +309 -0
  391. package/dist/css/hx-split-panel.css +168 -0
  392. package/dist/css/hx-stack.css +104 -0
  393. package/dist/css/hx-stat.css +106 -0
  394. package/dist/css/hx-status-indicator.css +126 -0
  395. package/dist/css/hx-steps.css +52 -0
  396. package/dist/css/hx-structured-list.css +75 -0
  397. package/dist/css/hx-style-scope.css +4 -0
  398. package/dist/css/hx-switch.css +169 -0
  399. package/dist/css/hx-table.css +128 -0
  400. package/dist/css/hx-tabs.css +76 -0
  401. package/dist/css/hx-tag.css +146 -0
  402. package/dist/css/hx-text-input.css +214 -0
  403. package/dist/css/hx-text.css +149 -0
  404. package/dist/css/hx-textarea.css +180 -0
  405. package/dist/css/hx-theme.css +23 -0
  406. package/dist/css/hx-time-picker.css +2 -0
  407. package/dist/css/hx-toast.css +230 -0
  408. package/dist/css/hx-toggle-button.css +207 -0
  409. package/dist/css/hx-tooltip.css +51 -0
  410. package/dist/css/hx-top-nav.css +203 -0
  411. package/dist/css/hx-tree-view.css +22 -0
  412. package/dist/css/hx-visually-hidden.css +26 -0
  413. package/dist/css/index.css +84 -0
  414. package/dist/css/manifest.json +2704 -0
  415. package/dist/index.d.ts +15 -9
  416. package/dist/index.d.ts.map +1 -1
  417. package/dist/index.js +268 -176
  418. package/dist/index.js.map +1 -1
  419. package/dist/mixins/FocusMixin.d.ts +49 -0
  420. package/dist/mixins/FocusMixin.d.ts.map +1 -0
  421. package/dist/mixins/FormMixin.d.ts +69 -0
  422. package/dist/mixins/FormMixin.d.ts.map +1 -0
  423. package/dist/mixins/aria-delegation.d.ts +97 -0
  424. package/dist/mixins/aria-delegation.d.ts.map +1 -0
  425. package/dist/mixins/index.d.ts +5 -0
  426. package/dist/mixins/index.d.ts.map +1 -0
  427. package/dist/shared/FormMixin-Bjvw20G5.js +88 -0
  428. package/dist/shared/FormMixin-Bjvw20G5.js.map +1 -0
  429. package/dist/shared/aria-delegation-CBP9eQ0M.js +107 -0
  430. package/dist/shared/aria-delegation-CBP9eQ0M.js.map +1 -0
  431. package/dist/shared/document-token-adoption-Dym9ALA4.js +15 -0
  432. package/dist/shared/document-token-adoption-Dym9ALA4.js.map +1 -0
  433. package/dist/shared/{hx-accordion-D1kFhdeQ.js → hx-accordion-Cvs-uzZq.js} +86 -58
  434. package/dist/shared/hx-accordion-Cvs-uzZq.js.map +1 -0
  435. package/dist/shared/{hx-action-bar-D4bulGQP.js → hx-action-bar-B2BNlKQv.js} +34 -35
  436. package/dist/shared/hx-action-bar-B2BNlKQv.js.map +1 -0
  437. package/dist/shared/{hx-alert-CSxCF2rr.js → hx-alert-CnDlZO6m.js} +38 -34
  438. package/dist/shared/hx-alert-CnDlZO6m.js.map +1 -0
  439. package/dist/shared/{hx-avatar-Cun-O99h.js → hx-avatar-C68g1G2e.js} +32 -15
  440. package/dist/shared/hx-avatar-C68g1G2e.js.map +1 -0
  441. package/dist/shared/{hx-badge-CsFd2xtw.js → hx-badge-D5vy_5BO.js} +49 -40
  442. package/dist/shared/hx-badge-D5vy_5BO.js.map +1 -0
  443. package/dist/shared/{hx-banner-BTV-X2xF.js → hx-banner-Ccif-GaB.js} +95 -60
  444. package/dist/shared/hx-banner-Ccif-GaB.js.map +1 -0
  445. package/dist/shared/{hx-breadcrumb-item-4IwaLgaO.js → hx-breadcrumb-item-DhxDZI3r.js} +92 -89
  446. package/dist/shared/hx-breadcrumb-item-DhxDZI3r.js.map +1 -0
  447. package/dist/shared/{hx-button-7k-KeCYU.js → hx-button-BF3VwcOJ.js} +128 -63
  448. package/dist/shared/hx-button-BF3VwcOJ.js.map +1 -0
  449. package/dist/shared/{hx-button-group-CWjWv-wS.js → hx-button-group-B8u25JjV.js} +9 -9
  450. package/dist/shared/hx-button-group-B8u25JjV.js.map +1 -0
  451. package/dist/shared/{hx-card-0hT3G5hi.js → hx-card-Dps4jvG9.js} +34 -34
  452. package/dist/shared/hx-card-Dps4jvG9.js.map +1 -0
  453. package/dist/shared/{hx-carousel-item-DgeYyYZJ.js → hx-carousel-item-Dmo9pGFm.js} +25 -25
  454. package/dist/shared/hx-carousel-item-Dmo9pGFm.js.map +1 -0
  455. package/dist/shared/{hx-checkbox-BvjO-O41.js → hx-checkbox-99zyEKj7.js} +67 -70
  456. package/dist/shared/hx-checkbox-99zyEKj7.js.map +1 -0
  457. package/dist/shared/{hx-checkbox-group-Z5VvWzcj.js → hx-checkbox-group-J2CGHDwY.js} +48 -42
  458. package/dist/shared/hx-checkbox-group-J2CGHDwY.js.map +1 -0
  459. package/dist/shared/hx-clinical-status-CGx5q5PL.js +469 -0
  460. package/dist/shared/hx-clinical-status-CGx5q5PL.js.map +1 -0
  461. package/dist/shared/{hx-code-snippet-DqzPkH4K.js → hx-code-snippet-vAzJjm2O.js} +57 -48
  462. package/dist/shared/hx-code-snippet-vAzJjm2O.js.map +1 -0
  463. package/dist/shared/{hx-color-picker-Da8z6AlQ.js → hx-color-picker-CzMu9Fzw.js} +153 -137
  464. package/dist/shared/hx-color-picker-CzMu9Fzw.js.map +1 -0
  465. package/dist/shared/{hx-combobox-CivfelTS.js → hx-combobox-Dhw33U40.js} +17 -17
  466. package/dist/shared/hx-combobox-Dhw33U40.js.map +1 -0
  467. package/dist/shared/{hx-container-DLUKnTi9.js → hx-container-Dz4v6FSd.js} +15 -15
  468. package/dist/shared/hx-container-Dz4v6FSd.js.map +1 -0
  469. package/dist/shared/{hx-copy-button--0dymSvw.js → hx-copy-button-Dcul7VwZ.js} +52 -45
  470. package/dist/shared/hx-copy-button-Dcul7VwZ.js.map +1 -0
  471. package/dist/shared/hx-counter-czWWvciz.js +185 -0
  472. package/dist/shared/hx-counter-czWWvciz.js.map +1 -0
  473. package/dist/shared/{hx-data-table-BWvd5NNx.js → hx-data-table-CAVgT4JG.js} +89 -53
  474. package/dist/shared/hx-data-table-CAVgT4JG.js.map +1 -0
  475. package/dist/shared/{hx-date-picker-6voxxxNE.js → hx-date-picker-Be8lTTO7.js} +105 -92
  476. package/dist/shared/hx-date-picker-Be8lTTO7.js.map +1 -0
  477. package/dist/shared/{hx-dialog-DkUSnVgw.js → hx-dialog-DTGX2FbP.js} +98 -89
  478. package/dist/shared/hx-dialog-DTGX2FbP.js.map +1 -0
  479. package/dist/shared/{hx-divider-DNNs4e8q.js → hx-divider-BJjarZ9z.js} +15 -15
  480. package/dist/shared/hx-divider-BJjarZ9z.js.map +1 -0
  481. package/dist/shared/{hx-drawer-CJcRZcns.js → hx-drawer-C5qI7jf1.js} +87 -47
  482. package/dist/shared/hx-drawer-C5qI7jf1.js.map +1 -0
  483. package/dist/shared/{hx-dropdown-Bo0KTM1A.js → hx-dropdown-BxNnUDyD.js} +56 -41
  484. package/dist/shared/hx-dropdown-BxNnUDyD.js.map +1 -0
  485. package/dist/shared/{hx-field-3MmzJ4kZ.js → hx-field-J1IUbQ8n.js} +21 -21
  486. package/dist/shared/hx-field-J1IUbQ8n.js.map +1 -0
  487. package/dist/shared/{hx-field-label-Bg-EWvqF.js → hx-field-label-DhVdkhCN.js} +11 -14
  488. package/dist/shared/hx-field-label-DhVdkhCN.js.map +1 -0
  489. package/dist/shared/{hx-file-upload-ByjAgfNy.js → hx-file-upload-79nMhnM_.js} +79 -88
  490. package/dist/shared/hx-file-upload-79nMhnM_.js.map +1 -0
  491. package/dist/shared/{hx-form-BpS6v3Iu.js → hx-form-fJE-FJQV.js} +36 -32
  492. package/dist/shared/{hx-form-BpS6v3Iu.js.map → hx-form-fJE-FJQV.js.map} +1 -1
  493. package/dist/shared/{hx-format-date-BdnWV2kX.js → hx-format-date-BMukpO2t.js} +19 -17
  494. package/dist/shared/hx-format-date-BMukpO2t.js.map +1 -0
  495. package/dist/shared/{hx-grid-gEjuF0cR.js → hx-grid-CO6JZ6Kn.js} +12 -12
  496. package/dist/shared/hx-grid-CO6JZ6Kn.js.map +1 -0
  497. package/dist/shared/{hx-help-text-BAcEGRUE.js → hx-help-text-CYGvBLET.js} +13 -13
  498. package/dist/shared/hx-help-text-CYGvBLET.js.map +1 -0
  499. package/dist/shared/{hx-icon-CP6OnLoM.js → hx-icon-C1hDsw-b.js} +15 -15
  500. package/dist/shared/hx-icon-C1hDsw-b.js.map +1 -0
  501. package/dist/shared/{hx-icon-button-DzH_bRtC.js → hx-icon-button-DOWKUs0-.js} +10 -10
  502. package/dist/shared/hx-icon-button-DOWKUs0-.js.map +1 -0
  503. package/dist/shared/{hx-image-C6pGiI6c.js → hx-image-BqABFHGZ.js} +21 -21
  504. package/dist/shared/hx-image-BqABFHGZ.js.map +1 -0
  505. package/dist/shared/{hx-link-Tmk_YPvW.js → hx-link-CAFRuAKJ.js} +27 -25
  506. package/dist/shared/hx-link-CAFRuAKJ.js.map +1 -0
  507. package/dist/shared/{hx-list-DwInEX2H.js → hx-list-zbgO-9Xe.js} +12 -12
  508. package/dist/shared/hx-list-zbgO-9Xe.js.map +1 -0
  509. package/dist/shared/{hx-menu-divider-DR4G_rqw.js → hx-menu-divider-B1TIKAaq.js} +50 -30
  510. package/dist/shared/hx-menu-divider-B1TIKAaq.js.map +1 -0
  511. package/dist/shared/{hx-meter-uXkTZq-W.js → hx-meter-BWNeWrg2.js} +18 -18
  512. package/dist/shared/hx-meter-BWNeWrg2.js.map +1 -0
  513. package/dist/shared/{hx-nav-3JsN2Oak.js → hx-nav-DqNzqH2s.js} +119 -107
  514. package/dist/shared/hx-nav-DqNzqH2s.js.map +1 -0
  515. package/dist/shared/{hx-nav-item-D3EJatzc.js → hx-nav-item-D-9uG-Tt.js} +181 -115
  516. package/dist/shared/hx-nav-item-D-9uG-Tt.js.map +1 -0
  517. package/dist/shared/{hx-number-input-CIpL2BEh.js → hx-number-input-D7Jczm0J.js} +42 -41
  518. package/dist/shared/hx-number-input-D7Jczm0J.js.map +1 -0
  519. package/dist/shared/{hx-overflow-menu-2kgOJ_ht.js → hx-overflow-menu-UvSgk7yV.js} +20 -16
  520. package/dist/shared/hx-overflow-menu-UvSgk7yV.js.map +1 -0
  521. package/dist/shared/{hx-pagination-Blt-fFqV.js → hx-pagination-DBovb97q.js} +91 -75
  522. package/dist/shared/hx-pagination-DBovb97q.js.map +1 -0
  523. package/dist/shared/hx-patient-banner-DLeU2pC2.js +297 -0
  524. package/dist/shared/hx-patient-banner-DLeU2pC2.js.map +1 -0
  525. package/dist/shared/hx-phi-field-BwlVKfHI.js +295 -0
  526. package/dist/shared/hx-phi-field-BwlVKfHI.js.map +1 -0
  527. package/dist/shared/{hx-popover-DxE67miP.js → hx-popover-DdjLdSr8.js} +96 -69
  528. package/dist/shared/hx-popover-DdjLdSr8.js.map +1 -0
  529. package/dist/shared/{hx-popup-Dg6n_PbY.js → hx-popup-DEYZKeH1.js} +15 -15
  530. package/dist/shared/hx-popup-DEYZKeH1.js.map +1 -0
  531. package/dist/shared/{hx-progress-bar-Dm_EHyng.js → hx-progress-bar-CdbFsimb.js} +44 -42
  532. package/dist/shared/hx-progress-bar-CdbFsimb.js.map +1 -0
  533. package/dist/shared/{hx-progress-ring-DpxBDD5d.js → hx-progress-ring-3YcGRxes.js} +8 -8
  534. package/dist/shared/hx-progress-ring-3YcGRxes.js.map +1 -0
  535. package/dist/shared/hx-prose-Ml_L2zje.js.map +1 -1
  536. package/dist/shared/{hx-radio-BywgVSEu.js → hx-radio-BCEpX1tj.js} +40 -39
  537. package/dist/shared/hx-radio-BCEpX1tj.js.map +1 -0
  538. package/dist/shared/{hx-rating-CUWBQ0fZ.js → hx-rating-BXnSN-Ln.js} +92 -96
  539. package/dist/shared/hx-rating-BXnSN-Ln.js.map +1 -0
  540. package/dist/shared/{hx-select-BwDwxk-M.js → hx-select-vzsOOYNx.js} +137 -98
  541. package/dist/shared/hx-select-vzsOOYNx.js.map +1 -0
  542. package/dist/shared/{hx-skeleton-BHvALyd7.js → hx-skeleton-Dikv9b7p.js} +6 -6
  543. package/dist/shared/hx-skeleton-Dikv9b7p.js.map +1 -0
  544. package/dist/shared/{hx-slider-D_0EKJyk.js → hx-slider-DnncjdOT.js} +31 -26
  545. package/dist/shared/hx-slider-DnncjdOT.js.map +1 -0
  546. package/dist/shared/{hx-spinner-DMn4SChS.js → hx-spinner-B52nJ4Vt.js} +15 -14
  547. package/dist/shared/hx-spinner-B52nJ4Vt.js.map +1 -0
  548. package/dist/shared/{hx-split-button-CypgLXw1.js → hx-split-button-BJHIszDb.js} +44 -35
  549. package/dist/shared/hx-split-button-BJHIszDb.js.map +1 -0
  550. package/dist/shared/{hx-split-panel-CV_Kr4EK.js → hx-split-panel-uNW9xrA3.js} +18 -15
  551. package/dist/shared/hx-split-panel-uNW9xrA3.js.map +1 -0
  552. package/dist/shared/{hx-stack-BStY1RmV.js → hx-stack-BHc4gVv_.js} +9 -9
  553. package/dist/shared/hx-stack-BHc4gVv_.js.map +1 -0
  554. package/dist/shared/{hx-stat-CHntLHJM.js → hx-stat-BfgKgBeq.js} +43 -35
  555. package/dist/shared/hx-stat-BfgKgBeq.js.map +1 -0
  556. package/dist/shared/{hx-status-indicator-C1BwEvUw.js → hx-status-indicator-C146uMF0.js} +81 -40
  557. package/dist/shared/hx-status-indicator-C146uMF0.js.map +1 -0
  558. package/dist/shared/{hx-step-BIVWSPxd.js → hx-step-C0Unvyen.js} +48 -84
  559. package/dist/shared/hx-step-C0Unvyen.js.map +1 -0
  560. package/dist/shared/{hx-structured-list-CMWllxGg.js → hx-structured-list-3R69RETR.js} +25 -22
  561. package/dist/shared/hx-structured-list-3R69RETR.js.map +1 -0
  562. package/dist/shared/hx-style-scope-D3dsKS58.js +126 -0
  563. package/dist/shared/hx-style-scope-D3dsKS58.js.map +1 -0
  564. package/dist/shared/{hx-switch-BgX8kuWt.js → hx-switch-BCNpbuk-.js} +14 -11
  565. package/dist/shared/hx-switch-BCNpbuk-.js.map +1 -0
  566. package/dist/shared/{hx-tab-panel-DhOq67jj.js → hx-tab-panel-D7BTBgDQ.js} +165 -126
  567. package/dist/shared/hx-tab-panel-D7BTBgDQ.js.map +1 -0
  568. package/dist/shared/{hx-tag-CzOTDcXI.js → hx-tag-C2E-6fJ3.js} +20 -19
  569. package/dist/shared/hx-tag-C2E-6fJ3.js.map +1 -0
  570. package/dist/shared/{hx-td-h6oeW6YC.js → hx-td-DWcp2XDO.js} +49 -46
  571. package/dist/shared/hx-td-DWcp2XDO.js.map +1 -0
  572. package/dist/shared/{hx-text-DTXjiviE.js → hx-text-DxyBxz25.js} +27 -27
  573. package/dist/shared/hx-text-DxyBxz25.js.map +1 -0
  574. package/dist/shared/hx-text-input-2LTGt0vQ.js +576 -0
  575. package/dist/shared/hx-text-input-2LTGt0vQ.js.map +1 -0
  576. package/dist/shared/{hx-textarea-BgX7rxyo.js → hx-textarea-BZspivFK.js} +23 -23
  577. package/dist/shared/hx-textarea-BZspivFK.js.map +1 -0
  578. package/dist/shared/hx-theme-J2YEpSIL.js +300 -0
  579. package/dist/shared/hx-theme-J2YEpSIL.js.map +1 -0
  580. package/dist/shared/{hx-time-picker-DmLu7WUC.js → hx-time-picker-CVrw4tju.js} +89 -88
  581. package/dist/shared/hx-time-picker-CVrw4tju.js.map +1 -0
  582. package/dist/shared/{hx-toggle-button-D1jpDvSA.js → hx-toggle-button-Ss7Gppx3.js} +14 -11
  583. package/dist/shared/hx-toggle-button-Ss7Gppx3.js.map +1 -0
  584. package/dist/shared/{hx-tooltip-kh7QFPKu.js → hx-tooltip-xRNjEX7_.js} +26 -21
  585. package/dist/shared/hx-tooltip-xRNjEX7_.js.map +1 -0
  586. package/dist/shared/{hx-top-nav-DYlnzDaU.js → hx-top-nav-28mxYGuj.js} +7 -7
  587. package/dist/shared/hx-top-nav-28mxYGuj.js.map +1 -0
  588. package/dist/shared/{hx-tree-item-BP6UF_H1.js → hx-tree-item-C-cRw_ZA.js} +170 -106
  589. package/dist/shared/hx-tree-item-C-cRw_ZA.js.map +1 -0
  590. package/dist/shared/{hx-visually-hidden-CCTQTjbR.js → hx-visually-hidden-D6Dv2l8l.js} +13 -13
  591. package/dist/shared/hx-visually-hidden-D6Dv2l8l.js.map +1 -0
  592. package/dist/shared/id-counter-JhvVCnjh.js +143 -0
  593. package/dist/shared/id-counter-JhvVCnjh.js.map +1 -0
  594. package/dist/shared/{toast-factory-DTy-qN8r.js → toast-factory-oPHbhMZI.js} +58 -46
  595. package/dist/shared/toast-factory-oPHbhMZI.js.map +1 -0
  596. package/dist/utilities/adoptedStylesheetRegistry.d.ts +47 -0
  597. package/dist/utilities/adoptedStylesheetRegistry.d.ts.map +1 -0
  598. package/dist/utilities/document-token-adoption.d.ts +10 -0
  599. package/dist/utilities/document-token-adoption.d.ts.map +1 -0
  600. package/dist/utilities/generateScopedSelectors.d.ts +30 -0
  601. package/dist/utilities/generateScopedSelectors.d.ts.map +1 -0
  602. package/dist/utilities/injectLightStyles.d.ts +37 -0
  603. package/dist/utilities/injectLightStyles.d.ts.map +1 -0
  604. package/dist/utilities/lightStyleRegistry.d.ts +41 -0
  605. package/dist/utilities/lightStyleRegistry.d.ts.map +1 -0
  606. package/dist/utilities/sheetManager.d.ts +62 -0
  607. package/dist/utilities/sheetManager.d.ts.map +1 -0
  608. package/dist/utils/contrast-checker.d.ts +86 -0
  609. package/dist/utils/contrast-checker.d.ts.map +1 -0
  610. package/dist/utils/token-merger.d.ts +24 -0
  611. package/dist/utils/token-merger.d.ts.map +1 -0
  612. package/fouc.css +37 -0
  613. package/package.json +28 -6
  614. package/dist/shared/hx-accordion-D1kFhdeQ.js.map +0 -1
  615. package/dist/shared/hx-action-bar-D4bulGQP.js.map +0 -1
  616. package/dist/shared/hx-alert-CSxCF2rr.js.map +0 -1
  617. package/dist/shared/hx-avatar-Cun-O99h.js.map +0 -1
  618. package/dist/shared/hx-badge-CsFd2xtw.js.map +0 -1
  619. package/dist/shared/hx-banner-BTV-X2xF.js.map +0 -1
  620. package/dist/shared/hx-breadcrumb-item-4IwaLgaO.js.map +0 -1
  621. package/dist/shared/hx-button-7k-KeCYU.js.map +0 -1
  622. package/dist/shared/hx-button-group-CWjWv-wS.js.map +0 -1
  623. package/dist/shared/hx-card-0hT3G5hi.js.map +0 -1
  624. package/dist/shared/hx-carousel-item-DgeYyYZJ.js.map +0 -1
  625. package/dist/shared/hx-checkbox-BvjO-O41.js.map +0 -1
  626. package/dist/shared/hx-checkbox-group-Z5VvWzcj.js.map +0 -1
  627. package/dist/shared/hx-code-snippet-DqzPkH4K.js.map +0 -1
  628. package/dist/shared/hx-color-picker-Da8z6AlQ.js.map +0 -1
  629. package/dist/shared/hx-combobox-CivfelTS.js.map +0 -1
  630. package/dist/shared/hx-container-DLUKnTi9.js.map +0 -1
  631. package/dist/shared/hx-copy-button--0dymSvw.js.map +0 -1
  632. package/dist/shared/hx-counter-Duf00H7p.js +0 -147
  633. package/dist/shared/hx-counter-Duf00H7p.js.map +0 -1
  634. package/dist/shared/hx-data-table-BWvd5NNx.js.map +0 -1
  635. package/dist/shared/hx-date-picker-6voxxxNE.js.map +0 -1
  636. package/dist/shared/hx-dialog-DkUSnVgw.js.map +0 -1
  637. package/dist/shared/hx-divider-DNNs4e8q.js.map +0 -1
  638. package/dist/shared/hx-drawer-CJcRZcns.js.map +0 -1
  639. package/dist/shared/hx-dropdown-Bo0KTM1A.js.map +0 -1
  640. package/dist/shared/hx-field-3MmzJ4kZ.js.map +0 -1
  641. package/dist/shared/hx-field-label-Bg-EWvqF.js.map +0 -1
  642. package/dist/shared/hx-file-upload-ByjAgfNy.js.map +0 -1
  643. package/dist/shared/hx-format-date-BdnWV2kX.js.map +0 -1
  644. package/dist/shared/hx-grid-gEjuF0cR.js.map +0 -1
  645. package/dist/shared/hx-help-text-BAcEGRUE.js.map +0 -1
  646. package/dist/shared/hx-icon-CP6OnLoM.js.map +0 -1
  647. package/dist/shared/hx-icon-button-DzH_bRtC.js.map +0 -1
  648. package/dist/shared/hx-image-C6pGiI6c.js.map +0 -1
  649. package/dist/shared/hx-link-Tmk_YPvW.js.map +0 -1
  650. package/dist/shared/hx-list-DwInEX2H.js.map +0 -1
  651. package/dist/shared/hx-menu-divider-DR4G_rqw.js.map +0 -1
  652. package/dist/shared/hx-meter-uXkTZq-W.js.map +0 -1
  653. package/dist/shared/hx-nav-3JsN2Oak.js.map +0 -1
  654. package/dist/shared/hx-nav-item-D3EJatzc.js.map +0 -1
  655. package/dist/shared/hx-number-input-CIpL2BEh.js.map +0 -1
  656. package/dist/shared/hx-overflow-menu-2kgOJ_ht.js.map +0 -1
  657. package/dist/shared/hx-pagination-Blt-fFqV.js.map +0 -1
  658. package/dist/shared/hx-popover-DxE67miP.js.map +0 -1
  659. package/dist/shared/hx-popup-Dg6n_PbY.js.map +0 -1
  660. package/dist/shared/hx-progress-bar-Dm_EHyng.js.map +0 -1
  661. package/dist/shared/hx-progress-ring-DpxBDD5d.js.map +0 -1
  662. package/dist/shared/hx-radio-BywgVSEu.js.map +0 -1
  663. package/dist/shared/hx-rating-CUWBQ0fZ.js.map +0 -1
  664. package/dist/shared/hx-select-BwDwxk-M.js.map +0 -1
  665. package/dist/shared/hx-skeleton-BHvALyd7.js.map +0 -1
  666. package/dist/shared/hx-slider-D_0EKJyk.js.map +0 -1
  667. package/dist/shared/hx-spinner-DMn4SChS.js.map +0 -1
  668. package/dist/shared/hx-split-button-CypgLXw1.js.map +0 -1
  669. package/dist/shared/hx-split-panel-CV_Kr4EK.js.map +0 -1
  670. package/dist/shared/hx-stack-BStY1RmV.js.map +0 -1
  671. package/dist/shared/hx-stat-CHntLHJM.js.map +0 -1
  672. package/dist/shared/hx-status-indicator-C1BwEvUw.js.map +0 -1
  673. package/dist/shared/hx-step-BIVWSPxd.js.map +0 -1
  674. package/dist/shared/hx-structured-list-CMWllxGg.js.map +0 -1
  675. package/dist/shared/hx-switch-BgX8kuWt.js.map +0 -1
  676. package/dist/shared/hx-tab-panel-DhOq67jj.js.map +0 -1
  677. package/dist/shared/hx-tag-CzOTDcXI.js.map +0 -1
  678. package/dist/shared/hx-td-h6oeW6YC.js.map +0 -1
  679. package/dist/shared/hx-text-DTXjiviE.js.map +0 -1
  680. package/dist/shared/hx-text-input-CqEdDHMU.js +0 -461
  681. package/dist/shared/hx-text-input-CqEdDHMU.js.map +0 -1
  682. package/dist/shared/hx-textarea-BgX7rxyo.js.map +0 -1
  683. package/dist/shared/hx-theme-6GDoUG8j.js +0 -176
  684. package/dist/shared/hx-theme-6GDoUG8j.js.map +0 -1
  685. package/dist/shared/hx-time-picker-DmLu7WUC.js.map +0 -1
  686. package/dist/shared/hx-toggle-button-D1jpDvSA.js.map +0 -1
  687. package/dist/shared/hx-tooltip-kh7QFPKu.js.map +0 -1
  688. package/dist/shared/hx-top-nav-DYlnzDaU.js.map +0 -1
  689. package/dist/shared/hx-tree-item-BP6UF_H1.js.map +0 -1
  690. package/dist/shared/hx-visually-hidden-CCTQTjbR.js.map +0 -1
  691. package/dist/shared/toast-factory-DTy-qN8r.js.map +0 -1
@@ -1,461 +0,0 @@
1
- import { css as x, LitElement as _, nothing as f, html as n } from "lit";
2
- import { property as l, query as m, state as h, customElement as v } from "lit/decorators.js";
3
- import { classMap as c } from "lit/directives/class-map.js";
4
- import { ifDefined as s } from "lit/directives/if-defined.js";
5
- import { live as g } from "lit/directives/live.js";
6
- import { tokenStyles as b } from "@helixui/tokens/lit";
7
- const y = x`
8
- :host {
9
- display: block;
10
- }
11
-
12
- :host([disabled]) {
13
- opacity: var(--hx-opacity-disabled, 0.5);
14
- pointer-events: none;
15
- }
16
-
17
- * {
18
- box-sizing: border-box;
19
- }
20
-
21
- .field {
22
- display: flex;
23
- flex-direction: column;
24
- gap: var(--hx-space-1, 0.25rem);
25
- font-family: var(--hx-input-font-family, var(--hx-font-family-sans, sans-serif));
26
- }
27
-
28
- /* ─── Label ─── */
29
-
30
- .field__label-wrapper {
31
- display: contents;
32
- }
33
-
34
- .field__label {
35
- display: flex;
36
- align-items: baseline;
37
- gap: var(--hx-space-1, 0.25rem);
38
- font-size: var(--hx-font-size-sm, 0.875rem);
39
- font-weight: var(--hx-font-weight-medium, 500);
40
- color: var(--hx-input-label-color, var(--hx-color-neutral-700, #343a40));
41
- line-height: var(--hx-line-height-normal, 1.5);
42
- }
43
-
44
- .field__required-marker {
45
- color: var(--hx-input-error-color, var(--hx-color-error-text, #b91c1c));
46
- font-weight: var(--hx-font-weight-bold, 700);
47
- }
48
-
49
- /* ─── Input Wrapper ─── */
50
-
51
- .field__input-wrapper {
52
- display: flex;
53
- align-items: center;
54
- border: var(--hx-border-width-thin, 1px) solid
55
- var(--hx-input-border-color, var(--hx-color-neutral-300, #ced4da));
56
- border-radius: var(--hx-input-border-radius, var(--hx-border-radius-md, 0.375rem));
57
- background-color: var(--hx-input-bg, var(--hx-color-neutral-0, #ffffff));
58
- transition:
59
- border-color var(--hx-transition-fast, 150ms ease),
60
- box-shadow var(--hx-transition-fast, 150ms ease);
61
- overflow: hidden;
62
- }
63
-
64
- .field__input-wrapper:focus-within {
65
- border-color: var(--hx-input-focus-ring-color, var(--hx-focus-ring-color, #2563eb));
66
- box-shadow: 0 0 0 var(--hx-focus-ring-width, 2px)
67
- color-mix(
68
- in srgb,
69
- var(--hx-input-focus-ring-color, var(--hx-focus-ring-color, #2563eb))
70
- calc(var(--hx-focus-ring-opacity, 0.25) * 100%),
71
- transparent
72
- );
73
- }
74
-
75
- /* ─── Error State ─── */
76
-
77
- .field--error .field__input-wrapper {
78
- border-color: var(--hx-input-error-color, var(--hx-color-error-500, #dc3545));
79
- }
80
-
81
- .field--error .field__input-wrapper:focus-within {
82
- border-color: var(--hx-input-error-color, var(--hx-color-error-500, #dc3545));
83
- box-shadow: 0 0 0 var(--hx-focus-ring-width, 2px)
84
- color-mix(
85
- in srgb,
86
- var(--hx-input-error-color, var(--hx-color-error-500, #dc3545))
87
- calc(var(--hx-focus-ring-opacity, 0.25) * 100%),
88
- transparent
89
- );
90
- }
91
-
92
- /* ─── Slots (Prefix / Suffix) ─── */
93
-
94
- .field__prefix,
95
- .field__suffix {
96
- display: flex;
97
- align-items: center;
98
- color: var(--hx-color-neutral-500, #6c757d);
99
- flex-shrink: 0;
100
- }
101
-
102
- /* Only add padding when slot has content — avoids phantom space on empty slots */
103
- .field__prefix--filled {
104
- padding: 0 var(--hx-space-3, 0.75rem);
105
- }
106
-
107
- .field__suffix--filled {
108
- padding: 0 var(--hx-space-3, 0.75rem);
109
- }
110
-
111
- /* ─── Native Input ─── */
112
-
113
- .field__input {
114
- flex: 1;
115
- border: none;
116
- outline: none;
117
- background: transparent;
118
- padding: var(--hx-space-2, 0.5rem) var(--hx-space-3, 0.75rem);
119
- font-family: inherit;
120
- font-size: var(--hx-font-size-md, 1rem);
121
- color: var(--hx-input-color, var(--hx-color-neutral-800, #212529));
122
- line-height: var(--hx-line-height-normal, 1.5);
123
- min-height: var(--hx-size-10, 2.5rem);
124
- width: 100%;
125
- }
126
-
127
- .field__input::placeholder {
128
- color: var(--hx-color-neutral-400, #adb5bd);
129
- }
130
-
131
- .field__input:disabled {
132
- cursor: not-allowed;
133
- }
134
-
135
- /* ─── Size Variants ─── */
136
-
137
- .field--size-sm .field__input {
138
- padding: var(--hx-space-1, 0.25rem) var(--hx-space-2, 0.5rem);
139
- min-height: var(--hx-size-8, 2rem);
140
- font-size: var(--hx-input-sm-font-size, 0.875rem);
141
- }
142
-
143
- .field--size-md .field__input {
144
- /* md is the default — no overrides needed */
145
- }
146
-
147
- .field--size-lg .field__input {
148
- padding: var(--hx-space-3, 0.75rem) var(--hx-space-4, 1rem);
149
- min-height: var(--hx-size-12, 3rem);
150
- font-size: var(--hx-input-lg-font-size, 1.125rem);
151
- }
152
-
153
- /* ─── Help Text & Error Messages ─── */
154
-
155
- .field__help-text {
156
- font-size: var(--hx-font-size-xs, 0.75rem);
157
- color: var(--hx-color-neutral-500, #6c757d);
158
- line-height: var(--hx-line-height-normal, 1.5);
159
- }
160
-
161
- .field__error {
162
- font-size: var(--hx-font-size-xs, 0.75rem);
163
- color: var(--hx-input-error-color, var(--hx-color-error-text, #b91c1c));
164
- line-height: var(--hx-line-height-normal, 1.5);
165
- }
166
-
167
- /* ─── Motion ─── */
168
-
169
- @media (prefers-reduced-motion: reduce) {
170
- .field__input-wrapper {
171
- transition: none;
172
- }
173
- }
174
- `;
175
- var S = Object.defineProperty, $ = Object.getOwnPropertyDescriptor, i = (e, r, a, d) => {
176
- for (var o = d > 1 ? void 0 : d ? $(r, a) : r, p = e.length - 1, u; p >= 0; p--)
177
- (u = e[p]) && (o = (d ? u(r, a, o) : u(o)) || o);
178
- return d && o && S(r, a, o), o;
179
- };
180
- let w = 0, t = class extends _ {
181
- constructor() {
182
- super(), this.label = "", this.placeholder = "", this.value = "", this.type = "text", this.required = !1, this.disabled = !1, this.error = "", this.helpText = "", this.name = "", this.ariaLabel = null, this.readonly = !1, this.minlength = void 0, this.maxlength = void 0, this.pattern = "", this.autocomplete = "", this.requiredMessage = "This field is required.", this.size = "md", this._hasLabelSlot = !1, this._hasErrorSlot = !1, this._hasPrefixSlot = !1, this._hasSuffixSlot = !1, this._hasHelpTextSlot = !1, this._inputId = `hx-text-input-${++w}`, this._helpTextId = `${this._inputId}-help`, this._errorId = `${this._inputId}-error`, this._internals = this.attachInternals();
183
- }
184
- /** @internal */
185
- _handleLabelSlotChange(e) {
186
- const r = e.target;
187
- if (this._hasLabelSlot = r.assignedElements().length > 0, this._hasLabelSlot) {
188
- const a = r.assignedElements()[0];
189
- a && !a.id && (a.id = `${this._inputId}-slotted-label`);
190
- }
191
- }
192
- /** @internal */
193
- _handleErrorSlotChange(e) {
194
- const r = e.target;
195
- this._hasErrorSlot = r.assignedElements().length > 0;
196
- }
197
- /** @internal */
198
- _handlePrefixSlotChange(e) {
199
- const r = e.target;
200
- this._hasPrefixSlot = r.assignedElements().length > 0;
201
- }
202
- /** @internal */
203
- _handleSuffixSlotChange(e) {
204
- const r = e.target;
205
- this._hasSuffixSlot = r.assignedElements().length > 0;
206
- }
207
- /** @internal */
208
- _handleHelpTextSlotChange(e) {
209
- const r = e.target;
210
- this._hasHelpTextSlot = r.assignedElements().length > 0;
211
- }
212
- // ─── Lifecycle ───
213
- updated(e) {
214
- super.updated(e), e.has("value") && this._internals.setFormValue(this.value), (e.has("value") || e.has("required") || e.has("minlength") || e.has("maxlength")) && this._updateValidity();
215
- }
216
- // ─── Form Integration ───
217
- /** Returns the associated form element, if any. */
218
- get form() {
219
- return this._internals.form;
220
- }
221
- /** Returns the validation message. */
222
- get validationMessage() {
223
- return this._internals.validationMessage;
224
- }
225
- /** Returns the ValidityState object. */
226
- get validity() {
227
- return this._internals.validity;
228
- }
229
- /** Checks whether the input satisfies its constraints. */
230
- checkValidity() {
231
- return this._internals.checkValidity();
232
- }
233
- /** Reports validity and shows the browser's constraint validation UI. */
234
- reportValidity() {
235
- return this._internals.reportValidity();
236
- }
237
- /** @internal */
238
- _updateValidity() {
239
- this.required && !this.value ? this._internals.setValidity(
240
- { valueMissing: !0 },
241
- this.error || this.requiredMessage,
242
- this._input
243
- ) : this.minlength !== void 0 && this.value.length > 0 && this.value.length < this.minlength ? this._internals.setValidity(
244
- { tooShort: !0 },
245
- this.error || `Please lengthen this text to ${this.minlength} characters or more.`,
246
- this._input
247
- ) : this.maxlength !== void 0 && this.value.length > this.maxlength ? this._internals.setValidity(
248
- { tooLong: !0 },
249
- this.error || `Please shorten this text to ${this.maxlength} characters or fewer.`,
250
- this._input
251
- ) : this._internals.setValidity({});
252
- }
253
- // Called by the form when it resets
254
- formResetCallback() {
255
- this.value = "", this._internals.setFormValue("");
256
- }
257
- // Called when the form restores state (e.g., back/forward navigation)
258
- formStateRestoreCallback(e, r) {
259
- typeof e == "string" && (this.value = e);
260
- }
261
- // Called when a parent fieldset is disabled/enabled
262
- formDisabledCallback(e) {
263
- this.disabled = e;
264
- }
265
- // ─── Event Handling ───
266
- /** @internal */
267
- _handleInput(e) {
268
- const r = e.target;
269
- this.value = r.value, this._internals.setFormValue(this.value), this.dispatchEvent(
270
- new CustomEvent("hx-input", {
271
- bubbles: !0,
272
- composed: !0,
273
- detail: { value: this.value }
274
- })
275
- );
276
- }
277
- /** @internal */
278
- _handleChange(e) {
279
- const r = e.target;
280
- this.value = r.value, this._internals.setFormValue(this.value), this._updateValidity(), this.dispatchEvent(
281
- new CustomEvent("hx-change", {
282
- bubbles: !0,
283
- composed: !0,
284
- detail: { value: this.value }
285
- })
286
- );
287
- }
288
- // ─── Public Methods ───
289
- /** Moves focus to the input element. */
290
- focus(e) {
291
- var r;
292
- (r = this._input) == null || r.focus(e);
293
- }
294
- /** Selects all text in the input. */
295
- select() {
296
- var e;
297
- (e = this._input) == null || e.select();
298
- }
299
- render() {
300
- const e = !!this.error || this._hasErrorSlot, r = {
301
- field: !0,
302
- "field--error": e,
303
- "field--disabled": this.disabled,
304
- "field--required": this.required,
305
- [`field--size-${this.size}`]: !0
306
- }, a = [
307
- e ? this._errorId : null,
308
- this.helpText || this._hasHelpTextSlot ? this._helpTextId : null
309
- ].filter(Boolean).join(" ") || void 0;
310
- return n`
311
- <div part="field" class=${c(r)}>
312
- <div class="field__label-wrapper">
313
- <slot name="label" @slotchange=${this._handleLabelSlotChange}>
314
- ${this.label ? n`
315
- <label part="label" class="field__label" for=${this._inputId}>
316
- ${this.label}
317
- ${this.required ? n`<span class="field__required-marker" aria-hidden="true">*</span>` : f}
318
- </label>
319
- ` : f}
320
- </slot>
321
- </div>
322
-
323
- <div part="input-wrapper" class="field__input-wrapper">
324
- <span
325
- class=${c({
326
- field__prefix: !0,
327
- "field__prefix--filled": this._hasPrefixSlot
328
- })}
329
- >
330
- <slot name="prefix" @slotchange=${this._handlePrefixSlotChange}></slot>
331
- </span>
332
-
333
- <input
334
- part="input"
335
- class="field__input"
336
- id=${this._inputId}
337
- type=${this.type}
338
- .value=${g(this.value)}
339
- placeholder=${s(this.placeholder || void 0)}
340
- ?required=${this.required}
341
- ?disabled=${this.disabled}
342
- ?readonly=${this.readonly}
343
- name=${s(this.name || void 0)}
344
- minlength=${s(this.minlength)}
345
- maxlength=${s(this.maxlength)}
346
- pattern=${s(this.pattern || void 0)}
347
- autocomplete=${s(this.autocomplete || void 0)}
348
- aria-label=${s(this.ariaLabel || void 0)}
349
- aria-labelledby=${s(
350
- this._hasLabelSlot ? `${this._inputId}-slotted-label` : void 0
351
- )}
352
- aria-invalid=${e ? "true" : f}
353
- aria-describedby=${s(a)}
354
- @input=${this._handleInput}
355
- @change=${this._handleChange}
356
- />
357
-
358
- <span
359
- class=${c({
360
- field__suffix: !0,
361
- "field__suffix--filled": this._hasSuffixSlot
362
- })}
363
- >
364
- <slot name="suffix" @slotchange=${this._handleSuffixSlotChange}></slot>
365
- </span>
366
- </div>
367
-
368
- <div part="error" class="field__error" id=${this._errorId} role="alert" aria-atomic="true">
369
- ${e ? n`<slot name="error" @slotchange=${this._handleErrorSlotChange}
370
- >${this.error}</slot
371
- >` : n`<slot name="error" @slotchange=${this._handleErrorSlotChange}></slot>`}
372
- </div>
373
- ${(this.helpText || this._hasHelpTextSlot) && !e ? n`
374
- <div part="help-text" class="field__help-text" id=${this._helpTextId}>
375
- <slot name="help-text" @slotchange=${this._handleHelpTextSlotChange}>
376
- ${this.helpText}
377
- </slot>
378
- </div>
379
- ` : n`<slot name="help-text" @slotchange=${this._handleHelpTextSlotChange}></slot>`}
380
- </div>
381
- `;
382
- }
383
- };
384
- t.styles = [b, y];
385
- t.formAssociated = !0;
386
- i([
387
- l({ type: String })
388
- ], t.prototype, "label", 2);
389
- i([
390
- l({ type: String })
391
- ], t.prototype, "placeholder", 2);
392
- i([
393
- l({ type: String })
394
- ], t.prototype, "value", 2);
395
- i([
396
- l({ type: String })
397
- ], t.prototype, "type", 2);
398
- i([
399
- l({ type: Boolean, reflect: !0 })
400
- ], t.prototype, "required", 2);
401
- i([
402
- l({ type: Boolean, reflect: !0 })
403
- ], t.prototype, "disabled", 2);
404
- i([
405
- l({ type: String })
406
- ], t.prototype, "error", 2);
407
- i([
408
- l({ type: String, attribute: "help-text" })
409
- ], t.prototype, "helpText", 2);
410
- i([
411
- l({ type: String })
412
- ], t.prototype, "name", 2);
413
- i([
414
- l({ type: String, attribute: "aria-label" })
415
- ], t.prototype, "ariaLabel", 2);
416
- i([
417
- l({ type: Boolean, reflect: !0 })
418
- ], t.prototype, "readonly", 2);
419
- i([
420
- l({ type: Number })
421
- ], t.prototype, "minlength", 2);
422
- i([
423
- l({ type: Number })
424
- ], t.prototype, "maxlength", 2);
425
- i([
426
- l({ type: String })
427
- ], t.prototype, "pattern", 2);
428
- i([
429
- l({ type: String })
430
- ], t.prototype, "autocomplete", 2);
431
- i([
432
- l({ attribute: "required-message" })
433
- ], t.prototype, "requiredMessage", 2);
434
- i([
435
- l({ type: String, attribute: "hx-size", reflect: !0 })
436
- ], t.prototype, "size", 2);
437
- i([
438
- m(".field__input")
439
- ], t.prototype, "_input", 2);
440
- i([
441
- h()
442
- ], t.prototype, "_hasLabelSlot", 2);
443
- i([
444
- h()
445
- ], t.prototype, "_hasErrorSlot", 2);
446
- i([
447
- h()
448
- ], t.prototype, "_hasPrefixSlot", 2);
449
- i([
450
- h()
451
- ], t.prototype, "_hasSuffixSlot", 2);
452
- i([
453
- h()
454
- ], t.prototype, "_hasHelpTextSlot", 2);
455
- t = i([
456
- v("hx-text-input")
457
- ], t);
458
- export {
459
- t as H
460
- };
461
- //# sourceMappingURL=hx-text-input-CqEdDHMU.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"hx-text-input-CqEdDHMU.js","sources":["../../src/components/hx-text-input/hx-text-input.styles.ts","../../src/components/hx-text-input/hx-text-input.ts"],"sourcesContent":["import { css } from 'lit';\n\nexport const helixTextInputStyles = css`\n :host {\n display: block;\n }\n\n :host([disabled]) {\n opacity: var(--hx-opacity-disabled, 0.5);\n pointer-events: none;\n }\n\n * {\n box-sizing: border-box;\n }\n\n .field {\n display: flex;\n flex-direction: column;\n gap: var(--hx-space-1, 0.25rem);\n font-family: var(--hx-input-font-family, var(--hx-font-family-sans, sans-serif));\n }\n\n /* ─── Label ─── */\n\n .field__label-wrapper {\n display: contents;\n }\n\n .field__label {\n display: flex;\n align-items: baseline;\n gap: var(--hx-space-1, 0.25rem);\n font-size: var(--hx-font-size-sm, 0.875rem);\n font-weight: var(--hx-font-weight-medium, 500);\n color: var(--hx-input-label-color, var(--hx-color-neutral-700, #343a40));\n line-height: var(--hx-line-height-normal, 1.5);\n }\n\n .field__required-marker {\n color: var(--hx-input-error-color, var(--hx-color-error-text, #b91c1c));\n font-weight: var(--hx-font-weight-bold, 700);\n }\n\n /* ─── Input Wrapper ─── */\n\n .field__input-wrapper {\n display: flex;\n align-items: center;\n border: var(--hx-border-width-thin, 1px) solid\n var(--hx-input-border-color, var(--hx-color-neutral-300, #ced4da));\n border-radius: var(--hx-input-border-radius, var(--hx-border-radius-md, 0.375rem));\n background-color: var(--hx-input-bg, var(--hx-color-neutral-0, #ffffff));\n transition:\n border-color var(--hx-transition-fast, 150ms ease),\n box-shadow var(--hx-transition-fast, 150ms ease);\n overflow: hidden;\n }\n\n .field__input-wrapper:focus-within {\n border-color: var(--hx-input-focus-ring-color, var(--hx-focus-ring-color, #2563eb));\n box-shadow: 0 0 0 var(--hx-focus-ring-width, 2px)\n color-mix(\n in srgb,\n var(--hx-input-focus-ring-color, var(--hx-focus-ring-color, #2563eb))\n calc(var(--hx-focus-ring-opacity, 0.25) * 100%),\n transparent\n );\n }\n\n /* ─── Error State ─── */\n\n .field--error .field__input-wrapper {\n border-color: var(--hx-input-error-color, var(--hx-color-error-500, #dc3545));\n }\n\n .field--error .field__input-wrapper:focus-within {\n border-color: var(--hx-input-error-color, var(--hx-color-error-500, #dc3545));\n box-shadow: 0 0 0 var(--hx-focus-ring-width, 2px)\n color-mix(\n in srgb,\n var(--hx-input-error-color, var(--hx-color-error-500, #dc3545))\n calc(var(--hx-focus-ring-opacity, 0.25) * 100%),\n transparent\n );\n }\n\n /* ─── Slots (Prefix / Suffix) ─── */\n\n .field__prefix,\n .field__suffix {\n display: flex;\n align-items: center;\n color: var(--hx-color-neutral-500, #6c757d);\n flex-shrink: 0;\n }\n\n /* Only add padding when slot has content — avoids phantom space on empty slots */\n .field__prefix--filled {\n padding: 0 var(--hx-space-3, 0.75rem);\n }\n\n .field__suffix--filled {\n padding: 0 var(--hx-space-3, 0.75rem);\n }\n\n /* ─── Native Input ─── */\n\n .field__input {\n flex: 1;\n border: none;\n outline: none;\n background: transparent;\n padding: var(--hx-space-2, 0.5rem) var(--hx-space-3, 0.75rem);\n font-family: inherit;\n font-size: var(--hx-font-size-md, 1rem);\n color: var(--hx-input-color, var(--hx-color-neutral-800, #212529));\n line-height: var(--hx-line-height-normal, 1.5);\n min-height: var(--hx-size-10, 2.5rem);\n width: 100%;\n }\n\n .field__input::placeholder {\n color: var(--hx-color-neutral-400, #adb5bd);\n }\n\n .field__input:disabled {\n cursor: not-allowed;\n }\n\n /* ─── Size Variants ─── */\n\n .field--size-sm .field__input {\n padding: var(--hx-space-1, 0.25rem) var(--hx-space-2, 0.5rem);\n min-height: var(--hx-size-8, 2rem);\n font-size: var(--hx-input-sm-font-size, 0.875rem);\n }\n\n .field--size-md .field__input {\n /* md is the default — no overrides needed */\n }\n\n .field--size-lg .field__input {\n padding: var(--hx-space-3, 0.75rem) var(--hx-space-4, 1rem);\n min-height: var(--hx-size-12, 3rem);\n font-size: var(--hx-input-lg-font-size, 1.125rem);\n }\n\n /* ─── Help Text & Error Messages ─── */\n\n .field__help-text {\n font-size: var(--hx-font-size-xs, 0.75rem);\n color: var(--hx-color-neutral-500, #6c757d);\n line-height: var(--hx-line-height-normal, 1.5);\n }\n\n .field__error {\n font-size: var(--hx-font-size-xs, 0.75rem);\n color: var(--hx-input-error-color, var(--hx-color-error-text, #b91c1c));\n line-height: var(--hx-line-height-normal, 1.5);\n }\n\n /* ─── Motion ─── */\n\n @media (prefers-reduced-motion: reduce) {\n .field__input-wrapper {\n transition: none;\n }\n }\n`;\n","import { LitElement, html, nothing, type PropertyValues } from 'lit';\nimport { customElement, property, query, state } from 'lit/decorators.js';\nimport { classMap } from 'lit/directives/class-map.js';\nimport { ifDefined } from 'lit/directives/if-defined.js';\nimport { live } from 'lit/directives/live.js';\nimport { tokenStyles } from '@helixui/tokens/lit';\nimport { helixTextInputStyles } from './hx-text-input.styles.js';\n\n// Module-level counter for stable, SSR-compatible IDs (avoids Math.random() hydration mismatch)\nlet _hxTextInputIdCounter = 0;\n\n/**\n * A text input component with label, validation, and form association.\n * Supports accessible labeling via `label` property, `aria-label` attribute, or the `label` slot.\n * Uses `aria-invalid` and `aria-describedby` on the native input for screen reader support. Native `required` provides implicit aria-required mapping per HTML-AAM.\n * Error messages are announced via `role=\"alert\"`. Keyboard navigation follows native input behavior.\n *\n * @summary Form-associated text input with built-in label, error, and help text.\n *\n * @tag hx-text-input\n *\n * @slot label - Custom label content (overrides the label property). Use for Drupal Form API rendered labels.\n * @slot prefix - Content rendered before the input (e.g., icon).\n * @slot suffix - Content rendered after the input (e.g., icon or button).\n * @slot help-text - Custom help text content (overrides the helpText property).\n * @slot error - Custom error content (overrides the error property). Use for Drupal Form API rendered errors.\n *\n * @fires {CustomEvent<{value: string}>} hx-input - Dispatched on every keystroke as the user types.\n * @fires {CustomEvent<{value: string}>} hx-change - Dispatched when the input loses focus after its value changed.\n *\n * @csspart field - The outer field container.\n * @csspart label - The label element.\n * @csspart input-wrapper - The wrapper around prefix, input, and suffix.\n * @csspart input - The native input element.\n * @csspart help-text - The help text container.\n * @csspart error - The error message container.\n *\n * @cssprop [--hx-input-bg=var(--hx-color-neutral-0)] - Input background color.\n * @cssprop [--hx-input-color=var(--hx-color-neutral-800)] - Input text color.\n * @cssprop [--hx-input-border-color=var(--hx-color-neutral-300)] - Input border color.\n * @cssprop [--hx-input-border-radius=var(--hx-border-radius-md)] - Input border radius.\n * @cssprop [--hx-input-font-family=var(--hx-font-family-sans)] - Input font family.\n * @cssprop [--hx-input-focus-ring-color=var(--hx-focus-ring-color)] - Focus ring color.\n * @cssprop [--hx-input-error-color=var(--hx-color-error-500)] - Error state color.\n * @cssprop [--hx-input-label-color=var(--hx-color-neutral-700)] - Label text color.\n * @cssprop [--hx-input-sm-font-size=0.875rem] - Font size for the sm size variant.\n * @cssprop [--hx-input-lg-font-size=1.125rem] - Font size for the lg size variant.\n */\n@customElement('hx-text-input')\nexport class HelixTextInput extends LitElement {\n static override styles = [tokenStyles, helixTextInputStyles];\n\n // ─── Form Association ───\n\n /** @internal */\n static formAssociated = true;\n\n /** @internal */\n private _internals: ElementInternals;\n\n constructor() {\n super();\n /** @internal */\n this._internals = this.attachInternals();\n }\n\n // ─── Properties ───\n\n /**\n * The visible label text for the input.\n * @attr label\n */\n @property({ type: String })\n label = '';\n\n /**\n * Placeholder text shown when the input is empty.\n * @attr placeholder\n */\n @property({ type: String })\n placeholder = '';\n\n /**\n * The current value of the input.\n * @attr value\n */\n @property({ type: String })\n value = '';\n\n /**\n * The type of the native input element.\n * @attr type\n */\n @property({ type: String })\n type: 'text' | 'email' | 'password' | 'tel' | 'url' | 'search' | 'number' | 'date' = 'text';\n\n /**\n * Whether the input is required for form submission.\n * @attr required\n */\n @property({ type: Boolean, reflect: true })\n required = false;\n\n /**\n * Whether the input is disabled.\n * @attr disabled\n */\n @property({ type: Boolean, reflect: true })\n disabled = false;\n\n /**\n * Error message to display. When set, the input enters an error state.\n * @attr error\n */\n @property({ type: String })\n error = '';\n\n /**\n * Help text displayed below the input for guidance.\n * @attr help-text\n */\n @property({ type: String, attribute: 'help-text' })\n helpText = '';\n\n /**\n * The name of the input, used for form submission.\n * @attr name\n */\n @property({ type: String })\n name = '';\n\n /**\n * Accessible name for screen readers, if different from the visible label.\n * @attr aria-label\n */\n @property({ type: String, attribute: 'aria-label' })\n override ariaLabel: string | null = null;\n\n /**\n * Whether the input is read-only.\n * @attr readonly\n */\n @property({ type: Boolean, reflect: true })\n readonly = false;\n\n /**\n * Minimum number of characters allowed.\n * @attr minlength\n */\n @property({ type: Number })\n minlength: number | undefined = undefined;\n\n /**\n * Maximum number of characters allowed.\n * @attr maxlength\n */\n @property({ type: Number })\n maxlength: number | undefined = undefined;\n\n /**\n * A regular expression pattern the value must match for form validation.\n * @attr pattern\n */\n @property({ type: String })\n pattern = '';\n\n /**\n * Hint for the browser's autocomplete feature. Accepts standard HTML autocomplete values.\n * @attr autocomplete\n */\n @property({ type: String })\n autocomplete = '';\n\n /**\n * Validation message shown when the field is required but empty.\n * @attr required-message\n */\n @property({ attribute: 'required-message' })\n requiredMessage = 'This field is required.';\n\n /**\n * Visual size of the input field.\n * @attr hx-size\n */\n @property({ type: String, attribute: 'hx-size', reflect: true })\n size: 'sm' | 'md' | 'lg' = 'md';\n\n // ─── Internal References ───\n\n /** @internal */\n @query('.field__input')\n private _input: HTMLInputElement | undefined;\n\n // ─── Slot Tracking ───\n\n /** @internal */\n @state() private _hasLabelSlot = false;\n /** @internal */\n @state() private _hasErrorSlot = false;\n /** @internal */\n @state() private _hasPrefixSlot = false;\n /** @internal */\n @state() private _hasSuffixSlot = false;\n /** @internal */\n @state() private _hasHelpTextSlot = false;\n\n /** @internal */\n private _handleLabelSlotChange(e: Event): void {\n const slot = e.target as HTMLSlotElement;\n this._hasLabelSlot = slot.assignedElements().length > 0;\n if (this._hasLabelSlot) {\n const slottedLabel = slot.assignedElements()[0];\n if (slottedLabel && !slottedLabel.id) {\n slottedLabel.id = `${this._inputId}-slotted-label`;\n }\n }\n }\n\n /** @internal */\n private _handleErrorSlotChange(e: Event): void {\n const slot = e.target as HTMLSlotElement;\n this._hasErrorSlot = slot.assignedElements().length > 0;\n }\n\n /** @internal */\n private _handlePrefixSlotChange(e: Event): void {\n const slot = e.target as HTMLSlotElement;\n this._hasPrefixSlot = slot.assignedElements().length > 0;\n }\n\n /** @internal */\n private _handleSuffixSlotChange(e: Event): void {\n const slot = e.target as HTMLSlotElement;\n this._hasSuffixSlot = slot.assignedElements().length > 0;\n }\n\n /** @internal */\n private _handleHelpTextSlotChange(e: Event): void {\n const slot = e.target as HTMLSlotElement;\n this._hasHelpTextSlot = slot.assignedElements().length > 0;\n }\n\n // ─── Lifecycle ───\n\n override updated(changedProperties: PropertyValues<this>): void {\n super.updated(changedProperties);\n if (changedProperties.has('value')) {\n this._internals.setFormValue(this.value);\n }\n if (\n changedProperties.has('value') ||\n changedProperties.has('required') ||\n changedProperties.has('minlength') ||\n changedProperties.has('maxlength')\n ) {\n this._updateValidity();\n }\n }\n\n // ─── Form Integration ───\n\n /** Returns the associated form element, if any. */\n get form(): HTMLFormElement | null {\n return this._internals.form;\n }\n\n /** Returns the validation message. */\n get validationMessage(): string {\n return this._internals.validationMessage;\n }\n\n /** Returns the ValidityState object. */\n get validity(): ValidityState {\n return this._internals.validity;\n }\n\n /** Checks whether the input satisfies its constraints. */\n checkValidity(): boolean {\n return this._internals.checkValidity();\n }\n\n /** Reports validity and shows the browser's constraint validation UI. */\n reportValidity(): boolean {\n return this._internals.reportValidity();\n }\n\n /** @internal */\n private _updateValidity(): void {\n if (this.required && !this.value) {\n this._internals.setValidity(\n { valueMissing: true },\n this.error || this.requiredMessage,\n this._input,\n );\n } else if (\n this.minlength !== undefined &&\n this.value.length > 0 &&\n this.value.length < this.minlength\n ) {\n this._internals.setValidity(\n { tooShort: true },\n this.error || `Please lengthen this text to ${this.minlength} characters or more.`,\n this._input,\n );\n } else if (this.maxlength !== undefined && this.value.length > this.maxlength) {\n this._internals.setValidity(\n { tooLong: true },\n this.error || `Please shorten this text to ${this.maxlength} characters or fewer.`,\n this._input,\n );\n } else {\n this._internals.setValidity({});\n }\n }\n\n // Called by the form when it resets\n formResetCallback(): void {\n this.value = '';\n this._internals.setFormValue('');\n }\n\n // Called when the form restores state (e.g., back/forward navigation)\n formStateRestoreCallback(\n state: string | File | FormData | null,\n _mode: 'restore' | 'autocomplete',\n ): void {\n if (typeof state === 'string') {\n this.value = state;\n }\n }\n\n // Called when a parent fieldset is disabled/enabled\n formDisabledCallback(disabled: boolean): void {\n this.disabled = disabled;\n }\n\n // ─── Event Handling ───\n\n /** @internal */\n private _handleInput(e: Event): void {\n const target = e.target as HTMLInputElement;\n this.value = target.value;\n this._internals.setFormValue(this.value);\n\n /**\n * Dispatched on every keystroke as the user types.\n * @event hx-input\n */\n this.dispatchEvent(\n new CustomEvent<{ value: string }>('hx-input', {\n bubbles: true,\n composed: true,\n detail: { value: this.value },\n }),\n );\n }\n\n /** @internal */\n private _handleChange(e: Event): void {\n const target = e.target as HTMLInputElement;\n this.value = target.value;\n this._internals.setFormValue(this.value);\n this._updateValidity();\n\n /**\n * Dispatched when the input loses focus after its value changed.\n * @event hx-change\n */\n this.dispatchEvent(\n new CustomEvent<{ value: string }>('hx-change', {\n bubbles: true,\n composed: true,\n detail: { value: this.value },\n }),\n );\n }\n\n // ─── Public Methods ───\n\n /** Moves focus to the input element. */\n override focus(options?: FocusOptions): void {\n this._input?.focus(options);\n }\n\n /** Selects all text in the input. */\n select(): void {\n this._input?.select();\n }\n\n // ─── Render ───\n\n /** @internal */\n private _inputId = `hx-text-input-${++_hxTextInputIdCounter}`;\n /** @internal */\n private _helpTextId = `${this._inputId}-help`;\n /** @internal */\n private _errorId = `${this._inputId}-error`;\n\n override render() {\n const hasError = !!this.error || this._hasErrorSlot;\n\n const fieldClasses = {\n field: true,\n 'field--error': hasError,\n 'field--disabled': this.disabled,\n 'field--required': this.required,\n [`field--size-${this.size}`]: true,\n };\n\n const describedBy =\n [\n hasError ? this._errorId : null,\n this.helpText || this._hasHelpTextSlot ? this._helpTextId : null,\n ]\n .filter(Boolean)\n .join(' ') || undefined;\n\n return html`\n <div part=\"field\" class=${classMap(fieldClasses)}>\n <div class=\"field__label-wrapper\">\n <slot name=\"label\" @slotchange=${this._handleLabelSlotChange}>\n ${this.label\n ? html`\n <label part=\"label\" class=\"field__label\" for=${this._inputId}>\n ${this.label}\n ${this.required\n ? html`<span class=\"field__required-marker\" aria-hidden=\"true\">*</span>`\n : nothing}\n </label>\n `\n : nothing}\n </slot>\n </div>\n\n <div part=\"input-wrapper\" class=\"field__input-wrapper\">\n <span\n class=${classMap({\n field__prefix: true,\n 'field__prefix--filled': this._hasPrefixSlot,\n })}\n >\n <slot name=\"prefix\" @slotchange=${this._handlePrefixSlotChange}></slot>\n </span>\n\n <input\n part=\"input\"\n class=\"field__input\"\n id=${this._inputId}\n type=${this.type}\n .value=${live(this.value)}\n placeholder=${ifDefined(this.placeholder || undefined)}\n ?required=${this.required}\n ?disabled=${this.disabled}\n ?readonly=${this.readonly}\n name=${ifDefined(this.name || undefined)}\n minlength=${ifDefined(this.minlength)}\n maxlength=${ifDefined(this.maxlength)}\n pattern=${ifDefined(this.pattern || undefined)}\n autocomplete=${ifDefined(this.autocomplete || undefined)}\n aria-label=${ifDefined(this.ariaLabel || undefined)}\n aria-labelledby=${ifDefined(\n this._hasLabelSlot ? `${this._inputId}-slotted-label` : undefined,\n )}\n aria-invalid=${hasError ? 'true' : nothing}\n aria-describedby=${ifDefined(describedBy)}\n @input=${this._handleInput}\n @change=${this._handleChange}\n />\n\n <span\n class=${classMap({\n field__suffix: true,\n 'field__suffix--filled': this._hasSuffixSlot,\n })}\n >\n <slot name=\"suffix\" @slotchange=${this._handleSuffixSlotChange}></slot>\n </span>\n </div>\n\n <div part=\"error\" class=\"field__error\" id=${this._errorId} role=\"alert\" aria-atomic=\"true\">\n ${hasError\n ? html`<slot name=\"error\" @slotchange=${this._handleErrorSlotChange}\n >${this.error}</slot\n >`\n : html`<slot name=\"error\" @slotchange=${this._handleErrorSlotChange}></slot>`}\n </div>\n ${(this.helpText || this._hasHelpTextSlot) && !hasError\n ? html`\n <div part=\"help-text\" class=\"field__help-text\" id=${this._helpTextId}>\n <slot name=\"help-text\" @slotchange=${this._handleHelpTextSlotChange}>\n ${this.helpText}\n </slot>\n </div>\n `\n : html`<slot name=\"help-text\" @slotchange=${this._handleHelpTextSlotChange}></slot>`}\n </div>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'hx-text-input': HelixTextInput;\n }\n}\n\n/** Primary type alias for hx-text-input */\nexport type HxTextInput = HelixTextInput;\n\n/** @deprecated Use HxTextInput instead */\nexport type WcTextInput = HelixTextInput;\n"],"names":["helixTextInputStyles","css","_hxTextInputIdCounter","HelixTextInput","LitElement","slot","slottedLabel","changedProperties","state","_mode","disabled","target","options","_a","hasError","fieldClasses","describedBy","html","classMap","nothing","live","ifDefined","tokenStyles","__decorateClass","property","query","customElement"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"hx-textarea-BgX7rxyo.js","sources":["../../src/components/hx-textarea/hx-textarea.styles.ts","../../src/components/hx-textarea/hx-textarea.ts"],"sourcesContent":["import { css } from 'lit';\n\nexport const helixTextareaStyles = css`\n :host {\n display: block;\n }\n\n :host([disabled]) {\n opacity: var(--hx-opacity-disabled, 0.5);\n pointer-events: none;\n }\n\n * {\n box-sizing: border-box;\n }\n\n .field {\n display: flex;\n flex-direction: column;\n gap: var(--hx-space-1, 0.25rem);\n font-family: var(--hx-input-font-family, var(--hx-font-family-sans, sans-serif));\n }\n\n /* --- Label --- */\n\n .field__label-wrapper {\n display: contents;\n }\n\n .field__label {\n display: flex;\n align-items: baseline;\n gap: var(--hx-space-1, 0.25rem);\n font-size: var(--hx-font-size-sm, 0.875rem);\n font-weight: var(--hx-font-weight-medium, 500);\n color: var(--hx-input-label-color, var(--hx-color-neutral-700, #343a40));\n line-height: var(--hx-line-height-normal, 1.5);\n }\n\n .field__required-marker {\n color: var(--hx-input-error-color, var(--hx-color-error-text, #b91c1c));\n font-weight: var(--hx-font-weight-bold, 700);\n }\n\n /* --- Textarea Wrapper --- */\n\n .field__textarea-wrapper {\n display: flex;\n flex-direction: column;\n border: var(--hx-border-width-thin, 1px) solid\n var(--hx-input-border-color, var(--hx-color-neutral-300, #ced4da));\n border-radius: var(--hx-input-border-radius, var(--hx-border-radius-md, 0.375rem));\n background-color: var(--hx-input-bg, var(--hx-color-neutral-0, #ffffff));\n transition:\n border-color var(--hx-transition-fast, 150ms ease),\n box-shadow var(--hx-transition-fast, 150ms ease);\n overflow: hidden;\n }\n\n .field__textarea-wrapper:focus-within {\n border-color: var(--hx-input-focus-ring-color, var(--hx-focus-ring-color, #2563eb));\n /* Solid fallback for browsers without color-mix() (Chrome < 111, Safari < 16.2) — WCAG 1.4.11 */\n box-shadow: 0 0 0 var(--hx-focus-ring-width, 2px)\n rgba(37, 99, 235, var(--hx-focus-ring-opacity, 0.25));\n box-shadow: 0 0 0 var(--hx-focus-ring-width, 2px)\n color-mix(\n in srgb,\n var(--hx-input-focus-ring-color, var(--hx-focus-ring-color, #2563eb))\n calc(var(--hx-focus-ring-opacity, 0.25) * 100%),\n transparent\n );\n }\n\n /* --- Error State --- */\n\n .field--error .field__textarea-wrapper {\n border-color: var(--hx-input-error-color, var(--hx-color-error-500, #dc3545));\n }\n\n .field--error .field__textarea-wrapper:focus-within {\n border-color: var(--hx-input-error-color, var(--hx-color-error-500, #dc3545));\n /* Solid fallback for browsers without color-mix() — WCAG 1.4.11 */\n box-shadow: 0 0 0 var(--hx-focus-ring-width, 2px)\n rgba(220, 53, 69, var(--hx-focus-ring-opacity, 0.25));\n box-shadow: 0 0 0 var(--hx-focus-ring-width, 2px)\n color-mix(\n in srgb,\n var(--hx-input-error-color, var(--hx-color-error-500, #dc3545))\n calc(var(--hx-focus-ring-opacity, 0.25) * 100%),\n transparent\n );\n }\n\n /* --- Native Textarea --- */\n\n .field__textarea {\n border: none;\n outline: none;\n background: transparent;\n padding: var(--hx-space-2, 0.5rem) var(--hx-space-3, 0.75rem);\n font-family: inherit;\n font-size: var(--hx-font-size-md, 1rem);\n color: var(--hx-input-color, var(--hx-color-neutral-800, #212529));\n line-height: var(--hx-line-height-normal, 1.5);\n min-height: var(--hx-textarea-min-height, var(--hx-size-20, 5rem));\n width: 100%;\n resize: vertical;\n }\n\n .field__textarea::placeholder {\n color: var(--hx-color-neutral-400, #adb5bd);\n }\n\n .field__textarea:disabled {\n cursor: not-allowed;\n }\n\n @media (prefers-reduced-motion: reduce) {\n .field__textarea-wrapper {\n transition: none;\n }\n }\n\n /* --- Resize Variants --- */\n\n :host([resize='none']) .field__textarea {\n resize: none;\n }\n\n /* resize: vertical is the base default — no override needed for [resize='vertical'] */\n\n :host([resize='both']) .field__textarea {\n resize: both;\n }\n\n :host([resize='auto']) .field__textarea {\n resize: none;\n overflow: hidden;\n }\n\n /* --- Character Counter --- */\n\n .field__counter {\n font-size: var(--hx-font-size-xs, 0.75rem);\n color: var(--hx-color-neutral-500, #6c757d);\n line-height: var(--hx-line-height-normal, 1.5);\n text-align: right;\n }\n\n /* --- Visually Hidden (screen reader only) --- */\n\n .sr-only {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n border: 0;\n }\n\n /* --- Help Text & Error Messages --- */\n\n .field__help-text {\n font-size: var(--hx-font-size-xs, 0.75rem);\n color: var(--hx-color-neutral-500, #6c757d);\n line-height: var(--hx-line-height-normal, 1.5);\n }\n\n .field__error {\n font-size: var(--hx-font-size-xs, 0.75rem);\n color: var(--hx-input-error-color, var(--hx-color-error-text, #b91c1c));\n line-height: var(--hx-line-height-normal, 1.5);\n }\n`;\n","import { LitElement, html, nothing, type PropertyValues } from 'lit';\nimport { customElement, property, query, state } from 'lit/decorators.js';\nimport { classMap } from 'lit/directives/class-map.js';\nimport { ifDefined } from 'lit/directives/if-defined.js';\nimport { live } from 'lit/directives/live.js';\nimport { tokenStyles } from '@helixui/tokens/lit';\nimport { helixTextareaStyles } from './hx-textarea.styles.js';\n\n// Module-level counter for stable, SSR-safe IDs (avoids Math.random() hydration mismatch)\nlet _hxTextareaIdCounter = 0;\n\n/**\n * A multi-line text area component with label, validation, and form association.\n *\n * Uses `aria-invalid` to convey error state and `aria-describedby` to link\n * error/help text to the textarea. Label association is handled through\n * `aria-labelledby` (for slotted labels) or the standard `<label for>` pattern.\n * Supports `aria-label` for cases where a visible label is not present.\n * Validation errors are announced via `role=\"alert\"` (assertive live region).\n *\n * @summary Form-associated textarea with built-in label, error, help text, character counter, and auto-resize.\n *\n * @tag hx-textarea\n *\n * @slot label - Custom label content (overrides the label property). Use for Drupal Form API rendered labels.\n * @slot help-text - Custom help text content (overrides the helpText property).\n * @slot error - Custom error content (overrides the error property). Use for Drupal Form API rendered errors.\n *\n * @fires {CustomEvent<{value: string}>} hx-input - Dispatched on every keystroke as the user types.\n * @fires {CustomEvent<{value: string}>} hx-change - Dispatched when the textarea loses focus after its value changed.\n *\n * @csspart field - The outer field container.\n * @csspart label - The label element.\n * @csspart textarea-wrapper - The wrapper around the textarea.\n * @csspart textarea - The native textarea element.\n * @csspart counter - The character count display.\n * @csspart help-text - The help text container.\n * @csspart error - The error message container.\n *\n * @cssprop [--hx-input-bg=var(--hx-color-neutral-0)] - Input background color.\n * @cssprop [--hx-input-color=var(--hx-color-neutral-800)] - Input text color.\n * @cssprop [--hx-input-border-color=var(--hx-color-neutral-300)] - Input border color.\n * @cssprop [--hx-input-border-radius=var(--hx-border-radius-md)] - Input border radius.\n * @cssprop [--hx-input-font-family=var(--hx-font-family-sans)] - Input font family.\n * @cssprop [--hx-input-focus-ring-color=var(--hx-focus-ring-color)] - Focus ring color.\n * @cssprop [--hx-input-error-color=var(--hx-color-error-500)] - Error state color.\n * @cssprop [--hx-input-label-color=var(--hx-color-neutral-700)] - Label text color.\n * @cssprop [--hx-textarea-min-height=var(--hx-size-20, 5rem)] - Minimum textarea height.\n */\n@customElement('hx-textarea')\nexport class HelixTextarea extends LitElement {\n static override styles = [tokenStyles, helixTextareaStyles];\n\n // ─── Form Association ───\n\n /** Enables the element to participate in form submission and validation. */\n static formAssociated = true;\n\n /** ElementInternals instance for form association, validation, and ARIA. */\n /** @internal */\n private _internals: ElementInternals;\n\n constructor() {\n super();\n /** @internal */\n this._internals = this.attachInternals();\n }\n\n // ─── Properties ───\n\n /**\n * The visible label text for the textarea.\n * @attr label\n */\n @property({ type: String })\n label = '';\n\n /**\n * Placeholder text shown when the textarea is empty.\n * @attr placeholder\n */\n @property({ type: String })\n placeholder = '';\n\n /**\n * The current value of the textarea.\n * @attr value\n */\n @property({ type: String })\n value = '';\n\n /**\n * Whether the textarea is required for form submission.\n * @attr required\n */\n @property({ type: Boolean, reflect: true })\n required = false;\n\n /**\n * Whether the textarea is disabled.\n * @attr disabled\n */\n @property({ type: Boolean, reflect: true })\n disabled = false;\n\n /**\n * Error message to display. When set, the textarea enters an error state.\n * @attr error\n */\n @property({ type: String })\n error = '';\n\n /**\n * Help text displayed below the textarea for guidance.\n * @attr help-text\n */\n @property({ type: String, attribute: 'help-text' })\n helpText = '';\n\n /**\n * The name of the textarea, used for form submission.\n * @attr name\n */\n @property({ type: String })\n name = '';\n\n /**\n * The number of visible text rows. Must be a positive integer (minimum 1).\n * Invalid values are clamped to the nearest valid value.\n * @attr rows\n */\n @property({ type: Number })\n rows = 4;\n\n /**\n * Minimum number of characters required.\n * @attr minlength\n */\n @property({ type: Number, attribute: 'minlength' })\n minlength: number | undefined;\n\n /**\n * Maximum number of characters allowed.\n * @attr maxlength\n */\n @property({ type: Number, attribute: 'maxlength' })\n maxlength: number | undefined;\n\n /**\n * Whether the textarea is read-only. Read-only fields are visible but\n * cannot be edited by the user. Common in healthcare for displaying\n * non-editable patient data inline with editable fields.\n * @attr readonly\n */\n @property({ type: Boolean, reflect: true })\n readonly = false;\n\n /**\n * Controls how the textarea can be resized. Use 'auto' for auto-grow behavior.\n * @attr resize\n */\n @property({ type: String, reflect: true })\n resize: 'none' | 'vertical' | 'both' | 'auto' = 'vertical';\n\n /**\n * Whether to show a character count below the textarea.\n * @attr show-count\n */\n @property({ type: Boolean, attribute: 'show-count' })\n showCount = false;\n\n /**\n * Validation message shown when the field is required but empty.\n * @attr required-message\n */\n @property({ attribute: 'required-message' })\n requiredMessage = 'This field is required.';\n\n /**\n * Accessible name for screen readers, if different from the visible label.\n * @attr aria-label\n */\n @property({ type: String, attribute: 'aria-label' })\n override ariaLabel: string | null = null;\n\n // ─── Internal References ───\n\n /** @internal */\n @query('.field__textarea')\n private _textarea: HTMLTextAreaElement | undefined;\n\n // ─── Slot Tracking ───\n\n /** @internal */\n @state() private _hasLabelSlot = false;\n /** @internal */\n @state() private _hasErrorSlot = false;\n /** @internal */\n @state() private _hasHelpTextSlot = false;\n\n // ─── Live Announcement ───\n\n /**\n * Debounced announcement text for the hidden polite live region.\n * Only populated when the user is approaching the character limit.\n * @internal\n */\n @state() private _liveAnnouncement = '';\n\n /** Timer handle for the debounced character-count announcement. @internal */\n private _announceTimer: ReturnType<typeof setTimeout> | null = null;\n\n /** @internal */\n private _handleLabelSlotChange(e: Event): void {\n const slot = e.target as HTMLSlotElement;\n this._hasLabelSlot = slot.assignedElements().length > 0;\n if (this._hasLabelSlot) {\n const slottedLabel = slot.assignedElements()[0];\n if (slottedLabel && !slottedLabel.id) {\n slottedLabel.id = `${this._textareaId}-slotted-label`;\n }\n }\n }\n\n /** @internal */\n private _handleErrorSlotChange(e: Event): void {\n const slot = e.target as HTMLSlotElement;\n this._hasErrorSlot = slot.assignedElements().length > 0;\n }\n\n /** @internal */\n private _handleHelpTextSlotChange(e: Event): void {\n const slot = e.target as HTMLSlotElement;\n this._hasHelpTextSlot = slot.assignedElements().length > 0;\n }\n\n // ─── Lifecycle ───\n\n override disconnectedCallback(): void {\n super.disconnectedCallback();\n if (this._announceTimer !== null) {\n clearTimeout(this._announceTimer);\n this._announceTimer = null;\n }\n }\n\n override updated(changedProperties: PropertyValues<this>): void {\n super.updated(changedProperties);\n if (changedProperties.has('rows')) {\n const clamped = Math.max(1, Math.round(this.rows));\n if (clamped !== this.rows) {\n this.rows = clamped;\n }\n }\n if (changedProperties.has('value')) {\n this._internals.setFormValue(this.value);\n }\n if (\n changedProperties.has('value') ||\n changedProperties.has('required') ||\n changedProperties.has('minlength') ||\n changedProperties.has('maxlength')\n ) {\n this._updateValidity();\n }\n // Auto-grow: respond to programmatic value changes\n if (changedProperties.has('value') && this.resize === 'auto' && this._textarea) {\n this._textarea.style.height = 'auto';\n this._textarea.style.height = `${this._textarea.scrollHeight}px`;\n }\n }\n\n // ─── Form Integration ───\n\n /** Returns the associated form element, if any. */\n get form(): HTMLFormElement | null {\n return this._internals.form;\n }\n\n /** Returns the validation message. */\n get validationMessage(): string {\n return this._internals.validationMessage;\n }\n\n /** Returns the ValidityState object. */\n get validity(): ValidityState {\n return this._internals.validity;\n }\n\n /** Checks whether the textarea satisfies its constraints. */\n checkValidity(): boolean {\n return this._internals.checkValidity();\n }\n\n /** Reports validity and shows the browser's constraint validation UI. */\n reportValidity(): boolean {\n return this._internals.reportValidity();\n }\n\n /** @internal */\n private _updateValidity(): void {\n const anchor = this._textarea ?? undefined;\n if (this.required && !this.value) {\n this._internals.setValidity(\n { valueMissing: true },\n this.error || this.requiredMessage,\n anchor,\n );\n } else if (\n this.minlength !== undefined &&\n this.value.length > 0 &&\n this.value.length < this.minlength\n ) {\n this._internals.setValidity(\n { tooShort: true },\n this.error || `Value must be at least ${this.minlength} characters.`,\n anchor,\n );\n } else if (this.maxlength !== undefined && this.value.length > this.maxlength) {\n this._internals.setValidity(\n { tooLong: true },\n this.error || `Value must be ${this.maxlength} characters or fewer.`,\n anchor,\n );\n } else {\n this._internals.setValidity({});\n }\n }\n\n /** Called by the browser when the owning form is reset. */\n formResetCallback(): void {\n this.value = '';\n this._internals.setFormValue('');\n }\n\n /** Called by the browser to restore form state (e.g., back/forward navigation). */\n formStateRestoreCallback(\n state: string | File | FormData | null,\n _mode: 'restore' | 'autocomplete',\n ): void {\n if (typeof state === 'string') {\n this.value = state;\n }\n }\n\n /** Called when a parent fieldset is disabled/enabled. */\n formDisabledCallback(disabled: boolean): void {\n this.disabled = disabled;\n }\n\n // ─── Event Handling ───\n\n /** @internal */\n private _handleInput(e: Event): void {\n const target = e.target as HTMLTextAreaElement;\n this.value = target.value;\n // Note: setFormValue is called in updated() via the value change — no double-call here (P1-06 fix)\n\n // Auto-grow: reset height then set to scrollHeight\n if (this.resize === 'auto') {\n target.style.height = 'auto';\n target.style.height = `${target.scrollHeight}px`;\n }\n\n // Debounced character-count announcement (WCAG 4.1.3):\n // Only announce when near/at the maxlength limit; suppress every-keystroke noise.\n if (this._announceTimer !== null) {\n clearTimeout(this._announceTimer);\n }\n this._announceTimer = setTimeout(() => {\n this._announceTimer = null;\n if (this.maxlength !== undefined && this.value.length >= this.maxlength * 0.8) {\n this._liveAnnouncement = `${this.value.length} of ${this.maxlength} characters`;\n } else {\n this._liveAnnouncement = '';\n }\n }, 1000);\n\n /**\n * Dispatched on every keystroke as the user types.\n * @event hx-input\n */\n this.dispatchEvent(\n new CustomEvent<{ value: string }>('hx-input', {\n bubbles: true,\n composed: true,\n detail: { value: this.value },\n }),\n );\n }\n\n /** @internal */\n private _handleChange(e: Event): void {\n const target = e.target as HTMLTextAreaElement;\n this.value = target.value;\n this._internals.setFormValue(this.value);\n this._updateValidity();\n\n /**\n * Dispatched when the textarea loses focus after its value changed.\n * @event hx-change\n */\n this.dispatchEvent(\n new CustomEvent<{ value: string }>('hx-change', {\n bubbles: true,\n composed: true,\n detail: { value: this.value },\n }),\n );\n }\n\n // ─── Public Methods ───\n\n /** Moves focus to the textarea element. */\n override focus(options?: FocusOptions): void {\n this._textarea?.focus(options);\n }\n\n /** Selects all text in the textarea. */\n select(): void {\n this._textarea?.select();\n }\n\n // ─── Render ───\n\n /** @internal */\n private _textareaId = `hx-textarea-${++_hxTextareaIdCounter}`;\n /** @internal */\n private _helpTextId = `${this._textareaId}-help`;\n /** @internal */\n private _errorId = `${this._textareaId}-error`;\n /** @internal */\n private _counterId = `${this._textareaId}-counter`;\n\n /** @internal */\n private _renderCounter() {\n if (!this.showCount) return nothing;\n\n const count = this.value.length;\n const display = this.maxlength !== undefined ? `${count} / ${this.maxlength}` : `${count}`;\n\n // aria-live=\"polite\" announces counter changes without interrupting the user.\n // The debounced _liveAnnouncement region provides additional context when nearing the limit.\n return html`\n <div\n part=\"counter\"\n class=\"field__counter\"\n id=${this._counterId}\n aria-live=\"polite\"\n aria-atomic=\"true\"\n >\n ${display}\n </div>\n `;\n }\n\n override render() {\n const hasError = !!this.error || this._hasErrorSlot;\n\n const fieldClasses = {\n field: true,\n 'field--error': hasError,\n 'field--disabled': this.disabled,\n 'field--required': this.required,\n };\n\n // P0-02 fix: help text container renders when slot is used OR property is set\n const hasHelpText = (!!this.helpText || this._hasHelpTextSlot) && !hasError;\n\n // Include counter in aria-describedby so screen readers associate it with the textarea.\n // The counter also has aria-live=\"polite\" for dynamic updates (WCAG 4.1.3).\n const describedBy =\n [\n hasError ? this._errorId : null,\n hasHelpText ? this._helpTextId : null,\n this.showCount ? this._counterId : null,\n ]\n .filter(Boolean)\n .join(' ') || undefined;\n\n return html`\n <div part=\"field\" class=${classMap(fieldClasses)}>\n <div class=\"field__label-wrapper\">\n <slot name=\"label\" @slotchange=${this._handleLabelSlotChange}>\n ${this.label\n ? html`\n <label part=\"label\" class=\"field__label\" for=${this._textareaId}>\n ${this.label}\n ${this.required\n ? html`<span class=\"field__required-marker\" aria-hidden=\"true\">*</span>`\n : nothing}\n </label>\n `\n : nothing}\n </slot>\n </div>\n\n <div part=\"textarea-wrapper\" class=\"field__textarea-wrapper\">\n <textarea\n part=\"textarea\"\n class=\"field__textarea\"\n id=${this._textareaId}\n .value=${live(this.value)}\n placeholder=${ifDefined(this.placeholder || undefined)}\n ?required=${this.required}\n ?disabled=${this.disabled}\n ?readonly=${this.readonly}\n rows=${this.rows}\n minlength=${ifDefined(this.minlength)}\n maxlength=${ifDefined(this.maxlength)}\n name=${ifDefined(this.name || undefined)}\n aria-label=${ifDefined(this.ariaLabel ?? undefined)}\n aria-labelledby=${ifDefined(\n this._hasLabelSlot ? `${this._textareaId}-slotted-label` : undefined,\n )}\n aria-invalid=${hasError ? 'true' : nothing}\n aria-describedby=${ifDefined(describedBy)}\n @input=${this._handleInput}\n @change=${this._handleChange}\n ></textarea>\n </div>\n\n ${this._renderCounter()}\n <div aria-live=\"polite\" aria-atomic=\"true\" class=\"sr-only\">${this._liveAnnouncement}</div>\n ${hasError\n ? html`\n <div part=\"error\" class=\"field__error\" id=${this._errorId} role=\"alert\">\n <slot name=\"error\" @slotchange=${this._handleErrorSlotChange}>${this.error}</slot>\n </div>\n `\n : html`<slot name=\"error\" @slotchange=${this._handleErrorSlotChange}></slot>`}\n ${hasHelpText\n ? html`\n <div part=\"help-text\" class=\"field__help-text\" id=${this._helpTextId}>\n <slot name=\"help-text\" @slotchange=${this._handleHelpTextSlotChange}>\n ${this.helpText}\n </slot>\n </div>\n `\n : html`<slot name=\"help-text\" @slotchange=${this._handleHelpTextSlotChange}></slot>`}\n </div>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'hx-textarea': HelixTextarea;\n }\n}\n\n/** Canonical type alias for the hx-textarea component. */\nexport type HxTextarea = HelixTextarea;\n\n/** @deprecated Use {@link HxTextarea} instead. The `Wc` prefix was a legacy naming convention. */\nexport type WcTextarea = HelixTextarea;\n"],"names":["helixTextareaStyles","css","_hxTextareaIdCounter","HelixTextarea","LitElement","slot","slottedLabel","changedProperties","clamped","anchor","state","_mode","disabled","target","options","_a","nothing","count","display","html","hasError","fieldClasses","hasHelpText","describedBy","classMap","live","ifDefined","tokenStyles","__decorateClass","property","query","customElement"],"mappings":"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"}