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
+139
@@ -0,0 +1,139 @@
|
||||
/* ═══════════════════════════════════════════
|
||||
MIUIX CONSOLE — Checkbox & Radio Component
|
||||
═══════════════════════════════════════════ */
|
||||
|
||||
/* ── Checkbox ── */
|
||||
.mx-checkbox{
|
||||
display:inline-flex;align-items:center;gap:8px;
|
||||
cursor:pointer;
|
||||
-webkit-tap-highlight-color:transparent;
|
||||
}
|
||||
.mx-checkbox input{display:none}
|
||||
|
||||
.mx-checkbox-box{
|
||||
width:18px;height:18px;
|
||||
border:2px solid var(--mx-border);
|
||||
border-radius:5px;
|
||||
display:flex;align-items:center;justify-content:center;
|
||||
flex-shrink:0;
|
||||
transition:all var(--mx-d2) var(--mx-spring);
|
||||
background:transparent;
|
||||
}
|
||||
.mx-checkbox-box svg{
|
||||
width:12px;height:12px;
|
||||
color:#fff;opacity:0;
|
||||
transform:scale(0);
|
||||
transition:all var(--mx-d2) var(--mx-spring);
|
||||
}
|
||||
|
||||
/* Checked */
|
||||
.mx-checkbox input:checked + .mx-checkbox-box{
|
||||
background:var(--mx-primary);
|
||||
border-color:var(--mx-primary);
|
||||
}
|
||||
.mx-checkbox input:checked + .mx-checkbox-box svg{
|
||||
opacity:1;transform:scale(1);
|
||||
}
|
||||
|
||||
/* Indeterminate */
|
||||
.mx-checkbox input:indeterminate + .mx-checkbox-box{
|
||||
background:var(--mx-primary);
|
||||
border-color:var(--mx-primary);
|
||||
}
|
||||
.mx-checkbox input:indeterminate + .mx-checkbox-box svg{
|
||||
opacity:1;transform:scale(1);
|
||||
}
|
||||
|
||||
/* Hover */
|
||||
.mx-checkbox:hover .mx-checkbox-box{border-color:var(--mx-primary)}
|
||||
|
||||
/* Disabled */
|
||||
.mx-checkbox input:disabled + .mx-checkbox-box{
|
||||
opacity:0.4;cursor:not-allowed;
|
||||
}
|
||||
.mx-checkbox input:disabled ~ .mx-checkbox-label{
|
||||
opacity:0.4;cursor:not-allowed;
|
||||
}
|
||||
|
||||
/* Focus */
|
||||
.mx-checkbox input:focus-visible + .mx-checkbox-box{
|
||||
box-shadow:0 0 0 3px var(--mx-primary-glow);
|
||||
}
|
||||
|
||||
/* Label */
|
||||
.mx-checkbox-label{
|
||||
font-size:14px;color:var(--mx-text);
|
||||
transition:color var(--mx-d1);
|
||||
user-select:none;
|
||||
}
|
||||
|
||||
/* ── Radio ── */
|
||||
.mx-radio{
|
||||
display:inline-flex;align-items:center;gap:8px;
|
||||
cursor:pointer;
|
||||
-webkit-tap-highlight-color:transparent;
|
||||
}
|
||||
.mx-radio input{display:none}
|
||||
|
||||
.mx-radio-dot{
|
||||
width:18px;height:18px;
|
||||
border:2px solid var(--mx-border);
|
||||
border-radius:50%;
|
||||
display:flex;align-items:center;justify-content:center;
|
||||
flex-shrink:0;
|
||||
transition:all var(--mx-d2) var(--mx-spring);
|
||||
}
|
||||
.mx-radio-dot::after{
|
||||
content:'';width:8px;height:8px;
|
||||
border-radius:50%;background:#fff;
|
||||
transform:scale(0);
|
||||
transition:transform var(--mx-d2) var(--mx-spring);
|
||||
}
|
||||
|
||||
/* Checked */
|
||||
.mx-radio input:checked + .mx-radio-dot{
|
||||
background:var(--mx-primary);
|
||||
border-color:var(--mx-primary);
|
||||
}
|
||||
.mx-radio input:checked + .mx-radio-dot::after{
|
||||
transform:scale(1);
|
||||
}
|
||||
|
||||
/* Hover */
|
||||
.mx-radio:hover .mx-radio-dot{border-color:var(--mx-primary)}
|
||||
|
||||
/* Disabled */
|
||||
.mx-radio input:disabled + .mx-radio-dot{
|
||||
opacity:0.4;cursor:not-allowed;
|
||||
}
|
||||
.mx-radio input:disabled ~ .mx-radio-label{
|
||||
opacity:0.4;cursor:not-allowed;
|
||||
}
|
||||
|
||||
/* Focus */
|
||||
.mx-radio input:focus-visible + .mx-radio-dot{
|
||||
box-shadow:0 0 0 3px var(--mx-primary-glow);
|
||||
}
|
||||
|
||||
/* Label */
|
||||
.mx-radio-label{
|
||||
font-size:14px;color:var(--mx-text);
|
||||
transition:color var(--mx-d1);
|
||||
user-select:none;
|
||||
}
|
||||
|
||||
/* ── Checkbox Group / Radio Group layout ── */
|
||||
.mx-checkbox-group,.mx-radio-group{
|
||||
display:flex;flex-direction:column;gap:10px;
|
||||
}
|
||||
.mx-checkbox-group.horizontal,.mx-radio-group.horizontal{
|
||||
flex-direction:row;flex-wrap:wrap;gap:16px;
|
||||
}
|
||||
|
||||
/* Mobile: 加大触控区 */
|
||||
@media(max-width:767px){
|
||||
.mx-checkbox,.mx-radio{min-height:44px;padding:4px 0}
|
||||
.mx-checkbox-box,.mx-radio-dot{width:22px;height:22px}
|
||||
.mx-checkbox-box svg{width:14px;height:14px}
|
||||
.mx-radio-dot::after{width:10px;height:10px}
|
||||
}
|
||||
Reference in new issue
Block a user