diff --git a/src/components/header/index.tsx b/src/components/header/index.tsx index ad295a3..18e65fa 100644 --- a/src/components/header/index.tsx +++ b/src/components/header/index.tsx @@ -5,53 +5,6 @@ import Link from "next/link" import { useTheme } from "next-themes" export function Header() { - const { theme, systemTheme, setTheme } = useTheme() - const [mounted, setMounted] = useState(false) - - useEffect(() => { - setMounted(true) - }, []) - - const renderThemeToggle = () => { - if (!mounted) return null - - const currentTheme = theme === "system" ? systemTheme : theme - - if (currentTheme === "dark") { - return ( - - ) - } else { - return ( - - ) - } - } - return (
@@ -65,14 +18,13 @@ export function Header() { >FAQ */} - +
- +
- {renderThemeToggle()}
diff --git a/src/pages/settings/index.tsx b/src/pages/settings/index.tsx index 4ba51bc..8952ac4 100644 --- a/src/pages/settings/index.tsx +++ b/src/pages/settings/index.tsx @@ -1,4 +1,4 @@ -import { createRef, useState } from "react" +import { createRef, useEffect, useState } from "react" import { Button } from "../../components/button" import { Card } from "../../components/card" import { Header } from "../../components/header" @@ -13,6 +13,7 @@ import { Input } from "../../components/input" import { MdDelete } from "react-icons/md" import { Toggle } from "../../components/toggle" import Head from "next/head" +import { useTheme } from "next-themes" type SettingsState = { relays: SettingsRelay[] @@ -23,6 +24,62 @@ export default function Settings() { relays: typeof window !== "undefined" ? getRelays() : [], }) const newPool = createRef() + const { theme, systemTheme, setTheme } = useTheme() + const [mounted, setMounted] = useState(false) + + useEffect(() => { + setMounted(true) + }, []) + + const ThemeToggle = () => { + if (!mounted) return null + + let content: JSX.Element + const currentTheme = theme === "system" ? systemTheme : theme + const isDark = currentTheme === "dark" + + const toggleHandler = () => setTheme(isDark ? "light" : "dark") + + if (isDark) { + content = ( + + Theme toggle + + + ) + } else { + content = ( + + Theme toggle + + + ) + } + + return ( +
+

Light mode

+
+

Toggle

+ {content} +
+
+ ) + } return ( <> @@ -53,61 +110,66 @@ export default function Settings() { /> -
+
-

Relays

-
    - {settings.relays.map((relay) => ( -
  • -
    - { - toggleRelay(relay.url) - setSettings({ - ...settings, - relays: getRelays(), - }) - }} - /> - - -
    -
  • - ))} -
- - +
+

Relays

+
    + {settings.relays.map((relay) => ( +
  • +
    + { + toggleRelay(relay.url) + setSettings({ + ...settings, + relays: getRelays(), + }) + }} + /> + + +
    +
  • + ))} +
+ + +
+
+ +