-
+
+
);
}
diff --git a/frontend/app/features/platform/PublishModal.tsx b/frontend/app/features/platform/PublishModal.tsx
index cc83d3d..f721e0b 100644
--- a/frontend/app/features/platform/PublishModal.tsx
+++ b/frontend/app/features/platform/PublishModal.tsx
@@ -2,21 +2,18 @@ import { type FormEvent } from "react";
import Icon from "../../components/common/Icon";
import type { ScriptItem, Visibility } from "../../services/api";
import { scriptIcon } from "../../features/platform/WorkspaceTree";
+import {
+ AppFormDialog,
+ dialogPrimaryButtonClass,
+ dialogSecondaryButtonClass,
+} from "~/components/common/AppFormDialog";
+import { Button } from "~/components/ui/button";
import {
formFieldClass,
formHintClass,
formInputClass,
formTextareaClass,
- iconButtonClass,
- modalBackdropClass,
- modalEyebrowClass,
- modalFooterClass,
modalFormClass,
- modalHeaderClass,
- modalPanelClass,
- modalTitleClass,
- primaryButtonClass,
- secondaryButtonClass,
} from "./modalUi";
type PublishModalProps = {
@@ -40,26 +37,18 @@ export function PublishModal({
onSubmit,
onClose,
}: PublishModalProps) {
- if (!publishTarget) return null;
-
return (
-
-
-
-
- 不可变制品
-
发布稳定版本
-
-
-
-
-
+
);
}
diff --git a/frontend/app/features/platform/VersionReceiptModal.tsx b/frontend/app/features/platform/VersionReceiptModal.tsx
index 5a2bbc0..c8e70ad 100644
--- a/frontend/app/features/platform/VersionReceiptModal.tsx
+++ b/frontend/app/features/platform/VersionReceiptModal.tsx
@@ -2,11 +2,11 @@ import Icon from "../../components/common/Icon";
import type { StableVersion } from "../../services/api";
import { copyToClipboard } from "../../lib/clipboard";
import {
- modalBackdropClass,
- modalEyebrowClass,
- modalPanelClass,
- primaryButtonClass,
-} from "./modalUi";
+ AppFormDialog,
+ dialogPrimaryButtonClass,
+} from "~/components/common/AppFormDialog";
+import { Button } from "~/components/ui/button";
+import { modalEyebrowClass } from "./modalUi";
type VersionReceiptModalProps = {
publishedVersion: StableVersion | null;
@@ -19,50 +19,51 @@ export function VersionReceiptModal({
onClose,
onCopy,
}: VersionReceiptModalProps) {
- if (!publishedVersion) return null;
-
return (
-
-
-
-
-
- STABLE VERSION
-
- 稳定版本发布成功
-
-
- {publishedVersion.version_label} 已成为不可变制品,
- 后续调度将通过 versions_id 引用它。
-
-
- versions_id
-
- {publishedVersion.versions_id}
-
-
-
+ {
+ if (!nextOpen) onClose();
+ }}
+ showCloseButton={false}
+ contentClassName="sm:max-w-[min(470px,calc(100vw-40px))] px-7 py-[30px] pb-[25px] text-center"
+ bodyClassName="overflow-visible"
+ >
+
+
+
+ STABLE VERSION
+
+ 稳定版本发布成功
+
+
+ {publishedVersion?.version_label} 已成为不可变制品,
+ 后续调度将通过 versions_id 引用它。
+
+
+ versions_id
+
+ {publishedVersion?.versions_id}
+
-
-
+
+
+
);
}
diff --git a/frontend/app/features/platform/modalUi.ts b/frontend/app/features/platform/modalUi.ts
index 202d850..12f8ffb 100644
--- a/frontend/app/features/platform/modalUi.ts
+++ b/frontend/app/features/platform/modalUi.ts
@@ -20,7 +20,7 @@ export const modalTitleClass = "mt-1 text-[19px] text-[#1c2d42]";
export const modalFormClass = "flex-1 overflow-y-auto px-[22px] pt-[19px]";
export const modalFooterClass =
- "mt-[3px] flex shrink-0 justify-end gap-2 border-t border-[#e8edf2] bg-[#fafbfc] rounded-b-[11px] px-[22px] py-3.5";
+ "mt-[3px] flex shrink-0 justify-end gap-2 border-t border-[#e8edf2] bg-white rounded-b-[11px] px-[22px] py-3.5";
export const iconButtonClass =
"grid size-[34px] cursor-pointer place-items-center rounded-[7px] border border-[#dfe6ed] bg-white hover:border-[#b9c9da] hover:bg-[#f7faff]";
diff --git a/frontend/app/features/schedules/SchedulePage.tsx b/frontend/app/features/schedules/SchedulePage.tsx
index efe6848..1839874 100644
--- a/frontend/app/features/schedules/SchedulePage.tsx
+++ b/frontend/app/features/schedules/SchedulePage.tsx
@@ -31,14 +31,13 @@ import { useApi, useAuth } from "~/context/AuthContext";
import {
formFieldClass,
formInputClass,
- modalBackdropClass,
- modalCompactClass,
- modalEyebrowClass,
- modalFooterClass,
modalFormClass,
- modalHeaderClass,
- modalTitleClass,
} from "~/features/platform/modalUi";
+import {
+ AppFormDialog,
+ dialogPrimaryButtonClass,
+ dialogSecondaryButtonClass,
+} from "~/components/common/AppFormDialog";
import { NodeInspector } from "./NodeInspector";
import { RunHistory } from "./RunHistory";
import { ScheduleInspector } from "./ScheduleInspector";
@@ -762,34 +761,16 @@ export default function SchedulePage({
)}
- {createDialogOpen && (
-