import React, { useState } from "react"; import { trpc } from "@/lib/trpc"; 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 { Dialog, DialogContent, DialogDescription, DialogHeader, DialogTitle, DialogTrigger } from "@/components/ui/dialog"; import { toast } from "sonner"; interface NewProjectDialogProps { onProjectCreated?: () => void; } export function NewProjectDialog({ onProjectCreated }: NewProjectDialogProps) { const [open, setOpen] = useState(false); const [name, setName] = useState(""); const [description, setDescription] = useState(""); const [mode, setMode] = useState("auto"); const [contentType, setContentType] = useState("code"); const [prompt, setPrompt] = useState(""); const createProjectMutation = trpc.projects.create.useMutation({ onSuccess: () => { toast.success("Project created successfully!"); setOpen(false); setName(""); setDescription(""); setMode("auto"); setContentType("code"); setPrompt(""); onProjectCreated?.(); }, onError: (error) => { toast.error("Failed to create project: " + error.message); }, }); const handleCreate = async () => { if (!name.trim() || !prompt.trim()) { toast.error("Please fill in project name and prompt"); return; } await createProjectMutation.mutateAsync({ name, description: description || undefined, mode: mode as any, contentType: contentType as any, originalPrompt: prompt, }); }; return ( Create New Project Set up a new AI code generation project
setName(e.target.value)} className="bg-black/50 border-green-500/20 text-white" />