import React, { useState, useEffect } from 'react';
import { X, Projector, Download, Loader2, FileText, Image, Activity, GitCommit } from 'lucide-react';
import { generateSlideDeck } from '../api';
const SlideDeckModal = ({ isOpen, onClose, notebookId }) => {
const [generating, setGenerating] = useState(false);
const [result, setResult] = useState(null);
const [error, setError] = useState(null);
const BACKEND_URL = import.meta.env.VITE_BACKEND_URL || 'http://localhost:8000';
useEffect(() => {
if (isOpen && !result && !generating) {
handleGenerate();
}
}, [isOpen]);
const handleGenerate = async () => {
setGenerating(true);
setError(null);
try {
const data = await generateSlideDeck(notebookId);
setResult(data);
} catch (err) {
console.error(err);
setError("Failed to generate slide deck. Please try again.");
} finally {
setGenerating(false);
}
};
if (!isOpen) return null;
// Helper to get icon for visual type
const getVisualIcon = (type) => {
switch (type) {
case 'diagram': return
AI-Planned Presentation
Planning your presentation...
Analyzing documents, structuring narrative, and designing slides.
{result.outline.slides.length} Slides Generated
{slide.speaker_notes}
{slide.visual && slide.visual.type !== 'none' && (