Opening the block palette
The block palette lives in the Blocks tab of the left panel. Click the tab label to switch to it. Blocks are organized in a responsive grid; each tile shows an icon and a short label. Hovering a tile highlights it with an accent border.The left panel defaults to the Layers tab. Switch to Blocks whenever you want to insert new elements from the catalogue.
Inserting a block
Click to insert — click any block tile and it is added to the active artboard’s canvas immediately. The block appears at the bottom of the current component tree. Drag to canvas — press and hold on a block tile, then drag it over the canvas iframe. GrapesJS’s drag-and-drop system tracks the pointer position and inserts the block at the drop target when you release. This lets you place a block directly inside a container element rather than appending it to the root.Block categories
Layout
Structural containers for building page sections and grid systems.
Use the Flex row and Flex column blocks as the foundation of most layouts — they come pre-configured with
gap-4 so child elements space themselves automatically.
Typography
All six heading levels plus inline and block text elements.Form
Interactive form elements for building input interfaces.Media
Embeddable media elements.Tailwind v4 in the canvas
The canvas iframe loads Tailwind CSS v4 from CDN. This means any Tailwind utility class you apply — whether by selecting a block, editing a class in the Traits panel, or having an AI agent calladd_components with Tailwind markup — is rendered live in the canvas without a build step.
add_components MCP tool, renders exactly as you would expect from a Tailwind v4 stylesheet — no configuration required.
Editing blocks after insertion
Once a block is on the canvas, select it by clicking it in the canvas or the Layers tree. Use the Styles tab in the right panel to modify CSS properties (dimensions, spacing, colors, flexbox settings), and the Traits tab to edit HTML attributes (src, alt, href, placeholder, etc.).
Default Tailwind classes on inserted blocks are a starting point. You can override them via the Styles panel or by asking your AI agent to call
update_styles with the component ID.