* initial changes * redesign the sidebar + nav drawer * changes to sidebar items * finish up sidebar redesign * support new sidebar in resources * general fixes * integrate in ui * support api reference * refactor * integrate in user guide * docs: fix build errors * fix user guide build * more refactoring * added banner * added bottom logo + icon * fix up sidebar * fix up paddings * fix shadow bottom * docs: add table of content (#8445) * add toc types * implement toc functionality * finished toc redesign * redesigned table of content * mobile fixes * truncate text in toc * mobile fixes * merge fixes * implement redesign * add hide sidebar * add menu action item * finish up hide sidebar design * implement redesign in resources * integrate in api reference * integrate changes in ui * fixes to api reference scrolling * fix build error * fix build errors * fixes * fixes to sidebar * general fixes * fix active category not closing * fix long titles
43 lines
1.0 KiB
TypeScript
43 lines
1.0 KiB
TypeScript
"use client"
|
|
|
|
import {
|
|
SidebarProvider as UiSidebarProvider,
|
|
usePageLoading,
|
|
usePrevious,
|
|
useScrollController,
|
|
} from "docs-ui"
|
|
import { config } from "../config"
|
|
import { useCallback } from "react"
|
|
import { usePathname } from "next/navigation"
|
|
|
|
type SidebarProviderProps = {
|
|
children?: React.ReactNode
|
|
}
|
|
|
|
const SidebarProvider = ({ children }: SidebarProviderProps) => {
|
|
const { isLoading, setIsLoading } = usePageLoading()
|
|
const { scrollableElement } = useScrollController()
|
|
const pathname = usePathname()
|
|
const prevPathName = usePrevious(pathname)
|
|
|
|
const resetOnCondition = useCallback(
|
|
() => prevPathName !== undefined && pathname !== prevPathName,
|
|
[pathname, prevPathName]
|
|
)
|
|
|
|
return (
|
|
<UiSidebarProvider
|
|
isLoading={isLoading}
|
|
setIsLoading={setIsLoading}
|
|
shouldHandleHashChange={true}
|
|
scrollableElement={scrollableElement}
|
|
initialItems={config.sidebar}
|
|
resetOnCondition={resetOnCondition}
|
|
>
|
|
{children}
|
|
</UiSidebarProvider>
|
|
)
|
|
}
|
|
|
|
export default SidebarProvider
|