File size: 1,040 Bytes
8a37e0a
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
import { Flex, Icon, Image } from '@invoke-ai/ui-library';
import { typedMemo } from 'common/util/typedMemo';
import { PiImage } from 'react-icons/pi';

type Props = {
  image_url?: string | null;
};

export const MODEL_IMAGE_THUMBNAIL_SIZE = '40px';
const FALLBACK_ICON_SIZE = '24px';

const ModelImage = ({ image_url }: Props) => {
  if (!image_url) {
    return (
      <Flex
        height={MODEL_IMAGE_THUMBNAIL_SIZE}
        minWidth={MODEL_IMAGE_THUMBNAIL_SIZE}
        bg="base.650"
        borderRadius="base"
        alignItems="center"
        justifyContent="center"
      >
        <Icon color="base.500" as={PiImage} boxSize={FALLBACK_ICON_SIZE} />
      </Flex>
    );
  }

  return (
    <Image
      src={image_url}
      objectFit="cover"
      objectPosition="50% 50%"
      height={MODEL_IMAGE_THUMBNAIL_SIZE}
      width={MODEL_IMAGE_THUMBNAIL_SIZE}
      minHeight={MODEL_IMAGE_THUMBNAIL_SIZE}
      minWidth={MODEL_IMAGE_THUMBNAIL_SIZE}
      borderRadius="base"
    />
  );
};

export default typedMemo(ModelImage);