Skip to content

Commit 292a83f

Browse files
committed
Move ColorModeSwitcher to a separate component
1 parent 4d42022 commit 292a83f

File tree

1 file changed

+25
-18
lines changed

1 file changed

+25
-18
lines changed

packages/docs/src/components/layout.js

Lines changed: 25 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -37,12 +37,6 @@ const getModeName = (mode) => {
3737

3838
export default function DocsLayout(props) {
3939
const [menuOpen, setMenuOpen] = useState(false)
40-
const [mode, setMode] = useColorMode()
41-
const [hydrated, setHydrated] = useState(false)
42-
43-
useEffect(() => {
44-
setHydrated(true)
45-
}, [])
4640

4741
const { pathname } = props.location
4842
const isLanding = pathname === '/'
@@ -53,8 +47,6 @@ export default function DocsLayout(props) {
5347

5448
const showNav = !props.pageContext?.frontmatter?.hidenav
5549

56-
const nextColorMode = modes[(modes.indexOf(mode) + 1) % modes.length]
57-
5850
return (
5951
<Fragment>
6052
<Head {...props} />
@@ -95,16 +87,7 @@ export default function DocsLayout(props) {
9587
<NavLink href="https://github.com/system-ui/theme-ui">
9688
GitHub
9789
</NavLink>
98-
<Button
99-
aria-label={`Change color mode to ${nextColorMode}`}
100-
sx={{
101-
ml: 2,
102-
whiteSpace: 'pre',
103-
}}
104-
onClick={() => setMode(nextColorMode)}
105-
>
106-
{getModeName(hydrated ? mode : undefined)}
107-
</Button>
90+
<ColorModeSwitcher />
10891
</Flex>
10992
</Flex>
11093
</Flex>
@@ -209,3 +192,27 @@ function HeaderScrollShadow() {
209192
/>
210193
)
211194
}
195+
196+
function ColorModeSwitcher() {
197+
const [mode, setMode] = useColorMode()
198+
const [hydrated, setHydrated] = useState(false)
199+
200+
useEffect(() => {
201+
setHydrated(true)
202+
}, [])
203+
204+
const nextColorMode = modes[(modes.indexOf(mode) + 1) % modes.length]
205+
206+
return (
207+
<Button
208+
aria-label={`Change color mode to ${nextColorMode}`}
209+
sx={{
210+
ml: 2,
211+
whiteSpace: 'pre',
212+
}}
213+
onClick={() => setMode(nextColorMode)}
214+
>
215+
{getModeName(hydrated ? mode : undefined)}
216+
</Button>
217+
)
218+
}

0 commit comments

Comments
 (0)