Files
spa/TRM_Design_System-handoff/trm-design-system/project/ui_kits/leaderboard/LiveTable.jsx
T
julian 8223a566e4 docs: import TRM design handoff + defer adoption to phase 3.8
A design handoff bundle generated by Claude Design (claude.ai/design)
on 2026-05-02. Defines the Bloomberg/F1-pit-wall aesthetic for TRM:
- ink-on-paper base + race-flag red accent (#E8412B)
- square-edged everything, sharp printed offset shadows
- mono numerics (JetBrains Mono) for any changing value
- Goldplay (real licensed font, three weights in bundle fonts/)
- four surfaces designed: dashboard / leaderboard / mobile / marketing
  (SPA scope is the first two)

The bundle is committed in-tree at TRM_Design_System-handoff/ so 3.8
has the full source material when it picks the work up. Includes:
- Top-level + project READMEs (the design spec)
- chats/chat1.md (intent + iteration history)
- colors_and_type.css (token set, drop-in for Tailwind 4 @theme)
- fonts/ (Goldplay regular/semibold/bold)
- ui_kits/ (HTML prototypes per surface)
- preview/ (per-token visual reference cards)

Updated phase-3-dogfood-readiness/README.md task 3.8 row to point at
the bundle and document the recommended approach (retheme shadcn via
CSS variable overrides + Tailwind 4 @theme, not replace).

Why deferred: foundational tokens are non-blocking for Phase 1 (login
+ placeholder home) and Phase 2 (live map without chrome). Applying
them now would either delay dogfood-blocking work or land partial
styling that gets reworked when 3.8 lands the full pass.
2026-05-02 19:11:57 +02:00

34 lines
1.1 KiB
React

function LiveTable({ rows }) {
return (
<table className="lb night">
<thead>
<tr>
<th style={{ width: 50 }}>POS</th>
<th style={{ width: 60 }}>BIB</th>
<th>NAME</th>
<th>WAVE</th>
<th className="num">SPLIT 3</th>
<th className="num">GAP TO LEAD</th>
<th className="num">PACE</th>
<th className="num">LAST</th>
</tr>
</thead>
<tbody>
{rows.map(r => (
<tr key={r.pos}>
<td style={{ fontWeight: 700, color: r.pos === 1 ? 'var(--flag)' : 'var(--night-fg)', fontSize: 14 }}>{r.pos}</td>
<td>{r.bib}</td>
<td className="name" style={{ color: 'var(--night-fg)' }}>{r.name}</td>
<td style={{ color: 'var(--night-fg-2)' }}>{r.wave}</td>
<td className="num">{r.split}</td>
<td className={'num ' + (r.gap === '—' ? '' : 'loss')}>{r.gap}</td>
<td className="num">{r.pace}</td>
<td className="num" style={{ color: 'var(--night-fg-3)' }}>{r.last}</td>
</tr>
))}
</tbody>
</table>
);
}
window.LiveTable = LiveTable;