@helixui/library 0.3.4 → 1.0.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 (452) hide show
  1. package/custom-elements.json +7076 -5902
  2. package/dist/components/hx-accordion/hx-accordion-item.d.ts +22 -0
  3. package/dist/components/hx-accordion/hx-accordion-item.d.ts.map +1 -1
  4. package/dist/components/hx-accordion/hx-accordion.d.ts +8 -0
  5. package/dist/components/hx-accordion/hx-accordion.d.ts.map +1 -1
  6. package/dist/components/hx-accordion/index.js +1 -1
  7. package/dist/components/hx-action-bar/hx-action-bar.d.ts.map +1 -1
  8. package/dist/components/hx-action-bar/index.js +1 -1
  9. package/dist/components/hx-alert/hx-alert.d.ts +12 -5
  10. package/dist/components/hx-alert/hx-alert.d.ts.map +1 -1
  11. package/dist/components/hx-alert/hx-alert.styles.d.ts.map +1 -1
  12. package/dist/components/hx-alert/index.js +1 -1
  13. package/dist/components/hx-avatar/hx-avatar.d.ts.map +1 -1
  14. package/dist/components/hx-avatar/index.js +1 -1
  15. package/dist/components/hx-badge/hx-badge.d.ts +2 -0
  16. package/dist/components/hx-badge/hx-badge.d.ts.map +1 -1
  17. package/dist/components/hx-badge/hx-badge.styles.d.ts.map +1 -1
  18. package/dist/components/hx-badge/index.js +1 -1
  19. package/dist/components/hx-banner/hx-banner.d.ts +105 -0
  20. package/dist/components/hx-banner/hx-banner.d.ts.map +1 -0
  21. package/dist/components/hx-banner/hx-banner.styles.d.ts +2 -0
  22. package/dist/components/hx-banner/hx-banner.styles.d.ts.map +1 -0
  23. package/dist/components/hx-banner/index.d.ts +3 -0
  24. package/dist/components/hx-banner/index.d.ts.map +1 -0
  25. package/dist/components/hx-banner/index.js +5 -0
  26. package/dist/components/hx-banner/index.js.map +1 -0
  27. package/dist/components/hx-breadcrumb/hx-breadcrumb-item.styles.d.ts.map +1 -1
  28. package/dist/components/hx-breadcrumb/hx-breadcrumb.d.ts +5 -0
  29. package/dist/components/hx-breadcrumb/hx-breadcrumb.d.ts.map +1 -1
  30. package/dist/components/hx-breadcrumb/index.js +1 -1
  31. package/dist/components/hx-button/hx-button.d.ts +17 -0
  32. package/dist/components/hx-button/hx-button.d.ts.map +1 -1
  33. package/dist/components/hx-button/hx-button.styles.d.ts.map +1 -1
  34. package/dist/components/hx-button/index.js +1 -1
  35. package/dist/components/hx-button-group/hx-button-group.d.ts +8 -0
  36. package/dist/components/hx-button-group/hx-button-group.d.ts.map +1 -1
  37. package/dist/components/hx-button-group/index.js +1 -1
  38. package/dist/components/hx-card/hx-card.d.ts +17 -0
  39. package/dist/components/hx-card/hx-card.d.ts.map +1 -1
  40. package/dist/components/hx-card/hx-card.styles.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 +122 -0
  43. package/dist/components/hx-carousel/hx-carousel.d.ts.map +1 -1
  44. package/dist/components/hx-carousel/hx-carousel.styles.d.ts.map +1 -1
  45. package/dist/components/hx-carousel/index.js +1 -1
  46. package/dist/components/hx-checkbox/hx-checkbox.d.ts +3 -1
  47. package/dist/components/hx-checkbox/hx-checkbox.d.ts.map +1 -1
  48. package/dist/components/hx-checkbox/hx-checkbox.styles.d.ts.map +1 -1
  49. package/dist/components/hx-checkbox/index.js +1 -1
  50. package/dist/components/hx-checkbox-group/hx-checkbox-group.d.ts +5 -1
  51. package/dist/components/hx-checkbox-group/hx-checkbox-group.d.ts.map +1 -1
  52. package/dist/components/hx-checkbox-group/index.js +1 -1
  53. package/dist/components/hx-code-snippet/hx-code-snippet.d.ts +21 -6
  54. package/dist/components/hx-code-snippet/hx-code-snippet.d.ts.map +1 -1
  55. package/dist/components/hx-code-snippet/index.js +1 -1
  56. package/dist/components/hx-color-picker/hx-color-picker.d.ts +47 -0
  57. package/dist/components/hx-color-picker/hx-color-picker.d.ts.map +1 -1
  58. package/dist/components/hx-color-picker/hx-color-picker.styles.d.ts.map +1 -1
  59. package/dist/components/hx-color-picker/index.js +1 -1
  60. package/dist/components/hx-combobox/hx-combobox.d.ts +24 -0
  61. package/dist/components/hx-combobox/hx-combobox.d.ts.map +1 -1
  62. package/dist/components/hx-combobox/hx-combobox.styles.d.ts.map +1 -1
  63. package/dist/components/hx-combobox/index.js +1 -1
  64. package/dist/components/hx-container/hx-container.d.ts +3 -1
  65. package/dist/components/hx-container/hx-container.d.ts.map +1 -1
  66. package/dist/components/hx-copy-button/hx-copy-button.d.ts +6 -0
  67. package/dist/components/hx-copy-button/hx-copy-button.d.ts.map +1 -1
  68. package/dist/components/hx-copy-button/index.js +1 -1
  69. package/dist/components/hx-counter/hx-counter.d.ts +79 -0
  70. package/dist/components/hx-counter/hx-counter.d.ts.map +1 -0
  71. package/dist/components/hx-counter/hx-counter.styles.d.ts +2 -0
  72. package/dist/components/hx-counter/hx-counter.styles.d.ts.map +1 -0
  73. package/dist/components/hx-counter/index.d.ts +3 -0
  74. package/dist/components/hx-counter/index.d.ts.map +1 -0
  75. package/dist/components/hx-counter/index.js +5 -0
  76. package/dist/components/hx-counter/index.js.map +1 -0
  77. package/dist/components/hx-data-table/hx-data-table.d.ts +6 -0
  78. package/dist/components/hx-data-table/hx-data-table.d.ts.map +1 -1
  79. package/dist/components/hx-data-table/hx-data-table.styles.d.ts.map +1 -1
  80. package/dist/components/hx-data-table/index.js +1 -1
  81. package/dist/components/hx-date-picker/hx-date-picker.d.ts +124 -0
  82. package/dist/components/hx-date-picker/hx-date-picker.d.ts.map +1 -1
  83. package/dist/components/hx-date-picker/hx-date-picker.styles.d.ts.map +1 -1
  84. package/dist/components/hx-date-picker/index.js +1 -1
  85. package/dist/components/hx-dialog/hx-dialog.d.ts.map +1 -1
  86. package/dist/components/hx-dialog/hx-dialog.styles.d.ts.map +1 -1
  87. package/dist/components/hx-dialog/index.js +1 -1
  88. package/dist/components/hx-divider/hx-divider.d.ts +3 -0
  89. package/dist/components/hx-divider/hx-divider.d.ts.map +1 -1
  90. package/dist/components/hx-drawer/hx-drawer.d.ts +54 -1
  91. package/dist/components/hx-drawer/hx-drawer.d.ts.map +1 -1
  92. package/dist/components/hx-drawer/hx-drawer.styles.d.ts.map +1 -1
  93. package/dist/components/hx-drawer/index.js +1 -1
  94. package/dist/components/hx-dropdown/hx-dropdown.d.ts +20 -0
  95. package/dist/components/hx-dropdown/hx-dropdown.d.ts.map +1 -1
  96. package/dist/components/hx-dropdown/index.js +1 -1
  97. package/dist/components/hx-field/hx-field.d.ts +31 -1
  98. package/dist/components/hx-field/hx-field.d.ts.map +1 -1
  99. package/dist/components/hx-field/index.js +1 -1
  100. package/dist/components/hx-file-upload/hx-file-upload.d.ts +12 -0
  101. package/dist/components/hx-file-upload/hx-file-upload.d.ts.map +1 -1
  102. package/dist/components/hx-file-upload/hx-file-upload.styles.d.ts.map +1 -1
  103. package/dist/components/hx-file-upload/index.js +1 -1
  104. package/dist/components/hx-form/hx-form.d.ts +24 -0
  105. package/dist/components/hx-form/hx-form.d.ts.map +1 -1
  106. package/dist/components/hx-form/index.js +1 -1
  107. package/dist/components/hx-help-text/hx-help-text.d.ts +3 -0
  108. package/dist/components/hx-help-text/hx-help-text.d.ts.map +1 -1
  109. package/dist/components/hx-icon-button/hx-icon-button.d.ts.map +1 -1
  110. package/dist/components/hx-icon-button/hx-icon-button.styles.d.ts.map +1 -1
  111. package/dist/components/hx-icon-button/index.js +1 -1
  112. package/dist/components/hx-list/hx-list.d.ts.map +1 -1
  113. package/dist/components/hx-list/index.js +1 -1
  114. package/dist/components/hx-menu/hx-menu-item.d.ts +1 -0
  115. package/dist/components/hx-menu/hx-menu-item.d.ts.map +1 -1
  116. package/dist/components/hx-menu/hx-menu.d.ts +13 -0
  117. package/dist/components/hx-menu/hx-menu.d.ts.map +1 -1
  118. package/dist/components/hx-menu/index.js +1 -1
  119. package/dist/components/hx-meter/hx-meter.d.ts +3 -0
  120. package/dist/components/hx-meter/hx-meter.d.ts.map +1 -1
  121. package/dist/components/hx-meter/hx-meter.styles.d.ts.map +1 -1
  122. package/dist/components/hx-meter/index.js +1 -1
  123. package/dist/components/hx-nav/hx-nav.d.ts +15 -1
  124. package/dist/components/hx-nav/hx-nav.d.ts.map +1 -1
  125. package/dist/components/hx-nav/hx-nav.styles.d.ts.map +1 -1
  126. package/dist/components/hx-nav/index.js +1 -1
  127. package/dist/components/hx-number-input/hx-number-input.d.ts +2 -0
  128. package/dist/components/hx-number-input/hx-number-input.d.ts.map +1 -1
  129. package/dist/components/hx-number-input/index.js +1 -1
  130. package/dist/components/hx-overflow-menu/hx-overflow-menu.d.ts +14 -0
  131. package/dist/components/hx-overflow-menu/hx-overflow-menu.d.ts.map +1 -1
  132. package/dist/components/hx-overflow-menu/hx-overflow-menu.styles.d.ts.map +1 -1
  133. package/dist/components/hx-overflow-menu/index.js +1 -1
  134. package/dist/components/hx-pagination/hx-pagination.d.ts +5 -0
  135. package/dist/components/hx-pagination/hx-pagination.d.ts.map +1 -1
  136. package/dist/components/hx-pagination/hx-pagination.styles.d.ts.map +1 -1
  137. package/dist/components/hx-pagination/index.js +1 -1
  138. package/dist/components/hx-popover/hx-popover.d.ts +43 -39
  139. package/dist/components/hx-popover/hx-popover.d.ts.map +1 -1
  140. package/dist/components/hx-popover/hx-popover.styles.d.ts.map +1 -1
  141. package/dist/components/hx-popover/index.js +1 -1
  142. package/dist/components/hx-progress-bar/hx-progress-bar.d.ts +12 -0
  143. package/dist/components/hx-progress-bar/hx-progress-bar.d.ts.map +1 -1
  144. package/dist/components/hx-progress-bar/index.js +1 -1
  145. package/dist/components/hx-progress-ring/hx-progress-ring.d.ts.map +1 -1
  146. package/dist/components/hx-progress-ring/index.js +1 -1
  147. package/dist/components/hx-radio-group/hx-radio-group.d.ts +75 -3
  148. package/dist/components/hx-radio-group/hx-radio-group.d.ts.map +1 -1
  149. package/dist/components/hx-radio-group/hx-radio.d.ts +3 -1
  150. package/dist/components/hx-radio-group/hx-radio.d.ts.map +1 -1
  151. package/dist/components/hx-radio-group/hx-radio.styles.d.ts.map +1 -1
  152. package/dist/components/hx-radio-group/index.js +1 -1
  153. package/dist/components/hx-rating/hx-rating.d.ts +18 -3
  154. package/dist/components/hx-rating/hx-rating.d.ts.map +1 -1
  155. package/dist/components/hx-rating/index.js +1 -1
  156. package/dist/components/hx-select/hx-select.d.ts +9 -0
  157. package/dist/components/hx-select/hx-select.d.ts.map +1 -1
  158. package/dist/components/hx-select/hx-select.styles.d.ts.map +1 -1
  159. package/dist/components/hx-select/index.js +1 -1
  160. package/dist/components/hx-side-nav/hx-side-nav.d.ts.map +1 -1
  161. package/dist/components/hx-side-nav/index.js +1 -1
  162. package/dist/components/hx-slider/hx-slider.d.ts +2 -0
  163. package/dist/components/hx-slider/hx-slider.d.ts.map +1 -1
  164. package/dist/components/hx-slider/index.js +1 -1
  165. package/dist/components/hx-split-button/hx-split-button.d.ts +16 -0
  166. package/dist/components/hx-split-button/hx-split-button.d.ts.map +1 -1
  167. package/dist/components/hx-split-button/index.js +1 -1
  168. package/dist/components/hx-split-panel/hx-split-panel.d.ts +44 -0
  169. package/dist/components/hx-split-panel/hx-split-panel.d.ts.map +1 -1
  170. package/dist/components/hx-split-panel/hx-split-panel.styles.d.ts.map +1 -1
  171. package/dist/components/hx-split-panel/index.js +1 -1
  172. package/dist/components/hx-stat/hx-stat.d.ts +71 -0
  173. package/dist/components/hx-stat/hx-stat.d.ts.map +1 -0
  174. package/dist/components/hx-stat/hx-stat.styles.d.ts +2 -0
  175. package/dist/components/hx-stat/hx-stat.styles.d.ts.map +1 -0
  176. package/dist/components/hx-stat/index.d.ts +3 -0
  177. package/dist/components/hx-stat/index.d.ts.map +1 -0
  178. package/dist/components/hx-stat/index.js +5 -0
  179. package/dist/components/hx-stat/index.js.map +1 -0
  180. package/dist/components/hx-steps/hx-steps.d.ts +5 -0
  181. package/dist/components/hx-steps/hx-steps.d.ts.map +1 -1
  182. package/dist/components/hx-steps/index.js +1 -1
  183. package/dist/components/hx-structured-list/hx-structured-list.d.ts +2 -0
  184. package/dist/components/hx-structured-list/hx-structured-list.d.ts.map +1 -1
  185. package/dist/components/hx-structured-list/index.js +1 -1
  186. package/dist/components/hx-switch/hx-switch.d.ts +2 -0
  187. package/dist/components/hx-switch/hx-switch.d.ts.map +1 -1
  188. package/dist/components/hx-switch/index.js +1 -1
  189. package/dist/components/hx-table/hx-table.d.ts +60 -0
  190. package/dist/components/hx-table/hx-table.d.ts.map +1 -0
  191. package/dist/components/hx-table/hx-table.styles.d.ts +9 -0
  192. package/dist/components/hx-table/hx-table.styles.d.ts.map +1 -0
  193. package/dist/components/hx-table/hx-tbody.d.ts +23 -0
  194. package/dist/components/hx-table/hx-tbody.d.ts.map +1 -0
  195. package/dist/components/hx-table/hx-td.d.ts +46 -0
  196. package/dist/components/hx-table/hx-td.d.ts.map +1 -0
  197. package/dist/components/hx-table/hx-tfoot.d.ts +23 -0
  198. package/dist/components/hx-table/hx-tfoot.d.ts.map +1 -0
  199. package/dist/components/hx-table/hx-th.d.ts +61 -0
  200. package/dist/components/hx-table/hx-th.d.ts.map +1 -0
  201. package/dist/components/hx-table/hx-thead.d.ts +23 -0
  202. package/dist/components/hx-table/hx-thead.d.ts.map +1 -0
  203. package/dist/components/hx-table/hx-tr.d.ts +33 -0
  204. package/dist/components/hx-table/hx-tr.d.ts.map +1 -0
  205. package/dist/components/hx-table/index.d.ts +9 -0
  206. package/dist/components/hx-table/index.d.ts.map +1 -0
  207. package/dist/components/hx-table/index.js +11 -0
  208. package/dist/components/hx-table/index.js.map +1 -0
  209. package/dist/components/hx-tabs/hx-tabs.d.ts.map +1 -1
  210. package/dist/components/hx-tabs/index.js +1 -1
  211. package/dist/components/hx-tag/hx-tag.d.ts +2 -0
  212. package/dist/components/hx-tag/hx-tag.d.ts.map +1 -1
  213. package/dist/components/hx-tag/hx-tag.styles.d.ts.map +1 -1
  214. package/dist/components/hx-tag/index.js +1 -1
  215. package/dist/components/hx-text-input/hx-text-input.d.ts +2 -1
  216. package/dist/components/hx-text-input/hx-text-input.d.ts.map +1 -1
  217. package/dist/components/hx-text-input/index.js +1 -1
  218. package/dist/components/hx-textarea/hx-textarea.d.ts +14 -0
  219. package/dist/components/hx-textarea/hx-textarea.d.ts.map +1 -1
  220. package/dist/components/hx-textarea/hx-textarea.styles.d.ts.map +1 -1
  221. package/dist/components/hx-textarea/index.js +1 -1
  222. package/dist/components/hx-time-picker/hx-time-picker.d.ts +83 -1
  223. package/dist/components/hx-time-picker/hx-time-picker.d.ts.map +1 -1
  224. package/dist/components/hx-time-picker/index.js +1 -1
  225. package/dist/components/hx-toast/hx-toast-stack.d.ts +36 -0
  226. package/dist/components/hx-toast/hx-toast-stack.d.ts.map +1 -0
  227. package/dist/components/hx-toast/hx-toast.d.ts +10 -52
  228. package/dist/components/hx-toast/hx-toast.d.ts.map +1 -1
  229. package/dist/components/hx-toast/hx-toast.styles.d.ts.map +1 -1
  230. package/dist/components/hx-toast/index.d.ts +6 -2
  231. package/dist/components/hx-toast/index.d.ts.map +1 -1
  232. package/dist/components/hx-toast/index.js +1 -1
  233. package/dist/components/hx-toast/toast-factory.d.ts +25 -0
  234. package/dist/components/hx-toast/toast-factory.d.ts.map +1 -0
  235. package/dist/components/hx-toggle-button/hx-toggle-button.d.ts +1 -0
  236. package/dist/components/hx-toggle-button/hx-toggle-button.d.ts.map +1 -1
  237. package/dist/components/hx-toggle-button/index.js +1 -1
  238. package/dist/components/hx-tooltip/hx-tooltip.d.ts +1 -45
  239. package/dist/components/hx-tooltip/hx-tooltip.d.ts.map +1 -1
  240. package/dist/components/hx-tooltip/index.js +1 -1
  241. package/dist/components/hx-top-nav/hx-top-nav.d.ts.map +1 -1
  242. package/dist/components/hx-top-nav/index.js +1 -1
  243. package/dist/components/hx-tree-view/hx-tree-item.d.ts +61 -1
  244. package/dist/components/hx-tree-view/hx-tree-item.d.ts.map +1 -1
  245. package/dist/components/hx-tree-view/hx-tree-item.styles.d.ts.map +1 -1
  246. package/dist/components/hx-tree-view/hx-tree-view.d.ts +16 -0
  247. package/dist/components/hx-tree-view/hx-tree-view.d.ts.map +1 -1
  248. package/dist/components/hx-tree-view/index.js +1 -1
  249. package/dist/index.d.ts +20 -2
  250. package/dist/index.d.ts.map +1 -1
  251. package/dist/index.js +169 -155
  252. package/dist/index.js.map +1 -1
  253. package/dist/shared/body-scroll-lock-VBa5TFP-.js +12 -0
  254. package/dist/shared/body-scroll-lock-VBa5TFP-.js.map +1 -0
  255. package/dist/shared/dev-warn-YlwPHjtX.js +6 -0
  256. package/dist/shared/dev-warn-YlwPHjtX.js.map +1 -0
  257. package/dist/shared/{hx-accordion-D95XSAft.js → hx-accordion-DT8qHOay.js} +73 -53
  258. package/dist/shared/hx-accordion-DT8qHOay.js.map +1 -0
  259. package/dist/shared/{hx-action-bar-B4i9tBCP.js → hx-action-bar-we_WJety.js} +41 -40
  260. package/dist/shared/hx-action-bar-we_WJety.js.map +1 -0
  261. package/dist/shared/{hx-alert-BQpT4gL3.js → hx-alert-D6uok29t.js} +95 -28
  262. package/dist/shared/hx-alert-D6uok29t.js.map +1 -0
  263. package/dist/shared/{hx-avatar-yHjmNdtf.js → hx-avatar-Cep6Urm3.js} +62 -65
  264. package/dist/shared/hx-avatar-Cep6Urm3.js.map +1 -0
  265. package/dist/shared/{hx-badge-CjT0d8NK.js → hx-badge-BeuWuUj_.js} +57 -31
  266. package/dist/shared/hx-badge-BeuWuUj_.js.map +1 -0
  267. package/dist/shared/hx-banner-DnCBJtRR.js +353 -0
  268. package/dist/shared/hx-banner-DnCBJtRR.js.map +1 -0
  269. package/dist/shared/{hx-breadcrumb-item-DtSxRZ_W.js → hx-breadcrumb-item-Bj2UqhzR.js} +54 -48
  270. package/dist/shared/hx-breadcrumb-item-Bj2UqhzR.js.map +1 -0
  271. package/dist/shared/{hx-button-CtiJsmOg.js → hx-button-Cbhqpm5i.js} +111 -28
  272. package/dist/shared/hx-button-Cbhqpm5i.js.map +1 -0
  273. package/dist/shared/{hx-button-group-BMV5qFs4.js → hx-button-group-CWjWv-wS.js} +10 -10
  274. package/dist/shared/hx-button-group-CWjWv-wS.js.map +1 -0
  275. package/dist/shared/{hx-card-DAkEfpJd.js → hx-card-B9j2SHyI.js} +26 -22
  276. package/dist/shared/hx-card-B9j2SHyI.js.map +1 -0
  277. package/dist/shared/{hx-carousel-item-C2yBnM0r.js → hx-carousel-item-Be0bC-7o.js} +150 -98
  278. package/dist/shared/hx-carousel-item-Be0bC-7o.js.map +1 -0
  279. package/dist/shared/{hx-checkbox-BMayOpAM.js → hx-checkbox-CuaJqEo7.js} +3 -1
  280. package/dist/shared/hx-checkbox-CuaJqEo7.js.map +1 -0
  281. package/dist/shared/{hx-checkbox-group-DTS9iT4b.js → hx-checkbox-group-ydUdV9Sx.js} +7 -7
  282. package/dist/shared/hx-checkbox-group-ydUdV9Sx.js.map +1 -0
  283. package/dist/shared/{hx-code-snippet-DdEqy-1B.js → hx-code-snippet-DBwIjl5p.js} +71 -59
  284. package/dist/shared/hx-code-snippet-DBwIjl5p.js.map +1 -0
  285. package/dist/shared/{hx-color-picker-K2x_dyeG.js → hx-color-picker-Bb2UPVc3.js} +101 -91
  286. package/dist/shared/hx-color-picker-Bb2UPVc3.js.map +1 -0
  287. package/dist/shared/{hx-combobox-DjMigccw.js → hx-combobox-CNvY-es8.js} +104 -65
  288. package/dist/shared/hx-combobox-CNvY-es8.js.map +1 -0
  289. package/dist/shared/hx-container-DLUKnTi9.js.map +1 -1
  290. package/dist/shared/{hx-copy-button-BXL1xkxb.js → hx-copy-button-CLBA31to.js} +45 -50
  291. package/dist/shared/hx-copy-button-CLBA31to.js.map +1 -0
  292. package/dist/shared/hx-counter-D-1NXzGs.js +138 -0
  293. package/dist/shared/hx-counter-D-1NXzGs.js.map +1 -0
  294. package/dist/shared/{hx-data-table-D3NZvc3P.js → hx-data-table-BwoJCFgs.js} +102 -96
  295. package/dist/shared/hx-data-table-BwoJCFgs.js.map +1 -0
  296. package/dist/shared/{hx-date-picker-CIHwx9b3.js → hx-date-picker-DDcIBJir.js} +58 -47
  297. package/dist/shared/hx-date-picker-DDcIBJir.js.map +1 -0
  298. package/dist/shared/{hx-dialog-e4CSD8xX.js → hx-dialog-M7so0sRT.js} +33 -25
  299. package/dist/shared/hx-dialog-M7so0sRT.js.map +1 -0
  300. package/dist/shared/hx-divider-XgWIz4Mr.js.map +1 -1
  301. package/dist/shared/{hx-drawer-bTF0nbrg.js → hx-drawer-CYxuhIQ0.js} +53 -45
  302. package/dist/shared/hx-drawer-CYxuhIQ0.js.map +1 -0
  303. package/dist/shared/{hx-dropdown-DnjLnkTj.js → hx-dropdown-7cfowTWv.js} +30 -30
  304. package/dist/shared/hx-dropdown-7cfowTWv.js.map +1 -0
  305. package/dist/shared/{hx-field-Dz-7M_SC.js → hx-field-CDP8EXuj.js} +22 -19
  306. package/dist/shared/hx-field-CDP8EXuj.js.map +1 -0
  307. package/dist/shared/{hx-file-upload-DnYiIhyN.js → hx-file-upload-9HbONfqt.js} +63 -54
  308. package/dist/shared/hx-file-upload-9HbONfqt.js.map +1 -0
  309. package/dist/shared/{hx-form-BJeLK34m.js → hx-form-BFv_N1dm.js} +9 -1
  310. package/dist/shared/{hx-form-BJeLK34m.js.map → hx-form-BFv_N1dm.js.map} +1 -1
  311. package/dist/shared/hx-help-text-DaOPN1iB.js.map +1 -1
  312. package/dist/shared/{hx-icon-button-C_fsUJW4.js → hx-icon-button-iu0i_faq.js} +40 -32
  313. package/dist/shared/hx-icon-button-iu0i_faq.js.map +1 -0
  314. package/dist/shared/{hx-list-CF-AAnp-.js → hx-list-CdRNgeoP.js} +7 -9
  315. package/dist/shared/{hx-list-CF-AAnp-.js.map → hx-list-CdRNgeoP.js.map} +1 -1
  316. package/dist/shared/{hx-menu-divider-Buc5XA9E.js → hx-menu-divider-DR8klkFT.js} +46 -38
  317. package/dist/shared/hx-menu-divider-DR8klkFT.js.map +1 -0
  318. package/dist/shared/{hx-meter-qcXl0zCL.js → hx-meter-CZ7lnMra.js} +87 -49
  319. package/dist/shared/hx-meter-CZ7lnMra.js.map +1 -0
  320. package/dist/shared/{hx-nav-CWwByFdq.js → hx-nav-DM6-cGKF.js} +97 -95
  321. package/dist/shared/hx-nav-DM6-cGKF.js.map +1 -0
  322. package/dist/shared/{hx-nav-item-DItaMWl0.js → hx-nav-item-D54-5eUM.js} +12 -12
  323. package/dist/shared/hx-nav-item-D54-5eUM.js.map +1 -0
  324. package/dist/shared/{hx-number-input-CS6_w1lT.js → hx-number-input-BP6TIA92.js} +5 -1
  325. package/dist/shared/hx-number-input-BP6TIA92.js.map +1 -0
  326. package/dist/shared/{hx-overflow-menu-CAS1Mlus.js → hx-overflow-menu-CobkjAb8.js} +50 -37
  327. package/dist/shared/hx-overflow-menu-CobkjAb8.js.map +1 -0
  328. package/dist/shared/{hx-pagination-DNFgXQm3.js → hx-pagination-10dpXS95.js} +74 -69
  329. package/dist/shared/hx-pagination-10dpXS95.js.map +1 -0
  330. package/dist/shared/hx-popover-ULjonbaO.js +269 -0
  331. package/dist/shared/hx-popover-ULjonbaO.js.map +1 -0
  332. package/dist/shared/{hx-progress-bar-b3_m1hna.js → hx-progress-bar-CnTibV63.js} +69 -50
  333. package/dist/shared/hx-progress-bar-CnTibV63.js.map +1 -0
  334. package/dist/shared/{hx-progress-ring-wOSv2y_I.js → hx-progress-ring-BHJBaXNk.js} +2 -4
  335. package/dist/shared/hx-progress-ring-BHJBaXNk.js.map +1 -0
  336. package/dist/shared/{hx-radio-CGtFKls2.js → hx-radio-BnKcRuQu.js} +46 -12
  337. package/dist/shared/hx-radio-BnKcRuQu.js.map +1 -0
  338. package/dist/shared/{hx-rating-C4kTOyHF.js → hx-rating-Y_t7Z4qb.js} +104 -67
  339. package/dist/shared/hx-rating-Y_t7Z4qb.js.map +1 -0
  340. package/dist/shared/{hx-select-D9bYJcDv.js → hx-select-C50lD7NS.js} +19 -12
  341. package/dist/shared/hx-select-C50lD7NS.js.map +1 -0
  342. package/dist/shared/{hx-slider-Duzmuid9.js → hx-slider-CprSNrRi.js} +11 -6
  343. package/dist/shared/hx-slider-CprSNrRi.js.map +1 -0
  344. package/dist/shared/{hx-split-button-DhncgAtZ.js → hx-split-button-CHGy4FUc.js} +19 -18
  345. package/dist/shared/hx-split-button-CHGy4FUc.js.map +1 -0
  346. package/dist/shared/{hx-split-panel-Cxkeauwe.js → hx-split-panel-DYtB45Tr.js} +16 -8
  347. package/dist/shared/hx-split-panel-DYtB45Tr.js.map +1 -0
  348. package/dist/shared/hx-stat-C2wfph8W.js +212 -0
  349. package/dist/shared/hx-stat-C2wfph8W.js.map +1 -0
  350. package/dist/shared/{hx-step-nMT0fHEn.js → hx-step-DYoIumpR.js} +29 -29
  351. package/dist/shared/hx-step-DYoIumpR.js.map +1 -0
  352. package/dist/shared/{hx-structured-list-CMja1VXz.js → hx-structured-list-CMWllxGg.js} +23 -17
  353. package/dist/shared/{hx-structured-list-CMja1VXz.js.map → hx-structured-list-CMWllxGg.js.map} +1 -1
  354. package/dist/shared/{hx-switch-BPvIcDpM.js → hx-switch-DkKchcuP.js} +8 -3
  355. package/dist/shared/{hx-switch-BPvIcDpM.js.map → hx-switch-DkKchcuP.js.map} +1 -1
  356. package/dist/shared/{hx-tab-panel-C7h5lRpw.js → hx-tab-panel-BRNcLICw.js} +129 -120
  357. package/dist/shared/hx-tab-panel-BRNcLICw.js.map +1 -0
  358. package/dist/shared/{hx-tag-SJJtMlOS.js → hx-tag-B3N-vZ6B.js} +80 -55
  359. package/dist/shared/hx-tag-B3N-vZ6B.js.map +1 -0
  360. package/dist/shared/hx-td-CVwCGBYf.js +604 -0
  361. package/dist/shared/hx-td-CVwCGBYf.js.map +1 -0
  362. package/dist/shared/{hx-text-input-BUMgOQHX.js → hx-text-input-CCZZbWQ9.js} +10 -6
  363. package/dist/shared/hx-text-input-CCZZbWQ9.js.map +1 -0
  364. package/dist/shared/{hx-textarea-B_nmxzhC.js → hx-textarea-BsQdB1Rk.js} +51 -18
  365. package/dist/shared/hx-textarea-BsQdB1Rk.js.map +1 -0
  366. package/dist/shared/{hx-time-picker-a-BCkecJ.js → hx-time-picker-CJcIjH3C.js} +65 -54
  367. package/dist/shared/hx-time-picker-CJcIjH3C.js.map +1 -0
  368. package/dist/shared/{hx-toggle-button--xCXWRJW.js → hx-toggle-button-D4F1soEM.js} +34 -22
  369. package/dist/shared/{hx-toggle-button--xCXWRJW.js.map → hx-toggle-button-D4F1soEM.js.map} +1 -1
  370. package/dist/shared/{hx-tooltip-DN6lMlP5.js → hx-tooltip-Bk1iQRHs.js} +23 -23
  371. package/dist/shared/hx-tooltip-Bk1iQRHs.js.map +1 -0
  372. package/dist/shared/{hx-top-nav-8lDKNZUj.js → hx-top-nav-D2bQpns3.js} +43 -30
  373. package/dist/shared/{hx-top-nav-8lDKNZUj.js.map → hx-top-nav-D2bQpns3.js.map} +1 -1
  374. package/dist/shared/{hx-tree-item-Cesh_du5.js → hx-tree-item-BobGN76x.js} +202 -120
  375. package/dist/shared/hx-tree-item-BobGN76x.js.map +1 -0
  376. package/dist/shared/{hx-toast-ikwh9Y03.js → toast-factory-MvMMreTu.js} +181 -94
  377. package/dist/shared/toast-factory-MvMMreTu.js.map +1 -0
  378. package/dist/tools/cem-a11y-analyzer/analyzers/aria-analyzer.d.ts +12 -0
  379. package/dist/tools/cem-a11y-analyzer/analyzers/aria-analyzer.d.ts.map +1 -0
  380. package/dist/tools/cem-a11y-analyzer/analyzers/focus-analyzer.d.ts +13 -0
  381. package/dist/tools/cem-a11y-analyzer/analyzers/focus-analyzer.d.ts.map +1 -0
  382. package/dist/tools/cem-a11y-analyzer/analyzers/form-analyzer.d.ts +13 -0
  383. package/dist/tools/cem-a11y-analyzer/analyzers/form-analyzer.d.ts.map +1 -0
  384. package/dist/tools/cem-a11y-analyzer/analyzers/keyboard-analyzer.d.ts +12 -0
  385. package/dist/tools/cem-a11y-analyzer/analyzers/keyboard-analyzer.d.ts.map +1 -0
  386. package/dist/tools/cem-a11y-analyzer/analyzers/label-analyzer.d.ts +13 -0
  387. package/dist/tools/cem-a11y-analyzer/analyzers/label-analyzer.d.ts.map +1 -0
  388. package/dist/tools/cem-a11y-analyzer/analyzers/motion-analyzer.d.ts +12 -0
  389. package/dist/tools/cem-a11y-analyzer/analyzers/motion-analyzer.d.ts.map +1 -0
  390. package/dist/tools/cem-a11y-analyzer/index.d.ts +14 -0
  391. package/dist/tools/cem-a11y-analyzer/index.d.ts.map +1 -0
  392. package/dist/tools/cem-a11y-analyzer/reporter.d.ts +6 -0
  393. package/dist/tools/cem-a11y-analyzer/reporter.d.ts.map +1 -0
  394. package/dist/tools/cem-a11y-analyzer/scorer.d.ts +22 -0
  395. package/dist/tools/cem-a11y-analyzer/scorer.d.ts.map +1 -0
  396. package/dist/tools/cem-a11y-analyzer/types.d.ts +171 -0
  397. package/dist/tools/cem-a11y-analyzer/types.d.ts.map +1 -0
  398. package/dist/utils/body-scroll-lock.d.ts +34 -0
  399. package/dist/utils/body-scroll-lock.d.ts.map +1 -0
  400. package/dist/utils/dev-warn.d.ts +19 -0
  401. package/dist/utils/dev-warn.d.ts.map +1 -0
  402. package/package.json +1 -1
  403. package/dist/shared/hx-accordion-D95XSAft.js.map +0 -1
  404. package/dist/shared/hx-action-bar-B4i9tBCP.js.map +0 -1
  405. package/dist/shared/hx-alert-BQpT4gL3.js.map +0 -1
  406. package/dist/shared/hx-avatar-yHjmNdtf.js.map +0 -1
  407. package/dist/shared/hx-badge-CjT0d8NK.js.map +0 -1
  408. package/dist/shared/hx-breadcrumb-item-DtSxRZ_W.js.map +0 -1
  409. package/dist/shared/hx-button-CtiJsmOg.js.map +0 -1
  410. package/dist/shared/hx-button-group-BMV5qFs4.js.map +0 -1
  411. package/dist/shared/hx-card-DAkEfpJd.js.map +0 -1
  412. package/dist/shared/hx-carousel-item-C2yBnM0r.js.map +0 -1
  413. package/dist/shared/hx-checkbox-BMayOpAM.js.map +0 -1
  414. package/dist/shared/hx-checkbox-group-DTS9iT4b.js.map +0 -1
  415. package/dist/shared/hx-code-snippet-DdEqy-1B.js.map +0 -1
  416. package/dist/shared/hx-color-picker-K2x_dyeG.js.map +0 -1
  417. package/dist/shared/hx-combobox-DjMigccw.js.map +0 -1
  418. package/dist/shared/hx-copy-button-BXL1xkxb.js.map +0 -1
  419. package/dist/shared/hx-data-table-D3NZvc3P.js.map +0 -1
  420. package/dist/shared/hx-date-picker-CIHwx9b3.js.map +0 -1
  421. package/dist/shared/hx-dialog-e4CSD8xX.js.map +0 -1
  422. package/dist/shared/hx-drawer-bTF0nbrg.js.map +0 -1
  423. package/dist/shared/hx-dropdown-DnjLnkTj.js.map +0 -1
  424. package/dist/shared/hx-field-Dz-7M_SC.js.map +0 -1
  425. package/dist/shared/hx-file-upload-DnYiIhyN.js.map +0 -1
  426. package/dist/shared/hx-icon-button-C_fsUJW4.js.map +0 -1
  427. package/dist/shared/hx-menu-divider-Buc5XA9E.js.map +0 -1
  428. package/dist/shared/hx-meter-qcXl0zCL.js.map +0 -1
  429. package/dist/shared/hx-nav-CWwByFdq.js.map +0 -1
  430. package/dist/shared/hx-nav-item-DItaMWl0.js.map +0 -1
  431. package/dist/shared/hx-number-input-CS6_w1lT.js.map +0 -1
  432. package/dist/shared/hx-overflow-menu-CAS1Mlus.js.map +0 -1
  433. package/dist/shared/hx-pagination-DNFgXQm3.js.map +0 -1
  434. package/dist/shared/hx-popover-BjAyLbzp.js +0 -226
  435. package/dist/shared/hx-popover-BjAyLbzp.js.map +0 -1
  436. package/dist/shared/hx-progress-bar-b3_m1hna.js.map +0 -1
  437. package/dist/shared/hx-progress-ring-wOSv2y_I.js.map +0 -1
  438. package/dist/shared/hx-radio-CGtFKls2.js.map +0 -1
  439. package/dist/shared/hx-rating-C4kTOyHF.js.map +0 -1
  440. package/dist/shared/hx-select-D9bYJcDv.js.map +0 -1
  441. package/dist/shared/hx-slider-Duzmuid9.js.map +0 -1
  442. package/dist/shared/hx-split-button-DhncgAtZ.js.map +0 -1
  443. package/dist/shared/hx-split-panel-Cxkeauwe.js.map +0 -1
  444. package/dist/shared/hx-step-nMT0fHEn.js.map +0 -1
  445. package/dist/shared/hx-tab-panel-C7h5lRpw.js.map +0 -1
  446. package/dist/shared/hx-tag-SJJtMlOS.js.map +0 -1
  447. package/dist/shared/hx-text-input-BUMgOQHX.js.map +0 -1
  448. package/dist/shared/hx-textarea-B_nmxzhC.js.map +0 -1
  449. package/dist/shared/hx-time-picker-a-BCkecJ.js.map +0 -1
  450. package/dist/shared/hx-toast-ikwh9Y03.js.map +0 -1
  451. package/dist/shared/hx-tooltip-DN6lMlP5.js.map +0 -1
  452. package/dist/shared/hx-tree-item-Cesh_du5.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hx-meter-CZ7lnMra.js","sources":["../../src/components/hx-meter/hx-meter.styles.ts","../../src/components/hx-meter/hx-meter.ts"],"sourcesContent":["import { css } from 'lit';\n\nexport const helixMeterStyles = css`\n :host {\n display: block;\n width: 100%;\n }\n\n .meter {\n display: flex;\n flex-direction: column;\n gap: var(--hx-space-2, 0.5rem);\n width: 100%;\n }\n\n .meter__label {\n font-size: var(--hx-font-size-sm, 0.875rem);\n font-weight: var(--hx-font-weight-medium, 500);\n color: var(--hx-meter-label-color, var(--hx-color-neutral-700, #374151));\n line-height: var(--hx-line-height-normal, 1.5);\n }\n\n .meter__track {\n position: relative;\n width: 100%;\n height: var(--hx-meter-track-height, var(--hx-size-2, 0.5rem));\n background-color: var(--hx-meter-track-color, var(--hx-color-neutral-200, #e5e7eb));\n border-radius: var(--hx-meter-track-radius, var(--hx-radius-full, 9999px));\n overflow: hidden;\n }\n\n .meter__indicator {\n position: absolute;\n inset-block: 0;\n inset-inline-start: 0;\n height: 100%;\n border-radius: inherit;\n background-color: var(--_indicator-color);\n transition:\n width var(--hx-duration-fast, 150ms) ease,\n background-color var(--hx-duration-fast, 150ms) ease;\n }\n\n /* ─── Default (no thresholds configured) ─── */\n\n :host {\n --_indicator-color: var(--hx-meter-indicator-color, var(--hx-color-primary-500, #3b82f6));\n }\n\n /* ─── Semantic state colors ─── */\n\n :host([data-state='optimum']) {\n --_indicator-color: var(--hx-meter-color-optimum, var(--hx-color-success-500, #22c55e));\n }\n\n :host([data-state='warning']) {\n --_indicator-color: var(--hx-meter-color-warning, var(--hx-color-warning-500, #f59e0b));\n }\n\n :host([data-state='danger']) {\n --_indicator-color: var(--hx-meter-color-danger, var(--hx-color-danger-500, #ef4444));\n }\n\n /* ─── State Label (WCAG 1.4.1) ─── */\n /* Visible text label rendered below the track when a semantic state is active. */\n /* Ensures the meter state is not conveyed by fill color alone. */\n /* aria-hidden=\"true\" because aria-valuetext already includes the state for AT. */\n\n .meter__state-label {\n font-size: var(--hx-font-size-xs, 0.75rem);\n font-weight: var(--hx-font-weight-medium, 500);\n line-height: var(--hx-line-height-tight, 1.25);\n font-family: var(--hx-font-family-sans, sans-serif);\n }\n\n .meter__state-label[data-state='optimum'] {\n color: var(--hx-meter-color-optimum, var(--hx-color-success-700, #15803d));\n }\n\n .meter__state-label[data-state='warning'] {\n color: var(--hx-meter-color-warning, var(--hx-color-warning-700, #b45309));\n }\n\n .meter__state-label[data-state='danger'] {\n color: var(--hx-meter-color-danger, var(--hx-color-danger-700, #b91c1c));\n }\n\n /* ─── Native meter hidden (we use custom rendering) ─── */\n\n .meter__native {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n border: 0;\n }\n`;\n","import { LitElement, html, nothing } from 'lit';\nimport { customElement, property, state } from 'lit/decorators.js';\nimport { ifDefined } from 'lit/directives/if-defined.js';\nimport { styleMap } from 'lit/directives/style-map.js';\nimport { tokenStyles } from '@helixui/tokens/lit';\nimport { helixMeterStyles } from './hx-meter.styles.js';\n\ntype MeterState = 'optimum' | 'warning' | 'danger' | 'default';\n\n/**\n * A scalar measurement within a known range — e.g., disk usage, health score,\n * or any numeric value with defined min/max bounds. Supports low/high/optimum\n * threshold markers for semantic color feedback.\n *\n * @summary Scalar measurement gauge within a defined range.\n *\n * @tag hx-meter\n *\n * @slot label - Visible label rendered above the meter track. When using this\n * slot without the `label` attribute, the accessible name is derived from the\n * slot content via `aria-labelledby`. The `label` attribute is NOT required\n * when slot content is provided — the component detects slot content and\n * switches to `aria-labelledby` automatically.\n *\n * @csspart base - The outer wrapper element.\n * @csspart track - The unfilled track bar element.\n * @csspart indicator - The filled bar indicating the current value.\n * @csspart label - The label wrapper element.\n *\n * @cssprop [--hx-meter-track-height] - Height of the track bar.\n * @cssprop [--hx-meter-track-color] - Background color of the unfilled track.\n * @cssprop [--hx-meter-track-radius] - Border radius of the track.\n * @cssprop [--hx-meter-indicator-color] - Default filled bar color (no thresholds).\n * @cssprop [--hx-meter-color-optimum] - Color when value is in the optimum zone.\n * @cssprop [--hx-meter-color-warning] - Color when value is in a warning zone.\n * @cssprop [--hx-meter-color-danger] - Color when value is in the danger zone.\n * @cssprop [--hx-meter-label-color] - Label text color.\n */\n@customElement('hx-meter')\nexport class HelixMeter extends LitElement {\n static override styles = [tokenStyles, helixMeterStyles];\n\n private static _counter = 0;\n private _uid = `hx-meter-${++HelixMeter._counter}`;\n\n /**\n * Current value of the meter.\n * @attr value\n */\n @property({ type: Number, reflect: true })\n value = 0;\n\n /**\n * Minimum value of the range.\n * @attr min\n */\n @property({ type: Number, reflect: true })\n min = 0;\n\n /**\n * Maximum value of the range.\n * @attr max\n */\n @property({ type: Number, reflect: true })\n max = 100;\n\n /**\n * Threshold below which the value is considered suboptimal (lower range warning).\n * @attr low\n */\n @property({ type: Number, reflect: true })\n low?: number;\n\n /**\n * Threshold above which the value is considered suboptimal (upper range warning).\n * @attr high\n */\n @property({ type: Number, reflect: true })\n high?: number;\n\n /**\n * The optimal value within the range. Used to determine which zone is \"good\".\n * @attr optimum\n */\n @property({ type: Number, reflect: true })\n optimum?: number;\n\n /**\n * Accessible label for the meter. Used as the visible label text and as\n * the source for `aria-labelledby`. When only slot content is provided\n * (no `label` attribute), the slot content is used for the accessible name.\n * @attr label\n */\n @property({ type: String })\n label?: string;\n\n @state()\n private _hasSlotContent = false;\n\n private _clampedValue(): number {\n return Math.min(Math.max(this.value, this.min), this.max);\n }\n\n private _percentage(): number {\n const range = this.max - this.min;\n if (range === 0) return 0;\n return ((this._clampedValue() - this.min) / range) * 100;\n }\n\n private _resolveState(): MeterState {\n const v = this._clampedValue();\n const hasLow = this.low !== undefined;\n const hasHigh = this.high !== undefined;\n const hasOptimum = this.optimum !== undefined;\n\n if (!hasLow && !hasHigh && !hasOptimum) return 'default';\n\n // When hasLow/hasHigh/hasOptimum are true, the corresponding property is defined.\n // Use nullish coalescing to satisfy the type checker while preserving the runtime logic.\n const lowVal = this.low ?? 0;\n const highVal = this.high ?? this.max;\n const inLowZone = hasLow && v < lowVal;\n const inHighZone = hasHigh && v > highVal;\n const inMiddleZone = !inLowZone && !inHighZone;\n\n if (!hasOptimum) {\n if (inLowZone || inHighZone) return 'warning';\n return 'optimum';\n }\n\n const opt = this.optimum ?? this.min;\n const optimumInLow = hasLow && opt < lowVal;\n const optimumInHigh = hasHigh && opt > highVal;\n const optimumInMiddle = !optimumInLow && !optimumInHigh;\n\n if (optimumInMiddle) {\n if (inMiddleZone) return 'optimum';\n return 'warning';\n } else if (optimumInLow) {\n if (inLowZone) return 'optimum';\n if (inMiddleZone) return 'warning';\n return 'danger';\n } else {\n // optimumInHigh\n if (inHighZone) return 'optimum';\n if (inMiddleZone) return 'warning';\n return 'danger';\n }\n }\n\n private _onLabelSlotChange(e: Event) {\n const slot = e.target as HTMLSlotElement;\n this._hasSlotContent = slot.assignedNodes({ flatten: true }).length > 0;\n }\n\n override updated() {\n // Set data-state on host so :host([data-state]) CSS selectors work\n this.dataset['state'] = this._resolveState();\n }\n\n // ─── WCAG 1.4.1: State label map ───\n // The indicator bar color alone is insufficient for color-blind users.\n // A visible state label is rendered below the track when a semantic state\n // (optimum/warning/danger) is active, providing a non-color visual cue.\n // aria-valuetext already embeds the state for AT users.\n\n private static readonly _STATE_LABELS: Partial<Record<MeterState, string>> = {\n optimum: 'Optimum',\n warning: 'Warning',\n danger: 'Danger',\n };\n\n override render() {\n const pct = this._percentage();\n const state = this._resolveState();\n const clampedValue = this._clampedValue();\n const stateLabel = state !== 'default' ? ` — ${state}` : '';\n const ariaValuetext = `${clampedValue} of ${this.max}${stateLabel}`;\n const hasVisibleLabel = this.label !== undefined || this._hasSlotContent;\n const visibleStateLabel = HelixMeter._STATE_LABELS[state];\n\n return html`\n <div\n part=\"base\"\n class=\"meter\"\n role=\"meter\"\n tabindex=\"0\"\n aria-valuenow=${clampedValue}\n aria-valuemin=${this.min}\n aria-valuemax=${this.max}\n aria-valuetext=${ariaValuetext}\n aria-label=${ifDefined(!hasVisibleLabel ? `${clampedValue} of ${this.max}` : undefined)}\n aria-labelledby=${ifDefined(hasVisibleLabel ? `${this._uid}-label` : undefined)}\n >\n <span\n id=${`${this._uid}-label`}\n part=\"label\"\n class=\"meter__label\"\n ?hidden=${!hasVisibleLabel}\n >\n <slot name=\"label\" @slotchange=${this._onLabelSlotChange}>${this.label ?? ''}</slot>\n </span>\n <div class=\"meter__track\" part=\"track\">\n <div\n part=\"indicator\"\n class=\"meter__indicator\"\n style=${styleMap({ width: `${pct}%` })}\n ></div>\n </div>\n ${visibleStateLabel\n ? html`<span class=\"meter__state-label\" data-state=${state} aria-hidden=\"true\"\n >${visibleStateLabel}</span\n >`\n : nothing}\n <meter\n class=\"meter__native\"\n value=${clampedValue}\n min=${this.min}\n max=${this.max}\n low=${ifDefined(this.low)}\n high=${ifDefined(this.high)}\n optimum=${ifDefined(this.optimum)}\n aria-hidden=\"true\"\n tabindex=\"-1\"\n ></meter>\n </div>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'hx-meter': HelixMeter;\n }\n}\n"],"names":["helixMeterStyles","css","HelixMeter","LitElement","range","v","hasLow","hasHigh","hasOptimum","lowVal","highVal","inLowZone","inHighZone","inMiddleZone","opt","optimumInLow","optimumInHigh","e","slot","pct","state","clampedValue","stateLabel","ariaValuetext","hasVisibleLabel","visibleStateLabel","html","ifDefined","styleMap","nothing","tokenStyles","__decorateClass","property","customElement"],"mappings":"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"}
@@ -1,6 +1,6 @@
1
- import { css as g, LitElement as k, svg as _, html as d, nothing as f } from "lit";
2
- import { property as x, state as b, customElement as y } from "lit/decorators.js";
3
- import { classMap as v } from "lit/directives/class-map.js";
1
+ import { css as g, LitElement as k, svg as f, html as c, nothing as v } from "lit";
2
+ import { property as m, state as b, customElement as y } from "lit/decorators.js";
3
+ import { classMap as x } from "lit/directives/class-map.js";
4
4
  import { repeat as w } from "lit/directives/repeat.js";
5
5
  import { tokenStyles as $ } from "@helixui/tokens/lit";
6
6
  const C = g`
@@ -44,7 +44,8 @@ const C = g`
44
44
  }
45
45
 
46
46
  [part='toggle']:focus-visible {
47
- outline: var(--hx-focus-ring-width, 2px) solid var(--hx-focus-ring-color, #2563eb);
47
+ outline: var(--hx-focus-ring-width, 2px) solid
48
+ var(--hx-nav-focus-ring-color, var(--hx-focus-ring-color, var(--hx-color-primary-500)));
48
49
  outline-offset: var(--hx-focus-ring-offset, 2px);
49
50
  }
50
51
 
@@ -96,7 +97,8 @@ const C = g`
96
97
  }
97
98
 
98
99
  .nav__link:focus-visible {
99
- outline: var(--hx-focus-ring-width, 2px) solid var(--hx-focus-ring-color, #2563eb);
100
+ outline: var(--hx-focus-ring-width, 2px) solid
101
+ var(--hx-nav-focus-ring-color, var(--hx-focus-ring-color, var(--hx-color-primary-500)));
100
102
  outline-offset: var(--hx-focus-ring-offset, 2px);
101
103
  }
102
104
 
@@ -244,12 +246,12 @@ const C = g`
244
246
  }
245
247
  }
