Zoeken...  ⌘K GitHub

Badge UI Elements

Pill badge voor status, labels en categorieën. 6 kleurvarianten.

/badge
src/components/ui/Badge.astro
---
/**
 * Badge / Label
 * Pill-badge voor status, labels, categorieën.
 *
 * Props:
 * - label: string
 * - variant?: 'default' | 'accent' | 'success' | 'warning' | 'danger' | 'outline'
 * - size?: 'sm' | 'md'
 * - dot?: boolean — toon kleur dot voor label
 */
interface Props {
  label: string;
  variant?: 'default' | 'accent' | 'success' | 'warning' | 'danger' | 'outline';
  size?: 'sm' | 'md';
  dot?: boolean;
}

const { label, variant = 'default', size = 'md', dot = false } = Astro.props;
---

<span class={`badge badge--${variant} badge--${size}`}>
  {dot && <span class="badge__dot" aria-hidden="true"></span>}
  {label}
</span>

<style>
  .badge {
    display: inline-flex;
    align-items: center;
    gap: 0.375rem;
    border-radius: 99px;
    font-weight: 600;
    line-height: 1;
  }
  .badge--sm { padding: 0.25rem 0.625rem; font-size: 0.6875rem; }
  .badge--md { padding: 0.375rem 0.75rem; font-size: 0.75rem; }

  .badge--default { background: color-mix(in srgb, var(--color-text) 10%, transparent); color: var(--color-text); }
  .badge--accent { background: color-mix(in srgb, var(--color-accent) 15%, transparent); color: var(--color-accent); }
  .badge--success { background: #dcfce7; color: #15803d; }
  .badge--warning { background: #fef9c3; color: #a16207; }
  .badge--danger { background: #fee2e2; color: #b91c1c; }
  .badge--outline { background: transparent; border: 1px solid currentColor; color: var(--color-text); }

  .badge__dot {
    width: 0.4375rem; height: 0.4375rem;
    border-radius: 50%;
    background: currentColor;
    flex-shrink: 0;
  }
</style>

Props

Prop Type Default Beschrijving
label * string Badge tekst
variant 'default' | 'accent' | 'success' | 'warning' | 'danger' | 'outline' 'default' Kleurvariant
size 'sm' | 'md' 'md' Grootte
dot boolean false Kleur dot voor de tekst

* = verplicht