- Improve scroll behavior between active sections - Improve lag when clicking on a sidebar item - Refactor internal working of the `SidebarProvider` to find active items faster. - Use Next.js's `useRouter` hook for changing the hash (since they added the option to disable scroll) - Change `isBrowser` from a hook to a provider since it's widely used across applications. - Other general improvements and fixes. Closes DOCS-952
49 lines
1.0 KiB
TypeScript
49 lines
1.0 KiB
TypeScript
"use client"
|
|
|
|
import {
|
|
formatReportLink,
|
|
getNavDropdownItems,
|
|
MainNavProvider as UiMainNavProvider,
|
|
useIsBrowser,
|
|
} from "docs-ui"
|
|
import { useMemo } from "react"
|
|
import { config } from "../config"
|
|
import { usePathname } from "next/navigation"
|
|
import basePathUrl from "../utils/base-path-url"
|
|
|
|
type MainNavProviderProps = {
|
|
children?: React.ReactNode
|
|
}
|
|
|
|
export const MainNavProvider = ({ children }: MainNavProviderProps) => {
|
|
const { isBrowser } = useIsBrowser()
|
|
const pathname = usePathname()
|
|
const navigationDropdownItems = useMemo(
|
|
() =>
|
|
getNavDropdownItems({
|
|
basePath: config.baseUrl,
|
|
activePath: basePathUrl(pathname),
|
|
version: "v2",
|
|
}),
|
|
[pathname]
|
|
)
|
|
|
|
const reportLink = useMemo(
|
|
() =>
|
|
formatReportLink(
|
|
config.titleSuffix || "",
|
|
isBrowser ? document.title : ""
|
|
),
|
|
[isBrowser]
|
|
)
|
|
|
|
return (
|
|
<UiMainNavProvider
|
|
navItems={navigationDropdownItems}
|
|
reportIssueLink={reportLink}
|
|
>
|
|
{children}
|
|
</UiMainNavProvider>
|
|
)
|
|
}
|