<script setup lang='ts'> import { computed, ref } from 'vue' import { NCard, NModal, NTabPane, NTabs } from 'naive-ui' import General from './General.vue' import About from './About.vue' import { SvgIcon } from '@/components/common' const props = defineProps<Props>() const emit = defineEmits<Emit>() interface Props { visible: boolean } interface Emit { (e: 'update:visible', visible: boolean): void } const active = ref('General') const show = computed({ get() { return props.visible }, set(visible: boolean) { emit('update:visible', visible) }, }) </script> <template> <NModal v-model:show="show" :auto-focus="false"> <NCard role="dialog" aria-modal="true" :bordered="false" style="width: 95%; max-width: 640px"> <NTabs v-model:value="active" type="line" animated> <NTabPane name="General" tab="General"> <template #tab> <SvgIcon class="text-lg" icon="ri:file-user-line" /> <span class="ml-2">{{ $t('setting.general') }}</span> </template> <div class="min-h-[100px]"> <General /> </div> </NTabPane> <NTabPane name="Config" tab="Config"> <template #tab> <SvgIcon class="text-lg" icon="ri:list-settings-line" /> <span class="ml-2">{{ $t('setting.config') }}</span> </template> <About /> </NTabPane> </NTabs> </NCard> </NModal> </template>