import React, {useState, useRef, useEffect, useContext} from 'react'; import {SignOutIcon, CaretDownIcon, UserIcon} from '@phosphor-icons/react'; import {UserContext} from '@/common/contexts/UserContext.jsx'; import './styles.sass'; export const ProfileMenu = () => { const {logout, user} = useContext(UserContext); const [isOpen, setIsOpen] = useState(false); const menuRef = useRef(null); useEffect(() => { const handleClickOutside = (event) => { if (menuRef.current && !menuRef.current.contains(event.target)) { setIsOpen(false); } }; document.addEventListener('mousedown', handleClickOutside); return () => { document.removeEventListener('mousedown', handleClickOutside); }; }, []); useEffect(() => { const handleEscapeKey = (event) => { if (event.key === 'Escape') { setIsOpen(false); } }; if (isOpen) { document.addEventListener('keydown', handleEscapeKey); return () => { document.removeEventListener('keydown', handleEscapeKey); }; } }, [isOpen]); const handleLogout = () => { setIsOpen(false); logout(); }; const toggleMenu = () => { setIsOpen(!isOpen); }; return (
{isOpen && (
{user.username}
{user.role === 'admin' ? 'Administrator' : 'User'}
)}
); };