@seqera/docusaurus-theme-seqera 1.0.0
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 +26 -0
- package/package.json +66 -0
- package/src/getSwizzleConfig.ts +433 -0
- package/src/index.ts +154 -0
- package/src/inlineScripts.ts +95 -0
- package/src/inlineSvgSprites.ts +7 -0
- package/src/main-styles.css +322 -0
- package/src/nprogress.css +36 -0
- package/src/nprogress.ts +27 -0
- package/src/options.ts +503 -0
- package/src/prism-include-languages.ts +6 -0
- package/src/styles/api.css +42 -0
- package/src/styles/typography.css +342 -0
- package/src/theme/Admonition/Icon/Danger.tsx +15 -0
- package/src/theme/Admonition/Icon/Info.tsx +15 -0
- package/src/theme/Admonition/Icon/Note.tsx +15 -0
- package/src/theme/Admonition/Icon/Tip.tsx +15 -0
- package/src/theme/Admonition/Icon/Warning.tsx +15 -0
- package/src/theme/Admonition/Layout/index.tsx +53 -0
- package/src/theme/Admonition/Layout/styles.module.css +39 -0
- package/src/theme/Admonition/Type/Caution.tsx +34 -0
- package/src/theme/Admonition/Type/Danger.tsx +32 -0
- package/src/theme/Admonition/Type/Info.tsx +32 -0
- package/src/theme/Admonition/Type/Note.tsx +32 -0
- package/src/theme/Admonition/Type/Tip.tsx +32 -0
- package/src/theme/Admonition/Type/Warning.tsx +32 -0
- package/src/theme/Admonition/Types.tsx +33 -0
- package/src/theme/Admonition/index.tsx +23 -0
- package/src/theme/AdmonitionVersioned/AddedInVersion.tsx +14 -0
- package/src/theme/AdmonitionVersioned/AdmonitionVersioned.tsx +66 -0
- package/src/theme/AdmonitionVersioned/ChangedInVersion.tsx +14 -0
- package/src/theme/AdmonitionVersioned/DeprecatedInVersion.tsx +15 -0
- package/src/theme/AdmonitionVersioned/getStableVersion.ts +30 -0
- package/src/theme/AdmonitionVersioned/index.ts +1 -0
- package/src/theme/AdmonitionVersioned/stableVersions.ts +119 -0
- package/src/theme/AnnouncementBar/CloseButton/index.tsx +24 -0
- package/src/theme/AnnouncementBar/CloseButton/styles.module.css +6 -0
- package/src/theme/AnnouncementBar/Content/index.tsx +21 -0
- package/src/theme/AnnouncementBar/Content/styles.module.css +12 -0
- package/src/theme/AnnouncementBar/index.tsx +37 -0
- package/src/theme/AnnouncementBar/styles.module.css +57 -0
- package/src/theme/BackToTopButton/index.tsx +30 -0
- package/src/theme/BackToTopButton/styles.module.css +39 -0
- package/src/theme/Blog/Components/Author/Socials/index.tsx +75 -0
- package/src/theme/Blog/Components/Author/Socials/styles.module.css +34 -0
- package/src/theme/Blog/Components/Author/index.tsx +98 -0
- package/src/theme/Blog/Components/Author/styles.module.css +69 -0
- package/src/theme/Blog/Pages/BlogAuthorsListPage/index.tsx +57 -0
- package/src/theme/Blog/Pages/BlogAuthorsListPage/styles.module.css +6 -0
- package/src/theme/Blog/Pages/BlogAuthorsPostsPage/index.tsx +77 -0
- package/src/theme/BlogArchivePage/index.tsx +102 -0
- package/src/theme/BlogLayout/index.tsx +31 -0
- package/src/theme/BlogListPage/StructuredData/index.tsx +17 -0
- package/src/theme/BlogListPage/index.tsx +57 -0
- package/src/theme/BlogListPaginator/index.tsx +47 -0
- package/src/theme/BlogPostItem/Container/index.tsx +11 -0
- package/src/theme/BlogPostItem/Content/index.tsx +23 -0
- package/src/theme/BlogPostItem/Footer/ReadMoreLink/index.tsx +39 -0
- package/src/theme/BlogPostItem/Footer/index.tsx +85 -0
- package/src/theme/BlogPostItem/Header/Authors/index.tsx +49 -0
- package/src/theme/BlogPostItem/Header/Authors/styles.module.css +15 -0
- package/src/theme/BlogPostItem/Header/Info/index.tsx +77 -0
- package/src/theme/BlogPostItem/Header/Info/styles.module.css +5 -0
- package/src/theme/BlogPostItem/Header/Title/index.tsx +20 -0
- package/src/theme/BlogPostItem/Header/Title/styles.module.css +14 -0
- package/src/theme/BlogPostItem/Header/index.tsx +16 -0
- package/src/theme/BlogPostItem/index.tsx +27 -0
- package/src/theme/BlogPostItems/index.tsx +25 -0
- package/src/theme/BlogPostPage/Metadata/index.tsx +39 -0
- package/src/theme/BlogPostPage/StructuredData/index.tsx +16 -0
- package/src/theme/BlogPostPage/index.tsx +74 -0
- package/src/theme/BlogPostPaginator/index.tsx +46 -0
- package/src/theme/BlogSidebar/Content/index.tsx +52 -0
- package/src/theme/BlogSidebar/Desktop/index.tsx +52 -0
- package/src/theme/BlogSidebar/Desktop/styles.module.css +46 -0
- package/src/theme/BlogSidebar/Mobile/index.tsx +47 -0
- package/src/theme/BlogSidebar/Mobile/styles.module.css +5 -0
- package/src/theme/BlogSidebar/index.tsx +19 -0
- package/src/theme/BlogTagsListPage/index.tsx +33 -0
- package/src/theme/BlogTagsPostsPage/index.tsx +68 -0
- package/src/theme/CodeBlock/Buttons/Button/index.tsx +14 -0
- package/src/theme/CodeBlock/Buttons/CopyButton/index.tsx +82 -0
- package/src/theme/CodeBlock/Buttons/CopyButton/styles.module.css +42 -0
- package/src/theme/CodeBlock/Buttons/WordWrapButton/index.tsx +40 -0
- package/src/theme/CodeBlock/Buttons/WordWrapButton/styles.module.css +10 -0
- package/src/theme/CodeBlock/Buttons/index.tsx +27 -0
- package/src/theme/CodeBlock/Buttons/styles.module.css +32 -0
- package/src/theme/CodeBlock/Container/index.tsx +27 -0
- package/src/theme/CodeBlock/Container/styles.module.css +9 -0
- package/src/theme/CodeBlock/Content/Element.tsx +24 -0
- package/src/theme/CodeBlock/Content/String.tsx +37 -0
- package/src/theme/CodeBlock/Content/index.tsx +79 -0
- package/src/theme/CodeBlock/Content/styles.module.css +30 -0
- package/src/theme/CodeBlock/Layout/index.tsx +29 -0
- package/src/theme/CodeBlock/Layout/styles.module.css +22 -0
- package/src/theme/CodeBlock/Line/Token/index.tsx +13 -0
- package/src/theme/CodeBlock/Line/index.tsx +61 -0
- package/src/theme/CodeBlock/Line/styles.module.css +47 -0
- package/src/theme/CodeBlock/Title/index.tsx +10 -0
- package/src/theme/CodeBlock/index.tsx +40 -0
- package/src/theme/CodeInline/index.tsx +11 -0
- package/src/theme/ColorModeToggle/index.tsx +140 -0
- package/src/theme/ColorModeToggle/styles.module.css +35 -0
- package/src/theme/ContentVisibility/Draft/index.tsx +22 -0
- package/src/theme/ContentVisibility/Unlisted/index.tsx +37 -0
- package/src/theme/ContentVisibility/index.tsx +20 -0
- package/src/theme/Details/index.tsx +21 -0
- package/src/theme/Details/styles.module.css +8 -0
- package/src/theme/DocBreadcrumbs/Items/Home/index.tsx +29 -0
- package/src/theme/DocBreadcrumbs/Items/Home/styles.module.css +9 -0
- package/src/theme/DocBreadcrumbs/StructuredData/index.tsx +19 -0
- package/src/theme/DocBreadcrumbs/index.tsx +98 -0
- package/src/theme/DocBreadcrumbs/styles.module.css +14 -0
- package/src/theme/DocCard/index.tsx +133 -0
- package/src/theme/DocCard/styles.module.css +29 -0
- package/src/theme/DocCardList/index.tsx +43 -0
- package/src/theme/DocCardList/styles.module.css +9 -0
- package/src/theme/DocCategoryGeneratedIndexPage/index.tsx +68 -0
- package/src/theme/DocCategoryGeneratedIndexPage/styles.module.css +13 -0
- package/src/theme/DocItem/Content/index.tsx +43 -0
- package/src/theme/DocItem/Footer/index.tsx +51 -0
- package/src/theme/DocItem/Layout/index.tsx +66 -0
- package/src/theme/DocItem/Layout/styles.module.css +12 -0
- package/src/theme/DocItem/Metadata/index.tsx +17 -0
- package/src/theme/DocItem/Paginator/index.tsx +20 -0
- package/src/theme/DocItem/TOC/Desktop/index.tsx +19 -0
- package/src/theme/DocItem/TOC/Mobile/index.tsx +22 -0
- package/src/theme/DocItem/TOC/Mobile/styles.module.css +26 -0
- package/src/theme/DocItem/index.tsx +23 -0
- package/src/theme/DocPaginator/index.tsx +46 -0
- package/src/theme/DocRoot/Layout/Main/index.tsx +31 -0
- package/src/theme/DocRoot/Layout/Main/styles.module.css +23 -0
- package/src/theme/DocRoot/Layout/Sidebar/ExpandButton/index.tsx +36 -0
- package/src/theme/DocRoot/Layout/Sidebar/ExpandButton/styles.module.css +29 -0
- package/src/theme/DocRoot/Layout/Sidebar/index.tsx +79 -0
- package/src/theme/DocRoot/Layout/Sidebar/styles.module.css +34 -0
- package/src/theme/DocRoot/Layout/index.tsx +32 -0
- package/src/theme/DocRoot/Layout/styles.module.css +11 -0
- package/src/theme/DocRoot/index.tsx +29 -0
- package/src/theme/DocSidebar/Desktop/CollapseButton/index.tsx +34 -0
- package/src/theme/DocSidebar/Desktop/CollapseButton/styles.module.css +42 -0
- package/src/theme/DocSidebar/Desktop/Content/index.tsx +56 -0
- package/src/theme/DocSidebar/Desktop/Content/styles.module.css +18 -0
- package/src/theme/DocSidebar/Desktop/index.tsx +36 -0
- package/src/theme/DocSidebar/Desktop/styles.module.css +39 -0
- package/src/theme/DocSidebar/Mobile/index.tsx +49 -0
- package/src/theme/DocSidebar/index.tsx +25 -0
- package/src/theme/DocSidebarItem/Category/index.tsx +309 -0
- package/src/theme/DocSidebarItem/Category/styles.module.css +35 -0
- package/src/theme/DocSidebarItem/Html/index.tsx +30 -0
- package/src/theme/DocSidebarItem/Html/styles.module.css +8 -0
- package/src/theme/DocSidebarItem/Link/index.tsx +62 -0
- package/src/theme/DocSidebarItem/Link/styles.module.css +13 -0
- package/src/theme/DocSidebarItem/index.tsx +19 -0
- package/src/theme/DocSidebarItems/index.tsx +24 -0
- package/src/theme/DocTagDocListPage/index.tsx +113 -0
- package/src/theme/DocTagsListPage/index.tsx +52 -0
- package/src/theme/DocVersionBadge/index.tsx +29 -0
- package/src/theme/DocVersionBanner/index.tsx +171 -0
- package/src/theme/DocVersionRoot/index.tsx +46 -0
- package/src/theme/DocsRoot/index.tsx +17 -0
- package/src/theme/EditMetaRow/index.tsx +31 -0
- package/src/theme/EditMetaRow/styles.module.css +19 -0
- package/src/theme/EditThisPage/index.tsx +21 -0
- package/src/theme/ErrorPageContent.tsx +38 -0
- package/src/theme/Footer/Copyright/index.tsx +15 -0
- package/src/theme/Footer/Layout/index.tsx +42 -0
- package/src/theme/Footer/LinkItem/index.tsx +31 -0
- package/src/theme/Footer/Links/MultiColumn/index.tsx +53 -0
- package/src/theme/Footer/Links/Simple/index.tsx +38 -0
- package/src/theme/Footer/Links/index.tsx +16 -0
- package/src/theme/Footer/Logo/index.tsx +41 -0
- package/src/theme/Footer/Logo/styles.module.css +11 -0
- package/src/theme/Footer/index.tsx +28 -0
- package/src/theme/Heading/index.tsx +50 -0
- package/src/theme/Heading/styles.module.css +17 -0
- package/src/theme/Homepage/index.tsx +178 -0
- package/src/theme/Icon/AI/index.tsx +21 -0
- package/src/theme/Icon/AWS/index.tsx +22 -0
- package/src/theme/Icon/Arrow/index.tsx +15 -0
- package/src/theme/Icon/Azure/index.tsx +28 -0
- package/src/theme/Icon/Changelog/index.tsx +26 -0
- package/src/theme/Icon/ChatBubble/index.tsx +29 -0
- package/src/theme/Icon/ChatBubbles/index.tsx +42 -0
- package/src/theme/Icon/Close/index.tsx +21 -0
- package/src/theme/Icon/Cog/index.tsx +45 -0
- package/src/theme/Icon/Copy/index.tsx +15 -0
- package/src/theme/Icon/DarkMode/index.tsx +15 -0
- package/src/theme/Icon/Edit/index.tsx +24 -0
- package/src/theme/Icon/Edit/styles.module.css +6 -0
- package/src/theme/Icon/Envelope/index.tsx +33 -0
- package/src/theme/Icon/ExternalLink/index.tsx +30 -0
- package/src/theme/Icon/ExternalLink/styles.module.css +5 -0
- package/src/theme/Icon/Fusion/index.tsx +32 -0
- package/src/theme/Icon/GoogleCloud/index.tsx +56 -0
- package/src/theme/Icon/Home/index.tsx +15 -0
- package/src/theme/Icon/Language/index.tsx +24 -0
- package/src/theme/Icon/LightMode/index.tsx +15 -0
- package/src/theme/Icon/MCP/index.tsx +84 -0
- package/src/theme/Icon/Menu/index.tsx +29 -0
- package/src/theme/Icon/MultiQC/index.tsx +25 -0
- package/src/theme/Icon/Nextflow/index.tsx +25 -0
- package/src/theme/Icon/QuestionMark/index.tsx +46 -0
- package/src/theme/Icon/SeqeraCloud/index.tsx +35 -0
- package/src/theme/Icon/SeqeraEnterprise/index.tsx +372 -0
- package/src/theme/Icon/SeqeraLogo/index.tsx +22 -0
- package/src/theme/Icon/ServiceStatus/index.tsx +101 -0
- package/src/theme/Icon/Sidebar/index.tsx +8 -0
- package/src/theme/Icon/Socials/Bluesky/index.tsx +23 -0
- package/src/theme/Icon/Socials/Bluesky/styles.module.css +9 -0
- package/src/theme/Icon/Socials/Default/index.tsx +28 -0
- package/src/theme/Icon/Socials/Email/index.tsx +23 -0
- package/src/theme/Icon/Socials/GitHub/index.tsx +24 -0
- package/src/theme/Icon/Socials/GitHub/styles.module.css +9 -0
- package/src/theme/Icon/Socials/Instagram/index.tsx +23 -0
- package/src/theme/Icon/Socials/Instagram/styles.module.css +9 -0
- package/src/theme/Icon/Socials/LinkedIn/index.tsx +23 -0
- package/src/theme/Icon/Socials/LinkedIn/styles.module.css +9 -0
- package/src/theme/Icon/Socials/Mastodon/index.tsx +40 -0
- package/src/theme/Icon/Socials/StackOverflow/index.tsx +25 -0
- package/src/theme/Icon/Socials/Threads/index.tsx +25 -0
- package/src/theme/Icon/Socials/Threads/styles.module.css +9 -0
- package/src/theme/Icon/Socials/Twitch/index.tsx +32 -0
- package/src/theme/Icon/Socials/Twitter/index.tsx +22 -0
- package/src/theme/Icon/Socials/X/index.tsx +24 -0
- package/src/theme/Icon/Socials/X/styles.module.css +9 -0
- package/src/theme/Icon/Socials/YouTube/index.tsx +22 -0
- package/src/theme/Icon/Success/index.tsx +15 -0
- package/src/theme/Icon/SystemColorMode/index.tsx +15 -0
- package/src/theme/Icon/Wave/index.tsx +32 -0
- package/src/theme/Icon/WordWrap/index.tsx +15 -0
- package/src/theme/LastUpdated/index.tsx +91 -0
- package/src/theme/Layout/Provider/index.tsx +26 -0
- package/src/theme/Layout/index.tsx +59 -0
- package/src/theme/Layout/styles.module.css +23 -0
- package/src/theme/Logo/index.tsx +78 -0
- package/src/theme/MDXComponents/A/index.tsx +16 -0
- package/src/theme/MDXComponents/Button/index.tsx +43 -0
- package/src/theme/MDXComponents/Code.tsx +26 -0
- package/src/theme/MDXComponents/Details.tsx +26 -0
- package/src/theme/MDXComponents/Heading.tsx +9 -0
- package/src/theme/MDXComponents/Img/index.tsx +23 -0
- package/src/theme/MDXComponents/Img/styles.module.css +5 -0
- package/src/theme/MDXComponents/Li.tsx +17 -0
- package/src/theme/MDXComponents/Pre.tsx +10 -0
- package/src/theme/MDXComponents/Ul/index.tsx +25 -0
- package/src/theme/MDXComponents/Ul/styles.module.css +9 -0
- package/src/theme/MDXComponents/index.tsx +47 -0
- package/src/theme/MDXContent/index.tsx +10 -0
- package/src/theme/MDXPage/index.tsx +87 -0
- package/src/theme/MDXPage/styles.module.css +5 -0
- package/src/theme/Mermaid.tsx +11 -0
- package/src/theme/Navbar/ColorModeToggle/index.tsx +29 -0
- package/src/theme/Navbar/ColorModeToggle/styles.module.css +5 -0
- package/src/theme/Navbar/Content/index.tsx +152 -0
- package/src/theme/Navbar/Content/styles.module.css +19 -0
- package/src/theme/Navbar/Layout/index.tsx +59 -0
- package/src/theme/Navbar/Layout/styles.module.css +9 -0
- package/src/theme/Navbar/Logo/index.tsx +14 -0
- package/src/theme/Navbar/MobileSidebar/Header/index.tsx +37 -0
- package/src/theme/Navbar/MobileSidebar/Layout/index.tsx +72 -0
- package/src/theme/Navbar/MobileSidebar/Layout/styles.module.css +11 -0
- package/src/theme/Navbar/MobileSidebar/PrimaryMenu/index.tsx +90 -0
- package/src/theme/Navbar/MobileSidebar/SecondaryMenu/index.tsx +34 -0
- package/src/theme/Navbar/MobileSidebar/Toggle/index.tsx +25 -0
- package/src/theme/Navbar/MobileSidebar/index.tsx +28 -0
- package/src/theme/Navbar/Search/index.tsx +15 -0
- package/src/theme/Navbar/Search/styles.module.css +22 -0
- package/src/theme/Navbar/Submenu/SubmenuLinks.tsx +136 -0
- package/src/theme/Navbar/Submenu/index.tsx +84 -0
- package/src/theme/Navbar/Submenu/styles.module.css +82 -0
- package/src/theme/Navbar/index.tsx +13 -0
- package/src/theme/NavbarItem/ComponentTypes.tsx +27 -0
- package/src/theme/NavbarItem/DefaultNavbarItem/Desktop/index.tsx +29 -0
- package/src/theme/NavbarItem/DefaultNavbarItem/Mobile/index.tsx +18 -0
- package/src/theme/NavbarItem/DefaultNavbarItem/index.tsx +23 -0
- package/src/theme/NavbarItem/DocNavbarItem.tsx +38 -0
- package/src/theme/NavbarItem/DocSidebarNavbarItem.tsx +33 -0
- package/src/theme/NavbarItem/DocsVersionDropdownNavbarItem.tsx +189 -0
- package/src/theme/NavbarItem/DocsVersionNavbarItem.tsx +22 -0
- package/src/theme/NavbarItem/DropdownNavbarItem/Desktop/index.tsx +81 -0
- package/src/theme/NavbarItem/DropdownNavbarItem/Mobile/index.tsx +161 -0
- package/src/theme/NavbarItem/DropdownNavbarItem/Mobile/styles.module.css +5 -0
- package/src/theme/NavbarItem/DropdownNavbarItem/index.tsx +14 -0
- package/src/theme/NavbarItem/HtmlNavbarItem.tsx +27 -0
- package/src/theme/NavbarItem/LocaleDropdownNavbarItem/index.tsx +128 -0
- package/src/theme/NavbarItem/LocaleDropdownNavbarItem/styles.module.css +6 -0
- package/src/theme/NavbarItem/NavbarNavLink.tsx +69 -0
- package/src/theme/NavbarItem/SearchNavbarItem.tsx +21 -0
- package/src/theme/NavbarItem/index.tsx +23 -0
- package/src/theme/NotFound/Content/index.tsx +34 -0
- package/src/theme/NotFound/index.tsx +22 -0
- package/src/theme/PaginatorNavLink/index.tsx +21 -0
- package/src/theme/SearchBar.tsx +8 -0
- package/src/theme/SearchMetadata/index.tsx +38 -0
- package/src/theme/SiteMetadata/index.tsx +153 -0
- package/src/theme/SkipToContent/index.tsx +9 -0
- package/src/theme/SkipToContent/styles.module.css +16 -0
- package/src/theme/TOC/index.tsx +26 -0
- package/src/theme/TOC/styles.module.css +23 -0
- package/src/theme/TOCCollapsible/CollapseButton/index.tsx +30 -0
- package/src/theme/TOCCollapsible/CollapseButton/styles.module.css +27 -0
- package/src/theme/TOCCollapsible/index.tsx +42 -0
- package/src/theme/TOCCollapsible/styles.module.css +26 -0
- package/src/theme/TOCInline/index.tsx +25 -0
- package/src/theme/TOCInline/styles.module.css +7 -0
- package/src/theme/TOCItems/Tree.tsx +40 -0
- package/src/theme/TOCItems/index.tsx +56 -0
- package/src/theme/TabItem/index.tsx +22 -0
- package/src/theme/TabItem/styles.module.css +5 -0
- package/src/theme/Tabs/index.tsx +167 -0
- package/src/theme/Tabs/styles.module.css +9 -0
- package/src/theme/Tag/index.tsx +30 -0
- package/src/theme/Tag/styles.module.css +65 -0
- package/src/theme/TagsListByLetter/index.tsx +40 -0
- package/src/theme/TagsListByLetter/styles.module.css +6 -0
- package/src/theme/TagsListInline/index.tsx +30 -0
- package/src/theme/TagsListInline/styles.module.css +10 -0
- package/src/theme/ThemeProvider/TitleFormatter/index.tsx +22 -0
- package/src/theme/ThemeProvider/index.tsx +9 -0
- package/src/theme/ThemedImage/index.tsx +21 -0
- package/src/theme/ThemedImage/styles.module.css +13 -0
- package/src/theme/pages/Home/index.tsx +19 -0
- package/src/theme/prism-include-languages.ts +39 -0
- package/src/theme-seqera.d.ts +2277 -0
- package/src/translations.ts +240 -0
- package/tailwind.config.js +7 -0
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
|
|
2
|
+
|
|
3
|
+
import React, {type ReactNode} from 'react';
|
|
4
|
+
import clsx from 'clsx';
|
|
5
|
+
import Translate from '@docusaurus/Translate';
|
|
6
|
+
import {ThemeClassNames} from '@docusaurus/theme-common';
|
|
7
|
+
import {useDocsVersion} from '@docusaurus/plugin-content-docs/client';
|
|
8
|
+
import type {Props} from '@theme/DocVersionBadge';
|
|
9
|
+
|
|
10
|
+
export default function DocVersionBadge({className}: Props): ReactNode {
|
|
11
|
+
const versionMetadata = useDocsVersion();
|
|
12
|
+
if (versionMetadata.badge) {
|
|
13
|
+
return (
|
|
14
|
+
<span
|
|
15
|
+
className={clsx(
|
|
16
|
+
className,
|
|
17
|
+
ThemeClassNames.docs.docVersionBadge,
|
|
18
|
+
'badge badge--secondary',
|
|
19
|
+
)}>
|
|
20
|
+
<Translate
|
|
21
|
+
id="theme.docs.versionBadge.label"
|
|
22
|
+
values={{versionLabel: versionMetadata.label}}>
|
|
23
|
+
{'Version: {versionLabel}'}
|
|
24
|
+
</Translate>
|
|
25
|
+
</span>
|
|
26
|
+
);
|
|
27
|
+
}
|
|
28
|
+
return null;
|
|
29
|
+
}
|
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
|
|
2
|
+
|
|
3
|
+
import React, {type ComponentType, type ReactNode} from 'react';
|
|
4
|
+
import clsx from 'clsx';
|
|
5
|
+
import useDocusaurusContext from '@docusaurus/useDocusaurusContext';
|
|
6
|
+
import Link from '@docusaurus/Link';
|
|
7
|
+
import Translate from '@docusaurus/Translate';
|
|
8
|
+
import {
|
|
9
|
+
useActivePlugin,
|
|
10
|
+
useDocVersionSuggestions,
|
|
11
|
+
type GlobalVersion,
|
|
12
|
+
} from '@docusaurus/plugin-content-docs/client';
|
|
13
|
+
import {ThemeClassNames} from '@docusaurus/theme-common';
|
|
14
|
+
import {
|
|
15
|
+
useDocsPreferredVersion,
|
|
16
|
+
useDocsVersion,
|
|
17
|
+
} from '@docusaurus/plugin-content-docs/client';
|
|
18
|
+
import type {Props} from '@theme/DocVersionBanner';
|
|
19
|
+
import type {
|
|
20
|
+
VersionBanner,
|
|
21
|
+
PropVersionMetadata,
|
|
22
|
+
} from '@docusaurus/plugin-content-docs';
|
|
23
|
+
|
|
24
|
+
type BannerLabelComponentProps = {
|
|
25
|
+
siteTitle: string;
|
|
26
|
+
versionMetadata: PropVersionMetadata;
|
|
27
|
+
};
|
|
28
|
+
|
|
29
|
+
function UnreleasedVersionLabel({
|
|
30
|
+
siteTitle,
|
|
31
|
+
versionMetadata,
|
|
32
|
+
}: BannerLabelComponentProps) {
|
|
33
|
+
return (
|
|
34
|
+
<Translate
|
|
35
|
+
id="theme.docs.versions.unreleasedVersionLabel"
|
|
36
|
+
description="The label used to tell the user that he's browsing an unreleased doc version"
|
|
37
|
+
values={{
|
|
38
|
+
siteTitle,
|
|
39
|
+
versionLabel: <b>{versionMetadata.label}</b>,
|
|
40
|
+
}}>
|
|
41
|
+
{
|
|
42
|
+
'This is unreleased documentation for {siteTitle} {versionLabel} version.'
|
|
43
|
+
}
|
|
44
|
+
</Translate>
|
|
45
|
+
);
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
function UnmaintainedVersionLabel({
|
|
49
|
+
siteTitle,
|
|
50
|
+
versionMetadata,
|
|
51
|
+
}: BannerLabelComponentProps) {
|
|
52
|
+
return (
|
|
53
|
+
<Translate
|
|
54
|
+
id="theme.docs.versions.unmaintainedVersionLabel"
|
|
55
|
+
description="The label used to tell the user that he's browsing an unmaintained doc version"
|
|
56
|
+
values={{
|
|
57
|
+
siteTitle,
|
|
58
|
+
versionLabel: <b>{versionMetadata.label}</b>,
|
|
59
|
+
}}>
|
|
60
|
+
{
|
|
61
|
+
'This is documentation for {siteTitle} {versionLabel}, which is no longer actively maintained.'
|
|
62
|
+
}
|
|
63
|
+
</Translate>
|
|
64
|
+
);
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
const BannerLabelComponents: {
|
|
68
|
+
[banner in VersionBanner]: ComponentType<BannerLabelComponentProps>;
|
|
69
|
+
} = {
|
|
70
|
+
unreleased: UnreleasedVersionLabel,
|
|
71
|
+
unmaintained: UnmaintainedVersionLabel,
|
|
72
|
+
};
|
|
73
|
+
|
|
74
|
+
function BannerLabel(props: BannerLabelComponentProps) {
|
|
75
|
+
const BannerLabelComponent =
|
|
76
|
+
BannerLabelComponents[props.versionMetadata.banner!];
|
|
77
|
+
return <BannerLabelComponent {...props} />;
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
function LatestVersionSuggestionLabel({
|
|
81
|
+
versionLabel,
|
|
82
|
+
to,
|
|
83
|
+
onClick,
|
|
84
|
+
}: {
|
|
85
|
+
to: string;
|
|
86
|
+
onClick: () => void;
|
|
87
|
+
versionLabel: string;
|
|
88
|
+
}) {
|
|
89
|
+
return (
|
|
90
|
+
<Translate
|
|
91
|
+
id="theme.docs.versions.latestVersionSuggestionLabel"
|
|
92
|
+
description="The label used to tell the user to check the latest version"
|
|
93
|
+
values={{
|
|
94
|
+
versionLabel,
|
|
95
|
+
latestVersionLink: (
|
|
96
|
+
<b>
|
|
97
|
+
<Link to={to} onClick={onClick}>
|
|
98
|
+
<Translate
|
|
99
|
+
id="theme.docs.versions.latestVersionLinkLabel"
|
|
100
|
+
description="The label used for the latest version suggestion link label">
|
|
101
|
+
latest version
|
|
102
|
+
</Translate>
|
|
103
|
+
</Link>
|
|
104
|
+
</b>
|
|
105
|
+
),
|
|
106
|
+
}}>
|
|
107
|
+
{
|
|
108
|
+
'For up-to-date documentation, see the {latestVersionLink} ({versionLabel}).'
|
|
109
|
+
}
|
|
110
|
+
</Translate>
|
|
111
|
+
);
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
function DocVersionBannerEnabled({
|
|
115
|
+
className,
|
|
116
|
+
versionMetadata,
|
|
117
|
+
}: Props & {
|
|
118
|
+
versionMetadata: PropVersionMetadata;
|
|
119
|
+
}): ReactNode {
|
|
120
|
+
const {
|
|
121
|
+
siteConfig: {title: siteTitle},
|
|
122
|
+
} = useDocusaurusContext();
|
|
123
|
+
const {pluginId} = useActivePlugin({failfast: true})!;
|
|
124
|
+
|
|
125
|
+
const getVersionMainDoc = (version: GlobalVersion) =>
|
|
126
|
+
version.docs.find((doc) => doc.id === version.mainDocId)!;
|
|
127
|
+
|
|
128
|
+
const {savePreferredVersionName} = useDocsPreferredVersion(pluginId);
|
|
129
|
+
|
|
130
|
+
const {latestDocSuggestion, latestVersionSuggestion} =
|
|
131
|
+
useDocVersionSuggestions(pluginId);
|
|
132
|
+
|
|
133
|
+
// Try to link to same doc in latest version (not always possible), falling
|
|
134
|
+
// back to main doc of latest version
|
|
135
|
+
const latestVersionSuggestedDoc =
|
|
136
|
+
latestDocSuggestion ?? getVersionMainDoc(latestVersionSuggestion);
|
|
137
|
+
|
|
138
|
+
return (
|
|
139
|
+
<div
|
|
140
|
+
className={clsx(
|
|
141
|
+
className,
|
|
142
|
+
ThemeClassNames.docs.docVersionBanner,
|
|
143
|
+
'alert alert--warning margin-bottom--md',
|
|
144
|
+
)}
|
|
145
|
+
role="alert">
|
|
146
|
+
<div>
|
|
147
|
+
<BannerLabel siteTitle={siteTitle} versionMetadata={versionMetadata} />
|
|
148
|
+
</div>
|
|
149
|
+
<div className="margin-top--md">
|
|
150
|
+
<LatestVersionSuggestionLabel
|
|
151
|
+
versionLabel={latestVersionSuggestion.label}
|
|
152
|
+
to={latestVersionSuggestedDoc.path}
|
|
153
|
+
onClick={() => savePreferredVersionName(latestVersionSuggestion.name)}
|
|
154
|
+
/>
|
|
155
|
+
</div>
|
|
156
|
+
</div>
|
|
157
|
+
);
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
export default function DocVersionBanner({className}: Props): ReactNode {
|
|
161
|
+
const versionMetadata = useDocsVersion();
|
|
162
|
+
if (versionMetadata.banner) {
|
|
163
|
+
return (
|
|
164
|
+
<DocVersionBannerEnabled
|
|
165
|
+
className={className}
|
|
166
|
+
versionMetadata={versionMetadata}
|
|
167
|
+
/>
|
|
168
|
+
);
|
|
169
|
+
}
|
|
170
|
+
return null;
|
|
171
|
+
}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
|
|
2
|
+
|
|
3
|
+
import React, {type ReactNode} from 'react';
|
|
4
|
+
import {HtmlClassNameProvider, PageMetadata} from '@docusaurus/theme-common';
|
|
5
|
+
import {
|
|
6
|
+
getDocsVersionSearchTag,
|
|
7
|
+
DocsVersionProvider,
|
|
8
|
+
} from '@docusaurus/plugin-content-docs/client';
|
|
9
|
+
import renderRoutes from '@docusaurus/renderRoutes';
|
|
10
|
+
import SearchMetadata from '@theme/SearchMetadata';
|
|
11
|
+
|
|
12
|
+
import type {Props} from '@theme/DocVersionRoot';
|
|
13
|
+
|
|
14
|
+
function DocVersionRootMetadata(props: Props): ReactNode {
|
|
15
|
+
const {version} = props;
|
|
16
|
+
return (
|
|
17
|
+
<>
|
|
18
|
+
<SearchMetadata
|
|
19
|
+
version={version.version}
|
|
20
|
+
tag={getDocsVersionSearchTag(version.pluginId, version.version)}
|
|
21
|
+
/>
|
|
22
|
+
<PageMetadata>
|
|
23
|
+
{version.noIndex && <meta name="robots" content="noindex, nofollow" />}
|
|
24
|
+
</PageMetadata>
|
|
25
|
+
</>
|
|
26
|
+
);
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
function DocVersionRootContent(props: Props): ReactNode {
|
|
30
|
+
const {version, route} = props;
|
|
31
|
+
return (
|
|
32
|
+
<HtmlClassNameProvider className={version.className}>
|
|
33
|
+
<DocsVersionProvider version={version}>
|
|
34
|
+
{renderRoutes(route.routes!)}
|
|
35
|
+
</DocsVersionProvider>
|
|
36
|
+
</HtmlClassNameProvider>
|
|
37
|
+
);
|
|
38
|
+
}
|
|
39
|
+
export default function DocVersionRoot(props: Props): ReactNode {
|
|
40
|
+
return (
|
|
41
|
+
<>
|
|
42
|
+
<DocVersionRootMetadata {...props} />
|
|
43
|
+
<DocVersionRootContent {...props} />
|
|
44
|
+
</>
|
|
45
|
+
);
|
|
46
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
|
|
2
|
+
|
|
3
|
+
import React, {type ReactNode} from 'react';
|
|
4
|
+
import clsx from 'clsx';
|
|
5
|
+
import {ThemeClassNames, HtmlClassNameProvider} from '@docusaurus/theme-common';
|
|
6
|
+
import renderRoutes from '@docusaurus/renderRoutes';
|
|
7
|
+
import Layout from '@theme/Layout';
|
|
8
|
+
|
|
9
|
+
import type {Props} from '@theme/DocVersionRoot';
|
|
10
|
+
|
|
11
|
+
export default function DocsRoot(props: Props): ReactNode {
|
|
12
|
+
return (
|
|
13
|
+
<HtmlClassNameProvider className={clsx(ThemeClassNames.wrapper.docsPages)}>
|
|
14
|
+
<Layout>{renderRoutes(props.route.routes!)}</Layout>
|
|
15
|
+
</HtmlClassNameProvider>
|
|
16
|
+
);
|
|
17
|
+
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
|
|
2
|
+
import React, {type ReactNode} from 'react';
|
|
3
|
+
import clsx from 'clsx';
|
|
4
|
+
import EditThisPage from '@theme/EditThisPage';
|
|
5
|
+
import type {Props} from '@theme/EditMetaRow';
|
|
6
|
+
|
|
7
|
+
import LastUpdated from '@theme/LastUpdated';
|
|
8
|
+
import styles from './styles.module.css';
|
|
9
|
+
|
|
10
|
+
export default function EditMetaRow({
|
|
11
|
+
className,
|
|
12
|
+
editUrl,
|
|
13
|
+
lastUpdatedAt,
|
|
14
|
+
lastUpdatedBy,
|
|
15
|
+
}: Props): ReactNode {
|
|
16
|
+
return (
|
|
17
|
+
<div className={clsx('row', className)}>
|
|
18
|
+
<div className={clsx('col', styles.noPrint)}>
|
|
19
|
+
{editUrl && <EditThisPage editUrl={editUrl} />}
|
|
20
|
+
</div>
|
|
21
|
+
<div className={clsx('col', styles.lastUpdated)}>
|
|
22
|
+
{(lastUpdatedAt || lastUpdatedBy) && (
|
|
23
|
+
<LastUpdated
|
|
24
|
+
lastUpdatedAt={lastUpdatedAt}
|
|
25
|
+
lastUpdatedBy={lastUpdatedBy}
|
|
26
|
+
/>
|
|
27
|
+
)}
|
|
28
|
+
</div>
|
|
29
|
+
</div>
|
|
30
|
+
);
|
|
31
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
|
|
2
|
+
|
|
3
|
+
import React, {type ReactNode} from 'react';
|
|
4
|
+
import Translate from '@docusaurus/Translate';
|
|
5
|
+
import {ThemeClassNames} from '@docusaurus/theme-common';
|
|
6
|
+
import Link from '@docusaurus/Link';
|
|
7
|
+
import IconEdit from '@theme/Icon/Edit';
|
|
8
|
+
import type {Props} from '@theme/EditThisPage';
|
|
9
|
+
|
|
10
|
+
export default function EditThisPage({editUrl}: Props): ReactNode {
|
|
11
|
+
return (
|
|
12
|
+
<Link to={editUrl} className={'flex flex-row items-center no-underline text-[.8rem]'}>
|
|
13
|
+
<IconEdit className="max-w-[15px]"/>
|
|
14
|
+
<Translate
|
|
15
|
+
id="theme.common.editThisPage"
|
|
16
|
+
description="The link label to edit the current page">
|
|
17
|
+
Edit this page on Github
|
|
18
|
+
</Translate>
|
|
19
|
+
</Link>
|
|
20
|
+
);
|
|
21
|
+
}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
|
|
2
|
+
|
|
3
|
+
import React, {type ReactNode} from 'react';
|
|
4
|
+
import Translate from '@docusaurus/Translate';
|
|
5
|
+
import {
|
|
6
|
+
ErrorBoundaryError,
|
|
7
|
+
ErrorBoundaryTryAgainButton,
|
|
8
|
+
} from '@docusaurus/theme-common';
|
|
9
|
+
import type {Props} from '@theme/Error';
|
|
10
|
+
import Heading from '@theme/Heading';
|
|
11
|
+
|
|
12
|
+
export default function ErrorPageContent({error, tryAgain}: Props): ReactNode {
|
|
13
|
+
return (
|
|
14
|
+
<main className="container margin-vert--xl">
|
|
15
|
+
<div className="row">
|
|
16
|
+
<div className="col col--6 col--offset-3">
|
|
17
|
+
<Heading as="h1" className="hero__title">
|
|
18
|
+
<Translate
|
|
19
|
+
id="theme.ErrorPageContent.title"
|
|
20
|
+
description="The title of the fallback page when the page crashed">
|
|
21
|
+
This page crashed.
|
|
22
|
+
</Translate>
|
|
23
|
+
</Heading>
|
|
24
|
+
<div className="margin-vert--lg">
|
|
25
|
+
<ErrorBoundaryTryAgainButton
|
|
26
|
+
onClick={tryAgain}
|
|
27
|
+
className="button button--primary shadow--lw"
|
|
28
|
+
/>
|
|
29
|
+
</div>
|
|
30
|
+
<hr />
|
|
31
|
+
<div className="margin-vert--md">
|
|
32
|
+
<ErrorBoundaryError error={error} />
|
|
33
|
+
</div>
|
|
34
|
+
</div>
|
|
35
|
+
</div>
|
|
36
|
+
</main>
|
|
37
|
+
);
|
|
38
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
|
|
2
|
+
|
|
3
|
+
import React, {type ReactNode} from 'react';
|
|
4
|
+
import type {Props} from '@theme/Footer/Copyright';
|
|
5
|
+
|
|
6
|
+
export default function FooterCopyright({copyright}: Props): ReactNode {
|
|
7
|
+
return (
|
|
8
|
+
<div
|
|
9
|
+
className="footer__copyright"
|
|
10
|
+
// Developer provided the HTML, so assume it's safe.
|
|
11
|
+
// eslint-disable-next-line react/no-danger
|
|
12
|
+
dangerouslySetInnerHTML={{__html: copyright}}
|
|
13
|
+
/>
|
|
14
|
+
);
|
|
15
|
+
}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import React, {type ReactNode} from 'react';
|
|
2
|
+
import clsx from 'clsx';
|
|
3
|
+
import {ThemeClassNames} from '@docusaurus/theme-common';
|
|
4
|
+
import type {Props} from '@theme/Footer/Layout';
|
|
5
|
+
|
|
6
|
+
export default function FooterLayout({
|
|
7
|
+
style,
|
|
8
|
+
links,
|
|
9
|
+
logo,
|
|
10
|
+
copyright,
|
|
11
|
+
}: Props): ReactNode {
|
|
12
|
+
return (
|
|
13
|
+
<footer
|
|
14
|
+
className={clsx(
|
|
15
|
+
ThemeClassNames.layout.footer.container,
|
|
16
|
+
'border-t border-base-content/20',
|
|
17
|
+
{
|
|
18
|
+
'footer--dark': style === 'dark',
|
|
19
|
+
},
|
|
20
|
+
)}>
|
|
21
|
+
<div className="w-full flex flex-row justify-between mb-4 pt-8 px-4">
|
|
22
|
+
{links}
|
|
23
|
+
{logo && <div className="">{logo && logo}</div>}
|
|
24
|
+
</div>
|
|
25
|
+
{copyright && (
|
|
26
|
+
<div className="flex flex-col-reverse md:flex-row justify-center md:justify-between w-full text-[.75rem] pb-6 px-4">
|
|
27
|
+
<div>{copyright}</div>
|
|
28
|
+
<div className="mb-2 mt-6 md:m-0">
|
|
29
|
+
<a className="mr-4 hover:underline" href="https://seqera.io/legal/">
|
|
30
|
+
User Agreement
|
|
31
|
+
</a>
|
|
32
|
+
<a
|
|
33
|
+
className="hover:underline"
|
|
34
|
+
href="https://seqera.io/privacy-policy/">
|
|
35
|
+
Privacy Statement
|
|
36
|
+
</a>
|
|
37
|
+
</div>
|
|
38
|
+
</div>
|
|
39
|
+
)}
|
|
40
|
+
</footer>
|
|
41
|
+
);
|
|
42
|
+
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
|
|
2
|
+
|
|
3
|
+
import React, {type ReactNode} from 'react';
|
|
4
|
+
import clsx from 'clsx';
|
|
5
|
+
import Link from '@docusaurus/Link';
|
|
6
|
+
import useBaseUrl from '@docusaurus/useBaseUrl';
|
|
7
|
+
import isInternalUrl from '@docusaurus/isInternalUrl';
|
|
8
|
+
import IconExternalLink from '@theme/Icon/ExternalLink';
|
|
9
|
+
import type {Props} from '@theme/Footer/LinkItem';
|
|
10
|
+
|
|
11
|
+
export default function FooterLinkItem({item}: Props): ReactNode {
|
|
12
|
+
const {to, href, label, prependBaseUrlToHref, className, ...props} = item;
|
|
13
|
+
const toUrl = useBaseUrl(to);
|
|
14
|
+
const normalizedHref = useBaseUrl(href, {forcePrependBaseUrl: true});
|
|
15
|
+
|
|
16
|
+
return (
|
|
17
|
+
<Link
|
|
18
|
+
className={clsx('footer__link-item mr-6 hover:underline', className)}
|
|
19
|
+
{...(href
|
|
20
|
+
? {
|
|
21
|
+
href: prependBaseUrlToHref ? normalizedHref : href,
|
|
22
|
+
}
|
|
23
|
+
: {
|
|
24
|
+
to: toUrl,
|
|
25
|
+
})}
|
|
26
|
+
{...props}>
|
|
27
|
+
{label}
|
|
28
|
+
{href && !isInternalUrl(href) && <IconExternalLink />}
|
|
29
|
+
</Link>
|
|
30
|
+
);
|
|
31
|
+
}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
|
|
2
|
+
|
|
3
|
+
import React, {type ReactNode} from 'react';
|
|
4
|
+
import clsx from 'clsx';
|
|
5
|
+
import {ThemeClassNames} from '@docusaurus/theme-common';
|
|
6
|
+
import LinkItem from '@theme/Footer/LinkItem';
|
|
7
|
+
import type {Props} from '@theme/Footer/Links/MultiColumn';
|
|
8
|
+
|
|
9
|
+
type ColumnType = Props['columns'][number];
|
|
10
|
+
type ColumnItemType = ColumnType['items'][number];
|
|
11
|
+
|
|
12
|
+
function ColumnLinkItem({item}: {item: ColumnItemType}) {
|
|
13
|
+
return item.html ? (
|
|
14
|
+
<li
|
|
15
|
+
className={clsx('footer__item', item.className)}
|
|
16
|
+
// Developer provided the HTML, so assume it's safe.
|
|
17
|
+
// eslint-disable-next-line react/no-danger
|
|
18
|
+
dangerouslySetInnerHTML={{__html: item.html}}
|
|
19
|
+
/>
|
|
20
|
+
) : (
|
|
21
|
+
<li key={item.href ?? item.to} className="footer__item">
|
|
22
|
+
<LinkItem item={item} />
|
|
23
|
+
</li>
|
|
24
|
+
);
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
function Column({column}: {column: ColumnType}) {
|
|
28
|
+
return (
|
|
29
|
+
<div
|
|
30
|
+
className={clsx(
|
|
31
|
+
ThemeClassNames.layout.footer.column,
|
|
32
|
+
'col footer__col',
|
|
33
|
+
column.className,
|
|
34
|
+
)}>
|
|
35
|
+
<div className="footer__title">{column.title}</div>
|
|
36
|
+
<ul className="footer__items clean-list">
|
|
37
|
+
{column.items.map((item, i) => (
|
|
38
|
+
<ColumnLinkItem key={i} item={item} />
|
|
39
|
+
))}
|
|
40
|
+
</ul>
|
|
41
|
+
</div>
|
|
42
|
+
);
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
export default function FooterLinksMultiColumn({columns}: Props): ReactNode {
|
|
46
|
+
return (
|
|
47
|
+
<div className="row footer__links">
|
|
48
|
+
{columns.map((column, i) => (
|
|
49
|
+
<Column key={i} column={column} />
|
|
50
|
+
))}
|
|
51
|
+
</div>
|
|
52
|
+
);
|
|
53
|
+
}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
|
|
2
|
+
|
|
3
|
+
import React, {type ReactNode} from 'react';
|
|
4
|
+
import clsx from 'clsx';
|
|
5
|
+
import LinkItem from '@theme/Footer/LinkItem';
|
|
6
|
+
import type {Props} from '@theme/Footer/Links/Simple';
|
|
7
|
+
|
|
8
|
+
function Separator() {
|
|
9
|
+
return <span className="footer__link-separator">·</span>;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
function SimpleLinkItem({item}: {item: Props['links'][number]}) {
|
|
13
|
+
return item.html ? (
|
|
14
|
+
<span
|
|
15
|
+
className={clsx('footer__link-item', item.className)}
|
|
16
|
+
// Developer provided the HTML, so assume it's safe.
|
|
17
|
+
// eslint-disable-next-line react/no-danger
|
|
18
|
+
dangerouslySetInnerHTML={{__html: item.html}}
|
|
19
|
+
/>
|
|
20
|
+
) : (
|
|
21
|
+
<LinkItem item={item} />
|
|
22
|
+
);
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
export default function FooterLinksSimple({links}: Props): ReactNode {
|
|
26
|
+
return (
|
|
27
|
+
<div className="footer__links text--center">
|
|
28
|
+
<div className="footer__links text-[.9rem]">
|
|
29
|
+
{links.map((item, i) => (
|
|
30
|
+
<React.Fragment key={i}>
|
|
31
|
+
<SimpleLinkItem item={item} />
|
|
32
|
+
{/* {links.length !== i + 1 && <Separator />} */}
|
|
33
|
+
</React.Fragment>
|
|
34
|
+
))}
|
|
35
|
+
</div>
|
|
36
|
+
</div>
|
|
37
|
+
);
|
|
38
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
|
|
2
|
+
|
|
3
|
+
import React, {type ReactNode} from 'react';
|
|
4
|
+
|
|
5
|
+
import {isMultiColumnFooterLinks} from '@docusaurus/theme-common';
|
|
6
|
+
import FooterLinksMultiColumn from '@theme/Footer/Links/MultiColumn';
|
|
7
|
+
import FooterLinksSimple from '@theme/Footer/Links/Simple';
|
|
8
|
+
import type {Props} from '@theme/Footer/Links';
|
|
9
|
+
|
|
10
|
+
export default function FooterLinks({links}: Props): ReactNode {
|
|
11
|
+
return isMultiColumnFooterLinks(links) ? (
|
|
12
|
+
<FooterLinksMultiColumn columns={links} />
|
|
13
|
+
) : (
|
|
14
|
+
<FooterLinksSimple links={links} />
|
|
15
|
+
);
|
|
16
|
+
}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
|
|
2
|
+
|
|
3
|
+
import React, {type ReactNode} from 'react';
|
|
4
|
+
import clsx from 'clsx';
|
|
5
|
+
import Link from '@docusaurus/Link';
|
|
6
|
+
import {useBaseUrlUtils} from '@docusaurus/useBaseUrl';
|
|
7
|
+
import ThemedImage from '@theme/ThemedImage';
|
|
8
|
+
import type {Props} from '@theme/Footer/Logo';
|
|
9
|
+
|
|
10
|
+
import styles from './styles.module.css';
|
|
11
|
+
|
|
12
|
+
function LogoImage({logo}: Props) {
|
|
13
|
+
const {withBaseUrl} = useBaseUrlUtils();
|
|
14
|
+
const sources = {
|
|
15
|
+
light: withBaseUrl(logo.src),
|
|
16
|
+
dark: withBaseUrl(logo.srcDark ?? logo.src),
|
|
17
|
+
};
|
|
18
|
+
return (
|
|
19
|
+
<ThemedImage
|
|
20
|
+
className={clsx('footer__logo', logo.className)}
|
|
21
|
+
alt={logo.alt}
|
|
22
|
+
sources={sources}
|
|
23
|
+
width={logo.width}
|
|
24
|
+
height={logo.height}
|
|
25
|
+
style={logo.style}
|
|
26
|
+
/>
|
|
27
|
+
);
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
export default function FooterLogo({logo}: Props): ReactNode {
|
|
31
|
+
return logo.href ? (
|
|
32
|
+
<Link
|
|
33
|
+
href={logo.href}
|
|
34
|
+
className={styles.footerLogoLink}
|
|
35
|
+
target={logo.target}>
|
|
36
|
+
<LogoImage logo={logo} />
|
|
37
|
+
</Link>
|
|
38
|
+
) : (
|
|
39
|
+
<LogoImage logo={logo} />
|
|
40
|
+
);
|
|
41
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
|
|
2
|
+
|
|
3
|
+
import React, {type ReactNode} from 'react';
|
|
4
|
+
|
|
5
|
+
import {useThemeConfig} from '@docusaurus/theme-common';
|
|
6
|
+
import FooterLinks from '@theme/Footer/Links';
|
|
7
|
+
import FooterLogo from '@theme/Footer/Logo';
|
|
8
|
+
import FooterCopyright from '@theme/Footer/Copyright';
|
|
9
|
+
import FooterLayout from '@theme/Footer/Layout';
|
|
10
|
+
|
|
11
|
+
function Footer(): ReactNode {
|
|
12
|
+
const {footer} = useThemeConfig();
|
|
13
|
+
if (!footer) {
|
|
14
|
+
return null;
|
|
15
|
+
}
|
|
16
|
+
const {copyright, links, logo, style} = footer;
|
|
17
|
+
|
|
18
|
+
return (
|
|
19
|
+
<FooterLayout
|
|
20
|
+
style={style}
|
|
21
|
+
links={links && links.length > 0 && <FooterLinks links={links} />}
|
|
22
|
+
logo={logo && <FooterLogo logo={logo} />}
|
|
23
|
+
copyright={copyright && <FooterCopyright copyright={copyright} />}
|
|
24
|
+
/>
|
|
25
|
+
);
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
export default React.memo(Footer);
|