Docs
Systhema Design (opens in new tab)
Unreleased

Columns block

A responsive column layout whose items can be plain, row or card columns.

On this page

The Columns block lays content out in responsive columns. Each item holds its own fragment editor, and an item can render as a card.

Where it is offeredLink to this section

Offered in the root tier, and in the region tier when the editor enables withColumns (the Section, Feature and Gallery bodies do). Each column's content uses the fragment editor. A block used inside a Columns item must target 'fragment'.

FieldsLink to this section

FieldTypeLabelDefaultNotes
_tierselectOptions: root (Root), region (Region), fragment (Fragment), slot (Slot), stack (Stack)
alignXradioHorizontal AlignmentleftRequired; Options: left (Left), center (Center), right (Right), justify (Justify)
alignYradioVertical AlignmentstretchRequired; Options: stretch (Stretch), top (Top), center (Center), bottom (Bottom)
columnCountnumberNumber of columns in one row2Required
disableAnimationcheckboxDisable Wrapper Animationsfalse
disableStaggercheckboxDisable Stagger AnimationfalseShown when !siblingData?.disableAnimation
divideXcheckboxHorizontal Divider
divideYcheckboxVertical Divider
gapXnumberHorizontal Gap3Required
gapYnumberVertical Gap6Required
items.cardVariantradioCard VariantdefaultRequired; Shown when siblingData?.layout=="card"; Options: default (Default), highlighted (Highlighted)
items.columnSpannumberColumn Span1Required; Shown when siblingData?.layout=="column"||siblingData?.layout=="card"
items.contentrichTextContent
items.layoutradioLayoutcolumnRequired; Options: column (Column), card (Card), row (Row)
items.linkTyperadioLink TypenoneRequired; Shown when the custom field-helper condition passes; Options: none (None), custom (Custom URL), internal (Internal Link)
items.newTabcheckboxOpen in new tabfalseShown when the custom field-helper condition passes
items.referencerelationshipChoose a page to link toRequired; Shown when the custom field-helper condition passes; Related to pages
items.stickycheckboxStickyfalseShown when siblingData?.layout=="column"||siblingData?.layout=="card"
items.urltextEnter a URL``Required; Shown when the custom field-helper condition passes
itemsarrayItems
layoutBgradioBackground VariantmainRequired; Shown when siblingData?._tier==="root"; Options: main (Main), alternative (Alternative)
paddingnumberPadding2Required; Shown when siblingData?._tier==="root"
themeradioColordefaultRequired; Shown when siblingData?._tier==="root"; Options: default (Default), dark (Dark)

Card columnsLink to this section

A columns item with layout: 'card' behaves like a Card: media placed directly in it can span the card width; see Media inside a card. Columns items take the shared link fields, so a card column can link; see Link fields.

Rendered outputLink to this section

Renders the Columns component, with column count, gaps, alignment and dividers from the block fields.

ConverterLink to this section

columnsConverter converts each item body with nodesToJSX. layout chooses Column, Card or Row; a Row spans the configured column count. Card links use the shared localized reference resolver. Gap slider indices map to token gap names. At root tier the converter adds a Section with theme, background and padding; inside a region it renders bare Columns.

CustomizingLink to this section

Import ColumnsBlock from @systhemaui/payload/blocks as the starting schema for a project block. Register the definition and your renderer through customBlocks, using type: 'block' and the editor tiers you intend to support. A distinct slug creates a new block; a converter registered under the existing columns slug takes precedence over the built-in converter. Keep the fields that renderer reads, including populated relationships and nested editor states.

See Registering blocks for the configuration pattern and Converters for the renderer contract. A project converter used in client-mode live preview also needs browser registration.