'use client'; import { useRef, useEffect } from 'react'; export interface DropdownMenuItem { label: string; onClick: () => void; danger?: boolean; } interface ChatDropdownMenuProps { items: DropdownMenuItem[]; isOpen: boolean; onClose: () => void; } export function ChatDropdownMenu({ items, isOpen, onClose }: ChatDropdownMenuProps) { const menuRef = useRef(null); useEffect(() => { if (!isOpen) return; const handleClickOutside = (e: MouseEvent) => { if (menuRef.current && !menuRef.current.contains(e.target as Node)) { onClose(); } }; const handleEscape = (e: KeyboardEvent) => { if (e.key === 'Escape') onClose(); }; document.addEventListener('mousedown', handleClickOutside); document.addEventListener('keydown', handleEscape); return () => { document.removeEventListener('mousedown', handleClickOutside); document.removeEventListener('keydown', handleEscape); }; }, [isOpen, onClose]); if (!isOpen) return null; return (
{items.map((item, index) => ( ))}
); }