Theme preview

Every token the theme editor changes, on one page. Open the editor and watch.

On this page

Open the Theme panel (bottom right) and edit — this page is the target. The panel is modeless (no scrim, no light-dismiss), so you can keep clicking around while it's open.

Colour

A role resolves to tokens named --color-<target>-<role>[-<variant>], not to a ramp. The labels below are the class names — the token name minus--color-. A surface role has a bare bg- and the full range; achromatic role has tints and solids and no bare bg-. Dark mode re-points each token; the solid family stays mode-stable so a filled button keeps its identity, andtext-on-<role> is computed for contrast against it.

neutral surface

bg-neutral
bg-neutral-muted
bg-neutral-x-muted
bg-neutral-bold
bg-neutral-x-bold
bg-neutral-solid
bg-neutral-solid-bold
bg-neutral-solid-x-bold
Aatext-on-neutral
border-neutral-muted
border-neutral
border-neutral-bold
icon-neutral
icon-neutral-muted

text-neutraltext-neutral-boldtext-neutral-mutedtext-neutral-x-mutedtext-neutral-xx-muted

surface surface

bg-surface
bg-surface-muted
bg-surface-x-muted
bg-surface-bold
bg-surface-x-bold
bg-surface-solid
bg-surface-solid-bold
bg-surface-solid-x-bold
Aatext-on-surface
border-surface-muted
border-surface
border-surface-bold
icon-surface
icon-surface-muted

text-surfacetext-surface-boldtext-surface-mutedtext-surface-x-mutedtext-surface-xx-muted

ui-primary chromatic

bg-ui-primary-x-muted
bg-ui-primary-muted
bg-ui-primary-solid
bg-ui-primary-solid-bold
bg-ui-primary-solid-x-bold
Aatext-on-ui-primary
border-ui-primary
border-ui-primary-bold
icon-ui-primary

text-ui-primarytext-ui-primary-bold

ui-secondary chromatic

bg-ui-secondary-x-muted
bg-ui-secondary-muted
bg-ui-secondary-solid
bg-ui-secondary-solid-bold
bg-ui-secondary-solid-x-bold
Aatext-on-ui-secondary
border-ui-secondary
border-ui-secondary-bold
icon-ui-secondary

text-ui-secondarytext-ui-secondary-bold

ui-accent chromatic

bg-ui-accent-x-muted
bg-ui-accent-muted
bg-ui-accent-solid
bg-ui-accent-solid-bold
bg-ui-accent-solid-x-bold
Aatext-on-ui-accent
border-ui-accent
border-ui-accent-bold
icon-ui-accent

text-ui-accenttext-ui-accent-bold

brand-primary chromatic

bg-brand-primary-x-muted
bg-brand-primary-muted
bg-brand-primary-solid
bg-brand-primary-solid-bold
bg-brand-primary-solid-x-bold
Aatext-on-brand-primary
border-brand-primary
border-brand-primary-bold
icon-brand-primary

text-brand-primarytext-brand-primary-bold

brand-secondary chromatic

bg-brand-secondary-x-muted
bg-brand-secondary-muted
bg-brand-secondary-solid
bg-brand-secondary-solid-bold
bg-brand-secondary-solid-x-bold
Aatext-on-brand-secondary
border-brand-secondary
border-brand-secondary-bold
icon-brand-secondary

text-brand-secondarytext-brand-secondary-bold

info chromatic

bg-info-x-muted
bg-info-muted
bg-info-solid
bg-info-solid-bold
bg-info-solid-x-bold
Aatext-on-info
border-info
border-info-bold
icon-info

text-infotext-info-bold

success chromatic

bg-success-x-muted
bg-success-muted
bg-success-solid
bg-success-solid-bold
bg-success-solid-x-bold
Aatext-on-success
border-success
border-success-bold
icon-success

text-successtext-success-bold

warning chromatic

bg-warning-x-muted
bg-warning-muted
bg-warning-solid
bg-warning-solid-bold
bg-warning-solid-x-bold
Aatext-on-warning
border-warning
border-warning-bold
icon-warning

