import { Dialog, DialogBackdrop, DialogPanel } from '@headlessui/react' import { zodResolver } from '@hookform/resolvers/zod' import { useEffect } from 'react' import toast from 'react-hot-toast' import { useFetcher } from 'react-router' import { RemixFormProvider, useRemixForm } from 'remix-hook-form' import { z } from 'zod' import { useAdminContext } from '~/contexts/admin' const profileSchema = z.object({ name: z.string().min(1, 'Name is required'), email: z.string().email('Invalid email address'), profile_picture: z.string().optional(), }) type TProfileSchema = z.infer export const DialogProfile = () => { const { editProfile, setEditProfile } = useAdminContext() const fetcher = useFetcher() const formMethods = useRemixForm({ mode: 'onSubmit', fetcher, resolver: zodResolver(profileSchema), }) const { handleSubmit } = formMethods useEffect(() => { if (!fetcher.data?.success && fetcher.data?.message) { toast.error(fetcher.data.message) } if (fetcher.data?.success) { setEditProfile(false) } // eslint-disable-next-line react-hooks/exhaustive-deps }, [fetcher.data]) return ( { if (fetcher.state === 'idle') { setEditProfile(false) } }} className="relative z-50" transition >
) }