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,116 @@
<script setup>
const logisticData = ref([
{
icon: 'tabler-truck',
color: 'primary',
title: 'On route vehicles',
value: 42,
change: 18.2,
isHover: false,
},
{
icon: 'tabler-alert-triangle',
color: 'warning',
title: 'Vehicles with errors',
value: 8,
change: -8.7,
isHover: false,
},
{
icon: 'tabler-git-fork',
color: 'error',
title: 'Deviated from route',
value: 27,
change: 4.3,
isHover: false,
},
{
icon: 'tabler-clock',
color: 'info',
title: 'Late vehicles',
value: 13,
change: -2.5,
isHover: false,
},
])
</script>
<template>
<VRow>
<VCol
v-for="(data, index) in logisticData"
:key="index"
cols="12"
md="3"
sm="6"
>
<div>
<VCard
class="logistics-card-statistics cursor-pointer"
:style="data.isHover ? `border-block-end-color: rgb(var(--v-theme-${data.color}))` : `border-block-end-color: rgba(var(--v-theme-${data.color}),0.38)`"
@mouseenter="data.isHover = true"
@mouseleave="data.isHover = false"
>
<VCardText>
<div class="d-flex align-center gap-x-4 mb-1">
<VAvatar
variant="tonal"
:color="data.color"
rounded
>
<VIcon
:icon="data.icon"
size="28"
/>
</VAvatar>
<h4 class="text-h4">
{{ data.value }}
</h4>
</div>
<div class="text-body-1 mb-1">
{{ data.title }}
</div>
<div class="d-flex gap-x-2 align-center">
<h6 class="text-h6">
{{ (data.change > 0) ? '+' : '' }} {{ data.change }}%
</h6>
<div class="text-sm text-disabled">
than last week
</div>
</div>
</VCardText>
</VCard>
</div>
</VCol>
</VRow>
</template>
<style lang="scss" scoped>
@use "@core-scss/base/mixins" as mixins;
.logistics-card-statistics {
border-block-end-style: solid;
border-block-end-width: 2px;
&:hover {
border-block-end-width: 3px;
margin-block-end: -1px;
@include mixins.elevation(8);
transition: all 0.1s ease-out;
}
}
.skin--bordered {
.logistics-card-statistics {
border-block-end-width: 2px;
&:hover {
border-block-end-width: 3px;
margin-block-end: -2px;
transition: all 0.1s ease-out;
}
}
}
</style>

View File

@@ -0,0 +1,116 @@
<script setup>
const chartColors = {
donut: {
series1: '#28C76F',
series2: '#28C76FCC',
series3: '#28C76F99',
series4: '#28C76F66',
},
}
const headingColor = 'rgba(var(--v-theme-on-background), var(--v-high-emphasis-opacity))'
const labelColor = 'rgba(var(--v-theme-on-background), var(--v-medium-emphasis-opacity))'
const deliveryExceptionsChartSeries = [
13,
25,
22,
40,
]
const deliveryExceptionsChartConfig = {
labels: [
'Incorrect address',
'Weather conditions',
'Federal Holidays',
'Damage during transit',
],
colors: [
chartColors.donut.series1,
chartColors.donut.series2,
chartColors.donut.series3,
chartColors.donut.series4,
],
stroke: { width: 0 },
dataLabels: {
enabled: false,
formatter(val) {
return `${ Number.parseInt(val) }%`
},
},
legend: {
show: true,
position: 'bottom',
offsetY: 10,
markers: {
width: 8,
height: 8,
offsetX: -3,
},
itemMargin: {
horizontal: 15,
vertical: 5,
},
fontSize: '13px',
fontWeight: 400,
labels: {
colors: headingColor,
useSeriesColors: false,
},
},
tooltip: { theme: false },
grid: { padding: { top: 15 } },
plotOptions: {
pie: {
donut: {
size: '75%',
labels: {
show: true,
value: {
fontSize: '24px',
color: headingColor,
fontWeight: 500,
offsetY: -20,
formatter(val) {
return `${ Number.parseInt(val) }%`
},
},
name: { offsetY: 20 },
total: {
show: true,
fontSize: '0.9375rem',
fontWeight: 400,
label: 'AVG. Exceptions',
color: labelColor,
formatter() {
return '30%'
},
},
},
},
},
},
responsive: [{
breakpoint: 420,
options: { chart: { height: 400 } },
}],
}
</script>
<template>
<VCard>
<VCardItem title="Delivery exceptions">
<template #append>
<MoreBtn />
</template>
</VCardItem>
<VCardText>
<VueApexCharts
type="donut"
height="400"
:options="deliveryExceptionsChartConfig"
:series="deliveryExceptionsChartSeries"
/>
</VCardText>
</VCard>
</template>

