|
2 | 2 | <ActiveCard padding="none" class="flex flex-col gap-2.5 group"> |
3 | 3 | <div class="relative"> |
4 | 4 | <img |
5 | | - :src="partner.avatarUrl ?? undefined" |
| 5 | + :src="partnerUser?.avatarUrl ?? undefined" |
6 | 6 | alt="" |
7 | 7 | class="aspect-square w-full rounded-lg duration-200" |
8 | 8 | :class="{ 'opacity-75 grayscale group-hover:grayscale-0 group-hover:opacity-100': imagesMode === 'grayscale' }" |
9 | 9 | > |
10 | 10 |
|
| 11 | + <div class="absolute top-2 left-2 right-0 w-full"> |
| 12 | + <UBadge |
| 13 | + color="neutral" |
| 14 | + variant="solid" |
| 15 | + size="lg" |
| 16 | + class="rounded-lg" |
| 17 | + > |
| 18 | + {{ partner.priceLevel }} уровень |
| 19 | + </UBadge> |
| 20 | + </div> |
| 21 | + |
11 | 22 | <div |
12 | 23 | class="absolute top-2 left-0 right-0 w-full opacity-0 group-hover:opacity-100 duration-200" |
13 | 24 | :class="[ |
|
33 | 44 | /> |
34 | 45 | </div> |
35 | 46 | </div> |
36 | | - </div> |
37 | 47 |
|
38 | | - <div class="min-h-20 h-full px-2.5 pb-2 flex flex-col gap-2.5"> |
39 | | - <div class="flex flex-row items-center gap-2"> |
40 | | - <UBadge |
41 | | - color="neutral" |
42 | | - variant="outline" |
43 | | - size="xl" |
| 48 | + <div class="absolute bottom-2 left-2 right-2 w-full"> |
| 49 | + <UAvatarGroup |
| 50 | + :max="2" |
| 51 | + size="sm" |
| 52 | + :ui="{ |
| 53 | + base: '-me-3', |
| 54 | + }" |
44 | 55 | > |
45 | | - {{ partner.priceLevel }} |
46 | | - </UBadge> |
47 | | - |
48 | | - <h3 class="text-base/5 font-bold"> |
49 | | - {{ partner.name }} {{ partner.surname }} |
50 | | - </h3> |
| 56 | + <UAvatar |
| 57 | + v-for="user in otherUsers" |
| 58 | + :key="user.id" |
| 59 | + :src="user?.avatarUrl ?? undefined" |
| 60 | + alt="" |
| 61 | + :class="{ 'opacity-75 grayscale group-hover:grayscale-0 group-hover:opacity-100': imagesMode === 'grayscale' }" |
| 62 | + /> |
| 63 | + </UAvatarGroup> |
51 | 64 | </div> |
| 65 | + </div> |
52 | 66 |
|
53 | | - <p class="text-sm/4 text-muted line-clamp-3"> |
| 67 | + <div class="min-h-20 h-full px-2.5 pb-2 flex flex-col gap-2.5"> |
| 68 | + <h3 class="text-sm/4 font-bold"> |
54 | 69 | {{ partner.legalEntity?.name }} |
55 | | - </p> |
| 70 | + </h3> |
56 | 71 |
|
57 | 72 | <p class="text-sm/4 text-muted line-clamp-4"> |
58 | 73 | {{ partner.city }} |
|
62 | 77 | </template> |
63 | 78 |
|
64 | 79 | <script setup lang="ts"> |
65 | | -import type { Partner } from '@roll-stack/database' |
66 | | -import type { PartnerLegalEntityWithData } from '~/stores/partner' |
| 80 | +import type { PartnerWithData } from '~/stores/partner' |
67 | 81 |
|
68 | 82 | const { partner } = defineProps<{ |
69 | | - partner: Partner & { |
70 | | - legalEntity: PartnerLegalEntityWithData | null |
71 | | - } |
| 83 | + partner: PartnerWithData |
72 | 84 | }>() |
73 | 85 |
|
74 | 86 | const { imagesMode } = useApp() |
75 | 87 |
|
| 88 | +const partnerUser = computed(() => partner.users.filter((user) => user.type === 'partner')[0]) |
| 89 | +const otherUsers = computed(() => partner.users.filter((user) => user.type !== 'partner')) |
| 90 | +
|
76 | 91 | const minimalAgreement = computed(() => partner.legalEntity?.agreements.filter((agreement) => agreement.isActive).toSorted((a, b) => new Date(a.willEndAt ?? '').getTime() - new Date(b.willEndAt ?? '').getTime())[0]) |
77 | 92 |
|
78 | 93 | const agreementProgress = computed(() => { |
|
0 commit comments