@docusaurus/theme-classic 0.0.0-4733 → 0.0.0-4736

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (43) hide show
  1. package/lib/theme-classic.d.ts +66 -4
  2. package/lib-next/theme/ColorModeToggle/index.js +36 -59
  3. package/lib-next/theme/ColorModeToggle/styles.module.css +8 -24
  4. package/lib-next/theme/DocItem/index.js +7 -3
  5. package/lib-next/theme/DocPage/index.js +3 -7
  6. package/lib-next/theme/DocSidebar/Mobile/index.js +24 -20
  7. package/lib-next/theme/LayoutProviders/index.js +5 -4
  8. package/lib-next/theme/Navbar/ColorModeToggle/index.js +25 -0
  9. package/lib-next/theme/Navbar/Content/index.js +70 -0
  10. package/lib-next/theme/Navbar/Content/styles.module.css +15 -0
  11. package/lib-next/theme/Navbar/Layout/index.js +54 -0
  12. package/lib-next/theme/Navbar/{styles.module.css → Layout/styles.module.css} +0 -13
  13. package/lib-next/theme/Navbar/Logo/index.js +17 -0
  14. package/lib-next/theme/Navbar/MobileSidebar/Header/index.js +33 -0
  15. package/lib-next/theme/Navbar/MobileSidebar/Layout/index.js +28 -0
  16. package/lib-next/theme/Navbar/MobileSidebar/PrimaryMenu/index.js +33 -0
  17. package/lib-next/theme/Navbar/MobileSidebar/SecondaryMenu/index.js +36 -0
  18. package/lib-next/theme/Navbar/MobileSidebar/Toggle/index.js +23 -0
  19. package/lib-next/theme/Navbar/MobileSidebar/index.js +31 -0
  20. package/lib-next/theme/Navbar/index.js +6 -277
  21. package/lib-next/theme/ThemedImage/index.js +2 -2
  22. package/package.json +13 -13
  23. package/src/theme/ColorModeToggle/index.tsx +36 -63
  24. package/src/theme/ColorModeToggle/styles.module.css +8 -24
  25. package/src/theme/DocItem/index.tsx +7 -3
  26. package/src/theme/DocPage/index.tsx +4 -7
  27. package/src/theme/DocSidebar/Mobile/index.tsx +26 -23
  28. package/src/theme/LayoutProviders/index.tsx +5 -4
  29. package/src/theme/Navbar/ColorModeToggle/index.tsx +30 -0
  30. package/src/theme/Navbar/Content/index.tsx +81 -0
  31. package/src/theme/Navbar/Content/styles.module.css +15 -0
  32. package/src/theme/Navbar/Layout/index.tsx +57 -0
  33. package/src/theme/Navbar/{styles.module.css → Layout/styles.module.css} +0 -13
  34. package/src/theme/Navbar/Logo/index.tsx +19 -0
  35. package/src/theme/Navbar/MobileSidebar/Header/index.tsx +34 -0
  36. package/src/theme/Navbar/MobileSidebar/Layout/index.tsx +31 -0
  37. package/src/theme/Navbar/MobileSidebar/PrimaryMenu/index.tsx +38 -0
  38. package/src/theme/Navbar/MobileSidebar/SecondaryMenu/index.tsx +38 -0
  39. package/src/theme/Navbar/MobileSidebar/Toggle/index.tsx +25 -0
  40. package/src/theme/Navbar/MobileSidebar/index.tsx +33 -0
  41. package/src/theme/Navbar/index.tsx +6 -292
  42. package/src/theme/ThemedImage/index.tsx +3 -2
  43. package/src/theme-classic.d.ts +66 -4
@@ -20,14 +20,15 @@ import {translate} from '@docusaurus/Translate';
20
20
 
21
21
  import clsx from 'clsx';
22
22
  import styles from './styles.module.css';
23
+
23
24
  import {
25
+ HtmlClassNameProvider,
24
26
  ThemeClassNames,
25
27
  docVersionSearchTag,
26
28
  DocsSidebarProvider,
27
29
  useDocsSidebar,
28
30
  DocsVersionProvider,
29
31
  } from '@docusaurus/theme-common';
