@helixui/library 2.1.2-next.52 → 2.1.2-next.54

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 (817) hide show
  1. package/custom-elements.json +1110 -1249
  2. package/dist/base/helix-element.d.ts +20 -8
  3. package/dist/base/helix-element.d.ts.map +1 -1
  4. package/dist/components/hx-accordion/hx-accordion-item.d.ts +7 -4
  5. package/dist/components/hx-accordion/hx-accordion-item.d.ts.map +1 -1
  6. package/dist/components/hx-accordion/hx-accordion-item.styles.d.ts.map +1 -1
  7. package/dist/components/hx-accordion/hx-accordion.d.ts +3 -2
  8. package/dist/components/hx-accordion/hx-accordion.d.ts.map +1 -1
  9. package/dist/components/hx-accordion/hx-accordion.styles.d.ts.map +1 -1
  10. package/dist/components/hx-accordion/index.d.ts +1 -0
  11. package/dist/components/hx-accordion/index.d.ts.map +1 -1
  12. package/dist/components/hx-accordion/index.js +1 -1
  13. package/dist/components/hx-action-bar/hx-action-bar.d.ts +2 -11
  14. package/dist/components/hx-action-bar/hx-action-bar.d.ts.map +1 -1
  15. package/dist/components/hx-action-bar/hx-action-bar.styles.d.ts.map +1 -1
  16. package/dist/components/hx-action-bar/index.js +1 -1
  17. package/dist/components/hx-alert/hx-alert.d.ts +7 -2
  18. package/dist/components/hx-alert/hx-alert.d.ts.map +1 -1
  19. package/dist/components/hx-alert/hx-alert.styles.d.ts.map +1 -1
  20. package/dist/components/hx-alert/index.d.ts +1 -0
  21. package/dist/components/hx-alert/index.d.ts.map +1 -1
  22. package/dist/components/hx-alert/index.js +1 -1
  23. package/dist/components/hx-avatar/hx-avatar.d.ts +3 -2
  24. package/dist/components/hx-avatar/hx-avatar.d.ts.map +1 -1
  25. package/dist/components/hx-avatar/index.js +1 -1
  26. package/dist/components/hx-badge/hx-badge.d.ts +2 -9
  27. package/dist/components/hx-badge/hx-badge.d.ts.map +1 -1
  28. package/dist/components/hx-badge/hx-badge.styles.d.ts.map +1 -1
  29. package/dist/components/hx-badge/index.d.ts +1 -1
  30. package/dist/components/hx-badge/index.d.ts.map +1 -1
  31. package/dist/components/hx-badge/index.js +1 -1
  32. package/dist/components/hx-banner/hx-banner.d.ts +3 -2
  33. package/dist/components/hx-banner/hx-banner.d.ts.map +1 -1
  34. package/dist/components/hx-banner/hx-banner.styles.d.ts.map +1 -1
  35. package/dist/components/hx-banner/index.js +1 -1
  36. package/dist/components/hx-breadcrumb/hx-breadcrumb-item.d.ts +2 -2
  37. package/dist/components/hx-breadcrumb/hx-breadcrumb-item.d.ts.map +1 -1
  38. package/dist/components/hx-breadcrumb/hx-breadcrumb-item.styles.d.ts.map +1 -1
  39. package/dist/components/hx-breadcrumb/hx-breadcrumb.d.ts +9 -19
  40. package/dist/components/hx-breadcrumb/hx-breadcrumb.d.ts.map +1 -1
  41. package/dist/components/hx-breadcrumb/hx-breadcrumb.styles.d.ts.map +1 -1
  42. package/dist/components/hx-breadcrumb/index.js +1 -1
  43. package/dist/components/hx-button/hx-button.d.ts +31 -9
  44. package/dist/components/hx-button/hx-button.d.ts.map +1 -1
  45. package/dist/components/hx-button/hx-button.styles.d.ts.map +1 -1
  46. package/dist/components/hx-button/index.d.ts +1 -0
  47. package/dist/components/hx-button/index.d.ts.map +1 -1
  48. package/dist/components/hx-button/index.js +1 -1
  49. package/dist/components/hx-button-group/hx-button-group.d.ts +4 -6
  50. package/dist/components/hx-button-group/hx-button-group.d.ts.map +1 -1
  51. package/dist/components/hx-button-group/hx-button-group.styles.d.ts.map +1 -1
  52. package/dist/components/hx-button-group/index.js +1 -1
  53. package/dist/components/hx-card/hx-card.d.ts +19 -2
  54. package/dist/components/hx-card/hx-card.d.ts.map +1 -1
  55. package/dist/components/hx-card/hx-card.styles.d.ts.map +1 -1
  56. package/dist/components/hx-card/index.js +1 -1
  57. package/dist/components/hx-carousel/hx-carousel-item.d.ts +2 -2
  58. package/dist/components/hx-carousel/hx-carousel-item.d.ts.map +1 -1
  59. package/dist/components/hx-carousel/hx-carousel-item.styles.d.ts.map +1 -1
  60. package/dist/components/hx-carousel/hx-carousel.d.ts +2 -2
  61. package/dist/components/hx-carousel/hx-carousel.d.ts.map +1 -1
  62. package/dist/components/hx-carousel/hx-carousel.styles.d.ts.map +1 -1
  63. package/dist/components/hx-carousel/index.js +1 -1
  64. package/dist/components/hx-checkbox/hx-checkbox.d.ts +52 -5
  65. package/dist/components/hx-checkbox/hx-checkbox.d.ts.map +1 -1
  66. package/dist/components/hx-checkbox/hx-checkbox.styles.d.ts.map +1 -1
  67. package/dist/components/hx-checkbox/index.d.ts +1 -0
  68. package/dist/components/hx-checkbox/index.d.ts.map +1 -1
  69. package/dist/components/hx-checkbox/index.js +1 -1
  70. package/dist/components/hx-checkbox-group/hx-checkbox-group.d.ts +14 -20
  71. package/dist/components/hx-checkbox-group/hx-checkbox-group.d.ts.map +1 -1
  72. package/dist/components/hx-checkbox-group/hx-checkbox-group.styles.d.ts.map +1 -1
  73. package/dist/components/hx-checkbox-group/index.d.ts +1 -0
  74. package/dist/components/hx-checkbox-group/index.d.ts.map +1 -1
  75. package/dist/components/hx-checkbox-group/index.js +1 -1
  76. package/dist/components/hx-clinical-status/hx-clinical-status.d.ts +0 -7
  77. package/dist/components/hx-clinical-status/hx-clinical-status.d.ts.map +1 -1
  78. package/dist/components/hx-clinical-status/hx-clinical-status.styles.d.ts.map +1 -1
  79. package/dist/components/hx-clinical-status/index.js +1 -1
  80. package/dist/components/hx-code-snippet/hx-code-snippet.styles.d.ts.map +1 -1
  81. package/dist/components/hx-code-snippet/index.js +1 -1
  82. package/dist/components/hx-color-picker/hx-color-picker.d.ts +8 -11
  83. package/dist/components/hx-color-picker/hx-color-picker.d.ts.map +1 -1
  84. package/dist/components/hx-color-picker/hx-color-picker.styles.d.ts.map +1 -1
  85. package/dist/components/hx-color-picker/index.d.ts +1 -0
  86. package/dist/components/hx-color-picker/index.d.ts.map +1 -1
  87. package/dist/components/hx-color-picker/index.js +1 -1
  88. package/dist/components/hx-combobox/hx-combobox.d.ts +45 -22
  89. package/dist/components/hx-combobox/hx-combobox.d.ts.map +1 -1
  90. package/dist/components/hx-combobox/hx-combobox.styles.d.ts.map +1 -1
  91. package/dist/components/hx-combobox/index.d.ts +1 -0
  92. package/dist/components/hx-combobox/index.d.ts.map +1 -1
  93. package/dist/components/hx-combobox/index.js +1 -1
  94. package/dist/components/hx-container/hx-container.d.ts +2 -4
  95. package/dist/components/hx-container/hx-container.d.ts.map +1 -1
  96. package/dist/components/hx-container/hx-container.styles.d.ts.map +1 -1
  97. package/dist/components/hx-container/index.d.ts +0 -1
  98. package/dist/components/hx-container/index.d.ts.map +1 -1
  99. package/dist/components/hx-container/index.js +1 -1
  100. package/dist/components/hx-copy-button/hx-copy-button.d.ts +2 -2
  101. package/dist/components/hx-copy-button/hx-copy-button.d.ts.map +1 -1
  102. package/dist/components/hx-copy-button/hx-copy-button.styles.d.ts.map +1 -1
  103. package/dist/components/hx-copy-button/index.js +1 -1
  104. package/dist/components/hx-counter/hx-counter.d.ts +3 -2
  105. package/dist/components/hx-counter/hx-counter.d.ts.map +1 -1
  106. package/dist/components/hx-counter/hx-counter.styles.d.ts.map +1 -1
  107. package/dist/components/hx-counter/index.js +1 -1
  108. package/dist/components/hx-data-table/hx-data-table.d.ts +46 -2
  109. package/dist/components/hx-data-table/hx-data-table.d.ts.map +1 -1
  110. package/dist/components/hx-data-table/hx-data-table.styles.d.ts.map +1 -1
  111. package/dist/components/hx-data-table/index.d.ts +1 -0
  112. package/dist/components/hx-data-table/index.d.ts.map +1 -1
  113. package/dist/components/hx-data-table/index.js +1 -1
  114. package/dist/components/hx-date-picker/hx-date-picker.d.ts +35 -35
  115. package/dist/components/hx-date-picker/hx-date-picker.d.ts.map +1 -1
  116. package/dist/components/hx-date-picker/hx-date-picker.styles.d.ts.map +1 -1
  117. package/dist/components/hx-date-picker/index.d.ts +1 -0
  118. package/dist/components/hx-date-picker/index.d.ts.map +1 -1
  119. package/dist/components/hx-date-picker/index.js +1 -1
  120. package/dist/components/hx-dialog/hx-dialog.d.ts +44 -5
  121. package/dist/components/hx-dialog/hx-dialog.d.ts.map +1 -1
  122. package/dist/components/hx-dialog/hx-dialog.styles.d.ts.map +1 -1
  123. package/dist/components/hx-dialog/index.js +1 -1
  124. package/dist/components/hx-divider/hx-divider.d.ts +3 -4
  125. package/dist/components/hx-divider/hx-divider.d.ts.map +1 -1
  126. package/dist/components/hx-divider/hx-divider.styles.d.ts.map +1 -1
  127. package/dist/components/hx-divider/index.d.ts +0 -1
  128. package/dist/components/hx-divider/index.d.ts.map +1 -1
  129. package/dist/components/hx-divider/index.js +1 -1
  130. package/dist/components/hx-drawer/hx-drawer.d.ts +39 -2
  131. package/dist/components/hx-drawer/hx-drawer.d.ts.map +1 -1
  132. package/dist/components/hx-drawer/hx-drawer.styles.d.ts.map +1 -1
  133. package/dist/components/hx-drawer/index.js +1 -1
  134. package/dist/components/hx-dropdown/hx-dropdown.d.ts +11 -7
  135. package/dist/components/hx-dropdown/hx-dropdown.d.ts.map +1 -1
  136. package/dist/components/hx-dropdown/hx-dropdown.styles.d.ts.map +1 -1
  137. package/dist/components/hx-dropdown/index.js +1 -1
  138. package/dist/components/hx-field/hx-field.d.ts +4 -3
  139. package/dist/components/hx-field/hx-field.d.ts.map +1 -1
  140. package/dist/components/hx-field/hx-field.styles.d.ts.map +1 -1
  141. package/dist/components/hx-field/index.js +1 -1
  142. package/dist/components/hx-field-label/hx-field-label.d.ts +2 -2
  143. package/dist/components/hx-field-label/hx-field-label.d.ts.map +1 -1
  144. package/dist/components/hx-field-label/hx-field-label.styles.d.ts.map +1 -1
  145. package/dist/components/hx-field-label/index.js +1 -1
  146. package/dist/components/hx-file-upload/hx-file-upload.d.ts +39 -21
  147. package/dist/components/hx-file-upload/hx-file-upload.d.ts.map +1 -1
  148. package/dist/components/hx-file-upload/index.d.ts +1 -0
  149. package/dist/components/hx-file-upload/index.d.ts.map +1 -1
  150. package/dist/components/hx-file-upload/index.js +1 -1
  151. package/dist/components/hx-form/hx-form.d.ts +2 -2
  152. package/dist/components/hx-form/hx-form.d.ts.map +1 -1
  153. package/dist/components/hx-form/hx-form.styles.d.ts +8 -0
  154. package/dist/components/hx-form/hx-form.styles.d.ts.map +1 -1
  155. package/dist/components/hx-form/index.js +1 -1
  156. package/dist/components/hx-format-date/hx-format-date.d.ts +2 -2
  157. package/dist/components/hx-format-date/hx-format-date.d.ts.map +1 -1
  158. package/dist/components/hx-format-date/hx-format-date.styles.d.ts.map +1 -1
  159. package/dist/components/hx-format-date/index.js +1 -1
  160. package/dist/components/hx-grid/hx-grid.d.ts +4 -3
  161. package/dist/components/hx-grid/hx-grid.d.ts.map +1 -1
  162. package/dist/components/hx-grid/hx-grid.styles.d.ts.map +1 -1
  163. package/dist/components/hx-grid/index.js +1 -1
  164. package/dist/components/hx-help-text/hx-help-text.d.ts +2 -4
  165. package/dist/components/hx-help-text/hx-help-text.d.ts.map +1 -1
  166. package/dist/components/hx-help-text/hx-help-text.styles.d.ts.map +1 -1
  167. package/dist/components/hx-help-text/index.js +1 -1
  168. package/dist/components/hx-icon/hx-icon.d.ts +17 -2
  169. package/dist/components/hx-icon/hx-icon.d.ts.map +1 -1
  170. package/dist/components/hx-icon/hx-icon.styles.d.ts.map +1 -1
  171. package/dist/components/hx-icon/index.js +1 -1
  172. package/dist/components/hx-icon-button/hx-icon-button.d.ts +10 -14
  173. package/dist/components/hx-icon-button/hx-icon-button.d.ts.map +1 -1
  174. package/dist/components/hx-icon-button/hx-icon-button.styles.d.ts.map +1 -1
  175. package/dist/components/hx-icon-button/index.js +1 -1
  176. package/dist/components/hx-image/hx-image.d.ts +2 -2
  177. package/dist/components/hx-image/hx-image.d.ts.map +1 -1
  178. package/dist/components/hx-image/hx-image.styles.d.ts.map +1 -1
  179. package/dist/components/hx-image/index.js +1 -1
  180. package/dist/components/hx-link/hx-link.d.ts +2 -2
  181. package/dist/components/hx-link/hx-link.d.ts.map +1 -1
  182. package/dist/components/hx-link/hx-link.styles.d.ts.map +1 -1
  183. package/dist/components/hx-link/index.js +1 -1
  184. package/dist/components/hx-list/hx-list-item.d.ts +3 -2
  185. package/dist/components/hx-list/hx-list-item.d.ts.map +1 -1
  186. package/dist/components/hx-list/hx-list.d.ts +3 -2
  187. package/dist/components/hx-list/hx-list.d.ts.map +1 -1
  188. package/dist/components/hx-list/hx-list.styles.d.ts.map +1 -1
  189. package/dist/components/hx-list/index.js +1 -1
  190. package/dist/components/hx-menu/hx-menu-divider.d.ts +2 -2
  191. package/dist/components/hx-menu/hx-menu-divider.d.ts.map +1 -1
  192. package/dist/components/hx-menu/hx-menu-divider.styles.d.ts.map +1 -1
  193. package/dist/components/hx-menu/hx-menu-item.d.ts +2 -2
  194. package/dist/components/hx-menu/hx-menu-item.d.ts.map +1 -1
  195. package/dist/components/hx-menu/hx-menu-item.styles.d.ts.map +1 -1
  196. package/dist/components/hx-menu/hx-menu.d.ts +2 -2
  197. package/dist/components/hx-menu/hx-menu.d.ts.map +1 -1
  198. package/dist/components/hx-menu/hx-menu.styles.d.ts.map +1 -1
  199. package/dist/components/hx-menu/index.js +1 -1
  200. package/dist/components/hx-meter/hx-meter.d.ts +3 -4
  201. package/dist/components/hx-meter/hx-meter.d.ts.map +1 -1
  202. package/dist/components/hx-meter/hx-meter.styles.d.ts.map +1 -1
  203. package/dist/components/hx-meter/index.js +1 -1
  204. package/dist/components/hx-nav/hx-nav.d.ts +2 -4
  205. package/dist/components/hx-nav/hx-nav.d.ts.map +1 -1
  206. package/dist/components/hx-nav/hx-nav.styles.d.ts.map +1 -1
  207. package/dist/components/hx-nav/index.d.ts +1 -1
  208. package/dist/components/hx-nav/index.d.ts.map +1 -1
  209. package/dist/components/hx-nav/index.js +1 -1
  210. package/dist/components/hx-number-input/hx-number-input.d.ts +14 -20
  211. package/dist/components/hx-number-input/hx-number-input.d.ts.map +1 -1
  212. package/dist/components/hx-number-input/hx-number-input.styles.d.ts.map +1 -1
  213. package/dist/components/hx-number-input/index.d.ts +1 -0
  214. package/dist/components/hx-number-input/index.d.ts.map +1 -1
  215. package/dist/components/hx-number-input/index.js +1 -1
  216. package/dist/components/hx-overflow-menu/hx-overflow-menu.d.ts +2 -2
  217. package/dist/components/hx-overflow-menu/hx-overflow-menu.d.ts.map +1 -1
  218. package/dist/components/hx-overflow-menu/hx-overflow-menu.styles.d.ts.map +1 -1
  219. package/dist/components/hx-overflow-menu/index.js +1 -1
  220. package/dist/components/hx-pagination/hx-pagination.d.ts +10 -2
  221. package/dist/components/hx-pagination/hx-pagination.d.ts.map +1 -1
  222. package/dist/components/hx-pagination/index.d.ts +1 -0
  223. package/dist/components/hx-pagination/index.d.ts.map +1 -1
  224. package/dist/components/hx-pagination/index.js +1 -1
  225. package/dist/components/hx-patient-banner/hx-patient-banner.d.ts +47 -5
  226. package/dist/components/hx-patient-banner/hx-patient-banner.d.ts.map +1 -1
  227. package/dist/components/hx-patient-banner/hx-patient-banner.styles.d.ts.map +1 -1
  228. package/dist/components/hx-patient-banner/index.js +1 -1
  229. package/dist/components/hx-phi-field/hx-phi-field.d.ts +85 -5
  230. package/dist/components/hx-phi-field/hx-phi-field.d.ts.map +1 -1
  231. package/dist/components/hx-phi-field/hx-phi-field.styles.d.ts.map +1 -1
  232. package/dist/components/hx-phi-field/index.js +1 -1
  233. package/dist/components/hx-popover/hx-popover.d.ts +4 -2
  234. package/dist/components/hx-popover/hx-popover.d.ts.map +1 -1
  235. package/dist/components/hx-popover/hx-popover.styles.d.ts.map +1 -1
  236. package/dist/components/hx-popover/index.js +1 -1
  237. package/dist/components/hx-popup/hx-popup.d.ts +7 -2
  238. package/dist/components/hx-popup/hx-popup.d.ts.map +1 -1
  239. package/dist/components/hx-popup/hx-popup.styles.d.ts.map +1 -1
  240. package/dist/components/hx-popup/index.js +1 -1
  241. package/dist/components/hx-progress-bar/hx-progress-bar.d.ts +3 -4
  242. package/dist/components/hx-progress-bar/hx-progress-bar.d.ts.map +1 -1
  243. package/dist/components/hx-progress-bar/index.js +1 -1
  244. package/dist/components/hx-progress-ring/hx-progress-ring.d.ts +3 -2
  245. package/dist/components/hx-progress-ring/hx-progress-ring.d.ts.map +1 -1
  246. package/dist/components/hx-progress-ring/hx-progress-ring.styles.d.ts.map +1 -1
  247. package/dist/components/hx-progress-ring/index.js +1 -1
  248. package/dist/components/hx-prose/hx-prose.d.ts +3 -2
  249. package/dist/components/hx-prose/hx-prose.d.ts.map +1 -1
  250. package/dist/components/hx-prose/hx-prose.styles.d.ts +8 -0
  251. package/dist/components/hx-prose/hx-prose.styles.d.ts.map +1 -1
  252. package/dist/components/hx-prose/index.js +1 -1
  253. package/dist/components/hx-radio-group/hx-radio-group.d.ts +14 -39
  254. package/dist/components/hx-radio-group/hx-radio-group.d.ts.map +1 -1
  255. package/dist/components/hx-radio-group/hx-radio-group.styles.d.ts.map +1 -1
  256. package/dist/components/hx-radio-group/hx-radio.d.ts +19 -4
  257. package/dist/components/hx-radio-group/hx-radio.d.ts.map +1 -1
  258. package/dist/components/hx-radio-group/hx-radio.styles.d.ts.map +1 -1
  259. package/dist/components/hx-radio-group/index.d.ts +1 -0
  260. package/dist/components/hx-radio-group/index.d.ts.map +1 -1
  261. package/dist/components/hx-radio-group/index.js +1 -1
  262. package/dist/components/hx-rating/hx-rating.d.ts +9 -20
  263. package/dist/components/hx-rating/hx-rating.d.ts.map +1 -1
  264. package/dist/components/hx-rating/hx-rating.styles.d.ts.map +1 -1
  265. package/dist/components/hx-rating/index.d.ts +1 -0
  266. package/dist/components/hx-rating/index.d.ts.map +1 -1
  267. package/dist/components/hx-rating/index.js +1 -1
  268. package/dist/components/hx-select/hx-select.d.ts +26 -17
  269. package/dist/components/hx-select/hx-select.d.ts.map +1 -1
  270. package/dist/components/hx-select/hx-select.styles.d.ts.map +1 -1
  271. package/dist/components/hx-select/index.d.ts +1 -0
  272. package/dist/components/hx-select/index.d.ts.map +1 -1
  273. package/dist/components/hx-select/index.js +1 -1
  274. package/dist/components/hx-side-nav/hx-nav-item.d.ts +2 -5
  275. package/dist/components/hx-side-nav/hx-nav-item.d.ts.map +1 -1
  276. package/dist/components/hx-side-nav/hx-nav-item.styles.d.ts.map +1 -1
  277. package/dist/components/hx-side-nav/hx-side-nav.d.ts +3 -2
  278. package/dist/components/hx-side-nav/hx-side-nav.d.ts.map +1 -1
  279. package/dist/components/hx-side-nav/hx-side-nav.styles.d.ts.map +1 -1
  280. package/dist/components/hx-side-nav/index.js +1 -1
  281. package/dist/components/hx-skeleton/hx-skeleton.d.ts +3 -2
  282. package/dist/components/hx-skeleton/hx-skeleton.d.ts.map +1 -1
  283. package/dist/components/hx-skeleton/hx-skeleton.styles.d.ts.map +1 -1
  284. package/dist/components/hx-skeleton/index.js +1 -1
  285. package/dist/components/hx-slider/hx-slider.d.ts +18 -22
  286. package/dist/components/hx-slider/hx-slider.d.ts.map +1 -1
  287. package/dist/components/hx-slider/hx-slider.styles.d.ts.map +1 -1
  288. package/dist/components/hx-slider/index.d.ts +1 -0
  289. package/dist/components/hx-slider/index.d.ts.map +1 -1
  290. package/dist/components/hx-slider/index.js +1 -1
  291. package/dist/components/hx-spinner/hx-spinner.d.ts +2 -2
  292. package/dist/components/hx-spinner/hx-spinner.d.ts.map +1 -1
  293. package/dist/components/hx-spinner/hx-spinner.styles.d.ts.map +1 -1
  294. package/dist/components/hx-spinner/index.js +1 -1
  295. package/dist/components/hx-split-button/hx-split-button.d.ts +10 -4
  296. package/dist/components/hx-split-button/hx-split-button.d.ts.map +1 -1
  297. package/dist/components/hx-split-button/hx-split-button.styles.d.ts.map +1 -1
  298. package/dist/components/hx-split-button/index.js +1 -1
  299. package/dist/components/hx-split-panel/hx-split-panel.d.ts +12 -2
  300. package/dist/components/hx-split-panel/hx-split-panel.d.ts.map +1 -1
  301. package/dist/components/hx-split-panel/hx-split-panel.styles.d.ts.map +1 -1
  302. package/dist/components/hx-split-panel/index.js +1 -1
  303. package/dist/components/hx-stack/hx-stack.d.ts +2 -2
  304. package/dist/components/hx-stack/hx-stack.d.ts.map +1 -1
  305. package/dist/components/hx-stack/hx-stack.styles.d.ts.map +1 -1
  306. package/dist/components/hx-stack/index.js +1 -1
  307. package/dist/components/hx-stat/hx-stat.d.ts +4 -3
  308. package/dist/components/hx-stat/hx-stat.d.ts.map +1 -1
  309. package/dist/components/hx-stat/index.js +1 -1
  310. package/dist/components/hx-status-indicator/hx-status-indicator.d.ts +3 -2
  311. package/dist/components/hx-status-indicator/hx-status-indicator.d.ts.map +1 -1
  312. package/dist/components/hx-status-indicator/hx-status-indicator.styles.d.ts.map +1 -1
  313. package/dist/components/hx-status-indicator/index.js +1 -1
  314. package/dist/components/hx-steps/hx-step.d.ts +3 -2
  315. package/dist/components/hx-steps/hx-step.d.ts.map +1 -1
  316. package/dist/components/hx-steps/hx-step.styles.d.ts.map +1 -1
  317. package/dist/components/hx-steps/hx-steps.d.ts +11 -4
  318. package/dist/components/hx-steps/hx-steps.d.ts.map +1 -1
  319. package/dist/components/hx-steps/hx-steps.styles.d.ts.map +1 -1
  320. package/dist/components/hx-steps/index.js +1 -1
  321. package/dist/components/hx-structured-list/hx-structured-list.d.ts +3 -3
  322. package/dist/components/hx-structured-list/hx-structured-list.d.ts.map +1 -1
  323. package/dist/components/hx-structured-list/hx-structured-list.styles.d.ts.map +1 -1
  324. package/dist/components/hx-structured-list/index.js +1 -1
  325. package/dist/components/hx-style-scope/hx-style-scope.d.ts +3 -2
  326. package/dist/components/hx-style-scope/hx-style-scope.d.ts.map +1 -1
  327. package/dist/components/hx-style-scope/hx-style-scope.styles.d.ts.map +1 -1
  328. package/dist/components/hx-style-scope/index.js +1 -1
  329. package/dist/components/hx-switch/hx-switch.d.ts +25 -29
  330. package/dist/components/hx-switch/hx-switch.d.ts.map +1 -1
  331. package/dist/components/hx-switch/hx-switch.styles.d.ts.map +1 -1
  332. package/dist/components/hx-switch/index.d.ts +2 -1
  333. package/dist/components/hx-switch/index.d.ts.map +1 -1
  334. package/dist/components/hx-switch/index.js +1 -1
  335. package/dist/components/hx-table/hx-table.d.ts +3 -2
  336. package/dist/components/hx-table/hx-table.d.ts.map +1 -1
  337. package/dist/components/hx-table/hx-table.styles.d.ts.map +1 -1
  338. package/dist/components/hx-table/hx-tbody.d.ts +2 -2
  339. package/dist/components/hx-table/hx-tbody.d.ts.map +1 -1
  340. package/dist/components/hx-table/hx-td.d.ts +2 -2
  341. package/dist/components/hx-table/hx-td.d.ts.map +1 -1
  342. package/dist/components/hx-table/hx-tfoot.d.ts +2 -2
  343. package/dist/components/hx-table/hx-tfoot.d.ts.map +1 -1
  344. package/dist/components/hx-table/hx-th.d.ts +2 -2
  345. package/dist/components/hx-table/hx-th.d.ts.map +1 -1
  346. package/dist/components/hx-table/hx-thead.d.ts +2 -2
  347. package/dist/components/hx-table/hx-thead.d.ts.map +1 -1
  348. package/dist/components/hx-table/hx-tr.d.ts +2 -2
  349. package/dist/components/hx-table/hx-tr.d.ts.map +1 -1
  350. package/dist/components/hx-table/index.js +1 -1
  351. package/dist/components/hx-tabs/hx-tab-panel.d.ts +2 -2
  352. package/dist/components/hx-tabs/hx-tab-panel.d.ts.map +1 -1
  353. package/dist/components/hx-tabs/hx-tab-panel.styles.d.ts.map +1 -1
  354. package/dist/components/hx-tabs/hx-tab.d.ts +2 -2
  355. package/dist/components/hx-tabs/hx-tab.d.ts.map +1 -1
  356. package/dist/components/hx-tabs/hx-tab.styles.d.ts.map +1 -1
  357. package/dist/components/hx-tabs/hx-tabs.d.ts +14 -2
  358. package/dist/components/hx-tabs/hx-tabs.d.ts.map +1 -1
  359. package/dist/components/hx-tabs/hx-tabs.styles.d.ts.map +1 -1
  360. package/dist/components/hx-tabs/index.d.ts +1 -0
  361. package/dist/components/hx-tabs/index.d.ts.map +1 -1
  362. package/dist/components/hx-tabs/index.js +1 -1
  363. package/dist/components/hx-tag/hx-tag.d.ts +2 -4
  364. package/dist/components/hx-tag/hx-tag.d.ts.map +1 -1
  365. package/dist/components/hx-tag/hx-tag.styles.d.ts.map +1 -1
  366. package/dist/components/hx-tag/index.d.ts +0 -2
  367. package/dist/components/hx-tag/index.d.ts.map +1 -1
  368. package/dist/components/hx-tag/index.js +1 -1
  369. package/dist/components/hx-text/hx-text.d.ts +2 -2
  370. package/dist/components/hx-text/hx-text.d.ts.map +1 -1
  371. package/dist/components/hx-text/hx-text.styles.d.ts.map +1 -1
  372. package/dist/components/hx-text/index.js +1 -1
  373. package/dist/components/hx-text-input/hx-text-input.d.ts +34 -7
  374. package/dist/components/hx-text-input/hx-text-input.d.ts.map +1 -1
  375. package/dist/components/hx-text-input/hx-text-input.styles.d.ts.map +1 -1
  376. package/dist/components/hx-text-input/index.d.ts +1 -0
  377. package/dist/components/hx-text-input/index.d.ts.map +1 -1
  378. package/dist/components/hx-text-input/index.js +1 -1
  379. package/dist/components/hx-textarea/hx-textarea.d.ts +41 -25
  380. package/dist/components/hx-textarea/hx-textarea.d.ts.map +1 -1
  381. package/dist/components/hx-textarea/hx-textarea.styles.d.ts.map +1 -1
  382. package/dist/components/hx-textarea/index.d.ts +1 -0
  383. package/dist/components/hx-textarea/index.d.ts.map +1 -1
  384. package/dist/components/hx-textarea/index.js +1 -1
  385. package/dist/components/hx-theme/hx-theme.d.ts +3 -11
  386. package/dist/components/hx-theme/hx-theme.d.ts.map +1 -1
  387. package/dist/components/hx-theme/hx-theme.styles.d.ts.map +1 -1
  388. package/dist/components/hx-theme/index.d.ts +0 -2
  389. package/dist/components/hx-theme/index.d.ts.map +1 -1
  390. package/dist/components/hx-theme/index.js +1 -1
  391. package/dist/components/hx-time-picker/hx-time-picker.d.ts +13 -31
  392. package/dist/components/hx-time-picker/hx-time-picker.d.ts.map +1 -1
  393. package/dist/components/hx-time-picker/hx-time-picker.styles.d.ts.map +1 -1
  394. package/dist/components/hx-time-picker/index.d.ts +1 -0
  395. package/dist/components/hx-time-picker/index.d.ts.map +1 -1
  396. package/dist/components/hx-time-picker/index.js +1 -1
  397. package/dist/components/hx-toast/hx-toast-stack.d.ts +2 -2
  398. package/dist/components/hx-toast/hx-toast-stack.d.ts.map +1 -1
  399. package/dist/components/hx-toast/hx-toast.d.ts +3 -2
  400. package/dist/components/hx-toast/hx-toast.d.ts.map +1 -1
  401. package/dist/components/hx-toast/hx-toast.styles.d.ts.map +1 -1
  402. package/dist/components/hx-toast/index.js +1 -1
  403. package/dist/components/hx-toggle-button/hx-toggle-button.d.ts +10 -13
  404. package/dist/components/hx-toggle-button/hx-toggle-button.d.ts.map +1 -1
  405. package/dist/components/hx-toggle-button/hx-toggle-button.styles.d.ts.map +1 -1
  406. package/dist/components/hx-toggle-button/index.d.ts +1 -0
  407. package/dist/components/hx-toggle-button/index.d.ts.map +1 -1
  408. package/dist/components/hx-toggle-button/index.js +1 -1
  409. package/dist/components/hx-tooltip/hx-tooltip.d.ts +2 -2
  410. package/dist/components/hx-tooltip/hx-tooltip.d.ts.map +1 -1
  411. package/dist/components/hx-tooltip/hx-tooltip.styles.d.ts.map +1 -1
  412. package/dist/components/hx-tooltip/index.js +1 -1
  413. package/dist/components/hx-top-nav/hx-top-nav.d.ts +2 -2
  414. package/dist/components/hx-top-nav/hx-top-nav.d.ts.map +1 -1
  415. package/dist/components/hx-top-nav/hx-top-nav.styles.d.ts.map +1 -1
  416. package/dist/components/hx-top-nav/index.js +1 -1
  417. package/dist/components/hx-tree-view/hx-tree-item.d.ts +2 -4
  418. package/dist/components/hx-tree-view/hx-tree-item.d.ts.map +1 -1
  419. package/dist/components/hx-tree-view/hx-tree-item.styles.d.ts.map +1 -1
  420. package/dist/components/hx-tree-view/hx-tree-view.d.ts +2 -4
  421. package/dist/components/hx-tree-view/hx-tree-view.d.ts.map +1 -1
  422. package/dist/components/hx-tree-view/hx-tree-view.styles.d.ts.map +1 -1
  423. package/dist/components/hx-tree-view/index.d.ts +0 -4
  424. package/dist/components/hx-tree-view/index.d.ts.map +1 -1
  425. package/dist/components/hx-tree-view/index.js +1 -1
  426. package/dist/components/hx-visually-hidden/hx-visually-hidden.d.ts +2 -2
  427. package/dist/components/hx-visually-hidden/hx-visually-hidden.d.ts.map +1 -1
  428. package/dist/components/hx-visually-hidden/hx-visually-hidden.styles.d.ts.map +1 -1
  429. package/dist/components/hx-visually-hidden/index.js +1 -1
  430. package/dist/css/helix-all.css +3600 -790
  431. package/dist/css/helix-core.css +244 -50
  432. package/dist/css/helix-data.css +86 -7
  433. package/dist/css/helix-feedback.css +159 -61
  434. package/dist/css/helix-forms.css +2054 -105
  435. package/dist/css/helix-layout.css +53 -1
  436. package/dist/css/helix-media.css +40 -16
  437. package/dist/css/helix-navigation.css +209 -48
  438. package/dist/css/helix-overlay.css +99 -12
  439. package/dist/css/helix-tokens.css +30 -11
  440. package/dist/css/helix-utility.css +118 -9
  441. package/dist/css/hx-accordion.css +9 -1
  442. package/dist/css/hx-action-bar.css +17 -3
  443. package/dist/css/hx-alert.css +39 -18
  444. package/dist/css/hx-avatar.css +1 -1
  445. package/dist/css/hx-badge.css +31 -15
  446. package/dist/css/hx-banner.css +35 -18
  447. package/dist/css/hx-breadcrumb.css +27 -0
  448. package/dist/css/hx-button-group.css +13 -0
  449. package/dist/css/hx-button.css +6 -3
  450. package/dist/css/hx-card.css +18 -6
  451. package/dist/css/hx-carousel.css +40 -16
  452. package/dist/css/hx-checkbox-group.css +36 -4
  453. package/dist/css/hx-checkbox.css +74 -8
  454. package/dist/css/hx-clinical-status.css +46 -23
  455. package/dist/css/hx-code-snippet.css +25 -3
  456. package/dist/css/hx-color-picker.css +276 -1
  457. package/dist/css/hx-combobox.css +391 -1
  458. package/dist/css/hx-container.css +10 -0
  459. package/dist/css/hx-copy-button.css +31 -3
  460. package/dist/css/hx-counter.css +11 -1
  461. package/dist/css/hx-data-table.css +24 -1
  462. package/dist/css/hx-date-picker.css +437 -1
  463. package/dist/css/hx-dialog.css +23 -2
  464. package/dist/css/hx-divider.css +8 -0
  465. package/dist/css/hx-drawer.css +22 -1
  466. package/dist/css/hx-dropdown.css +10 -1
  467. package/dist/css/hx-field-label.css +18 -2
  468. package/dist/css/hx-field.css +39 -3
  469. package/dist/css/hx-file-upload.css +12 -12
  470. package/dist/css/hx-format-date.css +11 -0
  471. package/dist/css/hx-grid.css +10 -0
  472. package/dist/css/hx-help-text.css +25 -5
  473. package/dist/css/hx-icon-button.css +27 -0
  474. package/dist/css/hx-icon.css +8 -0
  475. package/dist/css/hx-image.css +11 -3
  476. package/dist/css/hx-link.css +23 -5
  477. package/dist/css/hx-list.css +10 -0
  478. package/dist/css/hx-menu.css +10 -2
  479. package/dist/css/hx-meter.css +22 -9
  480. package/dist/css/hx-nav.css +27 -12
  481. package/dist/css/hx-number-input.css +78 -0
  482. package/dist/css/hx-overflow-menu.css +41 -10
  483. package/dist/css/hx-pagination.css +13 -13
  484. package/dist/css/hx-patient-banner.css +30 -10
  485. package/dist/css/hx-phi-field.css +5 -2
  486. package/dist/css/hx-popover.css +16 -4
  487. package/dist/css/hx-popup.css +12 -0
  488. package/dist/css/hx-progress-bar.css +1 -1
  489. package/dist/css/hx-progress-ring.css +23 -1
  490. package/dist/css/hx-radio-group.css +35 -3
  491. package/dist/css/hx-rating.css +45 -4
  492. package/dist/css/hx-select.css +89 -7
  493. package/dist/css/hx-side-nav.css +26 -0
  494. package/dist/css/hx-skeleton.css +12 -0
  495. package/dist/css/hx-slider.css +16 -11
  496. package/dist/css/hx-spinner.css +12 -0
  497. package/dist/css/hx-split-button.css +37 -2
  498. package/dist/css/hx-split-panel.css +14 -0
  499. package/dist/css/hx-stack.css +10 -0
  500. package/dist/css/hx-stat.css +5 -5
  501. package/dist/css/hx-status-indicator.css +15 -2
  502. package/dist/css/hx-steps.css +12 -0
  503. package/dist/css/hx-structured-list.css +18 -2
  504. package/dist/css/hx-style-scope.css +11 -0
  505. package/dist/css/hx-switch.css +66 -4
  506. package/dist/css/hx-table.css +9 -1
  507. package/dist/css/hx-tabs.css +15 -3
  508. package/dist/css/hx-tag.css +24 -12
  509. package/dist/css/hx-text-input.css +71 -9
  510. package/dist/css/hx-text.css +38 -5
  511. package/dist/css/hx-textarea.css +71 -15
  512. package/dist/css/hx-theme.css +11 -0
  513. package/dist/css/hx-time-picker.css +224 -1
  514. package/dist/css/hx-toast.css +19 -7
  515. package/dist/css/hx-toggle-button.css +41 -4
  516. package/dist/css/hx-tooltip.css +16 -4
  517. package/dist/css/hx-top-nav.css +29 -8
  518. package/dist/css/hx-tree-view.css +9 -0
  519. package/dist/css/hx-visually-hidden.css +12 -0
  520. package/dist/css/index.css +1 -1
  521. package/dist/css/manifest.json +42 -9
  522. package/dist/form-test-utils.d.ts +45 -0
  523. package/dist/form-test-utils.d.ts.map +1 -0
  524. package/dist/index.d.ts +28 -14
  525. package/dist/index.d.ts.map +1 -1
  526. package/dist/index.js +189 -177
  527. package/dist/index.js.map +1 -1
  528. package/dist/mixins/FormMixin.d.ts +24 -5
  529. package/dist/mixins/FormMixin.d.ts.map +1 -1
  530. package/dist/mixins/aria-delegation.d.ts +1 -1
  531. package/dist/mixins/aria-delegation.d.ts.map +1 -1
  532. package/dist/mixins/index.d.ts +3 -1
  533. package/dist/mixins/index.d.ts.map +1 -1
  534. package/dist/shared/{FormMixin-Bjvw20G5.js → FormMixin-B8PXk5RQ.js} +31 -14
  535. package/dist/shared/FormMixin-B8PXk5RQ.js.map +1 -0
  536. package/dist/shared/{aria-delegation-CBP9eQ0M.js → aria-delegation-Doq6RRUy.js} +6 -6
  537. package/dist/shared/aria-delegation-Doq6RRUy.js.map +1 -0
  538. package/dist/shared/{helix-element-CZvaIEQP.js → helix-element-BNEYeiys.js} +30 -27
  539. package/dist/shared/helix-element-BNEYeiys.js.map +1 -0
  540. package/dist/shared/{hx-accordion-CpfO0YQo.js → hx-accordion-Wt52OOZD.js} +127 -80
  541. package/dist/shared/hx-accordion-Wt52OOZD.js.map +1 -0
  542. package/dist/shared/{hx-action-bar-CNLYufVd.js → hx-action-bar-BKMADbHj.js} +89 -85
  543. package/dist/shared/hx-action-bar-BKMADbHj.js.map +1 -0
  544. package/dist/shared/{hx-alert-CHOjTBds.js → hx-alert-D7n94HwI.js} +47 -26
  545. package/dist/shared/hx-alert-D7n94HwI.js.map +1 -0
  546. package/dist/shared/{hx-avatar-an-WsuLl.js → hx-avatar-iLYzu8MJ.js} +10 -10
  547. package/dist/shared/hx-avatar-iLYzu8MJ.js.map +1 -0
  548. package/dist/shared/{hx-badge-RPzd-t5l.js → hx-badge-CVCmMPyW.js} +43 -27
  549. package/dist/shared/hx-badge-CVCmMPyW.js.map +1 -0
  550. package/dist/shared/{hx-banner-B-WEDiq7.js → hx-banner-C_He7Tr4.js} +60 -43
  551. package/dist/shared/hx-banner-C_He7Tr4.js.map +1 -0
  552. package/dist/shared/{hx-breadcrumb-item-jLAKK038.js → hx-breadcrumb-item-CldCwD1d.js} +123 -83
  553. package/dist/shared/hx-breadcrumb-item-CldCwD1d.js.map +1 -0
  554. package/dist/shared/{hx-button-DoN8jjQT.js → hx-button-Ddl-T6T-.js} +117 -92
  555. package/dist/shared/hx-button-Ddl-T6T-.js.map +1 -0
  556. package/dist/shared/{hx-button-group-BXlMQTt_.js → hx-button-group-BJOGWoMa.js} +33 -21
  557. package/dist/shared/hx-button-group-BJOGWoMa.js.map +1 -0
  558. package/dist/shared/{hx-card-BgXZXDuc.js → hx-card-ycveujjL.js} +64 -38
  559. package/dist/shared/hx-card-ycveujjL.js.map +1 -0
  560. package/dist/shared/{hx-carousel-item-Dwt9Pphz.js → hx-carousel-item-D_dCv61-.js} +76 -41
  561. package/dist/shared/hx-carousel-item-D_dCv61-.js.map +1 -0
  562. package/dist/shared/{hx-checkbox-C82GjRXe.js → hx-checkbox-DkkoWoye.js} +163 -80
  563. package/dist/shared/hx-checkbox-DkkoWoye.js.map +1 -0
  564. package/dist/shared/{hx-checkbox-group-DThZeN5d.js → hx-checkbox-group-C3poJ-Zw.js} +105 -79
  565. package/dist/shared/hx-checkbox-group-C3poJ-Zw.js.map +1 -0
  566. package/dist/shared/{hx-clinical-status-BjtT5c0M.js → hx-clinical-status-BS5lcddT.js} +60 -38
  567. package/dist/shared/hx-clinical-status-BS5lcddT.js.map +1 -0
  568. package/dist/shared/{hx-code-snippet-DcVENSuC.js → hx-code-snippet-B7wUKzyb.js} +32 -11
  569. package/dist/shared/hx-code-snippet-B7wUKzyb.js.map +1 -0
  570. package/dist/shared/{hx-color-picker-C6EIuS9t.js → hx-color-picker-DBaKTVLr.js} +380 -119
  571. package/dist/shared/hx-color-picker-DBaKTVLr.js.map +1 -0
  572. package/dist/shared/hx-combobox-BmgYT7Ar.js +929 -0
  573. package/dist/shared/hx-combobox-BmgYT7Ar.js.map +1 -0
  574. package/dist/shared/{hx-container-BwWbMPTH.js → hx-container-DVI7sxfX.js} +25 -15
  575. package/dist/shared/hx-container-DVI7sxfX.js.map +1 -0
  576. package/dist/shared/{hx-copy-button-BoM0WsMd.js → hx-copy-button-8deNUdwP.js} +68 -40
  577. package/dist/shared/hx-copy-button-8deNUdwP.js.map +1 -0
  578. package/dist/shared/{hx-counter-B5NgKlw4.js → hx-counter-CKfl_g8K.js} +32 -22
  579. package/dist/shared/hx-counter-CKfl_g8K.js.map +1 -0
  580. package/dist/shared/{hx-data-table-D5Ne-goy.js → hx-data-table-B6h0RPn0.js} +203 -132
  581. package/dist/shared/hx-data-table-B6h0RPn0.js.map +1 -0
  582. package/dist/shared/hx-date-picker-Dq2Nb68_.js +1077 -0
  583. package/dist/shared/hx-date-picker-Dq2Nb68_.js.map +1 -0
  584. package/dist/shared/{hx-dialog-D4ubstxx.js → hx-dialog-CvIlY0Tc.js} +85 -52
  585. package/dist/shared/hx-dialog-CvIlY0Tc.js.map +1 -0
  586. package/dist/shared/{hx-divider-BBtOLHRP.js → hx-divider-DwpOrzMW.js} +23 -15
  587. package/dist/shared/hx-divider-DwpOrzMW.js.map +1 -0
  588. package/dist/shared/{hx-drawer--WDLuWtS.js → hx-drawer-Cx2ZJhBe.js} +101 -66
  589. package/dist/shared/hx-drawer-Cx2ZJhBe.js.map +1 -0
  590. package/dist/shared/{hx-dropdown-n5-XSmiV.js → hx-dropdown-BjDrPUq5.js} +55 -46
  591. package/dist/shared/hx-dropdown-BjDrPUq5.js.map +1 -0
  592. package/dist/shared/{hx-field-CwT9tki1.js → hx-field-Dp3qQMut.js} +61 -25
  593. package/dist/shared/hx-field-Dp3qQMut.js.map +1 -0
  594. package/dist/shared/{hx-field-label-CcOK9VU3.js → hx-field-label-BC8QViXv.js} +41 -25
  595. package/dist/shared/hx-field-label-BC8QViXv.js.map +1 -0
  596. package/dist/shared/{hx-file-upload-Di_vpQaG.js → hx-file-upload-B6Yl1u0i.js} +110 -102
  597. package/dist/shared/hx-file-upload-B6Yl1u0i.js.map +1 -0
  598. package/dist/shared/{hx-form-BM6PHsw3.js → hx-form-ButQFt9A.js} +12 -11
  599. package/dist/shared/hx-form-ButQFt9A.js.map +1 -0
  600. package/dist/shared/{hx-format-date-B7L9odbA.js → hx-format-date-CKnlQOmV.js} +20 -9
  601. package/dist/shared/hx-format-date-CKnlQOmV.js.map +1 -0
  602. package/dist/shared/{hx-grid-BIAR5h9m.js → hx-grid-CXZf3jeK.js} +28 -18
  603. package/dist/shared/hx-grid-CXZf3jeK.js.map +1 -0
  604. package/dist/shared/{hx-help-text-Bmb80bP4.js → hx-help-text-D7eytSim.js} +45 -25
  605. package/dist/shared/hx-help-text-D7eytSim.js.map +1 -0
  606. package/dist/shared/{hx-icon-BKHs3OLu.js → hx-icon-CcyDPDYY.js} +104 -62
  607. package/dist/shared/hx-icon-CcyDPDYY.js.map +1 -0
  608. package/dist/shared/{hx-icon-button-CJuy9xbw.js → hx-icon-button-BHneqPCU.js} +58 -42
  609. package/dist/shared/hx-icon-button-BHneqPCU.js.map +1 -0
  610. package/dist/shared/{hx-image-ztiXumZB.js → hx-image-2gt14zZd.js} +34 -26
  611. package/dist/shared/hx-image-2gt14zZd.js.map +1 -0
  612. package/dist/shared/{hx-link-CN7AvGOW.js → hx-link-BESrWK8M.js} +51 -33
  613. package/dist/shared/hx-link-BESrWK8M.js.map +1 -0
  614. package/dist/shared/{hx-list-Dnei26t4.js → hx-list-_9qVv02L.js} +32 -22
  615. package/dist/shared/hx-list-_9qVv02L.js.map +1 -0
  616. package/dist/shared/{hx-menu-divider-DRT8yHRZ.js → hx-menu-divider-Ck-9Os1t.js} +103 -60
  617. package/dist/shared/hx-menu-divider-Ck-9Os1t.js.map +1 -0
  618. package/dist/shared/{hx-meter-BcVC9yrt.js → hx-meter-TbROk-dw.js} +57 -43
  619. package/dist/shared/hx-meter-TbROk-dw.js.map +1 -0
  620. package/dist/shared/{hx-nav-l0Rp7WPW.js → hx-nav-BcYDmjf7.js} +71 -56
  621. package/dist/shared/hx-nav-BcYDmjf7.js.map +1 -0
  622. package/dist/shared/{hx-nav-item-CJN4VDrf.js → hx-nav-item-pqPasRUm.js} +67 -23
  623. package/dist/shared/hx-nav-item-pqPasRUm.js.map +1 -0
  624. package/dist/shared/{hx-number-input-0Waw7Z7u.js → hx-number-input-mOIZ3-46.js} +169 -96
  625. package/dist/shared/hx-number-input-mOIZ3-46.js.map +1 -0
  626. package/dist/shared/{hx-overflow-menu-DElwFSCd.js → hx-overflow-menu-Dprb9lnT.js} +70 -38
  627. package/dist/shared/hx-overflow-menu-Dprb9lnT.js.map +1 -0
  628. package/dist/shared/{hx-pagination-BNtx-LG6.js → hx-pagination-AguTQjYC.js} +35 -35
  629. package/dist/shared/hx-pagination-AguTQjYC.js.map +1 -0
  630. package/dist/shared/{hx-patient-banner-BKiN7nIE.js → hx-patient-banner-uE6gqLpT.js} +67 -47
  631. package/dist/shared/hx-patient-banner-uE6gqLpT.js.map +1 -0
  632. package/dist/shared/{hx-phi-field-DD1qcBSO.js → hx-phi-field-BC_XowhC.js} +138 -56
  633. package/dist/shared/hx-phi-field-BC_XowhC.js.map +1 -0
  634. package/dist/shared/{hx-popover-CydNuVkT.js → hx-popover-B2_203ct.js} +44 -30
  635. package/dist/shared/hx-popover-B2_203ct.js.map +1 -0
  636. package/dist/shared/{hx-popup-DbzezTOd.js → hx-popup-DZXpsJ1R.js} +89 -64
  637. package/dist/shared/hx-popup-DZXpsJ1R.js.map +1 -0
  638. package/dist/shared/{hx-progress-bar-Cm0VihTN.js → hx-progress-bar-KjEkEJLy.js} +21 -20
  639. package/dist/shared/hx-progress-bar-KjEkEJLy.js.map +1 -0
  640. package/dist/shared/{hx-progress-ring-Cs0WgWDJ.js → hx-progress-ring-3zMwvrwD.js} +53 -31
  641. package/dist/shared/hx-progress-ring-3zMwvrwD.js.map +1 -0
  642. package/dist/shared/{hx-prose-Ml_L2zje.js → hx-prose-BCtK7YL6.js} +48 -15
  643. package/dist/shared/{hx-prose-Ml_L2zje.js.map → hx-prose-BCtK7YL6.js.map} +1 -1
  644. package/dist/shared/{hx-radio-f8c5ggHG.js → hx-radio-BBC5qZgE.js} +202 -123
  645. package/dist/shared/hx-radio-BBC5qZgE.js.map +1 -0
  646. package/dist/shared/{hx-rating-qRJZXskm.js → hx-rating-C3E3ENJb.js} +92 -69
  647. package/dist/shared/hx-rating-C3E3ENJb.js.map +1 -0
  648. package/dist/shared/{hx-select-CgcgsHU5.js → hx-select-CixTo7jp.js} +206 -135
  649. package/dist/shared/hx-select-CixTo7jp.js.map +1 -0
  650. package/dist/shared/{hx-skeleton-tiYvKO-t.js → hx-skeleton-LxkI0pxr.js} +39 -27
  651. package/dist/shared/hx-skeleton-LxkI0pxr.js.map +1 -0
  652. package/dist/shared/{hx-slider-BvXtvxmN.js → hx-slider-DFHuzF3N.js} +79 -91
  653. package/dist/shared/hx-slider-DFHuzF3N.js.map +1 -0
  654. package/dist/shared/{hx-spinner-D6nzuGmj.js → hx-spinner-BKjuCdZB.js} +32 -20
  655. package/dist/shared/hx-spinner-BKjuCdZB.js.map +1 -0
  656. package/dist/shared/{hx-split-button-CPndTJlC.js → hx-split-button-CGcJMmCG.js} +59 -22
  657. package/dist/shared/hx-split-button-CGcJMmCG.js.map +1 -0
  658. package/dist/shared/{hx-split-panel-Dx72NaET.js → hx-split-panel-C-1R10Mc.js} +71 -47
  659. package/dist/shared/hx-split-panel-C-1R10Mc.js.map +1 -0
  660. package/dist/shared/{hx-stack-B76_1O6g.js → hx-stack-DGfcOfWJ.js} +21 -11
  661. package/dist/shared/hx-stack-DGfcOfWJ.js.map +1 -0
  662. package/dist/shared/{hx-stat-DKlyBL_K.js → hx-stat-BTpykQAt.js} +14 -14
  663. package/dist/shared/hx-stat-BTpykQAt.js.map +1 -0
  664. package/dist/shared/{hx-status-indicator-ClWpK6zz.js → hx-status-indicator-X2QEWNFt.js} +36 -23
  665. package/dist/shared/hx-status-indicator-X2QEWNFt.js.map +1 -0
  666. package/dist/shared/{hx-step-C2Jk4mHa.js → hx-step-CRNQlmSo.js} +83 -32
  667. package/dist/shared/hx-step-CRNQlmSo.js.map +1 -0
  668. package/dist/shared/{hx-structured-list-DKlrv7kS.js → hx-structured-list-CqNbaEXg.js} +32 -16
  669. package/dist/shared/hx-structured-list-CqNbaEXg.js.map +1 -0
  670. package/dist/shared/hx-style-scope-TDnR8H4O.js +251 -0
  671. package/dist/shared/hx-style-scope-TDnR8H4O.js.map +1 -0
  672. package/dist/shared/{hx-switch-BzMN37PV.js → hx-switch-DqOD9JR7.js} +122 -81
  673. package/dist/shared/hx-switch-DqOD9JR7.js.map +1 -0
  674. package/dist/shared/{hx-tab-panel-J58zOSjq.js → hx-tab-panel-BIzKfW5i.js} +156 -102
  675. package/dist/shared/hx-tab-panel-BIzKfW5i.js.map +1 -0
  676. package/dist/shared/{hx-tag-F0ZcYj9b.js → hx-tag-CgnrNnte.js} +30 -18
  677. package/dist/shared/hx-tag-CgnrNnte.js.map +1 -0
  678. package/dist/shared/{hx-td-CNCvzBwY.js → hx-td-Bra35cH4.js} +55 -47
  679. package/dist/shared/hx-td-Bra35cH4.js.map +1 -0
  680. package/dist/shared/{hx-text-DcWBqZwx.js → hx-text-DMC2CPlL.js} +74 -41
  681. package/dist/shared/hx-text-DMC2CPlL.js.map +1 -0
  682. package/dist/shared/{hx-text-input-Zuodg9s_.js → hx-text-input--q0GH78x.js} +123 -62
  683. package/dist/shared/hx-text-input--q0GH78x.js.map +1 -0
  684. package/dist/shared/{hx-textarea-BfSJJtA1.js → hx-textarea-CK621vSL.js} +124 -89
  685. package/dist/shared/hx-textarea-CK621vSL.js.map +1 -0
  686. package/dist/shared/{hx-theme-pc1V7dyL.js → hx-theme-DfEy-SJA.js} +72 -64
  687. package/dist/shared/hx-theme-DfEy-SJA.js.map +1 -0
  688. package/dist/shared/{hx-time-picker-CZvmihHD.js → hx-time-picker-tPUfgElQ.js} +300 -82
  689. package/dist/shared/hx-time-picker-tPUfgElQ.js.map +1 -0
  690. package/dist/shared/{hx-toggle-button-BZUQUULm.js → hx-toggle-button-L-uBJr-a.js} +72 -42
  691. package/dist/shared/hx-toggle-button-L-uBJr-a.js.map +1 -0
  692. package/dist/shared/{hx-tooltip-Ny4i1Idj.js → hx-tooltip-B_zfKvwc.js} +44 -31
  693. package/dist/shared/hx-tooltip-B_zfKvwc.js.map +1 -0
  694. package/dist/shared/{hx-top-nav-CC4FW2Hp.js → hx-top-nav-CATbRvIv.js} +53 -30
  695. package/dist/shared/hx-top-nav-CATbRvIv.js.map +1 -0
  696. package/dist/shared/{hx-tree-item-CPQ9dJiK.js → hx-tree-item-A45WCiBu.js} +37 -9
  697. package/dist/shared/hx-tree-item-A45WCiBu.js.map +1 -0
  698. package/dist/shared/hx-visually-hidden-0bZKOWgT.js +66 -0
  699. package/dist/shared/hx-visually-hidden-0bZKOWgT.js.map +1 -0
  700. package/dist/shared/id-counter-DuX8vsui.js +11 -0
  701. package/dist/shared/{id-counter-PTgF-zcG.js.map → id-counter-DuX8vsui.js.map} +1 -1
  702. package/dist/shared/{toast-factory-CEMNOt1T.js → toast-factory-BPPnG3mM.js} +58 -46
  703. package/dist/shared/toast-factory-BPPnG3mM.js.map +1 -0
  704. package/dist/utilities/injectLightStyles.d.ts.map +1 -1
  705. package/dist/utilities/sanitizeCss.d.ts +43 -0
  706. package/dist/utilities/sanitizeCss.d.ts.map +1 -0
  707. package/package.json +29 -13
  708. package/dist/shared/FormMixin-Bjvw20G5.js.map +0 -1
  709. package/dist/shared/aria-delegation-CBP9eQ0M.js.map +0 -1
  710. package/dist/shared/document-token-adoption-DuYNKd4k.js +0 -21
  711. package/dist/shared/document-token-adoption-DuYNKd4k.js.map +0 -1
  712. package/dist/shared/helix-element-CZvaIEQP.js.map +0 -1
  713. package/dist/shared/hx-accordion-CpfO0YQo.js.map +0 -1
  714. package/dist/shared/hx-action-bar-CNLYufVd.js.map +0 -1
  715. package/dist/shared/hx-alert-CHOjTBds.js.map +0 -1
  716. package/dist/shared/hx-avatar-an-WsuLl.js.map +0 -1
  717. package/dist/shared/hx-badge-RPzd-t5l.js.map +0 -1
  718. package/dist/shared/hx-banner-B-WEDiq7.js.map +0 -1
  719. package/dist/shared/hx-breadcrumb-item-jLAKK038.js.map +0 -1
  720. package/dist/shared/hx-button-DoN8jjQT.js.map +0 -1
  721. package/dist/shared/hx-button-group-BXlMQTt_.js.map +0 -1
  722. package/dist/shared/hx-card-BgXZXDuc.js.map +0 -1
  723. package/dist/shared/hx-carousel-item-Dwt9Pphz.js.map +0 -1
  724. package/dist/shared/hx-checkbox-C82GjRXe.js.map +0 -1
  725. package/dist/shared/hx-checkbox-group-DThZeN5d.js.map +0 -1
  726. package/dist/shared/hx-clinical-status-BjtT5c0M.js.map +0 -1
  727. package/dist/shared/hx-code-snippet-DcVENSuC.js.map +0 -1
  728. package/dist/shared/hx-color-picker-C6EIuS9t.js.map +0 -1
  729. package/dist/shared/hx-combobox-BJ4lQocO.js +0 -544
  730. package/dist/shared/hx-combobox-BJ4lQocO.js.map +0 -1
  731. package/dist/shared/hx-container-BwWbMPTH.js.map +0 -1
  732. package/dist/shared/hx-copy-button-BoM0WsMd.js.map +0 -1
  733. package/dist/shared/hx-counter-B5NgKlw4.js.map +0 -1
  734. package/dist/shared/hx-data-table-D5Ne-goy.js.map +0 -1
  735. package/dist/shared/hx-date-picker-Cd3I3WkX.js +0 -627
  736. package/dist/shared/hx-date-picker-Cd3I3WkX.js.map +0 -1
  737. package/dist/shared/hx-dialog-D4ubstxx.js.map +0 -1
  738. package/dist/shared/hx-divider-BBtOLHRP.js.map +0 -1
  739. package/dist/shared/hx-drawer--WDLuWtS.js.map +0 -1
  740. package/dist/shared/hx-dropdown-n5-XSmiV.js.map +0 -1
  741. package/dist/shared/hx-field-CwT9tki1.js.map +0 -1
  742. package/dist/shared/hx-field-label-CcOK9VU3.js.map +0 -1
  743. package/dist/shared/hx-file-upload-Di_vpQaG.js.map +0 -1
  744. package/dist/shared/hx-form-BM6PHsw3.js.map +0 -1
  745. package/dist/shared/hx-format-date-B7L9odbA.js.map +0 -1
  746. package/dist/shared/hx-grid-BIAR5h9m.js.map +0 -1
  747. package/dist/shared/hx-help-text-Bmb80bP4.js.map +0 -1
  748. package/dist/shared/hx-icon-BKHs3OLu.js.map +0 -1
  749. package/dist/shared/hx-icon-button-CJuy9xbw.js.map +0 -1
  750. package/dist/shared/hx-image-ztiXumZB.js.map +0 -1
  751. package/dist/shared/hx-link-CN7AvGOW.js.map +0 -1
  752. package/dist/shared/hx-list-Dnei26t4.js.map +0 -1
  753. package/dist/shared/hx-menu-divider-DRT8yHRZ.js.map +0 -1
  754. package/dist/shared/hx-meter-BcVC9yrt.js.map +0 -1
  755. package/dist/shared/hx-nav-item-CJN4VDrf.js.map +0 -1
  756. package/dist/shared/hx-nav-l0Rp7WPW.js.map +0 -1
  757. package/dist/shared/hx-number-input-0Waw7Z7u.js.map +0 -1
  758. package/dist/shared/hx-overflow-menu-DElwFSCd.js.map +0 -1
  759. package/dist/shared/hx-pagination-BNtx-LG6.js.map +0 -1
  760. package/dist/shared/hx-patient-banner-BKiN7nIE.js.map +0 -1
  761. package/dist/shared/hx-phi-field-DD1qcBSO.js.map +0 -1
  762. package/dist/shared/hx-popover-CydNuVkT.js.map +0 -1
  763. package/dist/shared/hx-popup-DbzezTOd.js.map +0 -1
  764. package/dist/shared/hx-progress-bar-Cm0VihTN.js.map +0 -1
  765. package/dist/shared/hx-progress-ring-Cs0WgWDJ.js.map +0 -1
  766. package/dist/shared/hx-radio-f8c5ggHG.js.map +0 -1
  767. package/dist/shared/hx-rating-qRJZXskm.js.map +0 -1
  768. package/dist/shared/hx-select-CgcgsHU5.js.map +0 -1
  769. package/dist/shared/hx-skeleton-tiYvKO-t.js.map +0 -1
  770. package/dist/shared/hx-slider-BvXtvxmN.js.map +0 -1
  771. package/dist/shared/hx-spinner-D6nzuGmj.js.map +0 -1
  772. package/dist/shared/hx-split-button-CPndTJlC.js.map +0 -1
  773. package/dist/shared/hx-split-panel-Dx72NaET.js.map +0 -1
  774. package/dist/shared/hx-stack-B76_1O6g.js.map +0 -1
  775. package/dist/shared/hx-stat-DKlyBL_K.js.map +0 -1
  776. package/dist/shared/hx-status-indicator-ClWpK6zz.js.map +0 -1
  777. package/dist/shared/hx-step-C2Jk4mHa.js.map +0 -1
  778. package/dist/shared/hx-structured-list-DKlrv7kS.js.map +0 -1
  779. package/dist/shared/hx-style-scope-CsQ2Phf_.js +0 -126
  780. package/dist/shared/hx-style-scope-CsQ2Phf_.js.map +0 -1
  781. package/dist/shared/hx-switch-BzMN37PV.js.map +0 -1
  782. package/dist/shared/hx-tab-panel-J58zOSjq.js.map +0 -1
  783. package/dist/shared/hx-tag-F0ZcYj9b.js.map +0 -1
  784. package/dist/shared/hx-td-CNCvzBwY.js.map +0 -1
  785. package/dist/shared/hx-text-DcWBqZwx.js.map +0 -1
  786. package/dist/shared/hx-text-input-Zuodg9s_.js.map +0 -1
  787. package/dist/shared/hx-textarea-BfSJJtA1.js.map +0 -1
  788. package/dist/shared/hx-theme-pc1V7dyL.js.map +0 -1
  789. package/dist/shared/hx-time-picker-CZvmihHD.js.map +0 -1
  790. package/dist/shared/hx-toggle-button-BZUQUULm.js.map +0 -1
  791. package/dist/shared/hx-tooltip-Ny4i1Idj.js.map +0 -1
  792. package/dist/shared/hx-top-nav-CC4FW2Hp.js.map +0 -1
  793. package/dist/shared/hx-tree-item-CPQ9dJiK.js.map +0 -1
  794. package/dist/shared/hx-visually-hidden-vKX8QjeX.js +0 -54
  795. package/dist/shared/hx-visually-hidden-vKX8QjeX.js.map +0 -1
  796. package/dist/shared/id-counter-PTgF-zcG.js +0 -15
  797. package/dist/shared/toast-factory-CEMNOt1T.js.map +0 -1
  798. package/dist/tools/cem-a11y-analyzer/analyzers/aria-analyzer.d.ts +0 -12
  799. package/dist/tools/cem-a11y-analyzer/analyzers/aria-analyzer.d.ts.map +0 -1
  800. package/dist/tools/cem-a11y-analyzer/analyzers/focus-analyzer.d.ts +0 -13
  801. package/dist/tools/cem-a11y-analyzer/analyzers/focus-analyzer.d.ts.map +0 -1
  802. package/dist/tools/cem-a11y-analyzer/analyzers/form-analyzer.d.ts +0 -13
  803. package/dist/tools/cem-a11y-analyzer/analyzers/form-analyzer.d.ts.map +0 -1
  804. package/dist/tools/cem-a11y-analyzer/analyzers/keyboard-analyzer.d.ts +0 -12
  805. package/dist/tools/cem-a11y-analyzer/analyzers/keyboard-analyzer.d.ts.map +0 -1
  806. package/dist/tools/cem-a11y-analyzer/analyzers/label-analyzer.d.ts +0 -13
  807. package/dist/tools/cem-a11y-analyzer/analyzers/label-analyzer.d.ts.map +0 -1
  808. package/dist/tools/cem-a11y-analyzer/analyzers/motion-analyzer.d.ts +0 -12
  809. package/dist/tools/cem-a11y-analyzer/analyzers/motion-analyzer.d.ts.map +0 -1
  810. package/dist/tools/cem-a11y-analyzer/index.d.ts +0 -14
  811. package/dist/tools/cem-a11y-analyzer/index.d.ts.map +0 -1
  812. package/dist/tools/cem-a11y-analyzer/reporter.d.ts +0 -6
  813. package/dist/tools/cem-a11y-analyzer/reporter.d.ts.map +0 -1
  814. package/dist/tools/cem-a11y-analyzer/scorer.d.ts +0 -22
  815. package/dist/tools/cem-a11y-analyzer/scorer.d.ts.map +0 -1
  816. package/dist/tools/cem-a11y-analyzer/types.d.ts +0 -171
  817. package/dist/tools/cem-a11y-analyzer/types.d.ts.map +0 -1
