/sleep-card-lab
Sleep Card
Hover any column · tooltip follows cursor · three variants
Live · shipped 2026-05-23
N2SleepCell · @iudofia2026/n2/cardsThe full Sleep Card exactly as it renders in the Octa Tauri app, at dashboard width (340px → 7-day window). Hover any of the three top-row stats (Score, Duration, HRV) for an animated sparkline tooltip. Click any chart column to pin that day — top stat row, legend bar, and chart column all rebind; click the same column or anywhere outside the cell to unpin. All numeric values smooth-tween between pinned days. (Below 260px the cell auto-switches to a 3-day window — that's the dashboard's tablet/mobile fallback.)
Sleep
7-day · May 9–15Score band < 80 / < 60 · HRV band z > 1 / |z| ≤ 1 / z < -1 / z < -2 · Tooltip primitives: N2ScoreStat · N2DurationStat · N2HrvStat (all via shared N2HoverStat)
Current
as shipped in octa/desktopFull data · sleep + HRV + load
No sleep · load only
Sleep · amber HRV · mixed load
Stage legend · Deep (above lifetime)
Stage legend · REM (below lifetime)
HRV training ring · above each sleep column
Center dot = HRV z-score signal (sole chromatic element, colorblind-safe).
Outer arcs = prior-day training load, brightness-stepped N2 structural palette.
no load
bike 20mi
mixed load
lift only
Proposed
Jobs/Ive · Sketch A refined · debate 2026-05-15Stage label + delta in header · tonight hero 20px · two baselines one dim line, no labels
DEEP
REM
LIGHT
AWAKE
Full breakdown — stage rows with minutes + %, total footer
Sleep · 7-day · May 8–14
All variants — static preview
Default
Compact
Minimal
No data
Stage legend tooltips
Hover any label — tonight vs 7-day avg vs lifetime avg
Explorations
Jobs/Ive · 3 rounds · 7 sketches · May 15 2026G is the winner. Blue outline marks it.
A — Text only
Prior winner. No visual.
B — Donut side
Rejected: wrong frame, too wide (192px).
C — Donut centered
Rejected: 64px mass competes with number.
D — Invisible bar
Rejected: other stages #1f1f1f — invisible.
E — 4px arch bar
Strong. Gaps add height. Narrowly lost to G.
F — 2px divider
Rejected: ambiguous — divider or chart?
G — WINNER — 3px bar flush
3px, no gaps, zero imports. Answers AWAKE edge case.