Design System · v0.1
The HeatCheck kitchen sink
Every primitive, semantic token, text style, and component recipe in one place — rendered from the real Chakra createSystem theme. Toggle the theme (top right) to check both color modes.
theme.tokens.colors
Color primitives
Raw 50→950 ramps. Neutral is a violet-tinted slate so the whole UI reads as one family. Components never consume these directly — they use the semantic layer below.
Violet · brand / primary
colors.violet.*50
100
200
300
400
500
600
700
800
900
950
Magenta · accent / energy
colors.magenta.*50
100
200
300
400
500
600
700
800
900
950
Gray · neutral (violet-tinted)
colors.gray.*50
100
200
300
400
500
600
700
800
850
900
925
950
Emerald · success / LIVE
colors.green.*50
100
200
300
400
500
600
700
800
900
950
Amber · warning / DRAFT
colors.amber.*50
100
200
300
400
500
600
700
800
900
950
Red · danger / destructive
colors.red.*50
100
200
300
400
500
600
700
800
900
950
Gauge energy stops
colors.gauge.*Interest is intensity, not good/bad — so the gauge ramps cool/dim → vivid/hot within the brand family. The one intentional low→high hue mapping.
low
mid
high
peak
theme.semanticTokens
Semantic tokens
Purpose-named aliases that resolve per color mode. Flip the theme toggle — every tile re-resolves with zero component changes. This is the layer screens actually use.
Surfaces
bg · bg.subtle · bg.muted · bg.emphasized · bg.panel · bg.invertedAa
bg
page background
Aa
bg.subtle
subtle region
Aa
bg.muted
muted fill
Aa
bg.emphasized
emphasized
Aa
bg.panel
cards / panels
Aa
bg.inverted
inverted
Text & borders
fg.* · border.*Aa
fg
primary text
Aa
fg.muted
secondary text
Aa
fg.subtle
tertiary / hints
border
default
border.muted
muted
border.subtle
subtle
border.emphasized
emphasized
Color palettes
brand · accent · danger · success · warning → solid / subtle / muted / fgbrand.*
Brand · violet
accent.*
Accent · magenta
danger.*
Danger · red
success.*
Success · emerald
warning.*
Warning · amber
theme.textStyles · theme.fonts
Typography
Display face is Space Grotesk (headings, hero, gauge numerals); body/UI is Geist; numerals & code use Geist Mono. Display sizes scale fluidly with clamp().
Fonts
fonts.display
Space Grotesk
The quick brown fox 0123456789
fonts.body
Geist
The quick brown fox 0123456789
fonts.mono
Geist Mono
The quick brown fox 0123456789
Text styles
Display 2xl
display · clamp 44→80
700 · -0.04em
Display xl
display · clamp 36→60
700
Display lg
display · clamp 30→48
700
Display md
display · clamp 24→36
600
Heading xl
2xl · 24
600
Heading lg
xl · 20
600
Heading md
lg · 18
600
Body large — the quick brown fox jumps over the lazy dog.
lg · 18
400 · 1.625
Body medium — the quick brown fox jumps over the lazy dog.
md · 16
400 · 1.5
Body small — the quick brown fox jumps over the lazy dog.
sm · 14
400
Label — Active voters
sm · 14
500
Overline · section
xs · 12
600 · 0.08em · upper
Caption — your vote expires in 1:20
xs · 12
muted
7.4
gauge numeral · tnum
700
theme.tokens.spacing · radii
Spacing & radii
4px base spacing scale (Chakra default, kept 1:1). Radii lean rounder for the friendly, energetic tone.
Spacing
spacing.*spacing.1
spacing.2
spacing.3
spacing.4
spacing.5
spacing.6
spacing.8
spacing.10
spacing.12
spacing.16
spacing.20
spacing.24
Radii
radii.*radii.xs
radii.sm
radii.md
radii.lg
radii.xl
radii.2xl
radii.3xl
radii.full
theme.tokens.shadows · layerStyles
Elevation & surfaces
Adaptive shadows (deeper in dark mode) plus brand glow for the “vibrant where it counts” moments, and layer styles for surface recipes.
Shadows
shadows.*shadows.xs
shadows.sm
shadows.md
shadows.lg
shadows.xl
shadows.2xl
glow.brand
Layer styles
layerStyles.*layer-panel
Elevated panel
layer-glass
Glass
layer-brand
Brand tint
layer-outline
Outline
theme.tokens.durations · easings
Motion
Motion is tokenized, not magic numbers. Hover a tile to feel the easing; the gauge & vote feedback use easings.spring and durations.gauge.
durations: faster 100 · fast 150 · normal 200 · moderate 280 · slow 400 · slower 600 · gauge 700ms · easings: standard · spring · decelerate · accelerate
slotRecipe · gauge
The gauge
The product’s signature element and emotional centerpiece. SVG semicircle, energy-gradient fill, soft glow. Drag the slider to drive it live.
Interactive
States
Low · high · empty (score: null)
slotRecipe · field / input / select / switch / stepper / datePicker
Forms & controls
Switch
Stepper (vote TTL)
Time field
Calendar (inline date picker)
| S | M | T | W | T | F | S |
|---|---|---|---|---|---|---|
26 | 27 | 28 | 29 | 30 | 31 | 1 |
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 | 31 | 1 | 2 | 3 | 4 | 5 |
Jan | Feb | Mar | Apr |
May | Jun | Jul | Aug |
Sep | Oct | Nov | Dec |
slotRecipe · richTextEditor
Rich text
The show-notes editor. Bold, italic, H1–H3, paragraph, bulleted, numbered and checklist, undo/redo — nothing else, so the document schema and the toolbar can never disagree. Toggle Edit to see view mode: identical typography, no chrome, so switching never reflows the notes.
Editor / view mode
recipe · badge / status
Status & badges
Show status
Badges
Voter count · chips · avatar
recipe · alert / toast / slider / countdown
Feedback & live controls
Alerts replace the old ad-hoc error text. The vote slider & countdown are the most-used voter controls.
slotRecipe · card / table / stat / topic-item
Cards, data & lists
Segment list (host)
Draft strategy for Round 2
On airTrade deadline reactions
History table
| Segment | Score | Voters | Votes | Started |
|---|---|---|---|---|
| NBA Playoffs | 9.0 | 142 | 88 | Jul 28, 8:14 PM |
| Draft strategy | 6.4 | 120 | 61 | Jul 28, 8:31 PM |
| Ref controversy | 3.1 | 98 | 40 | Jul 28, 8:52 PM |
| General discussion | – | – | – | open |
Cards, stats, tabs & empty state
7.4
Interest
128
Active voters
No segments yet
Add a segment to start scoring.
recipe · poll (deferred §13.2)
Polls
A host-initiated one-off question — multiple choice or a 1–10 rating — using the accent (magenta) palette so it reads as a distinct mode from the continuous interest gauge.
Option poll · choose
Who wins Sunday?
Option poll · live results
Chiefs
58%
Bills
42%
128 votes
updating live…
Rating poll · live average
7.2
average of 96 ratings