Project Gallery Grid

Responsive three-column image gallery with hover zoom effects, captions, and optional clickable cards. Perfect for showcasing project portfolios or work samples.

FREE

Responsive photo grid for a portfolio or case-study page: up to three columns of image cards with an optional caption, each card zooming its image slightly on hover, and rendering as a real link whenever an href is supplied.

Free block

This block is free. No license or account is required: install it with the CLI and use it in unlimited projects.

Installation

Radix flavor

bash
npx shadcn add "https://ui.beste.co/r/showcase3"

Base UI flavor

bash
npx shadcn add "https://ui.beste.co/r-base/showcase3"

This installs the block to components/beste/block/showcase3.tsx and the badge shadcn/ui primitive it depends on.

Quick start

The installed file exports showcase3Demo alongside the block: the exact props behind the preview above. Spread it to get a working gallery in one line.

tsx
import { Showcase3, showcase3Demo } from "@/components/beste/block/showcase3";

export default function WorkPage() {
  return <Showcase3 {...showcase3Demo} />;
}

Then replace the demo with your own props. Written out, the same setup looks like this:

tsx
import { Showcase3 } from "@/components/beste/block/showcase3";

export default function WorkPage() {
  return (
    <Showcase3
      heading="See our work in action"
      description="Browse through our collection of successful projects."
      images={[
        {
          src: "https://images.unsplash.com/photo-1565768502719-571073a68b4c?w=500&fit=crop",
          alt: "Enterprise dashboard",
          caption: "Enterprise Dashboard",
          href: "https://beste.co",
        },
        {
          src: "https://images.unsplash.com/photo-1583265101492-bfe6ef35cef8?w=500&fit=crop",
          alt: "Mobile app",
          caption: "Mobile Application",
        },
      ]}
    />
  );
}

Props

PropTypeDefaultDescription
badge{ label: string; variant?: "default" | "secondary" | "outline" }Optional badge above the heading
headingstringSection heading
descriptionstringSection intro text
imagesGalleryItem[][]Grid tiles, in order
classNamestringExtra classes for the outer <section>
ts
type GalleryItem = {
  src: string;
  alt: string;
  caption?: string;
  href?: string;
};

Behavior notes

More Showcase blocks

View all Showcase
PRO

showcase42

Mosaic Frame Gallery

An asymmetric mosaic image gallery with mixed-span tiles and monospace frame captions.

PRO

showcase41

Editorial Project Index

A ruled, type-forward project index where each row reveals a floating thumbnail on hover.

PRO

showcase37

Showcase Scroller

Horizontally scrollable row of wide product showcase frames with captions.

PRO

showcase1

Interactive Hotspot Image

Full-width image showcase with clickable animated hotspots that reveal feature popovers with icons and descriptions. Perfect for product tours and interactive feature demonstrations.

PRO

showcase39

Tabbed Showcase

Tabbed product screenshots in a browser frame with captions.

PRO

showcase7

Screenshot with Testimonial Quote

Two-column section combining product image with large customer quote, author avatar, name, and role. Perfect for social proof sections alongside product visuals.