diff --git a/frontend/src/App.css b/frontend/src/App.css index b31ff55..6d1d39c 100644 --- a/frontend/src/App.css +++ b/frontend/src/App.css @@ -1710,34 +1710,23 @@ body { color: var(--color-primary-hover); } -/* ---- User badge in header ---- */ +/* ---- Logout button in config panel ---- */ -.header__user { - display: flex; - align-items: center; - gap: 8px; - font-size: 0.78rem; - color: var(--color-text-muted); -} - -.header__username { - font-weight: 500; - color: var(--color-text); -} - -.header__logout-btn { - background: none; - border: 1px solid var(--color-border); - color: var(--color-text-muted); - font-size: 0.72rem; - font-weight: 500; - padding: 4px 10px; +.config-logout-btn { + width: 100%; + margin-top: 12px; + padding: 9px 0; + border: 1px solid rgba(248, 113, 113, 0.25); border-radius: var(--radius-sm); + background: rgba(248, 113, 113, 0.08); + color: var(--color-error); + font-size: 0.82rem; + font-weight: 600; cursor: pointer; transition: all var(--transition-fast); } -.header__logout-btn:hover { - border-color: var(--color-error); - color: var(--color-error); +.config-logout-btn:hover { + background: rgba(248, 113, 113, 0.15); + border-color: rgba(248, 113, 113, 0.4); } diff --git a/frontend/src/App.tsx b/frontend/src/App.tsx index fd123bb..d0e9473 100644 --- a/frontend/src/App.tsx +++ b/frontend/src/App.tsx @@ -234,12 +234,6 @@ function AppContent() { {tr("app.title")}
-
- {user?.username} - -
{isConnected ? tr("status.connected") : connectionStatus === "connecting" ? tr("status.connecting") : tr("status.disconnected")} @@ -273,8 +267,10 @@ function AppContent() { setShowConfig(false)} /> )} diff --git a/frontend/src/components/ConfigPanel/index.tsx b/frontend/src/components/ConfigPanel/index.tsx index 9523ec6..031106e 100644 --- a/frontend/src/components/ConfigPanel/index.tsx +++ b/frontend/src/components/ConfigPanel/index.tsx @@ -9,12 +9,14 @@ import type { SessionConfig, Theme } from "../../types"; interface ConfigPanelProps { config: SessionConfig; theme: Theme; + username?: string; onUpdate: (partial: Partial) => void; onThemeChange: (theme: Theme) => void; + onLogout?: () => void; onClose: () => void; } -export function ConfigPanel({ config, theme, onUpdate, onThemeChange, onClose }: ConfigPanelProps) { +export function ConfigPanel({ config, theme, username, onUpdate, onThemeChange, onLogout, onClose }: ConfigPanelProps) { const { t } = useI18n(); return ( @@ -88,6 +90,24 @@ export function ConfigPanel({ config, theme, onUpdate, onThemeChange, onClose }:
+ + {username && onLogout && ( +
+
{t("settings.account")}
+
+
+ {t("settings.account.user")} + {username} +
+
+ +
+ )} diff --git a/frontend/src/lib/i18n/en-US.ts b/frontend/src/lib/i18n/en-US.ts index 9f47068..835c5fa 100644 --- a/frontend/src/lib/i18n/en-US.ts +++ b/frontend/src/lib/i18n/en-US.ts @@ -145,4 +145,8 @@ export const enUS: TranslationMap = { "auth.error.usernameLength": "Username must be 3-64 characters", "auth.error.passwordLength": "Password must be 8-72 characters", "auth.logout": "Sign Out", + + // Account (in settings) + "settings.account": "Account", + "settings.account.user": "Current user", }; diff --git a/frontend/src/lib/i18n/ja-JP.ts b/frontend/src/lib/i18n/ja-JP.ts index 34abfbe..74f4764 100644 --- a/frontend/src/lib/i18n/ja-JP.ts +++ b/frontend/src/lib/i18n/ja-JP.ts @@ -145,4 +145,8 @@ export const jaJP: TranslationMap = { "auth.error.usernameLength": "ユーザー名は3〜64文字で入力してください", "auth.error.passwordLength": "パスワードは8〜72文字で入力してください", "auth.logout": "ログアウト", + + // Account (in settings) + "settings.account": "アカウント", + "settings.account.user": "現在のユーザー", }; diff --git a/frontend/src/lib/i18n/zh-CN.ts b/frontend/src/lib/i18n/zh-CN.ts index 337fc95..8fc5716 100644 --- a/frontend/src/lib/i18n/zh-CN.ts +++ b/frontend/src/lib/i18n/zh-CN.ts @@ -145,4 +145,8 @@ export const zhCN: TranslationMap = { "auth.error.usernameLength": "用户名需要 3-64 个字符", "auth.error.passwordLength": "密码需要 8-72 个字符", "auth.logout": "退出登录", + + // Account (in settings) + "settings.account": "账号", + "settings.account.user": "当前用户", };