"use client"; import { useState } from "react"; import { ClipboardCheck, LoaderCircle, Send } from "lucide-react"; import { generateBrainAnswerCorrection } from "@/lib/api/brain"; import type { BrainAnswerCorrectionOutput, BrainGenerationResponse } from "@/lib/api/types"; import type { ApiDocument } from "@/lib/api/types"; type AnswerCorrectionFormProps = { selectedDocuments: ApiDocument[]; onSubmit: (result: BrainGenerationResponse, question: string, studentAnswer: string) => void; onCancel: () => void; }; export function AnswerCorrectionForm({ selectedDocuments, onSubmit, onCancel, }: AnswerCorrectionFormProps) { const [question, setQuestion] = useState(""); const [studentAnswer, setStudentAnswer] = useState(""); const [marks, setMarks] = useState("not_sure"); const [subject, setSubject] = useState(selectedDocuments[0]?.subject ?? ""); const [isSubmitting, setIsSubmitting] = useState(false); const [error, setError] = useState(null); const canSubmit = question.trim().length > 0 && studentAnswer.trim().length > 0 && !isSubmitting; async function handleSubmit() { if (!canSubmit) return; setIsSubmitting(true); setError(null); try { const sourceIds = selectedDocuments.filter((d) => d.status === "ready").map((d) => d.id); const result = await generateBrainAnswerCorrection({ topic: question, subject: subject || undefined, source_id: sourceIds[0] || undefined, source_ids: sourceIds.length > 0 ? sourceIds : undefined, language_preference: "English", options: { mode: "answer_correction", question, student_answer: studentAnswer, marks, subject: subject || undefined, }, }); onSubmit(result, question, studentAnswer); } catch (err) { setError(err instanceof Error ? err.message : "Correction failed. Please try again."); setIsSubmitting(false); } } return (
Answer Correction

Find marks lost and rewrite in board format

{selectedDocuments.length > 0 && (

Using: {selectedDocuments.map((d) => d.title).join(", ")}

)}