Design Tokens
Last updated on 2026-03-26
The Social Media Dashboard Kit uses oklch color tokens defined as CSS custom properties in app/globals.css. All components reference these tokens through Tailwind CSS v4 -- never hardcoded colors. The kit ships with a teal/cyan theme (oklch hue 175).
oklch Color System
The kit uses oklch (Oklab Lightness Chroma Hue) instead of hex or hsl:
- Perceptually uniform -- equal steps in lightness look equal to the human eye, so your palette looks balanced without manual tweaking
- Wider gamut -- access to more vibrant colors on modern displays (P3, Rec. 2020)
- Easy palette generation -- change one hue angle to produce a cohesive brand palette across all semantic tokens
The format is oklch(lightness chroma hue) where lightness is 0-1, chroma is 0-0.4 (saturation intensity), and hue is 0-360 (color angle on the color wheel).
Color Tokens
Semantic color tokens that automatically adapt between light and dark mode:
:root {
--background: oklch(0.99 0.002 175);
--foreground: oklch(0.17 0.02 175);
--card: oklch(1 0 0);
--card-foreground: oklch(0.17 0.02 175);
--popover: oklch(1 0 0);
--popover-foreground: oklch(0.17 0.02 175);
--primary: oklch(0.45 0.2 175);
--primary-foreground: oklch(0.98 0.005 175);
--secondary: oklch(0.78 0.14 346);
--secondary-foreground: oklch(0.25 0.05 346);
--muted: oklch(0.96 0.005 175);
--muted-foreground: oklch(0.4 0.03 175);
--accent: oklch(0.94 0.02 175);
--accent-foreground: oklch(0.35 0.15 175);
--destructive: oklch(0.58 0.22 27);
--border: oklch(0.91 0.01 175);
--input: oklch(0.91 0.01 175);
--ring: oklch(0.55 0.18 175);
}
Sidebar Tokens
Dedicated tokens for the dashboard sidebar navigation:
--sidebar: oklch(0.97 0.008 175);
--sidebar-foreground: oklch(0.17 0.02 175);
--sidebar-primary: oklch(0.45 0.2 175);
--sidebar-primary-foreground: oklch(0.98 0.005 175);
--sidebar-accent: oklch(0.93 0.025 175);
--sidebar-accent-foreground: oklch(0.35 0.15 175);
--sidebar-border: oklch(0.91 0.01 175);
--sidebar-ring: oklch(0.55 0.18 175);
Chart Colors
Five chart-specific color tokens used by the Recharts analytics and reporting charts:
--chart-1: oklch(0.55 0.2 175); /* Teal (primary) */
--chart-2: oklch(0.75 0.14 346); /* Pink */
--chart-3: oklch(0.65 0.2 61); /* Amber */
--chart-4: oklch(0.6 0.18 241); /* Blue */
--chart-5: oklch(0.7 0.15 111); /* Green */
Platform Colors
In addition to the oklch theme tokens, the kit uses fixed brand colors for each social platform. These are not theme-dependent -- they remain constant in both light and dark mode to maintain brand recognition:
| Platform | Hex | Usage |
|---|---|---|
#E1306C |
Platform badges, calendar pills, chart segments, stat card accents | |
| Twitter/X | #1DA1F2 |
Platform badges, calendar pills, chart segments, stat card accents |
#1877F2 |
Platform badges, calendar pills, chart segments, stat card accents | |
#0A66C2 |
Platform badges, calendar pills, chart segments, stat card accents | |
| TikTok | #00F2EA |
Platform badges, calendar pills, chart segments, stat card accents |
| YouTube | #FF0000 |
Platform badges, calendar pills, chart segments, stat card accents |
These colors are defined in the PlatformIcon and PlatformBadge components and used consistently throughout the dashboard, calendar, analytics, and reports screens.
Usage in Tailwind
Tokens map directly to Tailwind utility classes. Use them like standard Tailwind colors:
<div className="bg-background text-foreground border-border">
<button className="bg-primary text-primary-foreground">
Compose Post
</button>
<span className="text-muted-foreground">Last synced 2 hours ago</span>
<div className="bg-sidebar text-sidebar-foreground">
Sidebar content
</div>
</div>
Dark Mode
The kit uses next-themes with class-based dark mode. The ThemeToggle component handles the switch:
import { ThemeToggle } from "@/components/layout/theme-toggle"
<ThemeToggle />
Dark mode values are defined in the .dark selector within globals.css:
.dark {
--background: oklch(0.16 0.02 175);
--foreground: oklch(0.96 0.005 175);
--card: oklch(0.21 0.025 175);
--card-foreground: oklch(0.96 0.005 175);
--primary: oklch(0.7 0.18 175);
--primary-foreground: oklch(0.15 0.02 175);
--secondary: oklch(0.72 0.14 346);
--secondary-foreground: oklch(0.18 0.04 346);
--muted: oklch(0.27 0.025 175);
--muted-foreground: oklch(0.7 0.03 175);
--accent: oklch(0.32 0.05 175);
--accent-foreground: oklch(0.92 0.01 175);
--destructive: oklch(0.704 0.191 22.216);
--border: oklch(1 0 0 / 12%);
--input: oklch(1 0 0 / 15%);
--ring: oklch(0.6 0.16 175);
}
All semantic tokens automatically switch when the theme changes. The ThemeToggle component includes proper aria-label text that updates to reflect the current action ("Switch to light mode" / "Switch to dark mode").
Typography
The kit uses three font families configured in app/layout.tsx:
| Token | Font | Usage |
|---|---|---|
--font-sans |
Inter | Body text |
--font-heading |
DM Sans | Headings (h1-h6) |
--font-mono |
JetBrains Mono | Code blocks |
Headings use tighter letter-spacing (-0.025em) and shorter line-height (1.2) for visual weight. Body text uses -0.011em letter-spacing with 1.6 line-height for readability.
Animations
The kit includes a set of premium CSS animations defined in globals.css:
| Animation | Class | Usage |
|---|---|---|
| Fade in up | .animate-fade-in-up |
Page sections, card entrances |
| Fade in | .animate-fade-in |
Overlay backgrounds, subtle reveals |
| Scale in | .animate-scale-in |
Dialogs, popovers, tooltips |
| Float | .animate-float |
Decorative elements |
| Shimmer | .animate-shimmer |
Loading skeleton states |
Stagger classes (.stagger-1 through .stagger-6) add incremental delays of 100ms for sequenced entrance animations.
All animations respect the prefers-reduced-motion media query (see Accessibility).
Customizing for Your Brand
To rebrand the kit, change the hue value in app/globals.css. The default teal/cyan theme uses hue 175. Update it to your brand color and all 35+ screens adapt automatically:
:root {
/* Change hue from 175 (teal) to 270 (indigo) */
--primary: oklch(0.45 0.2 270);
--primary-foreground: oklch(0.98 0 0);
--ring: oklch(0.55 0.18 270);
/* Update remaining tokens to match... */
}
.dark {
--primary: oklch(0.7 0.18 270);
--primary-foreground: oklch(0.15 0.02 270);
/* ... */
}
All components automatically inherit the new palette -- buttons, badges, links, charts, sidebar accents, calendar highlights, and focus rings all update at once. Platform brand colors remain fixed regardless of the theme hue.
For full customization details, see the Customization guide.