import { useEffect, type CSSProperties, type ReactNode } from 'react'; import { Maximize2, Minimize2, X } from 'lucide-react'; import { LucentIconButton } from './LucentIconButton'; export type LucentDrawerSize = 'default' | 'expand'; interface LucentDrawerProps { open: boolean; title: string; description?: string; size?: LucentDrawerSize; onClose: () => void; onToggleSize?: () => void; children: ReactNode; footer?: ReactNode; headerActions?: ReactNode; topOffset?: number; panelClassName?: string; bodyClassName?: string; closeLabel?: string; expandLabel?: string; collapseLabel?: string; } export function LucentDrawer({ open, title, description, size = 'default', onClose, onToggleSize, children, footer, headerActions, topOffset = 0, panelClassName = '', bodyClassName = '', closeLabel = 'Close panel', expandLabel = 'Expand panel', collapseLabel = 'Collapse panel', }: LucentDrawerProps) { useEffect(() => { if (!open) return; const handleKeyDown = (event: KeyboardEvent) => { if (event.key === 'Escape') onClose(); }; document.addEventListener('keydown', handleKeyDown); return () => document.removeEventListener('keydown', handleKeyDown); }, [onClose, open]); return ( <>