diff --git a/eslint.config.mjs b/eslint.config.mjs index e4e9331..5b57896 100644 --- a/eslint.config.mjs +++ b/eslint.config.mjs @@ -25,6 +25,7 @@ const eslintConfig = [ }], '@stylistic/jsx-closing-bracket-location': 'off', '@stylistic/jsx-curly-newline': 'off', + '@stylistic/jsx-one-expression-per-line': 'off', '@stylistic/multiline-ternary': 'off', '@stylistic/block-spacing': 'off', '@typescript-eslint/no-empty-object-type': 'off', diff --git a/src/app/(auth)/login/page.tsx b/src/app/(auth)/login/page.tsx index 979f74f..3eeee80 100644 --- a/src/app/(auth)/login/page.tsx +++ b/src/app/(auth)/login/page.tsx @@ -27,7 +27,7 @@ import {ApiResponse} from '@/lib/api' import {Label} from '@/components/ui/label' import logo from '@/assets/logo.webp' import bg from './_assets/bg.webp' -import {useProfileStore} from '@/app/stores' +import {useProfileStore} from '@/components/stores-provider' import Link from 'next/link' export type LoginPageProps = {} diff --git a/src/app/(home)/@header/_client/navs.tsx b/src/app/(home)/@header/_client/navs.tsx deleted file mode 100644 index f98acc8..0000000 --- a/src/app/(home)/@header/_client/navs.tsx +++ /dev/null @@ -1,97 +0,0 @@ -import Image from 'next/image' -import Link from 'next/link' -import down from '@/assets/header/down.svg' - -export function LinkItem(props: { - text: string - href: string -}) { - return ( -
优质/企业/精选IP
-- 超 1000 家企业共同信赖之选!大客户经理全 - 程 1 对 1 沟通,随时为您排忧解难,提供 24 - 小时不间断支持 -
-- {props.label} - - 折扣 - {props.discount} - % - -
-- {props.desc} -
- - ) -} - -export function Oversea(props: {}) { - return ( -产品即将上线,敬请期待~
++ {props.label} + {props.discount && ( + + 折扣 {props.discount}% + + )} +
++ {props.desc} +
+ + ) +} diff --git a/src/app/(home)/@header/_client/solution.tsx b/src/app/(home)/@header/menu-solution.tsx similarity index 83% rename from src/app/(home)/@header/_client/solution.tsx rename to src/app/(home)/@header/menu-solution.tsx index 20ab4e3..fc13960 100644 --- a/src/app/(home)/@header/_client/solution.tsx +++ b/src/app/(home)/@header/menu-solution.tsx @@ -1,4 +1,3 @@ -import Image from 'next/image' import Wrap from '@/components/wrap' import s01 from '@/assets/header/solution/01.svg' import s02 from '@/assets/header/solution/02.svg' @@ -9,10 +8,11 @@ import s06 from '@/assets/header/solution/06.svg' import s07 from '@/assets/header/solution/07.svg' import s08 from '@/assets/header/solution/08.svg' import {StaticImageData} from 'next/image' +import {FragmentTitle} from '@/app/(home)/@header/common' export default function SolutionMenu() { return ( -{props.desc}
-{props.desc}
) } diff --git a/src/app/(home)/@header/page.tsx b/src/app/(home)/@header/page.tsx index 1356492..e08fc21 100644 --- a/src/app/(home)/@header/page.tsx +++ b/src/app/(home)/@header/page.tsx @@ -1,39 +1,36 @@ 'use client' -import UserCenter from '@/components/composites/user-center' -import {useClientStore, useProfileStore} from '@/app/stores' -import {buttonVariants} from '@/components/ui/button' -import { - Navigation, - NavigationIndicator, - NavigationLink, - NavigationLinkItem, - NavigationGroup, - NavigationTriggerItem, - NavigationMenuViewport, -} from '@/components/ui/navigation-menu' -import Wrap from '@/components/wrap' -import {merge} from '@/lib/utils' -import {useState, useCallback, useEffect, useContext} from 'react' +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 ProductMenu, {Domestic} from '@/app/(home)/@header/_client/product' -import SolutionMenu from '@/app/(home)/@header/_client/solution' -import HelpMenu from '@/app/(home)/@header/_client/help' +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 HeaderProps = {} +export type ProviderProps = {} -export default function Header(props: HeaderProps) { +export default function Page(props: ProviderProps) { // ====================== - // 背景显示状态 + // 滚动条状态 // ====================== - const [expand, setExpand] = useState(false) - const [scroll, setScroll] = useState(false) + 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 () => { @@ -42,10 +39,57 @@ export default function Header(props: HeaderProps) { }, [handleScroll]) // ====================== - // 移动端 + // 菜单状态 // ====================== - const lg = useClientStore(state => state.breakpoint.lg) + const [menu, setMenu] = useState(false) + const [page, setPage] = useState(0) + const pages = useMemo(() => [ +