"use client" import { Printer } from "lucide-react" import { Button } from "@/components/ui/button" import { Tooltip, TooltipContent, TooltipTrigger } from "@/components/ui/tooltip" import { PrivacyPolicy } from "@/types/privacy-policy" import { markdownToHtmlSync } from "@/lib/markdown" interface PrintPolicyProps { policy: PrivacyPolicy variant?: "default" | "destructive" | "outline" | "secondary" | "ghost" | "link" size?: "default" | "sm" | "lg" | "icon" | "icon-sm" label?: string className?: string } const iconSizes = ["icon", "icon-sm"] export function PrintPolicy({ policy, variant = "outline", size = "sm", label = "Drucken", className, }: PrintPolicyProps) { const handlePrint = () => { const printWindow = window.open("", "_blank") if (!printWindow) return printWindow.document.write(generatePrintContent(policy)) printWindow.document.close() } const isIconOnly = iconSizes.includes(size) const button = ( ) if (!isIconOnly) return button return ( {button} Als PDF drucken ) } function generatePrintContent(policy: PrivacyPolicy): string { const formatDate = (dateString: string) => new Date(dateString).toLocaleDateString("de-DE", { year: "numeric", month: "long", day: "numeric", }) const cleanMarkdown = (content: string) => markdownToHtmlSync(content) const section = (title: string, content?: string | null) => content ? `

${title}

${cleanMarkdown(content)}
` : "" return ` ${policy.title}

Syncova Policies · Datenschutzerklärung

${policy.title}

Erstellt am ${formatDate(policy.createdAt)}${ policy.updatedAt !== policy.createdAt ? ` · Aktualisiert am ${formatDate(policy.updatedAt)}` : "" }

${section("Verantwortlicher im Sinne der DSGVO", policy.responsible)} ${section("Kontaktdaten des Datenschutzbeauftragten", policy.contactDPO)} ${section("Bezeichnung der Verarbeitungstätigkeit", policy.processingDescription)} ${section("Zweck der Datenerhebung", policy.processingPurposes)} ${section("Rechtsgrundlage der Datenerhebung", policy.legalBasis)} ${section("Geplante Empfänger der Daten", policy.recipients)} ${section("Speicherdauer der Daten", policy.storageDuration)} ${section("Herkunft der Daten", policy.dataSource)} ${section("Betroffenen-Rechte", policy.dataSubjectsRights)} ${section("Beschwerderecht bei der Aufsichtsbehörde", policy.complaintRight)} ${section("Widerrufsrecht bei Einwilligung", policy.withdrawalRight)} ${section("Ihre Pflicht zur Bereitstellung der Daten", policy.provisionObligation)} ${section("Folgen, wenn Sie die Daten nicht angeben", policy.provisionConsequences)} ` }