import React, { useState } from 'react'; import { X, Play, Square, Download, Clock, Loader2 } from 'lucide-react'; import { generateAudio } from '../api'; const AudioPlayerModal = ({ isOpen, onClose, script }) => { const [generating, setGenerating] = useState(false); const [audioUrl, setAudioUrl] = useState(null); const [error, setError] = useState(null); // Backend URL might be needed if audioUrl is relative const BACKEND_URL = import.meta.env.VITE_BACKEND_URL || 'http://localhost:8000'; if (!isOpen) return null; const handleGenerate = async () => { setGenerating(true); setError(null); try { const result = await generateAudio(script); // Result.audio_url should be relative like /static/audio/... // We prepend backend URL if it's not absolute (or use it directly if simple img tag, but audio src needs full path often if cross-origin or proxy issues, though simple string concat is safest for localhost) setAudioUrl(`${BACKEND_URL}${result.audio_url}`); } catch (err) { console.error(err); setError("Failed to generate audio. Please try again."); } finally { setGenerating(false); } }; return (
{/* Header */}

Audio Overview

Listen to an AI-generated summary

{/* Content */}
{/* Script Review */}

Narration Script

{script}
{/* Error Message */} {error && (
{error}
)} {/* Audio Player */} {audioUrl && (

Your Audio is Ready

Download Audio
)}
{/* Footer Controls */}
{!audioUrl && ( )}
); }; export default AudioPlayerModal;