fileIcon.tsx 808 B

1234567891011121314151617181920212223242526272829303132
  1. import React from 'react';
  2. import {IconFile} from 'app/icons';
  3. import {fileExtensionToPlatform, getFileExtension} from 'app/utils/fileExtension';
  4. import theme from 'app/utils/theme';
  5. type Props = {
  6. fileName: string;
  7. size?: string;
  8. className?: string;
  9. };
  10. const FileIcon = ({fileName, size: providedSize = 'sm', className}: Props) => {
  11. const fileExtension = getFileExtension(fileName);
  12. const iconName = fileExtension ? fileExtensionToPlatform(fileExtension) : null;
  13. const size = theme.iconSizes[providedSize] ?? providedSize;
  14. if (!iconName) {
  15. return <IconFile size={size} className={className} />;
  16. }
  17. return (
  18. <img
  19. src={require(`platformicons/svg/${iconName}.svg`)}
  20. width={size}
  21. height={size}
  22. className={className}
  23. />
  24. );
  25. };
  26. export default FileIcon;