@docusaurus/theme-classic 2.0.0-beta.16 → 2.0.0-beta.19
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/admonitions.css +4 -0
- package/lib/default.css +3038 -0
- package/lib/getSwizzleConfig.js +177 -36
- package/lib/index.js +10 -15
- package/lib/nprogress.css +41 -0
- package/lib/nprogress.js +46 -0
- package/lib/theme-classic.d.ts +600 -76
- package/lib/translations.js +12 -2
- package/lib/validateThemeConfig.js +77 -28
- package/lib-next/theme/BackToTopButton/index.js +6 -104
- package/lib-next/theme/BlogArchivePage/index.js +14 -10
- package/lib-next/theme/BlogLayout/index.js +1 -5
- package/lib-next/theme/BlogListPage/index.js +34 -13
- package/lib-next/theme/BlogListPaginator/index.js +25 -28
- package/lib-next/theme/BlogPostAuthor/index.js +16 -7
- package/lib-next/theme/BlogPostItem/index.js +6 -6
- package/lib-next/theme/BlogPostItem/styles.module.css +9 -0
- package/lib-next/theme/BlogPostPage/index.js +56 -45
- package/lib-next/theme/BlogPostPaginator/index.js +25 -28
- package/lib-next/theme/BlogSidebar/Desktop/index.js +41 -0
- package/lib-next/theme/BlogSidebar/{styles.module.css → Desktop/styles.module.css} +1 -2
- package/lib-next/theme/BlogSidebar/Mobile/index.js +36 -0
- package/lib-next/theme/BlogSidebar/index.js +11 -31
- package/lib-next/theme/BlogTagsListPage/index.js +17 -14
- package/lib-next/theme/BlogTagsPostsPage/index.js +43 -38
- package/lib-next/theme/CodeBlock/Container/index.js +29 -0
- package/lib-next/theme/CodeBlock/Container/styles.module.css +14 -0
- package/lib-next/theme/CodeBlock/Content/Element.js +23 -0
- package/lib-next/theme/CodeBlock/Content/String.js +104 -0
- package/lib-next/theme/CodeBlock/{styles.module.css → Content/styles.module.css} +39 -29
- package/lib-next/theme/CodeBlock/CopyButton/index.js +61 -0
- package/lib-next/theme/CodeBlock/CopyButton/styles.module.css +47 -0
- package/lib-next/theme/CodeBlock/Line/index.js +49 -0
- package/lib-next/theme/CodeBlock/Line/styles.module.css +51 -0
- package/lib-next/theme/CodeBlock/WordWrapButton/index.js +40 -0
- package/lib-next/theme/CodeBlock/WordWrapButton/styles.module.css +15 -0
- package/lib-next/theme/CodeBlock/index.js +26 -164
- package/lib-next/theme/ColorModeToggle/index.js +62 -0
- package/lib-next/theme/ColorModeToggle/styles.module.css +35 -0
- package/lib-next/theme/Details/index.js +1 -1
- package/lib-next/theme/DocBreadcrumbs/index.js +63 -19
- package/lib-next/theme/DocBreadcrumbs/styles.module.css +8 -15
- 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 +20 -6
- package/lib-next/theme/DocCategoryGeneratedIndexPage/index.js +30 -9
- package/lib-next/theme/DocCategoryGeneratedIndexPage/styles.module.css +8 -0
- package/lib-next/theme/DocItem/index.js +85 -67
- package/lib-next/theme/DocItem/styles.module.css +6 -0
- package/lib-next/theme/DocPage/Layout/Main/index.js +29 -0
- package/lib-next/theme/DocPage/Layout/Main/styles.module.css +28 -0
- package/lib-next/theme/DocPage/Layout/Sidebar/ExpandButton/index.js +34 -0
- package/lib-next/theme/DocPage/Layout/Sidebar/ExpandButton/styles.module.css +33 -0
- package/lib-next/theme/DocPage/Layout/Sidebar/index.js +68 -0
- package/lib-next/theme/DocPage/Layout/Sidebar/index.module.css +32 -0
- package/lib-next/theme/DocPage/Layout/index.js +34 -0
- package/lib-next/theme/{BlogPostAuthor/styles.module.css → DocPage/Layout/index.module.css} +6 -3
- package/lib-next/theme/DocPage/index.js +30 -149
- package/lib-next/theme/DocPaginator/index.js +25 -28
- package/lib-next/theme/DocSidebar/Desktop/CollapseButton/index.js +34 -0
- package/lib-next/theme/DocSidebar/Desktop/CollapseButton/styles.module.css +46 -0
- package/lib-next/theme/DocSidebar/Desktop/Content/index.js +46 -0
- package/lib-next/theme/DocSidebar/Desktop/Content/styles.module.css +23 -0
- package/lib-next/theme/DocSidebar/Desktop/index.js +36 -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/Category.js +197 -0
- package/lib-next/theme/DocSidebarItem/Html.js +27 -0
- package/lib-next/theme/DocSidebarItem/{styles.module.css → Html.module.css} +0 -0
- package/lib-next/theme/DocSidebarItem/Link.js +53 -0
- package/lib-next/theme/DocSidebarItem/Link.module.css +10 -0
- package/lib-next/theme/DocSidebarItem/index.js +4 -245
- package/lib-next/theme/DocSidebarItems/index.js +1 -6
- package/lib-next/theme/DocTagDocListPage/index.js +40 -33
- package/lib-next/theme/DocTagsListPage/index.js +21 -16
- package/lib-next/theme/DocVersionBanner/index.js +2 -2
- 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 +10 -24
- package/lib-next/theme/IconDarkMode/index.js +17 -0
- package/lib-next/theme/IconExternalLink/styles.module.css +0 -2
- package/lib-next/theme/IconHome/index.js +17 -0
- package/lib-next/theme/IconLanguage/index.js +3 -3
- package/lib-next/theme/IconLightMode/index.js +17 -0
- package/lib-next/theme/LastUpdated/index.js +1 -0
- 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/{src/theme/MDXComponents/styles.css → lib-next/theme/MDXComponents/Img.module.css} +1 -6
- package/lib-next/theme/MDXComponents/Pre.js +18 -0
- package/lib-next/theme/MDXComponents/Ul.js +21 -0
- package/lib-next/theme/MDXComponents/index.js +22 -57
- 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 +75 -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/Search/index.js +11 -0
- package/lib-next/theme/Navbar/Search/styles.module.css +20 -0
- package/lib-next/theme/Navbar/index.js +6 -271
- package/lib-next/theme/NavbarItem/ComponentTypes.js +27 -0
- package/lib-next/theme/NavbarItem/DefaultNavbarItem.js +2 -6
- package/lib-next/theme/NavbarItem/DocNavbarItem.js +11 -28
- package/lib-next/theme/NavbarItem/DocSidebarNavbarItem.js +10 -42
- package/lib-next/theme/NavbarItem/DocsVersionDropdownNavbarItem.js +25 -29
- package/lib-next/theme/NavbarItem/DocsVersionNavbarItem.js +2 -9
- package/lib-next/theme/NavbarItem/DropdownNavbarItem.js +14 -3
- package/lib-next/theme/NavbarItem/HtmlNavbarItem.js +30 -0
- package/lib-next/theme/NavbarItem/LocaleDropdownNavbarItem/index.js +5 -10
- package/lib-next/theme/NavbarItem/NavbarNavLink.js +49 -35
- package/lib-next/theme/NavbarItem/SearchNavbarItem.js +6 -1
- package/lib-next/theme/NavbarItem/index.js +4 -23
- package/lib-next/theme/NavbarItem/utils.js +2 -1
- package/lib-next/theme/NotFound.js +38 -33
- package/lib-next/theme/PaginatorNavLink/index.js +8 -2
- package/lib-next/theme/SearchMetadata/index.js +9 -0
- package/lib-next/theme/{LayoutHead → SiteMetadata}/index.js +19 -33
- package/lib-next/theme/SkipToContent/index.js +3 -29
- package/lib-next/theme/TOCCollapsible/CollapseButton.js +29 -0
- package/{src/theme/TOCCollapsible/styles.module.css → lib-next/theme/TOCCollapsible/CollapseButton.module.css} +1 -22
- package/lib-next/theme/TOCCollapsible/index.js +4 -16
- package/lib-next/theme/TOCCollapsible/index.module.css +31 -0
- package/lib-next/theme/TOCItems/Tree.js +40 -0
- package/lib-next/theme/TOCItems/index.js +3 -34
- package/lib-next/theme/TabItem/index.js +3 -1
- package/lib-next/theme/TabItem/styles.module.css +10 -0
- package/lib-next/theme/Tabs/__tests__/index.test.js +8 -8
- package/lib-next/theme/Tabs/index.js +5 -5
- package/lib-next/theme/Tabs/styles.module.css +4 -0
- package/lib-next/theme/Tag/index.js +6 -7
- package/lib-next/theme/TagsListInline/index.js +1 -1
- package/lib-next/theme/ThemedImage/index.js +3 -3
- package/package.json +25 -20
- package/src/admonitions.css +4 -0
- package/src/getSwizzleConfig.ts +173 -22
- package/src/index.ts +14 -15
- package/src/nprogress.css +41 -0
- package/src/nprogress.ts +31 -0
- package/src/theme/BackToTopButton/index.tsx +5 -114
- package/src/theme/BlogArchivePage/index.tsx +18 -17
- package/src/theme/BlogLayout/index.tsx +1 -5
- package/src/theme/BlogListPage/index.tsx +32 -13
- package/src/theme/BlogListPaginator/index.tsx +25 -28
- package/src/theme/BlogPostAuthor/index.tsx +14 -8
- package/src/theme/BlogPostItem/index.tsx +6 -6
- package/src/theme/BlogPostItem/styles.module.css +9 -0
- package/src/theme/BlogPostPage/index.tsx +55 -48
- package/src/theme/BlogPostPaginator/index.tsx +25 -28
- package/src/theme/BlogSidebar/Desktop/index.tsx +45 -0
- package/src/theme/BlogSidebar/{styles.module.css → Desktop/styles.module.css} +1 -2
- package/src/theme/BlogSidebar/Mobile/index.tsx +38 -0
- package/src/theme/BlogSidebar/index.tsx +10 -31
- package/src/theme/BlogTagsListPage/index.tsx +17 -14
- package/src/theme/BlogTagsPostsPage/index.tsx +46 -36
- package/src/theme/CodeBlock/Container/index.tsx +35 -0
- package/src/theme/CodeBlock/Container/styles.module.css +14 -0
- package/src/theme/CodeBlock/Content/Element.tsx +30 -0
- package/src/theme/CodeBlock/Content/String.tsx +111 -0
- package/src/theme/CodeBlock/{styles.module.css → Content/styles.module.css} +39 -29
- package/src/theme/CodeBlock/CopyButton/index.tsx +67 -0
- package/src/theme/CodeBlock/CopyButton/styles.module.css +47 -0
- package/src/theme/CodeBlock/Line/index.tsx +48 -0
- package/src/theme/CodeBlock/Line/styles.module.css +51 -0
- package/src/theme/CodeBlock/WordWrapButton/index.tsx +49 -0
- package/src/theme/CodeBlock/WordWrapButton/styles.module.css +15 -0
- package/src/theme/CodeBlock/index.tsx +29 -165
- package/src/theme/ColorModeToggle/index.tsx +67 -0
- package/src/theme/ColorModeToggle/styles.module.css +35 -0
- package/src/theme/Details/index.tsx +1 -1
- package/src/theme/DocBreadcrumbs/index.tsx +65 -16
- package/src/theme/DocBreadcrumbs/styles.module.css +8 -15
- package/src/theme/DocCard/index.tsx +24 -17
- package/src/theme/DocCard/styles.module.css +8 -17
- package/src/theme/DocCardList/index.tsx +19 -10
- package/src/theme/DocCategoryGeneratedIndexPage/index.tsx +34 -7
- package/src/theme/DocCategoryGeneratedIndexPage/styles.module.css +8 -0
- package/src/theme/DocItem/index.tsx +72 -56
- package/src/theme/DocItem/styles.module.css +6 -0
- package/src/theme/DocPage/Layout/Main/index.tsx +37 -0
- package/src/theme/DocPage/Layout/Main/styles.module.css +28 -0
- package/src/theme/DocPage/Layout/Sidebar/ExpandButton/index.tsx +40 -0
- package/src/theme/DocPage/Layout/Sidebar/ExpandButton/styles.module.css +33 -0
- package/src/theme/DocPage/Layout/Sidebar/index.module.css +32 -0
- package/src/theme/DocPage/Layout/Sidebar/index.tsx +74 -0
- package/src/theme/{BlogPostAuthor/styles.module.css → DocPage/Layout/index.module.css} +6 -3
- package/src/theme/DocPage/Layout/index.tsx +39 -0
- package/src/theme/DocPage/index.tsx +30 -160
- package/src/theme/DocPaginator/index.tsx +25 -28
- package/src/theme/DocSidebar/Desktop/CollapseButton/index.tsx +38 -0
- package/src/theme/DocSidebar/Desktop/CollapseButton/styles.module.css +46 -0
- package/src/theme/DocSidebar/Desktop/Content/index.tsx +55 -0
- package/src/theme/DocSidebar/Desktop/Content/styles.module.css +23 -0
- package/src/theme/DocSidebar/Desktop/index.tsx +40 -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/Category.tsx +210 -0
- package/src/theme/DocSidebarItem/{styles.module.css → Html.module.css} +0 -0
- package/src/theme/DocSidebarItem/Html.tsx +34 -0
- package/src/theme/DocSidebarItem/Link.module.css +10 -0
- package/src/theme/DocSidebarItem/Link.tsx +58 -0
- package/src/theme/DocSidebarItem/index.tsx +4 -260
- package/src/theme/DocSidebarItems/index.tsx +1 -6
- package/src/theme/DocTagDocListPage/index.tsx +40 -33
- package/src/theme/DocTagsListPage/index.tsx +21 -16
- package/src/theme/DocVersionBanner/index.tsx +5 -6
- 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 +10 -22
- package/src/theme/IconDarkMode/index.tsx +20 -0
- package/src/theme/IconExternalLink/styles.module.css +0 -2
- package/src/theme/IconHome/index.tsx +20 -0
- package/src/theme/IconLanguage/index.tsx +3 -3
- package/src/theme/IconLightMode/index.tsx +20 -0
- package/src/theme/LastUpdated/index.tsx +1 -0
- 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 +25 -0
- package/src/theme/MDXComponents/Head.tsx +29 -0
- package/src/theme/MDXComponents/Heading.tsx +14 -0
- package/{lib-next/theme/MDXComponents/styles.css → src/theme/MDXComponents/Img.module.css} +1 -6
- package/src/theme/MDXComponents/Img.tsx +26 -0
- package/src/theme/MDXComponents/Pre.tsx +22 -0
- package/src/theme/MDXComponents/Ul.tsx +24 -0
- package/src/theme/MDXComponents/index.tsx +23 -66
- 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 +86 -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/Search/index.tsx +15 -0
- package/src/theme/Navbar/Search/styles.module.css +20 -0
- package/src/theme/Navbar/index.tsx +6 -286
- package/src/theme/NavbarItem/ComponentTypes.tsx +32 -0
- package/src/theme/NavbarItem/DefaultNavbarItem.tsx +2 -2
- package/src/theme/NavbarItem/DocNavbarItem.tsx +13 -32
- package/src/theme/NavbarItem/DocSidebarNavbarItem.tsx +9 -49
- package/src/theme/NavbarItem/DocsVersionDropdownNavbarItem.tsx +26 -33
- package/src/theme/NavbarItem/DocsVersionNavbarItem.tsx +3 -10
- package/src/theme/NavbarItem/DropdownNavbarItem.tsx +15 -3
- package/src/theme/NavbarItem/HtmlNavbarItem.tsx +32 -0
- package/src/theme/NavbarItem/LocaleDropdownNavbarItem/index.tsx +5 -9
- package/src/theme/NavbarItem/NavbarNavLink.tsx +41 -29
- package/src/theme/NavbarItem/SearchNavbarItem.tsx +6 -1
- package/src/theme/NavbarItem/index.tsx +9 -39
- package/src/theme/NavbarItem/utils.ts +5 -2
- package/src/theme/NotFound.tsx +38 -33
- package/src/theme/PaginatorNavLink/index.tsx +8 -2
- package/src/theme/SearchMetadata/index.tsx +9 -0
- package/src/theme/{LayoutHead → SiteMetadata}/index.tsx +19 -33
- package/src/theme/SkipToContent/index.tsx +3 -29
- package/{lib-next/theme/TOCCollapsible/styles.module.css → src/theme/TOCCollapsible/CollapseButton.module.css} +1 -22
- package/src/theme/TOCCollapsible/CollapseButton.tsx +35 -0
- package/src/theme/TOCCollapsible/index.module.css +31 -0
- package/src/theme/TOCCollapsible/index.tsx +4 -17
- package/src/theme/TOCItems/Tree.tsx +46 -0
- package/src/theme/TOCItems/index.tsx +2 -41
- package/src/theme/TabItem/index.tsx +7 -1
- package/src/theme/TabItem/styles.module.css +10 -0
- package/src/theme/Tabs/index.tsx +8 -9
- package/src/theme/Tabs/styles.module.css +4 -0
- package/src/theme/Tag/index.tsx +6 -8
- package/src/theme/TagsListInline/index.tsx +1 -1
- package/src/theme/ThemedImage/index.tsx +4 -3
- package/src/theme-classic.d.ts +600 -76
- package/src/translations.ts +12 -6
- package/src/validateThemeConfig.ts +90 -39
- package/lib/types.d.ts +0 -11
- package/lib-next/theme/DocPage/styles.module.css +0 -86
- package/lib-next/theme/DocSidebar/styles.module.css +0 -107
- package/lib-next/theme/Seo/index.js +0 -40
- package/lib-next/theme/Toggle/index.js +0 -100
- package/lib-next/theme/Toggle/styles.module.css +0 -106
- package/src/theme/DocPage/styles.module.css +0 -86
- package/src/theme/DocSidebar/styles.module.css +0 -107
- package/src/theme/Seo/index.tsx +0 -49
- package/src/theme/Toggle/index.tsx +0 -117
- package/src/theme/Toggle/styles.module.css +0 -106
- package/src/types.d.ts +0 -11
|
@@ -17,6 +17,7 @@ export default function NavbarNavLink({
|
|
|
17
17
|
to,
|
|
18
18
|
href,
|
|
19
19
|
label,
|
|
20
|
+
html,
|
|
20
21
|
activeClassName = '',
|
|
21
22
|
prependBaseUrlToHref,
|
|
22
23
|
...props
|
|
@@ -29,42 +30,55 @@ export default function NavbarNavLink({
|
|
|
29
30
|
forcePrependBaseUrl: true,
|
|
30
31
|
});
|
|
31
32
|
const isExternalLink = label && href && !isInternalUrl(href);
|
|
32
|
-
const isDropdownLink = activeClassName === dropdownLinkActiveClass;
|
|
33
|
+
const isDropdownLink = activeClassName === dropdownLinkActiveClass; // Link content is set through html XOR label
|
|
34
|
+
|
|
35
|
+
const linkContentProps = html
|
|
36
|
+
? {
|
|
37
|
+
dangerouslySetInnerHTML: {
|
|
38
|
+
__html: html,
|
|
39
|
+
},
|
|
40
|
+
}
|
|
41
|
+
: {
|
|
42
|
+
children: (
|
|
43
|
+
<>
|
|
44
|
+
{label}
|
|
45
|
+
{isExternalLink && (
|
|
46
|
+
<IconExternalLink
|
|
47
|
+
{...(isDropdownLink && {
|
|
48
|
+
width: 12,
|
|
49
|
+
height: 12,
|
|
50
|
+
})}
|
|
51
|
+
/>
|
|
52
|
+
)}
|
|
53
|
+
</>
|
|
54
|
+
),
|
|
55
|
+
};
|
|
56
|
+
|
|
57
|
+
if (href) {
|
|
58
|
+
return (
|
|
59
|
+
<Link
|
|
60
|
+
href={prependBaseUrlToHref ? normalizedHref : href}
|
|
61
|
+
{...props}
|
|
62
|
+
{...linkContentProps}
|
|
63
|
+
/>
|
|
64
|
+
);
|
|
65
|
+
}
|
|
66
|
+
|
|
33
67
|
return (
|
|
34
68
|
<Link
|
|
35
|
-
{
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
? isRegexpStringMatch(activeBaseRegex, location.pathname)
|
|
50
|
-
: location.pathname.startsWith(activeBaseUrl),
|
|
51
|
-
}
|
|
52
|
-
: null),
|
|
53
|
-
})}
|
|
54
|
-
{...props}>
|
|
55
|
-
{isExternalLink ? (
|
|
56
|
-
<span>
|
|
57
|
-
{label}
|
|
58
|
-
<IconExternalLink
|
|
59
|
-
{...(isDropdownLink && {
|
|
60
|
-
width: 12,
|
|
61
|
-
height: 12,
|
|
62
|
-
})}
|
|
63
|
-
/>
|
|
64
|
-
</span>
|
|
65
|
-
) : (
|
|
66
|
-
label
|
|
67
|
-
)}
|
|
68
|
-
</Link>
|
|
69
|
+
to={toUrl}
|
|
70
|
+
isNavLink
|
|
71
|
+
activeClassName={
|
|
72
|
+
!props.className?.includes(activeClassName) ? activeClassName : ''
|
|
73
|
+
}
|
|
74
|
+
{...((activeBasePath || activeBaseRegex) && {
|
|
75
|
+
isActive: (_match, location) =>
|
|
76
|
+
activeBaseRegex
|
|
77
|
+
? isRegexpStringMatch(activeBaseRegex, location.pathname)
|
|
78
|
+
: location.pathname.startsWith(activeBaseUrl),
|
|
79
|
+
})}
|
|
80
|
+
{...props}
|
|
81
|
+
{...linkContentProps}
|
|
82
|
+
/>
|
|
69
83
|
);
|
|
70
84
|
}
|
|
@@ -6,10 +6,15 @@
|
|
|
6
6
|
*/
|
|
7
7
|
import React from 'react';
|
|
8
8
|
import SearchBar from '@theme/SearchBar';
|
|
9
|
+
import NavbarSearch from '@theme/Navbar/Search';
|
|
9
10
|
export default function SearchNavbarItem({mobile}) {
|
|
10
11
|
if (mobile) {
|
|
11
12
|
return null;
|
|
12
13
|
}
|
|
13
14
|
|
|
14
|
-
return
|
|
15
|
+
return (
|
|
16
|
+
<NavbarSearch>
|
|
17
|
+
<SearchBar />
|
|
18
|
+
</NavbarSearch>
|
|
19
|
+
);
|
|
15
20
|
}
|
|
@@ -5,35 +5,16 @@
|
|
|
5
5
|
* LICENSE file in the root directory of this source tree.
|
|
6
6
|
*/
|
|
7
7
|
import React from 'react';
|
|
8
|
-
import
|
|
9
|
-
import DropdownNavbarItem from '@theme/NavbarItem/DropdownNavbarItem';
|
|
10
|
-
import LocaleDropdownNavbarItem from '@theme/NavbarItem/LocaleDropdownNavbarItem';
|
|
11
|
-
import SearchNavbarItem from '@theme/NavbarItem/SearchNavbarItem';
|
|
12
|
-
const NavbarItemComponents = {
|
|
13
|
-
default: () => DefaultNavbarItem,
|
|
14
|
-
localeDropdown: () => LocaleDropdownNavbarItem,
|
|
15
|
-
search: () => SearchNavbarItem,
|
|
16
|
-
dropdown: () => DropdownNavbarItem,
|
|
17
|
-
// Need to lazy load these items as we don't know for sure the docs plugin is
|
|
18
|
-
// loaded. See https://github.com/facebook/docusaurus/issues/3360
|
|
19
|
-
|
|
20
|
-
/* eslint-disable @typescript-eslint/no-var-requires, global-require */
|
|
21
|
-
docsVersion: () => require('@theme/NavbarItem/DocsVersionNavbarItem').default,
|
|
22
|
-
docsVersionDropdown: () =>
|
|
23
|
-
require('@theme/NavbarItem/DocsVersionDropdownNavbarItem').default,
|
|
24
|
-
doc: () => require('@theme/NavbarItem/DocNavbarItem').default,
|
|
25
|
-
docSidebar: () => require('@theme/NavbarItem/DocSidebarNavbarItem').default,
|
|
26
|
-
/* eslint-enable @typescript-eslint/no-var-requires, global-require */
|
|
27
|
-
};
|
|
8
|
+
import ComponentTypes from '@theme/NavbarItem/ComponentTypes';
|
|
28
9
|
|
|
29
10
|
const getNavbarItemComponent = (type) => {
|
|
30
|
-
const
|
|
11
|
+
const component = ComponentTypes[type];
|
|
31
12
|
|
|
32
|
-
if (!
|
|
13
|
+
if (!component) {
|
|
33
14
|
throw new Error(`No NavbarItem component found for type "${type}".`);
|
|
34
15
|
}
|
|
35
16
|
|
|
36
|
-
return
|
|
17
|
+
return component;
|
|
37
18
|
};
|
|
38
19
|
|
|
39
20
|
function getComponentType(type, isDropdown) {
|
|
@@ -4,6 +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
|
-
|
|
7
|
+
|
|
8
|
+
/* eslint-disable import/no-named-export */
|
|
8
9
|
export const getInfimaActiveClassName = (mobile) =>
|
|
9
10
|
mobile ? 'menu__link--active' : 'navbar__link--active';
|
|
@@ -7,41 +7,46 @@
|
|
|
7
7
|
import React from 'react';
|
|
8
8
|
import Layout from '@theme/Layout';
|
|
9
9
|
import Translate, {translate} from '@docusaurus/Translate';
|
|
10
|
+
import {PageMetadata} from '@docusaurus/theme-common';
|
|
10
11
|
export default function NotFound() {
|
|
11
12
|
return (
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
13
|
+
<>
|
|
14
|
+
<PageMetadata
|
|
15
|
+
title={translate({
|
|
16
|
+
id: 'theme.NotFound.title',
|
|
17
|
+
message: 'Page Not Found',
|
|
18
|
+
})}
|
|
19
|
+
/>
|
|
20
|
+
<Layout>
|
|
21
|
+
<main className="container margin-vert--xl">
|
|
22
|
+
<div className="row">
|
|
23
|
+
<div className="col col--6 col--offset-3">
|
|
24
|
+
<h1 className="hero__title">
|
|
25
|
+
<Translate
|
|
26
|
+
id="theme.NotFound.title"
|
|
27
|
+
description="The title of the 404 page">
|
|
28
|
+
Page Not Found
|
|
29
|
+
</Translate>
|
|
30
|
+
</h1>
|
|
31
|
+
<p>
|
|
32
|
+
<Translate
|
|
33
|
+
id="theme.NotFound.p1"
|
|
34
|
+
description="The first paragraph of the 404 page">
|
|
35
|
+
We could not find what you were looking for.
|
|
36
|
+
</Translate>
|
|
37
|
+
</p>
|
|
38
|
+
<p>
|
|
39
|
+
<Translate
|
|
40
|
+
id="theme.NotFound.p2"
|
|
41
|
+
description="The 2nd paragraph of the 404 page">
|
|
42
|
+
Please contact the owner of the site that linked you to the
|
|
43
|
+
original URL and let them know their link is broken.
|
|
44
|
+
</Translate>
|
|
45
|
+
</p>
|
|
46
|
+
</div>
|
|
42
47
|
</div>
|
|
43
|
-
</
|
|
44
|
-
</
|
|
45
|
-
|
|
48
|
+
</main>
|
|
49
|
+
</Layout>
|
|
50
|
+
</>
|
|
46
51
|
);
|
|
47
52
|
}
|
|
@@ -5,11 +5,17 @@
|
|
|
5
5
|
* LICENSE file in the root directory of this source tree.
|
|
6
6
|
*/
|
|
7
7
|
import React from 'react';
|
|
8
|
+
import clsx from 'clsx';
|
|
8
9
|
import Link from '@docusaurus/Link';
|
|
9
10
|
export default function PaginatorNavLink(props) {
|
|
10
|
-
const {permalink, title, subLabel} = props;
|
|
11
|
+
const {permalink, title, subLabel, isNext} = props;
|
|
11
12
|
return (
|
|
12
|
-
<Link
|
|
13
|
+
<Link
|
|
14
|
+
className={clsx(
|
|
15
|
+
'pagination-nav__link',
|
|
16
|
+
isNext ? 'pagination-nav__link--next' : 'pagination-nav__link--prev',
|
|
17
|
+
)}
|
|
18
|
+
to={permalink}>
|
|
13
19
|
{subLabel && <div className="pagination-nav__sublabel">{subLabel}</div>}
|
|
14
20
|
<div className="pagination-nav__label">{title}</div>
|
|
15
21
|
</Link>
|
|
@@ -17,6 +17,15 @@ export default function SearchMetadata({locale, version, tag}) {
|
|
|
17
17
|
const language = locale;
|
|
18
18
|
return (
|
|
19
19
|
<Head>
|
|
20
|
+
{/*
|
|
21
|
+
Docusaurus metadata, used by third-party search plugin
|
|
22
|
+
See https://github.com/cmfcmf/docusaurus-search-local/issues/99
|
|
23
|
+
*/}
|
|
24
|
+
{locale && <meta name="docusaurus_locale" content={locale} />}
|
|
25
|
+
{version && <meta name="docusaurus_version" content={version} />}
|
|
26
|
+
{tag && <meta name="docusaurus_tag" content={tag} />}
|
|
27
|
+
|
|
28
|
+
{/* Algolia DocSearch metadata */}
|
|
20
29
|
{language && <meta name="docsearch:language" content={language} />}
|
|
21
30
|
{version && <meta name="docsearch:version" content={version} />}
|
|
22
31
|
{tag && <meta name="docsearch:docusaurus_tag" content={tag} />}
|
|
@@ -9,15 +9,15 @@ import Head from '@docusaurus/Head';
|
|
|
9
9
|
import useDocusaurusContext from '@docusaurus/useDocusaurusContext';
|
|
10
10
|
import useBaseUrl from '@docusaurus/useBaseUrl';
|
|
11
11
|
import SearchMetadata from '@theme/SearchMetadata';
|
|
12
|
-
import Seo from '@theme/Seo';
|
|
13
12
|
import {
|
|
13
|
+
PageMetadata,
|
|
14
14
|
DEFAULT_SEARCH_TAG,
|
|
15
|
-
useTitleFormatter,
|
|
16
15
|
useAlternatePageUtils,
|
|
17
16
|
useThemeConfig,
|
|
18
17
|
keyboardFocusedClassName,
|
|
19
18
|
} from '@docusaurus/theme-common';
|
|
20
|
-
import {useLocation} from '@docusaurus/router'; //
|
|
19
|
+
import {useLocation} from '@docusaurus/router'; // TODO move to SiteMetadataDefaults or theme-common ?
|
|
20
|
+
// Useful for i18n/SEO
|
|
21
21
|
// See https://developers.google.com/search/docs/advanced/crawling/localized-versions
|
|
22
22
|
// See https://github.com/facebook/docusaurus/issues/3317
|
|
23
23
|
|
|
@@ -59,7 +59,7 @@ function useDefaultCanonicalUrl() {
|
|
|
59
59
|
} = useDocusaurusContext();
|
|
60
60
|
const {pathname} = useLocation();
|
|
61
61
|
return siteUrl + useBaseUrl(pathname);
|
|
62
|
-
}
|
|
62
|
+
} // TODO move to SiteMetadataDefaults or theme-common ?
|
|
63
63
|
|
|
64
64
|
function CanonicalUrlHeaders({permalink}) {
|
|
65
65
|
const {
|
|
@@ -77,54 +77,40 @@ function CanonicalUrlHeaders({permalink}) {
|
|
|
77
77
|
);
|
|
78
78
|
}
|
|
79
79
|
|
|
80
|
-
export default function
|
|
80
|
+
export default function SiteMetadata() {
|
|
81
81
|
const {
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
82
|
+
i18n: {currentLocale},
|
|
83
|
+
} = useDocusaurusContext(); // TODO maybe move these 2 themeConfig to siteConfig?
|
|
84
|
+
// These seems useful for other themes as well
|
|
85
|
+
|
|
85
86
|
const {metadata, image: defaultImage} = useThemeConfig();
|
|
86
|
-
const {title, description, image, keywords, searchMetadata} = props;
|
|
87
|
-
const faviconUrl = useBaseUrl(favicon);
|
|
88
|
-
const pageTitle = useTitleFormatter(title);
|
|
89
|
-
const {htmlLang, direction: htmlDir} = localeConfigs[currentLocale];
|
|
90
87
|
return (
|
|
91
88
|
<>
|
|
92
89
|
<Head>
|
|
93
|
-
<html lang={htmlLang} dir={htmlDir} />
|
|
94
|
-
{favicon && <link rel="icon" href={faviconUrl} />}
|
|
95
|
-
<title>{pageTitle}</title>
|
|
96
|
-
<meta property="og:title" content={pageTitle} />
|
|
97
90
|
<meta name="twitter:card" content="summary_large_image" />
|
|
98
91
|
{/* The keyboard focus class name need to be applied when SSR so links
|
|
99
92
|
are outlined when JS is disabled */}
|
|
100
93
|
<body className={keyboardFocusedClassName} />
|
|
101
94
|
</Head>
|
|
102
95
|
|
|
103
|
-
{
|
|
104
|
-
{defaultImage && <Seo image={defaultImage} />}
|
|
105
|
-
{image && <Seo image={image} />}
|
|
106
|
-
|
|
107
|
-
<Seo description={description} keywords={keywords} />
|
|
96
|
+
{defaultImage && <PageMetadata image={defaultImage} />}
|
|
108
97
|
|
|
109
98
|
<CanonicalUrlHeaders />
|
|
110
99
|
|
|
111
100
|
<AlternateLangHeaders />
|
|
112
101
|
|
|
113
|
-
<SearchMetadata
|
|
114
|
-
tag={DEFAULT_SEARCH_TAG}
|
|
115
|
-
locale={currentLocale}
|
|
116
|
-
{...searchMetadata}
|
|
117
|
-
/>
|
|
102
|
+
<SearchMetadata tag={DEFAULT_SEARCH_TAG} locale={currentLocale} />
|
|
118
103
|
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
104
|
+
{/*
|
|
105
|
+
It's important to have an additional <Head> element here, as it allows
|
|
106
|
+
react-helmet to override default metadata values set in previous <Head>
|
|
107
|
+
like "twitter:card". In same Head, the same meta would appear twice
|
|
108
|
+
instead of overriding.
|
|
109
|
+
*/}
|
|
110
|
+
<Head>
|
|
125
111
|
{/* Yes, "metadatum" is the grammatically correct term */}
|
|
126
112
|
{metadata.map((metadatum, i) => (
|
|
127
|
-
<meta key={
|
|
113
|
+
<meta key={i} {...metadatum} />
|
|
128
114
|
))}
|
|
129
115
|
</Head>
|
|
130
116
|
</>
|
|
@@ -4,38 +4,12 @@
|
|
|
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
|
|
8
|
-
import {useHistory} from '@docusaurus/router';
|
|
7
|
+
import React from 'react';
|
|
9
8
|
import Translate from '@docusaurus/Translate';
|
|
10
|
-
import {
|
|
9
|
+
import {useSkipToContent} from '@docusaurus/theme-common';
|
|
11
10
|
import styles from './styles.module.css';
|
|
12
|
-
|
|
13
|
-
function programmaticFocus(el) {
|
|
14
|
-
el.setAttribute('tabindex', '-1');
|
|
15
|
-
el.focus();
|
|
16
|
-
el.removeAttribute('tabindex');
|
|
17
|
-
}
|
|
18
|
-
|
|
19
11
|
export default function SkipToContent() {
|
|
20
|
-
const containerRef =
|
|
21
|
-
const {action} = useHistory();
|
|
22
|
-
|
|
23
|
-
const handleSkip = (e) => {
|
|
24
|
-
e.preventDefault();
|
|
25
|
-
const targetElement =
|
|
26
|
-
document.querySelector('main:first-of-type') ||
|
|
27
|
-
document.querySelector('.main-wrapper');
|
|
28
|
-
|
|
29
|
-
if (targetElement) {
|
|
30
|
-
programmaticFocus(targetElement);
|
|
31
|
-
}
|
|
32
|
-
};
|
|
33
|
-
|
|
34
|
-
useLocationChange(({location}) => {
|
|
35
|
-
if (containerRef.current && !location.hash && action === 'PUSH') {
|
|
36
|
-
programmaticFocus(containerRef.current);
|
|
37
|
-
}
|
|
38
|
-
});
|
|
12
|
+
const {containerRef, handleSkip} = useSkipToContent();
|
|
39
13
|
return (
|
|
40
14
|
<div ref={containerRef} role="region">
|
|
41
15
|
{/* eslint-disable-next-line jsx-a11y/anchor-is-valid */}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) Facebook, Inc. and its affiliates.
|
|
3
|
+
*
|
|
4
|
+
* This source code is licensed under the MIT license found in the
|
|
5
|
+
* LICENSE file in the root directory of this source tree.
|
|
6
|
+
*/
|
|
7
|
+
import React from 'react';
|
|
8
|
+
import clsx from 'clsx';
|
|
9
|
+
import Translate from '@docusaurus/Translate';
|
|
10
|
+
import styles from './CollapseButton.module.css';
|
|
11
|
+
export default function TOCCollapsibleCollapseButton({collapsed, ...props}) {
|
|
12
|
+
return (
|
|
13
|
+
<button
|
|
14
|
+
type="button"
|
|
15
|
+
{...props}
|
|
16
|
+
className={clsx(
|
|
17
|
+
'clean-btn',
|
|
18
|
+
styles.tocCollapsibleButton,
|
|
19
|
+
!collapsed && styles.tocCollapsibleButtonExpanded,
|
|
20
|
+
props.className,
|
|
21
|
+
)}>
|
|
22
|
+
<Translate
|
|
23
|
+
id="theme.TOCCollapsible.toggleButtonLabel"
|
|
24
|
+
description="The label used by the button on the collapsible TOC component">
|
|
25
|
+
On this page
|
|
26
|
+
</Translate>
|
|
27
|
+
</button>
|
|
28
|
+
);
|
|
29
|
+
}
|
|
@@ -5,12 +5,6 @@
|
|
|
5
5
|
* LICENSE file in the root directory of this source tree.
|
|
6
6
|
*/
|
|
7
7
|
|
|
8
|
-
.tocCollapsible {
|
|
9
|
-
background-color: var(--ifm-menu-color-background-active);
|
|
10
|
-
border-radius: var(--ifm-global-radius);
|
|
11
|
-
margin: 1rem 0;
|
|
12
|
-
}
|
|
13
|
-
|
|
14
8
|
.tocCollapsibleButton {
|
|
15
9
|
font-size: inherit;
|
|
16
10
|
display: flex;
|
|
@@ -30,21 +24,6 @@
|
|
|
30
24
|
transition: transform var(--ifm-transition-fast);
|
|
31
25
|
}
|
|
32
26
|
|
|
33
|
-
.
|
|
34
|
-
border-left: none;
|
|
35
|
-
border-top: 1px solid var(--ifm-color-emphasis-300);
|
|
36
|
-
padding: 0.2rem 0;
|
|
37
|
-
font-size: 15px;
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
.tocCollapsibleContent ul li {
|
|
41
|
-
margin: 0.4rem 0.8rem;
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
.tocCollapsibleContent a {
|
|
45
|
-
display: block;
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
.tocCollapsibleExpanded .tocCollapsibleButton::after {
|
|
27
|
+
.tocCollapsibleButtonExpanded::after {
|
|
49
28
|
transform: none;
|
|
50
29
|
}
|
|
@@ -6,10 +6,10 @@
|
|
|
6
6
|
*/
|
|
7
7
|
import React from 'react';
|
|
8
8
|
import clsx from 'clsx';
|
|
9
|
-
import Translate from '@docusaurus/Translate';
|
|
10
9
|
import {useCollapsible, Collapsible} from '@docusaurus/theme-common';
|
|
11
|
-
import styles from './
|
|
10
|
+
import styles from './index.module.css';
|
|
12
11
|
import TOCItems from '@theme/TOCItems';
|
|
12
|
+
import CollapseButton from '@theme/TOCCollapsible/CollapseButton';
|
|
13
13
|
export default function TOCCollapsible({
|
|
14
14
|
toc,
|
|
15
15
|
className,
|
|
@@ -23,22 +23,10 @@ export default function TOCCollapsible({
|
|
|
23
23
|
<div
|
|
24
24
|
className={clsx(
|
|
25
25
|
styles.tocCollapsible,
|
|
26
|
-
|
|
27
|
-
[styles.tocCollapsibleExpanded]: !collapsed,
|
|
28
|
-
},
|
|
26
|
+
!collapsed && styles.tocCollapsibleExpanded,
|
|
29
27
|
className,
|
|
30
28
|
)}>
|
|
31
|
-
<
|
|
32
|
-
type="button"
|
|
33
|
-
className={clsx('clean-btn', styles.tocCollapsibleButton)}
|
|
34
|
-
onClick={toggleCollapsed}>
|
|
35
|
-
<Translate
|
|
36
|
-
id="theme.TOCCollapsible.toggleButtonLabel"
|
|
37
|
-
description="The label used by the button on the collapsible TOC component">
|
|
38
|
-
On this page
|
|
39
|
-
</Translate>
|
|
40
|
-
</button>
|
|
41
|
-
|
|
29
|
+
<CollapseButton collapsed={collapsed} onClick={toggleCollapsed} />
|
|
42
30
|
<Collapsible
|
|
43
31
|
lazy
|
|
44
32
|
className={styles.tocCollapsibleContent}
|
|
@@ -0,0 +1,31 @@
|
|
|
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
|
+
.tocCollapsible {
|
|
9
|
+
background-color: var(--ifm-menu-color-background-active);
|
|
10
|
+
border-radius: var(--ifm-global-radius);
|
|
11
|
+
margin: 1rem 0;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
.tocCollapsibleContent > ul {
|
|
15
|
+
border-left: none;
|
|
16
|
+
border-top: 1px solid var(--ifm-color-emphasis-300);
|
|
17
|
+
padding: 0.2rem 0;
|
|
18
|
+
font-size: 15px;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
.tocCollapsibleContent ul li {
|
|
22
|
+
margin: 0.4rem 0.8rem;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
.tocCollapsibleContent a {
|
|
26
|
+
display: block;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
.tocCollapsibleExpanded {
|
|
30
|
+
transform: none;
|
|
31
|
+
}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) Facebook, Inc. and its affiliates.
|
|
3
|
+
*
|
|
4
|
+
* This source code is licensed under the MIT license found in the
|
|
5
|
+
* LICENSE file in the root directory of this source tree.
|
|
6
|
+
*/
|
|
7
|
+
import React from 'react';
|
|
8
|
+
|
|
9
|
+
// Recursive component rendering the toc tree
|
|
10
|
+
function TOCItemTree({toc, className, linkClassName, isChild}) {
|
|
11
|
+
if (!toc.length) {
|
|
12
|
+
return null;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
return (
|
|
16
|
+
<ul className={isChild ? undefined : className}>
|
|
17
|
+
{toc.map((heading) => (
|
|
18
|
+
<li key={heading.id}>
|
|
19
|
+
{/* eslint-disable-next-line jsx-a11y/control-has-associated-label */}
|
|
20
|
+
<a
|
|
21
|
+
href={`#${heading.id}`}
|
|
22
|
+
className={linkClassName ?? undefined} // Developer provided the HTML, so assume it's safe.
|
|
23
|
+
// eslint-disable-next-line react/no-danger
|
|
24
|
+
dangerouslySetInnerHTML={{
|
|
25
|
+
__html: heading.value,
|
|
26
|
+
}}
|
|
27
|
+
/>
|
|
28
|
+
<TOCItemTree
|
|
29
|
+
isChild
|
|
30
|
+
toc={heading.children}
|
|
31
|
+
className={className}
|
|
32
|
+
linkClassName={linkClassName}
|
|
33
|
+
/>
|
|
34
|
+
</li>
|
|
35
|
+
))}
|
|
36
|
+
</ul>
|
|
37
|
+
);
|
|
38
|
+
} // Memo only the tree root is enough
|
|
39
|
+
|
|
40
|
+
export default React.memo(TOCItemTree);
|
|
@@ -5,43 +5,12 @@
|
|
|
5
5
|
* LICENSE file in the root directory of this source tree.
|
|
6
6
|
*/
|
|
7
7
|
import React, {useMemo} from 'react';
|
|
8
|
+
import TOCItemTree from '@theme/TOCItems/Tree';
|
|
8
9
|
import {
|
|
9
10
|
useThemeConfig,
|
|
10
11
|
useTOCHighlight,
|
|
11
12
|
useFilteredAndTreeifiedTOC,
|
|
12
|
-
} from '@docusaurus/theme-common';
|
|
13
|
-
|
|
14
|
-
/* eslint-disable jsx-a11y/control-has-associated-label */
|
|
15
|
-
|
|
16
|
-
function TOCItemList({toc, className, linkClassName, isChild}) {
|
|
17
|
-
if (!toc.length) {
|
|
18
|
-
return null;
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
return (
|
|
22
|
-
<ul className={isChild ? undefined : className}>
|
|
23
|
-
{toc.map((heading) => (
|
|
24
|
-
<li key={heading.id}>
|
|
25
|
-
<a
|
|
26
|
-
href={`#${heading.id}`}
|
|
27
|
-
className={linkClassName ?? undefined} // Developer provided the HTML, so assume it's safe.
|
|
28
|
-
// eslint-disable-next-line react/no-danger
|
|
29
|
-
dangerouslySetInnerHTML={{
|
|
30
|
-
__html: heading.value,
|
|
31
|
-
}}
|
|
32
|
-
/>
|
|
33
|
-
<TOCItemList
|
|
34
|
-
isChild
|
|
35
|
-
toc={heading.children}
|
|
36
|
-
className={className}
|
|
37
|
-
linkClassName={linkClassName}
|
|
38
|
-
/>
|
|
39
|
-
</li>
|
|
40
|
-
))}
|
|
41
|
-
</ul>
|
|
42
|
-
);
|
|
43
|
-
}
|
|
44
|
-
|
|
13
|
+
} from '@docusaurus/theme-common';
|
|
45
14
|
export default function TOCItems({
|
|
46
15
|
toc,
|
|
47
16
|
className = 'table-of-contents table-of-contents__left-border',
|
|
@@ -75,7 +44,7 @@ export default function TOCItems({
|
|
|
75
44
|
}, [linkClassName, linkActiveClassName, minHeadingLevel, maxHeadingLevel]);
|
|
76
45
|
useTOCHighlight(tocHighlightConfig);
|
|
77
46
|
return (
|
|
78
|
-
<
|
|
47
|
+
<TOCItemTree
|
|
79
48
|
toc={tocTree}
|
|
80
49
|
className={className}
|
|
81
50
|
linkClassName={linkClassName}
|