export const dynamic = "force-dynamic"; import type { Metadata } from "next"; import { redirect } from "next/navigation"; import { notFound } from "next/navigation"; import Link from "next/link"; import { getChapterVerseIndex, getProseChapter } from "@/lib/api"; import { buildOgMeta } from "@/lib/og"; import { BOOK_NAMES } from "@/lib/constants"; import { Card, CardContent } from "@/components/ui/card"; import { PageHeader } from "@/components/layout/page-header"; import { FindInPage } from "@/components/layout/find-in-page"; export async function generateMetadata({ params, }: { params: Promise<{ chapter: string }>; }): Promise { const { chapter } = await params; // Non-numeric segments are front matter (dedication, foreword, …). if (isNaN(parseInt(chapter))) { const segment = await getProseChapter("bg", 0, chapter); return buildOgMeta({ title: BOOK_NAMES["bg"], detail: segment?.title ?? "Front Matter", }); } return buildOgMeta({ title: BOOK_NAMES["bg"], detail: `Chapter ${chapter}` }); } export default async function ChapterPage({ params, }: { params: Promise<{ chapter: string }>; }) { const { chapter } = await params; // Front matter — non-numeric slugs (dedication, foreword, preface, // introduction, disciplic-succession) resolve to prose intro-segments. if (isNaN(parseInt(chapter))) { const segment = await getProseChapter("bg", 0, chapter); if (!segment) notFound(); return (
← {BOOK_NAMES["bg"]}

{segment.title}

{segment.paragraphs.map((paragraph, i) => (
))}
); } // Numeric chapters — redirect to the first verse. const verseIndex = await getChapterVerseIndex("bg", null, parseInt(chapter)); if (verseIndex.length === 0) { notFound(); } redirect(`/books/bg/${chapter}/${verseIndex[0].verse}`); }