'use client' import { useState } from 'react' import Link from 'next/link' import { useForm } from 'react-hook-form' import { zodResolver } from '@hookform/resolvers/zod' import * as z from 'zod' import { Button } from '@/components/ui/button' import { Input } from '@/components/ui/input' import { Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, } from '@/components/ui/card' // import { Icons } from "@/components/ui/icons" import { Form, FormControl, FormField, FormItem, FormLabel, FormMessage, } from '@/components/ui/form' import { Alert, AlertDescription, AlertTitle } from '@/components/ui/alert' import httpBrowserClient from '@/lib/httpBrowserClient' import { ApiEndpoints } from '@/config/api' import { Routes } from '@/config/routes' const resetPasswordSchema = z .object({ email: z.string().email({ message: 'Invalid email address' }), otp: z.string().min(4, { message: 'OTP is required' }), newPassword: z .string() .min(8, { message: 'Password must be at least 8 characters long' }), confirmPassword: z .string() .min(4, { message: 'Please confirm your password' }), }) .superRefine((data, ctx) => { if (data.newPassword !== data.confirmPassword) { ctx.addIssue({ code: z.ZodIssueCode.custom, message: 'Passwords must match', path: ['confirmPassword'], }) } }) type ResetPasswordFormValues = z.infer export default function ResetPasswordForm({ email, otp, }: { email: string otp: string }) { const form = useForm({ resolver: zodResolver(resetPasswordSchema), defaultValues: { email: email, otp: otp, newPassword: '', confirmPassword: '', }, }) const onResetPassword = async (data: ResetPasswordFormValues) => { try { await httpBrowserClient.post(ApiEndpoints.auth.resetPassword(), data) } catch (error) { console.error(error) form.setError('root.serverError', { message: 'Failed to reset password', }) } } return (
Reset your password Enter your new password below
( Email )} /> ( OTP )} /> ( New Password )} /> ( Confirm Password )} /> {form.formState.errors.root && (

{form.formState.errors.root.message}

)} {form.formState.isSubmitted && form.formState.isSubmitSuccessful && ( {/* */} Password reset successful Your password has been reset successfully. You can now login with your new password. )}
Back to login
) }