import React, { useState } from 'react'; import { Avatar, Popover, Stack, UnstyledButton, Group, Text, Divider, } from '@mantine/core'; import { IconUser, IconUsers, IconLogout, IconSettings, } from '@tabler/icons-react'; import { useAuth } from '../../contexts/AuthContext'; import AccountSettings from '../settings/account/AccountSettings'; import AdminDashboard from '../settings/admin/AdminDashboard'; import { UserRole } from '@/types/models'; import { getHoverStyle } from '@/utils/themeStyles'; const UserMenu: React.FC = () => { const [accountSettingsOpened, setAccountSettingsOpened] = useState(false); const [adminDashboardOpened, setAdminDashboardOpened] = useState(false); const [opened, setOpened] = useState(false); const { user, logout } = useAuth(); const handleLogout = async (): Promise => { await logout(); }; return ( <> setOpened((o) => !o)} > {/* User Info Section */}
{user?.displayName || user?.email}
{/* Menu Items */} { setAccountSettingsOpened(true); setOpened(false); }} px="sm" py="xs" style={(theme) => getHoverStyle(theme)} > Account Settings {user?.role === UserRole.Admin && ( { setAdminDashboardOpened(true); setOpened(false); }} px="sm" py="xs" style={(theme) => getHoverStyle(theme)} > Admin Dashboard )} { void handleLogout(); setOpened(false); }} px="sm" py="xs" color="red" style={(theme) => getHoverStyle(theme)} > Logout
setAccountSettingsOpened(false)} /> setAdminDashboardOpened(false)} /> ); }; export default UserMenu;