import { Accordion, AccordionContent, AccordionItem, AccordionTrigger } from "@/components/ui/accordion"; import { Button } from "@/components/ui/button"; import { Input } from "@/components/ui/input"; import { Separator } from "@/components/ui/separator"; import { Footer } from "@/components/utils/Footer"; import { ContentContainer, Page } from "@/components/utils/Layout"; import { NavBar } from "@/components/utils/NavBar"; import { PostList } from "@/components/utils/PostList"; import { SEO } from "@/components/utils/SEO"; import { PostCountPerPagination } from "@/consts/consts"; import { Config } from "@/data/config"; import { sortedPosts } from "@/lib/post-process"; import { isEmptyArray, paginateArray } from "@/lib/utils"; import type { TPostListItem } from "@/types/post-list"; import { nanoid } from "nanoid"; import type { GetStaticPaths, GetStaticProps } from "next"; import Link from "next/link"; import { useRouter } from "next/navigation"; import { type ChangeEvent, type KeyboardEvent, useEffect, useState } from "react"; import { LuPenTool } from "react-icons/lu"; type PostsPageProps = { pageAmount: number; pageNumber: number; postList: TPostListItem[]; tagList: { name: string; count: number }[]; }; export default function PostsPage(props: PostsPageProps) { const router = useRouter(); const [pageNumber, setPageNumber] = useState(props.pageNumber.toString()); const handleEnterKeyJump = (event: KeyboardEvent) => { setPageNumber(pageNumber.replace(/[^\d]/g, "")); if (Number.parseInt(pageNumber) > 0 && Number.parseInt(pageNumber) < props.pageAmount + 1) { (event.key === "Go" || event.key === "Enter") && router.push(`/posts/${pageNumber}`); return; } }; const handleInputPageNumber = (event: ChangeEvent) => { setPageNumber(event.target.value); }; useEffect(() => { setPageNumber(props.pageNumber.toString().replace(/[^\d]/g, "")); }, [props.pageNumber]); return (

{"ALL POSTS"}

{!isEmptyArray(props.tagList) && ( {"TAG FILTER"}
{props.tagList.map((item) => ( {`${item.name} (${item.count})`} ))}
)}
{props.pageNumber !== 1 && ( )}
{` / ${props.pageAmount}`}
{props.pageNumber !== props.pageAmount && ( )}