'use client'; import { useForm } from 'react-hook-form'; import { zodResolver } from '@hookform/resolvers/zod'; import { z } from 'zod'; import { useCreateStory } from '@/lib/hooks/use-stories'; import { useEpics } from '@/lib/hooks/use-epics'; 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'; import { Loader2 } from 'lucide-react'; const createStorySchema = z.object({ epicId: z.string().min(1, 'Epic is required'), title: z.string().min(1, 'Title is required'), description: z.string().optional(), priority: z.enum(['Low', 'Medium', 'High', 'Critical']), estimatedHours: z.number().min(0).optional(), }); interface CreateStoryDialogProps { projectId: string; open: boolean; onOpenChange: (open: boolean) => void; } export function CreateStoryDialog({ projectId, open, onOpenChange, }: CreateStoryDialogProps) { const form = useForm({ resolver: zodResolver(createStorySchema), defaultValues: { epicId: '', title: '', description: '', priority: 'Medium' as const, estimatedHours: 0, }, }); const { data: epics, isLoading: epicsLoading } = useEpics(projectId); const createMutation = useCreateStory(); const onSubmit = (data: z.infer) => { createMutation.mutate(data, { onSuccess: () => { form.reset(); onOpenChange(false); }, }); }; return ( Create New Story
{/* Epic Selection */} ( Epic )} /> {/* Title */} ( Title )} /> {/* Description */} ( Description