@fakhrirafiki/theme-engine 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/index.js ADDED
@@ -0,0 +1,4696 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+
20
+ // src/index.ts
21
+ var index_exports = {};
22
+ __export(index_exports, {
23
+ ThemePresetButtons: () => ThemePresetButtons,
24
+ ThemeProvider: () => ThemeProvider,
25
+ ThemeScript: () => ThemeScript,
26
+ ThemeToggle: () => ThemeToggle,
27
+ formatColor: () => formatColor,
28
+ getPresetById: () => getPresetById,
29
+ getPresetEntries: () => getPresetEntries,
30
+ getPresetIds: () => getPresetIds,
31
+ getPresetLabels: () => getPresetLabels,
32
+ getPresetsCount: () => getPresetsCount,
33
+ logValidationResult: () => logValidationResult,
34
+ searchPresets: () => searchPresets,
35
+ tweakcnPresets: () => tweakcnPresets,
36
+ useTheme: () => useTheme,
37
+ validateCustomPresets: () => validateCustomPresets,
38
+ validateTweakCNPreset: () => validateTweakCNPreset,
39
+ withAlpha: () => withAlpha
40
+ });
41
+ module.exports = __toCommonJS(index_exports);
42
+
43
+ // src/providers/UnifiedThemeProvider.tsx
44
+ var import_react = require("react");
45
+
46
+ // src/types/presets.ts
47
+ var CSS_PROPERTY_CATEGORIES = {
48
+ colors: [
49
+ "background",
50
+ "foreground",
51
+ "card",
52
+ "card-foreground",
53
+ "popover",
54
+ "popover-foreground",
55
+ "primary",
56
+ "primary-foreground",
57
+ "secondary",
58
+ "secondary-foreground",
59
+ "muted",
60
+ "muted-foreground",
61
+ "accent",
62
+ "accent-foreground",
63
+ "destructive",
64
+ "destructive-foreground",
65
+ "border",
66
+ "input",
67
+ "ring",
68
+ "chart-1",
69
+ "chart-2",
70
+ "chart-3",
71
+ "chart-4",
72
+ "chart-5",
73
+ "sidebar",
74
+ "sidebar-foreground",
75
+ "sidebar-primary",
76
+ "sidebar-primary-foreground",
77
+ "sidebar-accent",
78
+ "sidebar-accent-foreground",
79
+ "sidebar-border",
80
+ "sidebar-ring"
81
+ ],
82
+ typography: [
83
+ "font-sans",
84
+ "font-serif",
85
+ "font-mono"
86
+ ],
87
+ layout: [
88
+ "radius"
89
+ ],
90
+ shadows: [
91
+ "shadow-color",
92
+ "shadow-opacity",
93
+ "shadow-blur",
94
+ "shadow-spread",
95
+ "shadow-offset-x",
96
+ "shadow-offset-y"
97
+ ],
98
+ spacing: [
99
+ "letter-spacing",
100
+ "spacing"
101
+ ]
102
+ };
103
+ var ALL_CSS_PROPERTIES = [
104
+ ...CSS_PROPERTY_CATEGORIES.colors,
105
+ ...CSS_PROPERTY_CATEGORIES.typography,
106
+ ...CSS_PROPERTY_CATEGORIES.layout,
107
+ ...CSS_PROPERTY_CATEGORIES.shadows,
108
+ ...CSS_PROPERTY_CATEGORIES.spacing
109
+ ];
110
+
111
+ // src/data/tweakcn-presets.ts
112
+ var tweakcnPresets = {
113
+ "modern-minimal": {
114
+ label: "Modern Minimal",
115
+ styles: {
116
+ light: {
117
+ background: "#ffffff",
118
+ foreground: "#333333",
119
+ card: "#ffffff",
120
+ "card-foreground": "#333333",
121
+ popover: "#ffffff",
122
+ "popover-foreground": "#333333",
123
+ primary: "#3b82f6",
124
+ "primary-foreground": "#ffffff",
125
+ secondary: "#f3f4f6",
126
+ "secondary-foreground": "#4b5563",
127
+ muted: "#f9fafb",
128
+ "muted-foreground": "#6b7280",
129
+ accent: "#e0f2fe",
130
+ "accent-foreground": "#1e3a8a",
131
+ destructive: "#ef4444",
132
+ "destructive-foreground": "#ffffff",
133
+ border: "#e5e7eb",
134
+ input: "#e5e7eb",
135
+ ring: "#3b82f6",
136
+ "chart-1": "#3b82f6",
137
+ "chart-2": "#2563eb",
138
+ "chart-3": "#1d4ed8",
139
+ "chart-4": "#1e40af",
140
+ "chart-5": "#1e3a8a",
141
+ radius: "0.375rem",
142
+ sidebar: "#f9fafb",
143
+ "sidebar-foreground": "#333333",
144
+ "sidebar-primary": "#3b82f6",
145
+ "sidebar-primary-foreground": "#ffffff",
146
+ "sidebar-accent": "#e0f2fe",
147
+ "sidebar-accent-foreground": "#1e3a8a",
148
+ "sidebar-border": "#e5e7eb",
149
+ "sidebar-ring": "#3b82f6",
150
+ "font-sans": "Inter, sans-serif",
151
+ "font-serif": "Source Serif 4, serif",
152
+ "font-mono": "JetBrains Mono, monospace"
153
+ },
154
+ dark: {
155
+ background: "#171717",
156
+ foreground: "#e5e5e5",
157
+ card: "#262626",
158
+ "card-foreground": "#e5e5e5",
159
+ popover: "#262626",
160
+ "popover-foreground": "#e5e5e5",
161
+ primary: "#3b82f6",
162
+ "primary-foreground": "#ffffff",
163
+ secondary: "#262626",
164
+ "secondary-foreground": "#e5e5e5",
165
+ muted: "#262626",
166
+ "muted-foreground": "#a3a3a3",
167
+ accent: "#1e3a8a",
168
+ "accent-foreground": "#bfdbfe",
169
+ destructive: "#ef4444",
170
+ "destructive-foreground": "#ffffff",
171
+ border: "#404040",
172
+ input: "#404040",
173
+ ring: "#3b82f6",
174
+ "chart-1": "#60a5fa",
175
+ "chart-2": "#3b82f6",
176
+ "chart-3": "#2563eb",
177
+ "chart-4": "#1d4ed8",
178
+ "chart-5": "#1e40af",
179
+ radius: "0.375rem",
180
+ sidebar: "#171717",
181
+ "sidebar-foreground": "#e5e5e5",
182
+ "sidebar-primary": "#3b82f6",
183
+ "sidebar-primary-foreground": "#ffffff",
184
+ "sidebar-accent": "#1e3a8a",
185
+ "sidebar-accent-foreground": "#bfdbfe",
186
+ "sidebar-border": "#404040",
187
+ "sidebar-ring": "#3b82f6"
188
+ }
189
+ }
190
+ },
191
+ "violet-bloom": {
192
+ label: "Violet Bloom",
193
+ createdAt: "2025-06-26",
194
+ styles: {
195
+ light: {
196
+ background: "#fdfdfd",
197
+ foreground: "#000000",
198
+ card: "#fdfdfd",
199
+ "card-foreground": "#000000",
200
+ popover: "#fcfcfc",
201
+ "popover-foreground": "#000000",
202
+ primary: "#7033ff",
203
+ "primary-foreground": "#ffffff",
204
+ secondary: "#edf0f4",
205
+ "secondary-foreground": "#080808",
206
+ muted: "#f5f5f5",
207
+ "muted-foreground": "#525252",
208
+ accent: "#e2ebff",
209
+ "accent-foreground": "#1e69dc",
210
+ destructive: "#e54b4f",
211
+ "destructive-foreground": "#ffffff",
212
+ border: "#e7e7ee",
213
+ input: "#ebebeb",
214
+ ring: "#000000",
215
+ "chart-1": "#4ac885",
216
+ "chart-2": "#7033ff",
217
+ "chart-3": "#fd822b",
218
+ "chart-4": "#3276e4",
219
+ "chart-5": "#747474",
220
+ sidebar: "#f5f8fb",
221
+ "sidebar-foreground": "#000000",
222
+ "sidebar-primary": "#000000",
223
+ "sidebar-primary-foreground": "#ffffff",
224
+ "sidebar-accent": "#ebebeb",
225
+ "sidebar-accent-foreground": "#000000",
226
+ "sidebar-border": "#ebebeb",
227
+ "sidebar-ring": "#000000",
228
+ "font-sans": "Plus Jakarta Sans, sans-serif",
229
+ "font-serif": "Lora, serif",
230
+ "font-mono": "IBM Plex Mono, monospace",
231
+ radius: "1.4rem",
232
+ "shadow-color": "hsl(0 0% 0%)",
233
+ "shadow-opacity": "0.16",
234
+ "shadow-blur": "3px",
235
+ "shadow-spread": "0px",
236
+ "shadow-offset-x": "0px",
237
+ "shadow-offset-y": "2px",
238
+ "letter-spacing": "-0.025em",
239
+ spacing: "0.27rem"
240
+ },
241
+ dark: {
242
+ background: "#1a1b1e",
243
+ foreground: "#f0f0f0",
244
+ card: "#222327",
245
+ "card-foreground": "#f0f0f0",
246
+ popover: "#222327",
247
+ "popover-foreground": "#f0f0f0",
248
+ primary: "#8c5cff",
249
+ "primary-foreground": "#ffffff",
250
+ secondary: "#2a2c33",
251
+ "secondary-foreground": "#f0f0f0",
252
+ muted: "#2a2c33",
253
+ "muted-foreground": "#a0a0a0",
254
+ accent: "#1e293b",
255
+ "accent-foreground": "#79c0ff",
256
+ destructive: "#f87171",
257
+ "destructive-foreground": "#ffffff",
258
+ border: "#33353a",
259
+ input: "#33353a",
260
+ ring: "#8c5cff",
261
+ "chart-1": "#4ade80",
262
+ "chart-2": "#8c5cff",
263
+ "chart-3": "#fca5a5",
264
+ "chart-4": "#5993f4",
265
+ "chart-5": "#a0a0a0",
266
+ sidebar: "#161618",
267
+ "sidebar-foreground": "#f0f0f0",
268
+ "sidebar-primary": "#8c5cff",
269
+ "sidebar-primary-foreground": "#ffffff",
270
+ "sidebar-accent": "#2a2c33",
271
+ "sidebar-accent-foreground": "#8c5cff",
272
+ "sidebar-border": "#33353a",
273
+ "sidebar-ring": "#8c5cff",
274
+ "font-sans": "Plus Jakarta Sans, sans-serif",
275
+ "font-serif": "Lora, serif",
276
+ "font-mono": "IBM Plex Mono, monospace",
277
+ radius: "1.4rem",
278
+ "shadow-color": "hsl(0 0% 0%)",
279
+ "shadow-opacity": "0.16",
280
+ "shadow-blur": "3px",
281
+ "shadow-spread": "0px",
282
+ "shadow-offset-x": "0px",
283
+ "shadow-offset-y": "2px",
284
+ "letter-spacing": "-0.025em",
285
+ spacing: "0.27rem"
286
+ }
287
+ }
288
+ },
289
+ "t3-chat": {
290
+ label: "T3 Chat",
291
+ createdAt: "2025-04-19",
292
+ styles: {
293
+ light: {
294
+ background: "#faf5fa",
295
+ foreground: "#501854",
296
+ card: "#faf5fa",
297
+ "card-foreground": "#501854",
298
+ popover: "#ffffff",
299
+ "popover-foreground": "#501854",
300
+ primary: "#a84370",
301
+ "primary-foreground": "#ffffff",
302
+ secondary: "#f1c4e6",
303
+ "secondary-foreground": "#77347c",
304
+ muted: "#f6e5f3",
305
+ "muted-foreground": "#834588",
306
+ accent: "#f1c4e6",
307
+ "accent-foreground": "#77347c",
308
+ destructive: "#ab4347",
309
+ "destructive-foreground": "#ffffff",
310
+ border: "#efbdeb",
311
+ input: "#e7c1dc",
312
+ ring: "#db2777",
313
+ "chart-1": "#d926a2",
314
+ "chart-2": "#6c12b9",
315
+ "chart-3": "#274754",
316
+ "chart-4": "#e8c468",
317
+ "chart-5": "#f4a462",
318
+ sidebar: "#f3e4f6",
319
+ "sidebar-foreground": "#ac1668",
320
+ "sidebar-primary": "#454554",
321
+ "sidebar-primary-foreground": "#faf1f7",
322
+ "sidebar-accent": "#f8f8f7",
323
+ "sidebar-accent-foreground": "#454554",
324
+ "sidebar-border": "#eceae9",
325
+ "sidebar-ring": "#db2777",
326
+ radius: "0.5rem"
327
+ },
328
+ dark: {
329
+ background: "#221d27",
330
+ foreground: "#d2c4de",
331
+ card: "#2c2632",
332
+ "card-foreground": "#dbc5d2",
333
+ popover: "#100a0e",
334
+ "popover-foreground": "#f8f1f5",
335
+ primary: "#a3004c",
336
+ "primary-foreground": "#efc0d8",
337
+ secondary: "#362d3d",
338
+ "secondary-foreground": "#d4c7e1",
339
+ muted: "#28222d",
340
+ "muted-foreground": "#c2b6cf",
341
+ accent: "#463753",
342
+ "accent-foreground": "#f8f1f5",
343
+ destructive: "#301015",
344
+ "destructive-foreground": "#ffffff",
345
+ border: "#3b3237",
346
+ input: "#3e343c",
347
+ ring: "#db2777",
348
+ "chart-1": "#a84370",
349
+ "chart-2": "#934dcb",
350
+ "chart-3": "#e88c30",
351
+ "chart-4": "#af57db",
352
+ "chart-5": "#e23670",
353
+ sidebar: "#181117",
354
+ "sidebar-foreground": "#e0cad6",
355
+ "sidebar-primary": "#1d4ed8",
356
+ "sidebar-primary-foreground": "#ffffff",
357
+ "sidebar-accent": "#261922",
358
+ "sidebar-accent-foreground": "#f4f4f5",
359
+ "sidebar-border": "#000000",
360
+ "sidebar-ring": "#db2777"
361
+ }
362
+ }
363
+ },
364
+ twitter: {
365
+ label: "Twitter",
366
+ createdAt: "2025-04-24",
367
+ styles: {
368
+ light: {
369
+ background: "#ffffff",
370
+ foreground: "#0f1419",
371
+ card: "#f7f8f8",
372
+ "card-foreground": "#0f1419",
373
+ popover: "#ffffff",
374
+ "popover-foreground": "#0f1419",
375
+ primary: "#1e9df1",
376
+ "primary-foreground": "#ffffff",
377
+ secondary: "#0f1419",
378
+ "secondary-foreground": "#ffffff",
379
+ muted: "#E5E5E6",
380
+ "muted-foreground": "#0f1419",
381
+ accent: "#E3ECF6",
382
+ "accent-foreground": "#1e9df1",
383
+ destructive: "#f4212e",
384
+ "destructive-foreground": "#ffffff",
385
+ border: "#e1eaef",
386
+ input: "#f7f9fa",
387
+ ring: "#1da1f2",
388
+ "chart-1": "#1e9df1",
389
+ "chart-2": "#00b87a",
390
+ "chart-3": "#f7b928",
391
+ "chart-4": "#17bf63",
392
+ "chart-5": "#e0245e",
393
+ sidebar: "#f7f8f8",
394
+ "sidebar-foreground": "#0f1419",
395
+ "sidebar-primary": "#1e9df1",
396
+ "sidebar-primary-foreground": "#ffffff",
397
+ "sidebar-accent": "#E3ECF6",
398
+ "sidebar-accent-foreground": "#1e9df1",
399
+ "sidebar-border": "#e1e8ed",
400
+ "sidebar-ring": "#1da1f2",
401
+ "font-sans": "Open Sans, sans-serif",
402
+ "font-serif": "Georgia, serif",
403
+ "font-mono": "Menlo, monospace",
404
+ radius: "1.3rem",
405
+ "shadow-color": "rgba(29,161,242,0.15)",
406
+ "shadow-opacity": "0",
407
+ "shadow-blur": "0px",
408
+ "shadow-spread": "0px",
409
+ "shadow-offset-x": "0px",
410
+ "shadow-offset-y": "2px"
411
+ },
412
+ dark: {
413
+ background: "#000000",
414
+ foreground: "#e7e9ea",
415
+ card: "#17181c",
416
+ "card-foreground": "#d9d9d9",
417
+ popover: "#000000",
418
+ "popover-foreground": "#e7e9ea",
419
+ primary: "#1c9cf0",
420
+ "primary-foreground": "#ffffff",
421
+ secondary: "#f0f3f4",
422
+ "secondary-foreground": "#0f1419",
423
+ muted: "#181818",
424
+ "muted-foreground": "#72767a",
425
+ accent: "#061622",
426
+ "accent-foreground": "#1c9cf0",
427
+ destructive: "#f4212e",
428
+ "destructive-foreground": "#ffffff",
429
+ border: "#242628",
430
+ input: "#22303c",
431
+ ring: "#1da1f2",
432
+ "chart-1": "#1e9df1",
433
+ "chart-2": "#00b87a",
434
+ "chart-3": "#f7b928",
435
+ "chart-4": "#17bf63",
436
+ "chart-5": "#e0245e",
437
+ sidebar: "#17181c",
438
+ "sidebar-foreground": "#d9d9d9",
439
+ "sidebar-primary": "#1da1f2",
440
+ "sidebar-primary-foreground": "#ffffff",
441
+ "sidebar-accent": "#061622",
442
+ "sidebar-accent-foreground": "#1c9cf0",
443
+ "sidebar-border": "#38444d",
444
+ "sidebar-ring": "#1da1f2",
445
+ "shadow-color": "rgba(29,161,242,0.25)"
446
+ }
447
+ }
448
+ },
449
+ "mocha-mousse": {
450
+ label: "Mocha Mousse",
451
+ createdAt: "2025-04-24",
452
+ styles: {
453
+ light: {
454
+ background: "#F1F0E5",
455
+ foreground: "#56453F",
456
+ card: "#F1F0E5",
457
+ "card-foreground": "#56453F",
458
+ popover: "#FFFFFF",
459
+ "popover-foreground": "#56453F",
460
+ primary: "#A37764",
461
+ "primary-foreground": "#FFFFFF",
462
+ secondary: "#BAAB92",
463
+ "secondary-foreground": "#ffffff",
464
+ muted: "#E4C7B8",
465
+ "muted-foreground": "#8A655A",
466
+ accent: "#E4C7B8",
467
+ "accent-foreground": "#56453F",
468
+ destructive: "#1f1a17",
469
+ "destructive-foreground": "#FFFFFF",
470
+ border: "#BAAB92",
471
+ input: "#BAAB92",
472
+ ring: "#A37764",
473
+ "chart-1": "#A37764",
474
+ "chart-2": "#8A655A",
475
+ "chart-3": "#C39E88",
476
+ "chart-4": "#BAAB92",
477
+ "chart-5": "#A28777",
478
+ sidebar: "#ebd6cb",
479
+ "sidebar-foreground": "#56453F",
480
+ "sidebar-primary": "#A37764",
481
+ "sidebar-primary-foreground": "#FFFFFF",
482
+ "sidebar-accent": "#C39E88",
483
+ "sidebar-accent-foreground": "#ffffff",
484
+ "sidebar-border": "#A28777",
485
+ "sidebar-ring": "#A37764",
486
+ "font-sans": "DM Sans, sans-serif",
487
+ "font-serif": "Georgia, serif",
488
+ "font-mono": "Menlo, monospace",
489
+ radius: "0.5rem",
490
+ "shadow-color": "hsl(20 18% 51% / 0.4)",
491
+ "shadow-opacity": "0.11",
492
+ "shadow-blur": "0px",
493
+ "shadow-spread": "0px",
494
+ "shadow-offset-x": "2px",
495
+ "shadow-offset-y": "2px"
496
+ },
497
+ dark: {
498
+ background: "#2d2521",
499
+ foreground: "#F1F0E5",
500
+ card: "#3c332e",
501
+ "card-foreground": "#F1F0E5",
502
+ popover: "#3c332e",
503
+ "popover-foreground": "#F1F0E5",
504
+ primary: "#C39E88",
505
+ "primary-foreground": "#2d2521",
506
+ secondary: "#8A655A",
507
+ "secondary-foreground": "#F1F0E5",
508
+ muted: "#56453F",
509
+ "muted-foreground": "#c5aa9b",
510
+ accent: "#BAAB92",
511
+ "accent-foreground": "#2d2521",
512
+ destructive: "#E57373",
513
+ "destructive-foreground": "#2d2521",
514
+ border: "#56453F",
515
+ input: "#56453F",
516
+ ring: "#C39E88",
517
+ "chart-1": "#C39E88",
518
+ "chart-2": "#BAAB92",
519
+ "chart-3": "#A37764",
520
+ "chart-4": "#8A655A",
521
+ "chart-5": "#A28777",
522
+ sidebar: "#1f1a17",
523
+ "sidebar-foreground": "#F1F0E5",
524
+ "sidebar-primary": "#C39E88",
525
+ "sidebar-primary-foreground": "#1f1a17",
526
+ "sidebar-accent": "#BAAB92",
527
+ "sidebar-accent-foreground": "#1f1a17",
528
+ "sidebar-border": "#56453F",
529
+ "sidebar-ring": "#C39E88",
530
+ "shadow-color": "hsl(20 18% 30% / 0.5)"
531
+ }
532
+ }
533
+ },
534
+ bubblegum: {
535
+ label: "Bubblegum",
536
+ createdAt: "2025-04-18",
537
+ styles: {
538
+ light: {
539
+ background: "#f6e6ee",
540
+ foreground: "#5b5b5b",
541
+ card: "#fdedc9",
542
+ "card-foreground": "#5b5b5b",
543
+ popover: "#ffffff",
544
+ "popover-foreground": "#5b5b5b",
545
+ primary: "#d04f99",
546
+ "primary-foreground": "#ffffff",
547
+ secondary: "#8acfd1",
548
+ "secondary-foreground": "#333333",
549
+ muted: "#b2e1eb",
550
+ "muted-foreground": "#7a7a7a",
551
+ accent: "#fbe2a7",
552
+ "accent-foreground": "#333333",
553
+ destructive: "#f96f70",
554
+ "destructive-foreground": "#ffffff",
555
+ border: "#d04f99",
556
+ input: "#e4e4e4",
557
+ ring: "#e670ab",
558
+ "chart-1": "#e670ab",
559
+ "chart-2": "#84d2e2",
560
+ "chart-3": "#fbe2a7",
561
+ "chart-4": "#f3a0ca",
562
+ "chart-5": "#d7488e",
563
+ sidebar: "#f8d8ea",
564
+ "sidebar-foreground": "#333333",
565
+ "sidebar-primary": "#ec4899",
566
+ "sidebar-primary-foreground": "#ffffff",
567
+ "sidebar-accent": "#f9a8d4",
568
+ "sidebar-accent-foreground": "#333333",
569
+ "sidebar-border": "#f3e8ff",
570
+ "sidebar-ring": "#ec4899",
571
+ "font-sans": "Poppins, sans-serif",
572
+ "font-serif": "Lora, serif",
573
+ "font-mono": "Fira Code, monospace",
574
+ radius: "0.4rem",
575
+ "shadow-color": "hsl(325.78 58.18% 56.86% / 0.5)",
576
+ "shadow-opacity": "1.0",
577
+ "shadow-blur": "0px",
578
+ "shadow-spread": "0px",
579
+ "shadow-offset-x": "3px",
580
+ "shadow-offset-y": "3px"
581
+ },
582
+ dark: {
583
+ background: "#12242e",
584
+ foreground: "#f3e3ea",
585
+ card: "#1c2e38",
586
+ "card-foreground": "#f3e3ea",
587
+ popover: "#1c2e38",
588
+ "popover-foreground": "#f3e3ea",
589
+ primary: "#fbe2a7",
590
+ "primary-foreground": "#12242e",
591
+ secondary: "#e4a2b1",
592
+ "secondary-foreground": "#12242e",
593
+ muted: "#24272b",
594
+ "muted-foreground": "#e4a2b1",
595
+ accent: "#c67b96",
596
+ "accent-foreground": "#f3e3ea",
597
+ destructive: "#e35ea4",
598
+ "destructive-foreground": "#12242e",
599
+ border: "#324859",
600
+ input: "#20333d",
601
+ ring: "#50afb6",
602
+ "chart-1": "#50afb6",
603
+ "chart-2": "#e4a2b1",
604
+ "chart-3": "#c67b96",
605
+ "chart-4": "#175c6c",
606
+ "chart-5": "#24272b",
607
+ sidebar: "#101f28",
608
+ "sidebar-foreground": "#f3f4f6",
609
+ "sidebar-primary": "#ec4899",
610
+ "sidebar-primary-foreground": "#ffffff",
611
+ "sidebar-accent": "#f9a8d4",
612
+ "sidebar-accent-foreground": "#1f2937",
613
+ "sidebar-border": "#374151",
614
+ "sidebar-ring": "#ec4899",
615
+ "font-sans": "Poppins, sans-serif",
616
+ "font-serif": "Lora, serif",
617
+ "font-mono": "Fira Code, monospace",
618
+ "shadow-color": "#324859"
619
+ }
620
+ }
621
+ },
622
+ "amethyst-haze": {
623
+ label: "Amethyst Haze",
624
+ createdAt: "2025-05-08",
625
+ styles: {
626
+ light: {
627
+ background: "#f8f7fa",
628
+ foreground: "#3d3c4f",
629
+ card: "#ffffff",
630
+ "card-foreground": "#3d3c4f",
631
+ popover: "#ffffff",
632
+ "popover-foreground": "#3d3c4f",
633
+ primary: "#8a79ab",
634
+ "primary-foreground": "#f8f7fa",
635
+ secondary: "#dfd9ec",
636
+ "secondary-foreground": "#3d3c4f",
637
+ muted: "#dcd9e3",
638
+ "muted-foreground": "#6b6880",
639
+ accent: "#e6a5b8",
640
+ "accent-foreground": "#4b2e36",
641
+ destructive: "#d95c5c",
642
+ "destructive-foreground": "#f8f7fa",
643
+ border: "#cec9d9",
644
+ input: "#eae7f0",
645
+ ring: "#8a79ab",
646
+ "chart-1": "#8a79ab",
647
+ "chart-2": "#e6a5b8",
648
+ "chart-3": "#77b8a1",
649
+ "chart-4": "#f0c88d",
650
+ "chart-5": "#a0bbe3",
651
+ sidebar: "#f1eff5",
652
+ "sidebar-foreground": "#3d3c4f",
653
+ "sidebar-primary": "#8a79ab",
654
+ "sidebar-primary-foreground": "#f8f7fa",
655
+ "sidebar-accent": "#e6a5b8",
656
+ "sidebar-accent-foreground": "#4b2e36",
657
+ "sidebar-border": "#d7d2e0",
658
+ "sidebar-ring": "#8a79ab",
659
+ "font-sans": "Geist, sans-serif",
660
+ "font-serif": '"Lora", Georgia, serif',
661
+ "font-mono": '"Fira Code", "Courier New", monospace',
662
+ radius: "0.5rem",
663
+ "shadow-color": "hsl(0 0% 0%)",
664
+ "shadow-opacity": "0.06",
665
+ "shadow-blur": "5px",
666
+ "shadow-spread": "1px",
667
+ "shadow-offset-x": "1px",
668
+ "shadow-offset-y": "2px",
669
+ "letter-spacing": "0em",
670
+ spacing: "0.25rem"
671
+ },
672
+ dark: {
673
+ background: "#1a1823",
674
+ foreground: "#e0ddef",
675
+ card: "#232030",
676
+ "card-foreground": "#e0ddef",
677
+ popover: "#232030",
678
+ "popover-foreground": "#e0ddef",
679
+ primary: "#a995c9",
680
+ "primary-foreground": "#1a1823",
681
+ secondary: "#5a5370",
682
+ "secondary-foreground": "#e0ddef",
683
+ muted: "#242031",
684
+ "muted-foreground": "#a09aad",
685
+ accent: "#372e3f",
686
+ "accent-foreground": "#f2b8c6",
687
+ destructive: "#e57373",
688
+ "destructive-foreground": "#1a1823",
689
+ border: "#302c40",
690
+ input: "#2a273a",
691
+ ring: "#a995c9",
692
+ "chart-1": "#a995c9",
693
+ "chart-2": "#f2b8c6",
694
+ "chart-3": "#77b8a1",
695
+ "chart-4": "#f0c88d",
696
+ "chart-5": "#a0bbe3",
697
+ sidebar: "#16141e",
698
+ "sidebar-foreground": "#e0ddef",
699
+ "sidebar-primary": "#a995c9",
700
+ "sidebar-primary-foreground": "#1a1823",
701
+ "sidebar-accent": "#372e3f",
702
+ "sidebar-accent-foreground": "#f2b8c6",
703
+ "sidebar-border": "#2a273a",
704
+ "sidebar-ring": "#a995c9"
705
+ }
706
+ }
707
+ },
708
+ notebook: {
709
+ label: "Notebook",
710
+ createdAt: "2025-05-10",
711
+ styles: {
712
+ light: {
713
+ background: "#f9f9f9",
714
+ foreground: "#3a3a3a",
715
+ card: "#ffffff",
716
+ "card-foreground": "#3a3a3a",
717
+ popover: "#ffffff",
718
+ "popover-foreground": "#3a3a3a",
719
+ primary: "#606060",
720
+ "primary-foreground": "#f0f0f0",
721
+ secondary: "#dedede",
722
+ "secondary-foreground": "#3a3a3a",
723
+ muted: "#e3e3e3",
724
+ "muted-foreground": "#505050",
725
+ accent: "#f3eac8",
726
+ "accent-foreground": "#5d4037",
727
+ destructive: "#c87a7a",
728
+ "destructive-foreground": "#ffffff",
729
+ border: "#747272",
730
+ input: "#ffffff",
731
+ ring: "#a0a0a0",
732
+ "chart-1": "#333333",
733
+ "chart-2": "#555555",
734
+ "chart-3": "#777777",
735
+ "chart-4": "#999999",
736
+ "chart-5": "#bbbbbb",
737
+ sidebar: "#f0f0f0",
738
+ "sidebar-foreground": "#3a3a3a",
739
+ "sidebar-primary": "#606060",
740
+ "sidebar-primary-foreground": "#f0f0f0",
741
+ "sidebar-accent": "#f3eac8",
742
+ "sidebar-accent-foreground": "#5d4037",
743
+ "sidebar-border": "#c0c0c0",
744
+ "sidebar-ring": "#a0a0a0",
745
+ "font-sans": "Architects Daughter, sans-serif",
746
+ "font-serif": '"Times New Roman", Times, serif',
747
+ "font-mono": '"Courier New", Courier, monospace',
748
+ radius: "0.625rem",
749
+ "shadow-color": "#000000",
750
+ "shadow-opacity": "0.03",
751
+ "shadow-blur": "5px",
752
+ "shadow-spread": "0px",
753
+ "shadow-offset-x": "1px",
754
+ "shadow-offset-y": "4px",
755
+ "letter-spacing": "0.5px",
756
+ spacing: "0.25rem"
757
+ },
758
+ dark: {
759
+ background: "#2b2b2b",
760
+ foreground: "#dcdcdc",
761
+ card: "#333333",
762
+ "card-foreground": "#dcdcdc",
763
+ popover: "#333333",
764
+ "popover-foreground": "#dcdcdc",
765
+ primary: "#b0b0b0",
766
+ "primary-foreground": "#2b2b2b",
767
+ secondary: "#5a5a5a",
768
+ "secondary-foreground": "#c0c0c0",
769
+ muted: "#454545",
770
+ "muted-foreground": "#a0a0a0",
771
+ accent: "#e0e0e0",
772
+ "accent-foreground": "#333333",
773
+ destructive: "#d9afaf",
774
+ "destructive-foreground": "#2b2b2b",
775
+ border: "#4f4f4f",
776
+ input: "#333333",
777
+ ring: "#c0c0c0",
778
+ "chart-1": "#efefef",
779
+ "chart-2": "#d0d0d0",
780
+ "chart-3": "#b0b0b0",
781
+ "chart-4": "#909090",
782
+ "chart-5": "#707070",
783
+ sidebar: "#212121",
784
+ "sidebar-foreground": "#dcdcdc",
785
+ "sidebar-primary": "#b0b0b0",
786
+ "sidebar-primary-foreground": "#212121",
787
+ "sidebar-accent": "#e0e0e0",
788
+ "sidebar-accent-foreground": "#333333",
789
+ "sidebar-border": "#4f4f4f",
790
+ "sidebar-ring": "#c0c0c0",
791
+ "font-sans": "Architects Daughter, sans-serif",
792
+ "font-serif": "Georgia, serif",
793
+ "font-mono": '"Fira Code", "Courier New", monospace',
794
+ radius: "0.625rem",
795
+ "shadow-color": "#000000",
796
+ "shadow-opacity": "0.03",
797
+ "shadow-blur": "5px",
798
+ "shadow-spread": "0px",
799
+ "shadow-offset-x": "1px",
800
+ "shadow-offset-y": "4px",
801
+ "letter-spacing": "0.5px",
802
+ spacing: "0.25rem"
803
+ }
804
+ }
805
+ },
806
+ "doom-64": {
807
+ label: "Doom 64",
808
+ createdAt: "2025-04-28",
809
+ styles: {
810
+ light: {
811
+ background: "#cccccc",
812
+ foreground: "#1f1f1f",
813
+ card: "#b0b0b0",
814
+ "card-foreground": "#1f1f1f",
815
+ popover: "#b0b0b0",
816
+ "popover-foreground": "#1f1f1f",
817
+ primary: "#b71c1c",
818
+ "primary-foreground": "#ffffff",
819
+ secondary: "#556b2f",
820
+ "secondary-foreground": "#ffffff",
821
+ muted: "#b8b8b8",
822
+ "muted-foreground": "#4a4a4a",
823
+ accent: "#4682b4",
824
+ "accent-foreground": "#ffffff",
825
+ destructive: "#ff6f00",
826
+ "destructive-foreground": "#000000",
827
+ border: "#505050",
828
+ input: "#505050",
829
+ ring: "#b71c1c",
830
+ "chart-1": "#b71c1c",
831
+ "chart-2": "#556b2f",
832
+ "chart-3": "#4682b4",
833
+ "chart-4": "#ff6f00",
834
+ "chart-5": "#8d6e63",
835
+ sidebar: "#b0b0b0",
836
+ "sidebar-foreground": "#1f1f1f",
837
+ "sidebar-primary": "#b71c1c",
838
+ "sidebar-primary-foreground": "#ffffff",
839
+ "sidebar-accent": "#4682b4",
840
+ "sidebar-accent-foreground": "#ffffff",
841
+ "sidebar-border": "#505050",
842
+ "sidebar-ring": "#b71c1c",
843
+ "font-sans": '"Oxanium", sans-serif',
844
+ "font-serif": 'ui-serif, Georgia, Cambria, "Times New Roman", Times, serif',
845
+ "font-mono": '"Source Code Pro", monospace',
846
+ radius: "0px",
847
+ "shadow-color": "hsl(0 0% 0%)",
848
+ "shadow-opacity": "0.4",
849
+ "shadow-blur": "4px",
850
+ "shadow-spread": "0px",
851
+ "shadow-offset-x": "0px",
852
+ "shadow-offset-y": "2px",
853
+ "letter-spacing": "0em",
854
+ spacing: "0.25rem"
855
+ },
856
+ dark: {
857
+ background: "#1a1a1a",
858
+ foreground: "#e0e0e0",
859
+ card: "#2a2a2a",
860
+ "card-foreground": "#e0e0e0",
861
+ popover: "#2a2a2a",
862
+ "popover-foreground": "#e0e0e0",
863
+ primary: "#e53935",
864
+ "primary-foreground": "#ffffff",
865
+ secondary: "#689f38",
866
+ "secondary-foreground": "#000000",
867
+ muted: "#252525",
868
+ "muted-foreground": "#a0a0a0",
869
+ accent: "#64b5f6",
870
+ "accent-foreground": "#000000",
871
+ destructive: "#ffa000",
872
+ "destructive-foreground": "#000000",
873
+ border: "#4a4a4a",
874
+ input: "#4a4a4a",
875
+ ring: "#e53935",
876
+ "chart-1": "#e53935",
877
+ "chart-2": "#689f38",
878
+ "chart-3": "#64b5f6",
879
+ "chart-4": "#ffa000",
880
+ "chart-5": "#a1887f",
881
+ sidebar: "#141414",
882
+ "sidebar-foreground": "#e0e0e0",
883
+ "sidebar-primary": "#e53935",
884
+ "sidebar-primary-foreground": "#ffffff",
885
+ "sidebar-accent": "#64b5f6",
886
+ "sidebar-accent-foreground": "#000000",
887
+ "sidebar-border": "#4a4a4a",
888
+ "sidebar-ring": "#e53935",
889
+ "font-sans": '"Oxanium", sans-serif',
890
+ "font-serif": 'ui-serif, Georgia, Cambria, "Times New Roman", Times, serif',
891
+ "font-mono": '"Source Code Pro", monospace',
892
+ radius: "0px",
893
+ "shadow-color": "hsl(0 0% 0%)",
894
+ "shadow-opacity": "0.6",
895
+ "shadow-blur": "5px",
896
+ "shadow-spread": "0px",
897
+ "shadow-offset-x": "0px",
898
+ "shadow-offset-y": "2px",
899
+ "letter-spacing": "0em",
900
+ spacing: "0.25rem"
901
+ }
902
+ }
903
+ },
904
+ catppuccin: {
905
+ label: "Catppuccin",
906
+ createdAt: "2025-04-18",
907
+ styles: {
908
+ light: {
909
+ background: "#eff1f5",
910
+ foreground: "#4c4f69",
911
+ card: "#ffffff",
912
+ "card-foreground": "#4c4f69",
913
+ popover: "#ccd0da",
914
+ "popover-foreground": "#4c4f69",
915
+ primary: "#8839ef",
916
+ "primary-foreground": "#ffffff",
917
+ secondary: "#ccd0da",
918
+ "secondary-foreground": "#4c4f69",
919
+ muted: "#dce0e8",
920
+ "muted-foreground": "#6c6f85",
921
+ accent: "#04a5e5",
922
+ "accent-foreground": "#ffffff",
923
+ destructive: "#d20f39",
924
+ "destructive-foreground": "#ffffff",
925
+ border: "#bcc0cc",
926
+ input: "#ccd0da",
927
+ ring: "#8839ef",
928
+ "chart-1": "#8839ef",
929
+ "chart-2": "#04a5e5",
930
+ "chart-3": "#40a02b",
931
+ "chart-4": "#fe640b",
932
+ "chart-5": "#dc8a78",
933
+ sidebar: "#e6e9ef",
934
+ "sidebar-foreground": "#4c4f69",
935
+ "sidebar-primary": "#8839ef",
936
+ "sidebar-primary-foreground": "#ffffff",
937
+ "sidebar-accent": "#04a5e5",
938
+ "sidebar-accent-foreground": "#ffffff",
939
+ "sidebar-border": "#bcc0cc",
940
+ "sidebar-ring": "#8839ef",
941
+ "font-sans": "Montserrat, sans-serif",
942
+ "font-serif": "Georgia, serif",
943
+ "font-mono": "Fira Code, monospace",
944
+ radius: "0.35rem",
945
+ "shadow-color": "hsl(240 30% 25%)",
946
+ "shadow-opacity": "0.12",
947
+ "shadow-blur": "6px",
948
+ "shadow-spread": "0px",
949
+ "shadow-offset-x": "0px",
950
+ "shadow-offset-y": "4px"
951
+ },
952
+ dark: {
953
+ background: "#181825",
954
+ foreground: "#cdd6f4",
955
+ card: "#1e1e2e",
956
+ "card-foreground": "#cdd6f4",
957
+ popover: "#45475a",
958
+ "popover-foreground": "#cdd6f4",
959
+ primary: "#cba6f7",
960
+ "primary-foreground": "#1e1e2e",
961
+ secondary: "#585b70",
962
+ "secondary-foreground": "#cdd6f4",
963
+ muted: "#292c3c",
964
+ "muted-foreground": "#a6adc8",
965
+ accent: "#89dceb",
966
+ "accent-foreground": "#1e1e2e",
967
+ destructive: "#f38ba8",
968
+ "destructive-foreground": "#1e1e2e",
969
+ border: "#313244",
970
+ input: "#313244",
971
+ ring: "#cba6f7",
972
+ "chart-1": "#cba6f7",
973
+ "chart-2": "#89dceb",
974
+ "chart-3": "#a6e3a1",
975
+ "chart-4": "#fab387",
976
+ "chart-5": "#f5e0dc",
977
+ sidebar: "#11111b",
978
+ "sidebar-foreground": "#cdd6f4",
979
+ "sidebar-primary": "#cba6f7",
980
+ "sidebar-primary-foreground": "#1e1e2e",
981
+ "sidebar-accent": "#89dceb",
982
+ "sidebar-accent-foreground": "#1e1e2e",
983
+ "sidebar-border": "#45475a",
984
+ "sidebar-ring": "#cba6f7"
985
+ }
986
+ }
987
+ },
988
+ graphite: {
989
+ label: "Graphite",
990
+ createdAt: "2025-04-17",
991
+ styles: {
992
+ light: {
993
+ background: "#f0f0f0",
994
+ foreground: "#333333",
995
+ card: "#f5f5f5",
996
+ "card-foreground": "#333333",
997
+ popover: "#f5f5f5",
998
+ "popover-foreground": "#333333",
999
+ primary: "#606060",
1000
+ "primary-foreground": "#ffffff",
1001
+ secondary: "#e0e0e0",
1002
+ "secondary-foreground": "#333333",
1003
+ muted: "#d9d9d9",
1004
+ "muted-foreground": "#666666",
1005
+ accent: "#c0c0c0",
1006
+ "accent-foreground": "#333333",
1007
+ destructive: "#cc3333",
1008
+ "destructive-foreground": "#ffffff",
1009
+ border: "#d0d0d0",
1010
+ input: "#e0e0e0",
1011
+ ring: "#606060",
1012
+ "chart-1": "#606060",
1013
+ "chart-2": "#476666",
1014
+ "chart-3": "#909090",
1015
+ "chart-4": "#a8a8a8",
1016
+ "chart-5": "#c0c0c0",
1017
+ sidebar: "#eaeaea",
1018
+ "sidebar-foreground": "#333333",
1019
+ "sidebar-primary": "#606060",
1020
+ "sidebar-primary-foreground": "#ffffff",
1021
+ "sidebar-accent": "#c0c0c0",
1022
+ "sidebar-accent-foreground": "#333333",
1023
+ "sidebar-border": "#d0d0d0",
1024
+ "sidebar-ring": "#606060",
1025
+ "font-sans": "Montserrat, sans-serif",
1026
+ "font-serif": "Georgia, serif",
1027
+ "font-mono": "Fira Code, monospace",
1028
+ radius: "0.35rem",
1029
+ "shadow-color": "hsl(0 0% 20% / 0.1)",
1030
+ "shadow-opacity": "0.15",
1031
+ "shadow-blur": "0px",
1032
+ "shadow-spread": "0px",
1033
+ "shadow-offset-x": "0px",
1034
+ "shadow-offset-y": "2px"
1035
+ },
1036
+ dark: {
1037
+ background: "#1a1a1a",
1038
+ foreground: "#d9d9d9",
1039
+ card: "#202020",
1040
+ "card-foreground": "#d9d9d9",
1041
+ popover: "#202020",
1042
+ "popover-foreground": "#d9d9d9",
1043
+ primary: "#a0a0a0",
1044
+ "primary-foreground": "#1a1a1a",
1045
+ secondary: "#303030",
1046
+ "secondary-foreground": "#d9d9d9",
1047
+ muted: "#2a2a2a",
1048
+ "muted-foreground": "#808080",
1049
+ accent: "#404040",
1050
+ "accent-foreground": "#d9d9d9",
1051
+ destructive: "#e06666",
1052
+ "destructive-foreground": "#ffffff",
1053
+ border: "#353535",
1054
+ input: "#303030",
1055
+ ring: "#a0a0a0",
1056
+ "chart-1": "#a0a0a0",
1057
+ "chart-2": "#7e9ca0",
1058
+ "chart-3": "#707070",
1059
+ "chart-4": "#585858",
1060
+ "chart-5": "#404040",
1061
+ sidebar: "#1f1f1f",
1062
+ "sidebar-foreground": "#d9d9d9",
1063
+ "sidebar-primary": "#a0a0a0",
1064
+ "sidebar-primary-foreground": "#1a1a1a",
1065
+ "sidebar-accent": "#404040",
1066
+ "sidebar-accent-foreground": "#d9d9d9",
1067
+ "sidebar-border": "#353535",
1068
+ "sidebar-ring": "#a0a0a0",
1069
+ "font-sans": "Inter, sans-serif",
1070
+ "font-serif": "Georgia, serif",
1071
+ "font-mono": "Fira Code, monospace"
1072
+ }
1073
+ }
1074
+ },
1075
+ perpetuity: {
1076
+ label: "Perpetuity",
1077
+ createdAt: "2025-04-01",
1078
+ styles: {
1079
+ light: {
1080
+ background: "#e8f0f0",
1081
+ foreground: "#0a4a55",
1082
+ card: "#f2f7f7",
1083
+ "card-foreground": "#0a4a55",
1084
+ popover: "#f2f7f7",
1085
+ "popover-foreground": "#0a4a55",
1086
+ primary: "#06858e",
1087
+ "primary-foreground": "#ffffff",
1088
+ secondary: "#d9eaea",
1089
+ "secondary-foreground": "#0a4a55",
1090
+ muted: "#e0eaea",
1091
+ "muted-foreground": "#427a7e",
1092
+ accent: "#c9e5e7",
1093
+ "accent-foreground": "#0a4a55",
1094
+ destructive: "#d13838",
1095
+ "destructive-foreground": "#ffffff",
1096
+ border: "#cde0e2",
1097
+ input: "#d9eaea",
1098
+ ring: "#06858e",
1099
+ "chart-1": "#06858e",
1100
+ "chart-2": "#1e9ea6",
1101
+ "chart-3": "#37b6be",
1102
+ "chart-4": "#5dc7ce",
1103
+ "chart-5": "#8ad8dd",
1104
+ sidebar: "#daebed",
1105
+ "sidebar-foreground": "#0a4a55",
1106
+ "sidebar-primary": "#06858e",
1107
+ "sidebar-primary-foreground": "#ffffff",
1108
+ "sidebar-accent": "#c9e5e7",
1109
+ "sidebar-accent-foreground": "#0a4a55",
1110
+ "sidebar-border": "#cde0e2",
1111
+ "sidebar-ring": "#06858e",
1112
+ "font-sans": "Courier New, monospace",
1113
+ "font-serif": "Courier New, monospace",
1114
+ "font-mono": "Courier New, monospace",
1115
+ radius: "0.125rem",
1116
+ "shadow-color": "hsl(185 70% 30% / 0.15)",
1117
+ "shadow-opacity": "0.15",
1118
+ "shadow-blur": "2px",
1119
+ "shadow-spread": "0px",
1120
+ "shadow-offset-x": "1px",
1121
+ "shadow-offset-y": "1px"
1122
+ },
1123
+ dark: {
1124
+ background: "#0a1a20",
1125
+ foreground: "#4de8e8",
1126
+ card: "#0c2025",
1127
+ "card-foreground": "#4de8e8",
1128
+ popover: "#0c2025",
1129
+ "popover-foreground": "#4de8e8",
1130
+ primary: "#4de8e8",
1131
+ "primary-foreground": "#0a1a20",
1132
+ secondary: "#164955",
1133
+ "secondary-foreground": "#4de8e8",
1134
+ muted: "#0f3039",
1135
+ "muted-foreground": "#36a5a5",
1136
+ accent: "#164955",
1137
+ "accent-foreground": "#4de8e8",
1138
+ destructive: "#e83c3c",
1139
+ "destructive-foreground": "#f2f2f2",
1140
+ border: "#164955",
1141
+ input: "#164955",
1142
+ ring: "#4de8e8",
1143
+ "chart-1": "#4de8e8",
1144
+ "chart-2": "#36a5a5",
1145
+ "chart-3": "#2d8a8a",
1146
+ "chart-4": "#19595e",
1147
+ "chart-5": "#0e383c",
1148
+ sidebar: "#0a1a20",
1149
+ "sidebar-foreground": "#4de8e8",
1150
+ "sidebar-primary": "#4de8e8",
1151
+ "sidebar-primary-foreground": "#0a1a20",
1152
+ "sidebar-accent": "#164955",
1153
+ "sidebar-accent-foreground": "#4de8e8",
1154
+ "sidebar-border": "#164955",
1155
+ "sidebar-ring": "#4de8e8",
1156
+ "font-sans": "Source Code Pro, monospace",
1157
+ "font-serif": "Source Code Pro, monospace",
1158
+ "font-mono": "Source Code Pro, monospace",
1159
+ radius: "0.125rem",
1160
+ "shadow-color": "hsl(180 70% 60% / 0.2)",
1161
+ "shadow-opacity": "0.2",
1162
+ "shadow-blur": "2px",
1163
+ "shadow-spread": "0px",
1164
+ "shadow-offset-x": "1px",
1165
+ "shadow-offset-y": "1px"
1166
+ }
1167
+ }
1168
+ },
1169
+ "kodama-grove": {
1170
+ label: "Kodama Grove",
1171
+ styles: {
1172
+ light: {
1173
+ background: "#e4d7b0",
1174
+ foreground: "#5c4b3e",
1175
+ card: "#e7dbbf",
1176
+ "card-foreground": "#5c4b3e",
1177
+ popover: "#f3ead2",
1178
+ "popover-foreground": "#5c4b3e",
1179
+ primary: "#8d9d4f",
1180
+ "primary-foreground": "#fdfbf6",
1181
+ secondary: "#decea0",
1182
+ "secondary-foreground": "#5c4b3e",
1183
+ muted: "#decea0",
1184
+ "muted-foreground": "#85766a",
1185
+ accent: "#dbc894",
1186
+ "accent-foreground": "#5c4b3e",
1187
+ destructive: "#d98b7e",
1188
+ "destructive-foreground": "#faf8f2",
1189
+ border: "#b19681",
1190
+ input: "#dbc894",
1191
+ ring: "#9db18c",
1192
+ "chart-1": "#9db18c",
1193
+ "chart-2": "#8a9f7b",
1194
+ "chart-3": "#bac9b4",
1195
+ "chart-4": "#71856a",
1196
+ "chart-5": "#5e6e58",
1197
+ sidebar: "#e2d1a2",
1198
+ "sidebar-foreground": "#5c4b3e",
1199
+ "sidebar-primary": "#9db18c",
1200
+ "sidebar-primary-foreground": "#fdfbf6",
1201
+ "sidebar-accent": "#eae5d9",
1202
+ "sidebar-accent-foreground": "#5c4b3e",
1203
+ "sidebar-border": "#e5e0d4",
1204
+ "sidebar-ring": "#9db18c",
1205
+ "font-sans": "Merriweather, serif",
1206
+ "font-serif": "Source Serif 4, serif",
1207
+ "font-mono": "JetBrains Mono, monospace",
1208
+ radius: "0.425rem",
1209
+ "shadow-color": "hsl(88 22% 35% / 0.15)",
1210
+ "shadow-opacity": "0.15",
1211
+ "shadow-blur": "2px",
1212
+ "shadow-spread": "0px",
1213
+ "shadow-offset-x": "3px",
1214
+ "shadow-offset-y": "3px"
1215
+ },
1216
+ dark: {
1217
+ background: "#3a3529",
1218
+ foreground: "#ede4d4",
1219
+ card: "#413c33",
1220
+ "card-foreground": "#ede4d4",
1221
+ popover: "#413c33",
1222
+ "popover-foreground": "#ede4d4",
1223
+ primary: "#8a9f7b",
1224
+ "primary-foreground": "#2a2521",
1225
+ secondary: "#5a5345",
1226
+ "secondary-foreground": "#ede4d4",
1227
+ muted: "#4a4439",
1228
+ "muted-foreground": "#a8a096",
1229
+ accent: "#a18f5c",
1230
+ "accent-foreground": "#2a2521",
1231
+ destructive: "#b5766a",
1232
+ "destructive-foreground": "#f0e9db",
1233
+ border: "#5a5345",
1234
+ input: "#5a5345",
1235
+ ring: "#8a9f7b",
1236
+ "chart-1": "#8a9f7b",
1237
+ "chart-2": "#9db18c",
1238
+ "chart-3": "#71856a",
1239
+ "chart-4": "#a18f5c",
1240
+ "chart-5": "#5e6e58",
1241
+ sidebar: "#3a3529",
1242
+ "sidebar-foreground": "#ede4d4",
1243
+ "sidebar-primary": "#8a9f7b",
1244
+ "sidebar-primary-foreground": "#2a2521",
1245
+ "sidebar-accent": "#a18f5c",
1246
+ "sidebar-accent-foreground": "#2a2521",
1247
+ "sidebar-border": "#5a5345",
1248
+ "sidebar-ring": "#8a9f7b"
1249
+ }
1250
+ }
1251
+ },
1252
+ "cosmic-night": {
1253
+ label: "Cosmic Night",
1254
+ createdAt: "2025-04-04",
1255
+ styles: {
1256
+ light: {
1257
+ background: "#f5f5ff",
1258
+ foreground: "#2a2a4a",
1259
+ card: "#ffffff",
1260
+ "card-foreground": "#2a2a4a",
1261
+ popover: "#ffffff",
1262
+ "popover-foreground": "#2a2a4a",
1263
+ primary: "#6e56cf",
1264
+ "primary-foreground": "#ffffff",
1265
+ secondary: "#e4dfff",
1266
+ "secondary-foreground": "#4a4080",
1267
+ muted: "#f0f0fa",
1268
+ "muted-foreground": "#6c6c8a",
1269
+ accent: "#d8e6ff",
1270
+ "accent-foreground": "#2a2a4a",
1271
+ destructive: "#ff5470",
1272
+ "destructive-foreground": "#ffffff",
1273
+ border: "#e0e0f0",
1274
+ input: "#e0e0f0",
1275
+ ring: "#6e56cf",
1276
+ "chart-1": "#6e56cf",
1277
+ "chart-2": "#9e8cfc",
1278
+ "chart-3": "#5d5fef",
1279
+ "chart-4": "#7c75fa",
1280
+ "chart-5": "#4740b3",
1281
+ radius: "0.5rem",
1282
+ sidebar: "#f0f0fa",
1283
+ "sidebar-foreground": "#2a2a4a",
1284
+ "sidebar-primary": "#6e56cf",
1285
+ "sidebar-primary-foreground": "#ffffff",
1286
+ "sidebar-accent": "#d8e6ff",
1287
+ "sidebar-accent-foreground": "#2a2a4a",
1288
+ "sidebar-border": "#e0e0f0",
1289
+ "sidebar-ring": "#6e56cf",
1290
+ "font-sans": "Inter, sans-serif",
1291
+ "font-serif": "Georgia, serif",
1292
+ "font-mono": "JetBrains Mono, monospace",
1293
+ "shadow-color": "hsl(240 30% 25%)",
1294
+ "shadow-opacity": "0.12",
1295
+ "shadow-blur": "10px",
1296
+ "shadow-spread": "0px",
1297
+ "shadow-offset-x": "0px",
1298
+ "shadow-offset-y": "4px"
1299
+ },
1300
+ dark: {
1301
+ background: "#0f0f1a",
1302
+ foreground: "#e2e2f5",
1303
+ card: "#1a1a2e",
1304
+ "card-foreground": "#e2e2f5",
1305
+ popover: "#1a1a2e",
1306
+ "popover-foreground": "#e2e2f5",
1307
+ primary: "#a48fff",
1308
+ "primary-foreground": "#0f0f1a",
1309
+ secondary: "#2d2b55",
1310
+ "secondary-foreground": "#c4c2ff",
1311
+ muted: "#222244",
1312
+ "muted-foreground": "#a0a0c0",
1313
+ accent: "#303060",
1314
+ "accent-foreground": "#e2e2f5",
1315
+ destructive: "#ff5470",
1316
+ "destructive-foreground": "#ffffff",
1317
+ border: "#303052",
1318
+ input: "#303052",
1319
+ ring: "#a48fff",
1320
+ "chart-1": "#a48fff",
1321
+ "chart-2": "#7986cb",
1322
+ "chart-3": "#64b5f6",
1323
+ "chart-4": "#4db6ac",
1324
+ "chart-5": "#ff79c6",
1325
+ radius: "0.5rem",
1326
+ sidebar: "#1a1a2e",
1327
+ "sidebar-foreground": "#e2e2f5",
1328
+ "sidebar-primary": "#a48fff",
1329
+ "sidebar-primary-foreground": "#0f0f1a",
1330
+ "sidebar-accent": "#303060",
1331
+ "sidebar-accent-foreground": "#e2e2f5",
1332
+ "sidebar-border": "#303052",
1333
+ "sidebar-ring": "#a48fff"
1334
+ }
1335
+ }
1336
+ },
1337
+ tangerine: {
1338
+ label: "Tangerine",
1339
+ createdAt: "2025-04-09",
1340
+ styles: {
1341
+ light: {
1342
+ background: "#e8ebed",
1343
+ foreground: "#333333",
1344
+ card: "#ffffff",
1345
+ "card-foreground": "#333333",
1346
+ popover: "#ffffff",
1347
+ "popover-foreground": "#333333",
1348
+ primary: "#e05d38",
1349
+ "primary-foreground": "#ffffff",
1350
+ secondary: "#f3f4f6",
1351
+ "secondary-foreground": "#4b5563",
1352
+ muted: "#f9fafb",
1353
+ "muted-foreground": "#6b7280",
1354
+ accent: "#d6e4f0",
1355
+ "accent-foreground": "#1e3a8a",
1356
+ destructive: "#ef4444",
1357
+ "destructive-foreground": "#ffffff",
1358
+ border: "#dcdfe2",
1359
+ input: "#f4f5f7",
1360
+ ring: "#e05d38",
1361
+ "chart-1": "#86a7c8",
1362
+ "chart-2": "#eea591",
1363
+ "chart-3": "#5a7ca6",
1364
+ "chart-4": "#466494",
1365
+ "chart-5": "#334c82",
1366
+ sidebar: "#dddfe2",
1367
+ "sidebar-foreground": "#333333",
1368
+ "sidebar-primary": "#e05d38",
1369
+ "sidebar-primary-foreground": "#ffffff",
1370
+ "sidebar-accent": "#d6e4f0",
1371
+ "sidebar-accent-foreground": "#1e3a8a",
1372
+ "sidebar-border": "#e5e7eb",
1373
+ "sidebar-ring": "#e05d38",
1374
+ "font-sans": "Inter, sans-serif",
1375
+ "font-serif": "Source Serif 4, serif",
1376
+ "font-mono": "JetBrains Mono, monospace",
1377
+ radius: "0.75rem",
1378
+ "shadow-color": "hsl(0 0% 0%)",
1379
+ "shadow-opacity": "0.1",
1380
+ "shadow-blur": "3px",
1381
+ "shadow-spread": "0px",
1382
+ "shadow-offset-x": "0px",
1383
+ "shadow-offset-y": "1px"
1384
+ },
1385
+ dark: {
1386
+ background: "#1c2433",
1387
+ foreground: "#e5e5e5",
1388
+ card: "#2a3040",
1389
+ "card-foreground": "#e5e5e5",
1390
+ popover: "#262b38",
1391
+ "popover-foreground": "#e5e5e5",
1392
+ primary: "#e05d38",
1393
+ "primary-foreground": "#ffffff",
1394
+ secondary: "#2a303e",
1395
+ "secondary-foreground": "#e5e5e5",
1396
+ muted: "#2a303e",
1397
+ "muted-foreground": "#a3a3a3",
1398
+ accent: "#2a3656",
1399
+ "accent-foreground": "#bfdbfe",
1400
+ destructive: "#ef4444",
1401
+ "destructive-foreground": "#ffffff",
1402
+ border: "#3d4354",
1403
+ input: "#3d4354",
1404
+ ring: "#e05d38",
1405
+ "chart-1": "#86a7c8",
1406
+ "chart-2": "#e6a08f",
1407
+ "chart-3": "#5a7ca6",
1408
+ "chart-4": "#466494",
1409
+ "chart-5": "#334c82",
1410
+ sidebar: "#2a303f",
1411
+ "sidebar-foreground": "#e5e5e5",
1412
+ "sidebar-primary": "#e05d38",
1413
+ "sidebar-primary-foreground": "#ffffff",
1414
+ "sidebar-accent": "#2a3656",
1415
+ "sidebar-accent-foreground": "#bfdbfe",
1416
+ "sidebar-border": "#3d4354",
1417
+ "sidebar-ring": "#e05d38"
1418
+ }
1419
+ }
1420
+ },
1421
+ "quantum-rose": {
1422
+ label: "Quantum Rose",
1423
+ createdAt: "2025-04-03",
1424
+ styles: {
1425
+ light: {
1426
+ background: "#fff0f8",
1427
+ foreground: "#91185c",
1428
+ card: "#fff7fc",
1429
+ "card-foreground": "#91185c",
1430
+ popover: "#fff7fc",
1431
+ "popover-foreground": "#91185c",
1432
+ primary: "#e6067a",
1433
+ "primary-foreground": "#ffffff",
1434
+ secondary: "#ffd6ff",
1435
+ "secondary-foreground": "#91185c",
1436
+ muted: "#ffe3f2",
1437
+ "muted-foreground": "#c04283",
1438
+ accent: "#ffc1e3",
1439
+ "accent-foreground": "#91185c",
1440
+ destructive: "#d13869",
1441
+ "destructive-foreground": "#ffffff",
1442
+ border: "#ffc7e6",
1443
+ input: "#ffd6ff",
1444
+ ring: "#e6067a",
1445
+ "chart-1": "#e6067a",
1446
+ "chart-2": "#c44b97",
1447
+ "chart-3": "#9969b6",
1448
+ "chart-4": "#7371bf",
1449
+ "chart-5": "#5e84ff",
1450
+ sidebar: "#ffedf6",
1451
+ "sidebar-foreground": "#91185c",
1452
+ "sidebar-primary": "#e6067a",
1453
+ "sidebar-primary-foreground": "#ffffff",
1454
+ "sidebar-accent": "#ffc1e3",
1455
+ "sidebar-accent-foreground": "#91185c",
1456
+ "sidebar-border": "#ffddf0",
1457
+ "sidebar-ring": "#e6067a",
1458
+ "font-sans": "Poppins, sans-serif",
1459
+ "font-serif": "Playfair Display, serif",
1460
+ "font-mono": "Space Mono, monospace",
1461
+ radius: "0.5rem",
1462
+ "shadow-color": "hsl(330 70% 30% / 0.12)",
1463
+ "shadow-opacity": "0.18",
1464
+ "shadow-blur": "0px",
1465
+ "shadow-spread": "0px",
1466
+ "shadow-offset-x": "0px",
1467
+ "shadow-offset-y": "3px"
1468
+ },
1469
+ dark: {
1470
+ background: "#1a0922",
1471
+ foreground: "#ffb3ff",
1472
+ card: "#2a1435",
1473
+ "card-foreground": "#ffb3ff",
1474
+ popover: "#2a1435",
1475
+ "popover-foreground": "#ffb3ff",
1476
+ primary: "#ff6bef",
1477
+ "primary-foreground": "#180518",
1478
+ secondary: "#46204f",
1479
+ "secondary-foreground": "#ffb3ff",
1480
+ muted: "#331941",
1481
+ "muted-foreground": "#d67ad6",
1482
+ accent: "#5a1f5d",
1483
+ "accent-foreground": "#ffb3ff",
1484
+ destructive: "#ff2876",
1485
+ "destructive-foreground": "#f9f9f9",
1486
+ border: "#4a1b5f",
1487
+ input: "#46204f",
1488
+ ring: "#ff6bef",
1489
+ "chart-1": "#ff6bef",
1490
+ "chart-2": "#c359e3",
1491
+ "chart-3": "#9161ff",
1492
+ "chart-4": "#6f73e2",
1493
+ "chart-5": "#547aff",
1494
+ sidebar: "#1c0d25",
1495
+ "sidebar-foreground": "#ffb3ff",
1496
+ "sidebar-primary": "#ff6bef",
1497
+ "sidebar-primary-foreground": "#180518",
1498
+ "sidebar-accent": "#5a1f5d",
1499
+ "sidebar-accent-foreground": "#ffb3ff",
1500
+ "sidebar-border": "#4a1b5f",
1501
+ "sidebar-ring": "#ff6bef",
1502
+ "font-sans": "Quicksand, sans-serif",
1503
+ "font-serif": "Playfair Display, serif",
1504
+ "font-mono": "Space Mono, monospace",
1505
+ "shadow-color": "hsl(300 80% 50% / 0.25)"
1506
+ }
1507
+ }
1508
+ },
1509
+ nature: {
1510
+ label: "Nature",
1511
+ styles: {
1512
+ light: {
1513
+ background: "#f8f5f0",
1514
+ foreground: "#3e2723",
1515
+ card: "#f8f5f0",
1516
+ "card-foreground": "#3e2723",
1517
+ popover: "#f8f5f0",
1518
+ "popover-foreground": "#3e2723",
1519
+ primary: "#2e7d32",
1520
+ "primary-foreground": "#ffffff",
1521
+ secondary: "#e8f5e9",
1522
+ "secondary-foreground": "#1b5e20",
1523
+ muted: "#f0e9e0",
1524
+ "muted-foreground": "#6d4c41",
1525
+ accent: "#c8e6c9",
1526
+ "accent-foreground": "#1b5e20",
1527
+ destructive: "#c62828",
1528
+ "destructive-foreground": "#ffffff",
1529
+ border: "#e0d6c9",
1530
+ input: "#e0d6c9",
1531
+ ring: "#2e7d32",
1532
+ "chart-1": "#4caf50",
1533
+ "chart-2": "#388e3c",
1534
+ "chart-3": "#2e7d32",
1535
+ "chart-4": "#1b5e20",
1536
+ "chart-5": "#0a1f0c",
1537
+ radius: "0.5rem",
1538
+ sidebar: "#f0e9e0",
1539
+ "sidebar-foreground": "#3e2723",
1540
+ "sidebar-primary": "#2e7d32",
1541
+ "sidebar-primary-foreground": "#ffffff",
1542
+ "sidebar-accent": "#c8e6c9",
1543
+ "sidebar-accent-foreground": "#1b5e20",
1544
+ "sidebar-border": "#e0d6c9",
1545
+ "sidebar-ring": "#2e7d32",
1546
+ "font-sans": "Montserrat, sans-serif",
1547
+ "font-serif": "Merriweather, serif",
1548
+ "font-mono": "Source Code Pro, monospace"
1549
+ },
1550
+ dark: {
1551
+ background: "#1c2a1f",
1552
+ foreground: "#f0ebe5",
1553
+ card: "#2d3a2e",
1554
+ "card-foreground": "#f0ebe5",
1555
+ popover: "#2d3a2e",
1556
+ "popover-foreground": "#f0ebe5",
1557
+ primary: "#4caf50",
1558
+ "primary-foreground": "#0a1f0c",
1559
+ secondary: "#3e4a3d",
1560
+ "secondary-foreground": "#d7e0d6",
1561
+ muted: "#2d3a2e",
1562
+ "muted-foreground": "#d7cfc4",
1563
+ accent: "#388e3c",
1564
+ "accent-foreground": "#f0ebe5",
1565
+ destructive: "#c62828",
1566
+ "destructive-foreground": "#f0ebe5",
1567
+ border: "#3e4a3d",
1568
+ input: "#3e4a3d",
1569
+ ring: "#4caf50",
1570
+ "chart-1": "#81c784",
1571
+ "chart-2": "#66bb6a",
1572
+ "chart-3": "#4caf50",
1573
+ "chart-4": "#43a047",
1574
+ "chart-5": "#388e3c",
1575
+ radius: "0.5rem",
1576
+ sidebar: "#1c2a1f",
1577
+ "sidebar-foreground": "#f0ebe5",
1578
+ "sidebar-primary": "#4caf50",
1579
+ "sidebar-primary-foreground": "#0a1f0c",
1580
+ "sidebar-accent": "#388e3c",
1581
+ "sidebar-accent-foreground": "#f0ebe5",
1582
+ "sidebar-border": "#3e4a3d",
1583
+ "sidebar-ring": "#4caf50"
1584
+ }
1585
+ }
1586
+ },
1587
+ "bold-tech": {
1588
+ label: "Bold Tech",
1589
+ styles: {
1590
+ light: {
1591
+ background: "#ffffff",
1592
+ foreground: "#312e81",
1593
+ card: "#ffffff",
1594
+ "card-foreground": "#312e81",
1595
+ popover: "#ffffff",
1596
+ "popover-foreground": "#312e81",
1597
+ primary: "#8b5cf6",
1598
+ "primary-foreground": "#ffffff",
1599
+ secondary: "#f3f0ff",
1600
+ "secondary-foreground": "#4338ca",
1601
+ muted: "#f5f3ff",
1602
+ "muted-foreground": "#7c3aed",
1603
+ accent: "#dbeafe",
1604
+ "accent-foreground": "#1e40af",
1605
+ destructive: "#ef4444",
1606
+ "destructive-foreground": "#ffffff",
1607
+ border: "#e0e7ff",
1608
+ input: "#e0e7ff",
1609
+ ring: "#8b5cf6",
1610
+ "chart-1": "#8b5cf6",
1611
+ "chart-2": "#7c3aed",
1612
+ "chart-3": "#6d28d9",
1613
+ "chart-4": "#5b21b6",
1614
+ "chart-5": "#4c1d95",
1615
+ radius: "0.625rem",
1616
+ sidebar: "#f5f3ff",
1617
+ "sidebar-foreground": "#312e81",
1618
+ "sidebar-primary": "#8b5cf6",
1619
+ "sidebar-primary-foreground": "#ffffff",
1620
+ "sidebar-accent": "#dbeafe",
1621
+ "sidebar-accent-foreground": "#1e40af",
1622
+ "sidebar-border": "#e0e7ff",
1623
+ "sidebar-ring": "#8b5cf6",
1624
+ "font-sans": "Roboto, sans-serif",
1625
+ "font-serif": "Playfair Display, serif",
1626
+ "font-mono": "Fira Code, monospace",
1627
+ "shadow-color": "hsl(255 86% 66%)",
1628
+ "shadow-opacity": "0.2",
1629
+ "shadow-blur": "4px",
1630
+ "shadow-spread": "0px",
1631
+ "shadow-offset-x": "2px",
1632
+ "shadow-offset-y": "2px"
1633
+ },
1634
+ dark: {
1635
+ background: "#0f172a",
1636
+ foreground: "#e0e7ff",
1637
+ card: "#1e1b4b",
1638
+ "card-foreground": "#e0e7ff",
1639
+ popover: "#1e1b4b",
1640
+ "popover-foreground": "#e0e7ff",
1641
+ primary: "#8b5cf6",
1642
+ "primary-foreground": "#ffffff",
1643
+ secondary: "#1e1b4b",
1644
+ "secondary-foreground": "#e0e7ff",
1645
+ muted: "#1e1b4b",
1646
+ "muted-foreground": "#c4b5fd",
1647
+ accent: "#4338ca",
1648
+ "accent-foreground": "#e0e7ff",
1649
+ destructive: "#ef4444",
1650
+ "destructive-foreground": "#ffffff",
1651
+ border: "#2e1065",
1652
+ input: "#2e1065",
1653
+ ring: "#8b5cf6",
1654
+ "chart-1": "#a78bfa",
1655
+ "chart-2": "#8b5cf6",
1656
+ "chart-3": "#7c3aed",
1657
+ "chart-4": "#6d28d9",
1658
+ "chart-5": "#5b21b6",
1659
+ radius: "0.625rem",
1660
+ sidebar: "#0f172a",
1661
+ "sidebar-foreground": "#e0e7ff",
1662
+ "sidebar-primary": "#8b5cf6",
1663
+ "sidebar-primary-foreground": "#ffffff",
1664
+ "sidebar-accent": "#4338ca",
1665
+ "sidebar-accent-foreground": "#e0e7ff",
1666
+ "sidebar-border": "#2e1065",
1667
+ "sidebar-ring": "#8b5cf6"
1668
+ }
1669
+ }
1670
+ },
1671
+ "elegant-luxury": {
1672
+ label: "Elegant Luxury",
1673
+ styles: {
1674
+ light: {
1675
+ background: "#faf7f5",
1676
+ foreground: "#1a1a1a",
1677
+ card: "#faf7f5",
1678
+ "card-foreground": "#1a1a1a",
1679
+ popover: "#faf7f5",
1680
+ "popover-foreground": "#1a1a1a",
1681
+ primary: "#9b2c2c",
1682
+ "primary-foreground": "#ffffff",
1683
+ secondary: "#fdf2d6",
1684
+ "secondary-foreground": "#805500",
1685
+ muted: "#f0ebe8",
1686
+ "muted-foreground": "#57534e",
1687
+ accent: "#fef3c7",
1688
+ "accent-foreground": "#7f1d1d",
1689
+ destructive: "#991b1b",
1690
+ "destructive-foreground": "#ffffff",
1691
+ border: "#f5e8d2",
1692
+ input: "#f5e8d2",
1693
+ ring: "#9b2c2c",
1694
+ "chart-1": "#b91c1c",
1695
+ "chart-2": "#9b2c2c",
1696
+ "chart-3": "#7f1d1d",
1697
+ "chart-4": "#b45309",
1698
+ "chart-5": "#92400e",
1699
+ radius: "0.375rem",
1700
+ sidebar: "#f0ebe8",
1701
+ "sidebar-foreground": "#1a1a1a",
1702
+ "sidebar-primary": "#9b2c2c",
1703
+ "sidebar-primary-foreground": "#ffffff",
1704
+ "sidebar-accent": "#fef3c7",
1705
+ "sidebar-accent-foreground": "#7f1d1d",
1706
+ "sidebar-border": "#f5e8d2",
1707
+ "sidebar-ring": "#9b2c2c",
1708
+ "font-sans": "Poppins, sans-serif",
1709
+ "font-serif": "Libre Baskerville, serif",
1710
+ "font-mono": "IBM Plex Mono, monospace",
1711
+ "shadow-color": "hsl(0 63% 18%)",
1712
+ "shadow-opacity": "0.12",
1713
+ "shadow-blur": "16px",
1714
+ "shadow-spread": "-2px",
1715
+ "shadow-offset-x": "1px",
1716
+ "shadow-offset-y": "1px"
1717
+ },
1718
+ dark: {
1719
+ background: "#1c1917",
1720
+ foreground: "#f5f5f4",
1721
+ card: "#292524",
1722
+ "card-foreground": "#f5f5f4",
1723
+ popover: "#292524",
1724
+ "popover-foreground": "#f5f5f4",
1725
+ primary: "#b91c1c",
1726
+ "primary-foreground": "#faf7f5",
1727
+ secondary: "#92400e",
1728
+ "secondary-foreground": "#fef3c7",
1729
+ muted: "#292524",
1730
+ "muted-foreground": "#d6d3d1",
1731
+ accent: "#b45309",
1732
+ "accent-foreground": "#fef3c7",
1733
+ destructive: "#ef4444",
1734
+ "destructive-foreground": "#ffffff",
1735
+ border: "#44403c",
1736
+ input: "#44403c",
1737
+ ring: "#b91c1c",
1738
+ "chart-1": "#f87171",
1739
+ "chart-2": "#ef4444",
1740
+ "chart-3": "#dc2626",
1741
+ "chart-4": "#fbbf24",
1742
+ "chart-5": "#f59e0b",
1743
+ radius: "0.375rem",
1744
+ sidebar: "#1c1917",
1745
+ "sidebar-foreground": "#f5f5f4",
1746
+ "sidebar-primary": "#b91c1c",
1747
+ "sidebar-primary-foreground": "#faf7f5",
1748
+ "sidebar-accent": "#b45309",
1749
+ "sidebar-accent-foreground": "#fef3c7",
1750
+ "sidebar-border": "#44403c",
1751
+ "sidebar-ring": "#b91c1c"
1752
+ }
1753
+ }
1754
+ },
1755
+ "amber-minimal": {
1756
+ label: "Amber Minimal",
1757
+ createdAt: "2025-04-27",
1758
+ styles: {
1759
+ light: {
1760
+ background: "#ffffff",
1761
+ foreground: "#262626",
1762
+ card: "#ffffff",
1763
+ "card-foreground": "#262626",
1764
+ popover: "#ffffff",
1765
+ "popover-foreground": "#262626",
1766
+ primary: "#f59e0b",
1767
+ "primary-foreground": "#000000",
1768
+ secondary: "#f3f4f6",
1769
+ "secondary-foreground": "#4b5563",
1770
+ muted: "#f9fafb",
1771
+ "muted-foreground": "#6b7280",
1772
+ accent: "#fffbeb",
1773
+ "accent-foreground": "#92400e",
1774
+ destructive: "#ef4444",
1775
+ "destructive-foreground": "#ffffff",
1776
+ border: "#e5e7eb",
1777
+ input: "#e5e7eb",
1778
+ ring: "#f59e0b",
1779
+ "chart-1": "#f59e0b",
1780
+ "chart-2": "#d97706",
1781
+ "chart-3": "#b45309",
1782
+ "chart-4": "#92400e",
1783
+ "chart-5": "#78350f",
1784
+ sidebar: "#f9fafb",
1785
+ "sidebar-foreground": "#262626",
1786
+ "sidebar-primary": "#f59e0b",
1787
+ "sidebar-primary-foreground": "#ffffff",
1788
+ "sidebar-accent": "#fffbeb",
1789
+ "sidebar-accent-foreground": "#92400e",
1790
+ "sidebar-border": "#e5e7eb",
1791
+ "sidebar-ring": "#f59e0b",
1792
+ "font-sans": "Inter, sans-serif",
1793
+ "font-serif": "Source Serif 4, serif",
1794
+ "font-mono": "JetBrains Mono, monospace",
1795
+ radius: "0.375rem",
1796
+ "shadow-color": "hsl(0 0% 0%)",
1797
+ "shadow-opacity": "0.1",
1798
+ "shadow-blur": "8px",
1799
+ "shadow-spread": "-1px",
1800
+ "shadow-offset-x": "0px",
1801
+ "shadow-offset-y": "4px",
1802
+ "letter-spacing": "0em",
1803
+ spacing: "0.25rem"
1804
+ },
1805
+ dark: {
1806
+ background: "#171717",
1807
+ foreground: "#e5e5e5",
1808
+ card: "#262626",
1809
+ "card-foreground": "#e5e5e5",
1810
+ popover: "#262626",
1811
+ "popover-foreground": "#e5e5e5",
1812
+ primary: "#f59e0b",
1813
+ "primary-foreground": "#000000",
1814
+ secondary: "#262626",
1815
+ "secondary-foreground": "#e5e5e5",
1816
+ muted: "#262626",
1817
+ "muted-foreground": "#a3a3a3",
1818
+ accent: "#92400e",
1819
+ "accent-foreground": "#fde68a",
1820
+ destructive: "#ef4444",
1821
+ "destructive-foreground": "#ffffff",
1822
+ border: "#404040",
1823
+ input: "#404040",
1824
+ ring: "#f59e0b",
1825
+ "chart-1": "#fbbf24",
1826
+ "chart-2": "#d97706",
1827
+ "chart-3": "#92400e",
1828
+ "chart-4": "#b45309",
1829
+ "chart-5": "#92400e",
1830
+ sidebar: "#0f0f0f",
1831
+ "sidebar-foreground": "#e5e5e5",
1832
+ "sidebar-primary": "#f59e0b",
1833
+ "sidebar-primary-foreground": "#ffffff",
1834
+ "sidebar-accent": "#92400e",
1835
+ "sidebar-accent-foreground": "#fde68a",
1836
+ "sidebar-border": "#404040",
1837
+ "sidebar-ring": "#f59e0b"
1838
+ }
1839
+ }
1840
+ },
1841
+ supabase: {
1842
+ label: "Supabase",
1843
+ createdAt: "2025-04-27",
1844
+ styles: {
1845
+ light: {
1846
+ background: "#fcfcfc",
1847
+ foreground: "#171717",
1848
+ card: "#fcfcfc",
1849
+ "card-foreground": "#171717",
1850
+ popover: "#fcfcfc",
1851
+ "popover-foreground": "#525252",
1852
+ primary: "#72e3ad",
1853
+ "primary-foreground": "#1e2723",
1854
+ secondary: "#fdfdfd",
1855
+ "secondary-foreground": "#171717",
1856
+ muted: "#ededed",
1857
+ "muted-foreground": "#202020",
1858
+ accent: "#ededed",
1859
+ "accent-foreground": "#202020",
1860
+ destructive: "#ca3214",
1861
+ "destructive-foreground": "#fffcfc",
1862
+ border: "#dfdfdf",
1863
+ input: "#f6f6f6",
1864
+ ring: "#72e3ad",
1865
+ "chart-1": "#72e3ad",
1866
+ "chart-2": "#3b82f6",
1867
+ "chart-3": "#8b5cf6",
1868
+ "chart-4": "#f59e0b",
1869
+ "chart-5": "#10b981",
1870
+ sidebar: "#fcfcfc",
1871
+ "sidebar-foreground": "#707070",
1872
+ "sidebar-primary": "#72e3ad",
1873
+ "sidebar-primary-foreground": "#1e2723",
1874
+ "sidebar-accent": "#ededed",
1875
+ "sidebar-accent-foreground": "#202020",
1876
+ "sidebar-border": "#dfdfdf",
1877
+ "sidebar-ring": "#72e3ad",
1878
+ "font-sans": "Outfit, sans-serif",
1879
+ "font-serif": 'ui-serif, Georgia, Cambria, "Times New Roman", Times, serif',
1880
+ "font-mono": "monospace",
1881
+ radius: "0.5rem",
1882
+ "shadow-color": "#000000",
1883
+ "shadow-opacity": "0.17",
1884
+ "shadow-blur": "3px",
1885
+ "shadow-spread": "0px",
1886
+ "shadow-offset-x": "0px",
1887
+ "shadow-offset-y": "1px",
1888
+ "letter-spacing": "0.025em"
1889
+ },
1890
+ dark: {
1891
+ background: "#121212",
1892
+ foreground: "#e2e8f0",
1893
+ card: "#171717",
1894
+ "card-foreground": "#e2e8f0",
1895
+ popover: "#242424",
1896
+ "popover-foreground": "#a9a9a9",
1897
+ primary: "#006239",
1898
+ "primary-foreground": "#dde8e3",
1899
+ secondary: "#242424",
1900
+ "secondary-foreground": "#fafafa",
1901
+ muted: "#1f1f1f",
1902
+ "muted-foreground": "#a2a2a2",
1903
+ accent: "#313131",
1904
+ "accent-foreground": "#fafafa",
1905
+ destructive: "#541c15",
1906
+ "destructive-foreground": "#ede9e8",
1907
+ border: "#292929",
1908
+ input: "#242424",
1909
+ ring: "#4ade80",
1910
+ "chart-1": "#4ade80",
1911
+ "chart-2": "#60a5fa",
1912
+ "chart-3": "#a78bfa",
1913
+ "chart-4": "#fbbf24",
1914
+ "chart-5": "#2dd4bf",
1915
+ sidebar: "#121212",
1916
+ "sidebar-foreground": "#898989",
1917
+ "sidebar-primary": "#006239",
1918
+ "sidebar-primary-foreground": "#dde8e3",
1919
+ "sidebar-accent": "#313131",
1920
+ "sidebar-accent-foreground": "#fafafa",
1921
+ "sidebar-border": "#292929",
1922
+ "sidebar-ring": "#4ade80"
1923
+ }
1924
+ }
1925
+ },
1926
+ "neo-brutalism": {
1927
+ label: "Neo Brutalism",
1928
+ styles: {
1929
+ light: {
1930
+ background: "#ffffff",
1931
+ foreground: "#000000",
1932
+ card: "#ffffff",
1933
+ "card-foreground": "#000000",
1934
+ popover: "#ffffff",
1935
+ "popover-foreground": "#000000",
1936
+ primary: "#ff3333",
1937
+ "primary-foreground": "#ffffff",
1938
+ secondary: "#ffff00",
1939
+ "secondary-foreground": "#000000",
1940
+ muted: "#f0f0f0",
1941
+ "muted-foreground": "#333333",
1942
+ accent: "#0066ff",
1943
+ "accent-foreground": "#ffffff",
1944
+ destructive: "#000000",
1945
+ "destructive-foreground": "#ffffff",
1946
+ border: "#000000",
1947
+ input: "#000000",
1948
+ ring: "#ff3333",
1949
+ "chart-1": "#ff3333",
1950
+ "chart-2": "#ffff00",
1951
+ "chart-3": "#0066ff",
1952
+ "chart-4": "#00cc00",
1953
+ "chart-5": "#cc00cc",
1954
+ radius: "0px",
1955
+ sidebar: "#f0f0f0",
1956
+ "sidebar-foreground": "#000000",
1957
+ "sidebar-primary": "#ff3333",
1958
+ "sidebar-primary-foreground": "#ffffff",
1959
+ "sidebar-accent": "#0066ff",
1960
+ "sidebar-accent-foreground": "#ffffff",
1961
+ "sidebar-border": "#000000",
1962
+ "sidebar-ring": "#ff3333",
1963
+ "font-sans": "DM Sans, sans-serif",
1964
+ "font-mono": "Space Mono, monospace",
1965
+ "shadow-color": "hsl(0 0% 0%)",
1966
+ "shadow-opacity": "1",
1967
+ "shadow-blur": "0px",
1968
+ "shadow-spread": "0px",
1969
+ "shadow-offset-x": "4px",
1970
+ "shadow-offset-y": "4px"
1971
+ },
1972
+ dark: {
1973
+ background: "#000000",
1974
+ foreground: "#ffffff",
1975
+ card: "#333333",
1976
+ "card-foreground": "#ffffff",
1977
+ popover: "#333333",
1978
+ "popover-foreground": "#ffffff",
1979
+ primary: "#ff6666",
1980
+ "primary-foreground": "#000000",
1981
+ secondary: "#ffff33",
1982
+ "secondary-foreground": "#000000",
1983
+ muted: "#333333",
1984
+ "muted-foreground": "#cccccc",
1985
+ accent: "#3399ff",
1986
+ "accent-foreground": "#000000",
1987
+ destructive: "#ffffff",
1988
+ "destructive-foreground": "#000000",
1989
+ border: "#ffffff",
1990
+ input: "#ffffff",
1991
+ ring: "#ff6666",
1992
+ "chart-1": "#ff6666",
1993
+ "chart-2": "#ffff33",
1994
+ "chart-3": "#3399ff",
1995
+ "chart-4": "#33cc33",
1996
+ "chart-5": "#cc33cc",
1997
+ radius: "0px",
1998
+ sidebar: "#000000",
1999
+ "sidebar-foreground": "#ffffff",
2000
+ "sidebar-primary": "#ff6666",
2001
+ "sidebar-primary-foreground": "#000000",
2002
+ "sidebar-accent": "#3399ff",
2003
+ "sidebar-accent-foreground": "#000000",
2004
+ "sidebar-border": "#ffffff",
2005
+ "sidebar-ring": "#ff6666"
2006
+ }
2007
+ }
2008
+ },
2009
+ "solar-dusk": {
2010
+ label: "Solar Dusk",
2011
+ createdAt: "2025-04-12",
2012
+ styles: {
2013
+ light: {
2014
+ background: "#FDFBF7",
2015
+ foreground: "#4A3B33",
2016
+ card: "#F8F4EE",
2017
+ "card-foreground": "#4A3B33",
2018
+ popover: "#F8F4EE",
2019
+ "popover-foreground": "#4A3B33",
2020
+ primary: "#B45309",
2021
+ "primary-foreground": "#FFFFFF",
2022
+ secondary: "#E4C090",
2023
+ "secondary-foreground": "#57534E",
2024
+ muted: "#F1E9DA",
2025
+ "muted-foreground": "#78716C",
2026
+ accent: "#f2daba",
2027
+ "accent-foreground": "#57534E",
2028
+ destructive: "#991B1B",
2029
+ "destructive-foreground": "#FFFFFF",
2030
+ border: "#E4D9BC",
2031
+ input: "#E4D9BC",
2032
+ ring: "#B45309",
2033
+ "chart-1": "#B45309",
2034
+ "chart-2": "#78716C",
2035
+ "chart-3": "#A16207",
2036
+ "chart-4": "#78716C",
2037
+ "chart-5": "#CA8A04",
2038
+ radius: "0.3rem",
2039
+ sidebar: "#F1E9DA",
2040
+ "sidebar-foreground": "#4A3B33",
2041
+ "sidebar-primary": "#B45309",
2042
+ "sidebar-primary-foreground": "#FFFFFF",
2043
+ "sidebar-accent": "#A16207",
2044
+ "sidebar-accent-foreground": "#FFFFFF",
2045
+ "sidebar-border": "#E4D9BC",
2046
+ "sidebar-ring": "#B45309",
2047
+ "font-sans": "Oxanium, sans-serif",
2048
+ "font-serif": "Merriweather, serif",
2049
+ "font-mono": "Fira Code, monospace",
2050
+ "shadow-color": "hsl(28 18% 25%)",
2051
+ "shadow-opacity": "0.18",
2052
+ "shadow-blur": "3px",
2053
+ "shadow-spread": "0px",
2054
+ "shadow-offset-x": "0px",
2055
+ "shadow-offset-y": "2px"
2056
+ },
2057
+ dark: {
2058
+ background: "#1C1917",
2059
+ foreground: "#F5F5F4",
2060
+ card: "#292524",
2061
+ "card-foreground": "#F5F5F4",
2062
+ popover: "#292524",
2063
+ "popover-foreground": "#F5F5F4",
2064
+ primary: "#F97316",
2065
+ "primary-foreground": "#FFFFFF",
2066
+ secondary: "#57534E",
2067
+ "secondary-foreground": "#E7E5E4",
2068
+ muted: "#292524",
2069
+ "muted-foreground": "#A8A29E",
2070
+ accent: "#1e4252",
2071
+ "accent-foreground": "#E7E5E4",
2072
+ destructive: "#DC2626",
2073
+ "destructive-foreground": "#FFFFFF",
2074
+ border: "#44403C",
2075
+ input: "#44403C",
2076
+ ring: "#F97316",
2077
+ "chart-1": "#F97316",
2078
+ "chart-2": "#0EA5E9",
2079
+ "chart-3": "#EAB308",
2080
+ "chart-4": "#A8A29E",
2081
+ "chart-5": "#78716C",
2082
+ radius: "0.3rem",
2083
+ sidebar: "#292524",
2084
+ "sidebar-foreground": "#F5F5F4",
2085
+ "sidebar-primary": "#F97316",
2086
+ "sidebar-primary-foreground": "#FFFFFF",
2087
+ "sidebar-accent": "#0EA5E9",
2088
+ "sidebar-accent-foreground": "#0C2A4D",
2089
+ "sidebar-border": "#44403C",
2090
+ "sidebar-ring": "#F97316",
2091
+ "shadow-color": "hsl(0 0% 5%)"
2092
+ }
2093
+ }
2094
+ },
2095
+ claymorphism: {
2096
+ label: "Claymorphism",
2097
+ styles: {
2098
+ light: {
2099
+ background: "#e7e5e4",
2100
+ foreground: "#1e293b",
2101
+ card: "#f5f5f4",
2102
+ "card-foreground": "#1e293b",
2103
+ popover: "#f5f5f4",
2104
+ "popover-foreground": "#1e293b",
2105
+ primary: "#6366f1",
2106
+ "primary-foreground": "#ffffff",
2107
+ secondary: "#d6d3d1",
2108
+ "secondary-foreground": "#4b5563",
2109
+ muted: "#e7e5e4",
2110
+ "muted-foreground": "#6b7280",
2111
+ accent: "#f3e5f5",
2112
+ "accent-foreground": "#374151",
2113
+ destructive: "#ef4444",
2114
+ "destructive-foreground": "#ffffff",
2115
+ border: "#d6d3d1",
2116
+ input: "#d6d3d1",
2117
+ ring: "#6366f1",
2118
+ "chart-1": "#6366f1",
2119
+ "chart-2": "#4f46e5",
2120
+ "chart-3": "#4338ca",
2121
+ "chart-4": "#3730a3",
2122
+ "chart-5": "#312e81",
2123
+ radius: "1.25rem",
2124
+ sidebar: "#d6d3d1",
2125
+ "sidebar-foreground": "#1e293b",
2126
+ "sidebar-primary": "#6366f1",
2127
+ "sidebar-primary-foreground": "#ffffff",
2128
+ "sidebar-accent": "#f3e5f5",
2129
+ "sidebar-accent-foreground": "#374151",
2130
+ "sidebar-border": "#d6d3d1",
2131
+ "sidebar-ring": "#6366f1",
2132
+ "font-sans": "Plus Jakarta Sans, sans-serif",
2133
+ "font-serif": "Lora, serif",
2134
+ "font-mono": "Roboto Mono, monospace",
2135
+ "shadow-color": "hsl(240 4% 60%)",
2136
+ "shadow-opacity": "0.18",
2137
+ "shadow-blur": "10px",
2138
+ "shadow-spread": "4px",
2139
+ "shadow-offset-x": "2px",
2140
+ "shadow-offset-y": "2px"
2141
+ },
2142
+ dark: {
2143
+ background: "#1e1b18",
2144
+ foreground: "#e2e8f0",
2145
+ card: "#2c2825",
2146
+ "card-foreground": "#e2e8f0",
2147
+ popover: "#2c2825",
2148
+ "popover-foreground": "#e2e8f0",
2149
+ primary: "#818cf8",
2150
+ "primary-foreground": "#1e1b18",
2151
+ secondary: "#3a3633",
2152
+ "secondary-foreground": "#d1d5db",
2153
+ muted: "#2c2825",
2154
+ "muted-foreground": "#9ca3af",
2155
+ accent: "#484441",
2156
+ "accent-foreground": "#d1d5db",
2157
+ destructive: "#ef4444",
2158
+ "destructive-foreground": "#1e1b18",
2159
+ border: "#3a3633",
2160
+ input: "#3a3633",
2161
+ ring: "#818cf8",
2162
+ "chart-1": "#818cf8",
2163
+ "chart-2": "#6366f1",
2164
+ "chart-3": "#4f46e5",
2165
+ "chart-4": "#4338ca",
2166
+ "chart-5": "#3730a3",
2167
+ radius: "1.25rem",
2168
+ sidebar: "#3a3633",
2169
+ "sidebar-foreground": "#e2e8f0",
2170
+ "sidebar-primary": "#818cf8",
2171
+ "sidebar-primary-foreground": "#1e1b18",
2172
+ "sidebar-accent": "#484441",
2173
+ "sidebar-accent-foreground": "#d1d5db",
2174
+ "sidebar-border": "#3a3633",
2175
+ "sidebar-ring": "#818cf8",
2176
+ "shadow-color": "hsl(0 0% 0%)"
2177
+ }
2178
+ }
2179
+ },
2180
+ cyberpunk: {
2181
+ label: "Cyberpunk",
2182
+ styles: {
2183
+ light: {
2184
+ background: "#f8f9fa",
2185
+ foreground: "#0c0c1d",
2186
+ card: "#ffffff",
2187
+ "card-foreground": "#0c0c1d",
2188
+ popover: "#ffffff",
2189
+ "popover-foreground": "#0c0c1d",
2190
+ primary: "#ff00c8",
2191
+ "primary-foreground": "#ffffff",
2192
+ secondary: "#f0f0ff",
2193
+ "secondary-foreground": "#0c0c1d",
2194
+ muted: "#f0f0ff",
2195
+ "muted-foreground": "#0c0c1d",
2196
+ accent: "#00ffcc",
2197
+ "accent-foreground": "#0c0c1d",
2198
+ destructive: "#ff3d00",
2199
+ "destructive-foreground": "#ffffff",
2200
+ border: "#dfe6e9",
2201
+ input: "#dfe6e9",
2202
+ ring: "#ff00c8",
2203
+ "chart-1": "#ff00c8",
2204
+ "chart-2": "#9000ff",
2205
+ "chart-3": "#00e5ff",
2206
+ "chart-4": "#00ffcc",
2207
+ "chart-5": "#ffe600",
2208
+ radius: "0.5rem",
2209
+ sidebar: "#f0f0ff",
2210
+ "sidebar-foreground": "#0c0c1d",
2211
+ "sidebar-primary": "#ff00c8",
2212
+ "sidebar-primary-foreground": "#ffffff",
2213
+ "sidebar-accent": "#00ffcc",
2214
+ "sidebar-accent-foreground": "#0c0c1d",
2215
+ "sidebar-border": "#dfe6e9",
2216
+ "sidebar-ring": "#ff00c8",
2217
+ "font-sans": "Outfit, sans-serif",
2218
+ "font-mono": "Fira Code, monospace",
2219
+ "shadow-color": "hsl(0 0% 0%)",
2220
+ "shadow-opacity": "0.1",
2221
+ "shadow-blur": "8px",
2222
+ "shadow-spread": "-2px",
2223
+ "shadow-offset-x": "0px",
2224
+ "shadow-offset-y": "4px"
2225
+ },
2226
+ dark: {
2227
+ background: "#0c0c1d",
2228
+ foreground: "#eceff4",
2229
+ card: "#1e1e3f",
2230
+ "card-foreground": "#eceff4",
2231
+ popover: "#1e1e3f",
2232
+ "popover-foreground": "#eceff4",
2233
+ primary: "#ff00c8",
2234
+ "primary-foreground": "#ffffff",
2235
+ secondary: "#1e1e3f",
2236
+ "secondary-foreground": "#eceff4",
2237
+ muted: "#1e1e3f",
2238
+ "muted-foreground": "#8085a6",
2239
+ accent: "#00ffcc",
2240
+ "accent-foreground": "#0c0c1d",
2241
+ destructive: "#ff3d00",
2242
+ "destructive-foreground": "#ffffff",
2243
+ border: "#2e2e5e",
2244
+ input: "#2e2e5e",
2245
+ ring: "#ff00c8",
2246
+ "chart-1": "#ff00c8",
2247
+ "chart-2": "#9000ff",
2248
+ "chart-3": "#00e5ff",
2249
+ "chart-4": "#00ffcc",
2250
+ "chart-5": "#ffe600",
2251
+ radius: "0.5rem",
2252
+ sidebar: "#0c0c1d",
2253
+ "sidebar-foreground": "#eceff4",
2254
+ "sidebar-primary": "#ff00c8",
2255
+ "sidebar-primary-foreground": "#ffffff",
2256
+ "sidebar-accent": "#00ffcc",
2257
+ "sidebar-accent-foreground": "#0c0c1d",
2258
+ "sidebar-border": "#2e2e5e",
2259
+ "sidebar-ring": "#ff00c8"
2260
+ }
2261
+ }
2262
+ },
2263
+ "pastel-dreams": {
2264
+ label: "Pastel Dreams",
2265
+ styles: {
2266
+ light: {
2267
+ background: "#f7f3f9",
2268
+ foreground: "#374151",
2269
+ card: "#ffffff",
2270
+ "card-foreground": "#374151",
2271
+ popover: "#ffffff",
2272
+ "popover-foreground": "#374151",
2273
+ primary: "#a78bfa",
2274
+ "primary-foreground": "#ffffff",
2275
+ secondary: "#e9d8fd",
2276
+ "secondary-foreground": "#4b5563",
2277
+ muted: "#f3e8ff",
2278
+ "muted-foreground": "#6b7280",
2279
+ accent: "#f3e5f5",
2280
+ "accent-foreground": "#374151",
2281
+ destructive: "#fca5a5",
2282
+ "destructive-foreground": "#ffffff",
2283
+ border: "#e9d8fd",
2284
+ input: "#e9d8fd",
2285
+ ring: "#a78bfa",
2286
+ "chart-1": "#a78bfa",
2287
+ "chart-2": "#8b5cf6",
2288
+ "chart-3": "#7c3aed",
2289
+ "chart-4": "#6d28d9",
2290
+ "chart-5": "#5b21b6",
2291
+ radius: "1.5rem",
2292
+ sidebar: "#e9d8fd",
2293
+ "sidebar-foreground": "#374151",
2294
+ "sidebar-primary": "#a78bfa",
2295
+ "sidebar-primary-foreground": "#ffffff",
2296
+ "sidebar-accent": "#f3e5f5",
2297
+ "sidebar-accent-foreground": "#374151",
2298
+ "sidebar-border": "#e9d8fd",
2299
+ "sidebar-ring": "#a78bfa",
2300
+ "font-sans": "Open Sans, sans-serif",
2301
+ "font-serif": "Source Serif 4, serif",
2302
+ "font-mono": "IBM Plex Mono, monospace",
2303
+ "shadow-color": "hsl(0 0% 0%)",
2304
+ "shadow-opacity": "0.08",
2305
+ "shadow-blur": "16px",
2306
+ "shadow-spread": "-4px",
2307
+ "shadow-offset-x": "0px",
2308
+ "shadow-offset-y": "8px"
2309
+ },
2310
+ dark: {
2311
+ background: "#1c1917",
2312
+ foreground: "#e0e7ff",
2313
+ card: "#2d2535",
2314
+ "card-foreground": "#e0e7ff",
2315
+ popover: "#2d2535",
2316
+ "popover-foreground": "#e0e7ff",
2317
+ primary: "#c0aafd",
2318
+ "primary-foreground": "#1c1917",
2319
+ secondary: "#3f324a",
2320
+ "secondary-foreground": "#d1d5db",
2321
+ muted: "#2d2535",
2322
+ "muted-foreground": "#9ca3af",
2323
+ accent: "#4a3d5a",
2324
+ "accent-foreground": "#d1d5db",
2325
+ destructive: "#fca5a5",
2326
+ "destructive-foreground": "#1c1917",
2327
+ border: "#3f324a",
2328
+ input: "#3f324a",
2329
+ ring: "#c0aafd",
2330
+ "chart-1": "#c0aafd",
2331
+ "chart-2": "#a78bfa",
2332
+ "chart-3": "#8b5cf6",
2333
+ "chart-4": "#7c3aed",
2334
+ "chart-5": "#6d28d9",
2335
+ radius: "1.5rem",
2336
+ sidebar: "#3f324a",
2337
+ "sidebar-foreground": "#e0e7ff",
2338
+ "sidebar-primary": "#c0aafd",
2339
+ "sidebar-primary-foreground": "#1c1917",
2340
+ "sidebar-accent": "#4a3d5a",
2341
+ "sidebar-accent-foreground": "#d1d5db",
2342
+ "sidebar-border": "#3f324a",
2343
+ "sidebar-ring": "#c0aafd"
2344
+ }
2345
+ }
2346
+ },
2347
+ "clean-slate": {
2348
+ label: "Clean Slate",
2349
+ styles: {
2350
+ light: {
2351
+ background: "#f8fafc",
2352
+ foreground: "#1e293b",
2353
+ card: "#ffffff",
2354
+ "card-foreground": "#1e293b",
2355
+ popover: "#ffffff",
2356
+ "popover-foreground": "#1e293b",
2357
+ primary: "#6366f1",
2358
+ "primary-foreground": "#ffffff",
2359
+ secondary: "#e5e7eb",
2360
+ "secondary-foreground": "#374151",
2361
+ muted: "#f3f4f6",
2362
+ "muted-foreground": "#6b7280",
2363
+ accent: "#e0e7ff",
2364
+ "accent-foreground": "#374151",
2365
+ destructive: "#ef4444",
2366
+ "destructive-foreground": "#ffffff",
2367
+ border: "#d1d5db",
2368
+ input: "#d1d5db",
2369
+ ring: "#6366f1",
2370
+ "chart-1": "#6366f1",
2371
+ "chart-2": "#4f46e5",
2372
+ "chart-3": "#4338ca",
2373
+ "chart-4": "#3730a3",
2374
+ "chart-5": "#312e81",
2375
+ radius: "0.5rem",
2376
+ sidebar: "#f3f4f6",
2377
+ "sidebar-foreground": "#1e293b",
2378
+ "sidebar-primary": "#6366f1",
2379
+ "sidebar-primary-foreground": "#ffffff",
2380
+ "sidebar-accent": "#e0e7ff",
2381
+ "sidebar-accent-foreground": "#374151",
2382
+ "sidebar-border": "#d1d5db",
2383
+ "sidebar-ring": "#6366f1",
2384
+ "font-sans": "Inter, sans-serif",
2385
+ "font-serif": "Merriweather, serif",
2386
+ "font-mono": "JetBrains Mono, monospace",
2387
+ "shadow-color": "hsl(0 0% 0%)",
2388
+ "shadow-opacity": "0.1",
2389
+ "shadow-blur": "8px",
2390
+ "shadow-spread": "-1px",
2391
+ "shadow-offset-x": "0px",
2392
+ "shadow-offset-y": "4px"
2393
+ },
2394
+ dark: {
2395
+ background: "#0f172a",
2396
+ foreground: "#e2e8f0",
2397
+ card: "#1e293b",
2398
+ "card-foreground": "#e2e8f0",
2399
+ popover: "#1e293b",
2400
+ "popover-foreground": "#e2e8f0",
2401
+ primary: "#818cf8",
2402
+ "primary-foreground": "#0f172a",
2403
+ secondary: "#2d3748",
2404
+ "secondary-foreground": "#d1d5db",
2405
+ muted: "#1e293b",
2406
+ "muted-foreground": "#9ca3af",
2407
+ accent: "#374151",
2408
+ "accent-foreground": "#d1d5db",
2409
+ destructive: "#ef4444",
2410
+ "destructive-foreground": "#0f172a",
2411
+ border: "#4b5563",
2412
+ input: "#4b5563",
2413
+ ring: "#818cf8",
2414
+ "chart-1": "#818cf8",
2415
+ "chart-2": "#6366f1",
2416
+ "chart-3": "#4f46e5",
2417
+ "chart-4": "#4338ca",
2418
+ "chart-5": "#3730a3",
2419
+ radius: "0.5rem",
2420
+ sidebar: "#1e293b",
2421
+ "sidebar-foreground": "#e2e8f0",
2422
+ "sidebar-primary": "#818cf8",
2423
+ "sidebar-primary-foreground": "#0f172a",
2424
+ "sidebar-accent": "#374151",
2425
+ "sidebar-accent-foreground": "#d1d5db",
2426
+ "sidebar-border": "#4b5563",
2427
+ "sidebar-ring": "#818cf8"
2428
+ }
2429
+ }
2430
+ },
2431
+ caffeine: {
2432
+ label: "Caffeine",
2433
+ styles: {
2434
+ light: {
2435
+ background: "#f9f9f9",
2436
+ foreground: "#202020",
2437
+ card: "#fcfcfc",
2438
+ "card-foreground": "#202020",
2439
+ popover: "#fcfcfc",
2440
+ "popover-foreground": "#202020",
2441
+ primary: "#644a40",
2442
+ "primary-foreground": "#ffffff",
2443
+ secondary: "#ffdfb5",
2444
+ "secondary-foreground": "#582d1d",
2445
+ muted: "#efefef",
2446
+ "muted-foreground": "#646464",
2447
+ accent: "#e8e8e8",
2448
+ "accent-foreground": "#202020",
2449
+ destructive: "#e54d2e",
2450
+ "destructive-foreground": "#ffffff",
2451
+ border: "#d8d8d8",
2452
+ input: "#d8d8d8",
2453
+ ring: "#644a40",
2454
+ "chart-1": "#644a40",
2455
+ "chart-2": "#ffdfb5",
2456
+ "chart-3": "#e8e8e8",
2457
+ "chart-4": "#ffe6c4",
2458
+ "chart-5": "#66493e",
2459
+ sidebar: "#fbfbfb",
2460
+ "sidebar-foreground": "#252525",
2461
+ "sidebar-primary": "#343434",
2462
+ "sidebar-primary-foreground": "#fbfbfb",
2463
+ "sidebar-accent": "#f7f7f7",
2464
+ "sidebar-accent-foreground": "#343434",
2465
+ "sidebar-border": "#ebebeb",
2466
+ "sidebar-ring": "#b5b5b5",
2467
+ radius: "0.5rem"
2468
+ },
2469
+ dark: {
2470
+ background: "#111111",
2471
+ foreground: "#eeeeee",
2472
+ card: "#191919",
2473
+ "card-foreground": "#eeeeee",
2474
+ popover: "#191919",
2475
+ "popover-foreground": "#eeeeee",
2476
+ primary: "#ffe0c2",
2477
+ "primary-foreground": "#081a1b",
2478
+ secondary: "#393028",
2479
+ "secondary-foreground": "#ffe0c2",
2480
+ muted: "#222222",
2481
+ "muted-foreground": "#b4b4b4",
2482
+ accent: "#2a2a2a",
2483
+ "accent-foreground": "#eeeeee",
2484
+ destructive: "#e54d2e",
2485
+ "destructive-foreground": "#ffffff",
2486
+ border: "#201e18",
2487
+ input: "#484848",
2488
+ ring: "#ffe0c2",
2489
+ "chart-1": "#ffe0c2",
2490
+ "chart-2": "#393028",
2491
+ "chart-3": "#2a2a2a",
2492
+ "chart-4": "#42382e",
2493
+ "chart-5": "#ffe0c1",
2494
+ sidebar: "#18181b",
2495
+ "sidebar-foreground": "#f4f4f5",
2496
+ "sidebar-primary": "#1d4ed8",
2497
+ "sidebar-primary-foreground": "#ffffff",
2498
+ "sidebar-accent": "#27272a",
2499
+ "sidebar-accent-foreground": "#f4f4f5",
2500
+ "sidebar-border": "#27272a",
2501
+ "sidebar-ring": "#d4d4d8",
2502
+ radius: "0.5rem"
2503
+ }
2504
+ }
2505
+ },
2506
+ "ocean-breeze": {
2507
+ label: "Ocean Breeze",
2508
+ styles: {
2509
+ light: {
2510
+ background: "#f0f8ff",
2511
+ foreground: "#374151",
2512
+ card: "#ffffff",
2513
+ "card-foreground": "#374151",
2514
+ popover: "#ffffff",
2515
+ "popover-foreground": "#374151",
2516
+ primary: "#22c55e",
2517
+ "primary-foreground": "#ffffff",
2518
+ secondary: "#e0f2fe",
2519
+ "secondary-foreground": "#4b5563",
2520
+ muted: "#f3f4f6",
2521
+ "muted-foreground": "#6b7280",
2522
+ accent: "#d1fae5",
2523
+ "accent-foreground": "#374151",
2524
+ destructive: "#ef4444",
2525
+ "destructive-foreground": "#ffffff",
2526
+ border: "#e5e7eb",
2527
+ input: "#e5e7eb",
2528
+ ring: "#22c55e",
2529
+ "chart-1": "#22c55e",
2530
+ "chart-2": "#10b981",
2531
+ "chart-3": "#059669",
2532
+ "chart-4": "#047857",
2533
+ "chart-5": "#065f46",
2534
+ radius: "0.5rem",
2535
+ sidebar: "#e0f2fe",
2536
+ "sidebar-foreground": "#374151",
2537
+ "sidebar-primary": "#22c55e",
2538
+ "sidebar-primary-foreground": "#ffffff",
2539
+ "sidebar-accent": "#d1fae5",
2540
+ "sidebar-accent-foreground": "#374151",
2541
+ "sidebar-border": "#e5e7eb",
2542
+ "sidebar-ring": "#22c55e",
2543
+ "font-sans": "DM Sans, sans-serif",
2544
+ "font-serif": "Lora, serif",
2545
+ "font-mono": "IBM Plex Mono, monospace",
2546
+ "shadow-color": "hsl(0 0% 0%)",
2547
+ "shadow-opacity": "0.1",
2548
+ "shadow-blur": "8px",
2549
+ "shadow-spread": "-1px",
2550
+ "shadow-offset-x": "0px",
2551
+ "shadow-offset-y": "4px"
2552
+ },
2553
+ dark: {
2554
+ background: "#0f172a",
2555
+ foreground: "#d1d5db",
2556
+ card: "#1e293b",
2557
+ "card-foreground": "#d1d5db",
2558
+ popover: "#1e293b",
2559
+ "popover-foreground": "#d1d5db",
2560
+ primary: "#34d399",
2561
+ "primary-foreground": "#0f172a",
2562
+ secondary: "#2d3748",
2563
+ "secondary-foreground": "#a1a1aa",
2564
+ muted: "#1e293b",
2565
+ "muted-foreground": "#6b7280",
2566
+ accent: "#374151",
2567
+ "accent-foreground": "#a1a1aa",
2568
+ destructive: "#ef4444",
2569
+ "destructive-foreground": "#0f172a",
2570
+ border: "#4b5563",
2571
+ input: "#4b5563",
2572
+ ring: "#34d399",
2573
+ "chart-1": "#34d399",
2574
+ "chart-2": "#2dd4bf",
2575
+ "chart-3": "#22c55e",
2576
+ "chart-4": "#10b981",
2577
+ "chart-5": "#059669",
2578
+ radius: "0.5rem",
2579
+ sidebar: "#1e293b",
2580
+ "sidebar-foreground": "#d1d5db",
2581
+ "sidebar-primary": "#34d399",
2582
+ "sidebar-primary-foreground": "#0f172a",
2583
+ "sidebar-accent": "#374151",
2584
+ "sidebar-accent-foreground": "#a1a1aa",
2585
+ "sidebar-border": "#4b5563",
2586
+ "sidebar-ring": "#34d399"
2587
+ }
2588
+ }
2589
+ },
2590
+ "retro-arcade": {
2591
+ label: "Retro Arcade",
2592
+ styles: {
2593
+ light: {
2594
+ background: "#fdf6e3",
2595
+ foreground: "#073642",
2596
+ card: "#eee8d5",
2597
+ "card-foreground": "#073642",
2598
+ popover: "#eee8d5",
2599
+ "popover-foreground": "#073642",
2600
+ primary: "#d33682",
2601
+ "primary-foreground": "#ffffff",
2602
+ secondary: "#2aa198",
2603
+ "secondary-foreground": "#ffffff",
2604
+ muted: "#93a1a1",
2605
+ "muted-foreground": "#073642",
2606
+ accent: "#cb4b16",
2607
+ "accent-foreground": "#ffffff",
2608
+ destructive: "#dc322f",
2609
+ "destructive-foreground": "#ffffff",
2610
+ border: "#839496",
2611
+ input: "#839496",
2612
+ ring: "#d33682",
2613
+ "chart-1": "#268bd2",
2614
+ "chart-2": "#2aa198",
2615
+ "chart-3": "#d33682",
2616
+ "chart-4": "#cb4b16",
2617
+ "chart-5": "#dc322f",
2618
+ radius: "0.25rem",
2619
+ sidebar: "#fdf6e3",
2620
+ "sidebar-foreground": "#073642",
2621
+ "sidebar-primary": "#d33682",
2622
+ "sidebar-primary-foreground": "#ffffff",
2623
+ "sidebar-accent": "#2aa198",
2624
+ "sidebar-accent-foreground": "#ffffff",
2625
+ "sidebar-border": "#839496",
2626
+ "sidebar-ring": "#d33682",
2627
+ "font-sans": "Outfit, sans-serif",
2628
+ "font-mono": "Space Mono, monospace",
2629
+ "shadow-color": "hsl(196 83% 10%)",
2630
+ "shadow-opacity": "0.15",
2631
+ "shadow-blur": "4px",
2632
+ "shadow-spread": "0px",
2633
+ "shadow-offset-x": "2px",
2634
+ "shadow-offset-y": "2px"
2635
+ },
2636
+ dark: {
2637
+ background: "#002b36",
2638
+ foreground: "#93a1a1",
2639
+ card: "#073642",
2640
+ "card-foreground": "#93a1a1",
2641
+ popover: "#073642",
2642
+ "popover-foreground": "#93a1a1",
2643
+ primary: "#d33682",
2644
+ "primary-foreground": "#ffffff",
2645
+ secondary: "#2aa198",
2646
+ "secondary-foreground": "#ffffff",
2647
+ muted: "#586e75",
2648
+ "muted-foreground": "#93a1a1",
2649
+ accent: "#cb4b16",
2650
+ "accent-foreground": "#ffffff",
2651
+ destructive: "#dc322f",
2652
+ "destructive-foreground": "#ffffff",
2653
+ border: "#586e75",
2654
+ input: "#586e75",
2655
+ ring: "#d33682",
2656
+ "chart-1": "#268bd2",
2657
+ "chart-2": "#2aa198",
2658
+ "chart-3": "#d33682",
2659
+ "chart-4": "#cb4b16",
2660
+ "chart-5": "#dc322f",
2661
+ radius: "0.25rem",
2662
+ sidebar: "#002b36",
2663
+ "sidebar-foreground": "#93a1a1",
2664
+ "sidebar-primary": "#d33682",
2665
+ "sidebar-primary-foreground": "#ffffff",
2666
+ "sidebar-accent": "#2aa198",
2667
+ "sidebar-accent-foreground": "#ffffff",
2668
+ "sidebar-border": "#586e75",
2669
+ "sidebar-ring": "#d33682"
2670
+ }
2671
+ }
2672
+ },
2673
+ "midnight-bloom": {
2674
+ label: "Midnight Bloom",
2675
+ styles: {
2676
+ light: {
2677
+ background: "#f9f9f9",
2678
+ foreground: "#333333",
2679
+ card: "#ffffff",
2680
+ "card-foreground": "#333333",
2681
+ popover: "#ffffff",
2682
+ "popover-foreground": "#333333",
2683
+ primary: "#6c5ce7",
2684
+ "primary-foreground": "#ffffff",
2685
+ secondary: "#a1c9f2",
2686
+ "secondary-foreground": "#333333",
2687
+ muted: "#c9c4b5",
2688
+ "muted-foreground": "#6e6e6e",
2689
+ accent: "#8b9467",
2690
+ "accent-foreground": "#ffffff",
2691
+ destructive: "#ef4444",
2692
+ "destructive-foreground": "#ffffff",
2693
+ border: "#d4d4d4",
2694
+ input: "#d4d4d4",
2695
+ ring: "#6c5ce7",
2696
+ "chart-1": "#6c5ce7",
2697
+ "chart-2": "#8e44ad",
2698
+ "chart-3": "#4b0082",
2699
+ "chart-4": "#6495ed",
2700
+ "chart-5": "#4682b4",
2701
+ radius: "0.5rem",
2702
+ sidebar: "#f9f9f9",
2703
+ "sidebar-foreground": "#333333",
2704
+ "sidebar-primary": "#6c5ce7",
2705
+ "sidebar-primary-foreground": "#ffffff",
2706
+ "sidebar-accent": "#8b9467",
2707
+ "sidebar-accent-foreground": "#ffffff",
2708
+ "sidebar-border": "#d4d4d4",
2709
+ "sidebar-ring": "#6c5ce7",
2710
+ "font-sans": "Montserrat, sans-serif",
2711
+ "font-serif": "Playfair Display, serif",
2712
+ "font-mono": "Source Code Pro, monospace",
2713
+ "shadow-color": "hsl(0 0% 0%)",
2714
+ "shadow-opacity": "0.1",
2715
+ "shadow-blur": "10px",
2716
+ "shadow-spread": "-2px",
2717
+ "shadow-offset-x": "0px",
2718
+ "shadow-offset-y": "5px"
2719
+ },
2720
+ dark: {
2721
+ background: "#1a1d23",
2722
+ foreground: "#e5e5e5",
2723
+ card: "#2f3436",
2724
+ "card-foreground": "#e5e5e5",
2725
+ popover: "#2f3436",
2726
+ "popover-foreground": "#e5e5e5",
2727
+ primary: "#6c5ce7",
2728
+ "primary-foreground": "#ffffff",
2729
+ secondary: "#4b0082",
2730
+ "secondary-foreground": "#e5e5e5",
2731
+ muted: "#444444",
2732
+ "muted-foreground": "#a3a3a3",
2733
+ accent: "#6495ed",
2734
+ "accent-foreground": "#e5e5e5",
2735
+ destructive: "#ef4444",
2736
+ "destructive-foreground": "#ffffff",
2737
+ border: "#444444",
2738
+ input: "#444444",
2739
+ ring: "#6c5ce7",
2740
+ "chart-1": "#6c5ce7",
2741
+ "chart-2": "#8e44ad",
2742
+ "chart-3": "#4b0082",
2743
+ "chart-4": "#6495ed",
2744
+ "chart-5": "#4682b4",
2745
+ radius: "0.5rem",
2746
+ sidebar: "#1a1d23",
2747
+ "sidebar-foreground": "#e5e5e5",
2748
+ "sidebar-primary": "#6c5ce7",
2749
+ "sidebar-primary-foreground": "#ffffff",
2750
+ "sidebar-accent": "#6495ed",
2751
+ "sidebar-accent-foreground": "#e5e5e5",
2752
+ "sidebar-border": "#444444",
2753
+ "sidebar-ring": "#6c5ce7"
2754
+ }
2755
+ }
2756
+ },
2757
+ candyland: {
2758
+ label: "Candyland",
2759
+ styles: {
2760
+ light: {
2761
+ background: "#f7f9fa",
2762
+ foreground: "#333333",
2763
+ card: "#ffffff",
2764
+ "card-foreground": "#333333",
2765
+ popover: "#ffffff",
2766
+ "popover-foreground": "#333333",
2767
+ primary: "#ffc0cb",
2768
+ "primary-foreground": "#000000",
2769
+ secondary: "#87ceeb",
2770
+ "secondary-foreground": "#000000",
2771
+ muted: "#ddd9c4",
2772
+ "muted-foreground": "#6e6e6e",
2773
+ accent: "#ffff00",
2774
+ "accent-foreground": "#000000",
2775
+ destructive: "#ef4444",
2776
+ "destructive-foreground": "#ffffff",
2777
+ border: "#d4d4d4",
2778
+ input: "#d4d4d4",
2779
+ ring: "#ffc0cb",
2780
+ "chart-1": "#ffc0cb",
2781
+ "chart-2": "#87ceeb",
2782
+ "chart-3": "#ffff00",
2783
+ "chart-4": "#ff99cc",
2784
+ "chart-5": "#33cc33",
2785
+ radius: "0.5rem",
2786
+ sidebar: "#f7f9fa",
2787
+ "sidebar-foreground": "#333333",
2788
+ "sidebar-primary": "#ffc0cb",
2789
+ "sidebar-primary-foreground": "#000000",
2790
+ "sidebar-accent": "#ffff00",
2791
+ "sidebar-accent-foreground": "#000000",
2792
+ "sidebar-border": "#d4d4d4",
2793
+ "sidebar-ring": "#ffc0cb",
2794
+ "font-sans": "Poppins, sans-serif",
2795
+ "font-mono": "Roboto Mono, monospace"
2796
+ },
2797
+ dark: {
2798
+ background: "#1a1d23",
2799
+ foreground: "#e5e5e5",
2800
+ card: "#2f3436",
2801
+ "card-foreground": "#e5e5e5",
2802
+ popover: "#2f3436",
2803
+ "popover-foreground": "#e5e5e5",
2804
+ primary: "#ff99cc",
2805
+ "primary-foreground": "#000000",
2806
+ secondary: "#33cc33",
2807
+ "secondary-foreground": "#000000",
2808
+ muted: "#444444",
2809
+ "muted-foreground": "#a3a3a3",
2810
+ accent: "#87ceeb",
2811
+ "accent-foreground": "#000000",
2812
+ destructive: "#ef4444",
2813
+ "destructive-foreground": "#ffffff",
2814
+ border: "#444444",
2815
+ input: "#444444",
2816
+ ring: "#ff99cc",
2817
+ "chart-1": "#ff99cc",
2818
+ "chart-2": "#33cc33",
2819
+ "chart-3": "#87ceeb",
2820
+ "chart-4": "#ffff00",
2821
+ "chart-5": "#ffcc00",
2822
+ radius: "0.5rem",
2823
+ sidebar: "#1a1d23",
2824
+ "sidebar-foreground": "#e5e5e5",
2825
+ "sidebar-primary": "#ff99cc",
2826
+ "sidebar-primary-foreground": "#000000",
2827
+ "sidebar-accent": "#87ceeb",
2828
+ "sidebar-accent-foreground": "#000000",
2829
+ "sidebar-border": "#444444",
2830
+ "sidebar-ring": "#ff99cc"
2831
+ }
2832
+ }
2833
+ },
2834
+ "northern-lights": {
2835
+ label: "Northern Lights",
2836
+ styles: {
2837
+ light: {
2838
+ background: "#f9f9fa",
2839
+ foreground: "#333333",
2840
+ card: "#ffffff",
2841
+ "card-foreground": "#333333",
2842
+ popover: "#ffffff",
2843
+ "popover-foreground": "#333333",
2844
+ primary: "#34a85a",
2845
+ "primary-foreground": "#ffffff",
2846
+ secondary: "#6495ed",
2847
+ "secondary-foreground": "#ffffff",
2848
+ muted: "#ddd9c4",
2849
+ "muted-foreground": "#6e6e6e",
2850
+ accent: "#66d9ef",
2851
+ "accent-foreground": "#333333",
2852
+ destructive: "#ef4444",
2853
+ "destructive-foreground": "#ffffff",
2854
+ border: "#d4d4d4",
2855
+ input: "#d4d4d4",
2856
+ ring: "#34a85a",
2857
+ "chart-1": "#34a85a",
2858
+ "chart-2": "#6495ed",
2859
+ "chart-3": "#66d9ef",
2860
+ "chart-4": "#4682b4",
2861
+ "chart-5": "#1a9641",
2862
+ radius: "0.5rem",
2863
+ sidebar: "#f9f9fa",
2864
+ "sidebar-foreground": "#333333",
2865
+ "sidebar-primary": "#34a85a",
2866
+ "sidebar-primary-foreground": "#ffffff",
2867
+ "sidebar-accent": "#66d9ef",
2868
+ "sidebar-accent-foreground": "#333333",
2869
+ "sidebar-border": "#d4d4d4",
2870
+ "sidebar-ring": "#34a85a",
2871
+ "font-sans": "Plus Jakarta Sans, sans-serif",
2872
+ "font-serif": "Source Serif 4, serif",
2873
+ "font-mono": "JetBrains Mono, monospace"
2874
+ },
2875
+ dark: {
2876
+ background: "#1a1d23",
2877
+ foreground: "#e5e5e5",
2878
+ card: "#2f3436",
2879
+ "card-foreground": "#e5e5e5",
2880
+ popover: "#2f3436",
2881
+ "popover-foreground": "#e5e5e5",
2882
+ primary: "#34a85a",
2883
+ "primary-foreground": "#ffffff",
2884
+ secondary: "#4682b4",
2885
+ "secondary-foreground": "#e5e5e5",
2886
+ muted: "#444444",
2887
+ "muted-foreground": "#a3a3a3",
2888
+ accent: "#6495ed",
2889
+ "accent-foreground": "#e5e5e5",
2890
+ destructive: "#ef4444",
2891
+ "destructive-foreground": "#ffffff",
2892
+ border: "#444444",
2893
+ input: "#444444",
2894
+ ring: "#34a85a",
2895
+ "chart-1": "#34a85a",
2896
+ "chart-2": "#4682b4",
2897
+ "chart-3": "#6495ed",
2898
+ "chart-4": "#66d9ef",
2899
+ "chart-5": "#1a9641",
2900
+ radius: "0.5rem",
2901
+ sidebar: "#1a1d23",
2902
+ "sidebar-foreground": "#e5e5e5",
2903
+ "sidebar-primary": "#34a85a",
2904
+ "sidebar-primary-foreground": "#ffffff",
2905
+ "sidebar-accent": "#6495ed",
2906
+ "sidebar-accent-foreground": "#e5e5e5",
2907
+ "sidebar-border": "#444444",
2908
+ "sidebar-ring": "#34a85a"
2909
+ }
2910
+ }
2911
+ },
2912
+ "vintage-paper": {
2913
+ label: "Vintage Paper",
2914
+ styles: {
2915
+ light: {
2916
+ background: "#f5f1e6",
2917
+ foreground: "#4a3f35",
2918
+ card: "#fffcf5",
2919
+ "card-foreground": "#4a3f35",
2920
+ popover: "#fffcf5",
2921
+ "popover-foreground": "#4a3f35",
2922
+ primary: "#a67c52",
2923
+ "primary-foreground": "#ffffff",
2924
+ secondary: "#e2d8c3",
2925
+ "secondary-foreground": "#5c4d3f",
2926
+ muted: "#ece5d8",
2927
+ "muted-foreground": "#7d6b56",
2928
+ accent: "#d4c8aa",
2929
+ "accent-foreground": "#4a3f35",
2930
+ destructive: "#b54a35",
2931
+ "destructive-foreground": "#ffffff",
2932
+ border: "#dbd0ba",
2933
+ input: "#dbd0ba",
2934
+ ring: "#a67c52",
2935
+ "chart-1": "#a67c52",
2936
+ "chart-2": "#8d6e4c",
2937
+ "chart-3": "#735a3a",
2938
+ "chart-4": "#b3906f",
2939
+ "chart-5": "#c0a080",
2940
+ radius: "0.25rem",
2941
+ sidebar: "#ece5d8",
2942
+ "sidebar-foreground": "#4a3f35",
2943
+ "sidebar-primary": "#a67c52",
2944
+ "sidebar-primary-foreground": "#ffffff",
2945
+ "sidebar-accent": "#d4c8aa",
2946
+ "sidebar-accent-foreground": "#4a3f35",
2947
+ "sidebar-border": "#dbd0ba",
2948
+ "sidebar-ring": "#a67c52",
2949
+ "font-sans": "Libre Baskerville, serif",
2950
+ "font-serif": "Lora, serif",
2951
+ "font-mono": "IBM Plex Mono, monospace",
2952
+ "shadow-color": "hsl(28 13% 20%)",
2953
+ "shadow-opacity": "0.12",
2954
+ "shadow-blur": "5px",
2955
+ "shadow-spread": "0px",
2956
+ "shadow-offset-x": "2px",
2957
+ "shadow-offset-y": "3px"
2958
+ },
2959
+ dark: {
2960
+ background: "#2d2621",
2961
+ foreground: "#ece5d8",
2962
+ card: "#3a322c",
2963
+ "card-foreground": "#ece5d8",
2964
+ popover: "#3a322c",
2965
+ "popover-foreground": "#ece5d8",
2966
+ primary: "#c0a080",
2967
+ "primary-foreground": "#2d2621",
2968
+ secondary: "#4a4039",
2969
+ "secondary-foreground": "#ece5d8",
2970
+ muted: "#3a322c",
2971
+ "muted-foreground": "#c5bcac",
2972
+ accent: "#59493e",
2973
+ "accent-foreground": "#ece5d8",
2974
+ destructive: "#b54a35",
2975
+ "destructive-foreground": "#ffffff",
2976
+ border: "#4a4039",
2977
+ input: "#4a4039",
2978
+ ring: "#c0a080",
2979
+ "chart-1": "#c0a080",
2980
+ "chart-2": "#b3906f",
2981
+ "chart-3": "#a67c52",
2982
+ "chart-4": "#8d6e4c",
2983
+ "chart-5": "#735a3a",
2984
+ radius: "0.25rem",
2985
+ sidebar: "#2d2621",
2986
+ "sidebar-foreground": "#ece5d8",
2987
+ "sidebar-primary": "#c0a080",
2988
+ "sidebar-primary-foreground": "#2d2621",
2989
+ "sidebar-accent": "#59493e",
2990
+ "sidebar-accent-foreground": "#ece5d8",
2991
+ "sidebar-border": "#4a4039",
2992
+ "sidebar-ring": "#c0a080"
2993
+ }
2994
+ }
2995
+ },
2996
+ "sunset-horizon": {
2997
+ label: "Sunset Horizon",
2998
+ styles: {
2999
+ light: {
3000
+ background: "#fff9f5",
3001
+ foreground: "#3d3436",
3002
+ card: "#ffffff",
3003
+ "card-foreground": "#3d3436",
3004
+ popover: "#ffffff",
3005
+ "popover-foreground": "#3d3436",
3006
+ primary: "#ff7e5f",
3007
+ "primary-foreground": "#ffffff",
3008
+ secondary: "#ffedea",
3009
+ "secondary-foreground": "#b35340",
3010
+ muted: "#fff0eb",
3011
+ "muted-foreground": "#78716C",
3012
+ accent: "#feb47b",
3013
+ "accent-foreground": "#3d3436",
3014
+ destructive: "#e63946",
3015
+ "destructive-foreground": "#ffffff",
3016
+ border: "#ffe0d6",
3017
+ input: "#ffe0d6",
3018
+ ring: "#ff7e5f",
3019
+ "chart-1": "#ff7e5f",
3020
+ "chart-2": "#feb47b",
3021
+ "chart-3": "#ffcaa7",
3022
+ "chart-4": "#ffad8f",
3023
+ "chart-5": "#ce6a57",
3024
+ radius: "0.625rem",
3025
+ sidebar: "#fff0eb",
3026
+ "sidebar-foreground": "#3d3436",
3027
+ "sidebar-primary": "#ff7e5f",
3028
+ "sidebar-primary-foreground": "#ffffff",
3029
+ "sidebar-accent": "#feb47b",
3030
+ "sidebar-accent-foreground": "#3d3436",
3031
+ "sidebar-border": "#ffe0d6",
3032
+ "sidebar-ring": "#ff7e5f",
3033
+ "font-sans": "Montserrat, sans-serif",
3034
+ "font-serif": "Merriweather, serif",
3035
+ "font-mono": "Ubuntu Mono, monospace",
3036
+ "shadow-color": "hsl(0 0% 0%)",
3037
+ "shadow-opacity": "0.09",
3038
+ "shadow-blur": "12px",
3039
+ "shadow-spread": "-3px",
3040
+ "shadow-offset-x": "0px",
3041
+ "shadow-offset-y": "6px"
3042
+ },
3043
+ dark: {
3044
+ background: "#2a2024",
3045
+ foreground: "#f2e9e4",
3046
+ card: "#392f35",
3047
+ "card-foreground": "#f2e9e4",
3048
+ popover: "#392f35",
3049
+ "popover-foreground": "#f2e9e4",
3050
+ primary: "#ff7e5f",
3051
+ "primary-foreground": "#ffffff",
3052
+ secondary: "#463a41",
3053
+ "secondary-foreground": "#f2e9e4",
3054
+ muted: "#392f35",
3055
+ "muted-foreground": "#d7c6bc",
3056
+ accent: "#feb47b",
3057
+ "accent-foreground": "#2a2024",
3058
+ destructive: "#e63946",
3059
+ "destructive-foreground": "#ffffff",
3060
+ border: "#463a41",
3061
+ input: "#463a41",
3062
+ ring: "#ff7e5f",
3063
+ "chart-1": "#ff7e5f",
3064
+ "chart-2": "#feb47b",
3065
+ "chart-3": "#ffcaa7",
3066
+ "chart-4": "#ffad8f",
3067
+ "chart-5": "#ce6a57",
3068
+ radius: "0.625rem",
3069
+ sidebar: "#2a2024",
3070
+ "sidebar-foreground": "#f2e9e4",
3071
+ "sidebar-primary": "#ff7e5f",
3072
+ "sidebar-primary-foreground": "#ffffff",
3073
+ "sidebar-accent": "#feb47b",
3074
+ "sidebar-accent-foreground": "#2a2024",
3075
+ "sidebar-border": "#463a41",
3076
+ "sidebar-ring": "#ff7e5f"
3077
+ }
3078
+ }
3079
+ },
3080
+ "starry-night": {
3081
+ label: "Starry Night",
3082
+ createdAt: "2025-04-16",
3083
+ styles: {
3084
+ light: {
3085
+ background: "#f5f7fa",
3086
+ foreground: "#1a2238",
3087
+ card: "#e3eaf2",
3088
+ "card-foreground": "#1a2238",
3089
+ popover: "#fffbe6",
3090
+ "popover-foreground": "#1a2238",
3091
+ primary: "#3a5ba0",
3092
+ "primary-foreground": "#fffbe6",
3093
+ secondary: "#f7c873",
3094
+ "secondary-foreground": "#1a2238",
3095
+ muted: "#e5e5df",
3096
+ "muted-foreground": "#3a5ba0",
3097
+ accent: "#6ea3c1",
3098
+ "accent-foreground": "#fffbe6",
3099
+ destructive: "#2d1e2f",
3100
+ "destructive-foreground": "#fffbe6",
3101
+ border: "#b0b8c1",
3102
+ input: "#6ea3c1",
3103
+ ring: "#f7c873",
3104
+ "chart-1": "#3a5ba0",
3105
+ "chart-2": "#f7c873",
3106
+ "chart-3": "#6ea3c1",
3107
+ "chart-4": "#b0b8c1",
3108
+ "chart-5": "#2d1e2f",
3109
+ sidebar: "#e3eaf2",
3110
+ "sidebar-foreground": "#1a2238",
3111
+ "sidebar-primary": "#3a5ba0",
3112
+ "sidebar-primary-foreground": "#fffbe6",
3113
+ "sidebar-accent": "#f7c873",
3114
+ "sidebar-accent-foreground": "#1a2238",
3115
+ "sidebar-border": "#b0b8c1",
3116
+ "sidebar-ring": "#f7c873",
3117
+ "font-sans": "Libre Baskerville, serif",
3118
+ radius: "0.5rem"
3119
+ },
3120
+ dark: {
3121
+ background: "#181a24",
3122
+ foreground: "#e6eaf3",
3123
+ card: "#23243a",
3124
+ "card-foreground": "#e6eaf3",
3125
+ popover: "#23243a",
3126
+ "popover-foreground": "#ffe066",
3127
+ primary: "#3a5ba0",
3128
+ "primary-foreground": "#ffe066",
3129
+ secondary: "#ffe066",
3130
+ "secondary-foreground": "#23243a",
3131
+ muted: "#23243a",
3132
+ "muted-foreground": "#7a88a1",
3133
+ accent: "#bccdf0",
3134
+ "accent-foreground": "#181a24",
3135
+ destructive: "#a04a6c",
3136
+ "destructive-foreground": "#ffe066",
3137
+ border: "#2d2e3e",
3138
+ input: "#3a5ba0",
3139
+ ring: "#ffe066",
3140
+ "chart-1": "#3a5ba0",
3141
+ "chart-2": "#ffe066",
3142
+ "chart-3": "#6ea3c1",
3143
+ "chart-4": "#7a88a1",
3144
+ "chart-5": "#a04a6c",
3145
+ sidebar: "#23243a",
3146
+ "sidebar-foreground": "#e6eaf3",
3147
+ "sidebar-primary": "#3a5ba0",
3148
+ "sidebar-primary-foreground": "#ffe066",
3149
+ "sidebar-accent": "#ffe066",
3150
+ "sidebar-accent-foreground": "#23243a",
3151
+ "sidebar-border": "#2d2e3e",
3152
+ "sidebar-ring": "#ffe066",
3153
+ radius: "0.5rem"
3154
+ }
3155
+ }
3156
+ },
3157
+ claude: {
3158
+ label: "Claude",
3159
+ styles: {
3160
+ light: {
3161
+ background: "#faf9f5",
3162
+ foreground: "#3d3929",
3163
+ card: "#faf9f5",
3164
+ "card-foreground": "#141413",
3165
+ popover: "#ffffff",
3166
+ "popover-foreground": "#28261b",
3167
+ primary: "#c96442",
3168
+ "primary-foreground": "#ffffff",
3169
+ secondary: "#e9e6dc",
3170
+ "secondary-foreground": "#535146",
3171
+ muted: "#ede9de",
3172
+ "muted-foreground": "#83827d",
3173
+ accent: "#e9e6dc",
3174
+ "accent-foreground": "#28261b",
3175
+ destructive: "#141413",
3176
+ "destructive-foreground": "#ffffff",
3177
+ border: "#dad9d4",
3178
+ input: "#b4b2a7",
3179
+ ring: "#c96442",
3180
+ "chart-1": "#b05730",
3181
+ "chart-2": "#9c87f5",
3182
+ "chart-3": "#ded8c4",
3183
+ "chart-4": "#dbd3f0",
3184
+ "chart-5": "#b4552d",
3185
+ sidebar: "#f5f4ee",
3186
+ "sidebar-foreground": "#3d3d3a",
3187
+ "sidebar-primary": "#c96442",
3188
+ "sidebar-primary-foreground": "#fbfbfb",
3189
+ "sidebar-accent": "#e9e6dc",
3190
+ "sidebar-accent-foreground": "#343434",
3191
+ "sidebar-border": "#ebebeb",
3192
+ "sidebar-ring": "#b5b5b5",
3193
+ radius: "0.5rem"
3194
+ },
3195
+ dark: {
3196
+ background: "#262624",
3197
+ foreground: "#c3c0b6",
3198
+ card: "#262624",
3199
+ "card-foreground": "#faf9f5",
3200
+ popover: "#30302e",
3201
+ "popover-foreground": "#e5e5e2",
3202
+ primary: "#d97757",
3203
+ "primary-foreground": "#ffffff",
3204
+ secondary: "#faf9f5",
3205
+ "secondary-foreground": "#30302e",
3206
+ muted: "#1b1b19",
3207
+ "muted-foreground": "#b7b5a9",
3208
+ accent: "#1a1915",
3209
+ "accent-foreground": "#f5f4ee",
3210
+ destructive: "#ef4444",
3211
+ "destructive-foreground": "#ffffff",
3212
+ border: "#3e3e38",
3213
+ input: "#52514a",
3214
+ ring: "#d97757",
3215
+ "chart-1": "#b05730",
3216
+ "chart-2": "#9c87f5",
3217
+ "chart-3": "#1a1915",
3218
+ "chart-4": "#2f2b48",
3219
+ "chart-5": "#b4552d",
3220
+ sidebar: "#1f1e1d",
3221
+ "sidebar-foreground": "#c3c0b6",
3222
+ "sidebar-primary": "#343434",
3223
+ "sidebar-primary-foreground": "#fbfbfb",
3224
+ "sidebar-accent": "#0f0f0e",
3225
+ "sidebar-accent-foreground": "#c3c0b6",
3226
+ "sidebar-border": "#ebebeb",
3227
+ "sidebar-ring": "#b5b5b5"
3228
+ }
3229
+ }
3230
+ },
3231
+ vercel: {
3232
+ label: "Vercel",
3233
+ createdAt: "2025-04-13",
3234
+ styles: {
3235
+ light: {
3236
+ background: "oklch(0.99 0 0)",
3237
+ foreground: "oklch(0 0 0)",
3238
+ card: "oklch(1.00 0 0)",
3239
+ "card-foreground": "oklch(0 0 0)",
3240
+ popover: "oklch(0.99 0 0)",
3241
+ "popover-foreground": "oklch(0 0 0)",
3242
+ primary: "oklch(0 0 0)",
3243
+ "primary-foreground": "oklch(1.00 0 0)",
3244
+ secondary: "oklch(0.94 0 0)",
3245
+ "secondary-foreground": "oklch(0 0 0)",
3246
+ muted: "oklch(0.97 0 0)",
3247
+ "muted-foreground": "oklch(0.44 0 0)",
3248
+ accent: "oklch(0.94 0 0)",
3249
+ "accent-foreground": "oklch(0 0 0)",
3250
+ destructive: "oklch(0.63 0.19 23.03)",
3251
+ "destructive-foreground": "oklch(1.00 0 0)",
3252
+ border: "oklch(0.92 0 0)",
3253
+ input: "oklch(0.94 0 0)",
3254
+ ring: "oklch(0 0 0)",
3255
+ "chart-1": "oklch(0.81 0.17 75.35)",
3256
+ "chart-2": "oklch(0.55 0.22 264.53)",
3257
+ "chart-3": "oklch(0.72 0 0)",
3258
+ "chart-4": "oklch(0.92 0 0)",
3259
+ "chart-5": "oklch(0.56 0 0)",
3260
+ sidebar: "oklch(0.99 0 0)",
3261
+ "sidebar-foreground": "oklch(0 0 0)",
3262
+ "sidebar-primary": "oklch(0 0 0)",
3263
+ "sidebar-primary-foreground": "oklch(1.00 0 0)",
3264
+ "sidebar-accent": "oklch(0.94 0 0)",
3265
+ "sidebar-accent-foreground": "oklch(0 0 0)",
3266
+ "sidebar-border": "oklch(0.94 0 0)",
3267
+ "sidebar-ring": "oklch(0 0 0)",
3268
+ "font-sans": "Geist, sans-serif",
3269
+ "font-serif": "Georgia, serif",
3270
+ "font-mono": "Geist Mono, monospace",
3271
+ radius: "0.5rem",
3272
+ "shadow-color": "hsl(0 0% 0%)",
3273
+ "shadow-opacity": "0.18",
3274
+ "shadow-blur": "2px",
3275
+ "shadow-spread": "0px",
3276
+ "shadow-offset-x": "0px",
3277
+ "shadow-offset-y": "1px"
3278
+ },
3279
+ dark: {
3280
+ background: "oklch(0 0 0)",
3281
+ foreground: "oklch(1.00 0 0)",
3282
+ card: "oklch(0.14 0 0)",
3283
+ "card-foreground": "oklch(1.00 0 0)",
3284
+ popover: "oklch(0.18 0 0)",
3285
+ "popover-foreground": "oklch(1.00 0 0)",
3286
+ primary: "oklch(1.00 0 0)",
3287
+ "primary-foreground": "oklch(0 0 0)",
3288
+ secondary: "oklch(0.25 0 0)",
3289
+ "secondary-foreground": "oklch(1.00 0 0)",
3290
+ muted: "oklch(0.23 0 0)",
3291
+ "muted-foreground": "oklch(0.72 0 0)",
3292
+ accent: "oklch(0.32 0 0)",
3293
+ "accent-foreground": "oklch(1.00 0 0)",
3294
+ destructive: "oklch(0.69 0.20 23.91)",
3295
+ "destructive-foreground": "oklch(0 0 0)",
3296
+ border: "oklch(0.26 0 0)",
3297
+ input: "oklch(0.32 0 0)",
3298
+ ring: "oklch(0.72 0 0)",
3299
+ "chart-1": "oklch(0.81 0.17 75.35)",
3300
+ "chart-2": "oklch(0.58 0.21 260.84)",
3301
+ "chart-3": "oklch(0.56 0 0)",
3302
+ "chart-4": "oklch(0.44 0 0)",
3303
+ "chart-5": "oklch(0.92 0 0)",
3304
+ sidebar: "oklch(0.18 0 0)",
3305
+ "sidebar-foreground": "oklch(1.00 0 0)",
3306
+ "sidebar-primary": "oklch(1.00 0 0)",
3307
+ "sidebar-primary-foreground": "oklch(0 0 0)",
3308
+ "sidebar-accent": "oklch(0.32 0 0)",
3309
+ "sidebar-accent-foreground": "oklch(1.00 0 0)",
3310
+ "sidebar-border": "oklch(0.32 0 0)",
3311
+ "sidebar-ring": "oklch(0.72 0 0)",
3312
+ "font-sans": "Geist, sans-serif",
3313
+ "font-serif": "Georgia, serif",
3314
+ "font-mono": "Geist Mono, monospace"
3315
+ }
3316
+ }
3317
+ },
3318
+ mono: {
3319
+ label: "Mono",
3320
+ createdAt: "2025-04-20",
3321
+ styles: {
3322
+ light: {
3323
+ background: "#ffffff",
3324
+ foreground: "#0a0a0a",
3325
+ card: "#ffffff",
3326
+ "card-foreground": "#0a0a0a",
3327
+ popover: "#ffffff",
3328
+ "popover-foreground": "#0a0a0a",
3329
+ primary: "#737373",
3330
+ "primary-foreground": "#fafafa",
3331
+ secondary: "#f5f5f5",
3332
+ "secondary-foreground": "#171717",
3333
+ muted: "#f5f5f5",
3334
+ "muted-foreground": "#717171",
3335
+ accent: "#f5f5f5",
3336
+ "accent-foreground": "#171717",
3337
+ destructive: "#e7000b",
3338
+ "destructive-foreground": "#f5f5f5",
3339
+ border: "#e5e5e5",
3340
+ input: "#e5e5e5",
3341
+ ring: "#a1a1a1",
3342
+ "chart-1": "#737373",
3343
+ "chart-2": "#737373",
3344
+ "chart-3": "#737373",
3345
+ "chart-4": "#737373",
3346
+ "chart-5": "#737373",
3347
+ sidebar: "#fafafa",
3348
+ "sidebar-foreground": "#0a0a0a",
3349
+ "sidebar-primary": "#171717",
3350
+ "sidebar-primary-foreground": "#fafafa",
3351
+ "sidebar-accent": "#f5f5f5",
3352
+ "sidebar-accent-foreground": "#171717",
3353
+ "sidebar-border": "#e5e5e5",
3354
+ "sidebar-ring": "#a1a1a1",
3355
+ "font-sans": "Geist Mono, monospace",
3356
+ "font-serif": "Geist Mono, monospace",
3357
+ "font-mono": "Geist Mono, monospace",
3358
+ radius: "0rem",
3359
+ "shadow-color": "hsl(0 0% 0%)",
3360
+ "shadow-opacity": "0",
3361
+ "shadow-blur": "0px",
3362
+ "shadow-spread": "0px",
3363
+ "shadow-offset-x": "0px",
3364
+ "shadow-offset-y": "1px"
3365
+ },
3366
+ dark: {
3367
+ background: "#0a0a0a",
3368
+ foreground: "#fafafa",
3369
+ card: "#191919",
3370
+ "card-foreground": "#fafafa",
3371
+ popover: "#262626",
3372
+ "popover-foreground": "#fafafa",
3373
+ primary: "#737373",
3374
+ "primary-foreground": "#fafafa",
3375
+ secondary: "#262626",
3376
+ "secondary-foreground": "#fafafa",
3377
+ muted: "#262626",
3378
+ "muted-foreground": "#a1a1a1",
3379
+ accent: "#404040",
3380
+ "accent-foreground": "#fafafa",
3381
+ destructive: "#ff6467",
3382
+ "destructive-foreground": "#262626",
3383
+ border: "#383838",
3384
+ input: "#525252",
3385
+ ring: "#737373",
3386
+ "chart-1": "#737373",
3387
+ "chart-2": "#737373",
3388
+ "chart-3": "#737373",
3389
+ "chart-4": "#737373",
3390
+ "chart-5": "#737373",
3391
+ sidebar: "#171717",
3392
+ "sidebar-foreground": "#fafafa",
3393
+ "sidebar-primary": "#fafafa",
3394
+ "sidebar-primary-foreground": "#171717",
3395
+ "sidebar-accent": "#262626",
3396
+ "sidebar-accent-foreground": "#fafafa",
3397
+ "sidebar-border": "#ffffff",
3398
+ "sidebar-ring": "#525252"
3399
+ }
3400
+ }
3401
+ },
3402
+ "soft-pop": {
3403
+ label: "Soft Pop",
3404
+ createdAt: "2025-07-08",
3405
+ styles: {
3406
+ light: {
3407
+ background: "#f7f9f3",
3408
+ foreground: "#000000",
3409
+ card: "#ffffff",
3410
+ "card-foreground": "#000000",
3411
+ popover: "#ffffff",
3412
+ "popover-foreground": "#000000",
3413
+ primary: "#4f46e5",
3414
+ "primary-foreground": "#ffffff",
3415
+ secondary: "#14b8a6",
3416
+ "secondary-foreground": "#ffffff",
3417
+ muted: "#f0f0f0",
3418
+ "muted-foreground": "#333333",
3419
+ accent: "#f59e0b",
3420
+ "accent-foreground": "#000000",
3421
+ destructive: "#ef4444",
3422
+ "destructive-foreground": "#ffffff",
3423
+ border: "#000000",
3424
+ input: "#737373",
3425
+ ring: "#a5b4fc",
3426
+ "chart-1": "#4f46e5",
3427
+ "chart-2": "#14b8a6",
3428
+ "chart-3": "#f59e0b",
3429
+ "chart-4": "#ec4899",
3430
+ "chart-5": "#22c55e",
3431
+ sidebar: "#f7f9f3",
3432
+ "sidebar-foreground": "#000000",
3433
+ "sidebar-primary": "#4f46e5",
3434
+ "sidebar-primary-foreground": "#ffffff",
3435
+ "sidebar-accent": "#f59e0b",
3436
+ "sidebar-accent-foreground": "#000000",
3437
+ "sidebar-border": "#000000",
3438
+ "sidebar-ring": "#a5b4fc",
3439
+ "font-sans": "DM Sans, sans-serif",
3440
+ "font-serif": "DM Sans, sans-serif",
3441
+ "font-mono": "Space Mono, monospace",
3442
+ radius: "1rem",
3443
+ "shadow-color": "#1a1a1a",
3444
+ "shadow-opacity": "0.05",
3445
+ "shadow-blur": "0px",
3446
+ "shadow-spread": "0px",
3447
+ "shadow-offset-x": "0px",
3448
+ "shadow-offset-y": "0px",
3449
+ "letter-spacing": "normal",
3450
+ spacing: "0.25rem"
3451
+ },
3452
+ dark: {
3453
+ background: "#000000",
3454
+ foreground: "#ffffff",
3455
+ card: "#1a212b",
3456
+ "card-foreground": "#ffffff",
3457
+ popover: "#1a212b",
3458
+ "popover-foreground": "#ffffff",
3459
+ primary: "#818cf8",
3460
+ "primary-foreground": "#000000",
3461
+ secondary: "#2dd4bf",
3462
+ "secondary-foreground": "#000000",
3463
+ muted: "#333333",
3464
+ "muted-foreground": "#cccccc",
3465
+ accent: "#fcd34d",
3466
+ "accent-foreground": "#000000",
3467
+ destructive: "#f87171",
3468
+ "destructive-foreground": "#000000",
3469
+ border: "#545454",
3470
+ input: "#ffffff",
3471
+ ring: "#818cf8",
3472
+ "chart-1": "#818cf8",
3473
+ "chart-2": "#2dd4bf",
3474
+ "chart-3": "#fcd34d",
3475
+ "chart-4": "#f472b6",
3476
+ "chart-5": "#4ade80",
3477
+ sidebar: "#000000",
3478
+ "sidebar-foreground": "#ffffff",
3479
+ "sidebar-primary": "#818cf8",
3480
+ "sidebar-primary-foreground": "#000000",
3481
+ "sidebar-accent": "#fcd34d",
3482
+ "sidebar-accent-foreground": "#000000",
3483
+ "sidebar-border": "#ffffff",
3484
+ "sidebar-ring": "#818cf8",
3485
+ "font-sans": "DM Sans, sans-serif",
3486
+ "font-serif": "DM Sans, sans-serif",
3487
+ "font-mono": "Space Mono, monospace",
3488
+ radius: "1rem",
3489
+ "shadow-color": "#1a1a1a",
3490
+ "shadow-opacity": "0.05",
3491
+ "shadow-blur": "0px",
3492
+ "shadow-spread": "0px",
3493
+ "shadow-offset-x": "0px",
3494
+ "shadow-offset-y": "0px",
3495
+ "letter-spacing": "normal",
3496
+ spacing: "0.25rem"
3497
+ }
3498
+ }
3499
+ }
3500
+ };
3501
+ function getPresetIds() {
3502
+ return Object.keys(tweakcnPresets);
3503
+ }
3504
+ function getPresetById(id) {
3505
+ return tweakcnPresets[id] || null;
3506
+ }
3507
+ function getPresetLabels() {
3508
+ return Object.values(tweakcnPresets).map((preset) => preset.label);
3509
+ }
3510
+ function searchPresets(query) {
3511
+ const lowerQuery = query.toLowerCase();
3512
+ return Object.entries(tweakcnPresets).filter(
3513
+ ([id, preset]) => preset.label.toLowerCase().includes(lowerQuery) || id.toLowerCase().includes(lowerQuery)
3514
+ ).map(([id, preset]) => ({ id, preset }));
3515
+ }
3516
+ function getPresetsCount() {
3517
+ return Object.keys(tweakcnPresets).length;
3518
+ }
3519
+ function getPresetEntries() {
3520
+ return Object.entries(tweakcnPresets);
3521
+ }
3522
+
3523
+ // src/utils/preset-validation.ts
3524
+ var REQUIRED_PROPERTIES = [
3525
+ "background",
3526
+ "foreground",
3527
+ "primary",
3528
+ "primary-foreground",
3529
+ "secondary",
3530
+ "secondary-foreground",
3531
+ "card",
3532
+ "card-foreground"
3533
+ ];
3534
+ var RECOMMENDED_PROPERTIES = [
3535
+ "border",
3536
+ "input",
3537
+ "ring",
3538
+ "muted",
3539
+ "muted-foreground",
3540
+ "accent",
3541
+ "accent-foreground",
3542
+ "destructive",
3543
+ "destructive-foreground",
3544
+ "popover",
3545
+ "popover-foreground"
3546
+ ];
3547
+ function validateTweakCNPreset(preset, presetId) {
3548
+ const errors = [];
3549
+ const warnings = [];
3550
+ const prefix = presetId ? `Preset "${presetId}":` : "Preset:";
3551
+ if (!preset || typeof preset !== "object") {
3552
+ errors.push(`${prefix} Must be an object`);
3553
+ return { isValid: false, errors, warnings };
3554
+ }
3555
+ if (!preset.label || typeof preset.label !== "string" || preset.label.trim() === "") {
3556
+ errors.push(`${prefix} Must have a non-empty label`);
3557
+ }
3558
+ if (!preset.styles || typeof preset.styles !== "object") {
3559
+ errors.push(`${prefix} Must have a styles object`);
3560
+ return { isValid: false, errors, warnings };
3561
+ }
3562
+ const modes = ["light", "dark"];
3563
+ for (const mode of modes) {
3564
+ const modeStyles = preset.styles[mode];
3565
+ if (!modeStyles || typeof modeStyles !== "object") {
3566
+ errors.push(`${prefix} Must have ${mode} mode styles`);
3567
+ continue;
3568
+ }
3569
+ for (const prop of REQUIRED_PROPERTIES) {
3570
+ if (!modeStyles[prop] || typeof modeStyles[prop] !== "string") {
3571
+ errors.push(`${prefix} Missing required ${mode} property: ${prop}`);
3572
+ }
3573
+ }
3574
+ for (const prop of RECOMMENDED_PROPERTIES) {
3575
+ if (!modeStyles[prop]) {
3576
+ warnings.push(`${prefix} Missing recommended ${mode} property: ${prop}`);
3577
+ }
3578
+ }
3579
+ for (const [key, value] of Object.entries(modeStyles)) {
3580
+ if (typeof value === "string" && value.trim() !== "") {
3581
+ if (!isValidColorValue(value)) {
3582
+ warnings.push(`${prefix} ${mode}.${key} may not be a valid color: "${value}"`);
3583
+ }
3584
+ }
3585
+ }
3586
+ }
3587
+ return {
3588
+ isValid: errors.length === 0,
3589
+ errors,
3590
+ warnings
3591
+ };
3592
+ }
3593
+ function validateCustomPresets(customPresets) {
3594
+ const allErrors = [];
3595
+ const allWarnings = [];
3596
+ if (!customPresets || typeof customPresets !== "object") {
3597
+ return {
3598
+ isValid: false,
3599
+ errors: ["Custom presets must be an object"],
3600
+ warnings: []
3601
+ };
3602
+ }
3603
+ for (const [id, preset] of Object.entries(customPresets)) {
3604
+ if (!id || typeof id !== "string" || id.trim() === "") {
3605
+ allErrors.push("Preset ID must be a non-empty string");
3606
+ continue;
3607
+ }
3608
+ if (!/^[a-z0-9-_]+$/.test(id)) {
3609
+ allWarnings.push(`Preset ID "${id}" should only contain lowercase letters, numbers, hyphens, and underscores`);
3610
+ }
3611
+ const result = validateTweakCNPreset(preset, id);
3612
+ allErrors.push(...result.errors);
3613
+ allWarnings.push(...result.warnings);
3614
+ }
3615
+ return {
3616
+ isValid: allErrors.length === 0,
3617
+ errors: allErrors,
3618
+ warnings: allWarnings
3619
+ };
3620
+ }
3621
+ function isValidColorValue(value) {
3622
+ const trimmed = value.trim();
3623
+ if (/^#([0-9a-f]{3}|[0-9a-f]{6}|[0-9a-f]{8})$/i.test(trimmed)) {
3624
+ return true;
3625
+ }
3626
+ if (/^hsl\(\s*\d+\s*,\s*\d+%\s*,\s*\d+%\s*\)$/i.test(trimmed)) {
3627
+ return true;
3628
+ }
3629
+ if (/^rgb\(\s*\d+\s*,\s*\d+\s*,\s*\d+\s*\)$/i.test(trimmed)) {
3630
+ return true;
3631
+ }
3632
+ if (/^var\(--[\w-]+\)$/i.test(trimmed)) {
3633
+ return true;
3634
+ }
3635
+ const cssColors = [
3636
+ "transparent",
3637
+ "inherit",
3638
+ "currentcolor",
3639
+ "black",
3640
+ "white",
3641
+ "red",
3642
+ "green",
3643
+ "blue",
3644
+ "yellow",
3645
+ "orange",
3646
+ "purple",
3647
+ "pink",
3648
+ "gray",
3649
+ "grey"
3650
+ ];
3651
+ if (cssColors.includes(trimmed.toLowerCase())) {
3652
+ return true;
3653
+ }
3654
+ return true;
3655
+ }
3656
+ function logValidationResult(result, context = "Custom presets") {
3657
+ if (result.isValid) {
3658
+ console.log(`\u2705 ${context}: Validation passed`);
3659
+ } else {
3660
+ console.error(`\u274C ${context}: Validation failed`);
3661
+ result.errors.forEach((error) => console.error(` Error: ${error}`));
3662
+ }
3663
+ if (result.warnings.length > 0) {
3664
+ console.warn(`\u26A0\uFE0F ${context}: Validation warnings`);
3665
+ result.warnings.forEach((warning) => console.warn(` Warning: ${warning}`));
3666
+ }
3667
+ }
3668
+
3669
+ // src/providers/UnifiedThemeProvider.tsx
3670
+ var import_jsx_runtime = require("react/jsx-runtime");
3671
+ var UnifiedThemeContext = (0, import_react.createContext)(void 0);
3672
+ var THEME_STORAGE_KEY = "theme-engine-theme";
3673
+ function getSystemTheme() {
3674
+ if (typeof window === "undefined") return "light";
3675
+ return window.matchMedia("(prefers-color-scheme: dark)").matches ? "dark" : "light";
3676
+ }
3677
+ function getStoredMode(storageKey) {
3678
+ if (typeof window === "undefined") return null;
3679
+ try {
3680
+ return localStorage.getItem(storageKey) || null;
3681
+ } catch {
3682
+ return null;
3683
+ }
3684
+ }
3685
+ function setStoredMode(mode, storageKey) {
3686
+ try {
3687
+ localStorage.setItem(storageKey, mode);
3688
+ } catch {
3689
+ }
3690
+ }
3691
+ function ThemeProvider({
3692
+ children,
3693
+ defaultMode = "system",
3694
+ defaultPreset,
3695
+ enableTransitions = true,
3696
+ modeStorageKey = THEME_STORAGE_KEY,
3697
+ presetStorageKey = "theme-preset",
3698
+ enablePresets = true,
3699
+ customPresets = {},
3700
+ includeBuiltInPresets = true
3701
+ }) {
3702
+ const [mode, setMode] = (0, import_react.useState)(() => {
3703
+ const stored = getStoredMode(modeStorageKey);
3704
+ return stored || defaultMode;
3705
+ });
3706
+ const [resolvedMode, setResolvedMode] = (0, import_react.useState)(() => {
3707
+ if (mode === "system") {
3708
+ return getSystemTheme();
3709
+ }
3710
+ return mode;
3711
+ });
3712
+ const availablePresets = (0, import_react.useMemo)(() => {
3713
+ const merged = {};
3714
+ if (includeBuiltInPresets) {
3715
+ Object.assign(merged, tweakcnPresets);
3716
+ }
3717
+ if (customPresets && Object.keys(customPresets).length > 0) {
3718
+ const validationResult = validateCustomPresets(customPresets);
3719
+ const isDevelopment = typeof window !== "undefined" && window.location?.hostname === "localhost";
3720
+ if (isDevelopment) {
3721
+ logValidationResult(validationResult, "Custom presets");
3722
+ }
3723
+ if (validationResult.isValid || validationResult.errors.length === 0) {
3724
+ Object.assign(merged, customPresets);
3725
+ } else {
3726
+ if (isDevelopment) {
3727
+ console.error("\u{1F3A8} ThemeProvider: Skipping invalid custom presets");
3728
+ }
3729
+ }
3730
+ }
3731
+ return merged;
3732
+ }, [includeBuiltInPresets, customPresets]);
3733
+ const builtInPresets = (0, import_react.useMemo)(() => includeBuiltInPresets ? tweakcnPresets : {}, [includeBuiltInPresets]);
3734
+ const normalizedCustomPresets = (0, import_react.useMemo)(() => customPresets || {}, [customPresets]);
3735
+ const getAvailablePresetById = (0, import_react.useCallback)((id) => {
3736
+ return availablePresets[id] || null;
3737
+ }, [availablePresets]);
3738
+ const [currentPreset, setCurrentPreset] = (0, import_react.useState)(null);
3739
+ const [isReady, setIsReady] = (0, import_react.useState)(false);
3740
+ (0, import_react.useEffect)(() => {
3741
+ if (!enablePresets || typeof window === "undefined") {
3742
+ setIsReady(true);
3743
+ return;
3744
+ }
3745
+ try {
3746
+ const stored = localStorage.getItem(presetStorageKey);
3747
+ if (stored) {
3748
+ const preset = JSON.parse(stored);
3749
+ setCurrentPreset(preset);
3750
+ console.log("\u{1F3A8} UnifiedTheme: Loaded persisted preset:", preset.presetName);
3751
+ } else if (defaultPreset) {
3752
+ const preset = getAvailablePresetById(defaultPreset);
3753
+ if (preset) {
3754
+ const presetData = {
3755
+ presetId: defaultPreset,
3756
+ presetName: preset.label,
3757
+ colors: {
3758
+ light: preset.styles.light,
3759
+ dark: preset.styles.dark
3760
+ },
3761
+ appliedAt: Date.now()
3762
+ };
3763
+ setCurrentPreset(presetData);
3764
+ console.log("\u{1F3A8} UnifiedTheme: Applied default preset:", preset.label);
3765
+ } else {
3766
+ console.warn("\u{1F3A8} UnifiedTheme: Default preset not found:", defaultPreset);
3767
+ }
3768
+ }
3769
+ } catch (error) {
3770
+ console.warn("\u{1F3A8} UnifiedTheme: Failed to load preset:", error);
3771
+ } finally {
3772
+ setIsReady(true);
3773
+ }
3774
+ }, [presetStorageKey, enablePresets, defaultPreset]);
3775
+ (0, import_react.useEffect)(() => {
3776
+ if (mode === "system") {
3777
+ const mediaQuery = window.matchMedia("(prefers-color-scheme: dark)");
3778
+ const updateResolvedMode = () => setResolvedMode(getSystemTheme());
3779
+ updateResolvedMode();
3780
+ mediaQuery.addEventListener("change", updateResolvedMode);
3781
+ return () => mediaQuery.removeEventListener("change", updateResolvedMode);
3782
+ } else {
3783
+ setResolvedMode(mode);
3784
+ return;
3785
+ }
3786
+ }, [mode]);
3787
+ (0, import_react.useEffect)(() => {
3788
+ if (typeof window === "undefined") return;
3789
+ const root = document.documentElement;
3790
+ root.classList.remove("light", "dark");
3791
+ root.classList.add(resolvedMode);
3792
+ root.style.colorScheme = resolvedMode;
3793
+ }, [resolvedMode]);
3794
+ const applyPresetColors = (0, import_react.useCallback)((preset, mode2) => {
3795
+ const root = document.documentElement;
3796
+ const colors = preset[mode2];
3797
+ if (!colors) return;
3798
+ const defaultValues = {
3799
+ "spacing": "0.25rem",
3800
+ "letter-spacing": "normal"
3801
+ };
3802
+ const allCategories = [
3803
+ ...CSS_PROPERTY_CATEGORIES.colors,
3804
+ ...CSS_PROPERTY_CATEGORIES.typography,
3805
+ ...CSS_PROPERTY_CATEGORIES.layout,
3806
+ ...CSS_PROPERTY_CATEGORIES.shadows,
3807
+ ...CSS_PROPERTY_CATEGORIES.spacing
3808
+ ];
3809
+ let clearedCount = 0;
3810
+ allCategories.forEach((prop) => {
3811
+ const cssVar = `--${prop}`;
3812
+ root.style.removeProperty(cssVar);
3813
+ clearedCount++;
3814
+ });
3815
+ console.log(`\u{1F3A8} UnifiedTheme: Cleared ${clearedCount} CSS properties before applying new theme`);
3816
+ const fontProperties = ["font-sans", "font-serif", "font-mono"];
3817
+ const otherMode = mode2 === "light" ? "dark" : "light";
3818
+ const otherModeColors = preset[otherMode];
3819
+ if (otherModeColors) {
3820
+ fontProperties.forEach((fontProp) => {
3821
+ if (!(fontProp in colors) && fontProp in otherModeColors) {
3822
+ colors[fontProp] = otherModeColors[fontProp];
3823
+ console.log(`\u{1F3A8} Inherited ${fontProp}: "${otherModeColors[fontProp]}" from ${otherMode} mode`);
3824
+ }
3825
+ });
3826
+ }
3827
+ let appliedCount = 0;
3828
+ allCategories.forEach((prop) => {
3829
+ let value = colors[prop];
3830
+ if (!value && defaultValues[prop]) {
3831
+ value = defaultValues[prop];
3832
+ console.log(`\u{1F3A8} Using default value for ${prop}: ${value}`);
3833
+ }
3834
+ if (value) {
3835
+ const cssVar = `--${prop}`;
3836
+ root.style.setProperty(cssVar, value);
3837
+ appliedCount++;
3838
+ console.log(`\u{1F3A8} Applied ${cssVar}: ${value}`);
3839
+ }
3840
+ });
3841
+ console.log(`\u{1F3A8} UnifiedTheme: Applied ${appliedCount} CSS properties for ${mode2} mode`);
3842
+ }, []);
3843
+ const handleModeChange = (0, import_react.useCallback)((newMode) => {
3844
+ setMode(newMode);
3845
+ setStoredMode(newMode, modeStorageKey);
3846
+ }, [modeStorageKey]);
3847
+ const handleModeToggle = (0, import_react.useCallback)((coordinates) => {
3848
+ const newMode = resolvedMode === "light" ? "dark" : "light";
3849
+ const prefersReducedMotion = window.matchMedia("(prefers-reduced-motion: reduce)").matches;
3850
+ if (enableTransitions && !prefersReducedMotion && typeof document !== "undefined" && "startViewTransition" in document) {
3851
+ const root = document.documentElement;
3852
+ if (coordinates) {
3853
+ root.style.setProperty("--x", `${coordinates.x}px`);
3854
+ root.style.setProperty("--y", `${coordinates.y}px`);
3855
+ }
3856
+ document.startViewTransition(() => {
3857
+ handleModeChange(newMode);
3858
+ });
3859
+ } else {
3860
+ handleModeChange(newMode);
3861
+ }
3862
+ }, [resolvedMode, enableTransitions, handleModeChange]);
3863
+ (0, import_react.useEffect)(() => {
3864
+ if (!currentPreset || typeof window === "undefined") return;
3865
+ applyPresetColors(currentPreset.colors, resolvedMode);
3866
+ }, [currentPreset, resolvedMode, applyPresetColors]);
3867
+ const applyPreset = (0, import_react.useCallback)((preset) => {
3868
+ const presetData = {
3869
+ presetId: preset.id,
3870
+ presetName: preset.name,
3871
+ colors: preset.colors,
3872
+ appliedAt: Date.now()
3873
+ };
3874
+ setCurrentPreset(presetData);
3875
+ if (enablePresets && typeof window !== "undefined") {
3876
+ try {
3877
+ localStorage.setItem(presetStorageKey, JSON.stringify(presetData));
3878
+ console.log("\u{1F3A8} UnifiedTheme: Saved preset:", preset.name);
3879
+ } catch (error) {
3880
+ console.error("\u{1F3A8} UnifiedTheme: Failed to save preset:", error);
3881
+ }
3882
+ }
3883
+ if (typeof window !== "undefined") {
3884
+ applyPresetColors(preset.colors, resolvedMode);
3885
+ }
3886
+ }, [presetStorageKey, enablePresets, applyPresetColors, resolvedMode]);
3887
+ const clearPreset = (0, import_react.useCallback)(() => {
3888
+ if (enablePresets && typeof window !== "undefined") {
3889
+ try {
3890
+ localStorage.removeItem(presetStorageKey);
3891
+ console.log("\u{1F3A8} UnifiedTheme: Cleared preset");
3892
+ } catch (error) {
3893
+ console.error("\u{1F3A8} UnifiedTheme: Failed to clear preset:", error);
3894
+ }
3895
+ if (defaultPreset) {
3896
+ const preset = getAvailablePresetById(defaultPreset);
3897
+ if (preset) {
3898
+ const presetData = {
3899
+ presetId: defaultPreset,
3900
+ presetName: preset.label,
3901
+ colors: {
3902
+ light: preset.styles.light,
3903
+ dark: preset.styles.dark
3904
+ },
3905
+ appliedAt: Date.now()
3906
+ };
3907
+ setCurrentPreset(presetData);
3908
+ applyPresetColors(presetData.colors, resolvedMode);
3909
+ console.log("\u{1F3A8} UnifiedTheme: Reset to default preset:", preset.label);
3910
+ } else {
3911
+ console.warn("\u{1F3A8} UnifiedTheme: Default preset not found:", defaultPreset);
3912
+ setCurrentPreset(null);
3913
+ }
3914
+ } else {
3915
+ setCurrentPreset(null);
3916
+ const root = document.documentElement;
3917
+ const allProperties = [
3918
+ ...CSS_PROPERTY_CATEGORIES.colors,
3919
+ ...CSS_PROPERTY_CATEGORIES.typography,
3920
+ ...CSS_PROPERTY_CATEGORIES.layout,
3921
+ ...CSS_PROPERTY_CATEGORIES.shadows,
3922
+ ...CSS_PROPERTY_CATEGORIES.spacing
3923
+ ];
3924
+ let clearedCount = 0;
3925
+ allProperties.forEach((prop) => {
3926
+ const cssVar = `--${prop}`;
3927
+ root.style.removeProperty(cssVar);
3928
+ clearedCount++;
3929
+ });
3930
+ console.log(`\u{1F3A8} UnifiedTheme: Cleared ${clearedCount} CSS properties`);
3931
+ }
3932
+ }
3933
+ }, [presetStorageKey, enablePresets, defaultPreset, applyPresetColors, resolvedMode]);
3934
+ if (!isReady) {
3935
+ return null;
3936
+ }
3937
+ const contextValue = {
3938
+ mode,
3939
+ resolvedMode,
3940
+ setMode: handleModeChange,
3941
+ toggleMode: handleModeToggle,
3942
+ currentPreset,
3943
+ applyPreset,
3944
+ clearPreset,
3945
+ availablePresets,
3946
+ builtInPresets,
3947
+ customPresets: normalizedCustomPresets
3948
+ };
3949
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(UnifiedThemeContext.Provider, { value: contextValue, children });
3950
+ }
3951
+ function useTheme() {
3952
+ const context = (0, import_react.useContext)(UnifiedThemeContext);
3953
+ if (context === void 0) {
3954
+ throw new Error("useTheme must be used within a ThemeProvider");
3955
+ }
3956
+ return context;
3957
+ }
3958
+
3959
+ // src/components/UnifiedThemeScript.tsx
3960
+ var import_react2 = require("react");
3961
+ var import_jsx_runtime2 = require("react/jsx-runtime");
3962
+ function ThemeScript({
3963
+ presetStorageKey = "theme-preset",
3964
+ defaultPreset
3965
+ }) {
3966
+ const defaultPresetData = (0, import_react2.useMemo)(() => {
3967
+ if (!defaultPreset) return null;
3968
+ const preset = getPresetById(defaultPreset);
3969
+ return preset ? {
3970
+ presetId: defaultPreset,
3971
+ presetName: preset.label,
3972
+ colors: preset.styles
3973
+ } : null;
3974
+ }, [defaultPreset]);
3975
+ const scriptContent = (0, import_react2.useMemo)(() => `
3976
+ // Unified Theme Engine: Restore preset colors before hydration
3977
+ (function() {
3978
+ try {
3979
+ const presetStorageKey = "${presetStorageKey}";
3980
+
3981
+ // CSS property categories (inline for script)
3982
+ const CSS_CATEGORIES = {
3983
+ colors: [
3984
+ 'background', 'foreground', 'card', 'card-foreground', 'popover', 'popover-foreground',
3985
+ 'primary', 'primary-foreground', 'secondary', 'secondary-foreground',
3986
+ 'muted', 'muted-foreground', 'accent', 'accent-foreground',
3987
+ 'destructive', 'destructive-foreground', 'border', 'input', 'ring',
3988
+ 'chart-1', 'chart-2', 'chart-3', 'chart-4', 'chart-5',
3989
+ 'sidebar', 'sidebar-foreground', 'sidebar-primary', 'sidebar-primary-foreground',
3990
+ 'sidebar-accent', 'sidebar-accent-foreground', 'sidebar-border', 'sidebar-ring'
3991
+ ],
3992
+ typography: ['font-sans', 'font-serif', 'font-mono'],
3993
+ layout: ['radius'],
3994
+ shadows: ['shadow-color', 'shadow-opacity', 'shadow-blur', 'shadow-spread', 'shadow-offset-x', 'shadow-offset-y'],
3995
+ spacing: ['letter-spacing', 'spacing']
3996
+ };
3997
+
3998
+ // Function to apply all preset properties - with proper clearing and defaults
3999
+ function applyPresetProperties(colors) {
4000
+ if (!colors) return;
4001
+
4002
+ const root = document.documentElement;
4003
+
4004
+ // Default values for essential properties that might be missing
4005
+ const defaultValues = {
4006
+ 'spacing': '0.25rem',
4007
+ 'letter-spacing': 'normal'
4008
+ };
4009
+
4010
+ // Get all possible CSS properties
4011
+ const allCategories = ['colors', 'typography', 'layout', 'shadows', 'spacing'];
4012
+ const allProperties = [];
4013
+ allCategories.forEach(function(category) {
4014
+ CSS_CATEGORIES[category].forEach(function(prop) {
4015
+ allProperties.push(prop);
4016
+ });
4017
+ });
4018
+
4019
+ // First, clear all properties to prevent leftover values
4020
+ let clearedCount = 0;
4021
+ allProperties.forEach(function(prop) {
4022
+ const cssVar = '--' + prop;
4023
+ root.style.removeProperty(cssVar);
4024
+ clearedCount++;
4025
+ });
4026
+ console.log('\u{1F3A8} UnifiedThemeScript: Cleared ' + clearedCount + ' CSS properties before applying new theme');
4027
+
4028
+ // Apply all properties with defaults for missing ones
4029
+ let appliedCount = 0;
4030
+ allProperties.forEach(function(prop) {
4031
+ let value = colors[prop];
4032
+
4033
+ // Apply default value if property is missing and we have a default
4034
+ if (!value && defaultValues[prop]) {
4035
+ value = defaultValues[prop];
4036
+ console.log('\u{1F3A8} Script using default value for ' + prop + ': ' + value);
4037
+ }
4038
+
4039
+ if (value) {
4040
+ const cssVar = '--' + prop;
4041
+ // Apply directly like TweakCN does - no conversion, no !important
4042
+ root.style.setProperty(cssVar, value);
4043
+ appliedCount++;
4044
+ console.log('\u{1F3A8} Script applied ' + cssVar + ': ' + value);
4045
+ }
4046
+ });
4047
+
4048
+ console.log('\u{1F3A8} UnifiedThemeScript: Applied ' + appliedCount + ' CSS properties');
4049
+ }
4050
+
4051
+ // Load and apply persisted preset or default preset
4052
+ const storedPreset = localStorage.getItem(presetStorageKey);
4053
+ let presetToApply = null;
4054
+
4055
+ if (storedPreset) {
4056
+ try {
4057
+ presetToApply = JSON.parse(storedPreset);
4058
+ console.log('\u{1F3A8} UnifiedThemeScript: Using stored preset:', presetToApply.presetName);
4059
+ } catch (error) {
4060
+ console.warn('\u{1F3A8} UnifiedThemeScript: Failed to parse stored preset:', error);
4061
+ }
4062
+ }
4063
+
4064
+ // Use default preset if no stored preset
4065
+ if (!presetToApply && ${JSON.stringify(defaultPresetData)}) {
4066
+ presetToApply = ${JSON.stringify(defaultPresetData)};
4067
+ console.log('\u{1F3A8} UnifiedThemeScript: Using default preset:', presetToApply.presetName);
4068
+ }
4069
+
4070
+ if (presetToApply) {
4071
+ // Determine current mode (will be set by ThemeProvider)
4072
+ // Default to light if no theme class is present yet
4073
+ const isDark = document.documentElement.classList.contains('dark');
4074
+ const mode = isDark ? 'dark' : 'light';
4075
+ const colors = presetToApply.colors && presetToApply.colors[mode];
4076
+
4077
+ if (colors) {
4078
+ // Font inheritance logic: inherit missing fonts from other mode
4079
+ const fontProperties = ['font-sans', 'font-serif', 'font-mono'];
4080
+ const otherMode = mode === 'light' ? 'dark' : 'light';
4081
+ const otherModeColors = presetToApply.colors && presetToApply.colors[otherMode];
4082
+
4083
+ if (otherModeColors) {
4084
+ fontProperties.forEach(function(fontProp) {
4085
+ if (!colors[fontProp] && otherModeColors[fontProp]) {
4086
+ colors[fontProp] = otherModeColors[fontProp];
4087
+ console.log('\u{1F3A8} Script inherited ' + fontProp + ': "' + otherModeColors[fontProp] + '" from ' + otherMode + ' mode');
4088
+ }
4089
+ });
4090
+ }
4091
+
4092
+ applyPresetProperties(colors);
4093
+ console.log('\u{1F3A8} UnifiedThemeScript: Applied preset properties for', mode, 'mode');
4094
+ }
4095
+ }
4096
+
4097
+ } catch (error) {
4098
+ console.error('\u{1F3A8} UnifiedThemeScript: Initialization failed:', error);
4099
+ }
4100
+ })();
4101
+ `, [presetStorageKey, defaultPresetData]);
4102
+ return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
4103
+ "script",
4104
+ {
4105
+ dangerouslySetInnerHTML: { __html: scriptContent },
4106
+ suppressHydrationWarning: true
4107
+ }
4108
+ );
4109
+ }
4110
+
4111
+ // src/components/ThemeToggle.tsx
4112
+ var import_react3 = require("react");
4113
+ var import_clsx = require("clsx");
4114
+ var import_jsx_runtime3 = require("react/jsx-runtime");
4115
+ var SunIcon = () => /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(
4116
+ "svg",
4117
+ {
4118
+ xmlns: "http://www.w3.org/2000/svg",
4119
+ width: "16",
4120
+ height: "16",
4121
+ viewBox: "0 0 24 24",
4122
+ fill: "none",
4123
+ stroke: "currentColor",
4124
+ strokeWidth: "2",
4125
+ strokeLinecap: "round",
4126
+ strokeLinejoin: "round",
4127
+ className: "theme-toggle-icon",
4128
+ children: [
4129
+ /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("circle", { cx: "12", cy: "12", r: "4" }),
4130
+ /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("path", { d: "m12 2 0 2" }),
4131
+ /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("path", { d: "m12 20 0 2" }),
4132
+ /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("path", { d: "m4.93 4.93 1.41 1.41" }),
4133
+ /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("path", { d: "m17.66 17.66 1.41 1.41" }),
4134
+ /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("path", { d: "m2 12 2 0" }),
4135
+ /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("path", { d: "m20 12 2 0" }),
4136
+ /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("path", { d: "m6.34 17.66-1.41 1.41" }),
4137
+ /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("path", { d: "m19.07 4.93-1.41 1.41" })
4138
+ ]
4139
+ }
4140
+ );
4141
+ var MoonIcon = () => /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
4142
+ "svg",
4143
+ {
4144
+ xmlns: "http://www.w3.org/2000/svg",
4145
+ width: "16",
4146
+ height: "16",
4147
+ viewBox: "0 0 24 24",
4148
+ fill: "none",
4149
+ stroke: "currentColor",
4150
+ strokeWidth: "2",
4151
+ strokeLinecap: "round",
4152
+ strokeLinejoin: "round",
4153
+ className: "theme-toggle-icon",
4154
+ children: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("path", { d: "m12 3a6 6 0 0 0 9 9 9 9 0 1 1-9-9Z" })
4155
+ }
4156
+ );
4157
+ var SystemIcon = () => /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(
4158
+ "svg",
4159
+ {
4160
+ xmlns: "http://www.w3.org/2000/svg",
4161
+ width: "16",
4162
+ height: "16",
4163
+ viewBox: "0 0 24 24",
4164
+ fill: "none",
4165
+ stroke: "currentColor",
4166
+ strokeWidth: "2",
4167
+ strokeLinecap: "round",
4168
+ strokeLinejoin: "round",
4169
+ className: "theme-toggle-icon",
4170
+ children: [
4171
+ /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("rect", { width: "20", height: "14", x: "2", y: "3", rx: "2" }),
4172
+ /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("line", { x1: "8", x2: "16", y1: "21", y2: "21" }),
4173
+ /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("line", { x1: "12", x2: "12", y1: "17", y2: "21" })
4174
+ ]
4175
+ }
4176
+ );
4177
+ var ThemeToggle = (0, import_react3.forwardRef)(
4178
+ ({ className, size = "md", variant = "default", children, ...props }, ref) => {
4179
+ const { mode, resolvedMode, toggleMode } = useTheme();
4180
+ const handleClick = (event) => {
4181
+ const { clientX: x, clientY: y } = event;
4182
+ toggleMode({ x, y });
4183
+ };
4184
+ const sizeClasses = {
4185
+ sm: "h-8 w-8 p-1.5",
4186
+ md: "h-9 w-9 p-2",
4187
+ lg: "h-10 w-10 p-2.5"
4188
+ };
4189
+ const variantClasses = {
4190
+ default: "bg-background border border-input hover:bg-accent hover:text-accent-foreground",
4191
+ outline: "border border-input bg-background hover:bg-accent hover:text-accent-foreground",
4192
+ ghost: "hover:bg-accent hover:text-accent-foreground"
4193
+ };
4194
+ const baseClasses = (0, import_clsx.clsx)(
4195
+ // Base button styles
4196
+ "theme-toggle",
4197
+ "inline-flex items-center justify-center",
4198
+ "rounded-md text-sm font-medium",
4199
+ "ring-offset-background transition-colors",
4200
+ "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2",
4201
+ "disabled:pointer-events-none disabled:opacity-50",
4202
+ // Size and variant
4203
+ sizeClasses[size],
4204
+ variantClasses[variant],
4205
+ className
4206
+ );
4207
+ const renderIcon = () => {
4208
+ if (children) return children;
4209
+ switch (mode) {
4210
+ case "light":
4211
+ return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(SunIcon, {});
4212
+ case "dark":
4213
+ return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(MoonIcon, {});
4214
+ case "system":
4215
+ return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(SystemIcon, {});
4216
+ default:
4217
+ return resolvedMode === "dark" ? /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(MoonIcon, {}) : /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(SunIcon, {});
4218
+ }
4219
+ };
4220
+ return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
4221
+ "button",
4222
+ {
4223
+ ref,
4224
+ className: baseClasses,
4225
+ onClick: handleClick,
4226
+ "data-mode": resolvedMode,
4227
+ "aria-label": `Switch to ${resolvedMode === "light" ? "dark" : "light"} mode`,
4228
+ title: `Switch to ${resolvedMode === "light" ? "dark" : "light"} mode`,
4229
+ ...props,
4230
+ children: renderIcon()
4231
+ }
4232
+ );
4233
+ }
4234
+ );
4235
+ ThemeToggle.displayName = "ThemeToggle";
4236
+
4237
+ // src/components/ThemePresetButtons.tsx
4238
+ var import_react4 = require("react");
4239
+ var import_framer_motion = require("framer-motion");
4240
+ var import_clsx2 = require("clsx");
4241
+
4242
+ // src/utils/colors.ts
4243
+ function parseHSL(hslString) {
4244
+ try {
4245
+ const cleaned = hslString.replace(/hsl\(|\)/g, "").replace(/[,%]/g, " ").trim();
4246
+ const parts = cleaned.split(/\s+/).filter(Boolean);
4247
+ if (parts.length !== 3) return null;
4248
+ const h = parseFloat(parts[0]) || 0;
4249
+ const s = parseFloat(parts[1]) || 0;
4250
+ const l = parseFloat(parts[2]) || 0;
4251
+ return {
4252
+ h: Math.max(0, Math.min(360, h)),
4253
+ s: Math.max(0, Math.min(100, s)),
4254
+ l: Math.max(0, Math.min(100, l))
4255
+ };
4256
+ } catch {
4257
+ return null;
4258
+ }
4259
+ }
4260
+ function parseHex(hexString) {
4261
+ try {
4262
+ let hex = hexString.replace("#", "");
4263
+ if (hex.length === 3) {
4264
+ hex = hex.split("").map((char) => char + char).join("");
4265
+ }
4266
+ if (hex.length !== 6) return null;
4267
+ const r = parseInt(hex.substring(0, 2), 16);
4268
+ const s = parseInt(hex.substring(2, 4), 16);
4269
+ const l = parseInt(hex.substring(4, 6), 16);
4270
+ if (isNaN(r) || isNaN(s) || isNaN(l)) return null;
4271
+ return { r, g: s, b: l };
4272
+ } catch {
4273
+ return null;
4274
+ }
4275
+ }
4276
+ function hslToRgb(hsl) {
4277
+ const h = hsl.h / 360;
4278
+ const s = hsl.s / 100;
4279
+ const l = hsl.l / 100;
4280
+ if (s === 0) {
4281
+ const gray = Math.round(l * 255);
4282
+ return { r: gray, g: gray, b: gray };
4283
+ }
4284
+ const hue2rgb = (p2, q2, t) => {
4285
+ if (t < 0) t += 1;
4286
+ if (t > 1) t -= 1;
4287
+ if (t < 1 / 6) return p2 + (q2 - p2) * 6 * t;
4288
+ if (t < 1 / 2) return q2;
4289
+ if (t < 2 / 3) return p2 + (q2 - p2) * (2 / 3 - t) * 6;
4290
+ return p2;
4291
+ };
4292
+ const q = l < 0.5 ? l * (1 + s) : l + s - l * s;
4293
+ const p = 2 * l - q;
4294
+ const r = Math.round(hue2rgb(p, q, h + 1 / 3) * 255);
4295
+ const g = Math.round(hue2rgb(p, q, h) * 255);
4296
+ const b = Math.round(hue2rgb(p, q, h - 1 / 3) * 255);
4297
+ return { r, g, b };
4298
+ }
4299
+ function rgbToHsl(rgb) {
4300
+ const r = rgb.r / 255;
4301
+ const g = rgb.g / 255;
4302
+ const b = rgb.b / 255;
4303
+ const max = Math.max(r, g, b);
4304
+ const min = Math.min(r, g, b);
4305
+ const diff = max - min;
4306
+ let h = 0;
4307
+ let s = 0;
4308
+ const l = (max + min) / 2;
4309
+ if (diff !== 0) {
4310
+ s = l > 0.5 ? diff / (2 - max - min) : diff / (max + min);
4311
+ switch (max) {
4312
+ case r:
4313
+ h = (g - b) / diff + (g < b ? 6 : 0);
4314
+ break;
4315
+ case g:
4316
+ h = (b - r) / diff + 2;
4317
+ break;
4318
+ case b:
4319
+ h = (r - g) / diff + 4;
4320
+ break;
4321
+ }
4322
+ h /= 6;
4323
+ }
4324
+ return {
4325
+ h: Math.round(h * 360),
4326
+ s: Math.round(s * 100),
4327
+ l: Math.round(l * 100)
4328
+ };
4329
+ }
4330
+ function formatHSL(hsl, includeHslWrapper = true) {
4331
+ const values = `${hsl.h} ${hsl.s}% ${hsl.l}%`;
4332
+ return includeHslWrapper ? `hsl(${values})` : values;
4333
+ }
4334
+ function formatRGB(rgb) {
4335
+ return `rgb(${rgb.r}, ${rgb.g}, ${rgb.b})`;
4336
+ }
4337
+ function formatHex(rgb) {
4338
+ const toHex = (n) => {
4339
+ const hex = Math.round(Math.max(0, Math.min(255, n))).toString(16);
4340
+ return hex.length === 1 ? "0" + hex : hex;
4341
+ };
4342
+ return `#${toHex(rgb.r)}${toHex(rgb.g)}${toHex(rgb.b)}`;
4343
+ }
4344
+ function formatColor(colorInput, outputFormat = "hsl", includeFunctionWrapper = true) {
4345
+ let hsl = parseHSL(colorInput);
4346
+ if (!hsl) {
4347
+ const rgb = parseHex(colorInput);
4348
+ if (rgb) {
4349
+ hsl = rgbToHsl(rgb);
4350
+ }
4351
+ }
4352
+ if (!hsl) {
4353
+ return colorInput;
4354
+ }
4355
+ switch (outputFormat) {
4356
+ case "hsl":
4357
+ return formatHSL(hsl, includeFunctionWrapper);
4358
+ case "rgb":
4359
+ return formatRGB(hslToRgb(hsl));
4360
+ case "hex":
4361
+ return formatHex(hslToRgb(hsl));
4362
+ default:
4363
+ return colorInput;
4364
+ }
4365
+ }
4366
+ function withAlpha(colorInput, alpha) {
4367
+ const hsl = parseHSL(colorInput);
4368
+ if (!hsl) return colorInput;
4369
+ const rgb = hslToRgb(hsl);
4370
+ const clampedAlpha = Math.max(0, Math.min(1, alpha));
4371
+ return `rgba(${rgb.r}, ${rgb.g}, ${rgb.b}, ${clampedAlpha})`;
4372
+ }
4373
+
4374
+ // src/components/ThemePresetButtons.tsx
4375
+ var import_jsx_runtime4 = require("react/jsx-runtime");
4376
+ var DEFAULT_ANIMATION = {
4377
+ enabled: true,
4378
+ duration: 5,
4379
+ // baseDurationPerItem from TweakCN
4380
+ easing: "linear",
4381
+ rowCount: 3,
4382
+ scrollSpeed: 1,
4383
+ hoverPause: true,
4384
+ duplicationFactor: 4
4385
+ };
4386
+ var DEFAULT_LAYOUT = {
4387
+ buttonWidth: 160,
4388
+ // Keep consistent with TweakCN
4389
+ buttonGap: 16,
4390
+ // space-x-4 -> 1rem = 16px
4391
+ rowGap: 16,
4392
+ // gap-y-4 -> 1rem = 16px
4393
+ showColorBoxes: true,
4394
+ colorBoxCount: 3,
4395
+ enableMask: true
4396
+ };
4397
+ var ColorBox = ({ color, className }) => {
4398
+ return /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
4399
+ "div",
4400
+ {
4401
+ className: (0, import_clsx2.clsx)("w-3 h-3 rounded-sm border border-black/20", className),
4402
+ style: { backgroundColor: formatColor(color, "hsl") }
4403
+ }
4404
+ );
4405
+ };
4406
+ var PresetButton = ({
4407
+ preset,
4408
+ isSelected,
4409
+ onClick,
4410
+ mode,
4411
+ layout,
4412
+ renderPreset,
4413
+ renderColorBox
4414
+ }) => {
4415
+ const colors = preset.colors[mode];
4416
+ if (renderPreset) {
4417
+ return /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
4418
+ "div",
4419
+ {
4420
+ onClick,
4421
+ className: "cursor-pointer",
4422
+ style: { minWidth: layout.buttonWidth },
4423
+ children: renderPreset(preset, isSelected)
4424
+ }
4425
+ );
4426
+ }
4427
+ return /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
4428
+ import_framer_motion.motion.div,
4429
+ {
4430
+ className: "flex-shrink-0",
4431
+ style: { minWidth: layout.buttonWidth },
4432
+ whileHover: { scale: 1.02, y: -3, zIndex: 20 },
4433
+ transition: { duration: 0.2, ease: "easeOut" },
4434
+ children: /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
4435
+ "div",
4436
+ {
4437
+ className: (0, import_clsx2.clsx)(
4438
+ "cursor-pointer bg-card hover:bg-card/80 border border-border rounded-lg",
4439
+ "flex w-full h-full items-center justify-center relative transition-all duration-200",
4440
+ "hover:shadow-lg hover:border-primary/20 px-4 py-3",
4441
+ isSelected ? "ring-2 ring-primary/50 shadow-md bg-primary/5" : ""
4442
+ ),
4443
+ onClick,
4444
+ children: /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)("div", { className: "flex items-center gap-2.5 text-center", children: [
4445
+ layout.showColorBoxes && /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("div", { className: "flex gap-1", children: [colors.primary, colors.secondary, colors.accent].slice(0, layout.colorBoxCount).map(
4446
+ (color, index) => renderColorBox ? renderColorBox(color, index) : /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(ColorBox, { color }, index)
4447
+ ) }),
4448
+ /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("span", { className: "capitalize px-1 leading-tight text-sm font-medium text-foreground", children: preset.name.replace(/-/g, " ") })
4449
+ ] })
4450
+ }
4451
+ )
4452
+ }
4453
+ );
4454
+ };
4455
+ var AnimatedRow = ({
4456
+ presets,
4457
+ selectedPresetId,
4458
+ onPresetSelect,
4459
+ mode,
4460
+ animation,
4461
+ layout,
4462
+ renderPreset,
4463
+ renderColorBox
4464
+ }) => {
4465
+ const [scope, animate] = (0, import_framer_motion.useAnimate)();
4466
+ const controls = (0, import_react4.useRef)(null);
4467
+ if (presets.length === 0) return null;
4468
+ const duplicatedPresets = Array(animation.duplicationFactor).fill(presets).flat();
4469
+ const totalWidth = presets.length * (layout.buttonWidth + layout.buttonGap);
4470
+ const animationDuration = presets.length * animation.duration;
4471
+ const target = {
4472
+ x: [0, -totalWidth]
4473
+ };
4474
+ const options = {
4475
+ duration: animationDuration,
4476
+ ease: animation.easing,
4477
+ repeat: Infinity
4478
+ };
4479
+ (0, import_react4.useEffect)(() => {
4480
+ if (animation.enabled) {
4481
+ controls.current = animate(scope.current, target, options);
4482
+ }
4483
+ }, [target, options, animate, scope, animation.enabled]);
4484
+ return /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
4485
+ import_framer_motion.motion.div,
4486
+ {
4487
+ ref: scope,
4488
+ className: "flex",
4489
+ onHoverStart: () => animation.hoverPause && controls.current?.pause(),
4490
+ onHoverEnd: () => animation.hoverPause && controls.current?.play(),
4491
+ children: /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
4492
+ "div",
4493
+ {
4494
+ className: "flex flex-shrink-0",
4495
+ style: { gap: `${layout.buttonGap}px` },
4496
+ children: duplicatedPresets.map((preset, index) => /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
4497
+ PresetButton,
4498
+ {
4499
+ preset,
4500
+ isSelected: preset.id === selectedPresetId,
4501
+ onClick: () => onPresetSelect(preset),
4502
+ mode,
4503
+ layout,
4504
+ renderPreset,
4505
+ renderColorBox
4506
+ },
4507
+ `${preset.id}-${index}`
4508
+ ))
4509
+ }
4510
+ )
4511
+ }
4512
+ );
4513
+ };
4514
+ var ThemePresetButtons = ({
4515
+ animation: animationOverrides = {},
4516
+ layout: layoutOverrides = {},
4517
+ renderPreset,
4518
+ renderColorBox,
4519
+ className,
4520
+ categories,
4521
+ maxPresets,
4522
+ showBuiltIn = true,
4523
+ showCustom = true,
4524
+ groupBy = "none",
4525
+ labels = {},
4526
+ showSectionHeaders = true
4527
+ }) => {
4528
+ const { currentPreset, applyPreset, resolvedMode, availablePresets, builtInPresets, customPresets } = useTheme();
4529
+ const selectedPresetId = currentPreset?.presetId || void 0;
4530
+ const onPresetSelect = applyPreset;
4531
+ const defaultLabels = {
4532
+ builtIn: labels.builtIn || "Built-in Themes",
4533
+ custom: labels.custom || "Custom Themes"
4534
+ };
4535
+ const isGrouped = groupBy !== "none";
4536
+ const shouldShowHeaders = showSectionHeaders && isGrouped;
4537
+ if (typeof window !== "undefined" && window.location?.hostname === "localhost") {
4538
+ console.log("\u{1F3A8} ThemePresetButtons: Categorization features", {
4539
+ groupBy,
4540
+ showBuiltIn,
4541
+ showCustom,
4542
+ labels: defaultLabels,
4543
+ shouldShowHeaders
4544
+ });
4545
+ }
4546
+ const [presets, setPresets] = (0, import_react4.useState)([]);
4547
+ const [loading, setLoading] = (0, import_react4.useState)(true);
4548
+ const [error, setError] = (0, import_react4.useState)(null);
4549
+ const animation = (0, import_react4.useMemo)(
4550
+ () => ({ ...DEFAULT_ANIMATION, ...animationOverrides }),
4551
+ [animationOverrides]
4552
+ );
4553
+ const layout = (0, import_react4.useMemo)(
4554
+ () => ({ ...DEFAULT_LAYOUT, ...layoutOverrides }),
4555
+ [layoutOverrides]
4556
+ );
4557
+ const loadPresets = (0, import_react4.useCallback)(() => {
4558
+ try {
4559
+ setLoading(true);
4560
+ setError(null);
4561
+ let allPresets = [];
4562
+ if (showBuiltIn) {
4563
+ const builtInPresetList = Object.entries(builtInPresets).map(([id, preset]) => ({
4564
+ id,
4565
+ name: preset.label,
4566
+ colors: {
4567
+ light: preset.styles.light,
4568
+ dark: preset.styles.dark
4569
+ },
4570
+ metadata: {
4571
+ category: preset.label.toLowerCase().includes("minimal") ? "minimal" : preset.label.toLowerCase().includes("violet") || preset.label.toLowerCase().includes("purple") ? "vibrant" : "modern",
4572
+ tags: [preset.label.toLowerCase().replace(/\s+/g, "-")],
4573
+ createdAt: preset.createdAt,
4574
+ provider: "built-in"
4575
+ }
4576
+ }));
4577
+ allPresets.push(...builtInPresetList);
4578
+ }
4579
+ if (showCustom) {
4580
+ const customPresetList = Object.entries(customPresets).map(([id, preset]) => ({
4581
+ id,
4582
+ name: preset.label,
4583
+ colors: {
4584
+ light: preset.styles.light,
4585
+ dark: preset.styles.dark
4586
+ },
4587
+ metadata: {
4588
+ category: preset.label.toLowerCase().includes("minimal") ? "minimal" : preset.label.toLowerCase().includes("violet") || preset.label.toLowerCase().includes("purple") ? "vibrant" : "modern",
4589
+ tags: [preset.label.toLowerCase().replace(/\s+/g, "-")],
4590
+ createdAt: preset.createdAt,
4591
+ provider: "custom"
4592
+ }
4593
+ }));
4594
+ allPresets.push(...customPresetList);
4595
+ }
4596
+ if (categories && categories.length > 0) {
4597
+ allPresets = allPresets.filter(
4598
+ (preset) => categories.includes(preset.metadata?.category || "unknown")
4599
+ );
4600
+ }
4601
+ if (maxPresets && maxPresets > 0) {
4602
+ allPresets = allPresets.slice(0, maxPresets);
4603
+ }
4604
+ setPresets(allPresets);
4605
+ } catch (err) {
4606
+ setError(err instanceof Error ? err.message : "Failed to load presets");
4607
+ console.error("Failed to load presets:", err);
4608
+ } finally {
4609
+ setLoading(false);
4610
+ }
4611
+ }, [availablePresets, builtInPresets, customPresets, categories, maxPresets, showBuiltIn, showCustom]);
4612
+ (0, import_react4.useEffect)(() => {
4613
+ loadPresets();
4614
+ }, [loadPresets]);
4615
+ const presetsByRow = (0, import_react4.useMemo)(() => {
4616
+ if (presets.length === 0) return [];
4617
+ const rows = Array.from(
4618
+ { length: animation.rowCount },
4619
+ () => []
4620
+ );
4621
+ presets.forEach((preset, index) => {
4622
+ rows[index % animation.rowCount].push(preset);
4623
+ });
4624
+ return rows.filter((row) => row.length > 0);
4625
+ }, [presets, animation.rowCount]);
4626
+ const containerStyle = (0, import_react4.useMemo)(
4627
+ () => ({
4628
+ gap: layout.rowGap,
4629
+ ...layout.enableMask && {
4630
+ maskImage: "linear-gradient(to right, transparent 0%, black 10%, black 90%, transparent 100%)",
4631
+ WebkitMaskImage: "linear-gradient(to right, transparent 0%, black 10%, black 90%, transparent 100%)"
4632
+ }
4633
+ }),
4634
+ [layout.rowGap, layout.enableMask]
4635
+ );
4636
+ if (loading) {
4637
+ return /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("div", { className: (0, import_clsx2.clsx)("flex items-center justify-center py-8", className), children: /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("div", { className: "animate-pulse text-sm text-muted-foreground", children: "Loading presets..." }) });
4638
+ }
4639
+ if (error) {
4640
+ return /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("div", { className: (0, import_clsx2.clsx)("flex items-center justify-center py-8", className), children: /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)("div", { className: "text-sm text-destructive", children: [
4641
+ "Error: ",
4642
+ error
4643
+ ] }) });
4644
+ }
4645
+ if (presets.length === 0) {
4646
+ return /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("div", { className: (0, import_clsx2.clsx)("flex items-center justify-center py-8", className), children: /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("div", { className: "text-sm text-muted-foreground", children: "No presets available" }) });
4647
+ }
4648
+ return /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
4649
+ import_framer_motion.motion.div,
4650
+ {
4651
+ initial: { opacity: 0, y: 20 },
4652
+ whileInView: { opacity: 1, y: 0 },
4653
+ viewport: { once: true },
4654
+ transition: { duration: 0.5, ease: "easeOut" },
4655
+ className: (0, import_clsx2.clsx)(
4656
+ "w-full overflow-hidden mb-8 flex flex-col py-2 -my-2",
4657
+ className
4658
+ ),
4659
+ style: containerStyle,
4660
+ children: presetsByRow.map((rowPresets, index) => /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
4661
+ AnimatedRow,
4662
+ {
4663
+ presets: rowPresets,
4664
+ selectedPresetId,
4665
+ onPresetSelect,
4666
+ mode: resolvedMode,
4667
+ animation,
4668
+ layout,
4669
+ renderPreset,
4670
+ renderColorBox
4671
+ },
4672
+ `row-${index}`
4673
+ ))
4674
+ }
4675
+ );
4676
+ };
4677
+ // Annotate the CommonJS export names for ESM import in node:
4678
+ 0 && (module.exports = {
4679
+ ThemePresetButtons,
4680
+ ThemeProvider,
4681
+ ThemeScript,
4682
+ ThemeToggle,
4683
+ formatColor,
4684
+ getPresetById,
4685
+ getPresetEntries,
4686
+ getPresetIds,
4687
+ getPresetLabels,
4688
+ getPresetsCount,
4689
+ logValidationResult,
4690
+ searchPresets,
4691
+ tweakcnPresets,
4692
+ useTheme,
4693
+ validateCustomPresets,
4694
+ validateTweakCNPreset,
4695
+ withAlpha
4696
+ });