@srcroot/ui 0.0.11 → 0.0.12

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -250,7 +250,7 @@ var THEMES = {
250
250
  }
251
251
  }
252
252
  };
253
- function generateCssVariables(themeName) {
253
+ function generateCssVariablesV3(themeName) {
254
254
  const theme = THEMES[themeName];
255
255
  if (!theme) return "";
256
256
  const lightVars = Object.entries(theme.light).map(([key, value]) => ` --${key}: ${value};`).join("\n");
@@ -263,10 +263,31 @@ function generateCssVariables(themeName) {
263
263
  :root {
264
264
  ${lightVars}
265
265
  --radius: 0.5rem;
266
+ --sidebar-width: 16rem;
267
+ --sidebar-width-mobile: 18rem;
268
+ --sidebar-width-collapsed: 3rem;
269
+ --sidebar-width-icon: 3rem;
270
+ --header-height: 3.5rem;
271
+ --sidebar-background: 0 0% 98%;
272
+ --sidebar-foreground: 240 5.3% 26.1%;
273
+ --sidebar-primary: 240 5.9% 10%;
274
+ --sidebar-primary-foreground: 0 0% 98%;
275
+ --sidebar-accent: 240 4.8% 95.9%;
276
+ --sidebar-accent-foreground: 240 5.9% 10%;
277
+ --sidebar-border: 220 13% 91%;
278
+ --sidebar-ring: 217.2 91.2% 59.8%;
266
279
  }
267
280
 
268
281
  .dark {
269
282
  ${darkVars}
283
+ --sidebar-background: 240 5.9% 10%;
284
+ --sidebar-foreground: 240 4.8% 95.9%;
285
+ --sidebar-primary: 224.3 76.3% 48%;
286
+ --sidebar-primary-foreground: 0 0% 100%;
287
+ --sidebar-accent: 240 3.7% 15.9%;
288
+ --sidebar-accent-foreground: 240 4.8% 95.9%;
289
+ --sidebar-border: 240 3.7% 15.9%;
290
+ --sidebar-ring: 217.2 91.2% 59.8%;
270
291
  }
271
292
  }
272
293
 
@@ -297,6 +318,109 @@ ${darkVars}
297
318
  }
298
319
  `;
299
320
  }
321
+ function generateCssVariablesV4(themeName) {
322
+ const theme = THEMES[themeName];
323
+ if (!theme) return "";
324
+ const lightVars = Object.entries(theme.light).map(([key, value]) => ` --${key}: ${value};`).join("\n");
325
+ const darkVars = Object.entries(theme.dark).map(([key, value]) => ` --${key}: ${value};`).join("\n");
326
+ const lightVarsHsl = Object.entries(theme.light).map(([key, value]) => ` --${key}: hsl(${value});`).join("\n");
327
+ const darkVarsHsl = Object.entries(theme.dark).map(([key, value]) => ` --${key}: hsl(${value});`).join("\n");
328
+ return `@import "tailwindcss";
329
+
330
+ :root {
331
+ ${lightVarsHsl}
332
+ --radius: 0.5rem;
333
+ --sidebar-width: 16rem;
334
+ --sidebar-width-mobile: 18rem;
335
+ --sidebar-width-collapsed: 3rem;
336
+ --sidebar-width-icon: 3rem;
337
+ --header-height: 3.5rem;
338
+ --sidebar-background: 0 0% 98%;
339
+ --sidebar-foreground: 240 5.3% 26.1%;
340
+ --sidebar-primary: 240 5.9% 10%;
341
+ --sidebar-primary-foreground: 0 0% 98%;
342
+ --sidebar-accent: 240 4.8% 95.9%;
343
+ --sidebar-accent-foreground: 240 5.9% 10%;
344
+ --sidebar-border: 220 13% 91%;
345
+ --sidebar-ring: 217.2 91.2% 59.8%;
346
+ }
347
+
348
+ @theme inline {
349
+ --color-border: var(--border);
350
+ --color-input: var(--input);
351
+ --color-ring: var(--ring);
352
+ --color-background: var(--background);
353
+ --color-foreground: var(--foreground);
354
+
355
+ --color-primary: var(--primary);
356
+ --color-primary-foreground: var(--primary-foreground);
357
+
358
+ --color-secondary: var(--secondary);
359
+ --color-secondary-foreground: var(--secondary-foreground);
360
+
361
+ --color-destructive: var(--destructive);
362
+ --color-destructive-foreground: var(--destructive-foreground);
363
+
364
+ --color-muted: var(--muted);
365
+ --color-muted-foreground: var(--muted-foreground);
366
+
367
+ --color-accent: var(--accent);
368
+ --color-accent-foreground: var(--accent-foreground);
369
+
370
+ --color-popover: var(--popover);
371
+ --color-popover-foreground: var(--popover-foreground);
372
+
373
+ --color-card: var(--card);
374
+ --color-card-foreground: var(--card-foreground);
375
+
376
+ --color-sidebar: var(--sidebar-background);
377
+ --color-sidebar-foreground: var(--sidebar-foreground);
378
+ --color-sidebar-primary: var(--sidebar-primary);
379
+ --color-sidebar-primary-foreground: var(--sidebar-primary-foreground);
380
+ --color-sidebar-accent: var(--sidebar-accent);
381
+ --color-sidebar-accent-foreground: var(--sidebar-accent-foreground);
382
+ --color-sidebar-border: var(--sidebar-border);
383
+ --color-sidebar-ring: var(--sidebar-ring);
384
+
385
+ --radius-lg: var(--radius);
386
+ --radius-md: calc(var(--radius) - 2px);
387
+ --radius-sm: calc(var(--radius) - 4px);
388
+
389
+ /* Accordion Animations */
390
+ --animate-accordion-down: accordion-down 0.2s ease-out;
391
+ --animate-accordion-up: accordion-up 0.2s ease-out;
392
+
393
+ @keyframes accordion-down {
394
+ from { height: 0; }
395
+ to { height: var(--radix-accordion-content-height); }
396
+ }
397
+ @keyframes accordion-up {
398
+ from { height: var(--radix-accordion-content-height); }
399
+ to { height: 0; }
400
+ }
401
+ }
402
+
403
+ @media (prefers-color-scheme: dark) {
404
+ :root {
405
+ ${darkVarsHsl}
406
+ --sidebar-background: 240 5.9% 10%;
407
+ --sidebar-foreground: 240 4.8% 95.9%;
408
+ --sidebar-primary: 224.3 76.3% 48%;
409
+ --sidebar-primary-foreground: 0 0% 100%;
410
+ --sidebar-accent: 240 3.7% 15.9%;
411
+ --sidebar-accent-foreground: 240 4.8% 95.9%;
412
+ --sidebar-border: 240 3.7% 15.9%;
413
+ --sidebar-ring: 217.2 91.2% 59.8%;
414
+ }
415
+ }
416
+
417
+ body {
418
+ background: var(--background);
419
+ color: var(--foreground);
420
+ font-family: Arial, Helvetica, sans-serif;
421
+ }
422
+ `;
423
+ }
300
424
  var TAILWIND_CONFIG = `import type { Config } from "tailwindcss"
301
425
 
302
426
  const config: Config = {
@@ -348,21 +472,45 @@ const config: Config = {
348
472
  md: "calc(var(--radius) - 2px)",
349
473
  sm: "calc(var(--radius) - 4px)",
350
474
  },
475
+ keyframes: {
476
+ "accordion-down": {
477
+ from: { height: "0" },
478
+ to: { height: "var(--radix-accordion-content-height)" },
479
+ },
480
+ "accordion-up": {
481
+ from: { height: "var(--radix-accordion-content-height)" },
482
+ to: { height: "0" },
483
+ },
484
+ },
485
+ animation: {
486
+ "accordion-down": "accordion-down 0.2s ease-out",
487
+ "accordion-up": "accordion-up 0.2s ease-out",
488
+ },
351
489
  },
352
490
  },
