import type { VideoLessonPlan } from "@/lib/video/videoLessonPlanner"; type VideoLessonPreviewProps = { plan: VideoLessonPlan; }; function Metric({ label, value }: { label: string; value: string | number }) { return (

{label}

{value}

); } function SectionLabel({ children }: { children: React.ReactNode }) { return

{children}

; } function sceneTypeLabel(sceneType: string): string { const labels: Record = { intro: "class intro", session_plan: "session plan", teacher_explanation: "tutor explanation", board_drawing: "board drawing", worked_example: "worked example", method: "DocDoe method", notes: "notebook notes", exam_answer: "exam answer", practice_pause: "practice pause", quiz: "quiz", revision: "revision", outro: "class finish", }; return labels[sceneType] ?? sceneType.replace(/_/g, " "); } function voiceStyleLabel(style: string): string { const labels: Record = { calm_teacher: "calm tutor", exam_coach: "exam coach", quick_revision: "quick revision", }; return labels[style] ?? style.replace(/_/g, " "); } export function VideoLessonPreview({ plan }: VideoLessonPreviewProps) { const narrationPreview = plan.audioScript.slice(0, 2); const boardPreview = plan.boardTimeline.slice(0, 3); const notebookPreview = plan.notebookSections.slice(0, 2); const practicePreview = plan.practicePauses.slice(0, 2); return (

Audio/video preview

{plan.missionTitle}

Video renderer coming later; this is today's lesson plan. No MP4 or generated video is created here.

Renderer coming later
{plan.warnings.length > 0 ? (
Planner warnings
    {plan.warnings.map((warning) => (
  • {warning}
  • ))}
) : null}
Lesson timeline
    {plan.scenes.slice(0, 8).map((scene) => (
  1. {scene.title}

    {scene.startMinute}-{scene.startMinute + scene.durationMinutes} min

    {sceneTypeLabel(scene.sceneType)}

    {scene.narration[0]}

  2. ))}
Board drawing
{boardPreview.map((frame) => (

{frame.frameTitle}

at {frame.timestampMinute} min

    {frame.drawingSteps.slice(0, 3).map((step) => (
  • {step}
  • ))}
))}
Tutor explanation
{narrationPreview.map((block) => (

{voiceStyleLabel(block.voiceStyle)}

{block.script}

))}
Copy this to notebook
{notebookPreview.map((section) => (

{section.title}

    {section.copyToNotebook.slice(0, 3).map((line) => (
  • {line}
  • ))}
))}
Notice this
{practicePreview.map((pause) => (

{pause.prompt}

Pause: {pause.pauseSeconds} sec

Hint: {pause.hint}

))}
); }