@helixui/library 3.2.0-next.85 → 3.2.0-next.91
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.
- package/custom-elements.json +105 -299
- package/dist/components/hx-button/hx-button.d.ts +44 -49
- package/dist/components/hx-button/hx-button.d.ts.map +1 -1
- package/dist/components/hx-button/hx-button.styles.d.ts.map +1 -1
- package/dist/components/hx-button/index.js +1 -1
- package/dist/components/hx-side-nav/hx-side-nav.d.ts +4 -19
- package/dist/components/hx-side-nav/hx-side-nav.d.ts.map +1 -1
- package/dist/components/hx-side-nav/index.js +1 -1
- package/dist/components/hx-text-input/hx-text-input.d.ts +13 -30
- package/dist/components/hx-text-input/hx-text-input.d.ts.map +1 -1
- package/dist/components/hx-toast/hx-toast.d.ts.map +1 -1
- package/dist/components/hx-toast/hx-toast.styles.d.ts.map +1 -1
- package/dist/components/hx-toast/index.js +1 -1
- package/dist/css/helix-all.css +75 -9
- package/dist/css/helix-core.css +68 -8
- package/dist/css/helix-feedback.css +7 -1
- package/dist/css/helix-tokens.css +1 -0
- package/dist/css/hx-button.css +68 -8
- package/dist/css/hx-toast.css +7 -1
- package/dist/css/index.css +1 -1
- package/dist/css/manifest.json +5 -1
- package/dist/index.js +3 -3
- package/dist/shared/{hx-button-kWxjKqo-.js → hx-button-ebUV8KhT.js} +90 -30
- package/dist/shared/hx-button-ebUV8KhT.js.map +1 -0
- package/dist/shared/{hx-nav-item-C9zXD1zK.js → hx-nav-item-CvTxO3Sa.js} +2 -2
- package/dist/shared/hx-nav-item-CvTxO3Sa.js.map +1 -0
- package/dist/shared/hx-text-input-ClrrmoE1.js.map +1 -1
- package/dist/shared/{toast-factory-Mz1GaaFF.js → toast-factory-YSznocIV.js} +38 -33
- package/dist/shared/toast-factory-YSznocIV.js.map +1 -0
- package/figma-inventory.json +157 -365
- package/package.json +2 -2
- package/dist/shared/hx-button-kWxjKqo-.js.map +0 -1
- package/dist/shared/hx-nav-item-C9zXD1zK.js.map +0 -1
- package/dist/shared/toast-factory-Mz1GaaFF.js.map +0 -1
|
@@ -27,60 +27,45 @@ declare const HelixButton_base: typeof HelixElement;
|
|
|
27
27
|
* @csspart suffix - The suffix slot container span.
|
|
28
28
|
* @csspart spinner - The loading spinner SVG element.
|
|
29
29
|
*
|
|
30
|
-
* @cssprop [--hx-button-bg=var(--hx-color-primary-
|
|
31
|
-
* @cssprop [--hx-button-hover-bg] - Hover background
|
|
32
|
-
* @cssprop [--hx-button-
|
|
33
|
-
* @cssprop [--hx-button-
|
|
30
|
+
* @cssprop [--hx-button-bg=var(--hx-color-action-primary-bg)] - Button background color (3.2.1 cascade — variant rules route through action.{primary,secondary,ghost,danger}.bg).
|
|
31
|
+
* @cssprop [--hx-button-hover-bg] - 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.
|
|
32
|
+
* @cssprop [--hx-button-active-bg] - 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.
|
|
33
|
+
* @cssprop [--hx-button-color=var(--hx-color-text-on-primary)] - Button text color (variants route through text.on-{role} / text.on-{role}-strong).
|
|
34
|
+
* @cssprop [--hx-button-border-color=transparent] - Button border color (secondary/outline variants route through action.secondary.border).
|
|
34
35
|
* @cssprop [--hx-button-border-radius=var(--hx-border-radius-md)] - Button border radius.
|
|
35
36
|
* @cssprop [--hx-button-font-family=var(--hx-font-family-sans)] - Button font family.
|
|
36
37
|
* @cssprop [--hx-button-font-weight=var(--hx-font-weight-semibold)] - Button font weight.
|
|
37
38
|
* @cssprop [--hx-button-focus-ring-color=var(--hx-focus-ring-color)] - Focus ring color.
|
|
38
39
|
*
|
|
39
|
-
* @cssprop [--hx-button-inverted-color
|
|
40
|
-
* @cssprop [--hx-button-inverted-
|
|
41
|
-
* @cssprop [--hx-button-inverted-
|
|
42
|
-
* @cssprop [--hx-
|
|
43
|
-
* @cssprop [--hx-
|
|
44
|
-
*
|
|
45
|
-
* @cssprop [--hx-
|
|
46
|
-
* @cssprop [--hx-color-primary-
|
|
47
|
-
* @cssprop [--hx-color-
|
|
48
|
-
* @cssprop [--hx-
|
|
49
|
-
* @cssprop [--hx-
|
|
50
|
-
* @cssprop [--hx-
|
|
51
|
-
* @cssprop [--hx-
|
|
52
|
-
* @cssprop [--hx-
|
|
53
|
-
* @cssprop [--hx-
|
|
54
|
-
* @cssprop [--hx-
|
|
55
|
-
* @cssprop [--hx-
|
|
56
|
-
* @cssprop [--hx-
|
|
57
|
-
* @cssprop [--hx-
|
|
58
|
-
* @cssprop [--hx-
|
|
59
|
-
* @cssprop [--hx-
|
|
60
|
-
* @cssprop [--hx-
|
|
61
|
-
* @cssprop [--hx-
|
|
62
|
-
* @cssprop [--hx-
|
|
63
|
-
* @cssprop [--hx-
|
|
64
|
-
* @cssprop [--hx-
|
|
65
|
-
* @cssprop [--hx-
|
|
66
|
-
* @cssprop [--hx-
|
|
67
|
-
* @cssprop [--hx-color-
|
|
68
|
-
* @cssprop [--hx-color-neutral-100] - Color.
|
|
69
|
-
* @cssprop [--hx-color-neutral-900] - Color.
|
|
70
|
-
* @cssprop [--hx-color-neutral-200] - Color.
|
|
71
|
-
* @cssprop [--hx-color-error-500] - Color.
|
|
72
|
-
* @cssprop [--hx-color-error-600] - Color.
|
|
73
|
-
* @cssprop [--hx-color-neutral-300] - Color.
|
|
74
|
-
* @cssprop [--hx-color-neutral-50] - Color.
|
|
75
|
-
* @cssprop [--hx-color-primary-600] - Color.
|
|
76
|
-
* @cssprop [--hx-duration-spinner] - Animation duration.
|
|
77
|
-
* @cssprop [--hx-opacity-muted] - Opacity.
|
|
78
|
-
* @cssprop [--hx-overlay-white-50] - Overlay color.
|
|
79
|
-
* @cssprop [--hx-color-primary-400] - Color.
|
|
80
|
-
* @cssprop [--hx-overlay-white-70] - Overlay color.
|
|
81
|
-
* @cssprop [--hx-overlay-white-15] - Overlay color.
|
|
82
|
-
* @cssprop [--hx-overlay-white-25] - Overlay color.
|
|
83
|
-
* @cssprop [--hx-overlay-white-20] - Overlay color.
|
|
40
|
+
* @cssprop [--hx-button-inverted-color=var(--hx-color-text-inverse)] - Text color when inverted (resolves to neutral-0).
|
|
41
|
+
* @cssprop [--hx-button-inverted-primary-interactive-color=var(--hx-color-text-on-primary)] - 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.
|
|
42
|
+
* @cssprop [--hx-button-inverted-danger-interactive-color=var(--hx-color-text-on-error)] - 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.
|
|
43
|
+
* @cssprop [--hx-button-inverted-ghost-hover-bg=var(--hx-color-border-on-dark-default)] - Ghost hover bg when inverted (overlay-white-30 ≈ 5:1 vs neutral-900).
|
|
44
|
+
* @cssprop [--hx-button-inverted-focus-ring-color=var(--hx-color-border-on-dark-strong)] - Focus ring color when inverted (overlay-white-70 = ~5:1 vs neutral-900).
|
|
45
|
+
*
|
|
46
|
+
* @cssprop [--hx-color-action-primary-bg] - Primary variant resting fill (3.2.1 semantic action layer).
|
|
47
|
+
* @cssprop [--hx-color-action-primary-bg-hover] - Primary variant hover fill.
|
|
48
|
+
* @cssprop [--hx-color-action-primary-bg-active] - Primary variant active/pressed fill.
|
|
49
|
+
* @cssprop [--hx-color-action-secondary-fg] - 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.
|
|
50
|
+
* @cssprop [--hx-color-action-secondary-border] - Secondary/outline variant border (3.2.1 semantic; outline still routes through --hx-color-border-strong by default).
|
|
51
|
+
* @cssprop [--hx-color-action-secondary-bg-hover] - Secondary/outline variant hover fill (3.2.1 semantic; outline still routes through --hx-color-surface-raised by default).
|
|
52
|
+
* @cssprop [--hx-color-action-ghost-fg] - Ghost variant fg.
|
|
53
|
+
* @cssprop [--hx-color-action-ghost-bg-hover] - Ghost variant hover fill.
|
|
54
|
+
* @cssprop [--hx-color-action-danger-bg] - Danger variant resting fill.
|
|
55
|
+
* @cssprop [--hx-color-action-danger-bg-hover] - Danger variant hover fill.
|
|
56
|
+
* @cssprop [--hx-color-action-danger-bg-active] - Danger variant active fill.
|
|
57
|
+
* @cssprop [--hx-color-action-primary-bg-inverted-hover] - Primary variant hover/pressed fill on dark/inverted surface (resolves to primary-400, 7.27:1 on neutral-900).
|
|
58
|
+
* @cssprop [--hx-color-action-danger-bg-inverted-hover] - Danger variant hover/pressed fill on dark/inverted surface (resolves to error-400, 6.58:1 on neutral-900).
|
|
59
|
+
* @cssprop [--hx-color-text-on-primary] - Foreground for primary fill (resolves to neutral-900 — AA-tuned for primary-500).
|
|
60
|
+
* @cssprop [--hx-color-text-on-primary-strong] - Foreground for primary-hover fill (resolves to neutral-0 across modes).
|
|
61
|
+
* @cssprop [--hx-color-text-on-error] - Foreground for danger fill (resolves to neutral-900).
|
|
62
|
+
* @cssprop [--hx-color-text-on-error-strong] - Foreground for danger-hover fill (resolves to neutral-0 across modes).
|
|
63
|
+
* @cssprop [--hx-color-text-primary] - Foreground for tertiary variant on surface.sunken.
|
|
64
|
+
* @cssprop [--hx-color-surface-sunken] - Tertiary variant resting fill.
|
|
65
|
+
* @cssprop [--hx-color-surface-raised] - Tertiary variant hover fill.
|
|
66
|
+
* @cssprop [--hx-color-border-on-dark-subtle] - Inverted-tertiary resting border (overlay-white-10).
|
|
67
|
+
* @cssprop [--hx-color-border-on-dark-default] - Inverted-tertiary hover border + inverted-secondary/ghost hover border (overlay-white-30).
|
|
68
|
+
* @cssprop [--hx-color-border-on-dark-strong] - Inverted focus-visible outline (overlay-white-70).
|
|
84
69
|
*/
|
|
85
70
|
export declare class HelixButton extends HelixButton_base {
|
|
86
71
|
static styles: import('lit').CSSResult[];
|
|
@@ -141,6 +126,16 @@ export declare class HelixButton extends HelixButton_base {
|
|
|
141
126
|
/**
|
|
142
127
|
* When true, flips button colors for placement on dark or gradient backgrounds.
|
|
143
128
|
* Forces text to white and adjusts hover/focus ring colors across all variants.
|
|
129
|
+
*
|
|
130
|
+
* **Mode scope:** `[inverted]` is validated for placement on a dark *region*
|
|
131
|
+
* within a light-mode-active page (hero banners, gradient sections, dark
|
|
132
|
+
* cards). It is NOT validated for use within a dark-mode-active root
|
|
133
|
+
* context: in dark mode, `surface.inverse` flips to a light surface
|
|
134
|
+
* (neutral-100), and the lifted `-400` hover/active fills lose UI-floor
|
|
135
|
+
* contrast against it (primary 2.10:1, danger 2.32:1 vs WCAG 1.4.11's 3:1
|
|
136
|
+
* floor). Mode-aware fill stops + foreground for the dark-mode-inverted
|
|
137
|
+
* combination are tracked as a 3.2.x follow-up.
|
|
138
|
+
*
|
|
144
139
|
* @attr inverted
|
|
145
140
|
*/
|
|
146
141
|
inverted: boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hx-button.d.ts","sourceRoot":"","sources":["../../../src/components/hx-button/hx-button.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,KAAK,cAAc,EAAE,KAAK,cAAc,EAAE,MAAM,KAAK,CAAC;AAC9E,OAAO,4CAA4C,CAAC;AAIpD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAKnD,6DAA6D;AAC7D,MAAM,WAAW,mBAAmB;IAClC,aAAa,EAAE,UAAU,CAAC;CAC3B;;AAED
|
|
1
|
+
{"version":3,"file":"hx-button.d.ts","sourceRoot":"","sources":["../../../src/components/hx-button/hx-button.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,KAAK,cAAc,EAAE,KAAK,cAAc,EAAE,MAAM,KAAK,CAAC;AAC9E,OAAO,4CAA4C,CAAC;AAIpD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAKnD,6DAA6D;AAC7D,MAAM,WAAW,mBAAmB;IAClC,aAAa,EAAE,UAAU,CAAC;CAC3B;;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6DG;AACH,qBACa,WAAY,SAAQ,gBAAgC;IAM/D,OAAgB,MAAM,4BAAuB;IAI7C,gBAAgB;IAChB,OAAgB,cAAc,UAAQ;IAItC;;;OAGG;IAEH,OAAO,EAAE,SAAS,GAAG,WAAW,GAAG,UAAU,GAAG,QAAQ,GAAG,OAAO,GAAG,SAAS,CAAa;IAE3F;;;OAGG;IAEH,IAAI,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,CAAQ;IAEhC;;;OAGG;IAEH,QAAQ,UAAS;IAEjB;;;;OAIG;IAEH,OAAO,UAAS;IAEhB;;;OAGG;IAEH,IAAI,EAAE,QAAQ,GAAG,QAAQ,GAAG,OAAO,CAAY;IAE/C;;;OAGG;IAEH,IAAI,EAAE,MAAM,GAAG,SAAS,CAAa;IAErC;;;OAGG;IAEH,MAAM,EAAE,MAAM,GAAG,SAAS,CAAa;IAEvC;;;OAGG;IAEH,IAAI,EAAE,MAAM,GAAG,SAAS,CAAa;IAErC;;;OAGG;IAEH,KAAK,EAAE,MAAM,GAAG,SAAS,CAAa;IAEtC;;;;OAIG;IAEH,IAAI,UAAS;IAEb;;;;;;;;;;;;;;OAcG;IAEH,QAAQ,UAAS;IAEjB;;;;;;;;OAQG;IAEH,eAAe,EAAE,MAAM,CAAM;IAE7B;;;;OAIG;IACH,OAAO,KAAK,eAAe,GAE1B;cAIkB,eAAe,CAAC,QAAQ,EAAE,OAAO,GAAG,IAAI;IAM3D,gBAAgB;IAChB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,eAAe,CAO5B;IAGX,OAAO,CAAC,qBAAqB,CAAS;IAE7B,YAAY,CAAC,iBAAiB,EAAE,cAAc,CAAC,IAAI,CAAC,GAAG,IAAI;IAe3D,OAAO,CAAC,iBAAiB,EAAE,cAAc,CAAC,IAAI,CAAC,GAAG,IAAI;IAgB/D,gBAAgB;IAChB,OAAO,CAAC,wBAAwB;IAoBhC;;;OAGG;IACH,OAAO,CAAC,YAAY;IAgCpB;;;OAGG;IACH,OAAO,CAAC,cAAc;IA6BtB;;;OAGG;IACH,OAAO,CAAC,YAAY;IAiBX,MAAM;CAyChB;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,WAAW,EAAE,WAAW,CAAC;KAC1B;IACD,UAAU,mBAAmB;QAC3B,UAAU,EAAE,WAAW,CAAC;YAAE,aAAa,EAAE,UAAU,CAAA;SAAE,CAAC,CAAC;KACxD;CACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hx-button.styles.d.ts","sourceRoot":"","sources":["../../../src/components/hx-button/hx-button.styles.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,iBAAiB,
|
|
1
|
+
{"version":3,"file":"hx-button.styles.d.ts","sourceRoot":"","sources":["../../../src/components/hx-button/hx-button.styles.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,iBAAiB,yBA4Y7B,CAAC"}
|
|
@@ -30,25 +30,10 @@ import { HelixElement } from '../../base/index.js';
|
|
|
30
30
|
* @cssprop [--hx-side-nav-footer-padding=var(--hx-space-4)] - Footer padding.
|
|
31
31
|
* @cssprop [--hx-side-nav-toggle-color=var(--hx-color-text-inverse)] - Toggle button icon color (resting).
|
|
32
32
|
* @cssprop [--hx-side-nav-toggle-hover-color=var(--hx-color-text-inverse)] - Toggle button icon color on hover.
|
|
33
|
-
* @cssprop [--hx-color-neutral-900
|
|
34
|
-
* @cssprop [--hx-color-
|
|
35
|
-
* @cssprop [--hx-
|
|
36
|
-
* @cssprop [--hx-border-
|
|
37
|
-
* @cssprop [--hx-color-neutral-700] - Color.
|
|
38
|
-
* @cssprop [--hx-space-4] - Spacing token.
|
|
39
|
-
* @cssprop [--hx-space-14] - Spacing token.
|
|
40
|
-
* @cssprop [--hx-space-3] - Spacing token.
|
|
41
|
-
* @cssprop [--hx-space-2] - Spacing token.
|
|
42
|
-
* @cssprop [--hx-space-8] - Spacing token.
|
|
43
|
-
* @cssprop [--hx-border-radius-sm] - CSS custom property.
|
|
44
|
-
* @cssprop [--hx-color-neutral-400] - Color.
|
|
45
|
-
* @cssprop [--hx-transition-fast] - Transition timing.
|
|
46
|
-
* @cssprop [--hx-overlay-white-10] - Overlay color.
|
|
47
|
-
* @cssprop [--hx-focus-ring-width] - Width.
|
|
48
|
-
* @cssprop [--hx-focus-ring-color] - Color.
|
|
49
|
-
* @cssprop [--hx-color-primary-400] - Color.
|
|
50
|
-
* @cssprop [--hx-focus-ring-offset] - CSS custom property.
|
|
51
|
-
* @cssprop [--hx-space-5] - Spacing token.
|
|
33
|
+
* @cssprop [--hx-color-surface-inverse] - Side-nav surface fill (resolves to neutral-900 light, near-black dark).
|
|
34
|
+
* @cssprop [--hx-color-text-inverse] - Side-nav text color (resolves to neutral-0).
|
|
35
|
+
* @cssprop [--hx-color-border-strong] - Header/footer divider border.
|
|
36
|
+
* @cssprop [--hx-color-border-on-dark-subtle] - Toggle button hover surface (overlay-white-10 primitive — semantic layer for inverted affordances).
|
|
52
37
|
*/
|
|
53
38
|
export declare class HelixSideNav extends HelixElement {
|
|
54
39
|
static styles: import('lit').CSSResult[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hx-side-nav.d.ts","sourceRoot":"","sources":["../../../src/components/hx-side-nav/hx-side-nav.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,KAAK,cAAc,EAAE,MAAM,KAAK,CAAC;AAChD,OAAO,4CAA4C,CAAC;AAEpD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAGnD
|
|
1
|
+
{"version":3,"file":"hx-side-nav.d.ts","sourceRoot":"","sources":["../../../src/components/hx-side-nav/hx-side-nav.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,KAAK,cAAc,EAAE,MAAM,KAAK,CAAC;AAChD,OAAO,4CAA4C,CAAC;AAEpD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAGnD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,qBACa,YAAa,SAAQ,YAAY;IAI5C,OAAgB,MAAM,4BAAwB;IAI9C;;;OAGG;IAEH,SAAS,UAAS;IAElB;;;OAGG;IAEH,KAAK,SAAqB;IAIjB,OAAO,CAAC,iBAAiB,EAAE,cAAc,CAAC,IAAI,CAAC,GAAG,IAAI;IAS/D;;;;OAIG;IACH,gBAAgB;IAChB,OAAO,CAAC,6BAA6B;IAkBrC;;;OAGG;IACH,gBAAgB;IAChB,OAAO,CAAC,oBAAoB;IAM5B;;;;;OAKG;IACH,gBAAgB;IAChB,OAAO,CAAC,cAAc;IAgItB,gBAAgB;IAChB,OAAO,CAAC,aAAa;IAgCrB,gBAAgB;IAChB,OAAO,CAAC,iBAAiB;IAQhB,MAAM;CA0BhB;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,aAAa,EAAE,YAAY,CAAC;KAC7B;CACF;AAED,YAAY,EAAE,YAAY,IAAI,SAAS,EAAE,CAAC"}
|
|
@@ -41,36 +41,19 @@ declare const HelixTextInput_base: typeof HelixElement & (new (...args: any[]) =
|
|
|
41
41
|
* @cssprop [--hx-input-label-color=var(--hx-color-text-strong)] - Label text color.
|
|
42
42
|
* @cssprop [--hx-input-sm-font-size=0.875rem] - Font size for the sm size variant.
|
|
43
43
|
* @cssprop [--hx-input-lg-font-size=1.125rem] - Font size for the lg size variant.
|
|
44
|
-
*
|
|
45
|
-
* @cssprop [--hx-
|
|
46
|
-
* @cssprop [--hx-
|
|
47
|
-
* @cssprop [--hx-
|
|
48
|
-
* @cssprop [--hx-
|
|
49
|
-
* @cssprop [--hx-
|
|
50
|
-
* @cssprop [--hx-font-
|
|
51
|
-
*
|
|
52
|
-
* @cssprop [--hx-
|
|
53
|
-
* @cssprop [--hx-color-
|
|
54
|
-
* @cssprop [--hx-
|
|
55
|
-
* @cssprop [--hx-color-error-text] -
|
|
56
|
-
* @cssprop [--hx-
|
|
57
|
-
* @cssprop [--hx-border-width-thin] - Width.
|
|
58
|
-
* @cssprop [--hx-color-neutral-300] - Color.
|
|
59
|
-
* @cssprop [--hx-border-radius-md] - CSS custom property.
|
|
60
|
-
* @cssprop [--hx-color-neutral-0] - Color.
|
|
61
|
-
* @cssprop [--hx-transition-fast] - Transition timing.
|
|
62
|
-
* @cssprop [--hx-color-error-500] - Color.
|
|
63
|
-
* @cssprop [--hx-color-neutral-500] - Color.
|
|
64
|
-
* @cssprop [--hx-space-3] - Spacing token.
|
|
65
|
-
* @cssprop [--hx-space-2] - Spacing token.
|
|
66
|
-
* @cssprop [--hx-font-size-md] - Font size.
|
|
67
|
-
* @cssprop [--hx-color-neutral-800] - Color.
|
|
68
|
-
* @cssprop [--hx-size-10] - Size token.
|
|
69
|
-
* @cssprop [--hx-color-neutral-400] - Color.
|
|
70
|
-
* @cssprop [--hx-size-8] - Size token.
|
|
71
|
-
* @cssprop [--hx-space-4] - Spacing token.
|
|
72
|
-
* @cssprop [--hx-size-12] - Size token.
|
|
73
|
-
* @cssprop [--hx-font-size-xs] - Font size.
|
|
44
|
+
*
|
|
45
|
+
* @cssprop [--hx-text-input-border-width=var(--hx-border-width-thin)] - Outer border-width override (canonical hx-{tag}-* prefix; sits above --hx-input-* aliases in the cascade).
|
|
46
|
+
* @cssprop [--hx-text-input-padding-x=var(--hx-space-3)] - Outer horizontal padding override.
|
|
47
|
+
* @cssprop [--hx-text-input-padding-y=var(--hx-space-2)] - Outer vertical padding override.
|
|
48
|
+
* @cssprop [--hx-text-input-font-size=var(--hx-font-size-md)] - Outer font-size override.
|
|
49
|
+
* @cssprop [--hx-text-input-sm-font-size] - Outer sm-variant font-size override (falls through to --hx-input-sm-font-size).
|
|
50
|
+
* @cssprop [--hx-text-input-lg-font-size] - Outer lg-variant font-size override (falls through to --hx-input-lg-font-size).
|
|
51
|
+
*
|
|
52
|
+
* @cssprop [--hx-color-surface-default] - Resting field surface (semantic).
|
|
53
|
+
* @cssprop [--hx-color-text-strong] - Resting input text + label color (semantic).
|
|
54
|
+
* @cssprop [--hx-color-border-strong] - Resting border color (semantic).
|
|
55
|
+
* @cssprop [--hx-color-error-text] - Error state text + border color (semantic).
|
|
56
|
+
* @cssprop [--hx-color-error-600] - Error border primitive fallback inside the invalid-state cascade.
|
|
74
57
|
*/
|
|
75
58
|
export declare class HelixTextInput extends HelixTextInput_base {
|
|
76
59
|
static styles: import('lit').CSSResult[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hx-text-input.d.ts","sourceRoot":"","sources":["../../../src/components/hx-text-input/hx-text-input.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,KAAK,cAAc,EAAE,MAAM,KAAK,CAAC;AACzD,OAAO,4CAA4C,CAAC;AAKpD,OAAO,EAAE,YAAY,EAAmB,MAAM,qBAAqB,CAAC;AASpE,4EAA4E;AAC5E,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,MAAM,CAAC;CACf;;AAED
|
|
1
|
+
{"version":3,"file":"hx-text-input.d.ts","sourceRoot":"","sources":["../../../src/components/hx-text-input/hx-text-input.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hx-toast.d.ts","sourceRoot":"","sources":["../../../src/components/hx-toast/hx-toast.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,KAAK,cAAc,EAAE,MAAM,KAAK,CAAC;AACzD,OAAO,4CAA4C,CAAC;AAGpD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"hx-toast.d.ts","sourceRoot":"","sources":["../../../src/components/hx-toast/hx-toast.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,KAAK,cAAc,EAAE,MAAM,KAAK,CAAC;AACzD,OAAO,4CAA4C,CAAC;AAGpD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAGnD,MAAM,MAAM,YAAY,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,GAAG,QAAQ,GAAG,MAAM,CAAC;AAEjF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwDG;AACH,qBACa,UAAW,SAAQ,YAAY;IAO1C,OAAgB,MAAM,4BAAsB;IAI5C;;;OAGG;IAEH,OAAO,EAAE,SAAS,GAAG,SAAS,GAAG,SAAS,GAAG,QAAQ,GAAG,MAAM,CAAa;IAE3E;;;OAGG;IAEH,QAAQ,SAAQ;IAEhB;;;OAGG;IAEH,QAAQ,UAAS;IAEjB;;;OAGG;IAEH,IAAI,UAAS;IAEb;;;OAGG;IAEH,UAAU,SAA0B;IAIpC,gBAAgB;IACC,OAAO,CAAC,QAAQ,CAAsB;IAEvD,oEAAoE;IAC3D,OAAO,CAAC,iBAAiB,CAAS;IAE3C,gBAAgB;IAChB,OAAO,CAAC,MAAM,CAA8C;IAI5D,0EAA0E;IAC1E,OAAO,KAAK,cAAc,GAIzB;IAED,gBAAgB;IAChB,OAAO,CAAC,eAAe,CAAuB;IAE9C,gBAAgB;IAChB,OAAO,CAAC,eAAe,CAAuB;IAIrC,OAAO,CAAC,iBAAiB,EAAE,cAAc,CAAC,IAAI,CAAC,GAAG,IAAI;IAiBtD,oBAAoB,IAAI,IAAI;IAOrC,sBAAsB;IACtB,IAAI,IAAI,IAAI;IAMZ,sBAAsB;IACtB,IAAI,IAAI,IAAI;IAQZ,gBAAgB;IAChB,OAAO,CAAC,WAAW;IAUnB,gBAAgB;IAChB,OAAO,CAAC,WAAW;IASnB,gBAAgB;IAChB,OAAO,CAAC,iBAAiB;IAOzB,gBAAgB;IAChB,OAAO,CAAC,WAAW;IAMnB,gBAAgB;IAChB,OAAO,CAAC,SAAS;IAIjB,gBAAgB;IAChB,OAAO,CAAC,SAAS;IAsBjB,gBAAgB;IAChB,OAAO,CAAC,iBAAiB;IAIzB,gBAAgB;IAChB,OAAO,CAAC,iBAAiB;IAMzB,gBAAgB;IAChB,OAAO,CAAC,cAAc;IAItB,gBAAgB;IAChB,OAAO,CAAC,eAAe;IAMvB,gBAAgB;IAChB,OAAO,CAAC,YAAY;IAIpB,gBAAgB;IAChB,OAAO,CAAC,uBAAuB;IAU/B,gBAAgB;IAChB,OAAO,KAAK,KAAK,GAEhB;IAED,gBAAgB;IAChB,OAAO,KAAK,SAAS,GAEpB;IAMD,gBAAgB;IAChB,OAAO,CAAC,kBAAkB;IAS1B,gBAAgB;IAChB,OAAO,CAAC,kBAAkB;IAS1B,gBAAgB;IAChB,OAAO,CAAC,iBAAiB;IASzB,gBAAgB;IAChB,OAAO,CAAC,eAAe;IASvB,4FAA4F;IAC5F,OAAO,KAAK,YAAY,GAavB;IAID,gBAAgB;IAChB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,gBAAgB,CAKtC;IAEF,gBAAgB;IAChB,OAAO,KAAK,cAAc,GAEzB;IAIQ,MAAM;CA6DhB;AAID,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,UAAU,EAAE,UAAU,CAAC;KACxB;CACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hx-toast.styles.d.ts","sourceRoot":"","sources":["../../../src/components/hx-toast/hx-toast.styles.ts"],"names":[],"mappings":"AAEA;;;;;;;;;GASG;AACH,eAAO,MAAM,gBAAgB,
|
|
1
|
+
{"version":3,"file":"hx-toast.styles.d.ts","sourceRoot":"","sources":["../../../src/components/hx-toast/hx-toast.styles.ts"],"names":[],"mappings":"AAEA;;;;;;;;;GASG;AACH,eAAO,MAAM,gBAAgB,yBAiM5B,CAAC;AAEF,eAAO,MAAM,qBAAqB,yBAyEjC,CAAC"}
|
package/dist/css/helix-all.css
CHANGED
|
@@ -1120,8 +1120,8 @@
|
|
|
1120
1120
|
|
|
1121
1121
|
.button--secondary {
|
|
1122
1122
|
--hx-button-bg: transparent;
|
|
1123
|
-
/* primary-500 (#429797) text on white surface = 3.
|
|
1124
|
-
primary-600 (#0F7078) on white =
|
|
1123
|
+
/* primary-500 (#429797) text on white surface = 3.44:1 — fails AA.
|
|
1124
|
+
primary-600 (#0F7078) on white = 5.82:1 — AA pass. */
|
|
1125
1125
|
--hx-button-color: var(--hx-color-action-secondary-fg, #0f7078);
|
|
1126
1126
|
--hx-button-border-color: var(--hx-color-action-secondary-border, #0f7078);
|
|
1127
1127
|
}
|
|
@@ -1150,7 +1150,7 @@
|
|
|
1150
1150
|
}
|
|
1151
1151
|
|
|
1152
1152
|
/* on-error tokens are tuned for error-500 (neutral-900 on #E5493E ≈ 4.59:1).
|
|
1153
|
-
error-600 (#C92A2A) drops that to
|
|
1153
|
+
error-600 (#C92A2A) drops that to 3.28:1 — AA fail. text.on-error-strong
|
|
1154
1154
|
resolves to neutral-0 across modes (no dark flip) so the darker hover fill
|
|
1155
1155
|
stays legible. Mirrors hx-toast precedent (commit 300e21ab0); routed
|
|
1156
1156
|
through the semantic tier in 3.2.1 token-cascade remediation. */
|
|
@@ -1159,10 +1159,22 @@
|
|
|
1159
1159
|
--hx-button-color: var(--hx-color-text-on-error-strong, #ffffff);
|
|
1160
1160
|
}
|
|
1161
1161
|
|
|
1162
|
+
/* Pressed state binds explicitly to action.danger.bg-active (error-700,
|
|
1163
|
+
#A21312) + text.on-error-strong (neutral-0) = 7.96:1 AA. Base
|
|
1164
|
+
.button:active filter:brightness(0.8) would compound on top of bg-hover
|
|
1165
|
+
(#C92A2A) and produce ~3.3:1 sub-AA on the bound colors. Override the
|
|
1166
|
+
filter to none. HC override on action.danger.bg-active flips to HC
|
|
1167
|
+
error-500 so the on-error-strong (HC = #000) pair is AA in HC too. */
|
|
1168
|
+
.button--danger:active {
|
|
1169
|
+
--hx-button-bg: var(--hx-button-active-bg, var(--hx-color-action-danger-bg-active, #a21312));
|
|
1170
|
+
--hx-button-color: var(--hx-color-text-on-error-strong, #ffffff);
|
|
1171
|
+
filter: none;
|
|
1172
|
+
}
|
|
1173
|
+
|
|
1162
1174
|
.button--ghost {
|
|
1163
1175
|
--hx-button-bg: transparent;
|
|
1164
|
-
/* primary-500 (#429797) text on white surface = 3.
|
|
1165
|
-
primary-600 (#0F7078) on white =
|
|
1176
|
+
/* primary-500 (#429797) text on white surface = 3.44:1 — fails AA.
|
|
1177
|
+
primary-600 (#0F7078) on white = 5.82:1 — AA pass. */
|
|
1166
1178
|
--hx-button-color: var(--hx-color-action-ghost-fg, #0f7078);
|
|
1167
1179
|
--hx-button-border-color: transparent;
|
|
1168
1180
|
}
|
|
@@ -1191,6 +1203,17 @@
|
|
|
1191
1203
|
--hx-button-color: var(--hx-color-text-on-primary-strong, #ffffff);
|
|
1192
1204
|
}
|
|
1193
1205
|
|
|
1206
|
+
/* Pressed state binds explicitly to action.primary.bg-active (primary-700,
|
|
1207
|
+
#0F6363) + text.on-primary-strong (neutral-0) = 7.03:1 AA. The base
|
|
1208
|
+
.button:active filter:brightness(0.8) would compound on top of bg-hover
|
|
1209
|
+
(#0F7078) and produce ~3.7:1 sub-AA on the bound colors. Override the
|
|
1210
|
+
filter to none so the action.*.bg-active token is what actually paints. */
|
|
1211
|
+
.button--primary:active {
|
|
1212
|
+
--hx-button-bg: var(--hx-button-active-bg, var(--hx-color-action-primary-bg-active, #0f6363));
|
|
1213
|
+
--hx-button-color: var(--hx-color-text-on-primary-strong, #ffffff);
|
|
1214
|
+
filter: none;
|
|
1215
|
+
}
|
|
1216
|
+
|
|
1194
1217
|
/* ─── Disabled ─── */
|
|
1195
1218
|
|
|
1196
1219
|
/* Note: opacity is applied on :host([disabled]) above — do NOT add opacity here.
|
|
@@ -1256,9 +1279,46 @@
|
|
|
1256
1279
|
);
|
|
1257
1280
|
}
|
|
1258
1281
|
|
|
1259
|
-
/* Primary inverted —
|
|
1260
|
-
|
|
1261
|
-
|
|
1282
|
+
/* Primary inverted — hover/pressed lift to action.primary.bg-inverted-hover
|
|
1283
|
+
(primary-400, light teal). The base :host([inverted]) .button rule binds
|
|
1284
|
+
color to text.inverse, which flips by mode (neutral-0 in light, neutral-900
|
|
1285
|
+
in dark). On a permanent light-teal fill, white text drops to 2.4:1 in
|
|
1286
|
+
light mode (AA fail). Pin color to text.on-primary (neutral-900, no
|
|
1287
|
+
dark-mode flip) for both hover and active so the foreground is dark in
|
|
1288
|
+
both modes — neutral-900 on primary-400 = 7.27:1 (AA pass).
|
|
1289
|
+
Pressed === hover visually in inverted mode is acceptable UX (the
|
|
1290
|
+
transient absence of pointer over the button signals release).
|
|
1291
|
+
The fallback chain wraps --hx-button-active-bg (highest precedence) and
|
|
1292
|
+
--hx-button-hover-bg so consumer overrides on either prop apply under
|
|
1293
|
+
:host([inverted]) — the two share a paint here, so either knob is
|
|
1294
|
+
honored, with active-bg winning when both are set. */
|
|
1295
|
+
:host([inverted]) .button--primary:hover,
|
|
1296
|
+
:host([inverted]) .button--primary:active {
|
|
1297
|
+
--hx-button-bg: var(
|
|
1298
|
+
--hx-button-active-bg,
|
|
1299
|
+
var(--hx-button-hover-bg, var(--hx-color-action-primary-bg-inverted-hover, #6ab1b1))
|
|
1300
|
+
);
|
|
1301
|
+
color: var(
|
|
1302
|
+
--hx-button-inverted-primary-interactive-color,
|
|
1303
|
+
var(--hx-color-text-on-primary, #0d1825)
|
|
1304
|
+
);
|
|
1305
|
+
}
|
|
1306
|
+
|
|
1307
|
+
/* Danger inverted — sister to primary. Hover/pressed lift to
|
|
1308
|
+
action.danger.bg-inverted-hover (error-400, #FC7264). Same foreground
|
|
1309
|
+
contract: text.inverse fails in light mode (white on light red ≈ 2.6:1);
|
|
1310
|
+
pin to text.on-error (neutral-900, no dark-mode flip) for 6.58:1 in both
|
|
1311
|
+
modes. Same active-bg → hover-bg → semantic fallback chain as primary. */
|
|
1312
|
+
:host([inverted]) .button--danger:hover,
|
|
1313
|
+
:host([inverted]) .button--danger:active {
|
|
1314
|
+
--hx-button-bg: var(
|
|
1315
|
+
--hx-button-active-bg,
|
|
1316
|
+
var(--hx-button-hover-bg, var(--hx-color-action-danger-bg-inverted-hover, #fc7264))
|
|
1317
|
+
);
|
|
1318
|
+
color: var(
|
|
1319
|
+
--hx-button-inverted-danger-interactive-color,
|
|
1320
|
+
var(--hx-color-text-on-error, #0d1825)
|
|
1321
|
+
);
|
|
1262
1322
|
}
|
|
1263
1323
|
|
|
1264
1324
|
/* Secondary inverted — white border and translucent hover fill */
|
|
@@ -12340,10 +12400,16 @@ export const helixTableSectionBaseStyles = css`
|
|
|
12340
12400
|
}
|
|
12341
12401
|
|
|
12342
12402
|
/* ─── Forced Colors (Windows High Contrast) ─── */
|
|
12343
|
-
/*
|
|
12403
|
+
/* Sole owner: bespoke per-class HC overrides on .toast and .toast__close.
|
|
12404
|
+
The shared forcedColorsSurface mixin was dropped in 3.2.1 (XOR rule);
|
|
12405
|
+
this block now carries the surface contract the mixin used to provide
|
|
12406
|
+
(background:Canvas + color:CanvasText + border:1px solid CanvasText)
|
|
12407
|
+
plus the per-class affordances the mixin never touched. */
|
|
12344
12408
|
|
|
12345
12409
|
@media (forced-colors: active) {
|
|
12346
12410
|
.toast {
|
|
12411
|
+
background: Canvas;
|
|
12412
|
+
color: CanvasText;
|
|
12347
12413
|
border: 1px solid CanvasText;
|
|
12348
12414
|
}
|
|
12349
12415
|
|
package/dist/css/helix-core.css
CHANGED
|
@@ -443,8 +443,8 @@
|
|
|
443
443
|
|
|
444
444
|
.button--secondary {
|
|
445
445
|
--hx-button-bg: transparent;
|
|
446
|
-
/* primary-500 (#429797) text on white surface = 3.
|
|
447
|
-
primary-600 (#0F7078) on white =
|
|
446
|
+
/* primary-500 (#429797) text on white surface = 3.44:1 — fails AA.
|
|
447
|
+
primary-600 (#0F7078) on white = 5.82:1 — AA pass. */
|
|
448
448
|
--hx-button-color: var(--hx-color-action-secondary-fg, #0f7078);
|
|
449
449
|
--hx-button-border-color: var(--hx-color-action-secondary-border, #0f7078);
|
|
450
450
|
}
|
|
@@ -473,7 +473,7 @@
|
|
|
473
473
|
}
|
|
474
474
|
|
|
475
475
|
/* on-error tokens are tuned for error-500 (neutral-900 on #E5493E ≈ 4.59:1).
|
|
476
|
-
error-600 (#C92A2A) drops that to
|
|
476
|
+
error-600 (#C92A2A) drops that to 3.28:1 — AA fail. text.on-error-strong
|
|
477
477
|
resolves to neutral-0 across modes (no dark flip) so the darker hover fill
|
|
478
478
|
stays legible. Mirrors hx-toast precedent (commit 300e21ab0); routed
|
|
479
479
|
through the semantic tier in 3.2.1 token-cascade remediation. */
|
|
@@ -482,10 +482,22 @@
|
|
|
482
482
|
--hx-button-color: var(--hx-color-text-on-error-strong, #ffffff);
|
|
483
483
|
}
|
|
484
484
|
|
|
485
|
+
/* Pressed state binds explicitly to action.danger.bg-active (error-700,
|
|
486
|
+
#A21312) + text.on-error-strong (neutral-0) = 7.96:1 AA. Base
|
|
487
|
+
.button:active filter:brightness(0.8) would compound on top of bg-hover
|
|
488
|
+
(#C92A2A) and produce ~3.3:1 sub-AA on the bound colors. Override the
|
|
489
|
+
filter to none. HC override on action.danger.bg-active flips to HC
|
|
490
|
+
error-500 so the on-error-strong (HC = #000) pair is AA in HC too. */
|
|
491
|
+
.button--danger:active {
|
|
492
|
+
--hx-button-bg: var(--hx-button-active-bg, var(--hx-color-action-danger-bg-active, #a21312));
|
|
493
|
+
--hx-button-color: var(--hx-color-text-on-error-strong, #ffffff);
|
|
494
|
+
filter: none;
|
|
495
|
+
}
|
|
496
|
+
|
|
485
497
|
.button--ghost {
|
|
486
498
|
--hx-button-bg: transparent;
|
|
487
|
-
/* primary-500 (#429797) text on white surface = 3.
|
|
488
|
-
primary-600 (#0F7078) on white =
|
|
499
|
+
/* primary-500 (#429797) text on white surface = 3.44:1 — fails AA.
|
|
500
|
+
primary-600 (#0F7078) on white = 5.82:1 — AA pass. */
|
|
489
501
|
--hx-button-color: var(--hx-color-action-ghost-fg, #0f7078);
|
|
490
502
|
--hx-button-border-color: transparent;
|
|
491
503
|
}
|
|
@@ -514,6 +526,17 @@
|
|
|
514
526
|
--hx-button-color: var(--hx-color-text-on-primary-strong, #ffffff);
|
|
515
527
|
}
|
|
516
528
|
|
|
529
|
+
/* Pressed state binds explicitly to action.primary.bg-active (primary-700,
|
|
530
|
+
#0F6363) + text.on-primary-strong (neutral-0) = 7.03:1 AA. The base
|
|
531
|
+
.button:active filter:brightness(0.8) would compound on top of bg-hover
|
|
532
|
+
(#0F7078) and produce ~3.7:1 sub-AA on the bound colors. Override the
|
|
533
|
+
filter to none so the action.*.bg-active token is what actually paints. */
|
|
534
|
+
.button--primary:active {
|
|
535
|
+
--hx-button-bg: var(--hx-button-active-bg, var(--hx-color-action-primary-bg-active, #0f6363));
|
|
536
|
+
--hx-button-color: var(--hx-color-text-on-primary-strong, #ffffff);
|
|
537
|
+
filter: none;
|
|
538
|
+
}
|
|
539
|
+
|
|
517
540
|
/* ─── Disabled ─── */
|
|
518
541
|
|
|
519
542
|
/* Note: opacity is applied on :host([disabled]) above — do NOT add opacity here.
|
|
@@ -579,9 +602,46 @@
|
|
|
579
602
|
);
|
|
580
603
|
}
|
|
581
604
|
|
|
582
|
-
/* Primary inverted —
|
|
583
|
-
|
|
584
|
-
|
|
605
|
+
/* Primary inverted — hover/pressed lift to action.primary.bg-inverted-hover
|
|
606
|
+
(primary-400, light teal). The base :host([inverted]) .button rule binds
|
|
607
|
+
color to text.inverse, which flips by mode (neutral-0 in light, neutral-900
|
|
608
|
+
in dark). On a permanent light-teal fill, white text drops to 2.4:1 in
|
|
609
|
+
light mode (AA fail). Pin color to text.on-primary (neutral-900, no
|
|
610
|
+
dark-mode flip) for both hover and active so the foreground is dark in
|
|
611
|
+
both modes — neutral-900 on primary-400 = 7.27:1 (AA pass).
|
|
612
|
+
Pressed === hover visually in inverted mode is acceptable UX (the
|
|
613
|
+
transient absence of pointer over the button signals release).
|
|
614
|
+
The fallback chain wraps --hx-button-active-bg (highest precedence) and
|
|
615
|
+
--hx-button-hover-bg so consumer overrides on either prop apply under
|
|
616
|
+
:host([inverted]) — the two share a paint here, so either knob is
|
|
617
|
+
honored, with active-bg winning when both are set. */
|
|
618
|
+
:host([inverted]) .button--primary:hover,
|
|
619
|
+
:host([inverted]) .button--primary:active {
|
|
620
|
+
--hx-button-bg: var(
|
|
621
|
+
--hx-button-active-bg,
|
|
622
|
+
var(--hx-button-hover-bg, var(--hx-color-action-primary-bg-inverted-hover, #6ab1b1))
|
|
623
|
+
);
|
|
624
|
+
color: var(
|
|
625
|
+
--hx-button-inverted-primary-interactive-color,
|
|
626
|
+
var(--hx-color-text-on-primary, #0d1825)
|
|
627
|
+
);
|
|
628
|
+
}
|
|
629
|
+
|
|
630
|
+
/* Danger inverted — sister to primary. Hover/pressed lift to
|
|
631
|
+
action.danger.bg-inverted-hover (error-400, #FC7264). Same foreground
|
|
632
|
+
contract: text.inverse fails in light mode (white on light red ≈ 2.6:1);
|
|
633
|
+
pin to text.on-error (neutral-900, no dark-mode flip) for 6.58:1 in both
|
|
634
|
+
modes. Same active-bg → hover-bg → semantic fallback chain as primary. */
|
|
635
|
+
:host([inverted]) .button--danger:hover,
|
|
636
|
+
:host([inverted]) .button--danger:active {
|
|
637
|
+
--hx-button-bg: var(
|
|
638
|
+
--hx-button-active-bg,
|
|
639
|
+
var(--hx-button-hover-bg, var(--hx-color-action-danger-bg-inverted-hover, #fc7264))
|
|
640
|
+
);
|
|
641
|
+
color: var(
|
|
642
|
+
--hx-button-inverted-danger-interactive-color,
|
|
643
|
+
var(--hx-color-text-on-error, #0d1825)
|
|
644
|
+
);
|
|
585
645
|
}
|
|
586
646
|
|
|
587
647
|
/* Secondary inverted — white border and translucent hover fill */
|
|
@@ -1357,10 +1357,16 @@
|
|
|
1357
1357
|
}
|
|
1358
1358
|
|
|
1359
1359
|
/* ─── Forced Colors (Windows High Contrast) ─── */
|
|
1360
|
-
/*
|
|
1360
|
+
/* Sole owner: bespoke per-class HC overrides on .toast and .toast__close.
|
|
1361
|
+
The shared forcedColorsSurface mixin was dropped in 3.2.1 (XOR rule);
|
|
1362
|
+
this block now carries the surface contract the mixin used to provide
|
|
1363
|
+
(background:Canvas + color:CanvasText + border:1px solid CanvasText)
|
|
1364
|
+
plus the per-class affordances the mixin never touched. */
|
|
1361
1365
|
|
|
1362
1366
|
@media (forced-colors: active) {
|
|
1363
1367
|
.toast {
|
|
1368
|
+
background: Canvas;
|
|
1369
|
+
color: CanvasText;
|
|
1364
1370
|
border: 1px solid CanvasText;
|
|
1365
1371
|
}
|
|
1366
1372
|
|
|
@@ -141,6 +141,7 @@
|
|
|
141
141
|
--hx-color-action-danger-bg: var(--hx-color-error-500);
|
|
142
142
|
--hx-color-action-danger-bg-hover: var(--hx-color-error-600);
|
|
143
143
|
--hx-color-action-danger-bg-active: var(--hx-color-error-700);
|
|
144
|
+
--hx-color-action-danger-bg-inverted-hover: var(--hx-color-error-400);
|
|
144
145
|
--hx-body-bg: var(--hx-color-surface-default);
|
|
145
146
|
--hx-body-color: var(--hx-color-text-primary);
|
|
146
147
|
--hx-body-font-family: var(--hx-font-family-sans);
|