blob: 8f64b93158c8afd6d4bb4d9cc3a5012ddb0a043d (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
|
import React from 'react';
import { useSelector } from 'react-redux';
import { ThemeProvider, useMediaQuery } from '@mui/material';
import { CacheProvider } from '@emotion/react';
import createCache from '@emotion/cache';
import { prefixer } from 'stylis';
import rtlPlugin from 'stylis-plugin-rtl';
import theme from './common/theme';
import { useLocalization } from './common/components/LocalizationProvider';
const cache = {
ltr: createCache({
key: 'muiltr',
stylisPlugins: [prefixer],
}),
rtl: createCache({
key: 'muirtl',
stylisPlugins: [prefixer, rtlPlugin],
}),
};
const AppThemeProvider = ({ children }) => {
const server = useSelector((state) => state.session.server);
const { direction } = useLocalization();
const serverDarkMode = server?.attributes?.darkMode;
const preferDarkMode = useMediaQuery('(prefers-color-scheme: dark)');
const darkMode = serverDarkMode !== undefined ? serverDarkMode : preferDarkMode;
const themeInstance = theme(server, darkMode, direction);
return (
<CacheProvider value={cache[direction]}>
<ThemeProvider theme={themeInstance}>
{children}
</ThemeProvider>
</CacheProvider>
);
};
export default AppThemeProvider;
|