Initial commit

This commit is contained in:
2025-08-04 16:33:07 +03:30
commit f798e8e35c
9595 changed files with 1208683 additions and 0 deletions

View File

@@ -0,0 +1,131 @@
<script setup>
import bootstrapLogo from '@images/icons/brands/bootstrap-logo.png'
import figmaLogo from '@images/icons/brands/figma-logo.png'
import laravelLogo from '@images/icons/brands/laravel-logo.png'
import reactLogo from '@images/icons/brands/react-logo.png'
import sketchLogo from '@images/icons/brands/sketch-logo.png'
import vuejsLogo from '@images/icons/brands/vuejs-logo.png'
const activeProjects = [
{
avatarImg: laravelLogo,
title: 'Laravel',
subtitle: 'Ecommerce',
stats: '65',
progressColor: 'error',
},
{
avatarImg: figmaLogo,
title: 'Figma',
subtitle: 'App UI Kit',
stats: '86',
progressColor: 'primary',
},
{
avatarImg: vuejsLogo,
title: 'VueJs',
subtitle: 'Calendar App',
stats: '90',
progressColor: 'success',
},
{
avatarImg: reactLogo,
title: 'React',
subtitle: 'Dashboard',
stats: '37',
progressColor: 'info',
},
{
avatarImg: bootstrapLogo,
title: 'Bootstrap',
subtitle: 'Website',
stats: '22',
progressColor: 'primary',
},
{
avatarImg: sketchLogo,
title: 'Sketch',
subtitle: 'Website Design',
stats: '29',
progressColor: 'warning',
},
]
const moreList = [
{
title: 'Refresh',
value: 'refresh',
},
{
title: 'Download',
value: 'Download',
},
{
title: 'View All',
value: 'View All',
},
]
</script>
<template>
<VCard>
<VCardItem>
<VCardTitle>Active Projects</VCardTitle>
<VCardSubtitle>
Average 72% completed
</VCardSubtitle>
<template #append>
<div class="mt-n4 me-n2">
<MoreBtn :menu-list="moreList" />
</div>
</template>
</VCardItem>
<VCardText>
<VList class="card-list">
<VListItem
v-for="project in activeProjects"
:key="project.title"
>
<template #prepend>
<VAvatar
size="34"
rounded
class="me-1"
>
<img :src="project.avatarImg">
</VAvatar>
</template>
<VListItemTitle class="font-weight-medium">
{{ project.title }}
</VListItemTitle>
<VListItemSubtitle class="me-4">
{{ project.subtitle }}
</VListItemSubtitle>
<template #append>
<div class="d-flex align-center gap-x-4">
<div style="inline-size: 4.875rem;">
<VProgressLinear
:model-value="project.stats"
:color="project.progressColor"
height="8"
rounded-bar
rounded
/>
</div>
<span class="text-disabled">{{ project.stats }}%</span>
</div>
</template>
</VListItem>
</VList>
</VCardText>
</VCard>
</template>
<style lang="scss" scoped>
.card-list {
--v-card-list-gap: 16px;
}
</style>

View File

@@ -0,0 +1,182 @@
<script setup>
import avatar1 from '@images/avatars/avatar-1.png'
import avatar2 from '@images/avatars/avatar-2.png'
import avatar3 from '@images/avatars/avatar-3.png'
import pdf from '@images/icons/project-icons/pdf.png'
const moreList = [
{
title: 'Refresh',
value: 'refresh',
},
{
title: 'Download',
value: 'Download',
},
{
title: 'View All',
value: 'View All',
},
]
</script>
<template>
<VCard>
<VCardItem>
<template #prepend>
<VIcon
icon="tabler-list-details"
size="24"
color="high-emphasis"
class="me-1"
/>
</template>
<VCardTitle>Activity Timeline</VCardTitle>
<template #append>
<div class="me-n2">
<MoreBtn :menu-list="moreList" />
</div>
</template>
</VCardItem>
<VCardText>
<VTimeline
side="end"
align="start"
line-inset="8"
truncate-line="start"
density="compact"
>
<!-- SECTION Timeline Item: Flight -->
<VTimelineItem
dot-color="primary"
size="x-small"
>
<!-- 👉 Header -->
<div class="d-flex justify-space-between align-center gap-2 flex-wrap mb-2">
<span class="app-timeline-title">
12 Invoices have been paid
</span>
<span class="app-timeline-meta">12 min ago</span>
</div>
<!-- 👉 Content -->
<div class="app-timeline-text mt-1">
Invoices have been paid to the company
</div>
<div class="d-inline-flex align-center timeline-chip mt-2">
<img
:src="pdf"
height="20"
class="me-2"
alt="img"
>
<span class="app-timeline-text font-weight-medium">
invoice.pdf
</span>
</div>
</VTimelineItem>
<!-- !SECTION -->
<!-- SECTION Timeline Item: Interview Schedule -->
<VTimelineItem
size="x-small"
dot-color="success"
>
<!-- 👉 Header -->
<div class="d-flex justify-space-between align-center flex-wrap mb-2">
<div class="app-timeline-title">
Client Meeting
</div>
<span class="app-timeline-meta">45 min ago</span>
</div>
<div class="app-timeline-text mt-1">
Project meeting with john @10:15am
</div>
<!-- 👉 Person -->
<div class="d-flex justify-space-between align-center flex-wrap">
<!-- 👉 Avatar & Personal Info -->
<div class="d-flex align-center mt-2">
<VAvatar
size="32"
class="me-2"
:image="avatar1"
/>
<div class="d-flex flex-column">
<p class="text-sm font-weight-medium text-medium-emphasis mb-0">
Lester McCarthy (Client)
</p>
<span class="text-sm">CEO of Pixinvent</span>
</div>
</div>
</div>
</VTimelineItem>
<!-- !SECTION -->
<!-- SECTION Design Review -->
<VTimelineItem
size="x-small"
dot-color="info"
>
<!-- 👉 Header -->
<div class="d-flex justify-space-between align-center flex-wrap mb-2">
<span class="app-timeline-title">
Create a new project for client
</span>
<span class="app-timeline-meta">2 Day Ago</span>
</div>
<!-- 👉 Content -->
<p class="app-timeline-text mt-1 mb-2">
6 team members in a project
</p>
<div class="v-avatar-group demo-avatar-group">
<VAvatar :size="40">
<VImg :src="avatar1" />
<VTooltip
activator="parent"
location="top"
>
John Doe
</VTooltip>
</VAvatar>
<VAvatar :size="40">
<VImg :src="avatar2" />
<VTooltip
activator="parent"
location="top"
>
Jennie Obrien
</VTooltip>
</VAvatar>
<VAvatar :size="40">
<VImg :src="avatar3" />
<VTooltip
activator="parent"
location="top"
>
Peter Harper
</VTooltip>
</VAvatar>
<VAvatar
:size="40"
:color="$vuetify.theme.current.dark ? '#373b50' : '#eeedf0'"
>
+3
</VAvatar>
</div>
</VTimelineItem>
<!-- !SECTION -->
</VTimeline>
</VCardText>
</VCard>
</template>

