@relements/core 0.1.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/base.css +1 -0
- package/dist/behaviors/dialog.d.ts +39 -0
- package/dist/behaviors/dialog.js +1 -0
- package/dist/behaviors/dismissible.d.ts +37 -0
- package/dist/behaviors/dismissible.js +1 -0
- package/dist/behaviors/menu-button.d.ts +36 -0
- package/dist/behaviors/menu-button.js +1 -0
- package/dist/behaviors/popover.d.ts +28 -0
- package/dist/behaviors/popover.js +1 -0
- package/dist/behaviors/tabs.d.ts +37 -0
- package/dist/behaviors/tabs.js +1 -0
- package/dist/behaviors/toast.d.ts +42 -0
- package/dist/behaviors/toast.js +1 -0
- package/dist/chunk-GMICGIQW.js +149 -0
- package/dist/chunk-J4EGUBPP.js +68 -0
- package/dist/chunk-PIDPGDBZ.js +62 -0
- package/dist/chunk-PSODVT3V.js +67 -0
- package/dist/chunk-TC4TFP7Y.js +40 -0
- package/dist/chunk-ZHRJNWMH.js +174 -0
- package/dist/components/button.css +1 -0
- package/dist/components/dialog.css +1 -0
- package/dist/components/disclosure.css +1 -0
- package/dist/components/form.css +1 -0
- package/dist/components/link.css +1 -0
- package/dist/components/menu.css +1 -0
- package/dist/components/popover.css +1 -0
- package/dist/components/progress.css +1 -0
- package/dist/components/tabs.css +1 -0
- package/dist/components/toast.css +1 -0
- package/dist/elements/re-menu.d.ts +10 -0
- package/dist/elements/re-menu.js +36 -0
- package/dist/elements/re-popover.d.ts +12 -0
- package/dist/elements/re-popover.js +35 -0
- package/dist/elements/re-tabs.d.ts +20 -0
- package/dist/elements/re-tabs.js +60 -0
- package/dist/elements/re-toast.d.ts +15 -0
- package/dist/elements/re-toast.js +30 -0
- package/dist/index.css +1 -0
- package/dist/index.d.ts +6 -0
- package/dist/index.js +6 -0
- package/dist/reset.css +1 -0
- package/dist/themes/renascent.css +1 -0
- package/dist/tokens.css +1 -0
- package/package.json +84 -0
- package/src/base.css +129 -0
- package/src/behaviors/dialog.js +106 -0
- package/src/behaviors/dismissible.js +68 -0
- package/src/behaviors/menu-button.js +199 -0
- package/src/behaviors/popover.js +103 -0
- package/src/behaviors/tabs.js +171 -0
- package/src/behaviors/toast.js +97 -0
- package/src/components/button.css +141 -0
- package/src/components/dialog.css +106 -0
- package/src/components/disclosure.css +83 -0
- package/src/components/form.css +334 -0
- package/src/components/link.css +61 -0
- package/src/components/menu.css +78 -0
- package/src/components/popover.css +50 -0
- package/src/components/progress.css +112 -0
- package/src/components/tabs.css +86 -0
- package/src/components/toast.css +87 -0
- package/src/elements/re-menu.js +54 -0
- package/src/elements/re-popover.js +59 -0
- package/src/elements/re-tabs.js +92 -0
- package/src/elements/re-toast.js +46 -0
- package/src/index.css +30 -0
- package/src/index.js +13 -0
- package/src/reset.css +103 -0
- package/src/themes/renascent.css +198 -0
- package/src/tokens.css +196 -0
|
@@ -0,0 +1,198 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Renascent Elements brand theme.
|
|
3
|
+
*
|
|
4
|
+
* Sourced from renascentelements.hu — dark navy palette with electric blue,
|
|
5
|
+
* purple accent, and the signature "phoenix" orange.
|
|
6
|
+
*
|
|
7
|
+
* Usage (global dark):
|
|
8
|
+
* <link rel="stylesheet" href="/packages/core/src/index.css" />
|
|
9
|
+
* <link rel="stylesheet" href="/packages/core/src/themes/renascent.css" />
|
|
10
|
+
*
|
|
11
|
+
* Usage (scoped to a subtree):
|
|
12
|
+
* <div class="theme-renascent">…</div>
|
|
13
|
+
*
|
|
14
|
+
* Consumer overrides still win because this file is un-layered.
|
|
15
|
+
*/
|
|
16
|
+
|
|
17
|
+
/* ============================================================
|
|
18
|
+
Global dark theme (matches the renascentelements.hu design)
|
|
19
|
+
============================================================ */
|
|
20
|
+
:root {
|
|
21
|
+
color-scheme: dark;
|
|
22
|
+
|
|
23
|
+
/* ----- Backgrounds ---------------------------------------- */
|
|
24
|
+
--re-color-bg: #0f131a; /* hsl(220 27% 8%) — page background */
|
|
25
|
+
--re-color-bg-subtle: #171c26; /* hsl(220 25% 12%) — card / surface */
|
|
26
|
+
--re-color-bg-muted: #1f2430; /* hsl(220 20% 15%) — muted section */
|
|
27
|
+
--re-color-surface: #171c26;
|
|
28
|
+
|
|
29
|
+
/* ----- Text ----------------------------------------------- */
|
|
30
|
+
--re-color-text: #f8fafc; /* hsl(210 40% 98%) — primary text */
|
|
31
|
+
--re-color-text-muted: #97a3b4; /* hsl(215 16% 65%) — secondary text */
|
|
32
|
+
--re-color-text-subtle: #6b7a90; /* dimmer tertiary text */
|
|
33
|
+
|
|
34
|
+
/* ----- Border --------------------------------------------- */
|
|
35
|
+
--re-color-border: #29303d; /* hsl(220 20% 20%) */
|
|
36
|
+
--re-color-border-strong: #353d4d;
|
|
37
|
+
|
|
38
|
+
/* ----- Brand: electric blue (primary interactive) ---------
|
|
39
|
+
Their --primary is hsl(217 91% 60%) = #3c83f6.
|
|
40
|
+
Buttons use accent-600 as their base, so we anchor 600 = primary. */
|
|
41
|
+
--re-color-accent-50: #eff6ff;
|
|
42
|
+
--re-color-accent-100: #dbeafe;
|
|
43
|
+
--re-color-accent-200: #bdd6fe;
|
|
44
|
+
--re-color-accent-300: #93c3fd;
|
|
45
|
+
--re-color-accent-400: #60a5fa;
|
|
46
|
+
--re-color-accent-500: #60a5fa; /* tint — for backgrounds, indicators */
|
|
47
|
+
--re-color-accent-600: #3c83f6; /* hsl(217 91% 60%) — button base */
|
|
48
|
+
--re-color-accent-700: #2563eb; /* hover */
|
|
49
|
+
--re-color-accent-800: #1d4ed8; /* active / pressed */
|
|
50
|
+
--re-color-accent-900: #1e3a8a;
|
|
51
|
+
|
|
52
|
+
/* ----- Semantic role colors ------------------------------- */
|
|
53
|
+
--re-color-link: #3c83f6;
|
|
54
|
+
--re-color-link-hover: #60a5fa;
|
|
55
|
+
--re-color-link-visited: #a78bfa;
|
|
56
|
+
--re-color-focus-ring: #3c83f6;
|
|
57
|
+
--re-color-text-on-accent: #0f131a;
|
|
58
|
+
|
|
59
|
+
/* ----- Semantic feedback ---------------------------------- */
|
|
60
|
+
/* Success: teal (hsl(172 81% 55%) — their --success) */
|
|
61
|
+
--re-color-success-500: #2fe9d0;
|
|
62
|
+
--re-color-success-600: #0fd4bb;
|
|
63
|
+
--re-color-success-700: #0ab8a2;
|
|
64
|
+
|
|
65
|
+
/* Warning: amber (hsl(45 93% 65%) — their --warning) */
|
|
66
|
+
--re-color-warning-500: #f9cf53;
|
|
67
|
+
--re-color-warning-600: #f0b929;
|
|
68
|
+
--re-color-warning-700: #d4a020;
|
|
69
|
+
|
|
70
|
+
/* Danger: red (hsl(0 84% 60%) — their --destructive) */
|
|
71
|
+
--re-color-danger-500: #ef4444;
|
|
72
|
+
--re-color-danger-600: #dc2626;
|
|
73
|
+
--re-color-danger-700: #b91c1c;
|
|
74
|
+
|
|
75
|
+
/* ----- Focus ring on dark background ----------------------
|
|
76
|
+
Remove the offset gap: the "white gap" trick is for light
|
|
77
|
+
themes. On dark bg, offset + border = double blue line. */
|
|
78
|
+
--re-focus-ring-offset: 0px;
|
|
79
|
+
--re-shadow-focus: 0 0 0 2px var(--re-color-focus-ring);
|
|
80
|
+
|
|
81
|
+
/* ----- Selection ------------------------------------------ */
|
|
82
|
+
--re-color-selection-bg: rgba(60, 131, 246, 0.3);
|
|
83
|
+
--re-color-selection-text: #f8fafc;
|
|
84
|
+
|
|
85
|
+
/* ----- Text danger for validation messages ---------------- */
|
|
86
|
+
--re-color-text-danger: #f87171; /* lighter red for dark backgrounds */
|
|
87
|
+
|
|
88
|
+
/* ----- Border danger -------------------------------------- */
|
|
89
|
+
--re-color-border-danger: #ef4444;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
/* ============================================================
|
|
93
|
+
Brand extras: phoenix orange + purple accent
|
|
94
|
+
Use these for decorative highlights, badges, gradients.
|
|
95
|
+
============================================================ */
|
|
96
|
+
:root {
|
|
97
|
+
--re-color-phoenix: #f3753f; /* hsl(18 88% 60%) — brand orange */
|
|
98
|
+
--re-color-phoenix-light: #f9a07a;
|
|
99
|
+
--re-color-phoenix-dark: #d45a26;
|
|
100
|
+
|
|
101
|
+
--re-color-purple: #a855f7; /* hsl(271 91% 65%) — their --accent */
|
|
102
|
+
--re-color-purple-light: #c084fc;
|
|
103
|
+
--re-color-purple-dark: #7c3aed;
|
|
104
|
+
|
|
105
|
+
/* Gradients as custom properties (for use in CSS backgrounds) */
|
|
106
|
+
--re-gradient-brand: linear-gradient(135deg, #3c83f6, #a855f7);
|
|
107
|
+
--re-gradient-phoenix: linear-gradient(135deg, #f3753f, #f9cf53);
|
|
108
|
+
--re-gradient-hero: linear-gradient(135deg, #3c83f6 0%, #a855f7 50%, #f3753f 100%);
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
/* ============================================================
|
|
112
|
+
Scoped class — apply on any container instead of :root
|
|
113
|
+
============================================================ */
|
|
114
|
+
.theme-renascent {
|
|
115
|
+
color-scheme: dark;
|
|
116
|
+
|
|
117
|
+
--re-color-bg: #0f131a;
|
|
118
|
+
--re-color-bg-subtle: #171c26;
|
|
119
|
+
--re-color-bg-muted: #1f2430;
|
|
120
|
+
--re-color-surface: #171c26;
|
|
121
|
+
--re-color-text: #f8fafc;
|
|
122
|
+
--re-color-text-muted: #97a3b4;
|
|
123
|
+
--re-color-text-subtle: #6b7a90;
|
|
124
|
+
--re-color-border: #29303d;
|
|
125
|
+
--re-color-border-strong: #353d4d;
|
|
126
|
+
--re-color-accent-500: #3c83f6;
|
|
127
|
+
--re-color-accent-600: #2563eb;
|
|
128
|
+
--re-color-accent-700: #1d4ed8;
|
|
129
|
+
--re-color-link: #3c83f6;
|
|
130
|
+
--re-color-link-hover: #60a5fa;
|
|
131
|
+
--re-color-focus-ring: #3c83f6;
|
|
132
|
+
--re-color-text-on-accent: #0f131a;
|
|
133
|
+
--re-color-text-danger: #f87171;
|
|
134
|
+
--re-color-border-danger: #ef4444;
|
|
135
|
+
--re-color-success-500: #2fe9d0;
|
|
136
|
+
--re-color-success-600: #0fd4bb;
|
|
137
|
+
--re-color-success-700: #0ab8a2;
|
|
138
|
+
--re-color-warning-500: #f9cf53;
|
|
139
|
+
--re-color-warning-600: #f0b929;
|
|
140
|
+
--re-color-warning-700: #d4a020;
|
|
141
|
+
--re-color-danger-500: #ef4444;
|
|
142
|
+
--re-color-danger-600: #dc2626;
|
|
143
|
+
--re-color-danger-700: #b91c1c;
|
|
144
|
+
--re-focus-ring-offset: 0px;
|
|
145
|
+
--re-shadow-focus: 0 0 0 2px var(--re-color-focus-ring);
|
|
146
|
+
--re-color-selection-bg: rgba(60, 131, 246, 0.3);
|
|
147
|
+
--re-color-selection-text: #f8fafc;
|
|
148
|
+
|
|
149
|
+
background-color: var(--re-color-bg);
|
|
150
|
+
color: var(--re-color-text);
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
/* ============================================================
|
|
154
|
+
Gradient button variants
|
|
155
|
+
Use data-variant="phoenix" or data-variant="brand" on .re-button.
|
|
156
|
+
Full hover / active / disabled / focus states included.
|
|
157
|
+
============================================================ */
|
|
158
|
+
.re-button[data-variant="phoenix"] {
|
|
159
|
+
background: var(--re-gradient-phoenix);
|
|
160
|
+
color: #fff;
|
|
161
|
+
border-color: transparent;
|
|
162
|
+
}
|
|
163
|
+
.re-button[data-variant="phoenix"]:hover {
|
|
164
|
+
filter: brightness(1.12);
|
|
165
|
+
background: var(--re-gradient-phoenix);
|
|
166
|
+
}
|
|
167
|
+
.re-button[data-variant="phoenix"]:active {
|
|
168
|
+
filter: brightness(0.9);
|
|
169
|
+
}
|
|
170
|
+
.re-button[data-variant="phoenix"]:focus-visible {
|
|
171
|
+
border-color: transparent;
|
|
172
|
+
}
|
|
173
|
+
.re-button[data-variant="phoenix"]:disabled,
|
|
174
|
+
.re-button[data-variant="phoenix"][aria-disabled="true"] {
|
|
175
|
+
filter: none;
|
|
176
|
+
opacity: 0.55;
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
.re-button[data-variant="brand"] {
|
|
180
|
+
background: var(--re-gradient-brand);
|
|
181
|
+
color: #fff;
|
|
182
|
+
border-color: transparent;
|
|
183
|
+
}
|
|
184
|
+
.re-button[data-variant="brand"]:hover {
|
|
185
|
+
filter: brightness(1.12);
|
|
186
|
+
background: var(--re-gradient-brand);
|
|
187
|
+
}
|
|
188
|
+
.re-button[data-variant="brand"]:active {
|
|
189
|
+
filter: brightness(0.9);
|
|
190
|
+
}
|
|
191
|
+
.re-button[data-variant="brand"]:focus-visible {
|
|
192
|
+
border-color: transparent;
|
|
193
|
+
}
|
|
194
|
+
.re-button[data-variant="brand"]:disabled,
|
|
195
|
+
.re-button[data-variant="brand"][aria-disabled="true"] {
|
|
196
|
+
filter: none;
|
|
197
|
+
opacity: 0.55;
|
|
198
|
+
}
|
package/src/tokens.css
ADDED
|
@@ -0,0 +1,196 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Relements design tokens.
|
|
3
|
+
*
|
|
4
|
+
* All tokens are exposed as CSS custom properties under the `--re-` prefix.
|
|
5
|
+
* Consumers override at `:root` (global) or any subtree (scoped theme).
|
|
6
|
+
*
|
|
7
|
+
* Naming: --re-<category>-<name>-<modifier>
|
|
8
|
+
* color: --re-color-{role}-{step} e.g. --re-color-text, --re-color-bg-subtle
|
|
9
|
+
* space: --re-space-{step} e.g. --re-space-2 (8 = 0.5rem)
|
|
10
|
+
* font: --re-font-{name} e.g. --re-font-sans
|
|
11
|
+
* size: --re-size-{name} e.g. --re-size-text-md
|
|
12
|
+
* radius: --re-radius-{name} e.g. --re-radius-md
|
|
13
|
+
* border: --re-border-{name} e.g. --re-border-default
|
|
14
|
+
* shadow: --re-shadow-{name} e.g. --re-shadow-focus
|
|
15
|
+
* duration: --re-duration-{name} e.g. --re-duration-fast
|
|
16
|
+
* z: --re-z-{name} e.g. --re-z-overlay
|
|
17
|
+
*/
|
|
18
|
+
|
|
19
|
+
@layer re.tokens {
|
|
20
|
+
:root {
|
|
21
|
+
/* ----- Color: neutral scale (light) ---------------------------------- */
|
|
22
|
+
--re-color-neutral-0: #ffffff;
|
|
23
|
+
--re-color-neutral-50: #f8fafc;
|
|
24
|
+
--re-color-neutral-100: #f1f5f9;
|
|
25
|
+
--re-color-neutral-200: #e2e8f0;
|
|
26
|
+
--re-color-neutral-300: #cbd5e1;
|
|
27
|
+
--re-color-neutral-400: #94a3b8;
|
|
28
|
+
--re-color-neutral-500: #64748b;
|
|
29
|
+
--re-color-neutral-600: #475569;
|
|
30
|
+
--re-color-neutral-700: #334155;
|
|
31
|
+
--re-color-neutral-800: #1e293b;
|
|
32
|
+
--re-color-neutral-900: #0f172a;
|
|
33
|
+
--re-color-neutral-950: #020617;
|
|
34
|
+
|
|
35
|
+
/* ----- Color: accent (brand) ---------------------------------------- */
|
|
36
|
+
--re-color-accent-50: #eff6ff;
|
|
37
|
+
--re-color-accent-100: #dbeafe;
|
|
38
|
+
--re-color-accent-200: #bfdbfe;
|
|
39
|
+
--re-color-accent-300: #93c5fd;
|
|
40
|
+
--re-color-accent-400: #60a5fa;
|
|
41
|
+
--re-color-accent-500: #3b82f6;
|
|
42
|
+
--re-color-accent-600: #2563eb;
|
|
43
|
+
--re-color-accent-700: #1d4ed8;
|
|
44
|
+
--re-color-accent-800: #1e40af;
|
|
45
|
+
--re-color-accent-900: #1e3a8a;
|
|
46
|
+
|
|
47
|
+
/* ----- Color: semantic --------------------------------------------- */
|
|
48
|
+
--re-color-danger-500: #ef4444;
|
|
49
|
+
--re-color-danger-600: #dc2626;
|
|
50
|
+
--re-color-danger-700: #b91c1c;
|
|
51
|
+
--re-color-success-500: #10b981;
|
|
52
|
+
--re-color-success-600: #059669;
|
|
53
|
+
--re-color-success-700: #047857;
|
|
54
|
+
--re-color-warning-500: #f59e0b;
|
|
55
|
+
--re-color-warning-600: #d97706;
|
|
56
|
+
--re-color-warning-700: #b45309;
|
|
57
|
+
|
|
58
|
+
/* ----- Color: roles (resolve to neutral/accent above) -------------- */
|
|
59
|
+
--re-color-bg: var(--re-color-neutral-0);
|
|
60
|
+
--re-color-bg-subtle: var(--re-color-neutral-50);
|
|
61
|
+
--re-color-bg-muted: var(--re-color-neutral-100);
|
|
62
|
+
--re-color-surface: var(--re-color-neutral-0);
|
|
63
|
+
--re-color-text: var(--re-color-neutral-900);
|
|
64
|
+
--re-color-text-muted: var(--re-color-neutral-600);
|
|
65
|
+
--re-color-text-subtle: var(--re-color-neutral-500);
|
|
66
|
+
--re-color-text-on-accent: var(--re-color-neutral-0);
|
|
67
|
+
--re-color-text-danger: var(--re-color-danger-700);
|
|
68
|
+
--re-color-border: var(--re-color-neutral-200);
|
|
69
|
+
--re-color-border-strong: var(--re-color-neutral-300);
|
|
70
|
+
--re-color-border-danger: var(--re-color-danger-500);
|
|
71
|
+
--re-color-link: var(--re-color-accent-700);
|
|
72
|
+
--re-color-link-hover: var(--re-color-accent-800);
|
|
73
|
+
--re-color-link-visited: var(--re-color-accent-800);
|
|
74
|
+
--re-color-focus-ring: var(--re-color-accent-500);
|
|
75
|
+
--re-color-selection-bg: var(--re-color-accent-100);
|
|
76
|
+
--re-color-selection-text: var(--re-color-neutral-900);
|
|
77
|
+
|
|
78
|
+
/* ----- Typography -------------------------------------------------- */
|
|
79
|
+
--re-font-sans:
|
|
80
|
+
system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif;
|
|
81
|
+
--re-font-mono:
|
|
82
|
+
ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, "Liberation Mono", monospace;
|
|
83
|
+
|
|
84
|
+
--re-size-text-xs: 0.75rem; /* 12 */
|
|
85
|
+
--re-size-text-sm: 0.875rem; /* 14 */
|
|
86
|
+
--re-size-text-md: 1rem; /* 16 */
|
|
87
|
+
--re-size-text-lg: 1.125rem; /* 18 */
|
|
88
|
+
--re-size-text-xl: 1.25rem; /* 20 */
|
|
89
|
+
--re-size-text-2xl: 1.5rem; /* 24 */
|
|
90
|
+
--re-size-text-3xl: 1.875rem; /* 30 */
|
|
91
|
+
--re-size-text-4xl: 2.25rem; /* 36 */
|
|
92
|
+
|
|
93
|
+
--re-line-height-tight: 1.2;
|
|
94
|
+
--re-line-height-snug: 1.35;
|
|
95
|
+
--re-line-height-normal: 1.5;
|
|
96
|
+
--re-line-height-relaxed: 1.65;
|
|
97
|
+
|
|
98
|
+
--re-font-weight-regular: 400;
|
|
99
|
+
--re-font-weight-medium: 500;
|
|
100
|
+
--re-font-weight-semibold: 600;
|
|
101
|
+
--re-font-weight-bold: 700;
|
|
102
|
+
|
|
103
|
+
/* ----- Spacing (4px scale) ----------------------------------------- */
|
|
104
|
+
--re-space-0: 0;
|
|
105
|
+
--re-space-1: 0.25rem; /* 4 */
|
|
106
|
+
--re-space-2: 0.5rem; /* 8 */
|
|
107
|
+
--re-space-3: 0.75rem; /* 12 */
|
|
108
|
+
--re-space-4: 1rem; /* 16 */
|
|
109
|
+
--re-space-5: 1.25rem; /* 20 */
|
|
110
|
+
--re-space-6: 1.5rem; /* 24 */
|
|
111
|
+
--re-space-8: 2rem; /* 32 */
|
|
112
|
+
--re-space-10: 2.5rem; /* 40 */
|
|
113
|
+
--re-space-12: 3rem; /* 48 */
|
|
114
|
+
--re-space-16: 4rem; /* 64 */
|
|
115
|
+
|
|
116
|
+
/* ----- Radii ------------------------------------------------------- */
|
|
117
|
+
--re-radius-none: 0;
|
|
118
|
+
--re-radius-sm: 0.25rem;
|
|
119
|
+
--re-radius-md: 0.375rem;
|
|
120
|
+
--re-radius-lg: 0.5rem;
|
|
121
|
+
--re-radius-xl: 0.75rem;
|
|
122
|
+
--re-radius-pill: 9999px;
|
|
123
|
+
|
|
124
|
+
/* ----- Borders ----------------------------------------------------- */
|
|
125
|
+
--re-border-width: 1px;
|
|
126
|
+
--re-border-width-strong: 2px;
|
|
127
|
+
--re-border-default: var(--re-border-width) solid var(--re-color-border);
|
|
128
|
+
--re-border-strong: var(--re-border-width-strong) solid var(--re-color-border-strong);
|
|
129
|
+
--re-border-danger: var(--re-border-width) solid var(--re-color-border-danger);
|
|
130
|
+
|
|
131
|
+
/* ----- Focus ring -------------------------------------------------- */
|
|
132
|
+
--re-focus-ring-width: 2px;
|
|
133
|
+
--re-focus-ring-offset: 2px;
|
|
134
|
+
--re-focus-ring-color: var(--re-color-focus-ring);
|
|
135
|
+
--re-shadow-focus:
|
|
136
|
+
0 0 0 var(--re-focus-ring-offset) var(--re-color-bg),
|
|
137
|
+
0 0 0 calc(var(--re-focus-ring-offset) + var(--re-focus-ring-width))
|
|
138
|
+
var(--re-color-focus-ring);
|
|
139
|
+
|
|
140
|
+
/* ----- Elevation --------------------------------------------------- */
|
|
141
|
+
--re-shadow-sm: 0 1px 2px rgb(0 0 0 / 0.06);
|
|
142
|
+
--re-shadow-md: 0 4px 12px rgb(0 0 0 / 0.08);
|
|
143
|
+
--re-shadow-lg: 0 12px 32px rgb(0 0 0 / 0.12);
|
|
144
|
+
|
|
145
|
+
/* ----- Motion ------------------------------------------------------ */
|
|
146
|
+
--re-duration-instant: 0ms;
|
|
147
|
+
--re-duration-fast: 120ms;
|
|
148
|
+
--re-duration-normal: 200ms;
|
|
149
|
+
--re-duration-slow: 320ms;
|
|
150
|
+
--re-easing-standard: cubic-bezier(0.2, 0, 0, 1);
|
|
151
|
+
--re-easing-emphasized: cubic-bezier(0.3, 0, 0, 1);
|
|
152
|
+
|
|
153
|
+
/* ----- z-index ----------------------------------------------------- */
|
|
154
|
+
--re-z-base: 0;
|
|
155
|
+
--re-z-overlay: 100;
|
|
156
|
+
--re-z-popover: 200;
|
|
157
|
+
--re-z-dialog: 300;
|
|
158
|
+
--re-z-toast: 400;
|
|
159
|
+
|
|
160
|
+
/* ----- Layout sizing ---------------------------------------------- */
|
|
161
|
+
--re-control-height-sm: 1.75rem; /* 28 */
|
|
162
|
+
--re-control-height-md: 2.25rem; /* 36 */
|
|
163
|
+
--re-control-height-lg: 2.75rem; /* 44 — touch target */
|
|
164
|
+
--re-control-padding-x: var(--re-space-3);
|
|
165
|
+
--re-control-padding-y: var(--re-space-2);
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
/* Dark-scheme overrides: opt-in by setting `color-scheme: dark` on a
|
|
169
|
+
subtree, or trust the user-agent via prefers-color-scheme below. */
|
|
170
|
+
@media (prefers-color-scheme: dark) {
|
|
171
|
+
:root {
|
|
172
|
+
--re-color-bg: var(--re-color-neutral-950);
|
|
173
|
+
--re-color-bg-subtle: var(--re-color-neutral-900);
|
|
174
|
+
--re-color-bg-muted: var(--re-color-neutral-800);
|
|
175
|
+
--re-color-surface: var(--re-color-neutral-900);
|
|
176
|
+
--re-color-text: var(--re-color-neutral-50);
|
|
177
|
+
--re-color-text-muted: var(--re-color-neutral-300);
|
|
178
|
+
--re-color-text-subtle: var(--re-color-neutral-400);
|
|
179
|
+
--re-color-text-on-accent: var(--re-color-neutral-0);
|
|
180
|
+
--re-color-text-danger: var(--re-color-danger-500);
|
|
181
|
+
--re-color-border: var(--re-color-neutral-700);
|
|
182
|
+
--re-color-border-strong: var(--re-color-neutral-600);
|
|
183
|
+
--re-color-link: var(--re-color-accent-300);
|
|
184
|
+
--re-color-link-hover: var(--re-color-accent-200);
|
|
185
|
+
--re-color-link-visited: var(--re-color-accent-200);
|
|
186
|
+
--re-color-focus-ring: var(--re-color-accent-400);
|
|
187
|
+
--re-color-selection-bg: var(--re-color-accent-900);
|
|
188
|
+
--re-color-selection-text: var(--re-color-neutral-50);
|
|
189
|
+
|
|
190
|
+
/* On dark backgrounds the offset gap is invisible, so the border and
|
|
191
|
+
the outer ring appear as two separate blue lines. Remove the gap. */
|
|
192
|
+
--re-focus-ring-offset: 0px;
|
|
193
|
+
--re-shadow-focus: 0 0 0 2px var(--re-color-focus-ring);
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
}
|