8223a566e4
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.
43 lines
1.6 KiB
React
43 lines
1.6 KiB
React
function EventsTable({ events, onSelect }) {
|
|
return (
|
|
<div className="card">
|
|
<div className="card-head">
|
|
<h3>Events</h3>
|
|
<div style={{ marginLeft: 'auto', display: 'flex', gap: 8 }}>
|
|
<button className="btn ghost"><i data-lucide="filter"></i>Filter</button>
|
|
<button className="btn primary"><i data-lucide="plus"></i>New event</button>
|
|
</div>
|
|
</div>
|
|
<table className="lb">
|
|
<thead>
|
|
<tr>
|
|
<th style={{ width: 30 }}></th>
|
|
<th>EVENT</th>
|
|
<th>DATE</th>
|
|
<th>SPORT</th>
|
|
<th className="num">STARTERS</th>
|
|
<th className="num">WAVES</th>
|
|
<th>STATUS</th>
|
|
<th></th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
{events.map(e => (
|
|
<tr key={e.id} onClick={() => onSelect && onSelect(e)} style={{ cursor: 'pointer' }}>
|
|
<td><i data-lucide={e.icon} style={{ width: 14, height: 14, color: 'var(--ink-3)' }}></i></td>
|
|
<td className="name">{e.name}</td>
|
|
<td>{e.date}</td>
|
|
<td>{e.sport}</td>
|
|
<td className="num">{e.starters.toLocaleString()}</td>
|
|
<td className="num">{e.waves}</td>
|
|
<td><span className={'pill ' + e.statusClass}><span className="dot"></span>{e.status}</span></td>
|
|
<td><i data-lucide="chevron-right" style={{ width: 14, height: 14, color: 'var(--ink-4)' }}></i></td>
|
|
</tr>
|
|
))}
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
);
|
|
}
|
|
window.EventsTable = EventsTable;
|