"use client"; import { useEffect, useState } from "react"; import { useRouter } from "next/navigation"; import { useAuth } from "@/lib/auth"; import { Sidebar } from "@/components/Sidebar"; import { Spinner, Button } from "@/components/ui"; import { ThemeToggle } from "@/components/ThemeToggle"; import { LogoutIcon, MenuIcon, CloseIcon } from "@/components/icons"; export default function DashboardLayout({ children, }: { children: React.ReactNode; }) { const { token, ready, logout } = useAuth(); const router = useRouter(); const [mobileOpen, setMobileOpen] = useState(false); // Client-side route protection (static export has no server to gate on). useEffect(() => { if (ready && !token) router.replace("/login"); }, [ready, token, router]); if (!ready || !token) { return (
); } function onLogout() { logout(); router.replace("/login"); } return (
{/* Desktop sidebar */} {/* Mobile drawer */} {mobileOpen && (
setMobileOpen(false)} />
)}
{children}
); }