@helixui/library 3.5.0 → 3.7.0

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 (71) hide show
  1. package/custom-elements.json +529 -81
  2. package/dist/components/hx-alert/hx-alert.d.ts +18 -0
  3. package/dist/components/hx-alert/hx-alert.d.ts.map +1 -1
  4. package/dist/components/hx-badge/index.js +1 -1
  5. package/dist/components/hx-button/hx-button.d.ts +18 -0
  6. package/dist/components/hx-button/hx-button.d.ts.map +1 -1
  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.d.ts +18 -0
  10. package/dist/components/hx-checkbox/hx-checkbox.d.ts.map +1 -1
  11. package/dist/components/hx-checkbox/hx-checkbox.styles.d.ts.map +1 -1
  12. package/dist/components/hx-checkbox/index.js +1 -1
  13. package/dist/components/hx-date-picker/hx-date-picker.styles.d.ts.map +1 -1
  14. package/dist/components/hx-date-picker/index.js +1 -1
  15. package/dist/components/hx-dialog/hx-dialog.d.ts +18 -0
  16. package/dist/components/hx-dialog/hx-dialog.d.ts.map +1 -1
  17. package/dist/components/hx-icon-button/hx-icon-button.styles.d.ts.map +1 -1
  18. package/dist/components/hx-icon-button/index.js +1 -1
  19. package/dist/components/hx-pagination/hx-pagination.styles.d.ts.map +1 -1
  20. package/dist/components/hx-pagination/index.js +1 -1
  21. package/dist/components/hx-radio-group/index.js +1 -1
  22. package/dist/components/hx-steps/index.js +1 -1
  23. package/dist/components/hx-text-input/hx-text-input.d.ts +18 -0
  24. package/dist/components/hx-text-input/hx-text-input.d.ts.map +1 -1
  25. package/dist/components/hx-toggle-button/hx-toggle-button.styles.d.ts.map +1 -1
  26. package/dist/components/hx-toggle-button/index.js +1 -1
  27. package/dist/css/helix-all.css +59 -34
  28. package/dist/css/helix-core.css +20 -14
  29. package/dist/css/helix-forms.css +33 -17
  30. package/dist/css/helix-navigation.css +6 -3
  31. package/dist/css/helix-tokens.css +5 -4
  32. package/dist/css/hx-badge.css +5 -5
  33. package/dist/css/hx-button.css +11 -4
  34. package/dist/css/hx-checkbox.css +10 -4
  35. package/dist/css/hx-date-picker.css +5 -2
  36. package/dist/css/hx-icon-button.css +4 -5
  37. package/dist/css/hx-pagination.css +6 -3
  38. package/dist/css/hx-toggle-button.css +18 -11
  39. package/dist/css/index.css +1 -1
  40. package/dist/css/manifest.json +18 -9
  41. package/dist/index.js +9 -9
  42. package/dist/shared/hx-alert-Bto8-TIi.js.map +1 -1
  43. package/dist/shared/{hx-badge-JlFtAdxS.js → hx-badge-DFL35nzi.js} +16 -16
  44. package/dist/shared/hx-badge-DFL35nzi.js.map +1 -0
  45. package/dist/shared/{hx-button-BOwAEcF1.js → hx-button-rRNmD4fd.js} +12 -5
  46. package/dist/shared/hx-button-rRNmD4fd.js.map +1 -0
  47. package/dist/shared/{hx-checkbox-CYd0YV_u.js → hx-checkbox-hPlIw6Lb.js} +25 -19
  48. package/dist/shared/hx-checkbox-hPlIw6Lb.js.map +1 -0
  49. package/dist/shared/{hx-date-picker-B49yo4Vm.js → hx-date-picker-DSKDkCy1.js} +6 -3
  50. package/dist/shared/hx-date-picker-DSKDkCy1.js.map +1 -0
  51. package/dist/shared/hx-dialog-B4weoj_1.js.map +1 -1
  52. package/dist/shared/{hx-icon-button-a6OpeQz5.js → hx-icon-button-B2BdVdyK.js} +10 -11
  53. package/dist/shared/hx-icon-button-B2BdVdyK.js.map +1 -0
  54. package/dist/shared/{hx-pagination-C7y8GVyU.js → hx-pagination-D726PyTM.js} +7 -4
  55. package/dist/shared/hx-pagination-D726PyTM.js.map +1 -0
  56. package/dist/shared/{hx-radio-C7eTj5YI.js → hx-radio-CY4kQfZw.js} +44 -44
  57. package/dist/shared/{hx-radio-C7eTj5YI.js.map → hx-radio-CY4kQfZw.js.map} +1 -1
  58. package/dist/shared/{hx-step-R2rjp1fT.js → hx-step-CUzliIK_.js} +3 -3
  59. package/dist/shared/hx-step-CUzliIK_.js.map +1 -0
  60. package/dist/shared/hx-text-input-D6FlOZM-.js.map +1 -1
  61. package/dist/shared/{hx-toggle-button-DwBers3A.js → hx-toggle-button-DSJeFlb0.js} +52 -45
  62. package/dist/shared/{hx-toggle-button-DwBers3A.js.map → hx-toggle-button-DSJeFlb0.js.map} +1 -1
  63. package/figma-inventory.json +1399 -103
  64. package/package.json +2 -2
  65. package/dist/shared/hx-badge-JlFtAdxS.js.map +0 -1
  66. package/dist/shared/hx-button-BOwAEcF1.js.map +0 -1
  67. package/dist/shared/hx-checkbox-CYd0YV_u.js.map +0 -1
  68. package/dist/shared/hx-date-picker-B49yo4Vm.js.map +0 -1
  69. package/dist/shared/hx-icon-button-a6OpeQz5.js.map +0 -1
  70. package/dist/shared/hx-pagination-C7y8GVyU.js.map +0 -1
  71. package/dist/shared/hx-step-R2rjp1fT.js.map +0 -1
