icon.js 759 B

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