'use client'; import { useEffect, useState } from 'react'; import { useRouter } from 'next/navigation'; import { useAuthStore } from '@/lib/auth-store'; import Sidebar from '@/components/layout/sidebar'; import Topbar from '@/components/layout/topbar'; export default function AppLayout({ children }: { children: React.ReactNode }) { const router = useRouter(); const accessToken = useAuthStore((s) => s.accessToken); // Wait for zustand to hydrate from localStorage before checking auth const [mounted, setMounted] = useState(false); useEffect(() => { setMounted(true); }, []); useEffect(() => { if (mounted && !accessToken) { router.replace('/login'); } }, [mounted, accessToken, router]); // Show nothing until hydrated (prevents flash redirect) if (!mounted) return null; if (!accessToken) return null; return (