'use client'; import Link from 'next/link'; import { zodResolver } from '@hookform/resolvers/zod'; import { CheckIcon, ExclamationTriangleIcon } from '@radix-ui/react-icons'; import { ArrowRightIcon } from 'lucide-react'; import { useForm } from 'react-hook-form'; import type { z } from 'zod'; import { useUpdateUser } from '@kit/supabase/hooks/use-update-user-mutation'; import { Alert, AlertDescription, AlertTitle } from '@kit/ui/alert'; import { Button } from '@kit/ui/button'; import { Form, FormControl, FormField, FormItem, FormLabel, FormMessage, } from '@kit/ui/form'; import { Heading } from '@kit/ui/heading'; import { Input } from '@kit/ui/input'; import { Trans } from '@kit/ui/trans'; import { PasswordResetSchema } from '../schemas/password-reset.schema'; export function UpdatePasswordForm(params: { redirectTo: string }) { const updateUser = useUpdateUser(); const form = useForm>({ resolver: zodResolver(PasswordResetSchema), defaultValues: { password: '', repeatPassword: '', }, }); if (updateUser.error) { return updateUser.reset()} />; } if (updateUser.data && !updateUser.isPending) { return ; } return (
{ return updateUser.mutateAsync({ password, redirectTo: params.redirectTo, }); })} >
( )} /> ( )} />
); } function SuccessState(props: { redirectTo: string }) { return (
); } function ErrorState(props: { onRetry: () => void }) { return (
); }