@helixui/library 3.8.0 → 4.0.0

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 (250) hide show
  1. package/README.md +41 -0
  2. package/aaa-verdicts.json +2036 -0
  3. package/custom-elements.json +532 -569
  4. package/dist/components/hx-accordion/hx-accordion-item.d.ts.map +1 -1
  5. package/dist/components/hx-accordion/hx-accordion-item.styles.d.ts.map +1 -1
  6. package/dist/components/hx-accordion/index.js +1 -1
  7. package/dist/components/hx-alert/hx-alert.d.ts +0 -8
  8. package/dist/components/hx-alert/hx-alert.d.ts.map +1 -1
  9. package/dist/components/hx-alert/hx-alert.styles.d.ts.map +1 -1
  10. package/dist/components/hx-alert/index.js +1 -1
  11. package/dist/components/hx-avatar/hx-avatar.d.ts +4 -1
  12. package/dist/components/hx-avatar/hx-avatar.d.ts.map +1 -1
  13. package/dist/components/hx-avatar/hx-avatar.styles.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.map +1 -1
  16. package/dist/components/hx-badge/hx-badge.styles.d.ts.map +1 -1
  17. package/dist/components/hx-badge/index.js +1 -1
  18. package/dist/components/hx-banner/hx-banner.d.ts +0 -8
  19. package/dist/components/hx-banner/hx-banner.d.ts.map +1 -1
  20. package/dist/components/hx-banner/hx-banner.styles.d.ts.map +1 -1
  21. package/dist/components/hx-banner/index.js +1 -1
  22. package/dist/components/hx-carousel/hx-carousel.d.ts.map +1 -1
  23. package/dist/components/hx-carousel/hx-carousel.styles.d.ts.map +1 -1
  24. package/dist/components/hx-carousel/index.js +1 -1
  25. package/dist/components/hx-checkbox/hx-checkbox.d.ts.map +1 -1
  26. package/dist/components/hx-checkbox/hx-checkbox.styles.d.ts.map +1 -1
  27. package/dist/components/hx-checkbox/index.js +1 -1
  28. package/dist/components/hx-clinical-status/hx-clinical-status.d.ts +7 -9
  29. package/dist/components/hx-clinical-status/hx-clinical-status.d.ts.map +1 -1
  30. package/dist/components/hx-clinical-status/hx-clinical-status.styles.d.ts.map +1 -1
  31. package/dist/components/hx-clinical-status/index.js +1 -1
  32. package/dist/components/hx-combobox/hx-combobox.d.ts.map +1 -1
  33. package/dist/components/hx-combobox/hx-combobox.styles.d.ts.map +1 -1
  34. package/dist/components/hx-combobox/index.js +1 -1
  35. package/dist/components/hx-date-picker/hx-date-picker.d.ts.map +1 -1
  36. package/dist/components/hx-date-picker/hx-date-picker.styles.d.ts.map +1 -1
  37. package/dist/components/hx-date-picker/index.js +1 -1
  38. package/dist/components/hx-drawer/hx-drawer.d.ts.map +1 -1
  39. package/dist/components/hx-drawer/hx-drawer.styles.d.ts.map +1 -1
  40. package/dist/components/hx-drawer/index.js +1 -1
  41. package/dist/components/hx-dropdown/hx-dropdown.styles.d.ts.map +1 -1
  42. package/dist/components/hx-dropdown/index.js +1 -1
  43. package/dist/components/hx-file-upload/hx-file-upload.d.ts +28 -0
  44. package/dist/components/hx-file-upload/hx-file-upload.d.ts.map +1 -1
  45. package/dist/components/hx-file-upload/hx-file-upload.styles.d.ts.map +1 -1
  46. package/dist/components/hx-file-upload/index.js +1 -1
  47. package/dist/components/hx-help-text/hx-help-text.d.ts.map +1 -1
  48. package/dist/components/hx-help-text/hx-help-text.styles.d.ts.map +1 -1
  49. package/dist/components/hx-help-text/index.js +1 -1
  50. package/dist/components/hx-icon/hx-icon.d.ts +108 -12
  51. package/dist/components/hx-icon/hx-icon.d.ts.map +1 -1
  52. package/dist/components/hx-icon/hx-icon.styles.d.ts.map +1 -1
  53. package/dist/components/hx-icon/index.js +1 -1
  54. package/dist/components/hx-link/hx-link.d.ts.map +1 -1
  55. package/dist/components/hx-link/hx-link.styles.d.ts.map +1 -1
  56. package/dist/components/hx-link/index.js +1 -1
  57. package/dist/components/hx-menu/hx-menu-item.d.ts.map +1 -1
  58. package/dist/components/hx-menu/hx-menu-item.styles.d.ts.map +1 -1
  59. package/dist/components/hx-menu/index.js +1 -1
  60. package/dist/components/hx-nav/hx-nav.d.ts.map +1 -1
  61. package/dist/components/hx-nav/hx-nav.styles.d.ts.map +1 -1
  62. package/dist/components/hx-nav/index.js +1 -1
  63. package/dist/components/hx-number-input/hx-number-input.d.ts.map +1 -1
  64. package/dist/components/hx-number-input/hx-number-input.styles.d.ts.map +1 -1
  65. package/dist/components/hx-number-input/index.js +1 -1
  66. package/dist/components/hx-overflow-menu/hx-overflow-menu.d.ts +5 -1
  67. package/dist/components/hx-overflow-menu/hx-overflow-menu.d.ts.map +1 -1
  68. package/dist/components/hx-overflow-menu/hx-overflow-menu.styles.d.ts.map +1 -1
  69. package/dist/components/hx-overflow-menu/index.js +1 -1
  70. package/dist/components/hx-phi-field/hx-phi-field.d.ts.map +1 -1
  71. package/dist/components/hx-phi-field/hx-phi-field.styles.d.ts.map +1 -1
  72. package/dist/components/hx-phi-field/index.js +1 -1
  73. package/dist/components/hx-radio-group/hx-radio-group.d.ts.map +1 -1
  74. package/dist/components/hx-radio-group/index.js +1 -1
  75. package/dist/components/hx-rating/hx-rating.d.ts.map +1 -1
  76. package/dist/components/hx-rating/hx-rating.styles.d.ts.map +1 -1
  77. package/dist/components/hx-rating/index.js +1 -1
  78. package/dist/components/hx-side-nav/hx-nav-item.d.ts.map +1 -1
  79. package/dist/components/hx-side-nav/hx-nav-item.styles.d.ts.map +1 -1
  80. package/dist/components/hx-side-nav/hx-side-nav.d.ts.map +1 -1
  81. package/dist/components/hx-side-nav/hx-side-nav.styles.d.ts.map +1 -1
  82. package/dist/components/hx-side-nav/index.js +1 -1
  83. package/dist/components/hx-slider/hx-slider.d.ts +28 -0
  84. package/dist/components/hx-slider/hx-slider.d.ts.map +1 -1
  85. package/dist/components/hx-slider/index.js +1 -1
  86. package/dist/components/hx-split-button/hx-split-button.d.ts.map +1 -1
  87. package/dist/components/hx-split-button/hx-split-button.styles.d.ts.map +1 -1
  88. package/dist/components/hx-split-button/index.js +1 -1
  89. package/dist/components/hx-stat/hx-stat.d.ts.map +1 -1
  90. package/dist/components/hx-stat/hx-stat.styles.d.ts.map +1 -1
  91. package/dist/components/hx-stat/index.js +1 -1
  92. package/dist/components/hx-steps/hx-step.d.ts.map +1 -1
  93. package/dist/components/hx-steps/hx-step.styles.d.ts.map +1 -1
  94. package/dist/components/hx-steps/index.js +1 -1
  95. package/dist/components/hx-tag/hx-tag.d.ts.map +1 -1
  96. package/dist/components/hx-tag/hx-tag.styles.d.ts.map +1 -1
  97. package/dist/components/hx-tag/index.js +1 -1
  98. package/dist/components/hx-time-picker/hx-time-picker.d.ts.map +1 -1
  99. package/dist/components/hx-time-picker/hx-time-picker.styles.d.ts.map +1 -1
  100. package/dist/components/hx-time-picker/index.js +1 -1
  101. package/dist/components/hx-toast/hx-toast.d.ts +0 -8
  102. package/dist/components/hx-toast/hx-toast.d.ts.map +1 -1
  103. package/dist/components/hx-toast/hx-toast.styles.d.ts.map +1 -1
  104. package/dist/components/hx-toast/index.js +1 -1
  105. package/dist/components/hx-top-nav/hx-top-nav.d.ts.map +1 -1
  106. package/dist/components/hx-top-nav/hx-top-nav.styles.d.ts.map +1 -1
  107. package/dist/components/hx-top-nav/index.js +1 -1
  108. package/dist/components/hx-tree-view/hx-tree-item.d.ts.map +1 -1
  109. package/dist/components/hx-tree-view/hx-tree-item.styles.d.ts.map +1 -1
  110. package/dist/components/hx-tree-view/index.js +1 -1
  111. package/dist/css/helix-all.css +116 -54
  112. package/dist/css/helix-core.css +19 -4
  113. package/dist/css/helix-feedback.css +15 -18
  114. package/dist/css/helix-forms.css +39 -12
  115. package/dist/css/helix-media.css +6 -3
  116. package/dist/css/helix-navigation.css +16 -7
  117. package/dist/css/helix-overlay.css +10 -0
  118. package/dist/css/helix-tokens.css +3 -2
  119. package/dist/css/helix-utility.css +5 -0
  120. package/dist/css/hx-alert.css +4 -8
  121. package/dist/css/hx-avatar.css +1 -2
  122. package/dist/css/hx-badge.css +5 -0
  123. package/dist/css/hx-banner.css +4 -8
  124. package/dist/css/hx-carousel.css +6 -3
  125. package/dist/css/hx-checkbox.css +4 -9
  126. package/dist/css/hx-clinical-status.css +4 -7
  127. package/dist/css/hx-combobox.css +8 -0
  128. package/dist/css/hx-date-picker.css +5 -0
  129. package/dist/css/hx-drawer.css +5 -0
  130. package/dist/css/hx-dropdown.css +5 -0
  131. package/dist/css/hx-file-upload.css +4 -0
  132. package/dist/css/hx-help-text.css +5 -0
  133. package/dist/css/hx-icon.css +7 -0
  134. package/dist/css/hx-link.css +1 -2
  135. package/dist/css/hx-nav.css +7 -0
  136. package/dist/css/hx-number-input.css +2 -3
  137. package/dist/css/hx-overflow-menu.css +5 -0
  138. package/dist/css/hx-phi-field.css +2 -3
  139. package/dist/css/hx-rating.css +6 -0
  140. package/dist/css/hx-side-nav.css +3 -5
  141. package/dist/css/hx-split-button.css +5 -0
  142. package/dist/css/hx-stat.css +1 -2
  143. package/dist/css/hx-tag.css +5 -0
  144. package/dist/css/hx-time-picker.css +5 -0
  145. package/dist/css/hx-toast.css +6 -0
  146. package/dist/css/hx-top-nav.css +1 -2
  147. package/dist/css/index.css +1 -1
  148. package/dist/css/manifest.json +4 -1
  149. package/dist/index.js +33 -33
  150. package/dist/shared/{hx-accordion-ZVzgDzTG.js → hx-accordion-DR--Ev4t.js} +48 -54
  151. package/dist/shared/hx-accordion-DR--Ev4t.js.map +1 -0
  152. package/dist/shared/{hx-alert-Bto8-TIi.js → hx-alert-C0axS32J.js} +40 -79
  153. package/dist/shared/hx-alert-C0axS32J.js.map +1 -0
  154. package/dist/shared/{hx-avatar-C9hOmlAb.js → hx-avatar-ChAYWnK8.js} +22 -24
  155. package/dist/shared/hx-avatar-ChAYWnK8.js.map +1 -0
  156. package/dist/shared/{hx-badge-DFL35nzi.js → hx-badge-vX-1cuLA.js} +16 -11
  157. package/dist/shared/hx-badge-vX-1cuLA.js.map +1 -0
  158. package/dist/shared/{hx-banner-fpRnciIO.js → hx-banner-PbHwFNSb.js} +51 -90
  159. package/dist/shared/hx-banner-PbHwFNSb.js.map +1 -0
  160. package/dist/shared/{hx-carousel-item-z1Lc24op.js → hx-carousel-item-BVIKgQ4i.js} +72 -102
  161. package/dist/shared/hx-carousel-item-BVIKgQ4i.js.map +1 -0
  162. package/dist/shared/{hx-checkbox-DcgyGS9V.js → hx-checkbox-DDSXXhps.js} +31 -38
  163. package/dist/shared/hx-checkbox-DDSXXhps.js.map +1 -0
  164. package/dist/shared/{hx-clinical-status-D3XQIOqX.js → hx-clinical-status-ZSVEc3Qg.js} +68 -87
  165. package/dist/shared/hx-clinical-status-ZSVEc3Qg.js.map +1 -0
  166. package/dist/shared/{hx-combobox-NgJaLbs2.js → hx-combobox-Be-mqOv4.js} +35 -45
  167. package/dist/shared/hx-combobox-Be-mqOv4.js.map +1 -0
  168. package/dist/shared/{hx-date-picker-0PtEav0K.js → hx-date-picker-CziP3Hm1.js} +15 -22
  169. package/dist/shared/hx-date-picker-CziP3Hm1.js.map +1 -0
  170. package/dist/shared/{hx-drawer-CM_upadk.js → hx-drawer-BlU2oX8-.js} +32 -36
  171. package/dist/shared/hx-drawer-BlU2oX8-.js.map +1 -0
  172. package/dist/shared/{hx-dropdown-xHwTJecv.js → hx-dropdown-DREqpIpm.js} +16 -11
  173. package/dist/shared/hx-dropdown-DREqpIpm.js.map +1 -0
  174. package/dist/shared/{hx-file-upload-D3rKROK5.js → hx-file-upload-CU5QGZSP.js} +137 -80
  175. package/dist/shared/hx-file-upload-CU5QGZSP.js.map +1 -0
  176. package/dist/shared/hx-help-text-CNaZ82LT.js +137 -0
  177. package/dist/shared/hx-help-text-CNaZ82LT.js.map +1 -0
  178. package/dist/shared/hx-icon-bxz9eB9a.js +386 -0
  179. package/dist/shared/hx-icon-bxz9eB9a.js.map +1 -0
  180. package/dist/shared/{hx-link-CMnZRUtQ.js → hx-link-BURSdYLp.js} +19 -26
  181. package/dist/shared/hx-link-BURSdYLp.js.map +1 -0
  182. package/dist/shared/{hx-menu-divider-A6Guuzi_.js → hx-menu-divider-g0grbWV9.js} +19 -31
  183. package/dist/shared/hx-menu-divider-g0grbWV9.js.map +1 -0
  184. package/dist/shared/{hx-nav-ChMTfn7o.js → hx-nav-GTsAZGOx.js} +46 -59
  185. package/dist/shared/hx-nav-GTsAZGOx.js.map +1 -0
  186. package/dist/shared/{hx-nav-item-ClN17f1y.js → hx-nav-item-CxE7Mp3M.js} +62 -64
  187. package/dist/shared/hx-nav-item-CxE7Mp3M.js.map +1 -0
  188. package/dist/shared/{hx-number-input-MggsT7F0.js → hx-number-input-Bvyc9kOi.js} +48 -53
  189. package/dist/shared/hx-number-input-Bvyc9kOi.js.map +1 -0
  190. package/dist/shared/{hx-overflow-menu-DFjJAziP.js → hx-overflow-menu-LrTteeR1.js} +32 -39
  191. package/dist/shared/hx-overflow-menu-LrTteeR1.js.map +1 -0
  192. package/dist/shared/{hx-phi-field-C19oxlrr.js → hx-phi-field-sZt_rYIL.js} +46 -66
  193. package/dist/shared/hx-phi-field-sZt_rYIL.js.map +1 -0
  194. package/dist/shared/{hx-radio-BY4zpwdh.js → hx-radio-BD_c9NJy.js} +51 -56
  195. package/dist/shared/{hx-radio-BY4zpwdh.js.map → hx-radio-BD_c9NJy.js.map} +1 -1
  196. package/dist/shared/{hx-rating-C3QP53k9.js → hx-rating-BGK4AxvI.js} +45 -71
  197. package/dist/shared/hx-rating-BGK4AxvI.js.map +1 -0
  198. package/dist/shared/{hx-slider-Blmv_rwS.js → hx-slider-CkOk5BCY.js} +83 -23
  199. package/dist/shared/{hx-slider-Blmv_rwS.js.map → hx-slider-CkOk5BCY.js.map} +1 -1
  200. package/dist/shared/{hx-split-button-CdNz1XAu.js → hx-split-button-Bg9FHrFK.js} +12 -16
  201. package/dist/shared/hx-split-button-Bg9FHrFK.js.map +1 -0
  202. package/dist/shared/{hx-stat-Gtw_SpK8.js → hx-stat-wKxbyep6.js} +22 -55
  203. package/dist/shared/hx-stat-wKxbyep6.js.map +1 -0
  204. package/dist/shared/{hx-step-CUzliIK_.js → hx-step-CyGQAuiB.js} +5 -25
  205. package/dist/shared/hx-step-CyGQAuiB.js.map +1 -0
  206. package/dist/shared/{hx-tag-C5aCUpVi.js → hx-tag-BqO6HY6V.js} +26 -21
  207. package/dist/shared/hx-tag-BqO6HY6V.js.map +1 -0
  208. package/dist/shared/{hx-time-picker-DfJkBwcX.js → hx-time-picker-if5Cl0Ei.js} +32 -38
  209. package/dist/shared/hx-time-picker-if5Cl0Ei.js.map +1 -0
  210. package/dist/shared/{hx-top-nav-CsTxOtVI.js → hx-top-nav-vP6oDWMV.js} +24 -38
  211. package/dist/shared/hx-top-nav-vP6oDWMV.js.map +1 -0
  212. package/dist/shared/{hx-tree-item-CXyspGxI.js → hx-tree-item-D8hwKd5m.js} +54 -57
  213. package/dist/shared/hx-tree-item-D8hwKd5m.js.map +1 -0
  214. package/dist/shared/{toast-factory-Dht3pVsw.js → toast-factory-DgnbFxVs.js} +127 -153
  215. package/dist/shared/toast-factory-DgnbFxVs.js.map +1 -0
  216. package/figma-inventory.json +283 -304
  217. package/package.json +8 -4
  218. package/dist/shared/hx-accordion-ZVzgDzTG.js.map +0 -1
  219. package/dist/shared/hx-alert-Bto8-TIi.js.map +0 -1
  220. package/dist/shared/hx-avatar-C9hOmlAb.js.map +0 -1
  221. package/dist/shared/hx-badge-DFL35nzi.js.map +0 -1
  222. package/dist/shared/hx-banner-fpRnciIO.js.map +0 -1
  223. package/dist/shared/hx-carousel-item-z1Lc24op.js.map +0 -1
  224. package/dist/shared/hx-checkbox-DcgyGS9V.js.map +0 -1
  225. package/dist/shared/hx-clinical-status-D3XQIOqX.js.map +0 -1
  226. package/dist/shared/hx-combobox-NgJaLbs2.js.map +0 -1
  227. package/dist/shared/hx-date-picker-0PtEav0K.js.map +0 -1
  228. package/dist/shared/hx-drawer-CM_upadk.js.map +0 -1
  229. package/dist/shared/hx-dropdown-xHwTJecv.js.map +0 -1
  230. package/dist/shared/hx-file-upload-D3rKROK5.js.map +0 -1
  231. package/dist/shared/hx-help-text-Xb2Yr8x2.js +0 -156
  232. package/dist/shared/hx-help-text-Xb2Yr8x2.js.map +0 -1
  233. package/dist/shared/hx-icon-fuVm4-bk.js +0 -283
  234. package/dist/shared/hx-icon-fuVm4-bk.js.map +0 -1
  235. package/dist/shared/hx-link-CMnZRUtQ.js.map +0 -1
  236. package/dist/shared/hx-menu-divider-A6Guuzi_.js.map +0 -1
  237. package/dist/shared/hx-nav-ChMTfn7o.js.map +0 -1
  238. package/dist/shared/hx-nav-item-ClN17f1y.js.map +0 -1
  239. package/dist/shared/hx-number-input-MggsT7F0.js.map +0 -1
  240. package/dist/shared/hx-overflow-menu-DFjJAziP.js.map +0 -1
  241. package/dist/shared/hx-phi-field-C19oxlrr.js.map +0 -1
  242. package/dist/shared/hx-rating-C3QP53k9.js.map +0 -1
  243. package/dist/shared/hx-split-button-CdNz1XAu.js.map +0 -1
  244. package/dist/shared/hx-stat-Gtw_SpK8.js.map +0 -1
  245. package/dist/shared/hx-step-CUzliIK_.js.map +0 -1
  246. package/dist/shared/hx-tag-C5aCUpVi.js.map +0 -1
  247. package/dist/shared/hx-time-picker-DfJkBwcX.js.map +0 -1
  248. package/dist/shared/hx-top-nav-CsTxOtVI.js.map +0 -1
  249. package/dist/shared/hx-tree-item-CXyspGxI.js.map +0 -1
  250. package/dist/shared/toast-factory-Dht3pVsw.js.map +0 -1
