diff --git a/README.md b/README.md index e215bc4..a34fcf6 100644 --- a/README.md +++ b/README.md @@ -1,36 +1,23 @@ -This is a [Next.js](https://nextjs.org) project bootstrapped with [`create-next-app`](https://nextjs.org/docs/app/api-reference/cli/create-next-app). +## 功能布局 -## Getting Started +### 首页 -First, run the development server: +- 页头 + - LOGO + - 菜单 + - 登录/注册 +- 正文 + - 优势介绍 + - 数据展示 + - 产品推荐 + - 客户案例 + - 合作伙伴 + - 新闻动态 +- 页脚 + - 关于我们 + - 网站地图 + - 备案/版权信息 -```bash -npm run dev -# or -yarn dev -# or -pnpm dev -# or -bun dev -``` +### 后台 -Open [http://localhost:3000](http://localhost:3000) with your browser to see the result. - -You can start editing the page by modifying `app/page.tsx`. The page auto-updates as you edit the file. - -This project uses [`next/font`](https://nextjs.org/docs/app/building-your-application/optimizing/fonts) to automatically optimize and load [Geist](https://vercel.com/font), a new font family for Vercel. - -## Learn More - -To learn more about Next.js, take a look at the following resources: - -- [Next.js Documentation](https://nextjs.org/docs) - learn about Next.js features and API. -- [Learn Next.js](https://nextjs.org/learn) - an interactive Next.js tutorial. - -You can check out [the Next.js GitHub repository](https://github.com/vercel/next.js) - your feedback and contributions are welcome! - -## Deploy on Vercel - -The easiest way to deploy your Next.js app is to use the [Vercel Platform](https://vercel.com/new?utm_medium=default-template&filter=next.js&utm_source=create-next-app&utm_campaign=create-next-app-readme) from the creators of Next.js. - -Check out our [Next.js deployment documentation](https://nextjs.org/docs/app/building-your-application/deploying) for more details. +### 授权 diff --git a/eslint.config.mjs b/eslint.config.mjs index c85fb67..76ed475 100644 --- a/eslint.config.mjs +++ b/eslint.config.mjs @@ -11,6 +11,12 @@ const compat = new FlatCompat({ const eslintConfig = [ ...compat.extends("next/core-web-vitals", "next/typescript"), + { + rules: { + '@typescript-eslint/no-empty-object-type': 'off', + '@typescript-eslint/no-unused-vars': 'off', + }, + }, ]; export default eslintConfig; diff --git a/package.json b/package.json index e79d1fe..3948839 100644 --- a/package.json +++ b/package.json @@ -3,7 +3,7 @@ "version": "0.1.0", "private": true, "scripts": { - "dev": "next dev", + "dev": "next dev -H 0.0.0.0 --turbopack", "build": "next build", "start": "next start", "lint": "next lint" @@ -14,6 +14,8 @@ "next": "15.2.1" }, "devDependencies": { + "@next/eslint-plugin-next": "^15.2.1", + "eslint-plugin-react-hooks": "^5.2.0", "typescript": "^5", "@types/node": "^20", "@types/react": "^19", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index aa42570..d914b3c 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -21,6 +21,9 @@ importers: '@eslint/eslintrc': specifier: ^3 version: 3.3.0 + '@next/eslint-plugin-next': + specifier: ^15.2.1 + version: 15.2.1 '@tailwindcss/postcss': specifier: ^4 version: 4.0.9 @@ -39,6 +42,9 @@ importers: eslint-config-next: specifier: 15.2.1 version: 15.2.1(eslint@9.21.0(jiti@2.4.2))(typescript@5.8.2) + eslint-plugin-react-hooks: + specifier: ^5.2.0 + version: 5.2.0(eslint@9.21.0(jiti@2.4.2)) tailwindcss: specifier: ^4 version: 4.0.9 @@ -135,67 +141,79 @@ packages: resolution: {integrity: sha512-9B+taZ8DlyyqzZQnoeIvDVR/2F4EbMepXMc/NdVbkzsJbzkUjhXv/70GQJ7tdLA4YJgNP25zukcxpX2/SueNrA==} cpu: [arm64] os: [linux] + libc: [glibc] '@img/sharp-libvips-linux-arm@1.0.5': resolution: {integrity: sha512-gvcC4ACAOPRNATg/ov8/MnbxFDJqf/pDePbBnuBDcjsI8PssmjoKMAz4LtLaVi+OnSb5FK/yIOamqDwGmXW32g==} cpu: [arm] os: [linux] + libc: [glibc] '@img/sharp-libvips-linux-s390x@1.0.4': resolution: {integrity: sha512-u7Wz6ntiSSgGSGcjZ55im6uvTrOxSIS8/dgoVMoiGE9I6JAfU50yH5BoDlYA1tcuGS7g/QNtetJnxA6QEsCVTA==} cpu: [s390x] os: [linux] + libc: [glibc] '@img/sharp-libvips-linux-x64@1.0.4': resolution: {integrity: sha512-MmWmQ3iPFZr0Iev+BAgVMb3ZyC4KeFc3jFxnNbEPas60e1cIfevbtuyf9nDGIzOaW9PdnDciJm+wFFaTlj5xYw==} cpu: [x64] os: [linux] + libc: [glibc] '@img/sharp-libvips-linuxmusl-arm64@1.0.4': resolution: {integrity: sha512-9Ti+BbTYDcsbp4wfYib8Ctm1ilkugkA/uscUn6UXK1ldpC1JjiXbLfFZtRlBhjPZ5o1NCLiDbg8fhUPKStHoTA==} cpu: [arm64] os: [linux] + libc: [musl] '@img/sharp-libvips-linuxmusl-x64@1.0.4': resolution: {integrity: sha512-viYN1KX9m+/hGkJtvYYp+CCLgnJXwiQB39damAO7WMdKWlIhmYTfHjwSbQeUK/20vY154mwezd9HflVFM1wVSw==} cpu: [x64] os: [linux] + libc: [musl] '@img/sharp-linux-arm64@0.33.5': resolution: {integrity: sha512-JMVv+AMRyGOHtO1RFBiJy/MBsgz0x4AWrT6QoEVVTyh1E39TrCUpTRI7mx9VksGX4awWASxqCYLCV4wBZHAYxA==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [arm64] os: [linux] + libc: [glibc] '@img/sharp-linux-arm@0.33.5': resolution: {integrity: sha512-JTS1eldqZbJxjvKaAkxhZmBqPRGmxgu+qFKSInv8moZ2AmT5Yib3EQ1c6gp493HvrvV8QgdOXdyaIBrhvFhBMQ==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [arm] os: [linux] + libc: [glibc] '@img/sharp-linux-s390x@0.33.5': resolution: {integrity: sha512-y/5PCd+mP4CA/sPDKl2961b+C9d+vPAveS33s6Z3zfASk2j5upL6fXVPZi7ztePZ5CuH+1kW8JtvxgbuXHRa4Q==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [s390x] os: [linux] + libc: [glibc] '@img/sharp-linux-x64@0.33.5': resolution: {integrity: sha512-opC+Ok5pRNAzuvq1AG0ar+1owsu842/Ab+4qvU879ippJBHvyY5n2mxF1izXqkPYlGuP/M556uh53jRLJmzTWA==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [x64] os: [linux] + libc: [glibc] '@img/sharp-linuxmusl-arm64@0.33.5': resolution: {integrity: sha512-XrHMZwGQGvJg2V/oRSUfSAfjfPxO+4DkiRh6p2AFjLQztWUuY/o8Mq0eMQVIY7HJ1CDQUJlxGGZRw1a5bqmd1g==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [arm64] os: [linux] + libc: [musl] '@img/sharp-linuxmusl-x64@0.33.5': resolution: {integrity: sha512-WT+d/cgqKkkKySYmqoZ8y3pxx7lx9vVejxW/W4DOFMYVSkErR+w7mf2u8m/y4+xHe7yY9DAXQMWQhpnMuFfScw==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [x64] os: [linux] + libc: [musl] '@img/sharp-wasm32@0.33.5': resolution: {integrity: sha512-ykUW4LVGaMcU9lu9thv85CbRMAwfeadCJHRsg2GmeRa/cJxsVY9Rbd57JcMxBkKHag5U/x7TSBpScF4U8ElVzg==} @@ -237,24 +255,28 @@ packages: engines: {node: '>= 10'} cpu: [arm64] os: [linux] + libc: [glibc] '@next/swc-linux-arm64-musl@15.2.1': resolution: {integrity: sha512-3v0pF/adKZkBWfUffmB/ROa+QcNTrnmYG4/SS+r52HPwAK479XcWoES2I+7F7lcbqc7mTeVXrIvb4h6rR/iDKg==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] + libc: [musl] '@next/swc-linux-x64-gnu@15.2.1': resolution: {integrity: sha512-RbsVq2iB6KFJRZ2cHrU67jLVLKeuOIhnQB05ygu5fCNgg8oTewxweJE8XlLV+Ii6Y6u4EHwETdUiRNXIAfpBww==} engines: {node: '>= 10'} cpu: [x64] os: [linux] + libc: [glibc] '@next/swc-linux-x64-musl@15.2.1': resolution: {integrity: sha512-QHsMLAyAIu6/fWjHmkN/F78EFPKmhQlyX5C8pRIS2RwVA7z+t9cTb0IaYWC3EHLOTjsU7MNQW+n2xGXr11QPpg==} engines: {node: '>= 10'} cpu: [x64] os: [linux] + libc: [musl] '@next/swc-win32-arm64-msvc@15.2.1': resolution: {integrity: sha512-Gk42XZXo1cE89i3hPLa/9KZ8OuupTjkDmhLaMKFohjf9brOeZVEa3BQy1J9s9TWUqPhgAEbwv6B2+ciGfe54Vw==} @@ -334,24 +356,28 @@ packages: engines: {node: '>= 10'} cpu: [arm64] os: [linux] + libc: [glibc] '@tailwindcss/oxide-linux-arm64-musl@4.0.9': resolution: {integrity: sha512-3eMjyTC6HBxh9nRgOHzrc96PYh1/jWOwHZ3Kk0JN0Kl25BJ80Lj9HEvvwVDNTgPg154LdICwuFLuhfgH9DULmg==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] + libc: [musl] '@tailwindcss/oxide-linux-x64-gnu@4.0.9': resolution: {integrity: sha512-v0D8WqI/c3WpWH1kq/HP0J899ATLdGZmENa2/emmNjubT0sWtEke9W9+wXeEoACuGAhF9i3PO5MeyditpDCiWQ==} engines: {node: '>= 10'} cpu: [x64] os: [linux] + libc: [glibc] '@tailwindcss/oxide-linux-x64-musl@4.0.9': resolution: {integrity: sha512-Kvp0TCkfeXyeehqLJr7otsc4hd/BUPfcIGrQiwsTVCfaMfjQZCG7DjI+9/QqPZha8YapLA9UoIcUILRYO7NE1Q==} engines: {node: '>= 10'} cpu: [x64] os: [linux] + libc: [musl] '@tailwindcss/oxide-win32-arm64-msvc@4.0.9': resolution: {integrity: sha512-m3+60T/7YvWekajNq/eexjhV8z10rswcz4BC9bioJ7YaN+7K8W2AmLmG0B79H14m6UHE571qB0XsPus4n0QVgQ==} @@ -1128,24 +1154,28 @@ packages: engines: {node: '>= 12.0.0'} cpu: [arm64] os: [linux] + libc: [glibc] lightningcss-linux-arm64-musl@1.29.1: resolution: {integrity: sha512-UKMFrG4rL/uHNgelBsDwJcBqVpzNJbzsKkbI3Ja5fg00sgQnHw/VrzUTEc4jhZ+AN2BvQYz/tkHu4vt1kLuJyw==} engines: {node: '>= 12.0.0'} cpu: [arm64] os: [linux] + libc: [musl] lightningcss-linux-x64-gnu@1.29.1: resolution: {integrity: sha512-u1S+xdODy/eEtjADqirA774y3jLcm8RPtYztwReEXoZKdzgsHYPl0s5V52Tst+GKzqjebkULT86XMSxejzfISw==} engines: {node: '>= 12.0.0'} cpu: [x64] os: [linux] + libc: [glibc] lightningcss-linux-x64-musl@1.29.1: resolution: {integrity: sha512-L0Tx0DtaNUTzXv0lbGCLB/c/qEADanHbu4QdcNOXLIe1i8i22rZRpbT3gpWYsCh9aSL9zFujY/WmEXIatWvXbw==} engines: {node: '>= 12.0.0'} cpu: [x64] os: [linux] + libc: [musl] lightningcss-win32-arm64-msvc@1.29.1: resolution: {integrity: sha512-QoOVnkIEFfbW4xPi+dpdft/zAKmgLgsRHfJalEPYuJDOWf7cLQzYg0DEh8/sn737FaeMJxHZRc1oBreiwZCjog==} diff --git a/public/banner.webp b/public/banner.webp new file mode 100644 index 0000000..f92bf16 Binary files /dev/null and b/public/banner.webp differ diff --git a/public/check.svg b/public/check.svg new file mode 100644 index 0000000..60a549e --- /dev/null +++ b/public/check.svg @@ -0,0 +1,4 @@ + diff --git a/public/earth.webp b/public/earth.webp new file mode 100644 index 0000000..acec4fa Binary files /dev/null and b/public/earth.webp differ diff --git a/public/file.svg b/public/file.svg deleted file mode 100644 index 004145c..0000000 --- a/public/file.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/public/globe.svg b/public/globe.svg deleted file mode 100644 index 567f17b..0000000 --- a/public/globe.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/public/map.webp b/public/map.webp new file mode 100644 index 0000000..f0da4bd Binary files /dev/null and b/public/map.webp differ diff --git a/public/next.svg b/public/next.svg index 5174b28..854705f 100644 --- a/public/next.svg +++ b/public/next.svg @@ -1 +1,3 @@ - \ No newline at end of file + diff --git a/public/s1-1.webp b/public/s1-1.webp new file mode 100644 index 0000000..667f9ca Binary files /dev/null and b/public/s1-1.webp differ diff --git a/public/s1-2.webp b/public/s1-2.webp new file mode 100644 index 0000000..a7efa3b Binary files /dev/null and b/public/s1-2.webp differ diff --git a/public/s1-3.webp b/public/s1-3.webp new file mode 100644 index 0000000..8a80ebd Binary files /dev/null and b/public/s1-3.webp differ diff --git a/public/s1-4.webp b/public/s1-4.webp new file mode 100644 index 0000000..d507b38 Binary files /dev/null and b/public/s1-4.webp differ diff --git a/public/s1-check.svg b/public/s1-check.svg new file mode 100644 index 0000000..1987cf5 --- /dev/null +++ b/public/s1-check.svg @@ -0,0 +1,10 @@ + diff --git a/public/s2-1-1.webp b/public/s2-1-1.webp new file mode 100644 index 0000000..54abb5a Binary files /dev/null and b/public/s2-1-1.webp differ diff --git a/public/s2-1-2.webp b/public/s2-1-2.webp new file mode 100644 index 0000000..9285353 Binary files /dev/null and b/public/s2-1-2.webp differ diff --git a/public/s2-1-3.webp b/public/s2-1-3.webp new file mode 100644 index 0000000..1e8c105 Binary files /dev/null and b/public/s2-1-3.webp differ diff --git a/public/s2-1-main.webp b/public/s2-1-main.webp new file mode 100644 index 0000000..5f68dd4 Binary files /dev/null and b/public/s2-1-main.webp differ diff --git a/public/s2-2-1.webp b/public/s2-2-1.webp new file mode 100644 index 0000000..9a40ac6 Binary files /dev/null and b/public/s2-2-1.webp differ diff --git a/public/s2-2-2.webp b/public/s2-2-2.webp new file mode 100644 index 0000000..6d919a5 Binary files /dev/null and b/public/s2-2-2.webp differ diff --git a/public/s2-2-3.webp b/public/s2-2-3.webp new file mode 100644 index 0000000..827093b Binary files /dev/null and b/public/s2-2-3.webp differ diff --git a/public/s2-2-main.webp b/public/s2-2-main.webp new file mode 100644 index 0000000..069c566 Binary files /dev/null and b/public/s2-2-main.webp differ diff --git a/public/s3-main.webp b/public/s3-main.webp new file mode 100644 index 0000000..e28b201 Binary files /dev/null and b/public/s3-main.webp differ diff --git a/public/vercel.svg b/public/vercel.svg deleted file mode 100644 index 7705396..0000000 --- a/public/vercel.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/public/window.svg b/public/window.svg deleted file mode 100644 index b2b2a44..0000000 --- a/public/window.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/app/(admin)/dashboard/page.tsx b/src/app/(admin)/dashboard/page.tsx new file mode 100644 index 0000000..ef31020 --- /dev/null +++ b/src/app/(admin)/dashboard/page.tsx @@ -0,0 +1,243 @@ +import {ReactNode} from 'react' + +export type DashboardPageProps = { + +} + +export default function DashboardPage(props: DashboardPageProps) { + return ( +
实时监控IP资源使用情况和系统性能指标
+8,721
+↑12% 较上月
+99.9%
+符合SLA标准
+47ms
+优于行业标准
+当前带宽
+1.2 Gbps
+峰值带宽
+2.5 Gbps
+平均带宽
+800 Mbps
+亚太地区
+45%
+欧美地区
+35%
+其他地区
+20%
+5分钟前
+20分钟前
+admin@example.com
+在线时长
+4.5h
+处理工单
+12
+系统将于本周日凌晨2点进行例行维护升级
+2024-01-20 10:00
+IP资源管理系统V2.0版本更新说明
+2024-01-18 15:30
+
+ + 或者{' '} + + 开始14天免费试用 + +
+遍布全国的代理服务器节点为用户提供智能可靠的IP代理服务
+ +
+
+
+
全国城市线路数量
+350+
+每日更新IP数量
+1,350,129
+用户量
+26,578
+IP可用率
+99%
+
+
+
+
+ IP时效3-30分钟(可定制)
+
+
+ 支持高并发提取
+
+
+
+ IP覆盖全国各地
+
+
+ 平均响应时长:0.03s
+
+
+
+ 稳定长输不掉线
+
+
+ 全国热门静态IP线路
+
+
+
+ 可视化监控设计
+
+
+ 技术团队现场支持
+
+ 国内三大运营商支持
+
+ IP纯净度高达99.9%
+
+ 稳定传输,保护隐私安全
+
+
+
+ 与第三方软件轻松集成
+
+ C语言、GO语言、Python...
+
+ API提取+账密认证
+
+ + 我是内容我是内容我是内容我是内容我是内容我是容我是内容我是内容内容我是内容我是内容我是内我是内容我是内容我是内容我是内容我是内容... +
+
- src/app/page.tsx
-
- .
-