import Button from "./Button";
import tw, { styled } from "twin.macro";
const Btn = styled(Button)(({ active }) => [tw`rounded-none mx-0`, active && tw`bg-accent`]);
function CustomBtn({ children, setPage, currentPage, page, ...props }) {
return (
setPage(page)} active={page == currentPage} {...props}>
{children}
);
}
export default function Pagination({ currentPage, maxPages, setPage, ...props }) {
function RenderButtons() {
switch (maxPages) {
case 1:
return (
1
);
case 2:
return (
<>
1
2
>
);
case 3:
return (
<>
1
2
3
>
);
case 4:
return (
<>
1
2
3
4
>
);
case 5:
return (
<>
1
2
3
4
5
>
);
default: {
let firstItem = Math.min(Math.max(currentPage - 2, 1), maxPages - 4);
let secondItem = Math.min(Math.max(currentPage - 1, 2), maxPages - 3);
let thirdItem = Math.min(Math.max(currentPage, 3), maxPages - 2);
let fourthItem = Math.min(Math.max(currentPage + 1, 4), maxPages - 1);
let fifthItem = Math.min(Math.max(currentPage + 2, 5), maxPages);
return (
<>
{firstItem != 1 ? <><> : firstItem}
{secondItem}
{thirdItem}
{fourthItem}
{fifthItem != maxPages ? <>>> : fifthItem}
>
);
}
}
}
return (
);
}