first commit

This commit is contained in:
Yusron alamsyah
2026-03-26 09:11:29 +07:00
commit 1f94c60e71
582 changed files with 46459 additions and 0 deletions
+18
View File
@@ -0,0 +1,18 @@
<template>
<v-card elevation="0" rounded="md" class="bg-lightinfo mt-6">
<v-card-item class="py-0">
<v-row class="d-flex align-center">
<v-col cols="12" sm="7">
<h5 class="text-h5 pt-3 mb-4">Track your every Transaction Easily</h5>
<p class="topacity-80 mb-1 textSecondary text-body-1 lh-md">Track and record your every income and expence easily to control your balance</p>
<v-btn flat color="info" class="mt-4" size="large">Download</v-btn>
</v-col>
<v-col cols="12" sm="5">
<div class="px-11 pt-5 pb-0">
<img src="@/assets/images/backgrounds/track-bg.png" height="215" class="mb-n10 ml-sm-5" alt="image"/>
</div>
</v-col>
</v-row>
</v-card-item>
</v-card>
</template>
+12
View File
@@ -0,0 +1,12 @@
<template>
<v-card elevation="10" class=" mt-6">
<v-card-item class="text-center">
<img src="@/assets/images/backgrounds/maintenance.svg" width="200" alt="image" />
<h5 class="text-h5 pt-3 mb-0">Oops something went wrong!</h5>
<p class="text-body-1 mt-3 textSecondary">
Trying again to bypasses these<br> temporary error.
</p>
<v-btn flat class="mt-4" size="large" color="error">Retry</v-btn>
</v-card-item>
</v-card>
</template>
+12
View File
@@ -0,0 +1,12 @@
<template>
<v-card elevation="10" class=" mt-6">
<v-card-item class="text-center">
<img src="@/assets/images/products/empty-shopping-cart.svg" alt="image" width="200" />
<h5 class="text-h5 pt-3 mb-0">Oop, Your cart is empty!</h5>
<p class="text-body-1 mt-3 textSecondary">
Get back to shopping and get rewards from it.
</p>
<v-btn flat class="mt-4" size="large" color="primary">Go for shopping</v-btn>
</v-card-item>
</v-card>
</template>
+13
View File
@@ -0,0 +1,13 @@
<template>
<v-card elevation="10" class=" mt-sm-0 mt-6">
<v-card-item class="text-center">
<p class="text-body-1 mb-4 textSecondary">LEVEL UP</p>
<img src="@/assets/images/backgrounds/gold.png" alt="image" width="150" />
<h5 class="text-h5 pt-3 mb-0">You reach all Notifications</h5>
<p class="text-body-1 mt-3 textSecondary">
Congratulations,<br> Tap to continue next task.
</p>
<v-btn flat color="primary" class="mt-4" size="large">Yes, Got it!</v-btn>
</v-card-item>
</v-card>
</template>
+25
View File
@@ -0,0 +1,25 @@
<template>
<v-card elevation="10" class=" mt-6">
<v-card-item class="text-center">
<h5 class="text-h5 mb-6">Mutual Friend Revealed</h5>
<v-badge content="1" color="error"
offset-x="18"
offset-y="18"
>
<v-avatar size="140">
<img src="@/assets/images/profile/user-3.jpg" height="140" alt="image" />
</v-avatar>
</v-badge>
<h5 class="text-h5 pt-3 mt-3 mb-0">Tommoie Henderson</h5>
<p class="text-body-1 mt-3 textSecondary">
Accept the request and<br> type a message
</p>
<div class="d-flex justify-center gap-3 mt-4">
<v-btn flat color="primary" size="large">accept</v-btn>
<v-btn flat variant="tonal" size="large" color="error">remove</v-btn>
</div>
</v-card-item>
</v-card>
</template>
+17
View File
@@ -0,0 +1,17 @@
<script setup lang="ts">
import { Icon } from '@iconify/vue';
</script>
<template>
<v-card elevation="10" class="bg-primary-gt position-relative profit-card overflow-hidden">
<v-card-item>
<v-row>
<v-col cols="12" md="6">
<h5 class="text-h5 text-white mb-4">Welcome back David!</h5>
<p class="opacity-80 mb-1 text-white text-body-1 lh-md">You have earned 54% more than last month which is great thing.</p>
<v-btn flat color="error" size="large" class="mt-4">check</v-btn>
</v-col>
</v-row>
</v-card-item>
<img src="@/assets/images/backgrounds/welcome-bg2.png" alt="matdash-img" class="position-absolute" />
</v-card>
</template>
+45
View File
@@ -0,0 +1,45 @@
<script setup lang="ts">
import { blogCard } from '@/_mockApis/components/widget/card';
</script>
<template>
<v-row>
<v-col cols="12" md="4" sm="4" v-for="card in blogCard" :key="card.title">
<v-card elevation="10" rounded="md" class="card-hover">
<div>
<v-img :src="card.coveravatar" height="250px" cover class="rounded-t-md align-end text-right">
<v-card-item
><v-chip class="bg-surface text-body-2 font-weight-medium" size="small" rounded="sm" v-text="card.read"></v-chip
></v-card-item>
</v-img>
<v-avatar size="40" class="mt-n7 mx-6">
<img :src="card.avatar" alt="icon" height="40" />
</v-avatar>
<v-card-item class="pt-4">
<v-chip class="text-body-2 font-weight-medium bg-light" size="small" rounded="sm" v-text="card.category"></v-chip>
<h5 class="text-h5 text-13 my-6 custom-text-primary">
<RouterLink class="text-decoration-none color-inherits custom-title" :to="card.link">{{ card.title }}</RouterLink>
</h5>
<div class="d-flex align-center justify-space-between">
<div>
<v-avatar class="" size="18">
<EyeIcon size="18" class="text-textPrimary" />
</v-avatar>
<span class="text-subtitle-1 ml-2 textSecondary" v-text="card.view"></span>
<v-avatar class="ml-4" size="18">
<Message2Icon size="18" class="text-textPrimary" />
</v-avatar>
<span class="text-subtitle-1 ml-2 textSecondary" v-text="card.comments"></span>
</div>
<div>
<v-avatar size="10">
<CircleIcon size="10" class="text-textPrimary" />
</v-avatar>
<span class="text-subtitle-2 ml-2 textSecondary" v-text="card.time"></span>
</div>
</div>
</v-card-item>
</div>
</v-card>
</v-col>
</v-row>
</template>
@@ -0,0 +1,23 @@
<script setup lang="ts">
import {followerCard} from '@/_mockApis/components/widget/card';
</script>
<template>
<v-row class="pt-3">
<v-col cols="12" md="4" v-for="card in followerCard" :key="card.title">
<v-card elevation="10" rounded="md">
<v-card-item>
<div class="d-flex align-center">
<v-avatar size="40" >
<img :src="card.avatar" :alt="card.avatar" width="40"/>
</v-avatar>
<div class="pl-4 mt-n1">
<h5 class="text-h5" v-text="card.title"></h5>
<p class="text-body-1 textSecondary d-flex align-center"><MapPinIcon size="15" class="mr-1"/>{{card.location}}</p>
</div>
<v-btn class="ml-auto" color="primary" flat>Follow</v-btn>
</div>
</v-card-item>
</v-card>
</v-col>
</v-row>
</template>
+39
View File
@@ -0,0 +1,39 @@
<script setup lang="ts">
import { ref } from 'vue';
import img1 from '@/assets/images/products/s1.jpg';
import img2 from '@/assets/images/products/s2.jpg';
/*import tabler icons*/
import { GiftIcon } from 'vue-tabler-icons';
const gift = [
{
title: 'Andrew Grant',
avatar: img1
},
{
title: 'Leo Pratt',
avatar: img2
}
];
</script>
<template>
<v-row>
<v-col cols="12" md="6" v-for="card in gift" :key="card.title">
<v-card elevation="10" rounded="md">
<v-card-item>
<div class="d-flex align-center justify-space-between">
<h5 class="text-h6" v-text="card.title"></h5>
<v-btn size="30" icon variant="flat" class="mx-1">
<v-avatar size="25" >
<GiftIcon class="text-secondary" size="20" />
</v-avatar>
</v-btn>
</div>
<v-avatar rounded="lg" class="w-100 mt-2 mb-6" size="160" cla>
<img :src="card.avatar" :alt="card.avatar" class="w-100"/>
</v-avatar>
<v-btn color="primary" block flat>Gift to Friend ($50.00)</v-btn>
</v-card-item>
</v-card>
</v-col>
</v-row>
</template>
+40
View File
@@ -0,0 +1,40 @@
<script setup lang="ts">
import {musicCard} from '@/_mockApis/components/widget/card';
</script>
<template>
<v-row>
<v-col cols="12" md="4" v-for="card in musicCard" :key="card.title">
<v-card elevation="10" class="overflow-visible">
<v-row class="mt-md-0 mt-sm-3 mt-3">
<v-col cols="6" sm="6">
<v-card-item class="pb-3">
<h5 class="text-h5" v-text="card.title"></h5>
<div class="text-body-1 textSecondary mt-1" v-text="card.subheader"></div>
<div class="d-flex align-center justify-center mt-8 ">
<v-btn size="20" icon variant="flat" class="grey100">
<v-avatar size="20">
<PlayerSkipBackIcon size="15" color="grey100" />
</v-avatar>
</v-btn>
<v-btn size="20" icon variant="flat" class="mx-6 text-error">
<v-avatar size="20">
<PlayerPlayIcon size="15" class="text-error" />
</v-avatar>
</v-btn>
<v-btn size="20" icon variant="flat" class="grey100">
<v-avatar size="20">
<PlayerSkipForwardIcon size="15" />
</v-avatar>
</v-btn>
</div>
</v-card-item>
</v-col>
<v-col cols="6" sm="6" class="py-0 pl-0">
<img :src="card.img" class="rounded-e-md w-100 h-100 obj-cover"></img>
</v-col>
</v-row>
</v-card>
</v-col>
</v-row>
</template>
@@ -0,0 +1,24 @@
<script setup lang="ts">
import { paymentGateways } from '@/_mockApis/components/widget/card';
</script>
<template>
<v-card elevation="10" >
<v-card-item>
<v-card-title class="text-h5">Payment Gateways</v-card-title>
<v-card-subtitle class="text-subtitle-1 ">Platform For Income</v-card-subtitle>
<div class="mt-sm-10 mt-5">
<div class="d-flex gap-3 align-center mt-6" v-for="list in paymentGateways" :key="list.title">
<v-avatar :class="'rounded-md bg-light' + list.bgcolor" size="45">
<img :src="list.img" :alt="list.img" width="25" />
</v-avatar>
<div>
<h5 class="text-h6 mb-1">{{ list.title }}</h5>
<p class="text-subtitle-1 textSecondary">{{ list.subtitle }}</p>
</div>
<div :class="'ml-auto font-weight-semibold text-subtitle-1 text-medium-' + list.disable">{{ list.rank }}</div>
</div>
<v-btn class="mt-10" block flat color="primary">View all transactions</v-btn>
</div>
</v-card-item>
</v-card>
</template>
+36
View File
@@ -0,0 +1,36 @@
<script setup lang="ts">
import { productsCard } from '@/_mockApis/components/widget/card';
</script>
<template>
<v-row>
<v-col cols="12" lg="3" sm="6" v-for="card in productsCard" :key="card.title">
<v-card elevation="10" rounded="md" class="card-hover overflow-hidden">
<RouterLink :to="card.link" >
<v-img :src="card.photo" height="100%" class="rounded-t-md"></v-img>
</RouterLink>
<div class="d-flex justify-end mr-3 mt-n4">
<v-btn size="30" icon variant="flat" class="bg-primary d-flex">
<v-avatar size="30" class="text-white">
<BasketIcon size="17" />
</v-avatar>
<v-tooltip
activator="parent"
location="bottom"
>Add To Cart
</v-tooltip>
</v-btn>
</div>
<v-card-item class="pa-6 pt-1">
<h6 class="text-h6" v-text="card.title"></h6>
<div class="d-flex align-center justify-space-between mt-1">
<div>
<span class="text-h6" v-text="'$'+ card.price"></span>
<span class="text-body-1 ml-2 text-medium-emphasis text-decoration-line-through" v-text="'$'+ card.salesPrice"></span>
</div>
<v-rating density="compact" color="warning" size="small" v-model="card.rating" readonly></v-rating>
</div>
</v-card-item>
</v-card>
</v-col>
</v-row>
</template>
+28
View File
@@ -0,0 +1,28 @@
<script setup lang="ts">
import {profileCards, socialiconCard} from '@/_mockApis/components/widget/card';
</script>
<template>
<v-row>
<v-col cols="12" md="4" v-for="card in profileCards" :key="card.title">
<v-card elevation="10" class=" text-center" rounded="md">
<v-card-item>
<v-avatar size="80">
<img :src="card.avatar" :alt="card.avatar" width="80"/>
</v-avatar>
<div class="mt-4">
<h5 class="text-h5" v-text="card.title"></h5>
<p class="text-body-2 mt-1 textSecondary " v-text="card.subtitle"></p>
</div>
</v-card-item>
<v-divider class="mt-1"></v-divider>
<div class="text-center d-flex justify-center pa-3">
<v-btn size="30" icon variant="flat" v-for="icon in socialiconCard" :key="icon.name">
<v-avatar size="22">
<component :is="icon.icon" :class="'text-'+ icon.color" stroke-width="2" size="18" />
</v-avatar>
</v-btn>
</div>
</v-card>
</v-col>
</v-row>
</template>
+46
View File
@@ -0,0 +1,46 @@
<script setup lang="ts">
import { ref } from 'vue';
/*import tabler icons*/
import { VolumeIcon,MessageIcon } from 'vue-tabler-icons';
const slider = ref(50);
const model = ref(false);
</script>
<template>
<v-card elevation="10" rounded="md">
<v-card-item>
<v-card-title class="text-h5">Settings</v-card-title>
<div class="d-flex mt-5">
<v-avatar class="rounded-md bg-primary" size="48">
<VolumeIcon size="22" />
</v-avatar>
<div class="pl-4 w-100">
<div class="d-flex align-center justify-space-between">
<h6 class="text-h6">Sound</h6>
<p class="text-subtitle-1 textSecondary">45%</p>
</div>
<v-slider v-model="slider" hide-details class="ml-0" color="primary"></v-slider>
</div>
</div>
<v-divider class="mt-4"></v-divider>
<div class="d-flex mt-4">
<v-avatar class="rounded-md bg-secondary" size="48">
<MessageIcon size="22" class="text-surface"/>
</v-avatar>
<div class="pl-4 w-100 d-flex align-center">
<div class="">
<h6 class="text-h6 mb-1">Chat</h6>
<p class="text-subtitle-1 textSecondary">Turn on chat during call</p>
</div>
<div class="ml-auto">
<v-switch v-model="model" hide-details color="primary" inset ></v-switch>
</div>
</div>
</div>
<v-divider class="mt-4"></v-divider>
<div class="d-flex justify-end mt-4 gap-3">
<v-btn color="error" variant="tonal">Cancel</v-btn>
<v-btn color="primary">save</v-btn>
</div>
</v-card-item>
</v-card>
</template>
@@ -0,0 +1,23 @@
<script setup lang="ts">
import {upcommingCards} from '@/_mockApis/components/widget/card';
</script>
<template>
<v-card elevation="10" >
<v-card-item class="pb-sm-8 pb-6">
<v-card-title class="text-h5">Upcoming Activity</v-card-title>
<v-card-subtitle class="text-subtitle-1 ">In New year</v-card-subtitle>
<div class="">
<div class="d-flex align-center mt-6" v-for="list in upcommingCards" :key="list.title">
<v-avatar :class="'rounded-md bg-light'+ list.bgcolor" size="45">
<component :is="list.icon" :class="'text-'+ list.bgcolor" stroke-width="2" size="20" />
</v-avatar>
<div class="pl-4 ">
<h5 class="text-h6 mb-1" v-text="list.title"></h5>
<p class="text-subtitle-1 textSecondary" v-text="list.subtitle"></p>
</div>
<div class="ml-auto font-weight-medium text-subtitle-1 textSecondary" v-text="list.rank"></div>
</div>
</div>
</v-card-item>
</v-card>
</template>
+31
View File
@@ -0,0 +1,31 @@
<script setup lang="ts">
import { userCards } from '@/_mockApis/components/widget/card';
</script>
<template>
<v-row>
<v-col cols="12" md="3" sm="6" v-for="card in userCards" :key="card.title">
<v-card elevation="10" rounded="md">
<v-card-item>
<v-avatar size="80" >
<img :src="card.avatar" :alt="card.avatar" width="80"/>
</v-avatar>
<div class="mt-6">
<h5 class="text-h5 mb-2" v-text="card.title"></h5>
<div class="d-flex align-center justify-space-between">
<div class="ml-2 d-flex ">
<v-avatar size="32" class="ml-n2 avtar-border" v-for="user in card.userGroup" :key="user.icon">
<img :src="user.icon" alt="avatar" height="32"/>
</v-avatar>
</div>
<p class="text-subtitle-1 textSecondary">{{card.subtitle}}</p>
</div>
</div>
<div class="mt-6">
<v-btn color="primary" variant="tonal" block >Add friend</v-btn>
<v-btn color="secondary" variant="tonal" class="mt-3" block >Remove</v-btn>
</div>
</v-card-item>
</v-card>
</v-col>
</v-row>
</template>
+267
View File
@@ -0,0 +1,267 @@
<script setup lang="ts">
import { ref } from 'vue';
import { computed } from 'vue';
import { useTheme } from 'vuetify';
/* Chart Color */
const theme = useTheme();
const primary = theme.current.value.colors.primary;
const lightprimary = theme.current.value.colors.lightprimary;
const secondary = theme.current.value.colors.secondary;
/* Chart 1 */
const chartOptions = computed(() => {
return {
chart: {
type: 'bar',
height: 200,
fontFamily: `inherit`,
toolbar: {
show: false
},
stacked: true,
sparkline: {
enabled: true
}
},
colors: [primary, primary],
plotOptions: {
bar: {
horizontal: false,
barHeight: '60%',
columnWidth: '20%',
borderRadius: [6],
borderRadiusApplication: 'end',
borderRadiusWhenStacked: 'all'
}
},
stroke: {
show: false
},
dataLabels: {
enabled: false
},
legend: {
show: false
},
grid: {
show: false,
padding: {
top: 0,
right: 0,
bottom: 0,
left: 0
}
},
yaxis: {
min: -5,
max: 5,
tickAmount: 4
},
xaxis: {
categories: ['Jan', 'Feb', 'Mar', 'Apr', 'May'],
axisTicks: {
show: false
}
},
tooltip: {
theme: 'light'
}
};
});
const Chart = [
{
name: '',
data: [2.5, 3.7, 3.2, 2.6, 1.9, 2.5]
},
{
name: '',
data: [-2.8, -1.1, -3.0, -1.5, -1.9, -2.8]
}
];
/* Chart 2 */
const chartOptions2 = computed(() => {
return {
chart: {
type: 'bar',
height: 200,
fontFamily: `inherit`,
toolbar: {
show: false
},
stacked: true,
sparkline: {
enabled: true
}
},
colors: [secondary, secondary],
plotOptions: {
bar: {
horizontal: false,
barHeight: '60%',
columnWidth: '20%',
borderRadius: [6],
borderRadiusApplication: 'end',
borderRadiusWhenStacked: 'all'
}
},
stroke: {
show: false
},
dataLabels: {
enabled: false
},
legend: {
show: false
},
grid: {
show: false,
padding: {
top: 0,
right: 0,
bottom: 0,
left: 0
}
},
yaxis: {
min: -5,
max: 5,
tickAmount: 4
},
xaxis: {
categories: ['Jan', 'Feb', 'Mar', 'Apr', 'May'],
axisTicks: {
show: false
}
},
tooltip: {
theme: 'light'
}
};
});
const Chart2 = [
{
name: '',
data: [2.5, 3.7, 3.2, 2.6, 1.9, 2.5]
},
{
name: '',
data: [-2.8, -1.1, -3.0, -1.5, -1.9, -2.8]
}
];
/* Chart 3 */
const chartOptions3 = computed(() => {
return {
chart: {
type: 'donut',
height: 180,
fontFamily: `inherit`,
toolbar: {
show: false
},
stacked: true,
sparkline: {
enabled: true
}
},
labels: ['Income', 'Current', 'Expance'],
colors: [primary, 'rgba(var(--v-theme-light))', secondary],
plotOptions: {
pie: {
startAngle: 0,
endAngle: 360,
donut: {
size: '89%',
background: 'transparent',
labels: {
show: true,
name: {
show: true,
offsetY: 7
},
value: {
show: false
},
total: {
show: true,
fontSize: '20px',
fontWeight: '600',
label: '$98,260'
}
}
}
}
},
dataLabels: {
enabled: false
},
stroke: {
show: false
},
legend: {
show: false
},
tooltip: {
theme: 'dark',
fillSeriesColor: false,
}
};
});
const Chart3 = [55,55,55];
</script>
<template>
<v-card elevation="10" >
<v-card-item>
<div class="d-flex align-center justify-space-between">
<v-card-title class="text-h5">Current Value</v-card-title>
<div class="">
<v-btn color="primary" flat>buy</v-btn>
<v-btn color="primary" variant="outlined" flat class="ml-2">sell</v-btn>
</div>
</div>
<v-row class="mt-4 mb-1">
<!--Income Chart-->
<v-col cols="12" sm="4">
<v-card variant="outlined" >
<v-card-item>
<apexchart type="bar" height="200" :options="chartOptions" :series="Chart"> </apexchart>
<v-card-subtitle class="text-subtitle-1">Income</v-card-subtitle>
<div class="d-flex align-center justify-space-between mt-1">
<h4 class="text-h4">$25,260</h4>
<p class="text-body-1 text-success">+1.25%</p>
</div>
</v-card-item>
</v-card>
</v-col>
<!--Expence Chart-->
<v-col cols="12" sm="4">
<v-card variant="outlined" >
<v-card-item>
<apexchart type="bar" height="200" :options="chartOptions2" :series="Chart2"> </apexchart>
<v-card-subtitle class="text-subtitle-1">Expance</v-card-subtitle>
<div class="d-flex align-center justify-space-between mt-1">
<h4 class="text-h4">$12,260</h4>
<p class="text-body-1 text-success">+4.25%</p>
</div>
</v-card-item>
</v-card>
</v-col>
<!--Current Year Chart-->
<v-col cols="12" sm="4">
<v-card variant="outlined" >
<v-card-item>
<apexchart class="mb-5" type="donut" height="180" :options="chartOptions3" :series="Chart3"> </apexchart>
<v-card-subtitle class="text-subtitle-1">Current Year</v-card-subtitle>
<div class="d-flex align-center justify-space-between mt-1">
<h4 class="text-h4">$98,260</h4>
<p class="text-subtitle-1 text-success">+2.5%</p>
</div>
</v-card-item>
</v-card>
</v-col>
</v-row>
</v-card-item>
</v-card>
</template>
+61
View File
@@ -0,0 +1,61 @@
<script setup lang="ts">
import { computed } from 'vue';
import { getSecondary } from '@/utils/UpdateColors';
/*Chart*/
const chartOptions = computed(() => {
return {
chart: {
type: 'area',
height: 80,
fontFamily: `inherit`,
toolbar: {
show: false
},
sparkline: {
enabled: true
},
group: 'sparklines'
},
colors: [getSecondary.value],
stroke: {
curve: 'smooth',
width: 2
},
fill: {
type: 'solid',
opacity: 0.05
},
markers: {
size: 0
},
tooltip: {
theme: 'dark',
x: {
show: false
}
}
};
});
const Chart = [
{
name: '',
data: [30, 25, 35, 20, 30, 40]
}
];
</script>
<template>
<v-card elevation="10" >
<v-card-item>
<p class="text-subtitle-1 textSecondary">Customers</p>
<h4 class="text-h4 my-2">36,358</h4>
<div>
<v-avatar class="bg-lighterror" size="20">
<ArrowDownRightIcon size="15" class="text-error" />
</v-avatar>
<span class="text-body-1 ml-2 textSecondary">+9%</span>
</div>
</v-card-item>
<apexchart class="" type="area" height="80" :options="chartOptions" :series="Chart"> </apexchart>
</v-card>
</template>
+67
View File
@@ -0,0 +1,67 @@
<script setup lang="ts">
import { computed } from 'vue';
import { useTheme } from 'vuetify';
const theme = useTheme();
const primary = theme.current.value.colors.primary;
/* Chart */
const chartOptions = computed(() => {
return {
chart: {
type: 'area',
height: 90,
fontFamily: `inherit`,
foreColor: '#adb0bb',
sparkline: {
enabled: true
}
},
colors: [primary],
stroke: {
curve: 'smooth',
width: 2
},
dataLabels: {
enabled: false
},
legend: {
show: false
},
grid: {
show: false
},
xaxis: {
axisBorder: {
show: true
},
axisTicks: {
show: false
}
},
tooltip: {
theme: 'light'
}
};
});
const Chart = {
series: [
{
name: '',
data: [0, 3, 1, 2, 8, 1, 5, 1]
}
]
};
</script>
<template>
<v-card elevation="10" >
<v-card-item>
<div class="d-flex justify-space-between align-end">
<div>
<v-card-title class="text-h5">2,545 </v-card-title>
<v-card-subtitle class="text-subtitle-1 pb-0">Earned</v-card-subtitle>
</div>
<p class="text-subtitle-1 text-success">+1.20%</p>
</div>
</v-card-item>
<apexchart class="mt-3" type="area" height="90" :options="chartOptions" :series="Chart.series"> </apexchart>
</v-card>
</template>
+57
View File
@@ -0,0 +1,57 @@
<script setup lang="ts">
import { computed } from 'vue';
import { useTheme } from 'vuetify';
const theme = useTheme();
const primary = theme.current.value.colors.primary;
/* Chart */
const chartOptions = computed(() => {
return {
chart: {
type: 'area',
fontFamily: `inherit`,
foreColor: '#adb0bb',
toolbar: {
show: false
},
sparkline: {
enabled: true
},
group: 'sparklines'
},
colors: [primary],
stroke: {
curve: 'smooth',
width: 2
},
tooltip: {
theme: 'dark',
x: {
format: 'dd/MM/yy HH:mm'
}
}
};
});
const Chart = {
series: [
{
name:'',
data: [0, 150, 110, 240, 200, 200, 300, 200],
}
]
};
</script>
<template>
<v-card elevation="10" class="overflow-hidden">
<v-card-item>
<div class="d-flex justify-space-between align-end">
<div>
<v-card-title class="text-h5">2,545</v-card-title>
<v-card-subtitle class="text-subtitle-1 pb-0">Followers</v-card-subtitle>
</div>
<p class="text-subtitle-1 text-success">+1.20%</p>
</div>
</v-card-item>
<apexchart class="mt-4" type="area" height="88" :options="chartOptions" :series="Chart.series"> </apexchart>
</v-card>
</template>
@@ -0,0 +1,82 @@
<script setup lang="ts">
import { computed } from 'vue';
import { getPrimary } from '@/utils/UpdateColors';
/* Chart */
const areachartOptions = computed(() => {
return {
chart: {
type: 'area',
height: 80,
fontFamily: `inherit`,
foreColor: '#a1aab2',
toolbar: {
show: false
},
sparkline: {
enabled: true
},
group: 'sparklines'
},
colors: [getPrimary.value],
stroke: {
curve: 'smooth',
width: 2
},
fill: {
type: 'gradient',
color: [getPrimary.value],
gradient: {
shadeIntensity: 0,
inverseColors: false,
opacityFrom: 0.3,
opacityTo: 0.5,
stops: [100]
}
},
markers: {
size: 0
},
tooltip: {
theme: 'dark',
x: {
show: false
}
}
};
});
const areaChart = {
series: [
{
name: '',
data: [25, 66, 20, 40, 12, 58, 20]
}
]
};
</script>
<template>
<v-card elevation="10">
<v-card-item class="">
<div class="d-flex align-center justify-space-between">
<v-card-title class="text-h5">Monthly Earnings</v-card-title>
<v-avatar class="rounded-md bg-lightprimary text-primary">
<img src="@/assets/images/svgs/icon-master-card-2.svg" alt="ico" />
</v-avatar>
</div>
<div class="mb-8 d-flex align-center mt-5">
<h3 class="text-h3 font-weight-bold">$6,820</h3>
<div class="d-flex align-center">
<v-avatar class="bg-lightsuccess text-success ml-2" size="20">
<ArrowUpLeftIcon size="18" />
</v-avatar>
<span class="text-subtitle-1 ml-2 textSecondary">+9%</span>
</div>
</div>
</v-card-item>
<div class="pt-2">
<apexchart type="area" height="80" :options="areachartOptions" :series="areaChart.series"> </apexchart>
</div>
</v-card>
</template>
+113
View File
@@ -0,0 +1,113 @@
<script setup lang="ts">
import { ref } from 'vue';
import { computed } from 'vue';
import { useTheme } from 'vuetify';
const select = ref('March 2022');
const items = ref(['March 2022', 'April 2022', 'May 2022']);
const theme = useTheme();
const primary = theme.current.value.colors.primary;
const secondary = theme.current.value.colors.secondary;
/* Chart */
const chartOptions = computed(() => {
return {
chart: {
height: 265,
type: 'bar',
fontFamily: 'inherit',
foreColor: '#adb0bb',
toolbar: {
show: false
},
stacked: true
},
colors: [primary, secondary],
plotOptions: {
bar: {
borderRadius: [6],
horizontal: false,
barHeight: '60%',
columnWidth: '40%',
borderRadiusApplication: 'end',
borderRadiusWhenStacked: 'all'
}
},
stroke: {
show: false
},
dataLabels: {
enabled: false
},
legend: {
show: false
},
grid: {
show: false,
padding: {
top: 0,
right: 0,
bottom: 0,
left: 0
}
},
yaxis: {
tickAmount: 4
},
xaxis: {
categories: ['01', '02', '03', '04', '05', '06'],
axisTicks: {
show: false
}
},
tooltip: {
theme: 'dark',
fillSeriesColor: false,
x: {
show: false
}
}
};
});
const Chart = [
{
name: 'San Francisco',
data: [44, 55, 41, 67, 22, 43]
},
{
name: 'Diego',
data: [13, 23, 20, 8, 13, 27]
}
];
</script>
<template>
<v-card elevation="10">
<v-card-item>
<div class="d-sm-flex align-center justify-space-between">
<v-card-title class="text-h5 mb-0">Most Visited</v-card-title>
<div class="my-sm-0 my-2">
<v-select
v-model="select"
:items="items"
class="text-body-1"
variant="outlined"
density="compact"
hide-details
></v-select>
</div>
</div>
<div class="mx-n3 mt-5">
<apexchart type="bar" height="265" class="rounded-bars" :options="chartOptions" :series="Chart"> </apexchart>
</div>
<div class="d-flex align-center pb-1 justify-center">
<p class="text-body-1 textSecondary d-flex align-center">
<v-icon icon="mdi mdi-checkbox-blank-circle" class="mr-2" size="10" color="primary"></v-icon> San Francisco
</p>
<p class="text-body-1 textSecondary pl-5 d-flex align-center">
<v-icon icon="mdi mdi-checkbox-blank-circle" class="mr-2" size="10" color="secondary"></v-icon> Diego
</p>
</div>
</v-card-item>
</v-card>
</template>
@@ -0,0 +1,100 @@
<script setup lang="ts">
import { computed } from 'vue';
import { useTheme } from 'vuetify';
import { ArrowDownRightIcon } from 'vue-tabler-icons';
const theme = useTheme();
const secondary = theme.current.value.colors.secondary;
const lightsecondary = theme.current.value.colors.lightsecondary;
/* Chart */
const chartOptions = computed(() => {
return {
chart: {
toolbar: {
show: false
},
height: 100,
type: 'bar',
sparkline: {
enabled: true
},
fontFamily: 'inherit',
foreColor: '#adb0bb'
},
colors: [lightsecondary, lightsecondary, secondary, lightsecondary, lightsecondary],
plotOptions: {
bar: {
borderRadius: 3,
columnWidth: '64%',
distributed: true,
endingShape: 'rounded'
}
},
dataLabels: {
enabled: false
},
legend: {
show: false
},
grid: {
show: false,
padding: {
top: 0,
right: 0,
bottom: 0,
left: 0
}
},
xaxis: {
labels: {
show: false
},
axisBorder: {
show: false
},
axisTicks: {
show: false
}
},
yaxis: {
labels: {
show: false
}
},
tooltip: {
theme: 'dark'
}
};
});
const Chart = {
series: [
{
name: '',
data: [20, 15, 30, 25, 10]
}
]
};
</script>
<template>
<v-card elevation="10">
<v-card-item>
<v-card-title class="text-h5">Page Impressions</v-card-title>
<v-row>
<v-col cols="5">
<h4 class="text-h4 mt-6">$456,120</h4>
<p class="text-12 textSecondary">(Change Yesterday)</p>
<div class="pt-2">
<v-avatar class="bg-lighterror" size="20">
<ArrowDownRightIcon size="15" class="text-error" />
</v-avatar>
<span class="text-body-1 ms-2 textSecondary">+9%</span>
</div>
</v-col>
<v-col cols="7">
<apexchart class="" type="bar" height="100" :options="chartOptions" :series="Chart.series"> </apexchart>
</v-col>
</v-row>
</v-card-item>
</v-card>
</template>
+98
View File
@@ -0,0 +1,98 @@
<script setup lang="ts">
import { computed } from 'vue';
import { getPrimary, getSecondary } from '@/utils/UpdateColors';
/* Chart */
const chartOptions = computed(() => {
return {
chart: {
toolbar: {
show: false
},
height: 80,
type: 'bar',
sparkline: {
enabled: true
},
fontFamily: 'inherit',
foreColor: '#adb0bb'
},
colors: [getPrimary.value],
grid: {
show: false,
padding: {
top: 0,
right: 0,
bottom: 0,
left: 0
}
},
plotOptions: {
bar: {
borderRadius: 3,
columnWidth: '40%',
distributed: true,
endingShape: 'all',
borderRadiusApplication: 'end'
}
},
dataLabels: {
enabled: false
},
stroke: {
show: true,
width: 2.5,
colors: ['rgba(0,0,0,0.01)']
},
xaxis: {
axisBorder: {
show: false
},
axisTicks: {
show: false
},
labels: {
show: false
}
},
yaxis: {
labels: {
show: false
}
},
axisBorder: {
show: false
},
fill: {
opacity: 1
},
tooltip: {
theme: 'dark',
x: {
show: false
}
}
};
});
const Chart = [
{
name: '',
data: [4, 10, 9, 7, 9, 10]
}
];
</script>
<template>
<v-card elevation="10">
<v-card-item>
<p class="text-subtitle-1 textSecondary">Projects</p>
<h4 class="text-h4 my-1">78,298</h4>
<div>
<v-avatar class="bg-lightsuccess" size="20">
<ArrowUpLeftIcon size="15" class="text-success" />
</v-avatar>
<span class="text-body-1 ms-2 textSecondary">+9%</span>
</div>
<apexchart class="" type="bar" height="80" :options="chartOptions" :series="Chart"> </apexchart>
</v-card-item>
</v-card>
</template>
@@ -0,0 +1,99 @@
<script setup lang="ts">
import { ref } from 'vue';
import { computed } from 'vue';
import { getPrimary, getSecondary } from '@/utils/UpdateColors';
const select = ref('March 2022');
const items = ref(['March 2022', 'April 2022', 'May 2022']);
const chartOptions = computed(() => {
return {
chart: {
height: 320,
type: 'bar',
fontFamily: `inherit`,
foreColor: '#adb0bb',
toolbar: {
show: false
},
stacked: true
},
colors: [getPrimary.value, getSecondary.value],
plotOptions: {
bar: {
horizontal: false,
barHeight: '60%',
columnWidth: '20%',
borderRadius: [6],
borderRadiusApplication: 'end',
borderRadiusWhenStacked: 'all'
}
},
stroke: {
show: false
},
dataLabels: {
enabled: false
},
legend: {
show: false
},
grid: {
show: false
},
yaxis: {
min: -5,
max: 5,
tickAmount: 4
},
xaxis: {
categories: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'June'],
axisTicks: {
show: false
}
},
tooltip: {
theme: 'dark',
x: {
format: 'dd/MM/yy HH:mm'
}
}
};
});
const seriescolumnchart = [
{
name: '',
data: [2.5, 3.7, 3.2, 2.6, 1.9, 2.5]
},
{
name: '',
data: [-2.8, -1.1, -3.2, -1.5, -1.9, -2.8]
}
];
</script>
<template>
<v-card elevation="10">
<v-card-item>
<v-card-title class="text-h5">Revenue Updates</v-card-title>
<v-card-subtitle class="text-subtitle-1 textSecondary">Overview of Profit</v-card-subtitle>
<div class="d-flex align-center mt-6">
<p class="text-body-1 textSecondary d-flex align-center">
<v-icon icon="mdi mdi-checkbox-blank-circle" class="mr-2" size="10" color="primary"></v-icon> Footware
</p>
<p class="text-body-1 textSecondary pl-5 d-flex align-center">
<v-icon icon="mdi mdi-checkbox-blank-circle" class="mr-2" size="10" color="secondary"></v-icon> Fashionware
</p>
</div>
<div class="mx-n4">
<apexchart class="pt-1 revenuechart" type="bar" height="320" :options="chartOptions" :series="seriescolumnchart">
</apexchart>
</div>
</v-card-item>
</v-card>
</template>
<style type="text/css">
.revenuechart .apexcharts-bar-series.apexcharts-plot-series .apexcharts-series path {
clip-path: inset(0 0 5% 0 round 20px);
}
</style>
@@ -0,0 +1,96 @@
<script setup lang="ts">
import { computed } from 'vue';
import { getPrimary, getSecondary, getLightPrimary } from '@/utils/UpdateColors';
/* Chart */
const chartOptions = computed(() => {
return {
labels: ['Profit', 'Revenue', 'Expance'],
chart: {
height: 240,
type: 'donut',
foreColor: '#adb0bb',
fontFamily: `inherit`,
toolbar: {
show: false
}
},
colors: [getPrimary.value, getLightPrimary.value, getSecondary.value],
plotOptions: {
pie: {
donut: {
size: '89%',
background: 'transparent',
labels: {
show: true,
name: {
show: true,
offsetY: 7
},
value: {
show: false
},
total: {
show: true,
fontSize: '20px',
fontWeight: '600',
label: '$500,458'
}
}
}
}
},
dataLabels: {
enabled: false
},
stroke: {
show: false
},
legend: {
show: false
},
tooltip: {
theme: 'dark',
fillSeriesColor: false,
x: {
format: 'dd/MM/yy HH:mm'
}
}
};
});
const seriescolumnchart = [55, 55, 55];
</script>
<template>
<v-card elevation="10" >
<v-card-item>
<v-card-title class="text-h5">Sales Overview</v-card-title>
<v-card-subtitle class="text-subtitle-1 textSecondary">Every month</v-card-subtitle>
<apexchart class="mt-6" type="donut" height="240" :options="chartOptions" :series="seriescolumnchart"> </apexchart>
<v-row class="mt-5">
<v-col cols="6">
<div class="d-flex align-center gap-2">
<v-avatar class="rounded-md bg-lightprimary text-primary">
<GridDotsIcon size="22" />
</v-avatar>
<div>
<h3 class="text-h6">$23,450</h3>
<p class="text-body-1 textSecondary">Profit</p>
</div>
</div>
</v-col>
<v-col cols="6" class="d-flex justify-lg-start justify-end">
<div class="d-flex align-center gap-2">
<v-avatar class="rounded-md bg-lightsecondary text-secondary">
<GridDotsIcon size="22" />
</v-avatar>
<div>
<h3 class="text-h6">$23,450</h3>
<p class="text-body-1 textSecondary">Expance</p>
</div>
</div>
</v-col>
</v-row>
</v-card-item>
</v-card>
</template>
@@ -0,0 +1,88 @@
<script setup lang="ts">
import { ref } from 'vue';
import { computed } from 'vue';
import { useTheme } from 'vuetify';
const theme = useTheme();
const secondary = theme.current.value.colors.secondary;
/* Chart */
const chartOptions = computed(() => {
return {
chart: {
type: 'bar',
height: 55,
fontFamily: `inherit`,
toolbar: {
show: false
},
sparkline: {
enabled: true
}
},
colors: [secondary],
grid: {
show: false
},
plotOptions: {
bar: {
horizontal: false,
columnWidth: '60%',
barHeight: '18%',
borderRadius: 3
}
},
dataLabels: {
enabled: false
},
stroke: {
show: true,
width: 2.5,
colors: ['rgba(0,0,0,0.01)']
},
xaxis: {
axisBorder: {
show: false
},
axisTicks: {
show: false
},
labels: {
show: false
}
},
yaxis: {
labels: {
show: false
}
},
axisBorder: {
show: false
},
fill: {
opacity: 1
},
tooltip: {
theme: 'dark',
x: {
show: false
}
}
};
});
const seriescolumnchart = [
{
name: 'projects',
data: [4, 10, 9, 7, 9, 10, 11, 8, 10, 12, 9]
}
];
</script>
<template>
<v-card elevation="10">
<v-card-item>
<v-card-subtitle class="text-subtitle-1">Total Earning</v-card-subtitle>
<v-card-title class="text-h5">$78,298</v-card-title>
<div class="mx-n1">
<apexchart class="mt-sm-13 mt-10" type="bar" height="55" :options="chartOptions" :series="seriescolumnchart"> </apexchart>
</div>
</v-card-item>
</v-card>
</template>
+91
View File
@@ -0,0 +1,91 @@
<script setup lang="ts">
import { computed } from 'vue';
import { useTheme } from 'vuetify';
const theme = useTheme();
const secondary = theme.current.value.colors.secondary;
const lightsecondary = theme.current.value.colors.lightsecondary;
/* Chart */
const chartOptions = computed(() => {
return {
chart: {
type: 'bar',
height: 80,
fontFamily: `inherit`,
sparkline: {
enabled: true
}
},
colors: [lightsecondary, lightsecondary, secondary, lightsecondary, lightsecondary, lightsecondary],
plotOptions: {
bar: {
borderRadius: 4,
columnWidth: '50%',
distributed: true,
endingShape: 'rounded'
}
},
dataLabels: {
enabled: false
},
legend: {
show: false
},
grid: {
show: false,
padding: {
top: 0,
right: 0,
bottom: 0,
left: 0
}
},
xaxis: {
categories: ['M', 'T', 'W', 'T', 'F', 'S', 'S'],
labels: {
show: false
},
axisBorder: {
show: false
},
axisTicks: {
show: false
}
},
yaxis: {
labels: {
show: false
}
},
tooltip: {
theme: 'dark'
}
};
});
const Chart = {
series: [
{
name: '',
data: [20, 15, 30, 25, 10, 18, 20, 15, 12, 10]
}
]
};
</script>
<template>
<v-card elevation="10" >
<v-card-item>
<div class="d-flex justify-space-between align-end">
<div>
<v-card-title class="text-h5">15,480</v-card-title>
<v-card-subtitle class="text-subtitle-1 pb-0">Views</v-card-subtitle>
</div>
<p class="text-subtitle-1 text-error">-4.150%</p>
</div>
<div class="mx-n1">
<apexchart class="mt-6" type="bar" height="80" :options="chartOptions" :series="Chart.series"> </apexchart>
</div>
</v-card-item>
</v-card>
</template>
@@ -0,0 +1,98 @@
<script setup lang="ts">
import { computed } from 'vue';
import { getPrimary, getLightPrimary } from '@/utils/UpdateColors';
/ Chart /
const chartOptions = computed(() => {
return {
labels: ['', '', ''],
chart: {
type: 'donut',
height: 150,
fontFamily: `inherit`,
foreColor: '#a1aab2',
toolbar: {
show: false
}
},
colors: [getPrimary.value, 'rgba(var(--v-theme-light))', '#F9F9FD'],
plotOptions: {
pie: {
startAngle: 0,
endAngle: 360,
donut: {
size: '75%',
background: 'transparent'
}
}
},
stroke: {
show: false
},
dataLabels: {
enabled: false
},
legend: {
show: false
},
tooltip: {
enabled: false
},
responsive: [
{
breakpoint: 991,
options: {
chart: {
height: 140
}
}
},
{
breakpoint: 600,
options: {
chart: {
height: 130
}
}
}
]
};
});
const Chart = [38, 40, 25];
</script>
<template>
<v-card elevation="10" >
<v-card-item>
<div class="d-sm-flex align-center justify-space-between">
<v-card-title class="text-h5">Yearly Breakup</v-card-title>
</div>
<v-row>
<v-col cols="7" sm="7">
<div class="mt-3">
<h3 class="text-h3">$36,358</h3>
<div class="mt-2 d-flex gap-2 align-center">
<v-avatar class="bg-lightsuccess text-success" size="25">
<ArrowUpLeftIcon size="20" />
</v-avatar>
<span class="text-body-1">+9%</span>
<span class="text-body-1 textSecondary ">last year</span>
</div>
<div class="d-flex align-center mt-sm-10 mt-8">
<p class="text-body-1 textSecondary">
<v-icon icon="mdi mdi-checkbox-blank-circle" class="mr-1" size="10" color="primary"></v-icon> 2023
</p>
<p class="text-body-1 textSecondary pl-5">
<v-icon icon="mdi mdi-checkbox-blank-circle" class="mr-1" size="10" color="light "></v-icon> 2024
</p>
</div>
</div>
</v-col>
<v-col cols="5" sm="5">
<div class="d-flex align-center flex-shrink-0">
<apexchart class="pt-6" type="donut" height="150" :options="chartOptions" :series="Chart"> </apexchart>
</div>
</v-col>
</v-row>
</v-card-item>
</v-card>
</template>
+124
View File
@@ -0,0 +1,124 @@
<script setup lang="ts">
import { computed } from 'vue';
import { getPrimary, getLight100, getLightPrimary } from '@/utils/UpdateColors';
/* Chart */
const chartOptions = computed(() => {
return {
chart: {
height: 310,
type: 'bar',
fontFamily: 'inherit',
foreColor: '#adb0bb',
toolbar: {
show: false
}
},
colors: [
getLightPrimary.value,
getLightPrimary.value,
getPrimary.value,
getLightPrimary.value,
getLightPrimary.value,
getLightPrimary.value,
getLightPrimary.value,
,
getLightPrimary.value,
,
getLightPrimary.value,
getLightPrimary.value
],
plotOptions: {
bar: {
borderRadius: 3,
columnWidth: '53%',
distributed: true,
endingShape: 'rounded'
}
},
dataLabels: {
enabled: false
},
legend: {
show: false
},
grid: {
yaxis: {
lines: {
show: false
}
},
padding: {
top: 0,
right: 0,
bottom: 0,
left: 0
}
},
xaxis: {
categories: [['Apr'], ['May'], ['June'], ['July'], ['Aug'], ['Sept'], ['Oct']],
axisBorder: {
show: false
},
axisTicks: {
show: false
}
},
yaxis: {
labels: {
show: false
}
},
tooltip: {
theme: 'dark',
x: {
format: 'dd/MM/yy HH:mm'
}
}
};
});
const Chart = {
series: [
{
name: '',
data: [20, 15, 30, 25, 10, 15, 12]
}
]
};
</script>
<template>
<v-card elevation="10">
<v-card-item>
<v-card-title class="text-h5">Yearly Sales</v-card-title>
<v-card-subtitle class="text-subtitle-1 textSecondary">Total Sales</v-card-subtitle>
<div class="mx-n2">
<apexchart type="bar" height="310" :options="chartOptions" :series="Chart.series"> </apexchart>
</div>
<v-row class="mt-1">
<v-col cols="6">
<div class="d-flex align-center gap-2">
<v-avatar class="rounded-md bg-lightprimary text-primary">
<GridDotsIcon size="22" />
</v-avatar>
<div>
<p class="text-body-1 textSecondary">Salary</p>
<h3 class="text-h6">$36,358</h3>
</div>
</div>
</v-col>
<v-col cols="6" class="d-flex justify-end">
<div class="d-flex align-center gap-2">
<v-avatar class="rounded-md bg-grey100 textSecondary">
<GridDotsIcon size="22" class="text-medium-emphasis" />
</v-avatar>
<div>
<p class="text-body-1 textSecondary">Expance</p>
<h3 class="text-h6">$5,296</h3>
</div>
</div>
</v-col>
</v-row>
</v-card-item>
</v-card>
</template>