Cta Section 1
Call-to-action section 1 with primary and secondary CTAs, centered content, background contrast section.
components/pro-blocks/landing-page/cta-sections/cta-section-1.tsx
import { buttonVariants } from "@/components/ui/button"
import Link from "next/link"
type Props = {
taglineText?: string
title?: string
description?: string
primaryCta?: { label: string; href: string }
primaryButtonAriaLabel?: string
}
const defaultProps = {
taglineText: "CTA section 1",
title: "Action-driving headline that creates urgency",
description:
"Add one or two compelling sentences that reinforce your main value proposition and overcome final objections.",
primaryCta: { label: "Get started", href: "#" },
primaryButtonAriaLabel: "Get started with our service",
}
export function CtaSection1({
taglineText = defaultProps.taglineText,
title = defaultProps.title,
description = defaultProps.description,
primaryCta = defaultProps.primaryCta,
primaryButtonAriaLabel = defaultProps.primaryButtonAriaLabel,
}: Props) {
return (
<section
className="bg-muted dark:bg-muted/40"
aria-labelledby="cta-section-1-heading"
>
<div className="wrapper">
<div className="mx-auto flex max-w-xl flex-col items-center">
<div className="flex flex-col items-center text-center">
<div className="tagline text-muted-foreground">{taglineText}</div>
<h2
id="cta-section-1-heading"
className="heading-lg text-foreground"
>
{title}
</h2>
<p className="paragraph mb-8 text-muted-foreground">
{description}
</p>
</div>
<Link
href={primaryCta.href}
aria-label={primaryButtonAriaLabel}
className={buttonVariants()}
data-slot="button"
data-variant="default"
>
{primaryCta.label}
</Link>
</div>
</div>
</section>
)
}
- Where it goes
- cta
DependenciesBundle weight · medium
- framework
- next