From 3f3279a7386bafcc64dad0d359c5e0f3d2b8957e Mon Sep 17 00:00:00 2001 From: lanlan Date: Thu, 22 Feb 2024 19:14:56 +0800 Subject: [PATCH 1/2] =?UTF-8?q?feat:=20=E6=B7=BB=E5=8A=A0=E4=B8=93?= =?UTF-8?q?=E4=B8=9A=E7=89=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- website/public/images/discount.svg | 23 ++++ website/src/components/Footer.tsx | 8 +- .../src/components/Version/FunctionTable.tsx | 88 +++++++----- website/src/components/Version/index.tsx | 129 ++++++++++-------- 4 files changed, 155 insertions(+), 93 deletions(-) create mode 100644 website/public/images/discount.svg diff --git a/website/public/images/discount.svg b/website/public/images/discount.svg new file mode 100644 index 0000000..5ad8803 --- /dev/null +++ b/website/public/images/discount.svg @@ -0,0 +1,23 @@ + + + 编组 4 + + + + + + + + + + + + + + + 限时特惠 + + + + + \ No newline at end of file diff --git a/website/src/components/Footer.tsx b/website/src/components/Footer.tsx index ddaba24..81bb379 100644 --- a/website/src/components/Footer.tsx +++ b/website/src/components/Footer.tsx @@ -40,9 +40,9 @@ const LINKS = [ ]; export const items = [ - { to: "/community", label: "开发计划" }, - { to: "/version", label: "付费版本" }, - { to: "", label: "用户协议" }, + { to: "/community", label: "开发计划", target: "_self" }, + { to: "/version", label: "付费版本", target: "_self" }, + { to: "https://github.com/chaitin/SafeLine/blob/main/LICENSE.md", label: "用户协议", target: "_blank" }, ]; export default function Footer() { @@ -88,7 +88,7 @@ export default function Footer() { {items.map((item, index) => ( {item.to ? ( - + {item.label} ) : ( diff --git a/website/src/components/Version/FunctionTable.tsx b/website/src/components/Version/FunctionTable.tsx index f0344e2..c83286b 100644 --- a/website/src/components/Version/FunctionTable.tsx +++ b/website/src/components/Version/FunctionTable.tsx @@ -33,11 +33,11 @@ const Illustrate = ({ text }: { text: string }) => { const versions = [ { title: '社区版', key: 'experience' }, - // { title: '专业版', key: 'major' }, + { title: '专业版', key: 'major' }, { title: '企业版', key: 'basics' }, ] -const colors = ['light', 'main'] // 'lighter', +const colors = ['lighter', 'light', 'main'] const FunctionTable = () => { const [open, setOpen] = useState([ @@ -77,7 +77,7 @@ const FunctionTable = () => { basics: , }, { - name: "人机验证", + name: "爬虫防护 / 人机验证", experience: , major: , basics: , @@ -91,31 +91,43 @@ const FunctionTable = () => { { name: "威胁情报", experience: , - major: , + major: , basics: , }, + { + name: "商业地理位置封禁", + experience: , + major: , + basics: , + }, + { + name: "应急补充规则", + experience: , + major: , + basics: , + }, { name: "高级 Bot 防护、API 防护", experience: , - major: , + major: , basics: , }, { name: "网页防篡改", experience: , - major: , + major: , basics: , }, { name: "灵活可编程插件", experience: , - major: , + major: , basics: , }, { name: "精细化引擎调节", experience: , - major: , + major: , basics: , }, ], @@ -133,13 +145,13 @@ const FunctionTable = () => { { name: "高级统计分析与报告", experience: , - major: , + major: , basics: , }, { name: "实时可视化大屏", experience: , - major: , + major: , basics: , }, ], @@ -147,23 +159,29 @@ const FunctionTable = () => { { title: "系统管理", data: [ + { + name: "自定义拦截页面", + experience: , + major: , + basics: , + }, { name: "多设备集中管理", tip: "", experience: , - major: , + major: , basics: , }, { name: "多租户管理", experience: , - major: , + major: , basics: , }, { name: "安全合规与审计", experience: , - major: , + major: , basics: , }, ], @@ -177,40 +195,40 @@ const FunctionTable = () => { major: , basics: , }, - { - name: "旁路、透明代理、路由等复杂接入方式", - experience: , - major: , - basics: , - }, - { - name: "集群式可扩展部署", - experience: , - major: , - basics: , - }, { name: "负载均衡", experience: , major: , basics: , }, + { + name: "旁路、透明代理、路由等复杂接入方式", + experience: , + major: , + basics: , + }, + { + name: "集群式可扩展部署", + experience: , + major: , + basics: , + }, { name: "紧急模式 / Bypass", experience: , - major: , + major: , basics: , }, { name: "硬件形态交付", experience: , - major: , + major: , basics: , }, { name: "高可用 / HA", experience: , - major: , + major: , basics: , }, ], @@ -227,19 +245,19 @@ const FunctionTable = () => { { name: "漏洞应急服务", experience: , - major: , + major: , basics: , }, { name: "产品销售许可证", experience: , - major: , + major: , basics: , }, { name: "定制化", experience: , - major: , + major: , basics: , }, ], @@ -271,9 +289,9 @@ const FunctionTable = () => { > - + {versions.map((item, index) => ( - + ({ display: "flex", @@ -354,13 +372,13 @@ const FunctionTable = () => { > {data.data.map((item) => ( - + {item.name} {versions.map((v, index) => ( - + {item[v.key as 'experience' | 'major' | 'basics']} ))} diff --git a/website/src/components/Version/index.tsx b/website/src/components/Version/index.tsx index 5127b5e..59dd52e 100644 --- a/website/src/components/Version/index.tsx +++ b/website/src/components/Version/index.tsx @@ -1,7 +1,8 @@ import React from "react"; -import { alpha, Box, Button, Typography } from "@mui/material"; +import { alpha, Box, Button, Typography, Stack } from "@mui/material"; import dynamic from 'next/dynamic'; import FunctionTable from "./FunctionTable"; +import Image from "next/image"; const Consultation = dynamic(() => import('./Consultation'), { ssr: false, @@ -14,7 +15,7 @@ const VERSION_LIST = [ apply_desc: "适合小型个人网站或业余爱好项目", fee: "免费", fee_desc: "", - desc: "无限站点,无限规则", + desc: "", operation: ( + ), + functions: [ + "所有社区版能力", + "Web 攻击加强防护", + "黑 IP 加强情报防护", + "自定义拦截页面", + "基于地理位置的访问控制", + "上游服务器负载均衡", ], }, - // { - // name: "专业版", - // name_bg: "/images/professional-version.png", - // apply_desc: "适合专业网站与关键业务", - // fee: "¥88", - // fee_desc: "/月 按年订阅", - // desc: "¥118 按月订阅", - // operation: ( - // - // ), - // functions: [ - // "所有社区版能力", - // "自定义阻断页面", - // "自定义相应动作", - // "根据地区封禁", - // "......", - // ], - // }, { name: "企业版", name_bg: "/images/enterprise-version.svg", - apply_desc: "适合小微到中大型企业", - fee: "按需定制", + apply_desc: "适合中大型企业", + fee: "定制包价", fee_desc: "", desc: "", operation: ( ), functions: [ - "所有社区版能力", - "高级统计分析与报告", - "智能业务建模", - "高级 Bot 防护、API 防护", - "......", + "所有专业版能力", + "软件、硬件、云原生等交付形式", + "反代、透明、路由、桥接、旁挂等方式部署", + "多活、主备、Bypass 等高可用形式", + "动态防护、拟态防护等高级防护形式", + "分布式集群部署,检测超大规模流量", ], }, ] @@ -101,7 +117,7 @@ const Version = () => { { )} + + {item.desc} + {item.operation} @@ -185,16 +204,18 @@ const FunctionItems: React.FC<{ items: any[] }> = ({ items }) => { py: 2, position: "relative", pl: 2, - "&:before": { - content: "' '", - position: "absolute", - left: 0, - top: "22px", - width: 4, - height: 4, - borderRadius: "50%", - backgroundColor: "success.main", - }, + fontSize: "14px", + textAlign: "center", + // "&:before": { + // content: "' '", + // position: "absolute", + // left: 0, + // top: "22px", + // width: 4, + // height: 4, + // borderRadius: "50%", + // backgroundColor: "success.main", + // }, }} > {f} From f447a350e46c16972b62bc82f265bbc2614d0ca0 Mon Sep 17 00:00:00 2001 From: lanlan Date: Thu, 22 Feb 2024 19:34:55 +0800 Subject: [PATCH 2/2] fix: update function name --- website/src/components/Version/FunctionTable.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/src/components/Version/FunctionTable.tsx b/website/src/components/Version/FunctionTable.tsx index c83286b..522ed9f 100644 --- a/website/src/components/Version/FunctionTable.tsx +++ b/website/src/components/Version/FunctionTable.tsx @@ -249,7 +249,7 @@ const FunctionTable = () => { basics: , }, { - name: "产品销售许可证", + name: "等保合规", experience: , major: , basics: ,