src/components/forms/FormNewsletter2.astro
---
/**
* FormNewsletter2
* Alternatieve nieuwsbrief-aanmelding met social proof
*/
interface Props {
headline?: string;
sub?: string;
proof?: string;
submitLabel?: string;
}
const {
headline = 'Blijf voorop in digital marketing',
sub = 'Wekelijkse inzichten over SEO, ads en conversie-optimalisatie — direct in je inbox.',
proof = 'Meer dan 3.400 marketeers gingen je voor',
submitLabel = 'Meld mij aan',
} = Astro.props;
---
<section class="fnl2">
<div class="fnl2__inner">
<div class="fnl2__text">
<h2 class="fnl2__headline">{headline}</h2>
<p class="fnl2__sub">{sub}</p>
<div class="fnl2__proof">
<div class="fnl2__avatars" aria-hidden="true">
<span class="fnl2__avatar">MB</span>
<span class="fnl2__avatar">JV</span>
<span class="fnl2__avatar">KR</span>
<span class="fnl2__avatar">+</span>
</div>
<span class="fnl2__proof-text">{proof}</span>
</div>
</div>
<form class="fnl2__form" novalidate>
<input class="fnl2__input" type="email" placeholder="jouw@emailadres.nl" required />
<button class="fnl2__btn" type="submit">{submitLabel}</button>
<p class="fnl2__privacy">Geen spam. Afmelden in één klik.</p>
</form>
</div>
</section>
<style>
.fnl2 {
background: #f5f4ff;
padding: 4.5rem 1.5rem;
border-top: 1px solid #e8e6ff;
border-bottom: 1px solid #e8e6ff;
}
.fnl2__inner {
max-width: 900px;
margin: 0 auto;
display: grid;
grid-template-columns: 1fr 1fr;
gap: 3rem;
align-items: center;
}
.fnl2__headline {
font-size: 1.65rem;
font-weight: 700;
color: var(--color-primary, #0a0a0a);
margin: 0 0 0.6rem;
line-height: 1.25;
}
.fnl2__sub {
color: #555;
font-size: 0.95rem;
line-height: 1.65;
margin: 0 0 1.25rem;
}
.fnl2__proof {
display: flex;
align-items: center;
gap: 0.75rem;
}
.fnl2__avatars {
display: flex;
}
.fnl2__avatar {
width: 30px;
height: 30px;
border-radius: 50%;
background: var(--color-accent, #6366f1);
color: #fff;
font-size: 0.65rem;
font-weight: 700;
display: flex;
align-items: center;
justify-content: center;
border: 2px solid #f5f4ff;
margin-right: -8px;
}
.fnl2__proof-text {
font-size: 0.82rem;
color: #666;
font-weight: 500;
padding-left: 0.5rem;
}
.fnl2__form {
display: flex;
flex-direction: column;
gap: 0.75rem;
}
.fnl2__input {
padding: 0.85rem 1rem;
border: 1.5px solid #d4d0fb;
border-radius: 8px;
font-size: 0.95rem;
color: var(--color-primary, #0a0a0a);
background: #fff;
outline: none;
font-family: inherit;
transition: border-color 0.2s;
width: 100%;
box-sizing: border-box;
}
.fnl2__input:focus { border-color: var(--color-accent, #6366f1); }
.fnl2__btn {
padding: 0.9rem 1.5rem;
background: var(--color-accent, #6366f1);
color: #fff;
border: none;
border-radius: 8px;
font-size: 0.97rem;
font-weight: 700;
cursor: pointer;
transition: opacity 0.2s;
width: 100%;
font-family: inherit;
}
.fnl2__btn:hover { opacity: 0.88; }
.fnl2__privacy {
font-size: 0.75rem;
color: #999;
text-align: center;
margin: 0;
}
@media (max-width: 640px) {
.fnl2__inner { grid-template-columns: 1fr; gap: 2rem; }
}
</style>
Props
| Prop | Type | Default | Beschrijving |
|---|---|---|---|
headline | string | — | Formuliertitel |
proof | string | — | Social proof tekst |
* = verplicht