Zoeken...  ⌘K GitHub

CtaDownload CTA

Twee-koloms download-CTA: tekst met knop links, document-preview-kaart rechts.

/cta-download
src/components/cta/CtaDownload.astro
---
/**
 * CtaDownload
 * Twee-koloms download-CTA: links eyebrow + kop + sub + knop, rechts een
 * document-preview-kaart.
 *
 * Props:
 * - eyebrow?: string
 * - headline: string
 * - sub?: string
 * - cta?: { label: string; href: string }
 * - doc?: { icon?: string; title: string; meta?: string }
 */
interface Props {
  eyebrow?: string;
  headline: string;
  sub?: string;
  cta?: { label: string; href: string };
  doc?: { icon?: string; title: string; meta?: string };
}
const { eyebrow, headline, sub, cta, doc } = Astro.props;
---

<section class="bl-section ctadl">
  <div class="bl-inner ctadl-inner">
    <div class="ctadl-text">
      {eyebrow && <span class="ctadl-eyebrow">{eyebrow}</span>}
      <h2 class="ctadl-headline">{headline}</h2>
      {sub && <p class="ctadl-sub">{sub}</p>}
      {cta && <a href={cta.href} class="ctadl-btn">{cta.label}</a>}
    </div>
    {doc && (
      <div class="ctadl-preview">
        <div class="ctadl-doc">
          {doc.icon && <span class="ctadl-doc-icon" aria-hidden="true">{doc.icon}</span>}
          <span class="ctadl-doc-title">{doc.title}</span>
          {doc.meta && <span class="ctadl-doc-meta">{doc.meta}</span>}
        </div>
      </div>
    )}
  </div>
</section>

<style>
.ctadl{background:#f8fafc;border-top:1px solid #e5e7eb;border-bottom:1px solid #e5e7eb}
.ctadl-inner{display:grid;grid-template-columns:1fr auto;gap:4rem;align-items:center}
.ctadl-eyebrow{display:block;font-size:.75rem;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--color-accent,#6366f1);margin-bottom:.75rem}
.ctadl-headline{font-size:clamp(1.5rem,3vw,2.25rem);font-weight:800;color:#0a0a0a;letter-spacing:-.03em;line-height:1.2;margin:0 0 .875rem}
.ctadl-sub{font-size:1.0625rem;color:#4b5563;line-height:1.65;margin:0 0 1.75rem}
.ctadl-btn{display:inline-flex;align-items:center;padding:.75rem 1.75rem;background:var(--color-accent,#6366f1);color:#fff;font-weight:700;font-size:1rem;border-radius:.5rem;text-decoration:none;transition:opacity .2s}
.ctadl-btn:hover{opacity:.88}
.ctadl-doc{background:#fff;border:1px solid #e5e7eb;border-radius:.75rem;padding:2rem 1.75rem;display:flex;flex-direction:column;align-items:center;gap:.75rem;min-width:160px;box-shadow:0 4px 20px #0000000f}
.ctadl-doc-icon{font-size:3rem}
.ctadl-doc-title{font-size:.9375rem;font-weight:600;color:#0a0a0a;text-align:center}
.ctadl-doc-meta{font-size:.8125rem;color:#6b7280}
@media (max-width:720px){
  .ctadl-inner{grid-template-columns:1fr;gap:2rem}
  .ctadl-doc{flex-direction:row;min-width:auto}
}
</style>

Props

Prop Type Default Beschrijving
eyebrow string - Klein label boven de kop
headline * string - H2-kop
sub string - Ondertitel
cta { label: string; href: string } - Download-knop
doc { icon?: string; title: string; meta?: string } - Document-preview-kaart

* = verplicht