diff --git a/web/src/components/theme-provider.tsx b/web/src/components/theme-provider.tsx index f6f214cc9..a5b6e533b 100644 --- a/web/src/components/theme-provider.tsx +++ b/web/src/components/theme-provider.tsx @@ -1,6 +1,6 @@ import React, { createContext, useContext, useEffect, useState } from 'react'; -type Theme = 'dark' | 'light'; +type Theme = 'dark' | 'light' | 'system'; type ThemeProviderProps = { children: React.ReactNode; diff --git a/web/src/hooks/logic-hooks/navigate-hooks.ts b/web/src/hooks/logic-hooks/navigate-hooks.ts index 3ad02f081..51d2d51b4 100644 --- a/web/src/hooks/logic-hooks/navigate-hooks.ts +++ b/web/src/hooks/logic-hooks/navigate-hooks.ts @@ -17,5 +17,14 @@ export const useNavigatePage = () => { navigate(Routes.Home); }, [navigate]); - return { navigateToDatasetList, navigateToDataset, navigateToHome }; + const navigateToProfile = useCallback(() => { + navigate(Routes.ProfileSetting); + }, [navigate]); + + return { + navigateToDatasetList, + navigateToDataset, + navigateToHome, + navigateToProfile, + }; }; diff --git a/web/src/layouts/next-header.tsx b/web/src/layouts/next-header.tsx index 3692d794b..ca934edbe 100644 --- a/web/src/layouts/next-header.tsx +++ b/web/src/layouts/next-header.tsx @@ -25,8 +25,7 @@ export function Header() { const { t } = useTranslate('header'); const { pathname } = useLocation(); const navigate = useNavigateWithFromState(); - // const [currentPath, setCurrentPath] = useState(Routes.Home); - const { navigateToHome } = useNavigatePage(); + const { navigateToHome, navigateToProfile } = useNavigatePage(); const tagsData = useMemo( () => [ @@ -65,7 +64,6 @@ export function Header() { const handleChange = (path: SegmentedValue) => { navigate(path as Routes); - // setCurrentPath(path as Routes); }; const handleLogoClick = useCallback(() => { @@ -121,7 +119,10 @@ export function Header() { - + CN diff --git a/web/src/pages/demo.tsx b/web/src/pages/demo.tsx deleted file mode 100644 index 43297a293..000000000 --- a/web/src/pages/demo.tsx +++ /dev/null @@ -1,49 +0,0 @@ -import { useTheme } from '@/components/theme-provider'; -import { Button } from '@/components/ui/button'; -import { - DropdownMenu, - DropdownMenuContent, - DropdownMenuItem, - DropdownMenuTrigger, -} from '@/components/ui/dropdown-menu'; -import { Moon, Sun } from 'lucide-react'; - -export function ModeToggle() { - const { setTheme } = useTheme(); - - return ( - - - - - - setTheme('light')}> - Light - - setTheme('dark')}> - Dark - - setTheme('system')}> - System - - - - ); -} - -const Demo = () => { - return ( -
-
- -
- -
- ); -}; - -export default Demo; diff --git a/web/src/pages/profile-setting/index.tsx b/web/src/pages/profile-setting/index.tsx index 55ad2053b..250b01dab 100644 --- a/web/src/pages/profile-setting/index.tsx +++ b/web/src/pages/profile-setting/index.tsx @@ -1,14 +1,17 @@ import { Button } from '@/components/ui/button'; +import { useNavigatePage } from '@/hooks/logic-hooks/navigate-hooks'; import { ArrowLeft } from 'lucide-react'; import { Outlet } from 'umi'; import { SideBar } from './sidebar'; export default function ProfileSetting() { + const { navigateToHome } = useNavigatePage(); + return (
-
diff --git a/web/src/pages/profile-setting/sidebar/index.tsx b/web/src/pages/profile-setting/sidebar/index.tsx index 21a6ad2f4..a697d24cd 100644 --- a/web/src/pages/profile-setting/sidebar/index.tsx +++ b/web/src/pages/profile-setting/sidebar/index.tsx @@ -1,3 +1,4 @@ +import { useTheme } from '@/components/theme-provider'; import { Button } from '@/components/ui/button'; import { Label } from '@/components/ui/label'; import { Switch } from '@/components/ui/switch'; @@ -13,6 +14,7 @@ import { LogOut, User, } from 'lucide-react'; +import { useCallback } from 'react'; import { useHandleMenuClick } from './hooks'; const menuItems = [ @@ -49,35 +51,45 @@ const menuItems = [ export function SideBar() { const pathName = useSecondPathName(); const { handleMenuClick } = useHandleMenuClick(); + const { setTheme } = useTheme(); + + const handleThemeChange = useCallback( + (checked: boolean) => { + setTheme(checked ? 'dark' : 'light'); + }, + [setTheme], + ); return ( -