@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.
Files changed (76) hide show
  1. package/lib/index.js +1 -0
  2. package/lib/languages/prism-nextflow.d.ts +1 -0
  3. package/lib/languages/prism-nextflow.js +24 -0
  4. package/lib/main-styles.css +66 -42
  5. package/lib/styles/admonition-alerts.css +5 -1
  6. package/lib/styles/api.css +16 -0
  7. package/lib/styles/buttons.css +55 -0
  8. package/lib/styles/other-overrides.css +0 -5
  9. package/lib/styles/typography.css +25 -6
  10. package/lib/theme/Admonition/Layout/styles.module.css +2 -1
  11. package/lib/theme/BlogLayout/index.js +1 -1
  12. package/lib/theme/BlogPostItem/index.js +3 -1
  13. package/lib/theme/BlogPostPaginator/index.js +1 -1
  14. package/lib/theme/BlogSidebar/Content/index.js +3 -1
  15. package/lib/theme/BlogSidebar/Desktop/index.js +40 -4
  16. package/lib/theme/BlogSidebar/Desktop/rss.svg +1 -0
  17. package/lib/theme/BlogSidebar/Desktop/styles.module.css +11 -1
  18. package/lib/theme/BlogSidebar/Mobile/index.js +3 -3
  19. package/lib/theme/DocItem/Layout/index.js +2 -2
  20. package/lib/theme/DocItem/Layout/styles.module.css +1 -1
  21. package/lib/theme/DocRoot/Layout/Main/styles.module.css +4 -1
  22. package/lib/theme/DocSidebar/Desktop/Content/VersionSwitcher/index.js +11 -0
  23. package/lib/theme/DocSidebar/Desktop/Content/index.js +6 -2
  24. package/lib/theme/DocSidebar/Desktop/index.js +9 -1
  25. package/lib/theme/DocSidebarItem/Html/index.js +1 -1
  26. package/lib/theme/DocSidebarItem/Link/index.js +1 -1
  27. package/lib/theme/DocSidebarItem/index.js +3 -3
  28. package/lib/theme/Footer/Layout/index.js +1 -1
  29. package/lib/theme/Homepage/index.d.ts +1 -4
  30. package/lib/theme/Homepage/index.js +37 -43
  31. package/lib/theme/Navbar/Content/index.js +6 -12
  32. package/lib/theme/Navbar/Layout/index.js +1 -1
  33. package/lib/theme/Navbar/MobileSidebar/PrimaryMenu/index.js +3 -3
  34. package/lib/theme/Navbar/Submenu/SubmenuLinks.js +1 -2
  35. package/lib/theme/NavbarItem/DefaultNavbarItem/Desktop/index.js +1 -1
  36. package/lib/theme/NotFound/Content/index.js +1 -3
  37. package/lib/theme/TOCItems/index.js +1 -1
  38. package/lib/theme/prism-include-languages.js +13 -2
  39. package/package.json +1 -2
  40. package/package.json.bak +66 -0
  41. package/src/index.ts +1 -0
  42. package/src/languages/prism-nextflow.js +24 -0
  43. package/src/main-styles.css +66 -42
  44. package/src/styles/admonition-alerts.css +5 -1
  45. package/src/styles/api.css +16 -0
  46. package/src/styles/buttons.css +55 -0
  47. package/src/styles/other-overrides.css +0 -5
  48. package/src/styles/typography.css +25 -6
  49. package/src/theme/Admonition/Layout/styles.module.css +2 -1
  50. package/src/theme/BlogLayout/index.tsx +1 -1
  51. package/src/theme/BlogPostItem/index.tsx +1 -1
  52. package/src/theme/BlogPostPaginator/index.tsx +1 -1
  53. package/src/theme/BlogSidebar/Content/index.tsx +1 -1
  54. package/src/theme/BlogSidebar/Desktop/index.tsx +41 -8
  55. package/src/theme/BlogSidebar/Desktop/rss.svg +1 -0
  56. package/src/theme/BlogSidebar/Desktop/styles.module.css +11 -1
  57. package/src/theme/BlogSidebar/Mobile/index.tsx +3 -3
  58. package/src/theme/DocItem/Layout/index.tsx +2 -2
  59. package/src/theme/DocItem/Layout/styles.module.css +1 -1
  60. package/src/theme/DocRoot/Layout/Main/styles.module.css +4 -1
  61. package/src/theme/DocSidebar/Desktop/Content/VersionSwitcher/index.tsx +10 -0
  62. package/src/theme/DocSidebar/Desktop/Content/index.tsx +2 -2
  63. package/src/theme/DocSidebar/Desktop/index.tsx +8 -1
  64. package/src/theme/DocSidebarItem/Html/index.tsx +1 -1
  65. package/src/theme/DocSidebarItem/Link/index.tsx +1 -1
  66. package/src/theme/DocSidebarItem/index.tsx +3 -3
  67. package/src/theme/Footer/Layout/index.tsx +1 -1
  68. package/src/theme/Homepage/index.tsx +37 -47
  69. package/src/theme/Navbar/Content/index.tsx +6 -12
  70. package/src/theme/Navbar/Layout/index.tsx +1 -1
  71. package/src/theme/Navbar/MobileSidebar/PrimaryMenu/index.tsx +3 -3
  72. package/src/theme/Navbar/Submenu/SubmenuLinks.tsx +1 -2
  73. package/src/theme/NavbarItem/DefaultNavbarItem/Desktop/index.tsx +1 -1
  74. package/src/theme/NotFound/Content/index.tsx +1 -1
  75. package/src/theme/TOCItems/index.tsx +1 -1
  76. package/src/theme/prism-include-languages.ts +14 -2
