CTADownload CTA
CTA voor het downloaden van een resource (whitepaper, guide, checklist).
src/components/cta/CTADownload.astro
---
/**
* CTADownload
* CTA voor het downloaden van een resource (whitepaper, guide, checklist).
*/
interface Props {
eyebrow?: string;
headline: string;
sub?: string;
downloadLabel?: string;
downloadHref: string;
resourceTitle?: string;
resourceMeta?: string;
resourceIcon?: string;
}
const { eyebrow, headline, sub, downloadLabel = 'Download gratis', downloadHref, resourceTitle, resourceMeta, resourceIcon = '📄' } = Astro.props;
---
<section class="ctadl">
<div class="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>}
<a href={downloadHref} class="ctadl-btn">{downloadLabel} ↓</a>
</div>
<div class="ctadl-preview">
<div class="ctadl-doc">
<span class="ctadl-doc-icon">{resourceIcon}</span>
{resourceTitle && <span class="ctadl-doc-title">{resourceTitle}</span>}
{resourceMeta && <span class="ctadl-doc-meta">{resourceMeta}</span>}
</div>
</div>
</div>
</section>
<style>
.ctadl { background: #f8fafc; border-top: 1px solid #e5e7eb; border-bottom: 1px solid #e5e7eb; padding: 4rem 2rem; }
.ctadl-inner { max-width: 1000px; margin: 0 auto; display: grid; grid-template-columns: 1fr auto; gap: 4rem; align-items: center; }
.ctadl-eyebrow { display: block; font-size: 0.6875rem; font-weight: 700; letter-spacing: 0.1em; text-transform: uppercase; color: var(--color-accent,#6366f1); margin-bottom: 0.75rem; }
.ctadl-headline { font-size: clamp(1.5rem, 3vw, 2.25rem); font-weight: 800; color: #0a0a0a; letter-spacing: -0.03em; line-height: 1.2; margin: 0 0 0.875rem; }
.ctadl-sub { font-size: 1rem; color: #6b7280; line-height: 1.65; margin: 0 0 1.75rem; }
.ctadl-btn { display: inline-flex; align-items: center; padding: 0.75rem 1.75rem; background: var(--color-accent,#6366f1); color: #fff; font-weight: 700; font-size: 0.9375rem; border-radius: 0.5rem; text-decoration: none; transition: opacity 0.2s; }
.ctadl-btn:hover { opacity: 0.88; }
.ctadl-doc { background: #fff; border: 1px solid #e5e7eb; border-radius: 0.75rem; padding: 2rem 1.75rem; display: flex; flex-direction: column; align-items: center; gap: 0.75rem; min-width: 160px; box-shadow: 0 4px 20px rgba(0,0,0,0.06); }
.ctadl-doc-icon { font-size: 3rem; }
.ctadl-doc-title { font-size: 0.875rem; font-weight: 600; color: #0a0a0a; text-align: center; }
.ctadl-doc-meta { font-size: 0.75rem; color: #9ca3af; }
@media (max-width: 640px) { .ctadl-inner { grid-template-columns: 1fr; gap: 2rem; } .ctadl-doc { flex-direction: row; min-width: auto; } }
</style>
Props
| Prop | Type | Default | Beschrijving |
|---|---|---|---|
headline * | string | — | Hoofd CTA tekst |
downloadHref * | string | — | Download URL |
downloadLabel | string | 'Download gratis' | Label van de download knop |
eyebrow | string | — | Eyebrow boven de headline |
sub | string | — | Ondertitel |
resourceTitle | string | — | Naam van het document |
resourceMeta | string | — | Metainfo (bestandstype, pagina's) |
resourceIcon | string | — | Emoji icon voor het document |
* = verplicht