previewcn 0.1.2 → 0.1.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/dist/index.js +3826 -246
  2. package/package.json +1 -1
package/dist/index.js CHANGED
@@ -1,14 +1,14 @@
1
1
  #!/usr/bin/env node
2
- import {Command}from'commander';import*as C from'fs/promises';import C__default from'fs/promises';import*as l from'path';import l__default from'path';import u from'chalk';import G from'ora';import we from'prompts';async function h(e){let t={isNextJs:false,isAppRouter:false};try{let r=l__default.join(e,"package.json"),s=await C__default.readFile(r,"utf-8"),n=JSON.parse(s);t.isNextJs=!!(n.dependencies?.next||n.devDependencies?.next);}catch{return t}let o=[l__default.join(e,"app"),l__default.join(e,"src","app")];for(let r of o)try{if((await C__default.stat(r)).isDirectory()){t.isAppRouter=!0;break}}catch{}return t}async function k(e){let t=[l__default.join(e,"app","layout.tsx"),l__default.join(e,"app","layout.ts"),l__default.join(e,"app","layout.jsx"),l__default.join(e,"app","layout.js"),l__default.join(e,"src","app","layout.tsx"),l__default.join(e,"src","app","layout.ts"),l__default.join(e,"src","app","layout.jsx"),l__default.join(e,"src","app","layout.js")];for(let o of t)try{return await C__default.access(o),o}catch{}return null}var a={info:e=>console.log(u.blue("info"),e),success:e=>console.log(u.green("success"),e),warn:e=>console.log(u.yellow("warn"),e),error:e=>console.log(u.red("error"),e),hint:e=>console.log(u.gray("hint"),e)};var re=/^import[\s\S]*?;\s*$/gm,ne=/^import[\s\S]*?@previewcn\/devtools(?:\/styles\.css)?["'][\s\S]*?;\s*$/gm,se=/import\s+\{[^}]*\bPreviewcnDevtools\b[^}]*\}\s+from\s+["'][^"']+["'];?/,ae="@/components/ui/previewcn",le='{process.env.NODE_ENV === "development" && <PreviewcnDevtools />}';function ie(e){return `import { PreviewcnDevtools } from "${e}";`}function ce(e){return e.replace(ne,"").replace(/\n{3,}/g,`
2
+ import {Command}from'commander';import*as w from'fs/promises';import w__default from'fs/promises';import*as s from'path';import s__default from'path';import u from'chalk';import V from'ora';import Pe from'prompts';async function m(e){let r={isNextJs:false,isAppRouter:false};try{let a=s__default.join(e,"package.json"),f=await w__default.readFile(a,"utf-8"),t=JSON.parse(f);r.isNextJs=!!(t.dependencies?.next||t.devDependencies?.next);}catch{return r}let o=[s__default.join(e,"app"),s__default.join(e,"src","app")];for(let a of o)try{if((await w__default.stat(a)).isDirectory()){r.isAppRouter=!0;break}}catch{}return r}async function h(e){let r=[s__default.join(e,"app","layout.tsx"),s__default.join(e,"app","layout.ts"),s__default.join(e,"app","layout.jsx"),s__default.join(e,"app","layout.js"),s__default.join(e,"src","app","layout.tsx"),s__default.join(e,"src","app","layout.ts"),s__default.join(e,"src","app","layout.jsx"),s__default.join(e,"src","app","layout.js")];for(let o of r)try{return await w__default.access(o),o}catch{}return null}var n={info:e=>console.log(u.blue("info"),e),success:e=>console.log(u.green("success"),e),warn:e=>console.log(u.yellow("warn"),e),error:e=>console.log(u.red("error"),e),hint:e=>console.log(u.gray("hint"),e)};var ae=/^import[\s\S]*?;\s*$/gm,te=/^import[\s\S]*?@previewcn\/devtools(?:\/styles\.css)?["'][\s\S]*?;\s*$/gm,fe=/import\s+\{[^}]*\bPreviewcnDevtools\b[^}]*\}\s+from\s+["'][^"']+["'];?/,ne="@/components/ui/previewcn",se='{process.env.NODE_ENV === "development" && <PreviewcnDevtools />}';function de(e){return `import { PreviewcnDevtools } from "${e}";`}function ce(e){return e.replace(te,"").replace(/\n{3,}/g,`
3
3
 
4
- `)}function pe(e){return se.test(e)}function de(e,t){if(t.length===0)return e;let o=`
5
- ${t.join(`
6
- `)}`,r=[...e.matchAll(re)];if(r.length===0)return `${t.join(`
4
+ `)}function ie(e){return fe.test(e)}function le(e,r){if(r.length===0)return e;let o=`
5
+ ${r.join(`
6
+ `)}`,a=[...e.matchAll(ae)];if(a.length===0)return `${r.join(`
7
7
  `)}
8
8
 
9
- ${e}`;let s=r[r.length-1],n=s.index+s[0].length;return e.slice(0,n)+o+e.slice(n)}function ue(e,t){let o=e.match(/<body[^>]*>/);if(!o)return e;let r=o.index+o[0].length;return e.slice(0,r)+`
10
- `+t+e.slice(r)}async function z(e,t=ae){let o=await C__default.readFile(e,"utf-8"),r=ce(o),s=[];pe(r)||s.push(ie(t));let n=de(r,s);n.includes("<PreviewcnDevtools")||(n=ue(n,le)),await C__default.writeFile(e,n,"utf-8");}async function W(e){try{return (await C__default.readFile(e,"utf-8")).includes("PreviewcnDevtools")}catch{return false}}var Y=".json";async function fe(e){try{let t=await C.readFile(e,"utf-8");return JSON.parse(t)}catch{return null}}function H(e){return e.endsWith(Y)?e:`${e}${Y}`}function ge(e,t){return t.startsWith(".")?l.resolve(l.dirname(e),H(t)):l.isAbsolute(t)?H(t):null}function me(e,t,o){if(!e)return {};let r=o?l.resolve(t,o):t,s={};for(let[n,c]of Object.entries(e))s[n]=c.map(d=>l.resolve(r,d));return s}async function _(e,t=new Set){if(t.has(e))return {};t.add(e);let o=await fe(e);if(!o)return {};let r=l.dirname(e),s=me(o.compilerOptions?.paths,r,o.compilerOptions?.baseUrl);if(!o.extends)return s;let n=ge(e,o.extends);return n?{...await _(n,t),...s}:s}async function he(e){let t=l.join(e,"tsconfig.json"),o=l.join(e,"jsconfig.json"),r=await _(t);return Object.keys(r).length>0?r:_(o)}function ke(e,t){let o=t.indexOf("*");if(o===-1)return e===t?"":null;let r=t.slice(0,o),s=t.slice(o+1);return !e.startsWith(r)||!e.endsWith(s)?null:e.slice(r.length,e.length-s.length)}function ye(e,t){for(let[o,r]of Object.entries(t)){let s=ke(e,o);if(s===null)continue;let n=r[0];if(n)return o.includes("*")?n.replace("*",s):n}return null}async function be(e,t){if(l.isAbsolute(t))return t;if(t.startsWith("./")||t.startsWith("../"))return l.resolve(e,t);let o=await he(e),r=ye(t,o);if(r)return r;if(t.startsWith("@/")){let s=t.replace(/^@\//,"");try{return await C.access(l.join(e,"src")),l.join(e,"src",s)}catch{return l.join(e,s)}}return l.join(e,t)}async function ve(e){let t=l.join(e,"components.json");try{let o=await C.readFile(t,"utf-8"),r=JSON.parse(o);if(r.aliases?.ui)return r.aliases.ui;if(r.aliases?.components)return `${r.aliases.components}/ui`}catch{}return "@/components/ui"}async function y(e){let t=await ve(e),o=await be(e,t);return {uiAlias:t,importPath:`${t}/previewcn`,targetDir:l.join(o,"previewcn")}}async function Ce(e){try{let t=l__default.join(e,"index.ts");return await C__default.access(t),!0}catch{return false}}async function X(){a.info(`Running PreviewCN diagnostics...
11
- `);let e=process.cwd(),t=[],o=await h(e);t.push({name:"Next.js App Router",pass:o.isNextJs&&o.isAppRouter,message:o.isNextJs?o.isAppRouter?"Detected":"App Router not found (using Pages Router?)":"Not a Next.js project"});let{targetDir:r}=await y(e),s=await Ce(r),n=l__default.relative(e,r);t.push({name:"PreviewCN components",pass:s,message:s?`Found in ${n}`:"Not found (run `npx previewcn init`)"});let c=false,d=await k(e);d&&(c=await W(d)),t.push({name:"PreviewcnDevtools in layout",pass:c,message:c?"Found":"Not found in layout (run `npx previewcn init`)"}),console.log();for(let p of t){let te=p.pass?u.green("\u2713"):u.red("\u2717"),oe=p.pass?u.green(p.message):u.red(p.message);console.log(` ${te} ${p.name}: ${oe}`);}console.log(),t.every(p=>p.pass)?(a.success("All checks passed! PreviewCN devtools is ready to use."),a.info("Run your dev server and click the theme icon to open the editor.")):a.warn("Some checks failed. Run `npx previewcn init` to set up.");}function w(){return `"use client";
9
+ ${e}`;let f=a[a.length-1],t=f.index+f[0].length;return e.slice(0,t)+o+e.slice(t)}function ue(e,r){let o=e.match(/<body[^>]*>/);if(!o)return e;let a=o.index+o[0].length;return e.slice(0,a)+`
10
+ `+r+e.slice(a)}async function z(e,r=ne){let o=await w__default.readFile(e,"utf-8"),a=ce(o),f=[];ie(a)||f.push(de(r));let t=le(a,f);t.includes("<PreviewcnDevtools")||(t=ue(t,se)),await w__default.writeFile(e,t,"utf-8");}async function W(e){try{return (await w__default.readFile(e,"utf-8")).includes("PreviewcnDevtools")}catch{return false}}var H=".json";async function pe(e){try{let r=await w.readFile(e,"utf-8");return JSON.parse(r)}catch{return null}}function Y(e){return e.endsWith(H)?e:`${e}${H}`}function ge(e,r){return r.startsWith(".")?s.resolve(s.dirname(e),Y(r)):s.isAbsolute(r)?Y(r):null}function be(e,r,o){if(!e)return {};let a=o?s.resolve(r,o):r,f={};for(let[t,c]of Object.entries(e))f[t]=c.map(l=>s.resolve(a,l));return f}async function F(e,r=new Set){if(r.has(e))return {};r.add(e);let o=await pe(e);if(!o)return {};let a=s.dirname(e),f=be(o.compilerOptions?.paths,a,o.compilerOptions?.baseUrl);if(!o.extends)return f;let t=ge(e,o.extends);return t?{...await F(t,r),...f}:f}async function me(e){let r=s.join(e,"tsconfig.json"),o=s.join(e,"jsconfig.json"),a=await F(r);return Object.keys(a).length>0?a:F(o)}function he(e,r){let o=r.indexOf("*");if(o===-1)return e===r?"":null;let a=r.slice(0,o),f=r.slice(o+1);return !e.startsWith(a)||!e.endsWith(f)?null:e.slice(a.length,e.length-f.length)}function ye(e,r){for(let[o,a]of Object.entries(r)){let f=he(e,o);if(f===null)continue;let t=a[0];if(t)return o.includes("*")?t.replace("*",f):t}return null}async function ve(e,r){if(s.isAbsolute(r))return r;if(r.startsWith("./")||r.startsWith("../"))return s.resolve(e,r);let o=await me(e),a=ye(r,o);if(a)return a;if(r.startsWith("@/")){let f=r.replace(/^@\//,"");try{return await w.access(s.join(e,"src")),s.join(e,"src",f)}catch{return s.join(e,f)}}return s.join(e,r)}async function ke(e){let r=s.join(e,"components.json");try{let o=await w.readFile(r,"utf-8"),a=JSON.parse(o);if(a.aliases?.ui)return a.aliases.ui;if(a.aliases?.components)return `${a.aliases.components}/ui`}catch{}return "@/components/ui"}async function y(e){let r=await ke(e),o=await ve(e,r);return {uiAlias:r,importPath:`${r}/previewcn`,targetDir:s.join(o,"previewcn")}}async function we(e){try{let r=s__default.join(e,"index.ts");return await w__default.access(r),!0}catch{return false}}async function X(){n.info(`Running PreviewCN diagnostics...
11
+ `);let e=process.cwd(),r=[],o=await m(e);r.push({name:"Next.js App Router",pass:o.isNextJs&&o.isAppRouter,message:o.isNextJs?o.isAppRouter?"Detected":"App Router not found (using Pages Router?)":"Not a Next.js project"});let{targetDir:a}=await y(e),f=await we(a),t=s__default.relative(e,a);r.push({name:"PreviewCN components",pass:f,message:f?`Found in ${t}`:"Not found (run `npx previewcn init`)"});let c=false,l=await h(e);l&&(c=await W(l)),r.push({name:"PreviewcnDevtools in layout",pass:c,message:c?"Found":"Not found in layout (run `npx previewcn init`)"}),console.log();for(let i of r){let re=i.pass?u.green("\u2713"):u.red("\u2717"),oe=i.pass?u.green(i.message):u.red(i.message);console.log(` ${re} ${i.name}: ${oe}`);}console.log(),r.every(i=>i.pass)?(n.success("All checks passed! PreviewCN devtools is ready to use."),n.info("Run your dev server and click the theme icon to open the editor.")):n.warn("Some checks failed. Run `npx previewcn init` to set up.");}function P(){return `"use client";
12
12
 
13
13
  import { colorPresets } from "./presets/colors";
14
14
 
@@ -55,7 +55,7 @@ export function ColorPicker({ value, onChange }: ColorPickerProps) {
55
55
  </div>
56
56
  );
57
57
  }
58
- `}function T(){return `"use client";
58
+ `}function S(){return `"use client";
59
59
 
60
60
  import { useEffect, useRef, useState } from "react";
61
61
 
@@ -156,7 +156,7 @@ export function CssExportButton({ config }: CssExportButtonProps) {
156
156
  </button>
157
157
  );
158
158
  }
159
- `}function S(){return `// CSS Export utilities for generating shadcn/ui compatible CSS
159
+ `}function _(){return `// CSS Export utilities for generating shadcn/ui compatible CSS
160
160
 
161
161
  import { getColorPreset } from "./presets/colors";
162
162
  import { getThemePreset } from "./presets/theme-presets";
@@ -248,7 +248,7 @@ export async function copyToClipboard(text: string): Promise<boolean> {
248
248
  }
249
249
  }
250
250
  }
251
- `}function F(){return `"use client";
251
+ `}function T(){return `"use client";
252
252
 
253
253
  import { lazy, Suspense, useState } from "react";
254
254
 
@@ -283,7 +283,7 @@ export function PreviewcnDevtools() {
283
283
 
284
284
  return <DevtoolsInner />;
285
285
  }
286
- `}function R(){return `"use client";
286
+ `}function M(){return `"use client";
287
287
 
288
288
  import { useState } from "react";
289
289
 
@@ -387,7 +387,7 @@ export function FontSelector({ value, onChange }: FontSelectorProps) {
387
387
  </div>
388
388
  );
389
389
  }
390
- `}function N(){return `"use client";
390
+ `}function E(){return `"use client";
391
391
 
392
392
  type ModeToggleProps = {
393
393
  value: boolean | null;
@@ -481,9 +481,9 @@ export function ModeToggle({ value, onChange }: ModeToggleProps) {
481
481
  </div>
482
482
  );
483
483
  }
484
- `}function E(){return `"use client";
484
+ `}function N(){return `"use client";
485
485
 
486
- import { useEffect, useRef, type ReactNode } from "react";
486
+ import { useEffect, type ReactNode } from "react";
487
487
 
488
488
  import { useThemeState } from "./use-theme-state";
489
489
  import { applyTheme } from "./theme-applier";
@@ -730,12 +730,10 @@ export default function Panel({ onClose }: PanelProps) {
730
730
  resetTheme,
731
731
  } = useThemeState();
732
732
 
733
- const didApplyOnOpenRef = useRef(false);
733
+ // Apply stored theme only when the panel opens
734
734
  useEffect(() => {
735
- if (didApplyOnOpenRef.current) return;
736
- didApplyOnOpenRef.current = true;
737
735
  applyTheme(config);
738
- }, [config]);
736
+ }, []);
739
737
 
740
738
  usePanelKeyframes();
741
739
 
@@ -754,7 +752,7 @@ export default function Panel({ onClose }: PanelProps) {
754
752
  </div>
755
753
  );
756
754
  }
757
- `}function I(){return `"use client";
755
+ `}function D(){return `"use client";
758
756
 
759
757
  import { themePresets } from "./presets/theme-presets";
760
758
 
@@ -812,7 +810,7 @@ export function PresetSelector({ value, onChange }: PresetSelectorProps) {
812
810
  </div>
813
811
  );
814
812
  }
815
- `}function D(){return `// Color preset data used by the devtools color picker.
813
+ `}function R(){return `// Color preset data used by the devtools color picker.
816
814
  // Kept in a separate file to keep logic files small.
817
815
 
818
816
  export type PresetSpec = {
@@ -830,6 +828,10 @@ export type PresetSpec = {
830
828
  light?: string;
831
829
  dark?: string;
832
830
  };
831
+ destructiveForeground?: {
832
+ light?: string;
833
+ dark?: string;
834
+ };
833
835
  };
834
836
 
835
837
  export const colorPresetSpecs: PresetSpec[] = [
@@ -1024,7 +1026,7 @@ export const colorPresetSpecs: PresetSpec[] = [
1024
1026
  },
1025
1027
  },
1026
1028
  ];
1027
- `}function j(){return `// Color presets compatible with shadcn/ui
1029
+ `}function A(){return `// Color presets compatible with shadcn/ui
1028
1030
  // Uses OKLCH color space for better perceptual uniformity
1029
1031
 
1030
1032
  import { colorPresetSpecs, type PresetSpec } from "./color-preset-specs";
@@ -1086,6 +1088,11 @@ const defaultPrimaryForeground = {
1086
1088
  dark: "oklch(0.985 0 0)",
1087
1089
  };
1088
1090
 
