+
);
}
diff --git a/ui/src/components/core/Version.tsx b/ui/src/components/core/Version.tsx
index 6984254e..e765532b 100644
--- a/ui/src/components/core/Version.tsx
+++ b/ui/src/components/core/Version.tsx
@@ -1,6 +1,6 @@
import { useTranslation } from "react-i18next";
import { Divider, Space, Typography } from "antd";
-import { BookOpen as BookOpenIcon } from "lucide-react";
+import { BookOutlined as BookOutlinedIcon } from "@ant-design/icons";
import { version } from "@/domain/version";
@@ -16,7 +16,7 @@ const Version = ({ className, style }: VersionProps) => {
-
+ {t("common.menu.document")}
diff --git a/ui/src/components/workflow/DropdownMenuItemIcon.tsx b/ui/src/components/workflow/DropdownMenuItemIcon.tsx
index 09d77e0b..60adf6fa 100644
--- a/ui/src/components/workflow/DropdownMenuItemIcon.tsx
+++ b/ui/src/components/workflow/DropdownMenuItemIcon.tsx
@@ -1,4 +1,4 @@
-import { WorkflowNodeDropdwonItemIcon, WorkflowNodeDropdwonItemIconType } from "@/domain/workflow";
+import { type WorkflowNodeDropdwonItemIcon, WorkflowNodeDropdwonItemIconType } from "@/domain/workflow";
import { CloudUpload, GitFork, Megaphone, NotebookPen } from "lucide-react";
const icons = new Map([
diff --git a/ui/src/components/workflow/node/ApplyNodeForm.tsx b/ui/src/components/workflow/node/ApplyNodeForm.tsx
index 0fb19b54..bece3565 100644
--- a/ui/src/components/workflow/node/ApplyNodeForm.tsx
+++ b/ui/src/components/workflow/node/ApplyNodeForm.tsx
@@ -3,8 +3,8 @@ import { useTranslation } from "react-i18next";
import { useControllableValue } from "ahooks";
import { AutoComplete, Button, Divider, Form, Input, InputNumber, Select, Switch, Typography, type AutoCompleteProps } from "antd";
import { createSchemaFieldRule } from "antd-zod";
+import { PlusOutlined as PlusOutlinedIcon } from "@ant-design/icons";
import z from "zod";
-import { Plus as PlusIcon } from "lucide-react";
import AccessEditModal from "@/components/access/AccessEditModal";
import AccessSelect from "@/components/access/AccessSelect";
@@ -77,11 +77,21 @@ const ApplyNodeForm = ({ data }: ApplyNodeFormProps) => {
return (
+ }
+ >
-
+ }
+ >
@@ -94,7 +104,7 @@ const ApplyNodeForm = ({ data }: ApplyNodeFormProps) => {
preset="add"
trigger={
}
diff --git a/ui/src/components/workflow/node/NotifyNodeForm.tsx b/ui/src/components/workflow/node/NotifyNodeForm.tsx
index 62321999..48b92c24 100644
--- a/ui/src/components/workflow/node/NotifyNodeForm.tsx
+++ b/ui/src/components/workflow/node/NotifyNodeForm.tsx
@@ -3,8 +3,8 @@ import { Link } from "react-router";
import { useTranslation } from "react-i18next";
import { Button, Form, Input, Select } from "antd";
import { createSchemaFieldRule } from "antd-zod";
+import { RightOutlined as RightOutlinedIcon } from "@ant-design/icons";
import { z } from "zod";
-import { ChevronRight as ChevronRightIcon } from "lucide-react";
import { usePanel } from "../PanelProvider";
import { useAntdForm, useZustandShallowSelector } from "@/hooks";
@@ -75,9 +75,9 @@ const NotifyNodeForm = ({ data }: NotifyNodeFormProps) => {
{t("workflow.nodes.notify.form.channel.label")}
-
diff --git a/ui/src/components/workflow/run/WorkflowRunDetailDrawer.tsx b/ui/src/components/workflow/run/WorkflowRunDetailDrawer.tsx
index a9e4af41..b2b30672 100644
--- a/ui/src/components/workflow/run/WorkflowRunDetailDrawer.tsx
+++ b/ui/src/components/workflow/run/WorkflowRunDetailDrawer.tsx
@@ -2,7 +2,6 @@ import { cloneElement, useMemo } from "react";
import { useTranslation } from "react-i18next";
import { useControllableValue } from "ahooks";
import { Alert, Drawer } from "antd";
-import { CircleCheck as CircleCheckIcon, CircleX as CircleXIcon } from "lucide-react";
import Show from "@/components/Show";
import { type WorkflowRunModel } from "@/domain/workflowRun";
@@ -45,11 +44,11 @@ const WorkflowRunDetailDrawer = ({ data, loading, trigger, ...props }: WorkflowR
setOpen(false)}>
- } />
+
- } />
+
diff --git a/ui/src/components/workflow/run/WorkflowRuns.tsx b/ui/src/components/workflow/run/WorkflowRuns.tsx
index 09b116da..41282d81 100644
--- a/ui/src/components/workflow/run/WorkflowRuns.tsx
+++ b/ui/src/components/workflow/run/WorkflowRuns.tsx
@@ -3,7 +3,11 @@ import { useParams } from "react-router-dom";
import { useTranslation } from "react-i18next";
import { useRequest } from "ahooks";
import { Button, Empty, notification, Space, Table, theme, Tooltip, Typography, type TableProps } from "antd";
-import { CircleCheck as CircleCheckIcon, CircleX as CircleXIcon, Eye as EyeIcon } from "lucide-react";
+import {
+ CheckCircleTwoTone as CheckCircleTwoToneIcon,
+ CloseCircleTwoTone as CloseCircleTwoToneIcon,
+ SelectOutlined as SelectOutlinedIcon,
+} from "@ant-design/icons";
import { ClientResponseError } from "pocketbase";
import WorkflowRunDetailDrawer from "./WorkflowRunDetailDrawer";
@@ -45,14 +49,14 @@ const WorkflowRuns = ({ className, style }: WorkflowRunsProps) => {
if (record.succeed) {
return (
-
+ {t("workflow_run.props.status.succeeded")}
);
} else {
-
+ {t("workflow_run.props.status.failed")};
@@ -82,7 +86,7 @@ const WorkflowRuns = ({ className, style }: WorkflowRunsProps) => {
width: 120,
render: (_, record) => (
- } variant="text" />} />
+ } variant="text" />} />
),
},
diff --git a/ui/src/i18n/locales/en/nls.workflow.json b/ui/src/i18n/locales/en/nls.workflow.json
index 970682de..699259e4 100644
--- a/ui/src/i18n/locales/en/nls.workflow.json
+++ b/ui/src/i18n/locales/en/nls.workflow.json
@@ -40,10 +40,12 @@
"workflow.nodes.start.form.trigger_cron.tooltip": "Time zone is based on the server.",
"workflow.nodes.start.form.trigger_cron.extra": "Expected execution time for the last 5 times:",
"workflow.nodes.start.form.trigger_cron_alert.content": "Tips: If you have multiple workflows, it is recommended to set them to run at multiple times of the day instead of always running at specific times.
Reference links: 1. Let’s Encrypt rate limits 2. Why should my Let’s Encrypt (ACME) client run at a random time?",
- "workflow.nodes.apply.form.domain.label": "Domain (wildcard domain is supported)",
+ "workflow.nodes.apply.form.domain.label": "Domain",
"workflow.nodes.apply.form.domain.placeholder": "Please enter domain",
+ "workflow.nodes.apply.form.domain.tooltip": "Wildcard domain: *.example.com",
"workflow.nodes.apply.form.email.label": "Contact Email",
"workflow.nodes.apply.form.email.placeholder": "Please enter contact email",
+ "workflow.nodes.apply.form.email.tooltip": "Contact information required for SSL certificate application. Please pay attention to the rate limits.",
"workflow.nodes.apply.form.access.label": "DNS Provider Authorization",
"workflow.nodes.apply.form.access.placeholder": "Please select an authorization of DNS provider",
"workflow.nodes.apply.form.access.button": "Create",
diff --git a/ui/src/i18n/locales/zh/nls.workflow.json b/ui/src/i18n/locales/zh/nls.workflow.json
index 11f9c0d1..78d8e852 100644
--- a/ui/src/i18n/locales/zh/nls.workflow.json
+++ b/ui/src/i18n/locales/zh/nls.workflow.json
@@ -40,10 +40,12 @@
"workflow.nodes.start.form.trigger_cron.tooltip": "时区以服务器设置为准。",
"workflow.nodes.start.form.trigger_cron.extra": "预计最近 5 次执行时间:",
"workflow.nodes.start.form.trigger_cron_alert.content": "小贴士:如果你有多个工作流,建议将它们设置为在一天中的多个时间段运行,而非总是在相同的特定时间。
参考链接: 1. Let’s Encrypt 速率限制 2. 为什么我的 Let’s Encrypt (ACME) 客户端启动时间应当随机?",
- "workflow.nodes.apply.form.domain.label": "域名(支持泛域名)",
+ "workflow.nodes.apply.form.domain.label": "域名",
"workflow.nodes.apply.form.domain.placeholder": "请输入域名",
+ "workflow.nodes.apply.form.domain.tooltip": "泛域名表示形式为:*.example.com",
"workflow.nodes.apply.form.email.label": "联系邮箱",
"workflow.nodes.apply.form.email.placeholder": "请输入联系邮箱",
+ "workflow.nodes.apply.form.email.tooltip": "申请签发 SSL 证书时所需的联系方式。请注意速率限制。",
"workflow.nodes.apply.form.access.label": "DNS 提供商授权",
"workflow.nodes.apply.form.access.placeholder": "请选择 DNS 提供商授权",
"workflow.nodes.apply.form.access.button": "新建",
diff --git a/ui/src/pages/ConsoleLayout.tsx b/ui/src/pages/ConsoleLayout.tsx
index f59f47eb..980828d4 100644
--- a/ui/src/pages/ConsoleLayout.tsx
+++ b/ui/src/pages/ConsoleLayout.tsx
@@ -3,17 +3,17 @@ import { Link, Navigate, Outlet, useLocation, useNavigate } from "react-router-d
import { useTranslation } from "react-i18next";
import { Button, Drawer, Dropdown, Layout, Menu, Tooltip, theme, type ButtonProps, type MenuProps } from "antd";
import {
- Languages as LanguagesIcon,
- LogOut as LogOutIcon,
- Home as HomeIcon,
- Menu as MenuIcon,
- Moon as MoonIcon,
- Server as ServerIcon,
- Settings as SettingsIcon,
- ShieldCheck as ShieldCheckIcon,
- Sun as SunIcon,
- Workflow as WorkflowIcon,
-} from "lucide-react";
+ CloudServerOutlined as CloudServerOutlinedIcon,
+ GlobalOutlined as GlobalOutlinedIcon,
+ HomeOutlined as HomeOutlinedIcon,
+ LogoutOutlined as LogoutOutlinedIcon,
+ MenuOutlined as MenuOutlinedIcon,
+ MoonOutlined as MoonOutlinedIcon,
+ NodeIndexOutlined as NodeIndexOutlinedIcon,
+ SafetyOutlined as SafetyOutlinedIcon,
+ SettingOutlined as SettingOutlinedIcon,
+ SunOutlined as SunOutlinedIcon,
+} from "@ant-design/icons";
import Version from "@/components/core/Version";
import { useBrowserTheme } from "@/hooks";
@@ -67,7 +67,7 @@ const ConsoleLayout = () => {