246
248
  `;
247
- var I = Object.defineProperty, O = Object.getOwnPropertyDescriptor, p = (e, n, a, t) => {
248
- for (var r = t > 1 ? void 0 : t ? O(n, a) : n, s = e.length - 1, c; s >= 0; s--)
249
- (c = e[s]) && (r = (t ? c(n, a, r) : c(r)) || r);
250
- return t && r && I(n, a, r), r;
249
+ var I = Object.defineProperty, O = Object.getOwnPropertyDescriptor, p = (e, n, o, a) => {
250
+ for (var t = a > 1 ? void 0 : a ? O(n, o) : n, i = e.length - 1, l; i >= 0; i--)
251
+ (l = e[i]) && (t = (a ? l(n, o, t) : l(t)) || t);
252
+ return a && t && I(n, o, t), t;
251
253
  };
252
- let h = class extends k {
254
+ let d = class extends k {
253
255
  constructor() {
254
256
  super(...arguments), this.items = [], this.orientation = "horizontal", this.label = "Main navigation", this._mobileOpen = !1, this._expandedIndex = null, this._boundOutsideClick = this._handleOutsideClick.bind(this);
255
257
  }
@@ -273,9 +275,9 @@ let h = class extends k {
273
275
  _handleToggle() {
274
276
  this._mobileOpen = !this._mobileOpen, this._mobileOpen || (this._expandedIndex = null);
275
277
  }
276
- _handleItemClick(e, n, a) {
277
- var t;
278
- a.preventDefault(), (t = e.children) != null && t.length ? this._expandedIndex = this._expandedIndex === n ? null : n : (this._mobileOpen = !1, this._expandedIndex = null, this.dispatchEvent(
278
+ _handleItemClick(e, n, o) {
279
+ var a;
280
+ o.preventDefault(), (a = e.children) != null && a.length ? this._expandedIndex = this._expandedIndex === n ? null : n : (this._mobileOpen = !1, this._expandedIndex = null, this.dispatchEvent(
279
281
  new CustomEvent("hx-nav-select", {
280
282
  bubbles: !0,
281
283
  composed: !0,
@@ -292,52 +294,52 @@ let h = class extends k {
292
294
  })
293
295
  );
294
296
  }
295
- _handleKeydown(e, n, a) {
296
- var c, l, u;
297
- const t = (c = this.shadowRoot) == null ? void 0 : c.querySelectorAll(
298
- ':scope > [part="nav"] > [part="list"] > [part="item"] > [part="link"]'
297
+ _handleKeydown(e, n, o) {
298
+ var l, s, u;
299
+ const a = (l = this.shadowRoot) == null ? void 0 : l.querySelectorAll(
300
+ '[part="list"] > [part="item"] > [part="link"]'
299
301
  );
300
- if (!t) return;
301
- const r = Array.from(t), s = r[n];
302
+ if (!a) return;
303
+ const t = Array.from(a), i = t[n];
302
304
  switch (e.key) {
303
305
  case "ArrowRight":
304
306
  case "ArrowDown": {
305
- if (e.preventDefault(), (l = a.children) != null && l.length && e.key === "ArrowDown" && this.orientation === "horizontal")
307
+ if (e.preventDefault(), (s = o.children) != null && s.length && e.key === "ArrowDown" && this.orientation === "horizontal")
306
308
  this._expandedIndex = n, this.updateComplete.then(() => {
307
- var o;
308
- const i = (o = this.shadowRoot) == null ? void 0 : o.querySelector(
309
+ var h;
310
+ const r = (h = this.shadowRoot) == null ? void 0 : h.querySelector(
309
311
  '.nav__submenu [part="link"]'
310
312
  );
311
- i == null || i.focus();
313
+ r == null || r.focus();
312
314
  });
313
315
  else {
314
- const i = r[n + 1] ?? r[0];
315
- i == null || i.focus();
316
+ const r = t[n + 1] ?? t[0];
317
+ r == null || r.focus();
316
318
  }
317
319
  break;
318
320
  }
319
321
  case "ArrowLeft":
320
322
  case "ArrowUp": {
321
323
  e.preventDefault();
322
- const i = r[n - 1] ?? r[r.length - 1];
323
- i == null || i.focus();
324
+ const r = t[n - 1] ?? t[t.length - 1];
325
+ r == null || r.focus();
324
326
  break;
325
327
  }
326
328
  case "Escape": {
327
- this._expandedIndex = null, s == null || s.focus();
329
+ this._expandedIndex = null, i == null || i.focus();
328
330
  break;
329
331
  }
330
332
  case "Enter":
331
333
  case " ": {
332
- if ((u = a.children) != null && u.length) {
334
+ if ((u = o.children) != null && u.length) {
333
335
  e.preventDefault();
334
- const i = this._expandedIndex === n;
335
- this._expandedIndex = i ? null : n, i || this.updateComplete.then(() => {
336
- var m;
337
- const o = (m = this.shadowRoot) == null ? void 0 : m.querySelector(
336
+ const r = this._expandedIndex === n;
337
+ this._expandedIndex = r ? null : n, r || this.updateComplete.then(() => {
338
+ var _;
339
+ const h = (_ = this.shadowRoot) == null ? void 0 : _.querySelector(
338
340
  '.nav__submenu:not([hidden]) [part="link"]'
339
341
  );
340
- o == null || o.focus();
342
+ h == null || h.focus();
341
343
  });
342
344
  }
343
345
  break;
@@ -345,31 +347,31 @@ let h = class extends k {
345
347
  }
346
348
  }
347
349
  _handleSubKeydown(e, n) {
348
- var c, l, u, i;
349
- const a = (c = this.shadowRoot) == null ? void 0 : c.querySelectorAll(
350
+ var l, s, u;
351
+ const o = (l = this.shadowRoot) == null ? void 0 : l.querySelectorAll(
350
352
  '.nav__submenu:not([hidden]) [part="link"]'
351
353
  );
352
- if (!a) return;
353
- const t = Array.from(a), r = (l = this.shadowRoot) == null ? void 0 : l.activeElement, s = t.indexOf(r);
354
+ if (!o) return;
355
+ const a = Array.from(o), t = e.currentTarget ?? e.target, i = a.indexOf(t);
354
356
  switch (e.key) {
355
357
  case "ArrowDown": {
356
358
  e.preventDefault();
357
- const o = t[s + 1] ?? t[0];
358
- o == null || o.focus();
359
+ const r = a[i + 1] ?? a[0];
360
+ r == null || r.focus();
359
361
  break;
360
362
  }
361
363
  case "ArrowUp": {
362
364
  e.preventDefault();
363
- const o = t[s - 1] ?? t[t.length - 1];
364
- o == null || o.focus();
365
+ const r = a[i - 1] ?? a[a.length - 1];
366
+ r == null || r.focus();
365
367
  break;
366
368
  }
367
369
  case "Escape": {
368
370
  e.preventDefault(), this._expandedIndex = null;
369
- const o = (u = this.shadowRoot) == null ? void 0 : u.querySelectorAll(
370
- ':scope > [part="nav"] > [part="list"] > [part="item"] > [part="link"]'
371
+ const r = (s = this.shadowRoot) == null ? void 0 : s.querySelectorAll(
372
+ '[part="list"] > [part="item"] > [part="link"]'
371
373
  );
372
- (i = o == null ? void 0 : o[n]) == null || i.focus();
374
+ (u = r == null ? void 0 : r[n]) == null || u.focus();
373
375
  break;
374
376
  }
375
377
  }
@@ -386,7 +388,7 @@ let h = class extends k {
386
388
  }
387
389
  // ─── Render Helpers ───
388
390
  _renderHamburgerIcon() {
389
- return d`<svg
391
+ return c`<svg
390
392
  width="24"
391
393
  height="24"
392
394
  viewBox="0 0 24 24"
@@ -396,14 +398,14 @@ let h = class extends k {
396
398
  stroke-linecap="round"
397
399
  aria-hidden="true"
398
400
  >
399
- ${this._mobileOpen ? _`<line x1="18" y1="6" x2="6" y2="18"></line>
400
- <line x1="6" y1="6" x2="18" y2="18"></line>` : _`<line x1="3" y1="12" x2="21" y2="12"></line>
401
+ ${this._mobileOpen ? f`<line x1="18" y1="6" x2="6" y2="18"></line>
402
+ <line x1="6" y1="6" x2="18" y2="18"></line>` : f`<line x1="3" y1="12" x2="21" y2="12"></line>
401
403
  <line x1="3" y1="6" x2="21" y2="6"></line>
402
404
  <line x1="3" y1="18" x2="21" y2="18"></line>`}
