Blocks
Every block on this site, with its settings and the style groups it supports, generated from the running CMS.
On this page
Every block you can add to a page, template or component is listed below, with its settings. Core blocks come from the blocks plugin; other plugins, such as forms, add their own.
A few primitives compose anything: Box (any HTML tag: a stack, a grid, a link, a button), Text and Heading, Link, Button, Image, Icon (1,500+ Phosphor icons), Input, Repeat and Page content. The rest, like sections, columns, cards, quotes, code, tables and accordions, are in the same block catalog, in every collection.
A block in Block Markdown and the API is {type, props, style, attrs, bind, logic, motion, children, label}: settings in props, CSS in style (Styles), extra attributes in attrs (a style attribute only sets CSS variables, such as --color-primary for one section), data connections in bind (Showing content), scripts in logic (Interactions) and animations in motion (Animations). Every block accepts every style section unless it says otherwise.
A Table can head its rows with its first column and mark one column with Highlight Column. Look switches between plain lines and a soft look without rules: the marked column fills with your primary color, and on a phone a table of up to four columns stacks each row's heading above its values.
An Accordion has a Look too: lines, or cards with each question on a soft panel of its own.
Interactive
Expandable questions and answers (adds FAQ structured data).
| Prop | Field | Notes |
|---|---|---|
items | repeater | Items |
faq | toggle | Mark Up as FAQ — Lets search engines and assistants quote the answers. |
look | select | Look Options: lines, cards. |
A link or button styled with the design system’s button styles.
| Prop | Field | Notes |
|---|---|---|
label | richtext | Label |
url | url | Link |
variant | select | Variant |
size | select | Size Options: sm, md, lg. |
icon | text | Icon |
icon_position | select | Icon Position Options: start, end. |
new_tab | toggle | Open in New Tab |
type | select | Button Type Options: button, submit. |
A row of buttons.
| Prop | Field | Notes |
|---|---|---|
justify | select | Align Options: start, center, end. |
One choice for a List Filter. Its options and counts come from the items.
| Prop | Field | Notes |
|---|---|---|
facet | text | Field — One of the Repeat’s Filter By fields, e.g. category. |
label | text | Label |
all_label | text | Label for All |
look | select | Look Options: chips, list. |
Shown when nothing matches the List Filter.
A search field for a List Filter.
| Prop | Field | Notes |
|---|---|---|
label | text | Label |
placeholder | text | Placeholder |
Lets visitors reorder a List Filter’s items. The first option is the order the Repeat already has.
| Prop | Field | Notes |
|---|---|---|
label | text | Label |
options | repeater | Options |
A text field, checkbox, slider or dropdown for interactive pages: keep its value in a state variable (Interact → Input value) and use it in scripts.
| Prop | Field | Notes |
|---|---|---|
type | select | Type Options: text, search, email, password, number, range, checkbox, select, textarea. |
label | text | Accessible Label |
name | text | Name — Sent with a form. |
placeholder | text | Placeholder |
value | text | Initial Value |
options | tags | Options |
min | number | Minimum |
max | number | Maximum |
step | number | Step |
Lets visitors filter a Repeat inside it by search and choices. Without scripts the whole list shows. Set Filter By and Search In on the Repeat.
| Prop | Field | Notes |
|---|---|---|
status | text | Result Count for Screen Readers |
Lets visitors pause what moves by itself. Needed on a page with an animation that runs forever.
| Prop | Field | Notes |
|---|---|---|
pause_label | text | Pause Label |
play_label | text | Play Label |
A search button that opens instant search over every page (⌘K). Works on static sites.
| Prop | Field | Notes |
|---|---|---|
label | text | Label |
placeholder | text | Placeholder |
empty | text | No results text |
shortcut | toggle | Open with ⌘K |
compact | select | Icon Only Options: never, mobile, always. |
One panel of Tabs.
| Prop | Field | Notes |
|---|---|---|
label | text | Label |
Panels behind tabs, with keyboard support. Without scripts every panel shows, one after the other.
| Prop | Field | Notes |
|---|---|---|
label | text | Name for Screen Readers |
default | number | Open First |
look | select | Look Options: lines, segmented, vertical. |
Layout
A container for anything: lay out its children as a stack or grid with the Design panel. Any HTML tag, optionally a link or button.
| Prop | Field | Notes |
|---|---|---|
tag | select | HTML Tag Options: div, section, header, footer, main, nav, aside, article, ul, ol, li, figure, figcaption, span, label, button, form, details, summary, dialog, address, blockquote, dl, dt, dd, h1, h2, h3, h4, h5, h6, p. |
link | url | Link |
new_tab | toggle | Open in New Tab |
type | select | Button Type Options: button, submit. |
A padded container, optionally linked.
| Prop | Field | Notes |
|---|---|---|
link | url | Link |
variant | select | Look Options: plain, outline, filled, raised. |
One column of a Columns block.
Side-by-side columns that stack on small screens.
| Prop | Field | Notes |
|---|---|---|
layout | select | Layout Options: 1-1, 1-2, 2-1, 1-1-1, 1-1-1-1, 3-2, 2-3. |
gap | select | Gap Options: token:space.0, token:space.2, token:space.4, token:space.6, token:space.8, token:space.12, token:space.16. |
align | select | Vertical Align Options: stretch, start, center, end. |
stack | select | Stack Below Options: md, lg, never. |
reverse | toggle | Reverse Order When Stacked |
A horizontal rule.
A responsive grid of items (cards, features, logos).
| Prop | Field | Notes |
|---|---|---|
columns | number | Columns |
min | select | Minimum Item Width Options: 10rem, 12rem, 16rem, 20rem, 24rem. |
gap | select | Gap Options: token:space.0, token:space.2, token:space.4, token:space.6, token:space.8, token:space.12, token:space.16. |
A full-width band with a centered inner width.
| Prop | Field | Notes |
|---|---|---|
width | select | Content Width Options: prose, content, wide, full. |
tag | select | HTML Tag Options: section, header, footer, aside, main, nav, article, div. |
background_image | media | Background Image |
overlay | select | Overlay Options: none, light, dark. |
Vertical space.
| Prop | Field | Notes |
|---|---|---|
size | select | Size Options: token:space.0, token:space.2, token:space.4, token:space.6, token:space.8, token:space.12, token:space.16. |
Children in a row or column with even spacing.
| Prop | Field | Notes |
|---|---|---|
direction | select | Direction Options: vertical, horizontal. |
gap | select | Gap Options: token:space.0, token:space.2, token:space.4, token:space.6, token:space.8, token:space.12, token:space.16. |
align | select | Align Options: stretch, start, center, end. |
justify | select | Justify Options: start, center, end, between. |
wrap | toggle | Wrap |
link | url | Link |
new_tab | toggle | Open in New Tab |
Text
Highlighted note, tip or warning.
| Prop | Field | Notes |
|---|---|---|
text | richtext | Text |
tone | select | Tone Options: note, tip, warning, danger. |
Preformatted code with syntax highlighting and a copy button.
| Prop | Field | Notes |
|---|---|---|
code | code | Code |
language | select | Language Options: bash, php, javascript, typescript, json, yaml, html, css, markdown, python, sql, plain. |
title | text | Title |
highlight | toggle | Highlight Syntax |
copy | toggle | Copy Button |
A title (h1–h6).
| Prop | Field | Notes |
|---|---|---|
text | richtext | Text |
level | select | Level Options: 1, 2, 3, 4, 5, 6. |
anchor | slug | Anchor |
permalink | toggle | Show # Link on Hover |
A text link. Can hold other blocks (an icon, a label) too. Marks itself as current on its own page.
| Prop | Field | Notes |
|---|---|---|
label | richtext | Label |
url | url | Link |
new_tab | toggle | Open in New Tab |
Bulleted or numbered list.
| Prop | Field | Notes |
|---|---|---|
items | json | Items |
ordered | toggle | Numbered |
A paragraph — or any short text (label, caption, eyebrow) with the tag you choose.
| Prop | Field | Notes |
|---|---|---|
text | richtext | Text |
tag | select | HTML Tag Options: p, span, div, small, strong, em, label, li, figcaption, blockquote, cite, time, address, dt, dd, legend, kbd, code. |
A quotation or testimonial.
| Prop | Field | Notes |
|---|---|---|
text | richtext | Quote |
cite | richtext | Attribution |
Rows and columns — great for comparisons (and for AI answers).
| Prop | Field | Notes |
|---|---|---|
rows | json | Rows |
header | toggle | First Row Is a Header |
row_headers | toggle | First Column Is a Header |
highlight | number | Highlight Column |
look | select | Look Options: lines, soft. |
caption | text | Caption |
Media
Maps, forms and other iframes from trusted providers.
| Prop | Field | Notes |
|---|---|---|
url | url | URL |
title | text | Title — Describes the embed for screen readers. |
aspect | select | Aspect Ratio Options: 16/9, 4/3, 1/1, 21/9. |
An icon from the Phosphor set (1,500+ icons in four weights). Takes the text color; size it with width and height.
| Prop | Field | Notes |
|---|---|---|
icon | text | Icon |
label | text | Accessible Label |
svg | code | Custom SVG — Used instead of a named icon. |
A responsive image (WebP/AVIF, lazy-loaded).
| Prop | Field | Notes |
|---|---|---|
image | media | Image |
alt | text | Alt Text — Describes the image for screen readers and search engines. |
caption | richtext | Caption |
link | url | Link |
aspect | select | Aspect Ratio Options: auto, 1/1, 4/3, 3/2, 16/9, 21/9, 3/4, 4/5. |
priority | toggle | Load First — For the main image above the fold. |
sizes | text | Sizes — How wide it is shown, e.g. (min-width: 64rem) 50vw, 100vw. |
YouTube, Vimeo or a video file — also as a silent background loop.
| Prop | Field | Notes |
|---|---|---|
url | url | Video URL |
caption | richtext | Caption |
poster | media | Poster Image |
autoplay | toggle | Autoplay Muted |
controls | toggle | Show Controls |
loop | toggle | Loop |
Form
Checkbox field
| Prop | Field | Notes |
|---|---|---|
label | text | Label |
name | text | Field Name — Key in submissions and emails, like company_name. |
required | toggle | Required |
help | text | Help Text |
show_if | group | Only Show When |
Checkboxes field
| Prop | Field | Notes |
|---|---|---|
label | text | Label |
name | text | Field Name — Key in submissions and emails, like company_name. |
required | toggle | Required |
help | text | Help Text |
options | textarea | Options — One per line. Use value|Label to store a different value. |
show_if | group | Only Show When |
Consent field
| Prop | Field | Notes |
|---|---|---|
name | text | Field Name |
text | richtext | Statement |
show_if | group | Only Show When |
Date field
| Prop | Field | Notes |
|---|---|---|
label | text | Label |
name | text | Field Name — Key in submissions and emails, like company_name. |
required | toggle | Required |
help | text | Help Text |
show_if | group | Only Show When |
Email field
| Prop | Field | Notes |
|---|---|---|
label | text | Label |
name | text | Field Name — Key in submissions and emails, like company_name. |
required | toggle | Required |
help | text | Help Text |
placeholder | text | Placeholder |
show_if | group | Only Show When |
File upload field
| Prop | Field | Notes |
|---|---|---|
label | text | Label |
name | text | Field Name — Key in submissions and emails, like company_name. |
required | toggle | Required |
help | text | Help Text |
accept | select | Allowed Files Options: documents, images, any. |
max_mb | number | Max Size (MB) |
show_if | group | Only Show When |
Number field
| Prop | Field | Notes |
|---|---|---|
label | text | Label |
name | text | Field Name — Key in submissions and emails, like company_name. |
required | toggle | Required |
help | text | Help Text |
placeholder | text | Placeholder |
min | number | Minimum |
max | number | Maximum |
show_if | group | Only Show When |
Choice field
| Prop | Field | Notes |
|---|---|---|
label | text | Label |
name | text | Field Name — Key in submissions and emails, like company_name. |
required | toggle | Required |
help | text | Help Text |
options | textarea | Options — One per line. Use value|Label to store a different value. |
show_if | group | Only Show When |
Dropdown field
| Prop | Field | Notes |
|---|---|---|
label | text | Label |
name | text | Field Name — Key in submissions and emails, like company_name. |
required | toggle | Required |
help | text | Help Text |
options | textarea | Options — One per line. Use value|Label to store a different value. |
placeholder | text | Empty Option |
show_if | group | Only Show When |
Phone field
| Prop | Field | Notes |
|---|---|---|
label | text | Label |
name | text | Field Name — Key in submissions and emails, like company_name. |
required | toggle | Required |
help | text | Help Text |
placeholder | text | Placeholder |
show_if | group | Only Show When |
Short text field
| Prop | Field | Notes |
|---|---|---|
label | text | Label |
name | text | Field Name — Key in submissions and emails, like company_name. |
required | toggle | Required |
help | text | Help Text |
placeholder | text | Placeholder |
max | number | Max Length |
autocomplete | select | Autofill Options: off, name, given-name, family-name, organization, street-address, postal-code, address-level2, country-name. |
show_if | group | Only Show When |
Long text field
| Prop | Field | Notes |
|---|---|---|
label | text | Label |
name | text | Field Name — Key in submissions and emails, like company_name. |
required | toggle | Required |
help | text | Help Text |
placeholder | text | Placeholder |
rows | number | Rows |
max | number | Max Length |
show_if | group | Only Show When |
Website field
| Prop | Field | Notes |
|---|---|---|
label | text | Label |
name | text | Field Name — Key in submissions and emails, like company_name. |
required | toggle | Required |
help | text | Help Text |
placeholder | text | Placeholder |
show_if | group | Only Show When |
Embed a form (contact, quote request, newsletter…).
| Prop | Field | Notes |
|---|---|---|
form | select | Form |
Dynamic
On a page with a teaser, readers without access see what comes before this.
Embed
Raw HTML for embed codes. Only people with the “Custom HTML” permission can add it.
| Prop | Field | Notes |
|---|---|---|
html | code | HTML |
Data
In a template: where each page’s own blocks go.
| Prop | Field | Notes |
|---|---|---|
wrap | toggle | Wrap in a Container — Style the content area as one element. |
permalinks | toggle | Add # Links to Headings |
An instance of a component (synced pattern) — edit the component once, every instance updates. Set its properties per instance.
| Prop | Field | Notes |
|---|---|---|
ref | select | Component |
values | json | Properties |
Repeats its children for every item of a list: entries of a collection, a menu, child pages, headings, breadcrumbs… Inside, bind blocks to item.title, item.url and so on.
| Prop | Field | Notes |
|---|---|---|
source | select | List |
tag | select | HTML Tag Options: div, section, header, footer, main, nav, aside, article, ul, ol, li, figure, figcaption, span, label, button, form, details, summary, dialog, address, blockquote, dl, dt, dd, h1, h2, h3, h4, h5, h6, p. |
as | text | Item Name — Name the item for nested lists (e.g. post, link). |
group_by | text | Group By — A field of the items. Repeats once per group, with item.label and item.items. |
filter_by | text | Filter By — In a List Filter: the fields its choices filter on. |
search_in | text | Search In — In a List Filter: the fields its search looks through. |
sort_by | text | Sort By — In a List Filter: the fields its Filter Sort can order by. |
empty | text | When Empty |