@helixui/library 3.1.0 → 3.2.0-next.74

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 (608) hide show
  1. package/custom-elements.json +6597 -366
  2. package/dist/components/hx-accordion/hx-accordion-item.d.ts.map +1 -1
  3. package/dist/components/hx-accordion/hx-accordion.d.ts +3 -0
  4. package/dist/components/hx-accordion/hx-accordion.d.ts.map +1 -1
  5. package/dist/components/hx-accordion/index.js +1 -1
  6. package/dist/components/hx-action-bar/hx-action-bar.d.ts +14 -0
  7. package/dist/components/hx-action-bar/hx-action-bar.d.ts.map +1 -1
  8. package/dist/components/hx-action-bar/index.js +1 -1
  9. package/dist/components/hx-alert/hx-alert.d.ts +36 -0
  10. package/dist/components/hx-alert/hx-alert.d.ts.map +1 -1
  11. package/dist/components/hx-alert/hx-alert.styles.d.ts +12 -0
  12. package/dist/components/hx-alert/hx-alert.styles.d.ts.map +1 -1
  13. package/dist/components/hx-alert/index.js +1 -1
  14. package/dist/components/hx-avatar/hx-avatar.d.ts +17 -0
  15. package/dist/components/hx-avatar/hx-avatar.d.ts.map +1 -1
  16. package/dist/components/hx-avatar/index.js +1 -1
  17. package/dist/components/hx-badge/hx-badge.d.ts +35 -0
  18. package/dist/components/hx-badge/hx-badge.d.ts.map +1 -1
  19. package/dist/components/hx-badge/index.js +1 -1
  20. package/dist/components/hx-banner/hx-banner.d.ts +34 -0
  21. package/dist/components/hx-banner/hx-banner.d.ts.map +1 -1
  22. package/dist/components/hx-banner/hx-banner.styles.d.ts +12 -0
  23. package/dist/components/hx-banner/hx-banner.styles.d.ts.map +1 -1
  24. package/dist/components/hx-banner/index.js +1 -1
  25. package/dist/components/hx-breadcrumb/hx-breadcrumb-item.d.ts.map +1 -1
  26. package/dist/components/hx-breadcrumb/hx-breadcrumb.d.ts +3 -0
  27. package/dist/components/hx-breadcrumb/hx-breadcrumb.d.ts.map +1 -1
  28. package/dist/components/hx-breadcrumb/index.js +1 -1
  29. package/dist/components/hx-button/hx-button.d.ts +42 -0
  30. package/dist/components/hx-button/hx-button.d.ts.map +1 -1
  31. package/dist/components/hx-button/hx-button.styles.d.ts.map +1 -1
  32. package/dist/components/hx-button/index.js +1 -1
  33. package/dist/components/hx-button-group/hx-button-group.d.ts +2 -0
  34. package/dist/components/hx-button-group/hx-button-group.d.ts.map +1 -1
  35. package/dist/components/hx-button-group/hx-button-group.styles.d.ts.map +1 -1
  36. package/dist/components/hx-button-group/index.js +1 -1
  37. package/dist/components/hx-card/hx-card.d.ts +28 -0
  38. package/dist/components/hx-card/hx-card.d.ts.map +1 -1
  39. package/dist/components/hx-card/hx-card.styles.d.ts +9 -0
  40. package/dist/components/hx-card/hx-card.styles.d.ts.map +1 -1
  41. package/dist/components/hx-card/index.js +1 -1
  42. package/dist/components/hx-carousel/hx-carousel.d.ts +25 -0
  43. package/dist/components/hx-carousel/hx-carousel.d.ts.map +1 -1
  44. package/dist/components/hx-carousel/hx-carousel.styles.d.ts.map +1 -1
  45. package/dist/components/hx-carousel/index.js +1 -1
  46. package/dist/components/hx-checkbox/hx-checkbox.d.ts +38 -7
  47. package/dist/components/hx-checkbox/hx-checkbox.d.ts.map +1 -1
  48. package/dist/components/hx-checkbox/index.js +1 -1
  49. package/dist/components/hx-checkbox-group/hx-checkbox-group.d.ts +16 -2
  50. package/dist/components/hx-checkbox-group/hx-checkbox-group.d.ts.map +1 -1
  51. package/dist/components/hx-checkbox-group/index.js +1 -1
  52. package/dist/components/hx-clinical-status/hx-clinical-status.d.ts +37 -0
  53. package/dist/components/hx-clinical-status/hx-clinical-status.d.ts.map +1 -1
  54. package/dist/components/hx-clinical-status/index.js +1 -1
  55. package/dist/components/hx-code-snippet/hx-code-snippet.d.ts +35 -0
  56. package/dist/components/hx-code-snippet/hx-code-snippet.d.ts.map +1 -1
  57. package/dist/components/hx-code-snippet/hx-code-snippet.styles.d.ts.map +1 -1
  58. package/dist/components/hx-code-snippet/index.js +1 -1
  59. package/dist/components/hx-color-picker/hx-color-picker.d.ts +29 -0
  60. package/dist/components/hx-color-picker/hx-color-picker.d.ts.map +1 -1
  61. package/dist/components/hx-color-picker/hx-color-picker.styles.d.ts.map +1 -1
  62. package/dist/components/hx-color-picker/index.js +1 -1
  63. package/dist/components/hx-combobox/hx-combobox.d.ts +49 -0
  64. package/dist/components/hx-combobox/hx-combobox.d.ts.map +1 -1
  65. package/dist/components/hx-combobox/index.js +1 -1
  66. package/dist/components/hx-container/hx-container.d.ts +5 -0
  67. package/dist/components/hx-container/hx-container.d.ts.map +1 -1
  68. package/dist/components/hx-copy-button/hx-copy-button.d.ts +24 -0
  69. package/dist/components/hx-copy-button/hx-copy-button.d.ts.map +1 -1
  70. package/dist/components/hx-copy-button/hx-copy-button.styles.d.ts.map +1 -1
  71. package/dist/components/hx-copy-button/index.js +1 -1
  72. package/dist/components/hx-counter/hx-counter.d.ts +7 -0
  73. package/dist/components/hx-counter/hx-counter.d.ts.map +1 -1
  74. package/dist/components/hx-counter/index.js +1 -1
  75. package/dist/components/hx-data-table/hx-data-table.d.ts +29 -0
  76. package/dist/components/hx-data-table/hx-data-table.d.ts.map +1 -1
  77. package/dist/components/hx-data-table/hx-data-table.styles.d.ts.map +1 -1
  78. package/dist/components/hx-data-table/index.js +1 -1
  79. package/dist/components/hx-date-picker/hx-date-picker.d.ts +44 -0
  80. package/dist/components/hx-date-picker/hx-date-picker.d.ts.map +1 -1
  81. package/dist/components/hx-date-picker/index.js +1 -1
  82. package/dist/components/hx-dialog/hx-dialog.d.ts +31 -0
  83. package/dist/components/hx-dialog/hx-dialog.d.ts.map +1 -1
  84. package/dist/components/hx-dialog/hx-dialog.styles.d.ts +10 -0
  85. package/dist/components/hx-dialog/hx-dialog.styles.d.ts.map +1 -1
  86. package/dist/components/hx-dialog/index.js +1 -1
  87. package/dist/components/hx-divider/hx-divider.d.ts +9 -0
  88. package/dist/components/hx-divider/hx-divider.d.ts.map +1 -1
  89. package/dist/components/hx-divider/index.js +1 -1
  90. package/dist/components/hx-drawer/hx-drawer.d.ts +30 -0
  91. package/dist/components/hx-drawer/hx-drawer.d.ts.map +1 -1
  92. package/dist/components/hx-drawer/hx-drawer.styles.d.ts +10 -0
  93. package/dist/components/hx-drawer/hx-drawer.styles.d.ts.map +1 -1
  94. package/dist/components/hx-drawer/index.js +1 -1
  95. package/dist/components/hx-dropdown/hx-dropdown.d.ts +6 -0
  96. package/dist/components/hx-dropdown/hx-dropdown.d.ts.map +1 -1
  97. package/dist/components/hx-dropdown/index.js +1 -1
  98. package/dist/components/hx-field/hx-field.d.ts +15 -0
  99. package/dist/components/hx-field/hx-field.d.ts.map +1 -1
  100. package/dist/components/hx-field/index.js +1 -1
  101. package/dist/components/hx-field-label/hx-field-label.d.ts +11 -0
  102. package/dist/components/hx-field-label/hx-field-label.d.ts.map +1 -1
  103. package/dist/components/hx-field-label/index.js +1 -1
  104. package/dist/components/hx-file-upload/hx-file-upload.d.ts +35 -0
  105. package/dist/components/hx-file-upload/hx-file-upload.d.ts.map +1 -1
  106. package/dist/components/hx-file-upload/index.js +1 -1
  107. package/dist/components/hx-form/index.js +1 -1
  108. package/dist/components/hx-grid/hx-grid.d.ts +5 -0
  109. package/dist/components/hx-grid/hx-grid.d.ts.map +1 -1
  110. package/dist/components/hx-help-text/hx-help-text.d.ts +8 -0
  111. package/dist/components/hx-help-text/hx-help-text.d.ts.map +1 -1
  112. package/dist/components/hx-help-text/index.js +1 -1
  113. package/dist/components/hx-icon/hx-icon.d.ts +5 -0
  114. package/dist/components/hx-icon/hx-icon.d.ts.map +1 -1
  115. package/dist/components/hx-icon/index.js +1 -1
  116. package/dist/components/hx-icon-button/hx-icon-button.d.ts +27 -0
  117. package/dist/components/hx-icon-button/hx-icon-button.d.ts.map +1 -1
  118. package/dist/components/hx-icon-button/hx-icon-button.styles.d.ts.map +1 -1
  119. package/dist/components/hx-icon-button/index.js +1 -1
  120. package/dist/components/hx-image/hx-image.d.ts +4 -0
  121. package/dist/components/hx-image/hx-image.d.ts.map +1 -1
  122. package/dist/components/hx-image/index.js +1 -1
  123. package/dist/components/hx-link/hx-link.d.ts +15 -0
  124. package/dist/components/hx-link/hx-link.d.ts.map +1 -1
  125. package/dist/components/hx-link/index.js +1 -1
  126. package/dist/components/hx-list/hx-list-item.d.ts.map +1 -1
  127. package/dist/components/hx-list/hx-list.d.ts +3 -0
  128. package/dist/components/hx-list/hx-list.d.ts.map +1 -1
  129. package/dist/components/hx-list/index.js +1 -1
  130. package/dist/components/hx-menu/hx-menu-divider.d.ts.map +1 -1
  131. package/dist/components/hx-menu/hx-menu-item.d.ts.map +1 -1
  132. package/dist/components/hx-menu/hx-menu-item.styles.d.ts.map +1 -1
  133. package/dist/components/hx-menu/hx-menu.d.ts +6 -0
  134. package/dist/components/hx-menu/hx-menu.d.ts.map +1 -1
  135. package/dist/components/hx-menu/index.js +1 -1
  136. package/dist/components/hx-meter/hx-meter.d.ts +23 -0
  137. package/dist/components/hx-meter/hx-meter.d.ts.map +1 -1
  138. package/dist/components/hx-meter/hx-meter.styles.d.ts.map +1 -1
  139. package/dist/components/hx-meter/index.js +1 -1
  140. package/dist/components/hx-nav/hx-nav.d.ts +29 -0
  141. package/dist/components/hx-nav/hx-nav.d.ts.map +1 -1
  142. package/dist/components/hx-nav/hx-nav.styles.d.ts.map +1 -1
  143. package/dist/components/hx-nav/index.js +1 -1
  144. package/dist/components/hx-number-input/hx-number-input.d.ts +34 -0
  145. package/dist/components/hx-number-input/hx-number-input.d.ts.map +1 -1
  146. package/dist/components/hx-number-input/index.js +1 -1
  147. package/dist/components/hx-overflow-menu/hx-overflow-menu.d.ts +26 -0
  148. package/dist/components/hx-overflow-menu/hx-overflow-menu.d.ts.map +1 -1
  149. package/dist/components/hx-overflow-menu/hx-overflow-menu.styles.d.ts.map +1 -1
  150. package/dist/components/hx-overflow-menu/index.js +1 -1
  151. package/dist/components/hx-pagination/hx-pagination.d.ts +21 -0
  152. package/dist/components/hx-pagination/hx-pagination.d.ts.map +1 -1
  153. package/dist/components/hx-pagination/hx-pagination.styles.d.ts.map +1 -1
  154. package/dist/components/hx-pagination/index.js +1 -1
  155. package/dist/components/hx-patient-banner/hx-patient-banner.d.ts +23 -0
  156. package/dist/components/hx-patient-banner/hx-patient-banner.d.ts.map +1 -1
  157. package/dist/components/hx-patient-banner/hx-patient-banner.styles.d.ts.map +1 -1
  158. package/dist/components/hx-patient-banner/index.js +1 -1
  159. package/dist/components/hx-phi-field/hx-phi-field.d.ts +19 -5
  160. package/dist/components/hx-phi-field/hx-phi-field.d.ts.map +1 -1
  161. package/dist/components/hx-phi-field/index.js +1 -1
  162. package/dist/components/hx-popover/hx-popover.d.ts +15 -0
  163. package/dist/components/hx-popover/hx-popover.d.ts.map +1 -1
  164. package/dist/components/hx-popover/hx-popover.styles.d.ts +9 -0
  165. package/dist/components/hx-popover/hx-popover.styles.d.ts.map +1 -1
  166. package/dist/components/hx-popover/index.js +1 -1
  167. package/dist/components/hx-popup/hx-popup.d.ts +1 -0
  168. package/dist/components/hx-popup/hx-popup.d.ts.map +1 -1
  169. package/dist/components/hx-popup/hx-popup.styles.d.ts +9 -0
  170. package/dist/components/hx-popup/hx-popup.styles.d.ts.map +1 -1
  171. package/dist/components/hx-popup/index.js +1 -1
  172. package/dist/components/hx-progress-bar/hx-progress-bar.d.ts +17 -0
  173. package/dist/components/hx-progress-bar/hx-progress-bar.d.ts.map +1 -1
  174. package/dist/components/hx-progress-bar/index.js +1 -1
  175. package/dist/components/hx-progress-ring/hx-progress-ring.d.ts +15 -0
  176. package/dist/components/hx-progress-ring/hx-progress-ring.d.ts.map +1 -1
  177. package/dist/components/hx-progress-ring/index.js +1 -1
  178. package/dist/components/hx-prose/hx-prose.d.ts +2 -0
  179. package/dist/components/hx-prose/hx-prose.d.ts.map +1 -1
  180. package/dist/components/hx-prose/index.js +1 -1
  181. package/dist/components/hx-radio-group/hx-radio-group.d.ts +17 -3
  182. package/dist/components/hx-radio-group/hx-radio-group.d.ts.map +1 -1
  183. package/dist/components/hx-radio-group/hx-radio.d.ts +5 -5
  184. package/dist/components/hx-radio-group/hx-radio.d.ts.map +1 -1
  185. package/dist/components/hx-radio-group/index.js +1 -1
  186. package/dist/components/hx-rating/hx-rating.d.ts +13 -0
  187. package/dist/components/hx-rating/hx-rating.d.ts.map +1 -1
  188. package/dist/components/hx-rating/index.js +1 -1
  189. package/dist/components/hx-select/hx-select.d.ts +43 -0
  190. package/dist/components/hx-select/hx-select.d.ts.map +1 -1
  191. package/dist/components/hx-select/hx-select.styles.d.ts.map +1 -1
  192. package/dist/components/hx-select/index.js +1 -1
  193. package/dist/components/hx-side-nav/hx-nav-item.d.ts.map +1 -1
  194. package/dist/components/hx-side-nav/hx-nav-item.styles.d.ts.map +1 -1
  195. package/dist/components/hx-side-nav/hx-side-nav.d.ts +19 -0
  196. package/dist/components/hx-side-nav/hx-side-nav.d.ts.map +1 -1
  197. package/dist/components/hx-side-nav/hx-side-nav.styles.d.ts.map +1 -1
  198. package/dist/components/hx-side-nav/index.js +1 -1
  199. package/dist/components/hx-skeleton/hx-skeleton.d.ts +5 -0
  200. package/dist/components/hx-skeleton/hx-skeleton.d.ts.map +1 -1
  201. package/dist/components/hx-skeleton/index.js +1 -1
  202. package/dist/components/hx-slider/hx-slider.d.ts +38 -0
  203. package/dist/components/hx-slider/hx-slider.d.ts.map +1 -1
  204. package/dist/components/hx-slider/hx-slider.styles.d.ts.map +1 -1
  205. package/dist/components/hx-slider/index.js +1 -1
  206. package/dist/components/hx-spinner/hx-spinner.d.ts +10 -0
  207. package/dist/components/hx-spinner/hx-spinner.d.ts.map +1 -1
  208. package/dist/components/hx-spinner/index.js +1 -1
  209. package/dist/components/hx-split-button/hx-split-button.d.ts +39 -0
  210. package/dist/components/hx-split-button/hx-split-button.d.ts.map +1 -1
  211. package/dist/components/hx-split-button/hx-split-button.styles.d.ts.map +1 -1
  212. package/dist/components/hx-split-button/index.js +1 -1
  213. package/dist/components/hx-split-panel/hx-split-panel.d.ts +12 -0
  214. package/dist/components/hx-split-panel/hx-split-panel.d.ts.map +1 -1
  215. package/dist/components/hx-split-panel/hx-split-panel.styles.d.ts.map +1 -1
  216. package/dist/components/hx-split-panel/index.js +1 -1
  217. package/dist/components/hx-stack/hx-stack.d.ts +5 -0
  218. package/dist/components/hx-stack/hx-stack.d.ts.map +1 -1
  219. package/dist/components/hx-stat/hx-stat.d.ts +24 -0
  220. package/dist/components/hx-stat/hx-stat.d.ts.map +1 -1
  221. package/dist/components/hx-stat/index.js +1 -1
  222. package/dist/components/hx-status-indicator/hx-status-indicator.d.ts +13 -0
  223. package/dist/components/hx-status-indicator/hx-status-indicator.d.ts.map +1 -1
  224. package/dist/components/hx-status-indicator/index.js +1 -1
  225. package/dist/components/hx-steps/hx-step.d.ts.map +1 -1
  226. package/dist/components/hx-steps/hx-step.styles.d.ts.map +1 -1
  227. package/dist/components/hx-steps/hx-steps.d.ts +15 -0
  228. package/dist/components/hx-steps/hx-steps.d.ts.map +1 -1
  229. package/dist/components/hx-steps/index.js +1 -1
  230. package/dist/components/hx-structured-list/hx-structured-list.d.ts +7 -0
  231. package/dist/components/hx-structured-list/hx-structured-list.d.ts.map +1 -1
  232. package/dist/components/hx-structured-list/index.js +1 -1
  233. package/dist/components/hx-switch/hx-switch.d.ts +42 -0
  234. package/dist/components/hx-switch/hx-switch.d.ts.map +1 -1
  235. package/dist/components/hx-switch/hx-switch.styles.d.ts.map +1 -1
  236. package/dist/components/hx-switch/index.js +1 -1
  237. package/dist/components/hx-table/hx-table.d.ts +20 -6
  238. package/dist/components/hx-table/hx-table.d.ts.map +1 -1
  239. package/dist/components/hx-table/hx-td.d.ts +1 -1
  240. package/dist/components/hx-table/index.js +1 -1
  241. package/dist/components/hx-tabs/hx-tab-panel.d.ts +2 -2
  242. package/dist/components/hx-tabs/hx-tab-panel.d.ts.map +1 -1
  243. package/dist/components/hx-tabs/hx-tab.d.ts +6 -6
  244. package/dist/components/hx-tabs/hx-tab.d.ts.map +1 -1
  245. package/dist/components/hx-tabs/hx-tabs.d.ts +12 -8
  246. package/dist/components/hx-tabs/hx-tabs.d.ts.map +1 -1
  247. package/dist/components/hx-tabs/index.js +1 -1
  248. package/dist/components/hx-tag/hx-tag.d.ts +36 -0
  249. package/dist/components/hx-tag/hx-tag.d.ts.map +1 -1
  250. package/dist/components/hx-tag/index.js +1 -1
  251. package/dist/components/hx-text/hx-text.d.ts +22 -0
  252. package/dist/components/hx-text/hx-text.d.ts.map +1 -1
  253. package/dist/components/hx-text/hx-text.styles.d.ts.map +1 -1
  254. package/dist/components/hx-text/index.js +1 -1
  255. package/dist/components/hx-text-input/hx-text-input.d.ts +30 -0
  256. package/dist/components/hx-text-input/hx-text-input.d.ts.map +1 -1
  257. package/dist/components/hx-text-input/hx-text-input.styles.d.ts +12 -0
  258. package/dist/components/hx-text-input/hx-text-input.styles.d.ts.map +1 -1
  259. package/dist/components/hx-text-input/index.js +1 -1
  260. package/dist/components/hx-textarea/hx-textarea.d.ts +27 -0
  261. package/dist/components/hx-textarea/hx-textarea.d.ts.map +1 -1
  262. package/dist/components/hx-textarea/hx-textarea.styles.d.ts.map +1 -1
  263. package/dist/components/hx-textarea/index.js +1 -1
  264. package/dist/components/hx-theme/hx-theme.d.ts +3 -0
  265. package/dist/components/hx-theme/hx-theme.d.ts.map +1 -1
  266. package/dist/components/hx-theme/index.js +1 -1
  267. package/dist/components/hx-time-picker/hx-time-picker.d.ts +32 -0
  268. package/dist/components/hx-time-picker/hx-time-picker.d.ts.map +1 -1
  269. package/dist/components/hx-time-picker/hx-time-picker.styles.d.ts.map +1 -1
  270. package/dist/components/hx-time-picker/index.js +1 -1
  271. package/dist/components/hx-toast/hx-toast.d.ts +24 -0
  272. package/dist/components/hx-toast/hx-toast.d.ts.map +1 -1
  273. package/dist/components/hx-toast/hx-toast.styles.d.ts +10 -0
  274. package/dist/components/hx-toast/hx-toast.styles.d.ts.map +1 -1
  275. package/dist/components/hx-toast/index.js +1 -1
  276. package/dist/components/hx-toggle-button/hx-toggle-button.d.ts +35 -0
  277. package/dist/components/hx-toggle-button/hx-toggle-button.d.ts.map +1 -1
  278. package/dist/components/hx-toggle-button/hx-toggle-button.styles.d.ts.map +1 -1
  279. package/dist/components/hx-toggle-button/index.js +1 -1
  280. package/dist/components/hx-tooltip/hx-tooltip.d.ts +13 -0
  281. package/dist/components/hx-tooltip/hx-tooltip.d.ts.map +1 -1
  282. package/dist/components/hx-tooltip/hx-tooltip.styles.d.ts +8 -0
  283. package/dist/components/hx-tooltip/hx-tooltip.styles.d.ts.map +1 -1
  284. package/dist/components/hx-tooltip/index.js +1 -1
  285. package/dist/components/hx-top-nav/hx-top-nav.d.ts +21 -0
  286. package/dist/components/hx-top-nav/hx-top-nav.d.ts.map +1 -1
  287. package/dist/components/hx-top-nav/hx-top-nav.styles.d.ts.map +1 -1
  288. package/dist/components/hx-top-nav/index.js +1 -1
  289. package/dist/components/hx-tree-view/hx-tree-item.d.ts.map +1 -1
  290. package/dist/components/hx-tree-view/hx-tree-item.styles.d.ts.map +1 -1
  291. package/dist/components/hx-tree-view/hx-tree-view.d.ts +6 -0
  292. package/dist/components/hx-tree-view/hx-tree-view.d.ts.map +1 -1
  293. package/dist/components/hx-tree-view/index.js +1 -1
  294. package/dist/css/helix-all.css +1173 -828
  295. package/dist/css/helix-core.css +215 -154
  296. package/dist/css/helix-data.css +58 -45
  297. package/dist/css/helix-feedback.css +119 -92
  298. package/dist/css/helix-forms.css +502 -332
  299. package/dist/css/helix-layout.css +9 -6
  300. package/dist/css/helix-media.css +13 -9
  301. package/dist/css/helix-navigation.css +86 -59
  302. package/dist/css/helix-overlay.css +65 -50
  303. package/dist/css/helix-tokens.css +113 -101
  304. package/dist/css/helix-utility.css +57 -40
  305. package/dist/css/hx-action-bar.css +5 -5
  306. package/dist/css/hx-alert.css +27 -23
  307. package/dist/css/hx-avatar.css +3 -3
  308. package/dist/css/hx-badge.css +22 -22
  309. package/dist/css/hx-banner.css +31 -24
  310. package/dist/css/hx-button-group.css +31 -14
  311. package/dist/css/hx-button.css +38 -21
  312. package/dist/css/hx-card.css +26 -12
  313. package/dist/css/hx-carousel.css +13 -9
  314. package/dist/css/hx-checkbox-group.css +5 -5
  315. package/dist/css/hx-checkbox.css +19 -19
  316. package/dist/css/hx-clinical-status.css +28 -28
  317. package/dist/css/hx-code-snippet.css +24 -18
  318. package/dist/css/hx-color-picker.css +30 -13
  319. package/dist/css/hx-combobox.css +28 -28
  320. package/dist/css/hx-copy-button.css +6 -3
  321. package/dist/css/hx-counter.css +1 -1
  322. package/dist/css/hx-data-table.css +22 -15
  323. package/dist/css/hx-date-picker.css +34 -34
  324. package/dist/css/hx-dialog.css +31 -24
  325. package/dist/css/hx-divider.css +2 -2
  326. package/dist/css/hx-drawer.css +18 -15
  327. package/dist/css/hx-dropdown.css +2 -2
  328. package/dist/css/hx-field-label.css +3 -3
  329. package/dist/css/hx-field.css +6 -6
  330. package/dist/css/hx-file-upload.css +18 -18
  331. package/dist/css/hx-help-text.css +5 -5
  332. package/dist/css/hx-icon-button.css +49 -38
  333. package/dist/css/hx-image.css +3 -3
  334. package/dist/css/hx-link.css +9 -9
  335. package/dist/css/hx-list.css +1 -1
  336. package/dist/css/hx-menu.css +2 -2
  337. package/dist/css/hx-meter.css +11 -10
  338. package/dist/css/hx-nav.css +17 -11
  339. package/dist/css/hx-number-input.css +18 -18
  340. package/dist/css/hx-overflow-menu.css +18 -9
  341. package/dist/css/hx-pagination.css +21 -15
  342. package/dist/css/hx-patient-banner.css +17 -9
  343. package/dist/css/hx-phi-field.css +4 -4
  344. package/dist/css/hx-popover.css +10 -6
  345. package/dist/css/hx-progress-bar.css +7 -7
  346. package/dist/css/hx-progress-ring.css +6 -6
  347. package/dist/css/hx-radio-group.css +5 -5
  348. package/dist/css/hx-rating.css +5 -5
  349. package/dist/css/hx-select.css +17 -14
  350. package/dist/css/hx-side-nav.css +13 -10
  351. package/dist/css/hx-skeleton.css +1 -1
  352. package/dist/css/hx-slider.css +15 -12
  353. package/dist/css/hx-spinner.css +4 -4
  354. package/dist/css/hx-split-button.css +45 -31
  355. package/dist/css/hx-split-panel.css +9 -6
  356. package/dist/css/hx-stat.css +8 -8
  357. package/dist/css/hx-status-indicator.css +7 -7
  358. package/dist/css/hx-structured-list.css +5 -5
  359. package/dist/css/hx-switch.css +16 -8
  360. package/dist/css/hx-table.css +6 -6
  361. package/dist/css/hx-tabs.css +3 -3
  362. package/dist/css/hx-tag.css +18 -18
  363. package/dist/css/hx-text-input.css +139 -61
  364. package/dist/css/hx-text.css +9 -7
  365. package/dist/css/hx-textarea.css +66 -27
  366. package/dist/css/hx-time-picker.css +27 -21
  367. package/dist/css/hx-toast.css +22 -7
  368. package/dist/css/hx-toggle-button.css +46 -30
  369. package/dist/css/hx-tooltip.css +4 -3
  370. package/dist/css/hx-top-nav.css +11 -8
  371. package/dist/css/hx-tree-view.css +1 -1
  372. package/dist/css/index.css +1 -1
  373. package/dist/css/manifest.json +280 -194
  374. package/dist/index.js +75 -75
  375. package/dist/shared/forced-colors-CTEDFRGa.js +117 -0
  376. package/dist/shared/forced-colors-CTEDFRGa.js.map +1 -0
  377. package/dist/shared/{hx-accordion-Wt52OOZD.js → hx-accordion-cnKg4_la.js} +31 -30
  378. package/dist/shared/hx-accordion-cnKg4_la.js.map +1 -0
  379. package/dist/shared/{hx-action-bar-BKMADbHj.js → hx-action-bar-CitgcpGv.js} +38 -37
  380. package/dist/shared/hx-action-bar-CitgcpGv.js.map +1 -0
  381. package/dist/shared/{hx-alert-D7n94HwI.js → hx-alert-BZH8iHQf.js} +36 -31
  382. package/dist/shared/hx-alert-BZH8iHQf.js.map +1 -0
  383. package/dist/shared/{hx-avatar-iLYzu8MJ.js → hx-avatar-C9hOmlAb.js} +19 -18
  384. package/dist/shared/hx-avatar-C9hOmlAb.js.map +1 -0
  385. package/dist/shared/{hx-badge-CVCmMPyW.js → hx-badge-CQXgOXJM.js} +65 -64
  386. package/dist/shared/hx-badge-CQXgOXJM.js.map +1 -0
  387. package/dist/shared/{hx-banner-C_He7Tr4.js → hx-banner-DT7Zn9Bo.js} +43 -35
  388. package/dist/shared/hx-banner-DT7Zn9Bo.js.map +1 -0
  389. package/dist/shared/{hx-breadcrumb-item-CldCwD1d.js → hx-breadcrumb-item-COeYcB2x.js} +24 -23
  390. package/dist/shared/hx-breadcrumb-item-COeYcB2x.js.map +1 -0
  391. package/dist/shared/{hx-button-group-BJOGWoMa.js → hx-button-group-BI-QBqmO.js} +45 -27
  392. package/dist/shared/hx-button-group-BI-QBqmO.js.map +1 -0
  393. package/dist/shared/{hx-button-Ddl-T6T-.js → hx-button-modUSOpY.js} +50 -32
  394. package/dist/shared/hx-button-modUSOpY.js.map +1 -0
  395. package/dist/shared/{hx-card-ycveujjL.js → hx-card-CU1QnjNb.js} +54 -39
  396. package/dist/shared/hx-card-CU1QnjNb.js.map +1 -0
  397. package/dist/shared/{hx-carousel-item-D_dCv61-.js → hx-carousel-item-BaE4hpLl.js} +38 -33
  398. package/dist/shared/hx-carousel-item-BaE4hpLl.js.map +1 -0
  399. package/dist/shared/{hx-checkbox-DkkoWoye.js → hx-checkbox-C46TyXhM.js} +42 -41
  400. package/dist/shared/hx-checkbox-C46TyXhM.js.map +1 -0
  401. package/dist/shared/{hx-checkbox-group-C3poJ-Zw.js → hx-checkbox-group-C9n315Ju.js} +20 -19
  402. package/dist/shared/hx-checkbox-group-C9n315Ju.js.map +1 -0
  403. package/dist/shared/{hx-clinical-status-BS5lcddT.js → hx-clinical-status-BmSjfSEN.js} +55 -54
  404. package/dist/shared/hx-clinical-status-BmSjfSEN.js.map +1 -0
  405. package/dist/shared/{hx-code-snippet-B7wUKzyb.js → hx-code-snippet-CJ0FbQYG.js} +39 -32
  406. package/dist/shared/hx-code-snippet-CJ0FbQYG.js.map +1 -0
  407. package/dist/shared/{hx-color-picker-DBaKTVLr.js → hx-color-picker-DiDLZyvK.js} +74 -56
  408. package/dist/shared/hx-color-picker-DiDLZyvK.js.map +1 -0
  409. package/dist/shared/{hx-combobox-BmgYT7Ar.js → hx-combobox-DaA5dBC4.js} +43 -42
  410. package/dist/shared/hx-combobox-DaA5dBC4.js.map +1 -0
  411. package/dist/shared/hx-container-DVI7sxfX.js.map +1 -1
  412. package/dist/shared/{hx-copy-button-8deNUdwP.js → hx-copy-button-sUVuikyH.js} +23 -19
  413. package/dist/shared/hx-copy-button-sUVuikyH.js.map +1 -0
  414. package/dist/shared/{hx-counter-CKfl_g8K.js → hx-counter-0zYapFhf.js} +10 -9
  415. package/dist/shared/hx-counter-0zYapFhf.js.map +1 -0
  416. package/dist/shared/{hx-data-table-B6h0RPn0.js → hx-data-table-Cq3t86Ic.js} +55 -47
  417. package/dist/shared/hx-data-table-Cq3t86Ic.js.map +1 -0
  418. package/dist/shared/{hx-date-picker-Dq2Nb68_.js → hx-date-picker-DMqRQNSB.js} +45 -44
  419. package/dist/shared/hx-date-picker-DMqRQNSB.js.map +1 -0
  420. package/dist/shared/{hx-dialog-CvIlY0Tc.js → hx-dialog-eIS8tcDm.js} +68 -60
  421. package/dist/shared/hx-dialog-eIS8tcDm.js.map +1 -0
  422. package/dist/shared/{hx-divider-DwpOrzMW.js → hx-divider-CYfcUjcr.js} +18 -17
  423. package/dist/shared/hx-divider-CYfcUjcr.js.map +1 -0
  424. package/dist/shared/{hx-drawer-Cx2ZJhBe.js → hx-drawer-DDhDz7RI.js} +31 -27
  425. package/dist/shared/hx-drawer-DDhDz7RI.js.map +1 -0
  426. package/dist/shared/{hx-dropdown-BjDrPUq5.js → hx-dropdown-LyaRc8Rf.js} +16 -15
  427. package/dist/shared/hx-dropdown-LyaRc8Rf.js.map +1 -0
  428. package/dist/shared/{hx-field-Dp3qQMut.js → hx-field-B3Qo8OLS.js} +15 -15
  429. package/dist/shared/hx-field-B3Qo8OLS.js.map +1 -0
  430. package/dist/shared/{hx-field-label-BC8QViXv.js → hx-field-label-BVRyyKeh.js} +8 -7
  431. package/dist/shared/hx-field-label-BVRyyKeh.js.map +1 -0
  432. package/dist/shared/{hx-file-upload-B6Yl1u0i.js → hx-file-upload-zTDbjsRw.js} +42 -41
  433. package/dist/shared/hx-file-upload-zTDbjsRw.js.map +1 -0
  434. package/dist/shared/hx-form-CkChEATa.js +257 -0
  435. package/dist/shared/hx-form-CkChEATa.js.map +1 -0
  436. package/dist/shared/hx-grid-CXZf3jeK.js.map +1 -1
  437. package/dist/shared/{hx-help-text-D7eytSim.js → hx-help-text-Xb2Yr8x2.js} +30 -29
  438. package/dist/shared/hx-help-text-Xb2Yr8x2.js.map +1 -0
  439. package/dist/shared/{hx-icon-button-BHneqPCU.js → hx-icon-button-BmV97nqz.js} +81 -69
  440. package/dist/shared/hx-icon-button-BmV97nqz.js.map +1 -0
  441. package/dist/shared/{hx-icon-CcyDPDYY.js → hx-icon-fuVm4-bk.js} +15 -14
  442. package/dist/shared/hx-icon-fuVm4-bk.js.map +1 -0
  443. package/dist/shared/{hx-image-2gt14zZd.js → hx-image-Ben_4yM5.js} +18 -17
  444. package/dist/shared/hx-image-Ben_4yM5.js.map +1 -0
  445. package/dist/shared/{hx-link-BESrWK8M.js → hx-link-DmiV-mPw.js} +21 -20
  446. package/dist/shared/hx-link-DmiV-mPw.js.map +1 -0
  447. package/dist/shared/{hx-list-_9qVv02L.js → hx-list-CkphGi9T.js} +22 -21
  448. package/dist/shared/hx-list-CkphGi9T.js.map +1 -0
  449. package/dist/shared/{hx-menu-divider-Ck-9Os1t.js → hx-menu-divider-j__TZjH2.js} +53 -49
  450. package/dist/shared/hx-menu-divider-j__TZjH2.js.map +1 -0
  451. package/dist/shared/{hx-meter-TbROk-dw.js → hx-meter-Cm7k_Ro8.js} +42 -40
  452. package/dist/shared/hx-meter-Cm7k_Ro8.js.map +1 -0
  453. package/dist/shared/{hx-nav-BcYDmjf7.js → hx-nav-LoyEKZQC.js} +30 -23
  454. package/dist/shared/hx-nav-LoyEKZQC.js.map +1 -0
  455. package/dist/shared/{hx-nav-item-pqPasRUm.js → hx-nav-item-D8xHLVOs.js} +89 -77
  456. package/dist/shared/hx-nav-item-D8xHLVOs.js.map +1 -0
  457. package/dist/shared/{hx-number-input-mOIZ3-46.js → hx-number-input-yUzFOSC1.js} +68 -67
  458. package/dist/shared/hx-number-input-yUzFOSC1.js.map +1 -0
  459. package/dist/shared/{hx-overflow-menu-Dprb9lnT.js → hx-overflow-menu-BmKyAp5D.js} +33 -23
  460. package/dist/shared/hx-overflow-menu-BmKyAp5D.js.map +1 -0
  461. package/dist/shared/{hx-pagination-AguTQjYC.js → hx-pagination-Dqw5dorC.js} +72 -65
  462. package/dist/shared/hx-pagination-Dqw5dorC.js.map +1 -0
  463. package/dist/shared/{hx-patient-banner-uE6gqLpT.js → hx-patient-banner-CkS-Lmj4.js} +29 -20
  464. package/dist/shared/hx-patient-banner-CkS-Lmj4.js.map +1 -0
  465. package/dist/shared/{hx-phi-field-BC_XowhC.js → hx-phi-field-Bf9TdtC1.js} +13 -12
  466. package/dist/shared/hx-phi-field-Bf9TdtC1.js.map +1 -0
  467. package/dist/shared/{hx-popover-B2_203ct.js → hx-popover-B93rTAfr.js} +29 -24
  468. package/dist/shared/hx-popover-B93rTAfr.js.map +1 -0
  469. package/dist/shared/{hx-popup-DZXpsJ1R.js → hx-popup-COUXXZ9X.js} +8 -7
  470. package/dist/shared/hx-popup-COUXXZ9X.js.map +1 -0
  471. package/dist/shared/{hx-progress-bar-KjEkEJLy.js → hx-progress-bar-Bn3JEPUf.js} +28 -27
  472. package/dist/shared/hx-progress-bar-Bn3JEPUf.js.map +1 -0
  473. package/dist/shared/{hx-progress-ring-3zMwvrwD.js → hx-progress-ring-TwHyXeEp.js} +15 -14
  474. package/dist/shared/hx-progress-ring-TwHyXeEp.js.map +1 -0
  475. package/dist/shared/{hx-prose-BCtK7YL6.js → hx-prose-BThYcASV.js} +12 -12
  476. package/dist/shared/{hx-prose-BCtK7YL6.js.map → hx-prose-BThYcASV.js.map} +1 -1
  477. package/dist/shared/{hx-radio-BBC5qZgE.js → hx-radio-N8xgDd_5.js} +38 -37
  478. package/dist/shared/hx-radio-N8xgDd_5.js.map +1 -0
  479. package/dist/shared/{hx-rating-C3E3ENJb.js → hx-rating-i2FL1WUN.js} +38 -37
  480. package/dist/shared/hx-rating-i2FL1WUN.js.map +1 -0
  481. package/dist/shared/{hx-select-CixTo7jp.js → hx-select-vgaBo1Ai.js} +63 -59
  482. package/dist/shared/hx-select-vgaBo1Ai.js.map +1 -0
  483. package/dist/shared/{hx-skeleton-LxkI0pxr.js → hx-skeleton-Cnieh5Uc.js} +14 -13
  484. package/dist/shared/hx-skeleton-Cnieh5Uc.js.map +1 -0
  485. package/dist/shared/{hx-slider-DFHuzF3N.js → hx-slider-ydBamYhd.js} +83 -79
  486. package/dist/shared/hx-slider-ydBamYhd.js.map +1 -0
  487. package/dist/shared/{hx-spinner-BKjuCdZB.js → hx-spinner-DL5AYr16.js} +18 -17
  488. package/dist/shared/hx-spinner-DL5AYr16.js.map +1 -0
  489. package/dist/shared/{hx-split-button-CGcJMmCG.js → hx-split-button-BeMsmS6N.js} +74 -59
  490. package/dist/shared/hx-split-button-BeMsmS6N.js.map +1 -0
  491. package/dist/shared/{hx-split-panel-C-1R10Mc.js → hx-split-panel-BVG1VWNT.js} +16 -12
  492. package/dist/shared/hx-split-panel-BVG1VWNT.js.map +1 -0
  493. package/dist/shared/hx-stack-DGfcOfWJ.js.map +1 -1
  494. package/dist/shared/{hx-stat-BTpykQAt.js → hx-stat-WOcNV1Ry.js} +16 -15
  495. package/dist/shared/hx-stat-WOcNV1Ry.js.map +1 -0
  496. package/dist/shared/{hx-status-indicator-X2QEWNFt.js → hx-status-indicator-BlQyen43.js} +17 -16
  497. package/dist/shared/hx-status-indicator-BlQyen43.js.map +1 -0
  498. package/dist/shared/{hx-step-CRNQlmSo.js → hx-step-DL3PbOzm.js} +63 -50
  499. package/dist/shared/hx-step-DL3PbOzm.js.map +1 -0
  500. package/dist/shared/{hx-structured-list-CqNbaEXg.js → hx-structured-list-m_-dMJbC.js} +18 -17
  501. package/dist/shared/hx-structured-list-m_-dMJbC.js.map +1 -0
  502. package/dist/shared/{hx-switch-DqOD9JR7.js → hx-switch-Dougzsgp.js} +29 -20
  503. package/dist/shared/hx-switch-Dougzsgp.js.map +1 -0
  504. package/dist/shared/{hx-tab-panel-BIzKfW5i.js → hx-tab-panel-CbkO9VKu.js} +45 -44
  505. package/dist/shared/hx-tab-panel-CbkO9VKu.js.map +1 -0
  506. package/dist/shared/{hx-tag-CgnrNnte.js → hx-tag-CNSmdyaK.js} +63 -62
  507. package/dist/shared/hx-tag-CNSmdyaK.js.map +1 -0
  508. package/dist/shared/{hx-td-Bra35cH4.js → hx-td-1zwTFLRw.js} +62 -61
  509. package/dist/shared/hx-td-1zwTFLRw.js.map +1 -0
  510. package/dist/shared/{hx-text-DMC2CPlL.js → hx-text-Bz_9fJ3J.js} +28 -25
  511. package/dist/shared/hx-text-Bz_9fJ3J.js.map +1 -0
  512. package/dist/shared/{hx-text-input--q0GH78x.js → hx-text-input-B-caO5fI.js} +159 -80
  513. package/dist/shared/hx-text-input-B-caO5fI.js.map +1 -0
  514. package/dist/shared/{hx-textarea-CK621vSL.js → hx-textarea-D9O4U8cb.js} +110 -70
  515. package/dist/shared/hx-textarea-D9O4U8cb.js.map +1 -0
  516. package/dist/shared/{hx-theme-DfEy-SJA.js → hx-theme-BiyQ7UUK.js} +46 -35
  517. package/dist/shared/hx-theme-BiyQ7UUK.js.map +1 -0
  518. package/dist/shared/{hx-time-picker-tPUfgElQ.js → hx-time-picker-m0z4nFB-.js} +59 -52
  519. package/dist/shared/hx-time-picker-m0z4nFB-.js.map +1 -0
  520. package/dist/shared/{hx-toggle-button-L-uBJr-a.js → hx-toggle-button-Dd8clXB4.js} +75 -58
  521. package/dist/shared/hx-toggle-button-Dd8clXB4.js.map +1 -0
  522. package/dist/shared/{hx-tooltip-B_zfKvwc.js → hx-tooltip-nYOv9OLu.js} +18 -16
  523. package/dist/shared/hx-tooltip-nYOv9OLu.js.map +1 -0
  524. package/dist/shared/{hx-top-nav-CATbRvIv.js → hx-top-nav-CchPYaiV.js} +36 -32
  525. package/dist/shared/hx-top-nav-CchPYaiV.js.map +1 -0
  526. package/dist/shared/{hx-tree-item-A45WCiBu.js → hx-tree-item-DtMC3DTa.js} +35 -28
  527. package/dist/shared/hx-tree-item-DtMC3DTa.js.map +1 -0
  528. package/dist/shared/{toast-factory-BPPnG3mM.js → toast-factory-DvDRAh0l.js} +77 -61
  529. package/dist/shared/toast-factory-DvDRAh0l.js.map +1 -0
  530. package/dist/styles/forced-colors.d.ts +60 -0
  531. package/dist/styles/forced-colors.d.ts.map +1 -0
  532. package/figma-inventory.json +8606 -591
  533. package/package.json +2 -2
  534. package/dist/shared/hx-accordion-Wt52OOZD.js.map +0 -1
  535. package/dist/shared/hx-action-bar-BKMADbHj.js.map +0 -1
  536. package/dist/shared/hx-alert-D7n94HwI.js.map +0 -1
  537. package/dist/shared/hx-avatar-iLYzu8MJ.js.map +0 -1
  538. package/dist/shared/hx-badge-CVCmMPyW.js.map +0 -1
  539. package/dist/shared/hx-banner-C_He7Tr4.js.map +0 -1
  540. package/dist/shared/hx-breadcrumb-item-CldCwD1d.js.map +0 -1
  541. package/dist/shared/hx-button-Ddl-T6T-.js.map +0 -1
  542. package/dist/shared/hx-button-group-BJOGWoMa.js.map +0 -1
  543. package/dist/shared/hx-card-ycveujjL.js.map +0 -1
  544. package/dist/shared/hx-carousel-item-D_dCv61-.js.map +0 -1
  545. package/dist/shared/hx-checkbox-DkkoWoye.js.map +0 -1
  546. package/dist/shared/hx-checkbox-group-C3poJ-Zw.js.map +0 -1
  547. package/dist/shared/hx-clinical-status-BS5lcddT.js.map +0 -1
  548. package/dist/shared/hx-code-snippet-B7wUKzyb.js.map +0 -1
  549. package/dist/shared/hx-color-picker-DBaKTVLr.js.map +0 -1
  550. package/dist/shared/hx-combobox-BmgYT7Ar.js.map +0 -1
  551. package/dist/shared/hx-copy-button-8deNUdwP.js.map +0 -1
  552. package/dist/shared/hx-counter-CKfl_g8K.js.map +0 -1
  553. package/dist/shared/hx-data-table-B6h0RPn0.js.map +0 -1
  554. package/dist/shared/hx-date-picker-Dq2Nb68_.js.map +0 -1
  555. package/dist/shared/hx-dialog-CvIlY0Tc.js.map +0 -1
  556. package/dist/shared/hx-divider-DwpOrzMW.js.map +0 -1
  557. package/dist/shared/hx-drawer-Cx2ZJhBe.js.map +0 -1
  558. package/dist/shared/hx-dropdown-BjDrPUq5.js.map +0 -1
  559. package/dist/shared/hx-field-Dp3qQMut.js.map +0 -1
  560. package/dist/shared/hx-field-label-BC8QViXv.js.map +0 -1
  561. package/dist/shared/hx-file-upload-B6Yl1u0i.js.map +0 -1
  562. package/dist/shared/hx-form-ButQFt9A.js +0 -257
  563. package/dist/shared/hx-form-ButQFt9A.js.map +0 -1
  564. package/dist/shared/hx-help-text-D7eytSim.js.map +0 -1
  565. package/dist/shared/hx-icon-CcyDPDYY.js.map +0 -1
  566. package/dist/shared/hx-icon-button-BHneqPCU.js.map +0 -1
  567. package/dist/shared/hx-image-2gt14zZd.js.map +0 -1
  568. package/dist/shared/hx-link-BESrWK8M.js.map +0 -1
  569. package/dist/shared/hx-list-_9qVv02L.js.map +0 -1
  570. package/dist/shared/hx-menu-divider-Ck-9Os1t.js.map +0 -1
  571. package/dist/shared/hx-meter-TbROk-dw.js.map +0 -1
  572. package/dist/shared/hx-nav-BcYDmjf7.js.map +0 -1
  573. package/dist/shared/hx-nav-item-pqPasRUm.js.map +0 -1
  574. package/dist/shared/hx-number-input-mOIZ3-46.js.map +0 -1
  575. package/dist/shared/hx-overflow-menu-Dprb9lnT.js.map +0 -1
  576. package/dist/shared/hx-pagination-AguTQjYC.js.map +0 -1
  577. package/dist/shared/hx-patient-banner-uE6gqLpT.js.map +0 -1
  578. package/dist/shared/hx-phi-field-BC_XowhC.js.map +0 -1
  579. package/dist/shared/hx-popover-B2_203ct.js.map +0 -1
  580. package/dist/shared/hx-popup-DZXpsJ1R.js.map +0 -1
  581. package/dist/shared/hx-progress-bar-KjEkEJLy.js.map +0 -1
  582. package/dist/shared/hx-progress-ring-3zMwvrwD.js.map +0 -1
  583. package/dist/shared/hx-radio-BBC5qZgE.js.map +0 -1
  584. package/dist/shared/hx-rating-C3E3ENJb.js.map +0 -1
  585. package/dist/shared/hx-select-CixTo7jp.js.map +0 -1
  586. package/dist/shared/hx-skeleton-LxkI0pxr.js.map +0 -1
  587. package/dist/shared/hx-slider-DFHuzF3N.js.map +0 -1
  588. package/dist/shared/hx-spinner-BKjuCdZB.js.map +0 -1
  589. package/dist/shared/hx-split-button-CGcJMmCG.js.map +0 -1
  590. package/dist/shared/hx-split-panel-C-1R10Mc.js.map +0 -1
  591. package/dist/shared/hx-stat-BTpykQAt.js.map +0 -1
  592. package/dist/shared/hx-status-indicator-X2QEWNFt.js.map +0 -1
  593. package/dist/shared/hx-step-CRNQlmSo.js.map +0 -1
  594. package/dist/shared/hx-structured-list-CqNbaEXg.js.map +0 -1
  595. package/dist/shared/hx-switch-DqOD9JR7.js.map +0 -1
  596. package/dist/shared/hx-tab-panel-BIzKfW5i.js.map +0 -1
  597. package/dist/shared/hx-tag-CgnrNnte.js.map +0 -1
  598. package/dist/shared/hx-td-Bra35cH4.js.map +0 -1
  599. package/dist/shared/hx-text-DMC2CPlL.js.map +0 -1
  600. package/dist/shared/hx-text-input--q0GH78x.js.map +0 -1
  601. package/dist/shared/hx-textarea-CK621vSL.js.map +0 -1
  602. package/dist/shared/hx-theme-DfEy-SJA.js.map +0 -1
  603. package/dist/shared/hx-time-picker-tPUfgElQ.js.map +0 -1
  604. package/dist/shared/hx-toggle-button-L-uBJr-a.js.map +0 -1
  605. package/dist/shared/hx-tooltip-B_zfKvwc.js.map +0 -1
  606. package/dist/shared/hx-top-nav-CATbRvIv.js.map +0 -1
  607. package/dist/shared/hx-tree-item-A45WCiBu.js.map +0 -1
  608. package/dist/shared/toast-factory-BPPnG3mM.js.map +0 -1
