Andromeda

System

Built for designers, developers, and teams who want a system, not a stylesheet. Tokens, components, templates, and a documented brain that keeps everyone aligned.

35 components · 4 templates · 1 brain · one-command install
/// Foundation · Colors

Color Palette

Three brand hue palettes lead — accent (turquoise), orange (warning), red (fault) — each a 5-stop scale (100 lightest → 500 darkest) with a matching alpha. The foundational greys follow: surface, border, text. Every alpha sits in a single row at the seam between the two halves.

Accent · Turquoise
accent.100
Highlighted text · pastel
#BAF8EC
accent.200
Light emphasis
#56F0D6
accent.300
Active · selected · base
#0FCFB2
accent.400
Focus borders · dim
#109380
accent.500
Glow halos · tinted fills
#126059
Orange · Warning
orange.100
Pastel · highlight
#FFE5B5
orange.200
Light · emphasis
#FFC466
orange.300
Solid · icon · base
#FFA000
orange.400
Border · ring
#B57009
orange.500
Subtle fill
#4D3712
Red · Fault
red.100
Pastel · highlight
#FFCFCF
red.200
Light · emphasis
#FF8B8B
red.300
Solid · icon · base
#FF3939
red.400
Border · ring
#B82424
red.500
Subtle fill
#5A1818
Alpha · Layered Tints
accent.alpha
Turquoise selection · highlight
rgba(15, 207, 178, 0.25)
orange.alpha
Warning overlay · caution tint
rgba(255, 160, 0, 0.25)
red.alpha
Fault overlay · error tint
rgba(255, 57, 57, 0.25)
surface.alpha
Modal scrim · backdrop
rgba(0, 0, 0, 0.65)
border.alpha
Glassy edge · sheen
rgba(255, 255, 255, 0.18)
Surfaces
surface.base
Page void · root
#0E0E0F
surface.raised
Cards · panels
#141415
surface.overlay
Dropdowns · tips
#19191A
surface.hover
Hover state
#1C1C1D
surface.active
Pressed state
#232325
Borders
border.subtle
Dividers
#212122
border.base
Default edges
#3E3E3F
border.bright
Focus · hover
#5B5B5C
border.strong
High emphasis
#939393
Text
Aa 01
text.primary
Headings · values
#F5F5F5
Aa 01
text.secondary
Body · descriptions
#A3A3A3
Aa 01
text.muted
Kickers · metadata
#9A9A9A
Aa 01
text.faint
Labels · hints
#6E6E6E
Usage Reference
Page headings
text.primary
Body · descriptions
text.secondary
Kickers · metadata
text.muted
Decorative labels
text.faint
Page background
surface.base
Card backgrounds
surface.raised
Hover → pressed
surface.hover → surface.active
Dividers
border.subtle
Default borders
border.base
Focus borders
border.bright
Active · selected
accent.300
Accent glow
accent.500
Warning indicator
orange.300 + orange.500
Fault indicator
red.300 + red.500
Modal scrim
surface.alpha
Glassy edge
border.alpha
Selection sheen
color.alpha
/// Foundation · Type

Typography

JetBrains Mono is the only typeface. Both fontSans and fontMono resolve to it — the distinction exists only for backward compatibility. Hierarchy comes from size, weight, and letter-spacing, not from switching families.

Type Scale
xs10pxANDROMEDAData labels · kickers · row headers
sm12pxANDROMEDADescriptions · captions · error text
md14pxANDROMEDAUI body · card descriptions
lg15pxANDROMEDACard titles · nav labels
xl18pxANDROMEDASection headings
2xl22pxANDROMEDASub-page headings
3xl28pxANDROMEDAShowcase page title
4xl36pxANDROMEDADashboard hero readout
5xl48pxANDROMEDAStat primary value
Weight Scale
NOVA
weight.thin
200
NOVA
weight.regular
400
NOVA
weight.medium
500
NOVA
weight.semibold
600
NOVA
weight.bold
700
Letter Spacing · Tracking
TRACKING
tracking.tight
0
Dense data tables
TRACKING
tracking.normal
0.02em
Inline body text
TRACKING
tracking.wide
0.08em
Values · readouts
TRACKING
tracking.wider
0.14em
Nav labels
TRACKING
tracking.widest
0.22em
Kickers · row heads
/// Foundation · Spacing

Spacing

A 4px-based scale. Token names track the px value: spacing.1 → 4px, spacing.4 → 16px. The scale skips 7, 9, and 11 — only the values the system actually uses are emitted, so the keys you have are the keys you should be reaching for.

spacing.14px
Micro gaps · dot offsets · sub-line padding
spacing.28px
Icon ↔ text · inline rhythm
spacing.312px
Card padding · list rows · default form gap
spacing.416px
Row gap · panel content rhythm
spacing.520px
Toolbar gap · header rhythm
spacing.624px
Section padding · panel gutter
spacing.832px
Page gutter · hero margin
spacing.1040px
Page top padding · large breaks
spacing.1248px
Hero bottom · max scale break
/// Component

Button

Open Button

5 variants × 3 sizes. Supports asChild via Radix Slot, optional leading icon, full hover / focus / active / disabled state coverage.

