@helixui/library 3.1.0-next.70 → 3.1.0-next.72

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 (522) hide show
  1. package/custom-elements.json +45 -45
  2. package/dist/components/hx-accordion/hx-accordion-item.d.ts.map +1 -1
  3. package/dist/components/hx-accordion/hx-accordion.d.ts.map +1 -1
  4. package/dist/components/hx-accordion/index.js +1 -1
  5. package/dist/components/hx-action-bar/hx-action-bar.d.ts.map +1 -1
  6. package/dist/components/hx-action-bar/index.js +1 -1
  7. package/dist/components/hx-alert/hx-alert.d.ts.map +1 -1
  8. package/dist/components/hx-alert/hx-alert.styles.d.ts +12 -0
  9. package/dist/components/hx-alert/hx-alert.styles.d.ts.map +1 -1
  10. package/dist/components/hx-alert/index.js +1 -1
  11. package/dist/components/hx-avatar/hx-avatar.d.ts.map +1 -1
  12. package/dist/components/hx-avatar/index.js +1 -1
  13. package/dist/components/hx-badge/hx-badge.d.ts.map +1 -1
  14. package/dist/components/hx-badge/index.js +1 -1
  15. package/dist/components/hx-banner/hx-banner.d.ts.map +1 -1
  16. package/dist/components/hx-banner/hx-banner.styles.d.ts +12 -0
  17. package/dist/components/hx-banner/hx-banner.styles.d.ts.map +1 -1
  18. package/dist/components/hx-banner/index.js +1 -1
  19. package/dist/components/hx-breadcrumb/hx-breadcrumb-item.d.ts.map +1 -1
  20. package/dist/components/hx-breadcrumb/hx-breadcrumb.d.ts.map +1 -1
  21. package/dist/components/hx-breadcrumb/index.js +1 -1
  22. package/dist/components/hx-button/hx-button.d.ts.map +1 -1
  23. package/dist/components/hx-button/hx-button.styles.d.ts.map +1 -1
  24. package/dist/components/hx-button/index.js +1 -1
  25. package/dist/components/hx-button-group/hx-button-group.d.ts.map +1 -1
  26. package/dist/components/hx-button-group/hx-button-group.styles.d.ts.map +1 -1
  27. package/dist/components/hx-button-group/index.js +1 -1
  28. package/dist/components/hx-card/hx-card.d.ts.map +1 -1
  29. package/dist/components/hx-card/hx-card.styles.d.ts +9 -0
  30. package/dist/components/hx-card/hx-card.styles.d.ts.map +1 -1
  31. package/dist/components/hx-card/index.js +1 -1
  32. package/dist/components/hx-carousel/hx-carousel.d.ts.map +1 -1
  33. package/dist/components/hx-carousel/hx-carousel.styles.d.ts.map +1 -1
  34. package/dist/components/hx-carousel/index.js +1 -1
  35. package/dist/components/hx-checkbox/hx-checkbox.d.ts +7 -7
  36. package/dist/components/hx-checkbox/hx-checkbox.d.ts.map +1 -1
  37. package/dist/components/hx-checkbox/index.js +1 -1
  38. package/dist/components/hx-checkbox-group/hx-checkbox-group.d.ts +2 -2
  39. package/dist/components/hx-checkbox-group/hx-checkbox-group.d.ts.map +1 -1
  40. package/dist/components/hx-checkbox-group/index.js +1 -1
  41. package/dist/components/hx-clinical-status/hx-clinical-status.d.ts.map +1 -1
  42. package/dist/components/hx-clinical-status/index.js +1 -1
  43. package/dist/components/hx-code-snippet/hx-code-snippet.d.ts.map +1 -1
  44. package/dist/components/hx-code-snippet/hx-code-snippet.styles.d.ts.map +1 -1
  45. package/dist/components/hx-code-snippet/index.js +1 -1
  46. package/dist/components/hx-color-picker/hx-color-picker.d.ts.map +1 -1
  47. package/dist/components/hx-color-picker/hx-color-picker.styles.d.ts.map +1 -1
  48. package/dist/components/hx-color-picker/index.js +1 -1
  49. package/dist/components/hx-combobox/hx-combobox.d.ts.map +1 -1
  50. package/dist/components/hx-combobox/index.js +1 -1
  51. package/dist/components/hx-copy-button/hx-copy-button.d.ts.map +1 -1
  52. package/dist/components/hx-copy-button/hx-copy-button.styles.d.ts.map +1 -1
  53. package/dist/components/hx-copy-button/index.js +1 -1
  54. package/dist/components/hx-counter/hx-counter.d.ts.map +1 -1
  55. package/dist/components/hx-counter/index.js +1 -1
  56. package/dist/components/hx-data-table/hx-data-table.d.ts.map +1 -1
  57. package/dist/components/hx-data-table/hx-data-table.styles.d.ts.map +1 -1
  58. package/dist/components/hx-data-table/index.js +1 -1
  59. package/dist/components/hx-date-picker/hx-date-picker.d.ts.map +1 -1
  60. package/dist/components/hx-date-picker/index.js +1 -1
  61. package/dist/components/hx-dialog/hx-dialog.d.ts.map +1 -1
  62. package/dist/components/hx-dialog/hx-dialog.styles.d.ts +10 -0
  63. package/dist/components/hx-dialog/hx-dialog.styles.d.ts.map +1 -1
  64. package/dist/components/hx-dialog/index.js +1 -1
  65. package/dist/components/hx-divider/hx-divider.d.ts.map +1 -1
  66. package/dist/components/hx-divider/index.js +1 -1
  67. package/dist/components/hx-drawer/hx-drawer.d.ts.map +1 -1
  68. package/dist/components/hx-drawer/hx-drawer.styles.d.ts +10 -0
  69. package/dist/components/hx-drawer/hx-drawer.styles.d.ts.map +1 -1
  70. package/dist/components/hx-drawer/index.js +1 -1
  71. package/dist/components/hx-dropdown/hx-dropdown.d.ts.map +1 -1
  72. package/dist/components/hx-dropdown/index.js +1 -1
  73. package/dist/components/hx-field/index.js +1 -1
  74. package/dist/components/hx-field-label/hx-field-label.d.ts.map +1 -1
  75. package/dist/components/hx-field-label/index.js +1 -1
  76. package/dist/components/hx-file-upload/hx-file-upload.d.ts.map +1 -1
  77. package/dist/components/hx-file-upload/index.js +1 -1
  78. package/dist/components/hx-form/index.js +1 -1
  79. package/dist/components/hx-help-text/hx-help-text.d.ts.map +1 -1
  80. package/dist/components/hx-help-text/index.js +1 -1
  81. package/dist/components/hx-icon/hx-icon.d.ts.map +1 -1
  82. package/dist/components/hx-icon/index.js +1 -1
  83. package/dist/components/hx-icon-button/hx-icon-button.d.ts.map +1 -1
  84. package/dist/components/hx-icon-button/hx-icon-button.styles.d.ts.map +1 -1
  85. package/dist/components/hx-icon-button/index.js +1 -1
  86. package/dist/components/hx-image/hx-image.d.ts.map +1 -1
  87. package/dist/components/hx-image/index.js +1 -1
  88. package/dist/components/hx-link/hx-link.d.ts.map +1 -1
  89. package/dist/components/hx-link/index.js +1 -1
  90. package/dist/components/hx-list/hx-list-item.d.ts.map +1 -1
  91. package/dist/components/hx-list/hx-list.d.ts.map +1 -1
  92. package/dist/components/hx-list/index.js +1 -1
  93. package/dist/components/hx-menu/hx-menu-divider.d.ts.map +1 -1
  94. package/dist/components/hx-menu/hx-menu-item.d.ts.map +1 -1
  95. package/dist/components/hx-menu/hx-menu-item.styles.d.ts.map +1 -1
  96. package/dist/components/hx-menu/hx-menu.d.ts.map +1 -1
  97. package/dist/components/hx-menu/index.js +1 -1
  98. package/dist/components/hx-meter/hx-meter.d.ts.map +1 -1
  99. package/dist/components/hx-meter/hx-meter.styles.d.ts.map +1 -1
  100. package/dist/components/hx-meter/index.js +1 -1
  101. package/dist/components/hx-nav/hx-nav.d.ts.map +1 -1
  102. package/dist/components/hx-nav/hx-nav.styles.d.ts.map +1 -1
  103. package/dist/components/hx-nav/index.js +1 -1
  104. package/dist/components/hx-number-input/hx-number-input.d.ts.map +1 -1
  105. package/dist/components/hx-number-input/index.js +1 -1
  106. package/dist/components/hx-overflow-menu/hx-overflow-menu.d.ts.map +1 -1
  107. package/dist/components/hx-overflow-menu/hx-overflow-menu.styles.d.ts.map +1 -1
  108. package/dist/components/hx-overflow-menu/index.js +1 -1
  109. package/dist/components/hx-pagination/hx-pagination.d.ts.map +1 -1
  110. package/dist/components/hx-pagination/hx-pagination.styles.d.ts.map +1 -1
  111. package/dist/components/hx-pagination/index.js +1 -1
  112. package/dist/components/hx-patient-banner/hx-patient-banner.d.ts.map +1 -1
  113. package/dist/components/hx-patient-banner/hx-patient-banner.styles.d.ts.map +1 -1
  114. package/dist/components/hx-patient-banner/index.js +1 -1
  115. package/dist/components/hx-phi-field/hx-phi-field.d.ts +5 -5
  116. package/dist/components/hx-phi-field/hx-phi-field.d.ts.map +1 -1
  117. package/dist/components/hx-phi-field/index.js +1 -1
  118. package/dist/components/hx-popover/hx-popover.d.ts.map +1 -1
  119. package/dist/components/hx-popover/hx-popover.styles.d.ts +9 -0
  120. package/dist/components/hx-popover/hx-popover.styles.d.ts.map +1 -1
  121. package/dist/components/hx-popover/index.js +1 -1
  122. package/dist/components/hx-popup/hx-popup.d.ts.map +1 -1
  123. package/dist/components/hx-popup/hx-popup.styles.d.ts +9 -0
  124. package/dist/components/hx-popup/hx-popup.styles.d.ts.map +1 -1
  125. package/dist/components/hx-popup/index.js +1 -1
  126. package/dist/components/hx-progress-bar/hx-progress-bar.d.ts.map +1 -1
  127. package/dist/components/hx-progress-bar/index.js +1 -1
  128. package/dist/components/hx-progress-ring/hx-progress-ring.d.ts.map +1 -1
  129. package/dist/components/hx-progress-ring/index.js +1 -1
  130. package/dist/components/hx-prose/index.js +1 -1
  131. package/dist/components/hx-radio-group/hx-radio-group.d.ts +3 -3
  132. package/dist/components/hx-radio-group/hx-radio-group.d.ts.map +1 -1
  133. package/dist/components/hx-radio-group/hx-radio.d.ts +5 -5
  134. package/dist/components/hx-radio-group/hx-radio.d.ts.map +1 -1
  135. package/dist/components/hx-radio-group/index.js +1 -1
  136. package/dist/components/hx-rating/hx-rating.d.ts.map +1 -1
  137. package/dist/components/hx-rating/index.js +1 -1
  138. package/dist/components/hx-select/hx-select.d.ts.map +1 -1
  139. package/dist/components/hx-select/index.js +1 -1
  140. package/dist/components/hx-side-nav/hx-nav-item.d.ts.map +1 -1
  141. package/dist/components/hx-side-nav/hx-nav-item.styles.d.ts.map +1 -1
  142. package/dist/components/hx-side-nav/hx-side-nav.d.ts.map +1 -1
  143. package/dist/components/hx-side-nav/hx-side-nav.styles.d.ts.map +1 -1
  144. package/dist/components/hx-side-nav/index.js +1 -1
  145. package/dist/components/hx-skeleton/hx-skeleton.d.ts.map +1 -1
  146. package/dist/components/hx-skeleton/index.js +1 -1
  147. package/dist/components/hx-slider/hx-slider.d.ts.map +1 -1
  148. package/dist/components/hx-slider/hx-slider.styles.d.ts.map +1 -1
  149. package/dist/components/hx-slider/index.js +1 -1
  150. package/dist/components/hx-spinner/hx-spinner.d.ts.map +1 -1
  151. package/dist/components/hx-spinner/index.js +1 -1
  152. package/dist/components/hx-split-button/hx-split-button.d.ts.map +1 -1
  153. package/dist/components/hx-split-button/hx-split-button.styles.d.ts.map +1 -1
  154. package/dist/components/hx-split-button/index.js +1 -1
  155. package/dist/components/hx-split-panel/hx-split-panel.d.ts.map +1 -1
  156. package/dist/components/hx-split-panel/hx-split-panel.styles.d.ts.map +1 -1
  157. package/dist/components/hx-split-panel/index.js +1 -1
  158. package/dist/components/hx-stat/hx-stat.d.ts.map +1 -1
  159. package/dist/components/hx-stat/index.js +1 -1
  160. package/dist/components/hx-status-indicator/hx-status-indicator.d.ts.map +1 -1
  161. package/dist/components/hx-status-indicator/index.js +1 -1
  162. package/dist/components/hx-steps/hx-step.d.ts.map +1 -1
  163. package/dist/components/hx-steps/hx-step.styles.d.ts.map +1 -1
  164. package/dist/components/hx-steps/hx-steps.d.ts.map +1 -1
  165. package/dist/components/hx-steps/index.js +1 -1
  166. package/dist/components/hx-structured-list/hx-structured-list.d.ts.map +1 -1
  167. package/dist/components/hx-structured-list/index.js +1 -1
  168. package/dist/components/hx-switch/hx-switch.d.ts.map +1 -1
  169. package/dist/components/hx-switch/hx-switch.styles.d.ts.map +1 -1
  170. package/dist/components/hx-switch/index.js +1 -1
  171. package/dist/components/hx-table/hx-table.d.ts +6 -6
  172. package/dist/components/hx-table/hx-table.d.ts.map +1 -1
  173. package/dist/components/hx-table/hx-td.d.ts +1 -1
  174. package/dist/components/hx-table/index.js +1 -1
  175. package/dist/components/hx-tabs/hx-tab-panel.d.ts +2 -2
  176. package/dist/components/hx-tabs/hx-tab-panel.d.ts.map +1 -1
  177. package/dist/components/hx-tabs/hx-tab.d.ts +6 -6
  178. package/dist/components/hx-tabs/hx-tab.d.ts.map +1 -1
  179. package/dist/components/hx-tabs/hx-tabs.d.ts +8 -8
  180. package/dist/components/hx-tabs/hx-tabs.d.ts.map +1 -1
  181. package/dist/components/hx-tabs/index.js +1 -1
  182. package/dist/components/hx-tag/hx-tag.d.ts.map +1 -1
  183. package/dist/components/hx-tag/index.js +1 -1
  184. package/dist/components/hx-text/hx-text.d.ts.map +1 -1
  185. package/dist/components/hx-text/hx-text.styles.d.ts.map +1 -1
  186. package/dist/components/hx-text/index.js +1 -1
  187. package/dist/components/hx-text-input/hx-text-input.d.ts.map +1 -1
  188. package/dist/components/hx-text-input/hx-text-input.styles.d.ts +12 -0
  189. package/dist/components/hx-text-input/hx-text-input.styles.d.ts.map +1 -1
  190. package/dist/components/hx-text-input/index.js +1 -1
  191. package/dist/components/hx-textarea/hx-textarea.d.ts.map +1 -1
  192. package/dist/components/hx-textarea/hx-textarea.styles.d.ts.map +1 -1
  193. package/dist/components/hx-textarea/index.js +1 -1
  194. package/dist/components/hx-time-picker/hx-time-picker.d.ts.map +1 -1
  195. package/dist/components/hx-time-picker/hx-time-picker.styles.d.ts.map +1 -1
  196. package/dist/components/hx-time-picker/index.js +1 -1
  197. package/dist/components/hx-toast/hx-toast.d.ts.map +1 -1
  198. package/dist/components/hx-toast/hx-toast.styles.d.ts +10 -0
  199. package/dist/components/hx-toast/hx-toast.styles.d.ts.map +1 -1
  200. package/dist/components/hx-toast/index.js +1 -1
  201. package/dist/components/hx-toggle-button/hx-toggle-button.d.ts.map +1 -1
  202. package/dist/components/hx-toggle-button/hx-toggle-button.styles.d.ts.map +1 -1
  203. package/dist/components/hx-toggle-button/index.js +1 -1
  204. package/dist/components/hx-tooltip/hx-tooltip.d.ts.map +1 -1
  205. package/dist/components/hx-tooltip/hx-tooltip.styles.d.ts +8 -0
  206. package/dist/components/hx-tooltip/hx-tooltip.styles.d.ts.map +1 -1
  207. package/dist/components/hx-tooltip/index.js +1 -1
  208. package/dist/components/hx-top-nav/hx-top-nav.d.ts.map +1 -1
  209. package/dist/components/hx-top-nav/hx-top-nav.styles.d.ts.map +1 -1
  210. package/dist/components/hx-top-nav/index.js +1 -1
  211. package/dist/components/hx-tree-view/hx-tree-item.d.ts.map +1 -1
  212. package/dist/components/hx-tree-view/hx-tree-item.styles.d.ts.map +1 -1
  213. package/dist/components/hx-tree-view/hx-tree-view.d.ts.map +1 -1
  214. package/dist/components/hx-tree-view/index.js +1 -1
  215. package/dist/css/helix-all.css +1107 -775
  216. package/dist/css/helix-core.css +213 -152
  217. package/dist/css/helix-data.css +51 -42
  218. package/dist/css/helix-feedback.css +121 -94
  219. package/dist/css/helix-forms.css +465 -301
  220. package/dist/css/helix-layout.css +7 -4
  221. package/dist/css/helix-media.css +13 -9
  222. package/dist/css/helix-navigation.css +80 -53
  223. package/dist/css/helix-overlay.css +57 -45
  224. package/dist/css/helix-tokens.css +103 -103
  225. package/dist/css/helix-utility.css +51 -34
  226. package/dist/css/hx-action-bar.css +4 -4
  227. package/dist/css/hx-alert.css +27 -23
  228. package/dist/css/hx-avatar.css +3 -3
  229. package/dist/css/hx-badge.css +22 -22
  230. package/dist/css/hx-banner.css +31 -24
  231. package/dist/css/hx-button-group.css +31 -14
  232. package/dist/css/hx-button.css +38 -21
  233. package/dist/css/hx-card.css +24 -10
  234. package/dist/css/hx-carousel.css +13 -9
  235. package/dist/css/hx-checkbox-group.css +3 -3
  236. package/dist/css/hx-checkbox.css +17 -17
  237. package/dist/css/hx-clinical-status.css +28 -28
  238. package/dist/css/hx-code-snippet.css +18 -15
  239. package/dist/css/hx-color-picker.css +30 -13
  240. package/dist/css/hx-combobox.css +26 -26
  241. package/dist/css/hx-copy-button.css +6 -3
  242. package/dist/css/hx-counter.css +1 -1
  243. package/dist/css/hx-data-table.css +21 -15
  244. package/dist/css/hx-date-picker.css +31 -31
  245. package/dist/css/hx-dialog.css +31 -24
  246. package/dist/css/hx-divider.css +2 -2
  247. package/dist/css/hx-drawer.css +13 -13
  248. package/dist/css/hx-dropdown.css +1 -1
  249. package/dist/css/hx-field-label.css +3 -3
  250. package/dist/css/hx-field.css +6 -6
  251. package/dist/css/hx-file-upload.css +16 -16
  252. package/dist/css/hx-help-text.css +5 -5
  253. package/dist/css/hx-icon-button.css +49 -38
  254. package/dist/css/hx-image.css +3 -3
  255. package/dist/css/hx-link.css +9 -9
  256. package/dist/css/hx-list.css +1 -1
  257. package/dist/css/hx-menu.css +1 -1
  258. package/dist/css/hx-meter.css +11 -10
  259. package/dist/css/hx-nav.css +17 -11
  260. package/dist/css/hx-number-input.css +6 -6
  261. package/dist/css/hx-overflow-menu.css +17 -8
  262. package/dist/css/hx-pagination.css +18 -12
  263. package/dist/css/hx-patient-banner.css +17 -9
  264. package/dist/css/hx-phi-field.css +4 -4
  265. package/dist/css/hx-popover.css +8 -4
  266. package/dist/css/hx-progress-bar.css +7 -7
  267. package/dist/css/hx-progress-ring.css +6 -6
  268. package/dist/css/hx-radio-group.css +5 -5
  269. package/dist/css/hx-rating.css +5 -5
  270. package/dist/css/hx-select.css +12 -12
  271. package/dist/css/hx-side-nav.css +13 -10
  272. package/dist/css/hx-skeleton.css +1 -1
  273. package/dist/css/hx-slider.css +14 -11
  274. package/dist/css/hx-spinner.css +4 -4
  275. package/dist/css/hx-split-button.css +40 -26
  276. package/dist/css/hx-split-panel.css +7 -4
  277. package/dist/css/hx-stat.css +8 -8
  278. package/dist/css/hx-status-indicator.css +7 -7
  279. package/dist/css/hx-structured-list.css +5 -5
  280. package/dist/css/hx-switch.css +15 -7
  281. package/dist/css/hx-table.css +6 -6
  282. package/dist/css/hx-tabs.css +3 -3
  283. package/dist/css/hx-tag.css +18 -18
  284. package/dist/css/hx-text-input.css +139 -61
  285. package/dist/css/hx-text.css +9 -7
  286. package/dist/css/hx-textarea.css +66 -27
  287. package/dist/css/hx-time-picker.css +25 -19
  288. package/dist/css/hx-toast.css +24 -9
  289. package/dist/css/hx-toggle-button.css +41 -28
  290. package/dist/css/hx-tooltip.css +4 -3
  291. package/dist/css/hx-top-nav.css +10 -7
  292. package/dist/css/hx-tree-view.css +1 -1
  293. package/dist/css/index.css +1 -1
  294. package/dist/css/manifest.json +106 -22
  295. package/dist/index.js +74 -74
  296. package/dist/shared/forced-colors-CTEDFRGa.js +117 -0
  297. package/dist/shared/forced-colors-CTEDFRGa.js.map +1 -0
  298. package/dist/shared/{hx-accordion-Wt52OOZD.js → hx-accordion-cnKg4_la.js} +31 -30
  299. package/dist/shared/hx-accordion-cnKg4_la.js.map +1 -0
  300. package/dist/shared/{hx-action-bar-6UzmViHI.js → hx-action-bar-CitgcpGv.js} +37 -36
  301. package/dist/shared/hx-action-bar-CitgcpGv.js.map +1 -0
  302. package/dist/shared/{hx-alert-D7n94HwI.js → hx-alert-BZH8iHQf.js} +36 -31
  303. package/dist/shared/hx-alert-BZH8iHQf.js.map +1 -0
  304. package/dist/shared/{hx-avatar-iLYzu8MJ.js → hx-avatar-C9hOmlAb.js} +19 -18
  305. package/dist/shared/hx-avatar-C9hOmlAb.js.map +1 -0
  306. package/dist/shared/{hx-badge-CVCmMPyW.js → hx-badge-CQXgOXJM.js} +65 -64
  307. package/dist/shared/hx-badge-CQXgOXJM.js.map +1 -0
  308. package/dist/shared/{hx-banner-C_He7Tr4.js → hx-banner-DT7Zn9Bo.js} +43 -35
  309. package/dist/shared/hx-banner-DT7Zn9Bo.js.map +1 -0
  310. package/dist/shared/{hx-breadcrumb-item-BgG5RcmA.js → hx-breadcrumb-item-COeYcB2x.js} +24 -23
  311. package/dist/shared/hx-breadcrumb-item-COeYcB2x.js.map +1 -0
  312. package/dist/shared/{hx-button-group-BJOGWoMa.js → hx-button-group-BI-QBqmO.js} +45 -27
  313. package/dist/shared/hx-button-group-BI-QBqmO.js.map +1 -0
  314. package/dist/shared/{hx-button-CQZswjtQ.js → hx-button-modUSOpY.js} +52 -34
  315. package/dist/shared/hx-button-modUSOpY.js.map +1 -0
  316. package/dist/shared/{hx-card-Dy_FuLfS.js → hx-card-CU1QnjNb.js} +42 -27
  317. package/dist/shared/hx-card-CU1QnjNb.js.map +1 -0
  318. package/dist/shared/{hx-carousel-item-D_dCv61-.js → hx-carousel-item-BaE4hpLl.js} +38 -33
  319. package/dist/shared/hx-carousel-item-BaE4hpLl.js.map +1 -0
  320. package/dist/shared/{hx-checkbox-ZKjOF7_3.js → hx-checkbox-C46TyXhM.js} +29 -28
  321. package/dist/shared/hx-checkbox-C46TyXhM.js.map +1 -0
  322. package/dist/shared/{hx-checkbox-group-XjOBHLiP.js → hx-checkbox-group-C9n315Ju.js} +18 -17
  323. package/dist/shared/hx-checkbox-group-C9n315Ju.js.map +1 -0
  324. package/dist/shared/{hx-clinical-status-BS5lcddT.js → hx-clinical-status-BmSjfSEN.js} +55 -54
  325. package/dist/shared/hx-clinical-status-BmSjfSEN.js.map +1 -0
  326. package/dist/shared/{hx-code-snippet-DssubcYM.js → hx-code-snippet-CJ0FbQYG.js} +34 -30
  327. package/dist/shared/hx-code-snippet-CJ0FbQYG.js.map +1 -0
  328. package/dist/shared/{hx-color-picker-DBaKTVLr.js → hx-color-picker-DiDLZyvK.js} +74 -56
  329. package/dist/shared/hx-color-picker-DiDLZyvK.js.map +1 -0
  330. package/dist/shared/{hx-combobox-DLwnvHVd.js → hx-combobox-DaA5dBC4.js} +38 -37
  331. package/dist/shared/hx-combobox-DaA5dBC4.js.map +1 -0
  332. package/dist/shared/{hx-copy-button-8deNUdwP.js → hx-copy-button-sUVuikyH.js} +23 -19
  333. package/dist/shared/hx-copy-button-sUVuikyH.js.map +1 -0
  334. package/dist/shared/{hx-counter-CKfl_g8K.js → hx-counter-0zYapFhf.js} +10 -9
  335. package/dist/shared/hx-counter-0zYapFhf.js.map +1 -0
  336. package/dist/shared/{hx-data-table-CnLxo9PH.js → hx-data-table-Cq3t86Ic.js} +101 -94
  337. package/dist/shared/hx-data-table-Cq3t86Ic.js.map +1 -0
  338. package/dist/shared/{hx-date-picker-D7H7CsVH.js → hx-date-picker-DMqRQNSB.js} +42 -41
  339. package/dist/shared/hx-date-picker-DMqRQNSB.js.map +1 -0
  340. package/dist/shared/{hx-dialog-BW-jetzN.js → hx-dialog-eIS8tcDm.js} +50 -42
  341. package/dist/shared/hx-dialog-eIS8tcDm.js.map +1 -0
  342. package/dist/shared/{hx-divider-CvyUVcp-.js → hx-divider-CYfcUjcr.js} +11 -10
  343. package/dist/shared/hx-divider-CYfcUjcr.js.map +1 -0
  344. package/dist/shared/{hx-drawer-BT52I4tk.js → hx-drawer-DDhDz7RI.js} +26 -25
  345. package/dist/shared/hx-drawer-DDhDz7RI.js.map +1 -0
  346. package/dist/shared/{hx-dropdown-BpVpL6Dz.js → hx-dropdown-LyaRc8Rf.js} +15 -14
  347. package/dist/shared/hx-dropdown-LyaRc8Rf.js.map +1 -0
  348. package/dist/shared/{hx-field-BX4zE3z5.js → hx-field-B3Qo8OLS.js} +11 -11
  349. package/dist/shared/{hx-field-BX4zE3z5.js.map → hx-field-B3Qo8OLS.js.map} +1 -1
  350. package/dist/shared/{hx-field-label-DtJzb1r3.js → hx-field-label-BVRyyKeh.js} +12 -11
  351. package/dist/shared/hx-field-label-BVRyyKeh.js.map +1 -0
  352. package/dist/shared/{hx-file-upload-BNuepoGn.js → hx-file-upload-zTDbjsRw.js} +37 -36
  353. package/dist/shared/hx-file-upload-zTDbjsRw.js.map +1 -0
  354. package/dist/shared/hx-form-CkChEATa.js +257 -0
  355. package/dist/shared/hx-form-CkChEATa.js.map +1 -0
  356. package/dist/shared/{hx-help-text-Br3igJv5.js → hx-help-text-Xb2Yr8x2.js} +29 -28
  357. package/dist/shared/hx-help-text-Xb2Yr8x2.js.map +1 -0
  358. package/dist/shared/{hx-icon-button-CqXH5Wwb.js → hx-icon-button-BmV97nqz.js} +81 -69
  359. package/dist/shared/hx-icon-button-BmV97nqz.js.map +1 -0
  360. package/dist/shared/{hx-icon-CcyDPDYY.js → hx-icon-fuVm4-bk.js} +15 -14
  361. package/dist/shared/hx-icon-fuVm4-bk.js.map +1 -0
  362. package/dist/shared/{hx-image-2gt14zZd.js → hx-image-Ben_4yM5.js} +18 -17
  363. package/dist/shared/hx-image-Ben_4yM5.js.map +1 -0
  364. package/dist/shared/{hx-link-Bem4Gn68.js → hx-link-DmiV-mPw.js} +19 -18
  365. package/dist/shared/hx-link-DmiV-mPw.js.map +1 -0
  366. package/dist/shared/{hx-list-_9qVv02L.js → hx-list-CkphGi9T.js} +22 -21
  367. package/dist/shared/hx-list-CkphGi9T.js.map +1 -0
  368. package/dist/shared/{hx-menu-divider-DsHWyPHy.js → hx-menu-divider-j__TZjH2.js} +36 -32
  369. package/dist/shared/hx-menu-divider-j__TZjH2.js.map +1 -0
  370. package/dist/shared/{hx-meter-TbROk-dw.js → hx-meter-Cm7k_Ro8.js} +42 -40
  371. package/dist/shared/hx-meter-Cm7k_Ro8.js.map +1 -0
  372. package/dist/shared/{hx-nav-BcYDmjf7.js → hx-nav-LoyEKZQC.js} +30 -23
  373. package/dist/shared/hx-nav-LoyEKZQC.js.map +1 -0
  374. package/dist/shared/{hx-nav-item-BTMMQv6c.js → hx-nav-item-D8xHLVOs.js} +74 -66
  375. package/dist/shared/hx-nav-item-D8xHLVOs.js.map +1 -0
  376. package/dist/shared/{hx-number-input-l6jeaGWW.js → hx-number-input-yUzFOSC1.js} +56 -55
  377. package/dist/shared/hx-number-input-yUzFOSC1.js.map +1 -0
  378. package/dist/shared/{hx-overflow-menu-DJ4qpgmi.js → hx-overflow-menu-BmKyAp5D.js} +34 -24
  379. package/dist/shared/hx-overflow-menu-BmKyAp5D.js.map +1 -0
  380. package/dist/shared/{hx-pagination-5FeVFIve.js → hx-pagination-Dqw5dorC.js} +40 -33
  381. package/dist/shared/hx-pagination-Dqw5dorC.js.map +1 -0
  382. package/dist/shared/{hx-patient-banner-uE6gqLpT.js → hx-patient-banner-CkS-Lmj4.js} +29 -20
  383. package/dist/shared/hx-patient-banner-CkS-Lmj4.js.map +1 -0
  384. package/dist/shared/{hx-phi-field-DxeWcRm9.js → hx-phi-field-Bf9TdtC1.js} +13 -12
  385. package/dist/shared/hx-phi-field-Bf9TdtC1.js.map +1 -0
  386. package/dist/shared/{hx-popover-C05QcD9m.js → hx-popover-B93rTAfr.js} +27 -22
  387. package/dist/shared/hx-popover-B93rTAfr.js.map +1 -0
  388. package/dist/shared/{hx-popup-DZXpsJ1R.js → hx-popup-COUXXZ9X.js} +8 -7
  389. package/dist/shared/hx-popup-COUXXZ9X.js.map +1 -0
  390. package/dist/shared/{hx-progress-bar-CJdwAeDg.js → hx-progress-bar-Bn3JEPUf.js} +25 -24
  391. package/dist/shared/hx-progress-bar-Bn3JEPUf.js.map +1 -0
  392. package/dist/shared/{hx-progress-ring-3zMwvrwD.js → hx-progress-ring-TwHyXeEp.js} +15 -14
  393. package/dist/shared/hx-progress-ring-TwHyXeEp.js.map +1 -0
  394. package/dist/shared/{hx-prose-BCtK7YL6.js → hx-prose-BThYcASV.js} +12 -12
  395. package/dist/shared/{hx-prose-BCtK7YL6.js.map → hx-prose-BThYcASV.js.map} +1 -1
  396. package/dist/shared/{hx-radio-QHrhL908.js → hx-radio-N8xgDd_5.js} +34 -33
  397. package/dist/shared/hx-radio-N8xgDd_5.js.map +1 -0
  398. package/dist/shared/{hx-rating-BO9kl9pb.js → hx-rating-i2FL1WUN.js} +14 -13
  399. package/dist/shared/hx-rating-i2FL1WUN.js.map +1 -0
  400. package/dist/shared/{hx-select-BuMvRDkY.js → hx-select-vgaBo1Ai.js} +26 -25
  401. package/dist/shared/hx-select-vgaBo1Ai.js.map +1 -0
  402. package/dist/shared/{hx-skeleton-LxkI0pxr.js → hx-skeleton-Cnieh5Uc.js} +14 -13
  403. package/dist/shared/hx-skeleton-Cnieh5Uc.js.map +1 -0
  404. package/dist/shared/{hx-slider-wcF_oyNJ.js → hx-slider-ydBamYhd.js} +58 -54
  405. package/dist/shared/hx-slider-ydBamYhd.js.map +1 -0
  406. package/dist/shared/{hx-spinner-BKjuCdZB.js → hx-spinner-DL5AYr16.js} +18 -17
  407. package/dist/shared/hx-spinner-DL5AYr16.js.map +1 -0
  408. package/dist/shared/{hx-split-button-CEkQqbF9.js → hx-split-button-BeMsmS6N.js} +58 -43
  409. package/dist/shared/hx-split-button-BeMsmS6N.js.map +1 -0
  410. package/dist/shared/{hx-split-panel-BymHlV5e.js → hx-split-panel-BVG1VWNT.js} +14 -10
  411. package/dist/shared/hx-split-panel-BVG1VWNT.js.map +1 -0
  412. package/dist/shared/{hx-stat-DTRyLF3a.js → hx-stat-WOcNV1Ry.js} +17 -16
  413. package/dist/shared/hx-stat-WOcNV1Ry.js.map +1 -0
  414. package/dist/shared/{hx-status-indicator-DIGRGM2G.js → hx-status-indicator-BlQyen43.js} +15 -14
  415. package/dist/shared/hx-status-indicator-BlQyen43.js.map +1 -0
  416. package/dist/shared/{hx-step-D15gtcLm.js → hx-step-DL3PbOzm.js} +61 -48
  417. package/dist/shared/hx-step-DL3PbOzm.js.map +1 -0
  418. package/dist/shared/{hx-structured-list-CqNbaEXg.js → hx-structured-list-m_-dMJbC.js} +18 -17
  419. package/dist/shared/hx-structured-list-m_-dMJbC.js.map +1 -0
  420. package/dist/shared/{hx-switch-CbunfMHW.js → hx-switch-Dougzsgp.js} +28 -19
  421. package/dist/shared/hx-switch-Dougzsgp.js.map +1 -0
  422. package/dist/shared/{hx-tab-panel-BIzKfW5i.js → hx-tab-panel-CbkO9VKu.js} +45 -44
  423. package/dist/shared/hx-tab-panel-CbkO9VKu.js.map +1 -0
  424. package/dist/shared/{hx-tag-CgnrNnte.js → hx-tag-CNSmdyaK.js} +63 -62
  425. package/dist/shared/hx-tag-CNSmdyaK.js.map +1 -0
  426. package/dist/shared/{hx-td-B737T0_c.js → hx-td-1zwTFLRw.js} +41 -40
  427. package/dist/shared/hx-td-1zwTFLRw.js.map +1 -0
  428. package/dist/shared/{hx-text-DMC2CPlL.js → hx-text-Bz_9fJ3J.js} +28 -25
  429. package/dist/shared/hx-text-Bz_9fJ3J.js.map +1 -0
  430. package/dist/shared/{hx-text-input-eSPVURd5.js → hx-text-input-B-caO5fI.js} +159 -80
  431. package/dist/shared/hx-text-input-B-caO5fI.js.map +1 -0
  432. package/dist/shared/{hx-textarea-C4DjRmo4.js → hx-textarea-D9O4U8cb.js} +109 -69
  433. package/dist/shared/hx-textarea-D9O4U8cb.js.map +1 -0
  434. package/dist/shared/{hx-time-picker-BtbHX7A4.js → hx-time-picker-m0z4nFB-.js} +41 -34
  435. package/dist/shared/hx-time-picker-m0z4nFB-.js.map +1 -0
  436. package/dist/shared/{hx-toggle-button-FOvw-ebx.js → hx-toggle-button-Dd8clXB4.js} +67 -53
  437. package/dist/shared/hx-toggle-button-Dd8clXB4.js.map +1 -0
  438. package/dist/shared/{hx-tooltip-BoZi2crX.js → hx-tooltip-nYOv9OLu.js} +18 -16
  439. package/dist/shared/hx-tooltip-nYOv9OLu.js.map +1 -0
  440. package/dist/shared/{hx-top-nav-Cd9zvv1B.js → hx-top-nav-CchPYaiV.js} +32 -28
  441. package/dist/shared/hx-top-nav-CchPYaiV.js.map +1 -0
  442. package/dist/shared/{hx-tree-item-A45WCiBu.js → hx-tree-item-DtMC3DTa.js} +35 -28
  443. package/dist/shared/hx-tree-item-DtMC3DTa.js.map +1 -0
  444. package/dist/shared/{toast-factory-M373dTcz.js → toast-factory-DvDRAh0l.js} +87 -71
  445. package/dist/shared/toast-factory-DvDRAh0l.js.map +1 -0
  446. package/dist/styles/forced-colors.d.ts +60 -0
  447. package/dist/styles/forced-colors.d.ts.map +1 -0
  448. package/figma-inventory.json +81 -81
  449. package/package.json +2 -2
  450. package/dist/shared/hx-accordion-Wt52OOZD.js.map +0 -1
  451. package/dist/shared/hx-action-bar-6UzmViHI.js.map +0 -1
  452. package/dist/shared/hx-alert-D7n94HwI.js.map +0 -1
  453. package/dist/shared/hx-avatar-iLYzu8MJ.js.map +0 -1
  454. package/dist/shared/hx-badge-CVCmMPyW.js.map +0 -1
  455. package/dist/shared/hx-banner-C_He7Tr4.js.map +0 -1
  456. package/dist/shared/hx-breadcrumb-item-BgG5RcmA.js.map +0 -1
  457. package/dist/shared/hx-button-CQZswjtQ.js.map +0 -1
  458. package/dist/shared/hx-button-group-BJOGWoMa.js.map +0 -1
  459. package/dist/shared/hx-card-Dy_FuLfS.js.map +0 -1
  460. package/dist/shared/hx-carousel-item-D_dCv61-.js.map +0 -1
  461. package/dist/shared/hx-checkbox-ZKjOF7_3.js.map +0 -1
  462. package/dist/shared/hx-checkbox-group-XjOBHLiP.js.map +0 -1
  463. package/dist/shared/hx-clinical-status-BS5lcddT.js.map +0 -1
  464. package/dist/shared/hx-code-snippet-DssubcYM.js.map +0 -1
  465. package/dist/shared/hx-color-picker-DBaKTVLr.js.map +0 -1
  466. package/dist/shared/hx-combobox-DLwnvHVd.js.map +0 -1
  467. package/dist/shared/hx-copy-button-8deNUdwP.js.map +0 -1
  468. package/dist/shared/hx-counter-CKfl_g8K.js.map +0 -1
  469. package/dist/shared/hx-data-table-CnLxo9PH.js.map +0 -1
  470. package/dist/shared/hx-date-picker-D7H7CsVH.js.map +0 -1
  471. package/dist/shared/hx-dialog-BW-jetzN.js.map +0 -1
  472. package/dist/shared/hx-divider-CvyUVcp-.js.map +0 -1
  473. package/dist/shared/hx-drawer-BT52I4tk.js.map +0 -1
  474. package/dist/shared/hx-dropdown-BpVpL6Dz.js.map +0 -1
  475. package/dist/shared/hx-field-label-DtJzb1r3.js.map +0 -1
  476. package/dist/shared/hx-file-upload-BNuepoGn.js.map +0 -1
  477. package/dist/shared/hx-form-ButQFt9A.js +0 -257
  478. package/dist/shared/hx-form-ButQFt9A.js.map +0 -1
  479. package/dist/shared/hx-help-text-Br3igJv5.js.map +0 -1
  480. package/dist/shared/hx-icon-CcyDPDYY.js.map +0 -1
  481. package/dist/shared/hx-icon-button-CqXH5Wwb.js.map +0 -1
  482. package/dist/shared/hx-image-2gt14zZd.js.map +0 -1
  483. package/dist/shared/hx-link-Bem4Gn68.js.map +0 -1
  484. package/dist/shared/hx-list-_9qVv02L.js.map +0 -1
  485. package/dist/shared/hx-menu-divider-DsHWyPHy.js.map +0 -1
  486. package/dist/shared/hx-meter-TbROk-dw.js.map +0 -1
  487. package/dist/shared/hx-nav-BcYDmjf7.js.map +0 -1
  488. package/dist/shared/hx-nav-item-BTMMQv6c.js.map +0 -1
  489. package/dist/shared/hx-number-input-l6jeaGWW.js.map +0 -1
  490. package/dist/shared/hx-overflow-menu-DJ4qpgmi.js.map +0 -1
  491. package/dist/shared/hx-pagination-5FeVFIve.js.map +0 -1
  492. package/dist/shared/hx-patient-banner-uE6gqLpT.js.map +0 -1
  493. package/dist/shared/hx-phi-field-DxeWcRm9.js.map +0 -1
  494. package/dist/shared/hx-popover-C05QcD9m.js.map +0 -1
  495. package/dist/shared/hx-popup-DZXpsJ1R.js.map +0 -1
  496. package/dist/shared/hx-progress-bar-CJdwAeDg.js.map +0 -1
  497. package/dist/shared/hx-progress-ring-3zMwvrwD.js.map +0 -1
  498. package/dist/shared/hx-radio-QHrhL908.js.map +0 -1
  499. package/dist/shared/hx-rating-BO9kl9pb.js.map +0 -1
  500. package/dist/shared/hx-select-BuMvRDkY.js.map +0 -1
  501. package/dist/shared/hx-skeleton-LxkI0pxr.js.map +0 -1
  502. package/dist/shared/hx-slider-wcF_oyNJ.js.map +0 -1
  503. package/dist/shared/hx-spinner-BKjuCdZB.js.map +0 -1
  504. package/dist/shared/hx-split-button-CEkQqbF9.js.map +0 -1
  505. package/dist/shared/hx-split-panel-BymHlV5e.js.map +0 -1
  506. package/dist/shared/hx-stat-DTRyLF3a.js.map +0 -1
  507. package/dist/shared/hx-status-indicator-DIGRGM2G.js.map +0 -1
  508. package/dist/shared/hx-step-D15gtcLm.js.map +0 -1
  509. package/dist/shared/hx-structured-list-CqNbaEXg.js.map +0 -1
  510. package/dist/shared/hx-switch-CbunfMHW.js.map +0 -1
  511. package/dist/shared/hx-tab-panel-BIzKfW5i.js.map +0 -1
  512. package/dist/shared/hx-tag-CgnrNnte.js.map +0 -1
  513. package/dist/shared/hx-td-B737T0_c.js.map +0 -1
  514. package/dist/shared/hx-text-DMC2CPlL.js.map +0 -1
  515. package/dist/shared/hx-text-input-eSPVURd5.js.map +0 -1
  516. package/dist/shared/hx-textarea-C4DjRmo4.js.map +0 -1
  517. package/dist/shared/hx-time-picker-BtbHX7A4.js.map +0 -1
  518. package/dist/shared/hx-toggle-button-FOvw-ebx.js.map +0 -1
  519. package/dist/shared/hx-tooltip-BoZi2crX.js.map +0 -1
  520. package/dist/shared/hx-top-nav-Cd9zvv1B.js.map +0 -1
  521. package/dist/shared/hx-tree-item-A45WCiBu.js.map +0 -1
  522. package/dist/shared/toast-factory-M373dTcz.js.map +0 -1
