@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
@@ -1,44 +1,11 @@
1
1
  @import 'tailwindcss';
2
- @plugin "daisyui";
3
2
  @config "../tailwind.config.js";
4
3
 
5
4
  /* Dark mode variant */
6
5
  @custom-variant dark (&:is([data-theme="dark"] *));
7
6
 
8
- /* Daisy UI settings */
9
- @plugin "daisyui/theme" {
10
- name: 'light';
11
- default: true;
12
- --color-primary: var(--color-nextflow-800);
13
- --color-secondary: var(--color-nextflow-500);
14
- --color-accent: #f59e0b;
15
- --color-neutral: #3d4451;
16
- --color-base-100: #ffffff;
17
- --color-base-200: #f2f2f2;
18
- --color-base-300: #e5e6e6;
19
- --color-info: #3abff8;
20
- --color-success: #36d399;
21
- --color-warning: #fbbd23;
22
- --color-error: #f87272;
23
- }
24
-
25
- @plugin "daisyui/theme" {
26
- name: 'dark';
27
- --color-primary: var(--color-nextflow-500);
28
- --color-secondary: var(--color-nextflow-500);
29
- --color-accent: #1fb2a5;
30
- --color-neutral: #191d24;
31
- --color-base-100: rgb(28, 28, 30);
32
- --color-base-200: #242933;
33
- --color-base-300: #20252e;
34
- --color-info: #3abff8;
35
- --color-success: #36d399;
36
- --color-warning: #fbbd23;
37
- --color-error: #f87272;
38
- }
39
-
40
7
  /***
41
- Infima is Docusaurus's built in CSS framework.
8
+ Infima is Docusaurus's built in CSS framework.
42
9
 
43
10
  - We have removed Infima using CSS Cascade Layers (https://docusaurus.io/docs/api/plugins/@docusaurus/plugin-css-cascade-layers),
44
11
  - We do this so we can more seamless integrate Tailwind 4
@@ -47,14 +14,22 @@ Infima is Docusaurus's built in CSS framework.
47
14
  **/
48
15
  :root {
49
16
  /* the primary color is set to nextflow-900 because it's the most web accessible */
50
- --ifm-color-primary: var(--color-nextflow-900);
17
+ /* --ifm-color-primary: var(--color-nextflow-900);
51
18
  --ifm-color-primary-dark: var(--color-nextflow-700);
52
19
  --ifm-color-primary-darker: var(--color-nextflow-800);
53
20
  --ifm-color-primary-darkest: var(--color-nextflow-900);
54
21
  --ifm-color-primary-light: var(--color-nextflow-400);
55
22
  --ifm-color-primary-lighter: var(--color-nextflow-300);
56
23
  --ifm-color-primary-lightest: var(--color-nextflow-200);
57
- --ifm-badge-background-color: var(--color-nextflow-300);
24
+ --ifm-badge-background-color: var(--color-nextflow-300); */
25
+ --ifm-color-primary: var(--color-blu-600);
26
+ --ifm-color-primary-dark: var(--color-blu-700);
27
+ --ifm-color-primary-darker: var(--color-blu-800);
28
+ --ifm-color-primary-darkest: var(--color-blu-900);
29
+ --ifm-color-primary-light: var(--color-blu-400);
30
+ --ifm-color-primary-lighter: var(--color-blu-300);
31
+ --ifm-color-primary-lightest: var(--color-blu-200);
32
+ --ifm-badge-background-color: var(--color-blu-300);
58
33
  --ifm-navbar-sidebar-width: 100%;
59
34
  --ifm-code-font-size: 95%;
60
35
  --docusaurus-highlighted-code-line-bg: rgba(0, 0, 0, 0.1);
@@ -65,13 +40,11 @@ Infima is Docusaurus's built in CSS framework.
65
40
 
66
41
  --ifm-color-info: var(--color-multiqc-600);
67
42
 
68
-
69
43
  /* remove box shadow variables */
70
44
  --ifm-global-shadow-lw: none;
71
45
  --ifm-global-shadow-md: none;
72
46
  --ifm-global-shadow-tl: none;
73
47
 
74
-
75
48
  /* Nextflow (green) colors */
76
49
  --color-nextflow-100: #e2f7f3;
77
50
  --color-nextflow-200: #b6ece2;
@@ -177,6 +150,20 @@ Infima is Docusaurus's built in CSS framework.
177
150
  --color-blu-900: #2c3999;
178
151
  --color-blu-1000: #1e2768;
179
152
  --color-blu: #4256e7;
153
+
154
+ /* --color-primary: var(--color-nextflow-800);
155
+ --color-secondary: var(--color-nextflow-500); */
156
+ --color-primary: var(--color-blu-800);
157
+ --color-secondary: var(--color-blu-600);
158
+ --color-accent: var(--color-blu-200);
159
+ --color-neutral: #3d4451;
160
+ --color-base-100: #ffffff;
161
+ --color-base-200: #f2f2f2;
162
+ --color-base-300: #e5e6e6;
163
+ --color-info: var(--color-wave-600);
164
+ --color-success: var(--color-nextflow-500);
165
+ --color-warning: var(--color-multiqc-600);
166
+ --color-error: var(--color-fusion-600);
180
167
  }
