-
+
我的书库
diff --git a/apps/desktop/src/pages/MemberBenefits.tsx b/apps/desktop/src/pages/MemberBenefits.tsx
index dd3e56f3..71cf0bb9 100644
--- a/apps/desktop/src/pages/MemberBenefits.tsx
+++ b/apps/desktop/src/pages/MemberBenefits.tsx
@@ -282,7 +282,7 @@ export default function MemberBenefits() {
-
+
会员特权
diff --git a/apps/desktop/src/pages/MemberDetail.tsx b/apps/desktop/src/pages/MemberDetail.tsx
index 3479f411..374ad386 100644
--- a/apps/desktop/src/pages/MemberDetail.tsx
+++ b/apps/desktop/src/pages/MemberDetail.tsx
@@ -44,7 +44,7 @@ export default function MemberDetail() {
-
我的会员
+
我的会员
感谢您对 BookDock 的支持
diff --git a/apps/desktop/src/pages/Notes.tsx b/apps/desktop/src/pages/Notes.tsx
index f9548347..776274f6 100644
--- a/apps/desktop/src/pages/Notes.tsx
+++ b/apps/desktop/src/pages/Notes.tsx
@@ -151,7 +151,7 @@ export default function Notes() {
>
-
+
{headerTitle}
diff --git a/apps/desktop/src/pages/Profile.tsx b/apps/desktop/src/pages/Profile.tsx
index 2cd6d078..04fd8339 100644
--- a/apps/desktop/src/pages/Profile.tsx
+++ b/apps/desktop/src/pages/Profile.tsx
@@ -1,6 +1,6 @@
// @ts-nocheck
import { useState, useEffect, useCallback, useMemo, useRef } from "react";
-import { useNavigate } from "react-router-dom";
+import { useNavigate, Link } from "react-router-dom";
import { getApiClient, Book, Collection } from "@bookdock/api-client";
import { useAuthStore } from "../stores/authStore";
import { getCoverImageUrl } from "../utils/network";
@@ -17,6 +17,11 @@ import {
Search,
Clock,
User,
+ Settings,
+ Crown,
+ RefreshCw,
+ Shield,
+ LogOut,
} from "lucide-react";
function formatDate(dateStr: string): string {
@@ -53,7 +58,7 @@ type TabKey = "collections" | "reading" | "favorites" | "downloads" | "notes";
export default function Profile() {
const navigate = useNavigate();
- const { user } = useAuthStore();
+ const { user, logout } = useAuthStore();
const [activeTab, setActiveTab] = useState
("collections");
const [collections, setCollections] = useState([]);
const [favorites, setFavorites] = useState([]);
@@ -67,6 +72,21 @@ export default function Profile() {
const noteLimit = 20;
const [showCreateModal, setShowCreateModal] = useState(false);
const [newCollectionName, setNewCollectionName] = useState("");
+ const [showDropdown, setShowDropdown] = useState(false);
+ const dropdownRef = useRef(null);
+
+ // Close dropdown on click outside
+ useEffect(() => {
+ const handleClickOutside = (event: MouseEvent) => {
+ if (dropdownRef.current && !dropdownRef.current.contains(event.target as Node)) {
+ setShowDropdown(false);
+ }
+ };
+ if (showDropdown) {
+ document.addEventListener("mousedown", handleClickOutside);
+ }
+ return () => document.removeEventListener("mousedown", handleClickOutside);
+ }, [showDropdown]);
const fetchData = useCallback(async () => {
setIsLoading(true);
@@ -442,14 +462,69 @@ export default function Profile() {
{/* Header */}
-
我的
+
+
+
+ {showDropdown && (
+
+
+
setShowDropdown(false)}
+ className="flex items-center gap-2 px-4 py-2.5 text-sm text-gray-700 dark:text-gray-200 hover:bg-gray-50 dark:hover:bg-gray-700 transition-colors"
+ >
+
+
会员中心
+
+
setShowDropdown(false)}
+ className="flex items-center gap-2 px-4 py-2.5 text-sm text-gray-700 dark:text-gray-200 hover:bg-gray-50 dark:hover:bg-gray-700 transition-colors"
+ >
+
+
笔记
+
+ {user?.role === "admin" && (
+
setShowDropdown(false)}
+ className="flex items-center gap-2 px-4 py-2.5 text-sm text-gray-700 dark:text-gray-200 hover:bg-gray-50 dark:hover:bg-gray-700 transition-colors"
+ >
+
+
后台管理
+
+ )}
+
+
+
+ )}
+
+
我的
+
diff --git a/apps/desktop/src/pages/Recommend.tsx b/apps/desktop/src/pages/Recommend.tsx
index f8029a64..052f2076 100644
--- a/apps/desktop/src/pages/Recommend.tsx
+++ b/apps/desktop/src/pages/Recommend.tsx
@@ -113,7 +113,7 @@ export default function Recommend() {
return (
{/* Header */}
-
+
推荐
diff --git a/apps/desktop/src/pages/Settings.tsx b/apps/desktop/src/pages/Settings.tsx
index 6241b831..17638197 100644
--- a/apps/desktop/src/pages/Settings.tsx
+++ b/apps/desktop/src/pages/Settings.tsx
@@ -472,7 +472,7 @@ export default function Settings() {
return (
-
设置
+ 设置
{/* Profile Section */}