@@ -1,9 +1,10 @@
1
1
  import { css as p, html as u, nothing as h } from "lit";
2
- import { property as c, customElement as f, state as x, query as _ } from "lit/decorators.js";
3
- import { d as g } from "./dev-warn-YlwPHjtX.js";
4
- import { H as v } from "./helix-element-BNEYeiys.js";
5
- import { classMap as y } from "lit/directives/class-map.js";
6
- const k = p`
2
+ import { property as c, customElement as f, state as x, query as g } from "lit/decorators.js";
3
+ import { f as v } from "./forced-colors-CTEDFRGa.js";
4
+ import { d as y } from "./dev-warn-YlwPHjtX.js";
5
+ import { H as b } from "./helix-element-BNEYeiys.js";
6
+ import { classMap as k } from "lit/directives/class-map.js";
7
+ const I = p`
7
8
  :host {
8
9
  display: block;
9
10
  }
@@ -14,7 +15,7 @@ const k = p`
14
15
  padding: var(--hx-space-1, 0.25rem);
15
16
  background: var(--hx-menu-bg, var(--hx-color-surface-default, #ffffff));
16
17
  border: var(--hx-border-width-thin, 1px) solid
17
- var(--hx-menu-border-color, var(--hx-color-border-default, #e2e8f0));
18
+ var(--hx-menu-border-color, var(--hx-color-border-default, #d6dbd5));
18
19
  border-radius: var(--hx-menu-border-radius, var(--hx-border-radius-md, 0.375rem));
19
20
  box-shadow: var(
20
21
  --hx-menu-shadow,
@@ -35,12 +36,12 @@ const k = p`
35
36
  }