181
168
 
182
169
  /* Dark Mode Support */
@@ -189,19 +176,43 @@ Infima is Docusaurus's built in CSS framework.
189
176
  /* Dark mode */
190
177
  [data-theme='dark'] {
191
178
  color-scheme: dark;
192
- --ifm-color-primary: var(--color-nextflow-300);
179
+ /* --ifm-color-primary: var(--color-nextflow-300);
193
180
  --ifm-color-primary-dark: var(--color-nextflow-400);
194
181
  --ifm-color-primary-darker: var(--color-nextflow-500);
195
182
  --ifm-color-primary-darkest: var(--color-nextflow-600);
196
183
  --ifm-color-primary-light: var(--color-nextflow-300);
197
184
  --ifm-color-primary-lighter: var(--color-nextflow-200);
198
- --ifm-color-primary-lightest: var(--color-nextflow-100);
185
+ --ifm-color-primary-lightest: var(--color-nextflow-100); */
186
+ --ifm-color-primary: var(--color-blu-300);
187
+ --ifm-color-primary-dark: var(--color-blu-400);
188
+ --ifm-color-primary-darker: var(--color-blu-500);
189
+ --ifm-color-primary-darkest: var(--color-blu-600);
190
+ --ifm-color-primary-light: var(--color-blu-300);
191
+ --ifm-color-primary-lighter: var(--color-blu-200);
192
+ --ifm-color-primary-lightest: var(--color-blu-100);
199
193
  --ifm-navbar-background-color: rgb(28, 28, 30);
200
194
  --docusaurus-highlighted-code-line-bg: rgba(0, 0, 0, 0.3);
201
195
  --ifm-code-color: var(--color-red-400);
202
196
  --ifm-color-content: #e3e3e3;
203
197
  --ifm-font-color-base: #e3e3e3;
204
198
  --ifm-heading-color: #e3e3e3;
199
+
200
+ /* dark mode overrides */
201
+ /* --color-primary: var(--color-nextflow-500);
202
+ --color-secondary: var(--color-nextflow-500); */
203
+ --color-primary: var(--color-blu-500);
204
+ --color-secondary: var(--color-blu-500);
205
+ --color-accent: var(--color-blu-300);
206
+ /* --color-accent: #1fb2a5; */
207
+ --color-neutral: #191d24;
208
+ --color-base-100: rgb(28, 28, 30);
209
+ --color-base-200: #242933;
210
+ --color-base-300: #20252e;
211
+
212
+ --color-info: var(--color-wave-300);
213
+ --color-success: var(--color-nextflow-300);
214
+ --color-warning: var(--color-multiqc-300);
215
+ --color-error: var(--color-fusion-300);
205
216
  }
206
217
 
207
218
  /* Seqera Tailwind */
@@ -350,7 +361,7 @@ Infima is Docusaurus's built in CSS framework.
350
361
  --color-product-900: #362c5d;
351
362
  --color-product-1000: #251e3f;
352
363
 
353
- /* Seqera "blue" Cclors */
364
+ /* Seqera "blue" Colors */
354
365
  --color-blu-100: #e8ebfc;
355
366
  --color-blu-200: #c6ccf8;
356
367
  --color-blu-300: #a1abf3;
