Catalogue Index Plates

(Catalogue)

Every work in the show, numbered as it was hung.

(The list)
Large printed letterforms laid out as a type specimen

Alphabet for a Quiet Room

Hélène Marchal · Letterpress on rag paper · 2025

(Catalogue note)

Printed in a single pass on a proofing press the artist rebuilt herself.

About this block

Catalogue Index PlatesPRO

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.

Gallery13: Catalogue Index Plates

A printed catalogue on a page: a numbered index on one side, the selected plate mounted and captioned on the other, and a viewer that shows the plate alone with nothing but its number and a way out.

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/gallery13?email=YOUR_EMAIL&license_key=YOUR_KEY"

Base UI flavor

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

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

Quick start

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

tsx
import { Gallery13, gallery13Demo } from "@/components/beste/block/gallery13";

export default function Page() {
  return <Gallery13 {...gallery13Demo} />;
}

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

tsx
import { Gallery13 } from "@/components/beste/block/gallery13";

export default function Page() {
  return (
    <Gallery13
      badge={{ label: "Catalogue" }}
      heading="Every work in the show, numbered as it was hung."
      entries={[
        {
          number: "01",
          src: "/catalogue/01.jpg",
          alt: "Letterpress work on rag paper",
          title: "Alphabet for a Quiet Room",
          artist: "Hélène Marchal",
          year: "2025",
          medium: "Letterpress on rag paper",
          note: "Printed in a single pass on a proofing press the artist rebuilt herself.",
        },
        {
          number: "02",
          src: "/catalogue/02.jpg",
          alt: "Folded paper work",
          title: "Fold, Unfolded",
          artist: "Marta Ekelund",
          year: "2024",
          medium: "Folded cotton paper",
          note: "One sheet, forty-one folds, no adhesive anywhere in the piece.",
        },
      ]}
      labels={{
        indexTitle: "The list",
        expandLabel: "See the plate full size",
        closeLabel: "Close the plate",
        previousLabel: "Previous plate",
        nextLabel: "Next plate",
        noteTitle: "Catalogue note",
      }}
    />
  );
}

Props

PropTypeDefaultDescription
badge{ label: string }–Eyebrow label rendered as a Badge7
headingstring–Section heading above the two columns
entriesCatalogueEntry[][]Catalogue entries, first one selected on mount
labelsGallery13Labels{}Fixed strings that are not content: the index title, the note title and the viewer controls
lightboxbooleantrueRender the built-in viewer; set false to leave the plate static
classNamestring–Extra classes for the outer <section>
ts
type CatalogueEntry = {
  number: string;
  src: string;
  alt: string;
  title: string;
  artist: string;
  year: string;
  medium: string;
  note: string;
};

type Gallery13Labels = {
  indexTitle?: string;
  expandLabel?: string;
  closeLabel?: string;
  previousLabel?: string;
  nextLabel?: string;
  noteTitle?: string;
};

Behavior notes

  • The index is a grid-cols-[3rem_1fr_auto] per row with tabular-nums on the number and the year, so both columns stay straight however long the titles are.
  • Selection is shown twice: the row's rule darkens from border-border to border-foreground and the title gains contrast, so it never depends on colour alone.
  • The plate column is md:sticky md:top-24 md:self-start, so it stays in view while a long index scrolls; self-start is the part that matters, because a stretched grid item cannot stick.
  • Setting lightbox={false} removes the expand control entirely, leaving a catalogue whose plate is only ever shown at page size.
  • The viewer shows the plate with no mount and no caption block: just the number, the title, a way out and two step controls, which is the point of this variant.
  • Stepping inside the viewer moves the page selection too, so closing it leaves you on the entry you finished at.
  • The catalogue note sits under a second rule with its own eyebrow, so it reads as an aside rather than part of the credit line.
  • Escape closes the plate and the arrow keys step through it, wrapping in both directions.

More Gallery blocks

View all Gallery
PRO

gallery29

Plate Grid Lightbox

PRO

gallery8

Photo Book Spread Viewer

PRO

gallery16

Artist Room Index

Get Pro access