import { useEffect, useState } from 'react' import { useParams, useNavigate } from 'react-router-dom' import { ArrowLeft, RefreshCw, Bell } from 'lucide-react' import { fetchSnapshot, fetchPendingOrders } from '../api' import StatCard from '../components/StatCard' import OrderCard from '../components/OrderCard' const POLL_MS = 15_000 export default function DashboardPage() { const { siteId } = useParams() const navigate = useNavigate() const [snapshot, setSnapshot] = useState(null) const [pending, setPending] = useState([]) const [lastUpdated, setLastUpdated] = useState(null) const [loading, setLoading] = useState(true) async function load() { try { const [snap, orders] = await Promise.all([ fetchSnapshot(siteId).catch(() => null), fetchPendingOrders(siteId).catch(() => []), ]) setSnapshot(snap ? JSON.parse(snap.snapshot_json) : null) setPending(orders) setLastUpdated(new Date()) } finally { setLoading(false) } } useEffect(() => { load() const timer = setInterval(load, POLL_MS) return () => clearInterval(timer) }, [siteId]) const stats = snapshot || {} return (
{/* Header */}

Dashboard

{/* Stats grid */}
0 ? 'text-amber-600' : 'text-slate-800'} />
{lastUpdated && (

Updated {lastUpdated.toLocaleTimeString()}

)} {/* Pending orders */}

Pending orders {pending.length > 0 && ( {pending.length} )}

{loading ? (
) : pending.length === 0 ? (
No pending orders
) : ( pending.map(o => ) )}
) }