src/components/cta/CtaDark.astro
---
/**
* CtaDark
* Donkere, gecentreerde CTA: badge, grote kop, sub en twee knoppen.
*
* Props:
* - badge?: string
* - headline: string
* - sub?: string
* - primary?: { label: string; href: string }
* - secondary?: { label: string; href: string }
*/
interface Props {
badge?: string;
headline: string;
sub?: string;
primary?: { label: string; href: string };
secondary?: { label: string; href: string };
}
const { badge, headline, sub, primary, secondary } = Astro.props;
---
<section class="bl-section ctad">
<div class="bl-inner bl-inner--narrow ctad-inner">
{badge && <span class="ctad-badge">{badge}</span>}
<h2 class="ctad-headline">{headline}</h2>
{sub && <p class="ctad-sub">{sub}</p>}
{(primary || secondary) && (
<div class="ctad-btns">
{primary && <a href={primary.href} class="ctad-btn-primary">{primary.label}</a>}
{secondary && <a href={secondary.href} class="ctad-btn-secondary">{secondary.label}</a>}
</div>
)}
</div>
</section>
<style>
.ctad{background:#0a0a0a}
.ctad-inner{text-align:center}
.ctad-badge{display:inline-block;font-size:.75rem;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--color-accent,#6366f1);background:#6366f11f;border:1px solid rgba(99,102,241,.25);padding:.3rem .875rem;border-radius:999px;margin-bottom:1.5rem}
.ctad-headline{font-size:clamp(2rem,5vw,3.5rem);font-weight:900;color:#fff;letter-spacing:-.04em;line-height:1.1;margin:0 0 1.25rem}
.ctad-sub{font-size:1.125rem;color:#aaa;line-height:1.65;margin:0 0 2.5rem}
.ctad-btns{display:flex;gap:1rem;justify-content:center;flex-wrap:wrap}
.ctad-btn-primary{padding:.875rem 2.25rem;background:var(--color-accent,#6366f1);color:#fff;font-weight:700;font-size:1rem;border-radius:.5rem;text-decoration:none;transition:opacity .2s}
.ctad-btn-primary:hover{opacity:.88}
.ctad-btn-secondary{padding:.875rem 2.25rem;border:1.5px solid rgba(255,255,255,.28);color:#e8e8e8;font-weight:600;font-size:1rem;border-radius:.5rem;text-decoration:none;transition:border-color .2s,color .2s}
.ctad-btn-secondary:hover{border-color:#fff;color:#fff}
</style>
Props
| Prop | Type | Default | Beschrijving |
|---|---|---|---|
badge | string | - | Pill-label boven de kop |
headline * | string | - | H2-kop |
sub | string | - | Ondertitel |
primary | { label: string; href: string } | - | Primaire knop |
secondary | { label: string; href: string } | - | Secundaire knop |
* = verplicht