353
- plugins: [],
491
+ plugins: [require("tailwindcss-animate")],
354
492
  }
355
493
 
356
494
  export default config
357
495
  `;
358
496
  async function init(options) {
359
497
  const cwd = path.resolve(options.cwd);
360
- console.log(chalk.cyan("\n\u{1F680} Initializing srcroot-ui...\n"));
498
+ const userAgent = process.env.npm_config_user_agent || "";
499
+ const isYarn = userAgent.includes("yarn");
500
+ const isPnpm = userAgent.includes("pnpm");
501
+ const isBun = userAgent.includes("bun");
502
+ const packageManager = isPnpm ? "pnpm" : isYarn ? "yarn" : isBun ? "bun" : "npm";
503
+ const installCmd = isPnpm ? "add" : isYarn ? "add" : isBun ? "add" : "install";
504
+ console.log(chalk.cyan("\n\u{1F680} Initializing @srcroot/ui...\n"));
361
505
  const packageJsonPath = path.join(cwd, "package.json");
362
506
  if (!fs.existsSync(packageJsonPath)) {
363
507
  console.log(chalk.red("Error: No package.json found. Please run this in a project directory."));
364
508
  process.exit(1);
365
509
  }
510
+ const pkg = await fs.readJson(packageJsonPath);
511
+ const allDeps = { ...pkg.dependencies, ...pkg.devDependencies };
512
+ const tailwindVersion = allDeps["tailwindcss"] || "";
513
+ const isTailwind4 = tailwindVersion.includes("^4") || tailwindVersion.startsWith("4") || allDeps["@tailwindcss/postcss"];
366
514
  const srcDir = fs.existsSync(path.join(cwd, "src")) ? path.join(cwd, "src") : cwd;
367
515
  const appDir = path.join(srcDir, "app");
368
516
  const isAppRouter = fs.existsSync(appDir);
@@ -397,16 +545,20 @@ async function init(options) {
397
545
  spinner.start(`Setting up ${chalk.cyan(THEMES[selectedTheme].name)} theme...`);
398
546
  const stylesDir = path.dirname(globalsPath);
399
547
  await fs.ensureDir(stylesDir);
400
- const cssContent = generateCssVariables(selectedTheme);
548
+ const cssContent = isTailwind4 ? generateCssVariablesV4(selectedTheme) : generateCssVariablesV3(selectedTheme);
401
549
  await fs.writeFile(globalsPath, cssContent);
402
- spinner.succeed(`Updated ${chalk.cyan(path.relative(cwd, globalsPath))} with ${chalk.cyan(THEMES[selectedTheme].name)} theme`);
403
- spinner.start("Setting up Tailwind config...");
404
- const tailwindConfigPath = path.join(cwd, "tailwind.config.ts");
405
- await fs.writeFile(tailwindConfigPath, TAILWIND_CONFIG);
406
- spinner.succeed(`Created ${chalk.cyan("tailwind.config.ts")}`);
550
+ spinner.succeed(`Updated ${chalk.cyan(path.relative(cwd, globalsPath))} with ${chalk.cyan(THEMES[selectedTheme].name)} theme (${isTailwind4 ? "Tailwind 4" : "Tailwind 3"})`);
551
+ if (!isTailwind4) {
552
+ spinner.start("Setting up Tailwind config...");
553
+ const tailwindConfigPath = path.join(cwd, "tailwind.config.ts");
554
+ await fs.writeFile(tailwindConfigPath, TAILWIND_CONFIG);
555
+ spinner.succeed(`Created ${chalk.cyan("tailwind.config.ts")}`);
556
+ } else {
557
+ spinner.info(`Tailwind 4 detected - skipping ${chalk.cyan("tailwind.config.ts")}`);
558
+ }
407
559
  spinner.start("Checking dependencies...");
408
- const pkg = await fs.readJson(packageJsonPath);
409
- const deps = { ...pkg.dependencies, ...pkg.devDependencies };
560
+ const currentPkg = await fs.readJson(packageJsonPath);
561
+ const currentDeps = { ...currentPkg.dependencies, ...currentPkg.devDependencies };
410
562
  const missing = [];
411
563
  const requiredDeps = {
412
564
  "clsx": "clsx@2.1.1",
@@ -414,21 +566,24 @@ async function init(options) {
414
566
  "class-variance-authority": "class-variance-authority@0.7.1",
415
567
  "lucide-react": "lucide-react@0.561.0"
416
568
  };
417
- for (const [depName, installCmd] of Object.entries(requiredDeps)) {
418
- if (!deps[depName]) {
419
- missing.push(installCmd);
569
+ if (!isTailwind4) {
570
+ requiredDeps["tailwindcss-animate"] = "tailwindcss-animate";
571
+ }
572
+ for (const [depName, installCmd2] of Object.entries(requiredDeps)) {
573
+ if (!currentDeps[depName]) {
574
+ missing.push(installCmd2);
420
575
  }
421
576
  }
422
577
  if (missing.length > 0) {
423
- spinner.text = `Installing dependencies: ${missing.join(", ")}...`;
578
+ spinner.text = `Installing dependencies via ${packageManager}: ${missing.join(", ")}...`;
424
579
  try {
425
580
  const { execSync } = await import("child_process");
426
- execSync(`npm install ${missing.join(" ")}`, { stdio: "ignore", cwd });
581
+ execSync(`${packageManager} ${installCmd} ${missing.join(" ")}`, { stdio: "ignore", cwd });
427
582
  spinner.succeed("Dependencies installed");
428
583
  } catch {
429
584
  spinner.fail("Failed to install dependencies automatically");
430
585
  console.log(chalk.dim(`
