icon_with_badge.tsx 637 B

123456789101112131415161718192021222324252627
  1. import type { IconProp } from './icon';
  2. import { Icon } from './icon';
  3. const formatNumber = (num: number): number | string => (num > 40 ? '40+' : num);
  4. interface Props {
  5. id: string;
  6. icon: IconProp;
  7. count: number;
  8. issueBadge: boolean;
  9. className: string;
  10. }
  11. export const IconWithBadge: React.FC<Props> = ({
  12. id,
  13. icon,
  14. count,
  15. issueBadge,
  16. className,
  17. }) => (
  18. <i className='icon-with-badge'>
  19. <Icon id={id} icon={icon} className={className} />
  20. {count > 0 && (
  21. <i className='icon-with-badge__badge'>{formatNumber(count)}</i>
  22. )}
  23. {issueBadge && <i className='icon-with-badge__issue-badge' />}
  24. </i>
  25. );