"use client"; import { useState, type FormEvent } from "react"; import { Container, SectionHeading, Button } from "@/components/ui"; import { ScrollReveal } from "@/components/scroll-reveal"; import { TurnstileWidget } from "@/components/turnstile-widget"; import { useI18n } from "@/i18n/i18n-provider"; type Status = "idle" | "loading" | "success" | "error"; const TURNSTILE_SITE_KEY = process.env.NEXT_PUBLIC_TURNSTILE_SITE_KEY; export function NewsletterSignup() { const { t } = useI18n(); const [email, setEmail] = useState(""); const [status, setStatus] = useState("idle"); const [turnstileToken, setTurnstileToken] = useState(""); async function handleSubmit(event: FormEvent) { event.preventDefault(); setStatus("loading"); try { const response = await fetch("/api/newsletter", { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify({ email, turnstileToken }), }); if (!response.ok) throw new Error("request failed"); setStatus("success"); setEmail(""); } catch { setStatus("error"); } } return (

{t.home.newsletter.description}

{status === "success" ? (

{t.home.newsletter.successMessage}

) : (
setEmail(e.target.value)} className="min-w-0 flex-1 border border-ink/20 bg-background px-4 py-3 text-sm focus:outline-none focus:border-forest" /> {TURNSTILE_SITE_KEY ? (
) : null}
)} {status === "error" ? (

{t.home.newsletter.errorMessage}

) : null}

{t.home.newsletter.consentBeforeLink} {t.home.newsletter.privacyLinkLabel} {t.home.newsletter.consentAfterLink}

); }