@docusaurus/theme-classic 2.0.0-beta.15a2b59f9 → 2.0.0-beta.17
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -2
- package/lib/admonitions.css +35 -0
- package/{lib-next/theme/Toggle/styles.module.css → lib/deps.d.ts} +5 -9
- package/lib/getSwizzleConfig.js +125 -0
- package/lib/index.js +36 -41
- package/lib/prism-include-languages.js +9 -5
- package/lib/theme-classic.d.ts +771 -0
- package/lib/translations.js +40 -34
- package/lib/types.d.ts +0 -587
- package/lib/validateThemeConfig.js +242 -250
- package/lib-next/theme/Admonition/index.js +101 -0
- package/lib-next/theme/AnnouncementBar/index.js +8 -16
- package/lib-next/theme/AnnouncementBar/styles.module.css +23 -32
- package/lib-next/theme/BackToTopButton/index.js +131 -0
- package/lib-next/theme/BackToTopButton/styles.module.css +44 -0
- package/lib-next/theme/BlogArchivePage/index.js +80 -0
- package/lib-next/theme/BlogLayout/index.js +37 -0
- package/lib-next/theme/BlogListPage/index.js +18 -29
- package/lib-next/theme/BlogListPaginator/index.js +13 -16
- package/lib-next/theme/BlogPostAuthor/index.js +52 -0
- package/{lib/theme/IconEdit → lib-next/theme/BlogPostAuthor}/styles.module.css +4 -3
- package/lib-next/theme/BlogPostAuthors/index.js +44 -0
- package/{src/theme/Toggle → lib-next/theme/BlogPostAuthors}/styles.module.css +11 -7
- package/lib-next/theme/BlogPostItem/index.js +94 -96
- package/lib-next/theme/BlogPostPage/index.js +75 -39
- package/lib-next/theme/BlogPostPaginator/index.js +12 -19
- package/lib-next/theme/BlogSidebar/index.js +11 -13
- package/lib-next/theme/BlogSidebar/styles.module.css +4 -2
- package/lib-next/theme/BlogTagsListPage/index.js +15 -59
- package/lib-next/theme/BlogTagsPostsPage/index.js +33 -41
- package/lib-next/theme/CodeBlock/index.js +64 -154
- package/lib-next/theme/CodeBlock/styles.module.css +17 -9
- package/lib-next/theme/ColorModeToggle/index.js +83 -0
- package/lib-next/theme/ColorModeToggle/styles.module.css +51 -0
- package/lib-next/theme/Details/index.js +21 -0
- package/lib-next/theme/Details/styles.module.css +13 -0
- package/lib-next/theme/DocBreadcrumbs/index.js +76 -0
- package/lib-next/theme/DocBreadcrumbs/styles.module.css +26 -0
- package/lib-next/theme/DocCard/index.js +91 -0
- package/lib-next/theme/DocCard/styles.module.css +43 -0
- package/lib-next/theme/DocCardList/index.js +19 -0
- package/lib-next/theme/DocCategoryGeneratedIndexPage/index.js +54 -0
- package/lib-next/theme/DocCategoryGeneratedIndexPage/styles.module.css +18 -0
- package/lib-next/theme/DocItem/index.js +53 -58
- package/lib-next/theme/DocItem/styles.module.css +6 -10
- package/lib-next/theme/DocItemFooter/index.js +79 -0
- package/{lib/theme/DocItem → lib-next/theme/DocItemFooter}/styles.module.css +1 -9
- package/lib-next/theme/DocPage/index.js +54 -55
- package/lib-next/theme/DocPage/styles.module.css +9 -3
- package/lib-next/theme/DocPaginator/index.js +15 -24
- package/lib-next/theme/DocSidebar/index.js +65 -286
- package/lib-next/theme/DocSidebar/styles.module.css +5 -22
- package/lib-next/theme/DocSidebarItem/index.js +264 -0
- package/{lib/theme/BlogPostItem → lib-next/theme/DocSidebarItem}/styles.module.css +5 -10
- package/lib-next/theme/DocSidebarItems/index.js +28 -0
- package/lib-next/theme/DocTagDocListPage/index.js +89 -0
- package/lib-next/theme/DocTagsListPage/index.js +35 -0
- package/lib-next/theme/DocVersionBadge/index.js +34 -0
- package/lib-next/theme/DocVersionBanner/index.js +32 -15
- package/lib-next/theme/EditThisPage/index.js +6 -1
- package/lib-next/theme/ErrorPageContent.js +35 -0
- package/lib-next/theme/Footer/index.js +95 -40
- package/lib-next/theme/Footer/styles.module.css +2 -1
- package/lib-next/theme/Heading/index.js +39 -48
- package/lib-next/theme/Heading/styles.module.css +25 -5
- package/lib-next/theme/IconArrow/index.js +2 -5
- package/lib-next/theme/IconClose/index.js +23 -0
- package/lib-next/theme/IconDarkMode/index.js +17 -0
- package/lib-next/theme/IconEdit/index.js +2 -5
- package/lib-next/theme/IconExternalLink/index.js +2 -5
- package/lib-next/theme/IconLanguage/index.js +5 -8
- package/lib-next/theme/IconLightMode/index.js +17 -0
- package/lib-next/theme/IconMenu/index.js +7 -5
- package/lib-next/theme/LastUpdated/index.js +3 -2
- package/lib-next/theme/Layout/index.js +5 -7
- package/lib-next/theme/LayoutHead/index.js +27 -32
- package/lib-next/theme/LayoutProviders/index.js +15 -9
- package/lib-next/theme/Logo/index.js +25 -24
- package/lib-next/theme/MDXComponents/index.js +59 -30
- package/{src/theme/hooks → lib-next/theme/MDXComponents}/styles.css +7 -2
- package/lib-next/theme/MDXPage/index.js +10 -12
- package/lib-next/theme/Navbar/index.js +199 -64
- package/lib-next/theme/Navbar/styles.module.css +10 -3
- package/lib-next/theme/NavbarItem/DefaultNavbarItem.js +35 -201
- package/lib-next/theme/NavbarItem/DocNavbarItem.js +11 -8
- package/lib-next/theme/NavbarItem/DocSidebarNavbarItem.js +73 -0
- package/lib-next/theme/NavbarItem/DocsVersionDropdownNavbarItem.js +34 -20
- package/lib-next/theme/NavbarItem/DocsVersionNavbarItem.js +4 -1
- package/lib-next/theme/NavbarItem/DropdownNavbarItem.js +156 -0
- package/lib-next/theme/NavbarItem/{LocaleDropdownNavbarItem.js → LocaleDropdownNavbarItem/index.js} +12 -13
- package/{lib/theme/hooks/styles.css → lib-next/theme/NavbarItem/LocaleDropdownNavbarItem/styles.module.css} +3 -2
- package/lib-next/theme/NavbarItem/NavbarNavLink.js +70 -0
- package/lib-next/theme/NavbarItem/index.js +26 -14
- package/lib-next/theme/{UserPreferencesContext.js → NavbarItem/utils.js} +3 -3
- package/lib-next/theme/NotFound.js +1 -4
- package/lib-next/theme/PaginatorNavLink/index.js +17 -0
- package/lib-next/theme/SearchBar.js +1 -1
- package/lib-next/theme/SearchMetadata/index.js +34 -0
- package/lib-next/theme/Seo/index.js +11 -7
- package/lib-next/theme/SkipToContent/index.js +3 -5
- package/lib-next/theme/SkipToContent/styles.module.css +7 -0
- package/lib-next/theme/TOC/index.js +12 -39
- package/lib-next/theme/TOC/styles.module.css +1 -1
- package/lib-next/theme/TOCCollapsible/index.js +54 -0
- package/lib-next/theme/TOCCollapsible/styles.module.css +50 -0
- package/lib-next/theme/TOCInline/index.js +10 -31
- package/lib-next/theme/TOCItems/index.js +85 -0
- package/lib-next/theme/TabItem/index.js +1 -4
- package/lib-next/theme/Tabs/__tests__/index.test.js +146 -0
- package/lib-next/theme/Tabs/index.js +108 -50
- package/lib-next/theme/Tabs/styles.module.css +0 -13
- package/lib-next/theme/Tag/index.js +24 -0
- package/lib-next/theme/Tag/styles.module.css +70 -0
- package/lib-next/theme/TagsListByLetter/index.js +40 -0
- package/lib-next/theme/{hooks/styles.css → TagsListByLetter/styles.module.css} +3 -2
- package/lib-next/theme/TagsListInline/index.js +31 -0
- package/lib-next/theme/TagsListInline/styles.module.css +15 -0
- package/lib-next/theme/ThemedImage/index.js +7 -10
- package/lib-next/theme/ThemedImage/styles.module.css +2 -2
- package/lib-next/theme/prism-include-languages.js +17 -15
- package/package.json +31 -31
- package/src/admonitions.css +35 -0
- package/src/deps.d.ts +13 -0
- package/src/getSwizzleConfig.ts +123 -0
- package/src/index.ts +39 -61
- package/{lib-next/prism-include-languages.js → src/prism-include-languages.ts} +0 -0
- package/src/theme/Admonition/index.tsx +106 -0
- package/src/theme/AnnouncementBar/index.tsx +9 -15
- package/src/theme/AnnouncementBar/styles.module.css +23 -32
- package/src/theme/BackToTopButton/index.tsx +143 -0
- package/src/theme/BackToTopButton/styles.module.css +44 -0
- package/src/theme/BlogArchivePage/index.tsx +91 -0
- package/src/theme/BlogLayout/index.tsx +42 -0
- package/src/theme/BlogListPage/index.tsx +19 -28
- package/src/theme/BlogListPaginator/index.tsx +13 -15
- package/src/theme/BlogPostAuthor/index.tsx +54 -0
- package/{lib/theme/MDXPage → src/theme/BlogPostAuthor}/styles.module.css +4 -2
- package/src/theme/BlogPostAuthors/index.tsx +49 -0
- package/src/theme/BlogPostAuthors/styles.module.css +21 -0
- package/src/theme/BlogPostItem/index.tsx +84 -90
- package/src/theme/BlogPostPage/index.tsx +77 -38
- package/src/theme/BlogPostPaginator/index.tsx +12 -18
- package/src/theme/BlogSidebar/index.tsx +11 -13
- package/src/theme/BlogSidebar/styles.module.css +4 -2
- package/src/theme/BlogTagsListPage/index.tsx +15 -60
- package/src/theme/BlogTagsPostsPage/index.tsx +32 -40
- package/src/theme/CodeBlock/index.tsx +68 -156
- package/src/theme/CodeBlock/styles.module.css +17 -9
- package/src/theme/ColorModeToggle/index.tsx +92 -0
- package/src/theme/ColorModeToggle/styles.module.css +51 -0
- package/src/theme/Details/index.tsx +25 -0
- package/src/theme/Details/styles.module.css +13 -0
- package/src/theme/DocBreadcrumbs/index.tsx +91 -0
- package/src/theme/DocBreadcrumbs/styles.module.css +26 -0
- package/src/theme/DocCard/index.tsx +109 -0
- package/src/theme/DocCard/styles.module.css +43 -0
- package/src/theme/DocCardList/index.tsx +27 -0
- package/src/theme/DocCategoryGeneratedIndexPage/index.tsx +59 -0
- package/src/theme/DocCategoryGeneratedIndexPage/styles.module.css +18 -0
- package/src/theme/DocItem/index.tsx +56 -58
- package/src/theme/DocItem/styles.module.css +6 -10
- package/src/theme/DocItemFooter/index.tsx +91 -0
- package/{lib/theme/Toggle → src/theme/DocItemFooter}/styles.module.css +9 -8
- package/src/theme/DocPage/index.tsx +53 -49
- package/src/theme/DocPage/styles.module.css +9 -3
- package/src/theme/DocPaginator/index.tsx +15 -23
- package/src/theme/DocSidebar/index.tsx +76 -298
- package/src/theme/DocSidebar/styles.module.css +5 -22
- package/src/theme/DocSidebarItem/index.tsx +283 -0
- package/src/theme/DocSidebarItem/styles.module.css +13 -0
- package/src/theme/DocSidebarItems/index.tsx +32 -0
- package/src/theme/DocTagDocListPage/index.tsx +89 -0
- package/src/theme/DocTagsListPage/index.tsx +39 -0
- package/src/theme/DocVersionBadge/index.tsx +35 -0
- package/src/theme/DocVersionBanner/index.tsx +49 -22
- package/src/theme/EditThisPage/index.tsx +6 -1
- package/src/theme/ErrorPageContent.tsx +41 -0
- package/src/theme/Footer/index.tsx +109 -44
- package/src/theme/Footer/styles.module.css +2 -1
- package/src/theme/Heading/index.tsx +38 -53
- package/src/theme/Heading/styles.module.css +25 -5
- package/src/theme/IconArrow/index.tsx +2 -4
- package/src/theme/IconClose/index.tsx +26 -0
- package/src/theme/IconDarkMode/index.tsx +20 -0
- package/src/theme/IconEdit/index.tsx +5 -4
- package/src/theme/IconExternalLink/index.tsx +3 -5
- package/src/theme/IconLanguage/index.tsx +6 -8
- package/src/theme/IconLightMode/index.tsx +20 -0
- package/src/theme/IconMenu/index.tsx +3 -5
- package/src/theme/LastUpdated/index.tsx +3 -2
- package/src/theme/Layout/index.tsx +5 -6
- package/src/theme/LayoutHead/index.tsx +26 -25
- package/src/theme/LayoutProviders/index.tsx +15 -9
- package/src/theme/Logo/index.tsx +21 -19
- package/src/theme/MDXComponents/index.tsx +70 -32
- package/{lib/theme/IconExternalLink/styles.module.css → src/theme/MDXComponents/styles.css} +7 -4
- package/src/theme/MDXPage/index.tsx +10 -12
- package/src/theme/Navbar/index.tsx +208 -68
- package/src/theme/Navbar/styles.module.css +10 -3
- package/src/theme/NavbarItem/DefaultNavbarItem.tsx +37 -207
- package/src/theme/NavbarItem/DocNavbarItem.tsx +17 -18
- package/src/theme/NavbarItem/DocSidebarNavbarItem.tsx +84 -0
- package/src/theme/NavbarItem/DocsVersionDropdownNavbarItem.tsx +39 -24
- package/src/theme/NavbarItem/DocsVersionNavbarItem.tsx +7 -3
- package/src/theme/NavbarItem/DropdownNavbarItem.tsx +181 -0
- package/src/theme/NavbarItem/{LocaleDropdownNavbarItem.tsx → LocaleDropdownNavbarItem/index.tsx} +16 -10
- package/src/theme/NavbarItem/LocaleDropdownNavbarItem/styles.module.css +11 -0
- package/src/theme/NavbarItem/NavbarNavLink.tsx +68 -0
- package/src/theme/NavbarItem/index.tsx +41 -18
- package/src/theme/NavbarItem/utils.ts +10 -0
- package/src/theme/NotFound.tsx +1 -3
- package/src/theme/PaginatorNavLink/index.tsx +20 -0
- package/src/theme/SearchBar.tsx +2 -1
- package/src/theme/SearchMetadata/index.tsx +43 -0
- package/src/theme/Seo/index.tsx +7 -4
- package/src/theme/SkipToContent/index.tsx +3 -5
- package/src/theme/SkipToContent/styles.module.css +7 -0
- package/src/theme/TOC/index.tsx +13 -44
- package/src/theme/TOC/styles.module.css +1 -1
- package/src/theme/TOCCollapsible/index.tsx +58 -0
- package/src/theme/TOCCollapsible/styles.module.css +50 -0
- package/src/theme/TOCInline/index.tsx +14 -35
- package/src/theme/TOCItems/index.tsx +100 -0
- package/src/theme/TabItem/index.tsx +5 -3
- package/src/theme/Tabs/index.tsx +115 -56
- package/src/theme/Tabs/styles.module.css +0 -13
- package/src/theme/Tag/index.tsx +29 -0
- package/src/theme/Tag/styles.module.css +70 -0
- package/src/theme/TagsListByLetter/index.tsx +43 -0
- package/src/theme/TagsListByLetter/styles.module.css +11 -0
- package/src/theme/TagsListInline/index.tsx +35 -0
- package/src/theme/TagsListInline/styles.module.css +15 -0
- package/src/theme/ThemedImage/index.tsx +7 -9
- package/src/theme/ThemedImage/styles.module.css +2 -2
- package/src/theme/prism-include-languages.ts +20 -15
- package/src/theme-classic.d.ts +771 -0
- package/src/translations.ts +74 -54
- package/src/types.d.ts +0 -587
- package/src/validateThemeConfig.ts +381 -0
- package/babel.config.js +0 -35
- package/codeTranslations/README.md +0 -20
- package/codeTranslations/ar.json +0 -57
- package/codeTranslations/base.json +0 -112
- package/codeTranslations/bn.json +0 -56
- package/codeTranslations/da.json +0 -57
- package/codeTranslations/de.json +0 -57
- package/codeTranslations/es.json +0 -57
- package/codeTranslations/fa.json +0 -57
- package/codeTranslations/fil.json +0 -57
- package/codeTranslations/fr.json +0 -57
- package/codeTranslations/he.json +0 -57
- package/codeTranslations/hi.json +0 -57
- package/codeTranslations/ja.json +0 -57
- package/codeTranslations/ko.json +0 -57
- package/codeTranslations/pl.json +0 -57
- package/codeTranslations/pt-BR.json +0 -57
- package/codeTranslations/pt-PT.json +0 -57
- package/codeTranslations/ru.json +0 -57
- package/codeTranslations/tr.json +0 -57
- package/codeTranslations/vi.json +0 -57
- package/codeTranslations/zh-Hans.json +0 -57
- package/codeTranslations/zh-Hant.json +0 -57
- package/lib/__tests__/__snapshots__/translations.test.ts.snap +0 -116
- package/lib/__tests__/translations.test.js +0 -112
- package/lib/__tests__/validateThemeConfig.test.js +0 -333
- package/lib/theme/AnnouncementBar/index.js +0 -72
- package/lib/theme/AnnouncementBar/styles.module.css +0 -72
- package/lib/theme/BlogListPage/index.js +0 -71
- package/lib/theme/BlogListPaginator/index.js +0 -63
- package/lib/theme/BlogPostItem/index.js +0 -161
- package/lib/theme/BlogPostPage/index.js +0 -69
- package/lib/theme/BlogPostPaginator/index.js +0 -64
- package/lib/theme/BlogSidebar/index.js +0 -51
- package/lib/theme/BlogSidebar/styles.module.css +0 -44
- package/lib/theme/BlogTagsListPage/index.js +0 -76
- package/lib/theme/BlogTagsPostsPage/index.js +0 -100
- package/lib/theme/CodeBlock/index.js +0 -253
- package/lib/theme/CodeBlock/styles.module.css +0 -68
- package/lib/theme/DocItem/index.js +0 -129
- package/lib/theme/DocPage/index.js +0 -173
- package/lib/theme/DocPage/styles.module.css +0 -80
- package/lib/theme/DocPaginator/index.js +0 -63
- package/lib/theme/DocSidebar/index.js +0 -309
- package/lib/theme/DocSidebar/styles.module.css +0 -124
- package/lib/theme/DocVersionBanner/index.js +0 -128
- package/lib/theme/EditThisPage/index.js +0 -31
- package/lib/theme/Footer/index.js +0 -115
- package/lib/theme/Footer/styles.module.css +0 -15
- package/lib/theme/Heading/index.js +0 -76
- package/lib/theme/Heading/styles.css +0 -23
- package/lib/theme/Heading/styles.module.css +0 -15
- package/lib/theme/IconArrow/index.js +0 -28
- package/lib/theme/IconEdit/index.js +0 -34
- package/lib/theme/IconExternalLink/index.js +0 -30
- package/lib/theme/IconLanguage/index.js +0 -29
- package/lib/theme/IconMenu/index.js +0 -30
- package/lib/theme/LastUpdated/index.js +0 -61
- package/lib/theme/Layout/index.js +0 -64
- package/lib/theme/Layout/styles.css +0 -27
- package/lib/theme/LayoutHead/index.js +0 -144
- package/lib/theme/LayoutProviders/index.js +0 -36
- package/lib/theme/Logo/index.js +0 -60
- package/lib/theme/MDXComponents/index.js +0 -65
- package/lib/theme/MDXPage/index.js +0 -66
- package/lib/theme/Navbar/index.js +0 -147
- package/lib/theme/Navbar/styles.module.css +0 -20
- package/lib/theme/NavbarItem/DefaultNavbarItem.js +0 -209
- package/lib/theme/NavbarItem/DocNavbarItem.js +0 -63
- package/lib/theme/NavbarItem/DocsVersionDropdownNavbarItem.js +0 -76
- package/lib/theme/NavbarItem/DocsVersionNavbarItem.js +0 -43
- package/lib/theme/NavbarItem/LocaleDropdownNavbarItem.js +0 -72
- package/lib/theme/NavbarItem/SearchNavbarItem.js +0 -28
- package/lib/theme/NavbarItem/index.js +0 -54
- package/lib/theme/NotFound.js +0 -57
- package/lib/theme/SearchBar.js +0 -15
- package/lib/theme/SearchMetadatas/index.js +0 -33
- package/lib/theme/Seo/index.js +0 -49
- package/lib/theme/SkipToContent/index.js +0 -71
- package/lib/theme/SkipToContent/styles.module.css +0 -14
- package/lib/theme/TOC/index.js +0 -59
- package/lib/theme/TOC/styles.module.css +0 -23
- package/lib/theme/TOCInline/index.js +0 -53
- package/lib/theme/TOCInline/styles.module.css +0 -12
- package/lib/theme/TabItem/index.js +0 -32
- package/lib/theme/Tabs/index.js +0 -150
- package/lib/theme/Tabs/styles.module.css +0 -23
- package/lib/theme/ThemeContext.js +0 -21
- package/lib/theme/ThemeProvider/index.js +0 -38
- package/lib/theme/ThemedImage/index.js +0 -49
- package/lib/theme/ThemedImage/styles.module.css +0 -18
- package/lib/theme/Toggle/index.js +0 -94
- package/lib/theme/Toggle/styles.css +0 -103
- package/lib/theme/UserPreferencesContext.js +0 -18
- package/lib/theme/UserPreferencesProvider/index.js +0 -36
- package/lib/theme/hooks/useContextualSearchFilters.js +0 -47
- package/lib/theme/hooks/useDocs.js +0 -18
- package/lib/theme/hooks/useHideableNavbar.js +0 -92
- package/lib/theme/hooks/useKeyboardNavigation.js +0 -45
- package/lib/theme/hooks/useLocationHash.js +0 -28
- package/lib/theme/hooks/useLockBodyScroll.js +0 -26
- package/lib/theme/hooks/usePrismTheme.js +0 -36
- package/lib/theme/hooks/useScrollPosition.js +0 -49
- package/lib/theme/hooks/useTOCHighlight.js +0 -87
- package/lib/theme/hooks/useTabGroupChoice.js +0 -51
- package/lib/theme/hooks/useTheme.js +0 -99
- package/lib/theme/hooks/useThemeContext.js +0 -31
- package/lib/theme/hooks/useUserPreferencesContext.js +0 -31
- package/lib/theme/hooks/useWindowSize.js +0 -55
- package/lib/theme/prism-include-languages.js +0 -39
- package/lib-next/__tests__/__snapshots__/translations.test.ts.snap +0 -116
- package/lib-next/__tests__/translations.test.js +0 -128
- package/lib-next/__tests__/validateThemeConfig.test.js +0 -333
- package/lib-next/index.js +0 -221
- package/lib-next/theme/Heading/styles.css +0 -23
- package/lib-next/theme/SearchMetadatas/index.js +0 -20
- package/lib-next/theme/ThemeContext.js +0 -9
- package/lib-next/theme/ThemeProvider/index.js +0 -25
- package/lib-next/theme/Toggle/index.js +0 -80
- package/lib-next/theme/Toggle/styles.css +0 -103
- package/lib-next/theme/UserPreferencesProvider/index.js +0 -24
- package/lib-next/theme/hooks/useContextualSearchFilters.js +0 -41
- package/lib-next/theme/hooks/useDocs.js +0 -10
- package/lib-next/theme/hooks/useHideableNavbar.js +0 -79
- package/lib-next/theme/hooks/useKeyboardNavigation.js +0 -35
- package/lib-next/theme/hooks/useLocationHash.js +0 -20
- package/lib-next/theme/hooks/useLockBodyScroll.js +0 -18
- package/lib-next/theme/hooks/usePrismTheme.js +0 -20
- package/lib-next/theme/hooks/useScrollPosition.js +0 -38
- package/lib-next/theme/hooks/useTOCHighlight.js +0 -84
- package/lib-next/theme/hooks/useTabGroupChoice.js +0 -39
- package/lib-next/theme/hooks/useTheme.js +0 -82
- package/lib-next/theme/hooks/useThemeContext.js +0 -22
- package/lib-next/theme/hooks/useUserPreferencesContext.js +0 -22
- package/lib-next/theme/hooks/useWindowSize.js +0 -45
- package/lib-next/translations.js +0 -145
- package/lib-next/types.d.ts +0 -598
- package/lib-next/validateThemeConfig.js +0 -317
- package/src/__tests__/__snapshots__/translations.test.ts.snap +0 -116
- package/src/__tests__/translations.test.ts +0 -116
- package/src/__tests__/validateThemeConfig.test.js +0 -333
- package/src/prism-include-languages.js +0 -11
- package/src/theme/Heading/styles.css +0 -23
- package/src/theme/SearchMetadatas/index.tsx +0 -28
- package/src/theme/ThemeContext.ts +0 -15
- package/src/theme/ThemeProvider/index.tsx +0 -24
- package/src/theme/Toggle/index.tsx +0 -100
- package/src/theme/Toggle/styles.css +0 -103
- package/src/theme/UserPreferencesContext.ts +0 -12
- package/src/theme/UserPreferencesProvider/index.tsx +0 -27
- package/src/theme/hooks/useContextualSearchFilters.ts +0 -52
- package/src/theme/hooks/useDocs.ts +0 -11
- package/src/theme/hooks/useHideableNavbar.ts +0 -85
- package/src/theme/hooks/useKeyboardNavigation.ts +0 -39
- package/src/theme/hooks/useLocationHash.ts +0 -25
- package/src/theme/hooks/useLockBodyScroll.ts +0 -20
- package/src/theme/hooks/usePrismTheme.ts +0 -22
- package/src/theme/hooks/useScrollPosition.ts +0 -45
- package/src/theme/hooks/useTOCHighlight.ts +0 -98
- package/src/theme/hooks/useTabGroupChoice.ts +0 -46
- package/src/theme/hooks/useTheme.ts +0 -92
- package/src/theme/hooks/useThemeContext.ts +0 -23
- package/src/theme/hooks/useUserPreferencesContext.ts +0 -25
- package/src/theme/hooks/useWindowSize.ts +0 -51
- package/src/validateThemeConfig.js +0 -317
- package/tsconfig.json +0 -12
- package/update-code-translations.js +0 -240
- package/update-code-translations.test.js +0 -33
|
@@ -10,8 +10,8 @@
|
|
|
10
10
|
}
|
|
11
11
|
|
|
12
12
|
.announcementBar {
|
|
13
|
-
|
|
14
|
-
|
|
13
|
+
display: flex;
|
|
14
|
+
align-items: center;
|
|
15
15
|
height: var(--docusaurus-announcement-bar-height);
|
|
16
16
|
background-color: var(--ifm-color-white);
|
|
17
17
|
color: var(--ifm-color-black);
|
|
@@ -22,47 +22,27 @@ html[data-announcement-bar-initially-dismissed='true'] .announcementBar {
|
|
|
22
22
|
display: none;
|
|
23
23
|
}
|
|
24
24
|
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
display: none;
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
@media screen and (min-width: 1024px) {
|
|
32
|
-
:root {
|
|
33
|
-
--docusaurus-announcement-bar-height: 30px;
|
|
34
|
-
}
|
|
25
|
+
.announcementBarPlaceholder {
|
|
26
|
+
flex: 0 0 10px;
|
|
35
27
|
}
|
|
36
28
|
|
|
37
29
|
.announcementBarClose {
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
font-size: 1.25rem;
|
|
43
|
-
height: 100%;
|
|
30
|
+
flex: 0 0 30px;
|
|
31
|
+
align-self: stretch;
|
|
32
|
+
padding: 0;
|
|
33
|
+
line-height: 0;
|
|
44
34
|
}
|
|
45
35
|
|
|
46
36
|
.announcementBarContent {
|
|
37
|
+
flex: 1 1 auto;
|
|
47
38
|
font-size: 85%;
|
|
48
|
-
width: 100%;
|
|
49
39
|
text-align: center;
|
|
50
40
|
padding: 5px 0;
|
|
51
41
|
}
|
|
52
42
|
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
@media screen and (max-width: 576px) {
|
|
58
|
-
.announcementBarClose {
|
|
59
|
-
width: 35px;
|
|
60
|
-
}
|
|
61
|
-
.announcementBarContent {
|
|
62
|
-
width: auto;
|
|
63
|
-
}
|
|
64
|
-
.announcementBarCloseable {
|
|
65
|
-
margin-right: 35px;
|
|
43
|
+
@media print {
|
|
44
|
+
.announcementBar {
|
|
45
|
+
display: none;
|
|
66
46
|
}
|
|
67
47
|
}
|
|
68
48
|
|
|
@@ -70,3 +50,14 @@ html[data-announcement-bar-initially-dismissed='true'] .announcementBar {
|
|
|
70
50
|
color: inherit;
|
|
71
51
|
text-decoration: underline;
|
|
72
52
|
}
|
|
53
|
+
|
|
54
|
+
@media (min-width: 997px) {
|
|
55
|
+
:root {
|
|
56
|
+
--docusaurus-announcement-bar-height: 30px;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
.announcementBarPlaceholder,
|
|
60
|
+
.announcementBarClose {
|
|
61
|
+
flex-basis: 50px;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) Facebook, Inc. and its affiliates.
|
|
3
|
+
*
|
|
4
|
+
* This source code is licensed under the MIT license found in the
|
|
5
|
+
* LICENSE file in the root directory of this source tree.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
import React, {useRef, useState} from 'react';
|
|
9
|
+
import clsx from 'clsx';
|
|
10
|
+
import {translate} from '@docusaurus/Translate';
|
|
11
|
+
|
|
12
|
+
import styles from './styles.module.css';
|
|
13
|
+
import {
|
|
14
|
+
ThemeClassNames,
|
|
15
|
+
useScrollPosition,
|
|
16
|
+
useLocationChange,
|
|
17
|
+
} from '@docusaurus/theme-common';
|
|
18
|
+
|
|
19
|
+
const threshold = 300;
|
|
20
|
+
|
|
21
|
+
// Not all have support for smooth scrolling (particularly Safari mobile iOS)
|
|
22
|
+
// TODO proper detection is currently unreliable!
|
|
23
|
+
// see https://github.com/wessberg/scroll-behavior-polyfill/issues/16
|
|
24
|
+
const SupportsNativeSmoothScrolling = false;
|
|
25
|
+
// const SupportsNativeSmoothScrolling =
|
|
26
|
+
// ExecutionEnvironment.canUseDOM &&
|
|
27
|
+
// 'scrollBehavior' in document.documentElement.style;
|
|
28
|
+
|
|
29
|
+
type CancelScrollTop = () => void;
|
|
30
|
+
|
|
31
|
+
function smoothScrollTopNative(): CancelScrollTop {
|
|
32
|
+
window.scrollTo({top: 0, behavior: 'smooth'});
|
|
33
|
+
return () => {
|
|
34
|
+
// Nothing to cancel, it's natively cancelled if user tries to scroll down
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
function smoothScrollTopPolyfill(): CancelScrollTop {
|
|
39
|
+
let raf: number | null = null;
|
|
40
|
+
function rafRecursion() {
|
|
41
|
+
const currentScroll = document.documentElement.scrollTop;
|
|
42
|
+
if (currentScroll > 0) {
|
|
43
|
+
raf = requestAnimationFrame(rafRecursion);
|
|
44
|
+
window.scrollTo(0, Math.floor(currentScroll * 0.85));
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
rafRecursion();
|
|
48
|
+
|
|
49
|
+
// Break the recursion. Prevents the user from "fighting" against that
|
|
50
|
+
// recursion producing a weird UX
|
|
51
|
+
return () => raf && cancelAnimationFrame(raf);
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
type UseSmoothScrollTopReturn = {
|
|
55
|
+
// We use a cancel function because the non-native smooth scroll-top
|
|
56
|
+
// implementation must be interrupted if user scroll down
|
|
57
|
+
smoothScrollTop: () => void;
|
|
58
|
+
cancelScrollToTop: CancelScrollTop;
|
|
59
|
+
};
|
|
60
|
+
|
|
61
|
+
function useSmoothScrollToTop(): UseSmoothScrollTopReturn {
|
|
62
|
+
const lastCancelRef = useRef<CancelScrollTop | null>(null);
|
|
63
|
+
|
|
64
|
+
function smoothScrollTop(): void {
|
|
65
|
+
lastCancelRef.current = SupportsNativeSmoothScrolling
|
|
66
|
+
? smoothScrollTopNative()
|
|
67
|
+
: smoothScrollTopPolyfill();
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
return {
|
|
71
|
+
smoothScrollTop,
|
|
72
|
+
cancelScrollToTop: () => lastCancelRef.current?.(),
|
|
73
|
+
};
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
export default function BackToTopButton(): JSX.Element {
|
|
77
|
+
const [show, setShow] = useState(false);
|
|
78
|
+
const isFocusedAnchor = useRef(false);
|
|
79
|
+
const {smoothScrollTop, cancelScrollToTop} = useSmoothScrollToTop();
|
|
80
|
+
|
|
81
|
+
useScrollPosition(({scrollY: scrollTop}, lastPosition) => {
|
|
82
|
+
const lastScrollTop = lastPosition?.scrollY;
|
|
83
|
+
|
|
84
|
+
// No lastScrollTop means component is just being mounted.
|
|
85
|
+
// Not really a scroll event from the user, so we ignore it
|
|
86
|
+
if (!lastScrollTop) {
|
|
87
|
+
return;
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
if (isFocusedAnchor.current) {
|
|
91
|
+
isFocusedAnchor.current = false;
|
|
92
|
+
return;
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
const isScrollingUp = scrollTop < lastScrollTop;
|
|
96
|
+
|
|
97
|
+
if (!isScrollingUp) {
|
|
98
|
+
cancelScrollToTop();
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
if (scrollTop < threshold) {
|
|
102
|
+
setShow(false);
|
|
103
|
+
return;
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
if (isScrollingUp) {
|
|
107
|
+
const documentHeight = document.documentElement.scrollHeight;
|
|
108
|
+
const windowHeight = window.innerHeight;
|
|
109
|
+
if (scrollTop + windowHeight < documentHeight) {
|
|
110
|
+
setShow(true);
|
|
111
|
+
}
|
|
112
|
+
} else {
|
|
113
|
+
setShow(false);
|
|
114
|
+
}
|
|
115
|
+
});
|
|
116
|
+
|
|
117
|
+
useLocationChange((locationChangeEvent) => {
|
|
118
|
+
if (locationChangeEvent.location.hash) {
|
|
119
|
+
isFocusedAnchor.current = true;
|
|
120
|
+
setShow(false);
|
|
121
|
+
}
|
|
122
|
+
});
|
|
123
|
+
|
|
124
|
+
return (
|
|
125
|
+
<button
|
|
126
|
+
aria-label={translate({
|
|
127
|
+
id: 'theme.BackToTopButton.buttonAriaLabel',
|
|
128
|
+
message: 'Scroll back to top',
|
|
129
|
+
description: 'The ARIA label for the back to top button',
|
|
130
|
+
})}
|
|
131
|
+
className={clsx(
|
|
132
|
+
'clean-btn',
|
|
133
|
+
ThemeClassNames.common.backToTopButton,
|
|
134
|
+
styles.backToTopButton,
|
|
135
|
+
{
|
|
136
|
+
[styles.backToTopButtonShow]: show,
|
|
137
|
+
},
|
|
138
|
+
)}
|
|
139
|
+
type="button"
|
|
140
|
+
onClick={() => smoothScrollTop()}
|
|
141
|
+
/>
|
|
142
|
+
);
|
|
143
|
+
}
|
|
@@ -0,0 +1,44 @@
|
|
|
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
|
+
.backToTopButton {
|
|
9
|
+
position: fixed;
|
|
10
|
+
right: 1.3rem;
|
|
11
|
+
bottom: 1.3rem;
|
|
12
|
+
border-radius: 50%;
|
|
13
|
+
background-color: var(--ifm-color-emphasis-200);
|
|
14
|
+
width: 3rem;
|
|
15
|
+
height: 3rem;
|
|
16
|
+
z-index: calc(var(--ifm-z-index-fixed) - 1);
|
|
17
|
+
box-shadow: var(--ifm-global-shadow-lw);
|
|
18
|
+
transition: all var(--ifm-transition-fast)
|
|
19
|
+
var(--ifm-transition-timing-default);
|
|
20
|
+
opacity: 0;
|
|
21
|
+
transform: scale(0);
|
|
22
|
+
visibility: hidden;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
.backToTopButton::after {
|
|
26
|
+
content: ' ';
|
|
27
|
+
display: inline-block;
|
|
28
|
+
mask: var(--ifm-menu-link-sublist-icon) 50% / 2rem 2rem no-repeat;
|
|
29
|
+
background-color: var(--ifm-color-emphasis-1000);
|
|
30
|
+
width: 100%;
|
|
31
|
+
height: 100%;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
@media (hover: hover) {
|
|
35
|
+
.backToTopButton:hover {
|
|
36
|
+
background-color: var(--ifm-color-emphasis-300);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
.backToTopButtonShow {
|
|
41
|
+
opacity: 1;
|
|
42
|
+
transform: scale(1);
|
|
43
|
+
visibility: visible;
|
|
44
|
+
}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) Facebook, Inc. and its affiliates.
|
|
3
|
+
*
|
|
4
|
+
* This source code is licensed under the MIT license found in the
|
|
5
|
+
* LICENSE file in the root directory of this source tree.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
import React from 'react';
|
|
9
|
+
import Layout from '@theme/Layout';
|
|
10
|
+
import Link from '@docusaurus/Link';
|
|
11
|
+
import type {ArchiveBlogPost, Props} from '@theme/BlogArchivePage';
|
|
12
|
+
import {translate} from '@docusaurus/Translate';
|
|
13
|
+
|
|
14
|
+
type YearProp = {
|
|
15
|
+
year: string;
|
|
16
|
+
posts: ArchiveBlogPost[];
|
|
17
|
+
};
|
|
18
|
+
|
|
19
|
+
function Year({year, posts}: YearProp) {
|
|
20
|
+
return (
|
|
21
|
+
<>
|
|
22
|
+
<h3>{year}</h3>
|
|
23
|
+
<ul>
|
|
24
|
+
{posts.map((post) => (
|
|
25
|
+
<li key={post.metadata.date}>
|
|
26
|
+
<Link to={post.metadata.permalink}>
|
|
27
|
+
{post.metadata.formattedDate} - {post.metadata.title}
|
|
28
|
+
</Link>
|
|
29
|
+
</li>
|
|
30
|
+
))}
|
|
31
|
+
</ul>
|
|
32
|
+
</>
|
|
33
|
+
);
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
function YearsSection({years}: {years: YearProp[]}) {
|
|
37
|
+
return (
|
|
38
|
+
<section className="margin-vert--lg">
|
|
39
|
+
<div className="container">
|
|
40
|
+
<div className="row">
|
|
41
|
+
{years.map((_props, idx) => (
|
|
42
|
+
<div key={idx} className="col col--4 margin-vert--lg">
|
|
43
|
+
<Year {..._props} />
|
|
44
|
+
</div>
|
|
45
|
+
))}
|
|
46
|
+
</div>
|
|
47
|
+
</div>
|
|
48
|
+
</section>
|
|
49
|
+
);
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
function listPostsByYears(blogPosts: readonly ArchiveBlogPost[]): YearProp[] {
|
|
53
|
+
const postsByYear: Map<string, ArchiveBlogPost[]> = blogPosts.reduceRight(
|
|
54
|
+
(posts, post) => {
|
|
55
|
+
const year = post.metadata.date.split('-')[0];
|
|
56
|
+
const yearPosts = posts.get(year) || [];
|
|
57
|
+
return posts.set(year, [post, ...yearPosts]);
|
|
58
|
+
},
|
|
59
|
+
new Map(),
|
|
60
|
+
);
|
|
61
|
+
|
|
62
|
+
return Array.from(postsByYear, ([year, posts]) => ({
|
|
63
|
+
year,
|
|
64
|
+
posts,
|
|
65
|
+
}));
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
export default function BlogArchive({archive}: Props): JSX.Element {
|
|
69
|
+
const title = translate({
|
|
70
|
+
id: 'theme.blog.archive.title',
|
|
71
|
+
message: 'Archive',
|
|
72
|
+
description: 'The page & hero title of the blog archive page',
|
|
73
|
+
});
|
|
74
|
+
const description = translate({
|
|
75
|
+
id: 'theme.blog.archive.description',
|
|
76
|
+
message: 'Archive',
|
|
77
|
+
description: 'The page & hero description of the blog archive page',
|
|
78
|
+
});
|
|
79
|
+
const years = listPostsByYears(archive.blogPosts);
|
|
80
|
+
return (
|
|
81
|
+
<Layout title={title} description={description}>
|
|
82
|
+
<header className="hero hero--primary">
|
|
83
|
+
<div className="container">
|
|
84
|
+
<h1 className="hero__title">{title}</h1>
|
|
85
|
+
<p className="hero__subtitle">{description}</p>
|
|
86
|
+
</div>
|
|
87
|
+
</header>
|
|
88
|
+
<main>{years.length > 0 && <YearsSection years={years} />}</main>
|
|
89
|
+
</Layout>
|
|
90
|
+
);
|
|
91
|
+
}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) Facebook, Inc. and its affiliates.
|
|
3
|
+
*
|
|
4
|
+
* This source code is licensed under the MIT license found in the
|
|
5
|
+
* LICENSE file in the root directory of this source tree.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
import React from 'react';
|
|
9
|
+
import clsx from 'clsx';
|
|
10
|
+
import Layout from '@theme/Layout';
|
|
11
|
+
import BlogSidebar from '@theme/BlogSidebar';
|
|
12
|
+
|
|
13
|
+
import type {Props} from '@theme/BlogLayout';
|
|
14
|
+
|
|
15
|
+
export default function BlogLayout(props: Props): JSX.Element {
|
|
16
|
+
const {sidebar, toc, children, ...layoutProps} = props;
|
|
17
|
+
const hasSidebar = sidebar && sidebar.items.length > 0;
|
|
18
|
+
|
|
19
|
+
return (
|
|
20
|
+
<Layout {...layoutProps}>
|
|
21
|
+
<div className="container margin-vert--lg">
|
|
22
|
+
<div className="row">
|
|
23
|
+
{hasSidebar && (
|
|
24
|
+
<aside className="col col--3">
|
|
25
|
+
<BlogSidebar sidebar={sidebar!} />
|
|
26
|
+
</aside>
|
|
27
|
+
)}
|
|
28
|
+
<main
|
|
29
|
+
className={clsx('col', {
|
|
30
|
+
'col--7': hasSidebar,
|
|
31
|
+
'col--9 col--offset-1': !hasSidebar,
|
|
32
|
+
})}
|
|
33
|
+
itemScope
|
|
34
|
+
itemType="http://schema.org/Blog">
|
|
35
|
+
{children}
|
|
36
|
+
</main>
|
|
37
|
+
{toc && <div className="col col--2">{toc}</div>}
|
|
38
|
+
</div>
|
|
39
|
+
</div>
|
|
40
|
+
</Layout>
|
|
41
|
+
);
|
|
42
|
+
}
|
|
@@ -8,14 +8,13 @@
|
|
|
8
8
|
import React from 'react';
|
|
9
9
|
|
|
10
10
|
import useDocusaurusContext from '@docusaurus/useDocusaurusContext';
|
|
11
|
-
import
|
|
11
|
+
import BlogLayout from '@theme/BlogLayout';
|
|
12
12
|
import BlogPostItem from '@theme/BlogPostItem';
|
|
13
13
|
import BlogListPaginator from '@theme/BlogListPaginator';
|
|
14
14
|
import type {Props} from '@theme/BlogListPage';
|
|
15
|
-
import BlogSidebar from '@theme/BlogSidebar';
|
|
16
15
|
import {ThemeClassNames} from '@docusaurus/theme-common';
|
|
17
16
|
|
|
18
|
-
function BlogListPage(props: Props): JSX.Element {
|
|
17
|
+
export default function BlogListPage(props: Props): JSX.Element {
|
|
19
18
|
const {metadata, items, sidebar} = props;
|
|
20
19
|
const {
|
|
21
20
|
siteConfig: {title: siteTitle},
|
|
@@ -23,37 +22,29 @@ function BlogListPage(props: Props): JSX.Element {
|
|
|
23
22
|
const {blogDescription, blogTitle, permalink} = metadata;
|
|
24
23
|
const isBlogOnlyMode = permalink === '/';
|
|
25
24
|
const title = isBlogOnlyMode ? siteTitle : blogTitle;
|
|
25
|
+
|
|
26
26
|
return (
|
|
27
|
-
<
|
|
27
|
+
<BlogLayout
|
|
28
28
|
title={title}
|
|
29
29
|
description={blogDescription}
|
|
30
30
|
wrapperClassName={ThemeClassNames.wrapper.blogPages}
|
|
31
31
|
pageClassName={ThemeClassNames.page.blogListPage}
|
|
32
|
-
|
|
32
|
+
searchMetadata={{
|
|
33
33
|
// assign unique search tag to exclude this page from search results!
|
|
34
34
|
tag: 'blog_posts_list',
|
|
35
|
-
}}
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
</BlogPostItem>
|
|
50
|
-
))}
|
|
51
|
-
<BlogListPaginator metadata={metadata} />
|
|
52
|
-
</main>
|
|
53
|
-
</div>
|
|
54
|
-
</div>
|
|
55
|
-
</Layout>
|
|
35
|
+
}}
|
|
36
|
+
sidebar={sidebar}>
|
|
37
|
+
{items.map(({content: BlogPostContent}) => (
|
|
38
|
+
<BlogPostItem
|
|
39
|
+
key={BlogPostContent.metadata.permalink}
|
|
40
|
+
frontMatter={BlogPostContent.frontMatter}
|
|
41
|
+
assets={BlogPostContent.assets}
|
|
42
|
+
metadata={BlogPostContent.metadata}
|
|
43
|
+
truncated={BlogPostContent.metadata.truncated}>
|
|
44
|
+
<BlogPostContent />
|
|
45
|
+
</BlogPostItem>
|
|
46
|
+
))}
|
|
47
|
+
<BlogListPaginator metadata={metadata} />
|
|
48
|
+
</BlogLayout>
|
|
56
49
|
);
|
|
57
50
|
}
|
|
58
|
-
|
|
59
|
-
export default BlogListPage;
|
|
@@ -6,11 +6,11 @@
|
|
|
6
6
|
*/
|
|
7
7
|
|
|
8
8
|
import React from 'react';
|
|
9
|
-
import Link from '@docusaurus/Link';
|
|
10
9
|
import Translate, {translate} from '@docusaurus/Translate';
|
|
10
|
+
import PaginatorNavLink from '@theme/PaginatorNavLink';
|
|
11
11
|
import type {Props} from '@theme/BlogListPaginator';
|
|
12
12
|
|
|
13
|
-
function BlogListPaginator(props: Props): JSX.Element {
|
|
13
|
+
export default function BlogListPaginator(props: Props): JSX.Element {
|
|
14
14
|
const {metadata} = props;
|
|
15
15
|
const {previousPage, nextPage} = metadata;
|
|
16
16
|
|
|
@@ -24,34 +24,32 @@ function BlogListPaginator(props: Props): JSX.Element {
|
|
|
24
24
|
})}>
|
|
25
25
|
<div className="pagination-nav__item">
|
|
26
26
|
{previousPage && (
|
|
27
|
-
<
|
|
28
|
-
|
|
29
|
-
|
|
27
|
+
<PaginatorNavLink
|
|
28
|
+
permalink={previousPage}
|
|
29
|
+
title={
|
|
30
30
|
<Translate
|
|
31
31
|
id="theme.blog.paginator.newerEntries"
|
|
32
32
|
description="The label used to navigate to the newer blog posts page (previous page)">
|
|
33
33
|
Newer Entries
|
|
34
34
|
</Translate>
|
|
35
|
-
|
|
36
|
-
|
|
35
|
+
}
|
|
36
|
+
/>
|
|
37
37
|
)}
|
|
38
38
|
</div>
|
|
39
39
|
<div className="pagination-nav__item pagination-nav__item--next">
|
|
40
40
|
{nextPage && (
|
|
41
|
-
<
|
|
42
|
-
|
|
41
|
+
<PaginatorNavLink
|
|
42
|
+
permalink={nextPage}
|
|
43
|
+
title={
|
|
43
44
|
<Translate
|
|
44
45
|
id="theme.blog.paginator.olderEntries"
|
|
45
46
|
description="The label used to navigate to the older blog posts page (next page)">
|
|
46
47
|
Older Entries
|
|
47
|
-
</Translate>
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
</Link>
|
|
48
|
+
</Translate>
|
|
49
|
+
}
|
|
50
|
+
/>
|
|
51
51
|
)}
|
|
52
52
|
</div>
|
|
53
53
|
</nav>
|
|
54
54
|
);
|
|
55
55
|
}
|
|
56
|
-
|
|
57
|
-
export default BlogListPaginator;
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) Facebook, Inc. and its affiliates.
|
|
3
|
+
*
|
|
4
|
+
* This source code is licensed under the MIT license found in the
|
|
5
|
+
* LICENSE file in the root directory of this source tree.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
import React from 'react';
|
|
9
|
+
import Link, {type Props as LinkProps} from '@docusaurus/Link';
|
|
10
|
+
import type {Props} from '@theme/BlogPostAuthor';
|
|
11
|
+
|
|
12
|
+
import styles from './styles.module.css';
|
|
13
|
+
|
|
14
|
+
function MaybeLink(props: LinkProps): JSX.Element {
|
|
15
|
+
if (props.href) {
|
|
16
|
+
return <Link {...props} />;
|
|
17
|
+
}
|
|
18
|
+
return <>{props.children}</>;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
export default function BlogPostAuthor({author}: Props): JSX.Element {
|
|
22
|
+
const {name, title, url, imageURL, email} = author;
|
|
23
|
+
const link = url || (email && `mailto:${email}`) || undefined;
|
|
24
|
+
return (
|
|
25
|
+
<div className="avatar margin-bottom--sm">
|
|
26
|
+
{imageURL && (
|
|
27
|
+
<span className="avatar__photo-link avatar__photo">
|
|
28
|
+
<MaybeLink href={link}>
|
|
29
|
+
<img className={styles.image} src={imageURL} alt={name} />
|
|
30
|
+
</MaybeLink>
|
|
31
|
+
</span>
|
|
32
|
+
)}
|
|
33
|
+
|
|
34
|
+
{name && (
|
|
35
|
+
<div
|
|
36
|
+
className="avatar__intro"
|
|
37
|
+
itemProp="author"
|
|
38
|
+
itemScope
|
|
39
|
+
itemType="https://schema.org/Person">
|
|
40
|
+
<div className="avatar__name">
|
|
41
|
+
<MaybeLink href={link} itemProp="url">
|
|
42
|
+
<span itemProp="name">{name}</span>
|
|
43
|
+
</MaybeLink>
|
|
44
|
+
</div>
|
|
45
|
+
{title && (
|
|
46
|
+
<small className="avatar__subtitle" itemProp="description">
|
|
47
|
+
{title}
|
|
48
|
+
</small>
|
|
49
|
+
)}
|
|
50
|
+
</div>
|
|
51
|
+
)}
|
|
52
|
+
</div>
|
|
53
|
+
);
|
|
54
|
+
}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) Facebook, Inc. and its affiliates.
|
|
3
|
+
*
|
|
4
|
+
* This source code is licensed under the MIT license found in the
|
|
5
|
+
* LICENSE file in the root directory of this source tree.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
import React from 'react';
|
|
9
|
+
import clsx from 'clsx';
|
|
10
|
+
import type {Props} from '@theme/BlogPostAuthors';
|
|
11
|
+
import BlogPostAuthor from '@theme/BlogPostAuthor';
|
|
12
|
+
|
|
13
|
+
import styles from './styles.module.css';
|
|
14
|
+
|
|
15
|
+
// Component responsible for the authors layout
|
|
16
|
+
export default function BlogPostAuthors({
|
|
17
|
+
authors,
|
|
18
|
+
assets,
|
|
19
|
+
}: Props): JSX.Element | null {
|
|
20
|
+
const authorsCount = authors.length;
|
|
21
|
+
if (authorsCount === 0) {
|
|
22
|
+
return null;
|
|
23
|
+
}
|
|
24
|
+
const imageOnly = authors.every(({name}) => !name);
|
|
25
|
+
return (
|
|
26
|
+
<div
|
|
27
|
+
className={clsx(
|
|
28
|
+
'margin-top--md margin-bottom--sm',
|
|
29
|
+
imageOnly ? styles.imageOnlyAuthorRow : 'row',
|
|
30
|
+
)}>
|
|
31
|
+
{authors.map((author, idx) => (
|
|
32
|
+
<div
|
|
33
|
+
className={clsx(
|
|
34
|
+
!imageOnly && 'col col--6',
|
|
35
|
+
imageOnly ? styles.imageOnlyAuthorCol : styles.authorCol,
|
|
36
|
+
)}
|
|
37
|
+
key={idx}>
|
|
38
|
+
<BlogPostAuthor
|
|
39
|
+
author={{
|
|
40
|
+
...author,
|
|
41
|
+
// Handle author images using relative paths
|
|
42
|
+
imageURL: assets.authorsImageUrls[idx] ?? author.imageURL,
|
|
43
|
+
}}
|
|
44
|
+
/>
|
|
45
|
+
</div>
|
|
46
|
+
))}
|
|
47
|
+
</div>
|
|
48
|
+
);
|
|
49
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
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
|
+
.authorCol {
|
|
9
|
+
max-width: inherit !important;
|
|
10
|
+
flex-grow: 1 !important;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
.imageOnlyAuthorRow {
|
|
14
|
+
display: flex;
|
|
15
|
+
flex-flow: row wrap;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
.imageOnlyAuthorCol {
|
|
19
|
+
margin-left: 0.3rem;
|
|
20
|
+
margin-right: 0.3rem;
|
|
21
|
+
}
|