"use client"; import React, { useActionState, useEffect, useRef } from "react"; import { useFormStatus } from "react-dom"; import { submitContactForm, ContactFormState } from "@/actions/contact"; import Button from "@/components/ui/Button"; // Use your existing Button component // Submit button component with pending state function SubmitButton() { const { pending } = useFormStatus(); return ( ); } // The main contact form component export default function ContactForm() { const initialState: ContactFormState = { message: null, errors: {}, success: false, }; const [state, dispatch] = useActionState(submitContactForm, initialState); const formRef = useRef(null); // Ref to reset the form // Reset form on successful submission useEffect(() => { if (state.success) { formRef.current?.reset(); } }, [state.success]); return (
{/* Name Input */}
{state.errors?.name && state.errors.name.map((error: string) => (

{error}

))}
{/* Email Input */}
{state.errors?.email && state.errors.email.map((error: string) => (

{error}

))}
{/* Subject Input */}
{state.errors?.subject && state.errors.subject.map((error: string) => (

{error}

))}
{/* Message Textarea */}
{state.errors?.message && state.errors.message.map((error: string) => (

{error}

))}
{/* General Form Message (Success or Error) */}
{state.message && (

{state.message}

)}
{/* Submit Button */}
); }