Back to Plate

Bold

content/docs/(plugins)/(marks)/bold.mdx

53.0.83.5 KB
Original Source

Bold applies the bold leaf mark to selected text. BoldPlugin owns the mark key, shortcut, HTML parsing, render tag, and toggle transform.

<ComponentPreview name="basic-marks-demo" /> <PackageInfo>

Features

  • KEYS.bold leaf mark.
  • Default ⌘B / Ctrl+B shortcut.
  • HTML deserialization from strong, b, and bold font weight.
  • <strong> rendering by default.
  • Optional Markdown-style input rules through BoldRules.
  • Toolbar support through MarkToolbarButton.
</PackageInfo>

Kit Usage

<Steps>

Add Basic Marks

BasicMarksKit includes BoldPlugin, bold input rules, and the standard toolbar buttons that use KEYS.bold.

<ComponentSource name="basic-marks-kit" />
tsx
import { createPlateEditor } from 'platejs/react';

import { BasicMarksKit } from '@/components/editor/plugins/basic-marks-kit';

export const editor = createPlateEditor({
  plugins: [...BasicMarksKit],
});

Add A Toolbar Button

Use MarkToolbarButton with KEYS.bold.

tsx
import { BoldIcon } from 'lucide-react';
import { KEYS } from 'platejs';

import { MarkToolbarButton } from '@/components/ui/mark-toolbar-button';

export function BoldToolbarButton() {
  return (
    <MarkToolbarButton nodeType={KEYS.bold} tooltip="Bold (⌘+B)">
      <BoldIcon />
    </MarkToolbarButton>
  );
}
</Steps>

Manual Usage

Install the mark package.

bash
npm install @platejs/basic-nodes

Add BoldPlugin directly when you do not want the whole kit.

tsx
import { BoldPlugin } from '@platejs/basic-nodes/react';
import { createPlateEditor } from 'platejs/react';

export const editor = createPlateEditor({
  plugins: [BoldPlugin],
});

Register Markdown-style input rules when users should type bold delimiters.

tsx
import { BoldRules } from '@platejs/basic-nodes';
import { BoldPlugin } from '@platejs/basic-nodes/react';

export const boldPlugin = BoldPlugin.configure({
  inputRules: [
    BoldRules.markdown({ variant: '*' }),
    BoldRules.markdown({ variant: '_' }),
  ],
});

Ownership

SurfaceOwnerWhat It Does
BaseBoldPlugin@platejs/basic-nodesHeadless bold mark, HTML parser, render tag, and toggle transform.
BoldPlugin@platejs/basic-nodes/reactReact wrapper with default mod+b shortcut.
BoldRules.markdown@platejs/basic-nodesOptional mark input rule factory.
BasicMarksKitRegistryAdds BoldPlugin with * and _ Markdown-style input rules.
MarkToolbarButtonRegistry UIReads active mark state and calls the mark toggle hook.

The package owns the mark. The registry owns toolbar placement and icon choice.

Behavior

BehaviorSource
Mark keyKEYS.bold
Leaf behaviornode.isLeaf: true
Toggle transformeditor.tf.bold.toggle() calls editor.tf.toggleMark(type).
ShortcutBoldPlugin registers mod+b.
HTML tagsstrong, b
HTML stylesfont-weight: 600, 700, or bold
HTML guardIgnores descendants where fontWeight is normal.
Render outputstrong

API Reference

APIPackageUse
BaseBoldPlugin@platejs/basic-nodesHeadless bold plugin.
BoldPlugin@platejs/basic-nodes/reactReact bold plugin with shortcut defaults.
BoldRules.markdown(options)@platejs/basic-nodesCreates a bold mark input rule.
tf.bold.toggle()@platejs/basic-nodesToggles the bold mark at the selection.