parthenon-ui 1.0.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.
Files changed (36) hide show
  1. package/package.json +74 -0
  2. package/src/components/.gitkeep +0 -0
  3. package/src/components/avatar.tsx +109 -0
  4. package/src/components/badge.tsx +52 -0
  5. package/src/components/button.tsx +122 -0
  6. package/src/components/card.tsx +108 -0
  7. package/src/components/checkbox.tsx +37 -0
  8. package/src/components/collapsible.tsx +21 -0
  9. package/src/components/color-picker.tsx +270 -0
  10. package/src/components/command.tsx +195 -0
  11. package/src/components/context-menu.tsx +270 -0
  12. package/src/components/dialog.tsx +169 -0
  13. package/src/components/dropdown-menu.tsx +279 -0
  14. package/src/components/empty.tsx +104 -0
  15. package/src/components/index.ts +27 -0
  16. package/src/components/input-group.tsx +155 -0
  17. package/src/components/input.tsx +27 -0
  18. package/src/components/label.tsx +18 -0
  19. package/src/components/popover.tsx +88 -0
  20. package/src/components/scroll-area.tsx +55 -0
  21. package/src/components/select.tsx +201 -0
  22. package/src/components/separator.tsx +23 -0
  23. package/src/components/sheet.tsx +138 -0
  24. package/src/components/sidebar.tsx +729 -0
  25. package/src/components/skeleton.tsx +13 -0
  26. package/src/components/sonner.tsx +59 -0
  27. package/src/components/switch.tsx +51 -0
  28. package/src/components/table.tsx +375 -0
  29. package/src/components/tabs.tsx +80 -0
  30. package/src/components/textarea.tsx +18 -0
  31. package/src/components/tooltip.tsx +64 -0
  32. package/src/hooks/.gitkeep +0 -0
  33. package/src/hooks/use-mobile.ts +19 -0
  34. package/src/lib/.gitkeep +0 -0
  35. package/src/lib/utils.ts +6 -0
  36. package/src/styles/globals.css +654 -0