@@ -1,5 +1,5 @@
1
1
  {
2
- "generated": "2026-05-09T16:49:04.288Z",
2
+ "generated": "2026-05-11T10:40:59.507Z",
3
3
  "components": [
4
4
  {
5
5
  "name": "hx-accordion",
@@ -1016,10 +1016,12 @@
1016
1016
  "--hx-border-radius-md",
1017
1017
  "--hx-color-border-default",
1018
1018
  "--hx-color-surface-default",
1019
+ "--hx-color-text-primary",
1019
1020
  "--hx-dropdown-focus-ring-color",
1020
1021
  "--hx-dropdown-panel-bg",
1021
1022
  "--hx-dropdown-panel-border-color",
1022
1023
  "--hx-dropdown-panel-border-radius",
1024
+ "--hx-dropdown-panel-color",
1023
1025
  "--hx-dropdown-panel-min-width",
1024
1026
  "--hx-dropdown-panel-z-index",
1025
1027
  "--hx-focus-ring-color",
@@ -1165,6 +1167,7 @@
1165
1167
  "tokens": [
1166
1168
  "--hx-icon-color",
1167
1169
  "--hx-icon-size",
1170
+ "--hx-icon-stroke-width",
1168
1171
  "--hx-size-10",
1169
1172
  "--hx-size-4",
1170
1173
  "--hx-size-5",
package/dist/index.js CHANGED
@@ -1,84 +1,84 @@
1
1
  import { lightTokenCss as p } from "@helixui/tokens";
2
- import { H as S, a as y } from "./shared/hx-accordion-ZVzgDzTG.js";
2
+ import { H as S, a as y } from "./shared/hx-accordion-DR--Ev4t.js";
3
3
  import { H as b } from "./shared/hx-action-bar-BlEG4aZv.js";
4
- import { H as g } from "./shared/hx-alert-Bto8-TIi.js";
5
- import { H as v } from "./shared/hx-avatar-C9hOmlAb.js";
6
- import { H as E } from "./shared/hx-badge-DFL35nzi.js";
7
- import { H as k } from "./shared/hx-banner-fpRnciIO.js";
4
+ import { H as g } from "./shared/hx-alert-C0axS32J.js";
5
+ import { H as v } from "./shared/hx-avatar-ChAYWnK8.js";
6
+ import { H as E } from "./shared/hx-badge-vX-1cuLA.js";
7
+ import { H as k } from "./shared/hx-banner-PbHwFNSb.js";
8
8
  import { H as B, a as P } from "./shared/hx-breadcrumb-item-D8xYqe3s.js";
9
9
  import { H as M } from "./shared/hx-button-DOZTZnz-.js";
10
10
  import { H as N } from "./shared/hx-button-group-D3QUmSzl.js";
11
11
  import { H as A } from "./shared/hx-card-CswtnYvj.js";
12
- import { H as G, a as U } from "./shared/hx-carousel-item-z1Lc24op.js";
13
- import { H as O } from "./shared/hx-checkbox-DcgyGS9V.js";
12
+ import { H as G, a as U } from "./shared/hx-carousel-item-BVIKgQ4i.js";
13
+ import { H as O } from "./shared/hx-checkbox-DDSXXhps.js";
14
14
  import { H as K } from "./shared/hx-checkbox-group-C0q6HDqn.js";
15
- import { H as Y } from "./shared/hx-clinical-status-D3XQIOqX.js";
15
+ import { H as Y } from "./shared/hx-clinical-status-ZSVEc3Qg.js";
16
16
  import { H as q } from "./shared/hx-code-snippet-fVV3Z2DZ.js";
17
17
  import { H as J } from "./shared/hx-color-picker-CYjx8i8R.js";
18
- import { H as Z } from "./shared/hx-combobox-NgJaLbs2.js";
18
+ import { H as Z } from "./shared/hx-combobox-Be-mqOv4.js";
19
19
  import { H as oe } from "./shared/hx-container-DVI7sxfX.js";
20
20
  import { H as re } from "./shared/hx-copy-button-DJirFCUL.js";
21
21
  import { H as ie } from "./shared/hx-counter-0zYapFhf.js";
22
22
  import { H as xe } from "./shared/hx-data-table-Ct3gQ6ya.js";
23
- import { H as le } from "./shared/hx-date-picker-0PtEav0K.js";
23
+ import { H as le } from "./shared/hx-date-picker-CziP3Hm1.js";
24
24
  import { H as pe } from "./shared/hx-dialog-B4weoj_1.js";
25
25
  import { H as fe } from "./shared/hx-divider-CYfcUjcr.js";
26
- import { H as de } from "./shared/hx-drawer-CM_upadk.js";
27
- import { H as ue } from "./shared/hx-dropdown-xHwTJecv.js";
26
+ import { H as de } from "./shared/hx-drawer-BlU2oX8-.js";
27
+ import { H as ue } from "./shared/hx-dropdown-DREqpIpm.js";
28
28
  import { H as ye } from "./shared/hx-field-zw0U1KVi.js";
29
29
  import { H as be } from "./shared/hx-field-label-BVRyyKeh.js";
30
- import { H as ge } from "./shared/hx-file-upload-D3rKROK5.js";
30
+ import { H as ge } from "./shared/hx-file-upload-CU5QGZSP.js";
31
31
  import { H as ve } from "./shared/hx-form-CkChEATa.js";
32
32
  import { H as Ee } from "./shared/hx-format-date-CKnlQOmV.js";
33
33
  import { H as ke, a as we } from "./shared/hx-grid-CXZf3jeK.js";
34
- import { H as Pe } from "./shared/hx-help-text-Xb2Yr8x2.js";
35
- import { H as Me } from "./shared/hx-icon-fuVm4-bk.js";
34
+ import { H as Pe } from "./shared/hx-help-text-CNaZ82LT.js";
35
+ import { H as Me } from "./shared/hx-icon-bxz9eB9a.js";
36
36
  import { H as Ne } from "./shared/hx-icon-button-B2BdVdyK.js";
37
37
  import { H as Ae } from "./shared/hx-image-Ben_4yM5.js";
38
- import { H as Ge } from "./shared/hx-link-CMnZRUtQ.js";
38
+ import { H as Ge } from "./shared/hx-link-BURSdYLp.js";
39
39
  import { H as Ve, a as Oe } from "./shared/hx-list-Bp8HeLHh.js";
40
- import { H as Ke, a as We, b as Ye } from "./shared/hx-menu-divider-A6Guuzi_.js";
40
+ import { H as Ke, a as We, b as Ye } from "./shared/hx-menu-divider-g0grbWV9.js";
41
41
  import { H as qe } from "./shared/hx-meter-BnpmF3Vx.js";
42
- import { H as Je } from "./shared/hx-nav-ChMTfn7o.js";
43
- import { H as Ze } from "./shared/hx-number-input-MggsT7F0.js";
44
- import { H as oo } from "./shared/hx-overflow-menu-DFjJAziP.js";
42
+ import { H as Je } from "./shared/hx-nav-GTsAZGOx.js";
43
+ import { H as Ze } from "./shared/hx-number-input-Bvyc9kOi.js";
44
+ import { H as oo } from "./shared/hx-overflow-menu-LrTteeR1.js";
45
45
  import { H as ro } from "./shared/hx-pagination-D726PyTM.js";
46
46
  import { H as io } from "./shared/hx-patient-banner-CkS-Lmj4.js";
47
- import { H as xo } from "./shared/hx-phi-field-C19oxlrr.js";
47
+ import { H as xo } from "./shared/hx-phi-field-sZt_rYIL.js";
48
48
  import { H as lo } from "./shared/hx-popover-BjB0nkcq.js";
49
49
  import { H as po } from "./shared/hx-popup-BiV_2evC.js";
50
50
  import { H as fo } from "./shared/hx-progress-bar-CYz9U721.js";
51
51
  import { H as ho } from "./shared/hx-progress-ring-TwHyXeEp.js";
52
52
  import { H as So } from "./shared/hx-prose-BThYcASV.js";
53
- import { H as To, a as bo } from "./shared/hx-radio-BY4zpwdh.js";
54
- import { H as go } from "./shared/hx-rating-C3QP53k9.js";
53
+ import { H as To, a as bo } from "./shared/hx-radio-BD_c9NJy.js";
54
+ import { H as go } from "./shared/hx-rating-BGK4AxvI.js";
55
55
  import { H as vo } from "./shared/hx-select-DahFehiZ.js";
56
- import { H as Eo, a as Do } from "./shared/hx-nav-item-ClN17f1y.js";
56
+ import { H as Eo, a as Do } from "./shared/hx-nav-item-CxE7Mp3M.js";
57
57
  import { H as wo } from "./shared/hx-skeleton-Cnieh5Uc.js";
58
- import { H as Po } from "./shared/hx-slider-Blmv_rwS.js";
58
+ import { H as Po } from "./shared/hx-slider-CkOk5BCY.js";
59
59
  import { H as Mo } from "./shared/hx-spinner-3qBp4jeN.js";
60
- import { H as No } from "./shared/hx-split-button-CdNz1XAu.js";
60
+ import { H as No } from "./shared/hx-split-button-Bg9FHrFK.js";
61
61
  import { H as Ao } from "./shared/hx-split-panel-B-u0Z3mm.js";
62
62
  import { H as Go } from "./shared/hx-stack-DGfcOfWJ.js";
63
- import { H as Vo } from "./shared/hx-stat-Gtw_SpK8.js";
63
+ import { H as Vo } from "./shared/hx-stat-wKxbyep6.js";
64
64
  import { H as Xo } from "./shared/hx-status-indicator-BlQyen43.js";
65
- import { H as Wo, a as Yo } from "./shared/hx-step-CUzliIK_.js";
65
+ import { H as Wo, a as Yo } from "./shared/hx-step-CyGQAuiB.js";
66
66
  import { H as qo, a as zo } from "./shared/hx-structured-list-m_-dMJbC.js";
67
67
  import { H as Qo } from "./shared/hx-style-scope-TDnR8H4O.js";
68
68
  import { H as et } from "./shared/hx-switch-BCXuNxEH.js";
69
69
  import { H as tt, a as rt, b as at, c as it, d as st, e as xt, f as Ht } from "./shared/hx-td-BPsb6OaG.js";
70
70
  import { H as nt, a as pt, b as mt } from "./shared/hx-tab-panel-BfisavKo.js";
71
- import { H as ct } from "./shared/hx-tag-C5aCUpVi.js";
71
+ import { H as ct } from "./shared/hx-tag-BqO6HY6V.js";
72
72
  import { H as ht } from "./shared/hx-text-Bz_9fJ3J.js";
73
73
  import { F as St, H as yt } from "./shared/hx-text-input-V5sQOpDh.js";
74
74
  import { H as bt } from "./shared/hx-textarea-CNG590KY.js";
75
75
  import { H as gt } from "./shared/hx-theme-BsefFWTO.js";
76
- import { H as vt } from "./shared/hx-time-picker-DfJkBwcX.js";
77
- import { H as Et, a as Dt, t as kt } from "./shared/toast-factory-Dht3pVsw.js";
76
+ import { H as vt } from "./shared/hx-time-picker-if5Cl0Ei.js";
77
+ import { H as Et, a as Dt, t as kt } from "./shared/toast-factory-DgnbFxVs.js";
78
78
  import { H as Bt } from "./shared/hx-toggle-button-xNVYeA3X.js";
79
79
  import { H as Ft } from "./shared/hx-tooltip-CamO-9nd.js";
80
- import { H as Lt } from "./shared/hx-top-nav-CsTxOtVI.js";
81
- import { H as Rt, a as At } from "./shared/hx-tree-item-CXyspGxI.js";
80
+ import { H as Lt } from "./shared/hx-top-nav-vP6oDWMV.js";
81
+ import { H as Rt, a as At } from "./shared/hx-tree-item-D8hwKd5m.js";
82
82
  import { H as Gt } from "./shared/hx-visually-hidden-0bZKOWgT.js";
83
83
  import { F as Vt } from "./shared/FormMixin-B8PXk5RQ.js";
84
84
  import { H as Xt } from "./shared/helix-element-BNEYeiys.js";
@@ -1,11 +1,11 @@
1
- import { css as _, nothing as y, html as C, svg as I } from "lit";
1
+ import { css as C, nothing as _, html as f } from "lit";
2
2
  import { property as h, customElement as E } from "lit/decorators.js";
3
- import { classMap as O } from "lit/directives/class-map.js";
3
+ import { classMap as I } from "lit/directives/class-map.js";
4
4
  import { f as $ } from "./forced-colors-CTEDFRGa.js";
5
- import { H as k } from "./helix-element-BNEYeiys.js";
6
- import { c as D } from "./id-counter-DuX8vsui.js";
5
+ import { H as S } from "./helix-element-BNEYeiys.js";
6
+ import { c as O } from "./id-counter-DuX8vsui.js";
7
7
  import { d as w } from "./dev-warn-YlwPHjtX.js";
8
- const T = _`
8
+ const D = C`
9
9
  :host {
10
10
  display: block;
11
11
  font-family: var(--hx-accordion-font-family, var(--hx-font-family-sans, sans-serif));
@@ -23,7 +23,7 @@ const T = _`
23
23
  border: 2px solid CanvasText;
24
24
  }
25
25
  }
26
- `, M = _`
26
+ `, T = C`
27
27
  :host {
28
28
  display: block;
29
29
  }
@@ -91,6 +91,10 @@ const T = _`
91
91
  transition: transform var(--hx-transition-normal, 250ms ease);
92
92
  }
93
93
 
94
+ .icon .accordion-item__chevron {
95
+ --hx-icon-size: 100%;
96
+ }
97
+
94
98
  .item--expanded .icon {
95
99
  transform: rotate(180deg);
96
100
  }
@@ -182,30 +186,20 @@ const T = _`
182
186
  }
183
187
  }
184
188
  `;
185
- var A = Object.defineProperty, H = Object.getOwnPropertyDescriptor, m = (e, o, r, t) => {
186
- for (var i = t > 1 ? void 0 : t ? H(o, r) : o, n = e.length - 1, a; n >= 0; n--)
189
+ var M = Object.defineProperty, A = Object.getOwnPropertyDescriptor, m = (e, o, r, t) => {
190
+ for (var i = t > 1 ? void 0 : t ? A(o, r) : o, n = e.length - 1, a; n >= 0; n--)
187
191
  (a = e[n]) && (i = (t ? a(o, r, i) : a(i)) || i);
188
- return t && i && A(o, r, i), i;
192
+ return t && i && M(o, r, i), i;
189
193
  };
190
- const L = I`
191
- <svg
192
- xmlns="http://www.w3.org/2000/svg"
193
- width="16"
194
- height="16"
195
- viewBox="0 0 24 24"
196
- fill="none"
197
- stroke="currentColor"
198
- stroke-width="2"
199
- stroke-linecap="round"
200
- stroke-linejoin="round"
201
- aria-hidden="true"
202
- >
203
- <polyline points="6 9 12 15 18 9"></polyline>
204
- </svg>
205
- `, j = D("hx-accordion-item");
206
- let s = class extends k {
194
+ const H = f`<hx-icon
195
+ class="accordion-item__chevron"
196
+ library="helix"
197
+ name="chevron-down"
198
+ aria-hidden="true"
199
+ ></hx-icon>`, L = O("hx-accordion-item");
200
+ let s = class extends S {
207
201
  constructor() {
208
- super(...arguments), this._uid = j(), this.expanded = !1, this.disabled = !1, this.level = 3;
202
+ super(...arguments), this._uid = L(), this.expanded = !1, this.disabled = !1, this.level = 3;
209
203
  }
210
204
  // ─── Lifecycle ───
211
205
  connectedCallback() {
@@ -261,8 +255,8 @@ let s = class extends k {
261
255
  "item--expanded": this.expanded,
262
256
  "item--disabled": this.disabled
263
257
  };
264
- return C`
265
- <details part="item" class=${O(e)} ?open=${this.expanded}>
258
+ return f`
259
+ <details part="item" class=${I(e)} ?open=${this.expanded}>
266
260
  <summary
267
261
  id=${`${this._uid}-trigger`}
268
262
  part="trigger"
@@ -271,13 +265,13 @@ let s = class extends k {
271
265
  aria-level=${this._headingLevel}
272
266
  tabindex=${this.disabled ? "-1" : "0"}
273
267
  aria-expanded=${this.expanded ? "true" : "false"}
274
- aria-disabled=${this.disabled ? "true" : y}
268
+ aria-disabled=${this.disabled ? "true" : _}
275
269
  aria-controls=${`${this._uid}-content`}
276
270
  @click=${this._handleSummaryClick}
277
271
  @keydown=${this._handleKeyDown}
278
272
  >
279
273
  <slot name="trigger" @slotchange=${this._handleTriggerSlotChange}></slot>
280
- <span part="icon" class="icon">${L}</span>
274
+ <span part="icon" class="icon">${H}</span>
281
275
  </summary>
282
276
  <div class="content-wrapper">
283
277
  <div class="content-inner">
@@ -287,7 +281,7 @@ let s = class extends k {
287
281
  class="content"
288
282
  role="region"
289
283
  aria-labelledby=${`${this._uid}-trigger`}
290
- aria-hidden=${this.expanded ? y : "true"}
284
+ aria-hidden=${this.expanded ? _ : "true"}
291
285
  >
292
286
  <slot></slot>
293
287
  </div>
@@ -297,7 +291,7 @@ let s = class extends k {
297
291
  `;
298
292
  }
299
293
  };
300
- s.styles = [M, $];
294
+ s.styles = [T, $];
301
295
  m([
302
296
  h({ type: Boolean, reflect: !0 })
303
297
  ], s.prototype, "expanded", 2);
@@ -310,12 +304,12 @@ m([
310
304
  s = m([
311
305
  E("hx-accordion-item")
312
306
  ], s);
313
- var z = Object.defineProperty, N = Object.getOwnPropertyDescriptor, S = (e, o, r, t) => {
314
- for (var i = t > 1 ? void 0 : t ? N(o, r) : o, n = e.length - 1, a; n >= 0; n--)
307
+ var j = Object.defineProperty, z = Object.getOwnPropertyDescriptor, k = (e, o, r, t) => {
308
+ for (var i = t > 1 ? void 0 : t ? z(o, r) : o, n = e.length - 1, a; n >= 0; n--)
315
309
  (a = e[n]) && (i = (t ? a(o, r, i) : a(i)) || i);
316
- return t && i && z(o, r, i), i;
310
+ return t && i && j(o, r, i), i;
317
311
  };
318
- let c = class extends k {
312
+ let l = class extends S {
319
313
  constructor() {
320
314
  super(...arguments), this.mode = "single", this._mutationObserver = null, this._handleChildExpand = (e) => {
321
315
  if (this.mode !== "single") return;
@@ -324,20 +318,20 @@ let c = class extends k {
324
318
  t !== o && t.expanded && (t.expanded = !1, t._dispatchToggleEvent(!1));
325
319
  });
326
320
  }, this._handleKeyDown = (e) => {
327
- var f, u, v, x;
321
+ var u, v, x, b;
328
322
  if (this._getTriggers().length === 0) return;
329
- const r = ((f = this.shadowRoot) == null ? void 0 : f.activeElement) ?? document.activeElement;
323
+ const r = ((u = this.shadowRoot) == null ? void 0 : u.activeElement) ?? document.activeElement;
330
324
  let t = null;
331
325
  const i = Array.from(this.querySelectorAll("hx-accordion-item"));
332
- for (const l of i) {
333
- const b = (u = l.shadowRoot) == null ? void 0 : u.querySelector('[part="trigger"]');
334
- if (b === r || ((v = l.shadowRoot) == null ? void 0 : v.activeElement) === b) {
335
- t = l;
326
+ for (const c of i) {
327
+ const y = (v = c.shadowRoot) == null ? void 0 : v.querySelector('[part="trigger"]');
328
+ if (y === r || ((x = c.shadowRoot) == null ? void 0 : x.activeElement) === y) {
329
+ t = c;
336
330
  break;
337
331
  }
338
332
  }
339
333
  if (!t) return;
340
- const n = i.filter((l) => !l.disabled), a = n.indexOf(t);
334
+ const n = i.filter((c) => !c.disabled), a = n.indexOf(t);
341
335
  if (a === -1) return;
342
336
  let d = -1;
343
337
  switch (e.key) {
@@ -357,8 +351,8 @@ let c = class extends k {
357
351
  return;
358
352
  }
359
353
  e.preventDefault();
360
- const g = n[d], p = (x = g == null ? void 0 : g.shadowRoot) == null ? void 0 : x.querySelector('[part="trigger"]');
361
- p == null || p.focus();
354
+ const p = n[d], g = (b = p == null ? void 0 : p.shadowRoot) == null ? void 0 : b.querySelector('[part="trigger"]');
355
+ g == null || g.focus();
362
356
  };
363
357
  }
364
358
  connectedCallback() {
@@ -422,22 +416,22 @@ let c = class extends k {
422
416
  }
423
417
  // ─── Render ───
424
418
  render() {
425
- return C`
419
+ return f`
426
420
  <div part="accordion" class="accordion">
427
421
  <slot @slotchange=${this._handleSlotChange}></slot>
428
422
  </div>
429
423
  `;
430
424
  }
431
425
  };
432
- c.styles = [T, $];
433
- S([
426
+ l.styles = [D, $];
427
+ k([
434
428
  h({ type: String, reflect: !0 })
435
- ], c.prototype, "mode", 2);
436
- c = S([
429
+ ], l.prototype, "mode", 2);
430
+ l = k([
437
431
  E("hx-accordion")
438
- ], c);
432
+ ], l);
439
433
  export {
440
- c as H,
434
+ l as H,
441
435
  s as a
442
436
  };
443
- //# sourceMappingURL=hx-accordion-ZVzgDzTG.js.map
437
+ //# sourceMappingURL=hx-accordion-DR--Ev4t.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hx-accordion-DR--Ev4t.js","sources":["../../src/components/hx-accordion/hx-accordion.styles.ts","../../src/components/hx-accordion/hx-accordion-item.styles.ts","../../src/components/hx-accordion/hx-accordion-item.ts","../../src/components/hx-accordion/hx-accordion.ts"],"sourcesContent":["import { css } from 'lit';\n\nexport const helixAccordionStyles = css`\n :host {\n display: block;\n font-family: var(--hx-accordion-font-family, var(--hx-font-family-sans, sans-serif));\n }\n\n .accordion {\n border-radius: var(--hx-accordion-border-radius, var(--hx-border-radius-md, 0.375rem));\n overflow: hidden;\n }\n\n /* ─── High Contrast Mode (forced-colors) ─── */\n\n @media (forced-colors: active) {\n .accordion {\n border: 2px solid CanvasText;\n }\n }\n`;\n","import { css } from 'lit';\n\nexport const helixAccordionItemStyles = css`\n :host {\n display: block;\n }\n\n .item {\n border-bottom: var(--hx-border-width-thin, 1px) solid\n var(--hx-accordion-border-color, var(--hx-color-neutral-200, #d6dbd5));\n font-family: var(--hx-accordion-item-font-family, var(--hx-font-family-sans, sans-serif));\n }\n\n :host(:first-child) .item {\n border-top: var(--hx-border-width-thin, 1px) solid\n var(--hx-accordion-border-color, var(--hx-color-neutral-200, #d6dbd5));\n }\n\n /* Remove native details marker */\n .trigger {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: var(--hx-space-3, 0.75rem);\n padding: var(--hx-accordion-trigger-padding, var(--hx-space-4, 1rem));\n cursor: pointer;\n list-style: none;\n font-size: var(--hx-font-size-md, 1rem);\n font-weight: var(--hx-font-weight-semibold, 600);\n color: var(--hx-accordion-trigger-color, var(--hx-color-neutral-800, #202b39));\n background-color: var(--hx-accordion-trigger-bg, transparent);\n user-select: none;\n transition: background-color var(--hx-transition-fast, 150ms ease);\n }\n\n /* Hide the native details disclosure triangle */\n .trigger::-webkit-details-marker {\n display: none;\n }\n\n .trigger::marker {\n display: none;\n }\n\n .item--disabled .trigger {\n cursor: not-allowed;\n }\n\n :host(:not([disabled])) .trigger:hover {\n background-color: var(--hx-accordion-trigger-hover-bg, var(--hx-color-neutral-50, #f5f8f3));\n }\n\n .trigger:focus-visible {\n outline: var(--hx-focus-ring-width, 2px) solid var(--hx-focus-ring-color, #0f7078);\n outline-offset: var(--hx-focus-ring-offset, -2px);\n }\n\n /* ─── Icon ─── */\n\n .icon {\n flex-shrink: 0;\n width: var(--hx-accordion-icon-size, var(--hx-size-5, 1.25rem));\n height: var(--hx-accordion-icon-size, var(--hx-size-5, 1.25rem));\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--hx-accordion-icon-color, var(--hx-color-neutral-500, #66787b));\n transition: transform var(--hx-transition-normal, 250ms ease);\n }\n\n .icon .accordion-item__chevron {\n --hx-icon-size: 100%;\n }\n\n .item--expanded .icon {\n transform: rotate(180deg);\n }\n\n /* ─── Content animation via CSS grid trick ─── */\n\n .content-wrapper {\n display: grid;\n grid-template-rows: 0fr;\n transition: grid-template-rows var(--hx-transition-normal, 250ms ease);\n overflow: hidden;\n }\n\n .item--expanded .content-wrapper,\n details[open]:not(.item--expanded) .content-wrapper {\n grid-template-rows: 1fr;\n }\n\n .content-inner {\n overflow: hidden;\n }\n\n .content {\n padding: var(--hx-accordion-content-padding, 0 var(--hx-space-4, 1rem) var(--hx-space-4, 1rem));\n font-size: var(--hx-font-size-md, 1rem);\n line-height: var(--hx-line-height-normal, 1.5);\n color: var(--hx-accordion-content-color, var(--hx-color-neutral-600, #4a5362));\n }\n\n /* ─── Disabled host ─── */\n\n :host([disabled]) {\n pointer-events: none;\n opacity: var(--hx-opacity-disabled, 0.5);\n }\n\n /* ─── Reduced motion ─── */\n\n @media (prefers-reduced-motion: reduce) {\n .trigger {\n transition: none;\n }\n\n .icon {\n transition: none;\n }\n\n .content-wrapper {\n transition: none;\n }\n }\n\n /* ─── High Contrast Mode (forced-colors) ─── */\n\n @media (forced-colors: active) {\n .trigger {\n forced-color-adjust: none;\n color: ButtonText;\n background-color: ButtonFace;\n }\n\n .trigger:focus-visible {\n outline: 3px solid Highlight;\n outline-offset: -2px;\n }\n\n .item {\n border-bottom-color: CanvasText;\n }\n\n :host(:first-child) .item {\n border-top-color: CanvasText;\n }\n\n .item--disabled .trigger {\n color: GrayText;\n }\n\n :host([disabled]) {\n opacity: 1;\n }\n\n .icon {\n color: ButtonText;\n }\n\n .content {\n color: CanvasText;\n }\n }\n`;\n","import { html, nothing } from 'lit';\nimport '../../utilities/document-token-adoption.js';\nimport { customElement, property } from 'lit/decorators.js';\nimport { classMap } from 'lit/directives/class-map.js';\nimport '../hx-icon/hx-icon.js';\nimport { HelixElement, createIdCounter } from '../../base/index.js';\nimport { helixAccordionItemStyles } from './hx-accordion-item.styles.js';\nimport { forcedColorsInteractive } from '../../styles/forced-colors.js';\nimport { devWarn } from '../../utils/dev-warn.js';\n\nconst chevronIcon = html`<hx-icon\n class=\"accordion-item__chevron\"\n library=\"helix\"\n name=\"chevron-down\"\n aria-hidden=\"true\"\n></hx-icon>`;\n\nconst _nextAccordionItemId = createIdCounter('hx-accordion-item');\n\n/** Detail for hx-expand and hx-collapse events dispatched by hx-accordion-item. */\nexport interface HxAccordionToggleDetail {\n expanded: boolean;\n itemId: string;\n}\n\n/**\n * An individual accordion item with collapsible content.\n *\n * ## Architecture Note: Slot Projection vs. Host-Canonical (group-4 round-1)\n *\n * `hx-accordion-item` deliberately does NOT participate in the\n * host-canonical / `internals.ariaLabelledByElements` pattern used by every\n * other group-2/3/4 component. Rationale:\n *\n * 1. The trigger label comes from `<slot name=\"trigger\">` — consumer\n * light-DOM projected directly into the `<summary>` element. AT reads\n * the slot-projected text natively because slot projection preserves\n * accessible name (the `<summary>` IS the heading and consumes the\n * slotted text in its own accessible name computation).\n * 2. `aria-labelledby=\"${_uid}-trigger\"` on the inner content region and\n * `aria-controls=\"${_uid}-content\"` on the summary BOTH resolve\n * same-shadow-root, which works correctly across every AT — these\n * IDREFs never cross a shadow boundary.\n * 3. Pushing these ids through `internals.ariaLabelledByElements` would\n * either duplicate the wiring (heading announced twice) or break the\n * native `<details>/<summary>` toggle semantics (the host carrying\n * `role=\"heading\"` would shadow the summary's own heading projection).\n *\n * `role=\"heading\"` on `<summary>` (with `aria-level=N`) is the APG-canonical\n * Accordion pattern. Per the APG note, `<summary>` MUST be a direct child\n * of `<details>` for the native toggle to function — wrapping it in an\n * `<h3>` would forfeit native disclosure. The role-on-summary approach is\n * the authoritative compromise. NVDA, JAWS, and VoiceOver all announce the\n * summary as a heading at the configured level when this pattern is used.\n *\n * `aria-controls` on the summary points at the shadow-internal content\n * region; APG marks the relationship as implicit via the heading + region\n * structure, so AT not following the IDREF still announces correctly. The\n * IDREF is a hint, not a requirement — and because both ids are in the\n * same shadow root, it resolves cleanly when AT does follow it. This\n * matches the popover/dropdown intentional `aria-controls` omission for\n * the cross-shadow case (see those components' code comments).\n *\n * @summary Collapsible panel that can be expanded or collapsed.\n *\n * @tag hx-accordion-item\n *\n * @slot trigger - The heading/trigger content for this item.\n * @slot - Default slot for the collapsible body content.\n *\n * @attr {number} level - Heading level (1–6) for the trigger via `role=\"heading\" aria-level`.\n * Defaults to 3. Set this to match the document outline — e.g., use `level=\"2\"` when the\n * accordion appears under an `<h1>` landmark.\n *\n * @fires {CustomEvent<{expanded: boolean, itemId: string}>} hx-expand - Dispatched when the item is expanded.\n * @fires {CustomEvent<{expanded: boolean, itemId: string}>} hx-collapse - Dispatched when the item is collapsed.\n *\n * @csspart item - The outer details element container.\n * @csspart trigger - The summary/trigger element.\n * @csspart content - The collapsible content area.\n * @csspart icon - The expand/collapse icon.\n *\n * @cssprop [--hx-accordion-border-color=var(--hx-color-neutral-200)] - Border color between items.\n * @cssprop [--hx-accordion-trigger-padding=var(--hx-space-4)] - Trigger padding.\n * @cssprop [--hx-accordion-trigger-color=var(--hx-color-neutral-800)] - Trigger text color.\n * @cssprop [--hx-accordion-trigger-bg=transparent] - Trigger background color.\n * @cssprop [--hx-accordion-trigger-hover-bg=var(--hx-color-neutral-50)] - Trigger hover background.\n * @cssprop [--hx-accordion-icon-color=var(--hx-color-neutral-500)] - Icon color.\n * @cssprop [--hx-accordion-content-padding=0 var(--hx-space-4) var(--hx-space-4)] - Content padding.\n * @cssprop [--hx-accordion-content-color=var(--hx-color-neutral-600)] - Content text color.\n */\n@customElement('hx-accordion-item')\nexport class HelixAccordionItem extends HelixElement {\n static override styles = [helixAccordionItemStyles, forcedColorsInteractive];\n\n /** @internal */\n private _uid = _nextAccordionItemId();\n\n /**\n * Whether this item is expanded.\n * @attr expanded\n */\n @property({ type: Boolean, reflect: true })\n expanded = false;\n\n /**\n * Whether this item is disabled (cannot be toggled).\n * @attr disabled\n */\n @property({ type: Boolean, reflect: true })\n disabled = false;\n\n /**\n * Heading level (1–6) applied via `role=\"heading\" aria-level` on the summary\n * trigger. Defaults to 3. Set to match the document outline around the\n * accordion so screen readers surface accordion items in the heading list.\n * @attr level\n */\n @property({ type: Number })\n level: 1 | 2 | 3 | 4 | 5 | 6 = 3;\n\n // ─── Lifecycle ───\n\n override connectedCallback(): void {\n super.connectedCallback();\n if (!this.closest('hx-accordion')) {\n devWarn(\n 'hx-accordion-item',\n 'Used outside hx-accordion. Single-expand coordination will not function.',\n );\n }\n }\n\n // ─── Slot Handlers ───\n\n /** @internal */\n private _handleTriggerSlotChange(e: Event): void {\n const slot = e.target as HTMLSlotElement;\n const hasContent = slot.assignedNodes({ flatten: true }).length > 0;\n if (!hasContent) {\n devWarn(\n 'hx-accordion-item',\n 'trigger slot is empty — provide a visible label for keyboard and screen reader users.',\n );\n }\n }\n\n // ─── Heading Level Helper ───\n\n /**\n * Returns a clamped heading level (1–6) for use as `aria-level` on the\n * `<summary>` element. Per the WAI-ARIA APG Accordion pattern, the\n * `<summary>` must be a **direct child** of `<details>` for native\n * disclosure behaviour to work. Instead of wrapping `<summary>` inside\n * an `<h3>` (which breaks the native toggle), we apply\n * `role=\"heading\" aria-level=\"N\"` directly on `<summary>`.\n */\n /** @internal */\n private get _headingLevel(): number {\n return Math.max(1, Math.min(6, this.level));\n }\n\n // ─── Toggle Logic ───\n\n /** @internal */\n private _toggle(): void {\n if (this.disabled) return;\n\n const willExpand = !this.expanded;\n this.expanded = willExpand;\n\n this._dispatchToggleEvent(willExpand);\n }\n\n /** @internal */\n _dispatchToggleEvent(expanded: boolean): void {\n const detail = { expanded, itemId: this.id || '' };\n const options = { bubbles: true, composed: true, detail };\n\n if (expanded) {\n this.dispatchEvent(\n new CustomEvent<{ expanded: boolean; itemId: string }>('hx-expand', options),\n );\n } else {\n this.dispatchEvent(\n new CustomEvent<{ expanded: boolean; itemId: string }>('hx-collapse', options),\n );\n }\n }\n\n // ─── Event Handlers ───\n\n /** @internal */\n private _handleSummaryClick(e: MouseEvent): void {\n e.preventDefault();\n this._toggle();\n }\n\n /** @internal */\n private _handleKeyDown(e: KeyboardEvent): void {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n this._toggle();\n }\n }\n\n // ─── Render ───\n\n override render() {\n const itemClasses = {\n item: true,\n 'item--expanded': this.expanded,\n 'item--disabled': this.disabled,\n };\n\n return html`\n <details part=\"item\" class=${classMap(itemClasses)} ?open=${this.expanded}>\n <summary\n id=${`${this._uid}-trigger`}\n part=\"trigger\"\n class=\"trigger\"\n role=\"heading\"\n aria-level=${this._headingLevel}\n tabindex=${this.disabled ? '-1' : '0'}\n aria-expanded=${this.expanded ? 'true' : 'false'}\n aria-disabled=${this.disabled ? 'true' : nothing}\n aria-controls=${`${this._uid}-content`}\n @click=${this._handleSummaryClick}\n @keydown=${this._handleKeyDown}\n >\n <slot name=\"trigger\" @slotchange=${this._handleTriggerSlotChange}></slot>\n <span part=\"icon\" class=\"icon\">${chevronIcon}</span>\n </summary>\n <div class=\"content-wrapper\">\n <div class=\"content-inner\">\n <div\n id=${`${this._uid}-content`}\n part=\"content\"\n class=\"content\"\n role=\"region\"\n aria-labelledby=${`${this._uid}-trigger`}\n aria-hidden=${this.expanded ? nothing : 'true'}\n >\n <slot></slot>\n </div>\n </div>\n </div>\n </details>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'hx-accordion-item': HelixAccordionItem;\n }\n}\n","import { html, type PropertyValues } from 'lit';\nimport '../../utilities/document-token-adoption.js';\nimport { customElement, property } from 'lit/decorators.js';\nimport { HelixElement } from '../../base/index.js';\nimport { helixAccordionStyles } from './hx-accordion.styles.js';\nimport { forcedColorsInteractive } from '../../styles/forced-colors.js';\nimport './hx-accordion-item.js';\nimport type { HelixAccordionItem } from './hx-accordion-item.js';\nimport { devWarn } from '../../utils/dev-warn.js';\n\n/**\n * An accordion container that manages collapsible content sections.\n *\n * @summary Collapsible content sections with single or multi-expand modes.\n *\n * @tag hx-accordion\n *\n * @slot - Default slot for hx-accordion-item elements.\n *\n * @csspart accordion - The outer container wrapping all accordion items.\n *\n * @cssprop [--hx-accordion-border-radius=var(--hx-border-radius-md)] - Outer border radius.\n *\n * @example\n * ```html\n * <hx-accordion mode=\"single\">\n * <hx-accordion-item>\n * <span slot=\"trigger\">What is this?</span>\n * <p>Answer content here.</p>\n * </hx-accordion-item>\n * </hx-accordion>\n * ```\n * @cssprop [--hx-accordion-font-family=var(--hx-font-family-sans)] - CSS custom property.\n * @cssprop [--hx-font-family-sans] - Font family.\n * @cssprop [--hx-border-radius-md] - CSS custom property.\n */\n@customElement('hx-accordion')\nexport class HelixAccordion extends HelixElement {\n static override styles = [helixAccordionStyles, forcedColorsInteractive];\n\n /**\n * Expansion mode: 'single' collapses all other items when one expands.\n * 'multi' allows multiple items open simultaneously.\n * @attr mode\n */\n @property({ type: String, reflect: true })\n mode: 'single' | 'multi' = 'single';\n\n // ─── Lifecycle ───\n\n /** @internal */\n private _mutationObserver: MutationObserver | null = null;\n\n override connectedCallback(): void {\n super.connectedCallback();\n this.addEventListener('hx-expand', this._handleChildExpand);\n this.addEventListener('keydown', this._handleKeyDown);\n // Re-enforce single mode when reconnected with pre-expanded items\n this._enforceSingleMode();\n // Watch for dynamically added accordion items that may violate single-expand\n if (typeof MutationObserver !== 'undefined') {\n this._mutationObserver = new MutationObserver((mutations) => {\n const hasNewItems = mutations.some((m) =>\n Array.from(m.addedNodes).some(\n (n) => n instanceof Element && n.tagName.toLowerCase() === 'hx-accordion-item',\n ),\n );\n if (hasNewItems) {\n this._enforceSingleMode();\n }\n });\n this._mutationObserver.observe(this, { childList: true });\n }\n }\n\n override disconnectedCallback(): void {\n super.disconnectedCallback();\n this.removeEventListener('hx-expand', this._handleChildExpand);\n this.removeEventListener('keydown', this._handleKeyDown);\n this._mutationObserver?.disconnect();\n this._mutationObserver = null;\n }\n\n protected override firstUpdated(): void {\n this._enforceSingleMode();\n }\n\n override updated(changedProperties: PropertyValues<this>): void {\n super.updated(changedProperties);\n if (changedProperties.has('mode')) {\n const validModes: string[] = ['single', 'multi'];\n if (!validModes.includes(this.mode)) {\n devWarn(\n 'hx-accordion',\n `Invalid mode \"${this.mode}\". Expected one of: ${validModes.join(', ')}. Clamping to \"single\".`,\n );\n this.mode = 'single';\n return;\n }\n // When switching from multi to single, enforce single-expand immediately\n this._enforceSingleMode();\n }\n }\n\n // ─── Single-expand coordination ───\n\n /** @internal */\n private _enforceSingleMode(): void {\n if (this.mode !== 'single') return;\n\n const items = this.querySelectorAll<HelixAccordionItem>('hx-accordion-item');\n let foundExpanded = false;\n\n items.forEach((item) => {\n if (item.expanded) {\n if (foundExpanded) {\n item.expanded = false;\n } else {\n foundExpanded = true;\n }\n }\n });\n }\n\n /**\n * Handles expand events from child accordion items to enforce single-expand mode.\n * @internal\n */\n private _handleChildExpand = (e: Event): void => {\n if (this.mode !== 'single') return;\n\n const expandedItem = e.composedPath()[0] as HelixAccordionItem;\n const items = this.querySelectorAll<HelixAccordionItem>('hx-accordion-item');\n\n items.forEach((item) => {\n if (item !== expandedItem && item.expanded) {\n item.expanded = false;\n item._dispatchToggleEvent(false);\n }\n });\n };\n\n // ─── Arrow key navigation (ARIA APG Accordion pattern) ───\n\n /**\n * Handles keyboard navigation between accordion triggers using arrow, Home, and End keys.\n * @internal\n */\n private _handleKeyDown = (e: KeyboardEvent): void => {\n const triggers = this._getTriggers();\n if (triggers.length === 0) return;\n\n const activeEl = this.shadowRoot?.activeElement ?? document.activeElement;\n let currentItem: HelixAccordionItem | null = null;\n\n const items = Array.from(this.querySelectorAll<HelixAccordionItem>('hx-accordion-item'));\n for (const item of items) {\n const summary = item.shadowRoot?.querySelector('[part=\"trigger\"]');\n if (summary === activeEl || item.shadowRoot?.activeElement === summary) {\n currentItem = item;\n break;\n }\n }\n\n if (!currentItem) return;\n\n const enabledItems = items.filter((item) => !item.disabled);\n const currentIndex = enabledItems.indexOf(currentItem);\n if (currentIndex === -1) return;\n\n let targetIndex = -1;\n\n switch (e.key) {\n case 'ArrowDown':\n targetIndex = (currentIndex + 1) % enabledItems.length;\n break;\n case 'ArrowUp':\n targetIndex = (currentIndex - 1 + enabledItems.length) % enabledItems.length;\n break;\n case 'Home':\n targetIndex = 0;\n break;\n case 'End':\n targetIndex = enabledItems.length - 1;\n break;\n default:\n return;\n }\n\n e.preventDefault();\n const targetItem = enabledItems[targetIndex];\n const targetSummary = targetItem?.shadowRoot?.querySelector<HTMLElement>('[part=\"trigger\"]');\n targetSummary?.focus();\n };\n\n /** @internal */\n private _getTriggers(): HTMLElement[] {\n const items = this.querySelectorAll<HelixAccordionItem>('hx-accordion-item');\n const triggers: HTMLElement[] = [];\n items.forEach((item) => {\n const summary = item.shadowRoot?.querySelector<HTMLElement>('[part=\"trigger\"]');\n if (summary) triggers.push(summary);\n });\n return triggers;\n }\n\n // ─── Slot validation ───\n\n /** @internal */\n private _handleSlotChange(e: Event): void {\n const slot = e.target;\n if (!(slot instanceof HTMLSlotElement)) return;\n const invalid = slot\n .assignedElements()\n .filter((el) => el.tagName.toLowerCase() !== 'hx-accordion-item');\n if (invalid.length > 0) {\n devWarn(\n 'hx-accordion',\n `Default slot expects <hx-accordion-item> elements. Found unexpected: ${invalid.map((el) => `<${el.tagName.toLowerCase()}>`).join(', ')}`,\n );\n }\n }\n\n // ─── Render ───\n\n override render() {\n return html`\n <div part=\"accordion\" class=\"accordion\">\n <slot @slotchange=${this._handleSlotChange}></slot>\n </div>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'hx-accordion': HelixAccordion;\n }\n}\n"],"names":["helixAccordionStyles","css","helixAccordionItemStyles","chevronIcon","html","_nextAccordionItemId","createIdCounter","HelixAccordionItem","HelixElement","willExpand","expanded","options","itemClasses","classMap","nothing","forcedColorsInteractive","__decorateClass","property","customElement","HelixAccordion","expandedItem","item","activeEl","_a","currentItem","items","summary","_b","_c","enabledItems","currentIndex","targetIndex","targetItem","targetSummary","_d","mutations","m","n","changedProperties","validModes","devWarn","foundExpanded","triggers","slot","invalid","el"],"mappings":"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"}
@@ -1,9 +1,9 @@
1
- import { css as p, html as n, nothing as d } from "lit";
2
- import { property as s, state as u, customElement as v } from "lit/decorators.js";
3
- import { classMap as f } from "lit/directives/class-map.js";
1
+ import { css as u, html as h, nothing as d } from "lit";
2
+ import { property as s, state as p, customElement as f } from "lit/decorators.js";
3
+ import { classMap as v } from "lit/directives/class-map.js";
4
4
  import { a as x } from "./forced-colors-CTEDFRGa.js";
5
5
  import { H as b } from "./helix-element-BNEYeiys.js";
6
- const g = p`
6
+ const _ = u`
7
7
  :host {
8
8
  display: block;
9
9
  }
@@ -87,10 +87,8 @@ const g = p`
87
87
  color: var(--hx-alert-icon-color, var(--hx-color-info-500, #0c8beb));
88
88
  }
89
89
 
90
- .alert__icon svg {
91
- width: var(--hx-space-5, 1.25rem);
92
- height: var(--hx-space-5, 1.25rem);
93
- fill: currentColor;
90
+ .alert__icon .alert__glyph {
91
+ --hx-icon-size: var(--hx-space-5, 1.25rem);
94
92
  }
95
93
 
96
94
  /* ─── Title ─── */
@@ -177,10 +175,8 @@ const g = p`
177
175
  opacity: 1;
178
176
  }
179
177
 
180
- .alert__close-button svg {
181
- width: var(--hx-space-4, 1rem);
182
- height: var(--hx-space-4, 1rem);
183
- fill: currentColor;
178
+ .alert__close-button .alert__glyph {
179
+ --hx-icon-size: var(--hx-space-4, 1rem);
184
180
  }
185
181
 
186
182
  @media (prefers-reduced-motion: reduce) {
@@ -248,10 +244,10 @@ const g = p`
248
244
  }
249
245
  }
250
246
  `;
251
- var m = Object.defineProperty, _ = Object.getOwnPropertyDescriptor, o = (e, t, l, i) => {
252
- for (var a = i > 1 ? void 0 : i ? _(t, l) : t, c = e.length - 1, h; c >= 0; c--)
253
- (h = e[c]) && (a = (i ? h(t, l, a) : h(a)) || a);
254
- return i && a && m(t, l, a), a;
247
+ var m = Object.defineProperty, g = Object.getOwnPropertyDescriptor, o = (e, t, n, i) => {
248
+ for (var a = i > 1 ? void 0 : i ? g(t, n) : t, l = e.length - 1, c; l >= 0; l--)
249
+ (c = e[l]) && (a = (i ? c(t, n, a) : c(a)) || a);
250
+ return i && a && m(t, n, a), a;
255
251
  };
256
252
  let r = class extends b {
257
253
  constructor() {
@@ -310,15 +306,15 @@ let r = class extends b {
310
306
  if (super.updated(e), e.has("variant") && (this._internals.role = this._role, this.setAttribute("role", this._role)), e.has("open"))
311
307
  if (this.open) {
312
308
  if (this.removeAttribute("aria-hidden"), e.get("open") === !1) {
313
- const l = ++this._announcerCycle;
309
+ const n = ++this._announcerCycle;
314
310
  Promise.resolve().then(() => {
315
- if (l !== this._announcerCycle || !this.open) return;
311
+ if (n !== this._announcerCycle || !this.open) return;
316
312
  const i = this.renderRoot.querySelector(".sr-only");
317
313
  i && (i.textContent = "", Promise.resolve().then(() => {
318
- var h;
319
- if (l !== this._announcerCycle || !this.open) return;
320
- const a = this._effectiveSeverityLabel, c = ((h = this.textContent) == null ? void 0 : h.trim()) ?? "";
321
- i.textContent = a ? `${a} ${c}` : c;
314
+ var c;
315
+ if (n !== this._announcerCycle || !this.open) return;
316
+ const a = this._effectiveSeverityLabel, l = ((c = this.textContent) == null ? void 0 : c.trim()) ?? "";
317
+ i.textContent = a ? `${a} ${l}` : l;
322
318
  }));
323
319
  });
324
320
  }
@@ -330,58 +326,23 @@ let r = class extends b {
330
326
  }
331
327
  // ─── Default Icons ───
332
328
  /** @internal */
333
- _renderInfoIcon() {
334
- return n`<svg viewBox="0 0 20 20" aria-hidden="true">
335
- <path
336
- d="M10 2a8 8 0 100 16 8 8 0 000-16zm.75 4.75a.75.75 0 11-1.5 0 .75.75 0 011.5 0zM9.25 9a.75.75 0 011.5 0v4a.75.75 0 01-1.5 0V9z"
337
- />
338
- </svg>`;
339
- }
340
- /** @internal */
341
- _renderSuccessIcon() {
342
- return n`<svg viewBox="0 0 20 20" aria-hidden="true">
343
- <path
344
- d="M10 2a8 8 0 100 16 8 8 0 000-16zm3.03 6.28a.75.75 0 00-1.06-1.06L9 10.19 7.78 8.97a.75.75 0 00-1.06 1.06l1.75 1.75a.75.75 0 001.06 0l3.5-3.5z"
345
- />
346
- </svg>`;
347
- }
348
- /** @internal */
349
- _renderWarningIcon() {
350
- return n`<svg viewBox="0 0 20 20" aria-hidden="true">
351
- <path
352
- d="M8.49 2.92a1.75 1.75 0 013.02 0l6.25 10.83A1.75 1.75 0 0116.25 16H3.75a1.75 1.75 0 01-1.51-2.25L8.49 2.92zM10 7a.75.75 0 01.75.75v3a.75.75 0 01-1.5 0v-3A.75.75 0 0110 7zm0 7.5a.75.75 0 100-1.5.75.75 0 000 1.5z"
353
- />
354
- </svg>`;
355
- }
356
- /** @internal */
357
- _renderErrorIcon() {
358
- return n`<svg viewBox="0 0 20 20" aria-hidden="true">
359
- <path
360
- d="M10 2a8 8 0 100 16 8 8 0 000-16zm-1.72 5.22a.75.75 0 011.06 0L10 7.94l.66-.72a.75.75 0 111.06 1.06L11.06 9l.66.72a.75.75 0 11-1.06 1.06L10 10.06l-.66.72a.75.75 0 01-1.06-1.06L8.94 9l-.66-.72a.75.75 0 010-1.06z"
361
- />
362
- </svg>`;
363
- }
364
- /** @internal */
365
329
  _renderDefaultIcon() {
366
- switch (this.variant) {
367
- case "success":
368
- return this._renderSuccessIcon();
369
- case "warning":
370
- return this._renderWarningIcon();
371
- case "error":
372
- return this._renderErrorIcon();
373
- case "info":
374
- default:
375
- return this._renderInfoIcon();
376
- }
330
+ const e = this.variant === "info" ? "info" : this.variant;
331
+ return h`<hx-icon
332
+ class="alert__glyph"
333
+ library="helix"
334
+ name=${e}
335
+ aria-hidden="true"
336
+ ></hx-icon>`;
377
337
  }
378
338
  /** @internal */
379
339
  _renderCloseIcon() {
380
- return n`<svg viewBox="0 0 20 20" aria-hidden="true">
381
- <path
382
- d="M6.28 5.22a.75.75 0 00-1.06 1.06L8.94 10l-3.72 3.72a.75.75 0 101.06 1.06L10 11.06l3.72 3.72a.75.75 0 101.06-1.06L11.06 10l3.72-3.72a.75.75 0 00-1.06-1.06L10 8.94 6.28 5.22z"
383
- />
384
- </svg>`;
340
+ return h`<hx-icon
341
+ class="alert__glyph"
342
+ library="helix"
343
+ name="close"
344
+ aria-hidden="true"
345
+ ></hx-icon>`;
385
346
  }
386
347
  // ─── Event Handling ───
387
348
  /** @internal */
@@ -409,15 +370,15 @@ let r = class extends b {
409
370
  [`alert--${this.variant}`]: !0,
410
371
  "alert--accent": this.accent
411
372
  }, t = this._effectiveSeverityLabel;
412
- return n`
373
+ return h`
413
374
  <div
414
375
  class="sr-only"
415
376
  aria-live=${this._isAssertive ? "assertive" : "polite"}
416
377
  aria-atomic="true"
417
378
  ></div>
418
- <div part="alert" class=${f(e)}>
379
+ <div part="alert" class=${v(e)}>
419
380
  <span class="alert__severity-label" aria-hidden="true">${t}</span>
420
- ${this.showIcon ? n`
381
+ ${this.showIcon ? h`
421
382
  <div part="icon" class="alert__icon" aria-hidden="true">
422
383
  <slot name="icon">${this._renderDefaultIcon()}</slot>
423
384
  </div>
@@ -440,7 +401,7 @@ let r = class extends b {
440
401
  </div>
441
402
  </div>
442
403
 
443
- ${this.dismissible ? n`
404
+ ${this.dismissible ? h`
444
405
  <button
445
406
  part="close-button"
446
407
  class="alert__close-button"
@@ -454,7 +415,7 @@ let r = class extends b {
454
415
  `;
455
416
  }
456
417
  };
457
- r.styles = [g, x];
418
+ r.styles = [_, x];
458
419
  o([
459
420
  s({ type: String, reflect: !0 })
460
421
  ], r.prototype, "variant", 2);
@@ -483,15 +444,15 @@ o([
483
444
  s({ type: String, attribute: "return-focus-to" })
484
445
  ], r.prototype, "returnFocusTo", 2);
485
446
  o([
486
- u()
447
+ p()
487
448
  ], r.prototype, "_hasActions", 2);
488
449
  o([
489
- u()
450
+ p()
490
451
  ], r.prototype, "_hasTitle", 2);
491
452
  r = o([
492
- v("hx-alert")
453
+ f("hx-alert")
493
454
  ], r);
494
455
  export {
495
456
  r as H
496
457
  };
497
- //# sourceMappingURL=hx-alert-Bto8-TIi.js.map
458
+ //# sourceMappingURL=hx-alert-C0axS32J.js.map