main
vue 35 lines 693 Bytes
Raw
1 <template>
2 <n-tag :size :type :bordered :round>
3 <div v-if="$slots.default">
4 <slot />
5 </div>
6 <div v-else class="flex items-center gap-2">
7 <slot name="label">
8 <div v-if="label" class="text-secondary">{{ label }}</div>
9 </slot>
10 <slot name="value">
11 <div v-if="value">{{ value }}</div>
12 </slot>
13 </div>
14 </n-tag>
15 </template>
16
17 <script setup lang="ts">
18 import type { TagProps } from "naive-ui"
19 import { NTag } from "naive-ui"
20
21 withDefaults(
22 defineProps<{
23 label?: string | number | null
24 value?: string | number | null
25 type?: TagProps["type"]
26 size?: TagProps["size"]
27 bordered?: boolean
28 round?: boolean
29 }>(),
30 {
31 bordered: true,
32 round: false
33 }
34 )
35 </script>