431
- Please manually run: npm install ${missing.join(" ")}
586
+ Please manually run: ${packageManager} ${installCmd} ${missing.join(" ")}
432
587
  `));
433
588
  }
434
589
  } else {
@@ -436,6 +591,7 @@ Please manually run: npm install ${missing.join(" ")}
436
591
  }
437
592
  console.log(chalk.green("\n\u2705 Project initialized successfully!\n"));
438
593
  console.log(`Theme: ${chalk.cyan(THEMES[selectedTheme].name)}`);
594
+ console.log(`Tailwind: ${chalk.cyan(isTailwind4 ? "v4" : "v3")}`);
439
595
  console.log("\nNext steps:");
440
596
  console.log(chalk.dim(" npx @srcroot/ui add button"));
441
597
  console.log(chalk.dim(" npx @srcroot/ui add --all"));
@@ -833,7 +989,7 @@ async function add(components, options) {
833
989
  }
834
990
  if (invalidComponents.length > 0) {
835
991
  console.log(chalk2.red(`Unknown components: ${invalidComponents.join(", ")}`));
836
- console.log(chalk2.dim("\nRun 'srcroot-ui list' to see available components."));
992
+ console.log(chalk2.dim("\nRun '@srcroot/ui list' to see available components."));
837
993
  process.exit(1);
838
994
  }
839
995
  const toInstall = /* @__PURE__ */ new Set();
@@ -923,13 +1079,13 @@ async function list() {
923
1079
  });
924
1080
  console.log();
925
1081
  }
926
- console.log(chalk3.dim("Usage: npx srcroot-ui add <component>\n"));
1082
+ console.log(chalk3.dim("Usage: npx @srcroot/ui add <component>\n"));
927
1083
  }
928
1084
 
929
1085
  // src/cli/index.ts
930
1086
  var program = new Command();
931
- program.name("@srcroot/ui").description("Add polymorphic, accessible UI components to your project").version("0.0.8");
932
- program.command("init").description("Initialize your project with srcroot-ui").option("-y, --yes", "Skip confirmation prompts", false).option("-t, --theme <theme>", "Color theme (slate, neutral, stone, zinc, gray)").option("--cwd <path>", "Working directory", process.cwd()).action(init);
1087
+ program.name("@srcroot/ui").description("Add polymorphic, accessible UI components to your project").version("0.0.12");
1088
+ program.command("init").description("Initialize your project with @srcroot/ui").option("-y, --yes", "Skip confirmation prompts", false).option("-t, --theme <theme>", "Color theme (slate, neutral, stone, zinc, gray)").option("--cwd <path>", "Working directory", process.cwd()).action(init);
933
1089
  program.command("add").description("Add components to your project").argument("[components...]", "Components to add").option("-y, --yes", "Skip confirmation prompts", false).option("-o, --overwrite", "Overwrite existing files", false).option("-a, --all", "Add all available components", false).option("--cwd <path>", "Working directory", process.cwd()).action(add);
934
1090
  program.command("list").description("List all available components").action(list);
935
1091
  program.parse();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@srcroot/ui",
3
- "version": "0.0.11",
3
+ "version": "0.0.12",
4
4
  "description": "A shadcn-style CLI UI library with polymorphic, accessible React components",
5
5
  "type": "module",
6
6
  "bin": {
@@ -103,8 +103,19 @@
103
103
  COMPONENT TOKENS
104
104
  ======================================== */
105
105
  --sidebar-width: 16rem;
106
- --sidebar-width-collapsed: 3.5rem;
106
+ --sidebar-width-mobile: 18rem;
107
+ --sidebar-width-collapsed: 3rem;
108
+ --sidebar-width-icon: 3rem;
107
109
  --header-height: 3.5rem;
110
+
111
+ --sidebar-background: 0 0% 98%;
112
+ --sidebar-foreground: 240 5.3% 26.1%;
113
+ --sidebar-primary: 240 5.9% 10%;
114
+ --sidebar-primary-foreground: 0 0% 98%;
115
+ --sidebar-accent: 240 4.8% 95.9%;
116
+ --sidebar-accent-foreground: 240 5.9% 10%;
117
+ --sidebar-border: 220 13% 91%;
118
+ --sidebar-ring: 217.2 91.2% 59.8%;
108
119
  }
109
120
 
110
121
  /* ========================================
@@ -142,6 +153,15 @@
142
153
  --input: 217.2 32.6% 17.5%;
143
154
  --ring: 212.7 26.8% 83.9%;
144
155
 
156
+ --sidebar-background: 240 5.9% 10%;
157
+ --sidebar-foreground: 240 4.8% 95.9%;
158
+ --sidebar-primary: 224.3 76.3% 48%;
159
+ --sidebar-primary-foreground: 0 0% 100%;
160
+ --sidebar-accent: 240 3.7% 15.9%;
161
+ --sidebar-accent-foreground: 240 4.8% 95.9%;
162
+ --sidebar-border: 240 3.7% 15.9%;
163
+ --sidebar-ring: 217.2 91.2% 59.8%;
164
+
145
165
  --shadow-sm: 0 1px 2px 0 rgb(0 0 0 / 0.3);
146
166
  --shadow: 0 1px 3px 0 rgb(0 0 0 / 0.4);
147
167
  --shadow-md: 0 4px 6px -1px rgb(0 0 0 / 0.4);
@@ -8,9 +8,7 @@ import { cn } from "@/lib/utils"
8
8
  import { Button } from "@/components/ui/button"
9
9
  import { Sheet, SheetContent, SheetDescription, SheetHeader, SheetTitle } from "@/components/ui/sheet"
10
10
 
11
- const SIDEBAR_WIDTH = "16rem"
12
- const SIDEBAR_WIDTH_MOBILE = "18rem"
13
- const SIDEBAR_WIDTH_ICON = "3rem"
11
+
14
12
 
15
13
  const SidebarContext = React.createContext<{
16
14
  state: "expanded" | "collapsed"
@@ -87,8 +85,6 @@ const SidebarProvider = React.forwardRef<
87
85
  <div
88
86
  style={
89
87
  {
90
- "--sidebar-width": SIDEBAR_WIDTH,
91
- "--sidebar-width-icon": SIDEBAR_WIDTH_ICON,
92
88
  ...style,
93
89
  } as React.CSSProperties
94
90
  }
@@ -131,7 +127,7 @@ const Sidebar = React.forwardRef<
131
127
  return (
132
128
  <div
133
129
  className={cn(
134
- "flex h-full w-[--sidebar-width] flex-col bg-sidebar text-sidebar-foreground",
130
+ "flex h-full w-[var(--sidebar-width)] flex-col bg-sidebar text-sidebar-foreground",
135
131
  className
136
132
  )}
137
133
  ref={ref}
@@ -148,10 +144,10 @@ const Sidebar = React.forwardRef<
148
144
  <SheetContent
149
145
  data-sidebar="sidebar"
150
146
  data-mobile="true"
151
- className="w-[--sidebar-width] bg-sidebar p-0 text-sidebar-foreground [&>button]:hidden"
147
+ className="w-[var(--sidebar-width)] bg-sidebar p-0 text-sidebar-foreground [&>button]:hidden"
152
148
  style={
153
149
  {
154
- "--sidebar-width": SIDEBAR_WIDTH_MOBILE,
150
+ "--sidebar-width": "var(--sidebar-width-mobile)",
155
151
  } as React.CSSProperties
156
152
  }
157
153
  side={side}
@@ -181,26 +177,26 @@ const Sidebar = React.forwardRef<
181
177
  {/* Visual Gap for Sidebar (Fixed placeholder) */}
182
178
  <div
183
179
  className={cn(
184
- "duration-200 relative h-svh w-[--sidebar-width] bg-transparent transition-[width] ease-linear",
180
+ "duration-200 relative h-svh w-[var(--sidebar-width)] bg-transparent transition-[width] ease-linear",
185
181
  "group-data-[collapsible=offcanvas]:w-0",
186
182
  "group-data-[side=right]:rotate-180",
187
183
  variant === "floating" || variant === "inset"
188
- ? "group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)_+_theme(spacing.4))]"
189
- : "group-data-[collapsible=icon]:w-[--sidebar-width-icon]"
184
+ ? "group-data-[collapsible=icon]:!w-[calc(var(--sidebar-width-icon)_+_theme(spacing.4))]"
185
+ : "group-data-[collapsible=icon]:!w-[var(--sidebar-width-icon)]"
190
186
  )}
191
187
  />
192
188
 
193
189
  {/* Actual Fixed Sidebar */}
194
190
  <div
195
191
  className={cn(
196
- "duration-200 fixed inset-y-0 z-10 hidden h-svh w-[--sidebar-width] transition-[left,right,width] ease-linear md:flex",
192
+ "duration-200 fixed inset-y-0 z-10 hidden h-svh w-[var(--sidebar-width)] transition-[left,right,width] ease-linear md:flex",
197
193
  side === "left"
198
194
  ? "left-0 group-data-[collapsible=offcanvas]:left-[calc(var(--sidebar-width)*-1)]"
199
195
  : "right-0 group-data-[collapsible=offcanvas]:right-[calc(var(--sidebar-width)*-1)]",
200
196
  // Adjustments for floating/inset
201
197
  variant === "floating" || variant === "inset"
202
- ? "p-2 group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)_+_theme(spacing.4)_+_2px)]"
203
- : "group-data-[collapsible=icon]:w-[--sidebar-width-icon] group-data-[side=left]:border-r group-data-[side=right]:border-l",
198
+ ? "p-2 group-data-[collapsible=icon]:!w-[calc(var(--sidebar-width-icon)_+_theme(spacing.4)_+_2px)]"
199
+ : "group-data-[collapsible=icon]:!w-[var(--sidebar-width-icon)] group-data-[side=left]:border-r group-data-[side=right]:border-l",
204
200
  className
205
201
  )}
206
202
  {...props}
@@ -43,6 +43,21 @@
43
43
  --ring: 224 71.4% 4.1%;
44
44
 
45
45
  --radius: 0.5rem;
46
+
47
+ --sidebar-width: 16rem;
48
+ --sidebar-width-mobile: 18rem;
49
+ --sidebar-width-collapsed: 3rem;
50
+ --sidebar-width-icon: 3rem;
51
+ --header-height: 3.5rem;
52
+
53
+ --sidebar-background: 0 0% 98%;
54
+ --sidebar-foreground: 224 71.4% 4.1%;
55
+ --sidebar-primary: 220.9 39.3% 11%;
56
+ --sidebar-primary-foreground: 210 20% 98%;
57
+ --sidebar-accent: 220 14.3% 95.9%;
58
+ --sidebar-accent-foreground: 220.9 39.3% 11%;
59
+ --sidebar-border: 220 13% 91%;
60
+ --sidebar-ring: 224 71.4% 4.1%;
46
61
  }
47
62
 
48
63
  .dark {
@@ -82,5 +97,14 @@
82
97
  --border: 215 27.9% 16.9%;
83
98
  --input: 215 27.9% 16.9%;
84
99
  --ring: 216 12.2% 83.9%;
100
+
101
+ --sidebar-background: 224 71.4% 10%;
102
+ --sidebar-foreground: 210 20% 98%;
103
+ --sidebar-primary: 210 20% 98%;
104
+ --sidebar-primary-foreground: 220.9 39.3% 11%;
105
+ --sidebar-accent: 215 27.9% 16.9%;
106
+ --sidebar-accent-foreground: 210 20% 98%;
107
+ --sidebar-border: 215 27.9% 16.9%;
108
+ --sidebar-ring: 216 12.2% 83.9%;
85
109
  }
86
110
  }
@@ -43,6 +43,21 @@
43
43
  --ring: 0 0% 3.9%;
44
44
 
45
45
  --radius: 0.5rem;
46
+
47
+ --sidebar-width: 16rem;
48
+ --sidebar-width-mobile: 18rem;
49
+ --sidebar-width-collapsed: 3rem;
50
+ --sidebar-width-icon: 3rem;
51
+ --header-height: 3.5rem;
52
+
53
+ --sidebar-background: 0 0% 98%;
54
+ --sidebar-foreground: 0 0% 3.9%;
55
+ --sidebar-primary: 0 0% 9%;
56
+ --sidebar-primary-foreground: 0 0% 98%;
57
+ --sidebar-accent: 0 0% 96.1%;
58
+ --sidebar-accent-foreground: 0 0% 9%;
59
+ --sidebar-border: 0 0% 89.8%;
60
+ --sidebar-ring: 0 0% 3.9%;
46
61
  }
47
62
 
48
63
  .dark {
@@ -82,5 +97,14 @@
82
97
  --border: 0 0% 14.9%;
83
98
  --input: 0 0% 14.9%;
84
99
  --ring: 0 0% 83.1%;
100
+
101
+ --sidebar-background: 0 0% 10%;
102
+ --sidebar-foreground: 0 0% 98%;
103
+ --sidebar-primary: 0 0% 98%;
104
+ --sidebar-primary-foreground: 0 0% 9%;
105
+ --sidebar-accent: 0 0% 14.9%;
106
+ --sidebar-accent-foreground: 0 0% 98%;
107
+ --sidebar-border: 0 0% 14.9%;
108
+ --sidebar-ring: 0 0% 83.1%;
85
109
  }
86
110
  }
@@ -43,6 +43,21 @@
43
43
  --ring: 222.2 84% 4.9%;
44
44
 
45
45
  --radius: 0.5rem;
46
+
47
+ --sidebar-width: 16rem;
48
+ --sidebar-width-mobile: 18rem;
49
+ --sidebar-width-collapsed: 3rem;
50
+ --sidebar-width-icon: 3rem;
51
+ --header-height: 3.5rem;
52
+
53
+ --sidebar-background: 0 0% 98%;
54
+ --sidebar-foreground: 222.2 84% 4.9%;
55
+ --sidebar-primary: 222.2 47.4% 11.2%;
56
+ --sidebar-primary-foreground: 210 40% 98%;
57
+ --sidebar-accent: 210 40% 96.1%;
58
+ --sidebar-accent-foreground: 222.2 47.4% 11.2%;
59
+ --sidebar-border: 214.3 31.8% 91.4%;
60
+ --sidebar-ring: 222.2 84% 4.9%;
46
61
  }
47
62
 
48
63
  .dark {
@@ -82,5 +97,14 @@
82
97
  --border: 217.2 32.6% 17.5%;
83
98
  --input: 217.2 32.6% 17.5%;
84
99
  --ring: 212.7 26.8% 83.9%;
100
+
101
+ --sidebar-background: 222.2 84% 10%;
102
+ --sidebar-foreground: 210 40% 98%;
103
+ --sidebar-primary: 210 40% 98%;
104
+ --sidebar-primary-foreground: 222.2 47.4% 11.2%;
105
+ --sidebar-accent: 217.2 32.6% 17.5%;
106
+ --sidebar-accent-foreground: 210 40% 98%;
107
+ --sidebar-border: 217.2 32.6% 17.5%;
108
+ --sidebar-ring: 212.7 26.8% 83.9%;
85
109
  }
86
110
  }
@@ -43,6 +43,21 @@
43
43
  --ring: 24 9.8% 10%;
44
44
 
45
45
  --radius: 0.5rem;
46
+
47
+ --sidebar-width: 16rem;
48
+ --sidebar-width-mobile: 18rem;
49
+ --sidebar-width-collapsed: 3rem;
50
+ --sidebar-width-icon: 3rem;
51
+ --header-height: 3.5rem;
52
+
53
+ --sidebar-background: 0 0% 98%;
54
+ --sidebar-foreground: 24 9.8% 10%;
55
+ --sidebar-primary: 24 9.8% 10%;
56
+ --sidebar-primary-foreground: 60 9.1% 97.8%;
57
+ --sidebar-accent: 60 4.8% 95.9%;
58
+ --sidebar-accent-foreground: 24 9.8% 10%;
59
+ --sidebar-border: 20 5.9% 90%;
60
+ --sidebar-ring: 24 9.8% 10%;
46
61
  }
47
62
 
48
63
  .dark {
@@ -82,5 +97,14 @@
82
97
  --border: 12 6.5% 15.1%;
83
98
  --input: 12 6.5% 15.1%;
84
99
  --ring: 24 5.7% 82.9%;
100
+
101
+ --sidebar-background: 24 9.8% 14%;
102
+ --sidebar-foreground: 60 9.1% 97.8%;
103
+ --sidebar-primary: 60 9.1% 97.8%;
104
+ --sidebar-primary-foreground: 24 9.8% 10%;
105
+ --sidebar-accent: 12 6.5% 15.1%;
106
+ --sidebar-accent-foreground: 60 9.1% 97.8%;
107
+ --sidebar-border: 12 6.5% 15.1%;
108
+ --sidebar-ring: 24 5.7% 82.9%;
85
109
  }
86
110
  }
@@ -43,6 +43,21 @@
43
43
  --ring: 240 10% 3.9%;
44
44
 
45
45
  --radius: 0.5rem;
46
+
47
+ --sidebar-width: 16rem;
48
+ --sidebar-width-mobile: 18rem;
49
+ --sidebar-width-collapsed: 3rem;
50
+ --sidebar-width-icon: 3rem;
51
+ --header-height: 3.5rem;
52
+
53
+ --sidebar-background: 0 0% 98%;
54
+ --sidebar-foreground: 240 5.3% 26.1%;
55
+ --sidebar-primary: 240 5.9% 10%;
56
+ --sidebar-primary-foreground: 0 0% 98%;
57
+ --sidebar-accent: 240 4.8% 95.9%;
58
+ --sidebar-accent-foreground: 240 5.9% 10%;
59
+ --sidebar-border: 220 13% 91%;
60
+ --sidebar-ring: 217.2 91.2% 59.8%;
46
61
  }
47
62
 
48
63
  .dark {
@@ -82,5 +97,14 @@
82
97
  --border: 240 3.7% 15.9%;
83
98
  --input: 240 3.7% 15.9%;
84
99
  --ring: 240 4.9% 83.9%;
100
+
101
+ --sidebar-background: 240 5.9% 10%;
102
+ --sidebar-foreground: 240 4.8% 95.9%;
103
+ --sidebar-primary: 224.3 76.3% 48%;
104
+ --sidebar-primary-foreground: 0 0% 100%;
105
+ --sidebar-accent: 240 3.7% 15.9%;
106
+ --sidebar-accent-foreground: 240 4.8% 95.9%;
107
+ --sidebar-border: 240 3.7% 15.9%;
108
+ --sidebar-ring: 217.2 91.2% 59.8%;
85
109
  }
86
110
  }