'use client' /** * Direct upload wizard tab (3 steps). * Allows quick upload of student work files without creating a klausur first. */ import type { DirektuploadForm, TabId } from './list-types' interface DirektuploadTabProps { direktForm: DirektuploadForm direktStep: 1 | 2 | 3 uploading: boolean onFormChange: (form: DirektuploadForm) => void onStepChange: (step: 1 | 2 | 3) => void onUpload: () => void onCancel: () => void } export default function DirektuploadTab({ direktForm, direktStep, uploading, onFormChange, onStepChange, onUpload, onCancel, }: DirektuploadTabProps) { return (
{/* Progress Header */}

Schnellstart - Direkt Korrigieren

{[1, 2, 3].map((step) => (
= step ? 'bg-blue-600 text-white' : 'bg-slate-200 text-slate-500' }`}> {step}
= step ? 'text-slate-800' : 'text-slate-400'}`}> {step === 1 ? 'Arbeiten' : step === 2 ? 'Erwartungshorizont' : 'Starten'} {step < 3 &&
step ? 'bg-blue-600' : 'bg-slate-200'}`} />}
))}
{/* Step 1: Upload Files */} {direktStep === 1 && ( onFormChange({ ...direktForm, files })} onNext={() => onStepChange(2)} /> )} {/* Step 2: EH */} {direktStep === 2 && ( onFormChange({ ...direktForm, aufgabentyp: v })} onEhTextChange={(v) => onFormChange({ ...direktForm, ehText: v })} onBack={() => onStepChange(1)} onNext={() => onStepChange(3)} /> )} {/* Step 3: Confirm */} {direktStep === 3 && ( onFormChange({ ...direktForm, klausurTitle: v })} onBack={() => onStepChange(2)} onUpload={onUpload} /> )}
) } // --- Sub-components for each step --- function Step1Files({ files, onFilesChange, onNext }: { files: File[]; onFilesChange: (f: File[]) => void; onNext: () => void }) { return (

Schuelerarbeiten hochladen

Laden Sie die eingescannten Klausuren hoch. Unterstuetzte Formate: PDF, JPG, PNG.

0 ? 'border-green-300 bg-green-50' : 'border-slate-300 hover:border-blue-400 hover:bg-blue-50' }`} onDrop={(e) => { e.preventDefault() onFilesChange([...files, ...Array.from(e.dataTransfer.files)]) }} onDragOver={(e) => e.preventDefault()} >

Dateien hier ablegen oder

{files.length > 0 && (
{files.length} Datei{files.length !== 1 ? 'en' : ''} ausgewaehlt
{files.map((file, idx) => (
{file.name}
))}
)}
) } function Step2EH({ aufgabentyp, ehText, onAufgabentypChange, onEhTextChange, onBack, onNext }: { aufgabentyp: string; ehText: string onAufgabentypChange: (v: string) => void; onEhTextChange: (v: string) => void onBack: () => void; onNext: () => void }) { return (

Erwartungshorizont (optional)

Laden Sie Ihren eigenen Erwartungshorizont hoch oder beschreiben Sie die Aufgabenstellung. Dies hilft der KI, passendere Bewertungen vorzuschlagen.