adminFront/src/theme.ts
2023-05-25 15:06:46 +03:00

225 lines
4.5 KiB
TypeScript

import { Theme } from "@mui/material/styles";
import { createTheme, PaletteColorOptions, ThemeOptions } from "@mui/material";
import { deepmerge } from "@mui/utils";
//import { createTheme } from "./types";
declare module "@mui/material/Button" {
interface ButtonPropsVariantOverrides {
enter: true;
}
}
declare module "@mui/material/Paper" {
interface PaperPropsVariantOverrides {
bar: true;
}
}
declare module "@mui/material/styles" {
interface Theme {
palette: {
primary: {
main: string;
};
secondary: {
main: string;
};
menu: {
main: string;
};
content: {
main: string;
};
hover: {
main: string;
};
grayLight: {
main: string;
};
grayDark: {
main: string;
};
grayMedium: {
main: string;
};
grayDisabled: {
main: string;
};
golden: {
main: string;
};
goldenDark: {
main: string;
};
goldenMedium: {
main: string;
};
caption: {
main: string;
};
};
}
interface PaletteOptions {
menu?: PaletteColorOptions;
content?: PaletteColorOptions;
grayLight?: PaletteColorOptions;
grayDark?: PaletteColorOptions;
grayMedium?: PaletteColorOptions;
grayDisabled?: PaletteColorOptions;
golden?: PaletteColorOptions;
goldenDark?: PaletteColorOptions;
goldenMedium?: PaletteColorOptions;
hover?: PaletteColorOptions;
}
// allow configuration using `createTheme`
interface TypographyVariants {
body1: React.CSSProperties;
subtitle1: React.CSSProperties;
subtitle2: React.CSSProperties;
caption: React.CSSProperties;
h5: React.CSSProperties;
h6: React.CSSProperties;
button: React.CSSProperties;
}
}
const fontFamily: string = "GilroyRegular";
const fontWeight: string = "600";
const paletteColor = {
palette: {
primary: {
main: "#111217",
},
secondary: {
main: "#e6e8ec",
},
menu: {
main: "#2f3339",
},
content: {
main: "#26272c",
},
hover: {
main: "#191a1e",
},
grayLight: {
main: "#707070",
},
grayDark: {
main: "#45494c",
},
grayMedium: {
main: "#424242",
},
grayDisabled: {
main: "#c0c1c3",
},
golden: {
main: "#eaba5b",
},
goldenDark: {
main: "#fe9903",
},
goldenMedium: {
main: "#2a2b1d",
},
},
};
const theme: ThemeOptions = {
typography: {
body1: {
fontFamily: fontFamily,
},
subtitle1: {
fontFamily: fontFamily,
fontWeight: fontWeight,
fontSize: 25,
},
subtitle2: {
fontFamily: fontFamily,
fontSize: 25,
textAlign: "center",
},
caption: {
fontFamily: fontFamily,
fontWeight: fontWeight,
fontSize: 21,
},
h5: {
fontFamily: fontFamily,
fontWeight: fontWeight,
fontSize: 35,
},
h6: {
fontFamily: fontFamily,
fontWeight: fontWeight,
fontSize: 18,
},
button: {
fontFamily: fontFamily,
fontWeight: fontWeight,
fontSize: 22,
},
h4: {
fontFamily: fontFamily,
fontWeight: fontWeight,
fontSize: 16,
},
},
components: {
MuiButton: {
styleOverrides: {
root: {
color: paletteColor.palette.secondary.main,
backgroundColor: paletteColor.palette.menu.main,
padding: "12px",
fontSize: "13px",
"&:hover": {
backgroundColor: paletteColor.palette.hover.main,
},
},
},
variants: [
{
props: {
variant: "enter",
},
style: {
color: paletteColor.palette.secondary.main,
backgroundColor: paletteColor.palette.content.main,
padding: "12px 48px",
"&:hover": {
backgroundColor: paletteColor.palette.hover.main,
},
},
},
],
},
MuiPaper: {
variants: [
{
props: {
variant: "bar",
},
style: {
backgroundColor: paletteColor.palette.grayMedium.main,
padding: "15px",
width: "100%",
},
},
],
},
MuiButtonBase: {
styleOverrides: {
root: {
fontFamily,
fontSize: "16px",
},
},
},
},
};
export default createTheme(deepmerge(paletteColor, theme));