function GeoScreen() { const [layer, setLayer] = useState("procurement"); const [selected, setSelected] = useState(null); const [metric, setMetric] = useState("value"); const values = Object.fromEntries(STATES.map(s => [s.code, metric === "value" ? s.value : s.tenders])); const layers = [ { id: "procurement", name: "GeM Procurement", icon: "trending", count: "29 states" }, { id: "revenue", name: "Revenue Collection", icon: "scale", count: "29 states" }, { id: "scheme", name: "Scheme Beneficiaries", icon: "users", count: "184.2M" }, { id: "iot", name: "IoT Devices", icon: "cpu", count: "48,242 pts" }, { id: "psu", name: "PSU Facilities", icon: "tent", count: "218 locations" }, { id: "cci", name: "Crop Insurance Claims", icon: "sun", count: "24.8K" }, ]; return (
{/* Left layers */}
Layers
Data on the map
{layers.map(l => (
setLayer(l.id)} style={{ padding: 10, borderRadius: 8, marginBottom: 4, cursor: 'pointer', background: layer === l.id ? 'var(--primary-tint)' : 'transparent', border: '1px solid ' + (layer === l.id ? 'color-mix(in oklch, var(--primary), transparent 70%)' : 'transparent') }} >
{l.name}
{l.count}
))}
Map Style
{["OpenStreetMap", "Satellite", "Terrain", "Political"].map((s, i) => (
{s}
))}
{/* Main map */}
{[{ id: "value", label: "Procurement Value" }, { id: "tenders", label: "Tender Count" }].map(m => ( ))}
Q2 FY26
{/* Legend */}
Procurement (₹ Cr)
₹80₹200₹340+
Total: ₹2,568 Cr across 29 states
{/* Zoom controls */}
{/* Right details */}
{selected ? "State detail" : "Ranked list"}
{selected ? INDIA_STATE_NAMES[selected] : "Top performers"}
{selected ? ( setSelected(null)}/> ) : (
{STATES.map((s, i) => (
setSelected(s.code)} style={{ padding: '10px 14px', borderBottom: '1px solid var(--border)', display: 'flex', alignItems: 'center', gap: 10, cursor: 'pointer' }} >
{String(i + 1).padStart(2, '0')}
{s.name}
{s.tenders} tenders
₹{s.value.toFixed(0)}
= 0 ? 'var(--ok)' : 'var(--danger)', fontWeight: 600 }}>{fmtPct(s.delta)}
))}
)}
); } function SelectedStatePanel({ code, onClose }) { const s = STATES.find(x => x.code === code) || { value: 0, tenders: 0, delta: 0, name: INDIA_STATE_NAMES[code] }; return (
Procurement Value · Q2
₹{s.value.toFixed(1)}Cr
= 0 ? 'up' : 'down'}`}>= 0 ? 'trending' : 'trendingDown'} size={13}/>{fmtPct(s.delta)} YoY

Top districts

`₹${v}Cr`} color="var(--primary)"/>

Top vendors

{["Bharat Electronics Ltd", "L&T Construction", "Tata Consultancy Svcs", "Wipro Ltd"].map((v, i) => (
{v} ₹{(28 - i * 5).toFixed(1)}Cr
))}
); } window.GeoScreen = GeoScreen;