import { useEffect, useState } from 'react'; import { useLocation, useNavigate } from 'react-router'; import { DocContent } from '@/components/DocContent'; import { PanelProvider, usePanelContent } from '@/components/docs/panel-context'; import { Footer } from '@/components/Footer'; import { Menu } from '@/components/icons'; import { LanguageSwitcher } from '@/components/LanguageSwitcher'; import { PageLinks } from '@/components/PageLinks'; import { SearchSlot } from '@/components/Search'; import { SideNav } from '@/components/SideNav'; import { Button } from '@/components/ui/button'; import { Sheet, SheetContent, SheetTitle, SheetTrigger } from '@/components/ui/sheet'; import { VersionSwitcher } from '@/components/VersionSwitcher'; import { renderInlineMarkdown } from '@/lib/inline-markdown'; import { getOperation, operationSections } from '@/lib/openapi'; import { docsHomeUrl, getScopeByPathname } from '@/lib/site-config'; import type { DocModule, NormalizedDocsPage, SiteModel, TocEntry } from '@/lib/types'; /** * 404 view driven by the `errors.404` config key. The standard defaults to * redirecting home; that happens after hydration rather than during render, * because the prerendered 404.html must stay a static page for hosts that * serve it for every unknown path. */ function NotFound({ site }: { site: SiteModel }) { const navigate = useNavigate(); const { redirect, title, description } = site.error404; useEffect(() => { if (redirect) { navigate(docsHomeUrl, { replace: true }); } }, [redirect, navigate]); return (
{renderInlineMarkdown(description)}
}