mirror of
https://github.com/cinnyapp/cinny.git
synced 2025-09-13 14:22:25 +03:00
49 lines
1.4 KiB
TypeScript
49 lines
1.4 KiB
TypeScript
import React, { ReactNode, useEffect } from 'react';
|
|
import { configClass, varsClass } from 'folds';
|
|
import {
|
|
DarkTheme,
|
|
LightTheme,
|
|
ThemeContextProvider,
|
|
ThemeKind,
|
|
useActiveTheme,
|
|
useSystemThemeKind,
|
|
} from '../hooks/useTheme';
|
|
import { useSetting } from '../state/hooks/settings';
|
|
import { settingsAtom } from '../state/settings';
|
|
|
|
export function UnAuthRouteThemeManager() {
|
|
const systemThemeKind = useSystemThemeKind();
|
|
|
|
useEffect(() => {
|
|
document.body.className = '';
|
|
document.body.classList.add(configClass, varsClass);
|
|
if (systemThemeKind === ThemeKind.Dark) {
|
|
document.body.classList.add(...DarkTheme.classNames);
|
|
}
|
|
if (systemThemeKind === ThemeKind.Light) {
|
|
document.body.classList.add(...LightTheme.classNames);
|
|
}
|
|
}, [systemThemeKind]);
|
|
|
|
return null;
|
|
}
|
|
|
|
export function AuthRouteThemeManager({ children }: { children: ReactNode }) {
|
|
const activeTheme = useActiveTheme();
|
|
const [monochromeMode] = useSetting(settingsAtom, 'monochromeMode');
|
|
|
|
useEffect(() => {
|
|
document.body.className = '';
|
|
document.body.classList.add(configClass, varsClass);
|
|
|
|
document.body.classList.add(...activeTheme.classNames);
|
|
|
|
if (monochromeMode) {
|
|
document.body.style.filter = 'grayscale(1)';
|
|
} else {
|
|
document.body.style.filter = '';
|
|
}
|
|
}, [activeTheme, monochromeMode]);
|
|
|
|
return <ThemeContextProvider value={activeTheme}>{children}</ThemeContextProvider>;
|
|
}
|