Conductor Design System
Reusable tokens, a layered stylesheet and Radix-based React primitives for focused operational interfaces. Dark is canonical, light is a first-class second palette, and every colour ships with its contrast verdict.
import "@conductor-by-89soone/css";
import { Button } from "@conductor-by-89soone/react";
<Button variant="primary">Deploy</Button>pnpm add @conductor-by-89soone/reactLive showcase
| Service | Status | Duration |
|---|---|---|
| web-console | Deploying | 1m 12s |
| event-worker | Healthy | 42s |
| search-index | Awaiting approval | 18s |
- ValidatedAll 14 checks passed
- DeployingRolling out to the canary group
- Traffic shiftStarts once the rollout settles
Everything above is live DOM from @conductor-by-89soone/react — switch the theme to see the tokens swap.
- 76ComponentsRadix-based React primitives
- 322TokensOne source, both palettes
- 244/244Contrast checksWCAG 2.1 AA, measured per theme
- 2Themes0 runtime requests
Packages
Three packages, one visual contract
Dependencies flow one way, tokens → css → react, and the docs site you are reading is the first consumer.
Principles
Settled decisions, not open questions
The architecture records are closed; what follows is how the packages behave because of them.
One token source
Every colour, length and duration is a
--cdt-custom property generated from one TypeScript source. A theme swaps values, never keys.Keyboard-first, by Radix
Dialogs, menus, selects and tabs delegate focus, roles and keys to Radix UI. Status is never colour alone.
- Tab
- Next control
- ShiftTab
- Previous control
- Enter
- Activate
- Esc
- Close an overlay
- ↑↓
- Move in menus and lists
Cascade layers, never
!importantUnlayered consumer rules win by layer order.
@layer cdt.reset, cdt.base, cdt.layout, cdt.component, cdt.utility;Motion that steps aside
Entrances settle on a spring, exits accelerate away, and
prefers-reduced-motionturns every motion token to0s.Zero runtime requests
Static CSS and components that fetch nothing and track nothing; 244 of 244 colour pairs pass WCAG 2.1 AA at build time.
Ready for AI agents
The build writes a DESIGN.md with every token per theme, an llms.txt index and a Markdown page per component, all from the same sources as these pages.
Quick start
Up and running in three steps
One command, one import, one component. The rest is reading the current theme.
Install the package
The full guide lists the tokens and stylesheet packages alongside it.
pnpm add @conductor-by-89soone/reactImport the stylesheet once
Its first line declares the cascade layers, so your own rules always win.
import "@conductor-by-89soone/css";Render a component
Every variant reads the current theme from the html attribute.
<Button variant="primary">Save</Button>
Ready to build with Conductor?
Install the package, import the stylesheet once, and every component picks up the current theme.