@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,32 @@
|
|
|
1
|
+
|
|
2
|
+
|
|
3
|
+
import React, {type ReactNode} from 'react';
|
|
4
|
+
import clsx from 'clsx';
|
|
5
|
+
import Translate from '@docusaurus/Translate';
|
|
6
|
+
import type {Props} from '@theme/Admonition/Type/Warning';
|
|
7
|
+
import AdmonitionLayout from '@theme/Admonition/Layout';
|
|
8
|
+
import IconWarning from '@theme/Admonition/Icon/Warning';
|
|
9
|
+
|
|
10
|
+
const infimaClassName = 'alert alert--warning';
|
|
11
|
+
|
|
12
|
+
const defaultProps = {
|
|
13
|
+
icon: <IconWarning />,
|
|
14
|
+
title: (
|
|
15
|
+
<Translate
|
|
16
|
+
id="theme.admonition.warning"
|
|
17
|
+
description="The default label used for the Warning admonition (:::warning)">
|
|
18
|
+
warning
|
|
19
|
+
</Translate>
|
|
20
|
+
),
|
|
21
|
+
};
|
|
22
|
+
|
|
23
|
+
export default function AdmonitionTypeWarning(props: Props): ReactNode {
|
|
24
|
+
return (
|
|
25
|
+
<AdmonitionLayout
|
|
26
|
+
{...defaultProps}
|
|
27
|
+
{...props}
|
|
28
|
+
className={clsx(infimaClassName, props.className)}>
|
|
29
|
+
{props.children}
|
|
30
|
+
</AdmonitionLayout>
|
|
31
|
+
);
|
|
32
|
+
}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
|
|
2
|
+
|
|
3
|
+
import React from 'react';
|
|
4
|
+
import AdmonitionTypeNote from '@theme/Admonition/Type/Note';
|
|
5
|
+
import AdmonitionTypeTip from '@theme/Admonition/Type/Tip';
|
|
6
|
+
import AdmonitionTypeInfo from '@theme/Admonition/Type/Info';
|
|
7
|
+
import AdmonitionTypeWarning from '@theme/Admonition/Type/Warning';
|
|
8
|
+
import AdmonitionTypeDanger from '@theme/Admonition/Type/Danger';
|
|
9
|
+
import AdmonitionTypeCaution from '@theme/Admonition/Type/Caution';
|
|
10
|
+
import type AdmonitionTypes from '@theme/Admonition/Types';
|
|
11
|
+
|
|
12
|
+
const admonitionTypes: typeof AdmonitionTypes = {
|
|
13
|
+
note: AdmonitionTypeNote,
|
|
14
|
+
tip: AdmonitionTypeTip,
|
|
15
|
+
info: AdmonitionTypeInfo,
|
|
16
|
+
warning: AdmonitionTypeWarning,
|
|
17
|
+
danger: AdmonitionTypeDanger,
|
|
18
|
+
};
|
|
19
|
+
|
|
20
|
+
// Undocumented legacy admonition type aliases
|
|
21
|
+
// Provide hardcoded/untranslated retrocompatible label
|
|
22
|
+
// See also https://github.com/facebook/docusaurus/issues/7767
|
|
23
|
+
const admonitionAliases: typeof AdmonitionTypes = {
|
|
24
|
+
secondary: (props) => <AdmonitionTypeNote title="secondary" {...props} />,
|
|
25
|
+
important: (props) => <AdmonitionTypeInfo title="important" {...props} />,
|
|
26
|
+
success: (props) => <AdmonitionTypeTip title="success" {...props} />,
|
|
27
|
+
caution: AdmonitionTypeCaution,
|
|
28
|
+
};
|
|
29
|
+
|
|
30
|
+
export default {
|
|
31
|
+
...admonitionTypes,
|
|
32
|
+
...admonitionAliases,
|
|
33
|
+
};
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
|
|
2
|
+
|
|
3
|
+
import React, {type ComponentType, type ReactNode} from 'react';
|
|
4
|
+
import {processAdmonitionProps} from '@docusaurus/theme-common';
|
|
5
|
+
import type {Props} from '@theme/Admonition';
|
|
6
|
+
import AdmonitionTypes from '@theme/Admonition/Types';
|
|
7
|
+
|
|
8
|
+
function getAdmonitionTypeComponent(type: string): ComponentType<Props> {
|
|
9
|
+
const component = AdmonitionTypes[type];
|
|
10
|
+
if (component) {
|
|
11
|
+
return component;
|
|
12
|
+
}
|
|
13
|
+
console.warn(
|
|
14
|
+
`No admonition component found for admonition type "${type}". Using Info as fallback.`,
|
|
15
|
+
);
|
|
16
|
+
return AdmonitionTypes.info!;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
export default function Admonition(unprocessedProps: Props): ReactNode {
|
|
20
|
+
const props = processAdmonitionProps(unprocessedProps);
|
|
21
|
+
const AdmonitionTypeComponent = getAdmonitionTypeComponent(props.type);
|
|
22
|
+
return <AdmonitionTypeComponent {...props} />;
|
|
23
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import AdmonitionVersioned from "./AdmonitionVersioned";
|
|
3
|
+
|
|
4
|
+
interface Props {
|
|
5
|
+
tool?: "nextflow";
|
|
6
|
+
version?: string;
|
|
7
|
+
children: React.ReactNode;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
const AddedInVersion: React.FC<Props> = (props) => (
|
|
11
|
+
<AdmonitionVersioned type="added" {...props} />
|
|
12
|
+
);
|
|
13
|
+
|
|
14
|
+
export default AddedInVersion;
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import React, { ReactNode } from "react";
|
|
2
|
+
import Admonition from "@theme/Admonition";
|
|
3
|
+
import { getDisplayVersion } from "./getStableVersion";
|
|
4
|
+
|
|
5
|
+
type AdmonitionVersionedType = "added" | "changed" | "deprecated";
|
|
6
|
+
|
|
7
|
+
interface AdmonitionVersionedProps {
|
|
8
|
+
type: AdmonitionVersionedType;
|
|
9
|
+
tool?: "nextflow";
|
|
10
|
+
version?: string;
|
|
11
|
+
children: ReactNode;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
const typeConfig = {
|
|
15
|
+
added: {
|
|
16
|
+
admonitionType: "info" as const,
|
|
17
|
+
prefix: "Added in version",
|
|
18
|
+
},
|
|
19
|
+
changed: {
|
|
20
|
+
admonitionType: "warning" as const,
|
|
21
|
+
prefix: "Changed in version",
|
|
22
|
+
},
|
|
23
|
+
deprecated: {
|
|
24
|
+
admonitionType: "danger" as const,
|
|
25
|
+
prefix: "Deprecated in version",
|
|
26
|
+
},
|
|
27
|
+
};
|
|
28
|
+
|
|
29
|
+
const AdmonitionVersioned: React.FC<AdmonitionVersionedProps> = ({
|
|
30
|
+
type,
|
|
31
|
+
tool = "nextflow",
|
|
32
|
+
version,
|
|
33
|
+
children,
|
|
34
|
+
...props
|
|
35
|
+
}) => {
|
|
36
|
+
const config = typeConfig[type];
|
|
37
|
+
const displayVersion = getDisplayVersion(tool, version);
|
|
38
|
+
const displayTitle = `${config.prefix} ${displayVersion}`;
|
|
39
|
+
|
|
40
|
+
return (
|
|
41
|
+
<Admonition type={config.admonitionType} title={displayTitle} {...props}>
|
|
42
|
+
{children}
|
|
43
|
+
</Admonition>
|
|
44
|
+
);
|
|
45
|
+
};
|
|
46
|
+
|
|
47
|
+
// Convenience exports
|
|
48
|
+
interface Props {
|
|
49
|
+
tool?: "nextflow";
|
|
50
|
+
version?: string;
|
|
51
|
+
children: React.ReactNode;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
export const AddedInVersion: React.FC<Props> = (props) => (
|
|
55
|
+
<AdmonitionVersioned type="added" {...props} />
|
|
56
|
+
);
|
|
57
|
+
|
|
58
|
+
export const ChangedInVersion: React.FC<Props> = (props) => (
|
|
59
|
+
<AdmonitionVersioned type="changed" {...props} />
|
|
60
|
+
);
|
|
61
|
+
|
|
62
|
+
export const DeprecatedInVersion: React.FC<Props> = (props) => (
|
|
63
|
+
<AdmonitionVersioned type="deprecated" {...props} />
|
|
64
|
+
);
|
|
65
|
+
|
|
66
|
+
export default AdmonitionVersioned;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import AdmonitionVersioned from "./AdmonitionVersioned";
|
|
3
|
+
|
|
4
|
+
interface Props {
|
|
5
|
+
tool?: "nextflow";
|
|
6
|
+
version?: string;
|
|
7
|
+
children: React.ReactNode;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
const ChangedInVersion: React.FC<Props> = (props) => (
|
|
11
|
+
<AdmonitionVersioned type="changed" {...props} />
|
|
12
|
+
);
|
|
13
|
+
|
|
14
|
+
export default ChangedInVersion;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
|
|
2
|
+
import React from "react";
|
|
3
|
+
import AdmonitionVersioned from "./AdmonitionVersioned";
|
|
4
|
+
|
|
5
|
+
interface Props {
|
|
6
|
+
tool?: "nextflow";
|
|
7
|
+
version?: string;
|
|
8
|
+
children: React.ReactNode;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
const DeprecatedInVersion: React.FC<Props> = (props) => (
|
|
12
|
+
<AdmonitionVersioned type="deprecated" {...props} />
|
|
13
|
+
);
|
|
14
|
+
|
|
15
|
+
export default DeprecatedInVersion;
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { stableVersions } from './stableVersions';
|
|
2
|
+
|
|
3
|
+
type Tool = keyof typeof stableVersions;
|
|
4
|
+
|
|
5
|
+
type Rule = {
|
|
6
|
+
stable: string;
|
|
7
|
+
replaces: string[];
|
|
8
|
+
};
|
|
9
|
+
|
|
10
|
+
export function getDisplayVersion(tool: Tool, version?: string): string {
|
|
11
|
+
const toolRules = stableVersions[tool] as Rule[];
|
|
12
|
+
if (!toolRules || toolRules.length === 0) {
|
|
13
|
+
return version || "unknown";
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
// If version provided, find the first rule that matches the version in replaces
|
|
17
|
+
if (version) {
|
|
18
|
+
for (const rule of toolRules) {
|
|
19
|
+
if (rule.replaces.includes(version)) {
|
|
20
|
+
return rule.stable;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
// If no match found, return the original version
|
|
24
|
+
return version;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
// If no version provided, return the latest stable (first in the array)
|
|
28
|
+
// Assuming the array is ordered with newest first
|
|
29
|
+
return toolRules[0]!.stable;
|
|
30
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { AddedInVersion, ChangedInVersion, DeprecatedInVersion } from './AdmonitionVersioned';
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
export interface VersionMapping {
|
|
2
|
+
stable: string;
|
|
3
|
+
replaces: string[];
|
|
4
|
+
}
|
|
5
|
+
|
|
6
|
+
export interface StableVersions {
|
|
7
|
+
nextflow: VersionMapping[];
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
export const stableVersions: StableVersions = {
|
|
11
|
+
nextflow: [
|
|
12
|
+
{
|
|
13
|
+
stable: "24.10.0",
|
|
14
|
+
replaces: [
|
|
15
|
+
"24.05.0-edge",
|
|
16
|
+
"24.06.0-edge",
|
|
17
|
+
"24.07.0-edge",
|
|
18
|
+
"24.08.0-edge",
|
|
19
|
+
"24.09.0-edge",
|
|
20
|
+
],
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
stable: "24.04.0",
|
|
24
|
+
replaces: [
|
|
25
|
+
"23.11.0-edge",
|
|
26
|
+
"23.12.0-edge",
|
|
27
|
+
"24.01.0-edge",
|
|
28
|
+
"24.02.0-edge",
|
|
29
|
+
"24.03.0-edge",
|
|
30
|
+
],
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
stable: "23.10.0",
|
|
34
|
+
replaces: [
|
|
35
|
+
"23.05.0-edge",
|
|
36
|
+
"23.06.0-edge",
|
|
37
|
+
"23.07.0-edge",
|
|
38
|
+
"23.08.0-edge",
|
|
39
|
+
"23.09.0-edge",
|
|
40
|
+
],
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
stable: "23.04.0",
|
|
44
|
+
replaces: [
|
|
45
|
+
"22.11.0-edge",
|
|
46
|
+
"22.12.0-edge",
|
|
47
|
+
"23.01.0-edge",
|
|
48
|
+
"23.02.0-edge",
|
|
49
|
+
"23.03.0-edge",
|
|
50
|
+
],
|
|
51
|
+
},
|
|
52
|
+
],
|
|
53
|
+
};
|
|
54
|
+
|
|
55
|
+
/**
|
|
56
|
+
* Get the display version, mapping edge versions to their stable equivalents
|
|
57
|
+
*/
|
|
58
|
+
export function getDisplayVersion(
|
|
59
|
+
tool: keyof StableVersions,
|
|
60
|
+
version?: string
|
|
61
|
+
): string {
|
|
62
|
+
if (!version) {
|
|
63
|
+
return "latest";
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
// Check if this is an edge version that should be replaced
|
|
67
|
+
const toolMappings = stableVersions[tool];
|
|
68
|
+
|
|
69
|
+
for (const mapping of toolMappings) {
|
|
70
|
+
if (mapping.replaces.includes(version)) {
|
|
71
|
+
return `${mapping.stable} (stable)`;
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
// If version ends with -edge, show it as edge
|
|
76
|
+
if (version.endsWith("-edge")) {
|
|
77
|
+
return `${version} (edge)`;
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
// Otherwise, return as stable
|
|
81
|
+
return `${version} (stable)`;
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
/**
|
|
85
|
+
* Check if a version is an edge version
|
|
86
|
+
*/
|
|
87
|
+
export function isEdgeVersion(tool: keyof StableVersions, version?: string): boolean {
|
|
88
|
+
if (!version) return false;
|
|
89
|
+
|
|
90
|
+
const toolMappings = stableVersions[tool];
|
|
91
|
+
|
|
92
|
+
for (const mapping of toolMappings) {
|
|
93
|
+
if (mapping.replaces.includes(version)) {
|
|
94
|
+
return true;
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
return version.endsWith("-edge");
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
/**
|
|
102
|
+
* Get the stable version for an edge version
|
|
103
|
+
*/
|
|
104
|
+
export function getStableVersion(
|
|
105
|
+
tool: keyof StableVersions,
|
|
106
|
+
version?: string
|
|
107
|
+
): string | null {
|
|
108
|
+
if (!version) return null;
|
|
109
|
+
|
|
110
|
+
const toolMappings = stableVersions[tool];
|
|
111
|
+
|
|
112
|
+
for (const mapping of toolMappings) {
|
|
113
|
+
if (mapping.replaces.includes(version)) {
|
|
114
|
+
return mapping.stable;
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
return null;
|
|
119
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
|
|
2
|
+
|
|
3
|
+
import React, {type ReactNode} from 'react';
|
|
4
|
+
import clsx from 'clsx';
|
|
5
|
+
import {translate} from '@docusaurus/Translate';
|
|
6
|
+
import IconClose from '@theme/Icon/Close';
|
|
7
|
+
import type {Props} from '@theme/AnnouncementBar/CloseButton';
|
|
8
|
+
import styles from './styles.module.css';
|
|
9
|
+
|
|
10
|
+
export default function AnnouncementBarCloseButton(props: Props): ReactNode {
|
|
11
|
+
return (
|
|
12
|
+
<button
|
|
13
|
+
type="button"
|
|
14
|
+
aria-label={translate({
|
|
15
|
+
id: 'theme.AnnouncementBar.closeButtonAriaLabel',
|
|
16
|
+
message: 'Close',
|
|
17
|
+
description: 'The ARIA label for close button of announcement bar',
|
|
18
|
+
})}
|
|
19
|
+
{...props}
|
|
20
|
+
className={clsx('clean-btn close', styles.closeButton, props.className)}>
|
|
21
|
+
<IconClose width={14} height={14} strokeWidth={3.1} />
|
|
22
|
+
</button>
|
|
23
|
+
);
|
|
24
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
|
|
2
|
+
|
|
3
|
+
import React, {type ReactNode} from 'react';
|
|
4
|
+
import clsx from 'clsx';
|
|
5
|
+
import {useThemeConfig} from '@docusaurus/theme-common';
|
|
6
|
+
import type {Props} from '@theme/AnnouncementBar/Content';
|
|
7
|
+
import styles from './styles.module.css';
|
|
8
|
+
|
|
9
|
+
export default function AnnouncementBarContent(props: Props): ReactNode {
|
|
10
|
+
const {announcementBar} = useThemeConfig();
|
|
11
|
+
const {content} = announcementBar!;
|
|
12
|
+
return (
|
|
13
|
+
<div
|
|
14
|
+
{...props}
|
|
15
|
+
className={clsx(styles.content, props.className)}
|
|
16
|
+
// Developer provided the HTML, so assume it's safe.
|
|
17
|
+
// eslint-disable-next-line react/no-danger
|
|
18
|
+
dangerouslySetInnerHTML={{__html: content}}
|
|
19
|
+
/>
|
|
20
|
+
);
|
|
21
|
+
}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
|
|
2
|
+
|
|
3
|
+
import React, {type ReactNode} from 'react';
|
|
4
|
+
import clsx from 'clsx';
|
|
5
|
+
import {ThemeClassNames, useThemeConfig} from '@docusaurus/theme-common';
|
|
6
|
+
import {useAnnouncementBar} from '@docusaurus/theme-common/internal';
|
|
7
|
+
import AnnouncementBarCloseButton from '@theme/AnnouncementBar/CloseButton';
|
|
8
|
+
import AnnouncementBarContent from '@theme/AnnouncementBar/Content';
|
|
9
|
+
|
|
10
|
+
import styles from './styles.module.css';
|
|
11
|
+
|
|
12
|
+
export default function AnnouncementBar(): ReactNode {
|
|
13
|
+
const {announcementBar} = useThemeConfig();
|
|
14
|
+
const {isActive, close} = useAnnouncementBar();
|
|
15
|
+
if (!isActive) {
|
|
16
|
+
return null;
|
|
17
|
+
}
|
|
18
|
+
const {backgroundColor, textColor, isCloseable} = announcementBar!;
|
|
19
|
+
return (
|
|
20
|
+
<div
|
|
21
|
+
className={clsx(
|
|
22
|
+
ThemeClassNames.announcementBar.container,
|
|
23
|
+
styles.announcementBar,
|
|
24
|
+
)}
|
|
25
|
+
style={{backgroundColor, color: textColor}}
|
|
26
|
+
role="banner">
|
|
27
|
+
{isCloseable && <div className={styles.announcementBarPlaceholder} />}
|
|
28
|
+
<AnnouncementBarContent className={styles.announcementBarContent} />
|
|
29
|
+
{isCloseable && (
|
|
30
|
+
<AnnouncementBarCloseButton
|
|
31
|
+
onClick={close}
|
|
32
|
+
className={styles.announcementBarClose}
|
|
33
|
+
/>
|
|
34
|
+
)}
|
|
35
|
+
</div>
|
|
36
|
+
);
|
|
37
|
+
}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
|
|
2
|
+
|
|
3
|
+
:root {
|
|
4
|
+
--docusaurus-announcement-bar-height: auto;
|
|
5
|
+
}
|
|
6
|
+
|
|
7
|
+
.announcementBar {
|
|
8
|
+
display: flex;
|
|
9
|
+
align-items: center;
|
|
10
|
+
height: var(--docusaurus-announcement-bar-height);
|
|
11
|
+
background-color: var(--ifm-color-white);
|
|
12
|
+
color: var(--ifm-color-black);
|
|
13
|
+
|
|
14
|
+
/*
|
|
15
|
+
Unfortunately we can't make announcement bar render above the navbar
|
|
16
|
+
IE need to use border-bottom instead of shadow
|
|
17
|
+
See https://github.com/facebookincubator/infima/issues/275
|
|
18
|
+
|
|
19
|
+
box-shadow: var(--ifm-global-shadow-lw);
|
|
20
|
+
z-index: calc(var(--ifm-z-index-fixed) + 1);
|
|
21
|
+
*/
|
|
22
|
+
border-bottom: 1px solid var(--ifm-color-emphasis-100);
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
html[data-announcement-bar-initially-dismissed='true'] .announcementBar {
|
|
26
|
+
display: none;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
.announcementBarPlaceholder {
|
|
30
|
+
flex: 0 0 10px;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
.announcementBarClose {
|
|
34
|
+
flex: 0 0 30px;
|
|
35
|
+
align-self: stretch;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
.announcementBarContent {
|
|
39
|
+
flex: 1 1 auto;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
@media print {
|
|
43
|
+
.announcementBar {
|
|
44
|
+
display: none;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
@media (min-width: 997px) {
|
|
49
|
+
:root {
|
|
50
|
+
--docusaurus-announcement-bar-height: 30px;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
.announcementBarPlaceholder,
|
|
54
|
+
.announcementBarClose {
|
|
55
|
+
flex-basis: 50px;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
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 {useBackToTopButton} from '@docusaurus/theme-common/internal';
|
|
8
|
+
|
|
9
|
+
import styles from './styles.module.css';
|
|
10
|
+
|
|
11
|
+
export default function BackToTopButton(): ReactNode {
|
|
12
|
+
const {shown, scrollToTop} = useBackToTopButton({threshold: 300});
|
|
13
|
+
return (
|
|
14
|
+
<button
|
|
15
|
+
aria-label={translate({
|
|
16
|
+
id: 'theme.BackToTopButton.buttonAriaLabel',
|
|
17
|
+
message: 'Scroll back to top',
|
|
18
|
+
description: 'The ARIA label for the back to top button',
|
|
19
|
+
})}
|
|
20
|
+
className={clsx(
|
|
21
|
+
'clean-btn',
|
|
22
|
+
ThemeClassNames.common.backToTopButton,
|
|
23
|
+
styles.backToTopButton,
|
|
24
|
+
shown && styles.backToTopButtonShow,
|
|
25
|
+
)}
|
|
26
|
+
type="button"
|
|
27
|
+
onClick={scrollToTop}
|
|
28
|
+
/>
|
|
29
|
+
);
|
|
30
|
+
}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
|
|
2
|
+
|
|
3
|
+
.backToTopButton {
|
|
4
|
+
position: fixed;
|
|
5
|
+
right: 1.3rem;
|
|
6
|
+
bottom: 1.3rem;
|
|
7
|
+
border-radius: 50%;
|
|
8
|
+
background-color: var(--ifm-color-emphasis-200);
|
|
9
|
+
width: 3rem;
|
|
10
|
+
height: 3rem;
|
|
11
|
+
z-index: calc(var(--ifm-z-index-fixed) - 1);
|
|
12
|
+
box-shadow: var(--ifm-global-shadow-lw);
|
|
13
|
+
transition: all var(--ifm-transition-fast)
|
|
14
|
+
var(--ifm-transition-timing-default);
|
|
15
|
+
opacity: 0;
|
|
16
|
+
transform: scale(0);
|
|
17
|
+
visibility: hidden;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
.backToTopButton::after {
|
|
21
|
+
content: ' ';
|
|
22
|
+
display: inline-block;
|
|
23
|
+
mask: var(--ifm-menu-link-sublist-icon) 50% / 2rem 2rem no-repeat;
|
|
24
|
+
background-color: var(--ifm-color-emphasis-1000);
|
|
25
|
+
width: 100%;
|
|
26
|
+
height: 100%;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
@media (hover: hover) {
|
|
30
|
+
.backToTopButton:hover {
|
|
31
|
+
background-color: var(--ifm-color-emphasis-300);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
.backToTopButtonShow {
|
|
36
|
+
opacity: 1;
|
|
37
|
+
transform: scale(1);
|
|
38
|
+
visibility: visible;
|
|
39
|
+
}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
|
|
2
|
+
|
|
3
|
+
import type {ComponentType, ReactNode} from 'react';
|
|
4
|
+
import React from 'react';
|
|
5
|
+
import clsx from 'clsx';
|
|
6
|
+
import Link from '@docusaurus/Link';
|
|
7
|
+
import type {Props} from '@theme/Blog/Components/Author/Socials';
|
|
8
|
+
|
|
9
|
+
import Twitter from '@theme/Icon/Socials/Twitter';
|
|
10
|
+
import GitHub from '@theme/Icon/Socials/GitHub';
|
|
11
|
+
import X from '@theme/Icon/Socials/X';
|
|
12
|
+
import StackOverflow from '@theme/Icon/Socials/StackOverflow';
|
|
13
|
+
import LinkedIn from '@theme/Icon/Socials/LinkedIn';
|
|
14
|
+
import DefaultSocialIcon from '@theme/Icon/Socials/Default';
|
|
15
|
+
import Bluesky from '@theme/Icon/Socials/Bluesky';
|
|
16
|
+
import Instagram from '@theme/Icon/Socials/Instagram';
|
|
17
|
+
import Threads from '@theme/Icon/Socials/Threads';
|
|
18
|
+
import Youtube from '@theme/Icon/Socials/YouTube';
|
|
19
|
+
import Mastodon from '@theme/Icon/Socials/Mastodon';
|
|
20
|
+
import Twitch from '@theme/Icon/Socials/Twitch';
|
|
21
|
+
import Email from '@theme/Icon/Socials/Email';
|
|
22
|
+
|
|
23
|
+
import styles from './styles.module.css';
|
|
24
|
+
|
|
25
|
+
type SocialIcon = ComponentType<{className: string}>;
|
|
26
|
+
|
|
27
|
+
type SocialPlatformConfig = {Icon: SocialIcon; label: string};
|
|
28
|
+
|
|
29
|
+
const SocialPlatformConfigs: Record<string, SocialPlatformConfig> = {
|
|
30
|
+
twitter: {Icon: Twitter, label: 'Twitter'},
|
|
31
|
+
github: {Icon: GitHub, label: 'GitHub'},
|
|
32
|
+
stackoverflow: {Icon: StackOverflow, label: 'Stack Overflow'},
|
|
33
|
+
linkedin: {Icon: LinkedIn, label: 'LinkedIn'},
|
|
34
|
+
x: {Icon: X, label: 'X'},
|
|
35
|
+
bluesky: {Icon: Bluesky, label: 'Bluesky'},
|
|
36
|
+
instagram: {Icon: Instagram, label: 'Instagram'},
|
|
37
|
+
threads: {Icon: Threads, label: 'Threads'},
|
|
38
|
+
mastodon: {Icon: Mastodon, label: 'Mastodon'},
|
|
39
|
+
youtube: {Icon: Youtube, label: 'YouTube'},
|
|
40
|
+
twitch: {Icon: Twitch, label: 'Twitch'},
|
|
41
|
+
email: {Icon: Email, label: 'Email'},
|
|
42
|
+
};
|
|
43
|
+
|
|
44
|
+
function getSocialPlatformConfig(platformKey: string): SocialPlatformConfig {
|
|
45
|
+
return (
|
|
46
|
+
SocialPlatformConfigs[platformKey] ?? {
|
|
47
|
+
Icon: DefaultSocialIcon,
|
|
48
|
+
label: platformKey,
|
|
49
|
+
}
|
|
50
|
+
);
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
function SocialLink({platform, link}: {platform: string; link: string}) {
|
|
54
|
+
const {Icon, label} = getSocialPlatformConfig(platform);
|
|
55
|
+
return (
|
|
56
|
+
<Link className={styles.authorSocialLink} href={link} title={label}>
|
|
57
|
+
<Icon className={clsx(styles.authorSocialIcon)} />
|
|
58
|
+
</Link>
|
|
59
|
+
);
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
export default function BlogAuthorSocials({
|
|
63
|
+
author,
|
|
64
|
+
}: {
|
|
65
|
+
author: Props['author'];
|
|
66
|
+
}): ReactNode {
|
|
67
|
+
const entries = Object.entries(author.socials ?? {});
|
|
68
|
+
return (
|
|
69
|
+
<div className={styles.authorSocials}>
|
|
70
|
+
{entries.map(([platform, linkUrl]) => {
|
|
71
|
+
return <SocialLink key={platform} platform={platform} link={linkUrl} />;
|
|
72
|
+
})}
|
|
73
|
+
</div>
|
|
74
|
+
);
|
|
75
|
+
}
|