View File

@@ -0,0 +1,87 @@
<script setup>
const assignmentData = [
{
title: 'User Experience Design',
tasks: 120,
progress: 72,
color: 'primary',
},
{
title: 'Basic fundamentals',
tasks: 32,
progress: 48,
color: 'success',
},
{
title: 'React Native components',
tasks: 182,
progress: 15,
color: 'error',
},
{
title: 'Basic of music theory',
tasks: 56,
progress: 24,
color: 'info',
},
]
</script>
<template>
<VCard>
<VCardItem title="Assignment progress">
<template #append>
<MoreBtn />
</template>
</VCardItem>
<VCardText>
<VList class="card-list">
<VListItem
v-for="assignment in assignmentData"
:key="assignment.title"
>
<template #prepend>
<VProgressCircular
v-model="assignment.progress"
:size="54"
class="me-4"
:color="assignment.color"
>
<span class="text-body-1 text-high-emphasis font-weight-medium">
{{ assignment.progress }}%
</span>
</VProgressCircular>
</template>
<VListItemTitle class="font-weight-medium mb-2 me-2">
{{ assignment.title }}
</VListItemTitle>
<VListItemSubtitle class="me-2">
{{ assignment.tasks }} Tasks
</VListItemSubtitle>
<template #append>
<VBtn
icon
variant="tonal"
color="secondary"
rounded
size="30"
>
<VIcon
icon="tabler-chevron-right"
class="flip-in-rtl"
size="20"
/>
</VBtn>
</template>
</VListItem>
</VList>
</VCardText>
</VCard>
</template>
<style lang="scss" scoped>
.card-list {
--v-card-list-gap: 2rem;
}
</style>

View File

@@ -0,0 +1,115 @@
<script setup>
import brave from '@images/logos/brave.png'
import chrome from '@images/logos/chrome.png'
import firefox from '@images/logos/firefox.png'
import internetExplorer from '@images/logos/internet-explorer.png'
import operaMini from '@images/logos/opera-mini.png'
import safari from '@images/logos/safari.png'
const browserStates = [
{
avatarImg: chrome,
title: 'Google Chrome',
stats: '90.4',
progress: 'secondary',
},
{
avatarImg: safari,
title: 'Apple Safari',
stats: '70.6',
progress: 'success',
},
{
avatarImg: firefox,
title: 'Mozilla Firefox',
stats: '35.5',
progress: 'primary',
},
{
avatarImg: operaMini,
title: 'Opera Mini',
stats: '80.0',
progress: 'error',
},
{
avatarImg: internetExplorer,
title: 'Internet Explorer',
stats: '62.2',
progress: 'info',
},
{
avatarImg: brave,
title: 'Brave',
stats: '46.3',
progress: 'warning',
},
]
const moreList = [
{
title: 'Refresh',
value: 'refresh',
},
{
title: 'Download',
value: 'Download',
},
{
title: 'View All',
value: 'View All',
},
]
</script>
<template>
<VCard
title="Browser States"
subtitle="Counter April 2022"
>
<template #append>
<div class="mt-n4 me-n2">
<MoreBtn :menu-list="moreList" />
</div>
</template>
<VCardText>
<VList class="card-list">
<VListItem
v-for="state in browserStates"
:key="state.title"
>
<template #prepend>
<img
:src="state.avatarImg"
height="28"
width="28"
class="me-4"
>
</template>
<VListItemTitle class="font-weight-medium me-4">
{{ state.title }}
</VListItemTitle>
<template #append>
<div class="text-body-1 me-4">
{{ state.stats }}%
</div>
<VProgressCircular
:model-value="state.stats"
:color="state.progress"
width="3"
size="28"
/>
</template>
</VListItem>
</VList>
</VCardText>
</VCard>
</template>
<style lang="scss" scoped>
.card-list {
--v-card-list-gap: 2rem;
}
</style>

View File

@@ -0,0 +1,42 @@
<script setup>
import congoImg from '@images/illustrations/congo-illustration.png'
</script>
<template>
<VCard>
<VRow no-gutters>
<VCol cols="8">
<VCardText>
<h5 class="text-h5 text-no-wrap">
Congratulations John! 🎉
</h5>
<p class="mb-3">
Best seller of the month
</p>
<h4 class="text-h4 text-primary mb-1">
$48.9k
</h4>
<VBtn>View Sales</VBtn>
</VCardText>
</VCol>
<VCol cols="4">
<VCardText class="pb-0 px-0 position-relative h-100">
<VImg
:src="congoImg"
height="147"
class="congo-john-img w-100"
/>
</VCardText>
</VCol>
</VRow>
</VCard>
</template>
<style lang="scss" scoped>
.congo-john-img {
position: absolute;
inset-block-end: 0;
inset-inline-end: 1.25rem;
}
</style>

View File

