{showEmpty ? (
{hasActiveFilters ? (
) : (
)}
) : (
<>
{/* ALWAYS render `itemsPerPage` slots — visibility toggles so the
list height is stable across loading ↔ loaded. */}
{Array.from({ length: itemsPerPage }).map((_, i) => {
const release = releases[i]
const hasData = !!release
return (
{isLoading ? (
) : release ? (
) : (
)}
)
})}
{/* Pagination — always present at the bottom for consistent spacing. */}
{isLoading ? (
) : releases.length > 0 && totalPages > 1 ? (
) : (
)}
>
)}