"use client"; import { useState } from "react"; import type { Group } from "@/lib/api/schema"; import { Dialog, DialogContent, DialogHeader, DialogTitle, DialogDescription, DialogFooter } from "@/components/ui/dialog"; import { Button } from "@/components/ui/button"; import { Input } from "@/components/ui/input"; import { Label } from "@/components/ui/label"; import { useCreateGroup, useUpdateGroup } from "@/lib/api/hooks"; interface GroupFormProps { group?: Group | null; open: boolean; onOpenChange: (open: boolean) => void; } export function GroupForm({ group, open, onOpenChange }: GroupFormProps) { const isEdit = !!group; const createMut = useCreateGroup(); const updateMut = useUpdateGroup(); const [name, setName] = useState(group?.name || ""); const [error, setError] = useState(""); const handleSubmit = async () => { if (!name.trim()) { setError("Name is required"); return; } try { if (isEdit && group) { await updateMut.mutateAsync({ id: group.id, name: name.trim() }); } else { await createMut.mutateAsync({ name: name.trim() }); } onOpenChange(false); setName(""); setError(""); } catch (err) { setError(err instanceof Error ? err.message : "Failed"); } }; return ( {isEdit ? "Rename Group" : "Create Group"} {isEdit ? "Update group name" : "Add a new group for organizing apps"}
setName(e.target.value)} placeholder="Infrastructure" /> {error && {error}}
); }