<script setup>
import { computed } from 'vue';
import { dashIfEmpty } from 'src/filters';

const $props = defineProps({
    label: { type: String, default: null },
    value: { type: [Number, String, Boolean], default: null },
    titleLabel: { type: String, default: null },
    titleValue: { type: [Number, String, Boolean], default: null },
    info: { type: String, default: null },
    dash: { type: Boolean, default: true },
});
const isBooleanValue = computed(() => typeof $props.value === 'boolean');
</script>
<template>
    <div class="vn-label-value">
        <div v-if="$props.label || $slots.label" class="label">
            <slot name="label">
                <span :title="$props.titleLabel ?? $props.label">{{ $props.label }}</span>
            </slot>
        </div>
        <div class="value">
            <span v-if="isBooleanValue">
                <QIcon
                    :name="$props.value ? `check` : `close`"
                    :color="$props.value ? `positive` : `negative`"
                    size="sm"
                />
            </span>
            <slot v-else name="value">
                <span :title="$props.value">
                    {{ $props.dash ? dashIfEmpty($props.value) : $props.value }}
                </span>
            </slot>
        </div>
        <div class="info" v-if="$props.info">
            <QIcon name="info">
                <QTooltip class="bg-dark text-white shadow-4" :offset="[10, 10]">
                    {{ $props.info }}
                </QTooltip>
            </QIcon>
        </div>
    </div>
</template>