import { zodResolver } from '@hookform/resolvers/zod' import { useFetcher, useRouteLoaderData } from 'react-router' import { RemixFormProvider, useRemixForm } from 'remix-hook-form' import { z } from 'zod' import { Button } from '~/components/ui/button' import { Select } from '~/components/ui/select' import type { loader } from '~/routes/_layout' export const subscribeSchema = 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.string().min(1, 'Pilih salah satu subscription'), }) .refine((field) => field.password === field.rePassword, { message: 'Kata sandi tidak sama', path: ['rePassword'], }) export type TSubscribeSchema = z.infer export default function FormSubscription() { const fetcher = useFetcher() const loaderData = useRouteLoaderData('routes/_layout') const subscriptions = loaderData?.subscriptionsData const formMethods = useRemixForm({ mode: 'onSubmit', fetcher, resolver: zodResolver(subscribeSchema), }) const { handleSubmit } = formMethods return (