content/docs/(plugins)/(elements)/basic-blocks.mdx
Basic Blocks is the registry kit for the common structural blocks in a Plate editor. It wires paragraphs, six heading levels, blockquotes, and horizontal rules to Plate UI components. Use the leaf docs when you need the behavior details for one block type.
<Cards> <Card icon="heading" title="Heading" href="/docs/heading"> Structure content with H1 through H6 blocks. </Card> <Card icon="blockquote" title="Blockquote" href="/docs/blockquote"> Wrap quoted or emphasized content in a blockquote. </Card> <Card icon="horizontal-rule" title="Horizontal Rule" href="/docs/horizontal-rule"> Insert a void divider between sections. </Card> </Cards> <ComponentPreview name="basic-blocks-demo" /> <PackageInfo>basic-blocks-base-kit.BasicBlocksKit is the normal app/editor kit. It installs the React plugins and the matching registry UI components.
import { createPlateEditor } from 'platejs/react';
import { BasicBlocksKit } from '@/components/editor/plugins/basic-blocks-kit';
export const editor = createPlateEditor({
plugins: BasicBlocksKit,
});
Use BaseBasicBlocksKit in static or server-safe rendering paths.
import { createStaticEditor } from 'platejs';
import { BaseBasicBlocksKit } from '@/components/editor/plugins/basic-blocks-base-kit';
const value = [
{
children: [{ text: 'Static content' }],
type: 'p',
},
];
export const staticEditor = createStaticEditor({
plugins: BaseBasicBlocksKit,
value,
});
| Layer | Owner | What It Does |
|---|---|---|
platejs/react | Package | Exports ParagraphPlugin. |
@platejs/basic-nodes | Package | Exports block rules and base block plugins. |
@platejs/basic-nodes/react | Package | Exports BlockquotePlugin, HeadingPlugin, H1Plugin through H6Plugin, HorizontalRulePlugin, and BasicBlocksPlugin. |
basic-blocks-kit | Registry | Adds React UI components, input rules, break rules, and shortcuts. |
basic-blocks-base-kit | Registry | Adds static UI components for static rendering. |
| Leaf pages | Docs | Own block-specific behavior: Heading, Blockquote, and Horizontal Rule. |
BasicBlocksPlugin is a package-level grouping plugin. It does not install the registry UI components; use BasicBlocksKit when you want Plate UI rendering.
| Block | Plugin | Registry Component | Notes |
|---|---|---|---|
| Paragraph | ParagraphPlugin | ParagraphElement | Comes from platejs/react; the registry kit adds the UI component. |
| Heading 1-6 | H1Plugin through H6Plugin | H1Element through H6Element | Each level gets a markdown rule and mod+alt+<level> shortcut. |
| Blockquote | BlockquotePlugin | BlockquoteElement | Uses a wrapping transform and mod+shift+period. |
| Horizontal rule | HorizontalRulePlugin | HrElement | Void block; supports dash and underscore markdown rules. |
| Shortcut | Result |
|---|---|
# through ###### | Converts the current paragraph into H1 through H6. |
> | Wraps the current block in a blockquote. |
--- | Converts the current block into a horizontal rule, then inserts a paragraph after it. |
___ | Converts the current block into a horizontal rule, then inserts a paragraph after it. |
See Plugin Input Rules for the rule engine and trigger model.
Use manual setup when you want the package plugins without the registry kit.
npm install @platejs/basic-nodes
import {
BlockquoteRules,
HeadingRules,
HorizontalRuleRules,
} from '@platejs/basic-nodes';
import {
BlockquotePlugin,
H1Plugin,
H2Plugin,
H3Plugin,
H4Plugin,
H5Plugin,
H6Plugin,
HorizontalRulePlugin,
} from '@platejs/basic-nodes/react';
import { createPlateEditor, ParagraphPlugin } from 'platejs/react';
export const editor = createPlateEditor({
plugins: [
ParagraphPlugin,
H1Plugin.configure({
inputRules: [HeadingRules.markdown()],
shortcuts: { toggle: { keys: 'mod+alt+1' } },
}),
H2Plugin.configure({
inputRules: [HeadingRules.markdown()],
shortcuts: { toggle: { keys: 'mod+alt+2' } },
}),
H3Plugin.configure({
inputRules: [HeadingRules.markdown()],
shortcuts: { toggle: { keys: 'mod+alt+3' } },
}),
H4Plugin.configure({
inputRules: [HeadingRules.markdown()],
shortcuts: { toggle: { keys: 'mod+alt+4' } },
}),
H5Plugin.configure({
inputRules: [HeadingRules.markdown()],
shortcuts: { toggle: { keys: 'mod+alt+5' } },
}),
H6Plugin.configure({
inputRules: [HeadingRules.markdown()],
shortcuts: { toggle: { keys: 'mod+alt+6' } },
}),
BlockquotePlugin.configure({
inputRules: [BlockquoteRules.markdown()],
shortcuts: { toggle: { keys: 'mod+shift+period' } },
}),
HorizontalRulePlugin.configure({
inputRules: [
HorizontalRuleRules.markdown({ variant: '-' }),
HorizontalRuleRules.markdown({ variant: '_' }),
],
}),
],
});
| API | Use |
|---|---|
BasicBlocksPlugin | Package grouping plugin for blockquote, heading, and horizontal rule behavior. |
BaseBasicBlocksPlugin | Static/headless grouping plugin for blockquote, heading, and horizontal rule behavior. |
HeadingRules.markdown() | Creates heading input rules based on the configured H1-H6 plugin key. |
BlockquoteRules.markdown() | Creates the > block-start rule. |
HorizontalRuleRules.markdown({ variant }) | Creates dash or underscore thematic-break rules. |