feat: redesign admin panel with cyberpunk UI theme

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
dekun
2026-07-11 13:27:42 +08:00
parent 78b85c0d83
commit 46728e12f7
5 changed files with 551 additions and 108 deletions
+8
View File
@@ -4,9 +4,17 @@
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>{% block title %}jiedian 面板{% endblock %}</title>
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400;600;700&family=Orbitron:wght@500;700;900&family=Rajdhani:wght@400;500;600;700&display=swap" rel="stylesheet">
<link rel="stylesheet" href="{{ panel_base }}/static/style.css">
</head>
<body data-base="{{ panel_base }}">
<div class="cyber-bg" aria-hidden="true">
<div class="cyber-grid"></div>
<div class="cyber-glow"></div>
<div class="cyber-scanlines"></div>
</div>
{% block body %}{% endblock %}
{% block scripts %}{% endblock %}
</body>
+44 -17
View File
@@ -2,9 +2,16 @@
{% block title %}节点管理 · jiedian{% endblock %}
{% block body %}
<header class="topbar">
<div>
<strong>jiedian 面板</strong>
<span class="muted"> · {{ domain }}</span>
<div class="brand">
<svg class="brand-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5">
<path d="M12 2L2 7l10 5 10-5-10-5z"/>
<path d="M2 17l10 5 10-5"/>
<path d="M2 12l10 5 10-5"/>
</svg>
<div>
<div class="brand-name">jiedian</div>
<div class="brand-domain">{{ domain }}</div>
</div>
</div>
<a class="btn ghost" href="{{ url_for('logout') }}">退出</a>
</header>
@@ -12,27 +19,47 @@
<main class="container">
<section class="hero">
<div>
<h1>节点列表</h1>
<p class="muted">VPS {{ vps_ip }} · Hysteria2 8443+</p>
<h1>节点控制台</h1>
<p class="hero-tag">VPS {{ vps_ip }} · HYSTERIA2 UDP 8443+</p>
</div>
<button id="addBtn" class="btn primary">+ 添加节点</button>
</section>
<section id="summaryBar" class="summary-bar">
<div class="summary-item">
<span class="summary-label">在线节点</span>
<div class="summary-head">
<svg class="summary-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
<circle cx="12" cy="12" r="3"/><path d="M12 2v4M12 18v4M4.93 4.93l2.83 2.83M16.24 16.24l2.83 2.83M2 12h4M18 12h4M4.93 19.07l2.83-2.83M16.24 7.76l2.83-2.83"/>
</svg>
<span class="summary-label">在线节点</span>
</div>
<strong id="summaryOnline">-</strong>
</div>
<div class="summary-item">
<span class="summary-label">实时上行</span>
<div class="summary-item speed-up">
<div class="summary-head">
<svg class="summary-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
<path d="M12 19V5M5 12l7-7 7 7"/>
</svg>
<span class="summary-label">实时上行</span>
</div>
<strong id="summaryUp">-</strong>
</div>
<div class="summary-item">
<span class="summary-label">实时下行</span>
<div class="summary-item speed-down">
<div class="summary-head">
<svg class="summary-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
<path d="M12 5v14M5 12l7 7 7-7"/>
</svg>
<span class="summary-label">实时下行</span>
</div>
<strong id="summaryDown">-</strong>
</div>
<div class="summary-item">
<span class="summary-label">统计服务</span>
<div class="summary-head">
<svg class="summary-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
<path d="M22 12h-4l-3 9L9 3l-3 9H2"/>
</svg>
<span class="summary-label">统计服务</span>
</div>
<strong id="summaryStatus" class="status-text">检测中</strong>
</div>
</section>
@@ -54,31 +81,31 @@
<span class="stat-label">连接数</span>
<span class="stat-value" data-role="connections">-</span>
</div>
<div class="stat-box">
<div class="stat-box speed">
<span class="stat-label">实时 ↑</span>
<span class="stat-value" data-role="speed-up">-</span>
</div>
<div class="stat-box">
<div class="stat-box speed">
<span class="stat-label">实时 ↓</span>
<span class="stat-value" data-role="speed-down">-</span>
</div>
<div class="stat-box">
<div class="stat-box total">
<span class="stat-label">累计 ↑</span>
<span class="stat-value" data-role="total-up">-</span>
</div>
<div class="stat-box">
<div class="stat-box total">
<span class="stat-label">累计 ↓</span>
<span class="stat-value" data-role="total-down">-</span>
</div>
</div>
</div>
<div class="field">
<label>Hysteria2</label>
<label>Hysteria2 链接</label>
<div class="copy-row">
<input class="copy-input" readonly value="{{ node.links.hy2 }}">
<button type="button" class="btn copy-btn">复制</button>
</div>
<p class="link-hint muted">一设备一节点SNI {{ domain }},端口随节点递增(8443、8444…</p>
<p class="link-hint muted">一设备一节点 · SNI {{ domain }} · 端口 8443、8444…</p>
</div>
<div class="node-actions">
<button class="btn danger delete-btn" data-id="{{ node.id }}">删除</button>
+3 -2
View File
@@ -3,7 +3,8 @@
{% block body %}
<div class="auth-wrap">
<div class="auth-card">
<h1>jiedian 管理面板</h1>
<h1 class="auth-logo">jiedian</h1>
<p class="auth-subtitle">// secure access terminal</p>
<p class="muted">登录后管理节点与分享链接</p>
{% if error %}
<div class="alert">{{ error }}</div>
@@ -13,7 +14,7 @@
<input type="text" name="username" autocomplete="username" required autofocus>
<label>密码</label>
<input type="password" name="password" autocomplete="current-password" required>
<button type="submit" class="btn primary">登录</button>
<button type="submit" class="btn primary" style="width:100%;margin-top:20px;">登录</button>
</form>
</div>
</div>