Centered flexbox row of inline feature badges with icons. Perfect for quick feature list, key benefits, or inline feature highlights.
A centered, wrapping row of pill-shaped inline chips, each pairing a small icon with a short label, for a quick list of feature highlights beneath an optional section header and CTA row.
Free block
This block is free. No license or account is required: install it with the CLI and use it in unlimited projects.
Radix flavor
npx shadcn add "https://ui.beste.co/r/feature152"Base UI flavor
npx shadcn add "https://ui.beste.co/r-base/feature152"This installs the block to components/beste/block/feature152.tsx and the badge and button shadcn/ui primitives it depends on.
The installed file exports feature152Demo alongside the block: the exact props behind the preview above. Spread it to get a working pill row in one line.
import { Feature152, feature152Demo } from "@/components/beste/block/feature152";
export default function Page() {
return <Feature152 {...feature152Demo} />;
}Then replace the demo with your own props. Written out, the same setup looks like this:
import { Zap, Shield, Globe } from "lucide-react";
import { Feature152 } from "@/components/beste/block/feature152";
export default function Page() {
return (
<Feature152
badge={{ label: "Features", variant: "secondary" }}
heading="Built for speed"
description="Key features that make us different."
items={[
{ icon: <Zap className="size-4" />, label: "Lightning Fast" },
{ icon: <Shield className="size-4" />, label: "Secure" },
{ icon: <Globe className="size-4" />, label: "Global CDN" },
]}
/>
);
}| Prop | Type | Default | Description |
|---|---|---|---|
badge | { label: string; variant?: "default" | "secondary" | "outline" } | – | Optional eyebrow badge above the heading |
heading | string | – | Section heading |
description | string | – | Section intro text |
items | FeatureItem[] | [] | Pill chips rendered in the row |
buttons | ButtonItem[] | [] | Optional CTA row below the pills |
className | string | – | Extra classes for the outer <section> |
type FeatureItem = { icon?: React.ReactNode; label: string };
type ButtonItem = {
label: string;
href?: string;
variant?: "default" | "secondary" | "outline" | "ghost" | "link" | "destructive";
};icon is typed React.ReactNode, not the usual LucideIcon component reference: the demo passes already-rendered elements (<Zap className="size-4" />) and the block just drops item.icon straight into a <span>, so callers control the icon's size and styling directly at the call site.null when items is empty.flex flex-wrap justify-center rather than a grid, so they wrap naturally with the number of items and available width instead of snapping to fixed columns.rounded-full border bg-card chip, not a shadcn Badge; the Badge import is used only for the header eyebrow.feature107
3-column grid of centered feature cards with large icons and brief descriptions. Perfect for capability highlights, service features, or platform offerings.
feature206
Centered service-style block with optional badge, large heading, description, primary CTA buttons, and a row of icon-prefixed items below. Each item icon defaults to a check, and the row collapses to a stack on mobile.
feature161
3-column grid of horizontal feature items with icon and text side by side. Clean layout for capability highlights and feature overviews.
feature139
Centered grid of 6 icon buttons with circular backgrounds and labels. Perfect for tool navigation, quick action buttons, or feature access menu.
feature72
Inline horizontal row of feature highlights with icons and vertical dividers between items. Perfect for trust signals, key benefits, or compact feature callouts.
feature160
4-column grid of feature icons with titles and descriptions below. Perfect for capability highlights, feature icons, or simple feature grid.