Spaces:
Paused
Paused
| import { getPageImage, source } from '@/lib/source'; | |
| import { | |
| DocsBody, | |
| DocsDescription, | |
| DocsPage, | |
| DocsTitle, | |
| } from 'fumadocs-ui/layouts/docs/page'; | |
| import { notFound } from 'next/navigation'; | |
| import { getMDXComponents } from '@/mdx-components'; | |
| import type { Metadata } from 'next'; | |
| import { createRelativeLink } from 'fumadocs-ui/mdx'; | |
| import { LLMCopyButton, ViewOptions } from '@/components/ai/page-actions'; | |
| import { gitConfig } from '@/lib/layout.shared'; | |
| 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 = `/llms.mdx/${[...page.slugs, 'index.mdx'].join('/')}`; | |
| return ( | |
| <DocsPage toc={page.data.toc} full={page.data.full}> | |
| <DocsTitle>{page.data.title}</DocsTitle> | |
| <DocsDescription className="mb-0"> | |
| {page.data.description} | |
| </DocsDescription> | |
| <div className="flex flex-row gap-2 items-center border-b pb-6"> | |
| <LLMCopyButton markdownUrl={markdownUrl} /> | |
| <ViewOptions | |
| markdownUrl={markdownUrl} | |
| githubUrl={`https://github.com/${gitConfig.user}/${gitConfig.repo}/blob/${gitConfig.branch}/packages/docs/content/docs/${page.path}`} | |
| /> | |
| </div> | |
| <DocsBody> | |
| <MDX | |
| components={getMDXComponents({ | |
| // this allows you to link to other pages with relative file paths | |
| a: createRelativeLink(source, page), | |
| })} | |
| /> | |
| </DocsBody> | |
| </DocsPage> | |
| ); | |
| } | |
| export async function generateStaticParams() { | |
| return source.generateParams(); | |
| } | |
| export const dynamicParams = false; | |
| export async function generateMetadata( | |
| props: PageProps<'/[...slug]'> | |
| ): Promise<Metadata> { | |
| const params = await props.params; | |
| const page = source.getPage(params.slug); | |
| if (!page) notFound(); | |
| return { | |
| title: page.data.title, | |
| description: page.data.description, | |
| openGraph: { | |
| images: getPageImage(page).url, | |
| }, | |
| }; | |
| } | |