"use client" import { z } from "zod" import { zodResolver } from "@hookform/resolvers/zod" import { useForm } from "react-hook-form" import { Button } from "@/components/ui/button" import { toast } from "@/components/ui/use-toast" import { Popover, PopoverContent, PopoverTrigger, } from "@/components/ui/popover" import { Calendar } from "@/components/ui/calendar" import { CalendarIcon } from "@radix-ui/react-icons" import { cn } from "@/lib/utils" import { format } from "date-fns" import { Form, FormItem, FormLabel, FormField, FormControl, FormDescription, FormMessage } from "@/components/ui/form" import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue, } from "@/components/ui/select" import { useState } from "react" const FormSchema = z.object({ storyId: z.coerce.number(), pubId: z.coerce.number(), submitted: z.date(), responded: z.date().optional(), responseId: z.number() }) export default function SubmissionForm({ stories, pubs, responses }) { const form = useForm>({ resolver: zodResolver(FormSchema), defaultValues: { responseId: responses[0].id } }) const [isSubCalendarOpen, setIsSubCalendarOpen] = useState(false); const [isRespCalendarOpen, setIsRespCalendarOpen] = useState(false); const storiesSelectItems = stories.map(e => ( {e.title} )) const pubsSelectItems = pubs.map(e => ( {e.title} )) const reponsesSelectItems = responses.map(e => ( {e.response} )) // 2. Define a submit handler. function onSubmit(values: z.infer) { // Do something with the form values. // ✅ This will be type-safe and validated. toast({ title: "You submitted the following values:", description: (
					{JSON.stringify(values, null, 2)}
				
), }) console.log(values) } function onErrors(errors) { toast({ title: "You have errors", description: (
					{JSON.stringify(errors, null, 2)}
				
), }) console.log(JSON.stringify(errors)) } return (
( Story The piece you submitted )} /> ( Publication The market you sent it to )} /> ( Date of submission { field.onChange(e); setIsSubCalendarOpen(false); }} disabled={(date) => date > new Date() || date < new Date("1900-01-01") } initialFocus /> The date you sent it )} /> ( Date of response { field.onChange(e); setIsRespCalendarOpen(false); }} disabled={(date) => date > new Date() || date < new Date("1900-01-01") } initialFocus /> The date they wrote back )} /> ( Response The market you sent it to )} /> ) }