Skip to content

Badge component

The Badge component designed with Vue 3 and Tailwind CSS. It includes customizable color options and a size variant.

Basic Usage

Import and use Badge in your Vue components as follows:

vue
<template>
  <Badge label="Some info" />
</template>

<script setup>
import { Badge } from '@robuust-digital/vue-components/core';
</script>
Some info

Props

Below are the props supported by Badge, which allow you to customize its appearance and behavior:

PropTypeDefaultDescription
asStringspanDefines the element type or component to render.
labelString''Sets the text label for the badge.
sizeStringbaseSpecifies the badge size. Options: base, sm.
colorStringdefaultSets the badge's color variant. Learn more about color variants in the next section.

Slots

Below is example to edit the label slot of Badge:

Badge with custom slot

10 Badge with custom slot
Show code
vue
<Badge color="red">
  <span class="text-red-800 bg-red-300 -my-1 -ml-2 size-6 inline-flex items-center justify-center text-sm rounded-full">10</span>
  Badge with custom slot
</Badge>

Color Variants

The color prop supports both predefined and custom values. Default colors include:

  • default
  • gray
  • red
  • yellow
  • green
  • blue
  • violet
  • purple
  • pink

Examples

Basic Badge

Default Badge
Show code
vue
<Badge label="Default Badge" />

Small Badge

Small Badge
Show code
vue
<Badge color="blue" label="Small Badge" size="sm" />

CSS Customization ⚡️

To customize the badge styles global

css
:root {
  /* Base Badge variables */
  --rvc-badge-height: calc(var(--spacing) * 8);
  --rvc-badge-padding-x: calc(var(--spacing) * 3);
  --rvc-badge-padding-y: calc(var(--spacing) * 1.5);
  --rvc-badge-font-weight: var(--font-weight-medium);
  --rvc-badge-border-radius: calc(infinity * 1px);
  --rvc-badge-font-size: var(--text-base);
  --rvc-badge-gap: calc(var(--spacing) * 1);

  /* Default color variables */
  --rvc-badge-bg-color: #fcffc4;
  --rvc-badge-color: #576d07;

  /* Gray variant */
  --rvc-badge-bg-color-gray: var(--color-slate-100);
  --rvc-badge-color-gray: var(--color-slate-700);

  /* Red variant */
  --rvc-badge-bg-color-red: var(--color-red-100);
  --rvc-badge-color-red: var(--color-red-700);

  /* Yellow variant */
  --rvc-badge-bg-color-yellow: var(--color-yellow-100);
  --rvc-badge-color-yellow: var(--color-yellow-700);

  /* Green variant */
  --rvc-badge-bg-color-green: var(--color-green-100);
  --rvc-badge-color-green: var(--color-green-700);

  /* Blue variant */
  --rvc-badge-bg-color-blue: var(--color-blue-100);
  --rvc-badge-color-blue: var(--color-blue-700);

  /* Violet variant */
  --rvc-badge-bg-color-violet: var(--color-violet-100);
  --rvc-badge-color-violet: var(--color-violet-700);

  /* Purple variant */
  --rvc-badge-bg-color-purple: var(--color-purple-100);
  --rvc-badge-color-purple: var(--color-purple-700);

  /* Pink variant */
  --rvc-badge-bg-color-pink: var(--color-pink-100);
  --rvc-badge-color-pink: var(--color-pink-700);

  /* Small variant */
  --rvc-badge-height-sm: calc(var(--spacing) * 6);
  --rvc-badge-padding-x-sm: calc(var(--spacing) * 2);
  --rvc-badge-padding-y-sm: calc(var(--spacing) * 1);
  --rvc-badge-font-size-sm: var(--text-sm);
}

/* Or customize the class with CSS props (not recommended) */
.rvc-badge {
  @apply cursor-pointer;
}