build69
build69  /  Components  /  Marketing Sections  /  Blog

Blog

v1.0.21Updated 19 Oct 2026

Blog / article listing section with cards, featured posts and sidebars. Copy-paste block; baked-in demo content (edit the JSX to customise).

Preview

Live · 13 stories
▸Why this is recommendedblogarticlespostsnews+4

Blog — grid.

Recommended for+14
  • ✓Blog index pages
  • ✓News / resources pages
  • ✓Marketing pages
Tags+6
blogarticlespostsnewscardsmarketingsectiongrid
Features+4
  • Grid, featured, list and with-sidebar layouts
  • Cover + title + excerpt + meta per post
  • posts / categories are props that default to [] - a blog nobody configured shows its heading and an empty line, never articles we invented (condo69 fb_bc8045e2 / fb_f8fba1de)
  • A card is a link only when its post carries an href; without one the title is plain text and the full-card click overlay is dropped. There were 14 hardwired dead anchors
  • Categories are links, filter buttons (onCategoryClick) or plain text - never a dead anchor
  • linkComponent routes every anchor (card titles, popular rows, category rows) through the host router (fb_bf7dc63a)
  • BlogWithSidebar hands the typed address to onSubscribe instead of discarding it
  • Every block renders for 0, 1, 2 and many posts - no empty grid, column or list
Not recommended for−2
  • ✕In-app feeds

Install

Ask your agent, or call the MCP tool directly. The resolved bundle is written into your project.

get_registry_item({ name: "Blog" })

Usage

import { BlogGrid } from '@/components/sections/blog';

<BlogGrid />

Tick variants in the left menu — each adds a tab with that variant’s real story source, the same code the preview above renders.

Props

PropTypeRequired
className

Optional wrapper class override

string—
labels

Override every built-in display string across the blog family (eyebrows, headings, subcopy, category and read-more chrome, sidebar headings, aria-labels) for i18n or white-labelling. Merged over DEFAULT_BLOG_LABELS.

Partial<BlogLabels>—
posts

The articles to render, each with its own href. Defaults to [] - the articles are the site own content, so an unconfigured section shows its heading plus labels.emptyPosts rather than demo articles with dead links. MCP feedback fb_bc8045e2 / fb_f8fba1de.

BlogPostItem[]—
categories

Category taxonomy for the BlogWithSidebar panel and the BlogCategoryStrip filter chips. Defaults to [] - the panel and the chip row are omitted entirely rather than rendered empty.

BlogCategory[]—
onCategoryClick

BlogWithSidebar only: makes a category row with no href a real type=button filter control and receives the category the visitor picked.

(category: BlogCategory) => void—
onSubscribe

BlogWithSidebar only: receives the address typed into the sidebar subscribe form. Without it the form still prevents the reload but the address goes nowhere.

(email: string) => void—
linkComponent

The host app link component for EVERY anchor these sections render - card titles, popular-post rows, category rows. Defaults to a plain anchor, which in a routed app reloads the whole document. MCP feedback fb_bf7dc63a.

BlogLinkComponent—

Related