Button
The master button. Every action on the site, in three looks: primary (solid teal, all caps) for the one main action in a view; secondary (the soft control fill, all caps) beside a primary or in a row of controls; tertiary (teal true small caps, no fill, always an icon, colour on hover) for longer labels in the reading flow. A label of more than two words is always tertiary. Labels are nouns; the icon carries the action. Icon-only is a 40px circle in the soft control fill. Hanken Grotesk at 400, 40px tall.
Use when
- primary: the one main action in a view, one or two words: Reach out, Download, Try again
- secondary: beside a primary or in a row of controls, one or two words: Ask Anu, Resume, Case study, Live app, Open, Deck, a way back (pass back)
- tertiary: longer labels in the reading flow: the drill-downs (pass aria-expanded), the videos, My life outside work
- icon only: pass icon and no label (close, zoom, play, arrows, the case-study Back)
Don't
- Two primary buttons side by side
- A primary or secondary label longer than two words (it renders as tertiary)
- A verb in the label when the icon already says it (Case study →, not Read the case study)
- A status label: use the status dot and text
- A selected state: use the toggle
States and variants
Hover, focus and pressed are forced from the site's own CSS, so they sit side by side.
| Variant | Default | Hover | Focus | Pressed | Disabled |
|---|---|---|---|---|---|
| primary, night | |||||
| secondary, night | |||||
| tertiary, night | |||||
| icon only, night | |||||
| primary, paper | Not in code | ||||
| secondary, paper | Not in code | ||||
| tertiary, paper | Not in code | ||||
| icon only, paper | Not in code |
Button has no disabled state in code. One size; the colours come from the --btn-* and --control-* tokens, which flip on paper.