"use client"; import Link from "next/link"; import { useSearchParams } from "next/navigation"; import { useEffect, useState, Suspense } from "react"; import { SiteFooter } from "../../components/site-footer"; import { SiteHeader } from "../../components/site-header"; type ApiResponse = { data: T; meta: { timestamp: string; version: "v1" }; error: null | { message: string; code?: string }; }; function VerifyEmailContent() { const searchParams = useSearchParams(); const token = searchParams.get("token"); const [status, setStatus] = useState<"loading" | "success" | "error">("loading"); const [message, setMessage] = useState(""); useEffect(() => { if (!token) { setStatus("error"); setMessage("No verification token provided."); return; } fetch(`/api/auth/verify-email?token=${encodeURIComponent(token)}`) .then((res) => res.json() as Promise>) .then((payload) => { if (payload.error) { setStatus("error"); setMessage(payload.error.message ?? "Verification failed."); } else { setStatus("success"); setMessage(payload.data?.message ?? "Email verified successfully."); } }) .catch(() => { setStatus("error"); setMessage("Something went wrong. Please try again."); }); }, [token]); return (
{status === "loading" && ( <>

Verifying your email...

)} {status === "success" && ( <>

Email Verified!

{message}

Sign in )} {status === "error" && ( <>

Verification Failed

{message}

The link may have expired. Please register again or contact support.

Back to sign in )}
); } export default function VerifyEmailPage() { return (
L1

Email Verification

Loading...
}>
); }