View File

@@ -0,0 +1,112 @@
<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"
>
<template #prepend>
<VAvatar
:color="data.color"
variant="tonal"
rounded
size="38"
class="me-1"
>
<VIcon
:icon="data.icon"
size="26"
/>
</VAvatar>
</template>
<VListItemTitle class="me-2">
{{ data.title }}
</VListItemTitle>
<VListItemSubtitle>
<div
:class="data.change > 0 ? 'text-success' : 'text-error'"
class="d-flex align-center gap-x-1"
>
<VIcon
:icon="data.change > 0 ? 'tabler-chevron-up' : 'tabler-chevron-down'"
size="20"
/>
<div>{{ data.change }}%</div>
</div>
</VListItemSubtitle>
<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,347 @@
<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"
>
<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;
}
}
</style>

View File

@@ -0,0 +1,153 @@
<script setup>
const itemsPerPage = ref(5)
const page = ref(1)
const sortBy = ref()
const orderBy = ref()
const updateOptions = options => {
sortBy.value = options.sortBy[0]?.key
orderBy.value = options.sortBy[0]?.order
}
const { data: vehiclesData } = await useApi(createUrl('/apps/logistics/vehicles', {
query: {
page,
itemsPerPage,
sortBy,
orderBy,
},
}))
const vehicles = computed(() => vehiclesData.value.vehicles)
const totalVehicles = computed(() => vehiclesData.value.totalVehicles)
const headers = [
{
title: 'LOCATION',
key: 'location',
},
{
title: 'STARTING ROUTE',
key: 'startRoute',
},
{
title: 'ENDING ROUTE',
key: 'endRoute',
},
{
title: 'WARNINGS',
key: 'warnings',
},
{
title: 'PROGRESS',
key: 'progress',
},
]
const resolveChipColor = warning => {
if (warning === 'No Warnings')
return 'success'
if (warning === 'fuel problems')
return 'primary'
if (warning === 'Temperature Not Optimal')
return 'warning'
if (warning === 'Ecu Not Responding')
return 'error'
if (warning === 'Oil Leakage')
return 'info'
}
</script>
<template>
<VCard>
<VCardItem title="On Route vehicles">
<template #append>
<MoreBtn />
</template>
</VCardItem>
<VDivider />
<VDataTableServer
v-model:items-per-page="itemsPerPage"
v-model:page="page"
:items-per-page-options="[
{ value: 5, title: '5' },
{ value: 10, title: '10' },
{ value: 20, title: '20' },
{ value: -1, title: '$vuetify.dataFooter.itemsPerPageAll' },
]"
:items-length="totalVehicles"
:items="vehicles"
item-value="location"
:headers="headers"
show-select
class="text-no-wrap"
@update:options="updateOptions"
>
<template #item.location="{ item }">
<VAvatar
variant="tonal"
color="secondary"
class="me-4"
size="40"
>
<VIcon
icon="tabler-car"
size="28"
/>
</VAvatar>
<RouterLink :to="{ name: 'apps-logistics-fleet' }">
<div class="text-link text-base font-weight-medium d-inline-block">
VOL-{{ item.location }}
</div>
</RouterLink>
</template>
<template #item.startRoute="{ item }">
{{ item.startCity }}, {{ item.startCountry }}
</template>
<template #item.endRoute="{ item }">
{{ item.endCity }}, {{ item.endCountry }}
</template>
<template #item.warnings="{ item }">
<VChip
:color="resolveChipColor(item.warnings)"
label
size="small"
>
{{ item.warnings }}
</VChip>
</template>
<template #item.progress="{ item }">
<div
class="d-flex align-center gap-x-4"
style="min-inline-size: 240px;"
>
<div class="w-100">
<VProgressLinear
:model-value="item.progress"
rounded
color="primary"
:height="8"
/>
</div>
<div>
{{ item.progress }}%
</div>
</div>
</template>
<!-- pagination -->
<template #bottom>
<TablePagination
v-model:page="page"
:items-per-page="itemsPerPage"
:total-items="totalVehicles"
/>
</template>
</VDataTableServer>
</VCard>
</template>

