Linked Programme Cards

About this block

Linked Programme CardsPRO

Four cards on a muted fill, each one a whole link that inverts to ink on hover: a photograph drifting across the top, a serif name facing its arrow, the shape it takes, a paragraph and a detail line at the foot.

Showcase52: Linked Programme Cards

Four cards on a muted fill, each a whole link that inverts to ink on hover, with a photograph across the top.

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

Base UI flavor

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

This installs the block to components/beste/block/showcase52.tsx plus the button22 sliding-marker pill and the text1 word stagger it uses.

Quick start

The installed file exports showcase52Demo alongside the block: the exact props behind the preview above. Spread it to get a working linked Programme Cards in one line.

tsx
import { Showcase52, showcase52Demo } from "@/components/beste/block/showcase52";

export default function Page() {
  return <Showcase52 {...showcase52Demo} />;
}

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

tsx
import { Showcase52 } from "@/components/beste/block/showcase52";

export default function Page() {
  return (
    <Showcase52
      eyebrow="Programmes"
      heading="Four shapes the work can take."
      button={ label: "Compare them properly", href: "/programmes", tone: "outline" }
      programmes={[
        {
          name: "A season",
          shape: "Twelve weekly hours",
          description: "Long enough to get past the first version of the story.",
          detail: "690 for the season",
          href: "/programmes/season",
          image: { src: "/programmes/season.jpg", alt: "A row of chairs against a bright wall" },
        },
      ]}
    />
  );
}

Props

PropTypeDefaultDescription
eyebrowstringSmall-caps line above the heading
headingstringSection heading, rendered as an h2 through Text1
buttonActionButtonPill action beside the heading
programmesProgramme[][]Linked cards, two across from sm
classNamestringExtra classes for the outer <section>
ts
type Programme = {
  name: string;
  shape: string;
  description: string;
  detail?: string;
  href: string;
  image: Image;
};

type Image = { src: string; alt: string };

type ActionButton = {
  label: string;
  href: string;
  tone?: "primary" | "light" | "dark" | "outline";
};

Behavior notes

  • The card inverts from bg-muted to bg-foreground text-background on hover; the shape line and description follow through their own colour transitions so the whole card changes at once.
  • The arrow sits on the title's baseline rather than at the foot, so a long name and its destination stay on the same line.
  • detail is pushed to the foot by mt-auto, which lines up the prices across cards of different copy length.
  • The photograph is inside the card's rounded clip, so the inversion on hover reaches the image edge without a seam.
  • Each card owns its own scroll listener and drifts -8% to 8% against a 1.18 scale.
  • Photos clear from blur(24px) on decode, with a complete check for cached files.

More Showcase blocks

View all Showcase
PRO

showcase53

Linked Alternating Slabs

Full-width ruled rows that alternate the photograph left and right, each row a whole link carrying a large serif title, a paragraph and a meta line beside an arrow that lifts as the row tints on hover.

PRO

showcase50

Downloadable Resource Cards

Three resource cards, each led by a preview image and stamped with its format, holding the title, one line on what is inside, and a seal download button pinned to the bottom of the card.

PRO

showcase38

Sticky Showcase

A pinned product image beside a scrolling list of feature steps.

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

showcase51

Two Case Studies

Two case studies side by side under a serif heading that settles in word by word: each with a photograph drifting inside its frame, a small-caps client and sector line, a serif title, a summary, and a ruled foot pairing a serif result figure with a read link.

PRO

showcase34

Polyglot Code Comparison

Browser-chrome card pairing two minimal code panes — same logic in two languages (TypeScript and Python by default). Monochrome syntax with muted comments and language badges. Every label is editable; no media props required.