import type { Metadata } from 'next' import { notFound } from 'next/navigation' import { Content } from '@/components/content' import { StarterKitEmbed } from '@/components/content/embed' import { Example } from '@/components/content/example' import { DocsFeedbackWidget } from '@/components/docs/docs-feedback-widget' import { DocsFooter } from '@/components/docs/docs-footer' import { DocsHeader } from '@/components/docs/docs-header' import { DocsMobileSidebar } from '@/components/docs/docs-mobile-sidebar' import { DocsSidebar } from '@/components/docs/docs-sidebar' import { DocsStarterSidebar } from '@/components/docs/docs-starter-sidebar' import { DocsTableOfContents } from '@/components/docs/docs-table-of-contents' import { SearchButton } from '@/components/search/SearchButton' import { cn } from '@/utils/cn' import { db } from '@/utils/ContentDatabase' import { parseMarkdown } from '@/utils/parse-markdown' import { canonicalDocsPageUrl } from '@/utils/sitemap-canonical-paths' export async function generateStaticParams() { const paths = await db.getAllPaths() return paths.map((path) => ({ slug: path.replace(/^\//, '').split('/') })) } export const dynamicParams = false export async function generateMetadata(props: { params: Promise<{ slug: string | string[] }> }): Promise { const params = await props.params const path = typeof params.slug === 'string' ? [params.slug] : params.slug const pagePath = `/${path.join('/')}` const content = await db.getPageContent(pagePath) if (!content || content.type !== 'article') notFound() const metadata: Metadata = { title: content.article.title, alternates: { canonical: canonicalDocsPageUrl(pagePath) }, } if (content.article.description) { metadata.description = content.article.description } else { const parsed = parseMarkdown(content.article.content ?? '', content.article.id) const initialContentText = parsed.initialContentText.trim() if (initialContentText) metadata.description = initialContentText } return metadata } export default async function Page(props: { params: Promise<{ slug: string | string[] }> }) { const params = await props.params const path = typeof params.slug === 'string' ? [params.slug] : params.slug const content = await db.getPageContent(`/${path.join('/')}`) if (!content || content.type !== 'article') notFound() return (
{content.article.sectionId === 'examples' ? (
{content.article.description && ( )} {content.article.content && ( )}
) : content.article.sectionId === 'starter-kits' && content.article.id !== 'starter-kits/starter-kits_ucg/overview' ? (
{content.article.description && ( )} {content.article.embed && }
) : content.article.sectionId === 'starter-kits' ? (
) : ( <>
)}
) }