Primitive 143 tokens
Raw values, named by scale. Never used directly.
Semantic 131 tokens
Named by purpose. Each aliases one primitive, and themes override them.
color.Lightaction. background #b37500, Dark#f5e3c2Component 350 tokens
One component's styling hooks. Each aliases one semantic token, in every theme.
component.aliasesbutton. primary. background color.action.backgroundSite
Components read only their own tokens.
Naming
A token's name is a dotted path: its category, a group, then the name, as in color.text.muted. Semantic and component tokens are CSS custom properties named by the same path, with each dot as a dash: --color-text-muted. Primitives never become custom properties.
- Primitive: color.gold.600, no custom property
- Semantic: color.text.muted becomes
--color-text-muted - Component: component.button.radius becomes
--component-button-radius
Each tier has one rule:
- Primitive: Raw values, named by scale. Never used directly.
- Semantic: Named by purpose. Each aliases one primitive, and themes override them.
- Component: One component's styling hooks. Each aliases one semantic token, in every theme.
Theming
The theme menu offers System, which follows the device's setting, Light and Dark. Themes override semantic tokens only: 52 of them have a light and a dark value. Primitives and component tokens never change, and since every component token aliases a semantic one, a theme reaches every component.
Any element can set its own theme with data-theme="light" or data-theme="dark", and every token inside it follows, as in the component pages' preview panels.
When the device asks for reduced motion, the 4 motion.duration tokens are overridden, so transitions are instant.
Usage
Use semantic tokens in a page's own CSS:
.note {
color: var(--color-text-muted);
padding: var(--space-inset-md);
}To restyle a component, override its --component-* tokens on a wrapper class. Each component page lists its tokens.
.brand {
--component-button-primary-background: var(--color-accent-text);
--component-button-primary-border: var(--color-accent-text);
}Accessibility
Each foreground token declares the backgrounds it must be readable on, and the minimum contrast it needs there: 4.5:1 for text, 3:1 for large text and 3:1 for borders and icons (WCAG 2.2 AA). A unit test measures all 275 declared pairings in both the light and the dark theme, so a token change that breaks one fails the tests.
Another test checks that reduced motion overrides every motion.duration token.
Find a token
Name, variable, value or description
Primitives
Raw values, named by scale. Never used directly.
gray
0#ffffff50#edf2f8300#adbac8500#6d7e90600#5d6876700#455464900#17202b
neutral
slate
50#e6efff100#e6ecf3200#d3dce6400#818b9e500#63676f800#272f3f900#18202e925#111827950#0b12201000#060a13
gold
500#c58800600#b37500700#795616800#62440a
champagne
50#fff5e2100#f5e3c2300#e4d2b2400#d3c2a2600#b2a181
violet
50#f4f0fd200#d9cdf7300#c9b8f5600#5b3fa6700#4a3290800#3d2875900#2a1f52
red
50#fcecea300#f4a097400#e8776c600#c8372c700#b3261e900#4a1a1c
green
50#e8f5ee300#8fd6a8400#5fbf86600#2a8556700#1e6b45900#11352a
orange
50#fdf0e6300#f7ad7c400#ec8c4e600#b25a12700#94440a900#45230d
cyan
sand
overlay
sand-50-85rgba(251, 248, 242, 0.85)black-85rgba(0, 0, 0, 0.85)white-8rgba(255, 255, 255, 0.08)white-20rgba(255, 255, 255, 0.2)white-80rgba(255, 255, 255, 0.8)cyan-700-8rgba(0, 95, 123, 0.08)slate-300-10rgba(186, 197, 217, 0.1)cyan-300-24rgba(84, 216, 244, 0.24)cyan-300-30rgba(84, 216, 244, 0.3)gray-950-40rgba(14, 20, 27, 0.4)gray-950-60rgba(14, 20, 27, 0.6)transparentrgba(0, 0, 0, 0)
| Token | Value | Preview | Used by |
|---|---|---|---|
type.font-stack.sans | 'Inter Variable', 'Inter Fallback', system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif | ||
type.font-stack.display | 'Space Grotesk Variable', 'Space Grotesk Fallback', system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif | ||
type.font-stack.mono | 'Fira Code Variable', 'Fira Code Fallback', ui-monospace, SFMono-Regular, Menlo, Consolas, monospace | ||
type.font-size.xs | 0.75rem | ||
type.font-size.sm | 0.875rem | ||
type.font-size.md | 1rem | ||
type.font-size.lg | 1.25rem | ||
type.font-size.xl | 1.5rem | ||
type.font-size.2xl | 2rem | ||
type.font-size.3xl | 2.5rem | ||
type.font-size.4xl | 3rem | ||
type.font-weight.400 | 400 | ||
type.font-weight.600 | 600 | ||
type.font-weight.700 | 700 | ||
type.line-height.tight | 1.2 | ||
type.line-height.normal | 1.6 | ||
type.letter-spacing.0 | 0em | ||
type.letter-spacing.16 | 0.16em | ||
type.letter-spacing.neg-2 | -0.02em | ||
type.line-length.65 | 65ch | No preview |
| Token | Value | Preview | Used by |
|---|---|---|---|
space.0 | 0rem | Not used | |
space.1 | 0.25rem | ||
space.2 | 0.5rem | ||
space.3 | 0.75rem | Not used | |
space.4 | 1rem | ||
space.6 | 1.5rem | ||
space.8 | 2rem | ||
space.12 | 3rem | ||
space.16 | 4rem | ||
space.24 | 6rem | Not used |
| Token | Value | Preview | Used by |
|---|---|---|---|
size.4 | 1rem | ||
size.5 | 1.25rem | ||
size.6 | 1.5rem | ||
size.8 | 2rem | ||
size.10 | 2.5rem | ||
size.48 | 12rem | ||
size.64 | 16rem | ||
size.80 | 20rem | ||
size.120 | 30rem | No preview | |
size.192 | 48rem | No preview | |
size.320 | 80rem | No preview | |
size.viewport-height.80 | 80dvh | No preview |
| Token | Value | Preview | Used by |
|---|---|---|---|
radius.0 | 0px | Not used | |
radius.2 | 2px | Not used | |
radius.4 | 4px | ||
radius.8 | 8px | Not used | |
radius.16 | 16px | Not used | |
radius.full | 9999px |
| Token | Value | Preview | Used by |
|---|---|---|---|
motion.time.0 | 0ms | No preview | |
motion.time.100 | 100ms | No preview | |
motion.time.150 | 150ms | No preview | |
motion.time.250 | 250ms | No preview | |
motion.time.400 | 400ms | No preview | |
motion.curve.out | cubic-bezier(0, 0, 0.2, 1) | No preview | |
motion.curve.in | cubic-bezier(0.4, 0, 1, 1) | No preview | |
motion.curve.in-out | cubic-bezier(0.4, 0, 0.2, 1) | No preview | |
motion.curve.linear | cubic-bezier(0, 0, 1, 1) | No preview | Not used |
| Token | Value | Preview | Used by |
|---|---|---|---|
effect.shadow.none | 0px 0px 0px 0px rgb(0% 0% 0% / 0) | ||
effect.shadow.sm | 0px 1px 2px 0px rgb(0% 0% 0% / 0.08) | ||
effect.shadow.md | 0px 4px 12px 0px rgb(0% 0% 0% / 0.12) | ||
effect.shadow.sm-dark | 0px 1px 2px 0px rgb(0% 0% 0% / 0.3) | ||
effect.shadow.md-dark | 0px 4px 12px 0px rgb(0% 0% 0% / 0.4) | ||
effect.line.1 | 1px | ||
effect.line.2 | 2px | ||
effect.line.3 | 3px | ||
effect.blur-radius.6 | 6px | ||
effect.blur-radius.12 | 12px |
| Token | Value | Preview | Used by |
|---|---|---|---|
layer.1 | 1 | No preview | |
layer.2 | 2 | No preview | |
layer.3 | 3 | No preview | |
layer.below | -1 | No preview |
Semantic
Named by purpose. Each aliases one primitive, and themes override them.
| Token | Copy | Description | Light | Dark | Preview |
|---|---|---|---|---|---|
--color-fill-none | No fill: the resting background and border of ghost buttons. The same in every theme. | Both themesrgba(0, 0, 0, 0)from color.overlay.transparent | |||
--color-fill-scrim | Dims the page behind a modal dialog. Text never sits on it (the dialog surface does), so it has no contrast pairing. | rgba(14, 20, 27, 0.4)from color.overlay.gray-950-40 | rgba(14, 20, 27, 0.6)from color.overlay.gray-950-60 | ||
--color-surface-base | Page background. | #fbf8f2from color.sand.50 | #0b1220from color.slate.950 | ||
--color-surface-raised | Background of raised areas: cards, menus, table headers. | #fffffffrom color.gray.0 | #18202efrom color.slate.900 | ||
--color-surface-sunken | Background of recessed areas: code, wells, preview panels. | #f2ede2from color.sand.100 | #060a13from color.slate.1000 | ||
--color-surface-glass | Translucent background for the sticky header and glass cards, over a varied backdrop (blurred). Only default and muted text, links, focus rings and controls whose boundary is contrast-checked against glass may sit on it. | rgba(251, 248, 242, 0.85)from color.overlay.sand-50-85 | rgba(0, 0, 0, 0.85)from color.overlay.black-85 | ||
--color-surface-glass-sheer | Sheer translucent background for glass cards over the page and its backdrop (lightly blurred), so the backdrop shows through. Built-in themes only: custom themes give cards their opaque surface. Checked over the page surfaces; text over the sphere is checked in visual review (decision 0015). Only default and muted text may sit on it. | rgba(255, 255, 255, 0.2)from color.overlay.white-20 | rgba(255, 255, 255, 0.08)from color.overlay.white-8 | ||
--color-surface-inverse | Background of inverse bubbles, such as tooltips: the default text color, so the page reads inverted. | #17202bfrom color.gray.900 | #e6effffrom color.slate.50 | ||
--color-surface-code | Background of code samples (CodeBlock): a cool grey in light, near-black in dark, set apart from the other surfaces. | #edf2f8from color.gray.50 | #111827from color.slate.925 | ||
--color-text-default | Primary text. | #17202bfrom color.gray.900 | #fffffffrom color.gray.0 | ||
--color-text-muted | Secondary text. | #455464from color.gray.700 | #e6ecf3from color.slate.100 | ||
--color-text-subtle | Tertiary text, such as metadata. Still body text, so 4.5:1. Not allowed on glass. | #5d6876from color.gray.600 | #d3dce6from color.slate.200 | ||
--color-text-inverse | Text on the inverse surface. | #fbf8f2from color.sand.50 | #0b1220from color.slate.950 | ||
--color-link-default | Link text. | #795616from color.gold.700 | #d3c2a2from color.champagne.400 | ||
--color-link-hover | Link text on hover. | #62440afrom color.gold.800 | #e4d2b2from color.champagne.300 | ||
--color-link-visited | Text of a visited link, where a Link opts in with showVisited (violet). | #5b3fa6from color.violet.600 | #d9cdf7from color.violet.200 | ||
--color-action-background | Fill of primary actions and current-state markers. | #b37500from color.gold.600 | #f5e3c2from color.champagne.100 | ||
--color-action-background-hover | Fill of primary actions on hover. | #c58800from color.gold.500 | #fff5e2from color.champagne.50 | ||
--color-action-text | Text and icons on an action fill. | #0b0c0efrom color.neutral.950 | #0b0c0efrom color.neutral.950 | ||
--color-action-background-pressed | Fill of a primary action while it's pressed (:active) and while a toggle is on: a darker gold than action.background. It's also the pressed toggle's boundary (3:1). | #795616from color.gold.700 | #b2a181from color.champagne.600 | ||
--color-action-text-pressed | Text and icons on action.background-pressed. | #fbf8f2from color.sand.50 | #0b0c0efrom color.neutral.950 | ||
--color-accent-text | Accent text: accent badges and label highlights. | #005f7bfrom color.cyan.700 | #54d8f4from color.cyan.300 | ||
--color-accent-background | Accent fill behind accent text. | #e0f6fefrom color.cyan.50 | #00242efrom color.cyan.950 | ||
--color-accent-border | Decorative accent outline. Not contrast-checked; never the only boundary of a control. | #1c87a5from color.cyan.500 | #54d8f4from color.cyan.300 | ||
--color-accent-2-text | Second-accent (violet) text, on surfaces and on accent-2.background. | #5b3fa6from color.violet.600 | #c9b8f5from color.violet.300 | ||
--color-accent-2-background | Subtle violet tint behind accent-2 text, such as badges and highlights. | #f4f0fdfrom color.violet.50 | #2a1f52from color.violet.900 | ||
--color-accent-2-border | Boundary of a violet fill or tint (3:1). | #5b3fa6from color.violet.600 | #c9b8f5from color.violet.300 | ||
--color-accent-2-fill | Solid violet fill, such as a violet button or swatch. | #d9cdf7from color.violet.200 | #4a3290from color.violet.700 | ||
--color-accent-2-fill-hover | accent-2.fill on hover and while pressing. | #c9b8f5from color.violet.300 | #5b3fa6from color.violet.600 | ||
--color-accent-2-fill-text | Text and icons on accent-2.fill and accent-2.fill-hover. | #3d2875from color.violet.800 | #fffffffrom color.gray.0 | ||
--color-error-text | Error text. Never the only cue: the wording or an icon (with a text alternative) must convey the status on its own (WCAG 1.4.1). | #b3261efrom color.red.700 | #f4a097from color.red.300 | ||
--color-error-background | Error tint behind error text. Never the only cue: the wording or an icon (with a text alternative) must convey the status on its own (WCAG 1.4.1). | #fceceafrom color.red.50 | #4a1a1cfrom color.red.900 | ||
--color-error-border | Error boundary (3:1). Never the only cue: the wording or an icon (with a text alternative) must convey the status on its own (WCAG 1.4.1). | #c8372cfrom color.red.600 | #e8776cfrom color.red.400 | ||
--color-success-text | Success text. Never the only cue: the wording or an icon (with a text alternative) must convey the status on its own (WCAG 1.4.1). | #1e6b45from color.green.700 | #8fd6a8from color.green.300 | ||
--color-success-background | Success tint behind success text. Never the only cue: the wording or an icon (with a text alternative) must convey the status on its own (WCAG 1.4.1). | #e8f5eefrom color.green.50 | #11352afrom color.green.900 | ||
--color-success-border | Success boundary (3:1). Never the only cue: the wording or an icon (with a text alternative) must convey the status on its own (WCAG 1.4.1). | #2a8556from color.green.600 | #5fbf86from color.green.400 | ||
--color-warning-text | Warning text. Never the only cue: the wording or an icon (with a text alternative) must convey the status on its own (WCAG 1.4.1). | #94440afrom color.orange.700 | #f7ad7cfrom color.orange.300 | ||
--color-warning-background | Warning tint behind warning text. Never the only cue: the wording or an icon (with a text alternative) must convey the status on its own (WCAG 1.4.1). | #fdf0e6from color.orange.50 | #45230dfrom color.orange.900 | ||
--color-warning-border | Warning boundary (3:1). Never the only cue: the wording or an icon (with a text alternative) must convey the status on its own (WCAG 1.4.1). | #b25a12from color.orange.600 | #ec8c4efrom color.orange.400 | ||
--color-border-subtle | Decorative dividers only. Not contrast-checked; never the only boundary of a control. | #e5dccbfrom color.sand.200 | #272f3ffrom color.slate.800 | ||
--color-border-default | Decorative lines that must read on every surface, such as a Separator's subtle line: firmer than subtle, about 1.5–2:1. Not contrast-checked; never the only boundary of a control. | #adbac8from color.gray.300 | #63676ffrom color.slate.500 | ||
--color-border-strong | Boundaries of UI components (3:1). | #6d7e90from color.gray.500 | #818b9efrom color.slate.400 | ||
--color-border-glass-highlight | Decorative lit edge on glass cards (top and left). Never carries meaning, so it declares no contrast pairing. | rgba(255, 255, 255, 0.8)from color.overlay.white-80 | rgba(255, 255, 255, 0.2)from color.overlay.white-20 | ||
--color-border-rule | Decorative rule marking a block, such as an Experience highlight: quiet in light, accent cyan in dark. Not contrast-checked. | #e5dccbfrom color.sand.200 | #54d8f4from color.cyan.300 | ||
--color-focus-ring | Focus indicator color (3:1 against every surface it can sit on). | #005f7bfrom color.cyan.700 | #54d8f4from color.cyan.300 | ||
--color-backdrop-dot-near | Nearest, brightest dot of the page backdrop layer's sphere. Decorative; not contrast-checked. | #005f7bfrom color.cyan.700 | #edf2f8from color.gray.50 | ||
--color-backdrop-dot-far | Farthest, faintest dot of the page backdrop layer's sphere. Decorative; not contrast-checked. | #1c87a5from color.cyan.500 | #54d8f4from color.cyan.300 | ||
--color-backdrop-glow | Translucent glow of the page backdrop layer, behind the sphere. Decorative; not contrast-checked. | rgba(84, 216, 244, 0.3)from color.overlay.cyan-300-30 | rgba(84, 216, 244, 0.24)from color.overlay.cyan-300-24 | ||
--color-backdrop-frame | Translucent glow of the page backdrop layer's frame: an even band along every edge of quiet pages. Decorative; not contrast-checked. | rgba(84, 216, 244, 0.3)from color.overlay.cyan-300-30 | rgba(84, 216, 244, 0.24)from color.overlay.cyan-300-24 | ||
--color-grid-line | Faint lines of the decorative grid pattern (Card showcase media, color-ramp checkerboard). Decorative; not contrast-checked. | rgba(0, 95, 123, 0.08)from color.overlay.cyan-700-8 | rgba(186, 197, 217, 0.1)from color.overlay.slate-300-10 | ||
| Token | Copy | Description | Value | Preview |
|---|---|---|---|---|
--type-family-body | Font family for body and UI text. | 'Inter Variable', 'Inter Fallback', system-ui, -apple-system, 'Segoe UI', Roboto, sans-seriffrom type.font-stack.sans | ||
--type-family-heading | Font family for headings. | 'Space Grotesk Variable', 'Space Grotesk Fallback', system-ui, -apple-system, 'Segoe UI', Roboto, sans-seriffrom type.font-stack.display | ||
--type-family-code | Font family for code and token names. | 'Fira Code Variable', 'Fira Code Fallback', ui-monospace, SFMono-Regular, Menlo, Consolas, monospacefrom type.font-stack.mono | ||
--type-family-label | Font family for small uppercase annotation labels and badges. | 'Fira Code Variable', 'Fira Code Fallback', ui-monospace, SFMono-Regular, Menlo, Consolas, monospacefrom type.font-stack.mono | ||
--type-size-small | Secondary text: captions, footers, metadata. | 0.875remfrom type.font-size.sm | ||
--type-size-body | Default running text. | 1remfrom type.font-size.md | ||
--type-size-lead | Introductory paragraph text. | 1.25remfrom type.font-size.lg | ||
--type-size-display | Display text, such as a hero name. | 3remfrom type.font-size.4xl | ||
--type-size-h1 | Page title (h1). | 2.5remfrom type.font-size.3xl | ||
--type-size-h2 | Section heading (h2). | 2remfrom type.font-size.2xl | ||
--type-size-h3 | Subsection heading (h3). | 1.5remfrom type.font-size.xl | ||
--type-size-h4 | Minor heading (h4). | 1.25remfrom type.font-size.lg | ||
--type-size-h5 | Minor heading (h5). | 1remfrom type.font-size.md | ||
--type-size-h6 | Minor heading (h6). | 0.875remfrom type.font-size.sm | ||
--type-size-label | Small uppercase annotation labels. | 0.75remfrom type.font-size.xs | ||
--type-weight-body | Weight for running text. | 400from type.font-weight.400 | ||
--type-weight-strong | Weight for emphasis and labels. | 600from type.font-weight.600 | ||
--type-weight-heading | Weight for headings. | 700from type.font-weight.700 | ||
--type-leading-body | Line height for running text. | 1.6from type.line-height.normal | ||
--type-leading-heading | Line height for headings. | 1.2from type.line-height.tight | ||
--type-tracking-display | Letter spacing for large display headings. | -0.02emfrom type.letter-spacing.neg-2 | ||
--type-tracking-body | Letter spacing for running text. | 0emfrom type.letter-spacing.0 | ||
--type-tracking-label | Letter spacing for small uppercase mono labels. | 0.16emfrom type.letter-spacing.16 | ||
--type-measure-text | Readable line length for running text (about 65 characters). | 65chfrom type.line-length.65 | No preview |
| Token | Copy | Description | Value | Preview |
|---|---|---|---|---|
--space-inset-sm | Padding inside small elements. | 0.5remfrom space.2 | ||
--space-inset-md | Padding inside standard containers. | 1remfrom space.4 | ||
--space-inset-lg | Padding inside large containers. | 1.5remfrom space.6 | ||
--space-stack-xs | Vertical gap between tightly related items. | 0.25remfrom space.1 | ||
--space-stack-sm | Vertical gap between related items. | 0.5remfrom space.2 | ||
--space-stack-md | Vertical gap between paragraphs and blocks. | 1remfrom space.4 | ||
--space-stack-lg | Vertical gap between groups. | 1.5remfrom space.6 | ||
--space-stack-xl | Vertical gap between sections. | 2remfrom space.8 | ||
--space-inline-xs | Horizontal gap between tightly related items. | 0.25remfrom space.1 | ||
--space-inline-sm | Horizontal gap between small inline items. | 0.5remfrom space.2 | ||
--space-inline-md | Horizontal gap between inline items, such as nav links. | 1remfrom space.4 | ||
--space-inline-lg | Horizontal gap between groups. | 1.5remfrom space.6 | ||
--space-inline-xl | Horizontal gap between large groups. | 2remfrom space.8 | ||
--space-layout-xs | Page side gutter (16px). | 1remfrom space.4 | ||
--space-layout-sm | Small layout gap between page regions. | 2remfrom space.8 | ||
--space-layout-md | Medium layout gap between page regions. | 3remfrom space.12 | ||
--space-layout-lg | Large layout gap between page regions. | 4remfrom space.16 |
| Token | Copy | Description | Value | Preview |
|---|---|---|---|---|
--size-control-sm | Block size of small controls (32px). | 2remfrom size.8 | ||
--size-control-md | Block size of standard controls (40px). | 2.5remfrom size.10 | ||
--size-icon-sm | Small icon (16px). | 1remfrom size.4 | ||
--size-icon-md | Medium icon (20px). | 1.25remfrom size.5 | ||
--size-icon-lg | Large icon (24px). | 1.5remfrom size.6 | ||
--size-column-sm | Minimum width of a narrow grid column. | 12remfrom size.48 | ||
--size-column-md | Minimum width of a standard grid column. | 16remfrom size.64 | ||
--size-column-lg | Minimum width of a wide grid column. | 20remfrom size.80 | ||
--size-pattern-cell | Cell size of the decorative grid pattern (Card showcase media, color-ramp checkerboard). | 1.5remfrom size.6 | ||
--size-viewport-image | Tallest a content image gets: 80% of the dynamic viewport height, so it's seen whole. | 80dvhfrom size.viewport-height.80 | No preview | |
--size-breakpoint-sm | Small viewport (480px at the default root size): narrower or shorter is a small screen. Media queries write it as 30em. | 30remfrom size.120 | No preview | |
--size-breakpoint-md | Medium viewport (768px at the default root size): from here the docs side menu is a column beside the content. Media queries write it as 48em. | 48remfrom size.192 | No preview | |
--size-breakpoint-lg | Large viewport (1280px at the default root size): from here a docs page's On this page list is a column at the inline end. Media queries write it as 80em. | 80remfrom size.320 | No preview |
| Token | Copy | Description | Value | Preview |
|---|---|---|---|---|
--radius-control | Corners of interactive controls. | 4pxfrom radius.4 | ||
--radius-surface | Corners of cards and raised surfaces. | 4pxfrom radius.4 | ||
--radius-pill | Fully rounded pills and tags. | 9999pxfrom radius.full |
| Token | Copy | Description | Value | Preview |
|---|---|---|---|---|
--motion-duration-instant | Immediate feedback, such as hover color changes. | 100msfrom motion.time.100Reduced motion: 0ms from motion.time.0 | No preview | |
--motion-duration-fast | Small state changes. | 150msfrom motion.time.150Reduced motion: 0ms from motion.time.0 | No preview | |
--motion-duration-base | Standard transitions. | 250msfrom motion.time.250Reduced motion: 0ms from motion.time.0 | No preview | |
--motion-duration-slow | Large or entering elements. | 400msfrom motion.time.400Reduced motion: 0ms from motion.time.0 | No preview | |
--motion-easing-enter | Elements entering or appearing. | cubic-bezier(0, 0, 0.2, 1)from motion.curve.out | No preview | |
--motion-easing-exit | Elements leaving or disappearing. | cubic-bezier(0.4, 0, 1, 1)from motion.curve.in | No preview | |
--motion-easing-standard | Elements moving or changing in place. | cubic-bezier(0.4, 0, 0.2, 1)from motion.curve.in-out | No preview |
| Token | Copy | Description | Light | Dark | Preview |
|---|---|---|---|---|---|
--effect-focus-ring-width | Focus indicator outline width. | Both themes2pxfrom effect.line.2 | |||
--effect-focus-ring-offset | Gap between an element and its focus indicator. | Both themes2pxfrom effect.line.2 | |||
--effect-backdrop-glass | Backdrop blur behind glass surfaces. | Both themes12pxfrom effect.blur-radius.12 | |||
--effect-backdrop-glass-sheer | Light backdrop blur behind glass cards, so the sphere shows through as a soft haze. | Both themes6pxfrom effect.blur-radius.6 | |||
--effect-border-width | Border width of controls and surfaces. | Both themes2pxfrom effect.line.2 | |||
--effect-border-width-thick | Width of a thick rule, such as a Separator's thick variant: heavier than a border. | Both themes3pxfrom effect.line.3 | |||
--effect-grid-width | Width of the decorative grid pattern's lines (Card showcase media, color-ramp checkerboard): kept faint, thinner than borders. | Both themes1pxfrom effect.line.1 | |||
--effect-underline-thickness | Thickness of link underlines. | Both themes1pxfrom effect.line.1 | |||
--effect-underline-offset | Gap between link text and its underline. | Both themes2pxfrom effect.line.2 | |||
--effect-underline-thickness-hover | Thickness of a hovered link underline. | Both themes2pxfrom effect.line.2 | |||
--effect-elevation-none | Flat surfaces: no shadow. | 0px 0px 0px 0px rgb(0% 0% 0% / 0)from effect.shadow.none | 0px 0px 0px 0px rgb(0% 0% 0% / 0)from effect.shadow.none | ||
--effect-elevation-raised | Shadow for slightly raised surfaces. | 0px 1px 2px 0px rgb(0% 0% 0% / 0.08)from effect.shadow.sm | 0px 1px 2px 0px rgb(0% 0% 0% / 0.3)from effect.shadow.sm-dark | ||
--effect-elevation-overlay | Shadow for overlays such as menus and dialogs. | 0px 4px 12px 0px rgb(0% 0% 0% / 0.12)from effect.shadow.md | 0px 4px 12px 0px rgb(0% 0% 0% / 0.4)from effect.shadow.md-dark | ||
| Token | Copy | Description | Value | Preview |
|---|---|---|---|---|
--layer-backdrop | The page backdrop: behind all content. | -1from layer.below | No preview | |
--layer-raised | Above a sibling overlay in the same component (Card's children). | 1from layer.1 | No preview | |
--layer-sticky | Sticky page chrome (the site header). | 2from layer.2 | No preview | |
--layer-overlay | Revealed overlays that must sit above sticky chrome (skip link). | 3from layer.3 | No preview |
Component
One component's styling hooks. Each aliases one semantic token, in every theme.
| Token | Copy | Component | Description | Aliases | Light | Dark | Preview |
|---|---|---|---|---|---|---|---|
--component-button-focus-ring-color | Button | Focus indicator. It's drawn outside the button, so it's checked against the surfaces. | color.focus.ring | #005f7bfrom color.cyan.700 | #54d8f4from color.cyan.300 | ||
--component-button-primary-background | Button | Primary background. | color.action.background | #b37500from color.gold.600 | #f5e3c2from color.champagne.100 | ||
--component-button-primary-background-hover | Button | Primary background on hover. | color.action.background-hover | #c58800from color.gold.500 | #fff5e2from color.champagne.50 | ||
--component-button-primary-background-active | Button | Primary background while pressed (:active): a darker gold than the resting fill. | color.action.background-pressed | #795616from color.gold.700 | #b2a181from color.champagne.600 | ||
--component-button-primary-text | Button | Primary text and icon color. | color.action.text | #0b0c0efrom color.neutral.950 | #0b0c0efrom color.neutral.950 | ||
--component-button-primary-text-active | Button | Primary text and icon color while pressed (:active), on the darker fill. | color.action.text-pressed | #fbf8f2from color.sand.50 | #0b0c0efrom color.neutral.950 | ||
--component-button-primary-border | Button | Primary border color. | color.action.background | #b37500from color.gold.600 | #f5e3c2from color.champagne.100 | ||
--component-button-primary-pressed-background | Button | Primary toggle background while pressed (aria-pressed="true"): the darker gold of a pressed primary. It differs from the resting fill by lightness only, so a toggle whose state must read clearly also changes its label or shows a check icon. | color.action.background-pressed | #795616from color.gold.700 | #b2a181from color.champagne.600 | ||
--component-button-primary-pressed-background-hover | Button | Primary pressed toggle background on hover and while pressing: it stays the darker gold. | color.action.background-pressed | #795616from color.gold.700 | #b2a181from color.champagne.600 | ||
--component-button-primary-pressed-text | Button | Primary pressed toggle text and icon color. | color.action.text-pressed | #fbf8f2from color.sand.50 | #0b0c0efrom color.neutral.950 | ||
--component-button-primary-pressed-border | Button | Primary pressed toggle border color: the pressed fill, which is the toggle's boundary (3:1 against the surfaces). | color.action.background-pressed | #795616from color.gold.700 | #b2a181from color.champagne.600 | ||
--component-button-secondary-background | Button | Secondary background. | color.surface.raised | #fffffffrom color.gray.0 | #18202efrom color.slate.900 | ||
--component-button-secondary-background-hover | Button | Secondary background on hover. | color.surface.sunken | #f2ede2from color.sand.100 | #060a13from color.slate.1000 | ||
--component-button-secondary-background-active | Button | Secondary background while pressed (:active). | color.surface.sunken | #f2ede2from color.sand.100 | #060a13from color.slate.1000 | ||
--component-button-secondary-text | Button | Secondary text and icon color. | color.text.default | #17202bfrom color.gray.900 | #fffffffrom color.gray.0 | ||
--component-button-secondary-border | Button | Secondary border color. | color.border.strong | #6d7e90from color.gray.500 | #818b9efrom color.slate.400 | ||
--component-button-secondary-pressed-background | Button | Secondary toggle background while pressed (aria-pressed="true"). | color.action.background | #b37500from color.gold.600 | #f5e3c2from color.champagne.100 | ||
--component-button-secondary-pressed-background-hover | Button | Secondary pressed toggle background on hover and while pressing. | color.action.background-hover | #c58800from color.gold.500 | #fff5e2from color.champagne.50 | ||
--component-button-secondary-pressed-text | Button | Secondary pressed toggle text and icon color. | color.action.text | #0b0c0efrom color.neutral.950 | #0b0c0efrom color.neutral.950 | ||
--component-button-secondary-pressed-border | Button | Secondary pressed toggle border color. | color.action.background | #b37500from color.gold.600 | #f5e3c2from color.champagne.100 | ||
--component-button-ghost-background | Button | Ghost background. | color.fill.none | rgba(0, 0, 0, 0)from color.overlay.transparent | rgba(0, 0, 0, 0)from color.overlay.transparent | ||
--component-button-ghost-background-hover | Button | Ghost background on hover. | color.surface.sunken | #f2ede2from color.sand.100 | #060a13from color.slate.1000 | ||
--component-button-ghost-background-active | Button | Ghost background while pressed (:active). | color.surface.sunken | #f2ede2from color.sand.100 | #060a13from color.slate.1000 | ||
--component-button-ghost-text | Button | Ghost text and icon color. | color.text.default | #17202bfrom color.gray.900 | #fffffffrom color.gray.0 | ||
--component-button-ghost-border | Button | Ghost border color. | color.fill.none | rgba(0, 0, 0, 0)from color.overlay.transparent | rgba(0, 0, 0, 0)from color.overlay.transparent | ||
--component-button-ghost-pressed-background | Button | Ghost toggle background while pressed (aria-pressed="true"). | color.action.background | #b37500from color.gold.600 | #f5e3c2from color.champagne.100 | ||
--component-button-ghost-pressed-background-hover | Button | Ghost pressed toggle background on hover and while pressing. | color.action.background-hover | #c58800from color.gold.500 | #fff5e2from color.champagne.50 | ||
--component-button-ghost-pressed-text | Button | Ghost pressed toggle text and icon color. | color.action.text | #0b0c0efrom color.neutral.950 | #0b0c0efrom color.neutral.950 | ||
--component-button-ghost-pressed-border | Button | Ghost pressed toggle border color. | color.action.background | #b37500from color.gold.600 | #f5e3c2from color.champagne.100 | ||
--component-button-disabled-background | Button | Background while disabled. | color.surface.sunken | #f2ede2from color.sand.100 | #060a13from color.slate.1000 | ||
--component-button-disabled-text | Button | Text while disabled. Exempt from contrast minimums (WCAG 1.4.3), but kept at 4.5:1 anyway. | color.text.subtle | #5d6876from color.gray.600 | #d3dce6from color.slate.200 | ||
--component-button-disabled-border | Button | Border while disabled. | color.border.subtle | #e5dccbfrom color.sand.200 | #272f3ffrom color.slate.800 | ||
--component-link-color | Link | Inline link text. | color.link.default | #795616from color.gold.700 | #d3c2a2from color.champagne.400 | ||
--component-link-color-hover | Link | Inline link text on hover. | color.link.hover | #62440afrom color.gold.800 | #e4d2b2from color.champagne.300 | ||
--component-link-color-current | Link | Text of a link to the current page (aria-current). | color.text.default | #17202bfrom color.gray.900 | #fffffffrom color.gray.0 | ||
--component-link-color-visited | Link | Text of a visited link, where showVisited is set. | color.link.visited | #5b3fa6from color.violet.600 | #d9cdf7from color.violet.200 | ||
--component-link-focus-ring-color | Link | Focus indicator. It's drawn outside the link, so it's checked against the surfaces. | color.focus.ring | #005f7bfrom color.cyan.700 | #54d8f4from color.cyan.300 | ||
--component-menu-popup-background | Menu | Popup surface. | color.surface.raised | #fffffffrom color.gray.0 | #18202efrom color.slate.900 | ||
--component-menu-popup-border | Menu | Popup outline. | color.border.subtle | #e5dccbfrom color.sand.200 | #272f3ffrom color.slate.800 | ||
--component-menu-item-text | Menu | Item text. | color.text.default | #17202bfrom color.gray.900 | #fffffffrom color.gray.0 | ||
--component-menu-item-background-focus | Menu | Item background while focused (pointing at an item focuses it). | color.surface.sunken | #f2ede2from color.sand.100 | #060a13from color.slate.1000 | ||
--component-menu-item-text-focus | Menu | Item text while focused. | color.text.default | #17202bfrom color.gray.900 | #fffffffrom color.gray.0 | ||
--component-menu-item-focus-ring-color | Menu | Focus indicator, drawn inside the item. | color.focus.ring | #005f7bfrom color.cyan.700 | #54d8f4from color.cyan.300 | ||
--component-menu-item-checked-indicator | Menu | Check mark of a checked radio or checkbox item (3:1, it carries state). | color.action.background | #b37500from color.gold.600 | #f5e3c2from color.champagne.100 | ||
--component-menu-item-disabled-text | Menu | Text of a disabled item. | color.text.subtle | #5d6876from color.gray.600 | #d3dce6from color.slate.200 | ||
--component-menu-group-label-text | Menu | Radio group label. | color.text.subtle | #5d6876from color.gray.600 | #d3dce6from color.slate.200 | ||
--component-menu-separator-color | Menu | Separator line (decorative). | color.border.subtle | #e5dccbfrom color.sand.200 | #272f3ffrom color.slate.800 | ||
--component-text-field-background | TextField | The input's background. | color.surface.raised | #fffffffrom color.gray.0 | #18202efrom color.slate.900 | ||
--component-text-field-text | TextField | The typed value. | color.text.default | #17202bfrom color.gray.900 | #fffffffrom color.gray.0 | ||
--component-text-field-placeholder | TextField | Placeholder text. Never the label. | color.text.subtle | #5d6876from color.gray.600 | #d3dce6from color.slate.200 | ||
--component-text-field-border | TextField | The input's boundary (3:1 against the surfaces it sits on and its own background). | color.border.strong | #6d7e90from color.gray.500 | #818b9efrom color.slate.400 | ||
--component-text-field-border-invalid | TextField | The boundary while the field has an error. | color.error.border | #c8372cfrom color.red.600 | #e8776cfrom color.red.400 | ||
--component-text-field-hint-text | TextField | Hint text under the label. | color.text.muted | #455464from color.gray.700 | #e6ecf3from color.slate.100 | ||
--component-text-field-error-text | TextField | Error message under the input, beside its warning icon. | color.error.text | #b3261efrom color.red.700 | #f4a097from color.red.300 | ||
--component-text-field-icon | TextField | The start icon (decorative; the label names the field). | color.text.muted | #455464from color.gray.700 | #e6ecf3from color.slate.100 | ||
--component-text-field-disabled-background | TextField | The input's background while disabled. | color.surface.sunken | #f2ede2from color.sand.100 | #060a13from color.slate.1000 | ||
--component-text-field-disabled-text | TextField | The value's color while disabled. | color.text.subtle | #5d6876from color.gray.600 | #d3dce6from color.slate.200 | ||
--component-slider-track | Slider | The unfilled track: the control's boundary. | color.border.strong | #6d7e90from color.gray.500 | #818b9efrom color.slate.400 | ||
--component-slider-fill | Slider | The track from the minimum to the thumb. | color.action.background | #b37500from color.gold.600 | #f5e3c2from color.champagne.100 | ||
--component-slider-thumb | Slider | The thumb: what the visitor drags. | color.action.background | #b37500from color.gold.600 | #f5e3c2from color.champagne.100 | ||
--component-slider-thumb-border | Slider | A ring around the thumb that separates it from the fill. | color.surface.raised | #fffffffrom color.gray.0 | #18202efrom color.slate.900 | ||
--component-slider-value-text | Slider | The current value beside the label. | color.text.muted | #455464from color.gray.700 | #e6ecf3from color.slate.100 | ||
--component-slider-mark-text | Slider | Mark labels under the track. | color.text.subtle | #5d6876from color.gray.600 | #d3dce6from color.slate.200 | ||
--component-color-field-swatch-border | ColorField | Swatch outline, so a swatch close to the surface still has a 3:1 boundary. | color.border.strong | #6d7e90from color.gray.500 | #818b9efrom color.slate.400 | ||
--component-color-field-picker-border | ColorField | Color picker outline. | color.border.strong | #6d7e90from color.gray.500 | #818b9efrom color.slate.400 | ||
--component-color-field-legend-text | ColorField | The legend. | color.text.default | #17202bfrom color.gray.900 | #fffffffrom color.gray.0 | ||
--component-typography-tone-default-color | Typography | Default text color. | color.text.default | #17202bfrom color.gray.900 | #fffffffrom color.gray.0 | ||
--component-typography-tone-muted-color | Typography | Muted text color. | color.text.muted | #455464from color.gray.700 | #e6ecf3from color.slate.100 | ||
--component-typography-tone-subtle-color | Typography | Subtle text color. Not checked against glass. | color.text.subtle | #5d6876from color.gray.600 | #d3dce6from color.slate.200 | ||
--component-typography-tone-accent-color | Typography | Accent text color. Not checked against glass. | color.accent.text | #005f7bfrom color.cyan.700 | #54d8f4from color.cyan.300 | ||
--component-typography-tone-accent-2-color | Typography | Second accent (violet) text color. Not checked against glass. | color.accent-2.text | #5b3fa6from color.violet.600 | #c9b8f5from color.violet.300 | ||
--component-typography-tone-success-color | Typography | Success text color. Never the only cue: the wording must state the status (WCAG 1.4.1). Not checked against glass. | color.success.text | #1e6b45from color.green.700 | #8fd6a8from color.green.300 | ||
--component-typography-tone-warning-color | Typography | Warning text color. Never the only cue: the wording must state the status (WCAG 1.4.1). Not checked against glass. | color.warning.text | #94440afrom color.orange.700 | #f7ad7cfrom color.orange.300 | ||
--component-typography-tone-error-color | Typography | Error text color. Never the only cue: the wording must state the status (WCAG 1.4.1). Not checked against glass. | color.error.text | #b3261efrom color.red.700 | #f4a097from color.red.300 | ||
--component-code-block-background | CodeBlock | Block fill, behind the header and the code. | color.surface.code | #edf2f8from color.gray.50 | #111827from color.slate.925 | ||
--component-code-block-text | CodeBlock | Code text. | color.text.default | #17202bfrom color.gray.900 | #fffffffrom color.gray.0 | ||
--component-code-block-border | CodeBlock | Line around the block and under the header (decorative: the fill and the label mark the block). | color.border.subtle | #e5dccbfrom color.sand.200 | #272f3ffrom color.slate.800 | ||
--component-code-block-label-color | CodeBlock | Header label text. | color.text.muted | #455464from color.gray.700 | #e6ecf3from color.slate.100 | ||
--component-code-block-failure-color | CodeBlock | The visible "Couldn't copy" text beside the copy button (its wording states the failure, not only its color). | color.error.text | #b3261efrom color.red.700 | #f4a097from color.red.300 | ||
--component-code-block-line-number-color | CodeBlock | Line numbers (decorative: never copied or announced, but still readable). | color.text.subtle | #5d6876from color.gray.600 | #d3dce6from color.slate.200 | ||
--component-code-block-focus-ring-color | CodeBlock | Focus indicator of an overflowing block, drawn inside it so it stays clear of the border and the header line. | color.focus.ring | #005f7bfrom color.cyan.700 | #54d8f4from color.cyan.300 | ||
--component-table-background | Table | Panel fill, and the first body row and every other one after it. | color.surface.raised | #fffffffrom color.gray.0 | #18202efrom color.slate.900 | ||
--component-table-stripe-background | Table | Fill of the body rows between them (decorative: the table's semantics carry its rows). | color.surface.base | #fbf8f2from color.sand.50 | #0b1220from color.slate.950 | ||
--component-table-text | Table | Cell text. | color.text.default | #17202bfrom color.gray.900 | #fffffffrom color.gray.0 | ||
--component-table-border | Table | Panel border and the lines under the head and above the foot (decorative). | color.border.subtle | #e5dccbfrom color.sand.200 | #272f3ffrom color.slate.800 | ||
--component-table-header-background | Table | Fill of the head and foot rows. | color.surface.sunken | #f2ede2from color.sand.100 | #060a13from color.slate.1000 | ||
--component-table-caption-color | Table | Visible caption text, above the panel. | color.text.muted | #455464from color.gray.700 | #e6ecf3from color.slate.100 | ||
--component-table-focus-ring-color | Table | Focus indicator of an overflowing table, around the caption and the panel. | color.focus.ring | #005f7bfrom color.cyan.700 | #54d8f4from color.cyan.300 | ||
--component-separator-subtle-color | Separator | Line color of the subtle (default) variant (decorative: nothing depends on seeing it). | color.border.default | #adbac8from color.gray.300 | #63676ffrom color.slate.500 | ||
--component-separator-strong-color | Separator | Line color of the strong variant, for a line that is the only thing showing a grouping (3:1). | color.border.strong | #6d7e90from color.gray.500 | #818b9efrom color.slate.400 | ||
--component-badge-neutral-background | Badge | Neutral badge fill. | color.surface.sunken | #f2ede2from color.sand.100 | #060a13from color.slate.1000 | ||
--component-badge-neutral-text | Badge | Neutral badge text. | color.text.muted | #455464from color.gray.700 | #e6ecf3from color.slate.100 | ||
--component-badge-neutral-border | Badge | Neutral badge outline (decorative). | color.border.subtle | #e5dccbfrom color.sand.200 | #272f3ffrom color.slate.800 | ||
--component-badge-accent-background | Badge | Accent badge fill. | color.accent.background | #e0f6fefrom color.cyan.50 | #00242efrom color.cyan.950 | ||
--component-badge-accent-text | Badge | Accent badge text. | color.accent.text | #005f7bfrom color.cyan.700 | #54d8f4from color.cyan.300 | ||
--component-badge-accent-border | Badge | Accent badge outline (decorative). | color.accent.border | #1c87a5from color.cyan.500 | #54d8f4from color.cyan.300 | ||
--component-badge-accent-2-background | Badge | Second accent (violet) badge fill. | color.accent-2.background | #f4f0fdfrom color.violet.50 | #2a1f52from color.violet.900 | ||
--component-badge-accent-2-text | Badge | Second accent (violet) badge text. | color.accent-2.text | #5b3fa6from color.violet.600 | #c9b8f5from color.violet.300 | ||
--component-badge-accent-2-border | Badge | Second accent (violet) badge outline (decorative). | color.accent-2.border | #5b3fa6from color.violet.600 | #c9b8f5from color.violet.300 | ||
--component-badge-success-background | Badge | Success badge fill. Never the only cue: the wording must state the status (WCAG 1.4.1). | color.success.background | #e8f5eefrom color.green.50 | #11352afrom color.green.900 | ||
--component-badge-success-text | Badge | Success badge text. Never the only cue: the wording must state the status (WCAG 1.4.1). | color.success.text | #1e6b45from color.green.700 | #8fd6a8from color.green.300 | ||
--component-badge-success-border | Badge | Success badge outline (decorative). | color.success.border | #2a8556from color.green.600 | #5fbf86from color.green.400 | ||
--component-badge-warning-background | Badge | Warning badge fill. Never the only cue: the wording must state the status (WCAG 1.4.1). | color.warning.background | #fdf0e6from color.orange.50 | #45230dfrom color.orange.900 | ||
--component-badge-warning-text | Badge | Warning badge text. Never the only cue: the wording must state the status (WCAG 1.4.1). | color.warning.text | #94440afrom color.orange.700 | #f7ad7cfrom color.orange.300 | ||
--component-badge-warning-border | Badge | Warning badge outline (decorative). | color.warning.border | #b25a12from color.orange.600 | #ec8c4efrom color.orange.400 | ||
--component-badge-error-background | Badge | Error badge fill. Never the only cue: the wording must state the status (WCAG 1.4.1). | color.error.background | #fceceafrom color.red.50 | #4a1a1cfrom color.red.900 | ||
--component-badge-error-text | Badge | Error badge text. Never the only cue: the wording must state the status (WCAG 1.4.1). | color.error.text | #b3261efrom color.red.700 | #f4a097from color.red.300 | ||
--component-badge-error-border | Badge | Error badge outline (decorative). | color.error.border | #c8372cfrom color.red.600 | #e8776cfrom color.red.400 | ||
--component-card-heading-color | Card | Heading text. | color.text.default | #17202bfrom color.gray.900 | #fffffffrom color.gray.0 | ||
--component-card-body-color | Card | Body and footer text. | color.text.muted | #455464from color.gray.700 | #e6ecf3from color.slate.100 | ||
--component-card-media-border | Card | Divider between the media and the rest of the card, in every variant. | color.border.default | #adbac8from color.gray.300 | #63676ffrom color.slate.500 | ||
--component-card-raised-background | Card | Raised card (the default) surface. | color.surface.raised | #fffffffrom color.gray.0 | #18202efrom color.slate.900 | ||
--component-card-raised-border | Card | Raised card (the default) outline. | color.border.subtle | #e5dccbfrom color.sand.200 | #272f3ffrom color.slate.800 | ||
--component-card-raised-background-hover | Card | Raised card (the default) surface while its link is hovered. | color.surface.sunken | #f2ede2from color.sand.100 | #060a13from color.slate.1000 | ||
--component-card-raised-border-hover | Card | Raised card (the default) outline while its link is hovered. | color.border.strong | #6d7e90from color.gray.500 | #818b9efrom color.slate.400 | ||
--component-card-outlined-background | Card | Outlined card surface. | color.fill.none | rgba(0, 0, 0, 0)from color.overlay.transparent | rgba(0, 0, 0, 0)from color.overlay.transparent | ||
--component-card-outlined-border | Card | Outlined card outline. | color.border.strong | #6d7e90from color.gray.500 | #818b9efrom color.slate.400 | ||
--component-card-outlined-background-hover | Card | Outlined card surface while its link is hovered. | color.surface.sunken | #f2ede2from color.sand.100 | #060a13from color.slate.1000 | ||
--component-card-outlined-border-hover | Card | Outlined card outline while its link is hovered. | color.border.strong | #6d7e90from color.gray.500 | #818b9efrom color.slate.400 | ||
--component-card-flat-background | Card | Flat card surface. | color.surface.sunken | #f2ede2from color.sand.100 | #060a13from color.slate.1000 | ||
--component-card-flat-border | Card | Flat card outline. | color.fill.none | rgba(0, 0, 0, 0)from color.overlay.transparent | rgba(0, 0, 0, 0)from color.overlay.transparent | ||
--component-card-flat-background-hover | Card | Flat card surface while its link is hovered. | color.surface.sunken | #f2ede2from color.sand.100 | #060a13from color.slate.1000 | ||
--component-card-flat-border-hover | Card | Flat card outline while its link is hovered. | color.border.strong | #6d7e90from color.gray.500 | #818b9efrom color.slate.400 | ||
--component-card-glass-background | Card | Glass card surface. | color.surface.glass-sheer | rgba(255, 255, 255, 0.2)from color.overlay.white-20 | rgba(255, 255, 255, 0.08)from color.overlay.white-8 | ||
--component-card-glass-border | Card | Glass card outline. | color.border.subtle | #e5dccbfrom color.sand.200 | #272f3ffrom color.slate.800 | ||
--component-card-glass-background-hover | Card | Glass card surface while its link is hovered. | color.surface.glass-sheer | rgba(255, 255, 255, 0.2)from color.overlay.white-20 | rgba(255, 255, 255, 0.08)from color.overlay.white-8 | ||
--component-card-glass-border-hover | Card | Glass card outline while its link is hovered. | color.border.strong | #6d7e90from color.gray.500 | #818b9efrom color.slate.400 | ||
--component-card-glass-highlight | Card | Glass card's lit top and left edges, drawn inside the outline. | color.border.glass-highlight | rgba(255, 255, 255, 0.8)from color.overlay.white-80 | rgba(255, 255, 255, 0.2)from color.overlay.white-20 | ||
--component-card-glass-background-opaque | Card | Glass card surface, at rest and on hover, under reduced transparency and in custom themes. | color.surface.raised | #fffffffrom color.gray.0 | #18202efrom color.slate.900 | ||
--component-card-focus-ring-color | Card | Focus indicator drawn around a link card while its link has focus. | color.focus.ring | #005f7bfrom color.cyan.700 | #54d8f4from color.cyan.300 | ||
--component-accordion-border | Accordion | Lines above each item and below the last (decorative: the button's text and chevron mark each item). | color.border.subtle | #e5dccbfrom color.sand.200 | #272f3ffrom color.slate.800 | ||
--component-accordion-trigger-text | Accordion | Heading button text and chevron. | color.text.default | #17202bfrom color.gray.900 | #fffffffrom color.gray.0 | ||
--component-accordion-trigger-background-hover | Accordion | Heading button background on hover (only where the device can hover), as Button's ghost hover. | color.surface.sunken | #f2ede2from color.sand.100 | #060a13from color.slate.1000 | ||
--component-accordion-focus-ring-color | Accordion | Focus indicator, drawn inside the heading button so it stays clear of the lines. | color.focus.ring | #005f7bfrom color.cyan.700 | #54d8f4from color.cyan.300 | ||
--component-tooltip-background | Tooltip | Bubble and arrow fill. | color.surface.inverse | #17202bfrom color.gray.900 | #e6effffrom color.slate.50 | ||
--component-tooltip-text | Tooltip | Tooltip text. | color.text.inverse | #fbf8f2from color.sand.50 | #0b1220from color.slate.950 | ||
--component-dialog-background | Dialog | Dialog surface. | color.surface.raised | #fffffffrom color.gray.0 | #18202efrom color.slate.900 | ||
--component-dialog-text | Dialog | Dialog text. | color.text.default | #17202bfrom color.gray.900 | #fffffffrom color.gray.0 | ||
--component-dialog-border | Dialog | Surface outline. Decorative: the scrim and shadow already set the dialog apart. | color.border.default | #adbac8from color.gray.300 | #63676ffrom color.slate.500 | ||
--component-dialog-backdrop | Dialog | Scrim over the page behind a modal dialog. | color.fill.scrim | rgba(14, 20, 27, 0.4)from color.overlay.gray-950-40 | rgba(14, 20, 27, 0.6)from color.overlay.gray-950-60 |
| Token | Copy | Component | Description | Aliases | Light | Dark | Preview |
|---|---|---|---|---|---|---|---|
--component-button-font-family | Button | Label font. | type.family.body | 'Inter Variable', 'Inter Fallback', system-ui, -apple-system, 'Segoe UI', Roboto, sans-seriffrom type.font-stack.sans | 'Inter Variable', 'Inter Fallback', system-ui, -apple-system, 'Segoe UI', Roboto, sans-seriffrom type.font-stack.sans | ||
--component-button-font-weight | Button | Label weight. | type.weight.strong | 600from type.font-weight.600 | 600from type.font-weight.600 | ||
--component-button-line-height | Button | Line height of the label. | type.leading.heading | 1.2from type.line-height.tight | 1.2from type.line-height.tight | ||
--component-button-font-size-sm | Button | Label size of small buttons. | type.size.small | 0.875remfrom type.font-size.sm | 0.875remfrom type.font-size.sm | ||
--component-button-font-size-md | Button | Label size of standard buttons. | type.size.body | 1remfrom type.font-size.md | 1remfrom type.font-size.md | ||
--component-link-font-weight-current | Link | Weight of a link to the current page, so it's marked by more than color. | type.weight.strong | 600from type.font-weight.600 | 600from type.font-weight.600 | ||
--component-menu-item-font-family | Menu | Item font, so items don't inherit the text the Menu sits in. | type.family.body | 'Inter Variable', 'Inter Fallback', system-ui, -apple-system, 'Segoe UI', Roboto, sans-seriffrom type.font-stack.sans | 'Inter Variable', 'Inter Fallback', system-ui, -apple-system, 'Segoe UI', Roboto, sans-seriffrom type.font-stack.sans | ||
--component-menu-item-font-size | Menu | Item font size. | type.size.body | 1remfrom type.font-size.md | 1remfrom type.font-size.md | ||
--component-menu-item-line-height | Menu | Item line height. | type.leading.body | 1.6from type.line-height.normal | 1.6from type.line-height.normal | ||
--component-menu-item-font-weight | Menu | Item font weight. | type.weight.body | 400from type.font-weight.400 | 400from type.font-weight.400 | ||
--component-menu-group-label-font-family | Menu | Radio group label font (mono). | type.family.label | 'Fira Code Variable', 'Fira Code Fallback', ui-monospace, SFMono-Regular, Menlo, Consolas, monospacefrom type.font-stack.mono | 'Fira Code Variable', 'Fira Code Fallback', ui-monospace, SFMono-Regular, Menlo, Consolas, monospacefrom type.font-stack.mono | ||
--component-menu-group-label-font-size | Menu | Radio group label size. | type.size.label | 0.75remfrom type.font-size.xs | 0.75remfrom type.font-size.xs | ||
--component-menu-group-label-tracking | Menu | Radio group label letter spacing. | type.tracking.label | 0.16emfrom type.letter-spacing.16 | 0.16emfrom type.letter-spacing.16 | ||
--component-text-field-font-size-sm | TextField | Text size of the input at size sm. | type.size.small | 0.875remfrom type.font-size.sm | 0.875remfrom type.font-size.sm | ||
--component-text-field-font-size-md | TextField | Text size of the input at size md. | type.size.body | 1remfrom type.font-size.md | 1remfrom type.font-size.md | ||
--component-text-field-label-weight | TextField | Weight of the label. | type.weight.strong | 600from type.font-weight.600 | 600from type.font-weight.600 | ||
--component-typography-display-font-family | Typography | Display text font. | type.family.heading | 'Space Grotesk Variable', 'Space Grotesk Fallback', system-ui, -apple-system, 'Segoe UI', Roboto, sans-seriffrom type.font-stack.display | 'Space Grotesk Variable', 'Space Grotesk Fallback', system-ui, -apple-system, 'Segoe UI', Roboto, sans-seriffrom type.font-stack.display | ||
--component-typography-display-font-size | Typography | Display text size. | type.size.display | 3remfrom type.font-size.4xl | 3remfrom type.font-size.4xl | ||
--component-typography-display-font-weight | Typography | Display text weight. | type.weight.heading | 700from type.font-weight.700 | 700from type.font-weight.700 | ||
--component-typography-display-line-height | Typography | Display text line height. | type.leading.heading | 1.2from type.line-height.tight | 1.2from type.line-height.tight | ||
--component-typography-display-tracking | Typography | Display text letter spacing. | type.tracking.display | -0.02emfrom type.letter-spacing.neg-2 | -0.02emfrom type.letter-spacing.neg-2 | ||
--component-typography-h1-font-family | Typography | Heading 1 look font. | type.family.heading | 'Space Grotesk Variable', 'Space Grotesk Fallback', system-ui, -apple-system, 'Segoe UI', Roboto, sans-seriffrom type.font-stack.display | 'Space Grotesk Variable', 'Space Grotesk Fallback', system-ui, -apple-system, 'Segoe UI', Roboto, sans-seriffrom type.font-stack.display | ||
--component-typography-h1-font-size | Typography | Heading 1 look size. | type.size.h1 | 2.5remfrom type.font-size.3xl | 2.5remfrom type.font-size.3xl | ||
--component-typography-h1-font-weight | Typography | Heading 1 look weight. | type.weight.heading | 700from type.font-weight.700 | 700from type.font-weight.700 | ||
--component-typography-h1-line-height | Typography | Heading 1 look line height. | type.leading.heading | 1.2from type.line-height.tight | 1.2from type.line-height.tight | ||
--component-typography-h1-tracking | Typography | Heading 1 look letter spacing. | type.tracking.display | -0.02emfrom type.letter-spacing.neg-2 | -0.02emfrom type.letter-spacing.neg-2 | ||
--component-typography-h2-font-family | Typography | Heading 2 look font. | type.family.heading | 'Space Grotesk Variable', 'Space Grotesk Fallback', system-ui, -apple-system, 'Segoe UI', Roboto, sans-seriffrom type.font-stack.display | 'Space Grotesk Variable', 'Space Grotesk Fallback', system-ui, -apple-system, 'Segoe UI', Roboto, sans-seriffrom type.font-stack.display | ||
--component-typography-h2-font-size | Typography | Heading 2 look size. | type.size.h2 | 2remfrom type.font-size.2xl | 2remfrom type.font-size.2xl | ||
--component-typography-h2-font-weight | Typography | Heading 2 look weight. | type.weight.heading | 700from type.font-weight.700 | 700from type.font-weight.700 | ||
--component-typography-h2-line-height | Typography | Heading 2 look line height. | type.leading.heading | 1.2from type.line-height.tight | 1.2from type.line-height.tight | ||
--component-typography-h2-tracking | Typography | Heading 2 look letter spacing. | type.tracking.display | -0.02emfrom type.letter-spacing.neg-2 | -0.02emfrom type.letter-spacing.neg-2 | ||
--component-typography-h3-font-family | Typography | Heading 3 look font. | type.family.heading | 'Space Grotesk Variable', 'Space Grotesk Fallback', system-ui, -apple-system, 'Segoe UI', Roboto, sans-seriffrom type.font-stack.display | 'Space Grotesk Variable', 'Space Grotesk Fallback', system-ui, -apple-system, 'Segoe UI', Roboto, sans-seriffrom type.font-stack.display | ||
--component-typography-h3-font-size | Typography | Heading 3 look size. | type.size.h3 | 1.5remfrom type.font-size.xl | 1.5remfrom type.font-size.xl | ||
--component-typography-h3-font-weight | Typography | Heading 3 look weight. | type.weight.heading | 700from type.font-weight.700 | 700from type.font-weight.700 | ||
--component-typography-h3-line-height | Typography | Heading 3 look line height. | type.leading.heading | 1.2from type.line-height.tight | 1.2from type.line-height.tight | ||
--component-typography-h3-tracking | Typography | Heading 3 look letter spacing. | type.tracking.body | 0emfrom type.letter-spacing.0 | 0emfrom type.letter-spacing.0 | ||
--component-typography-h4-font-family | Typography | Heading 4 look font. | type.family.heading | 'Space Grotesk Variable', 'Space Grotesk Fallback', system-ui, -apple-system, 'Segoe UI', Roboto, sans-seriffrom type.font-stack.display | 'Space Grotesk Variable', 'Space Grotesk Fallback', system-ui, -apple-system, 'Segoe UI', Roboto, sans-seriffrom type.font-stack.display | ||
--component-typography-h4-font-size | Typography | Heading 4 look size. | type.size.h4 | 1.25remfrom type.font-size.lg | 1.25remfrom type.font-size.lg | ||
--component-typography-h4-font-weight | Typography | Heading 4 look weight. | type.weight.heading | 700from type.font-weight.700 | 700from type.font-weight.700 | ||
--component-typography-h4-line-height | Typography | Heading 4 look line height. | type.leading.heading | 1.2from type.line-height.tight | 1.2from type.line-height.tight | ||
--component-typography-h4-tracking | Typography | Heading 4 look letter spacing. | type.tracking.body | 0emfrom type.letter-spacing.0 | 0emfrom type.letter-spacing.0 | ||
--component-typography-h5-font-family | Typography | Heading 5 look font. | type.family.heading | 'Space Grotesk Variable', 'Space Grotesk Fallback', system-ui, -apple-system, 'Segoe UI', Roboto, sans-seriffrom type.font-stack.display | 'Space Grotesk Variable', 'Space Grotesk Fallback', system-ui, -apple-system, 'Segoe UI', Roboto, sans-seriffrom type.font-stack.display | ||
--component-typography-h5-font-size | Typography | Heading 5 look size. | type.size.h5 | 1remfrom type.font-size.md | 1remfrom type.font-size.md | ||
--component-typography-h5-font-weight | Typography | Heading 5 look weight. | type.weight.heading | 700from type.font-weight.700 | 700from type.font-weight.700 | ||
--component-typography-h5-line-height | Typography | Heading 5 look line height. | type.leading.heading | 1.2from type.line-height.tight | 1.2from type.line-height.tight | ||
--component-typography-h5-tracking | Typography | Heading 5 look letter spacing. | type.tracking.body | 0emfrom type.letter-spacing.0 | 0emfrom type.letter-spacing.0 | ||
--component-typography-h6-font-family | Typography | Heading 6 look font. | type.family.heading | 'Space Grotesk Variable', 'Space Grotesk Fallback', system-ui, -apple-system, 'Segoe UI', Roboto, sans-seriffrom type.font-stack.display | 'Space Grotesk Variable', 'Space Grotesk Fallback', system-ui, -apple-system, 'Segoe UI', Roboto, sans-seriffrom type.font-stack.display | ||
--component-typography-h6-font-size | Typography | Heading 6 look size. | type.size.h6 | 0.875remfrom type.font-size.sm | 0.875remfrom type.font-size.sm | ||
--component-typography-h6-font-weight | Typography | Heading 6 look weight. | type.weight.heading | 700from type.font-weight.700 | 700from type.font-weight.700 | ||
--component-typography-h6-line-height | Typography | Heading 6 look line height. | type.leading.heading | 1.2from type.line-height.tight | 1.2from type.line-height.tight | ||
--component-typography-h6-tracking | Typography | Heading 6 look letter spacing. | type.tracking.body | 0emfrom type.letter-spacing.0 | 0emfrom type.letter-spacing.0 | ||
--component-typography-lead-font-family | Typography | Lead text font. | type.family.body | 'Inter Variable', 'Inter Fallback', system-ui, -apple-system, 'Segoe UI', Roboto, sans-seriffrom type.font-stack.sans | 'Inter Variable', 'Inter Fallback', system-ui, -apple-system, 'Segoe UI', Roboto, sans-seriffrom type.font-stack.sans | ||
--component-typography-lead-font-size | Typography | Lead text size. | type.size.lead | 1.25remfrom type.font-size.lg | 1.25remfrom type.font-size.lg | ||
--component-typography-lead-font-weight | Typography | Lead text weight. | type.weight.body | 400from type.font-weight.400 | 400from type.font-weight.400 | ||
--component-typography-lead-line-height | Typography | Lead text line height. | type.leading.body | 1.6from type.line-height.normal | 1.6from type.line-height.normal | ||
--component-typography-lead-tracking | Typography | Lead text letter spacing. | type.tracking.body | 0emfrom type.letter-spacing.0 | 0emfrom type.letter-spacing.0 | ||
--component-typography-body-font-family | Typography | Body text font. | type.family.body | 'Inter Variable', 'Inter Fallback', system-ui, -apple-system, 'Segoe UI', Roboto, sans-seriffrom type.font-stack.sans | 'Inter Variable', 'Inter Fallback', system-ui, -apple-system, 'Segoe UI', Roboto, sans-seriffrom type.font-stack.sans | ||
--component-typography-body-font-size | Typography | Body text size. | type.size.body | 1remfrom type.font-size.md | 1remfrom type.font-size.md | ||
--component-typography-body-font-weight | Typography | Body text weight. | type.weight.body | 400from type.font-weight.400 | 400from type.font-weight.400 | ||
--component-typography-body-line-height | Typography | Body text line height. | type.leading.body | 1.6from type.line-height.normal | 1.6from type.line-height.normal | ||
--component-typography-body-tracking | Typography | Body text letter spacing. | type.tracking.body | 0emfrom type.letter-spacing.0 | 0emfrom type.letter-spacing.0 | ||
--component-typography-small-font-family | Typography | Small text font. | type.family.body | 'Inter Variable', 'Inter Fallback', system-ui, -apple-system, 'Segoe UI', Roboto, sans-seriffrom type.font-stack.sans | 'Inter Variable', 'Inter Fallback', system-ui, -apple-system, 'Segoe UI', Roboto, sans-seriffrom type.font-stack.sans | ||
--component-typography-small-font-size | Typography | Small text size. | type.size.small | 0.875remfrom type.font-size.sm | 0.875remfrom type.font-size.sm | ||
--component-typography-small-font-weight | Typography | Small text weight. | type.weight.body | 400from type.font-weight.400 | 400from type.font-weight.400 | ||
--component-typography-small-line-height | Typography | Small text line height. | type.leading.body | 1.6from type.line-height.normal | 1.6from type.line-height.normal | ||
--component-typography-small-tracking | Typography | Small text letter spacing. | type.tracking.body | 0emfrom type.letter-spacing.0 | 0emfrom type.letter-spacing.0 | ||
--component-typography-label-font-family | Typography | Label text font. | type.family.label | 'Fira Code Variable', 'Fira Code Fallback', ui-monospace, SFMono-Regular, Menlo, Consolas, monospacefrom type.font-stack.mono | 'Fira Code Variable', 'Fira Code Fallback', ui-monospace, SFMono-Regular, Menlo, Consolas, monospacefrom type.font-stack.mono | ||
--component-typography-label-font-size | Typography | Label text size. | type.size.label | 0.75remfrom type.font-size.xs | 0.75remfrom type.font-size.xs | ||
--component-typography-label-font-weight | Typography | Label text weight. | type.weight.body | 400from type.font-weight.400 | 400from type.font-weight.400 | ||
--component-typography-label-line-height | Typography | Label text line height. | type.leading.body | 1.6from type.line-height.normal | 1.6from type.line-height.normal | ||
--component-typography-label-tracking | Typography | Label text letter spacing. | type.tracking.label | 0.16emfrom type.letter-spacing.16 | 0.16emfrom type.letter-spacing.16 | ||
--component-typography-code-font-family | Typography | Code font. Size, weight and line height come from the surrounding text. | type.family.code | 'Fira Code Variable', 'Fira Code Fallback', ui-monospace, SFMono-Regular, Menlo, Consolas, monospacefrom type.font-stack.mono | 'Fira Code Variable', 'Fira Code Fallback', ui-monospace, SFMono-Regular, Menlo, Consolas, monospacefrom type.font-stack.mono | ||
--component-typography-measure | Typography | Maximum line length with `measure`: about 65 characters in the element's own font. | type.measure.text | 65chfrom type.line-length.65 | 65chfrom type.line-length.65 | No preview | |
--component-code-block-font-family | CodeBlock | Code font. | type.family.code | 'Fira Code Variable', 'Fira Code Fallback', ui-monospace, SFMono-Regular, Menlo, Consolas, monospacefrom type.font-stack.mono | 'Fira Code Variable', 'Fira Code Fallback', ui-monospace, SFMono-Regular, Menlo, Consolas, monospacefrom type.font-stack.mono | ||
--component-code-block-font-size | CodeBlock | Code text size. | type.size.small | 0.875remfrom type.font-size.sm | 0.875remfrom type.font-size.sm | ||
--component-code-block-line-height | CodeBlock | Code line height. | type.leading.body | 1.6from type.line-height.normal | 1.6from type.line-height.normal | ||
--component-table-header-font-weight | Table | Column header weight, in the head. | type.weight.strong | 600from type.font-weight.600 | 600from type.font-weight.600 | ||
--component-table-row-header-font-weight | Table | Row header weight, in the body and foot. | type.weight.body | 400from type.font-weight.400 | 400from type.font-weight.400 | ||
--component-badge-font-family | Badge | Badge font (mono). | type.family.label | 'Fira Code Variable', 'Fira Code Fallback', ui-monospace, SFMono-Regular, Menlo, Consolas, monospacefrom type.font-stack.mono | 'Fira Code Variable', 'Fira Code Fallback', ui-monospace, SFMono-Regular, Menlo, Consolas, monospacefrom type.font-stack.mono | ||
--component-badge-font-size-sm | Badge | Small badge text. | type.size.label | 0.75remfrom type.font-size.xs | 0.75remfrom type.font-size.xs | ||
--component-badge-font-size-md | Badge | Standard badge text. | type.size.small | 0.875remfrom type.font-size.sm | 0.875remfrom type.font-size.sm | ||
--component-badge-tracking | Badge | Letter spacing of the uppercase label. | type.tracking.label | 0.16emfrom type.letter-spacing.16 | 0.16emfrom type.letter-spacing.16 | ||
--component-badge-font-weight | Badge | Badge text weight, the same inside headings and bold text. | type.weight.body | 400from type.font-weight.400 | 400from type.font-weight.400 | ||
--component-badge-line-height | Badge | Badge line height. | type.leading.body | 1.6from type.line-height.normal | 1.6from type.line-height.normal | ||
--component-tooltip-font-family | Tooltip | Tooltip text font. | type.family.body | 'Inter Variable', 'Inter Fallback', system-ui, -apple-system, 'Segoe UI', Roboto, sans-seriffrom type.font-stack.sans | 'Inter Variable', 'Inter Fallback', system-ui, -apple-system, 'Segoe UI', Roboto, sans-seriffrom type.font-stack.sans | ||
--component-tooltip-font-size | Tooltip | Tooltip text size. | type.size.small | 0.875remfrom type.font-size.sm | 0.875remfrom type.font-size.sm | ||
--component-tooltip-font-weight | Tooltip | Tooltip text weight. | type.weight.body | 400from type.font-weight.400 | 400from type.font-weight.400 | ||
--component-tooltip-name-font-weight | Tooltip | Weight of the name line above a disabled button's reason. | type.weight.strong | 600from type.font-weight.600 | 600from type.font-weight.600 | ||
--component-tooltip-line-height | Tooltip | Tooltip line height. | type.leading.body | 1.6from type.line-height.normal | 1.6from type.line-height.normal | ||
--component-dialog-max-width | Dialog | Widest default dialog: a readable line length for its text. | type.measure.text | 65chfrom type.line-length.65 | 65chfrom type.line-length.65 | No preview |
| Token | Copy | Component | Description | Aliases | Light | Dark | Preview |
|---|---|---|---|---|---|---|---|
--component-button-gap | Button | Gap between the label and its icons. | space.inline.sm | 0.5remfrom space.2 | 0.5remfrom space.2 | ||
--component-button-padding-block | Button | Block padding. It only shows once a label wraps; a single line stays exactly the height token. | space.stack.xs | 0.25remfrom space.1 | 0.25remfrom space.1 | ||
--component-button-padding-inline-sm | Button | Inline padding of small buttons. | space.inline.sm | 0.5remfrom space.2 | 0.5remfrom space.2 | ||
--component-button-padding-inline-md | Button | Inline padding of standard buttons. | space.inline.md | 1remfrom space.4 | 1remfrom space.4 | ||
--component-link-new-tab-gap | Link | Gap between an inline link's text and its new-tab icon. | space.inline.xs | 0.25remfrom space.1 | 0.25remfrom space.1 | ||
--component-menu-popup-padding | Menu | Padding around the items. | space.inset.sm | 0.5remfrom space.2 | 0.5remfrom space.2 | ||
--component-menu-popup-offset | Menu | Gap between the popup and its trigger (and the viewport edge in the JS fallback). | space.stack.sm | 0.5remfrom space.2 | 0.5remfrom space.2 | ||
--component-menu-popup-slide-distance | Menu | How far the popup slides in from its trigger's side as it opens. | space.stack.xs | 0.25remfrom space.1 | 0.25remfrom space.1 | ||
--component-menu-item-padding-inline | Menu | Inline padding of an item. | space.inline.sm | 0.5remfrom space.2 | 0.5remfrom space.2 | ||
--component-menu-item-gap | Menu | Gap between an item's icons and label. | space.inline.sm | 0.5remfrom space.2 | 0.5remfrom space.2 | ||
--component-menu-group-gap | Menu | Space between a group and the items or groups beside it. | space.stack.sm | 0.5remfrom space.2 | 0.5remfrom space.2 | ||
--component-menu-group-label-padding-block | Menu | Block padding of a group label. | space.stack.xs | 0.25remfrom space.1 | 0.25remfrom space.1 | ||
--component-menu-separator-margin-block | Menu | Space above and below a separator. | space.stack.xs | 0.25remfrom space.1 | 0.25remfrom space.1 | ||
--component-back-to-top-offset | BackToTop | Distance of the corner button from the viewport's block-end and inline-end edges. | space.layout.xs | 1remfrom space.4 | 1remfrom space.4 | ||
--component-back-to-top-shift | BackToTop | How far it slides in when it appears (none under reduced motion). | space.stack.sm | 0.5remfrom space.2 | 0.5remfrom space.2 | ||
--component-text-field-padding-inline-sm | TextField | Inline padding of the input at size sm. | space.inline.sm | 0.5remfrom space.2 | 0.5remfrom space.2 | ||
--component-text-field-padding-inline-md | TextField | Inline padding of the input at size md. | space.inline.md | 1remfrom space.4 | 1remfrom space.4 | ||
--component-text-field-gap | TextField | Space between the label, hint, input and error. | space.stack.xs | 0.25remfrom space.1 | 0.25remfrom space.1 | ||
--component-slider-track-height | Slider | Track thickness. | space.stack.xs | 0.25remfrom space.1 | 0.25remfrom space.1 | ||
--component-slider-gap | Slider | Space between the label row, hint, track and marks. | space.stack.xs | 0.25remfrom space.1 | 0.25remfrom space.1 | ||
--component-color-field-gap | ColorField | Space between the legend, hint, controls and swatches, and between swatches. | space.stack.sm | 0.5remfrom space.2 | 0.5remfrom space.2 | ||
--component-code-block-header-padding-block | CodeBlock | Block padding of the header; clears the copy button's focus ring. | space.stack.xs | 0.25remfrom space.1 | 0.25remfrom space.1 | ||
--component-code-block-header-padding-inline | CodeBlock | Inline padding of the header, lining the label up with the code. | space.inset.sm | 0.5remfrom space.2 | 0.5remfrom space.2 | ||
--component-code-block-header-gap | CodeBlock | Space between the label and the copy button. | space.inline.md | 1remfrom space.4 | 1remfrom space.4 | ||
--component-code-block-line-number-gap | CodeBlock | Space between the line numbers and the code. | space.inline.md | 1remfrom space.4 | 1remfrom space.4 | ||
--component-code-block-padding | CodeBlock | Space around the code. | space.inset.sm | 0.5remfrom space.2 | 0.5remfrom space.2 | ||
--component-table-cell-padding-block | Table | Block padding of every cell. | space.inset.sm | 0.5remfrom space.2 | 0.5remfrom space.2 | ||
--component-table-cell-padding-inline | Table | Inline padding of every cell. | space.inset.sm | 0.5remfrom space.2 | 0.5remfrom space.2 | ||
--component-table-caption-gap | Table | Space between the caption and the panel. | space.stack.sm | 0.5remfrom space.2 | 0.5remfrom space.2 | ||
--component-figure-caption-gap | Figure | Space between the image and the caption below it. | space.stack.xs | 0.25remfrom space.1 | 0.25remfrom space.1 | ||
--component-badge-padding-inline-sm | Badge | Inline padding of small badges. | space.inline.sm | 0.5remfrom space.2 | 0.5remfrom space.2 | ||
--component-badge-padding-inline-md | Badge | Inline padding of standard badges. | space.inline.sm | 0.5remfrom space.2 | 0.5remfrom space.2 | ||
--component-badge-gap | Badge | Space between a badge's icon and its text. | space.inline.xs | 0.25remfrom space.1 | 0.25remfrom space.1 | ||
--component-card-padding | Card | Padding inside the card. | space.inset.lg | 1.5remfrom space.6 | 1.5remfrom space.6 | ||
--component-card-gap | Card | Space between the heading, body and footer. | space.stack.sm | 0.5remfrom space.2 | 0.5remfrom space.2 | ||
--component-accordion-trigger-padding-block | Accordion | Block padding of the heading button. | space.stack.sm | 0.5remfrom space.2 | 0.5remfrom space.2 | ||
--component-accordion-trigger-padding-inline | Accordion | Inline padding of the heading button. | space.inset.sm | 0.5remfrom space.2 | 0.5remfrom space.2 | ||
--component-accordion-trigger-gap | Accordion | Space between the heading text and the chevron. | space.inline.md | 1remfrom space.4 | 1remfrom space.4 | ||
--component-accordion-panel-padding-inline | Accordion | Inline padding of the panel, aligning its content with the heading text. | space.inset.sm | 0.5remfrom space.2 | 0.5remfrom space.2 | ||
--component-accordion-panel-padding-block-end | Accordion | Space between the panel's content and the next line. | space.stack.md | 1remfrom space.4 | 1remfrom space.4 | ||
--component-tooltip-padding-block | Tooltip | Block padding of the bubble. | space.stack.xs | 0.25remfrom space.1 | 0.25remfrom space.1 | ||
--component-tooltip-padding-inline | Tooltip | Inline padding of the bubble. | space.inset.sm | 0.5remfrom space.2 | 0.5remfrom space.2 | ||
--component-tooltip-offset | Tooltip | Gap to the trigger, and from the viewport edge when shifted. | space.stack.sm | 0.5remfrom space.2 | 0.5remfrom space.2 | ||
--component-tooltip-arrow-size | Tooltip | Side of the arrow's rotated square. | space.stack.sm | 0.5remfrom space.2 | 0.5remfrom space.2 | ||
--component-dialog-padding | Dialog | Padding around the header, body and actions. | space.inset.lg | 1.5remfrom space.6 | 1.5remfrom space.6 | ||
--component-dialog-gap | Dialog | Space between the header, body and actions, and between actions. | space.stack.md | 1remfrom space.4 | 1remfrom space.4 |
| Token | Copy | Component | Description | Aliases | Light | Dark | Preview |
|---|---|---|---|---|---|---|---|
--component-button-height-sm | Button | Block size of small buttons (32px, above the 24px target minimum). | size.control.sm | 2remfrom size.8 | 2remfrom size.8 | ||
--component-button-height-md | Button | Block size of standard buttons (40px). | size.control.md | 2.5remfrom size.10 | 2.5remfrom size.10 | ||
--component-menu-popup-min-width | Menu | Minimum popup width. | size.column.sm | 12remfrom size.48 | 12remfrom size.48 | ||
--component-menu-item-height | Menu | Minimum block size of an item (32px, above the 24px target minimum). | size.control.sm | 2remfrom size.8 | 2remfrom size.8 | ||
--component-text-field-height-sm | TextField | Input height at size sm, matching Button. | size.control.sm | 2remfrom size.8 | 2remfrom size.8 | ||
--component-text-field-height-md | TextField | Input height at size md, matching Button. | size.control.md | 2.5remfrom size.10 | 2.5remfrom size.10 | ||
--component-text-field-icon-size | TextField | Size of the start icon. | size.icon.sm | 1remfrom size.4 | 1remfrom size.4 | ||
--component-slider-thumb-size | Slider | Thumb diameter and the control's height: at least 24px (WCAG 2.5.8). | size.icon.lg | 1.5remfrom size.6 | 1.5remfrom size.6 | ||
--component-color-field-swatch-size | ColorField | Swatch button size: at least 24px (WCAG 2.5.8). | size.icon.lg | 1.5remfrom size.6 | 1.5remfrom size.6 | ||
--component-color-field-picker-size | ColorField | The color picker's size: the height of the small hex field beside it. | size.control.sm | 2remfrom size.8 | 2remfrom size.8 | ||
--component-figure-image-max-block-size | Figure | Tallest the image gets; it shrinks with its aspect ratio kept. | size.viewport.image | 80dvhfrom size.viewport-height.80 | 80dvhfrom size.viewport-height.80 | No preview | |
--component-tooltip-max-width | Tooltip | Widest bubble; the text wraps beyond it (and it's never wider than the viewport less twice the offset). | size.column.md | 16remfrom size.64 | 16remfrom size.64 |
| Token | Copy | Component | Description | Aliases | Light | Dark | Preview |
|---|---|---|---|---|---|---|---|
--component-button-radius | Button | Corner radius. | radius.control | 4pxfrom radius.4 | 4pxfrom radius.4 | ||
--component-menu-popup-radius | Menu | Popup corners. | radius.surface | 4pxfrom radius.4 | 4pxfrom radius.4 | ||
--component-menu-item-radius | Menu | Item corners. | radius.control | 4pxfrom radius.4 | 4pxfrom radius.4 | ||
--component-text-field-radius | TextField | Corner radius of the input, as on buttons. | radius.control | 4pxfrom radius.4 | 4pxfrom radius.4 | ||
--component-slider-radius | Slider | Rounds the track and the thumb. | radius.pill | 9999pxfrom radius.full | 9999pxfrom radius.full | ||
--component-color-field-swatch-radius | ColorField | Swatch corner radius. | radius.control | 4pxfrom radius.4 | 4pxfrom radius.4 | ||
--component-color-field-picker-radius | ColorField | Color picker corner radius. | radius.control | 4pxfrom radius.4 | 4pxfrom radius.4 | ||
--component-code-block-radius | CodeBlock | Block corner radius. | radius.control | 4pxfrom radius.4 | 4pxfrom radius.4 | ||
--component-table-radius | Table | Panel corner radius. | radius.surface | 4pxfrom radius.4 | 4pxfrom radius.4 | ||
--component-figure-image-radius | Figure | Corner radius of the image. | radius.surface | 4pxfrom radius.4 | 4pxfrom radius.4 | ||
--component-badge-radius | Badge | Badge corners: a pill, unlike the buttons. | radius.pill | 9999pxfrom radius.full | 9999pxfrom radius.full | ||
--component-card-radius | Card | Card corners. | radius.surface | 4pxfrom radius.4 | 4pxfrom radius.4 | ||
--component-tooltip-radius | Tooltip | Bubble corner radius. | radius.control | 4pxfrom radius.4 | 4pxfrom radius.4 | ||
--component-dialog-radius | Dialog | Surface corner radius (square when a full dialog fills a narrow viewport). | radius.surface | 4pxfrom radius.4 | 4pxfrom radius.4 |
| Token | Copy | Component | Description | Aliases | Light | Dark | Preview |
|---|---|---|---|---|---|---|---|
--component-button-transition-duration | Button | Duration of hover color changes (0ms under reduced motion). | motion.duration.instant | 100msfrom motion.time.100Reduced motion: 0ms | 100msfrom motion.time.100 | No preview | |
--component-button-transition-easing | Button | Easing of hover color changes. | motion.easing.standard | cubic-bezier(0.4, 0, 0.2, 1)from motion.curve.in-out | cubic-bezier(0.4, 0, 0.2, 1)from motion.curve.in-out | No preview | |
--component-link-transition-duration | Link | Duration of hover color changes (0ms under reduced motion). | motion.duration.instant | 100msfrom motion.time.100Reduced motion: 0ms | 100msfrom motion.time.100 | No preview | |
--component-link-transition-easing | Link | Easing of hover color changes. | motion.easing.standard | cubic-bezier(0.4, 0, 0.2, 1)from motion.curve.in-out | cubic-bezier(0.4, 0, 0.2, 1)from motion.curve.in-out | No preview | |
--component-menu-transition-duration | Menu | Duration of the popup's fade (0ms under reduced motion). | motion.duration.fast | 150msfrom motion.time.150Reduced motion: 0ms | 150msfrom motion.time.150 | No preview | |
--component-menu-transition-easing | Menu | Easing of the popup's fade. | motion.easing.enter | cubic-bezier(0, 0, 0.2, 1)from motion.curve.out | cubic-bezier(0, 0, 0.2, 1)from motion.curve.out | No preview | |
--component-back-to-top-duration | BackToTop | Duration of showing and hiding (0ms under reduced motion). | motion.duration.base | 250msfrom motion.time.250Reduced motion: 0ms | 250msfrom motion.time.250 | No preview | |
--component-card-transition-duration | Card | Duration of a link card's hover change (0ms under reduced motion). | motion.duration.fast | 150msfrom motion.time.150Reduced motion: 0ms | 150msfrom motion.time.150 | No preview | |
--component-card-transition-easing | Card | Easing of a link card's hover change. | motion.easing.standard | cubic-bezier(0.4, 0, 0.2, 1)from motion.curve.in-out | cubic-bezier(0.4, 0, 0.2, 1)from motion.curve.in-out | No preview | |
--component-accordion-transition-duration | Accordion | Duration of the panel's height and the chevron's turn (0ms under reduced motion). | motion.duration.base | 250msfrom motion.time.250Reduced motion: 0ms | 250msfrom motion.time.250 | No preview | |
--component-accordion-transition-easing | Accordion | Easing of the panel's height and the chevron's turn. | motion.easing.standard | cubic-bezier(0.4, 0, 0.2, 1)from motion.curve.in-out | cubic-bezier(0.4, 0, 0.2, 1)from motion.curve.in-out | No preview | |
--component-tooltip-transition-duration | Tooltip | Duration of the fade (0ms under reduced motion). | motion.duration.fast | 150msfrom motion.time.150Reduced motion: 0ms | 150msfrom motion.time.150 | No preview | |
--component-tooltip-transition-easing | Tooltip | Easing of the fade. | motion.easing.enter | cubic-bezier(0, 0, 0.2, 1)from motion.curve.out | cubic-bezier(0, 0, 0.2, 1)from motion.curve.out | No preview | |
--component-dialog-duration | Dialog | Fade in and out (0ms under reduced motion). | motion.duration.base | 250msfrom motion.time.250Reduced motion: 0ms | 250msfrom motion.time.250 | No preview | |
--component-dialog-easing-enter | Dialog | Easing while opening. | motion.easing.enter | cubic-bezier(0, 0, 0.2, 1)from motion.curve.out | cubic-bezier(0, 0, 0.2, 1)from motion.curve.out | No preview | |
--component-dialog-easing-exit | Dialog | Easing while closing. | motion.easing.exit | cubic-bezier(0.4, 0, 1, 1)from motion.curve.in | cubic-bezier(0.4, 0, 1, 1)from motion.curve.in | No preview |
| Token | Copy | Component | Description | Aliases | Light | Dark | Preview |
|---|---|---|---|---|---|---|---|
--component-button-border-width | Button | Border width. | effect.border.width | 2pxfrom effect.line.2 | 2pxfrom effect.line.2 | ||
--component-link-underline-thickness | Link | Underline thickness. | effect.underline.thickness | 1pxfrom effect.line.1 | 1pxfrom effect.line.1 | ||
--component-link-underline-thickness-hover | Link | Underline thickness on hover. | effect.underline.thickness-hover | 2pxfrom effect.line.2 | 2pxfrom effect.line.2 | ||
--component-link-underline-offset | Link | Gap between the text and its underline. | effect.underline.offset | 2pxfrom effect.line.2 | 2pxfrom effect.line.2 | ||
--component-menu-popup-elevation | Menu | Popup shadow, so it reads above the page. | effect.elevation.overlay | 0px 4px 12px 0px rgb(0% 0% 0% / 0.12)from effect.shadow.md | 0px 4px 12px 0px rgb(0% 0% 0% / 0.4)from effect.shadow.md-dark | ||
--component-menu-popup-border-width | Menu | Popup outline width. | effect.border.width | 2pxfrom effect.line.2 | 2pxfrom effect.line.2 | ||
--component-menu-separator-thickness | Menu | Separator line thickness. | effect.border.width | 2pxfrom effect.line.2 | 2pxfrom effect.line.2 | ||
--component-back-to-top-shadow | BackToTop | Shadow of the corner button, so it reads above the page. The inline placement has none. | effect.elevation.overlay | 0px 4px 12px 0px rgb(0% 0% 0% / 0.12)from effect.shadow.md | 0px 4px 12px 0px rgb(0% 0% 0% / 0.4)from effect.shadow.md-dark | ||
--component-text-field-border-width | TextField | Width of the input's boundary. | effect.border.width | 2pxfrom effect.line.2 | 2pxfrom effect.line.2 | ||
--component-code-block-border-width | CodeBlock | Line thickness. | effect.border.width | 2pxfrom effect.line.2 | 2pxfrom effect.line.2 | ||
--component-table-border-width | Table | Line thickness. | effect.border.width | 2pxfrom effect.line.2 | 2pxfrom effect.line.2 | ||
--component-separator-thickness-thin | Separator | Line thickness of the thin (default) variant. | effect.border.width | 2pxfrom effect.line.2 | 2pxfrom effect.line.2 | ||
--component-separator-thickness-thick | Separator | Line thickness of the thick variant. | effect.border.width-thick | 3pxfrom effect.line.3 | 3pxfrom effect.line.3 | ||
--component-badge-border-width | Badge | Badge outline width. | effect.border.width | 2pxfrom effect.line.2 | 2pxfrom effect.line.2 | ||
--component-card-border-width | Card | Card outline width, in every variant. | effect.border.width | 2pxfrom effect.line.2 | 2pxfrom effect.line.2 | ||
--component-card-raised-elevation | Card | Raised card (the default) shadow. | effect.elevation.raised | 0px 1px 2px 0px rgb(0% 0% 0% / 0.08)from effect.shadow.sm | 0px 1px 2px 0px rgb(0% 0% 0% / 0.3)from effect.shadow.sm-dark | ||
--component-card-outlined-elevation | Card | Outlined card shadow. | effect.elevation.none | 0px 0px 0px 0px rgb(0% 0% 0% / 0)from effect.shadow.none | 0px 0px 0px 0px rgb(0% 0% 0% / 0)from effect.shadow.none | ||
--component-card-flat-elevation | Card | Flat card shadow. | effect.elevation.none | 0px 0px 0px 0px rgb(0% 0% 0% / 0)from effect.shadow.none | 0px 0px 0px 0px rgb(0% 0% 0% / 0)from effect.shadow.none | ||
--component-card-glass-elevation | Card | Glass card shadow. | effect.elevation.raised | 0px 1px 2px 0px rgb(0% 0% 0% / 0.08)from effect.shadow.sm | 0px 1px 2px 0px rgb(0% 0% 0% / 0.3)from effect.shadow.sm-dark | ||
--component-card-glass-backdrop-blur | Card | Blur behind a glass card. | effect.backdrop.glass-sheer | 6pxfrom effect.blur-radius.6 | 6pxfrom effect.blur-radius.6 | ||
--component-accordion-border-width | Accordion | Line thickness. | effect.border.width | 2pxfrom effect.line.2 | 2pxfrom effect.line.2 | ||
--component-tooltip-border-width | Tooltip | Bubble and arrow outline: transparent, drawn only in forced colors. | effect.border.width | 2pxfrom effect.line.2 | 2pxfrom effect.line.2 | ||
--component-dialog-border-width | Dialog | Surface outline width. | effect.border.width | 2pxfrom effect.line.2 | 2pxfrom effect.line.2 | ||
--component-dialog-shadow | Dialog | Surface shadow: the dialog floats above the page. | effect.elevation.overlay | 0px 4px 12px 0px rgb(0% 0% 0% / 0.12)from effect.shadow.md | 0px 4px 12px 0px rgb(0% 0% 0% / 0.4)from effect.shadow.md-dark |
| Token | Copy | Component | Description | Aliases | Light | Dark | Preview |
|---|---|---|---|---|---|---|---|
--component-back-to-top-layer | BackToTop | Stacking order of the corner button: the same level as the sticky header. | layer.sticky | 2from layer.2 | 2from layer.2 | No preview |