@@ -98,15 +98,21 @@
98
98
  /* ─── Checked State ─── */
99
99
 
100
100
  .checkbox--checked .checkbox__box {
101
- background-color: var(--hx-checkbox-checked-bg, var(--hx-color-primary-500, #429797));
102
- border-color: var(--hx-checkbox-checked-border-color, var(--hx-color-primary-500, #429797));
101
+ background-color: var(--hx-checkbox-checked-bg, var(--hx-color-action-primary-bg, #0f7078));
102
+ border-color: var(
103
+ --hx-checkbox-checked-border-color,
104
+ var(--hx-color-action-primary-bg, #0f7078)
105
+ );
103
106
  }
104
107
 
105
108
  /* ─── Indeterminate State ─── */
106
109
 
107
110
  .checkbox--indeterminate .checkbox__box {
108
- background-color: var(--hx-checkbox-checked-bg, var(--hx-color-primary-500, #429797));
109
- border-color: var(--hx-checkbox-checked-border-color, var(--hx-color-primary-500, #429797));
111
+ background-color: var(--hx-checkbox-checked-bg, var(--hx-color-action-primary-bg, #0f7078));
112
+ border-color: var(
113
+ --hx-checkbox-checked-border-color,
114
+ var(--hx-color-action-primary-bg, #0f7078)
115
+ );
110
116
  }
111
117
 
112
118
  /* ─── Error State ─── */
@@ -1405,13 +1411,16 @@
1405
1411
  }
1406
1412
 
1407
1413
  .calendar__day--selected {
1408
- background-color: var(--hx-date-picker-selected-bg, var(--hx-color-primary-500, #429797));
1414
+ background-color: var(--hx-date-picker-selected-bg, var(--hx-color-action-primary-bg, #0f7078));
1409
1415
  color: var(--hx-date-picker-selected-color, var(--hx-color-text-on-primary, #ffffff));
1410
1416
  font-weight: var(--hx-font-weight-semibold, 600);
1411
1417
  }
1412
1418
 
1413
1419
  .calendar__day--selected:hover {
1414
- background-color: var(--hx-date-picker-selected-hover-bg, var(--hx-color-primary-600, #0f7078));
1420
+ background-color: var(
1421
+ --hx-date-picker-selected-hover-bg,
1422
+ var(--hx-color-action-primary-bg-hover, #0f6363)
1423
+ );
1415
1424
  }
1416
1425
 
1417
1426
  .calendar__day--today:not(.calendar__day--selected) {
@@ -4474,7 +4483,7 @@
4474
4483
  gap: var(--hx-space-2, 0.5rem);
4475
4484
  border: var(--hx-border-width-thin, 1px) solid var(--hx-toggle-button-border-color, transparent);
4476
4485
  border-radius: var(--hx-toggle-button-border-radius, var(--hx-border-radius-md, 0.375rem));
4477
- background-color: var(--hx-toggle-button-bg, var(--hx-color-primary-500, #429797));
4486
+ background-color: var(--hx-toggle-button-bg, var(--hx-color-action-primary-bg, #0f7078));
4478
4487
  color: var(--hx-toggle-button-color, var(--hx-color-text-on-primary, #ffffff));
4479
4488
  font-family: var(--hx-toggle-button-font-family, var(--hx-font-family-sans, sans-serif));
4480
4489
  font-weight: var(--hx-toggle-button-font-weight, var(--hx-font-weight-semibold, 600));
@@ -4547,7 +4556,7 @@
4547
4556
  /* ─── Style Variants ─── */
4548
4557
 
4549
4558
  .button--primary {
4550
- --hx-toggle-button-bg: var(--hx-color-primary-500, #429797);
4559
+ --hx-toggle-button-bg: var(--hx-color-action-primary-bg, #0f7078);
4551
4560
  --hx-toggle-button-color: var(--hx-color-text-on-primary, #ffffff);
4552
4561
  --hx-toggle-button-border-color: transparent;
4553
4562
  }
@@ -4625,12 +4634,15 @@
4625
4634
  * so the state change is immediately legible.
4626
4635
  */
4627
4636
  .button--secondary.button--pressed {
4628
- --hx-toggle-button-bg: var(--hx-toggle-button-pressed-bg, var(--hx-color-primary-500, #429797));
4637
+ --hx-toggle-button-bg: var(
4638
+ --hx-toggle-button-pressed-bg,
4639
+ var(--hx-color-action-primary-bg, #0f7078)
4640
+ );
4629
4641
  --hx-toggle-button-color: var(
4630
4642
  --hx-toggle-button-pressed-color,
4631
4643
  var(--hx-color-text-on-primary, #ffffff)
4632
4644
  );
4633
- --hx-toggle-button-border-color: var(--hx-color-primary-500, #429797);
4645
+ --hx-toggle-button-border-color: var(--hx-color-action-primary-bg, #0f7078);
4634
4646
  }
4635
4647
 
4636
4648
  /* Tertiary pressed: use primary-100 bg + primary-700 text + border for WCAG 3:1 non-text contrast. */
@@ -4641,7 +4653,8 @@
4641
4653
  var(--hx-color-primary-700, #0f6363)
4642
4654
  );
4643
4655
  --hx-toggle-button-border-color: var(--hx-color-primary-600, #0f7078);
4644
- box-shadow: inset 0 0 0 1px var(--hx-color-primary-600, #0f7078);
4656
+ box-shadow: inset 0 0 0 var(--hx-toggle-button-pressed-ring-width, 1px)
4657
+ var(--hx-color-primary-600, #0f7078);
4645
4658
  }
4646
4659
 
4647
4660
  /* Ghost pressed: subtle neutral fill, matching hover behavior as a baseline. */
@@ -4665,7 +4678,8 @@
4665
4678
  var(--hx-color-text-primary, #0d1825)
4666
4679
  );
4667
4680
  --hx-toggle-button-border-color: var(--hx-color-text-muted, #4a5362);
4668
- box-shadow: inset 0 0 0 1px var(--hx-color-neutral-500, #66787b);
4681
+ box-shadow: inset 0 0 0 var(--hx-toggle-button-pressed-ring-width, 1px)
4682
+ var(--hx-color-neutral-500, #66787b);
4669
4683
  }
4670
4684
 
4671
4685
  /* ─── Disabled ─── */
@@ -4700,15 +4714,17 @@
4700
4714
  @media (forced-colors: active) {
4701
4715
  .button {
4702
4716
  forced-color-adjust: none;
4703
- background-color: ButtonFace;
4704
- color: ButtonText;
4705
- border: 2px solid ButtonText;
4717
+ background-color: var(--hx-toggle-button-fc-bg, ButtonFace);
4718
+ color: var(--hx-toggle-button-fc-color, ButtonText);
4719
+ border: var(--hx-toggle-button-fc-border-width, 2px) solid
4720
+ var(--hx-toggle-button-fc-border-color, ButtonText);
4706
4721
  }
4707
4722
 
4708
4723
  :host(:focus-visible) .button,
4709
4724
  .button:focus-visible {
4710
- outline: 3px solid Highlight;
4711
- outline-offset: 2px;
4725
+ outline: var(--hx-toggle-button-fc-focus-ring-width, 3px) solid
4726
+ var(--hx-toggle-button-fc-focus-ring-color, Highlight);
4727
+ outline-offset: var(--hx-toggle-button-fc-focus-ring-offset, 2px);
4712
4728
  }
4713
4729
 
4714
4730
  .button--pressed {
@@ -575,7 +575,10 @@
575
575
 
576
576
  .button:hover:not(:disabled) {
577
577
  background: var(--hx-pagination-hover-bg, var(--hx-color-surface-sunken, #ebeee9));
578
- border-color: var(--hx-pagination-hover-border-color, var(--hx-color-primary-500, #429797));
578
+ border-color: var(
579
+ --hx-pagination-hover-border-color,
580
+ var(--hx-color-action-primary-bg, #0f7078)
581
+ );
579
582
  }
580
583
 
581
584
  .button:focus-visible {
@@ -585,10 +588,10 @@
585
588
  }
586
589
 
587
590
  .button[aria-current='page'] {
588
- background: var(--hx-pagination-active-bg, var(--hx-color-primary-500, #429797));
591
+ background: var(--hx-pagination-active-bg, var(--hx-color-action-primary-bg, #0f7078));
589
592
  border-color: var(
590
593
  --hx-pagination-active-border-color,
591
- var(--hx-pagination-active-bg, var(--hx-color-primary-500, #429797))
594
+ var(--hx-pagination-active-bg, var(--hx-color-action-primary-bg, #0f7078))
592
595
  );
593
596
  color: var(--hx-pagination-active-color, var(--hx-color-text-on-primary, #ffffff));
594
597
  font-weight: var(--hx-font-weight-semibold, 600);
@@ -95,7 +95,7 @@
95
95
  --hx-color-text-placeholder: var(--hx-color-neutral-500);
96
96
  --hx-color-text-disabled: var(--hx-color-neutral-400);
97
97
  --hx-color-text-inverse: var(--hx-color-neutral-0);
98
- --hx-color-text-on-primary: var(--hx-color-neutral-900);
98
+ --hx-color-text-on-primary: var(--hx-color-neutral-0);
99
99
  --hx-color-text-on-secondary: var(--hx-color-neutral-900);
100
100
  --hx-color-text-on-error: var(--hx-color-neutral-900);
101
101
  --hx-color-text-on-success: var(--hx-color-neutral-900);
@@ -129,10 +129,10 @@
129
129
  --hx-color-focus-ring: var(--hx-color-primary-600);
130
130
  --hx-color-selection-bg: var(--hx-color-primary-200);
131
131
  --hx-color-selection-color: var(--hx-color-neutral-900);
132
- --hx-color-action-primary-bg: var(--hx-color-primary-500);
132
+ --hx-color-action-primary-bg: var(--hx-color-primary-600);
133
133
  --hx-color-action-primary-bg-inverted-rest: var(--hx-color-primary-500);
134
- --hx-color-action-primary-bg-hover: var(--hx-color-primary-600);
135
- --hx-color-action-primary-bg-active: var(--hx-color-primary-700);
134
+ --hx-color-action-primary-bg-hover: var(--hx-color-primary-700);
135
+ --hx-color-action-primary-bg-active: var(--hx-color-primary-800);
136
136
  --hx-color-action-primary-bg-inverted-hover: var(--hx-color-primary-400);
137
137
  --hx-color-action-secondary-fg: var(--hx-color-primary-600);
138
138
  --hx-color-action-secondary-border: var(--hx-color-primary-600);
@@ -496,6 +496,7 @@
496
496
  --hx-color-focus-ring: #FFFF00;
497
497
  --hx-color-selection-bg: #1AEBFF;
498
498
  --hx-color-selection-color: #000000;
499
+ --hx-color-action-primary-bg-active: var(--hx-color-primary-700);
499
500
  --hx-color-action-danger-bg-active: var(--hx-color-error-500);
500
501
  --hx-body-bg: #000000;
501
502
  --hx-body-color: #FFFFFF;
@@ -9,8 +9,8 @@
9
9
  justify-content: center;
10
10
  gap: var(--hx-space-1, 0.25rem);
11
11
  border-radius: var(--hx-badge-border-radius, var(--hx-border-radius-md, 0.375rem));
12
- background-color: var(--hx-badge-bg, var(--hx-color-primary-500, #429797));
13
- color: var(--hx-badge-color, var(--hx-color-text-on-primary, #0d1825));
12
+ background-color: var(--hx-badge-bg, var(--hx-color-action-primary-bg, #0f7078));
13
+ color: var(--hx-badge-color, var(--hx-color-text-on-primary, #ffffff));
14
14
  font-family: var(--hx-badge-font-family, var(--hx-font-family-sans, sans-serif));
15
15
  font-weight: var(--hx-badge-font-weight, var(--hx-font-weight-semibold, 600));
16
16
  line-height: var(--hx-line-height-tight, 1.25);
@@ -42,11 +42,11 @@
42
42
  /* ─── Style Variants ─── */
43
43
 
44
44
  .badge--primary {
45
- --hx-badge-bg: var(--hx-badge-primary-bg, var(--hx-color-primary-500, #429797));
46
- --hx-badge-color: var(--hx-badge-primary-color, var(--hx-color-text-on-primary, #0d1825));
45
+ --hx-badge-bg: var(--hx-badge-primary-bg, var(--hx-color-action-primary-bg, #0f7078));
46
+ --hx-badge-color: var(--hx-badge-primary-color, var(--hx-color-text-on-primary, #ffffff));
47
47
  --hx-badge-pulse-color-internal: var(
48
48
  --hx-badge-pulse-color,
49
- var(--hx-badge-primary-bg, var(--hx-color-primary-500, #429797))
49
+ var(--hx-badge-primary-bg, var(--hx-color-action-primary-bg, #0f7078))
50
50
  );
51
51
  }
52
52
 
@@ -290,9 +290,16 @@
290
290
  (primary-400, light teal). The base :host([inverted]) .button rule binds
291
291
  color to text.inverse, which flips by mode (neutral-0 in light, neutral-900
292
292
  in dark). On a permanent light-teal fill, white text drops to 2.4:1 in
293
- light mode (AA fail). Pin color to text.on-primary (neutral-900, no
294
- dark-mode flip) for both hover and active so the foreground is dark in
295
- both modes neutral-900 on primary-400 = 7.27:1 (AA pass).
293
+ light mode (AA fail). Pin color to neutral-900 directly (the primitive,
294
+ not text.primary which flips to neutral-100 in dark mode and would regress
295
+ the pair to ~2.10:1) so the foreground is dark in both modes —
296
+ neutral-900 on primary-400 = 7.27:1 AAA in Apex; AAA across all 6 brands.
297
+ Decoupled from text.on-primary in 3.3.x because text.on-primary now
298
+ resolves to neutral-0 (white) for the AAA-large coordinated pair on
299
+ primary-600; using it here would regress this pair to ~2.45:1 (Apex)
300
+ since primary-400 is light teal. neutral-900 is the correct anchor — it
301
+ is the primitive that both light/dark text.primary used to resolve to,
302
+ never flipped by mode/brand.
296
303
  Pressed === hover visually in inverted mode is acceptable UX (the
297
304
  transient absence of pointer over the button signals release).
298
305
  The fallback chain wraps --hx-button-active-bg (highest precedence) and
@@ -307,7 +314,7 @@
307
314
  );
308
315
  color: var(
309
316
  --hx-button-inverted-primary-interactive-color,
310
- var(--hx-color-text-on-primary, #0d1825)
317
+ var(--hx-color-neutral-900, #0d1825)
311
318
  );
312
319
  }
313
320
 
@@ -96,15 +96,21 @@
96
96
  /* ─── Checked State ─── */
97
97
 
98
98
  .checkbox--checked .checkbox__box {
99
- background-color: var(--hx-checkbox-checked-bg, var(--hx-color-primary-500, #429797));
100
- border-color: var(--hx-checkbox-checked-border-color, var(--hx-color-primary-500, #429797));
99
+ background-color: var(--hx-checkbox-checked-bg, var(--hx-color-action-primary-bg, #0f7078));
100
+ border-color: var(
101
+ --hx-checkbox-checked-border-color,
102
+ var(--hx-color-action-primary-bg, #0f7078)
103
+ );
101
104
  }
102
105
 
103
106
  /* ─── Indeterminate State ─── */
104
107
 
105
108
  .checkbox--indeterminate .checkbox__box {
106
- background-color: var(--hx-checkbox-checked-bg, var(--hx-color-primary-500, #429797));
107
- border-color: var(--hx-checkbox-checked-border-color, var(--hx-color-primary-500, #429797));
109
+ background-color: var(--hx-checkbox-checked-bg, var(--hx-color-action-primary-bg, #0f7078));
110
+ border-color: var(
111
+ --hx-checkbox-checked-border-color,
112
+ var(--hx-color-action-primary-bg, #0f7078)
113
+ );
108
114
  }
109
115
 
110
116
  /* ─── Error State ─── */
@@ -299,13 +299,16 @@
299
299
  }
300
300
 
301
301
  .calendar__day--selected {
302
- background-color: var(--hx-date-picker-selected-bg, var(--hx-color-primary-500, #429797));
302
+ background-color: var(--hx-date-picker-selected-bg, var(--hx-color-action-primary-bg, #0f7078));
303
303
  color: var(--hx-date-picker-selected-color, var(--hx-color-text-on-primary, #ffffff));
304
304
  font-weight: var(--hx-font-weight-semibold, 600);
305
305
  }
306
306
 
307
307
  .calendar__day--selected:hover {
308
- background-color: var(--hx-date-picker-selected-hover-bg, var(--hx-color-primary-600, #0f7078));
308
+ background-color: var(
309
+ --hx-date-picker-selected-hover-bg,
310
+ var(--hx-color-action-primary-bg-hover, #0f6363)
311
+ );
309
312
  }
310
313
 
311
314
  .calendar__day--today:not(.calendar__day--selected) {
@@ -74,16 +74,15 @@
74
74
  /* ─── Style Variants ─── */
75
75
 
76
76
  .button--primary {
77
- --hx-icon-button-bg: var(--hx-color-primary-500, #429797);
77
+ --hx-icon-button-bg: var(--hx-color-action-primary-bg, #0f7078);
78
78
  --hx-icon-button-color: var(--hx-color-text-on-primary, #ffffff);
79
79
  --hx-icon-button-border-color: transparent;
80
80
  }
81
81
 
82
- /* on-primary tokens are tuned for primary-500. primary-600 + on-primary
83
- drops icon contrast to 3.07:1 — fails the 4.5:1 floor for meaningful
84
- icons. Pin fg at neutral-0 (5.82:1 on primary-600). Mirrors hx-button. */
82
+ /* Hover deepens to action.primary.bg-hover (primary-700) + neutral-0 = 7.03:1 AA.
83
+ Mirrors hx-button. */
85
84
  .button--primary:hover {
86
- --hx-icon-button-bg: var(--hx-color-primary-600, #0f7078);
85
+ --hx-icon-button-bg: var(--hx-color-action-primary-bg-hover, #0f6363);
87
86
  --hx-icon-button-color: var(--hx-color-neutral-0, #ffffff);
88
87
  }
89
88
 
@@ -55,7 +55,10 @@
55
55
 
56
56
  .button:hover:not(:disabled) {
57
57
  background: var(--hx-pagination-hover-bg, var(--hx-color-surface-sunken, #ebeee9));
58
- border-color: var(--hx-pagination-hover-border-color, var(--hx-color-primary-500, #429797));
58
+ border-color: var(
59
+ --hx-pagination-hover-border-color,
60
+ var(--hx-color-action-primary-bg, #0f7078)
61
+ );
59
62
  }
60
63
 
61
64
  .button:focus-visible {
@@ -65,10 +68,10 @@
65
68
  }
66
69
 
67
70
  .button[aria-current='page'] {
68
- background: var(--hx-pagination-active-bg, var(--hx-color-primary-500, #429797));
71
+ background: var(--hx-pagination-active-bg, var(--hx-color-action-primary-bg, #0f7078));
69
72
  border-color: var(
70
73
  --hx-pagination-active-border-color,
71
- var(--hx-pagination-active-bg, var(--hx-color-primary-500, #429797))
74
+ var(--hx-pagination-active-bg, var(--hx-color-action-primary-bg, #0f7078))
72
75
  );
73
76
  color: var(--hx-pagination-active-color, var(--hx-color-text-on-primary, #ffffff));
74
77
  font-weight: var(--hx-font-weight-semibold, 600);
@@ -17,7 +17,7 @@
17
17
  gap: var(--hx-space-2, 0.5rem);
18
18
  border: var(--hx-border-width-thin, 1px) solid var(--hx-toggle-button-border-color, transparent);
19
19
  border-radius: var(--hx-toggle-button-border-radius, var(--hx-border-radius-md, 0.375rem));
20
- background-color: var(--hx-toggle-button-bg, var(--hx-color-primary-500, #429797));
20
+ background-color: var(--hx-toggle-button-bg, var(--hx-color-action-primary-bg, #0f7078));
21
21
  color: var(--hx-toggle-button-color, var(--hx-color-text-on-primary, #ffffff));
22
22
  font-family: var(--hx-toggle-button-font-family, var(--hx-font-family-sans, sans-serif));
23
23
  font-weight: var(--hx-toggle-button-font-weight, var(--hx-font-weight-semibold, 600));
@@ -90,7 +90,7 @@
90
90
  /* ─── Style Variants ─── */
91
91
 
92
92
  .button--primary {
93
- --hx-toggle-button-bg: var(--hx-color-primary-500, #429797);
93
+ --hx-toggle-button-bg: var(--hx-color-action-primary-bg, #0f7078);
94
94
  --hx-toggle-button-color: var(--hx-color-text-on-primary, #ffffff);
95
95
  --hx-toggle-button-border-color: transparent;
96
96
  }
@@ -168,12 +168,15 @@
168
168
  * so the state change is immediately legible.
169
169
  */
170
170
  .button--secondary.button--pressed {
171
- --hx-toggle-button-bg: var(--hx-toggle-button-pressed-bg, var(--hx-color-primary-500, #429797));
171
+ --hx-toggle-button-bg: var(
172
+ --hx-toggle-button-pressed-bg,
173
+ var(--hx-color-action-primary-bg, #0f7078)
174
+ );
172
175
  --hx-toggle-button-color: var(
173
176
  --hx-toggle-button-pressed-color,
174
177
  var(--hx-color-text-on-primary, #ffffff)
175
178
  );
176
- --hx-toggle-button-border-color: var(--hx-color-primary-500, #429797);
179
+ --hx-toggle-button-border-color: var(--hx-color-action-primary-bg, #0f7078);
177
180
  }
178
181
 
179
182
  /* Tertiary pressed: use primary-100 bg + primary-700 text + border for WCAG 3:1 non-text contrast. */
@@ -184,7 +187,8 @@
184
187
  var(--hx-color-primary-700, #0f6363)
185
188
  );
186
189
  --hx-toggle-button-border-color: var(--hx-color-primary-600, #0f7078);
187
- box-shadow: inset 0 0 0 1px var(--hx-color-primary-600, #0f7078);
190
+ box-shadow: inset 0 0 0 var(--hx-toggle-button-pressed-ring-width, 1px)
191
+ var(--hx-color-primary-600, #0f7078);
188
192
  }
189
193
 
190
194
  /* Ghost pressed: subtle neutral fill, matching hover behavior as a baseline. */
@@ -208,7 +212,8 @@
208
212
  var(--hx-color-text-primary, #0d1825)
209
213
  );
210
214
  --hx-toggle-button-border-color: var(--hx-color-text-muted, #4a5362);
211
- box-shadow: inset 0 0 0 1px var(--hx-color-neutral-500, #66787b);
215
+ box-shadow: inset 0 0 0 var(--hx-toggle-button-pressed-ring-width, 1px)
216
+ var(--hx-color-neutral-500, #66787b);
212
217
  }
213
218
 
214
219
  /* ─── Disabled ─── */
@@ -243,15 +248,17 @@
243
248
  @media (forced-colors: active) {
244
249
  .button {
245
250
  forced-color-adjust: none;
246
- background-color: ButtonFace;
247
- color: ButtonText;
248
- border: 2px solid ButtonText;
251
+ background-color: var(--hx-toggle-button-fc-bg, ButtonFace);
252
+ color: var(--hx-toggle-button-fc-color, ButtonText);
253
+ border: var(--hx-toggle-button-fc-border-width, 2px) solid
254
+ var(--hx-toggle-button-fc-border-color, ButtonText);
249
255
  }
250
256
 
251
257
  :host(:focus-visible) .button,
252
258
  .button:focus-visible {
253
- outline: 3px solid Highlight;
254
- outline-offset: 2px;
259
+ outline: var(--hx-toggle-button-fc-focus-ring-width, 3px) solid
260
+ var(--hx-toggle-button-fc-focus-ring-color, Highlight);
261
+ outline-offset: var(--hx-toggle-button-fc-focus-ring-offset, 2px);
255
262
  }
256
263
 
257
264
  .button--pressed {
@@ -1,4 +1,4 @@
1
- /* index.css — generated 2026-05-07T16:41:47.067Z */
1
+ /* index.css — generated 2026-05-08T04:06:33.763Z */
2
2
  /* Imports all per-component CSS files for Drupal asset pipeline */
3
3
 
4
4
  @import './hx-accordion.css';
@@ -1,5 +1,5 @@
1
1
  {
2
- "generated": "2026-05-07T16:41:47.066Z",
2
+ "generated": "2026-05-08T04:06:33.762Z",
3
3
  "components": [
4
4
  {
5
5
  "name": "hx-accordion",
@@ -151,6 +151,7 @@
151
151
  "--hx-border-radius-full",
152
152
  "--hx-border-radius-md",
153
153
  "--hx-border-radius-sm",
154
+ "--hx-color-action-primary-bg",
154
155
  "--hx-color-error-500",
155
156
  "--hx-color-info-700",
156
157
  "--hx-color-neutral-0",
@@ -158,7 +159,6 @@
158
159
  "--hx-color-neutral-200",
159
160
  "--hx-color-neutral-700",
160
161
  "--hx-color-neutral-900",
161
- "--hx-color-primary-500",
162
162
  "--hx-color-success-700",
163
163
  "--hx-color-text-on-error",
164
164
  "--hx-color-text-on-primary",
@@ -279,6 +279,7 @@
279
279
  "--hx-color-border-on-dark-strong",
280
280
  "--hx-color-border-strong",
281
281
  "--hx-color-neutral-0",
282
+ "--hx-color-neutral-900",
282
283
  "--hx-color-primary-500",
283
284
  "--hx-color-surface-on-dark-overlay-default",
284
285
  "--hx-color-surface-on-dark-overlay-subtle",
@@ -423,7 +424,6 @@
423
424
  "--hx-checkbox-border-color",
424
425
  "--hx-checkbox-border-radius",
425
426
  "--hx-checkbox-checked-bg",
426
- "--hx-checkbox-checked-border-color",
427
427
  "--hx-checkbox-checkmark-color",
428
428
  "--hx-checkbox-error-color",
429
429
  "--hx-checkbox-focus-ring-color",
@@ -433,6 +433,7 @@
433
433
  "--hx-checkbox-help-text-color",
434
434
  "--hx-checkbox-label-color",
435
435
  "--hx-checkbox-size",
436
+ "--hx-color-action-primary-bg",
436
437
  "--hx-color-border-strong",
437
438
  "--hx-color-error-500",
438
439
  "--hx-color-error-text",
@@ -823,12 +824,13 @@
823
824
  "--hx-border-radius-md",
824
825
  "--hx-border-radius-sm",
825
826
  "--hx-border-width-thin",
827
+ "--hx-color-action-primary-bg",
828
+ "--hx-color-action-primary-bg-hover",
826
829
  "--hx-color-border-default",
827
830
  "--hx-color-border-strong",
828
831
  "--hx-color-error-500",
829
832
  "--hx-color-error-text",
830
833
  "--hx-color-neutral-900",
831
- "--hx-color-primary-500",
832
834
  "--hx-color-primary-600",
833
835
  "--hx-color-surface-default",
834
836
  "--hx-color-surface-sunken",
@@ -853,7 +855,6 @@
853
855
  "--hx-date-picker-label-color",
854
856
  "--hx-date-picker-selected-bg",
855
857
  "--hx-date-picker-selected-color",
856
- "--hx-date-picker-selected-hover-bg",
857
858
  "--hx-date-picker-today-color",
858
859
  "--hx-date-picker-trigger-color",
859
860
  "--hx-date-picker-trigger-hover-color",
@@ -1167,13 +1168,14 @@
1167
1168
  "tokens": [
1168
1169
  "--hx-border-radius-md",
1169
1170
  "--hx-border-width-thin",
1171
+ "--hx-color-action-primary-bg",
1172
+ "--hx-color-action-primary-bg-hover",
1170
1173
  "--hx-color-border-strong",
1171
1174
  "--hx-color-error-500",
1172
1175
  "--hx-color-error-600",
1173
1176
  "--hx-color-neutral-0",
1174
1177
  "--hx-color-primary-50",
1175
1178
  "--hx-color-primary-500",
1176
- "--hx-color-primary-600",
1177
1179
  "--hx-color-surface-raised",
1178
1180
  "--hx-color-surface-sunken",
1179
1181
  "--hx-color-text-on-error",
@@ -1457,8 +1459,8 @@
1457
1459
  "tokens": [
1458
1460
  "--hx-border-radius-md",
1459
1461
  "--hx-border-width-thin",
1462
+ "--hx-color-action-primary-bg",
1460
1463
  "--hx-color-border-strong",
1461
- "--hx-color-primary-500",
1462
1464
  "--hx-color-surface-default",
1463
1465
  "--hx-color-surface-sunken",
1464
1466
  "--hx-color-text-muted",
@@ -1483,7 +1485,6 @@
1483
1485
  "--hx-pagination-font-family",
1484
1486
  "--hx-pagination-gap",
1485
1487
  "--hx-pagination-hover-bg",
1486
- "--hx-pagination-hover-border-color",
1487
1488
  "--hx-pagination-page-size-label-color",
1488
1489
  "--hx-space-1",
1489
1490
  "--hx-space-2",
@@ -2511,12 +2512,12 @@
2511
2512
  "tokens": [
2512
2513
  "--hx-border-radius-md",
2513
2514
  "--hx-border-width-thin",
2515
+ "--hx-color-action-primary-bg",
2514
2516
  "--hx-color-border-strong",
2515
2517
  "--hx-color-neutral-0",
2516
2518
  "--hx-color-neutral-500",
2517
2519
  "--hx-color-primary-100",
2518
2520
  "--hx-color-primary-50",
2519
- "--hx-color-primary-500",
2520
2521
  "--hx-color-primary-600",
2521
2522
  "--hx-color-primary-700",
2522
2523
  "--hx-color-surface-raised",
@@ -2547,10 +2548,18 @@
2547
2548
  "--hx-toggle-button-border-color",
2548
2549
  "--hx-toggle-button-border-radius",
2549
2550
  "--hx-toggle-button-color",
2551
+ "--hx-toggle-button-fc-bg",
2552
+ "--hx-toggle-button-fc-border-color",
2553
+ "--hx-toggle-button-fc-border-width",
2554
+ "--hx-toggle-button-fc-color",
2555
+ "--hx-toggle-button-fc-focus-ring-color",
2556
+ "--hx-toggle-button-fc-focus-ring-offset",
2557
+ "--hx-toggle-button-fc-focus-ring-width",
2550
2558
  "--hx-toggle-button-focus-ring-color",
2551
2559
  "--hx-toggle-button-font-family",
2552
2560
  "--hx-toggle-button-font-weight",
2553
2561
  "--hx-toggle-button-pressed-bg",
2562
+ "--hx-toggle-button-pressed-ring-width",
2554
2563
  "--hx-touch-target-min",
2555
2564
  "--hx-transition-fast"
2556
2565
  ]
package/dist/index.js CHANGED
@@ -3,14 +3,14 @@ import { H as S, a as y } from "./shared/hx-accordion-ZVzgDzTG.js";
3
3
  import { H as b } from "./shared/hx-action-bar-CitgcpGv.js";
4
4
  import { H as g } from "./shared/hx-alert-Bto8-TIi.js";
5
5
  import { H as v } from "./shared/hx-avatar-C9hOmlAb.js";
6
- import { H as E } from "./shared/hx-badge-JlFtAdxS.js";
6
+ import { H as E } from "./shared/hx-badge-DFL35nzi.js";
7
7
  import { H as k } from "./shared/hx-banner-fpRnciIO.js";
8
8
  import { H as B, a as P } from "./shared/hx-breadcrumb-item-3tKppF9h.js";
9
- import { H as M } from "./shared/hx-button-BOwAEcF1.js";
9
+ import { H as M } from "./shared/hx-button-rRNmD4fd.js";
10
10
  import { H as N } from "./shared/hx-button-group-4NUBpkyC.js";
11
11
  import { H as A } from "./shared/hx-card-CswtnYvj.js";
12
12
  import { H as G, a as U } from "./shared/hx-carousel-item-z1Lc24op.js";
13
- import { H as O } from "./shared/hx-checkbox-CYd0YV_u.js";
13
+ import { H as O } from "./shared/hx-checkbox-hPlIw6Lb.js";
14
14
  import { H as K } from "./shared/hx-checkbox-group-D5piJLY8.js";
15
15
  import { H as Y } from "./shared/hx-clinical-status-D3XQIOqX.js";
16
16
  import { H as q } from "./shared/hx-code-snippet-fVV3Z2DZ.js";
@@ -20,7 +20,7 @@ import { H as oe } from "./shared/hx-container-DVI7sxfX.js";
20
20
  import { H as re } from "./shared/hx-copy-button-sUVuikyH.js";
21
21
  import { H as ie } from "./shared/hx-counter-0zYapFhf.js";
22
22
  import { H as xe } from "./shared/hx-data-table-Ct3gQ6ya.js";
23
- import { H as le } from "./shared/hx-date-picker-B49yo4Vm.js";
23
+ import { H as le } from "./shared/hx-date-picker-DSKDkCy1.js";
24
24
  import { H as pe } from "./shared/hx-dialog-B4weoj_1.js";
25
25
  import { H as fe } from "./shared/hx-divider-CYfcUjcr.js";
26
26
  import { H as de } from "./shared/hx-drawer-CM_upadk.js";
@@ -33,7 +33,7 @@ import { H as Ee } from "./shared/hx-format-date-CKnlQOmV.js";
33
33
  import { H as ke, a as we } from "./shared/hx-grid-CXZf3jeK.js";
34
34
  import { H as Pe } from "./shared/hx-help-text-Xb2Yr8x2.js";
35
35
  import { H as Me } from "./shared/hx-icon-fuVm4-bk.js";
36
- import { H as Ne } from "./shared/hx-icon-button-a6OpeQz5.js";
36
+ import { H as Ne } from "./shared/hx-icon-button-B2BdVdyK.js";
37
37
  import { H as Ae } from "./shared/hx-image-Ben_4yM5.js";
38
38
  import { H as Ge } from "./shared/hx-link-CMnZRUtQ.js";
39
39
  import { H as Ve, a as Oe } from "./shared/hx-list-Bp8HeLHh.js";
@@ -42,7 +42,7 @@ import { H as qe } from "./shared/hx-meter-BnpmF3Vx.js";
42
42
  import { H as Je } from "./shared/hx-nav-ldFM3Fle.js";
43
43
  import { H as Ze } from "./shared/hx-number-input-yUzFOSC1.js";
44
44
  import { H as oo } from "./shared/hx-overflow-menu-DFjJAziP.js";
45
- import { H as ro } from "./shared/hx-pagination-C7y8GVyU.js";
45
+ import { H as ro } from "./shared/hx-pagination-D726PyTM.js";
46
46
  import { H as io } from "./shared/hx-patient-banner-CkS-Lmj4.js";
47
47
  import { H as xo } from "./shared/hx-phi-field-C19oxlrr.js";
48
48
  import { H as lo } from "./shared/hx-popover-BAlAFOH9.js";
@@ -50,7 +50,7 @@ import { H as po } from "./shared/hx-popup-COUXXZ9X.js";
50
50
  import { H as fo } from "./shared/hx-progress-bar-CYz9U721.js";
51
51
  import { H as ho } from "./shared/hx-progress-ring-TwHyXeEp.js";
52
52
  import { H as So } from "./shared/hx-prose-BThYcASV.js";
53
- import { H as To, a as bo } from "./shared/hx-radio-C7eTj5YI.js";
53
+ import { H as To, a as bo } from "./shared/hx-radio-CY4kQfZw.js";
54
54
  import { H as go } from "./shared/hx-rating-C3QP53k9.js";
55
55
  import { H as vo } from "./shared/hx-select-DahFehiZ.js";
56
56
  import { H as Eo, a as Do } from "./shared/hx-nav-item-CODtUlew.js";
@@ -62,7 +62,7 @@ import { H as Ao } from "./shared/hx-split-panel-B-u0Z3mm.js";
62
62
  import { H as Go } from "./shared/hx-stack-DGfcOfWJ.js";
63
63
  import { H as Vo } from "./shared/hx-stat-Gtw_SpK8.js";
64
64
  import { H as Xo } from "./shared/hx-status-indicator-BlQyen43.js";
65
- import { H as Wo, a as Yo } from "./shared/hx-step-R2rjp1fT.js";
65
+ import { H as Wo, a as Yo } from "./shared/hx-step-CUzliIK_.js";
66
66
  import { H as qo, a as zo } from "./shared/hx-structured-list-m_-dMJbC.js";
67
67
  import { H as Qo } from "./shared/hx-style-scope-TDnR8H4O.js";
68
68
  import { H as et } from "./shared/hx-switch-TvKGvZJz.js";
@@ -75,7 +75,7 @@ import { H as bt } from "./shared/hx-textarea-CNG590KY.js";
75
75
  import { H as gt } from "./shared/hx-theme-BsefFWTO.js";
76
76
  import { H as vt } from "./shared/hx-time-picker-Bo7FWzmf.js";
77
77
  import { H as Et, a as Dt, t as kt } from "./shared/toast-factory-Dht3pVsw.js";
78
- import { H as Bt } from "./shared/hx-toggle-button-DwBers3A.js";
78
+ import { H as Bt } from "./shared/hx-toggle-button-DSJeFlb0.js";
79
79
  import { H as Ft } from "./shared/hx-tooltip-DVqtKPCD.js";
80
80
  import { H as Lt } from "./shared/hx-top-nav-DP6OFS8C.js";
81
81
  import { H as Rt, a as At } from "./shared/hx-tree-item-CXyspGxI.js";