Badge
A badge component for displaying status, labels, or counts with multiple variants.
Installation
bash
npx @galaxy-stack/nebula-cli@latest add badgebash
pnpm dlx @galaxy-stack/nebula-cli@latest add badgebash
yarn dlx @galaxy-stack/nebula-cli@latest add badgebash
bunx @galaxy-stack/nebula-cli@latest add badgebash
# If you have installed galaxy-design globally
galaxy-design add badgeDependencies
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
| Prop | Type | Default | Description | Framework Support |
|---|---|---|---|---|
variant | `'default' | 'secondary' | 'destructive' | 'outline'` |
className / class | string | '' | CSS class names | All |
asChild | boolean | false | Render as child element | React, 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)
- GitHub: @buikevin
- Email: kevinbui210191@gmail.com
License
MIT © 2025 Bùi Trọng Hiếu (kevinbui)
