@@ -25,25 +25,29 @@ import IconArrow from '@theme/IconArrow';
2525import { matchPath } from '@docusaurus/router' ;
2626import clsx from 'clsx' ;
2727import styles from './styles.module.css' ;
28- import { docVersionSearchTag } from '@docusaurus/theme-common' ;
29- import type { PropVersionMetadata } from '@docusaurus/plugin-content-docs-types' ;
28+ import {
29+ docVersionSearchTag ,
30+ DocsSidebarProvider ,
31+ DocsVersionProvider ,
32+ useDocsSidebar ,
33+ } from '@docusaurus/theme-common' ;
34+ import type { PropVersionMetadata } from '@docusaurus/plugin-content-docs' ;
3035import { translate } from '@docusaurus/Translate' ;
36+ import Head from '@docusaurus/Head' ;
3137
3238type DocPageContentProps = {
3339 readonly currentDocRoute : DocumentRoute ;
3440 readonly versionMetadata : PropVersionMetadata ;
41+ readonly sidebarName : string | undefined ;
3542 readonly children : ReactNode ;
3643} ;
3744
3845const DocPageContent = ( props : DocPageContentProps ) => {
39- const { currentDocRoute, versionMetadata, children } = props ;
46+ const { currentDocRoute, versionMetadata, children, sidebarName } = props ;
4047 const { siteConfig } = useDocusaurusContext ( ) ;
4148 const { pluginId, version } = versionMetadata ;
49+ const sidebar = useDocsSidebar ( ) ;
4250
43- const sidebarName = currentDocRoute . sidebar ;
44- const sidebar = sidebarName
45- ? versionMetadata . docsSidebars [ sidebarName ]
46- : undefined ;
4751 const [ hiddenSidebarContainer , setHiddenSidebarContainer ] = useState ( false ) ;
4852 const [ hiddenSidebar , setHiddenSidebar ] = useState ( false ) ;
4953
@@ -71,7 +75,7 @@ const DocPageContent = (props: DocPageContentProps) => {
7175 return (
7276 < Layout
7377 wrapperClassName = "main-docs-wrapper"
74- searchMetadatas = { {
78+ searchMetadata = { {
7579 version,
7680 tag : docVersionSearchTag ( pluginId , version ) ,
7781 } } >
@@ -163,12 +167,30 @@ const DocPage = (props) => {
163167 return < NotFound { ...props } /> ;
164168 }
165169
170+ // For now, the sidebarName is added as route config: not ideal!
171+ const sidebarName = currentDocRoute . sidebar ;
172+
173+ const sidebar = sidebarName
174+ ? versionMetadata . docsSidebars [ sidebarName ]
175+ : null ;
176+
166177 return (
167- < DocPageContent
168- currentDocRoute = { currentDocRoute }
169- versionMetadata = { versionMetadata } >
170- { renderRoutes ( docRoutes , { versionMetadata } ) }
171- </ DocPageContent >
178+ < >
179+ < Head >
180+ { /* TODO we should add a core addRoute({htmlClassName}) generic plugin option */ }
181+ < html className = { versionMetadata . className } />
182+ </ Head >
183+ < DocsVersionProvider version = { versionMetadata } >
184+ < DocsSidebarProvider sidebar = { sidebar } >
185+ < DocPageContent
186+ currentDocRoute = { currentDocRoute }
187+ versionMetadata = { versionMetadata }
188+ sidebarName = { sidebarName } >
189+ { renderRoutes ( docRoutes , { versionMetadata } ) }
190+ </ DocPageContent >
191+ </ DocsSidebarProvider >
192+ </ DocsVersionProvider >
193+ </ >
172194 ) ;
173195} ;
174196
0 commit comments