@ds-gn/tokens 0.0.0-stage → 0.5.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.
@@ -0,0 +1,549 @@
1
+ /* ==========================================================================
2
+ * theme.tailwind.css
3
+ *
4
+ * Input to the Tailwind CLI. Processed at build time.
5
+ *
6
+ * Tailwind reads every --color-* entry and generates utilities for it:
7
+ * --color-text-primary → text-text-primary, bg-text-primary, border-text-primary…
8
+ *
9
+ * Two categories of entries:
10
+ *
11
+ * A) Suffixed — generates utilities consumers can use for explicit overrides
12
+ * --color-text-primary-on-light → text-text-primary-on-light
13
+ * Value references the public token with a hardcoded fallback.
14
+ *
15
+ * B) Unsuffixed — generates the utilities components actually use
16
+ * --color-text-primary → text-text-primary
17
+ * Value is inherit. Tailwind outputs this on :root
18
+ * in the compiled CSS, but that :root declaration is dead inside shadow
19
+ * roots. Doesn't matter — aliases.css sets --color-text-primary on the
20
+ * real :root, and it inherits in.
21
+ * ========================================================================== */
22
+
23
+ @theme {
24
+ /* Typography — font-display utility for heading components */
25
+ --font-display: 'Bricolage Grotesque', ui-sans-serif, system-ui, sans-serif;
26
+
27
+ /* Structural breakpoints — compile-time only, not override targets */
28
+ --breakpoint-sm: 40rem;
29
+ --breakpoint-md: 48rem;
30
+ --breakpoint-lg: 64rem;
31
+ --breakpoint-xl: 80rem;
32
+ --breakpoint-2xl: 96rem;
33
+
34
+ /* A. Suffixed — consumer override utilities */
35
+ --color-accent-on-light: var(--accent-on-light, var(--color-orange-600));
36
+ --color-accent-on-dark: var(--accent-on-dark, var(--color-orange-500));
37
+ --color-accent-text-on-light: var(--accent-text-on-light, var(--color-orange-700));
38
+ --color-accent-text-on-dark: var(--accent-text-on-dark, var(--color-orange-500));
39
+
40
+ --color-badge-bg-on-light: var(--badge-bg-on-light, var(--color-neutral-100));
41
+ --color-badge-bg-on-dark: var(--badge-bg-on-dark, var(--color-blue-700));
42
+ --color-badge-border-on-light: var(--badge-border-on-light, var(--color-neutral-200));
43
+ --color-badge-border-on-dark: var(--badge-border-on-dark, var(--color-blue-600));
44
+ --color-badge-brand-text-on-light: var(--badge-brand-text-on-light, var(--color-blue-700));
45
+ --color-badge-brand-text-on-dark: var(--badge-brand-text-on-dark, var(--color-blue-100));
46
+ --color-badge-error-text-on-light: var(--badge-error-text-on-light, #b91c1c);
47
+ --color-badge-error-text-on-dark: var(--badge-error-text-on-dark, #fecaca);
48
+ --color-badge-text-on-light: var(--badge-text-on-light, var(--color-neutral-700));
49
+ --color-badge-text-on-dark: var(--badge-text-on-dark, var(--color-neutral-100));
50
+ --color-badge-warning-text-on-light: var(--badge-warning-text-on-light, var(--color-orange-900));
51
+ --color-badge-warning-text-on-dark: var(--badge-warning-text-on-dark, var(--color-orange-100));
52
+
53
+ --color-brand-on-light: var(--brand-on-light, var(--color-blue-500));
54
+ --color-brand-on-dark: var(--brand-on-dark, var(--color-blue-400));
55
+ --color-brand-subtle-on-light: var(--brand-subtle-on-light, var(--color-blue-100));
56
+ --color-brand-subtle-on-dark: var(--brand-subtle-on-dark, var(--color-blue-800));
57
+
58
+ --color-button-ghost-bg-on-light: var(--button-ghost-bg-on-light, transparent);
59
+ --color-button-ghost-bg-on-dark: var(--button-ghost-bg-on-dark, transparent);
60
+ --color-button-ghost-bg-hover-on-light: var(--button-ghost-bg-hover-on-light, var(--color-neutral-200));
61
+ --color-button-ghost-bg-hover-on-dark: var(--button-ghost-bg-hover-on-dark, var(--color-neutral-300));
62
+ --color-button-ghost-text-on-light: var(--button-ghost-text-on-light, var(--color-neutral-900));
63
+ --color-button-ghost-text-on-dark: var(--button-ghost-text-on-dark, var(--color-white));
64
+ --color-button-ghost-text-hover-on-light: var(--button-ghost-text-hover-on-light, var(--color-neutral-900));
65
+ --color-button-ghost-text-hover-on-dark: var(--button-ghost-text-hover-on-dark, var(--color-neutral-900));
66
+ --color-button-gradient-text-on-light: var(--button-gradient-text-on-light, var(--color-white));
67
+ --color-button-gradient-text-on-dark: var(--button-gradient-text-on-dark, var(--color-neutral-900));
68
+ --color-button-inline-text-on-light: var(--button-inline-text-on-light, var(--color-neutral-900));
69
+ --color-button-inline-text-on-dark: var(--button-inline-text-on-dark, var(--color-white));
70
+ --color-button-inline-text-hover-on-light: var(--button-inline-text-hover-on-light, var(--color-orange-500));
71
+ --color-button-inline-text-hover-on-dark: var(--button-inline-text-hover-on-dark, var(--color-orange-500));
72
+ --color-button-link-text-on-light: var(--button-link-text-on-light, var(--color-blue-700));
73
+ --color-button-link-text-on-dark: var(--button-link-text-on-dark, var(--color-blue-400));
74
+ --color-button-link-text-hover-on-light: var(--button-link-text-hover-on-light, var(--color-blue-800));
75
+ --color-button-link-text-hover-on-dark: var(--button-link-text-hover-on-dark, var(--color-blue-300));
76
+ --color-button-mono-outline-bg-on-light: var(--button-mono-outline-bg-on-light, var(--color-transparent));
77
+ --color-button-mono-outline-bg-on-dark: var(--button-mono-outline-bg-on-dark, var(--color-transparent));
78
+ --color-button-mono-outline-bg-hover-on-light: var(--button-mono-outline-bg-hover-on-light, var(--color-neutral-900));
79
+ --color-button-mono-outline-bg-hover-on-dark: var(--button-mono-outline-bg-hover-on-dark, var(--color-white));
80
+ --color-button-mono-outline-outline-on-light: var(--button-mono-outline-outline-on-light, var(--color-neutral-900));
81
+ --color-button-mono-outline-outline-on-dark: var(--button-mono-outline-outline-on-dark, var(--color-neutral-100));
82
+ --color-button-mono-outline-outline-hover-on-light: var(--button-mono-outline-outline-hover-on-light, var(--color-neutral-700));
83
+ --color-button-mono-outline-outline-hover-on-dark: var(--button-mono-outline-outline-hover-on-dark, var(--color-white));
84
+ --color-button-mono-outline-text-on-light: var(--button-mono-outline-text-on-light, var(--color-neutral-900));
85
+ --color-button-mono-outline-text-on-dark: var(--button-mono-outline-text-on-dark, var(--color-neutral-100));
86
+ --color-button-mono-outline-text-hover-on-light: var(--button-mono-outline-text-hover-on-light, var(--color-white));
87
+ --color-button-mono-outline-text-hover-on-dark: var(--button-mono-outline-text-hover-on-dark, var(--color-neutral-900));
88
+ --color-button-mono-solid-bg-on-light: var(--button-mono-solid-bg-on-light, var(--color-neutral-900));
89
+ --color-button-mono-solid-bg-on-dark: var(--button-mono-solid-bg-on-dark, var(--color-white));
90
+ --color-button-mono-solid-bg-hover-on-light: var(--button-mono-solid-bg-hover-on-light, var(--color-neutral-700));
91
+ --color-button-mono-solid-bg-hover-on-dark: var(--button-mono-solid-bg-hover-on-dark, var(--color-neutral-200));
92
+ --color-button-mono-solid-text-on-light: var(--button-mono-solid-text-on-light, var(--color-white));
93
+ --color-button-mono-solid-text-on-dark: var(--button-mono-solid-text-on-dark, var(--color-neutral-900));
94
+ --color-button-outline-bg-on-light: var(--button-outline-bg-on-light, var(--color-transparent));
95
+ --color-button-outline-bg-on-dark: var(--button-outline-bg-on-dark, var(--color-transparent));
96
+ --color-button-outline-bg-hover-on-light: var(--button-outline-bg-hover-on-light, var(--color-orange-600));
97
+ --color-button-outline-bg-hover-on-dark: var(--button-outline-bg-hover-on-dark, var(--color-orange-500));
98
+ --color-button-outline-outline-on-light: var(--button-outline-outline-on-light, var(--color-orange-500));
99
+ --color-button-outline-outline-on-dark: var(--button-outline-outline-on-dark, var(--color-orange-600));
100
+ --color-button-outline-outline-hover-on-light: var(--button-outline-outline-hover-on-light, var(--color-orange-600));
101
+ --color-button-outline-outline-hover-on-dark: var(--button-outline-outline-hover-on-dark, var(--color-orange-500));
102
+ --color-button-outline-text-on-light: var(--button-outline-text-on-light, var(--color-neutral-900));
103
+ --color-button-outline-text-on-dark: var(--button-outline-text-on-dark, var(--color-neutral-100));
104
+ --color-button-outline-text-hover-on-light: var(--button-outline-text-hover-on-light, var(--color-orange-600));
105
+ --color-button-outline-text-hover-on-dark: var(--button-outline-text-hover-on-dark, var(--color-orange-500));
106
+ --color-button-solid-bg-on-light: var(--button-solid-bg-on-light, var(--color-orange-500));
107
+ --color-button-solid-bg-on-dark: var(--button-solid-bg-on-dark, var(--color-orange-600));
108
+ --color-button-solid-bg-hover-on-light: var(--button-solid-bg-hover-on-light, var(--color-orange-400));
109
+ --color-button-solid-bg-hover-on-dark: var(--button-solid-bg-hover-on-dark, var(--color-orange-500));
110
+ --color-button-solid-text-on-light: var(--button-solid-text-on-light, var(--color-neutral-900));
111
+ --color-button-solid-text-on-dark: var(--button-solid-text-on-dark, var(--color-neutral-900));
112
+
113
+ --color-card-bg-on-light: var(--card-bg-on-light, var(--color-white));
114
+ --color-card-bg-on-dark: var(--card-bg-on-dark, var(--color-blue-800));
115
+ --color-card-border-on-light: var(--card-border-on-light, var(--color-neutral-200));
116
+ --color-card-border-on-dark: var(--card-border-on-dark, rgb(255 255 255 / 0.08));
117
+
118
+ --color-disabled-on-light: var(--disabled-on-light, var(--color-neutral-400));
119
+ --color-disabled-on-dark: var(--disabled-on-dark, var(--color-neutral-600));
120
+
121
+ --color-error-on-light: var(--error-on-light, #ef4444);
122
+ --color-error-on-dark: var(--error-on-dark, #f87171);
123
+ --color-error-subtle-on-light: var(--error-subtle-on-light, #fee2e2);
124
+ --color-error-subtle-on-dark: var(--error-subtle-on-dark, #7f1d1d);
125
+
126
+ --color-eyebrow-on-light: var(--eyebrow-on-light, var(--color-orange-700));
127
+ --color-eyebrow-on-dark: var(--eyebrow-on-dark, var(--color-orange-500));
128
+
129
+ --color-focus-on-light: var(--focus-on-light, var(--color-blue-500));
130
+ --color-focus-on-dark: var(--focus-on-dark, var(--color-blue-400));
131
+
132
+ --color-gradient-accent-bg-on-light: var(--gradient-accent-bg-on-light, linear-gradient(90deg, var(--color-orange-600), var(--color-orange-400)));
133
+ --color-gradient-accent-bg-on-dark: var(--gradient-accent-bg-on-dark, linear-gradient(90deg, var(--color-orange-600), var(--color-orange-400)));
134
+ --color-gradient-accent-bg-hover-on-light: var(--gradient-accent-bg-hover-on-light, linear-gradient(90deg, var(--color-orange-500), var(--color-orange-300)));
135
+ --color-gradient-accent-bg-hover-on-dark: var(--gradient-accent-bg-hover-on-dark, linear-gradient(90deg, var(--color-orange-500), var(--color-orange-300)));
136
+
137
+ --color-info-on-light: var(--info-on-light, var(--color-blue-500));
138
+ --color-info-on-dark: var(--info-on-dark, var(--color-blue-400));
139
+ --color-info-subtle-on-light: var(--info-subtle-on-light, var(--color-blue-100));
140
+ --color-info-subtle-on-dark: var(--info-subtle-on-dark, var(--color-blue-900));
141
+
142
+ --color-input-bg-on-light: var(--input-bg-on-light, var(--surface-default-on-light));
143
+ --color-input-bg-on-dark: var(--input-bg-on-dark, var(--surface-default-on-dark));
144
+ --color-input-border-on-light: var(--input-border-on-light, var(--color-neutral-300));
145
+ --color-input-border-on-dark: var(--input-border-on-dark, var(--color-blue-600));
146
+ --color-input-error-text-on-light: var(--input-error-text-on-light, #b91c1c);
147
+ --color-input-error-text-on-dark: var(--input-error-text-on-dark, #f87171);
148
+ --color-input-focus-on-light: var(--input-focus-on-light, var(--color-blue-500));
149
+ --color-input-focus-on-dark: var(--input-focus-on-dark, var(--color-blue-400));
150
+ --color-input-placeholder-on-light: var(--input-placeholder-on-light, var(--color-neutral-600));
151
+ --color-input-placeholder-on-dark: var(--input-placeholder-on-dark, var(--color-neutral-500));
152
+ --color-input-text-on-light: var(--input-text-on-light, var(--color-neutral-900));
153
+ --color-input-text-on-dark: var(--input-text-on-dark, var(--color-neutral-100));
154
+
155
+ --color-interactive-on-light: var(--interactive-on-light, var(--color-blue-500));
156
+ --color-interactive-on-dark: var(--interactive-on-dark, var(--color-blue-400));
157
+ --color-interactive-active-on-light: var(--interactive-active-on-light, var(--color-blue-700));
158
+ --color-interactive-active-on-dark: var(--interactive-active-on-dark, var(--color-blue-500));
159
+ --color-interactive-disabled-on-light: var(--interactive-disabled-on-light, var(--color-neutral-300));
160
+ --color-interactive-disabled-on-dark: var(--interactive-disabled-on-dark, var(--color-neutral-700));
161
+ --color-interactive-hover-on-light: var(--interactive-hover-on-light, var(--color-blue-600));
162
+ --color-interactive-hover-on-dark: var(--interactive-hover-on-dark, var(--color-blue-300));
163
+
164
+ --color-inverse-on-light: var(--inverse-on-light, var(--color-white));
165
+ --color-inverse-on-dark: var(--inverse-on-dark, var(--color-neutral-900));
166
+
167
+ --color-nav-link-dropdown-text-hover-on-light: var(--nav-link-dropdown-text-hover-on-light, var(--color-orange-700));
168
+ --color-nav-link-dropdown-text-hover-on-dark: var(--nav-link-dropdown-text-hover-on-dark, var(--color-orange-200));
169
+
170
+ --color-outline-on-light: var(--outline-on-light, var(--color-neutral-200));
171
+ --color-outline-on-dark: var(--outline-on-dark, oklch(24% 0.05 255));
172
+ --color-outline-strong-on-light: var(--outline-strong-on-light, var(--color-neutral-300));
173
+ --color-outline-strong-on-dark: var(--outline-strong-on-dark, var(--color-blue-600));
174
+ --color-outline-subtle-on-light: var(--outline-subtle-on-light, var(--color-neutral-100));
175
+ --color-outline-subtle-on-dark: var(--outline-subtle-on-dark, var(--color-blue-800));
176
+
177
+ --color-page-on-light: var(--page-on-light, oklch(97% 0.01 255));
178
+ --color-page-on-dark: var(--page-on-dark, oklch(12% 0.05 255));
179
+
180
+ --color-pattern-dot-on-light: var(--pattern-dot-on-light, oklch(70% 0.03 255));
181
+ --color-pattern-dot-on-dark: var(--pattern-dot-on-dark, oklch(40% 0.05 255));
182
+
183
+ --color-success-on-light: var(--success-on-light, #047857);
184
+ --color-success-on-dark: var(--success-on-dark, #34d399);
185
+ --color-success-subtle-on-light: var(--success-subtle-on-light, #d1fae5);
186
+ --color-success-subtle-on-dark: var(--success-subtle-on-dark, #064e3b);
187
+
188
+ --color-surface-default-on-light: var(--surface-default-on-light, oklch(100% 0 0));
189
+ --color-surface-default-on-dark: var(--surface-default-on-dark, oklch(18% 0.06 255));
190
+ --color-surface-elevated-on-light: var(--surface-elevated-on-light, oklch(96% 0.02 255));
191
+ --color-surface-elevated-on-dark: var(--surface-elevated-on-dark, oklch(0.22 0.08 255));
192
+ --color-surface-subtle-on-light: var(--surface-subtle-on-light, oklch(94% 0.04 255));
193
+ --color-surface-subtle-on-dark: var(--surface-subtle-on-dark, oklch(30% 0.12 255));
194
+
195
+ --color-terminal-bg: var(--terminal-bg, #09090b);
196
+ --color-terminal-border: var(--terminal-border, #1a1a1a);
197
+ --color-terminal-dot-red: var(--terminal-dot-red, #ea580c);
198
+ --color-terminal-dot-yellow: var(--terminal-dot-yellow, #fbbf24);
199
+ --color-terminal-muted: var(--terminal-muted, #a1a1aa);
200
+ --color-terminal-success: var(--terminal-success, #34d399);
201
+ --color-terminal-text: var(--terminal-text, #e4e4e7);
202
+ --color-terminal-titlebar: var(--terminal-titlebar, #0d0d0f);
203
+
204
+ --color-text-primary-on-light: var(--text-primary-on-light, var(--color-neutral-900));
205
+ --color-text-primary-on-dark: var(--text-primary-on-dark, var(--color-neutral-50));
206
+ --color-text-secondary-on-light: var(--text-secondary-on-light, var(--color-neutral-600));
207
+ --color-text-secondary-on-dark: var(--text-secondary-on-dark, var(--color-neutral-400));
208
+ --color-text-tertiary-on-light: var(--text-tertiary-on-light, var(--color-neutral-600));
209
+ --color-text-tertiary-on-dark: var(--text-tertiary-on-dark, var(--color-neutral-400));
210
+
211
+ --color-warning-on-light: var(--warning-on-light, var(--color-orange-500));
212
+ --color-warning-on-dark: var(--warning-on-dark, var(--color-orange-400));
213
+ --color-warning-subtle-on-light: var(--warning-subtle-on-light, var(--color-orange-100));
214
+ --color-warning-subtle-on-dark: var(--warning-subtle-on-dark, var(--color-orange-900));
215
+
216
+ --duration-moderate: var(--dsgn-src-duration-moderate, 240ms);
217
+ --duration-quick: var(--dsgn-src-duration-quick, 180ms);
218
+
219
+ --ease-emphasized: var(--dsgn-src-ease-emphasized, cubic-bezier(0.16, 1, 0.3, 1));
220
+
221
+ --radius-button: var(--dsgn-src-radius-button, calc(infinity * 1px));
222
+ --radius-card: var(--dsgn-src-radius-card, 1rem);
223
+ --radius-input: var(--dsgn-src-radius-input, 0.5rem);
224
+ --radius-surface: var(--dsgn-src-radius-surface, 1rem);
225
+
226
+ --shadow-card-on-light: var(--dsgn-src-shadow-card-on-light, 0 10px 30px rgb(15 23 42 / 0.08));
227
+ --shadow-card-on-dark: var(--dsgn-src-shadow-card-on-dark, 0 12px 32px rgb(2 6 23 / 0.35));
228
+
229
+ /* B. Unsuffixed — what components use */
230
+ --color-accent: inherit;
231
+ --color-accent-text: inherit;
232
+
233
+ --color-badge-bg: inherit;
234
+ --color-badge-border: inherit;
235
+ --color-badge-brand-text: inherit;
236
+ --color-badge-error-text: inherit;
237
+ --color-badge-text: inherit;
238
+ --color-badge-warning-text: inherit;
239
+
240
+ --color-brand: inherit;
241
+ --color-brand-subtle: inherit;
242
+
243
+ --color-button-ghost-bg: inherit;
244
+ --color-button-ghost-bg-hover: inherit;
245
+ --color-button-ghost-text: inherit;
246
+ --color-button-ghost-text-hover: inherit;
247
+ --color-button-gradient-text: inherit;
248
+ --color-button-inline-text: inherit;
249
+ --color-button-inline-text-hover: inherit;
250
+ --color-button-link-text: inherit;
251
+ --color-button-link-text-hover: inherit;
252
+ --color-button-mono-outline-bg: inherit;
253
+ --color-button-mono-outline-bg-hover: inherit;
254
+ --color-button-mono-outline-outline: inherit;
255
+ --color-button-mono-outline-outline-hover: inherit;
256
+ --color-button-mono-outline-text: inherit;
257
+ --color-button-mono-outline-text-hover: inherit;
258
+ --color-button-mono-solid-bg: inherit;
259
+ --color-button-mono-solid-bg-hover: inherit;
260
+ --color-button-mono-solid-text: inherit;
261
+ --color-button-outline-bg: inherit;
262
+ --color-button-outline-bg-hover: inherit;
263
+ --color-button-outline-outline: inherit;
264
+ --color-button-outline-outline-hover: inherit;
265
+ --color-button-outline-text: inherit;
266
+ --color-button-outline-text-hover: inherit;
267
+ --color-button-solid-bg: inherit;
268
+ --color-button-solid-bg-hover: inherit;
269
+ --color-button-solid-text: inherit;
270
+
271
+ --color-card-bg: inherit;
272
+ --color-card-border: inherit;
273
+
274
+ --color-disabled: inherit;
275
+
276
+ --color-error: inherit;
277
+ --color-error-subtle: inherit;
278
+
279
+ --color-eyebrow: inherit;
280
+
281
+ --color-focus: inherit;
282
+
283
+ --color-gradient-accent-bg: inherit;
284
+ --color-gradient-accent-bg-hover: inherit;
285
+
286
+ --color-info: inherit;
287
+ --color-info-subtle: inherit;
288
+
289
+ --color-input-bg: inherit;
290
+ --color-input-border: inherit;
291
+ --color-input-error-text: inherit;
292
+ --color-input-focus: inherit;
293
+ --color-input-placeholder: inherit;
294
+ --color-input-text: inherit;
295
+
296
+ --color-interactive: inherit;
297
+ --color-interactive-active: inherit;
298
+ --color-interactive-disabled: inherit;
299
+ --color-interactive-hover: inherit;
300
+
301
+ --color-inverse: inherit;
302
+
303
+ --color-nav-link-dropdown-text-hover: inherit;
304
+
305
+ --color-outline: inherit;
306
+ --color-outline-strong: inherit;
307
+ --color-outline-subtle: inherit;
308
+
309
+ --color-page: inherit;
310
+
311
+ --color-pattern-dot: inherit;
312
+
313
+ --color-success: inherit;
314
+ --color-success-subtle: inherit;
315
+
316
+ --color-surface-default: inherit;
317
+ --color-surface-elevated: inherit;
318
+ --color-surface-subtle: inherit;
319
+
320
+ --color-text-primary: inherit;
321
+ --color-text-secondary: inherit;
322
+ --color-text-tertiary: inherit;
323
+
324
+ --color-warning: inherit;
325
+ --color-warning-subtle: inherit;
326
+
327
+ --shadow-card: inherit;
328
+ }
329
+ /* ==========================================================================
330
+ * Animation Tokens
331
+ *
332
+ * Keyframes and --animate-* theme variables for Tailwind utility generation.
333
+ * Tailwind reads --animate-* entries and generates animate-* utilities:
334
+ * --animate-fade-in-a → animate-fade-in-a
335
+ *
336
+ * Two identical fade-in keyframes (a/b) allow components to alternate
337
+ * animation names on each cycle, forcing the browser to restart the animation.
338
+ *
339
+ * The @keyframes live INSIDE @theme deliberately. This file is appended to
340
+ * theme.tailwind.css, which is the input to every component's Tailwind build —
341
+ * so a keyframe at the top level is copied verbatim into all ~25 component
342
+ * stylesheets whether or not the component animates. Nested here, Tailwind
343
+ * emits each one only into the components that actually use its animate-*
344
+ * utility.
345
+ *
346
+ * Duration and easing values are NOT here — they are semantic tokens in
347
+ * animations.json, so they get the same public/override treatment as every
348
+ * other token rather than being hand-maintained in this file.
349
+ * ========================================================================== */
350
+
351
+ /* --- Registered custom properties ------------------------------------------
352
+ * An unregistered custom property cannot be interpolated, so a gradient angle
353
+ * driven by a keyframe needs a real registration with a type. `@property` is
354
+ * only honoured in document-level stylesheets, never in the adopted stylesheets
355
+ * components ship — `packages/ui/build/extract-properties.ts` handles that: it
356
+ * lifts every `@property` out of the compiled component CSS into
357
+ * `tokens.properties.css`, which consumers load once on the document. This
358
+ * block therefore sits at the top level so it reaches that compiled CSS, the
359
+ * same route Tailwind's own `--tw-*` registrations already take.
360
+ * -------------------------------------------------------------------------- */
361
+
362
+ @property --dsgn-border-sweep-angle {
363
+ syntax: '<angle>';
364
+ inherits: false;
365
+ initial-value: 0deg;
366
+ }
367
+
368
+ @theme {
369
+ --animate-fade-in-a: fade-in-a 0.3s ease-in;
370
+ --animate-fade-in-b: fade-in-b 0.3s ease-in;
371
+
372
+ @keyframes fade-in-a {
373
+ from {
374
+ opacity: 0;
375
+ }
376
+ to {
377
+ opacity: 1;
378
+ }
379
+ }
380
+
381
+ @keyframes fade-in-b {
382
+ from {
383
+ opacity: 0;
384
+ }
385
+ to {
386
+ opacity: 1;
387
+ }
388
+ }
389
+
390
+ /* --- Surface motion primitives -------------------------------------
391
+ * Enter/exit pairs shared by any surface that animates onto the screen —
392
+ * modal, sheet, drawer, popover. Enter uses the moderate duration, exit
393
+ * the quick one, so leaving always feels faster than arriving.
394
+ *
395
+ * Consumed through animate-* utilities, so Tailwind emits each keyframe
396
+ * only into the components that actually reference it. */
397
+
398
+ --animate-fade-in: fade-in var(--duration-moderate) var(--ease-emphasized)
399
+ both;
400
+ --animate-fade-out: fade-out var(--duration-quick) var(--ease-emphasized) both;
401
+ --animate-scale-in: scale-in var(--duration-moderate) var(--ease-emphasized)
402
+ both;
403
+ --animate-scale-out: scale-out var(--duration-quick) var(--ease-emphasized)
404
+ both;
405
+ --animate-slide-in-left: slide-in-left var(--duration-moderate)
406
+ var(--ease-emphasized) both;
407
+ --animate-slide-out-left: slide-out-left var(--duration-quick)
408
+ var(--ease-emphasized) both;
409
+ --animate-slide-in-right: slide-in-right var(--duration-moderate)
410
+ var(--ease-emphasized) both;
411
+ --animate-slide-out-right: slide-out-right var(--duration-quick)
412
+ var(--ease-emphasized) both;
413
+ --animate-slide-in-top: slide-in-top var(--duration-moderate)
414
+ var(--ease-emphasized) both;
415
+ --animate-slide-out-top: slide-out-top var(--duration-quick)
416
+ var(--ease-emphasized) both;
417
+ --animate-slide-in-bottom: slide-in-bottom var(--duration-moderate)
418
+ var(--ease-emphasized) both;
419
+ --animate-slide-out-bottom: slide-out-bottom var(--duration-quick)
420
+ var(--ease-emphasized) both;
421
+
422
+ @keyframes fade-in {
423
+ from {
424
+ opacity: 0;
425
+ }
426
+ to {
427
+ opacity: 1;
428
+ }
429
+ }
430
+
431
+ @keyframes fade-out {
432
+ from {
433
+ opacity: 1;
434
+ }
435
+ to {
436
+ opacity: 0;
437
+ }
438
+ }
439
+
440
+ @keyframes scale-in {
441
+ from {
442
+ opacity: 0;
443
+ transform: scale(0.96);
444
+ }
445
+ to {
446
+ opacity: 1;
447
+ transform: none;
448
+ }
449
+ }
450
+
451
+ @keyframes scale-out {
452
+ from {
453
+ opacity: 1;
454
+ transform: none;
455
+ }
456
+ to {
457
+ opacity: 0;
458
+ transform: scale(0.96);
459
+ }
460
+ }
461
+
462
+ @keyframes slide-in-left {
463
+ from {
464
+ transform: translateX(-100%);
465
+ }
466
+ to {
467
+ transform: none;
468
+ }
469
+ }
470
+
471
+ @keyframes slide-out-left {
472
+ from {
473
+ transform: none;
474
+ }
475
+ to {
476
+ transform: translateX(-100%);
477
+ }
478
+ }
479
+
480
+ @keyframes slide-in-right {
481
+ from {
482
+ transform: translateX(100%);
483
+ }
484
+ to {
485
+ transform: none;
486
+ }
487
+ }
488
+
489
+ @keyframes slide-out-right {
490
+ from {
491
+ transform: none;
492
+ }
493
+ to {
494
+ transform: translateX(100%);
495
+ }
496
+ }
497
+
498
+ @keyframes slide-in-top {
499
+ from {
500
+ transform: translateY(-100%);
501
+ }
502
+ to {
503
+ transform: none;
504
+ }
505
+ }
506
+
507
+ @keyframes slide-out-top {
508
+ from {
509
+ transform: none;
510
+ }
511
+ to {
512
+ transform: translateY(-100%);
513
+ }
514
+ }
515
+
516
+ @keyframes slide-in-bottom {
517
+ from {
518
+ transform: translateY(100%);
519
+ }
520
+ to {
521
+ transform: none;
522
+ }
523
+ }
524
+
525
+ @keyframes slide-out-bottom {
526
+ from {
527
+ transform: none;
528
+ }
529
+ to {
530
+ transform: translateY(100%);
531
+ }
532
+ }
533
+
534
+ /* --- Border sweep ---------------------------------------------------
535
+ * Rotates `--dsgn-border-sweep-angle` once, for a conic gradient painted
536
+ * into a border-box background: the bright stop travels around the edge
537
+ * and settles. Needs the `@property` registration above to interpolate. */
538
+
539
+ --animate-border-sweep: border-sweep 900ms cubic-bezier(0.4, 0, 0.2, 1);
540
+
541
+ @keyframes border-sweep {
542
+ from {
543
+ --dsgn-border-sweep-angle: 0deg;
544
+ }
545
+ to {
546
+ --dsgn-border-sweep-angle: 360deg;
547
+ }
548
+ }
549
+ }