import { useState } from 'react'; import { Link, useLocation } from 'react-router-dom'; import { HomeIcon, DocumentsIcon, ActivityIcon, SearchIcon, SettingsIcon, GitIcon } from '../icons'; import { useAuth } from '../auth/AuthContext'; import { useGetInfo } from '../generated/anthoLumeAPIV1'; interface NavItem { path: string; label: string; icon: React.ElementType; title: string; } const navItems: NavItem[] = [ { path: '/', label: 'Home', icon: HomeIcon, title: 'Home' }, { path: '/documents', label: 'Documents', icon: DocumentsIcon, title: 'Documents' }, { path: '/progress', label: 'Progress', icon: ActivityIcon, title: 'Progress' }, { path: '/activity', label: 'Activity', icon: ActivityIcon, title: 'Activity' }, { path: '/search', label: 'Search', icon: SearchIcon, title: 'Search' }, ]; const adminSubItems: NavItem[] = [ { path: '/admin', label: 'General', icon: SettingsIcon, title: 'General' }, { path: '/admin/import', label: 'Import', icon: SettingsIcon, title: 'Import' }, { path: '/admin/users', label: 'Users', icon: SettingsIcon, title: 'Users' }, { path: '/admin/logs', label: 'Logs', icon: SettingsIcon, title: 'Logs' }, ]; // Helper function to check if pathname has a prefix function hasPrefix(path: string, prefix: string): boolean { return path.startsWith(prefix); } export default function HamburgerMenu() { const location = useLocation(); const { user } = useAuth(); const [isOpen, setIsOpen] = useState(false); const isAdmin = user?.is_admin ?? false; // Fetch server info for version const { data: infoData } = useGetInfo({ query: { staleTime: Infinity, // Info doesn't change frequently }, }); const version = infoData && 'data' in infoData && infoData.data && 'version' in infoData.data ? infoData.data.version : 'v1.0.0'; return (
{/* Checkbox input for state management */} setIsOpen(e.target.checked)} /> {/* Hamburger icon lines with CSS animations - hidden on desktop */} {/* Navigation menu with slide animation */}
); }