@sandbox/ui

Terminal Noir

A premium dark design system for data-dense interfaces. 12 components built for terminal aesthetics, real-time data, and developer tools.

React 18+
Tailwind CSS 4
TypeScript
K
Terminal Noir v1.0 · 12 Components · 5 Accent Colors · Dark Mode Only · Cloudflare Pages · Zero Runtime Dependencies · Departure Mono · Terminal Noir v1.0 · 12 Components · 5 Accent Colors · Dark Mode Only · Cloudflare Pages · Zero Runtime Dependencies · Departure Mono · 

Terminal

Scrollable command output display with optional line-by-line animation and scanline overlay.

Animated output
Static output
1System diagnostics:
2 CPU: 4 cores @ 3.2GHz
3 Memory: 16GB DDR5
4 Storage: 512GB NVMe
5 Network: 1Gbps symmetric
PropTypeDefaultDescription
linesstring[]Array of text lines to display
animatebooleanfalseAnimate lines appearing one by one
maxHeightstring"400px"Max height before scrolling
classNamestringAdditional CSS classes
example.tsx
<Terminal
  lines={["$ echo hello", "hello"]}
  animate
  maxHeight="240px"
/>

CommandBar

Floating command palette activated with ⌘K. Try it — press ⌘K or Ctrl+K now.

Interactive — press ⌘K to open
Last command:(none)
PropTypeDefaultDescription
onSubmit(cmd: string) => voidCalled when user presses Enter
placeholderstring"Type a command…"Input placeholder text
prefixstring"> "Prompt prefix character
classNamestringAdditional CSS classes
example.tsx
<CommandBar
  onSubmit={(cmd) => console.log(cmd)}
  placeholder="Search components..."
  prefix="λ "
/>

DataGrid

Sortable data table with striped rows and column alignment. Click headers to sort.

Service monitor
ServiceStatusLatency (ms)Uptime
api-gateway● healthy1299.99%
auth-service● healthy899.95%
data-pipeline◌ degraded14598.20%
cdn-edge● healthy3100.0%
websocket-hub● healthy2299.87%
PropTypeDefaultDescription
columnsColumn[]Column definitions with key, label, width, align
dataRow[]Array of row data objects
onSort(col: string) => voidCalled when a column header is clicked
classNamestringAdditional CSS classes
example.tsx
<DataGrid
  columns={[
    { key: "name", label: "Name" },
    { key: "value", label: "Value", align: "right" },
  ]}
  data={[
    { name: "Latency", value: 12 },
    { name: "Throughput", value: 450 },
  ]}
  onSort={(col) => console.log("Sort by", col)}
/>

StatusBar

Fixed-position bottom bar with left/right content zones and variant styles.

Default variant
● Connected to us-east-1
v2.4.1 | 3 workers
Warning variant
⚠ High memory usage detected
87% utilized
Error variant
✕ Connection lost
Retrying in 5s...
PropTypeDefaultDescription
leftReactNodeContent for the left zone
rightReactNodeContent for the right zone
variant"default" | "warning" | "error""default"Visual style variant
classNamestringAdditional CSS classes
example.tsx
<StatusBar
  variant="warning"
  left={<span>⚠ High memory usage</span>}
  right={<span>87% utilized</span>}
/>

Meter

Horizontal progress bar with tick marks, percentage display, and accent color glow.

All accent colors
CPU Usage
85%
Memory
62%
Disk I/O
91%
Error Rate
23%
Uptime
99%
Custom max value
Requests / sec
75%
PropTypeDefaultDescription
valuenumberCurrent value
maxnumber100Maximum value
labelstringLabel text displayed beside the bar
colorAccentColor"indigo"Bar fill color: indigo | cyan | amber | rose | lime
classNamestringAdditional CSS classes
example.tsx
<Meter
  value={85}
  label="CPU Usage"
  color="indigo"
/>

RadialGauge

Circular SVG gauge with animated arc draw, value display, and glow effect.

