ccpoad / web /login.html
anyalerob's picture
Upload folder using huggingface_hub
2986042 verified
Raw
History Blame Contribute Delete
6.66 kB
<!doctype html>
<html lang="zh-CN">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<link rel="icon" type="image/x-icon" href="/web/favicon.ico">
<link rel="apple-touch-icon" href="/web/apple-touch-icon.png">
<link rel="manifest" href="/web/manifest.json">
<meta name="theme-color" content="#3b82f6">
<title data-i18n="login.title">登录 - Claude Code & Codex Proxy</title>
<link rel="stylesheet" href="/web/assets/css/styles.css?v=__VERSION__">
<script defer src="/web/assets/locales/zh-CN.js?v=__VERSION__"></script>
<script defer src="/web/assets/locales/en.js?v=__VERSION__"></script>
<script defer src="/web/assets/js/i18n.js?v=__VERSION__"></script>
<script defer src="/web/assets/js/ui.js?v=__VERSION__"></script>
<script defer src="/web/assets/js/login.js?v=__VERSION__"></script>
</head>
<body>
<!-- 动画背景 -->
<div class="login-background">
<div class="floating-shapes">
<div class="shape shape-1"></div>
<div class="shape shape-2"></div>
<div class="shape shape-3"></div>
<div class="shape shape-4"></div>
<div class="shape shape-5"></div>
</div>
</div>
<div class="login-page">
<div class="login-container animate-slide-up">
<!-- Logo和品牌 -->
<div class="login-brand">
<div class="brand-logo">
<img class="logo-icon animate-float" src="/web/favicon.svg" alt="Logo">
</div>
<h1 class="brand-title">Claude Code & Codex Proxy</h1>
<p class="brand-subtitle" data-i18n="login.brandSubtitle">智能API代理管理系统</p>
</div>
<!-- 登录表单 -->
<div class="login-form-container">
<div class="login-header">
<h2 data-i18n="login.adminLogin">管理员登录</h2>
<p data-i18n="login.passwordHint">请输入您的管理密码以访问系统</p>
</div>
<div id="error-message" class="error-notification hidden">
<svg class="error-icon" fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-2.5L13.732 4c-.77-.833-1.864-.833-2.634 0L4.18 16.5c-.77.833.192 2.5 1.732 2.5z"/>
</svg>
<span id="error-text"></span>
</div>
<form id="login-form" class="login-form">
<div class="form-group">
<label for="password" class="form-label">
<svg class="label-icon" fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 15v2m-6 4h12a2 2 0 002-2v-6a2 2 0 00-2-2H6a2 2 0 00-2 2v6a2 2 0 002 2zm10-10V7a4 4 0 00-8 0v4h8z"/>
</svg>
<span data-i18n="login.passwordLabel">管理密码</span>
</label>
<div class="input-container">
<input type="password" id="password" name="password" class="form-input" required autofocus data-i18n-placeholder="login.passwordPlaceholder" placeholder="请输入管理密码" />
<div class="input-decoration"></div>
</div>
</div>
<button type="submit" class="login-button" id="login-button">
<span class="button-content">
<svg class="button-icon" fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M11 16l-4-4m0 0l4-4m-4 4h14m-5 4v1a3 3 0 01-3 3H6a3 3 0 01-3-3V7a3 3 0 013-3h7a3 3 0 013 3v1"/>
</svg>
<span class="button-text" data-i18n="login.loginButton">登录系统</span>
</span>
<div class="button-loader">
<div class="spinner"></div>
</div>
</button>
</form>
<!-- 安全提示 -->
<div class="security-notice">
<svg class="notice-icon" fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 12l2 2 4-4m5.618-4.016A11.955 11.955 0 0112 2.944a11.955 11.955 0 01-8.618 3.04A12.02 12.02 0 003 9c0 5.591 3.824 10.29 9 11.622 5.176-1.332 9-6.031 9-11.622 0-1.042-.133-2.052-.382-3.016z"/>
</svg>
<div class="notice-text">
<div class="notice-title" data-i18n="login.securityTitle">安全保护</div>
<div class="notice-desc" data-i18n="login.securityDesc">您的登录会话将在24小时后自动过期</div>
</div>
</div>
</div>
</div>
<!-- 功能特色展示 -->
<div class="features-showcase animate-slide-up animate-delay-2">
<h3 data-i18n="login.featuresTitle">系统特性</h3>
<div class="features-grid">
<div class="feature-item">
<div class="feature-icon">
<svg fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M13 10V3L4 14h7v7l9-11h-7z"/>
</svg>
</div>
<div class="feature-content">
<h4 data-i18n="login.feature1Title">智能路由</h4>
<p data-i18n="login.feature1Desc">基于负载均衡的智能请求分发</p>
</div>
</div>
<div class="feature-item">
<div class="feature-icon">
<svg fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z"/>
</svg>
</div>
<div class="feature-content">
<h4 data-i18n="login.feature2Title">故障切换</h4>
<p data-i18n="login.feature2Desc">自动检测并切换到可用节点</p>
</div>
</div>
<div class="feature-item">
<div class="feature-icon">
<svg fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 19v-6a2 2 0 00-2-2H5a2 2 0 00-2 2v6a2 2 0 002 2h2a2 2 0 002-2zm0 0V9a2 2 0 012-2h2a2 2 0 012 2v10m-6 0a2 2 0 002 2h2a2 2 0 002-2m0 0V5a2 2 0 012-2h2a2 2 0 012 2v14a2 2 0 01-2 2h-2a2 2 0 01-2-2z"/>
</svg>
</div>
<div class="feature-content">
<h4 data-i18n="login.feature3Title">实时监控</h4>
<p data-i18n="login.feature3Desc">详细的请求统计和性能分析</p>
</div>
</div>
</div>
</div>
</div>
</body>
</html>