import { cache } from 'react'; import { notFound } from 'next/navigation'; import { allDocumentationPages } from 'contentlayer/generated'; import { ChevronLeftIcon, ChevronRightIcon } from 'lucide-react'; import { SitePageHeader } from '~/(marketing)/components/site-page-header'; import { DocsCards } from '~/(marketing)/docs/components/docs-cards'; import { DocumentationPageLink } from '~/(marketing)/docs/components/documentation-page-link'; import { getDocumentationPageTree } from '~/(marketing)/docs/utils/get-documentation-page-tree'; import { withI18n } from '~/lib/i18n/with-i18n'; import { If } from '@kit/ui/if'; import { Mdx } from '@kit/ui/mdx'; const getPageBySlug = cache((slug: string) => { return allDocumentationPages.find((post) => post.resolvedPath === slug); }); interface PageParams { params: { slug: string[]; }; } export const generateMetadata = ({ params }: PageParams) => { const page = getPageBySlug(params.slug.join('/')); if (!page) { notFound(); } const { title, description } = page; return { title, description, }; }; function DocumentationPage({ params }: PageParams) { const page = getPageBySlug(params.slug.join('/')); if (!page) { notFound(); } const { nextPage, previousPage, children } = getDocumentationPageTree(page.resolvedPath) ?? {}; const description = page?.description ?? ''; return (
{(page) => ( } /> )}
{(page) => ( } /> )}
); } export default withI18n(DocumentationPage);