"use client"; import { Copy, Pencil, Plus, Trash2 } from "lucide-react"; import { useState } from "react"; import { createTemplate, deleteTemplate, updateTemplate } from "@/actions/ticket-templates"; import { Badge } from "@/components/ui/badge"; import { Button } from "@/components/ui/button"; import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card"; import { Input } from "@/components/ui/input"; import { Label } from "@/components/ui/label"; import { useServerAction } from "@/hooks/use-server-action"; interface Template { id: number; title: string; content: string; category: string; sortOrder: number; } interface Props { templates: Template[]; } export function TicketTemplatesManager({ templates }: Props) { const { run, isPending } = useServerAction(); const [showForm, setShowForm] = useState(false); const [editingId, setEditingId] = useState(null); const [form, setForm] = useState({ title: "", content: "", category: "general", sortOrder: 0 }); function resetForm() { setForm({ title: "", content: "", category: "general", sortOrder: 0 }); setEditingId(null); setShowForm(false); } function handleEdit(t: Template) { setForm({ title: t.title, content: t.content, category: t.category, sortOrder: t.sortOrder }); setEditingId(t.id); setShowForm(true); } function handleSubmit(e: React.FormEvent) { e.preventDefault(); if (editingId) { run(() => updateTemplate({ id: editingId, ...form }), { successMessage: "Template updated!", onSuccess: resetForm, }); } else { run(() => createTemplate(form), { successMessage: "Template created!", onSuccess: resetForm }); } } return (
{showForm && ( {editingId ? "Edit Template" : "New Template"}
setForm({ ...form, title: e.target.value })} required />
setForm({ ...form, category: e.target.value })} />
setForm({ ...form, sortOrder: Number(e.target.value) })} />