import { Video } from '../../types/api';
import { VideoCard } from '../VideoCard/VideoCard';
interface VideoGridProps {
videos: Video[];
loading: boolean;
error: string | null;
onVideoClick: (videoId: string) => void;
page: number;
totalPages: number;
onPageChange: (page: number) => void;
}
export function VideoGrid({
videos,
loading,
error,
onVideoClick,
page,
totalPages,
onPageChange
}: VideoGridProps) {
if (loading) {
return (
{Array.from({ length: 12 }).map((_, i) => (
))}
);
}
if (error) {
return (
);
}
if (videos.length === 0) {
return (
No videos found
Try adding some channels from the admin panel
);
}
return (
{videos.map(video => (
onVideoClick(video.id)}
/>
))}
{totalPages > 1 && (
{Array.from({ length: Math.min(totalPages, 5) }, (_, i) => {
let pageNum;
if (totalPages <= 5) {
pageNum = i + 1;
} else if (page <= 3) {
pageNum = i + 1;
} else if (page >= totalPages - 2) {
pageNum = totalPages - 4 + i;
} else {
pageNum = page - 2 + i;
}
return (
);
})}
)}
);
}