@techsio/ui-kit 0.7.0 → 0.9.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.
- package/dist/atoms/badge.js +5 -5
- package/dist/atoms/button.js +15 -15
- package/dist/atoms/checkbox.js +2 -2
- package/dist/atoms/figma/image.figma.js +2 -2
- package/dist/atoms/figma/numeric-input.figma.js +1 -1
- package/dist/atoms/figma/textarea.figma.js +3 -3
- package/dist/atoms/input.js +9 -9
- package/dist/atoms/numeric-input.js +5 -5
- package/dist/atoms/rating.js +1 -1
- package/dist/atoms/status-text.js +6 -6
- package/dist/atoms/textarea.js +5 -5
- package/dist/atoms/tooltip.js +3 -3
- package/dist/molecules/tabs.js +11 -10
- package/dist/src/atoms/button.d.ts.map +1 -1
- package/dist/src/atoms/link.d.ts.map +1 -1
- package/dist/src/atoms/status-text.d.ts.map +1 -1
- package/dist/src/molecules/tabs.d.ts +4 -4
- package/dist/src/molecules/tabs.d.ts.map +1 -1
- package/dist/stories/molecules/tabs.stories.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/tokens/_tokens-base.css +7 -0
- package/src/tokens/components/atoms/_badge.css +13 -70
- package/src/tokens/components/atoms/_button.css +14 -215
- package/src/tokens/components/atoms/_checkbox.css +15 -45
- package/src/tokens/components/atoms/_icon.css +16 -58
- package/src/tokens/components/atoms/_image.css +5 -5
- package/src/tokens/components/atoms/_input.css +12 -75
- package/src/tokens/components/atoms/_label.css +7 -8
- package/src/tokens/components/atoms/_link.css +5 -0
- package/src/tokens/components/atoms/_numeric-input.css +4 -63
- package/src/tokens/components/atoms/_rating.css +4 -23
- package/src/tokens/components/atoms/_skeleton.css +20 -26
- package/src/tokens/components/atoms/_status-text.css +11 -22
- package/src/tokens/components/atoms/_textarea.css +29 -82
- package/src/tokens/components/atoms/_tooltip.css +15 -18
- package/src/tokens/components/components.css +1 -0
- package/src/tokens/components/molecules/_product-card.css +16 -22
- package/src/tokens/figma/dark/variables.css +1353 -1174
- package/src/tokens/figma/light/variables.css +1353 -1174
- package/src/tokens/figma/variables.css +1589 -0
|
@@ -1,66 +1,7 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
from var(--color-numeric-input-bg) calc(l + var(--state-hover)) c h
|
|
6
|
-
);
|
|
7
|
-
--color-numeric-input-focus: oklch(
|
|
8
|
-
from var(--color-numeric-input-bg) calc(l + var(--state-active)) c h
|
|
9
|
-
);
|
|
10
|
-
--color-numeric-input-border: var(--color-form-control-border);
|
|
11
|
-
--color-numeric-input-border-hover: var(--color-form-control-border-hover);
|
|
12
|
-
--color-numeric-input-border-focus: var(--color-form-control-border-focus);
|
|
13
|
-
--color-numeric-input-fg: var(--color-input-fg);
|
|
14
|
-
|
|
15
|
-
--color-numeric-input-bg-disabled: var(--color-form-control-bg-disabled);
|
|
16
|
-
--color-numeric-input-fg-disabled: var(--color-form-control-fg-disabled);
|
|
17
|
-
--color-numeric-input-border-disabled: var(
|
|
18
|
-
--color-form-control-border-disabled
|
|
19
|
-
);
|
|
20
|
-
|
|
21
|
-
--color-numeric-input-invalid-border: var(--color-danger);
|
|
22
|
-
--color-numeric-input-invalid-bg: --alpha(var(--color-danger) / 10%);
|
|
23
|
-
|
|
24
|
-
/* ==== TYPOGRAPHY ==== */
|
|
25
|
-
--text-numeric-input-sm: var(--text-sm);
|
|
26
|
-
--text-numeric-input-md: var(--text-md);
|
|
27
|
-
--text-numeric-input-lg: var(--text-lg);
|
|
28
|
-
|
|
29
|
-
/* === INPUT === */
|
|
30
|
-
--color-numeric-input-input-bg: transparent;
|
|
31
|
-
--color-numeric-input-input-bg-hover: var(--color-numeric-input-hover);
|
|
32
|
-
--color-numeric-input-input-bg-focus: var(--color-numeric-input-focus);
|
|
33
|
-
--padding-numeric-input-input-sm: var(--spacing-100);
|
|
34
|
-
--padding-numeric-input-input-md: var(--spacing-150);
|
|
35
|
-
--padding-numeric-input-input-lg: var(--spacing-200);
|
|
36
|
-
|
|
37
|
-
/* === TRIGGER === */
|
|
38
|
-
--color-numeric-input-trigger-container-bg: var(--color-form-control-border);
|
|
39
|
-
--color-numeric-input-trigger-bg: var(--color-numeric-input-bg);
|
|
40
|
-
--color-numeric-input-trigger-bg-hover: oklch(
|
|
41
|
-
from var(--color-numeric-input-trigger-bg) calc(l + var(--state-hover)) c h
|
|
42
|
-
);
|
|
43
|
-
--color-numeric-input-trigger-fg: var(--color-numeric-input-fg);
|
|
44
|
-
--color-numeric-input-trigger-fg-hover: var(--color-primary);
|
|
45
|
-
--padding-numeric-input-trigger-x: var(--spacing-150);
|
|
46
|
-
--padding-numeric-input-trigger-y: 0rem;
|
|
47
|
-
|
|
48
|
-
/* === ROOT GAP === */
|
|
49
|
-
--gap-numeric-input-root-sm: 0rem;
|
|
50
|
-
--gap-numeric-input-root-md: 0rem;
|
|
51
|
-
--gap-numeric-input-root-lg: 0rem;
|
|
52
|
-
|
|
53
|
-
/* === INCREMENT BUTTON === */
|
|
54
|
-
|
|
55
|
-
--radius-numeric-input: var(--radius-form-control);
|
|
56
|
-
--radius-numeric-input-sm: var(--radius-form-control-sm);
|
|
57
|
-
--radius-numeric-input-md: var(--radius-form-control-md);
|
|
58
|
-
--radius-numeric-input-lg: var(--radius-form-control-lg);
|
|
59
|
-
--border-width-numeric-input: var(--border-width-input);
|
|
60
|
-
|
|
61
|
-
/* === FOCUS RING === */
|
|
62
|
-
--color-numeric-input-ring: var(--color-ring);
|
|
63
|
-
}
|
|
1
|
+
/*
|
|
2
|
+
* NumericInput — runtime tokens fully come from libs/ui/src/tokens/figma/variables.css.
|
|
3
|
+
* Only the semantic glyph aliases remain here.
|
|
4
|
+
*/
|
|
64
5
|
|
|
65
6
|
@utility token-icon-numeric-input-increment {
|
|
66
7
|
@apply token-icon-increment;
|
|
@@ -1,30 +1,11 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
/*
|
|
2
|
+
* Rating — runtime tokens fully come from libs/ui/src/tokens/figma/variables.css.
|
|
3
|
+
* Only the semantic glyph aliases remain here.
|
|
4
|
+
*/
|
|
5
5
|
|
|
6
|
-
/* === DISABLED STATES === */
|
|
7
|
-
--color-rating-fg-disabled: var(--color-fg-disabled);
|
|
8
|
-
|
|
9
|
-
/* === SPACING === */
|
|
10
|
-
--spacing-rating-sm: var(--spacing-100);
|
|
11
|
-
--spacing-rating-md: var(--spacing-150);
|
|
12
|
-
--spacing-rating-lg: var(--spacing-200);
|
|
13
|
-
|
|
14
|
-
/* === TYPOGRAPHY === */
|
|
15
|
-
--text-rating-sm: var(--text-icon-sm);
|
|
16
|
-
--text-rating-md: var(--text-icon-md);
|
|
17
|
-
--text-rating-lg: var(--text-icon-lg);
|
|
18
|
-
|
|
19
|
-
/* === FOCUS RING === */
|
|
20
|
-
--color-rating-ring: var(--color-ring);
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
/* Semantic tokens for rating icons */
|
|
24
6
|
@utility token-icon-rating {
|
|
25
7
|
@apply token-icon-star;
|
|
26
8
|
}
|
|
27
|
-
|
|
28
9
|
@utility token-icon-rating-half {
|
|
29
10
|
@apply token-icon-star-half;
|
|
30
11
|
}
|
|
@@ -1,34 +1,30 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
1
|
+
/*
|
|
2
|
+
* Skeleton — runtime tokens come from libs/ui/src/tokens/figma/variables.css
|
|
3
|
+
* (colors, sizing, radius, durations).
|
|
4
|
+
*
|
|
5
|
+
* Kept here:
|
|
6
|
+
* - `--duration-skeleton-pulse-{slow,normal,fast}` — Figma exports
|
|
7
|
+
* `--duration-skeleton-{slow,normal,fast}` (no `-pulse-` infix), but
|
|
8
|
+
* the @utility blocks below reference the `-pulse-` names.
|
|
9
|
+
* - `--spacing-skeleton-text-{sm,md,lg,xl}` — alias bridges so the
|
|
10
|
+
* `gap-skeleton-text-{size}` utility resolves; Figma exports only
|
|
11
|
+
* `--spacing-skeleton-{size}` without the `-text-` infix.
|
|
12
|
+
* - `@keyframes skeleton-pulse` + `@utility animate-skeleton-pulse-*`
|
|
13
|
+
* + reduced-motion overrides — all are runtime-CSS constructs that
|
|
14
|
+
* Figma can't model.
|
|
15
|
+
*/
|
|
7
16
|
|
|
8
|
-
|
|
9
|
-
/* Use global motion tokens for consistent behavior */
|
|
17
|
+
@theme static {
|
|
10
18
|
--duration-skeleton-pulse-slow: 3s;
|
|
11
19
|
--duration-skeleton-pulse-normal: 2s;
|
|
12
20
|
--duration-skeleton-pulse-fast: 1s;
|
|
13
21
|
|
|
14
|
-
|
|
15
|
-
--spacing-skeleton-text-
|
|
16
|
-
--spacing-skeleton-text-
|
|
17
|
-
--spacing-skeleton-text-
|
|
18
|
-
--spacing-skeleton-text-xl: var(--spacing-250);
|
|
19
|
-
|
|
20
|
-
/* === SIZING === */
|
|
21
|
-
--size-skeleton-circle-sm: 2rem;
|
|
22
|
-
--size-skeleton-circle-md: 3rem;
|
|
23
|
-
--size-skeleton-circle-lg: 4rem;
|
|
24
|
-
--size-skeleton-circle-xl: 6rem;
|
|
25
|
-
--height-skeleton-text-line: 1rem; /* Match text line height */
|
|
26
|
-
|
|
27
|
-
/* === BORDERS & RADIUS === */
|
|
28
|
-
--radius-skeleton-text: var(--radius-sm);
|
|
22
|
+
--spacing-skeleton-text-sm: var(--spacing-skeleton-sm);
|
|
23
|
+
--spacing-skeleton-text-md: var(--spacing-skeleton-md);
|
|
24
|
+
--spacing-skeleton-text-lg: var(--spacing-skeleton-lg);
|
|
25
|
+
--spacing-skeleton-text-xl: var(--spacing-skeleton-xl);
|
|
29
26
|
}
|
|
30
27
|
|
|
31
|
-
/* === ANIMATIONS === */
|
|
32
28
|
@keyframes skeleton-pulse {
|
|
33
29
|
0%,
|
|
34
30
|
100% {
|
|
@@ -65,8 +61,6 @@
|
|
|
65
61
|
}
|
|
66
62
|
}
|
|
67
63
|
|
|
68
|
-
/* Display reduced motion for storybook without having to
|
|
69
|
-
enable the prefers-reduced-motion feature in DevTools */
|
|
70
64
|
@layer utilities {
|
|
71
65
|
.force-reduced-motion {
|
|
72
66
|
animation: none;
|
|
@@ -1,32 +1,21 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
/* Icon gap - spacing between icon and text */
|
|
14
|
-
--spacing-status-text-icon-gap-sm: var(--spacing-50);
|
|
15
|
-
--spacing-status-text-icon-gap-md: var(--spacing-100);
|
|
16
|
-
--spacing-status-text-icon-gap-lg: var(--spacing-200);
|
|
17
|
-
|
|
18
|
-
--spacing-status-text-icon: var(--spacing-50);
|
|
19
|
-
--spacing-status-text-icon-long-text: var(--spacing-100);
|
|
20
|
-
}
|
|
1
|
+
/*
|
|
2
|
+
* StatusText — runtime tokens fully come from libs/ui/src/tokens/figma/variables.css.
|
|
3
|
+
* Only the semantic glyph aliases remain here.
|
|
4
|
+
*
|
|
5
|
+
* Note: Figma's `--color-status-text-fg` resolves to `--color-fg-secondary`
|
|
6
|
+
* (single value, same across modes), while the atom previously hand-picked
|
|
7
|
+
* a brighter dark-mode value. In light mode both resolve to the same
|
|
8
|
+
* oklch(0.494 …), so the storybook visual is byte-identical. If dark-mode
|
|
9
|
+
* status-text needs more contrast, add a `light-dark()` to the Figma
|
|
10
|
+
* `color/fg/secondary` semantic instead of overriding here.
|
|
11
|
+
*/
|
|
21
12
|
|
|
22
13
|
@utility token-icon-status-text-success {
|
|
23
14
|
@apply token-icon-success;
|
|
24
15
|
}
|
|
25
|
-
|
|
26
16
|
@utility token-icon-status-text-warning {
|
|
27
17
|
@apply token-icon-warning;
|
|
28
18
|
}
|
|
29
|
-
|
|
30
19
|
@utility token-icon-status-text-error {
|
|
31
20
|
@apply token-icon-error;
|
|
32
21
|
}
|
|
@@ -1,91 +1,38 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Textarea — runtime tokens come from libs/ui/src/tokens/figma/variables.css.
|
|
3
|
+
*
|
|
4
|
+
* Kept here (Figma doesn't export):
|
|
5
|
+
* - `--opacity-borderless` constant.
|
|
6
|
+
* - `--color-textarea-bg-borderless*` derived via `--alpha()` from the
|
|
7
|
+
* base bg, and `--color-textarea-placeholder-danger` derived from
|
|
8
|
+
* the validation border. These are runtime CSS function calls that
|
|
9
|
+
* can't be modelled as static Figma variables.
|
|
10
|
+
* - `--color-textarea-border-{danger,success,warning}-focus` — the
|
|
11
|
+
* focus state isn't separately exported (atom convention falls back
|
|
12
|
+
* to the `-base` value).
|
|
13
|
+
*/
|
|
14
|
+
|
|
1
15
|
@theme static {
|
|
2
16
|
--opacity-borderless: 60%;
|
|
3
|
-
/* === BASE COLOR MAPPING === */
|
|
4
|
-
--color-textarea-base: var(--color-form-control-bg);
|
|
5
|
-
--color-textarea-success: var(--color-success);
|
|
6
|
-
--color-textarea-warning: var(--color-warning);
|
|
7
|
-
--color-textarea-danger: var(--color-danger);
|
|
8
|
-
|
|
9
|
-
/* === DERIVED COLORS === */
|
|
10
|
-
/* Background colors - using reference layer */
|
|
11
|
-
--color-textarea-bg: var(--color-textarea-base);
|
|
12
|
-
--color-textarea-bg-borderless: --alpha(
|
|
13
|
-
var(--color-textarea-base) /
|
|
14
|
-
var(--opacity-borderless)
|
|
15
|
-
);
|
|
16
|
-
|
|
17
|
-
/* Foreground colors */
|
|
18
|
-
--color-textarea-fg: var(--color-fg-primary);
|
|
19
|
-
--color-textarea-placeholder: var(--color-form-control-placeholder);
|
|
20
|
-
--color-textarea-fg-disabled: var(--color-form-control-fg-disabled);
|
|
21
|
-
|
|
22
|
-
/* Border colors */
|
|
23
|
-
--color-textarea-border: var(--color-form-control-border);
|
|
24
|
-
--color-textarea-border-success: var(--color-textarea-success);
|
|
25
|
-
--color-textarea-border-warning: var(--color-textarea-warning);
|
|
26
|
-
--color-textarea-border-danger: var(--color-textarea-danger);
|
|
27
|
-
--color-textarea-border-disabled: var(--color-form-control-border-disabled);
|
|
28
|
-
|
|
29
|
-
/* === STATE VARIATIONS === */
|
|
30
|
-
/* Default hover/focus states */
|
|
31
|
-
--color-textarea-bg-hover: oklch(
|
|
32
|
-
from var(--color-textarea-base) calc(l + var(--state-hover)) c h
|
|
33
|
-
);
|
|
34
|
-
--color-textarea-bg-focus: oklch(
|
|
35
|
-
from var(--color-textarea-base) calc(l + var(--state-active)) c h
|
|
36
|
-
);
|
|
37
|
-
|
|
38
|
-
/* Border states */
|
|
39
|
-
--color-textarea-border-hover: var(--color-form-control-border-hover);
|
|
40
|
-
--color-textarea-border-focus: var(--color-textarea-accent);
|
|
41
|
-
|
|
42
|
-
/* === VALIDATION STATES === */
|
|
43
|
-
/* Success variant */
|
|
44
|
-
--color-textarea-border-success-hover: oklch(
|
|
45
|
-
from var(--color-textarea-success) calc(l + var(--state-hover)) c h
|
|
46
|
-
);
|
|
47
|
-
--color-textarea-border-success-focus: var(--color-textarea-success);
|
|
48
17
|
|
|
49
|
-
/*
|
|
50
|
-
--color-textarea-border-
|
|
51
|
-
|
|
52
|
-
);
|
|
53
|
-
--color-textarea-border-warning-focus: var(--color-textarea-warning);
|
|
18
|
+
/* Validation focus — fall back to base (Figma exports no focus variant). */
|
|
19
|
+
--color-textarea-border-danger-focus: var(--color-textarea-border-danger-base);
|
|
20
|
+
--color-textarea-border-success-focus: var(--color-textarea-border-success-base);
|
|
21
|
+
--color-textarea-border-warning-focus: var(--color-textarea-border-warning-base);
|
|
54
22
|
|
|
55
|
-
/*
|
|
56
|
-
|
|
57
|
-
from var(--color-textarea-danger) calc(l + var(--state-hover)) c h
|
|
58
|
-
);
|
|
59
|
-
--color-textarea-border-danger-focus: var(--color-textarea-danger);
|
|
23
|
+
/* Placeholder-on-danger (not in Figma) */
|
|
24
|
+
/* stylelint-disable scss/operator-no-newline-after -- biome wraps long lines */
|
|
60
25
|
--color-textarea-placeholder-danger: --alpha(
|
|
61
|
-
var(--color-textarea-danger) /
|
|
26
|
+
var(--color-textarea-border-danger-base) /
|
|
62
27
|
var(--opacity-placeholder)
|
|
63
28
|
);
|
|
64
29
|
|
|
65
|
-
/* Borderless variant */
|
|
66
|
-
--color-textarea-bg-borderless
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
/*
|
|
71
|
-
--color-textarea-bg-
|
|
72
|
-
|
|
73
|
-
/* === SPACING === */
|
|
74
|
-
--padding-textarea-sm: var(--padding-input-sm);
|
|
75
|
-
--padding-textarea-md: var(--padding-input-md);
|
|
76
|
-
--padding-textarea-lg: var(--padding-input-lg);
|
|
77
|
-
|
|
78
|
-
/* === TYPOGRAPHY === */
|
|
79
|
-
--text-textarea-sm: var(--text-sm);
|
|
80
|
-
--text-textarea-md: var(--text-md);
|
|
81
|
-
--text-textarea-lg: var(--text-lg);
|
|
82
|
-
|
|
83
|
-
/* === BORDERS & RADIUS === */
|
|
84
|
-
--border-textarea-width: var(--border-width-form-control);
|
|
85
|
-
--radius-textarea: var(--radius-form-control);
|
|
86
|
-
--radius-textarea-sm: var(--radius-form-control-sm);
|
|
87
|
-
--radius-textarea-md: var(--radius-form-control-md);
|
|
88
|
-
|
|
89
|
-
/* === FOCUS RING === */
|
|
90
|
-
--color-textarea-ring: var(--color-form-control-ring);
|
|
30
|
+
/* Borderless variant (not in Figma) */
|
|
31
|
+
--color-textarea-bg-borderless: --alpha(
|
|
32
|
+
var(--color-textarea-bg) /
|
|
33
|
+
var(--opacity-borderless)
|
|
34
|
+
);
|
|
35
|
+
/* stylelint-enable scss/operator-no-newline-after */
|
|
36
|
+
--color-textarea-bg-borderless-hover: var(--color-textarea-bg);
|
|
37
|
+
--color-textarea-bg-borderless-focus: var(--color-textarea-bg);
|
|
91
38
|
}
|
|
@@ -1,21 +1,18 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
1
|
+
/*
|
|
2
|
+
* Tooltip — runtime tokens come from libs/ui/src/tokens/figma/variables.css.
|
|
3
|
+
*
|
|
4
|
+
* Kept here (Figma doesn't export these exact names):
|
|
5
|
+
* - `--padding-tooltip-{sm,md,lg}` combined shorthands for the
|
|
6
|
+
* `p-tooltip-{size}` utility (Figma has split x/y axes).
|
|
7
|
+
* - `--tooltip-arrow-size` and `--tooltip-arrow-background` —
|
|
8
|
+
* Zag.js requires these exact CSS variable names.
|
|
9
|
+
*/
|
|
10
10
|
|
|
11
|
-
|
|
12
|
-
--
|
|
13
|
-
--
|
|
14
|
-
|
|
15
|
-
--radius-tooltip: var(--radius-md);
|
|
16
|
-
--shadow-tooltip: var(--shadow-md);
|
|
11
|
+
@theme static {
|
|
12
|
+
--padding-tooltip-sm: var(--padding-tooltip-y-sm) var(--padding-tooltip-x-sm);
|
|
13
|
+
--padding-tooltip-md: var(--padding-tooltip-y-md) var(--padding-tooltip-x-md);
|
|
14
|
+
--padding-tooltip-lg: var(--padding-tooltip-y-lg) var(--padding-tooltip-x-lg);
|
|
17
15
|
|
|
18
|
-
|
|
19
|
-
--tooltip-arrow-
|
|
20
|
-
--tooltip-arrow-background: var(--color-tooltip-bg);
|
|
16
|
+
--tooltip-arrow-size: var(--spacing-tooltip-arrow);
|
|
17
|
+
--tooltip-arrow-background: var(--color-tooltip-arrow);
|
|
21
18
|
}
|
|
@@ -16,30 +16,24 @@
|
|
|
16
16
|
--color-product-card-stock-fg-limited-stock: var(--color-warning);
|
|
17
17
|
--color-product-card-stock-fg-out-of-stock: var(--color-danger);
|
|
18
18
|
|
|
19
|
-
/* ===
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
--color-product-card-button-cart-
|
|
19
|
+
/* === Button slots ===
|
|
20
|
+
* Per @KaiUweCZE on #425: keep ProductCard button tokens linked to the
|
|
21
|
+
* Button atom's token layer so a brand-driven Button retheme propagates
|
|
22
|
+
* automatically and hover values match Figma's hand-picked colors
|
|
23
|
+
* instead of the old `oklch(... calc(l + var(--state-hover)) ...)`
|
|
24
|
+
* derivation. cart/detail/wishlist map to primary/secondary/tertiary.
|
|
25
|
+
*/
|
|
26
|
+
--color-product-card-button-cart-bg: var(--color-button-bg-primary-base);
|
|
27
|
+
--color-product-card-button-cart-bg-hover: var(--color-button-bg-primary-hover);
|
|
28
|
+
--color-product-card-button-cart-fg: var(--color-button-fg-primary);
|
|
27
29
|
|
|
28
|
-
|
|
29
|
-
--color-product-card-button-detail-bg: var(--color-button-secondary);
|
|
30
|
-
--color-product-card-button-detail-
|
|
31
|
-
from var(--color-product-card-button-detail-bg) calc(l + var(--state-hover))
|
|
32
|
-
c h
|
|
33
|
-
);
|
|
34
|
-
--color-product-card-button-detail-fg: var(--color-button-fg);
|
|
30
|
+
--color-product-card-button-detail-bg: var(--color-button-bg-secondary-base);
|
|
31
|
+
--color-product-card-button-detail-bg-hover: var(--color-button-bg-secondary-hover);
|
|
32
|
+
--color-product-card-button-detail-fg: var(--color-button-fg-secondary);
|
|
35
33
|
|
|
36
|
-
|
|
37
|
-
--color-product-card-button-wishlist-bg: var(--color-button-tertiary);
|
|
38
|
-
--color-product-card-button-wishlist-
|
|
39
|
-
from var(--color-product-card-button-wishlist-bg)
|
|
40
|
-
calc(l + var(--state-hover)) c h
|
|
41
|
-
);
|
|
42
|
-
--color-product-card-button-wishlist-fg: var(--color-button-fg);
|
|
34
|
+
--color-product-card-button-wishlist-bg: var(--color-button-bg-tertiary-base);
|
|
35
|
+
--color-product-card-button-wishlist-bg-hover: var(--color-button-bg-tertiary-hover);
|
|
36
|
+
--color-product-card-button-wishlist-fg: var(--color-button-fg-tertiary);
|
|
43
37
|
|
|
44
38
|
/* === SPACING === */
|
|
45
39
|
--spacing-product-card-padding: var(--spacing-150);
|