Horizontal banner call-to-action with heading and action buttons side by side. Perfect for inline conversion sections between content blocks.
Horizontal banner CTA meant to sit inline between content blocks: a bordered, muted card holding a badge, heading, and description on one side and a cluster of buttons on the other, stacking vertically on mobile.
Free block
This block is free. No license or account is required: install it with the CLI and use it in unlimited projects.
Radix flavor
npx shadcn add "https://ui.beste.co/r/cta11"Base UI flavor
npx shadcn add "https://ui.beste.co/r-base/cta11"This installs the block to components/beste/block/cta11.tsx and the Badge and Button shadcn/ui primitives it uses.
The installed file exports cta11Demo alongside the block: the exact props behind the preview above. Spread it to get a working banner in one line.
import { Cta11, cta11Demo } from "@/components/beste/block/cta11";
export default function Page() {
return <Cta11 {...cta11Demo} />;
}Then replace the demo with your own props. Written out, the same setup looks like this:
import { ArrowRight } from "lucide-react";
import { Cta11 } from "@/components/beste/block/cta11";
export default function Page() {
return (
<Cta11
badge={{ label: "New" }}
heading="Ship your first workflow today"
description="Set up automation in minutes, no code required."
buttons={[
{ label: "Get Started", href: "/signup", icon: <ArrowRight className="size-4" /> },
{ label: "Talk to Sales", href: "/contact", variant: "outline" },
]}
/>
);
}| Prop | Type | Default | Description |
|---|---|---|---|
badge | { label: string; variant?: "default" | "secondary" | "outline" } | – | Optional pill badge above the heading |
heading | string | – | Headline HTML; wrap a phrase in <strong> to color-highlight it |
description | string | – | Supporting text under the heading |
buttons | ButtonItem[] | [] | CTA buttons rendered on the trailing side of the banner |
className | string | – | Extra classes for the outer <section> |
type ButtonItem = {
label: string;
href?: string;
variant?: "default" | "secondary" | "outline" | "ghost" | "link" | "destructive";
icon?: React.ReactNode;
};rounded-md border bg-muted p-6 md:p-10), not a bare full-bleed section; content and buttons sit in a flex-col on mobile and switch to a flex-row with items-center from md up.ButtonItem.icon renders after the label inside the link ({button.label}{button.icon}), the opposite order from CTA blocks that lead with the icon.variant="default" when omitted from the item (not "secondary", unlike cta8), and sits with mb-3 above the heading.shrink-0, so it keeps its intrinsic width even as the content column grows.cta18
Full-width call-to-action with background image overlay, heading, and action buttons. Perfect for bold, visually striking conversion sections.
cta9
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.
cta34
Vertically stacked bordered sections with alternating content and a final call-to-action. Perfect for storytelling-driven conversion.
cta24
Asymmetric two-column layout with large heading on the left and description with buttons on the right. Perfect for editorial-style conversion sections.