@seqera/docusaurus-preset-seqera 1.0.25 → 1.0.26

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 CHANGED
@@ -30,8 +30,11 @@ function preset(context, opts = {}) {
30
30
  if (algolia) {
31
31
  themes.push(require.resolve('@docusaurus/theme-search-algolia'));
32
32
  }
33
- themes.push(makePluginConfig('@seqera/docusaurus-theme-seqera', theme));
33
+ // docusaurus-theme-search-typesense must be registered before @seqera/docusaurus-theme-seqera
34
+ // so that theme-seqera (last = highest precedence) can shadow SearchPage while
35
+ // @theme-original/SearchBar still resolves to the real typesense SearchBar.
34
36
  themes.push(makePluginConfig('docusaurus-theme-search-typesense', theme));
37
+ themes.push(makePluginConfig('@seqera/docusaurus-theme-seqera', theme));
35
38
  if ('gtag' in themeConfig) {
36
39
  throw new Error('The "gtag" field in themeConfig should now be specified as option for plugin-google-gtag. For preset-classic, simply move themeConfig.gtag to preset options. More information at https://github.com/facebook/docusaurus/pull/5832.');
37
40
  }
@@ -114,6 +117,18 @@ function getSeqeraThemeConfig(overrides = {}) {
114
117
  },
115
118
  contextualSearch: true,
116
119
  placeholder: 'Search Seqera docs...',
120
+ // Search page product drop down search selectors
121
+ productRoutes: [
122
+ ['/platform-enterprise/', 'Platform Enterprise', 'platform-enterprise', null],
123
+ ['/platform-cloud/', 'Platform Cloud', 'platform-cloud', null],
124
+ ['/platform-cli/', 'Platform CLI', 'platform-cli', null],
125
+ ['/platform-api/', 'Platform API', 'platform-api', null],
126
+ ['/nextflow/', 'Nextflow', null, 'docs-default-current'],
127
+ ['/multiqc/', 'MultiQC', 'multiqc', null],
128
+ ['/wave/', 'Wave', 'wave', null],
129
+ ['/fusion/', 'Fusion', 'fusion', null],
130
+ ['/changelog/', 'Changelog', null, null],
131
+ ],
117
132
  },
118
133
  navbar: {
119
134
  title: 'Seqera',
@@ -288,6 +303,28 @@ function getSeqeraThemeConfig(overrides = {}) {
288
303
  mergedConfig.footer.links = baseConfig.footer.links;
289
304
  }
290
305
  }
306
+ // Merge typesense — deep merge so productRoutes and other base defaults are
307
+ // preserved when the consuming repo only overrides a subset of keys.
308
+ if (overrides.typesense || baseConfig.typesense) {
309
+ mergedConfig.typesense = {
310
+ ...baseConfig.typesense,
311
+ ...overrides.typesense,
312
+ };
313
+ if (overrides.typesense?.typesenseSearchParameters ||
314
+ baseConfig.typesense?.typesenseSearchParameters) {
315
+ mergedConfig.typesense.typesenseSearchParameters = {
316
+ ...baseConfig.typesense?.typesenseSearchParameters,
317
+ ...overrides.typesense?.typesenseSearchParameters,
318
+ };
319
+ }
320
+ if (overrides.typesense?.typesenseServerConfig ||
321
+ baseConfig.typesense?.typesenseServerConfig) {
322
+ mergedConfig.typesense.typesenseServerConfig = {
323
+ ...baseConfig.typesense?.typesenseServerConfig,
324
+ ...overrides.typesense?.typesenseServerConfig,
325
+ };
326
+ }
327
+ }
291
328
  // Merge prism
