From 4b16c715acb5cbba9dac898abbbcaa06d0e83238 Mon Sep 17 00:00:00 2001 From: ornanovitch <ornano@felinn.org> Date: Sat, 24 Jul 2021 13:36:39 +0200 Subject: [PATCH] dark mode --- assets/app.js | 2 +- assets/app.scss | 48 ++++++++++++++++++++++++++++++++++++++++++++++++ assets/theme.js | 28 ++++++++++++++++++++++++++++ 3 files changed, 77 insertions(+), 1 deletion(-) create mode 100644 assets/theme.js diff --git a/assets/app.js b/assets/app.js index d98b199..b5af402 100644 --- a/assets/app.js +++ b/assets/app.js @@ -1,5 +1,5 @@ require('./app.scss'); -require('@fortawesome/fontawesome-free/css/all.min.css'); +import './theme.js'; import $ from "jquery"; import 'bootstrap'; diff --git a/assets/app.scss b/assets/app.scss index e69de29..570e6d8 100644 --- a/assets/app.scss +++ b/assets/app.scss @@ -0,0 +1,48 @@ +.theme-switch { + display: inline-block; + height: 24px; + position: relative; + width: 50px; +} + +.theme-switch input { + display: none; +} + +.slider { + background-color: #ccc; + bottom: 0; + cursor: pointer; + left: 0; + position: absolute; + right: 0; + top: 0; + transition: 400ms; +} + +.slider::before { + background-color: #fff; + bottom: 4px; + content: ""; + height: 16px; + left: 4px; + position: absolute; + transition: 400ms; + width: 16px; +} + +input:checked + .slider { + background-color: #66bb6a; +} + +input:checked + .slider::before { + transform: translateX(26px); +} + +.slider.round { + border-radius: 34px; +} + +.slider.round::before { + border-radius: 50%; +} diff --git a/assets/theme.js b/assets/theme.js new file mode 100644 index 0000000..dc93dcf --- /dev/null +++ b/assets/theme.js @@ -0,0 +1,28 @@ +var toggleSwitch = document.querySelector('.theme-switch input[type="checkbox"]'); +var currentTheme = localStorage.getItem('theme'); +var mainHeader = document.querySelector('.main-header'); + +if (currentTheme) { + if (currentTheme === 'dark') { + if (!document.body.classList.contains('dark-mode')) { + document.body.classList.add("dark-mode"); + } + toggleSwitch.checked = true; + } +} + +function switchTheme(e) { + if (e.target.checked) { + if (!document.body.classList.contains('dark-mode')) { + document.body.classList.add("dark-mode"); + } + localStorage.setItem('theme', 'dark'); + } else { + if (document.body.classList.contains('dark-mode')) { + document.body.classList.remove("dark-mode"); + } + localStorage.setItem('theme', 'light'); + } +} + +toggleSwitch.addEventListener('change', switchTheme, false); -- GitLab