'use client'; import { useState, type FormEvent } from 'react'; import { useRouter } from 'next/navigation'; import { useI18n } from '@/lib/i18n/I18nProvider'; export function CreateProjectForm() { const router = useRouter(); const { t } = useI18n(); const [name, setName] = useState(''); const [description, setDescription] = useState(''); const [error, setError] = useState(null); const [loading, setLoading] = useState(false); async function onSubmit(event: FormEvent) { event.preventDefault(); setLoading(true); setError(null); const res = await fetch('/api/projects', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ name, description: description || undefined }), }); if (res.ok) { const data = (await res.json()) as { project: { id: number } }; router.push(`/projects/${data.project.id}`); return; } const body = (await res.json().catch(() => null)) as { error?: { message?: string }; } | null; setError(body?.error?.message ?? t('project.createFailed')); setLoading(false); } return (
setName(e.target.value)} className="mt-1 w-full rounded border px-3 py-2 dark:border-gray-600 dark:bg-gray-700" required maxLength={200} />
setDescription(e.target.value)} className="mt-1 w-full rounded border px-3 py-2 dark:border-gray-600 dark:bg-gray-700" />
{error && (

{error}

)}
); }