import { useState, useEffect } from 'react'; import { CloseIcon } from '../ui/icons/CloseIcon'; import { TabButton } from '../ui/TabButton'; type DrawerTab = 'area' | 'properties' | 'pois'; interface MobileDrawerProps { onClose: () => void; renderArea: () => React.ReactNode; renderProperties: () => React.ReactNode; renderPOIs: () => React.ReactNode; } export default function MobileDrawer({ onClose, renderArea, renderProperties, renderPOIs, }: MobileDrawerProps) { const [tab, setTab] = useState('area'); // Close on Escape useEffect(() => { const handler = (e: KeyboardEvent) => { if (e.key === 'Escape') onClose(); }; window.addEventListener('keydown', handler); return () => window.removeEventListener('keydown', handler); }, [onClose]); return (
{/* Backdrop — top 10% */}
{/* Panel — bottom 90% */}
{/* Tab bar + close */}
setTab('area')} /> setTab('properties')} /> setTab('pois')} />
{/* Content */}
{tab === 'area' ? renderArea() : tab === 'properties' ? renderProperties() : renderPOIs()}
); }