Files
kiss-translator/src/hooks/Theme.js

45 lines
1.1 KiB
JavaScript
Raw Normal View History

2023-07-20 13:45:41 +08:00
import { useMemo } from "react";
import { ThemeProvider, createTheme } from "@mui/material/styles";
import CssBaseline from "@mui/material/CssBaseline";
import { useDarkMode } from "./ColorMode";
import { THEME_DARK, THEME_LIGHT } from "../config";
/**
* mui 主题配置
* @param {*} param0
* @returns
*/
2023-08-30 18:05:37 +08:00
export default function Theme({ children, options }) {
const { darkMode } = useDarkMode();
2023-07-20 13:45:41 +08:00
const theme = useMemo(() => {
2023-11-22 10:23:14 +08:00
let htmlFontSize = 16;
try {
const s = window.getComputedStyle(document.body.parentNode).fontSize;
const fontSize = parseInt(s.replace("px", ""));
if (fontSize > 0 && fontSize < 1000) {
htmlFontSize = fontSize;
}
} catch (err) {
//
}
2023-07-20 13:45:41 +08:00
return createTheme({
palette: {
mode: darkMode ? THEME_DARK : THEME_LIGHT,
},
2023-11-22 10:23:14 +08:00
typography: {
htmlFontSize,
},
2023-07-20 13:45:41 +08:00
...options,
});
}, [darkMode, options]);
return (
<ThemeProvider theme={theme}>
{/* CssBaseline kickstart an elegant, consistent, and simple baseline to build upon. */}
<CssBaseline />
{children}
</ThemeProvider>
);
}