@helixui/library 3.1.0-next.72 → 3.2.0-next.100

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 (254) hide show
  1. package/custom-elements.json +165 -328
  2. package/dist/components/hx-accordion/hx-accordion-item.styles.d.ts.map +1 -1
  3. package/dist/components/hx-accordion/index.js +1 -1
  4. package/dist/components/hx-alert/index.js +1 -1
  5. package/dist/components/hx-banner/index.js +1 -1
  6. package/dist/components/hx-breadcrumb/hx-breadcrumb-item.styles.d.ts.map +1 -1
  7. package/dist/components/hx-breadcrumb/index.js +1 -1
  8. package/dist/components/hx-button/hx-button.d.ts +44 -49
  9. package/dist/components/hx-button/hx-button.d.ts.map +1 -1
  10. package/dist/components/hx-button/hx-button.styles.d.ts.map +1 -1
  11. package/dist/components/hx-button/index.js +1 -1
  12. package/dist/components/hx-card/hx-card.styles.d.ts.map +1 -1
  13. package/dist/components/hx-card/index.js +1 -1
  14. package/dist/components/hx-carousel/index.js +1 -1
  15. package/dist/components/hx-checkbox/index.js +1 -1
  16. package/dist/components/hx-clinical-status/hx-clinical-status.styles.d.ts.map +1 -1
  17. package/dist/components/hx-clinical-status/index.js +1 -1
  18. package/dist/components/hx-code-snippet/hx-code-snippet.styles.d.ts.map +1 -1
  19. package/dist/components/hx-code-snippet/index.js +1 -1
  20. package/dist/components/hx-color-picker/hx-color-picker.styles.d.ts.map +1 -1
  21. package/dist/components/hx-color-picker/index.js +1 -1
  22. package/dist/components/hx-combobox/index.js +1 -1
  23. package/dist/components/hx-data-table/hx-data-table.styles.d.ts.map +1 -1
  24. package/dist/components/hx-data-table/index.js +1 -1
  25. package/dist/components/hx-date-picker/index.js +1 -1
  26. package/dist/components/hx-dialog/hx-dialog.styles.d.ts.map +1 -1
  27. package/dist/components/hx-dialog/index.js +1 -1
  28. package/dist/components/hx-drawer/hx-drawer.styles.d.ts.map +1 -1
  29. package/dist/components/hx-drawer/index.js +1 -1
  30. package/dist/components/hx-file-upload/hx-file-upload.styles.d.ts.map +1 -1
  31. package/dist/components/hx-file-upload/index.js +1 -1
  32. package/dist/components/hx-icon-button/hx-icon-button.styles.d.ts.map +1 -1
  33. package/dist/components/hx-icon-button/index.js +1 -1
  34. package/dist/components/hx-link/index.js +1 -1
  35. package/dist/components/hx-menu/hx-menu-item.styles.d.ts.map +1 -1
  36. package/dist/components/hx-menu/index.js +1 -1
  37. package/dist/components/hx-meter/hx-meter.styles.d.ts.map +1 -1
  38. package/dist/components/hx-meter/index.js +1 -1
  39. package/dist/components/hx-nav/hx-nav.styles.d.ts.map +1 -1
  40. package/dist/components/hx-nav/index.js +1 -1
  41. package/dist/components/hx-overflow-menu/hx-overflow-menu.styles.d.ts.map +1 -1
  42. package/dist/components/hx-overflow-menu/index.js +1 -1
  43. package/dist/components/hx-pagination/hx-pagination.styles.d.ts.map +1 -1
  44. package/dist/components/hx-pagination/index.js +1 -1
  45. package/dist/components/hx-phi-field/hx-phi-field.styles.d.ts.map +1 -1
  46. package/dist/components/hx-phi-field/index.js +1 -1
  47. package/dist/components/hx-popover/hx-popover.styles.d.ts.map +1 -1
  48. package/dist/components/hx-popover/index.js +1 -1
  49. package/dist/components/hx-radio-group/index.js +1 -1
  50. package/dist/components/hx-rating/index.js +1 -1
  51. package/dist/components/hx-select/hx-select.styles.d.ts.map +1 -1
  52. package/dist/components/hx-select/index.js +1 -1
  53. package/dist/components/hx-side-nav/hx-nav-item.d.ts +7 -5
  54. package/dist/components/hx-side-nav/hx-nav-item.d.ts.map +1 -1
  55. package/dist/components/hx-side-nav/hx-nav-item.styles.d.ts.map +1 -1
  56. package/dist/components/hx-side-nav/hx-side-nav.d.ts +9 -23
  57. package/dist/components/hx-side-nav/hx-side-nav.d.ts.map +1 -1
  58. package/dist/components/hx-side-nav/hx-side-nav.styles.d.ts.map +1 -1
  59. package/dist/components/hx-side-nav/index.js +1 -1
  60. package/dist/components/hx-slider/index.js +1 -1
  61. package/dist/components/hx-split-button/hx-split-button.d.ts +1 -1
  62. package/dist/components/hx-split-button/index.js +1 -1
  63. package/dist/components/hx-split-panel/hx-split-panel.styles.d.ts.map +1 -1
  64. package/dist/components/hx-split-panel/index.js +1 -1
  65. package/dist/components/hx-steps/hx-step.styles.d.ts.map +1 -1
  66. package/dist/components/hx-steps/index.js +1 -1
  67. package/dist/components/hx-switch/index.js +1 -1
  68. package/dist/components/hx-table/hx-table.styles.d.ts.map +1 -1
  69. package/dist/components/hx-table/index.js +1 -1
  70. package/dist/components/hx-tabs/index.js +1 -1
  71. package/dist/components/hx-text-input/hx-text-input.d.ts +18 -35
  72. package/dist/components/hx-text-input/hx-text-input.d.ts.map +1 -1
  73. package/dist/components/hx-text-input/index.js +1 -1
  74. package/dist/components/hx-textarea/index.js +1 -1
  75. package/dist/components/hx-time-picker/index.js +1 -1
  76. package/dist/components/hx-toast/hx-toast.d.ts +12 -8
  77. package/dist/components/hx-toast/hx-toast.d.ts.map +1 -1
  78. package/dist/components/hx-toast/hx-toast.styles.d.ts.map +1 -1
  79. package/dist/components/hx-toast/index.js +1 -1
  80. package/dist/components/hx-toggle-button/index.js +1 -1
  81. package/dist/components/hx-top-nav/hx-top-nav.styles.d.ts.map +1 -1
  82. package/dist/components/hx-top-nav/index.js +1 -1
  83. package/dist/components/hx-tree-view/hx-tree-item.styles.d.ts.map +1 -1
  84. package/dist/components/hx-tree-view/index.js +1 -1
  85. package/dist/css/helix-all.css +289 -237
  86. package/dist/css/helix-core.css +147 -53
  87. package/dist/css/helix-data.css +9 -14
  88. package/dist/css/helix-feedback.css +30 -20
  89. package/dist/css/helix-forms.css +53 -73
  90. package/dist/css/helix-layout.css +2 -8
  91. package/dist/css/helix-media.css +3 -3
  92. package/dist/css/helix-navigation.css +34 -41
  93. package/dist/css/helix-overlay.css +3 -12
  94. package/dist/css/helix-tokens.css +60 -5
  95. package/dist/css/helix-utility.css +5 -5
  96. package/dist/css/hx-alert.css +1 -1
  97. package/dist/css/hx-banner.css +2 -2
  98. package/dist/css/hx-button.css +143 -43
  99. package/dist/css/hx-card.css +1 -4
  100. package/dist/css/hx-carousel.css +3 -3
  101. package/dist/css/hx-checkbox.css +2 -2
  102. package/dist/css/hx-clinical-status.css +2 -4
  103. package/dist/css/hx-code-snippet.css +6 -4
  104. package/dist/css/hx-color-picker.css +3 -13
  105. package/dist/css/hx-combobox.css +7 -7
  106. package/dist/css/hx-data-table.css +2 -8
  107. package/dist/css/hx-date-picker.css +7 -7
  108. package/dist/css/hx-dialog.css +1 -4
  109. package/dist/css/hx-drawer.css +1 -4
  110. package/dist/css/hx-file-upload.css +4 -13
  111. package/dist/css/hx-icon-button.css +2 -5
  112. package/dist/css/hx-link.css +1 -1
  113. package/dist/css/hx-meter.css +1 -2
  114. package/dist/css/hx-nav.css +2 -8
  115. package/dist/css/hx-overflow-menu.css +2 -8
  116. package/dist/css/hx-pagination.css +2 -8
  117. package/dist/css/hx-phi-field.css +1 -4
  118. package/dist/css/hx-popover.css +1 -4
  119. package/dist/css/hx-rating.css +3 -3
  120. package/dist/css/hx-select.css +3 -4
  121. package/dist/css/hx-side-nav.css +26 -12
  122. package/dist/css/hx-slider.css +4 -4
  123. package/dist/css/hx-split-button.css +5 -5
  124. package/dist/css/hx-split-panel.css +2 -8
  125. package/dist/css/hx-switch.css +3 -3
  126. package/dist/css/hx-table.css +1 -2
  127. package/dist/css/hx-text-input.css +8 -8
  128. package/dist/css/hx-textarea.css +2 -2
  129. package/dist/css/hx-time-picker.css +3 -3
  130. package/dist/css/hx-toast.css +26 -15
  131. package/dist/css/hx-toggle-button.css +4 -4
  132. package/dist/css/hx-top-nav.css +1 -4
  133. package/dist/css/hx-tree-view.css +1 -1
  134. package/dist/css/index.css +1 -1
  135. package/dist/css/manifest.json +60 -46
  136. package/dist/index.js +44 -44
  137. package/dist/shared/{hx-accordion-cnKg4_la.js → hx-accordion-ZVzgDzTG.js} +4 -5
  138. package/dist/shared/hx-accordion-ZVzgDzTG.js.map +1 -0
  139. package/dist/shared/{hx-alert-BZH8iHQf.js → hx-alert-C597yHpD.js} +2 -2
  140. package/dist/shared/{hx-alert-BZH8iHQf.js.map → hx-alert-C597yHpD.js.map} +1 -1
  141. package/dist/shared/{hx-banner-DT7Zn9Bo.js → hx-banner-Cxd7eFUP.js} +3 -3
  142. package/dist/shared/{hx-banner-DT7Zn9Bo.js.map → hx-banner-Cxd7eFUP.js.map} +1 -1
  143. package/dist/shared/{hx-breadcrumb-item-COeYcB2x.js → hx-breadcrumb-item-3tKppF9h.js} +2 -5
  144. package/dist/shared/{hx-breadcrumb-item-COeYcB2x.js.map → hx-breadcrumb-item-3tKppF9h.js.map} +1 -1
  145. package/dist/shared/{hx-button-modUSOpY.js → hx-button-9OUjJnk7.js} +167 -68
  146. package/dist/shared/hx-button-9OUjJnk7.js.map +1 -0
  147. package/dist/shared/{hx-card-CU1QnjNb.js → hx-card-qNAM2QNV.js} +6 -9
  148. package/dist/shared/hx-card-qNAM2QNV.js.map +1 -0
  149. package/dist/shared/{hx-carousel-item-BaE4hpLl.js → hx-carousel-item-z1Lc24op.js} +4 -4
  150. package/dist/shared/hx-carousel-item-z1Lc24op.js.map +1 -0
  151. package/dist/shared/{hx-checkbox-C46TyXhM.js → hx-checkbox-DBD-gMoz.js} +3 -3
  152. package/dist/shared/{hx-checkbox-C46TyXhM.js.map → hx-checkbox-DBD-gMoz.js.map} +1 -1
  153. package/dist/shared/{hx-clinical-status-BmSjfSEN.js → hx-clinical-status-D3XQIOqX.js} +3 -5
  154. package/dist/shared/hx-clinical-status-D3XQIOqX.js.map +1 -0
  155. package/dist/shared/{hx-code-snippet-CJ0FbQYG.js → hx-code-snippet-B26RM1_C.js} +10 -8
  156. package/dist/shared/{hx-code-snippet-CJ0FbQYG.js.map → hx-code-snippet-B26RM1_C.js.map} +1 -1
  157. package/dist/shared/{hx-color-picker-DiDLZyvK.js → hx-color-picker-uRc865FJ.js} +23 -33
  158. package/dist/shared/hx-color-picker-uRc865FJ.js.map +1 -0
  159. package/dist/shared/{hx-combobox-DaA5dBC4.js → hx-combobox-ClhNRAS5.js} +8 -8
  160. package/dist/shared/hx-combobox-ClhNRAS5.js.map +1 -0
  161. package/dist/shared/{hx-data-table-Cq3t86Ic.js → hx-data-table-CLqVqdxr.js} +3 -9
  162. package/dist/shared/hx-data-table-CLqVqdxr.js.map +1 -0
  163. package/dist/shared/{hx-date-picker-DMqRQNSB.js → hx-date-picker-BJm7Yrda.js} +8 -8
  164. package/dist/shared/{hx-date-picker-DMqRQNSB.js.map → hx-date-picker-BJm7Yrda.js.map} +1 -1
  165. package/dist/shared/{hx-dialog-eIS8tcDm.js → hx-dialog-DRN_1-Y-.js} +2 -5
  166. package/dist/shared/hx-dialog-DRN_1-Y-.js.map +1 -0
  167. package/dist/shared/{hx-drawer-DDhDz7RI.js → hx-drawer-Y1Ui2IWJ.js} +2 -5
  168. package/dist/shared/hx-drawer-Y1Ui2IWJ.js.map +1 -0
  169. package/dist/shared/{hx-file-upload-zTDbjsRw.js → hx-file-upload-D3rKROK5.js} +17 -26
  170. package/dist/shared/hx-file-upload-D3rKROK5.js.map +1 -0
  171. package/dist/shared/{hx-icon-button-BmV97nqz.js → hx-icon-button-CGNdQSFM.js} +3 -6
  172. package/dist/shared/hx-icon-button-CGNdQSFM.js.map +1 -0
  173. package/dist/shared/{hx-link-DmiV-mPw.js → hx-link-9Ig2DW6L.js} +5 -5
  174. package/dist/shared/{hx-link-DmiV-mPw.js.map → hx-link-9Ig2DW6L.js.map} +1 -1
  175. package/dist/shared/{hx-menu-divider-j__TZjH2.js → hx-menu-divider-C2omnPtj.js} +2 -5
  176. package/dist/shared/hx-menu-divider-C2omnPtj.js.map +1 -0
  177. package/dist/shared/{hx-meter-Cm7k_Ro8.js → hx-meter-BPscsw5t.js} +2 -3
  178. package/dist/shared/hx-meter-BPscsw5t.js.map +1 -0
  179. package/dist/shared/{hx-nav-item-D8xHLVOs.js → hx-nav-item-CqbO5-T5.js} +140 -90
  180. package/dist/shared/hx-nav-item-CqbO5-T5.js.map +1 -0
  181. package/dist/shared/{hx-nav-LoyEKZQC.js → hx-nav-ldFM3Fle.js} +37 -43
  182. package/dist/shared/hx-nav-ldFM3Fle.js.map +1 -0
  183. package/dist/shared/{hx-overflow-menu-BmKyAp5D.js → hx-overflow-menu-DCLsdIBy.js} +3 -9
  184. package/dist/shared/hx-overflow-menu-DCLsdIBy.js.map +1 -0
  185. package/dist/shared/{hx-pagination-Dqw5dorC.js → hx-pagination-C7y8GVyU.js} +54 -60
  186. package/dist/shared/hx-pagination-C7y8GVyU.js.map +1 -0
  187. package/dist/shared/{hx-phi-field-Bf9TdtC1.js → hx-phi-field-C19oxlrr.js} +2 -5
  188. package/dist/shared/hx-phi-field-C19oxlrr.js.map +1 -0
  189. package/dist/shared/{hx-popover-B93rTAfr.js → hx-popover-B-FP3-wW.js} +8 -11
  190. package/dist/shared/hx-popover-B-FP3-wW.js.map +1 -0
  191. package/dist/shared/{hx-radio-N8xgDd_5.js → hx-radio-dFjUAost.js} +4 -4
  192. package/dist/shared/{hx-radio-N8xgDd_5.js.map → hx-radio-dFjUAost.js.map} +1 -1
  193. package/dist/shared/{hx-rating-i2FL1WUN.js → hx-rating-CGtsejNf.js} +4 -4
  194. package/dist/shared/{hx-rating-i2FL1WUN.js.map → hx-rating-CGtsejNf.js.map} +1 -1
  195. package/dist/shared/{hx-select-vgaBo1Ai.js → hx-select-Bf4usFts.js} +4 -5
  196. package/dist/shared/hx-select-Bf4usFts.js.map +1 -0
  197. package/dist/shared/{hx-slider-ydBamYhd.js → hx-slider-m0aEClH1.js} +5 -5
  198. package/dist/shared/{hx-slider-ydBamYhd.js.map → hx-slider-m0aEClH1.js.map} +1 -1
  199. package/dist/shared/{hx-split-button-BeMsmS6N.js → hx-split-button-BxDFfx4D.js} +6 -6
  200. package/dist/shared/{hx-split-button-BeMsmS6N.js.map → hx-split-button-BxDFfx4D.js.map} +1 -1
  201. package/dist/shared/{hx-split-panel-BVG1VWNT.js → hx-split-panel-B-u0Z3mm.js} +3 -9
  202. package/dist/shared/hx-split-panel-B-u0Z3mm.js.map +1 -0
  203. package/dist/shared/{hx-step-DL3PbOzm.js → hx-step-R2rjp1fT.js} +2 -5
  204. package/dist/shared/hx-step-R2rjp1fT.js.map +1 -0
  205. package/dist/shared/{hx-switch-Dougzsgp.js → hx-switch-DvAW4YY-.js} +4 -4
  206. package/dist/shared/{hx-switch-Dougzsgp.js.map → hx-switch-DvAW4YY-.js.map} +1 -1
  207. package/dist/shared/{hx-tab-panel-CbkO9VKu.js → hx-tab-panel-SWOEHuJc.js} +3 -3
  208. package/dist/shared/{hx-tab-panel-CbkO9VKu.js.map → hx-tab-panel-SWOEHuJc.js.map} +1 -1
  209. package/dist/shared/{hx-td-1zwTFLRw.js → hx-td-DnnEMIuA.js} +2 -3
  210. package/dist/shared/hx-td-DnnEMIuA.js.map +1 -0
  211. package/dist/shared/{hx-text-input-B-caO5fI.js → hx-text-input-Bn7Gn8CI.js} +24 -25
  212. package/dist/shared/hx-text-input-Bn7Gn8CI.js.map +1 -0
  213. package/dist/shared/{hx-textarea-D9O4U8cb.js → hx-textarea-Jx1xnhgv.js} +7 -7
  214. package/dist/shared/{hx-textarea-D9O4U8cb.js.map → hx-textarea-Jx1xnhgv.js.map} +1 -1
  215. package/dist/shared/{hx-time-picker-m0z4nFB-.js → hx-time-picker-BoEIZwzv.js} +4 -4
  216. package/dist/shared/{hx-time-picker-m0z4nFB-.js.map → hx-time-picker-BoEIZwzv.js.map} +1 -1
  217. package/dist/shared/{hx-toggle-button-Dd8clXB4.js → hx-toggle-button-DPAIh_Xo.js} +24 -24
  218. package/dist/shared/{hx-toggle-button-Dd8clXB4.js.map → hx-toggle-button-DPAIh_Xo.js.map} +1 -1
  219. package/dist/shared/{hx-top-nav-CchPYaiV.js → hx-top-nav-DP6OFS8C.js} +11 -14
  220. package/dist/shared/hx-top-nav-DP6OFS8C.js.map +1 -0
  221. package/dist/shared/{hx-tree-item-DtMC3DTa.js → hx-tree-item-Dt0Ozqyr.js} +4 -10
  222. package/dist/shared/hx-tree-item-Dt0Ozqyr.js.map +1 -0
  223. package/dist/shared/{toast-factory-DvDRAh0l.js → toast-factory-YSznocIV.js} +66 -56
  224. package/dist/shared/toast-factory-YSznocIV.js.map +1 -0
  225. package/figma-inventory.json +292 -444
  226. package/package.json +2 -2
  227. package/dist/shared/hx-accordion-cnKg4_la.js.map +0 -1
  228. package/dist/shared/hx-button-modUSOpY.js.map +0 -1
  229. package/dist/shared/hx-card-CU1QnjNb.js.map +0 -1
  230. package/dist/shared/hx-carousel-item-BaE4hpLl.js.map +0 -1
  231. package/dist/shared/hx-clinical-status-BmSjfSEN.js.map +0 -1
  232. package/dist/shared/hx-color-picker-DiDLZyvK.js.map +0 -1
  233. package/dist/shared/hx-combobox-DaA5dBC4.js.map +0 -1
  234. package/dist/shared/hx-data-table-Cq3t86Ic.js.map +0 -1
  235. package/dist/shared/hx-dialog-eIS8tcDm.js.map +0 -1
  236. package/dist/shared/hx-drawer-DDhDz7RI.js.map +0 -1
  237. package/dist/shared/hx-file-upload-zTDbjsRw.js.map +0 -1
  238. package/dist/shared/hx-icon-button-BmV97nqz.js.map +0 -1
  239. package/dist/shared/hx-menu-divider-j__TZjH2.js.map +0 -1
  240. package/dist/shared/hx-meter-Cm7k_Ro8.js.map +0 -1
  241. package/dist/shared/hx-nav-LoyEKZQC.js.map +0 -1
  242. package/dist/shared/hx-nav-item-D8xHLVOs.js.map +0 -1
  243. package/dist/shared/hx-overflow-menu-BmKyAp5D.js.map +0 -1
  244. package/dist/shared/hx-pagination-Dqw5dorC.js.map +0 -1
  245. package/dist/shared/hx-phi-field-Bf9TdtC1.js.map +0 -1
  246. package/dist/shared/hx-popover-B93rTAfr.js.map +0 -1
  247. package/dist/shared/hx-select-vgaBo1Ai.js.map +0 -1
  248. package/dist/shared/hx-split-panel-BVG1VWNT.js.map +0 -1
  249. package/dist/shared/hx-step-DL3PbOzm.js.map +0 -1
  250. package/dist/shared/hx-td-1zwTFLRw.js.map +0 -1
  251. package/dist/shared/hx-text-input-B-caO5fI.js.map +0 -1
  252. package/dist/shared/hx-top-nav-CchPYaiV.js.map +0 -1
  253. package/dist/shared/hx-tree-item-DtMC3DTa.js.map +0 -1
  254. package/dist/shared/toast-factory-DvDRAh0l.js.map +0 -1
