"use client"; import { useActionState } from "react"; import { useFormStatus } from "react-dom"; import { useEffect } from "react"; import { useToast } from "@/hooks/use-toast"; import { submitContactForm } from "@/app/actions"; import { Card, CardContent, CardHeader, CardTitle, CardDescription } from "@/components/ui/card"; import { Label } from "@/components/ui/label"; import { Input } from "@/components/ui/input"; import { Textarea } from "@/components/ui/textarea"; import { Button } from "@/components/ui/button"; import { Mail } from "lucide-react"; function SubmitButton() { const { pending } = useFormStatus(); return ( ); } export function Contact() { const { toast } = useToast(); const initialState = { message: null, errors: {} }; const [state, dispatch] = useActionState(submitContactForm, initialState); useEffect(() => { if (state.message) { if (state.errors) { toast({ title: "Error", description: state.message, variant: "destructive", }); } else { toast({ title: "Success!", description: state.message, }); } } }, [state, toast]); return (
Get in Touch Have a question or want to work together? Send me a message.
{state.errors?.name && (

{state.errors.name[0]}

)}
{state.errors?.email && (

{state.errors.email[0]}

)}