1091
+ const defaultDestructiveForeground = {
1092
+ light: "oklch(0.985 0 0)",
1093
+ dark: "oklch(0.985 0 0)",
1094
+ };
1095
+
1089
1096
  function createColorPreset(spec: PresetSpec): ColorPreset {
1090
1097
  return {
1091
1098
  name: spec.name,
@@ -1097,6 +1104,8 @@ function createColorPreset(spec: PresetSpec): ColorPreset {
1097
1104
  "primary-foreground":
1098
1105
  spec.primaryForeground?.light ?? defaultPrimaryForeground.light,
1099
1106
  destructive: spec.destructive?.light ?? defaultDestructive.light,
1107
+ "destructive-foreground":
1108
+ spec.destructiveForeground?.light ?? defaultDestructiveForeground.light,
1100
1109
  },
1101
1110
  dark: {
1102
1111
  ...neutralColors.dark,
@@ -1104,6 +1113,8 @@ function createColorPreset(spec: PresetSpec): ColorPreset {
1104
1113
  "primary-foreground":
1105
1114
  spec.primaryForeground?.dark ?? defaultPrimaryForeground.dark,
1106
1115
  destructive: spec.destructive?.dark ?? defaultDestructive.dark,
1116
+ "destructive-foreground":
1117
+ spec.destructiveForeground?.dark ?? defaultDestructiveForeground.dark,
1107
1118
  },
1108
1119
  },
1109
1120
  };
@@ -1115,7 +1126,7 @@ export const colorPresets: ColorPreset[] =
1115
1126
  export function getColorPreset(name: string): ColorPreset | undefined {
1116
1127
  return colorPresets.find((p) => p.name === name);
1117
1128
  }
1118
- `}function M(){return `// Font presets using Google Fonts
1129
+ `}function I(){return `// Font presets using Google Fonts
1119
1130
 
1120
1131
  export type FontPreset = {
1121
1132
  label: string;
@@ -1195,17 +1206,80 @@ export const fontPresets: FontPreset[] = [
1195
1206
  googleFontsUrl:
1196
1207
  "https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400;500;600;700&display=swap",
1197
1208
  },
1209
+ {
1210
+ label: "Plus Jakarta Sans",
1211
+ value: "plus-jakarta-sans",
1212
+ fontFamily: '"Plus Jakarta Sans", sans-serif',
1213
+ googleFontsUrl:
1214
+ "https://fonts.googleapis.com/css2?family=Plus+Jakarta+Sans:wght@400;500;600;700&display=swap",
1215
+ },
1216
+ {
1217
+ label: "Poppins",
1218
+ value: "poppins",
1219
+ fontFamily: '"Poppins", sans-serif',
1220
+ googleFontsUrl:
1221
+ "https://fonts.googleapis.com/css2?family=Poppins:wght@400;500;600;700&display=swap",
1222
+ },
1223
+ {
1224
+ label: "Open Sans",
1225
+ value: "open-sans",
1226
+ fontFamily: '"Open Sans", sans-serif',
1227
+ googleFontsUrl:
1228
+ "https://fonts.googleapis.com/css2?family=Open+Sans:wght@400;500;600;700&display=swap",
1229
+ },
1230
+ {
1231
+ label: "Montserrat",
1232
+ value: "montserrat",
1233
+ fontFamily: '"Montserrat", sans-serif',
1234
+ googleFontsUrl:
1235
+ "https://fonts.googleapis.com/css2?family=Montserrat:wght@400;500;600;700&display=swap",
1236
+ },
1237
+ {
1238
+ label: "Oxanium",
1239
+ value: "oxanium",
1240
+ fontFamily: '"Oxanium", sans-serif',
1241
+ googleFontsUrl:
1242
+ "https://fonts.googleapis.com/css2?family=Oxanium:wght@400;500;600;700&display=swap",
1243
+ },
1244
+ {
1245
+ label: "Libre Baskerville",
1246
+ value: "libre-baskerville",
1247
+ fontFamily: '"Libre Baskerville", serif',
1248
+ googleFontsUrl:
1249
+ "https://fonts.googleapis.com/css2?family=Libre+Baskerville:wght@400;700&display=swap",
1250
+ },
1251
+ {
1252
+ label: "Merriweather",
1253
+ value: "merriweather",
1254
+ fontFamily: '"Merriweather", serif',
1255
+ googleFontsUrl:
1256
+ "https://fonts.googleapis.com/css2?family=Merriweather:wght@400;700&display=swap",
1257
+ },
1258
+ {
1259
+ label: "Architects Daughter",
1260
+ value: "architects-daughter",
1261
+ fontFamily: '"Architects Daughter", cursive',
1262
+ googleFontsUrl:
1263
+ "https://fonts.googleapis.com/css2?family=Architects+Daughter&display=swap",
1264
+ },
1265
+ {
1266
+ label: "Antic",
1267
+ value: "antic",
1268
+ fontFamily: '"Antic", sans-serif',
1269
+ googleFontsUrl:
1270
+ "https://fonts.googleapis.com/css2?family=Antic&display=swap",
1271
+ },
1198
1272
  ];
1199
1273
 
1200
1274
  export function getFontPreset(value: string): FontPreset | undefined {
1201
1275
  return fontPresets.find((f) => f.value === value);
1202
1276
  }
1203
- `}function O(){return `export * from "./colors";
1277
+ `}function B(){return `export * from "./colors";
1204
1278
  export * from "./color-preset-specs";
1205
1279
  export * from "./fonts";
1206
1280
  export * from "./radius";
1207
1281
  export * from "./theme-presets";
1208
- `}function L(){return `// Radius presets for border-radius customization
1282
+ `}function O(){return `// Radius presets for border-radius customization
1209
1283
 
1210
1284
  export type RadiusPreset = {
1211
1285
  name: string;
@@ -1225,7 +1299,7 @@ export const radiusPresets: RadiusPreset[] = [
1225
1299
  export function getRadiusPreset(name: string): RadiusPreset | undefined {
1226
1300
  return radiusPresets.find((p) => p.name === name);
1227
1301
  }
1228
- `}function A(){return `// Theme presets adapted from tweakcn (Apache License 2.0)
1302
+ `}function j(){return `// Theme presets adapted from tweakcn (Apache License 2.0)
1229
1303
  // https://github.com/jnsahaj/tweakcn
1230
1304
  // Original presets by Sahaj Jain
1231
1305
 
@@ -1484,222 +1558,3728 @@ export const themePresets: ThemePreset[] = [
1484
1558
  },
1485
1559
  radius: "0.5rem",
1486
1560
  },
1487
- ];
1488
-
1489
- const themePresetByName = new Map(
1490
- themePresets.map((preset) => [preset.name, preset])
1491
- );
1492
-
1493
- export function getThemePreset(name: string): ThemePreset | undefined {
1494
- return themePresetByName.get(name);
1495
- }
1496
- `}function $(){return `"use client";
1497
-
1498
- import { radiusPresets } from "./presets/radius";
1499
-
1500
- type RadiusSelectorProps = {
1501
- value: string | null;
1502
- onChange: (radius: string) => void;
1503
- };
1504
-
1505
- const baseButtonClass =
1506
- "inline-flex flex-col items-center justify-center gap-1.5 w-full min-h-[52px] px-2.5 py-1.5 rounded-[10px] border text-xs font-medium tracking-[0.01em] cursor-pointer transition-all duration-[160ms]";
1507
-
1508
- const defaultButtonClass =
1509
- "border-[oklch(1_0_0/0.08)] bg-[oklch(0.2_0.02_260/0.9)] text-[oklch(0.96_0_0)] hover:bg-[oklch(0.24_0.02_260/0.95)] hover:border-[oklch(1_0_0/0.18)]";
1510
-
1511
- const selectedButtonClass =
1512
- "bg-[oklch(0.24_0.02_260/0.95)] border-[oklch(0.72_0.15_265)] shadow-[0_0_0_1px_oklch(0.72_0.15_265),0_10px_24px_oklch(0_0_0/0.35)]";
1513
-
1514
- export function RadiusSelector({ value, onChange }: RadiusSelectorProps) {
1515
- return (
1516
- <div
1517
- className="relative grid gap-2.5 p-3 rounded-xl border border-[oklch(1_0_0/0.08)] bg-[oklch(0.2_0.02_260/0.9)]"
1518
- style={{ boxShadow: "inset 0 1px 0 oklch(1 0 0 / 0.04)" }}
1519
- >
1520
- <label className="block text-[10.5px] font-semibold tracking-[0.16em] uppercase text-[oklch(0.72_0_0)]">
1521
- Radius
1522
- </label>
1523
- <div className="grid grid-cols-3 gap-2">
1524
- {radiusPresets.map((preset) => {
1525
- const isSelected = value === preset.value;
1526
-
1527
- return (
1528
- <button
1529
- key={preset.name}
1530
- onClick={() => onChange(preset.value)}
1531
- className={\`\${baseButtonClass} \${isSelected ? selectedButtonClass : defaultButtonClass}\`}
1532
- style={isSelected ? undefined : { boxShadow: "inset 0 1px 0 oklch(1 0 0 / 0.04)" }}
1533
- title={preset.label}
1534
- >
1535
- <span
1536
- className="w-7 h-[18px] border border-[oklch(1_0_0/0.12)]"
1537
- style={{
1538
- borderRadius: preset.value,
1539
- background:
1540
- "linear-gradient(180deg, oklch(0.8 0 0 / 0.45), oklch(0.6 0 0 / 0.2))",
1541
- }}
1542
- />
1543
- <span className="text-[11px] text-[oklch(0.72_0_0)]">
1544
- {preset.label}
1545
- </span>
1546
- </button>
1547
- );
1548
- })}
1549
- </div>
1550
- </div>
1551
- );
1552
- }
1553
- `}function B(){return `// Direct DOM theme application (no postMessage needed)
1554
-
1555
- import { getColorPreset } from "./presets/colors";
1556
- import { getFontPreset } from "./presets/fonts";
1557
- import {
1558
- getThemePreset,
1559
- type ThemePreset,
1560
- type ThemePresetFont,
1561
- } from "./presets/theme-presets";
1562
-
1563
- const THEME_COLOR_STYLE_ID = "previewcn-devtools-theme-colors";
1564
- const THEME_FONT_STYLE_ID = "previewcn-devtools-theme-font";
1565
-
1566
- export type ThemeConfig = {
1567
- colorPreset: string | null;
1568
- radius: string | null;
1569
- darkMode: boolean | null;
1570
- font: string | null;
1571
- preset: string | null;
1572
- };
1573
-
1574
- type ThemeColors = {
1575
- light: Record<string, string>;
1576
- dark: Record<string, string>;
1577
- };
1578
-
1579
- function getOrCreateStyleElement(id: string): HTMLStyleElement {
1580
- const existing = document.getElementById(id);
1581
- if (existing instanceof HTMLStyleElement) {
1582
- return existing;
1583
- }
1584
-
1585
- if (existing) {
1586
- existing.remove();
1587
- }
1588
-
1589
- const styleEl = document.createElement("style");
1590
- styleEl.id = id;
1591
- document.head.appendChild(styleEl);
1592
- return styleEl;
1593
- }
1594
-
1595
- function serializeCssVars(cssVars: Record<string, string>): string {
1596
- return Object.entries(cssVars)
1597
- .map(([key, value]) => \`--\${key}: \${value};\`)
1598
- .join(" ");
1599
- }
1600
-
1601
- function applyThemeColors(colors: ThemeColors) {
1602
- const styleEl = getOrCreateStyleElement(THEME_COLOR_STYLE_ID);
1603
-
1604
- const lightCss = serializeCssVars(colors.light);
1605
- const darkCss = serializeCssVars(colors.dark);
1606
-
1607
- styleEl.textContent = \`:root { \${lightCss} } .dark { \${darkCss} }\`;
1608
- }
1609
-
1610
- // Apply dark mode class to document
1611
- export function applyDarkMode(darkMode: boolean) {
1612
- const root = document.documentElement;
1613
-
1614
- if (darkMode) {
1615
- root.classList.remove("light");
1616
- root.classList.add("dark");
1617
- } else {
1618
- root.classList.remove("dark");
1619
- root.classList.add("light");
1620
- }
1621
-
1622
- root.style.colorScheme = darkMode ? "dark" : "light";
1623
- }
1624
-
1625
- // Apply radius to document
1626
- export function applyRadius(radius: string) {
1627
- const root = document.documentElement;
1628
- root.style.setProperty("--radius", radius);
1629
- }
1630
-
1631
- // Apply color preset to document
1632
- export function applyColors(colorPresetName: string) {
1633
- const preset = getColorPreset(colorPresetName);
1634
- if (!preset) return;
1635
-
1636
- applyThemeColors(preset.colors);
1637
- }
1638
-
1639
- // Apply theme preset colors directly (bypasses colorPreset lookup)
1640
- export function applyPresetColors(preset: ThemePreset) {
1641
- applyThemeColors(preset.colors);
1642
- }
1643
-
1644
- function applyFontConfig(font: ThemePresetFont) {
1645
- const { fontFamily, googleFontsUrl, value: fontId } = font;
1646
-
1647
- // Validate Google Fonts URL to prevent XSS attacks
1648
- if (!googleFontsUrl.startsWith("https://fonts.googleapis.com/")) {
1649
- console.warn("[PreviewCN] Invalid font URL");
1650
- return;
1651
- }
1652
-
1653
- // Inject Google Fonts link if not already present
1654
- const linkId = \`previewcn-font-\${fontId}\`;
1655
- if (!document.getElementById(linkId)) {
1656
- const link = document.createElement("link");
1657
- link.id = linkId;
1658
- link.rel = "stylesheet";
1659
- link.href = googleFontsUrl;
1660
- document.head.appendChild(link);
1661
- }
1662
-
1663
- // Use multiple strategies to ensure font override works universally
1664
- // This covers various Tailwind v4 and next/font configurations
1665
- const styleEl = getOrCreateStyleElement(THEME_FONT_STYLE_ID);
1666
- styleEl.textContent = \`
1667
- :root {
1668
- --font-sans: \${fontFamily} !important;
1669
- --font-sans-override: \${fontFamily} !important;
1670
- --font-geist-sans: \${fontFamily} !important;
1671
- }
1672
- html, body, .font-sans {
1673
- font-family: \${fontFamily} !important;
1674
- }
1675
- \`;
1676
- }
1677
-
1678
- // Apply font to document
1679
- export function applyFont(fontId: string) {
1680
- const fontPreset = getFontPreset(fontId);
1681
- if (!fontPreset) return;
1682
-
1683
- applyFontConfig(fontPreset);
1684
- }
1685
-
1686
- // Apply font from theme preset (using preset's font config directly)
1687
- export function applyPresetFont(font: ThemePresetFont) {
1688
- applyFontConfig(font);
1689
- }
1690
-
1691
- // Apply a complete theme preset (colors, radius, and optionally font)
1692
- export function applyPreset(presetName: string) {
1693
- const preset = getThemePreset(presetName);
1694
- if (!preset) return;
1695
-
1696
- applyPresetColors(preset);
1697
- applyRadius(preset.radius);
1698
-
1699
- if (preset.font) {
1700
- applyFontConfig(preset.font);
1701
- }
1702
- }
1561
+ {
1562
+ name: "modern-minimal",
1563
+ label: "Modern Minimal",
1564
+ colors: {
1565
+ light: {
1566
+ "background": "#ffffff",
1567
+ "foreground": "#333333",
1568
+ "card": "#ffffff",
1569
+ "card-foreground": "#333333",
1570
+ "popover": "#ffffff",
1571
+ "popover-foreground": "#333333",
1572
+ "primary": "#3b82f6",
1573
+ "primary-foreground": "#ffffff",
1574
+ "secondary": "#f3f4f6",
1575
+ "secondary-foreground": "#4b5563",
1576
+ "muted": "#f9fafb",
1577
+ "muted-foreground": "#6b7280",
1578
+ "accent": "#e0f2fe",
1579
+ "accent-foreground": "#1e3a8a",
1580
+ "destructive": "#ef4444",
1581
+ "destructive-foreground": "#ffffff",
1582
+ "border": "#e5e7eb",
1583
+ "input": "#e5e7eb",
1584
+ "ring": "#3b82f6",
1585
+ "chart-1": "#3b82f6",
1586
+ "chart-2": "#2563eb",
1587
+ "chart-3": "#1d4ed8",
1588
+ "chart-4": "#1e40af",
1589
+ "chart-5": "#1e3a8a",
1590
+ "sidebar": "#f9fafb",
1591
+ "sidebar-foreground": "#333333",
1592
+ "sidebar-primary": "#3b82f6",
1593
+ "sidebar-primary-foreground": "#ffffff",
1594
+ "sidebar-accent": "#e0f2fe",
1595
+ "sidebar-accent-foreground": "#1e3a8a",
1596
+ "sidebar-border": "#e5e7eb",
1597
+ "sidebar-ring": "#3b82f6",
1598
+ "font-sans": "Inter, sans-serif",
1599
+ "font-serif": "Source Serif 4, serif",
1600
+ "font-mono": "JetBrains Mono, monospace",
1601
+ },
1602
+ dark: {
1603
+ "background": "#171717",
1604
+ "foreground": "#e5e5e5",
1605
+ "card": "#262626",
1606
+ "card-foreground": "#e5e5e5",
1607
+ "popover": "#262626",
1608
+ "popover-foreground": "#e5e5e5",
1609
+ "primary": "#3b82f6",
1610
+ "primary-foreground": "#ffffff",
1611
+ "secondary": "#262626",
1612
+ "secondary-foreground": "#e5e5e5",
1613
+ "muted": "#1f1f1f",
1614
+ "muted-foreground": "#a3a3a3",
1615
+ "accent": "#1e3a8a",
1616
+ "accent-foreground": "#bfdbfe",
1617
+ "destructive": "#ef4444",
1618
+ "destructive-foreground": "#ffffff",
1619
+ "border": "#404040",
1620
+ "input": "#404040",
1621
+ "ring": "#3b82f6",
1622
+ "chart-1": "#60a5fa",
1623
+ "chart-2": "#3b82f6",
1624
+ "chart-3": "#2563eb",
1625
+ "chart-4": "#1d4ed8",
1626
+ "chart-5": "#1e40af",
1627
+ "sidebar": "#171717",
1628
+ "sidebar-foreground": "#e5e5e5",
1629
+ "sidebar-primary": "#3b82f6",
1630
+ "sidebar-primary-foreground": "#ffffff",
1631
+ "sidebar-accent": "#1e3a8a",
1632
+ "sidebar-accent-foreground": "#bfdbfe",
1633
+ "sidebar-border": "#404040",
1634
+ "sidebar-ring": "#3b82f6",
1635
+ },
1636
+ },
1637
+ radius: "0.375rem",
1638
+ font: {
1639
+ value: "inter",
1640
+ fontFamily: '"Inter", sans-serif',
1641
+ googleFontsUrl:
1642
+ "https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&display=swap",
1643
+ },
1644
+ },
1645
+ {
1646
+ name: "violet-bloom",
1647
+ label: "Violet Bloom",
1648
+ colors: {
1649
+ light: {
1650
+ "background": "#fdfdfd",
1651
+ "foreground": "#000000",
1652
+ "card": "#fdfdfd",
1653
+ "card-foreground": "#000000",
1654
+ "popover": "#fcfcfc",
1655
+ "popover-foreground": "#000000",
1656
+ "primary": "#7033ff",
1657
+ "primary-foreground": "#ffffff",
1658
+ "secondary": "#edf0f4",
1659
+ "secondary-foreground": "#080808",
1660
+ "muted": "#f5f5f5",
1661
+ "muted-foreground": "#525252",
1662
+ "accent": "#e2ebff",
1663
+ "accent-foreground": "#1e69dc",
1664
+ "destructive": "#e54b4f",
1665
+ "destructive-foreground": "#ffffff",
1666
+ "border": "#e7e7ee",
1667
+ "input": "#ebebeb",
1668
+ "ring": "#000000",
1669
+ "chart-1": "#4ac885",
1670
+ "chart-2": "#7033ff",
1671
+ "chart-3": "#fd822b",
1672
+ "chart-4": "#3276e4",
1673
+ "chart-5": "#747474",
1674
+ "sidebar": "#f5f8fb",
1675
+ "sidebar-foreground": "#000000",
1676
+ "sidebar-primary": "#000000",
1677
+ "sidebar-primary-foreground": "#ffffff",
1678
+ "sidebar-accent": "#ebebeb",
1679
+ "sidebar-accent-foreground": "#000000",
1680
+ "sidebar-border": "#ebebeb",
1681
+ "sidebar-ring": "#000000",
1682
+ "font-sans": "Plus Jakarta Sans, sans-serif",
1683
+ "font-serif": "Lora, serif",
1684
+ "font-mono": "IBM Plex Mono, monospace",
1685
+ "shadow-color": "hsl(0 0% 0%)",
1686
+ "shadow-opacity": "0.16",
1687
+ "shadow-blur": "3px",
1688
+ "shadow-spread": "0px",
1689
+ "shadow-offset-x": "0px",
1690
+ "shadow-offset-y": "2px",
1691
+ "letter-spacing": "-0.025em",
1692
+ "spacing": "0.27rem",
1693
+ },
1694
+ dark: {
1695
+ "background": "#1a1b1e",
1696
+ "foreground": "#f0f0f0",
1697
+ "card": "#222327",
1698
+ "card-foreground": "#f0f0f0",
1699
+ "popover": "#222327",
1700
+ "popover-foreground": "#f0f0f0",
1701
+ "primary": "#8c5cff",
1702
+ "primary-foreground": "#ffffff",
1703
+ "secondary": "#2a2c33",
1704
+ "secondary-foreground": "#f0f0f0",
1705
+ "muted": "#2a2c33",
1706
+ "muted-foreground": "#a0a0a0",
1707
+ "accent": "#1e293b",
1708
+ "accent-foreground": "#79c0ff",
1709
+ "destructive": "#f87171",
1710
+ "destructive-foreground": "#ffffff",
1711
+ "border": "#33353a",
1712
+ "input": "#33353a",
1713
+ "ring": "#8c5cff",
1714
+ "chart-1": "#4ade80",
1715
+ "chart-2": "#8c5cff",
1716
+ "chart-3": "#fca5a5",
1717
+ "chart-4": "#5993f4",
1718
+ "chart-5": "#a0a0a0",
1719
+ "sidebar": "#161618",
1720
+ "sidebar-foreground": "#f0f0f0",
1721
+ "sidebar-primary": "#8c5cff",
1722
+ "sidebar-primary-foreground": "#ffffff",
1723
+ "sidebar-accent": "#2a2c33",
1724
+ "sidebar-accent-foreground": "#8c5cff",
1725
+ "sidebar-border": "#33353a",
1726
+ "sidebar-ring": "#8c5cff",
1727
+ "font-sans": "Plus Jakarta Sans, sans-serif",
1728
+ "font-serif": "Lora, serif",
1729
+ "font-mono": "IBM Plex Mono, monospace",
1730
+ "shadow-color": "hsl(0 0% 0%)",
1731
+ "shadow-opacity": "0.16",
1732
+ "shadow-blur": "3px",
1733
+ "shadow-spread": "0px",
1734
+ "shadow-offset-x": "0px",
1735
+ "shadow-offset-y": "2px",
1736
+ "letter-spacing": "-0.025em",
1737
+ "spacing": "0.27rem",
1738
+ },
1739
+ },
1740
+ radius: "1.4rem",
1741
+ font: {
1742
+ value: "plus-jakarta-sans",
1743
+ fontFamily: '"Plus Jakarta Sans", sans-serif',
1744
+ googleFontsUrl:
1745
+ "https://fonts.googleapis.com/css2?family=Plus+Jakarta+Sans:wght@400;500;600;700&display=swap",
1746
+ },
1747
+ },
1748
+ {
1749
+ name: "t3-chat",
1750
+ label: "T3 Chat",
1751
+ colors: {
1752
+ light: {
1753
+ "background": "#faf5fa",
1754
+ "foreground": "#501854",
1755
+ "card": "#faf5fa",
1756
+ "card-foreground": "#501854",
1757
+ "popover": "#ffffff",
1758
+ "popover-foreground": "#501854",
1759
+ "primary": "#a84370",
1760
+ "primary-foreground": "#ffffff",
1761
+ "secondary": "#f1c4e6",
1762
+ "secondary-foreground": "#77347c",
1763
+ "muted": "#f6e5f3",
1764
+ "muted-foreground": "#834588",
1765
+ "accent": "#f1c4e6",
1766
+ "accent-foreground": "#77347c",
1767
+ "destructive": "#ab4347",
1768
+ "destructive-foreground": "#ffffff",
1769
+ "border": "#efbdeb",
1770
+ "input": "#e7c1dc",
1771
+ "ring": "#db2777",
1772
+ "chart-1": "#d926a2",
1773
+ "chart-2": "#6c12b9",
1774
+ "chart-3": "#274754",
1775
+ "chart-4": "#e8c468",
1776
+ "chart-5": "#f4a462",
1777
+ "sidebar": "#f3e4f6",
1778
+ "sidebar-foreground": "#ac1668",
1779
+ "sidebar-primary": "#454554",
1780
+ "sidebar-primary-foreground": "#faf1f7",
1781
+ "sidebar-accent": "#f8f8f7",
1782
+ "sidebar-accent-foreground": "#454554",
1783
+ "sidebar-border": "#eceae9",
1784
+ "sidebar-ring": "#db2777",
1785
+ },
1786
+ dark: {
1787
+ "background": "#221d27",
1788
+ "foreground": "#d2c4de",
1789
+ "card": "#2c2632",
1790
+ "card-foreground": "#dbc5d2",
1791
+ "popover": "#100a0e",
1792
+ "popover-foreground": "#f8f1f5",
1793
+ "primary": "#a3004c",
1794
+ "primary-foreground": "#efc0d8",
1795
+ "secondary": "#362d3d",
1796
+ "secondary-foreground": "#d4c7e1",
1797
+ "muted": "#28222d",
1798
+ "muted-foreground": "#c2b6cf",
1799
+ "accent": "#463753",
1800
+ "accent-foreground": "#f8f1f5",
1801
+ "destructive": "#301015",
1802
+ "destructive-foreground": "#ffffff",
1803
+ "border": "#3b3237",
1804
+ "input": "#3e343c",
1805
+ "ring": "#db2777",
1806
+ "chart-1": "#a84370",
1807
+ "chart-2": "#934dcb",
1808
+ "chart-3": "#e88c30",
1809
+ "chart-4": "#af57db",
1810
+ "chart-5": "#e23670",
1811
+ "sidebar": "#181117",
1812
+ "sidebar-foreground": "#e0cad6",
1813
+ "sidebar-primary": "#1d4ed8",
1814
+ "sidebar-primary-foreground": "#ffffff",
1815
+ "sidebar-accent": "#261922",
1816
+ "sidebar-accent-foreground": "#f4f4f5",
1817
+ "sidebar-border": "#000000",
1818
+ "sidebar-ring": "#db2777",
1819
+ },
1820
+ },
1821
+ radius: "0.5rem",
1822
+ },
1823
+ {
1824
+ name: "twitter",
1825
+ label: "Twitter",
1826
+ colors: {
1827
+ light: {
1828
+ "background": "#ffffff",
1829
+ "foreground": "#0f1419",
1830
+ "card": "#f7f8f8",
1831
+ "card-foreground": "#0f1419",
1832
+ "popover": "#ffffff",
1833
+ "popover-foreground": "#0f1419",
1834
+ "primary": "#1e9df1",
1835
+ "primary-foreground": "#ffffff",
1836
+ "secondary": "#0f1419",
1837
+ "secondary-foreground": "#ffffff",
1838
+ "muted": "#E5E5E6",
1839
+ "muted-foreground": "#0f1419",
1840
+ "accent": "#E3ECF6",
1841
+ "accent-foreground": "#1e9df1",
1842
+ "destructive": "#f4212e",
1843
+ "destructive-foreground": "#ffffff",
1844
+ "border": "#e1eaef",
1845
+ "input": "#f7f9fa",
1846
+ "ring": "#1da1f2",
1847
+ "chart-1": "#1e9df1",
1848
+ "chart-2": "#00b87a",
1849
+ "chart-3": "#f7b928",
1850
+ "chart-4": "#17bf63",
1851
+ "chart-5": "#e0245e",
1852
+ "sidebar": "#f7f8f8",
1853
+ "sidebar-foreground": "#0f1419",
1854
+ "sidebar-primary": "#1e9df1",
1855
+ "sidebar-primary-foreground": "#ffffff",
1856
+ "sidebar-accent": "#E3ECF6",
1857
+ "sidebar-accent-foreground": "#1e9df1",
1858
+ "sidebar-border": "#e1e8ed",
1859
+ "sidebar-ring": "#1da1f2",
1860
+ "font-sans": "Open Sans, sans-serif",
1861
+ "font-serif": "Georgia, serif",
1862
+ "font-mono": "Menlo, monospace",
1863
+ "shadow-color": "rgba(29,161,242,0.15)",
1864
+ "shadow-opacity": "0",
1865
+ "shadow-blur": "0px",
1866
+ "shadow-spread": "0px",
1867
+ "shadow-offset-x": "0px",
1868
+ "shadow-offset-y": "2px",
1869
+ },
1870
+ dark: {
1871
+ "background": "#000000",
1872
+ "foreground": "#e7e9ea",
1873
+ "card": "#17181c",
1874
+ "card-foreground": "#d9d9d9",
1875
+ "popover": "#000000",
1876
+ "popover-foreground": "#e7e9ea",
1877
+ "primary": "#1c9cf0",
1878
+ "primary-foreground": "#ffffff",
1879
+ "secondary": "#f0f3f4",
1880
+ "secondary-foreground": "#0f1419",
1881
+ "muted": "#181818",
1882
+ "muted-foreground": "#72767a",
1883
+ "accent": "#061622",
1884
+ "accent-foreground": "#1c9cf0",
1885
+ "destructive": "#f4212e",
1886
+ "destructive-foreground": "#ffffff",
1887
+ "border": "#242628",
1888
+ "input": "#22303c",
1889
+ "ring": "#1da1f2",
1890
+ "chart-1": "#1e9df1",
1891
+ "chart-2": "#00b87a",
1892
+ "chart-3": "#f7b928",
1893
+ "chart-4": "#17bf63",
1894
+ "chart-5": "#e0245e",
1895
+ "sidebar": "#17181c",
1896
+ "sidebar-foreground": "#d9d9d9",
1897
+ "sidebar-primary": "#1da1f2",
1898
+ "sidebar-primary-foreground": "#ffffff",
1899
+ "sidebar-accent": "#061622",
1900
+ "sidebar-accent-foreground": "#1c9cf0",
1901
+ "sidebar-border": "#38444d",
1902
+ "sidebar-ring": "#1da1f2",
1903
+ "shadow-color": "rgba(29,161,242,0.25)",
1904
+ },
1905
+ },
1906
+ radius: "1.3rem",
1907
+ font: {
1908
+ value: "open-sans",
1909
+ fontFamily: '"Open Sans", sans-serif',
1910
+ googleFontsUrl:
1911
+ "https://fonts.googleapis.com/css2?family=Open+Sans:wght@400;500;600;700&display=swap",
1912
+ },
1913
+ },
1914
+ {
1915
+ name: "mocha-mousse",
1916
+ label: "Mocha Mousse",
1917
+ colors: {
1918
+ light: {
1919
+ "background": "#F1F0E5",
1920
+ "foreground": "#56453F",
1921
+ "card": "#F1F0E5",
1922
+ "card-foreground": "#56453F",
1923
+ "popover": "#FFFFFF",
1924
+ "popover-foreground": "#56453F",
1925
+ "primary": "#A37764",
1926
+ "primary-foreground": "#FFFFFF",
1927
+ "secondary": "#BAAB92",
1928
+ "secondary-foreground": "#ffffff",
1929
+ "muted": "#E4C7B8",
1930
+ "muted-foreground": "#8A655A",
1931
+ "accent": "#E4C7B8",
1932
+ "accent-foreground": "#56453F",
1933
+ "destructive": "#1f1a17",
1934
+ "destructive-foreground": "#FFFFFF",
1935
+ "border": "#BAAB92",
1936
+ "input": "#BAAB92",
1937
+ "ring": "#A37764",
1938
+ "chart-1": "#A37764",
1939
+ "chart-2": "#8A655A",
1940
+ "chart-3": "#C39E88",
1941
+ "chart-4": "#BAAB92",
1942
+ "chart-5": "#A28777",
1943
+ "sidebar": "#ebd6cb",
1944
+ "sidebar-foreground": "#56453F",
1945
+ "sidebar-primary": "#A37764",
1946
+ "sidebar-primary-foreground": "#FFFFFF",
1947
+ "sidebar-accent": "#C39E88",
1948
+ "sidebar-accent-foreground": "#ffffff",
1949
+ "sidebar-border": "#A28777",
1950
+ "sidebar-ring": "#A37764",
1951
+ "font-sans": "DM Sans, sans-serif",
1952
+ "font-serif": "Georgia, serif",
1953
+ "font-mono": "Menlo, monospace",
1954
+ "shadow-color": "hsl(20 18% 51% / 0.4)",
1955
+ "shadow-opacity": "0.11",
1956
+ "shadow-blur": "0px",
1957
+ "shadow-spread": "0px",
1958
+ "shadow-offset-x": "2px",
1959
+ "shadow-offset-y": "2px",
1960
+ },
1961
+ dark: {
1962
+ "background": "#2d2521",
1963
+ "foreground": "#F1F0E5",
1964
+ "card": "#3c332e",
1965
+ "card-foreground": "#F1F0E5",
1966
+ "popover": "#3c332e",
1967
+ "popover-foreground": "#F1F0E5",
1968
+ "primary": "#C39E88",
1969
+ "primary-foreground": "#2d2521",
1970
+ "secondary": "#8A655A",
1971
+ "secondary-foreground": "#F1F0E5",
1972
+ "muted": "#56453F",
1973
+ "muted-foreground": "#c5aa9b",
1974
+ "accent": "#BAAB92",
1975
+ "accent-foreground": "#2d2521",
1976
+ "destructive": "#E57373",
1977
+ "destructive-foreground": "#2d2521",
1978
+ "border": "#56453F",
1979
+ "input": "#56453F",
1980
+ "ring": "#C39E88",
1981
+ "chart-1": "#C39E88",
1982
+ "chart-2": "#BAAB92",
1983
+ "chart-3": "#A37764",
1984
+ "chart-4": "#8A655A",
1985
+ "chart-5": "#A28777",
1986
+ "sidebar": "#1f1a17",
1987
+ "sidebar-foreground": "#F1F0E5",
1988
+ "sidebar-primary": "#C39E88",
1989
+ "sidebar-primary-foreground": "#1f1a17",
1990
+ "sidebar-accent": "#BAAB92",
1991
+ "sidebar-accent-foreground": "#1f1a17",
1992
+ "sidebar-border": "#56453F",
1993
+ "sidebar-ring": "#C39E88",
1994
+ "shadow-color": "hsl(20 18% 30% / 0.5)",
1995
+ },
1996
+ },
1997
+ radius: "0.5rem",
1998
+ font: {
1999
+ value: "dm-sans",
2000
+ fontFamily: '"DM Sans", sans-serif',
2001
+ googleFontsUrl:
2002
+ "https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600;700&display=swap",
2003
+ },
2004
+ },
2005
+ {
2006
+ name: "bubblegum",
2007
+ label: "Bubblegum",
2008
+ colors: {
2009
+ light: {
2010
+ "background": "#f6e6ee",
2011
+ "foreground": "#5b5b5b",
2012
+ "card": "#fdedc9",
2013
+ "card-foreground": "#5b5b5b",
2014
+ "popover": "#ffffff",
2015
+ "popover-foreground": "#5b5b5b",
2016
+ "primary": "#d04f99",
2017
+ "primary-foreground": "#ffffff",
2018
+ "secondary": "#8acfd1",
2019
+ "secondary-foreground": "#333333",
2020
+ "muted": "#b2e1eb",
2021
+ "muted-foreground": "#7a7a7a",
2022
+ "accent": "#fbe2a7",
2023
+ "accent-foreground": "#333333",
2024
+ "destructive": "#f96f70",
2025
+ "destructive-foreground": "#ffffff",
2026
+ "border": "#d04f99",
2027
+ "input": "#e4e4e4",
2028
+ "ring": "#e670ab",
2029
+ "chart-1": "#e670ab",
2030
+ "chart-2": "#84d2e2",
2031
+ "chart-3": "#fbe2a7",
2032
+ "chart-4": "#f3a0ca",
2033
+ "chart-5": "#d7488e",
2034
+ "sidebar": "#f8d8ea",
2035
+ "sidebar-foreground": "#333333",
2036
+ "sidebar-primary": "#ec4899",
2037
+ "sidebar-primary-foreground": "#ffffff",
2038
+ "sidebar-accent": "#f9a8d4",
2039
+ "sidebar-accent-foreground": "#333333",
2040
+ "sidebar-border": "#f3e8ff",
2041
+ "sidebar-ring": "#ec4899",
2042
+ "font-sans": "Poppins, sans-serif",
2043
+ "font-serif": "Lora, serif",
2044
+ "font-mono": "Fira Code, monospace",
2045
+ "shadow-color": "hsl(325.78 58.18% 56.86% / 0.5)",
2046
+ "shadow-opacity": "1.0",
2047
+ "shadow-blur": "0px",
2048
+ "shadow-spread": "0px",
2049
+ "shadow-offset-x": "3px",
2050
+ "shadow-offset-y": "3px",
2051
+ },
2052
+ dark: {
2053
+ "background": "#12242e",
2054
+ "foreground": "#f3e3ea",
2055
+ "card": "#1c2e38",
2056
+ "card-foreground": "#f3e3ea",
2057
+ "popover": "#1c2e38",
2058
+ "popover-foreground": "#f3e3ea",
2059
+ "primary": "#fbe2a7",
2060
+ "primary-foreground": "#12242e",
2061
+ "secondary": "#e4a2b1",
2062
+ "secondary-foreground": "#12242e",
2063
+ "muted": "#24272b",
2064
+ "muted-foreground": "#e4a2b1",
2065
+ "accent": "#c67b96",
2066
+ "accent-foreground": "#f3e3ea",
2067
+ "destructive": "#e35ea4",
2068
+ "destructive-foreground": "#12242e",
2069
+ "border": "#324859",
2070
+ "input": "#20333d",
2071
+ "ring": "#50afb6",
2072
+ "chart-1": "#50afb6",
2073
+ "chart-2": "#e4a2b1",
2074
+ "chart-3": "#c67b96",
2075
+ "chart-4": "#175c6c",
2076
+ "chart-5": "#24272b",
2077
+ "sidebar": "#101f28",
2078
+ "sidebar-foreground": "#f3f4f6",
2079
+ "sidebar-primary": "#ec4899",
2080
+ "sidebar-primary-foreground": "#ffffff",
2081
+ "sidebar-accent": "#f9a8d4",
2082
+ "sidebar-accent-foreground": "#1f2937",
2083
+ "sidebar-border": "#374151",
2084
+ "sidebar-ring": "#ec4899",
2085
+ "font-sans": "Poppins, sans-serif",
2086
+ "font-serif": "Lora, serif",
2087
+ "font-mono": "Fira Code, monospace",
2088
+ "shadow-color": "#324859",
2089
+ },
2090
+ },
2091
+ radius: "0.4rem",
2092
+ font: {
2093
+ value: "poppins",
2094
+ fontFamily: '"Poppins", sans-serif',
2095
+ googleFontsUrl:
2096
+ "https://fonts.googleapis.com/css2?family=Poppins:wght@400;500;600;700&display=swap",
2097
+ },
2098
+ },
2099
+ {
2100
+ name: "amethyst-haze",
2101
+ label: "Amethyst Haze",
2102
+ colors: {
2103
+ light: {
2104
+ "background": "#f8f7fa",
2105
+ "foreground": "#3d3c4f",
2106
+ "card": "#ffffff",
2107
+ "card-foreground": "#3d3c4f",
2108
+ "popover": "#ffffff",
2109
+ "popover-foreground": "#3d3c4f",
2110
+ "primary": "#8a79ab",
2111
+ "primary-foreground": "#f8f7fa",
2112
+ "secondary": "#dfd9ec",
2113
+ "secondary-foreground": "#3d3c4f",
2114
+ "muted": "#dcd9e3",
2115
+ "muted-foreground": "#6b6880",
2116
+ "accent": "#e6a5b8",
2117
+ "accent-foreground": "#4b2e36",
2118
+ "destructive": "#d95c5c",
2119
+ "destructive-foreground": "#f8f7fa",
2120
+ "border": "#cec9d9",
2121
+ "input": "#eae7f0",
2122
+ "ring": "#8a79ab",
2123
+ "chart-1": "#8a79ab",
2124
+ "chart-2": "#e6a5b8",
2125
+ "chart-3": "#77b8a1",
2126
+ "chart-4": "#f0c88d",
2127
+ "chart-5": "#a0bbe3",
2128
+ "sidebar": "#f1eff5",
2129
+ "sidebar-foreground": "#3d3c4f",
2130
+ "sidebar-primary": "#8a79ab",
2131
+ "sidebar-primary-foreground": "#f8f7fa",
2132
+ "sidebar-accent": "#e6a5b8",
2133
+ "sidebar-accent-foreground": "#4b2e36",
2134
+ "sidebar-border": "#d7d2e0",
2135
+ "sidebar-ring": "#8a79ab",
2136
+ "font-sans": "Geist, sans-serif",
2137
+ "font-serif": "\\"Lora\\", Georgia, serif",
2138
+ "font-mono": "\\"Fira Code\\", \\"Courier New\\", monospace",
2139
+ "shadow-color": "hsl(0 0% 0%)",
2140
+ "shadow-opacity": "0.06",
2141
+ "shadow-blur": "5px",
2142
+ "shadow-spread": "1px",
2143
+ "shadow-offset-x": "1px",
2144
+ "shadow-offset-y": "2px",
2145
+ "letter-spacing": "0em",
2146
+ "spacing": "0.25rem",
2147
+ },
2148
+ dark: {
2149
+ "background": "#1a1823",
2150
+ "foreground": "#e0ddef",
2151
+ "card": "#232030",
2152
+ "card-foreground": "#e0ddef",
2153
+ "popover": "#232030",
2154
+ "popover-foreground": "#e0ddef",
2155
+ "primary": "#a995c9",
2156
+ "primary-foreground": "#1a1823",
2157
+ "secondary": "#5a5370",
2158
+ "secondary-foreground": "#e0ddef",
2159
+ "muted": "#242031",
2160
+ "muted-foreground": "#a09aad",
2161
+ "accent": "#372e3f",
2162
+ "accent-foreground": "#f2b8c6",
2163
+ "destructive": "#e57373",
2164
+ "destructive-foreground": "#1a1823",
2165
+ "border": "#302c40",
2166
+ "input": "#2a273a",
2167
+ "ring": "#a995c9",
2168
+ "chart-1": "#a995c9",
2169
+ "chart-2": "#f2b8c6",
2170
+ "chart-3": "#77b8a1",
2171
+ "chart-4": "#f0c88d",
2172
+ "chart-5": "#a0bbe3",
2173
+ "sidebar": "#16141e",
2174
+ "sidebar-foreground": "#e0ddef",
2175
+ "sidebar-primary": "#a995c9",
2176
+ "sidebar-primary-foreground": "#1a1823",
2177
+ "sidebar-accent": "#372e3f",
2178
+ "sidebar-accent-foreground": "#f2b8c6",
2179
+ "sidebar-border": "#2a273a",
2180
+ "sidebar-ring": "#a995c9",
2181
+ },
2182
+ },
2183
+ radius: "0.5rem",
2184
+ },
2185
+ {
2186
+ name: "notebook",
2187
+ label: "Notebook",
2188
+ colors: {
2189
+ light: {
2190
+ "background": "#f9f9f9",
2191
+ "foreground": "#3a3a3a",
2192
+ "card": "#ffffff",
2193
+ "card-foreground": "#3a3a3a",
2194
+ "popover": "#ffffff",
2195
+ "popover-foreground": "#3a3a3a",
2196
+ "primary": "#606060",
2197
+ "primary-foreground": "#f0f0f0",
2198
+ "secondary": "#dedede",
2199
+ "secondary-foreground": "#3a3a3a",
2200
+ "muted": "#e3e3e3",
2201
+ "muted-foreground": "#505050",
2202
+ "accent": "#f3eac8",
2203
+ "accent-foreground": "#5d4037",
2204
+ "destructive": "#c87a7a",
2205
+ "destructive-foreground": "#ffffff",
2206
+ "border": "#747272",
2207
+ "input": "#ffffff",
2208
+ "ring": "#a0a0a0",
2209
+ "chart-1": "#333333",
2210
+ "chart-2": "#555555",
2211
+ "chart-3": "#777777",
2212
+ "chart-4": "#999999",
2213
+ "chart-5": "#bbbbbb",
2214
+ "sidebar": "#f0f0f0",
2215
+ "sidebar-foreground": "#3a3a3a",
2216
+ "sidebar-primary": "#606060",
2217
+ "sidebar-primary-foreground": "#f0f0f0",
2218
+ "sidebar-accent": "#f3eac8",
2219
+ "sidebar-accent-foreground": "#5d4037",
2220
+ "sidebar-border": "#c0c0c0",
2221
+ "sidebar-ring": "#a0a0a0",
2222
+ "font-sans": "Architects Daughter, sans-serif",
2223
+ "font-serif": "\\"Times New Roman\\", Times, serif",
2224
+ "font-mono": "\\"Courier New\\", Courier, monospace",
2225
+ "shadow-color": "#000000",
2226
+ "shadow-opacity": "0.03",
2227
+ "shadow-blur": "5px",
2228
+ "shadow-spread": "0px",
2229
+ "shadow-offset-x": "1px",
2230
+ "shadow-offset-y": "4px",
2231
+ "letter-spacing": "0.5px",
2232
+ "spacing": "0.25rem",
2233
+ },
2234
+ dark: {
2235
+ "background": "#2b2b2b",
2236
+ "foreground": "#dcdcdc",
2237
+ "card": "#333333",
2238
+ "card-foreground": "#dcdcdc",
2239
+ "popover": "#333333",
2240
+ "popover-foreground": "#dcdcdc",
2241
+ "primary": "#b0b0b0",
2242
+ "primary-foreground": "#2b2b2b",
2243
+ "secondary": "#5a5a5a",
2244
+ "secondary-foreground": "#c0c0c0",
2245
+ "muted": "#454545",
2246
+ "muted-foreground": "#a0a0a0",
2247
+ "accent": "#e0e0e0",
2248
+ "accent-foreground": "#333333",
2249
+ "destructive": "#d9afaf",
2250
+ "destructive-foreground": "#2b2b2b",
2251
+ "border": "#4f4f4f",
2252
+ "input": "#333333",
2253
+ "ring": "#c0c0c0",
2254
+ "chart-1": "#efefef",
2255
+ "chart-2": "#d0d0d0",
2256
+ "chart-3": "#b0b0b0",
2257
+ "chart-4": "#909090",
2258
+ "chart-5": "#707070",
2259
+ "sidebar": "#212121",
2260
+ "sidebar-foreground": "#dcdcdc",
2261
+ "sidebar-primary": "#b0b0b0",
2262
+ "sidebar-primary-foreground": "#212121",
2263
+ "sidebar-accent": "#e0e0e0",
2264
+ "sidebar-accent-foreground": "#333333",
2265
+ "sidebar-border": "#4f4f4f",
2266
+ "sidebar-ring": "#c0c0c0",
2267
+ "font-sans": "Architects Daughter, sans-serif",
2268
+ "font-serif": "Georgia, serif",
2269
+ "font-mono": "\\"Fira Code\\", \\"Courier New\\", monospace",
2270
+ "shadow-color": "#000000",
2271
+ "shadow-opacity": "0.03",
2272
+ "shadow-blur": "5px",
2273
+ "shadow-spread": "0px",
2274
+ "shadow-offset-x": "1px",
2275
+ "shadow-offset-y": "4px",
2276
+ "letter-spacing": "0.5px",
2277
+ "spacing": "0.25rem",
2278
+ },
2279
+ },
2280
+ radius: "0.625rem",
2281
+ font: {
2282
+ value: "architects-daughter",
2283
+ fontFamily: '"Architects Daughter", sans-serif',
2284
+ googleFontsUrl:
2285
+ "https://fonts.googleapis.com/css2?family=Architects+Daughter&display=swap",
2286
+ },
2287
+ },
2288
+ {
2289
+ name: "doom-64",
2290
+ label: "Doom 64",
2291
+ colors: {
2292
+ light: {
2293
+ "background": "#cccccc",
2294
+ "foreground": "#1f1f1f",
2295
+ "card": "#b0b0b0",
2296
+ "card-foreground": "#1f1f1f",
2297
+ "popover": "#b0b0b0",
2298
+ "popover-foreground": "#1f1f1f",
2299
+ "primary": "#b71c1c",
2300
+ "primary-foreground": "#ffffff",
2301
+ "secondary": "#556b2f",
2302
+ "secondary-foreground": "#ffffff",
2303
+ "muted": "#b8b8b8",
2304
+ "muted-foreground": "#4a4a4a",
2305
+ "accent": "#4682b4",
2306
+ "accent-foreground": "#ffffff",
2307
+ "destructive": "#ff6f00",
2308
+ "destructive-foreground": "#000000",
2309
+ "border": "#505050",
2310
+ "input": "#505050",
2311
+ "ring": "#b71c1c",
2312
+ "chart-1": "#b71c1c",
2313
+ "chart-2": "#556b2f",
2314
+ "chart-3": "#4682b4",
2315
+ "chart-4": "#ff6f00",
2316
+ "chart-5": "#8d6e63",
2317
+ "sidebar": "#b0b0b0",
2318
+ "sidebar-foreground": "#1f1f1f",
2319
+ "sidebar-primary": "#b71c1c",
2320
+ "sidebar-primary-foreground": "#ffffff",
2321
+ "sidebar-accent": "#4682b4",
2322
+ "sidebar-accent-foreground": "#ffffff",
2323
+ "sidebar-border": "#505050",
2324
+ "sidebar-ring": "#b71c1c",
2325
+ "font-sans": "\\"Oxanium\\", sans-serif",
2326
+ "font-serif": "ui-serif, Georgia, Cambria, \\"Times New Roman\\", Times, serif",
2327
+ "font-mono": "\\"Source Code Pro\\", monospace",
2328
+ "shadow-color": "hsl(0 0% 0%)",
2329
+ "shadow-opacity": "0.4",
2330
+ "shadow-blur": "4px",
2331
+ "shadow-spread": "0px",
2332
+ "shadow-offset-x": "0px",
2333
+ "shadow-offset-y": "2px",
2334
+ "letter-spacing": "0em",
2335
+ "spacing": "0.25rem",
2336
+ },
2337
+ dark: {
2338
+ "background": "#1a1a1a",
2339
+ "foreground": "#e0e0e0",
2340
+ "card": "#2a2a2a",
2341
+ "card-foreground": "#e0e0e0",
2342
+ "popover": "#2a2a2a",
2343
+ "popover-foreground": "#e0e0e0",
2344
+ "primary": "#e53935",
2345
+ "primary-foreground": "#ffffff",
2346
+ "secondary": "#689f38",
2347
+ "secondary-foreground": "#000000",
2348
+ "muted": "#252525",
2349
+ "muted-foreground": "#a0a0a0",
2350
+ "accent": "#64b5f6",
2351
+ "accent-foreground": "#000000",
2352
+ "destructive": "#ffa000",
2353
+ "destructive-foreground": "#000000",
2354
+ "border": "#4a4a4a",
2355
+ "input": "#4a4a4a",
2356
+ "ring": "#e53935",
2357
+ "chart-1": "#e53935",
2358
+ "chart-2": "#689f38",
2359
+ "chart-3": "#64b5f6",
2360
+ "chart-4": "#ffa000",
2361
+ "chart-5": "#a1887f",
2362
+ "sidebar": "#141414",
2363
+ "sidebar-foreground": "#e0e0e0",
2364
+ "sidebar-primary": "#e53935",
2365
+ "sidebar-primary-foreground": "#ffffff",
2366
+ "sidebar-accent": "#64b5f6",
2367
+ "sidebar-accent-foreground": "#000000",
2368
+ "sidebar-border": "#4a4a4a",
2369
+ "sidebar-ring": "#e53935",
2370
+ "font-sans": "\\"Oxanium\\", sans-serif",
2371
+ "font-serif": "ui-serif, Georgia, Cambria, \\"Times New Roman\\", Times, serif",
2372
+ "font-mono": "\\"Source Code Pro\\", monospace",
2373
+ "shadow-color": "hsl(0 0% 0%)",
2374
+ "shadow-opacity": "0.6",
2375
+ "shadow-blur": "5px",
2376
+ "shadow-spread": "0px",
2377
+ "shadow-offset-x": "0px",
2378
+ "shadow-offset-y": "2px",
2379
+ "letter-spacing": "0em",
2380
+ "spacing": "0.25rem",
2381
+ },
2382
+ },
2383
+ radius: "0px",
2384
+ font: {
2385
+ value: "oxanium",
2386
+ fontFamily: '"Oxanium", sans-serif',
2387
+ googleFontsUrl:
2388
+ "https://fonts.googleapis.com/css2?family=Oxanium:wght@400;500;600;700&display=swap",
2389
+ },
2390
+ },
2391
+ {
2392
+ name: "catppuccin",
2393
+ label: "Catppuccin",
2394
+ colors: {
2395
+ light: {
2396
+ "background": "#eff1f5",
2397
+ "foreground": "#4c4f69",
2398
+ "card": "#ffffff",
2399
+ "card-foreground": "#4c4f69",
2400
+ "popover": "#ccd0da",
2401
+ "popover-foreground": "#4c4f69",
2402
+ "primary": "#8839ef",
2403
+ "primary-foreground": "#ffffff",
2404
+ "secondary": "#ccd0da",
2405
+ "secondary-foreground": "#4c4f69",
2406
+ "muted": "#dce0e8",
2407
+ "muted-foreground": "#6c6f85",
2408
+ "accent": "#04a5e5",
2409
+ "accent-foreground": "#ffffff",
2410
+ "destructive": "#d20f39",
2411
+ "destructive-foreground": "#ffffff",
2412
+ "border": "#bcc0cc",
2413
+ "input": "#ccd0da",
2414
+ "ring": "#8839ef",
2415
+ "chart-1": "#8839ef",
2416
+ "chart-2": "#04a5e5",
2417
+ "chart-3": "#40a02b",
2418
+ "chart-4": "#fe640b",
2419
+ "chart-5": "#dc8a78",
2420
+ "sidebar": "#e6e9ef",
2421
+ "sidebar-foreground": "#4c4f69",
2422
+ "sidebar-primary": "#8839ef",
2423
+ "sidebar-primary-foreground": "#ffffff",
2424
+ "sidebar-accent": "#04a5e5",
2425
+ "sidebar-accent-foreground": "#ffffff",
2426
+ "sidebar-border": "#bcc0cc",
2427
+ "sidebar-ring": "#8839ef",
2428
+ "font-sans": "Montserrat, sans-serif",
2429
+ "font-serif": "Georgia, serif",
2430
+ "font-mono": "Fira Code, monospace",
2431
+ "shadow-color": "hsl(240 30% 25%)",
2432
+ "shadow-opacity": "0.12",
2433
+ "shadow-blur": "6px",
2434
+ "shadow-spread": "0px",
2435
+ "shadow-offset-x": "0px",
2436
+ "shadow-offset-y": "4px",
2437
+ },
2438
+ dark: {
2439
+ "background": "#181825",
2440
+ "foreground": "#cdd6f4",
2441
+ "card": "#1e1e2e",
2442
+ "card-foreground": "#cdd6f4",
2443
+ "popover": "#45475a",
2444
+ "popover-foreground": "#cdd6f4",
2445
+ "primary": "#cba6f7",
2446
+ "primary-foreground": "#1e1e2e",
2447
+ "secondary": "#585b70",
2448
+ "secondary-foreground": "#cdd6f4",
2449
+ "muted": "#292c3c",
2450
+ "muted-foreground": "#a6adc8",
2451
+ "accent": "#89dceb",
2452
+ "accent-foreground": "#1e1e2e",
2453
+ "destructive": "#f38ba8",
2454
+ "destructive-foreground": "#1e1e2e",
2455
+ "border": "#313244",
2456
+ "input": "#313244",
2457
+ "ring": "#cba6f7",
2458
+ "chart-1": "#cba6f7",
2459
+ "chart-2": "#89dceb",
2460
+ "chart-3": "#a6e3a1",
2461
+ "chart-4": "#fab387",
2462
+ "chart-5": "#f5e0dc",
2463
+ "sidebar": "#11111b",
2464
+ "sidebar-foreground": "#cdd6f4",
2465
+ "sidebar-primary": "#cba6f7",
2466
+ "sidebar-primary-foreground": "#1e1e2e",
2467
+ "sidebar-accent": "#89dceb",
2468
+ "sidebar-accent-foreground": "#1e1e2e",
2469
+ "sidebar-border": "#45475a",
2470
+ "sidebar-ring": "#cba6f7",
2471
+ },
2472
+ },
2473
+ radius: "0.35rem",
2474
+ font: {
2475
+ value: "montserrat",
2476
+ fontFamily: '"Montserrat", sans-serif',
2477
+ googleFontsUrl:
2478
+ "https://fonts.googleapis.com/css2?family=Montserrat:wght@400;500;600;700&display=swap",
2479
+ },
2480
+ },
2481
+ {
2482
+ name: "graphite",
2483
+ label: "Graphite",
2484
+ colors: {
2485
+ light: {
2486
+ "background": "#f0f0f0",
2487
+ "foreground": "#333333",
2488
+ "card": "#f5f5f5",
2489
+ "card-foreground": "#333333",
2490
+ "popover": "#f5f5f5",
2491
+ "popover-foreground": "#333333",
2492
+ "primary": "#606060",
2493
+ "primary-foreground": "#ffffff",
2494
+ "secondary": "#e0e0e0",
2495
+ "secondary-foreground": "#333333",
2496
+ "muted": "#d9d9d9",
2497
+ "muted-foreground": "#666666",
2498
+ "accent": "#c0c0c0",
2499
+ "accent-foreground": "#333333",
2500
+ "destructive": "#cc3333",
2501
+ "destructive-foreground": "#ffffff",
2502
+ "border": "#d0d0d0",
2503
+ "input": "#e0e0e0",
2504
+ "ring": "#606060",
2505
+ "chart-1": "#606060",
2506
+ "chart-2": "#476666",
2507
+ "chart-3": "#909090",
2508
+ "chart-4": "#a8a8a8",
2509
+ "chart-5": "#c0c0c0",
2510
+ "sidebar": "#eaeaea",
2511
+ "sidebar-foreground": "#333333",
2512
+ "sidebar-primary": "#606060",
2513
+ "sidebar-primary-foreground": "#ffffff",
2514
+ "sidebar-accent": "#c0c0c0",
2515
+ "sidebar-accent-foreground": "#333333",
2516
+ "sidebar-border": "#d0d0d0",
2517
+ "sidebar-ring": "#606060",
2518
+ "font-sans": "Montserrat, sans-serif",
2519
+ "font-serif": "Georgia, serif",
2520
+ "font-mono": "Fira Code, monospace",
2521
+ "shadow-color": "hsl(0 0% 20% / 0.1)",
2522
+ "shadow-opacity": "0.15",
2523
+ "shadow-blur": "0px",
2524
+ "shadow-spread": "0px",
2525
+ "shadow-offset-x": "0px",
2526
+ "shadow-offset-y": "2px",
2527
+ },
2528
+ dark: {
2529
+ "background": "#1a1a1a",
2530
+ "foreground": "#d9d9d9",
2531
+ "card": "#202020",
2532
+ "card-foreground": "#d9d9d9",
2533
+ "popover": "#202020",
2534
+ "popover-foreground": "#d9d9d9",
2535
+ "primary": "#a0a0a0",
2536
+ "primary-foreground": "#1a1a1a",
2537
+ "secondary": "#303030",
2538
+ "secondary-foreground": "#d9d9d9",
2539
+ "muted": "#2a2a2a",
2540
+ "muted-foreground": "#808080",
2541
+ "accent": "#404040",
2542
+ "accent-foreground": "#d9d9d9",
2543
+ "destructive": "#e06666",
2544
+ "destructive-foreground": "#ffffff",
2545
+ "border": "#353535",
2546
+ "input": "#303030",
2547
+ "ring": "#a0a0a0",
2548
+ "chart-1": "#a0a0a0",
2549
+ "chart-2": "#7e9ca0",
2550
+ "chart-3": "#707070",
2551
+ "chart-4": "#585858",
2552
+ "chart-5": "#404040",
2553
+ "sidebar": "#1f1f1f",
2554
+ "sidebar-foreground": "#d9d9d9",
2555
+ "sidebar-primary": "#a0a0a0",
2556
+ "sidebar-primary-foreground": "#1a1a1a",
2557
+ "sidebar-accent": "#404040",
2558
+ "sidebar-accent-foreground": "#d9d9d9",
2559
+ "sidebar-border": "#353535",
2560
+ "sidebar-ring": "#a0a0a0",
2561
+ "font-sans": "Inter, sans-serif",
2562
+ "font-serif": "Georgia, serif",
2563
+ "font-mono": "Fira Code, monospace",
2564
+ },
2565
+ },
2566
+ radius: "0.35rem",
2567
+ font: {
2568
+ value: "montserrat",
2569
+ fontFamily: '"Montserrat", sans-serif',
2570
+ googleFontsUrl:
2571
+ "https://fonts.googleapis.com/css2?family=Montserrat:wght@400;500;600;700&display=swap",
2572
+ },
2573
+ },
2574
+ {
2575
+ name: "perpetuity",
2576
+ label: "Perpetuity",
2577
+ colors: {
2578
+ light: {
2579
+ "background": "#e8f0f0",
2580
+ "foreground": "#0a4a55",
2581
+ "card": "#f2f7f7",
2582
+ "card-foreground": "#0a4a55",
2583
+ "popover": "#f2f7f7",
2584
+ "popover-foreground": "#0a4a55",
2585
+ "primary": "#06858e",
2586
+ "primary-foreground": "#ffffff",
2587
+ "secondary": "#d9eaea",
2588
+ "secondary-foreground": "#0a4a55",
2589
+ "muted": "#e0eaea",
2590
+ "muted-foreground": "#427a7e",
2591
+ "accent": "#c9e5e7",
2592
+ "accent-foreground": "#0a4a55",
2593
+ "destructive": "#d13838",
2594
+ "destructive-foreground": "#ffffff",
2595
+ "border": "#cde0e2",
2596
+ "input": "#d9eaea",
2597
+ "ring": "#06858e",
2598
+ "chart-1": "#06858e",
2599
+ "chart-2": "#1e9ea6",
2600
+ "chart-3": "#37b6be",
2601
+ "chart-4": "#5dc7ce",
2602
+ "chart-5": "#8ad8dd",
2603
+ "sidebar": "#daebed",
2604
+ "sidebar-foreground": "#0a4a55",
2605
+ "sidebar-primary": "#06858e",
2606
+ "sidebar-primary-foreground": "#ffffff",
2607
+ "sidebar-accent": "#c9e5e7",
2608
+ "sidebar-accent-foreground": "#0a4a55",
2609
+ "sidebar-border": "#cde0e2",
2610
+ "sidebar-ring": "#06858e",
2611
+ "font-sans": "Courier New, monospace",
2612
+ "font-serif": "Courier New, monospace",
2613
+ "font-mono": "Courier New, monospace",
2614
+ "shadow-color": "hsl(185 70% 30% / 0.15)",
2615
+ "shadow-opacity": "0.15",
2616
+ "shadow-blur": "2px",
2617
+ "shadow-spread": "0px",
2618
+ "shadow-offset-x": "1px",
2619
+ "shadow-offset-y": "1px",
2620
+ },
2621
+ dark: {
2622
+ "background": "#0a1a20",
2623
+ "foreground": "#4de8e8",
2624
+ "card": "#0c2025",
2625
+ "card-foreground": "#4de8e8",
2626
+ "popover": "#0c2025",
2627
+ "popover-foreground": "#4de8e8",
2628
+ "primary": "#4de8e8",
2629
+ "primary-foreground": "#0a1a20",
2630
+ "secondary": "#164955",
2631
+ "secondary-foreground": "#4de8e8",
2632
+ "muted": "#0f3039",
2633
+ "muted-foreground": "#36a5a5",
2634
+ "accent": "#164955",
2635
+ "accent-foreground": "#4de8e8",
2636
+ "destructive": "#e83c3c",
2637
+ "destructive-foreground": "#f2f2f2",
2638
+ "border": "#164955",
2639
+ "input": "#164955",
2640
+ "ring": "#4de8e8",
2641
+ "chart-1": "#4de8e8",
2642
+ "chart-2": "#36a5a5",
2643
+ "chart-3": "#2d8a8a",
2644
+ "chart-4": "#19595e",
2645
+ "chart-5": "#0e383c",
2646
+ "sidebar": "#0a1a20",
2647
+ "sidebar-foreground": "#4de8e8",
2648
+ "sidebar-primary": "#4de8e8",
2649
+ "sidebar-primary-foreground": "#0a1a20",
2650
+ "sidebar-accent": "#164955",
2651
+ "sidebar-accent-foreground": "#4de8e8",
2652
+ "sidebar-border": "#164955",
2653
+ "sidebar-ring": "#4de8e8",
2654
+ "font-sans": "Source Code Pro, monospace",
2655
+ "font-serif": "Source Code Pro, monospace",
2656
+ "font-mono": "Source Code Pro, monospace",
2657
+ "shadow-color": "hsl(180 70% 60% / 0.2)",
2658
+ "shadow-opacity": "0.2",
2659
+ "shadow-blur": "2px",
2660
+ "shadow-spread": "0px",
2661
+ "shadow-offset-x": "1px",
2662
+ "shadow-offset-y": "1px",
2663
+ },
2664
+ },
2665
+ radius: "0.125rem",
2666
+ },
2667
+ {
2668
+ name: "kodama-grove",
2669
+ label: "Kodama Grove",
2670
+ colors: {
2671
+ light: {
2672
+ "background": "#e4d7b0",
2673
+ "foreground": "#5c4b3e",
2674
+ "card": "#e7dbbf",
2675
+ "card-foreground": "#5c4b3e",
2676
+ "popover": "#f3ead2",
2677
+ "popover-foreground": "#5c4b3e",
2678
+ "primary": "#8d9d4f",
2679
+ "primary-foreground": "#fdfbf6",
2680
+ "secondary": "#decea0",
2681
+ "secondary-foreground": "#5c4b3e",
2682
+ "muted": "#decea0",
2683
+ "muted-foreground": "#85766a",
2684
+ "accent": "#dbc894",
2685
+ "accent-foreground": "#5c4b3e",
2686
+ "destructive": "#d98b7e",
2687
+ "destructive-foreground": "#faf8f2",
2688
+ "border": "#b19681",
2689
+ "input": "#dbc894",
2690
+ "ring": "#9db18c",
2691
+ "chart-1": "#9db18c",
2692
+ "chart-2": "#8a9f7b",
2693
+ "chart-3": "#bac9b4",
2694
+ "chart-4": "#71856a",
2695
+ "chart-5": "#5e6e58",
2696
+ "sidebar": "#e2d1a2",
2697
+ "sidebar-foreground": "#5c4b3e",
2698
+ "sidebar-primary": "#9db18c",
2699
+ "sidebar-primary-foreground": "#fdfbf6",
2700
+ "sidebar-accent": "#eae5d9",
2701
+ "sidebar-accent-foreground": "#5c4b3e",
2702
+ "sidebar-border": "#e5e0d4",
2703
+ "sidebar-ring": "#9db18c",
2704
+ "font-sans": "Merriweather, serif",
2705
+ "font-serif": "Source Serif 4, serif",
2706
+ "font-mono": "JetBrains Mono, monospace",
2707
+ "shadow-color": "hsl(88 22% 35% / 0.15)",
2708
+ "shadow-opacity": "0.15",
2709
+ "shadow-blur": "2px",
2710
+ "shadow-spread": "0px",
2711
+ "shadow-offset-x": "3px",
2712
+ "shadow-offset-y": "3px",
2713
+ },
2714
+ dark: {
2715
+ "background": "#3a3529",
2716
+ "foreground": "#ede4d4",
2717
+ "card": "#413c33",
2718
+ "card-foreground": "#ede4d4",
2719
+ "popover": "#413c33",
2720
+ "popover-foreground": "#ede4d4",
2721
+ "primary": "#8a9f7b",
2722
+ "primary-foreground": "#2a2521",
2723
+ "secondary": "#5a5345",
2724
+ "secondary-foreground": "#ede4d4",
2725
+ "muted": "#4a4439",
2726
+ "muted-foreground": "#a8a096",
2727
+ "accent": "#a18f5c",
2728
+ "accent-foreground": "#2a2521",
2729
+ "destructive": "#b5766a",
2730
+ "destructive-foreground": "#f0e9db",
2731
+ "border": "#5a5345",
2732
+ "input": "#5a5345",
2733
+ "ring": "#8a9f7b",
2734
+ "chart-1": "#8a9f7b",
2735
+ "chart-2": "#9db18c",
2736
+ "chart-3": "#71856a",
2737
+ "chart-4": "#a18f5c",
2738
+ "chart-5": "#5e6e58",
2739
+ "sidebar": "#3a3529",
2740
+ "sidebar-foreground": "#ede4d4",
2741
+ "sidebar-primary": "#8a9f7b",
2742
+ "sidebar-primary-foreground": "#2a2521",
2743
+ "sidebar-accent": "#a18f5c",
2744
+ "sidebar-accent-foreground": "#2a2521",
2745
+ "sidebar-border": "#5a5345",
2746
+ "sidebar-ring": "#8a9f7b",
2747
+ },
2748
+ },
2749
+ radius: "0.425rem",
2750
+ font: {
2751
+ value: "merriweather",
2752
+ fontFamily: '"Merriweather", sans-serif',
2753
+ googleFontsUrl:
2754
+ "https://fonts.googleapis.com/css2?family=Merriweather:wght@400;700&display=swap",
2755
+ },
2756
+ },
2757
+ {
2758
+ name: "cosmic-night",
2759
+ label: "Cosmic Night",
2760
+ colors: {
2761
+ light: {
2762
+ "background": "#f5f5ff",
2763
+ "foreground": "#2a2a4a",
2764
+ "card": "#ffffff",
2765
+ "card-foreground": "#2a2a4a",
2766
+ "popover": "#ffffff",
2767
+ "popover-foreground": "#2a2a4a",
2768
+ "primary": "#6e56cf",
2769
+ "primary-foreground": "#ffffff",
2770
+ "secondary": "#e4dfff",
2771
+ "secondary-foreground": "#4a4080",
2772
+ "muted": "#f0f0fa",
2773
+ "muted-foreground": "#6c6c8a",
2774
+ "accent": "#d8e6ff",
2775
+ "accent-foreground": "#2a2a4a",
2776
+ "destructive": "#ff5470",
2777
+ "destructive-foreground": "#ffffff",
2778
+ "border": "#e0e0f0",
2779
+ "input": "#e0e0f0",
2780
+ "ring": "#6e56cf",
2781
+ "chart-1": "#6e56cf",
2782
+ "chart-2": "#9e8cfc",
2783
+ "chart-3": "#5d5fef",
2784
+ "chart-4": "#7c75fa",
2785
+ "chart-5": "#4740b3",
2786
+ "sidebar": "#f0f0fa",
2787
+ "sidebar-foreground": "#2a2a4a",
2788
+ "sidebar-primary": "#6e56cf",
2789
+ "sidebar-primary-foreground": "#ffffff",
2790
+ "sidebar-accent": "#d8e6ff",
2791
+ "sidebar-accent-foreground": "#2a2a4a",
2792
+ "sidebar-border": "#e0e0f0",
2793
+ "sidebar-ring": "#6e56cf",
2794
+ "font-sans": "Inter, sans-serif",
2795
+ "font-serif": "Georgia, serif",
2796
+ "font-mono": "JetBrains Mono, monospace",
2797
+ "shadow-color": "hsl(240 30% 25%)",
2798
+ "shadow-opacity": "0.12",
2799
+ "shadow-blur": "10px",
2800
+ "shadow-spread": "0px",
2801
+ "shadow-offset-x": "0px",
2802
+ "shadow-offset-y": "4px",
2803
+ },
2804
+ dark: {
2805
+ "background": "#0f0f1a",
2806
+ "foreground": "#e2e2f5",
2807
+ "card": "#1a1a2e",
2808
+ "card-foreground": "#e2e2f5",
2809
+ "popover": "#1a1a2e",
2810
+ "popover-foreground": "#e2e2f5",
2811
+ "primary": "#a48fff",
2812
+ "primary-foreground": "#0f0f1a",
2813
+ "secondary": "#2d2b55",
2814
+ "secondary-foreground": "#c4c2ff",
2815
+ "muted": "#222244",
2816
+ "muted-foreground": "#a0a0c0",
2817
+ "accent": "#303060",
2818
+ "accent-foreground": "#e2e2f5",
2819
+ "destructive": "#ff5470",
2820
+ "destructive-foreground": "#ffffff",
2821
+ "border": "#303052",
2822
+ "input": "#303052",
2823
+ "ring": "#a48fff",
2824
+ "chart-1": "#a48fff",
2825
+ "chart-2": "#7986cb",
2826
+ "chart-3": "#64b5f6",
2827
+ "chart-4": "#4db6ac",
2828
+ "chart-5": "#ff79c6",
2829
+ "sidebar": "#1a1a2e",
2830
+ "sidebar-foreground": "#e2e2f5",
2831
+ "sidebar-primary": "#a48fff",
2832
+ "sidebar-primary-foreground": "#0f0f1a",
2833
+ "sidebar-accent": "#303060",
2834
+ "sidebar-accent-foreground": "#e2e2f5",
2835
+ "sidebar-border": "#303052",
2836
+ "sidebar-ring": "#a48fff",
2837
+ },
2838
+ },
2839
+ radius: "0.5rem",
2840
+ font: {
2841
+ value: "inter",
2842
+ fontFamily: '"Inter", sans-serif',
2843
+ googleFontsUrl:
2844
+ "https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&display=swap",
2845
+ },
2846
+ },
2847
+ {
2848
+ name: "tangerine",
2849
+ label: "Tangerine",
2850
+ colors: {
2851
+ light: {
2852
+ "background": "#e8ebed",
2853
+ "foreground": "#333333",
2854
+ "card": "#ffffff",
2855
+ "card-foreground": "#333333",
2856
+ "popover": "#ffffff",
2857
+ "popover-foreground": "#333333",
2858
+ "primary": "#e05d38",
2859
+ "primary-foreground": "#ffffff",
2860
+ "secondary": "#f3f4f6",
2861
+ "secondary-foreground": "#4b5563",
2862
+ "muted": "#f9fafb",
2863
+ "muted-foreground": "#6b7280",
2864
+ "accent": "#d6e4f0",
2865
+ "accent-foreground": "#1e3a8a",
2866
+ "destructive": "#ef4444",
2867
+ "destructive-foreground": "#ffffff",
2868
+ "border": "#dcdfe2",
2869
+ "input": "#f4f5f7",
2870
+ "ring": "#e05d38",
2871
+ "chart-1": "#86a7c8",
2872
+ "chart-2": "#eea591",
2873
+ "chart-3": "#5a7ca6",
2874
+ "chart-4": "#466494",
2875
+ "chart-5": "#334c82",
2876
+ "sidebar": "#dddfe2",
2877
+ "sidebar-foreground": "#333333",
2878
+ "sidebar-primary": "#e05d38",
2879
+ "sidebar-primary-foreground": "#ffffff",
2880
+ "sidebar-accent": "#d6e4f0",
2881
+ "sidebar-accent-foreground": "#1e3a8a",
2882
+ "sidebar-border": "#e5e7eb",
2883
+ "sidebar-ring": "#e05d38",
2884
+ "font-sans": "Inter, sans-serif",
2885
+ "font-serif": "Source Serif 4, serif",
2886
+ "font-mono": "JetBrains Mono, monospace",
2887
+ "shadow-color": "hsl(0 0% 0%)",
2888
+ "shadow-opacity": "0.1",
2889
+ "shadow-blur": "3px",
2890
+ "shadow-spread": "0px",
2891
+ "shadow-offset-x": "0px",
2892
+ "shadow-offset-y": "1px",
2893
+ },
2894
+ dark: {
2895
+ "background": "#1c2433",
2896
+ "foreground": "#e5e5e5",
2897
+ "card": "#2a3040",
2898
+ "card-foreground": "#e5e5e5",
2899
+ "popover": "#262b38",
2900
+ "popover-foreground": "#e5e5e5",
2901
+ "primary": "#e05d38",
2902
+ "primary-foreground": "#ffffff",
2903
+ "secondary": "#2a303e",
2904
+ "secondary-foreground": "#e5e5e5",
2905
+ "muted": "#2a303e",
2906
+ "muted-foreground": "#a3a3a3",
2907
+ "accent": "#2a3656",
2908
+ "accent-foreground": "#bfdbfe",
2909
+ "destructive": "#ef4444",
2910
+ "destructive-foreground": "#ffffff",
2911
+ "border": "#3d4354",
2912
+ "input": "#3d4354",
2913
+ "ring": "#e05d38",
2914
+ "chart-1": "#86a7c8",
2915
+ "chart-2": "#e6a08f",
2916
+ "chart-3": "#5a7ca6",
2917
+ "chart-4": "#466494",
2918
+ "chart-5": "#334c82",
2919
+ "sidebar": "#2a303f",
2920
+ "sidebar-foreground": "#e5e5e5",
2921
+ "sidebar-primary": "#e05d38",
2922
+ "sidebar-primary-foreground": "#ffffff",
2923
+ "sidebar-accent": "#2a3656",
2924
+ "sidebar-accent-foreground": "#bfdbfe",
2925
+ "sidebar-border": "#3d4354",
2926
+ "sidebar-ring": "#e05d38",
2927
+ },
2928
+ },
2929
+ radius: "0.75rem",
2930
+ font: {
2931
+ value: "inter",
2932
+ fontFamily: '"Inter", sans-serif',
2933
+ googleFontsUrl:
2934
+ "https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&display=swap",
2935
+ },
2936
+ },
2937
+ {
2938
+ name: "quantum-rose",
2939
+ label: "Quantum Rose",
2940
+ colors: {
2941
+ light: {
2942
+ "background": "#fff0f8",
2943
+ "foreground": "#91185c",
2944
+ "card": "#fff7fc",
2945
+ "card-foreground": "#91185c",
2946
+ "popover": "#fff7fc",
2947
+ "popover-foreground": "#91185c",
2948
+ "primary": "#e6067a",
2949
+ "primary-foreground": "#ffffff",
2950
+ "secondary": "#ffd6ff",
2951
+ "secondary-foreground": "#91185c",
2952
+ "muted": "#ffe3f2",
2953
+ "muted-foreground": "#c04283",
2954
+ "accent": "#ffc1e3",
2955
+ "accent-foreground": "#91185c",
2956
+ "destructive": "#d13869",
2957
+ "destructive-foreground": "#ffffff",
2958
+ "border": "#ffc7e6",
2959
+ "input": "#ffd6ff",
2960
+ "ring": "#e6067a",
2961
+ "chart-1": "#e6067a",
2962
+ "chart-2": "#c44b97",
2963
+ "chart-3": "#9969b6",
2964
+ "chart-4": "#7371bf",
2965
+ "chart-5": "#5e84ff",
2966
+ "sidebar": "#ffedf6",
2967
+ "sidebar-foreground": "#91185c",
2968
+ "sidebar-primary": "#e6067a",
2969
+ "sidebar-primary-foreground": "#ffffff",
2970
+ "sidebar-accent": "#ffc1e3",
2971
+ "sidebar-accent-foreground": "#91185c",
2972
+ "sidebar-border": "#ffddf0",
2973
+ "sidebar-ring": "#e6067a",
2974
+ "font-sans": "Poppins, sans-serif",
2975
+ "font-serif": "Playfair Display, serif",
2976
+ "font-mono": "Space Mono, monospace",
2977
+ "shadow-color": "hsl(330 70% 30% / 0.12)",
2978
+ "shadow-opacity": "0.18",
2979
+ "shadow-blur": "0px",
2980
+ "shadow-spread": "0px",
2981
+ "shadow-offset-x": "0px",
2982
+ "shadow-offset-y": "3px",
2983
+ },
2984
+ dark: {
2985
+ "background": "#1a0922",
2986
+ "foreground": "#ffb3ff",
2987
+ "card": "#2a1435",
2988
+ "card-foreground": "#ffb3ff",
2989
+ "popover": "#2a1435",
2990
+ "popover-foreground": "#ffb3ff",
2991
+ "primary": "#ff6bef",
2992
+ "primary-foreground": "#180518",
2993
+ "secondary": "#46204f",
2994
+ "secondary-foreground": "#ffb3ff",
2995
+ "muted": "#331941",
2996
+ "muted-foreground": "#d67ad6",
2997
+ "accent": "#5a1f5d",
2998
+ "accent-foreground": "#ffb3ff",
2999
+ "destructive": "#ff2876",
3000
+ "destructive-foreground": "#f9f9f9",
3001
+ "border": "#4a1b5f",
3002
+ "input": "#46204f",
3003
+ "ring": "#ff6bef",
3004
+ "chart-1": "#ff6bef",
3005
+ "chart-2": "#c359e3",
3006
+ "chart-3": "#9161ff",
3007
+ "chart-4": "#6f73e2",
3008
+ "chart-5": "#547aff",
3009
+ "sidebar": "#1c0d25",
3010
+ "sidebar-foreground": "#ffb3ff",
3011
+ "sidebar-primary": "#ff6bef",
3012
+ "sidebar-primary-foreground": "#180518",
3013
+ "sidebar-accent": "#5a1f5d",
3014
+ "sidebar-accent-foreground": "#ffb3ff",
3015
+ "sidebar-border": "#4a1b5f",
3016
+ "sidebar-ring": "#ff6bef",
3017
+ "font-sans": "Quicksand, sans-serif",
3018
+ "font-serif": "Playfair Display, serif",
3019
+ "font-mono": "Space Mono, monospace",
3020
+ "shadow-color": "hsl(300 80% 50% / 0.25)",
3021
+ },
3022
+ },
3023
+ radius: "0.5rem",
3024
+ font: {
3025
+ value: "poppins",
3026
+ fontFamily: '"Poppins", sans-serif',
3027
+ googleFontsUrl:
3028
+ "https://fonts.googleapis.com/css2?family=Poppins:wght@400;500;600;700&display=swap",
3029
+ },
3030
+ },
3031
+ {
3032
+ name: "nature",
3033
+ label: "Nature",
3034
+ colors: {
3035
+ light: {
3036
+ "background": "#f8f5f0",
3037
+ "foreground": "#3e2723",
3038
+ "card": "#f8f5f0",
3039
+ "card-foreground": "#3e2723",
3040
+ "popover": "#f8f5f0",
3041
+ "popover-foreground": "#3e2723",
3042
+ "primary": "#2e7d32",
3043
+ "primary-foreground": "#ffffff",
3044
+ "secondary": "#e8f5e9",
3045
+ "secondary-foreground": "#1b5e20",
3046
+ "muted": "#f0e9e0",
3047
+ "muted-foreground": "#6d4c41",
3048
+ "accent": "#c8e6c9",
3049
+ "accent-foreground": "#1b5e20",
3050
+ "destructive": "#c62828",
3051
+ "destructive-foreground": "#ffffff",
3052
+ "border": "#e0d6c9",
3053
+ "input": "#e0d6c9",
3054
+ "ring": "#2e7d32",
3055
+ "chart-1": "#4caf50",
3056
+ "chart-2": "#388e3c",
3057
+ "chart-3": "#2e7d32",
3058
+ "chart-4": "#1b5e20",
3059
+ "chart-5": "#0a1f0c",
3060
+ "sidebar": "#f0e9e0",
3061
+ "sidebar-foreground": "#3e2723",
3062
+ "sidebar-primary": "#2e7d32",
3063
+ "sidebar-primary-foreground": "#ffffff",
3064
+ "sidebar-accent": "#c8e6c9",
3065
+ "sidebar-accent-foreground": "#1b5e20",
3066
+ "sidebar-border": "#e0d6c9",
3067
+ "sidebar-ring": "#2e7d32",
3068
+ "font-sans": "Montserrat, sans-serif",
3069
+ "font-serif": "Merriweather, serif",
3070
+ "font-mono": "Source Code Pro, monospace",
3071
+ },
3072
+ dark: {
3073
+ "background": "#1c2a1f",
3074
+ "foreground": "#f0ebe5",
3075
+ "card": "#2d3a2e",
3076
+ "card-foreground": "#f0ebe5",
3077
+ "popover": "#2d3a2e",
3078
+ "popover-foreground": "#f0ebe5",
3079
+ "primary": "#4caf50",
3080
+ "primary-foreground": "#0a1f0c",
3081
+ "secondary": "#3e4a3d",
3082
+ "secondary-foreground": "#d7e0d6",
3083
+ "muted": "#252f26",
3084
+ "muted-foreground": "#d7cfc4",
3085
+ "accent": "#388e3c",
3086
+ "accent-foreground": "#f0ebe5",
3087
+ "destructive": "#c62828",
3088
+ "destructive-foreground": "#f0ebe5",
3089
+ "border": "#3e4a3d",
3090
+ "input": "#3e4a3d",
3091
+ "ring": "#4caf50",
3092
+ "chart-1": "#81c784",
3093
+ "chart-2": "#66bb6a",
3094
+ "chart-3": "#4caf50",
3095
+ "chart-4": "#43a047",
3096
+ "chart-5": "#388e3c",
3097
+ "sidebar": "#1c2a1f",
3098
+ "sidebar-foreground": "#f0ebe5",
3099
+ "sidebar-primary": "#4caf50",
3100
+ "sidebar-primary-foreground": "#0a1f0c",
3101
+ "sidebar-accent": "#388e3c",
3102
+ "sidebar-accent-foreground": "#f0ebe5",
3103
+ "sidebar-border": "#3e4a3d",
3104
+ "sidebar-ring": "#4caf50",
3105
+ },
3106
+ },
3107
+ radius: "0.5rem",
3108
+ font: {
3109
+ value: "montserrat",
3110
+ fontFamily: '"Montserrat", sans-serif',
3111
+ googleFontsUrl:
3112
+ "https://fonts.googleapis.com/css2?family=Montserrat:wght@400;500;600;700&display=swap",
3113
+ },
3114
+ },
3115
+ {
3116
+ name: "bold-tech",
3117
+ label: "Bold Tech",
3118
+ colors: {
3119
+ light: {
3120
+ "background": "#ffffff",
3121
+ "foreground": "#312e81",
3122
+ "card": "#ffffff",
3123
+ "card-foreground": "#312e81",
3124
+ "popover": "#ffffff",
3125
+ "popover-foreground": "#312e81",
3126
+ "primary": "#8b5cf6",
3127
+ "primary-foreground": "#ffffff",
3128
+ "secondary": "#f3f0ff",
3129
+ "secondary-foreground": "#4338ca",
3130
+ "muted": "#f5f3ff",
3131
+ "muted-foreground": "#7c3aed",
3132
+ "accent": "#dbeafe",
3133
+ "accent-foreground": "#1e40af",
3134
+ "destructive": "#ef4444",
3135
+ "destructive-foreground": "#ffffff",
3136
+ "border": "#e0e7ff",
3137
+ "input": "#e0e7ff",
3138
+ "ring": "#8b5cf6",
3139
+ "chart-1": "#8b5cf6",
3140
+ "chart-2": "#7c3aed",
3141
+ "chart-3": "#6d28d9",
3142
+ "chart-4": "#5b21b6",
3143
+ "chart-5": "#4c1d95",
3144
+ "sidebar": "#f5f3ff",
3145
+ "sidebar-foreground": "#312e81",
3146
+ "sidebar-primary": "#8b5cf6",
3147
+ "sidebar-primary-foreground": "#ffffff",
3148
+ "sidebar-accent": "#dbeafe",
3149
+ "sidebar-accent-foreground": "#1e40af",
3150
+ "sidebar-border": "#e0e7ff",
3151
+ "sidebar-ring": "#8b5cf6",
3152
+ "font-sans": "Roboto, sans-serif",
3153
+ "font-serif": "Playfair Display, serif",
3154
+ "font-mono": "Fira Code, monospace",
3155
+ "shadow-color": "hsl(255 86% 66%)",
3156
+ "shadow-opacity": "0.2",
3157
+ "shadow-blur": "4px",
3158
+ "shadow-spread": "0px",
3159
+ "shadow-offset-x": "2px",
3160
+ "shadow-offset-y": "2px",
3161
+ },
3162
+ dark: {
3163
+ "background": "#0f172a",
3164
+ "foreground": "#e0e7ff",
3165
+ "card": "#1e1b4b",
3166
+ "card-foreground": "#e0e7ff",
3167
+ "popover": "#1e1b4b",
3168
+ "popover-foreground": "#e0e7ff",
3169
+ "primary": "#8b5cf6",
3170
+ "primary-foreground": "#ffffff",
3171
+ "secondary": "#1e1b4b",
3172
+ "secondary-foreground": "#e0e7ff",
3173
+ "muted": "#171447",
3174
+ "muted-foreground": "#c4b5fd",
3175
+ "accent": "#4338ca",
3176
+ "accent-foreground": "#e0e7ff",
3177
+ "destructive": "#ef4444",
3178
+ "destructive-foreground": "#ffffff",
3179
+ "border": "#2e1065",
3180
+ "input": "#2e1065",
3181
+ "ring": "#8b5cf6",
3182
+ "chart-1": "#a78bfa",
3183
+ "chart-2": "#8b5cf6",
3184
+ "chart-3": "#7c3aed",
3185
+ "chart-4": "#6d28d9",
3186
+ "chart-5": "#5b21b6",
3187
+ "sidebar": "#0f172a",
3188
+ "sidebar-foreground": "#e0e7ff",
3189
+ "sidebar-primary": "#8b5cf6",
3190
+ "sidebar-primary-foreground": "#ffffff",
3191
+ "sidebar-accent": "#4338ca",
3192
+ "sidebar-accent-foreground": "#e0e7ff",
3193
+ "sidebar-border": "#2e1065",
3194
+ "sidebar-ring": "#8b5cf6",
3195
+ },
3196
+ },
3197
+ radius: "0.625rem",
3198
+ font: {
3199
+ value: "roboto",
3200
+ fontFamily: '"Roboto", sans-serif',
3201
+ googleFontsUrl:
3202
+ "https://fonts.googleapis.com/css2?family=Roboto:wght@400;500;700&display=swap",
3203
+ },
3204
+ },
3205
+ {
3206
+ name: "elegant-luxury",
3207
+ label: "Elegant Luxury",
3208
+ colors: {
3209
+ light: {
3210
+ "background": "#faf7f5",
3211
+ "foreground": "#1a1a1a",
3212
+ "card": "#faf7f5",
3213
+ "card-foreground": "#1a1a1a",
3214
+ "popover": "#faf7f5",
3215
+ "popover-foreground": "#1a1a1a",
3216
+ "primary": "#9b2c2c",
3217
+ "primary-foreground": "#ffffff",
3218
+ "secondary": "#fdf2d6",
3219
+ "secondary-foreground": "#805500",
3220
+ "muted": "#f0ebe8",
3221
+ "muted-foreground": "#57534e",
3222
+ "accent": "#fef3c7",
3223
+ "accent-foreground": "#7f1d1d",
3224
+ "destructive": "#991b1b",
3225
+ "destructive-foreground": "#ffffff",
3226
+ "border": "#f5e8d2",
3227
+ "input": "#f5e8d2",
3228
+ "ring": "#9b2c2c",
3229
+ "chart-1": "#b91c1c",
3230
+ "chart-2": "#9b2c2c",
3231
+ "chart-3": "#7f1d1d",
3232
+ "chart-4": "#b45309",
3233
+ "chart-5": "#92400e",
3234
+ "sidebar": "#f0ebe8",
3235
+ "sidebar-foreground": "#1a1a1a",
3236
+ "sidebar-primary": "#9b2c2c",
3237
+ "sidebar-primary-foreground": "#ffffff",
3238
+ "sidebar-accent": "#fef3c7",
3239
+ "sidebar-accent-foreground": "#7f1d1d",
3240
+ "sidebar-border": "#f5e8d2",
3241
+ "sidebar-ring": "#9b2c2c",
3242
+ "font-sans": "Poppins, sans-serif",
3243
+ "font-serif": "Libre Baskerville, serif",
3244
+ "font-mono": "IBM Plex Mono, monospace",
3245
+ "shadow-color": "hsl(0 63% 18%)",
3246
+ "shadow-opacity": "0.12",
3247
+ "shadow-blur": "16px",
3248
+ "shadow-spread": "-2px",
3249
+ "shadow-offset-x": "1px",
3250
+ "shadow-offset-y": "1px",
3251
+ },
3252
+ dark: {
3253
+ "background": "#1c1917",
3254
+ "foreground": "#f5f5f4",
3255
+ "card": "#292524",
3256
+ "card-foreground": "#f5f5f4",
3257
+ "popover": "#292524",
3258
+ "popover-foreground": "#f5f5f4",
3259
+ "primary": "#b91c1c",
3260
+ "primary-foreground": "#faf7f5",
3261
+ "secondary": "#92400e",
3262
+ "secondary-foreground": "#fef3c7",
3263
+ "muted": "#1f1c1a",
3264
+ "muted-foreground": "#d6d3d1",
3265
+ "accent": "#b45309",
3266
+ "accent-foreground": "#fef3c7",
3267
+ "destructive": "#ef4444",
3268
+ "destructive-foreground": "#ffffff",
3269
+ "border": "#44403c",
3270
+ "input": "#44403c",
3271
+ "ring": "#b91c1c",
3272
+ "chart-1": "#f87171",
3273
+ "chart-2": "#ef4444",
3274
+ "chart-3": "#dc2626",
3275
+ "chart-4": "#fbbf24",
3276
+ "chart-5": "#f59e0b",
3277
+ "sidebar": "#1c1917",
3278
+ "sidebar-foreground": "#f5f5f4",
3279
+ "sidebar-primary": "#b91c1c",
3280
+ "sidebar-primary-foreground": "#faf7f5",
3281
+ "sidebar-accent": "#b45309",
3282
+ "sidebar-accent-foreground": "#fef3c7",
3283
+ "sidebar-border": "#44403c",
3284
+ "sidebar-ring": "#b91c1c",
3285
+ },
3286
+ },
3287
+ radius: "0.375rem",
3288
+ font: {
3289
+ value: "poppins",
3290
+ fontFamily: '"Poppins", sans-serif',
3291
+ googleFontsUrl:
3292
+ "https://fonts.googleapis.com/css2?family=Poppins:wght@400;500;600;700&display=swap",
3293
+ },
3294
+ },
3295
+ {
3296
+ name: "amber-minimal",
3297
+ label: "Amber Minimal",
3298
+ colors: {
3299
+ light: {
3300
+ "background": "#ffffff",
3301
+ "foreground": "#262626",
3302
+ "card": "#ffffff",
3303
+ "card-foreground": "#262626",
3304
+ "popover": "#ffffff",
3305
+ "popover-foreground": "#262626",
3306
+ "primary": "#f59e0b",
3307
+ "primary-foreground": "#000000",
3308
+ "secondary": "#f3f4f6",
3309
+ "secondary-foreground": "#4b5563",
3310
+ "muted": "#f9fafb",
3311
+ "muted-foreground": "#6b7280",
3312
+ "accent": "#fffbeb",
3313
+ "accent-foreground": "#92400e",
3314
+ "destructive": "#ef4444",
3315
+ "destructive-foreground": "#ffffff",
3316
+ "border": "#e5e7eb",
3317
+ "input": "#e5e7eb",
3318
+ "ring": "#f59e0b",
3319
+ "chart-1": "#f59e0b",
3320
+ "chart-2": "#d97706",
3321
+ "chart-3": "#b45309",
3322
+ "chart-4": "#92400e",
3323
+ "chart-5": "#78350f",
3324
+ "sidebar": "#f9fafb",
3325
+ "sidebar-foreground": "#262626",
3326
+ "sidebar-primary": "#f59e0b",
3327
+ "sidebar-primary-foreground": "#ffffff",
3328
+ "sidebar-accent": "#fffbeb",
3329
+ "sidebar-accent-foreground": "#92400e",
3330
+ "sidebar-border": "#e5e7eb",
3331
+ "sidebar-ring": "#f59e0b",
3332
+ "font-sans": "Inter, sans-serif",
3333
+ "font-serif": "Source Serif 4, serif",
3334
+ "font-mono": "JetBrains Mono, monospace",
3335
+ "shadow-color": "hsl(0 0% 0%)",
3336
+ "shadow-opacity": "0.1",
3337
+ "shadow-blur": "8px",
3338
+ "shadow-spread": "-1px",
3339
+ "shadow-offset-x": "0px",
3340
+ "shadow-offset-y": "4px",
3341
+ "letter-spacing": "0em",
3342
+ "spacing": "0.25rem",
3343
+ },
3344
+ dark: {
3345
+ "background": "#171717",
3346
+ "foreground": "#e5e5e5",
3347
+ "card": "#262626",
3348
+ "card-foreground": "#e5e5e5",
3349
+ "popover": "#262626",
3350
+ "popover-foreground": "#e5e5e5",
3351
+ "primary": "#f59e0b",
3352
+ "primary-foreground": "#000000",
3353
+ "secondary": "#262626",
3354
+ "secondary-foreground": "#e5e5e5",
3355
+ "muted": "#1f1f1f",
3356
+ "muted-foreground": "#a3a3a3",
3357
+ "accent": "#92400e",
3358
+ "accent-foreground": "#fde68a",
3359
+ "destructive": "#ef4444",
3360
+ "destructive-foreground": "#ffffff",
3361
+ "border": "#404040",
3362
+ "input": "#404040",
3363
+ "ring": "#f59e0b",
3364
+ "chart-1": "#fbbf24",
3365
+ "chart-2": "#d97706",
3366
+ "chart-3": "#92400e",
3367
+ "chart-4": "#b45309",
3368
+ "chart-5": "#92400e",
3369
+ "sidebar": "#0f0f0f",
3370
+ "sidebar-foreground": "#e5e5e5",
3371
+ "sidebar-primary": "#f59e0b",
3372
+ "sidebar-primary-foreground": "#ffffff",
3373
+ "sidebar-accent": "#92400e",
3374
+ "sidebar-accent-foreground": "#fde68a",
3375
+ "sidebar-border": "#404040",
3376
+ "sidebar-ring": "#f59e0b",
3377
+ },
3378
+ },
3379
+ radius: "0.375rem",
3380
+ font: {
3381
+ value: "inter",
3382
+ fontFamily: '"Inter", sans-serif',
3383
+ googleFontsUrl:
3384
+ "https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&display=swap",
3385
+ },
3386
+ },
3387
+ {
3388
+ name: "neo-brutalism",
3389
+ label: "Neo Brutalism",
3390
+ colors: {
3391
+ light: {
3392
+ "background": "#ffffff",
3393
+ "foreground": "#000000",
3394
+ "card": "#ffffff",
3395
+ "card-foreground": "#000000",
3396
+ "popover": "#ffffff",
3397
+ "popover-foreground": "#000000",
3398
+ "primary": "#ff3333",
3399
+ "primary-foreground": "#ffffff",
3400
+ "secondary": "#ffff00",
3401
+ "secondary-foreground": "#000000",
3402
+ "muted": "#f0f0f0",
3403
+ "muted-foreground": "#333333",
3404
+ "accent": "#0066ff",
3405
+ "accent-foreground": "#ffffff",
3406
+ "destructive": "#000000",
3407
+ "destructive-foreground": "#ffffff",
3408
+ "border": "#000000",
3409
+ "input": "#000000",
3410
+ "ring": "#ff3333",
3411
+ "chart-1": "#ff3333",
3412
+ "chart-2": "#ffff00",
3413
+ "chart-3": "#0066ff",
3414
+ "chart-4": "#00cc00",
3415
+ "chart-5": "#cc00cc",
3416
+ "sidebar": "#f0f0f0",
3417
+ "sidebar-foreground": "#000000",
3418
+ "sidebar-primary": "#ff3333",
3419
+ "sidebar-primary-foreground": "#ffffff",
3420
+ "sidebar-accent": "#0066ff",
3421
+ "sidebar-accent-foreground": "#ffffff",
3422
+ "sidebar-border": "#000000",
3423
+ "sidebar-ring": "#ff3333",
3424
+ "font-sans": "DM Sans, sans-serif",
3425
+ "font-mono": "Space Mono, monospace",
3426
+ "shadow-color": "hsl(0 0% 0%)",
3427
+ "shadow-opacity": "1",
3428
+ "shadow-blur": "0px",
3429
+ "shadow-spread": "0px",
3430
+ "shadow-offset-x": "4px",
3431
+ "shadow-offset-y": "4px",
3432
+ },
3433
+ dark: {
3434
+ "background": "#000000",
3435
+ "foreground": "#ffffff",
3436
+ "card": "#333333",
3437
+ "card-foreground": "#ffffff",
3438
+ "popover": "#333333",
3439
+ "popover-foreground": "#ffffff",
3440
+ "primary": "#ff6666",
3441
+ "primary-foreground": "#000000",
3442
+ "secondary": "#ffff33",
3443
+ "secondary-foreground": "#000000",
3444
+ "muted": "#1a1a1a",
3445
+ "muted-foreground": "#cccccc",
3446
+ "accent": "#3399ff",
3447
+ "accent-foreground": "#000000",
3448
+ "destructive": "#ffffff",
3449
+ "destructive-foreground": "#000000",
3450
+ "border": "#ffffff",
3451
+ "input": "#ffffff",
3452
+ "ring": "#ff6666",
3453
+ "chart-1": "#ff6666",
3454
+ "chart-2": "#ffff33",
3455
+ "chart-3": "#3399ff",
3456
+ "chart-4": "#33cc33",
3457
+ "chart-5": "#cc33cc",
3458
+ "sidebar": "#000000",
3459
+ "sidebar-foreground": "#ffffff",
3460
+ "sidebar-primary": "#ff6666",
3461
+ "sidebar-primary-foreground": "#000000",
3462
+ "sidebar-accent": "#3399ff",
3463
+ "sidebar-accent-foreground": "#000000",
3464
+ "sidebar-border": "#ffffff",
3465
+ "sidebar-ring": "#ff6666",
3466
+ },
3467
+ },
3468
+ radius: "0px",
3469
+ font: {
3470
+ value: "dm-sans",
3471
+ fontFamily: '"DM Sans", sans-serif',
3472
+ googleFontsUrl:
3473
+ "https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600;700&display=swap",
3474
+ },
3475
+ },
3476
+ {
3477
+ name: "solar-dusk",
3478
+ label: "Solar Dusk",
3479
+ colors: {
3480
+ light: {
3481
+ "background": "#FDFBF7",
3482
+ "foreground": "#4A3B33",
3483
+ "card": "#F8F4EE",
3484
+ "card-foreground": "#4A3B33",
3485
+ "popover": "#F8F4EE",
3486
+ "popover-foreground": "#4A3B33",
3487
+ "primary": "#B45309",
3488
+ "primary-foreground": "#FFFFFF",
3489
+ "secondary": "#E4C090",
3490
+ "secondary-foreground": "#57534E",
3491
+ "muted": "#F1E9DA",
3492
+ "muted-foreground": "#78716C",
3493
+ "accent": "#f2daba",
3494
+ "accent-foreground": "#57534E",
3495
+ "destructive": "#991B1B",
3496
+ "destructive-foreground": "#FFFFFF",
3497
+ "border": "#E4D9BC",
3498
+ "input": "#E4D9BC",
3499
+ "ring": "#B45309",
3500
+ "chart-1": "#B45309",
3501
+ "chart-2": "#78716C",
3502
+ "chart-3": "#A16207",
3503
+ "chart-4": "#78716C",
3504
+ "chart-5": "#CA8A04",
3505
+ "sidebar": "#F1E9DA",
3506
+ "sidebar-foreground": "#4A3B33",
3507
+ "sidebar-primary": "#B45309",
3508
+ "sidebar-primary-foreground": "#FFFFFF",
3509
+ "sidebar-accent": "#A16207",
3510
+ "sidebar-accent-foreground": "#FFFFFF",
3511
+ "sidebar-border": "#E4D9BC",
3512
+ "sidebar-ring": "#B45309",
3513
+ "font-sans": "Oxanium, sans-serif",
3514
+ "font-serif": "Merriweather, serif",
3515
+ "font-mono": "Fira Code, monospace",
3516
+ "shadow-color": "hsl(28 18% 25%)",
3517
+ "shadow-opacity": "0.18",
3518
+ "shadow-blur": "3px",
3519
+ "shadow-spread": "0px",
3520
+ "shadow-offset-x": "0px",
3521
+ "shadow-offset-y": "2px",
3522
+ },
3523
+ dark: {
3524
+ "background": "#1C1917",
3525
+ "foreground": "#F5F5F4",
3526
+ "card": "#292524",
3527
+ "card-foreground": "#F5F5F4",
3528
+ "popover": "#292524",
3529
+ "popover-foreground": "#F5F5F4",
3530
+ "primary": "#F97316",
3531
+ "primary-foreground": "#FFFFFF",
3532
+ "secondary": "#57534E",
3533
+ "secondary-foreground": "#E7E5E4",
3534
+ "muted": "#201d1a",
3535
+ "muted-foreground": "#A8A29E",
3536
+ "accent": "#1e4252",
3537
+ "accent-foreground": "#E7E5E4",
3538
+ "destructive": "#DC2626",
3539
+ "destructive-foreground": "#FFFFFF",
3540
+ "border": "#44403C",
3541
+ "input": "#44403C",
3542
+ "ring": "#F97316",
3543
+ "chart-1": "#F97316",
3544
+ "chart-2": "#0EA5E9",
3545
+ "chart-3": "#EAB308",
3546
+ "chart-4": "#A8A29E",
3547
+ "chart-5": "#78716C",
3548
+ "sidebar": "#292524",
3549
+ "sidebar-foreground": "#F5F5F4",
3550
+ "sidebar-primary": "#F97316",
3551
+ "sidebar-primary-foreground": "#FFFFFF",
3552
+ "sidebar-accent": "#0EA5E9",
3553
+ "sidebar-accent-foreground": "#0C2A4D",
3554
+ "sidebar-border": "#44403C",
3555
+ "sidebar-ring": "#F97316",
3556
+ "shadow-color": "hsl(0 0% 5%)",
3557
+ },
3558
+ },
3559
+ radius: "0.3rem",
3560
+ font: {
3561
+ value: "oxanium",
3562
+ fontFamily: '"Oxanium", sans-serif',
3563
+ googleFontsUrl:
3564
+ "https://fonts.googleapis.com/css2?family=Oxanium:wght@400;500;600;700&display=swap",
3565
+ },
3566
+ },
3567
+ {
3568
+ name: "claymorphism",
3569
+ label: "Claymorphism",
3570
+ colors: {
3571
+ light: {
3572
+ "background": "#e7e5e4",
3573
+ "foreground": "#1e293b",
3574
+ "card": "#f5f5f4",
3575
+ "card-foreground": "#1e293b",
3576
+ "popover": "#f5f5f4",
3577
+ "popover-foreground": "#1e293b",
3578
+ "primary": "#6366f1",
3579
+ "primary-foreground": "#ffffff",
3580
+ "secondary": "#d6d3d1",
3581
+ "secondary-foreground": "#4b5563",
3582
+ "muted": "#e7e5e4",
3583
+ "muted-foreground": "#6b7280",
3584
+ "accent": "#f3e5f5",
3585
+ "accent-foreground": "#374151",
3586
+ "destructive": "#ef4444",
3587
+ "destructive-foreground": "#ffffff",
3588
+ "border": "#d6d3d1",
3589
+ "input": "#d6d3d1",
3590
+ "ring": "#6366f1",
3591
+ "chart-1": "#6366f1",
3592
+ "chart-2": "#4f46e5",
3593
+ "chart-3": "#4338ca",
3594
+ "chart-4": "#3730a3",
3595
+ "chart-5": "#312e81",
3596
+ "sidebar": "#d6d3d1",
3597
+ "sidebar-foreground": "#1e293b",
3598
+ "sidebar-primary": "#6366f1",
3599
+ "sidebar-primary-foreground": "#ffffff",
3600
+ "sidebar-accent": "#f3e5f5",
3601
+ "sidebar-accent-foreground": "#374151",
3602
+ "sidebar-border": "#d6d3d1",
3603
+ "sidebar-ring": "#6366f1",
3604
+ "font-sans": "Plus Jakarta Sans, sans-serif",
3605
+ "font-serif": "Lora, serif",
3606
+ "font-mono": "Roboto Mono, monospace",
3607
+ "shadow-color": "hsl(240 4% 60%)",
3608
+ "shadow-opacity": "0.18",
3609
+ "shadow-blur": "10px",
3610
+ "shadow-spread": "4px",
3611
+ "shadow-offset-x": "2px",
3612
+ "shadow-offset-y": "2px",
3613
+ },
3614
+ dark: {
3615
+ "background": "#1e1b18",
3616
+ "foreground": "#e2e8f0",
3617
+ "card": "#2c2825",
3618
+ "card-foreground": "#e2e8f0",
3619
+ "popover": "#2c2825",
3620
+ "popover-foreground": "#e2e8f0",
3621
+ "primary": "#818cf8",
3622
+ "primary-foreground": "#1e1b18",
3623
+ "secondary": "#3a3633",
3624
+ "secondary-foreground": "#d1d5db",
3625
+ "muted": "#1f1c19",
3626
+ "muted-foreground": "#9ca3af",
3627
+ "accent": "#484441",
3628
+ "accent-foreground": "#d1d5db",
3629
+ "destructive": "#ef4444",
3630
+ "destructive-foreground": "#1e1b18",
3631
+ "border": "#3a3633",
3632
+ "input": "#3a3633",
3633
+ "ring": "#818cf8",
3634
+ "chart-1": "#818cf8",
3635
+ "chart-2": "#6366f1",
3636
+ "chart-3": "#4f46e5",
3637
+ "chart-4": "#4338ca",
3638
+ "chart-5": "#3730a3",
3639
+ "sidebar": "#3a3633",
3640
+ "sidebar-foreground": "#e2e8f0",
3641
+ "sidebar-primary": "#818cf8",
3642
+ "sidebar-primary-foreground": "#1e1b18",
3643
+ "sidebar-accent": "#484441",
3644
+ "sidebar-accent-foreground": "#d1d5db",
3645
+ "sidebar-border": "#3a3633",
3646
+ "sidebar-ring": "#818cf8",
3647
+ "shadow-color": "hsl(0 0% 0%)",
3648
+ },
3649
+ },
3650
+ radius: "1.25rem",
3651
+ font: {
3652
+ value: "plus-jakarta-sans",
3653
+ fontFamily: '"Plus Jakarta Sans", sans-serif',
3654
+ googleFontsUrl:
3655
+ "https://fonts.googleapis.com/css2?family=Plus+Jakarta+Sans:wght@400;500;600;700&display=swap",
3656
+ },
3657
+ },
3658
+ {
3659
+ name: "cyberpunk",
3660
+ label: "Cyberpunk",
3661
+ colors: {
3662
+ light: {
3663
+ "background": "#f8f9fa",
3664
+ "foreground": "#0c0c1d",
3665
+ "card": "#ffffff",
3666
+ "card-foreground": "#0c0c1d",
3667
+ "popover": "#ffffff",
3668
+ "popover-foreground": "#0c0c1d",
3669
+ "primary": "#ff00c8",
3670
+ "primary-foreground": "#ffffff",
3671
+ "secondary": "#f0f0ff",
3672
+ "secondary-foreground": "#0c0c1d",
3673
+ "muted": "#f0f0ff",
3674
+ "muted-foreground": "#0c0c1d",
3675
+ "accent": "#00ffcc",
3676
+ "accent-foreground": "#0c0c1d",
3677
+ "destructive": "#ff3d00",
3678
+ "destructive-foreground": "#ffffff",
3679
+ "border": "#dfe6e9",
3680
+ "input": "#dfe6e9",
3681
+ "ring": "#ff00c8",
3682
+ "chart-1": "#ff00c8",
3683
+ "chart-2": "#9000ff",
3684
+ "chart-3": "#00e5ff",
3685
+ "chart-4": "#00ffcc",
3686
+ "chart-5": "#ffe600",
3687
+ "sidebar": "#f0f0ff",
3688
+ "sidebar-foreground": "#0c0c1d",
3689
+ "sidebar-primary": "#ff00c8",
3690
+ "sidebar-primary-foreground": "#ffffff",
3691
+ "sidebar-accent": "#00ffcc",
3692
+ "sidebar-accent-foreground": "#0c0c1d",
3693
+ "sidebar-border": "#dfe6e9",
3694
+ "sidebar-ring": "#ff00c8",
3695
+ "font-sans": "Outfit, sans-serif",
3696
+ "font-mono": "Fira Code, monospace",
3697
+ "shadow-color": "hsl(0 0% 0%)",
3698
+ "shadow-opacity": "0.1",
3699
+ "shadow-blur": "8px",
3700
+ "shadow-spread": "-2px",
3701
+ "shadow-offset-x": "0px",
3702
+ "shadow-offset-y": "4px",
3703
+ },
3704
+ dark: {
3705
+ "background": "#0c0c1d",
3706
+ "foreground": "#eceff4",
3707
+ "card": "#1e1e3f",
3708
+ "card-foreground": "#eceff4",
3709
+ "popover": "#1e1e3f",
3710
+ "popover-foreground": "#eceff4",
3711
+ "primary": "#ff00c8",
3712
+ "primary-foreground": "#ffffff",
3713
+ "secondary": "#1e1e3f",
3714
+ "secondary-foreground": "#eceff4",
3715
+ "muted": "#151530",
3716
+ "muted-foreground": "#8085a6",
3717
+ "accent": "#00ffcc",
3718
+ "accent-foreground": "#0c0c1d",
3719
+ "destructive": "#ff3d00",
3720
+ "destructive-foreground": "#ffffff",
3721
+ "border": "#2e2e5e",
3722
+ "input": "#2e2e5e",
3723
+ "ring": "#ff00c8",
3724
+ "chart-1": "#ff00c8",
3725
+ "chart-2": "#9000ff",
3726
+ "chart-3": "#00e5ff",
3727
+ "chart-4": "#00ffcc",
3728
+ "chart-5": "#ffe600",
3729
+ "sidebar": "#0c0c1d",
3730
+ "sidebar-foreground": "#eceff4",
3731
+ "sidebar-primary": "#ff00c8",
3732
+ "sidebar-primary-foreground": "#ffffff",
3733
+ "sidebar-accent": "#00ffcc",
3734
+ "sidebar-accent-foreground": "#0c0c1d",
3735
+ "sidebar-border": "#2e2e5e",
3736
+ "sidebar-ring": "#ff00c8",
3737
+ },
3738
+ },
3739
+ radius: "0.5rem",
3740
+ font: {
3741
+ value: "outfit",
3742
+ fontFamily: '"Outfit", sans-serif',
3743
+ googleFontsUrl:
3744
+ "https://fonts.googleapis.com/css2?family=Outfit:wght@400;500;600;700&display=swap",
3745
+ },
3746
+ },
3747
+ {
3748
+ name: "pastel-dreams",
3749
+ label: "Pastel Dreams",
3750
+ colors: {
3751
+ light: {
3752
+ "background": "#f7f3f9",
3753
+ "foreground": "#374151",
3754
+ "card": "#ffffff",
3755
+ "card-foreground": "#374151",
3756
+ "popover": "#ffffff",
3757
+ "popover-foreground": "#374151",
3758
+ "primary": "#a78bfa",
3759
+ "primary-foreground": "#ffffff",
3760
+ "secondary": "#e9d8fd",
3761
+ "secondary-foreground": "#4b5563",
3762
+ "muted": "#f3e8ff",
3763
+ "muted-foreground": "#6b7280",
3764
+ "accent": "#f3e5f5",
3765
+ "accent-foreground": "#374151",
3766
+ "destructive": "#fca5a5",
3767
+ "destructive-foreground": "#ffffff",
3768
+ "border": "#e9d8fd",
3769
+ "input": "#e9d8fd",
3770
+ "ring": "#a78bfa",
3771
+ "chart-1": "#a78bfa",
3772
+ "chart-2": "#8b5cf6",
3773
+ "chart-3": "#7c3aed",
3774
+ "chart-4": "#6d28d9",
3775
+ "chart-5": "#5b21b6",
3776
+ "sidebar": "#e9d8fd",
3777
+ "sidebar-foreground": "#374151",
3778
+ "sidebar-primary": "#a78bfa",
3779
+ "sidebar-primary-foreground": "#ffffff",
3780
+ "sidebar-accent": "#f3e5f5",
3781
+ "sidebar-accent-foreground": "#374151",
3782
+ "sidebar-border": "#e9d8fd",
3783
+ "sidebar-ring": "#a78bfa",
3784
+ "font-sans": "Open Sans, sans-serif",
3785
+ "font-serif": "Source Serif 4, serif",
3786
+ "font-mono": "IBM Plex Mono, monospace",
3787
+ "shadow-color": "hsl(0 0% 0%)",
3788
+ "shadow-opacity": "0.08",
3789
+ "shadow-blur": "16px",
3790
+ "shadow-spread": "-4px",
3791
+ "shadow-offset-x": "0px",
3792
+ "shadow-offset-y": "8px",
3793
+ },
3794
+ dark: {
3795
+ "background": "#1c1917",
3796
+ "foreground": "#e0e7ff",
3797
+ "card": "#2d2535",
3798
+ "card-foreground": "#e0e7ff",
3799
+ "popover": "#2d2535",
3800
+ "popover-foreground": "#e0e7ff",
3801
+ "primary": "#c0aafd",
3802
+ "primary-foreground": "#1c1917",
3803
+ "secondary": "#3f324a",
3804
+ "secondary-foreground": "#d1d5db",
3805
+ "muted": "#20182b",
3806
+ "muted-foreground": "#9ca3af",
3807
+ "accent": "#4a3d5a",
3808
+ "accent-foreground": "#d1d5db",
3809
+ "destructive": "#fca5a5",
3810
+ "destructive-foreground": "#1c1917",
3811
+ "border": "#3f324a",
3812
+ "input": "#3f324a",
3813
+ "ring": "#c0aafd",
3814
+ "chart-1": "#c0aafd",
3815
+ "chart-2": "#a78bfa",
3816
+ "chart-3": "#8b5cf6",
3817
+ "chart-4": "#7c3aed",
3818
+ "chart-5": "#6d28d9",
3819
+ "sidebar": "#3f324a",
3820
+ "sidebar-foreground": "#e0e7ff",
3821
+ "sidebar-primary": "#c0aafd",
3822
+ "sidebar-primary-foreground": "#1c1917",
3823
+ "sidebar-accent": "#4a3d5a",
3824
+ "sidebar-accent-foreground": "#d1d5db",
3825
+ "sidebar-border": "#3f324a",
3826
+ "sidebar-ring": "#c0aafd",
3827
+ },
3828
+ },
3829
+ radius: "1.5rem",
3830
+ font: {
3831
+ value: "open-sans",
3832
+ fontFamily: '"Open Sans", sans-serif',
3833
+ googleFontsUrl:
3834
+ "https://fonts.googleapis.com/css2?family=Open+Sans:wght@400;500;600;700&display=swap",
3835
+ },
3836
+ },
3837
+ {
3838
+ name: "clean-slate",
3839
+ label: "Clean Slate",
3840
+ colors: {
3841
+ light: {
3842
+ "background": "#f8fafc",
3843
+ "foreground": "#1e293b",
3844
+ "card": "#ffffff",
3845
+ "card-foreground": "#1e293b",
3846
+ "popover": "#ffffff",
3847
+ "popover-foreground": "#1e293b",
3848
+ "primary": "#6366f1",
3849
+ "primary-foreground": "#ffffff",
3850
+ "secondary": "#e5e7eb",
3851
+ "secondary-foreground": "#374151",
3852
+ "muted": "#f3f4f6",
3853
+ "muted-foreground": "#6b7280",
3854
+ "accent": "#e0e7ff",
3855
+ "accent-foreground": "#374151",
3856
+ "destructive": "#ef4444",
3857
+ "destructive-foreground": "#ffffff",
3858
+ "border": "#d1d5db",
3859
+ "input": "#d1d5db",
3860
+ "ring": "#6366f1",
3861
+ "chart-1": "#6366f1",
3862
+ "chart-2": "#4f46e5",
3863
+ "chart-3": "#4338ca",
3864
+ "chart-4": "#3730a3",
3865
+ "chart-5": "#312e81",
3866
+ "sidebar": "#f3f4f6",
3867
+ "sidebar-foreground": "#1e293b",
3868
+ "sidebar-primary": "#6366f1",
3869
+ "sidebar-primary-foreground": "#ffffff",
3870
+ "sidebar-accent": "#e0e7ff",
3871
+ "sidebar-accent-foreground": "#374151",
3872
+ "sidebar-border": "#d1d5db",
3873
+ "sidebar-ring": "#6366f1",
3874
+ "font-sans": "Inter, sans-serif",
3875
+ "font-serif": "Merriweather, serif",
3876
+ "font-mono": "JetBrains Mono, monospace",
3877
+ "shadow-color": "hsl(0 0% 0%)",
3878
+ "shadow-opacity": "0.1",
3879
+ "shadow-blur": "8px",
3880
+ "shadow-spread": "-1px",
3881
+ "shadow-offset-x": "0px",
3882
+ "shadow-offset-y": "4px",
3883
+ },
3884
+ dark: {
3885
+ "background": "#0f172a",
3886
+ "foreground": "#e2e8f0",
3887
+ "card": "#1e293b",
3888
+ "card-foreground": "#e2e8f0",
3889
+ "popover": "#1e293b",
3890
+ "popover-foreground": "#e2e8f0",
3891
+ "primary": "#818cf8",
3892
+ "primary-foreground": "#0f172a",
3893
+ "secondary": "#2d3748",
3894
+ "secondary-foreground": "#d1d5db",
3895
+ "muted": "#152032",
3896
+ "muted-foreground": "#9ca3af",
3897
+ "accent": "#374151",
3898
+ "accent-foreground": "#d1d5db",
3899
+ "destructive": "#ef4444",
3900
+ "destructive-foreground": "#0f172a",
3901
+ "border": "#4b5563",
3902
+ "input": "#4b5563",
3903
+ "ring": "#818cf8",
3904
+ "chart-1": "#818cf8",
3905
+ "chart-2": "#6366f1",
3906
+ "chart-3": "#4f46e5",
3907
+ "chart-4": "#4338ca",
3908
+ "chart-5": "#3730a3",
3909
+ "sidebar": "#1e293b",
3910
+ "sidebar-foreground": "#e2e8f0",
3911
+ "sidebar-primary": "#818cf8",
3912
+ "sidebar-primary-foreground": "#0f172a",
3913
+ "sidebar-accent": "#374151",
3914
+ "sidebar-accent-foreground": "#d1d5db",
3915
+ "sidebar-border": "#4b5563",
3916
+ "sidebar-ring": "#818cf8",
3917
+ },
3918
+ },
3919
+ radius: "0.5rem",
3920
+ font: {
3921
+ value: "inter",
3922
+ fontFamily: '"Inter", sans-serif',
3923
+ googleFontsUrl:
3924
+ "https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&display=swap",
3925
+ },
3926
+ },
3927
+ {
3928
+ name: "caffeine",
3929
+ label: "Caffeine",
3930
+ colors: {
3931
+ light: {
3932
+ "background": "#f9f9f9",
3933
+ "foreground": "#202020",
3934
+ "card": "#fcfcfc",
3935
+ "card-foreground": "#202020",
3936
+ "popover": "#fcfcfc",
3937
+ "popover-foreground": "#202020",
3938
+ "primary": "#644a40",
3939
+ "primary-foreground": "#ffffff",
3940
+ "secondary": "#ffdfb5",
3941
+ "secondary-foreground": "#582d1d",
3942
+ "muted": "#efefef",
3943
+ "muted-foreground": "#646464",
3944
+ "accent": "#e8e8e8",
3945
+ "accent-foreground": "#202020",
3946
+ "destructive": "#e54d2e",
3947
+ "destructive-foreground": "#ffffff",
3948
+ "border": "#d8d8d8",
3949
+ "input": "#d8d8d8",
3950
+ "ring": "#644a40",
3951
+ "chart-1": "#644a40",
3952
+ "chart-2": "#ffdfb5",
3953
+ "chart-3": "#e8e8e8",
3954
+ "chart-4": "#ffe6c4",
3955
+ "chart-5": "#66493e",
3956
+ "sidebar": "#fbfbfb",
3957
+ "sidebar-foreground": "#252525",
3958
+ "sidebar-primary": "#343434",
3959
+ "sidebar-primary-foreground": "#fbfbfb",
3960
+ "sidebar-accent": "#f7f7f7",
3961
+ "sidebar-accent-foreground": "#343434",
3962
+ "sidebar-border": "#ebebeb",
3963
+ "sidebar-ring": "#b5b5b5",
3964
+ },
3965
+ dark: {
3966
+ "background": "#111111",
3967
+ "foreground": "#eeeeee",
3968
+ "card": "#191919",
3969
+ "card-foreground": "#eeeeee",
3970
+ "popover": "#191919",
3971
+ "popover-foreground": "#eeeeee",
3972
+ "primary": "#ffe0c2",
3973
+ "primary-foreground": "#081a1b",
3974
+ "secondary": "#393028",
3975
+ "secondary-foreground": "#ffe0c2",
3976
+ "muted": "#222222",
3977
+ "muted-foreground": "#b4b4b4",
3978
+ "accent": "#2a2a2a",
3979
+ "accent-foreground": "#eeeeee",
3980
+ "destructive": "#e54d2e",
3981
+ "destructive-foreground": "#ffffff",
3982
+ "border": "#201e18",
3983
+ "input": "#484848",
3984
+ "ring": "#ffe0c2",
3985
+ "chart-1": "#ffe0c2",
3986
+ "chart-2": "#393028",
3987
+ "chart-3": "#2a2a2a",
3988
+ "chart-4": "#42382e",
3989
+ "chart-5": "#ffe0c1",
3990
+ "sidebar": "#18181b",
3991
+ "sidebar-foreground": "#f4f4f5",
3992
+ "sidebar-primary": "#1d4ed8",
3993
+ "sidebar-primary-foreground": "#ffffff",
3994
+ "sidebar-accent": "#27272a",
3995
+ "sidebar-accent-foreground": "#f4f4f5",
3996
+ "sidebar-border": "#27272a",
3997
+ "sidebar-ring": "#d4d4d8",
3998
+ },
3999
+ },
4000
+ radius: "0.5rem",
4001
+ },
4002
+ {
4003
+ name: "ocean-breeze",
4004
+ label: "Ocean Breeze",
4005
+ colors: {
4006
+ light: {
4007
+ "background": "#f0f8ff",
4008
+ "foreground": "#374151",
4009
+ "card": "#ffffff",
4010
+ "card-foreground": "#374151",
4011
+ "popover": "#ffffff",
4012
+ "popover-foreground": "#374151",
4013
+ "primary": "#22c55e",
4014
+ "primary-foreground": "#ffffff",
4015
+ "secondary": "#e0f2fe",
4016
+ "secondary-foreground": "#4b5563",
4017
+ "muted": "#f3f4f6",
4018
+ "muted-foreground": "#6b7280",
4019
+ "accent": "#d1fae5",
4020
+ "accent-foreground": "#374151",
4021
+ "destructive": "#ef4444",
4022
+ "destructive-foreground": "#ffffff",
4023
+ "border": "#e5e7eb",
4024
+ "input": "#e5e7eb",
4025
+ "ring": "#22c55e",
4026
+ "chart-1": "#22c55e",
4027
+ "chart-2": "#10b981",
4028
+ "chart-3": "#059669",
4029
+ "chart-4": "#047857",
4030
+ "chart-5": "#065f46",
4031
+ "sidebar": "#e0f2fe",
4032
+ "sidebar-foreground": "#374151",
4033
+ "sidebar-primary": "#22c55e",
4034
+ "sidebar-primary-foreground": "#ffffff",
4035
+ "sidebar-accent": "#d1fae5",
4036
+ "sidebar-accent-foreground": "#374151",
4037
+ "sidebar-border": "#e5e7eb",
4038
+ "sidebar-ring": "#22c55e",
4039
+ "font-sans": "DM Sans, sans-serif",
4040
+ "font-serif": "Lora, serif",
4041
+ "font-mono": "IBM Plex Mono, monospace",
4042
+ "shadow-color": "hsl(0 0% 0%)",
4043
+ "shadow-opacity": "0.1",
4044
+ "shadow-blur": "8px",
4045
+ "shadow-spread": "-1px",
4046
+ "shadow-offset-x": "0px",
4047
+ "shadow-offset-y": "4px",
4048
+ },
4049
+ dark: {
4050
+ "background": "#0f172a",
4051
+ "foreground": "#d1d5db",
4052
+ "card": "#1e293b",
4053
+ "card-foreground": "#d1d5db",
4054
+ "popover": "#1e293b",
4055
+ "popover-foreground": "#d1d5db",
4056
+ "primary": "#34d399",
4057
+ "primary-foreground": "#0f172a",
4058
+ "secondary": "#2d3748",
4059
+ "secondary-foreground": "#a1a1aa",
4060
+ "muted": "#19212e",
4061
+ "muted-foreground": "#6b7280",
4062
+ "accent": "#374151",
4063
+ "accent-foreground": "#a1a1aa",
4064
+ "destructive": "#ef4444",
4065
+ "destructive-foreground": "#0f172a",
4066
+ "border": "#4b5563",
4067
+ "input": "#4b5563",
4068
+ "ring": "#34d399",
4069
+ "chart-1": "#34d399",
4070
+ "chart-2": "#2dd4bf",
4071
+ "chart-3": "#22c55e",
4072
+ "chart-4": "#10b981",
4073
+ "chart-5": "#059669",
4074
+ "sidebar": "#1e293b",
4075
+ "sidebar-foreground": "#d1d5db",
4076
+ "sidebar-primary": "#34d399",
4077
+ "sidebar-primary-foreground": "#0f172a",
4078
+ "sidebar-accent": "#374151",
4079
+ "sidebar-accent-foreground": "#a1a1aa",
4080
+ "sidebar-border": "#4b5563",
4081
+ "sidebar-ring": "#34d399",
4082
+ },
4083
+ },
4084
+ radius: "0.5rem",
4085
+ font: {
4086
+ value: "dm-sans",
4087
+ fontFamily: '"DM Sans", sans-serif',
4088
+ googleFontsUrl:
4089
+ "https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600;700&display=swap",
4090
+ },
4091
+ },
4092
+ {
4093
+ name: "retro-arcade",
4094
+ label: "Retro Arcade",
4095
+ colors: {
4096
+ light: {
4097
+ "background": "#fdf6e3",
4098
+ "foreground": "#073642",
4099
+ "card": "#eee8d5",
4100
+ "card-foreground": "#073642",
4101
+ "popover": "#eee8d5",
4102
+ "popover-foreground": "#073642",
4103
+ "primary": "#d33682",
4104
+ "primary-foreground": "#ffffff",
4105
+ "secondary": "#2aa198",
4106
+ "secondary-foreground": "#ffffff",
4107
+ "muted": "#93a1a1",
4108
+ "muted-foreground": "#073642",
4109
+ "accent": "#cb4b16",
4110
+ "accent-foreground": "#ffffff",
4111
+ "destructive": "#dc322f",
4112
+ "destructive-foreground": "#ffffff",
4113
+ "border": "#839496",
4114
+ "input": "#839496",
4115
+ "ring": "#d33682",
4116
+ "chart-1": "#268bd2",
4117
+ "chart-2": "#2aa198",
4118
+ "chart-3": "#d33682",
4119
+ "chart-4": "#cb4b16",
4120
+ "chart-5": "#dc322f",
4121
+ "sidebar": "#fdf6e3",
4122
+ "sidebar-foreground": "#073642",
4123
+ "sidebar-primary": "#d33682",
4124
+ "sidebar-primary-foreground": "#ffffff",
4125
+ "sidebar-accent": "#2aa198",
4126
+ "sidebar-accent-foreground": "#ffffff",
4127
+ "sidebar-border": "#839496",
4128
+ "sidebar-ring": "#d33682",
4129
+ "font-sans": "Outfit, sans-serif",
4130
+ "font-mono": "Space Mono, monospace",
4131
+ "shadow-color": "hsl(196 83% 10%)",
4132
+ "shadow-opacity": "0.15",
4133
+ "shadow-blur": "4px",
4134
+ "shadow-spread": "0px",
4135
+ "shadow-offset-x": "2px",
4136
+ "shadow-offset-y": "2px",
4137
+ },
4138
+ dark: {
4139
+ "background": "#002b36",
4140
+ "foreground": "#93a1a1",
4141
+ "card": "#073642",
4142
+ "card-foreground": "#93a1a1",
4143
+ "popover": "#073642",
4144
+ "popover-foreground": "#93a1a1",
4145
+ "primary": "#d33682",
4146
+ "primary-foreground": "#ffffff",
4147
+ "secondary": "#2aa198",
4148
+ "secondary-foreground": "#ffffff",
4149
+ "muted": "#586e75",
4150
+ "muted-foreground": "#93a1a1",
4151
+ "accent": "#cb4b16",
4152
+ "accent-foreground": "#ffffff",
4153
+ "destructive": "#dc322f",
4154
+ "destructive-foreground": "#ffffff",
4155
+ "border": "#586e75",
4156
+ "input": "#586e75",
4157
+ "ring": "#d33682",
4158
+ "chart-1": "#268bd2",
4159
+ "chart-2": "#2aa198",
4160
+ "chart-3": "#d33682",
4161
+ "chart-4": "#cb4b16",
4162
+ "chart-5": "#dc322f",
4163
+ "sidebar": "#002b36",
4164
+ "sidebar-foreground": "#93a1a1",
4165
+ "sidebar-primary": "#d33682",
4166
+ "sidebar-primary-foreground": "#ffffff",
4167
+ "sidebar-accent": "#2aa198",
4168
+ "sidebar-accent-foreground": "#ffffff",
4169
+ "sidebar-border": "#586e75",
4170
+ "sidebar-ring": "#d33682",
4171
+ },
4172
+ },
4173
+ radius: "0.25rem",
4174
+ font: {
4175
+ value: "outfit",
4176
+ fontFamily: '"Outfit", sans-serif',
4177
+ googleFontsUrl:
4178
+ "https://fonts.googleapis.com/css2?family=Outfit:wght@400;500;600;700&display=swap",
4179
+ },
4180
+ },
4181
+ {
4182
+ name: "midnight-bloom",
4183
+ label: "Midnight Bloom",
4184
+ colors: {
4185
+ light: {
4186
+ "background": "#f9f9f9",
4187
+ "foreground": "#333333",
4188
+ "card": "#ffffff",
4189
+ "card-foreground": "#333333",
4190
+ "popover": "#ffffff",
4191
+ "popover-foreground": "#333333",
4192
+ "primary": "#6c5ce7",
4193
+ "primary-foreground": "#ffffff",
4194
+ "secondary": "#a1c9f2",
4195
+ "secondary-foreground": "#333333",
4196
+ "muted": "#c9c4b5",
4197
+ "muted-foreground": "#6e6e6e",
4198
+ "accent": "#8b9467",
4199
+ "accent-foreground": "#ffffff",
4200
+ "destructive": "#ef4444",
4201
+ "destructive-foreground": "#ffffff",
4202
+ "border": "#d4d4d4",
4203
+ "input": "#d4d4d4",
4204
+ "ring": "#6c5ce7",
4205
+ "chart-1": "#6c5ce7",
4206
+ "chart-2": "#8e44ad",
4207
+ "chart-3": "#4b0082",
4208
+ "chart-4": "#6495ed",
4209
+ "chart-5": "#4682b4",
4210
+ "sidebar": "#f9f9f9",
4211
+ "sidebar-foreground": "#333333",
4212
+ "sidebar-primary": "#6c5ce7",
4213
+ "sidebar-primary-foreground": "#ffffff",
4214
+ "sidebar-accent": "#8b9467",
4215
+ "sidebar-accent-foreground": "#ffffff",
4216
+ "sidebar-border": "#d4d4d4",
4217
+ "sidebar-ring": "#6c5ce7",
4218
+ "font-sans": "Montserrat, sans-serif",
4219
+ "font-serif": "Playfair Display, serif",
4220
+ "font-mono": "Source Code Pro, monospace",
4221
+ "shadow-color": "hsl(0 0% 0%)",
4222
+ "shadow-opacity": "0.1",
4223
+ "shadow-blur": "10px",
4224
+ "shadow-spread": "-2px",
4225
+ "shadow-offset-x": "0px",
4226
+ "shadow-offset-y": "5px",
4227
+ },
4228
+ dark: {
4229
+ "background": "#1a1d23",
4230
+ "foreground": "#e5e5e5",
4231
+ "card": "#2f3436",
4232
+ "card-foreground": "#e5e5e5",
4233
+ "popover": "#2f3436",
4234
+ "popover-foreground": "#e5e5e5",
4235
+ "primary": "#6c5ce7",
4236
+ "primary-foreground": "#ffffff",
4237
+ "secondary": "#4b0082",
4238
+ "secondary-foreground": "#e5e5e5",
4239
+ "muted": "#444444",
4240
+ "muted-foreground": "#a3a3a3",
4241
+ "accent": "#6495ed",
4242
+ "accent-foreground": "#e5e5e5",
4243
+ "destructive": "#ef4444",
4244
+ "destructive-foreground": "#ffffff",
4245
+ "border": "#444444",
4246
+ "input": "#444444",
4247
+ "ring": "#6c5ce7",
4248
+ "chart-1": "#6c5ce7",
4249
+ "chart-2": "#8e44ad",
4250
+ "chart-3": "#4b0082",
4251
+ "chart-4": "#6495ed",
4252
+ "chart-5": "#4682b4",
4253
+ "sidebar": "#1a1d23",
4254
+ "sidebar-foreground": "#e5e5e5",
4255
+ "sidebar-primary": "#6c5ce7",
4256
+ "sidebar-primary-foreground": "#ffffff",
4257
+ "sidebar-accent": "#6495ed",
4258
+ "sidebar-accent-foreground": "#e5e5e5",
4259
+ "sidebar-border": "#444444",
4260
+ "sidebar-ring": "#6c5ce7",
4261
+ },
4262
+ },
4263
+ radius: "0.5rem",
4264
+ font: {
4265
+ value: "montserrat",
4266
+ fontFamily: '"Montserrat", sans-serif',
4267
+ googleFontsUrl:
4268
+ "https://fonts.googleapis.com/css2?family=Montserrat:wght@400;500;600;700&display=swap",
4269
+ },
4270
+ },
4271
+ {
4272
+ name: "candyland",
4273
+ label: "Candyland",
4274
+ colors: {
4275
+ light: {
4276
+ "background": "#f7f9fa",
4277
+ "foreground": "#333333",
4278
+ "card": "#ffffff",
4279
+ "card-foreground": "#333333",
4280
+ "popover": "#ffffff",
4281
+ "popover-foreground": "#333333",
4282
+ "primary": "#ffc0cb",
4283
+ "primary-foreground": "#000000",
4284
+ "secondary": "#87ceeb",
4285
+ "secondary-foreground": "#000000",
4286
+ "muted": "#ddd9c4",
4287
+ "muted-foreground": "#6e6e6e",
4288
+ "accent": "#ffff00",
4289
+ "accent-foreground": "#000000",
4290
+ "destructive": "#ef4444",
4291
+ "destructive-foreground": "#ffffff",
4292
+ "border": "#d4d4d4",
4293
+ "input": "#d4d4d4",
4294
+ "ring": "#ffc0cb",
4295
+ "chart-1": "#ffc0cb",
4296
+ "chart-2": "#87ceeb",
4297
+ "chart-3": "#ffff00",
4298
+ "chart-4": "#ff99cc",
4299
+ "chart-5": "#33cc33",
4300
+ "sidebar": "#f7f9fa",
4301
+ "sidebar-foreground": "#333333",
4302
+ "sidebar-primary": "#ffc0cb",
4303
+ "sidebar-primary-foreground": "#000000",
4304
+ "sidebar-accent": "#ffff00",
4305
+ "sidebar-accent-foreground": "#000000",
4306
+ "sidebar-border": "#d4d4d4",
4307
+ "sidebar-ring": "#ffc0cb",
4308
+ "font-sans": "Poppins, sans-serif",
4309
+ "font-mono": "Roboto Mono, monospace",
4310
+ },
4311
+ dark: {
4312
+ "background": "#1a1d23",
4313
+ "foreground": "#e5e5e5",
4314
+ "card": "#2f3436",
4315
+ "card-foreground": "#e5e5e5",
4316
+ "popover": "#2f3436",
4317
+ "popover-foreground": "#e5e5e5",
4318
+ "primary": "#ff99cc",
4319
+ "primary-foreground": "#000000",
4320
+ "secondary": "#33cc33",
4321
+ "secondary-foreground": "#000000",
4322
+ "muted": "#444444",
4323
+ "muted-foreground": "#a3a3a3",
4324
+ "accent": "#87ceeb",
4325
+ "accent-foreground": "#000000",
4326
+ "destructive": "#ef4444",
4327
+ "destructive-foreground": "#ffffff",
4328
+ "border": "#444444",
4329
+ "input": "#444444",
4330
+ "ring": "#ff99cc",
4331
+ "chart-1": "#ff99cc",
4332
+ "chart-2": "#33cc33",
4333
+ "chart-3": "#87ceeb",
4334
+ "chart-4": "#ffff00",
4335
+ "chart-5": "#ffcc00",
4336
+ "sidebar": "#1a1d23",
4337
+ "sidebar-foreground": "#e5e5e5",
4338
+ "sidebar-primary": "#ff99cc",
4339
+ "sidebar-primary-foreground": "#000000",
4340
+ "sidebar-accent": "#87ceeb",
4341
+ "sidebar-accent-foreground": "#000000",
4342
+ "sidebar-border": "#444444",
4343
+ "sidebar-ring": "#ff99cc",
4344
+ },
4345
+ },
4346
+ radius: "0.5rem",
4347
+ font: {
4348
+ value: "poppins",
4349
+ fontFamily: '"Poppins", sans-serif',
4350
+ googleFontsUrl:
4351
+ "https://fonts.googleapis.com/css2?family=Poppins:wght@400;500;600;700&display=swap",
4352
+ },
4353
+ },
4354
+ {
4355
+ name: "northern-lights",
4356
+ label: "Northern Lights",
4357
+ colors: {
4358
+ light: {
4359
+ "background": "#f9f9fa",
4360
+ "foreground": "#333333",
4361
+ "card": "#ffffff",
4362
+ "card-foreground": "#333333",
4363
+ "popover": "#ffffff",
4364
+ "popover-foreground": "#333333",
4365
+ "primary": "#34a85a",
4366
+ "primary-foreground": "#ffffff",
4367
+ "secondary": "#6495ed",
4368
+ "secondary-foreground": "#ffffff",
4369
+ "muted": "#ddd9c4",
4370
+ "muted-foreground": "#6e6e6e",
4371
+ "accent": "#66d9ef",
4372
+ "accent-foreground": "#333333",
4373
+ "destructive": "#ef4444",
4374
+ "destructive-foreground": "#ffffff",
4375
+ "border": "#d4d4d4",
4376
+ "input": "#d4d4d4",
4377
+ "ring": "#34a85a",
4378
+ "chart-1": "#34a85a",
4379
+ "chart-2": "#6495ed",
4380
+ "chart-3": "#66d9ef",
4381
+ "chart-4": "#4682b4",
4382
+ "chart-5": "#1a9641",
4383
+ "sidebar": "#f9f9fa",
4384
+ "sidebar-foreground": "#333333",
4385
+ "sidebar-primary": "#34a85a",
4386
+ "sidebar-primary-foreground": "#ffffff",
4387
+ "sidebar-accent": "#66d9ef",
4388
+ "sidebar-accent-foreground": "#333333",
4389
+ "sidebar-border": "#d4d4d4",
4390
+ "sidebar-ring": "#34a85a",
4391
+ "font-sans": "Plus Jakarta Sans, sans-serif",
4392
+ "font-serif": "Source Serif 4, serif",
4393
+ "font-mono": "JetBrains Mono, monospace",
4394
+ },
4395
+ dark: {
4396
+ "background": "#1a1d23",
4397
+ "foreground": "#e5e5e5",
4398
+ "card": "#2f3436",
4399
+ "card-foreground": "#e5e5e5",
4400
+ "popover": "#2f3436",
4401
+ "popover-foreground": "#e5e5e5",
4402
+ "primary": "#34a85a",
4403
+ "primary-foreground": "#ffffff",
4404
+ "secondary": "#4682b4",
4405
+ "secondary-foreground": "#e5e5e5",
4406
+ "muted": "#444444",
4407
+ "muted-foreground": "#a3a3a3",
4408
+ "accent": "#6495ed",
4409
+ "accent-foreground": "#e5e5e5",
4410
+ "destructive": "#ef4444",
4411
+ "destructive-foreground": "#ffffff",
4412
+ "border": "#444444",
4413
+ "input": "#444444",
4414
+ "ring": "#34a85a",
4415
+ "chart-1": "#34a85a",
4416
+ "chart-2": "#4682b4",
4417
+ "chart-3": "#6495ed",
4418
+ "chart-4": "#66d9ef",
4419
+ "chart-5": "#1a9641",
4420
+ "sidebar": "#1a1d23",
4421
+ "sidebar-foreground": "#e5e5e5",
4422
+ "sidebar-primary": "#34a85a",
4423
+ "sidebar-primary-foreground": "#ffffff",
4424
+ "sidebar-accent": "#6495ed",
4425
+ "sidebar-accent-foreground": "#e5e5e5",
4426
+ "sidebar-border": "#444444",
4427
+ "sidebar-ring": "#34a85a",
4428
+ },
4429
+ },
4430
+ radius: "0.5rem",
4431
+ font: {
4432
+ value: "plus-jakarta-sans",
4433
+ fontFamily: '"Plus Jakarta Sans", sans-serif',
4434
+ googleFontsUrl:
4435
+ "https://fonts.googleapis.com/css2?family=Plus+Jakarta+Sans:wght@400;500;600;700&display=swap",
4436
+ },
4437
+ },
4438
+ {
4439
+ name: "vintage-paper",
4440
+ label: "Vintage Paper",
4441
+ colors: {
4442
+ light: {
4443
+ "background": "#f5f1e6",
4444
+ "foreground": "#4a3f35",
4445
+ "card": "#fffcf5",
4446
+ "card-foreground": "#4a3f35",
4447
+ "popover": "#fffcf5",
4448
+ "popover-foreground": "#4a3f35",
4449
+ "primary": "#a67c52",
4450
+ "primary-foreground": "#ffffff",
4451
+ "secondary": "#e2d8c3",
4452
+ "secondary-foreground": "#5c4d3f",
4453
+ "muted": "#ece5d8",
4454
+ "muted-foreground": "#7d6b56",
4455
+ "accent": "#d4c8aa",
4456
+ "accent-foreground": "#4a3f35",
4457
+ "destructive": "#b54a35",
4458
+ "destructive-foreground": "#ffffff",
4459
+ "border": "#dbd0ba",
4460
+ "input": "#dbd0ba",
4461
+ "ring": "#a67c52",
4462
+ "chart-1": "#a67c52",
4463
+ "chart-2": "#8d6e4c",
4464
+ "chart-3": "#735a3a",
4465
+ "chart-4": "#b3906f",
4466
+ "chart-5": "#c0a080",
4467
+ "sidebar": "#ece5d8",
4468
+ "sidebar-foreground": "#4a3f35",
4469
+ "sidebar-primary": "#a67c52",
4470
+ "sidebar-primary-foreground": "#ffffff",
4471
+ "sidebar-accent": "#d4c8aa",
4472
+ "sidebar-accent-foreground": "#4a3f35",
4473
+ "sidebar-border": "#dbd0ba",
4474
+ "sidebar-ring": "#a67c52",
4475
+ "font-sans": "Libre Baskerville, serif",
4476
+ "font-serif": "Lora, serif",
4477
+ "font-mono": "IBM Plex Mono, monospace",
4478
+ "shadow-color": "hsl(28 13% 20%)",
4479
+ "shadow-opacity": "0.12",
4480
+ "shadow-blur": "5px",
4481
+ "shadow-spread": "0px",
4482
+ "shadow-offset-x": "2px",
4483
+ "shadow-offset-y": "3px",
4484
+ },
4485
+ dark: {
4486
+ "background": "#2d2621",
4487
+ "foreground": "#ece5d8",
4488
+ "card": "#3a322c",
4489
+ "card-foreground": "#ece5d8",
4490
+ "popover": "#3a322c",
4491
+ "popover-foreground": "#ece5d8",
4492
+ "primary": "#c0a080",
4493
+ "primary-foreground": "#2d2621",
4494
+ "secondary": "#4a4039",
4495
+ "secondary-foreground": "#ece5d8",
4496
+ "muted": "#312b26",
4497
+ "muted-foreground": "#c5bcac",
4498
+ "accent": "#59493e",
4499
+ "accent-foreground": "#ece5d8",
4500
+ "destructive": "#b54a35",
4501
+ "destructive-foreground": "#ffffff",
4502
+ "border": "#4a4039",
4503
+ "input": "#4a4039",
4504
+ "ring": "#c0a080",
4505
+ "chart-1": "#c0a080",
4506
+ "chart-2": "#b3906f",
4507
+ "chart-3": "#a67c52",
4508
+ "chart-4": "#8d6e4c",
4509
+ "chart-5": "#735a3a",
4510
+ "sidebar": "#2d2621",
4511
+ "sidebar-foreground": "#ece5d8",
4512
+ "sidebar-primary": "#c0a080",
4513
+ "sidebar-primary-foreground": "#2d2621",
4514
+ "sidebar-accent": "#59493e",
4515
+ "sidebar-accent-foreground": "#ece5d8",
4516
+ "sidebar-border": "#4a4039",
4517
+ "sidebar-ring": "#c0a080",
4518
+ },
4519
+ },
4520
+ radius: "0.25rem",
4521
+ font: {
4522
+ value: "libre-baskerville",
4523
+ fontFamily: '"Libre Baskerville", sans-serif',
4524
+ googleFontsUrl:
4525
+ "https://fonts.googleapis.com/css2?family=Libre+Baskerville:wght@400;700&display=swap",
4526
+ },
4527
+ },
4528
+ {
4529
+ name: "sunset-horizon",
4530
+ label: "Sunset Horizon",
4531
+ colors: {
4532
+ light: {
4533
+ "background": "#fff9f5",
4534
+ "foreground": "#3d3436",
4535
+ "card": "#ffffff",
4536
+ "card-foreground": "#3d3436",
4537
+ "popover": "#ffffff",
4538
+ "popover-foreground": "#3d3436",
4539
+ "primary": "#ff7e5f",
4540
+ "primary-foreground": "#ffffff",
4541
+ "secondary": "#ffedea",
4542
+ "secondary-foreground": "#b35340",
4543
+ "muted": "#fff0eb",
4544
+ "muted-foreground": "#78716C",
4545
+ "accent": "#feb47b",
4546
+ "accent-foreground": "#3d3436",
4547
+ "destructive": "#e63946",
4548
+ "destructive-foreground": "#ffffff",
4549
+ "border": "#ffe0d6",
4550
+ "input": "#ffe0d6",
4551
+ "ring": "#ff7e5f",
4552
+ "chart-1": "#ff7e5f",
4553
+ "chart-2": "#feb47b",
4554
+ "chart-3": "#ffcaa7",
4555
+ "chart-4": "#ffad8f",
4556
+ "chart-5": "#ce6a57",
4557
+ "sidebar": "#fff0eb",
4558
+ "sidebar-foreground": "#3d3436",
4559
+ "sidebar-primary": "#ff7e5f",
4560
+ "sidebar-primary-foreground": "#ffffff",
4561
+ "sidebar-accent": "#feb47b",
4562
+ "sidebar-accent-foreground": "#3d3436",
4563
+ "sidebar-border": "#ffe0d6",
4564
+ "sidebar-ring": "#ff7e5f",
4565
+ "font-sans": "Montserrat, sans-serif",
4566
+ "font-serif": "Merriweather, serif",
4567
+ "font-mono": "Ubuntu Mono, monospace",
4568
+ "shadow-color": "hsl(0 0% 0%)",
4569
+ "shadow-opacity": "0.09",
4570
+ "shadow-blur": "12px",
4571
+ "shadow-spread": "-3px",
4572
+ "shadow-offset-x": "0px",
4573
+ "shadow-offset-y": "6px",
4574
+ },
4575
+ dark: {
4576
+ "background": "#2a2024",
4577
+ "foreground": "#f2e9e4",
4578
+ "card": "#392f35",
4579
+ "card-foreground": "#f2e9e4",
4580
+ "popover": "#392f35",
4581
+ "popover-foreground": "#f2e9e4",
4582
+ "primary": "#ff7e5f",
4583
+ "primary-foreground": "#ffffff",
4584
+ "secondary": "#463a41",
4585
+ "secondary-foreground": "#f2e9e4",
4586
+ "muted": "#30272c",
4587
+ "muted-foreground": "#d7c6bc",
4588
+ "accent": "#feb47b",
4589
+ "accent-foreground": "#2a2024",
4590
+ "destructive": "#e63946",
4591
+ "destructive-foreground": "#ffffff",
4592
+ "border": "#463a41",
4593
+ "input": "#463a41",
4594
+ "ring": "#ff7e5f",
4595
+ "chart-1": "#ff7e5f",
4596
+ "chart-2": "#feb47b",
4597
+ "chart-3": "#ffcaa7",
4598
+ "chart-4": "#ffad8f",
4599
+ "chart-5": "#ce6a57",
4600
+ "sidebar": "#2a2024",
4601
+ "sidebar-foreground": "#f2e9e4",
4602
+ "sidebar-primary": "#ff7e5f",
4603
+ "sidebar-primary-foreground": "#ffffff",
4604
+ "sidebar-accent": "#feb47b",
4605
+ "sidebar-accent-foreground": "#2a2024",
4606
+ "sidebar-border": "#463a41",
4607
+ "sidebar-ring": "#ff7e5f",
4608
+ },
4609
+ },
4610
+ radius: "0.625rem",
4611
+ font: {
4612
+ value: "montserrat",
4613
+ fontFamily: '"Montserrat", sans-serif',
4614
+ googleFontsUrl:
4615
+ "https://fonts.googleapis.com/css2?family=Montserrat:wght@400;500;600;700&display=swap",
4616
+ },
4617
+ },
4618
+ {
4619
+ name: "starry-night",
4620
+ label: "Starry Night",
4621
+ colors: {
4622
+ light: {
4623
+ "background": "#f5f7fa",
4624
+ "foreground": "#1a2238",
4625
+ "card": "#e3eaf2",
4626
+ "card-foreground": "#1a2238",
4627
+ "popover": "#fffbe6",
4628
+ "popover-foreground": "#1a2238",
4629
+ "primary": "#3a5ba0",
4630
+ "primary-foreground": "#fffbe6",
4631
+ "secondary": "#f7c873",
4632
+ "secondary-foreground": "#1a2238",
4633
+ "muted": "#e5e5df",
4634
+ "muted-foreground": "#3a5ba0",
4635
+ "accent": "#6ea3c1",
4636
+ "accent-foreground": "#fffbe6",
4637
+ "destructive": "#2d1e2f",
4638
+ "destructive-foreground": "#fffbe6",
4639
+ "border": "#b0b8c1",
4640
+ "input": "#6ea3c1",
4641
+ "ring": "#f7c873",
4642
+ "chart-1": "#3a5ba0",
4643
+ "chart-2": "#f7c873",
4644
+ "chart-3": "#6ea3c1",
4645
+ "chart-4": "#b0b8c1",
4646
+ "chart-5": "#2d1e2f",
4647
+ "sidebar": "#e3eaf2",
4648
+ "sidebar-foreground": "#1a2238",
4649
+ "sidebar-primary": "#3a5ba0",
4650
+ "sidebar-primary-foreground": "#fffbe6",
4651
+ "sidebar-accent": "#f7c873",
4652
+ "sidebar-accent-foreground": "#1a2238",
4653
+ "sidebar-border": "#b0b8c1",
4654
+ "sidebar-ring": "#f7c873",
4655
+ "font-sans": "Libre Baskerville, serif",
4656
+ },
4657
+ dark: {
4658
+ "background": "#181a24",
4659
+ "foreground": "#e6eaf3",
4660
+ "card": "#23243a",
4661
+ "card-foreground": "#e6eaf3",
4662
+ "popover": "#23243a",
4663
+ "popover-foreground": "#ffe066",
4664
+ "primary": "#3a5ba0",
4665
+ "primary-foreground": "#ffe066",
4666
+ "secondary": "#ffe066",
4667
+ "secondary-foreground": "#23243a",
4668
+ "muted": "#1d1e2f",
4669
+ "muted-foreground": "#7a88a1",
4670
+ "accent": "#bccdf0",
4671
+ "accent-foreground": "#181a24",
4672
+ "destructive": "#a04a6c",
4673
+ "destructive-foreground": "#ffe066",
4674
+ "border": "#2d2e3e",
4675
+ "input": "#3a5ba0",
4676
+ "ring": "#ffe066",
4677
+ "chart-1": "#3a5ba0",
4678
+ "chart-2": "#ffe066",
4679
+ "chart-3": "#6ea3c1",
4680
+ "chart-4": "#7a88a1",
4681
+ "chart-5": "#a04a6c",
4682
+ "sidebar": "#23243a",
4683
+ "sidebar-foreground": "#e6eaf3",
4684
+ "sidebar-primary": "#3a5ba0",
4685
+ "sidebar-primary-foreground": "#ffe066",
4686
+ "sidebar-accent": "#ffe066",
4687
+ "sidebar-accent-foreground": "#23243a",
4688
+ "sidebar-border": "#2d2e3e",
4689
+ "sidebar-ring": "#ffe066",
4690
+ },
4691
+ },
4692
+ radius: "0.5rem",
4693
+ font: {
4694
+ value: "libre-baskerville",
4695
+ fontFamily: '"Libre Baskerville", sans-serif',
4696
+ googleFontsUrl:
4697
+ "https://fonts.googleapis.com/css2?family=Libre+Baskerville:wght@400;700&display=swap",
4698
+ },
4699
+ },
4700
+ {
4701
+ name: "darkmatter",
4702
+ label: "Darkmatter",
4703
+ colors: {
4704
+ light: {
4705
+ "background": "#ffffff",
4706
+ "foreground": "#111827",
4707
+ "card": "#ffffff",
4708
+ "card-foreground": "#111827",
4709
+ "popover": "#ffffff",
4710
+ "popover-foreground": "#111827",
4711
+ "primary": "#d87943",
4712
+ "primary-foreground": "#ffffff",
4713
+ "secondary": "#527575",
4714
+ "secondary-foreground": "#ffffff",
4715
+ "muted": "#f3f4f6",
4716
+ "muted-foreground": "#6b7280",
4717
+ "accent": "#eeeeee",
4718
+ "accent-foreground": "#111827",
4719
+ "destructive": "#ef4444",
4720
+ "destructive-foreground": "#fafafa",
4721
+ "border": "#e5e7eb",
4722
+ "input": "#e5e7eb",
4723
+ "ring": "#d87943",
4724
+ "chart-1": "#5f8787",
4725
+ "chart-2": "#e78a53",
4726
+ "chart-3": "#fbcb97",
4727
+ "chart-4": "#888888",
4728
+ "chart-5": "#999999",
4729
+ "sidebar": "#f3f4f6",
4730
+ "sidebar-foreground": "#111827",
4731
+ "sidebar-primary": "#d87943",
4732
+ "sidebar-primary-foreground": "#ffffff",
4733
+ "sidebar-accent": "#ffffff",
4734
+ "sidebar-accent-foreground": "#111827",
4735
+ "sidebar-border": "#e5e7eb",
4736
+ "sidebar-ring": "#d87943",
4737
+ "font-sans": "Geist Mono, ui-monospace, monospace",
4738
+ "font-serif": "serif",
4739
+ "font-mono": "JetBrains Mono, monospace",
4740
+ "shadow-color": "#000000",
4741
+ "shadow-opacity": "0.05",
4742
+ "shadow-blur": "4px",
4743
+ "shadow-spread": "0px",
4744
+ "shadow-offset-x": "0px",
4745
+ "shadow-offset-y": "1px",
4746
+ "letter-spacing": "0rem",
4747
+ "spacing": "0.25rem",
4748
+ },
4749
+ dark: {
4750
+ "background": "#121113",
4751
+ "foreground": "#c1c1c1",
4752
+ "card": "#121212",
4753
+ "card-foreground": "#c1c1c1",
4754
+ "popover": "#121113",
4755
+ "popover-foreground": "#c1c1c1",
4756
+ "primary": "#e78a53",
4757
+ "primary-foreground": "#121113",
4758
+ "secondary": "#5f8787",
4759
+ "secondary-foreground": "#121113",
4760
+ "muted": "#222222",
4761
+ "muted-foreground": "#888888",
4762
+ "accent": "#333333",
4763
+ "accent-foreground": "#c1c1c1",
4764
+ "destructive": "#5f8787",
4765
+ "destructive-foreground": "#121113",
4766
+ "border": "#222222",
4767
+ "input": "#222222",
4768
+ "ring": "#e78a53",
4769
+ "chart-1": "#5f8787",
4770
+ "chart-2": "#e78a53",
4771
+ "chart-3": "#fbcb97",
4772
+ "chart-4": "#888888",
4773
+ "chart-5": "#999999",
4774
+ "sidebar": "#121212",
4775
+ "sidebar-foreground": "#c1c1c1",
4776
+ "sidebar-primary": "#e78a53",
4777
+ "sidebar-primary-foreground": "#121113",
4778
+ "sidebar-accent": "#333333",
4779
+ "sidebar-accent-foreground": "#c1c1c1",
4780
+ "sidebar-border": "#222222",
4781
+ "sidebar-ring": "#e78a53",
4782
+ "shadow-color": "#000000",
4783
+ },
4784
+ },
4785
+ radius: "0.75rem",
4786
+ },
4787
+ {
4788
+ name: "mono",
4789
+ label: "Mono",
4790
+ colors: {
4791
+ light: {
4792
+ "background": "#ffffff",
4793
+ "foreground": "#0a0a0a",
4794
+ "card": "#ffffff",
4795
+ "card-foreground": "#0a0a0a",
4796
+ "popover": "#ffffff",
4797
+ "popover-foreground": "#0a0a0a",
4798
+ "primary": "#737373",
4799
+ "primary-foreground": "#fafafa",
4800
+ "secondary": "#f5f5f5",
4801
+ "secondary-foreground": "#171717",
4802
+ "muted": "#f5f5f5",
4803
+ "muted-foreground": "#717171",
4804
+ "accent": "#f5f5f5",
4805
+ "accent-foreground": "#171717",
4806
+ "destructive": "#e7000b",
4807
+ "destructive-foreground": "#f5f5f5",
4808
+ "border": "#e5e5e5",
4809
+ "input": "#e5e5e5",
4810
+ "ring": "#a1a1a1",
4811
+ "chart-1": "#737373",
4812
+ "chart-2": "#737373",
4813
+ "chart-3": "#737373",
4814
+ "chart-4": "#737373",
4815
+ "chart-5": "#737373",
4816
+ "sidebar": "#fafafa",
4817
+ "sidebar-foreground": "#0a0a0a",
4818
+ "sidebar-primary": "#171717",
4819
+ "sidebar-primary-foreground": "#fafafa",
4820
+ "sidebar-accent": "#f5f5f5",
4821
+ "sidebar-accent-foreground": "#171717",
4822
+ "sidebar-border": "#e5e5e5",
4823
+ "sidebar-ring": "#a1a1a1",
4824
+ "font-sans": "Geist Mono, monospace",
4825
+ "font-serif": "Geist Mono, monospace",
4826
+ "font-mono": "Geist Mono, monospace",
4827
+ "shadow-color": "hsl(0 0% 0%)",
4828
+ "shadow-opacity": "0",
4829
+ "shadow-blur": "0px",
4830
+ "shadow-spread": "0px",
4831
+ "shadow-offset-x": "0px",
4832
+ "shadow-offset-y": "1px",
4833
+ },
4834
+ dark: {
4835
+ "background": "#0a0a0a",
4836
+ "foreground": "#fafafa",
4837
+ "card": "#191919",
4838
+ "card-foreground": "#fafafa",
4839
+ "popover": "#262626",
4840
+ "popover-foreground": "#fafafa",
4841
+ "primary": "#737373",
4842
+ "primary-foreground": "#fafafa",
4843
+ "secondary": "#262626",
4844
+ "secondary-foreground": "#fafafa",
4845
+ "muted": "#262626",
4846
+ "muted-foreground": "#a1a1a1",
4847
+ "accent": "#404040",
4848
+ "accent-foreground": "#fafafa",
4849
+ "destructive": "#ff6467",
4850
+ "destructive-foreground": "#262626",
4851
+ "border": "#383838",
4852
+ "input": "#525252",
4853
+ "ring": "#737373",
4854
+ "chart-1": "#737373",
4855
+ "chart-2": "#737373",
4856
+ "chart-3": "#737373",
4857
+ "chart-4": "#737373",
4858
+ "chart-5": "#737373",
4859
+ "sidebar": "#171717",
4860
+ "sidebar-foreground": "#fafafa",
4861
+ "sidebar-primary": "#fafafa",
4862
+ "sidebar-primary-foreground": "#171717",
4863
+ "sidebar-accent": "#262626",
4864
+ "sidebar-accent-foreground": "#fafafa",
4865
+ "sidebar-border": "#ffffff",
4866
+ "sidebar-ring": "#525252",
4867
+ },
4868
+ },
4869
+ radius: "0rem",
4870
+ },
4871
+ {
4872
+ name: "soft-pop",
4873
+ label: "Soft Pop",
4874
+ colors: {
4875
+ light: {
4876
+ "background": "#f7f9f3",
4877
+ "foreground": "#000000",
4878
+ "card": "#ffffff",
4879
+ "card-foreground": "#000000",
4880
+ "popover": "#ffffff",
4881
+ "popover-foreground": "#000000",
4882
+ "primary": "#4f46e5",
4883
+ "primary-foreground": "#ffffff",
4884
+ "secondary": "#14b8a6",
4885
+ "secondary-foreground": "#ffffff",
4886
+ "muted": "#f0f0f0",
4887
+ "muted-foreground": "#333333",
4888
+ "accent": "#f59e0b",
4889
+ "accent-foreground": "#000000",
4890
+ "destructive": "#ef4444",
4891
+ "destructive-foreground": "#ffffff",
4892
+ "border": "#000000",
4893
+ "input": "#737373",
4894
+ "ring": "#a5b4fc",
4895
+ "chart-1": "#4f46e5",
4896
+ "chart-2": "#14b8a6",
4897
+ "chart-3": "#f59e0b",
4898
+ "chart-4": "#ec4899",
4899
+ "chart-5": "#22c55e",
4900
+ "sidebar": "#f7f9f3",
4901
+ "sidebar-foreground": "#000000",
4902
+ "sidebar-primary": "#4f46e5",
4903
+ "sidebar-primary-foreground": "#ffffff",
4904
+ "sidebar-accent": "#f59e0b",
4905
+ "sidebar-accent-foreground": "#000000",
4906
+ "sidebar-border": "#000000",
4907
+ "sidebar-ring": "#a5b4fc",
4908
+ "font-sans": "DM Sans, sans-serif",
4909
+ "font-serif": "DM Sans, sans-serif",
4910
+ "font-mono": "Space Mono, monospace",
4911
+ "shadow-color": "#1a1a1a",
4912
+ "shadow-opacity": "0.05",
4913
+ "shadow-blur": "0px",
4914
+ "shadow-spread": "0px",
4915
+ "shadow-offset-x": "0px",
4916
+ "shadow-offset-y": "0px",
4917
+ "letter-spacing": "normal",
4918
+ "spacing": "0.25rem",
4919
+ },
4920
+ dark: {
4921
+ "background": "#000000",
4922
+ "foreground": "#ffffff",
4923
+ "card": "#1a212b",
4924
+ "card-foreground": "#ffffff",
4925
+ "popover": "#1a212b",
4926
+ "popover-foreground": "#ffffff",
4927
+ "primary": "#818cf8",
4928
+ "primary-foreground": "#000000",
4929
+ "secondary": "#2dd4bf",
4930
+ "secondary-foreground": "#000000",
4931
+ "muted": "#333333",
4932
+ "muted-foreground": "#cccccc",
4933
+ "accent": "#fcd34d",
4934
+ "accent-foreground": "#000000",
4935
+ "destructive": "#f87171",
4936
+ "destructive-foreground": "#000000",
4937
+ "border": "#545454",
4938
+ "input": "#ffffff",
4939
+ "ring": "#818cf8",
4940
+ "chart-1": "#818cf8",
4941
+ "chart-2": "#2dd4bf",
4942
+ "chart-3": "#fcd34d",
4943
+ "chart-4": "#f472b6",
4944
+ "chart-5": "#4ade80",
4945
+ "sidebar": "#000000",
4946
+ "sidebar-foreground": "#ffffff",
4947
+ "sidebar-primary": "#818cf8",
4948
+ "sidebar-primary-foreground": "#000000",
4949
+ "sidebar-accent": "#fcd34d",
4950
+ "sidebar-accent-foreground": "#000000",
4951
+ "sidebar-border": "#ffffff",
4952
+ "sidebar-ring": "#818cf8",
4953
+ "font-sans": "DM Sans, sans-serif",
4954
+ "font-serif": "DM Sans, sans-serif",
4955
+ "font-mono": "Space Mono, monospace",
4956
+ "shadow-color": "#1a1a1a",
4957
+ "shadow-opacity": "0.05",
4958
+ "shadow-blur": "0px",
4959
+ "shadow-spread": "0px",
4960
+ "shadow-offset-x": "0px",
4961
+ "shadow-offset-y": "0px",
4962
+ "letter-spacing": "normal",
4963
+ "spacing": "0.25rem",
4964
+ },
4965
+ },
4966
+ radius: "1rem",
4967
+ font: {
4968
+ value: "dm-sans",
4969
+ fontFamily: '"DM Sans", sans-serif',
4970
+ googleFontsUrl:
4971
+ "https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600;700&display=swap",
4972
+ },
4973
+ },
4974
+ {
4975
+ name: "sage-garden",
4976
+ label: "Sage Garden",
4977
+ colors: {
4978
+ light: {
4979
+ "background": "#f8f7f4",
4980
+ "foreground": "#1a1f2e",
4981
+ "card": "#ffffff",
4982
+ "card-foreground": "#1a1f2e",
4983
+ "popover": "#ffffff",
4984
+ "popover-foreground": "#1a1f2e",
4985
+ "primary": "#7c9082",
4986
+ "primary-foreground": "#ffffff",
4987
+ "secondary": "#ced4bf",
4988
+ "secondary-foreground": "#1a1f2e",
4989
+ "muted": "#e8e6e1",
4990
+ "muted-foreground": "#6b7280",
4991
+ "accent": "#bfc9bb",
4992
+ "accent-foreground": "#1a1f2e",
4993
+ "destructive": "#c73e3a",
4994
+ "destructive-foreground": "#ffffff",
4995
+ "border": "#e8e6e1",
4996
+ "input": "#ffffff",
4997
+ "ring": "#7c9082",
4998
+ "chart-1": "#7c9082",
4999
+ "chart-2": "#a0aa88",
5000
+ "chart-3": "#8b9d83",
5001
+ "chart-4": "#6b7280",
5002
+ "chart-5": "#e8e6e1",
5003
+ "sidebar": "#fafaf8",
5004
+ "sidebar-foreground": "#1a1f2e",
5005
+ "sidebar-primary": "#7c9082",
5006
+ "sidebar-primary-foreground": "#ffffff",
5007
+ "sidebar-accent": "#e8e6e1",
5008
+ "sidebar-accent-foreground": "#1a1f2e",
5009
+ "sidebar-border": "#e8e6e1",
5010
+ "sidebar-ring": "#7c9082",
5011
+ "font-sans": "Antic, ui-sans-serif, sans-serif, system-ui",
5012
+ "font-serif": "Signifier, Georgia, serif",
5013
+ "font-mono": "JetBrains Mono, Courier New, monospace",
5014
+ "shadow-color": "#1a1f2e",
5015
+ "shadow-opacity": "0.04",
5016
+ "shadow-blur": "2px",
5017
+ "shadow-spread": "0px",
5018
+ "shadow-offset-x": "0px",
5019
+ "shadow-offset-y": "1px",
5020
+ "letter-spacing": "0em",
5021
+ "spacing": "0.23rem",
5022
+ },
5023
+ dark: {
5024
+ "background": "#0a0a0a",
5025
+ "foreground": "#f5f5f5",
5026
+ "card": "#121212",
5027
+ "card-foreground": "#f5f5f5",
5028
+ "popover": "#121212",
5029
+ "popover-foreground": "#f5f5f5",
5030
+ "primary": "#7c9082",
5031
+ "primary-foreground": "#000000",
5032
+ "secondary": "#1a1a1a",
5033
+ "secondary-foreground": "#f5f5f5",
5034
+ "muted": "#1a1a1a",
5035
+ "muted-foreground": "#a0a0a0",
5036
+ "accent": "#36443a",
5037
+ "accent-foreground": "#f5f5f5",
5038
+ "destructive": "#ef4444",
5039
+ "destructive-foreground": "#ffffff",
5040
+ "border": "#2a2a2a",
5041
+ "input": "#121212",
5042
+ "ring": "#7c9082",
5043
+ "chart-1": "#7c9082",
5044
+ "chart-2": "#a0aa88",
5045
+ "chart-3": "#8b9d83",
5046
+ "chart-4": "#6b7280",
5047
+ "chart-5": "#5a6b5e",
5048
+ "sidebar": "#0f0f0f",
5049
+ "sidebar-foreground": "#f5f5f5",
5050
+ "sidebar-primary": "#7c9082",
5051
+ "sidebar-primary-foreground": "#ffffff",
5052
+ "sidebar-accent": "#1a1a1a",
5053
+ "sidebar-accent-foreground": "#f5f5f5",
5054
+ "sidebar-border": "#2a2a2a",
5055
+ "sidebar-ring": "#7c9082",
5056
+ "shadow-color": "#000000",
5057
+ },
5058
+ },
5059
+ radius: "0.35rem",
5060
+ font: {
5061
+ value: "antic",
5062
+ fontFamily: '"Antic", sans-serif',
5063
+ googleFontsUrl:
5064
+ "https://fonts.googleapis.com/css2?family=Antic&display=swap",
5065
+ },
5066
+ },
5067
+ ];
5068
+
5069
+ const themePresetByName = new Map(
5070
+ themePresets.map((preset) => [preset.name, preset])
5071
+ );
5072
+
5073
+ export function getThemePreset(name: string): ThemePreset | undefined {
5074
+ return themePresetByName.get(name);
5075
+ }
5076
+ `}function L(){return `"use client";
5077
+
5078
+ import { radiusPresets } from "./presets/radius";
5079
+
5080
+ type RadiusSelectorProps = {
5081
+ value: string | null;
5082
+ onChange: (radius: string) => void;
5083
+ };
5084
+
5085
+ const baseButtonClass =
5086
+ "inline-flex flex-col items-center justify-center gap-1.5 w-full min-h-[52px] px-2.5 py-1.5 rounded-[10px] border text-xs font-medium tracking-[0.01em] cursor-pointer transition-all duration-[160ms]";
5087
+
5088
+ const defaultButtonClass =
5089
+ "border-[oklch(1_0_0/0.08)] bg-[oklch(0.2_0.02_260/0.9)] text-[oklch(0.96_0_0)] hover:bg-[oklch(0.24_0.02_260/0.95)] hover:border-[oklch(1_0_0/0.18)]";
5090
+
5091
+ const selectedButtonClass =
5092
+ "bg-[oklch(0.24_0.02_260/0.95)] border-[oklch(0.72_0.15_265)] shadow-[0_0_0_1px_oklch(0.72_0.15_265),0_10px_24px_oklch(0_0_0/0.35)]";
5093
+
5094
+ export function RadiusSelector({ value, onChange }: RadiusSelectorProps) {
5095
+ return (
5096
+ <div
5097
+ className="relative grid gap-2.5 p-3 rounded-xl border border-[oklch(1_0_0/0.08)] bg-[oklch(0.2_0.02_260/0.9)]"
5098
+ style={{ boxShadow: "inset 0 1px 0 oklch(1 0 0 / 0.04)" }}
5099
+ >
5100
+ <label className="block text-[10.5px] font-semibold tracking-[0.16em] uppercase text-[oklch(0.72_0_0)]">
5101
+ Radius
5102
+ </label>
5103
+ <div className="grid grid-cols-3 gap-2">
5104
+ {radiusPresets.map((preset) => {
5105
+ const isSelected = value === preset.value;
5106
+
5107
+ return (
5108
+ <button
5109
+ key={preset.name}
5110
+ onClick={() => onChange(preset.value)}
5111
+ className={\`\${baseButtonClass} \${isSelected ? selectedButtonClass : defaultButtonClass}\`}
5112
+ style={isSelected ? undefined : { boxShadow: "inset 0 1px 0 oklch(1 0 0 / 0.04)" }}
5113
+ title={preset.label}
5114
+ >
5115
+ <span
5116
+ className="w-7 h-[18px] border border-[oklch(1_0_0/0.12)]"
5117
+ style={{
5118
+ borderRadius: preset.value,
5119
+ background:
5120
+ "linear-gradient(180deg, oklch(0.8 0 0 / 0.45), oklch(0.6 0 0 / 0.2))",
5121
+ }}
5122
+ />
5123
+ <span className="text-[11px] text-[oklch(0.72_0_0)]">
5124
+ {preset.label}
5125
+ </span>
5126
+ </button>
5127
+ );
5128
+ })}
5129
+ </div>
5130
+ </div>
5131
+ );
5132
+ }
5133
+ `}function U(){return `// Direct DOM theme application (no postMessage needed)
5134
+
5135
+ import { getColorPreset } from "./presets/colors";
5136
+ import { getFontPreset } from "./presets/fonts";
5137
+ import {
5138
+ getThemePreset,
5139
+ type ThemePreset,
5140
+ type ThemePresetFont,
5141
+ } from "./presets/theme-presets";
5142
+
5143
+ const THEME_COLOR_STYLE_ID = "previewcn-devtools-theme-colors";
5144
+ const THEME_FONT_STYLE_ID = "previewcn-devtools-theme-font";
5145
+
5146
+ export type ThemeConfig = {
5147
+ colorPreset: string | null;
5148
+ radius: string | null;
5149
+ darkMode: boolean | null;
5150
+ font: string | null;
5151
+ preset: string | null;
5152
+ };
5153
+
5154
+ type ThemeColors = {
5155
+ light: Record<string, string>;
5156
+ dark: Record<string, string>;
5157
+ };
5158
+
5159
+ function getOrCreateStyleElement(id: string): HTMLStyleElement {
5160
+ const existing = document.getElementById(id);
5161
+ if (existing instanceof HTMLStyleElement) {
5162
+ return existing;
5163
+ }
5164
+
5165
+ if (existing) {
5166
+ existing.remove();
5167
+ }
5168
+
5169
+ const styleEl = document.createElement("style");
5170
+ styleEl.id = id;
5171
+ document.head.appendChild(styleEl);
5172
+ return styleEl;
5173
+ }
5174
+
5175
+ function serializeCssVars(cssVars: Record<string, string>): string {
5176
+ return Object.entries(cssVars)
5177
+ .map(([key, value]) => \`--\${key}: \${value};\`)
5178
+ .join(" ");
5179
+ }
5180
+
5181
+ function applyThemeColors(colors: ThemeColors) {
5182
+ const styleEl = getOrCreateStyleElement(THEME_COLOR_STYLE_ID);
5183
+
5184
+ const lightCss = serializeCssVars(colors.light);
5185
+ const darkCss = serializeCssVars(colors.dark);
5186
+
5187
+ styleEl.textContent = \`:root { \${lightCss} } .dark { \${darkCss} }\`;
5188
+ }
5189
+
5190
+ // Apply dark mode class to document
5191
+ export function applyDarkMode(darkMode: boolean) {
5192
+ const root = document.documentElement;
5193
+
5194
+ if (darkMode) {
5195
+ root.classList.remove("light");
5196
+ root.classList.add("dark");
5197
+ } else {
5198
+ root.classList.remove("dark");
5199
+ root.classList.add("light");
5200
+ }
5201
+
5202
+ root.style.colorScheme = darkMode ? "dark" : "light";
5203
+ }
5204
+
5205
+ // Apply radius to document
5206
+ export function applyRadius(radius: string) {
5207
+ const root = document.documentElement;
5208
+ root.style.setProperty("--radius", radius);
5209
+ }
5210
+
5211
+ // Apply color preset to document
5212
+ export function applyColors(colorPresetName: string) {
5213
+ const preset = getColorPreset(colorPresetName);
5214
+ if (!preset) return;
5215
+
5216
+ applyThemeColors(preset.colors);
5217
+ }
5218
+
5219
+ // Apply theme preset colors directly (bypasses colorPreset lookup)
5220
+ export function applyPresetColors(preset: ThemePreset) {
5221
+ applyThemeColors(preset.colors);
5222
+ }
5223
+
5224
+ function applyFontConfig(font: ThemePresetFont) {
5225
+ const { fontFamily, googleFontsUrl, value: fontId } = font;
5226
+
5227
+ // Validate Google Fonts URL to prevent XSS attacks
5228
+ if (!googleFontsUrl.startsWith("https://fonts.googleapis.com/")) {
5229
+ console.warn("[PreviewCN] Invalid font URL");
5230
+ return;
5231
+ }
5232
+
5233
+ // Inject Google Fonts link if not already present
5234
+ const linkId = \`previewcn-font-\${fontId}\`;
5235
+ if (!document.getElementById(linkId)) {
5236
+ const link = document.createElement("link");
5237
+ link.id = linkId;
5238
+ link.rel = "stylesheet";
5239
+ link.href = googleFontsUrl;
5240
+ document.head.appendChild(link);
5241
+ }
5242
+
5243
+ // Use multiple strategies to ensure font override works universally
5244
+ // This covers various Tailwind v4 and next/font configurations
5245
+ const styleEl = getOrCreateStyleElement(THEME_FONT_STYLE_ID);
5246
+ styleEl.textContent = \`
5247
+ :root {
5248
+ --font-sans: \${fontFamily} !important;
5249
+ --font-sans-override: \${fontFamily} !important;
5250
+ --font-geist-sans: \${fontFamily} !important;
5251
+ }
5252
+ html, body, .font-sans {
5253
+ font-family: \${fontFamily} !important;
5254
+ }
5255
+ \`;
5256
+ }
5257
+
5258
+ // Apply font to document
5259
+ export function applyFont(fontId: string) {
5260
+ const fontPreset = getFontPreset(fontId);
5261
+ if (!fontPreset) return;
5262
+
5263
+ applyFontConfig(fontPreset);
5264
+ }
5265
+
5266
+ // Apply font from theme preset (using preset's font config directly)
5267
+ export function applyPresetFont(font: ThemePresetFont) {
5268
+ applyFontConfig(font);
5269
+ }
5270
+
5271
+ // Apply a complete theme preset (colors, radius, and optionally font)
5272
+ export function applyPreset(presetName: string) {
5273
+ const preset = getThemePreset(presetName);
5274
+ if (!preset) return;
5275
+
5276
+ applyPresetColors(preset);
5277
+ applyRadius(preset.radius);
5278
+
5279
+ if (preset.font) {
5280
+ applyFontConfig(preset.font);
5281
+ }
5282
+ }
1703
5283
 
1704
5284
  // Apply full theme config
1705
5285
  export function applyTheme(config: ThemeConfig) {
@@ -1739,7 +5319,7 @@ export function clearTheme() {
1739
5319
  root.style.removeProperty("color-scheme");
1740
5320
  root.classList.remove("light", "dark");
1741
5321
  }
1742
- `}function U(){return `"use client";
5322
+ `}function $(){return `"use client";
1743
5323
 
1744
5324
  type TriggerProps = {
1745
5325
  onClick: () => void;
@@ -1786,7 +5366,7 @@ export function Trigger({ onClick }: TriggerProps) {
1786
5366
  </button>
1787
5367
  );
1788
5368
  }
1789
- `}function V(){return `"use client";
5369
+ `}function J(){return `"use client";
1790
5370
 
1791
5371
  import { useCallback, useState } from "react";
1792
5372
 
@@ -1924,6 +5504,6 @@ export function useThemeState() {
1924
5504
  resetTheme,
1925
5505
  };
1926
5506
  }
1927
- `}function Pe(){return `export { PreviewcnDevtools } from "./devtools";
1928
- `}function q(){return [{path:"index.ts",content:Pe()},{path:"devtools.tsx",content:F()},{path:"trigger.tsx",content:U()},{path:"panel.tsx",content:E()},{path:"color-picker.tsx",content:w()},{path:"preset-selector.tsx",content:I()},{path:"radius-selector.tsx",content:$()},{path:"font-selector.tsx",content:R()},{path:"mode-toggle.tsx",content:N()},{path:"css-export-button.tsx",content:T()},{path:"theme-applier.ts",content:B()},{path:"use-theme-state.ts",content:V()},{path:"css-export.ts",content:S()},{path:"presets/index.ts",content:O()},{path:"presets/colors.ts",content:j()},{path:"presets/color-preset-specs.ts",content:D()},{path:"presets/radius.ts",content:L()},{path:"presets/fonts.ts",content:M()},{path:"presets/theme-presets.ts",content:A()}]}function g(e){return u.cyan(e)}async function Z(e,t){return !!(await we({type:"confirm",name:"value",message:e,initial:t})).value}async function Q(e,t){await C.mkdir(e,{recursive:true});for(let o of t){let r=l.join(e,o.path);await C.mkdir(l.dirname(r),{recursive:true}),await C.writeFile(r,o.content,"utf-8");}}async function ee(e){a.info(`Initializing PreviewCN...
1929
- `);let t=process.cwd(),o=G("Detecting project type...").start(),r=await h(t);r.isNextJs||(o.fail("Not a Next.js project"),a.error("PreviewCN requires a Next.js project with App Router."),a.hint("Make sure you're in the root of a Next.js project."),process.exit(1)),r.isAppRouter||(o.fail("App Router not detected"),a.error("PreviewCN requires Next.js App Router (app/ directory)."),a.hint("Create an app/ directory or migrate from pages/ to app/."),process.exit(1)),o.succeed("Next.js App Router project detected");let s=await k(t);s||(a.error("Could not find app/layout.tsx"),process.exit(1)),a.info(`Found layout at: ${g(l__default.relative(t,s))}`);let{targetDir:n,importPath:c}=await y(t);a.info(`Components will be generated at: ${g(l__default.relative(t,n))}`),e.yes||await Z("This will generate PreviewCN components and modify your app layout. Continue?",true)||(a.info("Aborted."),process.exit(0)),await Te(n,s,c),console.log(),a.success("PreviewCN devtools initialized successfully!"),console.log(),a.info("Next step:"),console.log(` Run ${g("pnpm dev")} (or your dev command) to start the dev server.`),console.log(` Click the ${g("theme palette icon")} in the bottom-right corner to open the editor.`),console.log();}async function Te(e,t,o){let r=G("Generating PreviewCN components...").start();try{let n=q();await Q(e,n);let c=l__default.relative(process.cwd(),e);r.succeed(`Generated ${n.length} files in ${c}`);}catch(n){r.fail("Failed to generate PreviewCN components"),a.error(n instanceof Error?n.message:String(n)),process.exit(1);}let s=G("Adding PreviewcnDevtools to layout...").start();try{await z(t,o),s.succeed("Added PreviewcnDevtools to layout");}catch(n){s.fail("Failed to modify layout for devtools"),a.error(n instanceof Error?n.message:String(n)),a.hint("You may need to add PreviewcnDevtools manually. See documentation.");}}var x=new Command;x.name("previewcn").description("CLI for PreviewCN - real-time shadcn/ui theme editor").version("0.1.0");x.command("init",{isDefault:true}).description("Initialize PreviewCN devtools in your Next.js project").option("-y, --yes","Skip confirmation prompts").action(ee);x.command("doctor").description("Check PreviewCN setup and diagnose issues").action(X);x.parse();
5507
+ `}function Ce(){return `export { PreviewcnDevtools } from "./devtools";
5508
+ `}function q(){return [{path:"index.ts",content:Ce()},{path:"devtools.tsx",content:T()},{path:"trigger.tsx",content:$()},{path:"panel.tsx",content:N()},{path:"color-picker.tsx",content:P()},{path:"preset-selector.tsx",content:D()},{path:"radius-selector.tsx",content:L()},{path:"font-selector.tsx",content:M()},{path:"mode-toggle.tsx",content:E()},{path:"css-export-button.tsx",content:S()},{path:"theme-applier.ts",content:U()},{path:"use-theme-state.ts",content:J()},{path:"css-export.ts",content:_()},{path:"presets/index.ts",content:B()},{path:"presets/colors.ts",content:A()},{path:"presets/color-preset-specs.ts",content:R()},{path:"presets/radius.ts",content:O()},{path:"presets/fonts.ts",content:I()},{path:"presets/theme-presets.ts",content:j()}]}function g(e){return u.cyan(e)}async function Q(e,r){return !!(await Pe({type:"confirm",name:"value",message:e,initial:r})).value}async function Z(e,r){await w.mkdir(e,{recursive:true});for(let o of r){let a=s.join(e,o.path);await w.mkdir(s.dirname(a),{recursive:true}),await w.writeFile(a,o.content,"utf-8");}}async function ee(e){n.info(`Initializing PreviewCN...
5509
+ `);let r=process.cwd(),o=V("Detecting project type...").start(),a=await m(r);a.isNextJs||(o.fail("Not a Next.js project"),n.error("PreviewCN requires a Next.js project with App Router."),n.hint("Make sure you're in the root of a Next.js project."),process.exit(1)),a.isAppRouter||(o.fail("App Router not detected"),n.error("PreviewCN requires Next.js App Router (app/ directory)."),n.hint("Create an app/ directory or migrate from pages/ to app/."),process.exit(1)),o.succeed("Next.js App Router project detected");let f=await h(r);f||(n.error("Could not find app/layout.tsx"),process.exit(1)),n.info(`Found layout at: ${g(s__default.relative(r,f))}`);let{targetDir:t,importPath:c}=await y(r);n.info(`Components will be generated at: ${g(s__default.relative(r,t))}`),e.yes||await Q("This will generate PreviewCN components and modify your app layout. Continue?",true)||(n.info("Aborted."),process.exit(0)),await Se(t,f,c),console.log(),n.success("PreviewCN devtools initialized successfully!"),console.log(),n.info("Next step:"),console.log(` Run ${g("pnpm dev")} (or your dev command) to start the dev server.`),console.log(` Click the ${g("theme palette icon")} in the bottom-right corner to open the editor.`),console.log();}async function Se(e,r,o){let a=V("Generating PreviewCN components...").start();try{let t=q();await Z(e,t);let c=s__default.relative(process.cwd(),e);a.succeed(`Generated ${t.length} files in ${c}`);}catch(t){a.fail("Failed to generate PreviewCN components"),n.error(t instanceof Error?t.message:String(t)),process.exit(1);}let f=V("Adding PreviewcnDevtools to layout...").start();try{await z(r,o),f.succeed("Added PreviewcnDevtools to layout");}catch(t){f.fail("Failed to modify layout for devtools"),n.error(t instanceof Error?t.message:String(t)),n.hint("You may need to add PreviewcnDevtools manually. See documentation."),process.exit(1);}}var x=new Command;x.name("previewcn").description("CLI for PreviewCN - real-time shadcn/ui theme editor").version("0.1.0");x.command("init",{isDefault:true}).description("Initialize PreviewCN devtools in your Next.js project").option("-y, --yes","Skip confirmation prompts").action(ee);x.command("doctor").description("Check PreviewCN setup and diagnose issues").action(X);x.parse();