import { JsonLd, PageIntro } from "@/components/blog/parts"; import { blog, categories } from "@/lib/blog/config"; import { breadcrumbLd, crumbs } from "@/lib/blog/feeds"; import { listPublishedPosts } from "@/lib/blog/loader"; import { BLOG_PATH, categoryPath, RECENT_PATH, UPDATED_PATH, } from "@/lib/blog/routes"; import type { Metadata } from "next"; import Link from "next/link"; export const metadata: Metadata = { title: blog.name, description: blog.description, alternates: { canonical: BLOG_PATH }, openGraph: { title: blog.name, description: blog.description, url: BLOG_PATH, type: "website", }, }; export default async function BlogIndex() { const posts = await listPublishedPosts(); const cards = categories .map((c) => ({ ...c, count: posts.filter((p) => p.category === c.slug).length, })) .filter((c) => c.count > 0); return (
{blog.description}
See the most recent posts See the most recently updated posts
{c.description}
{c.count} {c.count === 1 ? "post" : "posts"}