@@ -0,0 +1,113 @@
<script setup>
const deliveryData = [
{
title: 'Packages in transit',
value: '10k',
change: 25.8,
icon: 'tabler-box',
color: 'primary',
},
{
title: 'Packages out for delivery',
value: '5k',
change: 4.3,
icon: 'tabler-truck',
color: 'info',
},
{
title: 'Packages delivered',
value: '15k',
change: -12.5,
icon: 'tabler-circle-check',
color: 'success',
},
{
title: 'Delivery success rate',
value: '95%',
change: 35.6,
icon: 'tabler-percentage',
color: 'warning',
},
{
title: 'Average delivery time',
value: '2.5 Days',
change: -2.15,
icon: 'tabler-clock',
color: 'secondary',
},
{
title: 'Customer satisfaction',
value: '4.5/5',
change: 5.7,
icon: 'tabler-users',
color: 'error',
},
]
</script>
<template>
<VCard>
<VCardItem title="Delivery performance">
<VCardSubtitle>
12% increase in this month
</VCardSubtitle>
<template #append>
<MoreBtn />
</template>
</VCardItem>
<VCardText>
<VList class="card-list">
<VListItem
v-for="(data, index) in deliveryData"
:key="index"
>
<div class="d-flex gap-x-4 align-center">
<VAvatar
:color="data.color"
variant="tonal"
rounded
size="38"
class="me-1"
>
<VIcon
:icon="data.icon"
size="26"
/>
</VAvatar>
<div>
<VListItemTitle class="text-body-1 text-high-emphasis">
{{ data.title }}
</VListItemTitle>
<VListItemSubtitle>
<div
:class="data.change > 0 ? 'text-success' : 'text-error'"
class="d-flex align-center"
>
<VIcon
:icon="data.change > 0 ? 'tabler-chevron-up' : 'tabler-chevron-down'"
class="me-1"
size="20"
/>
<span>{{ data.change }}%</span>
</div>
</VListItemSubtitle>
</div>
</div>
<template #append>
<span class="text-body-1 font-weight-medium">
{{ data.value }}
</span>
</template>
</VListItem>
</VList>
</VCardText>
</VCard>
</template>
<style lang="scss" scoped>
.card-list {
--v-card-list-gap: 1.5rem;
}
</style>

View File

@@ -0,0 +1,194 @@
<script setup>
import { useTheme } from 'vuetify'
import { hexToRgb } from '@layouts/utils'
const vuetifyTheme = useTheme()
const series = [{
data: [
40,
95,
60,
45,
90,
50,
75,
],
}]
const chartOptions = computed(() => {
const currentTheme = vuetifyTheme.current.value.colors
const variableTheme = vuetifyTheme.current.value.variables
const labelColor = `rgba(${ hexToRgb(currentTheme['on-background']) },${ variableTheme['disabled-opacity'] })`
const labelPrimaryColor = `rgba(${ hexToRgb(currentTheme.primary) },0.1)`
return {
chart: {
type: 'bar',
toolbar: { show: false },
},
tooltip: { enabled: false },
plotOptions: {
bar: {
barHeight: '60%',
columnWidth: '60%',
startingShape: 'rounded',
endingShape: 'rounded',
borderRadius: 4,
distributed: true,
},
},
grid: {
show: false,
padding: {
top: -20,
bottom: 0,
left: -10,
right: -10,
},
},
colors: [
labelPrimaryColor,
labelPrimaryColor,
labelPrimaryColor,
labelPrimaryColor,
`rgba(${ hexToRgb(currentTheme.primary) }, 1)`,
labelPrimaryColor,
labelPrimaryColor,
],
dataLabels: { enabled: false },
legend: { show: false },
xaxis: {
categories: [
'Mo',
'Tu',
'We',
'Th',
'Fr',
'Sa',
'Su',
],
axisBorder: { show: false },
axisTicks: { show: false },
labels: {
style: {
colors: labelColor,
fontSize: '13px',
},
},
},
yaxis: { labels: { show: false } },
}
})
const earningReports = [
{
avatarIcon: 'tabler-chart-pie-2',
avatarColor: 'primary',
title: 'Net Profit',
subtitle: '12.4k Sales',
earnings: '$1,619',
percentage: '18.6%',
},
{
avatarIcon: 'tabler-currency-dollar',
avatarColor: 'success',
title: 'Total Income',
subtitle: 'Sales, Affiliation',
earnings: '$3,571',
percentage: '39.6%',
},
{
avatarIcon: 'tabler-credit-card',
avatarColor: 'secondary',
title: 'Total Expenses',
subtitle: 'ADVT, Marketing',
earnings: '$430',
percentage: '52.8%',
},
]
const moreList = [
{
title: 'Refresh',
value: 'refresh',
},
{
title: 'Download',
value: 'Download',
},
{
title: 'View All',
value: 'View All',
},
]
</script>
<template>
<VCard
title="Earning Reports"
subtitle="Weekly Earnings Overview"
>
<template #append>
<div class="mt-n4 me-n2">
<MoreBtn :menu-list="moreList" />
</div>
</template>
<VCardText class="pb-0">
<VList class="card-list mb-3">
<VListItem
v-for="report in earningReports"
:key="report.title"
>
<template #prepend>
<VAvatar
rounded
size="34"
variant="tonal"
:color="report.avatarColor"
class="me-1"
>
<VIcon
:icon="report.avatarIcon"
size="22"
/>
</VAvatar>
</template>
<VListItemTitle class="font-weight-medium me-4">
{{ report.title }}
</VListItemTitle>
<VListItemSubtitle class="me-4">
{{ report.subtitle }}
</VListItemSubtitle>
<template #append>
<div class="d-flex align-center text-body-2">
<span class="me-4">{{ report.earnings }}</span>
<VIcon
color="success"
icon="tabler-chevron-up"
size="20"
class="me-1"
/>
<span class="text-disabled">{{ report.percentage }}</span>
</div>
</template>
</VListItem>
</VList>
<VueApexCharts
:options="chartOptions"
:series="series"
:height="180"
/>
</VCardText>
</VCard>
</template>
<style lang="scss" scoped>
.card-list {
--v-card-list-gap: 1rem;
}
</style>

View File

