"use client"; import { useState } from "react"; import { authClient } from "@/lib/auth-client"; import Link from "next/link"; import { useRouter, useSearchParams } from "next/navigation"; import { toast } from "sonner"; import { useTranslations } from "next-intl"; import { Card, CardBody } from "@/design-system/base/card"; import { Input } from "@/design-system/base/input"; import { PrimaryButton } from "@/design-system/base/button"; import { VStack } from "@/design-system/layout/stack"; export default function ResetPasswordPage() { const t = useTranslations("auth"); const [password, setPassword] = useState(""); const [confirmPassword, setConfirmPassword] = useState(""); const [loading, setLoading] = useState(false); const [success, setSuccess] = useState(false); const router = useRouter(); const searchParams = useSearchParams(); const token = searchParams.get("token"); const handleResetPassword = async () => { if (!password || !confirmPassword) { toast.error(t("fillAllFields")); return; } if (password !== confirmPassword) { toast.error(t("passwordsNotMatch")); return; } if (password.length < 8) { toast.error(t("passwordTooShort")); return; } if (!token) { toast.error(t("invalidToken")); return; } setLoading(true); const { error } = await authClient.resetPassword({ newPassword: password, token, }); if (error) { toast.error(error.message ?? t("resetPasswordFailed")); } else { setSuccess(true); toast.success(t("resetPasswordSuccess")); setTimeout(() => { router.push("/login"); }, 2000); } setLoading(false); }; if (success) { return (

{t("resetPasswordSuccessTitle")}

{t("resetPasswordSuccessHint")}

{t("backToLogin")}
); } if (!token) { return (

{t("invalidToken")}

{t("invalidTokenHint")}

{t("requestNewToken")}
); } return (

{t("resetPassword")}

setPassword(e.target.value)} /> setConfirmPassword(e.target.value)} /> {t("resetPassword")} {t("backToLogin")}
); }