'use client'; import { useState, useEffect } from 'react'; import { track } from '@/lib/analytics'; import Image from 'next/image'; export default function ContactForm({ compact = false, variant = 'light' }: { compact?: boolean; variant?: 'light' | 'dark'; }) { const [ok, setOk] = useState(false); const [loading, setLoading] = useState(false); const [errors, setErrors] = useState>({}); const [mounted, setMounted] = useState(false); useEffect(() => { setMounted(true); }, []); const labelColor = variant === 'dark' ? 'text-white' : 'text-gray-700'; const submit = async (e: React.FormEvent) => { e.preventDefault(); setLoading(true); setErrors({}); const formData = new FormData(e.currentTarget); const data: Record = {}; for (const [key, value] of formData) { data[key] = value.toString(); } // Basic validation const newErrors: Record = {}; if (!data.name) newErrors.name = 'Name is required'; if (!data.phone) newErrors.phone = 'Phone is required'; if (!data.email) newErrors.email = 'Email is required'; if (!data.serviceType) newErrors.serviceType = 'Service type is required'; if (!data.issue) newErrors.issue = 'Brief issue description is required'; if (!data.preferredTime) newErrors.preferredTime = 'Preferred time is required'; if (Object.keys(newErrors).length > 0) { setErrors(newErrors); setLoading(false); return; } try { // TODO: wire to API or form service await new Promise(resolve => setTimeout(resolve, 1000)); // Simulate API call track('form_submit', { source: 'quote_form', compact }); setOk(true); } catch (error) { console.error('Form submission failed:', error); } finally { setLoading(false); } }; if (!mounted) { // Render a stable skeleton on server and on initial client render to avoid hydration mismatches return (
); } if (ok) { return (

Thank You!

We'll call you within 15–30 minutes during business hours.

); } return (
C & I Electrical Contractors Get Free Quote
{errors.name && (

{errors.name}

)}
{errors.phone && (

{errors.phone}

)}
{errors.email && (

{errors.email}

)}
{errors.serviceType && (

{errors.serviceType}

)}