Variants
Sizes
With icon
Disabled
/// Component

IconButton

Open IconButton

Square companion to Button. Same variant + size vocabulary so a Button and an IconButton sit on the same baseline in toolbars and headers.

Variants
Sizes
Disabled
/// Component

PanelHeader

Open PanelHeader

Title row for top-level dashboard panels. Sentence-case mono title on the left, optional actions slot on the right (PanelMenu, IconButton, Button). Inset bottom divider separates the header from the panel body. Distinct from CardHeader, which uses uppercase-widest mono and tighter padding for nested compositions.

Title only
Capacity
Title + actions (PanelMenu)
Requests
/// Component

PanelMenu

Open PanelMenu

Kebab-trigger overflow menu for panel headers. The trigger (IconButton, ghost, sm) flips to a held-pressed look while the menu is open. Items support icons, separators, destructive styling, persistent selection, and a single level of right-flyout submenu. Closes on outside click or Escape.

Default · panel actions
With submenu
/// Component

Badge

Open Badge

6 variants for status, metric tags, and inline labels. A leading per-variant status dot blinks on a loop to carry the signal, and holds steady when reduced motion is requested.

DefaultLiveCautionFaultSubtleOutline
/// Component

Avatar

Open Avatar

3 sizes. Shows an image when `src` is provided, with a fallback to initials. Optional status bar in 4 states.

Sizes
RQ
RQ
RQ
With status
RQ
MV
KO
JP
/// Component

Card

Open Card

Compound primitive: Card / CardHeader / CardContent / CardFooter / CardTitle / CardDescription. Corner brackets do the framing by default, with a bordered toggle for a continuous 1px border and a glow variant that adds an accent tint.

/// Default

Default card

Idle

Sharp corners with bracket markers tucked into each corner. No perimeter stroke — the brackets are the frame.

/// Glow

Highlight card

Live

Tinted accent gradient surface. Use for the card you want to draw the user's eye to first.

/// Component

CornerMarkers

Open CornerMarkers

The defining motif. Renders 4 L-shaped brackets at the corners of the nearest position:relative ancestor. Geometry comes from tokens.marker.

Default
Larger
Inset 6px
Accent
/// Component

Input

Open Input

Optional uppercase mono label, optional left icon, default + error states. Border transitions on focus.

Field cannot be empty
/// Component

SearchField

Open SearchField

Command-bar-style search input with an optional ⌘-K shortcut chip. Five states — idle, hover, focus, text-inactive (placeholder), text-active (typed).

/// Component

NavItem

Open NavItem

Sidebar item with icon, active state, right-edge indicator dot. Mono label by default; pass mono={false} for sans.

/// Component

ProgressBar

Open ProgressBar

3 status variants. 30 skewed segments fill left to right with a scroll-gated staggered cascade.

Storage Used72%
Bandwidth48%
Memory Critical91%
/// Component

HeatGrid

Open HeatGrid

2-D matrix fill gauge — the cousin of ProgressBar. Cells fill from the bottom-centre outward in a widening pyramid as the value rises, dim-to-bright toward the wave front. Scroll-gated fill, optional percentage readout, role=meter.

Value
Live · jump or drag (cells appear / disappear in real time)
Fill60%
Sizes · without readout
/// Component

StatTile

Open StatTile

Stat readout built on Card. Big numeric value, optional unit, optional ▲/▼ delta colored by sign. Scroll-aware count-up on first view, a live mode that snaps to new values, a per-digit odometer roll (liveRoll), and a top-right code identifier prop.

ThroughputREQ-01
0rps
2.4vs prior period
LatencyLAT-02
0ms
1.2vs prior period
ErrorsERR-03
0%
/// Component

Tag

Open Tag

Compact uppercase mono label. 4 variants. Optional dismiss button when onClose is provided.

Variants
DefaultAccentWarningFault
Dismissible
RemovableActive filter
/// Component

Checkbox

Open Checkbox

Square boolean control. Controlled or uncontrolled. Inline label, accent fill on checked, an accent focus ring, a press scale, a pop-in on the checkmark, and a 40px touch target on coarse pointers.

States
/// Component

Radio · Choicebox

Open Radio · Choicebox

Mutually-exclusive square radio. Use standalone or inside a RadioGroup that wires up `name` / `value` / `onValueChange`.

Group
Standalone
/// Component

Toggle · Switch

Open Toggle · Switch

Sharp rectangular track + sliding rectangular thumb. Same vocabulary as Checkbox, but feels like a hardware switch.

States
/// Component

SegmentedControl

Open SegmentedControl

Row of icon-or-label buttons that share a single border. The active background slides between segments on selection (Framer Motion layout animation). Sized sm/md/lg to align with the Button/IconButton baseline.

Icons · sm
Icons · lg
Labels
/// Component

DateRangePicker

Open DateRangePicker

Trigger chip + drop-down calendar panel. Anchor-then-confirm range selection with hover preview, Monday-first 6×7 grid, ESC and click-outside to close. Selected endpoints fill in accent; the in-between band is a 1px accent outline so the eye stays on the picked dates.

/// Component

