Lumen

Design Tokens That Survive Dark Mode and Brand Changes

by Lumen, Editorial

Hard-coded hex values scatter across components until a rebrand becomes a multi-week treasure hunt. Semantic tokens fix that by naming roles, not colors.

Roles over raw colors

  • primary, accent, muted, and border map to product meaning
  • Light and dark schemes swap values without rewriting layouts
  • Presets let demos and white-labels switch brands quickly
  • Web CSS variables and mobile StyleSheet share one source

How Lumen approaches theme

The @lumen/theme package exports presets, getColors(), and CSS variable helpers. Web and Expo both consume the same semantic map so Settings toggles feel native on every surface.

When you add a new product color, add it once in tokens — then let sync scripts and typecheck catch anything you missed.

More articles

Seventeen Layout Design Systems on a Universal Token Architecture

How Lumen unifies 17 visual design systems across web, CMS, and mobile on a shared token architecture without layout shifts or copy divergence.

Read more

Shipping a Starter Stack Without Boiling the Ocean

A shipping checklist for auth, billing, CMS, and CI so your team can launch an MVP without rebuilding platform plumbing.

Read more

Ready to ship with Lumen?

A production-shaped Next.js monorepo starter — Clerk, Payload, Stripe shell, Expo, and a theme system with a pulse.

Talk to us

/contact

Design Tokens That Survive Dark Mode and Brand Changes

by Lumen, Editorial

Hard-coded hex values scatter across components until a rebrand becomes a multi-week treasure hunt. Semantic tokens fix that by naming roles, not colors.

Roles over raw colors

  • primary, accent, muted, and border map to product meaning
  • Light and dark schemes swap values without rewriting layouts
  • Presets let demos and white-labels switch brands quickly
  • Web CSS variables and mobile StyleSheet share one source

How Lumen approaches theme

The @lumen/theme package exports presets, getColors(), and CSS variable helpers. Web and Expo both consume the same semantic map so Settings toggles feel native on every surface.

When you add a new product color, add it once in tokens — then let sync scripts and typecheck catch anything you missed.

More articles

Get started today

It's time to take control of the starter. Clone Lumen so you can feel like you're doing something productive.

Get 6 months free

Design Tokens That Survive Dark Mode and Brand Changes

by Lumen, Editorial

Hard-coded hex values scatter across components until a rebrand becomes a multi-week treasure hunt. Semantic tokens fix that by naming roles, not colors.

Roles over raw colors

  • primary, accent, muted, and border map to product meaning
  • Light and dark schemes swap values without rewriting layouts
  • Presets let demos and white-labels switch brands quickly
  • Web CSS variables and mobile StyleSheet share one source

How Lumen approaches theme

The @lumen/theme package exports presets, getColors(), and CSS variable helpers. Web and Expo both consume the same semantic map so Settings toggles feel native on every surface.

When you add a new product color, add it once in tokens — then let sync scripts and typecheck catch anything you missed.

More articles

< ALL DISPATCHES

Design Tokens That Survive Dark Mode and Brand Changes

How semantic color tokens and theme presets keep UI consistent across web and React Native without hard-coded hex soup.

Hard-coded hex values scatter across components until a rebrand becomes a multi-week treasure hunt. Semantic tokens fix that by naming roles, not colors.

Roles over raw colors

  • primary, accent, muted, and border map to product meaning
  • Light and dark schemes swap values without rewriting layouts
  • Presets let demos and white-labels switch brands quickly
  • Web CSS variables and mobile StyleSheet share one source

How Lumen approaches theme

The @lumen/theme package exports presets, getColors(), and CSS variable helpers. Web and Expo both consume the same semantic map so Settings toggles feel native on every surface.

When you add a new product color, add it once in tokens — then let sync scripts and typecheck catch anything you missed.

[ < RETURN_TO_TELEMETRY ]TIMESTAMP: 15 June 2026
[ TECHNICAL FLIGHT DIRECTIVE ]

Design Tokens That Survive Dark Mode and Brand Changes

How semantic color tokens and theme presets keep UI consistent across web and React Native without hard-coded hex soup.

Hard-coded hex values scatter across components until a rebrand becomes a multi-week treasure hunt. Semantic tokens fix that by naming roles, not colors.

Roles over raw colors

  • primary, accent, muted, and border map to product meaning
  • Light and dark schemes swap values without rewriting layouts
  • Presets let demos and white-labels switch brands quickly
  • Web CSS variables and mobile StyleSheet share one source

