Skip to content
GitHub
Sections

Reference · Interface modes

product

This is a spec: descriptive guidance, not a checkable rule. It carries no forbidden and instead pair, and no jig check detector applies to it directly.

The spec

For: authenticated application UI, customer-facing dashboards, settings, onboarding. Reader: returning, task-focused, moderate familiarity, mixed device. Tiebreaker: predictability over novelty. A boring pattern the user already knows beats a better one they must learn.

PropertyThis mode selects
UI text--text-body
Long-form text--text-prose · --leading-prose
Heading ramp--text-h3 → --text-h2 → --text-h1
Type ratio1.200 Minor Third — the mid value of the three
Measure--measure-prose
Section rhythm--spacing-section
Card padding--spacing-card
Control height--size-control — the mid value of the three
Table row height--size-row
Radius--radius-control (sm) · --radius-surface (md)
Elevation--shadow-none; --shadow-raised/--shadow-overlay for overlays only (modal, popover, dropdown)
Motion--duration-base; state change only, no entrance animation
Colour usage--color-brand for primary action. Full semantic set. Status as subtle fill plus text.
ImagerySparse. Illustration permitted in empty states only.
KeyboardShortcuts for frequent actions; documented in-app

Resolved values: 02-tokens.md — the option sets for type, spacing, radius and shadow, and "Sizes and motion, by mode" for control heights, row heights, durations and measure.

Mode-specific rules

  • One primary action per view. Everything else is secondary or tertiary.
  • Destructive actions are never adjacent to their most common neighbour, and always confirm.
  • Every list view handles four states explicitly: loading, empty-never, empty-filtered, error.
  • Forms save on explicit action, not on blur, unless the surface is a settings panel — and then say so.
  • Navigation position is fixed across the app. Never move the primary nav between sections.
Kind
Spec
Section
Interface modes

Read as plain text