Spinner

Open Spinner

A 3x3 pixel grid with a snake-game trail cycling via a single CSS keyframe, running on the compositor. 4 color variants and 3 sizes.

Sizes
Variants
/// Component

Slider

Open Slider

Custom horizontal range. Pointer drag + full keyboard support (←/→/↑/↓, PageUp/PageDown, Home/End). ARIA-compliant.

Throttle64%
Thrust Vector30°
Locked50
/// Component

Textarea

Open Textarea

Multi-line counterpart to Input. Same border / focus / error behavior, vertical resize.

Brief must be at least 80 characters
/// Component · Error

Alert

Open Alert

Banner-style status component for inline messages. 4 variants — default, accent, warning, fault — each with its own per-variant color set. Severity-aware ARIA (warning and fault announce assertively, the rest politely) and compound parts: AlertIcon, AlertContent, AlertTitle, AlertDescription.

System nominal
All systems reporting in.
New activity
Burst received from VHCL-04.
/// Component

Empty State

Open Empty State

Centered icon + uppercase mono title + sans description + optional action. Built on Card so it inherits the bracket motif.

No activity

Awaiting signal from the deep-space array. The next pass is in approximately 14 minutes.

/// Component · Charts

Radar Chart

Open Radar Chart

Polygon spider chart for multi-axis system diagnostics. Supports single or multiple overlapping series. Built on recharts, fully styled with andromeda tokens.

/// SystemsShip Diagnostics
Nominal
Critical
/// PerformanceSystem PerformanceCurrent system readiness
Readiness
/// Component · Charts

Trend Chart

Open Trend Chart

The canonical multi-series time-series chart. One component, line / area / bar via the mode toggle, with a custom tooltip and toggleable legend. Series colour follows the multi-series hierarchy: baseline (white), live (accent), context (faint), threshold (red dashed). Built on recharts; scroll-gated left-to-right reveal.

Allocation vs usage
Compute units, PFLOPS
/// Component · Charts

Metric Chart

Open Metric Chart

The framed single-series telemetry panel. TrendChart auto-domains from zero; MetricChart is the domain-aware counterpart, fitting the y-domain to the data so percentage and non-zero-floor measurements fill the plot. The variant colors the status badge only; chart ink stays neutral.

/// TelemetryMetric
Live
/// StationOrbital AltitudeReboost burn at 14:00
Drift
/// Component · Charts

Gauge

Open Gauge

Radial percentage gauge. The arc IS the measurement, so it takes the semantic color (accent live, orange warning, red fault) over a neutral track; the readout counts up in sync with the sweep. A bare primitive that composes into Cards and panels.

Sizes
0%0%0%
Variants
0%CPU0%FUEL0%O2
/// Component · Visualization

Planet

Open Planet

3D particle sphere — every point lit on a Lambert ramp from accent.500 (shadow) to accent.200 (lit), with 1% accent.100 sparkles on the day side. Self-contained Three.js, transparent canvas. Drop into a Card for status / next-destination widgets.

/// Body

Solo

/// Heading

Next Destination

LOCKED
Target
KEPLER-186F
Distance492.3 ly
ETA2027.04.18
Bearing042.7°
ClassM-Dwarf
/// Component

Table

Open Table

Compound primitive for dense data tables. Sortable column headers with caret indicators, row hover highlight, and selected-row accent-300 left edge. TableStyles must be rendered once per page to inject the hover class rules.

Order IDPart IDSource LocationSource LevelService LevelTotal Volume
AB-00032734X60 BJGJ29839281US, Denver - 2407166%4/1010.9985
AB-00032736X61 BHH09027512US, San Francisco - 2738175%3/108.85221
AB-00039925X52 BB0372/2 X5AUS, Houston - 2402798%7/1010.29701
AB-00032002B12 BZ9025/2 X12EU, Sweden - 0008568%2/103.92871
/// Component

Tooltip

Open Tooltip

Hover label for icon-only controls. Wraps any child and floats a mono uppercase label above (or below) it. Shows on keyboard focus too, carries role='tooltip', and clamps itself away from the viewport edges. No portal, so it stays in the nearest stacking context.

Position · top (default)
Position · bottom
/// Component

Drawer

Open Drawer

Slide-in panel on any side (left, right, top, or bottom), with focus trap and a size prop. Backdrop, ESC to close, body scroll lock, and the bracket motif. React Portal escapes any clipped ancestor.

Trigger
/// Component

UserMenu

Open UserMenu

Avatar-trigger popover whose menu rows are supplied by the caller via an `items` prop. Designed for top-bar slots where space is tight. Opens downward and right-aligned by default; pairs with UserCard for sidebars that have room to spell out name and role.

Open up
Open down
/// Component

UserCard

Open UserCard

Wider user trigger that shows avatar, name, and role alongside the chevron, the canonical bottom-of-sidebar identity card. Same popover as UserMenu, with menu rows supplied by the caller via an `items` prop; opens upward by default and stretches to the card width.

Open down
Open up
Get the system
Install everything: 35 components, tokens, and 4 templates.
Includes the Andromeda brain (50 rule files your AI reads).
Unlock with Premium