A full article layout with an oversized light title, an author row framed by hairlines, a wide lead image, prose sections with accent-bulleted lists, an accent-ruled pull quote, and a closing share row.
Full article layout: an eyebrow over an oversized light title, a lead paragraph, and an author row framed by hairlines, then a wide lead image above prose sections with accent-bulleted lists, an accent-ruled pull quote after the opening section, and a share row to close.
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.
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
npx shadcn add "https://ui.beste.co/r/post87?email=YOUR_EMAIL&license_key=YOUR_KEY"Base UI flavor
npx shadcn add "https://ui.beste.co/r-base/post87?email=YOUR_EMAIL&license_key=YOUR_KEY"This installs the block to components/beste/block/post87.tsx plus the badge23 and button21 components it uses for the eyebrow and the share actions.
The installed file exports post87Demo alongside the block: the exact props behind the preview above. Spread it to get a working article in one line.
import { Post87, post87Demo } from "@/components/beste/block/post87";
export default function ArticlePage() {
return <Post87 {...post87Demo} />;
}Then replace the demo with your own props. Written out, a trimmed setup looks like this:
import { Post87 } from "@/components/beste/block/post87";
export default function ArticlePage() {
return (
<Post87
badge={{ label: "Operations" }}
title="The eleven seconds that decide your Tuesday"
lead="Rebooking is the smallest task in a clinic and the one that sets the tone."
author={{
name: "Marcus Vale",
role: "Product, scheduling",
avatar: { src: "/images/marcus.jpg", alt: "Portrait of Marcus Vale" },
}}
meta="April 22, 2026 · 6 min read"
image={{ src: "/images/desk.jpg", alt: "A reception desk in soft light" }}
sections={[
{ paragraphs: ["We spent a month behind reception desks with a stopwatch."] },
{
heading: "What the stopwatch found",
paragraphs: ["Rebooking took two minutes forty when it needed a call back."],
bullets: ["Eleven seconds: one screen, one confirmation, done"],
},
]}
quote={{
text: "Nobody asks for faster software. They ask to stop apologising.",
attribution: "A practice manager in Utrecht",
}}
share={{
label: "Found this useful?",
links: [{ label: "Read the next one", href: "/blog" }],
}}
/>
);
}| Prop | Type | Default | Description |
|---|---|---|---|
badge | { label: string } | – | Topic eyebrow above the title, rendered via Badge23 |
title | string | – | Article title, rendered as the h1 |
lead | string | – | Standfirst under the title |
author | Author | – | Avatar, name, and role in the byline row |
meta | string | – | Date and reading time, set opposite the author |
image | { src: string; alt: string } | – | Wide lead image between the byline and the body |
sections | PostSection[] | [] | Body sections, each with an optional heading and bullets |
quote | PullQuote | – | Pull quote, placed after the first section |
share | Share | – | Closing row under a hairline |
className | string | – | Extra classes for the outer <section> |
type ActionLink = { label: string; href: string };
type Author = {
name: string;
role: string;
avatar: { src: string; alt: string };
};
type PostSection = {
heading?: string;
paragraphs: string[];
bullets?: string[];
};
type PullQuote = { text: string; attribution?: string };
type Share = { label: string; links?: ActionLink[] };sections so the intended opening comes first.h2. The outline stays correct either way under the title's h1.max-w-3xl while the lead image spans the full container width, which is what gives the article its wide-image, narrow-column rhythm.border-y), and it stacks the author above the meta line below sm rather than squeezing them onto one line.size-10 circle with the image absolutely filling it, so a portrait crop of any aspect ratio lands square without distorting.post3
Full-width article with gradient overlay hero image, featured badge, and complete metadata. Ideal for flagship content that deserves prominent visual presentation.
post6
Prominent author profile with large avatar display, followed by featured image below title. Best for thought leadership or expert opinion pieces.
post27
Newspaper-style layout with byline, serif typography, author bio sidebar, and trending articles list. Ideal for news or journalism.
post38
Article with featured video player, thumbnail preview, and watch time display. Ideal for video-first content with accompanying text.