@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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hx-meter-CVs4A649.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 }\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, #374151));\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, #e5e7eb));\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, #3b82f6));\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, #22c55e));\n }\n\n :host([data-state='warning']) {\n --_indicator-color: var(--hx-meter-color-warning, var(--hx-color-warning-500, #f59e0b));\n }\n\n :host([data-state='danger']) {\n --_indicator-color: var(--hx-meter-color-danger, var(--hx-color-error-500, #dc2626));\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-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, #15803d));\n }\n\n .meter__state-label[data-state='warning'] {\n color: var(--hx-meter-color-warning, var(--hx-color-warning-700, #b45309));\n }\n\n .meter__state-label[data-state='danger'] {\n color: var(--hx-meter-color-danger, var(--hx-color-error-700, #991b1b));\n }\n\n @media (prefers-reduced-motion: reduce) {\n .meter__indicator {\n transition: none;\n }\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","import { LitElement, html, nothing, type PropertyValues } from 'lit';\nimport { customElement, property, state } from 'lit/decorators.js';\nimport { ifDefined } from 'lit/directives/if-defined.js';\nimport { tokenStyles } from '@helixui/tokens/lit';\nimport { helixMeterStyles } from './hx-meter.styles.js';\n\ntype MeterState = 'optimum' | 'warning' | 'danger' | 'default';\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 */\n@customElement('hx-meter')\nexport class HelixMeter extends LitElement {\n static override styles = [tokenStyles, helixMeterStyles];\n\n /** @internal */\n private static _counter = 0;\n /** @internal */\n private _uid = `hx-meter-${++HelixMeter._counter}`;\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","HelixMeter","LitElement","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","tokenStyles","__decorateClass","property","customElement"],"mappings":"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"}
@@ -1,9 +1,9 @@
1
- import { css as g, LitElement as k, svg as f, html as d, nothing as x } from "lit";
2
- import { property as v, state as b, customElement as y } from "lit/decorators.js";
1
+ import { css as y, LitElement as w, svg as g, html as u, nothing as f } from "lit";
2
+ import { property as x, state as k, customElement as C } from "lit/decorators.js";
3
3
  import { classMap as m } from "lit/directives/class-map.js";
