diff --git a/client/src/components/navigation/footer.tsx b/client/src/components/navigation/footer.tsx index d80843c..2a6cb51 100644 --- a/client/src/components/navigation/footer.tsx +++ b/client/src/components/navigation/footer.tsx @@ -9,6 +9,55 @@ import SquareLogo from "@assets/PwF Logo (square).png"; export default function Footer() { const currentYear = new Date().getFullYear(); + const { toast } = useToast(); + const [email, setEmail] = useState(""); + const [agreedToTerms, setAgreedToTerms] = useState(false); + + const newsletterMutation = useMutation({ + mutationFn: async (newsletterData: { email: string, agreedToTerms: boolean }) => { + const res = await apiRequest("POST", "/api/newsletter", newsletterData); + return await res.json(); + }, + onSuccess: () => { + toast({ + title: "Subscription successful", + description: "Thank you for subscribing to our newsletter!", + }); + setEmail(""); + setAgreedToTerms(false); + }, + onError: (error: Error) => { + toast({ + title: "Subscription failed", + description: error.message, + variant: "destructive", + }); + }, + }); + + const handleNewsletterSubmit = (e: React.FormEvent) => { + e.preventDefault(); + + if (!email) { + toast({ + title: "Email required", + description: "Please enter your email address", + variant: "destructive", + }); + return; + } + + if (!agreedToTerms) { + toast({ + title: "Consent required", + description: "Please agree to receive emails from Pilates with Fadia", + variant: "destructive", + }); + return; + } + + newsletterMutation.mutate({ email, agreedToTerms }); + }; return (