"use client"; import { useActionState, useMemo, useState } from "react"; import { useFormStatus } from "react-dom"; import { sendContactMessage, type ContactFormState, } from "@/app/kontakt/actions"; import styles from "./ContactForm.module.css"; const initialState: ContactFormState = { success: false }; const EMAIL_REGEX = /^[^\s@]+@[^\s@]+\.[^\s@]+$/; const PHONE_REGEX = /^[0-9+\-/() ]{6,20}$/; function SubmitButton({ disabled }: { disabled: boolean }) { const { pending } = useFormStatus(); return ( ); } export default function ContactForm() { const [state, formAction] = useActionState(sendContactMessage, initialState); const [values, setValues] = useState({ unternehmen: "", vorname: "", nachname: "", email: "", telefon: "", nachricht: "", datenschutz: false, }); const isValid = useMemo(() => { return ( values.vorname.trim().length > 0 && values.nachname.trim().length > 0 && EMAIL_REGEX.test(values.email.trim()) && PHONE_REGEX.test(values.telefon.trim()) && values.nachricht.trim().length > 0 && values.datenschutz ); }, [values]); if (state.success) { return (

Vielen Dank für Ihre Nachricht! Wir melden uns schnellstmöglich bei Ihnen zurück.

); } return (
setValues((v) => ({ ...v, unternehmen: e.target.value })) } />
setValues((v) => ({ ...v, vorname: e.target.value })) } /> {state.fieldErrors?.vorname && (

{state.fieldErrors.vorname}

)}
setValues((v) => ({ ...v, nachname: e.target.value })) } /> {state.fieldErrors?.nachname && (

{state.fieldErrors.nachname}

)}
setValues((v) => ({ ...v, email: e.target.value }))} /> {state.fieldErrors?.email && (

{state.fieldErrors.email}

)}
setValues((v) => ({ ...v, telefon: e.target.value })) } /> {state.fieldErrors?.telefon && (

{state.fieldErrors.telefon}

)}