Skip to content

Commit 5e0ff9a

Browse files
committed
fix(color-mode): fix pristine className
1 parent 0760bbd commit 5e0ff9a

File tree

2 files changed

+6
-3
lines changed

2 files changed

+6
-3
lines changed

packages/core/src/colorModes.js

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -120,14 +120,17 @@ export function useColorModeState(theme, { target = document.body } = {}) {
120120

121121
// Add mode className
122122
const customPropertiesEnabled = hasCustomPropertiesEnabled(theme)
123+
const initialColorModeName = getInitialColorModeName(theme)
124+
const pristine = mode === initialColorModeName && !storage.get()
123125
React.useLayoutEffect(() => {
124126
if (!customPropertiesEnabled) return undefined
127+
if (pristine) return undefined
125128
const className = getColorModeClassName(mode)
126129
target.classList.add(className)
127130
return () => {
128131
target.classList.remove(className)
129132
}
130-
}, [customPropertiesEnabled, target, mode])
133+
}, [customPropertiesEnabled, target, mode, pristine])
131134

132135
// Store mode preference
133136
const changedRef = React.useRef(false)

packages/core/src/colorModes.test.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -203,7 +203,7 @@ describe('#useColorModeState', () => {
203203
const setDarkModeBtn = getByTestId('setDarkMode')
204204
const setDefaultModeBtn = getByTestId('setDefaultMode')
205205
expect(getByTestId('mode')).toHaveTextContent('default')
206-
expect(document.body).toHaveClass('xstyled-color-mode-default')
206+
expect(document.body).not.toHaveClass('xstyled-color-mode-default')
207207
expect(document.body).not.toHaveClass('xstyled-color-mode-dark')
208208
fireEvent.click(setDarkModeBtn)
209209
expect(document.body).not.toHaveClass('xstyled-color-mode-default')
@@ -222,7 +222,7 @@ describe('#useColorModeState', () => {
222222
const setDarkModeBtn = getByTestId('setDarkMode')
223223
const setDefaultModeBtn = getByTestId('setDefaultMode')
224224
expect(getByTestId('mode')).toHaveTextContent('default')
225-
expect(main).toHaveClass('xstyled-color-mode-default')
225+
expect(main).not.toHaveClass('xstyled-color-mode-default')
226226
expect(main).not.toHaveClass('xstyled-color-mode-dark')
227227
fireEvent.click(setDarkModeBtn)
228228
expect(main).not.toHaveClass('xstyled-color-mode-default')

0 commit comments

Comments
 (0)