import { useEffect, useState } from 'react'; import { useNavigate } from 'react-router-dom'; import { Code2, Folder, ArrowRight } from 'lucide-react'; import type { Project, Session } from '@/api/types'; import { api } from '@/api/client'; export function Home() { const navigate = useNavigate(); const [projects, setProjects] = useState([]); const [sessions, setSessions] = useState([]); const [selectedProject, setSelectedProject] = useState(null); const [loading, setLoading] = useState(true); // Fetch projects on mount useEffect(() => { api.projects .list({ status: 'open' }) .then(setProjects) .catch(console.error) .finally(() => setLoading(false)); }, []); // Fetch sessions when a project is selected useEffect(() => { if (!selectedProject) { setSessions([]); return; } api.sessions .listForProject(selectedProject, 'open') .then(setSessions) .catch(console.error); }, [selectedProject]); const handleSessionClick = (session: Session) => { navigate(`/sessions/${session.id}`); }; if (loading) { return (
Loading...
); } return (
{/* Header */}

BooCoder

{/* Projects list */}

Projects

{projects.length === 0 ? (

No projects found. Create one in BooChat first.

) : (
{projects.map((project) => ( ))}
)}
{/* Sessions list */} {selectedProject && (

Sessions

{sessions.length === 0 ? (

No open sessions. Create one in BooChat first.

) : (
{sessions.map((session) => ( ))}
)}
)}
); }