From d87b3268fbaab3773245928963e997f3fdd6a59c Mon Sep 17 00:00:00 2001 From: NanamiAdmin Date: Mon, 13 Apr 2026 18:41:09 +0800 Subject: [PATCH] chore(ui): redesign interface with SF Pro fonts and modern styling - Update theme variables and styles for light/dark modes - Implement SF Pro font family across all components - Redesign cards, buttons, forms, and scrollbars - Add backdrop filters and improve visual hierarchy - Optimize spacing, typography, and interactive elements --- .gitignore | 3 +- src/App.vue | 8 +- src/components/SideBar.vue | 99 +++++---- src/components/TopBar.vue | 252 +++++++++++++---------- src/styles/common.css | 388 +++++++++++++++++------------------ src/styles/themes.css | 97 +++++++-- src/views/Home.vue | 13 +- src/views/InstanceDetail.vue | 238 ++++++++++++++++----- src/views/Instances.vue | 44 ++-- src/views/Login.vue | 72 ++++--- src/views/Logs.vue | 47 ++--- src/views/Monitor.vue | 12 +- src/views/Sessions.vue | 17 +- src/views/SystemInfo.vue | 1 + src/views/Users.vue | 36 +--- vite.config.js | 2 +- 16 files changed, 797 insertions(+), 532 deletions(-) diff --git a/.gitignore b/.gitignore index 2e1814b..5c06b72 100644 --- a/.gitignore +++ b/.gitignore @@ -22,8 +22,9 @@ docs/_book # TODO: where does this rule come from? test/ +dist/ node_modules/ - +design.md agent.md api-backend.md \ No newline at end of file diff --git a/src/App.vue b/src/App.vue index bc990bc..5ce18dc 100644 --- a/src/App.vue +++ b/src/App.vue @@ -34,10 +34,15 @@ export default { } body { - font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif; + font-family: 'SF Pro Text', 'SF Pro Icons', 'Helvetica Neue', Helvetica, Arial, sans-serif; + font-size: 17px; + line-height: 1.47; + letter-spacing: -0.374px; background-color: var(--bg-color); color: var(--text-color); transition: background-color 0.3s, color 0.3s; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; } #app { @@ -48,5 +53,6 @@ body { mark { background-color: var(--mark-bg); padding: 0 2px; + border-radius: 2px; } diff --git a/src/components/SideBar.vue b/src/components/SideBar.vue index 4d6fb12..f40e1a7 100644 --- a/src/components/SideBar.vue +++ b/src/components/SideBar.vue @@ -98,123 +98,141 @@ export default { .sidebar { position: fixed; left: 0; - top: 64px; + top: 48px; bottom: 0; width: 240px; - background: var(--sidebar-bg); + background: rgba(0, 0, 0, 0.8); + backdrop-filter: saturate(180%) blur(20px); + -webkit-backdrop-filter: saturate(180%) blur(20px); overflow-y: auto; display: flex; flex-direction: column; } .sidebar::-webkit-scrollbar { - width: 8px; + width: 4px; } .sidebar::-webkit-scrollbar-track { - background: var(--bg-color); - border-radius: 0 8px 8px 0; + background: transparent; } .sidebar::-webkit-scrollbar-thumb { - background: var(--primary-color); - border-radius: 4px; + background: rgba(255, 255, 255, 0.15); + border-radius: 2px; } .sidebar::-webkit-scrollbar-thumb:hover { - background: var(--sidebar-active-bg); + background: rgba(255, 255, 255, 0.3); } .menu { - padding: 16px 0; + padding: 8px 0; flex: 1; } .menu-item { + font-family: 'SF Pro Text', 'SF Pro Icons', 'Helvetica Neue', Helvetica, Arial, sans-serif; display: flex; align-items: center; padding: 12px 24px; - color: var(--sidebar-text); + color: rgba(255, 255, 255, 0.8); text-decoration: none; transition: all 0.3s; - margin: 4px 12px; - border-radius: 6px; + margin: 2px 12px; + border-radius: 8px; + font-size: 15px; + line-height: 1.29; + letter-spacing: -0.224px; + font-weight: 400; } .menu-item:hover { - color: var(--sidebar-text-hover); - background: var(--sidebar-bg-hover); + color: #ffffff; + background: rgba(255, 255, 255, 0.1); } .menu-item.active { - color: var(--sidebar-text-hover); - background: var(--sidebar-active-bg); + color: #ffffff; + background: var(--primary-color); } .menu-icon { - font-size: 18px; + font-size: 14px; margin-right: 12px; - width: 24px; + width: 20px; text-align: center; } .menu-text { font-size: 14px; - font-weight: 500; + font-weight: 400; + line-height: 1.29; + letter-spacing: -0.224px; } .theme-toggle { - padding: 16px; - border-top: 1px solid rgba(255, 255, 255, 0.1); + padding: 12px; + border-top: 1px solid rgba(255, 255, 255, 0.08); } .theme-button { + font-family: 'SF Pro Text', 'SF Pro Icons', 'Helvetica Neue', Helvetica, Arial, sans-serif; width: 100%; display: flex; align-items: center; justify-content: center; - padding: 10px 16px; - background: rgba(255, 255, 255, 0.1); - color: var(--sidebar-text); + padding: 8px 15px; + background: rgba(255, 255, 255, 0.08); + color: rgba(255, 255, 255, 0.8); border: none; - border-radius: 6px; + border-radius: 8px; cursor: pointer; transition: all 0.3s; font-size: 14px; + line-height: 1.29; + letter-spacing: -0.224px; } .theme-button:hover { - background: rgba(255, 255, 255, 0.2); - color: var(--sidebar-text-hover); + background: rgba(255, 255, 255, 0.15); + color: #ffffff; } .theme-icon { - font-size: 16px; + font-size: 14px; margin-right: 8px; } .theme-text { - font-weight: 500; + font-weight: 400; } .status-info { - padding: 16px; - border-top: 1px solid rgba(255, 255, 255, 0.1); + padding: 12px; + border-top: 1px solid rgba(255, 255, 255, 0.08); } .status-item { display: flex; align-items: center; - gap: 8px; + gap: 12px; margin-bottom: 8px; + font-family: 'SF Pro Text', 'SF Pro Icons', 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 14px; - color: var(--sidebar-text); - font-weight: 500; + line-height: 1.29; + letter-spacing: -0.224px; + color: rgba(255, 255, 255, 0.8); + font-weight: 400; +} + +.status-item p { + margin: 0; } .status-dot { - width: 8px; - height: 8px; + width: 10px; + height: 10px; border-radius: 50%; background: #ff4d4f; } @@ -224,8 +242,11 @@ export default { } .status-text { - font-size: 14px; - color: var(--sidebar-text); - font-weight: 500; + font-family: 'SF Pro Text', 'SF Pro Icons', 'Helvetica Neue', Helvetica, Arial, sans-serif; + font-size: 12px; + line-height: 1.33; + letter-spacing: -0.12px; + color: rgba(255, 255, 255, 0.48); + font-weight: 400; } diff --git a/src/components/TopBar.vue b/src/components/TopBar.vue index 69945ed..6511304 100644 --- a/src/components/TopBar.vue +++ b/src/components/TopBar.vue @@ -19,58 +19,58 @@ v{{ softwareInfo.Version }}
- -
- - -
+ -
+