Zoeken...  ⌘K GitHub

IconStack icon

Verticaal gestapelde icon items.

/icon-stack
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>