Files
tvbox-1/.github/Toos/静态页/哪吒监控V1自定义配置生成器/index.html
T
2026-02-25 22:39:46 +08:00

230 lines
7.0 KiB
HTML
Executable File

<!DOCTYPE html>
<html lang="zh-hans">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>dashboard jumppage</title>
<link rel="icon" type="image/jpeg" href="https://lsky.panell.top/i/2025/01/24/679347c837206.jpg">
<style>
:root {
/* 亮色模式变量 */
--bg-color: #f0f2f5;
--card-bg: rgba(255, 255, 255, 0.95);
--text-color: #2c3e50;
--shadow-color: rgba(0, 0, 0, 0.1);
--shenmi-start: #6C5CE7;
--shenmi-end: #A363D9;
--zashboard-start: #00B894;
--zashboard-end: #00CEC9;
--substore-start: #0A96DE;
--substore-end: #309FEA;
--theme-toggle-bg: #e4e6eb;
}
@media (prefers-color-scheme: dark) {
:root {
/* 暗色模式默认变量 */
--bg-color: #1a1a1a;
--card-bg: rgba(40, 40, 40, 0.95);
--text-color: #e4e6eb;
--shadow-color: rgba(0, 0, 0, 0.3);
--shenmi-start: #7F53AC;
--shenmi-end: #647DEE;
--zashboard-start: #2E8B57;
--zashboard-end: #20B2AA;
--substore-start: #1A94BC;
--substore-end: #22A2C3;
--theme-toggle-bg: #333;
}
}
/* 手动暗色模式覆盖 */
.dark-mode {
--bg-color: #121212;
--card-bg: rgba(30, 30, 30, 0.95);
--text-color: #ffffff;
--shadow-color: rgba(0, 0, 0, 0.5);
--shenmi-start: #9D50BB;
--shenmi-end: #6E48AA;
--zashboard-start: #3CB371;
--zashboard-end: #2E8B57;
--theme-toggle-bg: #424242;
}
body {
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
min-height: 100vh;
margin: 0;
font-family: Arial, sans-serif;
background: var(--bg-color);
color: var(--text-color);
transition: background 0.3s ease, color 0.3s ease;
}
.panel-container {
text-align: center;
padding: 2.5rem;
background: var(--card-bg);
border-radius: 15px;
box-shadow: 0 8px 30px var(--shadow-color);
backdrop-filter: blur(10px);
transition: all 0.3s ease;
}
h2 {
margin-bottom: 1.5rem;
font-size: 1.8em;
}
.btn-group {
display: flex;
flex-direction: column;
gap: 1rem;
}
.panel-btn {
padding: 15px 30px;
border: none;
border-radius: 8px;
cursor: pointer;
font-size: 1.1em;
transition: all 0.3s ease;
color: white;
box-shadow: 0 4px 6px var(--shadow-color);
}
#shenmi-panel {
background: linear-gradient(45deg, var(--shenmi-start), var(--shenmi-end));
}
#zashboard-panel {
background: linear-gradient(45deg, var(--zashboard-start), var(--zashboard-end));
}
#substore-panel {
background: linear-gradient(45deg, var(--substore-start), var(--substore-end));
}
.panel-btn:hover {
transform: translateY(-3px);
box-shadow: 0 6px 15px var(--shadow-color);
}
.panel-btn:active {
transform: translateY(0);
}
.theme-toggle {
position: fixed;
top: 20px;
right: 20px;
width: 40px;
height: 40px;
border-radius: 50%;
background: var(--theme-toggle-bg);
border: none;
cursor: pointer;
display: flex;
align-items: center;
justify-content: center;
transition: all 0.3s ease;
}
.theme-toggle:hover {
transform: scale(1.1);
}
.theme-toggle svg {
width: 24px;
height: 24px;
fill: var(--text-color);
}
.overlay {
position: fixed;
pointer-events: none;
z-index: 1000;
}
</style>
</head>
<body>
<button class="theme-toggle" onclick="toggleTheme()">
<svg viewBox="0 0 24 24">
<path d="M12 18c-3.3 0-6-2.7-6-6s2.7-6 6-6 6 2.7 6 6-2.7 6-6 6zm0-2v-8c2.2 0 4 1.8 4 4s-1.8 4-4 4z"/>
</svg>
</button>
<div class="panel-container">
<h2>选择面板</h2>
<div class="btn-group">
<button
class="panel-btn"
id="shenmi-panel"
onclick="jumpTo('http://127.0.0.1:23333', event)">
🔮 神秘面板
</button>
<button
class="panel-btn"
id="zashboard-panel"
onclick="jumpTo('http://127.0.0.1:9909/ui', event)">
✨ zashboard
</button>
<button
class="panel-btn"
id="substore-panel"
onclick="jumpTo('https://substore.panell.top/', event)">
📦 SubStore
</button>
</div>
</div>
<script>
let isAnimating = false;
function jumpTo(url, event) {
if (isAnimating) return;
isAnimating = true;
event.preventDefault();
const button = event.currentTarget;
const rect = button.getBoundingClientRect();
const centerX = rect.left + rect.width / 2;
const centerY = rect.top + rect.height / 2;
const overlay = document.createElement('div');
overlay.className = 'overlay';
overlay.style.background = getComputedStyle(button).background;
overlay.style.clipPath = `circle(0 at ${centerX}px ${centerY}px)`;
overlay.style.transition = 'clip-path 0.5s cubic-bezier(0.4, 0, 0.2, 1)';
document.body.appendChild(overlay);
requestAnimationFrame(() => {
overlay.style.clipPath = `circle(150% at ${centerX}px ${centerY}px)`;
});
overlay.addEventListener('transitionend', () => {
isAnimating = false;
window.location.href = url;
});
}
function toggleTheme() {
document.body.classList.toggle('dark-mode');
localStorage.setItem('theme', document.body.classList.contains('dark-mode') ? 'dark' : 'light');
}
function initTheme() {
if (localStorage.getItem('theme') === 'dark') {
document.body.classList.add('dark-mode');
}
}
initTheme();
</script>
</body>
</html>