Color Values
🎛️ How to Apply Style & Status Variables
🧬 System Structure Overview
Your token system is organized into a clear, layered hierarchy that drives consistency, flexibility, and semantic clarity.
🔁 Core Token Flow
🎨 Primitive Colors
⮕ 🌓 Theme (light/dark)
⮕ 🧱 Substyles (e.g., pure, brand, muted)
⮕ 🎨 Style Collections (grey, cta, brand, alert)
⮕ 🧩 Semantic Collections or Status Collections
⮕ ⌨️ Status (priority or toggle if interactive)This structure allows you to dynamically apply appearance values based on theme mode, contrast tier, behavior, and semantic role.
🎨 Primitive Colors
Primitive colors are the core foundation of our color system — a set of raw hexadecimal values that serve as the base for all other color tokens. Each primitive palette (e.g., eclipse, nebula, uranus) is structured on a 10-step scale, where:
01represents the lightest value10represents the darkest value
This consistent ordering enables clear visual hierarchy, theming flexibility, and predictable scaling across components.
💡 Primitive tokens are never used directly in the UI. Instead, they are re-aliased in the
themecollection to enable contextual control (e.g., light/dark mode), before being applied instyle,semantic, andstatuscollections.
Primitive colors ensure a modular, scalable, and accessible color foundation for all design decisions.
Tier
eclipse
onyx
echo
nebula
cosmic
jupiter
uranus
saturn
neptune
info
success
warning
error
1
#FFFFFF
#FAFAFA
#F7F7F7
#D9CBE6
#EBEDF7
#FFF2E7
#F2F9FB
#FFF7E6
#EBF2F6
#EAF8F6
#ECF9ED
#FDFAE7
#F9ECEC
2
#F0EDEE
#EDEDED
#E0E0E0
#CDB7E1
#C2C8E5
#FFD7B4
#D8ECF3
#FFE5B0
#C2D6E3
#BEE8E4
#C4EBC6
#F8EFB3
#EBC4C4
3
#DAD8D9
#D4D4D4
#C0C0C0
#BD9CDE
#A4ADD9
#FFC490
#C5E3ED
#FFD88A
#A4C3D6
#9FDDD7
#A7E2AA
#F5E78E
#E29898
4
#B9B9B9
#B4B4B4
#A0A0A0
#A681CA
#7A87C7
#FFA95E
#ABD7E4
#FFC754
#7BA7C3
#73CEC5
#7FD483
#F0DC5B
#D47F7F
5
#979797
#999999
#8A8A8A
#996FC3
#6170BD
#FF993E
#9ACFDF
#FFBC33
#6196B7
#58C5BA
#66CC6B
#EDD53B
#CC6666
6
#676767
#777777
#7C7C7C
#7339AC
#394CAC
#FF7F0E
#81C3D7
#FFAB00
#3A7CA5
#2EB6A9
#3AAE40
#E9CB0A
#BE5555
7
#494949
#595959
#707070
#69349D
#34459D
#E8740D
#75B1C4
#E89C00
#357196
#279B8F
#2D8832
#D4B909
#AE3A3A
8
#292929
#3D3D3D
#666666
#52287A
#28367A
#B55A0A
#5C8A99
#B57900
#295875
#19635D
#226626
#6B5D05
#882D2D
9
#1C1C1C
#2C2C2C
#5C5C5C
#3F1F5F
#1F2A5F
#8C4608
#476B76
#8C5E00
#20445B
#114541
#1B501D
#524703
#692323
10
#000000
#1A1A1A
#4C4C4C
#301848
#182048
#6B3506
#36525A
#6B4800
#183445
#0C312E
#153D16
#332C02
#501B1B
🌓 Theme
The theme layer acts as the contrast controller for all primitive color palettes. It does not define new colors — it simply remaps the primitive values to align with the appropriate contrast level for a given mode (e.g., light or dark).
🧩 What Theme Does
Inputs: Primitive tokens (e.g.,
primitive/onyx/01)Outputs: Mode-aware remapping (e.g.,
theme/onyx/01)Function: Reassigns which primitive shade is used for each of the ten contrast tiers (
01–10) depending on the active theme.
🧠 Important Distinction
🔢 In primitive,
01–10means lightest to darkest 🎚 In theme,01–10means lowest to highest contrast
This inversion allows the same theme/onyx/01 token to represent a very light color in light mode and a very dark color in dark mode, depending on which primitive value it's mapped to.
🌗 Example Flow
plaintextCopyEditprimitive/onyx/01 = #FAFAFA
primitive/onyx/10 = #2C2C2C
theme/onyx/01
→ light-mode: onyx/01 (low contrast on light bg)
→ dark-mode: onyx/10 (low contrast on dark bg)
theme/onyx/10
→ light-mode: onyx/10 (high contrast on light bg)
→ dark-mode: onyx/01 (high contrast on dark bg)🎯 Why This Matters
This contrast-centric structure allows all downstream tokens (e.g., style, semantic, status) to remain consistent and agnostic of theme — the theme layer handles inversion and perceptual balancing behind the scenes.
🎨 Style & Substyle Collections
Style Collections define the visual tone applied to components through semantic roles (surface, border, content, ring) and appearance layers. Each collection is structured by contrast tier (01–10) and further organized by substyle, allowing consistent use across interactive and non-interactive elements, themes, and accessibility contexts.
🌑 Grey Style Collection
Used for neutral, non-CTA interface components and foundational UI.
eclipse
High contrast — for bold text or essential controls
onyx
Medium contrast — default UI elements, structural surfaces
echo
Low contrast — subtle dividers, backgrounds, disabled states
✅ Best used in structural layouts, forms, containers, and neutral elements that do not require attention emphasis.
⚠️ Avoid overusing
eclipsein static contexts as it may overpower more important components or CTAs.
🚀 CTA Style Collection
Used primarily for call-to-action elements that drive user decisions.
nebula
Primary action (e.g., Continue, Submit)
cosmic
Secondary action (e.g., Back, Skip)
🛑 Do not apply CTA styles to static UI by default — CTA colors are designed to stand out and imply interactivity.
⚠️ Notable Exception: Visual Emphasis in Non-Interactive Components
You may use cta styling for badges, pills, or tags if:
The component is part of an attention hierarchy (e.g., a
NEWbadge in a feature announcement)It signals a semantic label aligned with a CTA (e.g.,
Recommended,Try Now)It appears in close proximity to an interactive element (e.g., filter chips, onboarding prompts)
In these cases, apply CTA styling sparingly, and ensure it does not compete visually with actual primary actions.
🌌 Brand Style Collection
Represents thematic identity and personality in your product.
jupiter
Warm, vibrant orange — playful, assertive
saturn
Bright yellow — optimistic, high-energy
uranus
Cyan blue — modern, accessible tone
neptune
Deep blue — trustworthy, tech-forward
✅ May be applied to both static and interactive elements when contextually aligned with product branding or storytelling moments.
⚠️ Avoid mixing multiple brand tones within the same view unless your palette system is specifically designed to support that use.
⚠️ Alert Style Collection
Used only in components communicating system feedback, validation states, or user alerts.
info
Hints, suggestions, neutral updates
warning
Cautionary alerts requiring attention
error
Invalid actions or system failures
success
Positive confirmations or task completion
🔗 Always pair with a non-color cue such as:
Icons
Headline or label
ARIA role (e.g.,
role="alert"oraria-live="polite")
🛑 Never use alert styles for decoration. Their purpose is semantic, not aesthetic.
🔗 How It Connects to Semantic Tokens
Once defined, Style Collections are re-aliased into:
Semantic collections (e.g.
surface/default,content/inverse)Priority collections (e.g.
primary,secondary,tertiary)Toggle collections (
selected,unselected)
This allows your system to:
🌒 Adapt across themes (light/dark)
♿ Enforce accessibility (contrast + size)
🔁 Enable modularity and theme flexibility
🎯 Preserve visual clarity through consistent application
🧭 Application Guidelines
✅ Static Components (No user interaction)
Use semantic tokens (not status or behavior-based ones):
Background
background/base
—
Surface
surface/default
surface/inverse
Content
content/default
content/inverse
Border
border/default
border/inverse
When to use
inverse: If the background is dark or colored and the component must contrast it, use the inverse.
Examples:
Labels
Layout containers
Decorative or structural elements
🎯 Interactive Components (Click, hover, focus, etc.)
Use status tokens, and choose one of two paths:
1. Priority-based (Buttons, action pills, CTAs)
status/priority/color/surface
status/priority/color/content
status/priority/color/border
status/priority/ring/border2. Toggle-based (Checkboxes, radios, selectable chips)
status/toggle/color/surface
status/toggle/color/content
status/toggle/ring/borderPro Tip: Status tokens include
default,hover,focus,active,visited, anddisabled. Use these to define visual state progression across interaction.
🔍 Behavior by Component Type
Static Label
Non-interactive
content/default
Card Surface
Static Surface
surface/default
Primary Button
Priority
status/priority/color/surface
Checkbox
Toggle
status/toggle/color/surface
Focus Ring
Focus State
status/priority/ring/border
🔁 Summary Flow (For Designers & Engineers)
Is the component interactive?
If no → use semantic tokens.
If yes → proceed.
Is it a priority or toggle-style?
Priority? → use
status/priority/...Toggle/Selectable? → use
status/toggle/...
Apply appropriate values for each role:
surface,content,border,ringRespect contrast and state (
default,hover, etc.)
Last updated
Was this helpful?

