@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
|
@@ -5,93 +5,29 @@
|
|
|
5
5
|
* LICENSE file in the root directory of this source tree.
|
|
6
6
|
*/
|
|
7
7
|
|
|
8
|
-
import React, {useEffect, useState
|
|
8
|
+
import React, {isValidElement, useEffect, useState} from 'react';
|
|
9
9
|
import clsx from 'clsx';
|
|
10
|
-
import Highlight, {defaultProps, Language} from 'prism-react-renderer';
|
|
10
|
+
import Highlight, {defaultProps, type Language} from 'prism-react-renderer';
|
|
11
11
|
import copy from 'copy-text-to-clipboard';
|
|
12
|
-
import rangeParser from 'parse-numeric-range';
|
|
13
|
-
import usePrismTheme from '@theme/hooks/usePrismTheme';
|
|
14
|
-
import type {Props} from '@theme/CodeBlock';
|
|
15
12
|
import Translate, {translate} from '@docusaurus/Translate';
|
|
13
|
+
import {
|
|
14
|
+
useThemeConfig,
|
|
15
|
+
parseCodeBlockTitle,
|
|
16
|
+
parseLanguage,
|
|
17
|
+
parseLines,
|
|
18
|
+
ThemeClassNames,
|
|
19
|
+
usePrismTheme,
|
|
20
|
+
} from '@docusaurus/theme-common';
|
|
21
|
+
import type {Props} from '@theme/CodeBlock';
|
|
16
22
|
|
|
17
23
|
import styles from './styles.module.css';
|
|
18
24
|
|
|
19
|
-
import {useThemeConfig, parseCodeBlockTitle} from '@docusaurus/theme-common';
|
|
20
|
-
|
|
21
|
-
const highlightLinesRangeRegex = /{([\d,-]+)}/;
|
|
22
|
-
const getHighlightDirectiveRegex = (
|
|
23
|
-
languages = ['js', 'jsBlock', 'jsx', 'python', 'html'],
|
|
24
|
-
) => {
|
|
25
|
-
// supported types of comments
|
|
26
|
-
const comments = {
|
|
27
|
-
js: {
|
|
28
|
-
start: '\\/\\/',
|
|
29
|
-
end: '',
|
|
30
|
-
},
|
|
31
|
-
jsBlock: {
|
|
32
|
-
start: '\\/\\*',
|
|
33
|
-
end: '\\*\\/',
|
|
34
|
-
},
|
|
35
|
-
jsx: {
|
|
36
|
-
start: '\\{\\s*\\/\\*',
|
|
37
|
-
end: '\\*\\/\\s*\\}',
|
|
38
|
-
},
|
|
39
|
-
python: {
|
|
40
|
-
start: '#',
|
|
41
|
-
end: '',
|
|
42
|
-
},
|
|
43
|
-
html: {
|
|
44
|
-
start: '<!--',
|
|
45
|
-
end: '-->',
|
|
46
|
-
},
|
|
47
|
-
};
|
|
48
|
-
// supported directives
|
|
49
|
-
const directives = [
|
|
50
|
-
'highlight-next-line',
|
|
51
|
-
'highlight-start',
|
|
52
|
-
'highlight-end',
|
|
53
|
-
].join('|');
|
|
54
|
-
// to be more reliable, the opening and closing comment must match
|
|
55
|
-
const commentPattern = languages
|
|
56
|
-
.map(
|
|
57
|
-
(lang) =>
|
|
58
|
-
`(?:${comments[lang].start}\\s*(${directives})\\s*${comments[lang].end})`,
|
|
59
|
-
)
|
|
60
|
-
.join('|');
|
|
61
|
-
// white space is allowed, but otherwise it should be on it's own line
|
|
62
|
-
return new RegExp(`^\\s*(?:${commentPattern})\\s*$`);
|
|
63
|
-
};
|
|
64
|
-
// select comment styles based on language
|
|
65
|
-
const highlightDirectiveRegex = (lang) => {
|
|
66
|
-
switch (lang) {
|
|
67
|
-
case 'js':
|
|
68
|
-
case 'javascript':
|
|
69
|
-
case 'ts':
|
|
70
|
-
case 'typescript':
|
|
71
|
-
return getHighlightDirectiveRegex(['js', 'jsBlock']);
|
|
72
|
-
|
|
73
|
-
case 'jsx':
|
|
74
|
-
case 'tsx':
|
|
75
|
-
return getHighlightDirectiveRegex(['js', 'jsBlock', 'jsx']);
|
|
76
|
-
|
|
77
|
-
case 'html':
|
|
78
|
-
return getHighlightDirectiveRegex(['js', 'jsBlock', 'html']);
|
|
79
|
-
|
|
80
|
-
case 'python':
|
|
81
|
-
case 'py':
|
|
82
|
-
return getHighlightDirectiveRegex(['python']);
|
|
83
|
-
|
|
84
|
-
default:
|
|
85
|
-
// all comment types
|
|
86
|
-
return getHighlightDirectiveRegex();
|
|
87
|
-
}
|
|
88
|
-
};
|
|
89
|
-
|
|
90
25
|
export default function CodeBlock({
|
|
91
26
|
children,
|
|
92
|
-
className:
|
|
27
|
+
className: blockClassName = '',
|
|
93
28
|
metastring,
|
|
94
29
|
title,
|
|
30
|
+
language: languageProp,
|
|
95
31
|
}: Props): JSX.Element {
|
|
96
32
|
const {prism} = useThemeConfig();
|
|
97
33
|
|
|
@@ -108,82 +44,51 @@ export default function CodeBlock({
|
|
|
108
44
|
setMounted(true);
|
|
109
45
|
}, []);
|
|
110
46
|
|
|
111
|
-
//
|
|
112
|
-
//
|
|
113
|
-
//
|
|
47
|
+
// We still parse the metastring in case we want to support more syntax in the
|
|
48
|
+
// future. Note that MDX doesn't strip quotes when parsing metastring:
|
|
49
|
+
// "title=\"xyz\"" => title: "\"xyz\""
|
|
114
50
|
const codeBlockTitle = parseCodeBlockTitle(metastring) || title;
|
|
115
|
-
|
|
116
|
-
const button = useRef(null);
|
|
117
|
-
let highlightLines: number[] = [];
|
|
118
|
-
|
|
119
51
|
const prismTheme = usePrismTheme();
|
|
120
52
|
|
|
121
|
-
//
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
if (
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
53
|
+
// <pre> tags in markdown map to CodeBlocks and they may contain JSX children.
|
|
54
|
+
// When the children is not a simple string, we just return a styled block
|
|
55
|
+
// without actually highlighting.
|
|
56
|
+
if (React.Children.toArray(children).some((el) => isValidElement(el))) {
|
|
57
|
+
return (
|
|
58
|
+
<Highlight
|
|
59
|
+
{...defaultProps}
|
|
60
|
+
key={String(mounted)}
|
|
61
|
+
theme={prismTheme}
|
|
62
|
+
code=""
|
|
63
|
+
language={'text' as Language}>
|
|
64
|
+
{({className, style}) => (
|
|
65
|
+
<pre
|
|
66
|
+
/* eslint-disable-next-line jsx-a11y/no-noninteractive-tabindex */
|
|
67
|
+
tabIndex={0}
|
|
68
|
+
className={clsx(
|
|
69
|
+
className,
|
|
70
|
+
styles.codeBlockStandalone,
|
|
71
|
+
'thin-scrollbar',
|
|
72
|
+
styles.codeBlockContainer,
|
|
73
|
+
blockClassName,
|
|
74
|
+
ThemeClassNames.common.codeBlock,
|
|
75
|
+
)}
|
|
76
|
+
style={style}>
|
|
77
|
+
<code className={styles.codeBlockLines}>{children}</code>
|
|
78
|
+
</pre>
|
|
79
|
+
)}
|
|
80
|
+
</Highlight>
|
|
81
|
+
);
|
|
139
82
|
}
|
|
140
83
|
|
|
141
|
-
//
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
const directiveRegex = highlightDirectiveRegex(language);
|
|
146
|
-
// go through line by line
|
|
147
|
-
const lines = content.replace(/\n$/, '').split('\n');
|
|
148
|
-
let blockStart;
|
|
149
|
-
// loop through lines
|
|
150
|
-
for (let index = 0; index < lines.length; ) {
|
|
151
|
-
const line = lines[index];
|
|
152
|
-
// adjust for 0-index
|
|
153
|
-
const lineNumber = index + 1;
|
|
154
|
-
const match = line.match(directiveRegex);
|
|
155
|
-
if (match !== null) {
|
|
156
|
-
const directive = match
|
|
157
|
-
.slice(1)
|
|
158
|
-
.reduce(
|
|
159
|
-
(final: string | undefined, item) => final || item,
|
|
160
|
-
undefined,
|
|
161
|
-
);
|
|
162
|
-
switch (directive) {
|
|
163
|
-
case 'highlight-next-line':
|
|
164
|
-
range += `${lineNumber},`;
|
|
165
|
-
break;
|
|
166
|
-
|
|
167
|
-
case 'highlight-start':
|
|
168
|
-
blockStart = lineNumber;
|
|
169
|
-
break;
|
|
84
|
+
// The children is now guaranteed to be one/more plain strings
|
|
85
|
+
const content = Array.isArray(children)
|
|
86
|
+
? children.join('')
|
|
87
|
+
: (children as string);
|
|
170
88
|
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
default:
|
|
176
|
-
break;
|
|
177
|
-
}
|
|
178
|
-
lines.splice(index, 1);
|
|
179
|
-
} else {
|
|
180
|
-
// lines without directives are unchanged
|
|
181
|
-
index += 1;
|
|
182
|
-
}
|
|
183
|
-
}
|
|
184
|
-
highlightLines = rangeParser(range);
|
|
185
|
-
code = lines.join('\n');
|
|
186
|
-
}
|
|
89
|
+
const language =
|
|
90
|
+
languageProp ?? parseLanguage(blockClassName) ?? prism.defaultLanguage;
|
|
91
|
+
const {highlightLines, code} = parseLines(content, metastring, language);
|
|
187
92
|
|
|
188
93
|
const handleCopyCode = () => {
|
|
189
94
|
copy(code);
|
|
@@ -198,9 +103,18 @@ export default function CodeBlock({
|
|
|
198
103
|
key={String(mounted)}
|
|
199
104
|
theme={prismTheme}
|
|
200
105
|
code={code}
|
|
201
|
-
language={language}>
|
|
106
|
+
language={(language ?? 'text') as Language}>
|
|
202
107
|
{({className, style, tokens, getLineProps, getTokenProps}) => (
|
|
203
|
-
<div
|
|
108
|
+
<div
|
|
109
|
+
className={clsx(
|
|
110
|
+
styles.codeBlockContainer,
|
|
111
|
+
blockClassName,
|
|
112
|
+
{
|
|
113
|
+
[`language-${language}`]:
|
|
114
|
+
language && !blockClassName.includes(`language-${language}`),
|
|
115
|
+
},
|
|
116
|
+
ThemeClassNames.common.codeBlock,
|
|
117
|
+
)}>
|
|
204
118
|
{codeBlockTitle && (
|
|
205
119
|
<div style={style} className={styles.codeBlockTitle}>
|
|
206
120
|
{codeBlockTitle}
|
|
@@ -210,19 +124,17 @@ export default function CodeBlock({
|
|
|
210
124
|
<pre
|
|
211
125
|
/* eslint-disable-next-line jsx-a11y/no-noninteractive-tabindex */
|
|
212
126
|
tabIndex={0}
|
|
213
|
-
className={clsx(className, styles.codeBlock, 'thin-scrollbar'
|
|
214
|
-
[styles.codeBlockWithTitle]: codeBlockTitle,
|
|
215
|
-
})}
|
|
127
|
+
className={clsx(className, styles.codeBlock, 'thin-scrollbar')}
|
|
216
128
|
style={style}>
|
|
217
129
|
<code className={styles.codeBlockLines}>
|
|
218
130
|
{tokens.map((line, i) => {
|
|
219
|
-
if (line.length === 1 && line[0].content === '') {
|
|
220
|
-
line[0].content = '
|
|
131
|
+
if (line.length === 1 && line[0].content === '\n') {
|
|
132
|
+
line[0].content = '';
|
|
221
133
|
}
|
|
222
134
|
|
|
223
135
|
const lineProps = getLineProps({line, key: i});
|
|
224
136
|
|
|
225
|
-
if (highlightLines.includes(i
|
|
137
|
+
if (highlightLines.includes(i)) {
|
|
226
138
|
lineProps.className += ' docusaurus-highlight-code-line';
|
|
227
139
|
}
|
|
228
140
|
|
|
@@ -231,6 +143,7 @@ export default function CodeBlock({
|
|
|
231
143
|
{line.map((token, key) => (
|
|
232
144
|
<span key={key} {...getTokenProps({token, key})} />
|
|
233
145
|
))}
|
|
146
|
+
<br />
|
|
234
147
|
</span>
|
|
235
148
|
);
|
|
236
149
|
})}
|
|
@@ -238,7 +151,6 @@ export default function CodeBlock({
|
|
|
238
151
|
</pre>
|
|
239
152
|
|
|
240
153
|
<button
|
|
241
|
-
ref={button}
|
|
242
154
|
type="button"
|
|
243
155
|
aria-label={translate({
|
|
244
156
|
id: 'theme.CodeBlock.copyButtonAriaLabel',
|
|
@@ -7,34 +7,43 @@
|
|
|
7
7
|
|
|
8
8
|
.codeBlockContainer {
|
|
9
9
|
margin-bottom: var(--ifm-leading);
|
|
10
|
+
border-radius: var(--ifm-global-radius);
|
|
11
|
+
box-shadow: var(--ifm-global-shadow-lw);
|
|
10
12
|
}
|
|
11
13
|
|
|
12
14
|
.codeBlockContent {
|
|
13
15
|
position: relative;
|
|
14
|
-
/*rtl:ignore*/
|
|
16
|
+
/* rtl:ignore */
|
|
15
17
|
direction: ltr;
|
|
16
18
|
}
|
|
17
19
|
|
|
18
20
|
.codeBlockTitle {
|
|
19
|
-
border-top-left-radius: var(--ifm-global-radius);
|
|
20
|
-
border-top-right-radius: var(--ifm-global-radius);
|
|
21
21
|
border-bottom: 1px solid var(--ifm-color-emphasis-300);
|
|
22
22
|
font-size: var(--ifm-code-font-size);
|
|
23
23
|
font-weight: 500;
|
|
24
24
|
padding: 0.75rem var(--ifm-pre-padding);
|
|
25
|
+
border-top-left-radius: var(--ifm-global-radius);
|
|
26
|
+
border-top-right-radius: var(--ifm-global-radius);
|
|
25
27
|
}
|
|
26
28
|
|
|
27
29
|
.codeBlock {
|
|
30
|
+
margin: 0;
|
|
28
31
|
padding: 0;
|
|
32
|
+
border-radius: var(--ifm-global-radius);
|
|
29
33
|
}
|
|
30
34
|
|
|
31
|
-
.
|
|
35
|
+
.codeBlockTitle + .codeBlockContent .codeBlock {
|
|
32
36
|
border-top-left-radius: 0;
|
|
33
37
|
border-top-right-radius: 0;
|
|
34
38
|
}
|
|
35
39
|
|
|
40
|
+
.codeBlockStandalone {
|
|
41
|
+
padding: 0;
|
|
42
|
+
border-radius: var(--ifm-global-radius);
|
|
43
|
+
}
|
|
44
|
+
|
|
36
45
|
.copyButton {
|
|
37
|
-
background:
|
|
46
|
+
background: rgb(0 0 0 / 30%);
|
|
38
47
|
border-radius: var(--ifm-global-radius);
|
|
39
48
|
color: var(--ifm-color-white);
|
|
40
49
|
opacity: 0;
|
|
@@ -46,19 +55,18 @@
|
|
|
46
55
|
transition: opacity 200ms ease-in-out;
|
|
47
56
|
}
|
|
48
57
|
|
|
49
|
-
.
|
|
58
|
+
.copyButton:focus,
|
|
50
59
|
.codeBlockContent:hover > .copyButton,
|
|
51
|
-
.
|
|
60
|
+
.codeBlockTitle:hover + .codeBlockContent .copyButton {
|
|
52
61
|
opacity: 1;
|
|
53
62
|
}
|
|
54
63
|
|
|
55
64
|
.codeBlockLines {
|
|
56
65
|
font: inherit;
|
|
66
|
+
/* rtl:ignore */
|
|
57
67
|
float: left;
|
|
58
68
|
min-width: 100%;
|
|
59
69
|
padding: var(--ifm-pre-padding);
|
|
60
|
-
display: flex;
|
|
61
|
-
flex-direction: column;
|
|
62
70
|
}
|
|
63
71
|
|
|
64
72
|
@media print {
|
|
@@ -0,0 +1,92 @@
|
|
|
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, {useState, useRef, useEffect} from 'react';
|
|
9
|
+
import type {Props} from '@theme/ColorModeToggle';
|
|
10
|
+
import useIsBrowser from '@docusaurus/useIsBrowser';
|
|
11
|
+
import {translate} from '@docusaurus/Translate';
|
|
12
|
+
import IconLightMode from '@theme/IconLightMode';
|
|
13
|
+
import IconDarkMode from '@theme/IconDarkMode';
|
|
14
|
+
|
|
15
|
+
import clsx from 'clsx';
|
|
16
|
+
import styles from './styles.module.css';
|
|
17
|
+
|
|
18
|
+
function ColorModeToggle({
|
|
19
|
+
className,
|
|
20
|
+
checked: defaultChecked,
|
|
21
|
+
onChange,
|
|
22
|
+
}: Props): JSX.Element {
|
|
23
|
+
const isBrowser = useIsBrowser();
|
|
24
|
+
const [checked, setChecked] = useState(defaultChecked);
|
|
25
|
+
const [focused, setFocused] = useState(false);
|
|
26
|
+
const inputRef = useRef<HTMLInputElement>(null);
|
|
27
|
+
|
|
28
|
+
useEffect(() => {
|
|
29
|
+
setChecked(defaultChecked);
|
|
30
|
+
}, [defaultChecked]);
|
|
31
|
+
|
|
32
|
+
return (
|
|
33
|
+
<div
|
|
34
|
+
className={clsx(styles.toggle, className, {
|
|
35
|
+
[styles.toggleChecked]: checked,
|
|
36
|
+
[styles.toggleFocused]: focused,
|
|
37
|
+
[styles.toggleDisabled]: !isBrowser,
|
|
38
|
+
})}>
|
|
39
|
+
{/* eslint-disable-next-line jsx-a11y/click-events-have-key-events */}
|
|
40
|
+
<div
|
|
41
|
+
className={styles.toggleButton}
|
|
42
|
+
role="button"
|
|
43
|
+
tabIndex={-1}
|
|
44
|
+
onClick={() => inputRef.current?.click()}>
|
|
45
|
+
<IconLightMode
|
|
46
|
+
className={clsx(styles.toggleIcon, styles.lightToggleIcon)}
|
|
47
|
+
/>
|
|
48
|
+
<IconDarkMode
|
|
49
|
+
className={clsx(styles.toggleIcon, styles.darkToggleIcon)}
|
|
50
|
+
/>
|
|
51
|
+
</div>
|
|
52
|
+
|
|
53
|
+
<input
|
|
54
|
+
ref={inputRef}
|
|
55
|
+
checked={checked}
|
|
56
|
+
type="checkbox"
|
|
57
|
+
className={styles.toggleScreenReader}
|
|
58
|
+
aria-label={translate(
|
|
59
|
+
{
|
|
60
|
+
message: 'Switch between dark and light mode (currently {mode})',
|
|
61
|
+
id: 'theme.colorToggle.ariaLabel',
|
|
62
|
+
description: 'The ARIA label for the navbar color mode toggle',
|
|
63
|
+
},
|
|
64
|
+
{
|
|
65
|
+
mode: checked
|
|
66
|
+
? translate({
|
|
67
|
+
message: 'dark mode',
|
|
68
|
+
id: 'theme.colorToggle.ariaLabel.mode.dark',
|
|
69
|
+
description: 'The name for the dark color mode',
|
|
70
|
+
})
|
|
71
|
+
: translate({
|
|
72
|
+
message: 'light mode',
|
|
73
|
+
id: 'theme.colorToggle.ariaLabel.mode.light',
|
|
74
|
+
description: 'The name for the light color mode',
|
|
75
|
+
}),
|
|
76
|
+
},
|
|
77
|
+
)}
|
|
78
|
+
onChange={onChange}
|
|
79
|
+
onClick={() => setChecked(!checked)}
|
|
80
|
+
onFocus={() => setFocused(true)}
|
|
81
|
+
onBlur={() => setFocused(false)}
|
|
82
|
+
onKeyDown={(e) => {
|
|
83
|
+
if (e.key === 'Enter') {
|
|
84
|
+
inputRef.current?.click();
|
|
85
|
+
}
|
|
86
|
+
}}
|
|
87
|
+
/>
|
|
88
|
+
</div>
|
|
89
|
+
);
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
export default React.memo(ColorModeToggle);
|
|
@@ -0,0 +1,51 @@
|
|
|
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
|
+
.toggle {
|
|
9
|
+
position: relative;
|
|
10
|
+
width: 32px;
|
|
11
|
+
height: 32px;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
.toggleScreenReader {
|
|
15
|
+
border: 0;
|
|
16
|
+
clip: rect(0 0 0 0);
|
|
17
|
+
height: 1px;
|
|
18
|
+
margin: -1px;
|
|
19
|
+
overflow: hidden;
|
|
20
|
+
position: absolute;
|
|
21
|
+
width: 1px;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
.toggleDisabled {
|
|
25
|
+
cursor: not-allowed;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
.toggleButton {
|
|
29
|
+
cursor: pointer;
|
|
30
|
+
user-select: none;
|
|
31
|
+
-webkit-tap-highlight-color: transparent;
|
|
32
|
+
align-items: center;
|
|
33
|
+
display: flex;
|
|
34
|
+
justify-content: center;
|
|
35
|
+
width: 100%;
|
|
36
|
+
height: 100%;
|
|
37
|
+
border-radius: 50%;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
.toggleButton:hover {
|
|
41
|
+
background-color: #00000010;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
[data-theme='dark'] .toggleButton:hover {
|
|
45
|
+
background-color: #ffffff20;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
[data-theme='light'] .darkToggleIcon,
|
|
49
|
+
[data-theme='dark'] .lightToggleIcon {
|
|
50
|
+
display: none;
|
|
51
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
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 {Details as DetailsGeneric} from '@docusaurus/theme-common';
|
|
11
|
+
import type {Props} from '@theme/Details';
|
|
12
|
+
import styles from './styles.module.css';
|
|
13
|
+
|
|
14
|
+
// Should we have a custom details/summary comp in Infima instead of reusing
|
|
15
|
+
// alert classes?
|
|
16
|
+
const InfimaClasses = 'alert alert--info';
|
|
17
|
+
|
|
18
|
+
export default function Details({...props}: Props): JSX.Element {
|
|
19
|
+
return (
|
|
20
|
+
<DetailsGeneric
|
|
21
|
+
{...props}
|
|
22
|
+
className={clsx(InfimaClasses, styles.details, props.className)}
|
|
23
|
+
/>
|
|
24
|
+
);
|
|
25
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
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
|
+
.details {
|
|
9
|
+
--docusaurus-details-decoration-color: var(--ifm-alert-border-color);
|
|
10
|
+
--docusaurus-details-transition: transform var(--ifm-transition-fast) ease;
|
|
11
|
+
margin: 0 0 var(--ifm-spacing-vertical);
|
|
12
|
+
border: 1px solid var(--ifm-alert-border-color);
|
|
13
|
+
}
|
|
@@ -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, {type ReactNode} from 'react';
|
|
9
|
+
import {
|
|
10
|
+
ThemeClassNames,
|
|
11
|
+
useSidebarBreadcrumbs,
|
|
12
|
+
useHomePageRoute,
|
|
13
|
+
} from '@docusaurus/theme-common';
|
|
14
|
+
import styles from './styles.module.css';
|
|
15
|
+
import clsx from 'clsx';
|
|
16
|
+
import Link from '@docusaurus/Link';
|
|
17
|
+
import useBaseUrl from '@docusaurus/useBaseUrl';
|
|
18
|
+
|
|
19
|
+
// TODO move to design system folder
|
|
20
|
+
function BreadcrumbsItemLink({
|
|
21
|
+
children,
|
|
22
|
+
href,
|
|
23
|
+
}: {
|
|
24
|
+
children: ReactNode;
|
|
25
|
+
href?: string;
|
|
26
|
+
}): JSX.Element {
|
|
27
|
+
const className = clsx('breadcrumbs__link', styles.breadcrumbsItemLink);
|
|
28
|
+
return href ? (
|
|
29
|
+
<Link className={className} href={href}>
|
|
30
|
+
{children}
|
|
31
|
+
</Link>
|
|
32
|
+
) : (
|
|
33
|
+
<span className={className}>{children}</span>
|
|
34
|
+
);
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
// TODO move to design system folder
|
|
38
|
+
function BreadcrumbsItem({
|
|
39
|
+
children,
|
|
40
|
+
active,
|
|
41
|
+
}: {
|
|
42
|
+
children: ReactNode;
|
|
43
|
+
active?: boolean;
|
|
44
|
+
}): JSX.Element {
|
|
45
|
+
return (
|
|
46
|
+
<li
|
|
47
|
+
className={clsx('breadcrumbs__item', {
|
|
48
|
+
'breadcrumbs__item--active': active,
|
|
49
|
+
})}>
|
|
50
|
+
{children}
|
|
51
|
+
</li>
|
|
52
|
+
);
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
function HomeBreadcrumbItem() {
|
|
56
|
+
const homeHref = useBaseUrl('/');
|
|
57
|
+
return (
|
|
58
|
+
<BreadcrumbsItem>
|
|
59
|
+
<BreadcrumbsItemLink href={homeHref}>🏠</BreadcrumbsItemLink>
|
|
60
|
+
</BreadcrumbsItem>
|
|
61
|
+
);
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
export default function DocBreadcrumbs(): JSX.Element | null {
|
|
65
|
+
const breadcrumbs = useSidebarBreadcrumbs();
|
|
66
|
+
const homePageRoute = useHomePageRoute();
|
|
67
|
+
|
|
68
|
+
if (!breadcrumbs) {
|
|
69
|
+
return null;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
return (
|
|
73
|
+
<nav
|
|
74
|
+
className={clsx(
|
|
75
|
+
ThemeClassNames.docs.docBreadcrumbs,
|
|
76
|
+
styles.breadcrumbsContainer,
|
|
77
|
+
)}
|
|
78
|
+
aria-label="breadcrumbs">
|
|
79
|
+
<ul className="breadcrumbs">
|
|
80
|
+
{homePageRoute && <HomeBreadcrumbItem />}
|
|
81
|
+
{breadcrumbs.map((item, idx) => (
|
|
82
|
+
<BreadcrumbsItem key={idx} active={idx === breadcrumbs.length - 1}>
|
|
83
|
+
<BreadcrumbsItemLink href={item.href}>
|
|
84
|
+
{item.label}
|
|
85
|
+
</BreadcrumbsItemLink>
|
|
86
|
+
</BreadcrumbsItem>
|
|
87
|
+
))}
|
|
88
|
+
</ul>
|
|
89
|
+
</nav>
|
|
90
|
+
);
|
|
91
|
+
}
|
|
@@ -0,0 +1,26 @@
|
|
|
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
|
+
.breadcrumbsContainer {
|
|
9
|
+
margin-bottom: 0.4rem;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
.breadcrumbsItemLink {
|
|
13
|
+
--ifm-breadcrumb-size-multiplier: 0.7 !important;
|
|
14
|
+
margin-bottom: 0.4rem;
|
|
15
|
+
background: var(--ifm-color-gray-100);
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
html[data-theme='dark'] .breadcrumbsItemLink {
|
|
19
|
+
background-color: var(--ifm-color-gray-900);
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
@media (min-width: 997px) {
|
|
23
|
+
.breadcrumbsItemLink {
|
|
24
|
+
--ifm-breadcrumb-size-multiplier: 0.8;
|
|
25
|
+
}
|
|
26
|
+
}
|