ソースを参照

Theming

master
Lazar Kostic 3年前
コミット
bc8e5f5ef3

+ 35
- 22
src/hooks/useToggleColorMode.js ファイルの表示

@@ -1,31 +1,44 @@
import { useState, useMemo } from 'react';
import { createTheme } from '@mui/material/styles';
import { useState, useMemo } from "react";
import { createTheme } from "@mui/material/styles";
import {
authScopeSetHelper,
authScopeStringGetHelper,
} from '../util/helpers/authScopeHelpers';
authScopeSetHelper,
authScopeStringGetHelper,
} from "../util/helpers/authScopeHelpers";
import selectedTheme from "../themes";

const useToggleColorMode = () => {
const currentColorMode = authScopeStringGetHelper('colorMode') || 'light';
const [mode, setMode] = useState(currentColorMode);
const currentColorMode = authScopeStringGetHelper("colorMode") || "light";
const [mode, setMode] = useState(currentColorMode);

const toggleColorMode = () => {
const nextMode = mode === 'light' ? 'dark' : 'light';
setMode(nextMode);
authScopeSetHelper('colorMode', nextMode);
};
const toggleColorMode = () => {
const nextMode = mode === "light" ? "dark" : "light";
setMode(nextMode);
authScopeSetHelper("colorMode", nextMode);
};

const theme = useMemo(
() =>
createTheme({
palette: {
mode,
},
}),
[mode]
);
const theme = useMemo(
() =>
createTheme({
palette: {
mode,
primary: {
main:
mode === "light"
? selectedTheme.colors.primaryLight
: selectedTheme.colors.primaryDark,
},
secondary: {
main:
mode === "light"
? selectedTheme.colors.secondaryLight
: selectedTheme.colors.secondaryDark,
},
},
}),
[mode]
);

return [toggleColorMode, theme];
return [toggleColorMode, theme];
};

export default useToggleColorMode;

+ 13
- 0
src/themes/index.js ファイルの表示

@@ -0,0 +1,13 @@
import primary from "./primaryTheme/primaryTheme";

let selectedThemeNumber = 0;

const getTheme = () => {
if (selectedThemeNumber === 0) {
return {...primary}
}
}

const selectedTheme = getTheme();

export default selectedTheme;

+ 7
- 0
src/themes/primaryTheme/primaryTheme.js ファイルの表示

@@ -0,0 +1,7 @@
import { primaryThemeColors } from "./primaryThemeColors";

const primary = {
colors: primaryThemeColors,
};

export default primary;

+ 6
- 0
src/themes/primaryTheme/primaryThemeColors.js ファイルの表示

@@ -0,0 +1,6 @@
export const primaryThemeColors = {
primaryLight: "#673ab7",
primaryDark: "#009688",
secondaryLight: "#212121",
secondaryDark: "#f5f5f5",
};

+ 0
- 0
src/themes/primaryTheme/primaryThemeFonts.js ファイルの表示


読み込み中…
キャンセル
保存