mirror of
https://github.com/setube/ogame-vue-ts.git
synced 2026-05-12 07:55:11 +08:00
重构并精简了部分UI组件,移除冗余弹窗与详情组件,新增NPC相关逻辑(npcBehaviorLogic、npcGrowthLogic、npcStore等)及外交逻辑(diplomaticLogic、DiplomacyView)。完善分页、标签、复选框等通用UI组件。优化战报弹窗,调整README下载链接为相对路径,修复部分国际化内容。
35 lines
1.5 KiB
Vue
35 lines
1.5 KiB
Vue
<template>
|
|
<TabsTriggerRoot
|
|
data-slot="tabs-trigger"
|
|
:class="
|
|
cn(
|
|
'inline-flex h-[calc(100%-1px)] flex-1 items-center justify-center gap-1.5 rounded-md border border-transparent px-2 py-1 text-sm font-medium whitespace-nowrap transition-all',
|
|
'text-muted-foreground hover:text-foreground',
|
|
'data-[state=active]:bg-background data-[state=active]:text-foreground data-[state=active]:shadow-md data-[state=active]:border-border',
|
|
'dark:data-[state=active]:bg-background dark:data-[state=active]:text-foreground dark:data-[state=active]:border-border dark:data-[state=active]:shadow-lg',
|
|
'focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:outline-ring focus-visible:ring-[3px] focus-visible:outline-1',
|
|
'disabled:pointer-events-none disabled:opacity-50',
|
|
'[&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*=\'size-\'])]:size-4',
|
|
props.class
|
|
)
|
|
"
|
|
v-bind="forwardedProps"
|
|
>
|
|
<slot />
|
|
</TabsTriggerRoot>
|
|
</template>
|
|
|
|
<script setup lang="ts">
|
|
import type { TabsTriggerProps } from 'reka-ui'
|
|
import type { HTMLAttributes } from 'vue'
|
|
import { reactiveOmit } from '@vueuse/core'
|
|
import { TabsTrigger as TabsTriggerRoot, useForwardProps } from 'reka-ui'
|
|
import { cn } from '@/lib/utils'
|
|
|
|
const props = defineProps<TabsTriggerProps & { class?: HTMLAttributes['class'] }>()
|
|
|
|
const delegatedProps = reactiveOmit(props, 'class')
|
|
|
|
const forwardedProps = useForwardProps(delegatedProps)
|
|
</script>
|