icon.tsx 669 B

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