Files
vmall/apps/mall/components/StatusBadge.vue
T

25 lines
734 B
Vue

<script setup lang="ts">
const props = defineProps<{ status: string; kind: "order" | "shipment" | "invoice" }>();
const tone = computed<"green" | "blue" | "red" | "orange">(() => {
if (["completed", "delivered", "issued"].includes(props.status)) return "green";
if (["paid", "fulfilling", "shipped"].includes(props.status)) return "blue";
if (["cancelled"].includes(props.status)) return "red";
return "orange";
});
const label = computed(() => {
const root =
props.kind === "order"
? "order.status"
: props.kind === "shipment"
? "shipment.status"
: "invoice.status";
return `${root}.${props.status}`;
});
</script>
<template>
<VBadge :tone="tone">{{ $t(label) }}</VBadge>
</template>