@helixui/library 1.1.1 → 1.1.2-next.10

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 (639) hide show
  1. package/custom-elements.json +3336 -2337
  2. package/dist/base/helix-element.d.ts +134 -0
  3. package/dist/base/helix-element.d.ts.map +1 -0
  4. package/dist/base/id-counter.d.ts +32 -0
  5. package/dist/base/id-counter.d.ts.map +1 -0
  6. package/dist/base/index.d.ts +4 -0
  7. package/dist/base/index.d.ts.map +1 -0
  8. package/dist/base/styles.d.ts +19 -0
  9. package/dist/base/styles.d.ts.map +1 -0
  10. package/dist/components/hx-accordion/hx-accordion-item.d.ts +3 -0
  11. package/dist/components/hx-accordion/hx-accordion-item.d.ts.map +1 -1
  12. package/dist/components/hx-accordion/hx-accordion.d.ts +4 -1
  13. package/dist/components/hx-accordion/hx-accordion.d.ts.map +1 -1
  14. package/dist/components/hx-accordion/index.js +1 -1
  15. package/dist/components/hx-action-bar/hx-action-bar.d.ts +1 -1
  16. package/dist/components/hx-action-bar/hx-action-bar.d.ts.map +1 -1
  17. package/dist/components/hx-action-bar/index.js +1 -1
  18. package/dist/components/hx-alert/hx-alert.d.ts +18 -10
  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.styles.d.ts.map +1 -1
  23. package/dist/components/hx-avatar/index.js +1 -1
  24. package/dist/components/hx-badge/hx-badge.d.ts.map +1 -1
  25. package/dist/components/hx-badge/hx-badge.styles.d.ts.map +1 -1
  26. package/dist/components/hx-badge/index.js +1 -1
  27. package/dist/components/hx-banner/hx-banner.d.ts +15 -5
  28. package/dist/components/hx-banner/hx-banner.d.ts.map +1 -1
  29. package/dist/components/hx-banner/hx-banner.styles.d.ts.map +1 -1
  30. package/dist/components/hx-banner/index.js +1 -1
  31. package/dist/components/hx-breadcrumb/hx-breadcrumb-item.d.ts +1 -0
  32. package/dist/components/hx-breadcrumb/hx-breadcrumb-item.d.ts.map +1 -1
  33. package/dist/components/hx-breadcrumb/hx-breadcrumb.d.ts +42 -11
  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 +22 -13
  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 +7 -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.d.ts +2 -2
  47. package/dist/components/hx-carousel/index.js +1 -1
  48. package/dist/components/hx-checkbox/hx-checkbox.d.ts +18 -18
  49. package/dist/components/hx-checkbox/hx-checkbox.d.ts.map +1 -1
  50. package/dist/components/hx-checkbox/hx-checkbox.styles.d.ts.map +1 -1
  51. package/dist/components/hx-checkbox/index.js +1 -1
  52. package/dist/components/hx-checkbox-group/hx-checkbox-group.d.ts +8 -3
  53. package/dist/components/hx-checkbox-group/hx-checkbox-group.d.ts.map +1 -1
  54. package/dist/components/hx-checkbox-group/index.js +1 -1
  55. package/dist/components/hx-clinical-status/hx-clinical-status.d.ts +134 -0
  56. package/dist/components/hx-clinical-status/hx-clinical-status.d.ts.map +1 -0
  57. package/dist/components/hx-clinical-status/hx-clinical-status.styles.d.ts +2 -0
  58. package/dist/components/hx-clinical-status/hx-clinical-status.styles.d.ts.map +1 -0
  59. package/dist/components/hx-clinical-status/index.d.ts +3 -0
  60. package/dist/components/hx-clinical-status/index.d.ts.map +1 -0
  61. package/dist/components/hx-clinical-status/index.js +5 -0
  62. package/dist/components/hx-clinical-status/index.js.map +1 -0
  63. package/dist/components/hx-code-snippet/hx-code-snippet.styles.d.ts.map +1 -1
  64. package/dist/components/hx-code-snippet/index.js +1 -1
  65. package/dist/components/hx-color-picker/color-utils.d.ts +27 -0
  66. package/dist/components/hx-color-picker/color-utils.d.ts.map +1 -0
  67. package/dist/components/hx-color-picker/hx-color-picker.d.ts +16 -4
  68. package/dist/components/hx-color-picker/hx-color-picker.d.ts.map +1 -1
  69. package/dist/components/hx-color-picker/index.js +1 -1
  70. package/dist/components/hx-combobox/hx-combobox.d.ts +9 -4
  71. package/dist/components/hx-combobox/hx-combobox.d.ts.map +1 -1
  72. package/dist/components/hx-combobox/hx-combobox.styles.d.ts.map +1 -1
  73. package/dist/components/hx-combobox/index.js +1 -1
  74. package/dist/components/hx-container/index.js +1 -1
  75. package/dist/components/hx-copy-button/hx-copy-button.d.ts +6 -1
  76. package/dist/components/hx-copy-button/hx-copy-button.d.ts.map +1 -1
  77. package/dist/components/hx-copy-button/index.js +1 -1
  78. package/dist/components/hx-counter/hx-counter.d.ts +20 -3
  79. package/dist/components/hx-counter/hx-counter.d.ts.map +1 -1
  80. package/dist/components/hx-counter/hx-counter.styles.d.ts.map +1 -1
  81. package/dist/components/hx-counter/index.js +1 -1
  82. package/dist/components/hx-data-table/hx-data-table.d.ts +13 -13
  83. package/dist/components/hx-data-table/hx-data-table.d.ts.map +1 -1
  84. package/dist/components/hx-data-table/hx-data-table.styles.d.ts.map +1 -1
  85. package/dist/components/hx-data-table/index.js +1 -1
  86. package/dist/components/hx-date-picker/hx-date-picker.d.ts +70 -13
  87. package/dist/components/hx-date-picker/hx-date-picker.d.ts.map +1 -1
  88. package/dist/components/hx-date-picker/hx-date-picker.styles.d.ts.map +1 -1
  89. package/dist/components/hx-date-picker/index.js +1 -1
  90. package/dist/components/hx-dialog/hx-dialog.d.ts +4 -1
  91. package/dist/components/hx-dialog/hx-dialog.d.ts.map +1 -1
  92. package/dist/components/hx-dialog/index.js +1 -1
  93. package/dist/components/hx-divider/hx-divider.d.ts.map +1 -1
  94. package/dist/components/hx-divider/index.js +1 -1
  95. package/dist/components/hx-drawer/hx-drawer.d.ts +5 -8
  96. package/dist/components/hx-drawer/hx-drawer.d.ts.map +1 -1
  97. package/dist/components/hx-drawer/hx-drawer.styles.d.ts.map +1 -1
  98. package/dist/components/hx-drawer/index.js +1 -1
  99. package/dist/components/hx-dropdown/hx-dropdown.d.ts +14 -1
  100. package/dist/components/hx-dropdown/hx-dropdown.d.ts.map +1 -1
  101. package/dist/components/hx-dropdown/index.js +1 -1
  102. package/dist/components/hx-field/hx-field.d.ts +1 -1
  103. package/dist/components/hx-field/hx-field.d.ts.map +1 -1
  104. package/dist/components/hx-field/index.js +1 -1
  105. package/dist/components/hx-field-label/hx-field-label.styles.d.ts.map +1 -1
  106. package/dist/components/hx-field-label/index.js +1 -1
  107. package/dist/components/hx-file-upload/hx-file-upload.d.ts +8 -9
  108. package/dist/components/hx-file-upload/hx-file-upload.d.ts.map +1 -1
  109. package/dist/components/hx-file-upload/index.js +1 -1
  110. package/dist/components/hx-form/hx-form.d.ts.map +1 -1
  111. package/dist/components/hx-form/index.js +1 -1
  112. package/dist/components/hx-format-date/hx-format-date.d.ts.map +1 -1
  113. package/dist/components/hx-format-date/index.js +1 -1
  114. package/dist/components/hx-grid/hx-grid.d.ts +5 -9
  115. package/dist/components/hx-grid/hx-grid.d.ts.map +1 -1
  116. package/dist/components/hx-grid/index.js +1 -1
  117. package/dist/components/hx-icon/hx-icon.d.ts.map +1 -1
  118. package/dist/components/hx-icon/index.js +1 -1
  119. package/dist/components/hx-icon-button/hx-icon-button.d.ts +4 -3
  120. package/dist/components/hx-icon-button/hx-icon-button.d.ts.map +1 -1
  121. package/dist/components/hx-icon-button/index.js +1 -1
  122. package/dist/components/hx-image/hx-image.d.ts.map +1 -1
  123. package/dist/components/hx-image/index.js +1 -1
  124. package/dist/components/hx-link/hx-link.d.ts +1 -1
  125. package/dist/components/hx-link/hx-link.d.ts.map +1 -1
  126. package/dist/components/hx-link/hx-link.styles.d.ts.map +1 -1
  127. package/dist/components/hx-link/index.js +1 -1
  128. package/dist/components/hx-menu/hx-menu-item.d.ts +5 -0
  129. package/dist/components/hx-menu/hx-menu-item.d.ts.map +1 -1
  130. package/dist/components/hx-menu/hx-menu.d.ts +1 -0
  131. package/dist/components/hx-menu/hx-menu.d.ts.map +1 -1
  132. package/dist/components/hx-menu/hx-menu.styles.d.ts.map +1 -1
  133. package/dist/components/hx-menu/index.js +1 -1
  134. package/dist/components/hx-meter/hx-meter.d.ts +2 -2
  135. package/dist/components/hx-meter/hx-meter.d.ts.map +1 -1
  136. package/dist/components/hx-meter/index.js +1 -1
  137. package/dist/components/hx-nav/hx-nav.d.ts +10 -0
  138. package/dist/components/hx-nav/hx-nav.d.ts.map +1 -1
  139. package/dist/components/hx-nav/index.js +1 -1
  140. package/dist/components/hx-number-input/hx-number-input.d.ts +19 -7
  141. package/dist/components/hx-number-input/hx-number-input.d.ts.map +1 -1
  142. package/dist/components/hx-number-input/index.js +1 -1
  143. package/dist/components/hx-overflow-menu/hx-overflow-menu.d.ts +3 -3
  144. package/dist/components/hx-overflow-menu/hx-overflow-menu.styles.d.ts.map +1 -1
  145. package/dist/components/hx-overflow-menu/index.js +1 -1
  146. package/dist/components/hx-pagination/hx-pagination.d.ts +26 -12
  147. package/dist/components/hx-pagination/hx-pagination.d.ts.map +1 -1
  148. package/dist/components/hx-pagination/hx-pagination.styles.d.ts.map +1 -1
  149. package/dist/components/hx-pagination/index.js +1 -1
  150. package/dist/components/hx-patient-banner/hx-patient-banner.d.ts +113 -0
  151. package/dist/components/hx-patient-banner/hx-patient-banner.d.ts.map +1 -0
  152. package/dist/components/hx-patient-banner/hx-patient-banner.styles.d.ts +2 -0
  153. package/dist/components/hx-patient-banner/hx-patient-banner.styles.d.ts.map +1 -0
  154. package/dist/components/hx-patient-banner/index.d.ts +3 -0
  155. package/dist/components/hx-patient-banner/index.d.ts.map +1 -0
  156. package/dist/components/hx-patient-banner/index.js +5 -0
  157. package/dist/components/hx-patient-banner/index.js.map +1 -0
  158. package/dist/components/hx-phi-field/hx-phi-field.d.ts +97 -0
  159. package/dist/components/hx-phi-field/hx-phi-field.d.ts.map +1 -0
  160. package/dist/components/hx-phi-field/hx-phi-field.styles.d.ts +2 -0
  161. package/dist/components/hx-phi-field/hx-phi-field.styles.d.ts.map +1 -0
  162. package/dist/components/hx-phi-field/index.d.ts +3 -0
  163. package/dist/components/hx-phi-field/index.d.ts.map +1 -0
  164. package/dist/components/hx-phi-field/index.js +5 -0
  165. package/dist/components/hx-phi-field/index.js.map +1 -0
  166. package/dist/components/hx-popover/hx-popover.d.ts +25 -9
  167. package/dist/components/hx-popover/hx-popover.d.ts.map +1 -1
  168. package/dist/components/hx-popover/index.js +1 -1
  169. package/dist/components/hx-popup/hx-popup.d.ts +5 -8
  170. package/dist/components/hx-popup/hx-popup.d.ts.map +1 -1
  171. package/dist/components/hx-popup/index.js +1 -1
  172. package/dist/components/hx-progress-bar/hx-progress-bar.d.ts +2 -0
  173. package/dist/components/hx-progress-bar/hx-progress-bar.d.ts.map +1 -1
  174. package/dist/components/hx-progress-bar/hx-progress-bar.styles.d.ts.map +1 -1
  175. package/dist/components/hx-progress-bar/index.js +1 -1
  176. package/dist/components/hx-progress-ring/hx-progress-ring.d.ts.map +1 -1
  177. package/dist/components/hx-progress-ring/index.js +1 -1
  178. package/dist/components/hx-prose/hx-prose.d.ts +1 -0
  179. package/dist/components/hx-prose/hx-prose.d.ts.map +1 -1
  180. package/dist/components/hx-radio-group/hx-radio-group.d.ts +3 -7
  181. package/dist/components/hx-radio-group/hx-radio-group.d.ts.map +1 -1
  182. package/dist/components/hx-radio-group/hx-radio.d.ts.map +1 -1
  183. package/dist/components/hx-radio-group/hx-radio.styles.d.ts.map +1 -1
  184. package/dist/components/hx-radio-group/index.js +1 -1
  185. package/dist/components/hx-rating/hx-rating.d.ts +3 -3
  186. package/dist/components/hx-rating/hx-rating.d.ts.map +1 -1
  187. package/dist/components/hx-rating/hx-rating.styles.d.ts.map +1 -1
  188. package/dist/components/hx-rating/index.js +1 -1
  189. package/dist/components/hx-select/hx-select.d.ts +17 -11
  190. package/dist/components/hx-select/hx-select.d.ts.map +1 -1
  191. package/dist/components/hx-select/hx-select.styles.d.ts.map +1 -1
  192. package/dist/components/hx-select/index.js +1 -1
  193. package/dist/components/hx-side-nav/hx-nav-item.d.ts +12 -0
  194. package/dist/components/hx-side-nav/hx-nav-item.d.ts.map +1 -1
  195. package/dist/components/hx-side-nav/hx-nav-item.styles.d.ts.map +1 -1
  196. package/dist/components/hx-side-nav/hx-side-nav.d.ts.map +1 -1
  197. package/dist/components/hx-side-nav/hx-side-nav.styles.d.ts.map +1 -1
  198. package/dist/components/hx-side-nav/index.js +1 -1
  199. package/dist/components/hx-skeleton/hx-skeleton.d.ts +2 -2
  200. package/dist/components/hx-skeleton/hx-skeleton.d.ts.map +1 -1
  201. package/dist/components/hx-slider/hx-slider.d.ts +5 -8
  202. package/dist/components/hx-slider/hx-slider.d.ts.map +1 -1
  203. package/dist/components/hx-slider/hx-slider.styles.d.ts.map +1 -1
  204. package/dist/components/hx-slider/index.js +1 -1
  205. package/dist/components/hx-spinner/hx-spinner.d.ts +14 -1
  206. package/dist/components/hx-spinner/hx-spinner.d.ts.map +1 -1
  207. package/dist/components/hx-spinner/hx-spinner.styles.d.ts.map +1 -1
  208. package/dist/components/hx-spinner/index.js +1 -1
  209. package/dist/components/hx-split-button/hx-split-button.d.ts +10 -4
  210. package/dist/components/hx-split-button/hx-split-button.d.ts.map +1 -1
  211. package/dist/components/hx-split-button/hx-split-button.styles.d.ts.map +1 -1
  212. package/dist/components/hx-split-button/index.js +1 -1
  213. package/dist/components/hx-split-panel/hx-split-panel.d.ts +13 -9
  214. package/dist/components/hx-split-panel/hx-split-panel.d.ts.map +1 -1
  215. package/dist/components/hx-split-panel/hx-split-panel.styles.d.ts.map +1 -1
  216. package/dist/components/hx-split-panel/index.js +1 -1
  217. package/dist/components/hx-stat/hx-stat.d.ts +7 -2
  218. package/dist/components/hx-stat/hx-stat.d.ts.map +1 -1
  219. package/dist/components/hx-stat/index.js +1 -1
  220. package/dist/components/hx-status-indicator/hx-status-indicator.d.ts +19 -3
  221. package/dist/components/hx-status-indicator/hx-status-indicator.d.ts.map +1 -1
  222. package/dist/components/hx-status-indicator/hx-status-indicator.styles.d.ts.map +1 -1
  223. package/dist/components/hx-status-indicator/index.js +1 -1
  224. package/dist/components/hx-steps/hx-step.d.ts +7 -0
  225. package/dist/components/hx-steps/hx-step.d.ts.map +1 -1
  226. package/dist/components/hx-steps/hx-step.styles.d.ts.map +1 -1
  227. package/dist/components/hx-steps/hx-steps.d.ts.map +1 -1
  228. package/dist/components/hx-steps/index.js +1 -1
  229. package/dist/components/hx-structured-list/hx-structured-list.d.ts +10 -3
  230. package/dist/components/hx-structured-list/hx-structured-list.d.ts.map +1 -1
  231. package/dist/components/hx-structured-list/index.js +1 -1
  232. package/dist/components/hx-style-scope/hx-style-scope.d.ts +71 -0
  233. package/dist/components/hx-style-scope/hx-style-scope.d.ts.map +1 -0
  234. package/dist/components/hx-style-scope/hx-style-scope.styles.d.ts +10 -0
  235. package/dist/components/hx-style-scope/hx-style-scope.styles.d.ts.map +1 -0
  236. package/dist/components/hx-style-scope/index.d.ts +2 -0
  237. package/dist/components/hx-style-scope/index.d.ts.map +1 -0
  238. package/dist/components/hx-style-scope/index.js +5 -0
  239. package/dist/components/hx-style-scope/index.js.map +1 -0
  240. package/dist/components/hx-switch/hx-switch.d.ts +4 -4
  241. package/dist/components/hx-switch/hx-switch.d.ts.map +1 -1
  242. package/dist/components/hx-switch/hx-switch.styles.d.ts.map +1 -1
  243. package/dist/components/hx-switch/index.js +1 -1
  244. package/dist/components/hx-table/hx-table.d.ts +1 -0
  245. package/dist/components/hx-table/hx-table.d.ts.map +1 -1
  246. package/dist/components/hx-table/index.js +1 -1
  247. package/dist/components/hx-tabs/hx-tab-panel.styles.d.ts.map +1 -1
  248. package/dist/components/hx-tabs/hx-tab.d.ts +1 -0
  249. package/dist/components/hx-tabs/hx-tab.d.ts.map +1 -1
  250. package/dist/components/hx-tabs/hx-tab.styles.d.ts.map +1 -1
  251. package/dist/components/hx-tabs/hx-tabs.d.ts +12 -2
  252. package/dist/components/hx-tabs/hx-tabs.d.ts.map +1 -1
  253. package/dist/components/hx-tabs/index.js +1 -1
  254. package/dist/components/hx-tag/hx-tag.styles.d.ts.map +1 -1
  255. package/dist/components/hx-tag/index.js +1 -1
  256. package/dist/components/hx-text/index.js +1 -1
  257. package/dist/components/hx-text-input/hx-text-input.d.ts +16 -15
  258. package/dist/components/hx-text-input/hx-text-input.d.ts.map +1 -1
  259. package/dist/components/hx-text-input/hx-text-input.styles.d.ts.map +1 -1
  260. package/dist/components/hx-text-input/index.js +1 -1
  261. package/dist/components/hx-textarea/hx-textarea.d.ts +4 -4
  262. package/dist/components/hx-textarea/hx-textarea.d.ts.map +1 -1
  263. package/dist/components/hx-textarea/hx-textarea.styles.d.ts.map +1 -1
  264. package/dist/components/hx-textarea/index.js +1 -1
  265. package/dist/components/hx-theme/hx-theme.d.ts +82 -3
  266. package/dist/components/hx-theme/hx-theme.d.ts.map +1 -1
  267. package/dist/components/hx-theme/index.js +1 -1
  268. package/dist/components/hx-time-picker/hx-time-picker.d.ts +6 -1
  269. package/dist/components/hx-time-picker/hx-time-picker.d.ts.map +1 -1
  270. package/dist/components/hx-time-picker/index.js +1 -1
  271. package/dist/components/hx-toast/hx-toast-stack.d.ts +1 -1
  272. package/dist/components/hx-toast/hx-toast-stack.d.ts.map +1 -1
  273. package/dist/components/hx-toast/hx-toast.d.ts +9 -5
  274. package/dist/components/hx-toast/hx-toast.d.ts.map +1 -1
  275. package/dist/components/hx-toast/hx-toast.styles.d.ts.map +1 -1
  276. package/dist/components/hx-toast/index.js +1 -1
  277. package/dist/components/hx-toast/toast-factory.d.ts.map +1 -1
  278. package/dist/components/hx-toggle-button/hx-toggle-button.d.ts +4 -3
  279. package/dist/components/hx-toggle-button/hx-toggle-button.d.ts.map +1 -1
  280. package/dist/components/hx-toggle-button/hx-toggle-button.styles.d.ts.map +1 -1
  281. package/dist/components/hx-toggle-button/index.js +1 -1
  282. package/dist/components/hx-tooltip/hx-tooltip.d.ts +1 -2
  283. package/dist/components/hx-tooltip/hx-tooltip.d.ts.map +1 -1
  284. package/dist/components/hx-tooltip/index.js +1 -1
  285. package/dist/components/hx-tree-view/hx-tree-item.d.ts +12 -0
  286. package/dist/components/hx-tree-view/hx-tree-item.d.ts.map +1 -1
  287. package/dist/components/hx-tree-view/hx-tree-view.d.ts +27 -2
  288. package/dist/components/hx-tree-view/hx-tree-view.d.ts.map +1 -1
  289. package/dist/components/hx-tree-view/hx-tree-view.styles.d.ts.map +1 -1
  290. package/dist/components/hx-tree-view/index.js +1 -1
  291. package/dist/controllers/helix-audit-controller.d.ts +71 -0
  292. package/dist/controllers/helix-audit-controller.d.ts.map +1 -0
  293. package/dist/css/helix-all.css +9743 -0
  294. package/dist/css/helix-core.css +1839 -0
  295. package/dist/css/helix-data.css +639 -0
  296. package/dist/css/helix-feedback.css +1268 -0
  297. package/dist/css/helix-forms.css +2525 -0
  298. package/dist/css/helix-layout.css +380 -0
  299. package/dist/css/helix-media.css +213 -0
  300. package/dist/css/helix-navigation.css +1131 -0
  301. package/dist/css/helix-overlay.css +643 -0
  302. package/dist/css/helix-tokens.css +432 -0
  303. package/dist/css/helix-utility.css +633 -0
  304. package/dist/css/hx-accordion.css +10 -0
  305. package/dist/css/hx-action-bar.css +117 -0
  306. package/dist/css/hx-alert.css +213 -0
  307. package/dist/css/hx-avatar.css +134 -0
  308. package/dist/css/hx-badge.css +178 -0
  309. package/dist/css/hx-banner.css +203 -0
  310. package/dist/css/hx-breadcrumb.css +36 -0
  311. package/dist/css/hx-button-group.css +91 -0
  312. package/dist/css/hx-button.css +296 -0
  313. package/dist/css/hx-card.css +161 -0
  314. package/dist/css/hx-carousel.css +211 -0
  315. package/dist/css/hx-checkbox-group.css +77 -0
  316. package/dist/css/hx-checkbox.css +219 -0
  317. package/dist/css/hx-clinical-status.css +248 -0
  318. package/dist/css/hx-code-snippet.css +179 -0
  319. package/dist/css/hx-color-picker.css +2 -0
  320. package/dist/css/hx-combobox.css +2 -0
  321. package/dist/css/hx-container.css +82 -0
  322. package/dist/css/hx-copy-button.css +121 -0
  323. package/dist/css/hx-counter.css +51 -0
  324. package/dist/css/hx-data-table.css +207 -0
  325. package/dist/css/hx-date-picker.css +2 -0
  326. package/dist/css/hx-dialog.css +190 -0
  327. package/dist/css/hx-divider.css +87 -0
  328. package/dist/css/hx-drawer.css +262 -0
  329. package/dist/css/hx-dropdown.css +46 -0
  330. package/dist/css/hx-field-label.css +38 -0
  331. package/dist/css/hx-field.css +119 -0
  332. package/dist/css/hx-file-upload.css +241 -0
  333. package/dist/css/hx-form.css +2 -0
  334. package/dist/css/hx-format-date.css +10 -0
  335. package/dist/css/hx-grid.css +14 -0
  336. package/dist/css/hx-help-text.css +50 -0
  337. package/dist/css/hx-icon-button.css +152 -0
  338. package/dist/css/hx-icon.css +73 -0
  339. package/dist/css/hx-image.css +41 -0
  340. package/dist/css/hx-link.css +105 -0
  341. package/dist/css/hx-list.css +48 -0
  342. package/dist/css/hx-menu.css +23 -0
  343. package/dist/css/hx-meter.css +113 -0
  344. package/dist/css/hx-nav.css +242 -0
  345. package/dist/css/hx-number-input.css +246 -0
  346. package/dist/css/hx-overflow-menu.css +133 -0
  347. package/dist/css/hx-pagination.css +193 -0
  348. package/dist/css/hx-patient-banner.css +139 -0
  349. package/dist/css/hx-phi-field.css +97 -0
  350. package/dist/css/hx-popover.css +61 -0
  351. package/dist/css/hx-popup.css +31 -0
  352. package/dist/css/hx-progress-bar.css +133 -0
  353. package/dist/css/hx-progress-ring.css +142 -0
  354. package/dist/css/hx-prose.css +2 -0
  355. package/dist/css/hx-radio-group.css +77 -0
  356. package/dist/css/hx-rating.css +96 -0
  357. package/dist/css/hx-select.css +295 -0
  358. package/dist/css/hx-side-nav.css +149 -0
  359. package/dist/css/hx-skeleton.css +82 -0
  360. package/dist/css/hx-slider.css +287 -0
  361. package/dist/css/hx-spinner.css +116 -0
  362. package/dist/css/hx-split-button.css +309 -0
  363. package/dist/css/hx-split-panel.css +168 -0
  364. package/dist/css/hx-stack.css +104 -0
  365. package/dist/css/hx-stat.css +106 -0
  366. package/dist/css/hx-status-indicator.css +126 -0
  367. package/dist/css/hx-steps.css +52 -0
  368. package/dist/css/hx-structured-list.css +75 -0
  369. package/dist/css/hx-style-scope.css +4 -0
  370. package/dist/css/hx-switch.css +169 -0
  371. package/dist/css/hx-table.css +128 -0
  372. package/dist/css/hx-tabs.css +76 -0
  373. package/dist/css/hx-tag.css +146 -0
  374. package/dist/css/hx-text-input.css +214 -0
  375. package/dist/css/hx-text.css +149 -0
  376. package/dist/css/hx-textarea.css +180 -0
  377. package/dist/css/hx-theme.css +23 -0
  378. package/dist/css/hx-time-picker.css +2 -0
  379. package/dist/css/hx-toast.css +230 -0
  380. package/dist/css/hx-toggle-button.css +207 -0
  381. package/dist/css/hx-tooltip.css +51 -0
  382. package/dist/css/hx-top-nav.css +203 -0
  383. package/dist/css/hx-tree-view.css +22 -0
  384. package/dist/css/hx-visually-hidden.css +26 -0
  385. package/dist/css/index.css +84 -0
  386. package/dist/css/manifest.json +2704 -0
  387. package/dist/index.d.ts +14 -0
  388. package/dist/index.d.ts.map +1 -1
  389. package/dist/index.js +266 -176
  390. package/dist/index.js.map +1 -1
  391. package/dist/mixins/FocusMixin.d.ts +49 -0
  392. package/dist/mixins/FocusMixin.d.ts.map +1 -0
  393. package/dist/mixins/FormMixin.d.ts +69 -0
  394. package/dist/mixins/FormMixin.d.ts.map +1 -0
  395. package/dist/mixins/aria-delegation.d.ts +97 -0
  396. package/dist/mixins/aria-delegation.d.ts.map +1 -0
  397. package/dist/mixins/index.d.ts +5 -0
  398. package/dist/mixins/index.d.ts.map +1 -0
  399. package/dist/shared/FormMixin-Bjvw20G5.js +88 -0
  400. package/dist/shared/FormMixin-Bjvw20G5.js.map +1 -0
  401. package/dist/shared/aria-delegation-CBP9eQ0M.js +107 -0
  402. package/dist/shared/aria-delegation-CBP9eQ0M.js.map +1 -0
  403. package/dist/shared/{hx-accordion-D1kFhdeQ.js → hx-accordion-_KeulaQR.js} +83 -55
  404. package/dist/shared/hx-accordion-_KeulaQR.js.map +1 -0
  405. package/dist/shared/{hx-action-bar-D4bulGQP.js → hx-action-bar-vGFnNwNY.js} +33 -34
  406. package/dist/shared/hx-action-bar-vGFnNwNY.js.map +1 -0
  407. package/dist/shared/{hx-alert-K5F8KeqI.js → hx-alert-DRZYP0Oo.js} +32 -23
  408. package/dist/shared/hx-alert-DRZYP0Oo.js.map +1 -0
  409. package/dist/shared/{hx-avatar-Cun-O99h.js → hx-avatar-CZfA9KEl.js} +28 -11
  410. package/dist/shared/hx-avatar-CZfA9KEl.js.map +1 -0
  411. package/dist/shared/{hx-badge-CsFd2xtw.js → hx-badge-Xg7zoh4Q.js} +46 -37
  412. package/dist/shared/hx-badge-Xg7zoh4Q.js.map +1 -0
  413. package/dist/shared/{hx-banner-BTV-X2xF.js → hx-banner-2RS7Nux4.js} +93 -58
  414. package/dist/shared/hx-banner-2RS7Nux4.js.map +1 -0
  415. package/dist/shared/{hx-breadcrumb-item-4IwaLgaO.js → hx-breadcrumb-item-CObc-WJl.js} +86 -83
  416. package/dist/shared/hx-breadcrumb-item-CObc-WJl.js.map +1 -0
  417. package/dist/shared/{hx-button-7k-KeCYU.js → hx-button-CC1YH9RZ.js} +127 -62
  418. package/dist/shared/hx-button-CC1YH9RZ.js.map +1 -0
  419. package/dist/shared/{hx-button-group-CWjWv-wS.js → hx-button-group-ChTQsnQj.js} +10 -10
  420. package/dist/shared/hx-button-group-ChTQsnQj.js.map +1 -0
  421. package/dist/shared/{hx-card-0hT3G5hi.js → hx-card-dIKdcMhr.js} +32 -32
  422. package/dist/shared/hx-card-dIKdcMhr.js.map +1 -0
  423. package/dist/shared/{hx-carousel-item-DgeYyYZJ.js → hx-carousel-item-Cm8a1nAi.js} +3 -3
  424. package/dist/shared/hx-carousel-item-Cm8a1nAi.js.map +1 -0
  425. package/dist/shared/{hx-checkbox-BvjO-O41.js → hx-checkbox-_WUiuTo9.js} +68 -71
  426. package/dist/shared/hx-checkbox-_WUiuTo9.js.map +1 -0
  427. package/dist/shared/{hx-checkbox-group-Z5VvWzcj.js → hx-checkbox-group-B-ci-dxp.js} +37 -31
  428. package/dist/shared/hx-checkbox-group-B-ci-dxp.js.map +1 -0
  429. package/dist/shared/hx-clinical-status-D6eaplvs.js +469 -0
  430. package/dist/shared/hx-clinical-status-D6eaplvs.js.map +1 -0
  431. package/dist/shared/{hx-code-snippet-DqzPkH4K.js → hx-code-snippet-CQsyvthi.js} +56 -47
  432. package/dist/shared/hx-code-snippet-CQsyvthi.js.map +1 -0
  433. package/dist/shared/{hx-color-picker-Da8z6AlQ.js → hx-color-picker-Dk2Myvaf.js} +153 -137
  434. package/dist/shared/hx-color-picker-Dk2Myvaf.js.map +1 -0
  435. package/dist/shared/{hx-combobox-CivfelTS.js → hx-combobox-CNAJXIxo.js} +10 -10
  436. package/dist/shared/hx-combobox-CNAJXIxo.js.map +1 -0
  437. package/dist/shared/{hx-container-DLUKnTi9.js → hx-container-7j16VuQE.js} +16 -16
  438. package/dist/shared/hx-container-7j16VuQE.js.map +1 -0
  439. package/dist/shared/{hx-copy-button--0dymSvw.js → hx-copy-button-B_ZHYO7_.js} +47 -40
  440. package/dist/shared/hx-copy-button-B_ZHYO7_.js.map +1 -0
  441. package/dist/shared/hx-counter-D_B7L9Pi.js +185 -0
  442. package/dist/shared/hx-counter-D_B7L9Pi.js.map +1 -0
  443. package/dist/shared/{hx-data-table-DujB9hSE.js → hx-data-table-B1j4n4bm.js} +134 -107
  444. package/dist/shared/hx-data-table-B1j4n4bm.js.map +1 -0
  445. package/dist/shared/{hx-date-picker-C8d2HtRV.js → hx-date-picker-R-0kWFwr.js} +146 -130
  446. package/dist/shared/hx-date-picker-R-0kWFwr.js.map +1 -0
  447. package/dist/shared/{hx-dialog-DkUSnVgw.js → hx-dialog-U5d3s0Ps.js} +98 -89
  448. package/dist/shared/hx-dialog-U5d3s0Ps.js.map +1 -0
  449. package/dist/shared/{hx-divider-DNNs4e8q.js → hx-divider-DdAN-_jB.js} +5 -5
  450. package/dist/shared/hx-divider-DdAN-_jB.js.map +1 -0
  451. package/dist/shared/{hx-drawer-CJcRZcns.js → hx-drawer-e0qeGxAD.js} +117 -77
  452. package/dist/shared/hx-drawer-e0qeGxAD.js.map +1 -0
  453. package/dist/shared/{hx-dropdown-Bo0KTM1A.js → hx-dropdown-DP_DNpEb.js} +56 -41
  454. package/dist/shared/hx-dropdown-DP_DNpEb.js.map +1 -0
  455. package/dist/shared/{hx-field-3MmzJ4kZ.js → hx-field-COM4KvMQ.js} +9 -9
  456. package/dist/shared/hx-field-COM4KvMQ.js.map +1 -0
  457. package/dist/shared/{hx-field-label-Bg-EWvqF.js → hx-field-label-BtZ9H9Yy.js} +8 -11
  458. package/dist/shared/hx-field-label-BtZ9H9Yy.js.map +1 -0
  459. package/dist/shared/{hx-file-upload-ByjAgfNy.js → hx-file-upload-DbECypLe.js} +78 -87
  460. package/dist/shared/hx-file-upload-DbECypLe.js.map +1 -0
  461. package/dist/shared/{hx-form-BpS6v3Iu.js → hx-form-fJE-FJQV.js} +36 -32
  462. package/dist/shared/{hx-form-BpS6v3Iu.js.map → hx-form-fJE-FJQV.js.map} +1 -1
  463. package/dist/shared/{hx-format-date-BdnWV2kX.js → hx-format-date-C030ThSm.js} +14 -12
  464. package/dist/shared/hx-format-date-C030ThSm.js.map +1 -0
  465. package/dist/shared/{hx-grid-gEjuF0cR.js → hx-grid-DE8KM5Gf.js} +7 -7
  466. package/dist/shared/hx-grid-DE8KM5Gf.js.map +1 -0
  467. package/dist/shared/{hx-icon-button-DzH_bRtC.js → hx-icon-button-Et9wq79n.js} +4 -4
  468. package/dist/shared/{hx-icon-button-DzH_bRtC.js.map → hx-icon-button-Et9wq79n.js.map} +1 -1
  469. package/dist/shared/{hx-icon-CP6OnLoM.js → hx-icon-dYvrzvsO.js} +7 -7
  470. package/dist/shared/hx-icon-dYvrzvsO.js.map +1 -0
  471. package/dist/shared/{hx-image-C6pGiI6c.js → hx-image-DUsEi-oN.js} +15 -15
  472. package/dist/shared/hx-image-DUsEi-oN.js.map +1 -0
  473. package/dist/shared/{hx-link-Tmk_YPvW.js → hx-link-Peg2LzOD.js} +43 -41
  474. package/dist/shared/hx-link-Peg2LzOD.js.map +1 -0
  475. package/dist/shared/{hx-menu-divider-DR4G_rqw.js → hx-menu-divider-puPmRAdN.js} +40 -20
  476. package/dist/shared/hx-menu-divider-puPmRAdN.js.map +1 -0
  477. package/dist/shared/{hx-meter-uXkTZq-W.js → hx-meter-CVs4A649.js} +13 -13
  478. package/dist/shared/hx-meter-CVs4A649.js.map +1 -0
  479. package/dist/shared/{hx-nav-3JsN2Oak.js → hx-nav-CiyqaW2I.js} +119 -107
  480. package/dist/shared/hx-nav-CiyqaW2I.js.map +1 -0
  481. package/dist/shared/{hx-nav-item-D3EJatzc.js → hx-nav-item-tM_6bolB.js} +181 -115
  482. package/dist/shared/hx-nav-item-tM_6bolB.js.map +1 -0
  483. package/dist/shared/{hx-number-input-CAAibZ8X.js → hx-number-input-BPgrlMLN.js} +70 -66
  484. package/dist/shared/hx-number-input-BPgrlMLN.js.map +1 -0
  485. package/dist/shared/{hx-overflow-menu-2kgOJ_ht.js → hx-overflow-menu-Bz02LPPk.js} +15 -11
  486. package/dist/shared/hx-overflow-menu-Bz02LPPk.js.map +1 -0
  487. package/dist/shared/{hx-pagination-DBs-vmSv.js → hx-pagination-Cb9UEWXz.js} +84 -71
  488. package/dist/shared/hx-pagination-Cb9UEWXz.js.map +1 -0
  489. package/dist/shared/hx-patient-banner-wk4qWmsH.js +297 -0
  490. package/dist/shared/hx-patient-banner-wk4qWmsH.js.map +1 -0
  491. package/dist/shared/hx-phi-field-DX9z3nu0.js +295 -0
  492. package/dist/shared/hx-phi-field-DX9z3nu0.js.map +1 -0
  493. package/dist/shared/{hx-popover-DxE67miP.js → hx-popover-D6kYQkt3.js} +96 -69
  494. package/dist/shared/hx-popover-D6kYQkt3.js.map +1 -0
  495. package/dist/shared/{hx-popup-Dg6n_PbY.js → hx-popup-RQb6HUXc.js} +2 -2
  496. package/dist/shared/hx-popup-RQb6HUXc.js.map +1 -0
  497. package/dist/shared/{hx-progress-bar-Dm_EHyng.js → hx-progress-bar-ByEmxq1V.js} +42 -40
  498. package/dist/shared/hx-progress-bar-ByEmxq1V.js.map +1 -0
  499. package/dist/shared/{hx-progress-ring-DpxBDD5d.js → hx-progress-ring-CtVnNRQx.js} +2 -2
  500. package/dist/shared/{hx-progress-ring-DpxBDD5d.js.map → hx-progress-ring-CtVnNRQx.js.map} +1 -1
  501. package/dist/shared/hx-prose-Ml_L2zje.js.map +1 -1
  502. package/dist/shared/{hx-radio-BywgVSEu.js → hx-radio-jgeW92SV.js} +28 -27
  503. package/dist/shared/hx-radio-jgeW92SV.js.map +1 -0
  504. package/dist/shared/{hx-rating-CUWBQ0fZ.js → hx-rating-g_iy-DW_.js} +92 -96
  505. package/dist/shared/hx-rating-g_iy-DW_.js.map +1 -0
  506. package/dist/shared/{hx-select-BwDwxk-M.js → hx-select-BWzxWZs_.js} +139 -100
  507. package/dist/shared/hx-select-BWzxWZs_.js.map +1 -0
  508. package/dist/shared/hx-skeleton-BHvALyd7.js.map +1 -1
  509. package/dist/shared/{hx-slider-D_0EKJyk.js → hx-slider-7Q-e0_pc.js} +27 -22
  510. package/dist/shared/hx-slider-7Q-e0_pc.js.map +1 -0
  511. package/dist/shared/{hx-spinner-DMn4SChS.js → hx-spinner-DEgrKsUo.js} +3 -2
  512. package/dist/shared/hx-spinner-DEgrKsUo.js.map +1 -0
  513. package/dist/shared/{hx-split-button-CypgLXw1.js → hx-split-button-BA7P_ly5.js} +40 -31
  514. package/dist/shared/hx-split-button-BA7P_ly5.js.map +1 -0
  515. package/dist/shared/{hx-split-panel-BPMWKPGu.js → hx-split-panel-Bss54UN8.js} +28 -28
  516. package/dist/shared/hx-split-panel-Bss54UN8.js.map +1 -0
  517. package/dist/shared/{hx-stat-CHntLHJM.js → hx-stat-CmkCUI8v.js} +40 -32
  518. package/dist/shared/{hx-stat-CHntLHJM.js.map → hx-stat-CmkCUI8v.js.map} +1 -1
  519. package/dist/shared/{hx-status-indicator-C1BwEvUw.js → hx-status-indicator-Dl3Y34mc.js} +81 -40
  520. package/dist/shared/hx-status-indicator-Dl3Y34mc.js.map +1 -0
  521. package/dist/shared/{hx-step-BIVWSPxd.js → hx-step-CmNwfcJx.js} +49 -85
  522. package/dist/shared/hx-step-CmNwfcJx.js.map +1 -0
  523. package/dist/shared/{hx-structured-list-CMWllxGg.js → hx-structured-list-Db9rwLI_.js} +26 -23
  524. package/dist/shared/hx-structured-list-Db9rwLI_.js.map +1 -0
  525. package/dist/shared/hx-style-scope-BroUu83L.js +125 -0
  526. package/dist/shared/hx-style-scope-BroUu83L.js.map +1 -0
  527. package/dist/shared/{hx-switch-BgX8kuWt.js → hx-switch-C0Lp5RGy.js} +8 -5
  528. package/dist/shared/hx-switch-C0Lp5RGy.js.map +1 -0
  529. package/dist/shared/{hx-tab-panel-DhOq67jj.js → hx-tab-panel-Dnt8aA74.js} +161 -122
  530. package/dist/shared/hx-tab-panel-Dnt8aA74.js.map +1 -0
  531. package/dist/shared/{hx-tag-CzOTDcXI.js → hx-tag-K5fCjfqQ.js} +15 -14
  532. package/dist/shared/hx-tag-K5fCjfqQ.js.map +1 -0
  533. package/dist/shared/{hx-td-h6oeW6YC.js → hx-td-DZuILY3s.js} +43 -40
  534. package/dist/shared/hx-td-DZuILY3s.js.map +1 -0
  535. package/dist/shared/{hx-text-DTXjiviE.js → hx-text-DoEVOf47.js} +29 -29
  536. package/dist/shared/hx-text-DoEVOf47.js.map +1 -0
  537. package/dist/shared/hx-text-input-DTKWPVdy.js +576 -0
  538. package/dist/shared/hx-text-input-DTKWPVdy.js.map +1 -0
  539. package/dist/shared/{hx-textarea-BgX7rxyo.js → hx-textarea-BkSiU8oM.js} +15 -15
  540. package/dist/shared/hx-textarea-BkSiU8oM.js.map +1 -0
  541. package/dist/shared/hx-theme-Aag8QJvT.js +299 -0
  542. package/dist/shared/hx-theme-Aag8QJvT.js.map +1 -0
  543. package/dist/shared/{hx-time-picker-DmLu7WUC.js → hx-time-picker-BpCRsh_z.js} +54 -53
  544. package/dist/shared/hx-time-picker-BpCRsh_z.js.map +1 -0
  545. package/dist/shared/{hx-toggle-button-D1jpDvSA.js → hx-toggle-button-CPFqs3eQ.js} +8 -5
  546. package/dist/shared/hx-toggle-button-CPFqs3eQ.js.map +1 -0
  547. package/dist/shared/{hx-tooltip-kh7QFPKu.js → hx-tooltip-CrO4vzeX.js} +15 -10
  548. package/dist/shared/hx-tooltip-CrO4vzeX.js.map +1 -0
  549. package/dist/shared/{hx-tree-item-BP6UF_H1.js → hx-tree-item-C1PhX-HE.js} +163 -99
  550. package/dist/shared/hx-tree-item-C1PhX-HE.js.map +1 -0
  551. package/dist/shared/id-counter-JhvVCnjh.js +143 -0
  552. package/dist/shared/id-counter-JhvVCnjh.js.map +1 -0
  553. package/dist/shared/{toast-factory-DTy-qN8r.js → toast-factory-f184Gi70.js} +57 -45
  554. package/dist/shared/toast-factory-f184Gi70.js.map +1 -0
  555. package/dist/utilities/adoptedStylesheetRegistry.d.ts +47 -0
  556. package/dist/utilities/adoptedStylesheetRegistry.d.ts.map +1 -0
  557. package/dist/utilities/generateScopedSelectors.d.ts +30 -0
  558. package/dist/utilities/generateScopedSelectors.d.ts.map +1 -0
  559. package/dist/utilities/injectLightStyles.d.ts +37 -0
  560. package/dist/utilities/injectLightStyles.d.ts.map +1 -0
  561. package/dist/utilities/lightStyleRegistry.d.ts +41 -0
  562. package/dist/utilities/lightStyleRegistry.d.ts.map +1 -0
  563. package/dist/utilities/sheetManager.d.ts +62 -0
  564. package/dist/utilities/sheetManager.d.ts.map +1 -0
  565. package/dist/utils/contrast-checker.d.ts +86 -0
  566. package/dist/utils/contrast-checker.d.ts.map +1 -0
  567. package/dist/utils/token-merger.d.ts +24 -0
  568. package/dist/utils/token-merger.d.ts.map +1 -0
  569. package/fouc.css +37 -0
  570. package/package.json +26 -6
  571. package/dist/shared/hx-accordion-D1kFhdeQ.js.map +0 -1
  572. package/dist/shared/hx-action-bar-D4bulGQP.js.map +0 -1
  573. package/dist/shared/hx-alert-K5F8KeqI.js.map +0 -1
  574. package/dist/shared/hx-avatar-Cun-O99h.js.map +0 -1
  575. package/dist/shared/hx-badge-CsFd2xtw.js.map +0 -1
  576. package/dist/shared/hx-banner-BTV-X2xF.js.map +0 -1
  577. package/dist/shared/hx-breadcrumb-item-4IwaLgaO.js.map +0 -1
  578. package/dist/shared/hx-button-7k-KeCYU.js.map +0 -1
  579. package/dist/shared/hx-button-group-CWjWv-wS.js.map +0 -1
  580. package/dist/shared/hx-card-0hT3G5hi.js.map +0 -1
  581. package/dist/shared/hx-carousel-item-DgeYyYZJ.js.map +0 -1
  582. package/dist/shared/hx-checkbox-BvjO-O41.js.map +0 -1
  583. package/dist/shared/hx-checkbox-group-Z5VvWzcj.js.map +0 -1
  584. package/dist/shared/hx-code-snippet-DqzPkH4K.js.map +0 -1
  585. package/dist/shared/hx-color-picker-Da8z6AlQ.js.map +0 -1
  586. package/dist/shared/hx-combobox-CivfelTS.js.map +0 -1
  587. package/dist/shared/hx-container-DLUKnTi9.js.map +0 -1
  588. package/dist/shared/hx-copy-button--0dymSvw.js.map +0 -1
  589. package/dist/shared/hx-counter-Duf00H7p.js +0 -147
  590. package/dist/shared/hx-counter-Duf00H7p.js.map +0 -1
  591. package/dist/shared/hx-data-table-DujB9hSE.js.map +0 -1
  592. package/dist/shared/hx-date-picker-C8d2HtRV.js.map +0 -1
  593. package/dist/shared/hx-dialog-DkUSnVgw.js.map +0 -1
  594. package/dist/shared/hx-divider-DNNs4e8q.js.map +0 -1
  595. package/dist/shared/hx-drawer-CJcRZcns.js.map +0 -1
  596. package/dist/shared/hx-dropdown-Bo0KTM1A.js.map +0 -1
  597. package/dist/shared/hx-field-3MmzJ4kZ.js.map +0 -1
  598. package/dist/shared/hx-field-label-Bg-EWvqF.js.map +0 -1
  599. package/dist/shared/hx-file-upload-ByjAgfNy.js.map +0 -1
  600. package/dist/shared/hx-format-date-BdnWV2kX.js.map +0 -1
  601. package/dist/shared/hx-grid-gEjuF0cR.js.map +0 -1
  602. package/dist/shared/hx-icon-CP6OnLoM.js.map +0 -1
  603. package/dist/shared/hx-image-C6pGiI6c.js.map +0 -1
  604. package/dist/shared/hx-link-Tmk_YPvW.js.map +0 -1
  605. package/dist/shared/hx-menu-divider-DR4G_rqw.js.map +0 -1
  606. package/dist/shared/hx-meter-uXkTZq-W.js.map +0 -1
  607. package/dist/shared/hx-nav-3JsN2Oak.js.map +0 -1
  608. package/dist/shared/hx-nav-item-D3EJatzc.js.map +0 -1
  609. package/dist/shared/hx-number-input-CAAibZ8X.js.map +0 -1
  610. package/dist/shared/hx-overflow-menu-2kgOJ_ht.js.map +0 -1
  611. package/dist/shared/hx-pagination-DBs-vmSv.js.map +0 -1
  612. package/dist/shared/hx-popover-DxE67miP.js.map +0 -1
  613. package/dist/shared/hx-popup-Dg6n_PbY.js.map +0 -1
  614. package/dist/shared/hx-progress-bar-Dm_EHyng.js.map +0 -1
  615. package/dist/shared/hx-radio-BywgVSEu.js.map +0 -1
  616. package/dist/shared/hx-rating-CUWBQ0fZ.js.map +0 -1
  617. package/dist/shared/hx-select-BwDwxk-M.js.map +0 -1
  618. package/dist/shared/hx-slider-D_0EKJyk.js.map +0 -1
  619. package/dist/shared/hx-spinner-DMn4SChS.js.map +0 -1
  620. package/dist/shared/hx-split-button-CypgLXw1.js.map +0 -1
  621. package/dist/shared/hx-split-panel-BPMWKPGu.js.map +0 -1
  622. package/dist/shared/hx-status-indicator-C1BwEvUw.js.map +0 -1
  623. package/dist/shared/hx-step-BIVWSPxd.js.map +0 -1
  624. package/dist/shared/hx-structured-list-CMWllxGg.js.map +0 -1
  625. package/dist/shared/hx-switch-BgX8kuWt.js.map +0 -1
  626. package/dist/shared/hx-tab-panel-DhOq67jj.js.map +0 -1
  627. package/dist/shared/hx-tag-CzOTDcXI.js.map +0 -1
  628. package/dist/shared/hx-td-h6oeW6YC.js.map +0 -1
  629. package/dist/shared/hx-text-DTXjiviE.js.map +0 -1
  630. package/dist/shared/hx-text-input-CqEdDHMU.js +0 -461
  631. package/dist/shared/hx-text-input-CqEdDHMU.js.map +0 -1
  632. package/dist/shared/hx-textarea-BgX7rxyo.js.map +0 -1
  633. package/dist/shared/hx-theme-6GDoUG8j.js +0 -176
  634. package/dist/shared/hx-theme-6GDoUG8j.js.map +0 -1
  635. package/dist/shared/hx-time-picker-DmLu7WUC.js.map +0 -1
  636. package/dist/shared/hx-toggle-button-D1jpDvSA.js.map +0 -1
  637. package/dist/shared/hx-tooltip-kh7QFPKu.js.map +0 -1
  638. package/dist/shared/hx-tree-item-BP6UF_H1.js.map +0 -1
  639. package/dist/shared/toast-factory-DTy-qN8r.js.map +0 -1
