diff --git a/README.md b/README.md index 5b34e06..9cbcfd3 100644 --- a/README.md +++ b/README.md @@ -2,6 +2,10 @@ 购买页固定套餐 +不要余额 + +优惠问题 + ### 禁止直接依赖 form `\[(.*,)?form(,.*)?\]` diff --git a/package.json b/package.json index cf98853..d1b9058 100644 --- a/package.json +++ b/package.json @@ -74,5 +74,5 @@ "typescript": "^5.9.3", "babel-plugin-react-compiler": "^1.0.0" }, - "packageManager": "bun@1.2.19" -} \ No newline at end of file + "packageManager": "bun@1.3.2" +} diff --git a/src/app/(home)/_assets/s1-1.webp b/src/app/(home)/(index)/_assets/s1-1.webp similarity index 100% rename from src/app/(home)/_assets/s1-1.webp rename to src/app/(home)/(index)/_assets/s1-1.webp diff --git a/src/app/(home)/_assets/s1-2.webp b/src/app/(home)/(index)/_assets/s1-2.webp similarity index 100% rename from src/app/(home)/_assets/s1-2.webp rename to src/app/(home)/(index)/_assets/s1-2.webp diff --git a/src/app/(home)/_assets/s1-3.webp b/src/app/(home)/(index)/_assets/s1-3.webp similarity index 100% rename from src/app/(home)/_assets/s1-3.webp rename to src/app/(home)/(index)/_assets/s1-3.webp diff --git a/src/app/(home)/_assets/s1-4.webp b/src/app/(home)/(index)/_assets/s1-4.webp similarity index 100% rename from src/app/(home)/_assets/s1-4.webp rename to src/app/(home)/(index)/_assets/s1-4.webp diff --git a/src/app/(home)/_assets/s1-check.svg b/src/app/(home)/(index)/_assets/s1-check.svg similarity index 100% rename from src/app/(home)/_assets/s1-check.svg rename to src/app/(home)/(index)/_assets/s1-check.svg diff --git a/src/app/(home)/_assets/s3-main.webp b/src/app/(home)/(index)/_assets/s3-main.webp similarity index 100% rename from src/app/(home)/_assets/s3-main.webp rename to src/app/(home)/(index)/_assets/s3-main.webp diff --git a/src/app/(home)/_assets/s4-1-1.webp b/src/app/(home)/(index)/_assets/s4-1-1.webp similarity index 100% rename from src/app/(home)/_assets/s4-1-1.webp rename to src/app/(home)/(index)/_assets/s4-1-1.webp diff --git a/src/app/(home)/_assets/s4-1-2.webp b/src/app/(home)/(index)/_assets/s4-1-2.webp similarity index 100% rename from src/app/(home)/_assets/s4-1-2.webp rename to src/app/(home)/(index)/_assets/s4-1-2.webp diff --git a/src/app/(home)/_assets/s4-1-3.webp b/src/app/(home)/(index)/_assets/s4-1-3.webp similarity index 100% rename from src/app/(home)/_assets/s4-1-3.webp rename to src/app/(home)/(index)/_assets/s4-1-3.webp diff --git a/src/app/(home)/_assets/s4-1-main.webp b/src/app/(home)/(index)/_assets/s4-1-main.webp similarity index 100% rename from src/app/(home)/_assets/s4-1-main.webp rename to src/app/(home)/(index)/_assets/s4-1-main.webp diff --git a/src/app/(home)/_assets/s4-2-1.webp b/src/app/(home)/(index)/_assets/s4-2-1.webp similarity index 100% rename from src/app/(home)/_assets/s4-2-1.webp rename to src/app/(home)/(index)/_assets/s4-2-1.webp diff --git a/src/app/(home)/_assets/s4-2-2.webp b/src/app/(home)/(index)/_assets/s4-2-2.webp similarity index 100% rename from src/app/(home)/_assets/s4-2-2.webp rename to src/app/(home)/(index)/_assets/s4-2-2.webp diff --git a/src/app/(home)/_assets/s4-2-3.webp b/src/app/(home)/(index)/_assets/s4-2-3.webp similarity index 100% rename from src/app/(home)/_assets/s4-2-3.webp rename to src/app/(home)/(index)/_assets/s4-2-3.webp diff --git a/src/app/(home)/_assets/s4-2-main.webp b/src/app/(home)/(index)/_assets/s4-2-main.webp similarity index 100% rename from src/app/(home)/_assets/s4-2-main.webp rename to src/app/(home)/(index)/_assets/s4-2-main.webp diff --git a/src/app/(home)/(index)/advantages-section.tsx b/src/app/(home)/(index)/advantages-section.tsx new file mode 100644 index 0000000..cd24554 --- /dev/null +++ b/src/app/(home)/(index)/advantages-section.tsx @@ -0,0 +1,50 @@ +import Image, {StaticImageData} from 'next/image' +import {PageSection} from './page-section' +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' +import s4_1_2 from './_assets/s4-1-2.webp' +import s4_1_3 from './_assets/s4-1-3.webp' +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' + +export function AdvantagesSection() { + return ( + +
+ + 产品优势展示 +
+ +
+ 技术优势展示 + +
+
+ ) +} + +function AdvantageItem(props: { + icon: StaticImageData + title: string + description: string +}) { + return ( +
  • + {props.title} +
    +

    {props.title}

    +

    {props.description}

    +
    +
  • + ) +} diff --git a/src/app/(home)/(index)/articles-section.tsx b/src/app/(home)/(index)/articles-section.tsx new file mode 100644 index 0000000..e57d3fe --- /dev/null +++ b/src/app/(home)/(index)/articles-section.tsx @@ -0,0 +1,70 @@ +import {ReactNode} from 'react' +import Link from 'next/link' +import {PageSection} from './page-section' +import {BookOpen, Smartphone, HelpCircle} from 'lucide-react' + +export function ArticlesSection() { + return ( + +
    + } + title="浏览器设置代理教程" + description="快速上手,5分钟学会在浏览器中配置代理服务器" + href="/docs/browser-proxy" + /> + + } + title="Windows10 代理配置" + description="详细图文教程,帮助你在 Windows 系统中设置代理" + href="/docs/windows10-proxy" + /> + + } + title="常见问题总览" + description="解决使用过程中遇到的各类问题,快速找到答案" + href="/docs/faq-general" + /> +
    +
    + ) +} + +function ArticleCard(props: { + icon: ReactNode + title: string + description: string + href: string +}) { + return ( + +
    +
    + {props.icon} +
    + +
    +

    + {props.title} +

    +

    + {props.description} +

    +
    + +
    + 了解更多 + +
    +
    + + ) +} diff --git a/src/app/(home)/(index)/hero-section.tsx b/src/app/(home)/(index)/hero-section.tsx new file mode 100644 index 0000000..5837c6f --- /dev/null +++ b/src/app/(home)/(index)/hero-section.tsx @@ -0,0 +1,37 @@ +import Image from 'next/image' +import Wrap from '@/components/wrap' +import FreeTrial from '@/components/free-trial' +import banner from '../_assets/banner.webp' +import check_main from '@/assets/check-main.svg' + +export function HeroSection() { + return ( +
    + banner + +

    安全,稳定,快速,合规的代理服务器

    +

    遍布全国的代理服务器节点为用户提供智能可靠的IP代理服务

    + +
    +

    + checkbox + 全国200+城市节点 +

    +

    + checkbox + 300+城市级精准定位 +

    +

    + checkbox + 低延迟&高并发提取 +

    +
    + + +
    +
    + ) +} diff --git a/src/app/(home)/(index)/page-section.tsx b/src/app/(home)/(index)/page-section.tsx new file mode 100644 index 0000000..7b721b2 --- /dev/null +++ b/src/app/(home)/(index)/page-section.tsx @@ -0,0 +1,15 @@ +import {ReactNode} from 'react' + +export function PageSection(props: { + title: string + children: ReactNode +}) { + return ( +
    +
    +

    {props.title}

    + {props.children} +
    +
    + ) +} diff --git a/src/app/(home)/(index)/page.tsx b/src/app/(home)/(index)/page.tsx new file mode 100644 index 0000000..bd51ab5 --- /dev/null +++ b/src/app/(home)/(index)/page.tsx @@ -0,0 +1,17 @@ +import {HeroSection} from './hero-section' +import {StatsSection} from './stats-section' +import {ProductTypesSection} from './product-types-section' +import {AdvantagesSection} from './advantages-section' +import {ArticlesSection} from './articles-section' + +export default function Home() { + return ( +
    + + + + + +
    + ) +} diff --git a/src/app/(home)/(index)/product-types-section.tsx b/src/app/(home)/(index)/product-types-section.tsx new file mode 100644 index 0000000..d83f68a --- /dev/null +++ b/src/app/(home)/(index)/product-types-section.tsx @@ -0,0 +1,78 @@ +import Image, {StaticImageData} from 'next/image' +import {PageSection} from './page-section' +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' + +export function ProductTypesSection() { + return ( + + + + ) +} + +function ProductTypeCard(props: { + icon: StaticImageData + title: string + features: { + icon: StaticImageData + text: string + }[] +}) { + return ( +
  • + {props.title} +

    {props.title}

    +
    + {props.features.map((item, index) => { + return ( +

    + check + {item.text} +

    + ) + })} +
    +
  • + ) +} diff --git a/src/app/(home)/(index)/stats-section.tsx b/src/app/(home)/(index)/stats-section.tsx new file mode 100644 index 0000000..cebd9c0 --- /dev/null +++ b/src/app/(home)/(index)/stats-section.tsx @@ -0,0 +1,32 @@ +import Image from 'next/image' +import {PageSection} from './page-section' +import map from '../_assets/map.webp' + +export function StatsSection() { + return ( + + + map + + ) +} diff --git a/src/app/(home)/page.tsx b/src/app/(home)/page.tsx deleted file mode 100644 index e8260f2..0000000 --- a/src/app/(home)/page.tsx +++ /dev/null @@ -1,266 +0,0 @@ -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 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 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' -import s4_1_2 from './_assets/s4-1-2.webp' -import s4_1_3 from './_assets/s4-1-3.webp' -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 ( -
    - - {/* banner */} -
    - banner - -

    安全,稳定,快速,合规的代理服务器

    -

    遍布全国的代理服务器节点为用户提供智能可靠的IP代理服务

    - -
    -

    - checkbox - 全国200+城市节点 -

    -

    - checkbox - 300+城市级精准定位 -

    -

    - checkbox - 低延迟&高并发提取 -

    -
    - - -
    -
    - - {/* 数据展示 */} -
    - - map - -
    - - {/* 优势 1 */} -
    - -
    - - {/* 优势 2 */} -
    -
    -
      - - - -
    - s2-1-main -
    - -
    - s2-1-main -
      - - - -
    -
    -
    - - {/* 推荐文章 */} -
    -
    - } - title="浏览器设置代理教程" - description="快速上手,5分钟学会在浏览器中配置代理服务器" - href="/docs/browser-proxy" - /> - - } - title="Windows10 代理配置" - description="详细图文教程,帮助你在 Windows 系统中设置代理" - href="/docs/windows10-proxy" - /> - - } - title="常见问题总览" - description="解决使用过程中遇到的各类问题,快速找到答案" - href="/docs/faq-general" - /> -
    -
    -
    - ) -} - -function Section(props: { - title: string - children: ReactNode -}) { - return ( -
    -
    -

    {props.title}

    - {props.children} -
    -
    - ) -} - -function Sec3Item(props: { - icon: StaticImageData - title: string - terms: { - icon: StaticImageData - text: string - }[] -}) { - return ( -
  • - s1-1 -

    {props.title}

    -
    - {props.terms.map((item, index) => { - return ( -

    - check - {item.text} -

    - ) - })} -
    -
  • - ) -} - -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 - description: string -}) { - return ( -
  • - s2-1-1 -
    -

    {props.title}

    -

    {props.description}

    -
    -
  • - ) -}