Sidebar operations console
An illustrative service console with live navigation, operational metrics, deployments, logs, and account tools.
Blocks
Start from a complete interaction, then strip it back to the pieces your product actually needs. Every block below is running: real components, real state, nothing screenshotted. They're filed by the job they do rather than by which components they happen to use, because that's how you'll be looking for them.
Interactive shells and control surfaces for running services, reviewing work, and making changes with context intact. All workspace data is illustrative.
An illustrative service console with live navigation, operational metrics, deployments, logs, and account tools.
An illustrative team inbox with folders, read state, starring, archiving, and an inline reply surface.
The keyboard layer diverged after the focus-trap change landed on Tuesday. Svelte is returning focus to the trigger one tick later than the other four, so the assertion on the restored activeElement fails.
It's a real divergence rather than a flaky test. I can reproduce it by hand. I would rather we hold the release than record it as an intentional difference.
An illustrative service directory that filters rows, exposes activity and usage, and protects deployment confirmation.
| State | ||||
|---|---|---|---|---|
| edge-cache | staging | platform | 19ms | paused |
| docs | prod | platform | 64ms | live |
| web | prod | growth | 88ms | live |
| ledger-api | prod | payments | 142ms | live |
| search | staging | growth | 204ms | live |
| worker | prod | payments | 311ms | rolling |
An illustrative settings shell with dirty-state feedback, revert and save actions, access roles, and empty history.
A rollout review surface that joins service readiness, blast radius, and pause policy before any action is allowed.
Compare service readiness, choose blast radius, and record the safety posture before any deployment begins.
| Readiness | ||||
|---|---|---|---|---|
| web | 1c09aa | growth | 88ms | ready |
| ledger-api | 8f21c4 | payments | 142ms | ready |
| search | c72d18 | growth | 204ms | blocked |
| worker | 4b7e02 | platform | 311ms | watch |
A component is the stable bit: one contract, checked across five adapters. A block is one particular arrangement of those components, and it carries state and data that really belong to whatever product is using it. Those choices won't survive contact with your app, so shipping them as registry items would only promise a stability they don't have.
Blocks are patterns, not packages: copy the layout and state from here, then install the primitives each one leans on.
pnpm dlx grassroot add ui/select