feishin/src/renderer/features/settings/components/settings-content.tsx

75 lines
2.3 KiB
TypeScript
Raw Normal View History

import { lazy } from 'react';
import { Tabs } from '/@/renderer/components';
import { useSettingsStore, useSettingsStoreActions } from '/@/renderer/store/settings.store';
2023-03-30 08:09:20 -07:00
import isElectron from 'is-electron';
2023-03-30 06:44:33 -07:00
import styled from 'styled-components';
const GeneralTab = lazy(() =>
2023-07-01 19:10:05 -07:00
import('/@/renderer/features/settings/components/general/general-tab').then((module) => ({
default: module.GeneralTab,
})),
);
const PlaybackTab = lazy(() =>
2023-07-01 19:10:05 -07:00
import('/@/renderer/features/settings/components/playback/playback-tab').then((module) => ({
default: module.PlaybackTab,
})),
);
2023-03-30 06:44:33 -07:00
const ApplicationTab = lazy(() =>
2023-07-01 19:10:05 -07:00
import('/@/renderer/features/settings/components/window/window-tab').then((module) => ({
default: module.WindowTab,
})),
2023-03-30 06:44:33 -07:00
);
2023-03-31 07:26:10 -07:00
const HotkeysTab = lazy(() =>
2023-07-01 19:10:05 -07:00
import('/@/renderer/features/settings/components/hotkeys/hotkeys-tab').then((module) => ({
default: module.HotkeysTab,
})),
2023-03-31 07:26:10 -07:00
);
2023-03-30 06:44:33 -07:00
const TabContainer = styled.div`
2023-07-01 19:10:05 -07:00
width: 100%;
height: 100%;
padding: 1rem;
overflow: scroll;
2023-03-30 06:44:33 -07:00
`;
export const SettingsContent = () => {
2023-07-01 19:10:05 -07:00
const currentTab = useSettingsStore((state) => state.tab);
const { setSettings } = useSettingsStoreActions();
2023-07-01 19:10:05 -07:00
return (
<TabContainer>
<Tabs
keepMounted={false}
orientation="horizontal"
value={currentTab}
variant="default"
onTabChange={(e) => e && setSettings({ tab: e })}
>
<Tabs.List>
<Tabs.Tab value="general">General</Tabs.Tab>
<Tabs.Tab value="playback">Playback</Tabs.Tab>
<Tabs.Tab value="hotkeys">Hotkeys</Tabs.Tab>
{isElectron() && <Tabs.Tab value="window">Window</Tabs.Tab>}
</Tabs.List>
<Tabs.Panel value="general">
<GeneralTab />
</Tabs.Panel>
<Tabs.Panel value="playback">
<PlaybackTab />
</Tabs.Panel>
<Tabs.Panel value="hotkeys">
<HotkeysTab />
</Tabs.Panel>
{isElectron() && (
<Tabs.Panel value="window">
<ApplicationTab />
</Tabs.Panel>
)}
</Tabs>
</TabContainer>
);
};