'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.
{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.
)
}
function Step3Confirm({ direktForm, uploading, onTitleChange, onBack, onUpload }: {
direktForm: DirektuploadForm; uploading: boolean
onTitleChange: (v: string) => void; onBack: () => void; onUpload: () => void
}) {
return (
Zusammenfassung
Pruefen Sie Ihre Eingaben und starten Sie die Korrektur.
Titel
onTitleChange(e.target.value)}
className="text-sm font-medium text-slate-800 bg-white border border-slate-200 rounded px-2 py-1 text-right"
/>
Anzahl Arbeiten
{direktForm.files.length}
Aufgabentyp
{direktForm.aufgabentyp || 'Nicht angegeben'}
Erwartungshorizont
{direktForm.ehText ? 'Vorhanden' : 'Nicht angegeben'}
Was passiert jetzt?
- Eine neue Klausur wird automatisch erstellt
- Alle {direktForm.files.length} Arbeiten werden hochgeladen
- OCR-Erkennung der Handschrift startet automatisch
- Sie werden zur Korrektur-Ansicht weitergeleitet
)
}