'use client' import { useRef } from 'react' import { useTheme } from '@/lib/ThemeContext' import { useLanguage } from '@/lib/LanguageContext' import { useWorksheet } from '@/lib/worksheet-editor/WorksheetContext' import type { EditorTool } from '@/app/worksheet-editor/types' interface EditorToolbarProps { onOpenAIGenerator: () => void onOpenDocumentImporter: () => void onOpenCleanupPanel?: () => void onOpenOCRImport?: () => void className?: string } interface ToolButtonProps { tool: EditorTool icon: React.ReactNode label: string isActive: boolean onClick: () => void isDark: boolean } function ToolButton({ tool, icon, label, isActive, onClick, isDark }: ToolButtonProps) { return ( ) } export function EditorToolbar({ onOpenAIGenerator, onOpenDocumentImporter, onOpenCleanupPanel, onOpenOCRImport, className = '' }: EditorToolbarProps) { const { isDark } = useTheme() const { t } = useLanguage() const fileInputRef = useRef(null) const { activeTool, setActiveTool, canvas, canUndo, canRedo, undo, redo, } = useWorksheet() const handleToolClick = (tool: EditorTool) => { setActiveTool(tool) } const handleImageUpload = () => { fileInputRef.current?.click() } const handleFileChange = (e: React.ChangeEvent) => { const file = e.target.files?.[0] if (!file || !canvas) return const reader = new FileReader() reader.onload = (event) => { const url = event.target?.result as string if ((canvas as any).addImage) { (canvas as any).addImage(url) } } reader.readAsDataURL(file) // Reset input e.target.value = '' } // Glassmorphism styles const toolbarStyle = isDark ? 'backdrop-blur-xl bg-white/10 border border-white/20' : 'backdrop-blur-xl bg-white/70 border border-black/10 shadow-xl' const dividerStyle = isDark ? 'border-white/20' : 'border-slate-200' return (
{/* Selection Tool */} handleToolClick('select')} isDark={isDark} label="Auswählen" icon={ } />
{/* Text Tool */} handleToolClick('text')} isDark={isDark} label="Text" icon={ } />
{/* Shape Tools */} handleToolClick('rectangle')} isDark={isDark} label="Rechteck" icon={ } /> handleToolClick('circle')} isDark={isDark} label="Kreis" icon={ } /> handleToolClick('line')} isDark={isDark} label="Linie" icon={ } /> handleToolClick('arrow')} isDark={isDark} label="Pfeil" icon={ } />
{/* Image Tools */} } /> {/* AI Image Generator */} } />
{/* Document Import */} {/* Cleanup Panel - Handwriting Removal */} {onOpenCleanupPanel && ( )} {/* OCR Import */} {onOpenOCRImport && ( )}
{/* Table Tool */} handleToolClick('table')} isDark={isDark} label="Tabelle" icon={ } />
{/* Undo/Redo */}
) }