"use client"; import { useState } from "react"; import { useMutation } from "@tanstack/react-query"; import { api } from "@/lib/api"; import type { DocumentDraft, DraftDocumentRequest } from "@/lib/types"; import { FileText, Loader2, Copy, Check, Download } from "lucide-react"; const TEMPLATES = { klageschrift: "Klageschrift", klageerwiderung: "Klageerwiderung", abmahnung: "Abmahnung", schriftsatz: "Schriftsatz", berufung: "Berufungsschrift", antrag: "Antrag", stellungnahme: "Stellungnahme", gutachten: "Gutachten", vertrag: "Vertrag", vollmacht: "Vollmacht", upc_claim: "UPC Statement of Claim", upc_defence: "UPC Statement of Defence", upc_counterclaim: "UPC Counterclaim for Revocation", upc_injunction: "UPC Provisional Measures", } as const; const LANGUAGES = [ { value: "de", label: "Deutsch" }, { value: "en", label: "English" }, { value: "fr", label: "Francais" }, ] as const; const inputClass = "w-full rounded-md border border-neutral-200 bg-white px-3 py-2 text-sm text-neutral-900 outline-none transition-colors focus:border-neutral-400 focus:ring-1 focus:ring-neutral-400"; interface DocumentDrafterProps { caseId: string; } export function DocumentDrafter({ caseId }: DocumentDrafterProps) { const [templateType, setTemplateType] = useState(""); const [instructions, setInstructions] = useState(""); const [language, setLanguage] = useState("de"); const [copied, setCopied] = useState(false); const mutation = useMutation({ mutationFn: (req: DraftDocumentRequest) => api.post("/ai/draft-document", req), }); function handleSubmit(e: React.FormEvent) { e.preventDefault(); if (!templateType) return; mutation.mutate({ case_id: caseId, template_type: templateType, instructions, language, }); } function handleCopy() { if (mutation.data?.content) { navigator.clipboard.writeText(mutation.data.content); setCopied(true); setTimeout(() => setCopied(false), 2000); } } function handleDownload() { if (!mutation.data?.content) return; const blob = new Blob([mutation.data.content], { type: "text/plain;charset=utf-8" }); const url = URL.createObjectURL(blob); const a = document.createElement("a"); a.href = url; a.download = `${templateType}_entwurf.txt`; a.click(); URL.revokeObjectURL(url); } return (