@@ -1,9 +1,9 @@
1
1
  {
2
2
  "schemaVersion": "1.0.0",
3
- "generatedAt": "2026-04-25T10:56:18.503Z",
3
+ "generatedAt": "2026-04-26T11:16:10.504Z",
4
4
  "sourceCem": "custom-elements.json",
5
- "helixVersion": "3.1.0",
6
- "tokensVersion": "3.0.0",
5
+ "helixVersion": "3.2.0",
6
+ "tokensVersion": "3.2.0",
7
7
  "components": [
8
8
  {
9
9
  "tag": "hx-accordion",
@@ -2690,36 +2690,41 @@
2690
2690
  ],
2691
2691
  "cssProperties": [
2692
2692
  {
2693
- "description": "Button background color.",
2693
+ "description": "Button background color (3.2.1 cascade — variant rules route through action.{primary,secondary,ghost,danger}.bg).",
2694
2694
  "name": "--hx-button-bg",
2695
- "default": "var(--hx-color-primary-500)",
2695
+ "default": "var(--hx-color-action-primary-bg)",
2696
2696
  "figmaBinding": {
2697
2697
  "target": "Fill",
2698
2698
  "layerSelector": "root",
2699
- "semanticToken": "color/primary",
2700
- "fallbackPrimitive": "color/primary/500",
2699
+ "semanticToken": "color/action/primary/bg",
2700
+ "fallbackPrimitive": null,
2701
2701
  "literalFallback": null
2702
2702
  }
2703
2703
  },
2704
2704
  {
2705
- "description": "Hover background color override. When set, overrides the variant default hover background from outside the shadow DOM.",
2705
+ "description": "Hover background override (primary and danger variants only). Other variants (secondary/outline, ghost) keep their hover fills routed through their semantic action.* tokens and do not consume this hook. Under [inverted] for primary/danger, hover and active share a paint (combined :hover, :active rule), so this override applies to both states unless --hx-button-active-bg also takes precedence.",
2706
2706
  "name": "--hx-button-hover-bg",
2707
2707
  "figmaBinding": null
2708
2708
  },
2709
2709
  {
2710
- "description": "Button text color.",
2710
+ "description": "Pressed/active background override (primary and danger variants only, including their inverted modes). Takes precedence over --hx-button-hover-bg in the fallback chain. Standard-mode primary/danger default to action.{primary,danger}.bg-active (with filter:none) for AA-pinned pressed contrast. Inverted-mode primary/danger reuse action.{primary,danger}.bg-inverted-hover (combined :hover, :active rule); setting --hx-button-active-bg under [inverted] therefore overrides the lifted hover fill as well as the pressed fill — the two share a paint in inverted mode. Other variants do not consume this hook.",
2711
+ "name": "--hx-button-active-bg",
2712
+ "figmaBinding": null
2713
+ },
2714
+ {
2715
+ "description": "Button text color (variants route through text.on-{role} / text.on-{role}-strong).",
2711
2716
  "name": "--hx-button-color",
2712
- "default": "var(--hx-color-neutral-0)",
2717
+ "default": "var(--hx-color-text-on-primary)",
2713
2718
  "figmaBinding": {
2714
2719
  "target": "Fill",
2715
2720
  "layerSelector": "root",
2716
- "semanticToken": "color/neutral",
2717
- "fallbackPrimitive": "color/neutral/0",
2721
+ "semanticToken": "color/text/on/primary",
2722
+ "fallbackPrimitive": null,
2718
2723
  "literalFallback": null
2719
2724
  }
2720
2725
  },
2721
2726
  {
2722
- "description": "Button border color.",
2727
+ "description": "Button border color (secondary/outline variants route through action.secondary.border).",
2723
2728
  "name": "--hx-button-border-color",
2724
2729
  "default": "transparent",
2725
2730
  "figmaBinding": {
@@ -2779,249 +2784,178 @@
2779
2784
  }
2780
2785
  },
2781
2786
  {
2782
- "description": "Text color when inverted.",
2787
+ "description": "Text color when inverted (resolves to neutral-0).",
2783
2788
  "name": "--hx-button-inverted-color",
2784
- "default": "#ffffff",
2789
+ "default": "var(--hx-color-text-inverse)",
2785
2790
  "figmaBinding": {
2786
2791
  "target": "Fill",
2787
2792
  "layerSelector": "root",
2788
- "semanticToken": null,
2793
+ "semanticToken": "color/text/inverse",
2789
2794
  "fallbackPrimitive": null,
2790
- "literalFallback": "#ffffff"
2795
+ "literalFallback": null
2791
2796
  }
2792
2797
  },
2793
2798
  {
2794
- "description": "Ghost hover bg when inverted.",
2795
- "name": "--hx-button-inverted-ghost-hover-bg",
2796
- "default": "rgba(255,255,255,0.15)",
2799
+ "description": "Foreground override for inverted primary hover and pressed (combined :hover, :active rule). Defaults to text.on-primary (neutral-900, no dark-mode flip) so dark text rides the lifted primary-400 fill — text.inverse on light teal collapses to ~2.4:1 in light mode.",
2800
+ "name": "--hx-button-inverted-primary-interactive-color",
2801
+ "default": "var(--hx-color-text-on-primary)",
2797
2802
  "figmaBinding": {
2798
2803
  "target": "Fill",
2799
2804
  "layerSelector": "root",
2800
- "semanticToken": null,
2805
+ "semanticToken": "color/text/on/primary",
2801
2806
  "fallbackPrimitive": null,
2802
- "literalFallback": "rgba(255,255,255,0.15)"
2807
+ "literalFallback": null
2803
2808
  }
2804
2809
  },
2805
2810
  {
2806
- "description": "Focus ring color when inverted.",
2807
- "name": "--hx-button-inverted-focus-ring-color",
2808
- "default": "rgba(255,255,255,0.5)",
2811
+ "description": "Foreground override for inverted danger hover and pressed (combined :hover, :active rule). Defaults to text.on-error (neutral-900); same rationale as the primary override.",
2812
+ "name": "--hx-button-inverted-danger-interactive-color",
2813
+ "default": "var(--hx-color-text-on-error)",
2809
2814
  "figmaBinding": {
2810
2815
  "target": "Fill",
2811
2816
  "layerSelector": "root",
2812
- "semanticToken": null,
2817
+ "semanticToken": "color/text/on/error",
2813
2818
  "fallbackPrimitive": null,
2814
- "literalFallback": "rgba(255,255,255,0.5)"
2819
+ "literalFallback": null
2815
2820
  }
2816
2821
  },
2817
2822
  {
2818
- "description": "Opacity.",
2819
- "name": "--hx-opacity-disabled",
2820
- "figmaBinding": null
2821
- },
2822
- {
2823
- "description": "Spacing token.",
2824
- "name": "--hx-space-2",
2825
- "figmaBinding": null
2826
- },
2827
- {
2828
- "description": "Width.",
2829
- "name": "--hx-border-width-thin",
2830
- "figmaBinding": null
2831
- },
2832
- {
2833
- "description": "CSS custom property.",
2834
- "name": "--hx-border-radius-md",
2835
- "figmaBinding": null
2836
- },
2837
- {
2838
- "description": "Color.",
2839
- "name": "--hx-color-primary-500",
2840
- "figmaBinding": null
2841
- },
2842
- {
2843
- "description": "Color.",
2844
- "name": "--hx-color-neutral-0",
2845
- "figmaBinding": null
2846
- },
2847
- {
2848
- "description": "Font family.",
2849
- "name": "--hx-font-family-sans",
2850
- "figmaBinding": null
2851
- },
2852
- {
2853
- "description": "Font weight.",
2854
- "name": "--hx-font-weight-semibold",
2855
- "figmaBinding": null
2856
- },
2857
- {
2858
- "description": "Line height.",
2859
- "name": "--hx-line-height-tight",
2860
- "figmaBinding": null
2861
- },
2862
- {
2863
- "description": "Transition timing.",
2864
- "name": "--hx-transition-fast",
2865
- "figmaBinding": null
2866
- },
2867
- {
2868
- "description": "Width.",
2869
- "name": "--hx-focus-ring-width",
2870
- "figmaBinding": null
2871
- },
2872
- {
2873
- "description": "Color.",
2874
- "name": "--hx-focus-ring-color",
2875
- "figmaBinding": null
2876
- },
2877
- {
2878
- "description": "CSS custom property.",
2879
- "name": "--hx-focus-ring-offset",
2880
- "figmaBinding": null
2881
- },
2882
- {
2883
- "description": "CSS filter.",
2884
- "name": "--hx-filter-brightness-hover",
2885
- "figmaBinding": null
2886
- },
2887
- {
2888
- "description": "CSS filter.",
2889
- "name": "--hx-filter-brightness-active",
2890
- "figmaBinding": null
2891
- },
2892
- {
2893
- "description": "Spacing token.",
2894
- "name": "--hx-space-1",
2895
- "figmaBinding": null
2896
- },
2897
- {
2898
- "description": "Spacing token.",
2899
- "name": "--hx-space-3",
2900
- "figmaBinding": null
2901
- },
2902
- {
2903
- "description": "Font size.",
2904
- "name": "--hx-font-size-sm",
2905
- "figmaBinding": null
2823
+ "description": "Ghost hover bg when inverted (overlay-white-30 ≈ 5:1 vs neutral-900).",
2824
+ "name": "--hx-button-inverted-ghost-hover-bg",
2825
+ "default": "var(--hx-color-border-on-dark-default)",
2826
+ "figmaBinding": {
2827
+ "target": "Fill",
2828
+ "layerSelector": "root",
2829
+ "semanticToken": "color/border/on/dark/default",
2830
+ "fallbackPrimitive": null,
2831
+ "literalFallback": null
2832
+ }
2906
2833
  },
2907
2834
  {
2908
- "description": "Minimum touch target size.",
2909
- "name": "--hx-touch-target-min",
2910
- "figmaBinding": null
2835
+ "description": "Focus ring color when inverted (overlay-white-70 = ~5:1 vs neutral-900).",
2836
+ "name": "--hx-button-inverted-focus-ring-color",
2837
+ "default": "var(--hx-color-border-on-dark-strong)",
2838
+ "figmaBinding": {
2839
+ "target": "Fill",
2840
+ "layerSelector": "root",
2841
+ "semanticToken": "color/border/on/dark/strong",
2842
+ "fallbackPrimitive": null,
2843
+ "literalFallback": null
2844
+ }
2911
2845
  },
2912
2846
  {
2913
- "description": "Spacing token.",
2914
- "name": "--hx-space-4",
2847
+ "description": "Primary variant resting fill (3.2.1 semantic action layer).",
2848
+ "name": "--hx-color-action-primary-bg",
2915
2849
  "figmaBinding": null
2916
2850
  },
2917
2851
  {
2918
- "description": "Font size.",
2919
- "name": "--hx-font-size-md",
2852
+ "description": "Primary variant hover fill.",
2853
+ "name": "--hx-color-action-primary-bg-hover",
2920
2854
  "figmaBinding": null
2921
2855
  },
2922
2856
  {
2923
- "description": "Size token.",
2924
- "name": "--hx-size-10",
2857
+ "description": "Primary variant active/pressed fill.",
2858
+ "name": "--hx-color-action-primary-bg-active",
2925
2859
  "figmaBinding": null
2926
2860
  },
2927
2861
  {
2928
- "description": "Spacing token.",
2929
- "name": "--hx-space-6",
2862
+ "description": "Secondary/outline variant fg (resolves to primary-600 light, primary-400 dark). Consumed only by .button--secondary; the actual border/surface paint for outline currently routes through --hx-color-border-strong / --hx-color-surface-raised in styles, with this token reserved for the foreground.",
2863
+ "name": "--hx-color-action-secondary-fg",
2930
2864
  "figmaBinding": null
2931
2865
  },
2932
2866
  {
2933
- "description": "Font size.",
2934
- "name": "--hx-font-size-lg",
2867
+ "description": "Secondary/outline variant border (3.2.1 semantic; outline still routes through --hx-color-border-strong by default).",
2868
+ "name": "--hx-color-action-secondary-border",
2935
2869
  "figmaBinding": null
2936
2870
  },
2937
2871
  {
2938
- "description": "Size token.",
2939
- "name": "--hx-size-12",
2872
+ "description": "Secondary/outline variant hover fill (3.2.1 semantic; outline still routes through --hx-color-surface-raised by default).",
2873
+ "name": "--hx-color-action-secondary-bg-hover",
2940
2874
  "figmaBinding": null
2941
2875
  },
2942
2876
  {
2943
- "description": "Color.",
2944
- "name": "--hx-color-primary-50",
2877
+ "description": "Ghost variant fg.",
2878
+ "name": "--hx-color-action-ghost-fg",
2945
2879
  "figmaBinding": null
2946
2880
  },
2947
2881
  {
2948
- "description": "Color.",
2949
- "name": "--hx-color-neutral-100",
2882
+ "description": "Ghost variant hover fill.",
2883
+ "name": "--hx-color-action-ghost-bg-hover",
2950
2884
  "figmaBinding": null
2951
2885
  },
2952
2886
  {
2953
- "description": "Color.",
2954
- "name": "--hx-color-neutral-900",
2887
+ "description": "Danger variant resting fill.",
2888
+ "name": "--hx-color-action-danger-bg",
2955
2889
  "figmaBinding": null
2956
2890
  },
2957
2891
  {
2958
- "description": "Color.",
2959
- "name": "--hx-color-neutral-200",
2892
+ "description": "Danger variant hover fill.",
2893
+ "name": "--hx-color-action-danger-bg-hover",
2960
2894
  "figmaBinding": null
2961
2895
  },
2962
2896
  {
2963
- "description": "Color.",
2964
- "name": "--hx-color-error-500",
2897
+ "description": "Danger variant active fill.",
2898
+ "name": "--hx-color-action-danger-bg-active",
2965
2899
  "figmaBinding": null
2966
2900
  },
2967
2901
  {
2968
- "description": "Color.",
2969
- "name": "--hx-color-error-600",
2902
+ "description": "Primary variant hover/pressed fill on dark/inverted surface (resolves to primary-400, 7.27:1 on neutral-900).",
2903
+ "name": "--hx-color-action-primary-bg-inverted-hover",
2970
2904
  "figmaBinding": null
2971
2905
  },
2972
2906
  {
2973
- "description": "Color.",
2974
- "name": "--hx-color-neutral-300",
2907
+ "description": "Danger variant hover/pressed fill on dark/inverted surface (resolves to error-400, 6.58:1 on neutral-900).",
2908
+ "name": "--hx-color-action-danger-bg-inverted-hover",
2975
2909
  "figmaBinding": null
2976
2910
  },
2977
2911
  {
2978
- "description": "Color.",
2979
- "name": "--hx-color-neutral-50",
2912
+ "description": "Foreground for primary fill (resolves to neutral-900 — AA-tuned for primary-500).",
2913
+ "name": "--hx-color-text-on-primary",
2980
2914
  "figmaBinding": null
2981
2915
  },
2982
2916
  {
2983
- "description": "Color.",
2984
- "name": "--hx-color-primary-600",
2917
+ "description": "Foreground for primary-hover fill (resolves to neutral-0 across modes).",
2918
+ "name": "--hx-color-text-on-primary-strong",
2985
2919
  "figmaBinding": null
2986
2920
  },
2987
2921
  {
2988
- "description": "Animation duration.",
2989
- "name": "--hx-duration-spinner",
2922
+ "description": "Foreground for danger fill (resolves to neutral-900).",
2923
+ "name": "--hx-color-text-on-error",
2990
2924
  "figmaBinding": null
2991
2925
  },
2992
2926
  {
2993
- "description": "Opacity.",
2994
- "name": "--hx-opacity-muted",
2927
+ "description": "Foreground for danger-hover fill (resolves to neutral-0 across modes).",
2928
+ "name": "--hx-color-text-on-error-strong",
2995
2929
  "figmaBinding": null
2996
2930
  },
2997
2931
  {
2998
- "description": "Overlay color.",
2999
- "name": "--hx-overlay-white-50",
2932
+ "description": "Foreground for tertiary variant on surface.sunken.",
2933
+ "name": "--hx-color-text-primary",
3000
2934
  "figmaBinding": null
3001
2935
  },
3002
2936
  {
3003
- "description": "Color.",
3004
- "name": "--hx-color-primary-400",
2937
+ "description": "Tertiary variant resting fill.",
2938
+ "name": "--hx-color-surface-sunken",
3005
2939
  "figmaBinding": null
3006
2940
  },
3007
2941
  {
3008
- "description": "Overlay color.",
3009
- "name": "--hx-overlay-white-70",
2942
+ "description": "Tertiary variant hover fill.",
2943
+ "name": "--hx-color-surface-raised",
3010
2944
  "figmaBinding": null
3011
2945
  },
3012
2946
  {
3013
- "description": "Overlay color.",
3014
- "name": "--hx-overlay-white-15",
2947
+ "description": "Inverted-tertiary resting border (overlay-white-10).",
2948
+ "name": "--hx-color-border-on-dark-subtle",
3015
2949
  "figmaBinding": null
3016
2950
  },
3017
2951
  {
3018
- "description": "Overlay color.",
3019
- "name": "--hx-overlay-white-25",
2952
+ "description": "Inverted-tertiary hover border + inverted-secondary/ghost hover border (overlay-white-30).",
2953
+ "name": "--hx-color-border-on-dark-default",
3020
2954
  "figmaBinding": null
3021
2955
  },
3022
2956
  {
3023
- "description": "Overlay color.",
3024
- "name": "--hx-overlay-white-20",
2957
+ "description": "Inverted focus-visible outline (overlay-white-70).",
2958
+ "name": "--hx-color-border-on-dark-strong",
3025
2959
  "figmaBinding": null
3026
2960
  }
3027
2961
  ],
@@ -13658,12 +13592,12 @@
13658
13592
  {
13659
13593
  "description": "Item text color.",
13660
13594
  "name": "--hx-nav-item-color",
13661
- "default": "var(--hx-color-neutral-300)",
13595
+ "default": "var(--hx-color-text-inverse)",
13662
13596
  "figmaBinding": {
13663
13597
  "target": "Fill",
13664
13598
  "layerSelector": "root",
13665
- "semanticToken": "color/neutral",
13666
- "fallbackPrimitive": "color/neutral/300",
13599
+ "semanticToken": "color/text/inverse",
13600
+ "fallbackPrimitive": null,
13667
13601
  "literalFallback": null
13668
13602
  }
13669
13603
  },
@@ -13675,36 +13609,36 @@
13675
13609
  {
13676
13610
  "description": "Item hover text color.",
13677
13611
  "name": "--hx-nav-item-hover-color",
13678
- "default": "var(--hx-color-neutral-100)",
13612
+ "default": "var(--hx-color-text-inverse)",
13679
13613
  "figmaBinding": {
13680
13614
  "target": "Fill",
13681
13615
  "layerSelector": "root",
13682
- "semanticToken": "color/neutral",
13683
- "fallbackPrimitive": "color/neutral/100",
13616
+ "semanticToken": "color/text/inverse",
13617
+ "fallbackPrimitive": null,
13684
13618
  "literalFallback": null
13685
13619
  }
13686
13620
  },
13687
13621
  {
13688
13622
  "description": "Active item background.",
13689
13623
  "name": "--hx-nav-item-active-bg",
13690
- "default": "var(--hx-color-primary-600)",
13624
+ "default": "var(--hx-color-action-primary-bg-hover)",
13691
13625
  "figmaBinding": {
13692
13626
  "target": "Fill",
13693
13627
  "layerSelector": "root",
13694
- "semanticToken": "color/primary",
13695
- "fallbackPrimitive": "color/primary/600",
13628
+ "semanticToken": "color/action/primary/bg/hover",
13629
+ "fallbackPrimitive": null,
13696
13630
  "literalFallback": null
13697
13631
  }
13698
13632
  },
13699
13633
  {
13700
13634
  "description": "Active item text color.",
13701
13635
  "name": "--hx-nav-item-active-color",
13702
- "default": "var(--hx-color-neutral-50)",
13636
+ "default": "var(--hx-color-text-on-primary-strong)",
13703
13637
  "figmaBinding": {
13704
13638
  "target": "Fill",
13705
13639
  "layerSelector": "root",
13706
- "semanticToken": "color/neutral",
13707
- "fallbackPrimitive": "color/neutral/50",
13640
+ "semanticToken": "color/text/on/primary/strong",
13641
+ "fallbackPrimitive": null,
13708
13642
  "literalFallback": null
13709
13643
  }
13710
13644
  },
@@ -13716,12 +13650,36 @@
13716
13650
  {
13717
13651
  "description": "Component host background color.",
13718
13652
  "name": "--hx-nav-item-host-bg",
13719
- "default": "var(--hx-color-neutral-900)",
13653
+ "default": "var(--hx-color-surface-inverse)",
13720
13654
  "figmaBinding": {
13721
13655
  "target": "Fill",
13722
13656
  "layerSelector": "root",
13723
- "semanticToken": "color/neutral",
13724
- "fallbackPrimitive": "color/neutral/900",
13657
+ "semanticToken": "color/surface/inverse",
13658
+ "fallbackPrimitive": null,
13659
+ "literalFallback": null
13660
+ }
13661
+ },
13662
+ {
13663
+ "description": "Tooltip background color (collapsed-rail tooltip).",
13664
+ "name": "--hx-nav-item-tooltip-bg",
13665
+ "default": "var(--hx-color-surface-inverse)",
13666
+ "figmaBinding": {
13667
+ "target": "Fill",
13668
+ "layerSelector": "root",
13669
+ "semanticToken": "color/surface/inverse",
13670
+ "fallbackPrimitive": null,
13671
+ "literalFallback": null
13672
+ }
13673
+ },
13674
+ {
13675
+ "description": "Tooltip text color (collapsed-rail tooltip).",
13676
+ "name": "--hx-nav-item-tooltip-color",
13677
+ "default": "var(--hx-color-text-inverse)",
13678
+ "figmaBinding": {
13679
+ "target": "Fill",
13680
+ "layerSelector": "root",
13681
+ "semanticToken": "color/text/inverse",
13682
+ "fallbackPrimitive": null,
13725
13683
  "literalFallback": null
13726
13684
  }
13727
13685
  }
@@ -17626,36 +17584,36 @@
17626
17584
  {
17627
17585
  "description": "Background color.",
17628
17586
  "name": "--hx-side-nav-bg",
17629
- "default": "var(--hx-color-neutral-900)",
17587
+ "default": "var(--hx-color-surface-inverse)",
17630
17588
  "figmaBinding": {
17631
17589
  "target": "Fill",
17632
17590
  "layerSelector": "root",
17633
- "semanticToken": "color/neutral",
17634
- "fallbackPrimitive": "color/neutral/900",
17591
+ "semanticToken": "color/surface/inverse",
17592
+ "fallbackPrimitive": null,
17635
17593
  "literalFallback": null
17636
17594
  }
17637
17595
  },
17638
17596
  {
17639
17597
  "description": "Text color.",
17640
17598
  "name": "--hx-side-nav-color",
17641
- "default": "var(--hx-color-neutral-100)",
17599
+ "default": "var(--hx-color-text-inverse)",
17642
17600
  "figmaBinding": {
17643
17601
  "target": "Fill",
17644
17602
  "layerSelector": "root",
17645
- "semanticToken": "color/neutral",
17646
- "fallbackPrimitive": "color/neutral/100",
17603
+ "semanticToken": "color/text/inverse",
17604
+ "fallbackPrimitive": null,
17647
17605
  "literalFallback": null
17648
17606
  }
17649
17607
  },
17650
17608
  {
17651
- "description": "Border color.",
17609
+ "description": "Border color (against the dark surface-inverse host bg).",
17652
17610
  "name": "--hx-side-nav-border-color",
17653
- "default": "var(--hx-color-neutral-700)",
17611
+ "default": "var(--hx-color-border-on-dark-strong)",
17654
17612
  "figmaBinding": {
17655
17613
  "target": "Stroke",
17656
17614
  "layerSelector": "root",
17657
- "semanticToken": "color/neutral",
17658
- "fallbackPrimitive": "color/neutral/700",
17615
+ "semanticToken": "color/border/on/dark/strong",
17616
+ "fallbackPrimitive": null,
17659
17617
  "literalFallback": null
17660
17618
  }
17661
17619
  },
@@ -17684,126 +17642,63 @@
17684
17642
  }
17685
17643
  },
