diff --git a/src/renderer/features/search/components/go-to-commands.tsx b/src/renderer/features/search/components/go-to-commands.tsx index 78e3d7f6c..9a238464d 100644 --- a/src/renderer/features/search/components/go-to-commands.tsx +++ b/src/renderer/features/search/components/go-to-commands.tsx @@ -3,6 +3,7 @@ import { useTranslation } from 'react-i18next'; import { useNavigate } from 'react-router'; import { Command, CommandPalettePages } from '/@/renderer/features/search/components/command'; +import { openSettingsModal } from '/@/renderer/features/settings/utils/open-settings-modal'; import { AppRoute } from '/@/renderer/router/routes'; interface GoToCommandsProps { @@ -34,7 +35,14 @@ export const GoToCommands = ({ handleClose, setPages, setQuery }: GoToCommandsPr goTo(AppRoute.SEARCH)}> {t('page.sidebar.search', { postProcess: 'titleCase' })} - goTo(AppRoute.SETTINGS)}> + { + openSettingsModal(); + handleClose(); + setPages([CommandPalettePages.HOME]); + setQuery(''); + }} + > {t('page.sidebar.settings', { postProcess: 'titleCase' })} diff --git a/src/renderer/features/settings/components/settings-content.tsx b/src/renderer/features/settings/components/settings-content.tsx index a5bc6474d..6f55341e8 100644 --- a/src/renderer/features/settings/components/settings-content.tsx +++ b/src/renderer/features/settings/components/settings-content.tsx @@ -2,6 +2,7 @@ import isElectron from 'is-electron'; import { lazy } from 'react'; import { useTranslation } from 'react-i18next'; +import { LibraryContainer } from '/@/renderer/features/shared/components/library-container'; import { useSettingsStore, useSettingsStoreActions } from '/@/renderer/store/settings.store'; import { Tabs } from '/@/shared/components/tabs/tabs'; @@ -41,51 +42,53 @@ export const SettingsContent = () => { const { setSettings } = useSettingsStoreActions(); return ( -
- e && setSettings({ tab: e })} - orientation="horizontal" - value={currentTab} - variant="default" - > - - - {t('page.setting.generalTab', { postProcess: 'sentenceCase' })} - - - {t('page.setting.playbackTab', { postProcess: 'sentenceCase' })} - - - {t('page.setting.hotkeysTab', { postProcess: 'sentenceCase' })} - - {isElectron() && ( - - {t('page.setting.windowTab', { postProcess: 'sentenceCase' })} + +
+ e && setSettings({ tab: e })} + orientation="horizontal" + value={currentTab} + variant="default" + > + + + {t('page.setting.generalTab', { postProcess: 'sentenceCase' })} - )} - - {t('page.setting.advanced', { postProcess: 'sentenceCase' })} - - - - - - - - - - - - {isElectron() && ( - - + + {t('page.setting.playbackTab', { postProcess: 'sentenceCase' })} + + + {t('page.setting.hotkeysTab', { postProcess: 'sentenceCase' })} + + {isElectron() && ( + + {t('page.setting.windowTab', { postProcess: 'sentenceCase' })} + + )} + + {t('page.setting.advanced', { postProcess: 'sentenceCase' })} + + + + - )} - - - - -
+ + + + + + + {isElectron() && ( + + + + )} + + + +
+
+ ); }; diff --git a/src/renderer/features/settings/components/settings-modal.tsx b/src/renderer/features/settings/components/settings-modal.tsx new file mode 100644 index 000000000..cd8ce04cd --- /dev/null +++ b/src/renderer/features/settings/components/settings-modal.tsx @@ -0,0 +1,16 @@ +import { useState } from 'react'; + +import { SettingsContent } from '/@/renderer/features/settings/components/settings-content'; +import { SettingsHeader } from '/@/renderer/features/settings/components/settings-header'; +import { SettingSearchContext } from '/@/renderer/features/settings/context/search-context'; + +export const SettingsModal = () => { + const [search, setSearch] = useState(''); + + return ( + + + + + ); +}; diff --git a/src/renderer/features/settings/utils/open-settings-modal.ts b/src/renderer/features/settings/utils/open-settings-modal.ts new file mode 100644 index 000000000..8a732add8 --- /dev/null +++ b/src/renderer/features/settings/utils/open-settings-modal.ts @@ -0,0 +1,9 @@ +import { openContextModal } from '@mantine/modals'; + +export const openSettingsModal = () => { + openContextModal({ + fullScreen: true, + innerProps: {}, + modalKey: 'settings', + }); +}; diff --git a/src/renderer/features/titlebar/components/app-menu.tsx b/src/renderer/features/titlebar/components/app-menu.tsx index 5d1ac8d4f..2d4dc90c9 100644 --- a/src/renderer/features/titlebar/components/app-menu.tsx +++ b/src/renderer/features/titlebar/components/app-menu.tsx @@ -5,7 +5,7 @@ import { Link, useNavigate } from 'react-router'; import packageJson from '../../../../../package.json'; -import { AppRoute } from '/@/renderer/router/routes'; +import { openSettingsModal } from '/@/renderer/features/settings/utils/open-settings-modal'; import { useAppStore, useAppStoreActions, useSidebarStore } from '/@/renderer/store'; import { DropdownMenu, MenuItemProps } from '/@/shared/components/dropdown-menu/dropdown-menu'; import { Icon } from '/@/shared/components/icon/icon'; @@ -181,11 +181,10 @@ export const AppMenu = () => { type: 'divider', }, { - component: Link, icon: 'settings', id: 'settings', label: t('page.appMenu.settings', { postProcess: 'sentenceCase' }), - to: AppRoute.SETTINGS, + onClick: openSettingsModal, type: 'item', }, { diff --git a/src/renderer/router/app-router.tsx b/src/renderer/router/app-router.tsx index 60a44aebe..b643e944f 100644 --- a/src/renderer/router/app-router.tsx +++ b/src/renderer/router/app-router.tsx @@ -3,6 +3,7 @@ import { HashRouter, Route, Routes } from 'react-router'; import { RouterErrorBoundary } from '/@/renderer/components/error-boundary/router-error-boundary'; import { AddToPlaylistContextModal } from '/@/renderer/features/playlists/components/add-to-playlist-context-modal'; +import { SettingsModal } from '/@/renderer/features/settings/components/settings-modal'; import { ShareItemContextModal } from '/@/renderer/features/sharing/components/share-item-context-modal'; import { ResponsiveLayout } from '/@/renderer/layouts/responsive-layout'; import { AppOutlet } from '/@/renderer/router/app-outlet'; @@ -62,8 +63,6 @@ const DummyAlbumDetailRoute = lazy( const GenreListRoute = lazy(() => import('/@/renderer/features/genres/routes/genre-list-route')); -const SettingsRoute = lazy(() => import('/@/renderer/features/settings/routes/settings-route')); - const SearchRoute = lazy(() => import('/@/renderer/features/search/routes/search-route')); const RouteErrorBoundary = lazy( @@ -78,6 +77,7 @@ export const AppRouter = () => { modals={{ addToPlaylist: AddToPlaylistContextModal, base: BaseContextModal, + settings: SettingsModal, shareItem: ShareItemContextModal, }} > @@ -100,11 +100,6 @@ export const AppRouter = () => { errorElement={} path={AppRoute.SEARCH} /> - } - errorElement={} - path={AppRoute.SETTINGS} - /> } errorElement={}