export const dynamic = "force-dynamic"; import type { Metadata } from "next"; import Link from "next/link"; import { notFound } from "next/navigation"; import { getNoiMeta, getNoiIntroSegments } from "@/lib/noi"; import { ogForBook } from "@/lib/og"; import { PageHeader } from "@/components/layout/page-header"; import { JsonLd } from "@/components/seo/json-ld"; import { bookJsonLd } from "@/lib/jsonld"; import { Card, CardContent } from "@/components/ui/card"; export function generateMetadata(): Metadata { return ogForBook("noi"); } export default async function NoiPage() { const meta = await getNoiMeta(); if (!meta) notFound(); const introSegments = await getNoiIntroSegments(); const frontPages = introSegments.find((s) => s.slug === "front-pages"); const preface = introSegments.find((s) => s.slug === "preface"); const appendixes = introSegments.find((s) => s.slug === "appendixes"); return (
← Books

{meta.title}

{meta.subtitle}

{meta.author}

{/* Description */} {meta.description && (

{meta.description}

)} {/* Front Matter */} {(frontPages || preface) && (

Front Matter

    {frontPages && (
  • {frontPages.title}

  • )} {preface && (
  • {preface.title}

  • )}
)} {/* Texts */}

Texts

    {meta.texts.map((t) => (
  • Text {t.number}

    {t.title}

  • ))}
{/* Appendixes */} {appendixes && (

Appendixes

  • {appendixes.title}

)}
); }