Files
medusa-store/www/apps/api-reference/providers/sidebar.tsx
Shahed Nasser 4d632e7a5d docs: added tests for components in api-reference project (#14428)
* add tests (WIP)

* added test for h2

* finished adding tests

* fixes

* fixes

* fixes
2026-01-05 10:56:56 +02:00

60 lines
1.6 KiB
TypeScript

"use client"
import React from "react"
import {
SidebarProvider as UiSidebarProvider,
usePageLoading,
useScrollController,
} from "docs-ui"
import { usePathname } from "next/navigation"
import { Sidebar } from "types"
import { useCallback, useEffect, useState } from "react"
import { config } from "../config"
type SidebarProviderProps = {
children?: React.ReactNode
}
const SidebarProvider = ({ children }: SidebarProviderProps) => {
const { isLoading, setIsLoading } = usePageLoading()
const { scrollableElement } = useScrollController()
const [sidebar, setSidebar] = useState<Sidebar.Sidebar | undefined>()
const path = usePathname()
const loadSidebar = useCallback(async () => {
if (path.startsWith("/store")) {
return (await import("../generated/generated-store-sidebar.mjs"))
.default as Sidebar.Sidebar
}
return (await import("../generated/generated-admin-sidebar.mjs"))
.default as Sidebar.Sidebar
}, [path])
useEffect(() => {
loadSidebar()
.then(setSidebar)
.catch((error) => {
console.error("Error loading sidebar:", error)
})
}, [loadSidebar])
return (
<UiSidebarProvider
isLoading={isLoading}
setIsLoading={setIsLoading}
shouldHandleHashChange={true}
shouldHandlePathChange={false}
scrollableElement={scrollableElement}
sidebars={sidebar ? [sidebar] : config.sidebars}
persistCategoryState={false}
disableActiveTransition={false}
isSidebarStatic={false}
>
{children}
</UiSidebarProvider>
)
}
export default SidebarProvider