@@ -18,7 +18,7 @@ export default function DocSidebarItemHtml({
18
18
  ThemeClassNames.docs.docSidebarItemLinkLevel(level),
19
19
  level > 1 &&
20
20
  ThemeClassNames.docs.docSidebarItemLinkLevel(level) &&
21
- 'ml-3 lg:ml-0',
21
+ 'ml-3',
22
22
  defaultStyle && [styles.menuHtmlItem, 'menu__list-item '],
23
23
  className,
24
24
  )}
@@ -33,7 +33,7 @@ export default function DocSidebarItemLink({
33
33
  className={clsx(
34
34
  ThemeClassNames.docs.docSidebarItemLink,
35
35
  ThemeClassNames.docs.docSidebarItemLinkLevel(level),
36
- level > 1 && ThemeClassNames.docs.docSidebarItemLinkLevel(level) && 'ml-3 lg:ml-0',
36
+ level > 1 && ThemeClassNames.docs.docSidebarItemLinkLevel(level) && 'ml-4',
37
37
  'menu__list-item',
38
38
  className,
39
39
  )}
@@ -9,11 +9,11 @@ import type {Props} from '@theme/DocSidebarItem';
9
9
  export default function DocSidebarItem({item, ...props}: Props): ReactNode {
10
10
  switch (item.type) {
11
11
  case 'category':
12
- return <div className="mt-3 md:mt-0"><DocSidebarItemCategory item={item} {...props} /></div>;
12
+ return <div className="mt-3"><DocSidebarItemCategory item={item} {...props} /></div>;
13
13
  case 'html':
14
- return <div className="mt-3 md:mt-0"><DocSidebarItemHtml item={item} {...props} /></div>;
14
+ return <div className="mt-3"><DocSidebarItemHtml item={item} {...props} /></div>;
15
15
  case 'link':
16
16
  default:
17
- return <div className="mt-3 md:mt-0"><DocSidebarItemLink item={item} {...props} /></div>;
17
+ return <div className="mt-3"><DocSidebarItemLink item={item} {...props} /></div>;
18
18
  }
19
19
  }
@@ -13,7 +13,7 @@ export default function FooterLayout({
13
13
  <footer
14
14
  className={clsx(
15
15
  ThemeClassNames.layout.footer.container,
16
- 'border-t border-base-content/20',
16
+ 'border-t border-black/20 dark:border-white/20',
17
17
  {
18
18
  'footer--dark': style === 'dark',
19
19
  },
@@ -7,13 +7,10 @@ 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
 
16
-
17
14
  interface CardProps {
18
15
  href: string;
19
16
  icon: ReactNode;
@@ -27,24 +24,24 @@ interface CardSectionProps {
27
24
  }
28
25
 
29
26
  const CARD_DATA = {
30
- products: [
27
+ platform: [
31
28
  {
32
29
  href: '/platform-cloud',
33
30
  icon: <IconSeqeraCloud className="text-black" />,
34
31
  title: 'Seqera Cloud',
35
- description: 'comprehensive platform empowering teams across the entire scientific lifecycle',
32
+ description: 'Comprehensive platform empowering teams across the entire scientific lifecycle',
36
33
  },
37
34
  {
38
35
  href: '/platform-enterprise',
39
36
  icon: <IconSeqeraEnterprise className="text-black" />,
40
37
  title: 'Seqera Enterprise',
41
- description: 'manage within your own infrastructure for greater control and data sovereignty',
38
+ description: 'Platform management within your own infrastructure for greater control',
42
39
  },
43
40
  {
44
- href: '/platform-api',
45
- icon: <IconCog className="text-black" />,
46
- title: 'Platform API',
47
- description: 'integrate Seqera Platform seamlessly into existing processes',
41
+ href: '/fusion',
42
+ icon: <IconFusion className="text-fusion-600" />,
43
+ title: 'Fusion',
44
+ description: 'Optimized file system for cloud-native data pipelines',
48
45
  },
49
46
  ],
50
47
  ai: [
@@ -52,13 +49,13 @@ const CARD_DATA = {
52
49
  href: '/platform-cloud/seqera-ai',
53
50
  icon: <IconAI className="text-black max-w-5.5" />,
54
51
  title: 'Seqera AI',
55
- description: 'intelligent command-line assistant that helps you build, run, and manage bioinformatics workflows',
52
+ description: 'Intelligent command-line assistant that helps you build, run, and manage bioinformatics workflows',
56
53
  },
57
54
  {
58
55
  href: '/platform-cloud/seqera-mcp',
59
56
  icon: <IconMCP className="text-black max-w-5.5" />,
60
57
  title: 'Seqera MCP',
61
- description: 'enables AI assistants to interact with the Seqera ecosystem',
58
+ description: 'AI assistant that interacts with the Seqera ecosystem',
62
59
  },
63
60
  ],
64
61
  openSource: [
@@ -66,51 +63,39 @@ const CARD_DATA = {
66
63
  href: '/nextflow',
67
64
  icon: <IconNextflow className="text-nextflow-600" />,
68
65
  title: 'Nextflow',
69
- description: 'open-source orchestrator for deploying workflows',
66
+ description: 'Open-source orchestrator for deploying workflows',
70
67
  },
71
68
  {
72
69
  href: '/wave',
73
70
  icon: <IconWave className="text-wave-600" />,
74
71
  title: 'Wave',
75
- description: 'next generation container provisioning for data analysis',
72
+ description: 'Next-generation container provisioning for data analysis',
76
73
  },
77
74
  {
78
75
  href: '/multiqc',
79
76
  icon: <IconMultiQC className="text-multiqc-600" />,
80
77
  title: 'MultiQC',
81
- description: 'open-source tool to aggregate bioinformatic analyses results',
82
- },
83
- {
84
- href: '/fusion',
85
- icon: <IconFusion className="text-fusion-600" />,
86
- title: 'Fusion',
87
- description: 'optimized file system for cloud-native data pipelines',
78
+ description: 'Open-source tool to aggregate bioinformatic analyses results',
88
79
  },
89
80
  ],
90
81
  help: [
91
- {
92
- href: '/changelog',
93
- icon: <IconChangelog className="text-black w-[20px] h-[20px]" />,
94
- title: 'Changelog',
95
- description: 'product release notes on latest features and updates.',
96
- },
97
82
  {
98
83
  href: 'https://support.seqera.io/',
99
84
  icon: <IconQuestionMark className="text-black" />,
100
85
  title: 'Support Portal',
101
- description: 'contact support for help with your platform or enterprise account',
86
+ description: 'Contact support for help with your platform or enterprise account',
102
87
  },
103
88
  {
104
89
  href: 'https://community.seqera.io/',
105
90
  icon: <IconChatBubbles className="text-black" />,
106
91
  title: 'Community Forum',
107
- description: 'discuss, share and network with other users',
92
+ description: 'Discuss, share and network with other users',
108
93
  },
109
94
  {
110
95
  href: 'https://status.seqera.io/',
111
96
  icon: <IconServiceStatus className="text-black" />,
112
97
  title: 'Service Status',
113
- description: 'real-time monitoring of platform performance',
98
+ description: 'Monitor platform performance in real time',
114
99
  },
115
100
  ],
116
101
  } as const;
@@ -140,39 +125,44 @@ function CardGrid({cards}: {cards: readonly CardProps[]}): ReactNode {
140
125
  }
141
126
 
142
127
 
143
- function CardSection({title, cards}: CardSectionProps): ReactNode {
128
+ function CardSection2Col({title, cards}: CardSectionProps): ReactNode {
144
129
  return (
145
- <div className="mt-16">
130
+ <div className="mt-8">
146
131
  <h2 className="text-[2rem] font-display font-medium mb-2">{title}</h2>
147
132
  <CardGrid cards={cards} />
148
133
  </div>
149
134
  );
150
135
  }
151
136
 
137
+ function CardSection3Col({title, cards}: CardSectionProps): ReactNode {
138
+ return (
139
+ <div className="mt-8">
140
+ <h2 className="text-[2rem] font-display font-medium mb-2">{title}</h2>
141
+ <div className="grid grid-cols-1 md:grid-cols-3 gap-4 md:gap-4">
142
+ {cards.map((card) => (
143
+ <Card key={card.href} {...card} />
144
+ ))}
145
+ </div>
146
+ </div>
147
+ );
148
+ }
152
149
 
153
150
 
154
151
  // Main Homepage Component
155
- export interface Props {
156
- children?: ReactNode;
157
- }
158
-
159
- export default function Homepage({children}: Props): ReactNode {
152
+ export default function Homepage(): ReactNode {
160
153
  return (
161
154
  <div className="container-md py-18 prose-base md:prose-lg">
162
155
  <h1 className="font-display text-[3rem] font-medium mb-0">
163
- Seqera Documentation
156
+ Documentation
164
157
  </h1>
165
158
  <p className="text-xl mb-6">
166
- Explore our guides, documentation, and examples to build with Seqera.
159
+ Explore our guides, documentation, and examples to build with Seqera
167
160
  </p>
168
161
 
169
- <div className="mb-10">
170
- <CardGrid cards={CARD_DATA.products} />
171
- </div>
172
-
173
- <CardSection title="Seqera AI and MCP" cards={CARD_DATA.ai} />
174
- <CardSection title="Open Source" cards={CARD_DATA.openSource} />
175
- <CardSection title="Additional Resources" cards={CARD_DATA.help} />
162
+ <CardSection3Col title="Open Source" cards={CARD_DATA.openSource} />
163
+ <CardSection3Col title="Platform" cards={CARD_DATA.platform} />
164
+ <CardSection2Col title="Seqera AI" cards={CARD_DATA.ai} />
165
+ <CardSection3Col title="Help" cards={CARD_DATA.help} />
176
166
  </div>
177
167
  );
178
- }
168
+ }
@@ -87,7 +87,7 @@ export default function NavbarContent(): ReactNode {
87
87
  const searchBarItem = items.find((item) => item.type === 'search');
88
88
 
89
89
  return (
90
- <div className="w-full flex flex-col">
90
+ <div className="w-full flex flex-col justify-center md:justify-start">
91
91
  <div className="md:pt-3 md:pb-1">
92
92
  <NavbarContentLayout
93
93
  left={
@@ -105,12 +105,12 @@ export default function NavbarContent(): ReactNode {
105
105
  </div>
106
106
  <div className="hidden md:flex!">
107
107
  <a
108
- className="btn btn-secondary hover:bg-nextflow-600 shadow-none border text-black btn-sm px-6 py-1 text-[.9rem] mr-2 "
108
+ className="btn btn-secondary mr-2 "
109
109
  href="https://cloud.seqera.io/oauth/login/auth0">
110
110
  Log In
111
111
  </a>
112
112
  <a
113
- className="btn btn-outline shadow-none btn-sm border px-6 py-1 text-[.9rem] hover:border-black hover:bg-black hover:text-white"
113
+ className="btn btn-outline"
114
114
  href="https://cloud.seqera.io/oauth/login/auth0">
115
115
  Sign Up
116
116
  </a>
@@ -128,15 +128,9 @@ export default function NavbarContent(): ReactNode {
128
128
  <div className="mr-2">
129
129
  <Link
130
130
  className="navbar__link ml-8 font-normal"
131
- to={'/platform-cloud/seqera-ai'}
132
- aria-label="Seqera AI">
133
- Seqera AI
134
- </Link>
135
- <Link
136
- className="navbar__link ml-8 font-normal"
137
- to={'/platform-cloud/seqera-mcp'}
138
- aria-label="Seqera MCP">
139
- Seqera MCP
131
+ to={'/platform-api'}
132
+ aria-label="Platform API">
133
+ Platform API
140
134
  </Link>
141
135
  <Link
142
136
  className="navbar__link ml-8 font-normal"
@@ -39,7 +39,7 @@ export default function NavbarLayout({children}: Props): ReactNode {
39
39
  })}
40
40
  className={clsx(
41
41
  ThemeClassNames.layout.navbar.container,
42
- 'navbar border-b border-base-content/20 md:pt-10 md:pb-10 px-4 sticky top-0 shadow-none',
42
+ '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]',
43
43
  'navbar--fixed-top',
44
44
  hideOnScroll && [
45
45
  styles.navbarHideable,
@@ -20,14 +20,14 @@ export default function NavbarMobilePrimaryMenu(): ReactNode {
20
20
 
21
21
  return (
22
22
  <div>
23
- <div className="relative flex flex-row justify-center items-stretch w-full max-w-full mb-10">
23
+ <div className="relative grid grid-cols-2 gap-2 items-stretch w-full max-w-full mb-10">
24
24
  <a
25
- className="btn btn-primary shadow-none border text-white btn-sm px-6 py-1 text-[.9rem] mr-2 flex-1"
25
+ className="btn btn-primary w-full"
26
26
  href="https://cloud.seqera.io/oauth/login/auth0">
27
27
  Log In
28
28
  </a>
29
29
  <a
30
- className="btn btn-outline shadow-none btn-sm border flex-1 px-6 py-1 text-[.9rem] hover:border-black hover:bg-black bg-white text-black dark:text-black hover:text-white"
30
+ className="btn btn-outline w-full"
31
31
  href="https://cloud.seqera.io/oauth/login/auth0">
32
32
  Sign Up
33
33
  </a>
@@ -84,8 +84,7 @@ function LinkItem({to, children}: LinkItemProps): ReactNode {
84
84
  'flex items-center gap-2 px-2 rounded-md h-[37px] mb-1',
85
85
  'text-sm text-gray-900 dark:text-gray-100',
86
86
  'transition-all duration-500 ease-in-out',
87
- 'hover:bg-nextflow-100 dark:hover:bg-gray-800 hover:no-underline',
88
- isActive(href) && 'bg-blue-50 dark:bg-blue-900/30',
87
+ 'hover:bg-gray-100 dark:hover:bg-gray-800 hover:no-underline',
89
88
  )}>
90
89
  {children}
91
90
  </Link>
@@ -13,7 +13,7 @@ export default function DefaultNavbarItemDesktop({
13
13
  const element = (
14
14
  <NavbarNavLink
15
15
  className={clsx(
16
- isDropdownItem ? 'dropdown__link' : 'navbar__link mr-8',
16
+ isDropdownItem ? 'dropdown__link' : 'navbar__link mr-8 font-normal',
17
17
  className,
18
18
  )}
19
19
  isDropdownLink={isDropdownItem}
@@ -25,7 +25,7 @@ export default function NotFoundContent({className}: Props): ReactNode {
25
25
  404: Something has gone wrong with our dataflow. The page you are looking for does not exist.
26
26
  </Translate>
27
27
  </p>
28
- <a className="btn btn-secondary shadow-none border text-black no-underline!" href="/">Back to docs homepage</a>
28
+ <a className="btn btn-primary py-1.5! px-4!" href="/">Back to docs homepage</a>
29
29
 
30
30
  </div>
31
31
  </div>
@@ -12,7 +12,7 @@ import type {Props} from '@theme/TOCItems';
12
12
 
13
13
  export default function TOCItems({
14
14
  toc,
15
- className = 'table-of-contents table-of-contents__left-border border-l border-base-content/20 leading-7',
15
+ className = 'table-of-contents table-of-contents__left-border border-l border-black/20 dark:border-white/20 leading-7',
16
16
  linkClassName = 'table-of-contents__link',
17
17
  linkActiveClassName = undefined,
18
18
  minHeadingLevel: minHeadingLevelOption,
@@ -27,8 +27,20 @@ export default function prismIncludeLanguages(
27
27
  // eslint-disable-next-line global-require
28
28
  require('prismjs/components/prism-markup-templating.js');
29
29
  }
30
- // eslint-disable-next-line global-require, import/no-dynamic-require
31
- require(`prismjs/components/prism-${lang}`);
30
+
31
+ // Load custom languages from the local languages directory
32
+ if (lang === 'nextflow') {
33
+ // Nextflow requires Groovy as a dependency
34
+ if (!additionalLanguages.includes('groovy')) {
35
+ // eslint-disable-next-line global-require
36
+ require('prismjs/components/prism-groovy');
37
+ }
38
+ // eslint-disable-next-line global-require
39
+ require('../languages/prism-nextflow.js');
40
+ } else {
41
+ // Fall back to standard PrismJS components
42
+ require(`prismjs/components/prism-${lang}`);
43
+ }
32
44
  });
33
45
 
34
46
  // Clean up and eventually restore former globalThis.Prism object (if any)