Beem Slide

beem-slide.config.ts

Workspace configuration — every field optional.

The config sits at the workspace root. It is entirely optional; an empty object is a valid config and the defaults are what the scaffold runs on.

beem-slide.config.ts
import type { BeemSlideConfig } from '@beem-slide/core';

const config: BeemSlideConfig = {};

export default config;

Shape

type BeemSlideConfig = {
  /** Directory holding your decks. Default: 'slides'. */
  slidesDir?: string;
  /** Directory holding theme bundles. Default: 'themes'. */
  themesDir?: string;
  /** Dev-server port. Default: 5299, or the next free port above it. */
  port?: number;
  /** Language for the runtime UI. Default: English. */
  locale?: Locale;
  /** Read only by `build` — never by `dev`. */
  build?: BeemSlideBuildConfig;
};

type BeemSlideBuildConfig = {
  /** Deck ids to include. Omitted means every deck under slidesDir. */
  slides?: string[];
  /** URL prefix the build is served from, e.g. '/decks/keynote'. */
  basePath?: string;
  /** Include the deck index in the build. */
  showSlideBrowser?: boolean;
  /** Include the authoring chrome — toolbar, inspector, notes. */
  showSlideUi?: boolean;
  /** Include the "download as HTML" button in the viewer. */
  allowHtmlDownload?: boolean;
};

Everything under build applies to beem-slide build only. dev always serves the whole of slidesDir, so narrowing a build never narrows what you can author against locally.

Recipes

One deck, sent to a client

const config: BeemSlideConfig = {
  build: {
    slides: ['q2-launch'],
    showSlideBrowser: false,
    showSlideUi: false,
    allowHtmlDownload: false,
  },
};

Naming exactly one deck with the browser off makes that deck the site — it renders at the root, rather than the root being an index of a single item.

Served under a path prefix

const config: BeemSlideConfig = {
  build: { basePath: '/decks/q2' },
};

Sets the asset base and the router basename together, so the same bundle works under any prefix without editing a link. --base on the command line does the same thing for a one-off build.

A different UI language

import { zhTW } from '@beem-slide/core/locale';

const config: BeemSlideConfig = { locale: zhTW };

See Locale.

More than one deck root

slidesDir is a single path. If you want separate groups of decks, keep one root and use the folder grouping in the deck list rather than a second directory — the runtime's discovery, publishing filter and cloud mapping all assume one root.

On this page