Back to blocks
BlockContactFree

Contact Section React component

A contact section with a heading and your email, phone and address on the left, and a validated message form on the right: topic chips, a loading state driven by your onSubmit promise, inline errors and a thank-you screen.

About the Contact Section component

Contact Section is a complete get-in-touch block. The left side has an eyebrow, a title, a short description and your contact channels (email, phone, office address or live chat), each with an icon and, when you give it an href, a link. The right side is a form card with Name, Email, topic chips and a Message box.

Fields are checked when people leave them or press Send: a missing name, a malformed email and a message shorter than minMessageLength each get an inline error. onSubmit receives { name, email, topic, message }; while its promise runs the button shows a spinner and Sending..., a rejection or a returned string appears as an error above the button, and success fades to a thank-you screen with a Send another message link that clears the form.

When to use it

Use it on a contact page, at the bottom of a landing page, or on an agency or freelancer site where visitors send an enquiry.

Connect onSubmit to your API route, a form service such as Formspree or Resend, or your CRM.

Installation

Add the Contact Section component to your project with the shadcn CLI. It lands in components/contact-section.tsx as plain React + Tailwind CSS source you own and can edit.

Install
Copied!
npx shadcn@latest add @reactframe/contact-section

Or copy the source by hand and install its dependencies:

Install
Copied!
npm install motion clsx tailwind-merge

Related components

Auth Card
Free
SEO-ready
FAQ Section
Free
404 Page Section
Free
SEO-ready
Side Marquee Pricing CTA
$4
Footer Premium
Free
AI Chat Panel
$6