import React from 'react'; import { Check, Play, X } from 'lucide-react'; interface Episode { episode_number: number; name: string; fileName?: string; } interface Season { season_number: number; name: string; episodes: Episode[]; } interface PlaybackProgress { [key: string]: { currentTime: number; duration: number; lastPlayed: string; completed: boolean; }; } interface EpisodesPanelProps { seasons: Season[]; selectedSeason: string; selectedEpisode: string; playbackProgress: PlaybackProgress; onSelectEpisode: (seasonName: string, episode: Episode) => void; onClose: () => void; showTitle?: string; } const EpisodesPanel: React.FC = ({ seasons, selectedSeason, selectedEpisode, playbackProgress, onSelectEpisode, onClose, showTitle = 'Episodes' }) => { // Helper function to get episode progress const getEpisodeProgress = (seasonName: string, episodeFileName: string) => { const episodeId = `${seasonName}-${episodeFileName}`; return playbackProgress[episodeId] || null; }; return (

{showTitle}

{seasons.map((season) => (

{season.name}

{season.episodes.map((episode) => { const progress = getEpisodeProgress(season.name, episode.fileName || ''); const progressPercent = progress ? Math.min(100, Math.floor((progress.currentTime / progress.duration) * 100)) : 0; return (
onSelectEpisode(season.name, episode)} >
{selectedEpisode === episode.fileName ? (
) : (
{episode.episode_number}
)}

{episode.name}

{progress?.completed && ( )}
); })}
))}
); }; export default EpisodesPanel;