@docusaurus/theme-classic 2.0.0-beta.18 → 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 +9 -2
- package/lib/index.js +4 -4
- package/lib/nprogress.css +41 -0
- package/lib/nprogress.js +46 -0
- package/lib/theme-classic.d.ts +315 -33
- package/lib/validateThemeConfig.js +72 -14
- package/lib-next/theme/BackToTopButton/index.js +6 -102
- package/lib-next/theme/BlogLayout/index.js +1 -5
- package/lib-next/theme/BlogListPaginator/index.js +25 -28
- package/lib-next/theme/BlogPostAuthor/index.js +3 -6
- package/lib-next/theme/BlogPostItem/styles.module.css +9 -0
- 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 +2 -3
- package/lib-next/theme/BlogTagsPostsPage/index.js +4 -6
- 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/{src/theme/CodeBlock → lib-next/theme/CodeBlock/Content}/styles.module.css +39 -9
- package/lib-next/theme/CodeBlock/CopyButton/index.js +3 -2
- package/lib-next/theme/CodeBlock/CopyButton/styles.module.css +0 -19
- 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 +27 -133
- package/lib-next/theme/Details/index.js +1 -1
- package/lib-next/theme/DocBreadcrumbs/index.js +50 -23
- package/lib-next/theme/DocBreadcrumbs/styles.module.css +8 -0
- package/lib-next/theme/DocCardList/index.js +6 -4
- package/lib-next/theme/DocCategoryGeneratedIndexPage/index.js +3 -3
- package/lib-next/theme/DocCategoryGeneratedIndexPage/styles.module.css +8 -0
- package/lib-next/theme/DocItem/index.js +1 -1
- 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 +28 -146
- package/lib-next/theme/DocPaginator/index.js +25 -28
- package/lib-next/theme/DocSidebar/Desktop/CollapseButton/styles.module.css +11 -9
- package/lib-next/theme/DocSidebar/Desktop/Content/styles.module.css +6 -0
- package/lib-next/theme/DocSidebar/Desktop/index.js +4 -2
- package/lib-next/theme/DocSidebarItem/Category.js +197 -0
- package/lib-next/theme/DocSidebarItem/Html.js +27 -0
- package/{src/theme/DocSidebarItem/styles.module.css → lib-next/theme/DocSidebarItem/Html.module.css} +0 -4
- package/lib-next/theme/DocSidebarItem/Link.js +53 -0
- package/{src/theme/MDXComponents/Ul.module.css → lib-next/theme/DocSidebarItem/Link.module.css} +2 -3
- package/lib-next/theme/DocSidebarItem/index.js +4 -246
- package/lib-next/theme/DocSidebarItems/index.js +1 -6
- package/lib-next/theme/DocTagDocListPage/index.js +3 -3
- package/lib-next/theme/DocVersionBanner/index.js +2 -2
- package/lib-next/theme/Footer/Links/MultiColumn/index.js +1 -1
- package/lib-next/theme/Heading/index.js +4 -20
- package/lib-next/theme/IconHome/index.js +17 -0
- package/lib-next/theme/LastUpdated/index.js +1 -0
- package/lib-next/theme/Layout/index.js +1 -1
- package/lib-next/theme/MDXComponents/Ul.js +2 -4
- package/lib-next/theme/Navbar/Content/index.js +6 -1
- package/lib-next/theme/Navbar/Logo/index.js +1 -1
- 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/NavbarItem/ComponentTypes.js +27 -0
- 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 +4 -1
- 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 -31
- 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/PaginatorNavLink/index.js +8 -2
- package/lib-next/theme/SiteMetadata/index.js +8 -7
- 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 +3 -13
- 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/{MDXComponents/Ul.module.css → TabItem/styles.module.css} +2 -3
- package/lib-next/theme/Tabs/__tests__/index.test.js +3 -3
- package/lib-next/theme/Tabs/index.js +3 -3
- package/lib-next/theme/Tabs/styles.module.css +4 -0
- package/lib-next/theme/Tag/index.js +2 -3
- package/lib-next/theme/TagsListInline/index.js +1 -1
- package/package.json +23 -18
- package/src/admonitions.css +4 -0
- package/src/getSwizzleConfig.ts +10 -2
- package/src/index.ts +4 -3
- package/src/nprogress.css +41 -0
- package/src/nprogress.ts +31 -0
- package/src/theme/BackToTopButton/index.tsx +5 -112
- package/src/theme/BlogLayout/index.tsx +1 -5
- package/src/theme/BlogListPaginator/index.tsx +25 -28
- package/src/theme/BlogPostAuthor/index.tsx +3 -7
- package/src/theme/BlogPostItem/styles.module.css +9 -0
- 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 +2 -3
- package/src/theme/BlogTagsPostsPage/index.tsx +8 -5
- 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/{lib-next/theme/CodeBlock → src/theme/CodeBlock/Content}/styles.module.css +39 -9
- package/src/theme/CodeBlock/CopyButton/index.tsx +3 -2
- package/src/theme/CodeBlock/CopyButton/styles.module.css +0 -19
- 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 -133
- package/src/theme/Details/index.tsx +1 -1
- package/src/theme/DocBreadcrumbs/index.tsx +50 -20
- package/src/theme/DocBreadcrumbs/styles.module.css +8 -0
- package/src/theme/DocCardList/index.tsx +5 -7
- package/src/theme/DocCategoryGeneratedIndexPage/index.tsx +3 -3
- package/src/theme/DocCategoryGeneratedIndexPage/styles.module.css +8 -0
- package/src/theme/DocItem/index.tsx +1 -1
- 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 +28 -157
- package/src/theme/DocPaginator/index.tsx +25 -28
- package/src/theme/DocSidebar/Desktop/CollapseButton/styles.module.css +11 -9
- package/src/theme/DocSidebar/Desktop/Content/styles.module.css +6 -0
- package/src/theme/DocSidebar/Desktop/index.tsx +4 -2
- package/src/theme/DocSidebarItem/Category.tsx +210 -0
- package/{lib-next/theme/DocSidebarItem/styles.module.css → src/theme/DocSidebarItem/Html.module.css} +0 -4
- 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 -259
- package/src/theme/DocSidebarItems/index.tsx +1 -6
- package/src/theme/DocTagDocListPage/index.tsx +3 -4
- package/src/theme/DocVersionBanner/index.tsx +2 -2
- package/src/theme/Footer/Links/MultiColumn/index.tsx +1 -1
- package/src/theme/Heading/index.tsx +4 -18
- package/src/theme/IconHome/index.tsx +20 -0
- package/src/theme/LastUpdated/index.tsx +1 -0
- package/src/theme/Layout/index.tsx +1 -1
- package/src/theme/MDXComponents/Details.tsx +2 -3
- package/src/theme/MDXComponents/Ul.tsx +2 -6
- package/src/theme/Navbar/Content/index.tsx +6 -1
- package/src/theme/Navbar/Logo/index.tsx +1 -1
- package/src/theme/Navbar/Search/index.tsx +15 -0
- package/src/theme/Navbar/Search/styles.module.css +20 -0
- package/src/theme/NavbarItem/ComponentTypes.tsx +32 -0
- 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 +4 -1
- package/src/theme/NavbarItem/HtmlNavbarItem.tsx +32 -0
- package/src/theme/NavbarItem/LocaleDropdownNavbarItem/index.tsx +5 -9
- package/src/theme/NavbarItem/NavbarNavLink.tsx +41 -25
- package/src/theme/NavbarItem/SearchNavbarItem.tsx +6 -1
- package/src/theme/NavbarItem/index.tsx +9 -38
- package/src/theme/NavbarItem/utils.ts +5 -2
- package/src/theme/PaginatorNavLink/index.tsx +8 -2
- package/src/theme/SiteMetadata/index.tsx +8 -8
- 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 +3 -14
- 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 +3 -3
- package/src/theme/Tabs/styles.module.css +4 -0
- package/src/theme/Tag/index.tsx +2 -4
- package/src/theme/TagsListInline/index.tsx +1 -1
- package/src/theme-classic.d.ts +315 -33
- package/src/validateThemeConfig.ts +80 -13
- package/lib/types.d.ts +0 -11
- package/lib-next/theme/DocPage/styles.module.css +0 -82
- package/src/theme/DocPage/styles.module.css +0 -82
- package/src/types.d.ts +0 -11
|
@@ -9,10 +9,12 @@ import DefaultNavbarItem from '@theme/NavbarItem/DefaultNavbarItem';
|
|
|
9
9
|
import DropdownNavbarItem from '@theme/NavbarItem/DropdownNavbarItem';
|
|
10
10
|
import {
|
|
11
11
|
useVersions,
|
|
12
|
-
useLatestVersion,
|
|
13
12
|
useActiveDocContext,
|
|
14
13
|
} from '@docusaurus/plugin-content-docs/client';
|
|
15
|
-
import {
|
|
14
|
+
import {
|
|
15
|
+
useDocsPreferredVersion,
|
|
16
|
+
useDocsVersionCandidates,
|
|
17
|
+
} from '@docusaurus/theme-common';
|
|
16
18
|
import {translate} from '@docusaurus/Translate';
|
|
17
19
|
|
|
18
20
|
const getVersionMainDoc = (version) =>
|
|
@@ -28,33 +30,27 @@ export default function DocsVersionDropdownNavbarItem({
|
|
|
28
30
|
}) {
|
|
29
31
|
const activeDocContext = useActiveDocContext(docsPluginId);
|
|
30
32
|
const versions = useVersions(docsPluginId);
|
|
31
|
-
const
|
|
32
|
-
const
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
return [...dropdownItemsBefore, ...versionLinks, ...dropdownItemsAfter];
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
const items = getItems();
|
|
56
|
-
const dropdownVersion =
|
|
57
|
-
activeDocContext.activeVersion ?? preferredVersion ?? latestVersion; // Mobile dropdown is handled a bit differently
|
|
33
|
+
const {savePreferredVersionName} = useDocsPreferredVersion(docsPluginId);
|
|
34
|
+
const versionLinks = versions.map((version) => {
|
|
35
|
+
// We try to link to the same doc, in another version
|
|
36
|
+
// When not possible, fallback to the "main doc" of the version
|
|
37
|
+
const versionDoc =
|
|
38
|
+
activeDocContext?.alternateDocVersions[version.name] ??
|
|
39
|
+
getVersionMainDoc(version);
|
|
40
|
+
return {
|
|
41
|
+
isNavLink: true,
|
|
42
|
+
label: version.label,
|
|
43
|
+
to: versionDoc.path,
|
|
44
|
+
isActive: () => version === activeDocContext?.activeVersion,
|
|
45
|
+
onClick: () => savePreferredVersionName(version.name),
|
|
46
|
+
};
|
|
47
|
+
});
|
|
48
|
+
const items = [
|
|
49
|
+
...dropdownItemsBefore,
|
|
50
|
+
...versionLinks,
|
|
51
|
+
...dropdownItemsAfter,
|
|
52
|
+
];
|
|
53
|
+
const dropdownVersion = useDocsVersionCandidates(docsPluginId)[0]; // Mobile dropdown is handled a bit differently
|
|
58
54
|
|
|
59
55
|
const dropdownLabel =
|
|
60
56
|
mobile && items.length > 1
|
|
@@ -6,11 +6,7 @@
|
|
|
6
6
|
*/
|
|
7
7
|
import React from 'react';
|
|
8
8
|
import DefaultNavbarItem from '@theme/NavbarItem/DefaultNavbarItem';
|
|
9
|
-
import {
|
|
10
|
-
useActiveVersion,
|
|
11
|
-
useLatestVersion,
|
|
12
|
-
} from '@docusaurus/plugin-content-docs/client';
|
|
13
|
-
import {useDocsPreferredVersion} from '@docusaurus/theme-common';
|
|
9
|
+
import {useDocsVersionCandidates} from '@docusaurus/theme-common';
|
|
14
10
|
|
|
15
11
|
const getVersionMainDoc = (version) =>
|
|
16
12
|
version.docs.find((doc) => doc.id === version.mainDocId);
|
|
@@ -21,10 +17,7 @@ export default function DocsVersionNavbarItem({
|
|
|
21
17
|
docsPluginId,
|
|
22
18
|
...props
|
|
23
19
|
}) {
|
|
24
|
-
const
|
|
25
|
-
const {preferredVersion} = useDocsPreferredVersion(docsPluginId);
|
|
26
|
-
const latestVersion = useLatestVersion(docsPluginId);
|
|
27
|
-
const version = activeVersion ?? preferredVersion ?? latestVersion;
|
|
20
|
+
const version = useDocsVersionCandidates(docsPluginId)[0];
|
|
28
21
|
const label = staticLabel ?? version.label;
|
|
29
22
|
const path = staticTo ?? getVersionMainDoc(version).path;
|
|
30
23
|
return <DefaultNavbarItem {...props} label={label} to={path} />;
|
|
@@ -134,7 +134,10 @@ function DropdownNavbarItemMobile({
|
|
|
134
134
|
})}>
|
|
135
135
|
<NavbarNavLink
|
|
136
136
|
role="button"
|
|
137
|
-
className={clsx(
|
|
137
|
+
className={clsx(
|
|
138
|
+
'menu__link menu__link--sublist menu__link--sublist-caret',
|
|
139
|
+
className,
|
|
140
|
+
)}
|
|
138
141
|
{...props}
|
|
139
142
|
onClick={(e) => {
|
|
140
143
|
e.preventDefault();
|
|
@@ -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
|
+
import React from 'react';
|
|
8
|
+
import clsx from 'clsx';
|
|
9
|
+
export default function HtmlNavbarItem({
|
|
10
|
+
value,
|
|
11
|
+
className,
|
|
12
|
+
mobile = false,
|
|
13
|
+
isDropdownItem = false,
|
|
14
|
+
}) {
|
|
15
|
+
const Comp = isDropdownItem ? 'li' : 'div';
|
|
16
|
+
return (
|
|
17
|
+
<Comp
|
|
18
|
+
className={clsx(
|
|
19
|
+
{
|
|
20
|
+
navbar__item: !mobile && !isDropdownItem,
|
|
21
|
+
'menu__list-item': mobile,
|
|
22
|
+
},
|
|
23
|
+
className,
|
|
24
|
+
)}
|
|
25
|
+
dangerouslySetInnerHTML={{
|
|
26
|
+
__html: value,
|
|
27
|
+
}}
|
|
28
|
+
/>
|
|
29
|
+
);
|
|
30
|
+
}
|
|
@@ -21,11 +21,6 @@ export default function LocaleDropdownNavbarItem({
|
|
|
21
21
|
i18n: {currentLocale, locales, localeConfigs},
|
|
22
22
|
} = useDocusaurusContext();
|
|
23
23
|
const alternatePageUtils = useAlternatePageUtils();
|
|
24
|
-
|
|
25
|
-
function getLocaleLabel(locale) {
|
|
26
|
-
return localeConfigs[locale].label;
|
|
27
|
-
}
|
|
28
|
-
|
|
29
24
|
const localeItems = locales.map((locale) => {
|
|
30
25
|
const to = `pathname://${alternatePageUtils.createUrl({
|
|
31
26
|
locale,
|
|
@@ -33,7 +28,7 @@ export default function LocaleDropdownNavbarItem({
|
|
|
33
28
|
})}`;
|
|
34
29
|
return {
|
|
35
30
|
isNavLink: true,
|
|
36
|
-
label:
|
|
31
|
+
label: localeConfigs[locale].label,
|
|
37
32
|
to,
|
|
38
33
|
target: '_self',
|
|
39
34
|
autoAddBaseUrl: false,
|
|
@@ -48,16 +43,16 @@ export default function LocaleDropdownNavbarItem({
|
|
|
48
43
|
id: 'theme.navbar.mobileLanguageDropdown.label',
|
|
49
44
|
description: 'The label for the mobile language switcher dropdown',
|
|
50
45
|
})
|
|
51
|
-
:
|
|
46
|
+
: localeConfigs[currentLocale].label;
|
|
52
47
|
return (
|
|
53
48
|
<DropdownNavbarItem
|
|
54
49
|
{...props}
|
|
55
50
|
mobile={mobile}
|
|
56
51
|
label={
|
|
57
|
-
|
|
52
|
+
<>
|
|
58
53
|
<IconLanguage className={styles.iconLanguage} />
|
|
59
|
-
|
|
60
|
-
|
|
54
|
+
{dropdownLabel}
|
|
55
|
+
</>
|
|
61
56
|
}
|
|
62
57
|
items={items}
|
|
63
58
|
/>
|
|
@@ -17,6 +17,7 @@ export default function NavbarNavLink({
|
|
|
17
17
|
to,
|
|
18
18
|
href,
|
|
19
19
|
label,
|
|
20
|
+
html,
|
|
20
21
|
activeClassName = '',
|
|
21
22
|
prependBaseUrlToHref,
|
|
22
23
|
...props
|
|
@@ -29,38 +30,55 @@ export default function NavbarNavLink({
|
|
|
29
30
|
forcePrependBaseUrl: true,
|
|
30
31
|
});
|
|
31
32
|
const isExternalLink = label && href && !isInternalUrl(href);
|
|
32
|
-
const isDropdownLink = activeClassName === dropdownLinkActiveClass;
|
|
33
|
+
const isDropdownLink = activeClassName === dropdownLinkActiveClass; // Link content is set through html XOR label
|
|
34
|
+
|
|
35
|
+
const linkContentProps = html
|
|
36
|
+
? {
|
|
37
|
+
dangerouslySetInnerHTML: {
|
|
38
|
+
__html: html,
|
|
39
|
+
},
|
|
40
|
+
}
|
|
41
|
+
: {
|
|
42
|
+
children: (
|
|
43
|
+
<>
|
|
44
|
+
{label}
|
|
45
|
+
{isExternalLink && (
|
|
46
|
+
<IconExternalLink
|
|
47
|
+
{...(isDropdownLink && {
|
|
48
|
+
width: 12,
|
|
49
|
+
height: 12,
|
|
50
|
+
})}
|
|
51
|
+
/>
|
|
52
|
+
)}
|
|
53
|
+
</>
|
|
54
|
+
),
|
|
55
|
+
};
|
|
56
|
+
|
|
57
|
+
if (href) {
|
|
58
|
+
return (
|
|
59
|
+
<Link
|
|
60
|
+
href={prependBaseUrlToHref ? normalizedHref : href}
|
|
61
|
+
{...props}
|
|
62
|
+
{...linkContentProps}
|
|
63
|
+
/>
|
|
64
|
+
);
|
|
65
|
+
}
|
|
66
|
+
|
|
33
67
|
return (
|
|
34
68
|
<Link
|
|
35
|
-
{
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
? isRegexpStringMatch(activeBaseRegex, location.pathname)
|
|
50
|
-
: location.pathname.startsWith(activeBaseUrl),
|
|
51
|
-
}
|
|
52
|
-
: null),
|
|
53
|
-
})}
|
|
54
|
-
{...props}>
|
|
55
|
-
{label}
|
|
56
|
-
{isExternalLink && (
|
|
57
|
-
<IconExternalLink
|
|
58
|
-
{...(isDropdownLink && {
|
|
59
|
-
width: 12,
|
|
60
|
-
height: 12,
|
|
61
|
-
})}
|
|
62
|
-
/>
|
|
63
|
-
)}
|
|
64
|
-
</Link>
|
|
69
|
+
to={toUrl}
|
|
70
|
+
isNavLink
|
|
71
|
+
activeClassName={
|
|
72
|
+
!props.className?.includes(activeClassName) ? activeClassName : ''
|
|
73
|
+
}
|
|
74
|
+
{...((activeBasePath || activeBaseRegex) && {
|
|
75
|
+
isActive: (_match, location) =>
|
|
76
|
+
activeBaseRegex
|
|
77
|
+
? isRegexpStringMatch(activeBaseRegex, location.pathname)
|
|
78
|
+
: location.pathname.startsWith(activeBaseUrl),
|
|
79
|
+
})}
|
|
80
|
+
{...props}
|
|
81
|
+
{...linkContentProps}
|
|
82
|
+
/>
|
|
65
83
|
);
|
|
66
84
|
}
|
|
@@ -6,10 +6,15 @@
|
|
|
6
6
|
*/
|
|
7
7
|
import React from 'react';
|
|
8
8
|
import SearchBar from '@theme/SearchBar';
|
|
9
|
+
import NavbarSearch from '@theme/Navbar/Search';
|
|
9
10
|
export default function SearchNavbarItem({mobile}) {
|
|
10
11
|
if (mobile) {
|
|
11
12
|
return null;
|
|
12
13
|
}
|
|
13
14
|
|
|
14
|
-
return
|
|
15
|
+
return (
|
|
16
|
+
<NavbarSearch>
|
|
17
|
+
<SearchBar />
|
|
18
|
+
</NavbarSearch>
|
|
19
|
+
);
|
|
15
20
|
}
|
|
@@ -5,35 +5,16 @@
|
|
|
5
5
|
* LICENSE file in the root directory of this source tree.
|
|
6
6
|
*/
|
|
7
7
|
import React from 'react';
|
|
8
|
-
import
|
|
9
|
-
import DropdownNavbarItem from '@theme/NavbarItem/DropdownNavbarItem';
|
|
10
|
-
import LocaleDropdownNavbarItem from '@theme/NavbarItem/LocaleDropdownNavbarItem';
|
|
11
|
-
import SearchNavbarItem from '@theme/NavbarItem/SearchNavbarItem';
|
|
12
|
-
const NavbarItemComponents = {
|
|
13
|
-
default: () => DefaultNavbarItem,
|
|
14
|
-
localeDropdown: () => LocaleDropdownNavbarItem,
|
|
15
|
-
search: () => SearchNavbarItem,
|
|
16
|
-
dropdown: () => DropdownNavbarItem,
|
|
17
|
-
// Need to lazy load these items as we don't know for sure the docs plugin is
|
|
18
|
-
// loaded. See https://github.com/facebook/docusaurus/issues/3360
|
|
19
|
-
|
|
20
|
-
/* eslint-disable @typescript-eslint/no-var-requires, global-require */
|
|
21
|
-
docsVersion: () => require('@theme/NavbarItem/DocsVersionNavbarItem').default,
|
|
22
|
-
docsVersionDropdown: () =>
|
|
23
|
-
require('@theme/NavbarItem/DocsVersionDropdownNavbarItem').default,
|
|
24
|
-
doc: () => require('@theme/NavbarItem/DocNavbarItem').default,
|
|
25
|
-
docSidebar: () => require('@theme/NavbarItem/DocSidebarNavbarItem').default,
|
|
26
|
-
/* eslint-enable @typescript-eslint/no-var-requires, global-require */
|
|
27
|
-
};
|
|
8
|
+
import ComponentTypes from '@theme/NavbarItem/ComponentTypes';
|
|
28
9
|
|
|
29
10
|
const getNavbarItemComponent = (type) => {
|
|
30
|
-
const
|
|
11
|
+
const component = ComponentTypes[type];
|
|
31
12
|
|
|
32
|
-
if (!
|
|
13
|
+
if (!component) {
|
|
33
14
|
throw new Error(`No NavbarItem component found for type "${type}".`);
|
|
34
15
|
}
|
|
35
16
|
|
|
36
|
-
return
|
|
17
|
+
return component;
|
|
37
18
|
};
|
|
38
19
|
|
|
39
20
|
function getComponentType(type, isDropdown) {
|
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
* This source code is licensed under the MIT license found in the
|
|
5
5
|
* LICENSE file in the root directory of this source tree.
|
|
6
6
|
*/
|
|
7
|
-
|
|
7
|
+
|
|
8
|
+
/* eslint-disable import/no-named-export */
|
|
8
9
|
export const getInfimaActiveClassName = (mobile) =>
|
|
9
10
|
mobile ? 'menu__link--active' : 'navbar__link--active';
|
|
@@ -5,11 +5,17 @@
|
|
|
5
5
|
* LICENSE file in the root directory of this source tree.
|
|
6
6
|
*/
|
|
7
7
|
import React from 'react';
|
|
8
|
+
import clsx from 'clsx';
|
|
8
9
|
import Link from '@docusaurus/Link';
|
|
9
10
|
export default function PaginatorNavLink(props) {
|
|
10
|
-
const {permalink, title, subLabel} = props;
|
|
11
|
+
const {permalink, title, subLabel, isNext} = props;
|
|
11
12
|
return (
|
|
12
|
-
<Link
|
|
13
|
+
<Link
|
|
14
|
+
className={clsx(
|
|
15
|
+
'pagination-nav__link',
|
|
16
|
+
isNext ? 'pagination-nav__link--next' : 'pagination-nav__link--prev',
|
|
17
|
+
)}
|
|
18
|
+
to={permalink}>
|
|
13
19
|
{subLabel && <div className="pagination-nav__sublabel">{subLabel}</div>}
|
|
14
20
|
<div className="pagination-nav__label">{title}</div>
|
|
15
21
|
</Link>
|
|
@@ -101,15 +101,16 @@ export default function SiteMetadata() {
|
|
|
101
101
|
|
|
102
102
|
<SearchMetadata tag={DEFAULT_SEARCH_TAG} locale={currentLocale} />
|
|
103
103
|
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
104
|
+
{/*
|
|
105
|
+
It's important to have an additional <Head> element here, as it allows
|
|
106
|
+
react-helmet to override default metadata values set in previous <Head>
|
|
107
|
+
like "twitter:card". In same Head, the same meta would appear twice
|
|
108
|
+
instead of overriding.
|
|
109
|
+
*/}
|
|
110
|
+
<Head>
|
|
110
111
|
{/* Yes, "metadatum" is the grammatically correct term */}
|
|
111
112
|
{metadata.map((metadatum, i) => (
|
|
112
|
-
<meta key={
|
|
113
|
+
<meta key={i} {...metadatum} />
|
|
113
114
|
))}
|
|
114
115
|
</Head>
|
|
115
116
|
</>
|
|
@@ -4,38 +4,12 @@
|
|
|
4
4
|
* This source code is licensed under the MIT license found in the
|
|
5
5
|
* LICENSE file in the root directory of this source tree.
|
|
6
6
|
*/
|
|
7
|
-
import React
|
|
8
|
-
import {useHistory} from '@docusaurus/router';
|
|
7
|
+
import React from 'react';
|
|
9
8
|
import Translate from '@docusaurus/Translate';
|
|
10
|
-
import {
|
|
9
|
+
import {useSkipToContent} from '@docusaurus/theme-common';
|
|
11
10
|
import styles from './styles.module.css';
|
|
12
|
-
|
|
13
|
-
function programmaticFocus(el) {
|
|
14
|
-
el.setAttribute('tabindex', '-1');
|
|
15
|
-
el.focus();
|
|
16
|
-
el.removeAttribute('tabindex');
|
|
17
|
-
}
|
|
18
|
-
|
|
19
11
|
export default function SkipToContent() {
|
|
20
|
-
const containerRef =
|
|
21
|
-
const {action} = useHistory();
|
|
22
|
-
|
|
23
|
-
const handleSkip = (e) => {
|
|
24
|
-
e.preventDefault();
|
|
25
|
-
const targetElement =
|
|
26
|
-
document.querySelector('main:first-of-type') ||
|
|
27
|
-
document.querySelector('.main-wrapper');
|
|
28
|
-
|
|
29
|
-
if (targetElement) {
|
|
30
|
-
programmaticFocus(targetElement);
|
|
31
|
-
}
|
|
32
|
-
};
|
|
33
|
-
|
|
34
|
-
useLocationChange(({location}) => {
|
|
35
|
-
if (containerRef.current && !location.hash && action === 'PUSH') {
|
|
36
|
-
programmaticFocus(containerRef.current);
|
|
37
|
-
}
|
|
38
|
-
});
|
|
12
|
+
const {containerRef, handleSkip} = useSkipToContent();
|
|
39
13
|
return (
|
|
40
14
|
<div ref={containerRef} role="region">
|
|
41
15
|
{/* eslint-disable-next-line jsx-a11y/anchor-is-valid */}
|
|
@@ -0,0 +1,29 @@
|
|
|
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
|
+
import React from 'react';
|
|
8
|
+
import clsx from 'clsx';
|
|
9
|
+
import Translate from '@docusaurus/Translate';
|
|
10
|
+
import styles from './CollapseButton.module.css';
|
|
11
|
+
export default function TOCCollapsibleCollapseButton({collapsed, ...props}) {
|
|
12
|
+
return (
|
|
13
|
+
<button
|
|
14
|
+
type="button"
|
|
15
|
+
{...props}
|
|
16
|
+
className={clsx(
|
|
17
|
+
'clean-btn',
|
|
18
|
+
styles.tocCollapsibleButton,
|
|
19
|
+
!collapsed && styles.tocCollapsibleButtonExpanded,
|
|
20
|
+
props.className,
|
|
21
|
+
)}>
|
|
22
|
+
<Translate
|
|
23
|
+
id="theme.TOCCollapsible.toggleButtonLabel"
|
|
24
|
+
description="The label used by the button on the collapsible TOC component">
|
|
25
|
+
On this page
|
|
26
|
+
</Translate>
|
|
27
|
+
</button>
|
|
28
|
+
);
|
|
29
|
+
}
|
|
@@ -5,12 +5,6 @@
|
|
|
5
5
|
* LICENSE file in the root directory of this source tree.
|
|
6
6
|
*/
|
|
7
7
|
|
|
8
|
-
.tocCollapsible {
|
|
9
|
-
background-color: var(--ifm-menu-color-background-active);
|
|
10
|
-
border-radius: var(--ifm-global-radius);
|
|
11
|
-
margin: 1rem 0;
|
|
12
|
-
}
|
|
13
|
-
|
|
14
8
|
.tocCollapsibleButton {
|
|
15
9
|
font-size: inherit;
|
|
16
10
|
display: flex;
|
|
@@ -30,21 +24,6 @@
|
|
|
30
24
|
transition: transform var(--ifm-transition-fast);
|
|
31
25
|
}
|
|
32
26
|
|
|
33
|
-
.
|
|
34
|
-
border-left: none;
|
|
35
|
-
border-top: 1px solid var(--ifm-color-emphasis-300);
|
|
36
|
-
padding: 0.2rem 0;
|
|
37
|
-
font-size: 15px;
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
.tocCollapsibleContent ul li {
|
|
41
|
-
margin: 0.4rem 0.8rem;
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
.tocCollapsibleContent a {
|
|
45
|
-
display: block;
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
.tocCollapsibleExpanded .tocCollapsibleButton::after {
|
|
27
|
+
.tocCollapsibleButtonExpanded::after {
|
|
49
28
|
transform: none;
|
|
50
29
|
}
|
|
@@ -6,10 +6,10 @@
|
|
|
6
6
|
*/
|
|
7
7
|
import React from 'react';
|
|
8
8
|
import clsx from 'clsx';
|
|
9
|
-
import Translate from '@docusaurus/Translate';
|
|
10
9
|
import {useCollapsible, Collapsible} from '@docusaurus/theme-common';
|
|
11
|
-
import styles from './
|
|
10
|
+
import styles from './index.module.css';
|
|
12
11
|
import TOCItems from '@theme/TOCItems';
|
|
12
|
+
import CollapseButton from '@theme/TOCCollapsible/CollapseButton';
|
|
13
13
|
export default function TOCCollapsible({
|
|
14
14
|
toc,
|
|
15
15
|
className,
|
|
@@ -26,17 +26,7 @@ export default function TOCCollapsible({
|
|
|
26
26
|
!collapsed && styles.tocCollapsibleExpanded,
|
|
27
27
|
className,
|
|
28
28
|
)}>
|
|
29
|
-
<
|
|
30
|
-
type="button"
|
|
31
|
-
className={clsx('clean-btn', styles.tocCollapsibleButton)}
|
|
32
|
-
onClick={toggleCollapsed}>
|
|
33
|
-
<Translate
|
|
34
|
-
id="theme.TOCCollapsible.toggleButtonLabel"
|
|
35
|
-
description="The label used by the button on the collapsible TOC component">
|
|
36
|
-
On this page
|
|
37
|
-
</Translate>
|
|
38
|
-
</button>
|
|
39
|
-
|
|
29
|
+
<CollapseButton collapsed={collapsed} onClick={toggleCollapsed} />
|
|
40
30
|
<Collapsible
|
|
41
31
|
lazy
|
|
42
32
|
className={styles.tocCollapsibleContent}
|
|
@@ -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
|
+
.tocCollapsible {
|
|
9
|
+
background-color: var(--ifm-menu-color-background-active);
|
|
10
|
+
border-radius: var(--ifm-global-radius);
|
|
11
|
+
margin: 1rem 0;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
.tocCollapsibleContent > ul {
|
|
15
|
+
border-left: none;
|
|
16
|
+
border-top: 1px solid var(--ifm-color-emphasis-300);
|
|
17
|
+
padding: 0.2rem 0;
|
|
18
|
+
font-size: 15px;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
.tocCollapsibleContent ul li {
|
|
22
|
+
margin: 0.4rem 0.8rem;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
.tocCollapsibleContent a {
|
|
26
|
+
display: block;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
.tocCollapsibleExpanded {
|
|
30
|
+
transform: none;
|
|
31
|
+
}
|
|
@@ -0,0 +1,40 @@
|
|
|
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
|
+
import React from 'react';
|
|
8
|
+
|
|
9
|
+
// Recursive component rendering the toc tree
|
|
10
|
+
function TOCItemTree({toc, className, linkClassName, isChild}) {
|
|
11
|
+
if (!toc.length) {
|
|
12
|
+
return null;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
return (
|
|
16
|
+
<ul className={isChild ? undefined : className}>
|
|
17
|
+
{toc.map((heading) => (
|
|
18
|
+
<li key={heading.id}>
|
|
19
|
+
{/* eslint-disable-next-line jsx-a11y/control-has-associated-label */}
|
|
20
|
+
<a
|
|
21
|
+
href={`#${heading.id}`}
|
|
22
|
+
className={linkClassName ?? undefined} // Developer provided the HTML, so assume it's safe.
|
|
23
|
+
// eslint-disable-next-line react/no-danger
|
|
24
|
+
dangerouslySetInnerHTML={{
|
|
25
|
+
__html: heading.value,
|
|
26
|
+
}}
|
|
27
|
+
/>
|
|
28
|
+
<TOCItemTree
|
|
29
|
+
isChild
|
|
30
|
+
toc={heading.children}
|
|
31
|
+
className={className}
|
|
32
|
+
linkClassName={linkClassName}
|
|
33
|
+
/>
|
|
34
|
+
</li>
|
|
35
|
+
))}
|
|
36
|
+
</ul>
|
|
37
|
+
);
|
|
38
|
+
} // Memo only the tree root is enough
|
|
39
|
+
|
|
40
|
+
export default React.memo(TOCItemTree);
|
|
@@ -5,43 +5,12 @@
|
|
|
5
5
|
* LICENSE file in the root directory of this source tree.
|
|
6
6
|
*/
|
|
7
7
|
import React, {useMemo} from 'react';
|
|
8
|
+
import TOCItemTree from '@theme/TOCItems/Tree';
|
|
8
9
|
import {
|
|
9
10
|
useThemeConfig,
|
|
10
11
|
useTOCHighlight,
|
|
11
12
|
useFilteredAndTreeifiedTOC,
|
|
12
|
-
} from '@docusaurus/theme-common';
|
|
13
|
-
|
|
14
|
-
/* eslint-disable jsx-a11y/control-has-associated-label */
|
|
15
|
-
|
|
16
|
-
function TOCItemList({toc, className, linkClassName, isChild}) {
|
|
17
|
-
if (!toc.length) {
|
|
18
|
-
return null;
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
return (
|
|
22
|
-
<ul className={isChild ? undefined : className}>
|
|
23
|
-
{toc.map((heading) => (
|
|
24
|
-
<li key={heading.id}>
|
|
25
|
-
<a
|
|
26
|
-
href={`#${heading.id}`}
|
|
27
|
-
className={linkClassName ?? undefined} // Developer provided the HTML, so assume it's safe.
|
|
28
|
-
// eslint-disable-next-line react/no-danger
|
|
29
|
-
dangerouslySetInnerHTML={{
|
|
30
|
-
__html: heading.value,
|
|
31
|
-
}}
|
|
32
|
-
/>
|
|
33
|
-
<TOCItemList
|
|
34
|
-
isChild
|
|
35
|
-
toc={heading.children}
|
|
36
|
-
className={className}
|
|
37
|
-
linkClassName={linkClassName}
|
|
38
|
-
/>
|
|
39
|
-
</li>
|
|
40
|
-
))}
|
|
41
|
-
</ul>
|
|
42
|
-
);
|
|
43
|
-
}
|
|
44
|
-
|
|
13
|
+
} from '@docusaurus/theme-common';
|
|
45
14
|
export default function TOCItems({
|
|
46
15
|
toc,
|
|
47
16
|
className = 'table-of-contents table-of-contents__left-border',
|
|
@@ -75,7 +44,7 @@ export default function TOCItems({
|
|
|
75
44
|
}, [linkClassName, linkActiveClassName, minHeadingLevel, maxHeadingLevel]);
|
|
76
45
|
useTOCHighlight(tocHighlightConfig);
|
|
77
46
|
return (
|
|
78
|
-
<
|
|
47
|
+
<TOCItemTree
|
|
79
48
|
toc={tocTree}
|
|
80
49
|
className={className}
|
|
81
50
|
linkClassName={linkClassName}
|