@@ -363,6 +374,20 @@ Infima is Docusaurus's built in CSS framework.
363
374
  --color-blu-1000: #1e2768;
364
375
  --color-blu: #4256e7;
365
376
 
377
+ /* --color-primary: var(--color-nextflow-800);
378
+ --color-secondary: var(--color-nextflow-500); */
379
+ --color-primary: var(--color-blu-600);
380
+ --color-secondary: var(--color-blu-500);
381
+ --color-accent: #f59e0b;
382
+ --color-neutral: #3d4451;
383
+ --color-base-100: #ffffff;
384
+ --color-base-200: #f2f2f2;
385
+ --color-base-300: #e5e6e6;
386
+ --color-info: #3abff8;
387
+ --color-success: #36d399;
388
+ --color-warning: #fbbd23;
389
+ --color-error: #f87272;
390
+
366
391
  /* Border Radius */
367
392
  --radius-sm: 4px;
368
393
  --radius-md: 8px;
@@ -443,7 +468,6 @@ Infima is Docusaurus's built in CSS framework.
443
468
  border-radius: var(--ifm-badge-border-radius);
444
469
  padding: var(--ifm-badge-padding-vertical) var(--ifm-badge-padding-horizontal);
445
470
  }
446
-
447
471
  .badge--primary {
448
472
  background-color: var(--color-wave-600);
449
473
  border-color: var(--color-wave-600);
@@ -4,12 +4,15 @@
4
4
  flex-direction: column;
5
5
  justify-content: flex-start;
6
6
  align-items: flex-start;
7
+ padding: 1rem;
8
+ font-size: 1rem;
9
+ line-height: 1.6;
7
10
  }
8
11
 
9
12
  .theme-admonition {
10
13
  margin: .75rem 0;
11
14
  p {
12
- line-height: 1.8;
15
+ line-height: 1.6;
13
16
  margin-top: 0;
14
17
  }
15
18
  }
@@ -53,6 +56,7 @@
53
56
  border-color: var(--color-multiqc-300);
54
57
  }
55
58
  [data-theme='dark'] {
59
+ .alert--warning,
56
60
  .theme-admonition-warning {
57
61
  background-color: var(--color-multiqc-1000);
58
62
  border-color: var(--color-multiqc-600);
@@ -27,6 +27,9 @@ Platform API style overrides
27
27
  .openapi__method-endpoint-path {
28
28
  margin-left: 0.5rem;
29
29
  }
30
+ .openapi-tabs__schema-item {
31
+ border: 1px solid var(--color-gray-300);
32
+ }
30
33
 
31
34
  pre,
32
35
  summary,
@@ -140,4 +143,17 @@ Platform API style overrides
140
143
  background: rgba(255, 255, 255, 0.4);
141
144
  border-color: rgba(255, 255, 255, 0.7);
142
145
  }
146
+ table,
147
+ code:not(pre code) {
148
+ background: none;
149
+ }
150
+ .alert--info {
151
+ background: none;
152
+ }
153
+ .openapi-tabs__schema-item {
154
+ border: 1px solid white;
155
+ }
156
+ .openapi-tabs__schema-item.active {
157
+ border: 1px solid var(--color-nextflow-200);
158
+ }
143
159
  }
