From cf3ed78b8b2a267a818692fc22fabb97fb17d40c Mon Sep 17 00:00:00 2001 From: Alfred Date: Wed, 11 Feb 2026 15:48:42 +0800 Subject: [PATCH] =?UTF-8?q?webui:=20Tremor=20=E6=94=B6=E5=B0=BE=20+=20favi?= =?UTF-8?q?con=20+=20=E6=BB=91=E5=9D=97=E5=B1=85=E4=B8=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 自动化三大 modal (新建动作/添加规则/添加数据源) Tremor 变量统一 - Favicon 多尺寸 (16/32/48/256)、content 裁剪填满、PNG link 标签 - Matrix 后处理滤镜滑块手柄垂直居中 (margin-top: -5px) - i18n 更新 --- components/ts_webui/web/css/style.css | 692 ++++++++++++++--------- components/ts_webui/web/favicon.ico | Bin 34873 -> 41385 bytes components/ts_webui/web/index.html | 5 +- components/ts_webui/web/js/app.js | 486 ++++++++-------- components/ts_webui/web/js/lang/en-US.js | 5 +- components/ts_webui/web/js/lang/zh-CN.js | 5 +- 6 files changed, 677 insertions(+), 516 deletions(-) diff --git a/components/ts_webui/web/css/style.css b/components/ts_webui/web/css/style.css index c6bd019..ad9adc7 100644 --- a/components/ts_webui/web/css/style.css +++ b/components/ts_webui/web/css/style.css @@ -674,6 +674,35 @@ button.btn-gray:hover, color: white; } +/* Matrix 后处理滤镜模态框:滑块样式与程序动画 cc-section 完全一致 */ +#modal-filter-config input[type="range"] { + flex: 1; + height: 6px; + border-radius: var(--radius-full); + background: var(--bg-muted); + -webkit-appearance: none; + appearance: none; +} +#modal-filter-config input[type="range"]::-webkit-slider-runnable-track { + width: 100%; + height: 6px; + background: var(--bg-muted); + border-radius: var(--radius-full); + cursor: pointer; +} +#modal-filter-config input[type="range"]::-webkit-slider-thumb { + appearance: none; + -webkit-appearance: none; + width: 16px; + height: 16px; + margin-top: -5px; /* 垂直居中:16px 手柄对齐 6px 轨道 */ + border-radius: 50%; + background: var(--violet-500); + box-shadow: var(--shadow); + cursor: pointer; + border: 2.5px solid var(--bg-card); +} + /* 特效/滤镜配置区 */ .effect-config-modal, .filter-config-modal { @@ -698,6 +727,35 @@ button.btn-gray:hover, align-self: flex-start; } +/* 后处理滤镜滑块:与程序动画 cc-section 一致,灰色轨道线用 var(--bg-muted) */ +.filter-config-modal .config-row input[type="range"] { + flex: 1; + height: 6px; + -webkit-appearance: none; + appearance: none; + background: var(--bg-muted); + border-radius: var(--radius-full); +} +.filter-config-modal .config-row input[type="range"]::-webkit-slider-runnable-track { + width: 100%; + height: 6px; + background: var(--bg-muted); + border-radius: var(--radius-full); + cursor: pointer; +} +.filter-config-modal .config-row input[type="range"]::-webkit-slider-thumb { + -webkit-appearance: none; + appearance: none; + width: 16px; + height: 16px; + margin-top: -5px; + border-radius: 50%; + background: var(--violet-500); + box-shadow: var(--shadow); + cursor: pointer; + border: 2.5px solid var(--bg-card); +} + .config-row { display: flex; align-items: center; @@ -732,10 +790,20 @@ button.btn-gray:hover, .config-row input[type="color"] { width: 36px; height: 36px; - border: none; - border-radius: var(--radius); + border: 1px solid var(--border); + border-radius: var(--radius-sm); cursor: pointer; + padding: 2px; + box-shadow: var(--shadow-sm); +} +.config-row input[type="color"]::-webkit-color-swatch-wrapper { padding: 0; + border-radius: calc(var(--radius-sm) - 2px); + overflow: hidden; +} +.config-row input[type="color"]::-webkit-color-swatch { + border: none; + border-radius: calc(var(--radius-sm) - 2px); } .config-row input[type="text"], @@ -873,6 +941,7 @@ button.btn-gray:hover, -webkit-appearance: none; width: 16px; height: 16px; + margin-top: -5px; /* 垂直居中:16px 手柄对齐 6px 轨道 */ border-radius: 50%; background: var(--violet-500); box-shadow: var(--shadow); @@ -1033,7 +1102,7 @@ button.btn-gray:hover, } .file-picker-list .error { - color: var(--danger-color); + color: var(--rose-500); } .modal-content h2 { @@ -2371,10 +2440,20 @@ button.btn-gray:hover, .basic-controls .color-control input[type="color"] { width: 50px; height: 32px; - border: none; - border-radius: 6px; + border: 1px solid var(--border); + border-radius: var(--radius-sm); cursor: pointer; + padding: 2px; + box-shadow: var(--shadow-sm); +} +.basic-controls .color-control input[type="color"]::-webkit-color-swatch-wrapper { padding: 0; + border-radius: calc(var(--radius-sm) - 2px); + overflow: hidden; +} +.basic-controls .color-control input[type="color"]::-webkit-color-swatch { + border: none; + border-radius: calc(var(--radius-sm) - 2px); } /* 预设颜色 */ @@ -2503,9 +2582,18 @@ button.btn-gray:hover, .effect-config .config-row input[type="color"] { width: 36px; height: 28px; - border: none; - border-radius: 4px; + border: 1px solid var(--border); + border-radius: var(--radius-sm); cursor: pointer; + padding: 2px; + box-shadow: var(--shadow-sm); +} +.effect-config .config-row input[type="color"]::-webkit-color-swatch-wrapper, +.effect-config .config-row input[type="color"]::-webkit-color-swatch { + border-radius: calc(var(--radius-sm) - 2px); +} +.effect-config .config-row input[type="color"]::-webkit-color-swatch { + border: none; } .effect-config .checkbox-label { @@ -2602,10 +2690,20 @@ button.btn-gray:hover, .matrix-controls input[type="color"] { width: 32px; height: 28px; - border: none; - border-radius: 4px; + border: 1px solid var(--border); + border-radius: var(--radius-sm); cursor: pointer; + padding: 2px; + box-shadow: var(--shadow-sm); +} +.matrix-controls input[type="color"]::-webkit-color-swatch-wrapper { padding: 0; + border-radius: calc(var(--radius-sm) - 2px); + overflow: hidden; +} +.matrix-controls input[type="color"]::-webkit-color-swatch { + border: none; + border-radius: calc(var(--radius-sm) - 2px); } .matrix-controls input[type="number"] { @@ -2642,29 +2740,29 @@ button.btn-gray:hover, .filter-btn { padding: 5px 10px; font-size: 0.75rem; - background: var(--bg-color); - border: 1px solid var(--border-color); - border-radius: 6px; + background: var(--bg-card); + border: 1px solid var(--border); + border-radius: var(--radius-sm); cursor: pointer; - transition: all 0.15s ease; + transition: all var(--t-fast); } .filter-btn:hover { - background: var(--primary-color); - border-color: var(--primary-color); + background: var(--blue-500); + border-color: var(--blue-500); color: white; } .filter-btn.active { - background: var(--primary-color); - border-color: var(--primary-color); + background: var(--blue-500); + border-color: var(--blue-500); color: white; } .filter-btn.selected { - background: var(--card-bg); - border-color: var(--primary-color); - box-shadow: 0 0 0 2px rgba(99, 102, 241, 0.3); + background: var(--bg-card); + border-color: var(--blue-500); + box-shadow: 0 0 0 2px var(--blue-100); } /* 滤镜分类 */ @@ -2682,9 +2780,9 @@ button.btn-gray:hover, /* 滤镜参数区域 */ .filter-params { - background: var(--bg-color); + background: var(--bg-muted); padding: 12px; - border-radius: 8px; + border-radius: var(--radius); margin-top: 10px; } @@ -2705,15 +2803,15 @@ button.btn-gray:hover, height: 6px; -webkit-appearance: none; appearance: none; - background: var(--border-color); - border-radius: 3px; + background: var(--border); + border-radius: var(--radius-sm); } .filter-param-row input[type="range"]::-webkit-slider-thumb { -webkit-appearance: none; width: 16px; height: 16px; - background: var(--primary-color); + background: var(--blue-500); border-radius: 50%; cursor: pointer; } @@ -2722,7 +2820,7 @@ button.btn-gray:hover, min-width: 30px; text-align: right; font-size: 0.85rem; - color: var(--text-color); + color: var(--text-primary); } /* 小按钮(全站统一) */ @@ -2977,8 +3075,8 @@ button.btn-gray:hover, /* 滑块区域 */ .fan-slider-wrap { padding: 12px; - background: var(--bg-elevated); - border-radius: 8px; + background: var(--bg-muted); + border-radius: var(--radius); margin-bottom: 12px; } @@ -2996,16 +3094,16 @@ button.btn-gray:hover, .fan-slider-value { font-weight: 600; - color: var(--primary-color); + color: var(--blue-500); } .fan-slider { width: 100%; height: 8px; - border-radius: 4px; + border-radius: var(--radius-sm); -webkit-appearance: none; appearance: none; - background: var(--border-color); + background: var(--border); outline: none; } @@ -3014,10 +3112,10 @@ button.btn-gray:hover, width: 24px; height: 24px; border-radius: 50%; - background: var(--primary-color); + background: var(--blue-500); cursor: pointer; - box-shadow: 0 2px 8px rgba(0,0,0,0.2); - transition: transform 0.15s; + box-shadow: var(--shadow); + transition: transform var(--t-fast); } .fan-slider::-webkit-slider-thumb:hover { @@ -3033,7 +3131,7 @@ button.btn-gray:hover, } .fan-slider:disabled::-webkit-slider-thumb { - background: var(--text-light); + background: var(--text-muted); cursor: not-allowed; } @@ -3043,11 +3141,11 @@ button.btn-gray:hover, padding: 10px; background: var(--blue-50); border: 1px solid transparent; - border-radius: 8px; + border-radius: var(--radius); color: var(--blue-600); font-size: 0.9rem; cursor: pointer; - transition: all 0.2s; + transition: all var(--t-normal); margin-bottom: 8px; } @@ -3061,9 +3159,9 @@ button.btn-gray:hover, .fan-temp-info { text-align: center; font-size: 0.85rem; - color: var(--text-light); + color: var(--text-secondary); padding-top: 8px; - border-top: 1px solid var(--border-color); + border-top: 1px solid var(--border); } /* 风扇曲线编辑器 */ @@ -3072,9 +3170,9 @@ button.btn-gray:hover, flex-direction: column; gap: 8px; padding: 12px; - background: var(--bg-elevated); - border-radius: 8px; - border: 1px solid var(--border-color); + background: var(--bg-muted); + border-radius: var(--radius); + border: 1px solid var(--border); max-height: 200px; overflow-y: auto; } @@ -3084,13 +3182,13 @@ button.btn-gray:hover, align-items: center; gap: 10px; padding: 8px; - background: var(--bg-color); - border-radius: 6px; - transition: background 0.2s; + background: var(--bg-card); + border-radius: var(--radius-sm); + transition: background var(--t-normal); } .curve-point-row:hover { - background: var(--bg-hover); + background: var(--bg-muted); } .curve-point-inputs { @@ -3118,7 +3216,7 @@ button.btn-gray:hover, .curve-point-field .field-unit { font-size: 12px; - color: var(--text-light); + color: var(--text-secondary); min-width: 20px; } @@ -3139,15 +3237,15 @@ button.btn-gray:hover, /* 曲线预览画布 */ .fan-curve-preview { - background: var(--bg-elevated); - border-radius: 8px; + background: var(--bg-muted); + border-radius: var(--radius); padding: 10px; - border: 1px solid var(--border-color); + border: 1px solid var(--border); } .fan-curve-preview canvas { width: 100%; - border-radius: 4px; + border-radius: var(--radius-sm); } /* 输入框带按钮 */ @@ -3182,23 +3280,23 @@ button.btn-gray:hover, } .fan-mode-badge.mode-manual { - background: rgba(251, 191, 36, 0.2); - color: #fbbf24; + background: var(--amber-50); + color: var(--amber-600); } .fan-mode-badge.mode-auto { - background: rgba(52, 211, 153, 0.2); - color: #34d399; + background: var(--emerald-50); + color: var(--emerald-600); } .fan-mode-badge.mode-curve { - background: rgba(79, 195, 247, 0.2); - color: #4fc3f7; + background: var(--blue-50); + color: var(--blue-600); } .fan-mode-badge.mode-off { - background: rgba(156, 163, 175, 0.2); - color: #9ca3af; + background: var(--bg-muted); + color: var(--text-muted); } /* 设备状态样式 */ @@ -3431,7 +3529,7 @@ button.btn-gray:hover, justify-content: space-between; align-items: center; padding-bottom: 10px; - border-bottom: 1px solid var(--border-color); + border-bottom: 1px solid var(--border); margin-bottom: 10px; } @@ -3448,7 +3546,7 @@ button.btn-gray:hover, .terminal-container { flex: 1; background: #1e293b; - border-radius: 8px; + border-radius: var(--radius); overflow: hidden; min-height: 400px; } @@ -3464,14 +3562,14 @@ button.btn-gray:hover, .terminal-help { padding: 10px 0; - color: var(--text-light); + color: var(--text-secondary); font-size: 0.85rem; } .terminal-help code { - background: var(--bg-color); + background: var(--bg-muted); padding: 2px 6px; - border-radius: 3px; + border-radius: var(--radius-sm); font-family: monospace; } @@ -3503,7 +3601,7 @@ button.btn-gray:hover, padding: 10px 15px; background: var(--blue-50); border: 1px solid transparent; - border-radius: 8px; + border-radius: var(--radius); margin-bottom: 15px; animation: slideDown 0.2s ease-out; } @@ -3525,7 +3623,7 @@ button.btn-gray:hover, .batch-toolbar #selected-count { font-weight: bold; - color: var(--primary-dark); + color: var(--blue-600); margin-right: 10px; } @@ -3539,14 +3637,14 @@ button.btn-gray:hover, width: 16px; height: 16px; cursor: pointer; - accent-color: var(--primary-color); + accent-color: var(--blue-500); } #select-all-cb { width: 16px; height: 16px; cursor: pointer; - accent-color: var(--primary-color); + accent-color: var(--blue-500); } .breadcrumb { @@ -3554,25 +3652,25 @@ button.btn-gray:hover, align-items: center; gap: 5px; font-size: 0.95rem; - color: var(--text-light); + color: var(--text-secondary); flex-wrap: wrap; } .breadcrumb-item { cursor: pointer; padding: 2px 6px; - border-radius: 4px; - transition: all 0.2s; + border-radius: var(--radius-sm); + transition: all var(--t-normal); } .breadcrumb-item:hover { background: var(--blue-100); - color: var(--primary-color); + color: var(--blue-500); } .breadcrumb-item.current { font-weight: bold; - color: var(--text-color); + color: var(--text-primary); } .file-actions { @@ -3599,8 +3697,8 @@ button.btn-gray:hover, /* 文件页面白色卡片容器 */ .file-card { - background: var(--card-bg); - border-radius: 8px; + background: var(--bg-card); + border-radius: var(--radius); padding: 20px; box-shadow: var(--shadow); } @@ -3692,7 +3790,7 @@ button.btn-gray:hover, } .tab-btn.btn-gray.active { - background: #666; + background: var(--text-secondary); color: white; border-color: var(--text-secondary); } @@ -3700,27 +3798,27 @@ button.btn-gray:hover, .tab-btn { padding: 4px 12px; font-size: 0.85rem; - border: 1px solid var(--border-color); - background: var(--card-bg); + border: 1px solid var(--border); + background: var(--bg-card); cursor: pointer; - border-radius: 4px; - transition: all 0.2s; + border-radius: var(--radius-sm); + transition: all var(--t-normal); } .tab-btn:hover { - background: var(--bg-color); + background: var(--bg-muted); } .tab-btn.active { - background: var(--primary-color); + background: var(--blue-500); color: white; - border-color: var(--primary-color); + border-color: var(--blue-500); } .file-list { - background: var(--card-bg); - border-radius: 8px; - border: 1px solid var(--border-color); + background: var(--bg-card); + border-radius: var(--radius); + border: 1px solid var(--border); overflow: hidden; } @@ -3730,16 +3828,16 @@ button.btn-gray:hover, } .file-table th { - background: var(--bg-color); + background: var(--bg-muted); padding: 12px 15px; text-align: left; font-weight: 600; - border-bottom: 1px solid var(--border-color); + border-bottom: 1px solid var(--border); } .file-table td { padding: 10px 15px; - border-bottom: 1px solid var(--border-color); + border-bottom: 1px solid var(--border); vertical-align: middle; } @@ -3753,7 +3851,7 @@ button.btn-gray:hover, .file-name.clickable { cursor: pointer; - color: var(--primary-color); + color: var(--blue-500); } .file-name.clickable:hover { @@ -3761,7 +3859,7 @@ button.btn-gray:hover, } .file-size { - color: var(--text-light); + color: var(--text-secondary); font-size: 0.9rem; text-align: center; } @@ -3778,7 +3876,7 @@ button.btn-gray:hover, .empty-folder { padding: 40px; text-align: center; - color: var(--text-light); + color: var(--text-secondary); font-size: 1.1rem; } @@ -3799,16 +3897,16 @@ button.btn-gray:hover, .unmounted-text { font-size: 1.2rem; - color: var(--text-light); + color: var(--text-secondary); margin-bottom: 20px; } .storage-status { margin-top: 15px; padding: 10px 15px; - background: var(--card-bg); - border-radius: 8px; - border: 1px solid var(--border-color); + background: var(--bg-card); + border-radius: var(--radius); + border: 1px solid var(--border); } .storage-info { @@ -3821,27 +3919,27 @@ button.btn-gray:hover, color: var(--emerald-600); background: var(--emerald-50); padding: 2px 8px; - border-radius: 4px; + border-radius: var(--radius-sm); font-size: 0.85em; } .storage-info .unmounted { - color: var(--text-light); + color: var(--text-secondary); } /* 上传区域样式 */ .upload-area { - border: 2px dashed var(--border-color); - border-radius: 8px; + border: 2px dashed var(--border); + border-radius: var(--radius); padding: 40px; text-align: center; cursor: pointer; - transition: all 0.2s; + transition: all var(--t-normal); margin-bottom: 15px; } .upload-area:hover, .upload-area.drag-over { - border-color: var(--primary-color); + border-color: var(--blue-500); background: var(--blue-50); } @@ -3850,21 +3948,21 @@ button.btn-gray:hover, justify-content: space-between; align-items: center; padding: 8px 12px; - background: var(--bg-color); - border-radius: 4px; + background: var(--bg-muted); + border-radius: var(--radius-sm); margin-bottom: 8px; } .upload-item .uploading { - color: var(--primary-color); + color: var(--blue-500); } .upload-item .success { - color: var(--secondary-color); + color: var(--emerald-500); } .upload-item .error { - color: var(--danger-color); + color: var(--rose-500); } /* 响应式调整 */ @@ -4748,7 +4846,7 @@ button.btn-gray:hover, margin-bottom: 24px; padding: 20px; background: var(--bg-subtle); - border-radius: 12px; + border-radius: var(--radius-lg); } .memory-gauge { @@ -4814,18 +4912,24 @@ button.btn-gray:hover, } .memory-details { + margin-top: 20px; margin-bottom: 20px; } .memory-details h4, .memory-dma-info h4, +.memory-rtc h4, +.memory-caps h4, +.memory-nvs h4, .memory-tips h4, +.memory-tasks h4, .memory-history h4 { font-size: 0.95rem; + font-weight: 600; margin-bottom: 12px; - color: var(--text-color); + color: var(--text-primary); padding-bottom: 6px; - border-bottom: 1px solid var(--border-color); + border-bottom: 1px solid var(--border); } .memory-table { @@ -4839,11 +4943,11 @@ button.btn-gray:hover, .memory-table td { padding: 10px 12px; text-align: left; - border-bottom: 1px solid var(--border-color); + border-bottom: 1px solid var(--border); } .memory-table th { - background: var(--bg-color); + background: var(--bg-muted); font-weight: 600; color: var(--text-secondary); font-size: 0.8rem; @@ -4859,10 +4963,10 @@ button.btn-gray:hover, } .dma-bar { - background: var(--card-bg); + background: var(--bg-card); padding: 12px; - border-radius: 8px; - border: 1px solid var(--border-color); + border-radius: var(--radius); + border: 1px solid var(--border); } .dma-labels { @@ -4870,30 +4974,31 @@ button.btn-gray:hover, justify-content: space-between; margin-top: 8px; font-size: 0.8rem; - color: var(--text-light); + color: var(--text-secondary); } .memory-tips { + margin-top: 20px; margin-bottom: 20px; } .memory-tip { padding: 10px 14px; margin-bottom: 8px; - border-radius: 6px; + border-radius: var(--radius-sm); font-size: 0.85rem; border-left: 3px solid currentColor; } /* 任务内存统计 */ .memory-tasks { - margin-top: 16px; + margin-top: 20px; } .memory-tasks .task-table code { background: var(--bg-muted); padding: 2px 6px; - border-radius: 3px; + border-radius: var(--radius-sm); font-size: 0.9em; } @@ -4913,7 +5018,7 @@ button.btn-gray:hover, margin-top: 16px; padding: 12px 16px; background: var(--blue-50); - border-radius: 8px; + border-radius: var(--radius); border: 1px solid transparent; } @@ -4927,9 +5032,9 @@ button.btn-gray:hover, .static-item { background: var(--bg-card); padding: 10px 12px; - border-radius: 6px; + border-radius: var(--radius-sm); text-align: center; - box-shadow: 0 1px 3px rgba(0,0,0,0.08); + box-shadow: var(--shadow); } .static-item.highlight { @@ -4964,7 +5069,7 @@ button.btn-gray:hover, margin-top: 16px; padding: 12px 16px; background: var(--amber-50); - border-radius: 8px; + border-radius: var(--radius); border: 1px solid transparent; } @@ -4998,10 +5103,10 @@ button.btn-gray:hover, /* RTC 内存 */ .memory-rtc { - margin-top: 16px; + margin-top: 20px; padding: 12px 16px; background: var(--amber-50); - border-radius: 8px; + border-radius: var(--radius); border: 1px solid transparent; } @@ -5015,15 +5120,15 @@ button.btn-gray:hover, /* 内存能力分布 */ .memory-caps { - margin-top: 16px; + margin-top: 20px; } /* NVS 存储 */ .memory-nvs { - margin-top: 16px; + margin-top: 20px; padding: 12px 16px; background: var(--bg-muted); - border-radius: 8px; + border-radius: var(--radius); } .nvs-stats { @@ -5046,8 +5151,8 @@ button.btn-gray:hover, .memory-history { padding: 12px 16px; background: var(--bg-subtle); - border-radius: 8px; - margin-top: 16px; + border-radius: var(--radius); + margin-top: 20px; } .history-stats { @@ -5149,11 +5254,11 @@ button.btn-gray:hover, } .status-card { - background: var(--card-bg); - border-radius: 8px; + background: var(--bg-card); + border-radius: var(--radius); padding: 16px; text-align: center; - box-shadow: 0 1px 3px rgba(0,0,0,0.08); + box-shadow: var(--shadow-sm); display: flex; flex-direction: column; align-items: center; @@ -5182,7 +5287,7 @@ button.btn-gray:hover, } .status-card.error { - background: #fee; + background: var(--rose-50); color: var(--danger-color); grid-column: 1 / -1; } @@ -5204,7 +5309,7 @@ button.btn-gray:hover, .status-card.loading { grid-column: 1 / -1; - color: var(--text-light); + color: var(--text-secondary); } .status-card .status-icon { @@ -5222,7 +5327,7 @@ button.btn-gray:hover, .status-card .status-label { font-size: 0.8rem; - color: var(--text-light); + color: var(--text-secondary); } .status-card .status-info { @@ -5289,9 +5394,9 @@ button.btn-gray:hover, align-items: center; gap: 8px; padding: 12px; - border-top: 1px solid var(--border-color); - background: var(--bg-color); - border-radius: 0 0 8px 8px; + border-top: 1px solid var(--border); + background: var(--bg-muted); + border-radius: 0 0 var(--radius) var(--radius); } /* 测试面板 */ @@ -5302,10 +5407,10 @@ button.btn-gray:hover, } .test-panel { - background: var(--card-bg); - border-radius: 8px; + background: var(--bg-card); + border-radius: var(--radius); overflow: hidden; - box-shadow: 0 1px 3px rgba(0,0,0,0.08); + box-shadow: var(--shadow-sm); } .test-panel.wide { @@ -5316,8 +5421,8 @@ button.btn-gray:hover, padding: 10px 14px; font-weight: 600; font-size: 0.95rem; - background: var(--bg-color); - border-bottom: 1px solid var(--border-color); + background: var(--bg-muted); + border-bottom: 1px solid var(--border); } .test-panel-body { @@ -5341,14 +5446,14 @@ button.btn-gray:hover, font-size: 0.85rem; background: #1e293b; color: #e8e8e8; - border-top: 1px solid var(--border-color); + border-top: 1px solid var(--border); max-height: 200px; overflow-y: auto; } .test-result-output.loading { - background: var(--bg-color); - color: var(--text-light); + background: var(--bg-muted); + color: var(--text-secondary); text-align: center; } @@ -5391,7 +5496,7 @@ button.btn-gray:hover, .result-log .empty-state { text-align: center; - color: var(--text-light); + color: var(--text-secondary); padding: 20px; margin: 0; } @@ -5399,7 +5504,7 @@ button.btn-gray:hover, .result-log .log-item { padding: 8px 10px; margin-bottom: 4px; - border-radius: 4px; + border-radius: var(--radius-sm); font-family: monospace; font-size: 0.85em; display: flex; @@ -5409,16 +5514,16 @@ button.btn-gray:hover, .result-log .log-item.success { background: var(--emerald-50); - border-left: 3px solid var(--secondary-color); + border-left: 3px solid var(--emerald-500); } .result-log .log-item.error { background: var(--rose-50); - border-left: 3px solid var(--danger-color); + border-left: 3px solid var(--rose-500); } .result-log .log-time { - color: var(--text-light); + color: var(--text-secondary); font-size: 0.85em; white-space: nowrap; } @@ -5432,30 +5537,30 @@ button.btn-gray:hover, } .page-automation .data-table th { - background: var(--bg-color); + background: var(--bg-muted); padding: 10px 14px; text-align: left; font-weight: 600; font-size: 0.85rem; - color: var(--text-light); - border-bottom: 2px solid var(--border-color); + color: var(--text-secondary); + border-bottom: 2px solid var(--border); white-space: nowrap; } .page-automation .data-table td { padding: 10px 14px; - border-bottom: 1px solid var(--border-color); + border-bottom: 1px solid var(--border); vertical-align: middle; } .page-automation .data-table tr:hover { - background: var(--bg-color); + background: var(--bg-muted); } .page-automation .data-table code { - background: var(--bg-color); + background: var(--bg-muted); padding: 2px 6px; - border-radius: 3px; + border-radius: var(--radius-sm); font-size: 0.85em; } @@ -5493,7 +5598,7 @@ button.btn-gray:hover, /* 空状态 */ .empty-state { text-align: center; - color: var(--text-light); + color: var(--text-secondary); padding: 24px; } @@ -5523,7 +5628,7 @@ button.btn-gray:hover, /* 模态框标签页 */ .automation-modal .modal-tabs { display: flex; - border-bottom: 2px solid var(--border-color); + border-bottom: 2px solid var(--border); margin-bottom: 16px; } @@ -5534,15 +5639,15 @@ button.btn-gray:hover, background: transparent; cursor: pointer; font-size: 0.95em; - color: var(--text-light); + color: var(--text-secondary); border-bottom: 2px solid transparent; margin-bottom: -2px; transition: all 0.2s; } .automation-modal .modal-tab:hover { - color: var(--text-color); - background: var(--bg-color); + color: var(--text-primary); + background: var(--bg-muted); } /* 与 OTA/btn-service-style 一致:浅蓝底、蓝色字、蓝边框 */ @@ -5589,7 +5694,7 @@ button.btn-gray:hover, } .automation-modal .form-group label .required { - color: var(--danger-color); + color: var(--rose-500); } .automation-modal .checkbox-label { @@ -5602,11 +5707,11 @@ button.btn-gray:hover, /* 配置区块 */ .automation-modal .config-section { - border: 1px solid var(--border-color); - border-radius: 8px; + border: 1px solid var(--border); + border-radius: var(--radius); padding: 14px; margin-bottom: 16px; - background: var(--bg-color); + background: var(--bg-muted); } .automation-modal .config-section .config-title { @@ -5625,7 +5730,7 @@ button.btn-gray:hover, .automation-modal .empty-hint { text-align: center; - color: var(--text-light); + color: var(--text-secondary); padding: 16px; margin: 0; font-size: 0.9rem; @@ -5956,7 +6061,7 @@ button.btn-gray:hover, .action-section { margin-bottom: 24px; padding-bottom: 20px; - border-bottom: 1px solid var(--border-color); + border-bottom: 1px solid var(--border); } .action-section:last-of-type { @@ -5995,7 +6100,7 @@ button.btn-gray:hover, width: 26px; height: 26px; border-radius: 50%; - background: var(--primary-color); + background: var(--blue-500); color: white; font-size: 0.85rem; font-weight: 700; @@ -6019,8 +6124,8 @@ button.btn-gray:hover, flex-direction: column; align-items: center; padding: 14px 10px; - border: 2px solid var(--border-color); - border-radius: 10px; + border: 2px solid var(--border); + border-radius: var(--radius-lg); cursor: pointer; transition: all 0.2s ease; background: white; @@ -6028,16 +6133,16 @@ button.btn-gray:hover, } .action-type-card:hover { - border-color: var(--primary-color); + border-color: var(--blue-500); background: var(--blue-50); transform: translateY(-2px); } .action-type-card.selected, .action-type-card:has(input:checked) { - border-color: var(--primary-color); + border-color: var(--blue-500); background: var(--blue-100); - box-shadow: 0 4px 12px rgba(59, 130, 246, 0.2); + box-shadow: 0 4px 12px var(--blue-100); } .action-type-card input[type="radio"] { @@ -6061,15 +6166,15 @@ button.btn-gray:hover, .action-type-card .card-desc { font-size: 0.75rem; - color: var(--text-light); + color: var(--text-secondary); line-height: 1.3; } /* 参数配置卡片 */ .params-card { - background: var(--bg-color); - border: 1px solid var(--border-color); - border-radius: 10px; + background: var(--bg-muted); + border: 1px solid var(--border); + border-radius: var(--radius-lg); padding: 16px; } @@ -7038,8 +7143,8 @@ button.btn-gray:hover, align-items: center; justify-content: flex-start; padding: 14px 10px 38px; /* 统一底部 padding,为操作栏留出空间 */ - background: var(--card-bg); - border: 1px solid var(--border-color); + background: var(--bg-card); + border: 1px solid var(--border); border-radius: 12px; cursor: pointer; transition: all 0.2s ease; @@ -7121,7 +7226,7 @@ button.btn-gray:hover, /* 设备面板分隔线 */ .device-panel-divider { height: 1px; - background: linear-gradient(90deg, transparent, var(--border-color) 20%, var(--border-color) 80%, transparent); + background: linear-gradient(90deg, transparent, var(--border) 20%, var(--border) 80%, transparent); margin: 16px 0; } @@ -7168,7 +7273,7 @@ button.btn-gray:hover, display: flex; align-items: center; gap: 16px; - padding: 12px 0; + padding: 12px 16px; background: var(--bg-elevated); border-radius: 10px; margin-bottom: 16px; @@ -7178,12 +7283,12 @@ button.btn-gray:hover, .temp-status-item { display: flex; align-items: center; - gap: 8px; + gap: 12px; } .temp-status-item .temp-label { font-size: 0.85rem; - color: var(--text-light); + color: var(--text-secondary); } .temp-status-item .temp-value { @@ -7201,7 +7306,7 @@ button.btn-gray:hover, .test-temp-input-wrap { display: flex; align-items: center; - gap: 6px; + gap: 8px; } .test-temp-input-wrap .input-sm { @@ -7346,7 +7451,7 @@ button.btn-gray:hover, .data-widgets-empty { text-align: center; padding: 30px 20px; - color: var(--text-light); + color: var(--text-secondary); } .data-widgets-empty .empty-icon { @@ -7362,9 +7467,9 @@ button.btn-gray:hover, /* 组件卡片 */ .dw-card { - background: var(--card-bg); - border: 1px solid var(--border-color); - border-radius: 12px; + background: var(--bg-card); + border: 1px solid var(--border); + border-radius: var(--radius-lg); padding: 12px; text-align: center; transition: all 0.2s; @@ -7374,7 +7479,7 @@ button.btn-gray:hover, } .dw-card:hover { - border-color: var(--primary-color); + border-color: var(--blue-500); box-shadow: 0 2px 8px var(--blue-100); } @@ -7389,7 +7494,7 @@ button.btn-gray:hover, font-size: 0.85em; font-weight: 500; font-style: normal; - color: var(--text-light); + color: var(--text-secondary); } .dw-card-actions { @@ -7419,10 +7524,10 @@ button.btn-gray:hover, .dw-card-var { font-size: 0.7em; - color: var(--text-light); - background: var(--bg-color); + color: var(--text-secondary); + background: var(--bg-muted); padding: 4px 8px; - border-radius: 4px; + border-radius: var(--radius-sm); cursor: pointer; transition: all 0.2s; white-space: nowrap; @@ -7432,12 +7537,12 @@ button.btn-gray:hover, } .dw-card-var:hover { - background: var(--primary-color); + background: var(--blue-500); color: white; } .dw-card-var.bound { - color: var(--primary-color); + color: var(--blue-500); background: var(--blue-100); } @@ -7457,7 +7562,7 @@ button.btn-gray:hover, .dw-ring-bg { fill: none; - stroke: var(--border-color); + stroke: var(--border); stroke-width: 8; } @@ -7477,7 +7582,7 @@ button.btn-gray:hover, transform: translate(-50%, -50%); font-size: 1.2em; font-weight: 600; - color: var(--text-color); + color: var(--text-primary); } /* 仪表盘 */ @@ -7495,7 +7600,7 @@ button.btn-gray:hover, .dw-gauge-bg { fill: none; - stroke: var(--border-color); + stroke: var(--border); stroke-width: 8; stroke-linecap: round; } @@ -7516,7 +7621,7 @@ button.btn-gray:hover, transform: translateX(-50%); font-size: 1.1em; font-weight: 600; - color: var(--text-color); + color: var(--text-primary); } /* 温度计 */ @@ -7533,10 +7638,10 @@ button.btn-gray:hover, position: relative; width: 22px; height: 65px; - background: var(--bg-color); + background: var(--bg-muted); border-radius: 11px; overflow: hidden; - border: 2px solid var(--border-color); + border: 2px solid var(--border); } .dw-temp-fill { @@ -7559,13 +7664,13 @@ button.btn-gray:hover, flex-direction: column; justify-content: space-between; font-size: 0.55em; - color: var(--text-light); + color: var(--text-secondary); } .dw-temp-value { font-size: 1.4em; font-weight: 600; - color: var(--text-color); + color: var(--text-primary); min-width: 45px; } @@ -7603,7 +7708,7 @@ button.btn-gray:hover, .dw-number-unit { font-size: 0.85em; - color: var(--text-light); + color: var(--text-secondary); font-weight: 500; } @@ -7621,8 +7726,8 @@ button.btn-gray:hover, .dw-bar-track { width: 100%; height: 12px; - background: var(--bg-color); - border-radius: 6px; + background: var(--bg-muted); + border-radius: var(--radius-sm); overflow: hidden; margin-bottom: 8px; } @@ -7630,14 +7735,14 @@ button.btn-gray:hover, .dw-bar-fill { height: 100%; width: 0%; - border-radius: 6px; + border-radius: var(--radius-sm); transition: width 0.5s ease; } .dw-bar-value { font-size: 1.2em; font-weight: 600; - color: var(--text-color); + color: var(--text-primary); } /* 文本显示 */ @@ -7670,10 +7775,10 @@ button.btn-gray:hover, .dw-add-section h4 { font-size: 0.9em; - color: var(--text-light); + color: var(--text-secondary); margin-bottom: 10px; padding-bottom: 6px; - border-bottom: 1px solid var(--border-color); + border-bottom: 1px solid var(--border); } .dw-presets-grid { @@ -7687,16 +7792,16 @@ button.btn-gray:hover, flex-direction: column; align-items: center; padding: 12px 8px; - background: var(--bg-color); - border-radius: 8px; + background: var(--bg-card); + border-radius: var(--radius); cursor: pointer; transition: all 0.2s; border: 1px solid transparent; } .dw-preset-item:hover { - background: var(--bg-hover); - border-color: var(--primary-color); + background: var(--bg-muted); + border-color: var(--blue-500); } .dw-preset-icon { @@ -7711,7 +7816,7 @@ button.btn-gray:hover, .dw-preset-type { font-size: 0.7em; - color: var(--text-light); + color: var(--text-secondary); } .dw-types-list { @@ -7725,16 +7830,16 @@ button.btn-gray:hover, align-items: center; gap: 12px; padding: 10px 12px; - background: var(--bg-color); - border-radius: 8px; + background: var(--bg-card); + border-radius: var(--radius); cursor: pointer; transition: all 0.2s; border: 1px solid transparent; } .dw-type-item:hover { - background: var(--bg-hover); - border-color: var(--primary-color); + background: var(--bg-muted); + border-color: var(--blue-500); } .dw-type-icon { @@ -7752,7 +7857,7 @@ button.btn-gray:hover, .dw-type-desc { font-size: 0.75em; - color: var(--text-light); + color: var(--text-secondary); } /* 表单行 */ @@ -7783,15 +7888,15 @@ button.btn-gray:hover, .dw-manager-sidebar { width: 280px; flex-shrink: 0; - border-right: 1px solid var(--border-color); + border-right: 1px solid var(--border); padding: 16px; - background: var(--bg-color); + background: var(--bg-muted); overflow-y: auto; } .dw-manager-section h4 { font-size: 0.85em; - color: var(--text-light); + color: var(--text-secondary); margin-bottom: 12px; text-transform: uppercase; letter-spacing: 0.5px; @@ -7806,7 +7911,7 @@ button.btn-gray:hover, .dw-manager-empty-list { text-align: center; padding: 30px 10px; - color: var(--text-light); + color: var(--text-secondary); font-size: 0.9em; } @@ -7817,9 +7922,9 @@ button.btn-gray:hover, gap: 8px; padding: 8px 10px; padding-right: 80px; - background: var(--card-bg); - border: 1px solid var(--border-color); - border-radius: 6px; + background: var(--bg-card); + border: 1px solid var(--border); + border-radius: var(--radius-sm); cursor: pointer; transition: all 0.2s; position: relative; @@ -7827,11 +7932,11 @@ button.btn-gray:hover, } .dw-manager-item:hover { - border-color: var(--primary-color); + border-color: var(--blue-500); } .dw-manager-item.active { - border-color: var(--primary-color); + border-color: var(--blue-500); background: var(--blue-100); } @@ -7855,10 +7960,10 @@ button.btn-gray:hover, flex-shrink: 0; white-space: nowrap; font-size: 0.7em; - color: var(--text-light); - background: var(--bg-color); + color: var(--text-secondary); + background: var(--bg-muted); padding: 2px 6px; - border-radius: 3px; + border-radius: var(--radius-sm); } .dw-manager-item-actions { @@ -7869,14 +7974,14 @@ button.btn-gray:hover, display: flex; gap: 2px; opacity: 0; - background: var(--card-bg); + background: transparent; padding: 2px 4px; - border-radius: 4px; + border-radius: var(--radius-sm); transition: opacity 0.2s; } .dw-manager-item.active .dw-manager-item-actions { - background: var(--blue-100); + background: transparent; } .dw-manager-item:hover .dw-manager-item-actions { @@ -7886,6 +7991,11 @@ button.btn-gray:hover, .dw-manager-item-actions .dw-btn-icon { padding: 2px 4px; font-size: 11px; + border-radius: var(--radius-sm); +} + +.dw-manager-item-actions .dw-btn-icon:hover { + background: var(--bg-muted); } .dw-manager-item-actions .dw-btn-icon:disabled { @@ -7905,16 +8015,16 @@ button.btn-gray:hover, align-items: center; justify-content: center; height: 100%; - color: var(--text-light); + color: var(--text-secondary); text-align: center; } /* 添加面板 */ .dw-add-panel h4 { font-size: 0.9em; - color: var(--text-light); + color: var(--text-secondary); margin-bottom: 12px; - border-bottom: 1px solid var(--border-color); + border-bottom: 1px solid var(--border); padding-bottom: 8px; } @@ -7935,17 +8045,16 @@ button.btn-gray:hover, flex-direction: column; align-items: center; padding: 12px; - background: var(--bg-color); - border: 1px solid var(--border-color); - border-radius: 8px; + background: var(--bg-card); + border: 1px solid var(--border); + border-radius: var(--radius); cursor: pointer; transition: all 0.2s; text-align: center; } .dw-type-card:hover { - border-color: var(--primary-color); - background: var(--bg-hover); + border-color: var(--blue-500); } .dw-type-card .dw-type-icon { @@ -7961,7 +8070,7 @@ button.btn-gray:hover, .dw-type-card .dw-type-desc { font-size: 0.7em; - color: var(--text-light); + color: var(--text-secondary); } /* 编辑面板 */ @@ -7978,6 +8087,7 @@ button.btn-gray:hover, min-width: 0; } + /* 仅第一行(图标+颜色):图标占剩余宽度,颜色固定一列,避免拥挤不对齐 */ .dw-edit-panel .form-row:first-of-type .form-group:first-child { flex: 1; @@ -7987,10 +8097,22 @@ button.btn-gray:hover, flex: 0 0 100px; } -.dw-edit-panel .form-row:first-of-type .form-group:last-child .input-color { - width: 100%; - min-width: 56px; - max-width: 80px; +.dw-edit-panel .form-row:first-of-type .form-group:last-child .input-color, +.dw-edit-panel .input-color { + width: 36px !important; + height: 36px !important; + min-width: 36px !important; + max-width: 36px !important; + flex: 0 0 36px !important; +} +.dw-edit-panel .input-color::-webkit-color-swatch-wrapper { + padding: 0; + border-radius: calc(var(--radius-sm) - 2px); + overflow: hidden; +} +.dw-edit-panel .input-color::-webkit-color-swatch { + border: none; + border-radius: calc(var(--radius-sm) - 2px); } .dw-edit-header { @@ -8008,9 +8130,9 @@ button.btn-gray:hover, } .dw-expression-group { - background: var(--bg-color); - padding: 12px; - border-radius: 8px; + background: var(--bg-muted); + padding: 16px; + border-radius: var(--radius); margin-top: 16px; } @@ -8018,6 +8140,7 @@ button.btn-gray:hover, display: flex; align-items: center; gap: 8px; + margin-bottom: 10px; } .dw-expression-group .badge { @@ -8032,7 +8155,10 @@ button.btn-gray:hover, .dw-expression-input { display: flex; gap: 8px; - margin-top: 6px; +} + +.dw-expression-group .form-hint { + margin-top: 10px; } .dw-expression-input .input { @@ -8042,34 +8168,34 @@ button.btn-gray:hover, .form-hint { display: block; font-size: 0.75em; - color: var(--text-light); + color: var(--text-secondary); margin-top: 6px; } .form-hint code { - background: var(--card-bg); + background: var(--bg-card); padding: 1px 4px; - border-radius: 3px; + border-radius: var(--radius-sm); font-family: 'Consolas', monospace; } .dw-edit-preview { margin-top: 20px; padding-top: 16px; - border-top: 1px solid var(--border-color); + border-top: 1px solid var(--border); } .dw-edit-preview label { font-size: 0.85em; - color: var(--text-light); + color: var(--text-secondary); margin-bottom: 8px; display: block; } .dw-preview-card { - background: var(--bg-color); + background: var(--bg-muted); padding: 12px; - border-radius: 8px; + border-radius: var(--radius); } .dw-preview-card .dw-card { @@ -8082,7 +8208,7 @@ button.btn-gray:hover, justify-content: space-between; margin-top: 20px; padding-top: 16px; - border-top: 1px solid var(--border-color); + border-top: 1px solid var(--border); } /* 新组件类型样式 */ @@ -8109,7 +8235,7 @@ button.btn-gray:hover, .dw-status-label { font-size: 0.9em; font-weight: 500; - color: var(--text-color); + color: var(--text-primary); } /* 图标状态 */ @@ -8129,7 +8255,7 @@ button.btn-gray:hover, .dw-icon-label { font-size: 0.85em; - color: var(--text-light); + color: var(--text-secondary); } /* 双数值 */ @@ -8148,19 +8274,19 @@ button.btn-gray:hover, .dw-dual-sep { font-size: 1.2em; - color: var(--text-light); + color: var(--text-secondary); margin: 0 2px; } .dw-dual-sub { font-size: 1.2em; - color: var(--text-light); + color: var(--text-secondary); font-weight: 500; } .dw-dual-unit { font-size: 0.9em; - color: var(--text-light); + color: var(--text-secondary); margin-left: 4px; } @@ -8180,7 +8306,7 @@ button.btn-gray:hover, .dw-percent-symbol { font-size: 1.4em; font-weight: 500; - color: var(--text-light); + color: var(--text-secondary); margin-left: 2px; } @@ -8189,7 +8315,7 @@ button.btn-gray:hover, height: 160px; overflow-y: auto; background: #1e293b; - border-radius: 6px; + border-radius: var(--radius-sm); font-family: 'Consolas', 'Monaco', 'Courier New', monospace; font-size: 11px; line-height: 1.4; @@ -8282,7 +8408,7 @@ button.btn-gray:hover, /* 日志组件卡片尺寸调整 */ .dw-card .dw-log-container { margin: 0 -12px -12px -12px; - border-radius: 0 0 8px 8px; + border-radius: 0 0 var(--radius) var(--radius); height: 200px; } @@ -8320,20 +8446,20 @@ button.btn-gray:hover, align-items: center; padding: 8px 12px; border: 2px solid var(--border); - border-radius: 8px; + border-radius: var(--radius); cursor: pointer; transition: all 0.2s; min-width: 70px; } .dw-layout-option:hover { - border-color: var(--primary); - background: rgba(77, 171, 247, 0.05); + border-color: var(--blue-500); + background: var(--blue-50); } .dw-layout-option.active { - border-color: var(--primary); - background: rgba(77, 171, 247, 0.1); + border-color: var(--blue-500); + background: var(--blue-50); } .dw-layout-option input[type="radio"] { @@ -8347,7 +8473,7 @@ button.btn-gray:hover, .dw-layout-desc { font-size: 11px; - color: var(--text-light); + color: var(--text-secondary); margin-top: 2px; } @@ -8356,8 +8482,20 @@ button.btn-gray:hover, width: 60px; height: 36px; padding: 2px; + border: 1px solid var(--border); + border-radius: var(--radius-sm); + box-shadow: var(--shadow-sm); cursor: pointer; } +.input-color::-webkit-color-swatch-wrapper { + padding: 0; + border-radius: calc(var(--radius-sm) - 2px); + overflow: hidden; +} +.input-color::-webkit-color-swatch { + border: none; + border-radius: calc(var(--radius-sm) - 2px); +} /* 按钮块级 */ .btn-block { diff --git a/components/ts_webui/web/favicon.ico b/components/ts_webui/web/favicon.ico index 62bda9e526b9f1c12f42bc0bf61830b21dcf963e..8b7dc9b1f26d63869b57b24653c76673d13c943f 100644 GIT binary patch literal 41385 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 Nw{j|PN@a}#{|_?jpN;?k diff --git a/components/ts_webui/web/index.html b/components/ts_webui/web/index.html index ff364c3..834b11f 100644 --- a/components/ts_webui/web/index.html +++ b/components/ts_webui/web/index.html @@ -44,7 +44,10 @@ - + + + + diff --git a/components/ts_webui/web/js/app.js b/components/ts_webui/web/js/app.js index 004574c..6a5dc29 100644 --- a/components/ts_webui/web/js/app.js +++ b/components/ts_webui/web/js/app.js @@ -535,7 +535,7 @@ async function loadSystemPage() {
${t('common.loading')}
-
+