4
- import { repeat as w } from "lit/directives/repeat.js";
5
- import { tokenStyles as C } from "@helixui/tokens/lit";
6
- const $ = g`
4
+ import { repeat as $ } from "lit/directives/repeat.js";
5
+ import { tokenStyles as I } from "@helixui/tokens/lit";
6
+ const O = y`
7
7
  :host {
8
8
  display: block;
9
9
  font-family: var(--hx-nav-font-family, var(--hx-font-family-sans, sans-serif));
@@ -93,7 +93,7 @@ const $ = g`
93
93
 
94
94
  .nav__link:hover {
95
95
  background-color: var(--hx-nav-link-hover-bg, var(--hx-color-neutral-700, #374151));
96
- color: var(--hx-nav-link-hover-color, var(--hx-color-white, #ffffff));
96
+ color: var(--hx-nav-link-hover-color, var(--hx-color-neutral-0, #ffffff));
97
97
  }
98
98
 
99
99
  .nav__link:focus-visible {
@@ -104,7 +104,7 @@ const $ = g`
104
104
 
105
105
  .nav__link--active {
106
106
  background-color: var(--hx-nav-link-active-bg, var(--hx-color-primary-600, #2563eb));
107
- color: var(--hx-nav-link-active-color, var(--hx-color-white, #ffffff));
107
+ color: var(--hx-nav-link-active-color, var(--hx-color-neutral-0, #ffffff));
108
108
  }
109
109
 
110
110
  /* ─── Chevron Icon ─── */
@@ -135,7 +135,7 @@ const $ = g`
135
135
  0 4px 6px -1px rgb(0 0 0 / 0.1),
136
136
  0 2px 4px -2px rgb(0 0 0 / 0.1)
137
137
  );
138
- z-index: var(--hx-z-index-dropdown, 100);
138
+ z-index: var(--hx-z-index-dropdown, 1000);
139
139
  }
140
140
 
141
141
  .nav__submenu[hidden] {
@@ -145,7 +145,7 @@ const $ = g`
145
145
  .nav__submenu .nav__link {
146
146
  display: block;
147
147
  width: 100%;
148
- text-align: left;
148
+ text-align: start;
149
149
  border-radius: 0;
150
150
  padding: var(--hx-space-2, 0.5rem) var(--hx-space-4, 1rem);
151
151
  }
@@ -173,7 +173,7 @@ const $ = g`
173
173
  border-radius: 0;
174
174
  background-color: transparent;
175
175
  padding: 0;
176
- padding-left: var(--hx-space-4, 1rem);
176
+ padding-inline-start: var(--hx-space-4, 1rem);
177
177
  }
178
178
 
179
179
  :host([orientation='vertical']) .nav__submenu[hidden] {
@@ -226,7 +226,7 @@ const $ = g`
226
226
  position: static;
227
227
  box-shadow: none;
228
228
  border-radius: 0;
229
- padding-left: var(--hx-space-4, 1rem);
229
+ padding-inline-start: var(--hx-space-4, 1rem);
230
230
  background-color: transparent;
231
231
  }
232
232
 
@@ -246,14 +246,14 @@ const $ = g`
246
246
  }
247
247
  }
248
248
  `;
249
- var I = Object.defineProperty, O = Object.getOwnPropertyDescriptor, h = (e, n, o, a) => {
250
- for (var t = a > 1 ? void 0 : a ? O(n, o) : n, i = e.length - 1, l; i >= 0; i--)
251
- (l = e[i]) && (t = (a ? l(n, o, t) : l(t)) || t);
252
- return a && t && I(n, o, t), t;
249
+ var S = Object.defineProperty, A = Object.getOwnPropertyDescriptor, p = (e, n, r, o) => {
250
+ for (var t = o > 1 ? void 0 : o ? A(n, r) : n, i = e.length - 1, l; i >= 0; i--)
251
+ (l = e[i]) && (t = (o ? l(n, r, t) : l(t)) || t);
252
+ return o && t && S(n, r, t), t;
253
253
  };
254
- let c = class extends k {
254
+ let c = class extends w {
255
255
  constructor() {
256
- super(...arguments), this.items = [], this.orientation = "horizontal", this.label = "Main navigation", this.labelOpenMenu = "Open navigation menu", this.labelCloseMenu = "Close navigation menu", this._mobileOpen = !1, this._expandedIndex = null, this._boundOutsideClick = this._handleOutsideClick.bind(this);
256
+ super(...arguments), this.items = [], this.orientation = "horizontal", this.label = "Main navigation", this.labelOpenMenu = "Open navigation menu", this.labelCloseMenu = "Close navigation menu", this._mobileOpen = !1, this._expandedIndex = null, this._boundOutsideClick = this._handleOutsideClick.bind(this), this._boundFocusout = this._handleFocusout.bind(this);
257
257
  }
258
258
  /**
259
259
  * Sanitizes a URL to prevent XSS via javascript: or data: URIs.
@@ -262,8 +262,7 @@ let c = class extends k {
262
262
  /** @internal */
263
263
  _sanitizeHref(e) {
264
264
  if (!e || e === "#") return "#";
265
- if (e.startsWith("/") || e.startsWith("./") || e.startsWith("../") || e.startsWith("#"))
266
- return e;
265
+ if (e.startsWith("/") || e.startsWith("./") || e.startsWith("../") || e.startsWith("#") || typeof window > "u") return e;
267
266
  try {
268
267
  const n = new URL(e, window.location.href);
269
268
  if (n.protocol === "http:" || n.protocol === "https:")
@@ -278,9 +277,9 @@ let c = class extends k {
278
277
  this._mobileOpen = !this._mobileOpen, this._mobileOpen || (this._expandedIndex = null);
279
278
  }
280
279
  /** @internal */
281
- _handleItemClick(e, n, o) {
282
- var a;
283
- o.preventDefault(), (a = e.children) != null && a.length ? this._expandedIndex = this._expandedIndex === n ? null : n : (this._mobileOpen = !1, this._expandedIndex = null, this.dispatchEvent(
280
+ _handleItemClick(e, n, r) {
281
+ var o;
282
+ r.preventDefault(), (o = e.children) != null && o.length ? this._expandedIndex = this._expandedIndex === n ? null : n : (this._mobileOpen = !1, this._expandedIndex = null, this.dispatchEvent(
284
283
  new CustomEvent("hx-nav-select", {
285
284
  bubbles: !0,
286
285
  composed: !0,
@@ -299,35 +298,43 @@ let c = class extends k {
299
298
  );
300
299
  }
301
300
  /** @internal */
302
- _handleKeydown(e, n, o) {
303
- var l, s, u;
304
- const a = (l = this.shadowRoot) == null ? void 0 : l.querySelectorAll(
301
+ _handleKeydown(e, n, r) {
302
+ var l, d, h, a, _;
303
+ const o = (l = this.shadowRoot) == null ? void 0 : l.querySelectorAll(
305
304
  '[part="list"] > [part="item"] > [part="link"]'
306
305
  );
307
- if (!a) return;
308
- const t = Array.from(a), i = t[n];
306
+ if (!o) return;
307
+ const t = Array.from(o), i = t[n];
309
308
  switch (e.key) {
310
309
  case "ArrowRight":
311
310
  case "ArrowDown": {
312
- if (e.preventDefault(), (s = o.children) != null && s.length && e.key === "ArrowDown" && this.orientation === "horizontal")
311
+ if (e.preventDefault(), (d = r.children) != null && d.length && e.key === "ArrowDown" && this.orientation === "horizontal")
313
312
  this._expandedIndex = n, this.updateComplete.then(() => {
314
- var p;
315
- const r = (p = this.shadowRoot) == null ? void 0 : p.querySelector(
313
+ var v;
314
+ const s = (v = this.shadowRoot) == null ? void 0 : v.querySelector(
316
315
  '.nav__submenu [part="link"]'
317
316
  );
318
- r == null || r.focus();
317
+ s == null || s.focus();
319
318
  });
320
319
  else {
321
- const r = t[n + 1] ?? t[0];
322
- r == null || r.focus();
320
+ const s = t[n + 1] ?? t[0];
321
+ s == null || s.focus();
323
322
  }
324
323
  break;
325
324
  }
326
325
  case "ArrowLeft":
327
326
  case "ArrowUp": {
328
327
  e.preventDefault();
329
- const r = t[n - 1] ?? t[t.length - 1];
330
- r == null || r.focus();
328
+ const s = t[n - 1] ?? t[t.length - 1];
329
+ s == null || s.focus();
330
+ break;
331
+ }
332
+ case "Home": {
333
+ e.preventDefault(), (h = t[0]) == null || h.focus();
334
+ break;
335
+ }
336
+ case "End": {
337
+ e.preventDefault(), (a = t[t.length - 1]) == null || a.focus();
331
338
  break;
332
339
  }
333
340
  case "Escape": {
@@ -336,15 +343,15 @@ let c = class extends k {
336
343
  }
337
344
  case "Enter":
338
345
  case " ": {
339
- if ((u = o.children) != null && u.length) {
346
+ if ((_ = r.children) != null && _.length) {
340
347
  e.preventDefault();
341
- const r = this._expandedIndex === n;
342
- this._expandedIndex = r ? null : n, r || this.updateComplete.then(() => {
343
- var _;
344
- const p = (_ = this.shadowRoot) == null ? void 0 : _.querySelector(
348
+ const s = this._expandedIndex === n;
349
+ this._expandedIndex = s ? null : n, s || this.updateComplete.then(() => {
350
+ var b;
351
+ const v = (b = this.shadowRoot) == null ? void 0 : b.querySelector(
345
352
  '.nav__submenu:not([hidden]) [part="link"]'
346
353
  );
347
- p == null || p.focus();
354
+ v == null || v.focus();
348
355
  });
349
356
  }
350
357
  break;
@@ -353,31 +360,31 @@ let c = class extends k {
353
360
  }
354
361
  /** @internal */
355
362
  _handleSubKeydown(e, n) {
356
- var l, s, u;
357
- const o = (l = this.shadowRoot) == null ? void 0 : l.querySelectorAll(
363
+ var l, d, h;
364
+ const r = (l = this.shadowRoot) == null ? void 0 : l.querySelectorAll(
358
365
  '.nav__submenu:not([hidden]) [part="link"]'
359
366
  );
360
- if (!o) return;
361
- const a = Array.from(o), t = e.currentTarget ?? e.target, i = a.indexOf(t);
367
+ if (!r) return;
368
+ const o = Array.from(r), t = e.currentTarget ?? e.target, i = o.indexOf(t);
362
369
  switch (e.key) {
363
370
  case "ArrowDown": {
364
371
  e.preventDefault();
365
- const r = a[i + 1] ?? a[0];
366
- r == null || r.focus();
372
+ const a = o[i + 1] ?? o[0];
373
+ a == null || a.focus();
367
374
  break;
368
375
  }
369
376
  case "ArrowUp": {
370
377
  e.preventDefault();
371
- const r = a[i - 1] ?? a[a.length - 1];
372
- r == null || r.focus();
378
+ const a = o[i - 1] ?? o[o.length - 1];
379
+ a == null || a.focus();
373
380
  break;
374
381
  }
375
382
  case "Escape": {
376
383
  e.preventDefault(), this._expandedIndex = null;
377
- const r = (s = this.shadowRoot) == null ? void 0 : s.querySelectorAll(
384
+ const a = (d = this.shadowRoot) == null ? void 0 : d.querySelectorAll(
378
385
  '[part="list"] > [part="item"] > [part="link"]'
379
386
  );
380
- (u = r == null ? void 0 : r[n]) == null || u.focus();
387
+ (h = a == null ? void 0 : a[n]) == null || h.focus();
381
388
  break;
382
389
  }
383
390
  }
@@ -386,17 +393,26 @@ let c = class extends k {
386
393
  _handleOutsideClick(e) {
387
394
  e.composedPath().includes(this) || (this._expandedIndex = null);
388
395
  }
396
+ /**
397
+ * hx-nav-008: Close expanded submenu when focus moves outside the component.
398
+ * @internal
399
+ */
400
+ _handleFocusout(e) {
401
+ var r;
402
+ const n = e.relatedTarget;
403
+ n && this.contains(n) || n && ((r = this.shadowRoot) != null && r.contains(n)) || (this._expandedIndex = null);
404
+ }
389
405
  // ─── Lifecycle ───
390
406
  connectedCallback() {
391
- super.connectedCallback(), document.addEventListener("click", this._boundOutsideClick);
407
+ super.connectedCallback(), typeof document < "u" && document.addEventListener("click", this._boundOutsideClick), this.addEventListener("focusout", this._boundFocusout);
392
408
  }
393
409
  disconnectedCallback() {
394
- super.disconnectedCallback(), document.removeEventListener("click", this._boundOutsideClick);
410
+ super.disconnectedCallback(), document.removeEventListener("click", this._boundOutsideClick), this.removeEventListener("focusout", this._boundFocusout);
395
411
  }
396
412
  // ─── Render Helpers ───
397
413
  /** @internal */
398
414
  _renderHamburgerIcon() {
399
- return d`<svg
415
+ return u`<svg
400
416
  width="24"
401
417
  height="24"
402
418
  viewBox="0 0 24 24"
@@ -406,15 +422,15 @@ let c = class extends k {
406
422
  stroke-linecap="round"
407
423
  aria-hidden="true"
408
424
  >
409
- ${this._mobileOpen ? f`<line x1="18" y1="6" x2="6" y2="18"></line>
410
- <line x1="6" y1="6" x2="18" y2="18"></line>` : f`<line x1="3" y1="12" x2="21" y2="12"></line>
425
+ ${this._mobileOpen ? g`<line x1="18" y1="6" x2="6" y2="18"></line>
426
+ <line x1="6" y1="6" x2="18" y2="18"></line>` : g`<line x1="3" y1="12" x2="21" y2="12"></line>
411
427
  <line x1="3" y1="6" x2="21" y2="6"></line>
412
428
  <line x1="3" y1="18" x2="21" y2="18"></line>`}
413
429
  </svg>`;
414
430
  }
415
431
  /** @internal */
416
432
  _renderChevronIcon() {
417
- return d`<svg
433
+ return u`<svg
418
434
  class="nav__chevron"
419
435
  width="16"
420
436
  height="16"
@@ -433,17 +449,12 @@ let c = class extends k {
433
449
  </svg>`;
434
450
  }
435
451
  /** @internal */
436
- _renderSubMenu(e, n, o) {
437
- const a = this._expandedIndex === n;
438
- return d`
439
- <ul
440
- class="nav__submenu"
441
- role="list"
442
- aria-label="${o} submenu"
443
- ?hidden=${!a}
444
- >
452
+ _renderSubMenu(e, n, r) {
453
+ const o = this._expandedIndex === n;
454
+ return u`
455
+ <ul class="nav__submenu" aria-label="${r} submenu" ?hidden=${!o}>
445
456
  ${e.map(
446
- (t) => d`
457
+ (t) => u`
447
458
  <li class="nav__submenu-item">
448
459
  <a
449
460
  part="link"
@@ -452,7 +463,7 @@ let c = class extends k {
452
463
  nav__link: !0,
453
464
  "nav__link--active": !!t.current
454
465
  })}
455
- aria-current=${t.current ? "page" : x}
466
+ aria-current=${t.current ? "page" : f}
456
467
  @click=${(i) => this._handleSubItemClick(t, i)}
457
468
  @keydown=${(i) => this._handleSubKeydown(i, n)}
458
469
  >
@@ -466,36 +477,37 @@ let c = class extends k {
466
477
  }
467
478
  /** @internal */
468
479
  _renderItem(e, n) {
469
- var l;
470
- const o = !!((l = e.children) != null && l.length), a = this._expandedIndex === n, t = {
480
+ var d, h;
481
+ const r = !!((d = e.children) != null && d.length), o = this._expandedIndex === n, t = r && !!((h = e.children) != null && h.some((a) => a.current)), i = {
471
482
  nav__link: !0,
472
- "nav__link--active": !!e.current,
473
- "nav__link--has-submenu": o,
474
- "nav__link--expanded": a
475
- }, i = o ? d`
483
+ "nav__link--active": !!e.current || t,
484
+ "nav__link--has-submenu": r,
485
+ "nav__link--expanded": o
486
+ }, l = r ? u`
476
487
  <button
477
488
  part="link"
478
- class=${m(t)}
479
- aria-expanded=${a ? "true" : x}
480
- @click=${(s) => this._handleItemClick(e, n, s)}
481
- @keydown=${(s) => this._handleKeydown(s, n, e)}
489
+ class=${m(i)}
490
+ aria-expanded=${o ? "true" : "false"}
491
+ aria-current=${t ? "true" : f}
492
+ @click=${(a) => this._handleItemClick(e, n, a)}
493
+ @keydown=${(a) => this._handleKeydown(a, n, e)}
482
494
  >
483
495
  ${e.label} ${this._renderChevronIcon()}
484
496
  </button>
485
497
  ${this._renderSubMenu(e.children ?? [], n, e.label)}
486
- ` : d`
498
+ ` : u`
487
499
  <a
488
500
  part="link"
489
501
  href=${this._sanitizeHref(e.href)}
490
- class=${m(t)}
491
- aria-current=${e.current ? "page" : x}
492
- @click=${(s) => this._handleItemClick(e, n, s)}
493
- @keydown=${(s) => this._handleKeydown(s, n, e)}
502
+ class=${m(i)}
503
+ aria-current=${e.current ? "page" : f}
504
+ @click=${(a) => this._handleItemClick(e, n, a)}
505
+ @keydown=${(a) => this._handleKeydown(a, n, e)}
494
506
  >
495
507
  ${e.label}
496
508
  </a>
497
509
  `;
498
- return d` <li part="item" class="nav__item">${i}</li> `;
510
+ return u` <li part="item" class="nav__item">${l}</li> `;
499
511
  }
500
512
  // ─── Render ───
501
513
  render() {
@@ -503,12 +515,12 @@ let c = class extends k {
503
515
  nav__list: !0,
504
516
  "nav__list--open": this._mobileOpen
505
517
  };
506
- return d`
518
+ return u`
507
519
  <nav part="nav" aria-label=${this.label}>
508
520
  <button
509
521
  part="toggle"
510
522
  class="nav__toggle"
511
- aria-expanded=${this._mobileOpen ? "true" : x}
523
+ aria-expanded=${this._mobileOpen ? "true" : "false"}
512
524
  aria-controls="nav-list"
513
525
  aria-label=${this._mobileOpen ? this.labelCloseMenu : this.labelOpenMenu}
514
526
  @click=${this._handleToggle}
@@ -517,19 +529,19 @@ let c = class extends k {
517
529
  </button>
518
530
 
519
531
  <ul part="list" id="nav-list" class=${m(e)} role="list">
520
- ${w(
532
+ ${$(
521
533
  this.items,
522
- (n, o) => o,
523
- (n, o) => this._renderItem(n, o)
534
+ (n, r) => r,
535
+ (n, r) => this._renderItem(n, r)
524
536
  )}
525
537
  </ul>
526
538
  </nav>
527
539
  `;
528
540
  }
529
541
  };
530
- c.styles = [C, $];
531
- h([
532
- v({
542
+ c.styles = [I, O];
543
+ p([
544
+ x({
533
545
  type: Array,
534
546
  converter: {
535
547
  fromAttribute(e) {
@@ -544,28 +556,28 @@ h([
544
556
  }
545
557
  })
546
558
  ], c.prototype, "items", 2);
547
- h([
548
- v({ type: String, reflect: !0 })
559
+ p([
560
+ x({ type: String, reflect: !0 })
549
561
  ], c.prototype, "orientation", 2);
550
- h([
551
- v({ type: String })
562
+ p([
563
+ x({ type: String })
552
564
  ], c.prototype, "label", 2);
553
- h([
554
- v({ type: String, attribute: "label-open-menu" })
565
+ p([
566
+ x({ type: String, attribute: "label-open-menu" })
555
567
  ], c.prototype, "labelOpenMenu", 2);
556
- h([
557
- v({ type: String, attribute: "label-close-menu" })
568
+ p([
569
+ x({ type: String, attribute: "label-close-menu" })
558
570
  ], c.prototype, "labelCloseMenu", 2);
559
- h([
560
- b()
571
+ p([
572
+ k()
561
573
  ], c.prototype, "_mobileOpen", 2);
562
- h([
563
- b()
574
+ p([
575
+ k()
564
576
  ], c.prototype, "_expandedIndex", 2);
565
- c = h([
566
- y("hx-nav")
577
+ c = p([
578
+ C("hx-nav")
567
579
  ], c);
568
580
  export {
569
581
  c as H
570
582
  };
571
- //# sourceMappingURL=hx-nav-3JsN2Oak.js.map
583
+ //# sourceMappingURL=hx-nav-CiyqaW2I.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hx-nav-CiyqaW2I.js","sources":["../../src/components/hx-nav/hx-nav.styles.ts","../../src/components/hx-nav/hx-nav.ts"],"sourcesContent":["import { css } from 'lit';\n\nexport const helixNavStyles = css`\n :host {\n display: block;\n font-family: var(--hx-nav-font-family, var(--hx-font-family-sans, sans-serif));\n font-size: var(--hx-nav-font-size, var(--hx-font-size-sm, 0.875rem));\n }\n\n * {\n box-sizing: border-box;\n }\n\n /* ─── Nav Container ─── */\n\n [part='nav'] {\n position: relative;\n background-color: var(--hx-nav-bg, var(--hx-color-neutral-900, #111827));\n color: var(--hx-nav-color, var(--hx-color-neutral-100, #f3f4f6));\n padding: var(--hx-nav-padding, var(--hx-space-2, 0.5rem) var(--hx-space-4, 1rem));\n }\n\n /* ─── Hamburger Toggle ─── */\n\n [part='toggle'] {\n display: none;\n align-items: center;\n justify-content: center;\n padding: var(--hx-space-2, 0.5rem);\n background: transparent;\n border: none;\n border-radius: var(--hx-nav-border-radius, var(--hx-border-radius-sm, 0.25rem));\n color: var(--hx-nav-color, var(--hx-color-neutral-100, #f3f4f6));\n cursor: pointer;\n transition: background-color var(--hx-transition-fast, 150ms) ease;\n line-height: 0;\n }\n\n [part='toggle']:hover {\n background-color: var(--hx-nav-link-hover-bg, var(--hx-color-neutral-700, #374151));\n }\n\n [part='toggle']:focus-visible {\n outline: var(--hx-focus-ring-width, 2px) solid\n var(--hx-nav-focus-ring-color, var(--hx-focus-ring-color, var(--hx-color-primary-500)));\n outline-offset: var(--hx-focus-ring-offset, 2px);\n }\n\n /* ─── Navigation List ─── */\n\n [part='list'] {\n display: flex;\n flex-direction: row;\n flex-wrap: wrap;\n list-style: none;\n margin: 0;\n padding: 0;\n gap: var(--hx-space-1, 0.25rem);\n align-items: center;\n }\n\n /* ─── Nav Item ─── */\n\n [part='item'] {\n position: relative;\n }\n\n /* ─── Nav Link / Button ─── */\n\n .nav__link {\n display: inline-flex;\n align-items: center;\n gap: var(--hx-space-1, 0.25rem);\n padding: var(--hx-nav-item-padding, var(--hx-space-2, 0.5rem) var(--hx-space-3, 0.75rem));\n color: var(--hx-nav-link-color, var(--hx-color-neutral-100, #f3f4f6));\n text-decoration: none;\n border-radius: var(--hx-nav-border-radius, var(--hx-border-radius-sm, 0.25rem));\n border: none;\n background: transparent;\n cursor: pointer;\n font-family: inherit;\n font-size: inherit;\n font-weight: var(--hx-font-weight-medium, 500);\n line-height: var(--hx-line-height-normal, 1.5);\n white-space: nowrap;\n transition:\n background-color var(--hx-transition-fast, 150ms) ease,\n color var(--hx-transition-fast, 150ms) ease;\n }\n\n .nav__link:hover {\n background-color: var(--hx-nav-link-hover-bg, var(--hx-color-neutral-700, #374151));\n color: var(--hx-nav-link-hover-color, var(--hx-color-neutral-0, #ffffff));\n }\n\n .nav__link:focus-visible {\n outline: var(--hx-focus-ring-width, 2px) solid\n var(--hx-nav-focus-ring-color, var(--hx-focus-ring-color, var(--hx-color-primary-500)));\n outline-offset: var(--hx-focus-ring-offset, 2px);\n }\n\n .nav__link--active {\n background-color: var(--hx-nav-link-active-bg, var(--hx-color-primary-600, #2563eb));\n color: var(--hx-nav-link-active-color, var(--hx-color-neutral-0, #ffffff));\n }\n\n /* ─── Chevron Icon ─── */\n\n .nav__chevron {\n transition: transform var(--hx-transition-normal, 200ms) ease;\n flex-shrink: 0;\n }\n\n .nav__link--expanded .nav__chevron {\n transform: rotate(180deg);\n }\n\n /* ─── Submenu ─── */\n\n .nav__submenu {\n position: absolute;\n top: calc(100% + var(--hx-space-1, 0.25rem));\n left: 0;\n min-width: var(--hx-nav-submenu-min-width, 12rem);\n list-style: none;\n margin: 0;\n padding: var(--hx-space-1, 0.25rem) 0;\n background-color: var(--hx-nav-submenu-bg, var(--hx-color-neutral-800, #1f2937));\n border-radius: var(--hx-border-radius-md, 0.375rem);\n box-shadow: var(\n --hx-shadow-md,\n 0 4px 6px -1px rgb(0 0 0 / 0.1),\n 0 2px 4px -2px rgb(0 0 0 / 0.1)\n );\n z-index: var(--hx-z-index-dropdown, 1000);\n }\n\n .nav__submenu[hidden] {\n display: none;\n }\n\n .nav__submenu .nav__link {\n display: block;\n width: 100%;\n text-align: start;\n border-radius: 0;\n padding: var(--hx-space-2, 0.5rem) var(--hx-space-4, 1rem);\n }\n\n /* ─── Vertical / Sidebar Orientation ─── */\n\n :host([orientation='vertical']) [part='nav'] {\n padding: var(--hx-space-4, 1rem) var(--hx-space-2, 0.5rem);\n }\n\n :host([orientation='vertical']) [part='list'] {\n flex-direction: column;\n align-items: stretch;\n gap: var(--hx-space-1, 0.25rem);\n }\n\n :host([orientation='vertical']) .nav__link {\n width: 100%;\n justify-content: flex-start;\n }\n\n :host([orientation='vertical']) .nav__submenu {\n position: static;\n box-shadow: none;\n border-radius: 0;\n background-color: transparent;\n padding: 0;\n padding-inline-start: var(--hx-space-4, 1rem);\n }\n\n :host([orientation='vertical']) .nav__submenu[hidden] {\n display: none;\n }\n\n :host([orientation='vertical']) .nav__submenu .nav__link {\n padding: var(--hx-space-1-5, 0.375rem) var(--hx-space-3, 0.75rem);\n font-size: var(--hx-font-size-xs, 0.75rem);\n color: var(--hx-nav-link-color, var(--hx-color-neutral-300, #d1d5db));\n }\n\n /* ─── Mobile Responsive ─── */\n\n @media (max-width: 768px) {\n [part='nav'] {\n display: flex;\n flex-direction: column;\n padding: var(--hx-space-2, 0.5rem);\n }\n\n [part='toggle'] {\n display: inline-flex;\n align-self: flex-end;\n }\n\n [part='list'] {\n display: none;\n flex-direction: column;\n align-items: stretch;\n width: 100%;\n margin-top: var(--hx-space-2, 0.5rem);\n gap: var(--hx-space-1, 0.25rem);\n }\n\n [part='list'].nav__list--open {\n display: flex;\n }\n\n [part='item'] {\n width: 100%;\n }\n\n .nav__link {\n width: 100%;\n justify-content: flex-start;\n }\n\n .nav__submenu {\n position: static;\n box-shadow: none;\n border-radius: 0;\n padding-inline-start: var(--hx-space-4, 1rem);\n background-color: transparent;\n }\n\n .nav__submenu .nav__link {\n padding: var(--hx-space-1-5, 0.375rem) var(--hx-space-3, 0.75rem);\n }\n }\n\n /* ─── Reduced Motion ─── */\n\n @media (prefers-reduced-motion: reduce) {\n .nav__link,\n .nav__chevron,\n [part='toggle'] {\n transition: none;\n animation: none;\n }\n }\n`;\n","import { LitElement, html, nothing, svg } from 'lit';\nimport { customElement, property, state } from 'lit/decorators.js';\nimport { classMap } from 'lit/directives/class-map.js';\nimport { repeat } from 'lit/directives/repeat.js';\nimport { tokenStyles } from '@helixui/tokens/lit';\nimport { helixNavStyles } from './hx-nav.styles.js';\n\n/** A single navigation item, optionally with nested children. */\nexport interface NavItem {\n /** Display label for the item. */\n label: string;\n /** Href for the item link. Required unless children are provided. */\n href?: string;\n /** Whether this item represents the current page. */\n current?: boolean;\n /** Nested sub-menu items. */\n children?: NavItem[];\n}\n\n/** Layout orientation for the navigation. */\ntype NavOrientation = 'horizontal' | 'vertical';\n\n/**\n * Primary and secondary navigation component.\n * Supports horizontal menu bar and vertical sidebar patterns.\n * Mobile responsive with hamburger toggle.\n *\n * @summary Navigation bar supporting horizontal and vertical layouts with nested submenus.\n *\n * @tag hx-nav\n *\n * @fires {CustomEvent<{item: NavItem}>} hx-nav-select - Dispatched when a nav item is activated.\n *\n * @csspart nav - The nav landmark element.\n * @csspart list - The top-level list element.\n * @csspart item - Each list item wrapper.\n * @csspart link - The anchor or button element inside each item.\n * @csspart toggle - The mobile hamburger toggle button.\n *\n * @cssprop [--hx-nav-bg=var(--hx-color-neutral-900)] - Navigation background color.\n * @cssprop [--hx-nav-color=var(--hx-color-neutral-100)] - Navigation text color.\n * @cssprop [--hx-nav-font-family=var(--hx-font-family-sans)] - Navigation font family.\n * @cssprop [--hx-nav-link-color=var(--hx-color-neutral-100)] - Link text color.\n * @cssprop [--hx-nav-link-hover-bg=var(--hx-color-neutral-700)] - Link hover background.\n * @cssprop [--hx-nav-link-hover-color=var(--hx-color-white)] - Link hover text color.\n * @cssprop [--hx-nav-link-active-bg=var(--hx-color-primary-600)] - Active link background.\n * @cssprop [--hx-nav-link-active-color=var(--hx-color-white)] - Active link text color.\n * @cssprop [--hx-nav-submenu-bg=var(--hx-color-neutral-800)] - Submenu background color.\n * @cssprop [--hx-nav-submenu-min-width=12rem] - Submenu minimum width.\n * @cssprop [--hx-nav-font-size=var(--hx-font-size-sm)] - Navigation font size.\n * @cssprop [--hx-nav-padding=var(--hx-space-2) var(--hx-space-4)] - Navigation padding.\n * @cssprop [--hx-nav-item-padding=var(--hx-space-2) var(--hx-space-3)] - Item padding.\n * @cssprop [--hx-nav-border-radius=var(--hx-border-radius-sm)] - Item border radius.\n */\n@customElement('hx-nav')\nexport class HelixNav extends LitElement {\n static override styles = [tokenStyles, helixNavStyles];\n\n // ─── Properties ───\n\n /**\n * Navigation items array.\n * @attr items\n */\n @property({\n type: Array,\n converter: {\n fromAttribute(value: string | null): NavItem[] {\n if (!value) return [];\n try {\n const parsed: unknown = JSON.parse(value);\n return Array.isArray(parsed) ? (parsed as NavItem[]) : [];\n } catch {\n return [];\n }\n },\n },\n })\n items: NavItem[] = [];\n\n /**\n * Layout orientation: 'horizontal' (menu bar) or 'vertical' (sidebar).\n * @attr orientation\n */\n @property({ type: String, reflect: true })\n orientation: NavOrientation = 'horizontal';\n\n /**\n * Accessible label for the nav landmark.\n * @attr label\n */\n @property({ type: String })\n label = 'Main navigation';\n\n /** Accessible label for the navigation toggle button when menu is closed. */\n @property({ type: String, attribute: 'label-open-menu' })\n labelOpenMenu = 'Open navigation menu';\n\n /** Accessible label for the navigation toggle button when menu is open. */\n @property({ type: String, attribute: 'label-close-menu' })\n labelCloseMenu = 'Close navigation menu';\n\n // ─── State ───\n\n /**\n * Tracks whether the mobile navigation menu is currently expanded.\n * @internal\n */\n @state() private _mobileOpen = false;\n /**\n * Index of the currently expanded top-level nav item with a submenu, or null if none is expanded.\n * @internal\n */\n @state() private _expandedIndex: number | null = null;\n\n // ─── Private: bound event handler reference ───\n\n /**\n * Stable bound reference to the outside-click handler, stored for addEventListener/removeEventListener symmetry.\n * @internal\n */\n private _boundOutsideClick: (e: MouseEvent) => void = this._handleOutsideClick.bind(this);\n\n /**\n * Stable bound reference to the focusout handler, stored for addEventListener/removeEventListener symmetry.\n * @internal\n */\n private _boundFocusout: (e: FocusEvent) => void = this._handleFocusout.bind(this);\n\n /**\n * Sanitizes a URL to prevent XSS via javascript: or data: URIs.\n * Only allows http:, https:, relative paths, and fragment-only links.\n */\n /** @internal */\n private _sanitizeHref(href: string | undefined): string {\n if (!href || href === '#') return '#';\n // Allow relative paths, fragments, and http(s)\n if (\n href.startsWith('/') ||\n href.startsWith('./') ||\n href.startsWith('../') ||\n href.startsWith('#')\n ) {\n return href;\n }\n if (typeof window === 'undefined') return href;\n try {\n const url = new URL(href, window.location.href);\n if (url.protocol === 'http:' || url.protocol === 'https:') {\n return href;\n }\n } catch {\n // Invalid URL — fall through to safe default\n }\n return '#';\n }\n\n // ─── Event Handling ───\n\n /** @internal */\n private _handleToggle(): void {\n this._mobileOpen = !this._mobileOpen;\n if (!this._mobileOpen) {\n this._expandedIndex = null;\n }\n }\n\n /** @internal */\n private _handleItemClick(item: NavItem, index: number, e: Event): void {\n e.preventDefault();\n if (item.children?.length) {\n this._expandedIndex = this._expandedIndex === index ? null : index;\n } else {\n this._mobileOpen = false;\n this._expandedIndex = null;\n this.dispatchEvent(\n new CustomEvent<{ item: NavItem }>('hx-nav-select', {\n bubbles: true,\n composed: true,\n detail: { item },\n }),\n );\n }\n }\n\n /** @internal */\n private _handleSubItemClick(item: NavItem, e: Event): void {\n e.preventDefault();\n this._mobileOpen = false;\n this._expandedIndex = null;\n this.dispatchEvent(\n new CustomEvent<{ item: NavItem }>('hx-nav-select', {\n bubbles: true,\n composed: true,\n detail: { item },\n }),\n );\n }\n\n /** @internal */\n private _handleKeydown(e: KeyboardEvent, index: number, item: NavItem): void {\n const items = this.shadowRoot?.querySelectorAll<HTMLElement>(\n '[part=\"list\"] > [part=\"item\"] > [part=\"link\"]',\n );\n if (!items) return;\n const itemsArr = Array.from(items);\n const current = itemsArr[index];\n\n switch (e.key) {\n case 'ArrowRight':\n case 'ArrowDown': {\n e.preventDefault();\n if (item.children?.length && e.key === 'ArrowDown' && this.orientation === 'horizontal') {\n // open submenu and focus first item\n this._expandedIndex = index;\n void this.updateComplete.then(() => {\n const firstSub = this.shadowRoot?.querySelector<HTMLElement>(\n `.nav__submenu [part=\"link\"]`,\n );\n firstSub?.focus();\n });\n } else {\n const next = itemsArr[index + 1] ?? itemsArr[0];\n next?.focus();\n }\n break;\n }\n case 'ArrowLeft':\n case 'ArrowUp': {\n e.preventDefault();\n const prev = itemsArr[index - 1] ?? itemsArr[itemsArr.length - 1];\n prev?.focus();\n break;\n }\n case 'Home': {\n e.preventDefault();\n itemsArr[0]?.focus();\n break;\n }\n case 'End': {\n e.preventDefault();\n itemsArr[itemsArr.length - 1]?.focus();\n break;\n }\n case 'Escape': {\n this._expandedIndex = null;\n current?.focus();\n break;\n }\n case 'Enter':\n case ' ': {\n if (item.children?.length) {\n e.preventDefault();\n const wasExpanded = this._expandedIndex === index;\n this._expandedIndex = wasExpanded ? null : index;\n if (!wasExpanded) {\n void this.updateComplete.then(() => {\n const firstSub = this.shadowRoot?.querySelector<HTMLElement>(\n `.nav__submenu:not([hidden]) [part=\"link\"]`,\n );\n firstSub?.focus();\n });\n }\n }\n break;\n }\n }\n }\n\n /** @internal */\n private _handleSubKeydown(e: KeyboardEvent, parentIndex: number): void {\n const subItems = this.shadowRoot?.querySelectorAll<HTMLElement>(\n `.nav__submenu:not([hidden]) [part=\"link\"]`,\n );\n if (!subItems) return;\n const arr = Array.from(subItems);\n const focused = (e.currentTarget ?? e.target) as HTMLElement;\n const currentIdx = arr.indexOf(focused);\n\n switch (e.key) {\n case 'ArrowDown': {\n e.preventDefault();\n const next = arr[currentIdx + 1] ?? arr[0];\n next?.focus();\n break;\n }\n case 'ArrowUp': {\n e.preventDefault();\n const prev = arr[currentIdx - 1] ?? arr[arr.length - 1];\n prev?.focus();\n break;\n }\n case 'Escape': {\n e.preventDefault();\n this._expandedIndex = null;\n const parentLinks = this.shadowRoot?.querySelectorAll<HTMLElement>(\n '[part=\"list\"] > [part=\"item\"] > [part=\"link\"]',\n );\n parentLinks?.[parentIndex]?.focus();\n break;\n }\n }\n }\n\n /** @internal */\n private _handleOutsideClick(e: MouseEvent): void {\n const path = e.composedPath();\n if (!path.includes(this)) {\n this._expandedIndex = null;\n }\n }\n\n /**\n * hx-nav-008: Close expanded submenu when focus moves outside the component.\n * @internal\n */\n private _handleFocusout(e: FocusEvent): void {\n const relatedTarget = e.relatedTarget as Node | null;\n if (relatedTarget && this.contains(relatedTarget)) return;\n if (relatedTarget && this.shadowRoot?.contains(relatedTarget)) return;\n this._expandedIndex = null;\n }\n\n // ─── Lifecycle ───\n\n override connectedCallback(): void {\n super.connectedCallback();\n if (typeof document !== 'undefined') {\n document.addEventListener('click', this._boundOutsideClick);\n }\n this.addEventListener('focusout', this._boundFocusout);\n }\n\n override disconnectedCallback(): void {\n super.disconnectedCallback();\n document.removeEventListener('click', this._boundOutsideClick);\n this.removeEventListener('focusout', this._boundFocusout);\n }\n\n // ─── Render Helpers ───\n\n /** @internal */\n private _renderHamburgerIcon() {\n return html`<svg\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n aria-hidden=\"true\"\n >\n ${this._mobileOpen\n ? svg`<line x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\"></line>\n <line x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\"></line>`\n : svg`<line x1=\"3\" y1=\"12\" x2=\"21\" y2=\"12\"></line>\n <line x1=\"3\" y1=\"6\" x2=\"21\" y2=\"6\"></line>\n <line x1=\"3\" y1=\"18\" x2=\"21\" y2=\"18\"></line>`}\n </svg>`;\n }\n\n /** @internal */\n private _renderChevronIcon() {\n return html`<svg\n class=\"nav__chevron\"\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"currentColor\"\n aria-hidden=\"true\"\n >\n <path\n d=\"M4.5 6L8 9.5 11.5 6\"\n stroke=\"currentColor\"\n stroke-width=\"1.5\"\n fill=\"none\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>`;\n }\n\n /** @internal */\n private _renderSubMenu(children: NavItem[], parentIndex: number, parentLabel: string) {\n const isExpanded = this._expandedIndex === parentIndex;\n return html`\n <ul class=\"nav__submenu\" aria-label=\"${parentLabel} submenu\" ?hidden=${!isExpanded}>\n ${children.map(\n (child) => html`\n <li class=\"nav__submenu-item\">\n <a\n part=\"link\"\n href=${this._sanitizeHref(child.href)}\n class=${classMap({\n nav__link: true,\n 'nav__link--active': !!child.current,\n })}\n aria-current=${child.current ? 'page' : nothing}\n @click=${(e: Event) => this._handleSubItemClick(child, e)}\n @keydown=${(e: KeyboardEvent) => this._handleSubKeydown(e, parentIndex)}\n >\n ${child.label}\n </a>\n </li>\n `,\n )}\n </ul>\n `;\n }\n\n /** @internal */\n private _renderItem(item: NavItem, index: number) {\n const hasChildren = !!item.children?.length;\n const isExpanded = this._expandedIndex === index;\n const hasCurrentChild = hasChildren && !!item.children?.some((child) => child.current);\n\n const linkClasses = {\n nav__link: true,\n 'nav__link--active': !!item.current || hasCurrentChild,\n 'nav__link--has-submenu': hasChildren,\n 'nav__link--expanded': isExpanded,\n };\n\n const content = hasChildren\n ? html`\n <button\n part=\"link\"\n class=${classMap(linkClasses)}\n aria-expanded=${isExpanded ? 'true' : 'false'}\n aria-current=${hasCurrentChild ? 'true' : nothing}\n @click=${(e: Event) => this._handleItemClick(item, index, e)}\n @keydown=${(e: KeyboardEvent) => this._handleKeydown(e, index, item)}\n >\n ${item.label} ${this._renderChevronIcon()}\n </button>\n ${this._renderSubMenu(item.children ?? [], index, item.label)}\n `\n : html`\n <a\n part=\"link\"\n href=${this._sanitizeHref(item.href)}\n class=${classMap(linkClasses)}\n aria-current=${item.current ? 'page' : nothing}\n @click=${(e: Event) => this._handleItemClick(item, index, e)}\n @keydown=${(e: KeyboardEvent) => this._handleKeydown(e, index, item)}\n >\n ${item.label}\n </a>\n `;\n\n return html` <li part=\"item\" class=\"nav__item\">${content}</li> `;\n }\n\n // ─── Render ───\n\n override render() {\n const listClasses = {\n nav__list: true,\n 'nav__list--open': this._mobileOpen,\n };\n\n return html`\n <nav part=\"nav\" aria-label=${this.label}>\n <button\n part=\"toggle\"\n class=\"nav__toggle\"\n aria-expanded=${this._mobileOpen ? 'true' : 'false'}\n aria-controls=\"nav-list\"\n aria-label=${this._mobileOpen ? this.labelCloseMenu : this.labelOpenMenu}\n @click=${this._handleToggle}\n >\n ${this._renderHamburgerIcon()}\n </button>\n\n <ul part=\"list\" id=\"nav-list\" class=${classMap(listClasses)} role=\"list\">\n ${repeat(\n this.items,\n (_item, i) => i,\n (item, i) => this._renderItem(item, i),\n )}\n </ul>\n </nav>\n `;\n }\n}\n\n/** Canonical type alias for the hx-nav component. */\nexport type HxNav = HelixNav;\n\n/** @deprecated Use {@link HxNav} instead. The `Wc` prefix was a legacy naming convention. */\nexport type WcNav = HelixNav;\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'hx-nav': HelixNav;\n }\n}\n"],"names":["helixNavStyles","css","HelixNav","LitElement","href","url","item","index","e","_a","items","itemsArr","current","_b","firstSub","next","prev","_c","_d","_e","wasExpanded","parentIndex","subItems","arr","focused","currentIdx","parentLinks","relatedTarget","html","svg","children","parentLabel","isExpanded","child","classMap","nothing","hasChildren","hasCurrentChild","linkClasses","content","listClasses","repeat","_item","i","tokenStyles","__decorateClass","property","value","parsed","state","customElement"],"mappings":";;;;;AAEO,MAAMA,IAAiBC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AA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"}