File tree Expand file tree Collapse file tree 3 files changed +39
-40
lines changed Expand file tree Collapse file tree 3 files changed +39
-40
lines changed Original file line number Diff line number Diff line change @@ -54,7 +54,8 @@ const ThemeSwitcher = () => {
5454 type = "button"
5555 aria-label = "Use Dark Mode"
5656 onClick = { ( ) => {
57- window . __setPreferredTheme ( "dark" ) ;
57+ document . documentElement . classList . add ( "dark" ) ;
58+ localStorage . setItem ( "theme" , "dark" ) ;
5859 } }
5960 className = "flex items-center h-full pr-2 dark:bg-primary rounded-3xl flex justify-center align-center p-2 w-24 h-10 transition"
6061 >
@@ -65,7 +66,8 @@ const ThemeSwitcher = () => {
6566 type = "button"
6667 aria-label = "Use Light Mode"
6768 onClick = { ( ) => {
68- window . __setPreferredTheme ( "light" ) ;
69+ document . documentElement . classList . remove ( "dark" ) ;
70+ localStorage . setItem ( "theme" , "light" ) ;
6971 } }
7072 className = "flex items-center h-full pr-2 bg-primary dark:bg-transparent rounded-3xl flex justify-center align-center p-2 w-24 h-10 transition"
7173 >
Original file line number Diff line number Diff line change 11import classNames from "classnames" ;
2+ import { useEffect } from "react" ;
23import styles from "./Layout.module.css" ;
34
45export function GradientBackground ( { variant, className } ) {
@@ -14,6 +15,40 @@ export function GradientBackground({ variant, className }) {
1415}
1516
1617export default function Layout ( { children } ) {
18+ const setAppTheme = ( ) => {
19+ const darkMode = localStorage . getItem ( "theme" ) === "dark" ;
20+ const lightMode = localStorage . getItem ( "theme" ) === "light" ;
21+
22+ if ( darkMode ) {
23+ document . documentElement . classList . add ( "dark" ) ;
24+ } else if ( lightMode ) {
25+ document . documentElement . classList . remove ( "dark" ) ;
26+ }
27+ return ;
28+ } ;
29+
30+ const handleSystemThemeChange = ( ) => {
31+ var darkQuery = window . matchMedia ( "(prefers-color-scheme: dark)" ) ;
32+
33+ darkQuery . onchange = ( e ) => {
34+ if ( e . matches ) {
35+ document . documentElement . classList . add ( "dark" ) ;
36+ localStorage . setItem ( "theme" , "dark" ) ;
37+ } else {
38+ document . documentElement . classList . remove ( "dark" ) ;
39+ localStorage . setItem ( "theme" , "light" ) ;
40+ }
41+ } ;
42+ } ;
43+
44+ useEffect ( ( ) => {
45+ setAppTheme ( ) ;
46+ } , [ ] ) ;
47+
48+ useEffect ( ( ) => {
49+ handleSystemThemeChange ( ) ;
50+ } , [ ] ) ;
51+
1752 return (
1853 < div className = "relative pb-24" >
1954 < div className = "flex flex-col items-center max-w-2xl w-full mx-auto" >
Original file line number Diff line number Diff line change @@ -9,44 +9,6 @@ class MyDocument extends Document {
99 < body
1010 className = { `antialiased text-lg bg-white dark:bg-gray-900 dark:text-white leading-base` }
1111 >
12- < script
13- dangerouslySetInnerHTML = { {
14- __html : `
15- (function () {
16- function setTheme(newTheme) {
17- window.__theme = newTheme;
18- if (newTheme === 'dark') {
19- document.documentElement.classList.add('dark');
20- } else if (newTheme === 'light') {
21- document.documentElement.classList.remove('dark');
22- }
23- }
24- var preferredTheme;
25- try {
26- preferredTheme = localStorage.getItem('theme');
27- } catch (err) { }
28- window.__setPreferredTheme = function(newTheme) {
29- preferredTheme = newTheme;
30- setTheme(newTheme);
31- try {
32- localStorage.setItem('theme', newTheme);
33- } catch (err) { }
34- };
35- var initialTheme = preferredTheme;
36- var darkQuery = window.matchMedia('(prefers-color-scheme: dark)');
37- if (!initialTheme) {
38- initialTheme = darkQuery.matches ? 'dark' : 'light';
39- }
40- setTheme(initialTheme);
41- darkQuery.addListener(function (e) {
42- if (!preferredTheme) {
43- setTheme(e.matches ? 'dark' : 'light');
44- }
45- });
46- })();
47- ` ,
48- } }
49- />
5012 < Main />
5113 < NextScript />
5214 </ body >
You can’t perform that action at this time.
0 commit comments