实现个人中心下拉菜单;更新部分 eslint 规则

This commit is contained in:
2025-06-06 18:41:19 +08:00
parent 1d0008fd4d
commit cc39317fdf
14 changed files with 917 additions and 81 deletions

View File

@@ -10,6 +10,7 @@ import Wrap from '@/components/wrap'
import logo from '@/assets/logo.webp'
import {Button} from '@/components/ui/button'
import {useProfileStore} from '@/components/providers/StoreProvider'
import UserCenter from '@/components/composites/user-center'
export const HeaderContext = createContext<{
setMenu: (value: boolean) => void
@@ -18,7 +19,6 @@ export const HeaderContext = createContext<{
export type ProviderProps = {}
export default function Provider(props: ProviderProps) {
// ======================
// 滚动条状态
// ======================
@@ -45,9 +45,9 @@ export default function Provider(props: ProviderProps) {
const [menu, setMenu] = useState(false)
const [page, setPage] = useState(0)
const pages = useMemo(() => [
<ProductMenu key={`product`}/>,
<SolutionMenu key={`solution`}/>,
<HelpMenu key={`help`}/>,
<ProductMenu key="product"/>,
<SolutionMenu key="solution"/>,
<HelpMenu key="help"/>,
], [])
// ======================
@@ -73,16 +73,16 @@ export default function Provider(props: ProviderProps) {
<Wrap className="h-20 max-md:h-16 flex justify-between">
<div className="flex justify-between gap-8">
{/* logo */}
<Link href="/" className={`flex items-center`}>
<Image src={logo} alt={`logo`} height={48}/>
<Link href="/" className="flex items-center">
<Image src={logo} alt="logo" height={48}/>
</Link>
{/* 菜单 */}
<nav>
<ul className="h-full flex items-stretch max-lg:hidden">
<LinkItem text={`首页`} href={`/`}/>
<LinkItem text="首页" href="/"/>
<MenuItem
text={`产品订购`}
text="产品订购"
active={menu && page === 0}
onEnter={() => {
setMenu(true)
@@ -93,7 +93,7 @@ export default function Provider(props: ProviderProps) {
}}
/>
<MenuItem
text={`业务场景`}
text="业务场景"
active={menu && page === 1}
onEnter={() => {
setMenu(true)
@@ -104,7 +104,7 @@ export default function Provider(props: ProviderProps) {
}}
/>
<MenuItem
text={`帮助中心`}
text="帮助中心"
active={menu && page === 2}
onEnter={() => {
setMenu(true)
@@ -115,39 +115,44 @@ export default function Provider(props: ProviderProps) {
}}
/>
<LinkItem
text={`企业服务`} href={`#`}/>
text="企业服务"
href="#"/>
<LinkItem
text={`推广返利`} href={`#`}/>
text="推广返利"
href="#"/>
</ul>
</nav>
</div>
{/* 登录 */}
<div className={`flex items-center`}>
<div className="flex items-center">
{profile == undefined
? <>
<Link
href="/login"
className={`w-24 h-12 flex items-center justify-center lg:text-lg`}
>
<span></span>
</Link>
<Link
href="/login"
className={[
`w-20 lg:w-24 h-10 lg:h-12 bg-gradient-to-r rounded-sm flex items-center justify-center lg:text-lg text-white`,
`transition-colors duration-200 ease-in-out`,
`from-blue-500 to-cyan-400 hover:from-blue-500 hover:to-cyan-300`,
].join(' ')}
>
<span></span>
</Link>
</>
? (
<>
<Link
href="/login"
className="w-24 h-12 flex items-center justify-center lg:text-lg"
>
<span></span>
</Link>
<Link
href="/login"
className={[
`w-20 lg:w-24 h-10 lg:h-12 bg-gradient-to-r rounded-sm flex items-center justify-center lg:text-lg text-white`,
`transition-colors duration-200 ease-in-out`,
`from-blue-500 to-cyan-400 hover:from-blue-500 hover:to-cyan-300`,
].join(' ')}
>
<span></span>
</Link>
</>
)
: (
<Link href={`/admin`}>
<Button theme={`gradient`} className={`h-12`}>
</Button>
</Link>
// <Link href="/admin">
// <Button theme="gradient" className="h-12">
// 进入控制台
// </Button>
// </Link>
<UserCenter/>
)
}
</div>
@@ -172,7 +177,3 @@ export default function Provider(props: ProviderProps) {
</HeaderContext.Provider>
)
}