/** * A simplified, mostly-static preview of the dark Bengaluru map used in the * landing hero. Pure SVG - no map SDK, no network - so it renders instantly * and stays calm. A few glowing hexagons hint at the live "risk zones". */ type Hex = { cx: number cy: number r: number color: string delay: number } // Classification palette: calm graphite, check bronze, patrol amber-ember. const HEXES: Array = [ { cx: 168, cy: 150, r: 26, color: '#D98E04', delay: 0 }, { cx: 232, cy: 120, r: 20, color: '#8A6D3B', delay: 0.8 }, { cx: 120, cy: 210, r: 18, color: '#2A2D34', delay: 1.6 }, { cx: 250, cy: 205, r: 16, color: '#2A2D34', delay: 2.2 }, { cx: 198, cy: 240, r: 14, color: '#8A6D3B', delay: 1.2 }, ] function hexPoints(cx: number, cy: number, r: number): string { const pts: Array = [] for (let i = 0; i < 6; i++) { const a = (Math.PI / 180) * (60 * i - 30) pts.push(`${cx + r * Math.cos(a)},${cy + r * Math.sin(a)}`) } return pts.join(' ') } // A few hand-drawn "road" polylines to suggest a road network. const ROADS = [ 'M40,90 L150,140 L210,120 L320,170', 'M70,260 L160,200 L240,230 L300,210', 'M120,40 L150,140 L140,220 L170,300', 'M250,50 L232,120 L250,205 L260,290', 'M30,170 L120,180 L210,160 L330,120', ] export function MapPreview() { return (
{/* faint grid */}
{HEXES.map((h, i) => ( ))} {/* water blob */} {/* roads */} {ROADS.map((d, i) => ( ))} {/* glow halos */} {HEXES.map((h, i) => ( ))} {/* hexagons */} {HEXES.map((h, i) => ( ))} {/* corner label */}
Bengaluru ยท live preview
) }