src/components/icon/IconMasonry.astro
---
/**
* IconMasonry
* Masonry-stijl icoon-raster
*/
interface MasonryItem {
icon: string;
title: string;
desc: string;
size?: 'sm' | 'lg';
}
interface Props {
items?: MasonryItem[];
}
const { items = [
{ icon: '🎯', title: 'Strategie', desc: 'Doelgerichte marketingplannen afgestemd op jouw groeifase.', size: 'lg' },
{ icon: '📈', title: 'SEO', desc: 'Organische vindbaarheid.', size: 'sm' },
{ icon: '💡', title: 'Advertenties', desc: 'Betaald kanalen die rendabel converteren.', size: 'sm' },
{ icon: '🎨', title: 'Design & Branding', desc: 'Visuele identiteit die vertrouwen opbouwt bij iedere touchpoint in de customer journey.', size: 'lg' },
{ icon: '📊', title: 'Analytics', desc: 'Inzicht.', size: 'sm' },
{ icon: '🤝', title: 'Samenwerking', desc: 'Als verlengstuk van jouw team.', size: 'sm' },
] } = Astro.props;
---
<div class="imas-grid">
{items.map(item => (
<div class={`imas-card imas-card--${item.size ?? 'sm'}`}>
<span class="imas-icon">{item.icon}</span>
<h3 class="imas-title">{item.title}</h3>
<p class="imas-desc">{item.desc}</p>
</div>
))}
</div>
<style>
.imas-grid {
--color-accent: #6366f1;
--color-primary: #0a0a0a;
columns: 2;
gap: 16px;
padding: 24px;
font-family: system-ui, sans-serif;
}
@media (max-width: 480px) {
.imas-grid { columns: 1; }
}
.imas-card {
break-inside: avoid;
background: #fff;
border: 1px solid #e5e7eb;
border-radius: 12px;
padding: 20px;
margin-bottom: 16px;
display: flex;
flex-direction: column;
gap: 8px;
transition: transform 0.2s, box-shadow 0.2s;
}
.imas-card:hover {
transform: translateY(-2px);
box-shadow: 0 8px 24px rgba(99,102,241,0.1);
}
.imas-card--lg {
background: linear-gradient(135deg, #f5f3ff, #ede9fe);
border-color: #c4b5fd;
}
.imas-icon { font-size: 1.5rem; }
.imas-title {
margin: 0;
font-size: 0.95rem;
font-weight: 700;
color: var(--color-primary);
}
.imas-desc {
margin: 0;
font-size: 0.84rem;
line-height: 1.6;
color: #6b7280;
}
</style>