badge.tsx 1.0 KB

123456789101112131415161718192021222324252627282930313233
  1. import { cva, type VariantProps } from "class-variance-authority";
  2. import type { HTMLAttributes } from "react";
  3. import { cn } from "@/lib/utils";
  4. const badgeVariants = cva(
  5. "inline-flex items-center gap-1.5 rounded-full border px-2.5 py-0.5 text-xs font-medium",
  6. {
  7. variants: {
  8. variant: {
  9. default: "border-border bg-muted text-muted-foreground",
  10. accent: "border-transparent bg-accent-muted text-accent-hover",
  11. pending: "border-transparent bg-pending-muted text-pending",
  12. confirmed: "border-transparent bg-confirmed-muted text-confirmed",
  13. anchored: "border-transparent bg-anchored-muted text-anchored",
  14. outline: "border-border text-muted-foreground",
  15. },
  16. },
  17. defaultVariants: {
  18. variant: "default",
  19. },
  20. },
  21. );
  22. export interface BadgeProps
  23. extends HTMLAttributes<HTMLSpanElement>,
  24. VariantProps<typeof badgeVariants> {}
  25. export function Badge({ className, variant, ...props }: BadgeProps) {
  26. return (
  27. <span className={cn(badgeVariants({ variant }), className)} {...props} />
  28. );
  29. }