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 getGroupBadgeColor = (group) => { switch (group) { case 'Admin': return 'bg-red-100 text-red-800'; case 'Standard_User': return 'bg-blue-100 text-blue-800'; case 'Leadership': return 'bg-purple-100 text-purple-800'; case 'Read_Only': return 'bg-gray-100 text-gray-800'; default: return 'bg-gray-100 text-gray-800'; } }; const formatGroupName = (group) => { if (!group) return ''; return group.replace(/_/g, ' '); }; 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 (
{user.username}
{user.email}
{formatGroupName(user.group)}