${t('system.memory')}

@@ -557,26 +557,26 @@ async function loadSystemPage() {

${t('system.title')}

- +
-

${t('system.overview')}

+

${t('system.overview')}

${t('system.chip')}: -

-

${t('system.firmware')}: - / -

+

${t('system.firmware')}: - / -

${t('system.uptime')}: -

-

-

+

-

-
-

${t('system.power')}

-

${t('system.inputVoltage')}: - / ${t('system.internal')} -

+
+

${t('system.power')}

+

${t('system.inputVoltage')}: - / ${t('system.internal')} -

${t('system.current')}: -

${t('system.wattage')}: -

${t('system.protection')}: - + -

@@ -591,15 +591,15 @@ async function loadSystemPage() {
-

${t('network.connection')}

+

${t('network.connection')}

${t('system.ethernet')}: -

${t('system.wifi')}: -

${t('system.ipAddress')}: -

-
-

${t('system.timeSync')}

+
+

${t('system.timeSync')}

${t('system.currentTime')}: -

-

${t('system.timeStatus')}: - (-)

+

${t('system.timeStatus')}: - (-)

${t('system.timezone')}: -

@@ -617,7 +617,7 @@ async function loadSystemPage() {

${t('system.devicePanel')}

- +
@@ -890,11 +890,11 @@ function updateProtectionUI(running) { if (icon) { icon.className = running ? 'ri-toggle-fill' : 'ri-toggle-line'; - icon.style.color = running ? '#059669' : '#6b7280'; + icon.style.color = running ? 'var(--emerald-600)' : 'var(--text-secondary)'; } if (statusSpan) { statusSpan.textContent = running ? t('status.enabled') : t('status.disabled'); - statusSpan.style.color = running ? '#059669' : '#6b7280'; + statusSpan.style.color = running ? 'var(--emerald-600)' : 'var(--text-secondary)'; } } @@ -1659,22 +1659,22 @@ async function showFanCurveModal(fanId = 0) {
-
-