src/components/icon/IconShowcase.astro
---
/**
* IconShowcase
* Showcase-sectie met groot icoon en kopij
*/
interface Props {
icon?: string;
headline?: string;
sub?: string;
items?: string[];
}
const { icon = 'π', headline = 'Marketing die Γ©cht presteert', sub = 'BLURR combineert bewezen strategie met slimme uitvoering. Het resultaat: meer leads, betere conversies en duurzame groei.', items = [
'Strategisch marketingadvies op maat',
'Campagnes op Google, Meta en LinkedIn',
'Content die je klant overtuigt',
'Transparante maandrapportages',
] } = Astro.props;
---
<div class="ishow-wrap">
<div class="ishow-icon-area">
<div class="ishow-ring">
<span class="ishow-icon">{icon}</span>
</div>
</div>
<div class="ishow-content">
<h2 class="ishow-headline">{headline}</h2>
<p class="ishow-sub">{sub}</p>
<ul class="ishow-list">
{items.map(item => (
<li class="ishow-list-item">
<span class="ishow-check">β</span>
{item}
</li>
))}
</ul>
</div>
</div>
<style>
.ishow-wrap {
--color-accent: #6366f1;
--color-primary: #0a0a0a;
display: flex;
align-items: center;
gap: 48px;
padding: 48px 32px;
font-family: system-ui, sans-serif;
max-width: 840px;
margin: 0 auto;
}
@media (max-width: 640px) {
.ishow-wrap { flex-direction: column; text-align: center; }
}
.ishow-icon-area { flex-shrink: 0; }
.ishow-ring {
width: 120px;
height: 120px;
border-radius: 50%;
border: 3px solid var(--color-accent);
display: flex;
align-items: center;
justify-content: center;
background: #f5f3ff;
animation: ishow-spin-ring 8s linear infinite;
}
@keyframes ishow-spin-ring {
0% { transform: rotate(0deg); }
100% { transform: rotate(360deg); }
}
.ishow-icon {
font-size: 3rem;
display: block;
animation: ishow-spin-ring 8s linear infinite reverse;
}
.ishow-content { flex: 1; }
.ishow-headline {
margin: 0 0 12px;
font-size: 1.75rem;
font-weight: 800;
color: var(--color-primary);
letter-spacing: -0.02em;
}
.ishow-sub {
margin: 0 0 20px;
font-size: 0.95rem;
line-height: 1.65;
color: #4b5563;
}
.ishow-list {
list-style: none;
margin: 0;
padding: 0;
display: flex;
flex-direction: column;
gap: 8px;
}
.ishow-list-item {
display: flex;
align-items: center;
gap: 10px;
font-size: 0.9rem;
font-weight: 500;
color: #1f2937;
}
.ishow-check {
color: var(--color-accent);
font-weight: 800;
font-size: 1rem;
flex-shrink: 0;
}
</style>
Props
| Prop | Type | Default | Beschrijving |
|---|---|---|---|
icon | string | β | Emoji icon |
headline | string | β | Headline |
* = verplicht