import { useQuery } from '@tanstack/react-query' import { Link } from '@tanstack/react-router' import { fetchNews } from '../api' import { timeAgo } from '../utils' const SOURCE_DISPLAY: Record = { 'fia': 'FIA', 'bbc-f1': 'BBC Sport', 'autosport-f1': 'Autosport', 'racefans-f1': 'RaceFans', 'guardian-f1': 'Guardian', 'racer-f1': 'RACER', 'f1-youtube': 'F1 YouTube', } export function PaddockBriefing() { const { data: news, isLoading, isError } = useQuery({ queryKey: ['news'], queryFn: () => fetchNews(100), staleTime: 60_000, }) const unreadCount = news?.filter((i) => !i.read_at).length ?? 0 const preview = news?.slice(0, 5) ?? [] return (
Paddock Briefing {unreadCount > 0 && ( {unreadCount} )} View all →
{isLoading &&
loading…
} {isError &&
Failed to load briefing
} {!isLoading && !isError && preview.length === 0 && (
No items. Run box-box --ingest-news to populate.
)} {preview.length > 0 && (
{preview.map((item) => (
{SOURCE_DISPLAY[item.source] ?? item.source} {timeAgo(item.published_at ?? item.fetched_at)}
{item.title} ))}
)}
) }