403
405
  </svg>`;
404
406
  }
405
407
  _renderChevronIcon() {
406
- return d`<svg
408
+ return c`<svg
407
409
  class="nav__chevron"
408
410
  width="16"
409
411
  height="16"
@@ -421,30 +423,30 @@ let h = class extends k {
421
423
  />
422
424
  </svg>`;
423
425
  }
424
- _renderSubMenu(e, n, a) {
425
- const t = this._expandedIndex === n;
426
- return d`
426
+ _renderSubMenu(e, n, o) {
427
+ const a = this._expandedIndex === n;
428
+ return c`
427
429
  <ul
428
430
  class="nav__submenu"
429
431
  role="list"
430
- aria-label="${a} submenu"
431
- ?hidden=${!t}
432
+ aria-label="${o} submenu"
433
+ ?hidden=${!a}
432
434
  >
433
435
  ${e.map(
434
- (r) => d`
436
+ (t) => c`
435
437
  <li class="nav__submenu-item">
436
438
  <a
437
439
  part="link"
438
- href=${this._sanitizeHref(r.href)}
439
- class=${v({
440
+ href=${this._sanitizeHref(t.href)}
441
+ class=${x({
440
442
  nav__link: !0,
441
- "nav__link--active": !!r.current
443
+ "nav__link--active": !!t.current
442
444
  })}
443
- aria-current=${r.current ? "page" : f}
444
- @click=${(s) => this._handleSubItemClick(r, s)}
445
- @keydown=${(s) => this._handleSubKeydown(s, n)}
445
+ aria-current=${t.current ? "page" : v}
446
+ @click=${(i) => this._handleSubItemClick(t, i)}
447
+ @keydown=${(i) => this._handleSubKeydown(i, n)}
446
448
  >
447
- ${r.label}
449
+ ${t.label}
448
450
  </a>
449
451
  </li>
450
452
  `
@@ -453,36 +455,36 @@ let h = class extends k {
453
455
  `;
454
456
  }
455
457
  _renderItem(e, n) {
456
- var c;
457
- const a = !!((c = e.children) != null && c.length), t = this._expandedIndex === n, r = {
458
+ var l;
459
+ const o = !!((l = e.children) != null && l.length), a = this._expandedIndex === n, t = {
458
460
  nav__link: !0,
459
461
  "nav__link--active": !!e.current,
460
- "nav__link--has-submenu": a,
461
- "nav__link--expanded": t
462
- }, s = a ? d`
462
+ "nav__link--has-submenu": o,
463
+ "nav__link--expanded": a
464
+ }, i = o ? c`
463
465
  <button
464
466
  part="link"
465
- class=${v(r)}
466
- aria-expanded=${t ? "true" : "false"}
467
- @click=${(l) => this._handleItemClick(e, n, l)}
468
- @keydown=${(l) => this._handleKeydown(l, n, e)}
467
+ class=${x(t)}
468
+ aria-expanded=${a ? "true" : v}
469
+ @click=${(s) => this._handleItemClick(e, n, s)}
470
+ @keydown=${(s) => this._handleKeydown(s, n, e)}
469
471
  >
470
472
  ${e.label} ${this._renderChevronIcon()}
471
473
  </button>
472
474
  ${this._renderSubMenu(e.children ?? [], n, e.label)}
473
- ` : d`
475
+ ` : c`
474
476
  <a
475
477
  part="link"
476
478
  href=${this._sanitizeHref(e.href)}
477
- class=${v(r)}
478
- aria-current=${e.current ? "page" : f}
479
- @click=${(l) => this._handleItemClick(e, n, l)}
480
- @keydown=${(l) => this._handleKeydown(l, n, e)}
479
+ class=${x(t)}
480
+ aria-current=${e.current ? "page" : v}
481
+ @click=${(s) => this._handleItemClick(e, n, s)}
482
+ @keydown=${(s) => this._handleKeydown(s, n, e)}
481
483
  >
482
484
  ${e.label}
483
485
  </a>
484
486
  `;
485
- return d` <li part="item" class="nav__item">${s}</li> `;
487
+ return c` <li part="item" class="nav__item">${i}</li> `;
486
488
  }
487
489
  // ─── Render ───
488
490
  render() {
@@ -490,12 +492,12 @@ let h = class extends k {
490
492
  nav__list: !0,
491
493
  "nav__list--open": this._mobileOpen
492
494
  };
493
- return d`
495
+ return c`
494
496
  <nav part="nav" aria-label=${this.label}>
495
497
  <button
496
498
  part="toggle"
497
499
  class="nav__toggle"
498
- aria-expanded=${this._mobileOpen ? "true" : "false"}
500
+ aria-expanded=${this._mobileOpen ? "true" : v}
499
501
  aria-controls="nav-list"
500
502
  aria-label=${this._mobileOpen ? "Close navigation menu" : "Open navigation menu"}
501
503
  @click=${this._handleToggle}
@@ -503,20 +505,20 @@ let h = class extends k {
503
505
  ${this._renderHamburgerIcon()}
504
506
  </button>
505
507
 
506
- <ul part="list" id="nav-list" class=${v(e)} role="list">
508
+ <ul part="list" id="nav-list" class=${x(e)} role="list">
507
509
  ${w(
508
510
  this.items,
509
- (n, a) => a,
510
- (n, a) => this._renderItem(n, a)
511
+ (n, o) => o,
512
+ (n, o) => this._renderItem(n, o)
511
513
  )}
512
514
  </ul>
513
515
  </nav>
514
516
  `;
515
517
  }
516
518
  };
517
- h.styles = [$, C];
519
+ d.styles = [$, C];
518
520
  p([
519
- x({
521
+ m({
520
522
  type: Array,
521
523
  converter: {
522
524
  fromAttribute(e) {
@@ -530,23 +532,23 @@ p([
530
532
  }
531
533
  }
532
534
  })
533
- ], h.prototype, "items", 2);
535
+ ], d.prototype, "items", 2);
534
536
  p([
535
- x({ type: String, reflect: !0 })
536
- ], h.prototype, "orientation", 2);
537
+ m({ type: String, reflect: !0 })
538
+ ], d.prototype, "orientation", 2);
537
539
  p([
538
- x({ type: String })
539
- ], h.prototype, "label", 2);
540
+ m({ type: String })
541
+ ], d.prototype, "label", 2);
540
542
  p([
541
543
  b()
542
- ], h.prototype, "_mobileOpen", 2);
544
+ ], d.prototype, "_mobileOpen", 2);
543
545
  p([
544
546
  b()
545
- ], h.prototype, "_expandedIndex", 2);
546
- h = p([
547
+ ], d.prototype, "_expandedIndex", 2);
548
+ d = p([
547
549
  y("hx-nav")
548
- ], h);
550
+ ], d);
549
551
  export {
550
- h as H
552
+ d as H
551
553
  };
