{post.title}
{getReadingTime(post.title)} min read
import { notFound } from 'next/navigation' import { MDXRemote } from 'next-mdx-remote/rsc' import { getPosts, getPost, getReadingTime } from '@/lib/posts' import { TableOfContents } from '@/components/blog/TableOfContents' export async function generateStaticParams() { const posts = await getPosts() if (posts.length === 0) { return [{ slug: '__placeholder__' }] } return posts.map((post) => ({ slug: post.slug })) } export async function generateMetadata({ params }: { params: Promise<{ slug: string }> }) { const slug = (await params).slug const post = await getPost(slug) if (!post) return { title: 'Not Found' } return { title: `${post.title} | blog` } } export default async function PostPage({ params }: { params: Promise<{ slug: string }> }) { const slug = (await params).slug const post = await getPost(slug) if (!post) notFound() return (
{getReadingTime(post.title)} min read