From 60a2755c0a93d158fa030ae9883327190b67d190 Mon Sep 17 00:00:00 2001
From: "Fred K. Schott" <fkschott@gmail.com>
Date: Mon, 26 Jul 2021 13:41:32 -0700
Subject: some docs site polish (#853)

* some docs polish

* attempt to fix theme toggle
---
 docs/src/components/ThemeToggle.tsx | 52 ++++++++++++++-----------------------
 1 file changed, 19 insertions(+), 33 deletions(-)

(limited to 'docs/src/components/ThemeToggle.tsx')

diff --git a/docs/src/components/ThemeToggle.tsx b/docs/src/components/ThemeToggle.tsx
index 95de4fba1..e990d8ea4 100644
--- a/docs/src/components/ThemeToggle.tsx
+++ b/docs/src/components/ThemeToggle.tsx
@@ -2,22 +2,9 @@ import type { FunctionalComponent } from 'preact';
 import { h, Fragment } from 'preact';
 import { useState, useEffect } from 'preact/hooks';
 
-const themes = ['system', 'light', 'dark'];
+const themes = ['light', 'dark'];
 
 const icons = [
-  <svg
-    xmlns="http://www.w3.org/2000/svg"
-    width="20"
-    height="20"
-    viewBox="0 0 20 20"
-    fill="currentColor"
-  >
-    <path
-      fill-rule="evenodd"
-      d="M3 5a2 2 0 012-2h10a2 2 0 012 2v8a2 2 0 01-2 2h-2.22l.123.489.804.804A1 1 0 0113 18H7a1 1 0 01-.707-1.707l.804-.804L7.22 15H5a2 2 0 01-2-2V5zm5.771 7H5V5h10v7H8.771z"
-      clip-rule="evenodd"
-    />
-  </svg>,
   <svg
     xmlns="http://www.w3.org/2000/svg"
     width="20"
@@ -44,39 +31,35 @@ const icons = [
 
 const ThemeToggle: FunctionalComponent = () => {
   const [theme, setTheme] = useState(() => {
-    if (typeof localStorage === 'undefined') {
-      return themes[0];
+    if (import.meta.env.SSR) {
+      return undefined;
     }
-
-    return localStorage.getItem('theme') || themes[0];
+    if (typeof localStorage !== 'undefined' && localStorage.getItem('theme')) {
+      return localStorage.getItem('theme');
+    }
+    if (window.matchMedia('(prefers-color-scheme: dark)').matches) {
+      return 'dark';
+    }
+    return 'light';
   });
 
   useEffect(() => {
     const root = document.documentElement;
-    if (theme === 'system') {
-      localStorage.removeItem('theme');
-      if (window.matchMedia('(prefers-color-scheme: dark)').matches) {
-        root.classList.add('theme-dark');
-      } else {
-        root.classList.remove('theme-dark');
-      }
+    if (theme === 'light') {
+      root.classList.remove('theme-dark');
     } else {
-      localStorage.setItem('theme', theme);
-      if (theme === 'light') {
-        root.classList.remove('theme-dark');
-      } else {
-        root.classList.add('theme-dark');
-      }
+      root.classList.add('theme-dark');
     }
   }, [theme]);
 
+
   return (
     <div id="theme-toggle">
       {themes.map((t, i) => {
         const icon = icons[i];
         const checked = t === theme;
         return (
-          <label className={checked ? 'checked' : ''}>
+          <label className={checked ? ' checked' : ''}>
             {icon}
             <input
               type="radio"
@@ -85,7 +68,10 @@ const ThemeToggle: FunctionalComponent = () => {
               value={t}
               title={`Use ${t} theme`}
               aria-label={`Use ${t} theme`}
-              onChange={() => setTheme(t)}
+              onChange={() => { 
+                localStorage.setItem('theme', t);
+                setTheme(t);
+              }}
             />
           </label>
         );
-- 
cgit v1.2.3