@@ -0,0 +1,148 @@
<script setup>
import aeIcon from '@images/icons/payments/ae-icon.png'
import mastercardIcon from '@images/icons/payments/mastercard-icon.png'
import visaIcon from '@images/icons/payments/visa-icon.png'
const lastTransitions = [
{
cardImg: visaIcon,
lastDigit: '*4230',
cardType: 'Credit',
sentDate: '17 Mar 2022',
status: 'Verified',
trend: '+$1,678',
},
{
cardImg: mastercardIcon,
lastDigit: '*5578',
cardType: 'Credit',
sentDate: '12 Feb 2022',
status: 'Rejected',
trend: '-$839',
},
{
cardImg: aeIcon,
lastDigit: '*4567',
cardType: 'Credit',
sentDate: '28 Feb 2022',
status: 'Verified',
trend: '+$435',
},
{
cardImg: visaIcon,
lastDigit: '*5699',
cardType: 'Credit',
sentDate: '8 Jan 2022',
status: 'Pending',
trend: '+$2,345',
},
{
cardImg: visaIcon,
lastDigit: '*5699',
cardType: 'Credit',
sentDate: '8 Jan 2022',
status: 'Rejected',
trend: '-$234',
},
]
const resolveStatus = {
Verified: 'success',
Rejected: 'error',
Pending: 'secondary',
}
const moreList = [
{
title: 'Refresh',
value: 'refresh',
},
{
title: 'Download',
value: 'Download',
},
{
title: 'View All',
value: 'View All',
},
]
const getPaddingStyle = index => index ? 'padding-block-end: 1.5rem;' : 'padding-block: 1.5rem;'
</script>
<template>
<VCard title="Last Transaction">
<template #append>
<div class="me-n2">
<MoreBtn :menu-list="moreList" />
</div>
</template>
<VDivider />
<VTable class="text-no-wrap transaction-table">
<thead>
<tr>
<th>CARD</th>
<th>DATE</th>
<th>STATUS</th>
<th>TREND</th>
</tr>
</thead>
<tbody>
<tr
v-for="(transition, index) in lastTransitions"
:key="index"
>
<td :style="getPaddingStyle(index)">
<div class="d-flex align-center">
<div class="me-4">
<VImg
:src="transition.cardImg"
width="50"
/>
</div>
<div>
<p class="font-weight-medium text-base mb-0 text-high-emphasis">
{{ transition.lastDigit }}
</p>
<p class="text-sm mb-0">
{{ transition.cardType }}
</p>
</div>
</div>
</td>
<td :style="getPaddingStyle(index)">
<p class="text-high-emphasis text-base mb-0">
Sent
</p>
<span class="text-sm">{{ transition.sentDate }}</span>
</td>
<td :style="getPaddingStyle(index)">
<VChip
label
:color="resolveStatus[transition.status]"
size="small"
>
{{ transition.status }}
</VChip>
</td>
<td :style="getPaddingStyle(index)">
<div class="text-high-emphasis text-base">
{{ transition.trend }}
</div>
</td>
</tr>
</tbody>
</VTable>
</VCard>
</template>
<style lang="scss">
.transaction-table {
&.v-table .v-table__wrapper > table > tbody > tr:not(:last-child) > td,
&.v-table .v-table__wrapper > table > tbody > tr:not(:last-child) > th {
border-block-end: none !important;
}
}
</style>

View File

@@ -0,0 +1,128 @@
<script setup>
const monthlyCampaignState = [
{
avatarColor: 'success',
avatarIcon: 'tabler-mail',
title: 'Emails',
count: '12,346',
stats: '0.3%',
statsColor: 'success',
},
{
avatarColor: 'info',
avatarIcon: 'tabler-link',
title: 'Opened',
count: '8,734',
stats: '2.1%',
statsColor: 'success',
},
{
avatarColor: 'warning',
avatarIcon: 'tabler-mouse',
title: 'Clicked',
count: '967',
stats: '1.4%',
statsColor: 'error',
},
{
avatarColor: 'primary',
avatarIcon: 'tabler-users',
title: 'Subscribe',
count: '345',
stats: '8.5%',
statsColor: 'success',
},
{
avatarColor: 'secondary',
avatarIcon: 'tabler-alert-triangle',
title: 'Complaints',
count: '10',
stats: '1.5%',
statsColor: 'error',
},
{
avatarColor: 'error',
avatarIcon: 'tabler-ban',
title: 'Unsubscribe',
count: '86',
stats: '0.8%',
statsColor: 'success',
},
]
const moreList = [
{
title: 'Refresh',
value: 'refresh',
},
{
title: 'Download',
value: 'Download',
},
{
title: 'View All',
value: 'View All',
},
]
</script>
<template>
<VCard>
<VCardItem>
<VCardTitle>Monthly Campaign State</VCardTitle>
<VCardSubtitle>
8.52k Social Visitors
</VCardSubtitle>
<template #append>
<div class="mt-n4 me-n2">
<MoreBtn :menu-list="moreList" />
</div>
</template>
</VCardItem>
<VCardText>
<VList class="card-list">
<VListItem
v-for="state in monthlyCampaignState"
:key="state.title"
>
<template #prepend>
<VAvatar
:color="state.avatarColor"
variant="tonal"
size="34"
rounded
class="me-1"
>
<VIcon
:icon="state.avatarIcon"
size="22"
/>
</VAvatar>
</template>
<VListItemTitle class="font-weight-medium me-4">
{{ state.title }}
</VListItemTitle>
<template #append>
<div class="d-flex gap-x-4">
<div class="text-body-1">
{{ state.count }}
</div>
<div :class="`text-${state.statsColor}`">
{{ state.stats }}
</div>
</div>
</template>
</VListItem>
</VList>
</VCardText>
</VCard>
</template>
<style lang="scss" scoped>
.card-list {
--v-card-list-gap: 1.5rem;
}
</style>

View File

