Theming
Token reference
Browse the public vars contract, copy typed paths for custom UI, and inspect resolved values in the active theme.
Border widths
Use vars.borderWidth.thin for a 1px border and vars.borderWidth.thick for a 2px border.
vars.borderWidth.thin —vars.borderWidth.thick —
Colour
These tables list the full semantic colour contract, grouped by token family. Read Colour to choose surfaces, roles, and interaction states before you pick a path.
Background
vars.color.background. surface. base —vars.color.background. surface. subdued —vars.color.background. surface. raised —vars.color.background. backdrop —vars.color.background. skeleton —
Neutral
vars.color.background. neutral. subtle —vars.color.background. neutral. solid. rest —vars.color.background. neutral. solid. hover —vars.color.background. neutral. solid. pressed —
Accent
vars.color.background. accent. subtle —vars.color.background. accent. solid. rest —vars.color.background. accent. solid. hover —vars.color.background. accent. solid. pressed —
Info
vars.color.background. info. subtle —vars.color.background. info. solid. rest —vars.color.background. info. solid. hover —vars.color.background. info. solid. pressed —
Success
vars.color.background. success. subtle —vars.color.background. success. solid. rest —vars.color.background. success. solid. hover —vars.color.background. success. solid. pressed —
Warning
vars.color.background. warning. subtle —vars.color.background. warning. solid. rest —vars.color.background. warning. solid. hover —vars.color.background. warning. solid. pressed —
Danger
vars.color.background. danger. subtle —vars.color.background. danger. solid. rest —vars.color.background. danger. solid. hover —vars.color.background. danger. solid. pressed —
Foreground
vars.color.foreground. primary —vars.color.foreground. secondary —vars.color.foreground. disabled —
Neutral
vars.color.foreground. neutral. rest —vars.color.foreground. neutral. hover —vars.color.foreground. neutral. pressed —vars.color.foreground. neutral. onSolid —
Accent
vars.color.foreground. accent. rest —vars.color.foreground. accent. hover —vars.color.foreground. accent. pressed —vars.color.foreground. accent. onSolid —
Info
vars.color.foreground. info. rest —vars.color.foreground. info. hover —vars.color.foreground. info. pressed —vars.color.foreground. info. onSolid —
Success
vars.color.foreground. success. rest —vars.color.foreground. success. hover —vars.color.foreground. success. pressed —vars.color.foreground. success. onSolid —
Warning
vars.color.foreground. warning. rest —vars.color.foreground. warning. hover —vars.color.foreground. warning. pressed —vars.color.foreground. warning. onSolid —
Danger
vars.color.foreground. danger. rest —vars.color.foreground. danger. hover —vars.color.foreground. danger. pressed —vars.color.foreground. danger. onSolid —
Border
vars.color.border. decorative —vars.color.border. control. rest —vars.color.border. control. hover —vars.color.border. control. pressed —vars.color.border. neutral. strong —vars.color.border. accent. strong —vars.color.border. info. strong —vars.color.border. success. strong —vars.color.border. warning. strong —vars.color.border. danger. strong —
Focus
color.focus is not a border. It paints the focus outline and ring shadows.
vars.color.focus —
Typography
Each type style is five tokens: family, size, weight, line height, and letter spacing. Render text
with Text or Heading, which also apply the style's trim. Use these tokens only when you need an
element those components cannot render. Read Typography to
choose a style.
| Token | Value |
|---|---|
| Caption | |
| — |
| — |
| — |
| — |
| — |
| Label | |
| — |
| — |
| — |
| — |
| — |
| Body | |
| — |
| — |
| — |
| — |
| — |
| Lead | |
| — |
| — |
| — |
| — |
| — |
| Heading 4 | |
| — |
| — |
| — |
| — |
| — |
| Heading 3 | |
| — |
| — |
| — |
| — |
| — |
| Heading 2 | |
| — |
| — |
| — |
| — |
| — |
| Heading 1 | |
| — |
| — |
| — |
| — |
| — |
| Display | |
| — |
| — |
| — |
| — |
| — |
Font family and weight tokens stay public for code surfaces and deliberate weight overrides.
Families
vars.font.family. body —vars.font.family. display —vars.font.family. code —
Weights
vars.font.weight. body —vars.font.weight. label —vars.font.weight. heading —vars.font.weight. emphasis —
Space
Use the space scale for gap, padding, and margin. The number in each key is its pixel value at
a 16px root. The token is emitted in rem. Read Layout for
breakpoint keys and how spacing values cascade.
vars.space.4 —vars.space.8 —vars.space.12 —vars.space.16 —vars.space.24 —vars.space.32 —vars.space.40 —vars.space.48 —vars.space.64 —vars.space.96 —
Radius
Radius has five roles. Choose the role that matches the element you round, such as control for an
input or surface for a card.
vars.radius.detail A checkbox or a small part
—vars.radius.control A button, input, or select
—vars.radius.surface A card or a panel
—vars.radius.overlay A dialog or a tray
—vars.radius.full A pill or a switch track
—
Shadow and finish
Shadow places a surface above or within the interface. Elevated inline content, menus, and dialogs
use surface.raised. A menu adds shadow.floating, and a dialog adds shadow.overlay. A control
finish is the face of a solid control fill, such as a solid button.
Luke UI components already apply shadow and finish for their own states. Use these tokens only for custom surfaces you own.
Shadow
vars.shadow.inset —vars.shadow.resting —vars.shadow.raised —vars.shadow.floating —vars.shadow.overlay —
Control finish
vars.controlFinish.recessed —vars.controlFinish.resting —vars.controlFinish.raised —
Sizing
Use a control size for the block size of a custom control so it lines up with Luke UI controls of the same size.
vars.controlSize.32 —vars.controlSize.40 —
Interaction
Fade a custom control that is disabled or pending with interaction.disabledOpacity, as Luke UI
controls do.
vars.interaction.disabledOpacity —vars.interaction.tint. hover —vars.interaction.tint. pressed —
Motion
Choose a treatment: each pairs a duration with its easing. Each treatment table includes an Animate switch in the group header. Duration samples alternate along the track, and each crossing takes that token’s duration within a one-second half-cycle. Easing samples rest at both ends, then cross with that timing function on the travel segments of their own one-second loop. Turn Animate off to hold the dots still, or on again to restart that table’s samples.
feedbackcovers an in-place state change, such as hover, focus, or selection.entercovers an element or an overlay that enters the interface.exitcovers an element or an overlay that leaves the interface.
Use vars.motion.<treatment>.duration and vars.motion.<treatment>.easing together. Do not mix
leaves from different treatments.
Feedback
vars.motion.feedback. duration —vars.motion.feedback. easing —
Enter
vars.motion.enter. duration —vars.motion.enter. easing —
Exit
vars.motion.exit. duration —vars.motion.exit. easing —