/* Admin → Pickup Manager: live dismissal queue control */ function PickupManagerScreen() { const init = [ { n:'EJ Hatten', g:'Grade 6', method:'Car Rider', lane:'Lane 2', t:'3:30 PM', state:'waiting', c:'green' }, { n:'James Walker', g:'Grade 7', method:'Car Rider', lane:'Lane 1', t:'3:31 PM', state:'waiting', c:'navy' }, { n:'Liam Carter', g:'Grade 8', method:'Bus #12', lane:'Bus Bay', t:'3:32 PM', state:'onbus', c:'blue' }, { n:'Sophia Perez', g:'Grade 6', method:'Walker', lane:'Gate A', t:'3:31 PM', state:'released', c:'gold' }, { n:'Ava Mitchell', g:'Grade 7', method:'Car Rider', lane:'Lane 3', t:'3:33 PM', state:'waiting', c:'red' }, ]; const [rows, setRows] = React.useState(init); const release = (i) => setRows(rs => rs.map((r,idx)=> idx===i ? { ...r, state:'released' } : r)); const [arrived, setArrived] = React.useState({}); React.useEffect(() => { const read = () => { try { const pk = JSON.parse(localStorage.getItem('jl_pickup') || '{}'); const byName = {}; Object.values(pk).forEach(v => { if (v && v.arrived) byName[v.name] = v; }); setArrived(byName); } catch(e){} }; read(); const onStore = (e) => { if (e.key === 'jl_pickup') read(); }; window.addEventListener('storage', onStore); const iv = setInterval(read, 1500); return () => { window.removeEventListener('storage', onStore); clearInterval(iv); }; }, []); const counts = { arrived: rows.filter(r=>arrived[r.n] && r.state!=='released').length, waiting: rows.filter(r=>r.state==='waiting').length, released: rows.filter(r=>r.state==='released').length, }; const stateMeta = { waiting: { label:'Waiting', bg:'var(--gray-200)', fg:'var(--gray-600)' }, onbus: { label:'On Bus', bg:'var(--blue-100)', fg:'var(--blue-600)' }, released: { label:'Released', bg:'var(--success-100)', fg:'var(--success-600)' }, }; return (