Indigo Softpurple
All themes
Violet Dusk
Violet Dusk is a purple shadcn/ui theme with pill corners and sans-serif typography, in light and dark modes.
- Sans
- Plus Jakarta Sans
- Serif
- System
- Mono
- JetBrains Mono
- Radius
- 1rem
Heads up!
You can add components to your app using the CLI.
Payment failed
Please update your billing details.
Colors
Click any swatch to copy its OKLCH value.
Base
Brand
Lines
Charts
Sidebar
StatusOptional, generated to match
Use this theme
Install it with the shadcn CLI, paste the CSS, or export tokens for your design tool.
Paste into app/globals.css, replacing the existing :root and .dark blocks.
:root {
--background: oklch(0.9838 0.0035 247.86);
--foreground: oklch(0.1284 0.0267 261.59);
--card: oklch(1 0 0);
--card-foreground: oklch(0.1284 0.0267 261.59);
--popover: oklch(1 0 0);
--popover-foreground: oklch(0.1284 0.0267 261.59);
--primary: oklch(0.4865 0.2423 291.87);
--primary-foreground: oklch(0.9838 0.0035 247.86);
--secondary: oklch(0.9486 0.0085 303.51);
--secondary-foreground: oklch(0.341 0.1625 292.95);
--muted: oklch(0.9679 0.0027 264.54);
--muted-foreground: oklch(0.5503 0.0235 264.36);
--accent: oklch(0.9546 0.0227 303.29);
--accent-foreground: oklch(0.4865 0.2423 291.87);
--destructive: oklch(0.6356 0.2082 25.38);
--destructive-foreground: oklch(0.9838 0.0035 247.86);
--border: oklch(0.9278 0.0058 264.53);
--input: oklch(0.9278 0.0058 264.53);
--ring: oklch(0.4865 0.2423 291.87);
--chart-1: oklch(0.4865 0.2423 291.87);
--chart-2: oklch(0.7216 0.1282 217.87);
--chart-3: oklch(0.6356 0.1398 156.15);
--chart-4: oklch(0.6192 0.2037 312.73);
--chart-5: oklch(0.6532 0.2114 353.94);
--sidebar: oklch(1 0 0);
--sidebar-foreground: oklch(0.1284 0.0267 261.59);
--sidebar-primary: oklch(0.4865 0.2423 291.87);
--sidebar-primary-foreground: oklch(0.9838 0.0035 247.86);
--sidebar-accent: oklch(0.9486 0.0085 303.51);
--sidebar-accent-foreground: oklch(0.4865 0.2423 291.87);
--sidebar-border: oklch(0.9278 0.0058 264.53);
--sidebar-ring: oklch(0.4865 0.2423 291.87);
--font-sans: Plus Jakarta Sans, Inter, system-ui, sans-serif;
--font-serif: Georgia, serif;
--font-mono: JetBrains Mono, monospace;
--radius: 1rem;
--spacing: 0.25rem;
--tracking-normal: -0.02em;
--shadow-color: oklch(0.4865 0.2423 291.87);
--shadow-opacity: 0.08;
--shadow-blur: 30px;
--shadow-spread: 0px;
--shadow-offset-x: 0px;
--shadow-offset-y: 8px;
--shadow-2xs: 0px 8px 30px 0px hsl(263 70% 50% / 0.04);
--shadow-xs: 0px 8px 30px 0px hsl(263 70% 50% / 0.04);
--shadow-sm: 0px 8px 30px 0px hsl(263 70% 50% / 0.08), 0px 1px 2px -1px hsl(263 70% 50% / 0.08);
--shadow: 0px 8px 30px 0px hsl(263 70% 50% / 0.08), 0px 1px 2px -1px hsl(263 70% 50% / 0.08);
--shadow-md: 0px 8px 30px 0px hsl(263 70% 50% / 0.08), 0px 2px 4px -1px hsl(263 70% 50% / 0.08);
--shadow-lg: 0px 8px 30px 0px hsl(263 70% 50% / 0.08), 0px 4px 6px -1px hsl(263 70% 50% / 0.08);
--shadow-xl: 0px 8px 30px 0px hsl(263 70% 50% / 0.08), 0px 8px 10px -1px hsl(263 70% 50% / 0.08);
--shadow-2xl: 0px 8px 30px 0px hsl(263 70% 50% / 0.20);
}
.dark {
--background: oklch(0.1091 0.0091 301.7);
--foreground: oklch(0.9838 0.0035 247.86);
--card: oklch(0.1376 0.0118 301.06);
--card-foreground: oklch(0.9838 0.0035 247.86);
--popover: oklch(0.1486 0.014 299.98);
--popover-foreground: oklch(0.9838 0.0035 247.86);
--primary: oklch(0.6083 0.2172 297.12);
--primary-foreground: oklch(0.1091 0.0091 301.7);
--secondary: oklch(0.2363 0.0582 299.64);
--secondary-foreground: oklch(0.8266 0.0933 301.95);
--muted: oklch(0.2217 0.0242 299.71);
--muted-foreground: oklch(0.7497 0.0224 301.01);
--accent: oklch(0.2255 0.0836 296.74);
--accent-foreground: oklch(0.6083 0.2172 297.12);
--destructive: oklch(0.6356 0.2082 25.38);
--destructive-foreground: oklch(0.9838 0.0035 247.86);
--border: oklch(0.2505 0.0293 299.57);
--input: oklch(0.2505 0.0293 299.57);
--ring: oklch(0.6083 0.2172 297.12);
--chart-1: oklch(0.6083 0.2172 297.12);
--chart-2: oklch(0.7741 0.1272 215.1);
--chart-3: oklch(0.7801 0.1859 154.59);
--chart-4: oklch(0.7001 0.1882 313.29);
--chart-5: oklch(0.6888 0.2092 353.13);
--sidebar: oklch(0.1249 0.0104 301.7);
--sidebar-foreground: oklch(0.9838 0.0035 247.86);
--sidebar-primary: oklch(0.6083 0.2172 297.12);
--sidebar-primary-foreground: oklch(0.1091 0.0091 301.7);
--sidebar-accent: oklch(0.2096 0.0482 299.95);
--sidebar-accent-foreground: oklch(0.6083 0.2172 297.12);
--sidebar-border: oklch(0.2217 0.0242 299.71);
--sidebar-ring: oklch(0.6083 0.2172 297.12);
--font-sans: Plus Jakarta Sans, Inter, system-ui, sans-serif;
--font-serif: Georgia, serif;
--font-mono: JetBrains Mono, monospace;
--radius: 1rem;
--spacing: 0.25rem;
--tracking-normal: -0.02em;
--shadow-color: oklch(0 0 0);
--shadow-opacity: 0.6;
--shadow-blur: 40px;
--shadow-spread: -10px;
--shadow-offset-x: 0px;
--shadow-offset-y: 20px;
--shadow-2xs: 0px 20px 40px -10px hsl(0 0% 0% / 0.30);
--shadow-xs: 0px 20px 40px -10px hsl(0 0% 0% / 0.30);
--shadow-sm: 0px 20px 40px -10px hsl(0 0% 0% / 0.60), 0px 1px 2px -11px hsl(0 0% 0% / 0.60);
--shadow: 0px 20px 40px -10px hsl(0 0% 0% / 0.60), 0px 1px 2px -11px hsl(0 0% 0% / 0.60);
--shadow-md: 0px 20px 40px -10px hsl(0 0% 0% / 0.60), 0px 2px 4px -11px hsl(0 0% 0% / 0.60);
--shadow-lg: 0px 20px 40px -10px hsl(0 0% 0% / 0.60), 0px 4px 6px -11px hsl(0 0% 0% / 0.60);
--shadow-xl: 0px 20px 40px -10px hsl(0 0% 0% / 0.60), 0px 8px 10px -11px hsl(0 0% 0% / 0.60);
--shadow-2xl: 0px 20px 40px -10px hsl(0 0% 0% / 1.50);
}
@theme inline {
--color-background: var(--background);
--color-foreground: var(--foreground);
--color-card: var(--card);
--color-card-foreground: var(--card-foreground);
--color-popover: var(--popover);
--color-popover-foreground: var(--popover-foreground);
--color-primary: var(--primary);
--color-primary-foreground: var(--primary-foreground);
--color-secondary: var(--secondary);
--color-secondary-foreground: var(--secondary-foreground);
--color-muted: var(--muted);
--color-muted-foreground: var(--muted-foreground);
--color-accent: var(--accent);
--color-accent-foreground: var(--accent-foreground);
--color-destructive: var(--destructive);
--color-destructive-foreground: var(--destructive-foreground);
--color-border: var(--border);
--color-input: var(--input);
--color-ring: var(--ring);
--color-chart-1: var(--chart-1);
--color-chart-2: var(--chart-2);
--color-chart-3: var(--chart-3);
--color-chart-4: var(--chart-4);
--color-chart-5: var(--chart-5);
--color-sidebar: var(--sidebar);
--color-sidebar-foreground: var(--sidebar-foreground);
--color-sidebar-primary: var(--sidebar-primary);
--color-sidebar-primary-foreground: var(--sidebar-primary-foreground);
--color-sidebar-accent: var(--sidebar-accent);
--color-sidebar-accent-foreground: var(--sidebar-accent-foreground);
--color-sidebar-border: var(--sidebar-border);
--color-sidebar-ring: var(--sidebar-ring);
--font-sans: var(--font-sans);
--font-mono: var(--font-mono);
--font-serif: var(--font-serif);
--radius-sm: calc(var(--radius) - 4px);
--radius-md: calc(var(--radius) - 2px);
--radius-lg: var(--radius);
--radius-xl: calc(var(--radius) + 4px);
--shadow-2xs: var(--shadow-2xs);
--shadow-xs: var(--shadow-xs);
--shadow-sm: var(--shadow-sm);
--shadow: var(--shadow);
--shadow-md: var(--shadow-md);
--shadow-lg: var(--shadow-lg);
--shadow-xl: var(--shadow-xl);
--shadow-2xl: var(--shadow-2xl);
--tracking-tighter: calc(var(--tracking-normal) - 0.05em);
--tracking-tight: calc(var(--tracking-normal) - 0.025em);
--tracking-normal: var(--tracking-normal);
--tracking-wide: calc(var(--tracking-normal) + 0.025em);
--tracking-wider: calc(var(--tracking-normal) + 0.05em);
--tracking-widest: calc(var(--tracking-normal) + 0.1em);
}
@layer base {
body {
letter-spacing: var(--tracking-normal);
}
}