17686
17644
  {
17687
- "description": "Toggle button icon color.",
17645
+ "description": "Toggle button icon color (resting).",
17688
17646
  "name": "--hx-side-nav-toggle-color",
17689
- "default": "var(--hx-color-neutral-400)",
17647
+ "default": "var(--hx-color-text-inverse)",
17690
17648
  "figmaBinding": {
17691
17649
  "target": "Fill",
17692
17650
  "layerSelector": "::part(toggle)",
17693
- "semanticToken": "color/neutral",
17694
- "fallbackPrimitive": "color/neutral/400",
17651
+ "semanticToken": "color/text/inverse",
17652
+ "fallbackPrimitive": null,
17695
17653
  "literalFallback": null
17696
17654
  }
17697
17655
  },
17698
17656
  {
17699
- "description": "Color.",
17700
- "name": "--hx-color-neutral-900",
17701
- "figmaBinding": null
17657
+ "description": "Toggle button icon color on hover.",
17658
+ "name": "--hx-side-nav-toggle-hover-color",
17659
+ "default": "var(--hx-color-text-inverse)",
17660
+ "figmaBinding": {
17661
+ "target": "Fill",
17662
+ "layerSelector": "root",
17663
+ "semanticToken": "color/text/inverse",
17664
+ "fallbackPrimitive": null,
17665
+ "literalFallback": null
17666
+ }
17702
17667
  },
