diff --git a/scripts/verify-static-output.ts b/scripts/verify-static-output.ts index cabfa30..3ebe83d 100644 --- a/scripts/verify-static-output.ts +++ b/scripts/verify-static-output.ts @@ -22,9 +22,6 @@ const apiSymbolsByRoute = new Map( apiSymbolSets[entrypoint.symbolSet as keyof typeof apiSymbolSets], ]) ); -const docsHome = docsCatalog.find((page) => page.route === '/docs'); -if (!docsHome) throw new Error('Missing /docs catalog entry'); - const marketing = [ { route: '/', ...marketingRouteMetadata['/'] }, ...marketingPages.map((page) => ({ @@ -32,26 +29,19 @@ const marketing = [ title: page.title, description: page.description, })), - { - route: '/docs', - title: `${docsHome.title} | Askr`, - description: docsHome.description, - }, { route: '/404', ...marketingRouteMetadata['/404'] }, ].map((page) => ({ ...page, layout: 'marketing' })); -const docs = docsCatalog - .filter((page) => page.route !== '/docs') - .map((page) => ({ - route: page.route, - title: `${page.title} | Askr`, - description: page.description, - headings: page.headings.map(({ id }) => ({ id })), - apiSymbols: apiSymbolsByRoute - .get(page.route) - ?.map(({ anchor }) => ({ anchor })), - layout: 'docs', - })); +const docs = docsCatalog.map((page) => ({ + route: page.route, + title: `${page.title} | Askr`, + description: page.description, + headings: page.headings.map(({ id }) => ({ id })), + apiSymbols: apiSymbolsByRoute + .get(page.route) + ?.map(({ anchor }) => ({ anchor })), + layout: 'docs', +})); const expectations = [...marketing, ...docs]; const expectedRoutes = new Set(expectations.map(({ route }) => route)); diff --git a/src/pages/_routes.tsx b/src/pages/_routes.tsx index 5efab8a..f4eedb8 100644 --- a/src/pages/_routes.tsx +++ b/src/pages/_routes.tsx @@ -6,7 +6,6 @@ import { } from './marketing/_routes'; import { DocsLayout } from './docs/_layout'; import { docsCatalog } from './docs/catalog'; -import { MarketingLayout } from './marketing/_layout'; export type { RouteMetadata } from './marketing/_routes'; @@ -23,15 +22,8 @@ export const routeMetadata: Readonly> = { export const routeRegistry = createRouteRegistry(() => { registerMarketingRoutes(); - const docsHome = docsCatalog.find((page) => page.route === '/docs'); - if (!docsHome) throw new Error('Missing /docs catalog entry'); - group({ layout: MarketingLayout }, () => { - route('/docs', lazy(docsHome.loader), { meta: routeMetadata['/docs'] }); - }); - group({ layout: DocsLayout }, () => { for (const page of docsCatalog) { - if (page.route === '/docs') continue; route(page.route, lazy(page.loader), { meta: routeMetadata[page.route], }); @@ -49,20 +41,8 @@ export async function createStaticRouteRegistry() { const registry = createRouteRegistry(() => { registerMarketingRoutes(); - const docsHome = docsCatalog.find((page) => page.route === '/docs'); - if (!docsHome) throw new Error('Missing /docs catalog entry'); - group({ layout: MarketingLayout }, () => { - let component = components.get(docsHome.loader); - if (!component) { - component = lazy(docsHome.loader); - components.set(docsHome.loader, component); - } - route('/docs', component, { meta: routeMetadata['/docs'] }); - }); - group({ layout: DocsLayout }, () => { for (const page of docsCatalog) { - if (page.route === '/docs') continue; let component = components.get(page.loader); if (!component) { component = lazy(page.loader); diff --git a/src/pages/docs/_layout.tsx b/src/pages/docs/_layout.tsx index d09d24d..9740e69 100644 --- a/src/pages/docs/_layout.tsx +++ b/src/pages/docs/_layout.tsx @@ -13,18 +13,6 @@ import { SidebarScope, SidebarTrigger, } from '@askrjs/themes/components'; -import { - BookOpenIcon, - CompassIcon, - Layers3Icon, - LibraryIcon, - MonitorIcon, - PanelsTopLeftIcon, - RocketIcon, - RouteIcon, - ServerIcon, - WrenchIcon, -} from '@askrjs/lucide'; import { SiteLayout } from '../site-layout'; import { docsByRoute, @@ -35,84 +23,44 @@ import { function DocsNavigation({ close }: { close?: () => void }) { const activePath = resolveDocsRoute(currentRoute()); - const sectionIcons = [ - BookOpenIcon, - RocketIcon, - Layers3Icon, - RouteIcon, - MonitorIcon, - ServerIcon, - PanelsTopLeftIcon, - WrenchIcon, - CompassIcon, - LibraryIcon, - ] as const; return ( - {docsSections.map((section, sectionIndex) => { - const active = section.pages.some((page) => page.route === activePath); - const SectionIcon = sectionIcons[sectionIndex] ?? BookOpenIcon; - const subsections = section.pages.reduce((groups, page) => { - const label = page.navSection ?? section.label; - const pages = groups.get(label) ?? []; - pages.push(page); - groups.set(label, pages); - return groups; - }, new Map()); - + {docsSections.map((section) => { return ( - - - - - - - - - {active && ( - - {Array.from(subsections).map(([label, pages]) => ( -
- {label !== section.label && ( - {label} - )} - - {pages.map((page) => ( - - + {section.label} + + + {section.pages.map((page) => ( + + + + {page.title} + {page.status !== 'stable' && ( + - - {page.title} - {page.status !== 'stable' && ( - - • - - )} - - - - ))} - -
+ • + + )} + + + ))} -
- )} + +
); })} @@ -130,7 +78,7 @@ function TableOfContents() {

On this page

    {headings.map((heading) => ( -
  • +
  • {heading.title}
  • ))} diff --git a/src/pages/docs/page.tsx b/src/pages/docs/page.tsx index 445ef12..d9ee4a7 100644 --- a/src/pages/docs/page.tsx +++ b/src/pages/docs/page.tsx @@ -83,6 +83,7 @@ function HeadingContent({ }: { item: DocsHeadingDefinition; page: DocsPageDefinition; + [prop: string]: unknown; }) { return (
    @@ -186,7 +187,7 @@ export default function DocsPage() { {page.headings.map((item) => ( - + ))} {page.route === '/docs' && ( <>