import React, { useState } from 'react'; import { Link, useLocation, useNavigate } from 'react-router-dom'; import { useAuth } from '../contexts/AuthContext'; import { useTheme } from '../contexts/ThemeContext'; interface NavigationItem { name: string; href: string; icon: React.ReactNode; activeIcon?: React.ReactNode; } const MobileNavbar: React.FC = () => { const { user, logout, isAdmin } = useAuth(); const { toggleTheme, effectiveTheme } = useTheme(); const location = useLocation(); const navigate = useNavigate(); const [showUserMenu, setShowUserMenu] = useState(false); const navigationItems: NavigationItem[] = [ { name: 'Dashboard', href: '/dashboard', icon: ( ), activeIcon: ( ), }, { name: 'Cards', href: '/cards', icon: ( ), activeIcon: ( ), }, { name: 'Scanner', href: '/scanner', icon: ( ), activeIcon: ( ), }, { name: 'Collections', href: '/collections', icon: ( ), }, { name: 'More', href: '/menu', icon: ( ), }, ]; const handleLogout = () => { logout(); setShowUserMenu(false); navigate('/login'); }; const isActive = (path: string) => location.pathname === path; return ( <> {/* Top Header */}

TCG Vault

Hi, {user?.firstName || user?.username}

{/* Theme Toggle */} {/* User Avatar */}
{/* Bottom Navigation */} {/* User Menu Modal */} {showUserMenu && (
setShowUserMenu(false)}>
{user?.firstName?.[0] || user?.username?.[0]?.toUpperCase() || 'U'}

{user?.firstName && user?.lastName ? `${user.firstName} ${user.lastName}` : user?.username}

{user?.email}

{user?.roles.map((role) => ( {role} ))}
setShowUserMenu(false)} className="flex items-center space-x-3 p-3 rounded-xl hover:bg-surface-100 dark:hover:bg-surface-800 transition-colors" > Decks setShowUserMenu(false)} className="flex items-center space-x-3 p-3 rounded-xl hover:bg-surface-100 dark:hover:bg-surface-800 transition-colors" > Settings {isAdmin() && ( setShowUserMenu(false)} className="flex items-center space-x-3 p-3 rounded-xl hover:bg-yellow-50 dark:hover:bg-yellow-900/20 transition-colors" > Admin Panel )}
)} ); }; export default MobileNavbar;