@helixui/library 3.2.0-next.100 → 3.2.0-next.104

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 (137) hide show
  1. package/custom-elements.json +10 -10
  2. package/dist/components/hx-alert/hx-alert.styles.d.ts.map +1 -1
  3. package/dist/components/hx-alert/index.js +1 -1
  4. package/dist/components/hx-banner/hx-banner.styles.d.ts.map +1 -1
  5. package/dist/components/hx-banner/index.js +1 -1
  6. package/dist/components/hx-button/hx-button.d.ts +5 -5
  7. package/dist/components/hx-button/hx-button.styles.d.ts.map +1 -1
  8. package/dist/components/hx-button/index.js +1 -1
  9. package/dist/components/hx-checkbox/hx-checkbox.styles.d.ts.map +1 -1
  10. package/dist/components/hx-checkbox/index.js +1 -1
  11. package/dist/components/hx-code-snippet/hx-code-snippet.styles.d.ts.map +1 -1
  12. package/dist/components/hx-code-snippet/index.js +1 -1
  13. package/dist/components/hx-combobox/hx-combobox.styles.d.ts.map +1 -1
  14. package/dist/components/hx-combobox/index.js +1 -1
  15. package/dist/components/hx-date-picker/hx-date-picker.styles.d.ts.map +1 -1
  16. package/dist/components/hx-date-picker/index.js +1 -1
  17. package/dist/components/hx-link/hx-link.styles.d.ts.map +1 -1
  18. package/dist/components/hx-link/index.js +1 -1
  19. package/dist/components/hx-list/hx-list-item.styles.d.ts.map +1 -1
  20. package/dist/components/hx-list/index.js +1 -1
  21. package/dist/components/hx-radio-group/hx-radio.styles.d.ts.map +1 -1
  22. package/dist/components/hx-radio-group/index.js +1 -1
  23. package/dist/components/hx-rating/hx-rating.styles.d.ts.map +1 -1
  24. package/dist/components/hx-rating/index.js +1 -1
  25. package/dist/components/hx-select/hx-select.styles.d.ts.map +1 -1
  26. package/dist/components/hx-select/index.js +1 -1
  27. package/dist/components/hx-side-nav/hx-side-nav.d.ts +1 -1
  28. package/dist/components/hx-side-nav/index.js +1 -1
  29. package/dist/components/hx-slider/hx-slider.styles.d.ts.map +1 -1
  30. package/dist/components/hx-slider/index.js +1 -1
  31. package/dist/components/hx-split-button/hx-split-button.styles.d.ts.map +1 -1
  32. package/dist/components/hx-split-button/index.js +1 -1
  33. package/dist/components/hx-switch/hx-switch.styles.d.ts.map +1 -1
  34. package/dist/components/hx-switch/index.js +1 -1
  35. package/dist/components/hx-tabs/hx-tab-panel.styles.d.ts.map +1 -1
  36. package/dist/components/hx-tabs/hx-tab.styles.d.ts.map +1 -1
  37. package/dist/components/hx-tabs/index.js +1 -1
  38. package/dist/components/hx-text-input/hx-text-input.styles.d.ts.map +1 -1
  39. package/dist/components/hx-text-input/index.js +1 -1
  40. package/dist/components/hx-textarea/hx-textarea.styles.d.ts.map +1 -1
  41. package/dist/components/hx-textarea/index.js +1 -1
  42. package/dist/components/hx-toggle-button/hx-toggle-button.styles.d.ts.map +1 -1
  43. package/dist/components/hx-toggle-button/index.js +1 -1
  44. package/dist/components/hx-tree-view/hx-tree-view.styles.d.ts.map +1 -1
  45. package/dist/components/hx-tree-view/index.js +1 -1
  46. package/dist/css/helix-all.css +58 -113
  47. package/dist/css/helix-core.css +33 -23
  48. package/dist/css/helix-data.css +2 -4
  49. package/dist/css/helix-feedback.css +3 -12
  50. package/dist/css/helix-forms.css +16 -63
  51. package/dist/css/helix-navigation.css +2 -3
  52. package/dist/css/helix-tokens.css +16 -8
  53. package/dist/css/helix-utility.css +2 -8
  54. package/dist/css/hx-alert.css +1 -4
  55. package/dist/css/hx-banner.css +2 -8
  56. package/dist/css/hx-button.css +32 -19
  57. package/dist/css/hx-checkbox.css +1 -4
  58. package/dist/css/hx-code-snippet.css +2 -4
  59. package/dist/css/hx-combobox.css +2 -8
  60. package/dist/css/hx-date-picker.css +5 -21
  61. package/dist/css/hx-link.css +1 -4
  62. package/dist/css/hx-rating.css +1 -2
  63. package/dist/css/hx-select.css +1 -4
  64. package/dist/css/hx-side-nav.css +1 -1
  65. package/dist/css/hx-slider.css +1 -4
  66. package/dist/css/hx-split-button.css +2 -8
  67. package/dist/css/hx-switch.css +1 -4
  68. package/dist/css/hx-text-input.css +2 -8
  69. package/dist/css/hx-textarea.css +1 -4
  70. package/dist/css/hx-toggle-button.css +1 -4
  71. package/dist/css/hx-tree-view.css +1 -2
  72. package/dist/css/index.css +1 -1
  73. package/dist/css/manifest.json +16 -14
  74. package/dist/index.js +21 -21
  75. package/dist/shared/{hx-alert-C597yHpD.js → hx-alert-CLn7CstP.js} +2 -5
  76. package/dist/shared/hx-alert-CLn7CstP.js.map +1 -0
  77. package/dist/shared/{hx-banner-Cxd7eFUP.js → hx-banner-D3DzpfcP.js} +7 -13
  78. package/dist/shared/hx-banner-D3DzpfcP.js.map +1 -0
  79. package/dist/shared/{hx-button-9OUjJnk7.js → hx-button-DVSDRKoV.js} +38 -25
  80. package/dist/shared/hx-button-DVSDRKoV.js.map +1 -0
  81. package/dist/shared/{hx-checkbox-DBD-gMoz.js → hx-checkbox-D7xma9YH.js} +6 -9
  82. package/dist/shared/hx-checkbox-D7xma9YH.js.map +1 -0
  83. package/dist/shared/{hx-code-snippet-B26RM1_C.js → hx-code-snippet-Bi-arDKH.js} +3 -5
  84. package/dist/shared/hx-code-snippet-Bi-arDKH.js.map +1 -0
  85. package/dist/shared/{hx-combobox-ClhNRAS5.js → hx-combobox-DDzqNKEW.js} +6 -12
  86. package/dist/shared/hx-combobox-DDzqNKEW.js.map +1 -0
  87. package/dist/shared/{hx-date-picker-BJm7Yrda.js → hx-date-picker-2iRG1p74.js} +12 -28
  88. package/dist/shared/hx-date-picker-2iRG1p74.js.map +1 -0
  89. package/dist/shared/{hx-link-9Ig2DW6L.js → hx-link-C-O6vq0Q.js} +2 -5
  90. package/dist/shared/hx-link-C-O6vq0Q.js.map +1 -0
  91. package/dist/shared/{hx-list-CkphGi9T.js → hx-list-MyEhh8c7.js} +3 -5
  92. package/dist/shared/hx-list-MyEhh8c7.js.map +1 -0
  93. package/dist/shared/{hx-nav-item-CqbO5-T5.js → hx-nav-item-Dap3DYgB.js} +2 -2
  94. package/dist/shared/hx-nav-item-Dap3DYgB.js.map +1 -0
  95. package/dist/shared/{hx-radio-dFjUAost.js → hx-radio-CJvNU2yP.js} +2 -5
  96. package/dist/shared/{hx-radio-dFjUAost.js.map → hx-radio-CJvNU2yP.js.map} +1 -1
  97. package/dist/shared/{hx-rating-CGtsejNf.js → hx-rating-C3QP53k9.js} +2 -3
  98. package/dist/shared/hx-rating-C3QP53k9.js.map +1 -0
  99. package/dist/shared/{hx-select-Bf4usFts.js → hx-select-C8fEHQhC.js} +2 -5
  100. package/dist/shared/hx-select-C8fEHQhC.js.map +1 -0
  101. package/dist/shared/{hx-slider-m0aEClH1.js → hx-slider-Blmv_rwS.js} +23 -26
  102. package/dist/shared/hx-slider-Blmv_rwS.js.map +1 -0
  103. package/dist/shared/{hx-split-button-BxDFfx4D.js → hx-split-button-Djnc5Aeg.js} +3 -9
  104. package/dist/shared/hx-split-button-Djnc5Aeg.js.map +1 -0
  105. package/dist/shared/{hx-switch-DvAW4YY-.js → hx-switch-BrZFaRue.js} +6 -9
  106. package/dist/shared/hx-switch-BrZFaRue.js.map +1 -0
  107. package/dist/shared/{hx-tab-panel-SWOEHuJc.js → hx-tab-panel-DspCrKqo.js} +3 -9
  108. package/dist/shared/{hx-tab-panel-SWOEHuJc.js.map → hx-tab-panel-DspCrKqo.js.map} +1 -1
  109. package/dist/shared/{hx-text-input-Bn7Gn8CI.js → hx-text-input-D6FlOZM-.js} +3 -9
  110. package/dist/shared/hx-text-input-D6FlOZM-.js.map +1 -0
  111. package/dist/shared/{hx-textarea-Jx1xnhgv.js → hx-textarea-CNG590KY.js} +6 -9
  112. package/dist/shared/hx-textarea-CNG590KY.js.map +1 -0
  113. package/dist/shared/{hx-toggle-button-DPAIh_Xo.js → hx-toggle-button-iLiYrMbD.js} +2 -5
  114. package/dist/shared/hx-toggle-button-iLiYrMbD.js.map +1 -0
  115. package/dist/shared/{hx-tree-item-Dt0Ozqyr.js → hx-tree-item-C2CiWuDE.js} +2 -3
  116. package/dist/shared/hx-tree-item-C2CiWuDE.js.map +1 -0
  117. package/figma-inventory.json +12 -12
  118. package/package.json +2 -2
  119. package/dist/shared/hx-alert-C597yHpD.js.map +0 -1
  120. package/dist/shared/hx-banner-Cxd7eFUP.js.map +0 -1
  121. package/dist/shared/hx-button-9OUjJnk7.js.map +0 -1
  122. package/dist/shared/hx-checkbox-DBD-gMoz.js.map +0 -1
  123. package/dist/shared/hx-code-snippet-B26RM1_C.js.map +0 -1
  124. package/dist/shared/hx-combobox-ClhNRAS5.js.map +0 -1
  125. package/dist/shared/hx-date-picker-BJm7Yrda.js.map +0 -1
  126. package/dist/shared/hx-link-9Ig2DW6L.js.map +0 -1
  127. package/dist/shared/hx-list-CkphGi9T.js.map +0 -1
  128. package/dist/shared/hx-nav-item-CqbO5-T5.js.map +0 -1
  129. package/dist/shared/hx-rating-CGtsejNf.js.map +0 -1
  130. package/dist/shared/hx-select-Bf4usFts.js.map +0 -1
  131. package/dist/shared/hx-slider-m0aEClH1.js.map +0 -1
  132. package/dist/shared/hx-split-button-BxDFfx4D.js.map +0 -1
  133. package/dist/shared/hx-switch-DvAW4YY-.js.map +0 -1
  134. package/dist/shared/hx-text-input-Bn7Gn8CI.js.map +0 -1
  135. package/dist/shared/hx-textarea-Jx1xnhgv.js.map +0 -1
  136. package/dist/shared/hx-toggle-button-DPAIh_Xo.js.map +0 -1
  137. package/dist/shared/hx-tree-item-Dt0Ozqyr.js.map +0 -1