@@ -4,45 +4,49 @@ import { classMap as _ } from "lit/directives/class-map.js";
4
4
  import { ifDefined as c } from "lit/directives/if-defined.js";
5
5
  import { repeat as y } from "lit/directives/repeat.js";
6
6
  import { F as I } from "./FormMixin-B8PXk5RQ.js";
7
- import { d as w } from "./dev-warn-YlwPHjtX.js";
8
- import { H as $ } from "./helix-element-BNEYeiys.js";
9
- import { c as O } from "./id-counter-DuX8vsui.js";
10
- const k = g`
7
+ import { b as w } from "./forced-colors-CTEDFRGa.js";
8
+ import { d as $ } from "./dev-warn-YlwPHjtX.js";
9
+ import { H as O } from "./helix-element-BNEYeiys.js";
10
+ import { c as k } from "./id-counter-DuX8vsui.js";
11
+ const C = g`
11
12
  /* ─── 3-tier token cascade: component → semantic → hardcoded fallback ─── */
12
13
  :host {
13
14
  display: block;
14
15
 
15
16
  /* Background & foreground */
16
- --_bg: var(--hx-select-bg, var(--hx-color-neutral-0, #ffffff));
17
- --_color: var(--hx-select-color, var(--hx-color-neutral-800, #1e293b));
18
- --_placeholder-color: var(--hx-select-placeholder-color, var(--hx-color-neutral-400, #94a3b8));
17
+ --_bg: var(--hx-select-bg, var(--hx-color-surface-default, #ffffff));
18
+ --_color: var(--hx-select-color, var(--hx-color-text-strong, #202b39));
19
+ --_placeholder-color: var(
20
+ --hx-select-placeholder-color,
21
+ var(--hx-color-text-placeholder, #66787b)
22
+ );
19
23
 
20
24
  /* Label */
21
- --_label-color: var(--hx-select-label-color, var(--hx-color-neutral-700, #334155));
25
+ --_label-color: var(--hx-select-label-color, var(--hx-color-text-strong, #202b39));
22
26
 
23
27
  /* Border */
24
- --_border-color: var(--hx-select-border-color, var(--hx-color-neutral-300, #cbd5e1));
28
+ --_border-color: var(--hx-select-border-color, var(--hx-color-border-strong, #8e9c98));
25
29
  --_border-radius: var(--hx-select-border-radius, var(--hx-border-radius-md, 0.375rem));
26
30
 
27
31
  /* Focus ring */
28
32
  --_focus-ring-color: var(
29
33
  --hx-select-focus-ring-color,
30
- var(--hx-focus-ring-color, var(--hx-color-primary-400, #60a5fa))
34
+ var(--hx-focus-ring-color, var(--hx-color-primary-400, #6ab1b1))
31
35
  );
32
36
 
33
37
  /* Error */
34
- --_error-color: var(--hx-select-error-color, var(--hx-color-error-500, #dc2626));
38
+ --_error-color: var(--hx-select-error-color, var(--hx-color-error-500, #e5493e));
35
39
 
36
40
  /* Chevron */
37
- --_chevron-color: var(--hx-select-chevron-color, var(--hx-color-neutral-500, #64748b));
41
+ --_chevron-color: var(--hx-select-chevron-color, var(--hx-color-text-muted, #4a5362));
38
42
  --_chevron-size: var(--hx-select-chevron-size, 0.5rem);
39
43
 
40
44
  /* Listbox */
41
- --_listbox-bg: var(--hx-select-listbox-bg, var(--hx-color-neutral-0, #ffffff));
42
- --_option-hover-bg: var(--hx-select-option-hover-bg, var(--hx-color-primary-50, #eff6ff));
45
+ --_listbox-bg: var(--hx-select-listbox-bg, var(--hx-color-surface-default, #ffffff));
46
+ --_option-hover-bg: var(--hx-select-option-hover-bg, var(--hx-color-primary-50, #ebf8f8));
43
47
  --_option-selected-bg: var(
44
48
  --hx-select-option-selected-bg,
45
- var(--hx-color-primary-100, #dbeafe)
49
+ var(--hx-color-primary-100, #dbf0f0)
46
50
  );
47
51
 
48
52
  /* Typography */
@@ -77,7 +81,7 @@ const k = g`
77
81
  }
78
82
 
79
83
  .field__required-marker {
80
- color: var(--hx-select-error-color, var(--hx-color-error-text, #b91c1c));
84
+ color: var(--hx-select-error-color, var(--hx-color-error-text, #c92a2a));
81
85
  font-weight: var(--hx-font-weight-bold, 700);
82
86
  }
83
87
 
@@ -286,11 +290,11 @@ const k = g`
286
290
  }
287
291
 
288
292
  .field__help-text {
289
- color: var(--hx-color-neutral-500, #64748b);
293
+ color: var(--hx-color-text-muted, #4a5362);
290
294
  }
291
295
 
292
296
  .field__error {
293
- color: var(--hx-select-error-color, var(--hx-color-error-text, #b91c1c));
297
+ color: var(--hx-select-error-color, var(--hx-color-error-text, #c92a2a));
294
298
  }
295
299
 
296
300
  @media (prefers-reduced-motion: reduce) {
@@ -383,15 +387,15 @@ const k = g`
383
387
  }
384
388
  }
385
389
  `;
386
- var C = Object.defineProperty, z = Object.getOwnPropertyDescriptor, l = (e, t, s, r) => {
387
- for (var o = r > 1 ? void 0 : r ? z(t, s) : t, a = e.length - 1, f; a >= 0; a--)
388
- (f = e[a]) && (o = (r ? f(t, s, o) : f(o)) || o);
389
- return r && o && C(t, s, o), o;
390
+ var z = Object.defineProperty, S = Object.getOwnPropertyDescriptor, l = (e, t, s, o) => {
391
+ for (var r = o > 1 ? void 0 : o ? S(t, s) : t, a = e.length - 1, f; a >= 0; a--)
392
+ (f = e[a]) && (r = (o ? f(t, s, r) : f(r)) || r);
393
+ return o && r && z(t, s, r), r;
390
394
  };
391
- const S = O("hx-select");
392
- let i = class extends I($) {
395
+ const T = k("hx-select");
396
+ let i = class extends I(O) {
393
397
  constructor() {
394
- super(...arguments), this._selectId = S(), this._listboxId = `${this._selectId}-listbox`, this._labelId = `${this._selectId}-label`, this._helpTextId = `${this._selectId}-help`, this._errorId = `${this._selectId}-error`, this.label = "", this.placeholder = "", this.value = "", this.required = !1, this.disabled = !1, this.name = "", this.error = "", this.helpText = "", this.size = "md", this.accessibleLabel = null, this.open = !1, this.labelRequired = "Please select an option.", this.labelNoOptions = "No options found", this._options = [], this._hasErrorSlot = !1, this._focusedOptionIndex = -1, this._handleOutsideClick = (e) => {
398
+ super(...arguments), this._selectId = T(), this._listboxId = `${this._selectId}-listbox`, this._labelId = `${this._selectId}-label`, this._helpTextId = `${this._selectId}-help`, this._errorId = `${this._selectId}-error`, this.label = "", this.placeholder = "", this.value = "", this.required = !1, this.disabled = !1, this.name = "", this.error = "", this.helpText = "", this.size = "md", this.accessibleLabel = null, this.open = !1, this.labelRequired = "Please select an option.", this.labelNoOptions = "No options found", this._options = [], this._hasErrorSlot = !1, this._focusedOptionIndex = -1, this._handleOutsideClick = (e) => {
395
399
  this.open && !e.composedPath().includes(this) && (this.open = !1);
396
400
  };
397
401
  }
@@ -410,7 +414,7 @@ let i = class extends I($) {
410
414
  var t;
411
415
  if (super.updated(e), e.has("open") && (this.open ? document.addEventListener("click", this._handleOutsideClick) : document.removeEventListener("click", this._handleOutsideClick)), e.has("value") && (this._syncNativeSelect(), this._updateFormValue()), e.has("size")) {
412
416
  const s = ["sm", "md", "lg"];
413
- s.includes(this.size) || w(
417
+ s.includes(this.size) || $(
414
418
  "hx-select",
415
419
  `Invalid size "${this.size}". Expected one of: ${s.join(", ")}.`
416
420
  );
@@ -418,10 +422,10 @@ let i = class extends I($) {
418
422
  if (e.has("error") && this.error) {
419
423
  const s = (t = this.shadowRoot) == null ? void 0 : t.querySelector('[role="alert"]');
420
424
  if (s) {
421
- const r = this.error;
425
+ const o = this.error;
422
426
  requestAnimationFrame(() => {
423
427
  s.textContent = "", requestAnimationFrame(() => {
424
- s.textContent = r;
428
+ s.textContent = o;
425
429
  });
426
430
  });
427
431
  }
@@ -468,21 +472,21 @@ let i = class extends I($) {
468
472
  */
469
473
  /** @internal */
470
474
  _handleSlotChange() {
471
- var r;
472
- const e = (r = this.shadowRoot) == null ? void 0 : r.querySelector("slot:not([name])");
475
+ var o;
476
+ const e = (o = this.shadowRoot) == null ? void 0 : o.querySelector("slot:not([name])");
473
477
  if (!e) return;
474
478
  const t = [];
475
- this._select && this._select.querySelectorAll("option[data-cloned]").forEach((o) => o.remove());
476
- const s = (o) => {
479
+ this._select && this._select.querySelectorAll("option[data-cloned]").forEach((r) => r.remove());
480
+ const s = (r) => {
477
481
  if (!this._select) return;
478
- const a = o.cloneNode(!0);
482
+ const a = r.cloneNode(!0);
479
483
  a.setAttribute("data-cloned", ""), this._select.appendChild(a);
480
484
  };
481
- for (const o of e.assignedElements({ flatten: !0 }))
482
- if (o instanceof HTMLOptionElement)
483
- t.push(this._parseOption(o)), s(o);
484
- else if (o instanceof HTMLOptGroupElement)
485
- for (const a of Array.from(o.children))
485
+ for (const r of e.assignedElements({ flatten: !0 }))
486
+ if (r instanceof HTMLOptionElement)
487
+ t.push(this._parseOption(r)), s(r);
488
+ else if (r instanceof HTMLOptGroupElement)
489
+ for (const a of Array.from(r.children))
486
490
  a instanceof HTMLOptionElement && (t.push(this._parseOption(a)), s(a));
487
491
  this._options = t, t.length, this._select && (this.value ? this._select.value = this.value : !this.placeholder && t.length > 0 && (this.value = this._select.value, this._updateFormValue()));
488
492
  }
@@ -507,15 +511,15 @@ let i = class extends I($) {
507
511
  _handleKeydown(e) {
508
512
  var s;
509
513
  if (this.disabled) return;
510
- const t = this._options.map((r, o) => ({ o: r, i: o })).filter(({ o: r }) => !r.disabled).map(({ i: r }) => r);
514
+ const t = this._options.map((o, r) => ({ o, i: r })).filter(({ o }) => !o.disabled).map(({ i: o }) => o);
511
515
  switch (e.key) {
512
516
  case "ArrowDown": {
513
517
  if (e.preventDefault(), !this.open) {
514
518
  this.open = !0, this._focusedOptionIndex = t.length > 0 ? t[0] ?? 0 : 0;
515
519
  break;
516
520
  }
517
- const r = t.find((o) => o > this._focusedOptionIndex);
518
- this._focusedOptionIndex = r !== void 0 ? r : t[0] ?? this._focusedOptionIndex;
521
+ const o = t.find((r) => r > this._focusedOptionIndex);
522
+ this._focusedOptionIndex = o !== void 0 ? o : t[0] ?? this._focusedOptionIndex;
519
523
  break;
520
524
  }
521
525
  case "ArrowUp": {
@@ -525,8 +529,8 @@ let i = class extends I($) {
525
529
  this._focusedOptionIndex = a !== void 0 ? a : 0;
526
530
  break;
527
531
  }
528
- const r = [...t].reverse().find((a) => a < this._focusedOptionIndex), o = t[t.length - 1];
529
- this._focusedOptionIndex = r !== void 0 ? r : o ?? this._focusedOptionIndex;
532
+ const o = [...t].reverse().find((a) => a < this._focusedOptionIndex), r = t[t.length - 1];
533
+ this._focusedOptionIndex = o !== void 0 ? o : r ?? this._focusedOptionIndex;
530
534
  break;
531
535
  }
532
536
  case "Home": {
@@ -535,21 +539,21 @@ let i = class extends I($) {
535
539
  }
536
540
  case "End": {
537
541
  e.preventDefault(), this.open || (this.open = !0);
538
- const r = t[t.length - 1];
539
- this._focusedOptionIndex = r !== void 0 ? r : 0;
542
+ const o = t[t.length - 1];
543
+ this._focusedOptionIndex = o !== void 0 ? o : 0;
540
544
  break;
541
545
  }
542
546
  case "Enter":
543
547
  case " ": {
544
548
  if (e.preventDefault(), !this.open) {
545
549
  this.open = !0;
546
- const r = this._options.findIndex((o) => o.value === this.value);
547
- this._focusedOptionIndex = r >= 0 ? r : t[0] ?? 0;
550
+ const o = this._options.findIndex((r) => r.value === this.value);
551
+ this._focusedOptionIndex = o >= 0 ? o : t[0] ?? 0;
548
552
  break;
549
553
  }
550
554
  if (this._focusedOptionIndex >= 0 && this._focusedOptionIndex < this._options.length) {
551
- const r = this._options[this._focusedOptionIndex];
552
- r && this._selectOption(r);
555
+ const o = this._options[this._focusedOptionIndex];
556
+ o && this._selectOption(o);
553
557
  }
554
558
  break;
555
559
  }
@@ -563,7 +567,7 @@ let i = class extends I($) {
563
567
  }
564
568
  default: {
565
569
  if (!e.ctrlKey && !e.metaKey && !e.altKey && e.key.length === 1) {
566
- const r = e.key.toLowerCase(), o = this.open ? this._focusedOptionIndex + 1 : 0, a = this._options.map((p, b) => ({ o: p, i: b })).filter(({ o: p }) => !p.disabled && p.label.toLowerCase().startsWith(r)), v = a.find(({ i: p }) => p >= o) ?? a[0];
570
+ const o = e.key.toLowerCase(), r = this.open ? this._focusedOptionIndex + 1 : 0, a = this._options.map((p, b) => ({ o: p, i: b })).filter(({ o: p }) => !p.disabled && p.label.toLowerCase().startsWith(o)), v = a.find(({ i: p }) => p >= r) ?? a[0];
567
571
  v && (this.open || (this.open = !0), this._focusedOptionIndex = v.i, e.preventDefault());
568
572
  }
569
573
  break;
@@ -607,7 +611,7 @@ let i = class extends I($) {
607
611
  this._options,
608
612
  (e) => e.value,
609
613
  (e, t) => {
610
- const s = e.value === this.value, r = t === this._focusedOptionIndex;
614
+ const s = e.value === this.value, o = t === this._focusedOptionIndex;
611
615
  return h`
612
616
  <div
613
617
  id=${this._optionId(t)}
@@ -616,7 +620,7 @@ let i = class extends I($) {
616
620
  class=${_({
617
621
  field__option: !0,
618
622
  "field__option--selected": s,
619
- "field__option--focused": r,
623
+ "field__option--focused": o,
620
624
  "field__option--disabled": e.disabled
621
625
  })}
622
626
  aria-selected=${s ? "true" : "false"}
@@ -641,10 +645,10 @@ let i = class extends I($) {
641
645
  field__trigger: !0,
642
646
  [`field__trigger--${this.size}`]: !0,
643
647
  "field__trigger--placeholder": !this.value
644
- }, r = {
648
+ }, o = {
645
649
  field__select: !0,
646
650
  [`field__select--${this.size}`]: !0
647
- }, o = [
651
+ }, r = [
648
652
  e || this._hasErrorSlot ? this._errorId : null,
649
653
  this.helpText ? this._helpTextId : null
650
654
  ].filter(Boolean).join(" ") || void 0;
@@ -677,7 +681,7 @@ let i = class extends I($) {
677
681
  aria-controls=${this._listboxId}
678
682
  aria-activedescendant=${this.open && this._focusedOptionIndex >= 0 ? this._optionId(this._focusedOptionIndex) : n}
679
683
  aria-invalid=${e ? "true" : n}
680
- aria-describedby=${c(o)}
684
+ aria-describedby=${c(r)}
681
685
  aria-required=${this.required ? "true" : n}
682
686
  aria-disabled=${this.disabled ? "true" : n}
683
687
  aria-labelledby=${c(this.label ? this._labelId : void 0)}
@@ -706,7 +710,7 @@ let i = class extends I($) {
706
710
  <!-- Hidden native select (form participation + test compat) -->
707
711
  <select
708
712
  part="select"
709
- class=${_(r)}
713
+ class=${_(o)}
710
714
  tabindex="-1"
711
715
  aria-hidden="true"
712
716
  ?required=${this.required}
@@ -714,7 +718,7 @@ let i = class extends I($) {
714
718
  name=${c(this.name || void 0)}
715
719
  aria-label=${c(this.accessibleLabel ?? void 0)}
716
720
  aria-invalid=${e ? "true" : n}
717
- aria-describedby=${c(o)}
721
+ aria-describedby=${c(r)}
718
722
  aria-required=${this.required ? "true" : n}
719
723
  @change=${this._handleNativeChange}
720
724
  >
@@ -742,7 +746,7 @@ let i = class extends I($) {
742
746
  `;
743
747
  }
744
748
  };
745
- i.styles = [k];
749
+ i.styles = [C, w];
746
750
  i.formAssociated = !0;
747
751
  l([
748
752
  d({ type: String })
@@ -804,4 +808,4 @@ i = l([
804
808
  export {
805
809
  i as H
806
810
  };
807
- //# sourceMappingURL=hx-select-CixTo7jp.js.map
811
+ //# sourceMappingURL=hx-select-vgaBo1Ai.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hx-select-vgaBo1Ai.js","sources":["../../src/components/hx-select/hx-select.styles.ts","../../src/components/hx-select/hx-select.ts"],"sourcesContent":["import { css } from 'lit';\n\nexport const helixSelectStyles = css`\n /* ─── 3-tier token cascade: component → semantic → hardcoded fallback ─── */\n :host {\n display: block;\n\n /* Background & foreground */\n --_bg: var(--hx-select-bg, var(--hx-color-surface-default, #ffffff));\n --_color: var(--hx-select-color, var(--hx-color-text-strong, #202b39));\n --_placeholder-color: var(\n --hx-select-placeholder-color,\n var(--hx-color-text-placeholder, #66787b)\n );\n\n /* Label */\n --_label-color: var(--hx-select-label-color, var(--hx-color-text-strong, #202b39));\n\n /* Border */\n --_border-color: var(--hx-select-border-color, var(--hx-color-border-strong, #8e9c98));\n --_border-radius: var(--hx-select-border-radius, var(--hx-border-radius-md, 0.375rem));\n\n /* Focus ring */\n --_focus-ring-color: var(\n --hx-select-focus-ring-color,\n var(--hx-focus-ring-color, var(--hx-color-primary-400, #6ab1b1))\n );\n\n /* Error */\n --_error-color: var(--hx-select-error-color, var(--hx-color-error-500, #e5493e));\n\n /* Chevron */\n --_chevron-color: var(--hx-select-chevron-color, var(--hx-color-text-muted, #4a5362));\n --_chevron-size: var(--hx-select-chevron-size, 0.5rem);\n\n /* Listbox */\n --_listbox-bg: var(--hx-select-listbox-bg, var(--hx-color-surface-default, #ffffff));\n --_option-hover-bg: var(--hx-select-option-hover-bg, var(--hx-color-primary-50, #ebf8f8));\n --_option-selected-bg: var(\n --hx-select-option-selected-bg,\n var(--hx-color-primary-100, #dbf0f0)\n );\n\n /* Typography */\n --_font-family: var(--hx-select-font-family, var(--hx-font-family-sans, sans-serif));\n }\n\n :host([disabled]) {\n opacity: var(--hx-opacity-disabled, 0.5);\n pointer-events: none;\n }\n\n * {\n box-sizing: border-box;\n }\n\n .field {\n display: flex;\n flex-direction: column;\n gap: var(--hx-space-1, 0.25rem);\n font-family: var(--_font-family);\n position: relative;\n }\n\n .field__label {\n display: flex;\n align-items: baseline;\n gap: var(--hx-space-1, 0.25rem);\n font-size: var(--hx-font-size-sm, 0.875rem);\n font-weight: var(--hx-font-weight-medium, 500);\n color: var(--_label-color);\n line-height: var(--hx-line-height-normal, 1.5);\n }\n\n .field__required-marker {\n color: var(--hx-select-error-color, var(--hx-color-error-text, #c92a2a));\n font-weight: var(--hx-font-weight-bold, 700);\n }\n\n .field__select-wrapper {\n position: relative;\n display: block;\n }\n\n .field__trigger {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: var(--hx-space-2, 0.5rem);\n width: 100%;\n min-height: var(--hx-input-height-md, var(--hx-size-10, 2.5rem));\n border: var(--hx-border-width-thin, 1px) solid var(--_border-color);\n border-radius: var(--_border-radius);\n background-color: var(--_bg);\n color: var(--_color);\n font-family: inherit;\n font-size: var(--hx-font-size-md, 1rem);\n line-height: var(--hx-line-height-normal, 1.5);\n padding: var(--hx-space-2, 0.5rem) var(--hx-space-3, 0.75rem);\n cursor: pointer;\n text-align: start;\n transition:\n border-color var(--hx-transition-fast, 150ms ease),\n box-shadow var(--hx-transition-fast, 150ms ease);\n outline: none;\n }\n\n .field__trigger:focus-visible {\n border-color: var(--_focus-ring-color);\n box-shadow: 0 0 0 var(--hx-focus-ring-width, 2px)\n color-mix(\n in srgb,\n var(--_focus-ring-color) calc(var(--hx-focus-ring-opacity, 0.25) * 100%),\n transparent\n );\n }\n\n .field__trigger[aria-disabled='true'] {\n cursor: not-allowed;\n }\n\n .field__trigger--sm {\n min-height: var(--hx-input-height-sm, var(--hx-size-8, 2rem));\n font-size: var(--hx-font-size-sm, 0.875rem);\n padding: var(--hx-space-1, 0.25rem) var(--hx-space-3, 0.75rem);\n }\n\n .field__trigger--lg {\n min-height: var(--hx-input-height-lg, var(--hx-size-12, 3rem));\n font-size: var(--hx-font-size-lg, 1.125rem);\n padding: var(--hx-space-3, 0.75rem) var(--hx-space-4, 1rem);\n }\n\n .field__trigger-value {\n flex: 1;\n min-width: 0;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n }\n\n .field__trigger--placeholder .field__trigger-value {\n color: var(--_placeholder-color);\n }\n\n .field__chevron {\n flex-shrink: 0;\n width: calc(var(--_chevron-size) * 1.5);\n height: var(--_chevron-size);\n position: relative;\n color: var(--_chevron-color);\n pointer-events: none;\n transition: transform var(--hx-transition-fast, 150ms ease);\n }\n\n .field__chevron::after {\n content: '';\n position: absolute;\n top: 0;\n left: var(--hx-space-px, 2px);\n width: var(--_chevron-size);\n height: var(--_chevron-size);\n border-inline-end: var(--hx-border-width-thin, 1.5px) solid currentColor;\n border-bottom: var(--hx-border-width-thin, 1.5px) solid currentColor;\n transform: rotate(45deg);\n }\n\n .field--open .field__chevron {\n transform: rotate(180deg);\n }\n\n .field--error .field__trigger {\n border-color: var(--_error-color);\n }\n\n .field--error .field__trigger:focus-visible {\n border-color: var(--_error-color);\n box-shadow: 0 0 0 var(--hx-focus-ring-width, 2px)\n color-mix(\n in srgb,\n var(--_error-color) calc(var(--hx-focus-ring-opacity, 0.25) * 100%),\n transparent\n );\n }\n\n .field__listbox {\n position: absolute;\n top: calc(100% + var(--hx-space-1, 0.25rem));\n left: 0;\n right: 0;\n z-index: var(--hx-z-index-dropdown, 1000);\n background-color: var(--_listbox-bg);\n border: var(--hx-border-width-thin, 1px) solid var(--_border-color);\n border-radius: var(--_border-radius);\n box-shadow: var(\n --hx-select-listbox-shadow,\n 0 4px 16px var(--hx-overlay-neutral-12, rgba(13, 17, 23, 0.12))\n );\n max-height: var(--hx-select-listbox-max-height, 16rem);\n overflow: hidden;\n display: flex;\n flex-direction: column;\n }\n\n .field__listbox[hidden] {\n display: none;\n }\n\n .field__options {\n overflow-y: auto;\n flex: 1;\n padding: var(--hx-space-1, 0.25rem) 0;\n }\n\n .field__option {\n display: flex;\n align-items: center;\n gap: var(--hx-space-2, 0.5rem);\n padding: var(--hx-space-2, 0.5rem) var(--hx-space-3, 0.75rem);\n font-size: var(--hx-font-size-md, 1rem);\n color: var(--_color);\n cursor: pointer;\n user-select: none;\n -webkit-user-select: none;\n transition: background-color var(--hx-transition-fast, 150ms ease);\n }\n\n .field__option:hover {\n background-color: var(--_option-hover-bg);\n }\n\n .field__option--selected {\n background-color: var(--_option-selected-bg);\n font-weight: var(--hx-font-weight-medium, 500);\n }\n\n .field__option--focused {\n background-color: var(--_option-hover-bg);\n outline: var(--hx-focus-ring-width, 2px) solid\n var(--_focus-ring-color, var(--hx-color-primary-500));\n outline-offset: var(--hx-select-option-focus-ring-offset, -2px);\n }\n\n .field__option--focused.field__option--selected {\n background-color: var(--_option-selected-bg);\n }\n\n .field__option--disabled {\n opacity: var(--hx-opacity-disabled, 0.5);\n cursor: not-allowed;\n pointer-events: none;\n }\n\n .field__option-label {\n flex: 1;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n }\n\n .field__no-options {\n padding: var(--hx-space-3, 0.75rem);\n text-align: center;\n color: var(--_placeholder-color);\n font-size: var(--hx-font-size-sm, 0.875rem);\n }\n\n .field__select {\n position: absolute;\n width: 1px;\n height: 1px;\n overflow: hidden;\n opacity: 0;\n pointer-events: none;\n clip: rect(0, 0, 0, 0);\n }\n\n .field__help-text,\n .field__error {\n font-size: var(--hx-font-size-xs, 0.75rem);\n line-height: var(--hx-line-height-normal, 1.5);\n }\n\n .field__help-text {\n color: var(--hx-color-text-muted, #4a5362);\n }\n\n .field__error {\n color: var(--hx-select-error-color, var(--hx-color-error-text, #c92a2a));\n }\n\n @media (prefers-reduced-motion: reduce) {\n .field__trigger,\n .field__chevron,\n .field__option {\n transition: none;\n }\n }\n\n /* ─── High Contrast Mode (forced-colors) ─── */\n\n @media (forced-colors: active) {\n .field__trigger {\n forced-color-adjust: none;\n background-color: Field;\n color: FieldText;\n border: 2px solid ButtonText;\n }\n\n .field__trigger:focus-visible {\n outline: 3px solid Highlight;\n outline-offset: 2px;\n box-shadow: none;\n }\n\n .field__trigger[aria-disabled='true'] {\n color: GrayText;\n border-color: GrayText;\n }\n\n .field__trigger--placeholder .field__trigger-value {\n color: GrayText;\n }\n\n .field__chevron::after {\n border-color: FieldText;\n }\n\n .field__listbox {\n forced-color-adjust: none;\n background-color: Canvas;\n border: 2px solid CanvasText;\n box-shadow: none;\n }\n\n .field__option {\n color: CanvasText;\n }\n\n .field__option:hover {\n background-color: Highlight;\n color: HighlightText;\n }\n\n .field__option--selected {\n background-color: Highlight;\n color: HighlightText;\n }\n\n .field__option--focused {\n outline-color: Highlight;\n background-color: Highlight;\n color: HighlightText;\n }\n\n .field__option--disabled {\n color: GrayText;\n opacity: 1;\n }\n\n .field--error .field__trigger {\n border-color: LinkText;\n }\n\n :host([disabled]) {\n opacity: 1;\n }\n\n .field__label {\n color: CanvasText;\n }\n\n .field__help-text {\n color: GrayText;\n }\n\n .field__error {\n color: LinkText;\n }\n }\n`;\n","import { html, nothing, type PropertyValues } from 'lit';\nimport '../../utilities/document-token-adoption.js';\nimport { customElement, property, query, state } from 'lit/decorators.js';\nimport { classMap } from 'lit/directives/class-map.js';\nimport { ifDefined } from 'lit/directives/if-defined.js';\nimport { repeat } from 'lit/directives/repeat.js';\nimport { HelixElement, createIdCounter } from '../../base/index.js';\nimport { FormMixin } from '../../mixins/FormMixin.js';\nimport { helixSelectStyles } from './hx-select.styles.js';\nimport { forcedColorsField } from '../../styles/forced-colors.js';\nimport { devWarn } from '../../utils/dev-warn.js';\n\n// PERF: hx-select exceeds 5KB budget (6.31kb gzipped) -- custom listbox, keyboard navigation, grouped options\n\n// Module-level counter for stable, SSR-safe IDs (avoids Math.random() hydration mismatch)\nconst _nextSelectId = createIdCounter('hx-select');\n\n// ─── Internal option model ───\n\ninterface SelectOption {\n value: string;\n label: string;\n disabled: boolean;\n}\n\n/** Detail for the hx-change event dispatched by hx-select. */\nexport interface HxSelectChangeDetail {\n value: string;\n}\n\n/**\n * A form-associated select component with custom styling, label, error, and\n * help text. Options are provided via slotted `<option>` (and `<optgroup>`)\n * elements in the light DOM. The component wraps a hidden native `<select>`\n * for form participation and provides a combobox trigger for consistent\n * cross-browser styling.\n *\n * @remarks Multi-select is intentionally not supported. This component\n * implements a single-value select (combobox) pattern only. For multi-value\n * selection use a separate multi-select component.\n *\n * @remarks The listbox panel uses `position: absolute` and may be clipped by\n * ancestor elements with `overflow: hidden` or `overflow: auto`. This is a\n * known limitation when embedding the component inside cards, tables, or\n * dialogs. Use the CSS custom property `--hx-select-listbox-shadow` or\n * restructure the containing layout to avoid clipping.\n *\n * @summary Form-associated custom select with label, error, and help text.\n *\n * @tag hx-select\n *\n * @slot - Default slot for `<option>` and `<optgroup>` elements.\n * @slot label - Custom label content (overrides the label property).\n * @slot error - Custom error content (overrides the error property).\n * @slot help-text - Custom help text content (overrides the helpText property).\n *\n * @fires {CustomEvent<{value: string}>} hx-change - Dispatched when the selected option changes.\n *\n * @csspart field - The outer field container.\n * @csspart label - The label element.\n * @csspart select-wrapper - The wrapper containing the trigger and listbox.\n * @csspart select - The hidden native select element (kept for form participation).\n * @csspart trigger - The button that opens/closes the dropdown.\n * @csspart listbox - The dropdown panel containing options.\n * @csspart option - Individual option items in the listbox.\n * @csspart help-text - The help text container.\n * @csspart error - The error message container.\n *\n * @cssprop [--hx-select-bg=var(--hx-color-neutral-0)] - Select background color.\n * @cssprop [--hx-select-color=var(--hx-color-neutral-800)] - Select text color.\n * @cssprop [--hx-select-border-color=var(--hx-color-neutral-300)] - Select border color.\n * @cssprop [--hx-select-border-radius=var(--hx-border-radius-md)] - Select border radius.\n * @cssprop [--hx-select-font-family=var(--hx-font-family-sans)] - Select font family.\n * @cssprop [--hx-select-focus-ring-color=var(--hx-focus-ring-color)] - Focus ring color.\n * @cssprop [--hx-select-error-color=var(--hx-color-error-500)] - Error state color.\n * @cssprop [--hx-select-label-color=var(--hx-color-neutral-700)] - Label text color.\n * @cssprop [--hx-select-chevron-color=var(--hx-color-neutral-500)] - Chevron indicator color.\n * @cssprop [--hx-select-chevron-size=0.5rem] - Chevron indicator size (width/height base unit).\n * @cssprop [--hx-select-listbox-bg=var(--hx-color-neutral-0)] - Listbox panel background color.\n * @cssprop [--hx-select-option-hover-bg=var(--hx-color-primary-50)] - Option hover background color.\n * @cssprop [--hx-select-option-selected-bg=var(--hx-color-primary-100)] - Selected option background color.\n * @cssprop [--hx-select-placeholder-color=var(--hx-color-neutral-400)] - Placeholder text color.\n * @cssprop [--hx-color-neutral-0] - Color.\n * @cssprop [--hx-color-neutral-800] - Color.\n * @cssprop [--hx-color-neutral-400] - Color.\n * @cssprop [--hx-color-neutral-700] - Color.\n * @cssprop [--hx-color-neutral-300] - Color.\n * @cssprop [--hx-border-radius-md] - CSS custom property.\n * @cssprop [--hx-focus-ring-color] - Color.\n * @cssprop [--hx-color-primary-400] - Color.\n * @cssprop [--hx-color-error-500] - Color.\n * @cssprop [--hx-color-neutral-500] - Color.\n * @cssprop [--hx-color-primary-50] - Color.\n * @cssprop [--hx-color-primary-100] - Color.\n * @cssprop [--hx-font-family-sans] - Font family.\n * @cssprop [--hx-opacity-disabled] - Opacity.\n * @cssprop [--hx-space-1] - Spacing token.\n * @cssprop [--hx-font-size-sm] - Font size.\n * @cssprop [--hx-font-weight-medium] - Font weight.\n * @cssprop [--hx-line-height-normal] - Line height.\n * @cssprop [--hx-color-error-text] - Color.\n * @cssprop [--hx-font-weight-bold] - Font weight.\n * @cssprop [--hx-space-2] - Spacing token.\n * @cssprop [--hx-input-height-md] - Height.\n * @cssprop [--hx-size-10] - Size token.\n * @cssprop [--hx-border-width-thin] - Width.\n * @cssprop [--hx-font-size-md] - Font size.\n * @cssprop [--hx-space-3] - Spacing token.\n * @cssprop [--hx-transition-fast] - Transition timing.\n * @cssprop [--hx-focus-ring-width] - Width.\n * @cssprop [--hx-focus-ring-opacity] - CSS custom property.\n * @cssprop [--hx-input-height-sm] - Height.\n * @cssprop [--hx-size-8] - Size token.\n * @cssprop [--hx-input-height-lg] - Height.\n * @cssprop [--hx-size-12] - Size token.\n * @cssprop [--hx-font-size-lg] - Font size.\n * @cssprop [--hx-space-4] - Spacing token.\n * @cssprop [--hx-space-px] - Spacing token.\n * @cssprop [--hx-z-index-dropdown] - Z-index layer.\n * @cssprop [--hx-select-listbox-shadow] - CSS custom property.\n * @cssprop [--hx-overlay-neutral-12] - Overlay color.\n * @cssprop [--hx-select-listbox-max-height=16rem] - Height.\n * @cssprop [--hx-color-primary-500] - Color.\n * @cssprop [--hx-select-option-focus-ring-offset=-2px] - Focus ring styling.\n * @cssprop [--hx-font-size-xs] - Font size.\n */\n@customElement('hx-select')\nexport class HelixSelect extends FormMixin(HelixElement) {\n static override styles = [helixSelectStyles, forcedColorsField];\n\n // ─── Form Association ───\n\n /** Marks this element as form-associated for ElementInternals support. @internal */\n static override formAssociated = true;\n\n // ─── Stable IDs ───\n\n /** @internal */\n private _selectId = _nextSelectId();\n /** @internal */\n private _listboxId = `${this._selectId}-listbox`;\n /** @internal */\n private _labelId = `${this._selectId}-label`;\n /** @internal */\n private _helpTextId = `${this._selectId}-help`;\n /** @internal */\n private _errorId = `${this._selectId}-error`;\n\n // ─── Public Properties ───\n\n /**\n * The visible label text for the select.\n * @attr label\n */\n @property({ type: String })\n label = '';\n\n /**\n * Placeholder text shown in the trigger when no option is selected.\n * @attr placeholder\n */\n @property({ type: String })\n placeholder = '';\n\n /**\n * The current value of the select.\n * @attr value\n */\n @property({ type: String, reflect: true })\n value = '';\n\n /**\n * Whether the select is required for form submission.\n * @attr required\n */\n @property({ type: Boolean, reflect: true })\n required = false;\n\n /**\n * Whether the select is disabled.\n * @attr disabled\n */\n @property({ type: Boolean, reflect: true })\n disabled = false;\n\n /**\n * The name used for form submission.\n * @attr name\n */\n @property({ type: String, reflect: true })\n name = '';\n\n /**\n * Error message to display. When set, the field enters an error state.\n * @attr error\n */\n @property({ type: String })\n error = '';\n\n /**\n * Help text displayed below the select for guidance.\n * @attr help-text\n */\n @property({ type: String, attribute: 'help-text' })\n helpText = '';\n\n /**\n * Size variant of the select trigger.\n * @attr hx-size\n */\n @property({ type: String, attribute: 'hx-size', reflect: true })\n size: 'sm' | 'md' | 'lg' = 'md';\n\n /**\n * Accessible name for screen readers, if different from the visible label.\n * Uses `accessible-label` attribute instead of `aria-label` to avoid\n * ARIAMixin shadowing on the host element.\n *\n * Note: `mixinDelegatesAria` is not applied to this component because form\n * inputs with associated labels delegate accessible naming via `<label>`\n * association and `aria-labelledby`, not host-level ARIA delegation. The\n * `accessible-label` attribute is a fallback for label-free usage. The value is forwarded to the\n * internal trigger button's `aria-label`.\n * @attr accessible-label\n */\n @property({ type: String, attribute: 'accessible-label' })\n accessibleLabel: string | null = null;\n\n /**\n * Controls whether the dropdown listbox is open.\n * @attr open\n */\n @property({ type: Boolean, reflect: true })\n open = false;\n\n /**\n * Validation message when no option is selected. Override for i18n.\n * @attr label-required\n */\n @property({ attribute: 'label-required' }) labelRequired = 'Please select an option.';\n\n /**\n * Label shown when no options are available. Override for i18n.\n * @attr label-no-options\n */\n @property({ attribute: 'label-no-options' }) labelNoOptions = 'No options found';\n\n // ─── Internal State ───\n\n /** Parsed option models derived from slotted `<option>` and `<optgroup>` elements. @internal */\n @state() private _options: SelectOption[] = [];\n /** Whether the named error slot contains projected content. @internal */\n @state() private _hasErrorSlot = false;\n /** Zero-based index of the keyboard-focused option in the listbox; -1 means none. @internal */\n @state() private _focusedOptionIndex = -1;\n\n // ─── Queries ───\n\n /** Reference to the hidden native select element used for form participation. @internal */\n @query('.field__select')\n private _select: HTMLSelectElement | undefined;\n\n /** Reference to the visible combobox trigger element that receives keyboard focus. @internal */\n @query('.field__trigger')\n private _trigger: HTMLElement | undefined;\n\n // ─── Computed helpers ───\n\n /** @internal */\n private get _displayValue(): string {\n if (!this.value) return '';\n const opt = this._options.find((o) => o.value === this.value);\n return opt ? opt.label : this.value;\n }\n\n // ─── Lifecycle ───\n\n override disconnectedCallback(): void {\n super.disconnectedCallback();\n // Safety net: remove listener if component is removed while dropdown is open\n document.removeEventListener('click', this._handleOutsideClick);\n // Reset open state to prevent persisted open state on reconnect\n if (this.open) {\n this.open = false;\n this._focusedOptionIndex = -1;\n }\n }\n\n override updated(changedProperties: PropertyValues<this>): void {\n super.updated(changedProperties);\n if (changedProperties.has('open')) {\n if (this.open) {\n document.addEventListener('click', this._handleOutsideClick);\n } else {\n document.removeEventListener('click', this._handleOutsideClick);\n }\n }\n if (changedProperties.has('value')) {\n this._syncNativeSelect();\n this._updateFormValue();\n }\n if (changedProperties.has('size')) {\n const validSizes: string[] = ['sm', 'md', 'lg'];\n if (!validSizes.includes(this.size)) {\n devWarn(\n 'hx-select',\n `Invalid size \"${this.size}\". Expected one of: ${validSizes.join(', ')}.`,\n );\n }\n }\n // Force screen reader re-announcement when error text changes (a11y-v3-005)\n if (changedProperties.has('error') && this.error) {\n const errorEl = this.shadowRoot?.querySelector('[role=\"alert\"]');\n if (errorEl) {\n const msg = this.error;\n requestAnimationFrame(() => {\n errorEl.textContent = '';\n requestAnimationFrame(() => {\n errorEl.textContent = msg;\n });\n });\n }\n }\n }\n\n // ─── Form Integration ───\n\n /** @internal */\n private _updateFormValue(): void {\n this._internals.setFormValue(this.value || null);\n }\n\n /** @internal */\n override _updateValidity(): void {\n if (this.required && !this.value) {\n this._internals.setValidity(\n { valueMissing: true },\n this.error || this.labelRequired,\n this._trigger ?? this._select,\n );\n } else {\n this._internals.setValidity({});\n }\n }\n\n // ─── Form Lifecycle Hooks ───\n\n protected override _onFormReset(): void {\n this.value = '';\n this._internals.setFormValue(null);\n this._resetInteractionState();\n }\n\n protected override _onFormStateRestore(\n state: File | string | FormData | null,\n _mode: 'restore' | 'autocomplete',\n ): void {\n if (typeof state === 'string') {\n this.value = state;\n }\n }\n\n protected override _onFormDisabled(disabled: boolean): void {\n this.disabled = disabled;\n }\n\n // ─── Native Select Sync ───\n\n /** @internal */\n private _syncNativeSelect(): void {\n if (!this._select) return;\n if (this.value) {\n this._select.value = this.value;\n }\n }\n\n // ─── Option Syncing from Slot ───\n\n /** @internal */\n private _parseOption(el: HTMLOptionElement): SelectOption {\n return { value: el.value, label: el.textContent?.trim() ?? el.value, disabled: el.disabled };\n }\n\n /**\n * Single-pass slot handler: reads options into _options for the custom\n * listbox AND clones them into the native <select> for form participation.\n * Handles both top-level <option> and <optgroup> children.\n */\n /** @internal */\n private _handleSlotChange(): void {\n const slot = this.shadowRoot?.querySelector<HTMLSlotElement>('slot:not([name])');\n if (!slot) return;\n\n const parsed: SelectOption[] = [];\n\n // Remove previously cloned options from native select\n if (this._select) {\n this._select.querySelectorAll('option[data-cloned]').forEach((opt) => opt.remove());\n }\n\n const cloneIntoSelect = (optEl: HTMLOptionElement): void => {\n if (!this._select) return;\n const clone = optEl.cloneNode(true) as HTMLOptionElement;\n clone.setAttribute('data-cloned', '');\n this._select.appendChild(clone);\n };\n\n for (const el of slot.assignedElements({ flatten: true })) {\n if (el instanceof HTMLOptionElement) {\n parsed.push(this._parseOption(el));\n cloneIntoSelect(el);\n } else if (el instanceof HTMLOptGroupElement) {\n for (const child of Array.from(el.children)) {\n if (child instanceof HTMLOptionElement) {\n parsed.push(this._parseOption(child));\n cloneIntoSelect(child);\n }\n }\n }\n }\n\n this._options = parsed;\n\n if (parsed.length === 0) {\n devWarn(\n 'hx-select',\n 'hx-select has no options — add <option> or <optgroup> elements as children.',\n );\n }\n\n if (this._select) {\n if (this.value) {\n this._select.value = this.value;\n } else if (!this.placeholder && parsed.length > 0) {\n this.value = this._select.value;\n this._updateFormValue();\n }\n }\n }\n\n // ─── Slot Change Handlers ───\n\n /** @internal */\n private _handleErrorSlotChange(e: Event): void {\n const slot = e.target as HTMLSlotElement;\n this._hasErrorSlot = slot.assignedNodes({ flatten: true }).length > 0;\n }\n\n // ─── Dropdown Control ───\n\n /** @internal */\n private _toggleDropdown(): void {\n if (!this.disabled) {\n this.open = !this.open;\n if (this.open) {\n // Pre-focus the currently selected option (or first enabled) when opening\n const selectedIndex = this._options.findIndex((o) => o.value === this.value);\n this._focusedOptionIndex = selectedIndex >= 0 ? selectedIndex : 0;\n } else {\n this._focusedOptionIndex = -1;\n }\n }\n }\n\n // ─── Keyboard Navigation ───\n\n /** @internal */\n private _handleKeydown(e: KeyboardEvent): void {\n if (this.disabled) return;\n\n const enabledIndices = this._options\n .map((o, i) => ({ o, i }))\n .filter(({ o }) => !o.disabled)\n .map(({ i }) => i);\n\n switch (e.key) {\n case 'ArrowDown': {\n e.preventDefault();\n if (!this.open) {\n this.open = true;\n this._focusedOptionIndex = enabledIndices.length > 0 ? (enabledIndices[0] ?? 0) : 0;\n break;\n }\n const nextDown = enabledIndices.find((i) => i > this._focusedOptionIndex);\n this._focusedOptionIndex =\n nextDown !== undefined ? nextDown : (enabledIndices[0] ?? this._focusedOptionIndex);\n break;\n }\n case 'ArrowUp': {\n e.preventDefault();\n if (!this.open) {\n this.open = true;\n const lastEnabled = enabledIndices[enabledIndices.length - 1];\n this._focusedOptionIndex = lastEnabled !== undefined ? lastEnabled : 0;\n break;\n }\n const prevUp = [...enabledIndices].reverse().find((i) => i < this._focusedOptionIndex);\n const lastEnabledUp = enabledIndices[enabledIndices.length - 1];\n this._focusedOptionIndex =\n prevUp !== undefined ? prevUp : (lastEnabledUp ?? this._focusedOptionIndex);\n break;\n }\n case 'Home': {\n e.preventDefault();\n if (!this.open) {\n this.open = true;\n }\n this._focusedOptionIndex = enabledIndices.length > 0 ? (enabledIndices[0] ?? 0) : 0;\n break;\n }\n case 'End': {\n e.preventDefault();\n if (!this.open) {\n this.open = true;\n }\n const lastEnabled = enabledIndices[enabledIndices.length - 1];\n this._focusedOptionIndex = lastEnabled !== undefined ? lastEnabled : 0;\n break;\n }\n case 'Enter':\n case ' ': {\n e.preventDefault();\n if (!this.open) {\n this.open = true;\n const selIdx = this._options.findIndex((o) => o.value === this.value);\n this._focusedOptionIndex = selIdx >= 0 ? selIdx : (enabledIndices[0] ?? 0);\n break;\n }\n if (this._focusedOptionIndex >= 0 && this._focusedOptionIndex < this._options.length) {\n const opt = this._options[this._focusedOptionIndex];\n if (opt) this._selectOption(opt);\n }\n break;\n }\n case 'Escape': {\n e.preventDefault();\n this.open = false;\n this._focusedOptionIndex = -1;\n this._trigger?.focus();\n break;\n }\n case 'Tab': {\n // Close the dropdown but allow Tab to move focus naturally\n if (this.open) {\n this.open = false;\n this._focusedOptionIndex = -1;\n }\n break;\n }\n default: {\n // Typeahead: single printable character jumps to first matching option\n if (!e.ctrlKey && !e.metaKey && !e.altKey && e.key.length === 1) {\n const char = e.key.toLowerCase();\n const startIndex = this.open ? this._focusedOptionIndex + 1 : 0;\n const matching = this._options\n .map((o, i) => ({ o, i }))\n .filter(({ o }) => !o.disabled && o.label.toLowerCase().startsWith(char));\n const afterCurrent = matching.find(({ i }) => i >= startIndex);\n const target = afterCurrent ?? matching[0];\n if (target) {\n if (!this.open) {\n this.open = true;\n }\n this._focusedOptionIndex = target.i;\n e.preventDefault();\n }\n }\n break;\n }\n }\n }\n\n // ─── Selection ───\n\n /** @internal */\n private _selectOption(option: SelectOption): void {\n if (option.disabled) return;\n this.value = option.value; // triggers updated() → sync + formValue + validity\n this._handleInteractionInput();\n this._handleInteractionBlur();\n this._dispatchChange();\n this.open = false;\n this._focusedOptionIndex = -1;\n }\n\n // ─── Event Dispatchers ───\n\n /** @internal */\n private _dispatchChange(): void {\n this.dispatchEvent(\n new CustomEvent<{ value: string }>('hx-change', {\n bubbles: true,\n composed: true,\n detail: { value: this.value },\n }),\n );\n }\n\n /** @internal */\n private _handleNativeChange(e: Event): void {\n this.value = (e.target as HTMLSelectElement).value; // triggers updated()\n this._handleInteractionInput();\n this._handleInteractionBlur();\n this._dispatchChange();\n }\n\n // ─── Outside Click Handler ───\n\n /** @internal */\n private _handleOutsideClick = (e: MouseEvent): void => {\n if (this.open && !e.composedPath().includes(this)) {\n this.open = false;\n }\n };\n\n // ─── Public Methods ───\n\n /** Moves focus to the visible trigger button. */\n override focus(options?: FocusOptions): void {\n this._trigger?.focus(options);\n }\n\n // ─── Render Helpers ───\n\n /** @internal */\n private _optionId(index: number): string {\n return `hx-select-option-${this._selectId}-${index}`;\n }\n\n /** @internal */\n private _renderOptions() {\n if (this._options.length === 0) {\n return html`<div class=\"field__no-options\">${this.labelNoOptions}</div>`;\n }\n\n return repeat(\n this._options,\n (opt) => opt.value,\n (opt, index) => {\n const isSelected = opt.value === this.value;\n const isFocused = index === this._focusedOptionIndex;\n\n return html`\n <div\n id=${this._optionId(index)}\n part=\"option\"\n role=\"option\"\n class=${classMap({\n field__option: true,\n 'field__option--selected': isSelected,\n 'field__option--focused': isFocused,\n 'field__option--disabled': opt.disabled,\n })}\n aria-selected=${isSelected ? 'true' : 'false'}\n aria-disabled=${opt.disabled ? 'true' : nothing}\n @click=${() => this._selectOption(opt)}\n >\n <span class=\"field__option-label\">${opt.label}</span>\n </div>\n `;\n },\n );\n }\n\n // ─── Main Render ───\n\n override render() {\n const hasError = !!this.error || this._hasErrorSlot;\n\n const fieldClasses = {\n field: true,\n 'field--error': hasError,\n 'field--disabled': this.disabled,\n 'field--required': this.required,\n 'field--open': this.open,\n };\n\n const triggerClasses = {\n field__trigger: true,\n [`field__trigger--${this.size}`]: true,\n 'field__trigger--placeholder': !this.value,\n };\n\n const selectClasses = {\n field__select: true,\n [`field__select--${this.size}`]: true,\n };\n\n const describedBy =\n [\n hasError || this._hasErrorSlot ? this._errorId : null,\n this.helpText ? this._helpTextId : null,\n ]\n .filter(Boolean)\n .join(' ') || undefined;\n\n return html`\n <div part=\"field\" class=${classMap(fieldClasses)}>\n <!-- Label -->\n <slot name=\"label\">\n ${this.label\n ? html`<label\n part=\"label\"\n class=\"field__label\"\n id=${this._labelId}\n for=${this._selectId}\n >\n ${this.label}\n ${this.required\n ? html`<span class=\"field__required-marker\" aria-hidden=\"true\">*</span>`\n : nothing}\n </label>`\n : nothing}\n </slot>\n\n <!-- Select Wrapper: trigger + listbox -->\n <div part=\"select-wrapper\" class=\"field__select-wrapper\">\n <!-- Custom Trigger (combobox — div to avoid native role conflicts per APG) -->\n <div\n part=\"trigger\"\n id=${this._selectId}\n class=${classMap(triggerClasses)}\n role=\"combobox\"\n tabindex=${this.disabled ? '-1' : '0'}\n aria-expanded=${this.open ? 'true' : 'false'}\n aria-haspopup=\"listbox\"\n aria-controls=${this._listboxId}\n aria-activedescendant=${this.open && this._focusedOptionIndex >= 0\n ? this._optionId(this._focusedOptionIndex)\n : nothing}\n aria-invalid=${hasError ? 'true' : nothing}\n aria-describedby=${ifDefined(describedBy)}\n aria-required=${this.required ? 'true' : nothing}\n aria-disabled=${this.disabled ? 'true' : nothing}\n aria-labelledby=${ifDefined(this.label ? this._labelId : undefined)}\n aria-label=${ifDefined(this.accessibleLabel ?? undefined)}\n @click=${this._toggleDropdown}\n @keydown=${this._handleKeydown}\n >\n <span class=\"field__trigger-value\"\n >${this._displayValue || this.placeholder || nothing}</span\n >\n <span class=\"field__chevron\" aria-hidden=\"true\"></span>\n </div>\n\n <!-- Custom Listbox Panel -->\n <div\n part=\"listbox\"\n role=\"listbox\"\n id=${this._listboxId}\n class=\"field__listbox\"\n aria-label=${ifDefined(this.label || this.accessibleLabel || undefined)}\n ?hidden=${!this.open}\n >\n <div class=\"field__options\">${this._renderOptions()}</div>\n </div>\n\n <!-- Hidden native select (form participation + test compat) -->\n <select\n part=\"select\"\n class=${classMap(selectClasses)}\n tabindex=\"-1\"\n aria-hidden=\"true\"\n ?required=${this.required}\n ?disabled=${this.disabled}\n name=${ifDefined(this.name || undefined)}\n aria-label=${ifDefined(this.accessibleLabel ?? undefined)}\n aria-invalid=${hasError ? 'true' : nothing}\n aria-describedby=${ifDefined(describedBy)}\n aria-required=${this.required ? 'true' : nothing}\n @change=${this._handleNativeChange}\n >\n ${this.placeholder\n ? html`<option value=\"\" disabled selected>${this.placeholder}</option>`\n : nothing}\n </select>\n </div>\n\n <!-- Hidden slot (options are read from here) -->\n <slot @slotchange=${this._handleSlotChange} style=\"display:none;\"></slot>\n\n <!-- Error -->\n <slot name=\"error\" @slotchange=${this._handleErrorSlotChange}>\n ${hasError\n ? html`<div part=\"error\" class=\"field__error\" id=${this._errorId} role=\"alert\">\n ${this.error}\n </div>`\n : nothing}\n </slot>\n\n <!-- Help Text -->\n ${this.helpText && !hasError\n ? html`\n <div part=\"help-text\" class=\"field__help-text\" id=${this._helpTextId}>\n <slot name=\"help-text\">${this.helpText}</slot>\n </div>\n `\n : nothing}\n </div>\n `;\n }\n}\n\n/**\n * Per-component event map for type-safe addEventListener on hx-select.\n * The `hx-change` detail is `{ value: string }` only — no `checked` property.\n */\nexport interface HxSelectEventMap {\n 'hx-change': CustomEvent<{ value: string }>;\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'hx-select': HelixSelect;\n }\n}\n\nexport type { HelixSelect as HxSelect };\n"],"names":["helixSelectStyles","css","_nextSelectId","createIdCounter","HelixSelect","FormMixin","HelixElement","opt","o","changedProperties","validSizes","devWarn","errorEl","_a","msg","state","_mode","disabled","el","slot","parsed","cloneIntoSelect","optEl","clone","child","selectedIndex","enabledIndices","i","nextDown","lastEnabled","prevUp","lastEnabledUp","selIdx","char","startIndex","matching","target","option","options","index","html","repeat","isSelected","isFocused","classMap","nothing","hasError","fieldClasses","triggerClasses","selectClasses","describedBy","ifDefined","forcedColorsField","__decorateClass","property","query","customElement"],"mappings":";;;;;;;;;;AAEO,MAAMA,IAAoBC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AA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"}
@@ -1,9 +1,10 @@
1
- import { css as p, html as l } from "lit";
1
+ import { css as p, html as h } from "lit";
2
2
  import { property as i, customElement as u } from "lit/decorators.js";
3
3
  import { classMap as c } from "lit/directives/class-map.js";
4
4
  import { styleMap as m } from "lit/directives/style-map.js";
5
- import { H as v } from "./helix-element-BNEYeiys.js";
6
- const x = p`
5
+ import { a as v } from "./forced-colors-CTEDFRGa.js";
6
+ import { H as b } from "./helix-element-BNEYeiys.js";
7
+ const f = p`
7
8
  :host {
8
9
  display: block;
9
10
  }
@@ -16,7 +17,7 @@ const x = p`
16
17
 
17
18
  .skeleton {
18
19
  display: block;
19
- background-color: var(--hx-skeleton-bg, var(--hx-color-neutral-200, #e2e8f0));
20
+ background-color: var(--hx-skeleton-bg, var(--hx-color-neutral-200, #d6dbd5));
20
21
  overflow: hidden;
21
22
  position: relative;
22
23
  width: var(--_width, 100%);
@@ -98,12 +99,12 @@ const x = p`
98
99
  }
99
100
  }
100
101
  `;
101
- var b = Object.defineProperty, g = Object.getOwnPropertyDescriptor, o = (t, r, n, s) => {
102
- for (var a = s > 1 ? void 0 : s ? g(r, n) : r, d = t.length - 1, h; d >= 0; d--)
103
- (h = t[d]) && (a = (s ? h(r, n, a) : h(a)) || a);
104
- return s && a && b(r, n, a), a;
102
+ var x = Object.defineProperty, g = Object.getOwnPropertyDescriptor, o = (t, r, n, s) => {
103
+ for (var a = s > 1 ? void 0 : s ? g(r, n) : r, d = t.length - 1, l; d >= 0; d--)
104
+ (l = t[d]) && (a = (s ? l(r, n, a) : l(a)) || a);
105
+ return s && a && x(r, n, a), a;
105
106
  };
106
- let e = class extends v {
107
+ let e = class extends b {
107
108
  constructor() {
108
109
  super(...arguments), this.variant = "rect", this.width = "100%", this.height = void 0, this.animated = !0, this.loaded = !1;
109
110
  }
@@ -122,7 +123,7 @@ let e = class extends v {
122
123
  // ─── Render ───
123
124
  render() {
124
125
  if (this.loaded)
125
- return l``;
126
+ return h``;
126
127
  const t = {
127
128
  skeleton: !0,
128
129
  [`skeleton--${this.variant}`]: !0,
@@ -130,7 +131,7 @@ let e = class extends v {
130
131
  }, r = {
131
132
  "--_width": this.width
132
133
  };
133
- return this.height !== void 0 && (r["--_height"] = this.height), l`
134
+ return this.height !== void 0 && (r["--_height"] = this.height), h`
134
135
  <span
135
136
  part="base"
136
137
  class=${c(t)}
@@ -141,7 +142,7 @@ let e = class extends v {
141
142
  `;
142
143
  }
143
144
  };
144
- e.styles = [x];
145
+ e.styles = [f, v];
145
146
  o([
146
147
  i({ type: String, reflect: !0 })
147
148
  ], e.prototype, "variant", 2);
@@ -163,4 +164,4 @@ e = o([
163
164
  export {
164
165
  e as H
165
166
  };
166
- //# sourceMappingURL=hx-skeleton-LxkI0pxr.js.map
167
+ //# sourceMappingURL=hx-skeleton-Cnieh5Uc.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hx-skeleton-Cnieh5Uc.js","sources":["../../src/components/hx-skeleton/hx-skeleton.styles.ts","../../src/components/hx-skeleton/hx-skeleton.ts"],"sourcesContent":["import { css } from 'lit';\n\nexport const helixSkeletonStyles = css`\n :host {\n display: block;\n }\n\n :host([loaded]) {\n display: none;\n }\n\n /* ─── Base ─── */\n\n .skeleton {\n display: block;\n background-color: var(--hx-skeleton-bg, var(--hx-color-neutral-200, #d6dbd5));\n overflow: hidden;\n position: relative;\n width: var(--_width, 100%);\n height: var(--_height, auto);\n }\n\n /* ─── Variant Shapes ─── */\n\n .skeleton--text {\n border-radius: var(--hx-skeleton-text-radius, var(--hx-border-radius-full, 9999px));\n height: var(--_height, 1em);\n }\n\n .skeleton--circle {\n border-radius: var(--hx-skeleton-border-radius-circle, 50%);\n aspect-ratio: var(--_circle-aspect-ratio, 1);\n width: var(--_width, 2.5rem);\n height: var(--_height, var(--_width, 2.5rem));\n }\n\n .skeleton--rect {\n border-radius: var(--hx-skeleton-rect-radius, var(--hx-border-radius-sm, 0.25rem));\n height: var(--_height, 1rem);\n }\n\n .skeleton--button {\n border-radius: var(--hx-skeleton-button-radius, var(--hx-border-radius-md, 0.375rem));\n height: var(--_height, 2.5rem);\n }\n\n .skeleton--paragraph {\n border-radius: var(--hx-skeleton-text-radius, var(--hx-border-radius-full, 9999px));\n height: var(--_height, auto);\n display: flex;\n flex-direction: column;\n gap: 0.5em;\n }\n\n /* ─── Shimmer Animation ─── */\n\n .skeleton--animated::after {\n content: '';\n position: absolute;\n inset: 0;\n background: linear-gradient(\n 90deg,\n transparent 0%,\n var(--hx-skeleton-shimmer-color, var(--hx-overlay-white-40, rgba(255, 255, 255, 0.4))) 50%,\n transparent 100%\n );\n background-size: var(--hx-skeleton-shimmer-width, 200%) 100%;\n animation: hx-skeleton-shimmer var(--hx-skeleton-duration, 1.5s) ease-in-out infinite;\n }\n\n @keyframes hx-skeleton-shimmer {\n from {\n background-position: 200% center;\n }\n to {\n background-position: -200% center;\n }\n }\n\n @media (prefers-reduced-motion: reduce) {\n .skeleton--animated::after {\n display: none;\n }\n }\n\n /* ─── Forced Colors (Windows High Contrast) ─── */\n\n @media (forced-colors: active) {\n .skeleton {\n border: 1px solid GrayText;\n }\n\n .skeleton--animated::after {\n display: none;\n }\n }\n`;\n","import { html, type PropertyValues } from 'lit';\nimport '../../utilities/document-token-adoption.js';\nimport { customElement, property } from 'lit/decorators.js';\nimport { classMap } from 'lit/directives/class-map.js';\nimport { styleMap } from 'lit/directives/style-map.js';\nimport { HelixElement } from '../../base/index.js';\nimport { helixSkeletonStyles } from './hx-skeleton.styles.js';\nimport { forcedColorsSurface } from '../../styles/forced-colors.js';\n\n/**\n * An animated placeholder used to indicate loading content.\n * Purely decorative — hidden from assistive technology.\n * Supports a `loaded` state that announces content availability to screen readers.\n *\n * @summary Animated shimmer placeholder for loading states.\n *\n * @tag hx-skeleton\n *\n * @csspart base - The inner skeleton element.\n *\n * @cssprop [--hx-skeleton-bg=var(--hx-color-neutral-200)] - Skeleton background color.\n * @cssprop [--hx-skeleton-shimmer-color=rgba(255,255,255,0.4)] - Shimmer highlight color.\n * @cssprop [--hx-skeleton-shimmer-width=200%] - Shimmer sweep width (background-size X axis).\n * @cssprop [--hx-skeleton-duration=1.5s] - Shimmer animation duration.\n * @cssprop [--hx-skeleton-text-radius=var(--hx-border-radius-full)] - Border radius for text variant.\n * @cssprop [--hx-skeleton-rect-radius=var(--hx-border-radius-sm)] - Border radius for rect variant.\n * @cssprop [--hx-skeleton-button-radius=var(--hx-border-radius-md)] - Border radius for button variant.\n * @cssprop [--hx-skeleton-border-radius-circle=50%] - Border radius for circle variant.\n *\n * @fires hx-loaded - Dispatched when `loaded` transitions to `true`. Consumers should use\n * this event to update an external `aria-live` region announcing content availability.\n * @cssprop [--hx-color-neutral-200] - Color.\n * @cssprop [--hx-border-radius-full] - CSS custom property.\n * @cssprop [--hx-border-radius-sm] - CSS custom property.\n * @cssprop [--hx-border-radius-md] - CSS custom property.\n * @cssprop [--hx-overlay-white-40] - Overlay color.\n */\n@customElement('hx-skeleton')\nexport class HelixSkeleton extends HelixElement {\n static override styles = [helixSkeletonStyles, forcedColorsSurface];\n\n /**\n * Shape variant of the skeleton placeholder.\n * @attr variant\n */\n @property({ type: String, reflect: true })\n variant: 'text' | 'circle' | 'rect' | 'button' | 'paragraph' = 'rect';\n\n /**\n * CSS width of the skeleton. Accepts any valid CSS width value.\n * @attr width\n */\n @property({ type: String })\n width = '100%';\n\n /**\n * CSS height of the skeleton. Accepts any valid CSS height value.\n * Defaults vary by variant when not set.\n * @attr height\n */\n @property({ type: String })\n height: string | undefined = undefined;\n\n /**\n * Whether the shimmer wave animation is active.\n * Set to false to display a static skeleton.\n * @attr animated\n */\n @property({ type: Boolean, reflect: true })\n animated = true;\n\n /**\n * When true, hides the skeleton and dispatches an `hx-loaded` event.\n * Consumers should pair this with an external `aria-live` region to\n * announce loading completion to assistive technology users.\n *\n * @example\n * ```html\n * <div aria-live=\"polite\" aria-atomic=\"true\" id=\"status\"></div>\n * <hx-skeleton id=\"sk\"></hx-skeleton>\n * <script>\n * document.getElementById('sk').addEventListener('hx-loaded', () => {\n * document.getElementById('status').textContent = 'Content has loaded.';\n * });\n * </script>\n * ```\n * @attr loaded\n */\n @property({ type: Boolean, reflect: true })\n loaded = false;\n\n // ─── Lifecycle ───\n\n override connectedCallback() {\n super.connectedCallback();\n // Hide the skeleton host from the accessibility tree entirely (P1-01).\n // Some AT + browser combinations traverse shadow hosts even when children\n // are aria-hidden. Setting on the host ensures full concealment.\n this.setAttribute('aria-hidden', 'true');\n }\n\n override updated(changedProperties: PropertyValues<this>) {\n super.updated(changedProperties);\n if (changedProperties.has('loaded') && this.loaded) {\n this.dispatchEvent(\n new CustomEvent<void>('hx-loaded', {\n bubbles: true,\n composed: true,\n }),\n );\n }\n }\n\n // ─── Render ───\n\n override render() {\n // When loaded, render nothing — the skeleton is replaced by real content.\n if (this.loaded) {\n return html``;\n }\n\n const classes = {\n skeleton: true,\n [`skeleton--${this.variant}`]: true,\n 'skeleton--animated': this.animated,\n };\n\n const styles: Record<string, string> = {\n '--_width': this.width,\n };\n if (this.height !== undefined) {\n styles['--_height'] = this.height;\n }\n\n return html`\n <span\n part=\"base\"\n class=${classMap(classes)}\n style=${styleMap(styles)}\n aria-hidden=\"true\"\n role=\"presentation\"\n ></span>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'hx-skeleton': HelixSkeleton;\n }\n}\n"],"names":["helixSkeletonStyles","css","HelixSkeleton","HelixElement","changedProperties","html","classes","styles","classMap","styleMap","forcedColorsSurface","__decorateClass","property","customElement"],"mappings":";;;;;;AAEO,MAAMA,IAAsBC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;;ACoC5B,IAAMC,IAAN,cAA4BC,EAAa;AAAA,EAAzC,cAAA;AAAA,UAAA,GAAA,SAAA,GAQL,KAAA,UAA+D,QAO/D,KAAA,QAAQ,QAQR,KAAA,SAA6B,QAQ7B,KAAA,WAAW,IAoBX,KAAA,SAAS;AAAA,EAAA;AAAA;AAAA,EAIA,oBAAoB;AAC3B,UAAM,kBAAA,GAIN,KAAK,aAAa,eAAe,MAAM;AAAA,EACzC;AAAA,EAES,QAAQC,GAAyC;AACxD,UAAM,QAAQA,CAAiB,GAC3BA,EAAkB,IAAI,QAAQ,KAAK,KAAK,UAC1C,KAAK;AAAA,MACH,IAAI,YAAkB,aAAa;AAAA,QACjC,SAAS;AAAA,QACT,UAAU;AAAA,MAAA,CACX;AAAA,IAAA;AAAA,EAGP;AAAA;AAAA,EAIS,SAAS;AAEhB,QAAI,KAAK;AACP,aAAOC;AAGT,UAAMC,IAAU;AAAA,MACd,UAAU;AAAA,MACV,CAAC,aAAa,KAAK,OAAO,EAAE,GAAG;AAAA,MAC/B,sBAAsB,KAAK;AAAA,IAAA,GAGvBC,IAAiC;AAAA,MACrC,YAAY,KAAK;AAAA,IAAA;AAEnB,WAAI,KAAK,WAAW,WAClBA,EAAO,WAAW,IAAI,KAAK,SAGtBF;AAAA;AAAA;AAAA,gBAGKG,EAASF,CAAO,CAAC;AAAA,gBACjBG,EAASF,CAAM,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA,EAK9B;AACF;AA1GaL,EACK,SAAS,CAACF,GAAqBU,CAAmB;AAOlEC,EAAA;AAAA,EADCC,EAAS,EAAE,MAAM,QAAQ,SAAS,IAAM;AAAA,GAP9BV,EAQX,WAAA,WAAA,CAAA;AAOAS,EAAA;AAAA,EADCC,EAAS,EAAE,MAAM,OAAA,CAAQ;AAAA,GAdfV,EAeX,WAAA,SAAA,CAAA;AAQAS,EAAA;AAAA,EADCC,EAAS,EAAE,MAAM,OAAA,CAAQ;AAAA,GAtBfV,EAuBX,WAAA,UAAA,CAAA;AAQAS,EAAA;AAAA,EADCC,EAAS,EAAE,MAAM,SAAS,SAAS,IAAM;AAAA,GA9B/BV,EA+BX,WAAA,YAAA,CAAA;AAoBAS,EAAA;AAAA,EADCC,EAAS,EAAE,MAAM,SAAS,SAAS,IAAM;AAAA,GAlD/BV,EAmDX,WAAA,UAAA,CAAA;AAnDWA,IAANS,EAAA;AAAA,EADNE,EAAc,aAAa;AAAA,GACfX,CAAA;"}