Skip to content

Design tokens

Every colour pair the product is allowed to compose, and every state a component can be in. Switch the theme and nothing below should become unreadable.

Colour theme

Colour pairs

Each row is checked by the contrast test at build time and by axe-core in the browser.

Type scale

One step per role, not a free choice.

Display

Page title

Section title

Card title

Body text, the default for anything a user reads.

Secondary text and table cells.

Hints, timestamps and helper text.

Buttons

Including the states a happy path skips: disabled, and in flight.

Honest states

Pending, failed and missing are rendered states, never a blank area (P5).

SucceededPendingFailedMissingNeeds attentionDraftModule offChecking storage

Upload pending

The checksum has not been verified yet, so this file is not available for download.

Not found at the provider

The stored object is gone. This is reported rather than hidden.

Verified

The checksum matched what was uploaded.

Empty, loading, error — as components

Story I2. A region that has nothing, is waiting, or failed never renders as a blank area (T-I2-02). All three share a shape so swapping between them does not move the page.

No contributions yet

Nothing has been recorded for this period. An empty state with no next step is a dead end, so there is always one action.

Loading contributions

The request was refused. Nothing has been changed.
req_7f3a91c4

A screen that is in the navigation but not written yet

Phase 0 ships a shell with more navigation than screens. This is how that is said out loud, rather than with a dead link.

Form controls

Label, hint, error and required state are wired by the Field component.

A form

Nothing here is submitted; this is the component set.

Either one works.

Dates render in the property's timezone, not yours.

Optional. Off by default, and you can change it later.

This screen is a component showcase. It records nothing and decides nothing.