@@ -0,0 +1,55 @@
1
+ .btn {
2
+ border-radius: 4px;
3
+ transition: all 0.3s;
4
+ /* background: var(--color-nextflow-500);
5
+ border: 1px solid var(--color-nextflow-700); */
6
+ color: white;
7
+ background: var(--color-blu);
8
+ border: 1px solid var(--color-blu);
9
+ font-weight: 500;
10
+ font-size: 0.9rem;
11
+ text-align: center;
12
+ padding: 0.3rem 1rem;
13
+ width: auto;
14
+ text-decoration: none !important;
15
+ &:hover {
16
+ /* background: var(--color-nextflow-600); */
17
+ background: var(--color-blu-700);
18
+ }
19
+ }
20
+
21
+ .btn-outline {
22
+ background: transparent;
23
+ border: 1px solid black;
24
+ color: black;
25
+ &:hover {
26
+ background: black;
27
+ color: white;
28
+ }
29
+ }
30
+
31
+ [data-theme='dark'] {
32
+ .btn {
33
+ color: black;
34
+ background: var(--color-blu-400);
35
+ border: 1px solid var(--color-blu-400);
36
+ &:hover {
37
+ /* background: var(--color-nextflow-600); */
38
+ background: var(--color-blu-700);
39
+ border: 1px solid var(--color-blu-700);
40
+ }
41
+ }
42
+ .btn-outline {
43
+ /* background: var(--color-nextflow-900);
44
+ border: 1px solid var(--color-nextflow-900); */
45
+ background: var(--color-gray-900);
46
+ border: 1px solid var(--color-gray-100);
47
+ color: white;
48
+ &:hover {
49
+ /* background: var(--color-nextflow-800); */
50
+ color: black;
51
+ background: var(--color-gray-400);
52
+ border: 1px solid var(--color-gray-500);
53
+ }
54
+ }
55
+ }
@@ -3,9 +3,4 @@ svg.excalidraw {
3
3
  max-width: 100%;
4
4
  height: 100%;
5
5
  margin-bottom: 2rem;
6
- }
7
-
8
- /* force height on searchbar to match button heights */
9
- .DocSearch-Button {
10
- height: 33px!important;
11
6
  }
@@ -18,7 +18,8 @@ h6 {
18
18
  border-bottom: 4px solid transparent;
19
19
  }
20
20
  .navbar__link--active {
21
- border-bottom: 4px solid var(--color-nextflow-600);
21
+ /* border-bottom: 4px solid var(--color-nextflow-600); */
22
+ border-bottom: 4px solid var(--color-blu-600);
22
23
  padding-bottom: 0.1rem;
23
24
  }
24
25
 
@@ -27,7 +28,7 @@ h6 {
27
28
  }
28
29
 
29
30
  /***
30
- main prose styles
31
+ main prose styles
31
32
 
32
33
  .prose__wrapper for main prose layout styles
33
34
  .theme-doc-markdown specifies open-api pages
@@ -36,13 +37,13 @@ main prose styles
36
37
 
37
38
  .prose__wrapper,
38
39
  .theme-doc-markdown {
40
+ max-width: 100%;
39
41
  /* H1 */
40
42
  h1 {
41
43
  font-size: 2rem;
42
44
  line-height: 1.5;
43
45
  margin-top: 0;
44
46
  margin-bottom: 1.5rem;
45
-
46
47
  @media (min-width: 997px) {
47
48
  font-size: 2.45rem;
48
49
  }
@@ -57,6 +58,7 @@ main prose styles
57
58
 
58
59
  @media (min-width: 997px) {
59
60
  font-size: 2.25rem;
61
+ line-height: 1.3;
60
62
  }
61
63
  }
62
64
 
@@ -195,6 +197,7 @@ main prose styles
195
197
  border: 1px solid var(--color-gray-400);
196
198
  filter: none;
197
199
  box-shadow: none;
200
+ word-break: break-all;
198
201
  &::before,
199
202
  &::after {
200
203
  content: none;
@@ -349,7 +352,7 @@ main prose styles
349
352
  background: #0000004d;
350
353
  }
351
354
  table {
352
- background: rgba(255, 255, 255, 0.2);
355
+ background: transparent;
353
356
  }
354
357
 
355
358
  table tr:nth-child(2n) {
@@ -367,7 +370,23 @@ main prose styles
367
370
 
368
371
  a {
369
372
  &:hover {
370
- color: var(--color-primary)!important;
373
+ color: var(--color-primary) !important;
374
+ }
375
+ }
376
+ }
377
+
378
+ .blog-wrapper {
379
+ h1,
380
+ h2,
381
+ h3,
382
+ h4,
383
+ h5,
384
+ h6 {
385
+ margin-top: 1rem;
386
+ margin-bottom: 0;
387
+
388
+ a {
389
+ text-decoration: none !important;
371
390
  }
372
391
  }
373
- }
392
+ }
@@ -10,11 +10,12 @@
10
10
  flex-direction: row;
11
11
  justify-content: items-center;
12
12
  align-items: center;
13
+ font-size: .875rem;
13
14
  }
14
15
 
15
16
  /* Heading alone without content (does not handle fragment content) */
