Badge
Badges are small indicators mainly used to display numeric values, such as counts or notifications.
Storybook
Source
Usage
Start by importing the Badge
component.
import { Badge } from '@vibrant-ui/components';
Then use it in your JSX.
<Badge>9</Badge>
9
import { Badge, type BadgeProps } from '@vibrant-ui/components';
export function BadgeExample(props: BadgeProps) {
return <Badge {...props}>9</Badge>;
}
Styling
Variants
Badges come in four variants: soft
, muted
and solid
. The default is soft
.
9
9
9
import { Badge, badgeVariants, HStack } from '@vibrant-ui/components';
export function BadgeVariantsExample() {
return (
<HStack align="center" gap="sm">
{badgeVariants.map((variant) => (
<Badge key={variant} variant={variant}>
9
</Badge>
))}
</HStack>
);
}
Colors
The color
prop sets the badge color. It supports all tokens and defaults to neutral
.
9
9
9
9
9
9
9
9
9
9
9
9
9
9
9
9
9
9
9
9
9
9
9
9
9
9
9
9
9
9
9
9
9
9
9
9
9
9
9
9
9
9
9
9
9
import { Badge, badgeVariants, HStack, VStack } from '@vibrant-ui/components';
import { colors } from '@vibrant-ui/styles';
export function BadgeColorsExample() {
return (
<VStack gap="sm">
{badgeVariants.map((variant) => (
<HStack key={variant} gap="sm">
{colors.map((color) => (
<Badge key={color} color={color} variant={variant}>
9
</Badge>
))}
</HStack>
))}
</VStack>
);
}
Sizes
The size
option controls overall dimensions.
9
9
9
9
9
9
9
9
9
9
9
9
import { Badge, badgeSizes, badgeVariants, HStack, VStack } from '@vibrant-ui/components';
export function BadgeSizesExample() {
return (
<VStack gap="sm">
{badgeVariants.map((variant) => (
<HStack key={variant} gap="sm" align="center">
{badgeSizes.map((size) => (
<Badge key={size} size={size} variant={variant}>
9
</Badge>
))}
</HStack>
))}
</VStack>
);
}
Shadows
Use the shadow
prop to add subtle elevation.
9
9
9
9
9
9
9
9
9
9
9
9
import { Badge, badgeVariants, HStack, VStack } from '@vibrant-ui/components';
import { type ShadowToken, tokens } from '@vibrant-ui/tokens';
export function BadgeShadowsExample() {
return (
<VStack gap="sm">
{badgeVariants.map((variant) => (
<HStack key={variant} gap="sm">
{(Object.keys(tokens.shadows) as ShadowToken[]).map((shadow) => (
<Badge key={shadow} shadow={shadow} variant={variant}>
9
</Badge>
))}
</HStack>
))}
</VStack>
);
}
Growable badge
Allow the badge to expand to fit longer content without layout shifts.
999+
999+
999+
import { Badge, badgeVariants, HStack } from '@vibrant-ui/components';
export function GrowableBadgeExample() {
return (
<HStack align="center" gap="sm">
{badgeVariants.map((variant) => (
<Badge key={variant} color="red" growable variant={variant}>
999+
</Badge>
))}
</HStack>
);
}
Props
Prop
Type