'use client'; import { useAction } from 'next-safe-action/hooks'; import { Button } from '@/components/ui/button'; import { Form, FormControl, FormField, FormItem, FormMessage, } from '@/components/ui/form'; import { Input } from '@/components/ui/input'; import type { Newsletter } from '@/lib/validators'; import { NewsletterSchema } from '@/lib/validators'; import { zodResolver } from '@hookform/resolvers/zod'; import { useForm } from 'react-hook-form'; import { Alert, AlertTitle } from '@/components/ui/alert'; import { subscribeUser } from '@/app/(home)/actions'; import { Icons } from '@/components/icons/icons'; export const NewsletterForm = () => { const form = useForm({ resolver: zodResolver(NewsletterSchema), defaultValues: { email: '', }, }); const { execute, result, status } = useAction(subscribeUser); const onSubmit = (values: Newsletter) => { execute(values); }; return (
( )} />
{status === 'hasSucceeded' && ( {result.data?.message ?? "Hmm... Our server didn't respond."} )} {result.serverError && ( {result.serverError} )}
); };