From e76d06ce0a7cfbc3b59869aa1a74f8ba0f374b5b Mon Sep 17 00:00:00 2001
From: yudejp 
Date: Fri, 21 May 2021 18:36:19 +0900
Subject: [PATCH] Add dark-mode switcher
---
 package.json                         |  2 +-
 pages/_app.js                        | 12 ++++++++++
 pages/_document.js                   | 18 +++++++++++++++
 pages/components/DarkmodeSwitcher.js | 34 ++++++++++++++++++++++++++++
 pages/components/LangSelector.js     |  6 ++---
 pages/components/Layout.js           |  8 +++----
 pages/components/Navbar.js           |  2 ++
 pages/index.js                       | 18 +++++++--------
 tailwind.config.js                   |  2 +-
 yarn.lock                            |  8 +++----
 10 files changed, 87 insertions(+), 23 deletions(-)
 create mode 100644 pages/_app.js
 create mode 100644 pages/_document.js
 create mode 100644 pages/components/DarkmodeSwitcher.js
diff --git a/package.json b/package.json
index 68376cd..53276ef 100644
--- a/package.json
+++ b/package.json
@@ -28,7 +28,7 @@
     "@zeit/next-css": "^1.0.1",
     "autoprefixer": "^10.2.4",
     "next": "^10.0.6",
-    "next-themes": "^0.0.12",
+    "next-themes": "^0.0.14",
     "next-translate": "^1.0.2",
     "nightwind": "^1.1.6",
     "popper.js": "^1.16.1",
diff --git a/pages/_app.js b/pages/_app.js
new file mode 100644
index 0000000..00e7c95
--- /dev/null
+++ b/pages/_app.js
@@ -0,0 +1,12 @@
+import 'tailwindcss/tailwind.css';
+import { ThemeProvider } from "next-themes";
+
+function MyApp({ Component, pageProps }) {
+  return (
+    
+      
+    
+  );
+}
+
+export default MyApp;
\ No newline at end of file
diff --git a/pages/_document.js b/pages/_document.js
new file mode 100644
index 0000000..965cba6
--- /dev/null
+++ b/pages/_document.js
@@ -0,0 +1,18 @@
+import React from "react";
+import Document, { Html, Head, Main, NextScript } from "next/document";
+
+class MyDocument extends Document {
+  render() {
+    return (
+      
+        
+        
+          
+          
+        
+      
+    );
+  }
+}
+
+export default MyDocument;
\ No newline at end of file
diff --git a/pages/components/DarkmodeSwitcher.js b/pages/components/DarkmodeSwitcher.js
new file mode 100644
index 0000000..3c6bc53
--- /dev/null
+++ b/pages/components/DarkmodeSwitcher.js
@@ -0,0 +1,34 @@
+import Head from "next/head"
+import Link from "next/link"
+import "tailwindcss/tailwind.css";
+import useTranslation from 'next-translate/useTranslation'
+import { useRouter } from 'next/router'
+import React, { useEffect, useState } from 'react'
+import { useTheme } from "next-themes";
+
+const Layout = (props) => {
+  const { title, children } = props
+  const siteTitle = "yude.jp"
+  const router = useRouter()
+  const { locale, locales, defaultLocale, pathname } = router
+
+  const { t, lang } = useTranslation("common")
+  const footer = t('footer')
+  const source = t('source')
+  const tos = t('tos')
+  
+  const [isMounted, setIsMounted] = useState(false);
+  const { theme, setTheme } = useTheme();
+useEffect(() => {
+    setIsMounted(true);
+  }, []);
+const switchTheme = () => {
+    if (isMounted) {
+      setTheme(theme === "light" ? "dark" : "light");
+    }
+  };
+  return (
+    
+  )
+}
+export default Layout
\ No newline at end of file
diff --git a/pages/components/LangSelector.js b/pages/components/LangSelector.js
index f09994b..4376fa0 100644
--- a/pages/components/LangSelector.js
+++ b/pages/components/LangSelector.js
@@ -28,7 +28,7 @@ const Dropdown = ({ color }) => {
   return (
     <>
 
-
+
     
-
-  
+      
   
     
diff --git a/pages/components/Layout.js b/pages/components/Layout.js
index 515fc2f..00906e1 100644
--- a/pages/components/Layout.js
+++ b/pages/components/Layout.js
@@ -4,6 +4,7 @@ import "tailwindcss/tailwind.css";
 import useTranslation from 'next-translate/useTranslation'
 import { useRouter } from 'next/router'
 import React, { useEffect, useState } from 'react'
+import { useTheme } from "next-themes";
 
 const Layout = (props) => {
   const { title, children } = props
@@ -21,7 +22,6 @@ const Layout = (props) => {
         
{title ? `${title} - ${siteTitle}` : siteTitle}
         
       
-      
       
         
           {children}
@@ -36,17 +36,17 @@ const Layout = (props) => {
       
       
-      
     
+                
                 
             
       
diff --git a/pages/index.js b/pages/index.js
index 762c1fe..9d09359 100644
--- a/pages/index.js
+++ b/pages/index.js
@@ -31,15 +31,15 @@ export default function Index(props) {
             unoptimized = {true}
         />
         
-        
-        
-        
-        
-        
-        
-        
-        
-        
+        
+        
+        
+        
+        
+        
+        
+        
+        
         
        
       
diff --git a/tailwind.config.js b/tailwind.config.js
index 40b0f02..afbab49 100644
--- a/tailwind.config.js
+++ b/tailwind.config.js
@@ -1,6 +1,6 @@
 module.exports = {
   purge: ['./pages/**/*.{js,ts,jsx,tsx}', './components/**/*.{js,ts,jsx,tsx}'],
-  darkMode: "media",
+  darkMode: "class",
   theme: {
     aspectRatio: {
       none: 0,
diff --git a/yarn.lock b/yarn.lock
index 83f1806..504a06e 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -1833,10 +1833,10 @@ native-url@0.3.4:
   dependencies:
     querystring "^0.2.0"
 
-next-themes@^0.0.12:
-  version "0.0.12"
-  resolved "https://registry.yarnpkg.com/next-themes/-/next-themes-0.0.12.tgz#8021999f314dc08614f4bcd1f8b7b91f1cd5bf00"
-  integrity sha512-127ZeerlF/GC17TMVkZkarj3f01weI03b+Ne1xHmmaRs9ouYXVkgyAd60GHRzUnCFVo1NKLcZe0Pr8OnTzrxwQ==
+next-themes@^0.0.14:
+  version "0.0.14"
+  resolved "https://registry.yarnpkg.com/next-themes/-/next-themes-0.0.14.tgz#2b9861990bc453149e23d8e6ef1a25a119e36675"
+  integrity sha512-x09OaM+wg3SIlEjOv8B21aw/E36jxTtfW3Dm/DPwMsSMluGt7twe1LigA6nc+mXP1u0qu9MxBaIrPPH6UTiKnA==
 
 next-translate@^1.0.2:
   version "1.0.2"