"use client" import { useEffect, useRef, useState } from "react" import { Button } from "@/app/_components/ui/button" import { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from "@/app/_components/ui/tooltip" import { Popover, PopoverContent, PopoverTrigger } from "@/app/_components/ui/popover" import { ChevronDown } from "lucide-react" import YearSelector from "./year-selector" import MonthSelector from "./month-selector" import CategorySelector from "./category-selector" // Import all the icons we need import { AlertTriangle, Shield, FileText, Users, Map, BarChart2, Clock, Filter, Search, RefreshCw, Layers, Siren, BadgeAlert, FolderOpen, } from "lucide-react" import { ITopTooltipsMapId } from "./map-tooltips" interface TopControlProps { onControlChange?: (controlId: ITopTooltipsMapId) => void activeControl?: string selectedYear: number setSelectedYear: (year: number) => void selectedMonth: number | "all" setSelectedMonth: (month: number | "all") => void selectedCategory: string | "all" setSelectedCategory: (category: string | "all") => void availableYears?: (number | null)[] categories?: string[] } export default function TopControl({ onControlChange, activeControl, selectedYear, setSelectedYear, selectedMonth, setSelectedMonth, selectedCategory, setSelectedCategory, availableYears = [2022, 2023, 2024], categories = [], }: TopControlProps) { const [showSelectors, setShowSelectors] = useState(false) const containerRef = useRef(null) const [isClient, setIsClient] = useState(false) const container = isClient ? document.getElementById("root") : null useEffect(() => { // This will ensure that the document is only used in the client-side context setIsClient(true) }, []) // Define the primary crime data controls const crimeControls = [ { id: "incidents" as ITopTooltipsMapId, icon: , label: "All Incidents" }, { id: "heatmap" as ITopTooltipsMapId, icon: , label: "Crime Heatmap" }, { id: "trends" as ITopTooltipsMapId, icon: , label: "Crime Trends" }, { id: "patrol" as ITopTooltipsMapId, icon: , label: "Patrol Areas" }, { id: "clusters" as ITopTooltipsMapId, icon: , label: "Clusters" }, { id: "timeline" as ITopTooltipsMapId, icon: , label: "Time Analysis" }, ] // Define the additional tools and features const additionalControls = [ { id: "refresh" as ITopTooltipsMapId, icon: , label: "Refresh Data" }, { id: "search" as ITopTooltipsMapId, icon: , label: "Search Cases" }, { id: "alerts" as ITopTooltipsMapId, icon: , label: "Active Alerts" }, { id: "layers" as ITopTooltipsMapId, icon: , label: "Map Layers" }, ] const toggleSelectors = () => { setShowSelectors(!showSelectors) } return (
{/* Main crime controls */}
{crimeControls.map((control) => (

{control.label}

))}
{/* Additional controls */}
{additionalControls.map((control) => (

{control.label}

))} {/* Filters button */}
Year:
Month:
Category:
{/* Selectors row - visible when expanded */} {showSelectors && (
)}
) }