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 }}
-
-
{{ username.charAt(0).toUpperCase() }}
- {{ username }} -
-
- - -
+
+
{{ username.charAt(0).toUpperCase() }}
+ {{ username }}
-
+