import { DocsBody, 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 { PageActions } from '@/components/page-actions'; import { EditOnGitHub } from '@/components/edit-on-github'; import { getOgImageUrl } from '@/lib/source'; // eslint-disable-next-line @typescript-eslint/no-explicit-any type Source = any; export function createDocsPage(source: Source, contentDir: string = 'content/docs') { return async function Page({ params }: { params: Promise<{ slug?: string[] }> }) { const { slug } = await params; const page = source.getPage(slug); if (!page) notFound(); const MDX = page.data.body; return ( {page.data.title} ); }; } export function createGenerateStaticParams(source: Source) { return function generateStaticParams() { return source.generateParams(); }; } export function createGenerateMetadata(source: Source, section: string = 'docs') { return async function generateMetadata({ params, }: { params: Promise<{ slug?: string[] }>; }): Promise { const { slug } = await params; const page = source.getPage(slug); if (!page) notFound(); const ogImage = getOgImageUrl(section, page.slugs, page.data.title, page.data.description); return { title: page.data.title, description: page.data.description, alternates: { canonical: page.url }, openGraph: { images: [ogImage], }, twitter: { card: 'summary_large_image', images: [ogImage], }, }; }; }