Brand logo cards with product counts and hover effects linking to brand pages. Perfect for multi-brand stores and brand discovery.
Brand-discovery grid for multi-brand storefronts: grayscale logo tiles that turn full color on hover, each linking out to its brand page with an optional product count beneath the name.
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/ecommerce32"Base UI flavor
npx shadcn add "https://ui.beste.co/r-base/ecommerce32"This installs the block to components/beste/block/ecommerce32.tsx and the Badge shadcn/ui primitive it uses.
The installed file exports ecommerce32Demo alongside the block: the exact props behind the preview above. Spread it to get a working brand grid in one line.
import { Ecommerce32, ecommerce32Demo } from "@/components/beste/block/ecommerce32";
export default function ShopPage() {
return <Ecommerce32 {...ecommerce32Demo} />;
}Then replace the demo with your own props. Written out, a trimmed setup looks like this:
import { Ecommerce32 } from "@/components/beste/block/ecommerce32";
export default function ShopPage() {
return (
<Ecommerce32
heading="Shop by Brand"
productCountLabel="products"
brands={[
{ name: "Nike", logo: "/logos/nike.png", href: "/brands/nike", productCount: 342 },
{ name: "Adidas", logo: "/logos/adidas.png", href: "/brands/adidas", productCount: 287 },
{ name: "Puma", logo: "/logos/puma.png", href: "/brands/puma", productCount: 198 },
]}
/>
);
}| Prop | Type | Default | Description |
|---|---|---|---|
badge | { label: string; variant?: "default" | "secondary" | "outline" } | – | Optional pill badge above the heading |
heading | string | – | Section heading |
description | string | – | Section intro text |
brands | Brand[] | [] | Brand tiles rendered in the grid |
productCountLabel | string | – | Trailing unit label appended after each brand's product count (e.g. "products") |
className | string | – | Extra classes for the outer <section> |
type Brand = {
name: string;
logo: string;
href?: string;
productCount?: number;
};w-[calc(50%-0.5rem)] on mobile, md:w-[calc(33.333%-0.75rem)], lg:w-[calc(16.666%-0.85rem)]) inside a flex flex-wrap container instead of a CSS grid, yielding 2, 3, and 6 columns at the three breakpoints.grayscale opacity-50 and animates to full color and opacity on hover via the named group group/ecommerce32-brand, the same "trusted-by" hover treatment used by logo-cloud sections elsewhere in the catalog.productCount only renders when both it and productCountLabel are supplied; either one missing hides the whole product-count line, not just the missing part.href falls back to href="#" rather than rendering as static, non-linked content.oud.pics, not Unsplash; swap in your own hosted brand marks. The image itself is only constrained by max-h-full object-contain inside a fixed h-12 box.ecommerce4
Product category browsing with image cards, product counts, and featured badges. Responsive grid layout with hover effects. Perfect for storefront navigation and collection showcases.
ecommerce1
Responsive product grid with ratings, sale badges, and add to cart buttons. Perfect for shop pages and product catalogs.
ecommerce28
Product cards with hover wishlist buttons, quick add to cart overlay, and star ratings. Perfect for featured sections and bestsellers.
ecommerce27
Category collection grid with overlay images, item counts, and shop now links. Perfect for homepage category navigation and collection pages.
ecommerce14
Product recommendations grid with images, prices, and add to cart buttons. Perfect for cross-selling and upselling on product pages.
ecommerce33
Featured collection card with supporting collection tiles, image overlays, and product counts. Perfect for homepage collection highlights.