import { PaginationState } from "@tanstack/react-table"; import { useState } from "react"; import React from "react"; import { Citation, CitationDescription, CitationGrid, CitationIcons, CitationIndex, CitationTitle, } from "@sparkle/components/Citation"; import { Pagination } from "@sparkle/components/Pagination"; import { classNames } from "@sparkle/lib/utils"; interface CitationItem { description?: string; title: string; icon: React.JSX.Element; href?: string; } interface PaginatedCitationsGridProps { items: CitationItem[]; maxItemsPerPage?: 6 | 9 | 12 | 15; } export function PaginatedCitationsGrid({ items, maxItemsPerPage = 12, }: PaginatedCitationsGridProps) { const [pagination, setPagination] = useState({ pageIndex: 0, pageSize: maxItemsPerPage, }); if (items.length === 0) { return null; } const { pageIndex, pageSize } = pagination; const startIndex = pageIndex * pageSize; const paginatedItems = items.slice(startIndex, startIndex + pageSize); return (
{paginatedItems.map((d, idx) => { return ( {startIndex + idx + 1} {d.icon} {d.title} {d.description} ); })}
maxItemsPerPage ? "s-visible" : "s-collapse" )} >
); }