} />} />
diff --git a/ui/src/pages/accesses/AccessList.tsx b/ui/src/pages/accesses/AccessList.tsx
index 036eae61..c64be2e7 100644
--- a/ui/src/pages/accesses/AccessList.tsx
+++ b/ui/src/pages/accesses/AccessList.tsx
@@ -1,7 +1,7 @@
import { useEffect, useState } from "react";
import { useTranslation } from "react-i18next";
import { useNavigate, useSearchParams } from "react-router-dom";
-import { IconCirclePlus, IconCopy, IconDotsVertical, IconFingerprint, IconPlus, IconReload, IconTrash } from "@tabler/icons-react";
+import { IconCirclePlus, IconCopy, IconDotsVertical, IconEdit, IconFingerprint, IconPlus, IconReload, IconTrash } from "@tabler/icons-react";
import { useRequest } from "ahooks";
import { App, Avatar, Button, Dropdown, Input, Skeleton, Table, type TableProps, Tabs, Typography, theme } from "antd";
import dayjs from "dayjs";
@@ -87,9 +87,21 @@ const AccessList = () => {
+
+
+ ),
+ onClick: () => {
+ handleRecordDetailClick(record);
+ },
+ },
{
key: "duplicate",
- label: t("common.button.duplicate"),
+ label: t("access.action.duplicate.button"),
icon: (
@@ -104,7 +116,7 @@ const AccessList = () => {
},
{
key: "delete",
- label: t("common.button.delete"),
+ label: t("access.action.delete.button"),
danger: true,
icon: (
diff --git a/ui/src/pages/certificates/CertificateList.tsx b/ui/src/pages/certificates/CertificateList.tsx
index d502629e..d89e2019 100644
--- a/ui/src/pages/certificates/CertificateList.tsx
+++ b/ui/src/pages/certificates/CertificateList.tsx
@@ -1,7 +1,7 @@
import { useState } from "react";
import { useTranslation } from "react-i18next";
import { useNavigate, useSearchParams } from "react-router-dom";
-import { IconCertificate, IconDotsVertical, IconExternalLink, IconReload, IconTrash } from "@tabler/icons-react";
+import { IconBrowserShare, IconCertificate, IconDotsVertical, IconExternalLink, IconReload, IconTrash } from "@tabler/icons-react";
import { useRequest } from "ahooks";
import { App, Button, Dropdown, Input, Segmented, Skeleton, Table, type TableProps, Typography, theme } from "antd";
import dayjs from "dayjs";
@@ -146,9 +146,24 @@ const CertificateList = () => {
+
+
+ ),
+ onClick: () => {
+ handleRecordDetailClick(record);
+ },
+ },
+ {
+ type: "divider",
+ },
{
key: "delete",
- label: t("common.button.delete"),
+ label: t("certificate.action.delete.button"),
danger: true,
icon: (
diff --git a/ui/src/pages/workflows/WorkflowDetail.tsx b/ui/src/pages/workflows/WorkflowDetail.tsx
index 0df31c07..b609635b 100644
--- a/ui/src/pages/workflows/WorkflowDetail.tsx
+++ b/ui/src/pages/workflows/WorkflowDetail.tsx
@@ -2,7 +2,7 @@ import { useEffect, useMemo, useState } from "react";
import { useTranslation } from "react-i18next";
import { useNavigate, useParams } from "react-router-dom";
import { IconArrowBackUp, IconChevronDown, IconDots, IconHistory, IconPlayerPlay, IconRobot, IconTrash } from "@tabler/icons-react";
-import { Alert, App, Button, Card, Dropdown, Flex, Form, Input, Space, Tabs } from "antd";
+import { Alert, App, Button, Card, Dropdown, Flex, Form, Input, Segmented, Space, Tabs } from "antd";
import { createSchemaFieldRule } from "antd-zod";
import { isEqual } from "radash";
import { z } from "zod";
@@ -194,55 +194,53 @@ const WorkflowDetail = () => {
return (
-
-
-
-
-
-
{workflow.name || "\u00A0"}
-
{workflow.description || "\u00A0"}
-
-
- {initialized
- ? [
- {t("common.button.edit")}} />,
- ,
- ,
- onClick: () => {
- handleDeleteClick();
- },
- },
- ],
- }}
- trigger={["click"]}
- >
- } iconPosition="end">
- {t("common.button.more")}
-
- ,
- ]
- : []}
-
+
+
+
+
+
{workflow.name || "\u00A0"}
+
{workflow.description || "\u00A0"}
+
+ {initialized
+ ? [
+ {t("common.button.edit")}} />,
+ ,
+ ,
+ onClick: () => {
+ handleDeleteClick();
+ },
+ },
+ ],
+ }}
+ trigger={["click"]}
+ >
+ } iconPosition="end">
+ {t("common.button.more")}
+
+ ,
+ ]
+ : []}
+
+
-
+ {t("workflow.detail.orchestration.tab")},
icon: (
@@ -250,8 +248,8 @@ const WorkflowDetail = () => {
),
},
{
- key: "runs",
- label: t("workflow.detail.runs.tab"),
+ value: "runs",
+ label: {t("workflow.detail.runs.tab")},
icon: (
@@ -259,13 +257,16 @@ const WorkflowDetail = () => {
),
},
]}
- renderTabBar={(props, DefaultTabBar) => }
- tabBarStyle={{ border: "none" }}
- onChange={(key) => setTabValue(key as typeof tabValue)}
+ size="large"
+ value={tabValue}
+ defaultValue="orchestration"
+ onChange={(value) => {
+ setTabValue(value as typeof tabValue);
+ }}
/>
-
+
@@ -280,7 +281,7 @@ const WorkflowDetail = () => {
}}
loading={!initialized}
>
-
+
{t("workflow.detail.orchestration.draft.alert")} } showIcon type="warning" />
@@ -316,14 +317,14 @@ const WorkflowDetail = () => {
-
+
-
diff --git a/ui/src/pages/workflows/WorkflowList.tsx b/ui/src/pages/workflows/WorkflowList.tsx
index 52e6aaf4..82455b94 100644
--- a/ui/src/pages/workflows/WorkflowList.tsx
+++ b/ui/src/pages/workflows/WorkflowList.tsx
@@ -1,7 +1,7 @@
import { useState } from "react";
import { useTranslation } from "react-i18next";
import { useNavigate, useSearchParams } from "react-router-dom";
-import { IconCirclePlus, IconCopy, IconDotsVertical, IconHierarchy3, IconPlus, IconReload, IconTrash } from "@tabler/icons-react";
+import { IconCirclePlus, IconCopy, IconDotsVertical, IconEdit, IconHierarchy3, IconPlus, IconReload, IconTrash } from "@tabler/icons-react";
import { useRequest } from "ahooks";
import { App, Button, Dropdown, Flex, Input, Segmented, Skeleton, Switch, Table, type TableProps, Typography, theme } from "antd";
import dayjs from "dayjs";
@@ -133,9 +133,21 @@ const WorkflowList = () => {
+
+
+ ),
+ onClick: () => {
+ handleRecordDetailClick(record);
+ },
+ },
{
key: "duplicate",
- label: t("common.button.duplicate"),
+ label: t("workflow.action.duplicate.button"),
icon: (
@@ -150,7 +162,7 @@ const WorkflowList = () => {
},
{
key: "delete",
- label: t("common.button.delete"),
+ label: t("workflow.action.delete.button"),
danger: true,
icon: (