@helixui/library 3.1.0 → 3.2.0-next.76

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (608) hide show
  1. package/custom-elements.json +6810 -579
  2. package/dist/components/hx-accordion/hx-accordion-item.d.ts.map +1 -1
  3. package/dist/components/hx-accordion/hx-accordion.d.ts +3 -0
  4. package/dist/components/hx-accordion/hx-accordion.d.ts.map +1 -1
  5. package/dist/components/hx-accordion/index.js +1 -1
  6. package/dist/components/hx-action-bar/hx-action-bar.d.ts +14 -0
  7. package/dist/components/hx-action-bar/hx-action-bar.d.ts.map +1 -1
  8. package/dist/components/hx-action-bar/index.js +1 -1
  9. package/dist/components/hx-alert/hx-alert.d.ts +36 -0
  10. package/dist/components/hx-alert/hx-alert.d.ts.map +1 -1
  11. package/dist/components/hx-alert/hx-alert.styles.d.ts +12 -0
  12. package/dist/components/hx-alert/hx-alert.styles.d.ts.map +1 -1
  13. package/dist/components/hx-alert/index.js +1 -1
  14. package/dist/components/hx-avatar/hx-avatar.d.ts +17 -0
  15. package/dist/components/hx-avatar/hx-avatar.d.ts.map +1 -1
  16. package/dist/components/hx-avatar/index.js +1 -1
  17. package/dist/components/hx-badge/hx-badge.d.ts +35 -0
  18. package/dist/components/hx-badge/hx-badge.d.ts.map +1 -1
  19. package/dist/components/hx-badge/index.js +1 -1
  20. package/dist/components/hx-banner/hx-banner.d.ts +34 -0
  21. package/dist/components/hx-banner/hx-banner.d.ts.map +1 -1
  22. package/dist/components/hx-banner/hx-banner.styles.d.ts +12 -0
  23. package/dist/components/hx-banner/hx-banner.styles.d.ts.map +1 -1
  24. package/dist/components/hx-banner/index.js +1 -1
  25. package/dist/components/hx-breadcrumb/hx-breadcrumb-item.d.ts.map +1 -1
  26. package/dist/components/hx-breadcrumb/hx-breadcrumb.d.ts +3 -0
  27. package/dist/components/hx-breadcrumb/hx-breadcrumb.d.ts.map +1 -1
  28. package/dist/components/hx-breadcrumb/index.js +1 -1
  29. package/dist/components/hx-button/hx-button.d.ts +42 -0
  30. package/dist/components/hx-button/hx-button.d.ts.map +1 -1
  31. package/dist/components/hx-button/hx-button.styles.d.ts.map +1 -1
  32. package/dist/components/hx-button/index.js +1 -1
  33. package/dist/components/hx-button-group/hx-button-group.d.ts +2 -0
  34. package/dist/components/hx-button-group/hx-button-group.d.ts.map +1 -1
  35. package/dist/components/hx-button-group/hx-button-group.styles.d.ts.map +1 -1
  36. package/dist/components/hx-button-group/index.js +1 -1
  37. package/dist/components/hx-card/hx-card.d.ts +28 -0
  38. package/dist/components/hx-card/hx-card.d.ts.map +1 -1
  39. package/dist/components/hx-card/hx-card.styles.d.ts +9 -0
  40. package/dist/components/hx-card/hx-card.styles.d.ts.map +1 -1
  41. package/dist/components/hx-card/index.js +1 -1
  42. package/dist/components/hx-carousel/hx-carousel.d.ts +25 -0
  43. package/dist/components/hx-carousel/hx-carousel.d.ts.map +1 -1
  44. package/dist/components/hx-carousel/hx-carousel.styles.d.ts.map +1 -1
  45. package/dist/components/hx-carousel/index.js +1 -1
  46. package/dist/components/hx-checkbox/hx-checkbox.d.ts +38 -7
  47. package/dist/components/hx-checkbox/hx-checkbox.d.ts.map +1 -1
  48. package/dist/components/hx-checkbox/index.js +1 -1
  49. package/dist/components/hx-checkbox-group/hx-checkbox-group.d.ts +16 -2
  50. package/dist/components/hx-checkbox-group/hx-checkbox-group.d.ts.map +1 -1
  51. package/dist/components/hx-checkbox-group/index.js +1 -1
  52. package/dist/components/hx-clinical-status/hx-clinical-status.d.ts +37 -0
  53. package/dist/components/hx-clinical-status/hx-clinical-status.d.ts.map +1 -1
  54. package/dist/components/hx-clinical-status/index.js +1 -1
  55. package/dist/components/hx-code-snippet/hx-code-snippet.d.ts +35 -0
  56. package/dist/components/hx-code-snippet/hx-code-snippet.d.ts.map +1 -1
  57. package/dist/components/hx-code-snippet/hx-code-snippet.styles.d.ts.map +1 -1
  58. package/dist/components/hx-code-snippet/index.js +1 -1
  59. package/dist/components/hx-color-picker/hx-color-picker.d.ts +29 -0
  60. package/dist/components/hx-color-picker/hx-color-picker.d.ts.map +1 -1
  61. package/dist/components/hx-color-picker/hx-color-picker.styles.d.ts.map +1 -1
  62. package/dist/components/hx-color-picker/index.js +1 -1
  63. package/dist/components/hx-combobox/hx-combobox.d.ts +49 -0
  64. package/dist/components/hx-combobox/hx-combobox.d.ts.map +1 -1
  65. package/dist/components/hx-combobox/index.js +1 -1
  66. package/dist/components/hx-container/hx-container.d.ts +5 -0
  67. package/dist/components/hx-container/hx-container.d.ts.map +1 -1
  68. package/dist/components/hx-copy-button/hx-copy-button.d.ts +24 -0
  69. package/dist/components/hx-copy-button/hx-copy-button.d.ts.map +1 -1
  70. package/dist/components/hx-copy-button/hx-copy-button.styles.d.ts.map +1 -1
  71. package/dist/components/hx-copy-button/index.js +1 -1
  72. package/dist/components/hx-counter/hx-counter.d.ts +7 -0
  73. package/dist/components/hx-counter/hx-counter.d.ts.map +1 -1
  74. package/dist/components/hx-counter/index.js +1 -1
  75. package/dist/components/hx-data-table/hx-data-table.d.ts +29 -0
  76. package/dist/components/hx-data-table/hx-data-table.d.ts.map +1 -1
  77. package/dist/components/hx-data-table/hx-data-table.styles.d.ts.map +1 -1
  78. package/dist/components/hx-data-table/index.js +1 -1
  79. package/dist/components/hx-date-picker/hx-date-picker.d.ts +44 -0
  80. package/dist/components/hx-date-picker/hx-date-picker.d.ts.map +1 -1
  81. package/dist/components/hx-date-picker/index.js +1 -1
  82. package/dist/components/hx-dialog/hx-dialog.d.ts +31 -0
  83. package/dist/components/hx-dialog/hx-dialog.d.ts.map +1 -1
  84. package/dist/components/hx-dialog/hx-dialog.styles.d.ts +10 -0
  85. package/dist/components/hx-dialog/hx-dialog.styles.d.ts.map +1 -1
  86. package/dist/components/hx-dialog/index.js +1 -1
  87. package/dist/components/hx-divider/hx-divider.d.ts +9 -0
  88. package/dist/components/hx-divider/hx-divider.d.ts.map +1 -1
  89. package/dist/components/hx-divider/index.js +1 -1
  90. package/dist/components/hx-drawer/hx-drawer.d.ts +30 -0
  91. package/dist/components/hx-drawer/hx-drawer.d.ts.map +1 -1
  92. package/dist/components/hx-drawer/hx-drawer.styles.d.ts +10 -0
  93. package/dist/components/hx-drawer/hx-drawer.styles.d.ts.map +1 -1
  94. package/dist/components/hx-drawer/index.js +1 -1
  95. package/dist/components/hx-dropdown/hx-dropdown.d.ts +6 -0
  96. package/dist/components/hx-dropdown/hx-dropdown.d.ts.map +1 -1
  97. package/dist/components/hx-dropdown/index.js +1 -1
  98. package/dist/components/hx-field/hx-field.d.ts +15 -0
  99. package/dist/components/hx-field/hx-field.d.ts.map +1 -1
  100. package/dist/components/hx-field/index.js +1 -1
  101. package/dist/components/hx-field-label/hx-field-label.d.ts +11 -0
  102. package/dist/components/hx-field-label/hx-field-label.d.ts.map +1 -1
  103. package/dist/components/hx-field-label/index.js +1 -1
  104. package/dist/components/hx-file-upload/hx-file-upload.d.ts +35 -0
  105. package/dist/components/hx-file-upload/hx-file-upload.d.ts.map +1 -1
  106. package/dist/components/hx-file-upload/index.js +1 -1
  107. package/dist/components/hx-form/index.js +1 -1
  108. package/dist/components/hx-grid/hx-grid.d.ts +5 -0
  109. package/dist/components/hx-grid/hx-grid.d.ts.map +1 -1
  110. package/dist/components/hx-help-text/hx-help-text.d.ts +8 -0
  111. package/dist/components/hx-help-text/hx-help-text.d.ts.map +1 -1
  112. package/dist/components/hx-help-text/index.js +1 -1
  113. package/dist/components/hx-icon/hx-icon.d.ts +5 -0
  114. package/dist/components/hx-icon/hx-icon.d.ts.map +1 -1
  115. package/dist/components/hx-icon/index.js +1 -1
  116. package/dist/components/hx-icon-button/hx-icon-button.d.ts +27 -0
  117. package/dist/components/hx-icon-button/hx-icon-button.d.ts.map +1 -1
  118. package/dist/components/hx-icon-button/hx-icon-button.styles.d.ts.map +1 -1
  119. package/dist/components/hx-icon-button/index.js +1 -1
  120. package/dist/components/hx-image/hx-image.d.ts +4 -0
  121. package/dist/components/hx-image/hx-image.d.ts.map +1 -1
  122. package/dist/components/hx-image/index.js +1 -1
  123. package/dist/components/hx-link/hx-link.d.ts +15 -0
  124. package/dist/components/hx-link/hx-link.d.ts.map +1 -1
  125. package/dist/components/hx-link/index.js +1 -1
  126. package/dist/components/hx-list/hx-list-item.d.ts.map +1 -1
  127. package/dist/components/hx-list/hx-list.d.ts +3 -0
  128. package/dist/components/hx-list/hx-list.d.ts.map +1 -1
  129. package/dist/components/hx-list/index.js +1 -1
  130. package/dist/components/hx-menu/hx-menu-divider.d.ts.map +1 -1
  131. package/dist/components/hx-menu/hx-menu-item.d.ts.map +1 -1
  132. package/dist/components/hx-menu/hx-menu-item.styles.d.ts.map +1 -1
  133. package/dist/components/hx-menu/hx-menu.d.ts +6 -0
  134. package/dist/components/hx-menu/hx-menu.d.ts.map +1 -1
  135. package/dist/components/hx-menu/index.js +1 -1
  136. package/dist/components/hx-meter/hx-meter.d.ts +23 -0
  137. package/dist/components/hx-meter/hx-meter.d.ts.map +1 -1
  138. package/dist/components/hx-meter/hx-meter.styles.d.ts.map +1 -1
  139. package/dist/components/hx-meter/index.js +1 -1
  140. package/dist/components/hx-nav/hx-nav.d.ts +29 -0
  141. package/dist/components/hx-nav/hx-nav.d.ts.map +1 -1
  142. package/dist/components/hx-nav/hx-nav.styles.d.ts.map +1 -1
  143. package/dist/components/hx-nav/index.js +1 -1
  144. package/dist/components/hx-number-input/hx-number-input.d.ts +34 -0
  145. package/dist/components/hx-number-input/hx-number-input.d.ts.map +1 -1
  146. package/dist/components/hx-number-input/index.js +1 -1
  147. package/dist/components/hx-overflow-menu/hx-overflow-menu.d.ts +26 -0
  148. package/dist/components/hx-overflow-menu/hx-overflow-menu.d.ts.map +1 -1
  149. package/dist/components/hx-overflow-menu/hx-overflow-menu.styles.d.ts.map +1 -1
  150. package/dist/components/hx-overflow-menu/index.js +1 -1
  151. package/dist/components/hx-pagination/hx-pagination.d.ts +21 -0
  152. package/dist/components/hx-pagination/hx-pagination.d.ts.map +1 -1
  153. package/dist/components/hx-pagination/hx-pagination.styles.d.ts.map +1 -1
  154. package/dist/components/hx-pagination/index.js +1 -1
  155. package/dist/components/hx-patient-banner/hx-patient-banner.d.ts +23 -0
  156. package/dist/components/hx-patient-banner/hx-patient-banner.d.ts.map +1 -1
  157. package/dist/components/hx-patient-banner/hx-patient-banner.styles.d.ts.map +1 -1
  158. package/dist/components/hx-patient-banner/index.js +1 -1
  159. package/dist/components/hx-phi-field/hx-phi-field.d.ts +19 -5
  160. package/dist/components/hx-phi-field/hx-phi-field.d.ts.map +1 -1
  161. package/dist/components/hx-phi-field/index.js +1 -1
  162. package/dist/components/hx-popover/hx-popover.d.ts +15 -0
  163. package/dist/components/hx-popover/hx-popover.d.ts.map +1 -1
  164. package/dist/components/hx-popover/hx-popover.styles.d.ts +9 -0
  165. package/dist/components/hx-popover/hx-popover.styles.d.ts.map +1 -1
  166. package/dist/components/hx-popover/index.js +1 -1
  167. package/dist/components/hx-popup/hx-popup.d.ts +1 -0
  168. package/dist/components/hx-popup/hx-popup.d.ts.map +1 -1
  169. package/dist/components/hx-popup/hx-popup.styles.d.ts +9 -0
  170. package/dist/components/hx-popup/hx-popup.styles.d.ts.map +1 -1
  171. package/dist/components/hx-popup/index.js +1 -1
  172. package/dist/components/hx-progress-bar/hx-progress-bar.d.ts +17 -0
  173. package/dist/components/hx-progress-bar/hx-progress-bar.d.ts.map +1 -1
  174. package/dist/components/hx-progress-bar/index.js +1 -1
  175. package/dist/components/hx-progress-ring/hx-progress-ring.d.ts +15 -0
  176. package/dist/components/hx-progress-ring/hx-progress-ring.d.ts.map +1 -1
  177. package/dist/components/hx-progress-ring/index.js +1 -1
  178. package/dist/components/hx-prose/hx-prose.d.ts +2 -0
  179. package/dist/components/hx-prose/hx-prose.d.ts.map +1 -1
  180. package/dist/components/hx-prose/index.js +1 -1
  181. package/dist/components/hx-radio-group/hx-radio-group.d.ts +17 -3
  182. package/dist/components/hx-radio-group/hx-radio-group.d.ts.map +1 -1
  183. package/dist/components/hx-radio-group/hx-radio.d.ts +5 -5
  184. package/dist/components/hx-radio-group/hx-radio.d.ts.map +1 -1
  185. package/dist/components/hx-radio-group/index.js +1 -1
  186. package/dist/components/hx-rating/hx-rating.d.ts +13 -0
  187. package/dist/components/hx-rating/hx-rating.d.ts.map +1 -1
  188. package/dist/components/hx-rating/index.js +1 -1
  189. package/dist/components/hx-select/hx-select.d.ts +43 -0
  190. package/dist/components/hx-select/hx-select.d.ts.map +1 -1
  191. package/dist/components/hx-select/hx-select.styles.d.ts.map +1 -1
  192. package/dist/components/hx-select/index.js +1 -1
  193. package/dist/components/hx-side-nav/hx-nav-item.d.ts.map +1 -1
  194. package/dist/components/hx-side-nav/hx-nav-item.styles.d.ts.map +1 -1
  195. package/dist/components/hx-side-nav/hx-side-nav.d.ts +19 -0
  196. package/dist/components/hx-side-nav/hx-side-nav.d.ts.map +1 -1
  197. package/dist/components/hx-side-nav/hx-side-nav.styles.d.ts.map +1 -1
  198. package/dist/components/hx-side-nav/index.js +1 -1
  199. package/dist/components/hx-skeleton/hx-skeleton.d.ts +5 -0
  200. package/dist/components/hx-skeleton/hx-skeleton.d.ts.map +1 -1
  201. package/dist/components/hx-skeleton/index.js +1 -1
  202. package/dist/components/hx-slider/hx-slider.d.ts +38 -0
  203. package/dist/components/hx-slider/hx-slider.d.ts.map +1 -1
  204. package/dist/components/hx-slider/hx-slider.styles.d.ts.map +1 -1
  205. package/dist/components/hx-slider/index.js +1 -1
  206. package/dist/components/hx-spinner/hx-spinner.d.ts +10 -0
  207. package/dist/components/hx-spinner/hx-spinner.d.ts.map +1 -1
  208. package/dist/components/hx-spinner/index.js +1 -1
  209. package/dist/components/hx-split-button/hx-split-button.d.ts +39 -0
  210. package/dist/components/hx-split-button/hx-split-button.d.ts.map +1 -1
  211. package/dist/components/hx-split-button/hx-split-button.styles.d.ts.map +1 -1
  212. package/dist/components/hx-split-button/index.js +1 -1
  213. package/dist/components/hx-split-panel/hx-split-panel.d.ts +12 -0
  214. package/dist/components/hx-split-panel/hx-split-panel.d.ts.map +1 -1
  215. package/dist/components/hx-split-panel/hx-split-panel.styles.d.ts.map +1 -1
  216. package/dist/components/hx-split-panel/index.js +1 -1
  217. package/dist/components/hx-stack/hx-stack.d.ts +5 -0
  218. package/dist/components/hx-stack/hx-stack.d.ts.map +1 -1
  219. package/dist/components/hx-stat/hx-stat.d.ts +24 -0
  220. package/dist/components/hx-stat/hx-stat.d.ts.map +1 -1
  221. package/dist/components/hx-stat/index.js +1 -1
  222. package/dist/components/hx-status-indicator/hx-status-indicator.d.ts +13 -0
  223. package/dist/components/hx-status-indicator/hx-status-indicator.d.ts.map +1 -1
  224. package/dist/components/hx-status-indicator/index.js +1 -1
  225. package/dist/components/hx-steps/hx-step.d.ts.map +1 -1
  226. package/dist/components/hx-steps/hx-step.styles.d.ts.map +1 -1
  227. package/dist/components/hx-steps/hx-steps.d.ts +15 -0
  228. package/dist/components/hx-steps/hx-steps.d.ts.map +1 -1
  229. package/dist/components/hx-steps/index.js +1 -1
  230. package/dist/components/hx-structured-list/hx-structured-list.d.ts +7 -0
  231. package/dist/components/hx-structured-list/hx-structured-list.d.ts.map +1 -1
  232. package/dist/components/hx-structured-list/index.js +1 -1
  233. package/dist/components/hx-switch/hx-switch.d.ts +42 -0
  234. package/dist/components/hx-switch/hx-switch.d.ts.map +1 -1
  235. package/dist/components/hx-switch/hx-switch.styles.d.ts.map +1 -1
  236. package/dist/components/hx-switch/index.js +1 -1
  237. package/dist/components/hx-table/hx-table.d.ts +20 -6
  238. package/dist/components/hx-table/hx-table.d.ts.map +1 -1
  239. package/dist/components/hx-table/hx-td.d.ts +1 -1
  240. package/dist/components/hx-table/index.js +1 -1
  241. package/dist/components/hx-tabs/hx-tab-panel.d.ts +2 -2
  242. package/dist/components/hx-tabs/hx-tab-panel.d.ts.map +1 -1
  243. package/dist/components/hx-tabs/hx-tab.d.ts +6 -6
  244. package/dist/components/hx-tabs/hx-tab.d.ts.map +1 -1
  245. package/dist/components/hx-tabs/hx-tabs.d.ts +12 -8
  246. package/dist/components/hx-tabs/hx-tabs.d.ts.map +1 -1
  247. package/dist/components/hx-tabs/index.js +1 -1
  248. package/dist/components/hx-tag/hx-tag.d.ts +36 -0
  249. package/dist/components/hx-tag/hx-tag.d.ts.map +1 -1
  250. package/dist/components/hx-tag/index.js +1 -1
  251. package/dist/components/hx-text/hx-text.d.ts +22 -0
  252. package/dist/components/hx-text/hx-text.d.ts.map +1 -1
  253. package/dist/components/hx-text/hx-text.styles.d.ts.map +1 -1
  254. package/dist/components/hx-text/index.js +1 -1
  255. package/dist/components/hx-text-input/hx-text-input.d.ts +30 -0
  256. package/dist/components/hx-text-input/hx-text-input.d.ts.map +1 -1
  257. package/dist/components/hx-text-input/hx-text-input.styles.d.ts +12 -0
  258. package/dist/components/hx-text-input/hx-text-input.styles.d.ts.map +1 -1
  259. package/dist/components/hx-text-input/index.js +1 -1
  260. package/dist/components/hx-textarea/hx-textarea.d.ts +27 -0
  261. package/dist/components/hx-textarea/hx-textarea.d.ts.map +1 -1
  262. package/dist/components/hx-textarea/hx-textarea.styles.d.ts.map +1 -1
  263. package/dist/components/hx-textarea/index.js +1 -1
  264. package/dist/components/hx-theme/hx-theme.d.ts +3 -0
  265. package/dist/components/hx-theme/hx-theme.d.ts.map +1 -1
  266. package/dist/components/hx-theme/index.js +1 -1
  267. package/dist/components/hx-time-picker/hx-time-picker.d.ts +32 -0
  268. package/dist/components/hx-time-picker/hx-time-picker.d.ts.map +1 -1
  269. package/dist/components/hx-time-picker/hx-time-picker.styles.d.ts.map +1 -1
  270. package/dist/components/hx-time-picker/index.js +1 -1
  271. package/dist/components/hx-toast/hx-toast.d.ts +24 -0
  272. package/dist/components/hx-toast/hx-toast.d.ts.map +1 -1
  273. package/dist/components/hx-toast/hx-toast.styles.d.ts +10 -0
  274. package/dist/components/hx-toast/hx-toast.styles.d.ts.map +1 -1
  275. package/dist/components/hx-toast/index.js +1 -1
  276. package/dist/components/hx-toggle-button/hx-toggle-button.d.ts +35 -0
  277. package/dist/components/hx-toggle-button/hx-toggle-button.d.ts.map +1 -1
  278. package/dist/components/hx-toggle-button/hx-toggle-button.styles.d.ts.map +1 -1
  279. package/dist/components/hx-toggle-button/index.js +1 -1
  280. package/dist/components/hx-tooltip/hx-tooltip.d.ts +13 -0
  281. package/dist/components/hx-tooltip/hx-tooltip.d.ts.map +1 -1
  282. package/dist/components/hx-tooltip/hx-tooltip.styles.d.ts +8 -0
  283. package/dist/components/hx-tooltip/hx-tooltip.styles.d.ts.map +1 -1
  284. package/dist/components/hx-tooltip/index.js +1 -1
  285. package/dist/components/hx-top-nav/hx-top-nav.d.ts +21 -0
  286. package/dist/components/hx-top-nav/hx-top-nav.d.ts.map +1 -1
  287. package/dist/components/hx-top-nav/hx-top-nav.styles.d.ts.map +1 -1
  288. package/dist/components/hx-top-nav/index.js +1 -1
  289. package/dist/components/hx-tree-view/hx-tree-item.d.ts.map +1 -1
  290. package/dist/components/hx-tree-view/hx-tree-item.styles.d.ts.map +1 -1
  291. package/dist/components/hx-tree-view/hx-tree-view.d.ts +6 -0
  292. package/dist/components/hx-tree-view/hx-tree-view.d.ts.map +1 -1
  293. package/dist/components/hx-tree-view/index.js +1 -1
  294. package/dist/css/helix-all.css +1173 -828
  295. package/dist/css/helix-core.css +215 -154
  296. package/dist/css/helix-data.css +58 -45
  297. package/dist/css/helix-feedback.css +119 -92
  298. package/dist/css/helix-forms.css +502 -332
  299. package/dist/css/helix-layout.css +9 -6
  300. package/dist/css/helix-media.css +13 -9
  301. package/dist/css/helix-navigation.css +86 -59
  302. package/dist/css/helix-overlay.css +65 -50
  303. package/dist/css/helix-tokens.css +113 -101
  304. package/dist/css/helix-utility.css +57 -40
  305. package/dist/css/hx-action-bar.css +5 -5
  306. package/dist/css/hx-alert.css +27 -23
  307. package/dist/css/hx-avatar.css +3 -3
  308. package/dist/css/hx-badge.css +22 -22
  309. package/dist/css/hx-banner.css +31 -24
  310. package/dist/css/hx-button-group.css +31 -14
  311. package/dist/css/hx-button.css +38 -21
  312. package/dist/css/hx-card.css +26 -12
  313. package/dist/css/hx-carousel.css +13 -9
  314. package/dist/css/hx-checkbox-group.css +5 -5
  315. package/dist/css/hx-checkbox.css +19 -19
  316. package/dist/css/hx-clinical-status.css +28 -28
  317. package/dist/css/hx-code-snippet.css +24 -18
  318. package/dist/css/hx-color-picker.css +30 -13
  319. package/dist/css/hx-combobox.css +28 -28
  320. package/dist/css/hx-copy-button.css +6 -3
  321. package/dist/css/hx-counter.css +1 -1
  322. package/dist/css/hx-data-table.css +22 -15
  323. package/dist/css/hx-date-picker.css +34 -34
  324. package/dist/css/hx-dialog.css +31 -24
  325. package/dist/css/hx-divider.css +2 -2
  326. package/dist/css/hx-drawer.css +18 -15
  327. package/dist/css/hx-dropdown.css +2 -2
  328. package/dist/css/hx-field-label.css +3 -3
  329. package/dist/css/hx-field.css +6 -6
  330. package/dist/css/hx-file-upload.css +18 -18
  331. package/dist/css/hx-help-text.css +5 -5
  332. package/dist/css/hx-icon-button.css +49 -38
  333. package/dist/css/hx-image.css +3 -3
  334. package/dist/css/hx-link.css +9 -9
  335. package/dist/css/hx-list.css +1 -1
  336. package/dist/css/hx-menu.css +2 -2
  337. package/dist/css/hx-meter.css +11 -10
  338. package/dist/css/hx-nav.css +17 -11
  339. package/dist/css/hx-number-input.css +18 -18
  340. package/dist/css/hx-overflow-menu.css +18 -9
  341. package/dist/css/hx-pagination.css +21 -15
  342. package/dist/css/hx-patient-banner.css +17 -9
  343. package/dist/css/hx-phi-field.css +4 -4
  344. package/dist/css/hx-popover.css +10 -6
  345. package/dist/css/hx-progress-bar.css +7 -7
  346. package/dist/css/hx-progress-ring.css +6 -6
  347. package/dist/css/hx-radio-group.css +5 -5
  348. package/dist/css/hx-rating.css +5 -5
  349. package/dist/css/hx-select.css +17 -14
  350. package/dist/css/hx-side-nav.css +13 -10
  351. package/dist/css/hx-skeleton.css +1 -1
  352. package/dist/css/hx-slider.css +15 -12
  353. package/dist/css/hx-spinner.css +4 -4
  354. package/dist/css/hx-split-button.css +45 -31
  355. package/dist/css/hx-split-panel.css +9 -6
  356. package/dist/css/hx-stat.css +8 -8
  357. package/dist/css/hx-status-indicator.css +7 -7
  358. package/dist/css/hx-structured-list.css +5 -5
  359. package/dist/css/hx-switch.css +16 -8
  360. package/dist/css/hx-table.css +6 -6
  361. package/dist/css/hx-tabs.css +3 -3
  362. package/dist/css/hx-tag.css +18 -18
  363. package/dist/css/hx-text-input.css +139 -61
  364. package/dist/css/hx-text.css +9 -7
  365. package/dist/css/hx-textarea.css +66 -27
  366. package/dist/css/hx-time-picker.css +27 -21
  367. package/dist/css/hx-toast.css +22 -7
  368. package/dist/css/hx-toggle-button.css +46 -30
  369. package/dist/css/hx-tooltip.css +4 -3
  370. package/dist/css/hx-top-nav.css +11 -8
  371. package/dist/css/hx-tree-view.css +1 -1
  372. package/dist/css/index.css +1 -1
  373. package/dist/css/manifest.json +280 -194
  374. package/dist/index.js +75 -75
  375. package/dist/shared/forced-colors-CTEDFRGa.js +117 -0
  376. package/dist/shared/forced-colors-CTEDFRGa.js.map +1 -0
  377. package/dist/shared/{hx-accordion-Wt52OOZD.js → hx-accordion-cnKg4_la.js} +31 -30
  378. package/dist/shared/hx-accordion-cnKg4_la.js.map +1 -0
  379. package/dist/shared/{hx-action-bar-BKMADbHj.js → hx-action-bar-CitgcpGv.js} +38 -37
  380. package/dist/shared/hx-action-bar-CitgcpGv.js.map +1 -0
  381. package/dist/shared/{hx-alert-D7n94HwI.js → hx-alert-BZH8iHQf.js} +36 -31
  382. package/dist/shared/hx-alert-BZH8iHQf.js.map +1 -0
  383. package/dist/shared/{hx-avatar-iLYzu8MJ.js → hx-avatar-C9hOmlAb.js} +19 -18
  384. package/dist/shared/hx-avatar-C9hOmlAb.js.map +1 -0
  385. package/dist/shared/{hx-badge-CVCmMPyW.js → hx-badge-CQXgOXJM.js} +65 -64
  386. package/dist/shared/hx-badge-CQXgOXJM.js.map +1 -0
  387. package/dist/shared/{hx-banner-C_He7Tr4.js → hx-banner-DT7Zn9Bo.js} +43 -35
  388. package/dist/shared/hx-banner-DT7Zn9Bo.js.map +1 -0
  389. package/dist/shared/{hx-breadcrumb-item-CldCwD1d.js → hx-breadcrumb-item-COeYcB2x.js} +24 -23
  390. package/dist/shared/hx-breadcrumb-item-COeYcB2x.js.map +1 -0
  391. package/dist/shared/{hx-button-group-BJOGWoMa.js → hx-button-group-BI-QBqmO.js} +45 -27
  392. package/dist/shared/hx-button-group-BI-QBqmO.js.map +1 -0
  393. package/dist/shared/{hx-button-Ddl-T6T-.js → hx-button-modUSOpY.js} +50 -32
  394. package/dist/shared/hx-button-modUSOpY.js.map +1 -0
  395. package/dist/shared/{hx-card-ycveujjL.js → hx-card-CU1QnjNb.js} +54 -39
  396. package/dist/shared/hx-card-CU1QnjNb.js.map +1 -0
  397. package/dist/shared/{hx-carousel-item-D_dCv61-.js → hx-carousel-item-BaE4hpLl.js} +38 -33
  398. package/dist/shared/hx-carousel-item-BaE4hpLl.js.map +1 -0
  399. package/dist/shared/{hx-checkbox-DkkoWoye.js → hx-checkbox-C46TyXhM.js} +42 -41
  400. package/dist/shared/hx-checkbox-C46TyXhM.js.map +1 -0
  401. package/dist/shared/{hx-checkbox-group-C3poJ-Zw.js → hx-checkbox-group-C9n315Ju.js} +20 -19
  402. package/dist/shared/hx-checkbox-group-C9n315Ju.js.map +1 -0
  403. package/dist/shared/{hx-clinical-status-BS5lcddT.js → hx-clinical-status-BmSjfSEN.js} +55 -54
  404. package/dist/shared/hx-clinical-status-BmSjfSEN.js.map +1 -0
  405. package/dist/shared/{hx-code-snippet-B7wUKzyb.js → hx-code-snippet-CJ0FbQYG.js} +39 -32
  406. package/dist/shared/hx-code-snippet-CJ0FbQYG.js.map +1 -0
  407. package/dist/shared/{hx-color-picker-DBaKTVLr.js → hx-color-picker-DiDLZyvK.js} +74 -56
  408. package/dist/shared/hx-color-picker-DiDLZyvK.js.map +1 -0
  409. package/dist/shared/{hx-combobox-BmgYT7Ar.js → hx-combobox-DaA5dBC4.js} +43 -42
  410. package/dist/shared/hx-combobox-DaA5dBC4.js.map +1 -0
  411. package/dist/shared/hx-container-DVI7sxfX.js.map +1 -1
  412. package/dist/shared/{hx-copy-button-8deNUdwP.js → hx-copy-button-sUVuikyH.js} +23 -19
  413. package/dist/shared/hx-copy-button-sUVuikyH.js.map +1 -0
  414. package/dist/shared/{hx-counter-CKfl_g8K.js → hx-counter-0zYapFhf.js} +10 -9
  415. package/dist/shared/hx-counter-0zYapFhf.js.map +1 -0
  416. package/dist/shared/{hx-data-table-B6h0RPn0.js → hx-data-table-Cq3t86Ic.js} +55 -47
  417. package/dist/shared/hx-data-table-Cq3t86Ic.js.map +1 -0
  418. package/dist/shared/{hx-date-picker-Dq2Nb68_.js → hx-date-picker-DMqRQNSB.js} +45 -44
  419. package/dist/shared/hx-date-picker-DMqRQNSB.js.map +1 -0
  420. package/dist/shared/{hx-dialog-CvIlY0Tc.js → hx-dialog-eIS8tcDm.js} +68 -60
  421. package/dist/shared/hx-dialog-eIS8tcDm.js.map +1 -0
  422. package/dist/shared/{hx-divider-DwpOrzMW.js → hx-divider-CYfcUjcr.js} +18 -17
  423. package/dist/shared/hx-divider-CYfcUjcr.js.map +1 -0
  424. package/dist/shared/{hx-drawer-Cx2ZJhBe.js → hx-drawer-DDhDz7RI.js} +31 -27
  425. package/dist/shared/hx-drawer-DDhDz7RI.js.map +1 -0
  426. package/dist/shared/{hx-dropdown-BjDrPUq5.js → hx-dropdown-LyaRc8Rf.js} +16 -15
  427. package/dist/shared/hx-dropdown-LyaRc8Rf.js.map +1 -0
  428. package/dist/shared/{hx-field-Dp3qQMut.js → hx-field-B3Qo8OLS.js} +15 -15
  429. package/dist/shared/hx-field-B3Qo8OLS.js.map +1 -0
  430. package/dist/shared/{hx-field-label-BC8QViXv.js → hx-field-label-BVRyyKeh.js} +8 -7
  431. package/dist/shared/hx-field-label-BVRyyKeh.js.map +1 -0
  432. package/dist/shared/{hx-file-upload-B6Yl1u0i.js → hx-file-upload-zTDbjsRw.js} +42 -41
  433. package/dist/shared/hx-file-upload-zTDbjsRw.js.map +1 -0
  434. package/dist/shared/hx-form-CkChEATa.js +257 -0
  435. package/dist/shared/hx-form-CkChEATa.js.map +1 -0
  436. package/dist/shared/hx-grid-CXZf3jeK.js.map +1 -1
  437. package/dist/shared/{hx-help-text-D7eytSim.js → hx-help-text-Xb2Yr8x2.js} +30 -29
  438. package/dist/shared/hx-help-text-Xb2Yr8x2.js.map +1 -0
  439. package/dist/shared/{hx-icon-button-BHneqPCU.js → hx-icon-button-BmV97nqz.js} +81 -69
  440. package/dist/shared/hx-icon-button-BmV97nqz.js.map +1 -0
  441. package/dist/shared/{hx-icon-CcyDPDYY.js → hx-icon-fuVm4-bk.js} +15 -14
  442. package/dist/shared/hx-icon-fuVm4-bk.js.map +1 -0
  443. package/dist/shared/{hx-image-2gt14zZd.js → hx-image-Ben_4yM5.js} +18 -17
  444. package/dist/shared/hx-image-Ben_4yM5.js.map +1 -0
  445. package/dist/shared/{hx-link-BESrWK8M.js → hx-link-DmiV-mPw.js} +21 -20
  446. package/dist/shared/hx-link-DmiV-mPw.js.map +1 -0
  447. package/dist/shared/{hx-list-_9qVv02L.js → hx-list-CkphGi9T.js} +22 -21
  448. package/dist/shared/hx-list-CkphGi9T.js.map +1 -0
  449. package/dist/shared/{hx-menu-divider-Ck-9Os1t.js → hx-menu-divider-j__TZjH2.js} +53 -49
  450. package/dist/shared/hx-menu-divider-j__TZjH2.js.map +1 -0
  451. package/dist/shared/{hx-meter-TbROk-dw.js → hx-meter-Cm7k_Ro8.js} +42 -40
  452. package/dist/shared/hx-meter-Cm7k_Ro8.js.map +1 -0
  453. package/dist/shared/{hx-nav-BcYDmjf7.js → hx-nav-LoyEKZQC.js} +30 -23
  454. package/dist/shared/hx-nav-LoyEKZQC.js.map +1 -0
  455. package/dist/shared/{hx-nav-item-pqPasRUm.js → hx-nav-item-D8xHLVOs.js} +89 -77
  456. package/dist/shared/hx-nav-item-D8xHLVOs.js.map +1 -0
  457. package/dist/shared/{hx-number-input-mOIZ3-46.js → hx-number-input-yUzFOSC1.js} +68 -67
  458. package/dist/shared/hx-number-input-yUzFOSC1.js.map +1 -0
  459. package/dist/shared/{hx-overflow-menu-Dprb9lnT.js → hx-overflow-menu-BmKyAp5D.js} +33 -23
  460. package/dist/shared/hx-overflow-menu-BmKyAp5D.js.map +1 -0
  461. package/dist/shared/{hx-pagination-AguTQjYC.js → hx-pagination-Dqw5dorC.js} +72 -65
  462. package/dist/shared/hx-pagination-Dqw5dorC.js.map +1 -0
  463. package/dist/shared/{hx-patient-banner-uE6gqLpT.js → hx-patient-banner-CkS-Lmj4.js} +29 -20
  464. package/dist/shared/hx-patient-banner-CkS-Lmj4.js.map +1 -0
  465. package/dist/shared/{hx-phi-field-BC_XowhC.js → hx-phi-field-Bf9TdtC1.js} +13 -12
  466. package/dist/shared/hx-phi-field-Bf9TdtC1.js.map +1 -0
  467. package/dist/shared/{hx-popover-B2_203ct.js → hx-popover-B93rTAfr.js} +29 -24
  468. package/dist/shared/hx-popover-B93rTAfr.js.map +1 -0
  469. package/dist/shared/{hx-popup-DZXpsJ1R.js → hx-popup-COUXXZ9X.js} +8 -7
  470. package/dist/shared/hx-popup-COUXXZ9X.js.map +1 -0
  471. package/dist/shared/{hx-progress-bar-KjEkEJLy.js → hx-progress-bar-Bn3JEPUf.js} +28 -27
  472. package/dist/shared/hx-progress-bar-Bn3JEPUf.js.map +1 -0
  473. package/dist/shared/{hx-progress-ring-3zMwvrwD.js → hx-progress-ring-TwHyXeEp.js} +15 -14
  474. package/dist/shared/hx-progress-ring-TwHyXeEp.js.map +1 -0
  475. package/dist/shared/{hx-prose-BCtK7YL6.js → hx-prose-BThYcASV.js} +12 -12
  476. package/dist/shared/{hx-prose-BCtK7YL6.js.map → hx-prose-BThYcASV.js.map} +1 -1
  477. package/dist/shared/{hx-radio-BBC5qZgE.js → hx-radio-N8xgDd_5.js} +38 -37
  478. package/dist/shared/hx-radio-N8xgDd_5.js.map +1 -0
  479. package/dist/shared/{hx-rating-C3E3ENJb.js → hx-rating-i2FL1WUN.js} +38 -37
  480. package/dist/shared/hx-rating-i2FL1WUN.js.map +1 -0
  481. package/dist/shared/{hx-select-CixTo7jp.js → hx-select-vgaBo1Ai.js} +63 -59
  482. package/dist/shared/hx-select-vgaBo1Ai.js.map +1 -0
  483. package/dist/shared/{hx-skeleton-LxkI0pxr.js → hx-skeleton-Cnieh5Uc.js} +14 -13
  484. package/dist/shared/hx-skeleton-Cnieh5Uc.js.map +1 -0
  485. package/dist/shared/{hx-slider-DFHuzF3N.js → hx-slider-ydBamYhd.js} +83 -79
  486. package/dist/shared/hx-slider-ydBamYhd.js.map +1 -0
  487. package/dist/shared/{hx-spinner-BKjuCdZB.js → hx-spinner-DL5AYr16.js} +18 -17
  488. package/dist/shared/hx-spinner-DL5AYr16.js.map +1 -0
  489. package/dist/shared/{hx-split-button-CGcJMmCG.js → hx-split-button-BeMsmS6N.js} +74 -59
  490. package/dist/shared/hx-split-button-BeMsmS6N.js.map +1 -0
  491. package/dist/shared/{hx-split-panel-C-1R10Mc.js → hx-split-panel-BVG1VWNT.js} +16 -12
  492. package/dist/shared/hx-split-panel-BVG1VWNT.js.map +1 -0
  493. package/dist/shared/hx-stack-DGfcOfWJ.js.map +1 -1
  494. package/dist/shared/{hx-stat-BTpykQAt.js → hx-stat-WOcNV1Ry.js} +16 -15
  495. package/dist/shared/hx-stat-WOcNV1Ry.js.map +1 -0
  496. package/dist/shared/{hx-status-indicator-X2QEWNFt.js → hx-status-indicator-BlQyen43.js} +17 -16
  497. package/dist/shared/hx-status-indicator-BlQyen43.js.map +1 -0
  498. package/dist/shared/{hx-step-CRNQlmSo.js → hx-step-DL3PbOzm.js} +63 -50
  499. package/dist/shared/hx-step-DL3PbOzm.js.map +1 -0
  500. package/dist/shared/{hx-structured-list-CqNbaEXg.js → hx-structured-list-m_-dMJbC.js} +18 -17
  501. package/dist/shared/hx-structured-list-m_-dMJbC.js.map +1 -0
  502. package/dist/shared/{hx-switch-DqOD9JR7.js → hx-switch-Dougzsgp.js} +29 -20
  503. package/dist/shared/hx-switch-Dougzsgp.js.map +1 -0
  504. package/dist/shared/{hx-tab-panel-BIzKfW5i.js → hx-tab-panel-CbkO9VKu.js} +45 -44
  505. package/dist/shared/hx-tab-panel-CbkO9VKu.js.map +1 -0
  506. package/dist/shared/{hx-tag-CgnrNnte.js → hx-tag-CNSmdyaK.js} +63 -62
  507. package/dist/shared/hx-tag-CNSmdyaK.js.map +1 -0
  508. package/dist/shared/{hx-td-Bra35cH4.js → hx-td-1zwTFLRw.js} +62 -61
  509. package/dist/shared/hx-td-1zwTFLRw.js.map +1 -0
  510. package/dist/shared/{hx-text-DMC2CPlL.js → hx-text-Bz_9fJ3J.js} +28 -25
  511. package/dist/shared/hx-text-Bz_9fJ3J.js.map +1 -0
  512. package/dist/shared/{hx-text-input--q0GH78x.js → hx-text-input-B-caO5fI.js} +159 -80
  513. package/dist/shared/hx-text-input-B-caO5fI.js.map +1 -0
  514. package/dist/shared/{hx-textarea-CK621vSL.js → hx-textarea-D9O4U8cb.js} +110 -70
  515. package/dist/shared/hx-textarea-D9O4U8cb.js.map +1 -0
  516. package/dist/shared/{hx-theme-DfEy-SJA.js → hx-theme-BiyQ7UUK.js} +46 -35
  517. package/dist/shared/hx-theme-BiyQ7UUK.js.map +1 -0
  518. package/dist/shared/{hx-time-picker-tPUfgElQ.js → hx-time-picker-m0z4nFB-.js} +59 -52
  519. package/dist/shared/hx-time-picker-m0z4nFB-.js.map +1 -0
  520. package/dist/shared/{hx-toggle-button-L-uBJr-a.js → hx-toggle-button-Dd8clXB4.js} +75 -58
  521. package/dist/shared/hx-toggle-button-Dd8clXB4.js.map +1 -0
  522. package/dist/shared/{hx-tooltip-B_zfKvwc.js → hx-tooltip-nYOv9OLu.js} +18 -16
  523. package/dist/shared/hx-tooltip-nYOv9OLu.js.map +1 -0
  524. package/dist/shared/{hx-top-nav-CATbRvIv.js → hx-top-nav-CchPYaiV.js} +36 -32
  525. package/dist/shared/hx-top-nav-CchPYaiV.js.map +1 -0
  526. package/dist/shared/{hx-tree-item-A45WCiBu.js → hx-tree-item-DtMC3DTa.js} +35 -28
  527. package/dist/shared/hx-tree-item-DtMC3DTa.js.map +1 -0
  528. package/dist/shared/{toast-factory-BPPnG3mM.js → toast-factory-DvDRAh0l.js} +77 -61
  529. package/dist/shared/toast-factory-DvDRAh0l.js.map +1 -0
  530. package/dist/styles/forced-colors.d.ts +60 -0
  531. package/dist/styles/forced-colors.d.ts.map +1 -0
  532. package/figma-inventory.json +8606 -591
  533. package/package.json +2 -2
  534. package/dist/shared/hx-accordion-Wt52OOZD.js.map +0 -1
  535. package/dist/shared/hx-action-bar-BKMADbHj.js.map +0 -1
  536. package/dist/shared/hx-alert-D7n94HwI.js.map +0 -1
  537. package/dist/shared/hx-avatar-iLYzu8MJ.js.map +0 -1
  538. package/dist/shared/hx-badge-CVCmMPyW.js.map +0 -1
  539. package/dist/shared/hx-banner-C_He7Tr4.js.map +0 -1
  540. package/dist/shared/hx-breadcrumb-item-CldCwD1d.js.map +0 -1
  541. package/dist/shared/hx-button-Ddl-T6T-.js.map +0 -1
  542. package/dist/shared/hx-button-group-BJOGWoMa.js.map +0 -1
  543. package/dist/shared/hx-card-ycveujjL.js.map +0 -1
  544. package/dist/shared/hx-carousel-item-D_dCv61-.js.map +0 -1
  545. package/dist/shared/hx-checkbox-DkkoWoye.js.map +0 -1
  546. package/dist/shared/hx-checkbox-group-C3poJ-Zw.js.map +0 -1
  547. package/dist/shared/hx-clinical-status-BS5lcddT.js.map +0 -1
  548. package/dist/shared/hx-code-snippet-B7wUKzyb.js.map +0 -1
  549. package/dist/shared/hx-color-picker-DBaKTVLr.js.map +0 -1
  550. package/dist/shared/hx-combobox-BmgYT7Ar.js.map +0 -1
  551. package/dist/shared/hx-copy-button-8deNUdwP.js.map +0 -1
  552. package/dist/shared/hx-counter-CKfl_g8K.js.map +0 -1
  553. package/dist/shared/hx-data-table-B6h0RPn0.js.map +0 -1
  554. package/dist/shared/hx-date-picker-Dq2Nb68_.js.map +0 -1
  555. package/dist/shared/hx-dialog-CvIlY0Tc.js.map +0 -1
  556. package/dist/shared/hx-divider-DwpOrzMW.js.map +0 -1
  557. package/dist/shared/hx-drawer-Cx2ZJhBe.js.map +0 -1
  558. package/dist/shared/hx-dropdown-BjDrPUq5.js.map +0 -1
  559. package/dist/shared/hx-field-Dp3qQMut.js.map +0 -1
  560. package/dist/shared/hx-field-label-BC8QViXv.js.map +0 -1
  561. package/dist/shared/hx-file-upload-B6Yl1u0i.js.map +0 -1
  562. package/dist/shared/hx-form-ButQFt9A.js +0 -257
  563. package/dist/shared/hx-form-ButQFt9A.js.map +0 -1
  564. package/dist/shared/hx-help-text-D7eytSim.js.map +0 -1
  565. package/dist/shared/hx-icon-CcyDPDYY.js.map +0 -1
  566. package/dist/shared/hx-icon-button-BHneqPCU.js.map +0 -1
  567. package/dist/shared/hx-image-2gt14zZd.js.map +0 -1
  568. package/dist/shared/hx-link-BESrWK8M.js.map +0 -1
  569. package/dist/shared/hx-list-_9qVv02L.js.map +0 -1
  570. package/dist/shared/hx-menu-divider-Ck-9Os1t.js.map +0 -1
  571. package/dist/shared/hx-meter-TbROk-dw.js.map +0 -1
  572. package/dist/shared/hx-nav-BcYDmjf7.js.map +0 -1
  573. package/dist/shared/hx-nav-item-pqPasRUm.js.map +0 -1
  574. package/dist/shared/hx-number-input-mOIZ3-46.js.map +0 -1
  575. package/dist/shared/hx-overflow-menu-Dprb9lnT.js.map +0 -1
  576. package/dist/shared/hx-pagination-AguTQjYC.js.map +0 -1
  577. package/dist/shared/hx-patient-banner-uE6gqLpT.js.map +0 -1
  578. package/dist/shared/hx-phi-field-BC_XowhC.js.map +0 -1
  579. package/dist/shared/hx-popover-B2_203ct.js.map +0 -1
  580. package/dist/shared/hx-popup-DZXpsJ1R.js.map +0 -1
  581. package/dist/shared/hx-progress-bar-KjEkEJLy.js.map +0 -1
  582. package/dist/shared/hx-progress-ring-3zMwvrwD.js.map +0 -1
  583. package/dist/shared/hx-radio-BBC5qZgE.js.map +0 -1
  584. package/dist/shared/hx-rating-C3E3ENJb.js.map +0 -1
  585. package/dist/shared/hx-select-CixTo7jp.js.map +0 -1
  586. package/dist/shared/hx-skeleton-LxkI0pxr.js.map +0 -1
  587. package/dist/shared/hx-slider-DFHuzF3N.js.map +0 -1
  588. package/dist/shared/hx-spinner-BKjuCdZB.js.map +0 -1
  589. package/dist/shared/hx-split-button-CGcJMmCG.js.map +0 -1
  590. package/dist/shared/hx-split-panel-C-1R10Mc.js.map +0 -1
  591. package/dist/shared/hx-stat-BTpykQAt.js.map +0 -1
  592. package/dist/shared/hx-status-indicator-X2QEWNFt.js.map +0 -1
  593. package/dist/shared/hx-step-CRNQlmSo.js.map +0 -1
  594. package/dist/shared/hx-structured-list-CqNbaEXg.js.map +0 -1
  595. package/dist/shared/hx-switch-DqOD9JR7.js.map +0 -1
  596. package/dist/shared/hx-tab-panel-BIzKfW5i.js.map +0 -1
  597. package/dist/shared/hx-tag-CgnrNnte.js.map +0 -1
  598. package/dist/shared/hx-td-Bra35cH4.js.map +0 -1
  599. package/dist/shared/hx-text-DMC2CPlL.js.map +0 -1
  600. package/dist/shared/hx-text-input--q0GH78x.js.map +0 -1
  601. package/dist/shared/hx-textarea-CK621vSL.js.map +0 -1
  602. package/dist/shared/hx-theme-DfEy-SJA.js.map +0 -1
  603. package/dist/shared/hx-time-picker-tPUfgElQ.js.map +0 -1
  604. package/dist/shared/hx-toggle-button-L-uBJr-a.js.map +0 -1
  605. package/dist/shared/hx-tooltip-B_zfKvwc.js.map +0 -1
  606. package/dist/shared/hx-top-nav-CATbRvIv.js.map +0 -1
  607. package/dist/shared/hx-tree-item-A45WCiBu.js.map +0 -1
  608. package/dist/shared/toast-factory-BPPnG3mM.js.map +0 -1