36
37
  }
37
38
  `;
38
- var w = Object.defineProperty, I = Object.getOwnPropertyDescriptor, b = (e, t, s, n) => {
39
- for (var i = n > 1 ? void 0 : n ? I(t, s) : t, r = e.length - 1, a; r >= 0; r--)
39
+ var w = Object.defineProperty, C = Object.getOwnPropertyDescriptor, _ = (e, t, s, n) => {
40
+ for (var i = n > 1 ? void 0 : n ? C(t, s) : t, r = e.length - 1, a; r >= 0; r--)
40
41
  (a = e[r]) && (i = (n ? a(t, s, i) : a(i)) || i);
41
42
  return n && i && w(t, s, i), i;
42
43
  };
43
- let d = class extends v {
44
+ let d = class extends b {
44
45
  constructor() {
45
46
  super(...arguments), this.label = "", this._focusedIndex = -1, this._typeaheadBuffer = "", this._typeaheadTimer = null;
46
47
  }
@@ -127,7 +128,7 @@ let d = class extends v {
127
128
  const t = e.target;
128
129
  if (!(t instanceof HTMLSlotElement)) return;
129
130
  const s = /* @__PURE__ */ new Set(["hx-menu-item", "hx-menu-divider"]), n = t.assignedElements().filter((i) => !s.has(i.tagName.toLowerCase()));
130
- n.length > 0 && g(
131
+ n.length > 0 && y(
131
132
  "hx-menu",
132
133
  `Default slot expects <hx-menu-item> or <hx-menu-divider> elements. Found unexpected: ${n.map((i) => `<${i.tagName.toLowerCase()}>`).join(", ")}`
133
134
  ), this._syncRovingTabIndex();
@@ -165,14 +166,14 @@ let d = class extends v {
165
166
  `;
