@helixui/library 3.3.1 → 3.4.0-next.123

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 (330) hide show
  1. package/custom-elements.json +340 -71
  2. package/dist/components/hx-accordion/hx-accordion-item.d.ts +35 -0
  3. package/dist/components/hx-accordion/hx-accordion-item.d.ts.map +1 -1
  4. package/dist/components/hx-alert/hx-alert.d.ts +11 -0
  5. package/dist/components/hx-alert/hx-alert.d.ts.map +1 -1
  6. package/dist/components/hx-alert/hx-alert.styles.d.ts.map +1 -1
  7. package/dist/components/hx-alert/index.js +1 -1
  8. package/dist/components/hx-badge/hx-badge.styles.d.ts.map +1 -1
  9. package/dist/components/hx-badge/index.js +1 -1
  10. package/dist/components/hx-banner/hx-banner.d.ts +9 -1
  11. package/dist/components/hx-banner/hx-banner.d.ts.map +1 -1
  12. package/dist/components/hx-banner/index.js +1 -1
  13. package/dist/components/hx-button/hx-button.d.ts +11 -1
  14. package/dist/components/hx-button/hx-button.d.ts.map +1 -1
  15. package/dist/components/hx-button/index.js +1 -1
  16. package/dist/components/hx-button-group/hx-button-group.d.ts +22 -0
  17. package/dist/components/hx-button-group/hx-button-group.d.ts.map +1 -1
  18. package/dist/components/hx-button-group/index.js +1 -1
  19. package/dist/components/hx-card/hx-card.d.ts +68 -0
  20. package/dist/components/hx-card/hx-card.d.ts.map +1 -1
  21. package/dist/components/hx-card/hx-card.styles.d.ts.map +1 -1
  22. package/dist/components/hx-card/index.js +1 -1
  23. package/dist/components/hx-checkbox/hx-checkbox.d.ts +153 -1
  24. package/dist/components/hx-checkbox/hx-checkbox.d.ts.map +1 -1
  25. package/dist/components/hx-checkbox/hx-checkbox.styles.d.ts.map +1 -1
  26. package/dist/components/hx-checkbox/index.js +1 -1
  27. package/dist/components/hx-checkbox-group/hx-checkbox-group.d.ts +151 -2
  28. package/dist/components/hx-checkbox-group/hx-checkbox-group.d.ts.map +1 -1
  29. package/dist/components/hx-checkbox-group/index.js +1 -1
  30. package/dist/components/hx-color-picker/hx-color-picker.d.ts +163 -1
  31. package/dist/components/hx-color-picker/hx-color-picker.d.ts.map +1 -1
  32. package/dist/components/hx-color-picker/hx-color-picker.styles.d.ts.map +1 -1
  33. package/dist/components/hx-color-picker/index.js +1 -1
  34. package/dist/components/hx-combobox/hx-combobox.d.ts +311 -2
  35. package/dist/components/hx-combobox/hx-combobox.d.ts.map +1 -1
  36. package/dist/components/hx-combobox/index.js +1 -1
  37. package/dist/components/hx-data-table/hx-data-table.d.ts.map +1 -1
  38. package/dist/components/hx-data-table/index.js +1 -1
  39. package/dist/components/hx-date-picker/hx-date-picker.d.ts +182 -56
  40. package/dist/components/hx-date-picker/hx-date-picker.d.ts.map +1 -1
  41. package/dist/components/hx-date-picker/hx-date-picker.styles.d.ts.map +1 -1
  42. package/dist/components/hx-date-picker/index.js +1 -1
  43. package/dist/components/hx-dialog/hx-dialog.d.ts +240 -0
  44. package/dist/components/hx-dialog/hx-dialog.d.ts.map +1 -1
  45. package/dist/components/hx-dialog/index.js +1 -1
  46. package/dist/components/hx-drawer/hx-drawer.d.ts +201 -0
  47. package/dist/components/hx-drawer/hx-drawer.d.ts.map +1 -1
  48. package/dist/components/hx-drawer/hx-drawer.styles.d.ts.map +1 -1
  49. package/dist/components/hx-drawer/index.js +1 -1
  50. package/dist/components/hx-dropdown/hx-dropdown.d.ts +168 -0
  51. package/dist/components/hx-dropdown/hx-dropdown.d.ts.map +1 -1
  52. package/dist/components/hx-dropdown/index.js +1 -1
  53. package/dist/components/hx-field/hx-field.d.ts +109 -0
  54. package/dist/components/hx-field/hx-field.d.ts.map +1 -1
  55. package/dist/components/hx-field/index.js +1 -1
  56. package/dist/components/hx-icon-button/hx-icon-button.d.ts +16 -3
  57. package/dist/components/hx-icon-button/hx-icon-button.d.ts.map +1 -1
  58. package/dist/components/hx-icon-button/hx-icon-button.styles.d.ts.map +1 -1
  59. package/dist/components/hx-icon-button/index.js +1 -1
  60. package/dist/components/hx-link/hx-link.d.ts +10 -1
  61. package/dist/components/hx-link/hx-link.d.ts.map +1 -1
  62. package/dist/components/hx-link/index.js +1 -1
  63. package/dist/components/hx-list/hx-list-item.d.ts +27 -1
  64. package/dist/components/hx-list/hx-list-item.d.ts.map +1 -1
  65. package/dist/components/hx-list/hx-list.d.ts +28 -0
  66. package/dist/components/hx-list/hx-list.d.ts.map +1 -1
  67. package/dist/components/hx-list/index.js +1 -1
  68. package/dist/components/hx-menu/hx-menu-divider.d.ts +10 -0
  69. package/dist/components/hx-menu/hx-menu-divider.d.ts.map +1 -1
  70. package/dist/components/hx-menu/hx-menu-item.d.ts +99 -2
  71. package/dist/components/hx-menu/hx-menu-item.d.ts.map +1 -1
  72. package/dist/components/hx-menu/hx-menu-item.styles.d.ts.map +1 -1
  73. package/dist/components/hx-menu/hx-menu.d.ts +117 -2
  74. package/dist/components/hx-menu/hx-menu.d.ts.map +1 -1
  75. package/dist/components/hx-menu/index.js +1 -1
  76. package/dist/components/hx-meter/hx-meter.d.ts +39 -0
  77. package/dist/components/hx-meter/hx-meter.d.ts.map +1 -1
  78. package/dist/components/hx-meter/hx-meter.styles.d.ts.map +1 -1
  79. package/dist/components/hx-meter/index.js +1 -1
  80. package/dist/components/hx-overflow-menu/hx-overflow-menu.d.ts +132 -1
  81. package/dist/components/hx-overflow-menu/hx-overflow-menu.d.ts.map +1 -1
  82. package/dist/components/hx-overflow-menu/index.js +1 -1
  83. package/dist/components/hx-phi-field/hx-phi-field.d.ts +0 -1
  84. package/dist/components/hx-phi-field/hx-phi-field.d.ts.map +1 -1
  85. package/dist/components/hx-popover/hx-popover.d.ts +91 -0
  86. package/dist/components/hx-popover/hx-popover.d.ts.map +1 -1
  87. package/dist/components/hx-popover/index.js +1 -1
  88. package/dist/components/hx-progress-bar/hx-progress-bar.d.ts +33 -0
  89. package/dist/components/hx-progress-bar/hx-progress-bar.d.ts.map +1 -1
  90. package/dist/components/hx-progress-bar/index.js +1 -1
  91. package/dist/components/hx-radio-group/hx-radio-group.d.ts +152 -1
  92. package/dist/components/hx-radio-group/hx-radio-group.d.ts.map +1 -1
  93. package/dist/components/hx-radio-group/hx-radio.d.ts +14 -0
  94. package/dist/components/hx-radio-group/hx-radio.d.ts.map +1 -1
  95. package/dist/components/hx-radio-group/index.js +1 -1
  96. package/dist/components/hx-select/hx-select.d.ts +304 -2
  97. package/dist/components/hx-select/hx-select.d.ts.map +1 -1
  98. package/dist/components/hx-select/hx-select.styles.d.ts.map +1 -1
  99. package/dist/components/hx-select/index.js +1 -1
  100. package/dist/components/hx-side-nav/hx-nav-item.styles.d.ts.map +1 -1
  101. package/dist/components/hx-side-nav/index.js +1 -1
  102. package/dist/components/hx-spinner/hx-spinner.d.ts +14 -0
  103. package/dist/components/hx-spinner/hx-spinner.d.ts.map +1 -1
  104. package/dist/components/hx-spinner/index.js +1 -1
  105. package/dist/components/hx-split-button/hx-split-button.d.ts +94 -7
  106. package/dist/components/hx-split-button/hx-split-button.d.ts.map +1 -1
  107. package/dist/components/hx-split-button/index.js +1 -1
  108. package/dist/components/hx-stat/hx-stat.d.ts +28 -0
  109. package/dist/components/hx-stat/hx-stat.d.ts.map +1 -1
  110. package/dist/components/hx-stat/index.js +1 -1
  111. package/dist/components/hx-switch/hx-switch.d.ts +78 -1
  112. package/dist/components/hx-switch/hx-switch.d.ts.map +1 -1
  113. package/dist/components/hx-switch/hx-switch.styles.d.ts.map +1 -1
  114. package/dist/components/hx-switch/index.js +1 -1
  115. package/dist/components/hx-table/hx-td.d.ts +30 -3
  116. package/dist/components/hx-table/hx-td.d.ts.map +1 -1
  117. package/dist/components/hx-table/hx-th.d.ts +48 -3
  118. package/dist/components/hx-table/hx-th.d.ts.map +1 -1
  119. package/dist/components/hx-table/hx-tr.d.ts +26 -0
  120. package/dist/components/hx-table/hx-tr.d.ts.map +1 -1
  121. package/dist/components/hx-table/index.js +1 -1
  122. package/dist/components/hx-tabs/hx-tab-panel.d.ts +34 -0
  123. package/dist/components/hx-tabs/hx-tab-panel.d.ts.map +1 -1
  124. package/dist/components/hx-tabs/hx-tab.d.ts +45 -2
  125. package/dist/components/hx-tabs/hx-tab.d.ts.map +1 -1
  126. package/dist/components/hx-tabs/hx-tab.styles.d.ts.map +1 -1
  127. package/dist/components/hx-tabs/hx-tabs.d.ts +32 -2
  128. package/dist/components/hx-tabs/hx-tabs.d.ts.map +1 -1
  129. package/dist/components/hx-tabs/index.js +1 -1
  130. package/dist/components/hx-tag/hx-tag.styles.d.ts.map +1 -1
  131. package/dist/components/hx-tag/index.js +1 -1
  132. package/dist/components/hx-theme/hx-theme.d.ts +10 -5
  133. package/dist/components/hx-theme/hx-theme.d.ts.map +1 -1
  134. package/dist/components/hx-time-picker/hx-time-picker.d.ts +210 -2
  135. package/dist/components/hx-time-picker/hx-time-picker.d.ts.map +1 -1
  136. package/dist/components/hx-time-picker/hx-time-picker.styles.d.ts.map +1 -1
  137. package/dist/components/hx-time-picker/index.js +1 -1
  138. package/dist/components/hx-toast/hx-toast-stack.d.ts +14 -0
  139. package/dist/components/hx-toast/hx-toast-stack.d.ts.map +1 -1
  140. package/dist/components/hx-toast/hx-toast.d.ts +22 -3
  141. package/dist/components/hx-toast/hx-toast.d.ts.map +1 -1
  142. package/dist/components/hx-toast/index.js +1 -1
  143. package/dist/components/hx-toast/toast-factory.d.ts.map +1 -1
  144. package/dist/components/hx-toggle-button/hx-toggle-button.d.ts +110 -0
  145. package/dist/components/hx-toggle-button/hx-toggle-button.d.ts.map +1 -1
  146. package/dist/components/hx-toggle-button/hx-toggle-button.styles.d.ts.map +1 -1
  147. package/dist/components/hx-toggle-button/index.js +1 -1
  148. package/dist/components/hx-tooltip/hx-tooltip.d.ts +52 -0
  149. package/dist/components/hx-tooltip/hx-tooltip.d.ts.map +1 -1
  150. package/dist/components/hx-tooltip/index.js +1 -1
  151. package/dist/components/hx-tree-view/hx-tree-item.d.ts +117 -12
  152. package/dist/components/hx-tree-view/hx-tree-item.d.ts.map +1 -1
  153. package/dist/components/hx-tree-view/hx-tree-view.d.ts +87 -7
  154. package/dist/components/hx-tree-view/hx-tree-view.d.ts.map +1 -1
  155. package/dist/components/hx-tree-view/index.js +1 -1
  156. package/dist/css/helix-all.css +235 -2
  157. package/dist/css/helix-core.css +95 -1
  158. package/dist/css/helix-feedback.css +14 -0
  159. package/dist/css/helix-forms.css +109 -1
  160. package/dist/css/helix-overlay.css +17 -0
  161. package/dist/css/hx-alert.css +9 -0
  162. package/dist/css/hx-badge.css +28 -0
  163. package/dist/css/hx-card.css +14 -1
  164. package/dist/css/hx-checkbox.css +18 -0
  165. package/dist/css/hx-color-picker.css +25 -0
  166. package/dist/css/hx-date-picker.css +2 -1
  167. package/dist/css/hx-drawer.css +17 -0
  168. package/dist/css/hx-icon-button.css +30 -0
  169. package/dist/css/hx-meter.css +5 -0
  170. package/dist/css/hx-select.css +19 -0
  171. package/dist/css/hx-switch.css +17 -0
  172. package/dist/css/hx-tag.css +23 -0
  173. package/dist/css/hx-time-picker.css +11 -0
  174. package/dist/css/hx-toggle-button.css +17 -0
  175. package/dist/css/index.css +1 -1
  176. package/dist/css/manifest.json +4 -1
  177. package/dist/index.js +39 -39
  178. package/dist/shared/aria-flatten-DY6v2vah.js +22 -0
  179. package/dist/shared/aria-flatten-DY6v2vah.js.map +1 -0
  180. package/dist/shared/aria-idref-DCuEaknC.js +131 -0
  181. package/dist/shared/aria-idref-DCuEaknC.js.map +1 -0
  182. package/dist/shared/hx-accordion-ZVzgDzTG.js.map +1 -1
  183. package/dist/shared/{hx-alert-CLn7CstP.js → hx-alert-Bto8-TIi.js} +55 -37
  184. package/dist/shared/hx-alert-Bto8-TIi.js.map +1 -0
  185. package/dist/shared/{hx-badge-CQXgOXJM.js → hx-badge-JlFtAdxS.js} +37 -9
  186. package/dist/shared/hx-badge-JlFtAdxS.js.map +1 -0
  187. package/dist/shared/{hx-banner-D3DzpfcP.js → hx-banner-fpRnciIO.js} +13 -5
  188. package/dist/shared/hx-banner-fpRnciIO.js.map +1 -0
  189. package/dist/shared/{hx-button-DPY6SPVT.js → hx-button-BOwAEcF1.js} +108 -85
  190. package/dist/shared/{hx-button-DPY6SPVT.js.map → hx-button-BOwAEcF1.js.map} +1 -1
  191. package/dist/shared/{hx-button-group-BI-QBqmO.js → hx-button-group-4NUBpkyC.js} +22 -23
  192. package/dist/shared/{hx-button-group-BI-QBqmO.js.map → hx-button-group-4NUBpkyC.js.map} +1 -1
  193. package/dist/shared/{hx-card-qNAM2QNV.js → hx-card-CswtnYvj.js} +142 -85
  194. package/dist/shared/hx-card-CswtnYvj.js.map +1 -0
  195. package/dist/shared/hx-checkbox-CYd0YV_u.js +696 -0
  196. package/dist/shared/hx-checkbox-CYd0YV_u.js.map +1 -0
  197. package/dist/shared/hx-checkbox-group-D5piJLY8.js +496 -0
  198. package/dist/shared/hx-checkbox-group-D5piJLY8.js.map +1 -0
  199. package/dist/shared/hx-color-picker-DBwJzT5f.js +1221 -0
  200. package/dist/shared/hx-color-picker-DBwJzT5f.js.map +1 -0
  201. package/dist/shared/hx-combobox-NgJaLbs2.js +1359 -0
  202. package/dist/shared/hx-combobox-NgJaLbs2.js.map +1 -0
  203. package/dist/shared/{hx-data-table-CLqVqdxr.js → hx-data-table-Ct3gQ6ya.js} +3 -2
  204. package/dist/shared/{hx-data-table-CLqVqdxr.js.map → hx-data-table-Ct3gQ6ya.js.map} +1 -1
  205. package/dist/shared/{hx-date-picker-2iRG1p74.js → hx-date-picker-B49yo4Vm.js} +542 -206
  206. package/dist/shared/hx-date-picker-B49yo4Vm.js.map +1 -0
  207. package/dist/shared/hx-dialog-B4weoj_1.js +717 -0
  208. package/dist/shared/hx-dialog-B4weoj_1.js.map +1 -0
  209. package/dist/shared/{hx-drawer-Y1Ui2IWJ.js → hx-drawer-D81tb4BD.js} +300 -98
  210. package/dist/shared/hx-drawer-D81tb4BD.js.map +1 -0
  211. package/dist/shared/hx-dropdown-D626S2ZG.js +401 -0
  212. package/dist/shared/hx-dropdown-D626S2ZG.js.map +1 -0
  213. package/dist/shared/{hx-field-B3Qo8OLS.js → hx-field-zw0U1KVi.js} +99 -38
  214. package/dist/shared/hx-field-zw0U1KVi.js.map +1 -0
  215. package/dist/shared/{hx-icon-button-CGNdQSFM.js → hx-icon-button-a6OpeQz5.js} +149 -68
  216. package/dist/shared/hx-icon-button-a6OpeQz5.js.map +1 -0
  217. package/dist/shared/{hx-link-C-O6vq0Q.js → hx-link-CMnZRUtQ.js} +55 -43
  218. package/dist/shared/hx-link-CMnZRUtQ.js.map +1 -0
  219. package/dist/shared/{hx-list-MyEhh8c7.js → hx-list-Bp8HeLHh.js} +163 -107
  220. package/dist/shared/hx-list-Bp8HeLHh.js.map +1 -0
  221. package/dist/shared/hx-menu-divider-A6Guuzi_.js +797 -0
  222. package/dist/shared/hx-menu-divider-A6Guuzi_.js.map +1 -0
  223. package/dist/shared/hx-meter-BnpmF3Vx.js +316 -0
  224. package/dist/shared/hx-meter-BnpmF3Vx.js.map +1 -0
  225. package/dist/shared/{hx-nav-item-xqRPOCWX.js → hx-nav-item-CODtUlew.js} +13 -9
  226. package/dist/shared/{hx-nav-item-xqRPOCWX.js.map → hx-nav-item-CODtUlew.js.map} +1 -1
  227. package/dist/shared/hx-overflow-menu-DFjJAziP.js +492 -0
  228. package/dist/shared/hx-overflow-menu-DFjJAziP.js.map +1 -0
  229. package/dist/shared/hx-phi-field-C19oxlrr.js.map +1 -1
  230. package/dist/shared/{hx-popover-B-FP3-wW.js → hx-popover-BAlAFOH9.js} +123 -66
  231. package/dist/shared/hx-popover-BAlAFOH9.js.map +1 -0
  232. package/dist/shared/hx-progress-bar-CYz9U721.js +290 -0
  233. package/dist/shared/hx-progress-bar-CYz9U721.js.map +1 -0
  234. package/dist/shared/hx-radio-C7eTj5YI.js +822 -0
  235. package/dist/shared/hx-radio-C7eTj5YI.js.map +1 -0
  236. package/dist/shared/hx-select-DahFehiZ.js +1089 -0
  237. package/dist/shared/hx-select-DahFehiZ.js.map +1 -0
  238. package/dist/shared/{hx-spinner-DL5AYr16.js → hx-spinner-3qBp4jeN.js} +58 -30
  239. package/dist/shared/hx-spinner-3qBp4jeN.js.map +1 -0
  240. package/dist/shared/{hx-split-button-Djnc5Aeg.js → hx-split-button-Ddle8iVx.js} +153 -82
  241. package/dist/shared/hx-split-button-Ddle8iVx.js.map +1 -0
  242. package/dist/shared/{hx-stat-WOcNV1Ry.js → hx-stat-Gtw_SpK8.js} +77 -47
  243. package/dist/shared/hx-stat-Gtw_SpK8.js.map +1 -0
  244. package/dist/shared/hx-switch-TvKGvZJz.js +540 -0
  245. package/dist/shared/hx-switch-TvKGvZJz.js.map +1 -0
  246. package/dist/shared/{hx-tab-panel-DspCrKqo.js → hx-tab-panel-Cu--8psg.js} +255 -131
  247. package/dist/shared/hx-tab-panel-Cu--8psg.js.map +1 -0
  248. package/dist/shared/{hx-tag-CNSmdyaK.js → hx-tag-C5aCUpVi.js} +63 -40
  249. package/dist/shared/hx-tag-C5aCUpVi.js.map +1 -0
  250. package/dist/shared/{hx-td-DnnEMIuA.js → hx-td-BPsb6OaG.js} +249 -102
  251. package/dist/shared/hx-td-BPsb6OaG.js.map +1 -0
  252. package/dist/shared/hx-theme-BsefFWTO.js.map +1 -1
  253. package/dist/shared/hx-time-picker-Bo7FWzmf.js +1038 -0
  254. package/dist/shared/hx-time-picker-Bo7FWzmf.js.map +1 -0
  255. package/dist/shared/{hx-toggle-button-iLiYrMbD.js → hx-toggle-button-DwBers3A.js} +226 -65
  256. package/dist/shared/hx-toggle-button-DwBers3A.js.map +1 -0
  257. package/dist/shared/{hx-tooltip-nYOv9OLu.js → hx-tooltip-DVqtKPCD.js} +68 -46
  258. package/dist/shared/hx-tooltip-DVqtKPCD.js.map +1 -0
  259. package/dist/shared/hx-tree-item-CXyspGxI.js +925 -0
  260. package/dist/shared/hx-tree-item-CXyspGxI.js.map +1 -0
  261. package/dist/shared/menu-roving-DmMnzJhn.js +14 -0
  262. package/dist/shared/menu-roving-DmMnzJhn.js.map +1 -0
  263. package/dist/shared/menu-tree-BNM0SYYq.js +42 -0
  264. package/dist/shared/menu-tree-BNM0SYYq.js.map +1 -0
  265. package/dist/shared/{toast-factory-YSznocIV.js → toast-factory-CL2BzdSB.js} +128 -77
  266. package/dist/shared/toast-factory-CL2BzdSB.js.map +1 -0
  267. package/dist/utils/aria-flatten.d.ts +56 -0
  268. package/dist/utils/aria-flatten.d.ts.map +1 -0
  269. package/dist/utils/aria-idref.d.ts +127 -0
  270. package/dist/utils/aria-idref.d.ts.map +1 -0
  271. package/dist/utils/menu-label.d.ts +18 -0
  272. package/dist/utils/menu-label.d.ts.map +1 -0
  273. package/dist/utils/menu-roving.d.ts +28 -0
  274. package/dist/utils/menu-roving.d.ts.map +1 -0
  275. package/dist/utils/menu-tree.d.ts +41 -0
  276. package/dist/utils/menu-tree.d.ts.map +1 -0
  277. package/dist/utils/tree-walk.d.ts +53 -0
  278. package/dist/utils/tree-walk.d.ts.map +1 -0
  279. package/figma-inventory.json +132 -20
  280. package/package.json +2 -2
  281. package/dist/shared/hx-alert-CLn7CstP.js.map +0 -1
  282. package/dist/shared/hx-badge-CQXgOXJM.js.map +0 -1
  283. package/dist/shared/hx-banner-D3DzpfcP.js.map +0 -1
  284. package/dist/shared/hx-card-qNAM2QNV.js.map +0 -1
  285. package/dist/shared/hx-checkbox-D7xma9YH.js +0 -524
  286. package/dist/shared/hx-checkbox-D7xma9YH.js.map +0 -1
  287. package/dist/shared/hx-checkbox-group-C9n315Ju.js +0 -323
  288. package/dist/shared/hx-checkbox-group-C9n315Ju.js.map +0 -1
  289. package/dist/shared/hx-color-picker-uRc865FJ.js +0 -882
  290. package/dist/shared/hx-color-picker-uRc865FJ.js.map +0 -1
  291. package/dist/shared/hx-combobox-DDzqNKEW.js +0 -924
  292. package/dist/shared/hx-combobox-DDzqNKEW.js.map +0 -1
  293. package/dist/shared/hx-date-picker-2iRG1p74.js.map +0 -1
  294. package/dist/shared/hx-dialog-DRN_1-Y-.js +0 -514
  295. package/dist/shared/hx-dialog-DRN_1-Y-.js.map +0 -1
  296. package/dist/shared/hx-drawer-Y1Ui2IWJ.js.map +0 -1
  297. package/dist/shared/hx-dropdown-LyaRc8Rf.js +0 -263
  298. package/dist/shared/hx-dropdown-LyaRc8Rf.js.map +0 -1
  299. package/dist/shared/hx-field-B3Qo8OLS.js.map +0 -1
  300. package/dist/shared/hx-icon-button-CGNdQSFM.js.map +0 -1
  301. package/dist/shared/hx-link-C-O6vq0Q.js.map +0 -1
  302. package/dist/shared/hx-list-MyEhh8c7.js.map +0 -1
  303. package/dist/shared/hx-menu-divider-C2omnPtj.js +0 -558
  304. package/dist/shared/hx-menu-divider-C2omnPtj.js.map +0 -1
  305. package/dist/shared/hx-meter-BPscsw5t.js +0 -254
  306. package/dist/shared/hx-meter-BPscsw5t.js.map +0 -1
  307. package/dist/shared/hx-overflow-menu-DCLsdIBy.js +0 -374
  308. package/dist/shared/hx-overflow-menu-DCLsdIBy.js.map +0 -1
  309. package/dist/shared/hx-popover-B-FP3-wW.js.map +0 -1
  310. package/dist/shared/hx-progress-bar-Bn3JEPUf.js +0 -258
  311. package/dist/shared/hx-progress-bar-Bn3JEPUf.js.map +0 -1
  312. package/dist/shared/hx-radio-CJvNU2yP.js +0 -621
  313. package/dist/shared/hx-radio-CJvNU2yP.js.map +0 -1
  314. package/dist/shared/hx-select-C8fEHQhC.js +0 -807
  315. package/dist/shared/hx-select-C8fEHQhC.js.map +0 -1
  316. package/dist/shared/hx-spinner-DL5AYr16.js.map +0 -1
  317. package/dist/shared/hx-split-button-Djnc5Aeg.js.map +0 -1
  318. package/dist/shared/hx-stat-WOcNV1Ry.js.map +0 -1
  319. package/dist/shared/hx-switch-BrZFaRue.js +0 -420
  320. package/dist/shared/hx-switch-BrZFaRue.js.map +0 -1
  321. package/dist/shared/hx-tab-panel-DspCrKqo.js.map +0 -1
  322. package/dist/shared/hx-tag-CNSmdyaK.js.map +0 -1
  323. package/dist/shared/hx-td-DnnEMIuA.js.map +0 -1
  324. package/dist/shared/hx-time-picker-BoEIZwzv.js +0 -688
  325. package/dist/shared/hx-time-picker-BoEIZwzv.js.map +0 -1
  326. package/dist/shared/hx-toggle-button-iLiYrMbD.js.map +0 -1
  327. package/dist/shared/hx-tooltip-nYOv9OLu.js.map +0 -1
  328. package/dist/shared/hx-tree-item-C2CiWuDE.js +0 -703
  329. package/dist/shared/hx-tree-item-C2CiWuDE.js.map +0 -1
  330. package/dist/shared/toast-factory-YSznocIV.js.map +0 -1
