/** * Document Settings — Verwaltungsoberfläche für den Dokumente-Generator * (Phase L): Briefpapiere + Druckvorlagen mit Drag&Drop-Block-Editor. */ import React, { useState } from 'react'; import { useTranslation } from 'react-i18next'; import { FileText, Layers } from 'lucide-react'; import { Card } from '@/components/ui/Card'; import { Button } from '@/components/ui/Button'; import { Skeleton } from '@/components/ui/Skeleton'; import { useToast } from '@/components/ui/Toast'; import { useLetterheads, usePrintTemplates, useCreateLetterhead, useDeleteLetterhead, useCreatePrintTemplate, useDeletePrintTemplate, } from '@/api/documents'; import { LetterheadEditor } from '@/components/documents/LetterheadEditor'; import { PrintTemplateEditor } from '@/components/documents/PrintTemplateEditor'; import type { Letterhead, PrintTemplate } from '@/api/documents'; export function DocumentSettingsPage() { const { t } = useTranslation(); const toast = useToast(); const [tab, setTab] = useState<'letterheads' | 'templates'>('letterheads'); const [editingLetterhead, setEditingLetterhead] = useState(null); const [editingTemplate, setEditingTemplate] = useState(null); const { data: letterheads = [], isLoading: lhLoading } = useLetterheads(); const { data: templates = [], isLoading: tplLoading } = usePrintTemplates(); const createLh = useCreateLetterhead(); const deleteLh = useDeleteLetterhead(); const createTpl = useCreatePrintTemplate(); const deleteTpl = useDeletePrintTemplate(); return (
{tab === 'letterheads' && (

{t('documents.letterheads', 'Briefpapiere')}

{lhLoading ? (
) : letterheads.length === 0 ? (

{t('documents.letterhead.empty', 'Noch kein Briefpapier angelegt.')}

) : (
    {letterheads.map((lh) => (
  • {lh.name} {lh.is_default && ( {t('documents.letterhead.default', 'Standard')} )}

    {lh.description || '—'}

  • ))}
)}
)} {tab === 'templates' && (

{t('documents.printTemplates', 'Druckvorlagen')}

{tplLoading ? (
) : templates.length === 0 ? (

{t('documents.template.empty', 'Noch keine Druckvorlage angelegt.')}

) : (
    {templates.map((tpl) => { const lh = letterheads.find((l) => l.id === tpl.letterhead_id); return (
  • {tpl.name} {tpl.entity_type} {tpl.blocks.length} Blöcke

    {lh ? `${t('documents.letterhead', 'Briefpapier')}: ${lh.name}` : t('documents.template.noLetterhead', 'Ohne Briefpapier')}

  • ); })}
)}
)} {editingLetterhead && ( setEditingLetterhead(null)} /> )} {editingTemplate && ( setEditingTemplate(null)} /> )}
); }