30
- import Head from '@docusaurus/Head';
31
32
 
32
33
  type DocPageContentProps = {
33
34
  readonly currentDocRoute: DocumentRoute;
@@ -160,11 +161,7 @@ export default function DocPage(props: Props): JSX.Element {
160
161
  : null;
161
162
 
162
163
  return (
163
- <>
164
- <Head>
165
- {/* TODO we should add a core addRoute({htmlClassName}) action */}
166
- <html className={versionMetadata.className} />
167
- </Head>
164
+ <HtmlClassNameProvider className={versionMetadata.className}>
168
165
  <DocsVersionProvider version={versionMetadata}>
169
166
  <DocsSidebarProvider sidebar={sidebar ?? null}>
170
167
  <DocPageContent
@@ -175,6 +172,6 @@ export default function DocPage(props: Props): JSX.Element {
175
172
  </DocPageContent>
176
173
  </DocsSidebarProvider>
177
174
  </DocsVersionProvider>
178
- </>
175
+ </HtmlClassNameProvider>
179
176
  );
180
177
  }
@@ -8,40 +8,43 @@
8
8
  import React from 'react';
9
9
  import clsx from 'clsx';
10
10
  import {
11
- MobileSecondaryMenuFiller,
12
- type MobileSecondaryMenuComponent,
11
+ NavbarSecondaryMenuFiller,
12
+ type NavbarSecondaryMenuComponent,
13
13
  ThemeClassNames,
14
+ useNavbarMobileSidebar,
14
15
  } from '@docusaurus/theme-common';
15
16
  import DocSidebarItems from '@theme/DocSidebarItems';
16
17
  import type {Props} from '@theme/DocSidebar/Mobile';
17
18
 
18
19
  // eslint-disable-next-line react/function-component-definition
19
- const DocSidebarMobileSecondaryMenu: MobileSecondaryMenuComponent<Props> = ({
20
- toggleSidebar,
20
+ const DocSidebarMobileSecondaryMenu: NavbarSecondaryMenuComponent<Props> = ({
21
21
  sidebar,
22
22
  path,
23
- }) => (
24
- <ul className={clsx(ThemeClassNames.docs.docSidebarMenu, 'menu__list')}>
25
- <DocSidebarItems
26
- items={sidebar}
27
- activePath={path}
28
- onItemClick={(item) => {
29
- // Mobile sidebar should only be closed if the category has a link
30
- if (item.type === 'category' && item.href) {
31
- toggleSidebar();
32
- }
33
- if (item.type === 'link') {
34
- toggleSidebar();
35
- }
36
- }}
37
- level={1}
38
- />
39
- </ul>
40
- );
23
+ }) => {
24
+ const mobileSidebar = useNavbarMobileSidebar();
25
+ return (
26
+ <ul className={clsx(ThemeClassNames.docs.docSidebarMenu, 'menu__list')}>
27
+ <DocSidebarItems
28
+ items={sidebar}
29
+ activePath={path}
30
+ onItemClick={(item) => {
31
+ // Mobile sidebar should only be closed if the category has a link
32
+ if (item.type === 'category' && item.href) {
33
+ mobileSidebar.toggle();
34
+ }
35
+ if (item.type === 'link') {
36
+ mobileSidebar.toggle();
37
+ }
38
+ }}
39
+ level={1}
40
+ />
41
+ </ul>
42
+ );
43
+ };
41
44
 
42
45
  function DocSidebarMobile(props: Props) {
43
46
  return (
44
- <MobileSecondaryMenuFiller
47
+ <NavbarSecondaryMenuFiller
45
48
  component={DocSidebarMobileSecondaryMenu}
46
49
  props={props}
47
50
  />
@@ -11,8 +11,9 @@ import {
11
11
  TabGroupChoiceProvider,
12
12
  AnnouncementBarProvider,
13
13
  DocsPreferredVersionContextProvider,
14
- MobileSecondaryMenuProvider,
15
14
  ScrollControllerProvider,
15
+ NavbarProvider,
16
+ PluginHtmlClassNameProvider,
16
17
  } from '@docusaurus/theme-common';
17
18
  import type {Props} from '@theme/LayoutProviders';
18
19
 
@@ -23,9 +24,9 @@ export default function LayoutProviders({children}: Props): JSX.Element {
23
24
  <TabGroupChoiceProvider>
24
25
  <ScrollControllerProvider>
25
26
  <DocsPreferredVersionContextProvider>
26
- <MobileSecondaryMenuProvider>
27
- {children}
28
- </MobileSecondaryMenuProvider>
27
+ <PluginHtmlClassNameProvider>
28
+ <NavbarProvider>{children}</NavbarProvider>
29
+ </PluginHtmlClassNameProvider>
29
30
  </DocsPreferredVersionContextProvider>
30
31
  </ScrollControllerProvider>
31
32
  </TabGroupChoiceProvider>
@@ -0,0 +1,30 @@
1
+ /**
2
+ * Copyright (c) Facebook, Inc. and its affiliates.
3
+ *
4
+ * This source code is licensed under the MIT license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ */
7
+
8
+ import {useColorMode, useThemeConfig} from '@docusaurus/theme-common';
9
+ import ColorModeToggle from '@theme/ColorModeToggle';
10
+ import type {Props} from '@theme/Navbar/ColorModeToggle';
11
+ import React from 'react';
12
+
13
+ export default function NavbarColorModeToggle({
14
+ className,
15
+ }: Props): JSX.Element | null {
16
+ const disabled = useThemeConfig().colorMode.disableSwitch;
17
+ const {colorMode, setColorMode} = useColorMode();
18
+
19
+ if (disabled) {
20
+ return null;
21
+ }
22
+
23
+ return (
24
+ <ColorModeToggle
25
+ className={className}
26
+ value={colorMode}
27
+ onChange={setColorMode}
28
+ />
29
+ );
30
+ }
@@ -0,0 +1,81 @@
1
+ /**
2
+ * Copyright (c) Facebook, Inc. and its affiliates.
3
+ *
4
+ * This source code is licensed under the MIT license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ */
7
+
8
+ import React, {type ReactNode} from 'react';
9
+ import type {Props as NavbarItemConfig} from '@theme/NavbarItem';
10
+ import NavbarItem from '@theme/NavbarItem';
11
+ import NavbarColorModeToggle from '@theme/Navbar/ColorModeToggle';
12
+ import SearchBar from '@theme/SearchBar';
13
+ import {
14
+ splitNavbarItems,
15
+ useNavbarMobileSidebar,
16
+ useThemeConfig,
17
+ } from '@docusaurus/theme-common';
18
+ import NavbarMobileSidebarToggle from '@theme/Navbar/MobileSidebar/Toggle';
19
+ import NavbarLogo from '@theme/Navbar/Logo';
20
+ import styles from './styles.module.css';
21
+
22
+ function useNavbarItems() {
23
+ // TODO temporary casting until ThemeConfig type is improved
24
+ return useThemeConfig().navbar.items as NavbarItemConfig[];
25
+ }
26
+
27
+ function NavbarItems({items}: {items: NavbarItemConfig[]}): JSX.Element {
28
+ return (
29
+ <>
30
+ {items.map((item, i) => (
31
+ <NavbarItem {...item} key={i} />
32
+ ))}
33
+ </>
34
+ );
35
+ }
36
+
37
+ function NavbarContentLayout({
38
+ left,
39
+ right,
40
+ }: {
41
+ left: ReactNode;
42
+ right: ReactNode;
43
+ }) {
44
+ return (
45
+ <div className="navbar__inner">
46
+ <div className="navbar__items">{left}</div>
47
+ <div className="navbar__items navbar__items--right">{right}</div>
48
+ </div>
49
+ );
50
+ }
51
+
52
+ export default function NavbarContent(): JSX.Element {
53
+ const mobileSidebar = useNavbarMobileSidebar();
54
+
55
+ const items = useNavbarItems();
56
+ const [leftItems, rightItems] = splitNavbarItems(items);
57
+
58
+ const autoAddSearchBar = !items.some((item) => item.type === 'search');
59
+
60
+ return (
61
+ <NavbarContentLayout
62
+ left={
63
+ // TODO stop hardcoding items?
64
+ <>
65
+ {!mobileSidebar.disabled && <NavbarMobileSidebarToggle />}
66
+ <NavbarLogo />
67
+ <NavbarItems items={leftItems} />
68
+ </>
69
+ }
70
+ right={
71
+ // TODO stop hardcoding items?
72
+ // Ask the user to add the respective navbar items => more flexible
73
+ <>
74
+ <NavbarItems items={rightItems} />
75
+ <NavbarColorModeToggle className={styles.colorModeToggle} />
76
+ {autoAddSearchBar && <SearchBar />}
77
+ </>
78
+ }
79
+ />
80
+ );
81
+ }
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Copyright (c) Facebook, Inc. and its affiliates.
3
+ *
4
+ * This source code is licensed under the MIT license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ */
7
+
8
+ /*
9
+ Hide color mode toggle in small viewports
10
+ */
11
+ @media (max-width: 996px) {
12
+ .colorModeToggle {
13
+ display: none;
14
+ }
15
+ }
@@ -0,0 +1,57 @@
1
+ /**
2
+ * Copyright (c) Facebook, Inc. and its affiliates.
3
+ *
4
+ * This source code is licensed under the MIT license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ */
7
+
8
+ import React, {type ComponentProps} from 'react';
9
+ import clsx from 'clsx';
10
+ import NavbarMobileSidebar from '@theme/Navbar/MobileSidebar';
11
+ import type {Props} from '@theme/Navbar/Layout';
12
+ import {
13
+ useThemeConfig,
14
+ useHideableNavbar,
15
+ useNavbarMobileSidebar,
16
+ } from '@docusaurus/theme-common';
17
+
18
+ import styles from './styles.module.css';
19
+
20
+ function NavbarBackdrop(props: ComponentProps<'div'>) {
21
+ return (
22
+ <div
23
+ role="presentation"
24
+ {...props}
25
+ className={clsx('navbar-sidebar__backdrop', props.className)}
26
+ />
27
+ );
28
+ }
29
+
30
+ export default function NavbarLayout({children}: Props): JSX.Element {
31
+ const {
32
+ navbar: {hideOnScroll, style},
33
+ } = useThemeConfig();
34
+ const mobileSidebar = useNavbarMobileSidebar();
35
+ const {navbarRef, isNavbarVisible} = useHideableNavbar(hideOnScroll);
36
+ return (
37
+ <nav
38
+ ref={navbarRef}
39
+ className={clsx(
40
+ 'navbar',
41
+ 'navbar--fixed-top',
42
+ hideOnScroll && [
43
+ styles.navbarHideable,
44
+ !isNavbarVisible && styles.navbarHidden,
45
+ ],
46
+ {
47
+ 'navbar--dark': style === 'dark',
48
+ 'navbar--primary': style === 'primary',
49
+ 'navbar-sidebar--show': mobileSidebar.shown,
50
+ },
51
+ )}>
52
+ {children}
53
+ <NavbarBackdrop onClick={mobileSidebar.toggle} />
54
+ <NavbarMobileSidebar />
55
+ </nav>
56
+ );
57
+ }
@@ -5,15 +5,6 @@
5
5
  * LICENSE file in the root directory of this source tree.
6
6
  */
7
7
 
8
- /*
9
- Hide toggle in small viewports
10
- */
11
- @media (max-width: 996px) {
12
- .toggle {
13
- display: none;
14
- }
15
- }
16
-
17
8
  .navbarHideable {
18
9
  transition: transform var(--ifm-transition-fast) ease;
19
10
  }
@@ -21,7 +12,3 @@ Hide toggle in small viewports
21
12
  .navbarHidden {
22
13
  transform: translate3d(0, calc(-100% - 2px), 0);
23
14
  }
24
-
25
- .navbarSidebarToggle {
26
- margin-right: 1rem;
27
- }
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Copyright (c) Facebook, Inc. and its affiliates.
3
+ *
4
+ * This source code is licensed under the MIT license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ */
7
+
8
+ import React from 'react';
9
+ import Logo from '@theme/Logo';
10
+
11
+ export default function NavbarLogo(): JSX.Element {
12
+ return (
13
+ <Logo
14
+ className="navbar__brand"
15
+ imageClassName="navbar__logo"
16
+ titleClassName="navbar__title"
17
+ />
18
+ );
19
+ }
@@ -0,0 +1,34 @@
1
+ /**
2
+ * Copyright (c) Facebook, Inc. and its affiliates.
3
+ *
4
+ * This source code is licensed under the MIT license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ */
7
+
8
+ import React from 'react';
9
+ import NavbarColorModeToggle from '@theme/Navbar/ColorModeToggle';
10
+ import IconClose from '@theme/IconClose';
11
+ import NavbarLogo from '@theme/Navbar/Logo';
12
+ import {useNavbarMobileSidebar} from '@docusaurus/theme-common';
13
+
14
+ function CloseButton() {
15
+ const mobileSidebar = useNavbarMobileSidebar();
16
+ return (
17
+ <button
18
+ type="button"
19
+ className="clean-btn navbar-sidebar__close"
20
+ onClick={() => mobileSidebar.toggle()}>
21
+ <IconClose color="var(--ifm-color-emphasis-600)" />
22
+ </button>
23
+ );
24
+ }
25
+
26
+ export default function NavbarMobileSidebarHeader(): JSX.Element {
27
+ return (
28
+ <div className="navbar-sidebar__brand">
29
+ <NavbarLogo />
30
+ <NavbarColorModeToggle className="margin-right--md" />
31
+ <CloseButton />
32
+ </div>
33
+ );
34
+ }
@@ -0,0 +1,31 @@
1
+ /**
2
+ * Copyright (c) Facebook, Inc. and its affiliates.
3
+ *
4
+ * This source code is licensed under the MIT license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ */
7
+
8
+ import React from 'react';
9
+ import clsx from 'clsx';
10
+ import type {Props} from '@theme/Navbar/MobileSidebar/Layout';
11
+ import {useNavbarSecondaryMenu} from '@docusaurus/theme-common';
12
+
13
+ export default function NavbarMobileSidebarLayout({
14
+ header,
15
+ primaryMenu,
16
+ secondaryMenu,
17
+ }: Props): JSX.Element {
18
+ const {shown: secondaryMenuShown} = useNavbarSecondaryMenu();
19
+ return (
20
+ <div className="navbar-sidebar">
21
+ {header}
22
+ <div
23
+ className={clsx('navbar-sidebar__items', {
24
+ 'navbar-sidebar__items--show-secondary': secondaryMenuShown,
25
+ })}>
26
+ <div className="navbar-sidebar__item menu">{primaryMenu}</div>
27
+ <div className="navbar-sidebar__item menu">{secondaryMenu}</div>
28
+ </div>
29
+ </div>
30
+ );
31
+ }
@@ -0,0 +1,38 @@
1
+ /**
2
+ * Copyright (c) Facebook, Inc. and its affiliates.
3
+ *
4
+ * This source code is licensed under the MIT license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ */
7
+
8
+ import React from 'react';
9
+ import {useNavbarMobileSidebar, useThemeConfig} from '@docusaurus/theme-common';
10
+ import type {Props as NavbarItemConfig} from '@theme/NavbarItem';
11
+ import NavbarItem from '../../../NavbarItem';
12
+
13
+ function useNavbarItems() {
14
+ // TODO temporary casting until ThemeConfig type is improved
15
+ return useThemeConfig().navbar.items as NavbarItemConfig[];
16
+ }
17
+
18
+ // The primary menu displays the navbar items
19
+ export default function NavbarMobilePrimaryMenu(): JSX.Element {
20
+ const mobileSidebar = useNavbarMobileSidebar();
21
+
22
+ // TODO how can the order be defined for mobile?
23
+ // Should we allow providing a different list of items?
24
+ const items = useNavbarItems();
25
+
26
+ return (
27
+ <ul className="menu__list">
28
+ {items.map((item, i) => (
29
+ <NavbarItem
30
+ mobile
31
+ {...item}
32
+ onClick={() => mobileSidebar.toggle()}
33
+ key={i}
34
+ />
35
+ ))}
36
+ </ul>
37
+ );
38
+ }
@@ -0,0 +1,38 @@
1
+ /**
2
+ * Copyright (c) Facebook, Inc. and its affiliates.
3
+ *
4
+ * This source code is licensed under the MIT license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ */
7
+
8
+ import React, {type ComponentProps} from 'react';
9
+ import {useNavbarSecondaryMenu, useThemeConfig} from '@docusaurus/theme-common';
10
+ import Translate from '@docusaurus/Translate';
11
+
12
+ function SecondaryMenuBackButton(props: ComponentProps<'button'>) {
13
+ return (
14
+ <button {...props} type="button" className="clean-btn navbar-sidebar__back">
15
+ <Translate
16
+ id="theme.navbar.mobileSidebarSecondaryMenu.backButtonLabel"
17
+ description="The label of the back button to return to main menu, inside the mobile navbar sidebar secondary menu (notably used to display the docs sidebar)">
18
+ ← Back to main menu
19
+ </Translate>
20
+ </button>
21
+ );
22
+ }
23
+
24
+ // The secondary menu slides from the right and shows contextual information
25
+ // such as the docs sidebar
26
+ export default function NavbarMobileSidebarSecondaryMenu(): JSX.Element | null {
27
+ const isPrimaryMenuEmpty = useThemeConfig().navbar.items.length === 0;
28
+ const secondaryMenu = useNavbarSecondaryMenu();
29
+ return (
30
+ <>
31
+ {/* edge-case: prevent returning to the primaryMenu when it's empty */}
32
+ {!isPrimaryMenuEmpty && (
33
+ <SecondaryMenuBackButton onClick={() => secondaryMenu.hide()} />
34
+ )}
35
+ {secondaryMenu.content}
36
+ </>
37
+ );
38
+ }
@@ -0,0 +1,25 @@
1
+ /**
2
+ * Copyright (c) Facebook, Inc. and its affiliates.
3
+ *
4
+ * This source code is licensed under the MIT license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ */
7
+
8
+ import React from 'react';
9
+ import IconMenu from '@theme/IconMenu';
10
+ import {useNavbarMobileSidebar} from '@docusaurus/theme-common';
11
+
12
+ export default function MobileSidebarToggle(): JSX.Element {
13
+ const mobileSidebar = useNavbarMobileSidebar();
14
+ return (
15
+ <button
16
+ onClick={mobileSidebar.toggle}
17
+ onKeyDown={mobileSidebar.toggle}
18
+ aria-label="Navigation bar toggle"
19
+ className="navbar__toggle clean-btn"
20
+ type="button"
21
+ tabIndex={0}>
22
+ <IconMenu />
23
+ </button>
24
+ );
25
+ }
@@ -0,0 +1,33 @@
1
+ /**
2
+ * Copyright (c) Facebook, Inc. and its affiliates.
3
+ *
4
+ * This source code is licensed under the MIT license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ */
7
+
8
+ import React from 'react';
9
+ import NavbarMobileSidebarLayout from '@theme/Navbar/MobileSidebar/Layout';
10
+ import NavbarMobileSidebarHeader from '@theme/Navbar/MobileSidebar/Header';
11
+ import {
12
+ useLockBodyScroll,
13
+ useNavbarMobileSidebar,
14
+ } from '@docusaurus/theme-common';
15
+ import NavbarMobileSidebarPrimaryMenu from '@theme/Navbar/MobileSidebar/PrimaryMenu';
16
+ import NavbarMobileSidebarSecondaryMenu from '@theme/Navbar/MobileSidebar/SecondaryMenu';
17
+
18
+ export default function NavbarMobileSidebar(): JSX.Element | null {
19
+ const mobileSidebar = useNavbarMobileSidebar();
20
+ useLockBodyScroll(mobileSidebar.shown);
21
+
22
+ if (!mobileSidebar.shouldRender) {
23
+ return null;
24
+ }
25
+
26
+ return (
27
+ <NavbarMobileSidebarLayout
28
+ header={<NavbarMobileSidebarHeader />}
29
+ primaryMenu={<NavbarMobileSidebarPrimaryMenu />}
30
+ secondaryMenu={<NavbarMobileSidebarSecondaryMenu />}
31
+ />
32
+ );
33
+ }