'use client' import {useCallback, useEffect, useMemo, useState, PointerEvent, ComponentProps} from 'react' import Link from 'next/link' import Image from 'next/image' import SolutionMenu from './menu-solution' import ProductMenu from './menu-product' import HelpMenu from './menu-help' import MobileMenu from './menu-mobile' import Wrap from '@/components/wrap' import logo from '@/assets/logo.webp' import {Button} from '@/components/ui/button' import {useProfileStore} from '@/components/stores-provider' import UserCenter from '@/components/composites/user-center' import {MenuIcon} from 'lucide-react' import down from '@/assets/header/down.svg' import {merge} from '@/lib/utils' import {HeaderContext} from './common' export type ProviderProps = {} export default function Page(props: ProviderProps) { // ====================== // 滚动条状态 // ====================== const [scroll, setScroll] = useState(false) // Changed to false for client-side rendering const handleScroll = useCallback(() => { setScroll(window.scrollY > 48) }, []) useEffect(() => { // Initialize scroll state on client setScroll(window.scrollY > 48) window.addEventListener('scroll', handleScroll) return () => { window.removeEventListener('scroll', handleScroll) } }, [handleScroll]) // ====================== // 菜单状态 // ====================== const [menu, setMenu] = useState(false) const [page, setPage] = useState(0) const pages = useMemo(() => [ , , , , ], []) const enterMenu = (i: number) => { return (e: PointerEvent) => { setPage(i) if (e.pointerType === 'mouse' || page !== i) { setMenu(true) } else { setMenu(!menu) } } } const exitMenu = (e: PointerEvent) => { if (e.pointerType === 'mouse') { setMenu(false) } } const enterMenuContent = (e: PointerEvent) => { setMenu(true) } const exitMenuContent = (e: PointerEvent) => { if (e.pointerType === 'mouse') { setMenu(false) } } const enterMenuMask = (e: PointerEvent) => { if (e.pointerType !== 'mouse') { setMenu(false) } } // ====================== // 用户信息 // ====================== const profile = useProfileStore(store => store.profile) // ====================== // render // ====================== return ( {/* 菜单栏 */} {/* 桌面端菜单 */} {/* 移动端菜单 */} {/* logo */} {/* 登录 */} {profile == undefined ? ( <> 登录 注册 > ) : ( ) } {/* 下拉菜单 */} {pages[page]} {/* 遮罩层 */} ) } function LinkItem(props: { text: string href: string }) { return ( {props.text} ) } function MenuItem(props: { text: string active: boolean } & ComponentProps<'button'>) { return ( {props.text} ) }