Merge branch 'engigu:main' into main

This commit is contained in:
InitCool
2026-04-01 16:16:09 +08:00
committed by GitHub
+24 -20
View File
@@ -106,12 +106,15 @@ onMounted(() => {
<template>
<!-- Root Container: Handles the background and centering on 2K+ screens -->
<div class="h-screen w-full bg-slate-50/50 dark:bg-slate-950 flex items-center justify-center 2xl:p-8 3xl:p-12 transition-all duration-500 overflow-hidden">
<div class="h-screen w-full bg-slate-50/50 dark:bg-zinc-950 flex items-center justify-center 2xl:p-8 3xl:p-12 transition-all duration-500 overflow-hidden">
<!-- Application Card: The main floating surface -->
<div :style="mobileMenuOpen ? 'transform: scale(0.98); opacity: 0.9;' : ''"
class="flex h-full w-full bg-white dark:bg-slate-950 relative transition-all duration-500 overflow-hidden
2xl:max-w-[1800px] 2xl:max-h-[92vh] 2xl:rounded-[2.5rem] 2xl:shadow-[0_40px_100px_-20px_rgba(0,0,0,0.12)] 2xl:border 2xl:border-slate-200/60 dark:2xl:border-slate-800/40
class="flex h-full w-full bg-background relative transition-all duration-500 overflow-hidden
2xl:max-w-[1800px] 2xl:max-h-[92vh] 2xl:rounded-[2.5rem]
2xl:shadow-[0_50px_100px_-20px_rgba(0,0,0,0.25),0_0_0_1px_rgba(255,255,255,0.05)]
2xl:ring-1 2xl:ring-slate-900/5 dark:2xl:ring-white/10
2xl:border 2xl:border-slate-200/60 dark:2xl:border-white/5
3xl:max-w-[2200px] 3xl:max-h-[90vh]">
<!-- Mobile Menu Overlay -->
@@ -119,43 +122,44 @@ onMounted(() => {
<!-- Sidebar -->
<aside :class="[
'fixed lg:static inset-y-0 z-50 w-44 2xl:w-52 border-r bg-white dark:bg-slate-900 flex flex-col transition-all duration-300 ease-in-out',
'fixed lg:static inset-y-0 z-50 w-44 border-r bg-background flex flex-col transition-all duration-300 ease-in-out',
mobileMenuOpen ? 'translate-x-0' : '-translate-x-full lg:translate-x-0'
]">
<div class="h-14 flex items-center justify-center px-4 font-bold text-lg border-b relative bg-white dark:bg-slate-900">
<div class="h-14 flex items-center justify-center px-4 font-semibold text-lg border-b relative">
<span>{{ siteSettings.title }}</span>
<Button variant="ghost" size="icon" class="h-8 w-8 lg:hidden absolute right-2" @click="mobileMenuOpen = false">
<X class="h-4 w-4" />
</Button>
</div>
<nav class="flex-1 px-3 py-6 space-y-1 flex flex-col items-center overflow-y-auto custom-scrollbar bg-white dark:bg-slate-900">
<nav class="flex-1 px-3 py-6 space-y-1 flex flex-col items-center overflow-y-auto">
<RouterLink v-for="item in navItems" :key="item.to" :to="item.to" custom v-slot="{ navigate }">
<Button variant="ghost"
:class="['justify-start gap-3 h-9 px-3 w-full', isItemActive(item) && 'bg-slate-100 dark:bg-slate-800 text-primary font-semibold shadow-sm']"
:class="['justify-center gap-3 h-9 px-3 w-full max-w-[140px]', isItemActive(item) && 'bg-accent text-accent-foreground font-semibold shadow-sm']"
@click="handleNavClick(navigate)">
<component :is="item.icon" class="h-3.5 w-3.5" />
<span class="text-[13px]">{{ item.label }}</span>
<component :is="item.icon" class="h-4 w-4" />
{{ item.label }}
</Button>
</RouterLink>
</nav>
<div class="px-3 py-4 border-t flex justify-center bg-white dark:bg-slate-900">
<Button variant="ghost" class="justify-start gap-3 h-9 px-3 w-full text-muted-foreground hover:text-destructive hover:bg-destructive/5 transition-colors"
<div class="px-3 py-4 2xl:pb-12 border-t flex justify-center">
<Button variant="ghost"
class="justify-start 2xl:justify-center gap-3 h-9 px-3 w-content 2xl:w-full 2xl:max-w-[140px] text-muted-foreground hover:text-foreground transition-all whitespace-nowrap"
@click="logout">
<LogOut class="h-3.5 w-3.5" />
<span class="text-[13px]">退出登录</span>
<LogOut class="h-4 w-4 shrink-0" />
<span class="truncate">退出登录</span>
</Button>
</div>
</aside>
<!-- Main Content Area -->
<main class="flex-1 flex flex-col min-w-0 relative bg-slate-50/30 dark:bg-slate-950/20">
<main class="flex-1 flex flex-col min-w-0 relative">
<!-- Top Navigation Bar -->
<header class="h-14 border-b bg-white dark:bg-slate-900 flex items-center justify-between px-4 lg:px-6 shrink-0 sticky top-0 z-30 shadow-sm">
<header class="h-14 border-b bg-background flex items-center justify-between px-4 lg:px-6 shrink-0 sticky top-0 z-30 shadow-sm">
<div class="flex items-center gap-3 flex-1 min-w-0">
<Button variant="ghost" size="icon" class="h-8 w-8 lg:hidden shrink-0 border bg-slate-50 dark:bg-slate-800" @click="mobileMenuOpen = true">
<Menu class="h-4 w-4" />
<Button variant="ghost" size="icon" class="h-9 w-9 lg:hidden shrink-0" @click="mobileMenuOpen = true">
<Menu class="h-5 w-5 text-muted-foreground" />
</Button>
<span class="text-xs text-muted-foreground truncate italic opacity-80" :title="sentence" style="color: #6b7280;">
<span class="text-sm text-muted-foreground truncate" :title="sentence">
<span class="hidden sm:inline">{{ sentence }}</span>
<span class="sm:hidden">{{ sentenceContent }}</span>
</span>
@@ -167,8 +171,8 @@ onMounted(() => {
</header>
<!-- Page View Container -->
<div class="flex-1 overflow-auto custom-scrollbar relative">
<div class="p-4 lg:p-6 2xl:p-10 mx-auto">
<div class="flex-1 overflow-auto relative bg-background/50">
<div class="p-4 lg:p-6 mx-auto">
<RouterView />
</div>
</div>