"use client"; import { useState } from "react"; import { useRouter } from "next/navigation"; import { api } from "./api"; export function ProjectsPanel({ projects }: { projects: { slug: string; name: string; description: string | null; tools: number }[] }) { const r = useRouter(); const [form, setForm] = useState({ slug: "", name: "", description: "" }); const [msg, setMsg] = useState(""); return
{ e.preventDefault(); try { await api("/api/admin/projects", { method: "POST", body: JSON.stringify(form) }); setForm({ slug: "", name: "", description: "" }); setMsg("Saved"); r.refresh(); } catch (e) { setMsg((e as Error).message); } }}>

Add / update project

setForm({ ...form, slug: e.target.value })} className="input" required pattern="[a-z0-9-]+" /> setForm({ ...form, name: e.target.value })} className="input" required />