Files
medusa-store/www/apps/api-reference/providers/page-title.tsx
Shahed Nasser b4f3b8a79d docs: redesign sidebar (#8408)
* 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
2024-08-15 12:13:13 +03:00

47 lines
1.2 KiB
TypeScript

"use client"
import { createContext, useEffect } from "react"
import { capitalize, useSidebar } from "docs-ui"
import { useArea } from "./area"
import { SidebarItemLink } from "types"
const PageTitleContext = createContext(null)
type PageTitleProviderProps = {
children: React.ReactNode
}
const PageTitleProvider = ({ children }: PageTitleProviderProps) => {
const { activePath, getActiveItem } = useSidebar()
const { area } = useArea()
useEffect(() => {
const titleSuffix = `Medusa ${capitalize(area)} API Reference`
if (!activePath?.length) {
document.title = titleSuffix
} else {
const activeItem = getActiveItem()
if (activeItem?.path === activePath) {
document.title = `${activeItem?.title} - ${titleSuffix}`
} else {
// find the child that matches the active path
const item = activeItem?.children?.find(
(i) => i.type === "link" && i.path === activePath
) as SidebarItemLink
if (item) {
document.title = `${item.title} - ${titleSuffix}`
}
}
}
}, [activePath, area, getActiveItem])
return (
<PageTitleContext.Provider value={null}>
{children}
</PageTitleContext.Provider>
)
}
export default PageTitleProvider