diff --git a/skyvern-frontend/src/components/ZoomableImage.tsx b/skyvern-frontend/src/components/ZoomableImage.tsx
index 4d37c0e3..d205d757 100644
--- a/skyvern-frontend/src/components/ZoomableImage.tsx
+++ b/skyvern-frontend/src/components/ZoomableImage.tsx
@@ -33,7 +33,7 @@ function ZoomableImage(props: HTMLImageElementProps) {
{modalOpen && (
0) {
return (
-

+
);
}
diff --git a/skyvern-frontend/src/routes/workflows/WorkflowRun.tsx b/skyvern-frontend/src/routes/workflows/WorkflowRun.tsx
index 6d6983b3..e2c87503 100644
--- a/skyvern-frontend/src/routes/workflows/WorkflowRun.tsx
+++ b/skyvern-frontend/src/routes/workflows/WorkflowRun.tsx
@@ -46,6 +46,7 @@ import { useWorkflowQuery } from "./hooks/useWorkflowQuery";
import fetchToCurl from "fetch-to-curl";
import { useApiCredential } from "@/hooks/useApiCredential";
import { copyText } from "@/util/copyText";
+import { ZoomableImage } from "@/components/ZoomableImage";
type StreamMessage = {
task_id: string;
@@ -214,7 +215,7 @@ function WorkflowRun() {
if (workflowRun?.status === Status.Running && streamImgSrc.length > 0) {
return (
-

+
);
}
diff --git a/skyvern-frontend/src/routes/workflows/editor/DeleteWorkflowButton.tsx b/skyvern-frontend/src/routes/workflows/editor/DeleteWorkflowButton.tsx
new file mode 100644
index 00000000..5bd7bdbd
--- /dev/null
+++ b/skyvern-frontend/src/routes/workflows/editor/DeleteWorkflowButton.tsx
@@ -0,0 +1,94 @@
+import { getClient } from "@/api/AxiosClient";
+import { GarbageIcon } from "@/components/icons/GarbageIcon";
+import { Button } from "@/components/ui/button";
+import {
+ Dialog,
+ DialogClose,
+ DialogContent,
+ DialogDescription,
+ DialogFooter,
+ DialogHeader,
+ DialogTitle,
+ DialogTrigger,
+} from "@/components/ui/dialog";
+import {
+ Tooltip,
+ TooltipContent,
+ TooltipProvider,
+ TooltipTrigger,
+} from "@/components/ui/tooltip";
+import { toast } from "@/components/ui/use-toast";
+import { useCredentialGetter } from "@/hooks/useCredentialGetter";
+import { ReloadIcon } from "@radix-ui/react-icons";
+import { useMutation, useQueryClient } from "@tanstack/react-query";
+import { AxiosError } from "axios";
+
+type Props = {
+ id: string;
+};
+
+function DeleteWorkflowButton({ id }: Props) {
+ const credentialGetter = useCredentialGetter();
+ const queryClient = useQueryClient();
+
+ const deleteWorkflowMutation = useMutation({
+ mutationFn: async (id: string) => {
+ const client = await getClient(credentialGetter);
+ return client.delete(`/workflows/${id}`);
+ },
+ onSuccess: () => {
+ queryClient.invalidateQueries({
+ queryKey: ["workflows"],
+ });
+ },
+ onError: (error: AxiosError) => {
+ toast({
+ variant: "destructive",
+ title: "Failed to delete workflow",
+ description: error.message,
+ });
+ },
+ });
+
+ return (
+
+ );
+}
+
+export { DeleteWorkflowButton };