Files
LaunchPad/apps/frontend/src/main.tsx

41 lines
1.3 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import React from "react";
import ReactDOM from "react-dom/client";
import { QueryClient, QueryClientProvider } from "@tanstack/react-query";
import { RouterProvider } from "@tanstack/react-router";
import { router } from "./router.js";
import "./index.css";
// Muss VOR dem ersten Render laufen und unabhängig davon, welche Route
// zuerst geladen wird (z. B. Direktlink auf /admin/...) vorher hing das
// Anwenden der Dark-Mode-Klasse an useTheme(), das nur auf Home/Einstellungen
// aufgerufen wurde, wodurch andere Admin-Seiten beim Direktaufruf immer hell
// starteten, egal was gespeichert war.
function applyStoredTheme() {
const stored = window.localStorage.getItem("launchpad-theme");
const theme =
stored === "light" || stored === "dark"
? stored
: window.matchMedia("(prefers-color-scheme: dark)").matches
? "dark"
: "light";
document.documentElement.classList.toggle("dark", theme === "dark");
}
applyStoredTheme();
const queryClient = new QueryClient({
defaultOptions: {
queries: {
staleTime: 30_000,
refetchOnWindowFocus: false,
},
},
});
ReactDOM.createRoot(document.getElementById("root")!).render(
<React.StrictMode>
<QueryClientProvider client={queryClient}>
<RouterProvider router={router} />
</QueryClientProvider>
</React.StrictMode>
);