"use client"; import { useEffect, useState } from "react"; import { useRouter } from "next/navigation"; import { useAuthStore } from "@/store/auth"; import { useChatStore } from "@/store/chat"; import ChatInterface from "@/components/chat/chat-interface"; import Sidebar from "@/components/chat/sidebar"; import MobileNav from "@/components/layout/mobile-nav"; import LoadingSpinner from "@/components/ui/loading-spinner"; import { Button } from "@/components/ui/button"; import { PanelLeftClose, PanelLeftOpen } from "lucide-react"; export default function ChatPage() { const router = useRouter(); const { isAuthenticated, user, isLoading: authLoading } = useAuthStore(); const { loadSessions, sessions } = useChatStore(); const [isInitialized, setIsInitialized] = useState(false); const [sidebarOpen, setSidebarOpen] = useState(true); const [initialLoading, setInitialLoading] = useState(true); useEffect(() => { if (!authLoading && !isAuthenticated) { router.push("/login"); return; } if (isAuthenticated && !isInitialized) { loadSessions().then(() => setInitialLoading(false)); setIsInitialized(true); } }, [isAuthenticated, authLoading, isInitialized, router, loadSessions]); if (authLoading || initialLoading) { return (
); } if (!isAuthenticated) { return null; } return (
{/* Mobile overlay */} {sidebarOpen && (
setSidebarOpen(false)} /> )} {/* Sidebar — persistent on desktop, overlay on mobile */}
setSidebarOpen(false)} />
{/* Main chat area */}
{/* Toggle button */} {!sidebarOpen && ( )}
); }