import clsx from "clsx" import { Fragment } from "react" import type { LoaderFunction } from "remix" import { Outlet, useLoaderData } from "remix" import { loadApiData } from "~/modules/api/api-data.server" import { ActiveLink } from "~/modules/navigation/active-link" import type { AppLinkProps } from "~/modules/navigation/app-link" import { AppLink } from "~/modules/navigation/app-link" import { MainNavigation } from "~/modules/navigation/main-navigation" import { docsProseClass, linkClass, maxWidthContainer, } from "~/modules/ui/components" type LoaderData = { categorySections: Array<{ title: string links: AppLinkProps[] }> // [key: string]: unknown } export const loader: LoaderFunction = async () => { const apiData = await loadApiData() const childrenById = Object.fromEntries( apiData.children.map((child) => [child.id, { name: child.name }]), ) const data: LoaderData = { categorySections: apiData.categories.map((category) => ({ title: category.title, links: category.children .map((childId) => childrenById[childId]) .flatMap((child) => child ? { to: `/api/${child.name}`, type: "router", children: child.name } : [], ), })), } return data } export default function ApiReferencePage() { const data = useLoaderData() return (
) }