Studio Booking Split CTAFREE

Closing call to action splitting a tall photo against an oversized heading, a short pitch, a pill CTA beside a plain email link, and a ruled two-column row stating reply time and next availability.

Cta78: Studio Booking Split CTA

Closing call to action that puts a tall photo against the pitch: a parenthetical eyebrow, an oversized heading, a short paragraph, a pill CTA beside a plain email link, then a ruled two-column row stating reply time and next availability so the ask carries its own terms.

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/cta78"

Base UI flavor

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

This installs the block to components/beste/block/cta78.tsx plus the badge7 eyebrow and button12 pill button it uses.

Quick start

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

tsx
import { Cta78, cta78Demo } from "@/components/beste/block/cta78";

export default function Page() {
  return <Cta78 {...cta78Demo} />;
}

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

tsx
import { Cta78 } from "@/components/beste/block/cta78";

export default function Page() {
  return (
    <Cta78
      badge={{ label: "Open commissions" }}
      heading="Bring the brief you keep rewriting."
      description="One hour, one room, and the version of the problem you have not written down yet."
      image={{ src: "/studio/meeting-room.jpg", alt: "Studio meeting room lit by a tall window" }}
      button={{ label: "Book a studio hour", href: "/contact" }}
      link={{ label: "Or send the brief by email", href: "mailto:studio@example.com" }}
      details={[
        { title: "First reply", value: "Within two days" },
        { title: "Next opening", value: "September" },
      ]}
      labels={{ note: "No deck, no paid discovery phase." }}
    />
  );
}

Props

PropTypeDefaultDescription
badge{ label: string }Eyebrow label rendered as a Badge7
headingstringPlain-text heading above the pitch
descriptionstringSupporting paragraph under the heading
image{ src: string; alt: string }Tall photo filling the left half
buttonActionButtonPrimary pill CTA, rendered as Button12
linkActionButtonSecondary underlined text link beside the pill
detailsDetailRow[][]Ruled key and value pairs under the actions
labelsCta78Labels{}Fixed strings that are not content: the closing note
classNamestringExtra classes for the outer <section>
ts
type ActionButton = {
  label: string;
  href: string;
};

type DetailRow = {
  title: string;
  value: string;
};

type Cta78Labels = {
  note?: string;
};

Behavior notes

More CTA blocks

View all CTA
PRO

cta9

Split Layout Newsletter CTA

Two-column call-to-action with decorative image on one side and feature list with action buttons on the other. Perfect for visually rich conversion sections.

PRO

cta86

Contact And Availability CTA

A closing call to action splitting a bordered container between a hairline contact table and an inverted dark column that floats a live card naming the person you will meet above the booking action.

PRO

cta24

Split Text CTA

Asymmetric two-column layout with large heading on the left and description with buttons on the right. Perfect for editorial-style conversion sections.

PRO

cta75

Split CTA With Thread

A split call to action pairing an eyebrow, light heading, paragraph, and two accent buttons with an image tile that floats a live team message thread.

PRO

cta84

Photo Band Story CTA

A closing call to action set on a photographic panel with a directional gradient, pairing an eyebrow badge, light heading, and two actions with a live customer quote card.

PRO

cta54

Split Video CTA

Two-column layout with content on the left and a looping video on the right. Features badge, heading, feature list, and action buttons alongside an embedded video panel.