"use client";
import { useState, type FormEvent } from "react";
export default function ContactForm() {
const [status, setStatus] = useState<"idle" | "sending" | "success" | "error">("idle");
async function onSubmit(e: FormEvent<HTMLFormElement>) {
e.preventDefault();
setStatus("sending");
const body = new FormData(e.currentTarget);
body.append("apiKey", "YOUR_API_KEY");
const res = await fetch("https://api.staticforms.dev/submit", {
method: "POST",
body,
});
setStatus(res.ok ? "success" : "error");
}
if (status === "success") {
return <p>Thank you! Your message has been sent.</p>;
}
return (
<form onSubmit={onSubmit} className="space-y-4 max-w-md">
<input name="name" placeholder="Name" required className="w-full border p-2 rounded" />
<input name="email" type="email" placeholder="Email" required className="w-full border p-2 rounded" />
<textarea name="message" placeholder="Message" rows={5} required className="w-full border p-2 rounded" />
{status === "error" && <p className="text-red-600">Something went wrong. Please try again.</p>}
<button disabled={status === "sending"} type="submit"
className="bg-indigo-600 text-white px-4 py-2 rounded hover:bg-indigo-700 disabled:opacity-50">
{status === "sending" ? "Sending..." : "Send Message"}
</button>
</form>
);
}