Visit slate-plugins.udecode.io for docs, guides, API and more!
Slate is a low-level editor framework that helps you deal with difficult parts when building an editor, such as events handlers, elements, formatting, commands, rendering, serializing, normalizing, etc.
While you are trying to build your own editors, it still needs a lot of skills to make something similar to Quill or ProseMirror. This repository allows you to build your editor right away with minimal slate knowledge.
@udecode/slate-plugins
is built on top of slate to handle plugins and
state management for an optimal development experience. This repository
comes with a lot of plugins as elements, marks, serializers,
normalizers, queries, transforms, components and so on.
- 🏎 Simple Start
You only need one component to get started:
<SlatePlugins>
- 🐻 State Management
zustand store is internally used to support multiple editor states.
- 💅 Design System
The API is design system friendly. We provide a default design system for quick start but you can plug-in your own one using a single function.
- 🔌 40+ Packages
We enforce separation of concerns by packaging each feature for build optimization and versioning.
- 🛠 Extensible
All plugins accept extensible options and if you need to fork a plugin, all its functions are exported.
- 📦 Tree-shaking / ES modules
- ✅ TypeScript types
- ✅ Unit tested with
[email protected]
Name | Version | Description |
---|---|---|
@udecode/slate-plugins-common |
Common queries, transforms and utilities. | |
@udecode/slate-plugins-core |
Core slate-plugins architecture. |
Name | Version | Description |
---|---|---|
@udecode/slate-plugins-basic-marks |
Basic text formatting: bold, code, italic, strikethrough, subscript, superscript and underline. | |
@udecode/slate-plugins-highlight |
Highlights. | |
@udecode/slate-plugins-kbd |
Keyboard input formatting. |
Name | Version | Description |
---|---|---|
@udecode/slate-plugins-html-serializer |
HTML (de)serializing. | |
@udecode/slate-plugins-md-serializer |
Markdown (de)serializing. |
Name | Version | Description |
---|---|---|
@udecode/slate-plugins-slate-plugins |
Provides all packages. | |
@udecode/slate-plugins-autoformat |
Autoformatting actions. | |
@udecode/slate-plugins-break |
Soft-break and exit-break. | |
@udecode/slate-plugins-dnd |
Drag and drop with react-dnd. | |
@udecode/slate-plugins-find-replace |
Highlighting searching text. | |
@udecode/slate-plugins-find-replace-ui |
Default UI for find-replace. | |
@udecode/slate-plugins-node-id |
Insert nodes with an id key. | |
@udecode/slate-plugins-normalizers |
Editor normalizers. | |
@udecode/slate-plugins-reset-node |
Reset node type. | |
@udecode/slate-plugins-select |
Selection utilities. | |
@udecode/slate-plugins-trailing-block |
Ensures a trailing block. | |
@udecode/slate-plugins-toolbar |
Toolbar components: balloon, heading, buttons. | |
@udecode/slate-plugins-ui-fluent |
Common UI utilities with fluentui. | |
@udecode/slate-plugins-test-utils |
Test utilities. |
@zbeyens: I'm building an app with an editor like many of you and my first initiative was to spend months to share this work, while hundreds of developers were coding and debugging the exact same features. Open-source is a long-term investment for a bug-free product and reducing technical debt, so I can only encourage you to join this collaboration. Our goal is to build a fully-featured editor.
🌟 Stars and 📥 Pull requests are welcome! Don't hesitate to share your plugins here. Read our contributing guide to get started, or find us on Slack, we will take the time to guide you.
Thanks goes to these wonderful people (emoji key):
This project follows the all-contributors specification. Contributions of any kind welcome!