- );
+ )
}
diff --git a/console-ui/src/components/LoginScreen.jsx b/console-ui/src/components/LoginScreen.jsx
index 2304664..f2360b7 100644
--- a/console-ui/src/components/LoginScreen.jsx
+++ b/console-ui/src/components/LoginScreen.jsx
@@ -118,8 +118,8 @@ export function LoginScreen({ onLogin, deviceName }) {
const model = about?.model || ''
return (
-
@@ -187,7 +187,7 @@ export function LoginScreen({ onLogin, deviceName }) {
@@ -282,7 +282,7 @@ const loginCSS = `
.login-mono { font-family: "JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, monospace; font-feature-settings: "tnum"; }
.login-tnum { font-variant-numeric: tabular-nums; }
@keyframes login-spin { to { transform: rotate(360deg); } }
- @media (max-width: 880px) {
+ @media (max-width: 1023px) {
.login-brand { display: none !important; }
}
`
@@ -380,7 +380,7 @@ function Field({ icon, type = 'text', value, onChange, placeholder, trailing, au
onFocus={() => setFocus(true)} onBlur={() => setFocus(false)}
style={{
flex: 1, minWidth: 0, border: 'none', outline: 'none', background: 'transparent',
- fontSize: 14, color: T.ink,
+ fontSize: 16, color: T.ink,
letterSpacing: type === 'password' ? '0.18em' : 0,
fontFamily: 'inherit',
}}/>
diff --git a/console-ui/src/components/StatusBar.jsx b/console-ui/src/components/StatusBar.jsx
index dadf041..e458596 100644
--- a/console-ui/src/components/StatusBar.jsx
+++ b/console-ui/src/components/StatusBar.jsx
@@ -4,8 +4,56 @@ import { Icon } from '../icons'
import { StatusDot, useClock } from './ui'
import { AnimatePresence, PopScale } from '../motion'
-export function StatusBar({ cpu, gpu, mem, alertCount, online, lastSync, onOpenAlerts, theme = 'light', deviceLabel, DEVICE, loginUser, onLogout }) {
- const isDarkBar = theme === 'dark'
+const CLOUD_LINK_STATES = {
+ online: { label: '云端在线' },
+ connecting: { label: '云端连接中' },
+ offline: { label: '云端离线' },
+ unknown: { label: '云端状态未知' },
+}
+
+function resolveCloudLinkState(value) {
+ if (value === true || value === 'online') return 'online'
+ if (value === false || value === 'offline') return 'offline'
+ if (value === 'connecting') return 'connecting'
+ return 'unknown'
+}
+
+export function CloudLinkIndicator({ status }) {
+ const state = resolveCloudLinkState(status)
+ const label = CLOUD_LINK_STATES[state].label
+ const accessibleLabel = `云端连接状态:${label}`
+
+ return (
+
+
+ {label}
+
+ )
+}
+
+function MetricPill({ tone, label, value, colors }) {
+ return (
+
+
+ {label}
+ {value}
+
+ )
+}
+
+export function StatusBar({ cpu, gpu, mem, alertCount, online, onOpenAlerts, theme = 'light', deviceLabel, DEVICE, loginUser, onLogout }) {
const now = useClock();
const hh = String(now.getHours()).padStart(2, '0');
const mm = String(now.getMinutes()).padStart(2, '0');
@@ -30,13 +78,6 @@ export function StatusBar({ cpu, gpu, mem, alertCount, online, lastSync, onOpenA
alertBg: 'rgba(245,158,11,0.18)',
alertFg: '#fbbf24',
alertBd: 'rgba(245,158,11,0.45)',
- cloudOnBg: 'rgba(16,185,129,0.16)',
- cloudOnFg: '#34d399',
- cloudOnBd: 'rgba(16,185,129,0.4)',
- cloudOffBg: 'rgba(239,68,68,0.16)',
- cloudOffFg: '#fca5a5',
- cloudOffBd: 'rgba(239,68,68,0.4)',
- cloudSyncFg: 'rgba(241,245,249,0.55)',
} : {
bar: 'rgba(255,255,255,0.85)',
barBd: 'rgba(226,232,240,0.7)',
@@ -52,31 +93,12 @@ export function StatusBar({ cpu, gpu, mem, alertCount, online, lastSync, onOpenA
alertBg: '#fef3c7',
alertFg: '#b45309',
alertBd: '#fde68a',
- cloudOnBg: '#ecfdf5',
- cloudOnFg: '#047857',
- cloudOnBd: '#a7f3d0',
- cloudOffBg: '#fef2f2',
- cloudOffFg: '#b91c1c',
- cloudOffBd: '#fecaca',
- cloudSyncFg: T.ink3,
};
- const Pill = ({ tone, label, value }) => (
-
-
- {label}
- {value}
-
- );
+
return (
-
{/* Left: device identity (user menu 在右侧 line 169 LF 2026-06-21) */}
-
-
+
E
-
-
+
+
{deviceLabel || DEVICE.name}
- {DEVICE.dept}
{/* chevDown 删除 — 装饰但不触发下拉是误导 (LF 2026-06-21) */}
-
+
{DEVICE.site}
·
{DEVICE.sn}
@@ -114,11 +136,11 @@ export function StatusBar({ cpu, gpu, mem, alertCount, online, lastSync, onOpenA
{/* Center: health pills */}
-
-
-
-
-
+
+
+
+
+
{/* Right: cloud + time */}
-
-
-
- {online ? '云端在线' : '云端离线'}
- ·
- 同步 {lastSync}
-
-
+
+
-