@@ -1,14 +1,15 @@
1
- import { css as b, nothing as c, html as h } from "lit";
2
- import { property as l, state as p, query as v, customElement as _ } from "lit/decorators.js";
1
+ import { css as b, nothing as m, html as h } from "lit";
2
+ import { property as r, state as c, query as v, customElement as _ } from "lit/decorators.js";
3
3
  import { classMap as x } from "lit/directives/class-map.js";
4
4
  import { ifDefined as u } from "lit/directives/if-defined.js";
5
5
  import { live as f } from "lit/directives/live.js";
6
- import { styleMap as m } from "lit/directives/style-map.js";
6
+ import { styleMap as p } from "lit/directives/style-map.js";
7
7
  import { F as g } from "./FormMixin-B8PXk5RQ.js";
8
- import { d as y } from "./dev-warn-YlwPHjtX.js";
9
- import { H as w } from "./helix-element-BNEYeiys.js";
10
- import { c as S } from "./id-counter-DuX8vsui.js";
11
- const k = b`
8
+ import { f as y } from "./forced-colors-CTEDFRGa.js";
9
+ import { d as w } from "./dev-warn-YlwPHjtX.js";
10
+ import { H as S } from "./helix-element-BNEYeiys.js";
11
+ import { c as k } from "./id-counter-DuX8vsui.js";
12
+ const z = b`
12
13
  :host {
13
14
  display: block;
14
15
  }
