Files
Tstore/resources/views/admin/dashboard.blade.php
浪子 04a2034975 前端极简黑白重设计,并纳入客户端注册、站点设置与后台相关改动
- storefront 全站改为极简黑白配色:直角、细线分隔、卡片 hover 浅底、深色模式(跟随系统+手动切换)
- 抽出 storefront/partials/card 复用卡片
- 一并提交此前暂存的客户端注册 API、站点设置、后台页面与测试

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-09-22 08:35:49 +08:00

148 lines
8.0 KiB
PHP

@php
$statusLabels = [
'draft' => '草稿',
'published' => '发布中',
'hidden' => '隐藏',
'deprecated' => '弃用',
];
$statusTones = [
'draft' => 'muted',
'published' => 'ok',
'hidden' => 'warn',
'deprecated' => 'warn',
];
@endphp
@extends('admin.layout', [
'title' => 'Tstore Admin · 控制台概览',
'pageTitle' => '控制台概览',
'pageSubtitle' => '先看整体状态,再继续维护扩展、版本发布和站点接入。',
'pageBadge' => 'Overview',
])
@section('content')
<div class="grid">
<section class="stats">
<div class="stat"><span class="label">扩展总数</span><span class="value">{{ $stats['packages'] }}</span><span class="hint">插件与主题总量</span></div>
<div class="stat"><span class="label">插件</span><span class="value">{{ $stats['plugins'] }}</span><span class="hint">plugin package</span></div>
<div class="stat"><span class="label">主题</span><span class="value">{{ $stats['themes'] }}</span><span class="hint">theme package</span></div>
<div class="stat"><span class="label">版本记录</span><span class="value">{{ $stats['versions'] }}</span><span class="hint">历史发布与手动录入</span></div>
<div class="stat"><span class="label">下载总量</span><span class="value">{{ $stats['downloads'] }}</span><span class="hint">累计下载次数</span></div>
<div class="stat"><span class="label">分类总数</span><span class="value">{{ $stats['categories'] }}</span><span class="hint">插件与主题分类</span></div>
<div class="stat"><span class="label">已注册站点</span><span class="value">{{ $stats['registered_sites'] }}</span><span class="hint">完成注册的客户端</span></div>
<div class="stat"><span class="label">在线站点</span><span class="value">{{ $stats['online_sites'] }}</span><span class="hint">最近心跳仍在线</span></div>
<div class="stat"><span class="label">追踪用户数</span><span class="value">{{ $stats['tracked_users'] }}</span><span class="hint">所有站点上报总和</span></div>
</section>
<div class="split">
<section class="panel">
<div class="section-title">
<div>
<h2>最近更新的扩展</h2>
<p>这里优先看扩展元数据、分类和当前发布状态,方便继续进入详情页维护。</p>
</div>
<a class="btn secondary small" href="{{ route('webadmin.packages') }}">查看全部</a>
</div>
<div class="list">
@forelse ($recentPackages as $package)
<article class="row-card">
<div class="row-top">
<div>
<h3>{{ $package->name }}</h3>
<p class="muted">{{ $package->type }} · {{ $package->slug }}</p>
</div>
<span class="chip {{ $statusTones[$package->status] ?? 'muted' }}">{{ $statusLabels[$package->status] ?? $package->status }}</span>
</div>
<p class="muted">{{ $package->summary ?: '暂无摘要。' }}</p>
<div class="tags">
@foreach ($package->categories as $category)
<span class="chip">{{ $category->name }}</span>
@endforeach
@if ($package->latestStableVersion)
<span class="chip ok">稳定版 v{{ $package->latestStableVersion->version }}</span>
@endif
<span class="chip muted">更新于 {{ optional($package->updated_at)->format('Y-m-d H:i') ?: '-' }}</span>
</div>
<div class="form-actions">
<a class="btn ghost small" href="{{ route('webadmin.packages.show', [$package->type, $package->slug]) }}">查看详情</a>
</div>
</article>
@empty
<div class="empty">当前还没有扩展数据。</div>
@endforelse
</div>
</section>
<div class="stack">
<section class="panel soft">
<div class="section-title">
<div>
<h2>最近版本发布</h2>
<p>快速核对最近写入的版本号、兼容区间和稳定状态。</p>
</div>
</div>
<div class="list">
@forelse ($recentVersions as $version)
<article class="row-card">
<div class="row-top">
<div>
<h3>v{{ $version->version }}</h3>
<p class="muted">{{ $version->package?->name ?: '未知扩展' }}</p>
</div>
<div class="tags" style="margin-top:0">
<span class="chip {{ $version->is_stable ? 'ok' : 'warn' }}">{{ $version->is_stable ? '稳定版' : '预发布' }}</span>
@if ($version->is_latest)
<span class="chip">最新</span>
@endif
</div>
</div>
<div class="tags">
<span class="chip muted">Typecho {{ $version->typecho_min ?: '-' }} ~ {{ $version->typecho_max ?: '-' }}</span>
<span class="chip muted">PHP {{ $version->php_min ?: '-' }} ~ {{ $version->php_max ?: '-' }}</span>
</div>
<p class="muted">发布时间:{{ optional($version->published_at)->format('Y-m-d H:i') ?: '-' }}</p>
</article>
@empty
<div class="empty">当前还没有版本记录。</div>
@endforelse
</div>
</section>
<section class="panel soft">
<div class="section-title">
<div>
<h2>最近接入站点</h2>
<p>确认插件端是否完成注册、是否在线,以及最近一次同步时间。</p>
</div>
<a class="btn secondary small" href="{{ route('webadmin.clients') }}">全部站点</a>
</div>
<div class="list">
@forelse ($recentClients as $client)
<article class="row-card">
<div class="row-top">
<div>
<h3>{{ $client->site_name ?: '未命名站点' }}</h3>
<p class="muted">{{ $client->site_url }}</p>
</div>
<span class="chip {{ $client->is_online ? 'ok' : 'muted' }}">{{ $client->is_online ? '在线' : '离线' }}</span>
</div>
<div class="tags">
<span class="chip">用户 {{ $client->user_count }}</span>
<span class="chip muted">Typecho {{ $client->typecho_version ?: '-' }}</span>
<span class="chip muted">PHP {{ $client->php_version ?: '-' }}</span>
</div>
<p class="muted">最近同步:{{ optional($client->last_seen_at)->format('Y-m-d H:i:s') ?: '尚未同步' }}</p>
</article>
@empty
<div class="empty">当前还没有站点完成注册。</div>
@endforelse
</div>
</section>
</div>
</div>
</div>
@endsection