11import React , { ReactNode , useEffect } from 'react' ;
2- import { configClass , varsClass } from 'folds' ;
2+ import { config , configClass , varsClass } from 'folds' ;
33import {
44 DarkTheme ,
55 LightTheme ,
@@ -55,6 +55,7 @@ export function AuthRouteThemeManager({ children }: { children: ReactNode }) {
5555
5656export function CustomThemeManager ( ) {
5757 const [ customBackgroundEnabled ] = useSetting ( settingsAtom , 'customBackgroundEnabled' ) ;
58+ const [ customBackgroundOnly ] = useSetting ( settingsAtom , 'customBackgroundOnly' ) ;
5859 const [ customBgColor1 ] = useSetting ( settingsAtom , 'customBgColor1' ) ;
5960 const [ customBgColor2 ] = useSetting ( settingsAtom , 'customBgColor2' ) ;
6061 const [ customBgColor3 ] = useSetting ( settingsAtom , 'customBgColor3' ) ;
@@ -63,33 +64,52 @@ export function CustomThemeManager() {
6364 const [ transparency ] = useSetting ( settingsAtom , 'transparency' ) ;
6465 const [ angle ] = useSetting ( settingsAtom , 'angle' ) ;
6566 const [ blur ] = useSetting ( settingsAtom , 'blur' ) ;
66-
6767 const [ monochromeMode ] = useSetting ( settingsAtom , 'monochromeMode' ) ;
6868
6969 useEffect ( ( ) => {
70+ const gradientLayer = document . getElementById ( 'gradientLayer' ) ;
71+ if ( ! gradientLayer ) return ;
72+
73+ gradientLayer . style . setProperty ( 'z-index' , customBackgroundOnly ? config . zIndex . Z100 : config . zIndex . Max ) ;
74+
7075 if ( ! customBackgroundEnabled ) {
71- document . body . style . background = 'none' ;
72- document . body . style . opacity = '1 ' ;
73- document . body . style . backdropFilter = 'none' ;
76+ gradientLayer . style . background = 'none' ;
77+ gradientLayer . style . opacity = '0 ' ;
78+ gradientLayer . style . backdropFilter = 'none' ;
7479 return ;
7580 }
7681
7782 const colors = [ customBgColor1 , customBgColor2 , customBgColor3 , customBgColor4 , customBgColor5 ]
7883 . filter ( Boolean )
79- . map ( c => ( monochromeMode ? hexToGrayscale ( c ) : c ) )
84+ . map ( ( c ) => ( monochromeMode ? hexToGrayscale ( c ) : c ) )
8085 . join ( ', ' ) ;
81-
82- const gradient = `linear-gradient(${ angle } deg, ${ colors } )` ;
83- document . body . style . background = gradient ;
84-
86+
87+ gradientLayer . style . background = `linear-gradient(${ angle } deg, ${ colors } )` ;
88+
8589 if ( blur && blur > 0 ) {
86- document . body . style . backdropFilter = `blur(${ blur } px)` ;
90+ gradientLayer . style . backdropFilter = `blur(${ blur } px)` ;
91+ } else {
92+ gradientLayer . style . backdropFilter = 'none' ;
8793 }
88-
94+
8995 if ( transparency !== undefined ) {
90- document . body . style . opacity = `${ 1 - transparency / 100 } ` ;
96+ gradientLayer . style . opacity = `${ transparency / 100 } ` ;
97+ } else {
98+ gradientLayer . style . opacity = '0' ;
9199 }
92- } , [ customBackgroundEnabled , customBgColor1 , customBgColor2 , customBgColor3 , customBgColor4 , customBgColor5 , transparency , angle , blur , monochromeMode ] ) ;
100+ } , [
101+ customBackgroundEnabled ,
102+ customBackgroundOnly ,
103+ customBgColor1 ,
104+ customBgColor2 ,
105+ customBgColor3 ,
106+ customBgColor4 ,
107+ customBgColor5 ,
108+ transparency ,
109+ angle ,
110+ blur ,
111+ monochromeMode ,
112+ ] ) ;
93113
94114 return null ;
95115}
0 commit comments