This commit is contained in:
Jordy Hoogeveen
2026-09-15 14:02:17 +02:00
parent 750dc69e56
commit 0b67f346e1
19 changed files with 449 additions and 161 deletions
+20 -3
View File
@@ -1,7 +1,8 @@
import { createContext, useContext, useState, useMemo, useRef } from "react";
import JSZip from "jszip";
import { INITIAL_DATA } from "../constants/index.js";
import { migrateData } from "../utils/storage.js";
import { STANDAARD_THEMA } from "../constants/themas.js";
import { migrateData, loadFromStorage, saveToStorage } from "../utils/storage.js";
import { useTheme } from "../hooks/useTheme.js";
const AppContext = createContext(null);
@@ -34,7 +35,22 @@ export function AppProvider({ children }) {
};
// ── UI ────────────────────────────────────────────────────────
const [darkMode, setDarkMode] = useState(true);
// Weergavevoorkeuren overleven een herlaad. Ze stonden eerder alleen in
// state, dus na een refresh stond je weer in het donker.
const [darkMode, setDarkModeRaw] = useState(() => loadFromStorage("darkMode") ?? true);
const [thema, setThemaRaw] = useState(() => loadFromStorage("thema") ?? STANDAARD_THEMA);
const setDarkMode = (v) => {
const n = typeof v === "function" ? v(darkMode) : v;
saveToStorage("darkMode", n);
setDarkModeRaw(n);
};
const setThema = (id) => {
saveToStorage("thema", id);
setThemaRaw(id);
};
const [locked, setLocked] = useState(false);
const [tab, setTab] = useState(0);
const [menuOpen, setMenuOpen] = useState(false);
@@ -87,7 +103,7 @@ export function AppProvider({ children }) {
const setUsers = (u) => { localStorage.setItem("wbjw_users", JSON.stringify(u)); setUsersRaw(u); };
// ── Thema ─────────────────────────────────────────────────────
const T = useTheme(darkMode);
const T = useTheme(thema, darkMode);
// ── Afgeleide waarden ─────────────────────────────────────────
const ev = data.eigenVermogen;
@@ -199,6 +215,7 @@ export function AppProvider({ children }) {
loggedIn, currentUser, login, logout, loading, updateProfile, changePassword,
avatar, setAvatar,
darkMode, setDarkMode,
thema, setThema,
locked, setLocked,
tab, setTab,
menuOpen, setMenuOpen,