Staaarter

Split CTA With Thread

A split call-to-action on a soft `bg-muted` panel: an eyebrow, light heading, paragraph, and two accent buttons sit beside an image tile. A small floating card overlaps the image, mocking a team message thread with a couple of chat bubbles, avatar initials, and short text.

By Staaarter Team
CTA
Docs
Live preview

Docs

Installation

A real shadcn registry command, not a copy-paste stand-in: it fetches this block plus its button, avatar-initials, media-slot dependencies and any missing npm packages, and installs them straight into your project.

npx shadcn add https://staaarter.com/r/split-cta-with-thread.json

Prefer not to use the CLI? Copy the source from the Code toggle above into src/components/blocks/cta/cta75.tsx instead.

Usage

The file also exports cta75Demo, the exact props behind the preview above. Spread it to get a working section in one line, then replace it with your own data.

import { Cta75, cta75Demo } from "@/components/blocks/cta/cta75";

export default function Page() {
  return <Cta75 {...cta75Demo} />;
}

Props

PropTypeDefaultDescription
eyebrowstring"Built for teams"Small pill label above the heading.
headingstring"Keep every thread in one place"Light-weight headline.
descriptionstringnoneShort supporting paragraph.
primaryLabelstring"Start free trial"Label for the primary button.
primaryHrefstring"#"Link target for the primary button.
secondaryLabelstring"Watch demo"Label for the secondary (outline) button.
secondaryHrefstring"#"Link target for the secondary button.
imageMediaSlotImagenoneImage shown in the tile beside the text column.
messagesThreadMessage[]noneUp to 3 chat messages shown in the floating thread card, each with a sender name and short text.
classNamestringnoneExtra classes for the outer section element.

Types

interface ThreadMessage {
  name: string;
  text: string;
}

Behavior notes

  • The floating thread card is a static, absolutely-positioned mock with fixed demo copy and avatar initials derived from name; it's not a live chat integration.
  • Both buttons are inert links (`render={<Link/>}`); no form submission or real navigation logic is wired up.