@docusaurus/theme-classic 2.0.0-beta.12faed89d → 2.0.0-beta.13
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/lib/__tests__/validateThemeConfig.test.js +277 -3
- package/lib/admonitions.css +35 -0
- package/lib/deps.d.ts +13 -0
- package/lib/index.js +16 -15
- 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 +140 -0
- package/lib/theme/BackToTopButton/styles.module.css +42 -0
- package/lib/theme/BlogArchivePage/index.js +89 -0
- package/lib/theme/BlogLayout/index.js +51 -0
- package/lib/theme/BlogListPage/index.js +10 -21
- 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 +37 -24
- package/lib/theme/BlogSidebar/index.js +5 -7
- package/lib/theme/BlogSidebar/styles.module.css +2 -2
- package/lib/theme/BlogTagsListPage/index.js +8 -44
- package/lib/theme/BlogTagsPostsPage/index.js +24 -38
- package/lib/theme/CodeBlock/index.js +18 -138
- package/lib/theme/CodeBlock/styles.module.css +6 -9
- package/lib/theme/Details/index.js +30 -0
- package/lib/theme/Details/styles.module.css +13 -0
- package/lib/theme/DocCard/index.js +84 -0
- package/lib/theme/DocCard/styles.module.css +43 -0
- package/lib/theme/DocCardList/index.js +28 -0
- package/lib/theme/DocCategoryGeneratedIndexPage/index.js +57 -0
- package/lib/theme/DocCategoryGeneratedIndexPage/styles.module.css +18 -0
- package/lib/theme/DocItem/index.js +22 -48
- package/lib/theme/DocItem/styles.module.css +2 -11
- package/lib/theme/DocItemFooter/index.js +79 -0
- package/lib/theme/DocItemFooter/styles.module.css +18 -0
- package/lib/theme/DocPage/index.js +35 -20
- package/lib/theme/DocPaginator/index.js +6 -7
- package/lib/theme/DocSidebar/index.js +23 -22
- package/lib/theme/DocSidebarItem/index.js +84 -50
- package/lib/theme/DocSidebarItem/styles.module.css +4 -0
- package/lib/theme/DocTagDocListPage/index.js +89 -0
- package/lib/theme/DocTagsListPage/index.js +44 -0
- package/lib/theme/DocVersionBadge/index.js +34 -0
- package/lib/theme/DocVersionBanner/index.js +12 -10
- package/lib/theme/EditThisPage/index.js +3 -1
- package/lib/theme/ErrorPageContent.js +43 -0
- package/lib/theme/Footer/index.js +8 -4
- package/lib/theme/Heading/index.js +17 -22
- package/lib/theme/Heading/styles.css +5 -6
- package/lib/theme/Heading/styles.module.css +9 -5
- package/lib/theme/IconArrow/index.js +2 -2
- package/lib/theme/IconClose/index.js +31 -0
- package/lib/theme/IconEdit/index.js +3 -3
- package/lib/theme/IconExternalLink/index.js +3 -3
- package/lib/theme/IconLanguage/index.js +3 -3
- package/lib/theme/IconMenu/index.js +3 -3
- package/lib/theme/LastUpdated/index.js +4 -2
- package/lib/theme/Layout/index.js +5 -1
- package/lib/theme/LayoutHead/index.js +22 -17
- package/lib/theme/LayoutProviders/index.js +7 -5
- package/lib/theme/Logo/index.js +16 -14
- package/lib/theme/MDXComponents/index.js +45 -4
- package/lib/theme/MDXComponents/styles.css +11 -0
- package/lib/theme/MDXPage/index.js +2 -1
- package/lib/theme/Navbar/index.js +46 -27
- package/lib/theme/Navbar/styles.module.css +3 -39
- package/lib/theme/NavbarItem/DefaultNavbarItem.js +27 -124
- package/lib/theme/NavbarItem/DocNavbarItem.js +7 -8
- package/lib/theme/NavbarItem/DocsVersionDropdownNavbarItem.js +19 -12
- package/lib/theme/NavbarItem/DropdownNavbarItem.js +155 -0
- package/lib/theme/NavbarItem/{LocaleDropdownNavbarItem.js → LocaleDropdownNavbarItem/index.js} +6 -10
- package/lib/theme/NavbarItem/LocaleDropdownNavbarItem/styles.module.css +11 -0
- package/lib/theme/NavbarItem/index.js +31 -11
- package/lib/theme/{SearchMetadatas → SearchMetadata}/index.js +2 -2
- 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 +7 -5
- package/lib/theme/TOCCollapsible/styles.module.css +1 -0
- 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/ThemeProvider/index.js +8 -3
- package/lib/theme/ThemedImage/index.js +5 -7
- package/lib/theme/Toggle/index.js +41 -44
- package/lib/theme/Toggle/styles.module.css +91 -3
- package/lib/theme/UserPreferencesProvider/index.js +8 -3
- package/lib/theme/hooks/useHideableNavbar.js +14 -32
- package/lib/theme/hooks/useTheme.js +3 -5
- package/lib/theme/hooks/useWindowSize.js +2 -7
- package/lib/theme/prism-include-languages.js +4 -3
- package/lib/theme-classic.d.ts +806 -0
- package/lib/translations.js +4 -4
- package/lib/types.d.ts +0 -629
- package/lib/validateThemeConfig.js +230 -248
- package/lib-next/__tests__/validateThemeConfig.test.js +277 -3
- package/lib-next/admonitions.css +35 -0
- package/lib-next/deps.d.ts +13 -0
- package/lib-next/index.js +16 -10
- 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 +131 -0
- package/lib-next/theme/BackToTopButton/styles.module.css +42 -0
- package/lib-next/theme/BlogArchivePage/index.js +80 -0
- package/lib-next/theme/BlogLayout/index.js +40 -0
- package/lib-next/theme/BlogListPage/index.js +17 -25
- 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 +70 -35
- package/lib-next/theme/BlogSidebar/index.js +11 -13
- package/lib-next/theme/BlogSidebar/styles.module.css +2 -2
- package/lib-next/theme/BlogTagsListPage/index.js +14 -55
- package/lib-next/theme/BlogTagsPostsPage/index.js +29 -39
- package/lib-next/theme/CodeBlock/index.js +17 -149
- package/lib-next/theme/CodeBlock/styles.module.css +6 -9
- package/lib-next/theme/Details/index.js +20 -0
- package/lib-next/theme/Details/styles.module.css +13 -0
- package/lib-next/theme/DocCard/index.js +80 -0
- package/lib-next/theme/DocCard/styles.module.css +43 -0
- package/lib-next/theme/DocCardList/index.js +19 -0
- package/lib-next/theme/DocCategoryGeneratedIndexPage/index.js +49 -0
- package/lib-next/theme/DocCategoryGeneratedIndexPage/styles.module.css +18 -0
- package/lib-next/theme/DocItem/index.js +30 -59
- package/lib-next/theme/DocItem/styles.module.css +2 -11
- 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 +46 -23
- package/lib-next/theme/DocPaginator/index.js +7 -11
- package/lib-next/theme/DocSidebar/index.js +37 -43
- package/lib-next/theme/DocSidebarItem/index.js +115 -65
- package/lib-next/theme/DocSidebarItem/styles.module.css +4 -0
- package/lib-next/theme/DocTagDocListPage/index.js +89 -0
- package/lib-next/theme/DocTagsListPage/index.js +38 -0
- package/lib-next/theme/DocVersionBadge/index.js +27 -0
- package/lib-next/theme/DocVersionBanner/index.js +28 -14
- package/lib-next/theme/EditThisPage/index.js +6 -1
- package/lib-next/theme/ErrorPageContent.js +35 -0
- package/lib-next/theme/Footer/index.js +17 -4
- package/lib-next/theme/Heading/index.js +25 -29
- package/lib-next/theme/Heading/styles.css +5 -6
- package/lib-next/theme/Heading/styles.module.css +9 -5
- package/lib-next/theme/IconArrow/index.js +2 -2
- package/lib-next/theme/IconClose/index.js +23 -0
- package/lib-next/theme/IconEdit/index.js +2 -2
- package/lib-next/theme/IconExternalLink/index.js +2 -2
- package/lib-next/theme/IconLanguage/index.js +2 -2
- package/lib-next/theme/IconMenu/index.js +2 -2
- package/lib-next/theme/LastUpdated/index.js +3 -2
- package/lib-next/theme/Layout/index.js +3 -1
- package/lib-next/theme/LayoutHead/index.js +18 -23
- package/lib-next/theme/LayoutProviders/index.js +8 -5
- package/lib-next/theme/Logo/index.js +25 -21
- package/lib-next/theme/MDXComponents/index.js +34 -7
- 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 +62 -34
- package/lib-next/theme/Navbar/styles.module.css +3 -39
- package/lib-next/theme/NavbarItem/DefaultNavbarItem.js +45 -143
- package/lib-next/theme/NavbarItem/DocNavbarItem.js +7 -7
- package/lib-next/theme/NavbarItem/DocsVersionDropdownNavbarItem.js +31 -19
- package/lib-next/theme/NavbarItem/DropdownNavbarItem.js +159 -0
- package/lib-next/theme/NavbarItem/{LocaleDropdownNavbarItem.js → LocaleDropdownNavbarItem/index.js} +4 -12
- package/lib-next/theme/NavbarItem/LocaleDropdownNavbarItem/styles.module.css +11 -0
- package/lib-next/theme/NavbarItem/index.js +25 -12
- package/lib-next/theme/{SearchMetadatas → SearchMetadata}/index.js +1 -1
- 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 +13 -4
- package/lib-next/theme/TOCCollapsible/styles.module.css +1 -0
- 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/ThemeProvider/index.js +10 -7
- package/lib-next/theme/ThemedImage/index.js +5 -5
- package/lib-next/theme/Toggle/index.js +34 -37
- package/lib-next/theme/Toggle/styles.module.css +91 -3
- package/lib-next/theme/UserPreferencesProvider/index.js +9 -6
- package/lib-next/theme/hooks/useHideableNavbar.js +31 -44
- package/lib-next/theme/hooks/useTheme.js +4 -5
- package/lib-next/theme/hooks/useWindowSize.js +2 -6
- package/lib-next/theme/prism-include-languages.js +2 -1
- package/lib-next/theme-classic.d.ts +806 -0
- package/lib-next/translations.js +6 -10
- package/lib-next/types.d.ts +0 -629
- package/lib-next/validateThemeConfig.js +141 -116
- package/package.json +27 -24
- package/src/__tests__/validateThemeConfig.test.js +277 -3
- package/src/admonitions.css +35 -0
- package/src/deps.d.ts +13 -0
- package/src/index.ts +23 -17
- 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 +142 -0
- package/src/theme/BackToTopButton/styles.module.css +42 -0
- package/src/theme/BlogArchivePage/index.tsx +91 -0
- package/src/theme/BlogLayout/index.tsx +44 -0
- package/src/theme/BlogListPage/index.tsx +18 -25
- package/src/theme/BlogPostAuthor/index.tsx +49 -0
- package/src/theme/BlogPostAuthor/styles.module.css +12 -0
- package/src/theme/BlogPostAuthors/index.tsx +39 -0
- package/src/theme/BlogPostAuthors/styles.module.css +11 -0
- package/src/theme/BlogPostItem/index.tsx +70 -80
- package/src/theme/BlogPostPage/index.tsx +72 -35
- package/src/theme/BlogSidebar/index.tsx +11 -13
- package/src/theme/BlogSidebar/styles.module.css +2 -2
- package/src/theme/BlogTagsListPage/index.tsx +14 -57
- package/src/theme/BlogTagsPostsPage/index.tsx +29 -39
- package/src/theme/CodeBlock/index.tsx +21 -151
- package/src/theme/CodeBlock/styles.module.css +6 -9
- package/src/theme/Details/index.tsx +24 -0
- package/src/theme/Details/styles.module.css +13 -0
- package/src/theme/DocCard/index.tsx +100 -0
- package/src/theme/DocCard/styles.module.css +43 -0
- package/src/theme/DocCardList/index.tsx +27 -0
- package/src/theme/DocCategoryGeneratedIndexPage/index.tsx +53 -0
- package/src/theme/DocCategoryGeneratedIndexPage/styles.module.css +18 -0
- package/src/theme/DocItem/index.tsx +30 -60
- package/src/theme/DocItem/styles.module.css +2 -11
- package/src/theme/DocItemFooter/index.tsx +91 -0
- package/src/theme/DocItemFooter/styles.module.css +18 -0
- package/src/theme/DocPage/index.tsx +44 -22
- package/src/theme/DocPaginator/index.tsx +9 -13
- package/src/theme/DocSidebar/index.tsx +38 -39
- package/src/theme/DocSidebarItem/index.tsx +108 -49
- package/src/theme/DocSidebarItem/styles.module.css +4 -0
- package/src/theme/DocTagDocListPage/index.tsx +89 -0
- package/src/theme/DocTagsListPage/index.tsx +41 -0
- package/src/theme/DocVersionBadge/index.tsx +30 -0
- package/src/theme/DocVersionBanner/index.tsx +48 -21
- package/src/theme/EditThisPage/index.tsx +6 -1
- package/src/theme/ErrorPageContent.tsx +41 -0
- package/src/theme/Footer/index.tsx +20 -5
- package/src/theme/Heading/index.tsx +25 -31
- package/src/theme/Heading/styles.css +5 -6
- package/src/theme/Heading/styles.module.css +9 -5
- package/src/theme/IconArrow/index.tsx +2 -2
- package/src/theme/IconClose/index.tsx +26 -0
- package/src/theme/IconEdit/index.tsx +2 -2
- package/src/theme/IconExternalLink/index.tsx +2 -5
- package/src/theme/IconLanguage/index.tsx +2 -6
- package/src/theme/IconMenu/index.tsx +3 -3
- package/src/theme/LastUpdated/index.tsx +3 -2
- package/src/theme/Layout/index.tsx +3 -1
- package/src/theme/LayoutHead/index.tsx +18 -17
- package/src/theme/LayoutProviders/index.tsx +8 -5
- package/src/theme/Logo/index.tsx +21 -17
- package/src/theme/MDXComponents/index.tsx +39 -5
- package/src/theme/MDXComponents/styles.css +11 -0
- package/src/theme/MDXPage/index.tsx +10 -2
- package/src/theme/Navbar/index.tsx +62 -35
- package/src/theme/Navbar/styles.module.css +3 -39
- package/src/theme/NavbarItem/DefaultNavbarItem.tsx +42 -149
- package/src/theme/NavbarItem/DocNavbarItem.tsx +12 -16
- package/src/theme/NavbarItem/DocsVersionDropdownNavbarItem.tsx +33 -21
- package/src/theme/NavbarItem/DocsVersionNavbarItem.tsx +7 -3
- package/src/theme/NavbarItem/DropdownNavbarItem.tsx +181 -0
- package/src/theme/NavbarItem/{LocaleDropdownNavbarItem.tsx → LocaleDropdownNavbarItem/index.tsx} +8 -9
- package/src/theme/NavbarItem/LocaleDropdownNavbarItem/styles.module.css +11 -0
- package/src/theme/NavbarItem/index.tsx +41 -16
- package/src/theme/{SearchMetadatas → SearchMetadata}/index.tsx +2 -2
- package/src/theme/Seo/index.tsx +7 -4
- package/src/theme/TOC/index.tsx +13 -35
- package/src/theme/TOC/styles.module.css +1 -1
- package/src/theme/TOCCollapsible/index.tsx +13 -4
- package/src/theme/TOCCollapsible/styles.module.css +1 -0
- 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/ThemeProvider/index.tsx +6 -2
- package/src/theme/ThemedImage/index.tsx +5 -5
- package/src/theme/Toggle/index.tsx +36 -43
- package/src/theme/Toggle/styles.module.css +91 -3
- package/src/theme/UserPreferencesProvider/index.tsx +9 -6
- package/src/theme/hooks/useHideableNavbar.ts +32 -45
- package/src/theme/hooks/useTabGroupChoice.ts +2 -2
- package/src/theme/hooks/useTheme.ts +4 -5
- package/src/theme/hooks/useWindowSize.ts +2 -7
- package/src/theme/prism-include-languages.ts +3 -2
- package/src/theme-classic.d.ts +806 -0
- package/src/translations.ts +8 -10
- package/src/types.d.ts +0 -629
- package/src/{validateThemeConfig.js → validateThemeConfig.ts} +151 -96
- package/tsconfig.json +1 -2
- package/codeTranslations/README.md +0 -20
- package/codeTranslations/ar.json +0 -56
- package/codeTranslations/base.json +0 -110
- package/codeTranslations/bn.json +0 -56
- package/codeTranslations/da.json +0 -56
- package/codeTranslations/de.json +0 -56
- package/codeTranslations/es.json +0 -56
- package/codeTranslations/fa.json +0 -56
- package/codeTranslations/fil.json +0 -56
- package/codeTranslations/fr.json +0 -56
- package/codeTranslations/he.json +0 -56
- package/codeTranslations/hi.json +0 -56
- package/codeTranslations/ja.json +0 -56
- package/codeTranslations/ko.json +0 -56
- package/codeTranslations/pl.json +0 -56
- package/codeTranslations/pt-BR.json +0 -56
- package/codeTranslations/pt-PT.json +0 -56
- package/codeTranslations/ru.json +0 -56
- package/codeTranslations/tr.json +0 -56
- package/codeTranslations/vi.json +0 -56
- package/codeTranslations/zh-Hans.json +0 -56
- package/codeTranslations/zh-Hant.json +0 -56
- package/lib/theme/Toggle/styles.css +0 -103
- package/lib/theme/hooks/useContextualSearchFilters.js +0 -47
- package/lib/theme/hooks/useScrollPosition.js +0 -49
- package/lib/theme/hooks/useTOCHighlight.js +0 -87
- package/lib-next/theme/Toggle/styles.css +0 -103
- package/lib-next/theme/hooks/useContextualSearchFilters.js +0 -41
- package/lib-next/theme/hooks/useScrollPosition.js +0 -38
- package/lib-next/theme/hooks/useTOCHighlight.js +0 -84
- package/src/theme/Toggle/styles.css +0 -103
- package/src/theme/hooks/useContextualSearchFilters.ts +0 -52
- package/src/theme/hooks/useScrollPosition.ts +0 -45
- package/src/theme/hooks/useTOCHighlight.ts +0 -98
- package/update-code-translations.js +0 -242
- package/update-code-translations.test.js +0 -33
|
@@ -10,9 +10,10 @@ import {
|
|
|
10
10
|
useThemeConfig,
|
|
11
11
|
useAnnouncementBar,
|
|
12
12
|
MobileSecondaryMenuFiller,
|
|
13
|
+
ThemeClassNames,
|
|
14
|
+
useScrollPosition,
|
|
13
15
|
} from '@docusaurus/theme-common';
|
|
14
16
|
import useWindowSize from '@theme/hooks/useWindowSize';
|
|
15
|
-
import useScrollPosition from '@theme/hooks/useScrollPosition';
|
|
16
17
|
import Logo from '@theme/Logo';
|
|
17
18
|
import IconArrow from '@theme/IconArrow';
|
|
18
19
|
import {translate} from '@docusaurus/Translate';
|
|
@@ -20,14 +21,17 @@ import {DocSidebarItems} from '@theme/DocSidebarItem';
|
|
|
20
21
|
import styles from './styles.module.css';
|
|
21
22
|
|
|
22
23
|
function useShowAnnouncementBar() {
|
|
23
|
-
const {
|
|
24
|
-
const [showAnnouncementBar, setShowAnnouncementBar] = useState(
|
|
25
|
-
useScrollPosition(
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
24
|
+
const {isActive} = useAnnouncementBar();
|
|
25
|
+
const [showAnnouncementBar, setShowAnnouncementBar] = useState(isActive);
|
|
26
|
+
useScrollPosition(
|
|
27
|
+
({scrollY}) => {
|
|
28
|
+
if (isActive) {
|
|
29
|
+
setShowAnnouncementBar(scrollY === 0);
|
|
30
|
+
}
|
|
31
|
+
},
|
|
32
|
+
[isActive],
|
|
33
|
+
);
|
|
34
|
+
return isActive && showAnnouncementBar;
|
|
31
35
|
}
|
|
32
36
|
|
|
33
37
|
function HideableSidebarButton({onClick}) {
|
|
@@ -54,19 +58,12 @@ function HideableSidebarButton({onClick}) {
|
|
|
54
58
|
);
|
|
55
59
|
}
|
|
56
60
|
|
|
57
|
-
function DocSidebarDesktop({
|
|
58
|
-
path,
|
|
59
|
-
sidebar,
|
|
60
|
-
sidebarCollapsible,
|
|
61
|
-
onCollapse,
|
|
62
|
-
isHidden,
|
|
63
|
-
}) {
|
|
61
|
+
function DocSidebarDesktop({path, sidebar, onCollapse, isHidden}) {
|
|
64
62
|
const showAnnouncementBar = useShowAnnouncementBar();
|
|
65
63
|
const {
|
|
66
64
|
navbar: {hideOnScroll},
|
|
67
65
|
hideableSidebar,
|
|
68
66
|
} = useThemeConfig();
|
|
69
|
-
const {isClosed: isAnnouncementBarClosed} = useAnnouncementBar();
|
|
70
67
|
return (
|
|
71
68
|
<div
|
|
72
69
|
className={clsx(styles.sidebar, {
|
|
@@ -76,39 +73,36 @@ function DocSidebarDesktop({
|
|
|
76
73
|
{hideOnScroll && <Logo tabIndex={-1} className={styles.sidebarLogo} />}
|
|
77
74
|
<nav
|
|
78
75
|
className={clsx('menu thin-scrollbar', styles.menu, {
|
|
79
|
-
[styles.menuWithAnnouncementBar]:
|
|
80
|
-
!isAnnouncementBarClosed && showAnnouncementBar,
|
|
76
|
+
[styles.menuWithAnnouncementBar]: showAnnouncementBar,
|
|
81
77
|
})}>
|
|
82
|
-
<ul className=
|
|
83
|
-
<DocSidebarItems
|
|
84
|
-
items={sidebar}
|
|
85
|
-
collapsible={sidebarCollapsible}
|
|
86
|
-
activePath={path}
|
|
87
|
-
/>
|
|
78
|
+
<ul className={clsx(ThemeClassNames.docs.docSidebarMenu, 'menu__list')}>
|
|
79
|
+
<DocSidebarItems items={sidebar} activePath={path} level={1} />
|
|
88
80
|
</ul>
|
|
89
81
|
</nav>
|
|
90
82
|
{hideableSidebar && <HideableSidebarButton onClick={onCollapse} />}
|
|
91
83
|
</div>
|
|
92
84
|
);
|
|
93
|
-
}
|
|
85
|
+
} // eslint-disable-next-line react/function-component-definition
|
|
94
86
|
|
|
95
|
-
const DocSidebarMobileSecondaryMenu = ({
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
87
|
+
const DocSidebarMobileSecondaryMenu = ({toggleSidebar, sidebar, path}) => (
|
|
88
|
+
<ul className={clsx(ThemeClassNames.docs.docSidebarMenu, 'menu__list')}>
|
|
89
|
+
<DocSidebarItems
|
|
90
|
+
items={sidebar}
|
|
91
|
+
activePath={path}
|
|
92
|
+
onItemClick={(item) => {
|
|
93
|
+
// Mobile sidebar should only be closed if the category has a link
|
|
94
|
+
if (item.type === 'category' && item.href) {
|
|
95
|
+
toggleSidebar();
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
if (item.type === 'link') {
|
|
99
|
+
toggleSidebar();
|
|
100
|
+
}
|
|
101
|
+
}}
|
|
102
|
+
level={1}
|
|
103
|
+
/>
|
|
104
|
+
</ul>
|
|
105
|
+
);
|
|
112
106
|
|
|
113
107
|
function DocSidebarMobile(props) {
|
|
114
108
|
return (
|
|
@@ -4,51 +4,36 @@
|
|
|
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, {useEffect, memo} from 'react';
|
|
7
|
+
import React, {useEffect, memo, useMemo} from 'react';
|
|
8
8
|
import clsx from 'clsx';
|
|
9
9
|
import {
|
|
10
|
-
|
|
10
|
+
isActiveSidebarItem,
|
|
11
11
|
usePrevious,
|
|
12
12
|
Collapsible,
|
|
13
13
|
useCollapsible,
|
|
14
|
+
findFirstCategoryLink,
|
|
15
|
+
ThemeClassNames,
|
|
14
16
|
} from '@docusaurus/theme-common';
|
|
15
17
|
import Link from '@docusaurus/Link';
|
|
16
18
|
import isInternalUrl from '@docusaurus/isInternalUrl';
|
|
19
|
+
import {translate} from '@docusaurus/Translate';
|
|
17
20
|
import IconExternalLink from '@theme/IconExternalLink';
|
|
18
21
|
import styles from './styles.module.css';
|
|
19
|
-
|
|
20
|
-
const isActiveSidebarItem = (item, activePath) => {
|
|
21
|
-
if (item.type === 'link') {
|
|
22
|
-
return isSamePath(item.href, activePath);
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
if (item.type === 'category') {
|
|
26
|
-
return item.items.some((subItem) =>
|
|
27
|
-
isActiveSidebarItem(subItem, activePath),
|
|
28
|
-
);
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
return false;
|
|
32
|
-
}; // Optimize sidebar at each "level"
|
|
22
|
+
import useIsBrowser from '@docusaurus/useIsBrowser'; // Optimize sidebar at each "level"
|
|
33
23
|
// TODO this item should probably not receive the "activePath" props
|
|
34
24
|
// TODO this triggers whole sidebar re-renders on navigation
|
|
35
25
|
|
|
36
|
-
export const DocSidebarItems = memo(
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
/>
|
|
48
|
-
))}
|
|
49
|
-
</>
|
|
50
|
-
);
|
|
51
|
-
});
|
|
26
|
+
export const DocSidebarItems = memo(({items, ...props}) => (
|
|
27
|
+
<>
|
|
28
|
+
{items.map((item, index) => (
|
|
29
|
+
<DocSidebarItem
|
|
30
|
+
key={index} // sidebar is static, the index does not change
|
|
31
|
+
item={item}
|
|
32
|
+
{...props}
|
|
33
|
+
/>
|
|
34
|
+
))}
|
|
35
|
+
</>
|
|
36
|
+
));
|
|
52
37
|
export default function DocSidebarItem({item, ...props}) {
|
|
53
38
|
switch (item.type) {
|
|
54
39
|
case 'category':
|
|
@@ -72,17 +57,38 @@ function useAutoExpandActiveCategory({isActive, collapsed, setCollapsed}) {
|
|
|
72
57
|
if (justBecameActive && collapsed) {
|
|
73
58
|
setCollapsed(false);
|
|
74
59
|
}
|
|
75
|
-
}, [isActive, wasActive, collapsed]);
|
|
60
|
+
}, [isActive, wasActive, collapsed, setCollapsed]);
|
|
61
|
+
} // When a collapsible category has no link, we still link it to its first child during SSR as a temporary fallback
|
|
62
|
+
// This allows to be able to navigate inside the category even when JS fails to load, is delayed or simply disabled
|
|
63
|
+
// React hydration becomes an optional progressive enhancement
|
|
64
|
+
// see https://github.com/facebookincubator/infima/issues/36#issuecomment-772543188
|
|
65
|
+
// see https://github.com/facebook/docusaurus/issues/3030
|
|
66
|
+
|
|
67
|
+
function useCategoryHrefWithSSRFallback(item) {
|
|
68
|
+
const isBrowser = useIsBrowser();
|
|
69
|
+
return useMemo(() => {
|
|
70
|
+
if (item.href) {
|
|
71
|
+
return item.href;
|
|
72
|
+
} // In these cases, it's not necessary to render a fallback
|
|
73
|
+
// We skip the "findFirstCategoryLink" computation
|
|
74
|
+
|
|
75
|
+
if (isBrowser || !item.collapsible) {
|
|
76
|
+
return undefined;
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
return findFirstCategoryLink(item);
|
|
80
|
+
}, [item, isBrowser]);
|
|
76
81
|
}
|
|
77
82
|
|
|
78
83
|
function DocSidebarItemCategory({
|
|
79
84
|
item,
|
|
80
85
|
onItemClick,
|
|
81
|
-
collapsible = true,
|
|
82
86
|
activePath,
|
|
87
|
+
level,
|
|
83
88
|
...props
|
|
84
89
|
}) {
|
|
85
|
-
const {items, label} = item;
|
|
90
|
+
const {items, label, collapsible, className, href} = item;
|
|
91
|
+
const hrefWithSSRFallback = useCategoryHrefWithSSRFallback(item);
|
|
86
92
|
const isActive = isActiveSidebarItem(item, activePath);
|
|
87
93
|
const {collapsed, setCollapsed, toggleCollapsed} = useCollapsible({
|
|
88
94
|
// active categories are always initialized as expanded
|
|
@@ -92,7 +98,7 @@ function DocSidebarItemCategory({
|
|
|
92
98
|
return false;
|
|
93
99
|
}
|
|
94
100
|
|
|
95
|
-
return isActive ? false : item.collapsed
|
|
101
|
+
return isActive ? false : item.collapsed;
|
|
96
102
|
},
|
|
97
103
|
});
|
|
98
104
|
useAutoExpandActiveCategory({
|
|
@@ -102,55 +108,99 @@ function DocSidebarItemCategory({
|
|
|
102
108
|
});
|
|
103
109
|
return (
|
|
104
110
|
<li
|
|
105
|
-
className={clsx(
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
111
|
+
className={clsx(
|
|
112
|
+
ThemeClassNames.docs.docSidebarItemCategory,
|
|
113
|
+
ThemeClassNames.docs.docSidebarItemCategoryLevel(level),
|
|
114
|
+
'menu__list-item',
|
|
115
|
+
{
|
|
116
|
+
'menu__list-item--collapsed': collapsed,
|
|
117
|
+
},
|
|
118
|
+
className,
|
|
119
|
+
)}>
|
|
120
|
+
<div className="menu__list-item-collapsible">
|
|
121
|
+
<Link
|
|
122
|
+
className={clsx('menu__link', {
|
|
123
|
+
'menu__link--sublist': collapsible && !href,
|
|
124
|
+
'menu__link--active': isActive,
|
|
125
|
+
[styles.menuLinkText]: !collapsible,
|
|
126
|
+
[styles.hasHref]: !!hrefWithSSRFallback,
|
|
127
|
+
})}
|
|
128
|
+
onClick={
|
|
129
|
+
collapsible
|
|
130
|
+
? (e) => {
|
|
131
|
+
onItemClick?.(item);
|
|
132
|
+
|
|
133
|
+
if (href) {
|
|
134
|
+
setCollapsed(false);
|
|
135
|
+
} else {
|
|
136
|
+
e.preventDefault();
|
|
137
|
+
toggleCollapsed();
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
: () => {
|
|
141
|
+
onItemClick?.(item);
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
href={collapsible ? hrefWithSSRFallback ?? '#' : hrefWithSSRFallback}
|
|
145
|
+
{...props}>
|
|
146
|
+
{label}
|
|
147
|
+
</Link>
|
|
148
|
+
{href && collapsible && (
|
|
149
|
+
<button
|
|
150
|
+
aria-label={translate(
|
|
151
|
+
{
|
|
152
|
+
id: 'theme.DocSidebarItem.toggleCollapsedCategoryAriaLabel',
|
|
153
|
+
message: "Toggle the collapsible sidebar category '{label}'",
|
|
154
|
+
description:
|
|
155
|
+
'The ARIA label to toggle the collapsible sidebar category',
|
|
156
|
+
},
|
|
157
|
+
{
|
|
158
|
+
label,
|
|
159
|
+
},
|
|
160
|
+
)}
|
|
161
|
+
type="button"
|
|
162
|
+
className="clean-btn menu__caret"
|
|
163
|
+
onClick={(e) => {
|
|
164
|
+
e.preventDefault();
|
|
165
|
+
toggleCollapsed();
|
|
166
|
+
}}
|
|
167
|
+
/>
|
|
168
|
+
)}
|
|
169
|
+
</div>
|
|
120
170
|
|
|
121
|
-
<Collapsible as="ul" className="menu__list" collapsed={collapsed}>
|
|
171
|
+
<Collapsible lazy as="ul" className="menu__list" collapsed={collapsed}>
|
|
122
172
|
<DocSidebarItems
|
|
123
173
|
items={items}
|
|
124
174
|
tabIndex={collapsed ? -1 : 0}
|
|
125
175
|
onItemClick={onItemClick}
|
|
126
|
-
collapsible={collapsible}
|
|
127
176
|
activePath={activePath}
|
|
177
|
+
level={level + 1}
|
|
128
178
|
/>
|
|
129
179
|
</Collapsible>
|
|
130
180
|
</li>
|
|
131
181
|
);
|
|
132
182
|
}
|
|
133
183
|
|
|
134
|
-
function DocSidebarItemLink({
|
|
135
|
-
item
|
|
136
|
-
onItemClick,
|
|
137
|
-
activePath,
|
|
138
|
-
collapsible: _collapsible,
|
|
139
|
-
...props
|
|
140
|
-
}) {
|
|
141
|
-
const {href, label} = item;
|
|
184
|
+
function DocSidebarItemLink({item, onItemClick, activePath, level, ...props}) {
|
|
185
|
+
const {href, label, className} = item;
|
|
142
186
|
const isActive = isActiveSidebarItem(item, activePath);
|
|
143
187
|
return (
|
|
144
|
-
<li
|
|
188
|
+
<li
|
|
189
|
+
className={clsx(
|
|
190
|
+
ThemeClassNames.docs.docSidebarItemLink,
|
|
191
|
+
ThemeClassNames.docs.docSidebarItemLinkLevel(level),
|
|
192
|
+
'menu__list-item',
|
|
193
|
+
className,
|
|
194
|
+
)}
|
|
195
|
+
key={label}>
|
|
145
196
|
<Link
|
|
146
197
|
className={clsx('menu__link', {
|
|
147
198
|
'menu__link--active': isActive,
|
|
148
199
|
})}
|
|
200
|
+
aria-current={isActive ? 'page' : undefined}
|
|
149
201
|
to={href}
|
|
150
202
|
{...(isInternalUrl(href) && {
|
|
151
|
-
|
|
152
|
-
exact: true,
|
|
153
|
-
onClick: onItemClick,
|
|
203
|
+
onClick: onItemClick ? () => onItemClick(item) : undefined,
|
|
154
204
|
})}
|
|
155
205
|
{...props}>
|
|
156
206
|
{isInternalUrl(href) ? (
|
|
@@ -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
|
+
import React from 'react';
|
|
8
|
+
import Layout from '@theme/Layout';
|
|
9
|
+
import Link from '@docusaurus/Link';
|
|
10
|
+
import {ThemeClassNames, usePluralForm} from '@docusaurus/theme-common';
|
|
11
|
+
import Translate, {translate} from '@docusaurus/Translate';
|
|
12
|
+
|
|
13
|
+
// Very simple pluralization: probably good enough for now
|
|
14
|
+
function useNDocsTaggedPlural() {
|
|
15
|
+
const {selectMessage} = usePluralForm();
|
|
16
|
+
return (count) =>
|
|
17
|
+
selectMessage(
|
|
18
|
+
count,
|
|
19
|
+
translate(
|
|
20
|
+
{
|
|
21
|
+
id: 'theme.docs.tagDocListPageTitle.nDocsTagged',
|
|
22
|
+
description:
|
|
23
|
+
'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)',
|
|
24
|
+
message: 'One doc tagged|{count} docs tagged',
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
count,
|
|
28
|
+
},
|
|
29
|
+
),
|
|
30
|
+
);
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
function DocItem({doc}) {
|
|
34
|
+
return (
|
|
35
|
+
<article className="margin-vert--lg">
|
|
36
|
+
<Link to={doc.permalink}>
|
|
37
|
+
<h2>{doc.title}</h2>
|
|
38
|
+
</Link>
|
|
39
|
+
{doc.description && <p>{doc.description}</p>}
|
|
40
|
+
</article>
|
|
41
|
+
);
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
export default function DocTagDocListPage({tag}) {
|
|
45
|
+
const nDocsTaggedPlural = useNDocsTaggedPlural();
|
|
46
|
+
const title = translate(
|
|
47
|
+
{
|
|
48
|
+
id: 'theme.docs.tagDocListPageTitle',
|
|
49
|
+
description: 'The title of the page for a docs tag',
|
|
50
|
+
message: '{nDocsTagged} with "{tagName}"',
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
nDocsTagged: nDocsTaggedPlural(tag.docs.length),
|
|
54
|
+
tagName: tag.name,
|
|
55
|
+
},
|
|
56
|
+
);
|
|
57
|
+
return (
|
|
58
|
+
<Layout
|
|
59
|
+
title={title}
|
|
60
|
+
wrapperClassName={ThemeClassNames.wrapper.docsPages}
|
|
61
|
+
pageClassName={ThemeClassNames.page.docsTagDocListPage}
|
|
62
|
+
searchMetadata={{
|
|
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,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
|
+
import React from 'react';
|
|
8
|
+
import Layout from '@theme/Layout';
|
|
9
|
+
import {
|
|
10
|
+
ThemeClassNames,
|
|
11
|
+
translateTagsPageTitle,
|
|
12
|
+
} from '@docusaurus/theme-common';
|
|
13
|
+
import TagsListByLetter from '@theme/TagsListByLetter';
|
|
14
|
+
|
|
15
|
+
function DocTagsListPage({tags}) {
|
|
16
|
+
const title = translateTagsPageTitle();
|
|
17
|
+
return (
|
|
18
|
+
<Layout
|
|
19
|
+
title={title}
|
|
20
|
+
wrapperClassName={ThemeClassNames.wrapper.docsPages}
|
|
21
|
+
pageClassName={ThemeClassNames.page.docsTagsListPage}
|
|
22
|
+
searchMetadata={{
|
|
23
|
+
// assign unique search tag to exclude this page from search results!
|
|
24
|
+
tag: 'doc_tags_list',
|
|
25
|
+
}}>
|
|
26
|
+
<div className="container margin-vert--lg">
|
|
27
|
+
<div className="row">
|
|
28
|
+
<main className="col col--8 col--offset-2">
|
|
29
|
+
<h1>{title}</h1>
|
|
30
|
+
<TagsListByLetter tags={tags} />
|
|
31
|
+
</main>
|
|
32
|
+
</div>
|
|
33
|
+
</div>
|
|
34
|
+
</Layout>
|
|
35
|
+
);
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
export default DocTagsListPage;
|
|
@@ -0,0 +1,27 @@
|
|
|
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 {ThemeClassNames, useDocsVersion} from '@docusaurus/theme-common';
|
|
9
|
+
import clsx from 'clsx';
|
|
10
|
+
export default function DocVersionBadge({className}) {
|
|
11
|
+
const versionMetadata = useDocsVersion();
|
|
12
|
+
|
|
13
|
+
if (versionMetadata.badge) {
|
|
14
|
+
return (
|
|
15
|
+
<span
|
|
16
|
+
className={clsx(
|
|
17
|
+
className,
|
|
18
|
+
ThemeClassNames.docs.docVersionBadge,
|
|
19
|
+
'badge badge--secondary',
|
|
20
|
+
)}>
|
|
21
|
+
Version: {versionMetadata.label}
|
|
22
|
+
</span>
|
|
23
|
+
);
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
return null;
|
|
27
|
+
}
|
|
@@ -9,7 +9,12 @@ import useDocusaurusContext from '@docusaurus/useDocusaurusContext';
|
|
|
9
9
|
import Link from '@docusaurus/Link';
|
|
10
10
|
import Translate from '@docusaurus/Translate';
|
|
11
11
|
import {useActivePlugin, useDocVersionSuggestions} from '@theme/hooks/useDocs';
|
|
12
|
-
import {
|
|
12
|
+
import {
|
|
13
|
+
ThemeClassNames,
|
|
14
|
+
useDocsPreferredVersion,
|
|
15
|
+
useDocsVersion,
|
|
16
|
+
} from '@docusaurus/theme-common';
|
|
17
|
+
import clsx from 'clsx';
|
|
13
18
|
|
|
14
19
|
function UnreleasedVersionLabel({siteTitle, versionMetadata}) {
|
|
15
20
|
return (
|
|
@@ -80,7 +85,7 @@ function LatestVersionSuggestionLabel({versionLabel, to, onClick}) {
|
|
|
80
85
|
);
|
|
81
86
|
}
|
|
82
87
|
|
|
83
|
-
function DocVersionBannerEnabled({versionMetadata}) {
|
|
88
|
+
function DocVersionBannerEnabled({className, versionMetadata}) {
|
|
84
89
|
const {
|
|
85
90
|
siteConfig: {title: siteTitle},
|
|
86
91
|
} = useDocusaurusContext();
|
|
@@ -92,16 +97,20 @@ function DocVersionBannerEnabled({versionMetadata}) {
|
|
|
92
97
|
version.docs.find((doc) => doc.id === version.mainDocId);
|
|
93
98
|
|
|
94
99
|
const {savePreferredVersionName} = useDocsPreferredVersion(pluginId);
|
|
95
|
-
const {
|
|
96
|
-
|
|
97
|
-
latestVersionSuggestion,
|
|
98
|
-
} = useDocVersionSuggestions(pluginId); // try to link to same doc in latest version (not always possible)
|
|
100
|
+
const {latestDocSuggestion, latestVersionSuggestion} =
|
|
101
|
+
useDocVersionSuggestions(pluginId); // try to link to same doc in latest version (not always possible)
|
|
99
102
|
// fallback to main doc of latest version
|
|
100
103
|
|
|
101
104
|
const latestVersionSuggestedDoc =
|
|
102
105
|
latestDocSuggestion ?? getVersionMainDoc(latestVersionSuggestion);
|
|
103
106
|
return (
|
|
104
|
-
<div
|
|
107
|
+
<div
|
|
108
|
+
className={clsx(
|
|
109
|
+
className,
|
|
110
|
+
ThemeClassNames.docs.docVersionBanner,
|
|
111
|
+
'alert alert--warning margin-bottom--md',
|
|
112
|
+
)}
|
|
113
|
+
role="alert">
|
|
105
114
|
<div>
|
|
106
115
|
<BannerLabel siteTitle={siteTitle} versionMetadata={versionMetadata} />
|
|
107
116
|
</div>
|
|
@@ -116,12 +125,17 @@ function DocVersionBannerEnabled({versionMetadata}) {
|
|
|
116
125
|
);
|
|
117
126
|
}
|
|
118
127
|
|
|
119
|
-
function DocVersionBanner({
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
return
|
|
128
|
+
export default function DocVersionBanner({className}) {
|
|
129
|
+
const versionMetadata = useDocsVersion();
|
|
130
|
+
|
|
131
|
+
if (versionMetadata.banner) {
|
|
132
|
+
return (
|
|
133
|
+
<DocVersionBannerEnabled
|
|
134
|
+
className={className}
|
|
135
|
+
versionMetadata={versionMetadata}
|
|
136
|
+
/>
|
|
137
|
+
);
|
|
124
138
|
}
|
|
125
|
-
}
|
|
126
139
|
|
|
127
|
-
|
|
140
|
+
return null;
|
|
141
|
+
}
|
|
@@ -7,9 +7,14 @@
|
|
|
7
7
|
import React from 'react';
|
|
8
8
|
import Translate from '@docusaurus/Translate';
|
|
9
9
|
import IconEdit from '@theme/IconEdit';
|
|
10
|
+
import {ThemeClassNames} from '@docusaurus/theme-common';
|
|
10
11
|
export default function EditThisPage({editUrl}) {
|
|
11
12
|
return (
|
|
12
|
-
<a
|
|
13
|
+
<a
|
|
14
|
+
href={editUrl}
|
|
15
|
+
target="_blank"
|
|
16
|
+
rel="noreferrer noopener"
|
|
17
|
+
className={ThemeClassNames.common.editThisPage}>
|
|
13
18
|
<IconEdit />
|
|
14
19
|
<Translate
|
|
15
20
|
id="theme.common.editThisPage"
|
|
@@ -0,0 +1,35 @@
|
|
|
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 Translate from '@docusaurus/Translate';
|
|
9
|
+
export default function ErrorPageContent({error, tryAgain}) {
|
|
10
|
+
return (
|
|
11
|
+
<main className="container margin-vert--xl">
|
|
12
|
+
<div className="row">
|
|
13
|
+
<div className="col col--6 col--offset-3">
|
|
14
|
+
<h1 className="hero__title">
|
|
15
|
+
<Translate
|
|
16
|
+
id="theme.ErrorPageContent.title"
|
|
17
|
+
description="The title of the fallback page when the page crashed">
|
|
18
|
+
This page crashed.
|
|
19
|
+
</Translate>
|
|
20
|
+
</h1>
|
|
21
|
+
<p>{error.message}</p>
|
|
22
|
+
<div>
|
|
23
|
+
<button type="button" onClick={tryAgain}>
|
|
24
|
+
<Translate
|
|
25
|
+
id="theme.ErrorPageContent.tryAgain"
|
|
26
|
+
description="The label of the button to try again when the page crashed">
|
|
27
|
+
Try again
|
|
28
|
+
</Translate>
|
|
29
|
+
</button>
|
|
30
|
+
</div>
|
|
31
|
+
</div>
|
|
32
|
+
</div>
|
|
33
|
+
</main>
|
|
34
|
+
);
|
|
35
|
+
}
|