Self-initiated · 2026

The system that generates the screens

80+ components, semantic day/night tokens, WCAG-validated colour. Built to see how far a system can go when craft is the only constraint.

80+

components with full state matrices

11

step colour ramps per hue, contrast-checked per pair

2 × 2

platforms × themes from one token source

Client work shows what I shipped under constraints. This shows what I build when the only constraint is craft.

Banking as the target domain was deliberate: data-dense dashboards, trust-critical UI, accessibility obligations, and a real need for dark mode make it one of the hardest environments a system can serve.

Instead of designing screens first, I designed the system that would generate those screens.

Foundations — colour

Nine families, eleven steps each — fourteen for mono. Every swatch carries its measured contrast ratio, so choosing a pairing never needs a separate check.

Fig. 01 · Every pairing was validated against WCAG across both themes. Semantic variables assign each colour a role — primary, hover, active, disabled — rather than a hex, so switching theme is a toggle rather than a redesign.

States as first-class citizens

The gap between a stickersheet and a system is what happens on hover, focus and disabled. Every interactive component ships its full matrix.

Component

Enabled

Hover

Active

Focus

Disabled

Button / primary

Label

Label

Label

Label

Label

Input / text

Label

Value

Label

Value

Label

Value

Label

Value

Label

Value

Fig. 02 · Two rows shown. In Framer, extend to six or eight of your densest components — data table cell, date-range picker, file upload.

The library

From chips, avatars and breadcrumbs to data tables, statistic cards, charts, date-range pickers and file upload.

Tables built from reusable cell components — avatars, actions, ratings, dropdowns — so a new table is composition rather than construction.

Dashboard, calendar, upload and statistics pages composed entirely from system parts, with zero one-off styling. That composition is the whole promise of a system.

Dark mode is a token problem, not a paint problem

Every component’s colours, contrast, shadows and states resolve through the token layer. Solving it once at the variable layer beats solving it per screen forever.

Side by side at identical scale — the point is that nothing moved, only resolved differently.

What this does and doesn’t prove

Demonstrated

80+ components with full variant and state coverage across web and mobile. Complete light/dark theming from one semantic token source. Contrast validation on every colour pairing, with ratios documented. Four pages assembled from system parts alone.

Not demonstrated

No adoption data, because no team has used it. A production deployment would let me measure adoption rate, handoff time before and after, and drift caught in design QA. Those are the numbers that would make this a real case study rather than a craft exercise.

Next: publish the token JSON for code sync, add a contribution and versioning model, and pressure-test the whole thing by building a second product from the same foundations.

Create a free website with Framer, the website builder loved by startups, designers and agencies.