← Back to Work
2025Design System Engineering

Editorial Component System

A design system built around editorial print principles — tight typographic hierarchy, structured white space, and ink-on-paper contrast ratios.

TypeScript · React · CSS · Storybook


Most component libraries optimise for flexibility — they give you every prop, every variant, every override. The result is components that can do anything and feel like nothing. This system takes the opposite approach.

The Problem

A team of three engineers was shipping UI at speed but the result was visually inconsistent — font sizes varied arbitrarily, spacing had no rhythm, and dark mode was bolted on late with per-component overrides. The codebase had seventeen different shades of grey.

The Approach

The system starts with constraints, not components. Before writing a single component, the token layer was fixed: two typefaces, five type sizes, four spacing steps, two foreground colors, two background colors. Nothing outside the token set is valid.

const scale = {
  space: [4, 8, 16, 32, 64],
  fontSize: ["0.75rem", "0.875rem", "1rem", "1.75rem", "3rem"],
} as const;

Typography follows a print editorial model: display type is always the heading serif at light weight; body copy is always the monospace at regular weight. No mixing. This means a designer can never produce an inconsistent page — the system doesn't offer the wrong choices.

Each component is documented in Storybook with a single canonical story. No knobs, no controls panel. The story shows the component as it should look. If you need a different variant, you add a new component.

The Result

After adopting the system, the team shipped three features in two weeks without a single design review — the constraints made every decision obvious. The seventeen greys became two. Dark mode worked automatically because every color was a token, never a literal value.