'use client' import React, {useState} from 'react' import {motion} from 'framer-motion' import {Button} from '@/components/ui/button' import ReCAPTCHA from 'react-google-recaptcha' const ContactFormSection = () => { const [form, setForm] = useState({ name: '', email: '', company: '', phone: '', website: '', message: '', }) const [captchaToken, setCaptchaToken] = useState('') const [submitted, setSubmitted] = useState(false) const [loading, setLoading] = useState(false) const [error, setError] = useState('') const handleChange = ( e: React.ChangeEvent ) => { setForm({...form, [e.target.name]: e.target.value}) } const handleSubmit = async (e: React.FormEvent) => { e.preventDefault() setLoading(true) setError('') if (!captchaToken) { setError('Bitte bestätige, dass du kein Roboter bist.') setLoading(false) return } const res = await fetch('/api/contact', { method: 'POST', headers: {'Content-Type': 'application/json'}, body: JSON.stringify({...form, captcha: captchaToken}), }) if (res.ok) { setSubmitted(true) setForm({ name: '', email: '', company: '', phone: '', website: '', message: '', }) setCaptchaToken('') } else { const resJson = await res.json() setError( resJson?.error || 'Ein Fehler ist aufgetreten. Bitte versuche es später erneut.' ) } setLoading(false) } return (
Schreib uns eine Nachricht Wir freuen uns über dein Interesse und melden uns schnellstmöglich bei dir zurück. {submitted ? (
✅ Deine Nachricht wurde erfolgreich gesendet!
) : (
{[ { label: 'Dein Name *', name: 'name', type: 'text', required: true, placeholder: 'Max Mustermann' }, { label: 'Deine E-Mail *', name: 'email', type: 'email', required: true, placeholder: 'max@example.com' }, { label: 'Firmenname (optional)', name: 'company', type: 'text', required: false, placeholder: 'Mustermann GmbH' }, { label: 'Telefonnummer (optional)', name: 'phone', type: 'tel', required: false, placeholder: '+49 123 456789' }, { label: 'Webseite (optional)', name: 'website', type: 'url', required: false, placeholder: 'https://...' }, ].map((field, index) => ( ))}