Badge
Small status indicator with multiple variants.
New
import { Badge } from "@/components/ui/badge";
export function MyScreen() {
return (
<Badge>New</Badge>
);
}Installation
npx @aniui/cli add badgeUsage
app/index.tsx
import { Badge } from "@/components/ui/badge";
export function MyScreen() {
return (
<Badge>New</Badge>
);
}Variants
DefaultSecondaryOutlineDestructive
<Badge variant="default">Default</Badge>
<Badge variant="secondary">Secondary</Badge>
<Badge variant="outline">Outline</Badge>
<Badge variant="destructive">Destructive</Badge>Props
PropTypeDefault
variant"default" | "secondary" | "outline" | "destructive""default"classNamestring—textClassNamestring—childrenstringrequiredAlso accepts all View props from React Native.
Source
components/ui/badge.tsx
import React from "react";
import { View, Text } from "react-native";
import { cva, type VariantProps } from "class-variance-authority";
import { cn } from "@/lib/utils";
const badgeVariants = cva("flex-row items-center rounded-full px-2.5 py-0.5", {
variants: {
variant: {
default: "bg-primary",
secondary: "bg-secondary",
outline: "border border-border bg-transparent",
destructive: "bg-destructive",
},
},
defaultVariants: {
variant: "default",
},
});
const badgeTextVariants = cva("text-xs font-semibold", {
variants: {
variant: {
default: "text-primary-foreground",
secondary: "text-secondary-foreground",
outline: "text-foreground",
destructive: "text-destructive-foreground",
},
},
defaultVariants: {
variant: "default",
},
});
export interface BadgeProps
extends React.ComponentPropsWithoutRef<typeof View>,
VariantProps<typeof badgeVariants> {
className?: string;
textClassName?: string;
children: string;
}
export function Badge({ variant, className, textClassName, children, ...props }: BadgeProps) {
return (
<View className={cn(badgeVariants({ variant }), className)} {...props}>
<Text className={cn(badgeTextVariants({ variant }), textClassName)}>{children}</Text>
</View>
);
}