import React, { useState, useRef, useEffect } from 'react'; import { User, LogOut, ChevronDown, Shield, Clock } from 'lucide-react'; import { useAuth } from '../contexts/AuthContext'; export default function UserMenu({ onManageUsers, onAuditLog }) { const { user, logout, isAdmin } = useAuth(); const [isOpen, setIsOpen] = useState(false); const menuRef = useRef(null); // Close menu when clicking outside useEffect(() => { function handleClickOutside(event) { if (menuRef.current && !menuRef.current.contains(event.target)) { setIsOpen(false); } } document.addEventListener('mousedown', handleClickOutside); return () => document.removeEventListener('mousedown', handleClickOutside); }, []); const getRoleBadgeColor = (role) => { switch (role) { case 'admin': return 'bg-red-100 text-red-800'; case 'editor': return 'bg-blue-100 text-blue-800'; default: return 'bg-gray-100 text-gray-800'; } }; const handleLogout = async () => { setIsOpen(false); await logout(); }; const handleManageUsers = () => { setIsOpen(false); if (onManageUsers) { onManageUsers(); } }; const handleAuditLog = () => { setIsOpen(false); if (onAuditLog) { onAuditLog(); } }; if (!user) return null; return (
{isOpen && (

{user.username}

{user.email}

{user.role.charAt(0).toUpperCase() + user.role.slice(1)}
{isAdmin() && ( <> )}
)}
); }