@@ -1,7 +1,8 @@
1
- import { css as k, LitElement as $, nothing as y, html as x } from "lit";
2
- import "./document-token-adoption-DuYNKd4k.js";
3
- import { property as d, state as C, customElement as P } from "lit/decorators.js";
4
- const D = k`
1
+ import { css as k, nothing as g, html as x } from "lit";
2
+ import { property as d, state as C, customElement as $ } from "lit/decorators.js";
3
+ import { H as P } from "./helix-element-BNEYeiys.js";
4
+ import { c as D } from "./id-counter-DuX8vsui.js";
5
+ const F = k`
5
6
  :host {
6
7
  /* P2-05: display:contents lets the trigger-wrapper control layout inline;
7
8
  position:relative was vestigial — body uses position:fixed via Floating UI */
@@ -18,11 +19,11 @@ const D = k`
18
19
  max-width: var(--hx-popover-max-width, 320px);
19
20
  padding: var(--hx-popover-padding, var(--hx-space-3, 0.75rem));
20
21
  background: var(--hx-popover-bg, var(--hx-color-neutral-0, #ffffff));
21
- color: var(--hx-popover-color, var(--hx-color-neutral-900, #111827));
22
- font-family: var(--hx-font-family-sans, sans-serif);
22
+ color: var(--hx-popover-color, var(--hx-color-neutral-900, #0f172a));
23
+ font-family: var(--hx-popover-font-family, var(--hx-font-family-sans, sans-serif));
23
24
  font-size: var(--hx-popover-font-size, var(--hx-font-size-sm, 0.875rem));
24
25
  line-height: var(--hx-line-height-normal, 1.5);
25
- border: 1px solid var(--hx-popover-border-color, var(--hx-color-neutral-200, #e5e7eb));
26
+ border: 1px solid var(--hx-popover-border-color, var(--hx-color-neutral-200, #e2e8f0));
26
27
  border-radius: var(--hx-popover-border-radius, var(--hx-border-radius-md, 0.375rem));
27
28
  box-shadow: var(
28
29
  --hx-popover-shadow,
@@ -52,7 +53,7 @@ const D = k`
52
53
  width: var(--hx-popover-arrow-size, 10px);
53
54
  height: var(--hx-popover-arrow-size, 10px);
54
55
  background: var(--hx-popover-bg, var(--hx-color-neutral-0, #ffffff));
55
- border: 1px solid var(--hx-popover-border-color, var(--hx-color-neutral-200, #e5e7eb));
56
+ border: 1px solid var(--hx-popover-border-color, var(--hx-color-neutral-200, #e2e8f0));
56
57
  transform: rotate(45deg);
57
58
  pointer-events: none;
58
59
  }
@@ -62,15 +63,28 @@ const D = k`
62
63
  transition: none;
63
64
  }
64
65
  }
66
+
67
+ /* ─── Forced Colors (Windows High Contrast) ─── */
68
+
69
+ @media (forced-colors: active) {
70
+ [part='body'] {
71
+ border-color: CanvasText;
72
+ }
73
+
74
+ [part='arrow'] {
75
+ border-color: CanvasText;
76
+ }
77
+ }
65
78
  `;
66
- var F = Object.defineProperty, L = Object.getOwnPropertyDescriptor, h = (e, t, r, o) => {
67
- for (var i = o > 1 ? void 0 : o ? L(t, r) : t, n = e.length - 1, s; n >= 0; n--)
79
+ var L = Object.defineProperty, M = Object.getOwnPropertyDescriptor, h = (e, t, r, o) => {
80
+ for (var i = o > 1 ? void 0 : o ? M(t, r) : t, n = e.length - 1, s; n >= 0; n--)
68
81
  (s = e[n]) && (i = (o ? s(t, r, i) : s(i)) || i);
69
- return o && i && F(t, r, i), i;
82
+ return o && i && L(t, r, i), i;
70
83
  };
71
- let M = 0, a = class extends $ {
84
+ const R = D("hx-popover");
85
+ let a = class extends P {
72
86
  constructor() {
73
- super(...arguments), this.open = !1, this.placement = "bottom", this.trigger = "click", this.distance = 8, this.skidding = 0, this.arrow = !1, this.label = "Popover", this._visible = !1, this._previousFocus = null, this._popoverId = `hx-popover-${++M}`, this._showTimer = null, this._hoverHideTimer = null, this._handleDocumentKeydown = (e) => {
87
+ super(...arguments), this.open = !1, this.placement = "bottom", this.trigger = "click", this.distance = 8, this.skidding = 0, this.arrow = !1, this.label = "Popover", this._visible = !1, this._previousFocus = null, this._popoverId = R(), this._showTimer = null, this._hoverHideTimer = null, this._handleDocumentKeydown = (e) => {
74
88
  var t, r, o;
75
89
  if (this._visible) {
76
90
  if (e.key === "Escape") {
@@ -174,44 +188,44 @@ let M = 0, a = class extends $ {
174
188
  if (!e) return;
175
189
  const t = e.assignedElements()[0], r = (m = this.shadowRoot) == null ? void 0 : m.querySelector('[part="body"]'), o = this.arrow ? (b = this.shadowRoot) == null ? void 0 : b.querySelector('[part="arrow"]') : null;
176
190
  if (!t || !r) return;
177
- const { computePosition: i, flip: n, shift: s, offset: l, arrow: c } = await import("@floating-ui/dom"), p = [
191
+ const { computePosition: i, flip: n, shift: s, offset: l, arrow: c } = await import("@floating-ui/dom"), u = [
178
192
  l({ mainAxis: this.distance, crossAxis: this.skidding }),
179
193
  n(),
180
194
  s({ padding: 8 })
181
195
  ];
182
- o && p.push(c({ element: o }));
196
+ o && u.push(c({ element: o }));
183
197
  const { x: w, y: E, placement: A, middlewareData: v } = await i(t, r, {
184
198
  placement: this.placement,
185
199
  strategy: "fixed",
186
- middleware: p
200
+ middleware: u
187
201
  });
188
202
  if (Object.assign(r.style, {
189
203
  left: `${w}px`,
190
204
  top: `${E}px`
191
205
  }), o && v.arrow) {
192
- const u = v.arrow, _ = A.split("-")[0] ?? "bottom", S = {
206
+ const p = v.arrow, _ = A.split("-")[0] ?? "bottom", T = {
193
207
  top: "bottom",
194
208
  right: "left",
195
209
  bottom: "top",
196
210
  left: "right"
197
211
  }[_] ?? "bottom";
198
212
  Object.assign(o.style, {
199
- left: u.x != null ? `${u.x}px` : "",
200
- top: u.y != null ? `${u.y}px` : "",
213
+ left: p.x != null ? `${p.x}px` : "",
214
+ top: p.y != null ? `${p.y}px` : "",
201
215
  right: "",
202
216
  bottom: "",
203
- [S]: "-5px"
217
+ [T]: "-5px"
204
218
  });
205
- const T = ["border-top", "border-right", "border-bottom", "border-left"];
206
- for (const H of T)
207
- o.style.setProperty(H, "");
208
- const g = {
219
+ const H = ["border-top", "border-right", "border-bottom", "border-left"];
220
+ for (const S of H)
221
+ o.style.setProperty(S, "");
222
+ const y = {
209
223
  bottom: ["border-bottom", "border-right"],
210
224
  top: ["border-top", "border-left"],
211
225
  right: ["border-top", "border-right"],
212
226
  left: ["border-bottom", "border-left"]
213
227
  }[_] ?? ["border-bottom", "border-right"];
214
- o.style.setProperty(g[0], "1px solid transparent"), o.style.setProperty(g[1], "1px solid transparent");
228
+ o.style.setProperty(y[0], "1px solid transparent"), o.style.setProperty(y[1], "1px solid transparent");
215
229
  }
216
230
  }
217
231
  /**
@@ -254,7 +268,7 @@ let M = 0, a = class extends $ {
254
268
  id=${this._popoverId}
255
269
  role="dialog"
256
270
  aria-label=${this.label}
257
- aria-hidden=${this._visible ? y : "true"}
271
+ aria-hidden=${this._visible ? g : "true"}
258
272
  tabindex="-1"
259
273
  ?inert=${!this._visible}
260
274
  class=${this._visible ? "visible" : ""}
@@ -262,12 +276,12 @@ let M = 0, a = class extends $ {
262
276
  @mouseleave=${this._handleBodyMouseLeave}
263
277
  >
264
278
  <slot></slot>
265
- ${this.arrow ? x`<div part="arrow"></div>` : y}
279
+ ${this.arrow ? x`<div part="arrow"></div>` : g}
266
280
  </div>
267
281
  `;
268
282
  }
269
283
  };
270
- a.styles = [D];
284
+ a.styles = [F];
271
285
  h([
272
286
  d({ type: Boolean, reflect: !0 })
273
287
  ], a.prototype, "open", 2);
@@ -293,9 +307,9 @@ h([
293
307
  C()
294
308
  ], a.prototype, "_visible", 2);
295
309
  a = h([
296
- P("hx-popover")
310
+ $("hx-popover")
297
311
  ], a);
298
312
  export {
299
313
  a as H
300
314
  };
301
- //# sourceMappingURL=hx-popover-CydNuVkT.js.map
315
+ //# sourceMappingURL=hx-popover-B2_203ct.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hx-popover-B2_203ct.js","sources":["../../src/components/hx-popover/hx-popover.styles.ts","../../src/components/hx-popover/hx-popover.ts"],"sourcesContent":["import { css } from 'lit';\n\nexport const helixPopoverStyles = css`\n :host {\n /* P2-05: display:contents lets the trigger-wrapper control layout inline;\n position:relative was vestigial — body uses position:fixed via Floating UI */\n display: contents;\n }\n\n .trigger-wrapper {\n display: inline-block;\n }\n\n [part='body'] {\n position: fixed;\n z-index: var(--hx-popover-z-index, 9999);\n max-width: var(--hx-popover-max-width, 320px);\n padding: var(--hx-popover-padding, var(--hx-space-3, 0.75rem));\n background: var(--hx-popover-bg, var(--hx-color-neutral-0, #ffffff));\n color: var(--hx-popover-color, var(--hx-color-neutral-900, #0f172a));\n font-family: var(--hx-popover-font-family, var(--hx-font-family-sans, sans-serif));\n font-size: var(--hx-popover-font-size, var(--hx-font-size-sm, 0.875rem));\n line-height: var(--hx-line-height-normal, 1.5);\n border: 1px solid var(--hx-popover-border-color, var(--hx-color-neutral-200, #e2e8f0));\n border-radius: var(--hx-popover-border-radius, var(--hx-border-radius-md, 0.375rem));\n box-shadow: var(\n --hx-popover-shadow,\n var(--hx-shadow-md, 0 4px 16px var(--hx-overlay-black-12, rgba(0, 0, 0, 0.12)))\n );\n visibility: hidden;\n opacity: 0;\n transition:\n opacity var(--hx-popover-transition-duration, 0.2s) ease,\n visibility var(--hx-popover-transition-duration, 0.2s) ease;\n word-wrap: break-word;\n }\n\n [part='body'].visible {\n visibility: visible;\n opacity: 1;\n }\n\n [part='body']:focus-visible {\n outline: var(--hx-focus-ring-width, 2px) solid\n var(--hx-popover-focus-ring-color, var(--hx-focus-ring-color, var(--hx-color-primary-500)));\n outline-offset: var(--hx-focus-ring-offset, 2px);\n }\n\n [part='arrow'] {\n position: absolute;\n width: var(--hx-popover-arrow-size, 10px);\n height: var(--hx-popover-arrow-size, 10px);\n background: var(--hx-popover-bg, var(--hx-color-neutral-0, #ffffff));\n border: 1px solid var(--hx-popover-border-color, var(--hx-color-neutral-200, #e2e8f0));\n transform: rotate(45deg);\n pointer-events: none;\n }\n\n @media (prefers-reduced-motion: reduce) {\n [part='body'] {\n transition: none;\n }\n }\n\n /* ─── Forced Colors (Windows High Contrast) ─── */\n\n @media (forced-colors: active) {\n [part='body'] {\n border-color: CanvasText;\n }\n\n [part='arrow'] {\n border-color: CanvasText;\n }\n }\n`;\n","import { html, nothing, type PropertyValues } from 'lit';\nimport '../../utilities/document-token-adoption.js';\nimport { customElement, property, state } from 'lit/decorators.js';\nimport { HelixElement, createIdCounter } from '../../base/index.js';\nimport { helixPopoverStyles } from './hx-popover.styles.js';\n\nconst _nextPopoverId = createIdCounter('hx-popover');\n\n/**\n * A popover that displays rich floating content attached to a trigger element.\n *\n * @summary Rich floating overlay attached to a trigger element.\n *\n * @tag hx-popover\n *\n * @slot anchor - The trigger element that opens the popover.\n * @slot - Default slot for popover body content.\n *\n * @csspart body - The popover body container element.\n * @csspart arrow - The arrow indicator element.\n *\n * @cssprop [--hx-popover-bg=var(--hx-color-neutral-0)] - Popover background color.\n * @cssprop [--hx-popover-color=var(--hx-color-neutral-900)] - Popover text color.\n * @cssprop [--hx-popover-font-size=var(--hx-font-size-sm)] - Popover font size.\n * @cssprop [--hx-popover-max-width=320px] - Maximum popover width.\n * @cssprop [--hx-popover-padding] - Popover padding.\n * @cssprop [--hx-popover-border-color=var(--hx-color-neutral-200)] - Popover border color.\n * @cssprop [--hx-popover-border-radius=var(--hx-border-radius-md)] - Popover border radius.\n * @cssprop [--hx-popover-shadow] - Popover box shadow.\n * @cssprop [--hx-popover-z-index=9999] - Popover z-index.\n * @cssprop [--hx-popover-transition-duration=0.2s] - Show/hide transition duration.\n * @cssprop [--hx-popover-arrow-size=10px] - Size of the arrow indicator.\n * @cssprop [--hx-popover-focus-ring-color=var(--hx-focus-ring-color)] - Focus ring color when the popover body receives focus.\n *\n * @fires {CustomEvent} hx-show - Emitted when the popover begins to show.\n * @fires {CustomEvent} hx-after-show - Emitted after the popover is fully visible.\n * @fires {CustomEvent} hx-hide - Emitted when the popover begins to hide.\n * @fires {CustomEvent} hx-after-hide - Emitted after the popover is fully hidden.\n *\n * @example\n * ```html\n * <hx-popover placement=\"bottom\" trigger=\"click\">\n * <button slot=\"anchor\">Open Popover</button>\n * <p>Rich popover content here.</p>\n * </hx-popover>\n * ```\n */\n\n@customElement('hx-popover')\nexport class HelixPopover extends HelixElement {\n static override styles = [helixPopoverStyles];\n\n /**\n * Whether the popover is open.\n * @attr open\n */\n @property({ type: Boolean, reflect: true })\n open = false;\n\n /**\n * Preferred placement of the popover relative to the anchor.\n * @attr placement\n */\n @property({ type: String, reflect: true })\n placement:\n | 'top'\n | 'top-start'\n | 'top-end'\n | 'right'\n | 'right-start'\n | 'right-end'\n | 'bottom'\n | 'bottom-start'\n | 'bottom-end'\n | 'left'\n | 'left-start'\n | 'left-end' = 'bottom';\n\n /**\n * How the popover is triggered.\n * @attr trigger\n */\n @property({ type: String, reflect: true })\n trigger: 'click' | 'hover' | 'focus' | 'manual' = 'click';\n\n /**\n * Distance in pixels between the popover and the anchor.\n * @attr distance\n */\n @property({ type: Number, reflect: true })\n distance = 8;\n\n /**\n * Alignment offset in pixels along the anchor.\n * @attr skidding\n */\n @property({ type: Number, reflect: true })\n skidding = 0;\n\n /**\n * Whether to show an arrow pointing to the anchor.\n * @attr arrow\n */\n @property({ type: Boolean, reflect: true })\n arrow = false;\n\n /**\n * Accessible label for the popover body (sets aria-label on the dialog).\n * @attr label\n */\n @property({ type: String, reflect: true })\n label = 'Popover';\n\n /**\n * Tracks whether the popover body is currently visible.\n * @internal\n */\n @state() private _visible = false;\n\n /**\n * The element that held focus before the popover opened, used to restore focus on close.\n * @internal\n */\n private _previousFocus: HTMLElement | null = null;\n\n /**\n * Unique ID assigned to the popover body element.\n * @internal\n */\n private readonly _popoverId = _nextPopoverId();\n\n /**\n * Timer ID for the deferred document click listener registration in _show().\n * Stored so it can be cancelled in disconnectedCallback to prevent leaks.\n * @internal\n */\n private _showTimer: ReturnType<typeof setTimeout> | null = null;\n\n /**\n * Timer ID for the hover-triggered hide delay.\n * WCAG 1.4.13: hoverable content must remain visible while the pointer is\n * over it. A 150 ms delay allows the pointer to move from the anchor into\n * the popover body without the content dismissing prematurely.\n * @internal\n */\n private _hoverHideTimer: ReturnType<typeof setTimeout> | null = null;\n\n // ─── Lifecycle ───\n\n override disconnectedCallback(): void {\n super.disconnectedCallback();\n if (this._showTimer !== null) {\n clearTimeout(this._showTimer);\n this._showTimer = null;\n }\n if (this._hoverHideTimer !== null) {\n clearTimeout(this._hoverHideTimer);\n this._hoverHideTimer = null;\n }\n document.removeEventListener('click', this._handleDocumentClick);\n document.removeEventListener('keydown', this._handleDocumentKeydown);\n }\n\n override firstUpdated(): void {\n // HIGH-02: set aria-haspopup=\"dialog\" once on the anchor so assistive technology\n // announces the control's popup type before it is ever opened.\n this._setAnchorAriaAttributes(false);\n // Sync initial open state\n if (this.open) {\n void this._show();\n }\n }\n\n override updated(changedProperties: PropertyValues<this>): void {\n if (changedProperties.has('open')) {\n if (this.open) {\n void this._show();\n } else {\n void this._hide();\n }\n }\n }\n\n // ─── ARIA setup ───\n\n // HIGH-02: set aria-haspopup=\"dialog\" on firstUpdated and keep aria-expanded in sync\n /** @internal */\n private _setAnchorAriaAttributes(expanded: boolean): void {\n const anchorSlot = this.shadowRoot?.querySelector(\n 'slot[name=\"anchor\"]',\n ) as HTMLSlotElement | null;\n if (!anchorSlot) return;\n const anchorEl = anchorSlot.assignedElements()[0] as HTMLElement | undefined;\n if (anchorEl) {\n anchorEl.setAttribute('aria-expanded', String(expanded));\n anchorEl.setAttribute('aria-haspopup', 'dialog');\n // aria-controls is omitted: the body lives in Shadow DOM and axe-core\n // cannot resolve cross-root IDREF values, which causes a critical violation.\n }\n }\n\n // ─── Focus helpers ───\n\n /** Return all keyboard-focusable elements inside the popover body's slotted content. */\n /** @internal */\n private _getFocusableElements(): HTMLElement[] {\n const bodyEl = this.shadowRoot?.querySelector('[part=\"body\"]') as HTMLElement | null;\n if (!bodyEl) return [];\n\n // Gather focusable elements from the default slot's assigned nodes\n const defaultSlot = bodyEl.querySelector('slot:not([name])') as HTMLSlotElement | null;\n if (!defaultSlot) return [];\n\n const assigned = defaultSlot.assignedElements({ flatten: true });\n const focusableSelector =\n 'a[href], area[href], button:not([disabled]), input:not([disabled]), select:not([disabled]), textarea:not([disabled]), [tabindex]:not([tabindex=\"-1\"]), details > summary';\n\n const result: HTMLElement[] = [];\n for (const el of assigned) {\n if (el.matches(focusableSelector)) {\n result.push(el as HTMLElement);\n }\n const nested = el.querySelectorAll<HTMLElement>(focusableSelector);\n result.push(...nested);\n }\n return result;\n }\n\n // ─── Show/Hide ───\n\n /** @internal */\n private async _show(): Promise<void> {\n if (this._visible) return;\n // P0-02: save focus target before moving focus into dialog\n this._previousFocus = document.activeElement as HTMLElement | null;\n this.dispatchEvent(new CustomEvent<void>('hx-show', { bubbles: true, composed: true }));\n this._visible = true;\n this.open = true;\n this._setAnchorAriaAttributes(true);\n // P1-03 / HIGH-01: single keydown listener handles both Escape and focus trap.\n // Registered synchronously before any await so it is in place before the first\n // await el.updateComplete in tests.\n document.addEventListener('keydown', this._handleDocumentKeydown);\n await this.updateComplete;\n // hx-after-show fires after Lit has rendered the visible state. Dispatching here\n // (before _updatePosition) ensures it fires in the same microtask as the test's\n // await-continuation, so tests can rely on a single await el.updateComplete.\n this.dispatchEvent(new CustomEvent<void>('hx-after-show', { bubbles: true, composed: true }));\n // WCAG 2.4.3: only move focus into the popover when it contains interactive\n // content. For non-interactive (informational) popovers, stealing focus from\n // the trigger is unexpected and disruptive for keyboard users.\n const bodyEl = this.shadowRoot?.querySelector('[part=\"body\"]') as HTMLElement | null;\n if (bodyEl) {\n const hasInteractive = this._getFocusableElements().length > 0;\n if (hasInteractive) {\n bodyEl.focus();\n }\n }\n // P0-01: listen for outside clicks; deferred to avoid catching the opening click\n if (this._showTimer !== null) {\n clearTimeout(this._showTimer);\n }\n this._showTimer = setTimeout(() => {\n this._showTimer = null;\n document.addEventListener('click', this._handleDocumentClick);\n }, 0);\n await this._updatePosition();\n }\n\n // HIGH-03: _hideWithFocusRestore controls whether _previousFocus is restored.\n // Escape and programmatic close restore focus; click-outside does not.\n /** @internal */\n private async _hide(restoreFocus = true): Promise<void> {\n if (!this._visible) return;\n document.removeEventListener('click', this._handleDocumentClick);\n document.removeEventListener('keydown', this._handleDocumentKeydown);\n this.dispatchEvent(new CustomEvent<void>('hx-hide', { bubbles: true, composed: true }));\n this._visible = false;\n this.open = false;\n this._setAnchorAriaAttributes(false);\n // HIGH-03: only restore focus on Escape / programmatic close\n if (restoreFocus) {\n this._previousFocus?.focus();\n }\n this._previousFocus = null;\n await this.updateComplete;\n this.dispatchEvent(new CustomEvent<void>('hx-after-hide', { bubbles: true, composed: true }));\n }\n\n // ─── Positioning ───\n\n /** @internal */\n private async _updatePosition(): Promise<void> {\n const anchorSlot = this.shadowRoot?.querySelector(\n 'slot[name=\"anchor\"]',\n ) as HTMLSlotElement | null;\n if (!anchorSlot) return;\n const anchorEl = anchorSlot.assignedElements()[0] as HTMLElement | undefined;\n const bodyEl = this.shadowRoot?.querySelector('[part=\"body\"]') as HTMLElement | null;\n const arrowEl = this.arrow\n ? (this.shadowRoot?.querySelector('[part=\"arrow\"]') as HTMLElement | null)\n : null;\n\n if (!anchorEl || !bodyEl) return;\n\n const { computePosition, flip, shift, offset, arrow } = await import('@floating-ui/dom');\n\n const middleware = [\n offset({ mainAxis: this.distance, crossAxis: this.skidding }),\n flip(),\n shift({ padding: 8 }),\n ];\n\n if (arrowEl) {\n middleware.push(arrow({ element: arrowEl }));\n }\n\n const { x, y, placement, middlewareData } = await computePosition(anchorEl, bodyEl, {\n placement: this.placement,\n strategy: 'fixed',\n middleware,\n });\n\n Object.assign(bodyEl.style, {\n left: `${x}px`,\n top: `${y}px`,\n });\n\n if (arrowEl && middlewareData.arrow) {\n const arrowData = middlewareData.arrow;\n const basePlacement = placement.split('-')[0] ?? 'bottom';\n const oppositeSide: Record<string, string> = {\n top: 'bottom',\n right: 'left',\n bottom: 'top',\n left: 'right',\n };\n const staticSide = oppositeSide[basePlacement] ?? 'bottom';\n\n Object.assign(arrowEl.style, {\n left: arrowData.x != null ? `${arrowData.x}px` : '',\n top: arrowData.y != null ? `${arrowData.y}px` : '',\n right: '',\n bottom: '',\n [staticSide]: '-5px',\n });\n\n // P2-02: hide the two border sides facing the popover body so only\n // the outward-facing corner is visible (avoids the inner border line).\n // Reset all four sides first, then make the two inner-facing ones transparent.\n const borderSides = ['border-top', 'border-right', 'border-bottom', 'border-left'] as const;\n for (const side of borderSides) {\n arrowEl.style.setProperty(side, '');\n }\n // Maps base placement → the two sides that face inward toward the popover body\n const innerBorderMap: Record<string, readonly [string, string]> = {\n bottom: ['border-bottom', 'border-right'],\n top: ['border-top', 'border-left'],\n right: ['border-top', 'border-right'],\n left: ['border-bottom', 'border-left'],\n };\n const innerSides = innerBorderMap[basePlacement] ?? ['border-bottom', 'border-right'];\n arrowEl.style.setProperty(innerSides[0], '1px solid transparent');\n arrowEl.style.setProperty(innerSides[1], '1px solid transparent');\n }\n }\n\n // ─── Event Handlers ───\n\n // P1-03 / P0-01 / HIGH-01: single document-level keydown handler while popover is open.\n // Handles Escape (close) and Tab (focus trap) in one listener to reduce overhead.\n /**\n * Handles Escape to close the popover and Tab/Shift+Tab to trap focus within it.\n * @internal\n */\n private _handleDocumentKeydown = (e: KeyboardEvent): void => {\n if (!this._visible) return;\n\n if (e.key === 'Escape') {\n // HIGH-03: Escape always restores focus to the prior element\n void this._hide(true);\n return;\n }\n\n if (e.key === 'Tab') {\n // HIGH-01: trap Tab/Shift+Tab focus within the popover body\n const focusable = this._getFocusableElements();\n if (focusable.length === 0) return;\n\n const bodyEl = this.shadowRoot?.querySelector('[part=\"body\"]') as HTMLElement | null;\n const allFocusable = bodyEl ? [bodyEl, ...focusable] : focusable;\n if (allFocusable.length === 0) return;\n\n const first = allFocusable[0] as HTMLElement;\n const last = allFocusable[allFocusable.length - 1] as HTMLElement;\n\n if (e.shiftKey) {\n if (document.activeElement === first || this.shadowRoot?.activeElement === first) {\n e.preventDefault();\n last.focus();\n }\n } else {\n if (document.activeElement === last || this.shadowRoot?.activeElement === last) {\n e.preventDefault();\n first.focus();\n }\n }\n }\n };\n\n // P0-01: close when click target is outside this component\n /**\n * Closes the popover when a click occurs outside the component boundary.\n * @internal\n */\n private _handleDocumentClick = (e: Event): void => {\n // Shadow DOM retargets events from within to the host at document level,\n // so a click on the trigger wrapper appears as e.target === this.\n if (e.target !== this && !this.contains(e.target as Node)) {\n // HIGH-03: click-outside does NOT restore focus — let browser handle naturally\n void this._hide(false);\n }\n };\n\n /**\n * Toggles the popover open/closed when the anchor is clicked in click trigger mode.\n * @internal\n */\n private _handleAnchorClick = (): void => {\n if (this.trigger !== 'click') return;\n if (this._visible) {\n void this._hide(true);\n } else {\n void this._show();\n }\n };\n\n /**\n * Opens the popover when the anchor receives a mouseenter event in hover trigger mode.\n * @internal\n */\n private _handleAnchorMouseEnter = (): void => {\n if (this.trigger !== 'hover') return;\n void this._show();\n };\n\n /**\n * Closes the popover when the anchor receives a mouseleave event in hover trigger mode.\n * WCAG 1.4.13: applies a 150 ms delay so the pointer can move from anchor\n * into the popover body without the content dismissing prematurely.\n * @internal\n */\n private _handleAnchorMouseLeave = (): void => {\n if (this.trigger !== 'hover') return;\n this._scheduleHoverHide();\n };\n\n // CRITICAL-02: body hover handlers so moving the pointer from anchor into\n // the popover content does not trigger a hide.\n /** @internal */\n private _handleBodyMouseEnter = (): void => {\n // Cancel a pending hide that would have fired from the anchor's mouseleave.\n if (this.trigger !== 'hover') return;\n this._cancelHoverHide();\n };\n\n /** @internal */\n private _handleBodyMouseLeave = (): void => {\n if (this.trigger !== 'hover') return;\n this._scheduleHoverHide();\n };\n\n /**\n * Schedules a hide with a 150 ms delay for hover-triggered dismissal.\n * WCAG 1.4.13: the delay allows the pointer to travel between the anchor\n * and the popover body without the content disappearing.\n * @internal\n */\n private _scheduleHoverHide(): void {\n this._cancelHoverHide();\n this._hoverHideTimer = setTimeout(() => {\n this._hoverHideTimer = null;\n void this._hide(false);\n }, 150);\n }\n\n /**\n * Cancels any pending hover-triggered hide.\n * @internal\n */\n private _cancelHoverHide(): void {\n if (this._hoverHideTimer !== null) {\n clearTimeout(this._hoverHideTimer);\n this._hoverHideTimer = null;\n }\n }\n\n /** @internal */\n private _handleAnchorFocusIn = (): void => {\n // CRITICAL-02: keyboard users trigger hover-mode popovers via focusin\n if (this.trigger !== 'focus' && this.trigger !== 'hover') return;\n void this._show();\n };\n\n /** @internal */\n private _handleAnchorFocusOut = (e: FocusEvent): void => {\n // CRITICAL-02: for hover mode, only hide when focus leaves both the anchor\n // and the popover body (i.e. relatedTarget is outside the component).\n if (this.trigger !== 'focus' && this.trigger !== 'hover') return;\n const related = e.relatedTarget as Node | null;\n // If focus is moving into the shadow root (body element), keep popover open\n if (related && (this.contains(related) || this.shadowRoot?.contains(related))) return;\n void this._hide(true);\n };\n\n /** @internal */\n private _handleAnchorSlotChange(): void {\n this._setAnchorAriaAttributes(this._visible);\n }\n\n // ─── Render ───\n\n override render() {\n return html`\n <div\n class=\"trigger-wrapper\"\n @click=${this._handleAnchorClick}\n @mouseenter=${this._handleAnchorMouseEnter}\n @mouseleave=${this._handleAnchorMouseLeave}\n @focusin=${this._handleAnchorFocusIn}\n @focusout=${this._handleAnchorFocusOut}\n >\n <slot name=\"anchor\" @slotchange=${this._handleAnchorSlotChange}></slot>\n </div>\n <div\n part=\"body\"\n id=${this._popoverId}\n role=\"dialog\"\n aria-label=${this.label}\n aria-hidden=${!this._visible ? 'true' : nothing}\n tabindex=\"-1\"\n ?inert=${!this._visible}\n class=${this._visible ? 'visible' : ''}\n @mouseenter=${this._handleBodyMouseEnter}\n @mouseleave=${this._handleBodyMouseLeave}\n >\n <slot></slot>\n ${this.arrow ? html`<div part=\"arrow\"></div>` : nothing}\n </div>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'hx-popover': HelixPopover;\n }\n}\n"],"names":["helixPopoverStyles","css","_nextPopoverId","createIdCounter","HelixPopover","HelixElement","focusable","bodyEl","_a","allFocusable","first","last","_b","_c","related","changedProperties","expanded","anchorSlot","anchorEl","defaultSlot","assigned","focusableSelector","result","el","nested","restoreFocus","arrowEl","computePosition","flip","shift","offset","arrow","middleware","x","y","placement","middlewareData","arrowData","basePlacement","staticSide","borderSides","side","innerSides","html","nothing","__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;;;;;;ACIlC,MAAMC,IAAiBC,EAAgB,YAAY;AA2C5C,IAAMC,IAAN,cAA2BC,EAAa;AAAA,EAAxC,cAAA;AAAA,UAAA,GAAA,SAAA,GAQL,KAAA,OAAO,IAOP,KAAA,YAYiB,UAOjB,KAAA,UAAkD,SAOlD,KAAA,WAAW,GAOX,KAAA,WAAW,GAOX,KAAA,QAAQ,IAOR,KAAA,QAAQ,WAMC,KAAQ,WAAW,IAM5B,KAAQ,iBAAqC,MAM7C,KAAiB,aAAaH,EAAA,GAO9B,KAAQ,aAAmD,MAS3D,KAAQ,kBAAwD,MAsOhE,KAAQ,yBAAyB,CAAC,MAA2B;;AAC3D,UAAK,KAAK,UAEV;AAAA,YAAI,EAAE,QAAQ,UAAU;AAEtB,UAAK,KAAK,MAAM,EAAI;AACpB;AAAA,QACF;AAEA,YAAI,EAAE,QAAQ,OAAO;AAEnB,gBAAMI,IAAY,KAAK,sBAAA;AACvB,cAAIA,EAAU,WAAW,EAAG;AAE5B,gBAAMC,KAASC,IAAA,KAAK,eAAL,gBAAAA,EAAiB,cAAc,kBACxCC,IAAeF,IAAS,CAACA,GAAQ,GAAGD,CAAS,IAAIA;AACvD,cAAIG,EAAa,WAAW,EAAG;AAE/B,gBAAMC,IAAQD,EAAa,CAAC,GACtBE,IAAOF,EAAaA,EAAa,SAAS,CAAC;AAEjD,UAAI,EAAE,YACA,SAAS,kBAAkBC,OAASE,IAAA,KAAK,eAAL,gBAAAA,EAAiB,mBAAkBF,OACzE,EAAE,eAAA,GACFC,EAAK,MAAA,MAGH,SAAS,kBAAkBA,OAAQE,IAAA,KAAK,eAAL,gBAAAA,EAAiB,mBAAkBF,OACxE,EAAE,eAAA,GACFD,EAAM,MAAA;AAAA,QAGZ;AAAA;AAAA,IACF,GAOA,KAAQ,uBAAuB,CAAC,MAAmB;AAGjD,MAAI,EAAE,WAAW,QAAQ,CAAC,KAAK,SAAS,EAAE,MAAc,KAEjD,KAAK,MAAM,EAAK;AAAA,IAEzB,GAMA,KAAQ,qBAAqB,MAAY;AACvC,MAAI,KAAK,YAAY,YACjB,KAAK,WACF,KAAK,MAAM,EAAI,IAEf,KAAK,MAAA;AAAA,IAEd,GAMA,KAAQ,0BAA0B,MAAY;AAC5C,MAAI,KAAK,YAAY,WAChB,KAAK,MAAA;AAAA,IACZ,GAQA,KAAQ,0BAA0B,MAAY;AAC5C,MAAI,KAAK,YAAY,WACrB,KAAK,mBAAA;AAAA,IACP,GAKA,KAAQ,wBAAwB,MAAY;AAE1C,MAAI,KAAK,YAAY,WACrB,KAAK,iBAAA;AAAA,IACP,GAGA,KAAQ,wBAAwB,MAAY;AAC1C,MAAI,KAAK,YAAY,WACrB,KAAK,mBAAA;AAAA,IACP,GA4BA,KAAQ,uBAAuB,MAAY;AAEzC,MAAI,KAAK,YAAY,WAAW,KAAK,YAAY,WAC5C,KAAK,MAAA;AAAA,IACZ,GAGA,KAAQ,wBAAwB,CAAC,MAAwB;;AAGvD,UAAI,KAAK,YAAY,WAAW,KAAK,YAAY,QAAS;AAC1D,YAAMI,IAAU,EAAE;AAElB,MAAIA,MAAY,KAAK,SAASA,CAAO,MAAKN,IAAA,KAAK,eAAL,QAAAA,EAAiB,SAASM,OAC/D,KAAK,MAAM,EAAI;AAAA,IACtB;AAAA,EAAA;AAAA;AAAA,EA5WS,uBAA6B;AACpC,UAAM,qBAAA,GACF,KAAK,eAAe,SACtB,aAAa,KAAK,UAAU,GAC5B,KAAK,aAAa,OAEhB,KAAK,oBAAoB,SAC3B,aAAa,KAAK,eAAe,GACjC,KAAK,kBAAkB,OAEzB,SAAS,oBAAoB,SAAS,KAAK,oBAAoB,GAC/D,SAAS,oBAAoB,WAAW,KAAK,sBAAsB;AAAA,EACrE;AAAA,EAES,eAAqB;AAG5B,SAAK,yBAAyB,EAAK,GAE/B,KAAK,QACF,KAAK,MAAA;AAAA,EAEd;AAAA,EAES,QAAQC,GAA+C;AAC9D,IAAIA,EAAkB,IAAI,MAAM,MAC1B,KAAK,OACF,KAAK,MAAA,IAEL,KAAK,MAAA;AAAA,EAGhB;AAAA;AAAA;AAAA;AAAA,EAMQ,yBAAyBC,GAAyB;;AACxD,UAAMC,KAAaT,IAAA,KAAK,eAAL,gBAAAA,EAAiB;AAAA,MAClC;AAAA;AAEF,QAAI,CAACS,EAAY;AACjB,UAAMC,IAAWD,EAAW,iBAAA,EAAmB,CAAC;AAChD,IAAIC,MACFA,EAAS,aAAa,iBAAiB,OAAOF,CAAQ,CAAC,GACvDE,EAAS,aAAa,iBAAiB,QAAQ;AAAA,EAInD;AAAA;AAAA;AAAA;AAAA,EAMQ,wBAAuC;;AAC7C,UAAMX,KAASC,IAAA,KAAK,eAAL,gBAAAA,EAAiB,cAAc;AAC9C,QAAI,CAACD,EAAQ,QAAO,CAAA;AAGpB,UAAMY,IAAcZ,EAAO,cAAc,kBAAkB;AAC3D,QAAI,CAACY,EAAa,QAAO,CAAA;AAEzB,UAAMC,IAAWD,EAAY,iBAAiB,EAAE,SAAS,IAAM,GACzDE,IACJ,4KAEIC,IAAwB,CAAA;AAC9B,eAAWC,KAAMH,GAAU;AACzB,MAAIG,EAAG,QAAQF,CAAiB,KAC9BC,EAAO,KAAKC,CAAiB;AAE/B,YAAMC,IAASD,EAAG,iBAA8BF,CAAiB;AACjE,MAAAC,EAAO,KAAK,GAAGE,CAAM;AAAA,IACvB;AACA,WAAOF;AAAA,EACT;AAAA;AAAA;AAAA,EAKA,MAAc,QAAuB;;AACnC,QAAI,KAAK,SAAU;AAEnB,SAAK,iBAAiB,SAAS,eAC/B,KAAK,cAAc,IAAI,YAAkB,WAAW,EAAE,SAAS,IAAM,UAAU,GAAA,CAAM,CAAC,GACtF,KAAK,WAAW,IAChB,KAAK,OAAO,IACZ,KAAK,yBAAyB,EAAI,GAIlC,SAAS,iBAAiB,WAAW,KAAK,sBAAsB,GAChE,MAAM,KAAK,gBAIX,KAAK,cAAc,IAAI,YAAkB,iBAAiB,EAAE,SAAS,IAAM,UAAU,GAAA,CAAM,CAAC;AAI5F,UAAMf,KAASC,IAAA,KAAK,eAAL,gBAAAA,EAAiB,cAAc;AAC9C,IAAID,KACqB,KAAK,sBAAA,EAAwB,SAAS,KAE3DA,EAAO,MAAA,GAIP,KAAK,eAAe,QACtB,aAAa,KAAK,UAAU,GAE9B,KAAK,aAAa,WAAW,MAAM;AACjC,WAAK,aAAa,MAClB,SAAS,iBAAiB,SAAS,KAAK,oBAAoB;AAAA,IAC9D,GAAG,CAAC,GACJ,MAAM,KAAK,gBAAA;AAAA,EACb;AAAA;AAAA;AAAA;AAAA,EAKA,MAAc,MAAMkB,IAAe,IAAqB;;AACtD,IAAK,KAAK,aACV,SAAS,oBAAoB,SAAS,KAAK,oBAAoB,GAC/D,SAAS,oBAAoB,WAAW,KAAK,sBAAsB,GACnE,KAAK,cAAc,IAAI,YAAkB,WAAW,EAAE,SAAS,IAAM,UAAU,GAAA,CAAM,CAAC,GACtF,KAAK,WAAW,IAChB,KAAK,OAAO,IACZ,KAAK,yBAAyB,EAAK,GAE/BA,OACFjB,IAAA,KAAK,mBAAL,QAAAA,EAAqB,UAEvB,KAAK,iBAAiB,MACtB,MAAM,KAAK,gBACX,KAAK,cAAc,IAAI,YAAkB,iBAAiB,EAAE,SAAS,IAAM,UAAU,GAAA,CAAM,CAAC;AAAA,EAC9F;AAAA;AAAA;AAAA,EAKA,MAAc,kBAAiC;;AAC7C,UAAMS,KAAaT,IAAA,KAAK,eAAL,gBAAAA,EAAiB;AAAA,MAClC;AAAA;AAEF,QAAI,CAACS,EAAY;AACjB,UAAMC,IAAWD,EAAW,iBAAA,EAAmB,CAAC,GAC1CV,KAASK,IAAA,KAAK,eAAL,gBAAAA,EAAiB,cAAc,kBACxCc,IAAU,KAAK,SAChBb,IAAA,KAAK,eAAL,gBAAAA,EAAiB,cAAc,oBAChC;AAEJ,QAAI,CAACK,KAAY,CAACX,EAAQ;AAE1B,UAAM,EAAE,iBAAAoB,GAAiB,MAAAC,GAAM,OAAAC,GAAO,QAAAC,GAAQ,OAAAC,EAAA,IAAU,MAAM,OAAO,kBAAkB,GAEjFC,IAAa;AAAA,MACjBF,EAAO,EAAE,UAAU,KAAK,UAAU,WAAW,KAAK,UAAU;AAAA,MAC5DF,EAAA;AAAA,MACAC,EAAM,EAAE,SAAS,EAAA,CAAG;AAAA,IAAA;AAGtB,IAAIH,KACFM,EAAW,KAAKD,EAAM,EAAE,SAASL,EAAA,CAAS,CAAC;AAG7C,UAAM,EAAE,GAAAO,GAAG,GAAAC,GAAG,WAAAC,GAAW,gBAAAC,MAAmB,MAAMT,EAAgBT,GAAUX,GAAQ;AAAA,MAClF,WAAW,KAAK;AAAA,MAChB,UAAU;AAAA,MACV,YAAAyB;AAAA,IAAA,CACD;AAOD,QALA,OAAO,OAAOzB,EAAO,OAAO;AAAA,MAC1B,MAAM,GAAG0B,CAAC;AAAA,MACV,KAAK,GAAGC,CAAC;AAAA,IAAA,CACV,GAEGR,KAAWU,EAAe,OAAO;AACnC,YAAMC,IAAYD,EAAe,OAC3BE,IAAgBH,EAAU,MAAM,GAAG,EAAE,CAAC,KAAK,UAO3CI,IANuC;AAAA,QAC3C,KAAK;AAAA,QACL,OAAO;AAAA,QACP,QAAQ;AAAA,QACR,MAAM;AAAA,MAAA,EAEwBD,CAAa,KAAK;AAElD,aAAO,OAAOZ,EAAQ,OAAO;AAAA,QAC3B,MAAMW,EAAU,KAAK,OAAO,GAAGA,EAAU,CAAC,OAAO;AAAA,QACjD,KAAKA,EAAU,KAAK,OAAO,GAAGA,EAAU,CAAC,OAAO;AAAA,QAChD,OAAO;AAAA,QACP,QAAQ;AAAA,QACR,CAACE,CAAU,GAAG;AAAA,MAAA,CACf;AAKD,YAAMC,IAAc,CAAC,cAAc,gBAAgB,iBAAiB,aAAa;AACjF,iBAAWC,KAAQD;AACjB,QAAAd,EAAQ,MAAM,YAAYe,GAAM,EAAE;AASpC,YAAMC,IAN4D;AAAA,QAChE,QAAQ,CAAC,iBAAiB,cAAc;AAAA,QACxC,KAAK,CAAC,cAAc,aAAa;AAAA,QACjC,OAAO,CAAC,cAAc,cAAc;AAAA,QACpC,MAAM,CAAC,iBAAiB,aAAa;AAAA,MAAA,EAELJ,CAAa,KAAK,CAAC,iBAAiB,cAAc;AACpF,MAAAZ,EAAQ,MAAM,YAAYgB,EAAW,CAAC,GAAG,uBAAuB,GAChEhB,EAAQ,MAAM,YAAYgB,EAAW,CAAC,GAAG,uBAAuB;AAAA,IAClE;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAiHQ,qBAA2B;AACjC,SAAK,iBAAA,GACL,KAAK,kBAAkB,WAAW,MAAM;AACtC,WAAK,kBAAkB,MAClB,KAAK,MAAM,EAAK;AAAA,IACvB,GAAG,GAAG;AAAA,EACR;AAAA;AAAA;AAAA;AAAA;AAAA,EAMQ,mBAAyB;AAC/B,IAAI,KAAK,oBAAoB,SAC3B,aAAa,KAAK,eAAe,GACjC,KAAK,kBAAkB;AAAA,EAE3B;AAAA;AAAA,EAqBQ,0BAAgC;AACtC,SAAK,yBAAyB,KAAK,QAAQ;AAAA,EAC7C;AAAA;AAAA,EAIS,SAAS;AAChB,WAAOC;AAAA;AAAA;AAAA,iBAGM,KAAK,kBAAkB;AAAA,sBAClB,KAAK,uBAAuB;AAAA,sBAC5B,KAAK,uBAAuB;AAAA,mBAC/B,KAAK,oBAAoB;AAAA,oBACxB,KAAK,qBAAqB;AAAA;AAAA,0CAEJ,KAAK,uBAAuB;AAAA;AAAA;AAAA;AAAA,aAIzD,KAAK,UAAU;AAAA;AAAA,qBAEP,KAAK,KAAK;AAAA,sBACR,KAAK,WAAoBC,IAAT,MAAgB;AAAA;AAAA,iBAEtC,CAAC,KAAK,QAAQ;AAAA,gBACf,KAAK,WAAW,YAAY,EAAE;AAAA,sBACxB,KAAK,qBAAqB;AAAA,sBAC1B,KAAK,qBAAqB;AAAA;AAAA;AAAA,UAGtC,KAAK,QAAQD,8BAAiCC,CAAO;AAAA;AAAA;AAAA,EAG7D;AACF;AAtfaxC,EACK,SAAS,CAACJ,CAAkB;AAO5C6C,EAAA;AAAA,EADCC,EAAS,EAAE,MAAM,SAAS,SAAS,IAAM;AAAA,GAP/B1C,EAQX,WAAA,QAAA,CAAA;AAOAyC,EAAA;AAAA,EADCC,EAAS,EAAE,MAAM,QAAQ,SAAS,IAAM;AAAA,GAd9B1C,EAeX,WAAA,aAAA,CAAA;AAmBAyC,EAAA;AAAA,EADCC,EAAS,EAAE,MAAM,QAAQ,SAAS,IAAM;AAAA,GAjC9B1C,EAkCX,WAAA,WAAA,CAAA;AAOAyC,EAAA;AAAA,EADCC,EAAS,EAAE,MAAM,QAAQ,SAAS,IAAM;AAAA,GAxC9B1C,EAyCX,WAAA,YAAA,CAAA;AAOAyC,EAAA;AAAA,EADCC,EAAS,EAAE,MAAM,QAAQ,SAAS,IAAM;AAAA,GA/C9B1C,EAgDX,WAAA,YAAA,CAAA;AAOAyC,EAAA;AAAA,EADCC,EAAS,EAAE,MAAM,SAAS,SAAS,IAAM;AAAA,GAtD/B1C,EAuDX,WAAA,SAAA,CAAA;AAOAyC,EAAA;AAAA,EADCC,EAAS,EAAE,MAAM,QAAQ,SAAS,IAAM;AAAA,GA7D9B1C,EA8DX,WAAA,SAAA,CAAA;AAMiByC,EAAA;AAAA,EAAhBE,EAAA;AAAM,GApEI3C,EAoEM,WAAA,YAAA,CAAA;AApENA,IAANyC,EAAA;AAAA,EADNG,EAAc,YAAY;AAAA,GACd5C,CAAA;"}
@@ -1,8 +1,7 @@
1
- import { css as b, LitElement as v, nothing as x, html as d } from "lit";
2
- import "./document-token-adoption-DuYNKd4k.js";
3
- import { property as r, customElement as g } from "lit/decorators.js";
4
- import { autoUpdate as w, offset as _, autoPlacement as S, flip as A, shift as z, arrow as P, size as E, computePosition as U } from "@floating-ui/dom";
5
- const k = b`
1
+ import { css as A, nothing as z, html as m } from "lit";
2
+ import { property as r, customElement as P } from "lit/decorators.js";
3
+ import { H as U } from "./helix-element-BNEYeiys.js";
4
+ const E = A`
6
5
  :host {
7
6
  display: inline-block;
8
7
  }
@@ -33,15 +32,31 @@ const k = b`
33
32
  transition: none;
34
33
  }
35
34
  }
35
+
36
+ /* ─── Forced Colors (Windows High Contrast) ─── */
37
+
38
+ @media (forced-colors: active) {
39
+ [part='popup'] {
40
+ border: 1px solid CanvasText;
41
+ }
42
+
43
+ [part='arrow'] {
44
+ border: 1px solid CanvasText;
45
+ }
46
+ }
36
47
  `;
37
- var C = Object.defineProperty, $ = Object.getOwnPropertyDescriptor, a = (t, o, e, i) => {
38
- for (var n = i > 1 ? void 0 : i ? $(o, e) : o, p = t.length - 1, l; p >= 0; p--)
39
- (l = t[p]) && (n = (i ? l(o, e, n) : l(n)) || n);
40
- return i && n && C(o, e, n), n;
48
+ var C = Object.defineProperty, k = Object.getOwnPropertyDescriptor, a = (t, i, e, s) => {
49
+ for (var n = s > 1 ? void 0 : s ? k(i, e) : i, p = t.length - 1, l; p >= 0; p--)
50
+ (l = t[p]) && (n = (s ? l(i, e, n) : l(n)) || n);
51
+ return s && n && C(i, e, n), n;
41
52
  };
42
- let s = class extends v {
53
+ let o = class extends U {
43
54
  constructor() {
44
- super(...arguments), this._anchorSlotEl = null, this._cleanupAutoUpdate = null, this.anchor = null, this.placement = "bottom", this.active = !1, this.distance = 0, this.skidding = 0, this.arrow = !1, this.arrowPlacement = null, this.arrowPadding = 10, this.flip = !1, this.flipFallbackPlacements = [], this.shift = !1, this.autoSize = !1, this.strategy = "fixed";
55
+ super(...arguments), this._anchorSlotEl = null, this._cleanupAutoUpdate = null, this._floatingUi = null, this.anchor = null, this.placement = "bottom", this.active = !1, this.distance = 0, this.skidding = 0, this.arrow = !1, this.arrowPlacement = null, this.arrowPadding = 10, this.flip = !1, this.flipFallbackPlacements = [], this.shift = !1, this.autoSize = !1, this.strategy = "fixed";
56
+ }
57
+ /** @internal */
58
+ async _loadFloatingUi() {
59
+ return this._floatingUi || (this._floatingUi = await import("@floating-ui/dom")), this._floatingUi;
45
60
  }
46
61
  // ─── Lifecycle ───
47
62
  connectedCallback() {
@@ -52,8 +67,8 @@ let s = class extends v {
52
67
  }
53
68
  updated(t) {
54
69
  super.updated(t);
55
- const o = t.has("active"), e = t.has("placement") || t.has("distance") || t.has("skidding") || t.has("arrow") || t.has("arrowPadding") || t.has("arrowPlacement") || t.has("flip") || t.has("flipFallbackPlacements") || t.has("shift") || t.has("autoSize") || t.has("anchor") || t.has("strategy");
56
- o ? this.active ? this._startAutoUpdate() : (this._stopAutoUpdate(), this.autoSize && (this.style.removeProperty("--hx-auto-size-available-width"), this.style.removeProperty("--hx-auto-size-available-height"))) : e && this.active && this._reposition(), t.has("autoSize") && !this.autoSize && (this.style.removeProperty("--hx-auto-size-available-width"), this.style.removeProperty("--hx-auto-size-available-height"));
70
+ const i = t.has("active"), e = t.has("placement") || t.has("distance") || t.has("skidding") || t.has("arrow") || t.has("arrowPadding") || t.has("arrowPlacement") || t.has("flip") || t.has("flipFallbackPlacements") || t.has("shift") || t.has("autoSize") || t.has("anchor") || t.has("strategy");
71
+ i ? this.active ? this._startAutoUpdate() : (this._stopAutoUpdate(), this.autoSize && (this.style.removeProperty("--hx-auto-size-available-width"), this.style.removeProperty("--hx-auto-size-available-height"))) : e && this.active && this._reposition(), t.has("autoSize") && !this.autoSize && (this.style.removeProperty("--hx-auto-size-available-width"), this.style.removeProperty("--hx-auto-size-available-height"));
57
72
  }
58
73
  // ─── Anchor Resolution ───
59
74
  /** @internal */
@@ -67,13 +82,15 @@ let s = class extends v {
67
82
  }
68
83
  // ─── Positioning ───
69
84
  /** @internal */
70
- _startAutoUpdate() {
71
- var e;
85
+ async _startAutoUpdate() {
86
+ var s;
72
87
  this._stopAutoUpdate();
73
- const t = this._getAnchorElement(), o = (e = this.shadowRoot) == null ? void 0 : e.querySelector('[part="popup"]');
74
- !t || !o || (this._cleanupAutoUpdate = w(t, o, () => {
88
+ const t = this._getAnchorElement(), i = (s = this.shadowRoot) == null ? void 0 : s.querySelector('[part="popup"]');
89
+ if (!t || !i) return;
90
+ const { autoUpdate: e } = await this._loadFloatingUi();
91
+ this._cleanupAutoUpdate = e(t, i, () => {
75
92
  this._reposition();
76
- }));
93
+ });
77
94
  }
78
95
  /** @internal */
79
96
  _stopAutoUpdate() {
@@ -82,53 +99,61 @@ let s = class extends v {
82
99
  }
83
100
  /** @internal */
84
101
  async _reposition() {
85
- var u, f;
86
- const t = this._getAnchorElement(), o = (u = this.shadowRoot) == null ? void 0 : u.querySelector('[part="popup"]');
87
- if (!t || !o) return;
88
- const e = this.arrow ? ((f = this.shadowRoot) == null ? void 0 : f.querySelector('[part="arrow"]')) ?? null : null, i = [
89
- _({ mainAxis: this.distance, crossAxis: this.skidding })
102
+ var d, f;
103
+ const t = this._getAnchorElement(), i = (d = this.shadowRoot) == null ? void 0 : d.querySelector('[part="popup"]');
104
+ if (!t || !i) return;
105
+ const e = this.arrow ? ((f = this.shadowRoot) == null ? void 0 : f.querySelector('[part="arrow"]')) ?? null : null, {
106
+ computePosition: s,
107
+ flip: n,
108
+ shift: p,
109
+ offset: l,
110
+ arrow: u,
111
+ size: y,
112
+ autoPlacement: b
113
+ } = await this._loadFloatingUi(), h = [
114
+ l({ mainAxis: this.distance, crossAxis: this.skidding })
90
115
  ];
91
- this.placement === "auto" ? i.push(S()) : this.flip && i.push(
92
- A({
116
+ this.placement === "auto" ? h.push(b()) : this.flip && h.push(
117
+ n({
93
118
  fallbackPlacements: this.flipFallbackPlacements
94
119
  })
95
- ), this.shift && i.push(z({ padding: 8 })), e && i.push(P({ element: e, padding: this.arrowPadding })), this.autoSize && i.push(
96
- E({
97
- apply: ({ availableWidth: h, availableHeight: y }) => {
98
- this.style.setProperty("--hx-auto-size-available-width", `${h}px`), this.style.setProperty("--hx-auto-size-available-height", `${y}px`);
120
+ ), this.shift && h.push(p({ padding: 8 })), e && h.push(u({ element: e, padding: this.arrowPadding })), this.autoSize && h.push(
121
+ y({
122
+ apply: ({ availableWidth: c, availableHeight: S }) => {
123
+ this.style.setProperty("--hx-auto-size-available-width", `${c}px`), this.style.setProperty("--hx-auto-size-available-height", `${S}px`);
99
124
  }
100
125
  })
101
126
  );
102
- const n = this.placement === "auto" ? "bottom" : this.placement;
103
- o.style.position = this.strategy;
104
- const { x: p, y: l, placement: c, middlewareData: m } = await U(t, o, {
105
- placement: n,
127
+ const v = this.placement === "auto" ? "bottom" : this.placement;
128
+ i.style.position = this.strategy;
129
+ const { x: w, y: x, placement: g, middlewareData: _ } = await s(t, i, {
130
+ placement: v,
106
131
  strategy: this.strategy,
107
- middleware: i
132
+ middleware: h
108
133
  });
109
- if (Object.assign(o.style, {
110
- left: `${p}px`,
111
- top: `${l}px`
134
+ if (Object.assign(i.style, {
135
+ left: `${w}px`,
136
+ top: `${x}px`
112
137
  }), e) {
113
- const h = m.arrow;
114
- this._positionArrow(e, c, h);
138
+ const c = _.arrow;
139
+ this._positionArrow(e, g, c);
115
140
  }
116
141
  this.dispatchEvent(new CustomEvent("hx-reposition", { bubbles: !0, composed: !0 }));
117
142
  }
118
143
  /** @internal */
119
- _positionArrow(t, o, e) {
120
- const i = o.split("-")[0], p = {
144
+ _positionArrow(t, i, e) {
145
+ const s = i.split("-")[0], p = {
121
146
  top: "bottom",
122
147
  right: "left",
123
148
  bottom: "top",
124
149
  left: "right"
125
- }[i], l = {
150
+ }[s], l = {
126
151
  left: "",
127
152
  top: "",
128
153
  right: "",
129
154
  bottom: ""
130
155
  };
131
- this.arrowPlacement === "start" || this.arrowPlacement === "end" ? i === "top" || i === "bottom" ? l[this.arrowPlacement === "start" ? "left" : "right"] = `${this.arrowPadding}px` : l[this.arrowPlacement === "start" ? "top" : "bottom"] = `${this.arrowPadding}px` : ((e == null ? void 0 : e.x) != null && (l.left = `${e.x}px`), (e == null ? void 0 : e.y) != null && (l.top = `${e.y}px`)), l[p] = "-4px", t.setAttribute("data-placement", i), Object.assign(t.style, l);
156
+ this.arrowPlacement === "start" || this.arrowPlacement === "end" ? s === "top" || s === "bottom" ? l[this.arrowPlacement === "start" ? "left" : "right"] = `${this.arrowPadding}px` : l[this.arrowPlacement === "start" ? "top" : "bottom"] = `${this.arrowPadding}px` : ((e == null ? void 0 : e.x) != null && (l.left = `${e.x}px`), (e == null ? void 0 : e.y) != null && (l.top = `${e.y}px`)), l[p] = "-4px", t.setAttribute("data-placement", s), Object.assign(t.style, l);
132
157
  }
133
158
  // ─── Public API ───
134
159
  /**
@@ -139,43 +164,43 @@ let s = class extends v {
139
164
  }
140
165
  // ─── Render ───
141
166
  render() {
142
- return d`
167
+ return m`
143
168
  <slot name="anchor" @slotchange=${this._handleAnchorSlotChange}></slot>
144
169
  <div part="popup" ?inert=${!this.active}>
145
170
  <slot></slot>
146
- ${this.arrow ? d`<div part="arrow"></div>` : x}
171
+ ${this.arrow ? m`<div part="arrow"></div>` : z}
147
172
  </div>
148
173
  `;
149
174
  }
150
175
  };
151
- s.styles = [k];
176
+ o.styles = [E];
152
177
  a([
153
178
  r({ attribute: "anchor" })
154
- ], s.prototype, "anchor", 2);
179
+ ], o.prototype, "anchor", 2);
155
180
  a([
156
181
  r({ type: String, reflect: !0 })
157
- ], s.prototype, "placement", 2);
182
+ ], o.prototype, "placement", 2);
158
183
  a([
159
184
  r({ type: Boolean, reflect: !0 })
160
- ], s.prototype, "active", 2);
185
+ ], o.prototype, "active", 2);
161
186
  a([
162
187
  r({ type: Number, reflect: !0 })
163
- ], s.prototype, "distance", 2);
188
+ ], o.prototype, "distance", 2);
164
189
  a([
165
190
  r({ type: Number, reflect: !0 })
166
- ], s.prototype, "skidding", 2);
191
+ ], o.prototype, "skidding", 2);
167
192
  a([
168
193
  r({ type: Boolean, reflect: !0 })
169
- ], s.prototype, "arrow", 2);
194
+ ], o.prototype, "arrow", 2);
170
195
  a([
171
196
  r({ attribute: "arrow-placement", reflect: !0 })
172
- ], s.prototype, "arrowPlacement", 2);
197
+ ], o.prototype, "arrowPlacement", 2);
173
198
  a([
174
199
  r({ type: Number, attribute: "arrow-padding" })
175
- ], s.prototype, "arrowPadding", 2);
200
+ ], o.prototype, "arrowPadding", 2);
176
201
  a([
177
202
  r({ type: Boolean, reflect: !0 })
178
- ], s.prototype, "flip", 2);
203
+ ], o.prototype, "flip", 2);
179
204
  a([
180
205
  r({
181
206
  attribute: "flip-fallback-placements",
@@ -193,20 +218,20 @@ a([
193
218
  }
194
219
  }
195
220
  })
196
- ], s.prototype, "flipFallbackPlacements", 2);
221
+ ], o.prototype, "flipFallbackPlacements", 2);
197
222
  a([
198
223
  r({ type: Boolean, reflect: !0 })
199
- ], s.prototype, "shift", 2);
224
+ ], o.prototype, "shift", 2);
200
225
  a([
201
226
  r({ type: Boolean, attribute: "auto-size", reflect: !0 })
202
- ], s.prototype, "autoSize", 2);
227
+ ], o.prototype, "autoSize", 2);
203
228
  a([
204
229
  r({ reflect: !0 })
205
- ], s.prototype, "strategy", 2);
206
- s = a([
207
- g("hx-popup")
208
- ], s);
230
+ ], o.prototype, "strategy", 2);
231
+ o = a([
232
+ P("hx-popup")
233
+ ], o);
209
234
  export {
210
- s as H
235
+ o as H
211
236
  };
212
- //# sourceMappingURL=hx-popup-DbzezTOd.js.map
237
+ //# sourceMappingURL=hx-popup-DZXpsJ1R.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hx-popup-DZXpsJ1R.js","sources":["../../src/components/hx-popup/hx-popup.styles.ts","../../src/components/hx-popup/hx-popup.ts"],"sourcesContent":["import { css } from 'lit';\n\nexport const helixPopupStyles = css`\n :host {\n display: inline-block;\n }\n\n [part='popup'] {\n position: fixed;\n z-index: var(--hx-popup-z-index, 9000);\n inset: 0 auto auto 0;\n box-sizing: border-box;\n transition: var(--hx-popup-transition, none);\n }\n\n :host(:not([active])) [part='popup'] {\n display: none;\n }\n\n [part='arrow'] {\n position: absolute;\n width: var(--hx-arrow-size, 8px);\n height: var(--hx-arrow-size, 8px);\n background: var(--hx-arrow-color, var(--hx-color-neutral-0, #ffffff));\n transform: rotate(45deg);\n pointer-events: none;\n }\n\n @media (prefers-reduced-motion: reduce) {\n [part='popup'] {\n transition: none;\n }\n }\n\n /* ─── Forced Colors (Windows High Contrast) ─── */\n\n @media (forced-colors: active) {\n [part='popup'] {\n border: 1px solid CanvasText;\n }\n\n [part='arrow'] {\n border: 1px solid CanvasText;\n }\n }\n`;\n","import { html, nothing, type PropertyValues } from 'lit';\nimport '../../utilities/document-token-adoption.js';\nimport { customElement, property } from 'lit/decorators.js';\nimport { HelixElement } from '../../base/index.js';\nimport type { Placement, Middleware } from '@floating-ui/dom';\nimport { helixPopupStyles } from './hx-popup.styles.js';\n\ntype PopupPlacement =\n | 'top'\n | 'top-start'\n | 'top-end'\n | 'right'\n | 'right-start'\n | 'right-end'\n | 'bottom'\n | 'bottom-start'\n | 'bottom-end'\n | 'left'\n | 'left-start'\n | 'left-end'\n | 'auto';\n\n// More precise type matching @floating-ui/dom's arrow middleware data structure\ntype ArrowData = { x?: number; y?: number; centerOffset: number };\n\n/**\n * A low-level positioning primitive that anchors a floating panel to a reference element.\n * This is the base that hx-tooltip, hx-dropdown, and hx-popover build upon.\n *\n * @summary Low-level popup positioning utility.\n *\n * @tag hx-popup\n *\n * @slot anchor - The reference element the popup is anchored to.\n * @slot - Default slot for popup content.\n *\n * @csspart popup - The popup container element.\n * @csspart arrow - The arrow indicator element (only present when `arrow` is true).\n *\n * @cssprop [--hx-popup-z-index=9000] - Z-index of the popup container.\n * @cssprop [--hx-popup-transition=none] - Transition applied to the popup element.\n * Consumers who need enter/exit animations can set this property AND override the\n * default `display: none` hide mechanism via `::part(popup)`. Example:\n * ```css\n * hx-popup { --hx-popup-transition: opacity 0.2s ease; }\n * hx-popup:not([active])::part(popup) { display: block; opacity: 0; pointer-events: none; }\n * hx-popup[active]::part(popup) { opacity: 1; }\n * ```\n * @cssprop [--hx-arrow-size=8px] - Size of the arrow element.\n * @cssprop [--hx-arrow-color=var(--hx-color-surface-overlay, #ffffff)] - Color of the arrow element.\n * @cssprop --hx-auto-size-available-width - Available width set by auto-size middleware (on :host).\n * @cssprop --hx-auto-size-available-height - Available height set by auto-size middleware (on :host).\n *\n * @fires {CustomEvent} hx-reposition - Emitted after the popup is repositioned.\n *\n * ## Accessibility Contract\n *\n * `hx-popup` is a **positioning utility**, not an interactive widget. It does not provide\n * ARIA semantics. Consumers are responsible for all accessibility:\n *\n * - **Popup role**: Add `role=\"tooltip\"`, `role=\"dialog\"`, `role=\"listbox\"`, etc. to the\n * slotted popup content depending on its purpose.\n * - **Trigger state**: The element that triggers the popup MUST set `aria-expanded=\"true/false\"`.\n * - **Association**: Use `aria-controls` on the trigger to reference the popup content element,\n * and `aria-labelledby` / `aria-describedby` as appropriate.\n * - **Focus management**: `hx-popup` does NOT trap focus. Consumers building dialogs or menus\n * MUST implement focus trapping and keyboard dismiss (Escape key) themselves.\n * - **Visibility**: The popup is hidden via `display: none` (CSS) and the `inert` attribute\n * when inactive. Both are reliable accessibility-tree hiding mechanisms.\n *\n * @example\n * ```html\n * <!-- Tooltip pattern -->\n * <hx-popup id=\"my-tooltip\" placement=\"bottom\" distance=\"8\">\n * <button\n * slot=\"anchor\"\n * aria-describedby=\"tooltip-content\"\n * aria-expanded=\"false\"\n * aria-controls=\"my-tooltip\"\n * >\n * Trigger\n * </button>\n * <div id=\"tooltip-content\" role=\"tooltip\">Tooltip text</div>\n * </hx-popup>\n * ```\n *\n * ## Drupal Integration\n *\n * `hx-popup` is a JS utility — Twig provides markup only. No Drupal behavior file is\n * required for basic usage, since the `anchor` slot and `active` attribute are sufficient.\n *\n * ```twig\n * {# Basic Twig usage — prefer anchor slot in server-rendered contexts #}\n * <hx-popup id=\"my-popup\" placement=\"bottom\" distance=\"8\">\n * <button\n * slot=\"anchor\"\n * aria-expanded=\"false\"\n * aria-controls=\"popup-content\"\n * >Open</button>\n * <div id=\"popup-content\" role=\"dialog\" aria-label=\"Popup content\">...</div>\n * </hx-popup>\n * ```\n *\n * ```js\n * // Drupal behavior for toggle interaction\n * Drupal.behaviors.helixPopup = {\n * attach(context) {\n * context.querySelectorAll('hx-popup').forEach((popup) => {\n * const trigger = popup.querySelector('[slot=\"anchor\"]');\n * if (!trigger) return;\n * trigger.addEventListener('click', () => {\n * popup.active = !popup.active;\n * trigger.setAttribute('aria-expanded', String(popup.active));\n * });\n * });\n * },\n * };\n * ```\n *\n * For Drupal-generated dynamic IDs, prefer the anchor **slot** over the `anchor` CSS selector\n * attribute, since slot-based anchoring does not require knowing the element's ID at render time.\n * If you must use the CSS selector form with dynamic IDs, pass the ID via a Twig variable:\n * ```twig\n * <hx-popup anchor=\"#{{ element['#id'] }}\" placement=\"bottom\">...</hx-popup>\n * ```\n */\n@customElement('hx-popup')\nexport class HelixPopup extends HelixElement {\n static override styles = [helixPopupStyles];\n\n /** @internal */\n private _anchorSlotEl: Element | null = null;\n /** @internal */\n private _cleanupAutoUpdate: (() => void) | null = null;\n /** @internal */\n private _floatingUi: typeof import('@floating-ui/dom') | null = null;\n\n /** @internal */\n private async _loadFloatingUi() {\n if (!this._floatingUi) {\n this._floatingUi = await import('@floating-ui/dom');\n }\n return this._floatingUi;\n }\n\n /**\n * The reference element to anchor the popup to.\n *\n * - **Attribute form** (`anchor=\"#selector\"`): Accepts a CSS selector string resolved via\n * `querySelector` from the component's root node. Use this in HTML/Twig markup.\n * - **Property form** (`el.anchor = element`): Accepts an `Element` reference directly.\n * Setting an Element via JS property does NOT reflect to the attribute.\n *\n * If not set, the element in the `anchor` slot is used.\n *\n * @attr anchor\n */\n @property({ attribute: 'anchor' })\n anchor: string | Element | null = null;\n\n /**\n * Preferred placement of the popup relative to the anchor.\n * @attr placement\n */\n @property({ type: String, reflect: true })\n placement:\n | 'top'\n | 'top-start'\n | 'top-end'\n | 'right'\n | 'right-start'\n | 'right-end'\n | 'bottom'\n | 'bottom-start'\n | 'bottom-end'\n | 'left'\n | 'left-start'\n | 'left-end'\n | 'auto' = 'bottom';\n\n /**\n * Whether the popup is visible.\n * @attr active\n */\n @property({ type: Boolean, reflect: true })\n active = false;\n\n /**\n * Gap in pixels between the popup and the anchor element.\n * @attr distance\n */\n @property({ type: Number, reflect: true })\n distance = 0;\n\n /**\n * Offset in pixels along the anchor element's axis.\n * @attr skidding\n */\n @property({ type: Number, reflect: true })\n skidding = 0;\n\n /**\n * Whether to show an arrow pointing to the anchor element.\n * @attr arrow\n */\n @property({ type: Boolean, reflect: true })\n arrow = false;\n\n /**\n * Manual placement of the arrow along the popup edge.\n * When not set, floating-ui calculates the optimal position.\n * @attr arrow-placement\n */\n @property({ attribute: 'arrow-placement', reflect: true })\n arrowPlacement: 'start' | 'center' | 'end' | null = null;\n\n /**\n * Minimum padding in pixels from the popup edge to the arrow.\n * @attr arrow-padding\n */\n @property({ type: Number, attribute: 'arrow-padding' })\n arrowPadding = 10;\n\n /**\n * When true, flips the popup to the opposite side to avoid overflow.\n * @attr flip\n */\n @property({ type: Boolean, reflect: true })\n flip = false;\n\n /**\n * Fallback placements to try when flipping. Accepts a JSON array string.\n *\n * @example\n * ```html\n * <!-- Try \"top\" then \"left\" before giving up -->\n * <hx-popup flip flip-fallback-placements='[\"top\",\"left\"]'>...</hx-popup>\n * ```\n *\n * @attr flip-fallback-placements\n */\n @property({\n attribute: 'flip-fallback-placements',\n converter: {\n fromAttribute(value: string | null): PopupPlacement[] {\n if (!value) return [];\n try {\n return JSON.parse(value) as PopupPlacement[];\n } catch {\n return [];\n }\n },\n toAttribute(value: PopupPlacement[]): string {\n return JSON.stringify(value);\n },\n },\n })\n flipFallbackPlacements: (\n | 'top'\n | 'top-start'\n | 'top-end'\n | 'right'\n | 'right-start'\n | 'right-end'\n | 'bottom'\n | 'bottom-start'\n | 'bottom-end'\n | 'left'\n | 'left-start'\n | 'left-end'\n | 'auto'\n )[] = [];\n\n /**\n * When true, shifts the popup along the axis to remain in the viewport.\n * @attr shift\n */\n @property({ type: Boolean, reflect: true })\n shift = false;\n\n /**\n * When true, resizes the popup to fit within the viewport.\n * Sets --hx-auto-size-available-width and --hx-auto-size-available-height CSS custom\n * properties on `:host` so they cascade into shadow DOM and are readable from light DOM.\n * @attr auto-size\n */\n @property({ type: Boolean, attribute: 'auto-size', reflect: true })\n autoSize = false;\n\n /**\n * Positioning strategy passed to floating-ui's `computePosition`.\n *\n * - `'fixed'` (default): works for most cases; positions relative to the viewport.\n * - `'absolute'`: use inside `overflow: hidden` / scroll containers where the popup is\n * positioned relative to the nearest positioned ancestor instead of the viewport.\n *\n * @attr strategy\n */\n @property({ reflect: true })\n strategy: 'fixed' | 'absolute' = 'fixed';\n\n // ─── Lifecycle ───\n\n override connectedCallback(): void {\n super.connectedCallback();\n if (this.active) {\n void this.updateComplete.then(() => this._startAutoUpdate());\n }\n }\n\n override disconnectedCallback(): void {\n super.disconnectedCallback();\n this._stopAutoUpdate();\n }\n\n override updated(changedProperties: PropertyValues<this>): void {\n super.updated(changedProperties);\n\n const activeChanged = changedProperties.has('active');\n const positioningChanged =\n changedProperties.has('placement') ||\n changedProperties.has('distance') ||\n changedProperties.has('skidding') ||\n changedProperties.has('arrow') ||\n changedProperties.has('arrowPadding') ||\n changedProperties.has('arrowPlacement') ||\n changedProperties.has('flip') ||\n changedProperties.has('flipFallbackPlacements') ||\n changedProperties.has('shift') ||\n changedProperties.has('autoSize') ||\n changedProperties.has('anchor') ||\n changedProperties.has('strategy');\n\n if (activeChanged) {\n if (this.active) {\n void this._startAutoUpdate();\n } else {\n this._stopAutoUpdate();\n // Clean up autoSize custom properties when popup goes inactive\n if (this.autoSize) {\n this.style.removeProperty('--hx-auto-size-available-width');\n this.style.removeProperty('--hx-auto-size-available-height');\n }\n }\n } else if (positioningChanged && this.active) {\n void this._reposition();\n }\n\n // Remove stale autoSize properties when autoSize is disabled\n if (changedProperties.has('autoSize') && !this.autoSize) {\n this.style.removeProperty('--hx-auto-size-available-width');\n this.style.removeProperty('--hx-auto-size-available-height');\n }\n }\n\n // ─── Anchor Resolution ───\n\n /** @internal */\n private _getAnchorElement(): Element | null {\n if (this.anchor instanceof Element) {\n return this.anchor;\n }\n if (typeof this.anchor === 'string') {\n return (this.getRootNode() as Document | ShadowRoot).querySelector(this.anchor);\n }\n return this._anchorSlotEl;\n }\n\n /** @internal */\n private _handleAnchorSlotChange(e: Event): void {\n const slot = e.target as HTMLSlotElement;\n const assigned = slot.assignedElements();\n this._anchorSlotEl = assigned[0] ?? null;\n if (this.active) {\n void this._reposition();\n }\n }\n\n // ─── Positioning ───\n\n /** @internal */\n private async _startAutoUpdate(): Promise<void> {\n this._stopAutoUpdate();\n const anchorEl = this._getAnchorElement();\n const popupEl = this.shadowRoot?.querySelector<HTMLElement>('[part=\"popup\"]');\n if (!anchorEl || !popupEl) return;\n\n const { autoUpdate } = await this._loadFloatingUi();\n this._cleanupAutoUpdate = autoUpdate(anchorEl, popupEl, () => {\n void this._reposition();\n });\n }\n\n /** @internal */\n private _stopAutoUpdate(): void {\n this._cleanupAutoUpdate?.();\n this._cleanupAutoUpdate = null;\n }\n\n /** @internal */\n private async _reposition(): Promise<void> {\n const anchorEl = this._getAnchorElement();\n const popupEl = this.shadowRoot?.querySelector<HTMLElement>('[part=\"popup\"]');\n if (!anchorEl || !popupEl) return;\n\n const arrowEl = this.arrow\n ? (this.shadowRoot?.querySelector<HTMLElement>('[part=\"arrow\"]') ?? null)\n : null;\n\n const {\n computePosition,\n flip: flipMiddleware,\n shift: shiftMiddleware,\n offset: offsetMiddleware,\n arrow: arrowMiddleware,\n size: sizeMiddleware,\n autoPlacement: autoPlacementMiddleware,\n } = await this._loadFloatingUi();\n\n const middleware: Middleware[] = [\n offsetMiddleware({ mainAxis: this.distance, crossAxis: this.skidding }),\n ];\n\n if (this.placement === 'auto') {\n middleware.push(autoPlacementMiddleware());\n } else if (this.flip) {\n middleware.push(\n flipMiddleware({\n fallbackPlacements: this.flipFallbackPlacements as Placement[],\n }),\n );\n }\n\n if (this.shift) {\n middleware.push(shiftMiddleware({ padding: 8 }));\n }\n\n if (arrowEl) {\n middleware.push(arrowMiddleware({ element: arrowEl, padding: this.arrowPadding }));\n }\n\n if (this.autoSize) {\n middleware.push(\n sizeMiddleware({\n apply: ({ availableWidth, availableHeight }) => {\n this.style.setProperty('--hx-auto-size-available-width', `${availableWidth}px`);\n this.style.setProperty('--hx-auto-size-available-height', `${availableHeight}px`);\n },\n }),\n );\n }\n\n const effectivePlacement: Placement =\n this.placement === 'auto' ? 'bottom' : (this.placement as Placement);\n\n popupEl.style.position = this.strategy;\n\n const { x, y, placement, middlewareData } = await computePosition(anchorEl, popupEl, {\n placement: effectivePlacement,\n strategy: this.strategy,\n middleware,\n });\n\n Object.assign(popupEl.style, {\n left: `${x}px`,\n top: `${y}px`,\n });\n\n if (arrowEl) {\n const arrowData = middlewareData.arrow as ArrowData | undefined;\n this._positionArrow(arrowEl, placement, arrowData);\n }\n\n this.dispatchEvent(new CustomEvent<void>('hx-reposition', { bubbles: true, composed: true }));\n }\n\n /** @internal */\n private _positionArrow(\n arrowEl: HTMLElement,\n placement: Placement,\n arrowData: ArrowData | undefined,\n ): void {\n const basePlacement = placement.split('-')[0] as 'top' | 'right' | 'bottom' | 'left';\n const staticSides = {\n top: 'bottom',\n right: 'left',\n bottom: 'top',\n left: 'right',\n } as const;\n const staticSide = staticSides[basePlacement];\n\n const arrowStyle: Record<string, string> = {\n left: '',\n top: '',\n right: '',\n bottom: '',\n };\n\n if (this.arrowPlacement === 'start' || this.arrowPlacement === 'end') {\n const isVertical = basePlacement === 'top' || basePlacement === 'bottom';\n if (isVertical) {\n arrowStyle[this.arrowPlacement === 'start' ? 'left' : 'right'] = `${this.arrowPadding}px`;\n } else {\n arrowStyle[this.arrowPlacement === 'start' ? 'top' : 'bottom'] = `${this.arrowPadding}px`;\n }\n } else {\n // 'center' or null: use floating-ui computed position\n if (arrowData?.x != null) arrowStyle.left = `${arrowData.x}px`;\n if (arrowData?.y != null) arrowStyle.top = `${arrowData.y}px`;\n }\n\n arrowStyle[staticSide] = '-4px';\n arrowEl.setAttribute('data-placement', basePlacement);\n Object.assign(arrowEl.style, arrowStyle);\n }\n\n // ─── Public API ───\n\n /**\n * Forces the popup to recalculate its position.\n */\n async reposition(): Promise<void> {\n await this._reposition();\n }\n\n // ─── Render ───\n\n override render() {\n return html`\n <slot name=\"anchor\" @slotchange=${this._handleAnchorSlotChange}></slot>\n <div part=\"popup\" ?inert=${!this.active}>\n <slot></slot>\n ${this.arrow ? html`<div part=\"arrow\"></div>` : nothing}\n </div>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'hx-popup': HelixPopup;\n }\n}\n"],"names":["helixPopupStyles","css","HelixPopup","HelixElement","changedProperties","activeChanged","positioningChanged","e","assigned","anchorEl","popupEl","_a","autoUpdate","arrowEl","_b","computePosition","flipMiddleware","shiftMiddleware","offsetMiddleware","arrowMiddleware","sizeMiddleware","autoPlacementMiddleware","middleware","availableWidth","availableHeight","effectivePlacement","x","y","placement","middlewareData","arrowData","basePlacement","staticSide","arrowStyle","html","nothing","__decorateClass","property","value","customElement"],"mappings":"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"}