Version: 3.5.13

Color

Color token values are defined by context. Toggle theme and hue to preview each context.

Overview

Beacon uses color tokens to keep UI consistent, themeable, and accessible. In product UI, prefer the brand role tokens (background/foreground/border) and treat the palette as reference.

  • Use role tokens for implementation: --bg-*, --fg-*, --border-*.
  • Avoid hard-coded hex values in components.
  • Palette tokens (--color-*) are primarily for reference and token wiring.
General concepts

Color themes and device color modes aren't synonymous. Themes are tailored to the product; modes are system-wide. Use theme-aware tokens so the UI remains readable and intentional.

In Beacon, context comes from two switches:

  • data-theme (light/dark) overrides brand role tokens.
  • data-hue (chromatic/sky/indigo) changes the semantic primary palette that brand roles reference.
Token mapping

Beacon uses a three-layer token system where each layer references the one below it. This creates a flexible, maintainable color system.

Primitives
--color-purple-500

Raw color values defined in hex. These are the foundation colors that never change.

Semantic
--color-primary-500

Context-aware colors that reference primitives. The primary color changes based on the selected hue (chromatic/sky/indigo).

Brand
--bg-primary

Product-facing role tokens that reference semantic tokens. These adapt to both theme (light/dark) and hue settings.

Example mapping: --bg-primary--color-primary-500--color-purple-500 (when hue is "chromatic-prime")

Theme
Hue
Palette

Palette tokens are reference values and semantic wiring. Use role tokens for product UI, and use this section to understand the underlying system.

Primitives
Raw color families (hex + alpha variants).
Purple
(unavailable)
Blue
(unavailable)
Gray
(unavailable)
Chromatic
(unavailable)
Green
(unavailable)
Orange
(unavailable)
Red
(unavailable)
White (alpha)
(unavailable)
Black (alpha)
(unavailable)
Semantic
Semantic families (primary is hue-dependent).
Primary
(unavailable)
Neutral
(unavailable)
Success
(unavailable)
Warning
(unavailable)
Critical
(unavailable)
Alpha Neutral White
(unavailable)
Alpha Neutral Black
(unavailable)
Brand

These are the product-facing color roles. Prefer these in components and avoid selecting raw palette values by appearance.

