// Admin screens batch 3 — Delivery dispatch, Analytics const Astyles3 = { fontFamily: 'Inter, -apple-system, system-ui, sans-serif' }; // ═════════════════════════════════════════════════════════════ // AD-7) DELIVERY DISPATCH BOARD // ═════════════════════════════════════════════════════════════ function AdminDelivery() { const riders = [ { name: 'Rohit K', init: 'RK', status: 'On delivery', tone: 'blue', order: '#JN-2841-09', eta: '14 min', deliveries: 8, rating: '4.9', hue: C.blue400 }, { name: 'Sameer P', init: 'SP', status: 'On delivery', tone: 'blue', order: '#JN-2840-21', eta: '6 min', deliveries: 11, rating: '4.8', hue: C.mint500 }, { name: 'Anil T', init: 'AT', status: 'Available', tone: 'mint', order: '—', eta: '—', deliveries: 6, rating: '4.7', hue: C.amber500 }, { name: 'Faisal M', init: 'FM', status: 'Returning', tone: 'amber', order: '—', eta: '4 min', deliveries: 9, rating: '4.9', hue: C.rose500 }, { name: 'Deepa R', init: 'DR', status: 'Available', tone: 'mint', order: '—', eta: '—', deliveries: 5, rating: '5.0', hue: C.navy700 }, ]; const unassigned = [ { id: '#JN-2841-12', cust: 'Nisha B', area: 'Indiranagar', items: 2, ready: 'Ready now' }, { id: '#JN-2841-15', cust: 'Arjun M', area: 'Domlur', items: 5, ready: 'Ready now' }, { id: '#JN-2841-18', cust: 'Tara S', area: 'CV Raman Nagar', items: 1, ready: 'Packing' }, ]; return ( Assign rider}>
{/* Live map */}
{[[50,60,70,50],[160,30,55,50],[260,80,60,50],[440,130,80,50],[560,60,70,50],[80,260,75,50],[280,230,65,50],[500,280,70,50],[630,160,65,50]].map(([x,y,w,h],i)=>)} {/* Store */}
{/* Riders */} {[{x:300,y:250,c:C.blue600},{x:540,y:240,c:C.mint500}].map((r,i)=>(
))} {/* Destinations */} {[{x:620,y:180},{x:340,y:110}].map((d,i)=>(
))}
Live · 2 active deliveries
{/* Right: unassigned + riders */}
{/* Unassigned */}
Unassigned
3
{unassigned.map((u, i) => (
{u.id}
{u.cust} · {u.area} · {u.items} items
))}
{/* Riders */}
Riders on shift · 5
{riders.map((r, i) => (
{r.init}
{r.name} {r.rating}
{r.order !== '—' ? {r.order} · ETA {r.eta} : `${r.deliveries} today`}
))}
); } // ═════════════════════════════════════════════════════════════ // AD-8) ANALYTICS // ═════════════════════════════════════════════════════════════ function AdminAnalytics() { return (
This month
}> {/* KPI strip */}
{[ { l: 'Gross revenue', v: '₹52.4L', d: '+18.2%', up: true }, { l: 'Total orders', v: '9,840', d: '+12.4%', up: true }, { l: 'New customers', v: '1,240', d: '+22.0%', up: true }, { l: 'Refund rate', v: '1.8%', d: '−0.4%', up: true }, ].map((k, i) => (
{k.l}
{k.v} {k.up ? '▲' : '▼'} {k.d}
))}
{/* Revenue trend (line-ish area via bars) + funnel */}
Revenue trend
This month Last month
{/* dual bars */}
{[ { l: 'W1', a: 60, b: 52 }, { l: 'W2', a: 78, b: 64 }, { l: 'W3', a: 92, b: 70 }, { l: 'W4', a: 100, b: 82 }, ].map((d, i) => (
{d.l}
))}
{/* Conversion funnel */}
Conversion funnel
{[ { l: 'App / site visits', v: '128,400', p: 100, c: C.blue300 }, { l: 'Product views', v: '84,200', p: 66, c: C.blue400 }, { l: 'Added to cart', v: '38,100', p: 30, c: C.blue500 }, { l: 'Checkout started', v: '14,800', p: 12, c: C.blue600 }, { l: 'Orders placed', v: '9,840', p: 8, c: C.navy800 }, ].map((s, i) => (
{s.l} {s.v}
))}
{/* Bottom: top products + cities */}
Top-selling products
{[ { name: 'Dolo 650', cat: 'Pain relief', units: '4,820', hue: 'blue' }, { name: 'Metformin SR 500', cat: 'Diabetes', units: '3,640', hue: 'mint' }, { name: 'Vitamin D3 60K', cat: 'Vitamins', units: '2,910', hue: 'amber' }, { name: 'Pan-D', cat: 'Digestive', units: '2,180', hue: 'rose' }, ].map((p, i) => (
{i + 1}
{p.name}
{p.cat}
{p.units}
))}
Orders by area
{[ { l: 'Indiranagar', p: 88, v: '2,140' }, { l: 'Koramangala', p: 72, v: '1,820' }, { l: 'HSR Layout', p: 64, v: '1,560' }, { l: 'Whitefield', p: 48, v: '1,180' }, { l: 'Marathahalli', p: 36, v: '920' }, ].map((r, i) => (
{r.l} {r.v}
))}
); } Object.assign(window, { AdminDelivery, AdminAnalytics });