From be3e0d1ffb922807abfb1b01e41acda5d6f08aeb Mon Sep 17 00:00:00 2001 From: Ariful Alam Date: Sat, 19 Mar 2022 00:53:45 +0600 Subject: [PATCH] Create ThemeChanger component --- src/components/theme-changer/index.jsx | 97 ++++++++++++++++++++++++++ 1 file changed, 97 insertions(+) create mode 100644 src/components/theme-changer/index.jsx diff --git a/src/components/theme-changer/index.jsx b/src/components/theme-changer/index.jsx new file mode 100644 index 0000000..0c65d87 --- /dev/null +++ b/src/components/theme-changer/index.jsx @@ -0,0 +1,97 @@ +import { AiOutlineControl } from 'react-icons/ai'; +import { useContext } from 'react'; +import { ThemeContext } from '../../contexts/ThemeContext'; +import { LoadingContext } from '../../contexts/LoadingContext'; +import { skeleton } from '../../helpers/utils'; +import config from '../../ezprofile.config'; + +const ThemeChanger = () => { + const [theme, setTheme] = useContext(ThemeContext); + const [loading] = useContext(LoadingContext); + + const changeTheme = (e, selectedTheme) => { + e.preventDefault(); + document.querySelector('html').setAttribute('data-theme', selectedTheme); + localStorage.setItem('ezprofile-theme', selectedTheme); + + setTheme(selectedTheme); + }; + + return ( +
+
+
+
+ {loading ? ( + skeleton({ width: 'w-20', height: 'h-8' }) + ) : ( + Theme + )} +
+ + {loading + ? skeleton({ width: 'w-16', height: 'h-5' }) + : theme === config.themeConfig.default + ? 'Default' + : theme} + +
+
+ {loading ? ( + skeleton({ + width: 'w-14 md:w-28', + height: 'h-10', + className: 'mr-6', + }) + ) : ( +
+
+ + Change Theme + + + +
+
+ +
+
+ )} +
+
+
+ ); +}; + +export default ThemeChanger;