@docusaurus/theme-classic 2.0.0-beta.8bda3b2db → 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 -7
- package/codeTranslations/base.json +17 -7
- package/codeTranslations/bn.json +11 -5
- package/codeTranslations/cs.json +62 -0
- package/codeTranslations/da.json +8 -3
- package/codeTranslations/de.json +8 -3
- package/codeTranslations/es.json +15 -10
- package/codeTranslations/fa.json +31 -26
- package/codeTranslations/fil.json +8 -3
- package/codeTranslations/fr.json +8 -3
- package/codeTranslations/he.json +9 -4
- package/codeTranslations/hi.json +9 -4
- package/codeTranslations/ja.json +8 -3
- package/codeTranslations/ko.json +8 -3
- package/codeTranslations/pl.json +8 -3
- package/codeTranslations/pt-BR.json +16 -11
- package/codeTranslations/pt-PT.json +8 -3
- package/codeTranslations/ru.json +10 -5
- package/codeTranslations/sr.json +62 -0
- package/codeTranslations/tr.json +9 -4
- package/codeTranslations/vi.json +10 -5
- package/codeTranslations/zh-Hans.json +9 -4
- package/codeTranslations/zh-Hant.json +9 -4
- package/lib/__tests__/validateThemeConfig.test.js +277 -3
- package/lib/admonitions.css +35 -0
- package/lib/index.js +31 -8
- package/lib/prism-include-languages.js +9 -5
- package/lib/theme/AnnouncementBar/index.js +10 -16
- package/lib/theme/AnnouncementBar/styles.module.css +25 -30
- 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/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 +45 -41
- 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/DocItem/index.js +29 -45
- package/lib/theme/DocItem/styles.module.css +5 -9
- package/lib/theme/DocItemFooter/index.js +79 -0
- package/lib/theme/DocItemFooter/styles.module.css +18 -0
- package/lib/theme/DocPage/index.js +25 -49
- package/lib/theme/DocPage/styles.module.css +8 -23
- package/lib/theme/DocSidebar/index.js +45 -227
- package/lib/theme/DocSidebar/styles.module.css +0 -18
- package/lib/theme/DocSidebarItem/index.js +177 -0
- package/lib/theme/DocSidebarItem/styles.module.css +15 -0
- package/lib/theme/DocTagDocListPage/index.js +89 -0
- package/lib/theme/DocTagsListPage/index.js +44 -0
- package/lib/theme/{DocVersionSuggestions → DocVersionBanner}/index.js +37 -18
- package/lib/theme/EditThisPage/index.js +3 -1
- package/lib/theme/Footer/index.js +13 -4
- 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 +11 -5
- package/lib/theme/Logo/index.js +14 -12
- 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 +164 -42
- package/lib/theme/Navbar/styles.module.css +10 -3
- package/lib/theme/NavbarItem/DefaultNavbarItem.js +27 -123
- package/lib/theme/NavbarItem/DocNavbarItem.js +6 -5
- 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} +5 -6
- package/lib/theme/NavbarItem/LocaleDropdownNavbarItem/styles.module.css +11 -0
- package/lib/theme/NavbarItem/index.js +31 -11
- package/lib/theme/Seo/index.js +10 -7
- package/lib/theme/SkipToContent/index.js +9 -3
- package/lib/theme/SkipToContent/styles.module.css +1 -0
- package/lib/theme/TOC/index.js +9 -29
- package/lib/theme/TOC/styles.module.css +1 -1
- package/lib/theme/TOCCollapsible/index.js +53 -0
- package/lib/theme/TOCCollapsible/styles.module.css +50 -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/ThemedImage/index.js +4 -5
- package/lib/theme/Toggle/index.js +23 -18
- package/lib/theme/Toggle/styles.module.css +91 -0
- package/lib/theme/UserPreferencesProvider/index.js +1 -9
- package/lib/theme/hooks/useHideableNavbar.js +14 -32
- package/lib/theme/hooks/useTabGroupChoice.js +2 -4
- package/lib/theme/hooks/useTheme.js +2 -2
- package/lib/theme/hooks/useWindowSize.js +33 -20
- package/lib/theme/prism-include-languages.js +4 -3
- package/lib/translations.js +4 -4
- package/lib/types.d.ts +338 -138
- package/lib/validateThemeConfig.js +226 -245
- package/lib-next/__tests__/validateThemeConfig.test.js +277 -3
- package/lib-next/admonitions.css +35 -0
- package/lib-next/index.js +33 -7
- package/lib-next/prism-include-languages.js +0 -2
- package/lib-next/theme/AnnouncementBar/index.js +9 -18
- package/lib-next/theme/AnnouncementBar/styles.module.css +25 -30
- 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 +16 -24
- 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/styles.module.css +2 -2
- package/lib-next/theme/BlogTagsListPage/index.js +13 -54
- package/lib-next/theme/BlogTagsPostsPage/index.js +28 -38
- package/lib-next/theme/CodeBlock/index.js +54 -53
- 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/DocItem/index.js +46 -55
- package/lib-next/theme/DocItem/styles.module.css +5 -9
- 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 +25 -43
- package/lib-next/theme/DocPage/styles.module.css +8 -23
- package/lib-next/theme/DocSidebar/index.js +59 -288
- package/lib-next/theme/DocSidebar/styles.module.css +0 -18
- package/lib-next/theme/DocSidebarItem/index.js +181 -0
- package/lib-next/theme/DocSidebarItem/styles.module.css +15 -0
- package/lib-next/theme/DocTagDocListPage/index.js +89 -0
- package/lib-next/theme/DocTagsListPage/index.js +38 -0
- package/lib-next/theme/{DocVersionSuggestions → DocVersionBanner}/index.js +44 -36
- package/lib-next/theme/EditThisPage/index.js +6 -1
- package/lib-next/theme/Footer/index.js +24 -4
- 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 +17 -6
- package/lib-next/theme/Logo/index.js +23 -19
- 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 +192 -56
- package/lib-next/theme/Navbar/styles.module.css +10 -3
- package/lib-next/theme/NavbarItem/DefaultNavbarItem.js +45 -147
- package/lib-next/theme/NavbarItem/DocNavbarItem.js +6 -5
- 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 -8
- package/lib-next/theme/NavbarItem/LocaleDropdownNavbarItem/styles.module.css +11 -0
- package/lib-next/theme/NavbarItem/index.js +25 -12
- package/lib-next/theme/Seo/index.js +11 -7
- package/lib-next/theme/SkipToContent/index.js +5 -6
- package/lib-next/theme/SkipToContent/styles.module.css +1 -0
- 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 +54 -0
- package/lib-next/theme/TOCCollapsible/styles.module.css +50 -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/ThemedImage/index.js +5 -6
- package/lib-next/theme/Toggle/index.js +20 -15
- package/lib-next/theme/Toggle/styles.module.css +91 -0
- package/lib-next/theme/UserPreferencesProvider/index.js +0 -4
- package/lib-next/theme/hooks/useHideableNavbar.js +31 -44
- package/lib-next/theme/hooks/useTabGroupChoice.js +2 -4
- package/lib-next/theme/hooks/useTheme.js +2 -2
- package/lib-next/theme/hooks/useWindowSize.js +34 -20
- package/lib-next/theme/prism-include-languages.js +2 -1
- package/lib-next/translations.js +6 -10
- package/lib-next/types.d.ts +338 -138
- package/lib-next/validateThemeConfig.js +134 -110
- package/package.json +24 -19
- package/src/__tests__/validateThemeConfig.test.js +277 -3
- package/src/admonitions.css +35 -0
- package/src/index.ts +44 -14
- package/src/{prism-include-languages.js → prism-include-languages.ts} +0 -0
- package/src/theme/AnnouncementBar/index.tsx +10 -17
- package/src/theme/AnnouncementBar/styles.module.css +25 -30
- 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 +17 -24
- 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 +72 -35
- package/src/theme/BlogSidebar/styles.module.css +2 -2
- package/src/theme/BlogTagsListPage/index.tsx +13 -56
- package/src/theme/BlogTagsPostsPage/index.tsx +28 -38
- package/src/theme/CodeBlock/index.tsx +70 -55
- 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/DocItem/index.tsx +49 -55
- package/src/theme/DocItem/styles.module.css +5 -9
- package/src/theme/DocItemFooter/index.tsx +91 -0
- package/src/theme/DocItemFooter/styles.module.css +18 -0
- package/src/theme/DocPage/index.tsx +24 -38
- package/src/theme/DocPage/styles.module.css +8 -23
- package/src/theme/DocSidebar/index.tsx +70 -300
- package/src/theme/DocSidebar/styles.module.css +0 -18
- package/src/theme/DocSidebarItem/index.tsx +206 -0
- package/src/theme/DocSidebarItem/styles.module.css +15 -0
- package/src/theme/DocTagDocListPage/index.tsx +89 -0
- package/src/theme/DocTagsListPage/index.tsx +41 -0
- package/src/theme/{DocVersionSuggestions → DocVersionBanner}/index.tsx +58 -44
- package/src/theme/EditThisPage/index.tsx +6 -1
- package/src/theme/Footer/index.tsx +26 -4
- 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 +17 -6
- package/src/theme/Logo/index.tsx +19 -15
- 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 +202 -61
- package/src/theme/Navbar/styles.module.css +10 -3
- package/src/theme/NavbarItem/DefaultNavbarItem.tsx +42 -154
- package/src/theme/NavbarItem/DocNavbarItem.tsx +11 -14
- 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 -7
- package/src/theme/NavbarItem/LocaleDropdownNavbarItem/styles.module.css +11 -0
- package/src/theme/NavbarItem/index.tsx +41 -16
- package/src/theme/Seo/index.tsx +7 -4
- package/src/theme/SkipToContent/index.tsx +5 -6
- package/src/theme/SkipToContent/styles.module.css +1 -0
- package/src/theme/TOC/index.tsx +12 -41
- package/src/theme/TOC/styles.module.css +1 -1
- package/src/theme/TOCCollapsible/index.tsx +58 -0
- package/src/theme/TOCCollapsible/styles.module.css +50 -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/ThemedImage/index.tsx +6 -6
- package/src/theme/Toggle/index.tsx +20 -15
- package/src/theme/Toggle/styles.module.css +91 -0
- package/src/theme/UserPreferencesProvider/index.tsx +0 -5
- package/src/theme/hooks/useContextualSearchFilters.ts +1 -1
- package/src/theme/hooks/useHideableNavbar.ts +32 -45
- package/src/theme/hooks/useTabGroupChoice.ts +4 -4
- package/src/theme/hooks/useTheme.ts +2 -2
- package/src/theme/hooks/useWindowSize.ts +38 -20
- package/src/theme/prism-include-languages.ts +3 -2
- package/src/translations.ts +6 -10
- package/src/types.d.ts +338 -138
- package/src/{validateThemeConfig.js → validateThemeConfig.ts} +144 -90
- package/tsconfig.json +1 -2
- package/update-code-translations.js +10 -6
- 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/useAnnouncementBar.js +0 -63
- 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/useAnnouncementBar.js +0 -49
- 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/useAnnouncementBar.ts +0 -58
- package/src/theme/hooks/useScrollPosition.ts +0 -45
- package/src/theme/hooks/useTOCHighlight.ts +0 -98
|
@@ -0,0 +1,206 @@
|
|
|
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, {useEffect, memo} from 'react';
|
|
9
|
+
import clsx from 'clsx';
|
|
10
|
+
import {
|
|
11
|
+
isSamePath,
|
|
12
|
+
usePrevious,
|
|
13
|
+
Collapsible,
|
|
14
|
+
useCollapsible,
|
|
15
|
+
ThemeClassNames,
|
|
16
|
+
} from '@docusaurus/theme-common';
|
|
17
|
+
import Link from '@docusaurus/Link';
|
|
18
|
+
import isInternalUrl from '@docusaurus/isInternalUrl';
|
|
19
|
+
import IconExternalLink from '@theme/IconExternalLink';
|
|
20
|
+
|
|
21
|
+
import type {Props, DocSidebarItemsProps} from '@theme/DocSidebarItem';
|
|
22
|
+
import type {
|
|
23
|
+
PropSidebarItemCategory,
|
|
24
|
+
PropSidebarItemLink,
|
|
25
|
+
} from '@docusaurus/plugin-content-docs-types';
|
|
26
|
+
|
|
27
|
+
import styles from './styles.module.css';
|
|
28
|
+
|
|
29
|
+
const isActiveSidebarItem = (
|
|
30
|
+
item: Props['item'],
|
|
31
|
+
activePath: string,
|
|
32
|
+
): boolean => {
|
|
33
|
+
if (item.type === 'link') {
|
|
34
|
+
return isSamePath(item.href, activePath);
|
|
35
|
+
}
|
|
36
|
+
if (item.type === 'category') {
|
|
37
|
+
return item.items.some((subItem) =>
|
|
38
|
+
isActiveSidebarItem(subItem, activePath),
|
|
39
|
+
);
|
|
40
|
+
}
|
|
41
|
+
return false;
|
|
42
|
+
};
|
|
43
|
+
|
|
44
|
+
// Optimize sidebar at each "level"
|
|
45
|
+
// TODO this item should probably not receive the "activePath" props
|
|
46
|
+
// TODO this triggers whole sidebar re-renders on navigation
|
|
47
|
+
export const DocSidebarItems = memo(function DocSidebarItems({
|
|
48
|
+
items,
|
|
49
|
+
...props
|
|
50
|
+
}: DocSidebarItemsProps): JSX.Element {
|
|
51
|
+
return (
|
|
52
|
+
<>
|
|
53
|
+
{items.map((item, index) => (
|
|
54
|
+
<DocSidebarItem
|
|
55
|
+
key={index} // sidebar is static, the index does not change
|
|
56
|
+
item={item}
|
|
57
|
+
{...props}
|
|
58
|
+
/>
|
|
59
|
+
))}
|
|
60
|
+
</>
|
|
61
|
+
);
|
|
62
|
+
});
|
|
63
|
+
|
|
64
|
+
export default function DocSidebarItem({
|
|
65
|
+
item,
|
|
66
|
+
...props
|
|
67
|
+
}: Props): JSX.Element | null {
|
|
68
|
+
switch (item.type) {
|
|
69
|
+
case 'category':
|
|
70
|
+
if (item.items.length === 0) {
|
|
71
|
+
return null;
|
|
72
|
+
}
|
|
73
|
+
return <DocSidebarItemCategory item={item} {...props} />;
|
|
74
|
+
case 'link':
|
|
75
|
+
default:
|
|
76
|
+
return <DocSidebarItemLink item={item} {...props} />;
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
// If we navigate to a category and it becomes active, it should automatically expand itself
|
|
81
|
+
function useAutoExpandActiveCategory({
|
|
82
|
+
isActive,
|
|
83
|
+
collapsed,
|
|
84
|
+
setCollapsed,
|
|
85
|
+
}: {
|
|
86
|
+
isActive: boolean;
|
|
87
|
+
collapsed: boolean;
|
|
88
|
+
setCollapsed: (b: boolean) => void;
|
|
89
|
+
}) {
|
|
90
|
+
const wasActive = usePrevious(isActive);
|
|
91
|
+
useEffect(() => {
|
|
92
|
+
const justBecameActive = isActive && !wasActive;
|
|
93
|
+
if (justBecameActive && collapsed) {
|
|
94
|
+
setCollapsed(false);
|
|
95
|
+
}
|
|
96
|
+
}, [isActive, wasActive, collapsed, setCollapsed]);
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
function DocSidebarItemCategory({
|
|
100
|
+
item,
|
|
101
|
+
onItemClick,
|
|
102
|
+
activePath,
|
|
103
|
+
level,
|
|
104
|
+
...props
|
|
105
|
+
}: Props & {item: PropSidebarItemCategory}) {
|
|
106
|
+
const {items, label, collapsible, className} = item;
|
|
107
|
+
|
|
108
|
+
const isActive = isActiveSidebarItem(item, activePath);
|
|
109
|
+
|
|
110
|
+
const {collapsed, setCollapsed, toggleCollapsed} = useCollapsible({
|
|
111
|
+
// active categories are always initialized as expanded
|
|
112
|
+
// the default (item.collapsed) is only used for non-active categories
|
|
113
|
+
initialState: () => {
|
|
114
|
+
if (!collapsible) {
|
|
115
|
+
return false;
|
|
116
|
+
}
|
|
117
|
+
return isActive ? false : item.collapsed;
|
|
118
|
+
},
|
|
119
|
+
});
|
|
120
|
+
|
|
121
|
+
useAutoExpandActiveCategory({isActive, collapsed, setCollapsed});
|
|
122
|
+
|
|
123
|
+
return (
|
|
124
|
+
<li
|
|
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
|
+
)}>
|
|
134
|
+
{/* eslint-disable-next-line jsx-a11y/anchor-is-valid */}
|
|
135
|
+
<a
|
|
136
|
+
className={clsx('menu__link', {
|
|
137
|
+
'menu__link--sublist': collapsible,
|
|
138
|
+
'menu__link--active': collapsible && isActive,
|
|
139
|
+
[styles.menuLinkText]: !collapsible,
|
|
140
|
+
})}
|
|
141
|
+
onClick={
|
|
142
|
+
collapsible
|
|
143
|
+
? (e) => {
|
|
144
|
+
e.preventDefault();
|
|
145
|
+
toggleCollapsed();
|
|
146
|
+
}
|
|
147
|
+
: undefined
|
|
148
|
+
}
|
|
149
|
+
href={collapsible ? '#' : undefined}
|
|
150
|
+
{...props}>
|
|
151
|
+
{label}
|
|
152
|
+
</a>
|
|
153
|
+
|
|
154
|
+
<Collapsible lazy as="ul" className="menu__list" collapsed={collapsed}>
|
|
155
|
+
<DocSidebarItems
|
|
156
|
+
items={items}
|
|
157
|
+
tabIndex={collapsed ? -1 : 0}
|
|
158
|
+
onItemClick={onItemClick}
|
|
159
|
+
activePath={activePath}
|
|
160
|
+
level={level + 1}
|
|
161
|
+
/>
|
|
162
|
+
</Collapsible>
|
|
163
|
+
</li>
|
|
164
|
+
);
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
function DocSidebarItemLink({
|
|
168
|
+
item,
|
|
169
|
+
onItemClick,
|
|
170
|
+
activePath,
|
|
171
|
+
level,
|
|
172
|
+
...props
|
|
173
|
+
}: Props & {item: PropSidebarItemLink}) {
|
|
174
|
+
const {href, label, className} = item;
|
|
175
|
+
const isActive = isActiveSidebarItem(item, activePath);
|
|
176
|
+
return (
|
|
177
|
+
<li
|
|
178
|
+
className={clsx(
|
|
179
|
+
ThemeClassNames.docs.docSidebarItemLink,
|
|
180
|
+
ThemeClassNames.docs.docSidebarItemLinkLevel(level),
|
|
181
|
+
'menu__list-item',
|
|
182
|
+
className,
|
|
183
|
+
)}
|
|
184
|
+
key={label}>
|
|
185
|
+
<Link
|
|
186
|
+
className={clsx('menu__link', {
|
|
187
|
+
'menu__link--active': isActive,
|
|
188
|
+
})}
|
|
189
|
+
aria-current={isActive ? 'page' : undefined}
|
|
190
|
+
to={href}
|
|
191
|
+
{...(isInternalUrl(href) && {
|
|
192
|
+
onClick: onItemClick,
|
|
193
|
+
})}
|
|
194
|
+
{...props}>
|
|
195
|
+
{isInternalUrl(href) ? (
|
|
196
|
+
label
|
|
197
|
+
) : (
|
|
198
|
+
<span>
|
|
199
|
+
{label}
|
|
200
|
+
<IconExternalLink />
|
|
201
|
+
</span>
|
|
202
|
+
)}
|
|
203
|
+
</Link>
|
|
204
|
+
</li>
|
|
205
|
+
);
|
|
206
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) Facebook, Inc. and its affiliates.
|
|
3
|
+
*
|
|
4
|
+
* This source code is licensed under the MIT license found in the
|
|
5
|
+
* LICENSE file in the root directory of this source tree.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
@media (min-width: 997px) {
|
|
9
|
+
.menuLinkText {
|
|
10
|
+
cursor: initial;
|
|
11
|
+
}
|
|
12
|
+
.menuLinkText:hover {
|
|
13
|
+
background: none;
|
|
14
|
+
}
|
|
15
|
+
}
|
|
@@ -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;
|
|
@@ -5,31 +5,40 @@
|
|
|
5
5
|
* LICENSE file in the root directory of this source tree.
|
|
6
6
|
*/
|
|
7
7
|
|
|
8
|
-
import React from 'react';
|
|
8
|
+
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
12
|
import {
|
|
13
13
|
useActivePlugin,
|
|
14
|
-
useActiveVersion,
|
|
15
14
|
useDocVersionSuggestions,
|
|
15
|
+
GlobalVersion,
|
|
16
16
|
} from '@theme/hooks/useDocs';
|
|
17
|
-
import {
|
|
17
|
+
import {
|
|
18
|
+
ThemeClassNames,
|
|
19
|
+
useDocsPreferredVersion,
|
|
20
|
+
} from '@docusaurus/theme-common';
|
|
21
|
+
|
|
22
|
+
import type {Props} from '@theme/DocVersionBanner';
|
|
23
|
+
import clsx from 'clsx';
|
|
24
|
+
import type {VersionBanner} from '@docusaurus/plugin-content-docs-types';
|
|
25
|
+
|
|
26
|
+
type BannerLabelComponentProps = {
|
|
27
|
+
siteTitle: string;
|
|
28
|
+
versionMetadata: Props['versionMetadata'];
|
|
29
|
+
};
|
|
18
30
|
|
|
19
31
|
function UnreleasedVersionLabel({
|
|
20
32
|
siteTitle,
|
|
21
|
-
|
|
22
|
-
}: {
|
|
23
|
-
siteTitle: string;
|
|
24
|
-
versionLabel: string;
|
|
25
|
-
}) {
|
|
33
|
+
versionMetadata,
|
|
34
|
+
}: BannerLabelComponentProps) {
|
|
26
35
|
return (
|
|
27
36
|
<Translate
|
|
28
37
|
id="theme.docs.versions.unreleasedVersionLabel"
|
|
29
38
|
description="The label used to tell the user that he's browsing an unreleased doc version"
|
|
30
39
|
values={{
|
|
31
40
|
siteTitle,
|
|
32
|
-
versionLabel: <b>{
|
|
41
|
+
versionLabel: <b>{versionMetadata.label}</b>,
|
|
33
42
|
}}>
|
|
34
43
|
{
|
|
35
44
|
'This is unreleased documentation for {siteTitle} {versionLabel} version.'
|
|
@@ -40,18 +49,15 @@ function UnreleasedVersionLabel({
|
|
|
40
49
|
|
|
41
50
|
function UnmaintainedVersionLabel({
|
|
42
51
|
siteTitle,
|
|
43
|
-
|
|
44
|
-
}: {
|
|
45
|
-
siteTitle: string;
|
|
46
|
-
versionLabel: string;
|
|
47
|
-
}) {
|
|
52
|
+
versionMetadata,
|
|
53
|
+
}: BannerLabelComponentProps) {
|
|
48
54
|
return (
|
|
49
55
|
<Translate
|
|
50
56
|
id="theme.docs.versions.unmaintainedVersionLabel"
|
|
51
57
|
description="The label used to tell the user that he's browsing an unmaintained doc version"
|
|
52
58
|
values={{
|
|
53
59
|
siteTitle,
|
|
54
|
-
versionLabel: <b>{
|
|
60
|
+
versionLabel: <b>{versionMetadata.label}</b>,
|
|
55
61
|
}}>
|
|
56
62
|
{
|
|
57
63
|
'This is documentation for {siteTitle} {versionLabel}, which is no longer actively maintained.'
|
|
@@ -60,6 +66,20 @@ function UnmaintainedVersionLabel({
|
|
|
60
66
|
);
|
|
61
67
|
}
|
|
62
68
|
|
|
69
|
+
const BannerLabelComponents: Record<
|
|
70
|
+
VersionBanner,
|
|
71
|
+
ComponentType<BannerLabelComponentProps>
|
|
72
|
+
> = {
|
|
73
|
+
unreleased: UnreleasedVersionLabel,
|
|
74
|
+
unmaintained: UnmaintainedVersionLabel,
|
|
75
|
+
};
|
|
76
|
+
|
|
77
|
+
function BannerLabel(props: BannerLabelComponentProps) {
|
|
78
|
+
const BannerLabelComponent =
|
|
79
|
+
BannerLabelComponents[props.versionMetadata.banner!];
|
|
80
|
+
return <BannerLabelComponent {...props} />;
|
|
81
|
+
}
|
|
82
|
+
|
|
63
83
|
function LatestVersionSuggestionLabel({
|
|
64
84
|
versionLabel,
|
|
65
85
|
to,
|
|
@@ -72,7 +92,7 @@ function LatestVersionSuggestionLabel({
|
|
|
72
92
|
return (
|
|
73
93
|
<Translate
|
|
74
94
|
id="theme.docs.versions.latestVersionSuggestionLabel"
|
|
75
|
-
description="The label
|
|
95
|
+
description="The label used to tell the user to check the latest version"
|
|
76
96
|
values={{
|
|
77
97
|
versionLabel,
|
|
78
98
|
latestVersionLink: (
|
|
@@ -94,27 +114,19 @@ function LatestVersionSuggestionLabel({
|
|
|
94
114
|
);
|
|
95
115
|
}
|
|
96
116
|
|
|
97
|
-
|
|
98
|
-
version.docs.find((doc) => doc.id === version.mainDocId);
|
|
99
|
-
|
|
100
|
-
function DocVersionSuggestions(): JSX.Element {
|
|
117
|
+
function DocVersionBannerEnabled({versionMetadata}: Props): JSX.Element {
|
|
101
118
|
const {
|
|
102
119
|
siteConfig: {title: siteTitle},
|
|
103
120
|
} = useDocusaurusContext();
|
|
104
|
-
const {pluginId} = useActivePlugin({failfast: true})
|
|
121
|
+
const {pluginId} = useActivePlugin({failfast: true})!;
|
|
105
122
|
|
|
106
|
-
const
|
|
123
|
+
const getVersionMainDoc = (version: GlobalVersion) =>
|
|
124
|
+
version.docs.find((doc) => doc.id === version.mainDocId)!;
|
|
107
125
|
|
|
108
|
-
const
|
|
109
|
-
const {
|
|
110
|
-
latestDocSuggestion,
|
|
111
|
-
latestVersionSuggestion,
|
|
112
|
-
} = useDocVersionSuggestions(pluginId);
|
|
126
|
+
const {savePreferredVersionName} = useDocsPreferredVersion(pluginId);
|
|
113
127
|
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
return <></>;
|
|
117
|
-
}
|
|
128
|
+
const {latestDocSuggestion, latestVersionSuggestion} =
|
|
129
|
+
useDocVersionSuggestions(pluginId);
|
|
118
130
|
|
|
119
131
|
// try to link to same doc in latest version (not always possible)
|
|
120
132
|
// fallback to main doc of latest version
|
|
@@ -122,19 +134,14 @@ function DocVersionSuggestions(): JSX.Element {
|
|
|
122
134
|
latestDocSuggestion ?? getVersionMainDoc(latestVersionSuggestion);
|
|
123
135
|
|
|
124
136
|
return (
|
|
125
|
-
<div
|
|
137
|
+
<div
|
|
138
|
+
className={clsx(
|
|
139
|
+
ThemeClassNames.docs.docVersionBanner,
|
|
140
|
+
'alert alert--warning margin-bottom--md',
|
|
141
|
+
)}
|
|
142
|
+
role="alert">
|
|
126
143
|
<div>
|
|
127
|
-
{
|
|
128
|
-
<UnreleasedVersionLabel
|
|
129
|
-
siteTitle={siteTitle}
|
|
130
|
-
versionLabel={activeVersion.label}
|
|
131
|
-
/>
|
|
132
|
-
) : (
|
|
133
|
-
<UnmaintainedVersionLabel
|
|
134
|
-
siteTitle={siteTitle}
|
|
135
|
-
versionLabel={activeVersion.label}
|
|
136
|
-
/>
|
|
137
|
-
)}
|
|
144
|
+
<BannerLabel siteTitle={siteTitle} versionMetadata={versionMetadata} />
|
|
138
145
|
</div>
|
|
139
146
|
<div className="margin-top--md">
|
|
140
147
|
<LatestVersionSuggestionLabel
|
|
@@ -147,4 +154,11 @@ function DocVersionSuggestions(): JSX.Element {
|
|
|
147
154
|
);
|
|
148
155
|
}
|
|
149
156
|
|
|
150
|
-
|
|
157
|
+
function DocVersionBanner({versionMetadata}: Props): JSX.Element {
|
|
158
|
+
if (versionMetadata.banner) {
|
|
159
|
+
return <DocVersionBannerEnabled versionMetadata={versionMetadata} />;
|
|
160
|
+
}
|
|
161
|
+
return <></>;
|
|
162
|
+
}
|
|
163
|
+
|
|
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"
|
|
@@ -11,8 +11,10 @@ import clsx from 'clsx';
|
|
|
11
11
|
import Link from '@docusaurus/Link';
|
|
12
12
|
import {FooterLinkItem, useThemeConfig} from '@docusaurus/theme-common';
|
|
13
13
|
import useBaseUrl from '@docusaurus/useBaseUrl';
|
|
14
|
+
import isInternalUrl from '@docusaurus/isInternalUrl';
|
|
14
15
|
import styles from './styles.module.css';
|
|
15
16
|
import ThemedImage, {Props as ThemedImageProps} from '@theme/ThemedImage';
|
|
17
|
+
import IconExternalLink from '@theme/IconExternalLink';
|
|
16
18
|
|
|
17
19
|
function FooterLink({
|
|
18
20
|
to,
|
|
@@ -35,7 +37,14 @@ function FooterLink({
|
|
|
35
37
|
to: toUrl,
|
|
36
38
|
})}
|
|
37
39
|
{...props}>
|
|
38
|
-
{
|
|
40
|
+
{href && !isInternalUrl(href) ? (
|
|
41
|
+
<span>
|
|
42
|
+
{label}
|
|
43
|
+
<IconExternalLink />
|
|
44
|
+
</span>
|
|
45
|
+
) : (
|
|
46
|
+
label
|
|
47
|
+
)}
|
|
39
48
|
</Link>
|
|
40
49
|
);
|
|
41
50
|
}
|
|
@@ -43,8 +52,16 @@ function FooterLink({
|
|
|
43
52
|
const FooterLogo = ({
|
|
44
53
|
sources,
|
|
45
54
|
alt,
|
|
46
|
-
|
|
47
|
-
|
|
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
|
+
/>
|
|
48
65
|
);
|
|
49
66
|
|
|
50
67
|
function Footer(): JSX.Element | null {
|
|
@@ -106,7 +123,12 @@ function Footer(): JSX.Element | null {
|
|
|
106
123
|
<div className="margin-bottom--sm">
|
|
107
124
|
{logo.href ? (
|
|
108
125
|
<Link href={logo.href} className={styles.footerLogoLink}>
|
|
109
|
-
<FooterLogo
|
|
126
|
+
<FooterLogo
|
|
127
|
+
alt={logo.alt}
|
|
128
|
+
sources={sources}
|
|
129
|
+
width={logo.width}
|
|
130
|
+
height={logo.height}
|
|
131
|
+
/>
|
|
110
132
|
</Link>
|
|
111
133
|
) : (
|
|
112
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;
|