THE ATOMIC SYSTEM

Six layers.
One direction.

Every layer composes only the layer below it. A molecule never reaches past its atoms; a template never invents a pixel. Skipping a layer is a build failure, not a style choice — and spacing is owned by the brick system, never by the component itself.

The dependency ladder

Hover a layer — everything it is allowed to touch lights up below it. Everything above it dims, because upward dependencies do not exist here.

TOKENSsemantic --oi-* variables 3,491 --oi-*Rule 4 no hex, no primitives
ATOMSbuttons, inputs, badges Rule 6 heights 24/32/40Rule 38 8-file contract
MOLECULESstat cards, filter bars Rules 7–14 Lego
ORGANISMStables, shells, drawers Rule 38 8-file contract
TEMPLATES6 page shells — slots only Rule 18 no layer skipping
PAGEScomposed product screens composed, never invented
Hover a layer to see what it may — and may not — depend on.

Nobody owns their own margins

Components ship margin-free. The wrapper — the brick system — owns every gap on the canvas, so spacing is a law of the page, not an opinion of the component.

THE BRICK SPACING MODEL shown at 2× · values are real px
24 — wrapper edge
24
OIStatCard
24
OIChartCard
24
12 — row gap
24
OITable
24
OICardGrid
24
24 — wrapper edge

Nobody owns their own margins. The wrapper does. (W55, Rules 82–84)

The layers, live

Nothing below is a screenshot. Every specimen is rebuilt here to the letter of the law — hover it, click it, toggle it. Teal is the only chrome accent; mono is reserved for values; every control is exactly 24, 32 or 40px tall.

Single-purpose, token-fed, margin-free. If it can be split further, it isn't an atom.

OIButton — variants × sizes

Rule 6 — no 28, no 36, no 44

OIStandardInput

Click in — teal ring + glow is the focus state.

OISwitch & OICheckbox

Auto-scale replicas

OITag · OIStatusBadge

llama-3-70bus-east-1
Ready Pending Failed Modified

Tones ship bundled — fg + bg + border move together.

OIStatusDot · OISpinner

cluster-prod-01 live
Provisioning…

OISkeleton

OIText

Heading — Inter 600

Body — Inter 400, fg-2 for secondary voice.

Caption — quiet metadata layer.

value: 2,148 — mono is for data only

Atoms snapped together — still no margins of their own, still one job each.

OICard

Inference endpoint
ep-7f3a92 · 8 GPUs

OIStatCard

Requests / min
2,148▲ 12.4%

OIChartCardHeader

GPU utilization across 4 clusters · allocated used

OIFilterBar

OIAlertBanner

Sync scheduledDesign tokens re-publish to Claude Design tonight at 02:00 UTC.
Quota at 87%cluster-prod-01 is approaching its GPU-hour ceiling for June.

OIBreadcrumbs

OIPagination

Full working compositions — a table with its chrome, an app shell with a live sidebar, drawers and modals with real motion.

OITable — full chrome

NameStatusGPUsUtilizationUpdated
inference-gw-prodReady882%2m ago
training-run-04Pending3234%11m ago
embeddings-apiReady491%26m ago
eval-harnessFailed01h ago
notebook-a100-igorModified248%3h ago
Showing 5 of 47 workloads

OIAppShell · OIDrawer — live mock

Admin Tools/Monitor
MA
Deployments
Monitor
Datasets
Clusters
Settings
KPI BRICK ROW
CHART BRICK
CHART BRICK
TABLE BRICK
Workload detail
IDwl-8842-a
StatusReady
GPUs8 × A100
Uptime14d 6h

Real shell rules: active nav is a teal pill, the sidebar collapses to icon rail, the drawer slides over the canvas — modal opens page-level with scrim, Esc closes.

Templates own nothing — no gap, no padding, no color. Slots only. The brick wrapper spaces whatever the page pours in.

Dashboard

KPI
KPI
KPI
KPI
CHART
LIST

Monitoring surfaces — KPI strip up top, chart bricks below.

List

FILTER BAR
TABLE
FOOTER

Every index screen — filterable table with owned footer.

Detail

HEADER META
CONTENT
RAIL

One entity, fully unpacked — meta strip plus side rail.

Form

SECTION
SECTION
ACTIONS

Settings and editors — one centered column, stacked sections.

Wizard

STEPS
STEP BODY

Multi-step creation — side-rail stepper drives the body slot.

CardGrid

CARD
CARD
CARD
CARD
CARD
CARD

Galleries of like things — models, datasets, providers.

Two mini pages assembled purely from the pieces above — no new CSS ideas, just composition.

DEMO 01

Monitor Overview

Dashboard template
Requests / min
2,148▲ 12.4%
Active GPUs
46▲ 4
p95 latency
312ms▼ 8.1%
Failed jobs
3▲ 2
Cluster utilizationrolling 24h· allocated used
NameStatusGPUsUtilizationUpdated
inference-gw-prodReady882%2m ago
embeddings-apiReady491%26m ago
eval-harnessFailed01h ago
Showing 3 of 47 workloads
DEMO 02

Inference tool

Detail template · split pane
Input
Output
Listening for requests… Responses stream here as they arrive.
Parameters
temperature0.7
max tokens2,048
modelllama-3-70b
stream

24 real prototypes like these ship in the repo's _demos/ — written by designers in plain English through Claude Code, rendered by Storybook, built only from real components.

Where the law lives

Want the full parts list? Browse all 220 components in the library →