'use client'; import { useState } from 'react'; import { motion, AnimatePresence } from 'framer-motion'; export default function Contact() { const [formData, setFormData] = useState({ firstName: '', lastName: '', email: '', phone: '', message: '', }); const [status, setStatus] = useState<'idle' | 'submitting' | 'success' | 'error'>('idle'); const [errorMessage, setErrorMessage] = useState(''); const handleSubmit = async (e: React.FormEvent) => { e.preventDefault(); setStatus('submitting'); setErrorMessage(''); const form = e.currentTarget; const data = new FormData(form); try { const response = await fetch(form.action, { method: form.method, body: data, headers: { 'Accept': 'application/json', }, }); if (response.ok) { setStatus('success'); setFormData({ firstName: '', lastName: '', email: '', phone: '', message: '', }); form.reset(); // Reset success message after 5 seconds setTimeout(() => { setStatus('idle'); }, 5000); } else { const data = await response.json(); if (data.errors) { setErrorMessage(data.errors.map((error: { message: string }) => error.message).join(', ')); } else { setErrorMessage('Oops! There was a problem submitting your form.'); } setStatus('error'); } } catch (error) { setErrorMessage('Oops! There was a problem submitting your form.'); setStatus('error'); } }; const handleChange = (e: React.ChangeEvent) => { setFormData({ ...formData, [e.target.name]: e.target.value, }); }; return (

Contact Me

I'm here for you!

I'm available for both private sessions as well as public speaking arrangements and tailored workshops. Contact me directly for more detailed information and a non-commitment quote.

{status === 'success' ? ( Thank you for your message! I'll get back to you soon. ) : (