;
@@ -27,16 +26,12 @@ type UserStatusActionsProps = {
gitHubClassName?: string;
gitHubStyle?: CSSProperties;
versionStyle?: CSSProperties;
- userLabel?: ReactNode;
iconStyle?: CSSProperties;
};
export function UserStatusActions({
- onOpenConfig,
showConfig = true,
- userName,
- initial,
- menuItems,
+ onOpenShortcuts,
accountOpen,
onAccountOpenChange,
accountRef,
@@ -46,15 +41,23 @@ export function UserStatusActions({
gitHubClassName,
gitHubStyle,
versionStyle,
- userLabel,
iconStyle,
}: UserStatusActionsProps) {
const theme = useThemeStore((state) => state.theme);
const setTheme = useThemeStore((state) => state.setTheme);
- const storedUserName = useUserStore((state) => state.user?.username);
- const resolvedUserName = userName || storedUserName;
- const avatarText = initial || (resolvedUserName?.trim()[0] || "U").toUpperCase();
+ const user = useUserStore((state) => state.user);
+ const logout = useUserStore((state) => state.clearSession);
+ const openConfigDialog = useConfigStore((state) => state.openConfigDialog);
+ const userName = user?.username || "用户";
+ const avatarText = (userName.trim()[0] || "U").toUpperCase();
const naturalIconClass = "inline-flex size-8 shrink-0 items-center justify-center text-stone-600 transition hover:text-stone-950 dark:text-stone-300 dark:hover:text-white [&_svg]:size-4";
+ const menuItems: ItemType[] = [
+ { key: "user", disabled: true, label: {userName} },
+ ...(user?.role === "admin" ? [{ key: "admin", icon: , label: 管理后台 }] : []),
+ ...(onOpenShortcuts ? [{ key: "shortcuts", icon: , label: "快捷键", onClick: onOpenShortcuts }] : []),
+ { type: "divider" },
+ { key: "logout", icon: , label: "退出登录", onClick: logout },
+ ];
return (
@@ -63,7 +66,7 @@ export function UserStatusActions({
type="button"
className={naturalIconClass}
style={iconStyle}
- onClick={onOpenConfig}
+ onClick={() => openConfigDialog(false)}
aria-label="配置"
title="配置"
>
@@ -96,7 +99,7 @@ export function UserStatusActions({
style={avatarStyle}
aria-label="账户菜单"
>
- {userLabel ?? avatarText}
+ {avatarText}
diff --git a/web/src/lib/navigation-tools.ts b/web/src/constant/navigation-tools.ts
similarity index 100%
rename from web/src/lib/navigation-tools.ts
rename to web/src/constant/navigation-tools.ts