17703
17668
  {
17704
- "description": "Color.",
17705
- "name": "--hx-color-neutral-100",
17669
+ "description": "Side-nav surface fill (resolves to neutral-900 light, near-black dark).",
17670
+ "name": "--hx-color-surface-inverse",
17706
17671
  "figmaBinding": null
17707
17672
  },
17708
17673
  {
17709
- "description": "Transition timing.",
17710
- "name": "--hx-transition-normal",
17674
+ "description": "Side-nav text color (resolves to neutral-0).",
17675
+ "name": "--hx-color-text-inverse",
17711
17676
  "figmaBinding": null
17712
17677
  },
17713
17678
  {
17714
- "description": "Width.",
17715
- "name": "--hx-border-width-thin",
17679
+ "description": "Container/header/footer divider border (overlay-white-70 light, overlay-black-50 dark — sized for visibility on the mode-flipped surface-inverse).",
17680
+ "name": "--hx-color-border-on-dark-strong",
17716
17681
  "figmaBinding": null
17717
17682
  },
17718
17683
  {
17719
- "description": "Color.",
17720
- "name": "--hx-color-neutral-700",
17684
+ "description": "Toggle button hover surface (overlay-white-10 primitive — semantic layer for inverted affordances).",
17685
+ "name": "--hx-color-border-on-dark-subtle",
17721
17686
  "figmaBinding": null
17722
- },
17723
- {
17724
- "description": "Spacing token.",
17725
- "name": "--hx-space-4",
17726
- "figmaBinding": null
17727
- },
17728
- {
17729
- "description": "Spacing token.",
17730
- "name": "--hx-space-14",
17731
- "figmaBinding": null
17732
- },
17733
- {
17734
- "description": "Spacing token.",
17735
- "name": "--hx-space-3",
17736
- "figmaBinding": null
17737
- },
17738
- {
17739
- "description": "Spacing token.",
17740
- "name": "--hx-space-2",
17741
- "figmaBinding": null
17742
- },
17743
- {
17744
- "description": "Spacing token.",
17745
- "name": "--hx-space-8",
17746
- "figmaBinding": null
17747
- },
17748
- {
17749
- "description": "CSS custom property.",
17750
- "name": "--hx-border-radius-sm",
17751
- "figmaBinding": null
17752
- },
17753
- {
17754
- "description": "Color.",
17755
- "name": "--hx-color-neutral-400",
17756
- "figmaBinding": null
17757
- },
17758
- {
17759
- "description": "Transition timing.",
17760
- "name": "--hx-transition-fast",
17761
- "figmaBinding": null
17762
- },
17763
- {
17764
- "description": "Overlay color.",
17765
- "name": "--hx-overlay-white-10",
17766
- "figmaBinding": null
17767
- },
17768
- {
17769
- "description": "Width.",
17770
- "name": "--hx-focus-ring-width",
17771
- "figmaBinding": null
17772
- },
17773
- {
17774
- "description": "Color.",
17775
- "name": "--hx-focus-ring-color",
17776
- "figmaBinding": null
17777
- },
17778
- {
17779
- "description": "Color.",
17780
- "name": "--hx-color-primary-400",
17781
- "figmaBinding": null
17782
- },
17783
- {
17784
- "description": "CSS custom property.",
17785
- "name": "--hx-focus-ring-offset",
17786
- "figmaBinding": null
17787
- },
17788
- {
17789
- "description": "Spacing token.",
17790
- "name": "--hx-space-5",
17791
- "figmaBinding": null
17792
- }
17793
- ],
17794
- "dependsOn": [],
17795
- "excludedAttributes": []
17796
- },
17797
- {
17798
- "tag": "hx-skeleton",
17799
- "className": "HelixSkeleton",
17800
- "modulePath": "src/components/hx-skeleton/hx-skeleton.ts",
17801
- "figmaEligible": true,
17802
- "figmaComponentName": "hx-skeleton",
17803
- "figmaPagePlacement": "4a",
17804
- "description": "An animated placeholder used to indicate loading content. Purely decorative — hidden from assistive technology. Supports a `loaded` state that announces content availability to screen readers.",
17805
- "tier": "atom",
17806
- "variantAxes": [
17687
+ }
17688
+ ],
17689
+ "dependsOn": [],
17690
+ "excludedAttributes": []
17691
+ },
17692
+ {
17693
+ "tag": "hx-skeleton",
17694
+ "className": "HelixSkeleton",
17695
+ "modulePath": "src/components/hx-skeleton/hx-skeleton.ts",
17696
+ "figmaEligible": true,
17697
+ "figmaComponentName": "hx-skeleton",
17698
+ "figmaPagePlacement": "4a",
17699
+ "description": "An animated placeholder used to indicate loading content. Purely decorative — hidden from assistive technology. Supports a `loaded` state that announces content availability to screen readers.",
17700
+ "tier": "atom",
17701
+ "variantAxes": [
17807
17702
  {
17808
17703
  "figmaAxisName": "variant",
17809
17704
  "cemAttribute": "variant",
@@ -18895,12 +18790,12 @@
18895
18790
  {
18896
18791
  "description": "Color of the divider between primary and trigger.",
18897
18792
  "name": "--hx-split-button-divider-color",
18898
- "default": "var(--hx-color-primary-400)",
18793
+ "default": "var(--hx-color-primary-900)",
18899
18794
  "figmaBinding": {
18900
18795
  "target": "Fill",
18901
18796
  "layerSelector": "root",
18902
18797
  "semanticToken": "color/primary",
18903
- "fallbackPrimitive": "color/primary/400",
18798
+ "fallbackPrimitive": "color/primary/900",
18904
18799
  "literalFallback": null
18905
18800
  }
18906
18801
  },
@@ -23368,36 +23263,36 @@
23368
23263
  {
23369
23264
  "description": "Input background color.",
23370
23265
  "name": "--hx-input-bg",
23371
- "default": "var(--hx-color-neutral-0)",
23266
+ "default": "var(--hx-color-surface-default)",
23372
23267
  "figmaBinding": {
23373
23268
  "target": "Fill",
23374
23269
  "layerSelector": "root",
23375
- "semanticToken": "color/neutral",
23376
- "fallbackPrimitive": "color/neutral/0",
23270
+ "semanticToken": "color/surface/default",
23271
+ "fallbackPrimitive": null,
23377
23272
  "literalFallback": null
23378
23273
  }
23379
23274
  },
23380
23275
  {
23381
23276
  "description": "Input text color.",
23382
23277
  "name": "--hx-input-color",
23383
- "default": "var(--hx-color-neutral-800)",
23278
+ "default": "var(--hx-color-text-strong)",
23384
23279
  "figmaBinding": {
23385
23280
  "target": "Fill",
23386
23281
  "layerSelector": "root",
23387
- "semanticToken": "color/neutral",
23388
- "fallbackPrimitive": "color/neutral/800",
23282
+ "semanticToken": "color/text/strong",
23283
+ "fallbackPrimitive": null,
23389
23284
  "literalFallback": null
23390
23285
  }
23391
23286
  },
23392
23287
  {
23393
23288
  "description": "Input border color.",
23394
23289
  "name": "--hx-input-border-color",
23395
- "default": "var(--hx-color-neutral-300)",
23290
+ "default": "var(--hx-color-border-strong)",
23396
23291
  "figmaBinding": {
23397
23292
  "target": "Stroke",
23398
23293
  "layerSelector": "root",
23399
- "semanticToken": "color/neutral",
23400
- "fallbackPrimitive": "color/neutral/300",
23294
+ "semanticToken": "color/border/strong",
23295
+ "fallbackPrimitive": null,
23401
23296
  "literalFallback": null
23402
23297
  }
23403
23298
  },
@@ -23440,24 +23335,24 @@
23440
23335
  {
23441
23336
  "description": "Error state color.",
23442
23337
  "name": "--hx-input-error-color",
23443
- "default": "var(--hx-color-error-500)",
23338
+ "default": "var(--hx-color-error-text)",
23444
23339
  "figmaBinding": {
23445
23340
  "target": "Fill",
23446
23341
  "layerSelector": "root",
23447
- "semanticToken": "color/error",
23448
- "fallbackPrimitive": "color/error/500",
23342
+ "semanticToken": "color/error/text",
23343
+ "fallbackPrimitive": null,
23449
23344
  "literalFallback": null
23450
23345
  }
23451
23346
  },
23452
23347
  {
23453
23348
  "description": "Label text color.",
23454
23349
  "name": "--hx-input-label-color",
23455
- "default": "var(--hx-color-neutral-700)",
23350
+ "default": "var(--hx-color-text-strong)",
23456
23351
  "figmaBinding": {
23457
23352
  "target": "Fill",
23458
23353
  "layerSelector": "root",
23459
- "semanticToken": "color/neutral",
23460
- "fallbackPrimitive": "color/neutral/700",
23354
+ "semanticToken": "color/text/strong",
23355
+ "fallbackPrimitive": null,
23461
23356
  "literalFallback": null
23462
23357
  }
23463
23358
  },
@@ -23486,153 +23381,86 @@
23486
23381
  }
23487
23382
  },
23488
23383
  {
23489
- "description": "Opacity.",
23490
- "name": "--hx-opacity-disabled",
23491
- "figmaBinding": null
23492
- },
23493
- {
23494
- "description": "Color.",
23495
- "name": "--hx-focus-ring-color",
23496
- "figmaBinding": null
23497
- },
23498
- {
23499
- "description": "Color.",
23500
- "name": "--hx-color-primary-400",
23501
- "figmaBinding": null
23384
+ "description": "Outer border-width override (canonical hx-{tag}-* prefix; sits above --hx-input-* aliases in the cascade).",
23385
+ "name": "--hx-text-input-border-width",
23386
+ "default": "var(--hx-border-width-thin)",
23387
+ "figmaBinding": {
23388
+ "target": "Stroke",
23389
+ "layerSelector": "root",
23390
+ "semanticToken": "border/width/thin",
23391
+ "fallbackPrimitive": null,
23392
+ "literalFallback": null
23393
+ }
23502
23394
  },
23503
23395
  {
23504
- "description": "Width.",
23505
- "name": "--hx-focus-ring-width",
23506
- "figmaBinding": null
23396
+ "description": "Outer horizontal padding override.",
23397
+ "name": "--hx-text-input-padding-x",
23398
+ "default": "var(--hx-space-3)",
23399
+ "figmaBinding": {
23400
+ "target": "Padding",
23401
+ "layerSelector": "root",
23402
+ "semanticToken": "space",
23403
+ "fallbackPrimitive": "space/3",
23404
+ "literalFallback": null
23405
+ }
23507
23406
  },
23508
23407
  {
23509
- "description": "CSS custom property.",
23510
- "name": "--hx-focus-ring-opacity",
23511
- "figmaBinding": null
23408
+ "description": "Outer vertical padding override.",
23409
+ "name": "--hx-text-input-padding-y",
23410
+ "default": "var(--hx-space-2)",
23411
+ "figmaBinding": {
23412
+ "target": "Padding",
23413
+ "layerSelector": "root",
23414
+ "semanticToken": "space",
23415
+ "fallbackPrimitive": "space/2",
23416
+ "literalFallback": null
23417
+ }
23512
23418
  },
23513
23419
  {
23514
- "description": "Spacing token.",
23515
- "name": "--hx-space-1",
23516
- "figmaBinding": null
23420
+ "description": "Outer font-size override.",
23421
+ "name": "--hx-text-input-font-size",
23422
+ "default": "var(--hx-font-size-md)",
23423
+ "figmaBinding": {
23424
+ "target": "FontSize",
23425
+ "layerSelector": "root",
23426
+ "semanticToken": null,
23427
+ "fallbackPrimitive": "font-size/md",
23428
+ "literalFallback": null
23429
+ }
23517
23430
  },
23518
23431
  {
23519
- "description": "Font family.",
23520
- "name": "--hx-font-family-sans",
23432
+ "description": "Outer sm-variant font-size override (falls through to --hx-input-sm-font-size).",
23433
+ "name": "--hx-text-input-sm-font-size",
23521
23434
  "figmaBinding": null
23522
23435
  },
23523
23436
  {
23524
- "description": "Font size.",
23525
- "name": "--hx-font-size-sm",
23437
+ "description": "Outer lg-variant font-size override (falls through to --hx-input-lg-font-size).",
23438
+ "name": "--hx-text-input-lg-font-size",
23526
23439
  "figmaBinding": null
23527
23440
  },
23528
23441
  {
23529
- "description": "Font weight.",
23530
- "name": "--hx-font-weight-medium",
23442
+ "description": "Resting field surface (semantic).",
23443
+ "name": "--hx-color-surface-default",
23531
23444
  "figmaBinding": null
23532
23445
  },
23533
23446
  {
23534
- "description": "Color.",
23535
- "name": "--hx-color-neutral-700",
23447
+ "description": "Resting input text + label color (semantic).",
23448
+ "name": "--hx-color-text-strong",
23536
23449
  "figmaBinding": null
23537
23450
  },
23538
23451
  {
23539
- "description": "Line height.",
23540
- "name": "--hx-line-height-normal",
23452
+ "description": "Resting border color (semantic).",
23453
+ "name": "--hx-color-border-strong",
23541
23454
  "figmaBinding": null
23542
23455
  },
23543
23456
  {
23544
- "description": "Color.",
23457
+ "description": "Error state text + border color (semantic).",
23545
23458
  "name": "--hx-color-error-text",
23546
23459
  "figmaBinding": null
23547
23460
  },
23548
23461
  {
23549
- "description": "Font weight.",
23550
- "name": "--hx-font-weight-bold",
23551
- "figmaBinding": null
23552
- },
23553
- {
23554
- "description": "Width.",
23555
- "name": "--hx-border-width-thin",
23556
- "figmaBinding": null
23557
- },
23558
- {
23559
- "description": "Color.",
23560
- "name": "--hx-color-neutral-300",
23561
- "figmaBinding": null
23562
- },
23563
- {
23564
- "description": "CSS custom property.",
23565
- "name": "--hx-border-radius-md",
23566
- "figmaBinding": null
23567
- },
23568
- {
23569
- "description": "Color.",
23570
- "name": "--hx-color-neutral-0",
23571
- "figmaBinding": null
23572
- },
23573
- {
23574
- "description": "Transition timing.",
23575
- "name": "--hx-transition-fast",
23576
- "figmaBinding": null
23577
- },
23578
- {
23579
- "description": "Color.",
23580
- "name": "--hx-color-error-500",
23581
- "figmaBinding": null
23582
- },
23583
- {
23584
- "description": "Color.",
23585
- "name": "--hx-color-neutral-500",
23586
- "figmaBinding": null
23587
- },
23588
- {
23589
- "description": "Spacing token.",
23590
- "name": "--hx-space-3",
23591
- "figmaBinding": null
23592
- },
23593
- {
23594
- "description": "Spacing token.",
23595
- "name": "--hx-space-2",
23596
- "figmaBinding": null
23597
- },
23598
- {
23599
- "description": "Font size.",
23600
- "name": "--hx-font-size-md",
23601
- "figmaBinding": null
23602
- },
23603
- {
23604
- "description": "Color.",
23605
- "name": "--hx-color-neutral-800",
23606
- "figmaBinding": null
23607
- },
23608
- {
23609
- "description": "Size token.",
23610
- "name": "--hx-size-10",
23611
- "figmaBinding": null
23612
- },
23613
- {
23614
- "description": "Color.",
23615
- "name": "--hx-color-neutral-400",
23616
- "figmaBinding": null
23617
- },
23618
- {
23619
- "description": "Size token.",
23620
- "name": "--hx-size-8",
23621
- "figmaBinding": null
23622
- },
23623
- {
23624
- "description": "Spacing token.",
23625
- "name": "--hx-space-4",
23626
- "figmaBinding": null
23627
- },
23628
- {
23629
- "description": "Size token.",
23630
- "name": "--hx-size-12",
23631
- "figmaBinding": null
23632
- },
23633
- {
23634
- "description": "Font size.",
23635
- "name": "--hx-font-size-xs",
23462
+ "description": "Error border primitive fallback inside the invalid-state cascade.",
23463
+ "name": "--hx-color-error-600",
23636
23464
  "figmaBinding": null
23637
23465
  }
23638
23466
  ],
