import { useState, useEffect } from 'react'; import { BookOpen, Home, User, LogOut, Mic, Users, Calendar, Menu, } from 'lucide-react'; import { Button } from './ui/button'; import { useAuth } from '../lib/authContext'; import { useLanguage } from '../lib/languageContext'; import { translations } from '../lib/translations'; import { LanguageSwitcher } from './LanguageSwitcher'; import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuLabel, DropdownMenuSeparator, DropdownMenuTrigger, } from './ui/dropdown-menu'; import { Link, useLocation, useNavigate } from 'react-router-dom'; import { useQueryClient } from '@tanstack/react-query'; export function Navbar() { const { user, signOut } = useAuth(); const { language } = useLanguage(); const t = translations[language].navbar; const location = useLocation(); const navigate = useNavigate(); const queryClient = useQueryClient(); const [mobileOpen, setMobileOpen] = useState(false); const [isMobile, setIsMobile] = useState(false); useEffect(() => { const check = () => setIsMobile(window.innerWidth < 950); check(); window.addEventListener('resize', check); return () => window.removeEventListener('resize', check); }, []); if (!user) return null; const isActive = (path) => location.pathname.startsWith(path); const getNavItems = () => { switch (user.role) { case 'student': return [ { path: '/student/dashboard', label: t.dashboard, icon: Home }, { path: '/student/practice', label: t.aiPractice, icon: Mic }, { path: '/student/find-sheikh', label: t.findSheikh, icon: Users }, { path: '/student/sessions', label: t.mySessions, icon: Calendar }, ]; case 'sheikh': return [ { path: '/sheikh/dashboard', label: t.dashboard, icon: Home }, { path: '/sheikh/sessions', label: t.sessions, icon: Calendar }, { path: '/sheikh/students', label: t.students, icon: Users }, ]; case 'admin': return [ { path: '/admin/dashboard', label: t.dashboard, icon: Home }, { path: '/admin/sheikh-approval', label: t.sheikhApproval, icon: Users }, { path: '/admin/users', label: t.allUsers, icon: Users }, ]; default: return []; } }; const navItems = getNavItems(); return ( ); }