1- import { Slot } from "@radix-ui/ react-slot" ;
2- import { cva , type VariantProps } from "class-variance-authority" ;
3- import * as React from "react" ;
1+ import * as React from "react"
2+ import { cva , type VariantProps } from "class-variance-authority"
3+ import { Slot } from "radix-ui"
44
5- import { cn } from "@workspace/ui/lib/utils" ;
5+ import { cn } from "@workspace/ui/lib/utils"
66
77const buttonVariants = cva (
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 " ,
8+ "inline-flex shrink-0 items-center justify-center gap-2 rounded-md text-sm font-medium whitespace-nowrap transition-all outline- none focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring -ring/50 disabled:pointer-events-none disabled:opacity- 50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 " ,
99 {
1010 variants : {
1111 variant : {
1212 default : "bg-primary text-primary-foreground hover:bg-primary/90" ,
1313 destructive :
14- "bg-destructive text-white hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring- destructive/40 dark:bg- destructive/60 " ,
14+ "bg-destructive text-white hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:bg- destructive/60 dark:focus-visible:ring- destructive/40 " ,
1515 outline :
16- "border bg-background text-foreground shadow-xs hover:bg-accent hover:text-accent-foreground dark:bg -input/30 dark:border -input dark:hover:bg-input/50" ,
16+ "border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:border -input dark:bg -input/30 dark:hover:bg-input/50" ,
1717 secondary :
1818 "bg-secondary text-secondary-foreground hover:bg-secondary/80" ,
1919 ghost :
20- "text-foreground hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50" ,
20+ "hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50" ,
2121 link : "text-primary underline-offset-4 hover:underline" ,
2222 } ,
2323 size : {
2424 default : "h-9 px-4 py-2 has-[>svg]:px-3" ,
25- sm : "h-8 rounded-md gap-1.5 px-3 has-[>svg]:px-2.5" ,
25+ xs : "h-6 gap-1 rounded-md px-2 text-xs has-[>svg]:px-1.5 [&_svg:not([class*='size-'])]:size-3" ,
26+ sm : "h-8 gap-1.5 rounded-md px-3 has-[>svg]:px-2.5" ,
2627 lg : "h-10 rounded-md px-6 has-[>svg]:px-4" ,
2728 icon : "size-9" ,
29+ "icon-xs" : "size-6 rounded-md [&_svg:not([class*='size-'])]:size-3" ,
2830 "icon-sm" : "size-8" ,
2931 "icon-lg" : "size-10" ,
3032 } ,
@@ -33,28 +35,30 @@ const buttonVariants = cva(
3335 variant : "default" ,
3436 size : "default" ,
3537 } ,
36- } ,
37- ) ;
38+ }
39+ )
3840
3941function Button ( {
4042 className,
41- variant,
42- size,
43+ variant = "default" ,
44+ size = "default" ,
4345 asChild = false ,
4446 ...props
4547} : React . ComponentProps < "button" > &
4648 VariantProps < typeof buttonVariants > & {
47- asChild ?: boolean ;
49+ asChild ?: boolean
4850 } ) {
49- const Comp = asChild ? Slot : "button" ;
51+ const Comp = asChild ? Slot . Root : "button"
5052
5153 return (
5254 < Comp
5355 data-slot = "button"
56+ data-variant = { variant }
57+ data-size = { size }
5458 className = { cn ( buttonVariants ( { variant, size, className } ) ) }
5559 { ...props }
5660 />
57- ) ;
61+ )
5862}
5963
60- export { Button , buttonVariants } ;
64+ export { Button , buttonVariants }
0 commit comments