@helixui/library 1.1.1 → 1.1.2-next.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (620) hide show
  1. package/custom-elements.json +7475 -6560
  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-alert/hx-alert.d.ts +18 -10
  18. package/dist/components/hx-alert/hx-alert.d.ts.map +1 -1
  19. package/dist/components/hx-alert/hx-alert.styles.d.ts.map +1 -1
  20. package/dist/components/hx-alert/index.js +1 -1
  21. package/dist/components/hx-avatar/index.js +1 -1
  22. package/dist/components/hx-badge/hx-badge.d.ts.map +1 -1
  23. package/dist/components/hx-badge/hx-badge.styles.d.ts.map +1 -1
  24. package/dist/components/hx-badge/index.js +1 -1
  25. package/dist/components/hx-banner/hx-banner.d.ts +15 -5
  26. package/dist/components/hx-banner/hx-banner.d.ts.map +1 -1
  27. package/dist/components/hx-banner/hx-banner.styles.d.ts.map +1 -1
  28. package/dist/components/hx-banner/index.js +1 -1
  29. package/dist/components/hx-breadcrumb/hx-breadcrumb.d.ts +7 -2
  30. package/dist/components/hx-breadcrumb/hx-breadcrumb.d.ts.map +1 -1
  31. package/dist/components/hx-breadcrumb/index.js +1 -1
  32. package/dist/components/hx-button/hx-button.d.ts +11 -8
  33. package/dist/components/hx-button/hx-button.d.ts.map +1 -1
  34. package/dist/components/hx-button/hx-button.styles.d.ts.map +1 -1
  35. package/dist/components/hx-button/index.js +1 -1
  36. package/dist/components/hx-button-group/hx-button-group.d.ts +3 -6
  37. package/dist/components/hx-button-group/hx-button-group.d.ts.map +1 -1
  38. package/dist/components/hx-button-group/index.js +1 -1
  39. package/dist/components/hx-card/hx-card.d.ts +7 -7
  40. package/dist/components/hx-card/hx-card.d.ts.map +1 -1
  41. package/dist/components/hx-card/index.js +1 -1
  42. package/dist/components/hx-carousel/hx-carousel.d.ts +2 -2
  43. package/dist/components/hx-carousel/index.js +1 -1
  44. package/dist/components/hx-checkbox/hx-checkbox.d.ts +18 -18
  45. package/dist/components/hx-checkbox/hx-checkbox.d.ts.map +1 -1
  46. package/dist/components/hx-checkbox/hx-checkbox.styles.d.ts.map +1 -1
  47. package/dist/components/hx-checkbox/index.js +1 -1
  48. package/dist/components/hx-checkbox-group/hx-checkbox-group.d.ts +8 -3
  49. package/dist/components/hx-checkbox-group/hx-checkbox-group.d.ts.map +1 -1
  50. package/dist/components/hx-checkbox-group/index.js +1 -1
  51. package/dist/components/hx-clinical-status/hx-clinical-status.d.ts +126 -0
  52. package/dist/components/hx-clinical-status/hx-clinical-status.d.ts.map +1 -0
  53. package/dist/components/hx-clinical-status/hx-clinical-status.styles.d.ts +2 -0
  54. package/dist/components/hx-clinical-status/hx-clinical-status.styles.d.ts.map +1 -0
  55. package/dist/components/hx-clinical-status/index.d.ts +3 -0
  56. package/dist/components/hx-clinical-status/index.d.ts.map +1 -0
  57. package/dist/components/hx-clinical-status/index.js +5 -0
  58. package/dist/components/hx-clinical-status/index.js.map +1 -0
  59. package/dist/components/hx-code-snippet/hx-code-snippet.styles.d.ts.map +1 -1
  60. package/dist/components/hx-code-snippet/index.js +1 -1
  61. package/dist/components/hx-color-picker/color-utils.d.ts +27 -0
  62. package/dist/components/hx-color-picker/color-utils.d.ts.map +1 -0
  63. package/dist/components/hx-color-picker/hx-color-picker.d.ts +16 -4
  64. package/dist/components/hx-color-picker/hx-color-picker.d.ts.map +1 -1
  65. package/dist/components/hx-color-picker/index.js +1 -1
  66. package/dist/components/hx-combobox/hx-combobox.d.ts +4 -4
  67. package/dist/components/hx-combobox/hx-combobox.d.ts.map +1 -1
  68. package/dist/components/hx-combobox/hx-combobox.styles.d.ts.map +1 -1
  69. package/dist/components/hx-combobox/index.js +1 -1
  70. package/dist/components/hx-container/index.js +1 -1
  71. package/dist/components/hx-copy-button/hx-copy-button.d.ts +6 -1
  72. package/dist/components/hx-copy-button/hx-copy-button.d.ts.map +1 -1
  73. package/dist/components/hx-copy-button/index.js +1 -1
  74. package/dist/components/hx-counter/hx-counter.d.ts +20 -3
  75. package/dist/components/hx-counter/hx-counter.d.ts.map +1 -1
  76. package/dist/components/hx-counter/hx-counter.styles.d.ts.map +1 -1
  77. package/dist/components/hx-counter/index.js +1 -1
  78. package/dist/components/hx-data-table/hx-data-table.d.ts +13 -13
  79. package/dist/components/hx-data-table/hx-data-table.d.ts.map +1 -1
  80. package/dist/components/hx-data-table/hx-data-table.styles.d.ts.map +1 -1
  81. package/dist/components/hx-data-table/index.js +1 -1
  82. package/dist/components/hx-date-picker/hx-date-picker.d.ts +70 -13
  83. package/dist/components/hx-date-picker/hx-date-picker.d.ts.map +1 -1
  84. package/dist/components/hx-date-picker/hx-date-picker.styles.d.ts.map +1 -1
  85. package/dist/components/hx-date-picker/index.js +1 -1
  86. package/dist/components/hx-dialog/hx-dialog.d.ts +4 -1
  87. package/dist/components/hx-dialog/hx-dialog.d.ts.map +1 -1
  88. package/dist/components/hx-dialog/index.js +1 -1
  89. package/dist/components/hx-divider/hx-divider.d.ts.map +1 -1
  90. package/dist/components/hx-divider/index.js +1 -1
  91. package/dist/components/hx-drawer/hx-drawer.d.ts +4 -8
  92. package/dist/components/hx-drawer/hx-drawer.d.ts.map +1 -1
  93. package/dist/components/hx-drawer/hx-drawer.styles.d.ts.map +1 -1
  94. package/dist/components/hx-drawer/index.js +1 -1
  95. package/dist/components/hx-dropdown/hx-dropdown.d.ts +14 -1
  96. package/dist/components/hx-dropdown/hx-dropdown.d.ts.map +1 -1
  97. package/dist/components/hx-dropdown/index.js +1 -1
  98. package/dist/components/hx-field/hx-field.d.ts +1 -1
  99. package/dist/components/hx-field/hx-field.d.ts.map +1 -1
  100. package/dist/components/hx-field/index.js +1 -1
  101. package/dist/components/hx-field-label/hx-field-label.styles.d.ts.map +1 -1
  102. package/dist/components/hx-field-label/index.js +1 -1
  103. package/dist/components/hx-file-upload/hx-file-upload.d.ts +8 -9
  104. package/dist/components/hx-file-upload/hx-file-upload.d.ts.map +1 -1
  105. package/dist/components/hx-file-upload/index.js +1 -1
  106. package/dist/components/hx-form/hx-form.d.ts.map +1 -1
  107. package/dist/components/hx-form/index.js +1 -1
  108. package/dist/components/hx-format-date/hx-format-date.d.ts.map +1 -1
  109. package/dist/components/hx-format-date/index.js +1 -1
  110. package/dist/components/hx-grid/hx-grid.d.ts +5 -9
  111. package/dist/components/hx-grid/hx-grid.d.ts.map +1 -1
  112. package/dist/components/hx-grid/index.js +1 -1
  113. package/dist/components/hx-icon/hx-icon.d.ts.map +1 -1
  114. package/dist/components/hx-icon/index.js +1 -1
  115. package/dist/components/hx-icon-button/hx-icon-button.d.ts +4 -3
  116. package/dist/components/hx-icon-button/hx-icon-button.d.ts.map +1 -1
  117. package/dist/components/hx-icon-button/index.js +1 -1
  118. package/dist/components/hx-image/hx-image.d.ts.map +1 -1
  119. package/dist/components/hx-image/index.js +1 -1
  120. package/dist/components/hx-link/hx-link.d.ts +1 -1
  121. package/dist/components/hx-link/hx-link.d.ts.map +1 -1
  122. package/dist/components/hx-link/hx-link.styles.d.ts.map +1 -1
  123. package/dist/components/hx-link/index.js +1 -1
  124. package/dist/components/hx-meter/hx-meter.d.ts +2 -2
  125. package/dist/components/hx-meter/hx-meter.d.ts.map +1 -1
  126. package/dist/components/hx-meter/index.js +1 -1
  127. package/dist/components/hx-nav/hx-nav.d.ts.map +1 -1
  128. package/dist/components/hx-nav/index.js +1 -1
  129. package/dist/components/hx-number-input/hx-number-input.d.ts +19 -7
  130. package/dist/components/hx-number-input/hx-number-input.d.ts.map +1 -1
  131. package/dist/components/hx-number-input/index.js +1 -1
  132. package/dist/components/hx-overflow-menu/hx-overflow-menu.d.ts +3 -3
  133. package/dist/components/hx-overflow-menu/hx-overflow-menu.styles.d.ts.map +1 -1
  134. package/dist/components/hx-overflow-menu/index.js +1 -1
  135. package/dist/components/hx-pagination/hx-pagination.d.ts +26 -12
  136. package/dist/components/hx-pagination/hx-pagination.d.ts.map +1 -1
  137. package/dist/components/hx-pagination/hx-pagination.styles.d.ts.map +1 -1
  138. package/dist/components/hx-pagination/index.js +1 -1
  139. package/dist/components/hx-patient-banner/hx-patient-banner.d.ts +105 -0
  140. package/dist/components/hx-patient-banner/hx-patient-banner.d.ts.map +1 -0
  141. package/dist/components/hx-patient-banner/hx-patient-banner.styles.d.ts +2 -0
  142. package/dist/components/hx-patient-banner/hx-patient-banner.styles.d.ts.map +1 -0
  143. package/dist/components/hx-patient-banner/index.d.ts +3 -0
  144. package/dist/components/hx-patient-banner/index.d.ts.map +1 -0
  145. package/dist/components/hx-patient-banner/index.js +5 -0
  146. package/dist/components/hx-patient-banner/index.js.map +1 -0
  147. package/dist/components/hx-phi-field/hx-phi-field.d.ts +72 -0
  148. package/dist/components/hx-phi-field/hx-phi-field.d.ts.map +1 -0
  149. package/dist/components/hx-phi-field/hx-phi-field.styles.d.ts +2 -0
  150. package/dist/components/hx-phi-field/hx-phi-field.styles.d.ts.map +1 -0
  151. package/dist/components/hx-phi-field/index.d.ts +3 -0
  152. package/dist/components/hx-phi-field/index.d.ts.map +1 -0
  153. package/dist/components/hx-phi-field/index.js +5 -0
  154. package/dist/components/hx-phi-field/index.js.map +1 -0
  155. package/dist/components/hx-popover/hx-popover.d.ts +25 -9
  156. package/dist/components/hx-popover/hx-popover.d.ts.map +1 -1
  157. package/dist/components/hx-popover/index.js +1 -1
  158. package/dist/components/hx-popup/hx-popup.d.ts +5 -8
  159. package/dist/components/hx-popup/hx-popup.d.ts.map +1 -1
  160. package/dist/components/hx-popup/index.js +1 -1
  161. package/dist/components/hx-progress-bar/hx-progress-bar.d.ts +2 -0
  162. package/dist/components/hx-progress-bar/hx-progress-bar.d.ts.map +1 -1
  163. package/dist/components/hx-progress-bar/hx-progress-bar.styles.d.ts.map +1 -1
  164. package/dist/components/hx-progress-bar/index.js +1 -1
  165. package/dist/components/hx-progress-ring/hx-progress-ring.d.ts.map +1 -1
  166. package/dist/components/hx-progress-ring/index.js +1 -1
  167. package/dist/components/hx-prose/hx-prose.d.ts +1 -0
  168. package/dist/components/hx-prose/hx-prose.d.ts.map +1 -1
  169. package/dist/components/hx-radio-group/hx-radio-group.d.ts +3 -7
  170. package/dist/components/hx-radio-group/hx-radio-group.d.ts.map +1 -1
  171. package/dist/components/hx-radio-group/hx-radio.d.ts.map +1 -1
  172. package/dist/components/hx-radio-group/hx-radio.styles.d.ts.map +1 -1
  173. package/dist/components/hx-radio-group/index.js +1 -1
  174. package/dist/components/hx-rating/hx-rating.d.ts +3 -3
  175. package/dist/components/hx-rating/hx-rating.d.ts.map +1 -1
  176. package/dist/components/hx-rating/hx-rating.styles.d.ts.map +1 -1
  177. package/dist/components/hx-rating/index.js +1 -1
  178. package/dist/components/hx-select/hx-select.d.ts +16 -11
  179. package/dist/components/hx-select/hx-select.d.ts.map +1 -1
  180. package/dist/components/hx-select/hx-select.styles.d.ts.map +1 -1
  181. package/dist/components/hx-select/index.js +1 -1
  182. package/dist/components/hx-side-nav/hx-nav-item.d.ts +7 -0
  183. package/dist/components/hx-side-nav/hx-nav-item.d.ts.map +1 -1
  184. package/dist/components/hx-side-nav/hx-nav-item.styles.d.ts.map +1 -1
  185. package/dist/components/hx-side-nav/hx-side-nav.d.ts.map +1 -1
  186. package/dist/components/hx-side-nav/hx-side-nav.styles.d.ts.map +1 -1
  187. package/dist/components/hx-side-nav/index.js +1 -1
  188. package/dist/components/hx-skeleton/hx-skeleton.d.ts +2 -2
  189. package/dist/components/hx-skeleton/hx-skeleton.d.ts.map +1 -1
  190. package/dist/components/hx-slider/hx-slider.d.ts +4 -8
  191. package/dist/components/hx-slider/hx-slider.d.ts.map +1 -1
  192. package/dist/components/hx-slider/hx-slider.styles.d.ts.map +1 -1
  193. package/dist/components/hx-slider/index.js +1 -1
  194. package/dist/components/hx-spinner/hx-spinner.d.ts +14 -1
  195. package/dist/components/hx-spinner/hx-spinner.d.ts.map +1 -1
  196. package/dist/components/hx-spinner/hx-spinner.styles.d.ts.map +1 -1
  197. package/dist/components/hx-spinner/index.js +1 -1
  198. package/dist/components/hx-split-button/hx-split-button.d.ts +10 -4
  199. package/dist/components/hx-split-button/hx-split-button.d.ts.map +1 -1
  200. package/dist/components/hx-split-button/hx-split-button.styles.d.ts.map +1 -1
  201. package/dist/components/hx-split-button/index.js +1 -1
  202. package/dist/components/hx-split-panel/hx-split-panel.d.ts +13 -9
  203. package/dist/components/hx-split-panel/hx-split-panel.d.ts.map +1 -1
  204. package/dist/components/hx-split-panel/hx-split-panel.styles.d.ts.map +1 -1
  205. package/dist/components/hx-split-panel/index.js +1 -1
  206. package/dist/components/hx-stat/hx-stat.d.ts +7 -2
  207. package/dist/components/hx-stat/hx-stat.d.ts.map +1 -1
  208. package/dist/components/hx-stat/index.js +1 -1
  209. package/dist/components/hx-status-indicator/hx-status-indicator.d.ts +2 -2
  210. package/dist/components/hx-status-indicator/hx-status-indicator.d.ts.map +1 -1
  211. package/dist/components/hx-status-indicator/index.js +1 -1
  212. package/dist/components/hx-steps/hx-step.styles.d.ts.map +1 -1
  213. package/dist/components/hx-steps/hx-steps.d.ts.map +1 -1
  214. package/dist/components/hx-steps/index.js +1 -1
  215. package/dist/components/hx-structured-list/hx-structured-list.d.ts +10 -3
  216. package/dist/components/hx-structured-list/hx-structured-list.d.ts.map +1 -1
  217. package/dist/components/hx-structured-list/index.js +1 -1
  218. package/dist/components/hx-style-scope/hx-style-scope.d.ts +71 -0
  219. package/dist/components/hx-style-scope/hx-style-scope.d.ts.map +1 -0
  220. package/dist/components/hx-style-scope/hx-style-scope.styles.d.ts +10 -0
  221. package/dist/components/hx-style-scope/hx-style-scope.styles.d.ts.map +1 -0
  222. package/dist/components/hx-style-scope/index.d.ts +2 -0
  223. package/dist/components/hx-style-scope/index.d.ts.map +1 -0
  224. package/dist/components/hx-style-scope/index.js +5 -0
  225. package/dist/components/hx-style-scope/index.js.map +1 -0
  226. package/dist/components/hx-switch/hx-switch.d.ts +4 -4
  227. package/dist/components/hx-switch/hx-switch.d.ts.map +1 -1
  228. package/dist/components/hx-switch/hx-switch.styles.d.ts.map +1 -1
  229. package/dist/components/hx-switch/index.js +1 -1
  230. package/dist/components/hx-table/hx-table.d.ts +1 -0
  231. package/dist/components/hx-table/hx-table.d.ts.map +1 -1
  232. package/dist/components/hx-table/index.js +1 -1
  233. package/dist/components/hx-tabs/hx-tab-panel.styles.d.ts.map +1 -1
  234. package/dist/components/hx-tabs/hx-tab.d.ts +1 -0
  235. package/dist/components/hx-tabs/hx-tab.d.ts.map +1 -1
  236. package/dist/components/hx-tabs/hx-tab.styles.d.ts.map +1 -1
  237. package/dist/components/hx-tabs/hx-tabs.d.ts +2 -2
  238. package/dist/components/hx-tabs/hx-tabs.d.ts.map +1 -1
  239. package/dist/components/hx-tabs/index.js +1 -1
  240. package/dist/components/hx-tag/hx-tag.styles.d.ts.map +1 -1
  241. package/dist/components/hx-tag/index.js +1 -1
  242. package/dist/components/hx-text/index.js +1 -1
  243. package/dist/components/hx-text-input/hx-text-input.d.ts +16 -15
  244. package/dist/components/hx-text-input/hx-text-input.d.ts.map +1 -1
  245. package/dist/components/hx-text-input/hx-text-input.styles.d.ts.map +1 -1
  246. package/dist/components/hx-text-input/index.js +1 -1
  247. package/dist/components/hx-textarea/hx-textarea.d.ts +4 -4
  248. package/dist/components/hx-textarea/hx-textarea.d.ts.map +1 -1
  249. package/dist/components/hx-textarea/hx-textarea.styles.d.ts.map +1 -1
  250. package/dist/components/hx-textarea/index.js +1 -1
  251. package/dist/components/hx-theme/hx-theme.d.ts +82 -3
  252. package/dist/components/hx-theme/hx-theme.d.ts.map +1 -1
  253. package/dist/components/hx-theme/index.js +1 -1
  254. package/dist/components/hx-time-picker/hx-time-picker.d.ts +3 -1
  255. package/dist/components/hx-time-picker/hx-time-picker.d.ts.map +1 -1
  256. package/dist/components/hx-time-picker/index.js +1 -1
  257. package/dist/components/hx-toast/hx-toast-stack.d.ts +1 -1
  258. package/dist/components/hx-toast/hx-toast-stack.d.ts.map +1 -1
  259. package/dist/components/hx-toast/hx-toast.d.ts +9 -5
  260. package/dist/components/hx-toast/hx-toast.d.ts.map +1 -1
  261. package/dist/components/hx-toast/hx-toast.styles.d.ts.map +1 -1
  262. package/dist/components/hx-toast/index.js +1 -1
  263. package/dist/components/hx-toast/toast-factory.d.ts.map +1 -1
  264. package/dist/components/hx-toggle-button/hx-toggle-button.d.ts +4 -3
  265. package/dist/components/hx-toggle-button/hx-toggle-button.d.ts.map +1 -1
  266. package/dist/components/hx-toggle-button/hx-toggle-button.styles.d.ts.map +1 -1
  267. package/dist/components/hx-toggle-button/index.js +1 -1
  268. package/dist/components/hx-tooltip/hx-tooltip.d.ts +1 -2
  269. package/dist/components/hx-tooltip/hx-tooltip.d.ts.map +1 -1
  270. package/dist/components/hx-tooltip/index.js +1 -1
  271. package/dist/components/hx-tree-view/hx-tree-item.d.ts +7 -0
  272. package/dist/components/hx-tree-view/hx-tree-item.d.ts.map +1 -1
  273. package/dist/components/hx-tree-view/hx-tree-view.d.ts +21 -2
  274. package/dist/components/hx-tree-view/hx-tree-view.d.ts.map +1 -1
  275. package/dist/components/hx-tree-view/hx-tree-view.styles.d.ts.map +1 -1
  276. package/dist/components/hx-tree-view/index.js +1 -1
  277. package/dist/controllers/helix-audit-controller.d.ts +71 -0
  278. package/dist/controllers/helix-audit-controller.d.ts.map +1 -0
  279. package/dist/css/helix-all.css +9581 -0
  280. package/dist/css/helix-core.css +1784 -0
  281. package/dist/css/helix-data.css +639 -0
  282. package/dist/css/helix-feedback.css +1239 -0
  283. package/dist/css/helix-forms.css +2498 -0
  284. package/dist/css/helix-layout.css +380 -0
  285. package/dist/css/helix-media.css +213 -0
  286. package/dist/css/helix-navigation.css +1122 -0
  287. package/dist/css/helix-overlay.css +643 -0
  288. package/dist/css/helix-tokens.css +432 -0
  289. package/dist/css/helix-utility.css +633 -0
  290. package/dist/css/hx-accordion.css +10 -0
  291. package/dist/css/hx-action-bar.css +117 -0
  292. package/dist/css/hx-alert.css +213 -0
  293. package/dist/css/hx-avatar.css +117 -0
  294. package/dist/css/hx-badge.css +174 -0
  295. package/dist/css/hx-banner.css +203 -0
  296. package/dist/css/hx-breadcrumb.css +36 -0
  297. package/dist/css/hx-button-group.css +91 -0
  298. package/dist/css/hx-button.css +262 -0
  299. package/dist/css/hx-card.css +161 -0
  300. package/dist/css/hx-carousel.css +211 -0
  301. package/dist/css/hx-checkbox-group.css +77 -0
  302. package/dist/css/hx-checkbox.css +219 -0
  303. package/dist/css/hx-clinical-status.css +246 -0
  304. package/dist/css/hx-code-snippet.css +179 -0
  305. package/dist/css/hx-color-picker.css +2 -0
  306. package/dist/css/hx-combobox.css +2 -0
  307. package/dist/css/hx-container.css +82 -0
  308. package/dist/css/hx-copy-button.css +121 -0
  309. package/dist/css/hx-counter.css +51 -0
  310. package/dist/css/hx-data-table.css +207 -0
  311. package/dist/css/hx-date-picker.css +2 -0
  312. package/dist/css/hx-dialog.css +190 -0
  313. package/dist/css/hx-divider.css +87 -0
  314. package/dist/css/hx-drawer.css +262 -0
  315. package/dist/css/hx-dropdown.css +46 -0
  316. package/dist/css/hx-field-label.css +38 -0
  317. package/dist/css/hx-field.css +119 -0
  318. package/dist/css/hx-file-upload.css +241 -0
  319. package/dist/css/hx-form.css +2 -0
  320. package/dist/css/hx-format-date.css +10 -0
  321. package/dist/css/hx-grid.css +14 -0
  322. package/dist/css/hx-help-text.css +50 -0
  323. package/dist/css/hx-icon-button.css +152 -0
  324. package/dist/css/hx-icon.css +73 -0
  325. package/dist/css/hx-image.css +41 -0
  326. package/dist/css/hx-link.css +105 -0
  327. package/dist/css/hx-list.css +48 -0
  328. package/dist/css/hx-menu.css +21 -0
  329. package/dist/css/hx-meter.css +113 -0
  330. package/dist/css/hx-nav.css +242 -0
  331. package/dist/css/hx-number-input.css +246 -0
  332. package/dist/css/hx-overflow-menu.css +133 -0
  333. package/dist/css/hx-pagination.css +193 -0
  334. package/dist/css/hx-patient-banner.css +111 -0
  335. package/dist/css/hx-phi-field.css +85 -0
  336. package/dist/css/hx-popover.css +61 -0
  337. package/dist/css/hx-popup.css +31 -0
  338. package/dist/css/hx-progress-bar.css +133 -0
  339. package/dist/css/hx-progress-ring.css +142 -0
  340. package/dist/css/hx-prose.css +2 -0
  341. package/dist/css/hx-radio-group.css +77 -0
  342. package/dist/css/hx-rating.css +96 -0
  343. package/dist/css/hx-select.css +268 -0
  344. package/dist/css/hx-side-nav.css +142 -0
  345. package/dist/css/hx-skeleton.css +82 -0
  346. package/dist/css/hx-slider.css +287 -0
  347. package/dist/css/hx-spinner.css +116 -0
  348. package/dist/css/hx-split-button.css +309 -0
  349. package/dist/css/hx-split-panel.css +168 -0
  350. package/dist/css/hx-stack.css +104 -0
  351. package/dist/css/hx-stat.css +106 -0
  352. package/dist/css/hx-status-indicator.css +97 -0
  353. package/dist/css/hx-steps.css +52 -0
  354. package/dist/css/hx-structured-list.css +75 -0
  355. package/dist/css/hx-style-scope.css +4 -0
  356. package/dist/css/hx-switch.css +169 -0
  357. package/dist/css/hx-table.css +128 -0
  358. package/dist/css/hx-tabs.css +76 -0
  359. package/dist/css/hx-tag.css +146 -0
  360. package/dist/css/hx-text-input.css +214 -0
  361. package/dist/css/hx-text.css +149 -0
  362. package/dist/css/hx-textarea.css +180 -0
  363. package/dist/css/hx-theme.css +23 -0
  364. package/dist/css/hx-time-picker.css +2 -0
  365. package/dist/css/hx-toast.css +230 -0
  366. package/dist/css/hx-toggle-button.css +207 -0
  367. package/dist/css/hx-tooltip.css +51 -0
  368. package/dist/css/hx-top-nav.css +203 -0
  369. package/dist/css/hx-tree-view.css +22 -0
  370. package/dist/css/hx-visually-hidden.css +26 -0
  371. package/dist/css/index.css +84 -0
  372. package/dist/css/manifest.json +2696 -0
  373. package/dist/index.d.ts +14 -0
  374. package/dist/index.d.ts.map +1 -1
  375. package/dist/index.js +266 -176
  376. package/dist/index.js.map +1 -1
  377. package/dist/mixins/FocusMixin.d.ts +49 -0
  378. package/dist/mixins/FocusMixin.d.ts.map +1 -0
  379. package/dist/mixins/FormMixin.d.ts +69 -0
  380. package/dist/mixins/FormMixin.d.ts.map +1 -0
  381. package/dist/mixins/aria-delegation.d.ts +97 -0
  382. package/dist/mixins/aria-delegation.d.ts.map +1 -0
  383. package/dist/mixins/index.d.ts +5 -0
  384. package/dist/mixins/index.d.ts.map +1 -0
  385. package/dist/shared/FormMixin-Bjvw20G5.js +88 -0
  386. package/dist/shared/FormMixin-Bjvw20G5.js.map +1 -0
  387. package/dist/shared/aria-delegation-CBP9eQ0M.js +107 -0
  388. package/dist/shared/aria-delegation-CBP9eQ0M.js.map +1 -0
  389. package/dist/shared/{hx-accordion-D1kFhdeQ.js → hx-accordion-_KeulaQR.js} +83 -55
  390. package/dist/shared/hx-accordion-_KeulaQR.js.map +1 -0
  391. package/dist/shared/hx-action-bar-D4bulGQP.js.map +1 -1
  392. package/dist/shared/{hx-alert-K5F8KeqI.js → hx-alert-DRZYP0Oo.js} +32 -23
  393. package/dist/shared/hx-alert-DRZYP0Oo.js.map +1 -0
  394. package/dist/shared/{hx-avatar-Cun-O99h.js → hx-avatar-7p1cj3lG.js} +2 -2
  395. package/dist/shared/hx-avatar-7p1cj3lG.js.map +1 -0
  396. package/dist/shared/{hx-badge-CsFd2xtw.js → hx-badge-DCxvskdw.js} +23 -18
  397. package/dist/shared/hx-badge-DCxvskdw.js.map +1 -0
  398. package/dist/shared/{hx-banner-BTV-X2xF.js → hx-banner-2RS7Nux4.js} +93 -58
  399. package/dist/shared/hx-banner-2RS7Nux4.js.map +1 -0
  400. package/dist/shared/{hx-breadcrumb-item-4IwaLgaO.js → hx-breadcrumb-item-B2rjepqy.js} +79 -78
  401. package/dist/shared/hx-breadcrumb-item-B2rjepqy.js.map +1 -0
  402. package/dist/shared/{hx-button-7k-KeCYU.js → hx-button-6S3DwuIj.js} +81 -56
  403. package/dist/shared/hx-button-6S3DwuIj.js.map +1 -0
  404. package/dist/shared/{hx-button-group-CWjWv-wS.js → hx-button-group-ChTQsnQj.js} +10 -10
  405. package/dist/shared/hx-button-group-ChTQsnQj.js.map +1 -0
  406. package/dist/shared/{hx-card-0hT3G5hi.js → hx-card-dIKdcMhr.js} +32 -32
  407. package/dist/shared/hx-card-dIKdcMhr.js.map +1 -0
  408. package/dist/shared/{hx-carousel-item-DgeYyYZJ.js → hx-carousel-item-Cm8a1nAi.js} +3 -3
  409. package/dist/shared/hx-carousel-item-Cm8a1nAi.js.map +1 -0
  410. package/dist/shared/{hx-checkbox-BvjO-O41.js → hx-checkbox-_WUiuTo9.js} +68 -71
  411. package/dist/shared/hx-checkbox-_WUiuTo9.js.map +1 -0
  412. package/dist/shared/{hx-checkbox-group-Z5VvWzcj.js → hx-checkbox-group-B-ci-dxp.js} +37 -31
  413. package/dist/shared/hx-checkbox-group-B-ci-dxp.js.map +1 -0
  414. package/dist/shared/hx-clinical-status-De8yrA5I.js +467 -0
  415. package/dist/shared/hx-clinical-status-De8yrA5I.js.map +1 -0
  416. package/dist/shared/{hx-code-snippet-DqzPkH4K.js → hx-code-snippet-CQsyvthi.js} +56 -47
  417. package/dist/shared/hx-code-snippet-CQsyvthi.js.map +1 -0
  418. package/dist/shared/{hx-color-picker-Da8z6AlQ.js → hx-color-picker-Dk2Myvaf.js} +153 -137
  419. package/dist/shared/hx-color-picker-Dk2Myvaf.js.map +1 -0
  420. package/dist/shared/{hx-combobox-CivfelTS.js → hx-combobox-CNAJXIxo.js} +10 -10
  421. package/dist/shared/hx-combobox-CNAJXIxo.js.map +1 -0
  422. package/dist/shared/{hx-container-DLUKnTi9.js → hx-container-7j16VuQE.js} +16 -16
  423. package/dist/shared/hx-container-7j16VuQE.js.map +1 -0
  424. package/dist/shared/{hx-copy-button--0dymSvw.js → hx-copy-button-B_ZHYO7_.js} +47 -40
  425. package/dist/shared/hx-copy-button-B_ZHYO7_.js.map +1 -0
  426. package/dist/shared/hx-counter-D_B7L9Pi.js +185 -0
  427. package/dist/shared/hx-counter-D_B7L9Pi.js.map +1 -0
  428. package/dist/shared/{hx-data-table-DujB9hSE.js → hx-data-table-B1j4n4bm.js} +134 -107
  429. package/dist/shared/hx-data-table-B1j4n4bm.js.map +1 -0
  430. package/dist/shared/{hx-date-picker-C8d2HtRV.js → hx-date-picker-R-0kWFwr.js} +146 -130
  431. package/dist/shared/hx-date-picker-R-0kWFwr.js.map +1 -0
  432. package/dist/shared/{hx-dialog-DkUSnVgw.js → hx-dialog-U5d3s0Ps.js} +98 -89
  433. package/dist/shared/hx-dialog-U5d3s0Ps.js.map +1 -0
  434. package/dist/shared/{hx-divider-DNNs4e8q.js → hx-divider-DdAN-_jB.js} +5 -5
  435. package/dist/shared/hx-divider-DdAN-_jB.js.map +1 -0
  436. package/dist/shared/{hx-drawer-CJcRZcns.js → hx-drawer-e0qeGxAD.js} +117 -77
  437. package/dist/shared/hx-drawer-e0qeGxAD.js.map +1 -0
  438. package/dist/shared/{hx-dropdown-Bo0KTM1A.js → hx-dropdown-DP_DNpEb.js} +56 -41
  439. package/dist/shared/hx-dropdown-DP_DNpEb.js.map +1 -0
  440. package/dist/shared/{hx-field-3MmzJ4kZ.js → hx-field-COM4KvMQ.js} +9 -9
  441. package/dist/shared/hx-field-COM4KvMQ.js.map +1 -0
  442. package/dist/shared/{hx-field-label-Bg-EWvqF.js → hx-field-label-BtZ9H9Yy.js} +8 -11
  443. package/dist/shared/hx-field-label-BtZ9H9Yy.js.map +1 -0
  444. package/dist/shared/{hx-file-upload-ByjAgfNy.js → hx-file-upload-DbECypLe.js} +78 -87
  445. package/dist/shared/hx-file-upload-DbECypLe.js.map +1 -0
  446. package/dist/shared/{hx-form-BpS6v3Iu.js → hx-form-fJE-FJQV.js} +36 -32
  447. package/dist/shared/{hx-form-BpS6v3Iu.js.map → hx-form-fJE-FJQV.js.map} +1 -1
  448. package/dist/shared/{hx-format-date-BdnWV2kX.js → hx-format-date-C030ThSm.js} +14 -12
  449. package/dist/shared/hx-format-date-C030ThSm.js.map +1 -0
  450. package/dist/shared/{hx-grid-gEjuF0cR.js → hx-grid-DE8KM5Gf.js} +7 -7
  451. package/dist/shared/hx-grid-DE8KM5Gf.js.map +1 -0
  452. package/dist/shared/{hx-icon-button-DzH_bRtC.js → hx-icon-button-Et9wq79n.js} +4 -4
  453. package/dist/shared/{hx-icon-button-DzH_bRtC.js.map → hx-icon-button-Et9wq79n.js.map} +1 -1
  454. package/dist/shared/{hx-icon-CP6OnLoM.js → hx-icon-dYvrzvsO.js} +7 -7
  455. package/dist/shared/hx-icon-dYvrzvsO.js.map +1 -0
  456. package/dist/shared/{hx-image-C6pGiI6c.js → hx-image-DUsEi-oN.js} +15 -15
  457. package/dist/shared/hx-image-DUsEi-oN.js.map +1 -0
  458. package/dist/shared/{hx-link-Tmk_YPvW.js → hx-link-Peg2LzOD.js} +43 -41
  459. package/dist/shared/hx-link-Peg2LzOD.js.map +1 -0
  460. package/dist/shared/{hx-meter-uXkTZq-W.js → hx-meter-CVs4A649.js} +13 -13
  461. package/dist/shared/hx-meter-CVs4A649.js.map +1 -0
  462. package/dist/shared/{hx-nav-3JsN2Oak.js → hx-nav-D377Ngz4.js} +23 -24
  463. package/dist/shared/hx-nav-D377Ngz4.js.map +1 -0
  464. package/dist/shared/{hx-nav-item-D3EJatzc.js → hx-nav-item-ByU2N921.js} +49 -37
  465. package/dist/shared/hx-nav-item-ByU2N921.js.map +1 -0
  466. package/dist/shared/{hx-number-input-CAAibZ8X.js → hx-number-input-BPgrlMLN.js} +70 -66
  467. package/dist/shared/hx-number-input-BPgrlMLN.js.map +1 -0
  468. package/dist/shared/{hx-overflow-menu-2kgOJ_ht.js → hx-overflow-menu-Bz02LPPk.js} +15 -11
  469. package/dist/shared/hx-overflow-menu-Bz02LPPk.js.map +1 -0
  470. package/dist/shared/{hx-pagination-DBs-vmSv.js → hx-pagination-DYhYPqDn.js} +68 -63
  471. package/dist/shared/hx-pagination-DYhYPqDn.js.map +1 -0
  472. package/dist/shared/hx-patient-banner-BoJHddAL.js +256 -0
  473. package/dist/shared/hx-patient-banner-BoJHddAL.js.map +1 -0
  474. package/dist/shared/hx-phi-field-EDWna59z.js +261 -0
  475. package/dist/shared/hx-phi-field-EDWna59z.js.map +1 -0
  476. package/dist/shared/{hx-popover-DxE67miP.js → hx-popover-D6kYQkt3.js} +96 -69
  477. package/dist/shared/hx-popover-D6kYQkt3.js.map +1 -0
  478. package/dist/shared/{hx-popup-Dg6n_PbY.js → hx-popup-RQb6HUXc.js} +2 -2
  479. package/dist/shared/hx-popup-RQb6HUXc.js.map +1 -0
  480. package/dist/shared/{hx-progress-bar-Dm_EHyng.js → hx-progress-bar-ByEmxq1V.js} +42 -40
  481. package/dist/shared/hx-progress-bar-ByEmxq1V.js.map +1 -0
  482. package/dist/shared/{hx-progress-ring-DpxBDD5d.js → hx-progress-ring-CtVnNRQx.js} +2 -2
  483. package/dist/shared/{hx-progress-ring-DpxBDD5d.js.map → hx-progress-ring-CtVnNRQx.js.map} +1 -1
  484. package/dist/shared/hx-prose-Ml_L2zje.js.map +1 -1
  485. package/dist/shared/{hx-radio-BywgVSEu.js → hx-radio-jgeW92SV.js} +28 -27
  486. package/dist/shared/hx-radio-jgeW92SV.js.map +1 -0
  487. package/dist/shared/{hx-rating-CUWBQ0fZ.js → hx-rating-g_iy-DW_.js} +92 -96
  488. package/dist/shared/hx-rating-g_iy-DW_.js.map +1 -0
  489. package/dist/shared/{hx-select-BwDwxk-M.js → hx-select-4-nHL0vd.js} +73 -61
  490. package/dist/shared/hx-select-4-nHL0vd.js.map +1 -0
  491. package/dist/shared/hx-skeleton-BHvALyd7.js.map +1 -1
  492. package/dist/shared/{hx-slider-D_0EKJyk.js → hx-slider-7Q-e0_pc.js} +27 -22
  493. package/dist/shared/hx-slider-7Q-e0_pc.js.map +1 -0
  494. package/dist/shared/{hx-spinner-DMn4SChS.js → hx-spinner-DEgrKsUo.js} +3 -2
  495. package/dist/shared/hx-spinner-DEgrKsUo.js.map +1 -0
  496. package/dist/shared/{hx-split-button-CypgLXw1.js → hx-split-button-BA7P_ly5.js} +40 -31
  497. package/dist/shared/hx-split-button-BA7P_ly5.js.map +1 -0
  498. package/dist/shared/{hx-split-panel-BPMWKPGu.js → hx-split-panel-Bss54UN8.js} +28 -28
  499. package/dist/shared/hx-split-panel-Bss54UN8.js.map +1 -0
  500. package/dist/shared/{hx-stat-CHntLHJM.js → hx-stat-CmkCUI8v.js} +40 -32
  501. package/dist/shared/{hx-stat-CHntLHJM.js.map → hx-stat-CmkCUI8v.js.map} +1 -1
  502. package/dist/shared/{hx-status-indicator-C1BwEvUw.js → hx-status-indicator-4ClvA5mU.js} +19 -19
  503. package/dist/shared/hx-status-indicator-4ClvA5mU.js.map +1 -0
  504. package/dist/shared/{hx-step-BIVWSPxd.js → hx-step-DlANlr2A.js} +31 -71
  505. package/dist/shared/hx-step-DlANlr2A.js.map +1 -0
  506. package/dist/shared/{hx-structured-list-CMWllxGg.js → hx-structured-list-Db9rwLI_.js} +26 -23
  507. package/dist/shared/hx-structured-list-Db9rwLI_.js.map +1 -0
  508. package/dist/shared/hx-style-scope-BroUu83L.js +125 -0
  509. package/dist/shared/hx-style-scope-BroUu83L.js.map +1 -0
  510. package/dist/shared/{hx-switch-BgX8kuWt.js → hx-switch-C0Lp5RGy.js} +8 -5
  511. package/dist/shared/hx-switch-C0Lp5RGy.js.map +1 -0
  512. package/dist/shared/{hx-tab-panel-DhOq67jj.js → hx-tab-panel-GGjk6Qg4.js} +129 -118
  513. package/dist/shared/hx-tab-panel-GGjk6Qg4.js.map +1 -0
  514. package/dist/shared/{hx-tag-CzOTDcXI.js → hx-tag-K5fCjfqQ.js} +15 -14
  515. package/dist/shared/hx-tag-K5fCjfqQ.js.map +1 -0
  516. package/dist/shared/{hx-td-h6oeW6YC.js → hx-td-DZuILY3s.js} +43 -40
  517. package/dist/shared/hx-td-DZuILY3s.js.map +1 -0
  518. package/dist/shared/{hx-text-DTXjiviE.js → hx-text-DoEVOf47.js} +29 -29
  519. package/dist/shared/hx-text-DoEVOf47.js.map +1 -0
  520. package/dist/shared/hx-text-input-DTKWPVdy.js +576 -0
  521. package/dist/shared/hx-text-input-DTKWPVdy.js.map +1 -0
  522. package/dist/shared/{hx-textarea-BgX7rxyo.js → hx-textarea-BkSiU8oM.js} +15 -15
  523. package/dist/shared/hx-textarea-BkSiU8oM.js.map +1 -0
  524. package/dist/shared/hx-theme-Aag8QJvT.js +299 -0
  525. package/dist/shared/hx-theme-Aag8QJvT.js.map +1 -0
  526. package/dist/shared/{hx-time-picker-DmLu7WUC.js → hx-time-picker-BpCRsh_z.js} +54 -53
  527. package/dist/shared/hx-time-picker-BpCRsh_z.js.map +1 -0
  528. package/dist/shared/{hx-toggle-button-D1jpDvSA.js → hx-toggle-button-CPFqs3eQ.js} +8 -5
  529. package/dist/shared/hx-toggle-button-CPFqs3eQ.js.map +1 -0
  530. package/dist/shared/{hx-tooltip-kh7QFPKu.js → hx-tooltip-CrO4vzeX.js} +15 -10
  531. package/dist/shared/hx-tooltip-CrO4vzeX.js.map +1 -0
  532. package/dist/shared/{hx-tree-item-BP6UF_H1.js → hx-tree-item-DTDIBRrI.js} +122 -89
  533. package/dist/shared/hx-tree-item-DTDIBRrI.js.map +1 -0
  534. package/dist/shared/id-counter-JhvVCnjh.js +143 -0
  535. package/dist/shared/id-counter-JhvVCnjh.js.map +1 -0
  536. package/dist/shared/{toast-factory-DTy-qN8r.js → toast-factory-f184Gi70.js} +57 -45
  537. package/dist/shared/toast-factory-f184Gi70.js.map +1 -0
  538. package/dist/utilities/adoptedStylesheetRegistry.d.ts +47 -0
  539. package/dist/utilities/adoptedStylesheetRegistry.d.ts.map +1 -0
  540. package/dist/utilities/generateScopedSelectors.d.ts +30 -0
  541. package/dist/utilities/generateScopedSelectors.d.ts.map +1 -0
  542. package/dist/utilities/injectLightStyles.d.ts +37 -0
  543. package/dist/utilities/injectLightStyles.d.ts.map +1 -0
  544. package/dist/utilities/lightStyleRegistry.d.ts +41 -0
  545. package/dist/utilities/lightStyleRegistry.d.ts.map +1 -0
  546. package/dist/utilities/sheetManager.d.ts +62 -0
  547. package/dist/utilities/sheetManager.d.ts.map +1 -0
  548. package/dist/utils/contrast-checker.d.ts +86 -0
  549. package/dist/utils/contrast-checker.d.ts.map +1 -0
  550. package/dist/utils/token-merger.d.ts +24 -0
  551. package/dist/utils/token-merger.d.ts.map +1 -0
  552. package/fouc.css +37 -0
  553. package/package.json +25 -5
  554. package/dist/shared/hx-accordion-D1kFhdeQ.js.map +0 -1
  555. package/dist/shared/hx-alert-K5F8KeqI.js.map +0 -1
  556. package/dist/shared/hx-avatar-Cun-O99h.js.map +0 -1
  557. package/dist/shared/hx-badge-CsFd2xtw.js.map +0 -1
  558. package/dist/shared/hx-banner-BTV-X2xF.js.map +0 -1
  559. package/dist/shared/hx-breadcrumb-item-4IwaLgaO.js.map +0 -1
  560. package/dist/shared/hx-button-7k-KeCYU.js.map +0 -1
  561. package/dist/shared/hx-button-group-CWjWv-wS.js.map +0 -1
  562. package/dist/shared/hx-card-0hT3G5hi.js.map +0 -1
  563. package/dist/shared/hx-carousel-item-DgeYyYZJ.js.map +0 -1
  564. package/dist/shared/hx-checkbox-BvjO-O41.js.map +0 -1
  565. package/dist/shared/hx-checkbox-group-Z5VvWzcj.js.map +0 -1
  566. package/dist/shared/hx-code-snippet-DqzPkH4K.js.map +0 -1
  567. package/dist/shared/hx-color-picker-Da8z6AlQ.js.map +0 -1
  568. package/dist/shared/hx-combobox-CivfelTS.js.map +0 -1
  569. package/dist/shared/hx-container-DLUKnTi9.js.map +0 -1
  570. package/dist/shared/hx-copy-button--0dymSvw.js.map +0 -1
  571. package/dist/shared/hx-counter-Duf00H7p.js +0 -147
  572. package/dist/shared/hx-counter-Duf00H7p.js.map +0 -1
  573. package/dist/shared/hx-data-table-DujB9hSE.js.map +0 -1
  574. package/dist/shared/hx-date-picker-C8d2HtRV.js.map +0 -1
  575. package/dist/shared/hx-dialog-DkUSnVgw.js.map +0 -1
  576. package/dist/shared/hx-divider-DNNs4e8q.js.map +0 -1
  577. package/dist/shared/hx-drawer-CJcRZcns.js.map +0 -1
  578. package/dist/shared/hx-dropdown-Bo0KTM1A.js.map +0 -1
  579. package/dist/shared/hx-field-3MmzJ4kZ.js.map +0 -1
  580. package/dist/shared/hx-field-label-Bg-EWvqF.js.map +0 -1
  581. package/dist/shared/hx-file-upload-ByjAgfNy.js.map +0 -1
  582. package/dist/shared/hx-format-date-BdnWV2kX.js.map +0 -1
  583. package/dist/shared/hx-grid-gEjuF0cR.js.map +0 -1
  584. package/dist/shared/hx-icon-CP6OnLoM.js.map +0 -1
  585. package/dist/shared/hx-image-C6pGiI6c.js.map +0 -1
  586. package/dist/shared/hx-link-Tmk_YPvW.js.map +0 -1
  587. package/dist/shared/hx-meter-uXkTZq-W.js.map +0 -1
  588. package/dist/shared/hx-nav-3JsN2Oak.js.map +0 -1
  589. package/dist/shared/hx-nav-item-D3EJatzc.js.map +0 -1
  590. package/dist/shared/hx-number-input-CAAibZ8X.js.map +0 -1
  591. package/dist/shared/hx-overflow-menu-2kgOJ_ht.js.map +0 -1
  592. package/dist/shared/hx-pagination-DBs-vmSv.js.map +0 -1
  593. package/dist/shared/hx-popover-DxE67miP.js.map +0 -1
  594. package/dist/shared/hx-popup-Dg6n_PbY.js.map +0 -1
  595. package/dist/shared/hx-progress-bar-Dm_EHyng.js.map +0 -1
  596. package/dist/shared/hx-radio-BywgVSEu.js.map +0 -1
  597. package/dist/shared/hx-rating-CUWBQ0fZ.js.map +0 -1
  598. package/dist/shared/hx-select-BwDwxk-M.js.map +0 -1
  599. package/dist/shared/hx-slider-D_0EKJyk.js.map +0 -1
  600. package/dist/shared/hx-spinner-DMn4SChS.js.map +0 -1
  601. package/dist/shared/hx-split-button-CypgLXw1.js.map +0 -1
  602. package/dist/shared/hx-split-panel-BPMWKPGu.js.map +0 -1
  603. package/dist/shared/hx-status-indicator-C1BwEvUw.js.map +0 -1
  604. package/dist/shared/hx-step-BIVWSPxd.js.map +0 -1
  605. package/dist/shared/hx-structured-list-CMWllxGg.js.map +0 -1
  606. package/dist/shared/hx-switch-BgX8kuWt.js.map +0 -1
  607. package/dist/shared/hx-tab-panel-DhOq67jj.js.map +0 -1
  608. package/dist/shared/hx-tag-CzOTDcXI.js.map +0 -1
  609. package/dist/shared/hx-td-h6oeW6YC.js.map +0 -1
  610. package/dist/shared/hx-text-DTXjiviE.js.map +0 -1
  611. package/dist/shared/hx-text-input-CqEdDHMU.js +0 -461
  612. package/dist/shared/hx-text-input-CqEdDHMU.js.map +0 -1
  613. package/dist/shared/hx-textarea-BgX7rxyo.js.map +0 -1
  614. package/dist/shared/hx-theme-6GDoUG8j.js +0 -176
  615. package/dist/shared/hx-theme-6GDoUG8j.js.map +0 -1
  616. package/dist/shared/hx-time-picker-DmLu7WUC.js.map +0 -1
  617. package/dist/shared/hx-toggle-button-D1jpDvSA.js.map +0 -1
  618. package/dist/shared/hx-tooltip-kh7QFPKu.js.map +0 -1
  619. package/dist/shared/hx-tree-item-BP6UF_H1.js.map +0 -1
  620. package/dist/shared/toast-factory-DTy-qN8r.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hx-nav-D377Ngz4.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 * 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 '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 // ─── Lifecycle ───\n\n override connectedCallback(): void {\n super.connectedCallback();\n if (typeof document !== 'undefined') {\n document.addEventListener('click', this._boundOutsideClick);\n }\n }\n\n override disconnectedCallback(): void {\n super.disconnectedCallback();\n document.removeEventListener('click', this._boundOutsideClick);\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\n class=\"nav__submenu\"\n role=\"list\"\n aria-label=\"${parentLabel} submenu\"\n ?hidden=${!isExpanded}\n >\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\n const linkClasses = {\n nav__link: true,\n 'nav__link--active': !!item.current,\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 @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","wasExpanded","parentIndex","subItems","arr","focused","currentIdx","parentLinks","html","svg","children","parentLabel","isExpanded","child","classMap","nothing","hasChildren","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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"}