@@ -0,0 +1,356 @@
<script setup>
const currentTab = ref('New')
const tabsData = [
'New',
'Preparing',
'Shipping',
]
</script>
<template>
<VCard class="country-order-card">
<VCardItem
title="Orders by countries"
subtitle="62 deliveries in progress"
class="pb-4"
>
<template #append>
<MoreBtn />
</template>
</VCardItem>
<VTabs
v-model="currentTab"
grow
class="disable-tab-transition"
>
<VTab
v-for="(tab, index) in tabsData"
:key="index"
>
{{ tab }}
</VTab>
</VTabs>
<VCardText>
<VWindow v-model="currentTab">
<VWindowItem>
<div>
<VTimeline
align="start"
truncate-line="both"
side="end"
density="compact"
line-thickness="1"
class="v-timeline--variant-outlined"
>
<VTimelineItem
icon="tabler-circle-check"
dot-color="rgba(var(--v-theme-surface))"
icon-color="success"
fill-dot
size="20"
:elevation="0"
>
<div class="text-body-2 text-uppercase text-success">
Sender
</div>
<div class="app-timeline-title">
Myrtle Ullrich
</div>
<div class="app-timeline-text">
101 Boulder, California(CA), 95959
</div>
</VTimelineItem>
<VTimelineItem
icon="tabler-map-pin"
dot-color="rgba(var(--v-theme-surface))"
icon-color="primary"
fill-dot
size="20"
:elevation="0"
>
<div class="text-body-2 text-primary text-uppercase">
Receiver
</div>
<div class="app-timeline-title">
Barry Schowalter
</div>
<div class="app-timeline-text">
939 Orange, California(CA), 92118
</div>
</VTimelineItem>
</VTimeline>
<VDivider
class="my-4"
style="border-style: dashed;"
/>
<VTimeline
align="start"
truncate-line="both"
side="end"
density="compact"
line-thickness="1"
class="v-timeline--variant-outlined"
>
<VTimelineItem
icon="tabler-circle-check"
dot-color="rgba(var(--v-theme-surface))"
icon-color="success"
fill-dot
size="20"
:elevation="0"
>
<div class="text-body-2 text-uppercase text-success">
Sender
</div>
<div class="app-timeline-title">
Veronica Herman
</div>
<div class="app-timeline-text">
162 Windsor, California(CA), 95492
</div>
</VTimelineItem>
<VTimelineItem
icon="tabler-map-pin"
dot-color="rgba(var(--v-theme-surface))"
icon-color="primary"
fill-dot
size="20"
:elevation="0"
>
<div class="text-body-2 text-primary text-uppercase">
Receiver
</div>
<div class="app-timeline-title">
Helen Jacobs
</div>
<div class="app-timeline-text">
487 Sunset, California(CA), 94043
</div>
</VTimelineItem>
</VTimeline>
</div>
</VWindowItem>
<VWindowItem>
<div>
<VTimeline
align="start"
truncate-line="both"
side="end"
density="compact"
line-thickness="1"
class="v-timeline--variant-outlined"
>
<VTimelineItem
icon="tabler-circle-check"
dot-color="rgba(var(--v-theme-surface))"
icon-color="success"
fill-dot
size="20"
:elevation="0"
>
<div class="text-body-2 text-uppercase text-success">
Sender
</div>
<div class="app-timeline-title">
Myrtle Ullrich
</div>
<div class="app-timeline-text">
101 Boulder, California(CA), 95959
</div>
</VTimelineItem>
<VTimelineItem
icon="tabler-map-pin"
dot-color="rgba(var(--v-theme-surface))"
icon-color="primary"
fill-dot
size="20"
:elevation="0"
>
<div class="text-body-2 text-primary text-uppercase">
Receiver
</div>
<div class="app-timeline-title">
Barry Schowalter
</div>
<div class="app-timeline-text">
939 Orange, California(CA), 92118
</div>
</VTimelineItem>
</VTimeline>
<VDivider
class="my-4"
style="border-style: dashed;"
/>
<VTimeline
align="start"
truncate-line="both"
side="end"
density="compact"
line-thickness="1"
class="v-timeline--variant-outlined"
>
<VTimelineItem
icon="tabler-circle-check"
dot-color="rgba(var(--v-theme-surface))"
icon-color="success"
fill-dot
size="20"
:elevation="0"
>
<div class="text-body-2 text-uppercase text-success">
Sender
</div>
<div class="app-timeline-title">
Veronica Herman
</div>
<div class="app-timeline-text">
162 Windsor, California(CA), 95492
</div>
</VTimelineItem>
<VTimelineItem
icon="tabler-map-pin"
dot-color="rgba(var(--v-theme-surface))"
icon-color="primary"
fill-dot
size="20"
:elevation="0"
>
<div class="text-body-2 text-primary text-uppercase">
Receiver
</div>
<div class="app-timeline-title">
Helen Jacobs
</div>
<div class="app-timeline-text">
487 Sunset, California(CA), 94043
</div>
</VTimelineItem>
</VTimeline>
</div>
</VWindowItem>
<VWindowItem>
<div>
<VTimeline
align="start"
truncate-line="both"
side="end"
density="compact"
line-thickness="1"
class="v-timeline--variant-outlined"
>
<VTimelineItem
icon="tabler-circle-check"
dot-color="rgba(var(--v-theme-surface))"
icon-color="success"
fill-dot
size="20"
:elevation="0"
>
<div class="text-body-2 text-uppercase text-success">
Sender
</div>
<div class="app-timeline-title">
Myrtle Ullrich
</div>
<div class="app-timeline-text">
101 Boulder, California(CA), 95959
</div>
</VTimelineItem>
<VTimelineItem
icon="tabler-map-pin"
dot-color="rgba(var(--v-theme-surface))"
icon-color="primary"
fill-dot
size="20"
:elevation="0"
>
<div class="text-body-2 text-primary text-uppercase">
Receiver
</div>
<div class="app-timeline-title">
Barry Schowalter
</div>
<div class="app-timeline-text">
939 Orange, California(CA), 92118
</div>
</VTimelineItem>
</VTimeline>
<VDivider
class="my-4"
style="border-style: dashed;"
/>
<VTimeline
align="start"
truncate-line="both"
side="end"
density="compact"
line-thickness="1"
class="v-timeline--variant-outlined"
>
<VTimelineItem
icon="tabler-circle-check"
dot-color="rgba(var(--v-theme-surface))"
icon-color="success"
fill-dot
size="20"
:elevation="0"
>
<div class="text-body-2 text-uppercase text-success">
Sender
</div>
<div class="app-timeline-title">
Veronica Herman
</div>
<div class="app-timeline-text">
162 Windsor, California(CA), 95492
</div>
</VTimelineItem>
<VTimelineItem
icon="tabler-map-pin"
dot-color="rgba(var(--v-theme-surface))"
icon-color="primary"
fill-dot
size="20"
:elevation="0"
>
<div class="text-body-2 text-primary text-uppercase">
Receiver
</div>
<div class="app-timeline-title">
Helen Jacobs
</div>
<div class="app-timeline-text">
487 Sunset, California(CA), 94043
</div>
</VTimelineItem>
</VTimeline>
</div>
</VWindowItem>
</VWindow>
</VCardText>
</VCard>
</template>
<style lang="scss">
.country-order-card {
.v-timeline .v-timeline-divider__dot .v-timeline-divider__inner-dot {
box-shadow: none !important;
}
.v-timeline-item {
.v-timeline-divider {
.v-timeline-divider__dot {
background: none !important;
}
}
}
}
</style>

