@juxtui/ui 0.8.0 → 0.8.2

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/tailwind.css CHANGED
@@ -1,74 +1,74 @@
1
- /*
2
- * Juxt × Tailwind CSS v4
3
- *
4
- * Maps Juxt tokens onto Tailwind's theme so utilities speak the same language
5
- * as the components: `bg-surface`, `text-fg-muted`, `border-border`,
6
- * `rounded-md`, `duration-normal`, `ease-standard`.
7
- *
8
- * @import 'tailwindcss';
9
- * @import '@juxtui/ui/tailwind.css';
10
- */
11
-
12
- @custom-variant dark (&:where(.dark, .dark *, [data-theme="dark"], [data-theme="dark"] *));
13
-
14
- @theme inline {
15
- --color-bg: var(--juxt-bg);
16
- --color-surface: var(--juxt-surface);
17
- --color-surface-raised: var(--juxt-surface-raised);
18
- --color-surface-sunken: var(--juxt-surface-sunken);
19
- --color-surface-hover: var(--juxt-surface-hover);
20
- --color-surface-active: var(--juxt-surface-active);
21
- --color-border: var(--juxt-border);
22
- --color-border-subtle: var(--juxt-border-subtle);
23
- --color-border-strong: var(--juxt-border-strong);
24
- --color-fg: var(--juxt-fg);
25
- --color-fg-secondary: var(--juxt-fg-secondary);
26
- --color-fg-muted: var(--juxt-fg-muted);
27
- --color-fg-disabled: var(--juxt-fg-disabled);
28
- --color-ink: var(--juxt-ink);
29
- --color-ink-fg: var(--juxt-ink-fg);
30
- --color-accent: var(--juxt-accent);
31
- --color-accent-hover: var(--juxt-accent-hover);
32
- --color-accent-text: var(--juxt-accent-text);
33
- --color-accent-soft: var(--juxt-accent-soft);
34
- --color-danger: var(--juxt-danger);
35
- --color-danger-text: var(--juxt-danger-text);
36
- --color-danger-soft: var(--juxt-danger-soft);
37
- --color-warning: var(--juxt-warning);
38
- --color-warning-text: var(--juxt-warning-text);
39
- --color-info: var(--juxt-info);
40
- --color-info-text: var(--juxt-info-text);
41
-
42
- --font-sans: var(--juxt-font-sans);
43
- --font-mono: var(--juxt-font-mono);
44
-
45
- --radius-xs: var(--juxt-radius-xs);
46
- --radius-sm: var(--juxt-radius-sm);
47
- --radius-md: var(--juxt-radius-md);
48
- --radius-lg: var(--juxt-radius-lg);
49
-
50
- --shadow-xs: var(--juxt-shadow-xs);
51
- --shadow-sm: var(--juxt-shadow-sm);
52
- --shadow-md: var(--juxt-shadow-md);
53
- --shadow-lg: var(--juxt-shadow-lg);
54
-
55
- --ease-standard: var(--juxt-ease-standard);
56
- --ease-out: var(--juxt-ease-out);
57
- --ease-in: var(--juxt-ease-in);
58
- }
59
-
60
- @utility duration-instant {
61
- transition-duration: var(--juxt-duration-instant);
62
- }
63
-
64
- @utility duration-fast {
65
- transition-duration: var(--juxt-duration-fast);
66
- }
67
-
68
- @utility duration-normal {
69
- transition-duration: var(--juxt-duration-normal);
70
- }
71
-
72
- @utility duration-slow {
73
- transition-duration: var(--juxt-duration-slow);
74
- }
1
+ /*
2
+ * Juxt × Tailwind CSS v4
3
+ *
4
+ * Maps Juxt tokens onto Tailwind's theme so utilities speak the same language
5
+ * as the components: `bg-surface`, `text-fg-muted`, `border-border`,
6
+ * `rounded-md`, `duration-normal`, `ease-standard`.
7
+ *
8
+ * @import 'tailwindcss';
9
+ * @import '@juxtui/ui/tailwind.css';
10
+ */
11
+
12
+ @custom-variant dark (&:where(.dark, .dark *, [data-theme="dark"], [data-theme="dark"] *));
13
+
14
+ @theme inline {
15
+ --color-bg: var(--juxt-bg);
16
+ --color-surface: var(--juxt-surface);
17
+ --color-surface-raised: var(--juxt-surface-raised);
18
+ --color-surface-sunken: var(--juxt-surface-sunken);
19
+ --color-surface-hover: var(--juxt-surface-hover);
20
+ --color-surface-active: var(--juxt-surface-active);
21
+ --color-border: var(--juxt-border);
22
+ --color-border-subtle: var(--juxt-border-subtle);
23
+ --color-border-strong: var(--juxt-border-strong);
24
+ --color-fg: var(--juxt-fg);
25
+ --color-fg-secondary: var(--juxt-fg-secondary);
26
+ --color-fg-muted: var(--juxt-fg-muted);
27
+ --color-fg-disabled: var(--juxt-fg-disabled);
28
+ --color-ink: var(--juxt-ink);
29
+ --color-ink-fg: var(--juxt-ink-fg);
30
+ --color-accent: var(--juxt-accent);
31
+ --color-accent-hover: var(--juxt-accent-hover);
32
+ --color-accent-text: var(--juxt-accent-text);
33
+ --color-accent-soft: var(--juxt-accent-soft);
34
+ --color-danger: var(--juxt-danger);
35
+ --color-danger-text: var(--juxt-danger-text);
36
+ --color-danger-soft: var(--juxt-danger-soft);
37
+ --color-warning: var(--juxt-warning);
38
+ --color-warning-text: var(--juxt-warning-text);
39
+ --color-info: var(--juxt-info);
40
+ --color-info-text: var(--juxt-info-text);
41
+
42
+ --font-sans: var(--juxt-font-sans);
43
+ --font-mono: var(--juxt-font-mono);
44
+
45
+ --radius-xs: var(--juxt-radius-xs);
46
+ --radius-sm: var(--juxt-radius-sm);
47
+ --radius-md: var(--juxt-radius-md);
48
+ --radius-lg: var(--juxt-radius-lg);
49
+
50
+ --shadow-xs: var(--juxt-shadow-xs);
51
+ --shadow-sm: var(--juxt-shadow-sm);
52
+ --shadow-md: var(--juxt-shadow-md);
53
+ --shadow-lg: var(--juxt-shadow-lg);
54
+
55
+ --ease-standard: var(--juxt-ease-standard);
56
+ --ease-out: var(--juxt-ease-out);
57
+ --ease-in: var(--juxt-ease-in);
58
+ }
59
+
60
+ @utility duration-instant {
61
+ transition-duration: var(--juxt-duration-instant);
62
+ }
63
+
64
+ @utility duration-fast {
65
+ transition-duration: var(--juxt-duration-fast);
66
+ }
67
+
68
+ @utility duration-normal {
69
+ transition-duration: var(--juxt-duration-normal);
70
+ }
71
+
72
+ @utility duration-slow {
73
+ transition-duration: var(--juxt-duration-slow);
74
+ }
package/dist/tokens.css CHANGED
@@ -1,237 +1,237 @@
1
- /*
2
- * Juxt design tokens
3
- *
4
- * One source of truth for colour, space, radius, type, elevation, motion and
5
- * layering. Components never hardcode these values | they read them here.
6
- *
7
- * Light is the default. Dark applies under `.dark` or `[data-theme="dark"]`
8
- * on any ancestor (usually <html>).
9
- */
10
-
11
- :root,
12
- .light,
13
- [data-theme='light'] {
14
- color-scheme: light;
15
-
16
- /* Surfaces */
17
- --juxt-bg: #fcfcfc;
18
- --juxt-surface: #ffffff;
19
- --juxt-surface-raised: #ffffff;
20
- --juxt-surface-sunken: #f4f4f5;
21
- --juxt-surface-hover: #f1f1f2;
22
- --juxt-surface-active: #e9e9eb;
23
- --juxt-overlay: rgb(9 9 11 / 0.32);
24
-
25
- /* Lines */
26
- --juxt-border: #e4e4e7;
27
- --juxt-border-subtle: #ededef;
28
- --juxt-border-strong: #d1d1d6;
29
-
30
- /* Text */
31
- --juxt-fg: #09090b;
32
- --juxt-fg-secondary: #52525b;
33
- --juxt-fg-muted: #71717a;
34
- --juxt-fg-disabled: #a1a1aa;
35
-
36
- /* Ink | the inverted neutral used by primary actions */
37
- --juxt-ink: #09090b;
38
- --juxt-ink-hover: #27272a;
39
- --juxt-ink-fg: #fafafa;
40
-
41
- /* Accent */
42
- --juxt-accent: #079d6b;
43
- --juxt-accent-hover: #068a5e;
44
- --juxt-accent-fg: #ffffff;
45
- --juxt-accent-strong: #057a53;
46
- --juxt-accent-text: #057a53;
47
- --juxt-accent-soft: rgb(7 157 107 / 0.1);
48
- --juxt-accent-border: rgb(7 157 107 / 0.28);
49
- --juxt-ring: rgb(7 157 107 / 0.55);
50
- --juxt-ring-soft: rgb(7 157 107 / 0.16);
51
-
52
- /* Feedback */
53
- --juxt-danger: #dc2626;
54
- --juxt-danger-hover: #c21f1f;
55
- --juxt-danger-fg: #ffffff;
56
- --juxt-danger-text: #c81e1e;
57
- --juxt-danger-soft: rgb(220 38 38 / 0.08);
58
- --juxt-danger-border: rgb(220 38 38 / 0.28);
59
- --juxt-danger-ring: rgb(220 38 38 / 0.16);
60
-
61
- --juxt-warning: #d97706;
62
- --juxt-warning-text: #a35a04;
63
- --juxt-warning-soft: rgb(217 119 6 / 0.1);
64
- --juxt-warning-border: rgb(217 119 6 / 0.28);
65
-
66
- --juxt-info: #2563eb;
67
- --juxt-info-text: #1d4fc4;
68
- --juxt-info-soft: rgb(37 99 235 / 0.08);
69
- --juxt-info-border: rgb(37 99 235 / 0.24);
70
-
71
- --juxt-success: var(--juxt-accent);
72
- --juxt-success-text: var(--juxt-accent-text);
73
- --juxt-success-soft: var(--juxt-accent-soft);
74
- --juxt-success-border: var(--juxt-accent-border);
75
-
76
- /* Elevation | borders do most of the work, shadows only lift */
77
- --juxt-shadow-xs: 0 1px 1px rgb(9 9 11 / 0.04);
78
- --juxt-shadow-sm: 0 1px 2px rgb(9 9 11 / 0.05), 0 1px 1px rgb(9 9 11 / 0.03);
79
- --juxt-shadow-md: 0 4px 12px -2px rgb(9 9 11 / 0.08), 0 2px 4px -2px rgb(9 9 11 / 0.05);
80
- --juxt-shadow-lg: 0 16px 40px -8px rgb(9 9 11 / 0.16), 0 4px 12px -4px rgb(9 9 11 / 0.08);
81
- --juxt-control-highlight: inset 0 1px 0 rgb(255 255 255 / 0.12);
82
-
83
- --juxt-tooltip-bg: #18181b;
84
- --juxt-tooltip-fg: #fafafa;
85
- --juxt-tooltip-border: transparent;
86
- }
87
-
88
- .dark,
89
- [data-theme='dark'] {
90
- color-scheme: dark;
91
-
92
- --juxt-bg: #09090b;
93
- --juxt-surface: #111113;
94
- --juxt-surface-raised: #18181b;
95
- --juxt-surface-sunken: #0c0c0e;
96
- --juxt-surface-hover: #1e1e22;
97
- --juxt-surface-active: #26262b;
98
- --juxt-overlay: rgb(0 0 0 / 0.6);
99
-
100
- --juxt-border: #27272a;
101
- --juxt-border-subtle: #1f1f23;
102
- --juxt-border-strong: #3a3a40;
103
-
104
- --juxt-fg: #fafafa;
105
- --juxt-fg-secondary: #a1a1aa;
106
- --juxt-fg-muted: #71717a;
107
- --juxt-fg-disabled: #52525b;
108
-
109
- --juxt-ink: #fafafa;
110
- --juxt-ink-hover: #e4e4e7;
111
- --juxt-ink-fg: #09090b;
112
-
113
- --juxt-accent: #079d6b;
114
- --juxt-accent-hover: #08b079;
115
- --juxt-accent-fg: #ffffff;
116
- --juxt-accent-strong: #067a53;
117
- --juxt-accent-text: #1fc48a;
118
- --juxt-accent-soft: rgb(7 157 107 / 0.14);
119
- --juxt-accent-border: rgb(31 196 138 / 0.28);
120
- --juxt-ring: rgb(31 196 138 / 0.6);
121
- --juxt-ring-soft: rgb(7 157 107 / 0.24);
122
-
123
- --juxt-danger: #d63a3f;
124
- --juxt-danger-hover: #c53237;
125
- --juxt-danger-fg: #ffffff;
126
- --juxt-danger-text: #ff7a7e;
127
- --juxt-danger-soft: rgb(229 72 77 / 0.14);
128
- --juxt-danger-border: rgb(255 122 126 / 0.28);
129
- --juxt-danger-ring: rgb(229 72 77 / 0.24);
130
-
131
- --juxt-warning: #f5a524;
132
- --juxt-warning-text: #f7b955;
133
- --juxt-warning-soft: rgb(245 165 36 / 0.12);
134
- --juxt-warning-border: rgb(247 185 85 / 0.26);
135
-
136
- --juxt-info: #4f8cff;
137
- --juxt-info-text: #85adff;
138
- --juxt-info-soft: rgb(79 140 255 / 0.13);
139
- --juxt-info-border: rgb(133 173 255 / 0.26);
140
-
141
- --juxt-shadow-xs: 0 1px 1px rgb(0 0 0 / 0.3);
142
- --juxt-shadow-sm: 0 1px 2px rgb(0 0 0 / 0.4);
143
- --juxt-shadow-md: 0 8px 20px -4px rgb(0 0 0 / 0.5), 0 2px 6px -2px rgb(0 0 0 / 0.4);
144
- --juxt-shadow-lg: 0 24px 56px -12px rgb(0 0 0 / 0.7), 0 6px 16px -6px rgb(0 0 0 / 0.5);
145
- --juxt-control-highlight: inset 0 1px 0 rgb(255 255 255 / 0.04);
146
-
147
- --juxt-tooltip-bg: #26262b;
148
- --juxt-tooltip-fg: #fafafa;
149
- --juxt-tooltip-border: #3a3a40;
150
- }
151
-
152
- :root {
153
- /* Type */
154
- --juxt-font-sans: 'Inter Variable', 'Inter', ui-sans-serif, system-ui, -apple-system, 'Segoe UI', sans-serif;
155
- --juxt-font-mono: 'JetBrains Mono Variable', 'JetBrains Mono', ui-monospace, 'SF Mono', Menlo, Consolas, monospace;
156
-
157
- --juxt-text-2xs: 0.6875rem; /* 11 */
158
- --juxt-text-xs: 0.75rem; /* 12 */
159
- --juxt-text-sm: 0.8125rem; /* 13 */
160
- --juxt-text-md: 0.875rem; /* 14 */
161
- --juxt-text-lg: 1rem; /* 16 */
162
- --juxt-text-xl: 1.125rem; /* 18 */
163
- --juxt-text-2xl: 1.375rem; /* 22 */
164
- --juxt-text-3xl: 1.75rem; /* 28 */
165
- --juxt-text-4xl: 2.5rem; /* 40 */
166
-
167
- --juxt-leading-tight: 1.2;
168
- --juxt-leading-snug: 1.4;
169
- --juxt-leading-normal: 1.55;
170
-
171
- --juxt-weight-regular: 400;
172
- --juxt-weight-medium: 500;
173
- --juxt-weight-semibold: 600;
174
-
175
- --juxt-tracking-tight: -0.011em;
176
- --juxt-tracking-tighter: -0.022em;
177
-
178
- /* Space | a 4px grid */
179
- --juxt-space-0-5: 0.125rem; /* 2 */
180
- --juxt-space-1: 0.25rem; /* 4 */
181
- --juxt-space-1-5: 0.375rem; /* 6 */
182
- --juxt-space-2: 0.5rem; /* 8 */
183
- --juxt-space-2-5: 0.625rem; /* 10 */
184
- --juxt-space-3: 0.75rem; /* 12 */
185
- --juxt-space-4: 1rem; /* 16 */
186
- --juxt-space-5: 1.25rem; /* 20 */
187
- --juxt-space-6: 1.5rem; /* 24 */
188
- --juxt-space-8: 2rem; /* 32 */
189
- --juxt-space-10: 2.5rem; /* 40 */
190
- --juxt-space-12: 3rem; /* 48 */
191
-
192
- /* Control heights */
193
- --juxt-control-xs: 1.5rem; /* 24 */
194
- --juxt-control-sm: 1.75rem; /* 28 */
195
- --juxt-control-md: 2.125rem; /* 34 */
196
- --juxt-control-lg: 2.5rem; /* 40 */
197
-
198
- /* Radius */
199
- --juxt-radius-xs: 0.25rem; /* 4 */
200
- --juxt-radius-sm: 0.375rem; /* 6 */
201
- --juxt-radius-md: 0.5rem; /* 8 */
202
- --juxt-radius-lg: 0.75rem; /* 12 */
203
- --juxt-radius-full: 9999px;
204
-
205
- /* Motion */
206
- --juxt-duration-instant: 80ms;
207
- --juxt-duration-fast: 120ms;
208
- --juxt-duration-normal: 180ms;
209
- --juxt-duration-slow: 240ms;
210
-
211
- --juxt-ease-standard: cubic-bezier(0.2, 0, 0, 1);
212
- --juxt-ease-out: cubic-bezier(0.16, 1, 0.3, 1);
213
- --juxt-ease-in: cubic-bezier(0.4, 0, 1, 1);
214
-
215
- /* Distance things travel when they enter. Zeroed for reduced motion. */
216
- --juxt-motion-shift: 4px;
217
- --juxt-motion-scale: 0.97;
218
-
219
- /* Layers */
220
- --juxt-z-sticky: 20;
221
- --juxt-z-dropdown: 50;
222
- --juxt-z-overlay: 100;
223
- --juxt-z-modal: 110;
224
- --juxt-z-popover: 120;
225
- --juxt-z-toast: 130;
226
- --juxt-z-tooltip: 140;
227
- }
228
-
229
- @media (prefers-reduced-motion: reduce) {
230
- :root {
231
- /* Things still fade | they just stop travelling. */
232
- --juxt-motion-shift: 0px;
233
- --juxt-motion-scale: 1;
234
- --juxt-duration-slow: 140ms;
235
- --juxt-duration-normal: 120ms;
236
- }
237
- }
1
+ /*
2
+ * Juxt design tokens
3
+ *
4
+ * One source of truth for colour, space, radius, type, elevation, motion and
5
+ * layering. Components never hardcode these values | they read them here.
6
+ *
7
+ * Light is the default. Dark applies under `.dark` or `[data-theme="dark"]`
8
+ * on any ancestor (usually <html>).
9
+ */
10
+
11
+ :root,
12
+ .light,
13
+ [data-theme='light'] {
14
+ color-scheme: light;
15
+
16
+ /* Surfaces */
17
+ --juxt-bg: #fcfcfc;
18
+ --juxt-surface: #ffffff;
19
+ --juxt-surface-raised: #ffffff;
20
+ --juxt-surface-sunken: #f4f4f5;
21
+ --juxt-surface-hover: #f1f1f2;
22
+ --juxt-surface-active: #e9e9eb;
23
+ --juxt-overlay: rgb(9 9 11 / 0.32);
24
+
25
+ /* Lines */
26
+ --juxt-border: #e4e4e7;
27
+ --juxt-border-subtle: #ededef;
28
+ --juxt-border-strong: #d1d1d6;
29
+
30
+ /* Text */
31
+ --juxt-fg: #09090b;
32
+ --juxt-fg-secondary: #52525b;
33
+ --juxt-fg-muted: #71717a;
34
+ --juxt-fg-disabled: #a1a1aa;
35
+
36
+ /* Ink | the inverted neutral used by primary actions */
37
+ --juxt-ink: #09090b;
38
+ --juxt-ink-hover: #27272a;
39
+ --juxt-ink-fg: #fafafa;
40
+
41
+ /* Accent */
42
+ --juxt-accent: #079d6b;
43
+ --juxt-accent-hover: #068a5e;
44
+ --juxt-accent-fg: #ffffff;
45
+ --juxt-accent-strong: #057a53;
46
+ --juxt-accent-text: #057a53;
47
+ --juxt-accent-soft: rgb(7 157 107 / 0.1);
48
+ --juxt-accent-border: rgb(7 157 107 / 0.28);
49
+ --juxt-ring: rgb(7 157 107 / 0.55);
50
+ --juxt-ring-soft: rgb(7 157 107 / 0.16);
51
+
52
+ /* Feedback */
53
+ --juxt-danger: #dc2626;
54
+ --juxt-danger-hover: #c21f1f;
55
+ --juxt-danger-fg: #ffffff;
56
+ --juxt-danger-text: #c81e1e;
57
+ --juxt-danger-soft: rgb(220 38 38 / 0.08);
58
+ --juxt-danger-border: rgb(220 38 38 / 0.28);
59
+ --juxt-danger-ring: rgb(220 38 38 / 0.16);
60
+
61
+ --juxt-warning: #d97706;
62
+ --juxt-warning-text: #a35a04;
63
+ --juxt-warning-soft: rgb(217 119 6 / 0.1);
64
+ --juxt-warning-border: rgb(217 119 6 / 0.28);
65
+
66
+ --juxt-info: #2563eb;
67
+ --juxt-info-text: #1d4fc4;
68
+ --juxt-info-soft: rgb(37 99 235 / 0.08);
69
+ --juxt-info-border: rgb(37 99 235 / 0.24);
70
+
71
+ --juxt-success: var(--juxt-accent);
72
+ --juxt-success-text: var(--juxt-accent-text);
73
+ --juxt-success-soft: var(--juxt-accent-soft);
74
+ --juxt-success-border: var(--juxt-accent-border);
75
+
76
+ /* Elevation | borders do most of the work, shadows only lift */
77
+ --juxt-shadow-xs: 0 1px 1px rgb(9 9 11 / 0.04);
78
+ --juxt-shadow-sm: 0 1px 2px rgb(9 9 11 / 0.05), 0 1px 1px rgb(9 9 11 / 0.03);
79
+ --juxt-shadow-md: 0 4px 12px -2px rgb(9 9 11 / 0.08), 0 2px 4px -2px rgb(9 9 11 / 0.05);
80
+ --juxt-shadow-lg: 0 16px 40px -8px rgb(9 9 11 / 0.16), 0 4px 12px -4px rgb(9 9 11 / 0.08);
81
+ --juxt-control-highlight: inset 0 1px 0 rgb(255 255 255 / 0.12);
82
+
83
+ --juxt-tooltip-bg: #18181b;
84
+ --juxt-tooltip-fg: #fafafa;
85
+ --juxt-tooltip-border: transparent;
86
+ }
87
+
88
+ .dark,
89
+ [data-theme='dark'] {
90
+ color-scheme: dark;
91
+
92
+ --juxt-bg: #09090b;
93
+ --juxt-surface: #111113;
94
+ --juxt-surface-raised: #18181b;
95
+ --juxt-surface-sunken: #0c0c0e;
96
+ --juxt-surface-hover: #1e1e22;
97
+ --juxt-surface-active: #26262b;
98
+ --juxt-overlay: rgb(0 0 0 / 0.6);
99
+
100
+ --juxt-border: #27272a;
101
+ --juxt-border-subtle: #1f1f23;
102
+ --juxt-border-strong: #3a3a40;
103
+
104
+ --juxt-fg: #fafafa;
105
+ --juxt-fg-secondary: #a1a1aa;
106
+ --juxt-fg-muted: #71717a;
107
+ --juxt-fg-disabled: #52525b;
108
+
109
+ --juxt-ink: #fafafa;
110
+ --juxt-ink-hover: #e4e4e7;
111
+ --juxt-ink-fg: #09090b;
112
+
113
+ --juxt-accent: #079d6b;
114
+ --juxt-accent-hover: #08b079;
115
+ --juxt-accent-fg: #ffffff;
116
+ --juxt-accent-strong: #067a53;
117
+ --juxt-accent-text: #1fc48a;
118
+ --juxt-accent-soft: rgb(7 157 107 / 0.14);
119
+ --juxt-accent-border: rgb(31 196 138 / 0.28);
120
+ --juxt-ring: rgb(31 196 138 / 0.6);
121
+ --juxt-ring-soft: rgb(7 157 107 / 0.24);
122
+
123
+ --juxt-danger: #d63a3f;
124
+ --juxt-danger-hover: #c53237;
125
+ --juxt-danger-fg: #ffffff;
126
+ --juxt-danger-text: #ff7a7e;
127
+ --juxt-danger-soft: rgb(229 72 77 / 0.14);
128
+ --juxt-danger-border: rgb(255 122 126 / 0.28);
129
+ --juxt-danger-ring: rgb(229 72 77 / 0.24);
130
+
131
+ --juxt-warning: #f5a524;
132
+ --juxt-warning-text: #f7b955;
133
+ --juxt-warning-soft: rgb(245 165 36 / 0.12);
134
+ --juxt-warning-border: rgb(247 185 85 / 0.26);
135
+
136
+ --juxt-info: #4f8cff;
137
+ --juxt-info-text: #85adff;
138
+ --juxt-info-soft: rgb(79 140 255 / 0.13);
139
+ --juxt-info-border: rgb(133 173 255 / 0.26);
140
+
141
+ --juxt-shadow-xs: 0 1px 1px rgb(0 0 0 / 0.3);
142
+ --juxt-shadow-sm: 0 1px 2px rgb(0 0 0 / 0.4);
143
+ --juxt-shadow-md: 0 8px 20px -4px rgb(0 0 0 / 0.5), 0 2px 6px -2px rgb(0 0 0 / 0.4);
144
+ --juxt-shadow-lg: 0 24px 56px -12px rgb(0 0 0 / 0.7), 0 6px 16px -6px rgb(0 0 0 / 0.5);
145
+ --juxt-control-highlight: inset 0 1px 0 rgb(255 255 255 / 0.04);
146
+
147
+ --juxt-tooltip-bg: #26262b;
148
+ --juxt-tooltip-fg: #fafafa;
149
+ --juxt-tooltip-border: #3a3a40;
150
+ }
151
+
152
+ :root {
153
+ /* Type */
154
+ --juxt-font-sans: 'Inter Variable', 'Inter', ui-sans-serif, system-ui, -apple-system, 'Segoe UI', sans-serif;
155
+ --juxt-font-mono: 'JetBrains Mono Variable', 'JetBrains Mono', ui-monospace, 'SF Mono', Menlo, Consolas, monospace;
156
+
157
+ --juxt-text-2xs: 0.6875rem; /* 11 */
158
+ --juxt-text-xs: 0.75rem; /* 12 */
159
+ --juxt-text-sm: 0.8125rem; /* 13 */
160
+ --juxt-text-md: 0.875rem; /* 14 */
161
+ --juxt-text-lg: 1rem; /* 16 */
162
+ --juxt-text-xl: 1.125rem; /* 18 */
163
+ --juxt-text-2xl: 1.375rem; /* 22 */
164
+ --juxt-text-3xl: 1.75rem; /* 28 */
165
+ --juxt-text-4xl: 2.5rem; /* 40 */
166
+
167
+ --juxt-leading-tight: 1.2;
168
+ --juxt-leading-snug: 1.4;
169
+ --juxt-leading-normal: 1.55;
170
+
171
+ --juxt-weight-regular: 400;
172
+ --juxt-weight-medium: 500;
173
+ --juxt-weight-semibold: 600;
174
+
175
+ --juxt-tracking-tight: -0.011em;
176
+ --juxt-tracking-tighter: -0.022em;
177
+
178
+ /* Space | a 4px grid */
179
+ --juxt-space-0-5: 0.125rem; /* 2 */
180
+ --juxt-space-1: 0.25rem; /* 4 */
181
+ --juxt-space-1-5: 0.375rem; /* 6 */
182
+ --juxt-space-2: 0.5rem; /* 8 */
183
+ --juxt-space-2-5: 0.625rem; /* 10 */
184
+ --juxt-space-3: 0.75rem; /* 12 */
185
+ --juxt-space-4: 1rem; /* 16 */
186
+ --juxt-space-5: 1.25rem; /* 20 */
187
+ --juxt-space-6: 1.5rem; /* 24 */
188
+ --juxt-space-8: 2rem; /* 32 */
189
+ --juxt-space-10: 2.5rem; /* 40 */
190
+ --juxt-space-12: 3rem; /* 48 */
191
+
192
+ /* Control heights */
193
+ --juxt-control-xs: 1.5rem; /* 24 */
194
+ --juxt-control-sm: 1.75rem; /* 28 */
195
+ --juxt-control-md: 2.125rem; /* 34 */
196
+ --juxt-control-lg: 2.5rem; /* 40 */
197
+
198
+ /* Radius */
199
+ --juxt-radius-xs: 0.25rem; /* 4 */
200
+ --juxt-radius-sm: 0.375rem; /* 6 */
201
+ --juxt-radius-md: 0.5rem; /* 8 */
202
+ --juxt-radius-lg: 0.75rem; /* 12 */
203
+ --juxt-radius-full: 9999px;
204
+
205
+ /* Motion */
206
+ --juxt-duration-instant: 80ms;
207
+ --juxt-duration-fast: 120ms;
208
+ --juxt-duration-normal: 180ms;
209
+ --juxt-duration-slow: 240ms;
210
+
211
+ --juxt-ease-standard: cubic-bezier(0.2, 0, 0, 1);
212
+ --juxt-ease-out: cubic-bezier(0.16, 1, 0.3, 1);
213
+ --juxt-ease-in: cubic-bezier(0.4, 0, 1, 1);
214
+
215
+ /* Distance things travel when they enter. Zeroed for reduced motion. */
216
+ --juxt-motion-shift: 4px;
217
+ --juxt-motion-scale: 0.97;
218
+
219
+ /* Layers */
220
+ --juxt-z-sticky: 20;
221
+ --juxt-z-dropdown: 50;
222
+ --juxt-z-overlay: 100;
223
+ --juxt-z-modal: 110;
224
+ --juxt-z-popover: 120;
225
+ --juxt-z-toast: 130;
226
+ --juxt-z-tooltip: 140;
227
+ }
228
+
229
+ @media (prefers-reduced-motion: reduce) {
230
+ :root {
231
+ /* Things still fade | they just stop travelling. */
232
+ --juxt-motion-shift: 0px;
233
+ --juxt-motion-scale: 1;
234
+ --juxt-duration-slow: 140ms;
235
+ --juxt-duration-normal: 120ms;
236
+ }
237
+ }