What are Flow Colors?
Flow Colors are derived from Core Colors to represent states, transitions, and overlays. They use OKLAB (Cartesian coordinates) for perceptually uniform mixing.Copy
┌─────────────────────────────────────────────────────────────────────────────────┐
│ CORE vs FLOW │
├─────────────────────────────────────────────────────────────────────────────────┤
│ │
│ CORE (OKLCH Polar) FLOW (OKLAB Cartesian) │
│ ================== ======================== │
│ │
│ "What IS this?" "How does it BEHAVE?" │
│ │
│ Identity colors: State colors: │
│ * Primary (blue) * Hover (lighter) │
│ * Success (green) * Active (darker) │
│ * Danger (red) * Disabled (grayed) │
│ * Warning (yellow) * Muted (transparent) │
│ │
└─────────────────────────────────────────────────────────────────────────────────┘
Why OKLAB for Mixing?
When colors blend together, the path they take through color space matters. OKLAB provides a perceptually straight path.Copy
┌─────────────────────────────────────────────────────────────────────────────────┐
│ sRGB vs OKLAB INTERPOLATION │
├─────────────────────────────────────────────────────────────────────────────────┤
│ │
│ sRGB Path (Blue to Yellow): │
│ ============================ │
│ │
│ Blue ────-> Muddy Brown ────-> Yellow │
│ (desaturated) │
│ │
│ Problem: Non-linear RGB causes desaturation in middle │
│ │
│ ┌───────────────────────────────────────────────────────┐ │
│ │ #### .... .... .... #### │ │
│ │ BLUE gray mud gray YELLOW │ │
│ └───────────────────────────────────────────────────────┘ │
│ │
├─────────────────────────────────────────────────────────────────────────────────┤
│ │
│ OKLAB Path (Blue to Yellow): │
│ ============================= │
│ │
│ Blue ────-> Vibrant Purple ────-> Yellow │
│ (saturated) │
│ │
│ Solution: Perceptually uniform space maintains saturation │
│ │
│ ┌───────────────────────────────────────────────────────┐ │
│ │ #### #### #### #### #### │ │
│ │ BLUE violet purple orange YELLOW │ │
│ └───────────────────────────────────────────────────────┘ │
│ │
│ "When colors flow from Core to Core, OKLAB prevents muddy transitions" │
│ │
└─────────────────────────────────────────────────────────────────────────────────┘
OKLAB Coordinate System
OKLAB uses Cartesian coordinates (L, a, b) - like a 3D box rather than a cylinder.Copy
┌─────────────────────────────────────────────────────────────────────────────────┐
│ OKLAB CARTESIAN SPACE │
├─────────────────────────────────────────────────────────────────────────────────┤
│ │
│ +Y (Yellow) │
│ │ │
│ │ │
│ ┌────────────┼────────────┐ │
│ /│ │ │\ │
│ / │ │ │ \ │
│ -X (Green) │ │ │ +X (Red) │
│ \ │ L (Lightness) │ / │
│ \│ 0=black, 1=white │/ │
│ └────────────┼────────────┘ │
│ │ │
│ │ │
│ -Y (Blue) │
│ │
│ Component Range Meaning │
│ ───────── ───── ─────── │
│ L 0-1 Lightness (0=black, 1=white) │
│ a -0.4 to 0.4 Green-Red axis │
│ b -0.4 to 0.4 Blue-Yellow axis │
│ │
└─────────────────────────────────────────────────────────────────────────────────┘
Flow Patterns
Pattern 1: Transparency
For backgrounds and overlays - create subtle tinted areas.Copy
┌─────────────────────────────────────────────────────────────────────────────────┐
│ TRANSPARENCY FLOW │
├─────────────────────────────────────────────────────────────────────────────────┤
│ │
│ Core Color (100%) │
│ ###################### │
│ Full vibrant blue │
│ │
│ │ mix with transparent 80% │
│ v │
│ │
│ Muted Background (20% visible) │
│ ....##................ │
│ Subtle blue tint │
│ │
│ Use: Badge backgrounds, selection highlights, status areas │
│ │
└─────────────────────────────────────────────────────────────────────────────────┘
Pattern 2: Hover States
For interactive element hover - lighten while preserving identity.Copy
┌─────────────────────────────────────────────────────────────────────────────────┐
│ HOVER LIGHTENING │
├─────────────────────────────────────────────────────────────────────────────────┤
│ │
│ DEFAULT HOVER │
│ ################ --> ....############.... │
│ Base color +15% white added │
│ │
│ Note: Uses OKLCH (polar) to preserve hue while adjusting lightness │
│ │
└─────────────────────────────────────────────────────────────────────────────────┘
Pattern 3: Active/Pressed States
For active/pressed interactions - darken to show engagement.Copy
┌─────────────────────────────────────────────────────────────────────────────────┐
│ ACTIVE DARKENING │
├─────────────────────────────────────────────────────────────────────────────────┤
│ │
│ DEFAULT ACTIVE │
│ ################ --> ################## │
│ Base color +20% black added │
│ │
│ Creates a "pressed in" visual feedback │
│ │
└─────────────────────────────────────────────────────────────────────────────────┘
Pattern 4: Disabled States
For disabled elements - reduce color intensity.Copy
┌─────────────────────────────────────────────────────────────────────────────────┐
│ DISABLED DESATURATION │
├─────────────────────────────────────────────────────────────────────────────────┤
│ │
│ ENABLED DISABLED │
│ ################ --> ................ │
│ Full saturation +60% gray mixed │
│ │
│ Retains color hint but clearly signals non-interactivity │
│ │
└─────────────────────────────────────────────────────────────────────────────────┘
Complete Flow Pattern Reference
Copy
┌─────────────────────────────────────────────────────────────────────────────────┐
│ COMPLETE FLOW PATTERN REFERENCE │
├─────────────────────────────────────────────────────────────────────────────────┤
│ │
│ STATE MODIFIER SPACE VISUAL │
│ ──────────────── ──────────────── ───── ─────────────────────── │
│ │
│ Muted Background transparent 80% OKLAB ....##................ │
│ Hover white 15% OKLCH ....############.... │
│ Active/Pressed black 20% OKLAB ################## │
│ Disabled gray 60% OKLAB ................ │
│ Focus ring transparent 50% OKLAB ..........##.......... │
│ Border transparent 70% OKLAB ......####...... │
│ │
│ RULE OF THUMB: │
│ * Transparency/Darkening -> OKLAB (cartesian) │
│ * Hue-preserving lightness -> OKLCH (polar) │
│ * Core-to-Core interpolation -> OKLAB (no muddy colors) │
│ │
└─────────────────────────────────────────────────────────────────────────────────┘
When to Use Each Color Space
Copy
┌─────────────────────────────────────────────────────────────────────────────────┐
│ OKLAB vs OKLCH SELECTION GUIDE │
├─────────────────────────────────────────────────────────────────────────────────┤
│ │
│ OKLAB OKLCH │
│ ===== ===== │
│ │
│ Best for: Blending operations Lightness adjustments │
│ Transparency Hover states │
│ Darkening Hue preservation │
│ Desaturation │
│ │
│ Think: "Mixing two things" "Adjusting one thing" │
│ │
│ Examples: Muted backgrounds Hover lightening │
│ Gradients Color scales │
│ Active states │
│ Disabled states │
│ │
└─────────────────────────────────────────────────────────────────────────────────┘
State Transitions
Learn how hover, active, and disabled states are derived