166
167
  }
167
168
  };
168
- d.styles = [k];
169
- b([
169
+ d.styles = [I, v];
170
+ _([
170
171
  c({ type: String, reflect: !0 })
171
172
  ], d.prototype, "label", 2);
172
- d = b([
173
+ d = _([
173
174
  f("hx-menu")
174
175
  ], d);
175
- const C = p`
176
+ const S = p`
176
177
  :host {
177
178
  display: block;
178
179
  }
@@ -190,7 +191,7 @@ const C = p`
190
191
  padding: var(--hx-space-2, 0.5rem) var(--hx-space-3, 0.75rem);
191
192
  border-radius: var(--hx-border-radius-sm, 0.25rem);
192
193
  cursor: pointer;
193
- color: var(--hx-menu-item-color, var(--hx-color-text-primary, #0f172a));
194
+ color: var(--hx-menu-item-color, var(--hx-color-text-primary, #0d1825));
194
195
  font-size: var(--hx-font-size-sm, 0.875rem);
195
196
  font-family: var(--hx-menu-item-font-family, var(--hx-font-family-sans, sans-serif));
196
197
  line-height: var(--hx-line-height-tight, 1.25);
@@ -205,12 +206,15 @@ const C = p`
205
206
 
206
207
  .menu-item:hover,
207
208
  .menu-item:focus-visible {
208
- background-color: var(--hx-menu-item-hover-bg, var(--hx-color-surface-sunken, #f1f5f9));
209
+ background-color: var(--hx-menu-item-hover-bg, var(--hx-color-surface-sunken, #ebeee9));
209
210
  }
210
211
 
211
212
  .menu-item:focus-visible {
212
213
  outline: var(--hx-focus-ring-width, 2px) solid
213
- var(--hx-menu-item-focus-ring-color, var(--hx-focus-ring-color, var(--hx-color-primary-500)));
214
+ var(
215
+ --hx-menu-item-focus-ring-color,
216
+ var(--hx-focus-ring-color, var(--hx-color-primary-500, #429797))
217
+ );
214
218
  outline-offset: var(--hx-menu-item-focus-ring-offset, 0px);
215
219
  }
216
220
 
@@ -299,12 +303,12 @@ const C = p`
299
303
  }
300
304
  }
301
305
  `;
302
- var S = Object.defineProperty, T = Object.getOwnPropertyDescriptor, l = (e, t, s, n) => {
303
- for (var i = n > 1 ? void 0 : n ? T(t, s) : t, r = e.length - 1, a; r >= 0; r--)
306
+ var T = Object.defineProperty, E = Object.getOwnPropertyDescriptor, l = (e, t, s, n) => {
307
+ for (var i = n > 1 ? void 0 : n ? E(t, s) : t, r = e.length - 1, a; r >= 0; r--)
304
308
  (a = e[r]) && (i = (n ? a(t, s, i) : a(i)) || i);
305
- return n && i && S(t, s, i), i;
309
+ return n && i && T(t, s, i), i;
306
310
  };
307
- let o = class extends v {
311
+ let o = class extends b {
308
312
  constructor() {
309
313
  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;
310
314
  }
@@ -452,7 +456,7 @@ let o = class extends v {
452
456
  return u`
453
457
  <div
454
458
  part="base"
455
- class=${y(s)}
459
+ class=${k(s)}
456
460
  role=${e}
457
461
  tabindex=${this.disabled ? "-1" : String(this._rovingTabIndex)}
458
462
  aria-disabled=${this.disabled ? "true" : h}
@@ -480,7 +484,7 @@ let o = class extends v {
480
484
  `;
481
485
  }
482
486
  };
483
- o.styles = [C];
487
+ o.styles = [S, v];
484
488
  l([
485
489
  x()
486
490
  ], o.prototype, "_rovingTabIndex", 2);
@@ -506,19 +510,19 @@ l([
506
510
  x()
507
511
  ], o.prototype, "_submenuOpen", 2);
508
512
  l([
509
- _(".menu-item")
513
+ g(".menu-item")
510
514
  ], o.prototype, "_menuItemEl", 2);
511
515
  o = l([
512
516
  f("hx-menu-item")
513
517
  ], o);
514
- const E = p`
518
+ const $ = p`
515
519
  :host {
516
520
  display: block;
517
521
  }
518
522
 
519
523
  .menu-divider {
520
524
  height: var(--hx-border-width-thin, 1px);
521
- background-color: var(--hx-menu-divider-color, var(--hx-color-border-default, #e2e8f0));
525
+ background-color: var(--hx-menu-divider-color, var(--hx-color-border-default, #d6dbd5));
522
526
  margin: var(--hx-space-1, 0.25rem) calc(-1 * var(--hx-space-1, 0.25rem));
523
527
  }
524
528
 
@@ -530,12 +534,12 @@ const E = p`
530
534
  }
531
535
  }
532
536
  `;
533
- var $ = Object.getOwnPropertyDescriptor, D = (e, t, s, n) => {
534
- for (var i = n > 1 ? void 0 : n ? $(t, s) : t, r = e.length - 1, a; r >= 0; r--)
537
+ var D = Object.getOwnPropertyDescriptor, O = (e, t, s, n) => {
538
+ for (var i = n > 1 ? void 0 : n ? D(t, s) : t, r = e.length - 1, a; r >= 0; r--)
535
539
  (a = e[r]) && (i = a(i) || i);
536
540
  return i;
537
541
  };
538
- let m = class extends v {
542
+ let m = class extends b {
539
543
  render() {
540
544
  return u`<div
541
545
  part="base"
@@ -545,8 +549,8 @@ let m = class extends v {
545
549
  ></div>`;
546
550
  }
547
551
  };
548
- m.styles = [E];
549
- m = D([
552
+ m.styles = [$, v];
553
+ m = O([
550
554
  f("hx-menu-divider")
551
555
  ], m);
552
556
  export {
@@ -554,4 +558,4 @@ export {
554
558
  m as a,
555
559
  o as b
556
560
  };
557
- //# sourceMappingURL=hx-menu-divider-DsHWyPHy.js.map
561
+ //# sourceMappingURL=hx-menu-divider-j__TZjH2.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hx-menu-divider-j__TZjH2.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-surface-default, #ffffff));\n border: var(--hx-border-width-thin, 1px) solid\n var(--hx-menu-border-color, var(--hx-color-border-default, #d6dbd5));\n border-radius: var(--hx-menu-border-radius, var(--hx-border-radius-md, 0.375rem));\n box-shadow: var(\n --hx-menu-shadow,\n var(--hx-shadow-md, 0 4px 6px -1px rgb(0 0 0 / 0.1), 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 /* ─── High Contrast Mode (forced-colors) ─── */\n\n @media (forced-colors: active) {\n .menu {\n background-color: Canvas;\n border: 2px solid CanvasText;\n }\n }\n`;\n","import { html } from 'lit';\nimport '../../utilities/document-token-adoption.js';\nimport { customElement, property } from 'lit/decorators.js';\nimport { HelixElement } from '../../base/index.js';\nimport { forcedColorsInteractive } from '../../styles/forced-colors.js';\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 * @cssprop [--hx-space-1] - Spacing token.\n * @cssprop [--hx-color-neutral-0] - Color.\n * @cssprop [--hx-border-width-thin] - Width.\n * @cssprop [--hx-color-neutral-200] - Color.\n * @cssprop [--hx-border-radius-md] - CSS custom property.\n * @cssprop [--hx-shadow-md] - Box shadow.\n */\n@customElement('hx-menu')\nexport class HelixMenu extends HelixElement {\n static override styles = [helixMenuStyles, forcedColorsInteractive];\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 min-height: var(--hx-touch-target-min, 44px);\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-text-primary, #0d1825));\n font-size: var(--hx-font-size-sm, 0.875rem);\n font-family: var(--hx-menu-item-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-surface-sunken, #ebeee9));\n }\n\n .menu-item:focus-visible {\n outline: var(--hx-focus-ring-width, 2px) solid\n var(\n --hx-menu-item-focus-ring-color,\n var(--hx-focus-ring-color, var(--hx-color-primary-500, #429797))\n );\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 /* ─── High Contrast Mode (forced-colors) ─── */\n\n @media (forced-colors: active) {\n .menu-item {\n forced-color-adjust: none;\n color: CanvasText;\n background-color: Canvas;\n }\n\n .menu-item:hover,\n .menu-item:focus-visible {\n background-color: Highlight;\n color: HighlightText;\n }\n\n .menu-item:focus-visible {\n outline: 2px solid Highlight;\n outline-offset: -2px;\n }\n\n :host([disabled]) .menu-item {\n color: GrayText;\n opacity: 1;\n }\n }\n`;\n","import { html, nothing } from 'lit';\nimport '../../utilities/document-token-adoption.js';\nimport { customElement, property, query, state } from 'lit/decorators.js';\nimport { classMap } from 'lit/directives/class-map.js';\nimport { HelixElement } from '../../base/index.js';\nimport { forcedColorsInteractive } from '../../styles/forced-colors.js';\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 HelixElement {\n static override styles = [helixMenuItemStyles, forcedColorsInteractive];\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-border-default, #d6dbd5));\n margin: var(--hx-space-1, 0.25rem) calc(-1 * var(--hx-space-1, 0.25rem));\n }\n\n /* ─── High Contrast Mode (forced-colors) ─── */\n\n @media (forced-colors: active) {\n .menu-divider {\n background-color: GrayText;\n }\n }\n`;\n","import { html } from 'lit';\nimport '../../utilities/document-token-adoption.js';\nimport { customElement } from 'lit/decorators.js';\nimport { HelixElement } from '../../base/index.js';\nimport { forcedColorsInteractive } from '../../styles/forced-colors.js';\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 HelixElement {\n static override styles = [helixMenuDividerStyles, forcedColorsInteractive];\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","HelixElement","item","items","activeIndex","i","first","last","index","target","active","_a","idx","char","match","slot","validTags","invalid","el","devWarn","detail","html","forcedColorsInteractive","__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,9 +1,10 @@
1
1
  import { css as x, nothing as g, html as v } from "lit";
2
2
  import { property as h, state as _, customElement as b } from "lit/decorators.js";
3
3
  import { ifDefined as m } from "lit/directives/if-defined.js";
4
- import { H as w } from "./helix-element-BNEYeiys.js";
5
- import { c as y } from "./id-counter-DuX8vsui.js";
6
- const $ = x`
4
+ import { a as w } from "./forced-colors-CTEDFRGa.js";
5
+ import { H as y } from "./helix-element-BNEYeiys.js";
6
+ import { c as $ } from "./id-counter-DuX8vsui.js";
7
+ const S = x`
7
8
  :host {
8
9
  display: block;
9
10
  width: 100%;
@@ -19,14 +20,15 @@ const $ = x`
19
20
  }
20
21
 
21
22
  .meter:focus-visible {
22
- outline: var(--hx-focus-ring-width, 2px) solid var(--hx-focus-ring-color, #60a5fa);
23
+ outline: var(--hx-focus-ring-width, 2px) solid
24
+ var(--hx-focus-ring-color, var(--hx-color-primary-500, #429797));
23
25
  outline-offset: var(--hx-focus-ring-offset, 2px);
24
26
  }
25
27
 
26
28
  .meter__label {
27
29
  font-size: var(--hx-font-size-sm, 0.875rem);
28
30
  font-weight: var(--hx-font-weight-medium, 500);
29
- color: var(--hx-meter-label-color, var(--hx-color-neutral-700, #334155));
31
+ color: var(--hx-meter-label-color, var(--hx-color-neutral-700, #313e4b));
30
32
  line-height: var(--hx-line-height-normal, 1.5);
31
33
  }
32
34
 
@@ -34,7 +36,7 @@ const $ = x`
34
36
  position: relative;
35
37
  width: 100%;
36
38
  height: var(--hx-meter-track-height, var(--hx-space-2, 0.5rem));
37
- background-color: var(--hx-meter-track-color, var(--hx-color-neutral-200, #e2e8f0));
39
+ background-color: var(--hx-meter-track-color, var(--hx-color-neutral-200, #d6dbd5));
38
40
  border-radius: var(--hx-meter-track-radius, var(--hx-border-radius-full, 9999px));
39
41
  overflow: hidden;
40
42
  }
@@ -63,21 +65,21 @@ const $ = x`
63
65
  /* ─── Default (no thresholds configured) ─── */
64
66
 
65
67
  :host {
66
- --_indicator-color: var(--hx-meter-indicator-color, var(--hx-color-primary-500, #2563eb));
68
+ --_indicator-color: var(--hx-meter-indicator-color, var(--hx-color-primary-500, #429797));
67
69
  }
68
70
 
69
71
  /* ─── Semantic state colors ─── */
70
72
 
71
73
  :host([data-state='optimum']) {
72
- --_indicator-color: var(--hx-meter-color-optimum, var(--hx-color-success-500, #16a34a));
74
+ --_indicator-color: var(--hx-meter-color-optimum, var(--hx-color-success-500, #3b9e58));
73
75
  }
74
76
 
75
77
  :host([data-state='warning']) {
76
- --_indicator-color: var(--hx-meter-color-warning, var(--hx-color-warning-500, #d97706));
78
+ --_indicator-color: var(--hx-meter-color-warning, var(--hx-color-warning-500, #c2711c));
77
79
  }
78
80
 
79
81
  :host([data-state='danger']) {
80
- --_indicator-color: var(--hx-meter-color-danger, var(--hx-color-error-500, #dc2626));
82
+ --_indicator-color: var(--hx-meter-color-danger, var(--hx-color-error-500, #e5493e));
81
83
  }
82
84
 
83
85
  /* ─── State Label (WCAG 1.4.1) ─── */
@@ -93,15 +95,15 @@ const $ = x`
93
95
  }
94
96
 
95
97
  .meter__state-label[data-state='optimum'] {
96
- color: var(--hx-meter-color-optimum, var(--hx-color-success-700, #166534));
98
+ color: var(--hx-meter-color-optimum, var(--hx-color-success-700, #146831));
97
99
  }
98
100
 
99
101
  .meter__state-label[data-state='warning'] {
100
- color: var(--hx-meter-color-warning, var(--hx-color-warning-700, #92400e));
102
+ color: var(--hx-meter-color-warning, var(--hx-color-warning-700, #804605));
101
103
  }
102
104
 
103
105
  .meter__state-label[data-state='danger'] {
104
- color: var(--hx-meter-color-danger, var(--hx-color-error-700, #991b1b));
106
+ color: var(--hx-meter-color-danger, var(--hx-color-error-700, #a21312));
105
107
  }
106
108
 
107
109
  /* ─── Native meter hidden (we use custom rendering) ─── */
@@ -131,15 +133,15 @@ const $ = x`
131
133
  }
132
134
  }
133
135
  `;
134
- var S = Object.defineProperty, L = Object.getOwnPropertyDescriptor, s = (e, t, i, o) => {
135
- for (var r = o > 1 ? void 0 : o ? L(t, i) : t, n = e.length - 1, l; n >= 0; n--)
136
- (l = e[n]) && (r = (o ? l(t, i, r) : l(r)) || r);
137
- return o && r && S(t, i, r), r;
136
+ var C = Object.defineProperty, L = Object.getOwnPropertyDescriptor, n = (e, t, o, i) => {
137
+ for (var r = i > 1 ? void 0 : i ? L(t, o) : t, s = e.length - 1, l; s >= 0; s--)
138
+ (l = e[s]) && (r = (i ? l(t, o, r) : l(r)) || r);
139
+ return i && r && C(t, o, r), r;
138
140
  };
139
- const C = y("hx-meter");
140
- let a = class extends w {
141
+ const M = $("hx-meter");
142
+ let a = class extends y {
141
143
  constructor() {
142
- super(...arguments), this._uid = C(), this.value = 0, this.min = 0, this.max = 100, this._hasSlotContent = !1;
144
+ super(...arguments), this._uid = M(), this.value = 0, this.min = 0, this.max = 100, this._hasSlotContent = !1;
143
145
  }
144
146
  /** @internal */
145
147
  _clampedValue() {
@@ -152,12 +154,12 @@ let a = class extends w {
152
154
  }
153
155
  /** @internal */
154
156
  _resolveState() {
155
- const e = this._clampedValue(), t = this.low !== void 0, i = this.high !== void 0, o = this.optimum !== void 0;
156
- if (!t && !i && !o) return "default";
157
- const r = this.low ?? 0, n = this.high ?? this.max, l = t && e < r, c = i && e > n, d = !l && !c;
158
- if (!o)
157
+ const e = this._clampedValue(), t = this.low !== void 0, o = this.high !== void 0, i = this.optimum !== void 0;
158
+ if (!t && !o && !i) return "default";
159
+ const r = this.low ?? 0, s = this.high ?? this.max, l = t && e < r, c = o && e > s, d = !l && !c;
160
+ if (!i)
159
161
  return l || c ? "warning" : "optimum";
160
- const u = this.optimum ?? this.min, p = t && u < r, f = i && u > n;
162
+ const u = this.optimum ?? this.min, p = t && u < r, f = o && u > s;
161
163
  return !p && !f ? d ? "optimum" : "warning" : p ? l ? "optimum" : d ? "warning" : "danger" : c ? "optimum" : d ? "warning" : "danger";
162
164
  }
163
165
  /** @internal */
@@ -171,7 +173,7 @@ let a = class extends w {
171
173
  this.style.setProperty("--_value-ratio", String(Math.max(0, Math.min(1, t))));
172
174
  }
173
175
  render() {
174
- const e = this._resolveState(), t = this._clampedValue(), i = e !== "default" ? ` — ${e}` : "", o = `${t} of ${this.max}${i}`, r = this.label !== void 0 || this._hasSlotContent, n = a._STATE_LABELS[e];
176
+ const e = this._resolveState(), t = this._clampedValue(), o = e !== "default" ? ` — ${e}` : "", i = `${t} of ${this.max}${o}`, r = this.label !== void 0 || this._hasSlotContent, s = a._STATE_LABELS[e];
175
177
  return v`
176
178
  <div
177
179
  part="base"
@@ -181,7 +183,7 @@ let a = class extends w {
181
183
  aria-valuenow=${t}
182
184
  aria-valuemin=${this.min}
183
185
  aria-valuemax=${this.max}
184
- aria-valuetext=${o}
186
+ aria-valuetext=${i}
185
187
  aria-label=${m(r ? void 0 : `${t} of ${this.max}`)}
186
188
  aria-labelledby=${m(r ? `${this._uid}-label` : void 0)}
187
189
  >
@@ -196,8 +198,8 @@ let a = class extends w {
196
198
  <div class="meter__track" part="track">
197
199
  <div part="indicator" class="meter__indicator"></div>
198
200
  </div>
199
- ${n ? v`<span class="meter__state-label" data-state=${e} aria-hidden="true"
200
- >${n}</span
201
+ ${s ? v`<span class="meter__state-label" data-state=${e} aria-hidden="true"
202
+ >${s}</span
201
203
  >` : g}
202
204
  <meter
203
205
  class="meter__native"
@@ -214,40 +216,40 @@ let a = class extends w {
214
216
  `;
215
217
  }
216
218
  };
217
- a.styles = [$];
219
+ a.styles = [S, w];
218
220
  a._STATE_LABELS = {
219
221
  optimum: "Optimum",
220
222
  warning: "Warning",
221
223
  danger: "Danger"
222
224
  };
223
- s([
225
+ n([
224
226
  h({ type: Number, reflect: !0 })
225
227
  ], a.prototype, "value", 2);
226
- s([
228
+ n([
227
229
  h({ type: Number, reflect: !0 })
228
230
  ], a.prototype, "min", 2);
229
- s([
231
+ n([
230
232
  h({ type: Number, reflect: !0 })
231
233
  ], a.prototype, "max", 2);
232
- s([
234
+ n([
233
235
  h({ type: Number, reflect: !0 })
234
236
  ], a.prototype, "low", 2);
235
- s([
237
+ n([
236
238
  h({ type: Number, reflect: !0 })
237
239
  ], a.prototype, "high", 2);
238
- s([
240
+ n([
239
241
  h({ type: Number, reflect: !0 })
240
242
  ], a.prototype, "optimum", 2);
241
- s([
243
+ n([
242
244
  h({ type: String })
243
245
  ], a.prototype, "label", 2);
244
- s([
246
+ n([
245
247
  _()
246
248
  ], a.prototype, "_hasSlotContent", 2);
247
- a = s([
249
+ a = n([
248
250
  b("hx-meter")
249
251
  ], a);
250
252
  export {
251
253
  a as H
252
254
  };
253
- //# sourceMappingURL=hx-meter-TbROk-dw.js.map
255
+ //# sourceMappingURL=hx-meter-Cm7k_Ro8.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hx-meter-Cm7k_Ro8.js","sources":["../../src/components/hx-meter/hx-meter.styles.ts","../../src/components/hx-meter/hx-meter.ts"],"sourcesContent":["import { css } from 'lit';\n\nexport const helixMeterStyles = css`\n :host {\n display: block;\n width: 100%;\n }\n\n .meter {\n display: flex;\n flex-direction: column;\n gap: var(--hx-space-2, 0.5rem);\n width: 100%;\n outline: none;\n border-radius: var(--hx-border-radius-md, 0.375rem);\n }\n\n .meter:focus-visible {\n outline: var(--hx-focus-ring-width, 2px) solid\n var(--hx-focus-ring-color, var(--hx-color-primary-500, #429797));\n outline-offset: var(--hx-focus-ring-offset, 2px);\n }\n\n .meter__label {\n font-size: var(--hx-font-size-sm, 0.875rem);\n font-weight: var(--hx-font-weight-medium, 500);\n color: var(--hx-meter-label-color, var(--hx-color-neutral-700, #313e4b));\n line-height: var(--hx-line-height-normal, 1.5);\n }\n\n .meter__track {\n position: relative;\n width: 100%;\n height: var(--hx-meter-track-height, var(--hx-space-2, 0.5rem));\n background-color: var(--hx-meter-track-color, var(--hx-color-neutral-200, #d6dbd5));\n border-radius: var(--hx-meter-track-radius, var(--hx-border-radius-full, 9999px));\n overflow: hidden;\n }\n\n .meter__indicator {\n position: absolute;\n inset-block: 0;\n inset-inline-start: 0;\n height: 100%;\n width: 100%;\n border-radius: inherit;\n background-color: var(--_indicator-color);\n transform-origin: left center;\n transform: scaleX(var(--_value-ratio, 0));\n transition:\n transform var(--hx-transition-fast, 150ms ease),\n background-color var(--hx-transition-fast, 150ms ease);\n }\n\n @media (prefers-reduced-motion: reduce) {\n .meter__indicator {\n transition: none;\n }\n }\n\n /* ─── Default (no thresholds configured) ─── */\n\n :host {\n --_indicator-color: var(--hx-meter-indicator-color, var(--hx-color-primary-500, #429797));\n }\n\n /* ─── Semantic state colors ─── */\n\n :host([data-state='optimum']) {\n --_indicator-color: var(--hx-meter-color-optimum, var(--hx-color-success-500, #3b9e58));\n }\n\n :host([data-state='warning']) {\n --_indicator-color: var(--hx-meter-color-warning, var(--hx-color-warning-500, #c2711c));\n }\n\n :host([data-state='danger']) {\n --_indicator-color: var(--hx-meter-color-danger, var(--hx-color-error-500, #e5493e));\n }\n\n /* ─── State Label (WCAG 1.4.1) ─── */\n /* Visible text label rendered below the track when a semantic state is active. */\n /* Ensures the meter state is not conveyed by fill color alone. */\n /* aria-hidden=\"true\" because aria-valuetext already includes the state for AT. */\n\n .meter__state-label {\n font-size: var(--hx-font-size-xs, 0.75rem);\n font-weight: var(--hx-font-weight-medium, 500);\n line-height: var(--hx-line-height-tight, 1.25);\n font-family: var(--hx-meter-font-family, var(--hx-font-family-sans, sans-serif));\n }\n\n .meter__state-label[data-state='optimum'] {\n color: var(--hx-meter-color-optimum, var(--hx-color-success-700, #146831));\n }\n\n .meter__state-label[data-state='warning'] {\n color: var(--hx-meter-color-warning, var(--hx-color-warning-700, #804605));\n }\n\n .meter__state-label[data-state='danger'] {\n color: var(--hx-meter-color-danger, var(--hx-color-error-700, #a21312));\n }\n\n /* ─── Native meter hidden (we use custom rendering) ─── */\n\n .meter__native {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n border: 0;\n }\n\n /* ─── Forced Colors (Windows High Contrast) ─── */\n\n @media (forced-colors: active) {\n .meter__track {\n border: 1px solid CanvasText;\n }\n\n .meter__indicator {\n forced-color-adjust: none;\n background-color: Highlight;\n }\n }\n`;\n","import { html, nothing, type PropertyValues } from 'lit';\nimport '../../utilities/document-token-adoption.js';\nimport { customElement, property, state } from 'lit/decorators.js';\nimport { ifDefined } from 'lit/directives/if-defined.js';\nimport { HelixElement, createIdCounter } from '../../base/index.js';\nimport { helixMeterStyles } from './hx-meter.styles.js';\nimport { forcedColorsSurface } from '../../styles/forced-colors.js';\n\ntype MeterState = 'optimum' | 'warning' | 'danger' | 'default';\n\nconst _nextMeterId = createIdCounter('hx-meter');\n\n/**\n * A scalar measurement within a known range — e.g., disk usage, health score,\n * or any numeric value with defined min/max bounds. Supports low/high/optimum\n * threshold markers for semantic color feedback.\n *\n * @summary Scalar measurement gauge within a defined range.\n *\n * @tag hx-meter\n *\n * @slot label - Visible label rendered above the meter track. When using this\n * slot without the `label` attribute, the accessible name is derived from the\n * slot content via `aria-labelledby`. The `label` attribute is NOT required\n * when slot content is provided — the component detects slot content and\n * switches to `aria-labelledby` automatically.\n *\n * @csspart base - The outer wrapper element.\n * @csspart track - The unfilled track bar element.\n * @csspart indicator - The filled bar indicating the current value.\n * @csspart label - The label wrapper element.\n *\n * @cssprop [--hx-meter-track-height] - Height of the track bar.\n * @cssprop [--hx-meter-track-color] - Background color of the unfilled track.\n * @cssprop [--hx-meter-track-radius] - Border radius of the track.\n * @cssprop [--hx-meter-indicator-color] - Default filled bar color (no thresholds).\n * @cssprop [--hx-meter-color-optimum] - Color when value is in the optimum zone.\n * @cssprop [--hx-meter-color-warning] - Color when value is in a warning zone.\n * @cssprop [--hx-meter-color-danger] - Color when value is in the danger zone.\n * @cssprop [--hx-meter-label-color] - Label text color.\n * @cssprop [--hx-space-2] - Spacing token.\n * @cssprop [--hx-border-radius-md] - CSS custom property.\n * @cssprop [--hx-focus-ring-width] - Width.\n * @cssprop [--hx-focus-ring-color] - Color.\n * @cssprop [--hx-focus-ring-offset] - CSS custom property.\n * @cssprop [--hx-font-size-sm] - Font size.\n * @cssprop [--hx-font-weight-medium] - Font weight.\n * @cssprop [--hx-color-neutral-700] - Color.\n * @cssprop [--hx-line-height-normal] - Line height.\n * @cssprop [--hx-color-neutral-200] - Color.\n * @cssprop [--hx-border-radius-full] - CSS custom property.\n * @cssprop [--hx-transition-fast] - Transition timing.\n * @cssprop [--hx-color-primary-500] - Color.\n * @cssprop [--hx-color-success-500] - Color.\n * @cssprop [--hx-color-warning-500] - Color.\n * @cssprop [--hx-color-error-500] - Color.\n * @cssprop [--hx-font-size-xs] - Font size.\n * @cssprop [--hx-line-height-tight] - Line height.\n * @cssprop [--hx-meter-font-family=var(--hx-font-family-sans)] - CSS custom property.\n * @cssprop [--hx-font-family-sans] - Font family.\n * @cssprop [--hx-color-success-700] - Color.\n * @cssprop [--hx-color-warning-700] - Color.\n * @cssprop [--hx-color-error-700] - Color.\n */\n@customElement('hx-meter')\nexport class HelixMeter extends HelixElement {\n static override styles = [helixMeterStyles, forcedColorsSurface];\n\n /** @internal */\n private _uid = _nextMeterId();\n\n /**\n * Current value of the meter.\n * @attr value\n */\n @property({ type: Number, reflect: true })\n value = 0;\n\n /**\n * Minimum value of the range.\n * @attr min\n */\n @property({ type: Number, reflect: true })\n min = 0;\n\n /**\n * Maximum value of the range.\n * @attr max\n */\n @property({ type: Number, reflect: true })\n max = 100;\n\n /**\n * Threshold below which the value is considered suboptimal (lower range warning).\n * @attr low\n */\n @property({ type: Number, reflect: true })\n low?: number;\n\n /**\n * Threshold above which the value is considered suboptimal (upper range warning).\n * @attr high\n */\n @property({ type: Number, reflect: true })\n high?: number;\n\n /**\n * The optimal value within the range. Used to determine which zone is \"good\".\n * @attr optimum\n */\n @property({ type: Number, reflect: true })\n optimum?: number;\n\n /**\n * Accessible label for the meter. Used as the visible label text and as\n * the source for `aria-labelledby`. When only slot content is provided\n * (no `label` attribute), the slot content is used for the accessible name.\n * @attr label\n */\n @property({ type: String })\n label?: string;\n\n /** @internal */\n @state()\n private _hasSlotContent = false;\n\n /** @internal */\n private _clampedValue(): number {\n return Math.min(Math.max(this.value, this.min), this.max);\n }\n\n /** @internal */\n private _percentage(): number {\n const range = this.max - this.min;\n if (range === 0) return 0;\n return ((this._clampedValue() - this.min) / range) * 100;\n }\n\n /** @internal */\n private _resolveState(): MeterState {\n const v = this._clampedValue();\n const hasLow = this.low !== undefined;\n const hasHigh = this.high !== undefined;\n const hasOptimum = this.optimum !== undefined;\n\n if (!hasLow && !hasHigh && !hasOptimum) return 'default';\n\n // When hasLow/hasHigh/hasOptimum are true, the corresponding property is defined.\n // Use nullish coalescing to satisfy the type checker while preserving the runtime logic.\n const lowVal = this.low ?? 0;\n const highVal = this.high ?? this.max;\n const inLowZone = hasLow && v < lowVal;\n const inHighZone = hasHigh && v > highVal;\n const inMiddleZone = !inLowZone && !inHighZone;\n\n if (!hasOptimum) {\n if (inLowZone || inHighZone) return 'warning';\n return 'optimum';\n }\n\n const opt = this.optimum ?? this.min;\n const optimumInLow = hasLow && opt < lowVal;\n const optimumInHigh = hasHigh && opt > highVal;\n const optimumInMiddle = !optimumInLow && !optimumInHigh;\n\n if (optimumInMiddle) {\n if (inMiddleZone) return 'optimum';\n return 'warning';\n } else if (optimumInLow) {\n if (inLowZone) return 'optimum';\n if (inMiddleZone) return 'warning';\n return 'danger';\n } else {\n // optimumInHigh\n if (inHighZone) return 'optimum';\n if (inMiddleZone) return 'warning';\n return 'danger';\n }\n }\n\n /** @internal */\n private _onLabelSlotChange(e: Event) {\n const slot = e.target as HTMLSlotElement;\n this._hasSlotContent = slot.assignedNodes({ flatten: true }).length > 0;\n }\n\n override updated(changedProperties: PropertyValues<this>): void {\n super.updated(changedProperties);\n // Set data-state on host so :host([data-state]) CSS selectors work\n this.dataset['state'] = this._resolveState();\n // Set --_value-ratio for GPU-compositable scaleX() transform on indicator\n const ratio = this._percentage() / 100;\n this.style.setProperty('--_value-ratio', String(Math.max(0, Math.min(1, ratio))));\n }\n\n // ─── WCAG 1.4.1: State label map ───\n // The indicator bar color alone is insufficient for color-blind users.\n // A visible state label is rendered below the track when a semantic state\n // (optimum/warning/danger) is active, providing a non-color visual cue.\n // aria-valuetext already embeds the state for AT users.\n\n /** @internal */\n private static readonly _STATE_LABELS: Partial<Record<MeterState, string>> = {\n optimum: 'Optimum',\n warning: 'Warning',\n danger: 'Danger',\n };\n\n override render() {\n const state = this._resolveState();\n const clampedValue = this._clampedValue();\n const stateLabel = state !== 'default' ? ` — ${state}` : '';\n const ariaValuetext = `${clampedValue} of ${this.max}${stateLabel}`;\n const hasVisibleLabel = this.label !== undefined || this._hasSlotContent;\n const visibleStateLabel = HelixMeter._STATE_LABELS[state];\n\n return html`\n <div\n part=\"base\"\n class=\"meter\"\n role=\"meter\"\n tabindex=\"0\"\n aria-valuenow=${clampedValue}\n aria-valuemin=${this.min}\n aria-valuemax=${this.max}\n aria-valuetext=${ariaValuetext}\n aria-label=${ifDefined(!hasVisibleLabel ? `${clampedValue} of ${this.max}` : undefined)}\n aria-labelledby=${ifDefined(hasVisibleLabel ? `${this._uid}-label` : undefined)}\n >\n <span\n id=${`${this._uid}-label`}\n part=\"label\"\n class=\"meter__label\"\n ?hidden=${!hasVisibleLabel}\n >\n <slot name=\"label\" @slotchange=${this._onLabelSlotChange}>${this.label ?? ''}</slot>\n </span>\n <div class=\"meter__track\" part=\"track\">\n <div part=\"indicator\" class=\"meter__indicator\"></div>\n </div>\n ${visibleStateLabel\n ? html`<span class=\"meter__state-label\" data-state=${state} aria-hidden=\"true\"\n >${visibleStateLabel}</span\n >`\n : nothing}\n <meter\n class=\"meter__native\"\n value=${clampedValue}\n min=${this.min}\n max=${this.max}\n low=${ifDefined(this.low)}\n high=${ifDefined(this.high)}\n optimum=${ifDefined(this.optimum)}\n aria-hidden=\"true\"\n tabindex=\"-1\"\n ></meter>\n </div>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'hx-meter': HelixMeter;\n }\n}\n"],"names":["helixMeterStyles","css","_nextMeterId","createIdCounter","HelixMeter","HelixElement","range","v","hasLow","hasHigh","hasOptimum","lowVal","highVal","inLowZone","inHighZone","inMiddleZone","opt","optimumInLow","optimumInHigh","slot","changedProperties","ratio","state","clampedValue","stateLabel","ariaValuetext","hasVisibleLabel","visibleStateLabel","html","ifDefined","nothing","forcedColorsSurface","__decorateClass","property","customElement"],"mappings":"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"}