mirror of
https://github.com/DocNR/POWR.git
synced 2025-04-22 16:51:33 +00:00
52 lines
1.7 KiB
TypeScript
52 lines
1.7 KiB
TypeScript
![]() |
import * as Slot from '@rn-primitives/slot';
|
||
|
import type { SlottableViewProps } from '@rn-primitives/types';
|
||
|
import { cva, type VariantProps } from 'class-variance-authority';
|
||
|
import { View } from 'react-native';
|
||
|
import { cn } from '@/lib/utils';
|
||
|
import { TextClassContext } from '@/components/ui/text';
|
||
|
|
||
|
const badgeVariants = cva(
|
||
|
'web:inline-flex items-center rounded-full border border-border px-2.5 py-0.5 web:transition-colors web:focus:outline-none web:focus:ring-2 web:focus:ring-ring web:focus:ring-offset-2',
|
||
|
{
|
||
|
variants: {
|
||
|
variant: {
|
||
|
default: 'border-transparent bg-primary web:hover:opacity-80 active:opacity-80',
|
||
|
secondary: 'border-transparent bg-secondary web:hover:opacity-80 active:opacity-80',
|
||
|
destructive: 'border-transparent bg-destructive web:hover:opacity-80 active:opacity-80',
|
||
|
outline: 'text-foreground',
|
||
|
},
|
||
|
},
|
||
|
defaultVariants: {
|
||
|
variant: 'default',
|
||
|
},
|
||
|
}
|
||
|
);
|
||
|
|
||
|
const badgeTextVariants = cva('text-xs font-semibold ', {
|
||
|
variants: {
|
||
|
variant: {
|
||
|
default: 'text-primary-foreground',
|
||
|
secondary: 'text-secondary-foreground',
|
||
|
destructive: 'text-destructive-foreground',
|
||
|
outline: 'text-foreground',
|
||
|
},
|
||
|
},
|
||
|
defaultVariants: {
|
||
|
variant: 'default',
|
||
|
},
|
||
|
});
|
||
|
|
||
|
type BadgeProps = SlottableViewProps & VariantProps<typeof badgeVariants>;
|
||
|
|
||
|
function Badge({ className, variant, asChild, ...props }: BadgeProps) {
|
||
|
const Component = asChild ? Slot.View : View;
|
||
|
return (
|
||
|
<TextClassContext.Provider value={badgeTextVariants({ variant })}>
|
||
|
<Component className={cn(badgeVariants({ variant }), className)} {...props} />
|
||
|
</TextClassContext.Provider>
|
||
|
);
|
||
|
}
|
||
|
|
||
|
export { Badge, badgeTextVariants, badgeVariants };
|
||
|
export type { BadgeProps };
|