button.tsx raw
1 import * as React from "react";
2 import { type VariantProps } from "class-variance-authority";
3 import { Slot } from "radix-ui";
4
5 import { cn } from "src/lib/utils";
6 import { buttonVariants } from "src/components/ui/buttonVariants";
7
8 function Button({
9 className,
10 variant = "default",
11 size = "default",
12 asChild = false,
13 ...props
14 }: React.ComponentProps<"button"> &
15 VariantProps<typeof buttonVariants> & {
16 asChild?: boolean;
17 }) {
18 const Comp = asChild ? Slot.Root : "button";
19
20 return (
21 <Comp
22 data-slot="button"
23 data-variant={variant}
24 data-size={size}
25 className={cn(buttonVariants({ variant, size, className }))}
26 {...props}
27 />
28 );
29 }
30
31 export { Button };
32