@helixui/library 3.1.0 → 3.2.0-next.102

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 (616) hide show
  1. package/custom-elements.json +6407 -339
  2. package/dist/components/hx-accordion/hx-accordion-item.d.ts.map +1 -1
  3. package/dist/components/hx-accordion/hx-accordion-item.styles.d.ts.map +1 -1
  4. package/dist/components/hx-accordion/hx-accordion.d.ts +3 -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 +14 -0
  8. package/dist/components/hx-action-bar/hx-action-bar.d.ts.map +1 -1
  9. package/dist/components/hx-action-bar/index.js +1 -1
  10. package/dist/components/hx-alert/hx-alert.d.ts +36 -0
  11. package/dist/components/hx-alert/hx-alert.d.ts.map +1 -1
  12. package/dist/components/hx-alert/hx-alert.styles.d.ts +12 -0
  13. package/dist/components/hx-alert/hx-alert.styles.d.ts.map +1 -1
  14. package/dist/components/hx-alert/index.js +1 -1
  15. package/dist/components/hx-avatar/hx-avatar.d.ts +17 -0
  16. package/dist/components/hx-avatar/hx-avatar.d.ts.map +1 -1
  17. package/dist/components/hx-avatar/index.js +1 -1
  18. package/dist/components/hx-badge/hx-badge.d.ts +35 -0
  19. package/dist/components/hx-badge/hx-badge.d.ts.map +1 -1
  20. package/dist/components/hx-badge/index.js +1 -1
  21. package/dist/components/hx-banner/hx-banner.d.ts +34 -0
  22. package/dist/components/hx-banner/hx-banner.d.ts.map +1 -1
  23. package/dist/components/hx-banner/hx-banner.styles.d.ts +12 -0
  24. package/dist/components/hx-banner/hx-banner.styles.d.ts.map +1 -1
  25. package/dist/components/hx-banner/index.js +1 -1
  26. package/dist/components/hx-breadcrumb/hx-breadcrumb-item.d.ts.map +1 -1
  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 +3 -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 +44 -7
  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 +2 -0
  36. package/dist/components/hx-button-group/hx-button-group.d.ts.map +1 -1
  37. package/dist/components/hx-button-group/hx-button-group.styles.d.ts.map +1 -1
  38. package/dist/components/hx-button-group/index.js +1 -1
  39. package/dist/components/hx-card/hx-card.d.ts +28 -0
  40. package/dist/components/hx-card/hx-card.d.ts.map +1 -1
  41. package/dist/components/hx-card/hx-card.styles.d.ts +9 -0
  42. package/dist/components/hx-card/hx-card.styles.d.ts.map +1 -1
  43. package/dist/components/hx-card/index.js +1 -1
  44. package/dist/components/hx-carousel/hx-carousel.d.ts +25 -0
  45. package/dist/components/hx-carousel/hx-carousel.d.ts.map +1 -1
  46. package/dist/components/hx-carousel/hx-carousel.styles.d.ts.map +1 -1
  47. package/dist/components/hx-carousel/index.js +1 -1
  48. package/dist/components/hx-checkbox/hx-checkbox.d.ts +38 -7
  49. package/dist/components/hx-checkbox/hx-checkbox.d.ts.map +1 -1
  50. package/dist/components/hx-checkbox/hx-checkbox.styles.d.ts.map +1 -1
  51. package/dist/components/hx-checkbox/index.js +1 -1
  52. package/dist/components/hx-checkbox-group/hx-checkbox-group.d.ts +16 -2
  53. package/dist/components/hx-checkbox-group/hx-checkbox-group.d.ts.map +1 -1
  54. package/dist/components/hx-checkbox-group/index.js +1 -1
  55. package/dist/components/hx-clinical-status/hx-clinical-status.d.ts +37 -0
  56. package/dist/components/hx-clinical-status/hx-clinical-status.d.ts.map +1 -1
  57. package/dist/components/hx-clinical-status/hx-clinical-status.styles.d.ts.map +1 -1
  58. package/dist/components/hx-clinical-status/index.js +1 -1
  59. package/dist/components/hx-code-snippet/hx-code-snippet.d.ts +35 -0
  60. package/dist/components/hx-code-snippet/hx-code-snippet.d.ts.map +1 -1
  61. package/dist/components/hx-code-snippet/hx-code-snippet.styles.d.ts.map +1 -1
  62. package/dist/components/hx-code-snippet/index.js +1 -1
  63. package/dist/components/hx-color-picker/hx-color-picker.d.ts +29 -0
  64. package/dist/components/hx-color-picker/hx-color-picker.d.ts.map +1 -1
  65. package/dist/components/hx-color-picker/hx-color-picker.styles.d.ts.map +1 -1
  66. package/dist/components/hx-color-picker/index.js +1 -1
  67. package/dist/components/hx-combobox/hx-combobox.d.ts +49 -0
  68. package/dist/components/hx-combobox/hx-combobox.d.ts.map +1 -1
  69. package/dist/components/hx-combobox/hx-combobox.styles.d.ts.map +1 -1
  70. package/dist/components/hx-combobox/index.js +1 -1
  71. package/dist/components/hx-container/hx-container.d.ts +5 -0
  72. package/dist/components/hx-container/hx-container.d.ts.map +1 -1
  73. package/dist/components/hx-copy-button/hx-copy-button.d.ts +24 -0
  74. package/dist/components/hx-copy-button/hx-copy-button.d.ts.map +1 -1
  75. package/dist/components/hx-copy-button/hx-copy-button.styles.d.ts.map +1 -1
  76. package/dist/components/hx-copy-button/index.js +1 -1
  77. package/dist/components/hx-counter/hx-counter.d.ts +7 -0
  78. package/dist/components/hx-counter/hx-counter.d.ts.map +1 -1
  79. package/dist/components/hx-counter/index.js +1 -1
  80. package/dist/components/hx-data-table/hx-data-table.d.ts +29 -0
  81. package/dist/components/hx-data-table/hx-data-table.d.ts.map +1 -1
  82. package/dist/components/hx-data-table/hx-data-table.styles.d.ts.map +1 -1
  83. package/dist/components/hx-data-table/index.js +1 -1
  84. package/dist/components/hx-date-picker/hx-date-picker.d.ts +44 -0
  85. package/dist/components/hx-date-picker/hx-date-picker.d.ts.map +1 -1
  86. package/dist/components/hx-date-picker/hx-date-picker.styles.d.ts.map +1 -1
  87. package/dist/components/hx-date-picker/index.js +1 -1
  88. package/dist/components/hx-dialog/hx-dialog.d.ts +31 -0
  89. package/dist/components/hx-dialog/hx-dialog.d.ts.map +1 -1
  90. package/dist/components/hx-dialog/hx-dialog.styles.d.ts +10 -0
  91. package/dist/components/hx-dialog/hx-dialog.styles.d.ts.map +1 -1
  92. package/dist/components/hx-dialog/index.js +1 -1
  93. package/dist/components/hx-divider/hx-divider.d.ts +9 -0
  94. package/dist/components/hx-divider/hx-divider.d.ts.map +1 -1
  95. package/dist/components/hx-divider/index.js +1 -1
  96. package/dist/components/hx-drawer/hx-drawer.d.ts +30 -0
  97. package/dist/components/hx-drawer/hx-drawer.d.ts.map +1 -1
  98. package/dist/components/hx-drawer/hx-drawer.styles.d.ts +10 -0
  99. package/dist/components/hx-drawer/hx-drawer.styles.d.ts.map +1 -1
  100. package/dist/components/hx-drawer/index.js +1 -1
  101. package/dist/components/hx-dropdown/hx-dropdown.d.ts +6 -0
  102. package/dist/components/hx-dropdown/hx-dropdown.d.ts.map +1 -1
  103. package/dist/components/hx-dropdown/index.js +1 -1
  104. package/dist/components/hx-field/hx-field.d.ts +15 -0
  105. package/dist/components/hx-field/hx-field.d.ts.map +1 -1
  106. package/dist/components/hx-field/index.js +1 -1
  107. package/dist/components/hx-field-label/hx-field-label.d.ts +11 -0
  108. package/dist/components/hx-field-label/hx-field-label.d.ts.map +1 -1
  109. package/dist/components/hx-field-label/index.js +1 -1
  110. package/dist/components/hx-file-upload/hx-file-upload.d.ts +35 -0
  111. package/dist/components/hx-file-upload/hx-file-upload.d.ts.map +1 -1
  112. package/dist/components/hx-file-upload/hx-file-upload.styles.d.ts.map +1 -1
  113. package/dist/components/hx-file-upload/index.js +1 -1
  114. package/dist/components/hx-form/index.js +1 -1
  115. package/dist/components/hx-grid/hx-grid.d.ts +5 -0
  116. package/dist/components/hx-grid/hx-grid.d.ts.map +1 -1
  117. package/dist/components/hx-help-text/hx-help-text.d.ts +8 -0
  118. package/dist/components/hx-help-text/hx-help-text.d.ts.map +1 -1
  119. package/dist/components/hx-help-text/index.js +1 -1
  120. package/dist/components/hx-icon/hx-icon.d.ts +5 -0
  121. package/dist/components/hx-icon/hx-icon.d.ts.map +1 -1
  122. package/dist/components/hx-icon/index.js +1 -1
  123. package/dist/components/hx-icon-button/hx-icon-button.d.ts +27 -0
  124. package/dist/components/hx-icon-button/hx-icon-button.d.ts.map +1 -1
  125. package/dist/components/hx-icon-button/hx-icon-button.styles.d.ts.map +1 -1
  126. package/dist/components/hx-icon-button/index.js +1 -1
  127. package/dist/components/hx-image/hx-image.d.ts +4 -0
  128. package/dist/components/hx-image/hx-image.d.ts.map +1 -1
  129. package/dist/components/hx-image/index.js +1 -1
  130. package/dist/components/hx-link/hx-link.d.ts +15 -0
  131. package/dist/components/hx-link/hx-link.d.ts.map +1 -1
  132. package/dist/components/hx-link/hx-link.styles.d.ts.map +1 -1
  133. package/dist/components/hx-link/index.js +1 -1
  134. package/dist/components/hx-list/hx-list-item.d.ts.map +1 -1
  135. package/dist/components/hx-list/hx-list-item.styles.d.ts.map +1 -1
  136. package/dist/components/hx-list/hx-list.d.ts +3 -0
  137. package/dist/components/hx-list/hx-list.d.ts.map +1 -1
  138. package/dist/components/hx-list/index.js +1 -1
  139. package/dist/components/hx-menu/hx-menu-divider.d.ts.map +1 -1
  140. package/dist/components/hx-menu/hx-menu-item.d.ts.map +1 -1
  141. package/dist/components/hx-menu/hx-menu.d.ts +6 -0
  142. package/dist/components/hx-menu/hx-menu.d.ts.map +1 -1
  143. package/dist/components/hx-menu/index.js +1 -1
  144. package/dist/components/hx-meter/hx-meter.d.ts +23 -0
  145. package/dist/components/hx-meter/hx-meter.d.ts.map +1 -1
  146. package/dist/components/hx-meter/index.js +1 -1
  147. package/dist/components/hx-nav/hx-nav.d.ts +29 -0
  148. package/dist/components/hx-nav/hx-nav.d.ts.map +1 -1
  149. package/dist/components/hx-nav/index.js +1 -1
  150. package/dist/components/hx-number-input/hx-number-input.d.ts +34 -0
  151. package/dist/components/hx-number-input/hx-number-input.d.ts.map +1 -1
  152. package/dist/components/hx-number-input/index.js +1 -1
  153. package/dist/components/hx-overflow-menu/hx-overflow-menu.d.ts +26 -0
  154. package/dist/components/hx-overflow-menu/hx-overflow-menu.d.ts.map +1 -1
  155. package/dist/components/hx-overflow-menu/hx-overflow-menu.styles.d.ts.map +1 -1
  156. package/dist/components/hx-overflow-menu/index.js +1 -1
  157. package/dist/components/hx-pagination/hx-pagination.d.ts +21 -0
  158. package/dist/components/hx-pagination/hx-pagination.d.ts.map +1 -1
  159. package/dist/components/hx-pagination/index.js +1 -1
  160. package/dist/components/hx-patient-banner/hx-patient-banner.d.ts +23 -0
  161. package/dist/components/hx-patient-banner/hx-patient-banner.d.ts.map +1 -1
  162. package/dist/components/hx-patient-banner/hx-patient-banner.styles.d.ts.map +1 -1
  163. package/dist/components/hx-patient-banner/index.js +1 -1
  164. package/dist/components/hx-phi-field/hx-phi-field.d.ts +19 -5
  165. package/dist/components/hx-phi-field/hx-phi-field.d.ts.map +1 -1
  166. package/dist/components/hx-phi-field/hx-phi-field.styles.d.ts.map +1 -1
  167. package/dist/components/hx-phi-field/index.js +1 -1
  168. package/dist/components/hx-popover/hx-popover.d.ts +15 -0
  169. package/dist/components/hx-popover/hx-popover.d.ts.map +1 -1
  170. package/dist/components/hx-popover/hx-popover.styles.d.ts +9 -0
  171. package/dist/components/hx-popover/hx-popover.styles.d.ts.map +1 -1
  172. package/dist/components/hx-popover/index.js +1 -1
  173. package/dist/components/hx-popup/hx-popup.d.ts +1 -0
  174. package/dist/components/hx-popup/hx-popup.d.ts.map +1 -1
  175. package/dist/components/hx-popup/hx-popup.styles.d.ts +9 -0
  176. package/dist/components/hx-popup/hx-popup.styles.d.ts.map +1 -1
  177. package/dist/components/hx-popup/index.js +1 -1
  178. package/dist/components/hx-progress-bar/hx-progress-bar.d.ts +17 -0
  179. package/dist/components/hx-progress-bar/hx-progress-bar.d.ts.map +1 -1
  180. package/dist/components/hx-progress-bar/index.js +1 -1
  181. package/dist/components/hx-progress-ring/hx-progress-ring.d.ts +15 -0
  182. package/dist/components/hx-progress-ring/hx-progress-ring.d.ts.map +1 -1
  183. package/dist/components/hx-progress-ring/index.js +1 -1
  184. package/dist/components/hx-prose/hx-prose.d.ts +2 -0
  185. package/dist/components/hx-prose/hx-prose.d.ts.map +1 -1
  186. package/dist/components/hx-prose/index.js +1 -1
  187. package/dist/components/hx-radio-group/hx-radio-group.d.ts +17 -3
  188. package/dist/components/hx-radio-group/hx-radio-group.d.ts.map +1 -1
  189. package/dist/components/hx-radio-group/hx-radio.d.ts +5 -5
  190. package/dist/components/hx-radio-group/hx-radio.d.ts.map +1 -1
  191. package/dist/components/hx-radio-group/hx-radio.styles.d.ts.map +1 -1
  192. package/dist/components/hx-radio-group/index.js +1 -1
  193. package/dist/components/hx-rating/hx-rating.d.ts +13 -0
  194. package/dist/components/hx-rating/hx-rating.d.ts.map +1 -1
  195. package/dist/components/hx-rating/hx-rating.styles.d.ts.map +1 -1
  196. package/dist/components/hx-rating/index.js +1 -1
  197. package/dist/components/hx-select/hx-select.d.ts +43 -0
  198. package/dist/components/hx-select/hx-select.d.ts.map +1 -1
  199. package/dist/components/hx-select/hx-select.styles.d.ts.map +1 -1
  200. package/dist/components/hx-select/index.js +1 -1
  201. package/dist/components/hx-side-nav/hx-nav-item.d.ts +7 -5
  202. package/dist/components/hx-side-nav/hx-nav-item.d.ts.map +1 -1
  203. package/dist/components/hx-side-nav/hx-nav-item.styles.d.ts.map +1 -1
  204. package/dist/components/hx-side-nav/hx-side-nav.d.ts +9 -4
  205. package/dist/components/hx-side-nav/hx-side-nav.d.ts.map +1 -1
  206. package/dist/components/hx-side-nav/hx-side-nav.styles.d.ts.map +1 -1
  207. package/dist/components/hx-side-nav/index.js +1 -1
  208. package/dist/components/hx-skeleton/hx-skeleton.d.ts +5 -0
  209. package/dist/components/hx-skeleton/hx-skeleton.d.ts.map +1 -1
  210. package/dist/components/hx-skeleton/index.js +1 -1
  211. package/dist/components/hx-slider/hx-slider.d.ts +38 -0
  212. package/dist/components/hx-slider/hx-slider.d.ts.map +1 -1
  213. package/dist/components/hx-slider/index.js +1 -1
  214. package/dist/components/hx-spinner/hx-spinner.d.ts +10 -0
  215. package/dist/components/hx-spinner/hx-spinner.d.ts.map +1 -1
  216. package/dist/components/hx-spinner/index.js +1 -1
  217. package/dist/components/hx-split-button/hx-split-button.d.ts +40 -1
  218. package/dist/components/hx-split-button/hx-split-button.d.ts.map +1 -1
  219. package/dist/components/hx-split-button/hx-split-button.styles.d.ts.map +1 -1
  220. package/dist/components/hx-split-button/index.js +1 -1
  221. package/dist/components/hx-split-panel/hx-split-panel.d.ts +12 -0
  222. package/dist/components/hx-split-panel/hx-split-panel.d.ts.map +1 -1
  223. package/dist/components/hx-split-panel/hx-split-panel.styles.d.ts.map +1 -1
  224. package/dist/components/hx-split-panel/index.js +1 -1
  225. package/dist/components/hx-stack/hx-stack.d.ts +5 -0
  226. package/dist/components/hx-stack/hx-stack.d.ts.map +1 -1
  227. package/dist/components/hx-stat/hx-stat.d.ts +24 -0
  228. package/dist/components/hx-stat/hx-stat.d.ts.map +1 -1
  229. package/dist/components/hx-stat/index.js +1 -1
  230. package/dist/components/hx-status-indicator/hx-status-indicator.d.ts +13 -0
  231. package/dist/components/hx-status-indicator/hx-status-indicator.d.ts.map +1 -1
  232. package/dist/components/hx-status-indicator/index.js +1 -1
  233. package/dist/components/hx-steps/hx-step.d.ts.map +1 -1
  234. package/dist/components/hx-steps/hx-step.styles.d.ts.map +1 -1
  235. package/dist/components/hx-steps/hx-steps.d.ts +15 -0
  236. package/dist/components/hx-steps/hx-steps.d.ts.map +1 -1
  237. package/dist/components/hx-steps/index.js +1 -1
  238. package/dist/components/hx-structured-list/hx-structured-list.d.ts +7 -0
  239. package/dist/components/hx-structured-list/hx-structured-list.d.ts.map +1 -1
  240. package/dist/components/hx-structured-list/index.js +1 -1
  241. package/dist/components/hx-switch/hx-switch.d.ts +42 -0
  242. package/dist/components/hx-switch/hx-switch.d.ts.map +1 -1
  243. package/dist/components/hx-switch/hx-switch.styles.d.ts.map +1 -1
  244. package/dist/components/hx-switch/index.js +1 -1
  245. package/dist/components/hx-table/hx-table.d.ts +20 -6
  246. package/dist/components/hx-table/hx-table.d.ts.map +1 -1
  247. package/dist/components/hx-table/hx-table.styles.d.ts.map +1 -1
  248. package/dist/components/hx-table/hx-td.d.ts +1 -1
  249. package/dist/components/hx-table/index.js +1 -1
  250. package/dist/components/hx-tabs/hx-tab-panel.d.ts +2 -2
  251. package/dist/components/hx-tabs/hx-tab-panel.d.ts.map +1 -1
  252. package/dist/components/hx-tabs/hx-tab-panel.styles.d.ts.map +1 -1
  253. package/dist/components/hx-tabs/hx-tab.d.ts +6 -6
  254. package/dist/components/hx-tabs/hx-tab.d.ts.map +1 -1
  255. package/dist/components/hx-tabs/hx-tab.styles.d.ts.map +1 -1
  256. package/dist/components/hx-tabs/hx-tabs.d.ts +12 -8
  257. package/dist/components/hx-tabs/hx-tabs.d.ts.map +1 -1
  258. package/dist/components/hx-tabs/index.js +1 -1
  259. package/dist/components/hx-tag/hx-tag.d.ts +36 -0
  260. package/dist/components/hx-tag/hx-tag.d.ts.map +1 -1
  261. package/dist/components/hx-tag/index.js +1 -1
  262. package/dist/components/hx-text/hx-text.d.ts +22 -0
  263. package/dist/components/hx-text/hx-text.d.ts.map +1 -1
  264. package/dist/components/hx-text/hx-text.styles.d.ts.map +1 -1
  265. package/dist/components/hx-text/index.js +1 -1
  266. package/dist/components/hx-text-input/hx-text-input.d.ts +18 -5
  267. package/dist/components/hx-text-input/hx-text-input.d.ts.map +1 -1
  268. package/dist/components/hx-text-input/hx-text-input.styles.d.ts +12 -0
  269. package/dist/components/hx-text-input/hx-text-input.styles.d.ts.map +1 -1
  270. package/dist/components/hx-text-input/index.js +1 -1
  271. package/dist/components/hx-textarea/hx-textarea.d.ts +27 -0
  272. package/dist/components/hx-textarea/hx-textarea.d.ts.map +1 -1
  273. package/dist/components/hx-textarea/hx-textarea.styles.d.ts.map +1 -1
  274. package/dist/components/hx-textarea/index.js +1 -1
  275. package/dist/components/hx-theme/hx-theme.d.ts +3 -0
  276. package/dist/components/hx-theme/hx-theme.d.ts.map +1 -1
  277. package/dist/components/hx-theme/index.js +1 -1
  278. package/dist/components/hx-time-picker/hx-time-picker.d.ts +32 -0
  279. package/dist/components/hx-time-picker/hx-time-picker.d.ts.map +1 -1
  280. package/dist/components/hx-time-picker/hx-time-picker.styles.d.ts.map +1 -1
  281. package/dist/components/hx-time-picker/index.js +1 -1
  282. package/dist/components/hx-toast/hx-toast.d.ts +30 -2
  283. package/dist/components/hx-toast/hx-toast.d.ts.map +1 -1
  284. package/dist/components/hx-toast/hx-toast.styles.d.ts +10 -0
  285. package/dist/components/hx-toast/hx-toast.styles.d.ts.map +1 -1
  286. package/dist/components/hx-toast/index.js +1 -1
  287. package/dist/components/hx-toggle-button/hx-toggle-button.d.ts +35 -0
  288. package/dist/components/hx-toggle-button/hx-toggle-button.d.ts.map +1 -1
  289. package/dist/components/hx-toggle-button/hx-toggle-button.styles.d.ts.map +1 -1
  290. package/dist/components/hx-toggle-button/index.js +1 -1
  291. package/dist/components/hx-tooltip/hx-tooltip.d.ts +13 -0
  292. package/dist/components/hx-tooltip/hx-tooltip.d.ts.map +1 -1
  293. package/dist/components/hx-tooltip/hx-tooltip.styles.d.ts +8 -0
  294. package/dist/components/hx-tooltip/hx-tooltip.styles.d.ts.map +1 -1
  295. package/dist/components/hx-tooltip/index.js +1 -1
  296. package/dist/components/hx-top-nav/hx-top-nav.d.ts +21 -0
  297. package/dist/components/hx-top-nav/hx-top-nav.d.ts.map +1 -1
  298. package/dist/components/hx-top-nav/index.js +1 -1
  299. package/dist/components/hx-tree-view/hx-tree-item.d.ts.map +1 -1
  300. package/dist/components/hx-tree-view/hx-tree-view.d.ts +6 -0
  301. package/dist/components/hx-tree-view/hx-tree-view.d.ts.map +1 -1
  302. package/dist/components/hx-tree-view/hx-tree-view.styles.d.ts.map +1 -1
  303. package/dist/components/hx-tree-view/index.js +1 -1
  304. package/dist/css/helix-all.css +1273 -939
  305. package/dist/css/helix-core.css +327 -170
  306. package/dist/css/helix-data.css +54 -48
  307. package/dist/css/helix-feedback.css +123 -95
  308. package/dist/css/helix-forms.css +490 -387
  309. package/dist/css/helix-layout.css +9 -12
  310. package/dist/css/helix-media.css +16 -12
  311. package/dist/css/helix-navigation.css +86 -67
  312. package/dist/css/helix-overlay.css +62 -56
  313. package/dist/css/helix-tokens.css +173 -106
  314. package/dist/css/helix-utility.css +57 -46
  315. package/dist/css/hx-action-bar.css +5 -5
  316. package/dist/css/hx-alert.css +24 -23
  317. package/dist/css/hx-avatar.css +3 -3
  318. package/dist/css/hx-badge.css +22 -22
  319. package/dist/css/hx-banner.css +25 -24
  320. package/dist/css/hx-button-group.css +31 -14
  321. package/dist/css/hx-button.css +156 -34
  322. package/dist/css/hx-card.css +23 -12
  323. package/dist/css/hx-carousel.css +16 -12
  324. package/dist/css/hx-checkbox-group.css +5 -5
  325. package/dist/css/hx-checkbox.css +19 -22
  326. package/dist/css/hx-clinical-status.css +28 -30
  327. package/dist/css/hx-code-snippet.css +26 -20
  328. package/dist/css/hx-color-picker.css +20 -13
  329. package/dist/css/hx-combobox.css +31 -37
  330. package/dist/css/hx-copy-button.css +6 -3
  331. package/dist/css/hx-counter.css +1 -1
  332. package/dist/css/hx-data-table.css +16 -15
  333. package/dist/css/hx-date-picker.css +34 -50
  334. package/dist/css/hx-dialog.css +31 -27
  335. package/dist/css/hx-divider.css +2 -2
  336. package/dist/css/hx-drawer.css +18 -18
  337. package/dist/css/hx-dropdown.css +2 -2
  338. package/dist/css/hx-field-label.css +3 -3
  339. package/dist/css/hx-field.css +6 -6
  340. package/dist/css/hx-file-upload.css +21 -30
  341. package/dist/css/hx-help-text.css +5 -5
  342. package/dist/css/hx-icon-button.css +46 -38
  343. package/dist/css/hx-image.css +3 -3
  344. package/dist/css/hx-link.css +9 -12
  345. package/dist/css/hx-list.css +1 -1
  346. package/dist/css/hx-menu.css +2 -2
  347. package/dist/css/hx-meter.css +10 -10
  348. package/dist/css/hx-nav.css +11 -11
  349. package/dist/css/hx-number-input.css +18 -18
  350. package/dist/css/hx-overflow-menu.css +18 -15
  351. package/dist/css/hx-pagination.css +15 -15
  352. package/dist/css/hx-patient-banner.css +17 -9
  353. package/dist/css/hx-phi-field.css +4 -7
  354. package/dist/css/hx-popover.css +7 -6
  355. package/dist/css/hx-progress-bar.css +7 -7
  356. package/dist/css/hx-progress-ring.css +6 -6
  357. package/dist/css/hx-radio-group.css +5 -5
  358. package/dist/css/hx-rating.css +5 -6
  359. package/dist/css/hx-select.css +18 -19
  360. package/dist/css/hx-side-nav.css +28 -11
  361. package/dist/css/hx-skeleton.css +1 -1
  362. package/dist/css/hx-slider.css +15 -15
  363. package/dist/css/hx-spinner.css +4 -4
  364. package/dist/css/hx-split-button.css +45 -37
  365. package/dist/css/hx-split-panel.css +9 -12
  366. package/dist/css/hx-stat.css +8 -8
  367. package/dist/css/hx-status-indicator.css +7 -7
  368. package/dist/css/hx-structured-list.css +5 -5
  369. package/dist/css/hx-switch.css +16 -11
  370. package/dist/css/hx-table.css +6 -7
  371. package/dist/css/hx-tabs.css +3 -3
  372. package/dist/css/hx-tag.css +18 -18
  373. package/dist/css/hx-text-input.css +133 -61
  374. package/dist/css/hx-text.css +9 -7
  375. package/dist/css/hx-textarea.css +63 -27
  376. package/dist/css/hx-time-picker.css +27 -21
  377. package/dist/css/hx-toast.css +36 -10
  378. package/dist/css/hx-toggle-button.css +46 -33
  379. package/dist/css/hx-tooltip.css +4 -3
  380. package/dist/css/hx-top-nav.css +8 -8
  381. package/dist/css/hx-tree-view.css +1 -2
  382. package/dist/css/index.css +1 -1
  383. package/dist/css/manifest.json +332 -230
  384. package/dist/index.js +75 -75
  385. package/dist/shared/forced-colors-CTEDFRGa.js +117 -0
  386. package/dist/shared/forced-colors-CTEDFRGa.js.map +1 -0
  387. package/dist/shared/{hx-accordion-Wt52OOZD.js → hx-accordion-ZVzgDzTG.js} +29 -29
  388. package/dist/shared/hx-accordion-ZVzgDzTG.js.map +1 -0
  389. package/dist/shared/{hx-action-bar-BKMADbHj.js → hx-action-bar-CitgcpGv.js} +38 -37
  390. package/dist/shared/hx-action-bar-CitgcpGv.js.map +1 -0
  391. package/dist/shared/{hx-alert-D7n94HwI.js → hx-alert-CLn7CstP.js} +33 -31
  392. package/dist/shared/hx-alert-CLn7CstP.js.map +1 -0
  393. package/dist/shared/{hx-avatar-iLYzu8MJ.js → hx-avatar-C9hOmlAb.js} +19 -18
  394. package/dist/shared/hx-avatar-C9hOmlAb.js.map +1 -0
  395. package/dist/shared/{hx-badge-CVCmMPyW.js → hx-badge-CQXgOXJM.js} +65 -64
  396. package/dist/shared/hx-badge-CQXgOXJM.js.map +1 -0
  397. package/dist/shared/{hx-banner-C_He7Tr4.js → hx-banner-D3DzpfcP.js} +39 -37
  398. package/dist/shared/hx-banner-D3DzpfcP.js.map +1 -0
  399. package/dist/shared/{hx-breadcrumb-item-CldCwD1d.js → hx-breadcrumb-item-3tKppF9h.js} +24 -26
  400. package/dist/shared/hx-breadcrumb-item-3tKppF9h.js.map +1 -0
  401. package/dist/shared/{hx-button-Ddl-T6T-.js → hx-button-CHlkRQTe.js} +183 -61
  402. package/dist/shared/hx-button-CHlkRQTe.js.map +1 -0
  403. package/dist/shared/{hx-button-group-BJOGWoMa.js → hx-button-group-BI-QBqmO.js} +45 -27
  404. package/dist/shared/hx-button-group-BI-QBqmO.js.map +1 -0
  405. package/dist/shared/{hx-card-ycveujjL.js → hx-card-qNAM2QNV.js} +49 -37
  406. package/dist/shared/hx-card-qNAM2QNV.js.map +1 -0
  407. package/dist/shared/{hx-carousel-item-D_dCv61-.js → hx-carousel-item-z1Lc24op.js} +41 -36
  408. package/dist/shared/hx-carousel-item-z1Lc24op.js.map +1 -0
  409. package/dist/shared/{hx-checkbox-DkkoWoye.js → hx-checkbox-D7xma9YH.js} +38 -40
  410. package/dist/shared/hx-checkbox-D7xma9YH.js.map +1 -0
  411. package/dist/shared/{hx-checkbox-group-C3poJ-Zw.js → hx-checkbox-group-C9n315Ju.js} +20 -19
  412. package/dist/shared/hx-checkbox-group-C9n315Ju.js.map +1 -0
  413. package/dist/shared/{hx-clinical-status-BS5lcddT.js → hx-clinical-status-D3XQIOqX.js} +55 -56
  414. package/dist/shared/hx-clinical-status-D3XQIOqX.js.map +1 -0
  415. package/dist/shared/{hx-code-snippet-B7wUKzyb.js → hx-code-snippet-Bi-arDKH.js} +41 -34
  416. package/dist/shared/hx-code-snippet-Bi-arDKH.js.map +1 -0
  417. package/dist/shared/{hx-color-picker-DBaKTVLr.js → hx-color-picker-uRc865FJ.js} +54 -46
  418. package/dist/shared/hx-color-picker-uRc865FJ.js.map +1 -0
  419. package/dist/shared/{hx-combobox-BmgYT7Ar.js → hx-combobox-DDzqNKEW.js} +43 -48
  420. package/dist/shared/hx-combobox-DDzqNKEW.js.map +1 -0
  421. package/dist/shared/hx-container-DVI7sxfX.js.map +1 -1
  422. package/dist/shared/{hx-copy-button-8deNUdwP.js → hx-copy-button-sUVuikyH.js} +23 -19
  423. package/dist/shared/hx-copy-button-sUVuikyH.js.map +1 -0
  424. package/dist/shared/{hx-counter-CKfl_g8K.js → hx-counter-0zYapFhf.js} +10 -9
  425. package/dist/shared/hx-counter-0zYapFhf.js.map +1 -0
  426. package/dist/shared/{hx-data-table-B6h0RPn0.js → hx-data-table-CLqVqdxr.js} +49 -47
  427. package/dist/shared/hx-data-table-CLqVqdxr.js.map +1 -0
  428. package/dist/shared/{hx-date-picker-Dq2Nb68_.js → hx-date-picker-2iRG1p74.js} +51 -66
  429. package/dist/shared/hx-date-picker-2iRG1p74.js.map +1 -0
  430. package/dist/shared/{hx-dialog-CvIlY0Tc.js → hx-dialog-DRN_1-Y-.js} +68 -63
  431. package/dist/shared/hx-dialog-DRN_1-Y-.js.map +1 -0
  432. package/dist/shared/{hx-divider-DwpOrzMW.js → hx-divider-CYfcUjcr.js} +18 -17
  433. package/dist/shared/hx-divider-CYfcUjcr.js.map +1 -0
  434. package/dist/shared/{hx-drawer-Cx2ZJhBe.js → hx-drawer-Y1Ui2IWJ.js} +31 -30
  435. package/dist/shared/hx-drawer-Y1Ui2IWJ.js.map +1 -0
  436. package/dist/shared/{hx-dropdown-BjDrPUq5.js → hx-dropdown-LyaRc8Rf.js} +16 -15
  437. package/dist/shared/hx-dropdown-LyaRc8Rf.js.map +1 -0
  438. package/dist/shared/{hx-field-Dp3qQMut.js → hx-field-B3Qo8OLS.js} +15 -15
  439. package/dist/shared/hx-field-B3Qo8OLS.js.map +1 -0
  440. package/dist/shared/{hx-field-label-BC8QViXv.js → hx-field-label-BVRyyKeh.js} +8 -7
  441. package/dist/shared/hx-field-label-BVRyyKeh.js.map +1 -0
  442. package/dist/shared/{hx-file-upload-B6Yl1u0i.js → hx-file-upload-D3rKROK5.js} +51 -59
  443. package/dist/shared/hx-file-upload-D3rKROK5.js.map +1 -0
  444. package/dist/shared/hx-form-CkChEATa.js +257 -0
  445. package/dist/shared/hx-form-CkChEATa.js.map +1 -0
  446. package/dist/shared/hx-grid-CXZf3jeK.js.map +1 -1
  447. package/dist/shared/{hx-help-text-D7eytSim.js → hx-help-text-Xb2Yr8x2.js} +30 -29
  448. package/dist/shared/hx-help-text-Xb2Yr8x2.js.map +1 -0
  449. package/dist/shared/{hx-icon-button-BHneqPCU.js → hx-icon-button-CGNdQSFM.js} +78 -69
  450. package/dist/shared/hx-icon-button-CGNdQSFM.js.map +1 -0
  451. package/dist/shared/{hx-icon-CcyDPDYY.js → hx-icon-fuVm4-bk.js} +15 -14
  452. package/dist/shared/hx-icon-fuVm4-bk.js.map +1 -0
  453. package/dist/shared/{hx-image-2gt14zZd.js → hx-image-Ben_4yM5.js} +18 -17
  454. package/dist/shared/hx-image-Ben_4yM5.js.map +1 -0
  455. package/dist/shared/{hx-link-BESrWK8M.js → hx-link-C-O6vq0Q.js} +20 -22
  456. package/dist/shared/hx-link-C-O6vq0Q.js.map +1 -0
  457. package/dist/shared/{hx-list-_9qVv02L.js → hx-list-MyEhh8c7.js} +22 -23
  458. package/dist/shared/hx-list-MyEhh8c7.js.map +1 -0
  459. package/dist/shared/{hx-menu-divider-Ck-9Os1t.js → hx-menu-divider-C2omnPtj.js} +50 -49
  460. package/dist/shared/hx-menu-divider-C2omnPtj.js.map +1 -0
  461. package/dist/shared/{hx-meter-TbROk-dw.js → hx-meter-BPscsw5t.js} +41 -40
  462. package/dist/shared/{hx-meter-TbROk-dw.js.map → hx-meter-BPscsw5t.js.map} +1 -1
  463. package/dist/shared/{hx-nav-item-pqPasRUm.js → hx-nav-item-Dap3DYgB.js} +143 -81
  464. package/dist/shared/hx-nav-item-Dap3DYgB.js.map +1 -0
  465. package/dist/shared/{hx-nav-BcYDmjf7.js → hx-nav-ldFM3Fle.js} +54 -53
  466. package/dist/shared/hx-nav-ldFM3Fle.js.map +1 -0
  467. package/dist/shared/{hx-number-input-mOIZ3-46.js → hx-number-input-yUzFOSC1.js} +68 -67
  468. package/dist/shared/hx-number-input-yUzFOSC1.js.map +1 -0
  469. package/dist/shared/{hx-overflow-menu-Dprb9lnT.js → hx-overflow-menu-DCLsdIBy.js} +33 -29
  470. package/dist/shared/hx-overflow-menu-DCLsdIBy.js.map +1 -0
  471. package/dist/shared/{hx-pagination-AguTQjYC.js → hx-pagination-C7y8GVyU.js} +43 -42
  472. package/dist/shared/hx-pagination-C7y8GVyU.js.map +1 -0
  473. package/dist/shared/{hx-patient-banner-uE6gqLpT.js → hx-patient-banner-CkS-Lmj4.js} +29 -20
  474. package/dist/shared/hx-patient-banner-CkS-Lmj4.js.map +1 -0
  475. package/dist/shared/{hx-phi-field-BC_XowhC.js → hx-phi-field-C19oxlrr.js} +13 -15
  476. package/dist/shared/hx-phi-field-C19oxlrr.js.map +1 -0
  477. package/dist/shared/{hx-popover-B2_203ct.js → hx-popover-B-FP3-wW.js} +31 -29
  478. package/dist/shared/hx-popover-B-FP3-wW.js.map +1 -0
  479. package/dist/shared/{hx-popup-DZXpsJ1R.js → hx-popup-COUXXZ9X.js} +8 -7
  480. package/dist/shared/hx-popup-COUXXZ9X.js.map +1 -0
  481. package/dist/shared/{hx-progress-bar-KjEkEJLy.js → hx-progress-bar-Bn3JEPUf.js} +28 -27
  482. package/dist/shared/hx-progress-bar-Bn3JEPUf.js.map +1 -0
  483. package/dist/shared/{hx-progress-ring-3zMwvrwD.js → hx-progress-ring-TwHyXeEp.js} +15 -14
  484. package/dist/shared/hx-progress-ring-TwHyXeEp.js.map +1 -0
  485. package/dist/shared/{hx-prose-BCtK7YL6.js → hx-prose-BThYcASV.js} +12 -12
  486. package/dist/shared/{hx-prose-BCtK7YL6.js.map → hx-prose-BThYcASV.js.map} +1 -1
  487. package/dist/shared/{hx-radio-BBC5qZgE.js → hx-radio-CJvNU2yP.js} +38 -40
  488. package/dist/shared/hx-radio-CJvNU2yP.js.map +1 -0
  489. package/dist/shared/{hx-rating-C3E3ENJb.js → hx-rating-C3QP53k9.js} +38 -38
  490. package/dist/shared/hx-rating-C3QP53k9.js.map +1 -0
  491. package/dist/shared/{hx-select-CixTo7jp.js → hx-select-C8fEHQhC.js} +64 -64
  492. package/dist/shared/hx-select-C8fEHQhC.js.map +1 -0
  493. package/dist/shared/{hx-skeleton-LxkI0pxr.js → hx-skeleton-Cnieh5Uc.js} +14 -13
  494. package/dist/shared/hx-skeleton-Cnieh5Uc.js.map +1 -0
  495. package/dist/shared/{hx-slider-DFHuzF3N.js → hx-slider-Blmv_rwS.js} +70 -69
  496. package/dist/shared/hx-slider-Blmv_rwS.js.map +1 -0
  497. package/dist/shared/{hx-spinner-BKjuCdZB.js → hx-spinner-DL5AYr16.js} +18 -17
  498. package/dist/shared/hx-spinner-DL5AYr16.js.map +1 -0
  499. package/dist/shared/{hx-split-button-CGcJMmCG.js → hx-split-button-Djnc5Aeg.js} +74 -65
  500. package/dist/shared/hx-split-button-Djnc5Aeg.js.map +1 -0
  501. package/dist/shared/{hx-split-panel-C-1R10Mc.js → hx-split-panel-B-u0Z3mm.js} +16 -18
  502. package/dist/shared/hx-split-panel-B-u0Z3mm.js.map +1 -0
  503. package/dist/shared/hx-stack-DGfcOfWJ.js.map +1 -1
  504. package/dist/shared/{hx-stat-BTpykQAt.js → hx-stat-WOcNV1Ry.js} +16 -15
  505. package/dist/shared/hx-stat-WOcNV1Ry.js.map +1 -0
  506. package/dist/shared/{hx-status-indicator-X2QEWNFt.js → hx-status-indicator-BlQyen43.js} +17 -16
  507. package/dist/shared/hx-status-indicator-BlQyen43.js.map +1 -0
  508. package/dist/shared/{hx-step-CRNQlmSo.js → hx-step-R2rjp1fT.js} +60 -50
  509. package/dist/shared/hx-step-R2rjp1fT.js.map +1 -0
  510. package/dist/shared/{hx-structured-list-CqNbaEXg.js → hx-structured-list-m_-dMJbC.js} +18 -17
  511. package/dist/shared/hx-structured-list-m_-dMJbC.js.map +1 -0
  512. package/dist/shared/{hx-switch-DqOD9JR7.js → hx-switch-BrZFaRue.js} +31 -25
  513. package/dist/shared/hx-switch-BrZFaRue.js.map +1 -0
  514. package/dist/shared/{hx-tab-panel-BIzKfW5i.js → hx-tab-panel-DspCrKqo.js} +45 -50
  515. package/dist/shared/hx-tab-panel-DspCrKqo.js.map +1 -0
  516. package/dist/shared/{hx-tag-CgnrNnte.js → hx-tag-CNSmdyaK.js} +63 -62
  517. package/dist/shared/hx-tag-CNSmdyaK.js.map +1 -0
  518. package/dist/shared/{hx-td-Bra35cH4.js → hx-td-DnnEMIuA.js} +62 -62
  519. package/dist/shared/hx-td-DnnEMIuA.js.map +1 -0
  520. package/dist/shared/{hx-text-DMC2CPlL.js → hx-text-Bz_9fJ3J.js} +28 -25
  521. package/dist/shared/hx-text-Bz_9fJ3J.js.map +1 -0
  522. package/dist/shared/{hx-text-input--q0GH78x.js → hx-text-input-D6FlOZM-.js} +144 -72
  523. package/dist/shared/{hx-text-input--q0GH78x.js.map → hx-text-input-D6FlOZM-.js.map} +1 -1
  524. package/dist/shared/{hx-textarea-CK621vSL.js → hx-textarea-CNG590KY.js} +107 -70
  525. package/dist/shared/hx-textarea-CNG590KY.js.map +1 -0
  526. package/dist/shared/{hx-theme-DfEy-SJA.js → hx-theme-BiyQ7UUK.js} +46 -35
  527. package/dist/shared/hx-theme-BiyQ7UUK.js.map +1 -0
  528. package/dist/shared/{hx-time-picker-tPUfgElQ.js → hx-time-picker-BoEIZwzv.js} +59 -52
  529. package/dist/shared/hx-time-picker-BoEIZwzv.js.map +1 -0
  530. package/dist/shared/{hx-toggle-button-L-uBJr-a.js → hx-toggle-button-iLiYrMbD.js} +86 -72
  531. package/dist/shared/hx-toggle-button-iLiYrMbD.js.map +1 -0
  532. package/dist/shared/{hx-tooltip-B_zfKvwc.js → hx-tooltip-nYOv9OLu.js} +18 -16
  533. package/dist/shared/hx-tooltip-nYOv9OLu.js.map +1 -0
  534. package/dist/shared/{hx-top-nav-CATbRvIv.js → hx-top-nav-DP6OFS8C.js} +31 -30
  535. package/dist/shared/hx-top-nav-DP6OFS8C.js.map +1 -0
  536. package/dist/shared/{hx-tree-item-A45WCiBu.js → hx-tree-item-C2CiWuDE.js} +29 -29
  537. package/dist/shared/hx-tree-item-C2CiWuDE.js.map +1 -0
  538. package/dist/shared/{toast-factory-BPPnG3mM.js → toast-factory-YSznocIV.js} +98 -72
  539. package/dist/shared/toast-factory-YSznocIV.js.map +1 -0
  540. package/dist/styles/forced-colors.d.ts +60 -0
  541. package/dist/styles/forced-colors.d.ts.map +1 -0
  542. package/figma-inventory.json +8690 -827
  543. package/package.json +2 -2
  544. package/dist/shared/hx-accordion-Wt52OOZD.js.map +0 -1
  545. package/dist/shared/hx-action-bar-BKMADbHj.js.map +0 -1
  546. package/dist/shared/hx-alert-D7n94HwI.js.map +0 -1
  547. package/dist/shared/hx-avatar-iLYzu8MJ.js.map +0 -1
  548. package/dist/shared/hx-badge-CVCmMPyW.js.map +0 -1
  549. package/dist/shared/hx-banner-C_He7Tr4.js.map +0 -1
  550. package/dist/shared/hx-breadcrumb-item-CldCwD1d.js.map +0 -1
  551. package/dist/shared/hx-button-Ddl-T6T-.js.map +0 -1
  552. package/dist/shared/hx-button-group-BJOGWoMa.js.map +0 -1
  553. package/dist/shared/hx-card-ycveujjL.js.map +0 -1
  554. package/dist/shared/hx-carousel-item-D_dCv61-.js.map +0 -1
  555. package/dist/shared/hx-checkbox-DkkoWoye.js.map +0 -1
  556. package/dist/shared/hx-checkbox-group-C3poJ-Zw.js.map +0 -1
  557. package/dist/shared/hx-clinical-status-BS5lcddT.js.map +0 -1
  558. package/dist/shared/hx-code-snippet-B7wUKzyb.js.map +0 -1
  559. package/dist/shared/hx-color-picker-DBaKTVLr.js.map +0 -1
  560. package/dist/shared/hx-combobox-BmgYT7Ar.js.map +0 -1
  561. package/dist/shared/hx-copy-button-8deNUdwP.js.map +0 -1
  562. package/dist/shared/hx-counter-CKfl_g8K.js.map +0 -1
  563. package/dist/shared/hx-data-table-B6h0RPn0.js.map +0 -1
  564. package/dist/shared/hx-date-picker-Dq2Nb68_.js.map +0 -1
  565. package/dist/shared/hx-dialog-CvIlY0Tc.js.map +0 -1
  566. package/dist/shared/hx-divider-DwpOrzMW.js.map +0 -1
  567. package/dist/shared/hx-drawer-Cx2ZJhBe.js.map +0 -1
  568. package/dist/shared/hx-dropdown-BjDrPUq5.js.map +0 -1
  569. package/dist/shared/hx-field-Dp3qQMut.js.map +0 -1
  570. package/dist/shared/hx-field-label-BC8QViXv.js.map +0 -1
  571. package/dist/shared/hx-file-upload-B6Yl1u0i.js.map +0 -1
  572. package/dist/shared/hx-form-ButQFt9A.js +0 -257
  573. package/dist/shared/hx-form-ButQFt9A.js.map +0 -1
  574. package/dist/shared/hx-help-text-D7eytSim.js.map +0 -1
  575. package/dist/shared/hx-icon-CcyDPDYY.js.map +0 -1
  576. package/dist/shared/hx-icon-button-BHneqPCU.js.map +0 -1
  577. package/dist/shared/hx-image-2gt14zZd.js.map +0 -1
  578. package/dist/shared/hx-link-BESrWK8M.js.map +0 -1
  579. package/dist/shared/hx-list-_9qVv02L.js.map +0 -1
  580. package/dist/shared/hx-menu-divider-Ck-9Os1t.js.map +0 -1
  581. package/dist/shared/hx-nav-BcYDmjf7.js.map +0 -1
  582. package/dist/shared/hx-nav-item-pqPasRUm.js.map +0 -1
  583. package/dist/shared/hx-number-input-mOIZ3-46.js.map +0 -1
  584. package/dist/shared/hx-overflow-menu-Dprb9lnT.js.map +0 -1
  585. package/dist/shared/hx-pagination-AguTQjYC.js.map +0 -1
  586. package/dist/shared/hx-patient-banner-uE6gqLpT.js.map +0 -1
  587. package/dist/shared/hx-phi-field-BC_XowhC.js.map +0 -1
  588. package/dist/shared/hx-popover-B2_203ct.js.map +0 -1
  589. package/dist/shared/hx-popup-DZXpsJ1R.js.map +0 -1
  590. package/dist/shared/hx-progress-bar-KjEkEJLy.js.map +0 -1
  591. package/dist/shared/hx-progress-ring-3zMwvrwD.js.map +0 -1
  592. package/dist/shared/hx-radio-BBC5qZgE.js.map +0 -1
  593. package/dist/shared/hx-rating-C3E3ENJb.js.map +0 -1
  594. package/dist/shared/hx-select-CixTo7jp.js.map +0 -1
  595. package/dist/shared/hx-skeleton-LxkI0pxr.js.map +0 -1
  596. package/dist/shared/hx-slider-DFHuzF3N.js.map +0 -1
  597. package/dist/shared/hx-spinner-BKjuCdZB.js.map +0 -1
  598. package/dist/shared/hx-split-button-CGcJMmCG.js.map +0 -1
  599. package/dist/shared/hx-split-panel-C-1R10Mc.js.map +0 -1
  600. package/dist/shared/hx-stat-BTpykQAt.js.map +0 -1
  601. package/dist/shared/hx-status-indicator-X2QEWNFt.js.map +0 -1
  602. package/dist/shared/hx-step-CRNQlmSo.js.map +0 -1
  603. package/dist/shared/hx-structured-list-CqNbaEXg.js.map +0 -1
  604. package/dist/shared/hx-switch-DqOD9JR7.js.map +0 -1
  605. package/dist/shared/hx-tab-panel-BIzKfW5i.js.map +0 -1
  606. package/dist/shared/hx-tag-CgnrNnte.js.map +0 -1
  607. package/dist/shared/hx-td-Bra35cH4.js.map +0 -1
  608. package/dist/shared/hx-text-DMC2CPlL.js.map +0 -1
  609. package/dist/shared/hx-textarea-CK621vSL.js.map +0 -1
  610. package/dist/shared/hx-theme-DfEy-SJA.js.map +0 -1
  611. package/dist/shared/hx-time-picker-tPUfgElQ.js.map +0 -1
  612. package/dist/shared/hx-toggle-button-L-uBJr-a.js.map +0 -1
  613. package/dist/shared/hx-tooltip-B_zfKvwc.js.map +0 -1
  614. package/dist/shared/hx-top-nav-CATbRvIv.js.map +0 -1
  615. package/dist/shared/hx-tree-item-A45WCiBu.js.map +0 -1
  616. package/dist/shared/toast-factory-BPPnG3mM.js.map +0 -1
