Color

Color Systems

Building a functional palette

Key Insight

A color system defines a comprehensive, structured palette—including greys, primary shades, accents, and semantic colors—built using HSL for intuitive manipulation and designed to meet accessibility contrast requirements.

Key Points

  • Ditch hex for HSL—it's far more intuitive for creating shade variations
  • You need more colors than you think: 8-10 shades of grey, 5-10 shades per primary color
  • Define your shades up front: pick a middle base, then create lighter and darker variations
  • Don't let lightness kill your saturation—lighter shades need reduced saturation to avoid looking washed out
  • Greys don't have to be grey—add a subtle hue (cool blue or warm yellow) for personality
  • Accessible doesn't have to mean ugly—4.5:1 contrast is achievable with good color choices
  • Don't rely on color alone—always pair color with text, icons, or patterns for accessibility
  • [FIGURE — HSL vs Hex manipulation] Shows: Color picker comparing hex adjustment vs HSL sliders for creating variations. Teaches: HSL lets you reason about color in human terms—"lighter and less saturated"—while hex is opaque. Reproduce as: Interactive color picker with HSL controls.
  • [FIGURE — Full shade palette] Shows: Complete color palette with 9 shades of grey, primary, and accent colors from light to dark. Teaches: Professional palettes need full shade ranges for backgrounds, borders, text, and interactive states. Reproduce as: Palette generator with shade count control. Data: 50, 100, 200, 300, 400, 500, 600, 700, 800, 900.
  • [FIGURE — Saturation-lightness relationship] Shows: Two lighter shade attempts—one with maintained saturation (washed out), one with reduced saturation (balanced). Teaches: As lightness increases, saturation must decrease to keep colors from looking garish. Reproduce as: Interactive shade generator showing S/L balance.
  • [FIGURE — Saturation for dark shades] Shows: Dark shade with low saturation (muddy) vs increased saturation (rich). Teaches: As lightness decreases, increase saturation to maintain color richness and prevent muddiness. Reproduce as: Dark shade adjuster.
  • [FIGURE — Tinted greys] Shows: Pure grey scale vs cool grey (blue tint) vs warm grey (yellow tint). Teaches: Adding 5-15% saturation with a hue makes greys feel intentional and cohesive with brand. Reproduce as: Grey scale with hue/saturation controls.
  • [FIGURE — Accessible color pairing] Shows: Text/background combinations with contrast ratios passing and failing WCAG 4.5:1. Teaches: Accessibility is achievable with intentional color choices—darker text shades on lighter backgrounds from the same palette. Reproduce as: Contrast checker with pass/fail indicators.
  • [FIGURE — Color-independent design] Shows: Alert message using only color vs using color + icon + text. Teaches: Color should reinforce meaning, not be the only indicator—ensures accessibility for colorblind users. Reproduce as: Alert component with toggleable accessibility features.

Guidelines

  • Build your grey scale first (it's used most)—from near-white (#fafafa) to near-black (#111827) in 8-10 steps
  • For each primary/accent color, create a full range from very light (backgrounds, highlights) to very dark (text on light backgrounds)
  • Use lighter shades for backgrounds, medium for borders and icons, and darker shades for text
  • Test all text/background combinations against WCAG contrast requirements before finalizing
  • Add a subtle hue to your greys to match your brand temperature—pure grey (#808080) feels lifeless
  • Define semantic colors (red=error, green=success, yellow=warning, blue=info) with their own shade ranges for flexible usage

Want to learn this interactively?

Experience hands-on experiments and test your understanding.

Start Learning
🔥

Practice this topic

Active recall — strengthens long-term retention

Related Topics