import { PageSEO } from '@/components/SEO' import siteMetadata from '@/data/siteMetadata' import { getAllFilesFrontMatter } from '@/lib/mdx' import ListLayout from '@/layouts/ListLayout' import { POSTS_PER_PAGE } from '../../blog' import { GetStaticPaths, GetStaticProps, InferGetStaticPropsType } from 'next' import { PostFrontMatter } from 'types/PostFrontMatter' export const getStaticPaths: GetStaticPaths<{ page: string }> = async () => { const totalPosts = await getAllFilesFrontMatter('blog') const totalPages = Math.ceil(totalPosts.length / POSTS_PER_PAGE) const paths = Array.from({ length: totalPages }, (_, i) => ({ params: { page: (i + 1).toString() }, })) return { paths, fallback: false, } } export const getStaticProps: GetStaticProps<{ posts: PostFrontMatter[] initialDisplayPosts: PostFrontMatter[] pagination: { currentPage: number; totalPages: number } }> = async (context) => { const { params: { page }, } = context const posts = await getAllFilesFrontMatter('blog') const pageNumber = parseInt(page as string) const initialDisplayPosts = posts.slice( POSTS_PER_PAGE * (pageNumber - 1), POSTS_PER_PAGE * pageNumber ) const pagination = { currentPage: pageNumber, totalPages: Math.ceil(posts.length / POSTS_PER_PAGE), } return { props: { posts, initialDisplayPosts, pagination, }, } } export default function PostPage({ posts, initialDisplayPosts, pagination, }: InferGetStaticPropsType) { return ( <> ) }