"use client"; import { useState, useTransition } from "react"; import { Plus } from "lucide-react"; import { createProject } from "@/app/actions/projects"; import type { ClientRecord } from "@/lib/pb/types"; export function NewProjectForm({ clients }: { clients: ClientRecord[] }) { const [open, setOpen] = useState(false); const [clientId, setClientId] = useState(clients[0]?.id ?? ""); const [name, setName] = useState(""); const [description, setDescription] = useState(""); const [repoOwner, setRepoOwner] = useState(""); const [repoName, setRepoName] = useState(""); const [pending, startTransition] = useTransition(); const [error, setError] = useState(null); if (clients.length === 0) { return (

Create a client first.

); } function submit(event: React.FormEvent) { event.preventDefault(); if (!name.trim() || !clientId) return; setError(null); startTransition(async () => { try { await createProject({ clientId, name, description, repoOwner, repoName, color: "#2f6dad", }); setName(""); setDescription(""); setRepoOwner(""); setRepoName(""); setOpen(false); } catch (e) { setError(e instanceof Error ? e.message : "Could not create that project"); } }); } if (!open) { return ( ); } const field = "w-full rounded-lg border border-border-subtle bg-panel px-3 py-2 text-sm text-text-primary outline-none focus:border-brand"; return (