import React, { useState } from 'react'; import axios from 'axios'; const DEFAULT_ENDPOINT = 'https://formsubmit.co/ajax/jadeinfrapune@gmail.com'; export default function ContactForm() { const [status, setStatus] = useState({ state: 'idle', message: '' }); async function onSubmit(e) { e.preventDefault(); const form = new FormData(e.currentTarget); const payload = { name: String(form.get('name') || '').trim(), email: String(form.get('email') || '').trim(), phone: String(form.get('phone') || '').trim(), message: String(form.get('message') || '').trim() }; if (!payload.name || !payload.email || !payload.phone || !payload.message) { setStatus({ state: 'error', message: 'All fields are required. Please complete the form.' }); return; } const namePattern = /^[A-Za-z\s]{2,60}$/; if (!namePattern.test(payload.name)) { setStatus({ state: 'error', message: 'Please enter a valid name using alphabets only.' }); return; } const emailPattern = /^[^\s@]+@[^\s@]+\.[^\s@]+$/; if (!emailPattern.test(payload.email)) { setStatus({ state: 'error', message: 'Please enter a valid email address.' }); return; } const phonePattern = /^[0-9]{10}$/; if (!phonePattern.test(payload.phone)) { setStatus({ state: 'error', message: 'Please enter a valid 10-digit phone number.' }); return; } setStatus({ state: 'loading', message: '' }); try { const endpoint = import.meta.env.VITE_CONTACT_ENDPOINT || DEFAULT_ENDPOINT; const structuredMessage = [ 'New enquiry received via jadeinfra.in contact form:', '', `Name : ${payload.name}`, `Email : ${payload.email}`, `Phone : ${payload.phone}`, '', 'Message:', payload.message ].join('\n'); await axios.post( endpoint, { name: payload.name, email: payload.email, phone: payload.phone, message: payload.message, _subject: 'New enquiry via jadeinfra.in contact form', _template: 'box', _replyto: payload.email, _captcha: 'false', content: structuredMessage }, { headers: { 'Content-Type': 'application/json' } } ); setStatus({ state: 'success', message: 'Thanks! We will get back to you shortly.' }); e.currentTarget.reset(); } catch (err) { setStatus({ state: 'error', message: 'Sorry, there was an issue sending your message. Please try again or email us directly.' }); } } return (
{status.state === 'loading' && ( Sending… )} {status.state === 'success' && ( {status.message} )} {status.state === 'error' && ( {status.message} )}
); }