Sections
Contact Section
Contact form with info panel, simulated async submit, and success state
Quick Preview
Get in touch
Have a question or want to work together? We'd love to hear from you.
Contact information
Support hours
Monday โ Friday, 9 AM โ 6 PM (GMT+7)
We respond to all emails within 24 hours.
Installation
// Copy the component fromsrc/components/sections/ContactSection.tsx
Usage
import { ContactSection } from '@/components/sections/ContactSection'<ContactSectiontitle="Get in touch"info={{email: 'hello@company.com',phone: '+66 2 000 0000',address: '123 Sukhumvit Rd, Bangkok 10110',}}/>
Connecting a real API
// Replace the setTimeout in ContactSection.tsx with:async function handleSubmit(e: React.FormEvent) {e.preventDefault()setLoading(true)try {await fetch('/api/contact', {method: 'POST',headers: { 'Content-Type': 'application/json' },body: JSON.stringify(form),})setSubmitted(true)} finally {setLoading(false)}}
Prompt Preview
Copy a prompt that recreates this UI
Paste this into your AI coding assistant to generate code that closely matches the reference, including color, size, shape, typography, spacing, and polish.
Copy-ready AI prompt
Starts from the current visual reference and project constraints.
Tweak only product-specific copy or data after the first generation pass.
Props
| Prop | Type | Default | Description |
|---|---|---|---|
title | string | "Get in touch" | Section heading |
subtitle | string | - | Section sub-heading |
info | ContactInfo | - | { email?, phone?, address? } |
className | string | - | Additional CSS classes |
Features
- โTwo-column layout (info + form)
- โLoading spinner and success state
- โNative form validation
- โSupport hours callout
- โClient Component (form state)