This commit is contained in:
Mackie 2026-06-03 23:03:15 +08:00
parent 0ffe479c91
commit cac5ea56ff
2 changed files with 25 additions and 40 deletions

View file

@ -9,47 +9,24 @@ import type { Header } from '@/payload-types'
import { Logo } from '@/components/Logo/Logo' import { Logo } from '@/components/Logo/Logo'
import { HeaderNav } from './Nav' import { HeaderNav } from './Nav'
import { useThemeMode } from '@/hooks/useThemeMode' import { useThemeMode } from '@/hooks/useThemeMode'
import { Container } from '@/components/ui/Container' // Import your custom container
interface HeaderClientProps { // ... ToggleButton component remains the same ...
data: Header
}
function ToggleButton() {
const { isDark, toggle } = useThemeMode()
return (
<button
onClick={toggle}
className="flex items-center gap-2 rounded-full border px-3 py-1.5 text-xs transition-all"
style={{
border: isDark ? '1px solid rgba(255,255,255,0.2)' : '1px solid rgba(0,0,0,0.15)',
color: isDark ? 'rgba(255,255,255,0.7)' : 'rgba(0,0,0,0.6)',
background: 'transparent',
cursor: 'pointer',
}}
>
{isDark ? '☀ Light' : '☾ Dark'}
</button>
)
}
export const HeaderClient: React.FC<HeaderClientProps> = ({ data }) => { export const HeaderClient: React.FC<HeaderClientProps> = ({ data }) => {
const [theme, setTheme] = useState<string | null>(null) const [theme, setTheme] = useState<string | null>(null)
const { headerTheme, setHeaderTheme } = useHeaderTheme() const { headerTheme, setHeaderTheme } = useHeaderTheme()
const pathname = usePathname() const pathname = usePathname()
useEffect(() => { // ... useEffect hooks remain the same ...
setHeaderTheme(null)
// eslint-disable-next-line react-hooks/exhaustive-deps
}, [pathname])
useEffect(() => {
if (headerTheme && headerTheme !== theme) setTheme(headerTheme)
// eslint-disable-next-line react-hooks/exhaustive-deps
}, [headerTheme])
return ( return (
<header className="container relative z-20" {...(theme ? { 'data-theme': theme } : {})}> <header
<div className="py-8 flex justify-between"> className="relative z-20 border-b border-foreground/8"
{...(theme ? { 'data-theme': theme } : {})}
>
<Container>
<div className="py-8 flex justify-between items-center">
<Link href="/"> <Link href="/">
<Logo loading="eager" priority="high" className="invert dark:invert-0" /> <Logo loading="eager" priority="high" className="invert dark:invert-0" />
</Link> </Link>
@ -58,6 +35,7 @@ export const HeaderClient: React.FC<HeaderClientProps> = ({ data }) => {
<ToggleButton /> <ToggleButton />
</div> </div>
</div> </div>
</Container>
</header> </header>
) )
} }

View file

@ -1,9 +1,16 @@
import { HeaderClient } from './Component.client' import { HeaderClient } from './Component.client'
import { getCachedGlobal } from '@/utilities/getGlobals' import { getCachedGlobal } from '@/utilities/getGlobals'
import { Container } from '@/components/ui/Container' // Adjust path as needed
import React from 'react' import React from 'react'
export async function Header() { export async function Header() {
const headerData = await getCachedGlobal('header', 1)() const headerData = await getCachedGlobal('header', 1)()
return <HeaderClient data={headerData} /> return (
<header className="border-b border-foreground/8">
<Container>
<HeaderClient data={headerData} />
</Container>
</header>
)
} }