"use client"; import { useState, Suspense } from "react"; import { useRouter, useSearchParams } from "next/navigation"; import { toast } from "sonner"; import { useTranslations } from "next-intl"; import { authClient } from "@/lib/auth/client"; import { Button } from "@/components/ui/button"; import { Input } from "@/components/ui/input"; import { Label } from "@/components/ui/label"; import { Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle } from "@/components/ui/card"; import Link from "next/link"; function ResetPasswordForm() { const router = useRouter(); const t = useTranslations("auth"); const searchParams = useSearchParams(); const token = searchParams.get("token") ?? ""; const [password, setPassword] = useState(""); const [confirm, setConfirm] = useState(""); const [loading, setLoading] = useState(false); async function handleSubmit(e: React.FormEvent) { e.preventDefault(); if (password !== confirm) { toast.error("Passwords don't match"); return; } setLoading(true); const { error } = await authClient.resetPassword({ newPassword: password, token }); setLoading(false); if (error) { toast.error(error.message ?? "Reset failed — link may have expired"); } else { toast.success("Password updated"); router.push("/login"); } } if (!token) { return

{t("invalidToken")}

; } return (
setPassword(e.target.value)} required minLength={8} />
setConfirm(e.target.value)} required minLength={8} />
); } export default function ResetPasswordPage() { const t = useTranslations("auth"); return ( {t("resetPasswordTitle")} {t("resetPasswordDescription")}

{t("updatingPassword")}

}>
{t("backToSignIn")}
); }