split sidebars + optimize generated files loading
This commit is contained in:
1 parent
87b041800a
commit
8b1ee3705e
17 files changed
+26105
-25913
No files matched your search
@@ -1,9 +1,13 @@
|
||||
"use client"
|
||||
|
||||
import {
|
||||
SidebarProvider as UiSidebarProvider,
|
||||
useScrollController,
|
||||
} from "docs-ui"
|
||||
import { config } from "@/config"
|
||||
import { usePathname } from "next/navigation"
|
||||
import { useCallback, useEffect, useState } from "react"
|
||||
import { Sidebar } from "types"
|
||||
import { getSidebarForPath } from "../utils/get-sidebar-for-path"
|
||||
|
||||
type SidebarProviderProps = {
|
||||
children?: React.ReactNode
|
||||
@@ -11,11 +15,36 @@ type SidebarProviderProps = {
|
||||
|
||||
const SidebarProvider = ({ children }: SidebarProviderProps) => {
|
||||
const { scrollableElement } = useScrollController()
|
||||
const [sidebar, setSidebar] = useState<Sidebar.Sidebar | undefined>()
|
||||
const pathname = usePathname()
|
||||
|
||||
const loadSidebar = useCallback(
|
||||
async () => getSidebarForPath(pathname),
|
||||
[pathname]
|
||||
)
|
||||
|
||||
useEffect(() => {
|
||||
loadSidebar()
|
||||
.then(setSidebar)
|
||||
.catch((error) => {
|
||||
console.error("Error loading sidebar:", error)
|
||||
})
|
||||
}, [loadSidebar])
|
||||
|
||||
return (
|
||||
<UiSidebarProvider
|
||||
scrollableElement={scrollableElement}
|
||||
sidebars={config.sidebars}
|
||||
sidebars={
|
||||
sidebar
|
||||
? [sidebar]
|
||||
: [
|
||||
{
|
||||
sidebar_id: "default",
|
||||
title: "Default",
|
||||
items: [],
|
||||
},
|
||||
]
|
||||
}
|
||||
>
|
||||
{children}
|
||||
</UiSidebarProvider>
|
||||
|
||||
Reference in new issue
Block a user