import { ColorScheme, ColorSchemeProvider, MantineProvider } from '@mantine/core'; import { useColorScheme } from '@mantine/hooks'; import { ModalsProvider } from '@mantine/modals'; import { Notifications } from '@mantine/notifications'; import { QueryClient, QueryClientProvider } from '@tanstack/react-query'; import { getCookie, setCookie } from 'cookies-next'; import { useEffect, useState } from 'react'; import AppBody from './AppBody'; import { FfprobeModal } from './shared/components/modal.windows/FfprobeModal'; import { VaInfoModal } from './shared/components/modal.windows/VaInfoModal'; import { SideBarProvider } from './widgets/sidebars/SideBarContext'; const queryClient = new QueryClient({ defaultOptions: { queries: { refetchOnWindowFocus: false } } }) const modals = { ffprobeModal: FfprobeModal, vaInfoModal: VaInfoModal, } declare module '@mantine/modals' { export interface MantineModalsOverride { modals: typeof modals; } } function App() { const systemColorScheme = useColorScheme() const cookieColorScheme = getCookie('mantine-color-scheme') as ColorScheme | null const selectedColorScheme = cookieColorScheme || systemColorScheme const [colorScheme, setColorScheme] = useState(selectedColorScheme) const toggleColorScheme = (value?: ColorScheme) => { const nextColorScheme = value || (colorScheme === 'dark' ? 'light' : 'dark'); setColorScheme(nextColorScheme) setCookie('mantine-color-scheme', nextColorScheme, { maxAge: 60 * 60 * 24 * 30 }); } useEffect(() => { setColorScheme(selectedColorScheme); }, [selectedColorScheme]); return (
({ root: { '&:hover': { backgroundColor: theme.colorScheme === 'dark' ? theme.colors.dark[3] : theme.colors.gray[2], }, }, }), } } }} >
); } export default App;