shadcnthemes
All themes

Blue Soft 4

Blue Soft 4 is a blue shadcn/ui theme with rounded corners and serif typography, in light and dark modes.

Sans
Libre Baskerville
Serif
System
Mono
System
Radius
0.5rem
Create project
Deploy your new project in one click.
Visitors
January – June
+12.5%
Buttons
Typography
The theme's three font families.
Sans · Libre Baskerville
The quick brown fox
Serif · System
jumps over the lazy dog.
Mono · System
npx shadcn add button
Account
Notifications
Choose what you want to hear about.
Product updates
New features and releases
Security alerts
Sign-ins from new devices
Marketing
Tips, offers and news
Payment method
Team
Invite your teammates to collaborate.
SDJLINWK
OwnerEditorViewerSuspended
Storage7.2 of 10 GB
Volume64%
Invoices
InvoiceStatusAmount
INV001Paid$250.00
INV002Pending$150.00
INV003Unpaid$350.00
INV004Paid$450.00
FAQ

Yes. It adheres to the WAI-ARIA design pattern.

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.9755 0.0045 258.32);
  --foreground: oklch(0.2558 0.0433 268.07);
  --card: oklch(0.9341 0.0132 251.56);
  --card-foreground: oklch(0.2558 0.0433 268.07);
  --popover: oklch(0.9856 0.0278 98.05);
  --popover-foreground: oklch(0.2558 0.0433 268.07);
  --primary: oklch(0.4092 0.1776 262.6);
  --primary-foreground: oklch(0.9856 0.0278 98.05);
  --secondary: oklch(0.8489 0.1217 81.1);
  --secondary-foreground: oklch(0.2558 0.0433 268.07);
  --muted: oklch(0.9202 0.008 106.56);
  --muted-foreground: oklch(0.4815 0.1178 263.38);
  --accent: oklch(0.591 0.0634 234.68);
  --accent-foreground: oklch(0.9856 0.0278 98.05);
  --destructive: oklch(0.2611 0.0376 322.53);
  --destructive-foreground: oklch(0.9856 0.0278 98.05);
  --border: oklch(0.7791 0.0156 251.19);
  --input: oklch(0.6896 0.0714 234.04);
  --ring: oklch(0.8567 0.1164 81.01);
  --chart-1: oklch(0.4815 0.1178 263.38);
  --chart-2: oklch(0.8567 0.1164 81.01);
  --chart-3: oklch(0.6896 0.0714 234.04);
  --chart-4: oklch(0.7791 0.0156 251.19);
  --chart-5: oklch(0.2611 0.0376 322.53);
  --sidebar: oklch(0.9341 0.0132 251.56);
  --sidebar-foreground: oklch(0.2558 0.0433 268.07);
  --sidebar-primary: oklch(0.4815 0.1178 263.38);
  --sidebar-primary-foreground: oklch(0.9856 0.0278 98.05);
  --sidebar-accent: oklch(0.8567 0.1164 81.01);
  --sidebar-accent-foreground: oklch(0.2558 0.0433 268.07);
  --sidebar-border: oklch(0.7791 0.0156 251.19);
  --sidebar-ring: oklch(0.8567 0.1164 81.01);
  --font-sans: Libre Baskerville, serif;
  --font-serif: ui-serif, Georgia, serif;
  --font-mono: ui-monospace, SFMono-Regular, monospace;
  --radius: 0.5rem;
  --spacing: 0.25rem;
  --tracking-normal: 0em;
  --shadow-color: oklch(0 0 0);
  --shadow-opacity: 0.1;
  --shadow-blur: 8px;
  --shadow-spread: -1px;
  --shadow-offset-x: 0px;
  --shadow-offset-y: 4px;
  --shadow-2xs: 0px 4px 8px -1px hsl(0 0% 0% / 0.05);
  --shadow-xs: 0px 4px 8px -1px hsl(0 0% 0% / 0.05);
  --shadow-sm: 0px 4px 8px -1px hsl(0 0% 0% / 0.10), 0px 1px 2px -2px hsl(0 0% 0% / 0.10);
  --shadow: 0px 4px 8px -1px hsl(0 0% 0% / 0.10), 0px 1px 2px -2px hsl(0 0% 0% / 0.10);
  --shadow-md: 0px 4px 8px -1px hsl(0 0% 0% / 0.10), 0px 2px 4px -2px hsl(0 0% 0% / 0.10);
  --shadow-lg: 0px 4px 8px -1px hsl(0 0% 0% / 0.10), 0px 4px 6px -2px hsl(0 0% 0% / 0.10);
  --shadow-xl: 0px 4px 8px -1px hsl(0 0% 0% / 0.10), 0px 8px 10px -2px hsl(0 0% 0% / 0.10);
  --shadow-2xl: 0px 4px 8px -1px hsl(0 0% 0% / 0.25);
}

