"use client"; import * as z from "zod"; import { zodResolver } from "@hookform/resolvers/zod"; import { useForm } from "react-hook-form"; import { useRouter } from "next/navigation"; import { Form, FormControl, FormDescription, FormField, FormItem, FormLabel, FormMessage, } from "@/components/ui/form"; import { Button } from "@/components/ui/button"; import { Input } from "@/components/ui/input"; const formSchema = z.object({ name: z.string().min(2, { message: "Name must be at least 2 characters.", }), description: z .string() .min(2, { message: "Description must be at least 2 characters.", }) .optional(), }); export function CreateTask({ workspaceID, projectID, }: { workspaceID: string; projectID: string; }) { const form = useForm<z.infer<typeof formSchema>>({ resolver: zodResolver(formSchema), defaultValues: { name: "", description: "", }, }); const router = useRouter(); async function onSubmit(values: z.infer<typeof formSchema>) { try { console.log("PROJECT ID ===>", projectID); const res = await fetch(`/w/${workspaceID}/p/${projectID}/task`, { method: "POST", body: JSON.stringify(values), }); console.log("===>", res); if (!res.ok) throw new Error("Something went wrong."); router.refresh(); return res; } catch (err) { console.error(err); } } return ( <div> <Form {...form}> <form onSubmit={form.handleSubmit(onSubmit)} className="space-y-8"> <FormField control={form.control} name="name" render={({ field }) => ( <FormItem> <FormLabel>Name</FormLabel> <FormControl> <Input placeholder="" {...field} /> </FormControl> <FormDescription>This is your task name.</FormDescription> <FormMessage /> </FormItem> )} /> <FormField control={form.control} name="description" render={({ field }) => ( <FormItem> <FormLabel>Description</FormLabel> <FormControl> <Input placeholder="" {...field} /> </FormControl> <FormDescription> This is your task description. </FormDescription> <FormMessage /> </FormItem> )} /> <Button type="submit">Submit</Button> </form> </Form> </div> ); }