"use client"; import * as React from "react"; import * as DialogPrimitive from "@radix-ui/react-dialog"; import { Loader2, Plus, X } from "lucide-react"; import { Button } from "@/components/ui/button"; import { Input } from "@/components/ui/input"; import { api } from "@/lib/trpc"; import type { ConvoyClassification } from "@tasks/shared/convoy-lifecycle"; const CLASSIFICATIONS: ConvoyClassification[] = [ "feature", "hotfix", "docs-only", "infra-only", "server-only", "config-only", ]; type FormState = { slug: string; classification: ConvoyClassification; successMetric: string; ideaMarkdown: string; }; const EMPTY: FormState = { slug: "", classification: "feature", successMetric: "", ideaMarkdown: "", }; export function CreateConvoyDialog({ workspaceSlug, open, onOpenChange, onCreated, }: { workspaceSlug: string; open: boolean; onOpenChange: (open: boolean) => void; onCreated: (convoyId: string) => void; }) { const utils = api.useUtils(); const [form, setForm] = React.useState(EMPTY); const createMut = api.convoys.create.useMutation({ onSuccess: (result) => { void utils.convoys.kanban.invalidate(); onCreated(result.convoyId); onOpenChange(false); setForm(EMPTY); }, }); return (
New convoy
setForm((f) => ({ ...f, slug: e.target.value }))} />
setForm((f) => ({ ...f, successMetric: e.target.value }))} />