text-warningtext-warning-bold

danger chromatic

bg-danger-x-muted
bg-danger-muted
bg-danger-solid
bg-danger-solid-bold
bg-danger-solid-x-bold
Aatext-on-danger
border-danger
border-danger-bold
icon-danger

text-dangertext-danger-bold

Utility classes

bg-neutral-mutedbg-surface-mutedbg-ui-primary-mutedbg-ui-secondary-mutedbg-ui-accent-mutedbg-brand-primary-mutedbg-brand-secondary-mutedbg-info-mutedbg-success-mutedbg-warning-mutedbg-danger-muted

Typography

Semantic roles, not sizes. Each is a bundle of family, size, weight, leading, tracking and transform — so changing heading changes every heading, everywhere.

.font-display

The quick brown fox jumps over the lazy dog

.font-title

The quick brown fox jumps over the lazy dog

.font-heading

The quick brown fox jumps over the lazy dog

.font-lead

The quick brown fox jumps over the lazy dog

.font-body

The quick brown fox jumps over the lazy dog

.font-quote

The quick brown fox jumps over the lazy dog

.font-caption

The quick brown fox jumps over the lazy dog

.font-eyebrow

The quick brown fox jumps over the lazy dog

.font-footnote

The quick brown fox jumps over the lazy dog

.font-code

The quick brown fox jumps over the lazy dog

.font-tag

The quick brown fox jumps over the lazy dog

Scales

Both scales are fluid: each step is a clamp() that interpolates with viewport width, so resizing the window moves them too.

Type scale

--text-2xs2xs · Aa
--text-xsxs · Aa
--text-ss · Aa
--text-mm · Aa
--text-ll · Aa
--text-xlxl · Aa
--text-2xl2xl · Aa
--text-3xl3xl · Aa
--text-4xl4xl · Aa
--text-5xl5xl · Aa
--text-6xl6xl · Aa
--text-7xl7xl · Aa

Space scale

--space-2xs
--space-xs
--space-s
--space-m
--space-l
--space-xl
--space-2xl
--space-3xl
--space-4xl
--space-5xl
--space-6xl
--space-7xl

Vertical rhythm

.rhythm spaces siblings by element pair (heading→para differs from para→para), scaled by --rhythm-scale — the dial in the editor's Layout section.

A heading

A paragraph after a heading sits closer than one after a paragraph.

A second paragraph, to show the pair spacing differ.

Layout

Tracks (.centered)

A track grid: children land in measure by default, and opt out to a wider track. Widths are the --width-* knobs in the editor.

measure
breakout
spotlight
fullbleed

Split ratios

1
2
1
3
1
1
1
4

Cluster

onetwothree
onetwothree
onetwothree
onetwothree

Auto grid

Card 1

Card 2

Card 3

Card 4

Card 5

Card 6

Patterns

Geometry (padding, radius, border, shadow, size) resolves through each pattern's group, so the editor's Pattern groups section moves whole families at once and Componentsoverrides just one.

Buttons — two tiers

.cta is persuasion (filled, lifts on hover); btn is bare affordance — a plain <button> gets it with no class at all.

.cta.cta-brand-primary

Links

A bare anchor is already styled, and .linkcarries it to any element.

Labels — badge, tag, status

Split by behaviour: badge is static, tag is removable/editable.

badgesuccessdangerwarninginfo
tagsuccessdangerwarninginfo

Card

Eyebrow

Card title

Body copy inside a card, showing padding, radius, border and shadow.

Action

Tinted card

The same pattern with a role background utility.

Table

TokenGroupRoles
btncontrol4
ctacontrol5
linkcontrol
badgelabel4
cardpanel4

List & details

  • First item
  • Second item
  • Third item
A disclosure

Native <details> — no JavaScript.

Also in the theme, shown on their own pages or needing interaction:tooltip, dialog, popover, dropdown, notification, lightbox, comment, tabs, drawer, carousel, nav, banner, details, tree, pull-quote, combobox, forms.

Radii & shadows

pillcircledefault
smmdlgxl2xl