'use client'; import { useState, useEffect } from 'react'; import Link from 'next/link'; import { Button } from '@/components/ui/button'; import { ThemeToggle } from '@/components/shared/ThemeToggle'; import { PageTransition } from '@/components/shared/PageTransition'; import ProtectedRoute from '@/components/shared/ProtectedRoute'; import { useAuth } from '@/components/shared/AuthContext'; import { ChevronLeftIcon, ChevronRightIcon, LayoutDashboardIcon, CoinsIcon, TargetIcon, SettingsIcon, LogOutIcon, MenuIcon } from 'lucide-react'; import { usePathname } from 'next/navigation'; export default function MainLayout({ children, }: Readonly<{ children: React.ReactNode; }>) { const pathname = usePathname(); const { user, logout } = useAuth(); const [isSidebarCollapsed, setIsSidebarCollapsed] = useState(false); const [isMobileMenuOpen, setIsMobileMenuOpen] = useState(false); useEffect(() => { // Load sidebar state from localStorage const savedSidebarState = localStorage.getItem('sidebarCollapsed'); if (savedSidebarState !== null) { setIsSidebarCollapsed(savedSidebarState === 'true'); } }, []); // Close mobile menu when changing routes useEffect(() => { setIsMobileMenuOpen(false); }, [pathname]); const handleLogout = () => { logout(); }; const toggleSidebar = () => { const newState = !isSidebarCollapsed; setIsSidebarCollapsed(newState); localStorage.setItem('sidebarCollapsed', newState.toString()); }; const toggleMobileMenu = () => { setIsMobileMenuOpen(!isMobileMenuOpen); }; return (
{/* Top Navigation */}
{/* Mobile menu button - only visible on small screens */}
Finance Management
{user?.Name}
{/* Mobile Menu - outside the normal flow and only visible when toggled */}
{/* Main Content */}
{/* Sidebar - hidden on mobile */} {/* Page Content */}
{children}
); }