42 lines
820 B
Vue
42 lines
820 B
Vue
<script setup lang="ts">
|
|
import { t } from '@/i18n'
|
|
|
|
withDefaults(
|
|
defineProps<{
|
|
online: boolean
|
|
size?: 'sm' | 'md' | 'lg'
|
|
pending?: 'publish' | 'unpublish'
|
|
}>(),
|
|
{
|
|
size: 'md',
|
|
},
|
|
)
|
|
</script>
|
|
|
|
<template>
|
|
<UBadge
|
|
v-if="pending"
|
|
color="neutral"
|
|
variant="outline"
|
|
icon="i-lucide-loader-circle"
|
|
:size="size"
|
|
:class="size === 'lg' ? undefined : 'px-2'"
|
|
:ui="{ leadingIcon: 'animate-spin' }"
|
|
>
|
|
{{ pending === 'publish' ? t('Publishing…') : t('Unpublishing…') }}
|
|
</UBadge>
|
|
<UBadge v-else-if="online" color="neutral" variant="solid" icon="i-lucide-globe" :size="size">
|
|
{{ t('Online') }}
|
|
</UBadge>
|
|
<UBadge
|
|
v-else
|
|
color="neutral"
|
|
variant="outline"
|
|
icon="i-lucide-pencil-line"
|
|
:size="size"
|
|
:class="size === 'lg' ? undefined : 'px-2'"
|
|
>
|
|
{{ t('Draft') }}
|
|
</UBadge>
|
|
</template>
|