Skip to main content

Preset Options

Configure every Nova-owned setting for @cbnventures/docusaurus-preset-nova in docusaurus.config.ts.

Which defaults are these?

Every default on this page is chosen or stabilized by Nova. Defaults for the forwarded Docusaurus content plugins are labeled separately in the Plugin Options reference.

Top-Level Options

docusaurus.config.ts
ts
presets: [[
  '@cbnventures/docusaurus-preset-nova',
  {
    preset: 'envoy',
    overrides: { /* ... */ },
    plugins: { /* ... */ },
    analytics: { /* ... */ },
    persistentCache: false,
    search: { /* ... */ },
    progressBar: true,
    iconSafelist: ['logos:slack'],
    maxBundleFileSize: 3,
  },
]],
OptionTypeNova defaultDescription
preset'envoy' | 'foundry' | 'lantern' | 'marshal' | 'sentinel' | 'signal'Select the visual preset. Required.
overridesobject{}Override individual preset values. See Overrides below.
pluginsobject{}Configure the included Docusaurus content plugins. See Plugin Options.
analyticsobject{}Configure conditional analytics integrations. See Analytics below.
persistentCachebooleanfalseChoose whether webpack may retain filesystem caches.
searchobject | falsefalseConfigure Nova local search. false disables indexing and the search interface.
progressBarboolean | objectfalseConfigure the route-transition progress bar.
iconSafeliststring[][]Bundle dynamically constructed Iconify identifiers.
maxBundleFileSizenumber | false3Set the maximum emitted JavaScript file size in MiB, or disable the guard.

Overrides

Override any visual property of the active preset. Unspecified values keep the preset defaults.

Only four override categories are exposed: colors, fonts, navbar, and footer. The preset's shape, depth, and motion characteristics are part of its identity and cannot be overridden — switch to a different preset if you need a different feel.

Colors

Each color category accepts a { light, dark } pair of hex strings. Both keys are optional within each category — omitted values fall back to the active preset's defaults.

OptionTypeDefaultDescription
colors.primary.lightstringPreset valuePrimary brand color in light mode (hex).
colors.primary.darkstringPreset valuePrimary brand color in dark mode (hex).
colors.secondary.lightstringPreset valueSecondary accent color in light mode (hex).
colors.secondary.darkstringPreset valueSecondary accent color in dark mode (hex).
colors.text.lightstringPreset valueBody text color in light mode (hex).
colors.text.darkstringPreset valueBody text color in dark mode (hex).
colors.border.lightstringPreset valueBorder and divider color in light mode (hex).
colors.border.darkstringPreset valueBorder and divider color in dark mode (hex).
colors.warning.lightstringPreset valueWarning admonition base color in light mode (hex).
colors.warning.darkstringPreset valueWarning admonition base color in dark mode (hex).
colors.danger.lightstringPreset valueDanger/error admonition base color in light mode (hex).
colors.danger.darkstringPreset valueDanger/error admonition base color in dark mode (hex).

The primary and secondary colors expand to 11-level shade scales (50 through 950) as CSS custom properties. The text, border, warning, and danger colors are used as single values plus derived color-mix tokens.

Fonts

OptionTypeDefaultDescription
fonts.displaystringPreset valueDisplay/heading font family name.
fonts.bodystringPreset valueBody text font family name.
fonts.codestringPreset valueCode/monospace font family name.
OptionTypeDefaultDescription
navbar'bridge' | 'canopy' | 'monolith' | 'compass'Preset valueNavbar variant.
footer'commons' | 'embassy' | 'ledger' | 'launchpad'Preset valueFooter variant.

Analytics

OptionTypeDefaultDescription
analytics.gtmobject | undefinedundefinedGoogle Tag Manager configuration.
analytics.gtm.containerIdstringGTM container ID (e.g., 'GTM-XXXXXXX').

Webpack Cache

Nova avoids persistent webpack cache files by default so multilingual development sessions and builds do not accumulate a separate disk cache for every locale and compiler target.

  • docusaurus start uses webpack's in-memory cache for fast rebuilds during the current development session.
  • docusaurus build disables webpack caching because a production build does not benefit from retaining those files afterward.

Set persistentCache to true to leave Docusaurus's filesystem cache behavior unchanged. This can make repeated builds faster in environments with enough disk space.

docusaurus.config.ts
ts
{
  preset: 'envoy',
  persistentCache: true,
}

See Search for the full options table and explanation.

Progress Bar

Set progressBar to true to use all Nova defaults, or pass an object to override individual behavior. The bar starts when Docusaurus begins a client-side route update and completes after the next route has been preloaded. It does not flash during the initial page load.

docusaurus.config.ts
ts
{
  preset: 'envoy',
  progressBar: {
    showSpinner: false,
    speed: 250,
  },
}
OptionTypeNova defaultDescription
progressBarboolean | objectfalseEnable route progress with defaults or provide the configuration below.
progressBar.minimumnumber0.08Set the initial visible progress between 0 and 1.
progressBar.easingstring'ease'Set the CSS transition timing function.
progressBar.positionUsing'' | 'translate3d' | 'translate' | 'margin'''Choose the positioning method; empty lets the implementation detect one.
progressBar.speednumber200Set transition duration in milliseconds.
progressBar.tricklebooleantrueIncrement the unfinished bar automatically.
progressBar.trickleRatenumber0.02Add this fraction during each trickle step, between 0 and 1.
progressBar.trickleSpeednumber800Wait this many milliseconds between trickle steps.
progressBar.showSpinnerbooleantrueRender the spinner defined by the template.
progressBar.barSelectorstring'[role="bar"]'Find the progress-bar element inside the template.
progressBar.spinnerSelectorstring'[role="spinner"]'Find the spinner element inside the template.
progressBar.parentstring'body'Mount the generated progress markup inside this CSS selector.
progressBar.templatestringBuilt-in bar/spinner markupReplace the generated HTML; keep it aligned with the two selector settings.

The supported fields above receive stable Nova defaults. Additional advanced fields are forwarded to the bundled progress implementation, but Nova does not assign them a compatibility guarantee.

Icon Safelist

The preset bundles only the icons it finds by scanning your docs, blog, and src files plus the resolved themeConfig at build time. Any icon referenced with a static prefix:name string — in MDX, component props, or config — is discovered automatically and tree-shaken into the build, so there is nothing to install and the client never ships icons you don't use.

Use iconSafelist for the one case the scan can't see: an icon identifier assembled dynamically at runtime (for example, built from a variable). List those identifiers so they are always bundled.

docusaurus.config.ts
ts
{
  preset: 'envoy',
  iconSafelist: ['logos:slack', 'mdi:rocket-launch'],
}

Bundle Size

A production build (docusaurus build) fails if any emitted JavaScript file is larger than maxBundleFileSize mebibytes (MiB) (default 3). This catches a bundle-size regression — an accidentally eager import, an un-tree-shaken dependency — at build time, long before it slows real page loads or trips a host's per-file limit.

The error names the offending files.

Raise the limit if a site has a genuinely large legitimate chunk, or set it to false to turn the check off entirely.

docusaurus.config.ts
ts
{
  preset: 'envoy',
  maxBundleFileSize: 5, // mebibytes (MiB); or false to disable
}

Included Stack

Nova installs and coordinates more than the four configurable content plugins. See Preset Stack for every included plugin, runtime, build-time integration, CLI dependency, and required peer—plus how each one is activated and used.