diff --git a/src/app/features/settings/general/General.tsx b/src/app/features/settings/general/General.tsx index ed11ec4d..b861a060 100644 --- a/src/app/features/settings/general/General.tsx +++ b/src/app/features/settings/general/General.tsx @@ -305,6 +305,7 @@ function PageZoomInput() { function Appearance() { const [systemTheme, setSystemTheme] = useSetting(settingsAtom, 'useSystemTheme'); + const [monochromeMode, setMonochromeMode] = useSetting(settingsAtom, 'monochromeMode'); const [twitterEmoji, setTwitterEmoji] = useSetting(settingsAtom, 'twitterEmoji'); return ( @@ -332,6 +333,13 @@ function Appearance() { /> + + } + /> + + { document.body.className = ''; document.body.classList.add(configClass, varsClass); document.body.classList.add(...activeTheme.classNames); - }, [activeTheme]); + + if (monochromeMode) { + document.body.style.filter = 'grayscale(1)'; + } else { + document.body.style.filter = ''; + } + }, [activeTheme, monochromeMode]); return {children}; } diff --git a/src/app/state/settings.ts b/src/app/state/settings.ts index 15bf9a14..31ee6ccb 100644 --- a/src/app/state/settings.ts +++ b/src/app/state/settings.ts @@ -14,6 +14,7 @@ export interface Settings { useSystemTheme: boolean; lightThemeId?: string; darkThemeId?: string; + monochromeMode?: boolean; isMarkdown: boolean; editorToolbar: boolean; twitterEmoji: boolean; @@ -47,6 +48,7 @@ const defaultSettings: Settings = { useSystemTheme: true, lightThemeId: undefined, darkThemeId: undefined, + monochromeMode: false, isMarkdown: true, editorToolbar: false, twitterEmoji: false,