Dark Contact BandPRO

Inverted closing panel on a solid dark surface: an oversized invitation on the left, a paragraph and outline pill CTA on the right, then a ruled row of linked email, phone and studio address.

Cta79: Dark Contact Band

Inverted closing panel on a solid dark surface: an oversized invitation on the left, a paragraph and an outline pill CTA on the right, then a ruled row of linked email, phone and studio address so the section works as the contact block too.

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

Base UI flavor

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

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

Quick start

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

tsx
import { Cta79, cta79Demo } from "@/components/beste/block/cta79";

export default function Page() {
  return <Cta79 {...cta79Demo} />;
}

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

tsx
import { Cta79 } from "@/components/beste/block/cta79";

export default function Page() {
  return (
    <Cta79
      badge={{ label: "Say it plainly" }}
      heading="Tell us the thing you would rather not put in a brief."
      description="The budget that is smaller than it should be, the deadline someone else agreed to."
      button={{ label: "Write to the studio", href: "/contact" }}
      details={[
        { title: "Email", value: "studio@example.com", href: "mailto:studio@example.com" },
        { title: "Phone", value: "+31 10 555 0148", href: "tel:+31105550148" },
      ]}
      labels={{ note: "Answered by a person, usually the one who would run your project." }}
    />
  );
}

Props

PropTypeDefaultDescription
badge{ label: string }Eyebrow label rendered as a Badge7, tinted for the dark surface
headingstringOversized invitation on the left
descriptionstringSupporting paragraph above the CTA
buttonActionButtonOutline pill CTA, rendered as Button12
detailsContactDetail[][]Ruled row of linked contact facts
labelsCta79Labels{}Fixed strings that are not content: the closing note
classNamestringExtra classes for the outer <section>
ts
type ActionButton = {
  label: string;
  href: string;
};

type ContactDetail = {
  title: string;
  value: string;
  href: string;
};

type Cta79Labels = {
  note?: string;
};

Behavior notes

More CTA blocks

View all CTA
PRO

cta82

Inverted Closing Band

A full-width dark closing band with a light display heading, a paragraph, two actions, and three reassurances sitting under a hairline rule.

PRO

cta64

Statement CTA

Bold full-width call to action on a dark panel with dual buttons.

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

cta72

Newsletter Letter Band

A monochrome newsletter CTA band pairing an oversized statement with an inline email-capture form and a reassurance note.

PRO

cta73

Closing CTA Panel

A closing call to action on a soft panel, pairing an eyebrow, light heading, paragraph, and two accent buttons with an image tile that floats a live agenda micro-asset.

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.