export const dynamic = "force-dynamic";
import type { Metadata } from "next";
import Link from "next/link";
import { notFound } from "next/navigation";
import { getTqkMeta, getTqkIntroSegments } from "@/lib/tqk";
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("tqk");
}
export default async function TqkPage() {
const meta = await getTqkMeta();
if (!meta) notFound();
const introSegments = await getTqkIntroSegments();
// Split intro segments into front matter (order < 50) and back matter (order >= 50)
const frontMatter = introSegments.filter((seg) => seg.order < 50);
const backMatter = introSegments.filter((seg) => seg.order >= 50);
return (
← Books
{meta.title}
{meta.author}
{/* Description */}
{meta.description && (
{meta.description}
)}
{/* Front Matter */}
{frontMatter.length > 0 && (
Front Matter
{frontMatter.map((seg) => (
-
))}
)}
{/* Chapters */}
Chapters
{meta.chapters.map((ch) => (
-
Chapter {ch.number}
{ch.title}
))}
{/* Back Matter */}
{backMatter.length > 0 && (
Back Matter
{backMatter.map((seg) => (
-
))}
)}
);
}