Block reference
Inspect the shipped block contracts and implementation-side authoring details.
- Owner
- Foundry Core
- Source
core/docs/BLOCKS.md- Ref
v0.1.16- Policy
- release-bound
Component pins for v0.2.2
| Component | Role | Version |
|---|---|---|
| core | runtime | v0.1.16 |
| theme-shield | theme | v0.1.15 |
| restricted-component-1 | brand-theme | v0.1.5 |
| dark-mode | runtime-addon | v0.1.0 |
| i18n | runtime-addon | v0.1.0 |
| starter | reference | v0.1.3 |
| docs | reference | v0.1.4 |
| distribution | tooling | v0.3.1 |
| restricted-component-2 | consumer-reference | v0.1.5 |
| restricted-component-3 | consumer-reference | v1.1.21 |
Block Index
accordion | audio-player | author-bio | before-after | callout | case-studies | certification-badges | columns | coming-soon-cta | coming-soon-footer | coming-soon-hero | coming-soon-trust | comparison-table | contact-split | content-sidebar-nav | cta | cta-button-list | cta-image-paragraph | divider | embed | faq-accordion | faq-cta | features | founder-profile | full-bleed-split | gallery | hero | icon-grid | illustration-panel | image-feature | lead-magnet | logo-trust | logos | map-coverage | masonry-gallery | media-text | motion-hero | newsletter-inline | onboarding-timeline | page-list | post-hero | post-list | pricing-comparison | pricing-tiers | property-cards | property-hero | prose-panel | pullquote | quote | related-posts | resource-downloads | rich-text | search | section-header | slideshow | social-share | stats-band | stats-grid | steps | table-of-contents | tabs | team-grid | testimonials | testimonials-carousel | timeline | topic-chip-nav | trust-badges | video-embed | video-hero
How blocks work
Foundry pages define an ordered sections array in front matter. The render pipeline is:
layouts/partials/framework/render-sections.htmliteratessections.- It resolves each
blockname throughdata/foundry/block-registry.yaml. - The mapped partial in
layouts/partials/blocks/is rendered with{ page, section }context. - The block partial reads
content,design, andid, then renders BEM-structured HTML.
sections:
- block: hero
id: homepage-hero
content:
title: "Build with Foundry"
text: "Composable Hugo blocks rendered from front matter."
primary_action:
text: "Get Started"
url: "/contact/"
design:
variant: centered
css_class: ""
Block standards (BEM, CSS vars, context extraction)
Every block follows the same context extraction contract:
{{ $section := .section }}
{{ $content := index $section "content" | default dict }}
{{ $design := index $section "design" | default dict }}
{{ $id := index $section "id" | default "" }}
{{ $class := index $design "css_class" | default "" }}
{{ $ui := index site.Data.foundry "classes" | default dict }}
BEM naming convention:
- Block root:
foundry-[block-name] - Elements:
foundry-[block-name]__[element] - Modifiers:
foundry-[block-name]--[modifier]
Example (media-text): foundry-media-text, foundry-media-text__inner, foundry-media-text__title, foundry-media-text__actions.
Color theming uses CSS variables via inline style attributes (not utility class overrides):
<h2 class="foundry-example__title" style="color: var(--foundry-text, #0f172a)">Title</h2>
<p class="foundry-example__text" style="color: var(--foundry-text-muted, #475569)">Body copy</p>
<div class="foundry-example__panel" style="background: var(--foundry-surface, #ffffff); border-color: var(--foundry-border, #e2e8f0)"></div>
CSS variable system
assets/css/foundry-base.css defines neutral fallback tokens. Theme modules (for example theme-shield) override these at runtime.
| Variable | Purpose | Base value |
|---|---|---|
--foundry-bg | Page background color. | #ffffff |
--foundry-border | Default border color. | #e2e8f0 |
--foundry-border-strong | High-contrast border color. | #cbd5e1 |
--foundry-brand-accent | Secondary accent color. | #3b82f6 |
--foundry-brand-primary | Primary brand accent used for key UI elements. | #0f172a |
--foundry-duration-base | Base motion duration token. | 200ms |
--foundry-ease-standard | Default easing curve for transitions. | cubic-bezier(0.2, 0, 0, 1) |
--foundry-radius | Default radius token. | 1rem |
--foundry-radius-lg | Large radius token. | 1.5rem |
--foundry-radius-sm | Small radius token. | 0.5rem |
--foundry-shadow-md | Medium elevation shadow token. | 0 4px 12px rgba(0, 0, 0, 0.1) |
--foundry-shadow-sm | Small elevation shadow token. | 0 1px 3px rgba(0, 0, 0, 0.1) |
--foundry-surface | Primary surface/card background. | #ffffff |
--foundry-surface-soft | Subtle section and muted surface background. | #f8fafc |
--foundry-text | Primary text color. | #0f172a |
--foundry-text-muted | Secondary/muted text color. | #475569 |
Motion CSS variables
assets/css/foundry-motion.css defines additional motion-specific tokens.
| Variable | Purpose | Default |
|---|---|---|
--foundry-motion-distance | Default reveal translate distance. | 16px |
--foundry-motion-duration | Resolved animation duration token. | var(--foundry-duration-base, 200ms) |
--foundry-motion-ease | Resolved easing curve for reveal transitions. | var(--foundry-ease-standard, cubic-bezier(0.2, 0, 0, 1)) |
--foundry-motion-kb-duration | Ken Burns animation duration. | 12s |
--foundry-motion-kb-scale | Ken Burns target scale value. | 1.06 |
--foundry-motion-marquee-pause-state | Default marquee animation play state. | running |
--foundry-motion-opacity-start | Starting opacity for reveal/stagger items. | 0 |
--foundry-motion-parallax-max | Maximum parallax translate clamp (px). | 80px |
--foundry-motion-scale-start | Starting scale for zoom reveals. | 0.98 |
--foundry-motion-stagger-step | Delay step between staggered children. | 80ms |
Motion attributes
The Motion Toolkit loader lives at layouts/partials/framework/foundry-motion.html and activates in sites that include the body-end hook.
| Attribute | Engine | Accepted values | Behavior |
|---|---|---|---|
data-motion-kenburns | Engine E: Ken Burns | Boolean attribute | Enables image zoom/pan crossfade behavior. |
data-motion-kenburns-interval | Engine E: Ken Burns | Milliseconds (default 6000) | Sets crossfade interval for multi-image containers. |
data-motion-marquee | Engine D: Marquee | Boolean attribute | Initializes seamless marquee track cloning and animation. |
data-motion-marquee-dir | Engine D: Marquee | left (default), right, up, down | Controls marquee animation direction. |
data-motion-marquee-pause | Engine D: Marquee | hover | Pauses animation on hover/focus when set to hover. |
data-motion-marquee-speed | Engine D: Marquee | Positive number (px/sec, default 40) | Controls marquee travel speed. |
data-motion-parallax | Engine B: Parallax | Float 0.0 to 0.8 (default 0.35) | Parallax translateY multiplier, clamped by --foundry-motion-parallax-max. |
data-motion-parallax-dir | Engine B: Parallax | 1 (default) or -1 | Inverts parallax direction when negative. |
data-motion-reveal | Engine A: Reveal | fade-up (default), fade-in, slide-left, slide-right, zoom-in | Applies entry animation; is-in-view is added by observer. |
data-motion-scrub | Engine C: Scrub | Conventionally progress | Enables scroll-linked scrub behavior on target element. |
data-motion-scrub-prop | Engine C: Scrub | width (default), height, scaleX, opacity | Selects property controlled by section scroll progress. |
data-motion-stagger | Engine A: Stagger | Boolean attribute | Applies stagger delay to direct children when parent enters viewport. |
Block catalog (alphabetical)
accordion
Minimum required: items — everything else is optional.
Expandable content panels with optional single-open enforcement.
sections:
- block: accordion
id: accordion-example
content:
items:
- title: Item title
text: Item description.
text: Example supporting text.
title: Example title
design:
variant: bordered
allow_multiple: true
css_class: ''
Design options
| Field | Details |
|---|---|
variants | bordered, minimal, cards |
variant | bordered | minimal | cards — accordion container style |
allow_multiple | true | false — allow opening more than one item |
css_class | extra CSS classes on outer section |
BEM classes
foundry-accordionfoundry-accordion__bodyfoundry-accordion__emptyfoundry-accordion__innerfoundry-accordion__itemfoundry-accordion__listfoundry-accordion__subtitlefoundry-accordion__summaryfoundry-accordion__title
audio-player
Minimum required: url, title — everything else is optional.
Custom audio player block with progress, speed, and transcript support.
sections:
- block: audio-player
id: audio-player-example
content:
date: '2026-02-22'
description: Short descriptive paragraph.
download: true
duration: '42:17'
image: "/images/example.jpg"
show: Example Group
title: Example title
transcript: Transcript excerpt goes here.
url: https://example.com
design:
variant: card
css_class: ''
Design options
| Field | Details |
|---|---|
variants | card, minimal, podcast |
variant | card | minimal | podcast — audio player presentation |
css_class | extra CSS classes on outer section |
BEM classes
foundry-audio-playerfoundry-audio-player__contentfoundry-audio-player__controlsfoundry-audio-player__coverfoundry-audio-player__descriptionfoundry-audio-player__downloadfoundry-audio-player__emptyfoundry-audio-player__innerfoundry-audio-player__layoutfoundry-audio-player__metafoundry-audio-player__primaryfoundry-audio-player__progressfoundry-audio-player__secondaryfoundry-audio-player__shellfoundry-audio-player__showfoundry-audio-player__speedfoundry-audio-player__timefoundry-audio-player__timelinefoundry-audio-player__titlefoundry-audio-player__togglefoundry-audio-player__transcriptfoundry-audio-player__volume
author-bio
Minimum required: name, bio — everything else is optional.
Compact author profile block for article footers and about sections.
sections:
- block: author-bio
id: author-bio-example
content:
bio: Example value
company: Example Group
image: "/images/example.jpg"
links:
- platform: linkedin
url: https://example.com
more_from:
text: Learn more
url: "/contact/"
name: Example value
role: Role or title
design:
variant: card
css_class: ''
Design options
| Field | Details |
|---|---|
variants | card, inline, minimal |
variant | card | inline | minimal — author module layout |
css_class | extra CSS classes on outer section |
BEM classes
foundry-author-biofoundry-author-bio__cardfoundry-author-bio__emptyfoundry-author-bio__innerfoundry-author-bio__links
before-after
Minimum required: before, after — everything else is optional.
Comparison block for before/after state storytelling.
sections:
- block: before-after
id: before-after-example
content:
after: Example value
before: Example value
subtitle: Example value
title: Example title
design:
css_class: ''
Design options
| Field | Details |
|---|---|
variants | None (single style) |
css_class | extra CSS classes on outer section |
BEM classes
foundry-before-afterfoundry-before-after__innerfoundry-before-after__labelfoundry-before-after__panelsfoundry-before-after__title
callout
Minimum required: text — everything else is optional.
Inline semantic notice block for info, warning, success, and related states.
sections:
- block: callout
id: callout-example
content:
text: Example supporting text.
title: Example title
design:
type: default
icon: default
css_class: ''
Design options
| Field | Details |
|---|---|
variants | info, tip, warning, danger, note, success |
type | info | tip | warning | danger | note | success — semantic intent style |
icon | icon name override (optional) |
css_class | extra CSS classes on outer section |
BEM classes
foundry-calloutfoundry-callout-accentfoundry-callout-bgfoundry-callout__boxfoundry-callout__contentfoundry-callout__iconfoundry-callout__innerfoundry-callout__textfoundry-callout__title
case-studies
Minimum required: cases — everything else is optional.
Case study list/grid block with outcomes and project context.
sections:
- block: case-studies
id: case-studies-example
content:
cases: Example value
title: Example title
design:
css_class: ''
Design options
| Field | Details |
|---|---|
variants | None (single style) |
css_class | extra CSS classes on outer section |
BEM classes
foundry-case-studiesfoundry-case-studies__badgefoundry-case-studies__cardfoundry-case-studies__case-titlefoundry-case-studies__gridfoundry-case-studies__innerfoundry-case-studies__result-iconfoundry-case-studies__result-itemfoundry-case-studies__result-textfoundry-case-studies__resultsfoundry-case-studies__sectionfoundry-case-studies__section--problemfoundry-case-studies__section--resultsfoundry-case-studies__section--solutionfoundry-case-studies__section-textfoundry-case-studies__section-titlefoundry-case-studies__title
certification-badges
Minimum required: badges — everything else is optional.
Certification and credential badge display block.
sections:
- block: certification-badges
id: certification-badges-example
content:
badges: Example value
title: Example title
design:
css_class: ''
Design options
| Field | Details |
|---|---|
variants | None (single style) |
css_class | extra CSS classes on outer section |
BEM classes
foundry-certification-badgesfoundry-certification-badges__gridfoundry-certification-badges__innerfoundry-certification-badges__itemfoundry-certification-badges__title
columns
Minimum required: columns — everything else is optional.
Free-form multi-column markdown content block.
sections:
- block: columns
id: columns-example
content:
columns:
- heading: Column heading
text: Column markdown content.
- heading: Column heading
text: Column markdown content.
design:
count: '3'
gap: md
dividers: true
align: center
css_class: ''
Design options
| Field | Details |
|---|---|
variants | None (single style) |
count | 2 | 3 — column count |
gap | sm | md | lg — column gap |
dividers | true | false — vertical separators between columns |
align | top | center — vertical alignment of column content |
css_class | extra CSS classes on outer section |
BEM classes
foundry-columnsfoundry-columns__columnfoundry-columns__emptyfoundry-columns__gridfoundry-columns__inner
coming-soon-cta
Minimum required: title — everything else is optional.
Coming-soon CTA block for waitlist or early access capture.
sections:
- block: coming-soon-cta
id: coming-soon-cta-example
content:
primary_action:
text: Learn more
url: "/contact/"
secondary_action:
text: Learn more
url: "/contact/"
support_note: Example value
text: Example supporting text.
title: Example title
design:
css_class: ''
Design options
| Field | Details |
|---|---|
variants | None (single style) |
css_class | extra CSS classes on outer section |
BEM classes
foundry-coming-soon-ctafoundry-coming-soon-cta__actionsfoundry-coming-soon-cta__innerfoundry-coming-soon-cta__textfoundry-coming-soon-cta__title
coming-soon-footer
Minimum required: (none) — everything else is optional. Minimal coming-soon footer block with links and legal copy.
sections:
- block: coming-soon-footer
id: coming-soon-footer-example
content:
address_lines: Example value
bottom_note: Example value
contact_title: Example value
copyright: Example value
email: Example value
email_url: Example value
legal_note: Example value
legal_title: Example value
likestyle_url: Example value
logo: Example value
phone: Example value
phone_url: Example value
preview_label: Example value
preview_url: Example value
privacy_url: Example value
tagline: Example value
design:
css_class: ''
Design options
| Field | Details |
|---|---|
variants | None (single style) |
css_class | extra CSS classes on outer section |
BEM classes
foundry-coming-soon-footerfoundry-coming-soon-footer__brandfoundry-coming-soon-footer__copyfoundry-coming-soon-footer__innerfoundry-coming-soon-footer__links
coming-soon-hero
Minimum required: title — everything else is optional.
Coming-soon hero block with launch positioning and signup focus.
sections:
- block: coming-soon-hero
id: coming-soon-hero-example
content:
badge_text: Example value
email_label: Example value
email_placeholder: Example value
first_name_label: Example value
first_name_placeholder: Example value
form_action: "/api/submit"
form_headline: Example value
form_name: Example value
likestyle_cta: Example value
likestyle_kicker: Example value
likestyle_meta: Example value
likestyle_text: Example value
likestyle_url: Example value
logo: Example value
privacy_text: Example value
submit_text: Example value
subtitle: Example value
title: Example title
trust_badges: Example value
design:
css_class: ''
Legacy mode uses form_action.
Managed mode uses content.form and the same Foundry Control contract as managed-form.
Design options
| Field | Details |
|---|---|
variants | None (single style) |
css_class | extra CSS classes on outer section |
BEM classes
foundry-coming-soon-herofoundry-coming-soon-hero__formfoundry-coming-soon-hero__innerfoundry-coming-soon-hero__textfoundry-coming-soon-hero__title
coming-soon-trust
Minimum required: logos — everything else is optional.
Coming-soon trust signal block for early credibility.
sections:
- block: coming-soon-trust
id: coming-soon-trust-example
content:
badges: Example value
logos:
- name: Partner Name
stats:
- label: Metric
value: 95%
subtitle: Example value
title: Example title
design:
css_class: ''
Design options
| Field | Details |
|---|---|
variants | None (single style) |
css_class | extra CSS classes on outer section |
BEM classes
foundry-coming-soon-trustfoundry-coming-soon-trust__innerfoundry-coming-soon-trust__itemfoundry-coming-soon-trust__itemsfoundry-coming-soon-trust__title
comparison-table
Minimum required: rows — everything else is optional.
Feature comparison table block across options or providers.
sections:
- block: comparison-table
id: comparison-table-example
content:
footnote: Example value
headers: Example value
rows: Example value
subtitle: Example value
title: Example title
design:
css_class: ''
Design options
| Field | Details |
|---|---|
variants | None (single style) |
css_class | extra CSS classes on outer section |
BEM classes
foundry-comparison-tablefoundry-comparison-table__cellfoundry-comparison-table__innerfoundry-comparison-table__rowfoundry-comparison-table__tablefoundry-comparison-table__title
contact-split
Minimum required: none — everything else is optional. Two-column contact block with details and either a legacy inline form or a managed Foundry Control form.
sections:
- block: contact-split
id: contact-split-example
content:
address: Example value
email: Example value
fields: Example value
form_action: "/api/submit"
form:
mode: managed
form_key: contact-intake
form_method: Example value
form_text: Example value
form_title: Example value
hours: Example value
phone: Example value
privacy_note: No spam. Unsubscribe anytime.
submit_text: Example value
subtitle: Example value
title: Example title
design:
css_class: ''
Legacy mode uses form_action, form_method, fields, and submit_text.
Managed mode uses content.form with the same stable contract as the managed-form block and resolves base_url / site_key from site.Params.foundry.control when not provided inline.
Design options
| Field | Details |
|---|---|
variants | None (single style) |
css_class | extra CSS classes on outer section |
BEM classes
foundry-contact-splitfoundry-contact-split__contentfoundry-contact-split__controlfoundry-contact-split__control--textareafoundry-contact-split__fieldfoundry-contact-split__formfoundry-contact-split__form-panelfoundry-contact-split__form-textfoundry-contact-split__form-titlefoundry-contact-split__innerfoundry-contact-split__meta-cardfoundry-contact-split__meta-card--addressfoundry-contact-split__meta-card--emailfoundry-contact-split__meta-card--hoursfoundry-contact-split__meta-card--phonefoundry-contact-split__meta-labelfoundry-contact-split__meta-linkfoundry-contact-split__meta-listfoundry-contact-split__meta-valuefoundry-contact-split__privacyfoundry-contact-split__submitfoundry-contact-split__subtitlefoundry-contact-split__title
content-sidebar-nav
Minimum required: items — everything else is optional.
Content layout block with sidebar anchor/navigation area.
sections:
- block: content-sidebar-nav
id: content-sidebar-nav-example
content:
items:
- title: Item title
text: Item description.
subtitle: Example value
title: Example title
design:
css_class: ''
Design options
| Field | Details |
|---|---|
variants | None (single style) |
css_class | extra CSS classes on outer section |
BEM classes
foundry-content-sidebar-navfoundry-content-sidebar-nav__contentfoundry-content-sidebar-nav__innerfoundry-content-sidebar-nav__navfoundry-content-sidebar-nav__nav-item
cta
Minimum required: title — everything else is optional.
Focused call-to-action block with copy and action buttons.
sections:
- block: cta
id: cta-example
content:
primary_action:
text: Learn more
url: "/contact/"
secondary_action:
text: Learn more
url: "/contact/"
text: Example supporting text.
title: Example title
design:
variant: centered
css_class: ''
Design options
| Field | Details |
|---|---|
variants | centered, left |
variant | centered | left — text and action alignment |
css_class | extra CSS classes on outer section |
BEM classes
foundry-ctafoundry-cta__actionsfoundry-cta__innerfoundry-cta__panelfoundry-cta__textfoundry-cta__title
cta-button-list
Minimum required: buttons — everything else is optional.
CTA block presenting multiple button actions as a grouped list.
sections:
- block: cta-button-list
id: cta-button-list-example
content:
buttons: Example value
subtitle: Example value
title: Example title
design:
css_class: ''
Design options
| Field | Details |
|---|---|
variants | None (single style) |
css_class | extra CSS classes on outer section |
BEM classes
foundry-cta-button-listfoundry-cta-button-list__gridfoundry-cta-button-list__innerfoundry-cta-button-list__itemfoundry-cta-button-list__textfoundry-cta-button-list__title
cta-image-paragraph
Minimum required: items — everything else is optional.
CTA block pairing image support with concise conversion copy.
sections:
- block: cta-image-paragraph
id: cta-image-paragraph-example
content:
items:
- title: Item title
text: Item description.
design:
css_class: ''
Design options
| Field | Details |
|---|---|
variants | None (single style) |
css_class | extra CSS classes on outer section |
BEM classes
foundry-cta-image-paragraphfoundry-cta-image-paragraph__actionsfoundry-cta-image-paragraph__contentfoundry-cta-image-paragraph__innerfoundry-cta-image-paragraph__mediafoundry-cta-image-paragraph__textfoundry-cta-image-paragraph__title
divider
Minimum required: (none) — everything else is optional. Visual separator block for rhythm and transitions between sections.
sections:
- block: divider
id: divider-example
content:
text: Example supporting text.
design:
variant: line
spacing: md
css_class: ''
Design options
| Field | Details |
|---|---|
variants | line, gradient, wave, spacer |
variant | line | gradient | wave | spacer — divider style |
spacing | sm | md | lg | xl — vertical rhythm |
css_class | extra CSS classes on divider wrapper |
BEM classes
foundry-dividerfoundry-divider__inner
embed
Minimum required: url — everything else is optional.
Safe iframe embed block for maps, tools, and third-party widgets.
sections:
- block: embed
id: embed-example
content:
fallback_text: Open source link
fallback_url: https://example.com/fallback
text: Example supporting text.
title: Example title
url: https://example.com
design:
variant: card
aspect: '16:9'
height: default
css_class: ''
Design options
| Field | Details |
|---|---|
variants | card, flush, minimal |
variant | card | flush | minimal — iframe wrapper style |
aspect | 16:9 | 4:3 | 1:1 | map — default ratio when height is unset |
height | fixed height value (for example: 450px), overrides aspect |
css_class | extra CSS classes on outer section |
BEM classes
foundry-embedfoundry-embed__emptyfoundry-embed__fallbackfoundry-embed__figurefoundry-embed__framefoundry-embed__frame-wrapfoundry-embed__innerfoundry-embed__shellfoundry-embed__subtitlefoundry-embed__title
faq-accordion
Minimum required: items — everything else is optional.
FAQ-specific accordion block with question/answer structure.
sections:
- block: faq-accordion
id: faq-accordion-example
content:
items:
- title: Item title
text: Item description.
subtitle: Example value
title: Example title
design:
css_class: ''
Design options
| Field | Details |
|---|---|
variants | None (single style) |
css_class | extra CSS classes on outer section |
BEM classes
foundry-faq-accordionfoundry-faq-accordion__answerfoundry-faq-accordion__innerfoundry-faq-accordion__itemfoundry-faq-accordion__listfoundry-faq-accordion__questionfoundry-faq-accordion__title
faq-cta
Minimum required: items, cta_title, cta_action — everything else is optional.
FAQ companion CTA block used to drive follow-up actions.
sections:
- block: faq-cta
id: faq-cta-example
content:
cta_action: Example value
cta_secondary_action: Example value
cta_text: Example value
cta_title: Example value
items:
- title: Item title
text: Item description.
subtitle: Example value
title: Example title
design:
css_class: ''
Design options
| Field | Details |
|---|---|
variants | None (single style) |
css_class | extra CSS classes on outer section |
BEM classes
foundry-faq-ctafoundry-faq-cta__actionsfoundry-faq-cta__innerfoundry-faq-cta__textfoundry-faq-cta__title
features
Minimum required: items — everything else is optional.
Feature list/grid block with optional card presentation, linked-card support,
and icon support.
sections:
- block: features
id: features-example
content:
eyebrow: Example eyebrow
items:
- name: Item title
description: Item description.
url: /about/
cta: Read more
css_class: example-item
text: Example supporting text.
title: Example title
design:
variant: linked-cards
columns: '3'
css_class: ''
Content fields
eyebroworkickerfor a small label above the title- item
nameortitle - item
descriptionortext - item
urlandctafor thelinked-cardsvariant - item
css_classfor per-card styling hooks
Design options
| Field | Details |
|---|---|
variants | cards, plain, linked-cards |
variant | cards | plain | linked-cards — card styling, borderless, or linked CTA cards |
columns | 2 | 3 | 4 — grid columns (default: 3) |
css_class | extra CSS classes on outer section |
BEM classes
foundry-featuresfoundry-features__eyebrowfoundry-features__gridfoundry-features__innerfoundry-features__itemfoundry-features__item-ctafoundry-features__item-iconfoundry-features__item-linkfoundry-features__item-textfoundry-features__item-titlefoundry-features__textfoundry-features__title
founder-profile
Minimum required: name — everything else is optional.
Founder spotlight/profile block with media and narrative copy.
sections:
- block: founder-profile
id: founder-profile-example
content:
contact_email_href: Example value
contact_email_label: Example value
contact_phone_href: Example value
contact_phone_label: Example value
highlights: Example value
image: "/images/example.jpg"
image_alt: Descriptive alt text
image_height: Example value
image_sizes: Example value
image_srcset: Example value
image_webp_srcset: Example value
image_width: Example value
name: Example value
paragraphs: Example value
role: Role or title
subtitle: Example value
title: Example title
design:
css_class: ''
Design options
| Field | Details |
|---|---|
variants | None (single style) |
css_class | extra CSS classes on outer section |
BEM classes
foundry-founder-profilefoundry-founder-profile__contentfoundry-founder-profile__innerfoundry-founder-profile__mediafoundry-founder-profile__textfoundry-founder-profile__title
gallery
Minimum required: images — everything else is optional.
Uniform image grid with optional captions and lightbox navigation.
sections:
- block: gallery
id: gallery-example
content:
images:
- src: "/images/gallery-1.jpg"
alt: Gallery image
caption: Optional caption
text: Example supporting text.
title: Example title
design:
columns: '3'
gap: md
aspect: '16:9'
css_class: ''
Design options
| Field | Details |
|---|---|
variants | None (single style) |
columns | 2 | 3 | 4 — gallery columns |
gap | sm | md | lg — spacing between items |
aspect | square | landscape | auto — thumbnail ratio |
css_class | extra CSS classes on outer section |
BEM classes
foundry-galleryfoundry-gallery__closefoundry-gallery__dialogfoundry-gallery__dialog-actionsfoundry-gallery__dialog-captionfoundry-gallery__dialog-imagefoundry-gallery__dialog-innerfoundry-gallery__dialog-metafoundry-gallery__emptyfoundry-gallery__gridfoundry-gallery__imagefoundry-gallery__innerfoundry-gallery__itemfoundry-gallery__openfoundry-gallery__subtitlefoundry-gallery__title
hero
Minimum required: title — everything else is optional.
Primary hero section with headline, supporting copy, and one or two CTAs.
sections:
- block: hero
id: hero-example
content:
primary_action:
text: Learn more
url: "/contact/"
secondary_action:
text: Learn more
url: "/contact/"
text: Example supporting text.
title: Example title
design:
variant: centered
css_class: ''
Design options
| Field | Details |
|---|---|
variants | centered, left |
variant | centered | left — text and action alignment |
css_class | extra CSS classes on outer section |
BEM classes
foundry-herofoundry-hero__actionsfoundry-hero__innerfoundry-hero__textfoundry-hero__title
icon-grid
Minimum required: items — everything else is optional.
Icon-led capability grid with configurable columns and card styles.
sections:
- block: icon-grid
id: icon-grid-example
content:
items:
- title: Item title
text: Item description.
text: Example supporting text.
title: Example title
design:
variant: plain
columns: '3'
css_class: ''
Design options
| Field | Details |
|---|---|
variants | plain, cards |
variant | plain | cards — item treatment |
columns | 2 | 3 | 4 — grid columns |
css_class | extra CSS classes on outer section |
BEM classes
foundry-icon-gridfoundry-icon-grid__contentfoundry-icon-grid__gridfoundry-icon-grid__iconfoundry-icon-grid__innerfoundry-icon-grid__itemfoundry-icon-grid__item-innerfoundry-icon-grid__item-textfoundry-icon-grid__item-titlefoundry-icon-grid__subtitlefoundry-icon-grid__title
illustration-panel
Minimum required: image — everything else is optional.
Panel block that combines illustration media with explanatory text.
sections:
- block: illustration-panel
id: illustration-panel-example
content:
caption: Optional caption text.
image: "/images/example.jpg"
image_alt: Descriptive alt text
panel_width: Example value
design:
css_class: ''
Design options
| Field | Details |
|---|---|
variants | None (single style) |
css_class | extra CSS classes on outer section |
BEM classes
foundry-illustration-panelfoundry-illustration-panel__contentfoundry-illustration-panel__innerfoundry-illustration-panel__mediafoundry-illustration-panel__text
image-feature
Minimum required: src, alt — everything else is optional.
Single editorial image block with layout, caption, and lightbox options.
sections:
- block: image-feature
id: image-feature-example
content:
alt: Descriptive alt text
caption: Optional caption text.
credit: 'Photo: Team'
src: "/images/example.jpg"
design:
variant: contained
aspect: '16:9'
rounded: true
shadow: true
lightbox: true
css_class: ''
Design options
| Field | Details |
|---|---|
variants | contained, wide, full-bleed, float-left, float-right |
variant | contained | wide | full-bleed | float-left | float-right — image placement |
aspect | 16:9 | 4:3 | 3:2 | square | auto — media aspect ratio |
rounded | true | false — rounded corners on media |
shadow | true | false — shadow on media frame |
lightbox | true | false — open image in dialog lightbox |
css_class | extra CSS classes on outer section |
BEM classes
foundry-image-featurefoundry-image-feature__captionfoundry-image-feature__closefoundry-image-feature__dialogfoundry-image-feature__dialog-innerfoundry-image-feature__emptyfoundry-image-feature__figurefoundry-image-feature__innerfoundry-image-feature__media
lead-magnet
Minimum required: offer_title — everything else is optional.
Lead magnet signup block combining offer copy and form capture.
sections:
- block: lead-magnet
id: lead-magnet-example
content:
download_url: Example value
fields: Example value
form_action: "/api/submit"
form_method: Example value
form_text: Example value
form_title: Example value
offer_text: Example value
offer_title: Example value
privacy_note: No spam. Unsubscribe anytime.
submit_text: Example value
subtitle: Example value
title: Example title
design:
css_class: ''
Legacy mode uses form_action.
Managed mode uses content.form and resolves base_url / site_key from site.Params.foundry.control when available.
Design options
| Field | Details |
|---|---|
variants | None (single style) |
css_class | extra CSS classes on outer section |
BEM classes
foundry-lead-magnetfoundry-lead-magnet__formfoundry-lead-magnet__innerfoundry-lead-magnet__textfoundry-lead-magnet__title
logo-trust
Minimum required: logos, badges — everything else is optional.
Hybrid trust block combining logos with supporting credibility chips.
sections:
- block: logo-trust
id: logo-trust-example
content:
badges: Example value
logos:
- name: Partner Name
subtitle: Example value
title: Example title
design:
css_class: ''
Design options
| Field | Details |
|---|---|
variants | None (single style) |
css_class | extra CSS classes on outer section |
BEM classes
foundry-logo-trustfoundry-logo-trust__badgesfoundry-logo-trust__gridfoundry-logo-trust__imagefoundry-logo-trust__innerfoundry-logo-trust__itemfoundry-logo-trust__namefoundry-logo-trust__subtitlefoundry-logo-trust__title
logos
Minimum required: logos — everything else is optional.
Logo wall block for clients, partners, or agencies.
sections:
- block: logos
id: logos-example
content:
logos:
- name: Partner Name
subtitle: Example value
title: Example title
design:
css_class: ''
Design options
| Field | Details |
|---|---|
variants | None (single style) |
css_class | extra CSS classes on outer section |
BEM classes
foundry-logosfoundry-logos__gridfoundry-logos__innerfoundry-logos__itemfoundry-logos__title
map-coverage
Minimum required: image, stats — everything else is optional.
Geographic coverage block combining map visuals and supporting text.
sections:
- block: map-coverage
id: map-coverage-example
content:
image: "/images/example.jpg"
image_alt: Descriptive alt text
markers: Example value
note: Example value
stats:
- label: Metric
value: 95%
subtitle: Example value
title: Example title
design:
css_class: ''
Design options
| Field | Details |
|---|---|
variants | None (single style) |
css_class | extra CSS classes on outer section |
BEM classes
foundry-map-coveragefoundry-map-coverage__innerfoundry-map-coverage__mapfoundry-map-coverage__textfoundry-map-coverage__title
masonry-gallery
Minimum required: images — everything else is optional.
Responsive masonry-style image gallery with optional lightbox.
sections:
- block: masonry-gallery
id: masonry-gallery-example
content:
images:
- src: "/images/gallery-1.jpg"
alt: Gallery image
caption: Optional caption
text: Example supporting text.
title: Example title
design:
columns: '3'
gap: md
lightbox: true
css_class: ''
Design options
| Field | Details |
|---|---|
variants | None (single style) |
columns | 2 | 3 | 4 — desktop masonry columns |
gap | sm | md | lg — spacing between items |
lightbox | true | false — open images in dialog lightbox |
css_class | extra CSS classes on outer section |
BEM classes
foundry-masonry-galleryfoundry-masonry-gallery__columnsfoundry-masonry-gallery__dialogfoundry-masonry-gallery__dialog-innerfoundry-masonry-gallery__emptyfoundry-masonry-gallery__innerfoundry-masonry-gallery__itemfoundry-masonry-gallery__openfoundry-masonry-gallery__subtitlefoundry-masonry-gallery__title
media-text
Minimum required: title, text, image — everything else is optional.
Split layout block pairing media with descriptive copy and actions.
sections:
- block: media-text
id: media-text-example
content:
eyebrow: Section label
image: "/images/example.jpg"
image_alt: Descriptive alt text
items:
- title: Item title
text: Item description.
kicker: Example value
media_caption: Example value
primary_action:
text: Learn more
url: "/contact/"
secondary_action:
text: Learn more
url: "/contact/"
text: Example supporting text.
title: Example title
design:
media_position: left
media_ratio: landscape
css_class: ''
Design options
| Field | Details |
|---|---|
variants | None (single style) |
media_position | left | right — media placement |
media_ratio | landscape | square | portrait | wide — media aspect ratio |
css_class | extra CSS classes on outer section |
BEM classes
foundry-media-textfoundry-media-text__actionsfoundry-media-text__captionfoundry-media-text__contentfoundry-media-text__eyebrowfoundry-media-text__imagefoundry-media-text__innerfoundry-media-text__itemfoundry-media-text__item-iconfoundry-media-text__itemsfoundry-media-text__mediafoundry-media-text__media-framefoundry-media-text__textfoundry-media-text__title
newsletter-inline
Minimum required: none — everything else is optional. Inline email signup form for lead capture inside content flow.
sections:
- block: newsletter-inline
id: newsletter-inline-example
content:
button_text: Submit
form_action: "/api/submit"
placeholder: you@example.com
privacy_note: No spam. Unsubscribe anytime.
text: Example supporting text.
title: Example title
design:
variant: card
css_class: ''
Legacy mode uses form_action.
Managed mode uses content.form and the standard Foundry Control public form API.
Design options
| Field | Details |
|---|---|
variants | card, banner, minimal |
variant | card | banner | minimal — form presentation |
css_class | extra CSS classes on outer section |
BEM classes
foundry-newsletter-inlinefoundry-newsletter-inline__inner
onboarding-timeline
Minimum required: steps — everything else is optional.
Structured onboarding sequence block with phase milestones.
sections:
- block: onboarding-timeline
id: onboarding-timeline-example
content:
steps:
- title: Step title
text: Step detail.
subtitle: Example value
title: Example title
design:
css_class: ''
Design options
| Field | Details |
|---|---|
variants | None (single style) |
css_class | extra CSS classes on outer section |
BEM classes
foundry-onboarding-timelinefoundry-onboarding-timeline__contentfoundry-onboarding-timeline__innerfoundry-onboarding-timeline__itemfoundry-onboarding-timeline__listfoundry-onboarding-timeline__numberfoundry-onboarding-timeline__title
page-list
Minimum required: section — everything else is optional.
Generic content listing block for section pages with card/list/compact modes.
sections:
- block: page-list
id: page-list-example
content:
limit: 6
section: blog
sort: date
text: Example supporting text.
title: Example title
design:
view: default
columns: '3'
show_date: true
show_summary: true
show_image: true
css_class: ''
Design options
| Field | Details |
|---|---|
variants | cards, list, compact |
view | cards | list | compact — listing layout mode |
columns | 2 | 3 — grid columns for cards mode |
show_date | true | false — show publish date |
show_summary | true | false — show excerpt text |
show_image | true | false — show thumbnails |
css_class | extra CSS classes on outer section |
BEM classes
foundry-page-listfoundry-page-list__actionsfoundry-page-list__bodyfoundry-page-list__cardfoundry-page-list__compactfoundry-page-list__compact-itemfoundry-page-list__emptyfoundry-page-list__gridfoundry-page-list__imagefoundry-page-list__image-linkfoundry-page-list__innerfoundry-page-list__item-titlefoundry-page-list__listfoundry-page-list__list-itemfoundry-page-list__list-layoutfoundry-page-list__metafoundry-page-list__subtitlefoundry-page-list__summaryfoundry-page-list__title
post-hero
Minimum required: title — everything else is optional.
Article-oriented hero with metadata, author context, and optional featured image.
sections:
- block: post-hero
id: post-hero-example
content:
author_image: "/images/example.jpg"
author_name: Author Name
author_role: Example value
category: Example Group
date: '2026-02-22'
image: "/images/example.jpg"
image_alt: Descriptive alt text
read_time: 5 min read
tags:
- compliance
- operations
text: Example supporting text.
title: Example title
design:
variant: centered
css_class: ''
Design options
| Field | Details |
|---|---|
variants | centered, split, stacked |
variant | centered | split | stacked — article hero layout |
css_class | extra CSS classes on outer section |
BEM classes
foundry-post-herofoundry-post-hero__authorfoundry-post-hero__contentfoundry-post-hero__datefoundry-post-hero__imagefoundry-post-hero__innerfoundry-post-hero__mediafoundry-post-hero__metafoundry-post-hero__read-timefoundry-post-hero__splitfoundry-post-hero__standfirstfoundry-post-hero__tagsfoundry-post-hero__title
post-list
Minimum required: section — everything else is optional.
Enhanced blog list block with featured item support and richer card layouts.
sections:
- block: post-list
id: post-list-example
content:
cta:
text: Learn more
url: "/contact/"
featured_first: true
limit: 6
section: blog
sort: date
text: Example supporting text.
title: Example title
design:
view: default
columns: '3'
show_date: true
show_summary: true
show_image: true
show_category: true
css_class: ''
Design options
| Field | Details |
|---|---|
variants | cards, list, magazine |
view | cards | list | magazine — listing layout mode |
columns | 2 | 3 — grid columns for cards mode |
show_date | true | false — show publish date |
show_summary | true | false — show excerpt text |
show_image | true | false — show thumbnails |
show_category | true | false — show category badge |
css_class | extra CSS classes on outer section |
BEM classes
foundry-post-listfoundry-post-list__cardfoundry-post-list__ctafoundry-post-list__emptyfoundry-post-list__featuredfoundry-post-list__gridfoundry-post-list__innerfoundry-post-list__listfoundry-post-list__list-itemfoundry-post-list__magazinefoundry-post-list__magazine-itemfoundry-post-list__magazine-leadfoundry-post-list__magazine-stackfoundry-post-list__subtitlefoundry-post-list__title
pricing-comparison
Minimum required: plans — everything else is optional.
Pricing comparison matrix block across plans or competitors.
sections:
- block: pricing-comparison
id: pricing-comparison-example
content:
plans: Example value
subtitle: Example value
title: Example title
design:
css_class: ''
Design options
| Field | Details |
|---|---|
variants | None (single style) |
css_class | extra CSS classes on outer section |
BEM classes
foundry-pricing-comparisonfoundry-pricing-comparison__cellfoundry-pricing-comparison__innerfoundry-pricing-comparison__rowfoundry-pricing-comparison__tablefoundry-pricing-comparison__tierfoundry-pricing-comparison__title
pricing-tiers
Minimum required: tiers — everything else is optional.
Tiered pricing card block with features and emphasis controls.
sections:
- block: pricing-tiers
id: pricing-tiers-example
content:
tiers: Example value
title: Example title
design:
css_class: ''
Design options
| Field | Details |
|---|---|
variants | None (single style) |
css_class | extra CSS classes on outer section |
BEM classes
foundry-pricing-tiersfoundry-pricing-tiers__cardfoundry-pricing-tiers__featuresfoundry-pricing-tiers__gridfoundry-pricing-tiers__innerfoundry-pricing-tiers__pricefoundry-pricing-tiers__title
prose-panel
Minimum required: text — everything else is optional.
Contained prose block for narrative or explainer content.
sections:
- block: prose-panel
id: prose-panel-example
content:
text: Example supporting text.
title: Example title
design:
css_class: ''
Design options
| Field | Details |
|---|---|
variants | None (single style) |
css_class | extra CSS classes on outer section |
BEM classes
foundry-prose-panelfoundry-prose-panel__contentfoundry-prose-panel__inner
pullquote
Minimum required: quote — everything else is optional.
Editorial pull-quote emphasis block for long-form content.
sections:
- block: pullquote
id: pullquote-example
content:
author: Author Name
quote: A representative quote for this block.
role: Role or title
design:
variant: accent-bar
align: center
css_class: ''
Design options
| Field | Details |
|---|---|
variants | accent-bar, filled, oversized, minimal |
variant | accent-bar | filled | oversized | minimal — pullquote styling |
align | center | left — quote alignment |
css_class | extra CSS classes on outer section |
BEM classes
foundry-pullquotefoundry-pullquote__attributionfoundry-pullquote__boxfoundry-pullquote__innerfoundry-pullquote__quote
quote
Minimum required: quote — everything else is optional.
Standalone quotation block for prominent statements with attribution.
sections:
- block: quote
id: quote-example
content:
author: Author Name
image: "/images/example.jpg"
quote: A representative quote for this block.
role: Role or title
design:
variant: centered
css_class: ''
Design options
| Field | Details |
|---|---|
variants | centered, left, large |
variant | centered | left | large — quote presentation |
css_class | extra CSS classes on outer section |
BEM classes
foundry-quotefoundry-quote__author-textfoundry-quote__author-wrapfoundry-quote__figurefoundry-quote__innerfoundry-quote__markfoundry-quote__metafoundry-quote__text
related-posts
Minimum required: section — everything else is optional.
Related content recommendation block sourced from a section.
sections:
- block: related-posts
id: related-posts-example
content:
exclude_current: true
limit: 6
section: blog
title: Example title
design:
view: default
css_class: ''
Design options
| Field | Details |
|---|---|
variants | cards, compact |
view | cards | compact — related links layout |
css_class | extra CSS classes on outer section |
BEM classes
foundry-related-postsfoundry-related-posts__cardfoundry-related-posts__compactfoundry-related-posts__gridfoundry-related-posts__innerfoundry-related-posts__title
resource-downloads
Minimum required: resources — everything else is optional.
Download resource listing block with item metadata.
sections:
- block: resource-downloads
id: resource-downloads-example
content:
email_placeholder: Example value
form_action: "/api/submit"
form_title: Example value
privacy_note: No spam. Unsubscribe anytime.
resources: Example value
submit_text: Example value
subtitle: Example value
title: Example title
design:
css_class: ''
Legacy mode uses form_action.
Managed mode uses content.form and the standard Foundry Control public form API.
Design options
| Field | Details |
|---|---|
variants | None (single style) |
css_class | extra CSS classes on outer section |
BEM classes
foundry-resource-downloadsfoundry-resource-downloads__gridfoundry-resource-downloads__innerfoundry-resource-downloads__itemfoundry-resource-downloads__linkfoundry-resource-downloads__title
rich-text
Minimum required: text — everything else is optional.
Long-form prose block with editorial layout variants.
sections:
- block: rich-text
id: rich-text-example
content:
dropcap: true
text: Example supporting text.
design:
variant: centered
max_width: default
css_class: ''
Design options
| Field | Details |
|---|---|
variants | centered, wide, two-column, magazine |
variant | centered | wide | two-column | magazine — article layout |
max_width | prose | md | lg | xl | full — container width |
css_class | extra CSS classes on outer section |
BEM classes
foundry-rich-textfoundry-rich-text__bodyfoundry-rich-text__inner
search
Minimum required: none — everything else is optional. Static-site search interface powered by Pagefind with Foundry styling and graceful fallback.
sections:
- block: search
id: search-example
content:
eyebrow: Search
title: Search the site
text: Find pages, docs, and resources.
placeholder: Search...
loading_text: Loading search index...
empty_text: Start typing to search.
no_results_text: No matching results found.
unavailable_text: Search index unavailable.
design:
variant: default
show_images: true
show_sub_results: false
excerpt_length: 22
debounce: 250
css_class: ''
Design options
| Field | Details |
|---|---|
variants | default, minimal |
variant | default | minimal — search panel style |
show_images | true | false — include thumbnails in results |
show_sub_results | true | false — include sub-result snippets |
excerpt_length | number of words shown in result excerpt |
debounce | debounce in milliseconds before querying |
css_class | extra CSS classes on outer section |
BEM classes
foundry-searchfoundry-search__appfoundry-search__eyebrowfoundry-search__innerfoundry-search__mountfoundry-search__noscriptfoundry-search__panelfoundry-search__statusfoundry-search__textfoundry-search__title
Optional component tokens
Themes can skin the shared search UI without selector overrides by setting optional --foundry-search-* tokens. The most useful ones are:
--foundry-search-panel-bg--foundry-search-panel-shadow--foundry-search-input-border--foundry-search-input-bg--foundry-search-clear-border--foundry-search-clear-bg--foundry-search-card-radius--foundry-search-card-border--foundry-search-card-bg--foundry-search-card-shadow--foundry-search-card-hover-shadow--foundry-search-media-border--foundry-search-pill-bg--foundry-search-pill-color--foundry-search-title-hover--foundry-search-tag-bg--foundry-search-tag-color
All of these fall back to the global --foundry-* tokens if they are not set by a theme.
section-header
Minimum required: title — everything else is optional.
Reusable heading intro block used to start a section consistently.
sections:
- block: section-header
id: section-header-example
content:
cta:
text: Learn more
url: "/contact/"
eyebrow: Section label
text: Example supporting text.
title: Example title
design:
align: center
size: lg
css_class: ''
Design options
| Field | Details |
|---|---|
variants | None (single style) |
align | center | left — heading alignment |
size | sm | md | lg | xl — heading scale |
css_class | extra CSS classes on outer section |
BEM classes
foundry-section-headerfoundry-section-header__ctafoundry-section-header__eyebrowfoundry-section-header__innerfoundry-section-header__textfoundry-section-header__title
slideshow
Minimum required: slides — everything else is optional.
Auto-advancing slideshow/carousel with optional overlays and controls.
sections:
- block: slideshow
id: slideshow-example
content:
slides:
- src: "/images/slide-1.jpg"
alt: Slide image
title: Slide title
text: Slide copy
text: Example supporting text.
title: Example title
design:
variant: fade
aspect: '16:9'
autoplay: true
interval: 5000
show_dots: true
show_arrows: true
show_overlay: true
css_class: ''
Design options
| Field | Details |
|---|---|
variants | fade, slide, cards |
variant | fade | slide | cards — transition style |
aspect | 16:9 | 4:3 | 21:9 | auto — viewport ratio |
autoplay | true | false — auto-advance slides |
interval | milliseconds between slide advances (default: 5000) |
show_dots | true | false — dot navigation visibility |
show_arrows | true | false — arrow navigation visibility |
show_overlay | true | false — caption overlay visibility |
css_class | extra CSS classes on outer section |
BEM classes
foundry-slideshowfoundry-slideshow__arrowfoundry-slideshow__arrow--nextfoundry-slideshow__arrow--prevfoundry-slideshow__dotfoundry-slideshow__dotsfoundry-slideshow__emptyfoundry-slideshow__framesfoundry-slideshow__innerfoundry-slideshow__overlayfoundry-slideshow__slidefoundry-slideshow__stackfoundry-slideshow__subtitlefoundry-slideshow__titlefoundry-slideshow__trackfoundry-slideshow__viewport
social-share
Minimum required: platforms — everything else is optional.
Share controls for social and copy-link actions.
sections:
- block: social-share
id: social-share-example
content:
platforms:
- twitter
- linkedin
- email
title: Example title
design:
variant: buttons
css_class: ''
Design options
| Field | Details |
|---|---|
variants | buttons, icons, minimal |
variant | buttons | icons | minimal — share control style |
css_class | extra CSS classes on outer section |
BEM classes
foundry-social-sharefoundry-social-share__buttonfoundry-social-share__button--copyfoundry-social-share__innerfoundry-social-share__listfoundry-social-share__statusfoundry-social-share__title
stats-band
Minimum required: stats — everything else is optional.
Horizontal KPI/statistics band with palette variants.
sections:
- block: stats-band
id: stats-band-example
content:
stats:
- label: Metric
value: 95%
subtitle: Example value
title: Example title
design:
variant: dark
css_class: ''
Design options
| Field | Details |
|---|---|
variants | dark, light, brand |
variant | dark | light | brand — band palette |
css_class | extra CSS classes on outer section |
BEM classes
foundry-stats-bandfoundry-stats-band--brandfoundry-stats-band--darkfoundry-stats-band--lightfoundry-stats-band__gridfoundry-stats-band__innerfoundry-stats-band__itemfoundry-stats-band__labelfoundry-stats-band__subtitlefoundry-stats-band__titlefoundry-stats-band__value
stats-grid
Minimum required: stats — everything else is optional.
Grid-based statistics block for grouped numeric highlights.
sections:
- block: stats-grid
id: stats-grid-example
content:
stats:
- label: Metric
value: 95%
subtitle: Example value
title: Example title
design:
css_class: ''
Design options
| Field | Details |
|---|---|
variants | None (single style) |
css_class | extra CSS classes on outer section |
BEM classes
foundry-stats-gridfoundry-stats-grid__gridfoundry-stats-grid__innerfoundry-stats-grid__itemfoundry-stats-grid__labelfoundry-stats-grid__titlefoundry-stats-grid__value
steps
Minimum required: steps — everything else is optional.
Step-by-step process block with numbered or icon-based steps. Generated number badges and Step N footers automatically hide when a title already starts with the matching step number.
sections:
- block: steps
id: steps-example
content:
steps:
- title: Step title
text: Step detail.
subtitle: Example value
title: Example title
design:
variant: cards
columns: '3'
show_icons: true
show_marker: auto
show_meta: auto
css_class: ''
Design options
| Field | Details |
|---|---|
variants | cards, plain |
variant | cards | plain — step card styling |
columns | 2 | 3 | 4 — grid columns |
show_icons | true | false — use step icon instead of numbers |
show_marker | auto | true | false — control the generated badge; auto hides it when the title already includes the matching number |
show_meta | auto | true | false — control the generated Step N footer; auto hides it when the title already includes the matching number |
css_class | extra CSS classes on outer section |
BEM classes
foundry-stepsfoundry-steps__contentfoundry-steps__gridfoundry-steps__innerfoundry-steps__itemfoundry-steps__item-innerfoundry-steps__item-metafoundry-steps__item-textfoundry-steps__item-titlefoundry-steps__numberfoundry-steps__subtitlefoundry-steps__title
table-of-contents
Minimum required: (none) — everything else is optional. Manual or auto-generated anchor navigation block for long pages.
sections:
- block: table-of-contents
id: table-of-contents-example
content:
title: Example title
design:
variant: sidebar
depth: 3
numbered: true
mobile: compact
progress: true
sticky: true
css_class: ''
Sidebar mode now includes active-section tracking, completed-state styling hooks, a progress rail, and compact mobile behavior by default. The widget also respects the shared header offset so anchor jumps land below fixed headers.
Design options
| Field | Details |
|---|---|
variants | sidebar, inline, compact |
variant | sidebar | inline | compact — TOC container style |
depth | 2 | 3 — heading depth when auto-generating |
numbered | true | false — ordered list vs unordered list |
mobile | compact | expanded — compact sticky mobile toggle vs always-open list |
progress | true | false — show the scroll progress rail inside the widget |
sticky | true | false — keep the widget pinned on larger viewports |
css_class | extra CSS classes on outer section |
BEM classes
foundry-table-of-contentsfoundry-table-of-contents__autofoundry-table-of-contents__currentfoundry-table-of-contents__headfoundry-table-of-contents__innerfoundry-table-of-contents__itemfoundry-table-of-contents__linkfoundry-table-of-contents__listfoundry-table-of-contents__panelfoundry-table-of-contents__progressfoundry-table-of-contents__titlefoundry-table-of-contents__togglefoundry-table-of-contents__widget
tabs
Minimum required: tabs — everything else is optional.
Tabbed content block for switching between related panels.
sections:
- block: tabs
id: tabs-example
content:
tabs:
- label: Overview
text: Tab content.
title: Example title
design:
variant: underline
css_class: ''
Design options
| Field | Details |
|---|---|
variants | underline, pills, bordered |
variant | underline | pills | bordered — tab trigger style |
css_class | extra CSS classes on outer section |
BEM classes
foundry-tabsfoundry-tabs__controlsfoundry-tabs__emptyfoundry-tabs__innerfoundry-tabs__panelfoundry-tabs__panelsfoundry-tabs__tabfoundry-tabs__tablistfoundry-tabs__title
team-grid
Minimum required: members — everything else is optional.
Team member grid block with role and bio summaries.
sections:
- block: team-grid
id: team-grid-example
content:
members: Example value
subtitle: Example value
title: Example title
design:
css_class: ''
Design options
| Field | Details |
|---|---|
variants | None (single style) |
css_class | extra CSS classes on outer section |
BEM classes
foundry-team-gridfoundry-team-grid__cardfoundry-team-grid__gridfoundry-team-grid__innerfoundry-team-grid__namefoundry-team-grid__rolefoundry-team-grid__title
testimonials
Minimum required: testimonials — everything else is optional.
Static testimonial grid block for social proof.
sections:
- block: testimonials
id: testimonials-example
content:
subtitle: Example value
testimonials:
- quote: Strong result quote.
author: Client Name
rating: 5
title: Example title
design:
css_class: ''
Design options
| Field | Details |
|---|---|
variants | None (single style) |
css_class | extra CSS classes on outer section |
BEM classes
foundry-testimonialsfoundry-testimonials__authorfoundry-testimonials__gridfoundry-testimonials__innerfoundry-testimonials__itemfoundry-testimonials__quotefoundry-testimonials__title
testimonials-carousel
Minimum required: testimonials — everything else is optional.
Scrollable testimonial carousel for longer quote sets.
sections:
- block: testimonials-carousel
id: testimonials-carousel-example
content:
subtitle: Example value
testimonials:
- quote: Strong result quote.
author: Client Name
rating: 5
title: Example title
design:
css_class: ''
Design options
| Field | Details |
|---|---|
variants | None (single style) |
css_class | extra CSS classes on outer section |
BEM classes
foundry-testimonials-carouselfoundry-testimonials-carousel__authorfoundry-testimonials-carousel__iconfoundry-testimonials-carousel__icon-wrapfoundry-testimonials-carousel__innerfoundry-testimonials-carousel__itemfoundry-testimonials-carousel__metafoundry-testimonials-carousel__quotefoundry-testimonials-carousel__ratingfoundry-testimonials-carousel__rolefoundry-testimonials-carousel__subtitlefoundry-testimonials-carousel__titlefoundry-testimonials-carousel__track
timeline
Minimum required: events — everything else is optional.
Chronological timeline block for milestones and sequences.
sections:
- block: timeline
id: timeline-example
content:
events: Example value
subtitle: Example value
title: Example title
design:
css_class: ''
Design options
| Field | Details |
|---|---|
variants | None (single style) |
css_class | extra CSS classes on outer section |
BEM classes
foundry-timelinefoundry-timeline__contentfoundry-timeline__innerfoundry-timeline__itemfoundry-timeline__listfoundry-timeline__markerfoundry-timeline__title
topic-chip-nav
Minimum required: items — everything else is optional.
Topic chip navigation block for quick in-page or inter-page filtering.
sections:
- block: topic-chip-nav
id: topic-chip-nav-example
content:
items:
- title: Item title
text: Item description.
title: Example title
design:
css_class: ''
Design options
| Field | Details |
|---|---|
variants | None (single style) |
css_class | extra CSS classes on outer section |
BEM classes
foundry-topic-chip-navfoundry-topic-chip-nav__chipfoundry-topic-chip-nav__innerfoundry-topic-chip-nav__listfoundry-topic-chip-nav__title
trust-badges
Minimum required: items — everything else is optional.
Badge strip for compliance, trust, and credibility signals.
sections:
- block: trust-badges
id: trust-badges-example
content:
items:
- title: Item title
text: Item description.
title: Example title
design:
css_class: ''
Design options
| Field | Details |
|---|---|
variants | None (single style) |
css_class | extra CSS classes on outer section |
BEM classes
foundry-trust-badgesfoundry-trust-badges__gridfoundry-trust-badges__innerfoundry-trust-badges__itemfoundry-trust-badges__title
video-embed
Minimum required: url — everything else is optional.
Privacy-first video embed block supporting YouTube, Vimeo, and MP4.
sections:
- block: video-embed
id: video-embed-example
content:
caption: Optional caption text.
poster: "/images/example.jpg"
text: Example supporting text.
title: Example title
transcript: Transcript excerpt goes here.
url: https://example.com
design:
variant: standard
aspect: '16:9'
autoplay: true
css_class: ''
Design options
| Field | Details |
|---|---|
variants | standard, cinema, card |
variant | standard | cinema | card — video frame presentation |
aspect | 16:9 | 4:3 | 1:1 | 9:16 — embed ratio |
autoplay | true | false — autoplay for self-hosted video |
css_class | extra CSS classes on outer section |
BEM classes
foundry-video-embedfoundry-video-embed__captionfoundry-video-embed__emptyfoundry-video-embed__figurefoundry-video-embed__framefoundry-video-embed__iframefoundry-video-embed__innerfoundry-video-embed__playfoundry-video-embed__posterfoundry-video-embed__poster-placeholderfoundry-video-embed__shellfoundry-video-embed__subtitlefoundry-video-embed__titlefoundry-video-embed__transcript
video-hero
Minimum required: title, text — everything else is optional.
Hero block with video/media backdrop treatment.
sections:
- block: video-hero
id: video-hero-example
content:
bullets: Example value
eyebrow: Section label
image: "/images/example.jpg"
image_alt: Descriptive alt text
primary_action:
text: Learn more
url: "/contact/"
secondary_action:
text: Learn more
url: "/contact/"
text: Example supporting text.
title: Example title
video_caption: Example value
video_poster: Example value
video_url: Example value
design:
css_class: ''
Design options
| Field | Details |
|---|---|
variants | None (single style) |
css_class | extra CSS classes on outer section |
BEM classes
foundry-video-herofoundry-video-hero__actionsfoundry-video-hero__innerfoundry-video-hero__mediafoundry-video-hero__overlayfoundry-video-hero__textfoundry-video-hero__title
full-bleed-split
Minimum required: title, text — everything else is optional.
Cinematic editorial split layout with full-height media and structured narrative content.
sections:
- block: full-bleed-split
id: full-bleed-example
content:
eyebrow: The property
title: One house. Nothing held back.
text: A narrative section pairing full-bleed imagery with editorial copy.
items:
- Indoor hot tub porch
- Sauna and cold shower
image: /images/property-detail.jpg
image_alt: Property detail image
primary_action:
text: Explore spaces
url: /property/
design:
image_position: right
bg: light
parallax: true
parallax_speed: '0.2'
parallax_dir: '-1'
kenburns: true
kenburns_interval: '8000'
reveal: slide-left
css_class: ''
Design options
| Field | Details |
|---|---|
variants | (none) |
image_position | right | left — image column position |
min_height | 80vh | 100vh | 70vh — section minimum height |
bg | light | dark | stone | cream — section palette |
parallax | true | false — enable/disable image parallax |
parallax_speed | number string — parallax speed (default: 0.2) |
parallax_dir | 1 | -1 — parallax direction |
kenburns | true | false — enable/disable image Ken Burns |
kenburns_interval | milliseconds for multi-image crossfade |
reveal | slide-right | slide-left | fade-up | fade-in — text reveal style |
css_class | extra CSS classes on outer section |
BEM classes
foundry-full-bleed-split
motion-hero
Minimum required: title — everything else is optional.
Full-screen motion-forward hero showcasing reveal, parallax, and Ken Burns engines in one section.
sections:
- block: motion-hero
id: motion-hero-example
content:
eyebrow: Foundry motion toolkit
title: Scroll-native motion, zero dependencies.
text: Demonstrates layered parallax and optional Ken Burns image cycling.
background_images:
- /images/motion-hero-1.jpg
- /images/motion-hero-2.jpg
primary_action:
text: See live demos
url: /motion/
secondary_action:
text: View reference
url: /docs/
design:
parallax: true
parallax_back_speed: '0.25'
parallax_front_speed: '0.45'
parallax_front_dir: '-1'
kenburns: true
kenburns_interval: '6000'
show_badges: true
Design options
| Field | Details |
|---|---|
variants | (none) |
parallax | true | false — enable/disable parallax layers |
kenburns | true | false — enable/disable Ken Burns background cycling |
show_badges | true | false — show/hide engine badges |
parallax_back_speed | number string — background parallax speed (default: 0.25) |
parallax_front_speed | number string — foreground parallax speed (default: 0.45) |
parallax_front_dir | 1 | -1 — foreground parallax direction |
kenburns_interval | milliseconds between background image crossfades (default: 6000) |
BEM classes
foundry-motion-hero
property-cards
Minimum required: properties — everything else is optional.
Card grid for property/space highlights with optional featured card treatment.
sections:
- block: property-cards
id: property-cards-example
content:
eyebrow: Signature spaces
title: Rooms and amenities worth the stay.
text: Showcase interiors, wellness features, and outdoor living.
properties:
- name: Indoor hot tub porch
label: Wellness
description: Enclosed glass porch with all-season hot tub views.
image: /images/hot-tub.jpg
beds: 2 bedrooms + additional sleeping
size: 4 private acres
price: Extended stay from $X / month
url: /property/
featured: true
- name: Sauna suite
label: Recovery
description: Sauna, full shower, and cold bucket ritual.
image: /images/sauna.jpg
url: /property/
design:
columns: '3'
variant: cards
item_reveal: zoom-in
css_class: ''
Design options
| Field | Details |
|---|---|
variants | cards, editorial |
variant | cards | editorial — listing presentation |
columns | 2 | 3 — grid columns |
item_reveal | fade-up | zoom-in | fade-in — per-card reveal animation |
css_class | extra CSS classes on outer section |
BEM classes
foundry-property-cardsfoundry-property-cards__innerfoundry-property-cards__eyebrowfoundry-property-cards__titlefoundry-property-cards__textfoundry-property-cards__grid
property-hero
Minimum required: title — everything else is optional.
Cinematic property hero with optional video background, Ken Burns imagery, and estate stats strip.
sections:
- block: property-hero
id: property-hero-example
content:
eyebrow: Back Mountain · Pennsylvania
title: Away from the noise. Everything you need.
subtitle: First Light
text: A private house on four acres with indoor hot tub and sauna suite.
images:
- /images/hero-1.jpg
- /images/hero-2.jpg
- /images/hero-3.jpg
primary_action:
text: Explore First Light
url: /property/
secondary_action:
text: Plan your stay
url: /inquire/
stat_1_value: 4 Acres
stat_1_label: Private setting
stat_2_value: 2 Weeks+
stat_2_label: Minimum stay
stat_3_value: 8-10
stat_3_label: Guests
design:
overlay: deep
parallax: true
parallax_speed: '0.35'
parallax_dir: '1'
kenburns: true
kenburns_interval: '5000'
text_align: left
min_height: 100vh
show_scroll: true
Design options
| Field | Details |
|---|---|
variants | (none) |
overlay | dark | light | deep | warm — hero overlay treatment |
parallax | true | false — enable/disable background parallax |
parallax_speed | number string — parallax speed (default: 0.35) |
parallax_dir | 1 | -1 — parallax direction |
kenburns | true | false — enable/disable Ken Burns motion |
kenburns_interval | milliseconds for multi-image crossfade (default: 6000) |
text_align | left | center — content alignment |
min_height | 100vh | 80vh | 70vh — section minimum height |
show_scroll | true | false — show/hide scroll indicator |
BEM classes
foundry-property-herofoundry-property-hero__scroll
Creating a new block
- Copy
layouts/partials/blocks/_template.htmltolayouts/partials/blocks/[block-name].html. - Replace placeholders and implement the block using standard context extraction and BEM classes.
- Register the block in
data/foundry/block-registry.yaml. - Document variants/design fields in
data/foundry/block-options.yaml. - Add usage examples in
/docs/BLOCKS.mdand your demo content. - If motion is needed, use
data-motion-*attributes and keep reduced-motion behavior safe.
Feature flags
Feature flags are resolved by foundry/helpers/feature-flag.html.
| Flag | Default(s) in templates | Blocks using it |
|---|---|---|
animations | true | stats-band |
experimentalHero | false | hero |
uiCards | true | case-studies, certification-badges, cta, faq-cta, features, icon-grid, illustration-panel, pricing-comparison, pricing-tiers, resource-downloads, stats-grid, steps, testimonials, testimonials-carousel, trust-badges |