Email footer
Footer for outbound website emails.
Field-level catalog tables below stay in English — they match the machine design schema used by the editor, API, and MCP.
Shared concepts
Decoration & visibility (BlockShell)
Most blocks share one reusable shell: visibility rules and decoration live on the same prop set, not as separate block types. Blocks that use BlockShell list these fields at the end of their Fields section. Visibility controls who/where the block appears (breakpoints, locales, auth, route lock, roles). Decoration controls spacing, background, border, shadow, motion, and related chrome around the block content.
Fields
Visibility
showOnBreakpoints
Per-breakpoint visibility. Set a breakpoint to false to hide the block on that viewport. Missing keys default to visible.
showOnBreakpoints: { mobile: false }
showOnLocales
Limit which website locales show the block. Empty / missing means all enabled locales. Set a locale to false to hide.
showOnLocales: { tr: false }
authVisibility
Who can see the block based on website sign-in state.
Options: all, authenticated, anonymous
authVisibility: "authenticated"
routeLockVisibility
On locked object routes, show always, only when unlocked, or only when locked.
Options: all, when_unlocked, when_locked
routeLockVisibility: "all"
roleVisibility
Optional list of website user role labels. Empty means all roles. Matching is case-sensitive.
roleVisibility: ["moderator"]
entryActionVisibility
Object-component only: show when the current entry exposes matching actions.
Options: all, canUpdate, canDelete
entryActionVisibility: "all"
queryPageVisibility
Optional: limit list blocks to the first query page only.
Options: all, first_page_only
queryPageVisibility: "all"
Spacing & sizing
customizeEnabled
Enables the decoration controls below in the editor.
customizeEnabled: true
paddingEnabled
Turns padding controls on for this block.
paddingEnabled: true
padding
Unit: token
Theme spacing token applied as padding. Tokens let site owners customize spacing while blocks continue to share a consistent design language.
Options: none, xs, sm, md, lg, xl
padding: "md"
paddingByBreakpoint
Unit: token
Theme spacing token per breakpoint. Use this when the block needs different, but still theme-consistent, spacing at different viewport sizes.
paddingByBreakpoint: { desktop: "md", mobile: "sm" }
marginsEnabled
Turns margin controls on (configured via size/position maps).
marginsEnabled: false
sizeByBreakpoint
Optional width/height constraints per breakpoint. Modes: fillParent (stretch), fitContent (intrinsic), static (fixed length via widthStatic/heightStatic + unit), ratio (percent of the other axis via widthRatio/heightRatio).
static uses widthStaticUnit / heightStaticUnit: px, vw, vh, vmin, or vmax (default px). Example full-page background: widthStatic: 100, widthStaticUnit: "vw", heightStatic: 100, heightStaticUnit: "vh" with fixed positioning and pointerEvents: "none". ratio values are percentages of the opposite axis. fillParent and fitContent take no numeric unit.
sizeByBreakpoint: {
desktop: {
widthMode: "static",
widthStatic: 100,
widthStaticUnit: "vw",
heightMode: "static",
heightStatic: 100,
heightStaticUnit: "vh"
}
}
overflow
CSS overflow on the decoration frame.
Options: visible, hidden, auto, clip
overflow: "hidden"
pointerEvents
Whether the decoration frame receives pointer events. Use none for full-page decorative backgrounds so clicks pass through.
Options: auto, none
pointerEvents: "auto"
Position
positionEnabled
Enables absolute/relative positioning overlays.
positionEnabled: false
positionByBreakpoint
Positioning overlays per breakpoint (static, relative, absolute, fixed, sticky) with optional offsets in pixels (top, right, bottom, left).
positionByBreakpoint: {
desktop: { position: "relative", top: 0, left: 0 }
}
Background
backgroundEnabled
Enables background fill, gradient, or image.
backgroundEnabled: true
backgroundWidth
Background span: page column or full viewport bleed.
Options: page, full
backgroundWidth: "page"
backgroundKind
Solid color, gradient, image, muted autoplay video, or canvas animation (particles / reactive grid).
Options: solid, gradient, image, video, animation
backgroundKind: "solid"
backgroundColorLight
Solid background color in light theme.
backgroundColorLight: "#ffffff"
backgroundColorDark
Solid background color in dark theme.
backgroundColorDark: "#111827"
gradientType
Linear, radial, or conic gradient when backgroundKind is gradient.
Options: linear, radial, conic
gradientType: "linear"
gradientAngle
Unit: deg
Linear gradient direction or conic start angle in degrees when backgroundKind is gradient.
gradientAngle: 135
gradientColors
Gradient stops with light/dark pairs and segment offsets (CSS % is the running sum).
gradientColors: [
{ light: "#2563eb", dark: "#1e3a8a", offset: 20 },
{ light: "#93c5fd", dark: "#1e40af", offset: 80 }
]
backgroundImageSrc
Background image source when backgroundKind is image.
backgroundImageSrc: "https://cdn.example/bg.jpg"
backgroundImageMode
How the background image is sized.
Options: cover, contain, repeat
backgroundImageMode: "cover"
backgroundRepeatSize
Unit: px
Tile size in pixels when background image mode is repeat.
backgroundRepeatSize: 64
backgroundPosition
CSS background-position value.
backgroundPosition: "center"
backgroundMotionEnabled
Seamless pan (and optional rotate) for image backgrounds.
backgroundMotionEnabled: true
backgroundMotionDirectionDeg
Unit: deg
Pan direction in degrees (0 = right).
backgroundMotionDirectionDeg: 0
backgroundMotionSpeed
Relative pan speed for seamless cycling.
backgroundMotionSpeed: 20
backgroundMotionRotateDegPerSec
Unit: deg
Continuous rotation speed in degrees per second (0 = off).
backgroundMotionRotateDegPerSec: 0
backgroundVideoSrc
Video URL when backgroundKind is video. Always muted, autoplay, plays inline; never captures focus.
backgroundVideoSrc: "https://cdn.example/bg.mp4"
backgroundVideoFit
cover / fill use object-fit; repeat tiles frames on canvas.
Options: cover, fill, repeat
backgroundVideoFit: "cover"
backgroundVideoLoop
Loop the background video (default true).
backgroundVideoLoop: true
backgroundAnimationMode
Particle field or reactive grid (filled cells or continuous outlines) when backgroundKind is animation.
Options: particle, reactiveGrid
backgroundAnimationMode: "particle"
backgroundAnimShape
Built-in shape or custom SVG for particles/grid cells.
Options: circle, square, roundedSquare, triangle, diamond, hexagon, star, cross, svg
backgroundAnimShape: "circle"
backgroundAnimSvgSrc
SVG URL when shape is svg.
backgroundAnimSvgSrc: "https://cdn.example/shape.svg"
backgroundAnimColorMode
solid tints shapes; fromAsset keeps SVG colors.
Options: solid, fromAsset
backgroundAnimColorMode: "solid"
backgroundAnimSize
Unit: px
Base particle or cell size in pixels.
backgroundAnimSize: 12
backgroundAnimJitter
Particle-only 0–1 randomization for count, size, lifetime, and speed.
backgroundAnimJitter: 0.2
backgroundGridStyle
Reactive grid rendering: filled cells, or continuous shape outlines tiled edge-to-edge into one connected lattice that ripples around the cursor. Ignored for svg shapes, which always render as cells.
Options: cells, continuous
backgroundGridStyle: "cells"
backgroundGridHoverGrowLimitPct
Unit: %
Maximum cell size change at the pointer. Positive values grow cells; negative values shrink them. A value of 50 reaches 150% scale after the configured reaction time.
backgroundGridHoverGrowLimitPct: 50
backgroundGridHoverRotateLimitDeg
Unit: deg
Maximum cell rotation at the pointer. Positive values rotate clockwise; negative values rotate counterclockwise.
backgroundGridHoverRotateLimitDeg: 0
backgroundGridReactionTimeSec
Unit: s
Seconds for cells or the continuous-grid ripple to reach their configured hover limit, and to return after the pointer leaves.
backgroundGridReactionTimeSec: 1
Border
borderEnabled
Enables border color, style, width, and radius.
borderEnabled: false
borderColorLight
Border color in light theme.
borderColorLight: "#e5e7eb"
borderColorDark
Border color in dark theme.
borderColorDark: "#374151"
borderStyle
CSS border style.
Options: solid, dashed, dotted
borderStyle: "solid"
borderWidth
Unit: token
Border width token.
Options: none, sm, md, lg
borderWidth: "sm"
borderRadius
Unit: token
Border radius token.
Options: none, sm, md, lg, xl, full
borderRadius: "md"
Shadow
shadowEnabled
Enables box shadow values for light/dark themes.
shadowEnabled: false
shadowValueLight
CSS box-shadow value in light theme.
shadowValueLight: "0 8px 24px rgba(0, 0, 0, 0.12)"
shadowValueDark
CSS box-shadow value in dark theme.
shadowValueDark: "0 8px 24px rgba(0, 0, 0, 0.45)"
Motion & transform
scrollAnimationEnabled
Enables enter-on-scroll animation.
scrollAnimationEnabled: false
scrollAnimationType
Enter-on-scroll animation preset.
Options: fadeIn, slideInBottom, slideInTop, slideInLeft, slideInRight, zoomIn, zoomOut, rotateIn, rotateOut, bounceIn, bounceOut, pulse
scrollAnimationType: "fadeIn"
scrollAnimationDuration
Unit: ms
Animation duration in milliseconds.
scrollAnimationDuration: 600
scrollAnimationDelay
Unit: ms
Animation delay in milliseconds.
scrollAnimationDelay: 0
cursorTiltEnabled
Tilts the block slightly toward the pointer.
cursorTiltEnabled: false
cursorTiltIntensity
Strength of the cursor tilt effect.
cursorTiltIntensity: 8
transformEnabled
Enables CSS transform controls.
transformEnabled: false
transformRotateX
Unit: deg
Rotation around the X axis in degrees.
transformRotateX: 0
transformRotateY
Unit: deg
Rotation around the Y axis in degrees.
transformRotateY: 0
transformRotateZ
Unit: deg
Rotation around the Z axis in degrees.
transformRotateZ: 0
transformTranslateX
Unit: px
Horizontal translation in pixels.
transformTranslateX: 0
transformTranslateY
Unit: px
Vertical translation in pixels.
transformTranslateY: 0
transformTranslateZ
Unit: px
Depth translation in pixels.
transformTranslateZ: 0
transformScale
Unit: ratio
Uniform scale factor (unitless).
transformScale: 1
transformPerspective
Unit: px
CSS perspective distance in pixels.
transformPerspective: 800
Advanced
decorationBySelector
Advanced: apply decoration token overlays for hover, active, and focus. Missing overlay keys inherit the default flat props.
decorationBySelector: {
hover: { backgroundColorLight: "#f3f4f6" }
}
clipboard
Editor-only control — does not persist its own value.
Editor-only copy/paste helpers for block props.
// Editor-only — does not persist a stored value
Examples
Hide on mobile
{
"showOnBreakpoints": {
"mobile": false
}
}
Signed-in only + light padding
{
"authVisibility": "authenticated",
"customizeEnabled": true,
"paddingEnabled": true,
"padding": "md"
}
Rich text
Storage
Rich text props are TipTap HTML strings, not slots and not a separate html key.
Example: content: "<p>Hello <strong>world</strong></p>".
Empty content is typically an empty string or a minimal empty paragraph from the editor.
Editor features
The shared TipTap stack (admin Puck + public forms) includes:
- Headings levels 1–6
- Bold, italic, strike, and related StarterKit marks/nodes (paragraphs, lists, blockquotes, hard breaks)
- Links (insert/edit/remove via the toolbar modal)
- Text color, font family, and font size (px) — inline spans, so any selection can differ
- Tables (insert/add/remove rows and columns)
- Images from the file library (base64 embeds are not allowed)
- YouTube embeds and Google Maps embeds Some surfaces (e.g. lifecycle email bodies) add extra extensions such as field-binding chips; those only appear where that editor enables them.
Public render
Published HTML is rendered with the shared .rich-text styles (and related puck rich-text CSS) so headings, lists, tables, and embeds match the editor.
Theme typography and colors still come from the website theme where CSS variables apply.
Where rich text appears
- RichTextBlock —
contentHTML body on pages and chrome - ButtonBlock / ButtonLink —
textlabel as HTML (often a short paragraph) - ObjectBoundRichText — binds an object schema
richTextfield into the page - Object schema type
richTextand admin/public SharedRichTextField forms use the same extension stack
Authoring & MCP guidance
- Keep first-viewport copy short; put long articles in object fields and bind them with ObjectBoundRichText.
- Always write the HTML into the documented prop (
content,text, oroverlay) — do not invent anhtmlprop. - Locale overlays localize these HTML strings like other localizable props; the modal Name field is not rich text and is not localized.
- Prefer semantic HTML TipTap already emits (
<p>,<h2>,<ul>,<a href="…">, tables) over hand-authored markup that the schema does not round-trip. - When documenting or generating JSON, treat the value as a string of HTML, never as a nested slot array.
Examples
Short paragraph
{
"content": "<p>Browse categories and start a conversation.</p>"
}
Heading + list
{
"content": "<h2>What you get</h2><ul><li>Fast setup</li><li>Multi-locale publishing</li></ul>"
}
Categories
Layout
DecorationBlockRowBlockGridBlockVerticalSpacerEmailDivider
Content
HeadingBlockRichTextBlockButtonBlock
Media
SingleImage
Blocks
DecorationBlock
Decoration
Fields
Content
content
Main content payload. Shape depends on the block: nested slot blocks, rich-text HTML, or body copy.
content: []
Visibility
showOnBreakpoints
Per-breakpoint visibility. Set a breakpoint to false to hide the block on that viewport. Missing keys default to visible.
showOnBreakpoints: { mobile: false }
showOnLocales
Limit which website locales show the block. Empty / missing means all enabled locales. Set a locale to false to hide.
showOnLocales: { tr: false }
authVisibility
Who can see the block based on website sign-in state.
Options: all, authenticated, anonymous
authVisibility: "authenticated"
routeLockVisibility
On locked object routes, show always, only when unlocked, or only when locked.
Options: all, when_unlocked, when_locked
routeLockVisibility: "all"
roleVisibility
Optional list of website user role labels. Empty means all roles. Matching is case-sensitive.
roleVisibility: ["moderator"]
entryActionVisibility
Object-component only: show when the current entry exposes matching actions.
Options: all, canUpdate, canDelete
entryActionVisibility: "all"
queryPageVisibility
Optional: limit list blocks to the first query page only.
Options: all, first_page_only
queryPageVisibility: "all"
Spacing & sizing
customizeEnabled
Enables the decoration controls below in the editor.
customizeEnabled: true
paddingEnabled
Turns padding controls on for this block.
paddingEnabled: true
padding
Unit: token
Theme spacing token applied as padding. Tokens let site owners customize spacing while blocks continue to share a consistent design language.
Options: none, xs, sm, md, lg, xl
padding: "md"
paddingByBreakpoint
Unit: token
Theme spacing token per breakpoint. Use this when the block needs different, but still theme-consistent, spacing at different viewport sizes.
paddingByBreakpoint: { desktop: "md", mobile: "sm" }
marginsEnabled
Turns margin controls on (configured via size/position maps).
marginsEnabled: false
sizeByBreakpoint
Optional width/height constraints per breakpoint. Modes: fillParent (stretch), fitContent (intrinsic), static (fixed length via widthStatic/heightStatic + unit), ratio (percent of the other axis via widthRatio/heightRatio).
static uses widthStaticUnit / heightStaticUnit: px, vw, vh, vmin, or vmax (default px). Example full-page background: widthStatic: 100, widthStaticUnit: "vw", heightStatic: 100, heightStaticUnit: "vh" with fixed positioning and pointerEvents: "none". ratio values are percentages of the opposite axis. fillParent and fitContent take no numeric unit.
sizeByBreakpoint: {
desktop: {
widthMode: "static",
widthStatic: 100,
widthStaticUnit: "vw",
heightMode: "static",
heightStatic: 100,
heightStaticUnit: "vh"
}
}
overflow
CSS overflow on the decoration frame.
Options: visible, hidden, auto, clip
overflow: "hidden"
pointerEvents
Whether the decoration frame receives pointer events. Use none for full-page decorative backgrounds so clicks pass through.
Options: auto, none
pointerEvents: "auto"
Position
positionEnabled
Enables absolute/relative positioning overlays.
positionEnabled: false
positionByBreakpoint
Positioning overlays per breakpoint (static, relative, absolute, fixed, sticky) with optional offsets in pixels (top, right, bottom, left).
positionByBreakpoint: {
desktop: { position: "relative", top: 0, left: 0 }
}
Background
backgroundEnabled
Enables background fill, gradient, or image.
backgroundEnabled: true
backgroundWidth
Background span: page column or full viewport bleed.
Options: page, full
backgroundWidth: "page"
backgroundKind
Solid color, gradient, image, muted autoplay video, or canvas animation (particles / reactive grid).
Options: solid, gradient, image, video, animation
backgroundKind: "solid"
backgroundColorLight
Solid background color in light theme.
backgroundColorLight: "#ffffff"
backgroundColorDark
Solid background color in dark theme.
backgroundColorDark: "#111827"
gradientType
Linear, radial, or conic gradient when backgroundKind is gradient.
Options: linear, radial, conic
gradientType: "linear"
gradientAngle
Unit: deg
Linear gradient direction or conic start angle in degrees when backgroundKind is gradient.
gradientAngle: 135
gradientColors
Gradient stops with light/dark pairs and segment offsets (CSS % is the running sum).
gradientColors: [
{ light: "#2563eb", dark: "#1e3a8a", offset: 20 },
{ light: "#93c5fd", dark: "#1e40af", offset: 80 }
]
backgroundImageSrc
Background image source when backgroundKind is image.
backgroundImageSrc: "https://cdn.example/bg.jpg"
backgroundImageMode
How the background image is sized.
Options: cover, contain, repeat
backgroundImageMode: "cover"
backgroundRepeatSize
Unit: px
Tile size in pixels when background image mode is repeat.
backgroundRepeatSize: 64
backgroundPosition
CSS background-position value.
backgroundPosition: "center"
backgroundMotionEnabled
Seamless pan (and optional rotate) for image backgrounds.
backgroundMotionEnabled: true
backgroundMotionDirectionDeg
Unit: deg
Pan direction in degrees (0 = right).
backgroundMotionDirectionDeg: 0
backgroundMotionSpeed
Relative pan speed for seamless cycling.
backgroundMotionSpeed: 20
backgroundMotionRotateDegPerSec
Unit: deg
Continuous rotation speed in degrees per second (0 = off).
backgroundMotionRotateDegPerSec: 0
backgroundVideoSrc
Video URL when backgroundKind is video. Always muted, autoplay, plays inline; never captures focus.
backgroundVideoSrc: "https://cdn.example/bg.mp4"
backgroundVideoFit
cover / fill use object-fit; repeat tiles frames on canvas.
Options: cover, fill, repeat
backgroundVideoFit: "cover"
backgroundVideoLoop
Loop the background video (default true).
backgroundVideoLoop: true
backgroundAnimationMode
Particle field or reactive grid (filled cells or continuous outlines) when backgroundKind is animation.
Options: particle, reactiveGrid
backgroundAnimationMode: "particle"
backgroundAnimShape
Built-in shape or custom SVG for particles/grid cells.
Options: circle, square, roundedSquare, triangle, diamond, hexagon, star, cross, svg
backgroundAnimShape: "circle"
backgroundAnimSvgSrc
SVG URL when shape is svg.
backgroundAnimSvgSrc: "https://cdn.example/shape.svg"
backgroundAnimColorMode
solid tints shapes; fromAsset keeps SVG colors.
Options: solid, fromAsset
backgroundAnimColorMode: "solid"
backgroundAnimSize
Unit: px
Base particle or cell size in pixels.
backgroundAnimSize: 12
backgroundAnimJitter
Particle-only 0–1 randomization for count, size, lifetime, and speed.
backgroundAnimJitter: 0.2
backgroundGridStyle
Reactive grid rendering: filled cells, or continuous shape outlines tiled edge-to-edge into one connected lattice that ripples around the cursor. Ignored for svg shapes, which always render as cells.
Options: cells, continuous
backgroundGridStyle: "cells"
backgroundGridHoverGrowLimitPct
Unit: %
Maximum cell size change at the pointer. Positive values grow cells; negative values shrink them. A value of 50 reaches 150% scale after the configured reaction time.
backgroundGridHoverGrowLimitPct: 50
backgroundGridHoverRotateLimitDeg
Unit: deg
Maximum cell rotation at the pointer. Positive values rotate clockwise; negative values rotate counterclockwise.
backgroundGridHoverRotateLimitDeg: 0
backgroundGridReactionTimeSec
Unit: s
Seconds for cells or the continuous-grid ripple to reach their configured hover limit, and to return after the pointer leaves.
backgroundGridReactionTimeSec: 1
Border
borderEnabled
Enables border color, style, width, and radius.
borderEnabled: false
borderColorLight
Border color in light theme.
borderColorLight: "#e5e7eb"
borderColorDark
Border color in dark theme.
borderColorDark: "#374151"
borderStyle
CSS border style.
Options: solid, dashed, dotted
borderStyle: "solid"
borderWidth
Unit: token
Border width token.
Options: none, sm, md, lg
borderWidth: "sm"
borderRadius
Unit: token
Border radius token.
Options: none, sm, md, lg, xl, full
borderRadius: "md"
Shadow
shadowEnabled
Enables box shadow values for light/dark themes.
shadowEnabled: false
shadowValueLight
CSS box-shadow value in light theme.
shadowValueLight: "0 8px 24px rgba(0, 0, 0, 0.12)"
shadowValueDark
CSS box-shadow value in dark theme.
shadowValueDark: "0 8px 24px rgba(0, 0, 0, 0.45)"
Motion & transform
scrollAnimationEnabled
Enables enter-on-scroll animation.
scrollAnimationEnabled: false
scrollAnimationType
Enter-on-scroll animation preset.
Options: fadeIn, slideInBottom, slideInTop, slideInLeft, slideInRight, zoomIn, zoomOut, rotateIn, rotateOut, bounceIn, bounceOut, pulse
scrollAnimationType: "fadeIn"
scrollAnimationDuration
Unit: ms
Animation duration in milliseconds.
scrollAnimationDuration: 600
scrollAnimationDelay
Unit: ms
Animation delay in milliseconds.
scrollAnimationDelay: 0
cursorTiltEnabled
Tilts the block slightly toward the pointer.
cursorTiltEnabled: false
cursorTiltIntensity
Strength of the cursor tilt effect.
cursorTiltIntensity: 8
transformEnabled
Enables CSS transform controls.
transformEnabled: false
transformRotateX
Unit: deg
Rotation around the X axis in degrees.
transformRotateX: 0
transformRotateY
Unit: deg
Rotation around the Y axis in degrees.
transformRotateY: 0
transformRotateZ
Unit: deg
Rotation around the Z axis in degrees.
transformRotateZ: 0
transformTranslateX
Unit: px
Horizontal translation in pixels.
transformTranslateX: 0
transformTranslateY
Unit: px
Vertical translation in pixels.
transformTranslateY: 0
transformTranslateZ
Unit: px
Depth translation in pixels.
transformTranslateZ: 0
transformScale
Unit: ratio
Uniform scale factor (unitless).
transformScale: 1
transformPerspective
Unit: px
CSS perspective distance in pixels.
transformPerspective: 800
Advanced
decorationBySelector
Advanced: apply decoration token overlays for hover, active, and focus. Missing overlay keys inherit the default flat props.
decorationBySelector: {
hover: { backgroundColorLight: "#f3f4f6" }
}
clipboard
Editor-only control — does not persist its own value.
Editor-only copy/paste helpers for block props.
// Editor-only — does not persist a stored value
Default props
{
"showOnBreakpoints": {},
"showOnLocales": {},
"authVisibility": "all",
"routeLockVisibility": "all",
"roleVisibility": [],
"entryActionVisibility": "all",
"queryPageVisibility": "all",
"padding": "md",
"paddingEnabled": true,
"sizeByBreakpoint": {},
"marginsEnabled": false,
"positionEnabled": false,
"positionByBreakpoint": {},
"backgroundEnabled": true,
"backgroundWidth": "page",
"backgroundKind": "solid",
"backgroundColorLight": "#ffffff",
"backgroundColorDark": "#1f2937",
"gradientAngle": 180,
"gradientType": "linear",
"gradientColors": [
{
"light": "",
"dark": "",
"offset": 50
},
{
"light": "",
"dark": "",
"offset": 50
}
],
"gradientColor1Light": "",
"gradientColor1Dark": "",
"gradientColor2Light": "",
"gradientColor2Dark": "",
"backgroundImageSrc": "",
"backgroundImageMode": "cover",
"backgroundRepeatSize": 100,
"backgroundPosition": "center",
"backgroundMotionEnabled": false,
"backgroundMotionDirectionDeg": 0,
"backgroundMotionSpeed": 20,
"backgroundMotionRotateDegPerSec": 0,
"backgroundVideoSrc": "",
"backgroundVideoFit": "cover",
"backgroundVideoLoop": true,
"backgroundVideoRepeatSize": 100,
"backgroundAnimationMode": "particle",
"backgroundAnimShape": "circle",
"backgroundAnimSvgSrc": "",
"backgroundAnimColorMode": "solid",
"backgroundAnimColorLight": "#ffffff88",
"backgroundAnimColorDark": "#ffffff66",
"backgroundAnimSize": 12,
"backgroundAnimJitter": 0.2,
"backgroundParticleCount": 40,
"backgroundParticleLifetimeSec": 4,
"backgroundParticleSpeed": 40,
"backgroundParticleAnimType": "fade",
"backgroundParticleFromSide": "left",
"backgroundParticleToSide": "right",
"backgroundGridStyle": "cells",
"backgroundGridMotionDirectionDeg": 0,
"backgroundGridMotionSpeed": 0,
"backgroundGridRotateDegPerSec": 0,
"backgroundGridHoverGrowLimitPct": 50,
"backgroundGridHoverRotateLimitDeg": 0,
"backgroundGridReactionTimeSec": 1,
"backgroundGridHoverGrow": true,
"backgroundGridHoverRotate": false,
"backgroundGridHoverColor": false,
"backgroundGridHoverColorLight": "#ffffff55",
"backgroundGridHoverColorDark": "#ffffff33",
"backgroundGridReactionSpeed": 1,
"pointerEvents": "auto",
"borderEnabled": true,
"borderStyle": "solid",
"borderColorLight": "#e5e7eb",
"borderColorDark": "rgba(255, 255, 255, 0.1)",
"borderWidth": "sm",
"borderRadius": "md",
"shadowEnabled": true,
"shadowValueLight": "0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1)",
"shadowValueDark": "0 4px 6px -1px rgb(0 0 0 / 0.4)",
"scrollAnimationEnabled": false,
"scrollAnimationType": "fadeIn",
"scrollAnimationDuration": 600,
"scrollAnimationDelay": 0,
"cursorTiltEnabled": false,
"cursorTiltIntensity": 12,
"transformEnabled": false,
"transformRotateX": 0,
"transformRotateY": 0,
"transformRotateZ": 0,
"transformTranslateX": 0,
"transformTranslateY": 0,
"transformTranslateZ": 0,
"transformScale": 1,
"decorationBySelector": {}
}
RowBlock
List
Horizontal flex row of columns. Each column has sizing (
fill/auto/width) and nested content. Use for toolbars and split layouts—not as a substitute for GridBlock galleries.
Examples
Title + action
{
"gap": 12,
"alignItems": "center",
"justifyContent": "space-between",
"columns": [
{
"sizing": "fill",
"content": []
},
{
"sizing": "auto",
"content": []
}
]
}
Fields
Layout
columnsEditor
Editor-only control — does not persist its own value.
Visual editor for row columns. Does not persist its own value — writes columns.
// Writes:
columns: [
{ sizing: "fill", content: [] },
{ sizing: "width", width: 33, content: [] },
{ sizing: "auto", content: [] }
]
columns
Array of columns: each has sizing (fill | auto | width) and content (nested blocks).
fill grows like flex (no unit). auto sizes to content. width uses width / widthByBreakpoint as a percent of the row.
columns: [
{ sizing: "fill", content: [] },
{ sizing: "width", width: 40, widthByBreakpoint: { desktop: 40 }, content: [] },
{ sizing: "auto", content: [] }
]
gap
Unit: px
Gap between columns in pixels.
listLayout
How list items are arranged.
listLayout: "grid"
Visibility
showOnBreakpoints
Per-breakpoint visibility. Set a breakpoint to false to hide the block on that viewport. Missing keys default to visible.
showOnBreakpoints: { mobile: false }
showOnLocales
Limit which website locales show the block. Empty / missing means all enabled locales. Set a locale to false to hide.
showOnLocales: { tr: false }
authVisibility
Who can see the block based on website sign-in state.
Options: all, authenticated, anonymous
authVisibility: "authenticated"
routeLockVisibility
On locked object routes, show always, only when unlocked, or only when locked.
Options: all, when_unlocked, when_locked
routeLockVisibility: "all"
roleVisibility
Optional list of website user role labels. Empty means all roles. Matching is case-sensitive.
roleVisibility: ["moderator"]
entryActionVisibility
Object-component only: show when the current entry exposes matching actions.
Options: all, canUpdate, canDelete
entryActionVisibility: "all"
queryPageVisibility
Optional: limit list blocks to the first query page only.
Options: all, first_page_only
queryPageVisibility: "all"
Spacing & sizing
customizeEnabled
Enables the decoration controls below in the editor.
customizeEnabled: true
paddingEnabled
Turns padding controls on for this block.
paddingEnabled: true
padding
Unit: token
Theme spacing token applied as padding. Tokens let site owners customize spacing while blocks continue to share a consistent design language.
Options: none, xs, sm, md, lg, xl
padding: "md"
paddingByBreakpoint
Unit: token
Theme spacing token per breakpoint. Use this when the block needs different, but still theme-consistent, spacing at different viewport sizes.
paddingByBreakpoint: { desktop: "md", mobile: "sm" }
marginsEnabled
Turns margin controls on (configured via size/position maps).
marginsEnabled: false
sizeByBreakpoint
Optional width/height constraints per breakpoint. Modes: fillParent (stretch), fitContent (intrinsic), static (fixed length via widthStatic/heightStatic + unit), ratio (percent of the other axis via widthRatio/heightRatio).
static uses widthStaticUnit / heightStaticUnit: px, vw, vh, vmin, or vmax (default px). Example full-page background: widthStatic: 100, widthStaticUnit: "vw", heightStatic: 100, heightStaticUnit: "vh" with fixed positioning and pointerEvents: "none". ratio values are percentages of the opposite axis. fillParent and fitContent take no numeric unit.
sizeByBreakpoint: {
desktop: {
widthMode: "static",
widthStatic: 100,
widthStaticUnit: "vw",
heightMode: "static",
heightStatic: 100,
heightStaticUnit: "vh"
}
}
overflow
CSS overflow on the decoration frame.
Options: visible, hidden, auto, clip
overflow: "hidden"
pointerEvents
Whether the decoration frame receives pointer events. Use none for full-page decorative backgrounds so clicks pass through.
Options: auto, none
pointerEvents: "auto"
Position
positionEnabled
Enables absolute/relative positioning overlays.
positionEnabled: false
positionByBreakpoint
Positioning overlays per breakpoint (static, relative, absolute, fixed, sticky) with optional offsets in pixels (top, right, bottom, left).
positionByBreakpoint: {
desktop: { position: "relative", top: 0, left: 0 }
}
Background
backgroundEnabled
Enables background fill, gradient, or image.
backgroundEnabled: true
backgroundWidth
Background span: page column or full viewport bleed.
Options: page, full
backgroundWidth: "page"
backgroundKind
Solid color, gradient, image, muted autoplay video, or canvas animation (particles / reactive grid).
Options: solid, gradient, image, video, animation
backgroundKind: "solid"
backgroundColorLight
Solid background color in light theme.
backgroundColorLight: "#ffffff"
backgroundColorDark
Solid background color in dark theme.
backgroundColorDark: "#111827"
gradientType
Linear, radial, or conic gradient when backgroundKind is gradient.
Options: linear, radial, conic
gradientType: "linear"
gradientAngle
Unit: deg
Linear gradient direction or conic start angle in degrees when backgroundKind is gradient.
gradientAngle: 135
gradientColors
Gradient stops with light/dark pairs and segment offsets (CSS % is the running sum).
gradientColors: [
{ light: "#2563eb", dark: "#1e3a8a", offset: 20 },
{ light: "#93c5fd", dark: "#1e40af", offset: 80 }
]
backgroundImageSrc
Background image source when backgroundKind is image.
backgroundImageSrc: "https://cdn.example/bg.jpg"
backgroundImageMode
How the background image is sized.
Options: cover, contain, repeat
backgroundImageMode: "cover"
backgroundRepeatSize
Unit: px
Tile size in pixels when background image mode is repeat.
backgroundRepeatSize: 64
backgroundPosition
CSS background-position value.
backgroundPosition: "center"
backgroundMotionEnabled
Seamless pan (and optional rotate) for image backgrounds.
backgroundMotionEnabled: true
backgroundMotionDirectionDeg
Unit: deg
Pan direction in degrees (0 = right).
backgroundMotionDirectionDeg: 0
backgroundMotionSpeed
Relative pan speed for seamless cycling.
backgroundMotionSpeed: 20
backgroundMotionRotateDegPerSec
Unit: deg
Continuous rotation speed in degrees per second (0 = off).
backgroundMotionRotateDegPerSec: 0
backgroundVideoSrc
Video URL when backgroundKind is video. Always muted, autoplay, plays inline; never captures focus.
backgroundVideoSrc: "https://cdn.example/bg.mp4"
backgroundVideoFit
cover / fill use object-fit; repeat tiles frames on canvas.
Options: cover, fill, repeat
backgroundVideoFit: "cover"
backgroundVideoLoop
Loop the background video (default true).
backgroundVideoLoop: true
backgroundAnimationMode
Particle field or reactive grid (filled cells or continuous outlines) when backgroundKind is animation.
Options: particle, reactiveGrid
backgroundAnimationMode: "particle"
backgroundAnimShape
Built-in shape or custom SVG for particles/grid cells.
Options: circle, square, roundedSquare, triangle, diamond, hexagon, star, cross, svg
backgroundAnimShape: "circle"
backgroundAnimSvgSrc
SVG URL when shape is svg.
backgroundAnimSvgSrc: "https://cdn.example/shape.svg"
backgroundAnimColorMode
solid tints shapes; fromAsset keeps SVG colors.
Options: solid, fromAsset
backgroundAnimColorMode: "solid"
backgroundAnimSize
Unit: px
Base particle or cell size in pixels.
backgroundAnimSize: 12
backgroundAnimJitter
Particle-only 0–1 randomization for count, size, lifetime, and speed.
backgroundAnimJitter: 0.2
backgroundGridStyle
Reactive grid rendering: filled cells, or continuous shape outlines tiled edge-to-edge into one connected lattice that ripples around the cursor. Ignored for svg shapes, which always render as cells.
Options: cells, continuous
backgroundGridStyle: "cells"
backgroundGridHoverGrowLimitPct
Unit: %
Maximum cell size change at the pointer. Positive values grow cells; negative values shrink them. A value of 50 reaches 150% scale after the configured reaction time.
backgroundGridHoverGrowLimitPct: 50
backgroundGridHoverRotateLimitDeg
Unit: deg
Maximum cell rotation at the pointer. Positive values rotate clockwise; negative values rotate counterclockwise.
backgroundGridHoverRotateLimitDeg: 0
backgroundGridReactionTimeSec
Unit: s
Seconds for cells or the continuous-grid ripple to reach their configured hover limit, and to return after the pointer leaves.
backgroundGridReactionTimeSec: 1
Border
borderEnabled
Enables border color, style, width, and radius.
borderEnabled: false
borderColorLight
Border color in light theme.
borderColorLight: "#e5e7eb"
borderColorDark
Border color in dark theme.
borderColorDark: "#374151"
borderStyle
CSS border style.
Options: solid, dashed, dotted
borderStyle: "solid"
borderWidth
Unit: token
Border width token.
Options: none, sm, md, lg
borderWidth: "sm"
borderRadius
Unit: token
Border radius token.
Options: none, sm, md, lg, xl, full
borderRadius: "md"
Shadow
shadowEnabled
Enables box shadow values for light/dark themes.
shadowEnabled: false
shadowValueLight
CSS box-shadow value in light theme.
shadowValueLight: "0 8px 24px rgba(0, 0, 0, 0.12)"
shadowValueDark
CSS box-shadow value in dark theme.
shadowValueDark: "0 8px 24px rgba(0, 0, 0, 0.45)"
Motion & transform
scrollAnimationEnabled
Enables enter-on-scroll animation.
scrollAnimationEnabled: false
scrollAnimationType
Enter-on-scroll animation preset.
Options: fadeIn, slideInBottom, slideInTop, slideInLeft, slideInRight, zoomIn, zoomOut, rotateIn, rotateOut, bounceIn, bounceOut, pulse
scrollAnimationType: "fadeIn"
scrollAnimationDuration
Unit: ms
Animation duration in milliseconds.
scrollAnimationDuration: 600
scrollAnimationDelay
Unit: ms
Animation delay in milliseconds.
scrollAnimationDelay: 0
cursorTiltEnabled
Tilts the block slightly toward the pointer.
cursorTiltEnabled: false
cursorTiltIntensity
Strength of the cursor tilt effect.
cursorTiltIntensity: 8
transformEnabled
Enables CSS transform controls.
transformEnabled: false
transformRotateX
Unit: deg
Rotation around the X axis in degrees.
transformRotateX: 0
transformRotateY
Unit: deg
Rotation around the Y axis in degrees.
transformRotateY: 0
transformRotateZ
Unit: deg
Rotation around the Z axis in degrees.
transformRotateZ: 0
transformTranslateX
Unit: px
Horizontal translation in pixels.
transformTranslateX: 0
transformTranslateY
Unit: px
Vertical translation in pixels.
transformTranslateY: 0
transformTranslateZ
Unit: px
Depth translation in pixels.
transformTranslateZ: 0
transformScale
Unit: ratio
Uniform scale factor (unitless).
transformScale: 1
transformPerspective
Unit: px
CSS perspective distance in pixels.
transformPerspective: 800
Advanced
decorationBySelector
Advanced: apply decoration token overlays for hover, active, and focus. Missing overlay keys inherit the default flat props.
decorationBySelector: {
hover: { backgroundColorLight: "#f3f4f6" }
}
clipboard
Editor-only control — does not persist its own value.
Editor-only copy/paste helpers for block props.
// Editor-only — does not persist a stored value
Default props
{
"showOnBreakpoints": {},
"showOnLocales": {},
"authVisibility": "all",
"routeLockVisibility": "all",
"roleVisibility": [],
"entryActionVisibility": "all",
"queryPageVisibility": "all",
"customizeEnabled": false,
"padding": "none",
"paddingEnabled": false,
"sizeByBreakpoint": {},
"marginsEnabled": false,
"positionEnabled": false,
"positionByBreakpoint": {},
"backgroundEnabled": false,
"backgroundWidth": "page",
"backgroundKind": "solid",
"backgroundColorLight": "",
"backgroundColorDark": "",
"gradientAngle": 180,
"gradientType": "linear",
"gradientColors": [
{
"light": "",
"dark": "",
"offset": 50
},
{
"light": "",
"dark": "",
"offset": 50
}
],
"gradientColor1Light": "",
"gradientColor1Dark": "",
"gradientColor2Light": "",
"gradientColor2Dark": "",
"backgroundImageSrc": "",
"backgroundImageMode": "cover",
"backgroundRepeatSize": 100,
"backgroundPosition": "center",
"backgroundMotionEnabled": false,
"backgroundMotionDirectionDeg": 0,
"backgroundMotionSpeed": 20,
"backgroundMotionRotateDegPerSec": 0,
"backgroundVideoSrc": "",
"backgroundVideoFit": "cover",
"backgroundVideoLoop": true,
"backgroundVideoRepeatSize": 100,
"backgroundAnimationMode": "particle",
"backgroundAnimShape": "circle",
"backgroundAnimSvgSrc": "",
"backgroundAnimColorMode": "solid",
"backgroundAnimColorLight": "#ffffff88",
"backgroundAnimColorDark": "#ffffff66",
"backgroundAnimSize": 12,
"backgroundAnimJitter": 0.2,
"backgroundParticleCount": 40,
"backgroundParticleLifetimeSec": 4,
"backgroundParticleSpeed": 40,
"backgroundParticleAnimType": "fade",
"backgroundParticleFromSide": "left",
"backgroundParticleToSide": "right",
"backgroundGridStyle": "cells",
"backgroundGridMotionDirectionDeg": 0,
"backgroundGridMotionSpeed": 0,
"backgroundGridRotateDegPerSec": 0,
"backgroundGridHoverGrowLimitPct": 50,
"backgroundGridHoverRotateLimitDeg": 0,
"backgroundGridReactionTimeSec": 1,
"backgroundGridHoverGrow": true,
"backgroundGridHoverRotate": false,
"backgroundGridHoverColor": false,
"backgroundGridHoverColorLight": "#ffffff55",
"backgroundGridHoverColorDark": "#ffffff33",
"backgroundGridReactionSpeed": 1,
"pointerEvents": "auto",
"borderEnabled": false,
"borderStyle": "solid",
"borderColorLight": "",
"borderColorDark": "",
"shadowEnabled": false,
"shadowValueLight": "",
"shadowValueDark": "",
"scrollAnimationEnabled": false,
"scrollAnimationType": "fadeIn",
"scrollAnimationDuration": 600,
"scrollAnimationDelay": 0,
"cursorTiltEnabled": false,
"cursorTiltIntensity": 12,
"transformEnabled": false,
"transformRotateX": 0,
"transformRotateY": 0,
"transformRotateZ": 0,
"transformTranslateX": 0,
"transformTranslateY": 0,
"transformTranslateZ": 0,
"transformScale": 1,
"decorationBySelector": {},
"columns": [
{
"sizing": "auto",
"content": []
},
{
"sizing": "auto",
"content": []
}
],
"gap": 0,
"justifyContent": "center",
"alignItems": "center",
"columnJustifyContent": "center",
"flexWrap": false
}
GridBlock
Grid
CSS grid for multi-column page sections (e.g. main + sidebar). Configure columns/gaps per breakpoint rather than nesting many RowBlocks.
Fields
Layout
cellsEditor
Editor-only control — does not persist its own value.
Visual editor for grid cells. Does not persist its own value — writes cells.
// Writes:
cells: [
{ columnSpan: 1, rowSpan: 1, content: [] }
]
cells
Grid cells with optional column/row span and nested content.
cells: [
{ columnSpan: 1, rowSpan: 1, content: [] }
]
gridLayout
Editor-only control — does not persist its own value.
Editor control for grid columns, gaps, and alignment per breakpoint. Does not persist its own value.
// Writes:
columnsByBreakpoint: { desktop: 3 }
columnGap: 16
rowGap: 16
Other
main
Primary column content (nested blocks).
side
Optional side column content.
Visibility
showOnBreakpoints
Per-breakpoint visibility. Set a breakpoint to false to hide the block on that viewport. Missing keys default to visible.
showOnBreakpoints: { mobile: false }
showOnLocales
Limit which website locales show the block. Empty / missing means all enabled locales. Set a locale to false to hide.
showOnLocales: { tr: false }
authVisibility
Who can see the block based on website sign-in state.
Options: all, authenticated, anonymous
authVisibility: "authenticated"
routeLockVisibility
On locked object routes, show always, only when unlocked, or only when locked.
Options: all, when_unlocked, when_locked
routeLockVisibility: "all"
roleVisibility
Optional list of website user role labels. Empty means all roles. Matching is case-sensitive.
roleVisibility: ["moderator"]
entryActionVisibility
Object-component only: show when the current entry exposes matching actions.
Options: all, canUpdate, canDelete
entryActionVisibility: "all"
queryPageVisibility
Optional: limit list blocks to the first query page only.
Options: all, first_page_only
queryPageVisibility: "all"
Spacing & sizing
customizeEnabled
Enables the decoration controls below in the editor.
customizeEnabled: true
paddingEnabled
Turns padding controls on for this block.
paddingEnabled: true
padding
Unit: token
Theme spacing token applied as padding. Tokens let site owners customize spacing while blocks continue to share a consistent design language.
Options: none, xs, sm, md, lg, xl
padding: "md"
paddingByBreakpoint
Unit: token
Theme spacing token per breakpoint. Use this when the block needs different, but still theme-consistent, spacing at different viewport sizes.
paddingByBreakpoint: { desktop: "md", mobile: "sm" }
marginsEnabled
Turns margin controls on (configured via size/position maps).
marginsEnabled: false
sizeByBreakpoint
Optional width/height constraints per breakpoint. Modes: fillParent (stretch), fitContent (intrinsic), static (fixed length via widthStatic/heightStatic + unit), ratio (percent of the other axis via widthRatio/heightRatio).
static uses widthStaticUnit / heightStaticUnit: px, vw, vh, vmin, or vmax (default px). Example full-page background: widthStatic: 100, widthStaticUnit: "vw", heightStatic: 100, heightStaticUnit: "vh" with fixed positioning and pointerEvents: "none". ratio values are percentages of the opposite axis. fillParent and fitContent take no numeric unit.
sizeByBreakpoint: {
desktop: {
widthMode: "static",
widthStatic: 100,
widthStaticUnit: "vw",
heightMode: "static",
heightStatic: 100,
heightStaticUnit: "vh"
}
}
overflow
CSS overflow on the decoration frame.
Options: visible, hidden, auto, clip
overflow: "hidden"
pointerEvents
Whether the decoration frame receives pointer events. Use none for full-page decorative backgrounds so clicks pass through.
Options: auto, none
pointerEvents: "auto"
Position
positionEnabled
Enables absolute/relative positioning overlays.
positionEnabled: false
positionByBreakpoint
Positioning overlays per breakpoint (static, relative, absolute, fixed, sticky) with optional offsets in pixels (top, right, bottom, left).
positionByBreakpoint: {
desktop: { position: "relative", top: 0, left: 0 }
}
Background
backgroundEnabled
Enables background fill, gradient, or image.
backgroundEnabled: true
backgroundWidth
Background span: page column or full viewport bleed.
Options: page, full
backgroundWidth: "page"
backgroundKind
Solid color, gradient, image, muted autoplay video, or canvas animation (particles / reactive grid).
Options: solid, gradient, image, video, animation
backgroundKind: "solid"
backgroundColorLight
Solid background color in light theme.
backgroundColorLight: "#ffffff"
backgroundColorDark
Solid background color in dark theme.
backgroundColorDark: "#111827"
gradientType
Linear, radial, or conic gradient when backgroundKind is gradient.
Options: linear, radial, conic
gradientType: "linear"
gradientAngle
Unit: deg
Linear gradient direction or conic start angle in degrees when backgroundKind is gradient.
gradientAngle: 135
gradientColors
Gradient stops with light/dark pairs and segment offsets (CSS % is the running sum).
gradientColors: [
{ light: "#2563eb", dark: "#1e3a8a", offset: 20 },
{ light: "#93c5fd", dark: "#1e40af", offset: 80 }
]
backgroundImageSrc
Background image source when backgroundKind is image.
backgroundImageSrc: "https://cdn.example/bg.jpg"
backgroundImageMode
How the background image is sized.
Options: cover, contain, repeat
backgroundImageMode: "cover"
backgroundRepeatSize
Unit: px
Tile size in pixels when background image mode is repeat.
backgroundRepeatSize: 64
backgroundPosition
CSS background-position value.
backgroundPosition: "center"
backgroundMotionEnabled
Seamless pan (and optional rotate) for image backgrounds.
backgroundMotionEnabled: true
backgroundMotionDirectionDeg
Unit: deg
Pan direction in degrees (0 = right).
backgroundMotionDirectionDeg: 0
backgroundMotionSpeed
Relative pan speed for seamless cycling.
backgroundMotionSpeed: 20
backgroundMotionRotateDegPerSec
Unit: deg
Continuous rotation speed in degrees per second (0 = off).
backgroundMotionRotateDegPerSec: 0
backgroundVideoSrc
Video URL when backgroundKind is video. Always muted, autoplay, plays inline; never captures focus.
backgroundVideoSrc: "https://cdn.example/bg.mp4"
backgroundVideoFit
cover / fill use object-fit; repeat tiles frames on canvas.
Options: cover, fill, repeat
backgroundVideoFit: "cover"
backgroundVideoLoop
Loop the background video (default true).
backgroundVideoLoop: true
backgroundAnimationMode
Particle field or reactive grid (filled cells or continuous outlines) when backgroundKind is animation.
Options: particle, reactiveGrid
backgroundAnimationMode: "particle"
backgroundAnimShape
Built-in shape or custom SVG for particles/grid cells.
Options: circle, square, roundedSquare, triangle, diamond, hexagon, star, cross, svg
backgroundAnimShape: "circle"
backgroundAnimSvgSrc
SVG URL when shape is svg.
backgroundAnimSvgSrc: "https://cdn.example/shape.svg"
backgroundAnimColorMode
solid tints shapes; fromAsset keeps SVG colors.
Options: solid, fromAsset
backgroundAnimColorMode: "solid"
backgroundAnimSize
Unit: px
Base particle or cell size in pixels.
backgroundAnimSize: 12
backgroundAnimJitter
Particle-only 0–1 randomization for count, size, lifetime, and speed.
backgroundAnimJitter: 0.2
backgroundGridStyle
Reactive grid rendering: filled cells, or continuous shape outlines tiled edge-to-edge into one connected lattice that ripples around the cursor. Ignored for svg shapes, which always render as cells.
Options: cells, continuous
backgroundGridStyle: "cells"
backgroundGridHoverGrowLimitPct
Unit: %
Maximum cell size change at the pointer. Positive values grow cells; negative values shrink them. A value of 50 reaches 150% scale after the configured reaction time.
backgroundGridHoverGrowLimitPct: 50
backgroundGridHoverRotateLimitDeg
Unit: deg
Maximum cell rotation at the pointer. Positive values rotate clockwise; negative values rotate counterclockwise.
backgroundGridHoverRotateLimitDeg: 0
backgroundGridReactionTimeSec
Unit: s
Seconds for cells or the continuous-grid ripple to reach their configured hover limit, and to return after the pointer leaves.
backgroundGridReactionTimeSec: 1
Border
borderEnabled
Enables border color, style, width, and radius.
borderEnabled: false
borderColorLight
Border color in light theme.
borderColorLight: "#e5e7eb"
borderColorDark
Border color in dark theme.
borderColorDark: "#374151"
borderStyle
CSS border style.
Options: solid, dashed, dotted
borderStyle: "solid"
borderWidth
Unit: token
Border width token.
Options: none, sm, md, lg
borderWidth: "sm"
borderRadius
Unit: token
Border radius token.
Options: none, sm, md, lg, xl, full
borderRadius: "md"
Shadow
shadowEnabled
Enables box shadow values for light/dark themes.
shadowEnabled: false
shadowValueLight
CSS box-shadow value in light theme.
shadowValueLight: "0 8px 24px rgba(0, 0, 0, 0.12)"
shadowValueDark
CSS box-shadow value in dark theme.
shadowValueDark: "0 8px 24px rgba(0, 0, 0, 0.45)"
Motion & transform
scrollAnimationEnabled
Enables enter-on-scroll animation.
scrollAnimationEnabled: false
scrollAnimationType
Enter-on-scroll animation preset.
Options: fadeIn, slideInBottom, slideInTop, slideInLeft, slideInRight, zoomIn, zoomOut, rotateIn, rotateOut, bounceIn, bounceOut, pulse
scrollAnimationType: "fadeIn"
scrollAnimationDuration
Unit: ms
Animation duration in milliseconds.
scrollAnimationDuration: 600
scrollAnimationDelay
Unit: ms
Animation delay in milliseconds.
scrollAnimationDelay: 0
cursorTiltEnabled
Tilts the block slightly toward the pointer.
cursorTiltEnabled: false
cursorTiltIntensity
Strength of the cursor tilt effect.
cursorTiltIntensity: 8
transformEnabled
Enables CSS transform controls.
transformEnabled: false
transformRotateX
Unit: deg
Rotation around the X axis in degrees.
transformRotateX: 0
transformRotateY
Unit: deg
Rotation around the Y axis in degrees.
transformRotateY: 0
transformRotateZ
Unit: deg
Rotation around the Z axis in degrees.
transformRotateZ: 0
transformTranslateX
Unit: px
Horizontal translation in pixels.
transformTranslateX: 0
transformTranslateY
Unit: px
Vertical translation in pixels.
transformTranslateY: 0
transformTranslateZ
Unit: px
Depth translation in pixels.
transformTranslateZ: 0
transformScale
Unit: ratio
Uniform scale factor (unitless).
transformScale: 1
transformPerspective
Unit: px
CSS perspective distance in pixels.
transformPerspective: 800
Advanced
decorationBySelector
Advanced: apply decoration token overlays for hover, active, and focus. Missing overlay keys inherit the default flat props.
decorationBySelector: {
hover: { backgroundColorLight: "#f3f4f6" }
}
clipboard
Editor-only control — does not persist its own value.
Editor-only copy/paste helpers for block props.
// Editor-only — does not persist a stored value
Default props
{
"showOnBreakpoints": {},
"showOnLocales": {},
"authVisibility": "all",
"routeLockVisibility": "all",
"roleVisibility": [],
"entryActionVisibility": "all",
"queryPageVisibility": "all",
"customizeEnabled": false,
"padding": "none",
"paddingEnabled": false,
"sizeByBreakpoint": {},
"marginsEnabled": false,
"positionEnabled": false,
"positionByBreakpoint": {},
"backgroundEnabled": false,
"backgroundWidth": "page",
"backgroundKind": "solid",
"backgroundColorLight": "",
"backgroundColorDark": "",
"gradientAngle": 180,
"gradientType": "linear",
"gradientColors": [
{
"light": "",
"dark": "",
"offset": 50
},
{
"light": "",
"dark": "",
"offset": 50
}
],
"gradientColor1Light": "",
"gradientColor1Dark": "",
"gradientColor2Light": "",
"gradientColor2Dark": "",
"backgroundImageSrc": "",
"backgroundImageMode": "cover",
"backgroundRepeatSize": 100,
"backgroundPosition": "center",
"backgroundMotionEnabled": false,
"backgroundMotionDirectionDeg": 0,
"backgroundMotionSpeed": 20,
"backgroundMotionRotateDegPerSec": 0,
"backgroundVideoSrc": "",
"backgroundVideoFit": "cover",
"backgroundVideoLoop": true,
"backgroundVideoRepeatSize": 100,
"backgroundAnimationMode": "particle",
"backgroundAnimShape": "circle",
"backgroundAnimSvgSrc": "",
"backgroundAnimColorMode": "solid",
"backgroundAnimColorLight": "#ffffff88",
"backgroundAnimColorDark": "#ffffff66",
"backgroundAnimSize": 12,
"backgroundAnimJitter": 0.2,
"backgroundParticleCount": 40,
"backgroundParticleLifetimeSec": 4,
"backgroundParticleSpeed": 40,
"backgroundParticleAnimType": "fade",
"backgroundParticleFromSide": "left",
"backgroundParticleToSide": "right",
"backgroundGridStyle": "cells",
"backgroundGridMotionDirectionDeg": 0,
"backgroundGridMotionSpeed": 0,
"backgroundGridRotateDegPerSec": 0,
"backgroundGridHoverGrowLimitPct": 50,
"backgroundGridHoverRotateLimitDeg": 0,
"backgroundGridReactionTimeSec": 1,
"backgroundGridHoverGrow": true,
"backgroundGridHoverRotate": false,
"backgroundGridHoverColor": false,
"backgroundGridHoverColorLight": "#ffffff55",
"backgroundGridHoverColorDark": "#ffffff33",
"backgroundGridReactionSpeed": 1,
"pointerEvents": "auto",
"borderEnabled": false,
"borderStyle": "solid",
"borderColorLight": "",
"borderColorDark": "",
"shadowEnabled": false,
"shadowValueLight": "",
"shadowValueDark": "",
"scrollAnimationEnabled": false,
"scrollAnimationType": "fadeIn",
"scrollAnimationDuration": 600,
"scrollAnimationDelay": 0,
"cursorTiltEnabled": false,
"cursorTiltIntensity": 12,
"transformEnabled": false,
"transformRotateX": 0,
"transformRotateY": 0,
"transformRotateZ": 0,
"transformTranslateX": 0,
"transformTranslateY": 0,
"transformTranslateZ": 0,
"transformScale": 1,
"decorationBySelector": {},
"cells": [
{
"columnSpan": 1,
"rowSpan": 1,
"content": []
}
],
"columnsByBreakpoint": {},
"columnGap": 16,
"rowGap": 16,
"columnGapByBreakpoint": {},
"rowGapByBreakpoint": {},
"justifyItems": "stretch",
"alignItems": "stretch",
"justifyContent": "stretch",
"alignContent": "stretch",
"justifyItemsByBreakpoint": {},
"alignItemsByBreakpoint": {},
"justifyContentByBreakpoint": {},
"alignContentByBreakpoint": {}
}
HeadingBlock
Heading
Primary text hierarchy. Prefer one h1 per page; use h2/h3 for sections and subsections.
Examples
Section heading
{
"text": "Latest threads",
"level": "h2",
"fontSize": 28
}
Fields
Content
text
The string value of the heading.
text: "My Heading"
Semantics & behavior
level
Semantic heading level for the rendered element.
The semantic heading level describes the hierarchy and structure of the content on a page. It is generally recommended that each page have one primary H1 heading, with H2, H3, and subsequent headings used to organize subsections logically. Using multiple H1 headings is generally not recommended when they represent multiple unrelated page topics.
A clear heading hierarchy benefits visitors, screen-reader users, search-engine crawlers, and AI agents by making the page structure easier to understand and navigate.
level: "h2"
Media
icon
The icon displayed to the left of the heading.
icon: "none"
Typography
textAlign
Horizontal text alignment.
textAlign: "center"
fontFamily
Font family id. Theme tokens (theme-heading, theme-body, theme-mono) or a rich-text font id.
fontFamily: "theme-heading"
fontSize
Unit: px
Font size in pixels.
fontSize: 48
fontWeight
Numeric font weight (CSS font-weight).
fontWeight: 600
italic
When true, renders the text in italic style.
italic: false
underlineMode
Underline rendering mode for decorated text.
underlineMode: "inline"
Colors
textColorLight
Text color used in light theme.
textColorLight: "#111827"
textColorDark
Text color used in dark theme.
textColorDark: "#f9fafb"
Text decoration
decorationEnabled
Toggles an underline or accent decoration under the text.
decorationEnabled: true
decorationSize
Editor-only control — does not persist its own value.
Editor control for decoration width, thickness, and spacing. Does not persist its own value.
// Writes:
decorationWidth: 96
decorationThickness: 8
decorationSpacing: 12
decorationWidth
Unit: px
Width of the text decoration line in pixels.
decorationWidth: 96
decorationThickness
Unit: px
Stroke thickness of the text decoration in pixels.
decorationThickness: 8
decorationSpacing
Unit: px
Gap between the text and its decoration in pixels.
decorationSpacing: 12
decorationColorLight
Decoration color in light theme.
decorationColorLight: "#2563eb"
decorationColorDark
Decoration color in dark theme.
decorationColorDark: "#60a5fa"
textShadowEnabled
Enables a drop shadow behind the text.
textShadowEnabled: false
textShadowSize
Editor-only control — does not persist its own value.
Editor control for shadow offset and blur. Does not persist its own value.
// Writes:
textShadowOffsetX: 3
textShadowOffsetY: 3
textShadowBlur: 0
textShadowOffsetX
Unit: px
Horizontal offset of the text shadow in pixels.
textShadowOffsetX: 3
textShadowOffsetY
Unit: px
Vertical offset of the text shadow in pixels.
textShadowOffsetY: 3
textShadowBlur
Unit: px
Blur radius of the text shadow in pixels.
textShadowBlur: 0
textShadowColorLight
Text shadow color in light theme.
textShadowColorLight: "rgba(0, 0, 0, 0.55)"
textShadowColorDark
Text shadow color in dark theme.
textShadowColorDark: "rgba(0, 0, 0, 0.75)"
Visibility
showOnBreakpoints
Per-breakpoint visibility. Set a breakpoint to false to hide the block on that viewport. Missing keys default to visible.
showOnBreakpoints: { mobile: false }
showOnLocales
Limit which website locales show the block. Empty / missing means all enabled locales. Set a locale to false to hide.
showOnLocales: { tr: false }
authVisibility
Who can see the block based on website sign-in state.
Options: all, authenticated, anonymous
authVisibility: "authenticated"
routeLockVisibility
On locked object routes, show always, only when unlocked, or only when locked.
Options: all, when_unlocked, when_locked
routeLockVisibility: "all"
roleVisibility
Optional list of website user role labels. Empty means all roles. Matching is case-sensitive.
roleVisibility: ["moderator"]
entryActionVisibility
Object-component only: show when the current entry exposes matching actions.
Options: all, canUpdate, canDelete
entryActionVisibility: "all"
queryPageVisibility
Optional: limit list blocks to the first query page only.
Options: all, first_page_only
queryPageVisibility: "all"
Spacing & sizing
customizeEnabled
Enables the decoration controls below in the editor.
customizeEnabled: true
paddingEnabled
Turns padding controls on for this block.
paddingEnabled: true
padding
Unit: token
Theme spacing token applied as padding. Tokens let site owners customize spacing while blocks continue to share a consistent design language.
Options: none, xs, sm, md, lg, xl
padding: "md"
paddingByBreakpoint
Unit: token
Theme spacing token per breakpoint. Use this when the block needs different, but still theme-consistent, spacing at different viewport sizes.
paddingByBreakpoint: { desktop: "md", mobile: "sm" }
marginsEnabled
Turns margin controls on (configured via size/position maps).
marginsEnabled: false
sizeByBreakpoint
Optional width/height constraints per breakpoint. Modes: fillParent (stretch), fitContent (intrinsic), static (fixed length via widthStatic/heightStatic + unit), ratio (percent of the other axis via widthRatio/heightRatio).
static uses widthStaticUnit / heightStaticUnit: px, vw, vh, vmin, or vmax (default px). Example full-page background: widthStatic: 100, widthStaticUnit: "vw", heightStatic: 100, heightStaticUnit: "vh" with fixed positioning and pointerEvents: "none". ratio values are percentages of the opposite axis. fillParent and fitContent take no numeric unit.
sizeByBreakpoint: {
desktop: {
widthMode: "static",
widthStatic: 100,
widthStaticUnit: "vw",
heightMode: "static",
heightStatic: 100,
heightStaticUnit: "vh"
}
}
overflow
CSS overflow on the decoration frame.
Options: visible, hidden, auto, clip
overflow: "hidden"
pointerEvents
Whether the decoration frame receives pointer events. Use none for full-page decorative backgrounds so clicks pass through.
Options: auto, none
pointerEvents: "auto"
Position
positionEnabled
Enables absolute/relative positioning overlays.
positionEnabled: false
positionByBreakpoint
Positioning overlays per breakpoint (static, relative, absolute, fixed, sticky) with optional offsets in pixels (top, right, bottom, left).
positionByBreakpoint: {
desktop: { position: "relative", top: 0, left: 0 }
}
Background
backgroundEnabled
Enables background fill, gradient, or image.
backgroundEnabled: true
backgroundWidth
Background span: page column or full viewport bleed.
Options: page, full
backgroundWidth: "page"
backgroundKind
Solid color, gradient, image, muted autoplay video, or canvas animation (particles / reactive grid).
Options: solid, gradient, image, video, animation
backgroundKind: "solid"
backgroundColorLight
Solid background color in light theme.
backgroundColorLight: "#ffffff"
backgroundColorDark
Solid background color in dark theme.
backgroundColorDark: "#111827"
gradientType
Linear, radial, or conic gradient when backgroundKind is gradient.
Options: linear, radial, conic
gradientType: "linear"
gradientAngle
Unit: deg
Linear gradient direction or conic start angle in degrees when backgroundKind is gradient.
gradientAngle: 135
gradientColors
Gradient stops with light/dark pairs and segment offsets (CSS % is the running sum).
gradientColors: [
{ light: "#2563eb", dark: "#1e3a8a", offset: 20 },
{ light: "#93c5fd", dark: "#1e40af", offset: 80 }
]
backgroundImageSrc
Background image source when backgroundKind is image.
backgroundImageSrc: "https://cdn.example/bg.jpg"
backgroundImageMode
How the background image is sized.
Options: cover, contain, repeat
backgroundImageMode: "cover"
backgroundRepeatSize
Unit: px
Tile size in pixels when background image mode is repeat.
backgroundRepeatSize: 64
backgroundPosition
CSS background-position value.
backgroundPosition: "center"
backgroundMotionEnabled
Seamless pan (and optional rotate) for image backgrounds.
backgroundMotionEnabled: true
backgroundMotionDirectionDeg
Unit: deg
Pan direction in degrees (0 = right).
backgroundMotionDirectionDeg: 0
backgroundMotionSpeed
Relative pan speed for seamless cycling.
backgroundMotionSpeed: 20
backgroundMotionRotateDegPerSec
Unit: deg
Continuous rotation speed in degrees per second (0 = off).
backgroundMotionRotateDegPerSec: 0
backgroundVideoSrc
Video URL when backgroundKind is video. Always muted, autoplay, plays inline; never captures focus.
backgroundVideoSrc: "https://cdn.example/bg.mp4"
backgroundVideoFit
cover / fill use object-fit; repeat tiles frames on canvas.
Options: cover, fill, repeat
backgroundVideoFit: "cover"
backgroundVideoLoop
Loop the background video (default true).
backgroundVideoLoop: true
backgroundAnimationMode
Particle field or reactive grid (filled cells or continuous outlines) when backgroundKind is animation.
Options: particle, reactiveGrid
backgroundAnimationMode: "particle"
backgroundAnimShape
Built-in shape or custom SVG for particles/grid cells.
Options: circle, square, roundedSquare, triangle, diamond, hexagon, star, cross, svg
backgroundAnimShape: "circle"
backgroundAnimSvgSrc
SVG URL when shape is svg.
backgroundAnimSvgSrc: "https://cdn.example/shape.svg"
backgroundAnimColorMode
solid tints shapes; fromAsset keeps SVG colors.
Options: solid, fromAsset
backgroundAnimColorMode: "solid"
backgroundAnimSize
Unit: px
Base particle or cell size in pixels.
backgroundAnimSize: 12
backgroundAnimJitter
Particle-only 0–1 randomization for count, size, lifetime, and speed.
backgroundAnimJitter: 0.2
backgroundGridStyle
Reactive grid rendering: filled cells, or continuous shape outlines tiled edge-to-edge into one connected lattice that ripples around the cursor. Ignored for svg shapes, which always render as cells.
Options: cells, continuous
backgroundGridStyle: "cells"
backgroundGridHoverGrowLimitPct
Unit: %
Maximum cell size change at the pointer. Positive values grow cells; negative values shrink them. A value of 50 reaches 150% scale after the configured reaction time.
backgroundGridHoverGrowLimitPct: 50
backgroundGridHoverRotateLimitDeg
Unit: deg
Maximum cell rotation at the pointer. Positive values rotate clockwise; negative values rotate counterclockwise.
backgroundGridHoverRotateLimitDeg: 0
backgroundGridReactionTimeSec
Unit: s
Seconds for cells or the continuous-grid ripple to reach their configured hover limit, and to return after the pointer leaves.
backgroundGridReactionTimeSec: 1
Border
borderEnabled
Enables border color, style, width, and radius.
borderEnabled: false
borderColorLight
Border color in light theme.
borderColorLight: "#e5e7eb"
borderColorDark
Border color in dark theme.
borderColorDark: "#374151"
borderStyle
CSS border style.
Options: solid, dashed, dotted
borderStyle: "solid"
borderWidth
Unit: token
Border width token.
Options: none, sm, md, lg
borderWidth: "sm"
borderRadius
Unit: token
Border radius token.
Options: none, sm, md, lg, xl, full
borderRadius: "md"
Shadow
shadowEnabled
Enables box shadow values for light/dark themes.
shadowEnabled: false
shadowValueLight
CSS box-shadow value in light theme.
shadowValueLight: "0 8px 24px rgba(0, 0, 0, 0.12)"
shadowValueDark
CSS box-shadow value in dark theme.
shadowValueDark: "0 8px 24px rgba(0, 0, 0, 0.45)"
Motion & transform
scrollAnimationEnabled
Enables enter-on-scroll animation.
scrollAnimationEnabled: false
scrollAnimationType
Enter-on-scroll animation preset.
Options: fadeIn, slideInBottom, slideInTop, slideInLeft, slideInRight, zoomIn, zoomOut, rotateIn, rotateOut, bounceIn, bounceOut, pulse
scrollAnimationType: "fadeIn"
scrollAnimationDuration
Unit: ms
Animation duration in milliseconds.
scrollAnimationDuration: 600
scrollAnimationDelay
Unit: ms
Animation delay in milliseconds.
scrollAnimationDelay: 0
cursorTiltEnabled
Tilts the block slightly toward the pointer.
cursorTiltEnabled: false
cursorTiltIntensity
Strength of the cursor tilt effect.
cursorTiltIntensity: 8
transformEnabled
Enables CSS transform controls.
transformEnabled: false
transformRotateX
Unit: deg
Rotation around the X axis in degrees.
transformRotateX: 0
transformRotateY
Unit: deg
Rotation around the Y axis in degrees.
transformRotateY: 0
transformRotateZ
Unit: deg
Rotation around the Z axis in degrees.
transformRotateZ: 0
transformTranslateX
Unit: px
Horizontal translation in pixels.
transformTranslateX: 0
transformTranslateY
Unit: px
Vertical translation in pixels.
transformTranslateY: 0
transformTranslateZ
Unit: px
Depth translation in pixels.
transformTranslateZ: 0
transformScale
Unit: ratio
Uniform scale factor (unitless).
transformScale: 1
transformPerspective
Unit: px
CSS perspective distance in pixels.
transformPerspective: 800
Advanced
decorationBySelector
Advanced: apply decoration token overlays for hover, active, and focus. Missing overlay keys inherit the default flat props.
decorationBySelector: {
hover: { backgroundColorLight: "#f3f4f6" }
}
clipboard
Editor-only control — does not persist its own value.
Editor-only copy/paste helpers for block props.
// Editor-only — does not persist a stored value
Default props
{
"showOnBreakpoints": {},
"showOnLocales": {},
"authVisibility": "all",
"routeLockVisibility": "all",
"roleVisibility": [],
"entryActionVisibility": "all",
"queryPageVisibility": "all",
"customizeEnabled": false,
"padding": "none",
"paddingEnabled": false,
"sizeByBreakpoint": {},
"marginsEnabled": false,
"positionEnabled": false,
"positionByBreakpoint": {},
"backgroundEnabled": false,
"backgroundWidth": "page",
"backgroundKind": "solid",
"backgroundColorLight": "",
"backgroundColorDark": "",
"gradientAngle": 180,
"gradientType": "linear",
"gradientColors": [
{
"light": "",
"dark": "",
"offset": 50
},
{
"light": "",
"dark": "",
"offset": 50
}
],
"gradientColor1Light": "",
"gradientColor1Dark": "",
"gradientColor2Light": "",
"gradientColor2Dark": "",
"backgroundImageSrc": "",
"backgroundImageMode": "cover",
"backgroundRepeatSize": 100,
"backgroundPosition": "center",
"backgroundMotionEnabled": false,
"backgroundMotionDirectionDeg": 0,
"backgroundMotionSpeed": 20,
"backgroundMotionRotateDegPerSec": 0,
"backgroundVideoSrc": "",
"backgroundVideoFit": "cover",
"backgroundVideoLoop": true,
"backgroundVideoRepeatSize": 100,
"backgroundAnimationMode": "particle",
"backgroundAnimShape": "circle",
"backgroundAnimSvgSrc": "",
"backgroundAnimColorMode": "solid",
"backgroundAnimColorLight": "#ffffff88",
"backgroundAnimColorDark": "#ffffff66",
"backgroundAnimSize": 12,
"backgroundAnimJitter": 0.2,
"backgroundParticleCount": 40,
"backgroundParticleLifetimeSec": 4,
"backgroundParticleSpeed": 40,
"backgroundParticleAnimType": "fade",
"backgroundParticleFromSide": "left",
"backgroundParticleToSide": "right",
"backgroundGridStyle": "cells",
"backgroundGridMotionDirectionDeg": 0,
"backgroundGridMotionSpeed": 0,
"backgroundGridRotateDegPerSec": 0,
"backgroundGridHoverGrowLimitPct": 50,
"backgroundGridHoverRotateLimitDeg": 0,
"backgroundGridReactionTimeSec": 1,
"backgroundGridHoverGrow": true,
"backgroundGridHoverRotate": false,
"backgroundGridHoverColor": false,
"backgroundGridHoverColorLight": "#ffffff55",
"backgroundGridHoverColorDark": "#ffffff33",
"backgroundGridReactionSpeed": 1,
"pointerEvents": "auto",
"borderEnabled": false,
"borderStyle": "solid",
"borderColorLight": "",
"borderColorDark": "",
"shadowEnabled": false,
"shadowValueLight": "",
"shadowValueDark": "",
"scrollAnimationEnabled": false,
"scrollAnimationType": "fadeIn",
"scrollAnimationDuration": 600,
"scrollAnimationDelay": 0,
"cursorTiltEnabled": false,
"cursorTiltIntensity": 12,
"transformEnabled": false,
"transformRotateX": 0,
"transformRotateY": 0,
"transformRotateZ": 0,
"transformTranslateX": 0,
"transformTranslateY": 0,
"transformTranslateZ": 0,
"transformScale": 1,
"decorationBySelector": {},
"icon": "none",
"level": "h2",
"textAlign": "left",
"fontSize": 48,
"fontWeight": 600,
"fontFamily": "theme-heading",
"italic": false,
"textColorLight": "",
"textColorDark": "",
"decorationEnabled": false,
"decorationWidth": 96,
"decorationThickness": 8,
"decorationSpacing": 12,
"decorationColorLight": "",
"decorationColorDark": "",
"underlineMode": "inline",
"textShadowEnabled": false,
"textShadowOffsetX": 3,
"textShadowOffsetY": 3,
"textShadowBlur": 0,
"textShadowColorLight": "rgba(0, 0, 0, 0.55)",
"textShadowColorDark": "rgba(0, 0, 0, 0.7)"
}
RichTextBlock
Rich text
TipTap HTML body for longer copy. Keep first-viewport copy short; put long articles in object fields bound via ObjectBoundRichText. See shared concepts → Rich text.
Fields
Content
content
TipTap HTML string (not a slot). See shared concepts → Rich text.
content: "<p>Hello <strong>world</strong></p>"
Visibility
showOnBreakpoints
Per-breakpoint visibility. Set a breakpoint to false to hide the block on that viewport. Missing keys default to visible.
showOnBreakpoints: { mobile: false }
showOnLocales
Limit which website locales show the block. Empty / missing means all enabled locales. Set a locale to false to hide.
showOnLocales: { tr: false }
authVisibility
Who can see the block based on website sign-in state.
Options: all, authenticated, anonymous
authVisibility: "authenticated"
routeLockVisibility
On locked object routes, show always, only when unlocked, or only when locked.
Options: all, when_unlocked, when_locked
routeLockVisibility: "all"
roleVisibility
Optional list of website user role labels. Empty means all roles. Matching is case-sensitive.
roleVisibility: ["moderator"]
entryActionVisibility
Object-component only: show when the current entry exposes matching actions.
Options: all, canUpdate, canDelete
entryActionVisibility: "all"
queryPageVisibility
Optional: limit list blocks to the first query page only.
Options: all, first_page_only
queryPageVisibility: "all"
Spacing & sizing
customizeEnabled
Enables the decoration controls below in the editor.
customizeEnabled: true
paddingEnabled
Turns padding controls on for this block.
paddingEnabled: true
padding
Unit: token
Theme spacing token applied as padding. Tokens let site owners customize spacing while blocks continue to share a consistent design language.
Options: none, xs, sm, md, lg, xl
padding: "md"
paddingByBreakpoint
Unit: token
Theme spacing token per breakpoint. Use this when the block needs different, but still theme-consistent, spacing at different viewport sizes.
paddingByBreakpoint: { desktop: "md", mobile: "sm" }
marginsEnabled
Turns margin controls on (configured via size/position maps).
marginsEnabled: false
sizeByBreakpoint
Optional width/height constraints per breakpoint. Modes: fillParent (stretch), fitContent (intrinsic), static (fixed length via widthStatic/heightStatic + unit), ratio (percent of the other axis via widthRatio/heightRatio).
static uses widthStaticUnit / heightStaticUnit: px, vw, vh, vmin, or vmax (default px). Example full-page background: widthStatic: 100, widthStaticUnit: "vw", heightStatic: 100, heightStaticUnit: "vh" with fixed positioning and pointerEvents: "none". ratio values are percentages of the opposite axis. fillParent and fitContent take no numeric unit.
sizeByBreakpoint: {
desktop: {
widthMode: "static",
widthStatic: 100,
widthStaticUnit: "vw",
heightMode: "static",
heightStatic: 100,
heightStaticUnit: "vh"
}
}
overflow
CSS overflow on the decoration frame.
Options: visible, hidden, auto, clip
overflow: "hidden"
pointerEvents
Whether the decoration frame receives pointer events. Use none for full-page decorative backgrounds so clicks pass through.
Options: auto, none
pointerEvents: "auto"
Position
positionEnabled
Enables absolute/relative positioning overlays.
positionEnabled: false
positionByBreakpoint
Positioning overlays per breakpoint (static, relative, absolute, fixed, sticky) with optional offsets in pixels (top, right, bottom, left).
positionByBreakpoint: {
desktop: { position: "relative", top: 0, left: 0 }
}
Background
backgroundEnabled
Enables background fill, gradient, or image.
backgroundEnabled: true
backgroundWidth
Background span: page column or full viewport bleed.
Options: page, full
backgroundWidth: "page"
backgroundKind
Solid color, gradient, image, muted autoplay video, or canvas animation (particles / reactive grid).
Options: solid, gradient, image, video, animation
backgroundKind: "solid"
backgroundColorLight
Solid background color in light theme.
backgroundColorLight: "#ffffff"
backgroundColorDark
Solid background color in dark theme.
backgroundColorDark: "#111827"
gradientType
Linear, radial, or conic gradient when backgroundKind is gradient.
Options: linear, radial, conic
gradientType: "linear"
gradientAngle
Unit: deg
Linear gradient direction or conic start angle in degrees when backgroundKind is gradient.
gradientAngle: 135
gradientColors
Gradient stops with light/dark pairs and segment offsets (CSS % is the running sum).
gradientColors: [
{ light: "#2563eb", dark: "#1e3a8a", offset: 20 },
{ light: "#93c5fd", dark: "#1e40af", offset: 80 }
]
backgroundImageSrc
Background image source when backgroundKind is image.
backgroundImageSrc: "https://cdn.example/bg.jpg"
backgroundImageMode
How the background image is sized.
Options: cover, contain, repeat
backgroundImageMode: "cover"
backgroundRepeatSize
Unit: px
Tile size in pixels when background image mode is repeat.
backgroundRepeatSize: 64
backgroundPosition
CSS background-position value.
backgroundPosition: "center"
backgroundMotionEnabled
Seamless pan (and optional rotate) for image backgrounds.
backgroundMotionEnabled: true
backgroundMotionDirectionDeg
Unit: deg
Pan direction in degrees (0 = right).
backgroundMotionDirectionDeg: 0
backgroundMotionSpeed
Relative pan speed for seamless cycling.
backgroundMotionSpeed: 20
backgroundMotionRotateDegPerSec
Unit: deg
Continuous rotation speed in degrees per second (0 = off).
backgroundMotionRotateDegPerSec: 0
backgroundVideoSrc
Video URL when backgroundKind is video. Always muted, autoplay, plays inline; never captures focus.
backgroundVideoSrc: "https://cdn.example/bg.mp4"
backgroundVideoFit
cover / fill use object-fit; repeat tiles frames on canvas.
Options: cover, fill, repeat
backgroundVideoFit: "cover"
backgroundVideoLoop
Loop the background video (default true).
backgroundVideoLoop: true
backgroundAnimationMode
Particle field or reactive grid (filled cells or continuous outlines) when backgroundKind is animation.
Options: particle, reactiveGrid
backgroundAnimationMode: "particle"
backgroundAnimShape
Built-in shape or custom SVG for particles/grid cells.
Options: circle, square, roundedSquare, triangle, diamond, hexagon, star, cross, svg
backgroundAnimShape: "circle"
backgroundAnimSvgSrc
SVG URL when shape is svg.
backgroundAnimSvgSrc: "https://cdn.example/shape.svg"
backgroundAnimColorMode
solid tints shapes; fromAsset keeps SVG colors.
Options: solid, fromAsset
backgroundAnimColorMode: "solid"
backgroundAnimSize
Unit: px
Base particle or cell size in pixels.
backgroundAnimSize: 12
backgroundAnimJitter
Particle-only 0–1 randomization for count, size, lifetime, and speed.
backgroundAnimJitter: 0.2
backgroundGridStyle
Reactive grid rendering: filled cells, or continuous shape outlines tiled edge-to-edge into one connected lattice that ripples around the cursor. Ignored for svg shapes, which always render as cells.
Options: cells, continuous
backgroundGridStyle: "cells"
backgroundGridHoverGrowLimitPct
Unit: %
Maximum cell size change at the pointer. Positive values grow cells; negative values shrink them. A value of 50 reaches 150% scale after the configured reaction time.
backgroundGridHoverGrowLimitPct: 50
backgroundGridHoverRotateLimitDeg
Unit: deg
Maximum cell rotation at the pointer. Positive values rotate clockwise; negative values rotate counterclockwise.
backgroundGridHoverRotateLimitDeg: 0
backgroundGridReactionTimeSec
Unit: s
Seconds for cells or the continuous-grid ripple to reach their configured hover limit, and to return after the pointer leaves.
backgroundGridReactionTimeSec: 1
Border
borderEnabled
Enables border color, style, width, and radius.
borderEnabled: false
borderColorLight
Border color in light theme.
borderColorLight: "#e5e7eb"
borderColorDark
Border color in dark theme.
borderColorDark: "#374151"
borderStyle
CSS border style.
Options: solid, dashed, dotted
borderStyle: "solid"
borderWidth
Unit: token
Border width token.
Options: none, sm, md, lg
borderWidth: "sm"
borderRadius
Unit: token
Border radius token.
Options: none, sm, md, lg, xl, full
borderRadius: "md"
Shadow
shadowEnabled
Enables box shadow values for light/dark themes.
shadowEnabled: false
shadowValueLight
CSS box-shadow value in light theme.
shadowValueLight: "0 8px 24px rgba(0, 0, 0, 0.12)"
shadowValueDark
CSS box-shadow value in dark theme.
shadowValueDark: "0 8px 24px rgba(0, 0, 0, 0.45)"
Motion & transform
scrollAnimationEnabled
Enables enter-on-scroll animation.
scrollAnimationEnabled: false
scrollAnimationType
Enter-on-scroll animation preset.
Options: fadeIn, slideInBottom, slideInTop, slideInLeft, slideInRight, zoomIn, zoomOut, rotateIn, rotateOut, bounceIn, bounceOut, pulse
scrollAnimationType: "fadeIn"
scrollAnimationDuration
Unit: ms
Animation duration in milliseconds.
scrollAnimationDuration: 600
scrollAnimationDelay
Unit: ms
Animation delay in milliseconds.
scrollAnimationDelay: 0
cursorTiltEnabled
Tilts the block slightly toward the pointer.
cursorTiltEnabled: false
cursorTiltIntensity
Strength of the cursor tilt effect.
cursorTiltIntensity: 8
transformEnabled
Enables CSS transform controls.
transformEnabled: false
transformRotateX
Unit: deg
Rotation around the X axis in degrees.
transformRotateX: 0
transformRotateY
Unit: deg
Rotation around the Y axis in degrees.
transformRotateY: 0
transformRotateZ
Unit: deg
Rotation around the Z axis in degrees.
transformRotateZ: 0
transformTranslateX
Unit: px
Horizontal translation in pixels.
transformTranslateX: 0
transformTranslateY
Unit: px
Vertical translation in pixels.
transformTranslateY: 0
transformTranslateZ
Unit: px
Depth translation in pixels.
transformTranslateZ: 0
transformScale
Unit: ratio
Uniform scale factor (unitless).
transformScale: 1
transformPerspective
Unit: px
CSS perspective distance in pixels.
transformPerspective: 800
Advanced
decorationBySelector
Advanced: apply decoration token overlays for hover, active, and focus. Missing overlay keys inherit the default flat props.
decorationBySelector: {
hover: { backgroundColorLight: "#f3f4f6" }
}
clipboard
Editor-only control — does not persist its own value.
Editor-only copy/paste helpers for block props.
// Editor-only — does not persist a stored value
Default props
{
"showOnBreakpoints": {},
"showOnLocales": {},
"authVisibility": "all",
"routeLockVisibility": "all",
"roleVisibility": [],
"entryActionVisibility": "all",
"queryPageVisibility": "all",
"customizeEnabled": false,
"padding": "none",
"paddingEnabled": false,
"sizeByBreakpoint": {},
"marginsEnabled": false,
"positionEnabled": false,
"positionByBreakpoint": {},
"backgroundEnabled": false,
"backgroundWidth": "page",
"backgroundKind": "solid",
"backgroundColorLight": "",
"backgroundColorDark": "",
"gradientAngle": 180,
"gradientType": "linear",
"gradientColors": [
{
"light": "",
"dark": "",
"offset": 50
},
{
"light": "",
"dark": "",
"offset": 50
}
],
"gradientColor1Light": "",
"gradientColor1Dark": "",
"gradientColor2Light": "",
"gradientColor2Dark": "",
"backgroundImageSrc": "",
"backgroundImageMode": "cover",
"backgroundRepeatSize": 100,
"backgroundPosition": "center",
"backgroundMotionEnabled": false,
"backgroundMotionDirectionDeg": 0,
"backgroundMotionSpeed": 20,
"backgroundMotionRotateDegPerSec": 0,
"backgroundVideoSrc": "",
"backgroundVideoFit": "cover",
"backgroundVideoLoop": true,
"backgroundVideoRepeatSize": 100,
"backgroundAnimationMode": "particle",
"backgroundAnimShape": "circle",
"backgroundAnimSvgSrc": "",
"backgroundAnimColorMode": "solid",
"backgroundAnimColorLight": "#ffffff88",
"backgroundAnimColorDark": "#ffffff66",
"backgroundAnimSize": 12,
"backgroundAnimJitter": 0.2,
"backgroundParticleCount": 40,
"backgroundParticleLifetimeSec": 4,
"backgroundParticleSpeed": 40,
"backgroundParticleAnimType": "fade",
"backgroundParticleFromSide": "left",
"backgroundParticleToSide": "right",
"backgroundGridStyle": "cells",
"backgroundGridMotionDirectionDeg": 0,
"backgroundGridMotionSpeed": 0,
"backgroundGridRotateDegPerSec": 0,
"backgroundGridHoverGrowLimitPct": 50,
"backgroundGridHoverRotateLimitDeg": 0,
"backgroundGridReactionTimeSec": 1,
"backgroundGridHoverGrow": true,
"backgroundGridHoverRotate": false,
"backgroundGridHoverColor": false,
"backgroundGridHoverColorLight": "#ffffff55",
"backgroundGridHoverColorDark": "#ffffff33",
"backgroundGridReactionSpeed": 1,
"pointerEvents": "auto",
"borderEnabled": false,
"borderStyle": "solid",
"borderColorLight": "",
"borderColorDark": "",
"shadowEnabled": false,
"shadowValueLight": "",
"shadowValueDark": "",
"scrollAnimationEnabled": false,
"scrollAnimationType": "fadeIn",
"scrollAnimationDuration": 600,
"scrollAnimationDelay": 0,
"cursorTiltEnabled": false,
"cursorTiltIntensity": 12,
"transformEnabled": false,
"transformRotateX": 0,
"transformRotateY": 0,
"transformRotateZ": 0,
"transformTranslateX": 0,
"transformTranslateY": 0,
"transformTranslateZ": 0,
"transformScale": 1,
"decorationBySelector": {}
}
ButtonBlock
Button
Call-to-action button. Prefer sitemap routes or relative paths over hard-coded absolute URLs when linking inside the site. Action
modaltoggles a ModalBlock by its stable Puck id (label comes from the modal’s Name field).
Examples
Primary CTA
{
"text": "Create thread",
"url": "/categories/[id]/new",
"appearance": "filled"
}
Fields
Content
text
Button label as TipTap HTML. See shared concepts → Rich text.
text: "<p>Browse</p>"
Semantics & behavior
action
What happens on click.
action: "navigate"
Links
url
Href. May include object route params like /threads/[id].
Other
modalId
When action is modal, the target ModalBlock’s stable props.id. Renaming the modal does not change this id. Missing targets no-op at runtime.
modalId: "ModalBlock-abc123"
Typography
appearance
Visual style (filled, outline, etc.).
Colors
textColorLight
Text color used in light theme.
textColorLight: "#111827"
Visibility
showOnBreakpoints
Per-breakpoint visibility. Set a breakpoint to false to hide the block on that viewport. Missing keys default to visible.
showOnBreakpoints: { mobile: false }
showOnLocales
Limit which website locales show the block. Empty / missing means all enabled locales. Set a locale to false to hide.
showOnLocales: { tr: false }
authVisibility
Who can see the block based on website sign-in state.
Options: all, authenticated, anonymous
authVisibility: "authenticated"
routeLockVisibility
On locked object routes, show always, only when unlocked, or only when locked.
Options: all, when_unlocked, when_locked
routeLockVisibility: "all"
roleVisibility
Optional list of website user role labels. Empty means all roles. Matching is case-sensitive.
roleVisibility: ["moderator"]
entryActionVisibility
Object-component only: show when the current entry exposes matching actions.
Options: all, canUpdate, canDelete
entryActionVisibility: "all"
queryPageVisibility
Optional: limit list blocks to the first query page only.
Options: all, first_page_only
queryPageVisibility: "all"
Spacing & sizing
customizeEnabled
Enables the decoration controls below in the editor.
customizeEnabled: true
paddingEnabled
Turns padding controls on for this block.
paddingEnabled: true
padding
Unit: token
Theme spacing token applied as padding. Tokens let site owners customize spacing while blocks continue to share a consistent design language.
Options: none, xs, sm, md, lg, xl
padding: "md"
paddingByBreakpoint
Unit: token
Theme spacing token per breakpoint. Use this when the block needs different, but still theme-consistent, spacing at different viewport sizes.
paddingByBreakpoint: { desktop: "md", mobile: "sm" }
marginsEnabled
Turns margin controls on (configured via size/position maps).
marginsEnabled: false
sizeByBreakpoint
Optional width/height constraints per breakpoint. Modes: fillParent (stretch), fitContent (intrinsic), static (fixed length via widthStatic/heightStatic + unit), ratio (percent of the other axis via widthRatio/heightRatio).
static uses widthStaticUnit / heightStaticUnit: px, vw, vh, vmin, or vmax (default px). Example full-page background: widthStatic: 100, widthStaticUnit: "vw", heightStatic: 100, heightStaticUnit: "vh" with fixed positioning and pointerEvents: "none". ratio values are percentages of the opposite axis. fillParent and fitContent take no numeric unit.
sizeByBreakpoint: {
desktop: {
widthMode: "static",
widthStatic: 100,
widthStaticUnit: "vw",
heightMode: "static",
heightStatic: 100,
heightStaticUnit: "vh"
}
}
overflow
CSS overflow on the decoration frame.
Options: visible, hidden, auto, clip
overflow: "hidden"
pointerEvents
Whether the decoration frame receives pointer events. Use none for full-page decorative backgrounds so clicks pass through.
Options: auto, none
pointerEvents: "auto"
Position
positionEnabled
Enables absolute/relative positioning overlays.
positionEnabled: false
positionByBreakpoint
Positioning overlays per breakpoint (static, relative, absolute, fixed, sticky) with optional offsets in pixels (top, right, bottom, left).
positionByBreakpoint: {
desktop: { position: "relative", top: 0, left: 0 }
}
Background
backgroundEnabled
Enables background fill, gradient, or image.
backgroundEnabled: true
backgroundWidth
Background span: page column or full viewport bleed.
Options: page, full
backgroundWidth: "page"
backgroundKind
Solid color, gradient, image, muted autoplay video, or canvas animation (particles / reactive grid).
Options: solid, gradient, image, video, animation
backgroundKind: "solid"
backgroundColorLight
Solid background color in light theme.
backgroundColorLight: "#ffffff"
backgroundColorDark
Solid background color in dark theme.
backgroundColorDark: "#111827"
gradientType
Linear, radial, or conic gradient when backgroundKind is gradient.
Options: linear, radial, conic
gradientType: "linear"
gradientAngle
Unit: deg
Linear gradient direction or conic start angle in degrees when backgroundKind is gradient.
gradientAngle: 135
gradientColors
Gradient stops with light/dark pairs and segment offsets (CSS % is the running sum).
gradientColors: [
{ light: "#2563eb", dark: "#1e3a8a", offset: 20 },
{ light: "#93c5fd", dark: "#1e40af", offset: 80 }
]
backgroundImageSrc
Background image source when backgroundKind is image.
backgroundImageSrc: "https://cdn.example/bg.jpg"
backgroundImageMode
How the background image is sized.
Options: cover, contain, repeat
backgroundImageMode: "cover"
backgroundRepeatSize
Unit: px
Tile size in pixels when background image mode is repeat.
backgroundRepeatSize: 64
backgroundPosition
CSS background-position value.
backgroundPosition: "center"
backgroundMotionEnabled
Seamless pan (and optional rotate) for image backgrounds.
backgroundMotionEnabled: true
backgroundMotionDirectionDeg
Unit: deg
Pan direction in degrees (0 = right).
backgroundMotionDirectionDeg: 0
backgroundMotionSpeed
Relative pan speed for seamless cycling.
backgroundMotionSpeed: 20
backgroundMotionRotateDegPerSec
Unit: deg
Continuous rotation speed in degrees per second (0 = off).
backgroundMotionRotateDegPerSec: 0
backgroundVideoSrc
Video URL when backgroundKind is video. Always muted, autoplay, plays inline; never captures focus.
backgroundVideoSrc: "https://cdn.example/bg.mp4"
backgroundVideoFit
cover / fill use object-fit; repeat tiles frames on canvas.
Options: cover, fill, repeat
backgroundVideoFit: "cover"
backgroundVideoLoop
Loop the background video (default true).
backgroundVideoLoop: true
backgroundAnimationMode
Particle field or reactive grid (filled cells or continuous outlines) when backgroundKind is animation.
Options: particle, reactiveGrid
backgroundAnimationMode: "particle"
backgroundAnimShape
Built-in shape or custom SVG for particles/grid cells.
Options: circle, square, roundedSquare, triangle, diamond, hexagon, star, cross, svg
backgroundAnimShape: "circle"
backgroundAnimSvgSrc
SVG URL when shape is svg.
backgroundAnimSvgSrc: "https://cdn.example/shape.svg"
backgroundAnimColorMode
solid tints shapes; fromAsset keeps SVG colors.
Options: solid, fromAsset
backgroundAnimColorMode: "solid"
backgroundAnimSize
Unit: px
Base particle or cell size in pixels.
backgroundAnimSize: 12
backgroundAnimJitter
Particle-only 0–1 randomization for count, size, lifetime, and speed.
backgroundAnimJitter: 0.2
backgroundGridStyle
Reactive grid rendering: filled cells, or continuous shape outlines tiled edge-to-edge into one connected lattice that ripples around the cursor. Ignored for svg shapes, which always render as cells.
Options: cells, continuous
backgroundGridStyle: "cells"
backgroundGridHoverGrowLimitPct
Unit: %
Maximum cell size change at the pointer. Positive values grow cells; negative values shrink them. A value of 50 reaches 150% scale after the configured reaction time.
backgroundGridHoverGrowLimitPct: 50
backgroundGridHoverRotateLimitDeg
Unit: deg
Maximum cell rotation at the pointer. Positive values rotate clockwise; negative values rotate counterclockwise.
backgroundGridHoverRotateLimitDeg: 0
backgroundGridReactionTimeSec
Unit: s
Seconds for cells or the continuous-grid ripple to reach their configured hover limit, and to return after the pointer leaves.
backgroundGridReactionTimeSec: 1
Border
borderEnabled
Enables border color, style, width, and radius.
borderEnabled: false
borderColorLight
Border color in light theme.
borderColorLight: "#e5e7eb"
borderColorDark
Border color in dark theme.
borderColorDark: "#374151"
borderStyle
CSS border style.
Options: solid, dashed, dotted
borderStyle: "solid"
borderWidth
Unit: token
Border width token.
Options: none, sm, md, lg
borderWidth: "sm"
borderRadius
Unit: token
Border radius token.
Options: none, sm, md, lg, xl, full
borderRadius: "md"
Shadow
shadowEnabled
Enables box shadow values for light/dark themes.
shadowEnabled: false
shadowValueLight
CSS box-shadow value in light theme.
shadowValueLight: "0 8px 24px rgba(0, 0, 0, 0.12)"
shadowValueDark
CSS box-shadow value in dark theme.
shadowValueDark: "0 8px 24px rgba(0, 0, 0, 0.45)"
Motion & transform
scrollAnimationEnabled
Enables enter-on-scroll animation.
scrollAnimationEnabled: false
scrollAnimationType
Enter-on-scroll animation preset.
Options: fadeIn, slideInBottom, slideInTop, slideInLeft, slideInRight, zoomIn, zoomOut, rotateIn, rotateOut, bounceIn, bounceOut, pulse
scrollAnimationType: "fadeIn"
scrollAnimationDuration
Unit: ms
Animation duration in milliseconds.
scrollAnimationDuration: 600
scrollAnimationDelay
Unit: ms
Animation delay in milliseconds.
scrollAnimationDelay: 0
cursorTiltEnabled
Tilts the block slightly toward the pointer.
cursorTiltEnabled: false
cursorTiltIntensity
Strength of the cursor tilt effect.
cursorTiltIntensity: 8
transformEnabled
Enables CSS transform controls.
transformEnabled: false
transformRotateX
Unit: deg
Rotation around the X axis in degrees.
transformRotateX: 0
transformRotateY
Unit: deg
Rotation around the Y axis in degrees.
transformRotateY: 0
transformRotateZ
Unit: deg
Rotation around the Z axis in degrees.
transformRotateZ: 0
transformTranslateX
Unit: px
Horizontal translation in pixels.
transformTranslateX: 0
transformTranslateY
Unit: px
Vertical translation in pixels.
transformTranslateY: 0
transformTranslateZ
Unit: px
Depth translation in pixels.
transformTranslateZ: 0
transformScale
Unit: ratio
Uniform scale factor (unitless).
transformScale: 1
transformPerspective
Unit: px
CSS perspective distance in pixels.
transformPerspective: 800
Advanced
decorationBySelector
Advanced: apply decoration token overlays for hover, active, and focus. Missing overlay keys inherit the default flat props.
decorationBySelector: {
hover: { backgroundColorLight: "#f3f4f6" }
}
clipboard
Editor-only control — does not persist its own value.
Editor-only copy/paste helpers for block props.
// Editor-only — does not persist a stored value
Default props
{
"showOnBreakpoints": {},
"showOnLocales": {},
"authVisibility": "all",
"routeLockVisibility": "all",
"roleVisibility": [],
"entryActionVisibility": "all",
"queryPageVisibility": "all",
"customizeEnabled": false,
"padding": "none",
"paddingEnabled": false,
"sizeByBreakpoint": {},
"marginsEnabled": false,
"positionEnabled": false,
"positionByBreakpoint": {},
"backgroundEnabled": false,
"backgroundWidth": "page",
"backgroundKind": "solid",
"backgroundColorLight": "",
"backgroundColorDark": "",
"gradientAngle": 180,
"gradientType": "linear",
"gradientColors": [
{
"light": "",
"dark": "",
"offset": 50
},
{
"light": "",
"dark": "",
"offset": 50
}
],
"gradientColor1Light": "",
"gradientColor1Dark": "",
"gradientColor2Light": "",
"gradientColor2Dark": "",
"backgroundImageSrc": "",
"backgroundImageMode": "cover",
"backgroundRepeatSize": 100,
"backgroundPosition": "center",
"backgroundMotionEnabled": false,
"backgroundMotionDirectionDeg": 0,
"backgroundMotionSpeed": 20,
"backgroundMotionRotateDegPerSec": 0,
"backgroundVideoSrc": "",
"backgroundVideoFit": "cover",
"backgroundVideoLoop": true,
"backgroundVideoRepeatSize": 100,
"backgroundAnimationMode": "particle",
"backgroundAnimShape": "circle",
"backgroundAnimSvgSrc": "",
"backgroundAnimColorMode": "solid",
"backgroundAnimColorLight": "#ffffff88",
"backgroundAnimColorDark": "#ffffff66",
"backgroundAnimSize": 12,
"backgroundAnimJitter": 0.2,
"backgroundParticleCount": 40,
"backgroundParticleLifetimeSec": 4,
"backgroundParticleSpeed": 40,
"backgroundParticleAnimType": "fade",
"backgroundParticleFromSide": "left",
"backgroundParticleToSide": "right",
"backgroundGridStyle": "cells",
"backgroundGridMotionDirectionDeg": 0,
"backgroundGridMotionSpeed": 0,
"backgroundGridRotateDegPerSec": 0,
"backgroundGridHoverGrowLimitPct": 50,
"backgroundGridHoverRotateLimitDeg": 0,
"backgroundGridReactionTimeSec": 1,
"backgroundGridHoverGrow": true,
"backgroundGridHoverRotate": false,
"backgroundGridHoverColor": false,
"backgroundGridHoverColorLight": "#ffffff55",
"backgroundGridHoverColorDark": "#ffffff33",
"backgroundGridReactionSpeed": 1,
"pointerEvents": "auto",
"borderEnabled": false,
"borderStyle": "solid",
"borderColorLight": "",
"borderColorDark": "",
"shadowEnabled": false,
"shadowValueLight": "",
"shadowValueDark": "",
"scrollAnimationEnabled": false,
"scrollAnimationType": "fadeIn",
"scrollAnimationDuration": 600,
"scrollAnimationDelay": 0,
"cursorTiltEnabled": false,
"cursorTiltIntensity": 12,
"transformEnabled": false,
"transformRotateX": 0,
"transformRotateY": 0,
"transformRotateZ": 0,
"transformTranslateX": 0,
"transformTranslateY": 0,
"transformTranslateZ": 0,
"transformScale": 1,
"decorationBySelector": {},
"text": "Button",
"icon": "none",
"textAlign": "left",
"fontSize": 18,
"fontWeight": 600,
"fontFamily": "theme-heading",
"italic": false,
"action": "navigate",
"openInNewTab": false,
"copiedText": "Copied",
"socialNetwork": "whatsapp",
"returnUrl": "/",
"unreadBadge": true,
"textColorLight": "",
"textColorDark": "",
"textColorHoverLight": "",
"textColorHoverDark": "",
"textColorActiveLight": "",
"textColorActiveDark": ""
}
SingleImage
Image block
Fields
Media
src
Image source (uploaded file URL or remote URL).
src: "https://cdn.example/hero.jpg"
Visibility
showOnBreakpoints
Per-breakpoint visibility. Set a breakpoint to false to hide the block on that viewport. Missing keys default to visible.
showOnBreakpoints: { mobile: false }
showOnLocales
Limit which website locales show the block. Empty / missing means all enabled locales. Set a locale to false to hide.
showOnLocales: { tr: false }
authVisibility
Who can see the block based on website sign-in state.
Options: all, authenticated, anonymous
authVisibility: "authenticated"
routeLockVisibility
On locked object routes, show always, only when unlocked, or only when locked.
Options: all, when_unlocked, when_locked
routeLockVisibility: "all"
roleVisibility
Optional list of website user role labels. Empty means all roles. Matching is case-sensitive.
roleVisibility: ["moderator"]
entryActionVisibility
Object-component only: show when the current entry exposes matching actions.
Options: all, canUpdate, canDelete
entryActionVisibility: "all"
queryPageVisibility
Optional: limit list blocks to the first query page only.
Options: all, first_page_only
queryPageVisibility: "all"
Spacing & sizing
customizeEnabled
Enables the decoration controls below in the editor.
customizeEnabled: true
paddingEnabled
Turns padding controls on for this block.
paddingEnabled: true
padding
Unit: token
Theme spacing token applied as padding. Tokens let site owners customize spacing while blocks continue to share a consistent design language.
Options: none, xs, sm, md, lg, xl
padding: "md"
paddingByBreakpoint
Unit: token
Theme spacing token per breakpoint. Use this when the block needs different, but still theme-consistent, spacing at different viewport sizes.
paddingByBreakpoint: { desktop: "md", mobile: "sm" }
marginsEnabled
Turns margin controls on (configured via size/position maps).
marginsEnabled: false
sizeByBreakpoint
Optional width/height constraints per breakpoint. Modes: fillParent (stretch), fitContent (intrinsic), static (fixed length via widthStatic/heightStatic + unit), ratio (percent of the other axis via widthRatio/heightRatio).
static uses widthStaticUnit / heightStaticUnit: px, vw, vh, vmin, or vmax (default px). Example full-page background: widthStatic: 100, widthStaticUnit: "vw", heightStatic: 100, heightStaticUnit: "vh" with fixed positioning and pointerEvents: "none". ratio values are percentages of the opposite axis. fillParent and fitContent take no numeric unit.
sizeByBreakpoint: {
desktop: {
widthMode: "static",
widthStatic: 100,
widthStaticUnit: "vw",
heightMode: "static",
heightStatic: 100,
heightStaticUnit: "vh"
}
}
overflow
CSS overflow on the decoration frame.
Options: visible, hidden, auto, clip
overflow: "hidden"
pointerEvents
Whether the decoration frame receives pointer events. Use none for full-page decorative backgrounds so clicks pass through.
Options: auto, none
pointerEvents: "auto"
Position
positionEnabled
Enables absolute/relative positioning overlays.
positionEnabled: false
positionByBreakpoint
Positioning overlays per breakpoint (static, relative, absolute, fixed, sticky) with optional offsets in pixels (top, right, bottom, left).
positionByBreakpoint: {
desktop: { position: "relative", top: 0, left: 0 }
}
Background
backgroundEnabled
Enables background fill, gradient, or image.
backgroundEnabled: true
backgroundWidth
Background span: page column or full viewport bleed.
Options: page, full
backgroundWidth: "page"
backgroundKind
Solid color, gradient, image, muted autoplay video, or canvas animation (particles / reactive grid).
Options: solid, gradient, image, video, animation
backgroundKind: "solid"
backgroundColorLight
Solid background color in light theme.
backgroundColorLight: "#ffffff"
backgroundColorDark
Solid background color in dark theme.
backgroundColorDark: "#111827"
gradientType
Linear, radial, or conic gradient when backgroundKind is gradient.
Options: linear, radial, conic
gradientType: "linear"
gradientAngle
Unit: deg
Linear gradient direction or conic start angle in degrees when backgroundKind is gradient.
gradientAngle: 135
gradientColors
Gradient stops with light/dark pairs and segment offsets (CSS % is the running sum).
gradientColors: [
{ light: "#2563eb", dark: "#1e3a8a", offset: 20 },
{ light: "#93c5fd", dark: "#1e40af", offset: 80 }
]
backgroundImageSrc
Background image source when backgroundKind is image.
backgroundImageSrc: "https://cdn.example/bg.jpg"
backgroundImageMode
How the background image is sized.
Options: cover, contain, repeat
backgroundImageMode: "cover"
backgroundRepeatSize
Unit: px
Tile size in pixels when background image mode is repeat.
backgroundRepeatSize: 64
backgroundPosition
CSS background-position value.
backgroundPosition: "center"
backgroundMotionEnabled
Seamless pan (and optional rotate) for image backgrounds.
backgroundMotionEnabled: true
backgroundMotionDirectionDeg
Unit: deg
Pan direction in degrees (0 = right).
backgroundMotionDirectionDeg: 0
backgroundMotionSpeed
Relative pan speed for seamless cycling.
backgroundMotionSpeed: 20
backgroundMotionRotateDegPerSec
Unit: deg
Continuous rotation speed in degrees per second (0 = off).
backgroundMotionRotateDegPerSec: 0
backgroundVideoSrc
Video URL when backgroundKind is video. Always muted, autoplay, plays inline; never captures focus.
backgroundVideoSrc: "https://cdn.example/bg.mp4"
backgroundVideoFit
cover / fill use object-fit; repeat tiles frames on canvas.
Options: cover, fill, repeat
backgroundVideoFit: "cover"
backgroundVideoLoop
Loop the background video (default true).
backgroundVideoLoop: true
backgroundAnimationMode
Particle field or reactive grid (filled cells or continuous outlines) when backgroundKind is animation.
Options: particle, reactiveGrid
backgroundAnimationMode: "particle"
backgroundAnimShape
Built-in shape or custom SVG for particles/grid cells.
Options: circle, square, roundedSquare, triangle, diamond, hexagon, star, cross, svg
backgroundAnimShape: "circle"
backgroundAnimSvgSrc
SVG URL when shape is svg.
backgroundAnimSvgSrc: "https://cdn.example/shape.svg"
backgroundAnimColorMode
solid tints shapes; fromAsset keeps SVG colors.
Options: solid, fromAsset
backgroundAnimColorMode: "solid"
backgroundAnimSize
Unit: px
Base particle or cell size in pixels.
backgroundAnimSize: 12
backgroundAnimJitter
Particle-only 0–1 randomization for count, size, lifetime, and speed.
backgroundAnimJitter: 0.2
backgroundGridStyle
Reactive grid rendering: filled cells, or continuous shape outlines tiled edge-to-edge into one connected lattice that ripples around the cursor. Ignored for svg shapes, which always render as cells.
Options: cells, continuous
backgroundGridStyle: "cells"
backgroundGridHoverGrowLimitPct
Unit: %
Maximum cell size change at the pointer. Positive values grow cells; negative values shrink them. A value of 50 reaches 150% scale after the configured reaction time.
backgroundGridHoverGrowLimitPct: 50
backgroundGridHoverRotateLimitDeg
Unit: deg
Maximum cell rotation at the pointer. Positive values rotate clockwise; negative values rotate counterclockwise.
backgroundGridHoverRotateLimitDeg: 0
backgroundGridReactionTimeSec
Unit: s
Seconds for cells or the continuous-grid ripple to reach their configured hover limit, and to return after the pointer leaves.
backgroundGridReactionTimeSec: 1
Border
borderEnabled
Enables border color, style, width, and radius.
borderEnabled: false
borderColorLight
Border color in light theme.
borderColorLight: "#e5e7eb"
borderColorDark
Border color in dark theme.
borderColorDark: "#374151"
borderStyle
CSS border style.
Options: solid, dashed, dotted
borderStyle: "solid"
borderWidth
Unit: token
Border width token.
Options: none, sm, md, lg
borderWidth: "sm"
borderRadius
Unit: token
Border radius token.
Options: none, sm, md, lg, xl, full
borderRadius: "md"
Shadow
shadowEnabled
Enables box shadow values for light/dark themes.
shadowEnabled: false
shadowValueLight
CSS box-shadow value in light theme.
shadowValueLight: "0 8px 24px rgba(0, 0, 0, 0.12)"
shadowValueDark
CSS box-shadow value in dark theme.
shadowValueDark: "0 8px 24px rgba(0, 0, 0, 0.45)"
Motion & transform
scrollAnimationEnabled
Enables enter-on-scroll animation.
scrollAnimationEnabled: false
scrollAnimationType
Enter-on-scroll animation preset.
Options: fadeIn, slideInBottom, slideInTop, slideInLeft, slideInRight, zoomIn, zoomOut, rotateIn, rotateOut, bounceIn, bounceOut, pulse
scrollAnimationType: "fadeIn"
scrollAnimationDuration
Unit: ms
Animation duration in milliseconds.
scrollAnimationDuration: 600
scrollAnimationDelay
Unit: ms
Animation delay in milliseconds.
scrollAnimationDelay: 0
cursorTiltEnabled
Tilts the block slightly toward the pointer.
cursorTiltEnabled: false
cursorTiltIntensity
Strength of the cursor tilt effect.
cursorTiltIntensity: 8
transformEnabled
Enables CSS transform controls.
transformEnabled: false
transformRotateX
Unit: deg
Rotation around the X axis in degrees.
transformRotateX: 0
transformRotateY
Unit: deg
Rotation around the Y axis in degrees.
transformRotateY: 0
transformRotateZ
Unit: deg
Rotation around the Z axis in degrees.
transformRotateZ: 0
transformTranslateX
Unit: px
Horizontal translation in pixels.
transformTranslateX: 0
transformTranslateY
Unit: px
Vertical translation in pixels.
transformTranslateY: 0
transformTranslateZ
Unit: px
Depth translation in pixels.
transformTranslateZ: 0
transformScale
Unit: ratio
Uniform scale factor (unitless).
transformScale: 1
transformPerspective
Unit: px
CSS perspective distance in pixels.
transformPerspective: 800
Advanced
decorationBySelector
Advanced: apply decoration token overlays for hover, active, and focus. Missing overlay keys inherit the default flat props.
decorationBySelector: {
hover: { backgroundColorLight: "#f3f4f6" }
}
clipboard
Editor-only control — does not persist its own value.
Editor-only copy/paste helpers for block props.
// Editor-only — does not persist a stored value
Default props
{
"showOnBreakpoints": {},
"showOnLocales": {},
"authVisibility": "all",
"routeLockVisibility": "all",
"roleVisibility": [],
"entryActionVisibility": "all",
"queryPageVisibility": "all",
"customizeEnabled": false,
"padding": "none",
"paddingEnabled": false,
"sizeByBreakpoint": {},
"marginsEnabled": false,
"positionEnabled": false,
"positionByBreakpoint": {},
"backgroundEnabled": false,
"backgroundWidth": "page",
"backgroundKind": "solid",
"backgroundColorLight": "",
"backgroundColorDark": "",
"gradientAngle": 180,
"gradientType": "linear",
"gradientColors": [
{
"light": "",
"dark": "",
"offset": 50
},
{
"light": "",
"dark": "",
"offset": 50
}
],
"gradientColor1Light": "",
"gradientColor1Dark": "",
"gradientColor2Light": "",
"gradientColor2Dark": "",
"backgroundImageSrc": "",
"backgroundImageMode": "cover",
"backgroundRepeatSize": 100,
"backgroundPosition": "center",
"backgroundMotionEnabled": false,
"backgroundMotionDirectionDeg": 0,
"backgroundMotionSpeed": 20,
"backgroundMotionRotateDegPerSec": 0,
"backgroundVideoSrc": "",
"backgroundVideoFit": "cover",
"backgroundVideoLoop": true,
"backgroundVideoRepeatSize": 100,
"backgroundAnimationMode": "particle",
"backgroundAnimShape": "circle",
"backgroundAnimSvgSrc": "",
"backgroundAnimColorMode": "solid",
"backgroundAnimColorLight": "#ffffff88",
"backgroundAnimColorDark": "#ffffff66",
"backgroundAnimSize": 12,
"backgroundAnimJitter": 0.2,
"backgroundParticleCount": 40,
"backgroundParticleLifetimeSec": 4,
"backgroundParticleSpeed": 40,
"backgroundParticleAnimType": "fade",
"backgroundParticleFromSide": "left",
"backgroundParticleToSide": "right",
"backgroundGridStyle": "cells",
"backgroundGridMotionDirectionDeg": 0,
"backgroundGridMotionSpeed": 0,
"backgroundGridRotateDegPerSec": 0,
"backgroundGridHoverGrowLimitPct": 50,
"backgroundGridHoverRotateLimitDeg": 0,
"backgroundGridReactionTimeSec": 1,
"backgroundGridHoverGrow": true,
"backgroundGridHoverRotate": false,
"backgroundGridHoverColor": false,
"backgroundGridHoverColorLight": "#ffffff55",
"backgroundGridHoverColorDark": "#ffffff33",
"backgroundGridReactionSpeed": 1,
"pointerEvents": "auto",
"borderEnabled": false,
"borderStyle": "solid",
"borderColorLight": "",
"borderColorDark": "",
"shadowEnabled": false,
"shadowValueLight": "",
"shadowValueDark": "",
"scrollAnimationEnabled": false,
"scrollAnimationType": "fadeIn",
"scrollAnimationDuration": 600,
"scrollAnimationDelay": 0,
"cursorTiltEnabled": false,
"cursorTiltIntensity": 12,
"transformEnabled": false,
"transformRotateX": 0,
"transformRotateY": 0,
"transformRotateZ": 0,
"transformTranslateX": 0,
"transformTranslateY": 0,
"transformTranslateZ": 0,
"transformScale": 1,
"decorationBySelector": {},
"openInNewTab": false,
"localeSpecificImages": false
}
VerticalSpacer
Vertical spacer
Fields
Media
height
Unit: px
Height in pixels (spacer gap, media frame, and similar).
height: 48
Visibility
showOnBreakpoints
Per-breakpoint visibility. Set a breakpoint to false to hide the block on that viewport. Missing keys default to visible.
showOnBreakpoints: { mobile: false }
showOnLocales
Limit which website locales show the block. Empty / missing means all enabled locales. Set a locale to false to hide.
showOnLocales: { tr: false }
authVisibility
Who can see the block based on website sign-in state.
Options: all, authenticated, anonymous
authVisibility: "authenticated"
routeLockVisibility
On locked object routes, show always, only when unlocked, or only when locked.
Options: all, when_unlocked, when_locked
routeLockVisibility: "all"
roleVisibility
Optional list of website user role labels. Empty means all roles. Matching is case-sensitive.
roleVisibility: ["moderator"]
entryActionVisibility
Object-component only: show when the current entry exposes matching actions.
Options: all, canUpdate, canDelete
entryActionVisibility: "all"
queryPageVisibility
Optional: limit list blocks to the first query page only.
Options: all, first_page_only
queryPageVisibility: "all"
Spacing & sizing
customizeEnabled
Enables the decoration controls below in the editor.
customizeEnabled: true
paddingEnabled
Turns padding controls on for this block.
paddingEnabled: true
padding
Unit: token
Theme spacing token applied as padding. Tokens let site owners customize spacing while blocks continue to share a consistent design language.
Options: none, xs, sm, md, lg, xl
padding: "md"
paddingByBreakpoint
Unit: token
Theme spacing token per breakpoint. Use this when the block needs different, but still theme-consistent, spacing at different viewport sizes.
paddingByBreakpoint: { desktop: "md", mobile: "sm" }
marginsEnabled
Turns margin controls on (configured via size/position maps).
marginsEnabled: false
sizeByBreakpoint
Optional width/height constraints per breakpoint. Modes: fillParent (stretch), fitContent (intrinsic), static (fixed length via widthStatic/heightStatic + unit), ratio (percent of the other axis via widthRatio/heightRatio).
static uses widthStaticUnit / heightStaticUnit: px, vw, vh, vmin, or vmax (default px). Example full-page background: widthStatic: 100, widthStaticUnit: "vw", heightStatic: 100, heightStaticUnit: "vh" with fixed positioning and pointerEvents: "none". ratio values are percentages of the opposite axis. fillParent and fitContent take no numeric unit.
sizeByBreakpoint: {
desktop: {
widthMode: "static",
widthStatic: 100,
widthStaticUnit: "vw",
heightMode: "static",
heightStatic: 100,
heightStaticUnit: "vh"
}
}
overflow
CSS overflow on the decoration frame.
Options: visible, hidden, auto, clip
overflow: "hidden"
pointerEvents
Whether the decoration frame receives pointer events. Use none for full-page decorative backgrounds so clicks pass through.
Options: auto, none
pointerEvents: "auto"
Position
positionEnabled
Enables absolute/relative positioning overlays.
positionEnabled: false
positionByBreakpoint
Positioning overlays per breakpoint (static, relative, absolute, fixed, sticky) with optional offsets in pixels (top, right, bottom, left).
positionByBreakpoint: {
desktop: { position: "relative", top: 0, left: 0 }
}
Background
backgroundEnabled
Enables background fill, gradient, or image.
backgroundEnabled: true
backgroundWidth
Background span: page column or full viewport bleed.
Options: page, full
backgroundWidth: "page"
backgroundKind
Solid color, gradient, image, muted autoplay video, or canvas animation (particles / reactive grid).
Options: solid, gradient, image, video, animation
backgroundKind: "solid"
backgroundColorLight
Solid background color in light theme.
backgroundColorLight: "#ffffff"
backgroundColorDark
Solid background color in dark theme.
backgroundColorDark: "#111827"
gradientType
Linear, radial, or conic gradient when backgroundKind is gradient.
Options: linear, radial, conic
gradientType: "linear"
gradientAngle
Unit: deg
Linear gradient direction or conic start angle in degrees when backgroundKind is gradient.
gradientAngle: 135
gradientColors
Gradient stops with light/dark pairs and segment offsets (CSS % is the running sum).
gradientColors: [
{ light: "#2563eb", dark: "#1e3a8a", offset: 20 },
{ light: "#93c5fd", dark: "#1e40af", offset: 80 }
]
backgroundImageSrc
Background image source when backgroundKind is image.
backgroundImageSrc: "https://cdn.example/bg.jpg"
backgroundImageMode
How the background image is sized.
Options: cover, contain, repeat
backgroundImageMode: "cover"
backgroundRepeatSize
Unit: px
Tile size in pixels when background image mode is repeat.
backgroundRepeatSize: 64
backgroundPosition
CSS background-position value.
backgroundPosition: "center"
backgroundMotionEnabled
Seamless pan (and optional rotate) for image backgrounds.
backgroundMotionEnabled: true
backgroundMotionDirectionDeg
Unit: deg
Pan direction in degrees (0 = right).
backgroundMotionDirectionDeg: 0
backgroundMotionSpeed
Relative pan speed for seamless cycling.
backgroundMotionSpeed: 20
backgroundMotionRotateDegPerSec
Unit: deg
Continuous rotation speed in degrees per second (0 = off).
backgroundMotionRotateDegPerSec: 0
backgroundVideoSrc
Video URL when backgroundKind is video. Always muted, autoplay, plays inline; never captures focus.
backgroundVideoSrc: "https://cdn.example/bg.mp4"
backgroundVideoFit
cover / fill use object-fit; repeat tiles frames on canvas.
Options: cover, fill, repeat
backgroundVideoFit: "cover"
backgroundVideoLoop
Loop the background video (default true).
backgroundVideoLoop: true
backgroundAnimationMode
Particle field or reactive grid (filled cells or continuous outlines) when backgroundKind is animation.
Options: particle, reactiveGrid
backgroundAnimationMode: "particle"
backgroundAnimShape
Built-in shape or custom SVG for particles/grid cells.
Options: circle, square, roundedSquare, triangle, diamond, hexagon, star, cross, svg
backgroundAnimShape: "circle"
backgroundAnimSvgSrc
SVG URL when shape is svg.
backgroundAnimSvgSrc: "https://cdn.example/shape.svg"
backgroundAnimColorMode
solid tints shapes; fromAsset keeps SVG colors.
Options: solid, fromAsset
backgroundAnimColorMode: "solid"
backgroundAnimSize
Unit: px
Base particle or cell size in pixels.
backgroundAnimSize: 12
backgroundAnimJitter
Particle-only 0–1 randomization for count, size, lifetime, and speed.
backgroundAnimJitter: 0.2
backgroundGridStyle
Reactive grid rendering: filled cells, or continuous shape outlines tiled edge-to-edge into one connected lattice that ripples around the cursor. Ignored for svg shapes, which always render as cells.
Options: cells, continuous
backgroundGridStyle: "cells"
backgroundGridHoverGrowLimitPct
Unit: %
Maximum cell size change at the pointer. Positive values grow cells; negative values shrink them. A value of 50 reaches 150% scale after the configured reaction time.
backgroundGridHoverGrowLimitPct: 50
backgroundGridHoverRotateLimitDeg
Unit: deg
Maximum cell rotation at the pointer. Positive values rotate clockwise; negative values rotate counterclockwise.
backgroundGridHoverRotateLimitDeg: 0
backgroundGridReactionTimeSec
Unit: s
Seconds for cells or the continuous-grid ripple to reach their configured hover limit, and to return after the pointer leaves.
backgroundGridReactionTimeSec: 1
Border
borderEnabled
Enables border color, style, width, and radius.
borderEnabled: false
borderColorLight
Border color in light theme.
borderColorLight: "#e5e7eb"
borderColorDark
Border color in dark theme.
borderColorDark: "#374151"
borderStyle
CSS border style.
Options: solid, dashed, dotted
borderStyle: "solid"
borderWidth
Unit: token
Border width token.
Options: none, sm, md, lg
borderWidth: "sm"
borderRadius
Unit: token
Border radius token.
Options: none, sm, md, lg, xl, full
borderRadius: "md"
Shadow
shadowEnabled
Enables box shadow values for light/dark themes.
shadowEnabled: false
shadowValueLight
CSS box-shadow value in light theme.
shadowValueLight: "0 8px 24px rgba(0, 0, 0, 0.12)"
shadowValueDark
CSS box-shadow value in dark theme.
shadowValueDark: "0 8px 24px rgba(0, 0, 0, 0.45)"
Motion & transform
scrollAnimationEnabled
Enables enter-on-scroll animation.
scrollAnimationEnabled: false
scrollAnimationType
Enter-on-scroll animation preset.
Options: fadeIn, slideInBottom, slideInTop, slideInLeft, slideInRight, zoomIn, zoomOut, rotateIn, rotateOut, bounceIn, bounceOut, pulse
scrollAnimationType: "fadeIn"
scrollAnimationDuration
Unit: ms
Animation duration in milliseconds.
scrollAnimationDuration: 600
scrollAnimationDelay
Unit: ms
Animation delay in milliseconds.
scrollAnimationDelay: 0
cursorTiltEnabled
Tilts the block slightly toward the pointer.
cursorTiltEnabled: false
cursorTiltIntensity
Strength of the cursor tilt effect.
cursorTiltIntensity: 8
transformEnabled
Enables CSS transform controls.
transformEnabled: false
transformRotateX
Unit: deg
Rotation around the X axis in degrees.
transformRotateX: 0
transformRotateY
Unit: deg
Rotation around the Y axis in degrees.
transformRotateY: 0
transformRotateZ
Unit: deg
Rotation around the Z axis in degrees.
transformRotateZ: 0
transformTranslateX
Unit: px
Horizontal translation in pixels.
transformTranslateX: 0
transformTranslateY
Unit: px
Vertical translation in pixels.
transformTranslateY: 0
transformTranslateZ
Unit: px
Depth translation in pixels.
transformTranslateZ: 0
transformScale
Unit: ratio
Uniform scale factor (unitless).
transformScale: 1
transformPerspective
Unit: px
CSS perspective distance in pixels.
transformPerspective: 800
Advanced
decorationBySelector
Advanced: apply decoration token overlays for hover, active, and focus. Missing overlay keys inherit the default flat props.
decorationBySelector: {
hover: { backgroundColorLight: "#f3f4f6" }
}
clipboard
Editor-only control — does not persist its own value.
Editor-only copy/paste helpers for block props.
// Editor-only — does not persist a stored value
Default props
{
"showOnBreakpoints": {},
"showOnLocales": {},
"authVisibility": "all",
"routeLockVisibility": "all",
"roleVisibility": [],
"entryActionVisibility": "all",
"queryPageVisibility": "all",
"customizeEnabled": false,
"padding": "none",
"paddingEnabled": false,
"sizeByBreakpoint": {},
"marginsEnabled": false,
"positionEnabled": false,
"positionByBreakpoint": {},
"backgroundEnabled": false,
"backgroundWidth": "page",
"backgroundKind": "solid",
"backgroundColorLight": "",
"backgroundColorDark": "",
"gradientAngle": 180,
"gradientType": "linear",
"gradientColors": [
{
"light": "",
"dark": "",
"offset": 50
},
{
"light": "",
"dark": "",
"offset": 50
}
],
"gradientColor1Light": "",
"gradientColor1Dark": "",
"gradientColor2Light": "",
"gradientColor2Dark": "",
"backgroundImageSrc": "",
"backgroundImageMode": "cover",
"backgroundRepeatSize": 100,
"backgroundPosition": "center",
"backgroundMotionEnabled": false,
"backgroundMotionDirectionDeg": 0,
"backgroundMotionSpeed": 20,
"backgroundMotionRotateDegPerSec": 0,
"backgroundVideoSrc": "",
"backgroundVideoFit": "cover",
"backgroundVideoLoop": true,
"backgroundVideoRepeatSize": 100,
"backgroundAnimationMode": "particle",
"backgroundAnimShape": "circle",
"backgroundAnimSvgSrc": "",
"backgroundAnimColorMode": "solid",
"backgroundAnimColorLight": "#ffffff88",
"backgroundAnimColorDark": "#ffffff66",
"backgroundAnimSize": 12,
"backgroundAnimJitter": 0.2,
"backgroundParticleCount": 40,
"backgroundParticleLifetimeSec": 4,
"backgroundParticleSpeed": 40,
"backgroundParticleAnimType": "fade",
"backgroundParticleFromSide": "left",
"backgroundParticleToSide": "right",
"backgroundGridStyle": "cells",
"backgroundGridMotionDirectionDeg": 0,
"backgroundGridMotionSpeed": 0,
"backgroundGridRotateDegPerSec": 0,
"backgroundGridHoverGrowLimitPct": 50,
"backgroundGridHoverRotateLimitDeg": 0,
"backgroundGridReactionTimeSec": 1,
"backgroundGridHoverGrow": true,
"backgroundGridHoverRotate": false,
"backgroundGridHoverColor": false,
"backgroundGridHoverColorLight": "#ffffff55",
"backgroundGridHoverColorDark": "#ffffff33",
"backgroundGridReactionSpeed": 1,
"pointerEvents": "auto",
"borderEnabled": false,
"borderStyle": "solid",
"borderColorLight": "",
"borderColorDark": "",
"shadowEnabled": false,
"shadowValueLight": "",
"shadowValueDark": "",
"scrollAnimationEnabled": false,
"scrollAnimationType": "fadeIn",
"scrollAnimationDuration": 600,
"scrollAnimationDelay": 0,
"cursorTiltEnabled": false,
"cursorTiltIntensity": 12,
"transformEnabled": false,
"transformRotateX": 0,
"transformRotateY": 0,
"transformRotateZ": 0,
"transformTranslateX": 0,
"transformTranslateY": 0,
"transformTranslateZ": 0,
"transformScale": 1,
"decorationBySelector": {}
}
EmailDivider
Divider
No documented fields.