How Lumen approaches theme

The @lumen/theme package exports presets, getColors(), and CSS variable helpers. Web and Expo both consume the same semantic map so Settings toggles feel native on every surface.

When you add a new product color, add it once in tokens — then let sync scripts and typecheck catch anything you missed.

< RETURN TO ALL POP NOTES

Design Tokens That Survive Dark Mode and Brand Changes

How semantic color tokens and theme presets keep UI consistent across web and React Native without hard-coded hex soup.

Hard-coded hex values scatter across components until a rebrand becomes a multi-week treasure hunt. Semantic tokens fix that by naming roles, not colors.

Roles over raw colors

  • primary, accent, muted, and border map to product meaning
  • Light and dark schemes swap values without rewriting layouts
  • Presets let demos and white-labels switch brands quickly
  • Web CSS variables and mobile StyleSheet share one source

How Lumen approaches theme

The @lumen/theme package exports presets, getColors(), and CSS variable helpers. Web and Expo both consume the same semantic map so Settings toggles feel native on every surface.

When you add a new product color, add it once in tokens — then let sync scripts and typecheck catch anything you missed.

< RETURN TO JOURNAL

Design Tokens That Survive Dark Mode and Brand Changes

How semantic color tokens and theme presets keep UI consistent across web and React Native without hard-coded hex soup.

Hard-coded hex values scatter across components until a rebrand becomes a multi-week treasure hunt. Semantic tokens fix that by naming roles, not colors.

Roles over raw colors

  • primary, accent, muted, and border map to product meaning
  • Light and dark schemes swap values without rewriting layouts
  • Presets let demos and white-labels switch brands quickly
  • Web CSS variables and mobile StyleSheet share one source

How Lumen approaches theme

The @lumen/theme package exports presets, getColors(), and CSS variable helpers. Web and Expo both consume the same semantic map so Settings toggles feel native on every surface.

When you add a new product color, add it once in tokens — then let sync scripts and typecheck catch anything you missed.

< RETURN TO MATRIX

Design Tokens That Survive Dark Mode and Brand Changes

How semantic color tokens and theme presets keep UI consistent across web and React Native without hard-coded hex soup.

Hard-coded hex values scatter across components until a rebrand becomes a multi-week treasure hunt. Semantic tokens fix that by naming roles, not colors.

Roles over raw colors

  • primary, accent, muted, and border map to product meaning
  • Light and dark schemes swap values without rewriting layouts
  • Presets let demos and white-labels switch brands quickly
  • Web CSS variables and mobile StyleSheet share one source

How Lumen approaches theme

The @lumen/theme package exports presets, getColors(), and CSS variable helpers. Web and Expo both consume the same semantic map so Settings toggles feel native on every surface.

When you add a new product color, add it once in tokens — then let sync scripts and typecheck catch anything you missed.

< RETURN TO WORKSHOP LOGBOOK

Design Tokens That Survive Dark Mode and Brand Changes

How semantic color tokens and theme presets keep UI consistent across web and React Native without hard-coded hex soup.

Hard-coded hex values scatter across components until a rebrand becomes a multi-week treasure hunt. Semantic tokens fix that by naming roles, not colors.

Roles over raw colors

  • primary, accent, muted, and border map to product meaning
  • Light and dark schemes swap values without rewriting layouts
  • Presets let demos and white-labels switch brands quickly
  • Web CSS variables and mobile StyleSheet share one source

How Lumen approaches theme

The @lumen/theme package exports presets, getColors(), and CSS variable helpers. Web and Expo both consume the same semantic map so Settings toggles feel native on every surface.

When you add a new product color, add it once in tokens — then let sync scripts and typecheck catch anything you missed.

Design Systems

Design Tokens That Survive Dark Mode and Brand Changes

How semantic color tokens and theme presets keep UI consistent across web and React Native without hard-coded hex soup.

Hard-coded hex values scatter across components until a rebrand becomes a multi-week treasure hunt. Semantic tokens fix that by naming roles, not colors.

Roles over raw colors

  • primary, accent, muted, and border map to product meaning
  • Light and dark schemes swap values without rewriting layouts
  • Presets let demos and white-labels switch brands quickly
  • Web CSS variables and mobile StyleSheet share one source

How Lumen approaches theme

The @lumen/theme package exports presets, getColors(), and CSS variable helpers. Web and Expo both consume the same semantic map so Settings toggles feel native on every surface.

When you add a new product color, add it once in tokens — then let sync scripts and typecheck catch anything you missed.