Editorial Article Grid

A blog listing with an eyebrow over a hairline rule, a two-column heading, and three linked article cards with a hover-zoom image, a monospace category, a title, an excerpt, and byline.

PRO

Blog43: Editorial Article Grid

A blog listing section that stacks an optional eyebrow badge over a hairline top rule, a two-column band pairing a large light-weight heading on the left with a right-aligned muted description, and a three-column grid of linked article cards, each rendering a hover-zoom cover image, a monospace uppercase category, a title, an excerpt, and an author-and-date byline.

Upgrade to Pro

Pro blocks install through the shadcn CLI with your license key and ship their full source. Docs and live previews stay open to everyone, so you can read every block's details first.

Installation

Swap YOUR_EMAIL and YOUR_KEY for the email and license key on your account. Find your license key on your account page.

Radix flavor

bash
npx shadcn add "https://ui.beste.co/r/blog43?email=YOUR_EMAIL&license_key=YOUR_KEY"

Base UI flavor

bash
npx shadcn add "https://ui.beste.co/r-base/blog43?email=YOUR_EMAIL&license_key=YOUR_KEY"

This installs the block to components/beste/block/blog43.tsx, plus the badge23 beste component it uses to render the eyebrow badge.

Quick start

The installed file exports blog43Demo alongside the block: the exact props behind the preview above. Spread it to get a working article grid in one line.

tsx
import { Blog43, blog43Demo } from "@/components/beste/block/blog43";

export default function Page() {
  return <Blog43 {...blog43Demo} />;
}

Then replace the demo with your own props. Written out, a trimmed setup looks like this:

tsx
import { Blog43 } from "@/components/beste/block/blog43";

export default function Page() {
  return (
    <Blog43
      badge={{ label: "Field notes" }}
      heading="Ideas for running a calmer practice"
      description="Short, practical writing on scheduling and billing."
      items={[
        {
          image: { src: "/blog/no-shows.jpg", alt: "A tidy reception desk" },
          category: "Operations",
          title: "The five-minute habit that kills no-shows",
          excerpt: "A tiny change to how you confirm appointments does more than any reminder blast.",
          author: "Elena Rourke",
          date: "May 8",
          href: "/blog/no-shows",
        },
      ]}
    />
  );
}

Props

PropTypeDefaultDescription
badge{ label: string }Eyebrow badge rendered above the rule via Badge23; omitted entirely when absent
headingstringLeft-column section heading
descriptionstringRight-aligned muted supporting paragraph
itemsArticle[][]Article cards rendered in the grid
classNamestringExtra classes merged onto the outer <section>
ts
type Article = {
  image: { src: string; alt: string };
  category: string;
  title: string;
  excerpt: string;
  author: string;
  date: string;
  href: string;
};

Behavior notes

More Blog blocks

View all Blog
FREE

blog3

Card Grid with Authors

Three-column responsive grid of blog cards featuring author avatars, tag badges, and hover zoom effects. Clean card design with date and read time metadata.

PRO

blog14

Grid with Newsletter Card

Four-column grid mixing blog cards with an integrated newsletter signup card. Email input and subscribe button embedded in the layout.

FREE

blog4

Featured Hero with Grid

Large featured article with side-by-side image and content, followed by a three-column grid of secondary posts. Read more buttons and author details included.

PRO

blog27

Newspaper Editorial Style

Classic newspaper layout with serif fonts and bordered headline. Large main story on left, stacked secondary stories on right with dividers.

PRO

blog12

Masonry Pinterest Grid

Pinterest-style masonry layout with varying content heights. CSS columns create organic flow with cards of different summary lengths.

PRO

blog11

Compact Thumbnail List

Two-column compact blog list with small square thumbnails. Space-efficient design showing many posts at once with minimal metadata.