@@ -24983,24 +24811,24 @@
24983
24811
  {
24984
24812
  "description": "Toast background color.",
24985
24813
  "name": "--hx-toast-bg",
24986
- "default": "var(--hx-color-neutral-900)",
24814
+ "default": "var(--hx-color-surface-inverse)",
24987
24815
  "figmaBinding": {
24988
24816
  "target": "Fill",
24989
24817
  "layerSelector": "root",
24990
- "semanticToken": "color/neutral",
24991
- "fallbackPrimitive": "color/neutral/900",
24818
+ "semanticToken": "color/surface/inverse",
24819
+ "fallbackPrimitive": null,
24992
24820
  "literalFallback": null
24993
24821
  }
24994
24822
  },
24995
24823
  {
24996
24824
  "description": "Toast text color.",
24997
24825
  "name": "--hx-toast-color",
24998
- "default": "var(--hx-color-neutral-0)",
24826
+ "default": "var(--hx-color-text-inverse)",
24999
24827
  "figmaBinding": {
25000
24828
  "target": "Fill",
25001
24829
  "layerSelector": "root",
25002
- "semanticToken": "color/neutral",
25003
- "fallbackPrimitive": "color/neutral/0",
24830
+ "semanticToken": "color/text/inverse",
24831
+ "fallbackPrimitive": null,
25004
24832
  "literalFallback": null
25005
24833
  }
25006
24834
  },
