import { useState } from "react"; import { useNavigate } from "react-router"; import LogoutOutlinedIcon from "@mui/icons-material/LogoutOutlined"; import SettingsOutlinedIcon from "@mui/icons-material/SettingsOutlined"; import { AppBar, Box, Divider, ListItemIcon, ListItemText, Menu, MenuItem, Toolbar, Typography, } from "@mui/material"; import { ChevronDown, Menu as MenuIcon } from "lucide-react"; import { useAuthContext } from "@/providers/auth-context"; import { getPrimaryUserRole } from "@/lib/auth/user-utils"; type AppTopbarProps = { onToggleNav: () => void; }; export function AppTopbar({ onToggleNav }: AppTopbarProps) { const navigate = useNavigate(); const { user, logout } = useAuthContext(); const [userAnchor, setUserAnchor] = useState(null); const handleLogout = () => { setUserAnchor(null); logout(); }; const userInitials = user?.fullname ? user.fullname .split(" ") .map((part) => part[0]) .join("") .slice(0, 2) .toUpperCase() : "U"; const userRole = getPrimaryUserRole(user?.userRoles); return ( setUserAnchor(event.currentTarget)} sx={{ display: "flex", alignItems: "center", flexShrink: 0, gap: "10px", py: "5px", pl: "6px", pr: "10px", borderRadius: "9999px", border: "none", cursor: "pointer", backgroundColor: "transparent", color: "var(--color-header-text)", transition: "background-color var(--duration-fast, 150ms) var(--ease-default, ease)", "&:hover": { backgroundColor: "var(--color-header-chip-hover)", }, }} > {userInitials} {user?.fullname || "User"} {userRole} setUserAnchor(null)} transformOrigin={{ horizontal: "right", vertical: "top" }} anchorOrigin={{ horizontal: "right", vertical: "bottom" }} slotProps={{ paper: { sx: { width: 260, mt: 1, boxShadow: "var(--shadow-lg)" }, }, }} > {userInitials} {user?.fullname || "User"} {user?.email || ""} { setUserAnchor(null); navigate("/settings/dropdowns"); }} > Settings Logout ); }