Skip to content

Badge

Component badge để hiển thị trạng thái, nhãn hoặc số đếm với nhiều biến thể.

Cài đặt

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
# Nếu bạn đã cài đặt galaxy-design toàn cục
galaxy-design add badge

Dependencies

Component này tự động cài đặt các dependencies sau:

  • React: class-variance-authority
  • Vue: class-variance-authority
  • Angular: class-variance-authority
  • React Native: nativewind, tailwindcss
  • Flutter: Không cần thêm dependencies

Không cần cài đặt thủ công!

Sử dụng

Ví dụ cơ bản

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 {}

Các biến thể

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''Tên class CSSTất cả
asChildbooleanfalseRender như child elementChỉ React, Vue

Accessibility

  • Screen Reader: Sử dụng semantic markup với ARIA attributes
  • Focus Management: Kế thừa hành vi focus từ parent
  • WCAG Compliance: Tuân thủ WCAG 2.1 Level AA

Author

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

License

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

Phát hành theo Giấy phép MIT.