Background
Surface and status backgrounds. Use these for containers, fills, and stateful backgrounds.
Token
Role
Preview
Resolved
Actions
--bg-page-primary
Page Primary
Default app background for main surfaces.
Aa
Preview
(unavailable)
dark:hue-sky
--bg-page-secondary
Page Secondary
Secondary surface background for grouped content.
Aa
Preview
(unavailable)
dark:hue-sky
--bg-page-tertiary
Page Tertiary
Tertiary surface background for subtle elevation.
Aa
Preview
(unavailable)
dark:hue-sky
--bg-white
White Surface (Brand)
A “white” surface role that adapts to theme.
Aa
Preview
(unavailable)
dark:hue-sky
--bg-disabled
Disabled Background
Background for disabled containers or controls.
Aa
Preview
(unavailable)
dark:hue-sky
--bg-transparent
Transparent Background
Transparent background role (use for overlays/ghost elements).
Aa
Preview
(unavailable)
dark:hue-sky
--bg-primary
Brand
Primary brand action background.
Aa
Preview
(unavailable)
dark:hue-sky
--bg-primary-on-hover
Brand Hover
Hover background for primary brand actions.
Aa
Preview
(unavailable)
dark:hue-sky
--bg-primary-pressed
Brand Pressed
Pressed background for primary brand actions.
Aa
Preview
(unavailable)
dark:hue-sky
--bg-primary-on-focused
Brand Focus
Focus background for primary brand actions (when specified).
Aa
Preview
(unavailable)
dark:hue-sky
--bg-primary-disabled
Brand Disabled
Disabled background for brand actions.
Aa
Preview
(unavailable)
dark:hue-sky
--bg-primary-tonal
Brand Tonal
Tonal brand surface (subtle emphasis).
Aa
Preview
(unavailable)
dark:hue-sky
--bg-primary-tonal-on-hover
Brand Tonal Hover
Hover state for tonal brand surfaces.
Aa
Preview
(unavailable)
dark:hue-sky
--bg-primary-dark
Brand Dark
High-contrast brand surface role (when specified).
Aa
Preview
(unavailable)
dark:hue-sky
--bg-success
Success
Success status background.
Aa
Preview
(unavailable)
dark:hue-sky
--bg-success-on-hover
Success Hover
Hover background for success actions.
Aa
Preview
(unavailable)
dark:hue-sky
--bg-success-tonal
Success Tonal
Tonal success surface (banners, subtle callouts).
Aa
Preview
(unavailable)
dark:hue-sky
--bg-success-dark
Success Dark
High-contrast success surface role (when specified).
Aa
Preview
(unavailable)
dark:hue-sky
--bg-warning
Warning
Warning status background.
Aa
Preview
(unavailable)
dark:hue-sky
--bg-warning-on-hover
Warning Hover
Hover background for warning actions.
Aa
Preview
(unavailable)
dark:hue-sky
--bg-warning-tonal
Warning Tonal
Tonal warning surface (banners, subtle callouts).
Aa
Preview
(unavailable)
dark:hue-sky
--bg-warning-dark
Warning Dark
High-contrast warning surface role (when specified).
Aa
Preview
(unavailable)
dark:hue-sky
--bg-critical
Critical
Critical/error status background.
Aa
Preview
(unavailable)
dark:hue-sky
--bg-critical-on-hover
Critical Hover
Hover background for critical actions.
Aa
Preview
(unavailable)
dark:hue-sky
--bg-critical-tonal
Critical Tonal
Tonal critical surface (banners, subtle callouts).
Aa
Preview
(unavailable)
dark:hue-sky
--bg-critical-dark
Critical Dark
High-contrast critical surface role (when specified).
Aa
Preview
(unavailable)
dark:hue-sky
Foreground
Text and icon colors. Use these for readable content and semantic emphasis.
Token
Role
Preview
Resolved
Actions
--fg-neutral
Neutral
Default text color for reading.
Aa
Preview
(unavailable)
dark:hue-sky
--fg-neutral-secondary
Neutral Secondary
Secondary text (supporting content, metadata).
Aa
Preview
(unavailable)
dark:hue-sky
--fg-neutral-tertiary
Neutral Tertiary
Tertiary text (helper text, quiet labels).
Aa
Preview
(unavailable)
dark:hue-sky
--fg-primary
Primary
Brand foreground (links, accents).
Aa
Preview
(unavailable)
dark:hue-sky
--fg-primary-on-hover
Primary Hover
Hover foreground for brand accents.
Aa
Preview
(unavailable)
dark:hue-sky
--fg-primary-pressed
Primary Pressed
Pressed foreground for brand accents.
Aa
Preview
(unavailable)
dark:hue-sky
--fg-primary-on-focus
Primary Focus
Focus foreground for brand accents (when specified).
Aa
Preview
(unavailable)
dark:hue-sky
--fg-primary-tonal
Primary Tonal
Foreground on tonal brand surfaces (paired with tonal roles).
Aa
Preview
(unavailable)
dark:hue-sky
--fg-primary-on-tonal
Primary On Tonal
Readable text/icon color on tonal brand surfaces.
Aa
Preview
(unavailable)
dark:hue-sky
--fg-primary-disabled
Primary Disabled
Disabled foreground for brand accents.
Aa
Preview
(unavailable)
dark:hue-sky
--fg-critical
Critical
Critical foreground (errors, destructive actions).
Aa
Preview
(unavailable)
dark:hue-sky
--fg-critical-tonal
Critical Tonal
Foreground on tonal critical surfaces.
Aa
Preview
(unavailable)
dark:hue-sky
--fg-critical-on-tonal
Critical On Tonal
Readable text/icon color on tonal critical surfaces.
Aa
Preview
(unavailable)
dark:hue-sky
--fg-warning
Warning
Warning foreground.
Aa
Preview
(unavailable)
dark:hue-sky
--fg-warning-tonal
Warning Tonal
Foreground on tonal warning surfaces.
Aa
Preview
(unavailable)
dark:hue-sky
--fg-warning-on-tonal
Warning On Tonal
Readable text/icon color on tonal warning surfaces.
Aa
Preview
(unavailable)
dark:hue-sky
--fg-success
Success
Success foreground.
Aa
Preview
(unavailable)
dark:hue-sky
--fg-success-tonal
Success Tonal
Foreground on tonal success surfaces.
Aa
Preview
(unavailable)
dark:hue-sky
--fg-success-on-tonal
Success On Tonal
Readable text/icon color on tonal success surfaces.
Aa
Preview
(unavailable)
dark:hue-sky
--fg-on-action
On Action
High-contrast foreground on strong action backgrounds.
Aa
Preview
(unavailable)
dark:hue-sky
--fg-white
White
White foreground role (for high-contrast cases).
Aa
Preview
(unavailable)
dark:hue-sky
--fg-disabled
Disabled
Disabled text/icon foreground.
Aa
Preview
(unavailable)
dark:hue-sky
--fg-on-disabled
On Disabled
Foreground used on disabled surfaces (paired with disabled background).
Aa
Preview
(unavailable)
dark:hue-sky
Border
Stroke colors. Use these for outlines, dividers, and focus/active borders.
Token
Role
Preview
Resolved
Actions
--border-neutral-primary
Neutral Primary
Primary neutral border for controls and containers.
Aa
Preview
(unavailable)
dark:hue-sky
--border-neutral-secondary
Neutral Secondary
Secondary neutral border for subtle separation.
Aa
Preview
(unavailable)
dark:hue-sky
--border-neutral-tertiary
Neutral Tertiary
Tertiary border for light dividers.
Aa
Preview
(unavailable)
dark:hue-sky
--border-strong
Strong
Strong outline for high emphasis separation.
Aa
Preview
(unavailable)
dark:hue-sky
--border-strong-100
Strong 100
Strong border with alpha (light emphasis).
Aa
Preview
(unavailable)
dark:hue-sky
--border-strong-200
Strong 200
Strong border with alpha (medium emphasis).
Aa
Preview
(unavailable)
dark:hue-sky
--border-primary
Primary
Brand border for focused/active elements.
Aa
Preview
(unavailable)
dark:hue-sky
--border-primary-on-hover
Primary Hover
Hover border for brand accents.
Aa
Preview
(unavailable)
dark:hue-sky
--border-primary-pressed
Primary Pressed
Pressed border for brand accents.
Aa
Preview
(unavailable)
dark:hue-sky
--border-primary-disabled
Primary Disabled
Disabled border for brand accents.
Aa
Preview
(unavailable)
dark:hue-sky
--border-primary-tonal
Primary Tonal
Border on tonal brand surfaces.
Aa
Preview
(unavailable)
dark:hue-sky
--border-success
Success
Success border.
Aa
Preview
(unavailable)
dark:hue-sky
--border-success-tonal
Success Tonal
Border on tonal success surfaces.
Aa
Preview
(unavailable)
dark:hue-sky
--border-warning
Warning
Warning border.
Aa
Preview
(unavailable)
dark:hue-sky
--border-warning-tonal
Warning Tonal
Border on tonal warning surfaces.
Aa
Preview
(unavailable)
dark:hue-sky
--border-critical
Critical
Critical border.
Aa
Preview
(unavailable)
dark:hue-sky
--border-critical-tonal
Critical Tonal
Border on tonal critical surfaces.
Aa
Preview
(unavailable)
dark:hue-sky
--border-on-action
On Action
Border/outline on strong action backgrounds (for contrast).
Aa
Preview
(unavailable)
dark:hue-sky
--border-white
White
White border role (for high-contrast cases).
Aa
Preview
(unavailable)
dark:hue-sky
--border-disabled
Disabled
Disabled borders.
Aa
Preview
(unavailable)
dark:hue-sky
Static
Non-adaptive colors for specific cases where theme switching must not change the output.
Token
Role
Preview
Resolved
Actions
--static-white
Static White
Absolute white (non-adaptive).
Aa
Preview
(unavailable)
dark:hue-sky
--static-black
Static Black
Absolute black (non-adaptive).
Aa
Preview
(unavailable)
dark:hue-sky
--static-primary
Static Primary
Absolute primary (non-adaptive).
Aa
Preview
(unavailable)
dark:hue-sky
--static-light-on-dark
Static Light on Dark
Light-on-dark role for static compositions.
Aa
Preview
(unavailable)
dark:hue-sky
Utilities
Overlay colors, pattern ink tokens, and utility roles (commonly for backdrops, focus lock, and CSS background patterns).
Token
Role
Preview
Resolved
Actions
--util-overlay-dull
Overlay Dull
Dull overlay for subtle dimming.
Aa
Preview
(unavailable)
dark:hue-sky
--util-overlay-light
Overlay Light
Light overlay for dimming surfaces.
Aa
Preview
(unavailable)
dark:hue-sky
--util-overlay-medium
Overlay Medium
Medium overlay for modals/drawers.
Aa
Preview
(unavailable)
dark:hue-sky
--util-overlay-strong
Overlay Strong
Strong overlay for focus/attention lock.
Aa
Preview
(unavailable)
dark:hue-sky
--util-pattern-ink-1
Pattern Ink 1
Primary pattern color for CSS background patterns (strongest opacity).
Aa
Preview
(unavailable)
dark:hue-sky
--util-pattern-ink-2
Pattern Ink 2
Secondary pattern color for CSS background patterns (medium opacity).
Aa
Preview
(unavailable)
dark:hue-sky
--util-pattern-ink-3
Pattern Ink 3
Tertiary pattern color for CSS background patterns (light opacity).
Aa
Preview
(unavailable)
dark:hue-sky
--util-pattern-ink-4
Pattern Ink 4
Quaternary pattern color for CSS background patterns (lightest opacity).
Aa
Preview
(unavailable)
dark:hue-sky
Shadows
Shadow color tokens used by effect tokens (e.g., drop shadows).
Token
Role
Preview
Resolved
Actions
--shadow-none
Shadow None
Shadow color for no/transparent shadow.
Aa
Preview
(unavailable)
dark:hue-sky
--shadow-subtle
Shadow Subtle
Shadow color for subtle elevation.
Aa
Preview
(unavailable)
dark:hue-sky
--shadow-normal
Shadow Normal
Shadow color for normal elevation.
Aa
Preview
(unavailable)
dark:hue-sky
--shadow-medium
Shadow Medium
Shadow color for medium elevation.
Aa
Preview
(unavailable)
dark:hue-sky
--shadow-strong
Shadow Strong
Shadow color for strong elevation.
Aa
Preview
(unavailable)
dark:hue-sky
Contrast ratio

