All files / Button Button.jsx

100% Statements 22/22
60% Branches 3/5
100% Functions 1/1
100% Lines 22/22

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 40 41 42 43 441x 1x 1x   1x 1x 1x   1x       1x       1x       1x       1x 1x         1x 4x   4x 4x 4x 4x 4x   4x 4x   4x  
import React from 'react';
import PropTypes from 'prop-types';
import './button.css';
 
const SM = 'small';
const MD = 'medium';
const LG = 'large';
 
Button.propTypes = {
  /**
   * Is this the principal call to action on the page?
   */
  primary: PropTypes.bool,
  /**
   * How large should the button be?
   */
  size: PropTypes.oneOf([SM, MD, LG]),
  /**
   * Button contents
   */
  label: PropTypes.string.isRequired,
  /**
   * Optional click handler
   */
  onClick: PropTypes.func
};
 
/**
 * Primary UI component for user interaction
 */
export function Button({ primary = false, size = MD, label, ...props }) {
  const mode = primary ? 'storybook-button--primary' : 'storybook-button--secondary';
 
  return (
    <button
      {...props}
      type="button"
      className={['storybook-button', `storybook-button--${size}`, mode].join(' ')}
    >
      {label}
    </button>
  );
}