import { changelogs } from "@/app/source"; import { notFound } from "next/navigation"; import { absoluteUrl, formatDate } from "@/lib/utils"; import DatabaseTable from "@/components/mdx/database-tables"; import { cn } from "@/lib/utils"; import { Step, Steps } from "fumadocs-ui/components/steps"; import { Tab, Tabs } from "fumadocs-ui/components/tabs"; import { GenerateSecret } from "@/components/generate-secret"; import { AnimatePresence } from "@/components/ui/fade-in"; import { TypeTable } from "fumadocs-ui/components/type-table"; import { Features } from "@/components/blocks/features"; import { ForkButton } from "@/components/fork-button"; import Link from "next/link"; import defaultMdxComponents from "fumadocs-ui/mdx"; import { File, Folder, Files } from "fumadocs-ui/components/files"; import { Accordion, Accordions } from "fumadocs-ui/components/accordion"; import { Pre } from "fumadocs-ui/components/codeblock"; import { DocsBody } from "fumadocs-ui/page"; import ChangelogPage, { Glow } from "../_components/default-changelog"; import { IconLink } from "../_components/changelog-layout"; import { BookIcon, GitHubIcon, XIcon } from "../_components/icons"; import { DiscordLogoIcon } from "@radix-ui/react-icons"; import { StarField } from "../_components/stat-field"; import { CalendarClockIcon } from "lucide-react"; export default async function Page({ params, }: { params: Promise<{ slug?: string[] }>; }) { const { slug } = await params; const page = changelogs.getPage(slug); if (!slug) { //@ts-ignore return ; } if (!page) { notFound(); } const MDX = page.data?.body; const toc = page.data?.toc; const { title, description, date } = page.data; return (

{title}{" "}

{description}

{formatDate(date)}


Documentation GitHub Community

BETTER-AUTH.

Back to Changelogs ) => ( ), Step, Steps, File, Folder, Files, Tab, Tabs, Pre: Pre, GenerateSecret, AnimatePresence, TypeTable, Features, ForkButton, DatabaseTable, Accordion, Accordions, }} />
); } export async function generateMetadata({ params, }: { params: Promise<{ slug?: string[] }>; }) { const { slug } = await params; if (!slug) { return { title: "Changelogs", description: "Changelogs", }; } const page = changelogs.getPage(slug); if (page == null) notFound(); const baseUrl = process.env.NEXT_PUBLIC_URL || process.env.VERCEL_URL; const url = new URL(`${baseUrl}/api/og-release`); const { title, description, date } = page.data; const dateString = formatDate(date); const pageSlug = page.file.path; url.searchParams.set("type", "Version Release"); url.searchParams.set("mode", "dark"); url.searchParams.set("heading", `${title}`); url.searchParams.set("description", `${description}`); url.searchParams.set("date", `${dateString}`); return { title, description, openGraph: { title, description, type: "website", url: absoluteUrl(`changelogs/${slug.join("")}`), images: [ { url: url.toString(), width: 1200, height: 630, alt: title, }, ], }, twitter: { card: "summary_large_image", title, description, images: [url.toString()], }, }; } export function generateStaticParams() { return changelogs.generateParams(); }