@@ -1,9 +1,10 @@
1
1
  import { css as x, nothing as d, html as c } from "lit";
2
- import { query as y, state as m, property as h, customElement as k } from "lit/decorators.js";
3
- import { l as E, u as v } from "./body-scroll-lock-VBa5TFP-.js";
4
- import { H as w } from "./helix-element-BNEYeiys.js";
2
+ import { query as y, state as _, property as h, customElement as k } from "lit/decorators.js";
3
+ import { l as E, u as m } from "./body-scroll-lock-VBa5TFP-.js";
4
+ import { a as w } from "./forced-colors-CTEDFRGa.js";
5
+ import { H as C } from "./helix-element-BNEYeiys.js";
5
6
  import { c as F } from "./id-counter-DuX8vsui.js";
6
- const C = x`
7
+ const T = x`
7
8
  :host {
8
9
  display: contents;
9
10
  }
@@ -29,10 +30,10 @@ const C = x`
29
30
  display: flex;
30
31
  flex-direction: column;
31
32
  position: relative;
32
- background-color: var(--hx-dialog-bg, var(--hx-color-neutral-0));
33
- color: var(--hx-dialog-color, var(--hx-color-neutral-900));
34
- border-radius: var(--hx-dialog-border-radius, var(--hx-border-radius-lg));
35
- box-shadow: var(--hx-dialog-shadow, var(--hx-shadow-xl));
33
+ background-color: var(--hx-dialog-bg, var(--hx-color-surface-default, #ffffff));
34
+ color: var(--hx-dialog-color, var(--hx-color-text-primary, #0d1825));
35
+ border-radius: var(--hx-dialog-border-radius, var(--hx-border-radius-lg, 0.5rem));
36
+ box-shadow: var(--hx-dialog-shadow, var(--hx-shadow-xl, 0 20px 25px -5px rgb(0 0 0 / 0.1)));
36
37
  width: var(--hx-dialog-width, var(--hx-container-narrow, 32rem));
37
38
  max-width: calc(100vw - var(--hx-space-8, 2rem));
38
39
  max-height: calc(100vh - var(--hx-space-8, 2rem));
@@ -65,7 +66,10 @@ const C = x`
65
66
  /* ─── Native backdrop (modal mode) ─── */
