Paired Hang ComparePRO

Works hung two to a bay on staggered ruled cards, opening a viewer that can hold a second work beside the first: the frame splits, both pictures keep their own caption and the pair can be walked together.

Gallery20: Paired Hang Compare

Works hung two to a bay, each on its own rule with alternate columns dropped down the wall. The viewer can hold two at once: the next work slides in beside the open one and the pair share a caption row.

Upgrade to Pro

Pro blocks install through the shadcn CLI with your license key and ship their full source. Docs and live previews stay open to everyone, so you can read every block's details first.

Upgrade Now

Installation

Swap YOUR_EMAIL and YOUR_KEY for the email and license key on your account. Find your license key on your account page.

Radix flavor

bash
npx shadcn add "https://ui.beste.co/r/gallery20?email=YOUR_EMAIL&license_key=YOUR_KEY"

Base UI flavor

bash
npx shadcn add "https://ui.beste.co/r-base/gallery20?email=YOUR_EMAIL&license_key=YOUR_KEY"

This installs the block to components/beste/block/gallery20.tsx plus the badge7 eyebrow it uses.

Quick start

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

tsx
import { Gallery20, gallery20Demo } from "@/components/beste/block/gallery20";

export default function Page() {
  return <Gallery20 {...gallery20Demo} />;
}

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

tsx
import { Gallery20 } from "@/components/beste/block/gallery20";

export default function Page() {
  return (
    <Gallery20
      badge={{ label: "Hung in pairs" }}
      heading="Works that were made to be argued with each other."
      description="Open any frame, then hold the next one beside it."
      works={[
        {
          src: "/pairs/alphabet.jpg",
          alt: "Letterpress work",
          title: "Alphabet for a Quiet Room",
          artist: "Hélène Marchal",
          year: "2025",
          medium: "Letterpress on rag paper",
        },
        {
          src: "/pairs/sheets.jpg",
          alt: "Specimen sheets",
          title: "Sheets, Before Binding",
          artist: "Hélène Marchal",
          year: "2025",
          medium: "Ink on uncoated stock",
        },
      ]}
      labels={{
        openLabel: "Open this work",
        closeLabel: "Close the pair",
        previousLabel: "Previous work",
        nextLabel: "Next work",
        compareLabel: "Hold the next work beside it",
        compareTitle: "Held beside",
        counterSeparator: "of",
      }}
    />
  );
}

Props

PropTypeDefaultDescription
badge{ label: string }Eyebrow label rendered as a Badge7
headingstringSection heading in the left header column
descriptionstringSupporting paragraph in the right header column
worksWork[][]Works on the wall, in hanging order
labelsGallery20Labels{}Fixed strings that are not content: viewer controls, the compare labels and the counter separator
lightboxbooleantrueRender the built-in viewer; set false to leave the frames static
classNamestringExtra classes for the outer <section>
ts
type Work = {
  src: string;
  alt: string;
  title: string;
  artist: string;
  year: string;
  medium: string;
};

type Gallery20Labels = {
  openLabel?: string;
  closeLabel?: string;
  previousLabel?: string;
  nextLabel?: string;
  compareLabel?: string;
  compareTitle?: string;
  counterSeparator?: string;
};

Behavior notes

More Gallery blocks

View all Gallery
PRO

gallery7

Counter Scrolling Image Bands

Two full-bleed image tracks scrolling in opposite directions under a centered statement, pausing together on hover, where any frame opens a framed viewer: the picture sits in a mount on a scrim with its caption, position and controls beneath it.

PRO

gallery12

Exhibition Wall Hang

Works of different sizes hung on one centre line inside a matted wall panel, each with its own label, opening a viewer that shows the piece in a mount beside a museum wall label of medium, dimensions and year.

PRO

gallery13

Catalogue Index Plates

Printed-catalogue layout pairing a numbered index of works with a sticky matted plate and its note, where an expand seal opens the plate alone on a dark ground with only its number and the arrows.

PRO

gallery22

Archive Record Cards

Text-first archive index of reference, thumbnail, title and year, opening a record card with two sides: the work on the front and the registrar's acquisition, condition and storage notes on the back.

PRO

gallery23

Wall Scale Viewer

Works listed with the sizes they are printed at, opening a viewer that hangs the piece in a photographed room and scales it as you switch size pills, so the dimensions stop being an abstraction.

PRO

gallery9

Zoomable Justified Gallery

Justified rows of frames that grow to fill every line, opening a viewer whose picture doubles as the zoom control: clicking switches between fitting the screen and filling it, with the caption and controls on one closing rule.