@@ -258,6 +258,15 @@
258
258
  min-width: 0;
259
259
  }
260
260
 
261
+ /* (group-6 5.1) Wrapper around the default slot. Carries aria-hidden=true
262
+ so the visible message text is not double-announced alongside the
263
+ sr-only announcer. display:contents keeps the wrapper visually
264
+ transparent so children participate in the parent flex layout as if
265
+ the wrapper were not there. */
266
+ .alert__default-slot {
267
+ display: contents;
268
+ }
269
+
261
270
  /* ─── Actions ─── */
262
271
  /* Hidden by default; shown via JS slotchange detection to avoid invisible */
263
272
  /* margin-top spacing when no actions are slotted. */
@@ -721,6 +730,9 @@
721
730
  @media (forced-colors: active) {
722
731
  .badge {
723
732
  border: 1px solid CanvasText;
733
+ forced-color-adjust: none;
734
+ background-color: Canvas;
735
+ color: CanvasText;
724
736
  }
725
737
 
726
738
  .badge--pulse {
@@ -730,6 +742,31 @@
730
742
  .badge__remove-button {
731
743
  color: ButtonText;
732
744
  }
745
+
746
+ /* Per-semantic-variant forced-colors fallbacks. The visually-hidden
747
+ semantic variant label (.badge__variant-label) keeps AT users
748
+ informed; these blocks restore visual semantic distinction for
749
+ sighted users in HCM where bg/color collapse to system defaults.
750
+ Pattern: distinct border-style per variant. */
751
+ .badge--success {
752
+ border-style: solid;
753
+ border-width: 2px;
754
+ }
755
+
756
+ .badge--warning {
757
+ border-style: dashed;
758
+ border-width: 2px;
759
+ }
760
+
761
+ .badge--error {
762
+ border-style: double;
763
+ border-width: 3px;
764
+ }
765
+
766
+ .badge--info {
767
+ border-style: dotted;
768
+ border-width: 2px;
769
+ }
733
770
  }
734
771
  /* ── hx-banner ── */
735
772
  :host {
@@ -1669,7 +1706,8 @@
1669
1706
  transform: translateY(var(--hx-transform-lift-md, -2px));
1670
1707
  }
1671
1708
 
1672
- .card--interactive:focus-visible {
1709
+ .card--interactive:focus-visible,
1710
+ :host(:focus-visible) .card--interactive {
1673
1711
  outline: var(--hx-focus-ring-width, 2px) solid
1674
1712
  var(--hx-card-focus-ring-color, var(--hx-focus-ring-color, #0f7078));
1675
1713
  outline-offset: var(--hx-focus-ring-offset, 2px);
@@ -1768,6 +1806,18 @@
1768
1806
  .card__actions {
1769
1807
  border-top-color: CanvasText;
1770
1808
  }
1809
+
1810
+ /*
1811
+ * Force a system-color focus ring on the interactive card under
1812
+ * Windows High Contrast Mode — the token-driven outline above
1813
+ * collapses to system colors but the explicit Highlight color is
1814
+ * stricter for AT contrast and reaches the host on the modern
1815
+ * host-canonical path (the host is the focused surface).
1816
+ */
1817
+ .card--interactive:focus-visible,
1818
+ :host(:focus-visible) .card--interactive {
1819
+ outline-color: Highlight;
1820
+ }
1771
1821
  }
1772
1822
  /* ── hx-carousel ── */
1773
1823
  :host {
@@ -2080,6 +2130,23 @@
2080
2130
 
2081
2131
  /* ─── Focus Ring ─── */
2082
2132
 
2133
+ /*
2134
+ * Host-focus path: on the modern (IDL element-references) render branch the
2135
+ * host is the tabbable surface (tabindex=0) and the inner input is demoted
2136
+ * to tabindex=-1. Drive the focus ring from ':host(:focus-visible)' so
2137
+ * keyboard users still get a visible affordance. Codex round-11 P1.
2138
+ */
2139
+ :host(:focus-visible) .checkbox__box {
2140
+ outline: var(--hx-checkbox-focus-ring-width, var(--hx-focus-ring-width, 2px)) solid
2141
+ var(--hx-checkbox-focus-ring-color, var(--hx-focus-ring-color, #0f7078));
2142
+ outline-offset: var(--hx-checkbox-focus-ring-offset, var(--hx-focus-ring-offset, 2px));
2143
+ }
2144
+
2145
+ /*
2146
+ * Fallback (no-IDL-ref) path: the host carries tabindex=-1 and the inner
2147
+ * input is the tab target. The native :focus-visible on the input drives
2148
+ * the same visual ring, scoped via the inner-state class.
2149
+ */
2083
2150
  .checkbox__input:focus-visible ~ .checkbox__box {
2084
2151
  outline: var(--hx-checkbox-focus-ring-width, var(--hx-focus-ring-width, 2px)) solid
2085
2152
  var(--hx-checkbox-focus-ring-color, var(--hx-focus-ring-color, #0f7078));
@@ -2234,6 +2301,7 @@
2234
2301
  border: 2px solid ButtonText;
2235
2302
  }
2236
2303
 
2304
+ :host(:focus-visible) .checkbox__box,
2237
2305
  .checkbox__input:focus-visible ~ .checkbox__box {
2238
2306
  outline: 3px solid Highlight;
2239
2307
  outline-offset: 2px;
@@ -2900,6 +2968,31 @@
2900
2968
  pointer-events: none;
2901
2969
  opacity: var(--hx-opacity-disabled, 0.5);
2902
2970
  }
2971
+ /* Slotted label / help / error blocks for cross-shadow naming. */
2972
+ .hx-color-picker__label {
2973
+ display: block;
2974
+ margin-bottom: var(--hx-space-1, 0.25rem);
2975
+ font-weight: var(--hx-font-weight-semibold, 600);
2976
+ color: var(--hx-color-neutral-900, #1a1a1a);
2977
+ }
2978
+ .hx-color-picker__label:empty {
2979
+ display: none;
2980
+ }
2981
+ .hx-color-picker__help {
2982
+ display: block;
2983
+ margin-top: var(--hx-space-1, 0.25rem);
2984
+ font-size: var(--hx-font-size-xs, 0.75rem);
2985
+ color: var(--hx-color-neutral-600, #525252);
2986
+ }
2987
+ .hx-color-picker__error {
2988
+ display: block;
2989
+ margin-top: var(--hx-space-1, 0.25rem);
2990
+ font-size: var(--hx-font-size-xs, 0.75rem);
2991
+ color: var(--hx-color-danger-700, #c43e3e);
2992
+ }
2993
+ [hidden] {
2994
+ display: none !important;
2995
+ }
2903
2996
  .trigger {
2904
2997
  display: inline-flex;
2905
2998
  align-items: center;
@@ -4426,7 +4519,8 @@
4426
4519
  Live region (screen reader announcements)
4427
4520
  ============================================================ */
4428
4521
 
4429
- .calendar__live-region {
4522
+ .calendar__live-region,
4523
+ .field__sr-only {
4430
4524
  position: absolute;
4431
4525
  width: 1px;
4432
4526
  height: 1px;
@@ -5062,6 +5156,23 @@
5062
5156
  margin: 0;
5063
5157
  }
5064
5158
 
5159
+ /* ─── Synthesized consumer-description span ─── */
5160
+ /* Visually hidden mirror of consumer-resolved aria-describedby text used by */
5161
+ /* the host-canonical ARIA pipeline. Always present in the shadow tree so AT */
5162
+ /* can resolve the same-root id even when the description is currently empty. */
5163
+
5164
+ .drawer-sr-only {
5165
+ position: absolute;
5166
+ width: 1px;
5167
+ height: 1px;
5168
+ padding: 0;
5169
+ margin: -1px;
5170
+ overflow: hidden;
5171
+ clip: rect(0, 0, 0, 0);
5172
+ white-space: nowrap;
5173
+ border: 0;
5174
+ }
5175
+
5065
5176
  /* ─── Body ─── */
5066
5177
 
5067
5178
  .drawer-body {
@@ -5997,12 +6108,37 @@ export const helixGridItemStyles = css`
5997
6108
  multiplicative stacking (0.5 * 0.5 = 0.25). Do not add opacity here. */
5998
6109
  }
5999
6110
 
6111
+ /* ─── Loading State ─── */
6112
+
6113
+ .button--loading {
6114
+ position: relative;
6115
+ cursor: wait;
6116
+ }
6117
+
6118
+ .button__spinner {
6119
+ width: 1em;
6120
+ height: 1em;
6121
+ flex-shrink: 0;
6122
+ animation: hx-icon-button-spin var(--hx-duration-spinner, 750ms) linear infinite;
6123
+ }
6124
+
6125
+ @keyframes hx-icon-button-spin {
6126
+ to {
6127
+ transform: rotate(360deg);
6128
+ }
6129
+ }
6130
+
6000
6131
  /* ─── Reduced Motion ─── */
6001
6132
 
6002
6133
  @media (prefers-reduced-motion: reduce) {
6003
6134
  .button {
6004
6135
  transition: none;
6005
6136
  }
6137
+
6138
+ .button__spinner {
6139
+ animation: none;
6140
+ opacity: var(--hx-opacity-muted, 0.6);
6141
+ }
6006
6142
  }
6007
6143
 
6008
6144
  /* ─── High Contrast Mode (forced-colors) ─── */
@@ -6030,6 +6166,11 @@ export const helixGridItemStyles = css`
6030
6166
  :host([disabled]) {
6031
6167
  opacity: 1;
6032
6168
  }
6169
+
6170
+ .button--loading .button__spinner {
6171
+ stroke: ButtonText;
6172
+ forced-color-adjust: none;
6173
+ }
6033
6174
  }
6034
6175
  /* ── hx-image ── */
6035
6176
  :host {
@@ -6407,6 +6548,11 @@ export const helixGridItemStyles = css`
6407
6548
  /* ─── Forced Colors (Windows High Contrast) ─── */
6408
6549
 
6409
6550
  @media (forced-colors: active) {
6551
+ .meter:focus-visible {
6552
+ outline: 2px solid Highlight;
6553
+ outline-offset: var(--hx-focus-ring-offset, 2px);
6554
+ }
6555
+
6410
6556
  .meter__track {
6411
6557
  border: 1px solid CanvasText;
6412
6558
  }
@@ -8298,6 +8444,11 @@ export const helixGridItemStyles = css`
8298
8444
  /* ─── 3-tier token cascade: component → semantic → hardcoded fallback ─── */
8299
8445
  :host {
8300
8446
  display: block;
8447
+ /* Round-3 finding 1: host is the canonical combobox surface, so it owns
8448
+ keyboard focus. Suppress the UA default outline; the custom focus ring
8449
+ is painted on the inner trigger via :host(:focus-visible)
8450
+ .field__trigger so visual feedback follows the host's focus state. */
8451
+ outline: none;
8301
8452
 
8302
8453
  /* Background & foreground */
8303
8454
  --_bg: var(--hx-select-bg, var(--hx-color-surface-default, #ffffff));
@@ -8374,6 +8525,12 @@ export const helixGridItemStyles = css`
8374
8525
  }
8375
8526
 
8376
8527
  .field__trigger {
8528
+ /* Round-3 finding 1 / CodeRabbit F1: trigger is a <button type="button">
8529
+ (labelable) so native <label for> click activation works for mouse
8530
+ users. Reset native button chrome before applying field styles. */
8531
+ appearance: none;
8532
+ -webkit-appearance: none;
8533
+ margin: 0;
8377
8534
  display: flex;
8378
8535
  align-items: center;
8379
8536
  justify-content: space-between;
@@ -8384,6 +8541,7 @@ export const helixGridItemStyles = css`
8384
8541
  border-radius: var(--_border-radius);
8385
8542
  background-color: var(--_bg);
8386
8543
  color: var(--_color);
8544
+ font: inherit;
8387
8545
  font-family: inherit;
8388
8546
  font-size: var(--hx-font-size-md, 1rem);
8389
8547
  line-height: var(--hx-line-height-normal, 1.5);
@@ -8396,6 +8554,11 @@ export const helixGridItemStyles = css`
8396
8554
  outline: none;
8397
8555
  }
8398
8556
 
8557
+ /* Round-3 finding 1: host is the canonical focusable surface. Both the
8558
+ :host(:focus-visible) descendant selector AND the legacy
8559
+ .field__trigger:focus-visible (kept for forced-colors regression test
8560
+ parity) paint the focus ring on the visual trigger. */
8561
+ :host(:focus-visible) .field__trigger,
8399
8562
  .field__trigger:focus-visible {
8400
8563
  border-color: var(--_focus-ring-color);
8401
8564
  box-shadow: 0 0 0 var(--hx-focus-ring-width, 2px)
@@ -8464,6 +8627,7 @@ export const helixGridItemStyles = css`
8464
8627
  border-color: var(--_error-color);
8465
8628
  }
8466
8629
 
8630
+ :host(:focus-visible) .field--error .field__trigger,
8467
8631
  .field--error .field__trigger:focus-visible {
8468
8632
  border-color: var(--_error-color);
8469
8633
  box-shadow: 0 0 0 var(--hx-focus-ring-width, 2px)
@@ -8597,6 +8761,7 @@ export const helixGridItemStyles = css`
8597
8761
  border: 2px solid ButtonText;
8598
8762
  }
8599
8763
 
8764
+ :host(:focus-visible) .field__trigger,
8600
8765
  .field__trigger:focus-visible {
8601
8766
  outline: 3px solid Highlight;
8602
8767
  outline-offset: 2px;
@@ -10544,6 +10709,22 @@ export const helixStructuredListRowStyles = css`
10544
10709
  appearance: none;
10545
10710
  }
10546
10711
 
10712
+ /*
10713
+ * Host-focus path: on the modern (IDL element-references) render branch the
10714
+ * host is the tabbable surface (tabindex=0) and the inner track button is
10715
+ * demoted to tabindex=-1. Drive the focus ring from ':host(:focus-visible)'
10716
+ * so keyboard users still see a visible affordance. Codex round-11 P1.
10717
+ */
10718
+ :host(:focus-visible) .switch__track {
10719
+ outline: var(--hx-focus-ring-width, 2px) solid
10720
+ var(--hx-switch-focus-ring-color, var(--hx-focus-ring-color, #0f7078));
10721
+ outline-offset: var(--hx-focus-ring-offset, 2px);
10722
+ }
10723
+
10724
+ /*
10725
+ * Fallback (no-IDL-ref) path: the host carries tabindex=-1 and the inner
10726
+ * track button is the tab target. Native :focus-visible drives the ring.
10727
+ */
10547
10728
  .switch__track:focus-visible {
10548
10729
  outline: var(--hx-focus-ring-width, 2px) solid
10549
10730
  var(--hx-switch-focus-ring-color, var(--hx-focus-ring-color, #0f7078));
@@ -10681,6 +10862,7 @@ export const helixStructuredListRowStyles = css`
10681
10862
  border: 2px solid ButtonText;
10682
10863
  }
10683
10864
 
10865
+ :host(:focus-visible) .switch__track,
10684
10866
  .switch__track:focus-visible {
10685
10867
  outline: 3px solid Highlight;
10686
10868
  outline-offset: 2px;
@@ -11104,11 +11286,34 @@ export const helixTableSectionBaseStyles = css`
11104
11286
  @media (forced-colors: active) {
11105
11287
  .tag {
11106
11288
  border-color: CanvasText;
11289
+ forced-color-adjust: none;
11290
+ background-color: Canvas;
11291
+ color: CanvasText;
11107
11292
  }
11108
11293
 
11109
11294
  .tag__remove-button {
11110
11295
  color: ButtonText;
11111
11296
  }
11297
+
11298
+ /* Per-semantic-variant forced-colors fallbacks. The visually-hidden
11299
+ semantic variant label (.tag__variant-label) keeps AT users
11300
+ informed; these blocks restore visual semantic distinction for
11301
+ sighted users in HCM where bg/color collapse to system defaults.
11302
+ Pattern: distinct border-style per variant (matches hx-badge). */
11303
+ .tag--success {
11304
+ border-style: solid;
11305
+ border-width: 2px;
11306
+ }
11307
+
11308
+ .tag--warning {
11309
+ border-style: dashed;
11310
+ border-width: 2px;
11311
+ }
11312
+
11313
+ .tag--danger {
11314
+ border-style: double;
11315
+ border-width: 3px;
11316
+ }
11112
11317
  }
11113
11318
  /* ── hx-text ── */
11114
11319
  :host {
@@ -12138,6 +12343,17 @@ export const helixTableSectionBaseStyles = css`
12138
12343
  .field__error {
12139
12344
  color: var(--hx-time-picker-error-color, var(--hx-color-error-text, #c92a2a));
12140
12345
  }
12346
+ .field__sr-only {
12347
+ position: absolute;
12348
+ width: 1px;
12349
+ height: 1px;
12350
+ padding: 0;
12351
+ margin: -1px;
12352
+ overflow: hidden;
12353
+ clip: rect(0, 0, 0, 0);
12354
+ white-space: nowrap;
12355
+ border: 0;
12356
+ }
12141
12357
  @media (forced-colors: active) {
12142
12358
  .field__combobox {
12143
12359
  border-color: ButtonText;
@@ -12483,6 +12699,22 @@ export const helixToastStackStyles = css`
12483
12699
  -webkit-user-select: none;
12484
12700
  }
12485
12701
 
12702
+ /*
12703
+ * Host-focus path: on the modern (IDL element-references) render branch the
12704
+ * host is the tabbable surface (tabindex=0) and the inner <button> is
12705
+ * demoted to tabindex=-1. Drive the focus ring from ':host(:focus-visible)'
12706
+ * so keyboard users still see a visible affordance. Codex round-11 P1.
12707
+ */
12708
+ :host(:focus-visible) .button {
12709
+ outline: var(--hx-focus-ring-width, 2px) solid
12710
+ var(--hx-toggle-button-focus-ring-color, var(--hx-focus-ring-color, #0f7078));
12711
+ outline-offset: var(--hx-focus-ring-offset, 2px);
12712
+ }
12713
+
12714
+ /*
12715
+ * Fallback (no-IDL-ref) path: the host carries tabindex=-1 and the inner
12716
+ * <button> is the tab target. Native :focus-visible drives the ring.
12717
+ */
12486
12718
  .button:focus-visible {
12487
12719
  outline: var(--hx-focus-ring-width, 2px) solid
12488
12720
  var(--hx-toggle-button-focus-ring-color, var(--hx-focus-ring-color, #0f7078));
@@ -12681,6 +12913,7 @@ export const helixToastStackStyles = css`
12681
12913
  border: 2px solid ButtonText;
12682
12914
  }
12683
12915
 
12916
+ :host(:focus-visible) .button,
12684
12917
  .button:focus-visible {
12685
12918
  outline: 3px solid Highlight;
12686
12919
  outline-offset: 2px;
@@ -337,6 +337,9 @@
337
337
  @media (forced-colors: active) {
338
338
  .badge {
339
339
  border: 1px solid CanvasText;
340
+ forced-color-adjust: none;
341
+ background-color: Canvas;
342
+ color: CanvasText;
340
343
  }
341
344
 
342
345
  .badge--pulse {
@@ -346,6 +349,31 @@
346
349
  .badge__remove-button {
347
350
  color: ButtonText;
348
351
  }
352
+
353
+ /* Per-semantic-variant forced-colors fallbacks. The visually-hidden
354
+ semantic variant label (.badge__variant-label) keeps AT users
355
+ informed; these blocks restore visual semantic distinction for
356
+ sighted users in HCM where bg/color collapse to system defaults.
357
+ Pattern: distinct border-style per variant. */
358
+ .badge--success {
359
+ border-style: solid;
360
+ border-width: 2px;
361
+ }
362
+
363
+ .badge--warning {
364
+ border-style: dashed;
365
+ border-width: 2px;
366
+ }
367
+
368
+ .badge--error {
369
+ border-style: double;
370
+ border-width: 3px;
371
+ }
372
+
373
+ .badge--info {
374
+ border-style: dotted;
375
+ border-width: 2px;
376
+ }
349
377
  }
350
378
  /* ── hx-button ── */
351
379
  :host {
@@ -1001,7 +1029,8 @@
1001
1029
  transform: translateY(var(--hx-transform-lift-md, -2px));
1002
1030
  }
1003
1031
 
1004
- .card--interactive:focus-visible {
1032
+ .card--interactive:focus-visible,
1033
+ :host(:focus-visible) .card--interactive {
1005
1034
  outline: var(--hx-focus-ring-width, 2px) solid
1006
1035
  var(--hx-card-focus-ring-color, var(--hx-focus-ring-color, #0f7078));
1007
1036
  outline-offset: var(--hx-focus-ring-offset, 2px);
@@ -1100,6 +1129,18 @@
1100
1129
  .card__actions {
1101
1130
  border-top-color: CanvasText;
1102
1131
  }
1132
+
1133
+ /*
1134
+ * Force a system-color focus ring on the interactive card under
1135
+ * Windows High Contrast Mode — the token-driven outline above
1136
+ * collapses to system colors but the explicit Highlight color is
1137
+ * stricter for AT contrast and reaches the host on the modern
1138
+ * host-canonical path (the host is the focused surface).
1139
+ */
1140
+ .card--interactive:focus-visible,
1141
+ :host(:focus-visible) .card--interactive {
1142
+ outline-color: Highlight;
1143
+ }
1103
1144
  }
1104
1145
  /* ── hx-divider ── */
1105
1146
  :host {
@@ -1430,12 +1471,37 @@
1430
1471
  multiplicative stacking (0.5 * 0.5 = 0.25). Do not add opacity here. */
1431
1472
  }
1432
1473
 
1474
+ /* ─── Loading State ─── */
1475
+
1476
+ .button--loading {
1477
+ position: relative;
1478
+ cursor: wait;
1479
+ }
1480
+
1481
+ .button__spinner {
1482
+ width: 1em;
1483
+ height: 1em;
1484
+ flex-shrink: 0;
1485
+ animation: hx-icon-button-spin var(--hx-duration-spinner, 750ms) linear infinite;
1486
+ }
1487
+
1488
+ @keyframes hx-icon-button-spin {
1489
+ to {
1490
+ transform: rotate(360deg);
1491
+ }
1492
+ }
1493
+
1433
1494
  /* ─── Reduced Motion ─── */
1434
1495
 
1435
1496
  @media (prefers-reduced-motion: reduce) {
1436
1497
  .button {
1437
1498
  transition: none;
1438
1499
  }
1500
+
1501
+ .button__spinner {
1502
+ animation: none;
1503
+ opacity: var(--hx-opacity-muted, 0.6);
1504
+ }
1439
1505
  }
1440
1506
 
1441
1507
  /* ─── High Contrast Mode (forced-colors) ─── */
@@ -1463,6 +1529,11 @@
1463
1529
  :host([disabled]) {
1464
1530
  opacity: 1;
1465
1531
  }
1532
+
1533
+ .button--loading .button__spinner {
1534
+ stroke: ButtonText;
1535
+ forced-color-adjust: none;
1536
+ }
1466
1537
  }
1467
1538
  /* ── hx-image ── */
1468
1539
  :host {
@@ -2007,11 +2078,34 @@
2007
2078
  @media (forced-colors: active) {
2008
2079
  .tag {
2009
2080
  border-color: CanvasText;
2081
+ forced-color-adjust: none;
2082
+ background-color: Canvas;
2083
+ color: CanvasText;
2010
2084
  }
2011
2085
 
2012
2086
  .tag__remove-button {
2013
2087
  color: ButtonText;
2014
2088
  }
2089
+
2090
+ /* Per-semantic-variant forced-colors fallbacks. The visually-hidden
2091
+ semantic variant label (.tag__variant-label) keeps AT users
2092
+ informed; these blocks restore visual semantic distinction for
2093
+ sighted users in HCM where bg/color collapse to system defaults.
2094
+ Pattern: distinct border-style per variant (matches hx-badge). */
2095
+ .tag--success {
2096
+ border-style: solid;
2097
+ border-width: 2px;
2098
+ }
2099
+
2100
+ .tag--warning {
2101
+ border-style: dashed;
2102
+ border-width: 2px;
2103
+ }
2104
+
2105
+ .tag--danger {
2106
+ border-style: double;
2107
+ border-width: 3px;
2108
+ }
2015
2109
  }
2016
2110
  /* ── hx-text ── */
2017
2111
  :host {
@@ -109,6 +109,15 @@
109
109
  min-width: 0;
110
110
  }
111
111
 
112
+ /* (group-6 5.1) Wrapper around the default slot. Carries aria-hidden=true
113
+ so the visible message text is not double-announced alongside the
114
+ sr-only announcer. display:contents keeps the wrapper visually
115
+ transparent so children participate in the parent flex layout as if
116
+ the wrapper were not there. */
117
+ .alert__default-slot {
118
+ display: contents;
119
+ }
120
+
112
121
  /* ─── Actions ─── */
113
122
  /* Hidden by default; shown via JS slotchange detection to avoid invisible */
114
123
  /* margin-top spacing when no actions are slotted. */
@@ -574,6 +583,11 @@
574
583
  /* ─── Forced Colors (Windows High Contrast) ─── */
575
584
 
576
585
  @media (forced-colors: active) {
586
+ .meter:focus-visible {
587
+ outline: 2px solid Highlight;
588
+ outline-offset: var(--hx-focus-ring-offset, 2px);
589
+ }
590
+
577
591
  .meter__track {
578
592
  border: 1px solid CanvasText;
579
593
  }