diff --git a/src/components/Settings/CommonSettings.tsx b/src/components/Settings/CommonSettings.tsx index ee482aa43..7b7665490 100644 --- a/src/components/Settings/CommonSettings.tsx +++ b/src/components/Settings/CommonSettings.tsx @@ -4,6 +4,7 @@ import { IconBrandGithub as BrandGithub } from '@tabler/icons'; import { CURRENT_VERSION } from '../../../data/constants'; import { useConfig } from '../../tools/state'; import { ColorSchemeSwitch } from '../ColorSchemeToggle/ColorSchemeSwitch'; +import { WidgetsPositionSwitch } from '../WidgetsPositionSwitch/WidgetsPositionSwitch'; import ConfigChanger from '../Config/ConfigChanger'; import SaveConfigComponent from '../Config/SaveConfig'; import ModuleEnabler from './ModuleEnabler'; @@ -67,8 +68,8 @@ export default function CommonSettings(args: any) { /> )} - + diff --git a/src/components/WidgetsPositionSwitch/WidgetsPositionSwitch.tsx b/src/components/WidgetsPositionSwitch/WidgetsPositionSwitch.tsx new file mode 100644 index 000000000..edb341a52 --- /dev/null +++ b/src/components/WidgetsPositionSwitch/WidgetsPositionSwitch.tsx @@ -0,0 +1,56 @@ +import React, { useState } from 'react'; +import { createStyles, Switch, Group } from '@mantine/core'; +import { useConfig } from '../../tools/state'; + +const useStyles = createStyles((theme) => ({ + root: { + position: 'relative', + '& *': { + cursor: 'pointer', + }, + }, + + icon: { + pointerEvents: 'none', + position: 'absolute', + zIndex: 1, + top: 3, + }, + + iconLight: { + left: 4, + color: theme.white, + }, + + iconDark: { + right: 4, + color: theme.colors.gray[6], + }, +})); + +export function WidgetsPositionSwitch() { + const { config, setConfig } = useConfig(); + const { classes, cx } = useStyles(); + const defaultPosition = config?.settings?.widgetPosition || 'right'; + const [widgetPosition, setWidgetPosition] = useState(defaultPosition); + const toggleWidgetPosition = () => { + const position = widgetPosition === 'right' ? 'left' : 'right'; + setWidgetPosition(position); + setConfig({ + ...config, + settings: { + ...config.settings, + widgetPosition: position, + }, + }); + }; + + return ( + +
+ toggleWidgetPosition()} size="md" /> +
+ Position widgets on left +
+ ); +} diff --git a/src/components/layout/Aside.tsx b/src/components/layout/Aside.tsx index 8ed088c4b..6c4810572 100644 --- a/src/components/layout/Aside.tsx +++ b/src/components/layout/Aside.tsx @@ -1,7 +1,5 @@ -import { Aside as MantineAside, createStyles, Group } from '@mantine/core'; -import { useMediaQuery } from '@mantine/hooks'; -import { WeatherModule, DateModule, CalendarModule, TotalDownloadsModule } from '../modules'; -import { ModuleWrapper } from '../modules/moduleWrapper'; +import { Aside as MantineAside, createStyles } from '@mantine/core'; +import Widgets from './Widgets'; const useStyles = createStyles((theme) => ({ hide: { @@ -18,8 +16,6 @@ const useStyles = createStyles((theme) => ({ export default function Aside(props: any) { const { classes, cx } = useStyles(); - const matches = useMediaQuery('(min-width: 800px)'); - return ( - <> - {matches && ( - - - - - - - )} - + ); } diff --git a/src/components/layout/Layout.tsx b/src/components/layout/Layout.tsx index 975e51776..a40c6a801 100644 --- a/src/components/layout/Layout.tsx +++ b/src/components/layout/Layout.tsx @@ -2,8 +2,10 @@ import { AppShell, createStyles } from '@mantine/core'; import { Header } from './Header'; import { Footer } from './Footer'; import Aside from './Aside'; +import Navbar from './Navbar'; import { HeaderConfig } from './HeaderConfig'; import { Background } from './Background'; +import { useConfig } from '../../tools/state'; const useStyles = createStyles((theme) => ({ main: {}, @@ -11,8 +13,16 @@ const useStyles = createStyles((theme) => ({ export default function Layout({ children, style }: any) { const { classes, cx } = useStyles(); + const { config } = useConfig(); + const widgetPosition = config?.settings?.widgetPosition === 'left'; + return ( - } header={
} footer={