@docusaurus/theme-classic 2.0.0-beta.12faed89d → 2.0.0-beta.14
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/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-next/types.d.ts → lib/theme-classic.d.ts} +338 -156
- package/lib/translations.js +16 -7
- package/lib/types.d.ts +0 -629
- package/lib/validateThemeConfig.js +232 -248
- package/lib-next/theme/Admonition/index.js +101 -0
- 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/theme/MDXPage → lib-next/theme/BlogPostAuthor}/styles.module.css +4 -2
- package/lib-next/theme/BlogPostAuthors/index.js +34 -0
- package/{lib/theme/IconExternalLink → lib-next/theme/BlogPostAuthors}/styles.module.css +3 -4
- 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 +23 -149
- package/lib-next/theme/CodeBlock/styles.module.css +12 -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/theme/DocSidebarItem → lib-next/theme/DocItemFooter}/styles.module.css +8 -5
- package/lib-next/theme/DocPage/index.js +46 -23
- package/lib-next/theme/DocPaginator/index.js +5 -33
- package/lib-next/theme/DocPaginatorNavLink/index.js +36 -0
- 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 +90 -39
- package/lib-next/theme/Heading/index.js +24 -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/theme/hooks → lib-next/theme/MDXComponents}/styles.css +3 -2
- 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 +158 -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 +103 -48
- 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/package.json +26 -24
- package/src/admonitions.css +35 -0
- package/src/deps.d.ts +13 -0
- package/src/index.ts +23 -20
- package/{lib-next/prism-include-languages.js → src/prism-include-languages.ts} +0 -0
- package/src/theme/Admonition/index.tsx +106 -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/{lib/theme/IconEdit → src/theme/BlogPostAuthor}/styles.module.css +4 -3
- 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 +27 -151
- package/src/theme/CodeBlock/styles.module.css +12 -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/{lib/theme/BlogPostItem → src/theme/DocItemFooter}/styles.module.css +8 -8
- package/src/theme/DocPage/index.tsx +44 -22
- package/src/theme/DocPaginator/index.tsx +5 -33
- package/src/theme/DocPaginatorNavLink/index.tsx +38 -0
- 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 +103 -42
- package/src/theme/Heading/index.tsx +24 -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 +180 -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/index.tsx +110 -54
- 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 +822 -0
- package/src/translations.ts +41 -23
- package/src/types.d.ts +0 -629
- package/src/{validateThemeConfig.js → validateThemeConfig.ts} +160 -100
- package/babel.config.js +0 -35
- 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/__tests__/__snapshots__/translations.test.ts.snap +0 -116
- package/lib/__tests__/translations.test.js +0 -112
- package/lib/__tests__/validateThemeConfig.test.js +0 -333
- package/lib/theme/AnnouncementBar/index.js +0 -72
- package/lib/theme/AnnouncementBar/styles.module.css +0 -72
- package/lib/theme/BlogListPage/index.js +0 -71
- package/lib/theme/BlogListPaginator/index.js +0 -63
- package/lib/theme/BlogPostItem/index.js +0 -161
- package/lib/theme/BlogPostPage/index.js +0 -69
- package/lib/theme/BlogPostPaginator/index.js +0 -64
- package/lib/theme/BlogSidebar/index.js +0 -51
- package/lib/theme/BlogSidebar/styles.module.css +0 -44
- package/lib/theme/BlogTagsListPage/index.js +0 -76
- package/lib/theme/BlogTagsPostsPage/index.js +0 -100
- package/lib/theme/CodeBlock/index.js +0 -253
- package/lib/theme/CodeBlock/styles.module.css +0 -68
- package/lib/theme/DocItem/index.js +0 -138
- package/lib/theme/DocItem/styles.module.css +0 -31
- package/lib/theme/DocPage/index.js +0 -139
- package/lib/theme/DocPage/styles.module.css +0 -85
- package/lib/theme/DocPaginator/index.js +0 -63
- package/lib/theme/DocSidebar/index.js +0 -133
- package/lib/theme/DocSidebar/styles.module.css +0 -106
- package/lib/theme/DocSidebarItem/index.js +0 -175
- package/lib/theme/DocVersionBanner/index.js +0 -128
- package/lib/theme/EditThisPage/index.js +0 -31
- package/lib/theme/Footer/index.js +0 -115
- package/lib/theme/Footer/styles.module.css +0 -15
- package/lib/theme/Heading/index.js +0 -76
- package/lib/theme/Heading/styles.css +0 -23
- package/lib/theme/Heading/styles.module.css +0 -15
- package/lib/theme/IconArrow/index.js +0 -28
- package/lib/theme/IconEdit/index.js +0 -34
- package/lib/theme/IconExternalLink/index.js +0 -30
- package/lib/theme/IconLanguage/index.js +0 -29
- package/lib/theme/IconMenu/index.js +0 -30
- package/lib/theme/LastUpdated/index.js +0 -61
- package/lib/theme/Layout/index.js +0 -64
- package/lib/theme/Layout/styles.css +0 -27
- package/lib/theme/LayoutHead/index.js +0 -144
- package/lib/theme/LayoutProviders/index.js +0 -38
- package/lib/theme/Logo/index.js +0 -60
- package/lib/theme/MDXComponents/index.js +0 -65
- package/lib/theme/MDXPage/index.js +0 -66
- package/lib/theme/Navbar/index.js +0 -248
- package/lib/theme/Navbar/styles.module.css +0 -63
- package/lib/theme/NavbarItem/DefaultNavbarItem.js +0 -210
- package/lib/theme/NavbarItem/DocNavbarItem.js +0 -63
- package/lib/theme/NavbarItem/DocsVersionDropdownNavbarItem.js +0 -76
- package/lib/theme/NavbarItem/DocsVersionNavbarItem.js +0 -43
- package/lib/theme/NavbarItem/LocaleDropdownNavbarItem.js +0 -72
- package/lib/theme/NavbarItem/SearchNavbarItem.js +0 -28
- package/lib/theme/NavbarItem/index.js +0 -54
- package/lib/theme/NotFound.js +0 -57
- package/lib/theme/SearchBar.js +0 -15
- package/lib/theme/SearchMetadatas/index.js +0 -33
- package/lib/theme/Seo/index.js +0 -49
- package/lib/theme/SkipToContent/index.js +0 -71
- package/lib/theme/SkipToContent/styles.module.css +0 -14
- package/lib/theme/TOC/index.js +0 -60
- package/lib/theme/TOC/styles.module.css +0 -23
- package/lib/theme/TOCCollapsible/index.js +0 -51
- package/lib/theme/TOCCollapsible/styles.module.css +0 -49
- package/lib/theme/TOCInline/index.js +0 -53
- package/lib/theme/TOCInline/styles.module.css +0 -12
- package/lib/theme/TabItem/index.js +0 -32
- package/lib/theme/Tabs/index.js +0 -150
- package/lib/theme/Tabs/styles.module.css +0 -23
- package/lib/theme/ThemeContext.js +0 -21
- package/lib/theme/ThemeProvider/index.js +0 -38
- package/lib/theme/ThemedImage/index.js +0 -49
- package/lib/theme/ThemedImage/styles.module.css +0 -18
- package/lib/theme/Toggle/index.js +0 -94
- package/lib/theme/Toggle/styles.css +0 -103
- package/lib/theme/Toggle/styles.module.css +0 -17
- package/lib/theme/UserPreferencesContext.js +0 -18
- package/lib/theme/UserPreferencesProvider/index.js +0 -36
- package/lib/theme/hooks/useContextualSearchFilters.js +0 -47
- package/lib/theme/hooks/useDocs.js +0 -18
- package/lib/theme/hooks/useHideableNavbar.js +0 -92
- package/lib/theme/hooks/useKeyboardNavigation.js +0 -45
- package/lib/theme/hooks/useLocationHash.js +0 -28
- package/lib/theme/hooks/useLockBodyScroll.js +0 -26
- package/lib/theme/hooks/usePrismTheme.js +0 -36
- package/lib/theme/hooks/useScrollPosition.js +0 -49
- package/lib/theme/hooks/useTOCHighlight.js +0 -87
- package/lib/theme/hooks/useTabGroupChoice.js +0 -51
- package/lib/theme/hooks/useTheme.js +0 -99
- package/lib/theme/hooks/useThemeContext.js +0 -31
- package/lib/theme/hooks/useUserPreferencesContext.js +0 -31
- package/lib/theme/hooks/useWindowSize.js +0 -73
- package/lib/theme/prism-include-languages.js +0 -39
- package/lib-next/__tests__/__snapshots__/translations.test.ts.snap +0 -116
- package/lib-next/__tests__/translations.test.js +0 -128
- package/lib-next/__tests__/validateThemeConfig.test.js +0 -333
- package/lib-next/index.js +0 -221
- package/lib-next/theme/Toggle/styles.css +0 -103
- package/lib-next/theme/hooks/useContextualSearchFilters.js +0 -41
- package/lib-next/theme/hooks/useLocationHash.js +0 -20
- package/lib-next/theme/hooks/useScrollPosition.js +0 -38
- package/lib-next/theme/hooks/useTOCHighlight.js +0 -84
- package/lib-next/translations.js +0 -145
- package/lib-next/validateThemeConfig.js +0 -319
- package/src/__tests__/__snapshots__/translations.test.ts.snap +0 -116
- package/src/__tests__/translations.test.ts +0 -116
- package/src/__tests__/validateThemeConfig.test.js +0 -333
- package/src/prism-include-languages.js +0 -11
- package/src/theme/Toggle/styles.css +0 -103
- package/src/theme/hooks/useContextualSearchFilters.ts +0 -52
- package/src/theme/hooks/useLocationHash.ts +0 -25
- package/src/theme/hooks/useScrollPosition.ts +0 -45
- package/src/theme/hooks/useTOCHighlight.ts +0 -98
- package/tsconfig.json +0 -12
- package/update-code-translations.js +0 -242
- package/update-code-translations.test.js +0 -33
|
@@ -5,46 +5,35 @@
|
|
|
5
5
|
* LICENSE file in the root directory of this source tree.
|
|
6
6
|
*/
|
|
7
7
|
|
|
8
|
-
import React, {useEffect, memo} from 'react';
|
|
8
|
+
import React, {useEffect, memo, useMemo} from 'react';
|
|
9
9
|
import clsx from 'clsx';
|
|
10
10
|
import {
|
|
11
|
-
|
|
11
|
+
isActiveSidebarItem,
|
|
12
12
|
usePrevious,
|
|
13
13
|
Collapsible,
|
|
14
14
|
useCollapsible,
|
|
15
|
+
findFirstCategoryLink,
|
|
16
|
+
ThemeClassNames,
|
|
15
17
|
} from '@docusaurus/theme-common';
|
|
16
18
|
import Link from '@docusaurus/Link';
|
|
17
19
|
import isInternalUrl from '@docusaurus/isInternalUrl';
|
|
20
|
+
import {translate} from '@docusaurus/Translate';
|
|
18
21
|
import IconExternalLink from '@theme/IconExternalLink';
|
|
19
22
|
|
|
20
23
|
import type {Props, DocSidebarItemsProps} from '@theme/DocSidebarItem';
|
|
21
24
|
import type {
|
|
22
25
|
PropSidebarItemCategory,
|
|
23
26
|
PropSidebarItemLink,
|
|
24
|
-
} from '@docusaurus/plugin-content-docs
|
|
27
|
+
} from '@docusaurus/plugin-content-docs';
|
|
25
28
|
|
|
26
29
|
import styles from './styles.module.css';
|
|
27
|
-
|
|
28
|
-
const isActiveSidebarItem = (item: Props['item'], activePath: string) => {
|
|
29
|
-
if (item.type === 'link') {
|
|
30
|
-
return isSamePath(item.href, activePath);
|
|
31
|
-
}
|
|
32
|
-
if (item.type === 'category') {
|
|
33
|
-
return item.items.some((subItem) =>
|
|
34
|
-
isActiveSidebarItem(subItem, activePath),
|
|
35
|
-
);
|
|
36
|
-
}
|
|
37
|
-
return false;
|
|
38
|
-
};
|
|
30
|
+
import useIsBrowser from '@docusaurus/useIsBrowser';
|
|
39
31
|
|
|
40
32
|
// Optimize sidebar at each "level"
|
|
41
33
|
// TODO this item should probably not receive the "activePath" props
|
|
42
34
|
// TODO this triggers whole sidebar re-renders on navigation
|
|
43
|
-
export const DocSidebarItems = memo(
|
|
44
|
-
items,
|
|
45
|
-
...props
|
|
46
|
-
}: DocSidebarItemsProps): JSX.Element {
|
|
47
|
-
return (
|
|
35
|
+
export const DocSidebarItems = memo(
|
|
36
|
+
({items, ...props}: DocSidebarItemsProps): JSX.Element => (
|
|
48
37
|
<>
|
|
49
38
|
{items.map((item, index) => (
|
|
50
39
|
<DocSidebarItem
|
|
@@ -54,8 +43,8 @@ export const DocSidebarItems = memo(function DocSidebarItems({
|
|
|
54
43
|
/>
|
|
55
44
|
))}
|
|
56
45
|
</>
|
|
57
|
-
)
|
|
58
|
-
|
|
46
|
+
),
|
|
47
|
+
);
|
|
59
48
|
|
|
60
49
|
export default function DocSidebarItem({
|
|
61
50
|
item,
|
|
@@ -89,17 +78,40 @@ function useAutoExpandActiveCategory({
|
|
|
89
78
|
if (justBecameActive && collapsed) {
|
|
90
79
|
setCollapsed(false);
|
|
91
80
|
}
|
|
92
|
-
}, [isActive, wasActive, collapsed]);
|
|
81
|
+
}, [isActive, wasActive, collapsed, setCollapsed]);
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
// When a collapsible category has no link, we still link it to its first child during SSR as a temporary fallback
|
|
85
|
+
// This allows to be able to navigate inside the category even when JS fails to load, is delayed or simply disabled
|
|
86
|
+
// React hydration becomes an optional progressive enhancement
|
|
87
|
+
// see https://github.com/facebookincubator/infima/issues/36#issuecomment-772543188
|
|
88
|
+
// see https://github.com/facebook/docusaurus/issues/3030
|
|
89
|
+
function useCategoryHrefWithSSRFallback(
|
|
90
|
+
item: PropSidebarItemCategory,
|
|
91
|
+
): string | undefined {
|
|
92
|
+
const isBrowser = useIsBrowser();
|
|
93
|
+
return useMemo(() => {
|
|
94
|
+
if (item.href) {
|
|
95
|
+
return item.href;
|
|
96
|
+
}
|
|
97
|
+
// In these cases, it's not necessary to render a fallback
|
|
98
|
+
// We skip the "findFirstCategoryLink" computation
|
|
99
|
+
if (isBrowser || !item.collapsible) {
|
|
100
|
+
return undefined;
|
|
101
|
+
}
|
|
102
|
+
return findFirstCategoryLink(item);
|
|
103
|
+
}, [item, isBrowser]);
|
|
93
104
|
}
|
|
94
105
|
|
|
95
106
|
function DocSidebarItemCategory({
|
|
96
107
|
item,
|
|
97
108
|
onItemClick,
|
|
98
|
-
collapsible = true,
|
|
99
109
|
activePath,
|
|
110
|
+
level,
|
|
100
111
|
...props
|
|
101
112
|
}: Props & {item: PropSidebarItemCategory}) {
|
|
102
|
-
const {items, label} = item;
|
|
113
|
+
const {items, label, collapsible, className, href} = item;
|
|
114
|
+
const hrefWithSSRFallback = useCategoryHrefWithSSRFallback(item);
|
|
103
115
|
|
|
104
116
|
const isActive = isActiveSidebarItem(item, activePath);
|
|
105
117
|
|
|
@@ -110,7 +122,7 @@ function DocSidebarItemCategory({
|
|
|
110
122
|
if (!collapsible) {
|
|
111
123
|
return false;
|
|
112
124
|
}
|
|
113
|
-
return isActive ? false : item.collapsed
|
|
125
|
+
return isActive ? false : item.collapsed;
|
|
114
126
|
},
|
|
115
127
|
});
|
|
116
128
|
|
|
@@ -118,29 +130,70 @@ function DocSidebarItemCategory({
|
|
|
118
130
|
|
|
119
131
|
return (
|
|
120
132
|
<li
|
|
121
|
-
className={clsx(
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
133
|
+
className={clsx(
|
|
134
|
+
ThemeClassNames.docs.docSidebarItemCategory,
|
|
135
|
+
ThemeClassNames.docs.docSidebarItemCategoryLevel(level),
|
|
136
|
+
'menu__list-item',
|
|
137
|
+
{
|
|
138
|
+
'menu__list-item--collapsed': collapsed,
|
|
139
|
+
},
|
|
140
|
+
className,
|
|
141
|
+
)}>
|
|
142
|
+
<div className="menu__list-item-collapsible">
|
|
143
|
+
<Link
|
|
144
|
+
className={clsx('menu__link', {
|
|
145
|
+
'menu__link--sublist': collapsible && !href,
|
|
146
|
+
'menu__link--active': isActive,
|
|
147
|
+
[styles.menuLinkText]: !collapsible,
|
|
148
|
+
[styles.hasHref]: !!hrefWithSSRFallback,
|
|
149
|
+
})}
|
|
150
|
+
onClick={
|
|
151
|
+
collapsible
|
|
152
|
+
? (e) => {
|
|
153
|
+
onItemClick?.(item);
|
|
154
|
+
if (href) {
|
|
155
|
+
setCollapsed(false);
|
|
156
|
+
} else {
|
|
157
|
+
e.preventDefault();
|
|
158
|
+
toggleCollapsed();
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
: () => {
|
|
162
|
+
onItemClick?.(item);
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
href={collapsible ? hrefWithSSRFallback ?? '#' : hrefWithSSRFallback}
|
|
166
|
+
{...props}>
|
|
167
|
+
{label}
|
|
168
|
+
</Link>
|
|
169
|
+
{href && collapsible && (
|
|
170
|
+
<button
|
|
171
|
+
aria-label={translate(
|
|
172
|
+
{
|
|
173
|
+
id: 'theme.DocSidebarItem.toggleCollapsedCategoryAriaLabel',
|
|
174
|
+
message: "Toggle the collapsible sidebar category '{label}'",
|
|
175
|
+
description:
|
|
176
|
+
'The ARIA label to toggle the collapsible sidebar category',
|
|
177
|
+
},
|
|
178
|
+
{label},
|
|
179
|
+
)}
|
|
180
|
+
type="button"
|
|
181
|
+
className="clean-btn menu__caret"
|
|
182
|
+
onClick={(e) => {
|
|
183
|
+
e.preventDefault();
|
|
184
|
+
toggleCollapsed();
|
|
185
|
+
}}
|
|
186
|
+
/>
|
|
187
|
+
)}
|
|
188
|
+
</div>
|
|
136
189
|
|
|
137
|
-
<Collapsible as="ul" className="menu__list" collapsed={collapsed}>
|
|
190
|
+
<Collapsible lazy as="ul" className="menu__list" collapsed={collapsed}>
|
|
138
191
|
<DocSidebarItems
|
|
139
192
|
items={items}
|
|
140
193
|
tabIndex={collapsed ? -1 : 0}
|
|
141
194
|
onItemClick={onItemClick}
|
|
142
|
-
collapsible={collapsible}
|
|
143
195
|
activePath={activePath}
|
|
196
|
+
level={level + 1}
|
|
144
197
|
/>
|
|
145
198
|
</Collapsible>
|
|
146
199
|
</li>
|
|
@@ -151,22 +204,28 @@ function DocSidebarItemLink({
|
|
|
151
204
|
item,
|
|
152
205
|
onItemClick,
|
|
153
206
|
activePath,
|
|
154
|
-
|
|
207
|
+
level,
|
|
155
208
|
...props
|
|
156
209
|
}: Props & {item: PropSidebarItemLink}) {
|
|
157
|
-
const {href, label} = item;
|
|
210
|
+
const {href, label, className} = item;
|
|
158
211
|
const isActive = isActiveSidebarItem(item, activePath);
|
|
159
212
|
return (
|
|
160
|
-
<li
|
|
213
|
+
<li
|
|
214
|
+
className={clsx(
|
|
215
|
+
ThemeClassNames.docs.docSidebarItemLink,
|
|
216
|
+
ThemeClassNames.docs.docSidebarItemLinkLevel(level),
|
|
217
|
+
'menu__list-item',
|
|
218
|
+
className,
|
|
219
|
+
)}
|
|
220
|
+
key={label}>
|
|
161
221
|
<Link
|
|
162
222
|
className={clsx('menu__link', {
|
|
163
223
|
'menu__link--active': isActive,
|
|
164
224
|
})}
|
|
225
|
+
aria-current={isActive ? 'page' : undefined}
|
|
165
226
|
to={href}
|
|
166
227
|
{...(isInternalUrl(href) && {
|
|
167
|
-
|
|
168
|
-
exact: true,
|
|
169
|
-
onClick: onItemClick,
|
|
228
|
+
onClick: onItemClick ? () => onItemClick(item) : undefined,
|
|
170
229
|
})}
|
|
171
230
|
{...props}>
|
|
172
231
|
{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
|
+
|
|
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';
|
|
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
|
+
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,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
|
+
searchMetadata={{
|
|
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;
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) Facebook, Inc. and its affiliates.
|
|
3
|
+
*
|
|
4
|
+
* This source code is licensed under the MIT license found in the
|
|
5
|
+
* LICENSE file in the root directory of this source tree.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
import React from 'react';
|
|
9
|
+
import {ThemeClassNames, useDocsVersion} from '@docusaurus/theme-common';
|
|
10
|
+
import clsx from 'clsx';
|
|
11
|
+
import type {Props} from '@theme/DocVersionBadge';
|
|
12
|
+
|
|
13
|
+
export default function DocVersionBadge({
|
|
14
|
+
className,
|
|
15
|
+
}: Props): JSX.Element | null {
|
|
16
|
+
const versionMetadata = useDocsVersion();
|
|
17
|
+
if (versionMetadata.badge) {
|
|
18
|
+
return (
|
|
19
|
+
<span
|
|
20
|
+
className={clsx(
|
|
21
|
+
className,
|
|
22
|
+
ThemeClassNames.docs.docVersionBadge,
|
|
23
|
+
'badge badge--secondary',
|
|
24
|
+
)}>
|
|
25
|
+
Version: {versionMetadata.label}
|
|
26
|
+
</span>
|
|
27
|
+
);
|
|
28
|
+
}
|
|
29
|
+
return null;
|
|
30
|
+
}
|
|
@@ -9,14 +9,27 @@ 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
|
+
useDocsVersion,
|
|
21
|
+
} from '@docusaurus/theme-common';
|
|
14
22
|
|
|
15
23
|
import type {Props} from '@theme/DocVersionBanner';
|
|
24
|
+
import clsx from 'clsx';
|
|
25
|
+
import type {
|
|
26
|
+
VersionBanner,
|
|
27
|
+
PropVersionMetadata,
|
|
28
|
+
} from '@docusaurus/plugin-content-docs';
|
|
16
29
|
|
|
17
30
|
type BannerLabelComponentProps = {
|
|
18
31
|
siteTitle: string;
|
|
19
|
-
versionMetadata:
|
|
32
|
+
versionMetadata: PropVersionMetadata;
|
|
20
33
|
};
|
|
21
34
|
|
|
22
35
|
function UnreleasedVersionLabel({
|
|
@@ -58,7 +71,7 @@ function UnmaintainedVersionLabel({
|
|
|
58
71
|
}
|
|
59
72
|
|
|
60
73
|
const BannerLabelComponents: Record<
|
|
61
|
-
|
|
74
|
+
VersionBanner,
|
|
62
75
|
ComponentType<BannerLabelComponentProps>
|
|
63
76
|
> = {
|
|
64
77
|
unreleased: UnreleasedVersionLabel,
|
|
@@ -67,7 +80,7 @@ const BannerLabelComponents: Record<
|
|
|
67
80
|
|
|
68
81
|
function BannerLabel(props: BannerLabelComponentProps) {
|
|
69
82
|
const BannerLabelComponent =
|
|
70
|
-
BannerLabelComponents[props.versionMetadata.banner];
|
|
83
|
+
BannerLabelComponents[props.versionMetadata.banner!];
|
|
71
84
|
return <BannerLabelComponent {...props} />;
|
|
72
85
|
}
|
|
73
86
|
|
|
@@ -105,21 +118,24 @@ function LatestVersionSuggestionLabel({
|
|
|
105
118
|
);
|
|
106
119
|
}
|
|
107
120
|
|
|
108
|
-
function DocVersionBannerEnabled({
|
|
121
|
+
function DocVersionBannerEnabled({
|
|
122
|
+
className,
|
|
123
|
+
versionMetadata,
|
|
124
|
+
}: Props & {
|
|
125
|
+
versionMetadata: PropVersionMetadata;
|
|
126
|
+
}): JSX.Element {
|
|
109
127
|
const {
|
|
110
128
|
siteConfig: {title: siteTitle},
|
|
111
129
|
} = useDocusaurusContext();
|
|
112
|
-
const {pluginId} = useActivePlugin({failfast: true})
|
|
130
|
+
const {pluginId} = useActivePlugin({failfast: true})!;
|
|
113
131
|
|
|
114
|
-
const getVersionMainDoc = (version) =>
|
|
115
|
-
version.docs.find((doc) => doc.id === version.mainDocId)
|
|
132
|
+
const getVersionMainDoc = (version: GlobalVersion) =>
|
|
133
|
+
version.docs.find((doc) => doc.id === version.mainDocId)!;
|
|
116
134
|
|
|
117
135
|
const {savePreferredVersionName} = useDocsPreferredVersion(pluginId);
|
|
118
136
|
|
|
119
|
-
const {
|
|
120
|
-
|
|
121
|
-
latestVersionSuggestion,
|
|
122
|
-
} = useDocVersionSuggestions(pluginId);
|
|
137
|
+
const {latestDocSuggestion, latestVersionSuggestion} =
|
|
138
|
+
useDocVersionSuggestions(pluginId);
|
|
123
139
|
|
|
124
140
|
// try to link to same doc in latest version (not always possible)
|
|
125
141
|
// fallback to main doc of latest version
|
|
@@ -127,7 +143,13 @@ function DocVersionBannerEnabled({versionMetadata}: Props): JSX.Element {
|
|
|
127
143
|
latestDocSuggestion ?? getVersionMainDoc(latestVersionSuggestion);
|
|
128
144
|
|
|
129
145
|
return (
|
|
130
|
-
<div
|
|
146
|
+
<div
|
|
147
|
+
className={clsx(
|
|
148
|
+
className,
|
|
149
|
+
ThemeClassNames.docs.docVersionBanner,
|
|
150
|
+
'alert alert--warning margin-bottom--md',
|
|
151
|
+
)}
|
|
152
|
+
role="alert">
|
|
131
153
|
<div>
|
|
132
154
|
<BannerLabel siteTitle={siteTitle} versionMetadata={versionMetadata} />
|
|
133
155
|
</div>
|
|
@@ -142,12 +164,17 @@ function DocVersionBannerEnabled({versionMetadata}: Props): JSX.Element {
|
|
|
142
164
|
);
|
|
143
165
|
}
|
|
144
166
|
|
|
145
|
-
function DocVersionBanner({
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
167
|
+
export default function DocVersionBanner({
|
|
168
|
+
className,
|
|
169
|
+
}: Props): JSX.Element | null {
|
|
170
|
+
const versionMetadata = useDocsVersion();
|
|
171
|
+
if (versionMetadata.banner) {
|
|
172
|
+
return (
|
|
173
|
+
<DocVersionBannerEnabled
|
|
174
|
+
className={className}
|
|
175
|
+
versionMetadata={versionMetadata}
|
|
176
|
+
/>
|
|
177
|
+
);
|
|
150
178
|
}
|
|
179
|
+
return null;
|
|
151
180
|
}
|
|
152
|
-
|
|
153
|
-
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"
|
|
@@ -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
|
+
import Translate from '@docusaurus/Translate';
|
|
10
|
+
import type {Props} from '@theme/Error';
|
|
11
|
+
|
|
12
|
+
export default function ErrorPageContent({
|
|
13
|
+
error,
|
|
14
|
+
tryAgain,
|
|
15
|
+
}: Props): JSX.Element {
|
|
16
|
+
return (
|
|
17
|
+
<main className="container margin-vert--xl">
|
|
18
|
+
<div className="row">
|
|
19
|
+
<div className="col col--6 col--offset-3">
|
|
20
|
+
<h1 className="hero__title">
|
|
21
|
+
<Translate
|
|
22
|
+
id="theme.ErrorPageContent.title"
|
|
23
|
+
description="The title of the fallback page when the page crashed">
|
|
24
|
+
This page crashed.
|
|
25
|
+
</Translate>
|
|
26
|
+
</h1>
|
|
27
|
+
<p>{error.message}</p>
|
|
28
|
+
<div>
|
|
29
|
+
<button type="button" onClick={tryAgain}>
|
|
30
|
+
<Translate
|
|
31
|
+
id="theme.ErrorPageContent.tryAgain"
|
|
32
|
+
description="The label of the button to try again when the page crashed">
|
|
33
|
+
Try again
|
|
34
|
+
</Translate>
|
|
35
|
+
</button>
|
|
36
|
+
</div>
|
|
37
|
+
</div>
|
|
38
|
+
</div>
|
|
39
|
+
</main>
|
|
40
|
+
);
|
|
41
|
+
}
|