This section computes contrast in the current theme/hue context and evaluates against WCAG AA (small text).

Contrast is calculated using the WCAG relative luminance formula and evaluated against WCAG 2.1 Level AA standards. 4.5:1 applies to normal text (body text, labels, paragraphs). 3:1 applies to large text (≥18pt regular or ≥14pt bold).
Pairing
Background
Foreground
Ratio
AA (3:1)
AA (4.5:1)
On-action text
Use for primary brand actions (buttons, strong emphasis).
--bg-primary
(unavailable)
--fg-on-action
(unavailable)
Body text on page
Default reading text on primary page background.
--bg-page-primary
(unavailable)
--fg-neutral
(unavailable)
Secondary text on page
Metadata/supporting text; verify AA for your font size.
--bg-page-primary
(unavailable)
--fg-neutral-secondary
(unavailable)
Tertiary text on page
Helper text, quiet labels; may not meet AA for small text.
--bg-page-primary
(unavailable)
--fg-neutral-tertiary
(unavailable)
Primary link on page
Brand links and accents on primary background.
--bg-page-primary
(unavailable)
--fg-primary
(unavailable)
Body text on secondary page
Default reading text on secondary page background.
--bg-page-secondary
(unavailable)
--fg-neutral
(unavailable)
Body text on tertiary page
Default reading text on tertiary page background.
--bg-page-tertiary
(unavailable)
--fg-neutral
(unavailable)
Primary tonal
Tonal brand surfaces (banners, subtle emphasis).
--bg-primary-tonal
(unavailable)
--fg-primary-on-tonal
(unavailable)
Success tonal
Tonal success surfaces (banners, callouts).
--bg-success-tonal
(unavailable)
--fg-success-on-tonal
(unavailable)
Success link on page
Success foreground on primary background.
--bg-page-primary
(unavailable)
--fg-success
(unavailable)
Warning tonal
Tonal warning surfaces (banners, callouts).
--bg-warning-tonal
(unavailable)
--fg-warning-on-tonal
(unavailable)
Warning link on page
Warning foreground on primary background.
--bg-page-primary
(unavailable)
--fg-warning
(unavailable)
Critical tonal
Tonal critical surfaces (banners, callouts).
--bg-critical-tonal
(unavailable)
--fg-critical-on-tonal
(unavailable)
Critical link on page
Critical foreground on primary background.
--bg-page-primary
(unavailable)
--fg-critical
(unavailable)
Disabled content
Disabled states should still be readable where required.
--bg-disabled
(unavailable)
--fg-on-disabled
(unavailable)
Disabled text on page
Disabled text on primary background.
--bg-page-primary
(unavailable)
--fg-disabled
(unavailable)
On-success action
Text on success action backgrounds (buttons).
--bg-success
(unavailable)
--fg-on-action
(unavailable)
On-warning action
Text on warning action backgrounds (buttons).
--bg-warning
(unavailable)
--fg-on-action
(unavailable)
On-critical action
Text on critical action backgrounds (buttons).
--bg-critical
(unavailable)
--fg-on-action
(unavailable)
On-primary dark
Text on high-contrast brand surfaces.
--bg-primary-dark
(unavailable)
--fg-on-action
(unavailable)
On-success dark
Text on high-contrast success surfaces.
--bg-success-dark
(unavailable)
--fg-on-action
(unavailable)
On-warning dark
Text on high-contrast warning surfaces.
--bg-warning-dark
(unavailable)
--fg-on-action
(unavailable)
On-critical dark
Text on high-contrast critical surfaces.
--bg-critical-dark
(unavailable)
--fg-on-action
(unavailable)
Usage guidance
Do
  • Use role tokens for implementation (--bg-*, --fg-*, --border-*).
  • Use paired "on" roles to preserve contrast (e.g. --fg-on-action on --bg-primary).
  • Use state-specific roles (hover/pressed/focus/disabled) instead of manually adjusting colors.
  • Verify contrast for text sizes and contexts.
Don't
  • Don't hardcode hex values in components.
  • Don't pick palette tokens by appearance for UI roles.
  • Don't rely on color alone to communicate meaning.
  • Don't invent new colors outside the Figma token source.