Event Grid

Enriched market cards — title, per-outcome live odds, countdown, flying bets — from useEvents(). Odds and bets stream over the shared socket.

loading markets…
const { events, loading } = useEvents({ limit: 12 }, { refreshMs: 20_000 })

return <div className="grid">
  {events.map(e => <EventCard key={e.id} event={e} />)}
</div>