@tumaet/apollon
Apollon ships as an npm library that any framework can embed. The public API is imperative (new ApollonEditor(container, options)), so your host code does not need to use React — but the library does, and it mounts its own React tree (UI primitives powered by Base UI) inside the DOM node you give it.
13 UML and modeling diagram types · SVG/PNG/PDF/JSON export · optional real-time collaboration via Yjs · injectable canvas overlay controls.
One build, every framework
@tumaet/apollon ships a single build that externalizes every runtime
dependency a host can install — the React family (react, react-dom,
@xyflow/react), the CRDT singletons (yjs, y-protocols), and Apollon's own
runtime deps (@base-ui/react, lucide-react, @dnd-kit, zustand,
@chenglou/pretext), which install transitively with the package. Your bundler
resolves and de-duplicates each one against your app's node_modules, and your
bundle analyzer / SBOM tooling sees them as the real packages they are — never a
copy inlined invisibly into one chunk.
The API is imperative (new ApollonEditor(container, options)) and works from
any framework with a bundler — Angular (Artemis),
Vue, Svelte, React. React hosts additionally get the <Apollon> component,
hooks, and provider from the same entry, rendering on the React they already
have. react, react-dom, and @xyflow/react are required peers (joining
yjs / y-protocols); most package managers add missing peers automatically.
What's next
- Quickstart — the smallest working embed
- Install — package + peer deps for your framework
- Embedding examples — Angular, React, vanilla JS
- API reference — the complete
ApollonEditorsurface - Theming —
--apollon-*tokens,createApollonTheme, light/dark - Collaboration — Yjs-based real-time sync
- Export — SVG / PNG / PDF / JSON
- Overlay controls — inject toolbars, banners, and rails into the canvas
- Internationalization — override the editor's strings via
labels - Troubleshooting — blank canvas, SSR, and other embedding gotchas