"use client"; import { CheckCircle, Loader2, XCircle } from "lucide-react"; import { useTranslations } from "next-intl"; import { useEffect, useState } from "react"; import { buttonVariants, Link } from "../../../../shadcnui"; import { SectionHeader } from "../../../../components/typography"; import { WaitlistService } from "../../data/WaitlistService"; interface Props { code: string; } type ConfirmationState = "loading" | "success" | "error"; export function WaitlistConfirmation({ code }: Props) { const t = useTranslations(); const [state, setState] = useState("loading"); const [errorMessage, setErrorMessage] = useState(""); useEffect(() => { async function confirmEmail() { try { await WaitlistService.confirm(code); setState("success"); } catch (error) { setState("error"); setErrorMessage(error instanceof Error ? error.message : t("waitlist.confirmation.error_default")); } } confirmEmail(); }, [code, t]); if (state === "loading") { return (

{t("waitlist.confirmation.loading")}

); } if (state === "error") { return (
{t("waitlist.confirmation.error_title")}

{errorMessage}

{t("waitlist.buttons.return")}
); } return (
{t("waitlist.confirmation.success_title")}

{t("waitlist.confirmation.success_description")}

{t("waitlist.confirmation.success_hint")}

); }