import * as hi from "jsr:@preact-icons/hi2"; export function PaginationControl({ paginatedData, currentUrl, authorId, }: { paginatedData: PaginatedPosts; currentUrl: URL; authorId: number; }) { const buildUrl = (page: number, limit?: number) => { const params = new URLSearchParams(currentUrl.searchParams); params.set("page", page.toString()); if (limit) params.set("limit", limit.toString()); return `${currentUrl.pathname}?${params.toString()}`; }; if (paginatedData.totalPages <= 1) return null; return (
{/* Pagination info and controls */}
{paginatedData.hasPrevPage && (
Previous
)} {/* Page numbers */}
{Array.from( { length: Math.min(paginatedData.totalPages, 7) }, (_, i) => { let pageNum; if (paginatedData.totalPages <= 7) { pageNum = i + 1; } else { const start = Math.max(1, paginatedData.currentPage - 3); const end = Math.min(paginatedData.totalPages, start + 6); pageNum = start + i; if (pageNum > end) return null; } const isCurrentPage = pageNum === paginatedData.currentPage; return ( {pageNum} ); }, )}
{paginatedData.hasNextPage && (
Next
)}
{/* Quick jump to page */}
); }