@@ -5,25 +5,27 @@ import { cva, type VariantProps } from 'class-variance-authority'
55import { cn } from '@/lib/utils'
66
77const buttonVariants = cva (
8- ' inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-hidden focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg] :size-4 [&_svg]:shrink-0' ,
8+ " inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])] :size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive" ,
99 {
1010 variants : {
1111 variant : {
12- default : 'bg-primary text-primary-foreground hover:bg-primary/90' ,
12+ default :
13+ 'bg-primary text-primary-foreground shadow-xs hover:bg-primary/90' ,
1314 destructive :
14- 'bg-destructive text-destructive-foreground hover:bg-destructive/90' ,
15+ 'bg-destructive text-white shadow-xs hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60 ' ,
1516 outline :
16- 'border border-input bg-background hover:bg-accent hover:text-accent-foreground' ,
17+ 'border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50 ' ,
1718 secondary :
18- 'bg-secondary text-secondary-foreground hover:bg-secondary/80' ,
19- ghost : 'hover:bg-accent hover:text-accent-foreground' ,
19+ 'bg-secondary text-secondary-foreground shadow-xs hover:bg-secondary/80' ,
20+ ghost :
21+ 'hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50' ,
2022 link : 'text-primary underline-offset-4 hover:underline' ,
2123 } ,
2224 size : {
23- default : 'h-10 px-4 py-2' ,
24- sm : 'h-9 rounded-md px-3' ,
25- lg : 'h-11 rounded-md px-8 ' ,
26- icon : 'h-10 w-10 ' ,
25+ default : 'h-9 px-4 py-2 has-[>svg]:px-3 ' ,
26+ sm : 'h-8 rounded-md gap-1.5 px-3 has-[>svg]:px-2.5 ' ,
27+ lg : 'h-10 rounded-md px-6 has-[>svg]:px-4 ' ,
28+ icon : 'size-9 ' ,
2729 } ,
2830 } ,
2931 defaultVariants : {
@@ -33,24 +35,25 @@ const buttonVariants = cva(
3335 }
3436)
3537
36- export interface ButtonProps
37- extends React . ButtonHTMLAttributes < HTMLButtonElement > ,
38- VariantProps < typeof buttonVariants > {
39- asChild ?: boolean
40- }
38+ function Button ( {
39+ className,
40+ variant,
41+ size,
42+ asChild = false ,
43+ ...props
44+ } : React . ComponentProps < 'button' > &
45+ VariantProps < typeof buttonVariants > & {
46+ asChild ?: boolean
47+ } ) {
48+ const Comp = asChild ? Slot : 'button'
4149
42- const Button = React . forwardRef < HTMLButtonElement , ButtonProps > (
43- ( { className, variant, size, asChild = false , ...props } , ref ) => {
44- const Comp = asChild ? Slot : 'button'
45- return (
46- < Comp
47- className = { cn ( buttonVariants ( { variant, size, className } ) ) }
48- ref = { ref }
49- { ...props }
50- />
51- )
52- }
53- )
54- Button . displayName = 'Button'
50+ return (
51+ < Comp
52+ data-slot = "button"
53+ className = { cn ( buttonVariants ( { variant, size, className } ) ) }
54+ { ...props }
55+ />
56+ )
57+ }
5558
5659export { Button , buttonVariants }
0 commit comments