Skip to content

Commit 1218921

Browse files
luk1337mfocko
authored andcommitted
Persist dark theme preference
Signed-off-by: LuK1337 <priv.luk@gmail.com>
1 parent d4ec4df commit 1218921

1 file changed

Lines changed: 12 additions & 6 deletions

File tree

frontend/src/routes/__root.tsx

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ import {
5252
useMatchRoute,
5353
useMatches,
5454
} from "@tanstack/react-router";
55-
import React, { useState } from "react";
55+
import React, { useEffect, useState } from "react";
5656
import { useTitle } from "../components/shared/useTitle";
5757
import packitLogo from "../static/logo.png";
5858

@@ -69,15 +69,21 @@ export const Route = createRootRouteWithContext<RouterContext>()({
6969
const [isMobileView, setIsMobileView] = useState(true);
7070
const [isNavOpenMobile, setIsNavOpenMobile] = useState(false);
7171

72-
const [isDarkTheme, setIsDarkTheme] = React.useState(false);
72+
const [isDarkTheme, setIsDarkTheme] = React.useState(
73+
window.sessionStorage.getItem("theme-dark") === "true",
74+
);
7375

74-
const toggleDarkTheme = (_evt, selected: boolean) => {
75-
const darkThemeToggleClicked = !selected === isDarkTheme;
76+
useEffect(() => {
7677
const htmlRoot = document.querySelector("html");
7778
if (htmlRoot) {
78-
htmlRoot.classList.toggle("pf-v6-theme-dark", darkThemeToggleClicked);
79-
setIsDarkTheme(darkThemeToggleClicked);
79+
htmlRoot.classList.toggle("pf-v6-theme-dark", isDarkTheme);
8080
}
81+
window.sessionStorage.setItem("theme-dark", isDarkTheme.toString());
82+
}, [isDarkTheme]);
83+
84+
const toggleDarkTheme = (_evt, selected: boolean) => {
85+
const darkThemeToggleClicked = !selected === isDarkTheme;
86+
setIsDarkTheme(darkThemeToggleClicked);
8187
};
8288

8389
const matchRoute = useMatchRoute();

0 commit comments

Comments
 (0)