import { Media, Staff } from '@/types'; import { Play, Bookmark, MoreHorizontal, Star, ChevronLeft, ChevronRight, Search, ListFilter } from 'lucide-react'; import { Button } from '@/components/ui/button'; import { Badge } from '@/components/ui/badge'; import { Input } from '@/components/ui/input'; import { Separator } from '@/components/ui/separator'; import { motion } from 'motion/react'; interface DetailViewProps { media: Media; onBack: () => void; onPersonClick: (person: Staff) => void; } export default function DetailView({ media, onBack, onPersonClick }: DetailViewProps) { return (
{/* Banner */}
{media.title}
{/* Content */}
{/* Left Column: Poster */}
{media.title}
{/* Right Column: Info */}

{media.title} ({media.year})

{media.rating} / 10

Genres

{media.genres?.map(genre => ( • {genre} ))}

{media.description}

{/* Tags */}
{media.tags?.map(tag => ( {tag} ))}
{media.studios && media.studios.length > 0 && (

Studios: {media.studios.join(', ')}

)} {media.developers && media.developers.length > 0 && (
Developers: {media.developers.map(dev => ( {dev} ))}
)} {media.platforms && media.platforms.length > 0 && (
Platforms: {media.platforms.map(platform => ( {platform} ))}
)} {media.categories && media.categories.length > 0 && (
Categories: {media.categories.map(category => ( {category} ))}
)} {media.completionStatus && (

Completion: {media.completionStatus}

)} {media.source && (

Source: {media.source}

)} {media.playCount !== undefined && media.playCount !== null && (

Play Count: {media.playCount}

)} {media.playtime !== undefined && media.playtime !== null && media.playtime > 0 && (

Playtime: {media.playtime}h

)} {media.lastActivity && (

Last Activity: {media.lastActivity}

)}
Links:
{/* Staff Section - Only show if staff data exists */} {media.staff && media.staff.length > 0 && (

Cast & Crew

{media.staff.map(person => (
onPersonClick(person)} >
{person.name}

{person.name}

{person.role}

{person.characterName}
))}
)} {/* Episodes Section - Only show if episodes data exists */} {media.episodes && media.episodes.length > 0 && (
{media.episodes.length} Episode{media.episodes.length !== 1 ? 's' : ''}
{media.episodes.map(episode => (
{episode.title}

S1:E{episode.number} • {episode.title}

{episode.date} • {episode.duration}

{episode.description}

))}
)}
); }