icon.js 763 B

123456789101112131415161718192021222324252627282930313233343536
  1. import React from 'react'
  2. import PropTypes from 'prop-types'
  3. import classNames from 'classnames'
  4. function Icon({ type, spin, modifier, classes = {}, accessibilityLabel }) {
  5. const iconClassName = classNames(
  6. 'fa',
  7. `fa-${type}`,
  8. {
  9. 'fa-spin': spin,
  10. [`fa-${modifier}`]: modifier
  11. },
  12. classes.icon
  13. )
  14. return (
  15. <>
  16. <i className={iconClassName} aria-hidden="true" />
  17. {accessibilityLabel ? (
  18. <span className="sr-only">{accessibilityLabel}</span>
  19. ) : null}
  20. </>
  21. )
  22. }
  23. Icon.propTypes = {
  24. type: PropTypes.string.isRequired,
  25. spin: PropTypes.bool,
  26. modifier: PropTypes.string,
  27. classes: PropTypes.exact({
  28. icon: PropTypes.string
  29. }),
  30. accessibilityLabel: PropTypes.string
  31. }
  32. export default Icon