Themes

Themes let you maintain multiple brand variants — dark mode, sub-brands, white-label products — within a single project, each overriding only the tokens that differ.

What are themes?

Every project starts with a base token set — this is what developers pull when they sync from main. A theme is an overlay that changes specific tokens for a particular context, such as a dark colour scheme or a sub-brand's accent colours.

Themes are additive: they only contain the tokens you explicitly override. Everything else inherits from the base. This means a dark theme might override just 15 tokens (backgrounds, text colours, borders) while keeping all spacing, radii, and typography identical.

Creating a theme

In the Studio, use the Theme Selector dropdown at the top of the token editor. Click + New theme, give it a name (e.g. "Dark", "Brand A"), and optionally pick a parent theme to inherit from.

Theme inheritance

Themes can extend a parent theme, forming an inheritance chain. The effective value for any token in a theme is resolved by walking the chain:

PrioritySourceExample
1 (highest)Direct override in this themeTheme sets color/primary → #8B5CF6
2Inherited from parent themeParent theme sets color/background → #1c1b18
3 (lowest)Base token valueBase sets color/foreground → oklch(0.98 0 0)

For example, a "Brand A Dark" theme can extend "Dark" — it only needs to override the brand accent colour, while inheriting all dark mode tokens from its parent.

Editing tokens in a theme

When a theme is active in the Studio, the token form shows two save options:

ActionWhat happens
Save in [theme name]Creates or updates a theme override for this token. The base token is untouched.
Save in baseEdits the base token value. This affects every theme that does not override it.

Tokens that are directly overridden in the current theme show an orange badge. Tokens inherited from a parent theme show a gray badge. Tokens with no override at all use the base value.

Live preview

The live preview panel in the token editor automatically reflects the currently selected theme. Switch themes in the dropdown to instantly see how component variables resolve — no rebuild or refresh needed.

Removing a theme override

If you want a token to fall back to its base or inherited value, click the reset button next to the override. This removes the theme-level override and reverts to the inherited or base value.

Foundation projects & cross-project inheritance

For organisations with multiple brands or products, Particles supports foundation projects. A foundation project is a shared source of primitive and semantic tokens that other projects in the organisation extend.

Link a project to a foundation via Project → Settings → Foundation. All tokens from the foundation's main branch appear as read-only base tokens in your project. You can override them locally at the project level.

When the foundation publishes a release or merges into main, your project receives a notification. Use the Sync Foundation flow to pull upstream changes — conflicts between foundation updates and your local overrides are resolved with the same per-token diff UI used in token requests.

How developers consume themes

When developers sync tokens via the CLI, the base token set is exported by default. To export a specific theme's overrides merged on top:

MethodCommand or endpoint
CLIparticles pull --theme "Dark"
APIGET /v1/projects/:id/themes/:branchId?theme=Dark
ExportGET /v1/projects/:id/tokens/export?format=tailwind-v4&theme=Dark

Theme support in the CLI is designed for developers — as a designer, you create and manage themes entirely in the Studio or Figma plugin.