View File

@@ -0,0 +1,65 @@
<script setup>
import avatar1 from '@images/avatars/avatar-1.png'
import avatar2 from '@images/avatars/avatar-2.png'
import avatar3 from '@images/avatars/avatar-3.png'
import avatar4 from '@images/avatars/avatar-4.png'
</script>
<template>
<VCard>
<VCardItem title="Popular Instructors">
<template #append>
<MoreBtn />
</template>
</VCardItem>
<VDivider />
<div class="d-flex justify-space-between py-4 px-6">
<div class="text-body-1 text-uppercase">
instructors
</div>
<div class="text-body-1 text-uppercase">
Courses
</div>
</div>
<VDivider />
<VCardText>
<VList class="card-list">
<VListItem
v-for="instructor in [
{ name: 'Jordan Stevenson', profession: 'Business Intelligence', totalCourses: 33, avatar: avatar1 },
{ name: 'Bentlee Emblin', profession: 'Digital Marketing', totalCourses: 52, avatar: avatar2 },
{ name: 'Benedetto Rossiter', profession: 'UI/UX Design', totalCourses: 12, avatar: avatar3 },
{ name: 'Beverlie Krabbe', profession: 'Vue', totalCourses: 8, avatar: avatar4 },
]"
:key="instructor.name"
>
<template #prepend>
<VAvatar
size="34"
class="me-1"
:image="instructor.avatar"
/>
</template>
<VListItemTitle class="font-weight-medium me-4">
{{ instructor.name }}
</VListItemTitle>
<VListItemSubtitle class="me-4">
{{ instructor.profession }}
</VListItemSubtitle>
<template #append>
<h6 class="text-h6">
{{ instructor.totalCourses }}
</h6>
</template>
</VListItem>
</VList>
</VCardText>
</VCard>
</template>
<style lang="scss">
.card-list {
--v-card-list-gap: 1rem;
}
</style>

View File

@@ -0,0 +1,112 @@
<script setup>
import amazonEchoDot from '@images/eCommerce/amazon-echo-dot.png'
import appleWatch from '@images/eCommerce/apple-watch.png'
import headphone from '@images/eCommerce/headphone.png'
import iphone from '@images/eCommerce/iphone.png'
import nike from '@images/eCommerce/nike.png'
import sonyDualsense from '@images/eCommerce/sony-dualsense.png'
const popularProducts = [
{
avatarImg: iphone,
title: 'Apple iPhone 13',
subtitle: 'Item: #FXZ-4567',
stats: '$999.29',
},
{
avatarImg: nike,
title: 'Nike Air Jordan',
subtitle: 'Item: #FXZ-3456',
stats: '$72.40',
},
{
avatarImg: headphone,
title: 'Beats Studio 2',
subtitle: 'Item: #FXZ-9485',
stats: '$99',
},
{
avatarImg: appleWatch,
title: 'Apple Watch Series 7',
subtitle: 'Item: #FXZ-2345',
stats: '$249.99',
},
{
avatarImg: amazonEchoDot,
title: 'Amazon Echo Dot',
subtitle: 'Item: #FXZ-8959',
stats: '$79.40',
},
{
avatarImg: sonyDualsense,
title: 'Play Station Console',
subtitle: 'Item: #FXZ-7892',
stats: '$129.48',
},
]
const moreList = [
{
title: 'Refresh',
value: 'refresh',
},
{
title: 'Download',
value: 'Download',
},
{
title: 'View All',
value: 'View All',
},
]
</script>
<template>
<VCard
title="Popular Products"
subtitle="Total 10.4k Visitors"
>
<template #append>
<div class="mt-n4 me-n2">
<MoreBtn :menu-list="moreList" />
</div>
</template>
<VCardText>
<VList class="card-list">
<VListItem
v-for="product in popularProducts"
:key="product.title"
>
<template #prepend>
<VAvatar
size="46"
rounded
class="me-1"
:image="product.avatarImg"
/>
</template>
<VListItemTitle class="font-weight-medium me-4">
{{ product.title }}
</VListItemTitle>
<VListItemSubtitle class="me-4">
{{ product.subtitle }}
</VListItemSubtitle>
<template #append>
<div class="d-flex align-center">
<span class="text-body-1">{{ product.stats }}</span>
</div>
</template>
</VListItem>
</VList>
</VCardText>
</VCard>
</template>
<style lang="scss" scoped>
.card-list {
--v-card-list-gap: 24px;
}
</style>

View File

@@ -0,0 +1,120 @@
<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>

View File

@@ -0,0 +1,130 @@
<script setup>
const sourceVisits = [
{
avatarIcon: 'tabler-shadow',
title: 'Direct Source',
subtitle: 'Direct link click',
stats: '1.2k',
profitLoss: 4.2,
},
{
avatarIcon: 'tabler-globe',
title: 'Social Network',
subtitle: 'Social Channels',
stats: '31.5k',
profitLoss: 8.2,
},
{
avatarIcon: 'tabler-mail',
title: 'Email Newsletter',
subtitle: 'Mail Campaigns',
stats: '893',
profitLoss: 2.4,
},
{
avatarIcon: 'tabler-external-link',
title: 'Referrals',
subtitle: 'Impact Radius Visits',
stats: '342',
profitLoss: -0.4,
},
{
avatarIcon: 'tabler-discount',
title: 'ADVT',
subtitle: 'Google ADVT',
stats: '2.15k',
profitLoss: 9.1,
},
{
avatarIcon: 'tabler-star',
title: 'Other',
subtitle: 'Many Sources',
stats: '12.5k',
profitLoss: 6.2,
},
]
const moreList = [
{
title: 'Refresh',
value: 'refresh',
},
{
title: 'Download',
value: 'Download',
},
{
title: 'View All',
value: 'View All',
},
]
</script>
<template>
<VCard>
<VCardItem>
<VCardTitle>Source Visits</VCardTitle>
<VCardSubtitle>
38.4k Visitors
</VCardSubtitle>
<template #append>
<div class="mt-n4 me-n2">
<MoreBtn :menu-list="moreList" />
</div>
</template>
</VCardItem>
<VCardText>
<VList class="card-list">
<VListItem
v-for="visit in sourceVisits"
:key="visit.title"
>
<template #prepend>
<VAvatar
size="38"
color="secondary"
variant="tonal"
class="me-1"
rounded
>
<VIcon
:icon="visit.avatarIcon"
size="22"
/>
</VAvatar>
</template>
<VListItemTitle class="font-weight-medium me-4">
{{ visit.title }}
</VListItemTitle>
<VListItemSubtitle class="me-4">
{{ visit.subtitle }}
</VListItemSubtitle>
<template #append>
<div class="d-flex align-center gap-x-4">
<div class="text-body-1">
{{ visit.stats }}
</div>
<VChip
label
size="small"
:color="visit.profitLoss > 0 ? 'success' : 'error'"
>
{{ visit.profitLoss > 0 ? '+' : '' }}
{{ visit.profitLoss }}%
</VChip>
</div>
</template>
</VListItem>
</VList>
</VCardText>
</VCard>
</template>
<style lang="scss" scoped>
.card-list {
--v-card-list-gap: 16px;
}
</style>

