import { DevTool } from '@hookform/devtools' import { zodResolver } from '@hookform/resolvers/zod' import { useEffect } from 'react' import toast from 'react-hot-toast' import { useFetcher, useRouteLoaderData } from 'react-router' import { RemixFormProvider, useRemixForm } from 'remix-hook-form' import { z } from 'zod' import { DialogNews } from '~/components/dialog/news' import { Button } from '~/components/ui/button' import { Combobox } from '~/components/ui/combobox' import { Input } from '~/components/ui/input' import { useNewsContext } from '~/contexts/news' import type { loader } from '~/routes/_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'), subscribe_plan: z .object({ id: z.string(), code: z.string(), name: z.string(), }) .optional() .nullable() .refine((data) => !!data, { message: 'Silakan pilih paket berlangganan', }), }) .refine((field) => field.password === field.rePassword, { message: 'Kata sandi tidak sama', path: ['rePassword'], }) export type TRegisterSchema = z.infer export const DialogRegister = () => { const { setIsLoginOpen, setIsRegisterOpen, setIsSuccessOpen, isRegisterOpen, } = useNewsContext() const fetcher = useFetcher() const loaderData = useRouteLoaderData('routes/_news') const { subscribePlanData: subscribePlan } = loaderData || {} const formMethods = useRemixForm({ mode: 'onSubmit', fetcher, resolver: zodResolver(registerSchema), }) const { handleSubmit, control } = formMethods useEffect(() => { if (!fetcher.data?.success && fetcher.data?.message) { toast.error(fetcher.data.message) } if (fetcher.data?.success) { setIsRegisterOpen(false) setIsSuccessOpen('register') } // eslint-disable-next-line react-hooks/exhaustive-deps }, [fetcher.data]) return ( { if (fetcher.state === 'idle') { setIsRegisterOpen(false) } }} description="Selamat Datang, silakan isi keterangan akun Anda untuk melanjutkan!" >
{/* Link Login */}
Sudah punya akun?{' '}
) }