@@ -43,14 +44,14 @@ const k = b`
43
44
  .slider__label {
44
45
  font-size: var(--hx-font-size-sm, 0.875rem);
45
46
  font-weight: var(--hx-font-weight-medium, 500);
46
- color: var(--hx-slider-label-color, var(--hx-color-neutral-700, #334155));
47
+ color: var(--hx-slider-label-color, var(--hx-color-text-strong, #202b39));
47
48
  line-height: var(--hx-line-height-normal, 1.5);
48
49
  }
49
50
 
50
51
  .slider__value-display {
51
52
  font-size: var(--hx-font-size-sm, 0.875rem);
52
53
  font-weight: var(--hx-font-weight-medium, 500);
53
- color: var(--hx-slider-value-color, var(--hx-color-neutral-600, #475569));
54
+ color: var(--hx-slider-value-color, var(--hx-color-text-secondary, #313e4b));
54
55
  line-height: var(--hx-line-height-normal, 1.5);
55
56
  font-variant-numeric: tabular-nums;
56
57
  min-width: var(--hx-size-8, 2rem);
@@ -68,7 +69,7 @@ const k = b`
68
69
  position: relative;
69
70
  width: 100%;
70
71
  border-radius: var(--hx-border-radius-full, 9999px);
71
- background-color: var(--hx-slider-track-bg, var(--hx-color-neutral-200, #e2e8f0));
72
+ background-color: var(--hx-slider-track-bg, var(--hx-color-border-default, #d6dbd5));
72
73
  overflow: visible;
73
74
  }
74
75
 
@@ -111,7 +112,7 @@ const k = b`
111
112
  height: 100%;
112
113
  width: 100%;
113
114
  border-radius: var(--hx-border-radius-full, 9999px);
114
- background-color: var(--hx-slider-fill-bg, var(--hx-color-primary-500, #2563eb));
115
+ background-color: var(--hx-slider-fill-bg, var(--hx-color-primary-500, #429797));
115
116
  pointer-events: none;
116
117
  transform-origin: left center;
117
118
  transform: scaleX(var(--_fill-ratio, 0));
@@ -190,9 +191,9 @@ const k = b`
190
191
  left: calc(var(--fill-pct, 0) * 1% + var(--_thumb-size, 1rem) * (1 - var(--fill-pct, 0) / 100));
191
192
  transform: translate(-50%, -50%);
192
193
  border-radius: var(--hx-border-radius-full, 9999px);
193
- background-color: var(--hx-slider-thumb-bg, var(--hx-color-neutral-0, #ffffff));
194
+ background-color: var(--hx-slider-thumb-bg, var(--hx-color-surface-default, #ffffff));
194
195
  border: var(--hx-slider-thumb-border-width, 2px) solid
195
- var(--hx-slider-thumb-border-color, var(--hx-color-primary-500, #2563eb));
196
+ var(--hx-slider-thumb-border-color, var(--hx-color-primary-500, #429797));
196
197
  box-shadow: var(--hx-slider-thumb-shadow, var(--hx-shadow-sm, 0 1px 2px 0 rgb(0 0 0 / 0.05)));
197
198
  pointer-events: none;
198
199
  transition:
@@ -211,7 +212,7 @@ const k = b`
211
212
  0 0 0 var(--hx-focus-ring-width, 2px)
212
213
  var(
213
214
  --hx-slider-focus-ring-color,
214
- var(--hx-focus-ring-color, var(--hx-color-primary-400, #60a5fa))
215
+ var(--hx-focus-ring-color, var(--hx-color-primary-400, #6ab1b1))
215
216
  ),
216
217
  var(--hx-slider-thumb-shadow, var(--hx-shadow-sm, 0 1px 2px 0 rgb(0 0 0 / 0.05)));
217
218
  }
@@ -268,7 +269,7 @@ const k = b`
268
269
  top: 0;
269
270
  width: var(--hx-border-width-thin, 1px);
270
271
  height: 100%;
271
- background-color: var(--hx-slider-tick-color, var(--hx-color-neutral-400, #94a3b8));
272
+ background-color: var(--hx-slider-tick-color, var(--hx-color-border-strong, #8e9c98));
272
273
  transform: translateX(-50%);
273
274
  }
274
275
 
@@ -278,7 +279,7 @@ const k = b`
278
279
  display: flex;
279
280
  justify-content: space-between;
280
281
  font-size: var(--hx-font-size-xs, 0.75rem);
281
- color: var(--hx-slider-range-label-color, var(--hx-color-neutral-500, #64748b));
282
+ color: var(--hx-slider-range-label-color, var(--hx-color-text-muted, #4a5362));
282
283
  line-height: var(--hx-line-height-normal, 1.5);
283
284
  margin-top: var(--hx-space-0-5, 0.125rem);
284
285
  }
@@ -287,29 +288,32 @@ const k = b`
287
288
 
288
289
  .slider__help-text {
289
290
  font-size: var(--hx-font-size-xs, 0.75rem);
290
- color: var(--hx-slider-help-text-color, var(--hx-color-neutral-500, #64748b));
291
+ color: var(--hx-slider-help-text-color, var(--hx-color-text-muted, #4a5362));
291
292
  line-height: var(--hx-line-height-normal, 1.5);
292
293
  }
293
294
 
294
295
  /* ─── Disabled state ─── */
295
296
 
296
297
  .slider--disabled .slider__fill {
297
- background-color: var(--hx-color-neutral-400, #94a3b8);
298
+ background-color: var(--hx-slider-disabled-fill-bg, var(--hx-color-border-strong, #8e9c98));
298
299
  }
299
300
 
300
301
  .slider--disabled .slider__thumb-visual {
301
- border-color: var(--hx-color-neutral-400, #94a3b8);
302
+ border-color: var(
303
+ --hx-slider-disabled-thumb-border-color,
304
+ var(--hx-color-border-strong, #8e9c98)
305
+ );
302
306
  }
303
307
  `;
304
- var z = Object.defineProperty, $ = Object.getOwnPropertyDescriptor, a = (e, t, s, r) => {
305
- for (var o = r > 1 ? void 0 : r ? $(t, s) : t, n = e.length - 1, d; n >= 0; n--)
306
- (d = e[n]) && (o = (r ? d(t, s, o) : d(o)) || o);
307
- return r && o && z(t, s, o), o;
308
+ var $ = Object.defineProperty, T = Object.getOwnPropertyDescriptor, s = (e, t, a, l) => {
309
+ for (var o = l > 1 ? void 0 : l ? T(t, a) : t, n = e.length - 1, d; n >= 0; n--)
310
+ (d = e[n]) && (o = (l ? d(t, a, o) : d(o)) || o);
311
+ return l && o && $(t, a, o), o;
308
312
  };
309
- const T = S("hx-slider");
310
- let i = class extends g(w) {
313
+ const C = k("hx-slider");
314
+ let i = class extends g(S) {
311
315
  constructor() {
312
- super(...arguments), this.name = "", this.value = 0, this.min = 0, this.max = 100, this.step = 1, this.disabled = !1, this.label = "", this.helpText = "", this.showValue = !1, this.showTicks = !1, this.size = "md", this.valueText = "", this._hasLabelSlot = !1, this._hasMinLabelSlot = !1, this._hasMaxLabelSlot = !1, this._hasHelpSlot = !1, this._sliderId = T(), this._labelId = `${this._sliderId}-label`, this._helpId = `${this._sliderId}-help`, this._defaultValue = null, this._cachedTicks = [];
316
+ super(...arguments), this.name = "", this.value = 0, this.min = 0, this.max = 100, this.step = 1, this.disabled = !1, this.label = "", this.helpText = "", this.showValue = !1, this.showTicks = !1, this.size = "md", this.valueText = "", this._hasLabelSlot = !1, this._hasMinLabelSlot = !1, this._hasMaxLabelSlot = !1, this._hasHelpSlot = !1, this._sliderId = C(), this._labelId = `${this._sliderId}-label`, this._helpId = `${this._sliderId}-help`, this._defaultValue = null, this._cachedTicks = [];
313
317
  }
314
318
  // ─── Computed Values ───
315
319
  /** @internal */
@@ -326,9 +330,9 @@ let i = class extends g(w) {
326
330
  if (!this.showTicks) return [];
327
331
  const e = [], t = this.max - this.min;
328
332
  if (t <= 0 || this.step <= 0) return e;
329
- const s = Math.round(t / this.step);
330
- for (let r = 0; r <= s; r++)
331
- e.push(r / s * 100);
333
+ const a = Math.round(t / this.step);
334
+ for (let l = 0; l <= a; l++)
335
+ e.push(l / a * 100);
332
336
  return e;
333
337
  }
334
338
  // ─── Lifecycle ───
@@ -339,7 +343,7 @@ let i = class extends g(w) {
339
343
  this._defaultValue = this.value, requestAnimationFrame(() => this.setAttribute("data-ready", "")), !this.label && this._hasLabelSlot;
340
344
  }
341
345
  updated(e) {
342
- if (super.updated(e), (e.has("min") || e.has("max")) && this.min >= this.max && y(
346
+ if (super.updated(e), (e.has("min") || e.has("max")) && this.min >= this.max && w(
343
347
  "hx-slider",
344
348
  `Invalid configuration: min (${this.min}) must be less than max (${this.max}). Slider behavior is undefined when min >= max.`
345
349
  ), e.has("value") || e.has("min") || e.has("max")) {
@@ -361,8 +365,8 @@ let i = class extends g(w) {
361
365
  /** @internal */
362
366
  _onFormStateRestore(e, t) {
363
367
  if (typeof e != "string" || e === null) return;
364
- const s = parseFloat(e);
365
- isNaN(s) || (this.value = this._clamp(s));
368
+ const a = parseFloat(e);
369
+ isNaN(a) || (this.value = this._clamp(a));
366
370
  }
367
371
  /** @internal */
368
372
  _onFormDisabled(e) {
@@ -422,7 +426,7 @@ let i = class extends g(w) {
422
426
  }
423
427
  // ─── Render ───
424
428
  render() {
425
- const e = this._fillPercent(), t = this._cachedTicks, s = !!this.label || this._hasLabelSlot, r = this._hasMinLabelSlot || this._hasMaxLabelSlot, o = {
429
+ const e = this._fillPercent(), t = this._cachedTicks, a = !!this.label || this._hasLabelSlot, l = this._hasMinLabelSlot || this._hasMaxLabelSlot, o = {
426
430
  slider: !0,
427
431
  [`slider--${this.size}`]: !0,
428
432
  "slider--disabled": this.disabled,
@@ -432,7 +436,7 @@ let i = class extends g(w) {
432
436
  <div part="slider" class=${x(o)}>
433
437
  <!-- Label row -->
434
438
  <div class="slider__label-row">
435
- ${s ? h`<label
439
+ ${a ? h`<label
436
440
  part="label"
437
441
  class="slider__label"
438
442
  id=${this._labelId}
@@ -440,7 +444,7 @@ let i = class extends g(w) {
440
444
  >
441
445
  <slot name="label" @slotchange=${this._handleLabelSlotChange}>${this.label}</slot>
442
446
  </label>` : h`<slot name="label" @slotchange=${this._handleLabelSlotChange}></slot>`}
443
- ${this.showValue ? h`<span part="value-display" class="slider__value-display"> ${this.value} </span>` : c}
447
+ ${this.showValue ? h`<span part="value-display" class="slider__value-display"> ${this.value} </span>` : m}
444
448
  </div>
445
449
 
446
450
  <!-- Track -->
@@ -449,7 +453,7 @@ let i = class extends g(w) {
449
453
  <div
450
454
  part="fill"
451
455
  class="slider__fill"
452
- style=${m({ "--_fill-ratio": String(e / 100) })}
456
+ style=${p({ "--_fill-ratio": String(e / 100) })}
453
457
  ></div>
454
458
 
455
459
  <input
@@ -462,8 +466,8 @@ let i = class extends g(w) {
462
466
  step=${this.step}
463
467
  ?disabled=${this.disabled}
464
468
  name=${u(this.name || void 0)}
465
- aria-labelledby=${u(s ? this._labelId : void 0)}
466
- aria-label=${u(s ? void 0 : "Slider")}
469
+ aria-labelledby=${u(a ? this._labelId : void 0)}
470
+ aria-label=${u(a ? void 0 : "Slider")}
467
471
  aria-valuetext=${u(this.valueText || void 0)}
468
472
  aria-describedby=${u(n)}
469
473
  @input=${this._handleInput}
@@ -474,7 +478,7 @@ let i = class extends g(w) {
474
478
  <span
475
479
  part="thumb"
476
480
  class="slider__thumb-visual"
477
- style=${m({ "--fill-pct": String(e) })}
481
+ style=${p({ "--fill-pct": String(e) })}
478
482
  aria-hidden="true"
479
483
  ></span>
480
484
  </div>
@@ -486,13 +490,13 @@ let i = class extends g(w) {
486
490
  (d) => h`<span
487
491
  part="tick"
488
492
  class="slider__tick"
489
- style=${m({ left: `${d}%` })}
493
+ style=${p({ left: `${d}%` })}
490
494
  ></span>`
491
495
  )}
492
- </div>` : c}
496
+ </div>` : m}
493
497
 
494
498
  <!-- Range labels -->
495
- ${r ? h`<div class="slider__range-labels">
499
+ ${l ? h`<div class="slider__range-labels">
496
500
  <slot name="min-label" @slotchange=${this._handleMinLabelSlotChange}></slot>
497
501
  <slot name="max-label" @slotchange=${this._handleMaxLabelSlotChange}></slot>
498
502
  </div>` : h`
@@ -506,70 +510,70 @@ let i = class extends g(w) {
506
510
  regardless of whether help content comes from the slot or the property. -->
507
511
  <div id=${this._helpId}>
508
512
  <slot name="help-text" @slotchange=${this._handleHelpSlotChange}>
509
- ${this.helpText ? h`<div part="help-text" class="slider__help-text">${this.helpText}</div>` : c}
513
+ ${this.helpText ? h`<div part="help-text" class="slider__help-text">${this.helpText}</div>` : m}
510
514
  </slot>
511
515
  </div>
512
516
  </div>
513
517
  `;
514
518
  }
515
519
  };
516
- i.styles = [k];
520
+ i.styles = [z, y];
517
521
  i.formAssociated = !0;
518
- a([
519
- l({ type: String, reflect: !0 })
522
+ s([
523
+ r({ type: String, reflect: !0 })
520
524
  ], i.prototype, "name", 2);
521
- a([
522
- l({ type: Number, reflect: !0 })
525
+ s([
526
+ r({ type: Number, reflect: !0 })
523
527
  ], i.prototype, "value", 2);
524
- a([
525
- l({ type: Number })
528
+ s([
529
+ r({ type: Number })
526
530
  ], i.prototype, "min", 2);
527
- a([
528
- l({ type: Number })
531
+ s([
532
+ r({ type: Number })
529
533
  ], i.prototype, "max", 2);
530
- a([
531
- l({ type: Number })
534
+ s([
535
+ r({ type: Number })
532
536
  ], i.prototype, "step", 2);
533
- a([
534
- l({ type: Boolean, reflect: !0 })
537
+ s([
538
+ r({ type: Boolean, reflect: !0 })
535
539
  ], i.prototype, "disabled", 2);
536
- a([
537
- l({ type: String })
540
+ s([
541
+ r({ type: String })
538
542
  ], i.prototype, "label", 2);
539
- a([
540
- l({ type: String, attribute: "help-text" })
543
+ s([
544
+ r({ type: String, attribute: "help-text" })
541
545
  ], i.prototype, "helpText", 2);
542
- a([
543
- l({ type: Boolean, attribute: "show-value" })
546
+ s([
547
+ r({ type: Boolean, attribute: "show-value" })
544
548
  ], i.prototype, "showValue", 2);
545
- a([
546
- l({ type: Boolean, attribute: "show-ticks" })
549
+ s([
550
+ r({ type: Boolean, attribute: "show-ticks" })
547
551
  ], i.prototype, "showTicks", 2);
548
- a([
549
- l({ type: String, reflect: !0, attribute: "hx-size" })
552
+ s([
553
+ r({ type: String, reflect: !0, attribute: "hx-size" })
550
554
  ], i.prototype, "size", 2);
551
- a([
552
- l({ type: String, attribute: "aria-valuetext" })
555
+ s([
556
+ r({ type: String, attribute: "aria-valuetext" })
553
557
  ], i.prototype, "valueText", 2);
554
- a([
555
- p()
558
+ s([
559
+ c()
556
560
  ], i.prototype, "_hasLabelSlot", 2);
557
- a([
558
- p()
561
+ s([
562
+ c()
559
563
  ], i.prototype, "_hasMinLabelSlot", 2);
560
- a([
561
- p()
564
+ s([
565
+ c()
562
566
  ], i.prototype, "_hasMaxLabelSlot", 2);
563
- a([
564
- p()
567
+ s([
568
+ c()
565
569
  ], i.prototype, "_hasHelpSlot", 2);
566
- a([
570
+ s([
567
571
  v(".slider__input")
568
572
  ], i.prototype, "_input", 2);
569
- i = a([
573
+ i = s([
570
574
  _("hx-slider")
571
575
  ], i);
572
576
  export {
573
577
  i as H
574
578
  };
575
- //# sourceMappingURL=hx-slider-DFHuzF3N.js.map
579
+ //# sourceMappingURL=hx-slider-ydBamYhd.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hx-slider-ydBamYhd.js","sources":["../../src/components/hx-slider/hx-slider.styles.ts","../../src/components/hx-slider/hx-slider.ts"],"sourcesContent":["import { css } from 'lit';\n\nexport const helixSliderStyles = css`\n :host {\n display: block;\n }\n\n :host([disabled]) {\n opacity: var(--hx-opacity-disabled, 0.5);\n pointer-events: none;\n }\n\n * {\n box-sizing: border-box;\n }\n\n /* ─── Container ─── */\n\n .slider {\n display: flex;\n flex-direction: column;\n gap: var(--hx-space-1, 0.25rem);\n font-family: var(--hx-slider-font-family, var(--hx-font-family-sans, sans-serif));\n }\n\n /* ─── Label Row ─── */\n\n .slider__label-row {\n display: flex;\n align-items: baseline;\n justify-content: space-between;\n gap: var(--hx-space-2, 0.5rem);\n }\n\n .slider__label {\n font-size: var(--hx-font-size-sm, 0.875rem);\n font-weight: var(--hx-font-weight-medium, 500);\n color: var(--hx-slider-label-color, var(--hx-color-text-strong, #202b39));\n line-height: var(--hx-line-height-normal, 1.5);\n }\n\n .slider__value-display {\n font-size: var(--hx-font-size-sm, 0.875rem);\n font-weight: var(--hx-font-weight-medium, 500);\n color: var(--hx-slider-value-color, var(--hx-color-text-secondary, #313e4b));\n line-height: var(--hx-line-height-normal, 1.5);\n font-variant-numeric: tabular-nums;\n min-width: var(--hx-size-8, 2rem);\n text-align: end;\n }\n\n /* ─── Track Container ─── */\n\n .slider__track-container {\n position: relative;\n width: 100%;\n }\n\n .slider__track {\n position: relative;\n width: 100%;\n border-radius: var(--hx-border-radius-full, 9999px);\n background-color: var(--hx-slider-track-bg, var(--hx-color-border-default, #d6dbd5));\n overflow: visible;\n }\n\n /* ─── Size: sm ─── */\n\n .slider--sm .slider__track {\n height: var(--hx-slider-track-height-sm, var(--hx-size-1, 0.25rem));\n }\n\n .slider--sm .slider__input {\n height: var(--hx-slider-track-height-sm, var(--hx-size-1, 0.25rem));\n }\n\n /* ─── Size: md ─── */\n\n .slider--md .slider__track {\n height: var(--hx-slider-track-height-md, var(--hx-size-1-5, 0.375rem));\n }\n\n .slider--md .slider__input {\n height: var(--hx-slider-track-height-md, var(--hx-size-1-5, 0.375rem));\n }\n\n /* ─── Size: lg ─── */\n\n .slider--lg .slider__track {\n height: var(--hx-slider-track-height-lg, var(--hx-space-2, 0.5rem));\n }\n\n .slider--lg .slider__input {\n height: var(--hx-slider-track-height-lg, var(--hx-space-2, 0.5rem));\n }\n\n /* ─── Fill ─── */\n\n .slider__fill {\n position: absolute;\n top: 0;\n left: 0;\n height: 100%;\n width: 100%;\n border-radius: var(--hx-border-radius-full, 9999px);\n background-color: var(--hx-slider-fill-bg, var(--hx-color-primary-500, #429797));\n pointer-events: none;\n transform-origin: left center;\n transform: scaleX(var(--_fill-ratio, 0));\n transition: transform var(--hx-transition-fast, 150ms ease);\n }\n\n /* Suppress fill animation on initial render — only animate on user interaction */\n :host(:not([data-ready])) .slider__fill {\n transition: none;\n }\n\n @media (prefers-reduced-motion: reduce) {\n .slider__fill {\n transition: none;\n }\n }\n\n /* ─── Native Range Input ─── */\n\n .slider__input {\n position: absolute;\n top: 50%;\n left: 0;\n transform: translateY(-50%);\n width: 100%;\n margin: 0;\n padding: 0;\n opacity: 0;\n cursor: pointer;\n -webkit-appearance: none;\n appearance: none;\n background: transparent;\n border: none;\n outline: none;\n /* Expand the hit area so the thumb meets WCAG 2.5.8 touch target (44px).\n The input's total height = track height + 2 * padding-block. With 0.75rem\n (~12px) padding on each side and a track of ~6px, the total target area is\n ~30px. We increase to 1rem (~16px) per side for a ~38px minimum, supplemented\n by the visual thumb size. */\n padding-block: var(--hx-slider-input-padding-block, 1rem);\n min-height: var(--hx-touch-target-min, 2.75rem);\n }\n\n /* In forced-color mode, restore native outline so the input remains focusable */\n @media (forced-colors: active) {\n .slider__input {\n outline: revert;\n opacity: 1;\n }\n .slider__input:focus-visible {\n outline: 2px solid ButtonText;\n }\n }\n\n .slider__input:disabled {\n cursor: not-allowed;\n }\n\n /* ─── Thumb (visual, :before on a wrapper or via ::after on track) ─── */\n /*\n * The native thumb is hidden (opacity 0 on the input). We render a visible\n * thumb element positioned by --fill-pct (a raw 0–100 number set in JS).\n *\n * Correct alignment formula keeps the thumb centered within the track at\n * both extremes, preventing the left/right halves from clipping outside:\n * left = fillPct% * (1 – thumbSize/100%) + thumbSize * (1 – fillPct/100)\n * Simplified: left = calc(var(--fill-pct,0)*1% + var(--_thumb-size)*(1 - var(--fill-pct,0)/100))\n * Combined with translate(-50%,-50%) this places the thumb center correctly\n * at every position from min to max.\n */\n\n .slider__thumb-visual {\n position: absolute;\n top: 50%;\n /* Corrected position: thumb stays within track at all fill values */\n left: calc(var(--fill-pct, 0) * 1% + var(--_thumb-size, 1rem) * (1 - var(--fill-pct, 0) / 100));\n transform: translate(-50%, -50%);\n border-radius: var(--hx-border-radius-full, 9999px);\n background-color: var(--hx-slider-thumb-bg, var(--hx-color-surface-default, #ffffff));\n border: var(--hx-slider-thumb-border-width, 2px) solid\n var(--hx-slider-thumb-border-color, var(--hx-color-primary-500, #429797));\n box-shadow: var(--hx-slider-thumb-shadow, var(--hx-shadow-sm, 0 1px 2px 0 rgb(0 0 0 / 0.05)));\n pointer-events: none;\n transition:\n box-shadow var(--hx-transition-fast, 150ms ease),\n transform var(--hx-transition-fast, 150ms ease);\n }\n\n @media (prefers-reduced-motion: reduce) {\n .slider__thumb-visual {\n transition: none;\n }\n }\n\n .slider__input:focus-visible ~ .slider__thumb-visual {\n box-shadow:\n 0 0 0 var(--hx-focus-ring-width, 2px)\n var(\n --hx-slider-focus-ring-color,\n var(--hx-focus-ring-color, var(--hx-color-primary-400, #6ab1b1))\n ),\n var(--hx-slider-thumb-shadow, var(--hx-shadow-sm, 0 1px 2px 0 rgb(0 0 0 / 0.05)));\n }\n\n /* ─── Thumb sizes ─── */\n\n .slider--sm .slider__thumb-visual {\n --_thumb-size: var(--hx-slider-thumb-size-sm, var(--hx-size-3, 0.75rem));\n width: var(--_thumb-size);\n height: var(--_thumb-size);\n }\n\n .slider--md .slider__thumb-visual {\n --_thumb-size: var(--hx-slider-thumb-size-md, var(--hx-size-4, 1rem));\n width: var(--_thumb-size);\n height: var(--_thumb-size);\n }\n\n .slider--lg .slider__thumb-visual {\n --_thumb-size: var(--hx-slider-thumb-size-lg, var(--hx-size-5, 1.25rem));\n width: var(--_thumb-size);\n height: var(--_thumb-size);\n }\n\n /* ─── Forced colors (Windows High Contrast) ─── */\n @media (forced-colors: active) {\n .slider__fill {\n background-color: Highlight;\n }\n .slider__track {\n background-color: ButtonFace;\n border: 1px solid ButtonText;\n }\n .slider__thumb-visual {\n background-color: ButtonText;\n border-color: ButtonText;\n }\n .slider__input:focus-visible ~ .slider__thumb-visual {\n outline: 2px solid Highlight;\n }\n }\n\n /* ─── Ticks ─── */\n\n .slider__ticks {\n position: relative;\n width: 100%;\n height: var(--hx-space-2, 0.5rem);\n margin-top: var(--hx-space-1, 0.25rem);\n }\n\n .slider__tick {\n position: absolute;\n top: 0;\n width: var(--hx-border-width-thin, 1px);\n height: 100%;\n background-color: var(--hx-slider-tick-color, var(--hx-color-border-strong, #8e9c98));\n transform: translateX(-50%);\n }\n\n /* ─── Range Labels ─── */\n\n .slider__range-labels {\n display: flex;\n justify-content: space-between;\n font-size: var(--hx-font-size-xs, 0.75rem);\n color: var(--hx-slider-range-label-color, var(--hx-color-text-muted, #4a5362));\n line-height: var(--hx-line-height-normal, 1.5);\n margin-top: var(--hx-space-0-5, 0.125rem);\n }\n\n /* ─── Help Text ─── */\n\n .slider__help-text {\n font-size: var(--hx-font-size-xs, 0.75rem);\n color: var(--hx-slider-help-text-color, var(--hx-color-text-muted, #4a5362));\n line-height: var(--hx-line-height-normal, 1.5);\n }\n\n /* ─── Disabled state ─── */\n\n .slider--disabled .slider__fill {\n background-color: var(--hx-slider-disabled-fill-bg, var(--hx-color-border-strong, #8e9c98));\n }\n\n .slider--disabled .slider__thumb-visual {\n border-color: var(\n --hx-slider-disabled-thumb-border-color,\n var(--hx-color-border-strong, #8e9c98)\n );\n }\n`;\n","import { TemplateResult, html, nothing, type PropertyValues } from 'lit';\nimport '../../utilities/document-token-adoption.js';\nimport { customElement, property, query, state } from 'lit/decorators.js';\nimport { classMap } from 'lit/directives/class-map.js';\nimport { ifDefined } from 'lit/directives/if-defined.js';\nimport { live } from 'lit/directives/live.js';\nimport { styleMap } from 'lit/directives/style-map.js';\nimport { HelixElement, createIdCounter } from '../../base/index.js';\nimport { FormMixin } from '../../mixins/FormMixin.js';\nimport { helixSliderStyles } from './hx-slider.styles.js';\nimport { forcedColorsInteractive } from '../../styles/forced-colors.js';\nimport { devWarn } from '../../utils/dev-warn.js';\n\nconst _nextSliderId = createIdCounter('hx-slider');\n\n/** Detail for hx-input and hx-change events dispatched by hx-slider. */\nexport interface HxSliderDetail {\n value: number;\n}\n\n/**\n * A range slider component for selecting a numeric value within a min/max boundary.\n * Supports tick marks, value display, range labels, and native form participation\n * via ElementInternals.\n *\n * The native `<input type=\"range\">` receives `role=\"slider\"` with `aria-valuenow`,\n * `aria-valuemin`, and `aria-valuemax`. Label association uses `aria-labelledby`\n * when a label is present, or `aria-label` as a fallback. Help text is linked via\n * `aria-describedby`. Keyboard navigation follows the native range behavior:\n * Arrow keys increment/decrement by step, Home jumps to min, End jumps to max.\n *\n * @summary Form-associated range slider with label, ticks, and value display.\n *\n * @tag hx-slider\n *\n * @slot label - Custom label content (overrides the label property).\n * @slot help-text - Custom help text content (overrides the helpText property).\n * @slot min-label - Label rendered at the minimum end of the slider.\n * @slot max-label - Label rendered at the maximum end of the slider.\n *\n * @fires {CustomEvent<{value: number}>} hx-input - Dispatched continuously while the user drags.\n * @fires {CustomEvent<{value: number}>} hx-change - Dispatched when the user releases the thumb.\n *\n * @csspart slider - The outer container element.\n * @csspart track - The track background element.\n * @csspart fill - The filled portion of the track showing progress.\n * @csspart thumb - The draggable thumb overlay element.\n * @csspart label - The label element.\n * @csspart value-display - The element displaying the current numeric value.\n * @csspart tick - Each individual tick mark element.\n * @csspart help-text - The help text element displayed below the slider.\n *\n * @cssprop [--hx-slider-track-bg=var(--hx-color-neutral-200)] - Track background color.\n * @cssprop [--hx-slider-fill-bg=var(--hx-color-primary-500)] - Fill/progress color.\n * @cssprop [--hx-slider-thumb-bg=var(--hx-color-neutral-0)] - Thumb background color.\n * @cssprop [--hx-slider-thumb-border-color=var(--hx-color-primary-500)] - Thumb border color.\n * @cssprop [--hx-slider-thumb-border-width=2px] - Thumb border width.\n * @cssprop [--hx-slider-thumb-shadow=var(--hx-shadow-sm)] - Thumb box shadow.\n * @cssprop [--hx-slider-focus-ring-color=var(--hx-focus-ring-color)] - Focus ring color.\n * @cssprop [--hx-slider-label-color=var(--hx-color-neutral-700)] - Label text color.\n * @cssprop [--hx-slider-value-color=var(--hx-color-neutral-600)] - Value display text color.\n * @cssprop [--hx-slider-tick-color=var(--hx-color-neutral-400)] - Tick mark color.\n * @cssprop [--hx-slider-range-label-color=var(--hx-color-neutral-500)] - Range label text color.\n * @cssprop [--hx-slider-help-text-color=var(--hx-color-neutral-500)] - Help text color.\n * @cssprop [--hx-opacity-disabled] - Opacity.\n * @cssprop [--hx-space-1] - Spacing token.\n * @cssprop [--hx-slider-font-family=var(--hx-font-family-sans)] - CSS custom property.\n * @cssprop [--hx-font-family-sans] - Font family.\n * @cssprop [--hx-space-2] - Spacing token.\n * @cssprop [--hx-font-size-sm] - Font size.\n * @cssprop [--hx-font-weight-medium] - Font weight.\n * @cssprop [--hx-color-neutral-700] - Color.\n * @cssprop [--hx-line-height-normal] - Line height.\n * @cssprop [--hx-color-neutral-600] - Color.\n * @cssprop [--hx-size-8] - Size token.\n * @cssprop [--hx-border-radius-full] - CSS custom property.\n * @cssprop [--hx-color-neutral-200] - Color.\n * @cssprop [--hx-slider-track-height-sm=var(--hx-size-1)] - Height.\n * @cssprop [--hx-size-1] - Size token.\n * @cssprop [--hx-slider-track-height-md=var(--hx-size-1-5)] - Height.\n * @cssprop [--hx-size-1-5] - Size token.\n * @cssprop [--hx-slider-track-height-lg=var(--hx-space-2)] - Height.\n * @cssprop [--hx-color-primary-500] - Color.\n * @cssprop [--hx-transition-fast] - Transition timing.\n * @cssprop [--hx-slider-input-padding-block=1rem] - Padding.\n * @cssprop [--hx-touch-target-min] - Minimum touch target size.\n * @cssprop [--hx-color-neutral-0] - Color.\n * @cssprop [--hx-shadow-sm] - Box shadow.\n * @cssprop [--hx-focus-ring-width] - Width.\n * @cssprop [--hx-focus-ring-color] - Color.\n * @cssprop [--hx-color-primary-400] - Color.\n * @cssprop [--hx-slider-thumb-size-sm=var(--hx-size-3)] - CSS custom property.\n * @cssprop [--hx-size-3] - Size token.\n * @cssprop [--hx-slider-thumb-size-md=var(--hx-size-4)] - CSS custom property.\n * @cssprop [--hx-size-4] - Size token.\n * @cssprop [--hx-slider-thumb-size-lg=var(--hx-size-5)] - CSS custom property.\n * @cssprop [--hx-size-5] - Size token.\n * @cssprop [--hx-border-width-thin] - Width.\n * @cssprop [--hx-color-neutral-400] - Color.\n * @cssprop [--hx-font-size-xs] - Font size.\n * @cssprop [--hx-color-neutral-500] - Color.\n * @cssprop [--hx-space-0-5] - Spacing token.\n */\n@customElement('hx-slider')\nexport class HelixSlider extends FormMixin(HelixElement) {\n static override styles = [helixSliderStyles, forcedColorsInteractive];\n\n // ─── Form Association ───\n\n /** @internal */\n static override formAssociated = true;\n\n // ─── Properties ───\n\n /**\n * The name submitted with the form.\n * @attr name\n */\n @property({ type: String, reflect: true })\n name = '';\n\n /**\n * The current numeric value of the slider.\n * @attr value\n */\n @property({ type: Number, reflect: true })\n value = 0;\n\n /**\n * The minimum allowed value.\n * @attr min\n */\n @property({ type: Number })\n min = 0;\n\n /**\n * The maximum allowed value.\n * @attr max\n */\n @property({ type: Number })\n max = 100;\n\n /**\n * The stepping interval between values.\n * @attr step\n */\n @property({ type: Number })\n step = 1;\n\n /**\n * Whether the slider is disabled.\n * @attr disabled\n */\n @property({ type: Boolean, reflect: true })\n disabled = false;\n\n /**\n * The visible label text for the slider.\n * @attr label\n */\n @property({ type: String })\n label = '';\n\n /**\n * Help text displayed below the slider for guidance.\n * @attr help-text\n */\n @property({ type: String, attribute: 'help-text' })\n helpText = '';\n\n /**\n * When true, the current value is shown next to the label.\n * @attr show-value\n */\n @property({ type: Boolean, attribute: 'show-value' })\n showValue = false;\n\n /**\n * When true, tick marks are rendered at each step interval.\n * @attr show-ticks\n */\n @property({ type: Boolean, attribute: 'show-ticks' })\n showTicks = false;\n\n /**\n * The size variant of the slider.\n * @attr hx-size\n */\n @property({ type: String, reflect: true, attribute: 'hx-size' })\n size: 'sm' | 'md' | 'lg' = 'md';\n\n /**\n * Human-readable text alternative for the current value, announced by screen readers\n * instead of the numeric value. For example, on a pain scale: \"7 — Moderate-Severe\".\n * @attr aria-valuetext\n */\n @property({ type: String, attribute: 'aria-valuetext' })\n valueText = '';\n\n // ─── Internal State ───\n\n /** Whether the label slot has assigned content. */\n /** @internal */\n @state() private _hasLabelSlot = false;\n /** Whether the min-label slot has assigned content. */\n /** @internal */\n @state() private _hasMinLabelSlot = false;\n /** Whether the max-label slot has assigned content. */\n /** @internal */\n @state() private _hasMaxLabelSlot = false;\n /** Whether the help slot has assigned content. */\n /** @internal */\n @state() private _hasHelpSlot = false;\n\n // ─── Internal References ───\n\n /**\n * Reference to the native range `<input>` inside shadow DOM.\n * @internal\n */\n @query('.slider__input')\n private _input: HTMLInputElement | undefined;\n\n // ─── Unique IDs ───\n\n /** Unique ID for the native range input element. */\n /** @internal */\n private readonly _sliderId = _nextSliderId();\n /** Unique ID for the label element, derived from _sliderId. */\n /** @internal */\n private readonly _labelId = `${this._sliderId}-label`;\n /** Unique ID for the help text element, derived from _sliderId. */\n /** @internal */\n private readonly _helpId = `${this._sliderId}-help`;\n\n /** Stored default value for form reset (captured in firstUpdated). */\n /** @internal */\n private _defaultValue: number | null = null;\n\n // ─── Computed Values ───\n\n /** @internal */\n private _clamp(v: number): number {\n return Math.min(Math.max(v, this.min), this.max);\n }\n\n /** @internal */\n private _fillPercent(): number {\n const clamped = this._clamp(this.value);\n const range = this.max - this.min;\n if (range === 0) return 0;\n return ((clamped - this.min) / range) * 100;\n }\n\n // Cached tick array — recomputed only when showTicks, min, max, or step change.\n // Avoids redundant array allocation on every render during continuous drag updates.\n /** @internal */\n private _cachedTicks: number[] = [];\n\n /** @internal */\n private _computeTicks(): number[] {\n if (!this.showTicks) return [];\n const ticks: number[] = [];\n const range = this.max - this.min;\n if (range <= 0 || this.step <= 0) return ticks;\n const count = Math.round(range / this.step);\n for (let i = 0; i <= count; i++) {\n ticks.push((i / count) * 100);\n }\n return ticks;\n }\n\n // ─── Lifecycle ───\n\n override willUpdate(changedProperties: PropertyValues<this>): void {\n super.willUpdate(changedProperties);\n if (\n changedProperties.has('showTicks') ||\n changedProperties.has('min') ||\n changedProperties.has('max') ||\n changedProperties.has('step')\n ) {\n this._cachedTicks = this._computeTicks();\n }\n }\n\n override firstUpdated(): void {\n // Capture the initial value for form reset (before any user interaction)\n this._defaultValue = this.value;\n // Enable fill transition after initial render to suppress animation on mount\n requestAnimationFrame(() => this.setAttribute('data-ready', ''));\n // WCAG 4.1.2: warn when no accessible name is available for the range input\n if (!this.label && !this._hasLabelSlot) {\n devWarn(\n 'hx-slider',\n 'No accessible label provided. Set the `label` attribute or use the label slot. An unlabeled slider violates WCAG 2.1 AA (4.1.2 Name, Role, Value).',\n );\n }\n }\n\n override updated(changedProperties: PropertyValues<this>): void {\n super.updated(changedProperties);\n // Guard: min must be less than max\n if (changedProperties.has('min') || changedProperties.has('max')) {\n if (this.min >= this.max) {\n devWarn(\n 'hx-slider',\n `Invalid configuration: min (${this.min}) must be less than max (${this.max}). Slider behavior is undefined when min >= max.`,\n );\n }\n }\n // Clamp value to [min, max] after any relevant property change\n if (\n changedProperties.has('value') ||\n changedProperties.has('min') ||\n changedProperties.has('max')\n ) {\n const clamped = this._clamp(this.value);\n if (clamped !== this.value) {\n this.value = clamped;\n return;\n }\n this._internals.setFormValue(String(this.value));\n } else if (changedProperties.has('name')) {\n this._internals.setFormValue(String(this.value));\n }\n // Reflect aria-disabled on host for AT traversal\n if (changedProperties.has('disabled')) {\n if (this.disabled) {\n this.setAttribute('aria-disabled', 'true');\n } else {\n this.removeAttribute('aria-disabled');\n }\n }\n }\n\n // ─── Form Integration ───\n\n /** @internal */\n protected override _onFormReset(): void {\n const resetTo = this._clamp(this._defaultValue ?? this.min);\n this.value = resetTo;\n this._internals.setFormValue(String(resetTo));\n this._resetInteractionState();\n }\n\n /** @internal */\n protected override _onFormStateRestore(\n state: File | string | FormData | null,\n _mode: 'restore' | 'autocomplete',\n ): void {\n if (typeof state !== 'string' || state === null) return;\n const parsed = parseFloat(state);\n if (!isNaN(parsed)) {\n this.value = this._clamp(parsed);\n }\n }\n\n /** @internal */\n protected override _onFormDisabled(disabled: boolean): void {\n this.disabled = disabled;\n }\n\n // ─── Public Methods ───\n\n /** Moves focus to the native range input. */\n override focus(options?: FocusOptions): void {\n this._input?.focus(options);\n }\n\n // ─── Slot Handlers ───\n\n /** @internal */\n private _handleLabelSlotChange(e: Event): void {\n const slot = e.target as HTMLSlotElement;\n this._hasLabelSlot = slot.assignedNodes({ flatten: true }).length > 0;\n }\n\n /** @internal */\n private _handleHelpSlotChange(e: Event): void {\n const slot = e.target as HTMLSlotElement;\n this._hasHelpSlot = slot.assignedNodes({ flatten: true }).length > 0;\n }\n\n /** @internal */\n private _handleMinLabelSlotChange(e: Event): void {\n const slot = e.target as HTMLSlotElement;\n this._hasMinLabelSlot = slot.assignedNodes({ flatten: true }).length > 0;\n }\n\n /** @internal */\n private _handleMaxLabelSlotChange(e: Event): void {\n const slot = e.target as HTMLSlotElement;\n this._hasMaxLabelSlot = slot.assignedNodes({ flatten: true }).length > 0;\n }\n\n // ─── Event Handling ───\n\n /** @internal */\n private _handleInput(e: Event): void {\n if (this.disabled) return;\n const target = e.target as HTMLInputElement;\n this.value = parseFloat(target.value);\n this._internals.setFormValue(String(this.value));\n this._handleInteractionInput();\n\n /**\n * Dispatched continuously while the user drags the thumb.\n * @event hx-input\n */\n this.dispatchEvent(\n new CustomEvent<{ value: number }>('hx-input', {\n bubbles: true,\n composed: true,\n detail: { value: this.value },\n }),\n );\n }\n\n /** @internal */\n private _handleChange(e: Event): void {\n if (this.disabled) return;\n const target = e.target as HTMLInputElement;\n this.value = parseFloat(target.value);\n this._internals.setFormValue(String(this.value));\n this._handleInteractionBlur();\n\n /**\n * Dispatched when the user releases the thumb after dragging.\n * @event hx-change\n */\n this.dispatchEvent(\n new CustomEvent<{ value: number }>('hx-change', {\n bubbles: true,\n composed: true,\n detail: { value: this.value },\n }),\n );\n }\n\n // ─── Render ───\n\n override render(): TemplateResult {\n const fillPct = this._fillPercent();\n const ticks = this._cachedTicks;\n const hasLabel = !!this.label || this._hasLabelSlot;\n const showRangeLabels = this._hasMinLabelSlot || this._hasMaxLabelSlot;\n\n const containerClasses = {\n slider: true,\n [`slider--${this.size}`]: true,\n 'slider--disabled': this.disabled,\n 'slider--has-ticks': this.showTicks,\n };\n\n const describedBy =\n [this.helpText || this._hasHelpSlot ? this._helpId : null].filter(Boolean).join(' ') ||\n undefined;\n\n return html`\n <div part=\"slider\" class=${classMap(containerClasses)}>\n <!-- Label row -->\n <div class=\"slider__label-row\">\n ${hasLabel\n ? html`<label\n part=\"label\"\n class=\"slider__label\"\n id=${this._labelId}\n for=${this._sliderId}\n >\n <slot name=\"label\" @slotchange=${this._handleLabelSlotChange}>${this.label}</slot>\n </label>`\n : html`<slot name=\"label\" @slotchange=${this._handleLabelSlotChange}></slot>`}\n ${this.showValue\n ? html`<span part=\"value-display\" class=\"slider__value-display\"> ${this.value} </span>`\n : nothing}\n </div>\n\n <!-- Track -->\n <div class=\"slider__track-container\">\n <div part=\"track\" class=\"slider__track\">\n <div\n part=\"fill\"\n class=\"slider__fill\"\n style=${styleMap({ '--_fill-ratio': String(fillPct / 100) })}\n ></div>\n\n <input\n class=\"slider__input\"\n id=${this._sliderId}\n type=\"range\"\n .value=${live(String(this.value))}\n min=${this.min}\n max=${this.max}\n step=${this.step}\n ?disabled=${this.disabled}\n name=${ifDefined(this.name || undefined)}\n aria-labelledby=${ifDefined(hasLabel ? this._labelId : undefined)}\n aria-label=${ifDefined(!hasLabel ? 'Slider' : undefined)}\n aria-valuetext=${ifDefined(this.valueText || undefined)}\n aria-describedby=${ifDefined(describedBy)}\n @input=${this._handleInput}\n @change=${this._handleChange}\n />\n\n <!-- Visual thumb positioned by fill percentage (--fill-pct drives CSS calc) -->\n <span\n part=\"thumb\"\n class=\"slider__thumb-visual\"\n style=${styleMap({ '--fill-pct': String(fillPct) })}\n aria-hidden=\"true\"\n ></span>\n </div>\n </div>\n\n <!-- Tick marks -->\n ${this.showTicks && ticks.length > 0\n ? html`<div class=\"slider__ticks\">\n ${ticks.map(\n (pct) =>\n html`<span\n part=\"tick\"\n class=\"slider__tick\"\n style=${styleMap({ left: `${pct}%` })}\n ></span>`,\n )}\n </div>`\n : nothing}\n\n <!-- Range labels -->\n ${showRangeLabels\n ? html`<div class=\"slider__range-labels\">\n <slot name=\"min-label\" @slotchange=${this._handleMinLabelSlotChange}></slot>\n <slot name=\"max-label\" @slotchange=${this._handleMaxLabelSlotChange}></slot>\n </div>`\n : html`\n <!-- Always observe slot changes even when not rendered -->\n <slot name=\"min-label\" hidden @slotchange=${this._handleMinLabelSlotChange}></slot>\n <slot name=\"max-label\" hidden @slotchange=${this._handleMaxLabelSlotChange}></slot>\n `}\n\n <!-- Help text -->\n <!-- WCAG 1.3.1: wrap slot in a persistent container so _helpId stays stable\n regardless of whether help content comes from the slot or the property. -->\n <div id=${this._helpId}>\n <slot name=\"help-text\" @slotchange=${this._handleHelpSlotChange}>\n ${this.helpText\n ? html`<div part=\"help-text\" class=\"slider__help-text\">${this.helpText}</div>`\n : nothing}\n </slot>\n </div>\n </div>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'hx-slider': HelixSlider;\n }\n}\n"],"names":["helixSliderStyles","css","_nextSliderId","createIdCounter","HelixSlider","FormMixin","HelixElement","v","clamped","range","ticks","count","i","changedProperties","devWarn","resetTo","state","_mode","parsed","disabled","options","_a","slot","target","fillPct","hasLabel","showRangeLabels","containerClasses","describedBy","html","classMap","nothing","styleMap","live","ifDefined","pct","forcedColorsInteractive","__decorateClass","property","query","customElement"],"mappings":";;;;;;;;;;;AAEO,MAAMA,IAAoBC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;A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"}
@@ -2,8 +2,9 @@ import { css as h, html as f } from "lit";
2
2
  import { property as a, customElement as d } from "lit/decorators.js";
3
3
  import { styleMap as p } from "lit/directives/style-map.js";
4
4
  import { ifDefined as v } from "lit/directives/if-defined.js";
5
- import { H as m } from "./helix-element-BNEYeiys.js";
6
- const u = h`
5
+ import { a as m } from "./forced-colors-CTEDFRGa.js";
6
+ import { H as u } from "./helix-element-BNEYeiys.js";
7
+ const x = h`
7
8
  :host {
8
9
  display: inline-flex;
9
10
  align-items: center;
@@ -92,13 +93,13 @@ const u = h`
92
93
  /* ─── Variant Colors ─── */
93
94
 
94
95
  :host([variant='default']) {
95
- --_spinner-color: var(--hx-spinner-color, var(--hx-color-neutral-600, #475569));
96
- --_spinner-track-color: var(--hx-spinner-track-color, var(--hx-color-neutral-200, #e2e8f0));
96
+ --_spinner-color: var(--hx-spinner-color, var(--hx-color-neutral-600, #4a5362));
97
+ --_spinner-track-color: var(--hx-spinner-track-color, var(--hx-color-neutral-200, #d6dbd5));
97
98
  }
98
99
 
99
100
  :host([variant='primary']) {
100
- --_spinner-color: var(--hx-spinner-color, var(--hx-color-primary-500, #2563eb));
101
- --_spinner-track-color: var(--hx-spinner-track-color, var(--hx-color-primary-100, #dbeafe));
101
+ --_spinner-color: var(--hx-spinner-color, var(--hx-color-primary-500, #429797));
102
+ --_spinner-track-color: var(--hx-spinner-track-color, var(--hx-color-primary-100, #dbf0f0));
102
103
  }
103
104
 
104
105
  :host([variant='inverted']) {
@@ -132,32 +133,32 @@ const u = h`
132
133
  }
133
134
  }
134
135
  `;
135
- var x = Object.defineProperty, _ = Object.getOwnPropertyDescriptor, n = (e, i, s, o) => {
136
- for (var r = o > 1 ? void 0 : o ? _(i, s) : i, l = e.length - 1, c; l >= 0; l--)
137
- (c = e[l]) && (r = (o ? c(i, s, r) : c(r)) || r);
138
- return o && r && x(i, s, r), r;
136
+ var _ = Object.defineProperty, y = Object.getOwnPropertyDescriptor, n = (r, i, s, o) => {
137
+ for (var e = o > 1 ? void 0 : o ? y(i, s) : i, l = r.length - 1, c; l >= 0; l--)
138
+ (c = r[l]) && (e = (o ? c(i, s, e) : c(e)) || e);
139
+ return o && e && _(i, s, e), e;
139
140
  };
140
- let t = class extends m {
141
+ let t = class extends u {
141
142
  constructor() {
142
143
  super(...arguments), this.size = "md", this.variant = "default", this.label = "Loading", this.decorative = !1;
143
144
  }
144
145
  // ─── Lifecycle ───
145
146
  connectedCallback() {
146
147
  super.connectedCallback();
147
- const e = this.getAttribute("size");
148
- e !== null && !this.hasAttribute("hx-size") && (this.size = e);
148
+ const r = this.getAttribute("size");
149
+ r !== null && !this.hasAttribute("hx-size") && (this.size = r);
149
150
  }
150
151
  /** @internal */
151
152
  _isTokenSize() {
152
153
  return this.size === "sm" || this.size === "md" || this.size === "lg";
153
154
  }
154
155
  render() {
155
- const e = !this._isTokenSize() && this.size ? p({ "--_spinner-size": this.size }) : p({}), i = this.decorative ? "presentation" : "status", s = this.decorative ? void 0 : this.label || void 0;
156
+ const r = !this._isTokenSize() && this.size ? p({ "--_spinner-size": this.size }) : p({}), i = this.decorative ? "presentation" : "status", s = this.decorative ? void 0 : this.label || void 0;
156
157
  return f`
157
158
  <div
158
159
  class="spinner"
159
160
  part="base"
160
- style=${e}
161
+ style=${r}
161
162
  role=${i}
162
163
  aria-label=${v(s)}
163
164
  >
@@ -181,7 +182,7 @@ let t = class extends m {
181
182
  `;
182
183
  }
183
184
  };
184
- t.styles = [u];
185
+ t.styles = [x, m];
185
186
  n([
186
187
  a({ type: String, reflect: !0, attribute: "hx-size" })
187
188
  ], t.prototype, "size", 2);
@@ -200,4 +201,4 @@ t = n([
200
201
  export {
201
202
  t as H
202
203
  };
203
- //# sourceMappingURL=hx-spinner-BKjuCdZB.js.map
204
+ //# sourceMappingURL=hx-spinner-DL5AYr16.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hx-spinner-DL5AYr16.js","sources":["../../src/components/hx-spinner/hx-spinner.styles.ts","../../src/components/hx-spinner/hx-spinner.ts"],"sourcesContent":["import { css } from 'lit';\n\nexport const helixSpinnerStyles = css`\n :host {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n }\n\n .spinner {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: var(--_spinner-size);\n height: var(--_spinner-size);\n flex-shrink: 0;\n }\n\n .spinner__svg {\n width: 100%;\n height: 100%;\n animation: hx-spinner-rotate var(--hx-duration-spinner, 750ms) linear infinite;\n }\n\n .spinner__track {\n stroke: var(--_spinner-track-color);\n }\n\n .spinner__arc {\n stroke: var(--_spinner-color);\n /* SVG arc math: viewBox is 24×24, r=10, circumference = 2π × 10 ≈ 62.83.\n stroke-dasharray: 56 creates a visible arc of ~89% of circumference.\n stroke-dashoffset: 14 shifts the arc start to produce the ~75% visible gap aesthetic.\n Adjust both proportionally if r or viewBox dimensions change. */\n stroke-dasharray: 56;\n stroke-dashoffset: 14;\n animation: hx-spinner-dash var(--hx-duration-spinner, 750ms)\n var(--hx-easing-in-out, ease-in-out) infinite;\n transform-origin: center;\n }\n\n @keyframes hx-spinner-rotate {\n to {\n transform: rotate(360deg);\n }\n }\n\n @keyframes hx-spinner-dash {\n 0% {\n stroke-dashoffset: 50;\n }\n 50% {\n stroke-dashoffset: 14;\n }\n 100% {\n stroke-dashoffset: 50;\n }\n }\n\n @media (prefers-reduced-motion: reduce) {\n .spinner__svg {\n animation: none;\n }\n\n .spinner__arc {\n animation: none;\n /* Maintain the static partial arc at full opacity so the loading state remains\n clearly communicated without motion. A faded arc looks broken; full opacity\n alongside the track ring unambiguously signals \"in progress\". */\n stroke-dashoffset: 14;\n opacity: 1;\n }\n }\n\n /* ─── Size Variants ─── */\n\n :host([hx-size='sm']) {\n --_spinner-size: var(--hx-size-4, 1rem);\n }\n\n :host([hx-size='md']) {\n --_spinner-size: var(--hx-size-6, 1.5rem);\n }\n\n :host([hx-size='lg']) {\n --_spinner-size: var(--hx-size-8, 2rem);\n }\n\n /* ─── Variant Colors ─── */\n\n :host([variant='default']) {\n --_spinner-color: var(--hx-spinner-color, var(--hx-color-neutral-600, #4a5362));\n --_spinner-track-color: var(--hx-spinner-track-color, var(--hx-color-neutral-200, #d6dbd5));\n }\n\n :host([variant='primary']) {\n --_spinner-color: var(--hx-spinner-color, var(--hx-color-primary-500, #429797));\n --_spinner-track-color: var(--hx-spinner-track-color, var(--hx-color-primary-100, #dbf0f0));\n }\n\n :host([variant='inverted']) {\n --_spinner-color: var(--hx-spinner-color, var(--hx-color-neutral-0, #ffffff));\n /* Fallback for browsers without color-mix() support (Chrome < 111, Firefox < 113, Safari < 16.2).\n rgba(255, 255, 255, 0.3) approximates the intended 30% white track color. */\n --_spinner-track-color: var(\n --hx-spinner-track-color,\n var(--hx-overlay-white-30, rgba(255, 255, 255, 0.3))\n );\n }\n\n @supports (color: color-mix(in srgb, white 30%, transparent)) {\n :host([variant='inverted']) {\n --_spinner-track-color: var(\n --hx-spinner-track-color,\n color-mix(in srgb, var(--hx-color-neutral-0, #ffffff) 30%, transparent)\n );\n }\n }\n\n /* ─── Forced Colors (Windows High Contrast) ─── */\n\n @media (forced-colors: active) {\n .spinner__track {\n stroke: GrayText;\n }\n\n .spinner__arc {\n stroke: CanvasText;\n }\n }\n`;\n","import { html } from 'lit';\nimport '../../utilities/document-token-adoption.js';\nimport { customElement, property } from 'lit/decorators.js';\nimport { styleMap } from 'lit/directives/style-map.js';\nimport { ifDefined } from 'lit/directives/if-defined.js';\nimport { devWarn } from '../../utils/dev-warn.js';\nimport { HelixElement } from '../../base/index.js';\nimport { helixSpinnerStyles } from './hx-spinner.styles.js';\nimport { forcedColorsSurface } from '../../styles/forced-colors.js';\n\n/**\n * Token size values for the spinner. Use these for standard sizing.\n * The `size` property also accepts any valid CSS size string (e.g. \"3rem\", \"48px\")\n * for custom sizes — the type widens to `string` in that usage.\n */\nexport type SpinnerSize = 'sm' | 'md' | 'lg';\n\n/**\n * A circular loading indicator for inline and overlay loading states.\n * Purely visual — no slots. Announces loading state to screen readers via\n * `role=\"status\"` and an `aria-label` (customizable via the `label` prop).\n *\n * When used alongside visible loading text, set `decorative` to suppress\n * duplicate AT announcements.\n *\n * **WCAG 4.1.2 — `aria-busy` pattern for consumers:**\n * When this spinner indicates that a region of the page is loading, set\n * `aria-busy=\"true\"` on the container element that wraps the loading content\n * and remove it (or set `aria-busy=\"false\"`) once loading completes. This\n * communicates the loading state to assistive technologies at the region level,\n * complementing the spinner's own `role=\"status\"` announcement.\n *\n * ```html\n * <section aria-busy=\"true\" aria-label=\"Patient records\">\n * <hx-spinner label=\"Loading patient records\"></hx-spinner>\n * </section>\n * ```\n *\n * @summary Circular loading indicator component.\n *\n * @tag hx-spinner\n *\n * @csspart base - The SVG spinner element.\n *\n * @cssprop [--hx-spinner-color] - Spinner arc color. Defaults per variant.\n * @cssprop [--hx-spinner-track-color] - Spinner track color. Defaults per variant.\n * @cssprop [--hx-duration-spinner] - Duration of the rotation animation. Defaults to 750ms.\n * @cssprop [--hx-easing-in-out] - CSS custom property.\n * @cssprop [--hx-size-4] - Size token.\n * @cssprop [--hx-size-6] - Size token.\n * @cssprop [--hx-size-8] - Size token.\n * @cssprop [--hx-color-neutral-600] - Color.\n * @cssprop [--hx-color-neutral-200] - Color.\n * @cssprop [--hx-color-primary-500] - Color.\n * @cssprop [--hx-color-primary-100] - Color.\n * @cssprop [--hx-color-neutral-0] - Color.\n * @cssprop [--hx-overlay-white-30] - Overlay color.\n */\n@customElement('hx-spinner')\nexport class HelixSpinner extends HelixElement {\n static override styles = [helixSpinnerStyles, forcedColorsSurface];\n\n /**\n * Size of the spinner. Accepts `SpinnerSize` token values ('sm' | 'md' | 'lg'),\n * or any valid CSS size string (e.g. \"3rem\", \"48px\") for custom dimensions.\n *\n * The type is `SpinnerSize | string` which widens to `string` at the TypeScript\n * level — this is intentional to support CSS size overrides. Use `SpinnerSize`\n * values for standard sizing; custom strings bypass token-based scaling.\n * @attr hx-size\n */\n @property({ type: String, reflect: true, attribute: 'hx-size' })\n size: 'sm' | 'md' | 'lg' | (string & Record<never, never>) = 'md';\n\n /**\n * Visual variant of the spinner.\n * @attr variant\n */\n @property({ type: String, reflect: true })\n variant: 'default' | 'primary' | 'inverted' = 'default';\n\n /**\n * Accessible label announced to screen readers. Defaults to \"Loading\".\n * Reflected as an attribute for Drupal/Twig compatibility.\n * @attr label\n */\n @property({ type: String, reflect: true })\n label = 'Loading';\n\n /**\n * When true, the spinner is decorative and suppresses all ARIA announcements.\n * Use this when the spinner appears alongside visible loading text to prevent\n * duplicate announcements. Sets `role=\"presentation\"` and removes `aria-label`.\n * @attr decorative\n */\n @property({ type: Boolean, reflect: true })\n decorative = false;\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-spinner', 'The \"size\" attribute is deprecated. Use \"hx-size\" instead.');\n this.size = legacySize;\n }\n }\n\n /** @internal */\n private _isTokenSize(): this is { size: SpinnerSize } {\n return this.size === 'sm' || this.size === 'md' || this.size === 'lg';\n }\n\n override render() {\n const customSizeStyle =\n !this._isTokenSize() && this.size ? styleMap({ '--_spinner-size': this.size }) : styleMap({});\n\n // Decorative spinners use role=\"presentation\" to suppress AT announcements.\n // Non-decorative spinners use role=\"status\" with aria-label for accessible naming.\n // Guard against empty label (aria-label=\"\" is a WCAG failure).\n const role = this.decorative ? 'presentation' : 'status';\n const ariaLabel = this.decorative ? undefined : this.label || undefined;\n\n return html`\n <div\n class=\"spinner\"\n part=\"base\"\n style=${customSizeStyle}\n role=${role}\n aria-label=${ifDefined(ariaLabel)}\n >\n <svg\n class=\"spinner__svg\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n aria-hidden=\"true\"\n focusable=\"false\"\n >\n <circle class=\"spinner__track\" cx=\"12\" cy=\"12\" r=\"10\" stroke-width=\"2.5\" fill=\"none\" />\n <path\n class=\"spinner__arc\"\n d=\"M12 2a10 10 0 0 1 10 10\"\n stroke-width=\"2.5\"\n stroke-linecap=\"round\"\n fill=\"none\"\n />\n </svg>\n </div>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'hx-spinner': HelixSpinner;\n }\n}\n"],"names":["helixSpinnerStyles","css","HelixSpinner","HelixElement","legacySize","customSizeStyle","styleMap","role","ariaLabel","html","ifDefined","forcedColorsSurface","__decorateClass","property","customElement"],"mappings":";;;;;;AAEO,MAAMA,IAAqBC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;;ACyD3B,IAAMC,IAAN,cAA2BC,EAAa;AAAA,EAAxC,cAAA;AAAA,UAAA,GAAA,SAAA,GAaL,KAAA,OAA6D,MAO7D,KAAA,UAA8C,WAQ9C,KAAA,QAAQ,WASR,KAAA,aAAa;AAAA,EAAA;AAAA;AAAA,EAIJ,oBAA0B;AACjC,UAAM,kBAAA;AAGN,UAAMC,IAAa,KAAK,aAAa,MAAM;AAC3C,IAAIA,MAAe,QAAQ,CAAC,KAAK,aAAa,SAAS,MAErD,KAAK,OAAOA;AAAA,EAEhB;AAAA;AAAA,EAGQ,eAA8C;AACpD,WAAO,KAAK,SAAS,QAAQ,KAAK,SAAS,QAAQ,KAAK,SAAS;AAAA,EACnE;AAAA,EAES,SAAS;AAChB,UAAMC,IACJ,CAAC,KAAK,aAAA,KAAkB,KAAK,OAAOC,EAAS,EAAE,mBAAmB,KAAK,KAAA,CAAM,IAAIA,EAAS,CAAA,CAAE,GAKxFC,IAAO,KAAK,aAAa,iBAAiB,UAC1CC,IAAY,KAAK,aAAa,SAAY,KAAK,SAAS;AAE9D,WAAOC;AAAA;AAAA;AAAA;AAAA,gBAIKJ,CAAe;AAAA,eAChBE,CAAI;AAAA,qBACEG,EAAUF,CAAS,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAoBvC;AACF;AA9FaN,EACK,SAAS,CAACF,GAAoBW,CAAmB;AAYjEC,EAAA;AAAA,EADCC,EAAS,EAAE,MAAM,QAAQ,SAAS,IAAM,WAAW,WAAW;AAAA,GAZpDX,EAaX,WAAA,QAAA,CAAA;AAOAU,EAAA;AAAA,EADCC,EAAS,EAAE,MAAM,QAAQ,SAAS,IAAM;AAAA,GAnB9BX,EAoBX,WAAA,WAAA,CAAA;AAQAU,EAAA;AAAA,EADCC,EAAS,EAAE,MAAM,QAAQ,SAAS,IAAM;AAAA,GA3B9BX,EA4BX,WAAA,SAAA,CAAA;AASAU,EAAA;AAAA,EADCC,EAAS,EAAE,MAAM,SAAS,SAAS,IAAM;AAAA,GApC/BX,EAqCX,WAAA,cAAA,CAAA;AArCWA,IAANU,EAAA;AAAA,EADNE,EAAc,YAAY;AAAA,GACdZ,CAAA;"}