Added registration and settings page

This commit is contained in:
Andreas Dahm committed 2026-04-23 09:04:12 +02:00
1 parent b34234caa1
commit 2b5f77f0b9
12 files changed
+905 -142

No files matched your search

+47
View File
@@ -0,0 +1,47 @@
import {createContext, useContext, useEffect, useState} from 'react';
import {useTranslation} from 'react-i18next';
const DARK_MODE_STORAGE_KEY = 'tbp_dark_mode';
const PreferencesContext = createContext(null);
export function PreferencesProvider({children}) {
const {i18n} = useTranslation();
const [isDarkMode, setIsDarkMode] = useState(() => {
const stored = localStorage.getItem(DARK_MODE_STORAGE_KEY);
return stored === null ? true : stored === 'true';
});
useEffect(() => {
if (isDarkMode) {
document.documentElement.classList.add('dark');
} else {
document.documentElement.classList.remove('dark');
}
localStorage.setItem(DARK_MODE_STORAGE_KEY, String(isDarkMode));
}, [isDarkMode]);
const setLanguage = (lang) => i18n.changeLanguage(lang);
return (
<PreferencesContext.Provider
value={{
isDarkMode,
setDarkMode: setIsDarkMode,
language: i18n.language,
setLanguage,
}}
>
{children}
</PreferencesContext.Provider>
);
}
export function usePreferences() {
const ctx = useContext(PreferencesContext);
if (!ctx) {
throw new Error('usePreferences must be used inside <PreferencesProvider>');
}
return ctx;
}