Staaarter

FAQ Inline CTA

A conversion section that pairs a short expandable FAQ list with an always-visible call-to-action banner underneath. Perfect for addressing objections right before someone decides to convert.

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 dependencies and any missing npm packages, and installs them straight into your project.

npx shadcn add https://staaarter.com/r/faq-inline-cta.json

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

Usage

The file also exports cta30Demo, 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 { Cta30, cta30Demo } from "@/components/blocks/cta/cta30";

export default function Page() {
  return <Cta30 {...cta30Demo} />;
}

Props

PropTypeDefaultDescription
eyebrowstring"FAQ"Small label above the heading.
headingstring"Still have questions?"Main heading.
descriptionstring"Here's what people usually ask..."Supporting copy under the heading.
faqsFaqItem[]noneList of question/answer pairs. Required.
primaryLabelstring"Get started"Primary call-to-action button label.
primaryHrefstring"#"Link target for the primary button.
secondaryLabelstring"Contact support"Secondary button label.
secondaryHrefstring"#"Link target for the secondary button.
classNamestringnoneExtra classes for the outer section element.

Types

interface FaqItem {
  question: string;
  answer: string;
}

Behavior notes

  • The FAQ list has real expand/collapse behavior: a useState<number | null> tracks which single question index is open, and clicking a question's button toggles it open or closed (only one question is open at a time).
  • The inline call-to-action banner below the FAQ list is always visible and not gated behind expanding any question.
  • Both call-to-action buttons render as real Next.js Links via the button's render prop, but default to "#" and don't perform a real signup or navigate anywhere on their own.