DS0
Foundations

Colors

DS0's color system uses semantic tokens that adapt to any theme or brand.

Philosophy

DS0 colors follow a two-layer architecture:

  1. Core palette — Raw color values (gray, blue, red, etc.) at 50–950 scale
  2. Semantic tokens — Intent-based names (primary, destructive, muted) that reference core colors

Components ONLY use semantic tokens. This means changing your brand color is a single token change.

Semantic Colors

TokenPurpose
primary / primary-foregroundMain actions, links, active states
secondary / secondary-foregroundSupporting actions, less prominent
destructive / destructive-foregroundDangerous actions — delete, error
success / success-foregroundPositive states — saved, valid
warning / warning-foregroundCaution states — attention needed
muted / muted-foregroundDisabled, secondary areas
accent / accent-foregroundHover highlights
background / foregroundPage background and default text
card / card-foregroundCard surfaces
popover / popover-foregroundOverlay surfaces
borderDefault borders
inputInput borders
ringFocus ring

Every background token has a matching -foreground token to ensure contrast.

Core Palette

Gray

Gray50

#f9fafb

Gray100

#f3f4f6

Gray200

#e5e7eb

Gray300

#d1d5db

Gray400

#9ca3af

Gray500

#6b7280

Gray600

#4b5563

Gray700

#374151

Gray800

#1f2937

Gray900

#111827

Gray950

#030712

Blue

Blue50

#eff6ff

Blue100

#dbeafe

Blue200

#bfdbfe

Blue300

#93c5fd

Blue400

#60a5fa

Blue500

#3b82f6

Blue600

#2563eb

Blue700

#1d4ed8

Blue800

#1e40af

Blue900

#1e3a8a

Blue950

#172554

Red

Red50

#fef2f2

Red100

#fee2e2

Red200

#fecaca

Red300

#fca5a5

Red400

#f87171

Red500

#ef4444

Red600

#dc2626

Red700

#b91c1c

Red800

#991b1b

Red900

#7f1d1d

Red950

#450a0a

Green

Green50

#f0fdf4

Green100

#dcfce7

Green200

#bbf7d0

Green300

#86efac

Green400

#4ade80

Green500

#22c55e

Green600

#16a34a

Green700

#15803d

Green800

#166534

Green900

#14532d

Green950

#052e16

Amber

Amber50

#fffbeb

Amber100

#fef3c7

Amber200

#fde68a

Amber300

#fcd34d

Amber400

#fbbf24

Amber500

#f59e0b

Amber600

#d97706

Amber700

#b45309

Amber800

#92400e

Amber900

#78350f

Amber950

#451a03

Using Colors

// ✅ Use semantic tokens
<div className="bg-primary text-primary-foreground">Primary action</div>
<div className="bg-destructive text-destructive-foreground">Danger</div>
<div className="text-muted-foreground">Secondary text</div>

// ❌ Never use raw palette in components
<div className="bg-blue-600 text-white">Don't do this</div>

Theming

Override semantic tokens to change your entire theme:

{
  "color": {
    "primary": { "$value": "{color.indigo.600}" },
    "primary-foreground": { "$value": "{color.white}" }
  }
}

See Theming Guide for complete instructions.

On this page