2024-07-30 16:47:58 +08:00
|
|
|
// TODO: add settings functionality, refer to whensapp project
|
|
|
|
|
|
|
|
import { FC, ReactNode } from "react";
|
|
|
|
import { createTheme, ThemeProvider } from "@mui/material/styles";
|
|
|
|
|
|
|
|
interface UserThemeProviderProps {
|
|
|
|
children: ReactNode;
|
|
|
|
}
|
|
|
|
|
|
|
|
// palette and accent settings
|
|
|
|
export const userPalette = {
|
|
|
|
primary: {
|
|
|
|
// light: '#a1c3f9',
|
|
|
|
main: "#8ab4f8",
|
|
|
|
// dark: '#4285f4',
|
|
|
|
},
|
|
|
|
secondary: {
|
|
|
|
// light: '#a1c3f9',
|
|
|
|
main: "#8ab4f8",
|
|
|
|
// dark: '#4285f4',
|
|
|
|
},
|
|
|
|
error: {
|
|
|
|
light: "#e57373",
|
|
|
|
main: "#f44336",
|
|
|
|
dark: "#d32f2f",
|
|
|
|
},
|
|
|
|
warning: {
|
|
|
|
light: "#ffb74d",
|
|
|
|
main: "#ffa726",
|
|
|
|
dark: "#f57c00",
|
|
|
|
},
|
|
|
|
info: {
|
|
|
|
light: "#a1c3f9",
|
|
|
|
main: "#8ab4f8",
|
|
|
|
dark: "#4285f4",
|
|
|
|
},
|
|
|
|
success: {
|
|
|
|
light: "#81c784",
|
|
|
|
main: "#66bb6a",
|
|
|
|
dark: "#388e3c",
|
|
|
|
},
|
|
|
|
grey: {
|
|
|
|
50: "#fafafa",
|
|
|
|
100: "#f5f5f5",
|
|
|
|
200: "#eeeeee",
|
|
|
|
300: "#e0e0e0",
|
|
|
|
400: "#bdbdbd",
|
|
|
|
500: "#9e9e9e",
|
|
|
|
600: "#757575",
|
|
|
|
700: "#616161",
|
|
|
|
800: "#424242",
|
|
|
|
900: "#212121",
|
|
|
|
A100: "#f5f5f5",
|
|
|
|
A200: "#eeeeee",
|
|
|
|
A400: "#bdbdbd",
|
|
|
|
A700: "#616161",
|
|
|
|
},
|
|
|
|
background: {
|
|
|
|
paper: "#303134",
|
|
|
|
default: "#202124",
|
|
|
|
},
|
|
|
|
};
|
|
|
|
|
|
|
|
export const UserThemeProvider: FC<UserThemeProviderProps> = ({ children }) => {
|
|
|
|
// font family settings
|
|
|
|
// TODO: figure out how to bundle fonts in tauri
|
2024-07-30 18:03:06 +08:00
|
|
|
let fontFamily = "GoogleSans";
|
2024-07-30 16:47:58 +08:00
|
|
|
// switch (settings.display.font_family) {
|
|
|
|
// case "sans_serif":
|
|
|
|
// fontFamily = "GoogleSans, sans-serif";
|
|
|
|
// break;
|
|
|
|
// case "monospace":
|
|
|
|
// fontFamily = "JetBrainsMono, monospace";
|
|
|
|
// break;
|
|
|
|
// case "comic_sans":
|
|
|
|
// fontFamily = "ComicSans, sans-serif";
|
|
|
|
// break;
|
|
|
|
// case "system_font":
|
|
|
|
// fontFamily = "system-ui";
|
|
|
|
// break;
|
|
|
|
// }
|
|
|
|
|
|
|
|
// font scaling settings
|
|
|
|
// const fontSize = (settings.display.font_scaling / 100) * 14;
|
|
|
|
|
|
|
|
const userTheme = createTheme({
|
|
|
|
typography: {
|
|
|
|
fontFamily: fontFamily,
|
|
|
|
// fontSize: fontSize,
|
|
|
|
},
|
|
|
|
palette: {
|
|
|
|
mode: "dark",
|
|
|
|
...userPalette,
|
|
|
|
},
|
|
|
|
transitions: {
|
|
|
|
duration: {
|
|
|
|
// shortest: settings.display.transition_duration,
|
|
|
|
// shorter: settings.display.transition_duration,
|
|
|
|
// short: settings.display.transition_duration,
|
|
|
|
// // most basic recommended timing
|
|
|
|
// standard: settings.display.transition_duration,
|
|
|
|
// // this is to be used in complex animations
|
|
|
|
// complex: settings.display.transition_duration,
|
|
|
|
// // recommended when something is entering screen
|
|
|
|
// enteringScreen: settings.display.transition_duration,
|
|
|
|
// // recommended when something is leaving screen
|
|
|
|
// leavingScreen: settings.display.transition_duration,
|
|
|
|
},
|
|
|
|
},
|
|
|
|
components: {
|
|
|
|
MuiButton: {
|
|
|
|
styleOverrides: {
|
|
|
|
root: { textTransform: "none" },
|
|
|
|
},
|
|
|
|
},
|
|
|
|
MuiTab: {
|
|
|
|
styleOverrides: {
|
|
|
|
root: {
|
|
|
|
textTransform: "none",
|
|
|
|
},
|
|
|
|
},
|
|
|
|
},
|
|
|
|
},
|
|
|
|
});
|
|
|
|
|
|
|
|
return <ThemeProvider theme={userTheme}>{children}</ThemeProvider>;
|
|
|
|
};
|