feat: M3-M7 全模块落地 + 集成接线
- M3 认证/权限/审计/限流 + 全部 REST 接口 - M4 管理面板(MIUIx + 成绩录入/积分榜下钻/大屏控制) - M5a 大屏页面(六页 + 明细覆盖层 + 缩放适配) - M6 WebSocket 实时同步中心 - M7 xlsx 导出 + 赛事包 zip + 备份 - 规则包 YAML 导入导出(差异预览) - 字体 vendor 子集化(4 套 x2 字重) - 集成:realtime/export/rules 接入 main+httpapi;backup 子命令 - 修复:中间件包装 ResponseWriter 丢失 Hijacker,导致 WS 握手 501
This commit is contained in:
1 parent
d0e3b93e76
commit
bc8b1ee6c0
145 files changed
+25159
-321
No files matched your search
+79
@@ -0,0 +1,79 @@
|
||||
/* ═══════════════════════════════════════════
|
||||
MIUIX CONSOLE — Stat Card Component
|
||||
═══════════════════════════════════════════ */
|
||||
|
||||
.mx-stat{
|
||||
background:var(--mx-s2);
|
||||
border-radius:var(--mx-r);
|
||||
padding:16px;
|
||||
position:relative;overflow:hidden;
|
||||
cursor:pointer;
|
||||
box-shadow:var(--mx-sh1);
|
||||
transition:all var(--mx-d3) var(--mx-ease);
|
||||
}
|
||||
.mx-stat:hover{transition-duration:var(--mx-d2)}
|
||||
.mx-stat:active{transform:scale(0.97)}
|
||||
|
||||
/* 顶部 accent 线 */
|
||||
.mx-stat::before{
|
||||
content:'';position:absolute;top:0;left:0;right:0;height:2px;
|
||||
background:var(--mx-stat-accent,var(--mx-primary));
|
||||
opacity:0;transition:opacity var(--mx-d2);
|
||||
}
|
||||
.mx-stat:hover::before{opacity:1}
|
||||
|
||||
/* 右上角柔光晕 */
|
||||
.mx-stat::after{
|
||||
content:'';position:absolute;top:-40%;right:-20%;
|
||||
width:100px;height:100px;
|
||||
background:var(--mx-stat-accent,var(--mx-primary));
|
||||
border-radius:50%;opacity:0.04;
|
||||
transition:opacity var(--mx-d2);
|
||||
}
|
||||
.mx-stat:hover::after{opacity:0.08}
|
||||
|
||||
.mx-stat-label{
|
||||
font-size:11px;font-weight:600;color:var(--mx-t3);
|
||||
text-transform:uppercase;letter-spacing:0.06em;
|
||||
margin-bottom:10px;display:flex;align-items:center;gap:8px;
|
||||
}
|
||||
|
||||
.mx-stat-icon{
|
||||
width:26px;height:26px;border-radius:var(--mx-r-xs);
|
||||
display:flex;align-items:center;justify-content:center;
|
||||
transition:transform var(--mx-d2) var(--mx-ease);
|
||||
}
|
||||
.mx-stat:hover .mx-stat-icon{transform:scale(1.12) rotate(-3deg)}
|
||||
|
||||
.mx-stat-value{
|
||||
font-size:28px;font-weight:800;
|
||||
letter-spacing:-0.03em;
|
||||
font-variant-numeric:tabular-nums;
|
||||
line-height:1;margin-bottom:8px;
|
||||
}
|
||||
|
||||
.mx-stat-delta{
|
||||
display:inline-flex;align-items:center;gap:4px;
|
||||
font-size:11px;font-weight:600;
|
||||
padding:2px 8px;border-radius:var(--mx-r-pill);
|
||||
}
|
||||
.mx-stat-delta.up{background:rgba(52,211,153,0.1);color:var(--mx-green)}
|
||||
.mx-stat-delta.down{background:rgba(248,113,113,0.1);color:var(--mx-red)}
|
||||
|
||||
/* Grid layout */
|
||||
.mx-stat-grid{
|
||||
display:grid;grid-template-columns:repeat(2,1fr);gap:12px;
|
||||
}
|
||||
@media(min-width:768px){
|
||||
.mx-stat-grid{grid-template-columns:repeat(4,1fr)}
|
||||
}
|
||||
|
||||
/* Mobile */
|
||||
@media(max-width:767px){
|
||||
.mx-stat{padding:14px}
|
||||
.mx-stat-value{font-size:22px}
|
||||
.mx-stat-icon{width:24px;height:24px}
|
||||
.mx-stat-icon svg{width:12px;height:12px}
|
||||
.mx-stat-label{font-size:10px}
|
||||
.mx-stat-delta{font-size:10px;padding:2px 6px}
|
||||
}
|
||||
Reference in new issue
Block a user