@docusaurus/theme-classic 2.0.0-beta.17 → 2.0.0-beta.18
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/getSwizzleConfig.js +113 -2
- package/lib/index.js +7 -12
- package/lib/theme-classic.d.ts +286 -60
- package/lib/translations.js +12 -2
- package/lib/validateThemeConfig.js +1 -1
- package/lib-next/theme/BackToTopButton/index.js +1 -3
- package/lib-next/theme/BlogArchivePage/index.js +14 -10
- package/lib-next/theme/BlogListPage/index.js +34 -13
- package/lib-next/theme/BlogPostItem/index.js +6 -6
- package/lib-next/theme/BlogPostPage/index.js +56 -45
- package/lib-next/theme/BlogTagsListPage/index.js +16 -12
- package/lib-next/theme/BlogTagsPostsPage/index.js +40 -33
- package/lib-next/theme/CodeBlock/CopyButton/index.js +60 -0
- package/lib-next/theme/CodeBlock/CopyButton/styles.module.css +66 -0
- package/lib-next/theme/CodeBlock/index.js +4 -36
- package/lib-next/theme/CodeBlock/styles.module.css +2 -22
- package/lib-next/theme/ColorModeToggle/index.js +36 -57
- package/lib-next/theme/ColorModeToggle/styles.module.css +8 -24
- package/lib-next/theme/DocBreadcrumbs/index.js +28 -11
- package/lib-next/theme/DocBreadcrumbs/styles.module.css +2 -17
- package/lib-next/theme/DocCard/index.js +17 -15
- package/lib-next/theme/DocCard/styles.module.css +8 -17
- package/lib-next/theme/DocCardList/index.js +15 -3
- package/lib-next/theme/DocCategoryGeneratedIndexPage/index.js +27 -6
- package/lib-next/theme/DocItem/index.js +84 -66
- package/lib-next/theme/DocPage/index.js +88 -89
- package/lib-next/theme/DocPage/styles.module.css +0 -4
- package/lib-next/theme/DocSidebar/Desktop/CollapseButton/index.js +34 -0
- package/lib-next/theme/DocSidebar/Desktop/CollapseButton/styles.module.css +44 -0
- package/lib-next/theme/DocSidebar/Desktop/Content/index.js +46 -0
- package/lib-next/theme/DocSidebar/Desktop/Content/styles.module.css +17 -0
- package/lib-next/theme/DocSidebar/Desktop/index.js +34 -0
- package/lib-next/theme/DocSidebar/Desktop/styles.module.css +50 -0
- package/lib-next/theme/DocSidebar/Mobile/index.js +49 -0
- package/lib-next/theme/DocSidebar/index.js +6 -113
- package/lib-next/theme/DocSidebarItem/index.js +14 -13
- package/lib-next/theme/DocSidebarItem/styles.module.css +4 -0
- package/lib-next/theme/DocTagDocListPage/index.js +38 -31
- package/lib-next/theme/DocTagsListPage/index.js +21 -16
- package/lib-next/theme/Footer/Copyright/index.js +18 -0
- package/lib-next/theme/Footer/Layout/index.js +26 -0
- package/lib-next/theme/Footer/LinkItem/index.js +33 -0
- package/lib-next/theme/Footer/Links/MultiColumn/index.js +47 -0
- package/lib-next/theme/Footer/Links/Simple/index.js +41 -0
- package/lib-next/theme/Footer/Links/index.js +17 -0
- package/lib-next/theme/Footer/Logo/index.js +38 -0
- package/lib-next/theme/Footer/{styles.module.css → Logo/styles.module.css} +0 -0
- package/lib-next/theme/Footer/index.js +11 -163
- package/lib-next/theme/Heading/index.js +6 -4
- package/lib-next/theme/IconExternalLink/styles.module.css +0 -2
- package/lib-next/theme/Layout/index.js +15 -10
- package/lib-next/theme/LayoutProviders/index.js +5 -4
- package/lib-next/theme/MDXComponents/A.js +11 -0
- package/lib-next/theme/MDXComponents/Code.js +28 -0
- package/lib-next/theme/MDXComponents/Details.js +20 -0
- package/lib-next/theme/MDXComponents/Head.js +26 -0
- package/lib-next/theme/MDXComponents/Heading.js +11 -0
- package/lib-next/theme/MDXComponents/Img.js +24 -0
- package/lib-next/theme/MDXComponents/Img.module.css +10 -0
- package/lib-next/theme/MDXComponents/Pre.js +18 -0
- package/lib-next/theme/MDXComponents/Ul.js +23 -0
- package/{src/theme/MDXComponents/styles.css → lib-next/theme/MDXComponents/Ul.module.css} +1 -5
- package/lib-next/theme/MDXComponents/index.js +22 -71
- package/lib-next/theme/MDXContent/index.js +12 -0
- package/lib-next/theme/MDXPage/index.js +33 -28
- package/lib-next/theme/Navbar/ColorModeToggle/index.js +25 -0
- package/lib-next/theme/Navbar/Content/index.js +70 -0
- package/lib-next/theme/Navbar/Content/styles.module.css +15 -0
- package/lib-next/theme/Navbar/Layout/index.js +54 -0
- package/{src/theme/Navbar → lib-next/theme/Navbar/Layout}/styles.module.css +0 -13
- package/lib-next/theme/Navbar/Logo/index.js +17 -0
- package/lib-next/theme/Navbar/MobileSidebar/Header/index.js +33 -0
- package/lib-next/theme/Navbar/MobileSidebar/Layout/index.js +28 -0
- package/lib-next/theme/Navbar/MobileSidebar/PrimaryMenu/index.js +33 -0
- package/lib-next/theme/Navbar/MobileSidebar/SecondaryMenu/index.js +36 -0
- package/lib-next/theme/Navbar/MobileSidebar/Toggle/index.js +23 -0
- package/lib-next/theme/Navbar/MobileSidebar/index.js +31 -0
- package/lib-next/theme/Navbar/index.js +6 -271
- package/lib-next/theme/NavbarItem/DefaultNavbarItem.js +2 -6
- package/lib-next/theme/NavbarItem/DropdownNavbarItem.js +10 -2
- package/lib-next/theme/NavbarItem/NavbarNavLink.js +8 -12
- package/lib-next/theme/NotFound.js +38 -33
- package/lib-next/theme/{LayoutHead → SiteMetadata}/index.js +11 -26
- package/lib-next/theme/TOCCollapsible/index.js +1 -3
- package/lib-next/theme/Tabs/__tests__/index.test.js +5 -5
- package/lib-next/theme/Tabs/index.js +2 -2
- package/lib-next/theme/Tag/index.js +4 -4
- package/lib-next/theme/ThemedImage/index.js +3 -3
- package/package.json +17 -17
- package/src/getSwizzleConfig.ts +122 -1
- package/src/index.ts +10 -12
- package/src/theme/BackToTopButton/index.tsx +1 -3
- package/src/theme/BlogArchivePage/index.tsx +18 -17
- package/src/theme/BlogLayout/index.tsx +1 -1
- package/src/theme/BlogListPage/index.tsx +32 -13
- package/src/theme/BlogPostItem/index.tsx +6 -6
- package/src/theme/BlogPostPage/index.tsx +55 -48
- package/src/theme/BlogTagsListPage/index.tsx +16 -12
- package/src/theme/BlogTagsPostsPage/index.tsx +39 -32
- package/src/theme/CodeBlock/CopyButton/index.tsx +66 -0
- package/src/theme/CodeBlock/CopyButton/styles.module.css +66 -0
- package/src/theme/CodeBlock/index.tsx +6 -38
- package/src/theme/CodeBlock/styles.module.css +2 -22
- package/src/theme/ColorModeToggle/index.tsx +36 -61
- package/src/theme/ColorModeToggle/styles.module.css +8 -24
- package/src/theme/DocBreadcrumbs/index.tsx +29 -10
- package/src/theme/DocBreadcrumbs/styles.module.css +2 -17
- package/src/theme/DocCard/index.tsx +24 -17
- package/src/theme/DocCard/styles.module.css +8 -17
- package/src/theme/DocCardList/index.tsx +14 -3
- package/src/theme/DocCategoryGeneratedIndexPage/index.tsx +31 -4
- package/src/theme/DocItem/index.tsx +71 -55
- package/src/theme/DocPage/index.tsx +89 -90
- package/src/theme/DocPage/styles.module.css +0 -4
- package/src/theme/DocSidebar/Desktop/CollapseButton/index.tsx +38 -0
- package/src/theme/DocSidebar/Desktop/CollapseButton/styles.module.css +44 -0
- package/src/theme/DocSidebar/Desktop/Content/index.tsx +55 -0
- package/src/theme/DocSidebar/Desktop/Content/styles.module.css +17 -0
- package/src/theme/DocSidebar/Desktop/index.tsx +38 -0
- package/src/theme/DocSidebar/Desktop/styles.module.css +50 -0
- package/src/theme/DocSidebar/Mobile/index.tsx +54 -0
- package/src/theme/DocSidebar/index.tsx +6 -121
- package/src/theme/DocSidebarItem/index.tsx +15 -16
- package/src/theme/DocSidebarItem/styles.module.css +4 -0
- package/src/theme/DocTagDocListPage/index.tsx +38 -30
- package/src/theme/DocTagsListPage/index.tsx +21 -16
- package/src/theme/DocVersionBanner/index.tsx +3 -4
- package/src/theme/Footer/Copyright/index.tsx +20 -0
- package/src/theme/Footer/Layout/index.tsx +34 -0
- package/src/theme/Footer/LinkItem/index.tsx +36 -0
- package/src/theme/Footer/Links/MultiColumn/index.tsx +51 -0
- package/src/theme/Footer/Links/Simple/index.tsx +42 -0
- package/src/theme/Footer/Links/index.tsx +21 -0
- package/src/theme/Footer/Logo/index.tsx +41 -0
- package/src/theme/Footer/{styles.module.css → Logo/styles.module.css} +0 -0
- package/src/theme/Footer/index.tsx +12 -186
- package/src/theme/Heading/index.tsx +6 -4
- package/src/theme/IconExternalLink/styles.module.css +0 -2
- package/src/theme/Layout/index.tsx +15 -10
- package/src/theme/LayoutProviders/index.tsx +5 -4
- package/src/theme/MDXComponents/A.tsx +14 -0
- package/src/theme/MDXComponents/Code.tsx +37 -0
- package/src/theme/MDXComponents/Details.tsx +26 -0
- package/src/theme/MDXComponents/Head.tsx +29 -0
- package/src/theme/MDXComponents/Heading.tsx +14 -0
- package/src/theme/MDXComponents/Img.module.css +10 -0
- package/src/theme/MDXComponents/Img.tsx +26 -0
- package/src/theme/MDXComponents/Pre.tsx +22 -0
- package/{lib-next/theme/MDXComponents/styles.css → src/theme/MDXComponents/Ul.module.css} +1 -5
- package/src/theme/MDXComponents/Ul.tsx +28 -0
- package/src/theme/MDXComponents/index.tsx +23 -80
- package/src/theme/MDXContent/index.tsx +15 -0
- package/src/theme/MDXPage/index.tsx +33 -28
- package/src/theme/Navbar/ColorModeToggle/index.tsx +30 -0
- package/src/theme/Navbar/Content/index.tsx +81 -0
- package/src/theme/Navbar/Content/styles.module.css +15 -0
- package/src/theme/Navbar/Layout/index.tsx +57 -0
- package/{lib-next/theme/Navbar → src/theme/Navbar/Layout}/styles.module.css +0 -13
- package/src/theme/Navbar/Logo/index.tsx +19 -0
- package/src/theme/Navbar/MobileSidebar/Header/index.tsx +34 -0
- package/src/theme/Navbar/MobileSidebar/Layout/index.tsx +31 -0
- package/src/theme/Navbar/MobileSidebar/PrimaryMenu/index.tsx +38 -0
- package/src/theme/Navbar/MobileSidebar/SecondaryMenu/index.tsx +38 -0
- package/src/theme/Navbar/MobileSidebar/Toggle/index.tsx +25 -0
- package/src/theme/Navbar/MobileSidebar/index.tsx +33 -0
- package/src/theme/Navbar/index.tsx +6 -286
- package/src/theme/NavbarItem/DefaultNavbarItem.tsx +2 -2
- package/src/theme/NavbarItem/DropdownNavbarItem.tsx +11 -2
- package/src/theme/NavbarItem/LocaleDropdownNavbarItem/index.tsx +1 -1
- package/src/theme/NavbarItem/NavbarNavLink.tsx +3 -7
- package/src/theme/NavbarItem/index.tsx +3 -4
- package/src/theme/NotFound.tsx +38 -33
- package/src/theme/{LayoutHead → SiteMetadata}/index.tsx +11 -25
- package/src/theme/TOCCollapsible/index.tsx +1 -3
- package/src/theme/Tabs/index.tsx +5 -6
- package/src/theme/Tag/index.tsx +4 -4
- package/src/theme/ThemedImage/index.tsx +4 -3
- package/src/theme-classic.d.ts +286 -60
- package/src/translations.ts +12 -6
- package/src/validateThemeConfig.ts +6 -6
- package/lib-next/theme/DocSidebar/styles.module.css +0 -107
- package/lib-next/theme/Seo/index.js +0 -40
- package/src/theme/DocSidebar/styles.module.css +0 -107
- package/src/theme/Seo/index.tsx +0 -49
|
@@ -7,7 +7,6 @@
|
|
|
7
7
|
|
|
8
8
|
.codeBlockContainer {
|
|
9
9
|
margin-bottom: var(--ifm-leading);
|
|
10
|
-
border-radius: var(--ifm-global-radius);
|
|
11
10
|
box-shadow: var(--ifm-global-shadow-lw);
|
|
12
11
|
}
|
|
13
12
|
|
|
@@ -15,6 +14,7 @@
|
|
|
15
14
|
position: relative;
|
|
16
15
|
/* rtl:ignore */
|
|
17
16
|
direction: ltr;
|
|
17
|
+
border-radius: var(--ifm-global-radius);
|
|
18
18
|
}
|
|
19
19
|
|
|
20
20
|
.codeBlockTitle {
|
|
@@ -29,7 +29,7 @@
|
|
|
29
29
|
.codeBlock {
|
|
30
30
|
margin: 0;
|
|
31
31
|
padding: 0;
|
|
32
|
-
|
|
32
|
+
background-color: inherit;
|
|
33
33
|
}
|
|
34
34
|
|
|
35
35
|
.codeBlockTitle + .codeBlockContent .codeBlock {
|
|
@@ -39,26 +39,6 @@
|
|
|
39
39
|
|
|
40
40
|
.codeBlockStandalone {
|
|
41
41
|
padding: 0;
|
|
42
|
-
border-radius: var(--ifm-global-radius);
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
.copyButton {
|
|
46
|
-
background: rgb(0 0 0 / 30%);
|
|
47
|
-
border-radius: var(--ifm-global-radius);
|
|
48
|
-
color: var(--ifm-color-white);
|
|
49
|
-
opacity: 0;
|
|
50
|
-
user-select: none;
|
|
51
|
-
padding: 0.4rem 0.5rem;
|
|
52
|
-
position: absolute;
|
|
53
|
-
right: calc(var(--ifm-pre-padding) / 2);
|
|
54
|
-
top: calc(var(--ifm-pre-padding) / 2);
|
|
55
|
-
transition: opacity 200ms ease-in-out;
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
.copyButton:focus,
|
|
59
|
-
.codeBlockContent:hover > .copyButton,
|
|
60
|
-
.codeBlockTitle:hover + .codeBlockContent .copyButton {
|
|
61
|
-
opacity: 1;
|
|
62
42
|
}
|
|
63
43
|
|
|
64
44
|
.codeBlockLines {
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* This source code is licensed under the MIT license found in the
|
|
5
5
|
* LICENSE file in the root directory of this source tree.
|
|
6
6
|
*/
|
|
7
|
-
import React
|
|
7
|
+
import React from 'react';
|
|
8
8
|
import useIsBrowser from '@docusaurus/useIsBrowser';
|
|
9
9
|
import {translate} from '@docusaurus/Translate';
|
|
10
10
|
import IconLightMode from '@theme/IconLightMode';
|
|
@@ -12,70 +12,49 @@ import IconDarkMode from '@theme/IconDarkMode';
|
|
|
12
12
|
import clsx from 'clsx';
|
|
13
13
|
import styles from './styles.module.css';
|
|
14
14
|
|
|
15
|
-
function ColorModeToggle({className,
|
|
15
|
+
function ColorModeToggle({className, value, onChange}) {
|
|
16
16
|
const isBrowser = useIsBrowser();
|
|
17
|
-
const
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
17
|
+
const title = translate(
|
|
18
|
+
{
|
|
19
|
+
message: 'Switch between dark and light mode (currently {mode})',
|
|
20
|
+
id: 'theme.colorToggle.ariaLabel',
|
|
21
|
+
description: 'The ARIA label for the navbar color mode toggle',
|
|
22
|
+
},
|
|
23
|
+
{
|
|
24
|
+
mode:
|
|
25
|
+
value === 'dark'
|
|
26
|
+
? translate({
|
|
27
|
+
message: 'dark mode',
|
|
28
|
+
id: 'theme.colorToggle.ariaLabel.mode.dark',
|
|
29
|
+
description: 'The name for the dark color mode',
|
|
30
|
+
})
|
|
31
|
+
: translate({
|
|
32
|
+
message: 'light mode',
|
|
33
|
+
id: 'theme.colorToggle.ariaLabel.mode.light',
|
|
34
|
+
description: 'The name for the light color mode',
|
|
35
|
+
}),
|
|
36
|
+
},
|
|
37
|
+
);
|
|
23
38
|
return (
|
|
24
|
-
<div
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
39
|
+
<div className={clsx(styles.toggle, className)}>
|
|
40
|
+
<button
|
|
41
|
+
className={clsx(
|
|
42
|
+
'clean-btn',
|
|
43
|
+
styles.toggleButton,
|
|
44
|
+
!isBrowser && styles.toggleButtonDisabled,
|
|
45
|
+
)}
|
|
46
|
+
type="button"
|
|
47
|
+
onClick={() => onChange(value === 'dark' ? 'light' : 'dark')}
|
|
48
|
+
disabled={!isBrowser}
|
|
49
|
+
title={title}
|
|
50
|
+
aria-label={title}>
|
|
36
51
|
<IconLightMode
|
|
37
52
|
className={clsx(styles.toggleIcon, styles.lightToggleIcon)}
|
|
38
53
|
/>
|
|
39
54
|
<IconDarkMode
|
|
40
55
|
className={clsx(styles.toggleIcon, styles.darkToggleIcon)}
|
|
41
56
|
/>
|
|
42
|
-
</
|
|
43
|
-
|
|
44
|
-
<input
|
|
45
|
-
ref={inputRef}
|
|
46
|
-
checked={checked}
|
|
47
|
-
type="checkbox"
|
|
48
|
-
className={styles.toggleScreenReader}
|
|
49
|
-
aria-label={translate(
|
|
50
|
-
{
|
|
51
|
-
message: 'Switch between dark and light mode (currently {mode})',
|
|
52
|
-
id: 'theme.colorToggle.ariaLabel',
|
|
53
|
-
description: 'The ARIA label for the navbar color mode toggle',
|
|
54
|
-
},
|
|
55
|
-
{
|
|
56
|
-
mode: checked
|
|
57
|
-
? translate({
|
|
58
|
-
message: 'dark mode',
|
|
59
|
-
id: 'theme.colorToggle.ariaLabel.mode.dark',
|
|
60
|
-
description: 'The name for the dark color mode',
|
|
61
|
-
})
|
|
62
|
-
: translate({
|
|
63
|
-
message: 'light mode',
|
|
64
|
-
id: 'theme.colorToggle.ariaLabel.mode.light',
|
|
65
|
-
description: 'The name for the light color mode',
|
|
66
|
-
}),
|
|
67
|
-
},
|
|
68
|
-
)}
|
|
69
|
-
onChange={onChange}
|
|
70
|
-
onClick={() => setChecked(!checked)}
|
|
71
|
-
onFocus={() => setFocused(true)}
|
|
72
|
-
onBlur={() => setFocused(false)}
|
|
73
|
-
onKeyDown={(e) => {
|
|
74
|
-
if (e.key === 'Enter') {
|
|
75
|
-
inputRef.current?.click();
|
|
76
|
-
}
|
|
77
|
-
}}
|
|
78
|
-
/>
|
|
57
|
+
</button>
|
|
79
58
|
</div>
|
|
80
59
|
);
|
|
81
60
|
}
|
|
@@ -6,28 +6,11 @@
|
|
|
6
6
|
*/
|
|
7
7
|
|
|
8
8
|
.toggle {
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
height: 32px;
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
.toggleScreenReader {
|
|
15
|
-
border: 0;
|
|
16
|
-
clip: rect(0 0 0 0);
|
|
17
|
-
height: 1px;
|
|
18
|
-
margin: -1px;
|
|
19
|
-
overflow: hidden;
|
|
20
|
-
position: absolute;
|
|
21
|
-
width: 1px;
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
.toggleDisabled {
|
|
25
|
-
cursor: not-allowed;
|
|
9
|
+
width: 2rem;
|
|
10
|
+
height: 2rem;
|
|
26
11
|
}
|
|
27
12
|
|
|
28
13
|
.toggleButton {
|
|
29
|
-
cursor: pointer;
|
|
30
|
-
user-select: none;
|
|
31
14
|
-webkit-tap-highlight-color: transparent;
|
|
32
15
|
align-items: center;
|
|
33
16
|
display: flex;
|
|
@@ -35,17 +18,18 @@
|
|
|
35
18
|
width: 100%;
|
|
36
19
|
height: 100%;
|
|
37
20
|
border-radius: 50%;
|
|
21
|
+
transition: background var(--ifm-transition-fast);
|
|
38
22
|
}
|
|
39
23
|
|
|
40
24
|
.toggleButton:hover {
|
|
41
|
-
background-color
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
[data-theme='dark'] .toggleButton:hover {
|
|
45
|
-
background-color: #ffffff20;
|
|
25
|
+
background: var(--ifm-color-emphasis-200);
|
|
46
26
|
}
|
|
47
27
|
|
|
48
28
|
[data-theme='light'] .darkToggleIcon,
|
|
49
29
|
[data-theme='dark'] .lightToggleIcon {
|
|
50
30
|
display: none;
|
|
51
31
|
}
|
|
32
|
+
|
|
33
|
+
.toggleButtonDisabled {
|
|
34
|
+
cursor: not-allowed;
|
|
35
|
+
}
|
|
@@ -16,23 +16,29 @@ import Link from '@docusaurus/Link';
|
|
|
16
16
|
import useBaseUrl from '@docusaurus/useBaseUrl'; // TODO move to design system folder
|
|
17
17
|
|
|
18
18
|
function BreadcrumbsItemLink({children, href}) {
|
|
19
|
-
const className =
|
|
19
|
+
const className = 'breadcrumbs__link';
|
|
20
20
|
return href ? (
|
|
21
|
-
<Link className={className} href={href}>
|
|
22
|
-
{children}
|
|
21
|
+
<Link className={className} href={href} itemProp="item">
|
|
22
|
+
<span itemProp="name">{children}</span>
|
|
23
23
|
</Link>
|
|
24
24
|
) : (
|
|
25
|
-
<span className={className}>
|
|
25
|
+
<span className={className} itemProp="item name">
|
|
26
|
+
{children}
|
|
27
|
+
</span>
|
|
26
28
|
);
|
|
27
29
|
} // TODO move to design system folder
|
|
28
30
|
|
|
29
|
-
function BreadcrumbsItem({children, active}) {
|
|
31
|
+
function BreadcrumbsItem({children, active, index}) {
|
|
30
32
|
return (
|
|
31
33
|
<li
|
|
34
|
+
itemScope
|
|
35
|
+
itemProp="itemListElement"
|
|
36
|
+
itemType="https://schema.org/ListItem"
|
|
32
37
|
className={clsx('breadcrumbs__item', {
|
|
33
38
|
'breadcrumbs__item--active': active,
|
|
34
39
|
})}>
|
|
35
40
|
{children}
|
|
41
|
+
<meta itemProp="position" content={String(index + 1)} />
|
|
36
42
|
</li>
|
|
37
43
|
);
|
|
38
44
|
}
|
|
@@ -40,9 +46,13 @@ function BreadcrumbsItem({children, active}) {
|
|
|
40
46
|
function HomeBreadcrumbItem() {
|
|
41
47
|
const homeHref = useBaseUrl('/');
|
|
42
48
|
return (
|
|
43
|
-
<
|
|
44
|
-
<
|
|
45
|
-
|
|
49
|
+
<li className="breadcrumbs__item">
|
|
50
|
+
<Link
|
|
51
|
+
className={clsx('breadcrumbs__link', styles.breadcrumbsItemLink)}
|
|
52
|
+
href={homeHref}>
|
|
53
|
+
🏠
|
|
54
|
+
</Link>
|
|
55
|
+
</li>
|
|
46
56
|
);
|
|
47
57
|
}
|
|
48
58
|
|
|
@@ -61,11 +71,18 @@ export default function DocBreadcrumbs() {
|
|
|
61
71
|
styles.breadcrumbsContainer,
|
|
62
72
|
)}
|
|
63
73
|
aria-label="breadcrumbs">
|
|
64
|
-
<ul
|
|
74
|
+
<ul
|
|
75
|
+
className="breadcrumbs"
|
|
76
|
+
itemScope
|
|
77
|
+
itemType="https://schema.org/BreadcrumbList">
|
|
65
78
|
{homePageRoute && <HomeBreadcrumbItem />}
|
|
66
79
|
{breadcrumbs.map((item, idx) => (
|
|
67
|
-
<BreadcrumbsItem
|
|
68
|
-
|
|
80
|
+
<BreadcrumbsItem
|
|
81
|
+
key={idx}
|
|
82
|
+
active={idx === breadcrumbs.length - 1}
|
|
83
|
+
index={idx}>
|
|
84
|
+
<BreadcrumbsItemLink
|
|
85
|
+
href={idx < breadcrumbs.length - 1 ? item.href : undefined}>
|
|
69
86
|
{item.label}
|
|
70
87
|
</BreadcrumbsItemLink>
|
|
71
88
|
</BreadcrumbsItem>
|
|
@@ -6,21 +6,6 @@
|
|
|
6
6
|
*/
|
|
7
7
|
|
|
8
8
|
.breadcrumbsContainer {
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
.breadcrumbsItemLink {
|
|
13
|
-
--ifm-breadcrumb-size-multiplier: 0.7 !important;
|
|
14
|
-
margin-bottom: 0.4rem;
|
|
15
|
-
background: var(--ifm-color-gray-100);
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
html[data-theme='dark'] .breadcrumbsItemLink {
|
|
19
|
-
background-color: var(--ifm-color-gray-900);
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
@media (min-width: 997px) {
|
|
23
|
-
.breadcrumbsItemLink {
|
|
24
|
-
--ifm-breadcrumb-size-multiplier: 0.8;
|
|
25
|
-
}
|
|
9
|
+
--ifm-breadcrumb-size-multiplier: 0.8;
|
|
10
|
+
margin-bottom: 0.8rem;
|
|
26
11
|
}
|
|
@@ -13,17 +13,12 @@ import isInternalUrl from '@docusaurus/isInternalUrl';
|
|
|
13
13
|
import {translate} from '@docusaurus/Translate';
|
|
14
14
|
|
|
15
15
|
function CardContainer({href, children}) {
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
);
|
|
21
|
-
return href ? (
|
|
22
|
-
<Link href={href} className={className}>
|
|
16
|
+
return (
|
|
17
|
+
<Link
|
|
18
|
+
href={href}
|
|
19
|
+
className={clsx('card padding--lg', styles.cardContainer)}>
|
|
23
20
|
{children}
|
|
24
21
|
</Link>
|
|
25
|
-
) : (
|
|
26
|
-
<div className={className}>{children}</div>
|
|
27
22
|
);
|
|
28
23
|
}
|
|
29
24
|
|
|
@@ -33,17 +28,24 @@ function CardLayout({href, icon, title, description}) {
|
|
|
33
28
|
<h2 className={clsx('text--truncate', styles.cardTitle)} title={title}>
|
|
34
29
|
{icon} {title}
|
|
35
30
|
</h2>
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
31
|
+
{description && (
|
|
32
|
+
<p
|
|
33
|
+
className={clsx('text--truncate', styles.cardDescription)}
|
|
34
|
+
title={description}>
|
|
35
|
+
{description}
|
|
36
|
+
</p>
|
|
37
|
+
)}
|
|
41
38
|
</CardContainer>
|
|
42
39
|
);
|
|
43
40
|
}
|
|
44
41
|
|
|
45
42
|
function CardCategory({item}) {
|
|
46
|
-
const href = findFirstCategoryLink(item);
|
|
43
|
+
const href = findFirstCategoryLink(item); // Unexpected: categories that don't have a link have been filtered upfront
|
|
44
|
+
|
|
45
|
+
if (!href) {
|
|
46
|
+
return null;
|
|
47
|
+
}
|
|
48
|
+
|
|
47
49
|
return (
|
|
48
50
|
<CardLayout
|
|
49
51
|
href={href}
|
|
@@ -6,38 +6,29 @@
|
|
|
6
6
|
*/
|
|
7
7
|
|
|
8
8
|
.cardContainer {
|
|
9
|
-
height: 8rem;
|
|
10
|
-
color: var(--ifm-color-emphasis-800);
|
|
11
9
|
--ifm-link-color: var(--ifm-color-emphasis-800);
|
|
12
|
-
--ifm-link-hover-color: var(--ifm-color-emphasis-
|
|
10
|
+
--ifm-link-hover-color: var(--ifm-color-emphasis-700);
|
|
13
11
|
--ifm-link-hover-decoration: none;
|
|
14
12
|
|
|
15
|
-
/* box-shadow: var(--ifm-global-shadow-lw); */
|
|
16
13
|
box-shadow: 0 1.5px 3px 0 rgb(0 0 0 / 15%);
|
|
17
14
|
border: 1px solid var(--ifm-color-emphasis-200);
|
|
18
|
-
transition:
|
|
19
|
-
|
|
15
|
+
transition: all var(--ifm-transition-fast) ease;
|
|
16
|
+
transition-property: border, box-shadow;
|
|
20
17
|
}
|
|
21
18
|
|
|
22
|
-
.cardContainer
|
|
23
|
-
|
|
24
|
-
box-shadow: 0
|
|
19
|
+
.cardContainer:hover {
|
|
20
|
+
border-color: var(--ifm-color-primary);
|
|
21
|
+
box-shadow: 0 3px 6px 0 rgb(0 0 0 / 20%);
|
|
25
22
|
}
|
|
26
23
|
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
.cardContainer:not(.cardContainerLink) {
|
|
32
|
-
cursor: not-allowed;
|
|
24
|
+
.cardContainer *:last-child {
|
|
25
|
+
margin-bottom: 0;
|
|
33
26
|
}
|
|
34
27
|
|
|
35
28
|
.cardTitle {
|
|
36
29
|
font-size: 1.2rem;
|
|
37
|
-
min-height: 1.2rem;
|
|
38
30
|
}
|
|
39
31
|
|
|
40
32
|
.cardDescription {
|
|
41
33
|
font-size: 0.8rem;
|
|
42
|
-
min-height: 0.8rem;
|
|
43
34
|
}
|
|
@@ -6,12 +6,24 @@
|
|
|
6
6
|
*/
|
|
7
7
|
import React from 'react';
|
|
8
8
|
import DocCard from '@theme/DocCard';
|
|
9
|
+
import {findFirstCategoryLink} from '@docusaurus/theme-common'; // Filter categories that don't have a link.
|
|
10
|
+
|
|
11
|
+
function filterItems(items) {
|
|
12
|
+
return items.filter((item) => {
|
|
13
|
+
if (item.type === 'category') {
|
|
14
|
+
return !!findFirstCategoryLink(item);
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
return true;
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
|
|
9
21
|
export default function DocCardList({items}) {
|
|
10
22
|
return (
|
|
11
23
|
<div className="row">
|
|
12
|
-
{items.map((item, index) => (
|
|
13
|
-
<article key={index} className="col col--6">
|
|
14
|
-
<DocCard item={item} />
|
|
24
|
+
{filterItems(items).map((item, index) => (
|
|
25
|
+
<article key={index} className="col col--6 margin-bottom--lg">
|
|
26
|
+
<DocCard key={index} item={item} />
|
|
15
27
|
</article>
|
|
16
28
|
))}
|
|
17
29
|
</div>
|
|
@@ -5,23 +5,35 @@
|
|
|
5
5
|
* LICENSE file in the root directory of this source tree.
|
|
6
6
|
*/
|
|
7
7
|
import React from 'react';
|
|
8
|
-
import {
|
|
8
|
+
import {
|
|
9
|
+
PageMetadata,
|
|
10
|
+
useCurrentSidebarCategory,
|
|
11
|
+
} from '@docusaurus/theme-common';
|
|
9
12
|
import DocCardList from '@theme/DocCardList';
|
|
10
13
|
import DocPaginator from '@theme/DocPaginator';
|
|
11
|
-
import Seo from '@theme/Seo';
|
|
12
14
|
import DocVersionBanner from '@theme/DocVersionBanner';
|
|
13
15
|
import DocVersionBadge from '@theme/DocVersionBadge';
|
|
14
16
|
import DocBreadcrumbs from '@theme/DocBreadcrumbs';
|
|
15
17
|
import Heading from '@theme/Heading';
|
|
16
18
|
import useBaseUrl from '@docusaurus/useBaseUrl';
|
|
17
19
|
import styles from './styles.module.css';
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
20
|
+
|
|
21
|
+
function DocCategoryGeneratedIndexPageMetadata({categoryGeneratedIndex}) {
|
|
22
|
+
return (
|
|
23
|
+
<PageMetadata
|
|
24
|
+
title={categoryGeneratedIndex.title}
|
|
25
|
+
description={categoryGeneratedIndex.description}
|
|
26
|
+
keywords={categoryGeneratedIndex.keywords} // TODO `require` this?
|
|
27
|
+
image={useBaseUrl(categoryGeneratedIndex.image)}
|
|
28
|
+
/>
|
|
29
|
+
);
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
function DocCategoryGeneratedIndexPageContent({categoryGeneratedIndex}) {
|
|
21
33
|
const category = useCurrentSidebarCategory();
|
|
22
34
|
return (
|
|
23
35
|
<>
|
|
24
|
-
<
|
|
36
|
+
<PageMetadata
|
|
25
37
|
title={categoryGeneratedIndex.title}
|
|
26
38
|
description={categoryGeneratedIndex.description}
|
|
27
39
|
keywords={categoryGeneratedIndex.keywords} // TODO `require` this?
|
|
@@ -52,3 +64,12 @@ export default function DocCategoryGeneratedIndexPage({
|
|
|
52
64
|
</>
|
|
53
65
|
);
|
|
54
66
|
}
|
|
67
|
+
|
|
68
|
+
export default function DocCategoryGeneratedIndexPage(props) {
|
|
69
|
+
return (
|
|
70
|
+
<>
|
|
71
|
+
<DocCategoryGeneratedIndexPageMetadata {...props} />
|
|
72
|
+
<DocCategoryGeneratedIndexPageContent {...props} />
|
|
73
|
+
</>
|
|
74
|
+
);
|
|
75
|
+
}
|
|
@@ -9,26 +9,48 @@ import clsx from 'clsx';
|
|
|
9
9
|
import DocPaginator from '@theme/DocPaginator';
|
|
10
10
|
import DocVersionBanner from '@theme/DocVersionBanner';
|
|
11
11
|
import DocVersionBadge from '@theme/DocVersionBadge';
|
|
12
|
-
import Seo from '@theme/Seo';
|
|
13
12
|
import DocItemFooter from '@theme/DocItemFooter';
|
|
14
13
|
import TOC from '@theme/TOC';
|
|
15
14
|
import TOCCollapsible from '@theme/TOCCollapsible';
|
|
16
15
|
import Heading from '@theme/Heading';
|
|
17
16
|
import styles from './styles.module.css';
|
|
18
|
-
import {
|
|
17
|
+
import {
|
|
18
|
+
PageMetadata,
|
|
19
|
+
HtmlClassNameProvider,
|
|
20
|
+
ThemeClassNames,
|
|
21
|
+
useWindowSize,
|
|
22
|
+
} from '@docusaurus/theme-common';
|
|
19
23
|
import DocBreadcrumbs from '@theme/DocBreadcrumbs';
|
|
20
|
-
|
|
24
|
+
import MDXContent from '@theme/MDXContent';
|
|
25
|
+
|
|
26
|
+
function DocItemMetadata(props) {
|
|
21
27
|
const {content: DocContent} = props;
|
|
22
28
|
const {metadata, frontMatter, assets} = DocContent;
|
|
29
|
+
const {keywords} = frontMatter;
|
|
30
|
+
const {description, title} = metadata;
|
|
31
|
+
const image = assets.image ?? frontMatter.image;
|
|
32
|
+
return (
|
|
33
|
+
<PageMetadata
|
|
34
|
+
{...{
|
|
35
|
+
title,
|
|
36
|
+
description,
|
|
37
|
+
keywords,
|
|
38
|
+
image,
|
|
39
|
+
}}
|
|
40
|
+
/>
|
|
41
|
+
);
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
function DocItemContent(props) {
|
|
45
|
+
const {content: DocContent} = props;
|
|
46
|
+
const {metadata, frontMatter} = DocContent;
|
|
23
47
|
const {
|
|
24
|
-
keywords,
|
|
25
48
|
hide_title: hideTitle,
|
|
26
49
|
hide_table_of_contents: hideTableOfContents,
|
|
27
50
|
toc_min_heading_level: tocMinHeadingLevel,
|
|
28
51
|
toc_max_heading_level: tocMaxHeadingLevel,
|
|
29
52
|
} = frontMatter;
|
|
30
|
-
const {
|
|
31
|
-
const image = assets.image ?? frontMatter.image; // We only add a title if:
|
|
53
|
+
const {title} = metadata; // We only add a title if:
|
|
32
54
|
// - user asks to hide it with front matter
|
|
33
55
|
// - the markdown content does not already contain a top-level h1 heading
|
|
34
56
|
|
|
@@ -40,73 +62,69 @@ export default function DocItem(props) {
|
|
|
40
62
|
const renderTocDesktop =
|
|
41
63
|
canRenderTOC && (windowSize === 'desktop' || windowSize === 'ssr');
|
|
42
64
|
return (
|
|
43
|
-
|
|
44
|
-
<
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
}}
|
|
51
|
-
/>
|
|
52
|
-
|
|
53
|
-
<div className="row">
|
|
54
|
-
<div
|
|
55
|
-
className={clsx('col', {
|
|
56
|
-
[styles.docItemCol]: !hideTableOfContents,
|
|
57
|
-
})}>
|
|
58
|
-
<DocVersionBanner />
|
|
59
|
-
<div className={styles.docItemContainer}>
|
|
60
|
-
<article>
|
|
61
|
-
<DocBreadcrumbs />
|
|
62
|
-
<DocVersionBadge />
|
|
65
|
+
<div className="row">
|
|
66
|
+
<div className={clsx('col', !hideTableOfContents && styles.docItemCol)}>
|
|
67
|
+
<DocVersionBanner />
|
|
68
|
+
<div className={styles.docItemContainer}>
|
|
69
|
+
<article>
|
|
70
|
+
<DocBreadcrumbs />
|
|
71
|
+
<DocVersionBadge />
|
|
63
72
|
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
)}
|
|
73
|
-
/>
|
|
74
|
-
)}
|
|
75
|
-
|
|
76
|
-
<div
|
|
77
|
-
className={clsx(ThemeClassNames.docs.docMarkdown, 'markdown')}>
|
|
78
|
-
{/*
|
|
79
|
-
Title can be declared inside md content or declared through
|
|
80
|
-
front matter and added manually. To make both cases consistent,
|
|
81
|
-
the added title is added under the same div.markdown block
|
|
82
|
-
See https://github.com/facebook/docusaurus/pull/4882#issuecomment-853021120
|
|
83
|
-
*/}
|
|
84
|
-
{shouldAddTitle && (
|
|
85
|
-
<header>
|
|
86
|
-
<Heading as="h1">{title}</Heading>
|
|
87
|
-
</header>
|
|
73
|
+
{canRenderTOC && (
|
|
74
|
+
<TOCCollapsible
|
|
75
|
+
toc={DocContent.toc}
|
|
76
|
+
minHeadingLevel={tocMinHeadingLevel}
|
|
77
|
+
maxHeadingLevel={tocMaxHeadingLevel}
|
|
78
|
+
className={clsx(
|
|
79
|
+
ThemeClassNames.docs.docTocMobile,
|
|
80
|
+
styles.tocMobile,
|
|
88
81
|
)}
|
|
82
|
+
/>
|
|
83
|
+
)}
|
|
89
84
|
|
|
85
|
+
<div className={clsx(ThemeClassNames.docs.docMarkdown, 'markdown')}>
|
|
86
|
+
{/*
|
|
87
|
+
Title can be declared inside md content or declared through
|
|
88
|
+
front matter and added manually. To make both cases consistent,
|
|
89
|
+
the added title is added under the same div.markdown block
|
|
90
|
+
See https://github.com/facebook/docusaurus/pull/4882#issuecomment-853021120
|
|
91
|
+
*/}
|
|
92
|
+
{shouldAddTitle && (
|
|
93
|
+
<header>
|
|
94
|
+
<Heading as="h1">{title}</Heading>
|
|
95
|
+
</header>
|
|
96
|
+
)}
|
|
97
|
+
<MDXContent>
|
|
90
98
|
<DocContent />
|
|
91
|
-
</
|
|
99
|
+
</MDXContent>
|
|
100
|
+
</div>
|
|
92
101
|
|
|
93
|
-
|
|
94
|
-
|
|
102
|
+
<DocItemFooter {...props} />
|
|
103
|
+
</article>
|
|
95
104
|
|
|
96
|
-
|
|
97
|
-
</div>
|
|
105
|
+
<DocPaginator previous={metadata.previous} next={metadata.next} />
|
|
98
106
|
</div>
|
|
99
|
-
{renderTocDesktop && (
|
|
100
|
-
<div className="col col--3">
|
|
101
|
-
<TOC
|
|
102
|
-
toc={DocContent.toc}
|
|
103
|
-
minHeadingLevel={tocMinHeadingLevel}
|
|
104
|
-
maxHeadingLevel={tocMaxHeadingLevel}
|
|
105
|
-
className={ThemeClassNames.docs.docTocDesktop}
|
|
106
|
-
/>
|
|
107
|
-
</div>
|
|
108
|
-
)}
|
|
109
107
|
</div>
|
|
110
|
-
|
|
108
|
+
{renderTocDesktop && (
|
|
109
|
+
<div className="col col--3">
|
|
110
|
+
<TOC
|
|
111
|
+
toc={DocContent.toc}
|
|
112
|
+
minHeadingLevel={tocMinHeadingLevel}
|
|
113
|
+
maxHeadingLevel={tocMaxHeadingLevel}
|
|
114
|
+
className={ThemeClassNames.docs.docTocDesktop}
|
|
115
|
+
/>
|
|
116
|
+
</div>
|
|
117
|
+
)}
|
|
118
|
+
</div>
|
|
119
|
+
);
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
export default function DocItem(props) {
|
|
123
|
+
const docHtmlClassName = `docs-doc-id-${props.content.metadata.unversionedId}`;
|
|
124
|
+
return (
|
|
125
|
+
<HtmlClassNameProvider className={docHtmlClassName}>
|
|
126
|
+
<DocItemMetadata {...props} />
|
|
127
|
+
<DocItemContent {...props} />
|
|
128
|
+
</HtmlClassNameProvider>
|
|
111
129
|
);
|
|
112
130
|
}
|