import { getPage, getPages } from "@/app/source"; import type { Metadata } from "next"; import { DocsPage, DocsBody, DocsTitle } from "fumadocs-ui/page"; import { notFound } from "next/navigation"; import { absoluteUrl } from "@/lib/utils"; export default async function Page({ params, }: { params: { slug?: string[] }; }) { const page = getPage(params.slug); if (page == null) { notFound(); } const MDX = page.data.exports.default; return ( , }} footer={{ enabled: false, }} > {page.data.title} ); } export async function generateStaticParams() { return getPages().map((page) => ({ slug: page.slugs, })); } export function generateMetadata({ params }: { params: { slug?: string[] } }) { const page = getPage(params.slug); if (page == null) notFound(); const baseUrl = process.env.NEXT_APP_PUBLIC_URL; const url = new URL(`${baseUrl}/api/og`); const { title, description } = page.data; const pageSlug = page.file.path; url.searchParams.set("type", "Documentation"); url.searchParams.set("mode", "dark"); url.searchParams.set("heading", `${title}`); return { title, description, openGraph: { title, description, type: "Documentation", url: absoluteUrl(`docs/${pageSlug}`), images: [ { url: url.toString(), width: 1200, height: 630, alt: title, }, ], }, twitter: { card: "summary_large_image", title, description, images: [url.toString()], }, }; }