light_dark.js 998 B

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 light = createTheme({
  8. palette: {
  9. type: "light",
  10. primary: blue,
  11. secondary: green,
  12. },
  13. });
  14. const dark = createTheme({
  15. palette: {
  16. type: "dark",
  17. primary: green,
  18. secondary: blue,
  19. },
  20. });
  21. const Theme = ({ children, theme, ...rest }) =>
  22. (
  23. <ThemeProvider theme={theme?light:dark}>
  24. <CssBaseline />
  25. {children}
  26. </ThemeProvider>
  27. )
  28. export const withTheme = (Component) => {
  29. return (props) => {
  30. const [theme, setTheme] = useState(!Theme);
  31. const handleChange = (c) => {
  32. setTheme(c)
  33. }
  34. return (
  35. <Theme theme={theme}>
  36. <Component {...props} theme={Theme} onThemeChange={setTheme} />
  37. </Theme>
  38. );
  39. };
  40. };