"use client" import { useEffect, useState } from "react" import { useSearchParams } from "next/navigation" import { Card, CardContent, CardHeader, CardTitle, CardDescription } from "@/components/ui/card" import { Button } from "@/components/ui/button" import { CheckCircle, XCircle, Loader2 } from "lucide-react" import Link from "next/link" import { getApiUrl } from "@/lib/api-config" export default function VerifyEmailPage() { const searchParams = useSearchParams() const [status, setStatus] = useState<"loading" | "success" | "error">("loading") const [message, setMessage] = useState("") const verifyEmail = async (token: string) => { try { const res = await fetch(`${getApiUrl()}/auth/verify-email`, { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify({ token }) }) const data = await res.json() if (res.ok) { setStatus("success") setMessage(data.message || "Email verified successfully!") } else { setStatus("error") setMessage(data.detail || "Verification failed") } } catch (_) { setStatus("error") setMessage("An error occurred during verification") } } useEffect(() => { const token = searchParams.get("token") if (!token) { setStatus("error") setMessage("No verification token provided") return } verifyEmail(token) }, [searchParams]) return (
{message}
{status === "success" && ( )} {status === "error" && (