diff --git a/app/[lang]/components/Footer.tsx b/app/[lang]/components/Footer.tsx index 3156167..bde7d71 100644 --- a/app/[lang]/components/Footer.tsx +++ b/app/[lang]/components/Footer.tsx @@ -1,6 +1,7 @@ import Link from "next-intl/link"; import { FaGithub, FaRegEnvelope } from "react-icons/fa"; import { useTranslations } from "next-intl"; +import ThemeSwitcher from "@/app/[lang]/components/ThemeSwitcher"; export default function Footer() { const t = useTranslations("Footer"); @@ -34,6 +35,9 @@ export default function Footer() { EN +
+ +
); diff --git a/app/[lang]/components/Navbar.tsx b/app/[lang]/components/Navbar.tsx index a1b6eef..952df12 100644 --- a/app/[lang]/components/Navbar.tsx +++ b/app/[lang]/components/Navbar.tsx @@ -54,9 +54,6 @@ export default function Navbar() { {t("contact")} -
  • - -
  • diff --git a/app/[lang]/components/ThemeSwitcher.tsx b/app/[lang]/components/ThemeSwitcher.tsx index 8236bc4..4ebf81a 100644 --- a/app/[lang]/components/ThemeSwitcher.tsx +++ b/app/[lang]/components/ThemeSwitcher.tsx @@ -1,42 +1,46 @@ "use client"; -import { MdBrightness2, MdCircle } from "react-icons/md"; -import useDarkMode from "@/hooks/useDarkMode"; import { useEffect, useState } from "react"; -import "@/css/theme-toggle.css"; +import useDarkMode from "@/hooks/useDarkMode"; const ThemeSwitcher = () => { const [mounted, setMounted] = useState(false); const [colorTheme, setTheme] = useDarkMode(); - useEffect(() => { - setMounted(true); - }, []); + useEffect(() => setMounted(true), []); - if (!mounted) { - return null; - } + if (!mounted) return null; return ( -
    + <> {colorTheme === "light" ? ( -
    setTheme("light")} - > - +
    setTheme("light")}> + + +
    ) : ( -
    setTheme("dark")} - > - +
    setTheme("dark")}> + + +
    )} -
    + ); }; diff --git a/hooks/useDarkMode.ts b/hooks/useDarkMode.ts index ec3013b..754a4c6 100644 --- a/hooks/useDarkMode.ts +++ b/hooks/useDarkMode.ts @@ -1,9 +1,16 @@ import { Dispatch, SetStateAction, useEffect, useState } from "react"; function useDarkMode(): [string, Dispatch>] { + const prefersDarkMode = + typeof window !== "undefined" && + window.matchMedia("(prefers-color-scheme: dark)").matches; + const [theme, setTheme] = useState( - typeof window !== "undefined" ? localStorage.theme : "dark" + typeof window !== "undefined" + ? localStorage.theme || (prefersDarkMode ? "dark" : "light") + : "dark" ); + const colorTheme = theme === "dark" ? "light" : "dark"; useEffect(() => {