FlowDrop Docs

Swappable themes

FlowDrop's look and feel is fully themeable through CSS custom properties — swap palettes, spacing, and radius without touching component code.

FlowDrop is designed to blend into your product, not the other way around. Every surface, color, border, and spacing value is driven by semantic CSS custom properties (--fd-*), so you can re-skin the entire editor — nodes, sidebar, toolbar, playground, and dialogs — by overriding a handful of tokens.

Four themes, one editor

FlowDrop ships with four themes out of the box. Each is just a set of --fd-* token overrides — the same editor, re-skinned. Launch any of them live in the demo:

Classic

Full chrome and node palette — the original FlowDrop look.

Minimal

Quieter chrome for embedding inside an existing UI.

Drafter

A sketch-like, low-fidelity whiteboard skin.

Graphite

The default. A calm tool look: one ink primary action, a blue accent for selection and focus, and green, amber and red only for run status. Light and dark.

Choosing a theme

The editor starts in Graphite. People pick another theme in Settings → UI → UI Theme; the choice is remembered per browser. To set it in code, pass its name:

mountFlowDropApp(container, { theme: 'classic' });

The old name 'default' still loads Classic until 3.0.

Any token can still be overridden on top of a built-in theme, and the theme's dark palette is kept:

mountFlowDropApp(container, {
  theme: { name: 'graphite', skin: { tokens: { accent: '#7c3aed' } } }
});

Graphite uses the Inter font, which the library ships as an opt-in stylesheet. Without it the editor uses the system font:

@import '@flowdrop/flowdrop/styles/fonts/inter.css';

On Drupal, set the site's default theme and the navbar logo, name and link in the FlowDrop UI settings, under Appearance.

How it works

Themes are just sets of token overrides. Because every component reads from the same --fd-* semantic tokens, changing a token cascades everywhere at once:

:root {
  --fd-primary: #8b5cf6;
  --fd-primary-hover: #7c3aed;
  --fd-radius-md: 0.75rem;
}

Swap themes at runtime by toggling a class or data- attribute on a wrapping element and scoping your token overrides to it:

[data-fd-theme='violet'] {
  --fd-primary: #8b5cf6;
  --fd-primary-hover: #7c3aed;
  --fd-accent: #8b5cf6;
}

Dark mode works the same way — every semantic token has a dark-mode equivalent that activates automatically via data-theme="dark".

Go deeper

Theming guide

Full token reference — surfaces, borders, status colors, spacing, radius, typography, node layout, and ready-to-use theme examples.

On this page