-
Notifications
You must be signed in to change notification settings - Fork 86
Expand file tree
/
Copy pathpage.tsx
More file actions
88 lines (77 loc) · 2.31 KB
/
page.tsx
File metadata and controls
88 lines (77 loc) · 2.31 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
import { createRelativeLink } from 'fumadocs-ui/mdx'
import type { Metadata } from 'next'
import { notFound } from 'next/navigation'
import { AskAI } from '@/components/geistdocs/ask-ai'
import { CopyPage } from '@/components/geistdocs/copy-page'
import {
DocsBody,
DocsDescription,
DocsPage,
DocsTitle,
} from '@/components/geistdocs/docs-page'
import { EditSource } from '@/components/geistdocs/edit-source'
import { Feedback } from '@/components/geistdocs/feedback'
import { getMDXComponents } from '@/components/geistdocs/mdx-components'
import { OpenInChat } from '@/components/geistdocs/open-in-chat'
import { ScrollTop } from '@/components/geistdocs/scroll-top'
import { Separator } from '@/components/ui/separator'
import { getLLMText, getPageImage, source } from '@/lib/geistdocs/source'
const Page = async ({ params }: PageProps<'/[lang]/[[...slug]]'>) => {
const { slug, lang } = await params
const page = source.getPage(slug, lang)
if (!page) {
notFound()
}
const markdown = await getLLMText(page)
const MDX = page.data.body
return (
<DocsPage
full={page.data.full}
tableOfContent={{
style: 'clerk',
footer: (
<div className='my-3 space-y-3'>
<Separator />
<EditSource path={page.path} />
<ScrollTop />
<Feedback />
<CopyPage text={markdown} />
<AskAI href={page.url} />
<OpenInChat href={page.url} />
</div>
),
}}
toc={page.data.toc}
>
<DocsTitle>{page.data.title}</DocsTitle>
<DocsDescription>{page.data.description}</DocsDescription>
<DocsBody>
<MDX
components={getMDXComponents({
a: createRelativeLink(source, page),
// Add your custom components here
})}
/>
</DocsBody>
</DocsPage>
)
}
export const generateStaticParams = () => source.generateParams()
export const generateMetadata = async ({
params,
}: PageProps<'/[lang]/[[...slug]]'>) => {
const { slug, lang } = await params
const page = source.getPage(slug, lang)
if (!page) {
notFound()
}
const metadata: Metadata = {
title: page.data.title,
description: page.data.description,
openGraph: {
images: getPageImage(page).url,
},
}
return metadata
}
export default Page