Back to index

Personal — design system

Minimal
Design System

MinimalDS is a multi-brand design system: a Figma library published to the Figma Community, and a documentation site at minimal-ds.com built from the same tokens. One set of components serves three brands, each in light and dark mode. I designed all of it, and built the site with Claude.

Visit minimal-ds.com
RoleDesigner, Figma to code
ScopeFigma library + documentation site
StackFigma variables, React + Vite
Versionv1.3.0 — September 2026
00

The project

MinimalDS started as a way to show what I do to the Figma community: a public design system any designer could download and build on. The aim was a system that keeps maintenance to a minimum while still giving designers usable, customisable, well-structured assets.

It grew into two things that share one source of truth. The Figma library holds the design. The documentation site turns the same tokens into living components, so what you see in Figma is what renders in the browser.

The docs site in light and dark — image slot The MinimalDS Button page in Minimal light, and in dark mode with a Purpura preview
01

It started as a Figma library

The system was designed in Figma first and published to the Figma Community. Every colour, space, radius and text value is a variable, organised into groups that read like a specification: colour by role (surface, text, icon, border and seven interactive sets), radius, border width, component and layout spacing, and type.

Brands and themes are modes rather than copies. Switch a frame from Minimal to Purpura or Azure, or from light to dark, and every component inside it restyles. There’s nothing to detach or duplicate when a brand changes.

Figma Community file and variable groups — image slot The MinimalDS Figma Community file beside a grid of the three brands in light and dark, each with its typeface and button shape
02

Foundations first

Before any component, the site documents the foundations it’s built from: Colour, Typography, Icons, Spacing, Radius and Design Tokens. Each page shows the real values, with controls or tabs to compare the three brands, and Typography switches between the desktop and mobile scales.

The type scale is responsive by design. Figma holds desktop and mobile sizes as separate variables. On the site they resolve through one set of names that change at 768px, so a heading never needs a brand-specific or screen-specific rule.

Colour, Typography and Design Tokens pages — image slot The Colour, Typography and Design Tokens foundation pages of the MinimalDS site
03

Tokens drive everything

The Figma variables become a single CSS file. It defines the same token names six times, once for each brand and mode, and keeps the names from the Figma export so design and code always speak the same language.

The one rule that makes it work: component styles reference tokens, never values. Across 26 component stylesheets there are 572 token references and not one literal colour. A hard-coded value would be right in one theme and wrong in the other five, so it’s treated as a bug.

tokens.css and a component stylesheet — image slot The Button stylesheet, which uses only token references, resolving to a different button in Minimal, Purpura and Azure
04

Three brands, one set of components

Each brand has its own personality, and all of it lives in tokens. Minimal is sharp and monochrome, with square corners, Inter and a Roboto Mono display face. Purpura is soft and expressive: Montserrat, pill-shaped buttons and inputs, and a deep purple. Azure sits between them, with Source Sans 3, gently rounded corners and a sky blue.

The components below are the same code in all three brands, shown here in dark mode. Only the tokens change.

Six themes side by side — image slot The same buttons, input, switch, checkbox, tags, alert and progress bar in Minimal, Purpura and Azure, in dark mode

Brand lives in the tokens

Typeface, corner radius, brand colour and interactive states are all tokens. Adding a fourth brand means writing one more block of values, not touching a component.

Dark mode isn’t an afterthought

Every brand was designed in light and dark from the start, in Figma and on the site, so all three keep their character at night instead of being inverted.

05

Every page, the same anatomy

I designed the documentation pages in Figma before any were built. Every component page follows the same order: a header with a link to the Figma frame, a live preview with dropdown controls (Brand is always first), an overview, then usage guidelines in a green “when to use” and red “when not to use” pair, and finally the component’s own variants and states.

On the site the order is enforced by one shared scaffold that every page is built from. Seventeen component pages read the same way, and a new one fits in without anyone having to remember the layout.

Component page anatomy — image slot The Button documentation page with its six parts numbered, from the header to the variants
06

The preview changes brand, the site doesn’t

The site itself always wears Minimal, but a reader can preview any component in Purpura or Azure. Rather than building three versions of each component, the preview area sets its own brand on a nested element, and every token inside it resolves again. Light and dark come from the toggle in the top bar and apply everywhere.

The one catch shaped two components. Anything rendered outside the preview, as pop-ups often are, falls back to the default theme. So Dialog and Toast render in place, keeping the brand of whatever they sit in.

A Purpura preview inside the Minimal site — image slot A Purpura preview inside the Minimal docs site, in light and dark, with the site and the preview outlined as nested brand scopes
07

Growing the system

4 releases

Version 1.0 shipped in June 2026 with three brands, six foundations and fourteen components. Three releases followed in September: Tooltip, then Toast with its own provider and hook, then Progress in linear and circular forms, along with a loading state for Button.

Every release follows the same path, written down in the repository: tokens only, checked in all three brands and both modes, a documentation page, a dated release note and a version bump. The process stays consistent even as the system grows.

Release timeline — image slot A timeline of MinimalDS releases from v1.0.0 to v1.3.0: the fourteen first components, then Tooltip, Toast and Progress
08

Accessible by default, honest about gaps

The newer components were designed with accessibility from the start. Tooltip is linked to its trigger and closes with Escape. Toast pauses while you hover or focus it, announces errors straight away and never steals focus. Progress reports its value to assistive technology only when that value is known, and calms its motion when reduced motion is on.

In September I audited the whole system and wrote down where the older components fall short, ranked by value: keyboard dismissal and a focus trap for Dialog, the right list semantics for Select, and arrow-key navigation for Menu and Tabs. A system that tracks its gaps in the open is easier to trust, and easier to fix.

Accessibility built in and on the backlog — image slot Tooltip, Toast and Progress with their keyboard and ARIA support, above the backlog for Dialog, Select, Menu and Tabs
09

Designed by me, built with Claude

As Claude’s capabilities grew while I was building the Figma library, I saw a chance to go further and publish a documentation site alongside it. I designed every page in Figma, and worked with Claude to learn how to run my own GitHub repository and publish the site through Cloudflare. Claude wrote the code to my designs, and I reviewed the changes.

The conventions are written into the repository: tokens only, consistent class naming, every prop documented, and a five-step checklist for adding a component. That way every build session starts from the same rules, and the system stays consistent however it’s built.

From Figma to minimal-ds.com — image slot The chain from Figma to tokens.css, Claude, GitHub and Cloudflare, above the repository and the live site
10

The outcomes

6 recorded

MinimalDS began as a Figma file and became a working system: designed in Figma, documented on its own site, and kept in step by one set of tokens.

Outcome 01A public Figma Community library with three brands and light and dark modes, all switched through variable modes.
Outcome 02A live documentation site at minimal-ds.com, with 17 component pages and 6 foundation pages.
Outcome 03One component codebase serving six themes, with no brand-specific component code and no literal colours.
Outcome 04Four releases from June to September 2026, each with its documentation page and a dated release note.
Outcome 05Newer components that ship with keyboard support, ARIA wiring and reduced-motion behaviour built in.
Outcome 06A written architecture guide, component checklist and ranked audit backlog, so the system grows the same way every time.

Result

A design system that lives in Figma and in code at once, where changing a token restyles everything.

MinimalDS — live now

A simple multi-brand design system.

Browse the foundations and every component in Minimal, Purpura and Azure, in light and dark, or download the Figma library and build on it yourself.

v1.3.03 brands × 2 modes17 components
← Back to index Press G for grid