import { zodResolver } from '@hookform/resolvers/zod' import { useEffect } from 'react' import toast from 'react-hot-toast' import { useFetcher, useNavigate } 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 { InputFile } from '~/components/ui/input-file' import { TitleDashboard } from '~/components/ui/title-dashboard' export const staffSchema = z .object({ profile_picture: z .string() .url({ message: 'URL tidak valid', }) .or(z.literal('')), name: z.string().min(1, { message: 'Wajib diisi', }), password: z.string().min(6, 'Minimal 6 karakter'), rePassword: z.string().min(6, 'Minimal 6 karakter'), email: z.string().email('Email tidak valid'), }) .refine((field) => field.password === field.rePassword, { message: 'Kata sandi tidak sama', path: ['rePassword'], }) export type TStaffSchema = z.infer export const FormStaffPage = () => { const fetcher = useFetcher() const navigate = useNavigate() const formMethods = useRemixForm({ mode: 'onSubmit', fetcher, resolver: zodResolver(staffSchema), }) const { handleSubmit } = formMethods useEffect(() => { if (!fetcher.data?.success && fetcher.data?.message) { toast.error(fetcher.data.message) } if (fetcher.data?.success) { toast.success(`Staff berhasil dibuat!`) navigate('/lg-admin/staffs') } // eslint-disable-next-line react-hooks/exhaustive-deps }, [fetcher.data]) return (
) }