@@ -25049,13 +24877,13 @@
25049
24877
  "figmaBinding": null
25050
24878
  },
25051
24879
  {
25052
- "description": "Color.",
25053
- "name": "--hx-color-neutral-900",
24880
+ "description": "Default-variant background semantic (neutral-900 anchor; flipped per mode).",
24881
+ "name": "--hx-color-surface-inverse",
25054
24882
  "figmaBinding": null
25055
24883
  },
25056
24884
  {
25057
- "description": "Color.",
25058
- "name": "--hx-color-neutral-0",
24885
+ "description": "Default-variant foreground semantic (neutral-0 anchor; flipped per mode).",
24886
+ "name": "--hx-color-text-inverse",
25059
24887
  "figmaBinding": null
25060
24888
  },
25061
24889
  {
@@ -25113,23 +24941,43 @@
25113
24941
  "figmaBinding": null
25114
24942
  },
25115
24943
  {
25116
- "description": "Color.",
25117
- "name": "--hx-color-success-600",
24944
+ "description": "Success-variant background semantic (3.2.1 cascade).",
24945
+ "name": "--hx-color-surface-success-strong",
25118
24946
  "figmaBinding": null
25119
24947
  },
25120
24948
  {
25121
- "description": "Color.",
25122
- "name": "--hx-color-warning-500",
24949
+ "description": "Warning-variant background semantic (3.2.1 cascade).",
24950
+ "name": "--hx-color-surface-warning-strong",
25123
24951
  "figmaBinding": null
25124
24952
  },
