From 222b187c7f5b03c854021d6e81551eafb24f0622 Mon Sep 17 00:00:00 2001 From: Gino Emiliozzi Date: Thu, 12 Sep 2019 16:12:17 -0300 Subject: [PATCH] dark mode --- src/components/NavBar/DarkMode.tsx | 19 +++++++++++++++++++ src/components/NavBar/index.tsx | 16 +++++++++++++--- src/state/actions.ts | 3 ++- src/state/index.ts | 7 +++++++ src/theme.ts | 5 +++++ 5 files changed, 46 insertions(+), 4 deletions(-) create mode 100644 src/components/NavBar/DarkMode.tsx diff --git a/src/components/NavBar/DarkMode.tsx b/src/components/NavBar/DarkMode.tsx new file mode 100644 index 0000000..dca7269 --- /dev/null +++ b/src/components/NavBar/DarkMode.tsx @@ -0,0 +1,19 @@ +import React from "react"; +import { makeStyles } from "@material-ui/core"; +import { Theme } from "../../theme"; + +const useDarkGlobalStyles = makeStyles((theme: Theme) => { + return { + "@global": { + body: { + backgroundColor: theme.darkMode.backgroundColor, + }, + }, + }; +}); +const DarkMode = () => { + useDarkGlobalStyles(); + return <>; +}; + +export default DarkMode; diff --git a/src/components/NavBar/index.tsx b/src/components/NavBar/index.tsx index 74de2c7..afc875a 100644 --- a/src/components/NavBar/index.tsx +++ b/src/components/NavBar/index.tsx @@ -1,15 +1,18 @@ import React, { useContext, useCallback, useState } from "react"; -import { createStyles, makeStyles, Theme } from "@material-ui/core/styles"; +import { createStyles, makeStyles } from "@material-ui/core/styles"; import AppBar from "@material-ui/core/AppBar"; import Toolbar from "@material-ui/core/Toolbar"; import Typography from "@material-ui/core/Typography"; import Button from "@material-ui/core/Button"; import { Link, withRouter } from "react-router-dom"; -import { AppContext } from "../../state"; +import { AppContext, AppActions } from "../../state"; import { IconButton, Menu, MenuItem, Avatar } from "@material-ui/core"; import AccountCircle from "@material-ui/icons/AccountCircle"; +import InvertColors from "@material-ui/icons/InvertColors"; import { RouteChildrenProps } from "react-router"; import { FirebaseContext } from "../Firebase"; +import { Theme } from "../../theme"; +import DarkMode from "./DarkMode"; const useStyles = makeStyles((theme: Theme) => createStyles({ @@ -36,7 +39,7 @@ const NavBar = ({ history }: RouteChildrenProps) => { const [anchorEl, setAnchorEl] = React.useState(null); const [open, setOpen] = useState(false); - const { user } = useContext(AppContext); + const { user, isDarkModeEnabled, dispatch } = useContext(AppContext); const handleProfileMenuOpen = useCallback( (event: React.MouseEvent) => { @@ -60,6 +63,7 @@ const NavBar = ({ history }: RouteChildrenProps) => { return (
+ {isDarkModeEnabled && } @@ -88,6 +92,12 @@ const NavBar = ({ history }: RouteChildrenProps) => { > Teams + ; + isDarkModeEnabled: boolean; } export const initialState = { user: null, generatedTeams: [], dispatch: () => {}, + isDarkModeEnabled: false }; export const AppContext = React.createContext(initialState); @@ -35,6 +37,11 @@ export const reducerApp = (state: AppState, action: Action) => { ...state, generatedTeams: [], }; + case AppActions.TOGGLE_DARK_MODE: + return { + ...state, + isDarkModeEnabled: !state.isDarkModeEnabled + }; default: return state; } diff --git a/src/theme.ts b/src/theme.ts index b78fcb3..fb0b119 100644 --- a/src/theme.ts +++ b/src/theme.ts @@ -13,6 +13,11 @@ const expandedTheme = { ...customTheme, status: { danger: "orange" + }, + darkMode: { + backgroundColor: "#3e3340", + auxColor: "#856c89", + linkColor: "#161417" } };