MetaPhase-Consulting/State-TalentMAP

View on GitHub
src/Components/Ribbon/Ribbon.jsx

Summary

Maintainability
A
0 mins
Test Coverage
A
100%
import PropTypes from 'prop-types';
import FA from 'react-fontawesome';

const Ribbon = ({ type, className, icon, text, cutSide, containerProps, isWide, showText,
  isWideResults }) => (
  <div
    className={`ribbon-outer-container-cut-${cutSide} ${isWide ? 'ribbon-wide' : ''} ${isWideResults ? 'ribbon-wide-results' : ''} ${className}`}
    {...containerProps}
  >
    <div className={`ribbon ribbon-${type} ribbon-cut-${cutSide}`}>
      <FA name={icon} />
      {
        showText &&
      <span className="text">{text}</span>
      }
    </div>
  </div>
);


Ribbon.propTypes = {
  className: PropTypes.string,
  icon: PropTypes.string,
  text: PropTypes.string,
  containerProps: PropTypes.shape({}),
  type: PropTypes.oneOf(['primary', 'secondary', 'tertiary', 'success', 'hds', 'snd', 'htf', 'cn']),
  cutSide: PropTypes.oneOf(['left', 'right', 'both']),
  isWide: PropTypes.bool,
  showText: PropTypes.bool,
  isWideResults: PropTypes.bool,
};

Ribbon.defaultProps = {
  className: '',
  icon: 'handshake',
  text: '',
  containerProps: {},
  type: 'primary',
  cutSide: 'left',
  isWide: false,
  showText: true,
  isWideResults: false,
};

export default Ribbon;