Runtime themes

Themes

One JSON file, loaded at runtime by every renderer: 126 tokens and per-part recipes. Below: one surface in each built-in.

The token vocabulary

Every name a theme defines, as $group.name references a style or recipe uses, with the value each built-in gives it. A theme that extends another overrides only what changes.

Colour (per mode) · light above, dark below

TokenNeutralExponentialPlayful
$color.background#ffffff#0a0a0a#ffffff#0a0a0a#fffbf5#1a1033
$color.foreground#0a0a0a#fafafa#0a0a0a#fafafa#1f1235#f5f3ff
$color.card#ffffff#171717#ffffff#ffffff0f#ffffff#2a1b4d
$color.cardForeground#0a0a0a#fafafa#0a0a0a#fafafa#1f1235#f5f3ff
$color.popover#ffffff#171717#ffffff#171717#ffffff#2a1b4d
$color.popoverForeground#0a0a0a#fafafa#0a0a0a#fafafa#1f1235#f5f3ff
$color.primary#171717#e5e5e5#171717#e5e5e5#7c3aed#c4b5fd
$color.primaryForeground#fafafa#171717#fafafa#171717#ffffff#2e1065
$color.secondary#f5f5f5#262626#f5f5f5#ffffff0f#ccfbf1#134e4a
$color.secondaryForeground#171717#fafafa#171717#fafafa#134e4a#ccfbf1
$color.muted#f5f5f5#262626#f5f5f5#ffffff0a#f3e8ff#3b2a63
$color.mutedForeground#737373#a1a1a1#737373#a1a1a1#6b5b8a#c4b5fd
$color.accent#f5f5f5#262626#f5f5f5#ffffff1c#ffe4e6#4c1d95
$color.accentForeground#171717#fafafa#171717#fafafa#881337#f5f3ff
$color.destructive#e7000b#ff6467#e7000b#ff6467#e11d48#fb7185
$color.destructiveForeground#fafafa#fafafa#ffffff#0a0a0a#ffffff#4c0519
$color.success#16a34a#22c55e#22c55e#22c55e#059669#34d399
$color.successForeground#ffffff#052e16#ffffff#052e16#ffffff#022c22
$color.warning#d97706#f59e0b#facc15#facc15#d97706#fbbf24
$color.warningForeground#ffffff#1c1917#1c1917#1c1917#ffffff#451a03
$color.info#2563eb#3b82f6#3b82f6#3b82f6#0284c7#38bdf8
$color.infoForeground#ffffff#ffffff#ffffff#ffffff#ffffff#082f49
$color.border#e5e5e5#ffffff1a#e5e5e5#ffffff1a#e9d5ff#4c3a7a
$color.input#e5e5e5#ffffff26#e5e5e5#ffffff26#ddd6fe#5b4a8a
$color.ring#a1a1a1#737373#a1a1a1#737373#a78bfa#a78bfa
$color.chart1#f54900#1447e6#f54900#1447e6#7c3aed#c4b5fd
$color.chart2#009689#00bc7d#009689#00bc7d#14b8a6#5eead4
$color.chart3#104e64#fe9a00#104e64#fe9a00#f43f5e#fda4af
$color.chart4#ffb900#ad46ff#ffb900#ad46ff#f59e0b#fcd34d
$color.chart5#fe9a00#ff2056#fe9a00#ff2056#0ea5e9#7dd3fc
$color.chart6#7c3aed#a78bfa#7c3aed#a78bfa#a855f7#d8b4fe
$color.chart7#db2777#f472b6#db2777#f472b6#ec4899#f9a8d4
$color.chart8#0891b2#22d3ee#0891b2#22d3ee#22c55e#86efac

Spacing (px)

TokenNeutralExponentialPlayful
$spacing.none000
$spacing.xxs222
$spacing.xs444
$spacing.sm888
$spacing.md121212
$spacing.lg161616
$spacing.xl242424
$spacing.xl2323232
$spacing.xl3484848

Radius (px)

TokenNeutralExponentialPlayful
$radius.none000
$radius.sm6810
$radius.md81014
$radius.lg101218
$radius.xl141624
$radius.xl2182028
$radius.xl3222432
$radius.full999999999999

Type size (px)

TokenNeutralExponentialPlayful
$type.size.xs121212
$type.size.sm141414
$type.size.base161616
$type.size.lg181818
$type.size.xl202020
$type.size.xl2242424
$type.size.xl3303030

Line height (px)

TokenNeutralExponentialPlayful
$type.lineHeight.xs161616
$type.lineHeight.sm202020
$type.lineHeight.base242424
$type.lineHeight.lg282828
$type.lineHeight.xl282828
$type.lineHeight.xl2323232
$type.lineHeight.xl3363636

Font weight

TokenNeutralExponentialPlayful
$type.weight.regular400400400
$type.weight.medium500500600
$type.weight.semibold600600700
$type.weight.bold700700700

Font family

TokenNeutralExponentialPlayful
$type.family.sansGeistInterNunito
$type.family.monoGeist Monoui-monospaceFira Code

Control heights (px)

TokenNeutralExponentialPlayful
$control.buttonSm322432
$control.buttonMd363240
$control.buttonLg403648
$control.buttonIcon363240
$control.input363644
$control.textarea646464
$control.row403244
$control.rowCompact322832
$control.pill242428
$control.badge202022
$control.chip282432
$control.toggle363240
$control.switch202024
$control.checkbox161620
$control.slider161616
$control.progress888
$control.meter888
$control.avatarSm242424
$control.avatarMd323232
$control.avatarLg404040
$control.iconSm161616
$control.iconMd202020
$control.iconLg242424
$control.hairline111
$control.appBar564856
$control.tabBar565656
$control.toast645664

Shadow (per mode) · light above, dark below

TokenNeutralExponentialPlayful
$shadow.nonenonenonenonenonenonenone
$shadow.sm1 layer1 layer1 layer1 layer1 layer1 layer
$shadow.md2 layers2 layers1 layer1 layer1 layer1 layer
$shadow.lg2 layers2 layers1 layer1 layer1 layer1 layer
$shadow.xl2 layers2 layers1 layer1 layer1 layer1 layer

Opacity

TokenNeutralExponentialPlayful
$opacity.primary111
$opacity.secondary0.70.70.7
$opacity.tertiary0.50.50.5
$opacity.quaternary0.30.30.3
$opacity.disabled0.50.50.5

Border width (px)

TokenNeutralExponentialPlayful
$border.none000
$border.hairline112
$border.thick223

Motion (ms)

TokenNeutralExponentialPlayful
$motion.fast120120160
$motion.standard180180240
$motion.slow280280360

Breakpoint (px)

TokenNeutralExponentialPlayful
$breakpoint.sm640640640
$breakpoint.md768768768
$breakpoint.lg102410241024
$breakpoint.xl128012801280

Easing

TokenNeutralExponentialPlayful
$ease.standard[0.2,0,0,1][0.2,0,0,1][0.34,1.56,0.64,1]
$ease.decelerate[0,0,0.2,1][0,0,0.2,1][0,0,0.2,1]
$ease.accelerate[0.3,0,1,1][0.3,0,1,1][0.3,0,1,1]

Density scale

TokenNeutralExponentialPlayful
$density.compact0.8750.8750.9
$density.comfortable1.1251.1251.2

Backdrop blur (px)

TokenNeutralExponentialPlayful
$blur.sm444
$blur.md121212
$blur.lg161616
$blur.xl242424
Theme builderPick a base, edit tokens and recipes over a live preview, import a shadcn globals.css, export the JSON.Write your own themeThe file format, extends, recipes and fonts, and how a host loads a theme from a URL.