import { source } from '@/lib/source'; import { DocsBody, DocsDescription, DocsPage, DocsTitle, MarkdownCopyButton, ViewOptionsPopover, } from 'fumadocs-ui/layouts/notebook/page'; import { notFound } from 'next/navigation'; import { getMDXComponents } from '@/components/mdx'; import type { Metadata } from 'next'; import { createRelativeLink } from 'fumadocs-ui/mdx'; import { getPageImageUrl, getPageMarkdownUrl, gitConfig, siteUrl } from '@/lib/shared'; import { AskAIAboutPage } from '@/components/ai/ask-page'; import { SiteFooter } from '@/components/site-footer'; import { AskBar } from '@/components/ai/ask-bar'; export default async function Page(props: PageProps<'/[[...slug]]'>) { const params = await props.params; const page = source.getPage(params.slug); if (!page) notFound(); const MDX = page.data.body; const markdownUrl = getPageMarkdownUrl(page).url; return ( ), }} > {page.data.title} {page.data.description}
); } export async function generateStaticParams() { return source.generateParams(); } export async function generateMetadata(props: PageProps<'/[[...slug]]'>): Promise { const params = await props.params; const page = source.getPage(params.slug); if (!page) notFound(); const isHome = page.slugs.length === 0; return { title: isHome ? { absolute: `${page.data.title} - Pangolin Docs` } : page.data.title, description: page.data.description, alternates: { canonical: page.url, types: { 'text/markdown': getPageMarkdownUrl(page).url }, }, openGraph: { images: isHome ? '/images/home-social-graph.png' : getPageImageUrl(page).url, }, }; }