Centered flexbox grid of company/product logos with grayscale hover effects. Excellent for customer logos, integrations, or partnerships showcase.
A centered, flex-wrapped row of customer or partner logos with a grayscale-to-color hover reveal, framed by an optional badge/heading/description header and a single CTA row underneath.
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/feature135"Base UI flavor
npx shadcn add "https://ui.beste.co/r-base/feature135"This installs the block to components/beste/block/feature135.tsx and the badge and button shadcn/ui primitives it depends on.
The installed file exports feature135Demo alongside the block: the exact props behind the preview above. Spread it to get a working logo grid in one line.
import { Feature135, feature135Demo } from "@/components/beste/block/feature135";
export default function Page() {
return <Feature135 {...feature135Demo} />;
}Then replace the demo with your own props. Written out, the same setup looks like this:
import { Feature135 } from "@/components/beste/block/feature135";
export default function Page() {
return (
<Feature135
badge={{ label: "Integrations", variant: "secondary" }}
heading="Works with your stack"
description="Connect with the tools you already use."
logos={[
{ name: "Acme", logo: "https://example.com/logos/acme.svg" },
{ name: "Northwind", logo: "https://example.com/logos/northwind.svg" },
{ name: "Globex", logo: "https://example.com/logos/globex.svg" },
]}
buttons={[{ label: "View all integrations", href: "https://beste.co" }]}
/>
);
}| 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 |
logos | LogoItem[] | [] | Logos rendered in the centered row |
buttons | ButtonItem[] | [] | Optional CTA row below the logos |
className | string | – | Extra classes for the outer <section> |
type LogoItem = { name: string; logo: string };
type ButtonItem = {
label: string;
href?: string;
variant?: "default" | "secondary" | "outline" | "ghost" | "link" | "destructive";
};h-10 w-24 box at opacity-50 grayscale; hovering an individual logo transitions only that one to opacity-100 grayscale-0, while the rest stay dimmed.flex flex-wrap items-center justify-center rather than a CSS grid, so row length and wrapping follow the container width and the number of logos, not a fixed column count.buttons is non-empty.href on a button falls back to "#" when omitted.feature139
Centered grid of 6 icon buttons with circular backgrounds and labels. Perfect for tool navigation, quick action buttons, or feature access menu.
feature107
3-column grid of centered feature cards with large icons and brief descriptions. Perfect for capability highlights, service features, or platform offerings.
feature160
4-column grid of feature icons with titles and descriptions below. Perfect for capability highlights, feature icons, or simple feature grid.
feature26
Six-card grid with icons in rounded containers that animate on hover, plus titles and descriptions. Perfect for wellness platforms, health apps, or service benefit showcases.
feature3
Centered header, three-column grid of capability cards, and an optional CTA with bottom text. Each card leads with a Lucide icon.
feature196
Three-column grid of clickable feature cards. Each card has a top-left icon, top-right diagonal arrow, title, and description. Cards lift on hover with a configurable accent color (emerald, primary, foreground, rose, blue, amber, violet, sky, orange, teal). Two-tone heading splits a primary phrase from a colored highlight.