import type { Metadata } from "next"; import Link from "next/link"; import { notFound } from "next/navigation"; import { Badge } from "@/components/ui/badge"; import { getAnnouncementBySlug, getAnnouncementSlugs } from "@/lib/announcements"; type PageProps = { params: Promise<{ slug: string }>; }; export async function generateStaticParams() { const slugs = await getAnnouncementSlugs(); return slugs.map((slug) => ({ slug })); } export async function generateMetadata({ params }: PageProps): Promise { const { slug } = await params; try { const announcement = await getAnnouncementBySlug(slug); return { title: `${announcement.title} | お知らせ`, description: announcement.summary || `${announcement.title} のお知らせです。`, }; } catch { return { title: "お知らせ", description: "お知らせページ", }; } } export default async function AnnouncementDetailPage({ params }: PageProps) { const { slug } = await params; let announcement; try { announcement = await getAnnouncementBySlug(slug); } catch { notFound(); } return (
お知らせ詳細

{announcement.date}

{announcement.title}

お知らせ一覧へ戻る
); }