"use client"; import { useAuth } from "@/contexts/AuthContext"; import { useRouter } from "next/navigation"; import { useEffect, useState } from "react"; import { Loading } from "@/components/ui/Loading"; import toast from "react-hot-toast"; import { LogOut, Ticket, BarChart3, User, ChevronDown } from "lucide-react"; import Link from "next/link"; import { usePathname } from "next/navigation"; import Logo from "@/components/Logo"; export default function EmployeLayout({ children, }: { children: React.ReactNode; }) { const { user, isAuthenticated, isLoading, logout } = useAuth(); const router = useRouter(); const pathname = usePathname(); const [dropdownOpen, setDropdownOpen] = useState(false); useEffect(() => { if (!isLoading && !isAuthenticated) { router.push("/login"); return; } if (isAuthenticated && user?.role !== "EMPLOYEE") { router.push("/"); toast.error("Accès refusé : rôle employé requis"); return; } }, [isLoading, isAuthenticated, user, router]); // Close dropdown when clicking outside useEffect(() => { const handleClickOutside = (event: MouseEvent) => { const target = event.target as HTMLElement; if (!target.closest('.user-dropdown')) { setDropdownOpen(false); } }; if (dropdownOpen) { document.addEventListener('mousedown', handleClickOutside); } return () => { document.removeEventListener('mousedown', handleClickOutside); }; }, [dropdownOpen]); const handleLogout = async () => { await logout(); router.push("/login"); }; if (isLoading) { return (
); } if (!isAuthenticated || user?.role !== "EMPLOYEE") { return null; } const navItems = [ { label: "Validation des Tickets", href: "/employe/verification", icon: , }, { label: "Dashboard", href: "/employe/dashboard", icon: , }, ]; const isActive = (href: string) => pathname === href; return (
{/* Sidebar */} {/* Main Content */}
{/* Header */}

Thé Tip Top - Espace Employé

{/* User Dropdown */}
{/* Dropdown Menu */} {dropdownOpen && (
setDropdownOpen(false)} className="flex items-center gap-3 px-4 py-3 hover:bg-gray-100 transition-colors" > Profil
)}
{/* Page Content */}
{children}
); }