| <template> | 
|   <div class="info-avatar-wrapper"> | 
|     <Avatar | 
|       :size="size === 'normal' ? 40 : 30" | 
|       :class="['info-avatar', { size }]" | 
|       :src="src" | 
|       @click="emit('onAvatarClick')" | 
|     /> | 
|     <div class="user-info"> | 
|       <div class="user-info-item-name">{{ name }}</div> | 
|       <div class="user-info-item-company">{{ company }}</div> | 
|     </div> | 
|   </div> | 
| </template> | 
|   | 
| <script setup lang="ts"> | 
| import Avatar from './Avatar.vue'; | 
|   | 
| defineOptions({ | 
|   name: 'InfoAvatar', | 
| }); | 
|   | 
| type Props = { | 
|   src?: string; | 
|   name?: string; | 
|   company?: string; | 
|   size?: 'normal' | 'small'; | 
| }; | 
|   | 
| const props = withDefaults(defineProps<Props>(), { | 
|   size: 'normal', | 
| }); | 
|   | 
| const emit = defineEmits<{ | 
|   (e: 'onAvatarClick'): void; | 
| }>(); | 
| </script> | 
|   | 
| <style lang="scss"> | 
| @import '@/styles/common.scss'; | 
|   | 
| .info-avatar-wrapper { | 
|   display: flex; | 
|   | 
|   .info-avatar { | 
|     margin-right: 24px; | 
|   | 
|     &.small { | 
|       margin-right: 36px; | 
|     } | 
|   } | 
|   | 
|   .user-info { | 
|     flex: 1; | 
|     min-width: 0; | 
|     display: flex; | 
|     flex-direction: column; | 
|     justify-content: space-between; | 
|   | 
|     .user-info-item-name { | 
|       font-weight: 600; | 
|       font-size: 28px; | 
|       color: boleGetCssVar('text-color', 'primary'); | 
|       line-height: 40px; | 
|       margin-bottom: 8px; | 
|       @include ellipsis; | 
|     } | 
|   | 
|     .user-info-item-company { | 
|       font-weight: 400; | 
|       font-size: 24px; | 
|       color: boleGetCssVar('text-color', 'secondary'); | 
|       line-height: 34px; | 
|     } | 
|   } | 
| } | 
| </style> |