@docusaurus/theme-classic 2.0.0-beta.16 → 2.0.0-beta.19
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.
- package/lib/admonitions.css +4 -0
- package/lib/default.css +3038 -0
- package/lib/getSwizzleConfig.js +177 -36
- package/lib/index.js +10 -15
- package/lib/nprogress.css +41 -0
- package/lib/nprogress.js +46 -0
- package/lib/theme-classic.d.ts +600 -76
- package/lib/translations.js +12 -2
- package/lib/validateThemeConfig.js +77 -28
- package/lib-next/theme/BackToTopButton/index.js +6 -104
- package/lib-next/theme/BlogArchivePage/index.js +14 -10
- package/lib-next/theme/BlogLayout/index.js +1 -5
- package/lib-next/theme/BlogListPage/index.js +34 -13
- package/lib-next/theme/BlogListPaginator/index.js +25 -28
- package/lib-next/theme/BlogPostAuthor/index.js +16 -7
- package/lib-next/theme/BlogPostItem/index.js +6 -6
- package/lib-next/theme/BlogPostItem/styles.module.css +9 -0
- package/lib-next/theme/BlogPostPage/index.js +56 -45
- package/lib-next/theme/BlogPostPaginator/index.js +25 -28
- package/lib-next/theme/BlogSidebar/Desktop/index.js +41 -0
- package/lib-next/theme/BlogSidebar/{styles.module.css → Desktop/styles.module.css} +1 -2
- package/lib-next/theme/BlogSidebar/Mobile/index.js +36 -0
- package/lib-next/theme/BlogSidebar/index.js +11 -31
- package/lib-next/theme/BlogTagsListPage/index.js +17 -14
- package/lib-next/theme/BlogTagsPostsPage/index.js +43 -38
- package/lib-next/theme/CodeBlock/Container/index.js +29 -0
- package/lib-next/theme/CodeBlock/Container/styles.module.css +14 -0
- package/lib-next/theme/CodeBlock/Content/Element.js +23 -0
- package/lib-next/theme/CodeBlock/Content/String.js +104 -0
- package/lib-next/theme/CodeBlock/{styles.module.css → Content/styles.module.css} +39 -29
- package/lib-next/theme/CodeBlock/CopyButton/index.js +61 -0
- package/lib-next/theme/CodeBlock/CopyButton/styles.module.css +47 -0
- package/lib-next/theme/CodeBlock/Line/index.js +49 -0
- package/lib-next/theme/CodeBlock/Line/styles.module.css +51 -0
- package/lib-next/theme/CodeBlock/WordWrapButton/index.js +40 -0
- package/lib-next/theme/CodeBlock/WordWrapButton/styles.module.css +15 -0
- package/lib-next/theme/CodeBlock/index.js +26 -164
- package/lib-next/theme/ColorModeToggle/index.js +62 -0
- package/lib-next/theme/ColorModeToggle/styles.module.css +35 -0
- package/lib-next/theme/Details/index.js +1 -1
- package/lib-next/theme/DocBreadcrumbs/index.js +63 -19
- package/lib-next/theme/DocBreadcrumbs/styles.module.css +8 -15
- package/lib-next/theme/DocCard/index.js +17 -15
- package/lib-next/theme/DocCard/styles.module.css +8 -17
- package/lib-next/theme/DocCardList/index.js +20 -6
- package/lib-next/theme/DocCategoryGeneratedIndexPage/index.js +30 -9
- package/lib-next/theme/DocCategoryGeneratedIndexPage/styles.module.css +8 -0
- package/lib-next/theme/DocItem/index.js +85 -67
- package/lib-next/theme/DocItem/styles.module.css +6 -0
- package/lib-next/theme/DocPage/Layout/Main/index.js +29 -0
- package/lib-next/theme/DocPage/Layout/Main/styles.module.css +28 -0
- package/lib-next/theme/DocPage/Layout/Sidebar/ExpandButton/index.js +34 -0
- package/lib-next/theme/DocPage/Layout/Sidebar/ExpandButton/styles.module.css +33 -0
- package/lib-next/theme/DocPage/Layout/Sidebar/index.js +68 -0
- package/lib-next/theme/DocPage/Layout/Sidebar/index.module.css +32 -0
- package/lib-next/theme/DocPage/Layout/index.js +34 -0
- package/lib-next/theme/{BlogPostAuthor/styles.module.css → DocPage/Layout/index.module.css} +6 -3
- package/lib-next/theme/DocPage/index.js +30 -149
- package/lib-next/theme/DocPaginator/index.js +25 -28
- package/lib-next/theme/DocSidebar/Desktop/CollapseButton/index.js +34 -0
- package/lib-next/theme/DocSidebar/Desktop/CollapseButton/styles.module.css +46 -0
- package/lib-next/theme/DocSidebar/Desktop/Content/index.js +46 -0
- package/lib-next/theme/DocSidebar/Desktop/Content/styles.module.css +23 -0
- package/lib-next/theme/DocSidebar/Desktop/index.js +36 -0
- package/lib-next/theme/DocSidebar/Desktop/styles.module.css +50 -0
- package/lib-next/theme/DocSidebar/Mobile/index.js +49 -0
- package/lib-next/theme/DocSidebar/index.js +6 -113
- package/lib-next/theme/DocSidebarItem/Category.js +197 -0
- package/lib-next/theme/DocSidebarItem/Html.js +27 -0
- package/lib-next/theme/DocSidebarItem/{styles.module.css → Html.module.css} +0 -0
- package/lib-next/theme/DocSidebarItem/Link.js +53 -0
- package/lib-next/theme/DocSidebarItem/Link.module.css +10 -0
- package/lib-next/theme/DocSidebarItem/index.js +4 -245
- package/lib-next/theme/DocSidebarItems/index.js +1 -6
- package/lib-next/theme/DocTagDocListPage/index.js +40 -33
- package/lib-next/theme/DocTagsListPage/index.js +21 -16
- package/lib-next/theme/DocVersionBanner/index.js +2 -2
- package/lib-next/theme/Footer/Copyright/index.js +18 -0
- package/lib-next/theme/Footer/Layout/index.js +26 -0
- package/lib-next/theme/Footer/LinkItem/index.js +33 -0
- package/lib-next/theme/Footer/Links/MultiColumn/index.js +47 -0
- package/lib-next/theme/Footer/Links/Simple/index.js +41 -0
- package/lib-next/theme/Footer/Links/index.js +17 -0
- package/lib-next/theme/Footer/Logo/index.js +38 -0
- package/lib-next/theme/Footer/{styles.module.css → Logo/styles.module.css} +0 -0
- package/lib-next/theme/Footer/index.js +11 -163
- package/lib-next/theme/Heading/index.js +10 -24
- package/lib-next/theme/IconDarkMode/index.js +17 -0
- package/lib-next/theme/IconExternalLink/styles.module.css +0 -2
- package/lib-next/theme/IconHome/index.js +17 -0
- package/lib-next/theme/IconLanguage/index.js +3 -3
- package/lib-next/theme/IconLightMode/index.js +17 -0
- package/lib-next/theme/LastUpdated/index.js +1 -0
- package/lib-next/theme/Layout/index.js +15 -10
- package/lib-next/theme/LayoutProviders/index.js +5 -4
- package/lib-next/theme/MDXComponents/A.js +11 -0
- package/lib-next/theme/MDXComponents/Code.js +28 -0
- package/lib-next/theme/MDXComponents/Details.js +20 -0
- package/lib-next/theme/MDXComponents/Head.js +26 -0
- package/lib-next/theme/MDXComponents/Heading.js +11 -0
- package/lib-next/theme/MDXComponents/Img.js +24 -0
- package/{src/theme/MDXComponents/styles.css → lib-next/theme/MDXComponents/Img.module.css} +1 -6
- package/lib-next/theme/MDXComponents/Pre.js +18 -0
- package/lib-next/theme/MDXComponents/Ul.js +21 -0
- package/lib-next/theme/MDXComponents/index.js +22 -57
- package/lib-next/theme/MDXContent/index.js +12 -0
- package/lib-next/theme/MDXPage/index.js +33 -28
- package/lib-next/theme/Navbar/ColorModeToggle/index.js +25 -0
- package/lib-next/theme/Navbar/Content/index.js +75 -0
- package/lib-next/theme/Navbar/Content/styles.module.css +15 -0
- package/lib-next/theme/Navbar/Layout/index.js +54 -0
- package/{src/theme/Navbar → lib-next/theme/Navbar/Layout}/styles.module.css +0 -13
- package/lib-next/theme/Navbar/Logo/index.js +17 -0
- package/lib-next/theme/Navbar/MobileSidebar/Header/index.js +33 -0
- package/lib-next/theme/Navbar/MobileSidebar/Layout/index.js +28 -0
- package/lib-next/theme/Navbar/MobileSidebar/PrimaryMenu/index.js +33 -0
- package/lib-next/theme/Navbar/MobileSidebar/SecondaryMenu/index.js +36 -0
- package/lib-next/theme/Navbar/MobileSidebar/Toggle/index.js +23 -0
- package/lib-next/theme/Navbar/MobileSidebar/index.js +31 -0
- package/lib-next/theme/Navbar/Search/index.js +11 -0
- package/lib-next/theme/Navbar/Search/styles.module.css +20 -0
- package/lib-next/theme/Navbar/index.js +6 -271
- package/lib-next/theme/NavbarItem/ComponentTypes.js +27 -0
- package/lib-next/theme/NavbarItem/DefaultNavbarItem.js +2 -6
- package/lib-next/theme/NavbarItem/DocNavbarItem.js +11 -28
- package/lib-next/theme/NavbarItem/DocSidebarNavbarItem.js +10 -42
- package/lib-next/theme/NavbarItem/DocsVersionDropdownNavbarItem.js +25 -29
- package/lib-next/theme/NavbarItem/DocsVersionNavbarItem.js +2 -9
- package/lib-next/theme/NavbarItem/DropdownNavbarItem.js +14 -3
- package/lib-next/theme/NavbarItem/HtmlNavbarItem.js +30 -0
- package/lib-next/theme/NavbarItem/LocaleDropdownNavbarItem/index.js +5 -10
- package/lib-next/theme/NavbarItem/NavbarNavLink.js +49 -35
- package/lib-next/theme/NavbarItem/SearchNavbarItem.js +6 -1
- package/lib-next/theme/NavbarItem/index.js +4 -23
- package/lib-next/theme/NavbarItem/utils.js +2 -1
- package/lib-next/theme/NotFound.js +38 -33
- package/lib-next/theme/PaginatorNavLink/index.js +8 -2
- package/lib-next/theme/SearchMetadata/index.js +9 -0
- package/lib-next/theme/{LayoutHead → SiteMetadata}/index.js +19 -33
- package/lib-next/theme/SkipToContent/index.js +3 -29
- package/lib-next/theme/TOCCollapsible/CollapseButton.js +29 -0
- package/{src/theme/TOCCollapsible/styles.module.css → lib-next/theme/TOCCollapsible/CollapseButton.module.css} +1 -22
- package/lib-next/theme/TOCCollapsible/index.js +4 -16
- package/lib-next/theme/TOCCollapsible/index.module.css +31 -0
- package/lib-next/theme/TOCItems/Tree.js +40 -0
- package/lib-next/theme/TOCItems/index.js +3 -34
- package/lib-next/theme/TabItem/index.js +3 -1
- package/lib-next/theme/TabItem/styles.module.css +10 -0
- package/lib-next/theme/Tabs/__tests__/index.test.js +8 -8
- package/lib-next/theme/Tabs/index.js +5 -5
- package/lib-next/theme/Tabs/styles.module.css +4 -0
- package/lib-next/theme/Tag/index.js +6 -7
- package/lib-next/theme/TagsListInline/index.js +1 -1
- package/lib-next/theme/ThemedImage/index.js +3 -3
- package/package.json +25 -20
- package/src/admonitions.css +4 -0
- package/src/getSwizzleConfig.ts +173 -22
- package/src/index.ts +14 -15
- package/src/nprogress.css +41 -0
- package/src/nprogress.ts +31 -0
- package/src/theme/BackToTopButton/index.tsx +5 -114
- package/src/theme/BlogArchivePage/index.tsx +18 -17
- package/src/theme/BlogLayout/index.tsx +1 -5
- package/src/theme/BlogListPage/index.tsx +32 -13
- package/src/theme/BlogListPaginator/index.tsx +25 -28
- package/src/theme/BlogPostAuthor/index.tsx +14 -8
- package/src/theme/BlogPostItem/index.tsx +6 -6
- package/src/theme/BlogPostItem/styles.module.css +9 -0
- package/src/theme/BlogPostPage/index.tsx +55 -48
- package/src/theme/BlogPostPaginator/index.tsx +25 -28
- package/src/theme/BlogSidebar/Desktop/index.tsx +45 -0
- package/src/theme/BlogSidebar/{styles.module.css → Desktop/styles.module.css} +1 -2
- package/src/theme/BlogSidebar/Mobile/index.tsx +38 -0
- package/src/theme/BlogSidebar/index.tsx +10 -31
- package/src/theme/BlogTagsListPage/index.tsx +17 -14
- package/src/theme/BlogTagsPostsPage/index.tsx +46 -36
- package/src/theme/CodeBlock/Container/index.tsx +35 -0
- package/src/theme/CodeBlock/Container/styles.module.css +14 -0
- package/src/theme/CodeBlock/Content/Element.tsx +30 -0
- package/src/theme/CodeBlock/Content/String.tsx +111 -0
- package/src/theme/CodeBlock/{styles.module.css → Content/styles.module.css} +39 -29
- package/src/theme/CodeBlock/CopyButton/index.tsx +67 -0
- package/src/theme/CodeBlock/CopyButton/styles.module.css +47 -0
- package/src/theme/CodeBlock/Line/index.tsx +48 -0
- package/src/theme/CodeBlock/Line/styles.module.css +51 -0
- package/src/theme/CodeBlock/WordWrapButton/index.tsx +49 -0
- package/src/theme/CodeBlock/WordWrapButton/styles.module.css +15 -0
- package/src/theme/CodeBlock/index.tsx +29 -165
- package/src/theme/ColorModeToggle/index.tsx +67 -0
- package/src/theme/ColorModeToggle/styles.module.css +35 -0
- package/src/theme/Details/index.tsx +1 -1
- package/src/theme/DocBreadcrumbs/index.tsx +65 -16
- package/src/theme/DocBreadcrumbs/styles.module.css +8 -15
- package/src/theme/DocCard/index.tsx +24 -17
- package/src/theme/DocCard/styles.module.css +8 -17
- package/src/theme/DocCardList/index.tsx +19 -10
- package/src/theme/DocCategoryGeneratedIndexPage/index.tsx +34 -7
- package/src/theme/DocCategoryGeneratedIndexPage/styles.module.css +8 -0
- package/src/theme/DocItem/index.tsx +72 -56
- package/src/theme/DocItem/styles.module.css +6 -0
- package/src/theme/DocPage/Layout/Main/index.tsx +37 -0
- package/src/theme/DocPage/Layout/Main/styles.module.css +28 -0
- package/src/theme/DocPage/Layout/Sidebar/ExpandButton/index.tsx +40 -0
- package/src/theme/DocPage/Layout/Sidebar/ExpandButton/styles.module.css +33 -0
- package/src/theme/DocPage/Layout/Sidebar/index.module.css +32 -0
- package/src/theme/DocPage/Layout/Sidebar/index.tsx +74 -0
- package/src/theme/{BlogPostAuthor/styles.module.css → DocPage/Layout/index.module.css} +6 -3
- package/src/theme/DocPage/Layout/index.tsx +39 -0
- package/src/theme/DocPage/index.tsx +30 -160
- package/src/theme/DocPaginator/index.tsx +25 -28
- package/src/theme/DocSidebar/Desktop/CollapseButton/index.tsx +38 -0
- package/src/theme/DocSidebar/Desktop/CollapseButton/styles.module.css +46 -0
- package/src/theme/DocSidebar/Desktop/Content/index.tsx +55 -0
- package/src/theme/DocSidebar/Desktop/Content/styles.module.css +23 -0
- package/src/theme/DocSidebar/Desktop/index.tsx +40 -0
- package/src/theme/DocSidebar/Desktop/styles.module.css +50 -0
- package/src/theme/DocSidebar/Mobile/index.tsx +54 -0
- package/src/theme/DocSidebar/index.tsx +6 -121
- package/src/theme/DocSidebarItem/Category.tsx +210 -0
- package/src/theme/DocSidebarItem/{styles.module.css → Html.module.css} +0 -0
- package/src/theme/DocSidebarItem/Html.tsx +34 -0
- package/src/theme/DocSidebarItem/Link.module.css +10 -0
- package/src/theme/DocSidebarItem/Link.tsx +58 -0
- package/src/theme/DocSidebarItem/index.tsx +4 -260
- package/src/theme/DocSidebarItems/index.tsx +1 -6
- package/src/theme/DocTagDocListPage/index.tsx +40 -33
- package/src/theme/DocTagsListPage/index.tsx +21 -16
- package/src/theme/DocVersionBanner/index.tsx +5 -6
- package/src/theme/Footer/Copyright/index.tsx +20 -0
- package/src/theme/Footer/Layout/index.tsx +34 -0
- package/src/theme/Footer/LinkItem/index.tsx +36 -0
- package/src/theme/Footer/Links/MultiColumn/index.tsx +51 -0
- package/src/theme/Footer/Links/Simple/index.tsx +42 -0
- package/src/theme/Footer/Links/index.tsx +21 -0
- package/src/theme/Footer/Logo/index.tsx +41 -0
- package/src/theme/Footer/{styles.module.css → Logo/styles.module.css} +0 -0
- package/src/theme/Footer/index.tsx +12 -186
- package/src/theme/Heading/index.tsx +10 -22
- package/src/theme/IconDarkMode/index.tsx +20 -0
- package/src/theme/IconExternalLink/styles.module.css +0 -2
- package/src/theme/IconHome/index.tsx +20 -0
- package/src/theme/IconLanguage/index.tsx +3 -3
- package/src/theme/IconLightMode/index.tsx +20 -0
- package/src/theme/LastUpdated/index.tsx +1 -0
- package/src/theme/Layout/index.tsx +15 -10
- package/src/theme/LayoutProviders/index.tsx +5 -4
- package/src/theme/MDXComponents/A.tsx +14 -0
- package/src/theme/MDXComponents/Code.tsx +37 -0
- package/src/theme/MDXComponents/Details.tsx +25 -0
- package/src/theme/MDXComponents/Head.tsx +29 -0
- package/src/theme/MDXComponents/Heading.tsx +14 -0
- package/{lib-next/theme/MDXComponents/styles.css → src/theme/MDXComponents/Img.module.css} +1 -6
- package/src/theme/MDXComponents/Img.tsx +26 -0
- package/src/theme/MDXComponents/Pre.tsx +22 -0
- package/src/theme/MDXComponents/Ul.tsx +24 -0
- package/src/theme/MDXComponents/index.tsx +23 -66
- package/src/theme/MDXContent/index.tsx +15 -0
- package/src/theme/MDXPage/index.tsx +33 -28
- package/src/theme/Navbar/ColorModeToggle/index.tsx +30 -0
- package/src/theme/Navbar/Content/index.tsx +86 -0
- package/src/theme/Navbar/Content/styles.module.css +15 -0
- package/src/theme/Navbar/Layout/index.tsx +57 -0
- package/{lib-next/theme/Navbar → src/theme/Navbar/Layout}/styles.module.css +0 -13
- package/src/theme/Navbar/Logo/index.tsx +19 -0
- package/src/theme/Navbar/MobileSidebar/Header/index.tsx +34 -0
- package/src/theme/Navbar/MobileSidebar/Layout/index.tsx +31 -0
- package/src/theme/Navbar/MobileSidebar/PrimaryMenu/index.tsx +38 -0
- package/src/theme/Navbar/MobileSidebar/SecondaryMenu/index.tsx +38 -0
- package/src/theme/Navbar/MobileSidebar/Toggle/index.tsx +25 -0
- package/src/theme/Navbar/MobileSidebar/index.tsx +33 -0
- package/src/theme/Navbar/Search/index.tsx +15 -0
- package/src/theme/Navbar/Search/styles.module.css +20 -0
- package/src/theme/Navbar/index.tsx +6 -286
- package/src/theme/NavbarItem/ComponentTypes.tsx +32 -0
- package/src/theme/NavbarItem/DefaultNavbarItem.tsx +2 -2
- package/src/theme/NavbarItem/DocNavbarItem.tsx +13 -32
- package/src/theme/NavbarItem/DocSidebarNavbarItem.tsx +9 -49
- package/src/theme/NavbarItem/DocsVersionDropdownNavbarItem.tsx +26 -33
- package/src/theme/NavbarItem/DocsVersionNavbarItem.tsx +3 -10
- package/src/theme/NavbarItem/DropdownNavbarItem.tsx +15 -3
- package/src/theme/NavbarItem/HtmlNavbarItem.tsx +32 -0
- package/src/theme/NavbarItem/LocaleDropdownNavbarItem/index.tsx +5 -9
- package/src/theme/NavbarItem/NavbarNavLink.tsx +41 -29
- package/src/theme/NavbarItem/SearchNavbarItem.tsx +6 -1
- package/src/theme/NavbarItem/index.tsx +9 -39
- package/src/theme/NavbarItem/utils.ts +5 -2
- package/src/theme/NotFound.tsx +38 -33
- package/src/theme/PaginatorNavLink/index.tsx +8 -2
- package/src/theme/SearchMetadata/index.tsx +9 -0
- package/src/theme/{LayoutHead → SiteMetadata}/index.tsx +19 -33
- package/src/theme/SkipToContent/index.tsx +3 -29
- package/{lib-next/theme/TOCCollapsible/styles.module.css → src/theme/TOCCollapsible/CollapseButton.module.css} +1 -22
- package/src/theme/TOCCollapsible/CollapseButton.tsx +35 -0
- package/src/theme/TOCCollapsible/index.module.css +31 -0
- package/src/theme/TOCCollapsible/index.tsx +4 -17
- package/src/theme/TOCItems/Tree.tsx +46 -0
- package/src/theme/TOCItems/index.tsx +2 -41
- package/src/theme/TabItem/index.tsx +7 -1
- package/src/theme/TabItem/styles.module.css +10 -0
- package/src/theme/Tabs/index.tsx +8 -9
- package/src/theme/Tabs/styles.module.css +4 -0
- package/src/theme/Tag/index.tsx +6 -8
- package/src/theme/TagsListInline/index.tsx +1 -1
- package/src/theme/ThemedImage/index.tsx +4 -3
- package/src/theme-classic.d.ts +600 -76
- package/src/translations.ts +12 -6
- package/src/validateThemeConfig.ts +90 -39
- package/lib/types.d.ts +0 -11
- package/lib-next/theme/DocPage/styles.module.css +0 -86
- package/lib-next/theme/DocSidebar/styles.module.css +0 -107
- package/lib-next/theme/Seo/index.js +0 -40
- package/lib-next/theme/Toggle/index.js +0 -100
- package/lib-next/theme/Toggle/styles.module.css +0 -106
- package/src/theme/DocPage/styles.module.css +0 -86
- package/src/theme/DocSidebar/styles.module.css +0 -107
- package/src/theme/Seo/index.tsx +0 -49
- package/src/theme/Toggle/index.tsx +0 -117
- package/src/theme/Toggle/styles.module.css +0 -106
- package/src/types.d.ts +0 -11
|
@@ -0,0 +1,24 @@
|
|
|
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/MDXComponents/Ul';
|
|
11
|
+
|
|
12
|
+
function transformUlClassName(className?: string): string {
|
|
13
|
+
return clsx(
|
|
14
|
+
className,
|
|
15
|
+
// This class is set globally by GitHub/MDX
|
|
16
|
+
// We keep the global class, but add Infima class to get list without styling
|
|
17
|
+
// See https://github.com/syntax-tree/mdast-util-to-hast/issues/28
|
|
18
|
+
className?.includes('contains-task-list') && 'clean-list',
|
|
19
|
+
);
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
export default function MDXUl(props: Props): JSX.Element {
|
|
23
|
+
return <ul {...props} className={transformUlClassName(props.className)} />;
|
|
24
|
+
}
|
|
@@ -5,75 +5,32 @@
|
|
|
5
5
|
* LICENSE file in the root directory of this source tree.
|
|
6
6
|
*/
|
|
7
7
|
|
|
8
|
-
import React
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
import
|
|
14
|
-
import
|
|
15
|
-
import
|
|
16
|
-
import
|
|
17
|
-
import Details from '@theme/Details';
|
|
18
|
-
import type {MDXComponentsObject} from '@theme/MDXComponents';
|
|
19
|
-
|
|
20
|
-
import './styles.css';
|
|
8
|
+
import React from 'react';
|
|
9
|
+
import MDXHead from '@theme/MDXComponents/Head';
|
|
10
|
+
import MDXCode from '@theme/MDXComponents/Code';
|
|
11
|
+
import MDXA from '@theme/MDXComponents/A';
|
|
12
|
+
import MDXPre from '@theme/MDXComponents/Pre';
|
|
13
|
+
import MDXDetails from '@theme/MDXComponents/Details';
|
|
14
|
+
import MDXHeading from '@theme/MDXComponents/Heading';
|
|
15
|
+
import MDXUl from '@theme/MDXComponents/Ul';
|
|
16
|
+
import MDXImg from '@theme/MDXComponents/Img';
|
|
21
17
|
|
|
22
|
-
|
|
23
|
-
// with Head/Helmet) we need to unwrap those elements.
|
|
24
|
-
function unwrapMDXElement(element: ReactElement) {
|
|
25
|
-
if (element?.props?.mdxType && element?.props?.originalType) {
|
|
26
|
-
const {mdxType, originalType, ...newProps} = element.props;
|
|
27
|
-
return React.createElement(element.props.originalType, newProps);
|
|
28
|
-
}
|
|
29
|
-
return element;
|
|
30
|
-
}
|
|
18
|
+
import type {MDXComponentsObject} from '@theme/MDXComponents';
|
|
31
19
|
|
|
32
20
|
const MDXComponents: MDXComponentsObject = {
|
|
33
|
-
head:
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
}
|
|
46
|
-
a: (props) => <Link {...props} />,
|
|
47
|
-
pre: (props) => (
|
|
48
|
-
<CodeBlock
|
|
49
|
-
// If this pre is created by a ``` fenced codeblock, unwrap the children
|
|
50
|
-
{...(isValidElement(props.children) &&
|
|
51
|
-
props.children.props.originalType === 'code'
|
|
52
|
-
? props.children?.props
|
|
53
|
-
: {...props})}
|
|
54
|
-
/>
|
|
55
|
-
),
|
|
56
|
-
details: (props): JSX.Element => {
|
|
57
|
-
const items = React.Children.toArray(props.children) as ReactElement[];
|
|
58
|
-
// Split summary item from the rest to pass it as a separate prop to the
|
|
59
|
-
// Details theme component
|
|
60
|
-
const summary: ReactElement<ComponentProps<'summary'>> = items.find(
|
|
61
|
-
(item) => item?.props?.mdxType === 'summary',
|
|
62
|
-
)!;
|
|
63
|
-
const children = <>{items.filter((item) => item !== summary)}</>;
|
|
64
|
-
|
|
65
|
-
return (
|
|
66
|
-
<Details {...props} summary={summary}>
|
|
67
|
-
{children}
|
|
68
|
-
</Details>
|
|
69
|
-
);
|
|
70
|
-
},
|
|
71
|
-
h1: (props) => <Heading as="h1" {...props} />,
|
|
72
|
-
h2: (props) => <Heading as="h2" {...props} />,
|
|
73
|
-
h3: (props) => <Heading as="h3" {...props} />,
|
|
74
|
-
h4: (props) => <Heading as="h4" {...props} />,
|
|
75
|
-
h5: (props) => <Heading as="h5" {...props} />,
|
|
76
|
-
h6: (props) => <Heading as="h6" {...props} />,
|
|
21
|
+
head: MDXHead,
|
|
22
|
+
code: MDXCode,
|
|
23
|
+
a: MDXA,
|
|
24
|
+
pre: MDXPre,
|
|
25
|
+
details: MDXDetails,
|
|
26
|
+
ul: MDXUl,
|
|
27
|
+
img: MDXImg,
|
|
28
|
+
h1: (props) => <MDXHeading as="h1" {...props} />,
|
|
29
|
+
h2: (props) => <MDXHeading as="h2" {...props} />,
|
|
30
|
+
h3: (props) => <MDXHeading as="h3" {...props} />,
|
|
31
|
+
h4: (props) => <MDXHeading as="h4" {...props} />,
|
|
32
|
+
h5: (props) => <MDXHeading as="h5" {...props} />,
|
|
33
|
+
h6: (props) => <MDXHeading as="h6" {...props} />,
|
|
77
34
|
};
|
|
78
35
|
|
|
79
36
|
export default MDXComponents;
|
|
@@ -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
|
+
import React from 'react';
|
|
9
|
+
import {MDXProvider} from '@mdx-js/react';
|
|
10
|
+
import MDXComponents from '@theme/MDXComponents';
|
|
11
|
+
import type {Props} from '@theme/MDXContent';
|
|
12
|
+
|
|
13
|
+
export default function MDXContent({children}: Props): JSX.Element {
|
|
14
|
+
return <MDXProvider components={MDXComponents}>{children}</MDXProvider>;
|
|
15
|
+
}
|
|
@@ -8,47 +8,52 @@
|
|
|
8
8
|
import React from 'react';
|
|
9
9
|
import clsx from 'clsx';
|
|
10
10
|
import Layout from '@theme/Layout';
|
|
11
|
-
import
|
|
12
|
-
import MDXComponents from '@theme/MDXComponents';
|
|
11
|
+
import MDXContent from '@theme/MDXContent';
|
|
13
12
|
import type {Props} from '@theme/MDXPage';
|
|
14
13
|
import TOC from '@theme/TOC';
|
|
15
|
-
import {
|
|
14
|
+
import {
|
|
15
|
+
PageMetadata,
|
|
16
|
+
HtmlClassNameProvider,
|
|
17
|
+
ThemeClassNames,
|
|
18
|
+
} from '@docusaurus/theme-common';
|
|
16
19
|
|
|
17
20
|
import styles from './styles.module.css';
|
|
18
21
|
|
|
19
22
|
export default function MDXPage(props: Props): JSX.Element {
|
|
20
23
|
const {content: MDXPageContent} = props;
|
|
21
24
|
const {
|
|
22
|
-
metadata: {title, description,
|
|
25
|
+
metadata: {title, description, frontMatter},
|
|
23
26
|
} = MDXPageContent;
|
|
24
27
|
const {wrapperClassName, hide_table_of_contents: hideTableOfContents} =
|
|
25
28
|
frontMatter;
|
|
26
29
|
|
|
27
30
|
return (
|
|
28
|
-
<
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
<
|
|
35
|
-
<
|
|
36
|
-
<div className={clsx('
|
|
37
|
-
<
|
|
38
|
-
<
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
{!hideTableOfContents && MDXPageContent.toc && (
|
|
42
|
-
<div className="col col--2">
|
|
43
|
-
<TOC
|
|
44
|
-
toc={MDXPageContent.toc}
|
|
45
|
-
minHeadingLevel={frontMatter.toc_min_heading_level}
|
|
46
|
-
maxHeadingLevel={frontMatter.toc_max_heading_level}
|
|
47
|
-
/>
|
|
31
|
+
<HtmlClassNameProvider
|
|
32
|
+
className={clsx(
|
|
33
|
+
wrapperClassName ?? ThemeClassNames.wrapper.mdxPages,
|
|
34
|
+
ThemeClassNames.page.mdxPage,
|
|
35
|
+
)}>
|
|
36
|
+
<PageMetadata title={title} description={description} />
|
|
37
|
+
<Layout>
|
|
38
|
+
<main className="container container--fluid margin-vert--lg">
|
|
39
|
+
<div className={clsx('row', styles.mdxPageWrapper)}>
|
|
40
|
+
<div className={clsx('col', !hideTableOfContents && 'col--8')}>
|
|
41
|
+
<MDXContent>
|
|
42
|
+
<MDXPageContent />
|
|
43
|
+
</MDXContent>
|
|
48
44
|
</div>
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
45
|
+
{!hideTableOfContents && MDXPageContent.toc && (
|
|
46
|
+
<div className="col col--2">
|
|
47
|
+
<TOC
|
|
48
|
+
toc={MDXPageContent.toc}
|
|
49
|
+
minHeadingLevel={frontMatter.toc_min_heading_level}
|
|
50
|
+
maxHeadingLevel={frontMatter.toc_max_heading_level}
|
|
51
|
+
/>
|
|
52
|
+
</div>
|
|
53
|
+
)}
|
|
54
|
+
</div>
|
|
55
|
+
</main>
|
|
56
|
+
</Layout>
|
|
57
|
+
</HtmlClassNameProvider>
|
|
53
58
|
);
|
|
54
59
|
}
|
|
@@ -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,86 @@
|
|
|
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 NavbarSearch from '@theme/Navbar/Search';
|
|
21
|
+
import styles from './styles.module.css';
|
|
22
|
+
|
|
23
|
+
function useNavbarItems() {
|
|
24
|
+
// TODO temporary casting until ThemeConfig type is improved
|
|
25
|
+
return useThemeConfig().navbar.items as NavbarItemConfig[];
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
function NavbarItems({items}: {items: NavbarItemConfig[]}): JSX.Element {
|
|
29
|
+
return (
|
|
30
|
+
<>
|
|
31
|
+
{items.map((item, i) => (
|
|
32
|
+
<NavbarItem {...item} key={i} />
|
|
33
|
+
))}
|
|
34
|
+
</>
|
|
35
|
+
);
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
function NavbarContentLayout({
|
|
39
|
+
left,
|
|
40
|
+
right,
|
|
41
|
+
}: {
|
|
42
|
+
left: ReactNode;
|
|
43
|
+
right: ReactNode;
|
|
44
|
+
}) {
|
|
45
|
+
return (
|
|
46
|
+
<div className="navbar__inner">
|
|
47
|
+
<div className="navbar__items">{left}</div>
|
|
48
|
+
<div className="navbar__items navbar__items--right">{right}</div>
|
|
49
|
+
</div>
|
|
50
|
+
);
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
export default function NavbarContent(): JSX.Element {
|
|
54
|
+
const mobileSidebar = useNavbarMobileSidebar();
|
|
55
|
+
|
|
56
|
+
const items = useNavbarItems();
|
|
57
|
+
const [leftItems, rightItems] = splitNavbarItems(items);
|
|
58
|
+
|
|
59
|
+
const autoAddSearchBar = !items.some((item) => item.type === 'search');
|
|
60
|
+
|
|
61
|
+
return (
|
|
62
|
+
<NavbarContentLayout
|
|
63
|
+
left={
|
|
64
|
+
// TODO stop hardcoding items?
|
|
65
|
+
<>
|
|
66
|
+
{!mobileSidebar.disabled && <NavbarMobileSidebarToggle />}
|
|
67
|
+
<NavbarLogo />
|
|
68
|
+
<NavbarItems items={leftItems} />
|
|
69
|
+
</>
|
|
70
|
+
}
|
|
71
|
+
right={
|
|
72
|
+
// TODO stop hardcoding items?
|
|
73
|
+
// Ask the user to add the respective navbar items => more flexible
|
|
74
|
+
<>
|
|
75
|
+
<NavbarItems items={rightItems} />
|
|
76
|
+
<NavbarColorModeToggle className={styles.colorModeToggle} />
|
|
77
|
+
{autoAddSearchBar && (
|
|
78
|
+
<NavbarSearch>
|
|
79
|
+
<SearchBar />
|
|
80
|
+
</NavbarSearch>
|
|
81
|
+
)}
|
|
82
|
+
</>
|
|
83
|
+
}
|
|
84
|
+
/>
|
|
85
|
+
);
|
|
86
|
+
}
|
|
@@ -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 text--truncate"
|
|
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
|
+
}
|