Alpine Registry Template
blockcontact-formsource: ok · refreshed
Contact Form
A contact form with name, email, and message fields.
npx shadcn add "https://alpine-registry.vercel.app/r/contact-form.json"free
Where it goes
contact
Tags auto-generated by rules on 9/24/2026 — empty means no evidence, not lack of support.
Files1 · source cached 10/2/2026, 1:32:59 AM
registry/alpine/forms/contact-form.tsx
import { Label } from "@/registry/alpine/ui/label"
import { Input } from "@/registry/alpine/ui/input"
import { Textarea } from "@/registry/alpine/ui/textarea"
import { Button } from "@/registry/alpine/ui/button"
import {
Card,
CardContent,
CardDescription,
CardHeader,
CardTitle,
} from "@/registry/alpine/ui/card"
export function ContactForm() {
return (
<Card className="w-full max-w-md">
<CardHeader>
<CardTitle>Contact Us</CardTitle>
<CardDescription>
We would love to hear from you. Please fill out the form below and we
will get back to you as soon as possible.
</CardDescription>
</CardHeader>
<CardContent>
<form className="flex flex-col gap-6">
<div className="flex flex-col gap-3">
<Label htmlFor="name">Name</Label>
<Input id="name" placeholder="Name" />
</div>
<div className="flex flex-col gap-3">
<Label htmlFor="email">Email</Label>
<Input id="email" placeholder="Email" />
</div>
<div className="flex flex-col gap-3">
<Label htmlFor="message">Message</Label>
<Textarea id="message" placeholder="Message" />
</div>
<Button type="submit">Submit</Button>
</form>
</CardContent>
</Card>
)
}