import { zodResolver } from '@hookform/resolvers/zod' import { useEffect, useState } from 'react' import { useFetcher } from 'react-router' import { RemixFormProvider, useRemixForm } from 'remix-hook-form' import { z } from 'zod' import { Button } from '~/components/ui/button' import { Input } from '~/components/ui/input' import { useNewsContext } from '~/contexts/news' export const registerSchema = z .object({ email: z.string().email('Email tidak valid'), password: z.string().min(6, 'Kata sandi minimal 6 karakter'), rePassword: z.string().min(6, 'Kata sandi minimal 6 karakter'), phone: z.string().min(10, 'No telepon tidak valid'), }) .refine((field) => field.password === field.rePassword, { message: 'Kata sandi tidak sama', path: ['rePassword'], }) export type TRegisterSchema = z.infer export const FormRegister = () => { const { setIsLoginOpen, setIsRegisterOpen } = useNewsContext() const [error, setError] = useState() const [disabled, setDisabled] = useState(false) const fetcher = useFetcher() const formMethods = useRemixForm({ mode: 'onSubmit', fetcher, resolver: zodResolver(registerSchema), }) const { handleSubmit } = formMethods useEffect(() => { if (!fetcher.data?.success) { setError(fetcher.data?.message) setDisabled(false) return } setDisabled(true) setError(undefined) setIsRegisterOpen(false) // eslint-disable-next-line react-hooks/exhaustive-deps }, [fetcher]) return (
{/* Subscribe*/} {/*
*/} {error && (
{error}
)}
{/* Link Login */}
Sudah punya akun?{' '}
) }