"use client"; import Link from "next/link"; import { useEffect } from "react"; import { useRouter } from "next/navigation"; export default function AdminLayout({ children, }: { children: React.ReactNode; }) { const router = useRouter(); const handleLogout = async () => { try { await fetch("/api/auth/logout", { method: "POST" }); router.push("/login"); router.refresh(); } catch (e) { console.error("Logout failed", e); } }; const closeAdminSidebar = () => { if (typeof window !== 'undefined' && typeof document !== 'undefined') { const offcanvasEl = document.getElementById('adminSidebar'); if (offcanvasEl && (window as any).bootstrap) { try { const bsOffcanvas = (window as any).bootstrap.Offcanvas.getInstance(offcanvasEl) || new (window as any).bootstrap.Offcanvas(offcanvasEl); if (bsOffcanvas) { bsOffcanvas.hide(); } } catch (e) { console.error('Error closing admin offcanvas:', e); offcanvasEl.classList.remove('show', 'showing'); } } } }; return (
{/* Mobile Header with Toggle Button */}
Admin Panel
{/* Sidebar (Offcanvas on mobile, visible on desktop) */}
Admin Panel
Admin Panel
{/* Main Content Area */}
{children}
); }