import React, { useState, useEffect } from 'react' import { Outlet, NavLink, useNavigate, useLocation } from 'react-router-dom' import { Bell, Menu, LogOut, User, Settings, Home, FolderKanban, X, CalendarDays } from 'lucide-react' interface User { email: string; password: string; } interface DashboardLayoutProps { user: User | null; setUser: React.Dispatch>; } const DashboardLayout: React.FC = ({ setUser }) => { const [isSidebarOpen, setSidebarOpen] = useState(true) const [isMobile, setIsMobile] = useState(window.innerWidth < 768) const navigate = useNavigate() const location = useLocation() // ✅ Handle responsive behavior properly useEffect(() => { const handleResize = () => { const mobile = window.innerWidth < 768 setIsMobile(mobile) setSidebarOpen(!mobile) // open on desktop, closed on mobile } handleResize() window.addEventListener('resize', handleResize) return () => window.removeEventListener('resize', handleResize) }, []) const handleLogout = () => { localStorage.removeItem('user') setUser(null) navigate('/login') } const toggleSidebar = () => setSidebarOpen(!isSidebarOpen) const closeSidebarOnMobile = () => { if (isMobile) setSidebarOpen(false) } const menuItems = [ { label: 'Dashboard', path: '/dashboard', icon: , exact: true }, { label: 'Projects', path: '/dashboard/projects', icon: }, { label: 'Leave & Adjustments', path: '/dashboard/leave-adjustments', icon: }, ] return (
{/* Sidebar */} {/* Overlay for mobile */} {isMobile && isSidebarOpen && (
)} {/* Main Content */}
{/* Navbar */} {/* Page Content */}
) } export default DashboardLayout