"use client" import { Popup } from "react-map-gl/mapbox" import { Badge } from "@/app/_components/ui/badge" import { Card } from "@/app/_components/ui/card" import { Separator } from "@/app/_components/ui/separator" import { Button } from "@/app/_components/ui/button" import { Phone, Building, MapPin, Navigation, X, Shield, Compass, Map, Building2 } from "lucide-react" import { IDistanceResult } from "@/app/_utils/types/crimes" import { ScrollArea } from "@/app/_components/ui/scroll-area" import { Skeleton } from "@/app/_components/ui/skeleton" interface UnitPopupProps { longitude: number latitude: number onClose: () => void unit: { id: string name: string type?: string address?: string phone?: string district?: string district_id?: string } distances?: IDistanceResult[] isLoadingDistances?: boolean } export default function UnitPopup({ longitude, latitude, onClose, unit, distances = [], isLoadingDistances = false }: UnitPopupProps) { // Format distance to be more readable const formatDistance = (meters: number) => { if (meters < 1000) { return `${meters.toFixed(0)} m`; } else { return `${(meters / 1000).toFixed(2)} km`; } } return (
{/* Custom close button */}

{unit.name || "Police Unit"}

{unit.type || "Unit"}
{unit.address && (

Address

{unit.address}

)} {unit.phone && (

Contact

{unit.phone}

)} {unit.district && (

District

{unit.district}

)}
{/* Distances to incidents section */}

Nearby Incidents

{isLoadingDistances ? (
) : distances.length > 0 ? (
{distances.map((item) => (

{item.category_name || "Unknown"}

{item.incident_description || "No description"}

{formatDistance(item.distance_meters)}
))}
) : (

No incident data available

)}

Coordinates: {latitude.toFixed(6)}, {longitude.toFixed(6)}

ID: {unit.id}

) }