'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 */}
)
}