// src/components/layout/TopBar.jsx import { useState, useEffect, useRef } from 'react'; import { useLocation } from 'react-router-dom'; import { Menu, RefreshCw, ChevronDown, LogOut } from 'lucide-react'; import { useAuth } from '@/auth/AuthContext'; import { useQueryClient } from '@tanstack/react-query'; import clsx from 'clsx'; const PAGE_TITLES = { '/': 'Overview', '/vpgs': 'VPG Monitor', '/vms': 'VM Protection', '/vras': 'VRA Infrastructure', '/encryption': 'Encryption Detection', '/storage': 'Storage & Datastores', '/settings/users': 'User Management', '/settings': 'Settings', }; function UserMenu({ user, onLogout }) { const [open, setOpen] = useState(false); const ref = useRef(null); useEffect(() => { const handler = (e) => { if (ref.current && !ref.current.contains(e.target)) setOpen(false); }; document.addEventListener('mousedown', handler); return () => document.removeEventListener('mousedown', handler); }, []); const initials = user.name ? user.name.split(' ').map((w) => w[0]).slice(0, 2).join('').toUpperCase() : user.username.slice(0, 2).toUpperCase(); return (
{user.name}
{user.email}