@helixui/library 1.0.1 → 1.1.2-next.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (699) hide show
  1. package/custom-elements.json +6013 -11864
  2. package/dist/base/helix-element.d.ts +134 -0
  3. package/dist/base/helix-element.d.ts.map +1 -0
  4. package/dist/base/id-counter.d.ts +32 -0
  5. package/dist/base/id-counter.d.ts.map +1 -0
  6. package/dist/base/index.d.ts +4 -0
  7. package/dist/base/index.d.ts.map +1 -0
  8. package/dist/base/styles.d.ts +19 -0
  9. package/dist/base/styles.d.ts.map +1 -0
  10. package/dist/components/hx-accordion/hx-accordion-item.d.ts +10 -0
  11. package/dist/components/hx-accordion/hx-accordion-item.d.ts.map +1 -1
  12. package/dist/components/hx-accordion/hx-accordion.d.ts +7 -1
  13. package/dist/components/hx-accordion/hx-accordion.d.ts.map +1 -1
  14. package/dist/components/hx-accordion/index.js +1 -1
  15. package/dist/components/hx-action-bar/hx-action-bar.d.ts +12 -2
  16. package/dist/components/hx-action-bar/hx-action-bar.d.ts.map +1 -1
  17. package/dist/components/hx-action-bar/index.js +1 -1
  18. package/dist/components/hx-alert/hx-alert.d.ts +31 -3
  19. package/dist/components/hx-alert/hx-alert.d.ts.map +1 -1
  20. package/dist/components/hx-alert/hx-alert.styles.d.ts.map +1 -1
  21. package/dist/components/hx-alert/index.js +1 -1
  22. package/dist/components/hx-avatar/hx-avatar.d.ts +8 -1
  23. package/dist/components/hx-avatar/hx-avatar.d.ts.map +1 -1
  24. package/dist/components/hx-avatar/index.js +1 -1
  25. package/dist/components/hx-badge/hx-badge.d.ts +8 -1
  26. package/dist/components/hx-badge/hx-badge.d.ts.map +1 -1
  27. package/dist/components/hx-badge/hx-badge.styles.d.ts.map +1 -1
  28. package/dist/components/hx-badge/index.js +1 -1
  29. package/dist/components/hx-banner/hx-banner.d.ts +25 -4
  30. package/dist/components/hx-banner/hx-banner.d.ts.map +1 -1
  31. package/dist/components/hx-banner/hx-banner.styles.d.ts.map +1 -1
  32. package/dist/components/hx-banner/index.js +1 -1
  33. package/dist/components/hx-breadcrumb/hx-breadcrumb.d.ts +24 -4
  34. package/dist/components/hx-breadcrumb/hx-breadcrumb.d.ts.map +1 -1
  35. package/dist/components/hx-breadcrumb/index.js +1 -1
  36. package/dist/components/hx-button/hx-button.d.ts +16 -7
  37. package/dist/components/hx-button/hx-button.d.ts.map +1 -1
  38. package/dist/components/hx-button/hx-button.styles.d.ts.map +1 -1
  39. package/dist/components/hx-button/index.js +1 -1
  40. package/dist/components/hx-button-group/hx-button-group.d.ts +3 -6
  41. package/dist/components/hx-button-group/hx-button-group.d.ts.map +1 -1
  42. package/dist/components/hx-button-group/index.js +1 -1
  43. package/dist/components/hx-card/hx-card.d.ts +14 -7
  44. package/dist/components/hx-card/hx-card.d.ts.map +1 -1
  45. package/dist/components/hx-card/index.js +1 -1
  46. package/dist/components/hx-carousel/hx-carousel-item.d.ts +2 -0
  47. package/dist/components/hx-carousel/hx-carousel-item.d.ts.map +1 -1
  48. package/dist/components/hx-carousel/hx-carousel-item.styles.d.ts +2 -0
  49. package/dist/components/hx-carousel/hx-carousel-item.styles.d.ts.map +1 -0
  50. package/dist/components/hx-carousel/hx-carousel.d.ts +29 -2
  51. package/dist/components/hx-carousel/hx-carousel.d.ts.map +1 -1
  52. package/dist/components/hx-carousel/index.js +1 -1
  53. package/dist/components/hx-checkbox/hx-checkbox.d.ts +34 -18
  54. package/dist/components/hx-checkbox/hx-checkbox.d.ts.map +1 -1
  55. package/dist/components/hx-checkbox/hx-checkbox.styles.d.ts.map +1 -1
  56. package/dist/components/hx-checkbox/index.js +1 -1
  57. package/dist/components/hx-checkbox-group/hx-checkbox-group.d.ts +27 -6
  58. package/dist/components/hx-checkbox-group/hx-checkbox-group.d.ts.map +1 -1
  59. package/dist/components/hx-checkbox-group/index.js +1 -1
  60. package/dist/components/hx-clinical-status/hx-clinical-status.d.ts +126 -0
  61. package/dist/components/hx-clinical-status/hx-clinical-status.d.ts.map +1 -0
  62. package/dist/components/hx-clinical-status/hx-clinical-status.styles.d.ts +2 -0
  63. package/dist/components/hx-clinical-status/hx-clinical-status.styles.d.ts.map +1 -0
  64. package/dist/components/hx-clinical-status/index.d.ts +3 -0
  65. package/dist/components/hx-clinical-status/index.d.ts.map +1 -0
  66. package/dist/components/hx-clinical-status/index.js +5 -0
  67. package/dist/components/hx-clinical-status/index.js.map +1 -0
  68. package/dist/components/hx-code-snippet/hx-code-snippet.d.ts +10 -0
  69. package/dist/components/hx-code-snippet/hx-code-snippet.d.ts.map +1 -1
  70. package/dist/components/hx-code-snippet/hx-code-snippet.styles.d.ts.map +1 -1
  71. package/dist/components/hx-code-snippet/index.js +1 -1
  72. package/dist/components/hx-color-picker/color-utils.d.ts +27 -0
  73. package/dist/components/hx-color-picker/color-utils.d.ts.map +1 -0
  74. package/dist/components/hx-color-picker/hx-color-picker.d.ts +84 -4
  75. package/dist/components/hx-color-picker/hx-color-picker.d.ts.map +1 -1
  76. package/dist/components/hx-color-picker/hx-color-picker.styles.d.ts.map +1 -1
  77. package/dist/components/hx-color-picker/index.js +1 -1
  78. package/dist/components/hx-combobox/hx-combobox.d.ts +41 -6
  79. package/dist/components/hx-combobox/hx-combobox.d.ts.map +1 -1
  80. package/dist/components/hx-combobox/hx-combobox.styles.d.ts.map +1 -1
  81. package/dist/components/hx-combobox/index.js +1 -1
  82. package/dist/components/hx-container/index.js +1 -1
  83. package/dist/components/hx-copy-button/hx-copy-button.d.ts +17 -1
  84. package/dist/components/hx-copy-button/hx-copy-button.d.ts.map +1 -1
  85. package/dist/components/hx-copy-button/index.js +1 -1
  86. package/dist/components/hx-counter/hx-counter.d.ts +32 -6
  87. package/dist/components/hx-counter/hx-counter.d.ts.map +1 -1
  88. package/dist/components/hx-counter/hx-counter.styles.d.ts.map +1 -1
  89. package/dist/components/hx-counter/index.js +1 -1
  90. package/dist/components/hx-data-table/hx-data-table.d.ts +27 -2
  91. package/dist/components/hx-data-table/hx-data-table.d.ts.map +1 -1
  92. package/dist/components/hx-data-table/hx-data-table.styles.d.ts.map +1 -1
  93. package/dist/components/hx-data-table/index.js +1 -1
  94. package/dist/components/hx-date-picker/hx-date-picker.d.ts +101 -5
  95. package/dist/components/hx-date-picker/hx-date-picker.d.ts.map +1 -1
  96. package/dist/components/hx-date-picker/hx-date-picker.styles.d.ts.map +1 -1
  97. package/dist/components/hx-date-picker/index.js +1 -1
  98. package/dist/components/hx-dialog/hx-dialog.d.ts +34 -4
  99. package/dist/components/hx-dialog/hx-dialog.d.ts.map +1 -1
  100. package/dist/components/hx-dialog/hx-dialog.styles.d.ts.map +1 -1
  101. package/dist/components/hx-dialog/index.js +1 -1
  102. package/dist/components/hx-divider/hx-divider.d.ts +4 -1
  103. package/dist/components/hx-divider/hx-divider.d.ts.map +1 -1
  104. package/dist/components/hx-divider/index.js +1 -1
  105. package/dist/components/hx-drawer/hx-drawer.d.ts +28 -10
  106. package/dist/components/hx-drawer/hx-drawer.d.ts.map +1 -1
  107. package/dist/components/hx-drawer/hx-drawer.styles.d.ts.map +1 -1
  108. package/dist/components/hx-drawer/index.js +1 -1
  109. package/dist/components/hx-dropdown/hx-dropdown.d.ts +29 -3
  110. package/dist/components/hx-dropdown/hx-dropdown.d.ts.map +1 -1
  111. package/dist/components/hx-dropdown/index.js +1 -1
  112. package/dist/components/hx-field/hx-field.d.ts +11 -3
  113. package/dist/components/hx-field/hx-field.d.ts.map +1 -1
  114. package/dist/components/hx-field/index.js +1 -1
  115. package/dist/components/hx-field-label/hx-field-label.styles.d.ts.map +1 -1
  116. package/dist/components/hx-field-label/index.js +1 -1
  117. package/dist/components/hx-file-upload/hx-file-upload.d.ts +39 -3
  118. package/dist/components/hx-file-upload/hx-file-upload.d.ts.map +1 -1
  119. package/dist/components/hx-file-upload/hx-file-upload.styles.d.ts.map +1 -1
  120. package/dist/components/hx-file-upload/index.js +1 -1
  121. package/dist/components/hx-form/hx-form.d.ts.map +1 -1
  122. package/dist/components/hx-form/index.js +1 -1
  123. package/dist/components/hx-format-date/hx-format-date.d.ts +8 -0
  124. package/dist/components/hx-format-date/hx-format-date.d.ts.map +1 -1
  125. package/dist/components/hx-format-date/index.js +1 -1
  126. package/dist/components/hx-grid/hx-grid.d.ts +14 -12
  127. package/dist/components/hx-grid/hx-grid.d.ts.map +1 -1
  128. package/dist/components/hx-grid/index.js +1 -1
  129. package/dist/components/hx-help-text/index.js +1 -1
  130. package/dist/components/hx-icon/hx-icon.d.ts +10 -2
  131. package/dist/components/hx-icon/hx-icon.d.ts.map +1 -1
  132. package/dist/components/hx-icon/index.js +1 -1
  133. package/dist/components/hx-icon-button/hx-icon-button.d.ts +12 -0
  134. package/dist/components/hx-icon-button/hx-icon-button.d.ts.map +1 -1
  135. package/dist/components/hx-icon-button/index.js +1 -1
  136. package/dist/components/hx-image/hx-image.d.ts +8 -0
  137. package/dist/components/hx-image/hx-image.d.ts.map +1 -1
  138. package/dist/components/hx-image/index.js +1 -1
  139. package/dist/components/hx-link/hx-link.d.ts +4 -1
  140. package/dist/components/hx-link/hx-link.d.ts.map +1 -1
  141. package/dist/components/hx-link/hx-link.styles.d.ts.map +1 -1
  142. package/dist/components/hx-link/index.js +1 -1
  143. package/dist/components/hx-list/hx-list-item.d.ts +8 -2
  144. package/dist/components/hx-list/hx-list-item.d.ts.map +1 -1
  145. package/dist/components/hx-list/hx-list-item.styles.d.ts.map +1 -1
  146. package/dist/components/hx-list/hx-list.d.ts +6 -2
  147. package/dist/components/hx-list/hx-list.d.ts.map +1 -1
  148. package/dist/components/hx-list/index.js +1 -1
  149. package/dist/components/hx-menu/hx-menu-item.d.ts +11 -0
  150. package/dist/components/hx-menu/hx-menu-item.d.ts.map +1 -1
  151. package/dist/components/hx-menu/hx-menu-item.styles.d.ts.map +1 -1
  152. package/dist/components/hx-menu/hx-menu.d.ts +10 -1
  153. package/dist/components/hx-menu/hx-menu.d.ts.map +1 -1
  154. package/dist/components/hx-menu/index.js +1 -1
  155. package/dist/components/hx-meter/hx-meter.d.ts +10 -2
  156. package/dist/components/hx-meter/hx-meter.d.ts.map +1 -1
  157. package/dist/components/hx-meter/hx-meter.styles.d.ts.map +1 -1
  158. package/dist/components/hx-meter/index.js +1 -1
  159. package/dist/components/hx-nav/hx-nav.d.ts +15 -0
  160. package/dist/components/hx-nav/hx-nav.d.ts.map +1 -1
  161. package/dist/components/hx-nav/index.js +1 -1
  162. package/dist/components/hx-number-input/hx-number-input.d.ts +51 -4
  163. package/dist/components/hx-number-input/hx-number-input.d.ts.map +1 -1
  164. package/dist/components/hx-number-input/index.js +1 -1
  165. package/dist/components/hx-overflow-menu/hx-overflow-menu.d.ts +18 -3
  166. package/dist/components/hx-overflow-menu/hx-overflow-menu.d.ts.map +1 -1
  167. package/dist/components/hx-overflow-menu/hx-overflow-menu.styles.d.ts.map +1 -1
  168. package/dist/components/hx-overflow-menu/index.js +1 -1
  169. package/dist/components/hx-pagination/hx-pagination.d.ts +38 -0
  170. package/dist/components/hx-pagination/hx-pagination.d.ts.map +1 -1
  171. package/dist/components/hx-pagination/hx-pagination.styles.d.ts.map +1 -1
  172. package/dist/components/hx-pagination/index.js +1 -1
  173. package/dist/components/hx-patient-banner/hx-patient-banner.d.ts +105 -0
  174. package/dist/components/hx-patient-banner/hx-patient-banner.d.ts.map +1 -0
  175. package/dist/components/hx-patient-banner/hx-patient-banner.styles.d.ts +2 -0
  176. package/dist/components/hx-patient-banner/hx-patient-banner.styles.d.ts.map +1 -0
  177. package/dist/components/hx-patient-banner/index.d.ts +3 -0
  178. package/dist/components/hx-patient-banner/index.d.ts.map +1 -0
  179. package/dist/components/hx-patient-banner/index.js +5 -0
  180. package/dist/components/hx-patient-banner/index.js.map +1 -0
  181. package/dist/components/hx-phi-field/hx-phi-field.d.ts +72 -0
  182. package/dist/components/hx-phi-field/hx-phi-field.d.ts.map +1 -0
  183. package/dist/components/hx-phi-field/hx-phi-field.styles.d.ts +2 -0
  184. package/dist/components/hx-phi-field/hx-phi-field.styles.d.ts.map +1 -0
  185. package/dist/components/hx-phi-field/index.d.ts +3 -0
  186. package/dist/components/hx-phi-field/index.d.ts.map +1 -0
  187. package/dist/components/hx-phi-field/index.js +5 -0
  188. package/dist/components/hx-phi-field/index.js.map +1 -0
  189. package/dist/components/hx-popover/hx-popover.d.ts +77 -10
  190. package/dist/components/hx-popover/hx-popover.d.ts.map +1 -1
  191. package/dist/components/hx-popover/index.js +1 -1
  192. package/dist/components/hx-popup/hx-popup.d.ts +13 -8
  193. package/dist/components/hx-popup/hx-popup.d.ts.map +1 -1
  194. package/dist/components/hx-popup/hx-popup.styles.d.ts.map +1 -1
  195. package/dist/components/hx-popup/index.js +1 -1
  196. package/dist/components/hx-progress-bar/hx-progress-bar.d.ts +10 -2
  197. package/dist/components/hx-progress-bar/hx-progress-bar.d.ts.map +1 -1
  198. package/dist/components/hx-progress-bar/hx-progress-bar.styles.d.ts.map +1 -1
  199. package/dist/components/hx-progress-bar/index.js +1 -1
  200. package/dist/components/hx-progress-ring/hx-progress-ring.d.ts +8 -2
  201. package/dist/components/hx-progress-ring/hx-progress-ring.d.ts.map +1 -1
  202. package/dist/components/hx-progress-ring/index.js +1 -1
  203. package/dist/components/hx-prose/hx-prose.d.ts +6 -3
  204. package/dist/components/hx-prose/hx-prose.d.ts.map +1 -1
  205. package/dist/components/hx-prose/index.js +1 -1
  206. package/dist/components/hx-radio-group/hx-radio-group.d.ts +3 -7
  207. package/dist/components/hx-radio-group/hx-radio-group.d.ts.map +1 -1
  208. package/dist/components/hx-radio-group/hx-radio.d.ts +4 -2
  209. package/dist/components/hx-radio-group/hx-radio.d.ts.map +1 -1
  210. package/dist/components/hx-radio-group/hx-radio.styles.d.ts.map +1 -1
  211. package/dist/components/hx-radio-group/index.js +1 -1
  212. package/dist/components/hx-rating/hx-rating.d.ts +54 -2
  213. package/dist/components/hx-rating/hx-rating.d.ts.map +1 -1
  214. package/dist/components/hx-rating/hx-rating.styles.d.ts.map +1 -1
  215. package/dist/components/hx-rating/index.js +1 -1
  216. package/dist/components/hx-select/hx-select.d.ts +37 -12
  217. package/dist/components/hx-select/hx-select.d.ts.map +1 -1
  218. package/dist/components/hx-select/hx-select.styles.d.ts.map +1 -1
  219. package/dist/components/hx-select/index.js +1 -1
  220. package/dist/components/hx-side-nav/hx-nav-item.d.ts +13 -0
  221. package/dist/components/hx-side-nav/hx-nav-item.d.ts.map +1 -1
  222. package/dist/components/hx-side-nav/hx-nav-item.styles.d.ts.map +1 -1
  223. package/dist/components/hx-side-nav/hx-side-nav.d.ts +6 -1
  224. package/dist/components/hx-side-nav/hx-side-nav.d.ts.map +1 -1
  225. package/dist/components/hx-side-nav/hx-side-nav.styles.d.ts.map +1 -1
  226. package/dist/components/hx-side-nav/index.js +1 -1
  227. package/dist/components/hx-skeleton/hx-skeleton.d.ts +2 -2
  228. package/dist/components/hx-skeleton/hx-skeleton.d.ts.map +1 -1
  229. package/dist/components/hx-slider/hx-slider.d.ts +26 -9
  230. package/dist/components/hx-slider/hx-slider.d.ts.map +1 -1
  231. package/dist/components/hx-slider/hx-slider.styles.d.ts.map +1 -1
  232. package/dist/components/hx-slider/index.js +1 -1
  233. package/dist/components/hx-spinner/hx-spinner.d.ts +17 -2
  234. package/dist/components/hx-spinner/hx-spinner.d.ts.map +1 -1
  235. package/dist/components/hx-spinner/hx-spinner.styles.d.ts.map +1 -1
  236. package/dist/components/hx-spinner/index.js +1 -1
  237. package/dist/components/hx-split-button/hx-split-button.d.ts +22 -4
  238. package/dist/components/hx-split-button/hx-split-button.d.ts.map +1 -1
  239. package/dist/components/hx-split-button/hx-split-button.styles.d.ts.map +1 -1
  240. package/dist/components/hx-split-button/index.js +1 -1
  241. package/dist/components/hx-split-panel/hx-split-panel.d.ts +32 -2
  242. package/dist/components/hx-split-panel/hx-split-panel.d.ts.map +1 -1
  243. package/dist/components/hx-split-panel/hx-split-panel.styles.d.ts.map +1 -1
  244. package/dist/components/hx-split-panel/index.js +1 -1
  245. package/dist/components/hx-stack/index.js +1 -1
  246. package/dist/components/hx-stat/hx-stat.d.ts +12 -3
  247. package/dist/components/hx-stat/hx-stat.d.ts.map +1 -1
  248. package/dist/components/hx-stat/index.js +1 -1
  249. package/dist/components/hx-status-indicator/hx-status-indicator.d.ts +15 -14
  250. package/dist/components/hx-status-indicator/hx-status-indicator.d.ts.map +1 -1
  251. package/dist/components/hx-status-indicator/index.js +1 -1
  252. package/dist/components/hx-steps/hx-step.d.ts +7 -9
  253. package/dist/components/hx-steps/hx-step.d.ts.map +1 -1
  254. package/dist/components/hx-steps/hx-step.styles.d.ts.map +1 -1
  255. package/dist/components/hx-steps/hx-steps.d.ts +3 -3
  256. package/dist/components/hx-steps/hx-steps.d.ts.map +1 -1
  257. package/dist/components/hx-steps/index.js +1 -1
  258. package/dist/components/hx-structured-list/hx-structured-list.d.ts +10 -3
  259. package/dist/components/hx-structured-list/hx-structured-list.d.ts.map +1 -1
  260. package/dist/components/hx-structured-list/index.js +1 -1
  261. package/dist/components/hx-style-scope/hx-style-scope.d.ts +71 -0
  262. package/dist/components/hx-style-scope/hx-style-scope.d.ts.map +1 -0
  263. package/dist/components/hx-style-scope/hx-style-scope.styles.d.ts +10 -0
  264. package/dist/components/hx-style-scope/hx-style-scope.styles.d.ts.map +1 -0
  265. package/dist/components/hx-style-scope/index.d.ts +2 -0
  266. package/dist/components/hx-style-scope/index.d.ts.map +1 -0
  267. package/dist/components/hx-style-scope/index.js +5 -0
  268. package/dist/components/hx-style-scope/index.js.map +1 -0
  269. package/dist/components/hx-switch/hx-switch.d.ts +25 -5
  270. package/dist/components/hx-switch/hx-switch.d.ts.map +1 -1
  271. package/dist/components/hx-switch/hx-switch.styles.d.ts.map +1 -1
  272. package/dist/components/hx-switch/index.js +1 -1
  273. package/dist/components/hx-table/hx-table.d.ts +8 -2
  274. package/dist/components/hx-table/hx-table.d.ts.map +1 -1
  275. package/dist/components/hx-table/hx-table.styles.d.ts.map +1 -1
  276. package/dist/components/hx-table/hx-th.d.ts +4 -0
  277. package/dist/components/hx-table/hx-th.d.ts.map +1 -1
  278. package/dist/components/hx-table/index.js +1 -1
  279. package/dist/components/hx-tabs/hx-tab-panel.styles.d.ts.map +1 -1
  280. package/dist/components/hx-tabs/hx-tab.d.ts +4 -0
  281. package/dist/components/hx-tabs/hx-tab.d.ts.map +1 -1
  282. package/dist/components/hx-tabs/hx-tab.styles.d.ts.map +1 -1
  283. package/dist/components/hx-tabs/hx-tabs.d.ts +8 -2
  284. package/dist/components/hx-tabs/hx-tabs.d.ts.map +1 -1
  285. package/dist/components/hx-tabs/index.js +1 -1
  286. package/dist/components/hx-tag/hx-tag.d.ts +2 -0
  287. package/dist/components/hx-tag/hx-tag.d.ts.map +1 -1
  288. package/dist/components/hx-tag/hx-tag.styles.d.ts.map +1 -1
  289. package/dist/components/hx-tag/index.js +1 -1
  290. package/dist/components/hx-text/hx-text.d.ts +1 -0
  291. package/dist/components/hx-text/hx-text.d.ts.map +1 -1
  292. package/dist/components/hx-text/index.js +1 -1
  293. package/dist/components/hx-text-input/hx-text-input.d.ts +22 -16
  294. package/dist/components/hx-text-input/hx-text-input.d.ts.map +1 -1
  295. package/dist/components/hx-text-input/hx-text-input.styles.d.ts.map +1 -1
  296. package/dist/components/hx-text-input/index.js +1 -1
  297. package/dist/components/hx-textarea/hx-textarea.d.ts +13 -7
  298. package/dist/components/hx-textarea/hx-textarea.d.ts.map +1 -1
  299. package/dist/components/hx-textarea/hx-textarea.styles.d.ts.map +1 -1
  300. package/dist/components/hx-textarea/index.js +1 -1
  301. package/dist/components/hx-theme/hx-theme.d.ts +84 -5
  302. package/dist/components/hx-theme/hx-theme.d.ts.map +1 -1
  303. package/dist/components/hx-theme/index.js +1 -1
  304. package/dist/components/hx-time-picker/hx-time-picker.d.ts +24 -3
  305. package/dist/components/hx-time-picker/hx-time-picker.d.ts.map +1 -1
  306. package/dist/components/hx-time-picker/hx-time-picker.styles.d.ts.map +1 -1
  307. package/dist/components/hx-time-picker/index.js +1 -1
  308. package/dist/components/hx-toast/hx-toast-stack.d.ts +1 -1
  309. package/dist/components/hx-toast/hx-toast-stack.d.ts.map +1 -1
  310. package/dist/components/hx-toast/hx-toast.d.ts +17 -5
  311. package/dist/components/hx-toast/hx-toast.d.ts.map +1 -1
  312. package/dist/components/hx-toast/hx-toast.styles.d.ts.map +1 -1
  313. package/dist/components/hx-toast/index.js +1 -1
  314. package/dist/components/hx-toast/toast-factory.d.ts.map +1 -1
  315. package/dist/components/hx-toggle-button/hx-toggle-button.d.ts +26 -2
  316. package/dist/components/hx-toggle-button/hx-toggle-button.d.ts.map +1 -1
  317. package/dist/components/hx-toggle-button/hx-toggle-button.styles.d.ts.map +1 -1
  318. package/dist/components/hx-toggle-button/index.js +1 -1
  319. package/dist/components/hx-tooltip/hx-tooltip.d.ts +58 -2
  320. package/dist/components/hx-tooltip/hx-tooltip.d.ts.map +1 -1
  321. package/dist/components/hx-tooltip/index.js +1 -1
  322. package/dist/components/hx-top-nav/hx-top-nav.d.ts +4 -0
  323. package/dist/components/hx-top-nav/hx-top-nav.d.ts.map +1 -1
  324. package/dist/components/hx-top-nav/index.js +1 -1
  325. package/dist/components/hx-tree-view/hx-tree-item.d.ts +9 -0
  326. package/dist/components/hx-tree-view/hx-tree-item.d.ts.map +1 -1
  327. package/dist/components/hx-tree-view/hx-tree-view.d.ts +32 -2
  328. package/dist/components/hx-tree-view/hx-tree-view.d.ts.map +1 -1
  329. package/dist/components/hx-tree-view/hx-tree-view.styles.d.ts.map +1 -1
  330. package/dist/components/hx-tree-view/index.js +1 -1
  331. package/dist/controllers/helix-audit-controller.d.ts +71 -0
  332. package/dist/controllers/helix-audit-controller.d.ts.map +1 -0
  333. package/dist/css/helix-all.css +9581 -0
  334. package/dist/css/helix-core.css +1784 -0
  335. package/dist/css/helix-data.css +639 -0
  336. package/dist/css/helix-feedback.css +1239 -0
  337. package/dist/css/helix-forms.css +2498 -0
  338. package/dist/css/helix-layout.css +380 -0
  339. package/dist/css/helix-media.css +213 -0
  340. package/dist/css/helix-navigation.css +1122 -0
  341. package/dist/css/helix-overlay.css +643 -0
  342. package/dist/css/helix-tokens.css +432 -0
  343. package/dist/css/helix-utility.css +633 -0
  344. package/dist/css/hx-accordion.css +10 -0
  345. package/dist/css/hx-action-bar.css +117 -0
  346. package/dist/css/hx-alert.css +213 -0
  347. package/dist/css/hx-avatar.css +117 -0
  348. package/dist/css/hx-badge.css +174 -0
  349. package/dist/css/hx-banner.css +203 -0
  350. package/dist/css/hx-breadcrumb.css +36 -0
  351. package/dist/css/hx-button-group.css +91 -0
  352. package/dist/css/hx-button.css +262 -0
  353. package/dist/css/hx-card.css +161 -0
  354. package/dist/css/hx-carousel.css +211 -0
  355. package/dist/css/hx-checkbox-group.css +77 -0
  356. package/dist/css/hx-checkbox.css +219 -0
  357. package/dist/css/hx-clinical-status.css +246 -0
  358. package/dist/css/hx-code-snippet.css +179 -0
  359. package/dist/css/hx-color-picker.css +2 -0
  360. package/dist/css/hx-combobox.css +2 -0
  361. package/dist/css/hx-container.css +82 -0
  362. package/dist/css/hx-copy-button.css +121 -0
  363. package/dist/css/hx-counter.css +51 -0
  364. package/dist/css/hx-data-table.css +207 -0
  365. package/dist/css/hx-date-picker.css +2 -0
  366. package/dist/css/hx-dialog.css +190 -0
  367. package/dist/css/hx-divider.css +87 -0
  368. package/dist/css/hx-drawer.css +262 -0
  369. package/dist/css/hx-dropdown.css +46 -0
  370. package/dist/css/hx-field-label.css +38 -0
  371. package/dist/css/hx-field.css +119 -0
  372. package/dist/css/hx-file-upload.css +241 -0
  373. package/dist/css/hx-form.css +2 -0
  374. package/dist/css/hx-format-date.css +10 -0
  375. package/dist/css/hx-grid.css +14 -0
  376. package/dist/css/hx-help-text.css +50 -0
  377. package/dist/css/hx-icon-button.css +152 -0
  378. package/dist/css/hx-icon.css +73 -0
  379. package/dist/css/hx-image.css +41 -0
  380. package/dist/css/hx-link.css +105 -0
  381. package/dist/css/hx-list.css +48 -0
  382. package/dist/css/hx-menu.css +21 -0
  383. package/dist/css/hx-meter.css +113 -0
  384. package/dist/css/hx-nav.css +242 -0
  385. package/dist/css/hx-number-input.css +246 -0
  386. package/dist/css/hx-overflow-menu.css +133 -0
  387. package/dist/css/hx-pagination.css +193 -0
  388. package/dist/css/hx-patient-banner.css +111 -0
  389. package/dist/css/hx-phi-field.css +85 -0
  390. package/dist/css/hx-popover.css +61 -0
  391. package/dist/css/hx-popup.css +31 -0
  392. package/dist/css/hx-progress-bar.css +133 -0
  393. package/dist/css/hx-progress-ring.css +142 -0
  394. package/dist/css/hx-prose.css +2 -0
  395. package/dist/css/hx-radio-group.css +77 -0
  396. package/dist/css/hx-rating.css +96 -0
  397. package/dist/css/hx-select.css +268 -0
  398. package/dist/css/hx-side-nav.css +142 -0
  399. package/dist/css/hx-skeleton.css +82 -0
  400. package/dist/css/hx-slider.css +287 -0
  401. package/dist/css/hx-spinner.css +116 -0
  402. package/dist/css/hx-split-button.css +309 -0
  403. package/dist/css/hx-split-panel.css +168 -0
  404. package/dist/css/hx-stack.css +104 -0
  405. package/dist/css/hx-stat.css +106 -0
  406. package/dist/css/hx-status-indicator.css +97 -0
  407. package/dist/css/hx-steps.css +52 -0
  408. package/dist/css/hx-structured-list.css +75 -0
  409. package/dist/css/hx-style-scope.css +4 -0
  410. package/dist/css/hx-switch.css +169 -0
  411. package/dist/css/hx-table.css +128 -0
  412. package/dist/css/hx-tabs.css +76 -0
  413. package/dist/css/hx-tag.css +146 -0
  414. package/dist/css/hx-text-input.css +214 -0
  415. package/dist/css/hx-text.css +149 -0
  416. package/dist/css/hx-textarea.css +180 -0
  417. package/dist/css/hx-theme.css +23 -0
  418. package/dist/css/hx-time-picker.css +2 -0
  419. package/dist/css/hx-toast.css +230 -0
  420. package/dist/css/hx-toggle-button.css +207 -0
  421. package/dist/css/hx-tooltip.css +51 -0
  422. package/dist/css/hx-top-nav.css +203 -0
  423. package/dist/css/hx-tree-view.css +22 -0
  424. package/dist/css/hx-visually-hidden.css +26 -0
  425. package/dist/css/index.css +84 -0
  426. package/dist/css/manifest.json +2696 -0
  427. package/dist/index.d.ts +14 -0
  428. package/dist/index.d.ts.map +1 -1
  429. package/dist/index.js +266 -176
  430. package/dist/index.js.map +1 -1
  431. package/dist/mixins/FocusMixin.d.ts +49 -0
  432. package/dist/mixins/FocusMixin.d.ts.map +1 -0
  433. package/dist/mixins/FormMixin.d.ts +69 -0
  434. package/dist/mixins/FormMixin.d.ts.map +1 -0
  435. package/dist/mixins/aria-delegation.d.ts +97 -0
  436. package/dist/mixins/aria-delegation.d.ts.map +1 -0
  437. package/dist/mixins/index.d.ts +5 -0
  438. package/dist/mixins/index.d.ts.map +1 -0
  439. package/dist/shared/FormMixin-Bjvw20G5.js +88 -0
  440. package/dist/shared/FormMixin-Bjvw20G5.js.map +1 -0
  441. package/dist/shared/aria-delegation-CBP9eQ0M.js +107 -0
  442. package/dist/shared/aria-delegation-CBP9eQ0M.js.map +1 -0
  443. package/dist/shared/{hx-accordion-DT8qHOay.js → hx-accordion-_KeulaQR.js} +97 -57
  444. package/dist/shared/hx-accordion-_KeulaQR.js.map +1 -0
  445. package/dist/shared/{hx-action-bar-we_WJety.js → hx-action-bar-D4bulGQP.js} +38 -31
  446. package/dist/shared/hx-action-bar-D4bulGQP.js.map +1 -0
  447. package/dist/shared/{hx-alert-D6uok29t.js → hx-alert-DRZYP0Oo.js} +77 -52
  448. package/dist/shared/hx-alert-DRZYP0Oo.js.map +1 -0
  449. package/dist/shared/{hx-avatar-Cep6Urm3.js → hx-avatar-7p1cj3lG.js} +6 -2
  450. package/dist/shared/hx-avatar-7p1cj3lG.js.map +1 -0
  451. package/dist/shared/{hx-badge-BeuWuUj_.js → hx-badge-DCxvskdw.js} +60 -45
  452. package/dist/shared/hx-badge-DCxvskdw.js.map +1 -0
  453. package/dist/shared/{hx-banner-DnCBJtRR.js → hx-banner-2RS7Nux4.js} +102 -55
  454. package/dist/shared/hx-banner-2RS7Nux4.js.map +1 -0
  455. package/dist/shared/{hx-breadcrumb-item-Bj2UqhzR.js → hx-breadcrumb-item-B2rjepqy.js} +85 -72
  456. package/dist/shared/hx-breadcrumb-item-B2rjepqy.js.map +1 -0
  457. package/dist/shared/{hx-button-Cbhqpm5i.js → hx-button-6S3DwuIj.js} +96 -57
  458. package/dist/shared/hx-button-6S3DwuIj.js.map +1 -0
  459. package/dist/shared/{hx-button-group-CWjWv-wS.js → hx-button-group-ChTQsnQj.js} +10 -10
  460. package/dist/shared/hx-button-group-ChTQsnQj.js.map +1 -0
  461. package/dist/shared/{hx-card-B9j2SHyI.js → hx-card-dIKdcMhr.js} +41 -34
  462. package/dist/shared/hx-card-dIKdcMhr.js.map +1 -0
  463. package/dist/shared/{hx-carousel-item-Be0bC-7o.js → hx-carousel-item-Cm8a1nAi.js} +108 -91
  464. package/dist/shared/hx-carousel-item-Cm8a1nAi.js.map +1 -0
  465. package/dist/shared/{hx-checkbox-CuaJqEo7.js → hx-checkbox-_WUiuTo9.js} +75 -71
  466. package/dist/shared/hx-checkbox-_WUiuTo9.js.map +1 -0
  467. package/dist/shared/{hx-checkbox-group-ydUdV9Sx.js → hx-checkbox-group-B-ci-dxp.js} +62 -43
  468. package/dist/shared/hx-checkbox-group-B-ci-dxp.js.map +1 -0
  469. package/dist/shared/hx-clinical-status-De8yrA5I.js +467 -0
  470. package/dist/shared/hx-clinical-status-De8yrA5I.js.map +1 -0
  471. package/dist/shared/{hx-code-snippet-DBwIjl5p.js → hx-code-snippet-CQsyvthi.js} +72 -47
  472. package/dist/shared/hx-code-snippet-CQsyvthi.js.map +1 -0
  473. package/dist/shared/hx-color-picker-Dk2Myvaf.js +612 -0
  474. package/dist/shared/hx-color-picker-Dk2Myvaf.js.map +1 -0
  475. package/dist/shared/{hx-combobox-CNvY-es8.js → hx-combobox-CNAJXIxo.js} +100 -466
  476. package/dist/shared/hx-combobox-CNAJXIxo.js.map +1 -0
  477. package/dist/shared/{hx-container-DLUKnTi9.js → hx-container-7j16VuQE.js} +16 -16
  478. package/dist/shared/hx-container-7j16VuQE.js.map +1 -0
  479. package/dist/shared/{hx-copy-button-CLBA31to.js → hx-copy-button-B_ZHYO7_.js} +55 -40
  480. package/dist/shared/hx-copy-button-B_ZHYO7_.js.map +1 -0
  481. package/dist/shared/hx-counter-D_B7L9Pi.js +185 -0
  482. package/dist/shared/hx-counter-D_B7L9Pi.js.map +1 -0
  483. package/dist/shared/{hx-data-table-BwoJCFgs.js → hx-data-table-B1j4n4bm.js} +160 -90
  484. package/dist/shared/hx-data-table-B1j4n4bm.js.map +1 -0
  485. package/dist/shared/hx-date-picker-R-0kWFwr.js +627 -0
  486. package/dist/shared/hx-date-picker-R-0kWFwr.js.map +1 -0
  487. package/dist/shared/{hx-dialog-M7so0sRT.js → hx-dialog-U5d3s0Ps.js} +137 -108
  488. package/dist/shared/hx-dialog-U5d3s0Ps.js.map +1 -0
  489. package/dist/shared/{hx-divider-XgWIz4Mr.js → hx-divider-DdAN-_jB.js} +6 -5
  490. package/dist/shared/hx-divider-DdAN-_jB.js.map +1 -0
  491. package/dist/shared/{hx-drawer-CYxuhIQ0.js → hx-drawer-e0qeGxAD.js} +162 -93
  492. package/dist/shared/hx-drawer-e0qeGxAD.js.map +1 -0
  493. package/dist/shared/{hx-dropdown-7cfowTWv.js → hx-dropdown-DP_DNpEb.js} +71 -47
  494. package/dist/shared/hx-dropdown-DP_DNpEb.js.map +1 -0
  495. package/dist/shared/{hx-field-CDP8EXuj.js → hx-field-COM4KvMQ.js} +29 -21
  496. package/dist/shared/hx-field-COM4KvMQ.js.map +1 -0
  497. package/dist/shared/{hx-field-label-Bg-EWvqF.js → hx-field-label-BtZ9H9Yy.js} +8 -11
  498. package/dist/shared/hx-field-label-BtZ9H9Yy.js.map +1 -0
  499. package/dist/shared/{hx-file-upload-9HbONfqt.js → hx-file-upload-DbECypLe.js} +121 -91
  500. package/dist/shared/hx-file-upload-DbECypLe.js.map +1 -0
  501. package/dist/shared/hx-form-fJE-FJQV.js +262 -0
  502. package/dist/shared/hx-form-fJE-FJQV.js.map +1 -0
  503. package/dist/shared/{hx-format-date-BsVr8gpD.js → hx-format-date-C030ThSm.js} +20 -12
  504. package/dist/shared/hx-format-date-C030ThSm.js.map +1 -0
  505. package/dist/shared/{hx-grid-BsDBCTbt.js → hx-grid-DE8KM5Gf.js} +29 -22
  506. package/dist/shared/hx-grid-DE8KM5Gf.js.map +1 -0
  507. package/dist/shared/{hx-help-text-DaOPN1iB.js → hx-help-text-BAcEGRUE.js} +2 -2
  508. package/dist/shared/{hx-help-text-DaOPN1iB.js.map → hx-help-text-BAcEGRUE.js.map} +1 -1
  509. package/dist/shared/{hx-icon-button-iu0i_faq.js → hx-icon-button-Et9wq79n.js} +15 -1
  510. package/dist/shared/{hx-icon-button-iu0i_faq.js.map → hx-icon-button-Et9wq79n.js.map} +1 -1
  511. package/dist/shared/{hx-icon--xsJztDh.js → hx-icon-dYvrzvsO.js} +12 -7
  512. package/dist/shared/hx-icon-dYvrzvsO.js.map +1 -0
  513. package/dist/shared/{hx-image-xyb_tHCR.js → hx-image-DUsEi-oN.js} +20 -15
  514. package/dist/shared/hx-image-DUsEi-oN.js.map +1 -0
  515. package/dist/shared/{hx-link-DfNy_UU8.js → hx-link-Peg2LzOD.js} +19 -8
  516. package/dist/shared/hx-link-Peg2LzOD.js.map +1 -0
  517. package/dist/shared/{hx-list-CdRNgeoP.js → hx-list-DwInEX2H.js} +63 -37
  518. package/dist/shared/hx-list-DwInEX2H.js.map +1 -0
  519. package/dist/shared/{hx-menu-divider-DR8klkFT.js → hx-menu-divider-DR4G_rqw.js} +71 -40
  520. package/dist/shared/hx-menu-divider-DR4G_rqw.js.map +1 -0
  521. package/dist/shared/{hx-meter-CZ7lnMra.js → hx-meter-CVs4A649.js} +83 -67
  522. package/dist/shared/hx-meter-CVs4A649.js.map +1 -0
  523. package/dist/shared/{hx-nav-DM6-cGKF.js → hx-nav-D377Ngz4.js} +70 -54
  524. package/dist/shared/hx-nav-D377Ngz4.js.map +1 -0
  525. package/dist/shared/{hx-nav-item-D54-5eUM.js → hx-nav-item-ByU2N921.js} +84 -48
  526. package/dist/shared/hx-nav-item-ByU2N921.js.map +1 -0
  527. package/dist/shared/{hx-number-input-BP6TIA92.js → hx-number-input-BPgrlMLN.js} +97 -65
  528. package/dist/shared/hx-number-input-BPgrlMLN.js.map +1 -0
  529. package/dist/shared/{hx-overflow-menu-CobkjAb8.js → hx-overflow-menu-Bz02LPPk.js} +83 -67
  530. package/dist/shared/hx-overflow-menu-Bz02LPPk.js.map +1 -0
  531. package/dist/shared/{hx-pagination-10dpXS95.js → hx-pagination-DYhYPqDn.js} +119 -92
  532. package/dist/shared/hx-pagination-DYhYPqDn.js.map +1 -0
  533. package/dist/shared/hx-patient-banner-BoJHddAL.js +256 -0
  534. package/dist/shared/hx-patient-banner-BoJHddAL.js.map +1 -0
  535. package/dist/shared/hx-phi-field-EDWna59z.js +261 -0
  536. package/dist/shared/hx-phi-field-EDWna59z.js.map +1 -0
  537. package/dist/shared/{hx-popover-ULjonbaO.js → hx-popover-D6kYQkt3.js} +121 -89
  538. package/dist/shared/hx-popover-D6kYQkt3.js.map +1 -0
  539. package/dist/shared/{hx-popup-CYf9Q5sj.js → hx-popup-RQb6HUXc.js} +14 -2
  540. package/dist/shared/hx-popup-RQb6HUXc.js.map +1 -0
  541. package/dist/shared/{hx-progress-bar-CnTibV63.js → hx-progress-bar-ByEmxq1V.js} +77 -57
  542. package/dist/shared/hx-progress-bar-ByEmxq1V.js.map +1 -0
  543. package/dist/shared/{hx-progress-ring-BHJBaXNk.js → hx-progress-ring-CtVnNRQx.js} +36 -29
  544. package/dist/shared/hx-progress-ring-CtVnNRQx.js.map +1 -0
  545. package/dist/shared/hx-prose-Ml_L2zje.js +59 -0
  546. package/dist/shared/hx-prose-Ml_L2zje.js.map +1 -0
  547. package/dist/shared/{hx-radio-BnKcRuQu.js → hx-radio-jgeW92SV.js} +34 -34
  548. package/dist/shared/hx-radio-jgeW92SV.js.map +1 -0
  549. package/dist/shared/{hx-rating-Y_t7Z4qb.js → hx-rating-g_iy-DW_.js} +144 -81
  550. package/dist/shared/hx-rating-g_iy-DW_.js.map +1 -0
  551. package/dist/shared/{hx-select-C50lD7NS.js → hx-select-4-nHL0vd.js} +158 -208
  552. package/dist/shared/hx-select-4-nHL0vd.js.map +1 -0
  553. package/dist/shared/hx-skeleton-BHvALyd7.js.map +1 -1
  554. package/dist/shared/{hx-slider-CprSNrRi.js → hx-slider-7Q-e0_pc.js} +49 -28
  555. package/dist/shared/hx-slider-7Q-e0_pc.js.map +1 -0
  556. package/dist/shared/{hx-spinner-BOApJ-g9.js → hx-spinner-DEgrKsUo.js} +36 -28
  557. package/dist/shared/hx-spinner-DEgrKsUo.js.map +1 -0
  558. package/dist/shared/{hx-split-button-CHGy4FUc.js → hx-split-button-BA7P_ly5.js} +51 -31
  559. package/dist/shared/hx-split-button-BA7P_ly5.js.map +1 -0
  560. package/dist/shared/{hx-split-panel-DYtB45Tr.js → hx-split-panel-Bss54UN8.js} +68 -44
  561. package/dist/shared/hx-split-panel-Bss54UN8.js.map +1 -0
  562. package/dist/shared/{hx-stack-CfoW7jU7.js → hx-stack-BStY1RmV.js} +29 -29
  563. package/dist/shared/hx-stack-BStY1RmV.js.map +1 -0
  564. package/dist/shared/{hx-stat-C2wfph8W.js → hx-stat-CmkCUI8v.js} +49 -33
  565. package/dist/shared/hx-stat-CmkCUI8v.js.map +1 -0
  566. package/dist/shared/{hx-status-indicator-oYWOkWlD.js → hx-status-indicator-4ClvA5mU.js} +22 -19
  567. package/dist/shared/hx-status-indicator-4ClvA5mU.js.map +1 -0
  568. package/dist/shared/{hx-step-DYoIumpR.js → hx-step-DlANlr2A.js} +61 -89
  569. package/dist/shared/hx-step-DlANlr2A.js.map +1 -0
  570. package/dist/shared/{hx-structured-list-CMWllxGg.js → hx-structured-list-Db9rwLI_.js} +26 -23
  571. package/dist/shared/hx-structured-list-Db9rwLI_.js.map +1 -0
  572. package/dist/shared/hx-style-scope-BroUu83L.js +125 -0
  573. package/dist/shared/hx-style-scope-BroUu83L.js.map +1 -0
  574. package/dist/shared/{hx-switch-DkKchcuP.js → hx-switch-C0Lp5RGy.js} +19 -7
  575. package/dist/shared/hx-switch-C0Lp5RGy.js.map +1 -0
  576. package/dist/shared/{hx-tab-panel-BRNcLICw.js → hx-tab-panel-GGjk6Qg4.js} +139 -119
  577. package/dist/shared/hx-tab-panel-GGjk6Qg4.js.map +1 -0
  578. package/dist/shared/{hx-tag-B3N-vZ6B.js → hx-tag-K5fCjfqQ.js} +16 -14
  579. package/dist/shared/hx-tag-K5fCjfqQ.js.map +1 -0
  580. package/dist/shared/{hx-td-CVwCGBYf.js → hx-td-DZuILY3s.js} +64 -59
  581. package/dist/shared/hx-td-DZuILY3s.js.map +1 -0
  582. package/dist/shared/{hx-text-NjKoQATI.js → hx-text-DoEVOf47.js} +30 -29
  583. package/dist/shared/hx-text-DoEVOf47.js.map +1 -0
  584. package/dist/shared/{hx-text-input-CCZZbWQ9.js → hx-text-input-DTKWPVdy.js} +218 -86
  585. package/dist/shared/hx-text-input-DTKWPVdy.js.map +1 -0
  586. package/dist/shared/{hx-textarea-BsQdB1Rk.js → hx-textarea-BkSiU8oM.js} +35 -26
  587. package/dist/shared/hx-textarea-BkSiU8oM.js.map +1 -0
  588. package/dist/shared/hx-theme-Aag8QJvT.js +299 -0
  589. package/dist/shared/hx-theme-Aag8QJvT.js.map +1 -0
  590. package/dist/shared/{hx-time-picker-CJcIjH3C.js → hx-time-picker-BpCRsh_z.js} +101 -300
  591. package/dist/shared/hx-time-picker-BpCRsh_z.js.map +1 -0
  592. package/dist/shared/{hx-toggle-button-D4F1soEM.js → hx-toggle-button-CPFqs3eQ.js} +81 -41
  593. package/dist/shared/hx-toggle-button-CPFqs3eQ.js.map +1 -0
  594. package/dist/shared/{hx-tooltip-Bk1iQRHs.js → hx-tooltip-CrO4vzeX.js} +75 -53
  595. package/dist/shared/hx-tooltip-CrO4vzeX.js.map +1 -0
  596. package/dist/shared/{hx-top-nav-D2bQpns3.js → hx-top-nav-DYlnzDaU.js} +3 -1
  597. package/dist/shared/{hx-top-nav-D2bQpns3.js.map → hx-top-nav-DYlnzDaU.js.map} +1 -1
  598. package/dist/shared/{hx-tree-item-BobGN76x.js → hx-tree-item-DTDIBRrI.js} +140 -94
  599. package/dist/shared/hx-tree-item-DTDIBRrI.js.map +1 -0
  600. package/dist/shared/id-counter-JhvVCnjh.js +143 -0
  601. package/dist/shared/id-counter-JhvVCnjh.js.map +1 -0
  602. package/dist/shared/{toast-factory-MvMMreTu.js → toast-factory-f184Gi70.js} +96 -73
  603. package/dist/shared/toast-factory-f184Gi70.js.map +1 -0
  604. package/dist/styles/shared-field.styles.d.ts +6 -0
  605. package/dist/styles/shared-field.styles.d.ts.map +1 -0
  606. package/dist/utilities/adoptedStylesheetRegistry.d.ts +47 -0
  607. package/dist/utilities/adoptedStylesheetRegistry.d.ts.map +1 -0
  608. package/dist/utilities/generateScopedSelectors.d.ts +30 -0
  609. package/dist/utilities/generateScopedSelectors.d.ts.map +1 -0
  610. package/dist/utilities/injectLightStyles.d.ts +37 -0
  611. package/dist/utilities/injectLightStyles.d.ts.map +1 -0
  612. package/dist/utilities/lightStyleRegistry.d.ts +41 -0
  613. package/dist/utilities/lightStyleRegistry.d.ts.map +1 -0
  614. package/dist/utilities/sheetManager.d.ts +62 -0
  615. package/dist/utilities/sheetManager.d.ts.map +1 -0
  616. package/dist/utils/contrast-checker.d.ts +86 -0
  617. package/dist/utils/contrast-checker.d.ts.map +1 -0
  618. package/dist/utils/token-merger.d.ts +24 -0
  619. package/dist/utils/token-merger.d.ts.map +1 -0
  620. package/fouc.css +37 -0
  621. package/package.json +26 -9
  622. package/dist/shared/hx-accordion-DT8qHOay.js.map +0 -1
  623. package/dist/shared/hx-action-bar-we_WJety.js.map +0 -1
  624. package/dist/shared/hx-alert-D6uok29t.js.map +0 -1
  625. package/dist/shared/hx-avatar-Cep6Urm3.js.map +0 -1
  626. package/dist/shared/hx-badge-BeuWuUj_.js.map +0 -1
  627. package/dist/shared/hx-banner-DnCBJtRR.js.map +0 -1
  628. package/dist/shared/hx-breadcrumb-item-Bj2UqhzR.js.map +0 -1
  629. package/dist/shared/hx-button-Cbhqpm5i.js.map +0 -1
  630. package/dist/shared/hx-button-group-CWjWv-wS.js.map +0 -1
  631. package/dist/shared/hx-card-B9j2SHyI.js.map +0 -1
  632. package/dist/shared/hx-carousel-item-Be0bC-7o.js.map +0 -1
  633. package/dist/shared/hx-checkbox-CuaJqEo7.js.map +0 -1
  634. package/dist/shared/hx-checkbox-group-ydUdV9Sx.js.map +0 -1
  635. package/dist/shared/hx-code-snippet-DBwIjl5p.js.map +0 -1
  636. package/dist/shared/hx-color-picker-Bb2UPVc3.js +0 -803
  637. package/dist/shared/hx-color-picker-Bb2UPVc3.js.map +0 -1
  638. package/dist/shared/hx-combobox-CNvY-es8.js.map +0 -1
  639. package/dist/shared/hx-container-DLUKnTi9.js.map +0 -1
  640. package/dist/shared/hx-copy-button-CLBA31to.js.map +0 -1
  641. package/dist/shared/hx-counter-D-1NXzGs.js +0 -138
  642. package/dist/shared/hx-counter-D-1NXzGs.js.map +0 -1
  643. package/dist/shared/hx-data-table-BwoJCFgs.js.map +0 -1
  644. package/dist/shared/hx-date-picker-DDcIBJir.js +0 -980
  645. package/dist/shared/hx-date-picker-DDcIBJir.js.map +0 -1
  646. package/dist/shared/hx-dialog-M7so0sRT.js.map +0 -1
  647. package/dist/shared/hx-divider-XgWIz4Mr.js.map +0 -1
  648. package/dist/shared/hx-drawer-CYxuhIQ0.js.map +0 -1
  649. package/dist/shared/hx-dropdown-7cfowTWv.js.map +0 -1
  650. package/dist/shared/hx-field-CDP8EXuj.js.map +0 -1
  651. package/dist/shared/hx-field-label-Bg-EWvqF.js.map +0 -1
  652. package/dist/shared/hx-file-upload-9HbONfqt.js.map +0 -1
  653. package/dist/shared/hx-form-BFv_N1dm.js +0 -1272
  654. package/dist/shared/hx-form-BFv_N1dm.js.map +0 -1
  655. package/dist/shared/hx-format-date-BsVr8gpD.js.map +0 -1
  656. package/dist/shared/hx-grid-BsDBCTbt.js.map +0 -1
  657. package/dist/shared/hx-icon--xsJztDh.js.map +0 -1
  658. package/dist/shared/hx-image-xyb_tHCR.js.map +0 -1
  659. package/dist/shared/hx-link-DfNy_UU8.js.map +0 -1
  660. package/dist/shared/hx-list-CdRNgeoP.js.map +0 -1
  661. package/dist/shared/hx-menu-divider-DR8klkFT.js.map +0 -1
  662. package/dist/shared/hx-meter-CZ7lnMra.js.map +0 -1
  663. package/dist/shared/hx-nav-DM6-cGKF.js.map +0 -1
  664. package/dist/shared/hx-nav-item-D54-5eUM.js.map +0 -1
  665. package/dist/shared/hx-number-input-BP6TIA92.js.map +0 -1
  666. package/dist/shared/hx-overflow-menu-CobkjAb8.js.map +0 -1
  667. package/dist/shared/hx-pagination-10dpXS95.js.map +0 -1
  668. package/dist/shared/hx-popover-ULjonbaO.js.map +0 -1
  669. package/dist/shared/hx-popup-CYf9Q5sj.js.map +0 -1
  670. package/dist/shared/hx-progress-bar-CnTibV63.js.map +0 -1
  671. package/dist/shared/hx-progress-ring-BHJBaXNk.js.map +0 -1
  672. package/dist/shared/hx-prose-DZh2KrMb.js +0 -876
  673. package/dist/shared/hx-prose-DZh2KrMb.js.map +0 -1
  674. package/dist/shared/hx-radio-BnKcRuQu.js.map +0 -1
  675. package/dist/shared/hx-rating-Y_t7Z4qb.js.map +0 -1
  676. package/dist/shared/hx-select-C50lD7NS.js.map +0 -1
  677. package/dist/shared/hx-slider-CprSNrRi.js.map +0 -1
  678. package/dist/shared/hx-spinner-BOApJ-g9.js.map +0 -1
  679. package/dist/shared/hx-split-button-CHGy4FUc.js.map +0 -1
  680. package/dist/shared/hx-split-panel-DYtB45Tr.js.map +0 -1
  681. package/dist/shared/hx-stack-CfoW7jU7.js.map +0 -1
  682. package/dist/shared/hx-stat-C2wfph8W.js.map +0 -1
  683. package/dist/shared/hx-status-indicator-oYWOkWlD.js.map +0 -1
  684. package/dist/shared/hx-step-DYoIumpR.js.map +0 -1
  685. package/dist/shared/hx-structured-list-CMWllxGg.js.map +0 -1
  686. package/dist/shared/hx-switch-DkKchcuP.js.map +0 -1
  687. package/dist/shared/hx-tab-panel-BRNcLICw.js.map +0 -1
  688. package/dist/shared/hx-tag-B3N-vZ6B.js.map +0 -1
  689. package/dist/shared/hx-td-CVwCGBYf.js.map +0 -1
  690. package/dist/shared/hx-text-NjKoQATI.js.map +0 -1
  691. package/dist/shared/hx-text-input-CCZZbWQ9.js.map +0 -1
  692. package/dist/shared/hx-textarea-BsQdB1Rk.js.map +0 -1
  693. package/dist/shared/hx-theme-6GDoUG8j.js +0 -176
  694. package/dist/shared/hx-theme-6GDoUG8j.js.map +0 -1
  695. package/dist/shared/hx-time-picker-CJcIjH3C.js.map +0 -1
  696. package/dist/shared/hx-toggle-button-D4F1soEM.js.map +0 -1
  697. package/dist/shared/hx-tooltip-Bk1iQRHs.js.map +0 -1
  698. package/dist/shared/hx-tree-item-BobGN76x.js.map +0 -1
  699. package/dist/shared/toast-factory-MvMMreTu.js.map +0 -1
