import { source } from '@/lib/source'; import { DocsPage, DocsBody, DocsDescription, DocsTitle, EditOnGitHub, } from 'fumadocs-ui/page'; import { TypeTable } from 'fumadocs-ui/components/type-table'; import { notFound } from 'next/navigation'; import defaultMdxComponents from 'fumadocs-ui/mdx'; import { ComponentPreview } from '@/components/docs/component-preview'; import { ComponentInstallation } from '@/components/docs/component-installation'; import { ExternalLink } from '@/components/docs/external-link'; import { Steps, Step } from 'fumadocs-ui/components/steps'; import { Footer } from '@workspace/ui/components/docs/footer'; import { CodeBlock, type CodeBlockProps, Pre, } from '@/components/docs/codeblock'; import { DocsAuthor } from '@/components/docs/docs-author'; import { DocsBreadcrumb } from '@/components/docs/docs-breadcrumb'; export default async function Page(props: { params: Promise<{ slug?: string[] }>; }) { const params = await props.params; const page = source.getPage(params.slug); if (!page) notFound(); const MDX = page.data.body; return ( }} tableOfContent={{ style: 'clerk' }} > {page.data.title} {page.data.description} {page.data.author && ( )}
(
{props.children}
), }} />
); } export async function generateStaticParams() { return source.generateParams(); } export async function generateMetadata(props: { params: Promise<{ slug?: string[] }>; }) { const params = await props.params; const page = source.getPage(params.slug); if (!page) notFound(); return { title: page.data.title, description: page.data.description, authors: page.data?.author ? [ { name: page.data.author.name, ...(page.data.author?.url && { url: page.data.author.url }), }, ] : { name: 'imskyleen', url: 'https://github.com/imskyleen', }, openGraph: { title: page.data.title, description: page.data.description, url: 'https://animate-ui.com', siteName: 'Animate UI', images: [ { url: 'https://animate-ui.com/og-image.png', width: 1200, height: 630, alt: 'Animate UI', }, ], locale: 'en_US', type: 'website', }, twitter: { card: 'summary_large_image', site: '@animate_ui', title: page.data.title, description: page.data.description, images: [ { url: 'https://animate-ui.com/og-image.png', width: 1200, height: 630, alt: 'Animate UI', }, ], }, }; }