View File

@@ -0,0 +1,91 @@
<script setup>
const coursesData = [
{
title: 'Videography Basic Design Course',
views: '1.2k',
icon: 'tabler-brand-zoom',
color: 'primary',
},
{
title: 'Basic Front-end Development Course',
views: '834',
icon: 'tabler-code',
color: 'info',
},
{
title: 'Basic Fundamentals of Photography',
views: '3.7k',
icon: 'tabler-camera',
color: 'success',
},
{
title: 'Advance Dribble Base Visual Design',
views: '2.5k',
icon: 'tabler-brand-dribbble',
color: 'warning',
},
{
title: 'Your First Singing Lesson',
views: '948',
icon: 'tabler-microphone-2',
color: 'error',
},
]
</script>
<template>
<VCard>
<VCardItem title="Top Courses">
<template #append>
<MoreBtn />
</template>
</VCardItem>
<VCardText>
<VList class="card-list">
<VListItem
v-for="(course, index) in coursesData"
:key="index"
>
<template #prepend>
<VAvatar
rounded
variant="tonal"
:color="course.color"
class="me-1"
>
<VIcon
:icon="course.icon"
size="24"
/>
</VAvatar>
</template>
<VListItemTitle class="me-4">
<div class="d-flex flex-column">
<h6 class="text-h6 text-truncate">
{{ course.title }}
</h6>
<div>
<VChip
variant="tonal"
color="secondary"
label
size="small"
>
{{ course.views }} Views
</VChip>
</div>
</div>
</VListItemTitle>
</VListItem>
</VList>
</VCardText>
</VCard>
</template>
<style lang="scss" scoped>
.card-list {
--v-card-list-gap: 24px;
}
</style>

View File

@@ -0,0 +1,131 @@
<script setup>
const transitions = [
{
avatarIcon: 'tabler-wallet',
avatarColor: 'primary',
title: 'Wallet',
subtitle: 'Starbucks',
stats: '-$75',
profit: false,
},
{
avatarIcon: 'tabler-building-bank',
avatarColor: 'success',
title: 'Bank Transfer',
subtitle: 'Add Money',
stats: '+$480',
profit: true,
},
{
avatarIcon: 'tabler-brand-paypal',
avatarColor: 'error',
title: 'PayPal',
subtitle: 'Client Payment',
stats: '+$268',
profit: true,
},
{
avatarIcon: 'tabler-credit-card',
avatarColor: 'secondary',
title: 'Master Card',
subtitle: 'Ordered iPhone 13',
stats: '-$699',
profit: false,
},
{
avatarIcon: 'tabler-currency-dollar',
avatarColor: 'info',
title: 'Bank Transactions',
subtitle: 'Refund',
stats: '+$98',
profit: true,
},
{
avatarIcon: 'tabler-brand-paypal',
avatarColor: 'error',
title: 'PayPal',
subtitle: 'Client Payment',
stats: '+$126',
profit: true,
},
{
avatarIcon: 'tabler-building-bank',
avatarColor: 'success',
title: 'Bank Transfer',
subtitle: 'Pay Office Rent',
stats: '-$1290',
profit: false,
},
]
const moreList = [
{
title: 'Refresh',
value: 'refresh',
},
{
title: 'Download',
value: 'Download',
},
{
title: 'View All',
value: 'View All',
},
]
</script>
<template>
<VCard
title="Transactions"
subtitle="Total 58 Transactions done in this Month"
>
<template #append>
<div class="mt-n4 me-n2">
<MoreBtn :menu-list="moreList" />
</div>
</template>
<VCardText>
<VList class="card-list">
<VListItem
v-for="transition in transitions"
:key="transition.title"
>
<template #prepend>
<VAvatar
size="34"
:color="transition.avatarColor"
variant="tonal"
class="me-1"
rounded
>
<VIcon
:icon="transition.avatarIcon"
size="22"
/>
</VAvatar>
</template>
<VListItemTitle class="font-weight-medium">
{{ transition.title }}
</VListItemTitle>
<VListItemSubtitle>
{{ transition.subtitle }}
</VListItemSubtitle>
<template #append>
<div class="d-flex align-center">
<span :class="`${transition.profit ? 'text-success' : 'text-error'} font-weight-medium me-2`">{{ transition.stats }}</span>
</div>
</template>
</VListItem>
</VList>
</VCardText>
</VCard>
</template>
<style lang="scss" scoped>
.card-list {
--v-card-list-gap: 16px;
}
</style>

View File