View File

@@ -0,0 +1,241 @@
<script setup>
const chartColors = {
line: {
series1: '#FFB400',
series2: '#9055FD',
series3: '#7367f029',
},
}
const headingColor = 'rgba(var(--v-theme-on-background), var(--v-high-emphasis-opacity))'
const labelColor = 'rgba(var(--v-theme-on-background), var(--v-medium-emphasis-opacity))'
const borderColor = 'rgba(var(--v-border-color), var(--v-border-opacity))'
const series = [
{
name: 'Shipment',
type: 'column',
data: [
38,
45,
33,
38,
32,
48,
45,
40,
42,
37,
],
},
{
name: 'Delivery',
type: 'line',
data: [
23,
28,
23,
32,
25,
42,
32,
32,
26,
24,
],
},
]
const shipmentConfig = {
chart: {
type: 'line',
stacked: false,
parentHeightOffset: 0,
toolbar: { show: false },
zoom: { enabled: false },
},
markers: {
size: 5,
colors: '#fff',
strokeColors: chartColors.line.series2,
hover: { size: 6 },
borderRadius: 4,
},
stroke: {
curve: 'smooth',
width: [
0,
3,
],
lineCap: 'round',
},
legend: {
show: true,
position: 'bottom',
markers: {
width: 8,
height: 8,
offsetX: -3,
},
height: 40,
itemMargin: {
horizontal: 10,
vertical: 0,
},
fontSize: '15px',
fontFamily: 'Open Sans',
fontWeight: 400,
labels: {
colors: headingColor,
useSeriesColors: !1,
},
offsetY: 10,
},
grid: {
strokeDashArray: 8,
borderColor,
},
colors: [
chartColors.line.series1,
chartColors.line.series2,
],
fill: {
opacity: [
1,
1,
],
},
plotOptions: {
bar: {
columnWidth: '30%',
borderRadius: 4,
borderRadiusApplication: 'end',
},
},
dataLabels: { enabled: false },
xaxis: {
tickAmount: 10,
categories: [
'1 Jan',
'2 Jan',
'3 Jan',
'4 Jan',
'5 Jan',
'6 Jan',
'7 Jan',
'8 Jan',
'9 Jan',
'10 Jan',
],
labels: {
style: {
colors: labelColor,
fontSize: '13px',
fontWeight: 400,
},
},
axisBorder: { show: false },
axisTicks: { show: false },
},
yaxis: {
tickAmount: 4,
min: 0,
max: 50,
labels: {
style: {
colors: labelColor,
fontSize: '13px',
fontWeight: 400,
},
formatter(val) {
return `${ val }%`
},
},
},
responsive: [
{
breakpoint: 1400,
options: {
chart: { height: 320 },
xaxis: { labels: { style: { fontSize: '10px' } } },
legend: {
itemMargin: {
vertical: 0,
horizontal: 10,
},
fontSize: '13px',
offsetY: 12,
},
},
},
{
breakpoint: 1025,
options: {
chart: { height: 415 },
plotOptions: { bar: { columnWidth: '50%' } },
},
},
{
breakpoint: 982,
options: { plotOptions: { bar: { columnWidth: '30%' } } },
},
{
breakpoint: 480,
options: {
chart: { height: 250 },
legend: { offsetY: 7 },
},
},
],
}
</script>
<template>
<VCard>
<VCardItem
title="Shipment statistics"
subtitle="Total number of deliveries 23.8k"
>
<template #append>
<VBtn
variant="tonal"
append-icon="tabler-chevron-down"
>
January
</VBtn>
</template>
</VCardItem>
<VCardText>
<VueApexCharts
id="shipment-statistics"
type="line"
height="320"
:options="shipmentConfig"
:series="series"
/>
</VCardText>
</VCard>
</template>
<style lang="scss">
@use "@core-scss/template/libs/apex-chart.scss";
.v-btn-group--divided .v-btn:not(:last-child) {
border-inline-end-color: rgba(var(--v-theme-primary), 0.5);
}
#shipment-statistics {
.apexcharts-legend-text {
font-size: 16px !important;
}
.apexcharts-legend-series {
border: 1px solid rgba(var(--v-theme-on-surface), 0.12);
border-radius: 0.375rem;
block-size: 83%;
padding-block: 4px;
padding-inline: 16px 12px;
}
}
</style>