@@ -1,7 +1,7 @@
1
- import { css as b, LitElement as w, html as d, nothing as l } from "lit";
2
- import { property as v, customElement as y, state as k } from "lit/decorators.js";
3
- import { tokenStyles as C } from "@helixui/tokens/lit";
4
- const $ = b`
1
+ import { css as _, LitElement as u, html as d, nothing as l } from "lit";
2
+ import { property as v, customElement as b, state as w } from "lit/decorators.js";
3
+ import { tokenStyles as y } from "@helixui/tokens/lit";
4
+ const k = _`
5
5
  :host {
6
6
  display: block;
7
7
  height: 100%;
@@ -113,7 +113,8 @@ const $ = b`
113
113
  }
114
114
 
115
115
  .side-nav__toggle:focus-visible {
116
- outline: var(--hx-focus-ring-width, 2px) solid var(--hx-focus-ring-color, #2563eb);
116
+ outline: var(--hx-focus-ring-width, 2px) solid
117
+ var(--hx-focus-ring-color, var(--hx-color-primary-400, #60a5fa));
117
118
  outline-offset: var(--hx-focus-ring-offset, 2px);
118
119
  }
119
120
 
@@ -143,12 +144,12 @@ const $ = b`
143
144
  }
144
145
  }
145
146
  `;
146
- var E = Object.defineProperty, S = Object.getOwnPropertyDescriptor, f = (e, a, t, o) => {
147
- for (var r = o > 1 ? void 0 : o ? S(a, t) : a, i = e.length - 1, n; i >= 0; i--)
147
+ var C = Object.defineProperty, $ = Object.getOwnPropertyDescriptor, x = (e, a, t, o) => {
148
+ for (var r = o > 1 ? void 0 : o ? $(a, t) : a, i = e.length - 1, n; i >= 0; i--)
148
149
  (n = e[i]) && (r = (o ? n(a, t, r) : n(r)) || r);
149
- return o && r && E(a, t, r), r;
150
+ return o && r && C(a, t, r), r;
150
151
  };
151
- let p = class extends w {
152
+ let p = class extends u {
152
153
  constructor() {
153
154
  super(...arguments), this.collapsed = !1, this.label = "Main Navigation";
154
155
  }
@@ -188,9 +189,9 @@ let p = class extends w {
188
189
  */
189
190
  /** @internal */
190
191
  _handleKeydown(e) {
191
- var g, _, u;
192
+ var f, g;
192
193
  if (e.key !== "ArrowDown" && e.key !== "ArrowUp" && e.key !== "Home" && e.key !== "End") return;
193
- const a = (g = this.shadowRoot) == null ? void 0 : g.querySelector("slot:not([name])");
194
+ const a = (f = this.shadowRoot) == null ? void 0 : f.querySelector("slot:not([name])");
194
195
  if (!a) return;
195
196
  const t = a.assignedElements({ flatten: !0 }).filter(
196
197
  (h) => h.tagName.toLowerCase() === "hx-nav-item" && !h.hasAttribute("disabled")
@@ -200,7 +201,7 @@ let p = class extends w {
200
201
  let r = -1;
201
202
  for (let h = 0; h < t.length; h++) {
202
203
  const m = t[h];
203
- if (m && (m === o || m.contains(o) || ((_ = m.shadowRoot) == null ? void 0 : _.contains(o)) === !0)) {
204
+ if (m && (m === o || m.contains(o) || ((g = m.shadowRoot) == null ? void 0 : g.contains(o)) === !0)) {
204
205
  r = h;
205
206
  break;
206
207
  }
@@ -209,9 +210,7 @@ let p = class extends w {
209
210
  let i;
210
211
  e.key === "ArrowDown" ? i = r < t.length - 1 ? r + 1 : 0 : e.key === "ArrowUp" ? i = r > 0 ? r - 1 : t.length - 1 : e.key === "Home" ? i = 0 : i = t.length - 1;
211
212
  const n = t[i];
212
- if (!n) return;
213
- const x = (u = n.shadowRoot) == null ? void 0 : u.querySelector('[part="link"]');
214
- x == null || x.focus();
213
+ n && n.focus();
215
214
  }
216
215
  // ─── Event Handling ───
217
216
  /** @internal */
@@ -266,17 +265,17 @@ let p = class extends w {
266
265
  `;
