v2.14.0
Design language

One system for every web app.

Tokens first, components second. Everything below is built from the same layered CSS tokens, works in light and dark, and re-skins from a single theme.css. Start every new project here.

Foundations

Colour

Neutral by default so any brand can sit on top. Components read only these semantic tokens — never raw values.

Surfaces & borders

Background--bg
Page canvas
Surface--surface
Cards, panels
Surface raised--surface-raised
Inputs, active rows
Surface hover--surface-hover
Hover state
Border--border
Default outline
Border hover--border-hover
Hover / focus outline
Border subtle--border-subtle
Dividers

Text & accent

Text primary--text-primary
Headings, body
Text secondary--text-secondary
Supporting copy
Text muted--text-muted
Labels, meta
Text subtle--text-subtle
Decorative / disabled
Accent--accent
Primary action
On accent--on-accent
Text on accent
Accent subtle--accent-subtle
Hover wash
Focus ring--focus-ring
Keyboard focus

Status — used sparingly (dots, chips, small icons)

Success--success
Positive / active
Warning--warning
Pending / caution
Danger--danger
Error / destructive
Info--info
Neutral highlight
Violet--violet
Categorical

Each status colour also yields --*-subtle and --*-border tints for fills and outlines, derived with color-mix().

Foundations

Typography

Geist for interface text, JetBrains Mono for eyebrows, numbers, code and metadata. Both are self-hosted variable fonts.

--text-2xs

Caption · 10

--text-xs

Meta · 11

--text-sm

Small · 12

--text-base

Base · 13

--text-md

Body · 14

--text-lg

Lead · 16

--text-xl

Title · 18

--text-2xl

H3 · 20

--text-3xl

H2 · 24

--text-4xl

H1 · 32

--text-5xl

Display · 40

Eyebrow

Mono · uppercase · tracked

Foundations

Spacing

Every gap and padding is a multiple of --space-unit (4px). Change the unit to make the whole app denser or roomier.

--space-1
--space-2
--space-3
--space-4
--space-6
--space-8
--space-12
--space-16
Foundations

Radius & shadow

Semantic aliases decide where each radius is used: controls, cards, overlays, badges.

Radius scale

2xs
xs
sm
md
lg
xl
2xl
3xl
full

Elevation

subtle
elevated
glow
modal
dock
Foundations

Motion

Short and soft. Hover a track to preview the duration. All motion collapses under prefers-reduced-motion.

--duration-instant · .1s

--duration-fast · .15s

--duration-base · .2s

--duration-slow · .3s

Foundations

Layout

A fixed-chrome shell: topbar, collapsible navigation, scrolling content, optional inspector, slim footer. On mobile the panels become drawers behind a bottom tab bar.

Foundations

Tuning

Three global knobs re-scale the entire system at once. Try them — every component on this page responds.

Density--space-unit: 4px
Roundness--radius-scale: 1
Text size--type-scale: 1
Components

Buttons

One primary action per view. Use ghost for toolbars and icon buttons for dense chrome.

Variants

Sizes, icons & states

Components

Forms

Inputs sit on the raised surface with a soft focus halo. Always pair with a visible label.

Shown to teammates.

Enter a valid email address.

⌘K

Selection

Components

Badges & avatars

Chips carry status and counts. Colour is never the only signal — pair it with a label or dot.

Chips

DefaultAccentOutline Active Pending Error NewBeta ⌘K

Avatars

FM AKMR
FMAKJD+4
Components

Data display

Cards group related content; tables carry dense records with mono numerals.

Revenue
£48,200+3.4%
Churn
2.1%−0.4%
Card title
Supporting description

Body content sits on the surface token.

Table

ItemOwnerStatusValue
Item #0041Farhan M.Active£48,200
Item #0042Aisha K.Pending£12,950
Item #0043Marcus R.Error£3,400
Components

Feedback

Tell people what happened, what is loading, and what to do when there is nothing to show.

Heads up
A new version is available.
Saved
Your changes are live.
Almost full
You have used 90% of your plan.

Progress, spinner & skeleton

Empty state & toast

No items yet

Create your first item to see it here.

Components

Overlays

Dialogs use the native <dialog> element — Escape and focus trapping come free.

Usage

Theming a new project

Copy css/ and fonts/ into the new project, then override only what the brand needs in css/theme.css — it loads last and un-layered, so it always wins.

:root { --radius-scale: .75; --space-unit: 3.5px; }
[data-theme="dark"]  { --accent: #7dd3fc; --on-accent: #0b1220; }
[data-theme="light"] { --accent: #0369a1; --on-accent: #ffffff; }

Full guide in THEMING.md. Rules: components use semantic tokens only; no raw colours outside the theme files; light and dark ship together from day one.

Delete item?

This permanently removes Item #0041 and its history. This action cannot be undone.

About App Blueprint

App Blueprint is an open-source, pixel-perfect web app wireframe that demonstrates a realistic SaaS-style interface — sidebar navigation, data tables, inspector panel, command palette, and a responsive mobile shell. It's a reference implementation and starting point for building production-quality dashboard UIs.

All content is hardcoded placeholder data. "Acme Inc." and the sample records are intentional stand-ins and do not represent a real company.