// Kontakt page function PageKontakt({ navigate, showToast }) { const [form, setForm] = useState({ name: "", email: "", subject: "", message: "" }); const [errors, setErrors] = useState({}); const [submitting, setSubmitting] = useState(false); const update = (k, v) => { setForm((f) => ({ ...f, [k]: v })); if (errors[k]) setErrors((e) => ({ ...e, [k]: null })); }; const validate = () => { const e = {}; if (!form.name.trim()) e.name = "Bitte geben Sie Ihren Namen an."; if (!form.email.trim()) e.email = "E-Mail-Adresse fehlt.";else if (!/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(form.email)) e.email = "Bitte eine gültige E-Mail-Adresse."; if (!form.subject.trim()) e.subject = "Bitte ein Thema angeben."; if (!form.message.trim() || form.message.trim().length < 10) e.message = "Bitte schreiben Sie ein paar Sätze (mind. 10 Zeichen)."; return e; }; const submit = async (ev) => { ev.preventDefault(); const e = validate(); setErrors(e); if (Object.keys(e).length > 0) return; setSubmitting(true); // Daten an Formspree senden (zuverlässiger Versand an info@biotope-studio.org). const data = new URLSearchParams(); data.append("name", form.name); data.append("email", form.email); data.append("subject", form.subject); data.append("message", form.message); data.append("_replyto", form.email); data.append("website", ""); // Honeypot gegen Spam-Bots try { const res = await fetch("https://formspree.io/f/mjgqvdlo", { method: "POST", headers: { "Content-Type": "application/x-www-form-urlencoded", "Accept": "application/json", }, body: data.toString(), }); let payload = null; try { payload = await res.json(); } catch (_) {} if (res.ok && (!payload || !payload.errors)) { setForm({ name: "", email: "", subject: "", message: "" }); showToast("Vielen Dank! Ihre Nachricht wurde gesendet."); } else { throw new Error((payload && payload.error) || "send-failed"); } } catch (err) { // Fallback (z. B. lokale Vorschau ohne Server): E-Mail-Programm öffnen. const body = `Name: ${form.name}\n` + `E-Mail: ${form.email}\n\n` + `${form.message}\n`; window.location.href = `mailto:info@biotope-studio.org` + `?subject=${encodeURIComponent(form.subject)}` + `&body=${encodeURIComponent(body)}`; showToast("E-Mail-Programm geöffnet – bitte die Nachricht dort absenden."); } finally { setSubmitting(false); } }; return (
Kontakt

Lassen Sie uns sprechen.

Egal ob konkrete Anfrage oder erste Idee – schreiben Sie uns. Wir melden uns in der Regel innerhalb von 1–2 Werktagen.

{/* Left: details */}
Direkt erreichen

Felix Kwasny
Biotope-Studio

Hinweis: Ich melde mich in der Regel innerhalb von 1–2 Werktagen.
{/* Right: form */}
Nachricht senden

Schreiben Sie uns.

update("name", e.target.value)} placeholder="Vor- und Nachname" /> {errors.name && {errors.name}}
update("email", e.target.value)} placeholder="ihre@adresse.de" /> {errors.email && {errors.email}}
update("subject", e.target.value)} placeholder="Worum geht es?" /> {errors.subject && {errors.subject}}