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