Components

Buttons

One primary action per screen. Use secondary for the most common alternative, ghost for low-emphasis, destructive for irreversible actions.

Variants

primary

secondary

ghost

outline

destructive

Sizes

sm · 32px

md · 40px

lg · 48px

States

Every interactive state pairs a darker background with white text to clear WCAG AA at small sizes.

Default

Hover

Active

Focus

Accessibility & contrast

The brand cyan #21CDEC is reserved for accents (links, charts, focus rings, dot indicators). Filled action buttons use the deep teal so white labels stay legible at every state.

TokenSampleForegroundContrastWCAG
primary · #0E7A8DWhite5.6 : 1AA
primary-hover · #0C6A7AWhite6.7 : 1AA
primary-active · #095866White8.4 : 1AAA
destructive · #D64545White4.6 : 1AA
brand cyan · #21CDEC (accent only)Neutral 9009.1 : 1AAA

Usage

✓ Do

One primary button per view. It should map to the most likely user action.

✓ Do

Use sentence-case verb labels: "Save changes", "Send campaign", "Add contact".

✕ Don't

Don't stack two primary buttons side by side. Pair primary + secondary instead.

✕ Don't

Don't fill buttons with the bright brand cyan — its low contrast with white text fails WCAG.