Skip to content

Commit 395846f

Browse files
fix: header theme (#51)
* fix: ui fixes for footer * fix: ui fixes for footer * fix: ui fixes for footer * fix: ui fixes for footer v3 * fix: header theme * fix: header theme toggle * fix: theme toggles * fix: build failure * fix: z-index
1 parent 3548367 commit 395846f

File tree

3 files changed

+23
-5
lines changed

3 files changed

+23
-5
lines changed

custom-implementation/src/components/header.css

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
.custom-header {
2-
background-color: white;
2+
z-index: 60;
33
}
44

55
.custom-header nav a {

custom-implementation/src/components/header.tsx

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
'use client'
22

3+
import { useEffect, useState } from 'react'
34
import {
45
ComponentConfigContext,
56
HeaderV30 as SharedHeader,
@@ -11,10 +12,23 @@ const Header = ({
1112
logo,
1213
links,
1314
actions,
14-
version,
1515
collapseOnScroll = true,
1616
}: // eslint-disable-next-line @typescript-eslint/no-explicit-any
1717
any) => {
18+
const html = document.getElementsByTagName('html')[0]
19+
const [theme, setTheme] = useState(html.getAttribute('class'))
20+
useEffect(() => {
21+
const observer = new MutationObserver(() => {
22+
setTheme(html.getAttribute('class'))
23+
})
24+
25+
const config = { attributes: true, attributeFilter: ['class'] }
26+
observer.observe(html, config)
27+
return () => {
28+
observer.disconnect()
29+
}
30+
}, [html])
31+
1832
return (
1933
<div>
2034
<ComponentConfigContext.Provider
@@ -25,7 +39,7 @@ any) => {
2539
logo={logo}
2640
items={links}
2741
actions={actions}
28-
version={version}
42+
version={theme === 'dark' ? 'light' : 'dark'}
2943
collapseOnScroll={collapseOnScroll}
3044
wrapperClassName="custom-header"
3145
/>

custom-implementation/src/main.tsx

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,16 +20,20 @@ const render = async () => {
2020
const sidenav = document.querySelector('button.fern-search-bar')
2121
?.parentElement as HTMLElement
2222

23+
const theme = document.getElementsByTagName('html')[0].getAttribute('class')
24+
2325
if (!document.getElementById('theme-switch')) {
2426
const wrapper = document.createElement('div')
2527
wrapper.setAttribute('id', 'theme-switch')
2628
sidenav.appendChild(wrapper)
27-
2829
ReactDOM.render(React.createElement(ThemeSwitch), wrapper)
2930
}
3031

3132
ReactDOM.render(
32-
React.createElement(Header, { ...data.header }),
33+
React.createElement(Header, {
34+
...data.header,
35+
version: theme == 'dark' ? 'light' : 'dark',
36+
}),
3337
document.getElementById('fern-header'),
3438
() => {
3539
// Once the header component is loaded, make it visible

0 commit comments

Comments
 (0)