多维表格
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

81 lines
1.9 KiB

2 months ago
<script setup lang="ts">
2 months ago
import FeedRecents from './Recents/index.vue'
import FeedChangelog from './Changelog/index.vue'
2 months ago
import FeedYoutube from './Youtube/index.vue'
import FeedTwitter from './Twitter/index.vue'
2 months ago
import FeedRoadmap from './Roadmap.vue'
const { activeTab } = useProductFeed()
2 months ago
const tabs: Array<{
key: string
icon: keyof typeof iconMap
title: string
container: any
}> = [
2 months ago
{
key: 'recents',
2 months ago
icon: 'ncClock',
2 months ago
title: 'Recents',
container: FeedRecents,
},
{
key: 'changelog',
2 months ago
icon: 'ncList',
2 months ago
title: 'Changelog',
2 months ago
container: FeedChangelog,
2 months ago
},
{
key: 'roadmap',
icon: 'ncMapPin',
title: 'Roadmap',
container: FeedRoadmap,
},
{
key: 'youtube',
icon: 'ncYoutube',
title: 'Youtube',
container: FeedYoutube,
},
{
key: 'twitter',
icon: 'ncTwitter',
title: 'Twitter',
container: FeedTwitter,
},
2 months ago
]
2 months ago
</script>
<template>
<FeedHeader />
<FeedSocial v-if="activeTab === 'recents'" class="absolute right-4 top-28" />
2 months ago
<div class="flex flex-col h-full">
<NcTabs v-model:activeKey="activeTab" centered>
<a-tab-pane v-for="tab in tabs" :key="tab.key" class="bg-gray-50 !h-full">
<template #tab>
<div class="flex gap-2 items-center">
<GeneralIcon
:class="{
'text-brand-500': activeTab === tab.key,
'text-gray-600': activeTab !== tab.key,
}"
:icon="tab.icon as any"
/>
<span
:class="{
'text-brand-500 font-medium': activeTab === tab.key,
'text-gray-700': activeTab !== tab.key,
}"
class="text-sm"
>{{ tab.title }}
</span>
</div>
</template>
<component :is="tab.container" />
2 months ago
</a-tab-pane>
</NcTabs>
</div>
2 months ago
</template>
<style scoped lang="scss"></style>