Skip to content
quotes
Components · v1.0

The parts,
and their states.

Buttons, forms, cards, navigation, badges, toasts and loyalty — each with its default, hover, focus, pressed, disabled, loading, empty, error and success state. Everything here is imported live from the app, so the documentation cannot drift.

ButtonsFormsNavigationFeedbackLoyaltyProduct
01

Buttons

Primary actions are espresso-solid, never latte. The accent stays rationed to the bean and one highlight.

Variants
On espresso
Sizes · every one clears 44px
States

Hover shifts espresso to mocha over 260ms, pressed drops one pixel, and loading swaps the label for a spinning bean while setting aria-busy.

02

Forms & selection

Labels stay visible, hints sit below, and errors replace the hint and are announced to assistive tech.

Text inputs

We only use it for the receipt.

Allergies, or how you take it.

Grind
Bag size
Controls
2
1
04

Badges & labels

Mono, wide-tracked, uppercase. Status colour comes from the muted semantic set.

Tones
NeutralOutlineEspressoLimitedReadyLow stockSold outDecaf
With an icon
Northern Quarter~6 min
Overline
Single origin
05

Feedback & states

Every module ships default, loading, empty, error and success. Nothing dead-ends.

Notices
£12.40 more for free delivery — the threshold is £30.00.
quotes Ancoats. Usually ready in about 4 minutes.
Sold out. This lot has finished. We'll write when the next harvest lands.
Toasts
Loading
Brewing…

Nothing in the bag yet

Start with the Signature Blend, or pick something from the café menu.

06

Loyalty module

Domain-specific, not a generic progress bar: the bean itself is the stamp.

Empty · a fresh card

0/8 — 8 more cups to a free coffee.

In progress · 5 of 8

5/8 — 3 more cups to a free coffee.

Complete · reward ready

8/8 — card complete, reward ready.