From db9700aebd10ab02128b8c5f5a7f6eebe018a7f6 Mon Sep 17 00:00:00 2001 From: yoma Date: Wed, 15 Jul 2026 22:06:22 +0800 Subject: [PATCH] fix settings dark theme styles --- apps/web/src/components/SettingsPane.tsx | 70 ++++++++++--------- .../components/settings/DataExportCard.tsx | 4 +- .../components/settings/SystemInfoCard.tsx | 8 +-- .../settings/UserManagementCard.tsx | 8 +-- 4 files changed, 46 insertions(+), 44 deletions(-) diff --git a/apps/web/src/components/SettingsPane.tsx b/apps/web/src/components/SettingsPane.tsx index 4c61be4a..637b5bf7 100644 --- a/apps/web/src/components/SettingsPane.tsx +++ b/apps/web/src/components/SettingsPane.tsx @@ -39,8 +39,10 @@ interface SettingsPaneProps { onShowGuide?: () => void; } +// Slate and brand color variables already switch values with the root theme. +// Keep this pane on the base utilities so dark variants do not invert them twice. const SettingsGroup = ({ children }: { children: ReactNode }) => ( -
+
{children}
); @@ -79,10 +81,10 @@ export const SettingsPane = ({ key: "general", label: t("settings.tabs.general"), icon: SlidersHorizontal, - colorClass: "text-emerald-700 dark:text-emerald-400", - bgColorClass: "bg-emerald-50/80 dark:bg-emerald-950/40", - hoverColorClass: "hover:bg-emerald-50/40 dark:hover:bg-emerald-950/20", - iconColorClass: "text-emerald-600 dark:text-emerald-400", + colorClass: "text-emerald-700", + bgColorClass: "bg-emerald-50/80", + hoverColorClass: "hover:bg-emerald-50/40", + iconColorClass: "text-emerald-600", }, ...(isOwner ? [ @@ -90,10 +92,10 @@ export const SettingsPane = ({ key: "users" as const, label: t("users.title"), icon: Users, - colorClass: "text-emerald-700 dark:text-emerald-400", - bgColorClass: "bg-emerald-50/80 dark:bg-emerald-950/40", - hoverColorClass: "hover:bg-emerald-50/40 dark:hover:bg-emerald-950/20", - iconColorClass: "text-emerald-600 dark:text-emerald-400", + colorClass: "text-emerald-700", + bgColorClass: "bg-emerald-50/80", + hoverColorClass: "hover:bg-emerald-50/40", + iconColorClass: "text-emerald-600", }, ] : []), @@ -101,28 +103,28 @@ export const SettingsPane = ({ key: "data", label: t("settings.tabs.data"), icon: Database, - colorClass: "text-emerald-700 dark:text-emerald-400", - bgColorClass: "bg-emerald-50/80 dark:bg-emerald-950/40", - hoverColorClass: "hover:bg-emerald-50/40 dark:hover:bg-emerald-950/20", - iconColorClass: "text-emerald-600 dark:text-emerald-400", + colorClass: "text-emerald-700", + bgColorClass: "bg-emerald-50/80", + hoverColorClass: "hover:bg-emerald-50/40", + iconColorClass: "text-emerald-600", }, { key: "ai", label: t("settings.tabs.ai"), icon: Sparkles, - colorClass: "text-emerald-700 dark:text-emerald-400", - bgColorClass: "bg-emerald-50/80 dark:bg-emerald-950/40", - hoverColorClass: "hover:bg-emerald-50/40 dark:hover:bg-emerald-950/20", - iconColorClass: "text-emerald-600 dark:text-emerald-400", + colorClass: "text-emerald-700", + bgColorClass: "bg-emerald-50/80", + hoverColorClass: "hover:bg-emerald-50/40", + iconColorClass: "text-emerald-600", }, { key: "account", label: t("settings.tabs.account"), icon: Shield, - colorClass: "text-emerald-700 dark:text-emerald-400", - bgColorClass: "bg-emerald-50/80 dark:bg-emerald-950/40", - hoverColorClass: "hover:bg-emerald-50/40 dark:hover:bg-emerald-950/20", - iconColorClass: "text-emerald-600 dark:text-emerald-400", + colorClass: "text-emerald-700", + bgColorClass: "bg-emerald-50/80", + hoverColorClass: "hover:bg-emerald-50/40", + iconColorClass: "text-emerald-600", }, ]; @@ -153,9 +155,9 @@ export const SettingsPane = ({ const HeaderIconColorClass = (() => { if (activeMobileTab !== null) { const activeItem = tabItems.find((item) => item.key === activeMobileTab); - return activeItem ? activeItem.iconColorClass : "text-emerald-700 dark:text-emerald-400"; + return activeItem ? activeItem.iconColorClass : "text-emerald-700"; } - return "text-emerald-700 dark:text-emerald-400"; + return "text-emerald-700"; })(); const renderTabContent = (key: TabKey) => { @@ -205,8 +207,8 @@ export const SettingsPane = ({ }; return ( -
-
+
+

- {getHeaderTitle()} + {getHeaderTitle()}

-
+
{/* 桌面端布局:双栏 */}
{/* 左侧垂直 Tab 栏 */} @@ -245,10 +247,10 @@ export const SettingsPane = ({ "flex items-center gap-3 px-3.5 py-2.5 rounded-xl text-sm font-semibold transition-all duration-150 text-left w-full", isSelected ? `${item.colorClass} ${item.bgColorClass}` - : "text-slate-600 hover:text-slate-900 dark:text-slate-400 dark:hover:text-slate-200 hover:bg-slate-200/50 dark:hover:bg-slate-800/50" + : "text-slate-600 hover:bg-slate-200/50 hover:text-slate-900" )} > - + {item.label} ); @@ -268,7 +270,7 @@ export const SettingsPane = ({ {activeMobileTab === null ? ( /* 分类主菜单 */
-
+
{tabItems.map((item) => { const Icon = item.icon; return ( @@ -276,15 +278,15 @@ export const SettingsPane = ({ key={item.key} type="button" onClick={() => setActiveMobileTab(item.key)} - className="flex items-center justify-between gap-4 p-4 text-left hover:bg-slate-50/50 dark:hover:bg-slate-900/40 transition-colors w-full" + className="flex w-full items-center justify-between gap-4 p-4 text-left transition-colors hover:bg-slate-50/50" >
- {item.label} + {item.label}
- + ); })} diff --git a/apps/web/src/components/settings/DataExportCard.tsx b/apps/web/src/components/settings/DataExportCard.tsx index 157e80da..11aa813a 100644 --- a/apps/web/src/components/settings/DataExportCard.tsx +++ b/apps/web/src/components/settings/DataExportCard.tsx @@ -29,7 +29,7 @@ type OperationKind = "export" | "import"; const Progress = ({ progress }: { progress: EdgeEverZipProgress }) => { const percentage = progress.total > 0 ? Math.round((progress.completed / progress.total) * 100) : 0; return ( -
+
); @@ -146,7 +146,7 @@ export const DataExportCard = () => { -
+
{t("dataExport.description")}
diff --git a/apps/web/src/components/settings/SystemInfoCard.tsx b/apps/web/src/components/settings/SystemInfoCard.tsx index 672a13f5..2fac0721 100644 --- a/apps/web/src/components/settings/SystemInfoCard.tsx +++ b/apps/web/src/components/settings/SystemInfoCard.tsx @@ -125,7 +125,7 @@ export const SystemInfoCard = () => {
{infoItems.map((item) => ( -
-
{item.label}
-
+
+
{item.label}
+
{item.value}
diff --git a/apps/web/src/components/settings/UserManagementCard.tsx b/apps/web/src/components/settings/UserManagementCard.tsx index 41716064..d1205e02 100644 --- a/apps/web/src/components/settings/UserManagementCard.tsx +++ b/apps/web/src/components/settings/UserManagementCard.tsx @@ -87,17 +87,17 @@ export const UserManagementCard = () => { {usersQuery.isLoading ?

{t("users.loading")}

: null} {usersQuery.data?.users.map((user) => ( -
+
-

{user.displayName || user.username}

-

@{user.username} · {t(`users.roles.${user.role}`)}

+

{user.displayName || user.username}

+

@{user.username} · {t(`users.roles.${user.role}`)}

{user.role !== "owner" ? ( -