Spaces:
Running
Running
| import type { ButtonHTMLAttributes, ReactNode } from 'react' | |
| interface ButtonProps extends ButtonHTMLAttributes<HTMLButtonElement> { | |
| variant?: 'primary' | 'secondary' | 'ghost' | |
| size?: 'md' | 'sm' | |
| children: ReactNode | |
| } | |
| export default function Button({ | |
| variant = 'primary', | |
| size = 'md', | |
| className, | |
| children, | |
| ...rest | |
| }: ButtonProps) { | |
| const cls = [ | |
| 'btn', | |
| `btn-${variant}`, | |
| size === 'sm' ? 'btn-sm' : '', | |
| className ?? '', | |
| ] | |
| .filter(Boolean) | |
| .join(' ') | |
| return ( | |
| <button className={cls} {...rest}> | |
| {children} | |
| </button> | |
| ) | |
| } | |