import { useEffect } from "react"; import { MapContainer, TileLayer, Marker, useMap, useMapEvents } from "react-leaflet"; import L from "leaflet"; // Leaflet's default marker icons break under bundlers; build a crisp SVG pin. const pinIcon = L.divIcon({ className: "", html: `
`, iconSize: [26, 34], }); const CARTO_DARK = "https://{s}.basemaps.cartocdn.com/dark_all/{z}/{x}/{y}{r}.png"; function ClickCapture({ onPick }: { onPick: (lat: number, lng: number) => void }) { useMapEvents({ click(e) { onPick( Number(e.latlng.lat.toFixed(5)), Number(e.latlng.lng.toFixed(5)) ); }, }); return null; } function Recenter({ lat, lng }: { lat: number; lng: number }) { const map = useMap(); useEffect(() => { map.setView([lat, lng], map.getZoom(), { animate: true }); }, [lat, lng, map]); return null; } export function LocationPicker({ lat, lng, onPick, }: { lat: number; lng: number; onPick: (lat: number, lng: number) => void; }) { return (
); }