From 05f1dfc6896d3affa7c494a1b955f230d836a4b7 Mon Sep 17 00:00:00 2001
From: Armand Philippot <git@armandphilippot.com>
Date: Fri, 27 Oct 2023 18:07:45 +0200
Subject: feat: replace next-themes with a custom ThemeProvider

To be honest, next-themes was working fine. However since I use a theme
provider for Prism code blocks, some code is duplicated between this
app and the library. So I prefer to use a custom Provider without the
options I don't need.
---
 src/pages/_document.tsx | 9 +++++++++
 1 file changed, 9 insertions(+)

(limited to 'src/pages/_document.tsx')

diff --git a/src/pages/_document.tsx b/src/pages/_document.tsx
index 317d3af..7e3b5e6 100644
--- a/src/pages/_document.tsx
+++ b/src/pages/_document.tsx
@@ -16,6 +16,15 @@ export default function Document() {
           // eslint-disable-next-line react/jsx-no-literals
           strategy="beforeInteractive"
         />
+        <Script
+          dangerouslySetInnerHTML={{
+            __html: `!function(){const e=localStorage.getItem("${STORAGE_KEY.THEME}"),t="string"==typeof e?JSON.parse(e):void 0,o=window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light",c=e&&["dark","light"].includes(t)?t:o;document.documentElement.setAttribute("data-${STORAGE_KEY.THEME}",c),document.documentElement.style.colorScheme=o}();`,
+          }}
+          // eslint-disable-next-line react/jsx-no-literals
+          id="theme-hydration"
+          // eslint-disable-next-line react/jsx-no-literals
+          strategy="beforeInteractive"
+        />
       </Head>
       <body>
         <Main />
-- 
cgit v1.2.3