Multiple gauges
97
Uptime
42
Latency
78
Deploys
15
Errors
63
Load
Different sizes
80
SM
80
MD
80
LG
PropTypeDefaultDescription
valuenumberCurrent value
maxnumber100Maximum value
labelstringLabel below the gauge
sizenumber120SVG size in pixels
colorAccentColor"cyan"Arc color: indigo | cyan | amber | rose | lime
classNamestringAdditional CSS classes
example.tsx
<RadialGauge
  value={97}
  label="Uptime"
  color="lime"
  size={120}
/>

MatrixCard

Signature container with subtle grid dot pattern and hover glow. The foundation of Terminal Noir layouts.

Glow colors
glow
indigo
glow
cyan
glow
amber
glow
rose
glow
lime
hover
disabled
Content container

System Status

All services are operating normally. Last checked 30 seconds ago.

Operational
PropTypeDefaultDescription
childrenReactNodeCard content
hoverbooleantrueEnable hover glow effect
glowAccentColor"indigo"Glow color on hover
classNamestringAdditional CSS classes
example.tsx
<MatrixCard glow="cyan">
  <div className="p-6">
    <h3>Card Title</h3>
    <p>Card content goes here.</p>
  </div>
</MatrixCard>

Ticker

Horizontal scrolling marquee for live data feeds. Seamless loop, pauses on hover.

Live data feed
API: 12ms p99 · Uptime: 99.99% · Deploys today: 47 · Active workers: 128 · Edge regions: 34 · Requests/sec: 14.2k · API: 12ms p99 · Uptime: 99.99% · Deploys today: 47 · Active workers: 128 · Edge regions: 34 · Requests/sec: 14.2k · 
Fast speed
BTC $67,420 | ETH $3,891 | SOL $142.50 | DOGE $0.089 | BTC $67,420 | ETH $3,891 | SOL $142.50 | DOGE $0.089 |
PropTypeDefaultDescription
itemsstring[]Array of text items to scroll
speednumber30Scroll speed in characters per second
separatorstring" · "Separator between items
classNamestringAdditional CSS classes
example.tsx
<Ticker
  items={["API: 12ms", "Uptime: 99.99%"]}
  speed={30}
/>

KeyBadge

Keyboard key cap rendering for shortcuts and hotkey hints.

Common shortcuts
KCommand palette
PQuick actions
EscClose
CtrlCInterrupt
PropTypeDefaultDescription
keysstring[]Array of key labels, e.g. ["⌘", "K"]
classNamestringAdditional CSS classes
example.tsx
<KeyBadge keys={["⌘", "K"]} />

Toast

Notification toasts with auto-dismiss progress bar. Uses a Provider + useToast() hook pattern.

Click to trigger
PropTypeDefaultDescription
messagestringToast notification text
variant"info" | "success" | "warning" | "error""info"Visual style and color
durationnumber4000Auto-dismiss time in ms
example.tsx
// Wrap app with <ToastProvider>
const { toast } = useToast();

toast("Deploy complete!", {
  variant: "success",
  duration: 4000,
});

TreeView

File explorer-style tree with collapsible nodes, ASCII connectors, and selection state.

Interactive file tree
Selected: (none)
PropTypeDefaultDescription
itemsTreeItem[]Tree data with id, label, optional children and icon
onSelect(item: TreeItem) => voidCalled when a node is clicked
classNamestringAdditional CSS classes
example.tsx
<TreeView
  items={[
    {
      id: "src",
      label: "src",
      icon: "📁",
      children: [
        { id: "index", label: "index.ts", icon: "📄" },
      ],
    },
  ]}
  onSelect={(item) => console.log(item.label)}
/>

PresenceDot

Pulsing status indicator for presence, health, and connectivity states.

All statuses
online
away
busy
offline
Sizes
sm
md
lg
In context
api-gatewayonline
auth-serviceonline
ml-pipelineaway
staging-dbbusy
legacy-apioffline
PropTypeDefaultDescription
status"online" | "away" | "busy" | "offline"Presence status determining color and animation
size"sm" | "md" | "lg""md"Dot size
classNamestringAdditional CSS classes
example.tsx
<PresenceDot status="online" size="lg" />