import { Button } from "@pram/ui/components/button";
import { Card, CardContent, CardHeader, CardTitle } from "@pram/ui/components/card";
import { MaterialIcon } from "@/components/ui/MaterialIcon";
import { EXAM_TYPES, SECTIONS } from "@/lib/generate-constants";
interface TestBlueprintCardProps {
examType: string;
selectedSections: string[];
selectedFormats: string[];
questionCount: number;
weaknessAlign: number;
mode: "quick" | "agentic";
setMode: (mode: "quick" | "agentic") => void;
activeCount: number;
maxParallel: number;
generatePending: boolean;
hasKey: boolean;
error: string | null;
onGenerate: () => void;
disableQuick?: boolean;
}
export function TestBlueprintCard({
examType,
selectedSections,
selectedFormats,
questionCount,
weaknessAlign,
mode,
setMode,
activeCount,
maxParallel,
generatePending,
hasKey,
error,
onGenerate,
onDismissError,
disableQuick,
}: TestBlueprintCardProps & { onDismissError?: () => void }) {
const sectionNames = selectedSections
.map((id) => SECTIONS.find((s) => s.id === id)?.name)
.filter(Boolean);
return (
Test Blueprint
Ujian
{EXAM_TYPES.find((t) => t.id === examType)?.name}
Section
{sectionNames.join(" + ")}
Jumlah Soal
{questionCount} Soal
Format
{selectedFormats.length} Jenis
Estimasi Durasi
{questionCount * 2} Menit
{/* AI Confidence Score */}
AI Confidence Score
{Math.round(weaknessAlign)}%
Probabilitas tinggi untuk mengatasi blindspot linguistik utama.
{/* Mode Toggle */}
{disableQuick && (
Reading/Writing membutuhkan Agentic mode (min 20 soal)
)}
{mode === "agentic" && (
Mode Agentic
Multi-step validation: passage → validate → questions → self-check → quality score. Lebih lambat tapi kualitas lebih terjamin.
)}
{/* Primary CTA */}
{error && (
{error}
{onDismissError && (
)}
)}
);
}