'use client'; import { useRef, useCallback } from 'react'; import { Card } from '@/components/ui/Card'; import { Badge } from '@/components/ui/Badge'; import { Icons } from '@/components/ui/Icon'; import { useKeyboardNavigation } from '@/lib/hooks/useKeyboardNavigation'; interface Episode { name?: string; url: string; } interface EpisodeListProps { episodes: Episode[] | null; currentEpisode: number; onEpisodeClick: (episode: Episode, index: number) => void; } export function EpisodeList({ episodes, currentEpisode, onEpisodeClick }: EpisodeListProps) { const listRef = useRef(null); const buttonRefs = useRef<(HTMLButtonElement | null)[]>([]); // Keyboard navigation useKeyboardNavigation({ enabled: true, containerRef: listRef, currentIndex: currentEpisode, itemCount: episodes?.length || 0, orientation: 'vertical', onNavigate: useCallback((index: number) => { buttonRefs.current[index]?.focus(); buttonRefs.current[index]?.scrollIntoView({ behavior: 'smooth', block: 'nearest' }); }, []), onSelect: useCallback((index: number) => { if (episodes && episodes[index]) { onEpisodeClick(episodes[index], index); } }, [episodes, onEpisodeClick]), }); return (

选集 {episodes && ( {episodes.length} )}

{episodes && episodes.length > 0 ? ( episodes.map((episode, index) => ( )) ) : (

暂无剧集信息

)}
); }