267
266
  }
268
267
  };
269
- p.styles = [C, $];
270
- f([
268
+ p.styles = [y, k];
269
+ x([
271
270
  v({ type: Boolean, reflect: !0 })
272
271
  ], p.prototype, "collapsed", 2);
273
- f([
272
+ x([
274
273
  v({ type: String })
275
274
  ], p.prototype, "label", 2);
276
- p = f([
277
- y("hx-side-nav")
275
+ p = x([
276
+ b("hx-side-nav")
278
277
  ], p);
279
- const T = b`
278
+ const E = _`
280
279
  :host {
281
280
  display: block;
282
281
  background-color: var(--hx-nav-item-host-bg, var(--hx-color-neutral-900, #111827));
@@ -319,7 +318,7 @@ const T = b`
319
318
  border: none;
320
319
  background: transparent;
321
320
  width: calc(100% - var(--hx-space-4, 1rem));
322
- text-align: left;
321
+ text-align: start;
323
322
  }
324
323
 
325
324
  /* Link variant */
@@ -345,7 +344,8 @@ const T = b`
345
344
  }
346
345
 
347
346
  .nav-item__link:focus-visible {
348
- outline: var(--hx-focus-ring-width, 2px) solid var(--hx-focus-ring-color, #2563eb);
347
+ outline: var(--hx-focus-ring-width, 2px) solid
348
+ var(--hx-focus-ring-color, var(--hx-color-primary-400, #60a5fa));
349
349
  outline-offset: var(--hx-focus-ring-offset, 2px);
350
350
  }
351
351
 
@@ -363,7 +363,7 @@ const T = b`
363
363
  /* ─── Disabled State ─── */
364
364
 
365
365
  :host([disabled]) .nav-item__link {
366
- opacity: 0.4;
366
+ opacity: var(--hx-opacity-disabled, 0.5);
367
367
  pointer-events: none;
368
368
  cursor: not-allowed;
369
369
  }
@@ -392,7 +392,7 @@ const T = b`
392
392
  /* ─── Badge ─── */
393
393
 
394
394
  .nav-item__badge {
395
- margin-left: auto;
395
+ margin-inline-start: auto;
396
396
  flex-shrink: 0;
397
397
  }
398
398
 
@@ -403,7 +403,7 @@ const T = b`
403
403
  align-items: center;
404
404
  justify-content: center;
405
405
  flex-shrink: 0;
406
- margin-left: auto;
406
+ margin-inline-start: auto;
407
407
  width: var(--hx-space-5, 1.25rem);
408
408
  height: var(--hx-space-5, 1.25rem);
409
409
  transition: transform var(--hx-transition-normal, 300ms) ease;
@@ -437,7 +437,7 @@ const T = b`
437
437
  min-height: 0;
438
438
  display: flex;
439
439
  flex-direction: column;
440
- padding-left: var(--hx-space-6, 1.5rem);
440
+ padding-inline-start: var(--hx-space-6, 1.5rem);
441
441
  }
442
442
 
443
443
  /* ─── Tooltip (collapsed mode) ─── */
@@ -456,7 +456,7 @@ const T = b`
456
456
  pointer-events: none;
457
457
  opacity: 0;
458
458
  transition: opacity var(--hx-transition-fast, 150ms) ease;
459
- z-index: var(--hx-z-index-tooltip, 100);
459
+ z-index: var(--hx-z-index-tooltip, 1600);
460
460
  box-shadow: var(--hx-shadow-md, 0 2px 8px rgb(0 0 0 / 0.2));
461
461
  }
462
462
 
@@ -508,12 +508,12 @@ const T = b`
508
508
  }
509
509
  }
510
510
  `;
511
- var A = Object.defineProperty, D = Object.getOwnPropertyDescriptor, c = (e, a, t, o) => {
512
- for (var r = o > 1 ? void 0 : o ? D(a, t) : a, i = e.length - 1, n; i >= 0; i--)
511
+ var S = Object.defineProperty, T = Object.getOwnPropertyDescriptor, c = (e, a, t, o) => {
512
+ for (var r = o > 1 ? void 0 : o ? T(a, t) : a, i = e.length - 1, n; i >= 0; i--)
513
513
  (n = e[i]) && (r = (o ? n(a, t, r) : n(r)) || r);
514
- return o && r && A(a, t, r), r;
514
+ return o && r && S(a, t, r), r;
515
515
  };
516
- let s = class extends w {
516
+ let s = class extends u {
517
517
  constructor() {
518
518
  super(...arguments), this.href = "", this.active = !1, this.expanded = !1, this.disabled = !1, this._hasChildren = !1, this._isCollapsed = !1;
519
519
  }
@@ -524,6 +524,18 @@ let s = class extends w {
524
524
  attributeChangedCallback(e, a, t) {
525
525
  super.attributeChangedCallback(e, a, t), e === "data-collapsed" && (this._isCollapsed = t !== null);
526
526
  }
527
+ // ─── Public API ───
528
+ /**
529
+ * Delegates focus to the internal link or button element (part="link").
530
+ * Allows parent components to focus nav items without piercing the Shadow DOM.
531
+ * WCAG 2.1.1: keyboard navigation must not cross shadow boundaries via
532
+ * direct shadowRoot queries.
533
+ */
534
+ focus(e) {
535
+ var t;
536
+ const a = (t = this.shadowRoot) == null ? void 0 : t.querySelector('[part="link"]');
537
+ a ? a.focus(e) : super.focus(e);
538
+ }
527
539
  // ─── Slot Change Handler ───
528
540
  /** @internal */
529
541
  _onChildrenSlotChange(e) {
@@ -599,7 +611,7 @@ let s = class extends w {
599
611
  `;
600
612
  }
601
613
  };
602
- s.styles = [C, T];
614
+ s.styles = [y, E];
603
615
  c([
604
616
  v({ type: String })
605
617
  ], s.prototype, "href", 2);
@@ -613,16 +625,16 @@ c([
613
625
  v({ type: Boolean, reflect: !0 })
614
626
  ], s.prototype, "disabled", 2);
615
627
  c([
616
- k()
628
+ w()
617
629
  ], s.prototype, "_hasChildren", 2);
618
630
  c([
619
- k()
631
+ w()
620
632
  ], s.prototype, "_isCollapsed", 2);
621
633
  s = c([
622
- y("hx-nav-item")
634
+ b("hx-nav-item")
623
635
  ], s);
624
636
  export {
625
637
  s as H,
626
638
  p as a
627
639
  };
628
- //# sourceMappingURL=hx-nav-item-D3EJatzc.js.map
640
+ //# sourceMappingURL=hx-nav-item-ByU2N921.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hx-nav-item-ByU2N921.js","sources":["../../src/components/hx-side-nav/hx-side-nav.styles.ts","../../src/components/hx-side-nav/hx-side-nav.ts","../../src/components/hx-side-nav/hx-nav-item.styles.ts","../../src/components/hx-side-nav/hx-nav-item.ts"],"sourcesContent":["import { css } from 'lit';\n\nexport const helixSideNavStyles = css`\n :host {\n display: block;\n height: 100%;\n }\n\n * {\n box-sizing: border-box;\n }\n\n /* ─── Nav Container ─── */\n\n .side-nav {\n display: flex;\n flex-direction: column;\n height: 100%;\n width: var(--hx-side-nav-width, 16rem);\n background-color: var(--hx-side-nav-bg, var(--hx-color-neutral-900, #111827));\n color: var(--hx-side-nav-color, var(--hx-color-neutral-100, #f3f4f6));\n transition: width var(--hx-transition-normal, 300ms) ease;\n overflow: hidden;\n border-inline-end: var(--hx-border-width-thin, 1px) solid\n var(--hx-side-nav-border-color, var(--hx-color-neutral-700, #374151));\n }\n\n /* ─── Collapsed State ─── */\n\n :host([collapsed]) .side-nav {\n width: var(--hx-side-nav-collapsed-width, 3.5rem);\n }\n\n /* ─── Header ─── */\n\n .side-nav__header {\n display: flex;\n align-items: center;\n padding: var(--hx-side-nav-header-padding, var(--hx-space-4, 1rem));\n flex-shrink: 0;\n min-height: var(--hx-space-14, 3.5rem);\n border-bottom: var(--hx-border-width-thin, 1px) solid\n var(--hx-side-nav-border-color, var(--hx-color-neutral-700, #374151));\n overflow: hidden;\n }\n\n :host([collapsed]) .side-nav__header {\n justify-content: center;\n padding: var(--hx-space-3, 0.75rem);\n }\n\n /* ─── Body ─── */\n\n .side-nav__body {\n flex: 1;\n overflow-y: auto;\n overflow-x: hidden;\n padding: var(--hx-space-2, 0.5rem) 0;\n }\n\n /* ─── Footer ─── */\n\n .side-nav__footer {\n display: flex;\n align-items: center;\n padding: var(--hx-side-nav-footer-padding, var(--hx-space-4, 1rem));\n flex-shrink: 0;\n min-height: var(--hx-space-14, 3.5rem);\n border-top: var(--hx-border-width-thin, 1px) solid\n var(--hx-side-nav-border-color, var(--hx-color-neutral-700, #374151));\n overflow: hidden;\n }\n\n :host([collapsed]) .side-nav__footer {\n justify-content: center;\n padding: var(--hx-space-3, 0.75rem);\n }\n\n /* ─── Toggle Button ─── */\n\n .side-nav__toggle {\n display: flex;\n align-items: center;\n justify-content: center;\n width: var(--hx-space-8, 2rem);\n height: var(--hx-space-8, 2rem);\n margin-inline-start: auto;\n flex-shrink: 0;\n padding: 0;\n border: none;\n border-radius: var(--hx-border-radius-sm, 0.25rem);\n background: transparent;\n color: var(--hx-side-nav-toggle-color, var(--hx-color-neutral-400, #9ca3af));\n cursor: pointer;\n transition:\n background-color var(--hx-transition-fast, 150ms) ease,\n color var(--hx-transition-fast, 150ms) ease;\n }\n\n .side-nav__toggle:hover {\n background-color: var(\n --hx-overlay-white-10,\n rgba(255, 255, 255, 0.1)\n ); /* fallback for browsers without color-mix() */\n color: var(--hx-color-neutral-100, #f3f4f6);\n }\n\n @supports (color: color-mix(in srgb, red 50%, blue)) {\n .side-nav__toggle:hover {\n background-color: color-mix(in srgb, currentColor 15%, transparent);\n }\n }\n\n .side-nav__toggle:focus-visible {\n outline: var(--hx-focus-ring-width, 2px) solid\n var(--hx-focus-ring-color, var(--hx-color-primary-400, #60a5fa));\n outline-offset: var(--hx-focus-ring-offset, 2px);\n }\n\n .side-nav__toggle svg {\n width: var(--hx-space-5, 1.25rem);\n height: var(--hx-space-5, 1.25rem);\n fill: currentColor;\n flex-shrink: 0;\n transition: transform var(--hx-transition-normal, 300ms) ease;\n }\n\n :host([collapsed]) .side-nav__toggle svg {\n transform: rotate(180deg);\n }\n\n @media (prefers-reduced-motion: reduce) {\n .side-nav {\n transition: none;\n }\n\n .side-nav__toggle {\n transition: none;\n }\n\n .side-nav__toggle svg {\n transition: none;\n }\n }\n`;\n","import { LitElement, html, type PropertyValues } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport { tokenStyles } from '@helixui/tokens/lit';\nimport { helixSideNavStyles } from './hx-side-nav.styles.js';\n\n/**\n * A collapsible left-side navigation panel with nested menu item support.\n * Designed for clinical portals, admin dashboards, and department navigation.\n *\n * @summary Collapsible side navigation panel for enterprise healthcare applications.\n *\n * @tag hx-side-nav\n *\n * @slot - Default slot for hx-nav-item children.\n * @slot header - Logo or branding content.\n * @slot footer - User profile or settings content.\n *\n * @fires {CustomEvent<{ collapsed: boolean }>} hx-collapse - Dispatched when the nav collapses to icon-only mode.\n * @fires {CustomEvent<{ collapsed: boolean }>} hx-expand - Dispatched when the nav expands to full width.\n *\n * @csspart nav - The outer nav element.\n * @csspart header - The header section.\n * @csspart body - The scrollable body section.\n * @csspart footer - The footer section.\n * @csspart toggle - The collapse/expand toggle button.\n *\n * @cssprop [--hx-side-nav-width=16rem] - Full expanded width.\n * @cssprop [--hx-side-nav-collapsed-width=3.5rem] - Collapsed icon-only width.\n * @cssprop [--hx-side-nav-bg=var(--hx-color-neutral-900)] - Background color.\n * @cssprop [--hx-side-nav-color=var(--hx-color-neutral-100)] - Text color.\n * @cssprop [--hx-side-nav-border-color=var(--hx-color-neutral-700)] - Border color.\n * @cssprop [--hx-side-nav-header-padding=var(--hx-space-4)] - Header padding.\n * @cssprop [--hx-side-nav-footer-padding=var(--hx-space-4)] - Footer padding.\n * @cssprop [--hx-side-nav-toggle-color=var(--hx-color-neutral-400)] - Toggle button icon color.\n */\n@customElement('hx-side-nav')\nexport class HelixSideNav extends LitElement {\n static override styles = [tokenStyles, helixSideNavStyles];\n\n // ─── Properties ───\n\n /**\n * When true, the nav collapses to show icons only.\n * @attr collapsed\n */\n @property({ type: Boolean, reflect: true })\n collapsed = false;\n\n /**\n * The accessible label for the nav landmark.\n * @attr label\n */\n @property({ type: String })\n label = 'Main Navigation';\n\n // ─── Lifecycle ───\n\n override updated(changedProperties: PropertyValues<this>): void {\n super.updated(changedProperties);\n if (changedProperties.has('collapsed')) {\n this._propagateCollapsedToChildren();\n }\n }\n\n // ─── Collapsed State Propagation ───\n\n /**\n * Propagates the collapsed state to all slotted hx-nav-item children by\n * setting or removing the `data-collapsed` attribute. This allows child\n * items to respond to collapsed mode via their CSS selectors.\n */\n /** @internal */\n private _propagateCollapsedToChildren(): void {\n const slot = this.shadowRoot?.querySelector<HTMLSlotElement>('slot:not([name])');\n if (!slot) return;\n\n const navItems = slot\n .assignedElements({ flatten: true })\n .filter((el) => el.tagName.toLowerCase() === 'hx-nav-item');\n\n for (const item of navItems) {\n if (!(item instanceof HTMLElement)) continue;\n if (this.collapsed) {\n item.setAttribute('data-collapsed', '');\n } else {\n item.removeAttribute('data-collapsed');\n }\n }\n }\n\n /**\n * Handles the default slot's slotchange event so that if items are added\n * after initial render, they immediately receive the correct collapsed state.\n */\n /** @internal */\n private _onDefaultSlotChange(): void {\n this._propagateCollapsedToChildren();\n }\n\n // ─── Keyboard Navigation ───\n\n /**\n * Implements roving tabindex-style ArrowUp/ArrowDown keyboard navigation\n * among direct hx-nav-item children in the body slot. Disabled items are\n * skipped. Focus is applied to the interactive element inside the shadow DOM\n * of each item (anchor or button with part=\"link\").\n */\n /** @internal */\n private _handleKeydown(e: KeyboardEvent): void {\n if (e.key !== 'ArrowDown' && e.key !== 'ArrowUp' && e.key !== 'Home' && e.key !== 'End') return;\n\n const slot = this.shadowRoot?.querySelector<HTMLSlotElement>('slot:not([name])');\n if (!slot) return;\n\n const navItems = slot\n .assignedElements({ flatten: true })\n .filter(\n (el): el is HTMLElement =>\n el.tagName.toLowerCase() === 'hx-nav-item' && !el.hasAttribute('disabled'),\n );\n\n if (navItems.length === 0) return;\n\n // Find which item currently contains focus\n const activeEl = document.activeElement;\n let currentIndex = -1;\n for (let i = 0; i < navItems.length; i++) {\n const item = navItems[i];\n if (!item) continue;\n if (\n item === activeEl ||\n item.contains(activeEl) ||\n item.shadowRoot?.contains(activeEl) === true\n ) {\n currentIndex = i;\n break;\n }\n }\n\n e.preventDefault();\n\n let nextIndex: number;\n if (e.key === 'ArrowDown') {\n nextIndex = currentIndex < navItems.length - 1 ? currentIndex + 1 : 0;\n } else if (e.key === 'ArrowUp') {\n nextIndex = currentIndex > 0 ? currentIndex - 1 : navItems.length - 1;\n } else if (e.key === 'Home') {\n nextIndex = 0;\n } else {\n nextIndex = navItems.length - 1;\n }\n\n const targetItem = navItems[nextIndex];\n if (!targetItem) return;\n // WCAG 2.1.1: call the public focus() method on the nav item rather than\n // piercing its Shadow DOM directly. hx-nav-item.focus() delegates to the\n // internal [part=\"link\"] element, preserving shadow encapsulation.\n targetItem.focus();\n }\n\n // ─── Event Handling ───\n\n /** @internal */\n private _handleToggle(): void {\n this.collapsed = !this.collapsed;\n\n if (this.collapsed) {\n /**\n * Dispatched when the nav collapses to icon-only mode.\n * @event hx-collapse\n */\n this.dispatchEvent(\n new CustomEvent<{ collapsed: boolean }>('hx-collapse', {\n bubbles: true,\n composed: true,\n detail: { collapsed: true },\n }),\n );\n } else {\n /**\n * Dispatched when the nav expands to full width.\n * @event hx-expand\n */\n this.dispatchEvent(\n new CustomEvent<{ collapsed: boolean }>('hx-expand', {\n bubbles: true,\n composed: true,\n detail: { collapsed: false },\n }),\n );\n }\n }\n\n // ─── Render ───\n\n /** @internal */\n private _renderToggleIcon() {\n return html`<svg viewBox=\"0 0 20 20\" aria-hidden=\"true\">\n <path\n d=\"M12.79 5.23a.75.75 0 01-.02 1.06L8.832 10l3.938 3.71a.75.75 0 11-1.04 1.08l-4.5-4.25a.75.75 0 010-1.08l4.5-4.25a.75.75 0 011.06.02z\"\n />\n </svg>`;\n }\n\n override render() {\n return html`\n <nav part=\"nav\" class=\"side-nav\" aria-label=${this.label}>\n <div part=\"header\" class=\"side-nav__header\">\n <slot name=\"header\"></slot>\n <button\n part=\"toggle\"\n class=\"side-nav__toggle\"\n aria-label=${this.collapsed ? 'Expand navigation' : 'Collapse navigation'}\n aria-expanded=${!this.collapsed}\n @click=${this._handleToggle}\n >\n ${this._renderToggleIcon()}\n </button>\n </div>\n\n <div part=\"body\" class=\"side-nav__body\" id=\"side-nav-body\" @keydown=${this._handleKeydown}>\n <slot @slotchange=${this._onDefaultSlotChange}></slot>\n </div>\n\n <div part=\"footer\" class=\"side-nav__footer\">\n <slot name=\"footer\"></slot>\n </div>\n </nav>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'hx-side-nav': HelixSideNav;\n }\n}\n\nexport type { HelixSideNav as HxSideNav };\n","import { css } from 'lit';\n\nexport const helixNavItemStyles = css`\n :host {\n display: block;\n background-color: var(--hx-nav-item-host-bg, var(--hx-color-neutral-900, #111827));\n }\n\n * {\n box-sizing: border-box;\n }\n\n /* ─── Nav Item ─── */\n\n .nav-item {\n display: flex;\n flex-direction: column;\n }\n\n /* ─── Link / Button ─── */\n\n .nav-item__link {\n display: flex;\n align-items: center;\n gap: var(--hx-space-3, 0.75rem);\n padding: var(--hx-nav-item-padding, var(--hx-space-2, 0.5rem) var(--hx-space-4, 1rem));\n min-height: var(--hx-space-10, 2.5rem);\n text-decoration: none;\n color: var(--hx-nav-item-color, var(--hx-color-neutral-300, #d1d5db));\n border-radius: var(--hx-border-radius-sm, 0.25rem);\n margin: 0 var(--hx-space-2, 0.5rem);\n transition:\n background-color var(--hx-transition-fast, 150ms) ease,\n color var(--hx-transition-fast, 150ms) ease;\n white-space: nowrap;\n overflow: hidden;\n cursor: pointer;\n font-family: var(--hx-font-family-sans, sans-serif);\n font-size: var(--hx-font-size-sm, 0.875rem);\n font-weight: var(--hx-font-weight-medium, 500);\n line-height: var(--hx-line-height-normal, 1.5);\n position: relative;\n border: none;\n background: transparent;\n width: calc(100% - var(--hx-space-4, 1rem));\n text-align: start;\n }\n\n /* Link variant */\n a.nav-item__link {\n display: flex;\n }\n\n .nav-item__link:hover {\n background-color: var(\n --hx-nav-item-hover-bg,\n var(--hx-overlay-white-8, rgba(255, 255, 255, 0.08))\n ); /* fallback for browsers without color-mix() */\n color: var(--hx-nav-item-hover-color, var(--hx-color-neutral-100, #f3f4f6));\n }\n\n @supports (color: color-mix(in srgb, red 50%, blue)) {\n .nav-item__link:hover {\n background-color: var(\n --hx-nav-item-hover-bg,\n color-mix(in srgb, currentColor 10%, transparent)\n );\n }\n }\n\n .nav-item__link:focus-visible {\n outline: var(--hx-focus-ring-width, 2px) solid\n var(--hx-focus-ring-color, var(--hx-color-primary-400, #60a5fa));\n outline-offset: var(--hx-focus-ring-offset, 2px);\n }\n\n /* ─── Active State ─── */\n\n :host([active]) .nav-item__link {\n background-color: var(--hx-nav-item-active-bg, var(--hx-color-primary-600, #2563eb));\n color: var(--hx-nav-item-active-color, var(--hx-color-neutral-50, #f9fafb));\n }\n\n :host([active]) .nav-item__link:hover {\n background-color: var(--hx-nav-item-active-hover-bg, var(--hx-color-primary-700, #1d4ed8));\n }\n\n /* ─── Disabled State ─── */\n\n :host([disabled]) .nav-item__link {\n opacity: var(--hx-opacity-disabled, 0.5);\n pointer-events: none;\n cursor: not-allowed;\n }\n\n /* ─── Icon ─── */\n\n .nav-item__icon {\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n width: var(--hx-space-5, 1.25rem);\n height: var(--hx-space-5, 1.25rem);\n }\n\n /* ─── Label ─── */\n\n .nav-item__label {\n flex: 1;\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n transition: opacity var(--hx-transition-fast, 150ms) ease;\n }\n\n /* ─── Badge ─── */\n\n .nav-item__badge {\n margin-inline-start: auto;\n flex-shrink: 0;\n }\n\n /* ─── Expand Arrow ─── */\n\n .nav-item__arrow {\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n margin-inline-start: auto;\n width: var(--hx-space-5, 1.25rem);\n height: var(--hx-space-5, 1.25rem);\n transition: transform var(--hx-transition-normal, 300ms) ease;\n }\n\n .nav-item__arrow svg {\n width: var(--hx-space-4, 1rem);\n height: var(--hx-space-4, 1rem);\n fill: currentColor;\n }\n\n :host([expanded]) .nav-item__arrow {\n transform: rotate(90deg);\n }\n\n /* ─── Children (sub-nav) ─── */\n\n .nav-item__children {\n display: grid;\n grid-template-rows: 0fr;\n transition: grid-template-rows var(--hx-transition-normal, 300ms ease);\n overflow: hidden;\n }\n\n :host([expanded]) .nav-item__children {\n grid-template-rows: 1fr;\n }\n\n .nav-item__children-inner {\n overflow: hidden;\n min-height: 0;\n display: flex;\n flex-direction: column;\n padding-inline-start: var(--hx-space-6, 1.5rem);\n }\n\n /* ─── Tooltip (collapsed mode) ─── */\n\n .nav-item__tooltip {\n position: absolute;\n left: calc(100% + var(--hx-space-2, 0.5rem));\n top: 50%;\n transform: translateY(-50%);\n background-color: var(--hx-color-neutral-800, #1f2937);\n color: var(--hx-color-neutral-100, #f3f4f6);\n padding: var(--hx-space-1, 0.25rem) var(--hx-space-2, 0.5rem);\n border-radius: var(--hx-border-radius-sm, 0.25rem);\n font-size: var(--hx-font-size-xs, 0.75rem);\n white-space: nowrap;\n pointer-events: none;\n opacity: 0;\n transition: opacity var(--hx-transition-fast, 150ms) ease;\n z-index: var(--hx-z-index-tooltip, 1600);\n box-shadow: var(--hx-shadow-md, 0 2px 8px rgb(0 0 0 / 0.2));\n }\n\n :host([data-collapsed]) .nav-item__link:hover .nav-item__tooltip,\n :host([data-collapsed]) .nav-item__link:focus-visible .nav-item__tooltip {\n opacity: 1;\n }\n\n /* ─── Collapsed host state (propagated from parent) ─── */\n\n :host([data-collapsed]) .nav-item__label {\n width: 0;\n overflow: hidden;\n opacity: 0;\n }\n\n :host([data-collapsed]) .nav-item__badge {\n display: none;\n }\n\n :host([data-collapsed]) .nav-item__arrow {\n display: none;\n }\n\n :host([data-collapsed]) .nav-item__children {\n display: none !important;\n }\n\n :host([data-collapsed]) .nav-item__link {\n justify-content: center;\n margin: 0 var(--hx-space-1, 0.25rem);\n width: calc(100% - var(--hx-space-2, 0.5rem));\n padding: var(--hx-space-2, 0.5rem);\n position: relative;\n overflow: visible;\n }\n\n @media (prefers-reduced-motion: reduce) {\n .nav-item__link,\n .nav-item__label,\n .nav-item__arrow,\n .nav-item__children,\n .nav-item__tooltip {\n transition: none;\n }\n\n :host([expanded]) .nav-item__children {\n grid-template-rows: 1fr;\n }\n }\n`;\n","import { LitElement, html, nothing } from 'lit';\nimport { customElement, property, state } from 'lit/decorators.js';\nimport { tokenStyles } from '@helixui/tokens/lit';\nimport { helixNavItemStyles } from './hx-nav-item.styles.js';\n\n/**\n * A navigation item for use inside hx-side-nav.\n * Supports icons, badges, sub-navigation, and active/disabled states.\n *\n * @summary Navigation item for hx-side-nav with support for icons, badges, and nested children.\n *\n * @tag hx-nav-item\n *\n * @slot - Default slot for item label text.\n * @slot icon - Icon to display before the label.\n * @slot badge - Badge content (e.g., notification count).\n * @slot children - Nested hx-nav-item children for sub-navigation.\n *\n * @csspart link - The anchor or button element.\n * @csspart icon - The icon container.\n * @csspart label - The label container.\n * @csspart badge - The badge container.\n * @csspart children - The children container.\n *\n * @cssprop [--hx-nav-item-color=var(--hx-color-neutral-300)] - Item text color.\n * @cssprop [--hx-nav-item-hover-bg] - Item hover background.\n * @cssprop [--hx-nav-item-hover-color=var(--hx-color-neutral-100)] - Item hover text color.\n * @cssprop [--hx-nav-item-active-bg=var(--hx-color-primary-600)] - Active item background.\n * @cssprop [--hx-nav-item-active-color=var(--hx-color-neutral-50)] - Active item text color.\n * @cssprop [--hx-nav-item-padding] - Item padding.\n * @cssprop [--hx-nav-item-host-bg=var(--hx-color-neutral-900)] - Component host background color.\n */\n@customElement('hx-nav-item')\nexport class HelixNavItem extends LitElement {\n static override styles = [tokenStyles, helixNavItemStyles];\n\n // ─── Properties ───\n\n /**\n * The URL this nav item links to.\n * @attr href\n */\n @property({ type: String })\n href = '';\n\n /**\n * Whether this item is the current/active page.\n * @attr active\n */\n @property({ type: Boolean, reflect: true })\n active = false;\n\n /**\n * Whether the sub-navigation is expanded.\n * @attr expanded\n */\n @property({ type: Boolean, reflect: true })\n expanded = false;\n\n /**\n * Whether this nav item is disabled.\n * @attr disabled\n */\n @property({ type: Boolean, reflect: true })\n disabled = false;\n\n // ─── State ───\n\n /** Whether the children slot has assigned nodes. Updated via slotchange. */\n /** @internal */\n @state() private _hasChildren = false;\n\n /** Whether this item is in collapsed mode. Set externally by hx-side-nav via data-collapsed attribute. */\n /** @internal */\n @state() private _isCollapsed = false;\n\n // ─── Attribute Observer ───\n\n static override get observedAttributes(): string[] {\n return [...super.observedAttributes, 'data-collapsed'];\n }\n\n override attributeChangedCallback(name: string, old: string | null, value: string | null): void {\n super.attributeChangedCallback(name, old, value);\n if (name === 'data-collapsed') {\n this._isCollapsed = value !== null;\n }\n }\n\n // ─── Public API ───\n\n /**\n * Delegates focus to the internal link or button element (part=\"link\").\n * Allows parent components to focus nav items without piercing the Shadow DOM.\n * WCAG 2.1.1: keyboard navigation must not cross shadow boundaries via\n * direct shadowRoot queries.\n */\n override focus(options?: FocusOptions): void {\n const inner = this.shadowRoot?.querySelector<HTMLElement>('[part=\"link\"]');\n if (inner) {\n inner.focus(options);\n } else {\n super.focus(options);\n }\n }\n\n // ─── Slot Change Handler ───\n\n /** @internal */\n private _onChildrenSlotChange(e: Event): void {\n const slot = e.target as HTMLSlotElement;\n this._hasChildren = slot.assignedNodes({ flatten: true }).length > 0;\n }\n\n // ─── Private Helpers ───\n\n /** @internal */\n private _getDirectText(): string {\n return Array.from(this.childNodes)\n .filter((n) => n.nodeType === Node.TEXT_NODE)\n .map((n) => n.textContent?.trim() ?? '')\n .filter(Boolean)\n .join(' ');\n }\n\n /** @internal */\n private _handleToggle(e: Event): void {\n if (this.disabled) return;\n e.preventDefault();\n this.expanded = !this.expanded;\n }\n\n /** @internal */\n private _renderExpandArrow() {\n return html`<span class=\"nav-item__arrow\" aria-hidden=\"true\">\n <svg viewBox=\"0 0 20 20\">\n <path\n d=\"M7.21 14.77a.75.75 0 01.02-1.06L11.168 10 7.23 6.29a.75.75 0 111.04-1.08l4.5 4.25a.75.75 0 010 1.08l-4.5 4.25a.75.75 0 01-1.06-.02z\"\n />\n </svg>\n </span>`;\n }\n\n // ─── Render ───\n\n override render() {\n const label = this._getDirectText();\n\n const innerContent = html`\n <span part=\"icon\" class=\"nav-item__icon\">\n <slot name=\"icon\"></slot>\n </span>\n <span part=\"label\" class=\"nav-item__label\">\n <slot></slot>\n </span>\n <span part=\"badge\" class=\"nav-item__badge\">\n <slot name=\"badge\"></slot>\n </span>\n ${this._hasChildren ? this._renderExpandArrow() : nothing}\n ${this._isCollapsed\n ? html`<span id=\"nav-item-tooltip\" class=\"nav-item__tooltip\" role=\"tooltip\">${label}</span>`\n : nothing}\n `;\n\n // Render as anchor when href provided and no expandable children\n const linkEl =\n this.href && !this._hasChildren\n ? html`<a\n part=\"link\"\n class=\"nav-item__link\"\n href=${this.href}\n aria-current=${this.active ? 'page' : nothing}\n aria-disabled=${this.disabled ? 'true' : nothing}\n aria-describedby=${this._isCollapsed ? 'nav-item-tooltip' : nothing}\n tabindex=${this.disabled ? '-1' : '0'}\n >\n ${innerContent}\n </a>`\n : html`<button\n part=\"link\"\n class=\"nav-item__link\"\n aria-disabled=${this.disabled ? 'true' : nothing}\n aria-expanded=${this._hasChildren ? String(this.expanded) : nothing}\n aria-describedby=${this._isCollapsed ? 'nav-item-tooltip' : nothing}\n tabindex=${this.disabled ? '-1' : '0'}\n @click=${this._handleToggle}\n >\n ${innerContent}\n </button>`;\n\n return html`\n <div class=\"nav-item\">\n ${linkEl}\n <div part=\"children\" class=\"nav-item__children\" role=\"group\">\n <div class=\"nav-item__children-inner\">\n <slot name=\"children\" @slotchange=${this._onChildrenSlotChange}></slot>\n </div>\n </div>\n </div>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'hx-nav-item': HelixNavItem;\n }\n}\n\nexport type { HelixNavItem as HxNavItem };\n"],"names":["helixSideNavStyles","css","HelixSideNav","LitElement","changedProperties","slot","_a","navItems","el","item","activeEl","currentIndex","i","_b","nextIndex","targetItem","html","tokenStyles","__decorateClass","property","customElement","helixNavItemStyles","HelixNavItem","name","old","value","options","inner","n","label","innerContent","nothing","linkEl","state"],"mappings":"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"}