@@ -1,4 +1,4 @@
1
- import { css as g, LitElement as f, html as d, nothing as h } from "lit";
1
+ import { css as g, LitElement as f, html as d, nothing as l } from "lit";
2
2
  import { property as r, state as p, customElement as m } from "lit/decorators.js";
3
3
  import { classMap as _ } from "lit/directives/class-map.js";
4
4
  import { styleMap as u } from "lit/directives/style-map.js";
@@ -45,10 +45,10 @@ const y = g`
45
45
  display: block;
46
46
  }
47
47
  `;
48
- var b = Object.defineProperty, S = Object.getOwnPropertyDescriptor, e = (s, o, a, l) => {
49
- for (var i = l > 1 ? void 0 : l ? S(o, a) : o, n = s.length - 1, c; n >= 0; n--)
50
- (c = s[n]) && (i = (l ? c(o, a, i) : c(i)) || i);
51
- return l && i && b(o, a, i), i;
48
+ var b = Object.defineProperty, S = Object.getOwnPropertyDescriptor, e = (s, o, a, h) => {
49
+ for (var i = h > 1 ? void 0 : h ? S(o, a) : o, n = s.length - 1, c; n >= 0; n--)
50
+ (c = s[n]) && (i = (h ? c(o, a, i) : c(i)) || i);
51
+ return h && i && b(o, a, i), i;
52
52
  };
53
53
  let t = class extends f {
54
54
  constructor() {
@@ -83,7 +83,8 @@ let t = class extends f {
83
83
  return this._usedFallbackSrc && this.fallbackSrc ? this.fallbackSrc : this.src;
84
84
  }
85
85
  render() {
86
- const s = this.decorative || this.alt === "", o = s ? "" : this.alt ?? "", a = this._computeBorderRadius(), l = this._hasCaptionSlot, i = {
86
+ !this.decorative && this.alt;
87
+ const s = this.decorative || this.alt === "", o = s ? "" : this.alt ?? "", a = this._computeBorderRadius(), h = this._hasCaptionSlot, i = {
87
88
  ...this.ratio ? { "--_ratio": this.ratio } : {},
88
89
  ...this.fit ? { "--_fit": this.fit } : {},
89
90
  ...a ? { "--_radius": a } : {},
@@ -95,7 +96,6 @@ let t = class extends f {
95
96
  class="image__container image__container--error"
96
97
  style=${u(i)}
97
98
  role="alert"
98
- aria-live="polite"
99
99
  >
100
100
  <slot name="fallback"></slot>
101
101
  </figure>
@@ -104,20 +104,20 @@ let t = class extends f {
104
104
  <img
105
105
  part="base"
106
106
  class="image__img"
107
- src=${this._currentSrc() || h}
107
+ src=${this._currentSrc() || l}
108
108
  alt=${o}
109
- role=${s ? "presentation" : h}
109
+ role=${s ? "presentation" : l}
110
110
  loading=${this.loading}
111
- width=${this.width != null ? this.width : h}
112
- height=${this.height != null ? this.height : h}
113
- srcset=${this.srcset ?? h}
114
- sizes=${this.sizes ?? h}
111
+ width=${this.width != null ? this.width : l}
112
+ height=${this.height != null ? this.height : l}
113
+ srcset=${this.srcset ?? l}
114
+ sizes=${this.sizes ?? l}
115
115
  @load=${this._handleLoad}
116
116
  @error=${this._handleError}
117
117
  />
118
118
  <figcaption
119
119
  part="caption"
120
- class=${_({ image__caption: !0, "image__caption--visible": l })}
120
+ class=${_({ image__caption: !0, "image__caption--visible": h })}
121
121
  >
122
122
  <slot name="caption" @slotchange=${this._onCaptionSlotChange}></slot>
123
123
  </figcaption>
@@ -177,4 +177,4 @@ t = e([
177
177
  export {
178
178
  t as H
179
179
  };
180
- //# sourceMappingURL=hx-image-C6pGiI6c.js.map
180
+ //# sourceMappingURL=hx-image-DUsEi-oN.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hx-image-DUsEi-oN.js","sources":["../../src/components/hx-image/hx-image.styles.ts","../../src/components/hx-image/hx-image.ts"],"sourcesContent":["import { css } from 'lit';\n\nexport const helixImageStyles = css`\n :host {\n display: block;\n }\n\n .image__container {\n position: relative;\n display: block;\n overflow: hidden;\n margin: 0;\n padding: 0;\n aspect-ratio: var(--_ratio, var(--hx-image-aspect-ratio));\n border-radius: var(--_radius, var(--hx-image-border-radius, 0));\n }\n\n .image__container--error {\n display: flex;\n align-items: center;\n justify-content: center;\n min-height: var(--hx-image-fallback-min-height, 3rem);\n background-color: var(--hx-color-neutral-100, #f3f4f6);\n color: var(--hx-color-neutral-500, #6b7280);\n }\n\n .image__img {\n display: block;\n width: 100%;\n height: 100%;\n object-fit: var(--_fit, var(--hx-image-object-fit, cover));\n }\n\n .image__caption {\n display: none;\n padding: var(--hx-image-caption-padding, 0.5rem 0 0);\n color: var(--hx-image-caption-color, var(--hx-color-neutral-600, #4b5563));\n font-size: var(--hx-image-caption-font-size, 0.875rem);\n }\n\n .image__caption--visible {\n display: block;\n }\n`;\n","import { LitElement, html, nothing } from 'lit';\nimport { customElement, property, state } from 'lit/decorators.js';\nimport { classMap } from 'lit/directives/class-map.js';\nimport { styleMap } from 'lit/directives/style-map.js';\nimport { tokenStyles } from '@helixui/tokens/lit';\nimport { helixImageStyles } from './hx-image.styles.js';\nimport { devWarn } from '../../utils/dev-warn.js';\n\n/**\n * An accessible image wrapper with lazy loading, fallback support, aspect ratio control,\n * responsive image (srcset/sizes) support, and optional caption.\n *\n * @summary Accessible image wrapper with lazy loading, fallback, srcset, and aspect ratio control.\n *\n * @tag hx-image\n *\n * @slot fallback - Custom content shown when the image fails to load and no fallback-src is set.\n * @slot caption - Optional caption content rendered in a figcaption element below the image.\n *\n * @csspart base - The inner img element.\n * @csspart caption - The figcaption element (visible only when caption content is present).\n *\n * @cssprop [--hx-image-object-fit] - Controls how the image fills its container. Maps to object-fit.\n * @cssprop [--hx-image-border-radius] - Border radius of the image. Overridden by the `rounded` prop.\n * @cssprop [--hx-image-aspect-ratio] - Aspect ratio of the image container. Overridden by the `ratio` prop.\n * @cssprop [--hx-image-caption-color] - Text color for the caption.\n * @cssprop [--hx-image-caption-font-size] - Font size for the caption.\n * @cssprop [--hx-image-caption-padding] - Padding for the caption.\n * @cssprop [--hx-image-fallback-min-height] - Minimum height of the error/fallback container.\n *\n * @fires hx-load - Dispatched when the image has successfully loaded.\n * @fires hx-error - Dispatched when the image fails to load (including after fallback-src also fails).\n */\n@customElement('hx-image')\nexport class HelixImage extends LitElement {\n static override styles = [tokenStyles, helixImageStyles];\n\n /**\n * The URL of the image to display.\n * @attr src\n */\n @property({ type: String, reflect: true })\n src = '';\n\n /**\n * Accessible text description of the image.\n * Required for informative images. Use the `decorative` prop for decorative images\n * instead of setting this to an empty string — explicit decorative intent is preferred.\n * @attr alt\n */\n @property({ type: String, reflect: true })\n alt: string | undefined = undefined;\n\n /**\n * Marks the image as decorative (hidden from screen readers).\n * Use this instead of `alt=\"\"` to make decorative intent explicit in markup.\n * When set, the inner img receives `alt=\"\"` and `role=\"presentation\"`.\n * @attr decorative\n */\n @property({ type: Boolean, reflect: true })\n decorative = false;\n\n /**\n * Width of the image element.\n * @attr width\n */\n @property({ reflect: true })\n width: number | string | undefined = undefined;\n\n /**\n * Height of the image element.\n * @attr height\n */\n @property({ reflect: true })\n height: number | string | undefined = undefined;\n\n /**\n * Loading strategy for the image.\n * @attr loading\n */\n @property({ type: String, reflect: true })\n loading: 'lazy' | 'eager' = 'lazy';\n\n /**\n * How the image should be resized to fit its container.\n * Maps to CSS object-fit.\n * @attr fit\n */\n @property({ type: String, reflect: true })\n fit: 'contain' | 'cover' | 'fill' | 'none' | 'scale-down' | undefined = undefined;\n\n /**\n * CSS aspect-ratio value (e.g. \"16/9\", \"1\", \"4/3\").\n * When set, the container maintains this ratio.\n * @attr ratio\n */\n @property({ type: String, reflect: true })\n ratio: string | undefined = undefined;\n\n /**\n * Border radius for the image.\n * Boolean attribute (or `true`) applies the theme's medium radius token.\n * A string value is used directly as a CSS border-radius value (e.g. \"1rem\", \"50%\").\n *\n * Note: When set as an HTML attribute (`<hx-image rounded>`), Lit receives the value as\n * an empty string (`''`). When set programmatically (`el.rounded = true`), it receives\n * a boolean. Both forms apply the theme radius token.\n *\n * @attr rounded\n */\n @property({ type: String, reflect: true })\n rounded: boolean | string | undefined = undefined;\n\n /**\n * Fallback image URL shown when the primary src fails to load.\n * @attr fallback-src\n */\n @property({ type: String, attribute: 'fallback-src', reflect: true })\n fallbackSrc: string | undefined = undefined;\n\n /**\n * A comma-separated list of image candidates for responsive images.\n * Passed directly to the inner img's srcset attribute.\n * Enables Drupal responsive image styles and browser-native image selection.\n * @attr srcset\n */\n @property({ type: String, reflect: true })\n srcset: string | undefined = undefined;\n\n /**\n * Media conditions indicating which image size to use alongside srcset.\n * Works in conjunction with the `srcset` attribute.\n * @attr sizes\n */\n @property({ type: String, reflect: true })\n sizes: string | undefined = undefined;\n\n /** @internal */\n @state()\n private _error = false;\n\n /** @internal */\n @state()\n private _usedFallbackSrc = false;\n\n /** @internal */\n @state()\n private _hasCaptionSlot = false;\n\n /** @internal */\n private _handleLoad(): void {\n this.dispatchEvent(new CustomEvent<void>('hx-load', { bubbles: true, composed: true }));\n }\n\n /** @internal */\n private _handleError(): void {\n if (!this._error && this.fallbackSrc && !this._usedFallbackSrc) {\n // Try the fallback-src before showing the fallback slot\n this._usedFallbackSrc = true;\n return;\n }\n this._error = true;\n this.dispatchEvent(new CustomEvent<void>('hx-error', { bubbles: true, composed: true }));\n }\n\n /** @internal */\n private _onCaptionSlotChange(e: Event): void {\n const slot = e.target as HTMLSlotElement;\n this._hasCaptionSlot = slot.assignedNodes({ flatten: true }).length > 0;\n }\n\n /** @internal */\n private _computeBorderRadius(): string | undefined {\n if (this.rounded === true || this.rounded === '' || this.rounded === 'true') {\n return 'var(--hx-border-radius-md, 0.375rem)';\n }\n if (typeof this.rounded === 'string' && this.rounded.length > 0 && this.rounded !== 'false') {\n return this.rounded;\n }\n return undefined;\n }\n\n /** @internal */\n private _currentSrc(): string {\n if (this._usedFallbackSrc && this.fallbackSrc) {\n return this.fallbackSrc;\n }\n return this.src;\n }\n\n override render() {\n if (!this.decorative && !this.alt) {\n devWarn(\n 'hx-image',\n 'Informative images require an `alt` attribute for accessibility (WCAG 1.1.1). ' +\n 'Provide a descriptive `alt` value, or set the `decorative` attribute if the image is decorative.',\n );\n }\n const isDecorative = this.decorative || this.alt === '';\n const altText = isDecorative ? '' : (this.alt ?? '');\n const borderRadius = this._computeBorderRadius();\n const showCaption = this._hasCaptionSlot;\n\n const containerStyles = {\n ...(this.ratio ? { '--_ratio': this.ratio } : {}),\n ...(this.fit ? { '--_fit': this.fit } : {}),\n ...(borderRadius ? { '--_radius': borderRadius } : {}),\n ...(this.width != null\n ? { width: typeof this.width === 'number' ? `${this.width}px` : this.width }\n : {}),\n ...(this.height != null\n ? { height: typeof this.height === 'number' ? `${this.height}px` : this.height }\n : {}),\n };\n\n if (this._error) {\n return html`\n <figure\n class=\"image__container image__container--error\"\n style=${styleMap(containerStyles)}\n role=\"alert\"\n >\n <slot name=\"fallback\"></slot>\n </figure>\n `;\n }\n\n return html`\n <figure class=\"image__container\" style=${styleMap(containerStyles)}>\n <img\n part=\"base\"\n class=\"image__img\"\n src=${this._currentSrc() || nothing}\n alt=${altText}\n role=${isDecorative ? 'presentation' : nothing}\n loading=${this.loading}\n width=${this.width != null ? this.width : nothing}\n height=${this.height != null ? this.height : nothing}\n srcset=${this.srcset ?? nothing}\n sizes=${this.sizes ?? nothing}\n @load=${this._handleLoad}\n @error=${this._handleError}\n />\n <figcaption\n part=\"caption\"\n class=${classMap({ image__caption: true, 'image__caption--visible': showCaption })}\n >\n <slot name=\"caption\" @slotchange=${this._onCaptionSlotChange}></slot>\n </figcaption>\n </figure>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'hx-image': HelixImage;\n }\n}\n"],"names":["helixImageStyles","css","HelixImage","LitElement","e","slot","isDecorative","altText","borderRadius","showCaption","containerStyles","html","styleMap","nothing","classMap","tokenStyles","__decorateClass","property","state","customElement"],"mappings":";;;;;AAEO,MAAMA,IAAmBC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;;ACgCzB,IAAMC,IAAN,cAAyBC,EAAW;AAAA,EAApC,cAAA;AAAA,UAAA,GAAA,SAAA,GAQL,KAAA,MAAM,IASN,KAAA,MAA0B,QAS1B,KAAA,aAAa,IAOb,KAAA,QAAqC,QAOrC,KAAA,SAAsC,QAOtC,KAAA,UAA4B,QAQ5B,KAAA,MAAwE,QAQxE,KAAA,QAA4B,QAc5B,KAAA,UAAwC,QAOxC,KAAA,cAAkC,QASlC,KAAA,SAA6B,QAQ7B,KAAA,QAA4B,QAI5B,KAAQ,SAAS,IAIjB,KAAQ,mBAAmB,IAI3B,KAAQ,kBAAkB;AAAA,EAAA;AAAA;AAAA,EAGlB,cAAoB;AAC1B,SAAK,cAAc,IAAI,YAAkB,WAAW,EAAE,SAAS,IAAM,UAAU,GAAA,CAAM,CAAC;AAAA,EACxF;AAAA;AAAA,EAGQ,eAAqB;AAC3B,QAAI,CAAC,KAAK,UAAU,KAAK,eAAe,CAAC,KAAK,kBAAkB;AAE9D,WAAK,mBAAmB;AACxB;AAAA,IACF;AACA,SAAK,SAAS,IACd,KAAK,cAAc,IAAI,YAAkB,YAAY,EAAE,SAAS,IAAM,UAAU,GAAA,CAAM,CAAC;AAAA,EACzF;AAAA;AAAA,EAGQ,qBAAqBC,GAAgB;AAC3C,UAAMC,IAAOD,EAAE;AACf,SAAK,kBAAkBC,EAAK,cAAc,EAAE,SAAS,GAAA,CAAM,EAAE,SAAS;AAAA,EACxE;AAAA;AAAA,EAGQ,uBAA2C;AACjD,QAAI,KAAK,YAAY,MAAQ,KAAK,YAAY,MAAM,KAAK,YAAY;AACnE,aAAO;AAET,QAAI,OAAO,KAAK,WAAY,YAAY,KAAK,QAAQ,SAAS,KAAK,KAAK,YAAY;AAClF,aAAO,KAAK;AAAA,EAGhB;AAAA;AAAA,EAGQ,cAAsB;AAC5B,WAAI,KAAK,oBAAoB,KAAK,cACzB,KAAK,cAEP,KAAK;AAAA,EACd;AAAA,EAES,SAAS;AAChB,IAAI,CAAC,KAAK,cAAe,KAAK;AAO9B,UAAMC,IAAe,KAAK,cAAc,KAAK,QAAQ,IAC/CC,IAAUD,IAAe,KAAM,KAAK,OAAO,IAC3CE,IAAe,KAAK,qBAAA,GACpBC,IAAc,KAAK,iBAEnBC,IAAkB;AAAA,MACtB,GAAI,KAAK,QAAQ,EAAE,YAAY,KAAK,MAAA,IAAU,CAAA;AAAA,MAC9C,GAAI,KAAK,MAAM,EAAE,UAAU,KAAK,IAAA,IAAQ,CAAA;AAAA,MACxC,GAAIF,IAAe,EAAE,aAAaA,EAAA,IAAiB,CAAA;AAAA,MACnD,GAAI,KAAK,SAAS,OACd,EAAE,OAAO,OAAO,KAAK,SAAU,WAAW,GAAG,KAAK,KAAK,OAAO,KAAK,MAAA,IACnE,CAAA;AAAA,MACJ,GAAI,KAAK,UAAU,OACf,EAAE,QAAQ,OAAO,KAAK,UAAW,WAAW,GAAG,KAAK,MAAM,OAAO,KAAK,WACtE,CAAA;AAAA,IAAC;AAGP,WAAI,KAAK,SACAG;AAAA;AAAA;AAAA,kBAGKC,EAASF,CAAe,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA,UAQhCC;AAAA,+CACoCC,EAASF,CAAe,CAAC;AAAA;AAAA;AAAA;AAAA,gBAIxD,KAAK,YAAA,KAAiBG,CAAO;AAAA,gBAC7BN,CAAO;AAAA,iBACND,IAAe,iBAAiBO,CAAO;AAAA,oBACpC,KAAK,OAAO;AAAA,kBACd,KAAK,SAAS,OAAO,KAAK,QAAQA,CAAO;AAAA,mBACxC,KAAK,UAAU,OAAO,KAAK,SAASA,CAAO;AAAA,mBAC3C,KAAK,UAAUA,CAAO;AAAA,kBACvB,KAAK,SAASA,CAAO;AAAA,kBACrB,KAAK,WAAW;AAAA,mBACf,KAAK,YAAY;AAAA;AAAA;AAAA;AAAA,kBAIlBC,EAAS,EAAE,gBAAgB,IAAM,2BAA2BL,EAAA,CAAa,CAAC;AAAA;AAAA,6CAE/C,KAAK,oBAAoB;AAAA;AAAA;AAAA;AAAA,EAIpE;AACF;AA1NaP,EACK,SAAS,CAACa,GAAaf,CAAgB;AAOvDgB,EAAA;AAAA,EADCC,EAAS,EAAE,MAAM,QAAQ,SAAS,IAAM;AAAA,GAP9Bf,EAQX,WAAA,OAAA,CAAA;AASAc,EAAA;AAAA,EADCC,EAAS,EAAE,MAAM,QAAQ,SAAS,IAAM;AAAA,GAhB9Bf,EAiBX,WAAA,OAAA,CAAA;AASAc,EAAA;AAAA,EADCC,EAAS,EAAE,MAAM,SAAS,SAAS,IAAM;AAAA,GAzB/Bf,EA0BX,WAAA,cAAA,CAAA;AAOAc,EAAA;AAAA,EADCC,EAAS,EAAE,SAAS,GAAA,CAAM;AAAA,GAhChBf,EAiCX,WAAA,SAAA,CAAA;AAOAc,EAAA;AAAA,EADCC,EAAS,EAAE,SAAS,GAAA,CAAM;AAAA,GAvChBf,EAwCX,WAAA,UAAA,CAAA;AAOAc,EAAA;AAAA,EADCC,EAAS,EAAE,MAAM,QAAQ,SAAS,IAAM;AAAA,GA9C9Bf,EA+CX,WAAA,WAAA,CAAA;AAQAc,EAAA;AAAA,EADCC,EAAS,EAAE,MAAM,QAAQ,SAAS,IAAM;AAAA,GAtD9Bf,EAuDX,WAAA,OAAA,CAAA;AAQAc,EAAA;AAAA,EADCC,EAAS,EAAE,MAAM,QAAQ,SAAS,IAAM;AAAA,GA9D9Bf,EA+DX,WAAA,SAAA,CAAA;AAcAc,EAAA;AAAA,EADCC,EAAS,EAAE,MAAM,QAAQ,SAAS,IAAM;AAAA,GA5E9Bf,EA6EX,WAAA,WAAA,CAAA;AAOAc,EAAA;AAAA,EADCC,EAAS,EAAE,MAAM,QAAQ,WAAW,gBAAgB,SAAS,IAAM;AAAA,GAnFzDf,EAoFX,WAAA,eAAA,CAAA;AASAc,EAAA;AAAA,EADCC,EAAS,EAAE,MAAM,QAAQ,SAAS,IAAM;AAAA,GA5F9Bf,EA6FX,WAAA,UAAA,CAAA;AAQAc,EAAA;AAAA,EADCC,EAAS,EAAE,MAAM,QAAQ,SAAS,IAAM;AAAA,GApG9Bf,EAqGX,WAAA,SAAA,CAAA;AAIQc,EAAA;AAAA,EADPE,EAAA;AAAM,GAxGIhB,EAyGH,WAAA,UAAA,CAAA;AAIAc,EAAA;AAAA,EADPE,EAAA;AAAM,GA5GIhB,EA6GH,WAAA,oBAAA,CAAA;AAIAc,EAAA;AAAA,EADPE,EAAA;AAAM,GAhHIhB,EAiHH,WAAA,mBAAA,CAAA;AAjHGA,IAANc,EAAA;AAAA,EADNG,EAAc,UAAU;AAAA,GACZjB,CAAA;"}
@@ -1,9 +1,9 @@
1
- import { css as v, LitElement as x, nothing as u, svg as f, html as c } from "lit";
2
- import { property as o, customElement as k } from "lit/decorators.js";
1
+ import { css as v, LitElement as x, nothing as f, svg as u, html as c } from "lit";
2
+ import { property as i, customElement as k } from "lit/decorators.js";
3
3
  import { classMap as p } from "lit/directives/class-map.js";
4
4
  import { ifDefined as a } from "lit/directives/if-defined.js";
5
5
  import { tokenStyles as m } from "@helixui/tokens/lit";
6
- const b = v`
6
+ const g = v`
7
7
  :host {
8
8
  display: inline;
9
9
  }
@@ -42,7 +42,10 @@ const b = v`
42
42
 
43
43
  .link:focus-visible {
44
44
  outline: var(--hx-focus-ring-width, 2px) solid
45
- var(--hx-link-focus-ring-color, var(--hx-focus-ring-color, #2563eb));
45
+ var(
46
+ --hx-link-focus-ring-color,
47
+ var(--hx-focus-ring-color, var(--hx-color-primary-400, #60a5fa))
48
+ );
46
49
  outline-offset: var(--hx-focus-ring-offset, 2px);
47
50
  border-radius: var(--hx-border-radius-sm, 0.125rem);
48
51
  }
@@ -106,27 +109,27 @@ const b = v`
106
109
  border: 0;
107
110
  }
108
111
  `;
109
- var g = Object.defineProperty, y = Object.getOwnPropertyDescriptor, i = (e, n, s, l) => {
110
- for (var t = l > 1 ? void 0 : l ? y(n, s) : n, d = e.length - 1, h; d >= 0; d--)
111
- (h = e[d]) && (t = (l ? h(n, s, t) : h(t)) || t);
112
- return l && t && g(n, s, t), t;
112
+ var y = Object.defineProperty, b = Object.getOwnPropertyDescriptor, o = (r, n, s, l) => {
113
+ for (var t = l > 1 ? void 0 : l ? b(n, s) : n, h = r.length - 1, d; h >= 0; h--)
114
+ (d = r[h]) && (t = (l ? d(n, s, t) : d(t)) || t);
115
+ return l && t && y(n, s, t), t;
113
116
  };
114
- let r = class extends x {
117
+ let e = class extends x {
115
118
  constructor() {
116
119
  super(...arguments), this.href = void 0, this.target = void 0, this.variant = "default", this.disabled = !1, this.download = void 0, this.rel = void 0;
117
120
  }
118
121
  // --- Event Handling ---
119
122
  /** @internal */
120
- _handleClick(e) {
123
+ _handleClick(r) {
121
124
  if (this.disabled) {
122
- e.preventDefault(), e.stopPropagation();
125
+ r.preventDefault(), r.stopPropagation();
123
126
  return;
124
127
  }
125
128
  this.dispatchEvent(
126
129
  new CustomEvent("hx-click", {
127
130
  bubbles: !0,
128
131
  composed: !0,
129
- detail: { originalEvent: e }
132
+ detail: { originalEvent: r }
130
133
  })
131
134
  );
132
135
  }
@@ -138,7 +141,7 @@ let r = class extends x {
138
141
  }
139
142
  /** @internal */
140
143
  _renderExternalIcon() {
141
- return this.target !== "_blank" ? u : c`
144
+ return this.target !== "_blank" ? f : c`
142
145
  <svg
143
146
  class="link__external-icon"
144
147
  part="external-icon"
@@ -150,14 +153,14 @@ let r = class extends x {
150
153
  stroke-linecap="round"
151
154
  stroke-linejoin="round"
152
155
  >
153
- ${f`<path d="M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6" /><polyline points="15 3 21 3 21 9" /><line x1="10" y1="14" x2="21" y2="3" />`}
156
+ ${u`<path d="M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6" /><polyline points="15 3 21 3 21 9" /><line x1="10" y1="14" x2="21" y2="3" />`}
154
157
  </svg>
155
158
  <span class="sr-only">(opens in new tab)</span>
156
159
  `;
157
160
  }
158
161
  // --- Render ---
159
162
  render() {
160
- const e = {
163
+ const r = {
161
164
  link: !0,
162
165
  [`link--${this.variant}`]: this.variant !== "default",
163
166
  "link--disabled": this.disabled
@@ -165,9 +168,8 @@ let r = class extends x {
165
168
  return this.disabled ? c`
166
169
  <span
167
170
  part="link"
168
- class=${p(e)}
171
+ class=${p(r)}
169
172
  role="link"
170
- tabindex="0"
171
173
  aria-disabled="true"
172
174
  @click=${this._handleClick}
173
175
  >
@@ -176,7 +178,7 @@ let r = class extends x {
176
178
  ` : c`
177
179
  <a
178
180
  part="link"
179
- class=${p(e)}
181
+ class=${p(r)}
180
182
  href=${a(this.href)}
181
183
  target=${a(this.target)}
182
184
  rel=${a(this._computeRel())}
@@ -189,29 +191,29 @@ let r = class extends x {
189
191
  `;
190
192
  }
191
193
  };
192
- r.styles = [m, b];
193
- i([
194
- o({ type: String })
195
- ], r.prototype, "href", 2);
196
- i([
197
- o({ type: String })
198
- ], r.prototype, "target", 2);
199
- i([
200
- o({ type: String, reflect: !0 })
201
- ], r.prototype, "variant", 2);
202
- i([
203
- o({ type: Boolean, reflect: !0 })
204
- ], r.prototype, "disabled", 2);
205
- i([
206
- o({ type: String })
207
- ], r.prototype, "download", 2);
208
- i([
209
- o({ type: String })
210
- ], r.prototype, "rel", 2);
211
- r = i([
194
+ e.styles = [m, g];
195
+ o([
196
+ i({ type: String })
197
+ ], e.prototype, "href", 2);
198
+ o([
199
+ i({ type: String })
200
+ ], e.prototype, "target", 2);
201
+ o([
202
+ i({ type: String, reflect: !0 })
203
+ ], e.prototype, "variant", 2);
204
+ o([
205
+ i({ type: Boolean, reflect: !0 })
206
+ ], e.prototype, "disabled", 2);
207
+ o([
208
+ i({ type: String })
209
+ ], e.prototype, "download", 2);
210
+ o([
211
+ i({ type: String })
212
+ ], e.prototype, "rel", 2);
213
+ e = o([
212
214
  k("hx-link")
213
- ], r);
215
+ ], e);
214
216
  export {
215
- r as H
217
+ e as H
216
218
  };
217
- //# sourceMappingURL=hx-link-Tmk_YPvW.js.map
219
+ //# sourceMappingURL=hx-link-Peg2LzOD.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hx-link-Peg2LzOD.js","sources":["../../src/components/hx-link/hx-link.styles.ts","../../src/components/hx-link/hx-link.ts"],"sourcesContent":["import { css } from 'lit';\n\nexport const helixLinkStyles = css`\n :host {\n display: inline;\n }\n\n :host([disabled]) {\n cursor: not-allowed;\n }\n\n /* --- Base Link --- */\n\n .link {\n display: inline-flex;\n align-items: center;\n gap: var(--hx-space-1, 0.25rem);\n color: var(--hx-link-color, var(--hx-color-primary-500, #2563eb));\n font-family: var(--hx-link-font-family, var(--hx-font-family-sans, inherit));\n font-size: inherit;\n line-height: inherit;\n text-decoration: var(--hx-link-text-decoration, underline);\n text-underline-offset: var(--hx-link-underline-offset, 2px);\n cursor: pointer;\n outline: 0;\n transition:\n color var(--hx-transition-fast, 150ms ease),\n text-decoration-color var(--hx-transition-fast, 150ms ease);\n }\n\n .link:hover {\n color: var(--hx-link-color-hover, var(--hx-color-primary-700, #1d4ed8));\n text-decoration: var(--hx-link-text-decoration-hover, underline);\n }\n\n .link:active {\n color: var(--hx-link-color-active, var(--hx-color-primary-800, #1e40af));\n }\n\n .link:focus-visible {\n outline: var(--hx-focus-ring-width, 2px) solid\n var(\n --hx-link-focus-ring-color,\n var(--hx-focus-ring-color, var(--hx-color-primary-400, #60a5fa))\n );\n outline-offset: var(--hx-focus-ring-offset, 2px);\n border-radius: var(--hx-border-radius-sm, 0.125rem);\n }\n\n /* --- Variant: subtle --- */\n\n .link--subtle {\n color: var(--hx-link-color-subtle, var(--hx-color-neutral-600, #475569));\n text-decoration: none;\n }\n\n .link--subtle:hover {\n color: var(--hx-link-color-hover, var(--hx-color-primary-700, #1d4ed8));\n text-decoration: underline;\n }\n\n /* --- Variant: danger --- */\n\n .link--danger {\n color: var(--hx-link-color-danger, var(--hx-color-error-text, #b91c1c));\n }\n\n .link--danger:hover {\n color: var(--hx-link-color-danger-hover, var(--hx-color-error-700, #b91c1c));\n }\n\n /* --- Disabled --- */\n\n .link--disabled {\n color: var(--hx-link-color-disabled, var(--hx-color-neutral-400, #94a3b8));\n text-decoration: none;\n pointer-events: none;\n }\n\n /* --- External link icon --- */\n\n .link__external-icon {\n display: inline-flex;\n width: 0.75em;\n height: 0.75em;\n flex-shrink: 0;\n }\n\n @media (prefers-reduced-motion: reduce) {\n .link {\n transition: none;\n }\n }\n\n /* --- Visually hidden (sr-only) --- */\n\n .sr-only {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip-path: inset(50%);\n white-space: nowrap;\n border: 0;\n }\n`;\n","import { LitElement, html, nothing, svg } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport { classMap } from 'lit/directives/class-map.js';\nimport { ifDefined } from 'lit/directives/if-defined.js';\nimport { tokenStyles } from '@helixui/tokens/lit';\nimport { helixLinkStyles } from './hx-link.styles.js';\n\n/**\n * Variant options for the link component.\n */\nexport type LinkVariant = 'default' | 'subtle' | 'danger';\n\n/**\n * A semantic hyperlink component with accessibility-first design.\n * Renders a native `<a>` element for enabled state and a `<span>` for\n * disabled state with full keyboard and screen reader support.\n *\n * @summary Accessible hyperlink with external-link detection, disabled state,\n * and download support.\n *\n * @tag hx-link\n *\n * @slot - Default slot for link label text or content.\n *\n * @fires {CustomEvent<{originalEvent: MouseEvent}>} hx-click - Dispatched when\n * the link is clicked and is not disabled.\n *\n * @csspart link - The inner anchor or span element.\n * @csspart external-icon - The external link icon SVG (when target=\"_blank\").\n *\n * @cssprop [--hx-link-color=var(--hx-color-primary-500)] - Default link color.\n * @cssprop [--hx-link-color-hover=var(--hx-color-primary-700)] - Hover color.\n * @cssprop [--hx-link-color-active=var(--hx-color-primary-800)] - Active color.\n * @cssprop [--hx-link-color-disabled=var(--hx-color-neutral-400)] - Disabled color.\n * @cssprop [--hx-link-color-subtle=var(--hx-color-neutral-600)] - Subtle variant color.\n * @cssprop [--hx-link-color-danger=var(--hx-color-error-text)] - Danger variant color.\n * @cssprop [--hx-link-color-danger-hover=var(--hx-color-error-700)] - Danger variant hover color.\n * @cssprop [--hx-link-font-family=var(--hx-font-family-sans)] - Link font family.\n * @cssprop [--hx-link-text-decoration=underline] - Link text decoration.\n * @cssprop [--hx-link-text-decoration-hover=underline] - Hover text decoration.\n * @cssprop [--hx-link-underline-offset=2px] - Text underline offset.\n * @cssprop [--hx-link-focus-ring-color=var(--hx-focus-ring-color)] - Focus ring color.\n *\n * @note The `:visited` pseudo-class does not work inside Shadow DOM due to\n * browser privacy restrictions. This is a known platform limitation.\n */\n@customElement('hx-link')\nexport class HelixLink extends LitElement {\n static override styles = [tokenStyles, helixLinkStyles];\n\n /**\n * The URL the link points to.\n * @attr href\n */\n @property({ type: String })\n href: string | undefined = undefined;\n\n /**\n * Where to display the linked URL (_self, _blank, etc.).\n * When set to \"_blank\", automatically adds rel=\"noopener noreferrer\"\n * and shows an external-link indicator.\n * @attr target\n */\n @property({ type: String })\n target: string | undefined = undefined;\n\n /**\n * Visual style variant of the link.\n * @attr variant\n */\n @property({ type: String, reflect: true })\n variant: 'default' | 'subtle' | 'danger' = 'default';\n\n /**\n * Whether the link is disabled. Renders a span instead of an anchor.\n * The disabled span is keyboard-focusable (tabindex=\"0\") and announces\n * as a disabled link to screen readers.\n * @attr disabled\n */\n @property({ type: Boolean, reflect: true })\n disabled = false;\n\n /**\n * Prompts the user to download the linked URL. When set to a string,\n * the value is used as the suggested filename.\n * @attr download\n */\n @property({ type: String })\n download: string | undefined = undefined;\n\n /**\n * Relationship between the current document and the linked URL.\n * Automatically set to \"noopener noreferrer\" when target=\"_blank\".\n * @attr rel\n */\n @property({ type: String })\n rel: string | undefined = undefined;\n\n // --- Event Handling ---\n\n /** @internal */\n private _handleClick(e: MouseEvent): void {\n if (this.disabled) {\n e.preventDefault();\n e.stopPropagation();\n return;\n }\n\n this.dispatchEvent(\n new CustomEvent<{ originalEvent: MouseEvent }>('hx-click', {\n bubbles: true,\n composed: true,\n detail: { originalEvent: e },\n }),\n );\n }\n\n // --- Render Helpers ---\n\n /** @internal */\n private _computeRel(): string | undefined {\n if (this.rel) return this.rel;\n if (this.target === '_blank') return 'noopener noreferrer';\n return undefined;\n }\n\n /** @internal */\n private _renderExternalIcon() {\n if (this.target !== '_blank') return nothing;\n\n return html`\n <svg\n class=\"link__external-icon\"\n part=\"external-icon\"\n aria-hidden=\"true\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n >\n ${svg`<path d=\"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6\" /><polyline points=\"15 3 21 3 21 9\" /><line x1=\"10\" y1=\"14\" x2=\"21\" y2=\"3\" />`}\n </svg>\n <span class=\"sr-only\">(opens in new tab)</span>\n `;\n }\n\n // --- Render ---\n\n override render() {\n const classes = {\n link: true,\n [`link--${this.variant}`]: this.variant !== 'default',\n 'link--disabled': this.disabled,\n };\n\n if (this.disabled) {\n return html`\n <span\n part=\"link\"\n class=${classMap(classes)}\n role=\"link\"\n aria-disabled=\"true\"\n @click=${this._handleClick}\n >\n <slot></slot>\n </span>\n `;\n }\n\n return html`\n <a\n part=\"link\"\n class=${classMap(classes)}\n href=${ifDefined(this.href)}\n target=${ifDefined(this.target)}\n rel=${ifDefined(this._computeRel())}\n download=${ifDefined(this.download)}\n @click=${this._handleClick}\n >\n <slot></slot>\n ${this._renderExternalIcon()}\n </a>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'hx-link': HelixLink;\n }\n}\n"],"names":["helixLinkStyles","css","HelixLink","LitElement","e","nothing","html","svg","classes","classMap","ifDefined","tokenStyles","__decorateClass","property","customElement"],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import { css as p, LitElement as f, html as u, nothing as h } from "lit";
2
- import { property as c, customElement as x, state as v, query as g } from "lit/decorators.js";
3
- import { tokenStyles as _ } from "@helixui/tokens/lit";
2
+ import { property as c, customElement as x, state as _, query as g } from "lit/decorators.js";
3
+ import { tokenStyles as v } from "@helixui/tokens/lit";
4
4
  import { d as y } from "./dev-warn-YlwPHjtX.js";
5
5
  import { classMap as k } from "lit/directives/class-map.js";
6
6
  const I = p`
@@ -22,11 +22,13 @@ const I = p`
22
22
  0 2px 4px -2px rgb(0 0 0 / 0.1)
23
23
  );
24
24
  min-width: var(--hx-menu-min-width, 10rem);
25
+ max-height: var(--hx-menu-max-height, 20rem);
26
+ overflow-y: auto;
25
27
  outline: none;
26
28
  }
27
29
  `;
28
- var w = Object.defineProperty, C = Object.getOwnPropertyDescriptor, b = (e, t, s, i) => {
29
- for (var n = i > 1 ? void 0 : i ? C(t, s) : t, r = e.length - 1, o; r >= 0; r--)
30
+ var w = Object.defineProperty, S = Object.getOwnPropertyDescriptor, b = (e, t, s, i) => {
31
+ for (var n = i > 1 ? void 0 : i ? S(t, s) : t, r = e.length - 1, o; r >= 0; r--)
30
32
  (o = e[r]) && (n = (i ? o(t, s, n) : o(n)) || n);
31
33
  return i && n && w(t, s, n), n;
32
34
  };
@@ -155,14 +157,14 @@ let d = class extends f {
155
157
  `;
156
158
  }
157
159
  };
158
- d.styles = [_, I];
160
+ d.styles = [v, I];
159
161
  b([
160
162
  c({ type: String, reflect: !0 })
161
163
  ], d.prototype, "label", 2);
162
164
  d = b([
163
165
  x("hx-menu")
164
166
  ], d);
165
- const S = p`
167
+ const C = p`
166
168
  :host {
167
169
  display: block;
168
170
  }
@@ -262,19 +264,23 @@ const S = p`
262
264
  }
263
265
  }
264
266
  `;
265
- var T = Object.defineProperty, $ = Object.getOwnPropertyDescriptor, l = (e, t, s, i) => {
266
- for (var n = i > 1 ? void 0 : i ? $(t, s) : t, r = e.length - 1, o; r >= 0; r--)
267
+ var T = Object.defineProperty, E = Object.getOwnPropertyDescriptor, l = (e, t, s, i) => {
268
+ for (var n = i > 1 ? void 0 : i ? E(t, s) : t, r = e.length - 1, o; r >= 0; r--)
267
269
  (o = e[r]) && (n = (i ? o(t, s, n) : o(n)) || n);
268
270
  return i && n && T(t, s, n), n;
269
271
  };
270
272
  let a = class extends f {
271
273
  constructor() {
272
- super(...arguments), this._rovingTabIndex = -1, this.value = "", this.disabled = !1, this.checked = !1, this.type = "normal", this.loading = !1, this._hasSubmenu = !1;
274
+ super(...arguments), this._rovingTabIndex = -1, this.value = "", this.disabled = !1, this.checked = !1, this.type = "normal", this.loading = !1, this._hasSubmenu = !1, this._submenuOpen = !1;
273
275
  }
274
276
  /** @internal Set the roving tabindex value. Called by parent hx-menu. */
275
277
  setRovingTabIndex(e) {
276
278
  this._rovingTabIndex = e;
277
279
  }
280
+ /** Set whether the nested submenu is open. Called by the component managing submenu visibility. */
281
+ setSubmenuOpen(e) {
282
+ this._submenuOpen = e;
283
+ }
278
284
  /** Focus the inner interactive element. */
279
285
  focus(e) {
280
286
  var t;
@@ -322,8 +328,18 @@ let a = class extends f {
322
328
  e.preventDefault(), this._activate();
323
329
  return;
324
330
  }
325
- e.key === "ArrowRight" && this._hasSubmenu && (e.preventDefault(), this.dispatchEvent(
326
- new CustomEvent("hx-item-submenu-open", {
331
+ if (e.key === "ArrowRight" && this._hasSubmenu) {
332
+ e.preventDefault(), this.dispatchEvent(
333
+ new CustomEvent("hx-item-submenu-open", {
334
+ bubbles: !0,
335
+ composed: !0,
336
+ detail: { item: this }
337
+ })
338
+ );
339
+ return;
340
+ }
341
+ e.key === "ArrowLeft" && (e.preventDefault(), this.dispatchEvent(
342
+ new CustomEvent("hx-item-submenu-close", {
327
343
  bubbles: !0,
328
344
  composed: !0,
329
345
  detail: { item: this }
@@ -406,7 +422,8 @@ let a = class extends f {
406
422
  tabindex=${this.disabled ? "-1" : String(this._rovingTabIndex)}
407
423
  aria-disabled=${this.disabled ? "true" : h}
408
424
  aria-checked=${t ? this.checked ? "true" : "false" : h}
409
- aria-haspopup=${this._hasSubmenu ? "true" : h}
425
+ aria-haspopup=${this._hasSubmenu ? "menu" : h}
426
+ aria-expanded=${this._hasSubmenu ? this._submenuOpen ? "true" : "false" : h}
410
427
  aria-busy=${this.loading ? "true" : h}
411
428
  @click=${this._handleClick}
412
429
  @keydown=${this._handleKeyDown}
@@ -428,9 +445,9 @@ let a = class extends f {
428
445
  `;
429
446
  }
430
447
  };
431
- a.styles = [_, S];
448
+ a.styles = [v, C];
432
449
  l([
433
- v()
450
+ _()
434
451
  ], a.prototype, "_rovingTabIndex", 2);
435
452
  l([
436
453
  c({ type: String })
@@ -448,15 +465,18 @@ l([
448
465
  c({ type: Boolean, reflect: !0 })
449
466
  ], a.prototype, "loading", 2);
450
467
  l([
451
- v()
468
+ _()
452
469
  ], a.prototype, "_hasSubmenu", 2);
470
+ l([
471
+ _()
472
+ ], a.prototype, "_submenuOpen", 2);
453
473
  l([
454
474
  g(".menu-item")
455
475
  ], a.prototype, "_menuItemEl", 2);
456
476
  a = l([
457
477
  x("hx-menu-item")
458
478
  ], a);
459
- const E = p`
479
+ const $ = p`
460
480
  :host {
461
481
  display: block;
462
482
  }
@@ -467,7 +487,7 @@ const E = p`
467
487
  margin: var(--hx-space-1, 0.25rem) calc(-1 * var(--hx-space-1, 0.25rem));
468
488
  }
469
489
  `;
470
- var D = Object.getOwnPropertyDescriptor, M = (e, t, s, i) => {
490
+ var D = Object.getOwnPropertyDescriptor, O = (e, t, s, i) => {
471
491
  for (var n = i > 1 ? void 0 : i ? D(t, s) : t, r = e.length - 1, o; r >= 0; r--)
472
492
  (o = e[r]) && (n = o(n) || n);
473
493
  return n;
@@ -482,8 +502,8 @@ let m = class extends f {
482
502
  ></div>`;
483
503
  }
484
504
  };
485
- m.styles = [_, E];
486
- m = M([
505
+ m.styles = [v, $];
506
+ m = O([
487
507
  x("hx-menu-divider")
488
508
  ], m);
489
509
  export {
@@ -491,4 +511,4 @@ export {
491
511
  m as a,
492
512
  a as b
493
513
  };
494
- //# sourceMappingURL=hx-menu-divider-DR4G_rqw.js.map
514
+ //# sourceMappingURL=hx-menu-divider-puPmRAdN.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hx-menu-divider-puPmRAdN.js","sources":["../../src/components/hx-menu/hx-menu.styles.ts","../../src/components/hx-menu/hx-menu.ts","../../src/components/hx-menu/hx-menu-item.styles.ts","../../src/components/hx-menu/hx-menu-item.ts","../../src/components/hx-menu/hx-menu-divider.styles.ts","../../src/components/hx-menu/hx-menu-divider.ts"],"sourcesContent":["import { css } from 'lit';\n\nexport const helixMenuStyles = css`\n :host {\n display: block;\n }\n\n .menu {\n display: flex;\n flex-direction: column;\n padding: var(--hx-space-1, 0.25rem);\n background: var(--hx-menu-bg, var(--hx-color-neutral-0, #ffffff));\n border: var(--hx-border-width-thin, 1px) solid\n var(--hx-menu-border-color, var(--hx-color-neutral-200, #e2e8f0));\n border-radius: var(--hx-menu-border-radius, var(--hx-border-radius-md, 0.375rem));\n box-shadow: var(\n --hx-menu-shadow,\n 0 4px 6px -1px rgb(0 0 0 / 0.1),\n 0 2px 4px -2px rgb(0 0 0 / 0.1)\n );\n min-width: var(--hx-menu-min-width, 10rem);\n max-height: var(--hx-menu-max-height, 20rem);\n overflow-y: auto;\n outline: none;\n }\n`;\n","import { LitElement, html } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport { tokenStyles } from '@helixui/tokens/lit';\nimport { helixMenuStyles } from './hx-menu.styles.js';\nimport type { HelixMenuItem } from './hx-menu-item.js';\nimport { devWarn } from '../../utils/dev-warn.js';\n\n/**\n * A menu container that manages keyboard navigation over a list of menu items.\n * Use with `hx-menu-item` and `hx-menu-divider`.\n *\n * @summary Context/action menu with keyboard-navigable items.\n *\n * @tag hx-menu\n *\n * @slot - Default slot for hx-menu-item and hx-menu-divider elements.\n *\n * @fires {CustomEvent<{item: HelixMenuItem, value: string}>} hx-select - Dispatched when an item is selected.\n * @fires {CustomEvent<void>} hx-close - Dispatched when Escape is pressed.\n *\n * @csspart base - The root menu element.\n *\n * @cssprop [--hx-menu-bg=var(--hx-color-neutral-0)] - Menu background color.\n * @cssprop [--hx-menu-border-color=var(--hx-color-neutral-200)] - Menu border color.\n * @cssprop [--hx-menu-border-radius=var(--hx-border-radius-md)] - Menu border radius.\n * @cssprop [--hx-menu-shadow] - Menu box shadow.\n * @cssprop [--hx-menu-min-width=10rem] - Minimum menu width.\n * @cssprop [--hx-menu-max-height=20rem] - Maximum menu height before vertical scroll is activated.\n */\n@customElement('hx-menu')\nexport class HelixMenu extends LitElement {\n static override styles = [tokenStyles, helixMenuStyles];\n\n /**\n * Accessible label for the menu. Rendered as `aria-label` on the inner\n * `role=\"menu\"` element when set.\n * @attr label\n */\n @property({ type: String, reflect: true })\n label = '';\n\n /**\n * Index of the currently focused menu item within the list of enabled items.\n * @internal\n */\n private _focusedIndex = -1;\n\n /**\n * Accumulated character buffer for typeahead search within menu items.\n * @internal\n */\n private _typeaheadBuffer = '';\n\n /**\n * Timer handle that clears the typeahead buffer after a period of inactivity.\n * @internal\n */\n private _typeaheadTimer: ReturnType<typeof setTimeout> | null = null;\n\n /** @internal */\n private _getItems(): HelixMenuItem[] {\n return Array.from(this.querySelectorAll<HelixMenuItem>('hx-menu-item')).filter(\n (item) => !item.disabled && !item.loading,\n );\n }\n\n /**\n * Synchronize roving tabindex across all enabled items.\n * Only the active item (or first item if none active) gets tabindex=0.\n */\n /** @internal */\n private _syncRovingTabIndex(): void {\n const items = this._getItems();\n const activeIndex = this._focusedIndex >= 0 ? this._focusedIndex : 0;\n items.forEach((item, i) => {\n item.setRovingTabIndex(i === activeIndex ? 0 : -1);\n });\n }\n\n /** Focus the first menu item. */\n focusFirst(): void {\n const items = this._getItems();\n const first = items[0];\n if (first !== undefined) {\n this._focusedIndex = 0;\n this._syncRovingTabIndex();\n first.focus();\n }\n }\n\n /** Focus the last menu item. */\n focusLast(): void {\n const items = this._getItems();\n const last = items[items.length - 1];\n if (last !== undefined) {\n this._focusedIndex = items.length - 1;\n this._syncRovingTabIndex();\n last.focus();\n }\n }\n\n /** @internal */\n private _focusItem(index: number): void {\n const items = this._getItems();\n if (items.length === 0) return;\n this._focusedIndex = Math.max(0, Math.min(index, items.length - 1));\n this._syncRovingTabIndex();\n const target = items[this._focusedIndex];\n if (target !== undefined) target.focus();\n }\n\n /** @internal */\n private _updateFocusedIndex(): void {\n const items = this._getItems();\n const active = this.shadowRoot?.activeElement ?? document.activeElement;\n // Find the active item by checking if any item's shadow root contains the active element\n const idx = items.findIndex((item) => item.matches(':focus-within') || item === active);\n if (idx !== -1) this._focusedIndex = idx;\n }\n\n /** @internal */\n private _handleKeyDown(e: KeyboardEvent): void {\n this._updateFocusedIndex();\n const items = this._getItems();\n if (items.length === 0) return;\n\n switch (e.key) {\n case 'ArrowDown':\n e.preventDefault();\n this._focusItem(this._focusedIndex + 1 < items.length ? this._focusedIndex + 1 : 0);\n break;\n case 'ArrowUp':\n e.preventDefault();\n this._focusItem(this._focusedIndex > 0 ? this._focusedIndex - 1 : items.length - 1);\n break;\n case 'Home':\n e.preventDefault();\n this._focusItem(0);\n break;\n case 'End':\n e.preventDefault();\n this._focusItem(items.length - 1);\n break;\n case 'Escape':\n e.preventDefault();\n this.dispatchEvent(new CustomEvent<void>('hx-close', { bubbles: true, composed: true }));\n break;\n default:\n if (e.key.length === 1 && e.key !== ' ' && !e.ctrlKey && !e.metaKey && !e.altKey) {\n this._handleTypeahead(e.key, items);\n }\n break;\n }\n }\n\n /** @internal */\n private _handleTypeahead(char: string, items: HelixMenuItem[]): void {\n if (this._typeaheadTimer !== null) {\n clearTimeout(this._typeaheadTimer);\n }\n this._typeaheadBuffer += char.toLowerCase();\n this._typeaheadTimer = setTimeout(() => {\n this._typeaheadBuffer = '';\n this._typeaheadTimer = null;\n }, 500);\n\n const match = items.findIndex((item) => {\n if (item.disabled || item.hasAttribute('disabled')) return false;\n const text = item.textContent?.trim().toLowerCase() ?? '';\n return text.startsWith(this._typeaheadBuffer);\n });\n\n if (match !== -1) {\n this._focusItem(match);\n }\n }\n\n /** @internal */\n private _handleSlotChange(e: Event): void {\n const slot = e.target;\n if (!(slot instanceof HTMLSlotElement)) return;\n const validTags = new Set(['hx-menu-item', 'hx-menu-divider']);\n const invalid = slot\n .assignedElements()\n .filter((el) => !validTags.has(el.tagName.toLowerCase()));\n if (invalid.length > 0) {\n devWarn(\n 'hx-menu',\n `Default slot expects <hx-menu-item> or <hx-menu-divider> elements. Found unexpected: ${invalid.map((el) => `<${el.tagName.toLowerCase()}>`).join(', ')}`,\n );\n }\n // Initialize roving tabindex when items are slotted\n this._syncRovingTabIndex();\n }\n\n /** @internal */\n private _handleItemSelect(e: Event): void {\n if (!(e instanceof CustomEvent)) return;\n const detail = (e as CustomEvent<{ item: HelixMenuItem; value: string }>).detail;\n const items = this._getItems();\n this._focusedIndex = items.indexOf(detail.item);\n\n this.dispatchEvent(\n new CustomEvent<{ item: HelixMenuItem; value: string }>('hx-select', {\n bubbles: true,\n composed: true,\n detail: { item: detail.item, value: detail.value },\n }),\n );\n }\n\n override disconnectedCallback(): void {\n super.disconnectedCallback();\n if (this._typeaheadTimer !== null) {\n clearTimeout(this._typeaheadTimer);\n this._typeaheadTimer = null;\n }\n }\n\n override firstUpdated(): void {\n if (!this.label) {\n devWarn(\n 'hx-menu',\n 'No accessible label provided. Set the `label` attribute on hx-menu so screen readers can identify this menu (WCAG 4.1.2).',\n );\n }\n }\n\n override render() {\n return html`\n <div\n part=\"base\"\n class=\"menu\"\n role=\"menu\"\n aria-label=${this.label || 'Menu'}\n @keydown=${this._handleKeyDown}\n @hx-item-select=${this._handleItemSelect}\n >\n <slot @slotchange=${this._handleSlotChange}></slot>\n </div>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'hx-menu': HelixMenu;\n }\n}\n","import { css } from 'lit';\n\nexport const helixMenuItemStyles = css`\n :host {\n display: block;\n }\n\n :host([disabled]) {\n pointer-events: none;\n opacity: var(--hx-opacity-disabled, 0.5);\n }\n\n .menu-item {\n display: flex;\n align-items: center;\n gap: var(--hx-space-2, 0.5rem);\n padding: var(--hx-space-2, 0.5rem) var(--hx-space-3, 0.75rem);\n border-radius: var(--hx-border-radius-sm, 0.25rem);\n cursor: pointer;\n color: var(--hx-menu-item-color, var(--hx-color-neutral-900, #0f172a));\n font-size: var(--hx-font-size-sm, 0.875rem);\n font-family: var(--hx-font-family-sans, sans-serif);\n line-height: var(--hx-line-height-tight, 1.25);\n user-select: none;\n -webkit-user-select: none;\n outline: none;\n background: none;\n width: 100%;\n box-sizing: border-box;\n transition: background-color var(--hx-transition-fast, 150ms ease);\n }\n\n .menu-item:hover,\n .menu-item:focus-visible {\n background-color: var(--hx-menu-item-hover-bg, var(--hx-color-neutral-100, #f1f5f9));\n }\n\n .menu-item:focus-visible {\n outline: var(--hx-focus-ring-width, 2px) solid\n var(--hx-menu-item-focus-ring-color, var(--hx-focus-ring-color, var(--hx-color-primary-500)));\n outline-offset: var(--hx-menu-item-focus-ring-offset, 0px);\n }\n\n .menu-item__prefix,\n .menu-item__suffix {\n display: inline-flex;\n align-items: center;\n flex-shrink: 0;\n }\n\n .menu-item__label {\n flex: 1 1 auto;\n }\n\n .menu-item__checked-icon {\n display: inline-flex;\n align-items: center;\n flex-shrink: 0;\n width: 1em;\n opacity: 0;\n transition: opacity var(--hx-transition-fast, 150ms ease);\n }\n\n .menu-item--checked .menu-item__checked-icon {\n opacity: 1;\n }\n\n .menu-item__submenu-icon {\n display: inline-flex;\n align-items: center;\n flex-shrink: 0;\n margin-inline-start: auto;\n }\n\n .menu-item__spinner {\n width: 1em;\n height: 1em;\n flex-shrink: 0;\n animation: hx-menu-spin var(--hx-duration-spinner, 750ms) linear infinite;\n }\n\n @keyframes hx-menu-spin {\n to {\n transform: rotate(360deg);\n }\n }\n\n @media (prefers-reduced-motion: reduce) {\n .menu-item {\n transition: none;\n }\n\n .menu-item__checked-icon {\n transition: none;\n }\n\n .menu-item__spinner {\n animation: none;\n opacity: var(--hx-opacity-muted, 0.6);\n }\n }\n`;\n","import { LitElement, html, nothing } from 'lit';\nimport { customElement, property, query, state } from 'lit/decorators.js';\nimport { classMap } from 'lit/directives/class-map.js';\nimport { tokenStyles } from '@helixui/tokens/lit';\nimport { helixMenuItemStyles } from './hx-menu-item.styles.js';\nimport { devWarn } from '../../utils/dev-warn.js';\n\n/**\n * A single interactive item for use inside `hx-menu`. Supports normal, checkbox,\n * and radio types, loading state, prefix/suffix slots, and submenu nesting.\n * Use `aria-label` on the parent `hx-menu` to provide an accessible name.\n *\n * @summary Interactive item within an hx-menu.\n *\n * @tag hx-menu-item\n *\n * @slot - Default slot for the item label.\n * @slot prefix - Icon or content rendered before the label.\n * @slot suffix - Shortcut text or icon rendered after the label.\n * @slot submenu - A nested hx-menu for submenu content.\n *\n * @fires {CustomEvent<{item: HelixMenuItem, value: string}>} hx-item-select - Dispatched when the item is activated via click, Enter, or Space.\n * @fires {CustomEvent<{item: HelixMenuItem}>} hx-item-submenu-open - Dispatched when ArrowRight is pressed on an item with a submenu.\n * @fires {CustomEvent<{item: HelixMenuItem}>} hx-item-submenu-close - Dispatched when ArrowLeft is pressed on an item, signaling the parent to close the submenu and return focus.\n *\n * @csspart base - The root item element.\n * @csspart prefix - Prefix slot wrapper.\n * @csspart label - Label slot wrapper.\n * @csspart suffix - Suffix slot wrapper.\n * @csspart submenu-icon - The chevron icon indicating a submenu.\n * @csspart checked-icon - The checkmark icon for checkbox-type items.\n *\n * @cssprop [--hx-menu-item-color=var(--hx-color-neutral-900)] - Item text color.\n * @cssprop [--hx-menu-item-hover-bg=var(--hx-color-neutral-100)] - Item hover/focus background.\n */\n@customElement('hx-menu-item')\nexport class HelixMenuItem extends LitElement {\n static override styles = [tokenStyles, helixMenuItemStyles];\n\n /**\n * @internal Managed by parent hx-menu for roving tabindex.\n * Only the active item in the menu has tabindex=0; all others have -1.\n */\n @state()\n private _rovingTabIndex = -1;\n\n /** @internal Set the roving tabindex value. Called by parent hx-menu. */\n setRovingTabIndex(value: number): void {\n this._rovingTabIndex = value;\n }\n\n /** Set whether the nested submenu is open. Called by the component managing submenu visibility. */\n setSubmenuOpen(open: boolean): void {\n this._submenuOpen = open;\n }\n\n /**\n * The value associated with this item, emitted in the hx-select event.\n * @attr value\n */\n @property({ type: String })\n value = '';\n\n /**\n * Whether the item is disabled. Prevents interaction and event dispatch.\n * @attr disabled\n */\n @property({ type: Boolean, reflect: true })\n disabled = false;\n\n /**\n * Whether the item is checked. Only meaningful when type=\"checkbox\".\n * @attr checked\n */\n @property({ type: Boolean, reflect: true })\n checked = false;\n\n /**\n * The type of menu item. \"checkbox\" renders a checkmark and toggles checked state.\n * \"radio\" renders a checkmark and emits selection for radio-group behavior.\n * @attr type\n */\n @property({ type: String, reflect: true })\n type: 'normal' | 'checkbox' | 'radio' = 'normal';\n\n /**\n * Whether the item is in a loading state. Shows a spinner and prevents interaction.\n * @attr loading\n */\n @property({ type: Boolean, reflect: true })\n loading = false;\n\n /** @internal */\n @state()\n private _hasSubmenu = false;\n\n /** @internal Tracks whether the nested submenu is currently open. */\n @state()\n private _submenuOpen = false;\n\n /** @internal */\n @query('.menu-item') private _menuItemEl!: HTMLElement | null;\n\n /** Focus the inner interactive element. */\n override focus(options?: FocusOptions): void {\n this._menuItemEl?.focus(options);\n }\n\n override connectedCallback(): void {\n super.connectedCallback();\n // WCAG 4.1.2: menuitem role is only valid inside a role=\"menu\" or role=\"menubar\" container.\n // Check the closest ancestor with a menu role.\n const menuHost = this.closest('hx-menu, hx-split-button, [role=\"menu\"], [role=\"menubar\"]');\n if (!menuHost) {\n devWarn(\n 'hx-menu-item',\n 'hx-menu-item must be used inside an hx-menu or an element with role=\"menu\". ' +\n 'An orphaned menuitem violates WCAG 1.3.1 (Info and Relationships).',\n );\n }\n }\n\n /** @internal */\n private _handleSubmenuSlotChange(e: Event): void {\n const slot = e.target as HTMLSlotElement;\n this._hasSubmenu = slot.assignedElements().length > 0;\n }\n\n /** @internal */\n private _activate(): void {\n if (this.disabled || this.loading) return;\n\n if (this.type === 'checkbox') {\n this.checked = !this.checked;\n } else if (this.type === 'radio') {\n const menu = this.closest('hx-menu');\n if (menu) {\n menu\n .querySelectorAll<HelixMenuItem>(':scope > hx-menu-item[type=\"radio\"]')\n .forEach((sibling) => {\n sibling.checked = sibling === this;\n });\n } else {\n this.checked = true;\n }\n }\n\n this.dispatchEvent(\n new CustomEvent<{ item: HelixMenuItem; value: string }>('hx-item-select', {\n bubbles: true,\n composed: true,\n detail: { item: this, value: this.value },\n }),\n );\n }\n\n /** @internal */\n private _handleClick(e: MouseEvent): void {\n if (this.disabled || this.loading) {\n e.preventDefault();\n e.stopPropagation();\n return;\n }\n this._activate();\n }\n\n /** @internal */\n private _handleKeyDown(e: KeyboardEvent): void {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n this._activate();\n return;\n }\n\n if (e.key === 'ArrowRight' && this._hasSubmenu) {\n e.preventDefault();\n this.dispatchEvent(\n new CustomEvent<{ item: HelixMenuItem }>('hx-item-submenu-open', {\n bubbles: true,\n composed: true,\n detail: { item: this },\n }),\n );\n return;\n }\n\n if (e.key === 'ArrowLeft') {\n e.preventDefault();\n this.dispatchEvent(\n new CustomEvent<{ item: HelixMenuItem }>('hx-item-submenu-close', {\n bubbles: true,\n composed: true,\n detail: { item: this },\n }),\n );\n }\n }\n\n /** @internal */\n private _renderCheckedIcon() {\n return html`\n <span part=\"checked-icon\" class=\"menu-item__checked-icon\" aria-hidden=\"true\">\n <svg\n width=\"1em\"\n height=\"1em\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"3\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n >\n <polyline points=\"20 6 9 17 4 12\" />\n </svg>\n </span>\n `;\n }\n\n /** @internal */\n private _renderSubmenuIcon() {\n return html`\n <span part=\"submenu-icon\" class=\"menu-item__submenu-icon\" aria-hidden=\"true\">\n <svg\n width=\"1em\"\n height=\"1em\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n >\n <polyline points=\"9 18 15 12 9 6\" />\n </svg>\n </span>\n `;\n }\n\n /** @internal */\n private _renderSpinner() {\n return html`\n <svg class=\"menu-item__spinner\" aria-hidden=\"true\" viewBox=\"0 0 24 24\" fill=\"none\">\n <circle cx=\"12\" cy=\"12\" r=\"10\" stroke=\"currentColor\" stroke-width=\"3\" opacity=\"0.3\" />\n <path\n d=\"M12 2a10 10 0 0 1 10 10\"\n stroke=\"currentColor\"\n stroke-width=\"3\"\n stroke-linecap=\"round\"\n />\n </svg>\n `;\n }\n\n /** @internal */\n private _getRole(): string {\n switch (this.type) {\n case 'checkbox':\n return 'menuitemcheckbox';\n case 'radio':\n return 'menuitemradio';\n default:\n return 'menuitem';\n }\n }\n\n override render() {\n const role = this._getRole();\n const hasCheckableRole = this.type === 'checkbox' || this.type === 'radio';\n const classes = {\n 'menu-item': true,\n 'menu-item--checked': this.checked,\n };\n\n return html`\n <div\n part=\"base\"\n class=${classMap(classes)}\n role=${role}\n tabindex=${this.disabled ? '-1' : String(this._rovingTabIndex)}\n aria-disabled=${this.disabled ? 'true' : nothing}\n aria-checked=${hasCheckableRole ? (this.checked ? 'true' : 'false') : nothing}\n aria-haspopup=${this._hasSubmenu ? 'menu' : nothing}\n aria-expanded=${this._hasSubmenu ? (this._submenuOpen ? 'true' : 'false') : nothing}\n aria-busy=${this.loading ? 'true' : nothing}\n @click=${this._handleClick}\n @keydown=${this._handleKeyDown}\n >\n ${this.loading ? this._renderSpinner() : nothing}\n ${hasCheckableRole ? this._renderCheckedIcon() : nothing}\n <span part=\"prefix\" class=\"menu-item__prefix\">\n <slot name=\"prefix\"></slot>\n </span>\n <span part=\"label\" class=\"menu-item__label\">\n <slot></slot>\n </span>\n <span part=\"suffix\" class=\"menu-item__suffix\">\n <slot name=\"suffix\"></slot>\n </span>\n ${this._hasSubmenu ? this._renderSubmenuIcon() : nothing}\n <slot name=\"submenu\" @slotchange=${this._handleSubmenuSlotChange}></slot>\n </div>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'hx-menu-item': HelixMenuItem;\n }\n}\n","import { css } from 'lit';\n\nexport const helixMenuDividerStyles = css`\n :host {\n display: block;\n }\n\n .menu-divider {\n height: var(--hx-border-width-thin, 1px);\n background-color: var(--hx-menu-divider-color, var(--hx-color-neutral-200, #e2e8f0));\n margin: var(--hx-space-1, 0.25rem) calc(-1 * var(--hx-space-1, 0.25rem));\n }\n`;\n","import { LitElement, html } from 'lit';\nimport { customElement } from 'lit/decorators.js';\nimport { tokenStyles } from '@helixui/tokens/lit';\nimport { helixMenuDividerStyles } from './hx-menu-divider.styles.js';\n\n/**\n * A visual separator for grouping items within an `hx-menu`.\n *\n * @summary Horizontal divider between menu sections.\n *\n * @tag hx-menu-divider\n *\n * @csspart base - The root separator element.\n *\n * @cssprop [--hx-menu-divider-color=var(--hx-color-neutral-200)] - Divider line color.\n */\n@customElement('hx-menu-divider')\nexport class HelixMenuDivider extends LitElement {\n static override styles = [tokenStyles, helixMenuDividerStyles];\n\n override render() {\n return html`<div\n part=\"base\"\n class=\"menu-divider\"\n role=\"separator\"\n aria-orientation=\"horizontal\"\n ></div>`;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'hx-menu-divider': HelixMenuDivider;\n }\n}\n"],"names":["helixMenuStyles","css","HelixMenu","LitElement","item","items","activeIndex","first","last","index","target","active","_a","idx","char","match","slot","validTags","invalid","el","devWarn","detail","html","tokenStyles","__decorateClass","property","customElement","helixMenuItemStyles","HelixMenuItem","value","open","options","menu","sibling","role","hasCheckableRole","classes","classMap","nothing","state","query","helixMenuDividerStyles","HelixMenuDivider"],"mappings":"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"}
@@ -1,8 +1,8 @@
1
- import { css as _, LitElement as g, nothing as x, html as v } from "lit";
1
+ import { css as f, LitElement as g, nothing as x, html as v } from "lit";
2
2
  import { property as h, state as b, customElement as w } from "lit/decorators.js";
3
3
  import { ifDefined as m } from "lit/directives/if-defined.js";
4
4
  import { tokenStyles as y } from "@helixui/tokens/lit";
5
- const $ = _`
5
+ const $ = f`
6
6
  :host {
7
7
  display: block;
8
8
  width: 100%;
@@ -25,9 +25,9 @@ const $ = _`
25
25
  .meter__track {
26
26
  position: relative;
27
27
  width: 100%;
28
- height: var(--hx-meter-track-height, var(--hx-size-2, 0.5rem));
28
+ height: var(--hx-meter-track-height, var(--hx-space-2, 0.5rem));
29
29
  background-color: var(--hx-meter-track-color, var(--hx-color-neutral-200, #e5e7eb));
30
- border-radius: var(--hx-meter-track-radius, var(--hx-radius-full, 9999px));
30
+ border-radius: var(--hx-meter-track-radius, var(--hx-border-radius-full, 9999px));
31
31
  overflow: hidden;
32
32
  }
33
33
 
@@ -69,7 +69,7 @@ const $ = _`
69
69
  }
70
70
 
71
71
  :host([data-state='danger']) {
72
- --_indicator-color: var(--hx-meter-color-danger, var(--hx-color-danger-500, #ef4444));
72
+ --_indicator-color: var(--hx-meter-color-danger, var(--hx-color-error-500, #dc2626));
73
73
  }
74
74
 
75
75
  /* ─── State Label (WCAG 1.4.1) ─── */
@@ -93,7 +93,7 @@ const $ = _`
93
93
  }
94
94
 
95
95
  .meter__state-label[data-state='danger'] {
96
- color: var(--hx-meter-color-danger, var(--hx-color-danger-700, #b91c1c));
96
+ color: var(--hx-meter-color-danger, var(--hx-color-error-700, #991b1b));
97
97
  }
98
98
 
99
99
  @media (prefers-reduced-motion: reduce) {
@@ -141,18 +141,18 @@ let r = class extends g {
141
141
  const a = this.low ?? 0, n = this.high ?? this.max, l = t && e < a, c = i && e > n, d = !l && !c;
142
142
  if (!o)
143
143
  return l || c ? "warning" : "optimum";
144
- const u = this.optimum ?? this.min, p = t && u < a, f = i && u > n;
145
- return !p && !f ? d ? "optimum" : "warning" : p ? l ? "optimum" : d ? "warning" : "danger" : c ? "optimum" : d ? "warning" : "danger";
144
+ const u = this.optimum ?? this.min, p = t && u < a, _ = i && u > n;
145
+ return !p && !_ ? d ? "optimum" : "warning" : p ? l ? "optimum" : d ? "warning" : "danger" : c ? "optimum" : d ? "warning" : "danger";
146
146
  }
147
147
  /** @internal */
148
148
  _onLabelSlotChange(e) {
149
149
  const t = e.target;
150
150
  this._hasSlotContent = t.assignedNodes({ flatten: !0 }).length > 0;
151
151
  }
152
- updated() {
153
- this.dataset.state = this._resolveState();
154
- const e = this._percentage() / 100;
155
- this.style.setProperty("--_value-ratio", String(Math.max(0, Math.min(1, e))));
152
+ updated(e) {
153
+ super.updated(e), this.dataset.state = this._resolveState();
154
+ const t = this._percentage() / 100;
155
+ this.style.setProperty("--_value-ratio", String(Math.max(0, Math.min(1, t))));
156
156
  }
157
157
  render() {
158
158
  const e = this._resolveState(), t = this._clampedValue(), i = e !== "default" ? ` — ${e}` : "", o = `${t} of ${this.max}${i}`, a = this.label !== void 0 || this._hasSlotContent, n = r._STATE_LABELS[e];
@@ -235,4 +235,4 @@ r = s([
235
235
  export {
236
236
  r as H
237
237
  };
238
- //# sourceMappingURL=hx-meter-uXkTZq-W.js.map
238
+ //# sourceMappingURL=hx-meter-CVs4A649.js.map