blog posts grid cards content marketing blog posts articles grid cards content blog post grid section latest articles cards
Blog Grid Base
Fetch pattern JSON:
curl https://webspire.de/patterns/blog/base.json base.html
<section class="ws-blog bg-[var(--ws-blog-bg)] py-20">
<div class="mx-auto max-w-7xl px-6">
<div class="mx-auto max-w-2xl text-center">
<p class="text-sm font-semibold uppercase tracking-[0.18em] text-[var(--ws-blog-accent)]">Blog</p>
<h2 class="mt-3 text-balance text-3xl font-bold tracking-tight text-[var(--ws-blog-text)] sm:text-4xl">Latest from the blog</h2>
</div>
<div class="mt-12 grid gap-8 md:grid-cols-2 lg:grid-cols-3">
<article class="group">
<div class="aspect-[16/9] overflow-hidden rounded-xl bg-[var(--ws-blog-card-bg)]">
<div class="h-full w-full bg-gradient-to-br from-indigo-100 to-purple-100 transition group-hover:scale-105"></div>
</div>
<div class="mt-4">
<span class="inline-block rounded-full bg-indigo-100 px-2.5 py-0.5 text-xs font-medium text-indigo-700">Patterns</span>
<h3 class="mt-2 text-lg font-semibold text-[var(--ws-blog-text)] transition group-hover:text-[var(--ws-blog-accent)]">
<a href="#">Building a hero section family from scratch</a>
</h3>
<p class="mt-2 line-clamp-2 text-sm text-[var(--ws-blog-text-soft)]">Learn how to create a base hero and derive animated, split, and image variants using the family model.</p>
<div class="mt-4 flex items-center gap-3 text-xs text-[var(--ws-blog-text-muted)]">
<span>Mar 5, 2026</span>
<span aria-hidden="true">·</span>
<span>5 min read</span>
</div>
</div>
</article>
<article class="group">
<div class="aspect-[16/9] overflow-hidden rounded-xl bg-[var(--ws-blog-card-bg)]">
<div class="h-full w-full bg-gradient-to-br from-emerald-100 to-teal-100 transition group-hover:scale-105"></div>
</div>
<div class="mt-4">
<span class="inline-block rounded-full bg-emerald-100 px-2.5 py-0.5 text-xs font-medium text-emerald-700">CSS Effects</span>
<h3 class="mt-2 text-lg font-semibold text-[var(--ws-blog-text)] transition group-hover:text-[var(--ws-blog-accent)]">
<a href="#">Scroll-driven animations without JavaScript</a>
</h3>
<p class="mt-2 line-clamp-2 text-sm text-[var(--ws-blog-text-soft)]">Modern CSS scroll timelines replace Intersection Observer for reveal, parallax, and progress bar effects.</p>
<div class="mt-4 flex items-center gap-3 text-xs text-[var(--ws-blog-text-muted)]">
<span>Feb 28, 2026</span>
<span aria-hidden="true">·</span>
<span>4 min read</span>
</div>
</div>
</article>
<article class="group">
<div class="aspect-[16/9] overflow-hidden rounded-xl bg-[var(--ws-blog-card-bg)]">
<div class="h-full w-full bg-gradient-to-br from-amber-100 to-orange-100 transition group-hover:scale-105"></div>
</div>
<div class="mt-4">
<span class="inline-block rounded-full bg-amber-100 px-2.5 py-0.5 text-xs font-medium text-amber-700">Workflow</span>
<h3 class="mt-2 text-lg font-semibold text-[var(--ws-blog-text)] transition group-hover:text-[var(--ws-blog-accent)]">
<a href="#">Using the CLI to scaffold landing pages</a>
</h3>
<p class="mt-2 line-clamp-2 text-sm text-[var(--ws-blog-text-soft)]">Combine the Webspire CLI with AI agents to compose full landing pages from registry patterns in seconds.</p>
<div class="mt-4 flex items-center gap-3 text-xs text-[var(--ws-blog-text-muted)]">
<span>Feb 20, 2026</span>
<span aria-hidden="true">·</span>
<span>3 min read</span>
</div>
</div>
</article>
</div>
</div>
</section>
Details
Responsive Dark Mode Tailwind Only SSR Safe Copy & Paste
Stable Published
blogpostsgridcardscontentmarketing
Slots
| Name | Required | Description |
|---|---|---|
| heading | No | Section title. |
| posts | Yes | Array of blog post cards. |
Three-column blog card grid with category badges, hover image zoom, and post metadata. Responsive: 3 → 2 → 1 columns. Image areas use gradient placeholders — replace with actual images.