'use client' import { useState, useEffect } from 'react' import { Tabs, TabsContent, TabsList, TabsTrigger } from "@/components/ui/tabs" import ExploreTemplates from './ExploreTemplates' import { Suspense } from 'react' import DashboardClient from './DashboardClient' import { Loader2 } from 'lucide-react' export default function DashboardPage() { const [projects, setProjects] = useState([]) const [loading, setLoading] = useState(true) const [error, setError] = useState(null) const [activeTab, setActiveTab] = useState("explore") const fetchProjects = async () => { try { setLoading(true) setError(null) const response = await fetch('/api/projects/list', { method: 'POST', headers: { 'Content-Type': 'application/json', }, body: JSON.stringify({ }), }) if (!response.ok) { throw new Error(`Failed to fetch projects: ${response.status}`) } const data = await response.json() setProjects(data) } catch (error) { console.error('Error fetching projects:', error) setError(error instanceof Error ? error.message : 'Failed to fetch projects') setProjects([]) } finally { setLoading(false) } } useEffect(() => { fetchProjects() }, []) const handleProjectCreated = (newProject: any) => { // Add the new project to the list without refetching setProjects(prev => [...prev, newProject]) // Switch to projects tab to show the updated list setActiveTab("projects") } const handleRefresh = () => { fetchProjects() } if (loading) { return (
Loading projects...
) } if (error) { return (
Error: {error}
) } return (

Dashboard

Create Project My Projects
) }