import { Eye, EyeOff } from "lucide-react"; import { useRouter } from "next/router"; import toast from "react-hot-toast"; import { z } from "zod/v4"; import { Form, FormControl, FormField, FormItem, FormLabel, FormMessage, } from "~/components/custom_ui/form"; import Input from "~/components/ui/input"; import { useMildPassword } from "~/hooks/usePassword"; import { cn } from "~/lib/utils"; import { useZodForm } from "~/lib/zodForm"; import { useTranslation } from "~/providers/I18nProvider"; import { api } from "~/utils/api"; export const FormRstPwFromToken = (props: { token: string }) => { const { locale, t } = useTranslation(); const router = useRouter(); const { isVisible, getStrengthColor, passwordRefine, getStrengthTxt, strengthScore, toggleVisibility, maxStrength, } = useMildPassword(); const ResetFormSchema = z .object({ password: z.string(), repeat_password: z.string(), }) .superRefine(({ password, repeat_password }, refinementContext) => { passwordRefine({ password, path: "password", refinementContext, }); if (password !== repeat_password) { refinementContext.issues.push({ code: "custom", input: "", message: t.pwReset.pwDiverse, path: ["repeat_password"], }); } }); const { mutate } = api.auth.resetPasswordFromToken.useMutation({ onError: (error) => { toast.error(error.message); }, onSuccess: async () => { toast.success(t.pwReset.pwAggiornata); await router.push("/login"); }, }); const form = useZodForm(ResetFormSchema, { defaultValues: { password: "", repeat_password: "", }, }); const onSubmit = (data: z.infer) => { mutate({ newpassword: data.password, resetToken: props.token, }); }; z.config(z.locales[locale]()); return ( <>
(
{t.auth.signup.password}
{ field.onChange(e); await form.trigger("password"); }} placeholder="Password" type={isVisible ? "text" : "password"} />
)} /> (
{t.pwReset.ripetiPw}
)} /> ); };