Block editor
ProA document made of blocks: text, headings, lists, to-dos, quotes, code, callouts and dividers, with a / menu, markdown shortcuts, Enter and Backspace that split and join, and blocks you drag or move with Alt+Shift+arrows.
pnpm dlx shadcn@latest add @caliper/block-editorWhen to use #
Use it for
- Notes, specs, briefs and knowledge base articles inside a product.
- Anywhere people write structured text that is stored as data.
Skip it when
- Rich inline formatting such as links and bold inside a short field; use the rich text editor.
Installation #
pnpm dlx shadcn@latest add @caliper/block-editor
Adds its 7 files to components/ui/, each with its own stylesheet, and installs their packages. Pro installs with your access token, set up once per project. See Pro access. The first part also adds Caliper UI’s tokens; import them once as in Installation.
Usage #
Import it from your copy of the source. The example behind the preview comes with the source. It is built from BlockEditor and newBlock.
import { BlockEditor, newBlock } from "@/components/ui/block-editor"
The worked example comes with Pro
The 50-line example behind the preview opens here with a Pro or Team licence.
API reference #
BlockEditor
component
newBlock
component
No props of its own; it accepts the native props of its root element.
Accessibility #
It exposes group, listbox, option, toolbar, status and textbox semantics, with aria-label, aria-hidden, aria-selected, aria-multiline, aria-controls and aria-activedescendant kept in step with state. Changes that matter are announced through a live region.
Motion #
It declares no animation in its component source. Any transition comes from its stylesheet, which uses the duration tokens that collapse to instant under prefers-reduced-motion.