src/components/icon/IconStack.astro
---
/**
* IconStack
* Verticaal gestapelde icoon-items met scheidingslijnen
*/
interface StackItem {
icon: string;
title: string;
meta?: string;
}
interface Props {
items?: StackItem[];
}
const { items = [
{ icon: '🎯', title: 'Strategisch marketingplan', meta: 'Strategie' },
{ icon: '📢', title: 'Google Ads campagnebeheer', meta: 'Paid Media' },
{ icon: '🔍', title: 'SEO technische audit & uitvoering', meta: 'SEO' },
{ icon: '✍️', title: 'Content kalender & redactie', meta: 'Content' },
{ icon: '📊', title: 'Maandelijkse rapportages', meta: 'Analytics' },
{ icon: '💌', title: 'E-mail flows & automation', meta: 'E-mail' },
] } = Astro.props;
---
<ul class="istack-list">
{items.map(item => (
<li class="istack-item">
<span class="istack-icon">{item.icon}</span>
<span class="istack-title">{item.title}</span>
{item.meta && <span class="istack-meta">{item.meta}</span>}
</li>
))}
</ul>
<style>
.istack-list {
--color-accent: #6366f1;
--color-primary: #0a0a0a;
list-style: none;
margin: 0;
padding: 0;
font-family: system-ui, sans-serif;
max-width: 560px;
}
.istack-item {
display: flex;
align-items: center;
gap: 14px;
padding: 16px 0;
border-bottom: 1px solid #f3f4f6;
transition: opacity 0.15s;
}
.istack-item:last-child { border-bottom: none; }
.istack-item:hover { opacity: 0.75; }
.istack-icon {
font-size: 1.2rem;
flex-shrink: 0;
width: 28px;
text-align: center;
}
.istack-title {
flex: 1;
font-size: 0.9rem;
font-weight: 600;
color: var(--color-primary);
}
.istack-meta {
font-size: 0.75rem;
font-weight: 600;
color: var(--color-accent);
background: #f0f0ff;
padding: 3px 10px;
border-radius: 99px;
white-space: nowrap;
}
</style>