light_dark.js 1.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. import React, { useState } from "react";
  2. import { createTheme } from "@material-ui/core/styles";
  3. import { ThemeProvider } from "@material-ui/styles";
  4. import { CssBaseline } from "@material-ui/core";
  5. import blue from "@material-ui/core/colors/blue";
  6. import green from "@material-ui/core/colors/green";
  7. const theme = createTheme({
  8. palette: {
  9. type: "light",
  10. primary: blue,
  11. secondary: green,
  12. },
  13. });
  14. const themeDark = createTheme({
  15. palette: {
  16. type: "dark",
  17. primary: green,
  18. secondary: blue,
  19. },
  20. });
  21. const Theme = (props) => {
  22. const { children, darkMode } = props;
  23. const defaultTheme = darkMode ? themeDark : theme;
  24. return (
  25. <ThemeProvider theme={defaultTheme}>
  26. <CssBaseline />
  27. {children}
  28. </ThemeProvider>
  29. );
  30. };
  31. export const withTheme = (Component) => {
  32. return (props) => {
  33. const [darkMode, setDarkMode] = useState(false);
  34. return (
  35. <Theme darkMode={darkMode}>
  36. <Component {...props} darkMode={darkMode} setDarkMode={setDarkMode} />
  37. </Theme>
  38. );
  39. };
  40. };