import browserCollections from "fumadocs-mdx:collections/browser"; import { useFumadocsLoader } from "fumadocs-core/source/client"; import { DocsLayout } from "fumadocs-ui/layouts/docs"; import { DocsBody, DocsDescription, DocsPage, DocsTitle, } from "fumadocs-ui/layouts/docs/page"; import defaultMdxComponents from "fumadocs-ui/mdx"; import { baseOptions } from "@/lib/layout.shared"; import { source } from "@/lib/source"; import type { Route } from "./+types/page"; export async function loader({ params }: Route.LoaderArgs) { const slugs = params["*"].split("/").filter((v) => v.length > 0); const page = source.getPage(slugs); if (!page) throw new Response("Not found", { status: 404 }); return { path: page.path, pageTree: await source.serializePageTree(source.pageTree), }; } const clientLoader = browserCollections.docs.createClientLoader({ component({ toc, default: Mdx, frontmatter }) { return ( {frontmatter.title} {frontmatter.title} {frontmatter.description} ); }, }); export default function Page({ loaderData }: Route.ComponentProps) { const Content = clientLoader.getComponent(loaderData.path); const { pageTree } = useFumadocsLoader(loaderData); return ( ); }