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={}