import React, { useState } from 'react';
import { Layers, X, Map as MapIcon, Mountain, Bike, Wind, Ruler, Eye, Box } from 'lucide-react';
import { motion, AnimatePresence } from 'framer-motion';
export function MapLayersMenu({
mapStyleType,
setMapStyleType,
activeLayers = [],
setActiveLayers
}: {
mapStyleType?: string,
setMapStyleType?: (type: string) => void,
activeLayers?: string[],
setActiveLayers?: (layers: string[]) => void
}) {
const [isOpen, setIsOpen] = useState(false);
const details = [
{ id: 'traffic', label: 'Traffic', icon: , color: 'rose' },
{ id: 'cycling', label: 'Cycling', icon: , color: 'emerald' },
{ id: 'terrain', label: 'Terrain', icon: , color: 'amber' },
{ id: 'airquality', label: 'Air Quality', icon: , color: 'cyan' },
{ id: 'measure', label: 'Measure', icon: , color: 'indigo' },
{ id: '3dbuildings', label: '3D Buildings', icon: , color: 'purple' },
{ id: 'labels', label: 'Street Labels', icon: , color: 'orange' },
];
const mapTypes = [
{ id: 'default', label: 'Default', icon: },
{ id: 'satellite', label: 'Satellite', icon: },
{ id: 'terrain', label: 'Terrain', icon: },
{ id: 'cycling', label: 'Cycling', icon: },
{ id: 'navigation', label: 'Nav', icon: },
];
const toggleLayer = (id: string) => {
if (!setActiveLayers) return;
if (activeLayers.includes(id)) {
setActiveLayers(activeLayers.filter(l => l !== id));
} else {
setActiveLayers([...activeLayers, id]);
}
};
return (
{isOpen && (
Map Layers
Map Type
{mapTypes.map((type) => (
))}
Overlays
{details.map((detail) => {
const isActive = activeLayers.includes(detail.id);
return (
);
})}
Active Layers
{activeLayers.length > 0 ? (
activeLayers.map(layer => {
const detail = details.find(d => d.id === layer);
return detail ? (
{detail.label}
) : null;
})
) : (
No layers active
)}
)}
);
}