import React, { useState, useEffect } from 'react'; import AdminSidebar from '../components/AdminSidebar'; const AdminLayout = ({ children }) => { const [sidebarOpen, setSidebarOpen] = useState(true); const [isMobile, setIsMobile] = useState(false); // Initialize sidebar state from localStorage useEffect(() => { const savedState = localStorage.getItem('adminSidebarOpen'); if (savedState !== null) { setSidebarOpen(JSON.parse(savedState)); } }, []); // Detect mobile viewport useEffect(() => { const checkMobile = () => { setIsMobile(window.innerWidth < 768); }; checkMobile(); window.addEventListener('resize', checkMobile); return () => window.removeEventListener('resize', checkMobile); }, []); // Close sidebar by default on mobile useEffect(() => { if (isMobile) { setSidebarOpen(false); } }, [isMobile]); const toggleSidebar = () => { const newState = !sidebarOpen; setSidebarOpen(newState); localStorage.setItem('adminSidebarOpen', JSON.stringify(newState)); }; const closeSidebar = () => { setSidebarOpen(false); localStorage.setItem('adminSidebarOpen', JSON.stringify(false)); }; return (
{/* Sidebar */} {/* Mobile Overlay */} {isMobile && sidebarOpen && (
)} {/* Main Content Area */}
{children}
); }; export default AdminLayout;