16
17
  .admonitionHeading:not(:last-child) {
17
- margin-bottom: 0.3rem;
18
+ margin-bottom: .75rem;
18
19
  }
19
20
 
20
21
  .admonitionHeading code {
@@ -17,7 +17,7 @@ export default function BlogLayout(props: Props): ReactNode {
17
17
  <div className="row">
18
18
  <BlogSidebar sidebar={sidebar} />
19
19
  <main
20
- className={clsx('prose__wrapper col p-6', {
20
+ className={clsx('w-full prose__wrapper col max-w-3xl mx-auto', {
21
21
  'col--7': hasSidebar,
22
22
  'col--9 col--offset-1': !hasSidebar,
23
23
  })}>
@@ -12,7 +12,7 @@ import type {Props} from '@theme/BlogPostItem';
12
12
  // apply a bottom margin in list view
13
13
  function useContainerClassName() {
14
14
  const {isBlogPostPage} = useBlogPost();
15
- return !isBlogPostPage ? 'margin-bottom--xl' : undefined;
15
+ return !isBlogPostPage ? 'margin-bottom--xl border-b border-black/20 dark:border-white/20 pb-4' : undefined;
16
16
  }
17
17
 
18
18
  export default function BlogPostItem({children, className}: Props): ReactNode {
@@ -10,7 +10,7 @@ export default function BlogPostPaginator(props: Props): ReactNode {
10
10
 
11
11
  return (
12
12
  <nav
13
- className="pagination-nav docusaurus-mt-lg"
13
+ className="pagination-nav docusaurus-mt-lg pb-6"
14
14
  aria-label={translate({
15
15
  id: 'theme.blog.post.paginator.navAriaLabel',
16
16
  message: 'Blog post page navigation',
@@ -16,7 +16,7 @@ function BlogSidebarYearGroup({
16
16
  }) {
17
17
  return (
18
18
  <div role="group">
19
- <Heading as="h3" className={yearGroupHeadingClassName}>
19
+ <Heading as="h3" className={`${yearGroupHeadingClassName} text-2xl no-underline!`}>
20
20
  {year}
21
21
  </Heading>
22
22
  {children}
@@ -1,5 +1,3 @@
1
-
2
-
3
1
  import React, {memo} from 'react';
4
2
  import clsx from 'clsx';
5
3
  import {translate} from '@docusaurus/Translate';
@@ -7,11 +5,13 @@ import {
7
5
  useVisibleBlogSidebarItems,
8
6
  BlogSidebarItemList,
9
7
  } from '@docusaurus/plugin-content-blog/client';
8
+ import { useLocation } from '@docusaurus/router';
10
9
  import BlogSidebarContent from '@theme/BlogSidebar/Content';
11
10
  import type {Props as BlogSidebarContentProps} from '@theme/BlogSidebar/Content';
12
11
  import type {Props} from '@theme/BlogSidebar/Desktop';
13
-
12
+ import RssIcon from './rss.svg';
14
13
  import styles from './styles.module.css';
14
+ import Link from '@docusaurus/Link';
15
15
 
16
16
  const ListComponent: BlogSidebarContentProps['ListComponent'] = ({items}) => {
17
17
  return (
@@ -27,20 +27,53 @@ const ListComponent: BlogSidebarContentProps['ListComponent'] = ({items}) => {
27
27
 
28
28
  function BlogSidebarDesktop({sidebar}: Props) {
29
29
  const items = useVisibleBlogSidebarItems(sidebar.items);
30
+
31
+ // Figure out if we're looking at a product tag or changelog entry
32
+ const location = useLocation();
33
+ const pathMatch = location.pathname.match(/\/changelog\/(?:tags\/)?([^\/]+)(?:\/v[\d.]+.*)?/);
34
+ const product = pathMatch ? pathMatch[1] : null;
35
+
36
+ // Map product names to their correct documentation paths
37
+ const getProductPath = (product: string | null): string => {
38
+ if (!product || product === 'tags' || product === 'page') return '/';
39
+ const mapping: Record<string, string> = {
40
+ 'seqera-cloud': '/platform-cloud',
41
+ 'seqera-enterprise': '/platform-enterprise'
42
+ };
43
+ return mapping[product] || `/${product}`;
44
+ };
45
+
46
+ // Filter the sidebar for just this product
47
+ const filteredItems = product
48
+ ? items.filter(item => item.permalink.includes(`/changelog/${product}/`))
49
+ : items;
50
+
51
+
30
52
  return (
31
- <aside className={`${styles.sidebarWrapper} col col--3 border-r border-base-content/20`}>
53
+ <aside
54
+ className={`${styles.sidebarWrapper} col col--3 border-r border-black/20 dark:border-white/20`}>
32
55
  <nav
33
- className={clsx(styles.sidebar, 'thin-scrollbar p-6 ')}
56
+ className={clsx(styles.sidebar, 'thin-scrollbar ')}
34
57
  aria-label={translate({
35
58
  id: 'theme.blog.sidebar.navAriaLabel',
36
59
  message: 'Blog recent posts navigation',
37
60
  description: 'The ARIA label for recent posts in the blog sidebar',
38
61
  })}>
39
- <div className={clsx(styles.sidebarItemTitle, 'margin-bottom--md')}>
62
+ <div className={clsx(styles.sidebarItemTitle, 'margin-bottom--md w-full flex justify-between items-center pr-4')}>
40
63
  {sidebar.title}
64
+
65
+ <Link
66
+ href="/changelog/rss.xml"
67
+ target="_blank"
68
+ rel="noopener noreferrer"
69
+ title="Subscribe to RSS"
70
+ className={styles.RssIconLink}>
71
+ <RssIcon />
72
+ </Link>
41
73
  </div>
74
+
42
75
  <BlogSidebarContent
43
- items={items}
76
+ items={filteredItems}
44
77
  ListComponent={ListComponent}
45
78
  yearGroupHeadingClassName={styles.yearGroupHeading}
46
79
  />
@@ -49,4 +82,4 @@ function BlogSidebarDesktop({sidebar}: Props) {
49
82
  );
50
83
  }
51
84
 
52
- export default memo(BlogSidebarDesktop);
85
+ export default memo(BlogSidebarDesktop);
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="1em" height="1em" viewBox="0 0 24 24"><path fill="currentColor" d="M5 3h14a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2m2.5 12A1.5 1.5 0 0 0 6 16.5A1.5 1.5 0 0 0 7.5 18A1.5 1.5 0 0 0 9 16.5A1.5 1.5 0 0 0 7.5 15M6 10v2a6 6 0 0 1 6 6h2a8 8 0 0 0-8-8m0-4v2a10 10 0 0 1 10 10h2A12 12 0 0 0 6 6"/></svg>
@@ -9,10 +9,20 @@
9
9
  }
10
10
 
11
11
  .sidebarItemTitle {
12
- font-size: var(--ifm-h3-font-size);
12
+ font-size: 1.8rem;
13
13
  font-weight: var(--ifm-font-weight-bold);
14
14
  }
15
15
 
16
+ .RssIconLink {
17
+ display: inline-block;
18
+ height: 24px;
19
+ & svg {
20
+ color: var(--color-multiqc-600);
21
+ width: 24px;
22
+ height: 24px;
23
+ }
24
+ }
25
+
16
26
  .sidebarItemList {
17
27
  font-size: 0.9rem;
18
28
  }
@@ -16,9 +16,9 @@ const ListComponent: BlogSidebarContentProps['ListComponent'] = ({items}) => {
16
16
  return (
17
17
  <BlogSidebarItemList
18
18
  items={items}
19
- ulClassName="menu__list"
20
- liClassName="menu__list-item"
21
- linkClassName="menu__link"
19
+ ulClassName="menu__list mx-6"
20
+ liClassName="menu__list-item mx-6"
21
+ linkClassName="menu__link mx-6"
22
22
  linkActiveClassName="menu__link--active"
23
23
  />
24
24
  );
@@ -49,8 +49,8 @@ export default function DocItemLayout({children}: Props): ReactNode {
49
49
  <div className={clsx('prose__wrapper mx-auto lg:pr-8', !docTOC.hidden && styles.docItemCol)}>
50
50
  <ContentVisibility metadata={metadata} />
51
51
  <DocVersionBanner />
52
- <div className={styles.docItemContainer}>
53
- <article className="max-w-3xl md:pr-4">
52
+ <div className={clsx(styles.docItemContainer, 'w-full')}>
53
+ <article className="max-w-3xl mx-auto md:pr-4">
54
54
  <DocBreadcrumbs />
55
55
  <DocVersionBadge />
56
56
  {docTOC.mobile}
@@ -7,6 +7,6 @@
7
7
 
8
8
  @media (min-width: 997px) {
9
9
  .docItemCol {
10
- max-width: 75% !important;
10
+ width: 75% !important;
11
11
  }
12
12
  }
@@ -3,7 +3,10 @@
3
3
  .docMainContainer {
4
4
  display: flex;
5
5
  width: 100%;
6
- padding: 0 1rem;
6
+ padding: 0;
7
+ @media (min-width: 997px) {
8
+ padding: 0 1rem;
9
+ }
7
10
  }
8
11
 
9
12
  @media (min-width: 997px) {
@@ -4,6 +4,7 @@ import {
4
4
  useDocsVersion,
5
5
  useDocsPreferredVersion,
6
6
  } from "@docusaurus/plugin-content-docs/client";
7
+ import { usePluginData } from "@docusaurus/useGlobalData";
7
8
  import { useLocation } from "@docusaurus/router";
8
9
  import Link from "@docusaurus/Link";
9
10
 
@@ -15,6 +16,15 @@ interface VersionSwitcherProps {
15
16
  const VersionSwitcher: React.FC<VersionSwitcherProps> = ({ isOpen, setIsOpen }) => {
16
17
  const dropdownRef = useRef<HTMLDivElement>(null);
17
18
  const location = useLocation();
19
+
20
+ // check if the plugin exists first
21
+ let pluginData;
22
+ try {
23
+ pluginData = usePluginData('docusaurus-plugin-content-docs', 'platform-enterprise');
24
+ } catch (e) {
25
+ return null;
26
+ }
27
+
18
28
  const { savePreferredVersionName } = useDocsPreferredVersion("platform-enterprise");
19
29
  const versions = useVersions("platform-enterprise");
20
30
  const currentVersion = useDocsVersion();
@@ -43,12 +43,12 @@ export default function DocSidebarDesktopContent({
43
43
  description: 'The ARIA label for the sidebar navigation',
44
44
  })}
45
45
  className={clsx(
46
- 'menu thin-scrollbar w-full block font-normal mt-2',
46
+ 'menu thin-scrollbar w-full block font-normal mt-2 text-[.9rem]',
47
47
  styles.menu,
48
48
  showAnnouncementBar && styles.menuWithAnnouncementBar,
49
49
  className,
50
50
  )}>
51
- <ul className={clsx(ThemeClassNames.docs.docSidebarMenu, 'menu__list')}>
51
+ <ul className={clsx(ThemeClassNames.docs.docSidebarMenu, 'menu__list px-2')}>
52
52
  <DocSidebarItems items={sidebar} activePath={path} level={1} />
53
53
  </ul>
54
54
  </nav>
@@ -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';
@@ -16,8 +17,12 @@ function DocSidebarDesktop({path, sidebar, onCollapse, isHidden}: Props) {
16
17
  },
17
18
  } = useThemeConfig();
18
19
 
20
+ const location = useLocation();
19
21
  const [isOpen, setIsOpen] = useState(false);
20
22
 
23
+ // Check if URL contains /platform-enterprise
24
+ const showVersionSwitcher = location.pathname.includes('/platform-enterprise');
25
+
21
26
  return (
22
27
  <div
23
28
  className={clsx(
@@ -27,7 +32,9 @@ function DocSidebarDesktop({path, sidebar, onCollapse, isHidden}: Props) {
27
32
  'h-full relative w-full'
28
33
  )}>
29
34
  {hideOnScroll && <Logo tabIndex={-1} className={styles.sidebarLogo} />}
30
- <VersionSwitcher isOpen={isOpen} setIsOpen={setIsOpen} />
35
+ {showVersionSwitcher && (
36
+ <VersionSwitcher isOpen={isOpen} setIsOpen={setIsOpen} />
37
+ )}
31
38
  <Content path={path} sidebar={sidebar} />
32
39
  {hideable && <div className="absolute right-0 top-[3.75rem]"><CollapseButton onClick={onCollapse} /></div>}
33
40
  </div>