A full-width dark closing band with a light display heading, a paragraph, two actions, and three reassurances sitting under a hairline rule.
A full-width dark closing band with a light display heading, a paragraph, two actions and three reassurances sitting under a hairline rule.
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.
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
npx shadcn add "https://ui.beste.co/r/cta82?email=YOUR_EMAIL&license_key=YOUR_KEY"Base UI flavor
npx shadcn add "https://ui.beste.co/r-base/cta82?email=YOUR_EMAIL&license_key=YOUR_KEY"This installs the block to components/beste/block/cta82.tsx plus the badge23 and button21 components it uses for the eyebrow and the actions.
The installed file exports cta82Demo alongside the block: the exact props behind the preview above. Spread it to get a working call to action in one line.
import { Cta82, cta82Demo } from "@/components/beste/block/cta82";
export default function Page() {
return <Cta82 {...cta82Demo} />;
}Then replace the demo with your own props. Written out, a trimmed setup looks like this:
import { Cta82 } from "@/components/beste/block/cta82";
export default function Page() {
return (
<Cta82
badge={{ label: "Ready when you are" }}
heading="Give your team back the hour they lose every morning"
description="Bring one clinic across and keep the rest exactly as they are."
buttons={[
{ label: "Book a demo", href: "/demo" },
{ label: "Read the migration guide", href: "/docs/migration" },
]}
assurances={[
{
title: "No implementation fee",
description: "Migration, mapping, and the first go-live are part of the subscription.",
},
{
title: "Cancel at any point",
description: "Monthly terms, no notice period, and a full export whenever you ask.",
},
{
title: "A named person",
description: "The same engineer stays on your account through the switch and after it.",
},
]}
/>
);
}| Prop | Type | Default | Description |
|---|---|---|---|
badge | { label: string } | – | Eyebrow above the heading, retoned for the dark surface |
heading | string | – | Section heading, capped at max-w-3xl |
description | string | – | Supporting paragraph, capped at max-w-xl |
buttons | ActionLink[] | [] | Actions in source order, first solid and the rest outlined |
assurances | Assurance[] | [] | Reassurance columns under the hairline |
className | string | – | Extra classes for the outer section |
type ActionLink = {
label: string;
href: string;
};
type Assurance = {
title: string;
description: string;
};bg-foreground, so every text token inside is a fixed background value rather than an adaptive one. Swapping in text-foreground anywhere here would make the text vanish against the band.Badge23 is retoned inline with border-background/30 text-background/70, since the component's own tones assume a light surface.primary, later ones are outline plus an extra border-background/30 so the outline reads against the dark panel. The ActionLink type deliberately has no tone field.border-background/20, not border-border. On an inverted surface the standard border token is close to invisible.mt-16, then md:mt-24), which is what keeps the reassurances reading as a footer to the offer rather than as a second feature row.max-w-3xl and left-aligned while the assurances run the full container width, so the band has a clear reading order rather than one centered mass.cta79
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.
cta84
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.
cta74
A centered call to action with an eyebrow pill, a large light heading, a short paragraph, and two accent buttons on a clean surface.
cta72
A monochrome newsletter CTA band pairing an oversized statement with an inline email-capture form and a reassurance note.