style: 优化前端 UI 布局和样式

- MainLayout 增加间距优化,改善页面布局
- ModelDetailDrawer 调整样式细节,提升用户体验
This commit is contained in:
fawney19
2025-12-11 10:05:53 +08:00
parent 0474f63403
commit ee8614919e
2 changed files with 16 additions and 7 deletions

View File

@@ -21,19 +21,20 @@
{{ model.is_active ? '活跃' : '停用' }} {{ model.is_active ? '活跃' : '停用' }}
</Badge> </Badge>
</div> </div>
<div class="flex items-center gap-2"> <div class="flex items-center gap-2 text-sm text-muted-foreground min-w-0">
<span class="text-sm text-muted-foreground font-mono">{{ model.name }}</span> <span class="font-mono shrink-0">{{ model.name }}</span>
<button <button
class="p-0.5 rounded hover:bg-muted transition-colors" class="p-0.5 rounded hover:bg-muted transition-colors shrink-0"
title="复制模型 ID" title="复制模型 ID"
@click="copyToClipboard(model.name)" @click="copyToClipboard(model.name)"
> >
<Copy class="w-3 h-3 text-muted-foreground" /> <Copy class="w-3 h-3" />
</button> </button>
<template v-if="model.description">
<span class="shrink-0">·</span>
<span class="text-xs truncate" :title="model.description">{{ model.description }}</span>
</template>
</div> </div>
<p v-if="model.description" class="text-xs text-muted-foreground">
{{ model.description }}
</p>
</div> </div>
<div class="flex items-center gap-1 shrink-0"> <div class="flex items-center gap-1 shrink-0">
<Button variant="ghost" size="icon" @click="$emit('edit-model', model)" title="编辑模型"> <Button variant="ghost" size="icon" @click="$emit('edit-model', model)" title="编辑模型">

View File

@@ -101,6 +101,12 @@
</div> </div>
</div> </div>
<!-- Demo Mode Badge (center) -->
<div v-if="isDemo" class="flex items-center gap-2 px-3 py-1.5 rounded-full bg-amber-100 dark:bg-amber-900/30 text-amber-700 dark:text-amber-400 text-xs font-medium">
<AlertTriangle class="w-3.5 h-3.5" />
<span>演示模式</span>
</div>
<div class="flex items-center gap-2"> <div class="flex items-center gap-2">
<!-- Theme Toggle --> <!-- Theme Toggle -->
<button <button
@@ -125,6 +131,7 @@ import { computed, ref, onMounted, onUnmounted } from 'vue'
import { useRoute, useRouter } from 'vue-router' import { useRoute, useRouter } from 'vue-router'
import { useAuthStore } from '@/stores/auth' import { useAuthStore } from '@/stores/auth'
import { useDarkMode } from '@/composables/useDarkMode' import { useDarkMode } from '@/composables/useDarkMode'
import { isDemoMode } from '@/config/demo'
import Button from '@/components/ui/button.vue' import Button from '@/components/ui/button.vue'
import AppShell from '@/components/layout/AppShell.vue' import AppShell from '@/components/layout/AppShell.vue'
import SidebarNav from '@/components/layout/SidebarNav.vue' import SidebarNav from '@/components/layout/SidebarNav.vue'
@@ -157,6 +164,7 @@ const router = useRouter()
const route = useRoute() const route = useRoute()
const authStore = useAuthStore() const authStore = useAuthStore()
const { isDark, themeMode, toggleDarkMode } = useDarkMode() const { isDark, themeMode, toggleDarkMode } = useDarkMode()
const isDemo = computed(() => isDemoMode())
const showAuthError = ref(false) const showAuthError = ref(false)
let authCheckInterval: number | null = null let authCheckInterval: number | null = null