All files / components/Button Button.tsx

100% Statements 39/39
100% Branches 11/11
100% Functions 1/1
100% Lines 39/39

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 401x 1x 1x 1x 1x 1x 1x 37x 37x 37x 37x 37x 37x 37x 37x 37x 37x 37x 37x 37x 37x 37x 37x 37x 37x 37x 37x 37x 37x 37x 37x 37x 37x 37x 37x 37x 37x 1x 1x  
import { c } from '../../helpers';
import { ButtonSize, ButtonType } from './ButtonConstants';
import type { ButtonProps } from './ButtonProps';
 
import styles from './Button.module.css';
 
const Button = ({
  children,
  className,
  disabled,
  Icon,
  isRound,
  label,
  onClick,
  size = ButtonSize.MEDIUM,
  stretch = false,
  type = ButtonType.DEFAULT,
}: ButtonProps): JSX.Element => {
  return (
    <button
      disabled={disabled}
      className={c(
        styles.button,
        styles[type],
        styles[size],
        stretch ? styles.stretch : '',
        isRound ? styles.is_round : '',
        className
      )}
      onClick={onClick}
      title={isRound ? label : undefined}
    >
      {Icon != null && <Icon className={styles.icon} />}
      {!isRound ? children || <span>{label}</span> : <></>}
    </button>
  );
};
 
export default Button;