'use client'; import { useForm } from 'react-hook-form'; import { zodResolver } from '@hookform/resolvers/zod'; import { z } from 'zod'; import { useCreateIssue } from '@/lib/hooks/use-issues'; import { Dialog, DialogContent, DialogHeader, DialogTitle, } from '@/components/ui/dialog'; import { Button } from '@/components/ui/button'; import { Input } from '@/components/ui/input'; import { Textarea } from '@/components/ui/textarea'; import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue, } from '@/components/ui/select'; import { Form, FormControl, FormField, FormItem, FormLabel, FormMessage, } from '@/components/ui/form'; const createIssueSchema = z.object({ title: z.string().min(1, 'Title is required'), description: z.string().min(1, 'Description is required'), type: z.enum(['Story', 'Task', 'Bug', 'Epic']), priority: z.enum(['Low', 'Medium', 'High', 'Critical']), }); interface CreateIssueDialogProps { projectId: string; open: boolean; onOpenChange: (open: boolean) => void; } export function CreateIssueDialog({ projectId, open, onOpenChange, }: CreateIssueDialogProps) { const form = useForm({ resolver: zodResolver(createIssueSchema), defaultValues: { title: '', description: '', type: 'Task' as const, priority: 'Medium' as const, }, }); const createMutation = useCreateIssue(projectId); const onSubmit = (data: z.infer) => { createMutation.mutate(data, { onSuccess: () => { form.reset(); onOpenChange(false); }, }); }; return ( Create New Issue
( Title )} /> ( Description