.dark {
  --background: oklch(0.2204 0.0198 275.84);
  --foreground: oklch(0.9366 0.0129 266.7);
  --card: oklch(0.2703 0.0407 281.3);
  --card-foreground: oklch(0.9366 0.0129 266.7);
  --popover: oklch(0.2703 0.0407 281.3);
  --popover-foreground: oklch(0.9097 0.144 95.11);
  --primary: oklch(0.4815 0.1178 263.38);
  --primary-foreground: oklch(0.9097 0.144 95.11);
  --secondary: oklch(0.9097 0.144 95.11);
  --secondary-foreground: oklch(0.2703 0.0407 281.3);
  --muted: oklch(0.2424 0.0324 281.09);
  --muted-foreground: oklch(0.6243 0.0412 262.04);
  --accent: oklch(0.8469 0.0524 264.78);
  --accent-foreground: oklch(0.2204 0.0198 275.84);
  --destructive: oklch(0.528 0.12 357.11);
  --destructive-foreground: oklch(0.9097 0.144 95.11);
  --border: oklch(0.3072 0.0287 281.77);
  --input: oklch(0.4815 0.1178 263.38);
  --ring: oklch(0.9097 0.144 95.11);
  --chart-1: oklch(0.4815 0.1178 263.38);
  --chart-2: oklch(0.9097 0.144 95.11);
  --chart-3: oklch(0.6896 0.0714 234.04);
  --chart-4: oklch(0.6243 0.0412 262.04);
  --chart-5: oklch(0.528 0.12 357.11);
  --sidebar: oklch(0.2703 0.0407 281.3);
  --sidebar-foreground: oklch(0.9366 0.0129 266.7);
  --sidebar-primary: oklch(0.4815 0.1178 263.38);
  --sidebar-primary-foreground: oklch(0.9097 0.144 95.11);
  --sidebar-accent: oklch(0.9097 0.144 95.11);
  --sidebar-accent-foreground: oklch(0.2703 0.0407 281.3);
  --sidebar-border: oklch(0.3072 0.0287 281.77);
  --sidebar-ring: oklch(0.9097 0.144 95.11);
  --font-sans: Libre Baskerville, serif;
  --font-serif: ui-serif, Georgia, serif;
  --font-mono: ui-monospace, SFMono-Regular, monospace;
  --radius: 0.5rem;
  --spacing: 0.25rem;
  --tracking-normal: 0em;
  --shadow-color: oklch(0 0 0);
  --shadow-opacity: 0.1;
  --shadow-blur: 8px;
  --shadow-spread: -1px;
  --shadow-offset-x: 0px;
  --shadow-offset-y: 4px;
  --shadow-2xs: 0px 4px 8px -1px hsl(0 0% 0% / 0.05);
  --shadow-xs: 0px 4px 8px -1px hsl(0 0% 0% / 0.05);
  --shadow-sm: 0px 4px 8px -1px hsl(0 0% 0% / 0.10), 0px 1px 2px -2px hsl(0 0% 0% / 0.10);
  --shadow: 0px 4px 8px -1px hsl(0 0% 0% / 0.10), 0px 1px 2px -2px hsl(0 0% 0% / 0.10);
  --shadow-md: 0px 4px 8px -1px hsl(0 0% 0% / 0.10), 0px 2px 4px -2px hsl(0 0% 0% / 0.10);
  --shadow-lg: 0px 4px 8px -1px hsl(0 0% 0% / 0.10), 0px 4px 6px -2px hsl(0 0% 0% / 0.10);
  --shadow-xl: 0px 4px 8px -1px hsl(0 0% 0% / 0.10), 0px 8px 10px -2px hsl(0 0% 0% / 0.10);
  --shadow-2xl: 0px 4px 8px -1px hsl(0 0% 0% / 0.25);
}

@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);
  }
}

Similar themes