"use client" import { useState, useEffect, Suspense } from "react" import { useSearchParams } from "next/navigation" import { motion } from "framer-motion" import { Loader2, Zap, CheckCircle2, XCircle } from "lucide-react" import Link from "next/link" function VerifyEmailContent() { const [status, setStatus] = useState<"idle" | "loading" | "success" | "error">("idle") const [message, setMessage] = useState("") const searchParams = useSearchParams() const token = searchParams.get("token") ?? "" const email = searchParams.get("email") ?? "" useEffect(() => { if (!token || !email) { setStatus("error") setMessage("Invalid or missing verification link.") return } setStatus("loading") fetch("/api/auth/verify-email/verify", { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify({ token, email }), }) .then((res) => res.json()) .then((data) => { if (data.message === "Email verified successfully") { setStatus("success") } else { setStatus("error") setMessage(data.message || "Verification failed.") } }) .catch(() => { setStatus("error") setMessage("An error occurred. Please try again.") }) }, [token, email]) if (status === "loading" || status === "idle") { return (

Verifying your email...

) } if (status === "success") { return (

Email verified

Your email has been verified successfully. You can now sign in.

Go to login
) } return (

Verification failed

{message}

Back to login
) } export default function VerifyEmailPage() { return (

JUNO

Verify Email

Loading...
}>
) }