优化功能
Some checks failed
Tests / PHP 8.2 (push) Has been cancelled
Tests / PHP 8.3 (push) Has been cancelled
Tests / PHP 8.4 (push) Has been cancelled

This commit is contained in:
jiangdong.cheng
2026-02-12 17:10:36 +08:00
parent 56c685b579
commit a795b2c896
29 changed files with 2155 additions and 884 deletions

View File

@@ -52,6 +52,36 @@
border-color: #3b82f6;
background: #eff6ff;
}
.navbar-vertical .nav-link.active {
background: rgba(59, 130, 246, .2);
color: #fff;
border-radius: .6rem;
}
.admin-page-head {
padding: .15rem 0 .95rem;
margin-bottom: .45rem;
border-bottom: 1px solid #e5eaf4;
}
.admin-page-subtitle {
color: #64748b;
font-size: .88rem;
line-height: 1.55;
}
.admin-page-actions .btn {
border-radius: .6rem;
}
.admin-breadcrumb .breadcrumb {
--tblr-breadcrumb-divider-color: #94a3b8;
--tblr-breadcrumb-item-active-color: #475569;
font-size: .8rem;
}
.admin-breadcrumb .breadcrumb-item a {
color: #64748b;
text-decoration: none;
}
.admin-breadcrumb .breadcrumb-item a:hover {
color: #2563eb;
}
</style>
@yield('head')
</head>
@@ -79,6 +109,7 @@
<li class="nav-item"><a class="nav-link @if(request()->routeIs('admin.articles.*')) active @endif" href="{{ route('admin.articles.index') }}"><span class="nav-link-icon"><i class="bi bi-newspaper"></i></span><span class="nav-link-title">AI 资讯</span></a></li>
<li class="nav-item"><a class="nav-link @if(request()->routeIs('admin.guides.*')) active @endif" href="{{ route('admin.guides.index') }}"><span class="nav-link-icon"><i class="bi bi-journal-code"></i></span><span class="nav-link-title">AI 教程</span></a></li>
<li class="nav-item"><a class="nav-link @if(request()->routeIs('admin.categories.*')) active @endif" href="{{ route('admin.categories.index') }}"><span class="nav-link-icon"><i class="bi bi-diagram-3"></i></span><span class="nav-link-title">分类维护</span></a></li>
<li class="nav-item"><a class="nav-link @if(request()->routeIs('admin.sources.*')) active @endif" href="{{ route('admin.sources.index') }}"><span class="nav-link-icon"><i class="bi bi-shield-check"></i></span><span class="nav-link-title">来源管理</span></a></li>
<li class="sidebar-caption">运营设置</li>
<li class="nav-item"><a class="nav-link @if(request()->routeIs('admin.settings.*')) active @endif" href="{{ route('admin.settings.index') }}"><span class="nav-link-icon"><i class="bi bi-sliders"></i></span><span class="nav-link-title">首页配置</span></a></li>
@@ -102,7 +133,7 @@
</div>
<div class="collapse navbar-collapse" id="navbar-menu">
<div>
<h2 class="page-title mb-0">@yield('title', '管理后台')</h2>
@include('admin.partials.admin-page-header')
</div>
</div>
</div>

View File

@@ -998,6 +998,46 @@
<body class="@yield('page_class', 'page-home')">
<a class="skip-link" href="#main-content">跳到主内容</a>
@php
$topNavItems = [
['route' => 'tools.index', 'label' => 'AI工具集'],
['route' => 'models.index', 'label' => '模型推荐'],
['route' => 'news.index', 'label' => '文章资讯'],
['route' => 'guides.index', 'label' => '教程学习'],
['route' => 'tools.list', 'label' => '工具列表'],
];
@endphp
<header class="site-header" aria-label="全站顶部导航">
<div class="container d-flex align-items-center justify-content-between gap-3 py-2">
<a class="brand-link" href="{{ route('home') }}">
<span class="brand-mark">AI</span>
<span>AIWeb</span>
</a>
<nav class="site-nav d-none d-lg-flex" aria-label="主菜单">
@foreach($topNavItems as $item)
<a class="site-nav-link @if(request()->routeIs($item['route'])) active @endif" href="{{ route($item['route']) }}">{{ $item['label'] }}</a>
@endforeach
</nav>
<a class="admin-entry d-none d-lg-inline-flex" href="{{ route('admin.login') }}">
<i class="bi bi-speedometer2 me-1"></i>后台
</a>
</div>
<div class="mobile-nav d-lg-none">
<div class="container d-flex flex-wrap gap-2 py-2">
@foreach($topNavItems as $item)
<a class="site-nav-link @if(request()->routeIs($item['route'])) active @endif" href="{{ route($item['route']) }}">{{ $item['label'] }}</a>
@endforeach
<a class="admin-entry" href="{{ route('admin.login') }}">
<i class="bi bi-speedometer2 me-1"></i>后台
</a>
</div>
</div>
</header>
<main id="main-content" class="page-main" tabindex="-1">
<div class="container">
@yield('content')