import type { LiveStreamData } from '../../types' import type { LiveTimingRow } from '../../lib/live' import { extrapolateClock, liveSessionDisplay } from '../../lib/live' import { WeatherStrip } from './WeatherStrip' interface Props { isLive: boolean snapshot: LiveStreamData rows: LiveTimingRow[] connection: 'connected' | 'connecting' | 'disconnected' | 'error' now: number } export function SessionBanner({ isLive, snapshot, rows, connection, now }: Props) { const session = snapshot.Session const clock = extrapolateClock(snapshot.Clock, snapshot.ClockRefTime, snapshot.ClockExtrapolating, now) const display = liveSessionDisplay(session, rows) const atRiskLabel = display.atRiskStart && display.atRiskEnd ? `P${display.atRiskStart}-P${display.atRiskEnd} at risk` : '' return (
{connection}

{session?.MeetingName || 'Live Timing'}

{[session?.SessionName, session?.CircuitName].filter(Boolean).join(' ยท ') || 'F1 live feed'}

{display.phaseLabel && {display.phaseLabel}}
{clock || '--:--:--'}
{display.advanceCount && {display.advanceCount} advance} {atRiskLabel && {atRiskLabel}} L{snapshot.CurrentLap || '-'}/{snapshot.TotalLaps || '-'} {isLive ? 'live' : 'stale'}
) }