Blog Feed

Blog post feed list

Marketing BlockBlog

Overview

Displays one featured post in a prominent two-column layout (image + text), followed by a three-column grid of secondary posts. Both sections share the same BlogPost type from BlogCardGrid.

Usage

import { BlogFeed } from "@leanicon/web-builder-library";

Default

Featured post with image on the left, three secondary posts below in a responsive grid.

Sharp corners

Set corners="sharp" to remove border-radius from all images.

Custom read-more label

Override the link text via readMoreLabel.

When posts is empty, only the featured hero section is rendered.

Without images

Posts render without an image when the image field is omitted. The featured post text spans the full width.

Without categories

Category badges are hidden when category is omitted from posts.

Without author avatars

When avatar is omitted, the AvatarFallback renders initials derived from the author name.

Dark mode

Sharp corners — dark mode

Combines corners="sharp" with colorScheme="dark".

Props

Prop

Type

Default

Description

featuredPost

BlogPost

—

The prominent hero post (required)

posts

BlogPost[]

—

Secondary posts shown in the grid (required)

readMoreLabel

string

"Read full article"

Text for the read-more link on every post

corners

"rounded" | "sharp"

"rounded"

Image border-radius style

colorScheme

"light" | "dark"

—

Force light or dark mode

className

string

—

Additional CSS classes on root

BlogPost

Prop

Type

Description

title

string

Post title — rendered as a link to href

excerpt

string

Short summary (used for a11y / SEO, not displayed)

image

ImageProps?

Optional hero image with src, alt, width, height

date

string

Formatted publication date

author

{ name: string; avatar?: ImageProps }

Author name and optional avatar

category

string?

Optional category badge

href

string

Link destination for the post

Notes

  • BlogPost is the same type used by BlogCardGrid — import from blog-card-grid.
  • When image is omitted from the featured post, the text column spans the full width.
  • Author initials are derived from the first letter of each word in the name (max 2 characters).
  • Dark mode: pass colorScheme="dark" or place inside a .dark ancestor.

Props

NameTypeDefaultRequiredDescription
featuredPostBlogPost—Yes
postsBlogPost[]—Yes
readMoreLabelstringRead full articleNo
cornersenumroundedNo
colorSchemeenum—No
classNamestring—No