37 lines
688 B
TypeScript
37 lines
688 B
TypeScript
import { forwardRef, type ButtonHTMLAttributes, type ReactNode } from "react";
|
|
|
|
import {
|
|
buttonClass,
|
|
type ButtonSize,
|
|
type ButtonVariant,
|
|
} from "@/lib/ui/variants";
|
|
|
|
interface ButtonProps extends ButtonHTMLAttributes<HTMLButtonElement> {
|
|
children: ReactNode;
|
|
variant?: ButtonVariant;
|
|
size?: ButtonSize;
|
|
}
|
|
|
|
export const Button = forwardRef<HTMLButtonElement, ButtonProps>(function Button(
|
|
{
|
|
children,
|
|
className,
|
|
variant,
|
|
size,
|
|
type = "button",
|
|
...props
|
|
},
|
|
ref,
|
|
) {
|
|
return (
|
|
<button
|
|
ref={ref}
|
|
type={type}
|
|
className={buttonClass({ variant, size, className })}
|
|
{...props}
|
|
>
|
|
{children}
|
|
</button>
|
|
);
|
|
});
|