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 @@
+
+
\ 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..522ed9f 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: "产品销售许可证",
+ 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: (