@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
package/lib/translations.js
CHANGED
|
@@ -45,6 +45,10 @@ function getNavbarTranslationFile(navbar) {
|
|
|
45
45
|
function translateNavbar(navbar, navbarTranslations) {
|
|
46
46
|
var _navbarTranslations$t;
|
|
47
47
|
|
|
48
|
+
if (!navbarTranslations) {
|
|
49
|
+
return navbar;
|
|
50
|
+
}
|
|
51
|
+
|
|
48
52
|
return { ...navbar,
|
|
49
53
|
title: ((_navbarTranslations$t = navbarTranslations.title) === null || _navbarTranslations$t === void 0 ? void 0 : _navbarTranslations$t.message) ?? navbar.title,
|
|
50
54
|
// TODO handle properly all the navbar item types here!
|
|
@@ -93,6 +97,10 @@ function getFooterTranslationFile(footer) {
|
|
|
93
97
|
function translateFooter(footer, footerTranslations) {
|
|
94
98
|
var _footerTranslations$c;
|
|
95
99
|
|
|
100
|
+
if (!footerTranslations) {
|
|
101
|
+
return footer;
|
|
102
|
+
}
|
|
103
|
+
|
|
96
104
|
const links = isMultiColumnFooterLinks(footer.links) ? footer.links.map(link => {
|
|
97
105
|
var _footerTranslations$;
|
|
98
106
|
|
|
@@ -137,10 +145,12 @@ function translateThemeConfig({
|
|
|
137
145
|
themeConfig,
|
|
138
146
|
translationFiles
|
|
139
147
|
}) {
|
|
148
|
+
var _translationFilesMap$, _translationFilesMap$2;
|
|
149
|
+
|
|
140
150
|
const translationFilesMap = _lodash.default.keyBy(translationFiles, f => f.path);
|
|
141
151
|
|
|
142
152
|
return { ...themeConfig,
|
|
143
|
-
navbar: translateNavbar(themeConfig.navbar, translationFilesMap.navbar
|
|
144
|
-
footer: themeConfig.footer ? translateFooter(themeConfig.footer, translationFilesMap.footer.content) : undefined
|
|
153
|
+
navbar: translateNavbar(themeConfig.navbar, (_translationFilesMap$ = translationFilesMap.navbar) === null || _translationFilesMap$ === void 0 ? void 0 : _translationFilesMap$.content),
|
|
154
|
+
footer: themeConfig.footer ? translateFooter(themeConfig.footer, (_translationFilesMap$2 = translationFilesMap.footer) === null || _translationFilesMap$2 === void 0 ? void 0 : _translationFilesMap$2.content) : undefined
|
|
145
155
|
};
|
|
146
156
|
}
|
|
@@ -6,8 +6,12 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
exports.ThemeConfigSchema = exports.DEFAULT_CONFIG = void 0;
|
|
7
7
|
exports.validateThemeConfig = validateThemeConfig;
|
|
8
8
|
|
|
9
|
+
var _palenight = _interopRequireDefault(require("prism-react-renderer/themes/palenight"));
|
|
10
|
+
|
|
9
11
|
var _utilsValidation = require("@docusaurus/utils-validation");
|
|
10
12
|
|
|
13
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
14
|
+
|
|
11
15
|
/**
|
|
12
16
|
* Copyright (c) Facebook, Inc. and its affiliates.
|
|
13
17
|
*
|
|
@@ -15,37 +19,46 @@ var _utilsValidation = require("@docusaurus/utils-validation");
|
|
|
15
19
|
* LICENSE file in the root directory of this source tree.
|
|
16
20
|
*/
|
|
17
21
|
const DEFAULT_DOCS_CONFIG = {
|
|
18
|
-
versionPersistence: 'localStorage'
|
|
22
|
+
versionPersistence: 'localStorage',
|
|
23
|
+
sidebar: {
|
|
24
|
+
hideable: false,
|
|
25
|
+
autoCollapseCategories: false
|
|
26
|
+
}
|
|
19
27
|
};
|
|
20
28
|
|
|
21
29
|
const DocsSchema = _utilsValidation.Joi.object({
|
|
22
|
-
versionPersistence: _utilsValidation.Joi.string().equal('localStorage', 'none').default(DEFAULT_DOCS_CONFIG.versionPersistence)
|
|
30
|
+
versionPersistence: _utilsValidation.Joi.string().equal('localStorage', 'none').default(DEFAULT_DOCS_CONFIG.versionPersistence),
|
|
31
|
+
sidebar: _utilsValidation.Joi.object({
|
|
32
|
+
hideable: _utilsValidation.Joi.bool().default(DEFAULT_DOCS_CONFIG.sidebar.hideable),
|
|
33
|
+
autoCollapseCategories: _utilsValidation.Joi.bool().default(DEFAULT_DOCS_CONFIG.sidebar.autoCollapseCategories)
|
|
34
|
+
}).default(DEFAULT_DOCS_CONFIG.sidebar)
|
|
23
35
|
}).default(DEFAULT_DOCS_CONFIG);
|
|
24
36
|
|
|
25
37
|
const DEFAULT_COLOR_MODE_CONFIG = {
|
|
26
38
|
defaultMode: 'light',
|
|
27
39
|
disableSwitch: false,
|
|
28
|
-
respectPrefersColorScheme: false
|
|
29
|
-
switchConfig: {
|
|
30
|
-
darkIcon: '🌜',
|
|
31
|
-
darkIconStyle: {},
|
|
32
|
-
lightIcon: '🌞',
|
|
33
|
-
lightIconStyle: {}
|
|
34
|
-
}
|
|
40
|
+
respectPrefersColorScheme: false
|
|
35
41
|
};
|
|
36
42
|
const DEFAULT_CONFIG = {
|
|
37
43
|
colorMode: DEFAULT_COLOR_MODE_CONFIG,
|
|
38
44
|
docs: DEFAULT_DOCS_CONFIG,
|
|
39
45
|
metadata: [],
|
|
40
46
|
prism: {
|
|
41
|
-
additionalLanguages: []
|
|
47
|
+
additionalLanguages: [],
|
|
48
|
+
theme: _palenight.default,
|
|
49
|
+
magicComments: [{
|
|
50
|
+
className: 'theme-code-block-highlighted-line',
|
|
51
|
+
line: 'highlight-next-line',
|
|
52
|
+
block: {
|
|
53
|
+
start: 'highlight-start',
|
|
54
|
+
end: 'highlight-end'
|
|
55
|
+
}
|
|
56
|
+
}]
|
|
42
57
|
},
|
|
43
58
|
navbar: {
|
|
44
59
|
hideOnScroll: false,
|
|
45
60
|
items: []
|
|
46
61
|
},
|
|
47
|
-
hideableSidebar: false,
|
|
48
|
-
autoCollapseSidebarCategories: false,
|
|
49
62
|
tableOfContents: {
|
|
50
63
|
minHeadingLevel: 2,
|
|
51
64
|
maxHeadingLevel: 3
|
|
@@ -57,8 +70,9 @@ const NavbarItemPosition = _utilsValidation.Joi.string().equal('left', 'right').
|
|
|
57
70
|
|
|
58
71
|
const NavbarItemBaseSchema = _utilsValidation.Joi.object({
|
|
59
72
|
label: _utilsValidation.Joi.string(),
|
|
73
|
+
html: _utilsValidation.Joi.string(),
|
|
60
74
|
className: _utilsValidation.Joi.string()
|
|
61
|
-
}) // We allow any unknown attributes on the links (users may need additional
|
|
75
|
+
}).nand('html', 'label') // We allow any unknown attributes on the links (users may need additional
|
|
62
76
|
// attributes like target, aria-role, data-customAttribute...)
|
|
63
77
|
.unknown();
|
|
64
78
|
|
|
@@ -91,9 +105,24 @@ const DocSidebarItemSchema = NavbarItemBaseSchema.append({
|
|
|
91
105
|
docsPluginId: _utilsValidation.Joi.string()
|
|
92
106
|
});
|
|
93
107
|
|
|
108
|
+
const HtmlNavbarItemSchema = _utilsValidation.Joi.object({
|
|
109
|
+
className: _utilsValidation.Joi.string(),
|
|
110
|
+
type: _utilsValidation.Joi.string().equal('html').required(),
|
|
111
|
+
value: _utilsValidation.Joi.string().required()
|
|
112
|
+
}); // A temporary workaround to allow users to add custom navbar items
|
|
113
|
+
// See https://github.com/facebook/docusaurus/issues/7227
|
|
114
|
+
|
|
115
|
+
|
|
116
|
+
const CustomNavbarItemRegexp = /custom-.*/;
|
|
117
|
+
|
|
118
|
+
const CustomNavbarItemSchema = _utilsValidation.Joi.object({
|
|
119
|
+
type: _utilsValidation.Joi.string().regex(CustomNavbarItemRegexp).required()
|
|
120
|
+
}).unknown();
|
|
121
|
+
|
|
94
122
|
const itemWithType = type => {
|
|
95
|
-
//
|
|
96
|
-
const typeSchema =
|
|
123
|
+
// Because equal(undefined) is not supported :/
|
|
124
|
+
const typeSchema = // eslint-disable-next-line no-nested-ternary
|
|
125
|
+
type instanceof RegExp ? _utilsValidation.Joi.string().required().regex(type) : type ? _utilsValidation.Joi.string().required().equal(type) : _utilsValidation.Joi.string().forbidden();
|
|
97
126
|
return _utilsValidation.Joi.object({
|
|
98
127
|
type: typeSchema
|
|
99
128
|
}).unknown().required();
|
|
@@ -114,6 +143,12 @@ const DropdownSubitemSchema = _utilsValidation.Joi.object({
|
|
|
114
143
|
}, {
|
|
115
144
|
is: itemWithType(undefined),
|
|
116
145
|
then: DefaultNavbarItemSchema
|
|
146
|
+
}, {
|
|
147
|
+
is: itemWithType('html'),
|
|
148
|
+
then: HtmlNavbarItemSchema
|
|
149
|
+
}, {
|
|
150
|
+
is: itemWithType(CustomNavbarItemRegexp),
|
|
151
|
+
then: CustomNavbarItemSchema
|
|
117
152
|
}, {
|
|
118
153
|
is: _utilsValidation.Joi.alternatives().try(itemWithType('dropdown'), itemWithType('docsVersionDropdown'), itemWithType('localeDropdown'), itemWithType('search')),
|
|
119
154
|
then: _utilsValidation.Joi.forbidden().messages({
|
|
@@ -169,6 +204,12 @@ const NavbarItemSchema = _utilsValidation.Joi.object({
|
|
|
169
204
|
}, {
|
|
170
205
|
is: itemWithType('search'),
|
|
171
206
|
then: SearchItemSchema
|
|
207
|
+
}, {
|
|
208
|
+
is: itemWithType('html'),
|
|
209
|
+
then: HtmlNavbarItemSchema
|
|
210
|
+
}, {
|
|
211
|
+
is: itemWithType(CustomNavbarItemRegexp),
|
|
212
|
+
then: CustomNavbarItemSchema
|
|
172
213
|
}, {
|
|
173
214
|
is: itemWithType(undefined),
|
|
174
215
|
then: _utilsValidation.Joi.object().when('.', {
|
|
@@ -189,14 +230,10 @@ const ColorModeSchema = _utilsValidation.Joi.object({
|
|
|
189
230
|
defaultMode: _utilsValidation.Joi.string().equal('dark', 'light').default(DEFAULT_COLOR_MODE_CONFIG.defaultMode),
|
|
190
231
|
disableSwitch: _utilsValidation.Joi.bool().default(DEFAULT_COLOR_MODE_CONFIG.disableSwitch),
|
|
191
232
|
respectPrefersColorScheme: _utilsValidation.Joi.bool().default(DEFAULT_COLOR_MODE_CONFIG.respectPrefersColorScheme),
|
|
192
|
-
switchConfig: _utilsValidation.Joi.
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
lightIconStyle: _utilsValidation.Joi.object().default(DEFAULT_COLOR_MODE_CONFIG.switchConfig.lightIconStyle)
|
|
197
|
-
}).default(DEFAULT_COLOR_MODE_CONFIG.switchConfig)
|
|
198
|
-
}).default(DEFAULT_COLOR_MODE_CONFIG); // schema can probably be improved
|
|
199
|
-
|
|
233
|
+
switchConfig: _utilsValidation.Joi.any().forbidden().messages({
|
|
234
|
+
'any.unknown': 'colorMode.switchConfig is deprecated. If you want to customize the icons for light and dark mode, swizzle IconLightMode, IconDarkMode, or ColorModeToggle instead.'
|
|
235
|
+
})
|
|
236
|
+
}).default(DEFAULT_COLOR_MODE_CONFIG);
|
|
200
237
|
|
|
201
238
|
const HtmlMetadataSchema = _utilsValidation.Joi.object({
|
|
202
239
|
id: _utilsValidation.Joi.string(),
|
|
@@ -266,7 +303,7 @@ const ThemeConfigSchema = _utilsValidation.Joi.object({
|
|
|
266
303
|
style: _utilsValidation.Joi.string().equal('dark', 'light').default('light'),
|
|
267
304
|
logo: _utilsValidation.Joi.object({
|
|
268
305
|
alt: _utilsValidation.Joi.string().allow(''),
|
|
269
|
-
src: _utilsValidation.Joi.string(),
|
|
306
|
+
src: _utilsValidation.Joi.string().required(),
|
|
270
307
|
srcDark: _utilsValidation.Joi.string(),
|
|
271
308
|
// TODO infer this from reading the image
|
|
272
309
|
width: _utilsValidation.Joi.alternatives().try(_utilsValidation.Joi.string(), _utilsValidation.Joi.number()),
|
|
@@ -285,16 +322,28 @@ const ThemeConfigSchema = _utilsValidation.Joi.object({
|
|
|
285
322
|
theme: _utilsValidation.Joi.object({
|
|
286
323
|
plain: _utilsValidation.Joi.alternatives().try(_utilsValidation.Joi.array(), _utilsValidation.Joi.object()).required(),
|
|
287
324
|
styles: _utilsValidation.Joi.alternatives().try(_utilsValidation.Joi.array(), _utilsValidation.Joi.object()).required()
|
|
288
|
-
}),
|
|
325
|
+
}).default(DEFAULT_CONFIG.prism.theme),
|
|
289
326
|
darkTheme: _utilsValidation.Joi.object({
|
|
290
327
|
plain: _utilsValidation.Joi.alternatives().try(_utilsValidation.Joi.array(), _utilsValidation.Joi.object()).required(),
|
|
291
328
|
styles: _utilsValidation.Joi.alternatives().try(_utilsValidation.Joi.array(), _utilsValidation.Joi.object()).required()
|
|
292
329
|
}),
|
|
293
330
|
defaultLanguage: _utilsValidation.Joi.string(),
|
|
294
|
-
additionalLanguages: _utilsValidation.Joi.array().items(_utilsValidation.Joi.string()).default(DEFAULT_CONFIG.prism.additionalLanguages)
|
|
331
|
+
additionalLanguages: _utilsValidation.Joi.array().items(_utilsValidation.Joi.string()).default(DEFAULT_CONFIG.prism.additionalLanguages),
|
|
332
|
+
magicComments: _utilsValidation.Joi.array().items(_utilsValidation.Joi.object({
|
|
333
|
+
className: _utilsValidation.Joi.string().required(),
|
|
334
|
+
line: _utilsValidation.Joi.string(),
|
|
335
|
+
block: _utilsValidation.Joi.object({
|
|
336
|
+
start: _utilsValidation.Joi.string().required(),
|
|
337
|
+
end: _utilsValidation.Joi.string().required()
|
|
338
|
+
})
|
|
339
|
+
}).or('line', 'block')).default(DEFAULT_CONFIG.prism.magicComments)
|
|
295
340
|
}).default(DEFAULT_CONFIG.prism).unknown(),
|
|
296
|
-
hideableSidebar: _utilsValidation.Joi.
|
|
297
|
-
|
|
341
|
+
hideableSidebar: _utilsValidation.Joi.forbidden().messages({
|
|
342
|
+
'any.unknown': 'themeConfig.hideableSidebar has been moved to themeConfig.docs.sidebar.hideable.'
|
|
343
|
+
}),
|
|
344
|
+
autoCollapseSidebarCategories: _utilsValidation.Joi.forbidden().messages({
|
|
345
|
+
'any.unknown': 'themeConfig.autoCollapseSidebarCategories has been moved to themeConfig.docs.sidebar.autoCollapseCategories.'
|
|
346
|
+
}),
|
|
298
347
|
sidebarCollapsible: _utilsValidation.Joi.forbidden().messages({
|
|
299
348
|
'any.unknown': 'The themeConfig.sidebarCollapsible has been moved to docs plugin options. See: https://docusaurus.io/docs/api/plugins/@docusaurus/plugin-content-docs'
|
|
300
349
|
}),
|
|
@@ -4,110 +4,14 @@
|
|
|
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 clsx from 'clsx';
|
|
9
9
|
import {translate} from '@docusaurus/Translate';
|
|
10
|
+
import {ThemeClassNames, useBackToTopButton} from '@docusaurus/theme-common';
|
|
10
11
|
import styles from './styles.module.css';
|
|
11
|
-
import {
|
|
12
|
-
ThemeClassNames,
|
|
13
|
-
useScrollPosition,
|
|
14
|
-
useLocationChange,
|
|
15
|
-
} from '@docusaurus/theme-common';
|
|
16
|
-
const threshold = 300; // Not all have support for smooth scrolling (particularly Safari mobile iOS)
|
|
17
|
-
// TODO proper detection is currently unreliable!
|
|
18
|
-
// see https://github.com/wessberg/scroll-behavior-polyfill/issues/16
|
|
19
|
-
|
|
20
|
-
const SupportsNativeSmoothScrolling = false; // const SupportsNativeSmoothScrolling =
|
|
21
|
-
// ExecutionEnvironment.canUseDOM &&
|
|
22
|
-
// 'scrollBehavior' in document.documentElement.style;
|
|
23
|
-
|
|
24
|
-
function smoothScrollTopNative() {
|
|
25
|
-
window.scrollTo({
|
|
26
|
-
top: 0,
|
|
27
|
-
behavior: 'smooth',
|
|
28
|
-
});
|
|
29
|
-
return () => {
|
|
30
|
-
// Nothing to cancel, it's natively cancelled if user tries to scroll down
|
|
31
|
-
};
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
function smoothScrollTopPolyfill() {
|
|
35
|
-
let raf = null;
|
|
36
|
-
|
|
37
|
-
function rafRecursion() {
|
|
38
|
-
const currentScroll = document.documentElement.scrollTop;
|
|
39
|
-
|
|
40
|
-
if (currentScroll > 0) {
|
|
41
|
-
raf = requestAnimationFrame(rafRecursion);
|
|
42
|
-
window.scrollTo(0, Math.floor(currentScroll * 0.85));
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
rafRecursion(); // Break the recursion. Prevents the user from "fighting" against that
|
|
47
|
-
// recursion producing a weird UX
|
|
48
|
-
|
|
49
|
-
return () => raf && cancelAnimationFrame(raf);
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
function useSmoothScrollToTop() {
|
|
53
|
-
const lastCancelRef = useRef(null);
|
|
54
|
-
|
|
55
|
-
function smoothScrollTop() {
|
|
56
|
-
lastCancelRef.current = SupportsNativeSmoothScrolling
|
|
57
|
-
? smoothScrollTopNative()
|
|
58
|
-
: smoothScrollTopPolyfill();
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
return {
|
|
62
|
-
smoothScrollTop,
|
|
63
|
-
cancelScrollToTop: () => lastCancelRef.current?.(),
|
|
64
|
-
};
|
|
65
|
-
}
|
|
66
|
-
|
|
67
12
|
export default function BackToTopButton() {
|
|
68
|
-
const
|
|
69
|
-
|
|
70
|
-
const {smoothScrollTop, cancelScrollToTop} = useSmoothScrollToTop();
|
|
71
|
-
useScrollPosition(({scrollY: scrollTop}, lastPosition) => {
|
|
72
|
-
const lastScrollTop = lastPosition?.scrollY; // No lastScrollTop means component is just being mounted.
|
|
73
|
-
// Not really a scroll event from the user, so we ignore it
|
|
74
|
-
|
|
75
|
-
if (!lastScrollTop) {
|
|
76
|
-
return;
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
if (isFocusedAnchor.current) {
|
|
80
|
-
isFocusedAnchor.current = false;
|
|
81
|
-
return;
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
const isScrollingUp = scrollTop < lastScrollTop;
|
|
85
|
-
|
|
86
|
-
if (!isScrollingUp) {
|
|
87
|
-
cancelScrollToTop();
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
if (scrollTop < threshold) {
|
|
91
|
-
setShow(false);
|
|
92
|
-
return;
|
|
93
|
-
}
|
|
94
|
-
|
|
95
|
-
if (isScrollingUp) {
|
|
96
|
-
const documentHeight = document.documentElement.scrollHeight;
|
|
97
|
-
const windowHeight = window.innerHeight;
|
|
98
|
-
|
|
99
|
-
if (scrollTop + windowHeight < documentHeight) {
|
|
100
|
-
setShow(true);
|
|
101
|
-
}
|
|
102
|
-
} else {
|
|
103
|
-
setShow(false);
|
|
104
|
-
}
|
|
105
|
-
});
|
|
106
|
-
useLocationChange((locationChangeEvent) => {
|
|
107
|
-
if (locationChangeEvent.location.hash) {
|
|
108
|
-
isFocusedAnchor.current = true;
|
|
109
|
-
setShow(false);
|
|
110
|
-
}
|
|
13
|
+
const {shown, scrollToTop} = useBackToTopButton({
|
|
14
|
+
threshold: 300,
|
|
111
15
|
});
|
|
112
16
|
return (
|
|
113
17
|
<button
|
|
@@ -120,12 +24,10 @@ export default function BackToTopButton() {
|
|
|
120
24
|
'clean-btn',
|
|
121
25
|
ThemeClassNames.common.backToTopButton,
|
|
122
26
|
styles.backToTopButton,
|
|
123
|
-
|
|
124
|
-
[styles.backToTopButtonShow]: show,
|
|
125
|
-
},
|
|
27
|
+
shown && styles.backToTopButtonShow,
|
|
126
28
|
)}
|
|
127
29
|
type="button"
|
|
128
|
-
onClick={
|
|
30
|
+
onClick={scrollToTop}
|
|
129
31
|
/>
|
|
130
32
|
);
|
|
131
33
|
}
|
|
@@ -8,6 +8,7 @@ import React from 'react';
|
|
|
8
8
|
import Layout from '@theme/Layout';
|
|
9
9
|
import Link from '@docusaurus/Link';
|
|
10
10
|
import {translate} from '@docusaurus/Translate';
|
|
11
|
+
import {PageMetadata} from '@docusaurus/theme-common';
|
|
11
12
|
|
|
12
13
|
function Year({year, posts}) {
|
|
13
14
|
return (
|
|
@@ -45,7 +46,7 @@ function YearsSection({years}) {
|
|
|
45
46
|
function listPostsByYears(blogPosts) {
|
|
46
47
|
const postsByYear = blogPosts.reduceRight((posts, post) => {
|
|
47
48
|
const year = post.metadata.date.split('-')[0];
|
|
48
|
-
const yearPosts = posts.get(year)
|
|
49
|
+
const yearPosts = posts.get(year) ?? [];
|
|
49
50
|
return posts.set(year, [post, ...yearPosts]);
|
|
50
51
|
}, new Map());
|
|
51
52
|
return Array.from(postsByYear, ([year, posts]) => ({
|
|
@@ -67,14 +68,17 @@ export default function BlogArchive({archive}) {
|
|
|
67
68
|
});
|
|
68
69
|
const years = listPostsByYears(archive.blogPosts);
|
|
69
70
|
return (
|
|
70
|
-
|
|
71
|
-
<
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
<
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
71
|
+
<>
|
|
72
|
+
<PageMetadata title={title} description={description} />
|
|
73
|
+
<Layout>
|
|
74
|
+
<header className="hero hero--primary">
|
|
75
|
+
<div className="container">
|
|
76
|
+
<h1 className="hero__title">{title}</h1>
|
|
77
|
+
<p className="hero__subtitle">{description}</p>
|
|
78
|
+
</div>
|
|
79
|
+
</header>
|
|
80
|
+
<main>{years.length > 0 && <YearsSection years={years} />}</main>
|
|
81
|
+
</Layout>
|
|
82
|
+
</>
|
|
79
83
|
);
|
|
80
84
|
}
|
|
@@ -15,11 +15,7 @@ export default function BlogLayout(props) {
|
|
|
15
15
|
<Layout {...layoutProps}>
|
|
16
16
|
<div className="container margin-vert--lg">
|
|
17
17
|
<div className="row">
|
|
18
|
-
{
|
|
19
|
-
<aside className="col col--3">
|
|
20
|
-
<BlogSidebar sidebar={sidebar} />
|
|
21
|
-
</aside>
|
|
22
|
-
)}
|
|
18
|
+
<BlogSidebar sidebar={sidebar} />
|
|
23
19
|
<main
|
|
24
20
|
className={clsx('col', {
|
|
25
21
|
'col--7': hasSidebar,
|
|
@@ -9,9 +9,16 @@ import useDocusaurusContext from '@docusaurus/useDocusaurusContext';
|
|
|
9
9
|
import BlogLayout from '@theme/BlogLayout';
|
|
10
10
|
import BlogPostItem from '@theme/BlogPostItem';
|
|
11
11
|
import BlogListPaginator from '@theme/BlogListPaginator';
|
|
12
|
-
import {
|
|
13
|
-
|
|
14
|
-
|
|
12
|
+
import {
|
|
13
|
+
PageMetadata,
|
|
14
|
+
HtmlClassNameProvider,
|
|
15
|
+
ThemeClassNames,
|
|
16
|
+
} from '@docusaurus/theme-common';
|
|
17
|
+
import SearchMetadata from '@theme/SearchMetadata';
|
|
18
|
+
import clsx from 'clsx';
|
|
19
|
+
|
|
20
|
+
function BlogListPageMetadata(props) {
|
|
21
|
+
const {metadata} = props;
|
|
15
22
|
const {
|
|
16
23
|
siteConfig: {title: siteTitle},
|
|
17
24
|
} = useDocusaurusContext();
|
|
@@ -19,16 +26,17 @@ export default function BlogListPage(props) {
|
|
|
19
26
|
const isBlogOnlyMode = permalink === '/';
|
|
20
27
|
const title = isBlogOnlyMode ? siteTitle : blogTitle;
|
|
21
28
|
return (
|
|
22
|
-
|
|
23
|
-
title={title}
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
29
|
+
<>
|
|
30
|
+
<PageMetadata title={title} description={blogDescription} />
|
|
31
|
+
<SearchMetadata tag="blog_posts_list" />
|
|
32
|
+
</>
|
|
33
|
+
);
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
function BlogListPageContent(props) {
|
|
37
|
+
const {metadata, items, sidebar} = props;
|
|
38
|
+
return (
|
|
39
|
+
<BlogLayout sidebar={sidebar}>
|
|
32
40
|
{items.map(({content: BlogPostContent}) => (
|
|
33
41
|
<BlogPostItem
|
|
34
42
|
key={BlogPostContent.metadata.permalink}
|
|
@@ -43,3 +51,16 @@ export default function BlogListPage(props) {
|
|
|
43
51
|
</BlogLayout>
|
|
44
52
|
);
|
|
45
53
|
}
|
|
54
|
+
|
|
55
|
+
export default function BlogListPage(props) {
|
|
56
|
+
return (
|
|
57
|
+
<HtmlClassNameProvider
|
|
58
|
+
className={clsx(
|
|
59
|
+
ThemeClassNames.wrapper.blogPages,
|
|
60
|
+
ThemeClassNames.page.blogListPage,
|
|
61
|
+
)}>
|
|
62
|
+
<BlogListPageMetadata {...props} />
|
|
63
|
+
<BlogListPageContent {...props} />
|
|
64
|
+
</HtmlClassNameProvider>
|
|
65
|
+
);
|
|
66
|
+
}
|
|
@@ -18,34 +18,31 @@ export default function BlogListPaginator(props) {
|
|
|
18
18
|
message: 'Blog list page navigation',
|
|
19
19
|
description: 'The ARIA label for the blog pagination',
|
|
20
20
|
})}>
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
/>
|
|
47
|
-
)}
|
|
48
|
-
</div>
|
|
21
|
+
{previousPage && (
|
|
22
|
+
<PaginatorNavLink
|
|
23
|
+
permalink={previousPage}
|
|
24
|
+
title={
|
|
25
|
+
<Translate
|
|
26
|
+
id="theme.blog.paginator.newerEntries"
|
|
27
|
+
description="The label used to navigate to the newer blog posts page (previous page)">
|
|
28
|
+
Newer Entries
|
|
29
|
+
</Translate>
|
|
30
|
+
}
|
|
31
|
+
/>
|
|
32
|
+
)}
|
|
33
|
+
{nextPage && (
|
|
34
|
+
<PaginatorNavLink
|
|
35
|
+
permalink={nextPage}
|
|
36
|
+
title={
|
|
37
|
+
<Translate
|
|
38
|
+
id="theme.blog.paginator.olderEntries"
|
|
39
|
+
description="The label used to navigate to the older blog posts page (next page)">
|
|
40
|
+
Older Entries
|
|
41
|
+
</Translate>
|
|
42
|
+
}
|
|
43
|
+
isNext
|
|
44
|
+
/>
|
|
45
|
+
)}
|
|
49
46
|
</nav>
|
|
50
47
|
);
|
|
51
48
|
}
|
|
@@ -6,15 +6,24 @@
|
|
|
6
6
|
*/
|
|
7
7
|
import React from 'react';
|
|
8
8
|
import Link from '@docusaurus/Link';
|
|
9
|
-
|
|
9
|
+
|
|
10
|
+
function MaybeLink(props) {
|
|
11
|
+
if (props.href) {
|
|
12
|
+
return <Link {...props} />;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
return <>{props.children}</>;
|
|
16
|
+
}
|
|
17
|
+
|
|
10
18
|
export default function BlogPostAuthor({author}) {
|
|
11
|
-
const {name, title, url, imageURL} = author;
|
|
19
|
+
const {name, title, url, imageURL, email} = author;
|
|
20
|
+
const link = url || (email && `mailto:${email}`) || undefined;
|
|
12
21
|
return (
|
|
13
22
|
<div className="avatar margin-bottom--sm">
|
|
14
23
|
{imageURL && (
|
|
15
|
-
<
|
|
16
|
-
<img className=
|
|
17
|
-
</
|
|
24
|
+
<MaybeLink href={link} className="avatar__photo-link">
|
|
25
|
+
<img className="avatar__photo" src={imageURL} alt={name} />
|
|
26
|
+
</MaybeLink>
|
|
18
27
|
)}
|
|
19
28
|
|
|
20
29
|
{name && (
|
|
@@ -24,9 +33,9 @@ export default function BlogPostAuthor({author}) {
|
|
|
24
33
|
itemScope
|
|
25
34
|
itemType="https://schema.org/Person">
|
|
26
35
|
<div className="avatar__name">
|
|
27
|
-
<
|
|
36
|
+
<MaybeLink href={link} itemProp="url">
|
|
28
37
|
<span itemProp="name">{name}</span>
|
|
29
|
-
</
|
|
38
|
+
</MaybeLink>
|
|
30
39
|
</div>
|
|
31
40
|
{title && (
|
|
32
41
|
<small className="avatar__subtitle" itemProp="description">
|
|
@@ -6,13 +6,12 @@
|
|
|
6
6
|
*/
|
|
7
7
|
import React from 'react';
|
|
8
8
|
import clsx from 'clsx';
|
|
9
|
-
import {MDXProvider} from '@mdx-js/react';
|
|
10
9
|
import Translate, {translate} from '@docusaurus/Translate';
|
|
11
10
|
import Link from '@docusaurus/Link';
|
|
12
11
|
import {useBaseUrlUtils} from '@docusaurus/useBaseUrl';
|
|
13
12
|
import {usePluralForm} from '@docusaurus/theme-common';
|
|
14
13
|
import {blogPostContainerID} from '@docusaurus/utils-common';
|
|
15
|
-
import
|
|
14
|
+
import MDXContent from '@theme/MDXContent';
|
|
16
15
|
import EditThisPage from '@theme/EditThisPage';
|
|
17
16
|
import styles from './styles.module.css';
|
|
18
17
|
import TagsListInline from '@theme/TagsListInline';
|
|
@@ -108,14 +107,15 @@ export default function BlogPostItem(props) {
|
|
|
108
107
|
id={isBlogPostPage ? blogPostContainerID : undefined}
|
|
109
108
|
className="markdown"
|
|
110
109
|
itemProp="articleBody">
|
|
111
|
-
<
|
|
110
|
+
<MDXContent>{children}</MDXContent>
|
|
112
111
|
</div>
|
|
113
112
|
|
|
114
113
|
{(tagsExists || truncated) && (
|
|
115
114
|
<footer
|
|
116
|
-
className={clsx(
|
|
117
|
-
|
|
118
|
-
|
|
115
|
+
className={clsx(
|
|
116
|
+
'row docusaurus-mt-lg',
|
|
117
|
+
isBlogPostPage && styles.blogPostDetailsFull,
|
|
118
|
+
)}>
|
|
119
119
|
{tagsExists && (
|
|
120
120
|
<div
|
|
121
121
|
className={clsx('col', {
|