@seqera/docusaurus-theme-seqera 1.0.6 → 1.0.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/index.js +1 -0
- package/lib/languages/prism-nextflow.d.ts +1 -0
- package/lib/languages/prism-nextflow.js +24 -0
- package/lib/main-styles.css +66 -42
- package/lib/styles/admonition-alerts.css +5 -1
- package/lib/styles/api.css +16 -0
- package/lib/styles/buttons.css +55 -0
- package/lib/styles/other-overrides.css +0 -5
- package/lib/styles/typography.css +25 -6
- package/lib/theme/Admonition/Layout/styles.module.css +2 -1
- package/lib/theme/BlogLayout/index.js +1 -1
- package/lib/theme/BlogPostItem/index.js +3 -1
- package/lib/theme/BlogPostPaginator/index.js +1 -1
- package/lib/theme/BlogSidebar/Content/index.js +3 -1
- package/lib/theme/BlogSidebar/Desktop/index.js +40 -4
- package/lib/theme/BlogSidebar/Desktop/rss.svg +1 -0
- package/lib/theme/BlogSidebar/Desktop/styles.module.css +11 -1
- package/lib/theme/BlogSidebar/Mobile/index.js +3 -3
- package/lib/theme/DocItem/Layout/index.js +2 -2
- package/lib/theme/DocItem/Layout/styles.module.css +1 -1
- package/lib/theme/DocRoot/Layout/Main/styles.module.css +4 -1
- package/lib/theme/DocSidebar/Desktop/Content/VersionSwitcher/index.js +11 -0
- package/lib/theme/DocSidebar/Desktop/Content/index.js +6 -2
- package/lib/theme/DocSidebar/Desktop/index.js +9 -1
- package/lib/theme/DocSidebarItem/Html/index.js +1 -1
- package/lib/theme/DocSidebarItem/Link/index.js +1 -1
- package/lib/theme/DocSidebarItem/index.js +3 -3
- package/lib/theme/Footer/Layout/index.js +1 -1
- package/lib/theme/Homepage/index.d.ts +1 -4
- package/lib/theme/Homepage/index.js +37 -43
- package/lib/theme/Navbar/Content/index.js +6 -12
- package/lib/theme/Navbar/Layout/index.js +1 -1
- package/lib/theme/Navbar/MobileSidebar/PrimaryMenu/index.js +3 -3
- package/lib/theme/Navbar/Submenu/SubmenuLinks.js +1 -2
- package/lib/theme/NavbarItem/DefaultNavbarItem/Desktop/index.js +1 -1
- package/lib/theme/NotFound/Content/index.js +1 -3
- package/lib/theme/TOCItems/index.js +1 -1
- package/lib/theme/prism-include-languages.js +13 -2
- package/package.json +1 -2
- package/package.json.bak +66 -0
- package/src/index.ts +1 -0
- package/src/languages/prism-nextflow.js +24 -0
- package/src/main-styles.css +66 -42
- package/src/styles/admonition-alerts.css +5 -1
- package/src/styles/api.css +16 -0
- package/src/styles/buttons.css +55 -0
- package/src/styles/other-overrides.css +0 -5
- package/src/styles/typography.css +25 -6
- package/src/theme/Admonition/Layout/styles.module.css +2 -1
- package/src/theme/BlogLayout/index.tsx +1 -1
- package/src/theme/BlogPostItem/index.tsx +1 -1
- package/src/theme/BlogPostPaginator/index.tsx +1 -1
- package/src/theme/BlogSidebar/Content/index.tsx +1 -1
- package/src/theme/BlogSidebar/Desktop/index.tsx +41 -8
- package/src/theme/BlogSidebar/Desktop/rss.svg +1 -0
- package/src/theme/BlogSidebar/Desktop/styles.module.css +11 -1
- package/src/theme/BlogSidebar/Mobile/index.tsx +3 -3
- package/src/theme/DocItem/Layout/index.tsx +2 -2
- package/src/theme/DocItem/Layout/styles.module.css +1 -1
- package/src/theme/DocRoot/Layout/Main/styles.module.css +4 -1
- package/src/theme/DocSidebar/Desktop/Content/VersionSwitcher/index.tsx +10 -0
- package/src/theme/DocSidebar/Desktop/Content/index.tsx +2 -2
- package/src/theme/DocSidebar/Desktop/index.tsx +8 -1
- package/src/theme/DocSidebarItem/Html/index.tsx +1 -1
- package/src/theme/DocSidebarItem/Link/index.tsx +1 -1
- package/src/theme/DocSidebarItem/index.tsx +3 -3
- package/src/theme/Footer/Layout/index.tsx +1 -1
- package/src/theme/Homepage/index.tsx +37 -47
- package/src/theme/Navbar/Content/index.tsx +6 -12
- package/src/theme/Navbar/Layout/index.tsx +1 -1
- package/src/theme/Navbar/MobileSidebar/PrimaryMenu/index.tsx +3 -3
- package/src/theme/Navbar/Submenu/SubmenuLinks.tsx +1 -2
- package/src/theme/NavbarItem/DefaultNavbarItem/Desktop/index.tsx +1 -1
- package/src/theme/NotFound/Content/index.tsx +1 -1
- package/src/theme/TOCItems/index.tsx +1 -1
- package/src/theme/prism-include-languages.ts +14 -2
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import React, {useState} from 'react';
|
|
2
2
|
import clsx from 'clsx';
|
|
3
3
|
import {useThemeConfig} from '@docusaurus/theme-common';
|
|
4
|
+
import {useLocation} from '@docusaurus/router';
|
|
4
5
|
import Logo from '@theme/Logo';
|
|
5
6
|
import CollapseButton from '@theme/DocSidebar/Desktop/CollapseButton';
|
|
6
7
|
import Content from '@theme/DocSidebar/Desktop/Content';
|
|
@@ -13,7 +14,12 @@ function DocSidebarDesktop({path, sidebar, onCollapse, isHidden}) {
|
|
|
13
14
|
sidebar: {hideable},
|
|
14
15
|
},
|
|
15
16
|
} = useThemeConfig();
|
|
17
|
+
const location = useLocation();
|
|
16
18
|
const [isOpen, setIsOpen] = useState(false);
|
|
19
|
+
// Check if URL contains /platform-enterprise
|
|
20
|
+
const showVersionSwitcher = location.pathname.includes(
|
|
21
|
+
'/platform-enterprise',
|
|
22
|
+
);
|
|
17
23
|
return (
|
|
18
24
|
<div
|
|
19
25
|
className={clsx(
|
|
@@ -23,7 +29,9 @@ function DocSidebarDesktop({path, sidebar, onCollapse, isHidden}) {
|
|
|
23
29
|
'h-full relative w-full',
|
|
24
30
|
)}>
|
|
25
31
|
{hideOnScroll && <Logo tabIndex={-1} className={styles.sidebarLogo} />}
|
|
26
|
-
|
|
32
|
+
{showVersionSwitcher && (
|
|
33
|
+
<VersionSwitcher isOpen={isOpen} setIsOpen={setIsOpen} />
|
|
34
|
+
)}
|
|
27
35
|
<Content path={path} sidebar={sidebar} />
|
|
28
36
|
{hideable && (
|
|
29
37
|
<div className="absolute right-0 top-[3.75rem]">
|
|
@@ -11,7 +11,7 @@ export default function DocSidebarItemHtml({item, level, index}) {
|
|
|
11
11
|
ThemeClassNames.docs.docSidebarItemLinkLevel(level),
|
|
12
12
|
level > 1 &&
|
|
13
13
|
ThemeClassNames.docs.docSidebarItemLinkLevel(level) &&
|
|
14
|
-
'ml-3
|
|
14
|
+
'ml-3',
|
|
15
15
|
defaultStyle && [styles.menuHtmlItem, 'menu__list-item '],
|
|
16
16
|
className,
|
|
17
17
|
)}
|
|
@@ -6,20 +6,20 @@ export default function DocSidebarItem({item, ...props}) {
|
|
|
6
6
|
switch (item.type) {
|
|
7
7
|
case 'category':
|
|
8
8
|
return (
|
|
9
|
-
<div className="mt-3
|
|
9
|
+
<div className="mt-3">
|
|
10
10
|
<DocSidebarItemCategory item={item} {...props} />
|
|
11
11
|
</div>
|
|
12
12
|
);
|
|
13
13
|
case 'html':
|
|
14
14
|
return (
|
|
15
|
-
<div className="mt-3
|
|
15
|
+
<div className="mt-3">
|
|
16
16
|
<DocSidebarItemHtml item={item} {...props} />
|
|
17
17
|
</div>
|
|
18
18
|
);
|
|
19
19
|
case 'link':
|
|
20
20
|
default:
|
|
21
21
|
return (
|
|
22
|
-
<div className="mt-3
|
|
22
|
+
<div className="mt-3">
|
|
23
23
|
<DocSidebarItemLink item={item} {...props} />
|
|
24
24
|
</div>
|
|
25
25
|
);
|
|
@@ -6,7 +6,7 @@ export default function FooterLayout({style, links, logo, copyright}) {
|
|
|
6
6
|
<footer
|
|
7
7
|
className={clsx(
|
|
8
8
|
ThemeClassNames.layout.footer.container,
|
|
9
|
-
'border-t border-
|
|
9
|
+
'border-t border-black/20 dark:border-white/20',
|
|
10
10
|
{
|
|
11
11
|
'footer--dark': style === 'dark',
|
|
12
12
|
},
|
|
@@ -7,33 +7,30 @@ import IconWave from '@theme/Icon/Wave';
|
|
|
7
7
|
import IconSeqeraCloud from '@theme/Icon/SeqeraCloud';
|
|
8
8
|
import IconServiceStatus from '@theme/Icon/ServiceStatus';
|
|
9
9
|
import IconQuestionMark from '@theme/Icon/QuestionMark';
|
|
10
|
-
import IconCog from '@theme/Icon/Cog';
|
|
11
|
-
import IconChangelog from '@theme/Icon/Changelog';
|
|
12
10
|
import IconChatBubbles from '@theme/Icon/ChatBubbles';
|
|
13
11
|
import IconMCP from '@theme/Icon/MCP';
|
|
14
12
|
import IconSeqeraEnterprise from '@theme/Icon/SeqeraEnterprise';
|
|
15
13
|
const CARD_DATA = {
|
|
16
|
-
|
|
14
|
+
platform: [
|
|
17
15
|
{
|
|
18
16
|
href: '/platform-cloud',
|
|
19
17
|
icon: <IconSeqeraCloud className="text-black" />,
|
|
20
18
|
title: 'Seqera Cloud',
|
|
21
19
|
description:
|
|
22
|
-
'
|
|
20
|
+
'Comprehensive platform empowering teams across the entire scientific lifecycle',
|
|
23
21
|
},
|
|
24
22
|
{
|
|
25
23
|
href: '/platform-enterprise',
|
|
26
24
|
icon: <IconSeqeraEnterprise className="text-black" />,
|
|
27
25
|
title: 'Seqera Enterprise',
|
|
28
26
|
description:
|
|
29
|
-
'
|
|
27
|
+
'Platform management within your own infrastructure for greater control',
|
|
30
28
|
},
|
|
31
29
|
{
|
|
32
|
-
href: '/
|
|
33
|
-
icon: <
|
|
34
|
-
title: '
|
|
35
|
-
description:
|
|
36
|
-
'integrate Seqera Platform seamlessly into existing processes',
|
|
30
|
+
href: '/fusion',
|
|
31
|
+
icon: <IconFusion className="text-fusion-600" />,
|
|
32
|
+
title: 'Fusion',
|
|
33
|
+
description: 'Optimized file system for cloud-native data pipelines',
|
|
37
34
|
},
|
|
38
35
|
],
|
|
39
36
|
ai: [
|
|
@@ -42,14 +39,13 @@ const CARD_DATA = {
|
|
|
42
39
|
icon: <IconAI className="text-black max-w-5.5" />,
|
|
43
40
|
title: 'Seqera AI',
|
|
44
41
|
description:
|
|
45
|
-
'
|
|
42
|
+
'Intelligent command-line assistant that helps you build, run, and manage bioinformatics workflows',
|
|
46
43
|
},
|
|
47
44
|
{
|
|
48
45
|
href: '/platform-cloud/seqera-mcp',
|
|
49
46
|
icon: <IconMCP className="text-black max-w-5.5" />,
|
|
50
47
|
title: 'Seqera MCP',
|
|
51
|
-
description:
|
|
52
|
-
'enables AI assistants to interact with the Seqera ecosystem',
|
|
48
|
+
description: 'AI assistant that interacts with the Seqera ecosystem',
|
|
53
49
|
},
|
|
54
50
|
],
|
|
55
51
|
openSource: [
|
|
@@ -57,53 +53,41 @@ const CARD_DATA = {
|
|
|
57
53
|
href: '/nextflow',
|
|
58
54
|
icon: <IconNextflow className="text-nextflow-600" />,
|
|
59
55
|
title: 'Nextflow',
|
|
60
|
-
description: '
|
|
56
|
+
description: 'Open-source orchestrator for deploying workflows',
|
|
61
57
|
},
|
|
62
58
|
{
|
|
63
59
|
href: '/wave',
|
|
64
60
|
icon: <IconWave className="text-wave-600" />,
|
|
65
61
|
title: 'Wave',
|
|
66
|
-
description: '
|
|
62
|
+
description: 'Next-generation container provisioning for data analysis',
|
|
67
63
|
},
|
|
68
64
|
{
|
|
69
65
|
href: '/multiqc',
|
|
70
66
|
icon: <IconMultiQC className="text-multiqc-600" />,
|
|
71
67
|
title: 'MultiQC',
|
|
72
68
|
description:
|
|
73
|
-
'
|
|
74
|
-
},
|
|
75
|
-
{
|
|
76
|
-
href: '/fusion',
|
|
77
|
-
icon: <IconFusion className="text-fusion-600" />,
|
|
78
|
-
title: 'Fusion',
|
|
79
|
-
description: 'optimized file system for cloud-native data pipelines',
|
|
69
|
+
'Open-source tool to aggregate bioinformatic analyses results',
|
|
80
70
|
},
|
|
81
71
|
],
|
|
82
72
|
help: [
|
|
83
|
-
{
|
|
84
|
-
href: '/changelog',
|
|
85
|
-
icon: <IconChangelog className="text-black w-[20px] h-[20px]" />,
|
|
86
|
-
title: 'Changelog',
|
|
87
|
-
description: 'product release notes on latest features and updates.',
|
|
88
|
-
},
|
|
89
73
|
{
|
|
90
74
|
href: 'https://support.seqera.io/',
|
|
91
75
|
icon: <IconQuestionMark className="text-black" />,
|
|
92
76
|
title: 'Support Portal',
|
|
93
77
|
description:
|
|
94
|
-
'
|
|
78
|
+
'Contact support for help with your platform or enterprise account',
|
|
95
79
|
},
|
|
96
80
|
{
|
|
97
81
|
href: 'https://community.seqera.io/',
|
|
98
82
|
icon: <IconChatBubbles className="text-black" />,
|
|
99
83
|
title: 'Community Forum',
|
|
100
|
-
description: '
|
|
84
|
+
description: 'Discuss, share and network with other users',
|
|
101
85
|
},
|
|
102
86
|
{
|
|
103
87
|
href: 'https://status.seqera.io/',
|
|
104
88
|
icon: <IconServiceStatus className="text-black" />,
|
|
105
89
|
title: 'Service Status',
|
|
106
|
-
description: '
|
|
90
|
+
description: 'Monitor platform performance in real time',
|
|
107
91
|
},
|
|
108
92
|
],
|
|
109
93
|
};
|
|
@@ -131,31 +115,41 @@ function CardGrid({cards}) {
|
|
|
131
115
|
</div>
|
|
132
116
|
);
|
|
133
117
|
}
|
|
134
|
-
function
|
|
118
|
+
function CardSection2Col({title, cards}) {
|
|
135
119
|
return (
|
|
136
|
-
<div className="mt-
|
|
120
|
+
<div className="mt-8">
|
|
137
121
|
<h2 className="text-[2rem] font-display font-medium mb-2">{title}</h2>
|
|
138
122
|
<CardGrid cards={cards} />
|
|
139
123
|
</div>
|
|
140
124
|
);
|
|
141
125
|
}
|
|
142
|
-
|
|
126
|
+
function CardSection3Col({title, cards}) {
|
|
127
|
+
return (
|
|
128
|
+
<div className="mt-8">
|
|
129
|
+
<h2 className="text-[2rem] font-display font-medium mb-2">{title}</h2>
|
|
130
|
+
<div className="grid grid-cols-1 md:grid-cols-3 gap-4 md:gap-4">
|
|
131
|
+
{cards.map((card) => (
|
|
132
|
+
<Card key={card.href} {...card} />
|
|
133
|
+
))}
|
|
134
|
+
</div>
|
|
135
|
+
</div>
|
|
136
|
+
);
|
|
137
|
+
}
|
|
138
|
+
// Main Homepage Component
|
|
139
|
+
export default function Homepage() {
|
|
143
140
|
return (
|
|
144
141
|
<div className="container-md py-18 prose-base md:prose-lg">
|
|
145
142
|
<h1 className="font-display text-[3rem] font-medium mb-0">
|
|
146
|
-
|
|
143
|
+
Documentation
|
|
147
144
|
</h1>
|
|
148
145
|
<p className="text-xl mb-6">
|
|
149
|
-
Explore our guides, documentation, and examples to build with Seqera
|
|
146
|
+
Explore our guides, documentation, and examples to build with Seqera
|
|
150
147
|
</p>
|
|
151
148
|
|
|
152
|
-
<
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
<CardSection title="Seqera AI and MCP" cards={CARD_DATA.ai} />
|
|
157
|
-
<CardSection title="Open Source" cards={CARD_DATA.openSource} />
|
|
158
|
-
<CardSection title="Additional Resources" cards={CARD_DATA.help} />
|
|
149
|
+
<CardSection3Col title="Open Source" cards={CARD_DATA.openSource} />
|
|
150
|
+
<CardSection3Col title="Platform" cards={CARD_DATA.platform} />
|
|
151
|
+
<CardSection2Col title="Seqera AI" cards={CARD_DATA.ai} />
|
|
152
|
+
<CardSection3Col title="Help" cards={CARD_DATA.help} />
|
|
159
153
|
</div>
|
|
160
154
|
);
|
|
161
155
|
}
|
|
@@ -71,7 +71,7 @@ export default function NavbarContent() {
|
|
|
71
71
|
const [leftItems, rightItems] = splitNavbarItems(items);
|
|
72
72
|
const searchBarItem = items.find((item) => item.type === 'search');
|
|
73
73
|
return (
|
|
74
|
-
<div className="w-full flex flex-col">
|
|
74
|
+
<div className="w-full flex flex-col justify-center md:justify-start">
|
|
75
75
|
<div className="md:pt-3 md:pb-1">
|
|
76
76
|
<NavbarContentLayout
|
|
77
77
|
left={
|
|
@@ -89,12 +89,12 @@ export default function NavbarContent() {
|
|
|
89
89
|
</div>
|
|
90
90
|
<div className="hidden md:flex!">
|
|
91
91
|
<a
|
|
92
|
-
className="btn btn-secondary
|
|
92
|
+
className="btn btn-secondary mr-2 "
|
|
93
93
|
href="https://cloud.seqera.io/oauth/login/auth0">
|
|
94
94
|
Log In
|
|
95
95
|
</a>
|
|
96
96
|
<a
|
|
97
|
-
className="btn btn-outline
|
|
97
|
+
className="btn btn-outline"
|
|
98
98
|
href="https://cloud.seqera.io/oauth/login/auth0">
|
|
99
99
|
Sign Up
|
|
100
100
|
</a>
|
|
@@ -112,15 +112,9 @@ export default function NavbarContent() {
|
|
|
112
112
|
<div className="mr-2">
|
|
113
113
|
<Link
|
|
114
114
|
className="navbar__link ml-8 font-normal"
|
|
115
|
-
to={'/platform-
|
|
116
|
-
aria-label="
|
|
117
|
-
|
|
118
|
-
</Link>
|
|
119
|
-
<Link
|
|
120
|
-
className="navbar__link ml-8 font-normal"
|
|
121
|
-
to={'/platform-cloud/seqera-mcp'}
|
|
122
|
-
aria-label="Seqera MCP">
|
|
123
|
-
Seqera MCP
|
|
115
|
+
to={'/platform-api'}
|
|
116
|
+
aria-label="Platform API">
|
|
117
|
+
Platform API
|
|
124
118
|
</Link>
|
|
125
119
|
<Link
|
|
126
120
|
className="navbar__link ml-8 font-normal"
|
|
@@ -33,7 +33,7 @@ export default function NavbarLayout({children}) {
|
|
|
33
33
|
})}
|
|
34
34
|
className={clsx(
|
|
35
35
|
ThemeClassNames.layout.navbar.container,
|
|
36
|
-
'navbar border-b border-
|
|
36
|
+
'navbar border-b border-black/20 dark:border-white/20 md:pb-10 px-4 sticky top-0 shadow-none h-[50px] md:h-[78px]',
|
|
37
37
|
'navbar--fixed-top',
|
|
38
38
|
hideOnScroll && [
|
|
39
39
|
styles.navbarHideable,
|
|
@@ -16,14 +16,14 @@ export default function NavbarMobilePrimaryMenu() {
|
|
|
16
16
|
const items = useNavbarItems();
|
|
17
17
|
return (
|
|
18
18
|
<div>
|
|
19
|
-
<div className="relative
|
|
19
|
+
<div className="relative grid grid-cols-2 gap-2 items-stretch w-full max-w-full mb-10">
|
|
20
20
|
<a
|
|
21
|
-
className="btn btn-primary
|
|
21
|
+
className="btn btn-primary w-full"
|
|
22
22
|
href="https://cloud.seqera.io/oauth/login/auth0">
|
|
23
23
|
Log In
|
|
24
24
|
</a>
|
|
25
25
|
<a
|
|
26
|
-
className="btn btn-outline
|
|
26
|
+
className="btn btn-outline w-full"
|
|
27
27
|
href="https://cloud.seqera.io/oauth/login/auth0">
|
|
28
28
|
Sign Up
|
|
29
29
|
</a>
|
|
@@ -60,8 +60,7 @@ function LinkItem({to, children}) {
|
|
|
60
60
|
'flex items-center gap-2 px-2 rounded-md h-[37px] mb-1',
|
|
61
61
|
'text-sm text-gray-900 dark:text-gray-100',
|
|
62
62
|
'transition-all duration-500 ease-in-out',
|
|
63
|
-
'hover:bg-
|
|
64
|
-
isActive(href) && 'bg-blue-50 dark:bg-blue-900/30',
|
|
63
|
+
'hover:bg-gray-100 dark:hover:bg-gray-800 hover:no-underline',
|
|
65
64
|
)}>
|
|
66
65
|
{children}
|
|
67
66
|
</Link>
|
|
@@ -9,7 +9,7 @@ export default function DefaultNavbarItemDesktop({
|
|
|
9
9
|
const element = (
|
|
10
10
|
<NavbarNavLink
|
|
11
11
|
className={clsx(
|
|
12
|
-
isDropdownItem ? 'dropdown__link' : 'navbar__link mr-8',
|
|
12
|
+
isDropdownItem ? 'dropdown__link' : 'navbar__link mr-8 font-normal',
|
|
13
13
|
className,
|
|
14
14
|
)}
|
|
15
15
|
isDropdownLink={isDropdownItem}
|
|
@@ -26,9 +26,7 @@ export default function NotFoundContent({className}) {
|
|
|
26
26
|
looking for does not exist.
|
|
27
27
|
</Translate>
|
|
28
28
|
</p>
|
|
29
|
-
<a
|
|
30
|
-
className="btn btn-secondary shadow-none border text-black no-underline!"
|
|
31
|
-
href="/">
|
|
29
|
+
<a className="btn btn-primary py-1.5! px-4!" href="/">
|
|
32
30
|
Back to docs homepage
|
|
33
31
|
</a>
|
|
34
32
|
</div>
|
|
@@ -7,7 +7,7 @@ import {
|
|
|
7
7
|
import TOCItemTree from '@theme/TOCItems/Tree';
|
|
8
8
|
export default function TOCItems({
|
|
9
9
|
toc,
|
|
10
|
-
className = 'table-of-contents table-of-contents__left-border border-l border-
|
|
10
|
+
className = 'table-of-contents table-of-contents__left-border border-l border-black/20 dark:border-white/20 leading-7',
|
|
11
11
|
linkClassName = 'table-of-contents__link',
|
|
12
12
|
linkActiveClassName = undefined,
|
|
13
13
|
minHeadingLevel: minHeadingLevelOption,
|
|
@@ -17,8 +17,19 @@ export default function prismIncludeLanguages(PrismObject) {
|
|
|
17
17
|
// eslint-disable-next-line global-require
|
|
18
18
|
require('prismjs/components/prism-markup-templating.js');
|
|
19
19
|
}
|
|
20
|
-
//
|
|
21
|
-
|
|
20
|
+
// Load custom languages from the local languages directory
|
|
21
|
+
if (lang === 'nextflow') {
|
|
22
|
+
// Nextflow requires Groovy as a dependency
|
|
23
|
+
if (!additionalLanguages.includes('groovy')) {
|
|
24
|
+
// eslint-disable-next-line global-require
|
|
25
|
+
require('prismjs/components/prism-groovy');
|
|
26
|
+
}
|
|
27
|
+
// eslint-disable-next-line global-require
|
|
28
|
+
require('../languages/prism-nextflow.js');
|
|
29
|
+
} else {
|
|
30
|
+
// Fall back to standard PrismJS components
|
|
31
|
+
require(`prismjs/components/prism-${lang}`);
|
|
32
|
+
}
|
|
22
33
|
});
|
|
23
34
|
// Clean up and eventually restore former globalThis.Prism object (if any)
|
|
24
35
|
delete globalThis.Prism;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@seqera/docusaurus-theme-seqera",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.7",
|
|
4
4
|
"description": "Seqera docs theme for Docusaurus",
|
|
5
5
|
"author": "Seqera docs team <education@seqera.io>",
|
|
6
6
|
"license": "Apache-2.0",
|
|
@@ -50,7 +50,6 @@
|
|
|
50
50
|
"@types/nprogress": "^0.2.0",
|
|
51
51
|
"@types/prismjs": "^1.26.0",
|
|
52
52
|
"@types/rtlcss": "^3.5.1",
|
|
53
|
-
"daisyui": "^5.5.5",
|
|
54
53
|
"fs-extra": "^11.1.1",
|
|
55
54
|
"npm-run-all": "^4.1.5",
|
|
56
55
|
"react-test-renderer": "^18.0.0",
|
package/package.json.bak
ADDED
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@seqera/docusaurus-theme-seqera",
|
|
3
|
+
"version": "1.0.6",
|
|
4
|
+
"description": "Seqera docs theme for Docusaurus",
|
|
5
|
+
"author": "Seqera docs team <education@seqera.io>",
|
|
6
|
+
"license": "Apache-2.0",
|
|
7
|
+
"main": "lib/index.js",
|
|
8
|
+
"types": "src/theme-seqera.d.ts",
|
|
9
|
+
"publishConfig": {
|
|
10
|
+
"access": "public"
|
|
11
|
+
},
|
|
12
|
+
"scripts": {
|
|
13
|
+
"build": "tsc --build && node ../../scripts/copyUntypedFiles.js && prettier --config ../../.prettierrc --write \"lib/theme/**/*.js\"",
|
|
14
|
+
"watch": "run-p -c copy:watch build:watch",
|
|
15
|
+
"build:watch": "tsc --build --watch",
|
|
16
|
+
"copy:watch": "node ../../scripts/copyUntypedFiles.js --watch"
|
|
17
|
+
},
|
|
18
|
+
"dependencies": {
|
|
19
|
+
"@docusaurus/core": "3.9.2",
|
|
20
|
+
"@docusaurus/logger": "3.9.2",
|
|
21
|
+
"@docusaurus/mdx-loader": "3.9.2",
|
|
22
|
+
"@docusaurus/module-type-aliases": "3.9.2",
|
|
23
|
+
"@docusaurus/plugin-content-blog": "3.9.2",
|
|
24
|
+
"@docusaurus/plugin-content-docs": "3.9.2",
|
|
25
|
+
"@docusaurus/plugin-content-pages": "3.9.2",
|
|
26
|
+
"@docusaurus/theme-common": "3.9.2",
|
|
27
|
+
"@docusaurus/theme-translations": "3.9.2",
|
|
28
|
+
"@docusaurus/types": "3.9.2",
|
|
29
|
+
"@docusaurus/utils": "3.9.2",
|
|
30
|
+
"@docusaurus/utils-common": "3.9.2",
|
|
31
|
+
"@docusaurus/utils-validation": "3.9.2",
|
|
32
|
+
"@mdx-js/react": "^3.0.0",
|
|
33
|
+
"@tailwindcss/postcss": "^4.1.17",
|
|
34
|
+
"clsx": "^2.0.0",
|
|
35
|
+
"infima": "0.2.0-alpha.45",
|
|
36
|
+
"lodash": "^4.17.21",
|
|
37
|
+
"nprogress": "^0.2.0",
|
|
38
|
+
"postcss": "^8.5.6",
|
|
39
|
+
"prism-react-renderer": "^2.3.0",
|
|
40
|
+
"prismjs": "^1.29.0",
|
|
41
|
+
"raw-loader": "^4.0.2",
|
|
42
|
+
"react-router-dom": "^5.3.4",
|
|
43
|
+
"rtlcss": "^4.1.0",
|
|
44
|
+
"tailwindcss": "^4.1.17",
|
|
45
|
+
"tslib": "^2.6.0",
|
|
46
|
+
"utility-types": "^3.10.0"
|
|
47
|
+
},
|
|
48
|
+
"devDependencies": {
|
|
49
|
+
"@types/lodash": "^4.17.0",
|
|
50
|
+
"@types/nprogress": "^0.2.0",
|
|
51
|
+
"@types/prismjs": "^1.26.0",
|
|
52
|
+
"@types/rtlcss": "^3.5.1",
|
|
53
|
+
"daisyui": "^5.5.5",
|
|
54
|
+
"fs-extra": "^11.1.1",
|
|
55
|
+
"npm-run-all": "^4.1.5",
|
|
56
|
+
"react-test-renderer": "^18.0.0",
|
|
57
|
+
"utility-types": "^3.10.0"
|
|
58
|
+
},
|
|
59
|
+
"peerDependencies": {
|
|
60
|
+
"react": "^18.0.0 || ^19.0.0",
|
|
61
|
+
"react-dom": "^18.0.0 || ^19.0.0"
|
|
62
|
+
},
|
|
63
|
+
"engines": {
|
|
64
|
+
"node": ">=20.0"
|
|
65
|
+
}
|
|
66
|
+
}
|
package/src/index.ts
CHANGED
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
(function (Prism) {
|
|
2
|
+
Prism.languages.nextflow = Prism.languages.extend('groovy', {
|
|
3
|
+
'keyword': /\b(?:as|assert|boolean|byte|catch|char|def|double|else|enum|float|if|in|instanceof|int|long|new|return|short|throw|try|void|process|workflow|input|output|exec|shell|script|stub|include|from)\b/,
|
|
4
|
+
'string': {
|
|
5
|
+
pattern: /"""(?:[^\\]|\\[\s\S])*?"""|'''(?:[^\\]|\\[\s\S])*?'''|'(?:\\.|[^\\'\r\n])*'|"(?:\\.|[^\\"\r\n])*"/,
|
|
6
|
+
greedy: true
|
|
7
|
+
},
|
|
8
|
+
'operator': {
|
|
9
|
+
pattern: /(^|[^.])(?:~|==?~?|\?[.:]?|\*(?:[.=]|\*=?)?|\.[@&]|\.\.<|\.\.(?!\.)|-[-=>]?|\+[+=]?|!=?|<(?:<=?|=>?)?|>(?:>>?=?|=)?|&[&=]?|\|[|=]?|\/=?|\^=?|%=?)/,
|
|
10
|
+
lookbehind: true
|
|
11
|
+
},
|
|
12
|
+
'punctuation': /\.+|[{}[\];(),:$]/
|
|
13
|
+
});
|
|
14
|
+
|
|
15
|
+
// Add support for Nextflow-specific directives
|
|
16
|
+
Prism.languages.insertBefore('nextflow', 'keyword', {
|
|
17
|
+
'directive': {
|
|
18
|
+
pattern: /(?:^|\n)\s*(?:process|workflow|exec|shell|script|stub|container|conda|module|include|from|publishDir|input|output):/,
|
|
19
|
+
lookbehind: true,
|
|
20
|
+
alias: 'keyword'
|
|
21
|
+
}
|
|
22
|
+
});
|
|
23
|
+
|
|
24
|
+
}(Prism));
|