66
67
 
67
68
  dialog::backdrop {
68
- background-color: var(--hx-dialog-backdrop-color, var(--hx-color-neutral-900));
69
+ background-color: var(
70
+ --hx-dialog-backdrop-color,
71
+ var(--hx-color-surface-overlay, rgba(0, 0, 0, 0.75))
72
+ );
69
73
  opacity: 0;
70
74
  transition: opacity var(--hx-duration-normal, 200ms) var(--hx-easing-out, ease-out);
71
75
  }
@@ -85,7 +89,10 @@ const C = x`
85
89
  .dialog-backdrop {
86
90
  position: fixed;
87
91
  inset: 0;
88
- background-color: var(--hx-dialog-backdrop-color, var(--hx-color-neutral-900));
92
+ background-color: var(
93
+ --hx-dialog-backdrop-color,
94
+ var(--hx-color-surface-overlay, rgba(0, 0, 0, 0.75))
95
+ );
89
96
  opacity: var(--hx-dialog-backdrop-opacity, 0.5);
90
97
  /* D5 — backdrop z-index must be lower than the dialog element's z-index */
91
98
  z-index: var(--hx-z-index-modal, 1400);
@@ -97,20 +104,20 @@ const C = x`
97
104
  display: flex;
98
105
  align-items: center;
