Skip to main content
Framework-agnostic patterns built on createHeadlessToolbar(). Pick the one closest to your stack.
On React? Reach for Custom UI › Toolbar and commands instead. The typed React surface (useSuperDocCommand, ui.commands.register) re-renders one button per command, ships with selection / comments / track-changes hooks, and works with any design system (shadcn, MUI, Mantine, Tailwind). The headless examples below are for non-React stacks.

Vue + Vuetify

Vertical sidebar panel. Navigation drawer with expansion panels grouping related controls. Stack: Vue 3, Vuetify 3, Material Design Icons

Full source

Vue + Vuetify example

Svelte + Tailwind

Fixed bottom bar. Compact, mobile-inspired layout with Svelte 5 runes for reactivity. Stack: Svelte 5, Tailwind CSS, Lucide Svelte

Full source

Svelte + Tailwind example

Vanilla JS

Zero-framework proof. Plain buttons, focus-preserving menus, DOM manipulation. No build step required. Stack: No framework, plain HTML/CSS/JS, Lucide
For font family, font size, and other selection commands, use a button menu that prevents mousedown focus changes before executing the command. Native selects can move browser focus and visually clear the editor selection while their menu is open.

Full source

Vanilla JS example

Running the examples

Replace <example-name> with vue-vuetify, svelte-shadcn, or vanilla.

Next steps

Custom UI (React)

The recommended path for React apps. Typed hooks, custom commands, selection-aware buttons.

Headless toolbar API reference

Full command table, snapshot shape, and helper utilities.