Component Library
All shared UI components from @workspace/ui,
organised by atomic design principles.
Atoms
Fundamental building blocks — the smallest indivisible UI elements.
Alert
Badge
Checkbox
Chip
Input
Kbd
Label
Log Line
The error row above is expandable — Tab to focus, Enter to toggle the stack trace.
Meter
Progress Bar
Radio Group
Run Status Dot
Separator
Above
Below
Skeleton
Stripe
Switch
Textarea
Tooltip
Molecules
Combinations of atoms that form more complex, reusable UI patterns.
Area Chart
Avatar
Card
Donut
Field
This will be displayed on your profile.
Pagination
Run Status Badge
Segment
Focus with Tab; arrow keys move + select; Home / End jump to ends.
Select
Severity Badge
Sparkline
Stacked Bars
Status Badge
Table
| Run | Environment | Status | Pages | Findings |
|---|---|---|---|---|
| run-a1 | local | | 12 | 0 |
| run-a2 | staging | | 18 | 3 |
| run-a3 | production | | 9 | 1 |
| Run ID | Env | Elapsed | Pages | Findings |
|---|---|---|---|---|
| a3f91b02 | | 00:02:14 | 124 | 0 |
| 7c2e9d41 | | 00:01:48 | 96 | 2 |
| e18b4a77 | | 00:03:31 | 212 | 7 |
| b9041fc6 | | 00:00:52 | 41 | 0 |
| 5d27ae83 | | 00:02:07 | 138 | 1 |
Tabs
Organisms
Complex, self-contained UI sections composed of molecules and atoms.
Code Block
{
"run_id": "qa-2026-04-24-staging-12",
"status": "partial",
"started_at": "2026-04-24T18:04:11Z",
"totals": { "pass": 184, "fail": 18, "skip": 9 }
}import { Drawer } from "@workspace/ui/components/drawer";
export function FindingDrawer({ id }: { id: string }) {
// Drawer reuses Sheet's focus trap and Esc handler.
return <Drawer>{/* ... */}</Drawer>;
}# Trigger a QA run via the intechideas plugin
/intechideas:qa --project staging --features findings,runs
# Export the manifest after the run completes
/intechideas:qa-export --run qa-2026-04-24-staging-12Dialog
Drawer
- Esc closes the drawer (Sheet's built-in handler).
- Focus is trapped while open and returns to trigger on close.
- Click the overlay or the close button to dismiss.
Sheet
Sonner (Toast)
Split Pane
Drag the divider in the middle to resize the panes. Use ArrowLeft / ArrowRight (Shift accelerates) when the divider has focus.
Min widths are enforced; the divider stops at 180px on the left and 220px on the right.
Tab to the divider, then use ArrowLeft / ArrowRight (Shift = larger steps).