Skip to content

Instantly share code, notes, and snippets.

import * as actions from "./actions";
import { combineReducers } from "redux";
const preferences = (state = { darkThemeEnabled: false }, action) => {
switch (action.type) {
case actions.TOGGLE_DARKTHEME:
return { ...state, darkThemeEnabled: !state.darkThemeEnabled };
default:
return state;
import { createStore } from "redux";
import rootReducer from "./reducers";
const localStorageKey = "theme";
const persistedTheme = localStorage.getItem(localStorageKey);
let initialState = {
preferences: persistedTheme ? JSON.parse(persistedTheme) : {},
};
import { createStore } from "redux";
import rootReducer from "./reducers";
let initialState = {};
const store = createStore(rootReducer, initialState);
export default store;
import React from "react";
import { useSelector } from "react-redux";
import { ThemeProvider } from "styled-components";
const DarkThemeProvider = ({ children }) => {
const darkThemeEnabled = useSelector((state) => state.preferences.darkThemeEnabled);
return (
<ThemeProvider theme={{ theme: darkThemeEnabled ? "dark" : "light" }}>
{children}
</ThemeProvider>
import React from "react";
import { useSelector, useDispatch } from "react-redux";
import { TOGGLE_DARKTHEME } from "./actions";
const DarkThemeToggle = () => {
const darkThemeEnabled = useSelector((state) => state.preferences.darkThemeEnabled);
const dispatch = useDispatch();
return (
<p>
import React from "react";
import styled from "styled-components";
import theme from "styled-theming";
import { Provider as ReduxProvider } from "react-redux";
import DarkThemeProvider from "./DarkThemeProvider";
import store from "./store";
import DarkThemeToggle from "./DarkThemeToggle";
export const backgroundColor = theme("theme", {
light: "#fff",
import React from "react";
import styled from "styled-components";
import theme from "styled-theming";
import { Provider as ReduxProvider } from "react-redux";
import DarkThemeProvider from "./DarkThemeProvider";
import store from "./store";
export const backgroundColor = theme("theme", {
light: "#fff",
dark: "#2d2d2d",
import React from "react";
import styled, { ThemeProvider } from "styled-components";
import theme from "styled-theming";
import { Provider as ReduxProvider } from "react-redux";
import store from "./store";
export const backgroundColor = theme("theme", {
light: "#fff",
dark: "#2d2d2d",
});
export const TOGGLE_DARKTHEME = "TOGGLE_DARKTHEME";
export const toggleDarkTheme = () => ({
type: TOGGLE_DARKTHEME,
});
import React from "react";
import styled, { ThemeProvider } from "styled-components";
import theme from "styled-theming";
export const backgroundColor = theme("theme", {
light: "#fff",
dark: "#2d2d2d",
});
export const textColor = theme("theme", {