You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
54 lines
960 B
Vue
54 lines
960 B
Vue
<template>
|
|
<div
|
|
class="panel"
|
|
:class="props.mode === 'horizontal' ? 'flex-row' : 'flex-col'">
|
|
<div class="top">
|
|
<Icon
|
|
:name="props.icon"
|
|
size="24" />
|
|
<div class="title">
|
|
{{ props.title }}
|
|
</div>
|
|
</div>
|
|
<div class="middle">
|
|
<div class="data">
|
|
{{ props.data }}
|
|
</div>
|
|
</div>
|
|
<div class="bottom"> </div>
|
|
</div>
|
|
</template>
|
|
|
|
<script setup lang="ts">
|
|
interface Props {
|
|
mode: 'horizontal' | 'vertical';
|
|
icon: string;
|
|
title: string;
|
|
description?: string;
|
|
data: string | number;
|
|
}
|
|
|
|
const props = defineProps<Props>();
|
|
</script>
|
|
|
|
<style scoped>
|
|
.panel {
|
|
@apply bg-secondary flex h-fit w-full justify-start gap-8 p-4 text-center;
|
|
}
|
|
.top {
|
|
@apply flex flex-row items-center justify-start gap-4;
|
|
}
|
|
.middle {
|
|
@apply flex flex-row items-center gap-4;
|
|
}
|
|
.bottom {
|
|
@apply flex flex-row items-center gap-4;
|
|
}
|
|
.title {
|
|
@apply text-2xl font-bold;
|
|
}
|
|
.data {
|
|
@apply text-2xl font-bold;
|
|
}
|
|
</style>
|