@@ -0,0 +1,54 @@
<script setup>
import girlWithLaptop from '@images/illustrations/laptop-girl.png'
</script>
<template>
<VCard>
<VCardText>
<div class="d-flex justify-center align-start pb-0 px-3 pt-3 mb-4 bg-light-primary rounded">
<VImg
:src="girlWithLaptop"
width="145"
height="152"
/>
</div>
<div>
<h5 class="text-h5 mb-2">
Upcoming Webinar
</h5>
<div class="text-body-2">
Next Generation Frontend Architecture Using Layout Engine And Vue.
</div>
<div class="d-flex justify-space-between gap-4 flex-wrap my-4">
<div
v-for="{ icon, title, value } in [{ icon: 'tabler-calendar', title: '17 Nov 23', value: 'Date' }, { icon: 'tabler-clock', title: '32 Minutes', value: 'Duration' }]"
:key="title"
class="d-flex gap-x-3 align-center"
>
<VAvatar
color="primary"
variant="tonal"
rounded
>
<VIcon
:icon="icon"
size="28"
/>
</VAvatar>
<div>
<h6 class="text-h6">
{{ title }}
</h6>
<div class="text-sm">
{{ value }}
</div>
</div>
</div>
</div>
<VBtn block>
Join the event
</VBtn>
</div>
</VCardText>
</VCard>
</template>

View File

@@ -0,0 +1,95 @@
<script setup>
const assignmentData = [
{
title: 'Incorrect Address',
subtitle: 'all exceptions',
color: 'success',
progress: 83,
badgeValue: '+10%',
},
{
title: 'Good',
subtitle: '24 vehicles',
color: 'info',
progress: 17,
badgeValue: '8.1',
},
{
title: 'Average',
subtitle: '14 vehicles',
color: 'primary',
progress: 8,
badgeValue: '-2.5%',
},
{
title: 'Bad',
subtitle: '8 vehicles',
color: 'warning',
progress: 6,
badgeValue: '-3.4%',
},
{
title: 'Not Working',
subtitle: '4 vehicles',
color: 'error',
progress: 2,
badgeValue: '+12.6%',
},
]
</script>
<template>
<VCard>
<VCardItem title="Vehicle Condition">
<template #append>
<MoreBtn />
</template>
</VCardItem>
<VCardText>
<VList class="card-list">
<VListItem
v-for="assignment in assignmentData"
:key="assignment.title"
>
<template #prepend>
<VProgressCircular
v-model="assignment.progress"
:size="52"
class="me-4"
:color="assignment.color"
>
<span class="text-body-1 text-high-emphasis font-weight-medium">
{{ assignment.progress }}%
</span>
</VProgressCircular>
</template>
<VListItemTitle
class="font-weight-medium mb-2 me-2"
:class="`text-${assignment.color}`"
>
{{ assignment.title }}
</VListItemTitle>
<VListItemSubtitle class="me-2">
{{ assignment.subtitle }}
</VListItemSubtitle>
<template #append>
<VChip
label
color="secondary"
size="small"
>
{{ assignment.badgeValue }}
</VChip>
</template>
</VListItem>
</VList>
</VCardText>
</VCard>
</template>
<style lang="scss" scoped>
.card-list {
--v-card-list-gap: 1.75rem;
}
</style>

View File

@@ -0,0 +1,185 @@
<script setup>
import { VIcon } from 'vuetify/components/VIcon'
import sliderBar1 from '@images/illustrations/sidebar-pic-1.png'
import sliderBar2 from '@images/illustrations/sidebar-pic-2.png'
import sliderBar3 from '@images/illustrations/sidebar-pic-3.png'
const websiteAnalytics = [
{
name: 'Traffic',
slideImg: sliderBar1,
data: [
{
number: '1.5k',
text: 'Sessions',
},
{
number: '3.1k',
text: 'Page Views',
},
{
number: '1.2k',
text: 'Leads',
},
{
number: '12%',
text: 'Conversions',
},
],
},
{
name: 'Spending',
slideImg: sliderBar2,
data: [
{
number: '12h',
text: 'Spend',
},
{
number: '182',
text: 'Order Size',
},
{
number: '127',
text: 'Order',
},
{
number: '23k',
text: 'Items',
},
],
},
{
name: 'Revenue Sources',
slideImg: sliderBar3,
data: [
{
number: '268',
text: 'Direct',
},
{
number: '890',
text: 'Organic',
},
{
number: '622',
text: 'Referral',
},
{
number: '1.2k',
text: 'Campaign',
},
],
},
]
</script>
<template>
<VCard color="primary">
<VCarousel
cycle
:continuous="false"
:show-arrows="false"
hide-delimiter-background
:delimiter-icon="() => h(VIcon, { icon: 'fa-circle', size: '8' })"
height="auto"
class="carousel-delimiter-top-end web-analytics-carousel"
>
<VCarouselItem
v-for="item in websiteAnalytics"
:key="item.name"
>
<VCardText class="position-relative">
<VRow>
<VCol cols="12">
<h5 class="text-h5 text-white">
Website Analytics
</h5>
<p class="text-sm mb-0">
Total 28.5% Conversion Rate
</p>
</VCol>
<VCol
cols="12"
sm="6"
order="2"
order-sm="1"
>
<VRow>
<VCol
cols="12"
class="pb-0 pt-1"
>
<h6 class="text-h6 text-white mb-1 mt-5">
{{ item.name }}
</h6>
</VCol>
<VCol
v-for="d in item.data"
:key="d.number"
cols="6"
class="text-no-wrap pb-2"
>
<VChip
label
variant="flat"
size="default"
color="rgb(var(--v-theme-primary-darken-1))"
class="font-weight-medium text-white rounded me-2 px-2"
style="block-size: 30px;"
>
<span class="text-base">{{ d.number }}</span>
</VChip>
<span class="d-inline-block">{{ d.text }}</span>
</VCol>
</VRow>
</VCol>
<VCol
cols="12"
sm="6"
order="1"
order-sm="2"
class="text-center"
>
<img
:src="item.slideImg"
class="card-website-analytics-img"
style="filter: drop-shadow(0 4px 60px rgba(0, 0, 0, 50%));"
>
</VCol>
</VRow>
</VCardText>
</VCarouselItem>
</VCarousel>
</VCard>
</template>
<style lang="scss">
.card-website-analytics-img {
block-size: 150px;
}
@media screen and (min-width: 600px) {
.card-website-analytics-img {
position: absolute;
margin: auto;
inset-block-end: 2rem;
inset-inline-end: 2rem;
}
}
.web-analytics-carousel {
.v-carousel__controls {
.v-carousel__controls__item {
&.v-btn--active {
.v-icon {
opacity: 1 !important;
}
}
}
}
}
</style>