Block documentation

Theme Preview Matrix

Explore theme-preview-matrix as a composable block: contract metadata, multiple configuration defaults, and every theme recipe rendered against the same sample content.

10 configurations19 recipes4 data recipesnative
Configurations10
Recipes19
Data recipes4
Contracts1
Open first recipe
Runtime

native

Shared React runtime support for this block type.

Contracts

1

Capture contracts currently registered for this block type.

Family

foundation

Operator QA block for theme, preset, and wrapper evaluation across delivery targets.

Grade A defaults

Quality evidence for this block

7/7 covered
covered

Contract backed

Schemas, manifest metadata, editor fields, accessibility, and i18n remain attached to the block type.

  • 1 registered contract
  • Ensemble schema id
  • Editor category metadata
covered

Runtime rendered

The documentation route renders through native, alias, wrapped, or nonvisual runtime support without generic fallback UI.

  • native
  • Visible runtime preview
covered

Configuration coverage

Default, media, background, gradient, colorway, dense, and editorial configurations are all visible.

  • 10 configuration previews
  • Cloud Elephants colorways
  • image, background, gradient, dense, editorial
covered

Recipe coverage

Every Theme Studio recipe has a focused page and an inline preview for this block.

  • 19 recipe previews
  • focused recipe routes
  • previous and next recipe navigation
covered

Data composition

CMS authors can lift structured payload recipes for default, media, operator, and stress contexts.

  • 4 cloneable data recipes
  • composition_recipe metadata
  • composition passports
  • visual polish checks
  • default provenance maps
  • content edit bundles
  • recipe compatibility maps
  • cloneable payloads
covered

State readiness

Default, empty, pending, active, invalid, and disabled states are documented for every cloneable block recipe.

  • 24 state readiness entries
  • default, empty, pending, active, invalid, disabled
  • all recipe states documented
covered

Resilience proof

Media replacement, long copy, and awkward content tolerance are represented in the documented defaults.

  • replaceable Cloud Elephants media
  • long-copy tolerance
  • awkward-content tolerance
Configurations

Default, media, background, gradient, Cloud Elephants colorways, dense, and editorial treatments

shadcn

Default

Polished SaaSDefault

Baseline contract props with the selected recipe and standard system preset.

operator

Theme preview matrix sample

Polished SaaS

A compact matrix configuration for documenting this governed operator block.

Themeensemble-daylight
Presetshadcn
Recipes1
Blocks1
bento

Placeholder Image

Polished SaaS GrowthImage

Shows the block alongside Cloud Elephants placeholder media so image, card, and media spacing are visible.

Cloud Elephants Essential CTO service visual.
Essential CTO
operator

Theme preview matrix sample

Polished SaaS Growth

A compact matrix configuration for documenting this governed operator block.

Themeensemble-daylight
Presetbento
Recipes1
Blocks1
glassmorphic

Background Image

Glass ProductBackground

Places the component on a Cloud Elephants image-backed documentation frame for hero, CTA, and overlay-style review.

operator

Theme preview matrix sample

Glass Product

A compact matrix configuration for documenting this governed operator block.

Themeensemble-daylight
Presetglassmorphic
Recipes1
Blocks1
glassmorphic

Gradient Accent

Bold LaunchGradient

Uses a strong gradient shell to prove contrast, buttons, and panels in energetic brand treatments.

operator

Theme preview matrix sample

Bold Launch

A compact matrix configuration for documenting this governed operator block.

Themeensemble-daylight
Presetglassmorphic
Recipes1
Blocks1
glassmorphic

CE Deep Sky

Bold LaunchBackground

Electric blue, coral, and deep navy for launch and high-contrast hero treatments.

operator

Theme preview matrix sample

Bold Launch

A compact matrix configuration for documenting this governed operator block.

Themeensemble-daylight
Presetglassmorphic
Recipes1
Blocks1
bento

CE Aqua Operator

Polished SaaS CrispImage

Aqua, white, ink, and operator blue for service, contact, and listing pages.

Cloud Elephants Essential CTO service visual.
Essential CTO
operator

Theme preview matrix sample

Polished SaaS Crisp

A compact matrix configuration for documenting this governed operator block.

Themeensemble-daylight
Presetbento
Recipes1
Blocks1
elevated

CE Coral Launch

Bold LaunchImage

Coral, magenta, electric blue, and warm white for announcements and campaign pages.

Cloud Elephants SEO Mastermind service visual.
SEO Mastermind
operator

Theme preview matrix sample

Bold Launch

A compact matrix configuration for documenting this governed operator block.

Themeensemble-daylight
Presetelevated
Recipes1
Blocks1
block

CE Ink Mist

Editorial Block SystemEditorial

Mist, ink, slate, blue, and coral for editorial and proof-heavy surfaces.

operator

Theme preview matrix sample

Editorial Block System

A compact matrix configuration for documenting this governed operator block.

Themeensemble-daylight
Presetblock
Recipes1
Blocks1
dashboard

Dense Ops

Compact OpsDense

Compact operator layout with dashboard-style controls and tighter spacing.

operator

Theme preview matrix sample

Compact Ops

A compact matrix configuration for documenting this governed operator block.

Themeensemble-daylight
Presetdashboard
Recipes1
Blocks1
block

Editorial Story

Editorial Block SystemEditorial

Roomier narrative treatment for content, FAQ, testimonials, and feature blocks.

operator

Theme preview matrix sample

Editorial Block System

A compact matrix configuration for documenting this governed operator block.

Themeensemble-daylight
Presetblock
Recipes1
Blocks1
Data recipes

Composable CMS payloads for default, media-ready, compact operator, and long-copy stress contexts

shadcn

Minimal Default

Polished SaaSdefault

Smallest useful CMS payload with the block type, stable id, editable props, and recipe-aware appearance.

Component anatomy

Minimal Default anatomy

6 regions
Surfaceouter layout and background
required0 fields4 tokens

theme-preview-matrix uses recipe surface tokens to keep the outer frame styled and composable.

background, panel, panelElevated, border
Copyheadings, body copy, labels, and supporting text
required7 fields2 tokens

Copy fields map to primary and muted text roles so editors can change words without restyling the block.

text, textMuted
Mediareplaceable image, iframe, embed, avatar, logo, or gallery area
optional6 fields2 tokens

Media fields stay isolated from copy and action regions so replacement assets preserve the recipe layout.

panelElevated, border
ActionsCTA, link, event, and navigation affordances
optional1 fields4 tokens

Action regions use recipe button and accent tokens while preserving href or event payloads.

button, buttonText, signal, uplink
Collectionrepeatable cards, steps, metrics, logos, links, or nested blocks
optional5 fields4 tokens

Collection regions define repeatable item boundaries for add, remove, reorder, and nested editing.

panel, panelElevated, border, badge
Feedbackstatus, validation, selected, loading, and disabled evidence
required0 fields3 tokens

Feedback regions tie state-readiness evidence to visible recipe status treatments.

badge, badgeText, signal
Recipe passport

Minimal Default passport

high
Fitquick-start

Use when a theme-preview-matrix block should land quickly with balanced Polished SaaS defaults.

Editable fields29/29

Minimal Default is a high-complexity quick-start recipe with 6 documented composition slots.

Interactions0 actions / 0 controls

3 required regions, 3 optional regions.

Slots
Surface / 0/0Copy / 7/7Media / 6/6Actions / 1/1Collection / 5/5Feedback / 0/0
Replacement guidance
  • Keep Polished SaaS recipe tokens as the source of visual styling for the surface, text, controls, and actions.
  • Replace media URLs through the CMS media library and preserve alt, title, provider, or label fallbacks.
  • No action wiring is required for this recipe; avoid inventing clickable surfaces in content.
  • No input controls are required; keep the recipe focused on its documented display regions.
  • Treat collection regions as repeatable slots that support add, remove, reorder, and item-level editing.
Publish checklist
  • Validate theme-preview-matrix against its block contract before publishing.
  • 3 required anatomy regions remain present: surface, copy, feedback.
  • 29/29 builder fields are CMS-editable or intentionally locked.
  • Noninteractive presentation has no unexpected action or control surfaces.
  • Phone, tablet, and desktop responsive behavior maps have been reviewed for wrapping and overflow.
  • Contrast checks meet the AA recipe target.
Recipe fit

Minimal Default recipe fit

6 axes
Page contextpage / primary
listingproduct-pageproduct-announcementblogevent-promotionpartnership-announcement

theme-preview-matrix is best composed into listing, product-page, product-announcement, and related pages.

6 page types mapped for theme-preview-matrix.Choose the first matching page type before editing copy, media, or actions so the recipe starts in the right narrative context.
Section rolelayout / supporting
collectionmediacontentmetadata

theme-preview-matrix can act as collection, media, content within a composed page.

6 anatomy regions produce 4 section roles.Place the block where its required anatomy regions have enough room before compressing it into dense page slots.
Content modelcontent / specialized
copy-ledmedia-ledcta-ledrepeatable

Minimal Default composition passport is copy-led, media-led, cta-led, repeatable for CMS composition.

29/29 fields are editable across 4 content models.Keep the content model stable when replacing defaults; do not turn a repeatable or media-led recipe into unrelated ad hoc content.
Interaction modelinteraction / supporting
noninteractive

theme-preview-matrix is compatible with noninteractive content sections.

0 action surfaces and 0 control surfaces mapped.Review href, event, input, required, and disabled-state evidence before publishing an interactive recipe.
Authoring fitauthoring / specialized
quick-starthigh-complexity0-high-care-replacements

theme-preview-matrix uses quick-start authoring with high complexity.

29 default provenance items with 0 high-care replacements.Use the default provenance map before cloning the recipe into CMS content or agent-generated page data.
Responsive fitresponsive / primary
single-column stacktwo-column adaptive gridresponsive composition gridmin-width:0 surfaces, wrapping copy, and no horizontal overflow in the static catalog phone smoke.

theme-preview-matrix has explicit phone, tablet, and desktop compatibility evidence for composed pages.

3 responsive behavior maps cover phone, tablet, and desktop composition.Review phone wrapping, tablet mid-width balance, and desktop density before adding nested content, longer labels, or extra media.
Visual polish

Minimal Default visual polish

6/6
Surface rhythmlayout

theme-preview-matrix keeps a stable recipe surface with panel, border, and spacing roles instead of ad hoc wrappers.

default treatment uses comfortable density and 14px radius base.background, panel, panelElevated, border
Type hierarchytypography

Primary, muted, and badge text roles stay distinct enough for headings, body copy, metadata, and helper text.

6/6 contrast checks pass the AA target.text, textMuted, badgeText
Action clarityinteraction

No unexpected interactive surface is introduced for this noninteractive recipe.

0 action surfaces and 0 control surfaces mapped.button, buttonText, control, controlText, signal, uplink
Media treatmentmedia

Replaceable media stays framed separately from copy and action regions so asset swaps preserve the layout.

Media region is isolated with replaceable fields.panelElevated, border, textMuted
State feedbackstate

Feedback, selected, loading, invalid, and disabled treatments use visible state evidence instead of color-only meaning.

6 state-readiness entries include default, empty, pending, active, invalid, disabled.badge, badgeText, signal
Responsive balanceresponsive

Phone, tablet, and desktop defaults have explicit stack, wrap, media, and overflow policies for the recipe.

single-column stack phone behavior, two-column adaptive grid tablet behavior, and responsive composition grid desktop behavior documented.panel, border, control
Default provenance

Minimal Default default provenance

29 fields
collection-itemlocked-tokenrequires-alt-textsafe-to-edit
  • Titletitle
    safe-to-editlow

    Copy can be edited directly when text remains trimmed, localizable, and safe to wrap at phone widths.

    cloneable block recipe payload
  • Descriptiondescription
    safe-to-editlow

    Copy can be edited directly when text remains trimmed, localizable, and safe to wrap at phone widths.

    cloneable block recipe payload
  • Presetspresets
    locked-tokenmedium

    Keep visual styling aligned to Polished SaaS recipe tokens unless the recipe itself changes.

    Polished SaaS recipe tokens
  • Recipesrecipes
    safe-to-editlow

    Copy can be edited directly when text remains trimmed, localizable, and safe to wrap at phone widths.

    cloneable block recipe payload
  • Block Typesblock_types
    collection-itemmedium

    Edit repeatable items through collection controls so add, remove, reorder, and item-level updates preserve shape.

    cloneable block recipe payload
  • Block Collectionsblock_collections
    collection-itemmedium

    Edit repeatable items through collection controls so add, remove, reorder, and item-level updates preserve shape.

    cloneable block recipe payload
  • Block Collections Item Idblock_collections[].id
    collection-itemmediumrepeated

    Edit repeatable items through collection controls so add, remove, reorder, and item-level updates preserve shape.

    cloneable block recipe payload
  • Block Collections Item Labelblock_collections[].label
    collection-itemmediumrepeated

    Edit repeatable items through collection controls so add, remove, reorder, and item-level updates preserve shape.

    cloneable block recipe payload
  • Block Collections Item Descriptionblock_collections[].description
    collection-itemmediumrepeated

    Edit repeatable items through collection controls so add, remove, reorder, and item-level updates preserve shape.

    cloneable block recipe payload
  • Block Collections Item Block Typesblock_collections[].block_types
    collection-itemmediumrepeated

    Edit repeatable items through collection controls so add, remove, reorder, and item-level updates preserve shape.

    cloneable block recipe payload
  • Preview Layoutpreview_layout
    locked-tokenmedium

    Keep visual styling aligned to Polished SaaS recipe tokens unless the recipe itself changes.

    Polished SaaS recipe tokens
  • Default Themedefault_theme
    locked-tokenmedium

    Keep visual styling aligned to Polished SaaS recipe tokens unless the recipe itself changes.

    Polished SaaS recipe tokens
  • Default Presetdefault_preset
    locked-tokenmedium

    Keep visual styling aligned to Polished SaaS recipe tokens unless the recipe itself changes.

    Polished SaaS recipe tokens
  • Default Recipedefault_recipe
    safe-to-editlow

    Copy can be edited directly when text remains trimmed, localizable, and safe to wrap at phone widths.

    cloneable block recipe payload
  • Default Block Collectiondefault_block_collection
    collection-itemmedium

    Edit repeatable items through collection controls so add, remove, reorder, and item-level updates preserve shape.

    cloneable block recipe payload
  • Default Design Configurationdefault_design_configuration
    safe-to-editlow

    Copy can be edited directly when text remains trimmed, localizable, and safe to wrap at phone widths.

    cloneable block recipe payload
  • Default Media Placeholderdefault_media_placeholder
    requires-alt-textmedium

    Replace the asset through CMS media data and keep alt, title, provider, or label fallback text meaningful.

    Cloud Elephants placeholder media or CMS media library
  • Design Configurationsdesign_configurations
    safe-to-editlow

    Copy can be edited directly when text remains trimmed, localizable, and safe to wrap at phone widths.

    cloneable block recipe payload
  • Design Configurations Item Iddesign_configurations[].id
    collection-itemmediumrepeated

    Edit repeatable items through collection controls so add, remove, reorder, and item-level updates preserve shape.

    cloneable block recipe payload
  • Design Configurations Item Labeldesign_configurations[].label
    collection-itemmediumrepeated

    Edit repeatable items through collection controls so add, remove, reorder, and item-level updates preserve shape.

    cloneable block recipe payload
  • Design Configurations Item Descriptiondesign_configurations[].description
    collection-itemmediumrepeated

    Edit repeatable items through collection controls so add, remove, reorder, and item-level updates preserve shape.

    cloneable block recipe payload
  • Design Configurations Item Themedesign_configurations[].theme
    locked-tokenmediumrepeated

    Keep visual styling aligned to Polished SaaS recipe tokens unless the recipe itself changes.

    Polished SaaS recipe tokens
  • Media Placeholdersmedia_placeholders
    requires-alt-textmedium

    Replace the asset through CMS media data and keep alt, title, provider, or label fallback text meaningful.

    Cloud Elephants placeholder media or CMS media library
  • Media Placeholders Item Idmedia_placeholders[].id
    requires-alt-textmediumrepeated

    Replace the asset through CMS media data and keep alt, title, provider, or label fallback text meaningful.

    Cloud Elephants placeholder media or CMS media library
  • Media Placeholders Item Labelmedia_placeholders[].label
    requires-alt-textmediumrepeated

    Replace the asset through CMS media data and keep alt, title, provider, or label fallback text meaningful.

    cloneable block recipe payload
  • Media Placeholders Item Srcmedia_placeholders[].src
    requires-alt-textmediumrepeated

    Replace the asset through CMS media data and keep alt, title, provider, or label fallback text meaningful.

    Cloud Elephants placeholder media or CMS media library
  • Media Placeholders Item Altmedia_placeholders[].alt
    requires-alt-textmediumrepeated

    Replace the asset through CMS media data and keep alt, title, provider, or label fallback text meaningful.

    Cloud Elephants placeholder media or CMS media library
  • Media Placeholders Item Aspect Ratiomedia_placeholders[].aspect_ratio
    requires-alt-textmediumrepeated

    Replace the asset through CMS media data and keep alt, title, provider, or label fallback text meaningful.

    Cloud Elephants placeholder media or CMS media library
  • Media Placeholders Item Source Urlmedia_placeholders[].source_url
    requires-alt-textmediumrepeated

    Replace the asset through CMS media data and keep alt, title, provider, or label fallback text meaningful.

    CMS route, URL, or canonical postEvent path
Edit bundles

Minimal Default edit bundles

6 bundles
Copy bundlerequired / repeatable-items
block_collections[].descriptionblock_collections[].labeldescriptiondesign_configurations[].descriptiondesign_configurations[].labelmedia_placeholders[].label+1

Copy bundle groups 7 fields so CMS edits preserve the recipe shape and default polish.

cloneable block recipe payloadEdit repeatable items through collection controls so add, remove, reorder, and item-level updates preserve shape.
Media bundlerecommended / repeatable-items
default_media_placeholdermedia_placeholdersmedia_placeholders[].altmedia_placeholders[].aspect_ratiomedia_placeholders[].idmedia_placeholders[].src

Media bundle groups 6 fields so CMS edits preserve the recipe shape and default polish.

Cloud Elephants placeholder media or CMS media libraryReplace the asset through CMS media data and keep alt, title, provider, or label fallback text meaningful.
Action bundlerecommended / repeatable-items
media_placeholders[].source_url

Action bundle groups 1 field so CMS edits preserve the recipe shape and default polish.

CMS route, URL, or canonical postEvent pathReplace the asset through CMS media data and keep alt, title, provider, or label fallback text meaningful.
Collection bundlerecommended / repeatable-items
block_collectionsblock_collections[].block_typesblock_collections[].idblock_typesdefault_block_collection

Collection bundle groups 5 fields so CMS edits preserve the recipe shape and default polish.

cloneable block recipe payloadEdit repeatable items through collection controls so add, remove, reorder, and item-level updates preserve shape.
Style bundleguarded / guarded-system
default_presetdefault_themedesign_configurations[].themepresetspreview_layout

Style bundle groups 5 fields so CMS edits preserve the recipe shape and default polish.

Polished SaaS recipe tokensKeep visual styling aligned to Polished SaaS recipe tokens unless the recipe itself changes.
Content bundlerequired / repeatable-items
default_design_configurationdefault_recipedesign_configurationsdesign_configurations[].idrecipes

Content bundle groups 5 fields so CMS edits preserve the recipe shape and default polish.

cloneable block recipe payloadCopy can be edited directly when text remains trimmed, localizable, and safe to wrap at phone widths.
CMS composition

Minimal Default fields

29 fields
actioncollectioncontentcopymediastyle
  • Titletitle
    copystring
  • Descriptiondescription
    copystring
  • Presetspresets
    stylearray
  • Recipesrecipes
    contentarray
  • Block Typesblock_types
    collectionarray
  • Block Collectionsblock_collections
    collectionarray
  • Block Collections Item Idblock_collections[].id
    collectionstringrepeated
  • Block Collections Item Labelblock_collections[].label
    copystringrepeated
  • Block Collections Item Descriptionblock_collections[].description
    copystringrepeated
  • Block Collections Item Block Typesblock_collections[].block_types
    collectionarrayrepeated
  • Preview Layoutpreview_layout
    stylestring
  • Default Themedefault_theme
    stylestring
  • Default Presetdefault_preset
    stylestring
  • Default Recipedefault_recipe
    contentstring
  • Default Block Collectiondefault_block_collection
    collectionstring
  • Default Design Configurationdefault_design_configuration
    contentstring
  • Default Media Placeholderdefault_media_placeholder
    mediastring
  • Design Configurationsdesign_configurations
    contentarray
  • Design Configurations Item Iddesign_configurations[].id
    contentstringrepeated
  • Design Configurations Item Labeldesign_configurations[].label
    copystringrepeated
  • Design Configurations Item Descriptiondesign_configurations[].description
    copystringrepeated
  • Design Configurations Item Themedesign_configurations[].theme
    styleobjectrepeated
  • Media Placeholdersmedia_placeholders
    mediaarray
  • Media Placeholders Item Idmedia_placeholders[].id
    mediastringrepeated
  • Media Placeholders Item Labelmedia_placeholders[].label
    copystringrepeated
  • Media Placeholders Item Srcmedia_placeholders[].src
    mediastringrepeated
  • Media Placeholders Item Altmedia_placeholders[].alt
    mediastringrepeated
  • Media Placeholders Item Aspect Ratiomedia_placeholders[].aspect_ratio
    mediastringrepeated
  • Media Placeholders Item Source Urlmedia_placeholders[].source_url
    actionstringrepeated
CMS editing

Minimal Default editor guidance

29/29 editable
Copytext/rich-text editor
7/7 editablecopy

Text should be editable, trimmed, localizable, and safe to wrap at mobile widths.

cloneable block recipe payload
Mediamedia picker with alt text
6/6 editablemedia

Media should use a replaceable URL plus meaningful alt, label, or title fallback.

Cloud Elephants placeholder media or CMS media library
Actionlink or event action editor
1/1 editableaction

Actions should resolve to a URL or event name with a human-readable label.

CMS route, URL, or canonical postEvent path
Collectionrepeatable item editor
5/5 editablecollection

Collections should support add, remove, reorder, and item-level editing without changing block shape.

cloneable block recipe payload
Styleappearance preset selector
5/5 editablestyle

Style fields should prefer recipe or appearance tokens over one-off inline values.

Polished SaaS recipe tokens
Contentplain content field
5/5 editablecontent

Content should remain serializable JSON and preserve the documented block contract.

cloneable block recipe payload
Default states

Minimal Default state readiness

6 states
DefaultInitial render with the cloneable recipe payload
coveredsurfacepaneltext

Polished SaaS tokens with default documentation treatment

The Polished SaaS recipe renders a contract-safe primary state for theme-preview-matrix.
EmptyRepeatable collections have zero items
coveredpaneltextMutedbadge

Reserved panel space with fallback copy or placeholder media

Repeatable fields are documented for add, remove, reorder, and item-level editing.
PendingDeferred content or preview loading
coveredcontroltextMutedprogressTrack

Neutral reserved frame with status copy and no layout shift

Static recipe payloads reserve the same documented frame while content is loading.
ActiveCurrent block and recipe preview are selected
coveredsignaluplinkbutton

Signal/uplink emphasis with visible selected-state chips

Recipe and block selection evidence is rendered in the documentation chrome.
InvalidMedia URL or provider data is invalid
coveredwarningdangerborder

Warning/danger status treatment while preserving the block frame

Media guidance requires URL plus accessible fallback text for invalid or missing assets.
DisabledNoninteractive metadata or held preview state
coveredcontroltextMutedborder

Muted affordance with preserved label, spacing, and hit-area rhythm

Noninteractive blocks retain evidence labels without pretending to be clickable.
Controls and actions

Minimal Default actions and controls

0 surfaces
metadata only
Actions

No public action surface is needed for this payload.

Controls

No input control is needed for this payload.

Recipe styling

Minimal Default style tokens

15 tokens
Page background#f7fbff
Panel surface#ffffff
Elevated surface#ffffff
Primary text#142033
Muted text#526174
Signal accent#166bff
Secondary accent#00a6a6
Border#d6dee8
Control surface#ffffff
Control text#142033
Button surface#166bff
Button text#ffffff
Badge surface#eef5ff
Badge text#174ea6
Font familyInter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif
Readability

Minimal Default contrast checks

6/6
Text on background15.73:1 / AAA
Text on panel16.35:1 / AAA
Muted text on panel6.32:1 / AA
Button text on button4.58:1 / AA
Control text on control16.35:1 / AAA
Badge text on badge7.15:1 / AAA
Accessibility proof

Minimal Default accessibility checks

WCAG 2.2 AA
Semantic structuresemantics / required

theme-preview-matrix keeps semantic wrappers and readable heading/copy structure in the runtime preview.

runtime block sections, cards, lists, and headings
Keyboard and tap targetskeyboard / contextual

The payload is static content, so the accessibility contract is to avoid hidden or misleading interactive affordances.

static content has no hidden focus trap
Text alternativesmedia / required

Media-ready recipes expose replaceable alt text or accessible labels for images, logos, embeds, and placeholders.

media fields include alt/label/title fallbacks
Control labelsforms / contextual

No input controls are present, so there are no unlabeled fields to remediate.

no input controls in this payload
Status and motionstate / required

Recipe defaults avoid motion-only meaning and keep status text inspectable when state is present.

runtime evidence avoids hidden status-only content
Responsive proof

Minimal Default responsive behavior

3 viewports
Phone390px / single-column stack
1 colcomfortable

Polished SaaS stacks theme-preview-matrix into one phone column with comfortable spacing and bounded content.

min-width:0 surfaces, wrapping copy, and no horizontal overflow in the static catalog phone smoke.
Tablet768px / two-column adaptive grid
2 colcomfortable

Polished SaaS adapts theme-preview-matrix to 2 tablet columns before expanding to the desktop layout.

tablet preview frames keep mid-width composition, wrap controls, and avoid horizontal overflow in the static catalog smoke.
Desktop1366px / responsive composition grid
3 colcomfortable

Polished SaaS gives theme-preview-matrix up to 3 desktop columns while preserving recipe spacing.

desktop preview frames keep constrained widths, stable cards, and no horizontal overflow in the static catalog smoke.
operator

Theme preview matrix sample

Polished SaaS

A compact matrix configuration for documenting this governed operator block.

Themeensemble-daylight
Presetshadcn
Recipes1
Blocks1
Structured payload
{
  "id": "block-doc-theme-preview-matrix-data-minimal-default",
  "block_type": "theme-preview-matrix",
  "props": {
    "title": "Theme preview matrix sample",
    "description": "A compact matrix configuration for documenting this governed operator block.",
    "presets": [
      "shadcn"
    ],
    "recipes": [
      "polished-saas"
    ],
    "block_types": [
      "hero"
    ],
    "block_collections": [
      {
        "id": "single-block",
        "label": "Single Block",
        "description": "Compact documentation preview.",
        "block_types": [
          "hero"
        ]
      }
    ],
    "preview_layout": "flow",
    "default_theme": "ensemble-daylight",
    "default_preset": "shadcn",
    "default_recipe": "polished-saas",
    "default_block_collection": "single-block",
    "default_design_configuration": "base",
    "default_media_placeholder": "block-doc-preview-media",
    "design_configurations": [
      {
        "id": "base",
        "label": "Default",
        "description": "Baseline contract props with the selected recipe and standard system preset.",
        "theme": {}
      }
    ],
    "media_placeholders": [
      {
        "id": "block-doc-preview-media",
        "label": "Essential CTO",
        "src": "https://storage.googleapis.com/msgsndr/T3RhpcTQAq7Qb47kPQAB/media/677815b8c290c684d5bf3fbd.png",
        "alt": "Cloud Elephants Essential CTO service visual.",
        "aspect_ratio": "16 / 9",
        "source_url": "https://go.cloudelephants.com/a-la-carte"
      }
    ]
  },
  "block_order": 1,
  "metadata": {
    "composition_recipe": {
      "id": "minimal-default",
      "intent": "default",
      "label": "Minimal Default",
      "recipe": "polished-saas",
      "source": "block-explorer",
      "quality_proof": [
        "composition"
      ],
      "composition_passport": {
        "id": "minimal-default",
        "label": "Minimal Default composition passport",
        "intent": "default",
        "recipe": "polished-saas",
        "authoring_mode": "quick-start",
        "complexity": "high",
        "fit": "Use when a theme-preview-matrix block should land quickly with balanced Polished SaaS defaults.",
        "required_regions": [
          "surface",
          "copy",
          "feedback"
        ],
        "optional_regions": [
          "media",
          "actions",
          "collection"
        ],
        "slots": [
          {
            "id": "surface",
            "label": "Surface",
            "required": true,
            "field_count": 0,
            "editable_count": 0,
            "token_roles": [
              "background",
              "panel",
              "panelElevated",
              "border"
            ],
            "summary": "theme-preview-matrix uses recipe surface tokens to keep the outer frame styled and composable."
          },
          {
            "id": "copy",
            "label": "Copy",
            "required": true,
            "field_count": 7,
            "editable_count": 7,
            "token_roles": [
              "text",
              "textMuted"
            ],
            "summary": "Copy fields map to primary and muted text roles so editors can change words without restyling the block."
          },
          {
            "id": "media",
            "label": "Media",
            "required": false,
            "field_count": 6,
            "editable_count": 6,
            "token_roles": [
              "panelElevated",
              "border"
            ],
            "summary": "Media fields stay isolated from copy and action regions so replacement assets preserve the recipe layout."
          },
          {
            "id": "actions",
            "label": "Actions",
            "required": false,
            "field_count": 1,
            "editable_count": 1,
            "token_roles": [
              "button",
              "buttonText",
              "signal",
              "uplink"
            ],
            "summary": "Action regions use recipe button and accent tokens while preserving href or event payloads."
          },
          {
            "id": "collection",
            "label": "Collection",
            "required": false,
            "field_count": 5,
            "editable_count": 5,
            "token_roles": [
              "panel",
              "panelElevated",
              "border",
              "badge"
            ],
            "summary": "Collection regions define repeatable item boundaries for add, remove, reorder, and nested editing."
          },
          {
            "id": "feedback",
            "label": "Feedback",
            "required": true,
            "field_count": 0,
            "editable_count": 0,
            "token_roles": [
              "badge",
              "badgeText",
              "signal"
            ],
            "summary": "Feedback regions tie state-readiness evidence to visible recipe status treatments."
          }
        ],
        "builder_field_count": 29,
        "editable_field_count": 29,
        "action_count": 0,
        "control_count": 0,
        "replacement_guidance": [
          "Keep Polished SaaS recipe tokens as the source of visual styling for the surface, text, controls, and actions.",
          "Replace media URLs through the CMS media library and preserve alt, title, provider, or label fallbacks.",
          "No action wiring is required for this recipe; avoid inventing clickable surfaces in content.",
          "No input controls are required; keep the recipe focused on its documented display regions.",
          "Treat collection regions as repeatable slots that support add, remove, reorder, and item-level editing."
        ],
        "publish_checklist": [
          "Validate theme-preview-matrix against its block contract before publishing.",
          "3 required anatomy regions remain present: surface, copy, feedback.",
          "29/29 builder fields are CMS-editable or intentionally locked.",
          "Noninteractive presentation has no unexpected action or control surfaces.",
          "Phone, tablet, and desktop responsive behavior maps have been reviewed for wrapping and overflow.",
          "Contrast checks meet the AA recipe target."
        ],
        "agent_notes": [
          "Prefer editing props fields described by the builder field map; metadata is evidence, not primary content.",
          "Preserve recipe_alignment token roles unless the page theme or recipe changes intentionally.",
          "Use the anatomy slots to compose or replace content without changing the block type."
        ],
        "summary": "Minimal Default is a high-complexity quick-start recipe with 6 documented composition slots."
      },
      "composition_passport_complexity": "high",
      "composition_passport_authoring_mode": "quick-start",
      "composition_passport_slots": [
        "surface",
        "copy",
        "media",
        "actions",
        "collection",
        "feedback"
      ],
      "composition_passport_check_count": 6,
      "visual_polish_check_count": 6,
      "visual_polish_pass_count": 6,
      "visual_polish_checks": [
        {
          "id": "surface-rhythm",
          "label": "Surface rhythm",
          "axis": "layout",
          "status": "ready",
          "token_roles": [
            "background",
            "panel",
            "panelElevated",
            "border"
          ],
          "evidence": "default treatment uses comfortable density and 14px radius base.",
          "summary": "theme-preview-matrix keeps a stable recipe surface with panel, border, and spacing roles instead of ad hoc wrappers."
        },
        {
          "id": "type-hierarchy",
          "label": "Type hierarchy",
          "axis": "typography",
          "status": "ready",
          "token_roles": [
            "text",
            "textMuted",
            "badgeText"
          ],
          "evidence": "6/6 contrast checks pass the AA target.",
          "summary": "Primary, muted, and badge text roles stay distinct enough for headings, body copy, metadata, and helper text."
        },
        {
          "id": "action-clarity",
          "label": "Action clarity",
          "axis": "interaction",
          "status": "ready",
          "token_roles": [
            "button",
            "buttonText",
            "control",
            "controlText",
            "signal",
            "uplink"
          ],
          "evidence": "0 action surfaces and 0 control surfaces mapped.",
          "summary": "No unexpected interactive surface is introduced for this noninteractive recipe."
        },
        {
          "id": "media-treatment",
          "label": "Media treatment",
          "axis": "media",
          "status": "ready",
          "token_roles": [
            "panelElevated",
            "border",
            "textMuted"
          ],
          "evidence": "Media region is isolated with replaceable fields.",
          "summary": "Replaceable media stays framed separately from copy and action regions so asset swaps preserve the layout."
        },
        {
          "id": "state-feedback",
          "label": "State feedback",
          "axis": "state",
          "status": "ready",
          "token_roles": [
            "badge",
            "badgeText",
            "signal"
          ],
          "evidence": "6 state-readiness entries include default, empty, pending, active, invalid, disabled.",
          "summary": "Feedback, selected, loading, invalid, and disabled treatments use visible state evidence instead of color-only meaning."
        },
        {
          "id": "responsive-balance",
          "label": "Responsive balance",
          "axis": "responsive",
          "status": "ready",
          "token_roles": [
            "panel",
            "border",
            "control"
          ],
          "evidence": "single-column stack phone behavior, two-column adaptive grid tablet behavior, and responsive composition grid desktop behavior documented.",
          "summary": "Phone, tablet, and desktop defaults have explicit stack, wrap, media, and overflow policies for the recipe."
        }
      ],
      "visual_polish_axes": [
        "layout",
        "typography",
        "interaction",
        "media",
        "state",
        "responsive"
      ],
      "default_provenance_count": 29,
      "default_provenance_map": [
        {
          "path": "title",
          "label": "Title",
          "field_role": "copy",
          "value_type": "string",
          "editable": true,
          "repeated": false,
          "default_source": "cloneable block recipe payload",
          "replacement_policy": "safe-to-edit",
          "replacement_risk": "low",
          "guardrail": "Copy can be edited directly when text remains trimmed, localizable, and safe to wrap at phone widths.",
          "validation": "Text should be editable, trimmed, localizable, and safe to wrap at mobile widths.",
          "summary": "Title defaults from cloneable block recipe payload; replacement is low risk with safe-to-edit policy."
        },
        {
          "path": "description",
          "label": "Description",
          "field_role": "copy",
          "value_type": "string",
          "editable": true,
          "repeated": false,
          "default_source": "cloneable block recipe payload",
          "replacement_policy": "safe-to-edit",
          "replacement_risk": "low",
          "guardrail": "Copy can be edited directly when text remains trimmed, localizable, and safe to wrap at phone widths.",
          "validation": "Text should be editable, trimmed, localizable, and safe to wrap at mobile widths.",
          "summary": "Description defaults from cloneable block recipe payload; replacement is low risk with safe-to-edit policy."
        },
        {
          "path": "presets",
          "label": "Presets",
          "field_role": "style",
          "value_type": "array",
          "editable": true,
          "repeated": false,
          "default_source": "Polished SaaS recipe tokens",
          "replacement_policy": "locked-token",
          "replacement_risk": "medium",
          "guardrail": "Keep visual styling aligned to Polished SaaS recipe tokens unless the recipe itself changes.",
          "validation": "Style fields should prefer recipe or appearance tokens over one-off inline values.",
          "summary": "Presets defaults from Polished SaaS recipe tokens; replacement is medium risk with locked-token policy."
        },
        {
          "path": "recipes",
          "label": "Recipes",
          "field_role": "content",
          "value_type": "array",
          "editable": true,
          "repeated": false,
          "default_source": "cloneable block recipe payload",
          "replacement_policy": "safe-to-edit",
          "replacement_risk": "low",
          "guardrail": "Copy can be edited directly when text remains trimmed, localizable, and safe to wrap at phone widths.",
          "validation": "Content should remain serializable JSON and preserve the documented block contract.",
          "summary": "Recipes defaults from cloneable block recipe payload; replacement is low risk with safe-to-edit policy."
        },
        {
          "path": "block_types",
          "label": "Block Types",
          "field_role": "collection",
          "value_type": "array",
          "editable": true,
          "repeated": false,
          "default_source": "cloneable block recipe payload",
          "replacement_policy": "collection-item",
          "replacement_risk": "medium",
          "guardrail": "Edit repeatable items through collection controls so add, remove, reorder, and item-level updates preserve shape.",
          "validation": "Collections should support add, remove, reorder, and item-level editing without changing block shape.",
          "summary": "Block Types defaults from cloneable block recipe payload; replacement is medium risk with collection-item policy."
        },
        {
          "path": "block_collections",
          "label": "Block Collections",
          "field_role": "collection",
          "value_type": "array",
          "editable": true,
          "repeated": false,
          "default_source": "cloneable block recipe payload",
          "replacement_policy": "collection-item",
          "replacement_risk": "medium",
          "guardrail": "Edit repeatable items through collection controls so add, remove, reorder, and item-level updates preserve shape.",
          "validation": "Collections should support add, remove, reorder, and item-level editing without changing block shape.",
          "summary": "Block Collections defaults from cloneable block recipe payload; replacement is medium risk with collection-item policy."
        },
        {
          "path": "block_collections[].id",
          "label": "Block Collections Item Id",
          "field_role": "collection",
          "value_type": "string",
          "editable": true,
          "repeated": true,
          "default_source": "cloneable block recipe payload",
          "replacement_policy": "collection-item",
          "replacement_risk": "medium",
          "guardrail": "Edit repeatable items through collection controls so add, remove, reorder, and item-level updates preserve shape.",
          "validation": "Collections should support add, remove, reorder, and item-level editing without changing block shape.",
          "summary": "Block Collections Item Id defaults from cloneable block recipe payload; replacement is medium risk with collection-item policy."
        },
        {
          "path": "block_collections[].label",
          "label": "Block Collections Item Label",
          "field_role": "copy",
          "value_type": "string",
          "editable": true,
          "repeated": true,
          "default_source": "cloneable block recipe payload",
          "replacement_policy": "collection-item",
          "replacement_risk": "medium",
          "guardrail": "Edit repeatable items through collection controls so add, remove, reorder, and item-level updates preserve shape.",
          "validation": "Text should be editable, trimmed, localizable, and safe to wrap at mobile widths.",
          "summary": "Block Collections Item Label defaults from cloneable block recipe payload; replacement is medium risk with collection-item policy."
        },
        {
          "path": "block_collections[].description",
          "label": "Block Collections Item Description",
          "field_role": "copy",
          "value_type": "string",
          "editable": true,
          "repeated": true,
          "default_source": "cloneable block recipe payload",
          "replacement_policy": "collection-item",
          "replacement_risk": "medium",
          "guardrail": "Edit repeatable items through collection controls so add, remove, reorder, and item-level updates preserve shape.",
          "validation": "Text should be editable, trimmed, localizable, and safe to wrap at mobile widths.",
          "summary": "Block Collections Item Description defaults from cloneable block recipe payload; replacement is medium risk with collection-item policy."
        },
        {
          "path": "block_collections[].block_types",
          "label": "Block Collections Item Block Types",
          "field_role": "collection",
          "value_type": "array",
          "editable": true,
          "repeated": true,
          "default_source": "cloneable block recipe payload",
          "replacement_policy": "collection-item",
          "replacement_risk": "medium",
          "guardrail": "Edit repeatable items through collection controls so add, remove, reorder, and item-level updates preserve shape.",
          "validation": "Collections should support add, remove, reorder, and item-level editing without changing block shape.",
          "summary": "Block Collections Item Block Types defaults from cloneable block recipe payload; replacement is medium risk with collection-item policy."
        },
        {
          "path": "preview_layout",
          "label": "Preview Layout",
          "field_role": "style",
          "value_type": "string",
          "editable": true,
          "repeated": false,
          "default_source": "Polished SaaS recipe tokens",
          "replacement_policy": "locked-token",
          "replacement_risk": "medium",
          "guardrail": "Keep visual styling aligned to Polished SaaS recipe tokens unless the recipe itself changes.",
          "validation": "Style fields should prefer recipe or appearance tokens over one-off inline values.",
          "summary": "Preview Layout defaults from Polished SaaS recipe tokens; replacement is medium risk with locked-token policy."
        },
        {
          "path": "default_theme",
          "label": "Default Theme",
          "field_role": "style",
          "value_type": "string",
          "editable": true,
          "repeated": false,
          "default_source": "Polished SaaS recipe tokens",
          "replacement_policy": "locked-token",
          "replacement_risk": "medium",
          "guardrail": "Keep visual styling aligned to Polished SaaS recipe tokens unless the recipe itself changes.",
          "validation": "Style fields should prefer recipe or appearance tokens over one-off inline values.",
          "summary": "Default Theme defaults from Polished SaaS recipe tokens; replacement is medium risk with locked-token policy."
        },
        {
          "path": "default_preset",
          "label": "Default Preset",
          "field_role": "style",
          "value_type": "string",
          "editable": true,
          "repeated": false,
          "default_source": "Polished SaaS recipe tokens",
          "replacement_policy": "locked-token",
          "replacement_risk": "medium",
          "guardrail": "Keep visual styling aligned to Polished SaaS recipe tokens unless the recipe itself changes.",
          "validation": "Style fields should prefer recipe or appearance tokens over one-off inline values.",
          "summary": "Default Preset defaults from Polished SaaS recipe tokens; replacement is medium risk with locked-token policy."
        },
        {
          "path": "default_recipe",
          "label": "Default Recipe",
          "field_role": "content",
          "value_type": "string",
          "editable": true,
          "repeated": false,
          "default_source": "cloneable block recipe payload",
          "replacement_policy": "safe-to-edit",
          "replacement_risk": "low",
          "guardrail": "Copy can be edited directly when text remains trimmed, localizable, and safe to wrap at phone widths.",
          "validation": "Content should remain serializable JSON and preserve the documented block contract.",
          "summary": "Default Recipe defaults from cloneable block recipe payload; replacement is low risk with safe-to-edit policy."
        },
        {
          "path": "default_block_collection",
          "label": "Default Block Collection",
          "field_role": "collection",
          "value_type": "string",
          "editable": true,
          "repeated": false,
          "default_source": "cloneable block recipe payload",
          "replacement_policy": "collection-item",
          "replacement_risk": "medium",
          "guardrail": "Edit repeatable items through collection controls so add, remove, reorder, and item-level updates preserve shape.",
          "validation": "Collections should support add, remove, reorder, and item-level editing without changing block shape.",
          "summary": "Default Block Collection defaults from cloneable block recipe payload; replacement is medium risk with collection-item policy."
        },
        {
          "path": "default_design_configuration",
          "label": "Default Design Configuration",
          "field_role": "content",
          "value_type": "string",
          "editable": true,
          "repeated": false,
          "default_source": "cloneable block recipe payload",
          "replacement_policy": "safe-to-edit",
          "replacement_risk": "low",
          "guardrail": "Copy can be edited directly when text remains trimmed, localizable, and safe to wrap at phone widths.",
          "validation": "Content should remain serializable JSON and preserve the documented block contract.",
          "summary": "Default Design Configuration defaults from cloneable block recipe payload; replacement is low risk with safe-to-edit policy."
        },
        {
          "path": "default_media_placeholder",
          "label": "Default Media Placeholder",
          "field_role": "media",
          "value_type": "string",
          "editable": true,
          "repeated": false,
          "default_source": "Cloud Elephants placeholder media or CMS media library",
          "replacement_policy": "requires-alt-text",
          "replacement_risk": "medium",
          "guardrail": "Replace the asset through CMS media data and keep alt, title, provider, or label fallback text meaningful.",
          "validation": "Media should use a replaceable URL plus meaningful alt, label, or title fallback.",
          "summary": "Default Media Placeholder defaults from Cloud Elephants placeholder media or CMS media library; replacement is medium risk with requires-alt-text policy."
        },
        {
          "path": "design_configurations",
          "label": "Design Configurations",
          "field_role": "content",
          "value_type": "array",
          "editable": true,
          "repeated": false,
          "default_source": "cloneable block recipe payload",
          "replacement_policy": "safe-to-edit",
          "replacement_risk": "low",
          "guardrail": "Copy can be edited directly when text remains trimmed, localizable, and safe to wrap at phone widths.",
          "validation": "Content should remain serializable JSON and preserve the documented block contract.",
          "summary": "Design Configurations defaults from cloneable block recipe payload; replacement is low risk with safe-to-edit policy."
        },
        {
          "path": "design_configurations[].id",
          "label": "Design Configurations Item Id",
          "field_role": "content",
          "value_type": "string",
          "editable": true,
          "repeated": true,
          "default_source": "cloneable block recipe payload",
          "replacement_policy": "collection-item",
          "replacement_risk": "medium",
          "guardrail": "Edit repeatable items through collection controls so add, remove, reorder, and item-level updates preserve shape.",
          "validation": "Content should remain serializable JSON and preserve the documented block contract.",
          "summary": "Design Configurations Item Id defaults from cloneable block recipe payload; replacement is medium risk with collection-item policy."
        },
        {
          "path": "design_configurations[].label",
          "label": "Design Configurations Item Label",
          "field_role": "copy",
          "value_type": "string",
          "editable": true,
          "repeated": true,
          "default_source": "cloneable block recipe payload",
          "replacement_policy": "collection-item",
          "replacement_risk": "medium",
          "guardrail": "Edit repeatable items through collection controls so add, remove, reorder, and item-level updates preserve shape.",
          "validation": "Text should be editable, trimmed, localizable, and safe to wrap at mobile widths.",
          "summary": "Design Configurations Item Label defaults from cloneable block recipe payload; replacement is medium risk with collection-item policy."
        },
        {
          "path": "design_configurations[].description",
          "label": "Design Configurations Item Description",
          "field_role": "copy",
          "value_type": "string",
          "editable": true,
          "repeated": true,
          "default_source": "cloneable block recipe payload",
          "replacement_policy": "collection-item",
          "replacement_risk": "medium",
          "guardrail": "Edit repeatable items through collection controls so add, remove, reorder, and item-level updates preserve shape.",
          "validation": "Text should be editable, trimmed, localizable, and safe to wrap at mobile widths.",
          "summary": "Design Configurations Item Description defaults from cloneable block recipe payload; replacement is medium risk with collection-item policy."
        },
        {
          "path": "design_configurations[].theme",
          "label": "Design Configurations Item Theme",
          "field_role": "style",
          "value_type": "object",
          "editable": true,
          "repeated": true,
          "default_source": "Polished SaaS recipe tokens",
          "replacement_policy": "locked-token",
          "replacement_risk": "medium",
          "guardrail": "Keep visual styling aligned to Polished SaaS recipe tokens unless the recipe itself changes.",
          "validation": "Style fields should prefer recipe or appearance tokens over one-off inline values.",
          "summary": "Design Configurations Item Theme defaults from Polished SaaS recipe tokens; replacement is medium risk with locked-token policy."
        },
        {
          "path": "media_placeholders",
          "label": "Media Placeholders",
          "field_role": "media",
          "value_type": "array",
          "editable": true,
          "repeated": false,
          "default_source": "Cloud Elephants placeholder media or CMS media library",
          "replacement_policy": "requires-alt-text",
          "replacement_risk": "medium",
          "guardrail": "Replace the asset through CMS media data and keep alt, title, provider, or label fallback text meaningful.",
          "validation": "Media should use a replaceable URL plus meaningful alt, label, or title fallback.",
          "summary": "Media Placeholders defaults from Cloud Elephants placeholder media or CMS media library; replacement is medium risk with requires-alt-text policy."
        },
        {
          "path": "media_placeholders[].id",
          "label": "Media Placeholders Item Id",
          "field_role": "media",
          "value_type": "string",
          "editable": true,
          "repeated": true,
          "default_source": "Cloud Elephants placeholder media or CMS media library",
          "replacement_policy": "requires-alt-text",
          "replacement_risk": "medium",
          "guardrail": "Replace the asset through CMS media data and keep alt, title, provider, or label fallback text meaningful.",
          "validation": "Media should use a replaceable URL plus meaningful alt, label, or title fallback.",
          "summary": "Media Placeholders Item Id defaults from Cloud Elephants placeholder media or CMS media library; replacement is medium risk with requires-alt-text policy."
        },
        {
          "path": "media_placeholders[].label",
          "label": "Media Placeholders Item Label",
          "field_role": "copy",
          "value_type": "string",
          "editable": true,
          "repeated": true,
          "default_source": "cloneable block recipe payload",
          "replacement_policy": "requires-alt-text",
          "replacement_risk": "medium",
          "guardrail": "Replace the asset through CMS media data and keep alt, title, provider, or label fallback text meaningful.",
          "validation": "Text should be editable, trimmed, localizable, and safe to wrap at mobile widths.",
          "summary": "Media Placeholders Item Label defaults from cloneable block recipe payload; replacement is medium risk with requires-alt-text policy."
        },
        {
          "path": "media_placeholders[].src",
          "label": "Media Placeholders Item Src",
          "field_role": "media",
          "value_type": "string",
          "editable": true,
          "repeated": true,
          "default_source": "Cloud Elephants placeholder media or CMS media library",
          "replacement_policy": "requires-alt-text",
          "replacement_risk": "medium",
          "guardrail": "Replace the asset through CMS media data and keep alt, title, provider, or label fallback text meaningful.",
          "validation": "Media should use a replaceable URL plus meaningful alt, label, or title fallback.",
          "summary": "Media Placeholders Item Src defaults from Cloud Elephants placeholder media or CMS media library; replacement is medium risk with requires-alt-text policy."
        },
        {
          "path": "media_placeholders[].alt",
          "label": "Media Placeholders Item Alt",
          "field_role": "media",
          "value_type": "string",
          "editable": true,
          "repeated": true,
          "default_source": "Cloud Elephants placeholder media or CMS media library",
          "replacement_policy": "requires-alt-text",
          "replacement_risk": "medium",
          "guardrail": "Replace the asset through CMS media data and keep alt, title, provider, or label fallback text meaningful.",
          "validation": "Media should use a replaceable URL plus meaningful alt, label, or title fallback.",
          "summary": "Media Placeholders Item Alt defaults from Cloud Elephants placeholder media or CMS media library; replacement is medium risk with requires-alt-text policy."
        },
        {
          "path": "media_placeholders[].aspect_ratio",
          "label": "Media Placeholders Item Aspect Ratio",
          "field_role": "media",
          "value_type": "string",
          "editable": true,
          "repeated": true,
          "default_source": "Cloud Elephants placeholder media or CMS media library",
          "replacement_policy": "requires-alt-text",
          "replacement_risk": "medium",
          "guardrail": "Replace the asset through CMS media data and keep alt, title, provider, or label fallback text meaningful.",
          "validation": "Media should use a replaceable URL plus meaningful alt, label, or title fallback.",
          "summary": "Media Placeholders Item Aspect Ratio defaults from Cloud Elephants placeholder media or CMS media library; replacement is medium risk with requires-alt-text policy."
        },
        {
          "path": "media_placeholders[].source_url",
          "label": "Media Placeholders Item Source Url",
          "field_role": "action",
          "value_type": "string",
          "editable": true,
          "repeated": true,
          "default_source": "CMS route, URL, or canonical postEvent path",
          "replacement_policy": "requires-alt-text",
          "replacement_risk": "medium",
          "guardrail": "Replace the asset through CMS media data and keep alt, title, provider, or label fallback text meaningful.",
          "validation": "Actions should resolve to a URL or event name with a human-readable label.",
          "summary": "Media Placeholders Item Source Url defaults from CMS route, URL, or canonical postEvent path; replacement is medium risk with requires-alt-text policy."
        }
      ],
      "default_replacement_policies": [
        "collection-item",
        "locked-token",
        "requires-alt-text",
        "safe-to-edit"
      ],
      "default_replacement_risks": [
        "low",
        "medium"
      ],
      "default_replacement_high_risk_count": 0,
      "content_edit_bundle_count": 6,
      "content_edit_bundles": [
        {
          "id": "copy",
          "label": "Copy bundle",
          "intent": "required",
          "edit_mode": "repeatable-items",
          "field_paths": [
            "block_collections[].description",
            "block_collections[].label",
            "description",
            "design_configurations[].description",
            "design_configurations[].label",
            "media_placeholders[].label",
            "title"
          ],
          "default_sources": [
            "cloneable block recipe payload"
          ],
          "guardrails": [
            "Edit repeatable items through collection controls so add, remove, reorder, and item-level updates preserve shape.",
            "Copy can be edited directly when text remains trimmed, localizable, and safe to wrap at phone widths.",
            "Replace the asset through CMS media data and keep alt, title, provider, or label fallback text meaningful."
          ],
          "depends_on": [
            "type hierarchy",
            "mobile wrapping"
          ],
          "summary": "Copy bundle groups 7 fields so CMS edits preserve the recipe shape and default polish."
        },
        {
          "id": "media",
          "label": "Media bundle",
          "intent": "recommended",
          "edit_mode": "repeatable-items",
          "field_paths": [
            "default_media_placeholder",
            "media_placeholders",
            "media_placeholders[].alt",
            "media_placeholders[].aspect_ratio",
            "media_placeholders[].id",
            "media_placeholders[].src"
          ],
          "default_sources": [
            "Cloud Elephants placeholder media or CMS media library"
          ],
          "guardrails": [
            "Replace the asset through CMS media data and keep alt, title, provider, or label fallback text meaningful."
          ],
          "depends_on": [
            "copy alt text",
            "responsive fit"
          ],
          "summary": "Media bundle groups 6 fields so CMS edits preserve the recipe shape and default polish."
        },
        {
          "id": "actions",
          "label": "Action bundle",
          "intent": "recommended",
          "edit_mode": "repeatable-items",
          "field_paths": [
            "media_placeholders[].source_url"
          ],
          "default_sources": [
            "CMS route, URL, or canonical postEvent path"
          ],
          "guardrails": [
            "Replace the asset through CMS media data and keep alt, title, provider, or label fallback text meaningful."
          ],
          "depends_on": [
            "copy labels"
          ],
          "summary": "Action bundle groups 1 field so CMS edits preserve the recipe shape and default polish."
        },
        {
          "id": "collections",
          "label": "Collection bundle",
          "intent": "recommended",
          "edit_mode": "repeatable-items",
          "field_paths": [
            "block_collections",
            "block_collections[].block_types",
            "block_collections[].id",
            "block_types",
            "default_block_collection"
          ],
          "default_sources": [
            "cloneable block recipe payload"
          ],
          "guardrails": [
            "Edit repeatable items through collection controls so add, remove, reorder, and item-level updates preserve shape."
          ],
          "depends_on": [
            "item shape",
            "responsive wrapping"
          ],
          "summary": "Collection bundle groups 5 fields so CMS edits preserve the recipe shape and default polish."
        },
        {
          "id": "style",
          "label": "Style bundle",
          "intent": "guarded",
          "edit_mode": "guarded-system",
          "field_paths": [
            "default_preset",
            "default_theme",
            "design_configurations[].theme",
            "presets",
            "preview_layout"
          ],
          "default_sources": [
            "Polished SaaS recipe tokens"
          ],
          "guardrails": [
            "Keep visual styling aligned to Polished SaaS recipe tokens unless the recipe itself changes."
          ],
          "depends_on": [
            "theme recipe tokens",
            "contrast proof"
          ],
          "summary": "Style bundle groups 5 fields so CMS edits preserve the recipe shape and default polish."
        },
        {
          "id": "content",
          "label": "Content bundle",
          "intent": "required",
          "edit_mode": "repeatable-items",
          "field_paths": [
            "default_design_configuration",
            "default_recipe",
            "design_configurations",
            "design_configurations[].id",
            "recipes"
          ],
          "default_sources": [
            "cloneable block recipe payload"
          ],
          "guardrails": [
            "Copy can be edited directly when text remains trimmed, localizable, and safe to wrap at phone widths.",
            "Edit repeatable items through collection controls so add, remove, reorder, and item-level updates preserve shape."
          ],
          "depends_on": [
            "contract-safe JSON"
          ],
          "summary": "Content bundle groups 5 fields so CMS edits preserve the recipe shape and default polish."
        }
      ],
      "content_edit_bundle_ids": [
        "copy",
        "media",
        "actions",
        "collections",
        "style",
        "content"
      ],
      "content_edit_bundle_modes": [
        "guarded-system",
        "repeatable-items"
      ],
      "content_edit_bundle_required_count": 2,
      "content_edit_bundle_guarded_count": 1,
      "recipe_compatibility_count": 6,
      "recipe_compatibility_map": [
        {
          "id": "page-context",
          "label": "Page context",
          "axis": "page",
          "fit": "primary",
          "values": [
            "listing",
            "product-page",
            "product-announcement",
            "blog",
            "event-promotion",
            "partnership-announcement"
          ],
          "evidence": "6 page types mapped for theme-preview-matrix.",
          "guardrail": "Choose the first matching page type before editing copy, media, or actions so the recipe starts in the right narrative context.",
          "summary": "theme-preview-matrix is best composed into listing, product-page, product-announcement, and related pages."
        },
        {
          "id": "section-role",
          "label": "Section role",
          "axis": "layout",
          "fit": "supporting",
          "values": [
            "collection",
            "media",
            "content",
            "metadata"
          ],
          "evidence": "6 anatomy regions produce 4 section roles.",
          "guardrail": "Place the block where its required anatomy regions have enough room before compressing it into dense page slots.",
          "summary": "theme-preview-matrix can act as collection, media, content within a composed page."
        },
        {
          "id": "content-model",
          "label": "Content model",
          "axis": "content",
          "fit": "specialized",
          "values": [
            "copy-led",
            "media-led",
            "cta-led",
            "repeatable"
          ],
          "evidence": "29/29 fields are editable across 4 content models.",
          "guardrail": "Keep the content model stable when replacing defaults; do not turn a repeatable or media-led recipe into unrelated ad hoc content.",
          "summary": "Minimal Default composition passport is copy-led, media-led, cta-led, repeatable for CMS composition."
        },
        {
          "id": "interaction-model",
          "label": "Interaction model",
          "axis": "interaction",
          "fit": "supporting",
          "values": [
            "noninteractive"
          ],
          "evidence": "0 action surfaces and 0 control surfaces mapped.",
          "guardrail": "Review href, event, input, required, and disabled-state evidence before publishing an interactive recipe.",
          "summary": "theme-preview-matrix is compatible with noninteractive content sections."
        },
        {
          "id": "authoring-fit",
          "label": "Authoring fit",
          "axis": "authoring",
          "fit": "specialized",
          "values": [
            "quick-start",
            "high-complexity",
            "0-high-care-replacements"
          ],
          "evidence": "29 default provenance items with 0 high-care replacements.",
          "guardrail": "Use the default provenance map before cloning the recipe into CMS content or agent-generated page data.",
          "summary": "theme-preview-matrix uses quick-start authoring with high complexity."
        },
        {
          "id": "responsive-fit",
          "label": "Responsive fit",
          "axis": "responsive",
          "fit": "primary",
          "values": [
            "single-column stack",
            "two-column adaptive grid",
            "responsive composition grid",
            "min-width:0 surfaces, wrapping copy, and no horizontal overflow in the static catalog phone smoke."
          ],
          "evidence": "3 responsive behavior maps cover phone, tablet, and desktop composition.",
          "guardrail": "Review phone wrapping, tablet mid-width balance, and desktop density before adding nested content, longer labels, or extra media.",
          "summary": "theme-preview-matrix has explicit phone, tablet, and desktop compatibility evidence for composed pages."
        }
      ],
      "recipe_compatibility_axes": [
        "page",
        "layout",
        "content",
        "interaction",
        "authoring",
        "responsive"
      ],
      "recipe_compatibility_page_types": [
        "listing",
        "product-page",
        "product-announcement",
        "blog",
        "event-promotion",
        "partnership-announcement"
      ],
      "recipe_compatibility_section_roles": [
        "collection",
        "media",
        "content",
        "metadata"
      ],
      "recipe_compatibility_fits": [
        "primary",
        "specialized",
        "supporting"
      ],
      "builder_field_count": 29,
      "builder_field_map": [
        {
          "path": "title",
          "label": "Title",
          "value_type": "string",
          "role": "copy",
          "editable": true,
          "repeated": false,
          "summary": "Title is a string field used for copy."
        },
        {
          "path": "description",
          "label": "Description",
          "value_type": "string",
          "role": "copy",
          "editable": true,
          "repeated": false,
          "summary": "Description is a string field used for copy."
        },
        {
          "path": "presets",
          "label": "Presets",
          "value_type": "array",
          "role": "style",
          "editable": true,
          "repeated": false,
          "summary": "Presets is a array field used for style."
        },
        {
          "path": "recipes",
          "label": "Recipes",
          "value_type": "array",
          "role": "content",
          "editable": true,
          "repeated": false,
          "summary": "Recipes is a array field used for content."
        },
        {
          "path": "block_types",
          "label": "Block Types",
          "value_type": "array",
          "role": "collection",
          "editable": true,
          "repeated": false,
          "summary": "Block Types is a array field used for collection."
        },
        {
          "path": "block_collections",
          "label": "Block Collections",
          "value_type": "array",
          "role": "collection",
          "editable": true,
          "repeated": false,
          "summary": "Block Collections is a array field used for collection."
        },
        {
          "path": "block_collections[].id",
          "label": "Block Collections Item Id",
          "value_type": "string",
          "role": "collection",
          "editable": true,
          "repeated": true,
          "summary": "Block Collections Item Id is a string collection field used for collection."
        },
        {
          "path": "block_collections[].label",
          "label": "Block Collections Item Label",
          "value_type": "string",
          "role": "copy",
          "editable": true,
          "repeated": true,
          "summary": "Block Collections Item Label is a string collection field used for copy."
        },
        {
          "path": "block_collections[].description",
          "label": "Block Collections Item Description",
          "value_type": "string",
          "role": "copy",
          "editable": true,
          "repeated": true,
          "summary": "Block Collections Item Description is a string collection field used for copy."
        },
        {
          "path": "block_collections[].block_types",
          "label": "Block Collections Item Block Types",
          "value_type": "array",
          "role": "collection",
          "editable": true,
          "repeated": true,
          "summary": "Block Collections Item Block Types is a array collection field used for collection."
        },
        {
          "path": "preview_layout",
          "label": "Preview Layout",
          "value_type": "string",
          "role": "style",
          "editable": true,
          "repeated": false,
          "summary": "Preview Layout is a string field used for style."
        },
        {
          "path": "default_theme",
          "label": "Default Theme",
          "value_type": "string",
          "role": "style",
          "editable": true,
          "repeated": false,
          "summary": "Default Theme is a string field used for style."
        },
        {
          "path": "default_preset",
          "label": "Default Preset",
          "value_type": "string",
          "role": "style",
          "editable": true,
          "repeated": false,
          "summary": "Default Preset is a string field used for style."
        },
        {
          "path": "default_recipe",
          "label": "Default Recipe",
          "value_type": "string",
          "role": "content",
          "editable": true,
          "repeated": false,
          "summary": "Default Recipe is a string field used for content."
        },
        {
          "path": "default_block_collection",
          "label": "Default Block Collection",
          "value_type": "string",
          "role": "collection",
          "editable": true,
          "repeated": false,
          "summary": "Default Block Collection is a string field used for collection."
        },
        {
          "path": "default_design_configuration",
          "label": "Default Design Configuration",
          "value_type": "string",
          "role": "content",
          "editable": true,
          "repeated": false,
          "summary": "Default Design Configuration is a string field used for content."
        },
        {
          "path": "default_media_placeholder",
          "label": "Default Media Placeholder",
          "value_type": "string",
          "role": "media",
          "editable": true,
          "repeated": false,
          "summary": "Default Media Placeholder is a string field used for media."
        },
        {
          "path": "design_configurations",
          "label": "Design Configurations",
          "value_type": "array",
          "role": "content",
          "editable": true,
          "repeated": false,
          "summary": "Design Configurations is a array field used for content."
        },
        {
          "path": "design_configurations[].id",
          "label": "Design Configurations Item Id",
          "value_type": "string",
          "role": "content",
          "editable": true,
          "repeated": true,
          "summary": "Design Configurations Item Id is a string collection field used for content."
        },
        {
          "path": "design_configurations[].label",
          "label": "Design Configurations Item Label",
          "value_type": "string",
          "role": "copy",
          "editable": true,
          "repeated": true,
          "summary": "Design Configurations Item Label is a string collection field used for copy."
        },
        {
          "path": "design_configurations[].description",
          "label": "Design Configurations Item Description",
          "value_type": "string",
          "role": "copy",
          "editable": true,
          "repeated": true,
          "summary": "Design Configurations Item Description is a string collection field used for copy."
        },
        {
          "path": "design_configurations[].theme",
          "label": "Design Configurations Item Theme",
          "value_type": "object",
          "role": "style",
          "editable": true,
          "repeated": true,
          "summary": "Design Configurations Item Theme is a object collection field used for style."
        },
        {
          "path": "media_placeholders",
          "label": "Media Placeholders",
          "value_type": "array",
          "role": "media",
          "editable": true,
          "repeated": false,
          "summary": "Media Placeholders is a array field used for media."
        },
        {
          "path": "media_placeholders[].id",
          "label": "Media Placeholders Item Id",
          "value_type": "string",
          "role": "media",
          "editable": true,
          "repeated": true,
          "summary": "Media Placeholders Item Id is a string collection field used for media."
        },
        {
          "path": "media_placeholders[].label",
          "label": "Media Placeholders Item Label",
          "value_type": "string",
          "role": "copy",
          "editable": true,
          "repeated": true,
          "summary": "Media Placeholders Item Label is a string collection field used for copy."
        },
        {
          "path": "media_placeholders[].src",
          "label": "Media Placeholders Item Src",
          "value_type": "string",
          "role": "media",
          "editable": true,
          "repeated": true,
          "summary": "Media Placeholders Item Src is a string collection field used for media."
        },
        {
          "path": "media_placeholders[].alt",
          "label": "Media Placeholders Item Alt",
          "value_type": "string",
          "role": "media",
          "editable": true,
          "repeated": true,
          "summary": "Media Placeholders Item Alt is a string collection field used for media."
        },
        {
          "path": "media_placeholders[].aspect_ratio",
          "label": "Media Placeholders Item Aspect Ratio",
          "value_type": "string",
          "role": "media",
          "editable": true,
          "repeated": true,
          "summary": "Media Placeholders Item Aspect Ratio is a string collection field used for media."
        },
        {
          "path": "media_placeholders[].source_url",
          "label": "Media Placeholders Item Source Url",
          "value_type": "string",
          "role": "action",
          "editable": true,
          "repeated": true,
          "summary": "Media Placeholders Item Source Url is a string collection field used for action."
        }
      ],
      "editor_guidance_count": 6,
      "editor_guidance_map": [
        {
          "id": "copy",
          "label": "Copy",
          "field_role": "copy",
          "field_count": 7,
          "editable_count": 7,
          "editor_widget": "text/rich-text editor",
          "validation": "Text should be editable, trimmed, localizable, and safe to wrap at mobile widths.",
          "default_source": "cloneable block recipe payload",
          "summary": "Copy fields use the text/rich-text editor across 7/7 editable fields."
        },
        {
          "id": "media",
          "label": "Media",
          "field_role": "media",
          "field_count": 6,
          "editable_count": 6,
          "editor_widget": "media picker with alt text",
          "validation": "Media should use a replaceable URL plus meaningful alt, label, or title fallback.",
          "default_source": "Cloud Elephants placeholder media or CMS media library",
          "summary": "Media fields use the media picker with alt text across 6/6 editable fields."
        },
        {
          "id": "action",
          "label": "Action",
          "field_role": "action",
          "field_count": 1,
          "editable_count": 1,
          "editor_widget": "link or event action editor",
          "validation": "Actions should resolve to a URL or event name with a human-readable label.",
          "default_source": "CMS route, URL, or canonical postEvent path",
          "summary": "Action fields use the link or event action editor across 1/1 editable field."
        },
        {
          "id": "collection",
          "label": "Collection",
          "field_role": "collection",
          "field_count": 5,
          "editable_count": 5,
          "editor_widget": "repeatable item editor",
          "validation": "Collections should support add, remove, reorder, and item-level editing without changing block shape.",
          "default_source": "cloneable block recipe payload",
          "summary": "Collection fields use the repeatable item editor across 5/5 editable fields."
        },
        {
          "id": "style",
          "label": "Style",
          "field_role": "style",
          "field_count": 5,
          "editable_count": 5,
          "editor_widget": "appearance preset selector",
          "validation": "Style fields should prefer recipe or appearance tokens over one-off inline values.",
          "default_source": "Polished SaaS recipe tokens",
          "summary": "Style fields use the appearance preset selector across 5/5 editable fields."
        },
        {
          "id": "content",
          "label": "Content",
          "field_role": "content",
          "field_count": 5,
          "editable_count": 5,
          "editor_widget": "plain content field",
          "validation": "Content should remain serializable JSON and preserve the documented block contract.",
          "default_source": "cloneable block recipe payload",
          "summary": "Content fields use the plain content field across 5/5 editable fields."
        }
      ],
      "editor_field_roles": [
        "copy",
        "media",
        "action",
        "collection",
        "style",
        "content"
      ],
      "editor_editable_field_count": 29,
      "state_readiness_count": 6,
      "state_readiness_map": [
        {
          "id": "default",
          "label": "Default",
          "status": "covered",
          "trigger": "Initial render with the cloneable recipe payload",
          "visual_treatment": "Polished SaaS tokens with default documentation treatment",
          "token_roles": [
            "surface",
            "panel",
            "text",
            "button"
          ],
          "proof": "The Polished SaaS recipe renders a contract-safe primary state for theme-preview-matrix.",
          "summary": "Default state uses the recipe surface, text, and action tokens without one-off styling."
        },
        {
          "id": "empty",
          "label": "Empty",
          "status": "covered",
          "trigger": "Repeatable collections have zero items",
          "visual_treatment": "Reserved panel space with fallback copy or placeholder media",
          "token_roles": [
            "panel",
            "textMuted",
            "badge",
            "border"
          ],
          "proof": "Repeatable fields are documented for add, remove, reorder, and item-level editing.",
          "summary": "Empty-state guidance preserves layout rhythm instead of collapsing the block surface."
        },
        {
          "id": "pending",
          "label": "Pending",
          "status": "covered",
          "trigger": "Deferred content or preview loading",
          "visual_treatment": "Neutral reserved frame with status copy and no layout shift",
          "token_roles": [
            "control",
            "textMuted",
            "progressTrack",
            "border"
          ],
          "proof": "Static recipe payloads reserve the same documented frame while content is loading.",
          "summary": "Pending state keeps dimensions stable while using muted control/status tokens."
        },
        {
          "id": "active",
          "label": "Active",
          "status": "covered",
          "trigger": "Current block and recipe preview are selected",
          "visual_treatment": "Signal/uplink emphasis with visible selected-state chips",
          "token_roles": [
            "signal",
            "uplink",
            "button",
            "badge"
          ],
          "proof": "Recipe and block selection evidence is rendered in the documentation chrome.",
          "summary": "Active state is represented with recipe accent tokens and visible state labels."
        },
        {
          "id": "invalid",
          "label": "Invalid",
          "status": "covered",
          "trigger": "Media URL or provider data is invalid",
          "visual_treatment": "Warning/danger status treatment while preserving the block frame",
          "token_roles": [
            "warning",
            "danger",
            "border",
            "text"
          ],
          "proof": "Media guidance requires URL plus accessible fallback text for invalid or missing assets.",
          "summary": "Invalid state guidance favors explicit status evidence over ambiguous visual collapse."
        },
        {
          "id": "disabled",
          "label": "Disabled",
          "status": "covered",
          "trigger": "Noninteractive metadata or held preview state",
          "visual_treatment": "Muted affordance with preserved label, spacing, and hit-area rhythm",
          "token_roles": [
            "control",
            "textMuted",
            "border",
            "panel"
          ],
          "proof": "Noninteractive blocks retain evidence labels without pretending to be clickable.",
          "summary": "Disabled state keeps the block readable and spatially stable when interaction is unavailable."
        }
      ],
      "state_readiness_states": [
        "default",
        "empty",
        "pending",
        "active",
        "invalid",
        "disabled"
      ],
      "state_readiness_statuses": [
        "covered",
        "covered",
        "covered",
        "covered",
        "covered",
        "covered"
      ],
      "anatomy_region_count": 6,
      "anatomy_map": [
        {
          "id": "surface",
          "label": "Surface",
          "region_role": "outer layout and background",
          "field_paths": [],
          "token_roles": [
            "background",
            "panel",
            "panelElevated",
            "border"
          ],
          "state_ids": [
            "default",
            "empty",
            "pending",
            "active",
            "invalid",
            "disabled"
          ],
          "required": true,
          "summary": "theme-preview-matrix uses recipe surface tokens to keep the outer frame styled and composable."
        },
        {
          "id": "copy",
          "label": "Copy",
          "region_role": "headings, body copy, labels, and supporting text",
          "field_paths": [
            "block_collections[].description",
            "block_collections[].label",
            "description",
            "design_configurations[].description",
            "design_configurations[].label",
            "media_placeholders[].label",
            "title"
          ],
          "token_roles": [
            "text",
            "textMuted"
          ],
          "state_ids": [
            "default",
            "empty",
            "pending",
            "active",
            "invalid",
            "disabled"
          ],
          "required": true,
          "summary": "Copy fields map to primary and muted text roles so editors can change words without restyling the block."
        },
        {
          "id": "media",
          "label": "Media",
          "region_role": "replaceable image, iframe, embed, avatar, logo, or gallery area",
          "field_paths": [
            "default_media_placeholder",
            "media_placeholders",
            "media_placeholders[].alt",
            "media_placeholders[].aspect_ratio",
            "media_placeholders[].id",
            "media_placeholders[].src"
          ],
          "token_roles": [
            "panelElevated",
            "border"
          ],
          "state_ids": [
            "default",
            "empty",
            "pending",
            "active",
            "invalid",
            "disabled"
          ],
          "required": false,
          "summary": "Media fields stay isolated from copy and action regions so replacement assets preserve the recipe layout."
        },
        {
          "id": "actions",
          "label": "Actions",
          "region_role": "CTA, link, event, and navigation affordances",
          "field_paths": [
            "media_placeholders[].source_url"
          ],
          "token_roles": [
            "button",
            "buttonText",
            "signal",
            "uplink"
          ],
          "state_ids": [
            "default",
            "empty",
            "pending",
            "active",
            "invalid",
            "disabled"
          ],
          "required": false,
          "summary": "Action regions use recipe button and accent tokens while preserving href or event payloads."
        },
        {
          "id": "collection",
          "label": "Collection",
          "region_role": "repeatable cards, steps, metrics, logos, links, or nested blocks",
          "field_paths": [
            "block_collections",
            "block_collections[].block_types",
            "block_collections[].id",
            "block_types",
            "default_block_collection"
          ],
          "token_roles": [
            "panel",
            "panelElevated",
            "border",
            "badge"
          ],
          "state_ids": [
            "default",
            "empty",
            "pending",
            "active",
            "invalid",
            "disabled"
          ],
          "required": false,
          "summary": "Collection regions define repeatable item boundaries for add, remove, reorder, and nested editing."
        },
        {
          "id": "feedback",
          "label": "Feedback",
          "region_role": "status, validation, selected, loading, and disabled evidence",
          "field_paths": [],
          "token_roles": [
            "badge",
            "badgeText",
            "signal"
          ],
          "state_ids": [
            "default",
            "empty",
            "pending",
            "active",
            "invalid",
            "disabled"
          ],
          "required": true,
          "summary": "Feedback regions tie state-readiness evidence to visible recipe status treatments."
        }
      ],
      "anatomy_regions": [
        "surface",
        "copy",
        "media",
        "actions",
        "collection",
        "feedback"
      ],
      "anatomy_token_roles": [
        "background",
        "badge",
        "badgeText",
        "border",
        "button",
        "buttonText",
        "panel",
        "panelElevated",
        "signal",
        "text",
        "textMuted",
        "uplink"
      ],
      "action_count": 0,
      "action_map": [],
      "control_count": 0,
      "control_map": [],
      "style_token_count": 15,
      "style_token_map": [
        {
          "role": "background",
          "label": "Page background",
          "value": "#f7fbff",
          "token_type": "color",
          "summary": "Page background uses the background recipe token."
        },
        {
          "role": "panel",
          "label": "Panel surface",
          "value": "#ffffff",
          "token_type": "color",
          "summary": "Panel surface uses the panel recipe token."
        },
        {
          "role": "panelElevated",
          "label": "Elevated surface",
          "value": "#ffffff",
          "token_type": "color",
          "summary": "Elevated surface uses the panelElevated recipe token."
        },
        {
          "role": "text",
          "label": "Primary text",
          "value": "#142033",
          "token_type": "color",
          "summary": "Primary text uses the text recipe token."
        },
        {
          "role": "textMuted",
          "label": "Muted text",
          "value": "#526174",
          "token_type": "color",
          "summary": "Muted text uses the textMuted recipe token."
        },
        {
          "role": "signal",
          "label": "Signal accent",
          "value": "#166bff",
          "token_type": "color",
          "summary": "Signal accent uses the signal recipe token."
        },
        {
          "role": "uplink",
          "label": "Secondary accent",
          "value": "#00a6a6",
          "token_type": "color",
          "summary": "Secondary accent uses the uplink recipe token."
        },
        {
          "role": "border",
          "label": "Border",
          "value": "#d6dee8",
          "token_type": "color",
          "summary": "Border uses the border recipe token."
        },
        {
          "role": "control",
          "label": "Control surface",
          "value": "#ffffff",
          "token_type": "color",
          "summary": "Control surface uses the control recipe token."
        },
        {
          "role": "controlText",
          "label": "Control text",
          "value": "#142033",
          "token_type": "color",
          "summary": "Control text uses the controlText recipe token."
        },
        {
          "role": "button",
          "label": "Button surface",
          "value": "#166bff",
          "token_type": "color",
          "summary": "Button surface uses the button recipe token."
        },
        {
          "role": "buttonText",
          "label": "Button text",
          "value": "#ffffff",
          "token_type": "color",
          "summary": "Button text uses the buttonText recipe token."
        },
        {
          "role": "badge",
          "label": "Badge surface",
          "value": "#eef5ff",
          "token_type": "color",
          "summary": "Badge surface uses the badge recipe token."
        },
        {
          "role": "badgeText",
          "label": "Badge text",
          "value": "#174ea6",
          "token_type": "color",
          "summary": "Badge text uses the badgeText recipe token."
        },
        {
          "role": "fontFamily",
          "label": "Font family",
          "value": "Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, \"Segoe UI\", sans-serif",
          "token_type": "font",
          "summary": "Font family comes from the active recipe theme tokens."
        }
      ],
      "style_token_roles": [
        "background",
        "panel",
        "panelElevated",
        "text",
        "textMuted",
        "signal",
        "uplink",
        "border",
        "control",
        "controlText",
        "button",
        "buttonText",
        "badge",
        "badgeText",
        "fontFamily"
      ],
      "contrast_check_count": 6,
      "contrast_pass_count": 6,
      "contrast_checks": [
        {
          "id": "text-on-background",
          "label": "Text on background",
          "foreground_role": "text",
          "background_role": "background",
          "foreground": "#142033",
          "background": "#f7fbff",
          "ratio": 15.73,
          "required_ratio": 4.5,
          "passes": true,
          "level": "AAA",
          "summary": "Text on background is AAA at 15.73:1 against a 4.5:1 requirement."
        },
        {
          "id": "text-on-panel",
          "label": "Text on panel",
          "foreground_role": "text",
          "background_role": "panel",
          "foreground": "#142033",
          "background": "#ffffff",
          "ratio": 16.35,
          "required_ratio": 4.5,
          "passes": true,
          "level": "AAA",
          "summary": "Text on panel is AAA at 16.35:1 against a 4.5:1 requirement."
        },
        {
          "id": "muted-text-on-panel",
          "label": "Muted text on panel",
          "foreground_role": "textMuted",
          "background_role": "panel",
          "foreground": "#526174",
          "background": "#ffffff",
          "ratio": 6.32,
          "required_ratio": 4.5,
          "passes": true,
          "level": "AA",
          "summary": "Muted text on panel is AA at 6.32:1 against a 4.5:1 requirement."
        },
        {
          "id": "button-text-on-button",
          "label": "Button text on button",
          "foreground_role": "buttonText",
          "background_role": "button",
          "foreground": "#ffffff",
          "background": "#166bff",
          "ratio": 4.58,
          "required_ratio": 4.5,
          "passes": true,
          "level": "AA",
          "summary": "Button text on button is AA at 4.58:1 against a 4.5:1 requirement."
        },
        {
          "id": "control-text-on-control",
          "label": "Control text on control",
          "foreground_role": "controlText",
          "background_role": "control",
          "foreground": "#142033",
          "background": "#ffffff",
          "ratio": 16.35,
          "required_ratio": 4.5,
          "passes": true,
          "level": "AAA",
          "summary": "Control text on control is AAA at 16.35:1 against a 4.5:1 requirement."
        },
        {
          "id": "badge-text-on-badge",
          "label": "Badge text on badge",
          "foreground_role": "badgeText",
          "background_role": "badge",
          "foreground": "#174ea6",
          "background": "#eef5ff",
          "ratio": 7.15,
          "required_ratio": 4.5,
          "passes": true,
          "level": "AAA",
          "summary": "Badge text on badge is AAA at 7.15:1 against a 4.5:1 requirement."
        }
      ],
      "contrast_target": "AA",
      "accessibility_standard": "WCAG_2_2_AA",
      "accessibility_check_count": 5,
      "accessibility_checks": [
        {
          "id": "semantic-structure",
          "label": "Semantic structure",
          "category": "semantics",
          "status": "covered",
          "required": true,
          "proof": "runtime block sections, cards, lists, and headings",
          "summary": "theme-preview-matrix keeps semantic wrappers and readable heading/copy structure in the runtime preview."
        },
        {
          "id": "keyboard-and-tap-targets",
          "label": "Keyboard and tap targets",
          "category": "keyboard",
          "status": "covered",
          "required": false,
          "proof": "static content has no hidden focus trap",
          "summary": "The payload is static content, so the accessibility contract is to avoid hidden or misleading interactive affordances."
        },
        {
          "id": "text-alternatives",
          "label": "Text alternatives",
          "category": "media",
          "status": "covered",
          "required": true,
          "proof": "media fields include alt/label/title fallbacks",
          "summary": "Media-ready recipes expose replaceable alt text or accessible labels for images, logos, embeds, and placeholders."
        },
        {
          "id": "control-labels",
          "label": "Control labels",
          "category": "forms",
          "status": "covered",
          "required": false,
          "proof": "no input controls in this payload",
          "summary": "No input controls are present, so there are no unlabeled fields to remediate."
        },
        {
          "id": "status-and-motion",
          "label": "Status and motion",
          "category": "state",
          "status": "covered",
          "required": true,
          "proof": "runtime evidence avoids hidden status-only content",
          "summary": "Recipe defaults avoid motion-only meaning and keep status text inspectable when state is present."
        }
      ],
      "responsive_behavior_count": 3,
      "responsive_behavior_map": [
        {
          "id": "phone",
          "label": "Phone",
          "viewport_width": 390,
          "layout_mode": "single-column stack",
          "column_count": 1,
          "spacing_density": "comfortable",
          "media_policy": "Media slots remain optional and collapse without leaving empty chrome.",
          "overflow_policy": "min-width:0 surfaces, wrapping copy, and no horizontal overflow in the static catalog phone smoke.",
          "interaction_policy": "Static content keeps readable line lengths and avoids hidden interactive affordances.",
          "proof": "npm run test:static:block-catalog all-blocks-phone",
          "summary": "Polished SaaS stacks theme-preview-matrix into one phone column with comfortable spacing and bounded content."
        },
        {
          "id": "tablet",
          "label": "Tablet",
          "viewport_width": 768,
          "layout_mode": "two-column adaptive grid",
          "column_count": 2,
          "spacing_density": "comfortable",
          "media_policy": "Media slots remain optional and collapse without leaving empty chrome.",
          "overflow_policy": "tablet preview frames keep mid-width composition, wrap controls, and avoid horizontal overflow in the static catalog smoke.",
          "interaction_policy": "Static content keeps readable line lengths and avoids hidden interactive affordances.",
          "proof": "npm run test:static:block-catalog all-blocks-tablet",
          "summary": "Polished SaaS adapts theme-preview-matrix to 2 tablet columns before expanding to the desktop layout."
        },
        {
          "id": "desktop",
          "label": "Desktop",
          "viewport_width": 1366,
          "layout_mode": "responsive composition grid",
          "column_count": 3,
          "spacing_density": "comfortable",
          "media_policy": "Media slots remain optional and collapse without leaving empty chrome.",
          "overflow_policy": "desktop preview frames keep constrained widths, stable cards, and no horizontal overflow in the static catalog smoke.",
          "interaction_policy": "Static content keeps readable line lengths and avoids hidden interactive affordances.",
          "proof": "npm run test:static:block-catalog all-blocks-desktop",
          "summary": "Polished SaaS gives theme-preview-matrix up to 3 desktop columns while preserving recipe spacing."
        }
      ],
      "responsive_viewports": [
        "phone",
        "tablet",
        "desktop"
      ],
      "responsive_proof": [
        "npm run test:static:block-catalog all-blocks-phone",
        "npm run test:static:block-catalog all-blocks-tablet",
        "npm run test:static:block-catalog all-blocks-desktop"
      ],
      "interactive_roles": [],
      "recipe_alignment": {
        "action_token": "button",
        "control_token": "control",
        "surface_token": "panel",
        "text_token": "text",
        "source": "theme recipe tokens"
      }
    },
    "cloneable": true
  }
}
bento

Media Ready

Polished SaaS Growthmedia

A brandable payload that includes placeholder media where the block can express imagery, previews, or visual proof.

Component anatomy

Media Ready anatomy

6 regions
Surfaceouter layout and background
required0 fields4 tokens

theme-preview-matrix uses recipe surface tokens to keep the outer frame styled and composable.

background, panel, panelElevated, border
Copyheadings, body copy, labels, and supporting text
required7 fields2 tokens

Copy fields map to primary and muted text roles so editors can change words without restyling the block.

text, textMuted
Mediareplaceable image, iframe, embed, avatar, logo, or gallery area
optional6 fields2 tokens

Media fields stay isolated from copy and action regions so replacement assets preserve the recipe layout.

panelElevated, border
ActionsCTA, link, event, and navigation affordances
optional1 fields4 tokens

Action regions use recipe button and accent tokens while preserving href or event payloads.

button, buttonText, signal, uplink
Collectionrepeatable cards, steps, metrics, logos, links, or nested blocks
optional5 fields4 tokens

Collection regions define repeatable item boundaries for add, remove, reorder, and nested editing.

panel, panelElevated, border, badge
Feedbackstatus, validation, selected, loading, and disabled evidence
required0 fields3 tokens

Feedback regions tie state-readiness evidence to visible recipe status treatments.

badge, badgeText, signal
Recipe passport

Media Ready passport

high
Fitmedia-led

Use when the theme-preview-matrix story depends on replaceable imagery, embeds, logos, or visual proof.

Editable fields29/29

Media Ready is a high-complexity media-led recipe with 6 documented composition slots.

Interactions0 actions / 0 controls

3 required regions, 3 optional regions.

Slots
Surface / 0/0Copy / 7/7Media / 6/6Actions / 1/1Collection / 5/5Feedback / 0/0
Replacement guidance
  • Keep Polished SaaS Growth recipe tokens as the source of visual styling for the surface, text, controls, and actions.
  • Replace media URLs through the CMS media library and preserve alt, title, provider, or label fallbacks.
  • No action wiring is required for this recipe; avoid inventing clickable surfaces in content.
  • No input controls are required; keep the recipe focused on its documented display regions.
  • Treat collection regions as repeatable slots that support add, remove, reorder, and item-level editing.
Publish checklist
  • Validate theme-preview-matrix against its block contract before publishing.
  • 3 required anatomy regions remain present: surface, copy, feedback.
  • 29/29 builder fields are CMS-editable or intentionally locked.
  • Noninteractive presentation has no unexpected action or control surfaces.
  • Phone, tablet, and desktop responsive behavior maps have been reviewed for wrapping and overflow.
  • Contrast checks meet the AA recipe target.
Recipe fit

Media Ready recipe fit

6 axes
Page contextpage / primary
listingproduct-pageproduct-announcementblogevent-promotionpartnership-announcement

theme-preview-matrix is best composed into listing, product-page, product-announcement, and related pages.

6 page types mapped for theme-preview-matrix.Choose the first matching page type before editing copy, media, or actions so the recipe starts in the right narrative context.
Section rolelayout / supporting
collectionmediacontentmetadata

theme-preview-matrix can act as collection, media, content within a composed page.

6 anatomy regions produce 4 section roles.Place the block where its required anatomy regions have enough room before compressing it into dense page slots.
Content modelcontent / specialized
copy-ledmedia-ledcta-ledrepeatable

Media Ready composition passport is copy-led, media-led, cta-led, repeatable for CMS composition.

29/29 fields are editable across 4 content models.Keep the content model stable when replacing defaults; do not turn a repeatable or media-led recipe into unrelated ad hoc content.
Interaction modelinteraction / supporting
noninteractive

theme-preview-matrix is compatible with noninteractive content sections.

0 action surfaces and 0 control surfaces mapped.Review href, event, input, required, and disabled-state evidence before publishing an interactive recipe.
Authoring fitauthoring / specialized
media-ledhigh-complexity0-high-care-replacements

theme-preview-matrix uses media-led authoring with high complexity.

29 default provenance items with 0 high-care replacements.Use the default provenance map before cloning the recipe into CMS content or agent-generated page data.
Responsive fitresponsive / primary
single-column stacktwo-column adaptive gridresponsive composition gridmin-width:0 surfaces, wrapping copy, and no horizontal overflow in the static catalog phone smoke.

theme-preview-matrix has explicit phone, tablet, and desktop compatibility evidence for composed pages.

3 responsive behavior maps cover phone, tablet, and desktop composition.Review phone wrapping, tablet mid-width balance, and desktop density before adding nested content, longer labels, or extra media.
Visual polish

Media Ready visual polish

6/6
Surface rhythmlayout

theme-preview-matrix keeps a stable recipe surface with panel, border, and spacing roles instead of ad hoc wrappers.

image treatment uses spacious density and 18px radius base.background, panel, panelElevated, border
Type hierarchytypography

Primary, muted, and badge text roles stay distinct enough for headings, body copy, metadata, and helper text.

6/6 contrast checks pass the AA target.text, textMuted, badgeText
Action clarityinteraction

No unexpected interactive surface is introduced for this noninteractive recipe.

0 action surfaces and 0 control surfaces mapped.button, buttonText, control, controlText, signal, uplink
Media treatmentmedia

Replaceable media stays framed separately from copy and action regions so asset swaps preserve the layout.

Media region is isolated with replaceable fields.panelElevated, border, textMuted
State feedbackstate

Feedback, selected, loading, invalid, and disabled treatments use visible state evidence instead of color-only meaning.

6 state-readiness entries include default, empty, pending, active, invalid, disabled.badge, badgeText, signal
Responsive balanceresponsive

Phone, tablet, and desktop defaults have explicit stack, wrap, media, and overflow policies for the recipe.

single-column stack phone behavior, two-column adaptive grid tablet behavior, and responsive composition grid desktop behavior documented.panel, border, control
Default provenance

Media Ready default provenance

29 fields
collection-itemlocked-tokenrequires-alt-textsafe-to-edit
  • Titletitle
    safe-to-editlow

    Copy can be edited directly when text remains trimmed, localizable, and safe to wrap at phone widths.

    cloneable block recipe payload
  • Descriptiondescription
    safe-to-editlow

    Copy can be edited directly when text remains trimmed, localizable, and safe to wrap at phone widths.

    cloneable block recipe payload
  • Presetspresets
    locked-tokenmedium

    Keep visual styling aligned to Polished SaaS Growth recipe tokens unless the recipe itself changes.

    Polished SaaS Growth recipe tokens
  • Recipesrecipes
    safe-to-editlow

    Copy can be edited directly when text remains trimmed, localizable, and safe to wrap at phone widths.

    cloneable block recipe payload
  • Block Typesblock_types
    collection-itemmedium

    Edit repeatable items through collection controls so add, remove, reorder, and item-level updates preserve shape.

    cloneable block recipe payload
  • Block Collectionsblock_collections
    collection-itemmedium

    Edit repeatable items through collection controls so add, remove, reorder, and item-level updates preserve shape.

    cloneable block recipe payload
  • Block Collections Item Idblock_collections[].id
    collection-itemmediumrepeated

    Edit repeatable items through collection controls so add, remove, reorder, and item-level updates preserve shape.

    cloneable block recipe payload
  • Block Collections Item Labelblock_collections[].label
    collection-itemmediumrepeated

    Edit repeatable items through collection controls so add, remove, reorder, and item-level updates preserve shape.

    cloneable block recipe payload
  • Block Collections Item Descriptionblock_collections[].description
    collection-itemmediumrepeated

    Edit repeatable items through collection controls so add, remove, reorder, and item-level updates preserve shape.

    cloneable block recipe payload
  • Block Collections Item Block Typesblock_collections[].block_types
    collection-itemmediumrepeated

    Edit repeatable items through collection controls so add, remove, reorder, and item-level updates preserve shape.

    cloneable block recipe payload
  • Preview Layoutpreview_layout
    locked-tokenmedium

    Keep visual styling aligned to Polished SaaS Growth recipe tokens unless the recipe itself changes.

    Polished SaaS Growth recipe tokens
  • Default Themedefault_theme
    locked-tokenmedium

    Keep visual styling aligned to Polished SaaS Growth recipe tokens unless the recipe itself changes.

    Polished SaaS Growth recipe tokens
  • Default Presetdefault_preset
    locked-tokenmedium

    Keep visual styling aligned to Polished SaaS Growth recipe tokens unless the recipe itself changes.

    Polished SaaS Growth recipe tokens
  • Default Recipedefault_recipe
    safe-to-editlow

    Copy can be edited directly when text remains trimmed, localizable, and safe to wrap at phone widths.

    cloneable block recipe payload
  • Default Block Collectiondefault_block_collection
    collection-itemmedium

    Edit repeatable items through collection controls so add, remove, reorder, and item-level updates preserve shape.

    cloneable block recipe payload
  • Default Design Configurationdefault_design_configuration
    safe-to-editlow

    Copy can be edited directly when text remains trimmed, localizable, and safe to wrap at phone widths.

    cloneable block recipe payload
  • Default Media Placeholderdefault_media_placeholder
    requires-alt-textmedium

    Replace the asset through CMS media data and keep alt, title, provider, or label fallback text meaningful.

    Cloud Elephants placeholder media or CMS media library
  • Design Configurationsdesign_configurations
    safe-to-editlow

    Copy can be edited directly when text remains trimmed, localizable, and safe to wrap at phone widths.

    cloneable block recipe payload
  • Design Configurations Item Iddesign_configurations[].id
    collection-itemmediumrepeated

    Edit repeatable items through collection controls so add, remove, reorder, and item-level updates preserve shape.

    cloneable block recipe payload
  • Design Configurations Item Labeldesign_configurations[].label
    collection-itemmediumrepeated

    Edit repeatable items through collection controls so add, remove, reorder, and item-level updates preserve shape.

    cloneable block recipe payload
  • Design Configurations Item Descriptiondesign_configurations[].description
    collection-itemmediumrepeated

    Edit repeatable items through collection controls so add, remove, reorder, and item-level updates preserve shape.

    cloneable block recipe payload
  • Design Configurations Item Themedesign_configurations[].theme
    locked-tokenmediumrepeated

    Keep visual styling aligned to Polished SaaS Growth recipe tokens unless the recipe itself changes.

    Polished SaaS Growth recipe tokens
  • Media Placeholdersmedia_placeholders
    requires-alt-textmedium

    Replace the asset through CMS media data and keep alt, title, provider, or label fallback text meaningful.

    Cloud Elephants placeholder media or CMS media library
  • Media Placeholders Item Idmedia_placeholders[].id
    requires-alt-textmediumrepeated

    Replace the asset through CMS media data and keep alt, title, provider, or label fallback text meaningful.

    Cloud Elephants placeholder media or CMS media library
  • Media Placeholders Item Labelmedia_placeholders[].label
    requires-alt-textmediumrepeated

    Replace the asset through CMS media data and keep alt, title, provider, or label fallback text meaningful.

    cloneable block recipe payload
  • Media Placeholders Item Srcmedia_placeholders[].src
    requires-alt-textmediumrepeated

    Replace the asset through CMS media data and keep alt, title, provider, or label fallback text meaningful.

    Cloud Elephants placeholder media or CMS media library
  • Media Placeholders Item Altmedia_placeholders[].alt
    requires-alt-textmediumrepeated

    Replace the asset through CMS media data and keep alt, title, provider, or label fallback text meaningful.

    Cloud Elephants placeholder media or CMS media library
  • Media Placeholders Item Aspect Ratiomedia_placeholders[].aspect_ratio
    requires-alt-textmediumrepeated

    Replace the asset through CMS media data and keep alt, title, provider, or label fallback text meaningful.

    Cloud Elephants placeholder media or CMS media library
  • Media Placeholders Item Source Urlmedia_placeholders[].source_url
    requires-alt-textmediumrepeated

    Replace the asset through CMS media data and keep alt, title, provider, or label fallback text meaningful.

    CMS route, URL, or canonical postEvent path
Edit bundles

Media Ready edit bundles

6 bundles
Copy bundlerequired / repeatable-items
block_collections[].descriptionblock_collections[].labeldescriptiondesign_configurations[].descriptiondesign_configurations[].labelmedia_placeholders[].label+1

Copy bundle groups 7 fields so CMS edits preserve the recipe shape and default polish.

cloneable block recipe payloadEdit repeatable items through collection controls so add, remove, reorder, and item-level updates preserve shape.
Media bundlerecommended / repeatable-items
default_media_placeholdermedia_placeholdersmedia_placeholders[].altmedia_placeholders[].aspect_ratiomedia_placeholders[].idmedia_placeholders[].src

Media bundle groups 6 fields so CMS edits preserve the recipe shape and default polish.

Cloud Elephants placeholder media or CMS media libraryReplace the asset through CMS media data and keep alt, title, provider, or label fallback text meaningful.
Action bundlerecommended / repeatable-items
media_placeholders[].source_url

Action bundle groups 1 field so CMS edits preserve the recipe shape and default polish.

CMS route, URL, or canonical postEvent pathReplace the asset through CMS media data and keep alt, title, provider, or label fallback text meaningful.
Collection bundlerecommended / repeatable-items
block_collectionsblock_collections[].block_typesblock_collections[].idblock_typesdefault_block_collection

Collection bundle groups 5 fields so CMS edits preserve the recipe shape and default polish.

cloneable block recipe payloadEdit repeatable items through collection controls so add, remove, reorder, and item-level updates preserve shape.
Style bundleguarded / guarded-system
default_presetdefault_themedesign_configurations[].themepresetspreview_layout

Style bundle groups 5 fields so CMS edits preserve the recipe shape and default polish.

Polished SaaS Growth recipe tokensKeep visual styling aligned to Polished SaaS Growth recipe tokens unless the recipe itself changes.
Content bundlerequired / repeatable-items
default_design_configurationdefault_recipedesign_configurationsdesign_configurations[].idrecipes

Content bundle groups 5 fields so CMS edits preserve the recipe shape and default polish.

cloneable block recipe payloadCopy can be edited directly when text remains trimmed, localizable, and safe to wrap at phone widths.
CMS composition

Media Ready fields

29 fields
actioncollectioncontentcopymediastyle
  • Titletitle
    copystring
  • Descriptiondescription
    copystring
  • Presetspresets
    stylearray
  • Recipesrecipes
    contentarray
  • Block Typesblock_types
    collectionarray
  • Block Collectionsblock_collections
    collectionarray
  • Block Collections Item Idblock_collections[].id
    collectionstringrepeated
  • Block Collections Item Labelblock_collections[].label
    copystringrepeated
  • Block Collections Item Descriptionblock_collections[].description
    copystringrepeated
  • Block Collections Item Block Typesblock_collections[].block_types
    collectionarrayrepeated
  • Preview Layoutpreview_layout
    stylestring
  • Default Themedefault_theme
    stylestring
  • Default Presetdefault_preset
    stylestring
  • Default Recipedefault_recipe
    contentstring
  • Default Block Collectiondefault_block_collection
    collectionstring
  • Default Design Configurationdefault_design_configuration
    contentstring
  • Default Media Placeholderdefault_media_placeholder
    mediastring
  • Design Configurationsdesign_configurations
    contentarray
  • Design Configurations Item Iddesign_configurations[].id
    contentstringrepeated
  • Design Configurations Item Labeldesign_configurations[].label
    copystringrepeated
  • Design Configurations Item Descriptiondesign_configurations[].description
    copystringrepeated
  • Design Configurations Item Themedesign_configurations[].theme
    styleobjectrepeated
  • Media Placeholdersmedia_placeholders
    mediaarray
  • Media Placeholders Item Idmedia_placeholders[].id
    mediastringrepeated
  • Media Placeholders Item Labelmedia_placeholders[].label
    copystringrepeated
  • Media Placeholders Item Srcmedia_placeholders[].src
    mediastringrepeated
  • Media Placeholders Item Altmedia_placeholders[].alt
    mediastringrepeated
  • Media Placeholders Item Aspect Ratiomedia_placeholders[].aspect_ratio
    mediastringrepeated
  • Media Placeholders Item Source Urlmedia_placeholders[].source_url
    actionstringrepeated
CMS editing

Media Ready editor guidance

29/29 editable
Copytext/rich-text editor
7/7 editablecopy

Text should be editable, trimmed, localizable, and safe to wrap at mobile widths.

cloneable block recipe payload
Mediamedia picker with alt text
6/6 editablemedia

Media should use a replaceable URL plus meaningful alt, label, or title fallback.

Cloud Elephants placeholder media or CMS media library
Actionlink or event action editor
1/1 editableaction

Actions should resolve to a URL or event name with a human-readable label.

CMS route, URL, or canonical postEvent path
Collectionrepeatable item editor
5/5 editablecollection

Collections should support add, remove, reorder, and item-level editing without changing block shape.

cloneable block recipe payload
Styleappearance preset selector
5/5 editablestyle

Style fields should prefer recipe or appearance tokens over one-off inline values.

Polished SaaS Growth recipe tokens
Contentplain content field
5/5 editablecontent

Content should remain serializable JSON and preserve the documented block contract.

cloneable block recipe payload
Default states

Media Ready state readiness

6 states
DefaultInitial render with the cloneable recipe payload
coveredsurfacepaneltext

Polished SaaS Growth tokens with image documentation treatment

The Polished SaaS Growth recipe renders a contract-safe primary state for theme-preview-matrix.
EmptyRepeatable collections have zero items
coveredpaneltextMutedbadge

Reserved panel space with fallback copy or placeholder media

Repeatable fields are documented for add, remove, reorder, and item-level editing.
PendingDeferred content or preview loading
coveredcontroltextMutedprogressTrack

Neutral reserved frame with status copy and no layout shift

Static recipe payloads reserve the same documented frame while content is loading.
ActiveCurrent block and recipe preview are selected
coveredsignaluplinkbutton

Signal/uplink emphasis with visible selected-state chips

Recipe and block selection evidence is rendered in the documentation chrome.
InvalidMedia URL or provider data is invalid
coveredwarningdangerborder

Warning/danger status treatment while preserving the block frame

Media guidance requires URL plus accessible fallback text for invalid or missing assets.
DisabledNoninteractive metadata or held preview state
coveredcontroltextMutedborder

Muted affordance with preserved label, spacing, and hit-area rhythm

Noninteractive blocks retain evidence labels without pretending to be clickable.
Controls and actions

Media Ready actions and controls

0 surfaces
metadata only
Actions

No public action surface is needed for this payload.

Controls

No input control is needed for this payload.

Recipe styling

Media Ready style tokens

15 tokens
Page background#f7fbff
Panel surface#ffffff
Elevated surface#ffffff
Primary text#142033
Muted text#526174
Signal accent#166bff
Secondary accent#00a6a6
Border#d6dee8
Control surface#ffffff
Control text#142033
Button surface#166bff
Button text#ffffff
Badge surface#eef5ff
Badge text#174ea6
Font familyInter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif
Readability

Media Ready contrast checks

6/6
Text on background15.73:1 / AAA
Text on panel16.35:1 / AAA
Muted text on panel6.32:1 / AA
Button text on button4.58:1 / AA
Control text on control16.35:1 / AAA
Badge text on badge7.15:1 / AAA
Accessibility proof

Media Ready accessibility checks

WCAG 2.2 AA
Semantic structuresemantics / required

theme-preview-matrix keeps semantic wrappers and readable heading/copy structure in the runtime preview.

runtime block sections, cards, lists, and headings
Keyboard and tap targetskeyboard / contextual

The payload is static content, so the accessibility contract is to avoid hidden or misleading interactive affordances.

static content has no hidden focus trap
Text alternativesmedia / required

Media-ready recipes expose replaceable alt text or accessible labels for images, logos, embeds, and placeholders.

media fields include alt/label/title fallbacks
Control labelsforms / contextual

No input controls are present, so there are no unlabeled fields to remediate.

no input controls in this payload
Status and motionstate / required

Recipe defaults avoid motion-only meaning and keep status text inspectable when state is present.

runtime evidence avoids hidden status-only content
Responsive proof

Media Ready responsive behavior

3 viewports
Phone390px / single-column stack
1 colspacious

Polished SaaS Growth stacks theme-preview-matrix into one phone column with spacious spacing and bounded content.

min-width:0 surfaces, wrapping copy, and no horizontal overflow in the static catalog phone smoke.
Tablet768px / two-column adaptive grid
2 colspacious

Polished SaaS Growth adapts theme-preview-matrix to 2 tablet columns before expanding to the desktop layout.

tablet preview frames keep mid-width composition, wrap controls, and avoid horizontal overflow in the static catalog smoke.
Desktop1366px / responsive composition grid
3 colspacious

Polished SaaS Growth gives theme-preview-matrix up to 3 desktop columns while preserving recipe spacing.

desktop preview frames keep constrained widths, stable cards, and no horizontal overflow in the static catalog smoke.
operator

Theme preview matrix sample

Polished SaaS Growth

A compact matrix configuration for documenting this governed operator block.

Themeensemble-daylight
Presetbento
Recipes1
Blocks1
Structured payload
{
  "id": "block-doc-theme-preview-matrix-data-media-ready",
  "block_type": "theme-preview-matrix",
  "props": {
    "title": "Theme preview matrix sample",
    "description": "A compact matrix configuration for documenting this governed operator block.",
    "presets": [
      "bento"
    ],
    "recipes": [
      "polished-saas-growth"
    ],
    "block_types": [
      "hero"
    ],
    "block_collections": [
      {
        "id": "single-block",
        "label": "Single Block",
        "description": "Compact documentation preview.",
        "block_types": [
          "hero"
        ]
      }
    ],
    "preview_layout": "flow",
    "default_theme": "ensemble-daylight",
    "default_preset": "bento",
    "default_recipe": "polished-saas-growth",
    "default_block_collection": "single-block",
    "default_design_configuration": "base",
    "default_media_placeholder": "block-doc-preview-media",
    "design_configurations": [
      {
        "id": "base",
        "label": "Default",
        "description": "Baseline contract props with the selected recipe and standard system preset.",
        "theme": {}
      }
    ],
    "media_placeholders": [
      {
        "id": "block-doc-preview-media",
        "label": "Essential CTO",
        "src": "https://storage.googleapis.com/msgsndr/T3RhpcTQAq7Qb47kPQAB/media/677815b8c290c684d5bf3fbd.png",
        "alt": "Cloud Elephants Essential CTO service visual.",
        "aspect_ratio": "16 / 9",
        "source_url": "https://go.cloudelephants.com/a-la-carte"
      }
    ]
  },
  "block_order": 2,
  "metadata": {
    "composition_recipe": {
      "id": "media-ready",
      "intent": "media",
      "label": "Media Ready",
      "recipe": "polished-saas-growth",
      "source": "block-explorer",
      "quality_proof": [
        "composition"
      ],
      "composition_passport": {
        "id": "media-ready",
        "label": "Media Ready composition passport",
        "intent": "media",
        "recipe": "polished-saas-growth",
        "authoring_mode": "media-led",
        "complexity": "high",
        "fit": "Use when the theme-preview-matrix story depends on replaceable imagery, embeds, logos, or visual proof.",
        "required_regions": [
          "surface",
          "copy",
          "feedback"
        ],
        "optional_regions": [
          "media",
          "actions",
          "collection"
        ],
        "slots": [
          {
            "id": "surface",
            "label": "Surface",
            "required": true,
            "field_count": 0,
            "editable_count": 0,
            "token_roles": [
              "background",
              "panel",
              "panelElevated",
              "border"
            ],
            "summary": "theme-preview-matrix uses recipe surface tokens to keep the outer frame styled and composable."
          },
          {
            "id": "copy",
            "label": "Copy",
            "required": true,
            "field_count": 7,
            "editable_count": 7,
            "token_roles": [
              "text",
              "textMuted"
            ],
            "summary": "Copy fields map to primary and muted text roles so editors can change words without restyling the block."
          },
          {
            "id": "media",
            "label": "Media",
            "required": false,
            "field_count": 6,
            "editable_count": 6,
            "token_roles": [
              "panelElevated",
              "border"
            ],
            "summary": "Media fields stay isolated from copy and action regions so replacement assets preserve the recipe layout."
          },
          {
            "id": "actions",
            "label": "Actions",
            "required": false,
            "field_count": 1,
            "editable_count": 1,
            "token_roles": [
              "button",
              "buttonText",
              "signal",
              "uplink"
            ],
            "summary": "Action regions use recipe button and accent tokens while preserving href or event payloads."
          },
          {
            "id": "collection",
            "label": "Collection",
            "required": false,
            "field_count": 5,
            "editable_count": 5,
            "token_roles": [
              "panel",
              "panelElevated",
              "border",
              "badge"
            ],
            "summary": "Collection regions define repeatable item boundaries for add, remove, reorder, and nested editing."
          },
          {
            "id": "feedback",
            "label": "Feedback",
            "required": true,
            "field_count": 0,
            "editable_count": 0,
            "token_roles": [
              "badge",
              "badgeText",
              "signal"
            ],
            "summary": "Feedback regions tie state-readiness evidence to visible recipe status treatments."
          }
        ],
        "builder_field_count": 29,
        "editable_field_count": 29,
        "action_count": 0,
        "control_count": 0,
        "replacement_guidance": [
          "Keep Polished SaaS Growth recipe tokens as the source of visual styling for the surface, text, controls, and actions.",
          "Replace media URLs through the CMS media library and preserve alt, title, provider, or label fallbacks.",
          "No action wiring is required for this recipe; avoid inventing clickable surfaces in content.",
          "No input controls are required; keep the recipe focused on its documented display regions.",
          "Treat collection regions as repeatable slots that support add, remove, reorder, and item-level editing."
        ],
        "publish_checklist": [
          "Validate theme-preview-matrix against its block contract before publishing.",
          "3 required anatomy regions remain present: surface, copy, feedback.",
          "29/29 builder fields are CMS-editable or intentionally locked.",
          "Noninteractive presentation has no unexpected action or control surfaces.",
          "Phone, tablet, and desktop responsive behavior maps have been reviewed for wrapping and overflow.",
          "Contrast checks meet the AA recipe target."
        ],
        "agent_notes": [
          "Prefer editing props fields described by the builder field map; metadata is evidence, not primary content.",
          "Preserve recipe_alignment token roles unless the page theme or recipe changes intentionally.",
          "Use the anatomy slots to compose or replace content without changing the block type."
        ],
        "summary": "Media Ready is a high-complexity media-led recipe with 6 documented composition slots."
      },
      "composition_passport_complexity": "high",
      "composition_passport_authoring_mode": "media-led",
      "composition_passport_slots": [
        "surface",
        "copy",
        "media",
        "actions",
        "collection",
        "feedback"
      ],
      "composition_passport_check_count": 6,
      "visual_polish_check_count": 6,
      "visual_polish_pass_count": 6,
      "visual_polish_checks": [
        {
          "id": "surface-rhythm",
          "label": "Surface rhythm",
          "axis": "layout",
          "status": "ready",
          "token_roles": [
            "background",
            "panel",
            "panelElevated",
            "border"
          ],
          "evidence": "image treatment uses spacious density and 18px radius base.",
          "summary": "theme-preview-matrix keeps a stable recipe surface with panel, border, and spacing roles instead of ad hoc wrappers."
        },
        {
          "id": "type-hierarchy",
          "label": "Type hierarchy",
          "axis": "typography",
          "status": "ready",
          "token_roles": [
            "text",
            "textMuted",
            "badgeText"
          ],
          "evidence": "6/6 contrast checks pass the AA target.",
          "summary": "Primary, muted, and badge text roles stay distinct enough for headings, body copy, metadata, and helper text."
        },
        {
          "id": "action-clarity",
          "label": "Action clarity",
          "axis": "interaction",
          "status": "ready",
          "token_roles": [
            "button",
            "buttonText",
            "control",
            "controlText",
            "signal",
            "uplink"
          ],
          "evidence": "0 action surfaces and 0 control surfaces mapped.",
          "summary": "No unexpected interactive surface is introduced for this noninteractive recipe."
        },
        {
          "id": "media-treatment",
          "label": "Media treatment",
          "axis": "media",
          "status": "ready",
          "token_roles": [
            "panelElevated",
            "border",
            "textMuted"
          ],
          "evidence": "Media region is isolated with replaceable fields.",
          "summary": "Replaceable media stays framed separately from copy and action regions so asset swaps preserve the layout."
        },
        {
          "id": "state-feedback",
          "label": "State feedback",
          "axis": "state",
          "status": "ready",
          "token_roles": [
            "badge",
            "badgeText",
            "signal"
          ],
          "evidence": "6 state-readiness entries include default, empty, pending, active, invalid, disabled.",
          "summary": "Feedback, selected, loading, invalid, and disabled treatments use visible state evidence instead of color-only meaning."
        },
        {
          "id": "responsive-balance",
          "label": "Responsive balance",
          "axis": "responsive",
          "status": "ready",
          "token_roles": [
            "panel",
            "border",
            "control"
          ],
          "evidence": "single-column stack phone behavior, two-column adaptive grid tablet behavior, and responsive composition grid desktop behavior documented.",
          "summary": "Phone, tablet, and desktop defaults have explicit stack, wrap, media, and overflow policies for the recipe."
        }
      ],
      "visual_polish_axes": [
        "layout",
        "typography",
        "interaction",
        "media",
        "state",
        "responsive"
      ],
      "default_provenance_count": 29,
      "default_provenance_map": [
        {
          "path": "title",
          "label": "Title",
          "field_role": "copy",
          "value_type": "string",
          "editable": true,
          "repeated": false,
          "default_source": "cloneable block recipe payload",
          "replacement_policy": "safe-to-edit",
          "replacement_risk": "low",
          "guardrail": "Copy can be edited directly when text remains trimmed, localizable, and safe to wrap at phone widths.",
          "validation": "Text should be editable, trimmed, localizable, and safe to wrap at mobile widths.",
          "summary": "Title defaults from cloneable block recipe payload; replacement is low risk with safe-to-edit policy."
        },
        {
          "path": "description",
          "label": "Description",
          "field_role": "copy",
          "value_type": "string",
          "editable": true,
          "repeated": false,
          "default_source": "cloneable block recipe payload",
          "replacement_policy": "safe-to-edit",
          "replacement_risk": "low",
          "guardrail": "Copy can be edited directly when text remains trimmed, localizable, and safe to wrap at phone widths.",
          "validation": "Text should be editable, trimmed, localizable, and safe to wrap at mobile widths.",
          "summary": "Description defaults from cloneable block recipe payload; replacement is low risk with safe-to-edit policy."
        },
        {
          "path": "presets",
          "label": "Presets",
          "field_role": "style",
          "value_type": "array",
          "editable": true,
          "repeated": false,
          "default_source": "Polished SaaS Growth recipe tokens",
          "replacement_policy": "locked-token",
          "replacement_risk": "medium",
          "guardrail": "Keep visual styling aligned to Polished SaaS Growth recipe tokens unless the recipe itself changes.",
          "validation": "Style fields should prefer recipe or appearance tokens over one-off inline values.",
          "summary": "Presets defaults from Polished SaaS Growth recipe tokens; replacement is medium risk with locked-token policy."
        },
        {
          "path": "recipes",
          "label": "Recipes",
          "field_role": "content",
          "value_type": "array",
          "editable": true,
          "repeated": false,
          "default_source": "cloneable block recipe payload",
          "replacement_policy": "safe-to-edit",
          "replacement_risk": "low",
          "guardrail": "Copy can be edited directly when text remains trimmed, localizable, and safe to wrap at phone widths.",
          "validation": "Content should remain serializable JSON and preserve the documented block contract.",
          "summary": "Recipes defaults from cloneable block recipe payload; replacement is low risk with safe-to-edit policy."
        },
        {
          "path": "block_types",
          "label": "Block Types",
          "field_role": "collection",
          "value_type": "array",
          "editable": true,
          "repeated": false,
          "default_source": "cloneable block recipe payload",
          "replacement_policy": "collection-item",
          "replacement_risk": "medium",
          "guardrail": "Edit repeatable items through collection controls so add, remove, reorder, and item-level updates preserve shape.",
          "validation": "Collections should support add, remove, reorder, and item-level editing without changing block shape.",
          "summary": "Block Types defaults from cloneable block recipe payload; replacement is medium risk with collection-item policy."
        },
        {
          "path": "block_collections",
          "label": "Block Collections",
          "field_role": "collection",
          "value_type": "array",
          "editable": true,
          "repeated": false,
          "default_source": "cloneable block recipe payload",
          "replacement_policy": "collection-item",
          "replacement_risk": "medium",
          "guardrail": "Edit repeatable items through collection controls so add, remove, reorder, and item-level updates preserve shape.",
          "validation": "Collections should support add, remove, reorder, and item-level editing without changing block shape.",
          "summary": "Block Collections defaults from cloneable block recipe payload; replacement is medium risk with collection-item policy."
        },
        {
          "path": "block_collections[].id",
          "label": "Block Collections Item Id",
          "field_role": "collection",
          "value_type": "string",
          "editable": true,
          "repeated": true,
          "default_source": "cloneable block recipe payload",
          "replacement_policy": "collection-item",
          "replacement_risk": "medium",
          "guardrail": "Edit repeatable items through collection controls so add, remove, reorder, and item-level updates preserve shape.",
          "validation": "Collections should support add, remove, reorder, and item-level editing without changing block shape.",
          "summary": "Block Collections Item Id defaults from cloneable block recipe payload; replacement is medium risk with collection-item policy."
        },
        {
          "path": "block_collections[].label",
          "label": "Block Collections Item Label",
          "field_role": "copy",
          "value_type": "string",
          "editable": true,
          "repeated": true,
          "default_source": "cloneable block recipe payload",
          "replacement_policy": "collection-item",
          "replacement_risk": "medium",
          "guardrail": "Edit repeatable items through collection controls so add, remove, reorder, and item-level updates preserve shape.",
          "validation": "Text should be editable, trimmed, localizable, and safe to wrap at mobile widths.",
          "summary": "Block Collections Item Label defaults from cloneable block recipe payload; replacement is medium risk with collection-item policy."
        },
        {
          "path": "block_collections[].description",
          "label": "Block Collections Item Description",
          "field_role": "copy",
          "value_type": "string",
          "editable": true,
          "repeated": true,
          "default_source": "cloneable block recipe payload",
          "replacement_policy": "collection-item",
          "replacement_risk": "medium",
          "guardrail": "Edit repeatable items through collection controls so add, remove, reorder, and item-level updates preserve shape.",
          "validation": "Text should be editable, trimmed, localizable, and safe to wrap at mobile widths.",
          "summary": "Block Collections Item Description defaults from cloneable block recipe payload; replacement is medium risk with collection-item policy."
        },
        {
          "path": "block_collections[].block_types",
          "label": "Block Collections Item Block Types",
          "field_role": "collection",
          "value_type": "array",
          "editable": true,
          "repeated": true,
          "default_source": "cloneable block recipe payload",
          "replacement_policy": "collection-item",
          "replacement_risk": "medium",
          "guardrail": "Edit repeatable items through collection controls so add, remove, reorder, and item-level updates preserve shape.",
          "validation": "Collections should support add, remove, reorder, and item-level editing without changing block shape.",
          "summary": "Block Collections Item Block Types defaults from cloneable block recipe payload; replacement is medium risk with collection-item policy."
        },
        {
          "path": "preview_layout",
          "label": "Preview Layout",
          "field_role": "style",
          "value_type": "string",
          "editable": true,
          "repeated": false,
          "default_source": "Polished SaaS Growth recipe tokens",
          "replacement_policy": "locked-token",
          "replacement_risk": "medium",
          "guardrail": "Keep visual styling aligned to Polished SaaS Growth recipe tokens unless the recipe itself changes.",
          "validation": "Style fields should prefer recipe or appearance tokens over one-off inline values.",
          "summary": "Preview Layout defaults from Polished SaaS Growth recipe tokens; replacement is medium risk with locked-token policy."
        },
        {
          "path": "default_theme",
          "label": "Default Theme",
          "field_role": "style",
          "value_type": "string",
          "editable": true,
          "repeated": false,
          "default_source": "Polished SaaS Growth recipe tokens",
          "replacement_policy": "locked-token",
          "replacement_risk": "medium",
          "guardrail": "Keep visual styling aligned to Polished SaaS Growth recipe tokens unless the recipe itself changes.",
          "validation": "Style fields should prefer recipe or appearance tokens over one-off inline values.",
          "summary": "Default Theme defaults from Polished SaaS Growth recipe tokens; replacement is medium risk with locked-token policy."
        },
        {
          "path": "default_preset",
          "label": "Default Preset",
          "field_role": "style",
          "value_type": "string",
          "editable": true,
          "repeated": false,
          "default_source": "Polished SaaS Growth recipe tokens",
          "replacement_policy": "locked-token",
          "replacement_risk": "medium",
          "guardrail": "Keep visual styling aligned to Polished SaaS Growth recipe tokens unless the recipe itself changes.",
          "validation": "Style fields should prefer recipe or appearance tokens over one-off inline values.",
          "summary": "Default Preset defaults from Polished SaaS Growth recipe tokens; replacement is medium risk with locked-token policy."
        },
        {
          "path": "default_recipe",
          "label": "Default Recipe",
          "field_role": "content",
          "value_type": "string",
          "editable": true,
          "repeated": false,
          "default_source": "cloneable block recipe payload",
          "replacement_policy": "safe-to-edit",
          "replacement_risk": "low",
          "guardrail": "Copy can be edited directly when text remains trimmed, localizable, and safe to wrap at phone widths.",
          "validation": "Content should remain serializable JSON and preserve the documented block contract.",
          "summary": "Default Recipe defaults from cloneable block recipe payload; replacement is low risk with safe-to-edit policy."
        },
        {
          "path": "default_block_collection",
          "label": "Default Block Collection",
          "field_role": "collection",
          "value_type": "string",
          "editable": true,
          "repeated": false,
          "default_source": "cloneable block recipe payload",
          "replacement_policy": "collection-item",
          "replacement_risk": "medium",
          "guardrail": "Edit repeatable items through collection controls so add, remove, reorder, and item-level updates preserve shape.",
          "validation": "Collections should support add, remove, reorder, and item-level editing without changing block shape.",
          "summary": "Default Block Collection defaults from cloneable block recipe payload; replacement is medium risk with collection-item policy."
        },
        {
          "path": "default_design_configuration",
          "label": "Default Design Configuration",
          "field_role": "content",
          "value_type": "string",
          "editable": true,
          "repeated": false,
          "default_source": "cloneable block recipe payload",
          "replacement_policy": "safe-to-edit",
          "replacement_risk": "low",
          "guardrail": "Copy can be edited directly when text remains trimmed, localizable, and safe to wrap at phone widths.",
          "validation": "Content should remain serializable JSON and preserve the documented block contract.",
          "summary": "Default Design Configuration defaults from cloneable block recipe payload; replacement is low risk with safe-to-edit policy."
        },
        {
          "path": "default_media_placeholder",
          "label": "Default Media Placeholder",
          "field_role": "media",
          "value_type": "string",
          "editable": true,
          "repeated": false,
          "default_source": "Cloud Elephants placeholder media or CMS media library",
          "replacement_policy": "requires-alt-text",
          "replacement_risk": "medium",
          "guardrail": "Replace the asset through CMS media data and keep alt, title, provider, or label fallback text meaningful.",
          "validation": "Media should use a replaceable URL plus meaningful alt, label, or title fallback.",
          "summary": "Default Media Placeholder defaults from Cloud Elephants placeholder media or CMS media library; replacement is medium risk with requires-alt-text policy."
        },
        {
          "path": "design_configurations",
          "label": "Design Configurations",
          "field_role": "content",
          "value_type": "array",
          "editable": true,
          "repeated": false,
          "default_source": "cloneable block recipe payload",
          "replacement_policy": "safe-to-edit",
          "replacement_risk": "low",
          "guardrail": "Copy can be edited directly when text remains trimmed, localizable, and safe to wrap at phone widths.",
          "validation": "Content should remain serializable JSON and preserve the documented block contract.",
          "summary": "Design Configurations defaults from cloneable block recipe payload; replacement is low risk with safe-to-edit policy."
        },
        {
          "path": "design_configurations[].id",
          "label": "Design Configurations Item Id",
          "field_role": "content",
          "value_type": "string",
          "editable": true,
          "repeated": true,
          "default_source": "cloneable block recipe payload",
          "replacement_policy": "collection-item",
          "replacement_risk": "medium",
          "guardrail": "Edit repeatable items through collection controls so add, remove, reorder, and item-level updates preserve shape.",
          "validation": "Content should remain serializable JSON and preserve the documented block contract.",
          "summary": "Design Configurations Item Id defaults from cloneable block recipe payload; replacement is medium risk with collection-item policy."
        },
        {
          "path": "design_configurations[].label",
          "label": "Design Configurations Item Label",
          "field_role": "copy",
          "value_type": "string",
          "editable": true,
          "repeated": true,
          "default_source": "cloneable block recipe payload",
          "replacement_policy": "collection-item",
          "replacement_risk": "medium",
          "guardrail": "Edit repeatable items through collection controls so add, remove, reorder, and item-level updates preserve shape.",
          "validation": "Text should be editable, trimmed, localizable, and safe to wrap at mobile widths.",
          "summary": "Design Configurations Item Label defaults from cloneable block recipe payload; replacement is medium risk with collection-item policy."
        },
        {
          "path": "design_configurations[].description",
          "label": "Design Configurations Item Description",
          "field_role": "copy",
          "value_type": "string",
          "editable": true,
          "repeated": true,
          "default_source": "cloneable block recipe payload",
          "replacement_policy": "collection-item",
          "replacement_risk": "medium",
          "guardrail": "Edit repeatable items through collection controls so add, remove, reorder, and item-level updates preserve shape.",
          "validation": "Text should be editable, trimmed, localizable, and safe to wrap at mobile widths.",
          "summary": "Design Configurations Item Description defaults from cloneable block recipe payload; replacement is medium risk with collection-item policy."
        },
        {
          "path": "design_configurations[].theme",
          "label": "Design Configurations Item Theme",
          "field_role": "style",
          "value_type": "object",
          "editable": true,
          "repeated": true,
          "default_source": "Polished SaaS Growth recipe tokens",
          "replacement_policy": "locked-token",
          "replacement_risk": "medium",
          "guardrail": "Keep visual styling aligned to Polished SaaS Growth recipe tokens unless the recipe itself changes.",
          "validation": "Style fields should prefer recipe or appearance tokens over one-off inline values.",
          "summary": "Design Configurations Item Theme defaults from Polished SaaS Growth recipe tokens; replacement is medium risk with locked-token policy."
        },
        {
          "path": "media_placeholders",
          "label": "Media Placeholders",
          "field_role": "media",
          "value_type": "array",
          "editable": true,
          "repeated": false,
          "default_source": "Cloud Elephants placeholder media or CMS media library",
          "replacement_policy": "requires-alt-text",
          "replacement_risk": "medium",
          "guardrail": "Replace the asset through CMS media data and keep alt, title, provider, or label fallback text meaningful.",
          "validation": "Media should use a replaceable URL plus meaningful alt, label, or title fallback.",
          "summary": "Media Placeholders defaults from Cloud Elephants placeholder media or CMS media library; replacement is medium risk with requires-alt-text policy."
        },
        {
          "path": "media_placeholders[].id",
          "label": "Media Placeholders Item Id",
          "field_role": "media",
          "value_type": "string",
          "editable": true,
          "repeated": true,
          "default_source": "Cloud Elephants placeholder media or CMS media library",
          "replacement_policy": "requires-alt-text",
          "replacement_risk": "medium",
          "guardrail": "Replace the asset through CMS media data and keep alt, title, provider, or label fallback text meaningful.",
          "validation": "Media should use a replaceable URL plus meaningful alt, label, or title fallback.",
          "summary": "Media Placeholders Item Id defaults from Cloud Elephants placeholder media or CMS media library; replacement is medium risk with requires-alt-text policy."
        },
        {
          "path": "media_placeholders[].label",
          "label": "Media Placeholders Item Label",
          "field_role": "copy",
          "value_type": "string",
          "editable": true,
          "repeated": true,
          "default_source": "cloneable block recipe payload",
          "replacement_policy": "requires-alt-text",
          "replacement_risk": "medium",
          "guardrail": "Replace the asset through CMS media data and keep alt, title, provider, or label fallback text meaningful.",
          "validation": "Text should be editable, trimmed, localizable, and safe to wrap at mobile widths.",
          "summary": "Media Placeholders Item Label defaults from cloneable block recipe payload; replacement is medium risk with requires-alt-text policy."
        },
        {
          "path": "media_placeholders[].src",
          "label": "Media Placeholders Item Src",
          "field_role": "media",
          "value_type": "string",
          "editable": true,
          "repeated": true,
          "default_source": "Cloud Elephants placeholder media or CMS media library",
          "replacement_policy": "requires-alt-text",
          "replacement_risk": "medium",
          "guardrail": "Replace the asset through CMS media data and keep alt, title, provider, or label fallback text meaningful.",
          "validation": "Media should use a replaceable URL plus meaningful alt, label, or title fallback.",
          "summary": "Media Placeholders Item Src defaults from Cloud Elephants placeholder media or CMS media library; replacement is medium risk with requires-alt-text policy."
        },
        {
          "path": "media_placeholders[].alt",
          "label": "Media Placeholders Item Alt",
          "field_role": "media",
          "value_type": "string",
          "editable": true,
          "repeated": true,
          "default_source": "Cloud Elephants placeholder media or CMS media library",
          "replacement_policy": "requires-alt-text",
          "replacement_risk": "medium",
          "guardrail": "Replace the asset through CMS media data and keep alt, title, provider, or label fallback text meaningful.",
          "validation": "Media should use a replaceable URL plus meaningful alt, label, or title fallback.",
          "summary": "Media Placeholders Item Alt defaults from Cloud Elephants placeholder media or CMS media library; replacement is medium risk with requires-alt-text policy."
        },
        {
          "path": "media_placeholders[].aspect_ratio",
          "label": "Media Placeholders Item Aspect Ratio",
          "field_role": "media",
          "value_type": "string",
          "editable": true,
          "repeated": true,
          "default_source": "Cloud Elephants placeholder media or CMS media library",
          "replacement_policy": "requires-alt-text",
          "replacement_risk": "medium",
          "guardrail": "Replace the asset through CMS media data and keep alt, title, provider, or label fallback text meaningful.",
          "validation": "Media should use a replaceable URL plus meaningful alt, label, or title fallback.",
          "summary": "Media Placeholders Item Aspect Ratio defaults from Cloud Elephants placeholder media or CMS media library; replacement is medium risk with requires-alt-text policy."
        },
        {
          "path": "media_placeholders[].source_url",
          "label": "Media Placeholders Item Source Url",
          "field_role": "action",
          "value_type": "string",
          "editable": true,
          "repeated": true,
          "default_source": "CMS route, URL, or canonical postEvent path",
          "replacement_policy": "requires-alt-text",
          "replacement_risk": "medium",
          "guardrail": "Replace the asset through CMS media data and keep alt, title, provider, or label fallback text meaningful.",
          "validation": "Actions should resolve to a URL or event name with a human-readable label.",
          "summary": "Media Placeholders Item Source Url defaults from CMS route, URL, or canonical postEvent path; replacement is medium risk with requires-alt-text policy."
        }
      ],
      "default_replacement_policies": [
        "collection-item",
        "locked-token",
        "requires-alt-text",
        "safe-to-edit"
      ],
      "default_replacement_risks": [
        "low",
        "medium"
      ],
      "default_replacement_high_risk_count": 0,
      "content_edit_bundle_count": 6,
      "content_edit_bundles": [
        {
          "id": "copy",
          "label": "Copy bundle",
          "intent": "required",
          "edit_mode": "repeatable-items",
          "field_paths": [
            "block_collections[].description",
            "block_collections[].label",
            "description",
            "design_configurations[].description",
            "design_configurations[].label",
            "media_placeholders[].label",
            "title"
          ],
          "default_sources": [
            "cloneable block recipe payload"
          ],
          "guardrails": [
            "Edit repeatable items through collection controls so add, remove, reorder, and item-level updates preserve shape.",
            "Copy can be edited directly when text remains trimmed, localizable, and safe to wrap at phone widths.",
            "Replace the asset through CMS media data and keep alt, title, provider, or label fallback text meaningful."
          ],
          "depends_on": [
            "type hierarchy",
            "mobile wrapping"
          ],
          "summary": "Copy bundle groups 7 fields so CMS edits preserve the recipe shape and default polish."
        },
        {
          "id": "media",
          "label": "Media bundle",
          "intent": "recommended",
          "edit_mode": "repeatable-items",
          "field_paths": [
            "default_media_placeholder",
            "media_placeholders",
            "media_placeholders[].alt",
            "media_placeholders[].aspect_ratio",
            "media_placeholders[].id",
            "media_placeholders[].src"
          ],
          "default_sources": [
            "Cloud Elephants placeholder media or CMS media library"
          ],
          "guardrails": [
            "Replace the asset through CMS media data and keep alt, title, provider, or label fallback text meaningful."
          ],
          "depends_on": [
            "copy alt text",
            "responsive fit"
          ],
          "summary": "Media bundle groups 6 fields so CMS edits preserve the recipe shape and default polish."
        },
        {
          "id": "actions",
          "label": "Action bundle",
          "intent": "recommended",
          "edit_mode": "repeatable-items",
          "field_paths": [
            "media_placeholders[].source_url"
          ],
          "default_sources": [
            "CMS route, URL, or canonical postEvent path"
          ],
          "guardrails": [
            "Replace the asset through CMS media data and keep alt, title, provider, or label fallback text meaningful."
          ],
          "depends_on": [
            "copy labels"
          ],
          "summary": "Action bundle groups 1 field so CMS edits preserve the recipe shape and default polish."
        },
        {
          "id": "collections",
          "label": "Collection bundle",
          "intent": "recommended",
          "edit_mode": "repeatable-items",
          "field_paths": [
            "block_collections",
            "block_collections[].block_types",
            "block_collections[].id",
            "block_types",
            "default_block_collection"
          ],
          "default_sources": [
            "cloneable block recipe payload"
          ],
          "guardrails": [
            "Edit repeatable items through collection controls so add, remove, reorder, and item-level updates preserve shape."
          ],
          "depends_on": [
            "item shape",
            "responsive wrapping"
          ],
          "summary": "Collection bundle groups 5 fields so CMS edits preserve the recipe shape and default polish."
        },
        {
          "id": "style",
          "label": "Style bundle",
          "intent": "guarded",
          "edit_mode": "guarded-system",
          "field_paths": [
            "default_preset",
            "default_theme",
            "design_configurations[].theme",
            "presets",
            "preview_layout"
          ],
          "default_sources": [
            "Polished SaaS Growth recipe tokens"
          ],
          "guardrails": [
            "Keep visual styling aligned to Polished SaaS Growth recipe tokens unless the recipe itself changes."
          ],
          "depends_on": [
            "theme recipe tokens",
            "contrast proof"
          ],
          "summary": "Style bundle groups 5 fields so CMS edits preserve the recipe shape and default polish."
        },
        {
          "id": "content",
          "label": "Content bundle",
          "intent": "required",
          "edit_mode": "repeatable-items",
          "field_paths": [
            "default_design_configuration",
            "default_recipe",
            "design_configurations",
            "design_configurations[].id",
            "recipes"
          ],
          "default_sources": [
            "cloneable block recipe payload"
          ],
          "guardrails": [
            "Copy can be edited directly when text remains trimmed, localizable, and safe to wrap at phone widths.",
            "Edit repeatable items through collection controls so add, remove, reorder, and item-level updates preserve shape."
          ],
          "depends_on": [
            "contract-safe JSON"
          ],
          "summary": "Content bundle groups 5 fields so CMS edits preserve the recipe shape and default polish."
        }
      ],
      "content_edit_bundle_ids": [
        "copy",
        "media",
        "actions",
        "collections",
        "style",
        "content"
      ],
      "content_edit_bundle_modes": [
        "guarded-system",
        "repeatable-items"
      ],
      "content_edit_bundle_required_count": 2,
      "content_edit_bundle_guarded_count": 1,
      "recipe_compatibility_count": 6,
      "recipe_compatibility_map": [
        {
          "id": "page-context",
          "label": "Page context",
          "axis": "page",
          "fit": "primary",
          "values": [
            "listing",
            "product-page",
            "product-announcement",
            "blog",
            "event-promotion",
            "partnership-announcement"
          ],
          "evidence": "6 page types mapped for theme-preview-matrix.",
          "guardrail": "Choose the first matching page type before editing copy, media, or actions so the recipe starts in the right narrative context.",
          "summary": "theme-preview-matrix is best composed into listing, product-page, product-announcement, and related pages."
        },
        {
          "id": "section-role",
          "label": "Section role",
          "axis": "layout",
          "fit": "supporting",
          "values": [
            "collection",
            "media",
            "content",
            "metadata"
          ],
          "evidence": "6 anatomy regions produce 4 section roles.",
          "guardrail": "Place the block where its required anatomy regions have enough room before compressing it into dense page slots.",
          "summary": "theme-preview-matrix can act as collection, media, content within a composed page."
        },
        {
          "id": "content-model",
          "label": "Content model",
          "axis": "content",
          "fit": "specialized",
          "values": [
            "copy-led",
            "media-led",
            "cta-led",
            "repeatable"
          ],
          "evidence": "29/29 fields are editable across 4 content models.",
          "guardrail": "Keep the content model stable when replacing defaults; do not turn a repeatable or media-led recipe into unrelated ad hoc content.",
          "summary": "Media Ready composition passport is copy-led, media-led, cta-led, repeatable for CMS composition."
        },
        {
          "id": "interaction-model",
          "label": "Interaction model",
          "axis": "interaction",
          "fit": "supporting",
          "values": [
            "noninteractive"
          ],
          "evidence": "0 action surfaces and 0 control surfaces mapped.",
          "guardrail": "Review href, event, input, required, and disabled-state evidence before publishing an interactive recipe.",
          "summary": "theme-preview-matrix is compatible with noninteractive content sections."
        },
        {
          "id": "authoring-fit",
          "label": "Authoring fit",
          "axis": "authoring",
          "fit": "specialized",
          "values": [
            "media-led",
            "high-complexity",
            "0-high-care-replacements"
          ],
          "evidence": "29 default provenance items with 0 high-care replacements.",
          "guardrail": "Use the default provenance map before cloning the recipe into CMS content or agent-generated page data.",
          "summary": "theme-preview-matrix uses media-led authoring with high complexity."
        },
        {
          "id": "responsive-fit",
          "label": "Responsive fit",
          "axis": "responsive",
          "fit": "primary",
          "values": [
            "single-column stack",
            "two-column adaptive grid",
            "responsive composition grid",
            "min-width:0 surfaces, wrapping copy, and no horizontal overflow in the static catalog phone smoke."
          ],
          "evidence": "3 responsive behavior maps cover phone, tablet, and desktop composition.",
          "guardrail": "Review phone wrapping, tablet mid-width balance, and desktop density before adding nested content, longer labels, or extra media.",
          "summary": "theme-preview-matrix has explicit phone, tablet, and desktop compatibility evidence for composed pages."
        }
      ],
      "recipe_compatibility_axes": [
        "page",
        "layout",
        "content",
        "interaction",
        "authoring",
        "responsive"
      ],
      "recipe_compatibility_page_types": [
        "listing",
        "product-page",
        "product-announcement",
        "blog",
        "event-promotion",
        "partnership-announcement"
      ],
      "recipe_compatibility_section_roles": [
        "collection",
        "media",
        "content",
        "metadata"
      ],
      "recipe_compatibility_fits": [
        "primary",
        "specialized",
        "supporting"
      ],
      "builder_field_count": 29,
      "builder_field_map": [
        {
          "path": "title",
          "label": "Title",
          "value_type": "string",
          "role": "copy",
          "editable": true,
          "repeated": false,
          "summary": "Title is a string field used for copy."
        },
        {
          "path": "description",
          "label": "Description",
          "value_type": "string",
          "role": "copy",
          "editable": true,
          "repeated": false,
          "summary": "Description is a string field used for copy."
        },
        {
          "path": "presets",
          "label": "Presets",
          "value_type": "array",
          "role": "style",
          "editable": true,
          "repeated": false,
          "summary": "Presets is a array field used for style."
        },
        {
          "path": "recipes",
          "label": "Recipes",
          "value_type": "array",
          "role": "content",
          "editable": true,
          "repeated": false,
          "summary": "Recipes is a array field used for content."
        },
        {
          "path": "block_types",
          "label": "Block Types",
          "value_type": "array",
          "role": "collection",
          "editable": true,
          "repeated": false,
          "summary": "Block Types is a array field used for collection."
        },
        {
          "path": "block_collections",
          "label": "Block Collections",
          "value_type": "array",
          "role": "collection",
          "editable": true,
          "repeated": false,
          "summary": "Block Collections is a array field used for collection."
        },
        {
          "path": "block_collections[].id",
          "label": "Block Collections Item Id",
          "value_type": "string",
          "role": "collection",
          "editable": true,
          "repeated": true,
          "summary": "Block Collections Item Id is a string collection field used for collection."
        },
        {
          "path": "block_collections[].label",
          "label": "Block Collections Item Label",
          "value_type": "string",
          "role": "copy",
          "editable": true,
          "repeated": true,
          "summary": "Block Collections Item Label is a string collection field used for copy."
        },
        {
          "path": "block_collections[].description",
          "label": "Block Collections Item Description",
          "value_type": "string",
          "role": "copy",
          "editable": true,
          "repeated": true,
          "summary": "Block Collections Item Description is a string collection field used for copy."
        },
        {
          "path": "block_collections[].block_types",
          "label": "Block Collections Item Block Types",
          "value_type": "array",
          "role": "collection",
          "editable": true,
          "repeated": true,
          "summary": "Block Collections Item Block Types is a array collection field used for collection."
        },
        {
          "path": "preview_layout",
          "label": "Preview Layout",
          "value_type": "string",
          "role": "style",
          "editable": true,
          "repeated": false,
          "summary": "Preview Layout is a string field used for style."
        },
        {
          "path": "default_theme",
          "label": "Default Theme",
          "value_type": "string",
          "role": "style",
          "editable": true,
          "repeated": false,
          "summary": "Default Theme is a string field used for style."
        },
        {
          "path": "default_preset",
          "label": "Default Preset",
          "value_type": "string",
          "role": "style",
          "editable": true,
          "repeated": false,
          "summary": "Default Preset is a string field used for style."
        },
        {
          "path": "default_recipe",
          "label": "Default Recipe",
          "value_type": "string",
          "role": "content",
          "editable": true,
          "repeated": false,
          "summary": "Default Recipe is a string field used for content."
        },
        {
          "path": "default_block_collection",
          "label": "Default Block Collection",
          "value_type": "string",
          "role": "collection",
          "editable": true,
          "repeated": false,
          "summary": "Default Block Collection is a string field used for collection."
        },
        {
          "path": "default_design_configuration",
          "label": "Default Design Configuration",
          "value_type": "string",
          "role": "content",
          "editable": true,
          "repeated": false,
          "summary": "Default Design Configuration is a string field used for content."
        },
        {
          "path": "default_media_placeholder",
          "label": "Default Media Placeholder",
          "value_type": "string",
          "role": "media",
          "editable": true,
          "repeated": false,
          "summary": "Default Media Placeholder is a string field used for media."
        },
        {
          "path": "design_configurations",
          "label": "Design Configurations",
          "value_type": "array",
          "role": "content",
          "editable": true,
          "repeated": false,
          "summary": "Design Configurations is a array field used for content."
        },
        {
          "path": "design_configurations[].id",
          "label": "Design Configurations Item Id",
          "value_type": "string",
          "role": "content",
          "editable": true,
          "repeated": true,
          "summary": "Design Configurations Item Id is a string collection field used for content."
        },
        {
          "path": "design_configurations[].label",
          "label": "Design Configurations Item Label",
          "value_type": "string",
          "role": "copy",
          "editable": true,
          "repeated": true,
          "summary": "Design Configurations Item Label is a string collection field used for copy."
        },
        {
          "path": "design_configurations[].description",
          "label": "Design Configurations Item Description",
          "value_type": "string",
          "role": "copy",
          "editable": true,
          "repeated": true,
          "summary": "Design Configurations Item Description is a string collection field used for copy."
        },
        {
          "path": "design_configurations[].theme",
          "label": "Design Configurations Item Theme",
          "value_type": "object",
          "role": "style",
          "editable": true,
          "repeated": true,
          "summary": "Design Configurations Item Theme is a object collection field used for style."
        },
        {
          "path": "media_placeholders",
          "label": "Media Placeholders",
          "value_type": "array",
          "role": "media",
          "editable": true,
          "repeated": false,
          "summary": "Media Placeholders is a array field used for media."
        },
        {
          "path": "media_placeholders[].id",
          "label": "Media Placeholders Item Id",
          "value_type": "string",
          "role": "media",
          "editable": true,
          "repeated": true,
          "summary": "Media Placeholders Item Id is a string collection field used for media."
        },
        {
          "path": "media_placeholders[].label",
          "label": "Media Placeholders Item Label",
          "value_type": "string",
          "role": "copy",
          "editable": true,
          "repeated": true,
          "summary": "Media Placeholders Item Label is a string collection field used for copy."
        },
        {
          "path": "media_placeholders[].src",
          "label": "Media Placeholders Item Src",
          "value_type": "string",
          "role": "media",
          "editable": true,
          "repeated": true,
          "summary": "Media Placeholders Item Src is a string collection field used for media."
        },
        {
          "path": "media_placeholders[].alt",
          "label": "Media Placeholders Item Alt",
          "value_type": "string",
          "role": "media",
          "editable": true,
          "repeated": true,
          "summary": "Media Placeholders Item Alt is a string collection field used for media."
        },
        {
          "path": "media_placeholders[].aspect_ratio",
          "label": "Media Placeholders Item Aspect Ratio",
          "value_type": "string",
          "role": "media",
          "editable": true,
          "repeated": true,
          "summary": "Media Placeholders Item Aspect Ratio is a string collection field used for media."
        },
        {
          "path": "media_placeholders[].source_url",
          "label": "Media Placeholders Item Source Url",
          "value_type": "string",
          "role": "action",
          "editable": true,
          "repeated": true,
          "summary": "Media Placeholders Item Source Url is a string collection field used for action."
        }
      ],
      "editor_guidance_count": 6,
      "editor_guidance_map": [
        {
          "id": "copy",
          "label": "Copy",
          "field_role": "copy",
          "field_count": 7,
          "editable_count": 7,
          "editor_widget": "text/rich-text editor",
          "validation": "Text should be editable, trimmed, localizable, and safe to wrap at mobile widths.",
          "default_source": "cloneable block recipe payload",
          "summary": "Copy fields use the text/rich-text editor across 7/7 editable fields."
        },
        {
          "id": "media",
          "label": "Media",
          "field_role": "media",
          "field_count": 6,
          "editable_count": 6,
          "editor_widget": "media picker with alt text",
          "validation": "Media should use a replaceable URL plus meaningful alt, label, or title fallback.",
          "default_source": "Cloud Elephants placeholder media or CMS media library",
          "summary": "Media fields use the media picker with alt text across 6/6 editable fields."
        },
        {
          "id": "action",
          "label": "Action",
          "field_role": "action",
          "field_count": 1,
          "editable_count": 1,
          "editor_widget": "link or event action editor",
          "validation": "Actions should resolve to a URL or event name with a human-readable label.",
          "default_source": "CMS route, URL, or canonical postEvent path",
          "summary": "Action fields use the link or event action editor across 1/1 editable field."
        },
        {
          "id": "collection",
          "label": "Collection",
          "field_role": "collection",
          "field_count": 5,
          "editable_count": 5,
          "editor_widget": "repeatable item editor",
          "validation": "Collections should support add, remove, reorder, and item-level editing without changing block shape.",
          "default_source": "cloneable block recipe payload",
          "summary": "Collection fields use the repeatable item editor across 5/5 editable fields."
        },
        {
          "id": "style",
          "label": "Style",
          "field_role": "style",
          "field_count": 5,
          "editable_count": 5,
          "editor_widget": "appearance preset selector",
          "validation": "Style fields should prefer recipe or appearance tokens over one-off inline values.",
          "default_source": "Polished SaaS Growth recipe tokens",
          "summary": "Style fields use the appearance preset selector across 5/5 editable fields."
        },
        {
          "id": "content",
          "label": "Content",
          "field_role": "content",
          "field_count": 5,
          "editable_count": 5,
          "editor_widget": "plain content field",
          "validation": "Content should remain serializable JSON and preserve the documented block contract.",
          "default_source": "cloneable block recipe payload",
          "summary": "Content fields use the plain content field across 5/5 editable fields."
        }
      ],
      "editor_field_roles": [
        "copy",
        "media",
        "action",
        "collection",
        "style",
        "content"
      ],
      "editor_editable_field_count": 29,
      "state_readiness_count": 6,
      "state_readiness_map": [
        {
          "id": "default",
          "label": "Default",
          "status": "covered",
          "trigger": "Initial render with the cloneable recipe payload",
          "visual_treatment": "Polished SaaS Growth tokens with image documentation treatment",
          "token_roles": [
            "surface",
            "panel",
            "text",
            "button"
          ],
          "proof": "The Polished SaaS Growth recipe renders a contract-safe primary state for theme-preview-matrix.",
          "summary": "Default state uses the recipe surface, text, and action tokens without one-off styling."
        },
        {
          "id": "empty",
          "label": "Empty",
          "status": "covered",
          "trigger": "Repeatable collections have zero items",
          "visual_treatment": "Reserved panel space with fallback copy or placeholder media",
          "token_roles": [
            "panel",
            "textMuted",
            "badge",
            "border"
          ],
          "proof": "Repeatable fields are documented for add, remove, reorder, and item-level editing.",
          "summary": "Empty-state guidance preserves layout rhythm instead of collapsing the block surface."
        },
        {
          "id": "pending",
          "label": "Pending",
          "status": "covered",
          "trigger": "Deferred content or preview loading",
          "visual_treatment": "Neutral reserved frame with status copy and no layout shift",
          "token_roles": [
            "control",
            "textMuted",
            "progressTrack",
            "border"
          ],
          "proof": "Static recipe payloads reserve the same documented frame while content is loading.",
          "summary": "Pending state keeps dimensions stable while using muted control/status tokens."
        },
        {
          "id": "active",
          "label": "Active",
          "status": "covered",
          "trigger": "Current block and recipe preview are selected",
          "visual_treatment": "Signal/uplink emphasis with visible selected-state chips",
          "token_roles": [
            "signal",
            "uplink",
            "button",
            "badge"
          ],
          "proof": "Recipe and block selection evidence is rendered in the documentation chrome.",
          "summary": "Active state is represented with recipe accent tokens and visible state labels."
        },
        {
          "id": "invalid",
          "label": "Invalid",
          "status": "covered",
          "trigger": "Media URL or provider data is invalid",
          "visual_treatment": "Warning/danger status treatment while preserving the block frame",
          "token_roles": [
            "warning",
            "danger",
            "border",
            "text"
          ],
          "proof": "Media guidance requires URL plus accessible fallback text for invalid or missing assets.",
          "summary": "Invalid state guidance favors explicit status evidence over ambiguous visual collapse."
        },
        {
          "id": "disabled",
          "label": "Disabled",
          "status": "covered",
          "trigger": "Noninteractive metadata or held preview state",
          "visual_treatment": "Muted affordance with preserved label, spacing, and hit-area rhythm",
          "token_roles": [
            "control",
            "textMuted",
            "border",
            "panel"
          ],
          "proof": "Noninteractive blocks retain evidence labels without pretending to be clickable.",
          "summary": "Disabled state keeps the block readable and spatially stable when interaction is unavailable."
        }
      ],
      "state_readiness_states": [
        "default",
        "empty",
        "pending",
        "active",
        "invalid",
        "disabled"
      ],
      "state_readiness_statuses": [
        "covered",
        "covered",
        "covered",
        "covered",
        "covered",
        "covered"
      ],
      "anatomy_region_count": 6,
      "anatomy_map": [
        {
          "id": "surface",
          "label": "Surface",
          "region_role": "outer layout and background",
          "field_paths": [],
          "token_roles": [
            "background",
            "panel",
            "panelElevated",
            "border"
          ],
          "state_ids": [
            "default",
            "empty",
            "pending",
            "active",
            "invalid",
            "disabled"
          ],
          "required": true,
          "summary": "theme-preview-matrix uses recipe surface tokens to keep the outer frame styled and composable."
        },
        {
          "id": "copy",
          "label": "Copy",
          "region_role": "headings, body copy, labels, and supporting text",
          "field_paths": [
            "block_collections[].description",
            "block_collections[].label",
            "description",
            "design_configurations[].description",
            "design_configurations[].label",
            "media_placeholders[].label",
            "title"
          ],
          "token_roles": [
            "text",
            "textMuted"
          ],
          "state_ids": [
            "default",
            "empty",
            "pending",
            "active",
            "invalid",
            "disabled"
          ],
          "required": true,
          "summary": "Copy fields map to primary and muted text roles so editors can change words without restyling the block."
        },
        {
          "id": "media",
          "label": "Media",
          "region_role": "replaceable image, iframe, embed, avatar, logo, or gallery area",
          "field_paths": [
            "default_media_placeholder",
            "media_placeholders",
            "media_placeholders[].alt",
            "media_placeholders[].aspect_ratio",
            "media_placeholders[].id",
            "media_placeholders[].src"
          ],
          "token_roles": [
            "panelElevated",
            "border"
          ],
          "state_ids": [
            "default",
            "empty",
            "pending",
            "active",
            "invalid",
            "disabled"
          ],
          "required": false,
          "summary": "Media fields stay isolated from copy and action regions so replacement assets preserve the recipe layout."
        },
        {
          "id": "actions",
          "label": "Actions",
          "region_role": "CTA, link, event, and navigation affordances",
          "field_paths": [
            "media_placeholders[].source_url"
          ],
          "token_roles": [
            "button",
            "buttonText",
            "signal",
            "uplink"
          ],
          "state_ids": [
            "default",
            "empty",
            "pending",
            "active",
            "invalid",
            "disabled"
          ],
          "required": false,
          "summary": "Action regions use recipe button and accent tokens while preserving href or event payloads."
        },
        {
          "id": "collection",
          "label": "Collection",
          "region_role": "repeatable cards, steps, metrics, logos, links, or nested blocks",
          "field_paths": [
            "block_collections",
            "block_collections[].block_types",
            "block_collections[].id",
            "block_types",
            "default_block_collection"
          ],
          "token_roles": [
            "panel",
            "panelElevated",
            "border",
            "badge"
          ],
          "state_ids": [
            "default",
            "empty",
            "pending",
            "active",
            "invalid",
            "disabled"
          ],
          "required": false,
          "summary": "Collection regions define repeatable item boundaries for add, remove, reorder, and nested editing."
        },
        {
          "id": "feedback",
          "label": "Feedback",
          "region_role": "status, validation, selected, loading, and disabled evidence",
          "field_paths": [],
          "token_roles": [
            "badge",
            "badgeText",
            "signal"
          ],
          "state_ids": [
            "default",
            "empty",
            "pending",
            "active",
            "invalid",
            "disabled"
          ],
          "required": true,
          "summary": "Feedback regions tie state-readiness evidence to visible recipe status treatments."
        }
      ],
      "anatomy_regions": [
        "surface",
        "copy",
        "media",
        "actions",
        "collection",
        "feedback"
      ],
      "anatomy_token_roles": [
        "background",
        "badge",
        "badgeText",
        "border",
        "button",
        "buttonText",
        "panel",
        "panelElevated",
        "signal",
        "text",
        "textMuted",
        "uplink"
      ],
      "action_count": 0,
      "action_map": [],
      "control_count": 0,
      "control_map": [],
      "style_token_count": 15,
      "style_token_map": [
        {
          "role": "background",
          "label": "Page background",
          "value": "#f7fbff",
          "token_type": "color",
          "summary": "Page background uses the background recipe token."
        },
        {
          "role": "panel",
          "label": "Panel surface",
          "value": "#ffffff",
          "token_type": "color",
          "summary": "Panel surface uses the panel recipe token."
        },
        {
          "role": "panelElevated",
          "label": "Elevated surface",
          "value": "#ffffff",
          "token_type": "color",
          "summary": "Elevated surface uses the panelElevated recipe token."
        },
        {
          "role": "text",
          "label": "Primary text",
          "value": "#142033",
          "token_type": "color",
          "summary": "Primary text uses the text recipe token."
        },
        {
          "role": "textMuted",
          "label": "Muted text",
          "value": "#526174",
          "token_type": "color",
          "summary": "Muted text uses the textMuted recipe token."
        },
        {
          "role": "signal",
          "label": "Signal accent",
          "value": "#166bff",
          "token_type": "color",
          "summary": "Signal accent uses the signal recipe token."
        },
        {
          "role": "uplink",
          "label": "Secondary accent",
          "value": "#00a6a6",
          "token_type": "color",
          "summary": "Secondary accent uses the uplink recipe token."
        },
        {
          "role": "border",
          "label": "Border",
          "value": "#d6dee8",
          "token_type": "color",
          "summary": "Border uses the border recipe token."
        },
        {
          "role": "control",
          "label": "Control surface",
          "value": "#ffffff",
          "token_type": "color",
          "summary": "Control surface uses the control recipe token."
        },
        {
          "role": "controlText",
          "label": "Control text",
          "value": "#142033",
          "token_type": "color",
          "summary": "Control text uses the controlText recipe token."
        },
        {
          "role": "button",
          "label": "Button surface",
          "value": "#166bff",
          "token_type": "color",
          "summary": "Button surface uses the button recipe token."
        },
        {
          "role": "buttonText",
          "label": "Button text",
          "value": "#ffffff",
          "token_type": "color",
          "summary": "Button text uses the buttonText recipe token."
        },
        {
          "role": "badge",
          "label": "Badge surface",
          "value": "#eef5ff",
          "token_type": "color",
          "summary": "Badge surface uses the badge recipe token."
        },
        {
          "role": "badgeText",
          "label": "Badge text",
          "value": "#174ea6",
          "token_type": "color",
          "summary": "Badge text uses the badgeText recipe token."
        },
        {
          "role": "fontFamily",
          "label": "Font family",
          "value": "Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, \"Segoe UI\", sans-serif",
          "token_type": "font",
          "summary": "Font family comes from the active recipe theme tokens."
        }
      ],
      "style_token_roles": [
        "background",
        "panel",
        "panelElevated",
        "text",
        "textMuted",
        "signal",
        "uplink",
        "border",
        "control",
        "controlText",
        "button",
        "buttonText",
        "badge",
        "badgeText",
        "fontFamily"
      ],
      "contrast_check_count": 6,
      "contrast_pass_count": 6,
      "contrast_checks": [
        {
          "id": "text-on-background",
          "label": "Text on background",
          "foreground_role": "text",
          "background_role": "background",
          "foreground": "#142033",
          "background": "#f7fbff",
          "ratio": 15.73,
          "required_ratio": 4.5,
          "passes": true,
          "level": "AAA",
          "summary": "Text on background is AAA at 15.73:1 against a 4.5:1 requirement."
        },
        {
          "id": "text-on-panel",
          "label": "Text on panel",
          "foreground_role": "text",
          "background_role": "panel",
          "foreground": "#142033",
          "background": "#ffffff",
          "ratio": 16.35,
          "required_ratio": 4.5,
          "passes": true,
          "level": "AAA",
          "summary": "Text on panel is AAA at 16.35:1 against a 4.5:1 requirement."
        },
        {
          "id": "muted-text-on-panel",
          "label": "Muted text on panel",
          "foreground_role": "textMuted",
          "background_role": "panel",
          "foreground": "#526174",
          "background": "#ffffff",
          "ratio": 6.32,
          "required_ratio": 4.5,
          "passes": true,
          "level": "AA",
          "summary": "Muted text on panel is AA at 6.32:1 against a 4.5:1 requirement."
        },
        {
          "id": "button-text-on-button",
          "label": "Button text on button",
          "foreground_role": "buttonText",
          "background_role": "button",
          "foreground": "#ffffff",
          "background": "#166bff",
          "ratio": 4.58,
          "required_ratio": 4.5,
          "passes": true,
          "level": "AA",
          "summary": "Button text on button is AA at 4.58:1 against a 4.5:1 requirement."
        },
        {
          "id": "control-text-on-control",
          "label": "Control text on control",
          "foreground_role": "controlText",
          "background_role": "control",
          "foreground": "#142033",
          "background": "#ffffff",
          "ratio": 16.35,
          "required_ratio": 4.5,
          "passes": true,
          "level": "AAA",
          "summary": "Control text on control is AAA at 16.35:1 against a 4.5:1 requirement."
        },
        {
          "id": "badge-text-on-badge",
          "label": "Badge text on badge",
          "foreground_role": "badgeText",
          "background_role": "badge",
          "foreground": "#174ea6",
          "background": "#eef5ff",
          "ratio": 7.15,
          "required_ratio": 4.5,
          "passes": true,
          "level": "AAA",
          "summary": "Badge text on badge is AAA at 7.15:1 against a 4.5:1 requirement."
        }
      ],
      "contrast_target": "AA",
      "accessibility_standard": "WCAG_2_2_AA",
      "accessibility_check_count": 5,
      "accessibility_checks": [
        {
          "id": "semantic-structure",
          "label": "Semantic structure",
          "category": "semantics",
          "status": "covered",
          "required": true,
          "proof": "runtime block sections, cards, lists, and headings",
          "summary": "theme-preview-matrix keeps semantic wrappers and readable heading/copy structure in the runtime preview."
        },
        {
          "id": "keyboard-and-tap-targets",
          "label": "Keyboard and tap targets",
          "category": "keyboard",
          "status": "covered",
          "required": false,
          "proof": "static content has no hidden focus trap",
          "summary": "The payload is static content, so the accessibility contract is to avoid hidden or misleading interactive affordances."
        },
        {
          "id": "text-alternatives",
          "label": "Text alternatives",
          "category": "media",
          "status": "covered",
          "required": true,
          "proof": "media fields include alt/label/title fallbacks",
          "summary": "Media-ready recipes expose replaceable alt text or accessible labels for images, logos, embeds, and placeholders."
        },
        {
          "id": "control-labels",
          "label": "Control labels",
          "category": "forms",
          "status": "covered",
          "required": false,
          "proof": "no input controls in this payload",
          "summary": "No input controls are present, so there are no unlabeled fields to remediate."
        },
        {
          "id": "status-and-motion",
          "label": "Status and motion",
          "category": "state",
          "status": "covered",
          "required": true,
          "proof": "runtime evidence avoids hidden status-only content",
          "summary": "Recipe defaults avoid motion-only meaning and keep status text inspectable when state is present."
        }
      ],
      "responsive_behavior_count": 3,
      "responsive_behavior_map": [
        {
          "id": "phone",
          "label": "Phone",
          "viewport_width": 390,
          "layout_mode": "single-column stack",
          "column_count": 1,
          "spacing_density": "spacious",
          "media_policy": "Inline media uses full-width phone framing, tablet-friendly aspect ratios, and stable desktop constraints.",
          "overflow_policy": "min-width:0 surfaces, wrapping copy, and no horizontal overflow in the static catalog phone smoke.",
          "interaction_policy": "Static content keeps readable line lengths and avoids hidden interactive affordances.",
          "proof": "npm run test:static:block-catalog all-blocks-phone",
          "summary": "Polished SaaS Growth stacks theme-preview-matrix into one phone column with spacious spacing and bounded content."
        },
        {
          "id": "tablet",
          "label": "Tablet",
          "viewport_width": 768,
          "layout_mode": "two-column adaptive grid",
          "column_count": 2,
          "spacing_density": "spacious",
          "media_policy": "Inline media uses full-width phone framing, tablet-friendly aspect ratios, and stable desktop constraints.",
          "overflow_policy": "tablet preview frames keep mid-width composition, wrap controls, and avoid horizontal overflow in the static catalog smoke.",
          "interaction_policy": "Static content keeps readable line lengths and avoids hidden interactive affordances.",
          "proof": "npm run test:static:block-catalog all-blocks-tablet",
          "summary": "Polished SaaS Growth adapts theme-preview-matrix to 2 tablet columns before expanding to the desktop layout."
        },
        {
          "id": "desktop",
          "label": "Desktop",
          "viewport_width": 1366,
          "layout_mode": "responsive composition grid",
          "column_count": 3,
          "spacing_density": "spacious",
          "media_policy": "Inline media uses full-width phone framing, tablet-friendly aspect ratios, and stable desktop constraints.",
          "overflow_policy": "desktop preview frames keep constrained widths, stable cards, and no horizontal overflow in the static catalog smoke.",
          "interaction_policy": "Static content keeps readable line lengths and avoids hidden interactive affordances.",
          "proof": "npm run test:static:block-catalog all-blocks-desktop",
          "summary": "Polished SaaS Growth gives theme-preview-matrix up to 3 desktop columns while preserving recipe spacing."
        }
      ],
      "responsive_viewports": [
        "phone",
        "tablet",
        "desktop"
      ],
      "responsive_proof": [
        "npm run test:static:block-catalog all-blocks-phone",
        "npm run test:static:block-catalog all-blocks-tablet",
        "npm run test:static:block-catalog all-blocks-desktop"
      ],
      "interactive_roles": [],
      "recipe_alignment": {
        "action_token": "button",
        "control_token": "control",
        "surface_token": "panel",
        "text_token": "text",
        "source": "theme recipe tokens"
      }
    },
    "cloneable": true
  }
}
dashboard

Compact Ops

Compact Opsoperator

A dense operator-friendly payload for dashboards, catalogs, forms, and internal review surfaces.

Component anatomy

Compact Ops anatomy

6 regions
Surfaceouter layout and background
required0 fields4 tokens

theme-preview-matrix uses recipe surface tokens to keep the outer frame styled and composable.

background, panel, panelElevated, border
Copyheadings, body copy, labels, and supporting text
required7 fields2 tokens

Copy fields map to primary and muted text roles so editors can change words without restyling the block.

text, textMuted
Mediareplaceable image, iframe, embed, avatar, logo, or gallery area
optional6 fields2 tokens

Media fields stay isolated from copy and action regions so replacement assets preserve the recipe layout.

panelElevated, border
ActionsCTA, link, event, and navigation affordances
optional1 fields4 tokens

Action regions use recipe button and accent tokens while preserving href or event payloads.

button, buttonText, signal, uplink
Collectionrepeatable cards, steps, metrics, logos, links, or nested blocks
optional5 fields4 tokens

Collection regions define repeatable item boundaries for add, remove, reorder, and nested editing.

panel, panelElevated, border, badge
Feedbackstatus, validation, selected, loading, and disabled evidence
required0 fields3 tokens

Feedback regions tie state-readiness evidence to visible recipe status treatments.

badge, badgeText, signal
Recipe passport

Compact Ops passport

high
Fitoperator-review

Use when editors need denser theme-preview-matrix controls, diagnostics, or internal review context.

Editable fields29/29

Compact Ops is a high-complexity operator-review recipe with 6 documented composition slots.

Interactions0 actions / 0 controls

3 required regions, 3 optional regions.

Slots
Surface / 0/0Copy / 7/7Media / 6/6Actions / 1/1Collection / 5/5Feedback / 0/0
Replacement guidance
  • Keep Compact Ops recipe tokens as the source of visual styling for the surface, text, controls, and actions.
  • Replace media URLs through the CMS media library and preserve alt, title, provider, or label fallbacks.
  • No action wiring is required for this recipe; avoid inventing clickable surfaces in content.
  • No input controls are required; keep the recipe focused on its documented display regions.
  • Treat collection regions as repeatable slots that support add, remove, reorder, and item-level editing.
Publish checklist
  • Validate theme-preview-matrix against its block contract before publishing.
  • 3 required anatomy regions remain present: surface, copy, feedback.
  • 29/29 builder fields are CMS-editable or intentionally locked.
  • Noninteractive presentation has no unexpected action or control surfaces.
  • Phone, tablet, and desktop responsive behavior maps have been reviewed for wrapping and overflow.
  • Contrast checks meet the AA recipe target.
Recipe fit

Compact Ops recipe fit

6 axes
Page contextpage / primary
listingproduct-pageproduct-announcementblogevent-promotionpartnership-announcement

theme-preview-matrix is best composed into listing, product-page, product-announcement, and related pages.

6 page types mapped for theme-preview-matrix.Choose the first matching page type before editing copy, media, or actions so the recipe starts in the right narrative context.
Section rolelayout / supporting
collectionmediacontentmetadata

theme-preview-matrix can act as collection, media, content within a composed page.

6 anatomy regions produce 4 section roles.Place the block where its required anatomy regions have enough room before compressing it into dense page slots.
Content modelcontent / specialized
copy-ledmedia-ledcta-ledrepeatable

Compact Ops composition passport is copy-led, media-led, cta-led, repeatable for CMS composition.

29/29 fields are editable across 4 content models.Keep the content model stable when replacing defaults; do not turn a repeatable or media-led recipe into unrelated ad hoc content.
Interaction modelinteraction / supporting
noninteractive

theme-preview-matrix is compatible with noninteractive content sections.

0 action surfaces and 0 control surfaces mapped.Review href, event, input, required, and disabled-state evidence before publishing an interactive recipe.
Authoring fitauthoring / specialized
operator-reviewhigh-complexity0-high-care-replacements

theme-preview-matrix uses operator-review authoring with high complexity.

29 default provenance items with 0 high-care replacements.Use the default provenance map before cloning the recipe into CMS content or agent-generated page data.
Responsive fitresponsive / primary
single-column stacktwo-column adaptive gridresponsive composition gridmin-width:0 surfaces, wrapping copy, and no horizontal overflow in the static catalog phone smoke.

theme-preview-matrix has explicit phone, tablet, and desktop compatibility evidence for composed pages.

3 responsive behavior maps cover phone, tablet, and desktop composition.Review phone wrapping, tablet mid-width balance, and desktop density before adding nested content, longer labels, or extra media.
Visual polish

Compact Ops visual polish

6/6
Surface rhythmlayout

theme-preview-matrix keeps a stable recipe surface with panel, border, and spacing roles instead of ad hoc wrappers.

dense treatment uses compact density and 8px radius base.background, panel, panelElevated, border
Type hierarchytypography

Primary, muted, and badge text roles stay distinct enough for headings, body copy, metadata, and helper text.

6/6 contrast checks pass the AA target.text, textMuted, badgeText
Action clarityinteraction

No unexpected interactive surface is introduced for this noninteractive recipe.

0 action surfaces and 0 control surfaces mapped.button, buttonText, control, controlText, signal, uplink
Media treatmentmedia

Replaceable media stays framed separately from copy and action regions so asset swaps preserve the layout.

Media region is isolated with replaceable fields.panelElevated, border, textMuted
State feedbackstate

Feedback, selected, loading, invalid, and disabled treatments use visible state evidence instead of color-only meaning.

6 state-readiness entries include default, empty, pending, active, invalid, disabled.badge, badgeText, signal
Responsive balanceresponsive

Phone, tablet, and desktop defaults have explicit stack, wrap, media, and overflow policies for the recipe.

single-column stack phone behavior, two-column adaptive grid tablet behavior, and responsive composition grid desktop behavior documented.panel, border, control
Default provenance

Compact Ops default provenance

29 fields
collection-itemlocked-tokenrequires-alt-textsafe-to-edit
  • Titletitle
    safe-to-editlow

    Copy can be edited directly when text remains trimmed, localizable, and safe to wrap at phone widths.

    cloneable block recipe payload
  • Descriptiondescription
    safe-to-editlow

    Copy can be edited directly when text remains trimmed, localizable, and safe to wrap at phone widths.

    cloneable block recipe payload
  • Presetspresets
    locked-tokenmedium

    Keep visual styling aligned to Compact Ops recipe tokens unless the recipe itself changes.

    Compact Ops recipe tokens
  • Recipesrecipes
    safe-to-editlow

    Copy can be edited directly when text remains trimmed, localizable, and safe to wrap at phone widths.

    cloneable block recipe payload
  • Block Typesblock_types
    collection-itemmedium

    Edit repeatable items through collection controls so add, remove, reorder, and item-level updates preserve shape.

    cloneable block recipe payload
  • Block Collectionsblock_collections
    collection-itemmedium

    Edit repeatable items through collection controls so add, remove, reorder, and item-level updates preserve shape.

    cloneable block recipe payload
  • Block Collections Item Idblock_collections[].id
    collection-itemmediumrepeated

    Edit repeatable items through collection controls so add, remove, reorder, and item-level updates preserve shape.

    cloneable block recipe payload
  • Block Collections Item Labelblock_collections[].label
    collection-itemmediumrepeated

    Edit repeatable items through collection controls so add, remove, reorder, and item-level updates preserve shape.

    cloneable block recipe payload
  • Block Collections Item Descriptionblock_collections[].description
    collection-itemmediumrepeated

    Edit repeatable items through collection controls so add, remove, reorder, and item-level updates preserve shape.

    cloneable block recipe payload
  • Block Collections Item Block Typesblock_collections[].block_types
    collection-itemmediumrepeated

    Edit repeatable items through collection controls so add, remove, reorder, and item-level updates preserve shape.

    cloneable block recipe payload
  • Preview Layoutpreview_layout
    locked-tokenmedium

    Keep visual styling aligned to Compact Ops recipe tokens unless the recipe itself changes.

    Compact Ops recipe tokens
  • Default Themedefault_theme
    locked-tokenmedium

    Keep visual styling aligned to Compact Ops recipe tokens unless the recipe itself changes.

    Compact Ops recipe tokens
  • Default Presetdefault_preset
    locked-tokenmedium

    Keep visual styling aligned to Compact Ops recipe tokens unless the recipe itself changes.

    Compact Ops recipe tokens
  • Default Recipedefault_recipe
    safe-to-editlow

    Copy can be edited directly when text remains trimmed, localizable, and safe to wrap at phone widths.

    cloneable block recipe payload
  • Default Block Collectiondefault_block_collection
    collection-itemmedium

    Edit repeatable items through collection controls so add, remove, reorder, and item-level updates preserve shape.

    cloneable block recipe payload
  • Default Design Configurationdefault_design_configuration
    safe-to-editlow

    Copy can be edited directly when text remains trimmed, localizable, and safe to wrap at phone widths.

    cloneable block recipe payload
  • Default Media Placeholderdefault_media_placeholder
    requires-alt-textmedium

    Replace the asset through CMS media data and keep alt, title, provider, or label fallback text meaningful.

    Cloud Elephants placeholder media or CMS media library
  • Design Configurationsdesign_configurations
    safe-to-editlow

    Copy can be edited directly when text remains trimmed, localizable, and safe to wrap at phone widths.

    cloneable block recipe payload
  • Design Configurations Item Iddesign_configurations[].id
    collection-itemmediumrepeated

    Edit repeatable items through collection controls so add, remove, reorder, and item-level updates preserve shape.

    cloneable block recipe payload
  • Design Configurations Item Labeldesign_configurations[].label
    collection-itemmediumrepeated

    Edit repeatable items through collection controls so add, remove, reorder, and item-level updates preserve shape.

    cloneable block recipe payload
  • Design Configurations Item Descriptiondesign_configurations[].description
    collection-itemmediumrepeated

    Edit repeatable items through collection controls so add, remove, reorder, and item-level updates preserve shape.

    cloneable block recipe payload
  • Design Configurations Item Themedesign_configurations[].theme
    locked-tokenmediumrepeated

    Keep visual styling aligned to Compact Ops recipe tokens unless the recipe itself changes.

    Compact Ops recipe tokens
  • Media Placeholdersmedia_placeholders
    requires-alt-textmedium

    Replace the asset through CMS media data and keep alt, title, provider, or label fallback text meaningful.

    Cloud Elephants placeholder media or CMS media library
  • Media Placeholders Item Idmedia_placeholders[].id
    requires-alt-textmediumrepeated

    Replace the asset through CMS media data and keep alt, title, provider, or label fallback text meaningful.

    Cloud Elephants placeholder media or CMS media library
  • Media Placeholders Item Labelmedia_placeholders[].label
    requires-alt-textmediumrepeated

    Replace the asset through CMS media data and keep alt, title, provider, or label fallback text meaningful.

    cloneable block recipe payload
  • Media Placeholders Item Srcmedia_placeholders[].src
    requires-alt-textmediumrepeated

    Replace the asset through CMS media data and keep alt, title, provider, or label fallback text meaningful.

    Cloud Elephants placeholder media or CMS media library
  • Media Placeholders Item Altmedia_placeholders[].alt
    requires-alt-textmediumrepeated

    Replace the asset through CMS media data and keep alt, title, provider, or label fallback text meaningful.

    Cloud Elephants placeholder media or CMS media library
  • Media Placeholders Item Aspect Ratiomedia_placeholders[].aspect_ratio
    requires-alt-textmediumrepeated

    Replace the asset through CMS media data and keep alt, title, provider, or label fallback text meaningful.

    Cloud Elephants placeholder media or CMS media library
  • Media Placeholders Item Source Urlmedia_placeholders[].source_url
    requires-alt-textmediumrepeated

    Replace the asset through CMS media data and keep alt, title, provider, or label fallback text meaningful.

    CMS route, URL, or canonical postEvent path
Edit bundles

Compact Ops edit bundles

6 bundles
Copy bundlerequired / repeatable-items
block_collections[].descriptionblock_collections[].labeldescriptiondesign_configurations[].descriptiondesign_configurations[].labelmedia_placeholders[].label+1

Copy bundle groups 7 fields so CMS edits preserve the recipe shape and default polish.

cloneable block recipe payloadEdit repeatable items through collection controls so add, remove, reorder, and item-level updates preserve shape.
Media bundlerecommended / repeatable-items
default_media_placeholdermedia_placeholdersmedia_placeholders[].altmedia_placeholders[].aspect_ratiomedia_placeholders[].idmedia_placeholders[].src

Media bundle groups 6 fields so CMS edits preserve the recipe shape and default polish.

Cloud Elephants placeholder media or CMS media libraryReplace the asset through CMS media data and keep alt, title, provider, or label fallback text meaningful.
Action bundlerecommended / repeatable-items
media_placeholders[].source_url

Action bundle groups 1 field so CMS edits preserve the recipe shape and default polish.

CMS route, URL, or canonical postEvent pathReplace the asset through CMS media data and keep alt, title, provider, or label fallback text meaningful.
Collection bundlerecommended / repeatable-items
block_collectionsblock_collections[].block_typesblock_collections[].idblock_typesdefault_block_collection

Collection bundle groups 5 fields so CMS edits preserve the recipe shape and default polish.

cloneable block recipe payloadEdit repeatable items through collection controls so add, remove, reorder, and item-level updates preserve shape.
Style bundleguarded / guarded-system
default_presetdefault_themedesign_configurations[].themepresetspreview_layout

Style bundle groups 5 fields so CMS edits preserve the recipe shape and default polish.

Compact Ops recipe tokensKeep visual styling aligned to Compact Ops recipe tokens unless the recipe itself changes.
Content bundlerequired / repeatable-items
default_design_configurationdefault_recipedesign_configurationsdesign_configurations[].idrecipes

Content bundle groups 5 fields so CMS edits preserve the recipe shape and default polish.

cloneable block recipe payloadCopy can be edited directly when text remains trimmed, localizable, and safe to wrap at phone widths.
CMS composition

Compact Ops fields

29 fields
actioncollectioncontentcopymediastyle
  • Titletitle
    copystring
  • Descriptiondescription
    copystring
  • Presetspresets
    stylearray
  • Recipesrecipes
    contentarray
  • Block Typesblock_types
    collectionarray
  • Block Collectionsblock_collections
    collectionarray
  • Block Collections Item Idblock_collections[].id
    collectionstringrepeated
  • Block Collections Item Labelblock_collections[].label
    copystringrepeated
  • Block Collections Item Descriptionblock_collections[].description
    copystringrepeated
  • Block Collections Item Block Typesblock_collections[].block_types
    collectionarrayrepeated
  • Preview Layoutpreview_layout
    stylestring
  • Default Themedefault_theme
    stylestring
  • Default Presetdefault_preset
    stylestring
  • Default Recipedefault_recipe
    contentstring
  • Default Block Collectiondefault_block_collection
    collectionstring
  • Default Design Configurationdefault_design_configuration
    contentstring
  • Default Media Placeholderdefault_media_placeholder
    mediastring
  • Design Configurationsdesign_configurations
    contentarray
  • Design Configurations Item Iddesign_configurations[].id
    contentstringrepeated
  • Design Configurations Item Labeldesign_configurations[].label
    copystringrepeated
  • Design Configurations Item Descriptiondesign_configurations[].description
    copystringrepeated
  • Design Configurations Item Themedesign_configurations[].theme
    styleobjectrepeated
  • Media Placeholdersmedia_placeholders
    mediaarray
  • Media Placeholders Item Idmedia_placeholders[].id
    mediastringrepeated
  • Media Placeholders Item Labelmedia_placeholders[].label
    copystringrepeated
  • Media Placeholders Item Srcmedia_placeholders[].src
    mediastringrepeated
  • Media Placeholders Item Altmedia_placeholders[].alt
    mediastringrepeated
  • Media Placeholders Item Aspect Ratiomedia_placeholders[].aspect_ratio
    mediastringrepeated
  • Media Placeholders Item Source Urlmedia_placeholders[].source_url
    actionstringrepeated
CMS editing

Compact Ops editor guidance

29/29 editable
Copytext/rich-text editor
7/7 editablecopy

Text should be editable, trimmed, localizable, and safe to wrap at mobile widths.

cloneable block recipe payload
Mediamedia picker with alt text
6/6 editablemedia

Media should use a replaceable URL plus meaningful alt, label, or title fallback.

Cloud Elephants placeholder media or CMS media library
Actionlink or event action editor
1/1 editableaction

Actions should resolve to a URL or event name with a human-readable label.

CMS route, URL, or canonical postEvent path
Collectionrepeatable item editor
5/5 editablecollection

Collections should support add, remove, reorder, and item-level editing without changing block shape.

cloneable block recipe payload
Styleappearance preset selector
5/5 editablestyle

Style fields should prefer recipe or appearance tokens over one-off inline values.

Compact Ops recipe tokens
Contentplain content field
5/5 editablecontent

Content should remain serializable JSON and preserve the documented block contract.

cloneable block recipe payload
Default states

Compact Ops state readiness

6 states
DefaultInitial render with the cloneable recipe payload
coveredsurfacepaneltext

Compact Ops tokens with dense documentation treatment

The Compact Ops recipe renders a contract-safe primary state for theme-preview-matrix.
EmptyRepeatable collections have zero items
coveredpaneltextMutedbadge

Reserved panel space with fallback copy or placeholder media

Repeatable fields are documented for add, remove, reorder, and item-level editing.
PendingDeferred content or preview loading
coveredcontroltextMutedprogressTrack

Neutral reserved frame with status copy and no layout shift

Static recipe payloads reserve the same documented frame while content is loading.
ActiveCurrent block and recipe preview are selected
coveredsignaluplinkbutton

Signal/uplink emphasis with visible selected-state chips

Recipe and block selection evidence is rendered in the documentation chrome.
InvalidMedia URL or provider data is invalid
coveredwarningdangerborder

Warning/danger status treatment while preserving the block frame

Media guidance requires URL plus accessible fallback text for invalid or missing assets.
DisabledNoninteractive metadata or held preview state
coveredcontroltextMutedborder

Muted affordance with preserved label, spacing, and hit-area rhythm

Noninteractive blocks retain evidence labels without pretending to be clickable.
Controls and actions

Compact Ops actions and controls

0 surfaces
metadata only
Actions

No public action surface is needed for this payload.

Controls

No input control is needed for this payload.

Recipe styling

Compact Ops style tokens

15 tokens
Page background#f7fbff
Panel surface#ffffff
Elevated surface#ffffff
Primary text#142033
Muted text#526174
Signal accent#166bff
Secondary accent#00a6a6
Border#d6dee8
Control surface#ffffff
Control text#142033
Button surface#166bff
Button text#ffffff
Badge surface#eef5ff
Badge text#174ea6
Font familyInter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif
Readability

Compact Ops contrast checks

6/6
Text on background15.73:1 / AAA
Text on panel16.35:1 / AAA
Muted text on panel6.32:1 / AA
Button text on button4.58:1 / AA
Control text on control16.35:1 / AAA
Badge text on badge7.15:1 / AAA
Accessibility proof

Compact Ops accessibility checks

WCAG 2.2 AA
Semantic structuresemantics / required

theme-preview-matrix keeps semantic wrappers and readable heading/copy structure in the runtime preview.

runtime block sections, cards, lists, and headings
Keyboard and tap targetskeyboard / contextual

The payload is static content, so the accessibility contract is to avoid hidden or misleading interactive affordances.

static content has no hidden focus trap
Text alternativesmedia / required

Media-ready recipes expose replaceable alt text or accessible labels for images, logos, embeds, and placeholders.

media fields include alt/label/title fallbacks
Control labelsforms / contextual

No input controls are present, so there are no unlabeled fields to remediate.

no input controls in this payload
Status and motionstate / required

Recipe defaults avoid motion-only meaning and keep status text inspectable when state is present.

runtime evidence avoids hidden status-only content
Responsive proof

Compact Ops responsive behavior

3 viewports
Phone390px / single-column stack
1 colcompact

Compact Ops stacks theme-preview-matrix into one phone column with compact spacing and bounded content.

min-width:0 surfaces, wrapping copy, and no horizontal overflow in the static catalog phone smoke.
Tablet768px / two-column adaptive grid
2 colcompact

Compact Ops adapts theme-preview-matrix to 2 tablet columns before expanding to the desktop layout.

tablet preview frames keep mid-width composition, wrap controls, and avoid horizontal overflow in the static catalog smoke.
Desktop1366px / responsive composition grid
3 colcompact

Compact Ops gives theme-preview-matrix up to 3 desktop columns while preserving recipe spacing.

desktop preview frames keep constrained widths, stable cards, and no horizontal overflow in the static catalog smoke.
operator

Theme preview matrix sample

Compact Ops

A compact matrix configuration for documenting this governed operator block.

Themeensemble-daylight
Presetdashboard
Recipes1
Blocks1
Structured payload
{
  "id": "block-doc-theme-preview-matrix-data-compact-ops",
  "block_type": "theme-preview-matrix",
  "props": {
    "title": "Theme preview matrix sample",
    "description": "A compact matrix configuration for documenting this governed operator block.",
    "presets": [
      "dashboard"
    ],
    "recipes": [
      "compact-ops"
    ],
    "block_types": [
      "hero"
    ],
    "block_collections": [
      {
        "id": "single-block",
        "label": "Single Block",
        "description": "Compact documentation preview.",
        "block_types": [
          "hero"
        ]
      }
    ],
    "preview_layout": "flow",
    "default_theme": "ensemble-daylight",
    "default_preset": "dashboard",
    "default_recipe": "compact-ops",
    "default_block_collection": "single-block",
    "default_design_configuration": "base",
    "default_media_placeholder": "block-doc-preview-media",
    "design_configurations": [
      {
        "id": "base",
        "label": "Default",
        "description": "Baseline contract props with the selected recipe and standard system preset.",
        "theme": {}
      }
    ],
    "media_placeholders": [
      {
        "id": "block-doc-preview-media",
        "label": "Essential CTO",
        "src": "https://storage.googleapis.com/msgsndr/T3RhpcTQAq7Qb47kPQAB/media/677815b8c290c684d5bf3fbd.png",
        "alt": "Cloud Elephants Essential CTO service visual.",
        "aspect_ratio": "16 / 9",
        "source_url": "https://go.cloudelephants.com/a-la-carte"
      }
    ]
  },
  "block_order": 3,
  "metadata": {
    "composition_recipe": {
      "id": "compact-ops",
      "intent": "operator",
      "label": "Compact Ops",
      "recipe": "compact-ops",
      "source": "block-explorer",
      "quality_proof": [
        "composition"
      ],
      "composition_passport": {
        "id": "compact-ops",
        "label": "Compact Ops composition passport",
        "intent": "operator",
        "recipe": "compact-ops",
        "authoring_mode": "operator-review",
        "complexity": "high",
        "fit": "Use when editors need denser theme-preview-matrix controls, diagnostics, or internal review context.",
        "required_regions": [
          "surface",
          "copy",
          "feedback"
        ],
        "optional_regions": [
          "media",
          "actions",
          "collection"
        ],
        "slots": [
          {
            "id": "surface",
            "label": "Surface",
            "required": true,
            "field_count": 0,
            "editable_count": 0,
            "token_roles": [
              "background",
              "panel",
              "panelElevated",
              "border"
            ],
            "summary": "theme-preview-matrix uses recipe surface tokens to keep the outer frame styled and composable."
          },
          {
            "id": "copy",
            "label": "Copy",
            "required": true,
            "field_count": 7,
            "editable_count": 7,
            "token_roles": [
              "text",
              "textMuted"
            ],
            "summary": "Copy fields map to primary and muted text roles so editors can change words without restyling the block."
          },
          {
            "id": "media",
            "label": "Media",
            "required": false,
            "field_count": 6,
            "editable_count": 6,
            "token_roles": [
              "panelElevated",
              "border"
            ],
            "summary": "Media fields stay isolated from copy and action regions so replacement assets preserve the recipe layout."
          },
          {
            "id": "actions",
            "label": "Actions",
            "required": false,
            "field_count": 1,
            "editable_count": 1,
            "token_roles": [
              "button",
              "buttonText",
              "signal",
              "uplink"
            ],
            "summary": "Action regions use recipe button and accent tokens while preserving href or event payloads."
          },
          {
            "id": "collection",
            "label": "Collection",
            "required": false,
            "field_count": 5,
            "editable_count": 5,
            "token_roles": [
              "panel",
              "panelElevated",
              "border",
              "badge"
            ],
            "summary": "Collection regions define repeatable item boundaries for add, remove, reorder, and nested editing."
          },
          {
            "id": "feedback",
            "label": "Feedback",
            "required": true,
            "field_count": 0,
            "editable_count": 0,
            "token_roles": [
              "badge",
              "badgeText",
              "signal"
            ],
            "summary": "Feedback regions tie state-readiness evidence to visible recipe status treatments."
          }
        ],
        "builder_field_count": 29,
        "editable_field_count": 29,
        "action_count": 0,
        "control_count": 0,
        "replacement_guidance": [
          "Keep Compact Ops recipe tokens as the source of visual styling for the surface, text, controls, and actions.",
          "Replace media URLs through the CMS media library and preserve alt, title, provider, or label fallbacks.",
          "No action wiring is required for this recipe; avoid inventing clickable surfaces in content.",
          "No input controls are required; keep the recipe focused on its documented display regions.",
          "Treat collection regions as repeatable slots that support add, remove, reorder, and item-level editing."
        ],
        "publish_checklist": [
          "Validate theme-preview-matrix against its block contract before publishing.",
          "3 required anatomy regions remain present: surface, copy, feedback.",
          "29/29 builder fields are CMS-editable or intentionally locked.",
          "Noninteractive presentation has no unexpected action or control surfaces.",
          "Phone, tablet, and desktop responsive behavior maps have been reviewed for wrapping and overflow.",
          "Contrast checks meet the AA recipe target."
        ],
        "agent_notes": [
          "Prefer editing props fields described by the builder field map; metadata is evidence, not primary content.",
          "Preserve recipe_alignment token roles unless the page theme or recipe changes intentionally.",
          "Use the anatomy slots to compose or replace content without changing the block type."
        ],
        "summary": "Compact Ops is a high-complexity operator-review recipe with 6 documented composition slots."
      },
      "composition_passport_complexity": "high",
      "composition_passport_authoring_mode": "operator-review",
      "composition_passport_slots": [
        "surface",
        "copy",
        "media",
        "actions",
        "collection",
        "feedback"
      ],
      "composition_passport_check_count": 6,
      "visual_polish_check_count": 6,
      "visual_polish_pass_count": 6,
      "visual_polish_checks": [
        {
          "id": "surface-rhythm",
          "label": "Surface rhythm",
          "axis": "layout",
          "status": "ready",
          "token_roles": [
            "background",
            "panel",
            "panelElevated",
            "border"
          ],
          "evidence": "dense treatment uses compact density and 8px radius base.",
          "summary": "theme-preview-matrix keeps a stable recipe surface with panel, border, and spacing roles instead of ad hoc wrappers."
        },
        {
          "id": "type-hierarchy",
          "label": "Type hierarchy",
          "axis": "typography",
          "status": "ready",
          "token_roles": [
            "text",
            "textMuted",
            "badgeText"
          ],
          "evidence": "6/6 contrast checks pass the AA target.",
          "summary": "Primary, muted, and badge text roles stay distinct enough for headings, body copy, metadata, and helper text."
        },
        {
          "id": "action-clarity",
          "label": "Action clarity",
          "axis": "interaction",
          "status": "ready",
          "token_roles": [
            "button",
            "buttonText",
            "control",
            "controlText",
            "signal",
            "uplink"
          ],
          "evidence": "0 action surfaces and 0 control surfaces mapped.",
          "summary": "No unexpected interactive surface is introduced for this noninteractive recipe."
        },
        {
          "id": "media-treatment",
          "label": "Media treatment",
          "axis": "media",
          "status": "ready",
          "token_roles": [
            "panelElevated",
            "border",
            "textMuted"
          ],
          "evidence": "Media region is isolated with replaceable fields.",
          "summary": "Replaceable media stays framed separately from copy and action regions so asset swaps preserve the layout."
        },
        {
          "id": "state-feedback",
          "label": "State feedback",
          "axis": "state",
          "status": "ready",
          "token_roles": [
            "badge",
            "badgeText",
            "signal"
          ],
          "evidence": "6 state-readiness entries include default, empty, pending, active, invalid, disabled.",
          "summary": "Feedback, selected, loading, invalid, and disabled treatments use visible state evidence instead of color-only meaning."
        },
        {
          "id": "responsive-balance",
          "label": "Responsive balance",
          "axis": "responsive",
          "status": "ready",
          "token_roles": [
            "panel",
            "border",
            "control"
          ],
          "evidence": "single-column stack phone behavior, two-column adaptive grid tablet behavior, and responsive composition grid desktop behavior documented.",
          "summary": "Phone, tablet, and desktop defaults have explicit stack, wrap, media, and overflow policies for the recipe."
        }
      ],
      "visual_polish_axes": [
        "layout",
        "typography",
        "interaction",
        "media",
        "state",
        "responsive"
      ],
      "default_provenance_count": 29,
      "default_provenance_map": [
        {
          "path": "title",
          "label": "Title",
          "field_role": "copy",
          "value_type": "string",
          "editable": true,
          "repeated": false,
          "default_source": "cloneable block recipe payload",
          "replacement_policy": "safe-to-edit",
          "replacement_risk": "low",
          "guardrail": "Copy can be edited directly when text remains trimmed, localizable, and safe to wrap at phone widths.",
          "validation": "Text should be editable, trimmed, localizable, and safe to wrap at mobile widths.",
          "summary": "Title defaults from cloneable block recipe payload; replacement is low risk with safe-to-edit policy."
        },
        {
          "path": "description",
          "label": "Description",
          "field_role": "copy",
          "value_type": "string",
          "editable": true,
          "repeated": false,
          "default_source": "cloneable block recipe payload",
          "replacement_policy": "safe-to-edit",
          "replacement_risk": "low",
          "guardrail": "Copy can be edited directly when text remains trimmed, localizable, and safe to wrap at phone widths.",
          "validation": "Text should be editable, trimmed, localizable, and safe to wrap at mobile widths.",
          "summary": "Description defaults from cloneable block recipe payload; replacement is low risk with safe-to-edit policy."
        },
        {
          "path": "presets",
          "label": "Presets",
          "field_role": "style",
          "value_type": "array",
          "editable": true,
          "repeated": false,
          "default_source": "Compact Ops recipe tokens",
          "replacement_policy": "locked-token",
          "replacement_risk": "medium",
          "guardrail": "Keep visual styling aligned to Compact Ops recipe tokens unless the recipe itself changes.",
          "validation": "Style fields should prefer recipe or appearance tokens over one-off inline values.",
          "summary": "Presets defaults from Compact Ops recipe tokens; replacement is medium risk with locked-token policy."
        },
        {
          "path": "recipes",
          "label": "Recipes",
          "field_role": "content",
          "value_type": "array",
          "editable": true,
          "repeated": false,
          "default_source": "cloneable block recipe payload",
          "replacement_policy": "safe-to-edit",
          "replacement_risk": "low",
          "guardrail": "Copy can be edited directly when text remains trimmed, localizable, and safe to wrap at phone widths.",
          "validation": "Content should remain serializable JSON and preserve the documented block contract.",
          "summary": "Recipes defaults from cloneable block recipe payload; replacement is low risk with safe-to-edit policy."
        },
        {
          "path": "block_types",
          "label": "Block Types",
          "field_role": "collection",
          "value_type": "array",
          "editable": true,
          "repeated": false,
          "default_source": "cloneable block recipe payload",
          "replacement_policy": "collection-item",
          "replacement_risk": "medium",
          "guardrail": "Edit repeatable items through collection controls so add, remove, reorder, and item-level updates preserve shape.",
          "validation": "Collections should support add, remove, reorder, and item-level editing without changing block shape.",
          "summary": "Block Types defaults from cloneable block recipe payload; replacement is medium risk with collection-item policy."
        },
        {
          "path": "block_collections",
          "label": "Block Collections",
          "field_role": "collection",
          "value_type": "array",
          "editable": true,
          "repeated": false,
          "default_source": "cloneable block recipe payload",
          "replacement_policy": "collection-item",
          "replacement_risk": "medium",
          "guardrail": "Edit repeatable items through collection controls so add, remove, reorder, and item-level updates preserve shape.",
          "validation": "Collections should support add, remove, reorder, and item-level editing without changing block shape.",
          "summary": "Block Collections defaults from cloneable block recipe payload; replacement is medium risk with collection-item policy."
        },
        {
          "path": "block_collections[].id",
          "label": "Block Collections Item Id",
          "field_role": "collection",
          "value_type": "string",
          "editable": true,
          "repeated": true,
          "default_source": "cloneable block recipe payload",
          "replacement_policy": "collection-item",
          "replacement_risk": "medium",
          "guardrail": "Edit repeatable items through collection controls so add, remove, reorder, and item-level updates preserve shape.",
          "validation": "Collections should support add, remove, reorder, and item-level editing without changing block shape.",
          "summary": "Block Collections Item Id defaults from cloneable block recipe payload; replacement is medium risk with collection-item policy."
        },
        {
          "path": "block_collections[].label",
          "label": "Block Collections Item Label",
          "field_role": "copy",
          "value_type": "string",
          "editable": true,
          "repeated": true,
          "default_source": "cloneable block recipe payload",
          "replacement_policy": "collection-item",
          "replacement_risk": "medium",
          "guardrail": "Edit repeatable items through collection controls so add, remove, reorder, and item-level updates preserve shape.",
          "validation": "Text should be editable, trimmed, localizable, and safe to wrap at mobile widths.",
          "summary": "Block Collections Item Label defaults from cloneable block recipe payload; replacement is medium risk with collection-item policy."
        },
        {
          "path": "block_collections[].description",
          "label": "Block Collections Item Description",
          "field_role": "copy",
          "value_type": "string",
          "editable": true,
          "repeated": true,
          "default_source": "cloneable block recipe payload",
          "replacement_policy": "collection-item",
          "replacement_risk": "medium",
          "guardrail": "Edit repeatable items through collection controls so add, remove, reorder, and item-level updates preserve shape.",
          "validation": "Text should be editable, trimmed, localizable, and safe to wrap at mobile widths.",
          "summary": "Block Collections Item Description defaults from cloneable block recipe payload; replacement is medium risk with collection-item policy."
        },
        {
          "path": "block_collections[].block_types",
          "label": "Block Collections Item Block Types",
          "field_role": "collection",
          "value_type": "array",
          "editable": true,
          "repeated": true,
          "default_source": "cloneable block recipe payload",
          "replacement_policy": "collection-item",
          "replacement_risk": "medium",
          "guardrail": "Edit repeatable items through collection controls so add, remove, reorder, and item-level updates preserve shape.",
          "validation": "Collections should support add, remove, reorder, and item-level editing without changing block shape.",
          "summary": "Block Collections Item Block Types defaults from cloneable block recipe payload; replacement is medium risk with collection-item policy."
        },
        {
          "path": "preview_layout",
          "label": "Preview Layout",
          "field_role": "style",
          "value_type": "string",
          "editable": true,
          "repeated": false,
          "default_source": "Compact Ops recipe tokens",
          "replacement_policy": "locked-token",
          "replacement_risk": "medium",
          "guardrail": "Keep visual styling aligned to Compact Ops recipe tokens unless the recipe itself changes.",
          "validation": "Style fields should prefer recipe or appearance tokens over one-off inline values.",
          "summary": "Preview Layout defaults from Compact Ops recipe tokens; replacement is medium risk with locked-token policy."
        },
        {
          "path": "default_theme",
          "label": "Default Theme",
          "field_role": "style",
          "value_type": "string",
          "editable": true,
          "repeated": false,
          "default_source": "Compact Ops recipe tokens",
          "replacement_policy": "locked-token",
          "replacement_risk": "medium",
          "guardrail": "Keep visual styling aligned to Compact Ops recipe tokens unless the recipe itself changes.",
          "validation": "Style fields should prefer recipe or appearance tokens over one-off inline values.",
          "summary": "Default Theme defaults from Compact Ops recipe tokens; replacement is medium risk with locked-token policy."
        },
        {
          "path": "default_preset",
          "label": "Default Preset",
          "field_role": "style",
          "value_type": "string",
          "editable": true,
          "repeated": false,
          "default_source": "Compact Ops recipe tokens",
          "replacement_policy": "locked-token",
          "replacement_risk": "medium",
          "guardrail": "Keep visual styling aligned to Compact Ops recipe tokens unless the recipe itself changes.",
          "validation": "Style fields should prefer recipe or appearance tokens over one-off inline values.",
          "summary": "Default Preset defaults from Compact Ops recipe tokens; replacement is medium risk with locked-token policy."
        },
        {
          "path": "default_recipe",
          "label": "Default Recipe",
          "field_role": "content",
          "value_type": "string",
          "editable": true,
          "repeated": false,
          "default_source": "cloneable block recipe payload",
          "replacement_policy": "safe-to-edit",
          "replacement_risk": "low",
          "guardrail": "Copy can be edited directly when text remains trimmed, localizable, and safe to wrap at phone widths.",
          "validation": "Content should remain serializable JSON and preserve the documented block contract.",
          "summary": "Default Recipe defaults from cloneable block recipe payload; replacement is low risk with safe-to-edit policy."
        },
        {
          "path": "default_block_collection",
          "label": "Default Block Collection",
          "field_role": "collection",
          "value_type": "string",
          "editable": true,
          "repeated": false,
          "default_source": "cloneable block recipe payload",
          "replacement_policy": "collection-item",
          "replacement_risk": "medium",
          "guardrail": "Edit repeatable items through collection controls so add, remove, reorder, and item-level updates preserve shape.",
          "validation": "Collections should support add, remove, reorder, and item-level editing without changing block shape.",
          "summary": "Default Block Collection defaults from cloneable block recipe payload; replacement is medium risk with collection-item policy."
        },
        {
          "path": "default_design_configuration",
          "label": "Default Design Configuration",
          "field_role": "content",
          "value_type": "string",
          "editable": true,
          "repeated": false,
          "default_source": "cloneable block recipe payload",
          "replacement_policy": "safe-to-edit",
          "replacement_risk": "low",
          "guardrail": "Copy can be edited directly when text remains trimmed, localizable, and safe to wrap at phone widths.",
          "validation": "Content should remain serializable JSON and preserve the documented block contract.",
          "summary": "Default Design Configuration defaults from cloneable block recipe payload; replacement is low risk with safe-to-edit policy."
        },
        {
          "path": "default_media_placeholder",
          "label": "Default Media Placeholder",
          "field_role": "media",
          "value_type": "string",
          "editable": true,
          "repeated": false,
          "default_source": "Cloud Elephants placeholder media or CMS media library",
          "replacement_policy": "requires-alt-text",
          "replacement_risk": "medium",
          "guardrail": "Replace the asset through CMS media data and keep alt, title, provider, or label fallback text meaningful.",
          "validation": "Media should use a replaceable URL plus meaningful alt, label, or title fallback.",
          "summary": "Default Media Placeholder defaults from Cloud Elephants placeholder media or CMS media library; replacement is medium risk with requires-alt-text policy."
        },
        {
          "path": "design_configurations",
          "label": "Design Configurations",
          "field_role": "content",
          "value_type": "array",
          "editable": true,
          "repeated": false,
          "default_source": "cloneable block recipe payload",
          "replacement_policy": "safe-to-edit",
          "replacement_risk": "low",
          "guardrail": "Copy can be edited directly when text remains trimmed, localizable, and safe to wrap at phone widths.",
          "validation": "Content should remain serializable JSON and preserve the documented block contract.",
          "summary": "Design Configurations defaults from cloneable block recipe payload; replacement is low risk with safe-to-edit policy."
        },
        {
          "path": "design_configurations[].id",
          "label": "Design Configurations Item Id",
          "field_role": "content",
          "value_type": "string",
          "editable": true,
          "repeated": true,
          "default_source": "cloneable block recipe payload",
          "replacement_policy": "collection-item",
          "replacement_risk": "medium",
          "guardrail": "Edit repeatable items through collection controls so add, remove, reorder, and item-level updates preserve shape.",
          "validation": "Content should remain serializable JSON and preserve the documented block contract.",
          "summary": "Design Configurations Item Id defaults from cloneable block recipe payload; replacement is medium risk with collection-item policy."
        },
        {
          "path": "design_configurations[].label",
          "label": "Design Configurations Item Label",
          "field_role": "copy",
          "value_type": "string",
          "editable": true,
          "repeated": true,
          "default_source": "cloneable block recipe payload",
          "replacement_policy": "collection-item",
          "replacement_risk": "medium",
          "guardrail": "Edit repeatable items through collection controls so add, remove, reorder, and item-level updates preserve shape.",
          "validation": "Text should be editable, trimmed, localizable, and safe to wrap at mobile widths.",
          "summary": "Design Configurations Item Label defaults from cloneable block recipe payload; replacement is medium risk with collection-item policy."
        },
        {
          "path": "design_configurations[].description",
          "label": "Design Configurations Item Description",
          "field_role": "copy",
          "value_type": "string",
          "editable": true,
          "repeated": true,
          "default_source": "cloneable block recipe payload",
          "replacement_policy": "collection-item",
          "replacement_risk": "medium",
          "guardrail": "Edit repeatable items through collection controls so add, remove, reorder, and item-level updates preserve shape.",
          "validation": "Text should be editable, trimmed, localizable, and safe to wrap at mobile widths.",
          "summary": "Design Configurations Item Description defaults from cloneable block recipe payload; replacement is medium risk with collection-item policy."
        },
        {
          "path": "design_configurations[].theme",
          "label": "Design Configurations Item Theme",
          "field_role": "style",
          "value_type": "object",
          "editable": true,
          "repeated": true,
          "default_source": "Compact Ops recipe tokens",
          "replacement_policy": "locked-token",
          "replacement_risk": "medium",
          "guardrail": "Keep visual styling aligned to Compact Ops recipe tokens unless the recipe itself changes.",
          "validation": "Style fields should prefer recipe or appearance tokens over one-off inline values.",
          "summary": "Design Configurations Item Theme defaults from Compact Ops recipe tokens; replacement is medium risk with locked-token policy."
        },
        {
          "path": "media_placeholders",
          "label": "Media Placeholders",
          "field_role": "media",
          "value_type": "array",
          "editable": true,
          "repeated": false,
          "default_source": "Cloud Elephants placeholder media or CMS media library",
          "replacement_policy": "requires-alt-text",
          "replacement_risk": "medium",
          "guardrail": "Replace the asset through CMS media data and keep alt, title, provider, or label fallback text meaningful.",
          "validation": "Media should use a replaceable URL plus meaningful alt, label, or title fallback.",
          "summary": "Media Placeholders defaults from Cloud Elephants placeholder media or CMS media library; replacement is medium risk with requires-alt-text policy."
        },
        {
          "path": "media_placeholders[].id",
          "label": "Media Placeholders Item Id",
          "field_role": "media",
          "value_type": "string",
          "editable": true,
          "repeated": true,
          "default_source": "Cloud Elephants placeholder media or CMS media library",
          "replacement_policy": "requires-alt-text",
          "replacement_risk": "medium",
          "guardrail": "Replace the asset through CMS media data and keep alt, title, provider, or label fallback text meaningful.",
          "validation": "Media should use a replaceable URL plus meaningful alt, label, or title fallback.",
          "summary": "Media Placeholders Item Id defaults from Cloud Elephants placeholder media or CMS media library; replacement is medium risk with requires-alt-text policy."
        },
        {
          "path": "media_placeholders[].label",
          "label": "Media Placeholders Item Label",
          "field_role": "copy",
          "value_type": "string",
          "editable": true,
          "repeated": true,
          "default_source": "cloneable block recipe payload",
          "replacement_policy": "requires-alt-text",
          "replacement_risk": "medium",
          "guardrail": "Replace the asset through CMS media data and keep alt, title, provider, or label fallback text meaningful.",
          "validation": "Text should be editable, trimmed, localizable, and safe to wrap at mobile widths.",
          "summary": "Media Placeholders Item Label defaults from cloneable block recipe payload; replacement is medium risk with requires-alt-text policy."
        },
        {
          "path": "media_placeholders[].src",
          "label": "Media Placeholders Item Src",
          "field_role": "media",
          "value_type": "string",
          "editable": true,
          "repeated": true,
          "default_source": "Cloud Elephants placeholder media or CMS media library",
          "replacement_policy": "requires-alt-text",
          "replacement_risk": "medium",
          "guardrail": "Replace the asset through CMS media data and keep alt, title, provider, or label fallback text meaningful.",
          "validation": "Media should use a replaceable URL plus meaningful alt, label, or title fallback.",
          "summary": "Media Placeholders Item Src defaults from Cloud Elephants placeholder media or CMS media library; replacement is medium risk with requires-alt-text policy."
        },
        {
          "path": "media_placeholders[].alt",
          "label": "Media Placeholders Item Alt",
          "field_role": "media",
          "value_type": "string",
          "editable": true,
          "repeated": true,
          "default_source": "Cloud Elephants placeholder media or CMS media library",
          "replacement_policy": "requires-alt-text",
          "replacement_risk": "medium",
          "guardrail": "Replace the asset through CMS media data and keep alt, title, provider, or label fallback text meaningful.",
          "validation": "Media should use a replaceable URL plus meaningful alt, label, or title fallback.",
          "summary": "Media Placeholders Item Alt defaults from Cloud Elephants placeholder media or CMS media library; replacement is medium risk with requires-alt-text policy."
        },
        {
          "path": "media_placeholders[].aspect_ratio",
          "label": "Media Placeholders Item Aspect Ratio",
          "field_role": "media",
          "value_type": "string",
          "editable": true,
          "repeated": true,
          "default_source": "Cloud Elephants placeholder media or CMS media library",
          "replacement_policy": "requires-alt-text",
          "replacement_risk": "medium",
          "guardrail": "Replace the asset through CMS media data and keep alt, title, provider, or label fallback text meaningful.",
          "validation": "Media should use a replaceable URL plus meaningful alt, label, or title fallback.",
          "summary": "Media Placeholders Item Aspect Ratio defaults from Cloud Elephants placeholder media or CMS media library; replacement is medium risk with requires-alt-text policy."
        },
        {
          "path": "media_placeholders[].source_url",
          "label": "Media Placeholders Item Source Url",
          "field_role": "action",
          "value_type": "string",
          "editable": true,
          "repeated": true,
          "default_source": "CMS route, URL, or canonical postEvent path",
          "replacement_policy": "requires-alt-text",
          "replacement_risk": "medium",
          "guardrail": "Replace the asset through CMS media data and keep alt, title, provider, or label fallback text meaningful.",
          "validation": "Actions should resolve to a URL or event name with a human-readable label.",
          "summary": "Media Placeholders Item Source Url defaults from CMS route, URL, or canonical postEvent path; replacement is medium risk with requires-alt-text policy."
        }
      ],
      "default_replacement_policies": [
        "collection-item",
        "locked-token",
        "requires-alt-text",
        "safe-to-edit"
      ],
      "default_replacement_risks": [
        "low",
        "medium"
      ],
      "default_replacement_high_risk_count": 0,
      "content_edit_bundle_count": 6,
      "content_edit_bundles": [
        {
          "id": "copy",
          "label": "Copy bundle",
          "intent": "required",
          "edit_mode": "repeatable-items",
          "field_paths": [
            "block_collections[].description",
            "block_collections[].label",
            "description",
            "design_configurations[].description",
            "design_configurations[].label",
            "media_placeholders[].label",
            "title"
          ],
          "default_sources": [
            "cloneable block recipe payload"
          ],
          "guardrails": [
            "Edit repeatable items through collection controls so add, remove, reorder, and item-level updates preserve shape.",
            "Copy can be edited directly when text remains trimmed, localizable, and safe to wrap at phone widths.",
            "Replace the asset through CMS media data and keep alt, title, provider, or label fallback text meaningful."
          ],
          "depends_on": [
            "type hierarchy",
            "mobile wrapping"
          ],
          "summary": "Copy bundle groups 7 fields so CMS edits preserve the recipe shape and default polish."
        },
        {
          "id": "media",
          "label": "Media bundle",
          "intent": "recommended",
          "edit_mode": "repeatable-items",
          "field_paths": [
            "default_media_placeholder",
            "media_placeholders",
            "media_placeholders[].alt",
            "media_placeholders[].aspect_ratio",
            "media_placeholders[].id",
            "media_placeholders[].src"
          ],
          "default_sources": [
            "Cloud Elephants placeholder media or CMS media library"
          ],
          "guardrails": [
            "Replace the asset through CMS media data and keep alt, title, provider, or label fallback text meaningful."
          ],
          "depends_on": [
            "copy alt text",
            "responsive fit"
          ],
          "summary": "Media bundle groups 6 fields so CMS edits preserve the recipe shape and default polish."
        },
        {
          "id": "actions",
          "label": "Action bundle",
          "intent": "recommended",
          "edit_mode": "repeatable-items",
          "field_paths": [
            "media_placeholders[].source_url"
          ],
          "default_sources": [
            "CMS route, URL, or canonical postEvent path"
          ],
          "guardrails": [
            "Replace the asset through CMS media data and keep alt, title, provider, or label fallback text meaningful."
          ],
          "depends_on": [
            "copy labels"
          ],
          "summary": "Action bundle groups 1 field so CMS edits preserve the recipe shape and default polish."
        },
        {
          "id": "collections",
          "label": "Collection bundle",
          "intent": "recommended",
          "edit_mode": "repeatable-items",
          "field_paths": [
            "block_collections",
            "block_collections[].block_types",
            "block_collections[].id",
            "block_types",
            "default_block_collection"
          ],
          "default_sources": [
            "cloneable block recipe payload"
          ],
          "guardrails": [
            "Edit repeatable items through collection controls so add, remove, reorder, and item-level updates preserve shape."
          ],
          "depends_on": [
            "item shape",
            "responsive wrapping"
          ],
          "summary": "Collection bundle groups 5 fields so CMS edits preserve the recipe shape and default polish."
        },
        {
          "id": "style",
          "label": "Style bundle",
          "intent": "guarded",
          "edit_mode": "guarded-system",
          "field_paths": [
            "default_preset",
            "default_theme",
            "design_configurations[].theme",
            "presets",
            "preview_layout"
          ],
          "default_sources": [
            "Compact Ops recipe tokens"
          ],
          "guardrails": [
            "Keep visual styling aligned to Compact Ops recipe tokens unless the recipe itself changes."
          ],
          "depends_on": [
            "theme recipe tokens",
            "contrast proof"
          ],
          "summary": "Style bundle groups 5 fields so CMS edits preserve the recipe shape and default polish."
        },
        {
          "id": "content",
          "label": "Content bundle",
          "intent": "required",
          "edit_mode": "repeatable-items",
          "field_paths": [
            "default_design_configuration",
            "default_recipe",
            "design_configurations",
            "design_configurations[].id",
            "recipes"
          ],
          "default_sources": [
            "cloneable block recipe payload"
          ],
          "guardrails": [
            "Copy can be edited directly when text remains trimmed, localizable, and safe to wrap at phone widths.",
            "Edit repeatable items through collection controls so add, remove, reorder, and item-level updates preserve shape."
          ],
          "depends_on": [
            "contract-safe JSON"
          ],
          "summary": "Content bundle groups 5 fields so CMS edits preserve the recipe shape and default polish."
        }
      ],
      "content_edit_bundle_ids": [
        "copy",
        "media",
        "actions",
        "collections",
        "style",
        "content"
      ],
      "content_edit_bundle_modes": [
        "guarded-system",
        "repeatable-items"
      ],
      "content_edit_bundle_required_count": 2,
      "content_edit_bundle_guarded_count": 1,
      "recipe_compatibility_count": 6,
      "recipe_compatibility_map": [
        {
          "id": "page-context",
          "label": "Page context",
          "axis": "page",
          "fit": "primary",
          "values": [
            "listing",
            "product-page",
            "product-announcement",
            "blog",
            "event-promotion",
            "partnership-announcement"
          ],
          "evidence": "6 page types mapped for theme-preview-matrix.",
          "guardrail": "Choose the first matching page type before editing copy, media, or actions so the recipe starts in the right narrative context.",
          "summary": "theme-preview-matrix is best composed into listing, product-page, product-announcement, and related pages."
        },
        {
          "id": "section-role",
          "label": "Section role",
          "axis": "layout",
          "fit": "supporting",
          "values": [
            "collection",
            "media",
            "content",
            "metadata"
          ],
          "evidence": "6 anatomy regions produce 4 section roles.",
          "guardrail": "Place the block where its required anatomy regions have enough room before compressing it into dense page slots.",
          "summary": "theme-preview-matrix can act as collection, media, content within a composed page."
        },
        {
          "id": "content-model",
          "label": "Content model",
          "axis": "content",
          "fit": "specialized",
          "values": [
            "copy-led",
            "media-led",
            "cta-led",
            "repeatable"
          ],
          "evidence": "29/29 fields are editable across 4 content models.",
          "guardrail": "Keep the content model stable when replacing defaults; do not turn a repeatable or media-led recipe into unrelated ad hoc content.",
          "summary": "Compact Ops composition passport is copy-led, media-led, cta-led, repeatable for CMS composition."
        },
        {
          "id": "interaction-model",
          "label": "Interaction model",
          "axis": "interaction",
          "fit": "supporting",
          "values": [
            "noninteractive"
          ],
          "evidence": "0 action surfaces and 0 control surfaces mapped.",
          "guardrail": "Review href, event, input, required, and disabled-state evidence before publishing an interactive recipe.",
          "summary": "theme-preview-matrix is compatible with noninteractive content sections."
        },
        {
          "id": "authoring-fit",
          "label": "Authoring fit",
          "axis": "authoring",
          "fit": "specialized",
          "values": [
            "operator-review",
            "high-complexity",
            "0-high-care-replacements"
          ],
          "evidence": "29 default provenance items with 0 high-care replacements.",
          "guardrail": "Use the default provenance map before cloning the recipe into CMS content or agent-generated page data.",
          "summary": "theme-preview-matrix uses operator-review authoring with high complexity."
        },
        {
          "id": "responsive-fit",
          "label": "Responsive fit",
          "axis": "responsive",
          "fit": "primary",
          "values": [
            "single-column stack",
            "two-column adaptive grid",
            "responsive composition grid",
            "min-width:0 surfaces, wrapping copy, and no horizontal overflow in the static catalog phone smoke."
          ],
          "evidence": "3 responsive behavior maps cover phone, tablet, and desktop composition.",
          "guardrail": "Review phone wrapping, tablet mid-width balance, and desktop density before adding nested content, longer labels, or extra media.",
          "summary": "theme-preview-matrix has explicit phone, tablet, and desktop compatibility evidence for composed pages."
        }
      ],
      "recipe_compatibility_axes": [
        "page",
        "layout",
        "content",
        "interaction",
        "authoring",
        "responsive"
      ],
      "recipe_compatibility_page_types": [
        "listing",
        "product-page",
        "product-announcement",
        "blog",
        "event-promotion",
        "partnership-announcement"
      ],
      "recipe_compatibility_section_roles": [
        "collection",
        "media",
        "content",
        "metadata"
      ],
      "recipe_compatibility_fits": [
        "primary",
        "specialized",
        "supporting"
      ],
      "builder_field_count": 29,
      "builder_field_map": [
        {
          "path": "title",
          "label": "Title",
          "value_type": "string",
          "role": "copy",
          "editable": true,
          "repeated": false,
          "summary": "Title is a string field used for copy."
        },
        {
          "path": "description",
          "label": "Description",
          "value_type": "string",
          "role": "copy",
          "editable": true,
          "repeated": false,
          "summary": "Description is a string field used for copy."
        },
        {
          "path": "presets",
          "label": "Presets",
          "value_type": "array",
          "role": "style",
          "editable": true,
          "repeated": false,
          "summary": "Presets is a array field used for style."
        },
        {
          "path": "recipes",
          "label": "Recipes",
          "value_type": "array",
          "role": "content",
          "editable": true,
          "repeated": false,
          "summary": "Recipes is a array field used for content."
        },
        {
          "path": "block_types",
          "label": "Block Types",
          "value_type": "array",
          "role": "collection",
          "editable": true,
          "repeated": false,
          "summary": "Block Types is a array field used for collection."
        },
        {
          "path": "block_collections",
          "label": "Block Collections",
          "value_type": "array",
          "role": "collection",
          "editable": true,
          "repeated": false,
          "summary": "Block Collections is a array field used for collection."
        },
        {
          "path": "block_collections[].id",
          "label": "Block Collections Item Id",
          "value_type": "string",
          "role": "collection",
          "editable": true,
          "repeated": true,
          "summary": "Block Collections Item Id is a string collection field used for collection."
        },
        {
          "path": "block_collections[].label",
          "label": "Block Collections Item Label",
          "value_type": "string",
          "role": "copy",
          "editable": true,
          "repeated": true,
          "summary": "Block Collections Item Label is a string collection field used for copy."
        },
        {
          "path": "block_collections[].description",
          "label": "Block Collections Item Description",
          "value_type": "string",
          "role": "copy",
          "editable": true,
          "repeated": true,
          "summary": "Block Collections Item Description is a string collection field used for copy."
        },
        {
          "path": "block_collections[].block_types",
          "label": "Block Collections Item Block Types",
          "value_type": "array",
          "role": "collection",
          "editable": true,
          "repeated": true,
          "summary": "Block Collections Item Block Types is a array collection field used for collection."
        },
        {
          "path": "preview_layout",
          "label": "Preview Layout",
          "value_type": "string",
          "role": "style",
          "editable": true,
          "repeated": false,
          "summary": "Preview Layout is a string field used for style."
        },
        {
          "path": "default_theme",
          "label": "Default Theme",
          "value_type": "string",
          "role": "style",
          "editable": true,
          "repeated": false,
          "summary": "Default Theme is a string field used for style."
        },
        {
          "path": "default_preset",
          "label": "Default Preset",
          "value_type": "string",
          "role": "style",
          "editable": true,
          "repeated": false,
          "summary": "Default Preset is a string field used for style."
        },
        {
          "path": "default_recipe",
          "label": "Default Recipe",
          "value_type": "string",
          "role": "content",
          "editable": true,
          "repeated": false,
          "summary": "Default Recipe is a string field used for content."
        },
        {
          "path": "default_block_collection",
          "label": "Default Block Collection",
          "value_type": "string",
          "role": "collection",
          "editable": true,
          "repeated": false,
          "summary": "Default Block Collection is a string field used for collection."
        },
        {
          "path": "default_design_configuration",
          "label": "Default Design Configuration",
          "value_type": "string",
          "role": "content",
          "editable": true,
          "repeated": false,
          "summary": "Default Design Configuration is a string field used for content."
        },
        {
          "path": "default_media_placeholder",
          "label": "Default Media Placeholder",
          "value_type": "string",
          "role": "media",
          "editable": true,
          "repeated": false,
          "summary": "Default Media Placeholder is a string field used for media."
        },
        {
          "path": "design_configurations",
          "label": "Design Configurations",
          "value_type": "array",
          "role": "content",
          "editable": true,
          "repeated": false,
          "summary": "Design Configurations is a array field used for content."
        },
        {
          "path": "design_configurations[].id",
          "label": "Design Configurations Item Id",
          "value_type": "string",
          "role": "content",
          "editable": true,
          "repeated": true,
          "summary": "Design Configurations Item Id is a string collection field used for content."
        },
        {
          "path": "design_configurations[].label",
          "label": "Design Configurations Item Label",
          "value_type": "string",
          "role": "copy",
          "editable": true,
          "repeated": true,
          "summary": "Design Configurations Item Label is a string collection field used for copy."
        },
        {
          "path": "design_configurations[].description",
          "label": "Design Configurations Item Description",
          "value_type": "string",
          "role": "copy",
          "editable": true,
          "repeated": true,
          "summary": "Design Configurations Item Description is a string collection field used for copy."
        },
        {
          "path": "design_configurations[].theme",
          "label": "Design Configurations Item Theme",
          "value_type": "object",
          "role": "style",
          "editable": true,
          "repeated": true,
          "summary": "Design Configurations Item Theme is a object collection field used for style."
        },
        {
          "path": "media_placeholders",
          "label": "Media Placeholders",
          "value_type": "array",
          "role": "media",
          "editable": true,
          "repeated": false,
          "summary": "Media Placeholders is a array field used for media."
        },
        {
          "path": "media_placeholders[].id",
          "label": "Media Placeholders Item Id",
          "value_type": "string",
          "role": "media",
          "editable": true,
          "repeated": true,
          "summary": "Media Placeholders Item Id is a string collection field used for media."
        },
        {
          "path": "media_placeholders[].label",
          "label": "Media Placeholders Item Label",
          "value_type": "string",
          "role": "copy",
          "editable": true,
          "repeated": true,
          "summary": "Media Placeholders Item Label is a string collection field used for copy."
        },
        {
          "path": "media_placeholders[].src",
          "label": "Media Placeholders Item Src",
          "value_type": "string",
          "role": "media",
          "editable": true,
          "repeated": true,
          "summary": "Media Placeholders Item Src is a string collection field used for media."
        },
        {
          "path": "media_placeholders[].alt",
          "label": "Media Placeholders Item Alt",
          "value_type": "string",
          "role": "media",
          "editable": true,
          "repeated": true,
          "summary": "Media Placeholders Item Alt is a string collection field used for media."
        },
        {
          "path": "media_placeholders[].aspect_ratio",
          "label": "Media Placeholders Item Aspect Ratio",
          "value_type": "string",
          "role": "media",
          "editable": true,
          "repeated": true,
          "summary": "Media Placeholders Item Aspect Ratio is a string collection field used for media."
        },
        {
          "path": "media_placeholders[].source_url",
          "label": "Media Placeholders Item Source Url",
          "value_type": "string",
          "role": "action",
          "editable": true,
          "repeated": true,
          "summary": "Media Placeholders Item Source Url is a string collection field used for action."
        }
      ],
      "editor_guidance_count": 6,
      "editor_guidance_map": [
        {
          "id": "copy",
          "label": "Copy",
          "field_role": "copy",
          "field_count": 7,
          "editable_count": 7,
          "editor_widget": "text/rich-text editor",
          "validation": "Text should be editable, trimmed, localizable, and safe to wrap at mobile widths.",
          "default_source": "cloneable block recipe payload",
          "summary": "Copy fields use the text/rich-text editor across 7/7 editable fields."
        },
        {
          "id": "media",
          "label": "Media",
          "field_role": "media",
          "field_count": 6,
          "editable_count": 6,
          "editor_widget": "media picker with alt text",
          "validation": "Media should use a replaceable URL plus meaningful alt, label, or title fallback.",
          "default_source": "Cloud Elephants placeholder media or CMS media library",
          "summary": "Media fields use the media picker with alt text across 6/6 editable fields."
        },
        {
          "id": "action",
          "label": "Action",
          "field_role": "action",
          "field_count": 1,
          "editable_count": 1,
          "editor_widget": "link or event action editor",
          "validation": "Actions should resolve to a URL or event name with a human-readable label.",
          "default_source": "CMS route, URL, or canonical postEvent path",
          "summary": "Action fields use the link or event action editor across 1/1 editable field."
        },
        {
          "id": "collection",
          "label": "Collection",
          "field_role": "collection",
          "field_count": 5,
          "editable_count": 5,
          "editor_widget": "repeatable item editor",
          "validation": "Collections should support add, remove, reorder, and item-level editing without changing block shape.",
          "default_source": "cloneable block recipe payload",
          "summary": "Collection fields use the repeatable item editor across 5/5 editable fields."
        },
        {
          "id": "style",
          "label": "Style",
          "field_role": "style",
          "field_count": 5,
          "editable_count": 5,
          "editor_widget": "appearance preset selector",
          "validation": "Style fields should prefer recipe or appearance tokens over one-off inline values.",
          "default_source": "Compact Ops recipe tokens",
          "summary": "Style fields use the appearance preset selector across 5/5 editable fields."
        },
        {
          "id": "content",
          "label": "Content",
          "field_role": "content",
          "field_count": 5,
          "editable_count": 5,
          "editor_widget": "plain content field",
          "validation": "Content should remain serializable JSON and preserve the documented block contract.",
          "default_source": "cloneable block recipe payload",
          "summary": "Content fields use the plain content field across 5/5 editable fields."
        }
      ],
      "editor_field_roles": [
        "copy",
        "media",
        "action",
        "collection",
        "style",
        "content"
      ],
      "editor_editable_field_count": 29,
      "state_readiness_count": 6,
      "state_readiness_map": [
        {
          "id": "default",
          "label": "Default",
          "status": "covered",
          "trigger": "Initial render with the cloneable recipe payload",
          "visual_treatment": "Compact Ops tokens with dense documentation treatment",
          "token_roles": [
            "surface",
            "panel",
            "text",
            "button"
          ],
          "proof": "The Compact Ops recipe renders a contract-safe primary state for theme-preview-matrix.",
          "summary": "Default state uses the recipe surface, text, and action tokens without one-off styling."
        },
        {
          "id": "empty",
          "label": "Empty",
          "status": "covered",
          "trigger": "Repeatable collections have zero items",
          "visual_treatment": "Reserved panel space with fallback copy or placeholder media",
          "token_roles": [
            "panel",
            "textMuted",
            "badge",
            "border"
          ],
          "proof": "Repeatable fields are documented for add, remove, reorder, and item-level editing.",
          "summary": "Empty-state guidance preserves layout rhythm instead of collapsing the block surface."
        },
        {
          "id": "pending",
          "label": "Pending",
          "status": "covered",
          "trigger": "Deferred content or preview loading",
          "visual_treatment": "Neutral reserved frame with status copy and no layout shift",
          "token_roles": [
            "control",
            "textMuted",
            "progressTrack",
            "border"
          ],
          "proof": "Static recipe payloads reserve the same documented frame while content is loading.",
          "summary": "Pending state keeps dimensions stable while using muted control/status tokens."
        },
        {
          "id": "active",
          "label": "Active",
          "status": "covered",
          "trigger": "Current block and recipe preview are selected",
          "visual_treatment": "Signal/uplink emphasis with visible selected-state chips",
          "token_roles": [
            "signal",
            "uplink",
            "button",
            "badge"
          ],
          "proof": "Recipe and block selection evidence is rendered in the documentation chrome.",
          "summary": "Active state is represented with recipe accent tokens and visible state labels."
        },
        {
          "id": "invalid",
          "label": "Invalid",
          "status": "covered",
          "trigger": "Media URL or provider data is invalid",
          "visual_treatment": "Warning/danger status treatment while preserving the block frame",
          "token_roles": [
            "warning",
            "danger",
            "border",
            "text"
          ],
          "proof": "Media guidance requires URL plus accessible fallback text for invalid or missing assets.",
          "summary": "Invalid state guidance favors explicit status evidence over ambiguous visual collapse."
        },
        {
          "id": "disabled",
          "label": "Disabled",
          "status": "covered",
          "trigger": "Noninteractive metadata or held preview state",
          "visual_treatment": "Muted affordance with preserved label, spacing, and hit-area rhythm",
          "token_roles": [
            "control",
            "textMuted",
            "border",
            "panel"
          ],
          "proof": "Noninteractive blocks retain evidence labels without pretending to be clickable.",
          "summary": "Disabled state keeps the block readable and spatially stable when interaction is unavailable."
        }
      ],
      "state_readiness_states": [
        "default",
        "empty",
        "pending",
        "active",
        "invalid",
        "disabled"
      ],
      "state_readiness_statuses": [
        "covered",
        "covered",
        "covered",
        "covered",
        "covered",
        "covered"
      ],
      "anatomy_region_count": 6,
      "anatomy_map": [
        {
          "id": "surface",
          "label": "Surface",
          "region_role": "outer layout and background",
          "field_paths": [],
          "token_roles": [
            "background",
            "panel",
            "panelElevated",
            "border"
          ],
          "state_ids": [
            "default",
            "empty",
            "pending",
            "active",
            "invalid",
            "disabled"
          ],
          "required": true,
          "summary": "theme-preview-matrix uses recipe surface tokens to keep the outer frame styled and composable."
        },
        {
          "id": "copy",
          "label": "Copy",
          "region_role": "headings, body copy, labels, and supporting text",
          "field_paths": [
            "block_collections[].description",
            "block_collections[].label",
            "description",
            "design_configurations[].description",
            "design_configurations[].label",
            "media_placeholders[].label",
            "title"
          ],
          "token_roles": [
            "text",
            "textMuted"
          ],
          "state_ids": [
            "default",
            "empty",
            "pending",
            "active",
            "invalid",
            "disabled"
          ],
          "required": true,
          "summary": "Copy fields map to primary and muted text roles so editors can change words without restyling the block."
        },
        {
          "id": "media",
          "label": "Media",
          "region_role": "replaceable image, iframe, embed, avatar, logo, or gallery area",
          "field_paths": [
            "default_media_placeholder",
            "media_placeholders",
            "media_placeholders[].alt",
            "media_placeholders[].aspect_ratio",
            "media_placeholders[].id",
            "media_placeholders[].src"
          ],
          "token_roles": [
            "panelElevated",
            "border"
          ],
          "state_ids": [
            "default",
            "empty",
            "pending",
            "active",
            "invalid",
            "disabled"
          ],
          "required": false,
          "summary": "Media fields stay isolated from copy and action regions so replacement assets preserve the recipe layout."
        },
        {
          "id": "actions",
          "label": "Actions",
          "region_role": "CTA, link, event, and navigation affordances",
          "field_paths": [
            "media_placeholders[].source_url"
          ],
          "token_roles": [
            "button",
            "buttonText",
            "signal",
            "uplink"
          ],
          "state_ids": [
            "default",
            "empty",
            "pending",
            "active",
            "invalid",
            "disabled"
          ],
          "required": false,
          "summary": "Action regions use recipe button and accent tokens while preserving href or event payloads."
        },
        {
          "id": "collection",
          "label": "Collection",
          "region_role": "repeatable cards, steps, metrics, logos, links, or nested blocks",
          "field_paths": [
            "block_collections",
            "block_collections[].block_types",
            "block_collections[].id",
            "block_types",
            "default_block_collection"
          ],
          "token_roles": [
            "panel",
            "panelElevated",
            "border",
            "badge"
          ],
          "state_ids": [
            "default",
            "empty",
            "pending",
            "active",
            "invalid",
            "disabled"
          ],
          "required": false,
          "summary": "Collection regions define repeatable item boundaries for add, remove, reorder, and nested editing."
        },
        {
          "id": "feedback",
          "label": "Feedback",
          "region_role": "status, validation, selected, loading, and disabled evidence",
          "field_paths": [],
          "token_roles": [
            "badge",
            "badgeText",
            "signal"
          ],
          "state_ids": [
            "default",
            "empty",
            "pending",
            "active",
            "invalid",
            "disabled"
          ],
          "required": true,
          "summary": "Feedback regions tie state-readiness evidence to visible recipe status treatments."
        }
      ],
      "anatomy_regions": [
        "surface",
        "copy",
        "media",
        "actions",
        "collection",
        "feedback"
      ],
      "anatomy_token_roles": [
        "background",
        "badge",
        "badgeText",
        "border",
        "button",
        "buttonText",
        "panel",
        "panelElevated",
        "signal",
        "text",
        "textMuted",
        "uplink"
      ],
      "action_count": 0,
      "action_map": [],
      "control_count": 0,
      "control_map": [],
      "style_token_count": 15,
      "style_token_map": [
        {
          "role": "background",
          "label": "Page background",
          "value": "#f7fbff",
          "token_type": "color",
          "summary": "Page background uses the background recipe token."
        },
        {
          "role": "panel",
          "label": "Panel surface",
          "value": "#ffffff",
          "token_type": "color",
          "summary": "Panel surface uses the panel recipe token."
        },
        {
          "role": "panelElevated",
          "label": "Elevated surface",
          "value": "#ffffff",
          "token_type": "color",
          "summary": "Elevated surface uses the panelElevated recipe token."
        },
        {
          "role": "text",
          "label": "Primary text",
          "value": "#142033",
          "token_type": "color",
          "summary": "Primary text uses the text recipe token."
        },
        {
          "role": "textMuted",
          "label": "Muted text",
          "value": "#526174",
          "token_type": "color",
          "summary": "Muted text uses the textMuted recipe token."
        },
        {
          "role": "signal",
          "label": "Signal accent",
          "value": "#166bff",
          "token_type": "color",
          "summary": "Signal accent uses the signal recipe token."
        },
        {
          "role": "uplink",
          "label": "Secondary accent",
          "value": "#00a6a6",
          "token_type": "color",
          "summary": "Secondary accent uses the uplink recipe token."
        },
        {
          "role": "border",
          "label": "Border",
          "value": "#d6dee8",
          "token_type": "color",
          "summary": "Border uses the border recipe token."
        },
        {
          "role": "control",
          "label": "Control surface",
          "value": "#ffffff",
          "token_type": "color",
          "summary": "Control surface uses the control recipe token."
        },
        {
          "role": "controlText",
          "label": "Control text",
          "value": "#142033",
          "token_type": "color",
          "summary": "Control text uses the controlText recipe token."
        },
        {
          "role": "button",
          "label": "Button surface",
          "value": "#166bff",
          "token_type": "color",
          "summary": "Button surface uses the button recipe token."
        },
        {
          "role": "buttonText",
          "label": "Button text",
          "value": "#ffffff",
          "token_type": "color",
          "summary": "Button text uses the buttonText recipe token."
        },
        {
          "role": "badge",
          "label": "Badge surface",
          "value": "#eef5ff",
          "token_type": "color",
          "summary": "Badge surface uses the badge recipe token."
        },
        {
          "role": "badgeText",
          "label": "Badge text",
          "value": "#174ea6",
          "token_type": "color",
          "summary": "Badge text uses the badgeText recipe token."
        },
        {
          "role": "fontFamily",
          "label": "Font family",
          "value": "Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, \"Segoe UI\", sans-serif",
          "token_type": "font",
          "summary": "Font family comes from the active recipe theme tokens."
        }
      ],
      "style_token_roles": [
        "background",
        "panel",
        "panelElevated",
        "text",
        "textMuted",
        "signal",
        "uplink",
        "border",
        "control",
        "controlText",
        "button",
        "buttonText",
        "badge",
        "badgeText",
        "fontFamily"
      ],
      "contrast_check_count": 6,
      "contrast_pass_count": 6,
      "contrast_checks": [
        {
          "id": "text-on-background",
          "label": "Text on background",
          "foreground_role": "text",
          "background_role": "background",
          "foreground": "#142033",
          "background": "#f7fbff",
          "ratio": 15.73,
          "required_ratio": 4.5,
          "passes": true,
          "level": "AAA",
          "summary": "Text on background is AAA at 15.73:1 against a 4.5:1 requirement."
        },
        {
          "id": "text-on-panel",
          "label": "Text on panel",
          "foreground_role": "text",
          "background_role": "panel",
          "foreground": "#142033",
          "background": "#ffffff",
          "ratio": 16.35,
          "required_ratio": 4.5,
          "passes": true,
          "level": "AAA",
          "summary": "Text on panel is AAA at 16.35:1 against a 4.5:1 requirement."
        },
        {
          "id": "muted-text-on-panel",
          "label": "Muted text on panel",
          "foreground_role": "textMuted",
          "background_role": "panel",
          "foreground": "#526174",
          "background": "#ffffff",
          "ratio": 6.32,
          "required_ratio": 4.5,
          "passes": true,
          "level": "AA",
          "summary": "Muted text on panel is AA at 6.32:1 against a 4.5:1 requirement."
        },
        {
          "id": "button-text-on-button",
          "label": "Button text on button",
          "foreground_role": "buttonText",
          "background_role": "button",
          "foreground": "#ffffff",
          "background": "#166bff",
          "ratio": 4.58,
          "required_ratio": 4.5,
          "passes": true,
          "level": "AA",
          "summary": "Button text on button is AA at 4.58:1 against a 4.5:1 requirement."
        },
        {
          "id": "control-text-on-control",
          "label": "Control text on control",
          "foreground_role": "controlText",
          "background_role": "control",
          "foreground": "#142033",
          "background": "#ffffff",
          "ratio": 16.35,
          "required_ratio": 4.5,
          "passes": true,
          "level": "AAA",
          "summary": "Control text on control is AAA at 16.35:1 against a 4.5:1 requirement."
        },
        {
          "id": "badge-text-on-badge",
          "label": "Badge text on badge",
          "foreground_role": "badgeText",
          "background_role": "badge",
          "foreground": "#174ea6",
          "background": "#eef5ff",
          "ratio": 7.15,
          "required_ratio": 4.5,
          "passes": true,
          "level": "AAA",
          "summary": "Badge text on badge is AAA at 7.15:1 against a 4.5:1 requirement."
        }
      ],
      "contrast_target": "AA",
      "accessibility_standard": "WCAG_2_2_AA",
      "accessibility_check_count": 5,
      "accessibility_checks": [
        {
          "id": "semantic-structure",
          "label": "Semantic structure",
          "category": "semantics",
          "status": "covered",
          "required": true,
          "proof": "runtime block sections, cards, lists, and headings",
          "summary": "theme-preview-matrix keeps semantic wrappers and readable heading/copy structure in the runtime preview."
        },
        {
          "id": "keyboard-and-tap-targets",
          "label": "Keyboard and tap targets",
          "category": "keyboard",
          "status": "covered",
          "required": false,
          "proof": "static content has no hidden focus trap",
          "summary": "The payload is static content, so the accessibility contract is to avoid hidden or misleading interactive affordances."
        },
        {
          "id": "text-alternatives",
          "label": "Text alternatives",
          "category": "media",
          "status": "covered",
          "required": true,
          "proof": "media fields include alt/label/title fallbacks",
          "summary": "Media-ready recipes expose replaceable alt text or accessible labels for images, logos, embeds, and placeholders."
        },
        {
          "id": "control-labels",
          "label": "Control labels",
          "category": "forms",
          "status": "covered",
          "required": false,
          "proof": "no input controls in this payload",
          "summary": "No input controls are present, so there are no unlabeled fields to remediate."
        },
        {
          "id": "status-and-motion",
          "label": "Status and motion",
          "category": "state",
          "status": "covered",
          "required": true,
          "proof": "runtime evidence avoids hidden status-only content",
          "summary": "Recipe defaults avoid motion-only meaning and keep status text inspectable when state is present."
        }
      ],
      "responsive_behavior_count": 3,
      "responsive_behavior_map": [
        {
          "id": "phone",
          "label": "Phone",
          "viewport_width": 390,
          "layout_mode": "single-column stack",
          "column_count": 1,
          "spacing_density": "compact",
          "media_policy": "Media slots remain optional and collapse without leaving empty chrome.",
          "overflow_policy": "min-width:0 surfaces, wrapping copy, and no horizontal overflow in the static catalog phone smoke.",
          "interaction_policy": "Static content keeps readable line lengths and avoids hidden interactive affordances.",
          "proof": "npm run test:static:block-catalog all-blocks-phone",
          "summary": "Compact Ops stacks theme-preview-matrix into one phone column with compact spacing and bounded content."
        },
        {
          "id": "tablet",
          "label": "Tablet",
          "viewport_width": 768,
          "layout_mode": "two-column adaptive grid",
          "column_count": 2,
          "spacing_density": "compact",
          "media_policy": "Media slots remain optional and collapse without leaving empty chrome.",
          "overflow_policy": "tablet preview frames keep mid-width composition, wrap controls, and avoid horizontal overflow in the static catalog smoke.",
          "interaction_policy": "Static content keeps readable line lengths and avoids hidden interactive affordances.",
          "proof": "npm run test:static:block-catalog all-blocks-tablet",
          "summary": "Compact Ops adapts theme-preview-matrix to 2 tablet columns before expanding to the desktop layout."
        },
        {
          "id": "desktop",
          "label": "Desktop",
          "viewport_width": 1366,
          "layout_mode": "responsive composition grid",
          "column_count": 3,
          "spacing_density": "compact",
          "media_policy": "Media slots remain optional and collapse without leaving empty chrome.",
          "overflow_policy": "desktop preview frames keep constrained widths, stable cards, and no horizontal overflow in the static catalog smoke.",
          "interaction_policy": "Static content keeps readable line lengths and avoids hidden interactive affordances.",
          "proof": "npm run test:static:block-catalog all-blocks-desktop",
          "summary": "Compact Ops gives theme-preview-matrix up to 3 desktop columns while preserving recipe spacing."
        }
      ],
      "responsive_viewports": [
        "phone",
        "tablet",
        "desktop"
      ],
      "responsive_proof": [
        "npm run test:static:block-catalog all-blocks-phone",
        "npm run test:static:block-catalog all-blocks-tablet",
        "npm run test:static:block-catalog all-blocks-desktop"
      ],
      "interactive_roles": [],
      "recipe_alignment": {
        "action_token": "button",
        "control_token": "control",
        "surface_token": "panel",
        "text_token": "text",
        "source": "theme recipe tokens"
      }
    },
    "cloneable": true
  }
}
block

Long Copy Stress

Editorial Block Systemstress

A resilience payload with plausible long CMS copy, longer labels, and dense supporting metadata to prove wrapping and spacing.

Component anatomy

Long Copy Stress anatomy

6 regions
Surfaceouter layout and background
required0 fields4 tokens

theme-preview-matrix uses recipe surface tokens to keep the outer frame styled and composable.

background, panel, panelElevated, border
Copyheadings, body copy, labels, and supporting text
required7 fields2 tokens

Copy fields map to primary and muted text roles so editors can change words without restyling the block.

text, textMuted
Mediareplaceable image, iframe, embed, avatar, logo, or gallery area
optional6 fields2 tokens

Media fields stay isolated from copy and action regions so replacement assets preserve the recipe layout.

panelElevated, border
ActionsCTA, link, event, and navigation affordances
optional1 fields4 tokens

Action regions use recipe button and accent tokens while preserving href or event payloads.

button, buttonText, signal, uplink
Collectionrepeatable cards, steps, metrics, logos, links, or nested blocks
optional5 fields4 tokens

Collection regions define repeatable item boundaries for add, remove, reorder, and nested editing.

panel, panelElevated, border, badge
Feedbackstatus, validation, selected, loading, and disabled evidence
required0 fields3 tokens

Feedback regions tie state-readiness evidence to visible recipe status treatments.

badge, badgeText, signal
Recipe passport

Long Copy Stress passport

high
Fitstress-test

Use to verify theme-preview-matrix long copy, awkward values, and wrapping before publishing customer pages.

Editable fields29/29

Long Copy Stress is a high-complexity stress-test recipe with 6 documented composition slots.

Interactions0 actions / 0 controls

3 required regions, 3 optional regions.

Slots
Surface / 0/0Copy / 7/7Media / 6/6Actions / 1/1Collection / 5/5Feedback / 0/0
Replacement guidance
  • Keep Editorial Block System recipe tokens as the source of visual styling for the surface, text, controls, and actions.
  • Replace media URLs through the CMS media library and preserve alt, title, provider, or label fallbacks.
  • No action wiring is required for this recipe; avoid inventing clickable surfaces in content.
  • No input controls are required; keep the recipe focused on its documented display regions.
  • Treat collection regions as repeatable slots that support add, remove, reorder, and item-level editing.
Publish checklist
  • Validate theme-preview-matrix against its block contract before publishing.
  • 3 required anatomy regions remain present: surface, copy, feedback.
  • 29/29 builder fields are CMS-editable or intentionally locked.
  • Noninteractive presentation has no unexpected action or control surfaces.
  • Phone, tablet, and desktop responsive behavior maps have been reviewed for wrapping and overflow.
  • Contrast checks meet the AA recipe target.
Recipe fit

Long Copy Stress recipe fit

6 axes
Page contextpage / supporting
listingproduct-pageproduct-announcementblogevent-promotionpartnership-announcement

theme-preview-matrix is best composed into listing, product-page, product-announcement, and related pages.

6 page types mapped for theme-preview-matrix.Choose the first matching page type before editing copy, media, or actions so the recipe starts in the right narrative context.
Section rolelayout / supporting
collectionmediacontentmetadata

theme-preview-matrix can act as collection, media, content within a composed page.

6 anatomy regions produce 4 section roles.Place the block where its required anatomy regions have enough room before compressing it into dense page slots.
Content modelcontent / specialized
copy-ledmedia-ledcta-ledrepeatable

Long Copy Stress composition passport is copy-led, media-led, cta-led, repeatable for CMS composition.

29/29 fields are editable across 4 content models.Keep the content model stable when replacing defaults; do not turn a repeatable or media-led recipe into unrelated ad hoc content.
Interaction modelinteraction / supporting
noninteractive

theme-preview-matrix is compatible with noninteractive content sections.

0 action surfaces and 0 control surfaces mapped.Review href, event, input, required, and disabled-state evidence before publishing an interactive recipe.
Authoring fitauthoring / specialized
stress-testhigh-complexity0-high-care-replacements

theme-preview-matrix uses stress-test authoring with high complexity.

29 default provenance items with 0 high-care replacements.Use the default provenance map before cloning the recipe into CMS content or agent-generated page data.
Responsive fitresponsive / primary
single-column stacktwo-column adaptive gridresponsive composition gridmin-width:0 surfaces, wrapping copy, and no horizontal overflow in the static catalog phone smoke.

theme-preview-matrix has explicit phone, tablet, and desktop compatibility evidence for composed pages.

3 responsive behavior maps cover phone, tablet, and desktop composition.Review phone wrapping, tablet mid-width balance, and desktop density before adding nested content, longer labels, or extra media.
Visual polish

Long Copy Stress visual polish

6/6
Surface rhythmlayout

theme-preview-matrix keeps a stable recipe surface with panel, border, and spacing roles instead of ad hoc wrappers.

editorial treatment uses spacious density and 8px radius base.background, panel, panelElevated, border
Type hierarchytypography

Primary, muted, and badge text roles stay distinct enough for headings, body copy, metadata, and helper text.

6/6 contrast checks pass the AA target.text, textMuted, badgeText
Action clarityinteraction

No unexpected interactive surface is introduced for this noninteractive recipe.

0 action surfaces and 0 control surfaces mapped.button, buttonText, control, controlText, signal, uplink
Media treatmentmedia

Replaceable media stays framed separately from copy and action regions so asset swaps preserve the layout.

Media region is isolated with replaceable fields.panelElevated, border, textMuted
State feedbackstate

Feedback, selected, loading, invalid, and disabled treatments use visible state evidence instead of color-only meaning.

6 state-readiness entries include default, empty, pending, active, invalid, disabled.badge, badgeText, signal
Responsive balanceresponsive

Phone, tablet, and desktop defaults have explicit stack, wrap, media, and overflow policies for the recipe.

single-column stack phone behavior, two-column adaptive grid tablet behavior, and responsive composition grid desktop behavior documented.panel, border, control
Default provenance

Long Copy Stress default provenance

29 fields
collection-itemlocked-tokenrequires-alt-textsafe-to-edit
  • Titletitle
    safe-to-editlow

    Copy can be edited directly when text remains trimmed, localizable, and safe to wrap at phone widths.

    cloneable block recipe payload
  • Descriptiondescription
    safe-to-editlow

    Copy can be edited directly when text remains trimmed, localizable, and safe to wrap at phone widths.

    cloneable block recipe payload
  • Presetspresets
    locked-tokenmedium

    Keep visual styling aligned to Editorial Block System recipe tokens unless the recipe itself changes.

    Editorial Block System recipe tokens
  • Recipesrecipes
    safe-to-editlow

    Copy can be edited directly when text remains trimmed, localizable, and safe to wrap at phone widths.

    cloneable block recipe payload
  • Block Typesblock_types
    collection-itemmedium

    Edit repeatable items through collection controls so add, remove, reorder, and item-level updates preserve shape.

    cloneable block recipe payload
  • Block Collectionsblock_collections
    collection-itemmedium

    Edit repeatable items through collection controls so add, remove, reorder, and item-level updates preserve shape.

    cloneable block recipe payload
  • Block Collections Item Idblock_collections[].id
    collection-itemmediumrepeated

    Edit repeatable items through collection controls so add, remove, reorder, and item-level updates preserve shape.

    cloneable block recipe payload
  • Block Collections Item Labelblock_collections[].label
    collection-itemmediumrepeated

    Edit repeatable items through collection controls so add, remove, reorder, and item-level updates preserve shape.

    cloneable block recipe payload
  • Block Collections Item Descriptionblock_collections[].description
    collection-itemmediumrepeated

    Edit repeatable items through collection controls so add, remove, reorder, and item-level updates preserve shape.

    cloneable block recipe payload
  • Block Collections Item Block Typesblock_collections[].block_types
    collection-itemmediumrepeated

    Edit repeatable items through collection controls so add, remove, reorder, and item-level updates preserve shape.

    cloneable block recipe payload
  • Preview Layoutpreview_layout
    locked-tokenmedium

    Keep visual styling aligned to Editorial Block System recipe tokens unless the recipe itself changes.

    Editorial Block System recipe tokens
  • Default Themedefault_theme
    locked-tokenmedium

    Keep visual styling aligned to Editorial Block System recipe tokens unless the recipe itself changes.

    Editorial Block System recipe tokens
  • Default Presetdefault_preset
    locked-tokenmedium

    Keep visual styling aligned to Editorial Block System recipe tokens unless the recipe itself changes.

    Editorial Block System recipe tokens
  • Default Recipedefault_recipe
    safe-to-editlow

    Copy can be edited directly when text remains trimmed, localizable, and safe to wrap at phone widths.

    cloneable block recipe payload
  • Default Block Collectiondefault_block_collection
    collection-itemmedium

    Edit repeatable items through collection controls so add, remove, reorder, and item-level updates preserve shape.

    cloneable block recipe payload
  • Default Design Configurationdefault_design_configuration
    safe-to-editlow

    Copy can be edited directly when text remains trimmed, localizable, and safe to wrap at phone widths.

    cloneable block recipe payload
  • Default Media Placeholderdefault_media_placeholder
    requires-alt-textmedium

    Replace the asset through CMS media data and keep alt, title, provider, or label fallback text meaningful.

    Cloud Elephants placeholder media or CMS media library
  • Design Configurationsdesign_configurations
    safe-to-editlow

    Copy can be edited directly when text remains trimmed, localizable, and safe to wrap at phone widths.

    cloneable block recipe payload
  • Design Configurations Item Iddesign_configurations[].id
    collection-itemmediumrepeated

    Edit repeatable items through collection controls so add, remove, reorder, and item-level updates preserve shape.

    cloneable block recipe payload
  • Design Configurations Item Labeldesign_configurations[].label
    collection-itemmediumrepeated

    Edit repeatable items through collection controls so add, remove, reorder, and item-level updates preserve shape.

    cloneable block recipe payload
  • Design Configurations Item Descriptiondesign_configurations[].description
    collection-itemmediumrepeated

    Edit repeatable items through collection controls so add, remove, reorder, and item-level updates preserve shape.

    cloneable block recipe payload
  • Design Configurations Item Themedesign_configurations[].theme
    locked-tokenmediumrepeated

    Keep visual styling aligned to Editorial Block System recipe tokens unless the recipe itself changes.

    Editorial Block System recipe tokens
  • Media Placeholdersmedia_placeholders
    requires-alt-textmedium

    Replace the asset through CMS media data and keep alt, title, provider, or label fallback text meaningful.

    Cloud Elephants placeholder media or CMS media library
  • Media Placeholders Item Idmedia_placeholders[].id
    requires-alt-textmediumrepeated

    Replace the asset through CMS media data and keep alt, title, provider, or label fallback text meaningful.

    Cloud Elephants placeholder media or CMS media library
  • Media Placeholders Item Labelmedia_placeholders[].label
    requires-alt-textmediumrepeated

    Replace the asset through CMS media data and keep alt, title, provider, or label fallback text meaningful.

    cloneable block recipe payload
  • Media Placeholders Item Srcmedia_placeholders[].src
    requires-alt-textmediumrepeated

    Replace the asset through CMS media data and keep alt, title, provider, or label fallback text meaningful.

    Cloud Elephants placeholder media or CMS media library
  • Media Placeholders Item Altmedia_placeholders[].alt
    requires-alt-textmediumrepeated

    Replace the asset through CMS media data and keep alt, title, provider, or label fallback text meaningful.

    Cloud Elephants placeholder media or CMS media library
  • Media Placeholders Item Aspect Ratiomedia_placeholders[].aspect_ratio
    requires-alt-textmediumrepeated

    Replace the asset through CMS media data and keep alt, title, provider, or label fallback text meaningful.

    Cloud Elephants placeholder media or CMS media library
  • Media Placeholders Item Source Urlmedia_placeholders[].source_url
    requires-alt-textmediumrepeated

    Replace the asset through CMS media data and keep alt, title, provider, or label fallback text meaningful.

    CMS route, URL, or canonical postEvent path
Edit bundles

Long Copy Stress edit bundles

6 bundles
Copy bundlerequired / repeatable-items
block_collections[].descriptionblock_collections[].labeldescriptiondesign_configurations[].descriptiondesign_configurations[].labelmedia_placeholders[].label+1

Copy bundle groups 7 fields so CMS edits preserve the recipe shape and default polish.

cloneable block recipe payloadEdit repeatable items through collection controls so add, remove, reorder, and item-level updates preserve shape.
Media bundlerecommended / repeatable-items
default_media_placeholdermedia_placeholdersmedia_placeholders[].altmedia_placeholders[].aspect_ratiomedia_placeholders[].idmedia_placeholders[].src

Media bundle groups 6 fields so CMS edits preserve the recipe shape and default polish.

Cloud Elephants placeholder media or CMS media libraryReplace the asset through CMS media data and keep alt, title, provider, or label fallback text meaningful.
Action bundlerecommended / repeatable-items
media_placeholders[].source_url

Action bundle groups 1 field so CMS edits preserve the recipe shape and default polish.

CMS route, URL, or canonical postEvent pathReplace the asset through CMS media data and keep alt, title, provider, or label fallback text meaningful.
Collection bundlerecommended / repeatable-items
block_collectionsblock_collections[].block_typesblock_collections[].idblock_typesdefault_block_collection

Collection bundle groups 5 fields so CMS edits preserve the recipe shape and default polish.

cloneable block recipe payloadEdit repeatable items through collection controls so add, remove, reorder, and item-level updates preserve shape.
Style bundleguarded / guarded-system
default_presetdefault_themedesign_configurations[].themepresetspreview_layout

Style bundle groups 5 fields so CMS edits preserve the recipe shape and default polish.

Editorial Block System recipe tokensKeep visual styling aligned to Editorial Block System recipe tokens unless the recipe itself changes.
Content bundlerequired / repeatable-items
default_design_configurationdefault_recipedesign_configurationsdesign_configurations[].idrecipes

Content bundle groups 5 fields so CMS edits preserve the recipe shape and default polish.

cloneable block recipe payloadCopy can be edited directly when text remains trimmed, localizable, and safe to wrap at phone widths.
CMS composition

Long Copy Stress fields

29 fields
actioncollectioncontentcopymediastyle
  • Titletitle
    copystring
  • Descriptiondescription
    copystring
  • Presetspresets
    stylearray
  • Recipesrecipes
    contentarray
  • Block Typesblock_types
    collectionarray
  • Block Collectionsblock_collections
    collectionarray
  • Block Collections Item Idblock_collections[].id
    collectionstringrepeated
  • Block Collections Item Labelblock_collections[].label
    copystringrepeated
  • Block Collections Item Descriptionblock_collections[].description
    copystringrepeated
  • Block Collections Item Block Typesblock_collections[].block_types
    collectionarrayrepeated
  • Preview Layoutpreview_layout
    stylestring
  • Default Themedefault_theme
    stylestring
  • Default Presetdefault_preset
    stylestring
  • Default Recipedefault_recipe
    contentstring
  • Default Block Collectiondefault_block_collection
    collectionstring
  • Default Design Configurationdefault_design_configuration
    contentstring
  • Default Media Placeholderdefault_media_placeholder
    mediastring
  • Design Configurationsdesign_configurations
    contentarray
  • Design Configurations Item Iddesign_configurations[].id
    contentstringrepeated
  • Design Configurations Item Labeldesign_configurations[].label
    copystringrepeated
  • Design Configurations Item Descriptiondesign_configurations[].description
    copystringrepeated
  • Design Configurations Item Themedesign_configurations[].theme
    styleobjectrepeated
  • Media Placeholdersmedia_placeholders
    mediaarray
  • Media Placeholders Item Idmedia_placeholders[].id
    mediastringrepeated
  • Media Placeholders Item Labelmedia_placeholders[].label
    copystringrepeated
  • Media Placeholders Item Srcmedia_placeholders[].src
    mediastringrepeated
  • Media Placeholders Item Altmedia_placeholders[].alt
    mediastringrepeated
  • Media Placeholders Item Aspect Ratiomedia_placeholders[].aspect_ratio
    mediastringrepeated
  • Media Placeholders Item Source Urlmedia_placeholders[].source_url
    actionstringrepeated
CMS editing

Long Copy Stress editor guidance

29/29 editable
Copytext/rich-text editor
7/7 editablecopy

Text should be editable, trimmed, localizable, and safe to wrap at mobile widths.

cloneable block recipe payload
Mediamedia picker with alt text
6/6 editablemedia

Media should use a replaceable URL plus meaningful alt, label, or title fallback.

Cloud Elephants placeholder media or CMS media library
Actionlink or event action editor
1/1 editableaction

Actions should resolve to a URL or event name with a human-readable label.

CMS route, URL, or canonical postEvent path
Collectionrepeatable item editor
5/5 editablecollection

Collections should support add, remove, reorder, and item-level editing without changing block shape.

cloneable block recipe payload
Styleappearance preset selector
5/5 editablestyle

Style fields should prefer recipe or appearance tokens over one-off inline values.

Editorial Block System recipe tokens
Contentplain content field
5/5 editablecontent

Content should remain serializable JSON and preserve the documented block contract.

cloneable block recipe payload
Default states

Long Copy Stress state readiness

6 states
DefaultInitial render with the cloneable recipe payload
coveredsurfacepaneltext

Editorial Block System tokens with editorial documentation treatment

The Editorial Block System recipe renders a contract-safe primary state for theme-preview-matrix.
EmptyRepeatable collections have zero items
coveredpaneltextMutedbadge

Reserved panel space with fallback copy or placeholder media

Repeatable fields are documented for add, remove, reorder, and item-level editing.
PendingDeferred content or preview loading
coveredcontroltextMutedprogressTrack

Neutral reserved frame with status copy and no layout shift

Static recipe payloads reserve the same documented frame while content is loading.
ActiveCurrent block and recipe preview are selected
coveredsignaluplinkbutton

Signal/uplink emphasis with visible selected-state chips

Recipe and block selection evidence is rendered in the documentation chrome.
InvalidMedia URL or provider data is invalid
coveredwarningdangerborder

Warning/danger status treatment while preserving the block frame

Media guidance requires URL plus accessible fallback text for invalid or missing assets.
DisabledNoninteractive metadata or held preview state
coveredcontroltextMutedborder

Muted affordance with preserved label, spacing, and hit-area rhythm

Noninteractive blocks retain evidence labels without pretending to be clickable.
Controls and actions

Long Copy Stress actions and controls

0 surfaces
metadata only
Actions

No public action surface is needed for this payload.

Controls

No input control is needed for this payload.

Recipe styling

Long Copy Stress style tokens

15 tokens
Page background#f7fbff
Panel surface#ffffff
Elevated surface#ffffff
Primary text#142033
Muted text#526174
Signal accent#166bff
Secondary accent#00a6a6
Border#d6dee8
Control surface#ffffff
Control text#142033
Button surface#166bff
Button text#ffffff
Badge surface#eef5ff
Badge text#174ea6
Font familyInter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif
Readability

Long Copy Stress contrast checks

6/6
Text on background15.73:1 / AAA
Text on panel16.35:1 / AAA
Muted text on panel6.32:1 / AA
Button text on button4.58:1 / AA
Control text on control16.35:1 / AAA
Badge text on badge7.15:1 / AAA
Accessibility proof

Long Copy Stress accessibility checks

WCAG 2.2 AA
Semantic structuresemantics / required

theme-preview-matrix keeps semantic wrappers and readable heading/copy structure in the runtime preview.

runtime block sections, cards, lists, and headings
Keyboard and tap targetskeyboard / contextual

The payload is static content, so the accessibility contract is to avoid hidden or misleading interactive affordances.

static content has no hidden focus trap
Text alternativesmedia / required

Media-ready recipes expose replaceable alt text or accessible labels for images, logos, embeds, and placeholders.

media fields include alt/label/title fallbacks
Control labelsforms / contextual

No input controls are present, so there are no unlabeled fields to remediate.

no input controls in this payload
Status and motionstate / required

Recipe defaults avoid motion-only meaning and keep status text inspectable when state is present.

runtime evidence avoids hidden status-only content
Responsive proof

Long Copy Stress responsive behavior

3 viewports
Phone390px / single-column stack
1 colspacious

Editorial Block System stacks theme-preview-matrix into one phone column with spacious spacing and bounded content.

min-width:0 surfaces, wrapping copy, and no horizontal overflow in the static catalog phone smoke.
Tablet768px / two-column adaptive grid
2 colspacious

Editorial Block System adapts theme-preview-matrix to 2 tablet columns before expanding to the desktop layout.

tablet preview frames keep mid-width composition, wrap controls, and avoid horizontal overflow in the static catalog smoke.
Desktop1366px / responsive composition grid
3 colspacious

Editorial Block System gives theme-preview-matrix up to 3 desktop columns while preserving recipe spacing.

desktop preview frames keep constrained widths, stable cards, and no horizontal overflow in the static catalog smoke.
operator

Theme Preview Matrix with a realistic CMS-authored headline that wraps cleanly across compact cards, mobile panels, and generated documentation frames

Editorial Block System

This intentionally longer copy uses normal words, punctuation, and CMS-style details so the block proves it can remain polished with production-length titles, helper text, labels, badges, links, and nested content.

Themeensemble-daylight
Presetblock
Recipes1
Blocks1
Structured payload
{
  "id": "block-doc-theme-preview-matrix-data-long-copy-stress",
  "block_type": "theme-preview-matrix",
  "props": {
    "title": "Theme Preview Matrix with a realistic CMS-authored headline that wraps cleanly across compact cards, mobile panels, and generated documentation frames",
    "description": "This intentionally longer copy uses normal words, punctuation, and CMS-style details so the block proves it can remain polished with production-length titles, helper text, labels, badges, links, and nested content.",
    "presets": [
      "block"
    ],
    "recipes": [
      "editorial-block-system"
    ],
    "block_types": [
      "hero"
    ],
    "block_collections": [
      {
        "id": "single-block",
        "label": "Single Block",
        "description": "Compact documentation preview.",
        "block_types": [
          "hero"
        ]
      }
    ],
    "preview_layout": "flow",
    "default_theme": "ensemble-daylight",
    "default_preset": "block",
    "default_recipe": "editorial-block-system",
    "default_block_collection": "single-block",
    "default_design_configuration": "base",
    "default_media_placeholder": "block-doc-preview-media",
    "design_configurations": [
      {
        "id": "base",
        "label": "Default",
        "description": "Baseline contract props with the selected recipe and standard system preset.",
        "theme": {}
      }
    ],
    "media_placeholders": [
      {
        "id": "block-doc-preview-media",
        "label": "Essential CTO",
        "src": "https://storage.googleapis.com/msgsndr/T3RhpcTQAq7Qb47kPQAB/media/677815b8c290c684d5bf3fbd.png",
        "alt": "Cloud Elephants Essential CTO service visual.",
        "aspect_ratio": "16 / 9",
        "source_url": "https://go.cloudelephants.com/a-la-carte"
      }
    ]
  },
  "metadata": {
    "long_copy_tolerance": true,
    "awkward_content_tolerance": true,
    "composition_recipe": {
      "id": "long-copy-stress",
      "intent": "stress",
      "label": "Long Copy Stress",
      "recipe": "editorial-block-system",
      "source": "block-explorer",
      "quality_proof": [
        "long_copy_tolerance",
        "awkward_content_tolerance"
      ],
      "composition_passport": {
        "id": "long-copy-stress",
        "label": "Long Copy Stress composition passport",
        "intent": "stress",
        "recipe": "editorial-block-system",
        "authoring_mode": "stress-test",
        "complexity": "high",
        "fit": "Use to verify theme-preview-matrix long copy, awkward values, and wrapping before publishing customer pages.",
        "required_regions": [
          "surface",
          "copy",
          "feedback"
        ],
        "optional_regions": [
          "media",
          "actions",
          "collection"
        ],
        "slots": [
          {
            "id": "surface",
            "label": "Surface",
            "required": true,
            "field_count": 0,
            "editable_count": 0,
            "token_roles": [
              "background",
              "panel",
              "panelElevated",
              "border"
            ],
            "summary": "theme-preview-matrix uses recipe surface tokens to keep the outer frame styled and composable."
          },
          {
            "id": "copy",
            "label": "Copy",
            "required": true,
            "field_count": 7,
            "editable_count": 7,
            "token_roles": [
              "text",
              "textMuted"
            ],
            "summary": "Copy fields map to primary and muted text roles so editors can change words without restyling the block."
          },
          {
            "id": "media",
            "label": "Media",
            "required": false,
            "field_count": 6,
            "editable_count": 6,
            "token_roles": [
              "panelElevated",
              "border"
            ],
            "summary": "Media fields stay isolated from copy and action regions so replacement assets preserve the recipe layout."
          },
          {
            "id": "actions",
            "label": "Actions",
            "required": false,
            "field_count": 1,
            "editable_count": 1,
            "token_roles": [
              "button",
              "buttonText",
              "signal",
              "uplink"
            ],
            "summary": "Action regions use recipe button and accent tokens while preserving href or event payloads."
          },
          {
            "id": "collection",
            "label": "Collection",
            "required": false,
            "field_count": 5,
            "editable_count": 5,
            "token_roles": [
              "panel",
              "panelElevated",
              "border",
              "badge"
            ],
            "summary": "Collection regions define repeatable item boundaries for add, remove, reorder, and nested editing."
          },
          {
            "id": "feedback",
            "label": "Feedback",
            "required": true,
            "field_count": 0,
            "editable_count": 0,
            "token_roles": [
              "badge",
              "badgeText",
              "signal"
            ],
            "summary": "Feedback regions tie state-readiness evidence to visible recipe status treatments."
          }
        ],
        "builder_field_count": 29,
        "editable_field_count": 29,
        "action_count": 0,
        "control_count": 0,
        "replacement_guidance": [
          "Keep Editorial Block System recipe tokens as the source of visual styling for the surface, text, controls, and actions.",
          "Replace media URLs through the CMS media library and preserve alt, title, provider, or label fallbacks.",
          "No action wiring is required for this recipe; avoid inventing clickable surfaces in content.",
          "No input controls are required; keep the recipe focused on its documented display regions.",
          "Treat collection regions as repeatable slots that support add, remove, reorder, and item-level editing."
        ],
        "publish_checklist": [
          "Validate theme-preview-matrix against its block contract before publishing.",
          "3 required anatomy regions remain present: surface, copy, feedback.",
          "29/29 builder fields are CMS-editable or intentionally locked.",
          "Noninteractive presentation has no unexpected action or control surfaces.",
          "Phone, tablet, and desktop responsive behavior maps have been reviewed for wrapping and overflow.",
          "Contrast checks meet the AA recipe target."
        ],
        "agent_notes": [
          "Prefer editing props fields described by the builder field map; metadata is evidence, not primary content.",
          "Preserve recipe_alignment token roles unless the page theme or recipe changes intentionally.",
          "Use the anatomy slots to compose or replace content without changing the block type."
        ],
        "summary": "Long Copy Stress is a high-complexity stress-test recipe with 6 documented composition slots."
      },
      "composition_passport_complexity": "high",
      "composition_passport_authoring_mode": "stress-test",
      "composition_passport_slots": [
        "surface",
        "copy",
        "media",
        "actions",
        "collection",
        "feedback"
      ],
      "composition_passport_check_count": 6,
      "visual_polish_check_count": 6,
      "visual_polish_pass_count": 6,
      "visual_polish_checks": [
        {
          "id": "surface-rhythm",
          "label": "Surface rhythm",
          "axis": "layout",
          "status": "ready",
          "token_roles": [
            "background",
            "panel",
            "panelElevated",
            "border"
          ],
          "evidence": "editorial treatment uses spacious density and 8px radius base.",
          "summary": "theme-preview-matrix keeps a stable recipe surface with panel, border, and spacing roles instead of ad hoc wrappers."
        },
        {
          "id": "type-hierarchy",
          "label": "Type hierarchy",
          "axis": "typography",
          "status": "ready",
          "token_roles": [
            "text",
            "textMuted",
            "badgeText"
          ],
          "evidence": "6/6 contrast checks pass the AA target.",
          "summary": "Primary, muted, and badge text roles stay distinct enough for headings, body copy, metadata, and helper text."
        },
        {
          "id": "action-clarity",
          "label": "Action clarity",
          "axis": "interaction",
          "status": "ready",
          "token_roles": [
            "button",
            "buttonText",
            "control",
            "controlText",
            "signal",
            "uplink"
          ],
          "evidence": "0 action surfaces and 0 control surfaces mapped.",
          "summary": "No unexpected interactive surface is introduced for this noninteractive recipe."
        },
        {
          "id": "media-treatment",
          "label": "Media treatment",
          "axis": "media",
          "status": "ready",
          "token_roles": [
            "panelElevated",
            "border",
            "textMuted"
          ],
          "evidence": "Media region is isolated with replaceable fields.",
          "summary": "Replaceable media stays framed separately from copy and action regions so asset swaps preserve the layout."
        },
        {
          "id": "state-feedback",
          "label": "State feedback",
          "axis": "state",
          "status": "ready",
          "token_roles": [
            "badge",
            "badgeText",
            "signal"
          ],
          "evidence": "6 state-readiness entries include default, empty, pending, active, invalid, disabled.",
          "summary": "Feedback, selected, loading, invalid, and disabled treatments use visible state evidence instead of color-only meaning."
        },
        {
          "id": "responsive-balance",
          "label": "Responsive balance",
          "axis": "responsive",
          "status": "ready",
          "token_roles": [
            "panel",
            "border",
            "control"
          ],
          "evidence": "single-column stack phone behavior, two-column adaptive grid tablet behavior, and responsive composition grid desktop behavior documented.",
          "summary": "Phone, tablet, and desktop defaults have explicit stack, wrap, media, and overflow policies for the recipe."
        }
      ],
      "visual_polish_axes": [
        "layout",
        "typography",
        "interaction",
        "media",
        "state",
        "responsive"
      ],
      "default_provenance_count": 29,
      "default_provenance_map": [
        {
          "path": "title",
          "label": "Title",
          "field_role": "copy",
          "value_type": "string",
          "editable": true,
          "repeated": false,
          "default_source": "cloneable block recipe payload",
          "replacement_policy": "safe-to-edit",
          "replacement_risk": "low",
          "guardrail": "Copy can be edited directly when text remains trimmed, localizable, and safe to wrap at phone widths.",
          "validation": "Text should be editable, trimmed, localizable, and safe to wrap at mobile widths.",
          "summary": "Title defaults from cloneable block recipe payload; replacement is low risk with safe-to-edit policy."
        },
        {
          "path": "description",
          "label": "Description",
          "field_role": "copy",
          "value_type": "string",
          "editable": true,
          "repeated": false,
          "default_source": "cloneable block recipe payload",
          "replacement_policy": "safe-to-edit",
          "replacement_risk": "low",
          "guardrail": "Copy can be edited directly when text remains trimmed, localizable, and safe to wrap at phone widths.",
          "validation": "Text should be editable, trimmed, localizable, and safe to wrap at mobile widths.",
          "summary": "Description defaults from cloneable block recipe payload; replacement is low risk with safe-to-edit policy."
        },
        {
          "path": "presets",
          "label": "Presets",
          "field_role": "style",
          "value_type": "array",
          "editable": true,
          "repeated": false,
          "default_source": "Editorial Block System recipe tokens",
          "replacement_policy": "locked-token",
          "replacement_risk": "medium",
          "guardrail": "Keep visual styling aligned to Editorial Block System recipe tokens unless the recipe itself changes.",
          "validation": "Style fields should prefer recipe or appearance tokens over one-off inline values.",
          "summary": "Presets defaults from Editorial Block System recipe tokens; replacement is medium risk with locked-token policy."
        },
        {
          "path": "recipes",
          "label": "Recipes",
          "field_role": "content",
          "value_type": "array",
          "editable": true,
          "repeated": false,
          "default_source": "cloneable block recipe payload",
          "replacement_policy": "safe-to-edit",
          "replacement_risk": "low",
          "guardrail": "Copy can be edited directly when text remains trimmed, localizable, and safe to wrap at phone widths.",
          "validation": "Content should remain serializable JSON and preserve the documented block contract.",
          "summary": "Recipes defaults from cloneable block recipe payload; replacement is low risk with safe-to-edit policy."
        },
        {
          "path": "block_types",
          "label": "Block Types",
          "field_role": "collection",
          "value_type": "array",
          "editable": true,
          "repeated": false,
          "default_source": "cloneable block recipe payload",
          "replacement_policy": "collection-item",
          "replacement_risk": "medium",
          "guardrail": "Edit repeatable items through collection controls so add, remove, reorder, and item-level updates preserve shape.",
          "validation": "Collections should support add, remove, reorder, and item-level editing without changing block shape.",
          "summary": "Block Types defaults from cloneable block recipe payload; replacement is medium risk with collection-item policy."
        },
        {
          "path": "block_collections",
          "label": "Block Collections",
          "field_role": "collection",
          "value_type": "array",
          "editable": true,
          "repeated": false,
          "default_source": "cloneable block recipe payload",
          "replacement_policy": "collection-item",
          "replacement_risk": "medium",
          "guardrail": "Edit repeatable items through collection controls so add, remove, reorder, and item-level updates preserve shape.",
          "validation": "Collections should support add, remove, reorder, and item-level editing without changing block shape.",
          "summary": "Block Collections defaults from cloneable block recipe payload; replacement is medium risk with collection-item policy."
        },
        {
          "path": "block_collections[].id",
          "label": "Block Collections Item Id",
          "field_role": "collection",
          "value_type": "string",
          "editable": true,
          "repeated": true,
          "default_source": "cloneable block recipe payload",
          "replacement_policy": "collection-item",
          "replacement_risk": "medium",
          "guardrail": "Edit repeatable items through collection controls so add, remove, reorder, and item-level updates preserve shape.",
          "validation": "Collections should support add, remove, reorder, and item-level editing without changing block shape.",
          "summary": "Block Collections Item Id defaults from cloneable block recipe payload; replacement is medium risk with collection-item policy."
        },
        {
          "path": "block_collections[].label",
          "label": "Block Collections Item Label",
          "field_role": "copy",
          "value_type": "string",
          "editable": true,
          "repeated": true,
          "default_source": "cloneable block recipe payload",
          "replacement_policy": "collection-item",
          "replacement_risk": "medium",
          "guardrail": "Edit repeatable items through collection controls so add, remove, reorder, and item-level updates preserve shape.",
          "validation": "Text should be editable, trimmed, localizable, and safe to wrap at mobile widths.",
          "summary": "Block Collections Item Label defaults from cloneable block recipe payload; replacement is medium risk with collection-item policy."
        },
        {
          "path": "block_collections[].description",
          "label": "Block Collections Item Description",
          "field_role": "copy",
          "value_type": "string",
          "editable": true,
          "repeated": true,
          "default_source": "cloneable block recipe payload",
          "replacement_policy": "collection-item",
          "replacement_risk": "medium",
          "guardrail": "Edit repeatable items through collection controls so add, remove, reorder, and item-level updates preserve shape.",
          "validation": "Text should be editable, trimmed, localizable, and safe to wrap at mobile widths.",
          "summary": "Block Collections Item Description defaults from cloneable block recipe payload; replacement is medium risk with collection-item policy."
        },
        {
          "path": "block_collections[].block_types",
          "label": "Block Collections Item Block Types",
          "field_role": "collection",
          "value_type": "array",
          "editable": true,
          "repeated": true,
          "default_source": "cloneable block recipe payload",
          "replacement_policy": "collection-item",
          "replacement_risk": "medium",
          "guardrail": "Edit repeatable items through collection controls so add, remove, reorder, and item-level updates preserve shape.",
          "validation": "Collections should support add, remove, reorder, and item-level editing without changing block shape.",
          "summary": "Block Collections Item Block Types defaults from cloneable block recipe payload; replacement is medium risk with collection-item policy."
        },
        {
          "path": "preview_layout",
          "label": "Preview Layout",
          "field_role": "style",
          "value_type": "string",
          "editable": true,
          "repeated": false,
          "default_source": "Editorial Block System recipe tokens",
          "replacement_policy": "locked-token",
          "replacement_risk": "medium",
          "guardrail": "Keep visual styling aligned to Editorial Block System recipe tokens unless the recipe itself changes.",
          "validation": "Style fields should prefer recipe or appearance tokens over one-off inline values.",
          "summary": "Preview Layout defaults from Editorial Block System recipe tokens; replacement is medium risk with locked-token policy."
        },
        {
          "path": "default_theme",
          "label": "Default Theme",
          "field_role": "style",
          "value_type": "string",
          "editable": true,
          "repeated": false,
          "default_source": "Editorial Block System recipe tokens",
          "replacement_policy": "locked-token",
          "replacement_risk": "medium",
          "guardrail": "Keep visual styling aligned to Editorial Block System recipe tokens unless the recipe itself changes.",
          "validation": "Style fields should prefer recipe or appearance tokens over one-off inline values.",
          "summary": "Default Theme defaults from Editorial Block System recipe tokens; replacement is medium risk with locked-token policy."
        },
        {
          "path": "default_preset",
          "label": "Default Preset",
          "field_role": "style",
          "value_type": "string",
          "editable": true,
          "repeated": false,
          "default_source": "Editorial Block System recipe tokens",
          "replacement_policy": "locked-token",
          "replacement_risk": "medium",
          "guardrail": "Keep visual styling aligned to Editorial Block System recipe tokens unless the recipe itself changes.",
          "validation": "Style fields should prefer recipe or appearance tokens over one-off inline values.",
          "summary": "Default Preset defaults from Editorial Block System recipe tokens; replacement is medium risk with locked-token policy."
        },
        {
          "path": "default_recipe",
          "label": "Default Recipe",
          "field_role": "content",
          "value_type": "string",
          "editable": true,
          "repeated": false,
          "default_source": "cloneable block recipe payload",
          "replacement_policy": "safe-to-edit",
          "replacement_risk": "low",
          "guardrail": "Copy can be edited directly when text remains trimmed, localizable, and safe to wrap at phone widths.",
          "validation": "Content should remain serializable JSON and preserve the documented block contract.",
          "summary": "Default Recipe defaults from cloneable block recipe payload; replacement is low risk with safe-to-edit policy."
        },
        {
          "path": "default_block_collection",
          "label": "Default Block Collection",
          "field_role": "collection",
          "value_type": "string",
          "editable": true,
          "repeated": false,
          "default_source": "cloneable block recipe payload",
          "replacement_policy": "collection-item",
          "replacement_risk": "medium",
          "guardrail": "Edit repeatable items through collection controls so add, remove, reorder, and item-level updates preserve shape.",
          "validation": "Collections should support add, remove, reorder, and item-level editing without changing block shape.",
          "summary": "Default Block Collection defaults from cloneable block recipe payload; replacement is medium risk with collection-item policy."
        },
        {
          "path": "default_design_configuration",
          "label": "Default Design Configuration",
          "field_role": "content",
          "value_type": "string",
          "editable": true,
          "repeated": false,
          "default_source": "cloneable block recipe payload",
          "replacement_policy": "safe-to-edit",
          "replacement_risk": "low",
          "guardrail": "Copy can be edited directly when text remains trimmed, localizable, and safe to wrap at phone widths.",
          "validation": "Content should remain serializable JSON and preserve the documented block contract.",
          "summary": "Default Design Configuration defaults from cloneable block recipe payload; replacement is low risk with safe-to-edit policy."
        },
        {
          "path": "default_media_placeholder",
          "label": "Default Media Placeholder",
          "field_role": "media",
          "value_type": "string",
          "editable": true,
          "repeated": false,
          "default_source": "Cloud Elephants placeholder media or CMS media library",
          "replacement_policy": "requires-alt-text",
          "replacement_risk": "medium",
          "guardrail": "Replace the asset through CMS media data and keep alt, title, provider, or label fallback text meaningful.",
          "validation": "Media should use a replaceable URL plus meaningful alt, label, or title fallback.",
          "summary": "Default Media Placeholder defaults from Cloud Elephants placeholder media or CMS media library; replacement is medium risk with requires-alt-text policy."
        },
        {
          "path": "design_configurations",
          "label": "Design Configurations",
          "field_role": "content",
          "value_type": "array",
          "editable": true,
          "repeated": false,
          "default_source": "cloneable block recipe payload",
          "replacement_policy": "safe-to-edit",
          "replacement_risk": "low",
          "guardrail": "Copy can be edited directly when text remains trimmed, localizable, and safe to wrap at phone widths.",
          "validation": "Content should remain serializable JSON and preserve the documented block contract.",
          "summary": "Design Configurations defaults from cloneable block recipe payload; replacement is low risk with safe-to-edit policy."
        },
        {
          "path": "design_configurations[].id",
          "label": "Design Configurations Item Id",
          "field_role": "content",
          "value_type": "string",
          "editable": true,
          "repeated": true,
          "default_source": "cloneable block recipe payload",
          "replacement_policy": "collection-item",
          "replacement_risk": "medium",
          "guardrail": "Edit repeatable items through collection controls so add, remove, reorder, and item-level updates preserve shape.",
          "validation": "Content should remain serializable JSON and preserve the documented block contract.",
          "summary": "Design Configurations Item Id defaults from cloneable block recipe payload; replacement is medium risk with collection-item policy."
        },
        {
          "path": "design_configurations[].label",
          "label": "Design Configurations Item Label",
          "field_role": "copy",
          "value_type": "string",
          "editable": true,
          "repeated": true,
          "default_source": "cloneable block recipe payload",
          "replacement_policy": "collection-item",
          "replacement_risk": "medium",
          "guardrail": "Edit repeatable items through collection controls so add, remove, reorder, and item-level updates preserve shape.",
          "validation": "Text should be editable, trimmed, localizable, and safe to wrap at mobile widths.",
          "summary": "Design Configurations Item Label defaults from cloneable block recipe payload; replacement is medium risk with collection-item policy."
        },
        {
          "path": "design_configurations[].description",
          "label": "Design Configurations Item Description",
          "field_role": "copy",
          "value_type": "string",
          "editable": true,
          "repeated": true,
          "default_source": "cloneable block recipe payload",
          "replacement_policy": "collection-item",
          "replacement_risk": "medium",
          "guardrail": "Edit repeatable items through collection controls so add, remove, reorder, and item-level updates preserve shape.",
          "validation": "Text should be editable, trimmed, localizable, and safe to wrap at mobile widths.",
          "summary": "Design Configurations Item Description defaults from cloneable block recipe payload; replacement is medium risk with collection-item policy."
        },
        {
          "path": "design_configurations[].theme",
          "label": "Design Configurations Item Theme",
          "field_role": "style",
          "value_type": "object",
          "editable": true,
          "repeated": true,
          "default_source": "Editorial Block System recipe tokens",
          "replacement_policy": "locked-token",
          "replacement_risk": "medium",
          "guardrail": "Keep visual styling aligned to Editorial Block System recipe tokens unless the recipe itself changes.",
          "validation": "Style fields should prefer recipe or appearance tokens over one-off inline values.",
          "summary": "Design Configurations Item Theme defaults from Editorial Block System recipe tokens; replacement is medium risk with locked-token policy."
        },
        {
          "path": "media_placeholders",
          "label": "Media Placeholders",
          "field_role": "media",
          "value_type": "array",
          "editable": true,
          "repeated": false,
          "default_source": "Cloud Elephants placeholder media or CMS media library",
          "replacement_policy": "requires-alt-text",
          "replacement_risk": "medium",
          "guardrail": "Replace the asset through CMS media data and keep alt, title, provider, or label fallback text meaningful.",
          "validation": "Media should use a replaceable URL plus meaningful alt, label, or title fallback.",
          "summary": "Media Placeholders defaults from Cloud Elephants placeholder media or CMS media library; replacement is medium risk with requires-alt-text policy."
        },
        {
          "path": "media_placeholders[].id",
          "label": "Media Placeholders Item Id",
          "field_role": "media",
          "value_type": "string",
          "editable": true,
          "repeated": true,
          "default_source": "Cloud Elephants placeholder media or CMS media library",
          "replacement_policy": "requires-alt-text",
          "replacement_risk": "medium",
          "guardrail": "Replace the asset through CMS media data and keep alt, title, provider, or label fallback text meaningful.",
          "validation": "Media should use a replaceable URL plus meaningful alt, label, or title fallback.",
          "summary": "Media Placeholders Item Id defaults from Cloud Elephants placeholder media or CMS media library; replacement is medium risk with requires-alt-text policy."
        },
        {
          "path": "media_placeholders[].label",
          "label": "Media Placeholders Item Label",
          "field_role": "copy",
          "value_type": "string",
          "editable": true,
          "repeated": true,
          "default_source": "cloneable block recipe payload",
          "replacement_policy": "requires-alt-text",
          "replacement_risk": "medium",
          "guardrail": "Replace the asset through CMS media data and keep alt, title, provider, or label fallback text meaningful.",
          "validation": "Text should be editable, trimmed, localizable, and safe to wrap at mobile widths.",
          "summary": "Media Placeholders Item Label defaults from cloneable block recipe payload; replacement is medium risk with requires-alt-text policy."
        },
        {
          "path": "media_placeholders[].src",
          "label": "Media Placeholders Item Src",
          "field_role": "media",
          "value_type": "string",
          "editable": true,
          "repeated": true,
          "default_source": "Cloud Elephants placeholder media or CMS media library",
          "replacement_policy": "requires-alt-text",
          "replacement_risk": "medium",
          "guardrail": "Replace the asset through CMS media data and keep alt, title, provider, or label fallback text meaningful.",
          "validation": "Media should use a replaceable URL plus meaningful alt, label, or title fallback.",
          "summary": "Media Placeholders Item Src defaults from Cloud Elephants placeholder media or CMS media library; replacement is medium risk with requires-alt-text policy."
        },
        {
          "path": "media_placeholders[].alt",
          "label": "Media Placeholders Item Alt",
          "field_role": "media",
          "value_type": "string",
          "editable": true,
          "repeated": true,
          "default_source": "Cloud Elephants placeholder media or CMS media library",
          "replacement_policy": "requires-alt-text",
          "replacement_risk": "medium",
          "guardrail": "Replace the asset through CMS media data and keep alt, title, provider, or label fallback text meaningful.",
          "validation": "Media should use a replaceable URL plus meaningful alt, label, or title fallback.",
          "summary": "Media Placeholders Item Alt defaults from Cloud Elephants placeholder media or CMS media library; replacement is medium risk with requires-alt-text policy."
        },
        {
          "path": "media_placeholders[].aspect_ratio",
          "label": "Media Placeholders Item Aspect Ratio",
          "field_role": "media",
          "value_type": "string",
          "editable": true,
          "repeated": true,
          "default_source": "Cloud Elephants placeholder media or CMS media library",
          "replacement_policy": "requires-alt-text",
          "replacement_risk": "medium",
          "guardrail": "Replace the asset through CMS media data and keep alt, title, provider, or label fallback text meaningful.",
          "validation": "Media should use a replaceable URL plus meaningful alt, label, or title fallback.",
          "summary": "Media Placeholders Item Aspect Ratio defaults from Cloud Elephants placeholder media or CMS media library; replacement is medium risk with requires-alt-text policy."
        },
        {
          "path": "media_placeholders[].source_url",
          "label": "Media Placeholders Item Source Url",
          "field_role": "action",
          "value_type": "string",
          "editable": true,
          "repeated": true,
          "default_source": "CMS route, URL, or canonical postEvent path",
          "replacement_policy": "requires-alt-text",
          "replacement_risk": "medium",
          "guardrail": "Replace the asset through CMS media data and keep alt, title, provider, or label fallback text meaningful.",
          "validation": "Actions should resolve to a URL or event name with a human-readable label.",
          "summary": "Media Placeholders Item Source Url defaults from CMS route, URL, or canonical postEvent path; replacement is medium risk with requires-alt-text policy."
        }
      ],
      "default_replacement_policies": [
        "collection-item",
        "locked-token",
        "requires-alt-text",
        "safe-to-edit"
      ],
      "default_replacement_risks": [
        "low",
        "medium"
      ],
      "default_replacement_high_risk_count": 0,
      "content_edit_bundle_count": 6,
      "content_edit_bundles": [
        {
          "id": "copy",
          "label": "Copy bundle",
          "intent": "required",
          "edit_mode": "repeatable-items",
          "field_paths": [
            "block_collections[].description",
            "block_collections[].label",
            "description",
            "design_configurations[].description",
            "design_configurations[].label",
            "media_placeholders[].label",
            "title"
          ],
          "default_sources": [
            "cloneable block recipe payload"
          ],
          "guardrails": [
            "Edit repeatable items through collection controls so add, remove, reorder, and item-level updates preserve shape.",
            "Copy can be edited directly when text remains trimmed, localizable, and safe to wrap at phone widths.",
            "Replace the asset through CMS media data and keep alt, title, provider, or label fallback text meaningful."
          ],
          "depends_on": [
            "type hierarchy",
            "mobile wrapping"
          ],
          "summary": "Copy bundle groups 7 fields so CMS edits preserve the recipe shape and default polish."
        },
        {
          "id": "media",
          "label": "Media bundle",
          "intent": "recommended",
          "edit_mode": "repeatable-items",
          "field_paths": [
            "default_media_placeholder",
            "media_placeholders",
            "media_placeholders[].alt",
            "media_placeholders[].aspect_ratio",
            "media_placeholders[].id",
            "media_placeholders[].src"
          ],
          "default_sources": [
            "Cloud Elephants placeholder media or CMS media library"
          ],
          "guardrails": [
            "Replace the asset through CMS media data and keep alt, title, provider, or label fallback text meaningful."
          ],
          "depends_on": [
            "copy alt text",
            "responsive fit"
          ],
          "summary": "Media bundle groups 6 fields so CMS edits preserve the recipe shape and default polish."
        },
        {
          "id": "actions",
          "label": "Action bundle",
          "intent": "recommended",
          "edit_mode": "repeatable-items",
          "field_paths": [
            "media_placeholders[].source_url"
          ],
          "default_sources": [
            "CMS route, URL, or canonical postEvent path"
          ],
          "guardrails": [
            "Replace the asset through CMS media data and keep alt, title, provider, or label fallback text meaningful."
          ],
          "depends_on": [
            "copy labels"
          ],
          "summary": "Action bundle groups 1 field so CMS edits preserve the recipe shape and default polish."
        },
        {
          "id": "collections",
          "label": "Collection bundle",
          "intent": "recommended",
          "edit_mode": "repeatable-items",
          "field_paths": [
            "block_collections",
            "block_collections[].block_types",
            "block_collections[].id",
            "block_types",
            "default_block_collection"
          ],
          "default_sources": [
            "cloneable block recipe payload"
          ],
          "guardrails": [
            "Edit repeatable items through collection controls so add, remove, reorder, and item-level updates preserve shape."
          ],
          "depends_on": [
            "item shape",
            "responsive wrapping"
          ],
          "summary": "Collection bundle groups 5 fields so CMS edits preserve the recipe shape and default polish."
        },
        {
          "id": "style",
          "label": "Style bundle",
          "intent": "guarded",
          "edit_mode": "guarded-system",
          "field_paths": [
            "default_preset",
            "default_theme",
            "design_configurations[].theme",
            "presets",
            "preview_layout"
          ],
          "default_sources": [
            "Editorial Block System recipe tokens"
          ],
          "guardrails": [
            "Keep visual styling aligned to Editorial Block System recipe tokens unless the recipe itself changes."
          ],
          "depends_on": [
            "theme recipe tokens",
            "contrast proof"
          ],
          "summary": "Style bundle groups 5 fields so CMS edits preserve the recipe shape and default polish."
        },
        {
          "id": "content",
          "label": "Content bundle",
          "intent": "required",
          "edit_mode": "repeatable-items",
          "field_paths": [
            "default_design_configuration",
            "default_recipe",
            "design_configurations",
            "design_configurations[].id",
            "recipes"
          ],
          "default_sources": [
            "cloneable block recipe payload"
          ],
          "guardrails": [
            "Copy can be edited directly when text remains trimmed, localizable, and safe to wrap at phone widths.",
            "Edit repeatable items through collection controls so add, remove, reorder, and item-level updates preserve shape."
          ],
          "depends_on": [
            "contract-safe JSON"
          ],
          "summary": "Content bundle groups 5 fields so CMS edits preserve the recipe shape and default polish."
        }
      ],
      "content_edit_bundle_ids": [
        "copy",
        "media",
        "actions",
        "collections",
        "style",
        "content"
      ],
      "content_edit_bundle_modes": [
        "guarded-system",
        "repeatable-items"
      ],
      "content_edit_bundle_required_count": 2,
      "content_edit_bundle_guarded_count": 1,
      "recipe_compatibility_count": 6,
      "recipe_compatibility_map": [
        {
          "id": "page-context",
          "label": "Page context",
          "axis": "page",
          "fit": "supporting",
          "values": [
            "listing",
            "product-page",
            "product-announcement",
            "blog",
            "event-promotion",
            "partnership-announcement"
          ],
          "evidence": "6 page types mapped for theme-preview-matrix.",
          "guardrail": "Choose the first matching page type before editing copy, media, or actions so the recipe starts in the right narrative context.",
          "summary": "theme-preview-matrix is best composed into listing, product-page, product-announcement, and related pages."
        },
        {
          "id": "section-role",
          "label": "Section role",
          "axis": "layout",
          "fit": "supporting",
          "values": [
            "collection",
            "media",
            "content",
            "metadata"
          ],
          "evidence": "6 anatomy regions produce 4 section roles.",
          "guardrail": "Place the block where its required anatomy regions have enough room before compressing it into dense page slots.",
          "summary": "theme-preview-matrix can act as collection, media, content within a composed page."
        },
        {
          "id": "content-model",
          "label": "Content model",
          "axis": "content",
          "fit": "specialized",
          "values": [
            "copy-led",
            "media-led",
            "cta-led",
            "repeatable"
          ],
          "evidence": "29/29 fields are editable across 4 content models.",
          "guardrail": "Keep the content model stable when replacing defaults; do not turn a repeatable or media-led recipe into unrelated ad hoc content.",
          "summary": "Long Copy Stress composition passport is copy-led, media-led, cta-led, repeatable for CMS composition."
        },
        {
          "id": "interaction-model",
          "label": "Interaction model",
          "axis": "interaction",
          "fit": "supporting",
          "values": [
            "noninteractive"
          ],
          "evidence": "0 action surfaces and 0 control surfaces mapped.",
          "guardrail": "Review href, event, input, required, and disabled-state evidence before publishing an interactive recipe.",
          "summary": "theme-preview-matrix is compatible with noninteractive content sections."
        },
        {
          "id": "authoring-fit",
          "label": "Authoring fit",
          "axis": "authoring",
          "fit": "specialized",
          "values": [
            "stress-test",
            "high-complexity",
            "0-high-care-replacements"
          ],
          "evidence": "29 default provenance items with 0 high-care replacements.",
          "guardrail": "Use the default provenance map before cloning the recipe into CMS content or agent-generated page data.",
          "summary": "theme-preview-matrix uses stress-test authoring with high complexity."
        },
        {
          "id": "responsive-fit",
          "label": "Responsive fit",
          "axis": "responsive",
          "fit": "primary",
          "values": [
            "single-column stack",
            "two-column adaptive grid",
            "responsive composition grid",
            "min-width:0 surfaces, wrapping copy, and no horizontal overflow in the static catalog phone smoke."
          ],
          "evidence": "3 responsive behavior maps cover phone, tablet, and desktop composition.",
          "guardrail": "Review phone wrapping, tablet mid-width balance, and desktop density before adding nested content, longer labels, or extra media.",
          "summary": "theme-preview-matrix has explicit phone, tablet, and desktop compatibility evidence for composed pages."
        }
      ],
      "recipe_compatibility_axes": [
        "page",
        "layout",
        "content",
        "interaction",
        "authoring",
        "responsive"
      ],
      "recipe_compatibility_page_types": [
        "listing",
        "product-page",
        "product-announcement",
        "blog",
        "event-promotion",
        "partnership-announcement"
      ],
      "recipe_compatibility_section_roles": [
        "collection",
        "media",
        "content",
        "metadata"
      ],
      "recipe_compatibility_fits": [
        "primary",
        "specialized",
        "supporting"
      ],
      "builder_field_count": 29,
      "builder_field_map": [
        {
          "path": "title",
          "label": "Title",
          "value_type": "string",
          "role": "copy",
          "editable": true,
          "repeated": false,
          "summary": "Title is a string field used for copy."
        },
        {
          "path": "description",
          "label": "Description",
          "value_type": "string",
          "role": "copy",
          "editable": true,
          "repeated": false,
          "summary": "Description is a string field used for copy."
        },
        {
          "path": "presets",
          "label": "Presets",
          "value_type": "array",
          "role": "style",
          "editable": true,
          "repeated": false,
          "summary": "Presets is a array field used for style."
        },
        {
          "path": "recipes",
          "label": "Recipes",
          "value_type": "array",
          "role": "content",
          "editable": true,
          "repeated": false,
          "summary": "Recipes is a array field used for content."
        },
        {
          "path": "block_types",
          "label": "Block Types",
          "value_type": "array",
          "role": "collection",
          "editable": true,
          "repeated": false,
          "summary": "Block Types is a array field used for collection."
        },
        {
          "path": "block_collections",
          "label": "Block Collections",
          "value_type": "array",
          "role": "collection",
          "editable": true,
          "repeated": false,
          "summary": "Block Collections is a array field used for collection."
        },
        {
          "path": "block_collections[].id",
          "label": "Block Collections Item Id",
          "value_type": "string",
          "role": "collection",
          "editable": true,
          "repeated": true,
          "summary": "Block Collections Item Id is a string collection field used for collection."
        },
        {
          "path": "block_collections[].label",
          "label": "Block Collections Item Label",
          "value_type": "string",
          "role": "copy",
          "editable": true,
          "repeated": true,
          "summary": "Block Collections Item Label is a string collection field used for copy."
        },
        {
          "path": "block_collections[].description",
          "label": "Block Collections Item Description",
          "value_type": "string",
          "role": "copy",
          "editable": true,
          "repeated": true,
          "summary": "Block Collections Item Description is a string collection field used for copy."
        },
        {
          "path": "block_collections[].block_types",
          "label": "Block Collections Item Block Types",
          "value_type": "array",
          "role": "collection",
          "editable": true,
          "repeated": true,
          "summary": "Block Collections Item Block Types is a array collection field used for collection."
        },
        {
          "path": "preview_layout",
          "label": "Preview Layout",
          "value_type": "string",
          "role": "style",
          "editable": true,
          "repeated": false,
          "summary": "Preview Layout is a string field used for style."
        },
        {
          "path": "default_theme",
          "label": "Default Theme",
          "value_type": "string",
          "role": "style",
          "editable": true,
          "repeated": false,
          "summary": "Default Theme is a string field used for style."
        },
        {
          "path": "default_preset",
          "label": "Default Preset",
          "value_type": "string",
          "role": "style",
          "editable": true,
          "repeated": false,
          "summary": "Default Preset is a string field used for style."
        },
        {
          "path": "default_recipe",
          "label": "Default Recipe",
          "value_type": "string",
          "role": "content",
          "editable": true,
          "repeated": false,
          "summary": "Default Recipe is a string field used for content."
        },
        {
          "path": "default_block_collection",
          "label": "Default Block Collection",
          "value_type": "string",
          "role": "collection",
          "editable": true,
          "repeated": false,
          "summary": "Default Block Collection is a string field used for collection."
        },
        {
          "path": "default_design_configuration",
          "label": "Default Design Configuration",
          "value_type": "string",
          "role": "content",
          "editable": true,
          "repeated": false,
          "summary": "Default Design Configuration is a string field used for content."
        },
        {
          "path": "default_media_placeholder",
          "label": "Default Media Placeholder",
          "value_type": "string",
          "role": "media",
          "editable": true,
          "repeated": false,
          "summary": "Default Media Placeholder is a string field used for media."
        },
        {
          "path": "design_configurations",
          "label": "Design Configurations",
          "value_type": "array",
          "role": "content",
          "editable": true,
          "repeated": false,
          "summary": "Design Configurations is a array field used for content."
        },
        {
          "path": "design_configurations[].id",
          "label": "Design Configurations Item Id",
          "value_type": "string",
          "role": "content",
          "editable": true,
          "repeated": true,
          "summary": "Design Configurations Item Id is a string collection field used for content."
        },
        {
          "path": "design_configurations[].label",
          "label": "Design Configurations Item Label",
          "value_type": "string",
          "role": "copy",
          "editable": true,
          "repeated": true,
          "summary": "Design Configurations Item Label is a string collection field used for copy."
        },
        {
          "path": "design_configurations[].description",
          "label": "Design Configurations Item Description",
          "value_type": "string",
          "role": "copy",
          "editable": true,
          "repeated": true,
          "summary": "Design Configurations Item Description is a string collection field used for copy."
        },
        {
          "path": "design_configurations[].theme",
          "label": "Design Configurations Item Theme",
          "value_type": "object",
          "role": "style",
          "editable": true,
          "repeated": true,
          "summary": "Design Configurations Item Theme is a object collection field used for style."
        },
        {
          "path": "media_placeholders",
          "label": "Media Placeholders",
          "value_type": "array",
          "role": "media",
          "editable": true,
          "repeated": false,
          "summary": "Media Placeholders is a array field used for media."
        },
        {
          "path": "media_placeholders[].id",
          "label": "Media Placeholders Item Id",
          "value_type": "string",
          "role": "media",
          "editable": true,
          "repeated": true,
          "summary": "Media Placeholders Item Id is a string collection field used for media."
        },
        {
          "path": "media_placeholders[].label",
          "label": "Media Placeholders Item Label",
          "value_type": "string",
          "role": "copy",
          "editable": true,
          "repeated": true,
          "summary": "Media Placeholders Item Label is a string collection field used for copy."
        },
        {
          "path": "media_placeholders[].src",
          "label": "Media Placeholders Item Src",
          "value_type": "string",
          "role": "media",
          "editable": true,
          "repeated": true,
          "summary": "Media Placeholders Item Src is a string collection field used for media."
        },
        {
          "path": "media_placeholders[].alt",
          "label": "Media Placeholders Item Alt",
          "value_type": "string",
          "role": "media",
          "editable": true,
          "repeated": true,
          "summary": "Media Placeholders Item Alt is a string collection field used for media."
        },
        {
          "path": "media_placeholders[].aspect_ratio",
          "label": "Media Placeholders Item Aspect Ratio",
          "value_type": "string",
          "role": "media",
          "editable": true,
          "repeated": true,
          "summary": "Media Placeholders Item Aspect Ratio is a string collection field used for media."
        },
        {
          "path": "media_placeholders[].source_url",
          "label": "Media Placeholders Item Source Url",
          "value_type": "string",
          "role": "action",
          "editable": true,
          "repeated": true,
          "summary": "Media Placeholders Item Source Url is a string collection field used for action."
        }
      ],
      "editor_guidance_count": 6,
      "editor_guidance_map": [
        {
          "id": "copy",
          "label": "Copy",
          "field_role": "copy",
          "field_count": 7,
          "editable_count": 7,
          "editor_widget": "text/rich-text editor",
          "validation": "Text should be editable, trimmed, localizable, and safe to wrap at mobile widths.",
          "default_source": "cloneable block recipe payload",
          "summary": "Copy fields use the text/rich-text editor across 7/7 editable fields."
        },
        {
          "id": "media",
          "label": "Media",
          "field_role": "media",
          "field_count": 6,
          "editable_count": 6,
          "editor_widget": "media picker with alt text",
          "validation": "Media should use a replaceable URL plus meaningful alt, label, or title fallback.",
          "default_source": "Cloud Elephants placeholder media or CMS media library",
          "summary": "Media fields use the media picker with alt text across 6/6 editable fields."
        },
        {
          "id": "action",
          "label": "Action",
          "field_role": "action",
          "field_count": 1,
          "editable_count": 1,
          "editor_widget": "link or event action editor",
          "validation": "Actions should resolve to a URL or event name with a human-readable label.",
          "default_source": "CMS route, URL, or canonical postEvent path",
          "summary": "Action fields use the link or event action editor across 1/1 editable field."
        },
        {
          "id": "collection",
          "label": "Collection",
          "field_role": "collection",
          "field_count": 5,
          "editable_count": 5,
          "editor_widget": "repeatable item editor",
          "validation": "Collections should support add, remove, reorder, and item-level editing without changing block shape.",
          "default_source": "cloneable block recipe payload",
          "summary": "Collection fields use the repeatable item editor across 5/5 editable fields."
        },
        {
          "id": "style",
          "label": "Style",
          "field_role": "style",
          "field_count": 5,
          "editable_count": 5,
          "editor_widget": "appearance preset selector",
          "validation": "Style fields should prefer recipe or appearance tokens over one-off inline values.",
          "default_source": "Editorial Block System recipe tokens",
          "summary": "Style fields use the appearance preset selector across 5/5 editable fields."
        },
        {
          "id": "content",
          "label": "Content",
          "field_role": "content",
          "field_count": 5,
          "editable_count": 5,
          "editor_widget": "plain content field",
          "validation": "Content should remain serializable JSON and preserve the documented block contract.",
          "default_source": "cloneable block recipe payload",
          "summary": "Content fields use the plain content field across 5/5 editable fields."
        }
      ],
      "editor_field_roles": [
        "copy",
        "media",
        "action",
        "collection",
        "style",
        "content"
      ],
      "editor_editable_field_count": 29,
      "state_readiness_count": 6,
      "state_readiness_map": [
        {
          "id": "default",
          "label": "Default",
          "status": "covered",
          "trigger": "Initial render with the cloneable recipe payload",
          "visual_treatment": "Editorial Block System tokens with editorial documentation treatment",
          "token_roles": [
            "surface",
            "panel",
            "text",
            "button"
          ],
          "proof": "The Editorial Block System recipe renders a contract-safe primary state for theme-preview-matrix.",
          "summary": "Default state uses the recipe surface, text, and action tokens without one-off styling."
        },
        {
          "id": "empty",
          "label": "Empty",
          "status": "covered",
          "trigger": "Repeatable collections have zero items",
          "visual_treatment": "Reserved panel space with fallback copy or placeholder media",
          "token_roles": [
            "panel",
            "textMuted",
            "badge",
            "border"
          ],
          "proof": "Repeatable fields are documented for add, remove, reorder, and item-level editing.",
          "summary": "Empty-state guidance preserves layout rhythm instead of collapsing the block surface."
        },
        {
          "id": "pending",
          "label": "Pending",
          "status": "covered",
          "trigger": "Deferred content or preview loading",
          "visual_treatment": "Neutral reserved frame with status copy and no layout shift",
          "token_roles": [
            "control",
            "textMuted",
            "progressTrack",
            "border"
          ],
          "proof": "Static recipe payloads reserve the same documented frame while content is loading.",
          "summary": "Pending state keeps dimensions stable while using muted control/status tokens."
        },
        {
          "id": "active",
          "label": "Active",
          "status": "covered",
          "trigger": "Current block and recipe preview are selected",
          "visual_treatment": "Signal/uplink emphasis with visible selected-state chips",
          "token_roles": [
            "signal",
            "uplink",
            "button",
            "badge"
          ],
          "proof": "Recipe and block selection evidence is rendered in the documentation chrome.",
          "summary": "Active state is represented with recipe accent tokens and visible state labels."
        },
        {
          "id": "invalid",
          "label": "Invalid",
          "status": "covered",
          "trigger": "Media URL or provider data is invalid",
          "visual_treatment": "Warning/danger status treatment while preserving the block frame",
          "token_roles": [
            "warning",
            "danger",
            "border",
            "text"
          ],
          "proof": "Media guidance requires URL plus accessible fallback text for invalid or missing assets.",
          "summary": "Invalid state guidance favors explicit status evidence over ambiguous visual collapse."
        },
        {
          "id": "disabled",
          "label": "Disabled",
          "status": "covered",
          "trigger": "Noninteractive metadata or held preview state",
          "visual_treatment": "Muted affordance with preserved label, spacing, and hit-area rhythm",
          "token_roles": [
            "control",
            "textMuted",
            "border",
            "panel"
          ],
          "proof": "Noninteractive blocks retain evidence labels without pretending to be clickable.",
          "summary": "Disabled state keeps the block readable and spatially stable when interaction is unavailable."
        }
      ],
      "state_readiness_states": [
        "default",
        "empty",
        "pending",
        "active",
        "invalid",
        "disabled"
      ],
      "state_readiness_statuses": [
        "covered",
        "covered",
        "covered",
        "covered",
        "covered",
        "covered"
      ],
      "anatomy_region_count": 6,
      "anatomy_map": [
        {
          "id": "surface",
          "label": "Surface",
          "region_role": "outer layout and background",
          "field_paths": [],
          "token_roles": [
            "background",
            "panel",
            "panelElevated",
            "border"
          ],
          "state_ids": [
            "default",
            "empty",
            "pending",
            "active",
            "invalid",
            "disabled"
          ],
          "required": true,
          "summary": "theme-preview-matrix uses recipe surface tokens to keep the outer frame styled and composable."
        },
        {
          "id": "copy",
          "label": "Copy",
          "region_role": "headings, body copy, labels, and supporting text",
          "field_paths": [
            "block_collections[].description",
            "block_collections[].label",
            "description",
            "design_configurations[].description",
            "design_configurations[].label",
            "media_placeholders[].label",
            "title"
          ],
          "token_roles": [
            "text",
            "textMuted"
          ],
          "state_ids": [
            "default",
            "empty",
            "pending",
            "active",
            "invalid",
            "disabled"
          ],
          "required": true,
          "summary": "Copy fields map to primary and muted text roles so editors can change words without restyling the block."
        },
        {
          "id": "media",
          "label": "Media",
          "region_role": "replaceable image, iframe, embed, avatar, logo, or gallery area",
          "field_paths": [
            "default_media_placeholder",
            "media_placeholders",
            "media_placeholders[].alt",
            "media_placeholders[].aspect_ratio",
            "media_placeholders[].id",
            "media_placeholders[].src"
          ],
          "token_roles": [
            "panelElevated",
            "border"
          ],
          "state_ids": [
            "default",
            "empty",
            "pending",
            "active",
            "invalid",
            "disabled"
          ],
          "required": false,
          "summary": "Media fields stay isolated from copy and action regions so replacement assets preserve the recipe layout."
        },
        {
          "id": "actions",
          "label": "Actions",
          "region_role": "CTA, link, event, and navigation affordances",
          "field_paths": [
            "media_placeholders[].source_url"
          ],
          "token_roles": [
            "button",
            "buttonText",
            "signal",
            "uplink"
          ],
          "state_ids": [
            "default",
            "empty",
            "pending",
            "active",
            "invalid",
            "disabled"
          ],
          "required": false,
          "summary": "Action regions use recipe button and accent tokens while preserving href or event payloads."
        },
        {
          "id": "collection",
          "label": "Collection",
          "region_role": "repeatable cards, steps, metrics, logos, links, or nested blocks",
          "field_paths": [
            "block_collections",
            "block_collections[].block_types",
            "block_collections[].id",
            "block_types",
            "default_block_collection"
          ],
          "token_roles": [
            "panel",
            "panelElevated",
            "border",
            "badge"
          ],
          "state_ids": [
            "default",
            "empty",
            "pending",
            "active",
            "invalid",
            "disabled"
          ],
          "required": false,
          "summary": "Collection regions define repeatable item boundaries for add, remove, reorder, and nested editing."
        },
        {
          "id": "feedback",
          "label": "Feedback",
          "region_role": "status, validation, selected, loading, and disabled evidence",
          "field_paths": [],
          "token_roles": [
            "badge",
            "badgeText",
            "signal"
          ],
          "state_ids": [
            "default",
            "empty",
            "pending",
            "active",
            "invalid",
            "disabled"
          ],
          "required": true,
          "summary": "Feedback regions tie state-readiness evidence to visible recipe status treatments."
        }
      ],
      "anatomy_regions": [
        "surface",
        "copy",
        "media",
        "actions",
        "collection",
        "feedback"
      ],
      "anatomy_token_roles": [
        "background",
        "badge",
        "badgeText",
        "border",
        "button",
        "buttonText",
        "panel",
        "panelElevated",
        "signal",
        "text",
        "textMuted",
        "uplink"
      ],
      "action_count": 0,
      "action_map": [],
      "control_count": 0,
      "control_map": [],
      "style_token_count": 15,
      "style_token_map": [
        {
          "role": "background",
          "label": "Page background",
          "value": "#f7fbff",
          "token_type": "color",
          "summary": "Page background uses the background recipe token."
        },
        {
          "role": "panel",
          "label": "Panel surface",
          "value": "#ffffff",
          "token_type": "color",
          "summary": "Panel surface uses the panel recipe token."
        },
        {
          "role": "panelElevated",
          "label": "Elevated surface",
          "value": "#ffffff",
          "token_type": "color",
          "summary": "Elevated surface uses the panelElevated recipe token."
        },
        {
          "role": "text",
          "label": "Primary text",
          "value": "#142033",
          "token_type": "color",
          "summary": "Primary text uses the text recipe token."
        },
        {
          "role": "textMuted",
          "label": "Muted text",
          "value": "#526174",
          "token_type": "color",
          "summary": "Muted text uses the textMuted recipe token."
        },
        {
          "role": "signal",
          "label": "Signal accent",
          "value": "#166bff",
          "token_type": "color",
          "summary": "Signal accent uses the signal recipe token."
        },
        {
          "role": "uplink",
          "label": "Secondary accent",
          "value": "#00a6a6",
          "token_type": "color",
          "summary": "Secondary accent uses the uplink recipe token."
        },
        {
          "role": "border",
          "label": "Border",
          "value": "#d6dee8",
          "token_type": "color",
          "summary": "Border uses the border recipe token."
        },
        {
          "role": "control",
          "label": "Control surface",
          "value": "#ffffff",
          "token_type": "color",
          "summary": "Control surface uses the control recipe token."
        },
        {
          "role": "controlText",
          "label": "Control text",
          "value": "#142033",
          "token_type": "color",
          "summary": "Control text uses the controlText recipe token."
        },
        {
          "role": "button",
          "label": "Button surface",
          "value": "#166bff",
          "token_type": "color",
          "summary": "Button surface uses the button recipe token."
        },
        {
          "role": "buttonText",
          "label": "Button text",
          "value": "#ffffff",
          "token_type": "color",
          "summary": "Button text uses the buttonText recipe token."
        },
        {
          "role": "badge",
          "label": "Badge surface",
          "value": "#eef5ff",
          "token_type": "color",
          "summary": "Badge surface uses the badge recipe token."
        },
        {
          "role": "badgeText",
          "label": "Badge text",
          "value": "#174ea6",
          "token_type": "color",
          "summary": "Badge text uses the badgeText recipe token."
        },
        {
          "role": "fontFamily",
          "label": "Font family",
          "value": "Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, \"Segoe UI\", sans-serif",
          "token_type": "font",
          "summary": "Font family comes from the active recipe theme tokens."
        }
      ],
      "style_token_roles": [
        "background",
        "panel",
        "panelElevated",
        "text",
        "textMuted",
        "signal",
        "uplink",
        "border",
        "control",
        "controlText",
        "button",
        "buttonText",
        "badge",
        "badgeText",
        "fontFamily"
      ],
      "contrast_check_count": 6,
      "contrast_pass_count": 6,
      "contrast_checks": [
        {
          "id": "text-on-background",
          "label": "Text on background",
          "foreground_role": "text",
          "background_role": "background",
          "foreground": "#142033",
          "background": "#f7fbff",
          "ratio": 15.73,
          "required_ratio": 4.5,
          "passes": true,
          "level": "AAA",
          "summary": "Text on background is AAA at 15.73:1 against a 4.5:1 requirement."
        },
        {
          "id": "text-on-panel",
          "label": "Text on panel",
          "foreground_role": "text",
          "background_role": "panel",
          "foreground": "#142033",
          "background": "#ffffff",
          "ratio": 16.35,
          "required_ratio": 4.5,
          "passes": true,
          "level": "AAA",
          "summary": "Text on panel is AAA at 16.35:1 against a 4.5:1 requirement."
        },
        {
          "id": "muted-text-on-panel",
          "label": "Muted text on panel",
          "foreground_role": "textMuted",
          "background_role": "panel",
          "foreground": "#526174",
          "background": "#ffffff",
          "ratio": 6.32,
          "required_ratio": 4.5,
          "passes": true,
          "level": "AA",
          "summary": "Muted text on panel is AA at 6.32:1 against a 4.5:1 requirement."
        },
        {
          "id": "button-text-on-button",
          "label": "Button text on button",
          "foreground_role": "buttonText",
          "background_role": "button",
          "foreground": "#ffffff",
          "background": "#166bff",
          "ratio": 4.58,
          "required_ratio": 4.5,
          "passes": true,
          "level": "AA",
          "summary": "Button text on button is AA at 4.58:1 against a 4.5:1 requirement."
        },
        {
          "id": "control-text-on-control",
          "label": "Control text on control",
          "foreground_role": "controlText",
          "background_role": "control",
          "foreground": "#142033",
          "background": "#ffffff",
          "ratio": 16.35,
          "required_ratio": 4.5,
          "passes": true,
          "level": "AAA",
          "summary": "Control text on control is AAA at 16.35:1 against a 4.5:1 requirement."
        },
        {
          "id": "badge-text-on-badge",
          "label": "Badge text on badge",
          "foreground_role": "badgeText",
          "background_role": "badge",
          "foreground": "#174ea6",
          "background": "#eef5ff",
          "ratio": 7.15,
          "required_ratio": 4.5,
          "passes": true,
          "level": "AAA",
          "summary": "Badge text on badge is AAA at 7.15:1 against a 4.5:1 requirement."
        }
      ],
      "contrast_target": "AA",
      "accessibility_standard": "WCAG_2_2_AA",
      "accessibility_check_count": 5,
      "accessibility_checks": [
        {
          "id": "semantic-structure",
          "label": "Semantic structure",
          "category": "semantics",
          "status": "covered",
          "required": true,
          "proof": "runtime block sections, cards, lists, and headings",
          "summary": "theme-preview-matrix keeps semantic wrappers and readable heading/copy structure in the runtime preview."
        },
        {
          "id": "keyboard-and-tap-targets",
          "label": "Keyboard and tap targets",
          "category": "keyboard",
          "status": "covered",
          "required": false,
          "proof": "static content has no hidden focus trap",
          "summary": "The payload is static content, so the accessibility contract is to avoid hidden or misleading interactive affordances."
        },
        {
          "id": "text-alternatives",
          "label": "Text alternatives",
          "category": "media",
          "status": "covered",
          "required": true,
          "proof": "media fields include alt/label/title fallbacks",
          "summary": "Media-ready recipes expose replaceable alt text or accessible labels for images, logos, embeds, and placeholders."
        },
        {
          "id": "control-labels",
          "label": "Control labels",
          "category": "forms",
          "status": "covered",
          "required": false,
          "proof": "no input controls in this payload",
          "summary": "No input controls are present, so there are no unlabeled fields to remediate."
        },
        {
          "id": "status-and-motion",
          "label": "Status and motion",
          "category": "state",
          "status": "covered",
          "required": true,
          "proof": "runtime evidence avoids hidden status-only content",
          "summary": "Recipe defaults avoid motion-only meaning and keep status text inspectable when state is present."
        }
      ],
      "responsive_behavior_count": 3,
      "responsive_behavior_map": [
        {
          "id": "phone",
          "label": "Phone",
          "viewport_width": 390,
          "layout_mode": "single-column stack",
          "column_count": 1,
          "spacing_density": "spacious",
          "media_policy": "Media slots remain optional and collapse without leaving empty chrome.",
          "overflow_policy": "min-width:0 surfaces, wrapping copy, and no horizontal overflow in the static catalog phone smoke.",
          "interaction_policy": "Static content keeps readable line lengths and avoids hidden interactive affordances.",
          "proof": "npm run test:static:block-catalog all-blocks-phone",
          "summary": "Editorial Block System stacks theme-preview-matrix into one phone column with spacious spacing and bounded content."
        },
        {
          "id": "tablet",
          "label": "Tablet",
          "viewport_width": 768,
          "layout_mode": "two-column adaptive grid",
          "column_count": 2,
          "spacing_density": "spacious",
          "media_policy": "Media slots remain optional and collapse without leaving empty chrome.",
          "overflow_policy": "tablet preview frames keep mid-width composition, wrap controls, and avoid horizontal overflow in the static catalog smoke.",
          "interaction_policy": "Static content keeps readable line lengths and avoids hidden interactive affordances.",
          "proof": "npm run test:static:block-catalog all-blocks-tablet",
          "summary": "Editorial Block System adapts theme-preview-matrix to 2 tablet columns before expanding to the desktop layout."
        },
        {
          "id": "desktop",
          "label": "Desktop",
          "viewport_width": 1366,
          "layout_mode": "responsive composition grid",
          "column_count": 3,
          "spacing_density": "spacious",
          "media_policy": "Media slots remain optional and collapse without leaving empty chrome.",
          "overflow_policy": "desktop preview frames keep constrained widths, stable cards, and no horizontal overflow in the static catalog smoke.",
          "interaction_policy": "Static content keeps readable line lengths and avoids hidden interactive affordances.",
          "proof": "npm run test:static:block-catalog all-blocks-desktop",
          "summary": "Editorial Block System gives theme-preview-matrix up to 3 desktop columns while preserving recipe spacing."
        }
      ],
      "responsive_viewports": [
        "phone",
        "tablet",
        "desktop"
      ],
      "responsive_proof": [
        "npm run test:static:block-catalog all-blocks-phone",
        "npm run test:static:block-catalog all-blocks-tablet",
        "npm run test:static:block-catalog all-blocks-desktop"
      ],
      "interactive_roles": [],
      "recipe_alignment": {
        "action_token": "button",
        "control_token": "control",
        "surface_token": "panel",
        "text_token": "text",
        "source": "theme recipe tokens"
      }
    },
    "cloneable": true
  },
  "block_order": 4
}
Recipes

Every theme recipe applied to this block

dashboard

Compact Ops

Open recipe

Dense, scannable interfaces for dashboards, configuration, and internal operations.

compactsubtle
operator

Theme preview matrix sample

Compact Ops

A compact matrix configuration for documenting this governed operator block.

Themeensemble-daylight
Presetdashboard
Recipes1
Blocks1
dashboard

Operator Product

Open recipe

Compact product and service-operations rhythm for B2B tools, resource hubs, and trial-interest flows.

compactsubtle
operator

Theme preview matrix sample

Operator Product

A compact matrix configuration for documenting this governed operator block.

Themeensemble-daylight
Presetdashboard
Recipes1
Blocks1
shadcn

Polished SaaS

Open recipe

A calm product-marketing baseline with balanced hierarchy, spacing, and rounded controls.

comfortablesubtle
operator

Theme preview matrix sample

Polished SaaS

A compact matrix configuration for documenting this governed operator block.

Themeensemble-daylight
Presetshadcn
Recipes1
Blocks1
shadcn

Polished SaaS Crisp

Open recipe

A tighter SaaS treatment with crisp hierarchy, restrained spacing, and clean control rhythm.

comfortablesubtle
operator

Theme preview matrix sample

Polished SaaS Crisp

A compact matrix configuration for documenting this governed operator block.

Themeensemble-daylight
Presetshadcn
Recipes1
Blocks1
shadcn

Polished SaaS Growth

Open recipe

A roomier product-marketing recipe for conversion pages, feature launches, and trial funnels.

spaciousraised
operator

Theme preview matrix sample

Polished SaaS Growth

A compact matrix configuration for documenting this governed operator block.

Themeensemble-daylight
Presetshadcn
Recipes1
Blocks1
dashboard

Polished SaaS Enterprise

Open recipe

A precise B2B SaaS recipe with compact density, strong readability, and restrained depth.

compactsubtle
operator

Theme preview matrix sample

Polished SaaS Enterprise

A compact matrix configuration for documenting this governed operator block.

Themeensemble-daylight
Presetdashboard
Recipes1
Blocks1
shadcn

Regulated Professional

Open recipe

Measured hierarchy, conservative spacing, and high-readability surfaces for advisory and regulated service pages.

comfortablesubtle
operator

Theme preview matrix sample

Regulated Professional

A compact matrix configuration for documenting this governed operator block.

Themeensemble-daylight
Presetshadcn
Recipes1
Blocks1
shadcn

Editorial Luxury

Open recipe

Generous type, cinematic spacing, and understated surfaces for premium narrative pages.

spacioussubtle
operator

Theme preview matrix sample

Editorial Luxury

A compact matrix configuration for documenting this governed operator block.

Themeensemble-daylight
Presetshadcn
Recipes1
Blocks1
neo-brutalist

Bold Launch

Open recipe

Large type, decisive rhythm, and high contrast for announcements and campaign pages.

comfortablehard
operator

Theme preview matrix sample

Bold Launch

A compact matrix configuration for documenting this governed operator block.

Themeensemble-daylight
Presetneo-brutalist
Recipes1
Blocks1
shadcn

Bold Editorial Blocks

Open recipe

Viewport-scale block rhythm with large editorial type, crisp radii, and expressive motion for premium brand and contact pages.

spaciousraised
operator

Theme preview matrix sample

Bold Editorial Blocks

A compact matrix configuration for documenting this governed operator block.

Themeensemble-daylight
Presetshadcn
Recipes1
Blocks1
block

Editorial Block System

Open recipe

A template-ready full-page block system for duplicable landing, brand, contact, campaign, and lead-generation page sets.

spaciousraised
operator

Theme preview matrix sample

Editorial Block System

A compact matrix configuration for documenting this governed operator block.

Themeensemble-daylight
Presetblock
Recipes1
Blocks1
shadcn

Minimal Ink

Open recipe

Flat, sharp, restrained hierarchy for documentation, proof pages, and quiet brands.

comfortablenone
operator

Theme preview matrix sample

Minimal Ink

A compact matrix configuration for documenting this governed operator block.

Themeensemble-daylight
Presetshadcn
Recipes1
Blocks1
shadcn

Local Service Trust

Open recipe

Clear service-page rhythm for residential and local businesses with pricing, FAQs, resources, and appointment requests.

comfortablesubtle
operator

Theme preview matrix sample

Local Service Trust

A compact matrix configuration for documenting this governed operator block.

Themeensemble-daylight
Presetshadcn
Recipes1
Blocks1
shadcn

Tactile Service Ledger

Open recipe

Tactile raised panels and ledger-like rhythm for recurring services, quote funnels, memberships, and field-service notes.

comfortableraised
operator

Theme preview matrix sample

Tactile Service Ledger

A compact matrix configuration for documenting this governed operator block.

Themeensemble-daylight
Presetshadcn
Recipes1
Blocks1
shadcn

Soft Neumorphic

Open recipe

Soft raised panels with lower visual noise for guided tools and onboarding flows.

comfortableraised
operator

Theme preview matrix sample

Soft Neumorphic

A compact matrix configuration for documenting this governed operator block.

Themeensemble-daylight
Presetshadcn
Recipes1
Blocks1
glassmorphic

Glass Product

Open recipe

Layered translucent panels for demos, product storytelling, and immersive showcases.

comfortableglass
operator

Theme preview matrix sample

Glass Product

A compact matrix configuration for documenting this governed operator block.

Themeensemble-daylight
Presetglassmorphic
Recipes1
Blocks1
neo-brutalist

Retro Campaign

Open recipe

Chunky rhythm and nostalgic scale for playful campaigns without sacrificing contrast.

comfortablehard
operator

Theme preview matrix sample

Retro Campaign

A compact matrix configuration for documenting this governed operator block.

Themeensemble-daylight
Presetneo-brutalist
Recipes1
Blocks1
block

Brutalist Impact

Open recipe

Sharp edges, hard shadows, and assertive scale for high-emphasis conversion surfaces.

compacthard
operator

Theme preview matrix sample

Brutalist Impact

A compact matrix configuration for documenting this governed operator block.

Themeensemble-daylight
Presetblock
Recipes1
Blocks1
neo-brutalist

Neo-Brutalist Playful

Open recipe

High-contrast cards, chunky controls, and expressive spacing for modern playful brands.

comfortablehard
operator

Theme preview matrix sample

Neo-Brutalist Playful

A compact matrix configuration for documenting this governed operator block.

Themeensemble-daylight
Presetneo-brutalist
Recipes1
Blocks1
Contract

Schema and registry evidence

ensemble

Theme Preview Matrix

implemented · 0.1.0

No public prop fields are exposed for this block contract.