Files
panel/resources/js/views/pages/cards/card-advance/CardAdvanceSalesByCountries.vue

121 lines
2.6 KiB
Vue
Raw Normal View History

2025-08-04 16:33:07 +03:30
<script setup>
import auFlag from '@images/icons/countries/au.png'
import brFlag from '@images/icons/countries/br.png'
import cnFlag from '@images/icons/countries/cn.png'
import frFlag from '@images/icons/countries/fr.png'
import inFlag from '@images/icons/countries/in.png'
import usFlag from '@images/icons/countries/us.png'
const salesByCountries = [
{
avatarImg: usFlag,
stats: '$8,567k',
subtitle: 'United states',
profitLoss: 25.8,
},
{
avatarImg: brFlag,
stats: '$2,415k',
subtitle: 'Brazil',
profitLoss: -6.2,
},
{
avatarImg: inFlag,
stats: '$865k',
subtitle: 'India',
profitLoss: 12.4,
},
{
avatarImg: auFlag,
stats: '$745k',
subtitle: 'Australia',
profitLoss: -11.9,
},
{
avatarImg: frFlag,
stats: '$45',
subtitle: 'France',
profitLoss: 16.2,
},
{
avatarImg: cnFlag,
stats: '$12k',
subtitle: 'China',
profitLoss: 14.8,
},
]
const moreList = [
{
title: 'Refresh',
value: 'refresh',
},
{
title: 'Download',
value: 'Download',
},
{
title: 'View All',
value: 'View All',
},
]
</script>
<template>
<VCard
title="Sales by Countries"
subtitle="Monthly Sales Overview"
>
<template #append>
<div class="mt-n4 me-n2">
<MoreBtn :menu-list="moreList" />
</div>
</template>
<VCardText>
<VList class="card-list">
<VListItem
v-for="country in salesByCountries"
:key="country.stats"
>
<template #prepend>
<VAvatar
size="34"
color="secondary"
variant="tonal"
class="me-1"
:image="country.avatarImg"
/>
</template>
<VListItemTitle class="font-weight-medium">
{{ country.stats }}
</VListItemTitle>
<VListItemSubtitle>
{{ country.subtitle }}
</VListItemSubtitle>
<template #append>
<div :class="`d-flex align-center ${country.profitLoss > 0 ? 'text-success' : 'text-error'}`">
<VIcon
:icon="country.profitLoss > 0 ? 'tabler-chevron-up' : 'tabler-chevron-down'"
size="20"
class="me-1"
/>
<div class="font-weight-medium">
{{ Math.abs(country.profitLoss) }}%
</div>
</div>
</template>
</VListItem>
</VList>
</VCardText>
</VCard>
</template>
<style lang="scss" scoped>
.card-list {
--v-card-list-gap: 1rem;
}
</style>