From e2c9ea7fbffe667b931a0269802eb86870a27d18 Mon Sep 17 00:00:00 2001 From: luorijun Date: Thu, 18 Dec 2025 17:10:20 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E9=A1=B5=E5=A4=B4=E6=A0=B7?= =?UTF-8?q?=E5=BC=8F=E4=B8=8E=E6=93=8D=E6=8E=A7=20&=20=E4=BC=98=E5=8C=96?= =?UTF-8?q?=E9=A6=96=E9=A1=B5=E6=8E=A8=E8=8D=90=E6=96=87=E7=AB=A0=E9=83=A8?= =?UTF-8?q?=E5=88=86=20&=20=E4=BF=AE=E5=A4=8D=E5=90=8E=E5=8F=B0=E6=9C=AA?= =?UTF-8?q?=E6=AD=A3=E7=A1=AE=E6=B5=81=E5=BC=8F=E5=8A=A0=E8=BD=BD=E9=97=AE?= =?UTF-8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 12 +-- .../_components/header/menu-product.tsx | 33 ++----- src/app/(home)/header.tsx | 35 +++++--- src/app/(home)/page.tsx | 89 ++++++++++++------- src/app/admin/(dashboard)/layout.tsx | 8 +- src/app/admin/(dashboard)/page.tsx | 2 +- 6 files changed, 97 insertions(+), 82 deletions(-) diff --git a/README.md b/README.md index 3fbdcf2..f112bb3 100644 --- a/README.md +++ b/README.md @@ -1,23 +1,17 @@ ## TODO -长效动态统计 - -页头产品订购 - 网站公告 - -页尾服务保障跳转企业微信 - -首页推荐文章 +提取记录,长效动态统计 购买页固定套餐 -价格展示原价和折扣价 - ### 禁止直接依赖 form `\[(.*,)?form(,.*)?\]` ### 次要 +页头高度降低 + 帮助中心文档优化 考虑重新组织导航栏 diff --git a/src/app/(home)/_components/header/menu-product.tsx b/src/app/(home)/_components/header/menu-product.tsx index b41d11b..5d9f559 100644 --- a/src/app/(home)/_components/header/menu-product.tsx +++ b/src/app/(home)/_components/header/menu-product.tsx @@ -1,7 +1,6 @@ 'use client' import {ReactNode, useContext, useState} from 'react' import Wrap from '@/components/wrap' -import anno from '@/assets/header/product/anno.svg' import Link from 'next/link' import {merge} from '@/lib/utils' import prod from '@/assets/header/product/prod.svg' @@ -27,20 +26,7 @@ export default function ProductMenu() { ) } - + ) } @@ -69,27 +55,24 @@ export function Domestic(props: {}) { return (
- + +
+
+ -
-
+
, ], []) + const toggleMobileMenu = () => { + if (menu) { + setMenu(false) + } + else { + setPage(3) + setMenu(true) + } + } + const enterMenu = (i: number) => { return (e: PointerEvent) => { setPage(i) - if (e.pointerType === 'mouse' || page !== i) { + if (page !== i) { setMenu(true) } else { @@ -55,18 +65,16 @@ export default function Header(props: HeaderProps) { } } - const exitMenu = (e: PointerEvent) => { - if (e.pointerType === 'mouse') { - setMenu(false) - } + const leaveMenu = (e: PointerEvent) => { + setMenu(false) } const enterMenuContent = (e: PointerEvent) => { setMenu(true) } - const exitMenuContent = (e: PointerEvent) => { - if (e.pointerType === 'mouse') { + const leaveMenuContent = (e: PointerEvent) => { + if (page != 3) { setMenu(false) } } @@ -115,19 +123,19 @@ export default function Header(props: HeaderProps) { text="产品订购" active={menu && page === 0} onPointerEnter={enterMenu(0)} - onPointerLeave={exitMenu} + onPointerLeave={leaveMenu} /> @@ -168,7 +175,7 @@ export default function Header(props: HeaderProps) { : `delay-[0s,0s] opacity-0 py-0 pointer-events-none`, )} onPointerEnter={enterMenuContent} - onPointerLeave={exitMenuContent} + onPointerLeave={leaveMenuContent} > {pages[page]}
diff --git a/src/app/(home)/page.tsx b/src/app/(home)/page.tsx index 19090e4..e8260f2 100644 --- a/src/app/(home)/page.tsx +++ b/src/app/(home)/page.tsx @@ -1,16 +1,15 @@ import {ReactNode} from 'react' import Wrap from '@/components/wrap' import Image, {StaticImageData} from 'next/image' +import Link from 'next/link' import check_main from '@/assets/check-main.svg' import banner from './_assets/banner.webp' import map from './_assets/map.webp' -import next from './_assets/next.svg' import s1_1 from './_assets/s1-1.webp' import s1_2 from './_assets/s1-2.webp' import s1_3 from './_assets/s1-3.webp' import s1_4 from './_assets/s1-4.webp' import s1_check from './_assets/s1-check.svg' -import s3_main from './_assets/s3-main.webp' import s4_1_main from './_assets/s4-1-main.webp' import s4_2_main from './_assets/s4-2-main.webp' import s4_1_1 from './_assets/s4-1-1.webp' @@ -20,6 +19,7 @@ import s4_2_1 from './_assets/s4-2-1.webp' import s4_2_2 from './_assets/s4-2-2.webp' import s4_2_3 from './_assets/s4-2-3.webp' import FreeTrial from '@/components/free-trial' +import {BookOpen, Smartphone, Settings, HelpCircle, Newspaper, FileText} from 'lucide-react' export default function Home() { return ( @@ -141,37 +141,27 @@ export default function Home() { {/* 推荐文章 */}
-
- +
+ } + title="浏览器设置代理教程" + description="快速上手,5分钟学会在浏览器中配置代理服务器" + href="/docs/browser-proxy" + /> -
- tumb -
-

- 我是标题 - 2025-03-04 -

-

- 我是内容我是内容我是内容我是内容我是内容我是容我是内容我是内容内容我是内容我是内容我是内我是内容我是内容我是内容我是内容我是内容... -

- -
-
+ } + title="Windows10 代理配置" + description="详细图文教程,帮助你在 Windows 系统中设置代理" + href="/docs/windows10-proxy" + /> - + } + title="常见问题总览" + description="解决使用过程中遇到的各类问题,快速找到答案" + href="/docs/faq-general" + />
@@ -222,6 +212,43 @@ function Sec3Item(props: { ) } +function ArticleCard(props: { + icon: ReactNode + title: string + description: string + href: string +}) { + return ( + +
+
+ {props.icon} +
+ +
+

+ {props.title} +

+

+ {props.description} +

+
+ +
+ 了解更多 + +
+
+ + ) +} + function Sec4Item(props: { icon: StaticImageData title: string diff --git a/src/app/admin/(dashboard)/layout.tsx b/src/app/admin/(dashboard)/layout.tsx index 96969a1..6832d4f 100644 --- a/src/app/admin/(dashboard)/layout.tsx +++ b/src/app/admin/(dashboard)/layout.tsx @@ -1,4 +1,4 @@ -import {ReactNode} from 'react' +import {ReactNode, Suspense} from 'react' import {Metadata} from 'next' export async function generateMetadata(): Promise { @@ -12,5 +12,9 @@ export type BillsLayoutProps = { } export default async function BillsLayout(props: BillsLayoutProps) { - return props.children + return ( + + {props.children} + + ) } diff --git a/src/app/admin/(dashboard)/page.tsx b/src/app/admin/(dashboard)/page.tsx index 17ebbb6..37619f1 100644 --- a/src/app/admin/(dashboard)/page.tsx +++ b/src/app/admin/(dashboard)/page.tsx @@ -18,7 +18,7 @@ export default async function DashboardPage(props: DashboardPageProps) { if (!resp.success) { return (
- 获取公告数据失败 + 初始化数据失败
) }