> ## Documentation Index
> Fetch the complete documentation index at: https://flowdrop.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# 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.

## Three themes, one editor

FlowDrop ships with three 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:

<CardGroup cols={3}>
  <Card title="Default" img="https://mintcdn.com/flowdrop/A476CS6LBmOR9RPd/images/screenshots/default.webp?fit=max&auto=format&n=A476CS6LBmOR9RPd&q=85&s=b2e142c1f134a425bb99024ca6d3e6bb" href="https://flowdrop-demo.netlify.app/themes/default" width="3840" height="1748" data-path="images/screenshots/default.webp">
    Full chrome and node palette — the standard FlowDrop feel.
  </Card>

  <Card title="Minimal" img="https://mintcdn.com/flowdrop/A476CS6LBmOR9RPd/images/screenshots/minimal.webp?fit=max&auto=format&n=A476CS6LBmOR9RPd&q=85&s=d138107b492bbeb0ec22af2c1a3e86e4" href="https://flowdrop-demo.netlify.app/themes/minimal" width="3840" height="1748" data-path="images/screenshots/minimal.webp">
    Quieter chrome for embedding inside an existing UI.
  </Card>

  <Card title="Drafter" img="https://mintcdn.com/flowdrop/A476CS6LBmOR9RPd/images/screenshots/drafter.webp?fit=max&auto=format&n=A476CS6LBmOR9RPd&q=85&s=d524f28bd9ae127ad7a2af2aef4de867" href="https://flowdrop-demo.netlify.app/themes/drafter" width="3840" height="1748" data-path="images/screenshots/drafter.webp">
    A sketch-like, low-fidelity whiteboard skin.
  </Card>
</CardGroup>

## 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:

```css theme={null}
: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:

```css theme={null}
[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

<Card title="Theming guide" icon="swatchbook" href="/guides/theming" horizontal>
  Full token reference — surfaces, borders, status colors, spacing, radius,
  typography, node layout, and ready-to-use theme examples.
</Card>