@@ -0,0 +1,6 @@
1
+ import { clsx, type ClassValue } from "clsx"
2
+ import { twMerge } from "tailwind-merge"
3
+
4
+ export function cn(...inputs: ClassValue[]) {
5
+ return twMerge(clsx(inputs))
6
+ }
@@ -0,0 +1,654 @@
1
+ @import "tailwindcss";
2
+ @import "tw-animate-css";
3
+ @import "shadcn/tailwind.css";
4
+ @import "@fontsource-variable/geist";
5
+
6
+ @custom-variant dark (&:is(.dark *));
7
+ @source "../../../apps/**/*.{ts,tsx}";
8
+ @source "../../../components/**/*.{ts,tsx}";
9
+ @source "../**/*.{ts,tsx}";
10
+ @source "../../../apps/web/node_modules/streamdown/dist/*.js";
11
+
12
+ @theme inline {
13
+ --font-heading: var(--font-sans);
14
+ --color-sidebar-ring: var(--sidebar-ring);
15
+ --color-sidebar-border: var(--sidebar-border);
16
+ --color-sidebar-accent-foreground: var(--sidebar-accent-foreground);
17
+ --color-sidebar-accent: var(--sidebar-accent);
18
+ --color-sidebar-primary-foreground: var(--sidebar-primary-foreground);
19
+ --color-sidebar-primary: var(--sidebar-primary);
20
+ --color-sidebar-foreground: var(--sidebar-foreground);
21
+ --color-sidebar: var(--sidebar);
22
+ --color-chart-5: var(--chart-5);
23
+ --color-chart-4: var(--chart-4);
24
+ --color-chart-3: var(--chart-3);
25
+ --color-chart-2: var(--chart-2);
26
+ --color-chart-1: var(--chart-1);
27
+ --color-ring: var(--ring);
28
+ --color-input: var(--input);
29
+ --color-border: var(--border);
30
+ --color-destructive: var(--destructive);
31
+ --color-accent-foreground: var(--accent-foreground);
32
+ --color-accent: var(--accent);
33
+ --color-muted-foreground: var(--muted-foreground);
34
+ --color-muted: var(--muted);
35
+ --color-secondary-foreground: var(--secondary-foreground);
36
+ --color-secondary: var(--secondary);
37
+ --color-primary-foreground: var(--primary-foreground);
38
+ --color-primary: var(--primary);
39
+ --color-popover-foreground: var(--popover-foreground);
40
+ --color-popover: var(--popover);
41
+ --color-card-foreground: var(--card-foreground);
42
+ --color-card: var(--card);
43
+ --color-foreground: var(--foreground);
44
+ --color-background: var(--background);
45
+ --radius-sm: calc(var(--radius) * 0.6);
46
+ --radius-md: calc(var(--radius) * 0.8);
47
+ --radius-lg: var(--radius);
48
+ --radius-xl: calc(var(--radius) * 1.4);
49
+ --radius-2xl: calc(var(--radius) * 1.8);
50
+ --radius-3xl: calc(var(--radius) * 2.2);
51
+ --radius-4xl: calc(var(--radius) * 2.6);
52
+ --font-sans: 'Geist Variable', sans-serif;
53
+ --animate-blur-reveal: blur-reveal 1s forwards;
54
+ --animate-text-shine: text-shine 2.2s linear infinite;
55
+ --animate-bubble-in: bubble-in 0.3s ease-out forwards;
56
+ }
57
+
58
+ @keyframes bubble-in {
59
+ from { opacity: 0; transform: translateY(10px) scale(0.95); }
60
+ to { opacity: 1; transform: translateY(0) scale(1); }
61
+ }
62
+
63
+ @keyframes blur-reveal {
64
+ from { filter: blur(4px); opacity: 0; }
65
+ to { filter: blur(0); opacity: 1; }
66
+ }
67
+
68
+ @keyframes text-shine {
69
+ from { background-position: 200% center; }
70
+ to { background-position: -200% center; }
71
+ }
72
+
73
+ @keyframes thinking-pulse {
74
+ 0%, 100% { opacity: 0.4; }
75
+ 50% { opacity: 1; }
76
+ }
77
+
78
+ @keyframes thinking-dots {
79
+ 0%, 20% { content: '.'; }
80
+ 40% { content: '..'; }
81
+ 60%, 100% { content: '...'; }
82
+ }
83
+
84
+ @keyframes shimmer-bg {
85
+ from { background-position: 100% center; }
86
+ to { background-position: 0% center; }
87
+ }
88
+
89
+ .animate-thinking-pulse {
90
+ animation: thinking-pulse 2s ease-in-out infinite;
91
+ }
92
+
93
+ :root {
94
+ --background: oklch(1 0 0);
95
+ --foreground: oklch(0.145 0 0);
96
+ --card: oklch(1 0 0);
97
+ --card-foreground: oklch(0.145 0 0);
98
+ --popover: oklch(1 0 0);
99
+ --popover-foreground: oklch(0.145 0 0);
100
+ --primary: oklch(0.553 0.195 38.402);
101
+ --primary-foreground: oklch(0.98 0.016 73.684);
102
+ --secondary: oklch(0.967 0.001 286.375);
103
+ --secondary-foreground: oklch(0.21 0.006 285.885);
104
+ --muted: oklch(0.97 0 0);
105
+ --muted-foreground: oklch(0.556 0 0);
106
+ --accent: oklch(0.97 0 0);
107
+ --accent-foreground: oklch(0.205 0 0);
108
+ --destructive: oklch(0.577 0.245 27.325);
109
+ --border: oklch(0.922 0 0);
110
+ --input: oklch(0.922 0 0);
111
+ --ring: oklch(0.708 0 0);
112
+ --chart-1: oklch(0.87 0 0);
113
+ --chart-2: oklch(0.556 0 0);
114
+ --chart-3: oklch(0.439 0 0);
115
+ --chart-4: oklch(0.371 0 0);
116
+ --chart-5: oklch(0.269 0 0);
117
+ --radius: 0.875rem;
118
+ --sidebar: oklch(0.985 0 0);
119
+ --sidebar-foreground: oklch(0.145 0 0);
120
+ --sidebar-primary: oklch(0.646 0.222 41.116);
121
+ --sidebar-primary-foreground: oklch(0.98 0.016 73.684);
122
+ --sidebar-accent: oklch(0.97 0 0);
123
+ --sidebar-accent-foreground: oklch(0.205 0 0);
124
+ --sidebar-border: oklch(0.922 0 0);
125
+ --sidebar-ring: oklch(0.708 0 0);
126
+ }
127
+
128
+ .dark {
129
+ --background: oklch(0.145 0 0);
130
+ --foreground: oklch(0.985 0 0);
131
+ --card: oklch(0.205 0 0);
132
+ --card-foreground: oklch(0.985 0 0);
133
+ --popover: oklch(0.205 0 0);
134
+ --popover-foreground: oklch(0.985 0 0);
135
+ --primary: oklch(0.47 0.157 37.304);
136
+ --primary-foreground: oklch(0.98 0.016 73.684);
137
+ --secondary: oklch(0.274 0.006 286.033);
138
+ --secondary-foreground: oklch(0.985 0 0);
139
+ --muted: oklch(0.269 0 0);
140
+ --muted-foreground: oklch(0.708 0 0);
141
+ --accent: oklch(0.269 0 0);
142
+ --accent-foreground: oklch(0.985 0 0);
143
+ --destructive: oklch(0.704 0.191 22.216);
144
+ --border: oklch(1 0 0 / 10%);
145
+ --input: oklch(1 0 0 / 15%);
146
+ --ring: oklch(0.556 0 0);
147
+ --chart-1: oklch(0.87 0 0);
148
+ --chart-2: oklch(0.556 0 0);
149
+ --chart-3: oklch(0.439 0 0);
150
+ --chart-4: oklch(0.371 0 0);
151
+ --chart-5: oklch(0.269 0 0);
152
+ --sidebar: oklch(0.17 0 0);
153
+ --sidebar-foreground: oklch(0.985 0 0);
154
+ --sidebar-primary: oklch(0.705 0.213 47.604);
155
+ --sidebar-primary-foreground: oklch(0.98 0.016 73.684);
156
+ --sidebar-accent: oklch(0.23 0 0);
157
+ --sidebar-accent-foreground: oklch(0.985 0 0);
158
+ --sidebar-border: oklch(1 0 0 / 10%);
159
+ --sidebar-ring: oklch(0.556 0 0);
160
+ }
161
+
162
+ /* ── Zezura: warm desert/amber theme ── */
163
+ [data-color-scheme="zezura"] {
164
+ --primary: oklch(0.6 0.17 60);
165
+ --primary-foreground: oklch(0.15 0.02 60);
166
+ --ring: oklch(0.6 0.17 60);
167
+ --sidebar-primary: oklch(0.6 0.17 60);
168
+ --sidebar-primary-foreground: oklch(0.98 0.01 60);
169
+ --accent: oklch(0.95 0.02 70);
170
+ --accent-foreground: oklch(0.25 0.03 60);
171
+ --sidebar-accent: oklch(0.95 0.02 70);
172
+ --sidebar-accent-foreground: oklch(0.25 0.03 60);
173
+ }
174
+
175
+ .dark[data-color-scheme="zezura"] {
176
+ --background: oklch(0.16 0.01 60);
177
+ --foreground: oklch(0.96 0.01 60);
178
+ --card: oklch(0.21 0.015 60);
179
+ --card-foreground: oklch(0.96 0.01 60);
180
+ --popover: oklch(0.21 0.015 60);
181
+ --popover-foreground: oklch(0.96 0.01 60);
182
+ --primary: oklch(0.65 0.18 65);
183
+ --primary-foreground: oklch(0.15 0.02 60);
184
+ --secondary: oklch(0.28 0.015 55);
185
+ --secondary-foreground: oklch(0.96 0.01 60);
186
+ --muted: oklch(0.24 0.01 55);
187
+ --muted-foreground: oklch(0.7 0.02 60);
188
+ --accent: oklch(0.28 0.02 55);
189
+ --accent-foreground: oklch(0.96 0.01 60);
190
+ --border: oklch(1 0 0 / 12%);
191
+ --input: oklch(1 0 0 / 15%);
192
+ --ring: oklch(0.65 0.18 65);
193
+ --sidebar: oklch(0.18 0.015 60);
194
+ --sidebar-foreground: oklch(0.96 0.01 60);
195
+ --sidebar-primary: oklch(0.65 0.18 65);
196
+ --sidebar-primary-foreground: oklch(0.15 0.02 60);
197
+ --sidebar-accent: oklch(0.26 0.02 55);
198
+ --sidebar-accent-foreground: oklch(0.96 0.01 60);
199
+ --sidebar-border: oklch(1 0 0 / 10%);
200
+ --sidebar-ring: oklch(0.65 0.18 65);
201
+ }
202
+
203
+ /* ── Proteus: cool oceanic/teal theme ── */
204
+ [data-color-scheme="proteus"] {
205
+ --primary: oklch(0.55 0.15 180);
206
+ --primary-foreground: oklch(0.98 0 0);
207
+ --ring: oklch(0.55 0.15 180);
208
+ --sidebar-primary: oklch(0.55 0.15 180);
209
+ --sidebar-primary-foreground: oklch(0.98 0 0);
210
+ --accent: oklch(0.95 0.02 180);
211
+ --accent-foreground: oklch(0.25 0.03 180);
212
+ --sidebar-accent: oklch(0.95 0.02 180);
213
+ --sidebar-accent-foreground: oklch(0.25 0.03 180);
214
+ }
215
+
216
+ .dark[data-color-scheme="proteus"] {
217
+ --background: oklch(0.15 0.015 200);
218
+ --foreground: oklch(0.96 0.01 180);
219
+ --card: oklch(0.2 0.02 195);
220
+ --card-foreground: oklch(0.96 0.01 180);
221
+ --popover: oklch(0.2 0.02 195);
222
+ --popover-foreground: oklch(0.96 0.01 180);
223
+ --primary: oklch(0.6 0.14 185);
224
+ --primary-foreground: oklch(0.98 0 0);
225
+ --secondary: oklch(0.26 0.02 195);
226
+ --secondary-foreground: oklch(0.96 0.01 180);
227
+ --muted: oklch(0.24 0.015 195);
228
+ --muted-foreground: oklch(0.7 0.02 180);
229
+ --accent: oklch(0.26 0.025 190);
230
+ --accent-foreground: oklch(0.96 0.01 180);
231
+ --border: oklch(1 0 0 / 12%);
232
+ --input: oklch(1 0 0 / 15%);
233
+ --ring: oklch(0.6 0.14 185);
234
+ --sidebar: oklch(0.17 0.018 200);
235
+ --sidebar-foreground: oklch(0.96 0.01 180);
236
+ --sidebar-primary: oklch(0.6 0.14 185);
237
+ --sidebar-primary-foreground: oklch(0.98 0 0);
238
+ --sidebar-accent: oklch(0.24 0.025 190);
239
+ --sidebar-accent-foreground: oklch(0.96 0.01 180);
240
+ --sidebar-border: oklch(1 0 0 / 10%);
241
+ --sidebar-ring: oklch(0.6 0.14 185);
242
+ }
243
+
244
+ /* ── Nord: arctic north-bluish ── */
245
+ [data-color-scheme="nord"] {
246
+ --primary: oklch(0.55 0.12 250);
247
+ --primary-foreground: oklch(0.98 0 0);
248
+ --ring: oklch(0.55 0.12 250);
249
+ --sidebar-primary: oklch(0.55 0.12 250);
250
+ --sidebar-primary-foreground: oklch(0.98 0 0);
251
+ --accent: oklch(0.95 0.01 250);
252
+ --accent-foreground: oklch(0.25 0.02 250);
253
+ --sidebar-accent: oklch(0.95 0.01 250);
254
+ --sidebar-accent-foreground: oklch(0.25 0.02 250);
255
+ }
256
+ .dark[data-color-scheme="nord"] {
257
+ --background: oklch(0.17 0.015 250);
258
+ --foreground: oklch(0.93 0.01 250);
259
+ --card: oklch(0.21 0.02 250);
260
+ --card-foreground: oklch(0.93 0.01 250);
261
+ --popover: oklch(0.21 0.02 250);
262
+ --popover-foreground: oklch(0.93 0.01 250);
263
+ --primary: oklch(0.55 0.12 250);
264
+ --primary-foreground: oklch(0.98 0 0);
265
+ --secondary: oklch(0.26 0.015 250);
266
+ --secondary-foreground: oklch(0.93 0.01 250);
267
+ --muted: oklch(0.23 0.012 250);
268
+ --muted-foreground: oklch(0.7 0.02 250);
269
+ --accent: oklch(0.26 0.02 250);
270
+ --accent-foreground: oklch(0.93 0.01 250);
271
+ --border: oklch(1 0 0 / 12%);
272
+ --input: oklch(1 0 0 / 15%);
273
+ --ring: oklch(0.55 0.12 250);
274
+ --sidebar: oklch(0.19 0.018 250);
275
+ --sidebar-foreground: oklch(0.93 0.01 250);
276
+ --sidebar-primary: oklch(0.55 0.12 250);
277
+ --sidebar-primary-foreground: oklch(0.98 0 0);
278
+ --sidebar-accent: oklch(0.24 0.02 250);
279
+ --sidebar-accent-foreground: oklch(0.93 0.01 250);
280
+ --sidebar-border: oklch(1 0 0 / 10%);
281
+ --sidebar-ring: oklch(0.55 0.12 250);
282
+ }
283
+
284
+ /* ── Dracula: dark purple with vibrant accents ── */
285
+ [data-color-scheme="dracula"] {
286
+ --primary: oklch(0.65 0.2 290);
287
+ --primary-foreground: oklch(0.98 0 0);
288
+ --ring: oklch(0.65 0.2 290);
289
+ --sidebar-primary: oklch(0.65 0.2 290);
290
+ --sidebar-primary-foreground: oklch(0.98 0 0);
291
+ --accent: oklch(0.95 0.02 290);
292
+ --accent-foreground: oklch(0.25 0.03 290);
293
+ --sidebar-accent: oklch(0.95 0.02 290);
294
+ --sidebar-accent-foreground: oklch(0.25 0.03 290);
295
+ }
296
+ .dark[data-color-scheme="dracula"] {
297
+ --background: oklch(0.18 0.02 270);
298
+ --foreground: oklch(0.95 0.01 100);
299
+ --card: oklch(0.22 0.025 270);
300
+ --card-foreground: oklch(0.95 0.01 100);
301
+ --popover: oklch(0.22 0.025 270);
302
+ --popover-foreground: oklch(0.95 0.01 100);
303
+ --primary: oklch(0.65 0.2 290);
304
+ --primary-foreground: oklch(0.98 0 0);
305
+ --secondary: oklch(0.28 0.02 270);
306
+ --secondary-foreground: oklch(0.95 0.01 100);
307
+ --muted: oklch(0.25 0.015 270);
308
+ --muted-foreground: oklch(0.7 0.02 270);
309
+ --accent: oklch(0.3 0.03 270);
310
+ --accent-foreground: oklch(0.95 0.01 100);
311
+ --border: oklch(1 0 0 / 12%);
312
+ --input: oklch(1 0 0 / 15%);
313
+ --ring: oklch(0.65 0.2 290);
314
+ --sidebar: oklch(0.2 0.022 270);
315
+ --sidebar-foreground: oklch(0.95 0.01 100);
316
+ --sidebar-primary: oklch(0.65 0.2 290);
317
+ --sidebar-primary-foreground: oklch(0.98 0 0);
318
+ --sidebar-accent: oklch(0.26 0.025 270);
319
+ --sidebar-accent-foreground: oklch(0.95 0.01 100);
320
+ --sidebar-border: oklch(1 0 0 / 10%);
321
+ --sidebar-ring: oklch(0.65 0.2 290);
322
+ --destructive: oklch(0.65 0.2 0);
323
+ }
324
+
325
+ /* ── Monokai: vibrant colors on dark ── */
326
+ [data-color-scheme="monokai"] {
327
+ --primary: oklch(0.65 0.22 350);
328
+ --primary-foreground: oklch(0.98 0 0);
329
+ --ring: oklch(0.65 0.22 350);
330
+ --sidebar-primary: oklch(0.65 0.22 350);
331
+ --sidebar-primary-foreground: oklch(0.98 0 0);
332
+ --accent: oklch(0.95 0.02 350);
333
+ --accent-foreground: oklch(0.25 0.03 350);
334
+ --sidebar-accent: oklch(0.95 0.02 350);
335
+ --sidebar-accent-foreground: oklch(0.25 0.03 350);
336
+ }
337
+ .dark[data-color-scheme="monokai"] {
338
+ --background: oklch(0.16 0.01 100);
339
+ --foreground: oklch(0.95 0.01 100);
340
+ --card: oklch(0.2 0.015 100);
341
+ --card-foreground: oklch(0.95 0.01 100);
342
+ --popover: oklch(0.2 0.015 100);
343
+ --popover-foreground: oklch(0.95 0.01 100);
344
+ --primary: oklch(0.65 0.22 350);
345
+ --primary-foreground: oklch(0.98 0 0);
346
+ --secondary: oklch(0.26 0.015 100);
347
+ --secondary-foreground: oklch(0.95 0.01 100);
348
+ --muted: oklch(0.23 0.01 100);
349
+ --muted-foreground: oklch(0.7 0.02 100);
350
+ --accent: oklch(0.28 0.02 100);
351
+ --accent-foreground: oklch(0.95 0.01 100);
352
+ --border: oklch(1 0 0 / 12%);
353
+ --input: oklch(1 0 0 / 15%);
354
+ --ring: oklch(0.65 0.22 350);
355
+ --sidebar: oklch(0.18 0.012 100);
356
+ --sidebar-foreground: oklch(0.95 0.01 100);
357
+ --sidebar-primary: oklch(0.65 0.22 350);
358
+ --sidebar-primary-foreground: oklch(0.98 0 0);
359
+ --sidebar-accent: oklch(0.25 0.02 100);
360
+ --sidebar-accent-foreground: oklch(0.95 0.01 100);
361
+ --sidebar-border: oklch(1 0 0 / 10%);
362
+ --sidebar-ring: oklch(0.65 0.22 350);
363
+ }
364
+
365
+ /* ── Solarized Light ── */
366
+ [data-color-scheme="solarized-light"] {
367
+ --primary: oklch(0.55 0.12 230);
368
+ --primary-foreground: oklch(0.98 0 0);
369
+ --ring: oklch(0.55 0.12 230);
370
+ --sidebar-primary: oklch(0.55 0.12 230);
371
+ --sidebar-primary-foreground: oklch(0.98 0 0);
372
+ --accent: oklch(0.95 0.02 230);
373
+ --accent-foreground: oklch(0.25 0.02 230);
374
+ --sidebar-accent: oklch(0.95 0.02 230);
375
+ --sidebar-accent-foreground: oklch(0.25 0.02 230);
376
+ }
377
+
378
+ /* ── Solarized Dark ── */
379
+ .dark[data-color-scheme="solarized-dark"] {
380
+ --background: oklch(0.18 0.02 200);
381
+ --foreground: oklch(0.9 0.01 80);
382
+ --card: oklch(0.22 0.025 200);
383
+ --card-foreground: oklch(0.9 0.01 80);
384
+ --popover: oklch(0.22 0.025 200);
385
+ --popover-foreground: oklch(0.9 0.01 80);
386
+ --primary: oklch(0.55 0.12 230);
387
+ --primary-foreground: oklch(0.98 0 0);
388
+ --secondary: oklch(0.26 0.02 200);
389
+ --secondary-foreground: oklch(0.9 0.01 80);
390
+ --muted: oklch(0.24 0.015 200);
391
+ --muted-foreground: oklch(0.65 0.02 200);
392
+ --accent: oklch(0.28 0.025 200);
393
+ --accent-foreground: oklch(0.9 0.01 80);
394
+ --border: oklch(1 0 0 / 12%);
395
+ --input: oklch(1 0 0 / 15%);
396
+ --ring: oklch(0.55 0.12 230);
397
+ --sidebar: oklch(0.2 0.022 200);
398
+ --sidebar-foreground: oklch(0.9 0.01 80);
399
+ --sidebar-primary: oklch(0.55 0.12 230);
400
+ --sidebar-primary-foreground: oklch(0.98 0 0);
401
+ --sidebar-accent: oklch(0.24 0.025 200);
402
+ --sidebar-accent-foreground: oklch(0.9 0.01 80);
403
+ --sidebar-border: oklch(1 0 0 / 10%);
404
+ --sidebar-ring: oklch(0.55 0.12 230);
405
+ }
406
+
407
+ /* ── Gruvbox: retro groove warm ── */
408
+ [data-color-scheme="gruvbox"] {
409
+ --primary: oklch(0.7 0.14 50);
410
+ --primary-foreground: oklch(0.15 0.02 50);
411
+ --ring: oklch(0.7 0.14 50);
412
+ --sidebar-primary: oklch(0.7 0.14 50);
413
+ --sidebar-primary-foreground: oklch(0.15 0.02 50);
414
+ --accent: oklch(0.95 0.02 50);
415
+ --accent-foreground: oklch(0.25 0.03 50);
416
+ --sidebar-accent: oklch(0.95 0.02 50);
417
+ --sidebar-accent-foreground: oklch(0.25 0.03 50);
418
+ }
419
+ .dark[data-color-scheme="gruvbox"] {
420
+ --background: oklch(0.18 0.015 60);
421
+ --foreground: oklch(0.9 0.02 80);
422
+ --card: oklch(0.22 0.02 60);
423
+ --card-foreground: oklch(0.9 0.02 80);
424
+ --popover: oklch(0.22 0.02 60);
425
+ --popover-foreground: oklch(0.9 0.02 80);
426
+ --primary: oklch(0.7 0.14 50);
427
+ --primary-foreground: oklch(0.15 0.02 50);
428
+ --secondary: oklch(0.28 0.02 60);
429
+ --secondary-foreground: oklch(0.9 0.02 80);
430
+ --muted: oklch(0.25 0.015 60);
431
+ --muted-foreground: oklch(0.7 0.02 60);
432
+ --accent: oklch(0.3 0.025 60);
433
+ --accent-foreground: oklch(0.9 0.02 80);
434
+ --border: oklch(1 0 0 / 12%);
435
+ --input: oklch(1 0 0 / 15%);
436
+ --ring: oklch(0.7 0.14 50);
437
+ --sidebar: oklch(0.2 0.018 60);
438
+ --sidebar-foreground: oklch(0.9 0.02 80);
439
+ --sidebar-primary: oklch(0.7 0.14 50);
440
+ --sidebar-primary-foreground: oklch(0.15 0.02 50);
441
+ --sidebar-accent: oklch(0.26 0.025 60);
442
+ --sidebar-accent-foreground: oklch(0.9 0.02 80);
443
+ --sidebar-border: oklch(1 0 0 / 10%);
444
+ --sidebar-ring: oklch(0.7 0.14 50);
445
+ }
446
+
447
+ /* ── Catppuccin: soft pastel ── */
448
+ [data-color-scheme="catppuccin"] {
449
+ --primary: oklch(0.65 0.18 300);
450
+ --primary-foreground: oklch(0.98 0 0);
451
+ --ring: oklch(0.65 0.18 300);
452
+ --sidebar-primary: oklch(0.65 0.18 300);
453
+ --sidebar-primary-foreground: oklch(0.98 0 0);
454
+ --accent: oklch(0.95 0.02 300);
455
+ --accent-foreground: oklch(0.25 0.03 300);
456
+ --sidebar-accent: oklch(0.95 0.02 300);
457
+ --sidebar-accent-foreground: oklch(0.25 0.03 300);
458
+ }
459
+ .dark[data-color-scheme="catppuccin"] {
460
+ --background: oklch(0.18 0.02 280);
461
+ --foreground: oklch(0.9 0.01 260);
462
+ --card: oklch(0.22 0.025 280);
463
+ --card-foreground: oklch(0.9 0.01 260);
464
+ --popover: oklch(0.22 0.025 280);
465
+ --popover-foreground: oklch(0.9 0.01 260);
466
+ --primary: oklch(0.65 0.18 300);
467
+ --primary-foreground: oklch(0.98 0 0);
468
+ --secondary: oklch(0.28 0.02 280);
469
+ --secondary-foreground: oklch(0.9 0.01 260);
470
+ --muted: oklch(0.25 0.015 280);
471
+ --muted-foreground: oklch(0.7 0.02 280);
472
+ --accent: oklch(0.28 0.03 280);
473
+ --accent-foreground: oklch(0.9 0.01 260);
474
+ --border: oklch(1 0 0 / 12%);
475
+ --input: oklch(1 0 0 / 15%);
476
+ --ring: oklch(0.65 0.18 300);
477
+ --sidebar: oklch(0.2 0.022 280);
478
+ --sidebar-foreground: oklch(0.9 0.01 260);
479
+ --sidebar-primary: oklch(0.65 0.18 300);
480
+ --sidebar-primary-foreground: oklch(0.98 0 0);
481
+ --sidebar-accent: oklch(0.26 0.025 280);
482
+ --sidebar-accent-foreground: oklch(0.9 0.01 260);
483
+ --sidebar-border: oklch(1 0 0 / 10%);
484
+ --sidebar-ring: oklch(0.65 0.18 300);
485
+ }
486
+
487
+ /* ── Rose Pine ── */
488
+ [data-color-scheme="rose-pine"] {
489
+ --primary: oklch(0.65 0.1 10);
490
+ --primary-foreground: oklch(0.98 0 0);
491
+ --ring: oklch(0.65 0.1 10);
492
+ --sidebar-primary: oklch(0.65 0.1 10);
493
+ --sidebar-primary-foreground: oklch(0.98 0 0);
494
+ --accent: oklch(0.95 0.01 300);
495
+ --accent-foreground: oklch(0.25 0.02 300);
496
+ --sidebar-accent: oklch(0.95 0.01 300);
497
+ --sidebar-accent-foreground: oklch(0.25 0.02 300);
498
+ }
499
+ .dark[data-color-scheme="rose-pine"] {
500
+ --background: oklch(0.16 0.02 280);
501
+ --foreground: oklch(0.9 0.02 280);
502
+ --card: oklch(0.2 0.025 280);
503
+ --card-foreground: oklch(0.9 0.02 280);
504
+ --popover: oklch(0.2 0.025 280);
505
+ --popover-foreground: oklch(0.9 0.02 280);
506
+ --primary: oklch(0.65 0.1 10);
507
+ --primary-foreground: oklch(0.98 0 0);
508
+ --secondary: oklch(0.26 0.02 280);
509
+ --secondary-foreground: oklch(0.9 0.02 280);
510
+ --muted: oklch(0.24 0.015 280);
511
+ --muted-foreground: oklch(0.7 0.02 280);
512
+ --accent: oklch(0.28 0.025 280);
513
+ --accent-foreground: oklch(0.9 0.02 280);
514
+ --border: oklch(1 0 0 / 12%);
515
+ --input: oklch(1 0 0 / 15%);
516
+ --ring: oklch(0.65 0.1 10);
517
+ --sidebar: oklch(0.18 0.022 280);
518
+ --sidebar-foreground: oklch(0.9 0.02 280);
519
+ --sidebar-primary: oklch(0.65 0.1 10);
520
+ --sidebar-primary-foreground: oklch(0.98 0 0);
521
+ --sidebar-accent: oklch(0.26 0.025 280);
522
+ --sidebar-accent-foreground: oklch(0.9 0.02 280);
523
+ --sidebar-border: oklch(1 0 0 / 10%);
524
+ --sidebar-ring: oklch(0.65 0.1 10);
525
+ }
526
+
527
+ /* ── Tokyo Night ── */
528
+ [data-color-scheme="tokyo-night"] {
529
+ --primary: oklch(0.6 0.15 250);
530
+ --primary-foreground: oklch(0.98 0 0);
531
+ --ring: oklch(0.6 0.15 250);
532
+ --sidebar-primary: oklch(0.6 0.15 250);
533
+ --sidebar-primary-foreground: oklch(0.98 0 0);
534
+ --accent: oklch(0.95 0.01 250);
535
+ --accent-foreground: oklch(0.25 0.02 250);
536
+ --sidebar-accent: oklch(0.95 0.01 250);
537
+ --sidebar-accent-foreground: oklch(0.25 0.02 250);
538
+ }
539
+ .dark[data-color-scheme="tokyo-night"] {
540
+ --background: oklch(0.15 0.02 260);
541
+ --foreground: oklch(0.92 0.01 260);
542
+ --card: oklch(0.19 0.025 260);
543
+ --card-foreground: oklch(0.92 0.01 260);
544
+ --popover: oklch(0.19 0.025 260);
545
+ --popover-foreground: oklch(0.92 0.01 260);
546
+ --primary: oklch(0.6 0.15 250);
547
+ --primary-foreground: oklch(0.98 0 0);
548
+ --secondary: oklch(0.25 0.02 260);
549
+ --secondary-foreground: oklch(0.92 0.01 260);
550
+ --muted: oklch(0.22 0.015 260);
551
+ --muted-foreground: oklch(0.7 0.02 260);
552
+ --accent: oklch(0.26 0.025 260);
553
+ --accent-foreground: oklch(0.92 0.01 260);
554
+ --border: oklch(1 0 0 / 12%);
555
+ --input: oklch(1 0 0 / 15%);
556
+ --ring: oklch(0.6 0.15 250);
557
+ --sidebar: oklch(0.17 0.022 260);
558
+ --sidebar-foreground: oklch(0.92 0.01 260);
559
+ --sidebar-primary: oklch(0.6 0.15 250);
560
+ --sidebar-primary-foreground: oklch(0.98 0 0);
561
+ --sidebar-accent: oklch(0.24 0.025 260);
562
+ --sidebar-accent-foreground: oklch(0.92 0.01 260);
563
+ --sidebar-border: oklch(1 0 0 / 10%);
564
+ --sidebar-ring: oklch(0.6 0.15 250);
565
+ }
566
+
567
+ @layer base {
568
+ * {
569
+ @apply border-border outline-ring/50;
570
+ }
571
+ body {
572
+ @apply bg-background text-foreground;
573
+ }
574
+ button:not(:disabled), [role="button"]:not(:disabled) {
575
+ cursor: pointer;
576
+ }
577
+ }
578
+
579
+ /* Collapsed sidebar (non-inset variant) matches app background */
580
+ [data-variant="sidebar"][data-state="collapsed"] [data-slot="sidebar-inner"],
581
+ [data-variant="sidebar"][data-state="collapsed"] [data-slot="sidebar-container"] {
582
+ background-color: var(--background) !important;
583
+ border-color: transparent !important;
584
+ box-shadow: none !important;
585
+ outline: none !important;
586
+ }
587
+
588
+ /* Inset variant: keep sidebar styling visible on collapse */
589
+ [data-variant="inset"][data-state="collapsed"] [data-slot="sidebar-container"] {
590
+ background-color: var(--sidebar) !important;
591
+ border-color: var(--sidebar-border) !important;
592
+ }
593
+ [data-variant="inset"][data-state="collapsed"] [data-slot="sidebar-inner"] {
594
+ background-color: var(--sidebar) !important;
595
+ }
596
+ [data-variant="inset"][data-state="expanded"] [data-slot="sidebar-container"] {
597
+ background-color: var(--sidebar) !important;
598
+ border-color: var(--sidebar-border) !important;
599
+ }
600
+ [data-variant="inset"][data-state="expanded"] [data-slot="sidebar-inner"] {
601
+ background-color: var(--sidebar) !important;
602
+ }
603
+
604
+ /* 3D Toast styling */
605
+ .cn-toast {
606
+ position: relative;
607
+ border-radius: var(--radius-4xl) !important;
608
+ box-shadow:
609
+ inset 0 1px 0 0 rgba(255,255,255,0.1),
610
+ inset 0 -2px 0 0 rgba(0,0,0,0.1),
611
+ 0 0 0 1px rgba(0,0,0,0.05),
612
+ 0 2px 0 0 rgba(0,0,0,0.08),
613
+ 0 4px 0 0 rgba(0,0,0,0.06),
614
+ 0 6px 0 0 rgba(0,0,0,0.04),
615
+ 0 8px 0 0 rgba(0,0,0,0.02),
616
+ 0 12px 24px -4px rgba(0,0,0,0.08),
617
+ 0 1px 3px rgba(0,0,0,0.06) !important;
618
+ border: 1px solid var(--border) !important;
619
+ transform-origin: top center !important;
620
+ }
621
+
622
+ .cn-toast::before {
623
+ content: '';
624
+ position: absolute;
625
+ inset: 0;
626
+ border-radius: inherit;
627
+ background: linear-gradient(
628
+ 180deg,
629
+ oklch(1 0 0 / 0.06) 0%,
630
+ oklch(1 0 0 / 0) 40%,
631
+ oklch(0 0 0 / 0.02) 100%
632
+ );
633
+ pointer-events: none;
634
+ z-index: 1;
635
+ }
636
+
637
+ .dark .cn-toast {
638
+ box-shadow:
639
+ inset 0 1px 0 0 rgba(255,255,255,0.06),
640
+ inset 0 -2px 0 0 rgba(0,0,0,0.2),
641
+ 0 0 0 1px rgba(255,255,255,0.03),
642
+ 0 2px 0 0 rgba(0,0,0,0.2),
643
+ 0 4px 0 0 rgba(0,0,0,0.15),
644
+ 0 6px 0 0 rgba(0,0,0,0.1),
645
+ 0 8px 0 0 rgba(0,0,0,0.05),
646
+ 0 12px 24px -4px rgba(0,0,0,0.3),
647
+ 0 1px 3px rgba(0,0,0,0.2) !important;
648
+ }
649
+
650
+ .cn-toast[data-focused="true"],
651
+ .cn-toast:active {
652
+ transform: none !important;
653
+ transition: none !important;
654
+ }