import type { LoaderFunctionArgs, MetaFunction } from "@remix-run/node"; import { useLoaderData } from "@remix-run/react"; import { getMDXComponent } from "mdx-bundler/client/index.js"; import React from "react"; import { BlogWrapper } from "~/components/BlogWrapper"; import { Title } from "~/components/Title"; import { getMdxFile } from "~/utils/posts.server"; export const handle = { to: "/blog", text: "Go Back", }; export const loader = async ({ params }: LoaderFunctionArgs) => { const name = params.name; if (name == null) { throw new Response(null, { status: 400 }); } return getMdxFile(name); }; export const meta: MetaFunction = ({ data }) => { if (data == null) { return []; } const { frontmatter: { title, description }, } = data; return [ { title, }, { property: "og:title", content: title, }, { property: "description", content: description, }, ]; }; export default function () { const { code, frontmatter: { title }, } = useLoaderData(); const MdxComponent = React.useMemo(() => getMDXComponent(code), [code]); return (
{title}
); }