Components / Buttons

Buttons

The button starts an action. There are four variants by how important the action is, three sizes and five states. Everything comes from tokens: action colors, spaces, radius md and label-button styles.

Version 1.4 · Oct 20, 2026

Variants

One main action per view (Primary). Secondary for other actions, Tertiary for low-weight actions and Destructive only to delete or cancel something that cannot be undone.

Sizes

sm (32 px) for tables and dense bars, md (40 px) by default, lg (48 px) for covers and calls to action. The text uses label-button-sm/md/lg.

States

Default, Hover, Focus (color-focus-ring ring of 2 px with a 2 px white gap), Pressed and Disabled (color-disabled-bg and color-disabled-text). The focus always shows when browsing with a keyboard.

Tokens

Values linked in the component.

Name (token)
Value
When to use it
color-action-default
#2164EE
Primary background; Tertiary text.
color-action-hover
#124EA1
Primary on Hover.
color-action-pressed
#0D3A78 (blue-900) · new
Primary on Pressed.
color-action-subtle
#E7EEFD (blue-50) · new
Secondary and Tertiary background in Pressed.
color-surface-subtle
#F0F5FA
Secondary and Tertiary background in Hover.
color-border-strong
#7E92A5
Secondary border (border-width-default · 1 px).
color-status-error-text
#C13D02
Destructive background.
color-status-error-strong / -pressed
#9A3102 / #7A2701 · new
Destructive on Hover and Pressed.
color-focus-ring
alias of color-action-default · new
Focus ring, 2 px outside with 2 px of white. 5.09:1 on white.
color-disabled-bg / -text
alias of surface-subtle / text-muted · new
Disabled state.
radius-md
8 px
Corners of all sizes.
space-1…space-5
4 · 8 · 12 · 16 · 20 px
Padding and icon–text gap by size.
label-button-sm / md / lg
Hanken Grotesk SemiBold 14/16 · 16/24 · 18/24
Button text.

Contrast

Button text on its background. All active pairs pass AA (4.5:1). Disabled is not required by WCAG, but it also reaches 4.62.

Aa
Sample text
Primary · Default
5.09
Pass
Aa
Sample text
Primary · Hover
7.98
Excellent
Aa
Sample text
Primary · Pressed
11.09
Excellent
Aa
Sample text
Secondary · Default
18.31
Excellent
Aa
Sample text
Secondary · Hover
16.70
Excellent
Aa
Sample text
Secondary · Pressed
15.74
Excellent
Aa
Sample text
Tertiary · Default
5.09
Pass
Aa
Sample text
Tertiary · Hover
4.64
Pass
Aa
Sample text
Tertiary · Pressed
6.86
Pass
Aa
Sample text
Destructive · Default
5.34
Pass
Aa
Sample text
Destructive · Hover
7.46
Excellent
Aa
Sample text
Destructive · Pressed
9.91
Excellent
Aa
Sample text
Disabled
4.62
Pass

What to do and what to avoid