@@ -25,25 +25,29 @@ import IconArrow from '@theme/IconArrow';
25
25
import { matchPath } from '@docusaurus/router' ;
26
26
import clsx from 'clsx' ;
27
27
import 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' ;
30
35
import { translate } from '@docusaurus/Translate' ;
36
+ import Head from '@docusaurus/Head' ;
31
37
32
38
type DocPageContentProps = {
33
39
readonly currentDocRoute : DocumentRoute ;
34
40
readonly versionMetadata : PropVersionMetadata ;
41
+ readonly sidebarName : string | undefined ;
35
42
readonly children : ReactNode ;
36
43
} ;
37
44
38
45
const DocPageContent = ( props : DocPageContentProps ) => {
39
- const { currentDocRoute, versionMetadata, children } = props ;
46
+ const { currentDocRoute, versionMetadata, children, sidebarName } = props ;
40
47
const { siteConfig } = useDocusaurusContext ( ) ;
41
48
const { pluginId, version } = versionMetadata ;
49
+ const sidebar = useDocsSidebar ( ) ;
42
50
43
- const sidebarName = currentDocRoute . sidebar ;
44
- const sidebar = sidebarName
45
- ? versionMetadata . docsSidebars [ sidebarName ]
46
- : undefined ;
47
51
const [ hiddenSidebarContainer , setHiddenSidebarContainer ] = useState ( false ) ;
48
52
const [ hiddenSidebar , setHiddenSidebar ] = useState ( false ) ;
49
53
@@ -71,7 +75,7 @@ const DocPageContent = (props: DocPageContentProps) => {
71
75
return (
72
76
< Layout
73
77
wrapperClassName = "main-docs-wrapper"
74
- searchMetadatas = { {
78
+ searchMetadata = { {
75
79
version,
76
80
tag : docVersionSearchTag ( pluginId , version ) ,
77
81
} } >
@@ -163,12 +167,30 @@ const DocPage = (props) => {
163
167
return < NotFound { ...props } /> ;
164
168
}
165
169
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
+
166
177
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
+ </ >
172
194
) ;
173
195
} ;
174
196
0 commit comments