Skip to content

Badge

A badge component for displaying status, labels, or counts with multiple variants.

Installation

bash
npx @galaxy-stack/nebula-cli@latest add badge
bash
pnpm dlx @galaxy-stack/nebula-cli@latest add badge
bash
yarn dlx @galaxy-stack/nebula-cli@latest add badge
bash
bunx @galaxy-stack/nebula-cli@latest add badge
bash
# If you have installed galaxy-design globally
galaxy-design add badge

Dependencies

This component automatically installs the following dependencies:

  • React: class-variance-authority
  • Vue: class-variance-authority
  • Angular: class-variance-authority
  • React Native: nativewind, tailwindcss
  • Flutter: No additional dependencies

No manual installation needed!

Usage

Basic Example

tsx
import { Badge } from "@/components/ui/badge"

export default function BadgeDemo() {
  return <Badge>Badge</Badge>
}
vue
<script setup lang="ts">
import { Badge } from '@/components/ui/badge'
</script>

<template>
  <Badge>Badge</Badge>
</template>
typescript
import { Component } from '@angular/core';
import { BadgeComponent } from '@/components/ui/badge';

@Component({
  selector: 'app-badge-demo',
  standalone: true,
  imports: [BadgeComponent],
  template: `<ui-badge>Badge</ui-badge>`
})
export class BadgeDemoComponent {}

Variant Examples

tsx
import { Badge } from "@/components/ui/badge"

export default function BadgeVariants() {
  return (
    <div className="flex gap-2">
      <Badge variant="default">Default</Badge>
      <Badge variant="secondary">Secondary</Badge>
      <Badge variant="destructive">Destructive</Badge>
      <Badge variant="outline">Outline</Badge>
    </div>
  )
}
vue
<script setup lang="ts">
import { Badge } from '@/components/ui/badge'
</script>

<template>
  <div class="flex gap-2">
    <Badge variant="default">Default</Badge>
    <Badge variant="secondary">Secondary</Badge>
    <Badge variant="destructive">Destructive</Badge>
    <Badge variant="outline">Outline</Badge>
  </div>
</template>

API Reference

Props

PropTypeDefaultDescriptionFramework Support
variant`'default''secondary''destructive''outline'`
className / classstring''CSS class namesAll
asChildbooleanfalseRender as child elementReact, Vue only

Accessibility

  • Screen Reader: Uses semantic markup with proper ARIA attributes
  • Focus Management: Inherits parent focus behavior
  • WCAG Compliance: WCAG 2.1 Level AA compliant

Author

Bùi Trọng Hiếu (kevinbui)

License

MIT © 2025 Bùi Trọng Hiếu (kevinbui)

Released under the MIT License.