@@ -0,0 +1,1784 @@
1
+ /* helix-core.css — 15 components */
2
+
3
+ /* ── hx-avatar ── */
4
+ :host {
5
+ display: inline-block;
6
+ }
7
+
8
+ /* P2-5: Respect the HTML hidden attribute — custom elements with explicit display ignore it otherwise. */
9
+ :host([hidden]) {
10
+ display: none !important;
11
+ }
12
+
13
+ /* P0-2: Wrapper provides the positioning context for the badge slot, outside overflow: hidden. */
14
+ .avatar-wrapper {
15
+ position: relative;
16
+ display: inline-flex;
17
+ }
18
+
19
+ .avatar {
20
+ display: flex;
21
+ align-items: center;
22
+ justify-content: center;
23
+ overflow: hidden;
24
+ width: var(--hx-avatar-size);
25
+ height: var(--hx-avatar-size);
26
+ background-color: var(--hx-avatar-bg, var(--hx-color-primary-100));
27
+ color: var(--hx-avatar-color, var(--hx-color-primary-700));
28
+ border-radius: var(--hx-avatar-border-radius);
29
+ flex-shrink: 0;
30
+ }
31
+
32
+ /* ─── Size Variants ─── */
33
+
34
+ .avatar--xs {
35
+ --hx-avatar-size: var(--hx-size-6, 1.5rem);
36
+ --hx-avatar-font-size: var(--hx-font-size-2xs, 0.625rem);
37
+ }
38
+
39
+ .avatar--sm {
40
+ --hx-avatar-size: var(--hx-size-8, 2rem);
41
+ --hx-avatar-font-size: var(--hx-font-size-xs, 0.75rem);
42
+ }
43
+
44
+ .avatar--md {
45
+ --hx-avatar-size: var(--hx-size-10, 2.5rem);
46
+ --hx-avatar-font-size: var(--hx-font-size-sm, 0.875rem);
47
+ }
48
+
49
+ .avatar--lg {
50
+ --hx-avatar-size: var(--hx-size-12, 3rem);
51
+ --hx-avatar-font-size: var(--hx-font-size-md, 1rem);
52
+ }
53
+
54
+ .avatar--xl {
55
+ --hx-avatar-size: var(--hx-size-16, 4rem);
56
+ --hx-avatar-font-size: var(--hx-font-size-lg, 1.125rem);
57
+ }
58
+
59
+ /* ─── Shape Variants ─── */
60
+
61
+ .avatar--circle {
62
+ --hx-avatar-border-radius: 50%;
63
+ }
64
+
65
+ .avatar--square {
66
+ --hx-avatar-border-radius: var(--hx-border-radius-md, 0.375rem);
67
+ }
68
+
69
+ /* ─── Image ─── */
70
+
71
+ .avatar__image {
72
+ width: 100%;
73
+ height: 100%;
74
+ object-fit: cover;
75
+ display: block;
76
+ }
77
+
78
+ /* ─── Initials ─── */
79
+
80
+ .avatar__initials {
81
+ font-family: var(--hx-font-family-sans, sans-serif);
82
+ font-size: var(--hx-avatar-font-size);
83
+ font-weight: var(--hx-font-weight-semibold, 600);
84
+ line-height: 1;
85
+ text-transform: uppercase;
86
+ letter-spacing: var(--hx-letter-spacing-wide, 0.025em);
87
+ user-select: none;
88
+ }
89
+
90
+ /* ─── Fallback Icon ─── */
91
+
92
+ .avatar__fallback-icon {
93
+ width: 60%;
94
+ height: 60%;
95
+ color: var(--hx-avatar-color, var(--hx-color-primary-700));
96
+ }
97
+
98
+ /* ─── Badge Slot ─── */
99
+
100
+ /* P0-2: Positioned relative to .avatar-wrapper — outside the overflow: hidden on .avatar. */
101
+ .avatar__badge {
102
+ position: absolute;
103
+ bottom: 0;
104
+ right: 0;
105
+ }
106
+
107
+ /* P2-2: Hide the badge wrapper when no slot content is present, preserving slotchange detection. */
108
+ .avatar__badge--hidden {
109
+ display: none;
110
+ }
111
+
112
+ /* P1-B: Windows High Contrast Mode — avatar background is stripped by the system,
113
+ leaving no visual boundary. Add a border so the avatar remains perceivable.
114
+ WCAG 1.4.11 Non-text Contrast (Level AA). */
115
+ @media (forced-colors: active) {
116
+ .avatar {
117
+ border: 2px solid ButtonText;
118
+ }
119
+ }
120
+ /* ── hx-badge ── */
121
+ :host {
122
+ display: inline-block;
123
+ }
124
+
125
+ .badge {
126
+ display: inline-flex;
127
+ align-items: center;
128
+ justify-content: center;
129
+ gap: var(--hx-space-1, 0.25rem);
130
+ border-radius: var(--hx-badge-border-radius, var(--hx-border-radius-md, 0.375rem));
131
+ background-color: var(--hx-badge-bg, var(--hx-color-primary-500, #2563eb));
132
+ color: var(--hx-badge-color, var(--hx-color-neutral-0, #ffffff));
133
+ font-family: var(--hx-badge-font-family, var(--hx-font-family-sans, sans-serif));
134
+ font-weight: var(--hx-badge-font-weight, var(--hx-font-weight-semibold, 600));
135
+ line-height: var(--hx-line-height-tight, 1.25);
136
+ white-space: nowrap;
137
+ vertical-align: middle;
138
+ position: relative;
139
+ }
140
+
141
+ /* ─── Size Variants ─── */
142
+
143
+ .badge--sm {
144
+ font-size: var(--hx-badge-font-size, var(--hx-font-size-2xs, 0.625rem));
145
+ padding: var(--hx-badge-padding-y, var(--hx-space-0-5, 0.125rem))
146
+ var(--hx-badge-padding-x, var(--hx-space-1-5, 0.375rem));
147
+ }
148
+
149
+ .badge--md {
150
+ font-size: var(--hx-badge-font-size, var(--hx-font-size-xs, 0.75rem));
151
+ padding: var(--hx-badge-padding-y, var(--hx-space-1, 0.25rem))
152
+ var(--hx-badge-padding-x, var(--hx-space-2, 0.5rem));
153
+ }
154
+
155
+ .badge--lg {
156
+ font-size: var(--hx-badge-font-size, var(--hx-font-size-sm, 0.875rem));
157
+ padding: var(--hx-badge-padding-y, var(--hx-space-1, 0.25rem))
158
+ var(--hx-badge-padding-x, var(--hx-space-3, 0.75rem));
159
+ }
160
+
161
+ /* ─── Style Variants ─── */
162
+
163
+ .badge--primary {
164
+ --hx-badge-bg: var(--hx-color-primary-500, #2563eb);
165
+ --hx-badge-color: var(--hx-color-neutral-0, #ffffff);
166
+ --hx-badge-pulse-color: var(--hx-color-primary-500, #2563eb);
167
+ }
168
+
169
+ .badge--secondary {
170
+ --hx-badge-bg: var(--hx-badge-secondary-bg, var(--hx-color-neutral-100, #f3f4f6));
171
+ --hx-badge-color: var(--hx-badge-secondary-color, var(--hx-color-neutral-700, #374151));
172
+ --hx-badge-pulse-color: var(--hx-badge-secondary-bg, var(--hx-color-neutral-100, #f3f4f6));
173
+ }
174
+
175
+ .badge--success {
176
+ --hx-badge-bg: var(--hx-color-success-700, #15803d);
177
+ --hx-badge-color: var(--hx-color-neutral-0, #ffffff);
178
+ --hx-badge-pulse-color: var(--hx-color-success-700, #15803d);
179
+ }
180
+
181
+ .badge--warning {
182
+ --hx-badge-bg: var(--hx-color-warning-500, #eab308);
183
+ --hx-badge-color: var(--hx-color-neutral-900, #1a1a1a);
184
+ --hx-badge-pulse-color: var(--hx-color-warning-500, #eab308);
185
+ }
186
+
187
+ .badge--error {
188
+ --hx-badge-bg: var(--hx-color-error-500, #dc2626);
189
+ --hx-badge-color: var(--hx-color-neutral-0, #ffffff);
190
+ --hx-badge-pulse-color: var(--hx-color-error-500, #dc2626);
191
+ }
192
+
193
+ .badge--neutral {
194
+ --hx-badge-bg: var(--hx-color-neutral-200, #e5e7eb);
195
+ --hx-badge-color: var(--hx-color-neutral-700, #374151);
196
+ --hx-badge-pulse-color: var(--hx-color-neutral-200, #e5e7eb);
197
+ }
198
+
199
+ .badge--info {
200
+ --hx-badge-bg: var(--hx-badge-info-bg, var(--hx-color-info-700, #0369a1));
201
+ --hx-badge-color: var(--hx-badge-info-color, var(--hx-color-neutral-0, #ffffff));
202
+ --hx-badge-pulse-color: var(--hx-badge-info-bg, var(--hx-color-info-700, #0369a1));
203
+ }
204
+
205
+ /* ─── Semantic Variant Label (WCAG 1.4.1) ─── */
206
+ /* Visually hidden text prefix for semantic variants (success/warning/error/info). */
207
+ /* Ensures the variant is not conveyed by color alone. */
208
+
209
+ .badge__variant-label {
210
+ position: absolute;
211
+ width: 1px;
212
+ height: 1px;
213
+ padding: 0;
214
+ margin: -1px;
215
+ overflow: hidden;
216
+ clip: rect(0, 0, 0, 0);
217
+ white-space: nowrap;
218
+ border: 0;
219
+ }
220
+
221
+ /* ─── Pill Mode ─── */
222
+
223
+ .badge--pill {
224
+ border-radius: var(--hx-badge-border-radius, var(--hx-border-radius-full, 9999px));
225
+ }
226
+
227
+ /* ─── Dot Indicator (empty + pulse) ─── */
228
+
229
+ .badge--dot {
230
+ width: var(--hx-badge-dot-size, var(--hx-space-2, 0.5rem));
231
+ height: var(--hx-badge-dot-size, var(--hx-space-2, 0.5rem));
232
+ padding: 0;
233
+ border-radius: var(--hx-border-radius-full, 9999px);
234
+ }
235
+
236
+ /* Guard: hide prefix slot and slotted content in dot mode to prevent overflow */
237
+ .badge--dot ::slotted(*) {
238
+ display: none;
239
+ }
240
+
241
+ /* ─── Pulse Animation ─── */
242
+
243
+ @keyframes hx-badge-pulse {
244
+ 0%,
245
+ 100% {
246
+ opacity: 1;
247
+ box-shadow: 0 0 0 0 var(--hx-badge-pulse-color, currentColor);
248
+ }
249
+ 50% {
250
+ opacity: var(--hx-opacity-75, 0.75);
251
+ box-shadow: 0 0 0 4px transparent;
252
+ }
253
+ }
254
+
255
+ .badge--pulse {
256
+ animation: hx-badge-pulse var(--hx-badge-pulse-duration, var(--hx-duration-slow, 2s))
257
+ var(--hx-badge-pulse-easing, var(--hx-easing-in-out, ease-in-out)) infinite;
258
+ }
259
+
260
+ @media (prefers-reduced-motion: reduce) {
261
+ .badge--pulse {
262
+ animation: none;
263
+ }
264
+ }
265
+
266
+ /* ─── Remove Button ─── */
267
+
268
+ .badge__remove-button {
269
+ display: inline-flex;
270
+ align-items: center;
271
+ justify-content: center;
272
+ background: none;
273
+ border: none;
274
+ padding: 0;
275
+ margin-inline-start: var(--hx-space-1, 0.25rem);
276
+ cursor: pointer;
277
+ color: inherit;
278
+ opacity: var(--hx-opacity-75, 0.75);
279
+ border-radius: var(--hx-border-radius-sm, 0.125rem);
280
+ line-height: 0;
281
+ /* WCAG 2.5.5: minimum 44×44px touch target */
282
+ min-width: var(--hx-touch-target-min, 2.75rem);
283
+ min-height: var(--hx-touch-target-min, 2.75rem);
284
+ }
285
+
286
+ .badge__remove-button:hover {
287
+ opacity: var(--hx-opacity-100, 1);
288
+ }
289
+
290
+ .badge__remove-button:focus-visible {
291
+ outline: var(--hx-focus-ring-width, 2px) solid var(--hx-focus-ring-color, currentColor);
292
+ outline-offset: var(--hx-focus-ring-offset, 1px);
293
+ }
294
+ /* ── hx-button ── */
295
+ :host {
296
+ display: inline-block;
297
+ }
298
+
299
+ :host([disabled]) {
300
+ pointer-events: none;
301
+ opacity: var(--hx-opacity-disabled, 0.5);
302
+ }
303
+
304
+ :host([full]) {
305
+ display: block;
306
+ width: 100%;
307
+ }
308
+
309
+ :host([full]) .button {
310
+ width: 100%;
311
+ justify-content: center;
312
+ }
313
+
314
+ /* ─── Base Button ─── */
315
+
316
+ .button {
317
+ display: inline-flex;
318
+ align-items: center;
319
+ justify-content: center;
320
+ gap: var(--hx-space-2, 0.5rem);
321
+ border: var(--hx-border-width-thin, 1px) solid var(--hx-button-border-color, transparent);
322
+ border-radius: var(--hx-button-border-radius, var(--hx-border-radius-md, 0.375rem));
323
+ background-color: var(--hx-button-bg, var(--hx-color-primary-500, #2563eb));
324
+ color: var(--hx-button-color, var(--hx-color-neutral-0, #ffffff));
325
+ font-family: var(--hx-button-font-family, var(--hx-font-family-sans, sans-serif));
326
+ font-weight: var(--hx-button-font-weight, var(--hx-font-weight-semibold, 600));
327
+ line-height: var(--hx-line-height-tight, 1.25);
328
+ cursor: pointer;
329
+ transition:
330
+ background-color var(--hx-transition-fast, 150ms ease),
331
+ color var(--hx-transition-fast, 150ms ease),
332
+ border-color var(--hx-transition-fast, 150ms ease),
333
+ box-shadow var(--hx-transition-fast, 150ms ease);
334
+ text-decoration: none;
335
+ white-space: nowrap;
336
+ user-select: none;
337
+ -webkit-user-select: none;
338
+ }
339
+
340
+ .button:focus-visible {
341
+ outline: var(--hx-focus-ring-width, 2px) solid
342
+ var(--hx-button-focus-ring-color, var(--hx-focus-ring-color, var(--hx-color-primary-500)));
343
+ outline-offset: var(--hx-focus-ring-offset, 2px);
344
+ }
345
+
346
+ .button:hover {
347
+ filter: brightness(var(--hx-filter-brightness-hover, 0.9));
348
+ }
349
+
350
+ .button:active {
351
+ filter: brightness(var(--hx-filter-brightness-active, 0.8));
352
+ }
353
+
354
+ /* ─── Size Variants ─── */
355
+
356
+ .button--sm {
357
+ padding: var(--hx-space-1, 0.25rem) var(--hx-space-3, 0.75rem);
358
+ font-size: var(--hx-font-size-sm, 0.875rem);
359
+ min-height: var(--hx-size-8, 2rem);
360
+ }
361
+
362
+ .button--md {
363
+ padding: var(--hx-space-2, 0.5rem) var(--hx-space-4, 1rem);
364
+ font-size: var(--hx-font-size-md, 1rem);
365
+ min-height: var(--hx-size-10, 2.5rem);
366
+ }
367
+
368
+ .button--lg {
369
+ padding: var(--hx-space-3, 0.75rem) var(--hx-space-6, 1.5rem);
370
+ font-size: var(--hx-font-size-lg, 1.125rem);
371
+ min-height: var(--hx-size-12, 3rem);
372
+ }
373
+
374
+ /* ─── Style Variants ─── */
375
+
376
+ .button--primary {
377
+ --hx-button-bg: var(--hx-color-primary-500);
378
+ --hx-button-color: var(--hx-color-neutral-0);
379
+ --hx-button-border-color: transparent;
380
+ }
381
+
382
+ .button--secondary {
383
+ --hx-button-bg: transparent;
384
+ --hx-button-color: var(--hx-color-primary-500);
385
+ --hx-button-border-color: var(--hx-color-primary-500);
386
+ }
387
+
388
+ .button--secondary:hover {
389
+ --hx-button-bg: var(--hx-button-hover-bg, var(--hx-color-primary-50));
390
+ }
391
+
392
+ .button--tertiary {
393
+ --hx-button-bg: var(--hx-color-neutral-100);
394
+ --hx-button-color: var(--hx-color-neutral-900);
395
+ --hx-button-border-color: transparent;
396
+ }
397
+
398
+ .button--tertiary:hover {
399
+ --hx-button-bg: var(--hx-button-hover-bg, var(--hx-color-neutral-200));
400
+ }
401
+
402
+ .button--danger {
403
+ --hx-button-bg: var(--hx-color-error-500);
404
+ --hx-button-color: var(--hx-color-neutral-0);
405
+ --hx-button-border-color: transparent;
406
+ }
407
+
408
+ .button--danger:hover {
409
+ --hx-button-bg: var(--hx-button-hover-bg, var(--hx-color-error-600));
410
+ }
411
+
412
+ .button--ghost {
413
+ --hx-button-bg: transparent;
414
+ --hx-button-color: var(--hx-color-primary-500);
415
+ --hx-button-border-color: transparent;
416
+ }
417
+
418
+ .button--ghost:hover {
419
+ --hx-button-bg: var(--hx-button-hover-bg, var(--hx-color-neutral-100));
420
+ }
421
+
422
+ .button--outline {
423
+ --hx-button-bg: transparent;
424
+ --hx-button-color: var(--hx-color-neutral-900);
425
+ --hx-button-border-color: var(--hx-color-neutral-300);
426
+ }
427
+
428
+ .button--outline:hover {
429
+ --hx-button-bg: var(--hx-button-hover-bg, var(--hx-color-neutral-50));
430
+ }
431
+
432
+ .button--primary:hover {
433
+ --hx-button-bg: var(--hx-button-hover-bg, var(--hx-color-primary-500));
434
+ }
435
+
436
+ /* ─── Disabled ─── */
437
+
438
+ /* Note: opacity is applied on :host([disabled]) above — do NOT add opacity here.
439
+ Stacking opacity on both :host and .button[disabled] would multiply to 0.25. */
440
+ .button[disabled] {
441
+ cursor: not-allowed;
442
+ }
443
+
444
+ /* ─── Loading State ─── */
445
+
446
+ .button--loading {
447
+ position: relative;
448
+ cursor: wait;
449
+ }
450
+
451
+ .button__spinner {
452
+ width: 1em;
453
+ height: 1em;
454
+ flex-shrink: 0;
455
+ animation: hx-spin var(--hx-duration-spinner, 750ms) linear infinite;
456
+ }
457
+
458
+ @keyframes hx-spin {
459
+ to {
460
+ transform: rotate(360deg);
461
+ }
462
+ }
463
+
464
+ @media (prefers-reduced-motion: reduce) {
465
+ .button {
466
+ transition: none;
467
+ }
468
+
469
+ .button__spinner {
470
+ animation: none;
471
+ opacity: var(--hx-opacity-muted, 0.6);
472
+ }
473
+ }
474
+
475
+ /* ─── Inverted Mode ─── */
476
+
477
+ /* Override text color and filter-based hover/active for all variants */
478
+ :host([inverted]) .button {
479
+ color: var(--hx-button-inverted-color, var(--hx-color-neutral-0));
480
+ filter: none;
481
+ }
482
+
483
+ :host([inverted]) .button:hover {
484
+ filter: none;
485
+ }
486
+
487
+ :host([inverted]) .button:active {
488
+ filter: none;
489
+ }
490
+
491
+ :host([inverted]) .button:focus-visible {
492
+ outline-color: var(
493
+ --hx-button-inverted-focus-ring-color,
494
+ var(--hx-overlay-white-50, rgba(255, 255, 255, 0.5))
495
+ );
496
+ }
497
+
498
+ /* Primary inverted — slight transparent white overlay on hover */
499
+ :host([inverted]) .button--primary:hover {
500
+ --hx-button-bg: var(--hx-color-primary-400, #3b82f6);
501
+ }
502
+
503
+ /* Secondary inverted — white border and text */
504
+ :host([inverted]) .button--secondary {
505
+ --hx-button-border-color: var(--hx-overlay-white-70, rgba(255, 255, 255, 0.7));
506
+ }
507
+
508
+ :host([inverted]) .button--secondary:hover {
509
+ --hx-button-bg: var(--hx-overlay-white-15, rgba(255, 255, 255, 0.15));
510
+ }
511
+
512
+ /* Tertiary inverted */
513
+ :host([inverted]) .button--tertiary {
514
+ --hx-button-bg: var(--hx-overlay-white-15, rgba(255, 255, 255, 0.15));
515
+ --hx-button-border-color: transparent;
516
+ }
517
+
518
+ :host([inverted]) .button--tertiary:hover {
519
+ --hx-button-bg: var(--hx-overlay-white-25, rgba(255, 255, 255, 0.25));
520
+ }
521
+
522
+ /* Ghost inverted — transparent base, white hover bg */
523
+ :host([inverted]) .button--ghost {
524
+ --hx-button-bg: transparent;
525
+ --hx-button-border-color: transparent;
526
+ }
527
+
528
+ :host([inverted]) .button--ghost:hover {
529
+ --hx-button-bg: var(
530
+ --hx-button-inverted-ghost-hover-bg,
531
+ var(--hx-overlay-white-20, rgba(255, 255, 255, 0.2))
532
+ );
533
+ }
534
+
535
+ /* Outline inverted — white border */
536
+ :host([inverted]) .button--outline {
537
+ --hx-button-border-color: var(--hx-overlay-white-70, rgba(255, 255, 255, 0.7));
538
+ }
539
+
540
+ :host([inverted]) .button--outline:hover {
541
+ --hx-button-bg: var(--hx-overlay-white-15, rgba(255, 255, 255, 0.15));
542
+ }
543
+
544
+ /* ─── Prefix / Suffix / Label ─── */
545
+
546
+ .button__prefix,
547
+ .button__suffix {
548
+ display: inline-flex;
549
+ align-items: center;
550
+ flex-shrink: 0;
551
+ }
552
+
553
+ .button__label {
554
+ flex: 1 1 auto;
555
+ }
556
+ /* ── hx-button-group ── */
557
+ :host {
558
+ display: inline-flex;
559
+ contain: layout style;
560
+ }
561
+
562
+ .group {
563
+ display: inline-flex;
564
+ align-items: stretch;
565
+ }
566
+
567
+ /* ─── Orientation Variants ─── */
568
+
569
+ .group--horizontal {
570
+ flex-direction: row;
571
+ }
572
+
573
+ .group--vertical {
574
+ flex-direction: column;
575
+ }
576
+
577
+ /* ─── No Double Borders: Horizontal ─── */
578
+
579
+ .group--horizontal ::slotted(*:not(:first-child)) {
580
+ margin-inline-start: calc(-1 * var(--hx-border-width-thin, 1px));
581
+ }
582
+
583
+ /* ─── No Double Borders: Vertical ─── */
584
+
585
+ .group--vertical ::slotted(*:not(:first-child)) {
586
+ margin-top: calc(-1 * var(--hx-border-width-thin, 1px));
587
+ }
588
+
589
+ /* ─── Border Radius: Horizontal — Single child keeps all corners ─── */
590
+
591
+ .group--horizontal ::slotted(:only-child) {
592
+ --hx-button-border-radius: var(--hx-border-radius-md, 0.375rem);
593
+ }
594
+
595
+ /* ─── Border Radius: Horizontal — First child keeps left corners ─── */
596
+
597
+ .group--horizontal ::slotted(:first-child:not(:only-child)) {
598
+ --hx-button-border-radius: var(--hx-border-radius-md, 0.375rem) 0 0
599
+ var(--hx-border-radius-md, 0.375rem);
600
+ }
601
+
602
+ /* ─── Border Radius: Horizontal — Last child keeps right corners ─── */
603
+
604
+ .group--horizontal ::slotted(:last-child:not(:only-child)) {
605
+ --hx-button-border-radius: 0 var(--hx-border-radius-md, 0.375rem)
606
+ var(--hx-border-radius-md, 0.375rem) 0;
607
+ }
608
+
609
+ /* ─── Border Radius: Horizontal — Middle children have no radius ─── */
610
+
611
+ .group--horizontal ::slotted(:not(:first-child):not(:last-child)) {
612
+ --hx-button-border-radius: 0;
613
+ }
614
+
615
+ /* ─── Border Radius: Vertical — Single child keeps all corners ─── */
616
+
617
+ .group--vertical ::slotted(:only-child) {
618
+ --hx-button-border-radius: var(--hx-border-radius-md, 0.375rem);
619
+ }
620
+
621
+ /* ─── Border Radius: Vertical — First child keeps top corners ─── */
622
+
623
+ .group--vertical ::slotted(:first-child:not(:only-child)) {
624
+ --hx-button-border-radius: var(--hx-border-radius-md, 0.375rem)
625
+ var(--hx-border-radius-md, 0.375rem) 0 0;
626
+ }
627
+
628
+ /* ─── Border Radius: Vertical — Last child keeps bottom corners ─── */
629
+
630
+ .group--vertical ::slotted(:last-child:not(:only-child)) {
631
+ --hx-button-border-radius: 0 0 var(--hx-border-radius-md, 0.375rem)
632
+ var(--hx-border-radius-md, 0.375rem);
633
+ }
634
+
635
+ /* ─── Border Radius: Vertical — Middle children have no radius ─── */
636
+
637
+ .group--vertical ::slotted(:not(:first-child):not(:last-child)) {
638
+ --hx-button-border-radius: 0;
639
+ }
640
+
641
+ /* ─── Z-index: Raise focused child above siblings to show full focus ring ─── */
642
+
643
+ .group ::slotted(:focus-within) {
644
+ z-index: 1;
645
+ position: relative;
646
+ }
647
+ /* ── hx-card ── */
648
+ :host {
649
+ display: block;
650
+ color: var(--hx-card-color, inherit);
651
+ background-color: var(--hx-card-bg, var(--hx-color-neutral-0, #ffffff));
652
+ }
653
+
654
+ .card {
655
+ display: flex;
656
+ flex-direction: column;
657
+ gap: var(--hx-card-gap, var(--hx-space-4, 1rem));
658
+ background-color: var(--hx-card-bg, var(--hx-color-neutral-0, #ffffff));
659
+ color: var(--hx-card-color, var(--hx-color-neutral-800, #212529));
660
+ border: var(--hx-border-width-thin, 1px) solid
661
+ var(--hx-card-border-color, var(--hx-color-neutral-200, #dee2e6));
662
+ border-radius: var(--hx-card-border-radius, var(--hx-border-radius-lg, 0.5rem));
663
+ overflow: hidden;
664
+ font-family: var(--hx-font-family-sans, sans-serif);
665
+ transition:
666
+ box-shadow var(--hx-transition-normal, 250ms ease),
667
+ transform var(--hx-transition-normal, 250ms ease);
668
+ }
669
+
670
+ /* ─── Elevation Variants ─── */
671
+
672
+ .card--flat {
673
+ box-shadow: none;
674
+ }
675
+
676
+ .card--raised {
677
+ box-shadow: var(--hx-shadow-md, 0 4px 6px -1px rgb(0 0 0 / 0.1));
678
+ }
679
+
680
+ .card--floating {
681
+ box-shadow: var(--hx-shadow-xl, 0 20px 25px -5px rgb(0 0 0 / 0.1));
682
+ }
683
+
684
+ /* ─── Style Variants ─── */
685
+
686
+ .card--default {
687
+ /* Default styling — uses base styles */
688
+ }
689
+
690
+ .card--featured {
691
+ border-color: var(--hx-color-primary-500, #2563eb);
692
+ border-width: var(--hx-border-width-medium, 2px);
693
+ }
694
+
695
+ .card--compact .card__body {
696
+ padding: var(--hx-space-3, 0.75rem);
697
+ }
698
+
699
+ .card--compact .card__heading {
700
+ padding-top: var(--hx-space-3, 0.75rem);
701
+ padding-inline-end: var(--hx-space-3, 0.75rem);
702
+ padding-inline-start: var(--hx-space-3, 0.75rem);
703
+ }
704
+
705
+ .card--compact .card__footer {
706
+ padding-inline-end: var(--hx-space-3, 0.75rem);
707
+ padding-bottom: var(--hx-space-3, 0.75rem);
708
+ padding-inline-start: var(--hx-space-3, 0.75rem);
709
+ }
710
+
711
+ .card--compact .card__actions {
712
+ padding-inline-end: var(--hx-space-3, 0.75rem);
713
+ padding-bottom: var(--hx-space-3, 0.75rem);
714
+ padding-inline-start: var(--hx-space-3, 0.75rem);
715
+ }
716
+
717
+ /* ─── Interactive ─── */
718
+
719
+ .card--interactive {
720
+ cursor: pointer;
721
+ }
722
+
723
+ .card--interactive:hover {
724
+ box-shadow: var(--hx-shadow-lg, 0 10px 15px -3px rgb(0 0 0 / 0.1));
725
+ transform: translateY(var(--hx-lift-md, -2px));
726
+ }
727
+
728
+ .card--interactive:focus-visible {
729
+ outline: var(--hx-focus-ring-width, 2px) solid
730
+ var(--hx-card-focus-ring-color, var(--hx-focus-ring-color, var(--hx-color-primary-500)));
731
+ outline-offset: var(--hx-focus-ring-offset, 2px);
732
+ }
733
+
734
+ .card--interactive:active {
735
+ transform: translateY(0);
736
+ }
737
+
738
+ @media (prefers-reduced-motion: reduce) {
739
+ .card {
740
+ transition: none;
741
+ }
742
+
743
+ .card--interactive:hover {
744
+ transform: none;
745
+ }
746
+
747
+ .card--interactive:active {
748
+ transform: none;
749
+ }
750
+ }
751
+
752
+ /* ─── Hidden empty slot wrappers ─── */
753
+
754
+ [hidden] {
755
+ display: none !important;
756
+ }
757
+
758
+ /* ─── Sections ─── */
759
+
760
+ .card__image {
761
+ overflow: hidden;
762
+ line-height: 0;
763
+ }
764
+
765
+ .card__image ::slotted(img) {
766
+ width: 100%;
767
+ aspect-ratio: var(--hx-card-image-aspect-ratio, 16 / 9);
768
+ display: block;
769
+ object-fit: cover;
770
+ }
771
+
772
+ .card__heading {
773
+ padding-top: var(--hx-card-padding, var(--hx-space-6, 1.5rem));
774
+ padding-inline-end: var(--hx-card-padding, var(--hx-space-6, 1.5rem));
775
+ padding-bottom: 0;
776
+ padding-inline-start: var(--hx-card-padding, var(--hx-space-6, 1.5rem));
777
+ font-size: var(--hx-font-size-xl, 1.25rem);
778
+ font-weight: var(--hx-font-weight-semibold, 600);
779
+ line-height: var(--hx-line-height-tight, 1.25);
780
+ }
781
+
782
+ .card__body {
783
+ padding: var(--hx-card-padding, var(--hx-space-6, 1.5rem));
784
+ flex: 1;
785
+ font-size: var(--hx-font-size-md, 1rem);
786
+ line-height: var(--hx-line-height-normal, 1.5);
787
+ color: var(--hx-card-color, var(--hx-color-neutral-600, #495057));
788
+ }
789
+
790
+ .card__footer {
791
+ padding-top: 0;
792
+ padding-inline-end: var(--hx-card-padding, var(--hx-space-6, 1.5rem));
793
+ padding-bottom: var(--hx-card-padding, var(--hx-space-6, 1.5rem));
794
+ padding-inline-start: var(--hx-card-padding, var(--hx-space-6, 1.5rem));
795
+ }
796
+
797
+ .card__actions {
798
+ display: flex;
799
+ gap: var(--hx-space-2, 0.5rem);
800
+ padding-top: var(--hx-space-4, 1rem);
801
+ padding-inline-end: var(--hx-card-padding, var(--hx-space-6, 1.5rem));
802
+ padding-bottom: var(--hx-card-padding, var(--hx-space-6, 1.5rem));
803
+ padding-inline-start: var(--hx-card-padding, var(--hx-space-6, 1.5rem));
804
+ border-top: var(--hx-border-width-thin, 1px) solid
805
+ var(--hx-card-border-color, var(--hx-color-neutral-200, #dee2e6));
806
+ margin-top: auto;
807
+ }
808
+ /* ── hx-divider ── */
809
+ :host {
810
+ display: block;
811
+ --_divider-color: var(--hx-divider-color, var(--hx-color-neutral-200, #e2e8f0));
812
+ --_divider-width: var(--hx-divider-width, var(--hx-border-width-thin, 1px));
813
+ --_divider-label-color: var(--hx-divider-label-color, var(--hx-color-neutral-500, #64748b));
814
+ --_divider-label-size: var(--hx-divider-label-font-size, var(--hx-font-size-sm, 0.875rem));
815
+ --_divider-label-gap: var(--hx-divider-label-gap, var(--hx-space-3, 0.75rem));
816
+ }
817
+
818
+ /* ─── Spacing Variants ─── */
819
+
820
+ :host([spacing='none']) {
821
+ --_spacing: 0;
822
+ }
823
+
824
+ :host([spacing='sm']) {
825
+ --_spacing: var(--hx-space-2, 0.5rem);
826
+ }
827
+
828
+ :host,
829
+ :host([spacing='md']) {
830
+ --_spacing: var(--hx-space-4, 1rem);
831
+ }
832
+
833
+ :host([spacing='lg']) {
834
+ --_spacing: var(--hx-space-6, 1.5rem);
835
+ }
836
+
837
+ /* ─── Horizontal (default) ─── */
838
+
839
+ :host([orientation='horizontal']) {
840
+ margin-block: var(--_spacing);
841
+ }
842
+
843
+ /* ─── Vertical ─── */
844
+
845
+ :host([orientation='vertical']) {
846
+ display: inline-flex;
847
+ align-self: stretch;
848
+ margin-inline: var(--_spacing);
849
+ }
850
+
851
+ /* ─── Base (hr) — horizontal ─── */
852
+
853
+ .divider {
854
+ display: flex;
855
+ align-items: center;
856
+ gap: var(--_divider-label-gap);
857
+ border: none;
858
+ margin: 0;
859
+ padding: 0;
860
+ }
861
+
862
+ /* ─── Base — vertical ─── */
863
+
864
+ :host([orientation='vertical']) .divider {
865
+ flex-direction: column;
866
+ height: 100%;
867
+ }
868
+
869
+ /* ─── Lines flanking label ─── */
870
+
871
+ .divider__line {
872
+ flex: 1;
873
+ background-color: var(--_divider-color);
874
+ }
875
+
876
+ :host(:not([orientation='vertical'])) .divider__line {
877
+ height: var(--_divider-width);
878
+ }
879
+
880
+ :host([orientation='vertical']) .divider__line {
881
+ width: var(--_divider-width);
882
+ height: auto;
883
+ min-height: 0;
884
+ }
885
+
886
+ /* ─── Label ─── */
887
+
888
+ .divider__label {
889
+ flex-shrink: 0;
890
+ color: var(--_divider-label-color);
891
+ font-size: var(--_divider-label-size);
892
+ line-height: var(--hx-line-height-tight, 1.25);
893
+ white-space: nowrap;
894
+ }
895
+ /* ── hx-icon ── */
896
+ :host {
897
+ display: inline-flex;
898
+ align-items: center;
899
+ justify-content: center;
900
+ /* vertical-align: middle ensures the icon aligns to the visual centre of
901
+ adjacent inline text rather than the text baseline. */
902
+ vertical-align: middle;
903
+ /* overflow: hidden prevents malformed or oversized icons from painting
904
+ outside the component boundary. The inner SVG may still set
905
+ overflow: visible for its own viewBox content. */
906
+ overflow: hidden;
907
+ width: var(--hx-icon-size, var(--hx-size-6, 1.5rem));
908
+ height: var(--hx-icon-size, var(--hx-size-6, 1.5rem));
909
+ color: var(--hx-icon-color, currentColor);
910
+ flex-shrink: 0;
911
+ }
912
+
913
+ /* ─── Size Variants ───
914
+ Fallback pixel values mirror the design token values at time of writing.
915
+ If token values are updated the fallbacks should be updated to match. */
916
+
917
+ :host([hx-size='xs']) {
918
+ --hx-icon-size: var(--hx-size-4, 1rem);
919
+ }
920
+
921
+ :host([hx-size='sm']) {
922
+ --hx-icon-size: var(--hx-size-5, 1.25rem);
923
+ }
924
+
925
+ :host([hx-size='md']) {
926
+ --hx-icon-size: var(--hx-size-6, 1.5rem);
927
+ }
928
+
929
+ :host([hx-size='lg']) {
930
+ --hx-icon-size: var(--hx-size-8, 2rem);
931
+ }
932
+
933
+ :host([hx-size='xl']) {
934
+ --hx-icon-size: var(--hx-size-10, 2.5rem);
935
+ }
936
+
937
+ /* ─── SVG (sprite mode) ───
938
+ In sprite mode [part="svg"] is an actual <svg> element. The selector
939
+ targets it specifically. In inline mode the part is applied to a <span>
940
+ wrapper — see .icon__inline below. */
941
+
942
+ svg[part='svg'] {
943
+ width: 100%;
944
+ height: 100%;
945
+ fill: currentColor;
946
+ display: block;
947
+ overflow: visible;
948
+ }
949
+
950
+ /* ─── Inline SVG wrapper ───
951
+ In inline mode [part="svg"] is a <span> that wraps the fetched SVG.
952
+ The inner <svg> is sized to fill the wrapper. */
953
+
954
+ .icon__inline {
955
+ display: inline-flex;
956
+ align-items: center;
957
+ justify-content: center;
958
+ width: 100%;
959
+ height: 100%;
960
+ }
961
+
962
+ .icon__inline svg {
963
+ width: 100%;
964
+ height: 100%;
965
+ fill: currentColor;
966
+ display: block;
967
+ }
968
+ /* ── hx-icon-button ── */
969
+ :host {
970
+ display: inline-block;
971
+ }
972
+
973
+ :host([disabled]) {
974
+ pointer-events: none;
975
+ opacity: var(--hx-opacity-disabled);
976
+ }
977
+
978
+ .button {
979
+ display: inline-flex;
980
+ align-items: center;
981
+ justify-content: center;
982
+ border: var(--hx-border-width-thin) solid var(--hx-icon-button-border-color);
983
+ border-radius: var(--hx-icon-button-border-radius, var(--hx-border-radius-md));
984
+ background-color: var(--hx-icon-button-bg);
985
+ color: var(--hx-icon-button-color, var(--hx-color-primary-500));
986
+ cursor: pointer;
987
+ transition:
988
+ background-color var(--hx-transition-fast),
989
+ color var(--hx-transition-fast),
990
+ border-color var(--hx-transition-fast),
991
+ box-shadow var(--hx-transition-fast);
992
+ text-decoration: none;
993
+ user-select: none;
994
+ -webkit-user-select: none;
995
+ flex-shrink: 0;
996
+ }
997
+
998
+ .button:focus-visible {
999
+ outline: var(--hx-focus-ring-width) solid
1000
+ var(--hx-icon-button-focus-ring-color, var(--hx-focus-ring-color));
1001
+ outline-offset: var(--hx-focus-ring-offset);
1002
+ }
1003
+
1004
+ .button:active {
1005
+ filter: brightness(var(--hx-filter-brightness-active, 0.8));
1006
+ }
1007
+
1008
+ /* ─── Size Variants ─── */
1009
+
1010
+ /* WCAG 2.5.5 (healthcare mandate): minimum 44x44px touch target for all sizes.
1011
+ min-width/min-height override the explicit size tokens when they fall below
1012
+ the 2.75rem (44px) threshold, preserving the visual icon size via font-size. */
1013
+
1014
+ .button--sm {
1015
+ padding: var(--hx-space-1);
1016
+ width: var(--hx-icon-button-size, var(--hx-size-8));
1017
+ height: var(--hx-icon-button-size, var(--hx-size-8));
1018
+ min-width: var(--hx-touch-target-min, 2.75rem);
1019
+ min-height: var(--hx-touch-target-min, 2.75rem);
1020
+ font-size: var(--hx-font-size-sm);
1021
+ }
1022
+
1023
+ .button--md {
1024
+ padding: var(--hx-space-2);
1025
+ width: var(--hx-icon-button-size, var(--hx-size-10));
1026
+ height: var(--hx-icon-button-size, var(--hx-size-10));
1027
+ min-width: var(--hx-touch-target-min, 2.75rem);
1028
+ min-height: var(--hx-touch-target-min, 2.75rem);
1029
+ font-size: var(--hx-font-size-md);
1030
+ }
1031
+
1032
+ .button--lg {
1033
+ padding: var(--hx-space-3);
1034
+ width: var(--hx-icon-button-size, var(--hx-size-12));
1035
+ height: var(--hx-icon-button-size, var(--hx-size-12));
1036
+ min-width: var(--hx-touch-target-min, 2.75rem);
1037
+ min-height: var(--hx-touch-target-min, 2.75rem);
1038
+ font-size: var(--hx-font-size-lg);
1039
+ }
1040
+
1041
+ /* ─── Style Variants ─── */
1042
+
1043
+ .button--primary {
1044
+ --hx-icon-button-bg: var(--hx-color-primary-500);
1045
+ --hx-icon-button-color: var(--hx-color-neutral-0);
1046
+ --hx-icon-button-border-color: transparent;
1047
+ }
1048
+
1049
+ .button--primary:hover {
1050
+ --hx-icon-button-bg: var(--hx-color-primary-600);
1051
+ }
1052
+
1053
+ .button--secondary {
1054
+ --hx-icon-button-bg: transparent;
1055
+ --hx-icon-button-color: var(--hx-color-primary-500);
1056
+ --hx-icon-button-border-color: var(--hx-color-primary-500);
1057
+ }
1058
+
1059
+ .button--secondary:hover {
1060
+ --hx-icon-button-bg: var(--hx-color-primary-50);
1061
+ }
1062
+
1063
+ .button--tertiary {
1064
+ --hx-icon-button-bg: transparent;
1065
+ --hx-icon-button-color: var(--hx-color-neutral-700);
1066
+ --hx-icon-button-border-color: var(--hx-color-neutral-300);
1067
+ }
1068
+
1069
+ .button--tertiary:hover {
1070
+ --hx-icon-button-bg: var(--hx-color-neutral-100);
1071
+ }
1072
+
1073
+ .button--danger {
1074
+ --hx-icon-button-bg: var(--hx-color-error-500);
1075
+ --hx-icon-button-color: var(--hx-color-neutral-0);
1076
+ --hx-icon-button-border-color: transparent;
1077
+ }
1078
+
1079
+ .button--danger:hover {
1080
+ --hx-icon-button-bg: var(--hx-color-error-600);
1081
+ }
1082
+
1083
+ .button--ghost {
1084
+ --hx-icon-button-bg: transparent;
1085
+ --hx-icon-button-color: var(--hx-color-primary-500);
1086
+ --hx-icon-button-border-color: transparent;
1087
+ }
1088
+
1089
+ .button--ghost:hover {
1090
+ --hx-icon-button-bg: var(--hx-color-neutral-100);
1091
+ }
1092
+
1093
+ /* ─── Icon Container ─── */
1094
+
1095
+ .icon {
1096
+ display: inline-flex;
1097
+ align-items: center;
1098
+ justify-content: center;
1099
+ width: 1em;
1100
+ height: 1em;
1101
+ line-height: 1;
1102
+ pointer-events: none;
1103
+ }
1104
+
1105
+ /* ─── Disabled ─── */
1106
+
1107
+ .button[disabled] {
1108
+ cursor: not-allowed;
1109
+ /* P1-02 fix: opacity is set only on :host([disabled]) above to prevent
1110
+ multiplicative stacking (0.5 * 0.5 = 0.25). Do not add opacity here. */
1111
+ }
1112
+
1113
+ /* ─── Reduced Motion ─── */
1114
+
1115
+ @media (prefers-reduced-motion: reduce) {
1116
+ .button {
1117
+ transition: none;
1118
+ }
1119
+ }
1120
+ /* ── hx-image ── */
1121
+ :host {
1122
+ display: block;
1123
+ }
1124
+
1125
+ .image__container {
1126
+ position: relative;
1127
+ display: block;
1128
+ overflow: hidden;
1129
+ margin: 0;
1130
+ padding: 0;
1131
+ aspect-ratio: var(--_ratio, var(--hx-image-aspect-ratio));
1132
+ border-radius: var(--_radius, var(--hx-image-border-radius, 0));
1133
+ }
1134
+
1135
+ .image__container--error {
1136
+ display: flex;
1137
+ align-items: center;
1138
+ justify-content: center;
1139
+ min-height: var(--hx-image-fallback-min-height, 3rem);
1140
+ background-color: var(--hx-color-neutral-100, #f3f4f6);
1141
+ color: var(--hx-color-neutral-500, #6b7280);
1142
+ }
1143
+
1144
+ .image__img {
1145
+ display: block;
1146
+ width: 100%;
1147
+ height: 100%;
1148
+ object-fit: var(--_fit, var(--hx-image-object-fit, cover));
1149
+ }
1150
+
1151
+ .image__caption {
1152
+ display: none;
1153
+ padding: var(--hx-image-caption-padding, 0.5rem 0 0);
1154
+ color: var(--hx-image-caption-color, var(--hx-color-neutral-600, #4b5563));
1155
+ font-size: var(--hx-image-caption-font-size, 0.875rem);
1156
+ }
1157
+
1158
+ .image__caption--visible {
1159
+ display: block;
1160
+ }
1161
+ /* ── hx-link ── */
1162
+ :host {
1163
+ display: inline;
1164
+ }
1165
+
1166
+ :host([disabled]) {
1167
+ cursor: not-allowed;
1168
+ }
1169
+
1170
+ /* --- Base Link --- */
1171
+
1172
+ .link {
1173
+ display: inline-flex;
1174
+ align-items: center;
1175
+ gap: var(--hx-space-1, 0.25rem);
1176
+ color: var(--hx-link-color, var(--hx-color-primary-500, #2563eb));
1177
+ font-family: var(--hx-link-font-family, var(--hx-font-family-sans, inherit));
1178
+ font-size: inherit;
1179
+ line-height: inherit;
1180
+ text-decoration: var(--hx-link-text-decoration, underline);
1181
+ text-underline-offset: var(--hx-link-underline-offset, 2px);
1182
+ cursor: pointer;
1183
+ outline: 0;
1184
+ transition:
1185
+ color var(--hx-transition-fast, 150ms ease),
1186
+ text-decoration-color var(--hx-transition-fast, 150ms ease);
1187
+ }
1188
+
1189
+ .link:hover {
1190
+ color: var(--hx-link-color-hover, var(--hx-color-primary-700, #1d4ed8));
1191
+ text-decoration: var(--hx-link-text-decoration-hover, underline);
1192
+ }
1193
+
1194
+ .link:active {
1195
+ color: var(--hx-link-color-active, var(--hx-color-primary-800, #1e40af));
1196
+ }
1197
+
1198
+ .link:focus-visible {
1199
+ outline: var(--hx-focus-ring-width, 2px) solid
1200
+ var(
1201
+ --hx-link-focus-ring-color,
1202
+ var(--hx-focus-ring-color, var(--hx-color-primary-400, #60a5fa))
1203
+ );
1204
+ outline-offset: var(--hx-focus-ring-offset, 2px);
1205
+ border-radius: var(--hx-border-radius-sm, 0.125rem);
1206
+ }
1207
+
1208
+ /* --- Variant: subtle --- */
1209
+
1210
+ .link--subtle {
1211
+ color: var(--hx-link-color-subtle, var(--hx-color-neutral-600, #475569));
1212
+ text-decoration: none;
1213
+ }
1214
+
1215
+ .link--subtle:hover {
1216
+ color: var(--hx-link-color-hover, var(--hx-color-primary-700, #1d4ed8));
1217
+ text-decoration: underline;
1218
+ }
1219
+
1220
+ /* --- Variant: danger --- */
1221
+
1222
+ .link--danger {
1223
+ color: var(--hx-link-color-danger, var(--hx-color-error-text, #b91c1c));
1224
+ }
1225
+
1226
+ .link--danger:hover {
1227
+ color: var(--hx-link-color-danger-hover, var(--hx-color-error-700, #b91c1c));
1228
+ }
1229
+
1230
+ /* --- Disabled --- */
1231
+
1232
+ .link--disabled {
1233
+ color: var(--hx-link-color-disabled, var(--hx-color-neutral-400, #94a3b8));
1234
+ text-decoration: none;
1235
+ pointer-events: none;
1236
+ }
1237
+
1238
+ /* --- External link icon --- */
1239
+
1240
+ .link__external-icon {
1241
+ display: inline-flex;
1242
+ width: 0.75em;
1243
+ height: 0.75em;
1244
+ flex-shrink: 0;
1245
+ }
1246
+
1247
+ @media (prefers-reduced-motion: reduce) {
1248
+ .link {
1249
+ transition: none;
1250
+ }
1251
+ }
1252
+
1253
+ /* --- Visually hidden (sr-only) --- */
1254
+
1255
+ .sr-only {
1256
+ position: absolute;
1257
+ width: 1px;
1258
+ height: 1px;
1259
+ padding: 0;
1260
+ margin: -1px;
1261
+ overflow: hidden;
1262
+ clip-path: inset(50%);
1263
+ white-space: nowrap;
1264
+ border: 0;
1265
+ }
1266
+ /* ── hx-skeleton ── */
1267
+ :host {
1268
+ display: block;
1269
+ }
1270
+
1271
+ :host([loaded]) {
1272
+ display: none;
1273
+ }
1274
+
1275
+ /* ─── Base ─── */
1276
+
1277
+ .skeleton {
1278
+ display: block;
1279
+ background-color: var(--hx-skeleton-bg, var(--hx-color-neutral-200, #e2e8f0));
1280
+ overflow: hidden;
1281
+ position: relative;
1282
+ width: var(--_width, 100%);
1283
+ height: var(--_height, auto);
1284
+ }
1285
+
1286
+ /* ─── Variant Shapes ─── */
1287
+
1288
+ .skeleton--text {
1289
+ border-radius: var(--hx-skeleton-text-radius, var(--hx-border-radius-full, 9999px));
1290
+ height: var(--_height, 1em);
1291
+ }
1292
+
1293
+ .skeleton--circle {
1294
+ border-radius: var(--hx-skeleton-circle-radius, 50%);
1295
+ aspect-ratio: var(--_circle-aspect-ratio, 1);
1296
+ width: var(--_width, 2.5rem);
1297
+ height: var(--_height, var(--_width, 2.5rem));
1298
+ }
1299
+
1300
+ .skeleton--rect {
1301
+ border-radius: var(--hx-skeleton-rect-radius, var(--hx-border-radius-sm, 0.25rem));
1302
+ height: var(--_height, 1rem);
1303
+ }
1304
+
1305
+ .skeleton--button {
1306
+ border-radius: var(--hx-skeleton-button-radius, var(--hx-border-radius-md, 0.375rem));
1307
+ height: var(--_height, 2.5rem);
1308
+ }
1309
+
1310
+ .skeleton--paragraph {
1311
+ border-radius: var(--hx-skeleton-text-radius, var(--hx-border-radius-full, 9999px));
1312
+ height: var(--_height, auto);
1313
+ display: flex;
1314
+ flex-direction: column;
1315
+ gap: 0.5em;
1316
+ }
1317
+
1318
+ /* ─── Shimmer Animation ─── */
1319
+
1320
+ .skeleton--animated::after {
1321
+ content: '';
1322
+ position: absolute;
1323
+ inset: 0;
1324
+ background: linear-gradient(
1325
+ 90deg,
1326
+ transparent 0%,
1327
+ var(--hx-skeleton-shimmer-color, var(--hx-overlay-white-40, rgba(255, 255, 255, 0.4))) 50%,
1328
+ transparent 100%
1329
+ );
1330
+ background-size: var(--hx-skeleton-shimmer-width, 200%) 100%;
1331
+ animation: hx-skeleton-shimmer var(--hx-skeleton-duration, 1.5s) ease-in-out infinite;
1332
+ }
1333
+
1334
+ @keyframes hx-skeleton-shimmer {
1335
+ from {
1336
+ background-position: 200% center;
1337
+ }
1338
+ to {
1339
+ background-position: -200% center;
1340
+ }
1341
+ }
1342
+
1343
+ @media (prefers-reduced-motion: reduce) {
1344
+ .skeleton--animated::after {
1345
+ display: none;
1346
+ }
1347
+ }
1348
+ /* ── hx-spinner ── */
1349
+ :host {
1350
+ display: inline-flex;
1351
+ align-items: center;
1352
+ justify-content: center;
1353
+ }
1354
+
1355
+ .spinner {
1356
+ display: inline-flex;
1357
+ align-items: center;
1358
+ justify-content: center;
1359
+ width: var(--_spinner-size);
1360
+ height: var(--_spinner-size);
1361
+ flex-shrink: 0;
1362
+ }
1363
+
1364
+ .spinner__svg {
1365
+ width: 100%;
1366
+ height: 100%;
1367
+ animation: hx-spinner-rotate var(--hx-duration-spinner, 750ms) linear infinite;
1368
+ }
1369
+
1370
+ .spinner__track {
1371
+ stroke: var(--_spinner-track-color);
1372
+ }
1373
+
1374
+ .spinner__arc {
1375
+ stroke: var(--_spinner-color);
1376
+ /* SVG arc math: viewBox is 24×24, r=10, circumference = 2π × 10 ≈ 62.83.
1377
+ stroke-dasharray: 56 creates a visible arc of ~89% of circumference.
1378
+ stroke-dashoffset: 14 shifts the arc start to produce the ~75% visible gap aesthetic.
1379
+ Adjust both proportionally if r or viewBox dimensions change. */
1380
+ stroke-dasharray: 56;
1381
+ stroke-dashoffset: 14;
1382
+ animation: hx-spinner-dash var(--hx-duration-spinner, 750ms)
1383
+ var(--hx-easing-in-out, ease-in-out) infinite;
1384
+ transform-origin: center;
1385
+ }
1386
+
1387
+ @keyframes hx-spinner-rotate {
1388
+ to {
1389
+ transform: rotate(360deg);
1390
+ }
1391
+ }
1392
+
1393
+ @keyframes hx-spinner-dash {
1394
+ 0% {
1395
+ stroke-dashoffset: 50;
1396
+ }
1397
+ 50% {
1398
+ stroke-dashoffset: 14;
1399
+ }
1400
+ 100% {
1401
+ stroke-dashoffset: 50;
1402
+ }
1403
+ }
1404
+
1405
+ @media (prefers-reduced-motion: reduce) {
1406
+ .spinner__svg {
1407
+ animation: none;
1408
+ }
1409
+
1410
+ .spinner__arc {
1411
+ animation: none;
1412
+ /* Maintain the static partial arc at full opacity so the loading state remains
1413
+ clearly communicated without motion. A faded arc looks broken; full opacity
1414
+ alongside the track ring unambiguously signals "in progress". */
1415
+ stroke-dashoffset: 14;
1416
+ opacity: 1;
1417
+ }
1418
+ }
1419
+
1420
+ /* ─── Size Variants ─── */
1421
+
1422
+ :host([size='sm']) {
1423
+ --_spinner-size: var(--hx-size-4, 1rem);
1424
+ }
1425
+
1426
+ :host([size='md']) {
1427
+ --_spinner-size: var(--hx-size-6, 1.5rem);
1428
+ }
1429
+
1430
+ :host([size='lg']) {
1431
+ --_spinner-size: var(--hx-size-8, 2rem);
1432
+ }
1433
+
1434
+ /* ─── Variant Colors ─── */
1435
+
1436
+ :host([variant='default']) {
1437
+ --_spinner-color: var(--hx-spinner-color, var(--hx-color-neutral-600, #475569));
1438
+ --_spinner-track-color: var(--hx-spinner-track-color, var(--hx-color-neutral-200, #e2e8f0));
1439
+ }
1440
+
1441
+ :host([variant='primary']) {
1442
+ --_spinner-color: var(--hx-spinner-color, var(--hx-color-primary-500, #2563eb));
1443
+ --_spinner-track-color: var(--hx-spinner-track-color, var(--hx-color-primary-100, #dbeafe));
1444
+ }
1445
+
1446
+ :host([variant='inverted']) {
1447
+ --_spinner-color: var(--hx-spinner-color, var(--hx-color-neutral-0, #ffffff));
1448
+ /* Fallback for browsers without color-mix() support (Chrome < 111, Firefox < 113, Safari < 16.2).
1449
+ rgba(255, 255, 255, 0.3) approximates the intended 30% white track color. */
1450
+ --_spinner-track-color: var(
1451
+ --hx-spinner-track-color,
1452
+ var(--hx-overlay-white-30, rgba(255, 255, 255, 0.3))
1453
+ );
1454
+ }
1455
+
1456
+ @supports (color: color-mix(in srgb, white 30%, transparent)) {
1457
+ :host([variant='inverted']) {
1458
+ --_spinner-track-color: var(
1459
+ --hx-spinner-track-color,
1460
+ color-mix(in srgb, var(--hx-color-neutral-0, #ffffff) 30%, transparent)
1461
+ );
1462
+ }
1463
+ }
1464
+ /* ── hx-tag ── */
1465
+ :host {
1466
+ display: inline-block;
1467
+ }
1468
+
1469
+ :host([disabled]) {
1470
+ opacity: var(--hx-opacity-disabled, 0.5);
1471
+ pointer-events: none;
1472
+ /* cursor: not-allowed is intentionally omitted — pointer-events: none prevents cursor display */
1473
+ }
1474
+
1475
+ .tag {
1476
+ display: inline-flex;
1477
+ align-items: center;
1478
+ gap: var(--hx-space-1, 0.25rem);
1479
+ border-radius: var(--hx-tag-border-radius, var(--hx-border-radius-sm, 0.25rem));
1480
+ background-color: var(--hx-tag-bg, var(--hx-color-neutral-100, #f3f4f6));
1481
+ color: var(--hx-tag-color, var(--hx-color-neutral-700, #374151));
1482
+ font-family: var(--hx-tag-font-family, var(--hx-font-family-sans, sans-serif));
1483
+ font-weight: var(--hx-tag-font-weight, var(--hx-font-weight-medium, 500));
1484
+ line-height: var(--hx-line-height-tight, 1.25);
1485
+ white-space: nowrap;
1486
+ vertical-align: middle;
1487
+ border: var(--hx-border-width-thin, 1px) solid
1488
+ var(--hx-tag-border-color, var(--hx-color-neutral-200, #e5e7eb));
1489
+ }
1490
+
1491
+ /* ─── Size Variants ─── */
1492
+
1493
+ .tag--sm {
1494
+ font-size: var(--hx-tag-font-size, var(--hx-font-size-xs, 0.75rem));
1495
+ padding: var(--hx-tag-padding-y, var(--hx-space-0-5, 0.125rem))
1496
+ var(--hx-tag-padding-x, var(--hx-space-1-5, 0.375rem));
1497
+ }
1498
+
1499
+ .tag--md {
1500
+ font-size: var(--hx-tag-font-size, var(--hx-font-size-sm, 0.875rem));
1501
+ padding: var(--hx-tag-padding-y, var(--hx-space-1, 0.25rem))
1502
+ var(--hx-tag-padding-x, var(--hx-space-2, 0.5rem));
1503
+ }
1504
+
1505
+ .tag--lg {
1506
+ font-size: var(--hx-tag-font-size, var(--hx-font-size-md, 1rem));
1507
+ padding: var(--hx-tag-padding-y, var(--hx-space-1-5, 0.375rem))
1508
+ var(--hx-tag-padding-x, var(--hx-space-3, 0.75rem));
1509
+ }
1510
+
1511
+ /* ─── Color Variants ─── */
1512
+
1513
+ .tag--default {
1514
+ --hx-tag-bg: var(--hx-color-neutral-100, #f3f4f6);
1515
+ --hx-tag-color: var(--hx-color-neutral-700, #374151);
1516
+ --hx-tag-border-color: var(--hx-color-neutral-200, #e5e7eb);
1517
+ }
1518
+
1519
+ .tag--primary {
1520
+ --hx-tag-bg: var(--hx-color-primary-50, #eff6ff);
1521
+ --hx-tag-color: var(--hx-color-primary-700, #1d4ed8);
1522
+ --hx-tag-border-color: var(--hx-color-primary-200, #bfdbfe);
1523
+ }
1524
+
1525
+ .tag--success {
1526
+ --hx-tag-bg: var(--hx-color-success-50, #f0fdf4);
1527
+ --hx-tag-color: var(--hx-color-success-700, #15803d);
1528
+ --hx-tag-border-color: var(--hx-color-success-200, #bbf7d0);
1529
+ }
1530
+
1531
+ .tag--warning {
1532
+ --hx-tag-bg: var(--hx-color-warning-50, #fffbeb);
1533
+ --hx-tag-color: var(--hx-color-warning-700, #b45309);
1534
+ --hx-tag-border-color: var(--hx-color-warning-200, #fde68a);
1535
+ }
1536
+
1537
+ .tag--danger {
1538
+ --hx-tag-bg: var(--hx-color-error-50, #fef2f2);
1539
+ --hx-tag-color: var(--hx-color-error-700, #b91c1c);
1540
+ --hx-tag-border-color: var(--hx-color-error-200, #fecaca);
1541
+ }
1542
+
1543
+ /* ─── Semantic Variant Label (WCAG 1.4.1) ─── */
1544
+ /* Visually hidden text prefix for semantic variants (success/warning/danger). */
1545
+ /* Ensures the variant state is not conveyed by color alone. */
1546
+
1547
+ .tag__variant-label {
1548
+ position: absolute;
1549
+ width: 1px;
1550
+ height: 1px;
1551
+ padding: 0;
1552
+ margin: -1px;
1553
+ overflow: hidden;
1554
+ clip: rect(0, 0, 0, 0);
1555
+ white-space: nowrap;
1556
+ border: 0;
1557
+ }
1558
+
1559
+ /* ─── Pill Mode ─── */
1560
+
1561
+ /* Uses --hx-tag-border-radius-pill (separate from --hx-tag-border-radius) so consumer
1562
+ overrides to --hx-tag-border-radius don't break pill shape. */
1563
+ .tag--pill {
1564
+ border-radius: var(--hx-tag-border-radius-pill, var(--hx-border-radius-full, 9999px));
1565
+ }
1566
+
1567
+ /* ─── Prefix / Suffix slots ─── */
1568
+
1569
+ .tag__prefix,
1570
+ .tag__suffix {
1571
+ display: inline-flex;
1572
+ align-items: center;
1573
+ flex-shrink: 0;
1574
+ }
1575
+
1576
+ /* Hide wrappers when slots have no assigned content */
1577
+ .tag__prefix--hidden,
1578
+ .tag__suffix--hidden {
1579
+ display: none;
1580
+ }
1581
+
1582
+ /* ─── Remove Button ─── */
1583
+
1584
+ .tag__remove-button {
1585
+ display: inline-flex;
1586
+ align-items: center;
1587
+ justify-content: center;
1588
+ background: none;
1589
+ border: none;
1590
+ /* WCAG 2.5.5 (healthcare mandate): minimum 44x44px touch target */
1591
+ min-width: var(--hx-touch-target-min, 2.75rem);
1592
+ min-height: var(--hx-touch-target-min, 2.75rem);
1593
+ padding: 0;
1594
+ margin-inline-start: var(--hx-space-1, 0.25rem);
1595
+ cursor: pointer;
1596
+ color: inherit;
1597
+ opacity: var(--hx-opacity-75, 0.75);
1598
+ border-radius: var(--hx-border-radius-sm, 0.125rem);
1599
+ line-height: 0;
1600
+ }
1601
+
1602
+ .tag__remove-button:hover {
1603
+ opacity: var(--hx-opacity-100, 1);
1604
+ }
1605
+
1606
+ .tag__remove-button:focus-visible {
1607
+ outline: var(--hx-focus-ring-width, 2px) solid var(--hx-focus-ring-color, currentColor);
1608
+ outline-offset: var(--hx-focus-ring-offset, 1px);
1609
+ }
1610
+ /* ── hx-text ── */
1611
+ :host {
1612
+ display: inline;
1613
+ }
1614
+
1615
+ /* ─── Base ─── */
1616
+
1617
+ .text {
1618
+ display: inline;
1619
+ font-family: var(--hx-font-family-sans, sans-serif);
1620
+ font-size: var(--hx-text-font-size);
1621
+ font-weight: var(--hx-text-font-weight);
1622
+ line-height: var(--hx-text-line-height);
1623
+ letter-spacing: var(--hx-text-letter-spacing);
1624
+ color: var(--hx-text-color);
1625
+ margin: 0;
1626
+ padding: 0;
1627
+ }
1628
+
1629
+ /* ─── Variants ─── */
1630
+
1631
+ .text--body {
1632
+ --hx-text-font-size: var(--hx-font-size-md, 1rem);
1633
+ --hx-text-font-weight: var(--hx-font-weight-normal, 400);
1634
+ --hx-text-line-height: var(--hx-line-height-normal, 1.5);
1635
+ --hx-text-letter-spacing: var(--hx-letter-spacing-normal, 0);
1636
+ }
1637
+
1638
+ .text--body-sm {
1639
+ --hx-text-font-size: var(--hx-font-size-sm, 0.875rem);
1640
+ --hx-text-font-weight: var(--hx-font-weight-normal, 400);
1641
+ --hx-text-line-height: var(--hx-line-height-normal, 1.5);
1642
+ --hx-text-letter-spacing: var(--hx-letter-spacing-normal, 0);
1643
+ }
1644
+
1645
+ .text--body-lg {
1646
+ --hx-text-font-size: var(--hx-font-size-lg, 1.125rem);
1647
+ --hx-text-font-weight: var(--hx-font-weight-normal, 400);
1648
+ --hx-text-line-height: var(--hx-line-height-normal, 1.5);
1649
+ --hx-text-letter-spacing: var(--hx-letter-spacing-normal, 0);
1650
+ }
1651
+
1652
+ .text--label {
1653
+ --hx-text-font-size: var(--hx-font-size-md, 1rem);
1654
+ --hx-text-font-weight: var(--hx-font-weight-medium, 500);
1655
+ --hx-text-line-height: var(--hx-line-height-tight, 1.25);
1656
+ --hx-text-letter-spacing: var(--hx-letter-spacing-normal, 0);
1657
+ }
1658
+
1659
+ .text--label-sm {
1660
+ --hx-text-font-size: var(--hx-font-size-sm, 0.875rem);
1661
+ --hx-text-font-weight: var(--hx-font-weight-medium, 500);
1662
+ --hx-text-line-height: var(--hx-line-height-tight, 1.25);
1663
+ --hx-text-letter-spacing: var(--hx-letter-spacing-normal, 0);
1664
+ }
1665
+
1666
+ .text--caption {
1667
+ --hx-text-font-size: var(--hx-font-size-xs, 0.75rem);
1668
+ --hx-text-font-weight: var(--hx-font-weight-normal, 400);
1669
+ --hx-text-line-height: var(--hx-line-height-normal, 1.5);
1670
+ --hx-text-letter-spacing: var(--hx-letter-spacing-normal, 0);
1671
+ }
1672
+
1673
+ .text--code {
1674
+ --hx-text-font-size: var(--hx-font-size-sm, 0.875rem);
1675
+ --hx-text-font-weight: var(--hx-font-weight-normal, 400);
1676
+ --hx-text-line-height: var(--hx-line-height-normal, 1.5);
1677
+ --hx-text-letter-spacing: var(--hx-letter-spacing-normal, 0);
1678
+ font-family: var(--hx-font-family-mono, monospace);
1679
+ }
1680
+
1681
+ .text--overline {
1682
+ --hx-text-font-size: var(--hx-font-size-xs, 0.75rem);
1683
+ --hx-text-font-weight: var(--hx-font-weight-semibold, 600);
1684
+ --hx-text-line-height: var(--hx-line-height-tight, 1.25);
1685
+ --hx-text-letter-spacing: var(--hx-letter-spacing-wide, 0.05em);
1686
+ text-transform: uppercase;
1687
+ }
1688
+
1689
+ /* ─── Colors ─── */
1690
+
1691
+ .text--color-default {
1692
+ --hx-text-color: var(--hx-color-neutral-900, #0f172a);
1693
+ }
1694
+
1695
+ .text--color-subtle {
1696
+ --hx-text-color: var(--hx-color-neutral-500, #64748b);
1697
+ }
1698
+
1699
+ .text--color-disabled {
1700
+ --hx-text-color: var(--hx-color-neutral-400, #94a3b8);
1701
+ }
1702
+
1703
+ .text--color-inverse {
1704
+ --hx-text-color: var(--hx-color-neutral-0, #ffffff);
1705
+ }
1706
+
1707
+ .text--color-danger {
1708
+ --hx-text-color: var(--hx-color-error-600, #dc2626);
1709
+ }
1710
+
1711
+ .text--color-success {
1712
+ --hx-text-color: var(--hx-color-success-600, #16a34a);
1713
+ }
1714
+
1715
+ .text--color-warning {
1716
+ --hx-text-color: var(--hx-color-warning-600, #d97706);
1717
+ }
1718
+
1719
+ /* ─── Weight Overrides ─── */
1720
+
1721
+ .text--weight-regular {
1722
+ --hx-text-font-weight: var(--hx-font-weight-normal, 400);
1723
+ }
1724
+
1725
+ .text--weight-medium {
1726
+ --hx-text-font-weight: var(--hx-font-weight-medium, 500);
1727
+ }
1728
+
1729
+ .text--weight-semibold {
1730
+ --hx-text-font-weight: var(--hx-font-weight-semibold, 600);
1731
+ }
1732
+
1733
+ .text--weight-bold {
1734
+ --hx-text-font-weight: var(--hx-font-weight-bold, 700);
1735
+ }
1736
+
1737
+ /* ─── Truncation ─── */
1738
+
1739
+ .text--truncate {
1740
+ display: block;
1741
+ overflow: hidden;
1742
+ text-overflow: ellipsis;
1743
+ white-space: nowrap;
1744
+ }
1745
+
1746
+ .text--clamp {
1747
+ display: -webkit-box;
1748
+ -webkit-box-orient: vertical;
1749
+ overflow: hidden;
1750
+ }
1751
+
1752
+ :host([truncate]) {
1753
+ display: block;
1754
+ }
1755
+
1756
+ :host([lines]:not([lines='0'])) {
1757
+ display: block;
1758
+ }
1759
+ /* ── hx-visually-hidden ── */
1760
+ :host {
1761
+ position: absolute !important;
1762
+ width: 1px !important;
1763
+ height: 1px !important;
1764
+ padding: 0 !important;
1765
+ margin: -1px !important;
1766
+ overflow: hidden !important;
1767
+ clip: rect(0, 0, 0, 0) !important;
1768
+ clip-path: inset(50%) !important;
1769
+ white-space: nowrap !important;
1770
+ border: 0 !important;
1771
+ }
1772
+
1773
+ :host([focusable]:focus-within) {
1774
+ position: static !important;
1775
+ width: auto !important;
1776
+ height: auto !important;
1777
+ padding: 0 !important;
1778
+ margin: 0 !important;
1779
+ overflow: visible !important;
1780
+ clip: auto !important;
1781
+ clip-path: none !important;
1782
+ white-space: normal !important;
1783
+ border: 0 !important;
1784
+ }