@@ -74,10 +74,7 @@
74
74
 
75
75
  .checkbox__input:focus-visible ~ .checkbox__box {
76
76
  outline: var(--hx-checkbox-focus-ring-width, var(--hx-focus-ring-width, 2px)) solid
77
- var(
78
- --hx-checkbox-focus-ring-color,
79
- var(--hx-focus-ring-color, var(--hx-color-primary-600, #0f7078))
80
- );
77
+ var(--hx-checkbox-focus-ring-color, var(--hx-focus-ring-color, #0f7078));
81
78
  outline-offset: var(--hx-checkbox-focus-ring-offset, var(--hx-focus-ring-offset, 2px));
82
79
  }
83
80
 
@@ -722,17 +719,11 @@
722
719
  box-shadow var(--hx-transition-fast, 150ms ease);
723
720
  }
724
721
  .field__input-wrapper:focus-within {
725
- border-color: var(
726
- --hx-combobox-focus-ring-color,
727
- var(--hx-focus-ring-color, var(--hx-color-primary-600, #0f7078))
728
- );
722
+ border-color: var(--hx-combobox-focus-ring-color, var(--hx-focus-ring-color, #0f7078));
729
723
  box-shadow: 0 0 0 var(--hx-focus-ring-width, 2px)
730
724
  color-mix(
731
725
  in srgb,
732
- var(
733
- --hx-combobox-focus-ring-color,
734
- var(--hx-focus-ring-color, var(--hx-color-primary-600, #0f7078))
735
- )
726
+ var(--hx-combobox-focus-ring-color, var(--hx-focus-ring-color, #0f7078))
736
727
  calc(var(--hx-focus-ring-opacity, 0.25) * 100%),
737
728
  transparent
738
729
  );
@@ -1138,17 +1129,11 @@
1138
1129
  }
1139
1130
 
1140
1131
  .field__input-wrapper:focus-within {
1141
- border-color: var(
1142
- --hx-date-picker-focus-ring-color,
1143
- var(--hx-focus-ring-color, var(--hx-color-primary-600, #0f7078))
1144
- );
1132
+ border-color: var(--hx-date-picker-focus-ring-color, var(--hx-focus-ring-color, #0f7078));
1145
1133
  box-shadow: 0 0 0 var(--hx-focus-ring-width, 2px)
1146
1134
  color-mix(
1147
1135
  in srgb,
1148
- var(
1149
- --hx-date-picker-focus-ring-color,
1150
- var(--hx-focus-ring-color, var(--hx-color-primary-600, #0f7078))
1151
- )
1136
+ var(--hx-date-picker-focus-ring-color, var(--hx-focus-ring-color, #0f7078))
1152
1137
  calc(var(--hx-focus-ring-opacity, 0.25) * 100%),
1153
1138
  transparent
1154
1139
  );
@@ -1217,17 +1202,10 @@
1217
1202
  }
1218
1203
 
1219
1204
  .field__trigger:focus-visible {
1220
- color: var(
1221
- --hx-date-picker-focus-ring-color,
1222
- var(--hx-focus-ring-color, var(--hx-color-primary-600, #0f7078))
1223
- );
1205
+ color: var(--hx-date-picker-focus-ring-color, var(--hx-focus-ring-color, #0f7078));
1224
1206
  background-color: color-mix(
1225
1207
  in srgb,
1226
- var(
1227
- --hx-date-picker-focus-ring-color,
1228
- var(--hx-focus-ring-color, var(--hx-color-primary-600, #0f7078))
1229
- )
1230
- 8%,
1208
+ var(--hx-date-picker-focus-ring-color, var(--hx-focus-ring-color, #0f7078)) 8%,
1231
1209
  transparent
1232
1210
  );
1233
1211
  }
@@ -1324,10 +1302,7 @@
1324
1302
 
1325
1303
  :is(.calendar__nav-btn, .calendar__day):focus-visible {
1326
1304
  box-shadow: 0 0 0 var(--hx-focus-ring-width, 2px)
1327
- var(
1328
- --hx-date-picker-focus-ring-color,
1329
- var(--hx-focus-ring-color, var(--hx-color-primary-600, #0f7078))
1330
- );
1305
+ var(--hx-date-picker-focus-ring-color, var(--hx-focus-ring-color, #0f7078));
1331
1306
  z-index: 1;
1332
1307
  }
1333
1308
 
@@ -2543,8 +2518,7 @@
2543
2518
  }
2544
2519
 
2545
2520
  .symbol:focus-visible {
2546
- outline: var(--hx-focus-ring-width, 2px) solid
2547
- var(--hx-focus-ring-color, var(--hx-color-primary-600, #0f7078));
2521
+ outline: var(--hx-focus-ring-width, 2px) solid var(--hx-focus-ring-color, #0f7078);
2548
2522
  outline-offset: var(--hx-focus-ring-offset, 2px);
2549
2523
  border-radius: var(--hx-border-radius-sm, 0.25rem);
2550
2524
  }
@@ -2658,10 +2632,7 @@
2658
2632
  --_border-radius: var(--hx-select-border-radius, var(--hx-border-radius-md, 0.375rem));
2659
2633
 
2660
2634
  /* Focus ring */
2661
- --_focus-ring-color: var(
2662
- --hx-select-focus-ring-color,
2663
- var(--hx-focus-ring-color, var(--hx-color-primary-600, #0f7078))
2664
- );
2635
+ --_focus-ring-color: var(--hx-select-focus-ring-color, var(--hx-focus-ring-color, #0f7078));
2665
2636
 
2666
2637
  /* Error */
2667
2638
  --_error-color: var(--hx-select-error-color, var(--hx-color-error-500, #e5493e));
@@ -3215,10 +3186,7 @@
3215
3186
  .slider__input:focus-visible ~ .slider__thumb-visual {
3216
3187
  box-shadow:
3217
3188
  0 0 0 var(--hx-focus-ring-width, 2px)
3218
- var(
3219
- --hx-slider-focus-ring-color,
3220
- var(--hx-focus-ring-color, var(--hx-color-primary-600, #0f7078))
3221
- ),
3189
+ var(--hx-slider-focus-ring-color, var(--hx-focus-ring-color, #0f7078)),
3222
3190
  var(--hx-slider-thumb-shadow, var(--hx-shadow-sm, 0 1px 2px 0 rgb(0 0 0 / 0.05)));
3223
3191
  }
3224
3192
 
@@ -3362,10 +3330,7 @@
3362
3330
 
3363
3331
  .switch__track:focus-visible {
3364
3332
  outline: var(--hx-focus-ring-width, 2px) solid
3365
- var(
3366
- --hx-switch-focus-ring-color,
3367
- var(--hx-focus-ring-color, var(--hx-color-primary-600, #0f7078))
3368
- );
3333
+ var(--hx-switch-focus-ring-color, var(--hx-focus-ring-color, #0f7078));
3369
3334
  outline-offset: var(--hx-focus-ring-offset, 2px);
3370
3335
  }
3371
3336
 
@@ -3579,10 +3544,7 @@
3579
3544
  );
3580
3545
  --_text-input-border-color-focus: var(
3581
3546
  --hx-text-input-border-color-focus,
3582
- var(
3583
- --hx-input-focus-ring-color,
3584
- var(--hx-focus-ring-color, var(--hx-color-primary-600, #0f7078))
3585
- )
3547
+ var(--hx-input-focus-ring-color, var(--hx-focus-ring-color, #0f7078))
3586
3548
  );
3587
3549
  --_text-input-border-color-invalid: var(
3588
3550
  --hx-text-input-border-color-invalid,
@@ -3608,10 +3570,7 @@
3608
3570
  /* Focus ring */
3609
3571
  --_text-input-focus-ring-color: var(
3610
3572
  --hx-text-input-focus-ring-color,
3611
- var(
3612
- --hx-input-focus-ring-color,
3613
- var(--hx-focus-ring-color, var(--hx-color-primary-600, #0f7078))
3614
- )
3573
+ var(--hx-input-focus-ring-color, var(--hx-focus-ring-color, #0f7078))
3615
3574
  );
3616
3575
  --_text-input-focus-ring-width: var(
3617
3576
  --hx-text-input-focus-ring-width,
@@ -3921,10 +3880,7 @@
3921
3880
  );
3922
3881
  --_textarea-border-color-focus: var(
3923
3882
  --hx-textarea-border-color-focus,
3924
- var(
3925
- --hx-input-focus-ring-color,
3926
- var(--hx-focus-ring-color, var(--hx-color-primary-600, #0f7078))
3927
- )
3883
+ var(--hx-input-focus-ring-color, var(--hx-focus-ring-color, #0f7078))
3928
3884
  );
3929
3885
  --_textarea-border-color-invalid: var(
3930
3886
  --hx-textarea-border-color-invalid,
@@ -4446,10 +4402,7 @@
4446
4402
 
4447
4403
  .button:focus-visible {
4448
4404
  outline: var(--hx-focus-ring-width, 2px) solid
4449
- var(
4450
- --hx-toggle-button-focus-ring-color,
4451
- var(--hx-focus-ring-color, var(--hx-color-primary-600, #0f7078))
4452
- );
4405
+ var(--hx-toggle-button-focus-ring-color, var(--hx-focus-ring-color, #0f7078));
4453
4406
  outline-offset: var(--hx-focus-ring-offset, 2px);
4454
4407
  }
4455
4408
 
@@ -826,7 +826,7 @@
826
826
 
827
827
  .side-nav__toggle:hover {
828
828
  background-color: var(
829
- --hx-color-border-on-dark-subtle,
829
+ --hx-color-surface-on-dark-overlay-subtle,
830
830
  rgba(255, 255, 255, 0.1)
831
831
  ); /* fallback for browsers without color-mix() */
832
832
  color: var(--hx-side-nav-toggle-hover-color, var(--hx-color-text-inverse, #ffffff));
@@ -1296,8 +1296,7 @@
1296
1296
  }
1297
1297
 
1298
1298
  .tree:focus-visible {
1299
- outline: var(--hx-focus-ring-width, 2px) solid
1300
- var(--hx-focus-ring-color, var(--hx-color-primary-600, #0f7078));
1299
+ outline: var(--hx-focus-ring-width, 2px) solid var(--hx-focus-ring-color, #0f7078);
1301
1300
  outline-offset: var(--hx-focus-ring-offset, 2px);
1302
1301
  border-radius: var(--hx-border-radius-sm, 0.25rem);
1303
1302
  }
@@ -119,13 +119,15 @@
119
119
  --hx-color-surface-warning-strong: var(--hx-color-warning-500);
120
120
  --hx-color-surface-danger-strong: var(--hx-color-error-600);
121
121
  --hx-color-surface-info-strong: var(--hx-color-primary-600);
122
+ --hx-color-surface-on-dark-overlay-default: var(--hx-overlay-white-30);
123
+ --hx-color-surface-on-dark-overlay-subtle: var(--hx-overlay-white-10);
122
124
  --hx-color-border-default: var(--hx-color-neutral-200);
123
125
  --hx-color-border-subtle: var(--hx-color-neutral-100);
124
126
  --hx-color-border-strong: var(--hx-color-neutral-500);
125
127
  --hx-color-border-focus: var(--hx-color-primary-500);
126
128
  --hx-color-border-on-dark-strong: var(--hx-overlay-white-70);
127
- --hx-color-border-on-dark-default: var(--hx-overlay-white-30);
128
- --hx-color-border-on-dark-subtle: var(--hx-overlay-white-10);
129
+ --hx-color-border-on-dark-default: var(--hx-color-surface-on-dark-overlay-default);
130
+ --hx-color-border-on-dark-subtle: var(--hx-color-surface-on-dark-overlay-subtle);
129
131
  --hx-color-focus-ring: var(--hx-color-primary-600);
130
132
  --hx-color-selection-bg: var(--hx-color-primary-200);
131
133
  --hx-color-selection-color: var(--hx-color-neutral-900);
@@ -368,13 +370,15 @@
368
370
  --hx-color-surface-sunken: var(--hx-color-neutral-950);
369
371
  --hx-color-surface-inverse: var(--hx-color-neutral-100);
370
372
  --hx-color-surface-overlay: rgba(0, 0, 0, 0.85);
373
+ --hx-color-surface-on-dark-overlay-default: var(--hx-overlay-black-30);
374
+ --hx-color-surface-on-dark-overlay-subtle: var(--hx-overlay-black-10);
371
375
  --hx-color-border-default: var(--hx-color-neutral-700);
372
376
  --hx-color-border-subtle: var(--hx-color-neutral-800);
373
377
  --hx-color-border-strong: var(--hx-color-neutral-400);
374
378
  --hx-color-border-focus: var(--hx-color-primary-400);
375
379
  --hx-color-border-on-dark-strong: var(--hx-overlay-black-50);
376
- --hx-color-border-on-dark-default: var(--hx-overlay-black-30);
377
- --hx-color-border-on-dark-subtle: var(--hx-overlay-black-10);
380
+ --hx-color-border-on-dark-default: var(--hx-color-surface-on-dark-overlay-default);
381
+ --hx-color-border-on-dark-subtle: var(--hx-color-surface-on-dark-overlay-subtle);
378
382
  --hx-color-focus-ring: var(--hx-color-primary-400);
379
383
  --hx-color-selection-bg: var(--hx-color-primary-800);
380
384
  --hx-color-selection-color: var(--hx-color-neutral-100);
@@ -414,13 +418,15 @@
414
418
  --hx-color-surface-sunken: var(--hx-color-neutral-950);
415
419
  --hx-color-surface-inverse: var(--hx-color-neutral-100);
416
420
  --hx-color-surface-overlay: rgba(0, 0, 0, 0.85);
421
+ --hx-color-surface-on-dark-overlay-default: var(--hx-overlay-black-30);
422
+ --hx-color-surface-on-dark-overlay-subtle: var(--hx-overlay-black-10);
417
423
  --hx-color-border-default: var(--hx-color-neutral-700);
418
424
  --hx-color-border-subtle: var(--hx-color-neutral-800);
419
425
  --hx-color-border-strong: var(--hx-color-neutral-400);
420
426
  --hx-color-border-focus: var(--hx-color-primary-400);
421
427
  --hx-color-border-on-dark-strong: var(--hx-overlay-black-50);
422
- --hx-color-border-on-dark-default: var(--hx-overlay-black-30);
423
- --hx-color-border-on-dark-subtle: var(--hx-overlay-black-10);
428
+ --hx-color-border-on-dark-default: var(--hx-color-surface-on-dark-overlay-default);
429
+ --hx-color-border-on-dark-subtle: var(--hx-color-surface-on-dark-overlay-subtle);
424
430
  --hx-color-focus-ring: var(--hx-color-primary-400);
425
431
  --hx-color-selection-bg: var(--hx-color-primary-800);
426
432
  --hx-color-selection-color: var(--hx-color-neutral-100);
@@ -486,13 +492,15 @@
486
492
  --hx-color-surface-warning-strong: var(--hx-color-warning-500);
487
493
  --hx-color-surface-danger-strong: var(--hx-color-error-500);
488
494
  --hx-color-surface-info-strong: var(--hx-color-primary-500);
495
+ --hx-color-surface-on-dark-overlay-default: #FFFFFF;
496
+ --hx-color-surface-on-dark-overlay-subtle: #C0C0C0;
489
497
  --hx-color-border-default: #FFFFFF;
490
498
  --hx-color-border-subtle: #C0C0C0;
491
499
  --hx-color-border-strong: #FFFFFF;
492
500
  --hx-color-border-focus: #FFFF00;
493
501
  --hx-color-border-on-dark-strong: #FFFFFF;
494
- --hx-color-border-on-dark-default: #FFFFFF;
495
- --hx-color-border-on-dark-subtle: #C0C0C0;
502
+ --hx-color-border-on-dark-default: var(--hx-color-surface-on-dark-overlay-default);
503
+ --hx-color-border-on-dark-subtle: var(--hx-color-surface-on-dark-overlay-subtle);
496
504
  --hx-color-focus-ring: #FFFF00;
497
505
  --hx-color-selection-bg: #1AEBFF;
498
506
  --hx-color-selection-color: #000000;
@@ -415,10 +415,7 @@
415
415
 
416
416
  .split-button__primary:focus-visible {
417
417
  outline: var(--hx-focus-ring-width, 2px) solid
418
- var(
419
- --hx-split-button-focus-ring-color,
420
- var(--hx-focus-ring-color, var(--hx-color-primary-600, #0f7078))
421
- );
418
+ var(--hx-split-button-focus-ring-color, var(--hx-focus-ring-color, #0f7078));
422
419
  outline-offset: var(--hx-focus-ring-offset, 2px);
423
420
  z-index: 1;
424
421
  position: relative;
@@ -460,10 +457,7 @@
460
457
 
461
458
  .split-button__trigger:focus-visible {
462
459
  outline: var(--hx-focus-ring-width, 2px) solid
463
- var(
464
- --hx-split-button-focus-ring-color,
465
- var(--hx-focus-ring-color, var(--hx-color-primary-600, #0f7078))
466
- );
460
+ var(--hx-split-button-focus-ring-color, var(--hx-focus-ring-color, #0f7078));
467
461
  outline-offset: var(--hx-focus-ring-offset, 2px);
468
462
  z-index: 1;
469
463
  position: relative;
@@ -158,10 +158,7 @@
158
158
 
159
159
  .alert__close-button:focus-visible {
160
160
  outline: var(--hx-focus-ring-width, 2px) solid
161
- var(
162
- --hx-alert-close-btn-focus-ring-color,
163
- var(--hx-focus-ring-color, var(--hx-color-primary-600, #0f7078))
164
- );
161
+ var(--hx-alert-close-btn-focus-ring-color, var(--hx-focus-ring-color, #0f7078));
165
162
  outline-offset: var(--hx-focus-ring-offset, 2px);
166
163
  opacity: 1;
167
164
  }
@@ -96,10 +96,7 @@
96
96
 
97
97
  .banner__action:focus-visible {
98
98
  outline: var(--hx-focus-ring-width, 2px) solid
99
- var(
100
- --hx-banner-action-focus-ring-color,
101
- var(--hx-focus-ring-color, var(--hx-color-primary-600, #0f7078))
102
- );
99
+ var(--hx-banner-action-focus-ring-color, var(--hx-focus-ring-color, #0f7078));
103
100
  outline-offset: var(--hx-focus-ring-offset, 2px);
104
101
  border-radius: var(--hx-border-radius-sm, 0.25rem);
105
102
  }
@@ -140,10 +137,7 @@
140
137
 
141
138
  .banner__close-button:focus-visible {
142
139
  outline: var(--hx-focus-ring-width, 2px) solid
143
- var(
144
- --hx-banner-close-btn-focus-ring-color,
145
- var(--hx-focus-ring-color, var(--hx-color-primary-600, #0f7078))
146
- );
140
+ var(--hx-banner-close-btn-focus-ring-color, var(--hx-focus-ring-color, #0f7078));
147
141
  outline-offset: var(--hx-focus-ring-offset, 2px);
148
142
  opacity: 1;
149
143
  }
@@ -229,15 +229,16 @@
229
229
 
230
230
  /* ─── Inverted Mode ─── */
231
231
 
232
- /* Inline-fallback contract for --hx-color-border-on-dark-* in this section:
232
+ /* Inline-fallback contract for the on-dark-* tokens in this section:
233
233
  the literal rgba(255, 255, 255, 0.X) arms are a LIGHT-MODE-only last
234
234
  resort (cold-start, CSS-not-loaded). At runtime, hx-theme injects
235
- dark.color.border.on-dark-* as overlay-black-* so dark-mode inverted
236
- buttons stay visible on the now-light surface.inverse (#EBEEE9). The
237
- inline white overlays would render invisible (≈1.1:1) on a light surface,
238
- but they never paint when the theme is mounted. If a future change moves
239
- these into a context where hx-theme is not guaranteed, replace with
240
- mode-aware tokens. */
235
+ the dark.* override (overlay-black-* for the strong border and the
236
+ surface.on-dark-overlay-* fills) so dark-mode inverted buttons stay
237
+ visible on the now-light surface.inverse (#EBEEE9). The inline white
238
+ overlays would render invisible (≈1.1:1) on a light surface, but
239
+ they never paint when the theme is mounted. If a future change
240
+ moves these into a context where hx-theme is not guaranteed,
241
+ replace with mode-aware tokens. */
241
242
 
242
243
  /* Override text color and filter-based hover/active for all variants */
243
244
  :host([inverted]) .button {
@@ -255,8 +256,12 @@
255
256
 
256
257
  :host([inverted]) .button:focus-visible {
257
258
  /* WCAG 1.4.11: focus indicator needs ≥3:1 against adjacent colors.
258
- border-on-dark-default (overlay-white-30) ≈ 2.7:1 on neutral-900 — fails.
259
- border-on-dark-strong (overlay-white-70) 5:1 passes. */
259
+ border-on-dark-strong (overlay-white-70) ≈ 5:1 on neutral-900 — passes.
260
+ The lower-alpha siblings used to live in border.* but were sub-3:1
261
+ against any plausible surface and could not honour a border contract;
262
+ they're now surface.on-dark-overlay-{default,subtle} (translucent
263
+ fills, not borders) and used elsewhere in this file. See
264
+ tokens.json color.surface.on-dark-overlay-* for canonical ratios. */
260
265
  outline-color: var(
261
266
  --hx-button-inverted-focus-ring-color,
262
267
  var(--hx-color-border-on-dark-strong, rgba(255, 255, 255, 0.7))
@@ -267,8 +272,16 @@
267
272
  so dark mode can flip the fill to primary-600. surface.inverse becomes light
268
273
  (#EBEEE9) in dark mode; primary-500 on #EBEEE9 = 2.94:1 (sub-3:1 UI floor
269
274
  fail for the inverted-button boundary). primary-600 on #EBEEE9 = 4.97:1
270
- (AA pass). Light mode tracks action.primary.bg (primary-500, 5.20:1 on
271
- dark surface.inverse). */
275
+ (AA pass). Light mode tracks action.primary.bg-inverted-rest's base value
276
+ (primary-500, 5.20:1 on dark surface.inverse).
277
+
278
+ Override path note (codex round-11): this binds --hx-button-bg directly,
279
+ matching the cascade convention every other .button--{variant} rule uses
280
+ (light primary at line 89, danger at 120, secondary, tertiary, ghost). The
281
+ consumer override path for inverted-primary rest is
282
+ --hx-color-action-primary-bg-inverted-rest, NOT --hx-button-bg — the same
283
+ pattern as light primary (consumers override --hx-color-action-primary-bg).
284
+ Pinned by dark-mode-resolution.test.ts:185-197 across both modes. */
272
285
  :host([inverted]) .button--primary {
273
286
  --hx-button-bg: var(--hx-color-action-primary-bg-inverted-rest, #429797);
274
287
  }
@@ -321,19 +334,19 @@
321
334
  }
322
335
 
323
336
  :host([inverted]) .button--secondary:hover {
324
- --hx-button-bg: var(--hx-color-border-on-dark-default, rgba(255, 255, 255, 0.3));
337
+ --hx-button-bg: var(--hx-color-surface-on-dark-overlay-default, rgba(255, 255, 255, 0.3));
325
338
  }
326
339
 
327
- /* Tertiary inverted — resting at subtle (10%) lifts to default (30%) on hover
328
- so the runtime hover delta is visually distinct, not collapsed onto a
329
- single token. */
340
+ /* Tertiary inverted — resting at the subtle overlay (10%) lifts to the default
341
+ overlay (30%) on hover so the runtime hover delta is visually distinct, not
342
+ collapsed onto a single token. */
330
343
  :host([inverted]) .button--tertiary {
331
- --hx-button-bg: var(--hx-color-border-on-dark-subtle, rgba(255, 255, 255, 0.1));
344
+ --hx-button-bg: var(--hx-color-surface-on-dark-overlay-subtle, rgba(255, 255, 255, 0.1));
332
345
  --hx-button-border-color: transparent;
333
346
  }
334
347
 
335
348
  :host([inverted]) .button--tertiary:hover {
336
- --hx-button-bg: var(--hx-color-border-on-dark-default, rgba(255, 255, 255, 0.3));
349
+ --hx-button-bg: var(--hx-color-surface-on-dark-overlay-default, rgba(255, 255, 255, 0.3));
337
350
  }
338
351
 
339
352
  /* Ghost inverted — transparent base, translucent hover bg */
@@ -345,7 +358,7 @@
345
358
  :host([inverted]) .button--ghost:hover {
346
359
  --hx-button-bg: var(
347
360
  --hx-button-inverted-ghost-hover-bg,
348
- var(--hx-color-border-on-dark-default, rgba(255, 255, 255, 0.3))
361
+ var(--hx-color-surface-on-dark-overlay-default, rgba(255, 255, 255, 0.3))
349
362
  );
350
363
  }
351
364
 
@@ -355,7 +368,7 @@
355
368
  }
356
369
 
357
370
  :host([inverted]) .button--outline:hover {
358
- --hx-button-bg: var(--hx-color-border-on-dark-default, rgba(255, 255, 255, 0.3));
371
+ --hx-button-bg: var(--hx-color-surface-on-dark-overlay-default, rgba(255, 255, 255, 0.3));
359
372
  }
360
373
 
361
374
  /* ─── Prefix / Suffix / Label ─── */
@@ -72,10 +72,7 @@
72
72
 
73
73
  .checkbox__input:focus-visible ~ .checkbox__box {
74
74
  outline: var(--hx-checkbox-focus-ring-width, var(--hx-focus-ring-width, 2px)) solid
75
- var(
76
- --hx-checkbox-focus-ring-color,
77
- var(--hx-focus-ring-color, var(--hx-color-primary-600, #0f7078))
78
- );
75
+ var(--hx-checkbox-focus-ring-color, var(--hx-focus-ring-color, #0f7078));
79
76
  outline-offset: var(--hx-checkbox-focus-ring-offset, var(--hx-focus-ring-offset, 2px));
80
77
  }
81
78
 
@@ -104,8 +104,7 @@
104
104
  }
105
105
 
106
106
  .code-snippet__copy-button:focus-visible {
107
- outline: var(--hx-focus-ring-width, 2px) solid
108
- var(--hx-focus-ring-color, var(--hx-color-primary-600, #0f7078));
107
+ outline: var(--hx-focus-ring-width, 2px) solid var(--hx-focus-ring-color, #0f7078);
109
108
  outline-offset: var(--hx-focus-ring-offset, 2px);
110
109
  }
111
110
 
@@ -146,8 +145,7 @@
146
145
  }
147
146
 
148
147
  .code-snippet__expand-button:focus-visible {
149
- outline: var(--hx-focus-ring-width, 2px) solid
150
- var(--hx-focus-ring-color, var(--hx-color-primary-600, #0f7078));
148
+ outline: var(--hx-focus-ring-width, 2px) solid var(--hx-focus-ring-color, #0f7078);
151
149
  outline-offset: var(--hx-focus-ring-offset, 2px);
152
150
  }
153
151
 
@@ -42,17 +42,11 @@
42
42
  box-shadow var(--hx-transition-fast, 150ms ease);
43
43
  }
44
44
  .field__input-wrapper:focus-within {
45
- border-color: var(
46
- --hx-combobox-focus-ring-color,
47
- var(--hx-focus-ring-color, var(--hx-color-primary-600, #0f7078))
48
- );
45
+ border-color: var(--hx-combobox-focus-ring-color, var(--hx-focus-ring-color, #0f7078));
49
46
  box-shadow: 0 0 0 var(--hx-focus-ring-width, 2px)
50
47
  color-mix(
51
48
  in srgb,
52
- var(
53
- --hx-combobox-focus-ring-color,
54
- var(--hx-focus-ring-color, var(--hx-color-primary-600, #0f7078))
55
- )
49
+ var(--hx-combobox-focus-ring-color, var(--hx-focus-ring-color, #0f7078))
56
50
  calc(var(--hx-focus-ring-opacity, 0.25) * 100%),
57
51
  transparent
58
52
  );
@@ -66,17 +66,11 @@
66
66
  }
67
67
 
68
68
  .field__input-wrapper:focus-within {
69
- border-color: var(
70
- --hx-date-picker-focus-ring-color,
71
- var(--hx-focus-ring-color, var(--hx-color-primary-600, #0f7078))
72
- );
69
+ border-color: var(--hx-date-picker-focus-ring-color, var(--hx-focus-ring-color, #0f7078));
73
70
  box-shadow: 0 0 0 var(--hx-focus-ring-width, 2px)
74
71
  color-mix(
75
72
  in srgb,
76
- var(
77
- --hx-date-picker-focus-ring-color,
78
- var(--hx-focus-ring-color, var(--hx-color-primary-600, #0f7078))
79
- )
73
+ var(--hx-date-picker-focus-ring-color, var(--hx-focus-ring-color, #0f7078))
80
74
  calc(var(--hx-focus-ring-opacity, 0.25) * 100%),
81
75
  transparent
82
76
  );
@@ -145,17 +139,10 @@
145
139
  }
146
140
 
147
141
  .field__trigger:focus-visible {
148
- color: var(
149
- --hx-date-picker-focus-ring-color,
150
- var(--hx-focus-ring-color, var(--hx-color-primary-600, #0f7078))
151
- );
142
+ color: var(--hx-date-picker-focus-ring-color, var(--hx-focus-ring-color, #0f7078));
152
143
  background-color: color-mix(
153
144
  in srgb,
154
- var(
155
- --hx-date-picker-focus-ring-color,
156
- var(--hx-focus-ring-color, var(--hx-color-primary-600, #0f7078))
157
- )
158
- 8%,
145
+ var(--hx-date-picker-focus-ring-color, var(--hx-focus-ring-color, #0f7078)) 8%,
159
146
  transparent
160
147
  );
161
148
  }
@@ -252,10 +239,7 @@
252
239
 
253
240
  :is(.calendar__nav-btn, .calendar__day):focus-visible {
254
241
  box-shadow: 0 0 0 var(--hx-focus-ring-width, 2px)
255
- var(
256
- --hx-date-picker-focus-ring-color,
257
- var(--hx-focus-ring-color, var(--hx-color-primary-600, #0f7078))
258
- );
242
+ var(--hx-date-picker-focus-ring-color, var(--hx-focus-ring-color, #0f7078));
259
243
  z-index: 1;
260
244
  }
261
245
 
@@ -37,10 +37,7 @@
37
37
 
38
38
  .link:focus-visible {
39
39
  outline: var(--hx-focus-ring-width, 2px) solid
40
- var(
41
- --hx-link-focus-ring-color,
42
- var(--hx-focus-ring-color, var(--hx-color-primary-600, #0f7078))
43
- );
40
+ var(--hx-link-focus-ring-color, var(--hx-focus-ring-color, #0f7078));
44
41
  outline-offset: var(--hx-focus-ring-offset, 2px);
45
42
  border-radius: var(--hx-border-radius-sm, 0.25rem);
46
43
  }
@@ -41,8 +41,7 @@
41
41
  }
42
42
 
43
43
  .symbol:focus-visible {
44
- outline: var(--hx-focus-ring-width, 2px) solid
45
- var(--hx-focus-ring-color, var(--hx-color-primary-600, #0f7078));
44
+ outline: var(--hx-focus-ring-width, 2px) solid var(--hx-focus-ring-color, #0f7078);
46
45
  outline-offset: var(--hx-focus-ring-offset, 2px);
47
46
  border-radius: var(--hx-border-radius-sm, 0.25rem);
48
47
  }
@@ -19,10 +19,7 @@
19
19
  --_border-radius: var(--hx-select-border-radius, var(--hx-border-radius-md, 0.375rem));
20
20
 
21
21
  /* Focus ring */
22
- --_focus-ring-color: var(
23
- --hx-select-focus-ring-color,
24
- var(--hx-focus-ring-color, var(--hx-color-primary-600, #0f7078))
25
- );
22
+ --_focus-ring-color: var(--hx-select-focus-ring-color, var(--hx-focus-ring-color, #0f7078));
26
23
 
27
24
  /* Error */
28
25
  --_error-color: var(--hx-select-error-color, var(--hx-color-error-500, #e5493e));
@@ -113,7 +113,7 @@
113
113
 
114
114
  .side-nav__toggle:hover {
115
115
  background-color: var(
116
- --hx-color-border-on-dark-subtle,
116
+ --hx-color-surface-on-dark-overlay-subtle,
117
117
  rgba(255, 255, 255, 0.1)
118
118
  ); /* fallback for browsers without color-mix() */
119
119
  color: var(--hx-side-nav-toggle-hover-color, var(--hx-color-text-inverse, #ffffff));
@@ -199,10 +199,7 @@
199
199
  .slider__input:focus-visible ~ .slider__thumb-visual {
200
200
  box-shadow:
201
201
  0 0 0 var(--hx-focus-ring-width, 2px)
202
- var(
203
- --hx-slider-focus-ring-color,
204
- var(--hx-focus-ring-color, var(--hx-color-primary-600, #0f7078))
205
- ),
202
+ var(--hx-slider-focus-ring-color, var(--hx-focus-ring-color, #0f7078)),
206
203
  var(--hx-slider-thumb-shadow, var(--hx-shadow-sm, 0 1px 2px 0 rgb(0 0 0 / 0.05)));
207
204
  }
208
205
 
@@ -48,10 +48,7 @@
48
48
 
49
49
  .split-button__primary:focus-visible {
50
50
  outline: var(--hx-focus-ring-width, 2px) solid
51
- var(
52
- --hx-split-button-focus-ring-color,
53
- var(--hx-focus-ring-color, var(--hx-color-primary-600, #0f7078))
54
- );
51
+ var(--hx-split-button-focus-ring-color, var(--hx-focus-ring-color, #0f7078));
55
52
  outline-offset: var(--hx-focus-ring-offset, 2px);
56
53
  z-index: 1;
57
54
  position: relative;
@@ -93,10 +90,7 @@
93
90
 
94
91
  .split-button__trigger:focus-visible {
95
92
  outline: var(--hx-focus-ring-width, 2px) solid
96
- var(
97
- --hx-split-button-focus-ring-color,
98
- var(--hx-focus-ring-color, var(--hx-color-primary-600, #0f7078))
99
- );
93
+ var(--hx-split-button-focus-ring-color, var(--hx-focus-ring-color, #0f7078));
100
94
  outline-offset: var(--hx-focus-ring-offset, 2px);
101
95
  z-index: 1;
102
96
  position: relative;
@@ -51,10 +51,7 @@
51
51
 
52
52
  .switch__track:focus-visible {
53
53
  outline: var(--hx-focus-ring-width, 2px) solid
54
- var(
55
- --hx-switch-focus-ring-color,
56
- var(--hx-focus-ring-color, var(--hx-color-primary-600, #0f7078))
57
- );
54
+ var(--hx-switch-focus-ring-color, var(--hx-focus-ring-color, #0f7078));
58
55
  outline-offset: var(--hx-focus-ring-offset, 2px);
59
56
  }
60
57
 
@@ -29,10 +29,7 @@
29
29
  );
30
30
  --_text-input-border-color-focus: var(
31
31
  --hx-text-input-border-color-focus,
32
- var(
33
- --hx-input-focus-ring-color,
34
- var(--hx-focus-ring-color, var(--hx-color-primary-600, #0f7078))
35
- )
32
+ var(--hx-input-focus-ring-color, var(--hx-focus-ring-color, #0f7078))
36
33
  );
37
34
  --_text-input-border-color-invalid: var(
38
35
  --hx-text-input-border-color-invalid,
@@ -58,10 +55,7 @@
58
55
  /* Focus ring */
59
56
  --_text-input-focus-ring-color: var(
60
57
  --hx-text-input-focus-ring-color,
61
- var(
62
- --hx-input-focus-ring-color,
63
- var(--hx-focus-ring-color, var(--hx-color-primary-600, #0f7078))
64
- )
58
+ var(--hx-input-focus-ring-color, var(--hx-focus-ring-color, #0f7078))
65
59
  );
66
60
  --_text-input-focus-ring-width: var(
67
61
  --hx-text-input-focus-ring-width,