Change the voice, not the component.
Brick themes assign meaningful visual roles. The same Button, Card, Input, and Dialog keep their anatomy, behavior, and tested recipes under every brand.
Two complete expressions.
A theme is not a coat of paint. It is one coordinated decision system applied to the same accessible component anatomy.
Invite collaborators
Give your team access to this project.
Invite collaborators
Give your team access to this project.
A small vocabulary with complete reach.
Override stable semantic roles in ordinary CSS. No required provider, render-time palette engine, or application storage policy.
Theme tooling can read the same contract Brick ships.
Import @flowstack-ui/brick/theme-contract.json to discover semantic roles, supported scopes, cascade placement, and 76 maintained contrast pairs without copying Brick’s token source.
Typed local appearance
The server-safe Appearance utility decorates one existing host with a light, dark, or inherited boundary—without a provider or wrapper.
Evidence-ready contrast
Each published pair declares its text or non-text role and required ratio so Theme can validate assignments without rounding.
Start with Brick’s defaults.
Then make them unmistakably yours.npm install @flowstack-ui/brick