Design System

The BlueMonkeyMakes design system, wearing the HouseOfZA brand. The contract travels between projects unchanged. Only the brand layer is ours.

Two layers, one seam

The system declares which decisions exist. The brand supplies what they are. That seam is the reason a re-brand is a change to one folder rather than a search across the codebase.

src/system/theme.css

The contract

Which color roles exist, the type ladder, the radius steps, the named z and elevation ladders. Kept byte-identical with the design-system reference repo. Re-copy it from there. Never edit it here.

src/brand/

The swap surface

Token values, the six HouseOfZA scales, the fluid display type, the fonts, and the decorative effects. Everything that makes this look like HouseOfZA and nothing else.

The components are not copies

Every file in src/components/ui/ is byte-identical with bluemonkeymakes/design-system. They are the real components, not a re-implementation, because a second representation would have to be kept in sync by hand and would drift. They are React, and Astro renders them to static HTML at build time. Only a demo that genuinely needs to open or close something is hydrated.

There are two documented divergences, both forced and both catalogued in DESIGN-SYSTEM-NOTES.md: Link renders a plain anchor because this is a multi-page app with no client router, and Preview drops its light and dark toggle because this site is dark-only.

The marketing pages import none of this and still ship zero JavaScript.

Foundations

Components (25)

Start here

If you are about to write a component or a page, read the rules first. Two of them account for most of what goes wrong: no arbitrary values, and select rather than restyle.