View File

@@ -0,0 +1,188 @@
<script setup>
const vehicleData = [
{
icon: 'tabler-car',
title: 'On the way',
time: '2hr 10min',
percentage: 39.7,
},
{
icon: 'tabler-circle-arrow-down',
title: 'Unloading',
time: '3hr 15min',
percentage: 28.3,
},
{
icon: 'tabler-circle-arrow-up',
title: 'Loading',
time: '1hr 24min',
percentage: 17.4,
},
{
icon: 'tabler-clock',
title: 'Waiting',
time: '5hr 19min',
percentage: 14.6,
},
]
</script>
<template>
<VCard>
<VCardItem title="Vehicles Overview">
<template #append>
<MoreBtn />
</template>
</VCardItem>
<VCardText>
<div class="d-flex mb-6">
<div style="inline-size: 39.7%;">
<div class="vehicle-progress-label position-relative mb-6 text-body-1 d-none d-sm-block">
On the way
</div>
<VProgressLinear
color="rgba(var(--v-theme-on-surface), var(--v-hover-opacity))"
model-value="100"
height="46"
class="rounded-e-0 rounded-lg"
>
<div class="text-start text-sm font-weight-medium">
39.7%
</div>
</VProgressLinear>
</div>
<div style="inline-size: 28.3%;">
<div class="vehicle-progress-label position-relative mb-6 text-body-1 d-none d-sm-block">
Unloading
</div>
<VProgressLinear
color="rgb(var(--v-theme-primary))"
model-value="100"
class="rounded-0"
height="46"
>
<div class="text-white text-sm font-weight-medium text-start">
28.3%
</div>
</VProgressLinear>
</div>
<div style="inline-size: 17.4%;">
<div class="vehicle-progress-label position-relative mb-6 text-body-1 d-none d-sm-block">
Loading
</div>
<VProgressLinear
color="rgb(var(--v-theme-info))"
model-value="100"
height="46"
class="rounded-0"
>
<div class="text-white text-sm font-weight-medium text-start">
17.4%
</div>
</VProgressLinear>
</div>
<div style="inline-size: 14.6%;">
<div class="vehicle-progress-label position-relative mb-6 text-body-1 d-none d-sm-block">
Waiting
</div>
<VProgressLinear
color="rgb(var(--v-tooltip-background))"
model-value="100"
height="46"
class="rounded-s-0 rounded-lg"
>
<div class="text-sm text-surface font-weight-medium text-start">
14.6%
</div>
</VProgressLinear>
</div>
</div>
<VTable class="text-no-wrap">
<tbody>
<tr
v-for="(vehicle, index) in vehicleData"
:key="index"
>
<td
width="70%"
style="padding-inline-start: 0 !important;"
>
<div class="d-flex align-center gap-x-2">
<VIcon
:icon="vehicle.icon"
size="24"
class="text-high-emphasis"
/>
<div class="text-body-1 text-high-emphasis">
{{ vehicle.title }}
</div>
</div>
</td>
<td>
<h6 class="text-h6">
{{ vehicle.time }}
</h6>
</td>
<td>
<div class="text-body-1">
{{ vehicle.percentage }}%
</div>
</td>
</tr>
</tbody>
</VTable>
</VCardText>
</VCard>
</template>
<style lang="scss" scoped>
.vehicle-progress-label {
padding-block-end: 1rem;
&::after {
position: absolute;
display: inline-block;
background-color: rgba(var(--v-theme-on-surface), var(--v-border-opacity));
block-size: 10px;
content: "";
inline-size: 2px;
inset-block-end: 0;
inset-inline-start: 0;
[dir="rtl"] & {
inset-inline: unset 0;
}
}
}
</style>
<style lang="scss">
.v-progress-linear__content {
justify-content: start;
padding-inline-start: 1rem;
}
#shipment-statistics .apexcharts-legend-series {
padding-inline: 16px;
}
@media (max-width: 1080px) {
#shipment-statistics .apexcharts-legend-series {
padding-inline: 12px;
}
.v-progress-linear__content {
padding-inline-start: 0.75rem !important;
}
}
@media (max-width: 576px) {
#shipment-statistics .apexcharts-legend-series {
padding-inline: 8px;
}
.v-progress-linear__content {
padding-inline-start: 0.125rem !important;
}
}
</style>