generated from Dicken/dickendock
41 lines
1.3 KiB
TypeScript
41 lines
1.3 KiB
TypeScript
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>
|
||
);
|