Design System · Internal

PearlHub Design System

This page (brand-wizard-app/public/pearlhub_design_system.html) is the canonical component library for every PearlHub dashboard. An audit of 16 live PearlHub pages found font sizes as small as 9px, the same card/badge/progress-bar markup hand-duplicated with inline styles 30+ times, and no documented color tokens or type scale. This file fixes that: one set of reusable components, one token system, one place to copy from.

Rule going forward: new and edited PearlHub pages should copy a component's CSS + markup from here, not re-derive ad hoc styles like status_hub.html does. Every rule in this file uses --font-size-t0 (12px) as its floor — nothing renders smaller.

8 components·Light + dark theme-aware· Zero external dependencies·
Foundations

Tokens, Type Scale & Breakpoints

Every component below is built only from these tokens. Nothing in this file uses a hardcoded color, font size, or spacing value outside this list.

Component 01

Status Card

Title + metric + status badge, with an optional link. Border-left color signals status at a glance; hover shifts border color and adds a soft shadow.

Component 02

Status Badge

Pill-shaped, semantic color per state. Used standalone or inside a Status Card / Checklist Item / Action Card.

Component 03

Progress Bar

.progress is a single linear fill; .progress--stacked renders discrete segments — e.g. the six-layer manga acceptance taxonomy (ABSENT → PROVEN-AT-BAR) or a 7-layer breakdown.

Component 04

Stat Metric

A large number (t6, serif) with a label and an optional color-coded trend arrow.

Component 05

Checklist Item

Checkbox glyph + text, with an optional sub-label. The --done state fills the glyph and strikes the text.

Component 06

Infra Indicator

Colored dot + label + status text, for GPU/queue/service rows.

Component 07

Action Card

Heading + description + owner/deadline meta + a call-to-action button. Use action-card__btn--ghost for a secondary action.

Component 08

Code Block

Monospace block for commands/snippets, with a visual-only copy affordance (no JS required to render correctly).