25125
24953
  {
25126
- "description": "Color.",
25127
- "name": "--hx-color-error-600",
24954
+ "description": "Danger-variant background semantic (3.2.1 cascade).",
24955
+ "name": "--hx-color-surface-danger-strong",
25128
24956
  "figmaBinding": null
25129
24957
  },
25130
24958
  {
25131
- "description": "Color.",
25132
- "name": "--hx-color-primary-600",
24959
+ "description": "Info-variant background semantic (3.2.1 cascade).",
24960
+ "name": "--hx-color-surface-info-strong",
24961
+ "figmaBinding": null
24962
+ },
24963
+ {
24964
+ "description": "Success-variant foreground semantic (neutral-0 across modes).",
24965
+ "name": "--hx-color-text-on-success-strong",
24966
+ "figmaBinding": null
24967
+ },
24968
+ {
24969
+ "description": "Warning-variant foreground semantic (neutral-900; warning sits on lighter -500 fill).",
24970
+ "name": "--hx-color-text-on-warning",
24971
+ "figmaBinding": null
24972
+ },
24973
+ {
24974
+ "description": "Danger-variant foreground semantic (neutral-0 across modes).",
24975
+ "name": "--hx-color-text-on-error-strong",
24976
+ "figmaBinding": null
24977
+ },
24978
+ {
24979
+ "description": "Info-variant foreground semantic (neutral-0 across modes).",
24980
+ "name": "--hx-color-text-on-primary-strong",
25133
24981
  "figmaBinding": null
25134
24982
  },
25135
24983
  {