'use client' import { useState } from 'react' import { useTheme } from '@/lib/ThemeContext' import { useLanguage } from '@/lib/LanguageContext' import { useWorksheet } from '@/lib/worksheet-editor/WorksheetContext' interface ExportPanelProps { isOpen: boolean onClose: () => void } export function ExportPanel({ isOpen, onClose }: ExportPanelProps) { const { isDark } = useTheme() const { t } = useLanguage() const { exportToPDF, exportToImage, document, saveDocument, isDirty } = useWorksheet() const [isExporting, setIsExporting] = useState(false) const [exportFormat, setExportFormat] = useState<'pdf' | 'png' | 'jpg'>('pdf') const handleExport = async () => { setIsExporting(true) try { let blob: Blob let filename: string if (exportFormat === 'pdf') { blob = await exportToPDF() filename = `${document?.title || 'Arbeitsblatt'}.pdf` } else { blob = await exportToImage(exportFormat) filename = `${document?.title || 'Arbeitsblatt'}.${exportFormat}` } // Download file const url = URL.createObjectURL(blob) const a = window.document.createElement('a') a.href = url a.download = filename window.document.body.appendChild(a) a.click() window.document.body.removeChild(a) URL.revokeObjectURL(url) onClose() } catch (error) { console.error('Export failed:', error) alert('Export fehlgeschlagen. Bitte versuchen Sie es erneut.') } finally { setIsExporting(false) } } const handleSave = async () => { setIsExporting(true) try { await saveDocument() alert('Dokument gespeichert!') } catch (error) { console.error('Save failed:', error) alert('Speichern fehlgeschlagen.') } finally { setIsExporting(false) } } if (!isOpen) return null // Glassmorphism styles const overlayStyle = 'fixed inset-0 bg-black/50 backdrop-blur-sm z-50' const modalStyle = isDark ? 'backdrop-blur-xl bg-white/10 border border-white/20' : 'backdrop-blur-xl bg-white/90 border border-black/10 shadow-2xl' const buttonStyle = (active: boolean) => isDark ? active ? 'bg-purple-500/30 text-purple-300 border border-purple-400/50' : 'bg-white/5 text-white/70 border border-transparent hover:bg-white/10' : active ? 'bg-purple-100 text-purple-700 border border-purple-300' : 'bg-slate-50 text-slate-600 border border-transparent hover:bg-slate-100' const labelStyle = isDark ? 'text-white/70' : 'text-slate-600' return (
Arbeitsblatt speichern oder exportieren