@helixui/library 1.0.1 → 1.1.2-next.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (699) hide show
  1. package/custom-elements.json +6013 -11864
  2. package/dist/base/helix-element.d.ts +134 -0
  3. package/dist/base/helix-element.d.ts.map +1 -0
  4. package/dist/base/id-counter.d.ts +32 -0
  5. package/dist/base/id-counter.d.ts.map +1 -0
  6. package/dist/base/index.d.ts +4 -0
  7. package/dist/base/index.d.ts.map +1 -0
  8. package/dist/base/styles.d.ts +19 -0
  9. package/dist/base/styles.d.ts.map +1 -0
  10. package/dist/components/hx-accordion/hx-accordion-item.d.ts +10 -0
  11. package/dist/components/hx-accordion/hx-accordion-item.d.ts.map +1 -1
  12. package/dist/components/hx-accordion/hx-accordion.d.ts +7 -1
  13. package/dist/components/hx-accordion/hx-accordion.d.ts.map +1 -1
  14. package/dist/components/hx-accordion/index.js +1 -1
  15. package/dist/components/hx-action-bar/hx-action-bar.d.ts +12 -2
  16. package/dist/components/hx-action-bar/hx-action-bar.d.ts.map +1 -1
  17. package/dist/components/hx-action-bar/index.js +1 -1
  18. package/dist/components/hx-alert/hx-alert.d.ts +31 -3
  19. package/dist/components/hx-alert/hx-alert.d.ts.map +1 -1
  20. package/dist/components/hx-alert/hx-alert.styles.d.ts.map +1 -1
  21. package/dist/components/hx-alert/index.js +1 -1
  22. package/dist/components/hx-avatar/hx-avatar.d.ts +8 -1
  23. package/dist/components/hx-avatar/hx-avatar.d.ts.map +1 -1
  24. package/dist/components/hx-avatar/index.js +1 -1
  25. package/dist/components/hx-badge/hx-badge.d.ts +8 -1
  26. package/dist/components/hx-badge/hx-badge.d.ts.map +1 -1
  27. package/dist/components/hx-badge/hx-badge.styles.d.ts.map +1 -1
  28. package/dist/components/hx-badge/index.js +1 -1
  29. package/dist/components/hx-banner/hx-banner.d.ts +25 -4
  30. package/dist/components/hx-banner/hx-banner.d.ts.map +1 -1
  31. package/dist/components/hx-banner/hx-banner.styles.d.ts.map +1 -1
  32. package/dist/components/hx-banner/index.js +1 -1
  33. package/dist/components/hx-breadcrumb/hx-breadcrumb.d.ts +24 -4
  34. package/dist/components/hx-breadcrumb/hx-breadcrumb.d.ts.map +1 -1
  35. package/dist/components/hx-breadcrumb/index.js +1 -1
  36. package/dist/components/hx-button/hx-button.d.ts +16 -7
  37. package/dist/components/hx-button/hx-button.d.ts.map +1 -1
  38. package/dist/components/hx-button/hx-button.styles.d.ts.map +1 -1
  39. package/dist/components/hx-button/index.js +1 -1
  40. package/dist/components/hx-button-group/hx-button-group.d.ts +3 -6
  41. package/dist/components/hx-button-group/hx-button-group.d.ts.map +1 -1
  42. package/dist/components/hx-button-group/index.js +1 -1
  43. package/dist/components/hx-card/hx-card.d.ts +14 -7
  44. package/dist/components/hx-card/hx-card.d.ts.map +1 -1
  45. package/dist/components/hx-card/index.js +1 -1
  46. package/dist/components/hx-carousel/hx-carousel-item.d.ts +2 -0
  47. package/dist/components/hx-carousel/hx-carousel-item.d.ts.map +1 -1
  48. package/dist/components/hx-carousel/hx-carousel-item.styles.d.ts +2 -0
  49. package/dist/components/hx-carousel/hx-carousel-item.styles.d.ts.map +1 -0
  50. package/dist/components/hx-carousel/hx-carousel.d.ts +29 -2
  51. package/dist/components/hx-carousel/hx-carousel.d.ts.map +1 -1
  52. package/dist/components/hx-carousel/index.js +1 -1
  53. package/dist/components/hx-checkbox/hx-checkbox.d.ts +34 -18
  54. package/dist/components/hx-checkbox/hx-checkbox.d.ts.map +1 -1
  55. package/dist/components/hx-checkbox/hx-checkbox.styles.d.ts.map +1 -1
  56. package/dist/components/hx-checkbox/index.js +1 -1
  57. package/dist/components/hx-checkbox-group/hx-checkbox-group.d.ts +27 -6
  58. package/dist/components/hx-checkbox-group/hx-checkbox-group.d.ts.map +1 -1
  59. package/dist/components/hx-checkbox-group/index.js +1 -1
  60. package/dist/components/hx-clinical-status/hx-clinical-status.d.ts +126 -0
  61. package/dist/components/hx-clinical-status/hx-clinical-status.d.ts.map +1 -0
  62. package/dist/components/hx-clinical-status/hx-clinical-status.styles.d.ts +2 -0
  63. package/dist/components/hx-clinical-status/hx-clinical-status.styles.d.ts.map +1 -0
  64. package/dist/components/hx-clinical-status/index.d.ts +3 -0
  65. package/dist/components/hx-clinical-status/index.d.ts.map +1 -0
  66. package/dist/components/hx-clinical-status/index.js +5 -0
  67. package/dist/components/hx-clinical-status/index.js.map +1 -0
  68. package/dist/components/hx-code-snippet/hx-code-snippet.d.ts +10 -0
  69. package/dist/components/hx-code-snippet/hx-code-snippet.d.ts.map +1 -1
  70. package/dist/components/hx-code-snippet/hx-code-snippet.styles.d.ts.map +1 -1
  71. package/dist/components/hx-code-snippet/index.js +1 -1
  72. package/dist/components/hx-color-picker/color-utils.d.ts +27 -0
  73. package/dist/components/hx-color-picker/color-utils.d.ts.map +1 -0
  74. package/dist/components/hx-color-picker/hx-color-picker.d.ts +84 -4
  75. package/dist/components/hx-color-picker/hx-color-picker.d.ts.map +1 -1
  76. package/dist/components/hx-color-picker/hx-color-picker.styles.d.ts.map +1 -1
  77. package/dist/components/hx-color-picker/index.js +1 -1
  78. package/dist/components/hx-combobox/hx-combobox.d.ts +41 -6
  79. package/dist/components/hx-combobox/hx-combobox.d.ts.map +1 -1
  80. package/dist/components/hx-combobox/hx-combobox.styles.d.ts.map +1 -1
  81. package/dist/components/hx-combobox/index.js +1 -1
  82. package/dist/components/hx-container/index.js +1 -1
  83. package/dist/components/hx-copy-button/hx-copy-button.d.ts +17 -1
  84. package/dist/components/hx-copy-button/hx-copy-button.d.ts.map +1 -1
  85. package/dist/components/hx-copy-button/index.js +1 -1
  86. package/dist/components/hx-counter/hx-counter.d.ts +32 -6
  87. package/dist/components/hx-counter/hx-counter.d.ts.map +1 -1
  88. package/dist/components/hx-counter/hx-counter.styles.d.ts.map +1 -1
  89. package/dist/components/hx-counter/index.js +1 -1
  90. package/dist/components/hx-data-table/hx-data-table.d.ts +27 -2
  91. package/dist/components/hx-data-table/hx-data-table.d.ts.map +1 -1
  92. package/dist/components/hx-data-table/hx-data-table.styles.d.ts.map +1 -1
  93. package/dist/components/hx-data-table/index.js +1 -1
  94. package/dist/components/hx-date-picker/hx-date-picker.d.ts +101 -5
  95. package/dist/components/hx-date-picker/hx-date-picker.d.ts.map +1 -1
  96. package/dist/components/hx-date-picker/hx-date-picker.styles.d.ts.map +1 -1
  97. package/dist/components/hx-date-picker/index.js +1 -1
  98. package/dist/components/hx-dialog/hx-dialog.d.ts +34 -4
  99. package/dist/components/hx-dialog/hx-dialog.d.ts.map +1 -1
  100. package/dist/components/hx-dialog/hx-dialog.styles.d.ts.map +1 -1
  101. package/dist/components/hx-dialog/index.js +1 -1
  102. package/dist/components/hx-divider/hx-divider.d.ts +4 -1
  103. package/dist/components/hx-divider/hx-divider.d.ts.map +1 -1
  104. package/dist/components/hx-divider/index.js +1 -1
  105. package/dist/components/hx-drawer/hx-drawer.d.ts +28 -10
  106. package/dist/components/hx-drawer/hx-drawer.d.ts.map +1 -1
  107. package/dist/components/hx-drawer/hx-drawer.styles.d.ts.map +1 -1
  108. package/dist/components/hx-drawer/index.js +1 -1
  109. package/dist/components/hx-dropdown/hx-dropdown.d.ts +29 -3
  110. package/dist/components/hx-dropdown/hx-dropdown.d.ts.map +1 -1
  111. package/dist/components/hx-dropdown/index.js +1 -1
  112. package/dist/components/hx-field/hx-field.d.ts +11 -3
  113. package/dist/components/hx-field/hx-field.d.ts.map +1 -1
  114. package/dist/components/hx-field/index.js +1 -1
  115. package/dist/components/hx-field-label/hx-field-label.styles.d.ts.map +1 -1
  116. package/dist/components/hx-field-label/index.js +1 -1
  117. package/dist/components/hx-file-upload/hx-file-upload.d.ts +39 -3
  118. package/dist/components/hx-file-upload/hx-file-upload.d.ts.map +1 -1
  119. package/dist/components/hx-file-upload/hx-file-upload.styles.d.ts.map +1 -1
  120. package/dist/components/hx-file-upload/index.js +1 -1
  121. package/dist/components/hx-form/hx-form.d.ts.map +1 -1
  122. package/dist/components/hx-form/index.js +1 -1
  123. package/dist/components/hx-format-date/hx-format-date.d.ts +8 -0
  124. package/dist/components/hx-format-date/hx-format-date.d.ts.map +1 -1
  125. package/dist/components/hx-format-date/index.js +1 -1
  126. package/dist/components/hx-grid/hx-grid.d.ts +14 -12
  127. package/dist/components/hx-grid/hx-grid.d.ts.map +1 -1
  128. package/dist/components/hx-grid/index.js +1 -1
  129. package/dist/components/hx-help-text/index.js +1 -1
  130. package/dist/components/hx-icon/hx-icon.d.ts +10 -2
  131. package/dist/components/hx-icon/hx-icon.d.ts.map +1 -1
  132. package/dist/components/hx-icon/index.js +1 -1
  133. package/dist/components/hx-icon-button/hx-icon-button.d.ts +12 -0
  134. package/dist/components/hx-icon-button/hx-icon-button.d.ts.map +1 -1
  135. package/dist/components/hx-icon-button/index.js +1 -1
  136. package/dist/components/hx-image/hx-image.d.ts +8 -0
  137. package/dist/components/hx-image/hx-image.d.ts.map +1 -1
  138. package/dist/components/hx-image/index.js +1 -1
  139. package/dist/components/hx-link/hx-link.d.ts +4 -1
  140. package/dist/components/hx-link/hx-link.d.ts.map +1 -1
  141. package/dist/components/hx-link/hx-link.styles.d.ts.map +1 -1
  142. package/dist/components/hx-link/index.js +1 -1
  143. package/dist/components/hx-list/hx-list-item.d.ts +8 -2
  144. package/dist/components/hx-list/hx-list-item.d.ts.map +1 -1
  145. package/dist/components/hx-list/hx-list-item.styles.d.ts.map +1 -1
  146. package/dist/components/hx-list/hx-list.d.ts +6 -2
  147. package/dist/components/hx-list/hx-list.d.ts.map +1 -1
  148. package/dist/components/hx-list/index.js +1 -1
  149. package/dist/components/hx-menu/hx-menu-item.d.ts +11 -0
  150. package/dist/components/hx-menu/hx-menu-item.d.ts.map +1 -1
  151. package/dist/components/hx-menu/hx-menu-item.styles.d.ts.map +1 -1
  152. package/dist/components/hx-menu/hx-menu.d.ts +10 -1
  153. package/dist/components/hx-menu/hx-menu.d.ts.map +1 -1
  154. package/dist/components/hx-menu/index.js +1 -1
  155. package/dist/components/hx-meter/hx-meter.d.ts +10 -2
  156. package/dist/components/hx-meter/hx-meter.d.ts.map +1 -1
  157. package/dist/components/hx-meter/hx-meter.styles.d.ts.map +1 -1
  158. package/dist/components/hx-meter/index.js +1 -1
  159. package/dist/components/hx-nav/hx-nav.d.ts +15 -0
  160. package/dist/components/hx-nav/hx-nav.d.ts.map +1 -1
  161. package/dist/components/hx-nav/index.js +1 -1
  162. package/dist/components/hx-number-input/hx-number-input.d.ts +51 -4
  163. package/dist/components/hx-number-input/hx-number-input.d.ts.map +1 -1
  164. package/dist/components/hx-number-input/index.js +1 -1
  165. package/dist/components/hx-overflow-menu/hx-overflow-menu.d.ts +18 -3
  166. package/dist/components/hx-overflow-menu/hx-overflow-menu.d.ts.map +1 -1
  167. package/dist/components/hx-overflow-menu/hx-overflow-menu.styles.d.ts.map +1 -1
  168. package/dist/components/hx-overflow-menu/index.js +1 -1
  169. package/dist/components/hx-pagination/hx-pagination.d.ts +38 -0
  170. package/dist/components/hx-pagination/hx-pagination.d.ts.map +1 -1
  171. package/dist/components/hx-pagination/hx-pagination.styles.d.ts.map +1 -1
  172. package/dist/components/hx-pagination/index.js +1 -1
  173. package/dist/components/hx-patient-banner/hx-patient-banner.d.ts +105 -0
  174. package/dist/components/hx-patient-banner/hx-patient-banner.d.ts.map +1 -0
  175. package/dist/components/hx-patient-banner/hx-patient-banner.styles.d.ts +2 -0
  176. package/dist/components/hx-patient-banner/hx-patient-banner.styles.d.ts.map +1 -0
  177. package/dist/components/hx-patient-banner/index.d.ts +3 -0
  178. package/dist/components/hx-patient-banner/index.d.ts.map +1 -0
  179. package/dist/components/hx-patient-banner/index.js +5 -0
  180. package/dist/components/hx-patient-banner/index.js.map +1 -0
  181. package/dist/components/hx-phi-field/hx-phi-field.d.ts +72 -0
  182. package/dist/components/hx-phi-field/hx-phi-field.d.ts.map +1 -0
  183. package/dist/components/hx-phi-field/hx-phi-field.styles.d.ts +2 -0
  184. package/dist/components/hx-phi-field/hx-phi-field.styles.d.ts.map +1 -0
  185. package/dist/components/hx-phi-field/index.d.ts +3 -0
  186. package/dist/components/hx-phi-field/index.d.ts.map +1 -0
  187. package/dist/components/hx-phi-field/index.js +5 -0
  188. package/dist/components/hx-phi-field/index.js.map +1 -0
  189. package/dist/components/hx-popover/hx-popover.d.ts +77 -10
  190. package/dist/components/hx-popover/hx-popover.d.ts.map +1 -1
  191. package/dist/components/hx-popover/index.js +1 -1
  192. package/dist/components/hx-popup/hx-popup.d.ts +13 -8
  193. package/dist/components/hx-popup/hx-popup.d.ts.map +1 -1
  194. package/dist/components/hx-popup/hx-popup.styles.d.ts.map +1 -1
  195. package/dist/components/hx-popup/index.js +1 -1
  196. package/dist/components/hx-progress-bar/hx-progress-bar.d.ts +10 -2
  197. package/dist/components/hx-progress-bar/hx-progress-bar.d.ts.map +1 -1
  198. package/dist/components/hx-progress-bar/hx-progress-bar.styles.d.ts.map +1 -1
  199. package/dist/components/hx-progress-bar/index.js +1 -1
  200. package/dist/components/hx-progress-ring/hx-progress-ring.d.ts +8 -2
  201. package/dist/components/hx-progress-ring/hx-progress-ring.d.ts.map +1 -1
  202. package/dist/components/hx-progress-ring/index.js +1 -1
  203. package/dist/components/hx-prose/hx-prose.d.ts +6 -3
  204. package/dist/components/hx-prose/hx-prose.d.ts.map +1 -1
  205. package/dist/components/hx-prose/index.js +1 -1
  206. package/dist/components/hx-radio-group/hx-radio-group.d.ts +3 -7
  207. package/dist/components/hx-radio-group/hx-radio-group.d.ts.map +1 -1
  208. package/dist/components/hx-radio-group/hx-radio.d.ts +4 -2
  209. package/dist/components/hx-radio-group/hx-radio.d.ts.map +1 -1
  210. package/dist/components/hx-radio-group/hx-radio.styles.d.ts.map +1 -1
  211. package/dist/components/hx-radio-group/index.js +1 -1
  212. package/dist/components/hx-rating/hx-rating.d.ts +54 -2
  213. package/dist/components/hx-rating/hx-rating.d.ts.map +1 -1
  214. package/dist/components/hx-rating/hx-rating.styles.d.ts.map +1 -1
  215. package/dist/components/hx-rating/index.js +1 -1
  216. package/dist/components/hx-select/hx-select.d.ts +37 -12
  217. package/dist/components/hx-select/hx-select.d.ts.map +1 -1
  218. package/dist/components/hx-select/hx-select.styles.d.ts.map +1 -1
  219. package/dist/components/hx-select/index.js +1 -1
  220. package/dist/components/hx-side-nav/hx-nav-item.d.ts +13 -0
  221. package/dist/components/hx-side-nav/hx-nav-item.d.ts.map +1 -1
  222. package/dist/components/hx-side-nav/hx-nav-item.styles.d.ts.map +1 -1
  223. package/dist/components/hx-side-nav/hx-side-nav.d.ts +6 -1
  224. package/dist/components/hx-side-nav/hx-side-nav.d.ts.map +1 -1
  225. package/dist/components/hx-side-nav/hx-side-nav.styles.d.ts.map +1 -1
  226. package/dist/components/hx-side-nav/index.js +1 -1
  227. package/dist/components/hx-skeleton/hx-skeleton.d.ts +2 -2
  228. package/dist/components/hx-skeleton/hx-skeleton.d.ts.map +1 -1
  229. package/dist/components/hx-slider/hx-slider.d.ts +26 -9
  230. package/dist/components/hx-slider/hx-slider.d.ts.map +1 -1
  231. package/dist/components/hx-slider/hx-slider.styles.d.ts.map +1 -1
  232. package/dist/components/hx-slider/index.js +1 -1
  233. package/dist/components/hx-spinner/hx-spinner.d.ts +17 -2
  234. package/dist/components/hx-spinner/hx-spinner.d.ts.map +1 -1
  235. package/dist/components/hx-spinner/hx-spinner.styles.d.ts.map +1 -1
  236. package/dist/components/hx-spinner/index.js +1 -1
  237. package/dist/components/hx-split-button/hx-split-button.d.ts +22 -4
  238. package/dist/components/hx-split-button/hx-split-button.d.ts.map +1 -1
  239. package/dist/components/hx-split-button/hx-split-button.styles.d.ts.map +1 -1
  240. package/dist/components/hx-split-button/index.js +1 -1
  241. package/dist/components/hx-split-panel/hx-split-panel.d.ts +32 -2
  242. package/dist/components/hx-split-panel/hx-split-panel.d.ts.map +1 -1
  243. package/dist/components/hx-split-panel/hx-split-panel.styles.d.ts.map +1 -1
  244. package/dist/components/hx-split-panel/index.js +1 -1
  245. package/dist/components/hx-stack/index.js +1 -1
  246. package/dist/components/hx-stat/hx-stat.d.ts +12 -3
  247. package/dist/components/hx-stat/hx-stat.d.ts.map +1 -1
  248. package/dist/components/hx-stat/index.js +1 -1
  249. package/dist/components/hx-status-indicator/hx-status-indicator.d.ts +15 -14
  250. package/dist/components/hx-status-indicator/hx-status-indicator.d.ts.map +1 -1
  251. package/dist/components/hx-status-indicator/index.js +1 -1
  252. package/dist/components/hx-steps/hx-step.d.ts +7 -9
  253. package/dist/components/hx-steps/hx-step.d.ts.map +1 -1
  254. package/dist/components/hx-steps/hx-step.styles.d.ts.map +1 -1
  255. package/dist/components/hx-steps/hx-steps.d.ts +3 -3
  256. package/dist/components/hx-steps/hx-steps.d.ts.map +1 -1
  257. package/dist/components/hx-steps/index.js +1 -1
  258. package/dist/components/hx-structured-list/hx-structured-list.d.ts +10 -3
  259. package/dist/components/hx-structured-list/hx-structured-list.d.ts.map +1 -1
  260. package/dist/components/hx-structured-list/index.js +1 -1
  261. package/dist/components/hx-style-scope/hx-style-scope.d.ts +71 -0
  262. package/dist/components/hx-style-scope/hx-style-scope.d.ts.map +1 -0
  263. package/dist/components/hx-style-scope/hx-style-scope.styles.d.ts +10 -0
  264. package/dist/components/hx-style-scope/hx-style-scope.styles.d.ts.map +1 -0
  265. package/dist/components/hx-style-scope/index.d.ts +2 -0
  266. package/dist/components/hx-style-scope/index.d.ts.map +1 -0
  267. package/dist/components/hx-style-scope/index.js +5 -0
  268. package/dist/components/hx-style-scope/index.js.map +1 -0
  269. package/dist/components/hx-switch/hx-switch.d.ts +25 -5
  270. package/dist/components/hx-switch/hx-switch.d.ts.map +1 -1
  271. package/dist/components/hx-switch/hx-switch.styles.d.ts.map +1 -1
  272. package/dist/components/hx-switch/index.js +1 -1
  273. package/dist/components/hx-table/hx-table.d.ts +8 -2
  274. package/dist/components/hx-table/hx-table.d.ts.map +1 -1
  275. package/dist/components/hx-table/hx-table.styles.d.ts.map +1 -1
  276. package/dist/components/hx-table/hx-th.d.ts +4 -0
  277. package/dist/components/hx-table/hx-th.d.ts.map +1 -1
  278. package/dist/components/hx-table/index.js +1 -1
  279. package/dist/components/hx-tabs/hx-tab-panel.styles.d.ts.map +1 -1
  280. package/dist/components/hx-tabs/hx-tab.d.ts +4 -0
  281. package/dist/components/hx-tabs/hx-tab.d.ts.map +1 -1
  282. package/dist/components/hx-tabs/hx-tab.styles.d.ts.map +1 -1
  283. package/dist/components/hx-tabs/hx-tabs.d.ts +8 -2
  284. package/dist/components/hx-tabs/hx-tabs.d.ts.map +1 -1
  285. package/dist/components/hx-tabs/index.js +1 -1
  286. package/dist/components/hx-tag/hx-tag.d.ts +2 -0
  287. package/dist/components/hx-tag/hx-tag.d.ts.map +1 -1
  288. package/dist/components/hx-tag/hx-tag.styles.d.ts.map +1 -1
  289. package/dist/components/hx-tag/index.js +1 -1
  290. package/dist/components/hx-text/hx-text.d.ts +1 -0
  291. package/dist/components/hx-text/hx-text.d.ts.map +1 -1
  292. package/dist/components/hx-text/index.js +1 -1
  293. package/dist/components/hx-text-input/hx-text-input.d.ts +22 -16
  294. package/dist/components/hx-text-input/hx-text-input.d.ts.map +1 -1
  295. package/dist/components/hx-text-input/hx-text-input.styles.d.ts.map +1 -1
  296. package/dist/components/hx-text-input/index.js +1 -1
  297. package/dist/components/hx-textarea/hx-textarea.d.ts +13 -7
  298. package/dist/components/hx-textarea/hx-textarea.d.ts.map +1 -1
  299. package/dist/components/hx-textarea/hx-textarea.styles.d.ts.map +1 -1
  300. package/dist/components/hx-textarea/index.js +1 -1
  301. package/dist/components/hx-theme/hx-theme.d.ts +84 -5
  302. package/dist/components/hx-theme/hx-theme.d.ts.map +1 -1
  303. package/dist/components/hx-theme/index.js +1 -1
  304. package/dist/components/hx-time-picker/hx-time-picker.d.ts +24 -3
  305. package/dist/components/hx-time-picker/hx-time-picker.d.ts.map +1 -1
  306. package/dist/components/hx-time-picker/hx-time-picker.styles.d.ts.map +1 -1
  307. package/dist/components/hx-time-picker/index.js +1 -1
  308. package/dist/components/hx-toast/hx-toast-stack.d.ts +1 -1
  309. package/dist/components/hx-toast/hx-toast-stack.d.ts.map +1 -1
  310. package/dist/components/hx-toast/hx-toast.d.ts +17 -5
  311. package/dist/components/hx-toast/hx-toast.d.ts.map +1 -1
  312. package/dist/components/hx-toast/hx-toast.styles.d.ts.map +1 -1
  313. package/dist/components/hx-toast/index.js +1 -1
  314. package/dist/components/hx-toast/toast-factory.d.ts.map +1 -1
  315. package/dist/components/hx-toggle-button/hx-toggle-button.d.ts +26 -2
  316. package/dist/components/hx-toggle-button/hx-toggle-button.d.ts.map +1 -1
  317. package/dist/components/hx-toggle-button/hx-toggle-button.styles.d.ts.map +1 -1
  318. package/dist/components/hx-toggle-button/index.js +1 -1
  319. package/dist/components/hx-tooltip/hx-tooltip.d.ts +58 -2
  320. package/dist/components/hx-tooltip/hx-tooltip.d.ts.map +1 -1
  321. package/dist/components/hx-tooltip/index.js +1 -1
  322. package/dist/components/hx-top-nav/hx-top-nav.d.ts +4 -0
  323. package/dist/components/hx-top-nav/hx-top-nav.d.ts.map +1 -1
  324. package/dist/components/hx-top-nav/index.js +1 -1
  325. package/dist/components/hx-tree-view/hx-tree-item.d.ts +9 -0
  326. package/dist/components/hx-tree-view/hx-tree-item.d.ts.map +1 -1
  327. package/dist/components/hx-tree-view/hx-tree-view.d.ts +32 -2
  328. package/dist/components/hx-tree-view/hx-tree-view.d.ts.map +1 -1
  329. package/dist/components/hx-tree-view/hx-tree-view.styles.d.ts.map +1 -1
  330. package/dist/components/hx-tree-view/index.js +1 -1
  331. package/dist/controllers/helix-audit-controller.d.ts +71 -0
  332. package/dist/controllers/helix-audit-controller.d.ts.map +1 -0
  333. package/dist/css/helix-all.css +9581 -0
  334. package/dist/css/helix-core.css +1784 -0
  335. package/dist/css/helix-data.css +639 -0
  336. package/dist/css/helix-feedback.css +1239 -0
  337. package/dist/css/helix-forms.css +2498 -0
  338. package/dist/css/helix-layout.css +380 -0
  339. package/dist/css/helix-media.css +213 -0
  340. package/dist/css/helix-navigation.css +1122 -0
  341. package/dist/css/helix-overlay.css +643 -0
  342. package/dist/css/helix-tokens.css +432 -0
  343. package/dist/css/helix-utility.css +633 -0
  344. package/dist/css/hx-accordion.css +10 -0
  345. package/dist/css/hx-action-bar.css +117 -0
  346. package/dist/css/hx-alert.css +213 -0
  347. package/dist/css/hx-avatar.css +117 -0
  348. package/dist/css/hx-badge.css +174 -0
  349. package/dist/css/hx-banner.css +203 -0
  350. package/dist/css/hx-breadcrumb.css +36 -0
  351. package/dist/css/hx-button-group.css +91 -0
  352. package/dist/css/hx-button.css +262 -0
  353. package/dist/css/hx-card.css +161 -0
  354. package/dist/css/hx-carousel.css +211 -0
  355. package/dist/css/hx-checkbox-group.css +77 -0
  356. package/dist/css/hx-checkbox.css +219 -0
  357. package/dist/css/hx-clinical-status.css +246 -0
  358. package/dist/css/hx-code-snippet.css +179 -0
  359. package/dist/css/hx-color-picker.css +2 -0
  360. package/dist/css/hx-combobox.css +2 -0
  361. package/dist/css/hx-container.css +82 -0
  362. package/dist/css/hx-copy-button.css +121 -0
  363. package/dist/css/hx-counter.css +51 -0
  364. package/dist/css/hx-data-table.css +207 -0
  365. package/dist/css/hx-date-picker.css +2 -0
  366. package/dist/css/hx-dialog.css +190 -0
  367. package/dist/css/hx-divider.css +87 -0
  368. package/dist/css/hx-drawer.css +262 -0
  369. package/dist/css/hx-dropdown.css +46 -0
  370. package/dist/css/hx-field-label.css +38 -0
  371. package/dist/css/hx-field.css +119 -0
  372. package/dist/css/hx-file-upload.css +241 -0
  373. package/dist/css/hx-form.css +2 -0
  374. package/dist/css/hx-format-date.css +10 -0
  375. package/dist/css/hx-grid.css +14 -0
  376. package/dist/css/hx-help-text.css +50 -0
  377. package/dist/css/hx-icon-button.css +152 -0
  378. package/dist/css/hx-icon.css +73 -0
  379. package/dist/css/hx-image.css +41 -0
  380. package/dist/css/hx-link.css +105 -0
  381. package/dist/css/hx-list.css +48 -0
  382. package/dist/css/hx-menu.css +21 -0
  383. package/dist/css/hx-meter.css +113 -0
  384. package/dist/css/hx-nav.css +242 -0
  385. package/dist/css/hx-number-input.css +246 -0
  386. package/dist/css/hx-overflow-menu.css +133 -0
  387. package/dist/css/hx-pagination.css +193 -0
  388. package/dist/css/hx-patient-banner.css +111 -0
  389. package/dist/css/hx-phi-field.css +85 -0
  390. package/dist/css/hx-popover.css +61 -0
  391. package/dist/css/hx-popup.css +31 -0
  392. package/dist/css/hx-progress-bar.css +133 -0
  393. package/dist/css/hx-progress-ring.css +142 -0
  394. package/dist/css/hx-prose.css +2 -0
  395. package/dist/css/hx-radio-group.css +77 -0
  396. package/dist/css/hx-rating.css +96 -0
  397. package/dist/css/hx-select.css +268 -0
  398. package/dist/css/hx-side-nav.css +142 -0
  399. package/dist/css/hx-skeleton.css +82 -0
  400. package/dist/css/hx-slider.css +287 -0
  401. package/dist/css/hx-spinner.css +116 -0
  402. package/dist/css/hx-split-button.css +309 -0
  403. package/dist/css/hx-split-panel.css +168 -0
  404. package/dist/css/hx-stack.css +104 -0
  405. package/dist/css/hx-stat.css +106 -0
  406. package/dist/css/hx-status-indicator.css +97 -0
  407. package/dist/css/hx-steps.css +52 -0
  408. package/dist/css/hx-structured-list.css +75 -0
  409. package/dist/css/hx-style-scope.css +4 -0
  410. package/dist/css/hx-switch.css +169 -0
  411. package/dist/css/hx-table.css +128 -0
  412. package/dist/css/hx-tabs.css +76 -0
  413. package/dist/css/hx-tag.css +146 -0
  414. package/dist/css/hx-text-input.css +214 -0
  415. package/dist/css/hx-text.css +149 -0
  416. package/dist/css/hx-textarea.css +180 -0
  417. package/dist/css/hx-theme.css +23 -0
  418. package/dist/css/hx-time-picker.css +2 -0
  419. package/dist/css/hx-toast.css +230 -0
  420. package/dist/css/hx-toggle-button.css +207 -0
  421. package/dist/css/hx-tooltip.css +51 -0
  422. package/dist/css/hx-top-nav.css +203 -0
  423. package/dist/css/hx-tree-view.css +22 -0
  424. package/dist/css/hx-visually-hidden.css +26 -0
  425. package/dist/css/index.css +84 -0
  426. package/dist/css/manifest.json +2696 -0
  427. package/dist/index.d.ts +14 -0
  428. package/dist/index.d.ts.map +1 -1
  429. package/dist/index.js +266 -176
  430. package/dist/index.js.map +1 -1
  431. package/dist/mixins/FocusMixin.d.ts +49 -0
  432. package/dist/mixins/FocusMixin.d.ts.map +1 -0
  433. package/dist/mixins/FormMixin.d.ts +69 -0
  434. package/dist/mixins/FormMixin.d.ts.map +1 -0
  435. package/dist/mixins/aria-delegation.d.ts +97 -0
  436. package/dist/mixins/aria-delegation.d.ts.map +1 -0
  437. package/dist/mixins/index.d.ts +5 -0
  438. package/dist/mixins/index.d.ts.map +1 -0
  439. package/dist/shared/FormMixin-Bjvw20G5.js +88 -0
  440. package/dist/shared/FormMixin-Bjvw20G5.js.map +1 -0
  441. package/dist/shared/aria-delegation-CBP9eQ0M.js +107 -0
  442. package/dist/shared/aria-delegation-CBP9eQ0M.js.map +1 -0
  443. package/dist/shared/{hx-accordion-DT8qHOay.js → hx-accordion-_KeulaQR.js} +97 -57
  444. package/dist/shared/hx-accordion-_KeulaQR.js.map +1 -0
  445. package/dist/shared/{hx-action-bar-we_WJety.js → hx-action-bar-D4bulGQP.js} +38 -31
  446. package/dist/shared/hx-action-bar-D4bulGQP.js.map +1 -0
  447. package/dist/shared/{hx-alert-D6uok29t.js → hx-alert-DRZYP0Oo.js} +77 -52
  448. package/dist/shared/hx-alert-DRZYP0Oo.js.map +1 -0
  449. package/dist/shared/{hx-avatar-Cep6Urm3.js → hx-avatar-7p1cj3lG.js} +6 -2
  450. package/dist/shared/hx-avatar-7p1cj3lG.js.map +1 -0
  451. package/dist/shared/{hx-badge-BeuWuUj_.js → hx-badge-DCxvskdw.js} +60 -45
  452. package/dist/shared/hx-badge-DCxvskdw.js.map +1 -0
  453. package/dist/shared/{hx-banner-DnCBJtRR.js → hx-banner-2RS7Nux4.js} +102 -55
  454. package/dist/shared/hx-banner-2RS7Nux4.js.map +1 -0
  455. package/dist/shared/{hx-breadcrumb-item-Bj2UqhzR.js → hx-breadcrumb-item-B2rjepqy.js} +85 -72
  456. package/dist/shared/hx-breadcrumb-item-B2rjepqy.js.map +1 -0
  457. package/dist/shared/{hx-button-Cbhqpm5i.js → hx-button-6S3DwuIj.js} +96 -57
  458. package/dist/shared/hx-button-6S3DwuIj.js.map +1 -0
  459. package/dist/shared/{hx-button-group-CWjWv-wS.js → hx-button-group-ChTQsnQj.js} +10 -10
  460. package/dist/shared/hx-button-group-ChTQsnQj.js.map +1 -0
  461. package/dist/shared/{hx-card-B9j2SHyI.js → hx-card-dIKdcMhr.js} +41 -34
  462. package/dist/shared/hx-card-dIKdcMhr.js.map +1 -0
  463. package/dist/shared/{hx-carousel-item-Be0bC-7o.js → hx-carousel-item-Cm8a1nAi.js} +108 -91
  464. package/dist/shared/hx-carousel-item-Cm8a1nAi.js.map +1 -0
  465. package/dist/shared/{hx-checkbox-CuaJqEo7.js → hx-checkbox-_WUiuTo9.js} +75 -71
  466. package/dist/shared/hx-checkbox-_WUiuTo9.js.map +1 -0
  467. package/dist/shared/{hx-checkbox-group-ydUdV9Sx.js → hx-checkbox-group-B-ci-dxp.js} +62 -43
  468. package/dist/shared/hx-checkbox-group-B-ci-dxp.js.map +1 -0
  469. package/dist/shared/hx-clinical-status-De8yrA5I.js +467 -0
  470. package/dist/shared/hx-clinical-status-De8yrA5I.js.map +1 -0
  471. package/dist/shared/{hx-code-snippet-DBwIjl5p.js → hx-code-snippet-CQsyvthi.js} +72 -47
  472. package/dist/shared/hx-code-snippet-CQsyvthi.js.map +1 -0
  473. package/dist/shared/hx-color-picker-Dk2Myvaf.js +612 -0
  474. package/dist/shared/hx-color-picker-Dk2Myvaf.js.map +1 -0
  475. package/dist/shared/{hx-combobox-CNvY-es8.js → hx-combobox-CNAJXIxo.js} +100 -466
  476. package/dist/shared/hx-combobox-CNAJXIxo.js.map +1 -0
  477. package/dist/shared/{hx-container-DLUKnTi9.js → hx-container-7j16VuQE.js} +16 -16
  478. package/dist/shared/hx-container-7j16VuQE.js.map +1 -0
  479. package/dist/shared/{hx-copy-button-CLBA31to.js → hx-copy-button-B_ZHYO7_.js} +55 -40
  480. package/dist/shared/hx-copy-button-B_ZHYO7_.js.map +1 -0
  481. package/dist/shared/hx-counter-D_B7L9Pi.js +185 -0
  482. package/dist/shared/hx-counter-D_B7L9Pi.js.map +1 -0
  483. package/dist/shared/{hx-data-table-BwoJCFgs.js → hx-data-table-B1j4n4bm.js} +160 -90
  484. package/dist/shared/hx-data-table-B1j4n4bm.js.map +1 -0
  485. package/dist/shared/hx-date-picker-R-0kWFwr.js +627 -0
  486. package/dist/shared/hx-date-picker-R-0kWFwr.js.map +1 -0
  487. package/dist/shared/{hx-dialog-M7so0sRT.js → hx-dialog-U5d3s0Ps.js} +137 -108
  488. package/dist/shared/hx-dialog-U5d3s0Ps.js.map +1 -0
  489. package/dist/shared/{hx-divider-XgWIz4Mr.js → hx-divider-DdAN-_jB.js} +6 -5
  490. package/dist/shared/hx-divider-DdAN-_jB.js.map +1 -0
  491. package/dist/shared/{hx-drawer-CYxuhIQ0.js → hx-drawer-e0qeGxAD.js} +162 -93
  492. package/dist/shared/hx-drawer-e0qeGxAD.js.map +1 -0
  493. package/dist/shared/{hx-dropdown-7cfowTWv.js → hx-dropdown-DP_DNpEb.js} +71 -47
  494. package/dist/shared/hx-dropdown-DP_DNpEb.js.map +1 -0
  495. package/dist/shared/{hx-field-CDP8EXuj.js → hx-field-COM4KvMQ.js} +29 -21
  496. package/dist/shared/hx-field-COM4KvMQ.js.map +1 -0
  497. package/dist/shared/{hx-field-label-Bg-EWvqF.js → hx-field-label-BtZ9H9Yy.js} +8 -11
  498. package/dist/shared/hx-field-label-BtZ9H9Yy.js.map +1 -0
  499. package/dist/shared/{hx-file-upload-9HbONfqt.js → hx-file-upload-DbECypLe.js} +121 -91
  500. package/dist/shared/hx-file-upload-DbECypLe.js.map +1 -0
  501. package/dist/shared/hx-form-fJE-FJQV.js +262 -0
  502. package/dist/shared/hx-form-fJE-FJQV.js.map +1 -0
  503. package/dist/shared/{hx-format-date-BsVr8gpD.js → hx-format-date-C030ThSm.js} +20 -12
  504. package/dist/shared/hx-format-date-C030ThSm.js.map +1 -0
  505. package/dist/shared/{hx-grid-BsDBCTbt.js → hx-grid-DE8KM5Gf.js} +29 -22
  506. package/dist/shared/hx-grid-DE8KM5Gf.js.map +1 -0
  507. package/dist/shared/{hx-help-text-DaOPN1iB.js → hx-help-text-BAcEGRUE.js} +2 -2
  508. package/dist/shared/{hx-help-text-DaOPN1iB.js.map → hx-help-text-BAcEGRUE.js.map} +1 -1
  509. package/dist/shared/{hx-icon-button-iu0i_faq.js → hx-icon-button-Et9wq79n.js} +15 -1
  510. package/dist/shared/{hx-icon-button-iu0i_faq.js.map → hx-icon-button-Et9wq79n.js.map} +1 -1
  511. package/dist/shared/{hx-icon--xsJztDh.js → hx-icon-dYvrzvsO.js} +12 -7
  512. package/dist/shared/hx-icon-dYvrzvsO.js.map +1 -0
  513. package/dist/shared/{hx-image-xyb_tHCR.js → hx-image-DUsEi-oN.js} +20 -15
  514. package/dist/shared/hx-image-DUsEi-oN.js.map +1 -0
  515. package/dist/shared/{hx-link-DfNy_UU8.js → hx-link-Peg2LzOD.js} +19 -8
  516. package/dist/shared/hx-link-Peg2LzOD.js.map +1 -0
  517. package/dist/shared/{hx-list-CdRNgeoP.js → hx-list-DwInEX2H.js} +63 -37
  518. package/dist/shared/hx-list-DwInEX2H.js.map +1 -0
  519. package/dist/shared/{hx-menu-divider-DR8klkFT.js → hx-menu-divider-DR4G_rqw.js} +71 -40
  520. package/dist/shared/hx-menu-divider-DR4G_rqw.js.map +1 -0
  521. package/dist/shared/{hx-meter-CZ7lnMra.js → hx-meter-CVs4A649.js} +83 -67
  522. package/dist/shared/hx-meter-CVs4A649.js.map +1 -0
  523. package/dist/shared/{hx-nav-DM6-cGKF.js → hx-nav-D377Ngz4.js} +70 -54
  524. package/dist/shared/hx-nav-D377Ngz4.js.map +1 -0
  525. package/dist/shared/{hx-nav-item-D54-5eUM.js → hx-nav-item-ByU2N921.js} +84 -48
  526. package/dist/shared/hx-nav-item-ByU2N921.js.map +1 -0
  527. package/dist/shared/{hx-number-input-BP6TIA92.js → hx-number-input-BPgrlMLN.js} +97 -65
  528. package/dist/shared/hx-number-input-BPgrlMLN.js.map +1 -0
  529. package/dist/shared/{hx-overflow-menu-CobkjAb8.js → hx-overflow-menu-Bz02LPPk.js} +83 -67
  530. package/dist/shared/hx-overflow-menu-Bz02LPPk.js.map +1 -0
  531. package/dist/shared/{hx-pagination-10dpXS95.js → hx-pagination-DYhYPqDn.js} +119 -92
  532. package/dist/shared/hx-pagination-DYhYPqDn.js.map +1 -0
  533. package/dist/shared/hx-patient-banner-BoJHddAL.js +256 -0
  534. package/dist/shared/hx-patient-banner-BoJHddAL.js.map +1 -0
  535. package/dist/shared/hx-phi-field-EDWna59z.js +261 -0
  536. package/dist/shared/hx-phi-field-EDWna59z.js.map +1 -0
  537. package/dist/shared/{hx-popover-ULjonbaO.js → hx-popover-D6kYQkt3.js} +121 -89
  538. package/dist/shared/hx-popover-D6kYQkt3.js.map +1 -0
  539. package/dist/shared/{hx-popup-CYf9Q5sj.js → hx-popup-RQb6HUXc.js} +14 -2
  540. package/dist/shared/hx-popup-RQb6HUXc.js.map +1 -0
  541. package/dist/shared/{hx-progress-bar-CnTibV63.js → hx-progress-bar-ByEmxq1V.js} +77 -57
  542. package/dist/shared/hx-progress-bar-ByEmxq1V.js.map +1 -0
  543. package/dist/shared/{hx-progress-ring-BHJBaXNk.js → hx-progress-ring-CtVnNRQx.js} +36 -29
  544. package/dist/shared/hx-progress-ring-CtVnNRQx.js.map +1 -0
  545. package/dist/shared/hx-prose-Ml_L2zje.js +59 -0
  546. package/dist/shared/hx-prose-Ml_L2zje.js.map +1 -0
  547. package/dist/shared/{hx-radio-BnKcRuQu.js → hx-radio-jgeW92SV.js} +34 -34
  548. package/dist/shared/hx-radio-jgeW92SV.js.map +1 -0
  549. package/dist/shared/{hx-rating-Y_t7Z4qb.js → hx-rating-g_iy-DW_.js} +144 -81
  550. package/dist/shared/hx-rating-g_iy-DW_.js.map +1 -0
  551. package/dist/shared/{hx-select-C50lD7NS.js → hx-select-4-nHL0vd.js} +158 -208
  552. package/dist/shared/hx-select-4-nHL0vd.js.map +1 -0
  553. package/dist/shared/hx-skeleton-BHvALyd7.js.map +1 -1
  554. package/dist/shared/{hx-slider-CprSNrRi.js → hx-slider-7Q-e0_pc.js} +49 -28
  555. package/dist/shared/hx-slider-7Q-e0_pc.js.map +1 -0
  556. package/dist/shared/{hx-spinner-BOApJ-g9.js → hx-spinner-DEgrKsUo.js} +36 -28
  557. package/dist/shared/hx-spinner-DEgrKsUo.js.map +1 -0
  558. package/dist/shared/{hx-split-button-CHGy4FUc.js → hx-split-button-BA7P_ly5.js} +51 -31
  559. package/dist/shared/hx-split-button-BA7P_ly5.js.map +1 -0
  560. package/dist/shared/{hx-split-panel-DYtB45Tr.js → hx-split-panel-Bss54UN8.js} +68 -44
  561. package/dist/shared/hx-split-panel-Bss54UN8.js.map +1 -0
  562. package/dist/shared/{hx-stack-CfoW7jU7.js → hx-stack-BStY1RmV.js} +29 -29
  563. package/dist/shared/hx-stack-BStY1RmV.js.map +1 -0
  564. package/dist/shared/{hx-stat-C2wfph8W.js → hx-stat-CmkCUI8v.js} +49 -33
  565. package/dist/shared/hx-stat-CmkCUI8v.js.map +1 -0
  566. package/dist/shared/{hx-status-indicator-oYWOkWlD.js → hx-status-indicator-4ClvA5mU.js} +22 -19
  567. package/dist/shared/hx-status-indicator-4ClvA5mU.js.map +1 -0
  568. package/dist/shared/{hx-step-DYoIumpR.js → hx-step-DlANlr2A.js} +61 -89
  569. package/dist/shared/hx-step-DlANlr2A.js.map +1 -0
  570. package/dist/shared/{hx-structured-list-CMWllxGg.js → hx-structured-list-Db9rwLI_.js} +26 -23
  571. package/dist/shared/hx-structured-list-Db9rwLI_.js.map +1 -0
  572. package/dist/shared/hx-style-scope-BroUu83L.js +125 -0
  573. package/dist/shared/hx-style-scope-BroUu83L.js.map +1 -0
  574. package/dist/shared/{hx-switch-DkKchcuP.js → hx-switch-C0Lp5RGy.js} +19 -7
  575. package/dist/shared/hx-switch-C0Lp5RGy.js.map +1 -0
  576. package/dist/shared/{hx-tab-panel-BRNcLICw.js → hx-tab-panel-GGjk6Qg4.js} +139 -119
  577. package/dist/shared/hx-tab-panel-GGjk6Qg4.js.map +1 -0
  578. package/dist/shared/{hx-tag-B3N-vZ6B.js → hx-tag-K5fCjfqQ.js} +16 -14
  579. package/dist/shared/hx-tag-K5fCjfqQ.js.map +1 -0
  580. package/dist/shared/{hx-td-CVwCGBYf.js → hx-td-DZuILY3s.js} +64 -59
  581. package/dist/shared/hx-td-DZuILY3s.js.map +1 -0
  582. package/dist/shared/{hx-text-NjKoQATI.js → hx-text-DoEVOf47.js} +30 -29
  583. package/dist/shared/hx-text-DoEVOf47.js.map +1 -0
  584. package/dist/shared/{hx-text-input-CCZZbWQ9.js → hx-text-input-DTKWPVdy.js} +218 -86
  585. package/dist/shared/hx-text-input-DTKWPVdy.js.map +1 -0
  586. package/dist/shared/{hx-textarea-BsQdB1Rk.js → hx-textarea-BkSiU8oM.js} +35 -26
  587. package/dist/shared/hx-textarea-BkSiU8oM.js.map +1 -0
  588. package/dist/shared/hx-theme-Aag8QJvT.js +299 -0
  589. package/dist/shared/hx-theme-Aag8QJvT.js.map +1 -0
  590. package/dist/shared/{hx-time-picker-CJcIjH3C.js → hx-time-picker-BpCRsh_z.js} +101 -300
  591. package/dist/shared/hx-time-picker-BpCRsh_z.js.map +1 -0
  592. package/dist/shared/{hx-toggle-button-D4F1soEM.js → hx-toggle-button-CPFqs3eQ.js} +81 -41
  593. package/dist/shared/hx-toggle-button-CPFqs3eQ.js.map +1 -0
  594. package/dist/shared/{hx-tooltip-Bk1iQRHs.js → hx-tooltip-CrO4vzeX.js} +75 -53
  595. package/dist/shared/hx-tooltip-CrO4vzeX.js.map +1 -0
  596. package/dist/shared/{hx-top-nav-D2bQpns3.js → hx-top-nav-DYlnzDaU.js} +3 -1
  597. package/dist/shared/{hx-top-nav-D2bQpns3.js.map → hx-top-nav-DYlnzDaU.js.map} +1 -1
  598. package/dist/shared/{hx-tree-item-BobGN76x.js → hx-tree-item-DTDIBRrI.js} +140 -94
  599. package/dist/shared/hx-tree-item-DTDIBRrI.js.map +1 -0
  600. package/dist/shared/id-counter-JhvVCnjh.js +143 -0
  601. package/dist/shared/id-counter-JhvVCnjh.js.map +1 -0
  602. package/dist/shared/{toast-factory-MvMMreTu.js → toast-factory-f184Gi70.js} +96 -73
  603. package/dist/shared/toast-factory-f184Gi70.js.map +1 -0
  604. package/dist/styles/shared-field.styles.d.ts +6 -0
  605. package/dist/styles/shared-field.styles.d.ts.map +1 -0
  606. package/dist/utilities/adoptedStylesheetRegistry.d.ts +47 -0
  607. package/dist/utilities/adoptedStylesheetRegistry.d.ts.map +1 -0
  608. package/dist/utilities/generateScopedSelectors.d.ts +30 -0
  609. package/dist/utilities/generateScopedSelectors.d.ts.map +1 -0
  610. package/dist/utilities/injectLightStyles.d.ts +37 -0
  611. package/dist/utilities/injectLightStyles.d.ts.map +1 -0
  612. package/dist/utilities/lightStyleRegistry.d.ts +41 -0
  613. package/dist/utilities/lightStyleRegistry.d.ts.map +1 -0
  614. package/dist/utilities/sheetManager.d.ts +62 -0
  615. package/dist/utilities/sheetManager.d.ts.map +1 -0
  616. package/dist/utils/contrast-checker.d.ts +86 -0
  617. package/dist/utils/contrast-checker.d.ts.map +1 -0
  618. package/dist/utils/token-merger.d.ts +24 -0
  619. package/dist/utils/token-merger.d.ts.map +1 -0
  620. package/fouc.css +37 -0
  621. package/package.json +26 -9
  622. package/dist/shared/hx-accordion-DT8qHOay.js.map +0 -1
  623. package/dist/shared/hx-action-bar-we_WJety.js.map +0 -1
  624. package/dist/shared/hx-alert-D6uok29t.js.map +0 -1
  625. package/dist/shared/hx-avatar-Cep6Urm3.js.map +0 -1
  626. package/dist/shared/hx-badge-BeuWuUj_.js.map +0 -1
  627. package/dist/shared/hx-banner-DnCBJtRR.js.map +0 -1
  628. package/dist/shared/hx-breadcrumb-item-Bj2UqhzR.js.map +0 -1
  629. package/dist/shared/hx-button-Cbhqpm5i.js.map +0 -1
  630. package/dist/shared/hx-button-group-CWjWv-wS.js.map +0 -1
  631. package/dist/shared/hx-card-B9j2SHyI.js.map +0 -1
  632. package/dist/shared/hx-carousel-item-Be0bC-7o.js.map +0 -1
  633. package/dist/shared/hx-checkbox-CuaJqEo7.js.map +0 -1
  634. package/dist/shared/hx-checkbox-group-ydUdV9Sx.js.map +0 -1
  635. package/dist/shared/hx-code-snippet-DBwIjl5p.js.map +0 -1
  636. package/dist/shared/hx-color-picker-Bb2UPVc3.js +0 -803
  637. package/dist/shared/hx-color-picker-Bb2UPVc3.js.map +0 -1
  638. package/dist/shared/hx-combobox-CNvY-es8.js.map +0 -1
  639. package/dist/shared/hx-container-DLUKnTi9.js.map +0 -1
  640. package/dist/shared/hx-copy-button-CLBA31to.js.map +0 -1
  641. package/dist/shared/hx-counter-D-1NXzGs.js +0 -138
  642. package/dist/shared/hx-counter-D-1NXzGs.js.map +0 -1
  643. package/dist/shared/hx-data-table-BwoJCFgs.js.map +0 -1
  644. package/dist/shared/hx-date-picker-DDcIBJir.js +0 -980
  645. package/dist/shared/hx-date-picker-DDcIBJir.js.map +0 -1
  646. package/dist/shared/hx-dialog-M7so0sRT.js.map +0 -1
  647. package/dist/shared/hx-divider-XgWIz4Mr.js.map +0 -1
  648. package/dist/shared/hx-drawer-CYxuhIQ0.js.map +0 -1
  649. package/dist/shared/hx-dropdown-7cfowTWv.js.map +0 -1
  650. package/dist/shared/hx-field-CDP8EXuj.js.map +0 -1
  651. package/dist/shared/hx-field-label-Bg-EWvqF.js.map +0 -1
  652. package/dist/shared/hx-file-upload-9HbONfqt.js.map +0 -1
  653. package/dist/shared/hx-form-BFv_N1dm.js +0 -1272
  654. package/dist/shared/hx-form-BFv_N1dm.js.map +0 -1
  655. package/dist/shared/hx-format-date-BsVr8gpD.js.map +0 -1
  656. package/dist/shared/hx-grid-BsDBCTbt.js.map +0 -1
  657. package/dist/shared/hx-icon--xsJztDh.js.map +0 -1
  658. package/dist/shared/hx-image-xyb_tHCR.js.map +0 -1
  659. package/dist/shared/hx-link-DfNy_UU8.js.map +0 -1
  660. package/dist/shared/hx-list-CdRNgeoP.js.map +0 -1
  661. package/dist/shared/hx-menu-divider-DR8klkFT.js.map +0 -1
  662. package/dist/shared/hx-meter-CZ7lnMra.js.map +0 -1
  663. package/dist/shared/hx-nav-DM6-cGKF.js.map +0 -1
  664. package/dist/shared/hx-nav-item-D54-5eUM.js.map +0 -1
  665. package/dist/shared/hx-number-input-BP6TIA92.js.map +0 -1
  666. package/dist/shared/hx-overflow-menu-CobkjAb8.js.map +0 -1
  667. package/dist/shared/hx-pagination-10dpXS95.js.map +0 -1
  668. package/dist/shared/hx-popover-ULjonbaO.js.map +0 -1
  669. package/dist/shared/hx-popup-CYf9Q5sj.js.map +0 -1
  670. package/dist/shared/hx-progress-bar-CnTibV63.js.map +0 -1
  671. package/dist/shared/hx-progress-ring-BHJBaXNk.js.map +0 -1
  672. package/dist/shared/hx-prose-DZh2KrMb.js +0 -876
  673. package/dist/shared/hx-prose-DZh2KrMb.js.map +0 -1
  674. package/dist/shared/hx-radio-BnKcRuQu.js.map +0 -1
  675. package/dist/shared/hx-rating-Y_t7Z4qb.js.map +0 -1
  676. package/dist/shared/hx-select-C50lD7NS.js.map +0 -1
  677. package/dist/shared/hx-slider-CprSNrRi.js.map +0 -1
  678. package/dist/shared/hx-spinner-BOApJ-g9.js.map +0 -1
  679. package/dist/shared/hx-split-button-CHGy4FUc.js.map +0 -1
  680. package/dist/shared/hx-split-panel-DYtB45Tr.js.map +0 -1
  681. package/dist/shared/hx-stack-CfoW7jU7.js.map +0 -1
  682. package/dist/shared/hx-stat-C2wfph8W.js.map +0 -1
  683. package/dist/shared/hx-status-indicator-oYWOkWlD.js.map +0 -1
  684. package/dist/shared/hx-step-DYoIumpR.js.map +0 -1
  685. package/dist/shared/hx-structured-list-CMWllxGg.js.map +0 -1
  686. package/dist/shared/hx-switch-DkKchcuP.js.map +0 -1
  687. package/dist/shared/hx-tab-panel-BRNcLICw.js.map +0 -1
  688. package/dist/shared/hx-tag-B3N-vZ6B.js.map +0 -1
  689. package/dist/shared/hx-td-CVwCGBYf.js.map +0 -1
  690. package/dist/shared/hx-text-NjKoQATI.js.map +0 -1
  691. package/dist/shared/hx-text-input-CCZZbWQ9.js.map +0 -1
  692. package/dist/shared/hx-textarea-BsQdB1Rk.js.map +0 -1
  693. package/dist/shared/hx-theme-6GDoUG8j.js +0 -176
  694. package/dist/shared/hx-theme-6GDoUG8j.js.map +0 -1
  695. package/dist/shared/hx-time-picker-CJcIjH3C.js.map +0 -1
  696. package/dist/shared/hx-toggle-button-D4F1soEM.js.map +0 -1
  697. package/dist/shared/hx-tooltip-Bk1iQRHs.js.map +0 -1
  698. package/dist/shared/hx-tree-item-BobGN76x.js.map +0 -1
  699. package/dist/shared/toast-factory-MvMMreTu.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hx-counter-D_B7L9Pi.js","sources":["../../src/components/hx-counter/hx-counter.styles.ts","../../src/components/hx-counter/hx-counter.ts"],"sourcesContent":["import { css } from 'lit';\n\nexport const helixCounterStyles = css`\n :host {\n display: inline-block;\n }\n\n .counter {\n display: inline-flex;\n align-items: baseline;\n font-family: var(--hx-counter-font-family, var(--hx-font-family-sans, sans-serif));\n font-weight: var(--hx-counter-font-weight, var(--hx-font-weight-bold, 700));\n color: var(--hx-counter-color, var(--hx-color-neutral-900, #111827));\n line-height: var(--hx-line-height-tight, 1.25);\n font-variant-numeric: tabular-nums;\n }\n\n /* ─── Size Variants ─── */\n\n .counter--sm {\n font-size: var(--hx-counter-font-size-sm, var(--hx-font-size-xl, 1.25rem));\n }\n\n .counter--md {\n font-size: var(--hx-counter-font-size-md, var(--hx-font-size-3xl, 1.875rem));\n }\n\n .counter--lg {\n font-size: var(--hx-counter-font-size-lg, var(--hx-font-size-5xl, 3rem));\n }\n\n /* ─── Screen-reader only (visually hidden live region) ─── */\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 /* ─── Reduced Motion ─── */\n\n @media (prefers-reduced-motion: reduce) {\n .counter {\n /* Animation is handled in JS — reduced-motion consumers\n will see the final value immediately via the component logic */\n }\n }\n`;\n","import { LitElement, html, nothing, type PropertyValues } from 'lit';\nimport { customElement, property, state } from 'lit/decorators.js';\nimport { classMap } from 'lit/directives/class-map.js';\nimport { tokenStyles } from '@helixui/tokens/lit';\nimport { helixCounterStyles } from './hx-counter.styles.js';\nimport { devWarn } from '../../utils/dev-warn.js';\n\nexport type CounterSize = 'sm' | 'md' | 'lg';\nexport type CounterEasing = 'linear' | 'ease-in' | 'ease-out' | 'ease-in-out';\nexport type CounterFormat = 'integer' | 'decimal';\n\n/**\n * Animated number counter that counts from 0 (or the previous value) to the\n * target value using requestAnimationFrame. Respects prefers-reduced-motion.\n *\n * @summary Displays an animated numeric counter that transitions to a target value.\n *\n * @tag hx-counter\n *\n * @csspart counter - The outer counter element.\n *\n * @cssprop [--hx-counter-font-family=var(--hx-font-family-sans)] - Font family.\n * @cssprop [--hx-counter-font-weight=var(--hx-font-weight-bold)] - Font weight.\n * @cssprop [--hx-counter-color=var(--hx-color-neutral-900)] - Counter text color.\n * @cssprop [--hx-counter-font-size-sm=var(--hx-font-size-xl)] - Font size at sm.\n * @cssprop [--hx-counter-font-size-md=var(--hx-font-size-3xl)] - Font size at md.\n * @cssprop [--hx-counter-font-size-lg=var(--hx-font-size-5xl)] - Font size at lg.\n */\n@customElement('hx-counter')\nexport class HelixCounter extends LitElement {\n static override styles = [tokenStyles, helixCounterStyles];\n\n /**\n * The target numeric value to count to.\n * @attr value\n */\n @property({ type: Number })\n value = 0;\n\n /**\n * Animation duration in milliseconds.\n * @attr duration\n */\n @property({ type: Number })\n duration = 1000;\n\n /**\n * Easing function applied to the animation progress.\n * @attr easing\n */\n @property({ type: String })\n easing: 'linear' | 'ease-in' | 'ease-out' | 'ease-in-out' = 'ease-out';\n\n /**\n * Number format. 'integer' rounds to the nearest whole number;\n * 'decimal' shows two decimal places.\n * @attr format\n */\n @property({ type: String })\n format: 'integer' | 'decimal' = 'integer';\n\n /**\n * String prepended to the formatted value (e.g., '$').\n * @attr prefix\n */\n @property({ type: String })\n prefix = '';\n\n /**\n * String appended to the formatted value (e.g., '%').\n * @attr suffix\n */\n @property({ type: String })\n suffix = '';\n\n /**\n * Size variant controlling font size.\n * @attr hx-size\n */\n @property({ type: String, reflect: true, attribute: 'hx-size' })\n size: 'sm' | 'md' | 'lg' = 'md';\n\n /**\n * Accessible label describing the counter's context (e.g. \"Total patients\", \"Active alerts\").\n * WCAG 4.1.2: a numeric value alone is meaningless without context for screen readers.\n * When provided, the value is applied as aria-label on the counter element.\n * @attr label\n */\n @property({ type: String })\n label = '';\n\n // ─── Internal State ───\n\n /** @internal */\n @state() private _displayValue = 0;\n\n /**\n * The final value announced to screen readers once animation completes.\n * Updated only at animation end so AT users hear the result, not every frame.\n * @internal\n */\n @state() private _announcedValue = '';\n\n /** @internal */\n private _animationId: number | null = null;\n /** @internal */\n private _startTime: number | null = null;\n /** @internal */\n private _startValue = 0;\n /** @internal */\n private _prefersReducedMotion = false;\n /** @internal */\n private _motionMql: MediaQueryList | null = null;\n /** @internal */\n private readonly _handleMotionChange = (e: MediaQueryListEvent): void => {\n this._prefersReducedMotion = e.matches;\n if (this._prefersReducedMotion) {\n this._cancelAnimation();\n this._displayValue = this.value;\n }\n };\n\n // ─── Lifecycle ───\n\n override connectedCallback(): void {\n super.connectedCallback();\n // Backward compat: accept legacy `size` attribute. When present and `hx-size`\n // is not set, map the value and emit a deprecation warning.\n const legacySize = this.getAttribute('size');\n if (legacySize !== null && !this.hasAttribute('hx-size')) {\n devWarn('hx-counter', 'The \"size\" attribute is deprecated. Use \"hx-size\" instead.');\n this.size = legacySize as CounterSize;\n }\n\n // Guard for SSR — window.matchMedia and requestAnimationFrame are unavailable server-side\n if (typeof window === 'undefined') {\n this._displayValue = this.value;\n return;\n }\n\n const mq = window.matchMedia('(prefers-reduced-motion: reduce)');\n this._motionMql = mq;\n this._prefersReducedMotion = mq.matches;\n mq.addEventListener('change', this._handleMotionChange);\n\n if (this._prefersReducedMotion) {\n this._displayValue = this.value;\n this._announcedValue = this._formatValue();\n } else {\n this._startAnimation();\n }\n }\n\n override disconnectedCallback(): void {\n super.disconnectedCallback();\n this._cancelAnimation();\n this._motionMql?.removeEventListener('change', this._handleMotionChange);\n this._motionMql = null;\n }\n\n override updated(changedProps: PropertyValues<this>): void {\n super.updated(changedProps);\n if (changedProps.has('value') && changedProps.get('value') !== undefined) {\n if (this._prefersReducedMotion) {\n this._displayValue = this.value;\n this._announcedValue = this._formatValue();\n } else {\n this._startValue = this._displayValue;\n this._startTime = null;\n this._startAnimation();\n }\n }\n }\n\n // ─── Animation ───\n\n /** @internal */\n private _cancelAnimation(): void {\n if (this._animationId !== null) {\n cancelAnimationFrame(this._animationId);\n this._animationId = null;\n }\n }\n\n /** @internal */\n private _applyEasing(t: number): number {\n switch (this.easing) {\n case 'linear':\n return t;\n case 'ease-in':\n return t * t;\n case 'ease-out':\n return t * (2 - t);\n case 'ease-in-out':\n return t < 0.5 ? 2 * t * t : -1 + (4 - 2 * t) * t;\n }\n }\n\n /** @internal */\n private _startAnimation(): void {\n this._cancelAnimation();\n\n const step = (timestamp: number): void => {\n if (this._startTime === null) {\n this._startTime = timestamp;\n }\n\n const elapsed = timestamp - this._startTime;\n const rawProgress = Math.min(elapsed / this.duration, 1);\n const easedProgress = this._applyEasing(rawProgress);\n\n this._displayValue = this._startValue + (this.value - this._startValue) * easedProgress;\n\n if (rawProgress < 1) {\n this._animationId = requestAnimationFrame(step);\n } else {\n this._displayValue = this.value;\n this._animationId = null;\n // WCAG 4.1.2: announce the final value only once, at animation end.\n // _announcedValue feeds the off-screen live region so screen readers\n // hear a single announcement rather than one per animation frame.\n this._announcedValue = this._formatValue();\n }\n };\n\n this._animationId = requestAnimationFrame(step);\n }\n\n // ─── Formatting ───\n\n /** @internal */\n private _formatValue(): string {\n const num =\n this.format === 'integer'\n ? Math.round(this._displayValue)\n : parseFloat(this._displayValue.toFixed(2));\n\n return `${this.prefix}${num.toLocaleString()}${this.suffix}`;\n }\n\n // ─── Render ───\n\n override render() {\n const classes = {\n counter: true,\n [`counter--${this.size}`]: true,\n };\n\n return html`\n <span\n part=\"counter\"\n class=${classMap(classes)}\n aria-label=${this.label ? `${this.label}: ${this._formatValue()}` : nothing}\n >\n ${this._formatValue()}\n </span>\n <!--\n WCAG 4.1.2: off-screen live region updated only at animation end.\n Prevents screen readers from announcing every intermediate frame value.\n -->\n <span\n class=\"sr-only\"\n aria-live=\"polite\"\n aria-atomic=\"true\"\n aria-hidden=${this._announcedValue ? nothing : 'true'}\n >${this._announcedValue}</span\n >\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'hx-counter': HelixCounter;\n }\n}\n"],"names":["helixCounterStyles","css","HelixCounter","LitElement","legacySize","mq","_a","changedProps","t","step","timestamp","elapsed","rawProgress","easedProgress","num","classes","html","classMap","nothing","tokenStyles","__decorateClass","property","state","customElement"],"mappings":"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"}
@@ -1,7 +1,8 @@
1
- import { css as u, LitElement as m, html as l, nothing as p } from "lit";
1
+ import { css as b, LitElement as m, html as l, nothing as p } from "lit";
2
2
  import { property as d, state as f, customElement as y } from "lit/decorators.js";
3
- import { tokenStyles as w } from "@helixui/tokens/lit";
4
- const x = u`
3
+ import { repeat as w } from "lit/directives/repeat.js";
4
+ import { tokenStyles as x } from "@helixui/tokens/lit";
5
+ const g = b`
5
6
  :host {
6
7
  display: block;
7
8
  overflow-x: auto;
@@ -43,7 +44,7 @@ const x = u`
43
44
  th,
44
45
  td {
45
46
  padding: var(--hx-space-3, 0.75rem) var(--hx-space-4, 1rem);
46
- text-align: left;
47
+ text-align: start;
47
48
  border-bottom: var(--hx-border-width-thin, 1px) solid
48
49
  var(--hx-data-table-border-color, var(--hx-color-neutral-200, #e2e8f0));
49
50
  vertical-align: middle;
@@ -66,7 +67,7 @@ const x = u`
66
67
  /* WCAG 2.5.5 (healthcare mandate): minimum 44x44px touch target */
67
68
  width: var(--hx-touch-target-min, 2.75rem);
68
69
  min-width: var(--hx-touch-target-min, 2.75rem);
69
- padding-right: var(--hx-space-2, 0.5rem);
70
+ padding-inline-end: var(--hx-space-2, 0.5rem);
70
71
  }
71
72
 
72
73
  th.col-checkbox {
@@ -108,14 +109,14 @@ const x = u`
108
109
  flex-shrink: 0;
109
110
  width: 1em;
110
111
  height: 1em;
111
- opacity: 0.4;
112
+ opacity: var(--hx-opacity-25, 0.25); /* sort icon inactive — intentionally subtle */
112
113
  transition:
113
114
  opacity var(--hx-transition-fast, 150ms ease),
114
115
  transform var(--hx-transition-fast, 150ms ease);
115
116
  }
116
117
 
117
118
  .sort-icon--active {
118
- opacity: 1;
119
+ opacity: var(--hx-opacity-100, 1);
119
120
  color: var(--hx-color-primary-500, #2563eb);
120
121
  }
121
122
 
@@ -159,7 +160,7 @@ const x = u`
159
160
  var(--hx-color-neutral-200, #e2e8f0) 75%
160
161
  );
161
162
  background-size: 200% 100%;
162
- animation: hx-shimmer 1.5s infinite;
163
+ animation: hx-shimmer var(--hx-data-table-shimmer-duration, 1.5s) infinite;
163
164
  }
164
165
 
165
166
  @keyframes hx-shimmer {
@@ -174,7 +175,18 @@ const x = u`
174
175
  @media (prefers-reduced-motion: reduce) {
175
176
  .skeleton-cell {
176
177
  animation: none;
177
- opacity: 0.6;
178
+ opacity: var(
179
+ --hx-opacity-50,
180
+ 0.5
181
+ ); /* reduced from animation; approximate to available token */
182
+ }
183
+
184
+ .sort-icon {
185
+ transition: none;
186
+ }
187
+
188
+ tbody tr {
189
+ transition: none;
178
190
  }
179
191
  }
180
192
 
@@ -198,36 +210,44 @@ const x = u`
198
210
  padding: var(--hx-space-8, 2rem) var(--hx-space-4, 1rem);
199
211
  }
200
212
  `;
201
- var g = Object.defineProperty, v = Object.getOwnPropertyDescriptor, h = (t, e, r, o) => {
202
- for (var s = o > 1 ? void 0 : o ? v(e, r) : e, a = t.length - 1, n; a >= 0; a--)
203
- (n = t[a]) && (s = (o ? n(e, r, s) : n(s)) || s);
204
- return o && s && g(e, r, s), s;
213
+ var v = Object.defineProperty, k = Object.getOwnPropertyDescriptor, n = (t, e, r, o) => {
214
+ for (var s = o > 1 ? void 0 : o ? k(e, r) : e, a = t.length - 1, c; a >= 0; a--)
215
+ (c = t[a]) && (s = (o ? c(e, r, s) : c(s)) || s);
216
+ return o && s && v(e, r, s), s;
205
217
  };
206
218
  let i = class extends m {
207
219
  constructor() {
208
- super(...arguments), this.columns = [], this.rows = [], this.selectable = !1, this.sortKey = "", this.sortDirection = "asc", this.loading = !1, this.emptyLabel = "No data", this.label = "", this.stickyHeader = !1, this.page = 1, this.pageSize = 0, this._selectedRows = /* @__PURE__ */ new Set();
220
+ super(...arguments), this.columns = [], this.rows = [], this.selectable = !1, this.sortKey = "", this.sortDirection = "asc", this.loading = !1, this.emptyLabel = "No data", this.label = "", this.selectAllLabel = "Select all rows", this.stickyHeader = !1, this.page = 1, this.pageSize = 0, this._selectedRows = /* @__PURE__ */ new Set(), this._cachedCells = null;
209
221
  }
210
222
  // ─── Lifecycle ───
211
223
  willUpdate(t) {
212
- if (t.has("columns"))
213
- if (typeof this.columns == "string")
224
+ if (t.has("columns")) {
225
+ const e = this.columns;
226
+ if (typeof e == "string")
214
227
  try {
215
- this.columns = JSON.parse(this.columns);
228
+ this.columns = JSON.parse(e);
216
229
  } catch {
217
230
  this.columns = [];
218
231
  }
219
232
  else Array.isArray(this.columns) || (this.columns = []);
220
- if (t.has("rows"))
221
- if (typeof this.rows == "string")
233
+ }
234
+ if (t.has("rows")) {
235
+ const e = this.rows;
236
+ if (typeof e == "string")
222
237
  try {
223
- this.rows = JSON.parse(this.rows);
238
+ this.rows = JSON.parse(e);
224
239
  } catch {
225
240
  this.rows = [];
226
241
  }
227
242
  else Array.isArray(this.rows) || (this.rows = []);
243
+ }
228
244
  t.has("rows") && this.rows.length > 500, (t.has("label") || t.has("columns")) && this.columns.length > 0 && this.label;
229
245
  }
246
+ updated(t) {
247
+ (t.has("rows") || t.has("columns")) && (this._cachedCells = null);
248
+ }
230
249
  // ─── Event Handlers ───
250
+ /** @internal */
231
251
  _handleSort(t) {
232
252
  const e = this.sortKey === t && this.sortDirection === "asc" ? "desc" : "asc";
233
253
  this.sortKey = t, this.sortDirection = e, this.dispatchEvent(
@@ -238,6 +258,7 @@ let i = class extends m {
238
258
  })
239
259
  );
240
260
  }
261
+ /** @internal */
241
262
  _handleRowClick(t, e) {
242
263
  this.dispatchEvent(
243
264
  new CustomEvent("hx-row-click", {
@@ -247,69 +268,80 @@ let i = class extends m {
247
268
  })
248
269
  );
249
270
  }
271
+ /** @internal */
250
272
  _handleSelect(t, e) {
251
273
  const r = new Set(this._selectedRows);
252
274
  e ? r.add(t) : r.delete(t), this._selectedRows = r, this._dispatchSelect();
253
275
  }
276
+ /** @internal */
254
277
  _handleSelectAll(t) {
255
278
  this._selectedRows = t ? new Set(this.rows.map((e, r) => r)) : /* @__PURE__ */ new Set(), this._dispatchSelect();
256
279
  }
280
+ /** @internal */
257
281
  _dispatchSelect() {
258
282
  this.dispatchEvent(
259
283
  new CustomEvent("hx-select", {
260
284
  bubbles: !0,
261
285
  composed: !0,
262
286
  detail: {
263
- selectedRows: [...this._selectedRows].map((t) => this.rows[t])
287
+ selectedRows: [...this._selectedRows].flatMap((t) => {
288
+ const e = this.rows[t];
289
+ return e !== void 0 ? [e] : [];
290
+ })
264
291
  }
265
292
  })
266
293
  );
267
294
  }
268
295
  // ─── Keyboard Navigation ───
296
+ /** @internal */
269
297
  _handleKeydown(t) {
270
- var b;
298
+ var u;
271
299
  if (!["ArrowUp", "ArrowDown", "ArrowLeft", "ArrowRight", "Home", "End", " "].includes(t.key))
272
300
  return;
273
301
  const e = this.shadowRoot;
274
302
  if (!e) return;
275
- const r = Array.from(e.querySelectorAll('[part~="td"],[part~="th"]'));
303
+ this._cachedCells || (this._cachedCells = Array.from(
304
+ e.querySelectorAll('[part~="td"],[part~="th"]')
305
+ ));
306
+ const r = this._cachedCells;
276
307
  let o = e.activeElement;
277
308
  if (!o) return;
278
309
  if (r.indexOf(o) === -1) {
279
- let c = o.parentElement;
280
- for (; c; ) {
281
- if (r.includes(c)) {
282
- o = c;
310
+ let h = o.parentElement;
311
+ for (; h; ) {
312
+ if (r.includes(h)) {
313
+ o = h;
283
314
  break;
284
315
  }
285
- c = c.parentElement;
316
+ h = h.parentElement;
286
317
  }
287
318
  }
288
319
  const s = this.columns.length + (this.selectable ? 1 : 0), a = r.indexOf(o);
289
320
  if (a === -1) return;
290
- let n = null;
321
+ let c = null;
291
322
  if (t.key === "ArrowRight" && a + 1 < r.length)
292
- n = r[a + 1] ?? null;
323
+ c = r[a + 1] ?? null;
293
324
  else if (t.key === "ArrowLeft" && a - 1 >= 0)
294
- n = r[a - 1] ?? null;
325
+ c = r[a - 1] ?? null;
295
326
  else if (t.key === "ArrowDown" && a + s < r.length)
296
- n = r[a + s] ?? null;
327
+ c = r[a + s] ?? null;
297
328
  else if (t.key === "ArrowUp" && a - s >= 0)
298
- n = r[a - s] ?? null;
329
+ c = r[a - s] ?? null;
299
330
  else if (t.key === "Home") {
300
- const c = a - a % s;
301
- n = r[c] ?? null;
331
+ const h = a - a % s;
332
+ c = r[h] ?? null;
302
333
  } else if (t.key === "End") {
303
- const c = Math.min(a - a % s + s - 1, r.length - 1);
304
- n = r[c] ?? null;
305
- } else if (t.key === " " && ((b = o.getAttribute("part")) != null && b.includes("td"))) {
306
- const c = Number(o.dataset.rowIndex);
307
- this.selectable && !isNaN(c) && (t.preventDefault(), this._handleSelect(c, !this._selectedRows.has(c)));
334
+ const h = Math.min(a - a % s + s - 1, r.length - 1);
335
+ c = r[h] ?? null;
336
+ } else if (t.key === " " && ((u = o.getAttribute("part")) != null && u.includes("td"))) {
337
+ const h = Number(o.dataset.rowIndex);
338
+ this.selectable && !isNaN(h) && (t.preventDefault(), this._handleSelect(h, !this._selectedRows.has(h)));
308
339
  return;
309
340
  }
310
- n && (t.preventDefault(), n.setAttribute("tabindex", "0"), n.focus(), o.setAttribute("tabindex", "-1"));
341
+ c && (t.preventDefault(), c.setAttribute("tabindex", "0"), c.focus(), o.setAttribute("tabindex", "-1"));
311
342
  }
312
343
  // ─── Render Helpers ───
344
+ /** @internal */
313
345
  _renderSortIcon(t) {
314
346
  const e = this.sortKey === t, r = [
315
347
  "sort-icon",
@@ -330,6 +362,7 @@ let i = class extends m {
330
362
  </span>
331
363
  `;
332
364
  }