552
- //# sourceMappingURL=hx-nav-CWwByFdq.js.map
554
+ //# sourceMappingURL=hx-nav-DM6-cGKF.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hx-nav-DM6-cGKF.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-white, #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-white, #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, 100);\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: left;\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-left: 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-left: 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 // ─── 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 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 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 private _handleToggle(): void {\n this._mobileOpen = !this._mobileOpen;\n if (!this._mobileOpen) {\n this._expandedIndex = null;\n }\n }\n\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('hx-nav-select', {\n bubbles: true,\n composed: true,\n detail: { item },\n }),\n );\n }\n }\n\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('hx-nav-select', {\n bubbles: true,\n composed: true,\n detail: { item },\n }),\n );\n }\n\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 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 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 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 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 document.addEventListener('click', this._boundOutsideClick);\n }\n\n override disconnectedCallback(): void {\n super.disconnectedCallback();\n document.removeEventListener('click', this._boundOutsideClick);\n }\n\n // ─── Render Helpers ───\n\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 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 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 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' : nothing}\n @click=${(e: Event) => this._handleItemClick(item, index, e)}\n @keydown=${(e: KeyboardEvent) => this._handleKeydown(e, index, item)}\n >\n ${item.label} ${this._renderChevronIcon()}\n </button>\n ${this._renderSubMenu(item.children ?? [], index, item.label)}\n `\n : html`\n <a\n part=\"link\"\n href=${this._sanitizeHref(item.href)}\n class=${classMap(linkClasses)}\n aria-current=${item.current ? 'page' : nothing}\n @click=${(e: Event) => this._handleItemClick(item, index, e)}\n @keydown=${(e: KeyboardEvent) => this._handleKeydown(e, index, item)}\n >\n ${item.label}\n </a>\n `;\n\n return html` <li part=\"item\" class=\"nav__item\">${content}</li> `;\n }\n\n // ─── Render ───\n\n override render() {\n const listClasses = {\n nav__list: true,\n 'nav__list--open': this._mobileOpen,\n };\n\n return html`\n <nav part=\"nav\" aria-label=${this.label}>\n <button\n part=\"toggle\"\n class=\"nav__toggle\"\n aria-expanded=${this._mobileOpen ? 'true' : nothing}\n aria-controls=\"nav-list\"\n aria-label=${this._mobileOpen ? 'Close navigation menu' : 'Open navigation menu'}\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,6 +1,6 @@
1
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 C } from "lit/decorators.js";
3
- import { tokenStyles as k } from "@helixui/tokens/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
4
  const $ = b`
5
5
  :host {
6
6
  display: block;
@@ -182,7 +182,7 @@ let p = class extends w {
182
182
  */
183
183
  _handleKeydown(e) {
184
184
  var g, u, _;
185
- if (e.key !== "ArrowDown" && e.key !== "ArrowUp") return;
185
+ if (e.key !== "ArrowDown" && e.key !== "ArrowUp" && e.key !== "Home" && e.key !== "End") return;
186
186
  const a = (g = this.shadowRoot) == null ? void 0 : g.querySelector("slot:not([name])");
187
187
  if (!a) return;
188
188
  const t = a.assignedElements({ flatten: !0 }).filter(
@@ -200,7 +200,7 @@ let p = class extends w {
200
200
  }
201
201
  e.preventDefault();
202
202
  let i;
203
- e.key === "ArrowDown" ? i = r < t.length - 1 ? r + 1 : 0 : i = r > 0 ? r - 1 : t.length - 1;
203
+ 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;
204
204
  const n = t[i];
205
205
  if (!n) return;
206
206
  const x = (_ = n.shadowRoot) == null ? void 0 : _.querySelector('[part="link"]');
@@ -257,7 +257,7 @@ let p = class extends w {
257
257
  `;