99
106
  justify-content: space-between;
100
- padding: var(--hx-dialog-header-padding, var(--hx-space-5) var(--hx-space-6));
101
- border-bottom: var(--hx-border-width-thin) solid
102
- var(--hx-dialog-header-border-color, var(--hx-color-neutral-200));
103
- gap: var(--hx-space-4);
107
+ padding: var(--hx-dialog-header-padding, var(--hx-space-5, 1.25rem) var(--hx-space-6, 1.5rem));
108
+ border-bottom: var(--hx-border-width-thin, 1px) solid
109
+ var(--hx-dialog-header-border-color, var(--hx-color-border-default, #d6dbd5));
110
+ gap: var(--hx-space-4, 1rem);
104
111
  flex-shrink: 0;
105
112
  }
106
113
 
107
114
  .dialog__heading {
108
115
  margin: 0;
109
- font-family: var(--hx-dialog-font-family, var(--hx-font-family-sans));
110
- font-size: var(--hx-font-size-lg);
111
- font-weight: var(--hx-font-weight-semibold);
112
- line-height: var(--hx-line-height-tight);
113
- color: var(--hx-dialog-heading-color, var(--hx-color-neutral-900));
116
+ font-family: var(--hx-dialog-font-family, var(--hx-font-family-sans, sans-serif));
117
+ font-size: var(--hx-font-size-lg, 1.125rem);
118
+ font-weight: var(--hx-font-weight-semibold, 600);
119
+ line-height: var(--hx-line-height-tight, 1.25);
120
+ color: var(--hx-dialog-heading-color, var(--hx-color-text-primary, #0d1825));
114
121
  flex: 1 1 auto;
115
122
  }
116
123
 
@@ -132,7 +139,7 @@ const C = x`
132
139
  border: none;
133
140
  border-radius: var(--hx-border-radius-sm, 0.25rem);
134
141
  cursor: pointer;
135
- color: var(--hx-color-neutral-500, #64748b);
142
+ color: var(--hx-dialog-close-btn-color, var(--hx-color-text-muted, #4a5362));
136
143
  font-size: var(--hx-font-size-xl, 1.25rem);
137
144
  line-height: 1; /* intentional literal: icon button needs line-height 1; no token maps to exactly 1 */
138
145
  transition:
@@ -145,16 +152,13 @@ const C = x`
145
152
  }
146
153
 
147
154
  .dialog__close-btn:hover {
148
- color: var(--hx-color-neutral-900);
149
- background-color: var(--hx-color-neutral-100);
155
+ color: var(--hx-dialog-close-btn-hover-color, var(--hx-color-text-primary, #0d1825));
156
+ background-color: var(--hx-dialog-close-btn-hover-bg, var(--hx-color-surface-sunken, #ebeee9));
150
157
  }
151
158
 
152
159
  .dialog__close-btn:focus-visible {
153
160
  outline: var(--hx-focus-ring-width, 2px) solid
154
- var(
155
- --hx-dialog-close-btn-focus-ring-color,
156
- var(--hx-focus-ring-color, var(--hx-color-primary-500))
157
- );
161
+ var(--hx-dialog-close-btn-focus-ring-color, var(--hx-focus-ring-color, #0f7078));
158
162
  outline-offset: var(--hx-focus-ring-offset, 2px);
159
163
  }
160
164
 
@@ -162,7 +166,7 @@ const C = x`
162
166
 
163
167
  .dialog__body {
164
168
  flex: 1 1 auto;
165
- padding: var(--hx-dialog-body-padding, var(--hx-space-6));
169
+ padding: var(--hx-dialog-body-padding, var(--hx-space-6, 1.5rem));
166
170
  overflow-y: auto;
167
171
  overscroll-behavior: contain;
168
172
  }
@@ -173,10 +177,10 @@ const C = x`
173
177
  display: flex;
174
178
  align-items: center;
175
179
  justify-content: flex-end;
176
- gap: var(--hx-space-3);
177
- padding: var(--hx-dialog-footer-padding, var(--hx-space-4) var(--hx-space-6));
178
- border-top: var(--hx-border-width-thin) solid
179
- var(--hx-dialog-footer-border-color, var(--hx-color-neutral-200));
180
+ gap: var(--hx-space-3, 0.75rem);
181
+ padding: var(--hx-dialog-footer-padding, var(--hx-space-4, 1rem) var(--hx-space-6, 1.5rem));
182
+ border-top: var(--hx-border-width-thin, 1px) solid
183
+ var(--hx-dialog-footer-border-color, var(--hx-color-border-default, #d6dbd5));
180
184
  flex-shrink: 0;
181
185
  }
182
186
 
@@ -195,6 +199,7 @@ const C = x`
195
199
  }
196
200
 
197
201
  /* ─── Forced Colors (Windows High Contrast) ─── */
202
+ /* Belt-and-suspenders: rich per-class HC overrides PLUS the forcedColorsSurface mixin. */
198
203
 
199
204
  @media (forced-colors: active) {
200
205
  .dialog {
@@ -215,12 +220,12 @@ const C = x`
215
220
  }
216
221
  }
217
222
  `;
218
- var T = Object.defineProperty, D = Object.getOwnPropertyDescriptor, s = (e, t, o, l) => {
219
- for (var a = l > 1 ? void 0 : l ? D(t, o) : t, i = e.length - 1, n; i >= 0; i--)
220
- (n = e[i]) && (a = (l ? n(t, o, a) : n(a)) || a);
221
- return l && a && T(t, o, a), a;
223
+ var S = Object.defineProperty, D = Object.getOwnPropertyDescriptor, n = (e, t, o, s) => {
224
+ for (var a = s > 1 ? void 0 : s ? D(t, o) : t, i = e.length - 1, l; i >= 0; i--)
225
+ (l = e[i]) && (a = (s ? l(t, o, a) : l(a)) || a);
226
+ return s && a && S(t, o, a), a;
222
227
  };
223
- const S = F("hx-dialog"), f = [
228
+ const $ = F("hx-dialog"), v = [
224
229
  "a[href]",
225
230
  "area[href]",
226
231
  "button:not([disabled])",
@@ -230,9 +235,9 @@ const S = F("hx-dialog"), f = [
230
235
  '[tabindex]:not([tabindex="-1"])',
231
236
  "details > summary"
232
237
  ].join(",");
233
- let r = class extends w {
238
+ let r = class extends C {
234
239
  constructor() {
235
- super(...arguments), this._hasHeaderSlot = !1, this._hasFooterSlot = !1, this._cachedFocusableElements = [], this._isTransitioning = !1, this._transitionFallbackTimer = null, this._triggerElement = null, this._pendingReturnValue = void 0, this._dialogId = S(), this._headingId = `${this._dialogId}-heading`, this._descriptionId = `${this._dialogId}-description`, this.open = !1, this.modal = !1, this.closeOnBackdrop = !0, this.heading = "", this.variant = "dialog", this.description = "", this.labelClose = "Close dialog", this._handleKeyDown = (e) => {
240
+ super(...arguments), this._hasHeaderSlot = !1, this._hasFooterSlot = !1, this._cachedFocusableElements = [], this._isTransitioning = !1, this._transitionFallbackTimer = null, this._triggerElement = null, this._pendingReturnValue = void 0, this._dialogId = $(), this._headingId = `${this._dialogId}-heading`, this._descriptionId = `${this._dialogId}-description`, this.open = !1, this.modal = !1, this.closeOnBackdrop = !0, this.heading = "", this.variant = "dialog", this.description = "", this.labelClose = "Close dialog", this._handleKeyDown = (e) => {
236
241
  if (e.key === "Escape") {
237
242
  e.preventDefault(), this._cancel();
238
243
  return;
@@ -268,7 +273,7 @@ let r = class extends w {
268
273
  !this.heading.trim() && this._hasHeaderSlot;
269
274
  }
270
275
  disconnectedCallback() {
271
- super.disconnectedCallback(), this._clearTransitionFallback(), this._isTransitioning = !1, this._removeGlobalListeners(), this.modal && this.open && v();
276
+ super.disconnectedCallback(), this._clearTransitionFallback(), this._isTransitioning = !1, this._removeGlobalListeners(), this.modal && this.open && m();
272
277
  }
273
278
  updated(e) {
274
279
  super.updated(e), e.has("open") && (this.open ? this._openDialog() : this._closeDialog());
@@ -321,7 +326,7 @@ let r = class extends w {
321
326
  this._clearTransitionFallback(), this._isTransitioning = !1;
322
327
  return;
323
328
  }
324
- this._clearTransitionFallback(), this._isTransitioning = !1, this._pendingReturnValue !== void 0 ? (e.close(this._pendingReturnValue), this._pendingReturnValue = void 0) : e.close(), this.modal && v(), this._removeGlobalListeners(), this._cachedFocusableElements = [], (t = this._triggerElement) == null || t.focus(), this._triggerElement = null, this.dispatchEvent(
329
+ this._clearTransitionFallback(), this._isTransitioning = !1, this._pendingReturnValue !== void 0 ? (e.close(this._pendingReturnValue), this._pendingReturnValue = void 0) : e.close(), this.modal && m(), this._removeGlobalListeners(), this._cachedFocusableElements = [], (t = this._triggerElement) == null || t.focus(), this._triggerElement = null, this.dispatchEvent(
325
330
  new CustomEvent("hx-close", {
326
331
  bubbles: !0,
327
332
  composed: !0
@@ -343,11 +348,11 @@ let r = class extends w {
343
348
  // ─── Focus Trap ───
344
349
  /** @internal */
345
350
  _getFocusableElements() {
346
- var l, a;
347
- const e = ((l = this.shadowRoot) == null ? void 0 : l.querySelectorAll("slot")) ?? [], t = [];
351
+ var s, a;
352
+ const e = ((s = this.shadowRoot) == null ? void 0 : s.querySelectorAll("slot")) ?? [], t = [];
348
353
  e.forEach((i) => {
349
- i.assignedElements({ flatten: !0 }).forEach((n) => {
350
- n instanceof HTMLElement && (n.matches(f) && t.push(n), n.querySelectorAll(f).forEach((g) => {
354
+ i.assignedElements({ flatten: !0 }).forEach((l) => {
355
+ l instanceof HTMLElement && (l.matches(v) && t.push(l), l.querySelectorAll(v).forEach((g) => {
351
356
  t.push(g);
352
357
  }));
353
358
  });
@@ -363,16 +368,16 @@ let r = class extends w {
363
368
  }
364
369
  /** @internal */
365
370
  _trapFocus(e) {
366
- var b, _;
371
+ var b, f;
367
372
  const t = this._cachedFocusableElements.length > 0 ? this._cachedFocusableElements : this._getFocusableElements();
368
373
  if (t.length === 0) {
369
374
  e.preventDefault();
370
375
  return;
371
376
  }
372
- const [o, ...l] = t, a = l.length > 0 ? l[l.length - 1] : o;
377
+ const [o, ...s] = t, a = s.length > 0 ? s[s.length - 1] : o;
373
378
  if (!o || !a) return;
374
- const i = document.activeElement, n = (b = this.shadowRoot) == null ? void 0 : b.activeElement, g = n ?? i, p = g instanceof HTMLElement ? g : null, u = (_ = this.shadowRoot) == null ? void 0 : _.querySelector(".dialog__close-btn");
375
- e.shiftKey ? (p === o || u !== null && n === u && o === u) && (e.preventDefault(), a.focus()) : p === a && (e.preventDefault(), o.focus());
379
+ const i = document.activeElement, l = (b = this.shadowRoot) == null ? void 0 : b.activeElement, g = l ?? i, p = g instanceof HTMLElement ? g : null, u = (f = this.shadowRoot) == null ? void 0 : f.querySelector(".dialog__close-btn");
380
+ e.shiftKey ? (p === o || u !== null && l === u && o === u) && (e.preventDefault(), a.focus()) : p === a && (e.preventDefault(), o.focus());
376
381
  }
377
382
  // ─── Cancel logic ───
378
383
  /** @internal */
@@ -462,23 +467,23 @@ let r = class extends w {
462
467
  `;
463
468
  }
464
469
  };
465
- r.styles = [C];
466
- s([
470
+ r.styles = [T, w];
471
+ n([
467
472
  y("dialog")
468
473
  ], r.prototype, "_dialogEl", 2);
469
- s([
470
- m()
474
+ n([
475
+ _()
471
476
  ], r.prototype, "_hasHeaderSlot", 2);
472
- s([
473
- m()
477
+ n([
478
+ _()
474
479
  ], r.prototype, "_hasFooterSlot", 2);
475
- s([
480
+ n([
476
481
  h({ type: Boolean, reflect: !0 })
477
482
  ], r.prototype, "open", 2);
478
- s([
483
+ n([
479
484
  h({ type: Boolean, reflect: !0 })
480
485
  ], r.prototype, "modal", 2);
481
- s([
486
+ n([
482
487
  h({
483
488
  attribute: "close-on-backdrop",
484
489
  reflect: !0,
@@ -488,22 +493,22 @@ s([
488
493
  }
489
494
  })
490
495
  ], r.prototype, "closeOnBackdrop", 2);
491
- s([
496
+ n([
492
497
  h({ type: String, reflect: !0 })
493
498
  ], r.prototype, "heading", 2);
494
- s([
499
+ n([
495
500
  h({ type: String, reflect: !0 })
496
501
  ], r.prototype, "variant", 2);
497
- s([
502
+ n([
498
503
  h({ type: String })
499
504
  ], r.prototype, "description", 2);
500
- s([
505
+ n([
501
506
  h({ type: String, attribute: "label-close" })
502
507
  ], r.prototype, "labelClose", 2);
503
- r = s([
508
+ r = n([
504
509
  k("hx-dialog")
505
510
  ], r);
506
511
  export {
507
512
  r as H
508
513
  };
509
- //# sourceMappingURL=hx-dialog-CvIlY0Tc.js.map
514
+ //# sourceMappingURL=hx-dialog-DRN_1-Y-.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hx-dialog-DRN_1-Y-.js","sources":["../../src/components/hx-dialog/hx-dialog.styles.ts","../../src/components/hx-dialog/hx-dialog.ts"],"sourcesContent":["import { css } from 'lit';\n\n/**\n * hx-dialog styles.\n *\n * Component-tier tokens with two-level var() fallback:\n * var(--hx-dialog-{prop}, var(--hx-color-{semantic}, #hex))\n * Inner hex fallbacks track the \"precision cool\" palette (3.2.0):\n * neutral-0 = #FFFFFF, neutral-100 = #EBEEE9, neutral-200 = #D6DBD5,\n * neutral-500 = #66787B, neutral-800 = #202B39, neutral-900 = #0D1825,\n * primary-500 = #429797.\n */\nexport const helixDialogStyles = css`\n :host {\n display: contents;\n }\n\n /* ─── Native dialog reset ─── */\n\n dialog {\n padding: 0;\n border: none;\n background: transparent;\n color: inherit;\n max-width: 100%;\n max-height: 100%;\n overflow: visible;\n /* D5 — ensure native dialog element renders above the non-modal backdrop sibling */\n position: relative;\n z-index: calc(var(--hx-z-index-modal, 1400) + 1);\n }\n\n /* ─── Dialog container ─── */\n\n .dialog {\n display: flex;\n flex-direction: column;\n position: relative;\n background-color: var(--hx-dialog-bg, var(--hx-color-surface-default, #ffffff));\n color: var(--hx-dialog-color, var(--hx-color-text-primary, #0d1825));\n border-radius: var(--hx-dialog-border-radius, var(--hx-border-radius-lg, 0.5rem));\n box-shadow: var(--hx-dialog-shadow, var(--hx-shadow-xl, 0 20px 25px -5px rgb(0 0 0 / 0.1)));\n width: var(--hx-dialog-width, var(--hx-container-narrow, 32rem));\n max-width: calc(100vw - var(--hx-space-8, 2rem));\n max-height: calc(100vh - var(--hx-space-8, 2rem));\n overflow: hidden;\n outline: none;\n\n /* Open/close animation */\n opacity: 0;\n transform: translateY(var(--hx-space-4, 1rem)) scale(0.97);\n transition:\n opacity var(--hx-duration-normal, 200ms) var(--hx-easing-out, ease-out),\n transform var(--hx-duration-normal, 200ms) var(--hx-easing-out, ease-out);\n }\n\n dialog[open] .dialog {\n opacity: 1;\n transform: translateY(0) scale(1);\n }\n\n @media (prefers-reduced-motion: reduce) {\n .dialog {\n transition: none;\n }\n\n .dialog__close-btn {\n transition: none;\n }\n }\n\n /* ─── Native backdrop (modal mode) ─── */\n\n dialog::backdrop {\n background-color: var(\n --hx-dialog-backdrop-color,\n var(--hx-color-surface-overlay, rgba(0, 0, 0, 0.75))\n );\n opacity: 0;\n transition: opacity var(--hx-duration-normal, 200ms) var(--hx-easing-out, ease-out);\n }\n\n dialog[open]::backdrop {\n opacity: var(--hx-dialog-backdrop-opacity, 0.5);\n }\n\n @media (prefers-reduced-motion: reduce) {\n dialog::backdrop {\n transition: none;\n }\n }\n\n /* ─── Non-modal backdrop overlay ─── */\n\n .dialog-backdrop {\n position: fixed;\n inset: 0;\n background-color: var(\n --hx-dialog-backdrop-color,\n var(--hx-color-surface-overlay, rgba(0, 0, 0, 0.75))\n );\n opacity: var(--hx-dialog-backdrop-opacity, 0.5);\n /* D5 — backdrop z-index must be lower than the dialog element's z-index */\n z-index: var(--hx-z-index-modal, 1400);\n }\n\n /* ─── Header ─── */\n\n .dialog__header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: var(--hx-dialog-header-padding, var(--hx-space-5, 1.25rem) var(--hx-space-6, 1.5rem));\n border-bottom: var(--hx-border-width-thin, 1px) solid\n var(--hx-dialog-header-border-color, var(--hx-color-border-default, #d6dbd5));\n gap: var(--hx-space-4, 1rem);\n flex-shrink: 0;\n }\n\n .dialog__heading {\n margin: 0;\n font-family: var(--hx-dialog-font-family, var(--hx-font-family-sans, sans-serif));\n font-size: var(--hx-font-size-lg, 1.125rem);\n font-weight: var(--hx-font-weight-semibold, 600);\n line-height: var(--hx-line-height-tight, 1.25);\n color: var(--hx-dialog-heading-color, var(--hx-color-text-primary, #0d1825));\n flex: 1 1 auto;\n }\n\n /* ─── Built-in close button (D17) ─── */\n\n .dialog__close-btn {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n /* WCAG 2.5.5 (healthcare mandate): minimum 44x44px touch target */\n min-width: var(--hx-touch-target-min, 2.75rem);\n min-height: var(--hx-touch-target-min, 2.75rem);\n width: var(--hx-touch-target-min, 2.75rem);\n height: var(--hx-touch-target-min, 2.75rem);\n padding: 0;\n margin-inline-start: auto;\n background: transparent;\n border: none;\n border-radius: var(--hx-border-radius-sm, 0.25rem);\n cursor: pointer;\n color: var(--hx-dialog-close-btn-color, var(--hx-color-text-muted, #4a5362));\n font-size: var(--hx-font-size-xl, 1.25rem);\n line-height: 1; /* intentional literal: icon button needs line-height 1; no token maps to exactly 1 */\n transition:\n color var(--hx-duration-fast, 100ms) ease,\n background-color var(--hx-duration-fast, 100ms) ease;\n }\n\n .dialog__close-btn::before {\n content: '×';\n }\n\n .dialog__close-btn:hover {\n color: var(--hx-dialog-close-btn-hover-color, var(--hx-color-text-primary, #0d1825));\n background-color: var(--hx-dialog-close-btn-hover-bg, var(--hx-color-surface-sunken, #ebeee9));\n }\n\n .dialog__close-btn:focus-visible {\n outline: var(--hx-focus-ring-width, 2px) solid\n var(--hx-dialog-close-btn-focus-ring-color, var(--hx-focus-ring-color, #0f7078));\n outline-offset: var(--hx-focus-ring-offset, 2px);\n }\n\n /* ─── Body ─── */\n\n .dialog__body {\n flex: 1 1 auto;\n padding: var(--hx-dialog-body-padding, var(--hx-space-6, 1.5rem));\n overflow-y: auto;\n overscroll-behavior: contain;\n }\n\n /* ─── Footer ─── */\n\n .dialog__footer {\n display: flex;\n align-items: center;\n justify-content: flex-end;\n gap: var(--hx-space-3, 0.75rem);\n padding: var(--hx-dialog-footer-padding, var(--hx-space-4, 1rem) var(--hx-space-6, 1.5rem));\n border-top: var(--hx-border-width-thin, 1px) solid\n var(--hx-dialog-footer-border-color, var(--hx-color-border-default, #d6dbd5));\n flex-shrink: 0;\n }\n\n /* ─── Visually-hidden description (D8) ─── */\n\n .dialog__description {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n border: 0;\n }\n\n /* ─── Forced Colors (Windows High Contrast) ─── */\n /* Belt-and-suspenders: rich per-class HC overrides PLUS the forcedColorsSurface mixin. */\n\n @media (forced-colors: active) {\n .dialog {\n border: 1px solid CanvasText;\n }\n\n .dialog__header {\n border-bottom-color: CanvasText;\n }\n\n .dialog__footer {\n border-top-color: CanvasText;\n }\n\n .dialog__close-btn {\n color: ButtonText;\n border: 1px solid ButtonText;\n }\n }\n`;\n","import { html, nothing, type PropertyValues } from 'lit';\nimport '../../utilities/document-token-adoption.js';\nimport { customElement, property, query, state } from 'lit/decorators.js';\nimport { lockBodyScroll, unlockBodyScroll } from '../../utils/body-scroll-lock.js';\nimport { HelixElement, createIdCounter } from '../../base/index.js';\nimport { helixDialogStyles } from './hx-dialog.styles.js';\nimport { forcedColorsSurface } from '../../styles/forced-colors.js';\nimport { devWarn } from '../../utils/dev-warn.js';\n\nconst _nextDialogId = createIdCounter('hx-dialog');\n\n// Module-level constant avoids rebuilding the selector string on every _getFocusableElements call.\n// Pattern matches hx-drawer's FOCUSABLE_SELECTORS constant at module scope.\nconst FOCUSABLE_SELECTORS = [\n 'a[href]',\n 'area[href]',\n 'button:not([disabled])',\n 'input:not([disabled])',\n 'select:not([disabled])',\n 'textarea:not([disabled])',\n '[tabindex]:not([tabindex=\"-1\"])',\n 'details > summary',\n].join(',');\n\n/**\n * A modal and non-modal dialog component built on the native HTML `<dialog>` element.\n * Provides focus trapping, backdrop interaction, keyboard navigation, and full\n * ARIA labelling for enterprise healthcare accessibility requirements.\n *\n * @summary Accessible dialog overlay for confirmations, forms, and detailed content.\n *\n * @tag hx-dialog\n *\n * @slot - Default slot for the dialog body content.\n * @slot header - Slot for custom header content. When provided, replaces the built-in heading.\n * @slot footer - Slot for action buttons or footer content.\n *\n * @fires {CustomEvent<void>} hx-open - Fired when the dialog opens.\n * @fires {CustomEvent<void>} hx-close - Fired when the dialog closes for any reason.\n * @fires {CustomEvent<void>} hx-cancel - Fired when the dialog is dismissed via Escape key or cancel action.\n *\n * **Event naming rationale:** hx-dialog intentionally uses `hx-open`/`hx-close`/`hx-cancel`\n * instead of the `hx-show`/`hx-hide`/`hx-after-show`/`hx-after-hide` pattern used by overlay\n * components (hx-drawer, hx-popover, hx-tooltip). This aligns with the native `<dialog>`\n * element's `close` and `cancel` events and communicates that the dialog is a stateful container\n * (open/closed) rather than a transient visibility toggle (show/hide).\n *\n * @csspart dialog - The inner container div that holds the dialog content.\n * @csspart backdrop - The non-modal backdrop overlay element.\n * @csspart header - The header region containing the heading and header slot.\n * @csspart close-button - The built-in close button in the dialog header.\n * @csspart body - The scrollable body region containing the default slot.\n * @csspart footer - The footer region containing the footer slot.\n *\n * @cssprop [--hx-dialog-bg=var(--hx-color-neutral-0)] - Dialog background color.\n * @cssprop [--hx-dialog-color=var(--hx-color-neutral-900)] - Dialog text color.\n * @cssprop [--hx-dialog-border-radius=var(--hx-border-radius-lg)] - Dialog corner radius.\n * @cssprop [--hx-dialog-shadow=var(--hx-shadow-xl)] - Dialog box shadow.\n * @cssprop [--hx-dialog-width=32rem] - Dialog width.\n * @cssprop [--hx-dialog-backdrop-color=var(--hx-color-neutral-900)] - Backdrop overlay color.\n * @cssprop [--hx-dialog-backdrop-opacity=0.5] - Backdrop overlay opacity (set to 0 to hide; note\n * that opacity:0 makes the backdrop invisible but still present in the layout — use pointer-events\n * carefully if you need a fully non-blocking backdrop).\n * @cssprop [--hx-dialog-header-padding] - Padding inside the dialog header.\n * @cssprop [--hx-dialog-header-border-color=var(--hx-color-neutral-200)] - Header bottom border color.\n * @cssprop [--hx-dialog-heading-color=var(--hx-color-neutral-900)] - Heading text color.\n * @cssprop [--hx-dialog-body-padding] - Padding inside the dialog body.\n * @cssprop [--hx-dialog-footer-padding] - Padding inside the dialog footer.\n * @cssprop [--hx-dialog-footer-border-color=var(--hx-color-neutral-200)] - Footer top border color.\n *\n * @remarks\n * **Browser support for `::backdrop`:** The `dialog::backdrop` pseudo-element inside Shadow DOM\n * is well-supported in Chrome/Chromium and Firefox 122+. For Firefox < 122, modal backdrop\n * animation will silently fall back to no animation. A non-modal backdrop fallback is rendered\n * for non-modal dialogs.\n *\n * **Drupal integration:** This component is Twig-renderable via attributes (`heading`, `open`,\n * `modal`, `close-on-backdrop`). For trigger-button wiring in Drupal behaviors:\n * ```js\n * Drupal.behaviors.hxDialog = {\n * attach(context) {\n * context.querySelectorAll('[data-hx-dialog-trigger]').forEach((btn) => {\n * btn.addEventListener('click', () => {\n * const id = btn.getAttribute('data-hx-dialog-trigger');\n * document.getElementById(id)?.showModal();\n * });\n * });\n * },\n * };\n * ```\n * Focus restoration to the trigger element is handled automatically by the component.\n * @cssprop [--hx-z-index-modal] - Z-index layer.\n * @cssprop [--hx-color-neutral-0] - Color.\n * @cssprop [--hx-color-neutral-900] - Color.\n * @cssprop [--hx-border-radius-lg] - CSS custom property.\n * @cssprop [--hx-shadow-xl] - Box shadow.\n * @cssprop [--hx-container-narrow] - CSS custom property.\n * @cssprop [--hx-space-8] - Spacing token.\n * @cssprop [--hx-space-4] - Spacing token.\n * @cssprop [--hx-duration-normal] - Animation duration.\n * @cssprop [--hx-easing-out] - CSS custom property.\n * @cssprop [--hx-space-5] - Spacing token.\n * @cssprop [--hx-space-6] - Spacing token.\n * @cssprop [--hx-border-width-thin] - Width.\n * @cssprop [--hx-color-neutral-200] - Color.\n * @cssprop [--hx-dialog-font-family=var(--hx-font-family-sans)] - CSS custom property.\n * @cssprop [--hx-font-family-sans] - Font family.\n * @cssprop [--hx-font-size-lg] - Font size.\n * @cssprop [--hx-font-weight-semibold] - Font weight.\n * @cssprop [--hx-line-height-tight] - Line height.\n * @cssprop [--hx-touch-target-min] - Minimum touch target size.\n * @cssprop [--hx-border-radius-sm] - CSS custom property.\n * @cssprop [--hx-color-neutral-500] - Color.\n * @cssprop [--hx-font-size-xl] - Font size.\n * @cssprop [--hx-duration-fast] - Animation duration.\n * @cssprop [--hx-color-neutral-100] - Color.\n * @cssprop [--hx-focus-ring-width] - Width.\n * @cssprop [--hx-dialog-close-btn-focus-ring-color] - Color.\n * @cssprop [--hx-focus-ring-color] - Color.\n * @cssprop [--hx-color-primary-500] - Color.\n * @cssprop [--hx-focus-ring-offset] - CSS custom property.\n * @cssprop [--hx-space-3] - Spacing token.\n */\n@customElement('hx-dialog')\nexport class HelixDialog extends HelixElement {\n static override styles = [helixDialogStyles, forcedColorsSurface];\n\n // D10 — observe aria-label attribute without shadowing ARIAMixin.ariaLabel\n static override get observedAttributes(): string[] {\n return [...super.observedAttributes, 'aria-label'];\n }\n\n // ─── Queries ───\n\n /** @internal */\n @query('dialog')\n private _dialogEl: HTMLDialogElement | null | undefined;\n\n // ─── Internal state ───\n\n /** Tracks whether a header slot has been assigned content. * @internal\n */\n @state()\n private _hasHeaderSlot = false;\n\n /** Tracks whether a footer slot has been assigned content. * @internal\n */\n @state()\n private _hasFooterSlot = false;\n\n /** Cached focusable elements — populated on open, cleared on close. */\n /** @internal */\n private _cachedFocusableElements: HTMLElement[] = [];\n\n /**\n * Guards against re-entrant open/close calls within a single async open cycle.\n *\n * STATE MANAGEMENT CONTRACT\n * ─────────────────────────\n * `this.open` (the Lit property) is the single source of truth for dialog open state.\n * All native `<dialog>` state changes (`showModal()`, `show()`, `close()`) flow exclusively\n * from `updated()` → `_openDialog()` / `_closeDialog()`. External callers MUST only set\n * `this.open`; they must never call native dialog methods directly.\n *\n * `_isTransitioning` is set to `true` at the start of `_openDialog()` to prevent a second\n * open call from running concurrently while the first is awaiting `updateComplete`. It is\n * cleared synchronously after the async tail completes. A 200 ms fallback timeout ensures\n * the flag is always released even if `updateComplete` never resolves (e.g. detached DOM).\n *\n * `_closeDialog()` does NOT use `_isTransitioning` as a guard — it always runs immediately\n * to honour a `this.open = false` that arrives during the open async tail. The open async\n * tail checks `this.open` before touching focus so it can abort cleanly.\n */\n /** @internal */\n private _isTransitioning = false;\n\n /** Fallback timer that releases `_isTransitioning` if the open async tail never fires. */\n /** @internal */\n private _transitionFallbackTimer: ReturnType<typeof setTimeout> | null = null;\n\n /** The element that had focus when the dialog opened — restored on close (D1). */\n /** @internal */\n private _triggerElement: HTMLElement | null = null;\n\n /** Pending returnValue to pass to native dialog.close() (D11). */\n /** @internal */\n private _pendingReturnValue: string | undefined = undefined;\n\n // ─── Unique IDs for aria-labelledby / aria-describedby ───\n\n /** @internal */\n private readonly _dialogId = _nextDialogId();\n /** @internal */\n private readonly _headingId = `${this._dialogId}-heading`;\n /** @internal */\n private readonly _descriptionId = `${this._dialogId}-description`;\n\n // ─── Public Properties ───\n\n /**\n * Controls whether the dialog is open.\n * @attr open\n */\n @property({ type: Boolean, reflect: true })\n open = false;\n\n /**\n * When true, dialog renders as a modal with backdrop and focus trap using the native\n * `showModal()` API. When false (default), dialog renders as a non-modal overlay using\n * the native `show()` API. Defaults to false, consistent with HTML boolean attribute\n * semantics (absent = false, present = true).\n * @attr modal\n */\n @property({ type: Boolean, reflect: true })\n modal = false;\n\n /**\n * When true, clicking the backdrop closes the dialog.\n * @attr close-on-backdrop\n */\n @property({\n attribute: 'close-on-backdrop',\n reflect: true,\n converter: {\n fromAttribute: (value: string | null) => value !== 'false',\n toAttribute: (value: boolean) => String(value),\n },\n })\n closeOnBackdrop = true;\n\n /**\n * Text content for the dialog heading. Used as the accessible label via aria-labelledby.\n * @attr heading\n */\n @property({ type: String, reflect: true })\n heading = '';\n\n /**\n * ARIA role variant. Use `'alertdialog'` for urgent dialogs requiring immediate attention\n * (e.g., drug interaction warnings, critical lab alerts). Defaults to `'dialog'`.\n * @attr variant\n */\n @property({ type: String, reflect: true })\n variant: 'dialog' | 'alertdialog' = 'dialog';\n\n /**\n * Optional description text linked to the dialog via `aria-describedby`.\n * When provided, screen readers will announce this text when the dialog receives focus.\n * Recommended for dialogs that surface critical clinical information.\n * @attr description\n */\n @property({ type: String })\n description = '';\n\n /** Accessible label for the close button. Override for localized text. */\n @property({ type: String, attribute: 'label-close' })\n labelClose = 'Close dialog';\n\n /**\n * Returns the dialog's return value — the string passed to `close(returnValue)`.\n * Mirrors `HTMLDialogElement.returnValue`.\n */\n get returnValue(): string {\n return this._dialogEl?.returnValue ?? '';\n }\n\n // ─── Lifecycle ───\n\n // D10 — re-render when aria-label attribute changes (without declaring a shadowing property)\n override attributeChangedCallback(\n name: string,\n oldVal: string | null,\n newVal: string | null,\n ): void {\n super.attributeChangedCallback(name, oldVal, newVal);\n if (name === 'aria-label' && oldVal !== newVal) {\n this.requestUpdate('aria-label', oldVal);\n }\n }\n\n override firstUpdated(): void {\n // Warn when no accessible heading is available.\n // _hasHeaderSlot is maintained by the slotchange handler; check it here\n // on first paint so a missing heading triggers the dev warning immediately.\n if (!this.heading.trim() && !this._hasHeaderSlot) {\n devWarn(\n 'hx-dialog',\n 'No heading or header slot provided. Dialog will use a fallback aria-label. Provide a `heading` attribute or populate the `header` slot for a descriptive accessible name.',\n );\n }\n }\n\n override disconnectedCallback(): void {\n super.disconnectedCallback();\n this._clearTransitionFallback();\n this._isTransitioning = false;\n this._removeGlobalListeners();\n // Restore body scroll if disconnected while open\n if (this.modal && this.open) {\n unlockBodyScroll();\n }\n }\n\n override updated(changedProperties: PropertyValues<this>): void {\n super.updated(changedProperties);\n\n if (changedProperties.has('open')) {\n if (this.open) {\n this._openDialog();\n } else {\n this._closeDialog();\n }\n }\n }\n\n // ─── Public Methods ───\n\n /** Opens the dialog in the mode determined by the `modal` property. */\n show(): void {\n this.open = true;\n }\n\n /** Opens the dialog as a modal regardless of the `modal` property setting. */\n showModal(): void {\n this.modal = true;\n this.open = true;\n }\n\n /**\n * Closes the dialog.\n * @param returnValue - Optional return value string stored as `dialog.returnValue`.\n */\n close(returnValue?: string): void {\n if (returnValue !== undefined) {\n this._pendingReturnValue = returnValue;\n }\n this.open = false;\n }\n\n // ─── Private: Open / Close ───\n\n /** Clears the fallback timer that releases `_isTransitioning`. @internal */\n private _clearTransitionFallback(): void {\n if (this._transitionFallbackTimer !== null) {\n clearTimeout(this._transitionFallbackTimer);\n this._transitionFallbackTimer = null;\n }\n }\n\n /** @internal */\n private _openDialog(): void {\n const dialog = this._dialogEl;\n if (!dialog) return;\n\n // Guard: already open in the native dialog — nothing to do.\n if (dialog.open) return;\n\n // Guard: re-entrant call during our own async open tail — skip.\n if (this._isTransitioning) return;\n\n this._isTransitioning = true;\n\n // 200 ms fallback — releases the transitioning flag if updateComplete never\n // resolves (e.g. component detached mid-cycle or in a test environment that\n // does not flush promises). Prevents the dialog from getting permanently stuck.\n this._clearTransitionFallback();\n this._transitionFallbackTimer = setTimeout(() => {\n this._transitionFallbackTimer = null;\n this._isTransitioning = false;\n }, 200);\n\n // D1 — store the element that triggered the dialog open for focus restoration on close\n const active = document.activeElement;\n this._triggerElement = active instanceof HTMLElement ? active : null;\n\n if (this.modal) {\n // showModal() throws if the dialog is already in the DOM as open — guard above\n // ensures dialog.open is false before reaching here.\n dialog.showModal();\n // D4 — lock body scroll when modal dialog is open. Uses a shared reference-counted\n // lock so that simultaneous hx-dialog / hx-drawer instances don't clobber each other\n // when one closes before the other (see utils/body-scroll-lock.ts).\n lockBodyScroll();\n } else {\n dialog.show();\n }\n\n this._addGlobalListeners();\n\n // Cache focusable elements after the dialog is open in the DOM.\n void this.updateComplete.then(() => {\n // Cancel if `this.open` was set to false during this async tail — `_closeDialog`\n // already ran synchronously and we must not clobber its state.\n this._clearTransitionFallback();\n this._isTransitioning = false;\n if (!this.open) return;\n\n this._cachedFocusableElements = this._getFocusableElements();\n // D3 — explicitly move initial focus to the first focusable element inside the dialog\n // (browser's built-in focus delegation cannot reach slotted light DOM through Shadow DOM)\n this._cachedFocusableElements[0]?.focus();\n });\n\n this.dispatchEvent(\n new CustomEvent<void>('hx-open', {\n bubbles: true,\n composed: true,\n }),\n );\n }\n\n /** @internal */\n private _closeDialog(): void {\n const dialog = this._dialogEl;\n if (!dialog) return;\n\n // Guard: already closed in the native dialog — nothing to do, but still\n // release any stuck transitioning state so the next open can proceed.\n if (!dialog.open) {\n // Release transitioning lock in case we are in the open async tail.\n this._clearTransitionFallback();\n this._isTransitioning = false;\n return;\n }\n\n // Close always wins over a concurrent open async tail. We clear the\n // transitioning flag and cancel the fallback so the open tail's own\n // early-return check (`if (!this.open) return`) fires correctly.\n this._clearTransitionFallback();\n this._isTransitioning = false;\n\n // D11 — forward returnValue to native dialog.close() if provided\n if (this._pendingReturnValue !== undefined) {\n dialog.close(this._pendingReturnValue);\n this._pendingReturnValue = undefined;\n } else {\n dialog.close();\n }\n\n // D4 — release body scroll lock only when this dialog was opened as modal.\n // Non-modal dialogs never call lockBodyScroll(), so the unlock must be symmetric.\n if (this.modal) {\n unlockBodyScroll();\n }\n\n this._removeGlobalListeners();\n this._cachedFocusableElements = [];\n\n // D1 — restore focus to the element that opened the dialog (WCAG 2.4.3)\n this._triggerElement?.focus();\n this._triggerElement = null;\n\n this.dispatchEvent(\n new CustomEvent<void>('hx-close', {\n bubbles: true,\n composed: true,\n }),\n );\n }\n\n // ─── Event Listeners ───\n\n /** @internal */\n private _addGlobalListeners(): void {\n this._dialogEl?.addEventListener('keydown', this._handleKeyDown);\n this._dialogEl?.addEventListener('click', this._handleDialogClick);\n this._dialogEl?.addEventListener('cancel', this._handleNativeCancel);\n }\n\n /** @internal */\n private _removeGlobalListeners(): void {\n this._dialogEl?.removeEventListener('keydown', this._handleKeyDown);\n this._dialogEl?.removeEventListener('click', this._handleDialogClick);\n this._dialogEl?.removeEventListener('cancel', this._handleNativeCancel);\n }\n\n // ─── Keyboard Handler ───\n\n /** @internal */\n private _handleKeyDown = (e: KeyboardEvent): void => {\n if (e.key === 'Escape') {\n // Native dialog fires a 'cancel' event before close when Escape is pressed.\n // We prevent default here and handle it ourselves so we fire hx-cancel\n // before setting open = false (which triggers hx-close).\n e.preventDefault();\n this._cancel();\n return;\n }\n\n if (e.key === 'Tab' && this.modal) {\n this._trapFocus(e);\n }\n };\n\n // ─── Focus Trap ───\n\n /** @internal */\n private _getFocusableElements(): HTMLElement[] {\n // Collect focusable elements from slotted light DOM content only.\n // Shadow DOM elements (e.g., the built-in close button) remain accessible via\n // the native <dialog> tab order — including them here would cause focus to land\n // on shadow DOM elements whose document.activeElement resolves to the host,\n // breaking the test assertions and D7 initial focus behavior.\n const slots = this.shadowRoot?.querySelectorAll<HTMLSlotElement>('slot') ?? [];\n const lightFocusable: HTMLElement[] = [];\n\n slots.forEach((slot) => {\n slot.assignedElements({ flatten: true }).forEach((el) => {\n if (el instanceof HTMLElement) {\n if (el.matches(FOCUSABLE_SELECTORS)) {\n lightFocusable.push(el);\n }\n el.querySelectorAll<HTMLElement>(FOCUSABLE_SELECTORS).forEach((child) => {\n lightFocusable.push(child);\n });\n }\n });\n });\n\n const filtered = lightFocusable.filter(\n (el) => !el.hasAttribute('disabled') && el.getAttribute('tabindex') !== '-1',\n );\n\n // WCAG 2.4.3: if no light DOM focusable elements exist, fall back to the shadow\n // close button so the dialog always has at least one reachable focus target.\n if (filtered.length === 0) {\n const closeBtn = this.shadowRoot?.querySelector<HTMLElement>('.dialog__close-btn');\n if (closeBtn) filtered.push(closeBtn);\n }\n\n return filtered;\n }\n\n /** @internal */\n private _trapFocus(e: KeyboardEvent): void {\n const focusable =\n this._cachedFocusableElements.length > 0\n ? this._cachedFocusableElements\n : this._getFocusableElements();\n if (focusable.length === 0) {\n e.preventDefault();\n return;\n }\n\n const [first, ...rest] = focusable;\n const last = rest.length > 0 ? rest[rest.length - 1] : first;\n\n if (!first || !last) return;\n\n const active = document.activeElement;\n // Also check shadow root active element\n const shadowActive = this.shadowRoot?.activeElement;\n const currentActiveEl = shadowActive ?? active;\n const currentActive = currentActiveEl instanceof HTMLElement ? currentActiveEl : null;\n\n // The shadow close button may be the first focusable element when no light DOM\n // content exists (WCAG 2.1.2). Check both the element reference and shadow root\n // active element so Shift+Tab wraps correctly across the shadow boundary.\n const closeBtn = this.shadowRoot?.querySelector<HTMLElement>('.dialog__close-btn');\n\n if (e.shiftKey) {\n // Shift+Tab: if focus is on first, wrap to last\n const isOnFirst =\n currentActive === first ||\n (closeBtn !== null && shadowActive === closeBtn && first === closeBtn);\n if (isOnFirst) {\n e.preventDefault();\n last.focus();\n }\n } else {\n // Tab: if focus is on last, wrap to first\n if (currentActive === last) {\n e.preventDefault();\n first.focus();\n }\n }\n }\n\n // ─── Backdrop Click ───\n\n /** @internal */\n private _handleDialogClick = (e: MouseEvent): void => {\n if (!this.closeOnBackdrop) return;\n\n // The native dialog element fills only the content area in showModal().\n // Clicks on the backdrop reach the <dialog> element itself.\n // We detect this by checking whether the click target is the dialog element.\n const target = e.target as HTMLElement;\n if (target === this._dialogEl) {\n this._cancel();\n }\n };\n\n // ─── Non-modal backdrop click ───\n\n /** @internal */\n private _handleBackdropClick = (): void => {\n if (!this.closeOnBackdrop) return;\n this._cancel();\n };\n\n // ─── Native cancel (Escape via browser, before our handler runs) ───\n\n /** @internal */\n private _handleNativeCancel = (e: Event): void => {\n // We always prevent the native cancel so we can manage close state ourselves.\n e.preventDefault();\n };\n\n // ─── Cancel logic ───\n\n /** @internal */\n private _cancel(): void {\n this.dispatchEvent(\n new CustomEvent<void>('hx-cancel', {\n bubbles: true,\n composed: true,\n }),\n );\n\n this.open = false;\n // hx-close is dispatched by _closeDialog() which is called via the open property setter\n }\n\n // ─── Slot change handlers ───\n\n /** @internal */\n private _handleHeaderSlotChange(e: Event): void {\n const slot = e.target as HTMLSlotElement;\n this._hasHeaderSlot = slot.assignedNodes({ flatten: true }).length > 0;\n }\n\n /** @internal */\n private _handleFooterSlotChange(e: Event): void {\n const slot = e.target as HTMLSlotElement;\n this._hasFooterSlot = slot.assignedNodes({ flatten: true }).length > 0;\n }\n\n // ─── Render Helpers ───\n\n /** @internal */\n private _renderHeader() {\n const hasHeading = this.heading.trim().length > 0;\n\n // Always render header to include the built-in close button (D17)\n return html`\n <div part=\"header\" class=\"dialog__header\">\n ${hasHeading\n ? html`<h2 id=${this._headingId} class=\"dialog__heading\">${this.heading}</h2>`\n : nothing}\n <slot name=\"header\" @slotchange=${this._handleHeaderSlotChange}></slot>\n <button\n part=\"close-button\"\n class=\"dialog__close-btn\"\n type=\"button\"\n aria-label=${this.labelClose}\n @click=${() => this.close()}\n ></button>\n </div>\n `;\n }\n\n /** @internal */\n private _renderFooter() {\n return html`\n <div part=\"footer\" class=\"dialog__footer\" ?hidden=${!this._hasFooterSlot}>\n <slot name=\"footer\" @slotchange=${this._handleFooterSlotChange}></slot>\n </div>\n `;\n }\n\n /** @internal */\n private _renderNonModalBackdrop() {\n if (this.modal || !this.open) return nothing;\n return html`\n <div\n part=\"backdrop\"\n class=\"dialog-backdrop\"\n @click=${this._handleBackdropClick}\n aria-hidden=\"true\"\n ></div>\n `;\n }\n\n // D8 — render visually-hidden description for aria-describedby\n /** @internal */\n private _renderDescription() {\n if (!this.description) return nothing;\n return html`<span id=${this._descriptionId} class=\"dialog__description\"\n >${this.description}</span\n >`;\n }\n\n // ─── Render ───\n\n override render() {\n const hasHeading = this.heading.trim().length > 0;\n // D10 — read aria-label via getAttribute to avoid shadowing ARIAMixin.ariaLabel\n const ariaLabel = this.getAttribute('aria-label');\n\n return html`\n ${this._renderNonModalBackdrop()}\n <dialog\n role=${this.variant !== 'dialog' ? this.variant : nothing}\n aria-labelledby=${hasHeading ? this._headingId : nothing}\n aria-label=${!hasHeading ? (ariaLabel ?? 'Dialog') : nothing}\n aria-describedby=${this.description ? this._descriptionId : nothing}\n aria-modal=${this.modal ? 'true' : nothing}\n >\n <div part=\"dialog\" class=\"dialog\">\n ${this._renderHeader()} ${this._renderDescription()}\n <div part=\"body\" class=\"dialog__body\">\n <slot></slot>\n </div>\n ${this._renderFooter()}\n </div>\n </dialog>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'hx-dialog': HelixDialog;\n }\n interface HTMLElementEventMap {\n 'hx-open': CustomEvent<void>;\n 'hx-close': CustomEvent<void>;\n 'hx-cancel': CustomEvent<void>;\n }\n}\n"],"names":["helixDialogStyles","css","_nextDialogId","createIdCounter","FOCUSABLE_SELECTORS","HelixDialog","HelixElement","_a","name","oldVal","newVal","unlockBodyScroll","changedProperties","returnValue","dialog","active","lockBodyScroll","_b","_c","slots","lightFocusable","slot","el","child","filtered","closeBtn","focusable","first","rest","last","shadowActive","currentActiveEl","currentActive","hasHeading","html","nothing","ariaLabel","forcedColorsSurface","__decorateClass","query","state","property","value","customElement"],"mappings":"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"}
@@ -1,12 +1,13 @@
1
1
  import { css as v, nothing as c, html as s } from "lit";
2
2
  import { property as n, state as p, customElement as _ } from "lit/decorators.js";
3
- import { H as g } from "./helix-element-BNEYeiys.js";
4
- const b = v`
3
+ import { a as g } from "./forced-colors-CTEDFRGa.js";
4
+ import { H as b } from "./helix-element-BNEYeiys.js";
5
+ const f = v`
5
6
  :host {
6
7
  display: block;
7
- --_divider-color: var(--hx-divider-color, var(--hx-color-neutral-200, #e2e8f0));
8
+ --_divider-color: var(--hx-divider-color, var(--hx-color-border-default, #d6dbd5));
8
9
  --_divider-width: var(--hx-divider-width, var(--hx-border-width-thin, 1px));
9
- --_divider-label-color: var(--hx-divider-label-color, var(--hx-color-neutral-500, #64748b));
10
+ --_divider-label-color: var(--hx-divider-label-color, var(--hx-color-text-muted, #66787b));
10
11
  --_divider-label-size: var(--hx-divider-label-font-size, var(--hx-font-size-sm, 0.875rem));
11
12
  --_divider-label-gap: var(--hx-divider-label-gap, var(--hx-space-3, 0.75rem));
12
13
  }
@@ -97,12 +98,12 @@ const b = v`
97
98
  }
98
99
  }
99
100
  `;
100
- var f = Object.defineProperty, m = Object.getOwnPropertyDescriptor, l = (e, i, t, o) => {
101
- for (var a = o > 1 ? void 0 : o ? m(i, t) : i, d = e.length - 1, h; d >= 0; d--)
102
- (h = e[d]) && (a = (o ? h(i, t, a) : h(a)) || a);
103
- return o && a && f(i, t, a), a;
101
+ var m = Object.defineProperty, x = Object.getOwnPropertyDescriptor, o = (e, i, t, l) => {
102
+ for (var a = l > 1 ? void 0 : l ? x(i, t) : i, d = e.length - 1, h; d >= 0; d--)
103
+ (h = e[d]) && (a = (l ? h(i, t, a) : h(a)) || a);
104
+ return l && a && m(i, t, a), a;
104
105
  };
105
- let r = class extends g {
106
+ let r = class extends b {
106
107
  constructor() {
107
108
  super(...arguments), this.orientation = "horizontal", this.spacing = "md", this.decorative = !1, this._hasLabel = !1, this._slotChangeHandler = (e) => {
108
109
  this._checkSlot(e.target);
@@ -141,26 +142,26 @@ let r = class extends g {
141
142
  `;
142
143
  }
143
144
  };
144
- r.styles = [b];
145
- l([
145
+ r.styles = [f, g];
146
+ o([
146
147
  n({ type: String, reflect: !0 })
147
148
  ], r.prototype, "orientation", 2);
148
- l([
149
+ o([
149
150
  n({ type: String, reflect: !0 })
150
151
  ], r.prototype, "spacing", 2);
151
- l([
152
+ o([
152
153
  n({ type: Boolean, reflect: !0 })
153
154
  ], r.prototype, "decorative", 2);
154
- l([
155
+ o([
155
156
  n({ type: String, reflect: !0 })
156
157
  ], r.prototype, "label", 2);
157
- l([
158
+ o([
158
159
  p()
159
160
  ], r.prototype, "_hasLabel", 2);
160
- r = l([
161
+ r = o([
161
162
  _("hx-divider")
162
163
  ], r);
163
164
  export {
164
165
  r as H
165
166
  };
166
- //# sourceMappingURL=hx-divider-DwpOrzMW.js.map
167
+ //# sourceMappingURL=hx-divider-CYfcUjcr.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hx-divider-CYfcUjcr.js","sources":["../../src/components/hx-divider/hx-divider.styles.ts","../../src/components/hx-divider/hx-divider.ts"],"sourcesContent":["import { css } from 'lit';\n\nexport const helixDividerStyles = css`\n :host {\n display: block;\n --_divider-color: var(--hx-divider-color, var(--hx-color-border-default, #d6dbd5));\n --_divider-width: var(--hx-divider-width, var(--hx-border-width-thin, 1px));\n --_divider-label-color: var(--hx-divider-label-color, var(--hx-color-text-muted, #66787b));\n --_divider-label-size: var(--hx-divider-label-font-size, var(--hx-font-size-sm, 0.875rem));\n --_divider-label-gap: var(--hx-divider-label-gap, var(--hx-space-3, 0.75rem));\n }\n\n /* ─── Spacing Variants ─── */\n\n :host([spacing='none']) {\n --_spacing: 0;\n }\n\n :host([spacing='sm']) {\n --_spacing: var(--hx-space-2, 0.5rem);\n }\n\n :host,\n :host([spacing='md']) {\n --_spacing: var(--hx-space-4, 1rem);\n }\n\n :host([spacing='lg']) {\n --_spacing: var(--hx-space-6, 1.5rem);\n }\n\n /* ─── Horizontal (default) ─── */\n\n :host([orientation='horizontal']) {\n margin-block: var(--_spacing);\n }\n\n /* ─── Vertical ─── */\n\n :host([orientation='vertical']) {\n display: inline-flex;\n align-self: stretch;\n margin-inline: var(--_spacing);\n }\n\n /* ─── Base (hr) — horizontal ─── */\n\n .divider {\n display: flex;\n align-items: center;\n gap: var(--_divider-label-gap);\n border: none;\n margin: 0;\n padding: 0;\n }\n\n /* ─── Base — vertical ─── */\n\n :host([orientation='vertical']) .divider {\n flex-direction: column;\n height: 100%;\n }\n\n /* ─── Lines flanking label ─── */\n\n .divider__line {\n flex: 1;\n background-color: var(--_divider-color);\n }\n\n :host(:not([orientation='vertical'])) .divider__line {\n height: var(--_divider-width);\n }\n\n :host([orientation='vertical']) .divider__line {\n width: var(--_divider-width);\n height: auto;\n min-height: 0;\n }\n\n /* ─── Label ─── */\n\n .divider__label {\n flex-shrink: 0;\n color: var(--_divider-label-color);\n font-size: var(--_divider-label-size);\n line-height: var(--hx-line-height-tight, 1.25);\n white-space: nowrap;\n }\n\n /* ─── Forced Colors (Windows High Contrast) ─── */\n\n @media (forced-colors: active) {\n .divider__line {\n background-color: CanvasText;\n }\n }\n`;\n","import { html, nothing, type PropertyValues } from 'lit';\nimport '../../utilities/document-token-adoption.js';\nimport { devWarn } from '../../utils/dev-warn.js';\nimport { customElement, property, state } from 'lit/decorators.js';\nimport { HelixElement } from '../../base/index.js';\nimport { helixDividerStyles } from './hx-divider.styles.js';\nimport { forcedColorsSurface } from '../../styles/forced-colors.js';\n\n/**\n * A visual separator element for dividing content sections. Supports\n * horizontal and vertical orientations, configurable spacing, and an optional\n * centered label rendered between two lines.\n *\n * @summary Horizontal or vertical separator line with optional label.\n *\n * @tag hx-divider\n *\n * @slot - Optional label text rendered centered between two lines.\n *\n * @csspart base - The root divider element.\n * @csspart label - The optional centered label wrapper.\n *\n * @cssprop [--hx-divider-color=var(--hx-color-neutral-200)] - Line color.\n * @cssprop [--hx-divider-width=var(--hx-border-width-thin)] - Line thickness.\n * @cssprop [--hx-divider-label-color=var(--hx-color-neutral-500)] - Label text color.\n * @cssprop [--hx-divider-label-font-size=var(--hx-font-size-sm)] - Label font size.\n * @cssprop [--hx-divider-label-gap=var(--hx-space-3)] - Gap between lines and label.\n * @cssprop [--hx-color-neutral-200] - Color.\n * @cssprop [--hx-border-width-thin] - Width.\n * @cssprop [--hx-color-neutral-500] - Color.\n * @cssprop [--hx-font-size-sm] - Font size.\n * @cssprop [--hx-space-3] - Spacing token.\n * @cssprop [--hx-space-2] - Spacing token.\n * @cssprop [--hx-space-4] - Spacing token.\n * @cssprop [--hx-space-6] - Spacing token.\n * @cssprop [--hx-line-height-tight] - Line height.\n */\n@customElement('hx-divider')\nexport class HelixDivider extends HelixElement {\n static override styles = [helixDividerStyles, forcedColorsSurface];\n\n /**\n * Orientation of the divider.\n * @attr orientation\n */\n @property({ type: String, reflect: true })\n orientation: 'horizontal' | 'vertical' = 'horizontal';\n\n /**\n * Spacing applied to the block axis (horizontal) or inline axis (vertical).\n * @attr spacing\n */\n @property({ type: String, reflect: true })\n spacing: 'none' | 'sm' | 'md' | 'lg' = 'md';\n\n /**\n * When true, renders the divider as decorative only (role=\"presentation\").\n * Screen readers will not announce decorative dividers.\n * @attr decorative\n */\n @property({ type: Boolean, reflect: true })\n decorative = false;\n\n /**\n * Optional text label rendered centered between the divider lines.\n * Also sets aria-label on the separator for assistive technologies.\n * @attr label\n */\n @property({ type: String, reflect: true })\n label?: string;\n\n /** @internal */\n @state()\n private _hasLabel = false;\n\n /** @internal */\n private _checkSlot(slot: HTMLSlotElement): void {\n const nodes = slot.assignedNodes({ flatten: true });\n this._hasLabel = nodes.some((node) =>\n node.nodeType === Node.TEXT_NODE\n ? (node.textContent ?? '').trim().length > 0\n : node.nodeType === Node.ELEMENT_NODE,\n );\n }\n\n /** @internal */\n private _slotChangeHandler = (e: Event): void => {\n this._checkSlot(e.target as HTMLSlotElement);\n };\n\n override firstUpdated(_changedProperties: PropertyValues<this>): void {\n super.firstUpdated(_changedProperties);\n const slot = this.shadowRoot?.querySelector<HTMLSlotElement>('slot:not([name])');\n if (slot) this._checkSlot(slot);\n if (!this.decorative && !this.label && !this._hasLabel) {\n devWarn(\n 'hx-divider',\n 'Non-decorative separator has no accessible name. Provide a `label` attribute or slot content, or set `decorative` to suppress this warning (WCAG 4.1.2).',\n );\n }\n }\n\n override render() {\n const isDecorative = this.decorative;\n const showLabel = this._hasLabel || !!this.label;\n\n return html`\n <div\n part=\"base\"\n class=\"divider${showLabel ? ' divider--labeled' : ''}\"\n role=\"${isDecorative ? 'presentation' : 'separator'}\"\n aria-orientation=\"${isDecorative ? nothing : this.orientation}\"\n aria-label=\"${!isDecorative && this.label ? this.label : nothing}\"\n >\n <span class=\"divider__line\"></span>\n ${showLabel\n ? html`<span part=\"label\" class=\"divider__label\">\n ${this.label ? html`${this.label}` : nothing}\n <slot @slotchange=${this._slotChangeHandler}></slot>\n </span>`\n : html`<slot @slotchange=${this._slotChangeHandler}></slot>`}\n <span class=\"divider__line\"></span>\n </div>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'hx-divider': HelixDivider;\n }\n}\n\n/** Canonical type alias for the hx-divider component. */\nexport type HxDivider = HelixDivider;\n"],"names":["helixDividerStyles","css","HelixDivider","HelixElement","slot","nodes","node","_changedProperties","_a","isDecorative","showLabel","html","nothing","forcedColorsSurface","__decorateClass","property","state","customElement"],"mappings":";;;;AAEO,MAAMA,IAAqBC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;;ACoC3B,IAAMC,IAAN,cAA2BC,EAAa;AAAA,EAAxC,cAAA;AAAA,UAAA,GAAA,SAAA,GAQL,KAAA,cAAyC,cAOzC,KAAA,UAAuC,MAQvC,KAAA,aAAa,IAYb,KAAQ,YAAY,IAapB,KAAQ,qBAAqB,CAAC,MAAmB;AAC/C,WAAK,WAAW,EAAE,MAAyB;AAAA,IAC7C;AAAA,EAAA;AAAA;AAAA,EAZQ,WAAWC,GAA6B;AAC9C,UAAMC,IAAQD,EAAK,cAAc,EAAE,SAAS,IAAM;AAClD,SAAK,YAAYC,EAAM;AAAA,MAAK,CAACC,MAC3BA,EAAK,aAAa,KAAK,aAClBA,EAAK,eAAe,IAAI,OAAO,SAAS,IACzCA,EAAK,aAAa,KAAK;AAAA,IAAA;AAAA,EAE/B;AAAA,EAOS,aAAaC,GAAgD;;AACpE,UAAM,aAAaA,CAAkB;AACrC,UAAMH,KAAOI,IAAA,KAAK,eAAL,gBAAAA,EAAiB,cAA+B;AAC7D,IAAIJ,KAAM,KAAK,WAAWA,CAAI,GAC1B,CAAC,KAAK,cAAc,CAAC,KAAK,SAAU,KAAK;AAAA,EAM/C;AAAA,EAES,SAAS;AAChB,UAAMK,IAAe,KAAK,YACpBC,IAAY,KAAK,aAAa,CAAC,CAAC,KAAK;AAE3C,WAAOC;AAAA;AAAA;AAAA,wBAGaD,IAAY,sBAAsB,EAAE;AAAA,gBAC5CD,IAAe,iBAAiB,WAAW;AAAA,4BAC/BA,IAAeG,IAAU,KAAK,WAAW;AAAA,sBAC/C,CAACH,KAAgB,KAAK,QAAQ,KAAK,QAAQG,CAAO;AAAA;AAAA;AAAA,UAG9DF,IACEC;AAAA,gBACI,KAAK,QAAQA,IAAO,KAAK,KAAK,KAAKC,CAAO;AAAA,kCACxB,KAAK,kBAAkB;AAAA,uBAE7CD,sBAAyB,KAAK,kBAAkB,UAAU;AAAA;AAAA;AAAA;AAAA,EAIpE;AACF;AAvFaT,EACK,SAAS,CAACF,GAAoBa,CAAmB;AAOjEC,EAAA;AAAA,EADCC,EAAS,EAAE,MAAM,QAAQ,SAAS,IAAM;AAAA,GAP9Bb,EAQX,WAAA,eAAA,CAAA;AAOAY,EAAA;AAAA,EADCC,EAAS,EAAE,MAAM,QAAQ,SAAS,IAAM;AAAA,GAd9Bb,EAeX,WAAA,WAAA,CAAA;AAQAY,EAAA;AAAA,EADCC,EAAS,EAAE,MAAM,SAAS,SAAS,IAAM;AAAA,GAtB/Bb,EAuBX,WAAA,cAAA,CAAA;AAQAY,EAAA;AAAA,EADCC,EAAS,EAAE,MAAM,QAAQ,SAAS,IAAM;AAAA,GA9B9Bb,EA+BX,WAAA,SAAA,CAAA;AAIQY,EAAA;AAAA,EADPE,EAAA;AAAM,GAlCId,EAmCH,WAAA,aAAA,CAAA;AAnCGA,IAANY,EAAA;AAAA,EADNG,EAAc,YAAY;AAAA,GACdf,CAAA;"}
@@ -3,9 +3,10 @@ import { query as m, state as c, property as d, customElement as w } from "lit/d
3
3
  import { classMap as x } from "lit/directives/class-map.js";
4
4
  import { ifDefined as p } from "lit/directives/if-defined.js";
5
5
  import { l as y, u as _ } from "./body-scroll-lock-VBa5TFP-.js";
6
- import { H as g } from "./helix-element-BNEYeiys.js";
7
- import { c as E } from "./id-counter-DuX8vsui.js";
8
- const S = b`
6
+ import { a as g } from "./forced-colors-CTEDFRGa.js";
7
+ import { H as E } from "./helix-element-BNEYeiys.js";
8
+ import { c as S } from "./id-counter-DuX8vsui.js";
9
+ const k = b`
9
10
  /* P2-03: Explicit [hidden] rule to survive CSS resets that may override the UA stylesheet. */
10
11
  [hidden] {
11
12
  display: none !important;
@@ -46,7 +47,10 @@ const S = b`
46
47
  .drawer-backdrop {
47
48
  position: absolute;
48
49
  inset: 0;
49
- background-color: var(--hx-drawer-backdrop-color, var(--hx-color-neutral-900));
50
+ background-color: var(
51
+ --hx-drawer-backdrop-color,
52
+ var(--hx-color-surface-overlay, rgba(0, 0, 0, 0.75))
53
+ );
50
54
  opacity: 0;
51
55
  transition: opacity var(--hx-duration-slow, 300ms) var(--hx-easing-out, ease-out);
52
56
  }
@@ -67,9 +71,9 @@ const S = b`
67
71
  position: absolute;
68
72
  display: flex;
69
73
  flex-direction: column;
70
- background-color: var(--hx-drawer-bg, var(--hx-color-neutral-0));
71
- color: var(--hx-drawer-color, var(--hx-color-neutral-900));
72
- box-shadow: var(--hx-drawer-shadow, var(--hx-shadow-xl));
74
+ background-color: var(--hx-drawer-bg, var(--hx-color-surface-default, #ffffff));
75
+ color: var(--hx-drawer-color, var(--hx-color-text-primary, #0d1825));
76
+ box-shadow: var(--hx-drawer-shadow, var(--hx-shadow-xl, 0 20px 25px -5px rgb(0 0 0 / 0.1)));
73
77
  overflow: hidden;
74
78
  outline: none;
75
79
  z-index: 1; /* local stacking context: panel above backdrop within overlay container */
@@ -166,18 +170,18 @@ const S = b`
166
170
  gap: var(--hx-space-4, 1rem);
167
171
  padding: var(--hx-drawer-header-padding, var(--hx-space-5, 1.25rem) var(--hx-space-6, 1.5rem));
168
172
  border-bottom: var(--hx-border-width-thin, 1px) solid
169
- var(--hx-drawer-header-border-color, var(--hx-color-neutral-200));
173
+ var(--hx-drawer-header-border-color, var(--hx-color-border-default, #d6dbd5));
170
174
  flex-shrink: 0;
171
175
  }
172
176
 
173
177
  .drawer-title {
174
178
  margin: 0;
175
179
  flex: 1 1 auto;
176
- font-family: var(--hx-drawer-font-family, var(--hx-font-family-sans));
177
- font-size: var(--hx-font-size-lg);
178
- font-weight: var(--hx-font-weight-semibold);
179
- line-height: var(--hx-line-height-tight);
180
- color: var(--hx-drawer-title-color, var(--hx-color-neutral-900));
180
+ font-family: var(--hx-drawer-font-family, var(--hx-font-family-sans, sans-serif));
181
+ font-size: var(--hx-font-size-lg, 1.125rem);
182
+ font-weight: var(--hx-font-weight-semibold, 600);
183
+ line-height: var(--hx-line-height-tight, 1.25);
184
+ color: var(--hx-drawer-title-color, var(--hx-color-text-primary, #0d1825));
181
185
  }
182
186
 
183
187
  .drawer-header-actions {
@@ -200,23 +204,20 @@ const S = b`
200
204
  border: none;
201
205
  border-radius: var(--hx-border-radius-md, 0.375rem);
202
206
  background: transparent;
203
- color: var(--hx-color-neutral-500);
207
+ color: var(--hx-drawer-close-btn-color, var(--hx-color-text-muted, #4a5362));
204
208
  cursor: pointer;
205
209
  flex-shrink: 0;
206
210
  transition: background-color var(--hx-duration-fast, 100ms) var(--hx-easing-default, ease);
207
211
  }
208
212
 
209
213
  .drawer-close-button:hover {
210
- background-color: var(--hx-color-neutral-100);
211
- color: var(--hx-color-neutral-900);
214
+ background-color: var(--hx-drawer-close-btn-hover-bg, var(--hx-color-surface-sunken, #ebeee9));
215
+ color: var(--hx-drawer-close-btn-hover-color, var(--hx-color-text-primary, #0d1825));
212
216
  }
213
217
 
214
218
  .drawer-close-button:focus-visible {
215
219
  outline: var(--hx-focus-ring-width, 2px) solid
216
- var(
217
- --hx-drawer-close-btn-focus-ring-color,
218
- var(--hx-focus-ring-color, var(--hx-color-primary-500))
219
- );
220
+ var(--hx-drawer-close-btn-focus-ring-color, var(--hx-focus-ring-color, #0f7078));
220
221
  outline-offset: var(--hx-focus-ring-offset, 2px);
221
222
  }
222
223
 
@@ -264,7 +265,7 @@ const S = b`
264
265
  gap: var(--hx-space-3, 0.75rem);
265
266
  padding: var(--hx-drawer-footer-padding, var(--hx-space-4, 1rem) var(--hx-space-6, 1.5rem));
266
267
  border-top: var(--hx-border-width-thin, 1px) solid
267
- var(--hx-drawer-footer-border-color, var(--hx-color-neutral-200));
268
+ var(--hx-drawer-footer-border-color, var(--hx-color-border-default, #d6dbd5));
268
269
  flex-shrink: 0;
269
270
  }
270
271
 
@@ -289,12 +290,12 @@ const S = b`
289
290
  }
290
291
  }
291
292
  `;
292
- var k = Object.defineProperty, C = Object.getOwnPropertyDescriptor, a = (e, t, r, i) => {
293
- for (var s = i > 1 ? void 0 : i ? C(t, r) : t, n = e.length - 1, l; n >= 0; n--)
293
+ var C = Object.defineProperty, A = Object.getOwnPropertyDescriptor, a = (e, t, r, i) => {
294
+ for (var s = i > 1 ? void 0 : i ? A(t, r) : t, n = e.length - 1, l; n >= 0; n--)
294
295
  (l = e[n]) && (s = (i ? l(t, r, s) : l(s)) || s);
295
- return i && s && k(t, r, s), s;
296
+ return i && s && C(t, r, s), s;
296
297
  };
297
- const A = E("hx-drawer"), T = {
298
+ const T = S("hx-drawer"), F = {
298
299
  sm: "20rem",
299
300
  md: "30rem",
300
301
  lg: "40rem",
@@ -309,9 +310,9 @@ const A = E("hx-drawer"), T = {
309
310
  '[tabindex]:not([tabindex="-1"])',
310
311
  "details > summary"
311
312
  ].join(",");
312
- let o = class extends g {
313
+ let o = class extends E {
313
314
  constructor() {
314
- super(...arguments), this._isOpen = !1, this._hasHeaderActionsSlot = !1, this._hasFooterSlot = !1, this._hasLabelSlot = !1, this._cachedFocusableElements = [], this._triggerElement = null, this._animationTimeout = null, this._hasScrollLock = !1, this._siblingAriaHiddenElements = [], this._titleId = `${A()}-title`, this.open = !1, this.placement = "end", this.size = "md", this.contained = !1, this.noHeader = !1, this.noFooter = !1, this.label = "", this.labelClose = "Close drawer", this._handleKeyDown = (e) => {
315
+ super(...arguments), this._isOpen = !1, this._hasHeaderActionsSlot = !1, this._hasFooterSlot = !1, this._hasLabelSlot = !1, this._cachedFocusableElements = [], this._triggerElement = null, this._animationTimeout = null, this._hasScrollLock = !1, this._siblingAriaHiddenElements = [], this._titleId = `${T()}-title`, this.open = !1, this.placement = "end", this.size = "md", this.contained = !1, this.noHeader = !1, this.noFooter = !1, this.label = "", this.labelClose = "Close drawer", this._handleKeyDown = (e) => {
315
316
  if (this._isOpen) {
316
317
  if (e.key === "Escape") {
317
318
  e.preventDefault(), this.open = !1;
@@ -348,7 +349,7 @@ let o = class extends g {
348
349
  // ─── Private: Size CSS variable ───
349
350
  /** @internal */
350
351
  _applySizeVar() {
351
- const e = T[this.size] ?? this.size;
352
+ const e = F[this.size] ?? this.size;
352
353
  this.style.setProperty("--_drawer-size", e);
353
354
  }
354
355
  // ─── Private: Open / Close ───
@@ -575,7 +576,7 @@ let o = class extends g {
575
576
  `;
576
577
  }
577
578
  };
578
- o.styles = [S];
579
+ o.styles = [k, g];
579
580
  a([
580
581
  m(".drawer-overlay")
581
582
  ], o.prototype, "_overlayEl", 2);
@@ -624,4 +625,4 @@ o = a([
624
625
  export {
625
626
  o as H
626
627
  };
627
- //# sourceMappingURL=hx-drawer-Cx2ZJhBe.js.map
628
+ //# sourceMappingURL=hx-drawer-Y1Ui2IWJ.js.map