Button.tsx 767 B

1234567891011121314151617181920212223242526
  1. import { ButtonHTMLAttributes, FunctionComponent, MouseEventHandler } from 'react';
  2. import classnames from 'classnames';
  3. import styles from './button.module.css';
  4. interface ButtonProps extends ButtonHTMLAttributes<HTMLButtonElement> {
  5. color?: 'default' | 'primary' | 'secondary' | 'outline',
  6. size?: 'small' | 'medium' | 'large',
  7. onClick?: MouseEventHandler<HTMLButtonElement>,
  8. }
  9. export const Button: FunctionComponent<ButtonProps> = ({ children, onClick, color, size, type, ...props }) => (
  10. <button
  11. className={classnames(styles.button, styles[`${color}Color`], styles[`${size}Size`])}
  12. onClick={onClick}
  13. type={type}
  14. {...props}
  15. >
  16. {children}
  17. </button>
  18. );
  19. Button.defaultProps = {
  20. color: 'default',
  21. size: 'medium',
  22. type: 'button'
  23. }