'use client'; import React, {useState} from "react"; import {motion} from "framer-motion"; import {useThemeColors} from "@/utils/useThemeColors"; import HCaptcha from "@hcaptcha/react-hcaptcha"; const ContactFormSection = () => { const colors = useThemeColors(); 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 hCaptchaSiteKey: string = process.env.NEXT_PUBLIC_HCAPTCHA_SITE_KEY ?? "null"; // // console.log(hCaptchaSiteKey); 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 löse das CAPTCHA, um fortzufahren."); // 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: ""}); } 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) => ( ))}