258
258
  }
259
259
  };
260
- p.styles = [k, $];
260
+ p.styles = [C, $];
261
261
  f([
262
262
  v({ type: Boolean, reflect: !0 })
263
263
  ], p.prototype, "collapsed", 2);
@@ -490,10 +490,10 @@ const T = b`
490
490
  }
491
491
  }
492
492
  `;
493
- var D = Object.defineProperty, A = Object.getOwnPropertyDescriptor, c = (e, a, t, o) => {
494
- for (var r = o > 1 ? void 0 : o ? A(a, t) : a, i = e.length - 1, n; i >= 0; i--)
493
+ var A = Object.defineProperty, D = Object.getOwnPropertyDescriptor, c = (e, a, t, o) => {
494
+ for (var r = o > 1 ? void 0 : o ? D(a, t) : a, i = e.length - 1, n; i >= 0; i--)
495
495
  (n = e[i]) && (r = (o ? n(a, t, r) : n(r)) || r);
496
- return o && r && D(a, t, r), r;
496
+ return o && r && A(a, t, r), r;
497
497
  };
498
498
  let s = class extends w {
499
499
  constructor() {
@@ -575,7 +575,7 @@ let s = class extends w {
575
575
  `;
576
576
  }
577
577
  };
578
- s.styles = [k, T];
578
+ s.styles = [C, T];
579
579
  c([
580
580
  v({ type: String })
581
581
  ], s.prototype, "href", 2);
@@ -589,10 +589,10 @@ c([
589
589
  v({ type: Boolean, reflect: !0 })
590
590
  ], s.prototype, "disabled", 2);
591
591
  c([
592
- C()
592
+ k()
593
593
  ], s.prototype, "_hasChildren", 2);
594
594
  c([
595
- C()
595
+ k()
596
596
  ], s.prototype, "_isCollapsed", 2);
597
597
  s = c([
598
598
  y("hx-nav-item")
@@ -601,4 +601,4 @@ export {
601
601
  s as H,
602
602
  p as a
603
603
  };
604
- //# sourceMappingURL=hx-nav-item-DItaMWl0.js.map
604
+ //# sourceMappingURL=hx-nav-item-D54-5eUM.js.map