Bob design system
Tokens and components for every Bob surface: the public platform, Bob tools and the white-label screens. Built from the design package. New UI uses these; generated pages are converging on them.
Colour
Use semantic names in components. Primitives are catalogued from the design package and named family-lightness; their count is the drift still to consolidate.
Type
Space Grotesk for headings, IBM Plex Sans for body and UI, IBM Plex Mono for labels and data. Use the named styles: font: var(--type-h2).
--type-display--type-h1--type-h2--type-h3--type-stat--type-title--type-title-sm--type-lead--type-body--type-body-sm--type-ui--type-ui-sm--type-ui-xs--type-caption--type-label--type-label-sm--type-label-xsSpace, radius, elevation
Spacing only from the scale. Corners are 4px; circles and pills use full. Three shadows.
0px
4px
8px
12px
16px
24px
32px
48px
64px
80px
Status, tags and dots
Badges carry review status and missing-data states. Never show a blank or a zero for missing data.
<Badge tone="success">Reviewed</Badge> <Badge tone="info">AI · 91%</Badge>
<Tag>Income protection</Tag> <StatusDot tip="Uses Bob: …" />
Cards and navigation
Whole-card links for feature grids and 'Keep exploring'. Breadcrumbs always start at Home.
A plain surface for grouped content.
<Breadcrumbs items={[{ label: "Compare", href: "/insurance" }, { label: "Life" }]} landmarkLabel="Breadcrumb demonstration" />Forms
Labels above fields, inline errors in plain language, focus ring in the primary colour.
Tables, filters and row actions
The Compare table pattern: category tabs, filter dropdowns with counts, sortable headers, whole-row links, a ⋮ menu for row actions, pagination.
| Review | Actions | |||
|---|---|---|---|---|
| Harbourline Life Protect Harbourline Life Ltd | Own occupation | Reviewed | $31.00 NZD/mo | |
| Kererū Term Life Kererū Assurance Ltd | Any occupation | AI · 91% | $28.00 NZD/mo | |
| Waka Life Cover Waka Insurance Ltd | Unknown | Reviewed | $26.00 NZD/mo |
Dialogs and drawers
Modal for side-by-side compare and confirmations; drawer for record detail. Escape and outside click close; focus moves in and returns.
Using the system
The short version of docs/design-system/README.md.
- New UI: compose from
@/components/ui; style with semantic tokens (var(--color-text),var(--type-h2)). No raw colours, no off-scale spacing. - Generated pages: change the design file in
design-reference/, runnpm run gen. Shared chrome lives indesign-reference/parts. - Fairness is a design rule: alphabetical or user-chosen order, no paid position, Unknown / Not applicable / Excluded shown, evidence on every term.
- Copy: plain, warm, short; disclose AI; no em-dashes; quotes are indicative.
- Accessibility: every icon button has a label, focus is visible, overlays trap and return focus, motion respects reduced-motion.