| 1 |
88bd1b0 |
Mrdn |
2y ago |
import * as React from "react" |
| 2 |
88bd1b0 |
Mrdn |
2y ago |
import { cva, type VariantProps } from "class-variance-authority" |
| 3 |
88bd1b0 |
Mrdn |
2y ago |
|
| 4 |
88bd1b0 |
Mrdn |
2y ago |
import { cn } from "@marzneshin/utils" |
| 5 |
88bd1b0 |
Mrdn |
2y ago |
|
| 6 |
88bd1b0 |
Mrdn |
2y ago |
const badgeVariants = cva( |
| 7 |
88bd1b0 |
Mrdn |
2y ago |
"inline-flex items-center rounded-full border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2", |
| 8 |
88bd1b0 |
Mrdn |
2y ago |
{ |
| 9 |
88bd1b0 |
Mrdn |
2y ago |
variants: { |
| 10 |
88bd1b0 |
Mrdn |
2y ago |
variant: { |
| 11 |
88bd1b0 |
Mrdn |
2y ago |
default: |
| 12 |
88bd1b0 |
Mrdn |
2y ago |
"border-transparent bg-primary text-primary-foreground hover:bg-primary/80", |
| 13 |
88bd1b0 |
Mrdn |
2y ago |
secondary: |
| 14 |
88bd1b0 |
Mrdn |
2y ago |
"border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/80", |
| 15 |
88bd1b0 |
Mrdn |
2y ago |
destructive: |
| 16 |
88bd1b0 |
Mrdn |
2y ago |
"border-transparent bg-destructive text-destructive-foreground hover:bg-destructive/80", |
| 17 |
857e289 |
Mrdn |
2y ago |
royal: |
| 18 |
857e289 |
Mrdn |
2y ago |
"border-transparent bg-indigo-300 text-indigo-700 hover:bg-indigo/80", |
| 19 |
857e289 |
Mrdn |
2y ago |
positive: |
| 20 |
857e289 |
Mrdn |
2y ago |
"border-transparent bg-emerald-300 text-emerald-700 hover:bg-emerald/80", |
| 21 |
857e289 |
Mrdn |
2y ago |
disabled: |
| 22 |
857e289 |
Mrdn |
2y ago |
"border-transparent bg-gray-400 text-gray-800 hover:bg-gray/80", |
| 23 |
857e289 |
Mrdn |
2y ago |
warning: |
| 24 |
857e289 |
Mrdn |
2y ago |
"border-transparent bg-amber-300 text-amber-700 hover:bg-amber/80", |
| 25 |
88bd1b0 |
Mrdn |
2y ago |
outline: "text-foreground", |
| 26 |
88bd1b0 |
Mrdn |
2y ago |
}, |
| 27 |
88bd1b0 |
Mrdn |
2y ago |
}, |
| 28 |
88bd1b0 |
Mrdn |
2y ago |
defaultVariants: { |
| 29 |
88bd1b0 |
Mrdn |
2y ago |
variant: "default", |
| 30 |
88bd1b0 |
Mrdn |
2y ago |
}, |
| 31 |
88bd1b0 |
Mrdn |
2y ago |
} |
| 32 |
88bd1b0 |
Mrdn |
2y ago |
) |
| 33 |
88bd1b0 |
Mrdn |
2y ago |
|
| 34 |
88bd1b0 |
Mrdn |
2y ago |
export interface BadgeProps |
| 35 |
88bd1b0 |
Mrdn |
2y ago |
extends React.HTMLAttributes<HTMLDivElement>, |
| 36 |
857e289 |
Mrdn |
2y ago |
VariantProps<typeof badgeVariants> { } |
| 37 |
88bd1b0 |
Mrdn |
2y ago |
|
| 38 |
88bd1b0 |
Mrdn |
2y ago |
function Badge({ className, variant, ...props }: BadgeProps) { |
| 39 |
88bd1b0 |
Mrdn |
2y ago |
return ( |
| 40 |
88bd1b0 |
Mrdn |
2y ago |
<div className={cn(badgeVariants({ variant }), className)} {...props} /> |
| 41 |
88bd1b0 |
Mrdn |
2y ago |
) |
| 42 |
88bd1b0 |
Mrdn |
2y ago |
} |
| 43 |
88bd1b0 |
Mrdn |
2y ago |
|
| 44 |
857e289 |
Mrdn |
2y ago |
type BadgeVariantKeys = |
| 45 |
857e289 |
Mrdn |
2y ago |
| 'default' |
| 46 |
857e289 |
Mrdn |
2y ago |
| 'secondary' |
| 47 |
857e289 |
Mrdn |
2y ago |
| 'destructive' |
| 48 |
857e289 |
Mrdn |
2y ago |
| 'royal' |
| 49 |
857e289 |
Mrdn |
2y ago |
| 'positive' |
| 50 |
857e289 |
Mrdn |
2y ago |
| 'disabled' |
| 51 |
857e289 |
Mrdn |
2y ago |
| 'warning' |
| 52 |
857e289 |
Mrdn |
2y ago |
| 'outline'; |
| 53 |
857e289 |
Mrdn |
2y ago |
|
| 54 |
857e289 |
Mrdn |
2y ago |
export { Badge, badgeVariants, type BadgeVariantKeys } |