Files
better-auth/docs/app/docs/[[...slug]]/page.tsx
Bereket Engida 461526d89d chore: lint
2024-09-27 15:55:00 +03:00

86 lines
1.8 KiB
TypeScript

import { getPage, getPages } from "@/app/source";
import type { Metadata } from "next";
import { DocsPage, DocsBody, DocsTitle } from "fumadocs-ui/page";
import { notFound } from "next/navigation";
import { absoluteUrl } from "@/lib/utils";
export default async function Page({
params,
}: {
params: { slug?: string[] };
}) {
const page = getPage(params.slug);
if (page == null) {
notFound();
}
const MDX = page.data.exports.default;
return (
<DocsPage
toc={page.data.exports.toc}
full={page.data.full}
editOnGithub={{
owner: "better-auth",
repo: "better-auth",
path: "/docs/content/docs",
}}
tableOfContent={{
style: "clerk",
header: <div className="h-4 w-10"></div>,
}}
footer={{
enabled: false,
}}
>
<DocsTitle>{page.data.title}</DocsTitle>
<DocsBody>
<MDX />
</DocsBody>
</DocsPage>
);
}
export async function generateStaticParams() {
return getPages().map((page) => ({
slug: page.slugs,
}));
}
export function generateMetadata({ params }: { params: { slug?: string[] } }) {
const page = getPage(params.slug);
if (page == null) notFound();
const baseUrl = process.env.NEXT_APP_PUBLIC_URL;
const url = new URL(`${baseUrl}/api/og`);
const { title, description } = page.data;
const pageSlug = page.file.path;
url.searchParams.set("type", "Documentation");
url.searchParams.set("mode", "dark");
url.searchParams.set("heading", `${title}`);
return {
title,
description,
openGraph: {
title,
description,
type: "Documentation",
url: absoluteUrl(`docs/${pageSlug}`),
images: [
{
url: url.toString(),
width: 1200,
height: 630,
alt: title,
},
],
},
twitter: {
card: "summary_large_image",
title,
description,
images: [url.toString()],
},
};
}