Content Block Components
Flexible layouts for text, images, features, and trust signals.
Image Right - Basic
Most common layout: text left, image right. Shows bullet list feature (legacy).
Image Right Layout
The most common content block layout with text on the left and a supporting image on the right.
- Feature one
- Feature two
- Feature three
{
"component": "content-block",
"variant": "image-right",
"data": {
"heading": "Image Right Layout",
"body": "The most common content block layout with text on the left and a supporting image on the right.",
"image": "https://images.unsplash.com/photo-1521737604893-d14cc237f11d?auto=format&fit=crop&w=1400&q=80",
"features": ["Feature one", "Feature two", "Feature three"],
"buttons": [{ "text": "Learn More", "url": "#", "style": "primary" }]
}
}
<section class="py-4">
<div class="container">
<div class="row align-items-center g-4">
<div class="col-lg-6">
<h3>Image Right Layout</h3>
<p>The most common content block layout...</p>
<ul>
<li>Feature one</li>
<li>Feature two</li>
</ul>
<a href="#" class="btn btn-primary">Learn More</a>
</div>
<div class="col-lg-6">
<img src="..." alt="..." class="img-fluid rounded shadow-sm">
</div>
</div>
</div>
</section>
Image Top - Full Width
Image spans full width above text content. Great for showcasing products or visuals.
Full-Width Visual Impact
Use short copy so narrow previews stay clean.
{
"component": "content-block",
"variant": "image-top",
"data": {
"heading": "Full-Width Visual Impact",
"lead": "Use short copy so narrow previews stay clean.",
"image": "https://images.unsplash.com/photo-1500530855697-b586d89ba3ee?auto=format&fit=crop&w=2000&q=80"
}
}
<section class="py-4">
<!-- Full-width image: no rounded corners -->
<div class="container-fluid px-0">
<img src="..." alt="..." class="w-100" style="object-fit: cover; border-radius: 0; max-height: 520px; display:block;">
</div>
<div class="container mt-4">
<div class="row">
<div class="col-12 col-lg-10 mx-auto text-center">
<h3>Full-Width Visual Impact</h3>
<p class="lead">Use short copy so layout stays clean.</p>
</div>
</div>
</div>
</section>
Text Only - With Icon Features
No image. Features only (no buttons). Icons are muted by default for a subtle look.
Why teams choose PageJSON
Keep items similar length to reduce ragged wrapping.
{
"component": "content-block",
"variant": "text-only",
"data": {
"heading": "Why teams choose PageJSON",
"body": "Keep items similar length to reduce ragged wrapping.",
"contentFeatures": [
{ "icon": "fa-check", "text": "Constrained schema keeps output predictable" },
{ "icon": "fa-check", "text": "Tokens standardize spacing and typography" },
{ "icon": "fa-check", "text": "Components render cleanly on small screens" },
{ "icon": "fa-check", "text": "Design stays consistent across pages" }
]
}
}
<!-- Features only: keep items short + similar length -->
<div class="features-list features-left features-simple">
<div class="feature-item feature-simple">
<div class="feature-icon icon-1x"><i class="fa-solid fa-check"></i></div>
<div class="feature-content"><div class="feature-text">Constrained schema keeps output predictable</div></div>
</div>
<!-- More features... -->
</div>
Text Only - Rich Features (Icon Discs)
Rich features (icon + title + short text). Optional discs: set iconBg (or iconClass: bg-*) — applies to icons > 1x.
Make icons feel intentional
Use subtle discs for rich features — not for compact checklists.
{
"component": "content-block",
"variant": "text-only",
"data": {
"heading": "Make icons feel intentional",
"lead": "Use subtle discs for rich features — not for compact checklists.",
"contentFeatures": [
{ "icon": "fa-wand-magic-sparkles", "title": "Polished", "text": "Small disc adds structure without noise.", "iconBg": "primary" },
{ "icon": "fa-shield-halved", "title": "Trustworthy", "text": "Color supports meaning, not decoration.", "iconBg": "success" },
{ "icon": "fa-layer-group", "title": "Consistent", "text": "Same rules across heroes, blocks, CTAs.", "iconBg": "warning" },
{ "icon": "fa-gauge-high", "title": "Responsive", "text": "Grid stays balanced at common widths.", "iconBg": "info" }
]
}
}
<!-- Rich features: icon + title + short text -->
<!-- Disc shorthand: set iconClass: "bg-success" (or iconBg: "success") -->
<div class="features-list features-center features-rich">
<div class="feature-item feature-rich">
<div class="feature-icon icon-1-5x icon-disc" data-disc="success">
<i class="fa-solid fa-shield-halved"></i>
</div>
<div class="feature-content">
<div class="feature-title">Trustworthy</div>
<div class="feature-text">Color supports meaning, not decoration.</div>
</div>
</div>
</div>
Text Only - With Trust Signals
No image. Trust only (no buttons). Use short signals so they wrap cleanly.
Trusted signals, kept simple
Three short items are usually enough.
{
"component": "content-block",
"variant": "text-only",
"data": {
"heading": "Trusted signals, kept simple",
"lead": "Three short items are usually enough.",
"trustSignals": [
{ "text": "SEO-ready markup included" },
{ "text": "Responsive by default" },
{ "text": "Bootstrap 5 compatible" }
]
}
}
<!-- Trust only: short text + default green check icons -->
<div class="trust-signals">
<div class="trust-signals-list align-center">
<div class="trust-signal"><i class="fa-solid fa-check-circle"></i><span>SEO-ready markup included</span></div>
<div class="trust-signal"><i class="fa-solid fa-check-circle"></i><span>Responsive by default</span></div>
<div class="trust-signal"><i class="fa-solid fa-check-circle"></i><span>Bootstrap 5 compatible</span></div>
</div>
</div>