'use client' import { useState } from 'react' import { useRouter } from 'next/navigation' import { createClient } from '@/lib/supabase/client' export default function NewProjectButton() { const [isOpen, setIsOpen] = useState(false) const [projectName, setProjectName] = useState('') const [isLoading, setIsLoading] = useState(false) const [error, setError] = useState(null) const router = useRouter() const handleOpen = () => { setIsOpen(true) setProjectName('') setError(null) } const handleClose = () => { if (!isLoading) { setIsOpen(false) setProjectName('') setError(null) } } const handleSubmit = async (e: React.FormEvent) => { e.preventDefault() if (!projectName.trim()) { setError('Project name is required') return } setIsLoading(true) setError(null) const supabase = createClient() const { data: { user }, } = await supabase.auth.getUser() if (!user) { setError('You must be logged in to create a project') setIsLoading(false) return } const { data, error: insertError } = await supabase .from('projects') .insert({ user_id: user.id, name: projectName.trim(), flowchart_data: { nodes: [], edges: [] }, }) .select('id') .single() if (insertError) { setError(insertError.message || 'Failed to create project') setIsLoading(false) return } if (data) { router.push(`/editor/${data.id}`) } } return ( <> {isOpen && (
)} ) }