292
329
  if (overrides.prism || baseConfig.prism) {
293
330
  mergedConfig.prism = {
package/lib/options.d.ts CHANGED
@@ -6,7 +6,7 @@ import type { Options as SVGRPluginOptions } from '@docusaurus/plugin-svgr';
6
6
  import type { Options as GAPluginOptions } from '@docusaurus/plugin-google-analytics';
7
7
  import type { Options as GtagPluginOptions } from '@docusaurus/plugin-google-gtag';
8
8
  import type { Options as GTMPluginOptions } from '@docusaurus/plugin-google-tag-manager';
9
- import type { Options as ThemeOptions } from '@seqera/docusaurus-theme-seqera';
9
+ import type { Options as ThemeOptions, ProductRoute } from '@seqera/docusaurus-theme-seqera';
10
10
  import type { UserThemeConfig as BaseThemeConfig } from "@seqera/docusaurus-theme-seqera";
11
11
  export type OpenAPIPluginOptions = {
12
12
  id?: string;
@@ -84,5 +84,7 @@ export type ThemeConfig = BaseThemeConfig & {
84
84
  typesenseSearchParameters?: Record<string, any>;
85
85
  contextualSearch?: boolean;
86
86
  placeholder?: string;
87
+ /** Product routes for the search page filter dropdown. */
88
+ productRoutes?: ProductRoute[];
87
89
  };
88
90
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@seqera/docusaurus-preset-seqera",
3
- "version": "1.0.25",
3
+ "version": "1.0.26",
4
4
  "description": "Docusaurus preset for Seqera docs",
5
5
  "author": "Seqera docs team <education@seqera.io>",
6
6
  "license": "Apache-2.0",
@@ -30,7 +30,7 @@
30
30
  "@docusaurus/theme-common": "3.9.2",
31
31
  "@docusaurus/theme-search-algolia": "3.9.2",
32
32
  "@docusaurus/types": "3.9.2",
33
- "@seqera/docusaurus-theme-seqera": "1.0.25",
33
+ "@seqera/docusaurus-theme-seqera": "1.0.26",
34
34
  "@tailwindcss/oxide": "^4.1.17",
35
35
  "docusaurus-plugin-llms": "^0.3.0",
36
36
  "docusaurus-plugin-openapi-docs": "^4.5.1",
package/src/index.ts CHANGED
@@ -54,8 +54,11 @@ export default function preset(
54
54
  if (algolia) {
55
55
  themes.push(require.resolve('@docusaurus/theme-search-algolia'));
56
56
  }
57
- themes.push(makePluginConfig('@seqera/docusaurus-theme-seqera', theme));
57
+ // docusaurus-theme-search-typesense must be registered before @seqera/docusaurus-theme-seqera
58
+ // so that theme-seqera (last = highest precedence) can shadow SearchPage while
59
+ // @theme-original/SearchBar still resolves to the real typesense SearchBar.
58
60
  themes.push(makePluginConfig('docusaurus-theme-search-typesense', theme));
61
+ themes.push(makePluginConfig('@seqera/docusaurus-theme-seqera', theme));
59
62
 
60
63
  if ('gtag' in themeConfig) {
61
64
  throw new Error(
@@ -165,6 +168,19 @@ export function getSeqeraThemeConfig(
165
168
 
166
169
  contextualSearch: true,
167
170
  placeholder: 'Search Seqera docs...',
171
+
172
+ // Search page product drop down search selectors
173
+ productRoutes: [
174
+ ['/platform-enterprise/', 'Platform Enterprise', 'platform-enterprise', null],
175
+ ['/platform-cloud/', 'Platform Cloud', 'platform-cloud', null],
176
+ ['/platform-cli/', 'Platform CLI', 'platform-cli', null],
177
+ ['/platform-api/', 'Platform API', 'platform-api', null],
178
+ ['/nextflow/', 'Nextflow', null, 'docs-default-current'],
179
+ ['/multiqc/', 'MultiQC', 'multiqc', null],
180
+ ['/wave/', 'Wave', 'wave', null],
181
+ ['/fusion/', 'Fusion', 'fusion', null],
182
+ ['/changelog/', 'Changelog', null, null],
183
+ ],
168
184
  },
169
185
  navbar: {
170
186
  title: 'Seqera',
@@ -341,6 +357,33 @@ export function getSeqeraThemeConfig(
341
357
  }
342
358
  }
343
359
 
360
+ // Merge typesense — deep merge so productRoutes and other base defaults are
361
+ // preserved when the consuming repo only overrides a subset of keys.
362
+ if (overrides.typesense || baseConfig.typesense) {
363
+ mergedConfig.typesense = {
364
+ ...baseConfig.typesense,
365
+ ...overrides.typesense,
366
+ };
367
+ if (
368
+ overrides.typesense?.typesenseSearchParameters ||
369
+ baseConfig.typesense?.typesenseSearchParameters
370
+ ) {
371
+ mergedConfig.typesense.typesenseSearchParameters = {
372
+ ...baseConfig.typesense?.typesenseSearchParameters,
373
+ ...overrides.typesense?.typesenseSearchParameters,
374
+ };
375
+ }
376
+ if (
377
+ overrides.typesense?.typesenseServerConfig ||
378
+ baseConfig.typesense?.typesenseServerConfig
379
+ ) {
380
+ mergedConfig.typesense.typesenseServerConfig = {
381
+ ...baseConfig.typesense?.typesenseServerConfig,
382
+ ...overrides.typesense?.typesenseServerConfig,
383
+ };
384
+ }
385
+ }
386
+
344
387
  // Merge prism
345
388
  if (overrides.prism || baseConfig.prism) {
346
389
  mergedConfig.prism = {
package/src/options.ts CHANGED
@@ -8,7 +8,7 @@ import type {Options as SVGRPluginOptions} from '@docusaurus/plugin-svgr';
8
8
  import type {Options as GAPluginOptions} from '@docusaurus/plugin-google-analytics';
9
9
  import type {Options as GtagPluginOptions} from '@docusaurus/plugin-google-gtag';
10
10
  import type {Options as GTMPluginOptions} from '@docusaurus/plugin-google-tag-manager';
11
- import type {Options as ThemeOptions} from '@seqera/docusaurus-theme-seqera';
11
+ import type {Options as ThemeOptions, ProductRoute} from '@seqera/docusaurus-theme-seqera';
12
12
  // import type {ThemeConfig as BaseThemeConfig} from '@docusaurus/types';
13
13
  import type {UserThemeConfig as ClassicThemeConfig} from '@docusaurus/theme-common';
14
14
  import type { UserThemeConfig as BaseThemeConfig } from "@seqera/docusaurus-theme-seqera";
@@ -95,5 +95,7 @@ export type ThemeConfig = BaseThemeConfig & {
95
95
  typesenseSearchParameters?: Record<string, any>;
96
96
  contextualSearch?: boolean;
97
97
  placeholder?: string;
98
+ /** Product routes for the search page filter dropdown. */
99
+ productRoutes?: ProductRoute[];
98
100
  };
99
101
  };