@docusaurus/theme-classic 2.0.0-beta.8e9b829d9 → 2.0.0-beta.9
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/README.md +1 -1
- package/codeTranslations/ar.json +12 -6
- package/codeTranslations/base.json +12 -0
- package/codeTranslations/bn.json +6 -0
- package/codeTranslations/cs.json +62 -0
- package/codeTranslations/da.json +6 -0
- package/codeTranslations/de.json +8 -2
- package/codeTranslations/es.json +10 -4
- package/codeTranslations/fa.json +9 -3
- package/codeTranslations/fil.json +6 -0
- package/codeTranslations/fr.json +6 -0
- package/codeTranslations/he.json +6 -0
- package/codeTranslations/hi.json +6 -0
- package/codeTranslations/ja.json +6 -0
- package/codeTranslations/ko.json +6 -0
- package/codeTranslations/pl.json +6 -0
- package/codeTranslations/pt-BR.json +8 -2
- package/codeTranslations/pt-PT.json +6 -0
- package/codeTranslations/ru.json +6 -0
- package/codeTranslations/sr.json +62 -0
- package/codeTranslations/tr.json +9 -3
- package/codeTranslations/vi.json +10 -4
- package/codeTranslations/zh-Hans.json +6 -0
- package/codeTranslations/zh-Hant.json +6 -0
- package/lib/__tests__/validateThemeConfig.test.js +154 -4
- package/lib/index.js +2 -3
- package/lib/prism-include-languages.js +9 -5
- package/lib/theme/AnnouncementBar/index.js +8 -12
- package/lib/theme/AnnouncementBar/styles.module.css +23 -32
- package/lib/theme/BackToTopButton/index.js +27 -13
- package/lib/theme/BackToTopButton/styles.module.css +17 -14
- package/lib/theme/BlogArchivePage/index.js +89 -0
- package/lib/theme/BlogLayout/index.js +2 -6
- package/lib/theme/BlogListPage/index.js +1 -1
- package/lib/theme/BlogPostAuthor/index.js +51 -0
- package/lib/theme/BlogPostAuthor/styles.module.css +12 -0
- package/lib/theme/BlogPostAuthors/index.js +47 -0
- package/lib/theme/BlogPostAuthors/styles.module.css +11 -0
- package/lib/theme/BlogPostItem/index.js +58 -67
- package/lib/theme/BlogPostPage/index.js +33 -4
- package/lib/theme/BlogSidebar/styles.module.css +2 -2
- package/lib/theme/BlogTagsListPage/index.js +3 -28
- package/lib/theme/BlogTagsPostsPage/index.js +5 -8
- package/lib/theme/CodeBlock/index.js +44 -37
- package/lib/theme/CodeBlock/styles.module.css +1 -2
- package/lib/theme/DocItem/index.js +15 -40
- package/lib/theme/DocItem/styles.module.css +2 -12
- package/lib/theme/DocItemFooter/index.js +79 -0
- package/lib/theme/DocItemFooter/styles.module.css +18 -0
- package/lib/theme/DocPage/index.js +18 -13
- package/lib/theme/DocSidebar/index.js +11 -16
- package/lib/theme/DocSidebarItem/index.js +12 -10
- package/lib/theme/DocTagDocListPage/index.js +89 -0
- package/lib/theme/DocTagsListPage/index.js +44 -0
- package/lib/theme/DocVersionBanner/index.js +6 -4
- package/lib/theme/EditThisPage/index.js +3 -1
- package/lib/theme/Footer/index.js +5 -3
- package/lib/theme/Heading/index.js +7 -9
- package/lib/theme/Heading/styles.css +4 -6
- package/lib/theme/Heading/styles.module.css +9 -5
- package/lib/theme/IconClose/index.js +31 -0
- package/lib/theme/LastUpdated/index.js +4 -2
- package/lib/theme/LayoutHead/index.js +13 -11
- package/lib/theme/LayoutProviders/index.js +7 -5
- package/lib/theme/Logo/index.js +14 -12
- package/lib/theme/MDXComponents/index.js +27 -1
- package/lib/theme/MDXComponents/styles.css +11 -0
- package/lib/theme/MDXPage/index.js +2 -1
- package/lib/theme/Navbar/index.js +20 -3
- package/lib/theme/Navbar/styles.module.css +5 -1
- package/lib/theme/NavbarItem/DefaultNavbarItem.js +12 -4
- package/lib/theme/NavbarItem/DocNavbarItem.js +5 -3
- package/lib/theme/NavbarItem/DocsVersionDropdownNavbarItem.js +7 -1
- package/lib/theme/NavbarItem/DropdownNavbarItem.js +3 -3
- package/lib/theme/NavbarItem/{LocaleDropdownNavbarItem.js → LocaleDropdownNavbarItem/index.js} +3 -4
- package/lib/theme/NavbarItem/LocaleDropdownNavbarItem/styles.module.css +11 -0
- package/lib/theme/NavbarItem/index.js +5 -0
- package/lib/theme/Seo/index.js +10 -7
- package/lib/theme/TOC/index.js +9 -30
- package/lib/theme/TOC/styles.module.css +1 -1
- package/lib/theme/TOCCollapsible/index.js +5 -3
- package/lib/theme/TOCInline/index.js +7 -27
- package/lib/theme/TOCItems/index.js +78 -0
- package/lib/theme/Tabs/__tests__/index.test.js +123 -0
- package/lib/theme/Tabs/index.js +73 -50
- package/lib/theme/Tabs/styles.module.css +0 -13
- package/lib/theme/Tag/index.js +40 -0
- package/lib/theme/Tag/styles.module.css +70 -0
- package/lib/theme/TagsListByLetter/index.js +48 -0
- package/lib/theme/TagsListByLetter/styles.module.css +11 -0
- package/lib/theme/TagsListInline/index.js +44 -0
- package/lib/theme/TagsListInline/styles.module.css +15 -0
- package/lib/theme/ThemedImage/index.js +3 -5
- package/lib/theme/Toggle/index.js +23 -18
- package/lib/theme/Toggle/styles.module.css +91 -0
- package/lib/theme/hooks/useHideableNavbar.js +14 -31
- package/lib/theme/hooks/useTheme.js +2 -2
- package/lib/theme/hooks/useWindowSize.js +2 -7
- package/lib/theme/prism-include-languages.js +4 -3
- package/lib/translations.js +4 -4
- package/lib/types.d.ts +216 -105
- package/lib/validateThemeConfig.js +215 -254
- package/lib-next/__tests__/validateThemeConfig.test.js +154 -4
- package/lib-next/index.js +1 -2
- package/lib-next/prism-include-languages.js +0 -2
- package/lib-next/theme/AnnouncementBar/index.js +7 -12
- package/lib-next/theme/AnnouncementBar/styles.module.css +23 -32
- package/lib-next/theme/BackToTopButton/index.js +37 -17
- package/lib-next/theme/BackToTopButton/styles.module.css +17 -14
- package/lib-next/theme/BlogArchivePage/index.js +80 -0
- package/lib-next/theme/BlogLayout/index.js +4 -7
- package/lib-next/theme/BlogListPage/index.js +1 -0
- package/lib-next/theme/BlogPostAuthor/index.js +46 -0
- package/lib-next/theme/BlogPostAuthor/styles.module.css +12 -0
- package/lib-next/theme/BlogPostAuthors/index.js +34 -0
- package/lib-next/theme/BlogPostAuthors/styles.module.css +11 -0
- package/lib-next/theme/BlogPostItem/index.js +79 -86
- package/lib-next/theme/BlogPostPage/index.js +55 -8
- package/lib-next/theme/BlogSidebar/styles.module.css +2 -2
- package/lib-next/theme/BlogTagsListPage/index.js +7 -39
- package/lib-next/theme/BlogTagsPostsPage/index.js +3 -4
- package/lib-next/theme/CodeBlock/index.js +53 -49
- package/lib-next/theme/CodeBlock/styles.module.css +1 -2
- package/lib-next/theme/DocItem/index.js +27 -45
- package/lib-next/theme/DocItem/styles.module.css +2 -12
- package/lib-next/theme/DocItemFooter/index.js +79 -0
- package/lib-next/theme/DocItemFooter/styles.module.css +18 -0
- package/lib-next/theme/DocPage/index.js +18 -14
- package/lib-next/theme/DocSidebar/index.js +18 -15
- package/lib-next/theme/DocSidebarItem/index.js +31 -11
- package/lib-next/theme/DocTagDocListPage/index.js +89 -0
- package/lib-next/theme/DocTagsListPage/index.js +38 -0
- package/lib-next/theme/DocVersionBanner/index.js +16 -9
- package/lib-next/theme/EditThisPage/index.js +6 -1
- package/lib-next/theme/Footer/index.js +14 -3
- package/lib-next/theme/Heading/index.js +10 -13
- package/lib-next/theme/Heading/styles.css +4 -6
- package/lib-next/theme/Heading/styles.module.css +9 -5
- package/lib-next/theme/IconClose/index.js +23 -0
- package/lib-next/theme/LastUpdated/index.js +3 -2
- package/lib-next/theme/LayoutHead/index.js +9 -15
- package/lib-next/theme/LayoutProviders/index.js +8 -5
- package/lib-next/theme/Logo/index.js +23 -19
- package/lib-next/theme/MDXComponents/index.js +20 -1
- package/lib-next/theme/MDXComponents/styles.css +11 -0
- package/lib-next/theme/MDXPage/index.js +10 -2
- package/lib-next/theme/Navbar/index.js +27 -3
- package/lib-next/theme/Navbar/styles.module.css +5 -1
- package/lib-next/theme/NavbarItem/DefaultNavbarItem.js +15 -4
- package/lib-next/theme/NavbarItem/DocNavbarItem.js +5 -3
- package/lib-next/theme/NavbarItem/DocsVersionDropdownNavbarItem.js +12 -4
- package/lib-next/theme/NavbarItem/DropdownNavbarItem.js +4 -6
- package/lib-next/theme/NavbarItem/{LocaleDropdownNavbarItem.js → LocaleDropdownNavbarItem/index.js} +2 -6
- package/lib-next/theme/NavbarItem/LocaleDropdownNavbarItem/styles.module.css +11 -0
- package/lib-next/theme/NavbarItem/index.js +2 -0
- package/lib-next/theme/Seo/index.js +11 -7
- package/lib-next/theme/TOC/index.js +12 -36
- package/lib-next/theme/TOC/styles.module.css +1 -1
- package/lib-next/theme/TOCCollapsible/index.js +12 -3
- package/lib-next/theme/TOCInline/index.js +10 -28
- package/lib-next/theme/TOCItems/index.js +85 -0
- package/lib-next/theme/Tabs/__tests__/index.test.js +142 -0
- package/lib-next/theme/Tabs/index.js +91 -43
- package/lib-next/theme/Tabs/styles.module.css +0 -13
- package/lib-next/theme/Tag/index.js +27 -0
- package/lib-next/theme/Tag/styles.module.css +70 -0
- package/lib-next/theme/TagsListByLetter/index.js +42 -0
- package/lib-next/theme/TagsListByLetter/styles.module.css +11 -0
- package/lib-next/theme/TagsListInline/index.js +31 -0
- package/lib-next/theme/TagsListInline/styles.module.css +15 -0
- package/lib-next/theme/ThemedImage/index.js +3 -3
- package/lib-next/theme/Toggle/index.js +20 -15
- package/lib-next/theme/Toggle/styles.module.css +91 -0
- package/lib-next/theme/hooks/useHideableNavbar.js +31 -47
- package/lib-next/theme/hooks/useTheme.js +2 -2
- package/lib-next/theme/hooks/useWindowSize.js +2 -6
- package/lib-next/theme/prism-include-languages.js +2 -1
- package/lib-next/translations.js +6 -10
- package/lib-next/types.d.ts +216 -105
- package/lib-next/validateThemeConfig.js +40 -36
- package/package.json +23 -19
- package/src/__tests__/validateThemeConfig.test.js +154 -4
- package/src/index.ts +11 -9
- package/src/{prism-include-languages.js → prism-include-languages.ts} +0 -0
- package/src/theme/AnnouncementBar/index.tsx +8 -12
- package/src/theme/AnnouncementBar/styles.module.css +23 -32
- package/src/theme/BackToTopButton/index.tsx +39 -17
- package/src/theme/BackToTopButton/styles.module.css +17 -14
- package/src/theme/BlogArchivePage/index.tsx +91 -0
- package/src/theme/BlogLayout/index.tsx +4 -8
- package/src/theme/BlogListPage/index.tsx +1 -0
- package/src/theme/BlogPostAuthor/index.tsx +49 -0
- package/src/theme/BlogPostAuthor/styles.module.css +12 -0
- package/src/theme/BlogPostAuthors/index.tsx +36 -0
- package/src/theme/BlogPostAuthors/styles.module.css +11 -0
- package/src/theme/BlogPostItem/index.tsx +70 -80
- package/src/theme/BlogPostPage/index.tsx +57 -8
- package/src/theme/BlogSidebar/styles.module.css +2 -2
- package/src/theme/BlogTagsListPage/index.tsx +7 -41
- package/src/theme/BlogTagsPostsPage/index.tsx +3 -4
- package/src/theme/CodeBlock/index.tsx +63 -47
- package/src/theme/CodeBlock/styles.module.css +1 -2
- package/src/theme/DocItem/index.tsx +27 -46
- package/src/theme/DocItem/styles.module.css +2 -12
- package/src/theme/DocItemFooter/index.tsx +91 -0
- package/src/theme/DocItemFooter/styles.module.css +18 -0
- package/src/theme/DocPage/index.tsx +16 -12
- package/src/theme/DocSidebar/index.tsx +20 -16
- package/src/theme/DocSidebarItem/index.tsx +29 -10
- package/src/theme/DocTagDocListPage/index.tsx +89 -0
- package/src/theme/DocTagsListPage/index.tsx +41 -0
- package/src/theme/DocVersionBanner/index.tsx +26 -15
- package/src/theme/EditThisPage/index.tsx +6 -1
- package/src/theme/Footer/index.tsx +16 -3
- package/src/theme/Heading/index.tsx +10 -13
- package/src/theme/Heading/styles.css +4 -6
- package/src/theme/Heading/styles.module.css +9 -5
- package/src/theme/IconClose/index.tsx +26 -0
- package/src/theme/LastUpdated/index.tsx +3 -2
- package/src/theme/LayoutHead/index.tsx +9 -9
- package/src/theme/LayoutProviders/index.tsx +8 -5
- package/src/theme/Logo/index.tsx +19 -15
- package/src/theme/MDXComponents/index.tsx +20 -1
- package/src/theme/MDXComponents/styles.css +11 -0
- package/src/theme/MDXPage/index.tsx +10 -2
- package/src/theme/Navbar/index.tsx +26 -2
- package/src/theme/Navbar/styles.module.css +5 -1
- package/src/theme/NavbarItem/DefaultNavbarItem.tsx +15 -4
- package/src/theme/NavbarItem/DocNavbarItem.tsx +9 -5
- package/src/theme/NavbarItem/DocsVersionDropdownNavbarItem.tsx +15 -6
- package/src/theme/NavbarItem/DocsVersionNavbarItem.tsx +7 -3
- package/src/theme/NavbarItem/DropdownNavbarItem.tsx +4 -6
- package/src/theme/NavbarItem/{LocaleDropdownNavbarItem.tsx → LocaleDropdownNavbarItem/index.tsx} +6 -5
- package/src/theme/NavbarItem/LocaleDropdownNavbarItem/styles.module.css +11 -0
- package/src/theme/NavbarItem/index.tsx +6 -1
- package/src/theme/Seo/index.tsx +7 -4
- package/src/theme/TOC/index.tsx +13 -38
- package/src/theme/TOC/styles.module.css +1 -1
- package/src/theme/TOCCollapsible/index.tsx +8 -2
- package/src/theme/TOCInline/index.tsx +13 -32
- package/src/theme/TOCItems/index.tsx +96 -0
- package/src/theme/Tabs/__tests__/index.test.tsx +129 -0
- package/src/theme/Tabs/index.tsx +93 -49
- package/src/theme/Tabs/styles.module.css +0 -13
- package/src/theme/Tag/index.tsx +31 -0
- package/src/theme/Tag/styles.module.css +70 -0
- package/src/theme/TagsListByLetter/index.tsx +45 -0
- package/src/theme/TagsListByLetter/styles.module.css +11 -0
- package/src/theme/TagsListInline/index.tsx +35 -0
- package/src/theme/TagsListInline/styles.module.css +15 -0
- package/src/theme/ThemedImage/index.tsx +3 -3
- package/src/theme/Toggle/index.tsx +20 -15
- package/src/theme/Toggle/styles.module.css +91 -0
- package/src/theme/hooks/useContextualSearchFilters.ts +1 -1
- package/src/theme/hooks/useHideableNavbar.ts +32 -47
- package/src/theme/hooks/useTabGroupChoice.ts +2 -2
- package/src/theme/hooks/useTheme.ts +2 -2
- package/src/theme/hooks/useWindowSize.ts +2 -7
- package/src/theme/prism-include-languages.ts +3 -2
- package/src/translations.ts +6 -10
- package/src/types.d.ts +216 -105
- package/src/{validateThemeConfig.js → validateThemeConfig.ts} +46 -12
- package/tsconfig.json +0 -1
- package/update-code-translations.js +5 -4
- package/update-code-translations.test.js +1 -1
- package/update.js +151 -0
- package/lib/theme/Toggle/styles.css +0 -103
- package/lib/theme/hooks/useScrollPosition.js +0 -51
- package/lib/theme/hooks/useTOCHighlight.js +0 -87
- package/lib-next/theme/Toggle/styles.css +0 -103
- package/lib-next/theme/hooks/useScrollPosition.js +0 -42
- package/lib-next/theme/hooks/useTOCHighlight.js +0 -84
- package/src/theme/Toggle/styles.css +0 -103
- package/src/theme/hooks/useScrollPosition.ts +0 -52
- package/src/theme/hooks/useTOCHighlight.ts +0 -98
|
@@ -8,7 +8,6 @@
|
|
|
8
8
|
import React, {ReactNode, useState, useCallback} from 'react';
|
|
9
9
|
import {MDXProvider} from '@mdx-js/react';
|
|
10
10
|
|
|
11
|
-
import useDocusaurusContext from '@docusaurus/useDocusaurusContext';
|
|
12
11
|
import renderRoutes from '@docusaurus/renderRoutes';
|
|
13
12
|
import type {PropVersionMetadata} from '@docusaurus/plugin-content-docs-types';
|
|
14
13
|
import Layout from '@theme/Layout';
|
|
@@ -25,6 +24,7 @@ import {translate} from '@docusaurus/Translate';
|
|
|
25
24
|
import clsx from 'clsx';
|
|
26
25
|
import styles from './styles.module.css';
|
|
27
26
|
import {ThemeClassNames, docVersionSearchTag} from '@docusaurus/theme-common';
|
|
27
|
+
import Head from '@docusaurus/Head';
|
|
28
28
|
|
|
29
29
|
type DocPageContentProps = {
|
|
30
30
|
readonly currentDocRoute: DocumentRoute;
|
|
@@ -37,7 +37,6 @@ function DocPageContent({
|
|
|
37
37
|
versionMetadata,
|
|
38
38
|
children,
|
|
39
39
|
}: DocPageContentProps): JSX.Element {
|
|
40
|
-
const {isClient} = useDocusaurusContext();
|
|
41
40
|
const {pluginId, version} = versionMetadata;
|
|
42
41
|
|
|
43
42
|
const sidebarName = currentDocRoute.sidebar;
|
|
@@ -52,14 +51,13 @@ function DocPageContent({
|
|
|
52
51
|
setHiddenSidebar(false);
|
|
53
52
|
}
|
|
54
53
|
|
|
55
|
-
setHiddenSidebarContainer(!
|
|
54
|
+
setHiddenSidebarContainer((value) => !value);
|
|
56
55
|
}, [hiddenSidebar]);
|
|
57
56
|
|
|
58
57
|
return (
|
|
59
58
|
<Layout
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
pageClassName={ThemeClassNames.page.docPage}
|
|
59
|
+
wrapperClassName={ThemeClassNames.wrapper.docsPages}
|
|
60
|
+
pageClassName={ThemeClassNames.page.docsDocPage}
|
|
63
61
|
searchMetadatas={{
|
|
64
62
|
version,
|
|
65
63
|
tag: docVersionSearchTag(pluginId, version),
|
|
@@ -150,14 +148,20 @@ function DocPage(props: Props): JSX.Element {
|
|
|
150
148
|
matchPath(location.pathname, docRoute),
|
|
151
149
|
);
|
|
152
150
|
if (!currentDocRoute) {
|
|
153
|
-
return <NotFound
|
|
151
|
+
return <NotFound />;
|
|
154
152
|
}
|
|
155
153
|
return (
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
154
|
+
<>
|
|
155
|
+
<Head>
|
|
156
|
+
{/* TODO we should add a core addRoute({htmlClassName}) generic plugin option */}
|
|
157
|
+
<html className={versionMetadata.className} />
|
|
158
|
+
</Head>
|
|
159
|
+
<DocPageContent
|
|
160
|
+
currentDocRoute={currentDocRoute}
|
|
161
|
+
versionMetadata={versionMetadata}>
|
|
162
|
+
{renderRoutes(docRoutes, {versionMetadata})}
|
|
163
|
+
</DocPageContent>
|
|
164
|
+
</>
|
|
161
165
|
);
|
|
162
166
|
}
|
|
163
167
|
|
|
@@ -12,9 +12,10 @@ import {
|
|
|
12
12
|
useAnnouncementBar,
|
|
13
13
|
MobileSecondaryMenuFiller,
|
|
14
14
|
MobileSecondaryMenuComponent,
|
|
15
|
+
ThemeClassNames,
|
|
16
|
+
useScrollPosition,
|
|
15
17
|
} from '@docusaurus/theme-common';
|
|
16
18
|
import useWindowSize from '@theme/hooks/useWindowSize';
|
|
17
|
-
import useScrollPosition from '@theme/hooks/useScrollPosition';
|
|
18
19
|
import Logo from '@theme/Logo';
|
|
19
20
|
import IconArrow from '@theme/IconArrow';
|
|
20
21
|
import {translate} from '@docusaurus/Translate';
|
|
@@ -24,17 +25,21 @@ import type {Props} from '@theme/DocSidebar';
|
|
|
24
25
|
import styles from './styles.module.css';
|
|
25
26
|
|
|
26
27
|
function useShowAnnouncementBar() {
|
|
27
|
-
const {
|
|
28
|
-
const [showAnnouncementBar, setShowAnnouncementBar] = useState(
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
28
|
+
const {isActive} = useAnnouncementBar();
|
|
29
|
+
const [showAnnouncementBar, setShowAnnouncementBar] = useState(isActive);
|
|
30
|
+
|
|
31
|
+
useScrollPosition(
|
|
32
|
+
({scrollY}) => {
|
|
33
|
+
if (isActive) {
|
|
34
|
+
setShowAnnouncementBar(scrollY === 0);
|
|
35
|
+
}
|
|
36
|
+
},
|
|
37
|
+
[isActive],
|
|
38
|
+
);
|
|
39
|
+
return isActive && showAnnouncementBar;
|
|
35
40
|
}
|
|
36
41
|
|
|
37
|
-
function HideableSidebarButton({onClick}) {
|
|
42
|
+
function HideableSidebarButton({onClick}: {onClick: React.MouseEventHandler}) {
|
|
38
43
|
return (
|
|
39
44
|
<button
|
|
40
45
|
type="button"
|
|
@@ -64,7 +69,6 @@ function DocSidebarDesktop({path, sidebar, onCollapse, isHidden}: Props) {
|
|
|
64
69
|
navbar: {hideOnScroll},
|
|
65
70
|
hideableSidebar,
|
|
66
71
|
} = useThemeConfig();
|
|
67
|
-
const {isClosed: isAnnouncementBarClosed} = useAnnouncementBar();
|
|
68
72
|
|
|
69
73
|
return (
|
|
70
74
|
<div
|
|
@@ -75,11 +79,10 @@ function DocSidebarDesktop({path, sidebar, onCollapse, isHidden}: Props) {
|
|
|
75
79
|
{hideOnScroll && <Logo tabIndex={-1} className={styles.sidebarLogo} />}
|
|
76
80
|
<nav
|
|
77
81
|
className={clsx('menu thin-scrollbar', styles.menu, {
|
|
78
|
-
[styles.menuWithAnnouncementBar]:
|
|
79
|
-
!isAnnouncementBarClosed && showAnnouncementBar,
|
|
82
|
+
[styles.menuWithAnnouncementBar]: showAnnouncementBar,
|
|
80
83
|
})}>
|
|
81
|
-
<ul className=
|
|
82
|
-
<DocSidebarItems items={sidebar} activePath={path} />
|
|
84
|
+
<ul className={clsx(ThemeClassNames.docs.docSidebarMenu, 'menu__list')}>
|
|
85
|
+
<DocSidebarItems items={sidebar} activePath={path} level={1} />
|
|
83
86
|
</ul>
|
|
84
87
|
</nav>
|
|
85
88
|
{hideableSidebar && <HideableSidebarButton onClick={onCollapse} />}
|
|
@@ -93,11 +96,12 @@ const DocSidebarMobileSecondaryMenu: MobileSecondaryMenuComponent<Props> = ({
|
|
|
93
96
|
path,
|
|
94
97
|
}) => {
|
|
95
98
|
return (
|
|
96
|
-
<ul className=
|
|
99
|
+
<ul className={clsx(ThemeClassNames.docs.docSidebarMenu, 'menu__list')}>
|
|
97
100
|
<DocSidebarItems
|
|
98
101
|
items={sidebar}
|
|
99
102
|
activePath={path}
|
|
100
103
|
onItemClick={() => toggleSidebar()}
|
|
104
|
+
level={1}
|
|
101
105
|
/>
|
|
102
106
|
</ul>
|
|
103
107
|
);
|
|
@@ -12,6 +12,7 @@ import {
|
|
|
12
12
|
usePrevious,
|
|
13
13
|
Collapsible,
|
|
14
14
|
useCollapsible,
|
|
15
|
+
ThemeClassNames,
|
|
15
16
|
} from '@docusaurus/theme-common';
|
|
16
17
|
import Link from '@docusaurus/Link';
|
|
17
18
|
import isInternalUrl from '@docusaurus/isInternalUrl';
|
|
@@ -25,7 +26,10 @@ import type {
|
|
|
25
26
|
|
|
26
27
|
import styles from './styles.module.css';
|
|
27
28
|
|
|
28
|
-
const isActiveSidebarItem = (
|
|
29
|
+
const isActiveSidebarItem = (
|
|
30
|
+
item: Props['item'],
|
|
31
|
+
activePath: string,
|
|
32
|
+
): boolean => {
|
|
29
33
|
if (item.type === 'link') {
|
|
30
34
|
return isSamePath(item.href, activePath);
|
|
31
35
|
}
|
|
@@ -89,16 +93,17 @@ function useAutoExpandActiveCategory({
|
|
|
89
93
|
if (justBecameActive && collapsed) {
|
|
90
94
|
setCollapsed(false);
|
|
91
95
|
}
|
|
92
|
-
}, [isActive, wasActive, collapsed]);
|
|
96
|
+
}, [isActive, wasActive, collapsed, setCollapsed]);
|
|
93
97
|
}
|
|
94
98
|
|
|
95
99
|
function DocSidebarItemCategory({
|
|
96
100
|
item,
|
|
97
101
|
onItemClick,
|
|
98
102
|
activePath,
|
|
103
|
+
level,
|
|
99
104
|
...props
|
|
100
105
|
}: Props & {item: PropSidebarItemCategory}) {
|
|
101
|
-
const {items, label, collapsible} = item;
|
|
106
|
+
const {items, label, collapsible, className} = item;
|
|
102
107
|
|
|
103
108
|
const isActive = isActiveSidebarItem(item, activePath);
|
|
104
109
|
|
|
@@ -117,9 +122,15 @@ function DocSidebarItemCategory({
|
|
|
117
122
|
|
|
118
123
|
return (
|
|
119
124
|
<li
|
|
120
|
-
className={clsx(
|
|
121
|
-
|
|
122
|
-
|
|
125
|
+
className={clsx(
|
|
126
|
+
ThemeClassNames.docs.docSidebarItemCategory,
|
|
127
|
+
ThemeClassNames.docs.docSidebarItemCategoryLevel(level),
|
|
128
|
+
'menu__list-item',
|
|
129
|
+
{
|
|
130
|
+
'menu__list-item--collapsed': collapsed,
|
|
131
|
+
},
|
|
132
|
+
className,
|
|
133
|
+
)}>
|
|
123
134
|
{/* eslint-disable-next-line jsx-a11y/anchor-is-valid */}
|
|
124
135
|
<a
|
|
125
136
|
className={clsx('menu__link', {
|
|
@@ -146,6 +157,7 @@ function DocSidebarItemCategory({
|
|
|
146
157
|
tabIndex={collapsed ? -1 : 0}
|
|
147
158
|
onItemClick={onItemClick}
|
|
148
159
|
activePath={activePath}
|
|
160
|
+
level={level + 1}
|
|
149
161
|
/>
|
|
150
162
|
</Collapsible>
|
|
151
163
|
</li>
|
|
@@ -156,20 +168,27 @@ function DocSidebarItemLink({
|
|
|
156
168
|
item,
|
|
157
169
|
onItemClick,
|
|
158
170
|
activePath,
|
|
171
|
+
level,
|
|
159
172
|
...props
|
|
160
173
|
}: Props & {item: PropSidebarItemLink}) {
|
|
161
|
-
const {href, label} = item;
|
|
174
|
+
const {href, label, className} = item;
|
|
162
175
|
const isActive = isActiveSidebarItem(item, activePath);
|
|
163
176
|
return (
|
|
164
|
-
<li
|
|
177
|
+
<li
|
|
178
|
+
className={clsx(
|
|
179
|
+
ThemeClassNames.docs.docSidebarItemLink,
|
|
180
|
+
ThemeClassNames.docs.docSidebarItemLinkLevel(level),
|
|
181
|
+
'menu__list-item',
|
|
182
|
+
className,
|
|
183
|
+
)}
|
|
184
|
+
key={label}>
|
|
165
185
|
<Link
|
|
166
186
|
className={clsx('menu__link', {
|
|
167
187
|
'menu__link--active': isActive,
|
|
168
188
|
})}
|
|
189
|
+
aria-current={isActive ? 'page' : undefined}
|
|
169
190
|
to={href}
|
|
170
191
|
{...(isInternalUrl(href) && {
|
|
171
|
-
isNavLink: true,
|
|
172
|
-
exact: true,
|
|
173
192
|
onClick: onItemClick,
|
|
174
193
|
})}
|
|
175
194
|
{...props}>
|
|
@@ -0,0 +1,89 @@
|
|
|
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
|
+
|
|
10
|
+
import Layout from '@theme/Layout';
|
|
11
|
+
import Link from '@docusaurus/Link';
|
|
12
|
+
import {ThemeClassNames, usePluralForm} from '@docusaurus/theme-common';
|
|
13
|
+
import type {PropTagDocListDoc} from '@docusaurus/plugin-content-docs-types';
|
|
14
|
+
import Translate, {translate} from '@docusaurus/Translate';
|
|
15
|
+
import type {Props} from '@theme/DocTagDocListPage';
|
|
16
|
+
|
|
17
|
+
// Very simple pluralization: probably good enough for now
|
|
18
|
+
function useNDocsTaggedPlural() {
|
|
19
|
+
const {selectMessage} = usePluralForm();
|
|
20
|
+
return (count: number) =>
|
|
21
|
+
selectMessage(
|
|
22
|
+
count,
|
|
23
|
+
translate(
|
|
24
|
+
{
|
|
25
|
+
id: 'theme.docs.tagDocListPageTitle.nDocsTagged',
|
|
26
|
+
description:
|
|
27
|
+
'Pluralized label for "{count} docs tagged". Use as much plural forms (separated by "|") as your language support (see https://www.unicode.org/cldr/cldr-aux/charts/34/supplemental/language_plural_rules.html)',
|
|
28
|
+
message: 'One doc tagged|{count} docs tagged',
|
|
29
|
+
},
|
|
30
|
+
{count},
|
|
31
|
+
),
|
|
32
|
+
);
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
function DocItem({doc}: {doc: PropTagDocListDoc}): JSX.Element {
|
|
36
|
+
return (
|
|
37
|
+
<article className="margin-vert--lg">
|
|
38
|
+
<Link to={doc.permalink}>
|
|
39
|
+
<h2>{doc.title}</h2>
|
|
40
|
+
</Link>
|
|
41
|
+
{doc.description && <p>{doc.description}</p>}
|
|
42
|
+
</article>
|
|
43
|
+
);
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
export default function DocTagDocListPage({tag}: Props): JSX.Element {
|
|
47
|
+
const nDocsTaggedPlural = useNDocsTaggedPlural();
|
|
48
|
+
const title = translate(
|
|
49
|
+
{
|
|
50
|
+
id: 'theme.docs.tagDocListPageTitle',
|
|
51
|
+
description: 'The title of the page for a docs tag',
|
|
52
|
+
message: '{nDocsTagged} with "{tagName}"',
|
|
53
|
+
},
|
|
54
|
+
{nDocsTagged: nDocsTaggedPlural(tag.docs.length), tagName: tag.name},
|
|
55
|
+
);
|
|
56
|
+
|
|
57
|
+
return (
|
|
58
|
+
<Layout
|
|
59
|
+
title={title}
|
|
60
|
+
wrapperClassName={ThemeClassNames.wrapper.docsPages}
|
|
61
|
+
pageClassName={ThemeClassNames.page.docsTagDocListPage}
|
|
62
|
+
searchMetadatas={{
|
|
63
|
+
// assign unique search tag to exclude this page from search results!
|
|
64
|
+
tag: 'doc_tag_doc_list',
|
|
65
|
+
}}>
|
|
66
|
+
<div className="container margin-vert--lg">
|
|
67
|
+
<div className="row">
|
|
68
|
+
<main className="col col--8 col--offset-2">
|
|
69
|
+
<header className="margin-bottom--xl">
|
|
70
|
+
<h1>{title}</h1>
|
|
71
|
+
<Link href={tag.allTagsPath}>
|
|
72
|
+
<Translate
|
|
73
|
+
id="theme.tags.tagsPageLink"
|
|
74
|
+
description="The label of the link targeting the tag list page">
|
|
75
|
+
View All Tags
|
|
76
|
+
</Translate>
|
|
77
|
+
</Link>
|
|
78
|
+
</header>
|
|
79
|
+
<section className="margin-vert--lg">
|
|
80
|
+
{tag.docs.map((doc) => (
|
|
81
|
+
<DocItem key={doc.id} doc={doc} />
|
|
82
|
+
))}
|
|
83
|
+
</section>
|
|
84
|
+
</main>
|
|
85
|
+
</div>
|
|
86
|
+
</div>
|
|
87
|
+
</Layout>
|
|
88
|
+
);
|
|
89
|
+
}
|
|
@@ -0,0 +1,41 @@
|
|
|
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
|
+
|
|
10
|
+
import Layout from '@theme/Layout';
|
|
11
|
+
import {
|
|
12
|
+
ThemeClassNames,
|
|
13
|
+
translateTagsPageTitle,
|
|
14
|
+
} from '@docusaurus/theme-common';
|
|
15
|
+
import TagsListByLetter from '@theme/TagsListByLetter';
|
|
16
|
+
import type {Props} from '@theme/DocTagsListPage';
|
|
17
|
+
|
|
18
|
+
function DocTagsListPage({tags}: Props): JSX.Element {
|
|
19
|
+
const title = translateTagsPageTitle();
|
|
20
|
+
return (
|
|
21
|
+
<Layout
|
|
22
|
+
title={title}
|
|
23
|
+
wrapperClassName={ThemeClassNames.wrapper.docsPages}
|
|
24
|
+
pageClassName={ThemeClassNames.page.docsTagsListPage}
|
|
25
|
+
searchMetadatas={{
|
|
26
|
+
// assign unique search tag to exclude this page from search results!
|
|
27
|
+
tag: 'doc_tags_list',
|
|
28
|
+
}}>
|
|
29
|
+
<div className="container margin-vert--lg">
|
|
30
|
+
<div className="row">
|
|
31
|
+
<main className="col col--8 col--offset-2">
|
|
32
|
+
<h1>{title}</h1>
|
|
33
|
+
<TagsListByLetter tags={tags} />
|
|
34
|
+
</main>
|
|
35
|
+
</div>
|
|
36
|
+
</div>
|
|
37
|
+
</Layout>
|
|
38
|
+
);
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
export default DocTagsListPage;
|
|
@@ -9,10 +9,19 @@ import React, {ComponentType} from 'react';
|
|
|
9
9
|
import useDocusaurusContext from '@docusaurus/useDocusaurusContext';
|
|
10
10
|
import Link from '@docusaurus/Link';
|
|
11
11
|
import Translate from '@docusaurus/Translate';
|
|
12
|
-
import {
|
|
13
|
-
|
|
12
|
+
import {
|
|
13
|
+
useActivePlugin,
|
|
14
|
+
useDocVersionSuggestions,
|
|
15
|
+
GlobalVersion,
|
|
16
|
+
} from '@theme/hooks/useDocs';
|
|
17
|
+
import {
|
|
18
|
+
ThemeClassNames,
|
|
19
|
+
useDocsPreferredVersion,
|
|
20
|
+
} from '@docusaurus/theme-common';
|
|
14
21
|
|
|
15
22
|
import type {Props} from '@theme/DocVersionBanner';
|
|
23
|
+
import clsx from 'clsx';
|
|
24
|
+
import type {VersionBanner} from '@docusaurus/plugin-content-docs-types';
|
|
16
25
|
|
|
17
26
|
type BannerLabelComponentProps = {
|
|
18
27
|
siteTitle: string;
|
|
@@ -58,7 +67,7 @@ function UnmaintainedVersionLabel({
|
|
|
58
67
|
}
|
|
59
68
|
|
|
60
69
|
const BannerLabelComponents: Record<
|
|
61
|
-
|
|
70
|
+
VersionBanner,
|
|
62
71
|
ComponentType<BannerLabelComponentProps>
|
|
63
72
|
> = {
|
|
64
73
|
unreleased: UnreleasedVersionLabel,
|
|
@@ -67,7 +76,7 @@ const BannerLabelComponents: Record<
|
|
|
67
76
|
|
|
68
77
|
function BannerLabel(props: BannerLabelComponentProps) {
|
|
69
78
|
const BannerLabelComponent =
|
|
70
|
-
BannerLabelComponents[props.versionMetadata.banner];
|
|
79
|
+
BannerLabelComponents[props.versionMetadata.banner!];
|
|
71
80
|
return <BannerLabelComponent {...props} />;
|
|
72
81
|
}
|
|
73
82
|
|
|
@@ -109,17 +118,15 @@ function DocVersionBannerEnabled({versionMetadata}: Props): JSX.Element {
|
|
|
109
118
|
const {
|
|
110
119
|
siteConfig: {title: siteTitle},
|
|
111
120
|
} = useDocusaurusContext();
|
|
112
|
-
const {pluginId} = useActivePlugin({failfast: true})
|
|
121
|
+
const {pluginId} = useActivePlugin({failfast: true})!;
|
|
113
122
|
|
|
114
|
-
const getVersionMainDoc = (version) =>
|
|
115
|
-
version.docs.find((doc) => doc.id === version.mainDocId)
|
|
123
|
+
const getVersionMainDoc = (version: GlobalVersion) =>
|
|
124
|
+
version.docs.find((doc) => doc.id === version.mainDocId)!;
|
|
116
125
|
|
|
117
126
|
const {savePreferredVersionName} = useDocsPreferredVersion(pluginId);
|
|
118
127
|
|
|
119
|
-
const {
|
|
120
|
-
|
|
121
|
-
latestVersionSuggestion,
|
|
122
|
-
} = useDocVersionSuggestions(pluginId);
|
|
128
|
+
const {latestDocSuggestion, latestVersionSuggestion} =
|
|
129
|
+
useDocVersionSuggestions(pluginId);
|
|
123
130
|
|
|
124
131
|
// try to link to same doc in latest version (not always possible)
|
|
125
132
|
// fallback to main doc of latest version
|
|
@@ -127,7 +134,12 @@ function DocVersionBannerEnabled({versionMetadata}: Props): JSX.Element {
|
|
|
127
134
|
latestDocSuggestion ?? getVersionMainDoc(latestVersionSuggestion);
|
|
128
135
|
|
|
129
136
|
return (
|
|
130
|
-
<div
|
|
137
|
+
<div
|
|
138
|
+
className={clsx(
|
|
139
|
+
ThemeClassNames.docs.docVersionBanner,
|
|
140
|
+
'alert alert--warning margin-bottom--md',
|
|
141
|
+
)}
|
|
142
|
+
role="alert">
|
|
131
143
|
<div>
|
|
132
144
|
<BannerLabel siteTitle={siteTitle} versionMetadata={versionMetadata} />
|
|
133
145
|
</div>
|
|
@@ -143,11 +155,10 @@ function DocVersionBannerEnabled({versionMetadata}: Props): JSX.Element {
|
|
|
143
155
|
}
|
|
144
156
|
|
|
145
157
|
function DocVersionBanner({versionMetadata}: Props): JSX.Element {
|
|
146
|
-
if (versionMetadata.banner
|
|
147
|
-
return <></>;
|
|
148
|
-
} else {
|
|
158
|
+
if (versionMetadata.banner) {
|
|
149
159
|
return <DocVersionBannerEnabled versionMetadata={versionMetadata} />;
|
|
150
160
|
}
|
|
161
|
+
return <></>;
|
|
151
162
|
}
|
|
152
163
|
|
|
153
164
|
export default DocVersionBanner;
|
|
@@ -10,10 +10,15 @@ import Translate from '@docusaurus/Translate';
|
|
|
10
10
|
|
|
11
11
|
import type {Props} from '@theme/EditThisPage';
|
|
12
12
|
import IconEdit from '@theme/IconEdit';
|
|
13
|
+
import {ThemeClassNames} from '@docusaurus/theme-common';
|
|
13
14
|
|
|
14
15
|
export default function EditThisPage({editUrl}: Props): JSX.Element {
|
|
15
16
|
return (
|
|
16
|
-
<a
|
|
17
|
+
<a
|
|
18
|
+
href={editUrl}
|
|
19
|
+
target="_blank"
|
|
20
|
+
rel="noreferrer noopener"
|
|
21
|
+
className={ThemeClassNames.common.editThisPage}>
|
|
17
22
|
<IconEdit />
|
|
18
23
|
<Translate
|
|
19
24
|
id="theme.common.editThisPage"
|
|
@@ -52,8 +52,16 @@ function FooterLink({
|
|
|
52
52
|
const FooterLogo = ({
|
|
53
53
|
sources,
|
|
54
54
|
alt,
|
|
55
|
-
|
|
56
|
-
|
|
55
|
+
width,
|
|
56
|
+
height,
|
|
57
|
+
}: Pick<ThemedImageProps, 'sources' | 'alt' | 'width' | 'height'>) => (
|
|
58
|
+
<ThemedImage
|
|
59
|
+
className="footer__logo"
|
|
60
|
+
alt={alt}
|
|
61
|
+
sources={sources}
|
|
62
|
+
width={width}
|
|
63
|
+
height={height}
|
|
64
|
+
/>
|
|
57
65
|
);
|
|
58
66
|
|
|
59
67
|
function Footer(): JSX.Element | null {
|
|
@@ -115,7 +123,12 @@ function Footer(): JSX.Element | null {
|
|
|
115
123
|
<div className="margin-bottom--sm">
|
|
116
124
|
{logo.href ? (
|
|
117
125
|
<Link href={logo.href} className={styles.footerLogoLink}>
|
|
118
|
-
<FooterLogo
|
|
126
|
+
<FooterLogo
|
|
127
|
+
alt={logo.alt}
|
|
128
|
+
sources={sources}
|
|
129
|
+
width={logo.width}
|
|
130
|
+
height={logo.height}
|
|
131
|
+
/>
|
|
119
132
|
</Link>
|
|
120
133
|
) : (
|
|
121
134
|
<FooterLogo alt={logo.alt} sources={sources} />
|
|
@@ -5,8 +5,6 @@
|
|
|
5
5
|
* LICENSE file in the root directory of this source tree.
|
|
6
6
|
*/
|
|
7
7
|
|
|
8
|
-
/* eslint-disable jsx-a11y/anchor-has-content, jsx-a11y/anchor-is-valid */
|
|
9
|
-
|
|
10
8
|
import React from 'react';
|
|
11
9
|
import clsx from 'clsx';
|
|
12
10
|
import type {HeadingType, Props} from '@theme/Heading';
|
|
@@ -24,7 +22,7 @@ export const MainHeading: HeadingComponent = function MainHeading({...props}) {
|
|
|
24
22
|
<h1
|
|
25
23
|
{...props}
|
|
26
24
|
id={undefined} // h1 headings do not need an id because they don't appear in the TOC
|
|
27
|
-
|
|
25
|
+
>
|
|
28
26
|
{props.children}
|
|
29
27
|
</h1>
|
|
30
28
|
</header>
|
|
@@ -44,17 +42,16 @@ const createAnchorHeading = (
|
|
|
44
42
|
}
|
|
45
43
|
|
|
46
44
|
return (
|
|
47
|
-
<Tag
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
id={id}
|
|
55
|
-
/>
|
|
45
|
+
<Tag
|
|
46
|
+
{...props}
|
|
47
|
+
className={clsx('anchor', {
|
|
48
|
+
[styles.anchorWithHideOnScrollNavbar]: hideOnScroll,
|
|
49
|
+
[styles.anchorWithStickyNavbar]: !hideOnScroll,
|
|
50
|
+
})}
|
|
51
|
+
id={id}>
|
|
56
52
|
{props.children}
|
|
57
53
|
<a
|
|
54
|
+
aria-hidden="true"
|
|
58
55
|
className="hash-link"
|
|
59
56
|
href={`#${id}`}
|
|
60
57
|
title={translate({
|
|
@@ -62,7 +59,7 @@ const createAnchorHeading = (
|
|
|
62
59
|
message: 'Direct link to heading',
|
|
63
60
|
description: 'Title for link to heading',
|
|
64
61
|
})}>
|
|
65
|
-
|
|
62
|
+
​
|
|
66
63
|
</a>
|
|
67
64
|
</Tag>
|
|
68
65
|
);
|
|
@@ -5,18 +5,16 @@
|
|
|
5
5
|
* LICENSE file in the root directory of this source tree.
|
|
6
6
|
*/
|
|
7
7
|
|
|
8
|
-
.anchor {
|
|
9
|
-
display: block;
|
|
10
|
-
position: relative;
|
|
11
|
-
top: -0.5rem;
|
|
12
|
-
}
|
|
13
|
-
|
|
14
8
|
.hash-link {
|
|
15
9
|
opacity: 0;
|
|
16
10
|
padding-left: 0.5rem;
|
|
17
11
|
transition: opacity var(--ifm-transition-fast);
|
|
18
12
|
}
|
|
19
13
|
|
|
14
|
+
.hash-link:before {
|
|
15
|
+
content: '#';
|
|
16
|
+
}
|
|
17
|
+
|
|
20
18
|
.hash-link:focus,
|
|
21
19
|
*:hover > .hash-link {
|
|
22
20
|
opacity: 1;
|
|
@@ -5,11 +5,15 @@
|
|
|
5
5
|
* LICENSE file in the root directory of this source tree.
|
|
6
6
|
*/
|
|
7
7
|
|
|
8
|
-
|
|
9
|
-
|
|
8
|
+
/*
|
|
9
|
+
When the navbar is sticky, ensure that on anchor click,
|
|
10
|
+
the browser does not scroll that anchor behind the navbar
|
|
11
|
+
See https://twitter.com/JoshWComeau/status/1332015868725891076
|
|
12
|
+
*/
|
|
13
|
+
.anchorWithStickyNavbar {
|
|
14
|
+
scroll-margin-top: calc(var(--ifm-navbar-height) + 0.5rem);
|
|
10
15
|
}
|
|
11
16
|
|
|
12
|
-
.
|
|
13
|
-
|
|
14
|
-
margin-bottom: calc(var(--ifm-leading-desktop) * var(--ifm-leading));
|
|
17
|
+
.anchorWithHideOnScrollNavbar {
|
|
18
|
+
scroll-margin-top: 0.5rem;
|
|
15
19
|
}
|
|
@@ -0,0 +1,26 @@
|
|
|
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 type {Props} from '@theme/IconClose';
|
|
10
|
+
|
|
11
|
+
export default function IconClose({
|
|
12
|
+
width = 21,
|
|
13
|
+
height = 21,
|
|
14
|
+
color = 'currentColor',
|
|
15
|
+
strokeWidth = 1.2,
|
|
16
|
+
className,
|
|
17
|
+
...restProps
|
|
18
|
+
}: Props): JSX.Element {
|
|
19
|
+
return (
|
|
20
|
+
<svg viewBox="0 0 15 15" width={width} height={height} {...restProps}>
|
|
21
|
+
<g stroke={color} strokeWidth={strokeWidth}>
|
|
22
|
+
<path d="M.75.75l13.5 13.5M14.25.75L.75 14.25" />
|
|
23
|
+
</g>
|
|
24
|
+
</svg>
|
|
25
|
+
);
|
|
26
|
+
}
|
|
@@ -8,6 +8,7 @@
|
|
|
8
8
|
import React from 'react';
|
|
9
9
|
import Translate from '@docusaurus/Translate';
|
|
10
10
|
import type {Props} from '@theme/LastUpdated';
|
|
11
|
+
import {ThemeClassNames} from '@docusaurus/theme-common';
|
|
11
12
|
|
|
12
13
|
function LastUpdatedAtDate({
|
|
13
14
|
lastUpdatedAt,
|
|
@@ -57,7 +58,7 @@ export default function LastUpdated({
|
|
|
57
58
|
lastUpdatedBy,
|
|
58
59
|
}: Props): JSX.Element {
|
|
59
60
|
return (
|
|
60
|
-
|
|
61
|
+
<span className={ThemeClassNames.common.lastUpdated}>
|
|
61
62
|
<Translate
|
|
62
63
|
id="theme.lastUpdated.lastUpdatedAtBy"
|
|
63
64
|
description="The sentence used to display when a page has been last updated, and by who"
|
|
@@ -84,6 +85,6 @@ export default function LastUpdated({
|
|
|
84
85
|
<small> (Simulated during dev for better perf)</small>
|
|
85
86
|
</div>
|
|
86
87
|
)}
|
|
87
|
-
|
|
88
|
+
</span>
|
|
88
89
|
);
|
|
89
90
|
}
|