From 31f56f7c86663cf4f733239e2b8bdeddd6c7c540 Mon Sep 17 00:00:00 2001 From: Jason Date: Thu, 16 Oct 2025 16:39:03 +0800 Subject: [PATCH] fix: add scrollbars to provider dialogs and simplify theme toggle ## Changes ### Add scrollbars to provider dialogs - **AddProviderDialog.tsx**: Add max-h-[90vh], flex flex-col layout, and scrollable content wrapper - **EditProviderDialog.tsx**: Add max-h-[90vh], flex flex-col layout, and scrollable content wrapper - Both dialogs now follow the same scrolling pattern as other dialogs in the app - Wrap ProviderForm in `
` for proper scrolling ### Simplify theme toggle - **mode-toggle.tsx**: Change from dropdown menu to direct toggle button - Remove DropdownMenu and related imports - Click now directly toggles between light and dark mode - Simpler UX: one click to switch themes instead of opening a menu - Remove "system" theme option from quick toggle (still available in settings if needed) ## Benefits - **Consistent scrolling**: All dialogs now have proper scroll behavior when content exceeds viewport height - **Better UX**: Theme toggle is faster and more intuitive with direct click - **Code simplification**: Removed unnecessary dropdown menu complexity from theme toggle All TypeScript type checks and Prettier formatting checks pass. --- src/components/mode-toggle.tsx | 54 +++++-------------- .../providers/AddProviderDialog.tsx | 16 +++--- .../providers/EditProviderDialog.tsx | 26 ++++----- 3 files changed, 37 insertions(+), 59 deletions(-) diff --git a/src/components/mode-toggle.tsx b/src/components/mode-toggle.tsx index 95a81a1..a099afd 100644 --- a/src/components/mode-toggle.tsx +++ b/src/components/mode-toggle.tsx @@ -1,55 +1,29 @@ import { Moon, Sun } from "lucide-react"; import { useTranslation } from "react-i18next"; import { Button } from "@/components/ui/button"; -import { - DropdownMenu, - DropdownMenuContent, - DropdownMenuLabel, - DropdownMenuRadioGroup, - DropdownMenuRadioItem, - DropdownMenuSeparator, - DropdownMenuTrigger, -} from "@/components/ui/dropdown-menu"; import { useTheme } from "@/components/theme-provider"; export function ModeToggle() { const { theme, setTheme } = useTheme(); const { t } = useTranslation(); - const handleChange = (value: string) => { - if (value === "light" || value === "dark" || value === "system") { - setTheme(value); + const toggleTheme = () => { + // 如果当前是 dark 或 system(且系统是暗色),切换到 light + // 否则切换到 dark + if (theme === "dark") { + setTheme("light"); + } else { + setTheme("dark"); } }; return ( - - - - - - - {t("common.theme", { defaultValue: "主题" })} - - - - - {t("common.lightMode", { defaultValue: "浅色" })} - - - {t("common.darkMode", { defaultValue: "深色" })} - - - {t("common.systemMode", { defaultValue: "跟随系统" })} - - - - + ); } diff --git a/src/components/providers/AddProviderDialog.tsx b/src/components/providers/AddProviderDialog.tsx index b49c05d..e8ddfe0 100644 --- a/src/components/providers/AddProviderDialog.tsx +++ b/src/components/providers/AddProviderDialog.tsx @@ -56,7 +56,7 @@ export function AddProviderDialog({ return ( - + {submitLabel} @@ -66,12 +66,14 @@ export function AddProviderDialog({ - onOpenChange(false)} - /> +
+ onOpenChange(false)} + /> +
); diff --git a/src/components/providers/EditProviderDialog.tsx b/src/components/providers/EditProviderDialog.tsx index e620455..c10955b 100644 --- a/src/components/providers/EditProviderDialog.tsx +++ b/src/components/providers/EditProviderDialog.tsx @@ -60,7 +60,7 @@ export function EditProviderDialog({ return ( - + {t("provider.editProvider", { defaultValue: "编辑供应商" })} @@ -72,17 +72,19 @@ export function EditProviderDialog({ - onOpenChange(false)} - initialData={{ - name: provider.name, - websiteUrl: provider.websiteUrl, - settingsConfig: provider.settingsConfig, - }} - /> +
+ onOpenChange(false)} + initialData={{ + name: provider.name, + websiteUrl: provider.websiteUrl, + settingsConfig: provider.settingsConfig, + }} + /> +
);