aboutsummaryrefslogtreecommitdiff
path: root/src/components/user_avatar/user_avatar.vue
blob: 29e03bcb23d12b19bc67e998afc1b327e87d632b (plain)
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
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
<template>
  <StillImage
    v-if="user"
    class="Avatar"
    :alt="user.screen_name_ui"
    :title="user.screen_name_ui"
    :src="imgSrc(user.profile_image_url_original)"
    :class="{ 'avatar-compact': compact, 'better-shadow': betterShadow }"
    :image-load-error="imageLoadError"
  >
    <FAIcon v-if="bot" icon="robot" class="bot-indicator" />
  </StillImage>
  <div
    v-else
    class="Avatar -placeholder"
    :class="{ 'avatar-compact': compact }"
  />
</template>

<script src="./user_avatar.js"></script>
<style lang="scss">
@import '../../_variables.scss';

.Avatar {
  --_avatarShadowBox: var(--avatarStatusShadow);
  --_avatarShadowFilter: var(--avatarStatusShadowFilter);
  --_avatarShadowInset: var(--avatarStatusShadowInset);
  --_still-image-label-visibility: hidden;

  width: 48px;
  height: 48px;
  box-shadow: var(--_avatarShadowBox);
  border-radius: $fallback--avatarRadius;
  border-radius: var(--avatarRadius, $fallback--avatarRadius);

  img {
    width: 100%;
    height: 100%;
  }

  & > .bot-indicator {
    position: absolute;
    bottom: 0;
    right: 0;
  }

  &.better-shadow {
    box-shadow: var(--_avatarShadowInset);
    filter: var(--_avatarShadowFilter);
  }

  &.animated::before {
    display: none;
  }

  &.avatar-compact {
    width: 32px;
    height: 32px;
    border-radius: $fallback--avatarAltRadius;
    border-radius: var(--avatarAltRadius, $fallback--avatarAltRadius);
  }

  &.-placeholder {
    background-color: $fallback--fg;
    background-color: var(--fg, $fallback--fg);
  }
}
</style>