Key features that make us different.
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.
feature118
Responsive grid of technology/tool badges with icons in bordered pills. Perfect for tech stack display, tools used, or integration showcase.
feature160
4-column grid of feature icons with titles and descriptions below. Perfect for capability highlights, feature icons, or simple feature grid.