Files
TurboHR/frontend/src/components/ui/Button.tsx
T

30 lines
1009 B
TypeScript

import { ButtonHTMLAttributes } from 'react'
import clsx from 'clsx'
interface ButtonProps extends ButtonHTMLAttributes<HTMLButtonElement> {
variant?: 'primary' | 'secondary' | 'danger'
size?: 'sm' | 'md' | 'lg'
}
export default function Button({ variant = 'primary', size = 'md', className, children, ...props }: ButtonProps) {
return (
<button
className={clsx(
'inline-flex items-center justify-center font-medium rounded-md transition-colors disabled:opacity-50 disabled:cursor-not-allowed',
{
'bg-primary text-white hover:bg-primary-dark': variant === 'primary',
'bg-gray-100 text-gray-700 hover:bg-gray-200': variant === 'secondary',
'bg-danger text-white hover:bg-red-700': variant === 'danger',
'px-3 py-1.5 text-xs': size === 'sm',
'px-4 py-2 text-sm': size === 'md',
'px-5 py-2.5 text-base': size === 'lg',
},
className,
)}
{...props}
>
{children}
</button>
)
}