365
+ /** @internal */
333
366
  _renderHeaderRow() {
334
367
  return l`
335
368
  <tr part="tr">
@@ -338,7 +371,7 @@ let i = class extends m {
338
371
  <input
339
372
  type="checkbox"
340
373
  part="checkbox"
341
- aria-label="Select all rows"
374
+ aria-label=${this.selectAllLabel}
342
375
  .indeterminate=${this._selectedRows.size > 0 && this._selectedRows.size < this.rows.length}
343
376
  .checked=${this._selectedRows.size === this.rows.length && this.rows.length > 0}
344
377
  @change=${(t) => this._handleSelectAll(t.target.checked)}
@@ -368,11 +401,12 @@ let i = class extends m {
368
401
  </tr>
369
402
  `;
370
403
  }
404
+ /** @internal */
371
405
  _renderSkeletonRows() {
372
406
  return Array.from(
373
407
  { length: 3 },
374
- (t, e) => l`
375
- <tr part="tr" aria-hidden="true" key=${e}>
408
+ (t) => l`
409
+ <tr part="tr" aria-hidden="true">
376
410
  ${this.selectable ? l`<td part="td" class="col-checkbox">
377
411
  <span class="skeleton-cell" style="width:1rem;margin:auto"></span>
378
412
  </td>` : p}
@@ -387,6 +421,7 @@ let i = class extends m {
387
421
  `
388
422
  );
389
423
  }
424
+ /** @internal */
390
425
  _renderEmptyRow() {
391
426
  const t = this.columns.length + (this.selectable ? 1 : 0);
392
427
  return l`
@@ -397,42 +432,50 @@ let i = class extends m {
397
432
  </tr>
398
433
  `;
399
434
  }
435
+ /** @internal */
400
436
  _renderDataRows() {
401
437
  let t = this.rows;
402
438
  if (this.pageSize > 0) {
403
439
  const e = (this.page - 1) * this.pageSize;
404
440
  t = this.rows.slice(e, e + this.pageSize);
405
441
  }
406
- return t.map((e, r) => {
407
- const o = this.pageSize > 0 ? (this.page - 1) * this.pageSize + r : r;
408
- return l`
409
- <tr
410
- part="tr"
411
- aria-selected=${this.selectable ? String(this._selectedRows.has(o)) : p}
412
- @click=${() => this._handleRowClick(e, o)}
413
- >
414
- ${this.selectable ? l`
415
- <td part="td" class="col-checkbox" tabindex="-1" data-row-index=${o}>
416
- <input
417
- type="checkbox"
418
- part="checkbox"
419
- aria-label=${`Select row ${o + 1}`}
420
- .checked=${this._selectedRows.has(o)}
421
- @click=${(s) => s.stopPropagation()}
422
- @change=${(s) => this._handleSelect(o, s.target.checked)}
423
- />
442
+ return w(
443
+ t,
444
+ (e, r) => this.pageSize > 0 ? (this.page - 1) * this.pageSize + r : r,
445
+ (e, r) => {
446
+ const o = this.pageSize > 0 ? (this.page - 1) * this.pageSize + r : r;
447
+ return l`
448
+ <tr
449
+ part="tr"
450
+ aria-selected=${this.selectable ? String(this._selectedRows.has(o)) : p}
451
+ @click=${() => this._handleRowClick(e, o)}
452
+ @keydown=${(s) => {
453
+ (s.key === "Enter" || s.key === " ") && (s.preventDefault(), this._handleRowClick(e, o));
454
+ }}
455
+ >
456
+ ${this.selectable ? l`
457
+ <td part="td" class="col-checkbox" tabindex="-1" data-row-index=${o}>
458
+ <input
459
+ type="checkbox"
460
+ part="checkbox"
461
+ aria-label=${`Select row ${o + 1}`}
462
+ .checked=${this._selectedRows.has(o)}
463
+ @click=${(s) => s.stopPropagation()}
464
+ @change=${(s) => this._handleSelect(o, s.target.checked)}
465
+ />
466
+ </td>
467
+ ` : p}
468
+ ${this.columns.map(
469
+ (s) => l`
470
+ <td part="td" tabindex="-1" data-row-index=${o}>
471
+ ${e[s.key] != null ? String(e[s.key]) : ""}
424
472
  </td>
425
- ` : p}
426
- ${this.columns.map(
427
- (s) => l`
428
- <td part="td" tabindex="-1" data-row-index=${o}>
429
- ${e[s.key] != null ? String(e[s.key]) : ""}
430
- </td>
431
- `
432
- )}
433
- </tr>
434
- `;
435
- });
473
+ `
474
+ )}
475
+ </tr>
476
+ `;
477
+ }
478
+ );
436
479
  }
437
480
  // ─── Render ───
438
481
  render() {
@@ -457,47 +500,74 @@ let i = class extends m {
457
500
  `;
458
501
  }
459
502
  };
460
- i.styles = [w, x];
461
- h([
462
- d({ type: Array })
503
+ i.styles = [x, g];
504
+ n([
505
+ d({
506
+ type: Array,
507
+ converter: {
508
+ fromAttribute(t) {
509
+ if (!t) return [];
510
+ try {
511
+ return JSON.parse(t);
512
+ } catch {
513
+ return [];
514
+ }
515
+ }
516
+ }
517
+ })
463
518
  ], i.prototype, "columns", 2);
464
- h([
465
- d({ type: Array })
519
+ n([
520
+ d({
521
+ type: Array,
522
+ converter: {
523
+ fromAttribute(t) {
524
+ if (!t) return [];
525
+ try {
526
+ return JSON.parse(t);
527
+ } catch {
528
+ return [];
529
+ }
530
+ }
531
+ }
532
+ })
466
533
  ], i.prototype, "rows", 2);
467
- h([
534
+ n([
468
535
  d({ type: Boolean, reflect: !0 })
469
536
  ], i.prototype, "selectable", 2);
470
- h([
537
+ n([
471
538
  d({ type: String, attribute: "sort-key" })
472
539
  ], i.prototype, "sortKey", 2);
473
- h([
540
+ n([
474
541
  d({ type: String, attribute: "sort-direction" })
475
542
  ], i.prototype, "sortDirection", 2);
476
- h([
543
+ n([
477
544
  d({ type: Boolean, reflect: !0 })
478
545
  ], i.prototype, "loading", 2);
479
- h([
546
+ n([
480
547
  d({ type: String, attribute: "empty-label" })
481
548
  ], i.prototype, "emptyLabel", 2);
482
- h([
549
+ n([
483
550
  d({ type: String })
484
551
  ], i.prototype, "label", 2);
485
- h([
552
+ n([
553
+ d({ attribute: "select-all-label" })
554
+ ], i.prototype, "selectAllLabel", 2);
555
+ n([
486
556
  d({ type: Boolean, reflect: !0, attribute: "sticky-header" })
487
557
  ], i.prototype, "stickyHeader", 2);
488
- h([
558
+ n([
489
559
  d({ type: Number })
490
560
  ], i.prototype, "page", 2);
491
- h([
561
+ n([
492
562
  d({ type: Number, attribute: "page-size" })
493
563
  ], i.prototype, "pageSize", 2);
494
- h([
564
+ n([
495
565
  f()
496
566
  ], i.prototype, "_selectedRows", 2);
497
- i = h([
567
+ i = n([
498
568
  y("hx-data-table")
499
569
  ], i);
500
570
  export {
501
571
  i as H
502
572
  };
503
- //# sourceMappingURL=hx-data-table-BwoJCFgs.js.map
573
+ //# sourceMappingURL=hx-data-table-B1j4n4bm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hx-data-table-B1j4n4bm.js","sources":["../../src/components/hx-data-table/hx-data-table.styles.ts","../../src/components/hx-data-table/hx-data-table.ts"],"sourcesContent":["import { css } from 'lit';\n\nexport const helixDataTableStyles = css`\n :host {\n display: block;\n overflow-x: auto;\n font-family: var(--hx-font-family-sans, sans-serif);\n font-size: var(--hx-font-size-sm, 0.875rem);\n }\n\n /* ─── Scroll Wrapper ─── */\n\n .table-wrapper {\n min-width: 0;\n width: 100%;\n }\n\n /* ─── Table ─── */\n\n table {\n width: 100%;\n border-collapse: collapse;\n border-spacing: 0;\n min-width: var(--hx-data-table-min-width, 600px);\n }\n\n /* ─── Head ─── */\n\n thead {\n background-color: var(--hx-data-table-header-bg, var(--hx-color-neutral-50, #f8fafc));\n }\n\n :host([sticky-header]) thead th {\n position: sticky;\n top: 0;\n z-index: 1;\n background-color: var(--hx-data-table-header-bg, var(--hx-color-neutral-50, #f8fafc));\n }\n\n /* ─── Cells ─── */\n\n th,\n td {\n padding: var(--hx-space-3, 0.75rem) var(--hx-space-4, 1rem);\n text-align: start;\n border-bottom: var(--hx-border-width-thin, 1px) solid\n var(--hx-data-table-border-color, var(--hx-color-neutral-200, #e2e8f0));\n vertical-align: middle;\n }\n\n th {\n font-weight: var(--hx-font-weight-semibold, 600);\n color: var(--hx-data-table-header-color, var(--hx-color-neutral-700, #334155));\n white-space: nowrap;\n }\n\n td {\n color: var(--hx-data-table-cell-color, var(--hx-color-neutral-900, #0f172a));\n }\n\n /* ─── Checkbox Column ─── */\n\n th.col-checkbox,\n td.col-checkbox {\n /* WCAG 2.5.5 (healthcare mandate): minimum 44x44px touch target */\n width: var(--hx-touch-target-min, 2.75rem);\n min-width: var(--hx-touch-target-min, 2.75rem);\n padding-inline-end: var(--hx-space-2, 0.5rem);\n }\n\n th.col-checkbox {\n text-align: center;\n }\n\n td.col-checkbox {\n text-align: center;\n }\n\n /* ─── Sort Button ─── */\n\n .sort-btn {\n display: inline-flex;\n align-items: center;\n gap: var(--hx-space-1, 0.25rem);\n background: none;\n border: none;\n padding: 0;\n font: inherit;\n font-weight: inherit;\n color: inherit;\n cursor: pointer;\n white-space: nowrap;\n }\n\n .sort-btn:focus-visible {\n outline: var(--hx-focus-ring-width, 2px) solid\n var(--hx-focus-ring-color, var(--hx-color-primary-500, #2563eb));\n outline-offset: var(--hx-focus-ring-offset, 2px);\n border-radius: var(--hx-border-radius-sm, 2px);\n }\n\n /* ─── Sort Icon ─── */\n\n .sort-icon {\n display: inline-flex;\n align-items: center;\n flex-shrink: 0;\n width: 1em;\n height: 1em;\n opacity: var(--hx-opacity-25, 0.25); /* sort icon inactive — intentionally subtle */\n transition:\n opacity var(--hx-transition-fast, 150ms ease),\n transform var(--hx-transition-fast, 150ms ease);\n }\n\n .sort-icon--active {\n opacity: var(--hx-opacity-100, 1);\n color: var(--hx-color-primary-500, #2563eb);\n }\n\n .sort-icon--desc {\n transform: rotate(180deg);\n }\n\n /* ─── Row States ─── */\n\n tbody tr {\n transition: background-color var(--hx-transition-fast, 150ms ease);\n }\n\n tbody tr:hover {\n background-color: var(--hx-data-table-row-hover-bg, var(--hx-color-neutral-50, #f8fafc));\n }\n\n tbody tr[aria-selected='true'] {\n background-color: var(--hx-data-table-row-selected-bg, var(--hx-color-primary-50, #eff6ff));\n }\n\n /* ─── Checkbox Input ─── */\n\n input[type='checkbox'] {\n width: var(--hx-size-4, 1rem);\n height: var(--hx-size-4, 1rem);\n cursor: pointer;\n accent-color: var(--hx-color-primary-500, #2563eb);\n }\n\n /* ─── Loading Skeleton ─── */\n\n .skeleton-cell {\n display: block;\n height: 1em;\n border-radius: var(--hx-border-radius-sm, 2px);\n background: linear-gradient(\n 90deg,\n var(--hx-color-neutral-200, #e2e8f0) 25%,\n var(--hx-color-neutral-100, #f1f5f9) 50%,\n var(--hx-color-neutral-200, #e2e8f0) 75%\n );\n background-size: 200% 100%;\n animation: hx-shimmer var(--hx-data-table-shimmer-duration, 1.5s) infinite;\n }\n\n @keyframes hx-shimmer {\n 0% {\n background-position: 200% 0;\n }\n 100% {\n background-position: -200% 0;\n }\n }\n\n @media (prefers-reduced-motion: reduce) {\n .skeleton-cell {\n animation: none;\n opacity: var(\n --hx-opacity-50,\n 0.5\n ); /* reduced from animation; approximate to available token */\n }\n\n .sort-icon {\n transition: none;\n }\n\n tbody tr {\n transition: none;\n }\n }\n\n /* ─── Cell Focus ─── */\n\n td:focus-visible,\n th:focus-visible,\n [part~='td']:focus-visible,\n [part~='th']:focus-visible {\n outline: var(--hx-focus-ring-width, 2px) solid\n var(--hx-focus-ring-color, var(--hx-color-primary-500, #2563eb));\n outline-offset: var(--hx-focus-ring-offset, -2px);\n border-radius: var(--hx-border-radius-sm, 2px);\n }\n\n /* ─── Empty State ─── */\n\n .empty-cell {\n text-align: center;\n color: var(--hx-data-table-empty-color, var(--hx-color-neutral-600, #475569));\n padding: var(--hx-space-8, 2rem) var(--hx-space-4, 1rem);\n }\n`;\n","import { LitElement, html, nothing, type PropertyValues } from 'lit';\nimport { customElement, property, state } from 'lit/decorators.js';\nimport { repeat } from 'lit/directives/repeat.js';\nimport { tokenStyles } from '@helixui/tokens/lit';\nimport { helixDataTableStyles } from './hx-data-table.styles.js';\nimport { devWarn } from '../../utils/dev-warn.js';\n\n/**\n * Column definition for `hx-data-table`.\n */\nexport interface HxDataTableColumn {\n key: string;\n label: string;\n sortable?: boolean;\n width?: string;\n}\n\n/**\n * Sort state exported for TypeScript consumers and CEM event types.\n */\nexport interface HxDataTableSortState {\n key: string;\n direction: 'asc' | 'desc';\n}\n\n/**\n * An enterprise data table with sorting, row selection, and keyboard navigation.\n *\n * @summary Enterprise data table with sorting, selection, and responsive scroll.\n *\n * @tag hx-data-table\n *\n * @slot toolbar - Content rendered above the table (e.g., search, actions).\n * @slot empty - Custom empty-state content rendered when `rows` is empty and not loading.\n * @slot loading - Custom loading content rendered when `loading` is true.\n *\n * @fires {CustomEvent<HxDataTableSortState>} hx-sort - Dispatched when a sortable column header is clicked.\n * @fires {CustomEvent<{selectedRows: Record<string, unknown>[]}>} hx-select - Dispatched when row selection changes.\n * @fires {CustomEvent<{row: Record<string, unknown>, index: number}>} hx-row-click - Dispatched when a data row is clicked.\n *\n * @csspart table - The `<table>` element.\n * @csspart thead - The `<thead>` element.\n * @csspart tbody - The `<tbody>` element.\n * @csspart tr - Each `<tr>` element.\n * @csspart th - Each `<th>` element.\n * @csspart td - Each `<td>` element.\n * @csspart sort-icon - The sort indicator icon `<span>` inside sortable headers.\n * @csspart checkbox - Each `<input type=\"checkbox\">` element.\n *\n * @cssprop [--hx-data-table-header-bg=var(--hx-color-neutral-50)] - Header background color.\n * @cssprop [--hx-data-table-header-color=var(--hx-color-neutral-700)] - Header text color.\n * @cssprop [--hx-data-table-cell-color=var(--hx-color-neutral-900)] - Cell text color.\n * @cssprop [--hx-data-table-border-color=var(--hx-color-neutral-200)] - Row border color.\n * @cssprop [--hx-data-table-row-hover-bg=var(--hx-color-neutral-50)] - Row hover background.\n * @cssprop [--hx-data-table-row-selected-bg=var(--hx-color-primary-50)] - Selected row background.\n * @cssprop [--hx-data-table-empty-color=var(--hx-color-neutral-600)] - Empty state text color.\n * @cssprop [--hx-data-table-min-width=600px] - Minimum table width before horizontal scrolling.\n */\n@customElement('hx-data-table')\nexport class HelixDataTable extends LitElement {\n static override styles = [tokenStyles, helixDataTableStyles];\n\n // ─── Public Properties ───\n\n /**\n * Column definitions. Each item: `{ key, label, sortable?, width? }`.\n * Can be set as a JS array or a JSON string (e.g., from a Drupal Twig attribute).\n * @attr columns\n */\n @property({\n type: Array,\n converter: {\n fromAttribute(value: string | null) {\n if (!value) return [];\n try {\n return JSON.parse(value);\n } catch {\n return [];\n }\n },\n },\n })\n columns: HxDataTableColumn[] = [];\n\n /**\n * Row data. Each item is a plain object keyed by column `key` values.\n * Can be set as a JS array or a JSON string (e.g., from a Drupal Twig attribute).\n * @attr rows\n */\n @property({\n type: Array,\n converter: {\n fromAttribute(value: string | null) {\n if (!value) return [];\n try {\n return JSON.parse(value);\n } catch {\n return [];\n }\n },\n },\n })\n rows: Record<string, unknown>[] = [];\n\n /**\n * When true, renders a checkbox column for row selection.\n * @attr selectable\n */\n @property({ type: Boolean, reflect: true })\n selectable = false;\n\n /**\n * The column key currently used for sorting.\n * @attr sort-key\n */\n @property({ type: String, attribute: 'sort-key' })\n sortKey = '';\n\n /**\n * Current sort direction.\n * @attr sort-direction\n */\n @property({ type: String, attribute: 'sort-direction' })\n sortDirection: 'asc' | 'desc' = 'asc';\n\n /**\n * When true, renders a loading skeleton and sets `aria-busy=\"true\"` on the host.\n * @attr loading\n */\n @property({ type: Boolean, reflect: true })\n loading = false;\n\n /**\n * Text displayed in the default empty state when `rows` is empty and not loading.\n * @attr empty-label\n */\n @property({ type: String, attribute: 'empty-label' })\n emptyLabel = 'No data';\n\n /**\n * Accessible name for the table. Exposed via `aria-label` on the `<table>` element.\n * Required when the table has columns — a missing label is a WCAG 4.1.2 violation.\n * @attr label\n */\n @property({ type: String })\n label = '';\n\n /**\n * Accessible label for the \"select all rows\" checkbox in the table header.\n * @attr select-all-label\n */\n @property({ attribute: 'select-all-label' })\n selectAllLabel = 'Select all rows';\n\n /**\n * When true, the header row is sticky (position: sticky; top: 0).\n * @attr sticky-header\n */\n @property({ type: Boolean, reflect: true, attribute: 'sticky-header' })\n stickyHeader = false;\n\n /**\n * Current page (1-based). Set to 0 or leave at default (0) to disable pagination.\n * @attr page\n */\n @property({ type: Number })\n page = 1;\n\n /**\n * Number of rows per page. Set to 0 to disable pagination (show all rows).\n * @attr page-size\n */\n @property({ type: Number, attribute: 'page-size' })\n pageSize = 0;\n\n // ─── Internal State ───\n\n /** @internal */\n @state()\n private _selectedRows: Set<number> = new Set();\n\n /**\n * Cached flat list of all td/th cells in the shadow DOM.\n * Invalidated (set to null) whenever rows or columns change so the next keydown\n * re-queries the DOM and re-caches. Avoids repeated querySelectorAll on every keypress.\n * @internal\n */\n private _cachedCells: HTMLElement[] | null = null;\n\n // ─── Lifecycle ───\n\n override willUpdate(changed: PropertyValues<this>): void {\n // Coerce JSON strings to arrays — this is the Drupal/Twig integration path.\n // Lit does not JSON-parse array attributes automatically, so we do it here.\n // Note: Lit's defaultConverter returns null (not a string) when JSON.parse fails for\n // type: Array — so we guard against both string and any non-array value.\n if (changed.has('columns')) {\n const rawColumns: unknown = this.columns;\n if (typeof rawColumns === 'string') {\n try {\n this.columns = JSON.parse(rawColumns) as HxDataTableColumn[];\n } catch {\n this.columns = [];\n }\n } else if (!Array.isArray(this.columns)) {\n this.columns = [];\n }\n }\n if (changed.has('rows')) {\n const rawRows: unknown = this.rows;\n if (typeof rawRows === 'string') {\n try {\n this.rows = JSON.parse(rawRows) as Record<string, unknown>[];\n } catch {\n this.rows = [];\n }\n } else if (!Array.isArray(this.rows)) {\n this.rows = [];\n }\n }\n // Only warn when rows actually changes to avoid noise on every property update.\n if (changed.has('rows') && this.rows.length > 500) {\n devWarn(\n 'hx-data-table',\n 'Rendering more than 500 rows may impact performance. Consider server-side pagination.',\n );\n }\n // WCAG 4.1.2: data tables must have an accessible name so screen readers can identify them.\n if (\n (changed.has('label') || changed.has('columns')) &&\n this.columns.length > 0 &&\n !this.label\n ) {\n devWarn(\n 'hx-data-table',\n 'No accessible name provided. Set the `label` attribute so screen readers can identify this table (WCAG 4.1.2).',\n );\n }\n }\n\n override updated(changed: PropertyValues<this>): void {\n // Invalidate cell cache when rows or columns change so the next keyboard\n // navigation re-queries and re-caches the updated DOM.\n if (changed.has('rows') || changed.has('columns')) {\n this._cachedCells = null;\n }\n }\n\n // ─── Event Handlers ───\n\n /** @internal */\n private _handleSort(key: string): void {\n const direction =\n this.sortKey === key ? (this.sortDirection === 'asc' ? 'desc' : 'asc') : 'asc';\n this.sortKey = key;\n this.sortDirection = direction;\n this.dispatchEvent(\n new CustomEvent<HxDataTableSortState>('hx-sort', {\n bubbles: true,\n composed: true,\n detail: { key, direction },\n }),\n );\n }\n\n /** @internal */\n private _handleRowClick(row: Record<string, unknown>, index: number): void {\n this.dispatchEvent(\n new CustomEvent<{ row: Record<string, unknown>; index: number }>('hx-row-click', {\n bubbles: true,\n composed: true,\n detail: { row, index },\n }),\n );\n }\n\n /** @internal */\n private _handleSelect(index: number, checked: boolean): void {\n const next = new Set(this._selectedRows);\n if (checked) {\n next.add(index);\n } else {\n next.delete(index);\n }\n this._selectedRows = next;\n this._dispatchSelect();\n }\n\n /** @internal */\n private _handleSelectAll(checked: boolean): void {\n this._selectedRows = checked ? new Set(this.rows.map((_, i) => i)) : new Set<number>();\n this._dispatchSelect();\n }\n\n /** @internal */\n private _dispatchSelect(): void {\n this.dispatchEvent(\n new CustomEvent<{ selectedRows: Record<string, unknown>[] }>('hx-select', {\n bubbles: true,\n composed: true,\n detail: {\n selectedRows: [...this._selectedRows].flatMap((i) => {\n const row = this.rows[i];\n return row !== undefined ? [row] : [];\n }),\n },\n }),\n );\n }\n\n // ─── Keyboard Navigation ───\n\n /** @internal */\n private _handleKeydown(e: KeyboardEvent): void {\n if (!['ArrowUp', 'ArrowDown', 'ArrowLeft', 'ArrowRight', 'Home', 'End', ' '].includes(e.key))\n return;\n\n const root = this.shadowRoot;\n if (!root) return;\n\n // Use cached cell list; re-query only when invalidated by rows/columns change\n if (!this._cachedCells) {\n this._cachedCells = Array.from(\n root.querySelectorAll<HTMLElement>('[part~=\"td\"],[part~=\"th\"]'),\n );\n }\n const cells = this._cachedCells;\n\n // When focus is inside a child element (e.g., the sort <button> inside a <th>),\n // shadowRoot.activeElement returns the child, not the cell. Walk up to find the cell.\n let focused = root.activeElement as HTMLElement | null;\n if (!focused) return;\n\n if (cells.indexOf(focused) === -1) {\n let ancestor = focused.parentElement;\n while (ancestor) {\n if (cells.includes(ancestor as HTMLElement)) {\n focused = ancestor as HTMLElement;\n break;\n }\n ancestor = ancestor.parentElement;\n }\n }\n\n const colCount = this.columns.length + (this.selectable ? 1 : 0);\n const idx = cells.indexOf(focused);\n if (idx === -1) return;\n\n let target: HTMLElement | null = null;\n\n if (e.key === 'ArrowRight' && idx + 1 < cells.length) {\n target = cells[idx + 1] ?? null;\n } else if (e.key === 'ArrowLeft' && idx - 1 >= 0) {\n target = cells[idx - 1] ?? null;\n } else if (e.key === 'ArrowDown' && idx + colCount < cells.length) {\n target = cells[idx + colCount] ?? null;\n } else if (e.key === 'ArrowUp' && idx - colCount >= 0) {\n target = cells[idx - colCount] ?? null;\n } else if (e.key === 'Home') {\n // First cell of the current row\n const rowStart = idx - (idx % colCount);\n target = cells[rowStart] ?? null;\n } else if (e.key === 'End') {\n // Last cell of the current row\n const rowEnd = Math.min(idx - (idx % colCount) + colCount - 1, cells.length - 1);\n target = cells[rowEnd] ?? null;\n } else if (e.key === ' ' && focused.getAttribute('part')?.includes('td')) {\n // Toggle selection on Space in a data row\n const rowIdx = Number(focused.dataset['rowIndex']);\n if (this.selectable && !isNaN(rowIdx)) {\n e.preventDefault();\n this._handleSelect(rowIdx, !this._selectedRows.has(rowIdx));\n }\n return;\n }\n\n if (target) {\n e.preventDefault();\n target.setAttribute('tabindex', '0');\n target.focus();\n focused.setAttribute('tabindex', '-1');\n }\n }\n\n // ─── Render Helpers ───\n\n /** @internal */\n private _renderSortIcon(key: string) {\n const isActive = this.sortKey === key;\n const iconClass = [\n 'sort-icon',\n isActive ? 'sort-icon--active' : '',\n isActive && this.sortDirection === 'desc' ? 'sort-icon--desc' : '',\n ]\n .filter(Boolean)\n .join(' ');\n\n return html`\n <span part=\"sort-icon\" class=${iconClass} aria-hidden=\"true\">\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 16 16\"\n fill=\"currentColor\"\n width=\"16\"\n height=\"16\"\n >\n <path d=\"M8 3L5 7h6L8 3zM8 13l3-4H5l3 4z\" fill-rule=\"evenodd\" />\n </svg>\n </span>\n `;\n }\n\n /** @internal */\n private _renderHeaderRow() {\n return html`\n <tr part=\"tr\">\n ${this.selectable\n ? html`\n <th part=\"th\" class=\"col-checkbox\" tabindex=\"0\">\n <input\n type=\"checkbox\"\n part=\"checkbox\"\n aria-label=${this.selectAllLabel}\n .indeterminate=${this._selectedRows.size > 0 &&\n this._selectedRows.size < this.rows.length}\n .checked=${this._selectedRows.size === this.rows.length && this.rows.length > 0}\n @change=${(e: Event) =>\n this._handleSelectAll((e.target as HTMLInputElement).checked)}\n />\n </th>\n `\n : nothing}\n ${this.columns.map(\n (col) => html`\n <th\n part=\"th\"\n tabindex=\"0\"\n style=${col.width ? `width: ${col.width}` : ''}\n aria-sort=${col.sortable\n ? this.sortKey === col.key\n ? this.sortDirection === 'asc'\n ? 'ascending'\n : 'descending'\n : 'none'\n : nothing}\n >\n ${col.sortable\n ? html`\n <button\n class=\"sort-btn\"\n @click=${() => this._handleSort(col.key)}\n aria-label=${this.sortKey === col.key\n ? `Sort by ${col.label}, currently sorted ${this.sortDirection === 'asc' ? 'ascending' : 'descending'}`\n : `Sort by ${col.label}`}\n >\n ${col.label} ${this._renderSortIcon(col.key)}\n </button>\n `\n : col.label}\n </th>\n `,\n )}\n </tr>\n `;\n }\n\n /** @internal */\n private _renderSkeletonRows() {\n return Array.from(\n { length: 3 },\n (_) => html`\n <tr part=\"tr\" aria-hidden=\"true\">\n ${this.selectable\n ? html`<td part=\"td\" class=\"col-checkbox\">\n <span class=\"skeleton-cell\" style=\"width:1rem;margin:auto\"></span>\n </td>`\n : nothing}\n ${this.columns.map(\n () => html`\n <td part=\"td\">\n <span class=\"skeleton-cell\"></span>\n </td>\n `,\n )}\n </tr>\n `,\n );\n }\n\n /** @internal */\n private _renderEmptyRow() {\n const colSpan = this.columns.length + (this.selectable ? 1 : 0);\n return html`\n <tr part=\"tr\">\n <td part=\"td\" colspan=${colSpan} class=\"empty-cell\">\n <slot name=\"empty\">${this.emptyLabel}</slot>\n </td>\n </tr>\n `;\n }\n\n /** @internal */\n private _renderDataRows() {\n let displayRows = this.rows;\n\n // Client-side pagination when pageSize > 0\n if (this.pageSize > 0) {\n const start = (this.page - 1) * this.pageSize;\n displayRows = this.rows.slice(start, start + this.pageSize);\n }\n\n return repeat(\n displayRows,\n (_row, pageIndex) => {\n const globalIndex =\n this.pageSize > 0 ? (this.page - 1) * this.pageSize + pageIndex : pageIndex;\n return globalIndex;\n },\n (row, pageIndex) => {\n // The global row index for selection and events\n const globalIndex =\n this.pageSize > 0 ? (this.page - 1) * this.pageSize + pageIndex : pageIndex;\n return html`\n <tr\n part=\"tr\"\n aria-selected=${this.selectable ? String(this._selectedRows.has(globalIndex)) : nothing}\n @click=${() => this._handleRowClick(row, globalIndex)}\n @keydown=${(e: KeyboardEvent) => {\n // WCAG 2.1.1: rows are keyboard-activatable via Enter and Space so that\n // the hx-row-click event fires equivalently for keyboard users.\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n this._handleRowClick(row, globalIndex);\n }\n }}\n >\n ${this.selectable\n ? html`\n <td part=\"td\" class=\"col-checkbox\" tabindex=\"-1\" data-row-index=${globalIndex}>\n <input\n type=\"checkbox\"\n part=\"checkbox\"\n aria-label=${`Select row ${globalIndex + 1}`}\n .checked=${this._selectedRows.has(globalIndex)}\n @click=${(e: Event) => e.stopPropagation()}\n @change=${(e: Event) =>\n this._handleSelect(globalIndex, (e.target as HTMLInputElement).checked)}\n />\n </td>\n `\n : nothing}\n ${this.columns.map(\n (col) => html`\n <td part=\"td\" tabindex=\"-1\" data-row-index=${globalIndex}>\n ${row[col.key] != null ? String(row[col.key]) : ''}\n </td>\n `,\n )}\n </tr>\n `;\n },\n );\n }\n\n // ─── Render ───\n\n override render() {\n return html`\n <slot name=\"toolbar\"></slot>\n <div class=\"table-wrapper\">\n <table\n part=\"table\"\n role=\"grid\"\n aria-label=${this.label.trim() || 'Table'}\n aria-busy=${this.loading ? 'true' : nothing}\n @keydown=${this._handleKeydown}\n >\n <thead part=\"thead\">\n ${this._renderHeaderRow()}\n </thead>\n <tbody part=\"tbody\">\n ${this.loading\n ? html`<slot name=\"loading\">${this._renderSkeletonRows()}</slot>`\n : this.rows.length === 0\n ? this._renderEmptyRow()\n : this._renderDataRows()}\n </tbody>\n </table>\n </div>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'hx-data-table': HelixDataTable;\n }\n}\n"],"names":["helixDataTableStyles","css","HelixDataTable","LitElement","changed","rawColumns","rawRows","key","direction","row","index","checked","next","_","i","e","root","cells","focused","ancestor","colCount","idx","target","rowStart","rowEnd","_a","rowIdx","isActive","iconClass","html","nothing","col","colSpan","displayRows","start","repeat","_row","pageIndex","globalIndex","tokenStyles","__decorateClass","property","value","state","customElement"],"mappings":"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"}