@burdenoff/fluidgrids-fe-sdk 2026.710.1 → 2026.713.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,4 +1,4 @@
1
- export { WorkflowBuilder } from './chunk-V67QXGBK.js';
1
+ export { WorkflowBuilder } from './chunk-LA7ELWEY.js';
2
2
  import './chunk-7VEOUEIN.js';
3
3
  import './chunk-BQXHJIER.js';
4
4
  import './chunk-UYPB5TWQ.js';
@@ -9,5 +9,5 @@ import './chunk-5BDQNSP3.js';
9
9
  import './chunk-WWU2O2SR.js';
10
10
  import './chunk-XQP33UJR.js';
11
11
  import './chunk-Z54K22LP.js';
12
- //# sourceMappingURL=WorkflowBuilder-YT72BTMW.js.map
13
- //# sourceMappingURL=WorkflowBuilder-YT72BTMW.js.map
12
+ //# sourceMappingURL=WorkflowBuilder-DSPJ5UOG.js.map
13
+ //# sourceMappingURL=WorkflowBuilder-DSPJ5UOG.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":[],"names":[],"mappings":"","file":"WorkflowBuilder-YT72BTMW.js"}
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"WorkflowBuilder-DSPJ5UOG.js"}
@@ -1,4 +1,4 @@
1
- import { Dialog as Dialog$1, DialogContent as DialogContent$1, DialogHeader as DialogHeader$1, DialogTitle as DialogTitle$1, DialogDescription as DialogDescription$1, DialogFooter, Input as Input$1 } from './chunk-7VEOUEIN.js';
1
+ import { Dialog as Dialog$1, DialogContent as DialogContent$1, DialogHeader as DialogHeader$1, DialogTitle as DialogTitle$1, DialogDescription as DialogDescription$1, Input as Input$1, DialogFooter } from './chunk-7VEOUEIN.js';
2
2
  import { getGlobalStoreClient, createGlobalStoreClient, setGlobalStoreClient, resetGlobalStoreClient } from './chunk-BQXHJIER.js';
3
3
  import { GetMyNodeInstallationsDocument, BrowseWorkflowTemplatesDocument, InstallWorkflowNodeDocument, InstallPurchasedNodeDocument, BrowseWorkflowNodesDocument, UninstallWorkflowNodeDocument, CreateStoreOrderDocument } from './chunk-UYPB5TWQ.js';
4
4
  import { useFlowStore } from './chunk-KU64CCSV.js';
@@ -8,8 +8,6 @@ import { waitForFluidGridsClient, getFluidGridsClient, createFluidGridsClient, s
8
8
  import { config, getFluidGridsConfig, validateTrustedOrigin, setFluidGridsConfig, resetFluidGridsConfig } from './chunk-WWU2O2SR.js';
9
9
  import { deepClone, applyTemplateInputs } from './chunk-XQP33UJR.js';
10
10
  import { cn as cn$1, Badge as Badge$1, Button as Button$1 } from './chunk-Z54K22LP.js';
11
- import { ThemeProvider as ThemeProvider$1 } from '@burdenoff/fe-libs/shared/providers/shell';
12
- import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
13
11
  import { useParams, useNavigate } from 'react-router-dom';
14
12
  import { useShallow, shallow } from 'zustand/shallow';
15
13
  import * as React from 'react';
@@ -19,6 +17,7 @@ import { produce } from 'immer';
19
17
  import { nanoid } from 'nanoid/non-secure';
20
18
  import { Icon } from '@iconify/react';
21
19
  import { cn } from '@burdenoff/fe-libs/utils';
20
+ import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
22
21
  import { Textarea, Input, Button, Card, Badge, CardContent as CardContent$1, DropdownMenu, DropdownMenuTrigger, DropdownMenuContent, DropdownMenuLabel, DropdownMenuItem, DropdownMenuSeparator, Dialog, DialogTrigger, DialogContent, DialogHeader, DialogTitle, DialogDescription, Sheet, SheetTrigger, SheetContent, SheetHeader, SheetTitle, Popover, PopoverTrigger, PopoverContent, Toaster, Tabs, TabsList, TabsTrigger, TabsContent, CardHeader as CardHeader$1, CardTitle as CardTitle$1, CardDescription as CardDescription$1, ScrollArea, TooltipProvider, Tooltip, TooltipTrigger, TooltipContent, Label, Select, SelectTrigger, SelectValue, SelectContent, SelectItem } from '@burdenoff/fe-libs/ui';
23
22
  import * as AdaptiveCards from 'adaptivecards';
24
23
  import { formatDistanceToNow } from 'date-fns';
@@ -33,14 +32,12 @@ import { gql as gql$1 } from '@apollo/client/core';
33
32
  import { Sparkles, Star, Download, Eye, History, Loader2, RotateCcw, Maximize2, LayoutGrid, Plus, Trash2, GitBranch, AlertCircle, Search, RefreshCw, CheckCircle2, Package, Info, Copy, BadgeCheck, DollarSign, PlusCircle, ChevronDown, Type, Code, Hash, List, Braces, Workflow, ChevronRight, Layers, X, AlertTriangle } from 'lucide-react';
34
33
  import { animate, easeOut } from 'popmotion';
35
34
  import { createPortal } from 'react-dom';
35
+ import { ThemeProvider as ThemeProvider$1 } from '@burdenoff/fe-libs/shared/providers/shell';
36
36
  import '@xyflow/react/dist/style.css';
37
37
  import { buildSchema, GraphQLObjectType, GraphQLInputObjectType, GraphQLEnumType, GraphQLInterfaceType, GraphQLUnionType, GraphQLNonNull, GraphQLList } from 'graphql';
38
38
  import { create } from 'zustand';
39
39
  import { ErrorBoundary } from '@burdenoff/fe-libs/shared/components';
40
40
 
41
- function ThemeProvider({ children }) {
42
- return /* @__PURE__ */ jsx(ThemeProvider$1, { children });
43
- }
44
41
  function useDeleteNode() {
45
42
  const { getNode, getEdges, deleteElements } = useReactFlow();
46
43
  const [deleteNode, deleteEdge] = useFlowStore(
@@ -9119,50 +9116,46 @@ function SubNodeComponent({
9119
9116
  useShallow((s) => [s.execution.nodeStatuses])
9120
9117
  );
9121
9118
  const nodeStatus = nodeStatuses[id] || "idle";
9122
- const statusRing = nodeStatus === "success" ? "ring-2 ring-green-500" : nodeStatus === "error" ? "ring-2 ring-red-500" : nodeStatus === "running" ? "ring-2 ring-blue-500 animate-pulse" : "";
9119
+ const statusRing = nodeStatus === "success" ? "ring-2 ring-[var(--color-status-success-border)]" : nodeStatus === "error" ? "ring-2 ring-[var(--color-status-error-border)]" : nodeStatus === "running" ? "ring-2 ring-[var(--color-status-info-border)] animate-pulse" : "";
9123
9120
  const handleShowNodeProperties = useCallback(() => {
9124
9121
  showNodePropertiesOf({ id, type: nodeType });
9125
9122
  }, [id, nodeType, showNodePropertiesOf]);
9126
- return /* @__PURE__ */ jsxs("div", { className: "flex flex-col items-center", children: [
9127
- /* @__PURE__ */ jsx(
9128
- Handle,
9129
- {
9130
- type: "target",
9131
- position: Position.Top,
9132
- id: "target",
9133
- isConnectable,
9134
- className: "size-2.5 bg-accent border-2 border-accent/60"
9135
- }
9136
- ),
9137
- /* @__PURE__ */ jsx("div", { className: "w-0.5 h-4 border-l-2 border-dashed border-accent/40" }),
9138
- /* @__PURE__ */ jsx("span", { className: "text-[10px] text-accent/70 font-medium mb-1", children: meta.title.includes("Model") ? "Model" : meta.title.includes("Memory") ? "Memory" : meta.title.includes("Tool") ? "Tool" : meta.title.includes("Parser") ? "Parser" : "Adapter" }),
9139
- /* @__PURE__ */ jsx(
9140
- "div",
9141
- {
9142
- className: `w-14 h-14 rounded-full bg-card border-2 border-accent/40 flex items-center justify-center shadow-lg cursor-pointer transition-all hover:border-accent/80 hover:shadow-xl ${statusRing}`,
9143
- onDoubleClick: handleShowNodeProperties,
9144
- "data-selected": selected,
9145
- children: /* @__PURE__ */ jsx(
9146
- "img",
9147
- {
9148
- src: `https://api.iconify.design/${meta.icon.replace(":", "/")}.svg`,
9149
- alt: meta.title,
9150
- className: "w-7 h-7 opacity-80"
9151
- }
9152
- )
9153
- }
9154
- ),
9155
- /* @__PURE__ */ jsx("span", { className: "mt-1.5 text-xs text-accent font-medium text-center max-w-24 leading-tight", children: meta.title }),
9156
- /* @__PURE__ */ jsx(
9157
- "button",
9158
- {
9159
- onClick: () => deleteNode(id),
9160
- className: "absolute -top-1 -right-1 w-4 h-4 rounded-full bg-destructive/80 text-destructive-foreground text-[10px] flex items-center justify-center opacity-0 group-hover:opacity-100 hover:bg-destructive transition-opacity",
9161
- children: "\xD7"
9162
- }
9163
- ),
9164
- /* @__PURE__ */ jsx(AdapterConnectors, { nodeId: id, adapters: data?.nodeData?.nodeAdapters })
9165
- ] });
9123
+ return (
9124
+ // `relative` anchors the absolute delete button; `group` enables its hover reveal.
9125
+ /* @__PURE__ */ jsxs("div", { className: "relative group flex flex-col items-center", children: [
9126
+ /* @__PURE__ */ jsx(
9127
+ Handle,
9128
+ {
9129
+ type: "target",
9130
+ position: Position.Top,
9131
+ id: "target",
9132
+ isConnectable,
9133
+ className: "size-2.5 bg-accent border-2 border-accent/60"
9134
+ }
9135
+ ),
9136
+ /* @__PURE__ */ jsx("div", { className: "w-0.5 h-4 border-l-2 border-dashed border-accent/40" }),
9137
+ /* @__PURE__ */ jsx("span", { className: "text-[10px] text-accent/70 font-medium mb-1", children: meta.title.includes("Model") ? "Model" : meta.title.includes("Memory") ? "Memory" : meta.title.includes("Tool") ? "Tool" : meta.title.includes("Parser") ? "Parser" : "Adapter" }),
9138
+ /* @__PURE__ */ jsx(
9139
+ "div",
9140
+ {
9141
+ className: `w-14 h-14 rounded-full bg-card border-2 border-accent/40 flex items-center justify-center shadow-lg cursor-pointer transition-all hover:border-accent/80 hover:shadow-xl ${statusRing}`,
9142
+ onDoubleClick: handleShowNodeProperties,
9143
+ "data-selected": selected,
9144
+ children: /* @__PURE__ */ jsx(Icon, { icon: meta.icon, className: "w-7 h-7 text-accent opacity-80" })
9145
+ }
9146
+ ),
9147
+ /* @__PURE__ */ jsx("span", { className: "mt-1.5 text-xs text-accent font-medium text-center max-w-24 leading-tight", children: meta.title }),
9148
+ /* @__PURE__ */ jsx(
9149
+ "button",
9150
+ {
9151
+ onClick: () => deleteNode(id),
9152
+ className: "absolute -top-1 -right-1 w-4 h-4 rounded-full bg-destructive/80 text-destructive-foreground text-[10px] flex items-center justify-center opacity-0 group-hover:opacity-100 hover:bg-destructive transition-opacity",
9153
+ children: "\xD7"
9154
+ }
9155
+ ),
9156
+ /* @__PURE__ */ jsx(AdapterConnectors, { nodeId: id, adapters: data?.nodeData?.nodeAdapters })
9157
+ ] })
9158
+ );
9166
9159
  }
9167
9160
  var getNodeMetadata = (value) => {
9168
9161
  function NodeComponent(props) {
@@ -9761,7 +9754,10 @@ function SidebarPanelWrapper({
9761
9754
  return /* @__PURE__ */ jsx(
9762
9755
  "div",
9763
9756
  {
9764
- className: cn("flex flex-col w-80 h-full bg-background/60", className),
9757
+ className: cn(
9758
+ "flex flex-col w-80 h-full bg-background/40 backdrop-blur-sm",
9759
+ className
9760
+ ),
9765
9761
  ...props,
9766
9762
  children
9767
9763
  }
@@ -10933,43 +10929,50 @@ var STORE_CATEGORIES = [
10933
10929
  key: "ai",
10934
10930
  label: "AI & Automation",
10935
10931
  description: "AI models, agents, and intelligent automation",
10936
- icon: "mynaui:brain"
10932
+ icon: "mynaui:sparkles",
10933
+ color: "--color-chart-1"
10937
10934
  },
10938
10935
  {
10939
10936
  key: "integration",
10940
10937
  label: "Action in an App",
10941
10938
  description: "Connect with apps like Slack, Notion, Google Sheets",
10942
- icon: "mynaui:puzzle"
10939
+ icon: "mynaui:puzzle",
10940
+ color: "--color-chart-2"
10943
10941
  },
10944
10942
  {
10945
10943
  key: "data",
10946
10944
  label: "Data & Transform",
10947
10945
  description: "Manipulate, filter, or convert data",
10948
- icon: "mynaui:database"
10946
+ icon: "mynaui:database",
10947
+ color: "--color-chart-3"
10949
10948
  },
10950
10949
  {
10951
10950
  key: "flow",
10952
10951
  label: "Flow & Logic",
10953
10952
  description: "Branch, merge, or loop the flow",
10954
- icon: "mynaui:git-branch"
10953
+ icon: "mynaui:git-branch",
10954
+ color: "--color-chart-4"
10955
10955
  },
10956
10956
  {
10957
10957
  key: "core",
10958
10958
  label: "Core",
10959
10959
  description: "HTTP requests, code, webhooks, and more",
10960
- icon: "mynaui:cog"
10960
+ icon: "mynaui:cog",
10961
+ color: "--color-chart-5"
10961
10962
  },
10962
10963
  {
10963
10964
  key: "communication",
10964
10965
  label: "Communication",
10965
10966
  description: "Email, messaging, and notifications",
10966
- icon: "mynaui:message-dots"
10967
+ icon: "mynaui:message-dots",
10968
+ color: "--color-chart-6"
10967
10969
  },
10968
10970
  {
10969
10971
  key: "trigger",
10970
10972
  label: "Triggers",
10971
10973
  description: "Start your workflow automatically",
10972
- icon: "mynaui:bolt"
10974
+ icon: "mynaui:zap",
10975
+ color: "--color-chart-7"
10973
10976
  }
10974
10977
  ];
10975
10978
  function useStoreNodes(options = {}) {
@@ -12151,9 +12154,23 @@ function StoreCategoryList({
12151
12154
  "button",
12152
12155
  {
12153
12156
  onClick: () => onSelectCategory(cat),
12154
- className: "w-full flex items-center gap-3 px-2 py-3 rounded-md hover:bg-muted/60 transition-colors text-left group",
12157
+ className: "w-full flex items-center gap-3 px-2 py-3 rounded-lg border border-transparent hover:border-default hover:bg-muted/60 transition-colors text-left group",
12155
12158
  children: [
12156
- /* @__PURE__ */ jsx("div", { className: "size-9 shrink-0 rounded-lg bg-muted flex items-center justify-center", children: /* @__PURE__ */ jsx(Icon, { icon: cat.icon, className: "size-5 text-primary" }) }),
12159
+ /* @__PURE__ */ jsx(
12160
+ "div",
12161
+ {
12162
+ className: "size-9 shrink-0 rounded-lg flex items-center justify-center",
12163
+ style: { backgroundColor: `color-mix(in oklab, var(${cat.color}) 16%, transparent)` },
12164
+ children: /* @__PURE__ */ jsx(
12165
+ Icon,
12166
+ {
12167
+ icon: cat.icon,
12168
+ className: "size-5",
12169
+ style: { color: `var(${cat.color})` }
12170
+ }
12171
+ )
12172
+ }
12173
+ ),
12157
12174
  /* @__PURE__ */ jsxs("div", { className: "flex-1 min-w-0", children: [
12158
12175
  /* @__PURE__ */ jsx("p", { className: "text-sm font-medium text-foreground group-hover:text-primary transition-colors", children: cat.label }),
12159
12176
  /* @__PURE__ */ jsx("p", { className: "text-xs text-muted-foreground truncate mt-0.5", children: cat.description })
@@ -12162,7 +12179,7 @@ function StoreCategoryList({
12162
12179
  Icon,
12163
12180
  {
12164
12181
  icon: "mynaui:chevron-right",
12165
- className: "size-4 shrink-0 text-foreground/40"
12182
+ className: "size-4 shrink-0 text-foreground/40 group-hover:translate-x-0.5 transition-transform"
12166
12183
  }
12167
12184
  )
12168
12185
  ]
@@ -12427,7 +12444,7 @@ function StoreNodeOperations({ nodeType }) {
12427
12444
  /* @__PURE__ */ jsx("div", { className: "size-7 shrink-0 rounded-md bg-muted flex items-center justify-center", children: /* @__PURE__ */ jsx(
12428
12445
  Icon,
12429
12446
  {
12430
- icon: isTrigger ? "solar:play-bold" : "mynaui:bolt",
12447
+ icon: isTrigger ? "solar:play-bold" : "mynaui:zap",
12431
12448
  className: "size-3.5 text-primary"
12432
12449
  }
12433
12450
  ) }),
@@ -13577,7 +13594,7 @@ function DesktopSidebarFragment({
13577
13594
  },
13578
13595
  [configTemplate, configContent, configNodeCheck, performImport]
13579
13596
  );
13580
- return /* @__PURE__ */ jsxs("div", { className: "relative max-w-sm w-fit flex shrink-0 divide-x divide-card-foreground/10", children: [
13597
+ return /* @__PURE__ */ jsxs("div", { className: "relative max-w-sm w-fit flex shrink-0 divide-x divide-card-foreground/10 rounded-xl overflow-hidden border border-card-foreground/10", children: [
13581
13598
  activePanel !== "none" && /* @__PURE__ */ jsx("div", { className: "min-w-xs grow bg-card", children: /* @__PURE__ */ jsx(SwitchSidebarPanel, { active: activePanel }) }),
13582
13599
  /* @__PURE__ */ jsx("div", { className: "shrink-0 bg-card p-1.5", children: /* @__PURE__ */ jsxs("div", { className: "h-full flex flex-col gap-2", children: [
13583
13600
  /* @__PURE__ */ jsx(
@@ -13855,7 +13872,7 @@ function useNodeAutoAdjust() {
13855
13872
  [getNodes, updateNode]
13856
13873
  );
13857
13874
  }
13858
- function ThemeProvider2({
13875
+ function ThemeProvider({
13859
13876
  children,
13860
13877
  defaultTheme = "system",
13861
13878
  storageKey = "vite-ui-theme"
@@ -17635,7 +17652,7 @@ function App({
17635
17652
  };
17636
17653
  const currentSourceSchema = propSourceSchema || getSchemaForNode(selectedSourceNode, true);
17637
17654
  const currentTargetSchema = propTargetSchema || getSchemaForNode(selectedTargetNode, false);
17638
- return /* @__PURE__ */ jsx(DataConfigProvider, { config: dataConfig, children: /* @__PURE__ */ jsxs(ThemeProvider2, { defaultTheme: "light", storageKey: "vite-ui-theme", children: [
17655
+ return /* @__PURE__ */ jsx(DataConfigProvider, { config: dataConfig, children: /* @__PURE__ */ jsxs(ThemeProvider, { defaultTheme: "light", storageKey: "vite-ui-theme", children: [
17639
17656
  /* @__PURE__ */ jsx("div", { className: "min-h-screen bg-background", children: /* @__PURE__ */ jsxs("main", { className: "container py-6", children: [
17640
17657
  currentSourceSchema && currentTargetSchema && selectedSourceNode && selectedSourceOperation && selectedTargetNode && selectedTargetOperation && /* @__PURE__ */ jsxs("div", { className: "mt-8 p-4 border rounded-lg", children: [
17641
17658
  /* @__PURE__ */ jsx("h2", { className: "text-lg font-medium mb-4", children: "Data Mapping" }),
@@ -20415,7 +20432,7 @@ function useFlowValidator(onValidate) {
20415
20432
  }, [getNodes, getEdges, onValidate]);
20416
20433
  return [isValidating, validate];
20417
20434
  }
20418
- var SaveFlowButton = () => {
20435
+ var SaveFlowButton = ({ className }) => {
20419
20436
  const { saveToBackend, isSaving } = useSaveWorkflow();
20420
20437
  const [isValidating, validateFlow] = useFlowValidator(async (isValid) => {
20421
20438
  if (isValid) {
@@ -20433,10 +20450,10 @@ var SaveFlowButton = () => {
20433
20450
  disabled: isValidating || isSaving,
20434
20451
  variant: "outline",
20435
20452
  size: "sm",
20436
- className: "flex gap-4",
20453
+ className: cn("flex gap-4", className),
20437
20454
  children: [
20438
20455
  /* @__PURE__ */ jsx(Icon, { icon: "fluent:save-28-filled" }),
20439
- isSaving ? "Saving..." : "Save Flow"
20456
+ isSaving ? "Saving..." : "Save"
20440
20457
  ]
20441
20458
  }
20442
20459
  ) });
@@ -20570,7 +20587,9 @@ function TriggerDataDialog({
20570
20587
  ] })
20571
20588
  ] }) });
20572
20589
  }
20573
- var ExecuteWorkflowButton = () => {
20590
+ var ExecuteWorkflowButton = ({
20591
+ className
20592
+ }) => {
20574
20593
  const { executeFullWorkflow } = useNodeExecution();
20575
20594
  const [dialogOpen, setDialogOpen] = useState(false);
20576
20595
  const [isExecuting] = useFlowStore(
@@ -20615,10 +20634,13 @@ var ExecuteWorkflowButton = () => {
20615
20634
  disabled: isValidating || isExecuting,
20616
20635
  variant: "default",
20617
20636
  size: "sm",
20618
- className: "flex gap-2 bg-[var(--color-status-success-bg)] hover:bg-[var(--color-status-success-bg)]/90 text-[var(--color-text-on-status)]",
20637
+ className: cn(
20638
+ "flex items-center justify-center gap-2 h-8 rounded-l-lg rounded-r-none px-3 bg-[var(--color-status-success-bg)] hover:bg-[var(--color-status-success-bg)]/90 text-[var(--color-text-on-status)] font-medium",
20639
+ className
20640
+ ),
20619
20641
  children: [
20620
20642
  /* @__PURE__ */ jsx(Icon, { icon: "mdi:play", className: "size-4" }),
20621
- isExecuting ? "Running..." : isValidating ? "Validating..." : "Execute"
20643
+ isExecuting ? "Running..." : isValidating ? "Validating..." : "Run"
20622
20644
  ]
20623
20645
  }
20624
20646
  ),
@@ -22516,7 +22538,7 @@ var STATUS_STYLES = {
22516
22538
  ARCHIVED: { label: "Archived", variant: "outline" },
22517
22539
  DEPRECATED: { label: "Deprecated", variant: "destructive" }
22518
22540
  };
22519
- function VersionHistoryPanel() {
22541
+ function VersionHistoryPanel({ className }) {
22520
22542
  const params = useParams();
22521
22543
  const navigate = useNavigate();
22522
22544
  const workflowKey = params?.id ?? "";
@@ -22556,7 +22578,7 @@ function VersionHistoryPanel() {
22556
22578
  {
22557
22579
  variant: "outline",
22558
22580
  size: "sm",
22559
- className: "flex gap-1",
22581
+ className: cn("flex gap-1", className),
22560
22582
  onClick: () => refetch(),
22561
22583
  children: [
22562
22584
  /* @__PURE__ */ jsx(History, { className: "size-4" }),
@@ -22644,7 +22666,9 @@ function VersionHistoryPanel() {
22644
22666
  ] })
22645
22667
  ] });
22646
22668
  }
22647
- var ActivateWorkflowButton = () => {
22669
+ var ActivateWorkflowButton = ({
22670
+ className
22671
+ }) => {
22648
22672
  const [isProcessing, setIsProcessing] = useState(false);
22649
22673
  const [dbId, status, setWorkflow] = useFlowStore(
22650
22674
  useShallow((s) => [
@@ -22698,7 +22722,11 @@ var ActivateWorkflowButton = () => {
22698
22722
  disabled: isProcessing || !dbId,
22699
22723
  variant: isDraft ? "default" : "outline",
22700
22724
  size: "sm",
22701
- className: `flex gap-1 ${isDraft ? "bg-green-600 hover:bg-green-700 text-white" : ""}`,
22725
+ className: cn(
22726
+ "flex gap-1",
22727
+ isDraft && "bg-green-600 hover:bg-green-700 text-white",
22728
+ className
22729
+ ),
22702
22730
  children: [
22703
22731
  /* @__PURE__ */ jsx(
22704
22732
  Icon,
@@ -22712,6 +22740,34 @@ var ActivateWorkflowButton = () => {
22712
22740
  }
22713
22741
  );
22714
22742
  };
22743
+ function RunWithViewRuns({
22744
+ onViewRuns,
22745
+ canViewRuns,
22746
+ className,
22747
+ runButtonClassName
22748
+ }) {
22749
+ return /* @__PURE__ */ jsxs("div", { className: cn("inline-flex items-center", className), children: [
22750
+ /* @__PURE__ */ jsx(ExecuteWorkflowButton, { className: runButtonClassName }),
22751
+ /* @__PURE__ */ jsxs(DropdownMenu, { children: [
22752
+ /* @__PURE__ */ jsx(DropdownMenuTrigger, { asChild: true, children: /* @__PURE__ */ jsx(
22753
+ Button,
22754
+ {
22755
+ variant: "default",
22756
+ size: "icon",
22757
+ className: "flex items-center justify-center h-8 w-6 rounded-r-lg rounded-l-none border-l border-white/20 bg-[var(--color-status-success-bg)] hover:bg-[var(--color-status-success-bg)]/90",
22758
+ children: /* @__PURE__ */ jsx(
22759
+ Icon,
22760
+ {
22761
+ icon: "mynaui:chevron-down",
22762
+ className: "size-3.5 text-[var(--color-text-on-status)]"
22763
+ }
22764
+ )
22765
+ }
22766
+ ) }),
22767
+ /* @__PURE__ */ jsx(DropdownMenuContent, { align: "end", children: /* @__PURE__ */ jsx(DropdownMenuItem, { onClick: onViewRuns, disabled: !canViewRuns, children: "View Runs" }) })
22768
+ ] })
22769
+ ] });
22770
+ }
22715
22771
  var edgeTypes2 = {
22716
22772
  deletable: CustomDeletableEdge
22717
22773
  };
@@ -22772,6 +22828,7 @@ var FlowBuilder = ({ readOnly = false }) => {
22772
22828
  }, [nodeTypesVersion, nodes]);
22773
22829
  const [workflowName, setWorkflowName] = useState(name);
22774
22830
  const [workflowAlias, setWorkflowAlias] = useState(alias || "");
22831
+ const [isEditingName, setIsEditingName] = useState(false);
22775
22832
  useEffect(() => {
22776
22833
  setWorkflowName(name);
22777
22834
  }, [name]);
@@ -22822,6 +22879,10 @@ var FlowBuilder = ({ readOnly = false }) => {
22822
22879
  useEffect(() => {
22823
22880
  handleAutoAdjustNodeAfterNodeMeasuredRef.current = handleAutoAdjustNodeAfterNodeMeasured;
22824
22881
  }, [handleAutoAdjustNodeAfterNodeMeasured]);
22882
+ const handleViewRuns = useCallback(() => {
22883
+ if (!id) return;
22884
+ navigate(`../runs?workflowKey=${encodeURIComponent(id)}`);
22885
+ }, [id, navigate]);
22825
22886
  const handleNodesChange = useCallback(
22826
22887
  (changes) => {
22827
22888
  changes.forEach((change) => {
@@ -22845,7 +22906,7 @@ var FlowBuilder = ({ readOnly = false }) => {
22845
22906
  ]
22846
22907
  );
22847
22908
  return /* @__PURE__ */ jsxs("div", { className: "flex flex-col h-full w-full overflow-hidden", children: [
22848
- !isReadOnly && /* @__PURE__ */ jsxs(Card, { className: "h-14 shrink-0 border-0 from-primary/40 p-2 to-transparent rounded-none bg-gradient-to-r w-full items-center flex justify-between border-b border-card-foreground/10", children: [
22909
+ !isReadOnly && /* @__PURE__ */ jsxs(Card, { className: "h-14 shrink-0 border-0 from-primary/40 p-2 to-transparent rounded-t-xl rounded-b-none bg-gradient-to-l backdrop-blur-sm mt-2 mx-4 items-center flex justify-between border border-card-foreground/10 border-b-0", children: [
22849
22910
  /* @__PURE__ */ jsxs("div", { className: "inline-flex items-center gap-2", children: [
22850
22911
  /* @__PURE__ */ jsx(
22851
22912
  Button,
@@ -22865,16 +22926,46 @@ var FlowBuilder = ({ readOnly = false }) => {
22865
22926
  )
22866
22927
  }
22867
22928
  ),
22868
- /* @__PURE__ */ jsx(
22929
+ isEditingName ? /* @__PURE__ */ jsx(
22869
22930
  Input,
22870
22931
  {
22871
- className: "text-card-foreground font-bold",
22932
+ autoFocus: true,
22933
+ className: "text-card-foreground font-bold w-48",
22872
22934
  type: "email",
22873
22935
  placeholder: "Workflow Name",
22874
22936
  value: workflowName || name,
22875
- onChange: handleNameChange
22937
+ onChange: handleNameChange,
22938
+ onBlur: () => setIsEditingName(false),
22939
+ onKeyDown: (e) => {
22940
+ if (e.key === "Enter") setIsEditingName(false);
22941
+ }
22876
22942
  }
22877
- ),
22943
+ ) : /* @__PURE__ */ jsxs("div", { className: "group flex items-center gap-1.5", children: [
22944
+ /* @__PURE__ */ jsx(
22945
+ "div",
22946
+ {
22947
+ title: workflowName || name || "Untitled Workflow",
22948
+ className: "w-48 overflow-x-auto whitespace-nowrap text-card-foreground font-bold [scrollbar-width:thin]",
22949
+ children: workflowName || name || "Untitled Workflow"
22950
+ }
22951
+ ),
22952
+ /* @__PURE__ */ jsx(
22953
+ Button,
22954
+ {
22955
+ variant: "ghost",
22956
+ size: "icon",
22957
+ className: "size-6 shrink-0 opacity-60 group-hover:opacity-100",
22958
+ onClick: () => setIsEditingName(true),
22959
+ children: /* @__PURE__ */ jsx(
22960
+ Icon,
22961
+ {
22962
+ icon: "mynaui:pencil",
22963
+ className: "size-3.5 text-card-foreground"
22964
+ }
22965
+ )
22966
+ }
22967
+ )
22968
+ ] }),
22878
22969
  /* @__PURE__ */ jsx(
22879
22970
  Input,
22880
22971
  {
@@ -22886,25 +22977,45 @@ var FlowBuilder = ({ readOnly = false }) => {
22886
22977
  }
22887
22978
  )
22888
22979
  ] }),
22889
- name !== "" && /* @__PURE__ */ jsxs("div", { className: "inline-flex items-center gap-2", children: [
22890
- /* @__PURE__ */ jsx(VersionHistoryPanel, {}),
22891
- /* @__PURE__ */ jsx(
22892
- Button,
22893
- {
22894
- onClick: () => {
22895
- if (!id) return;
22896
- navigate(`../runs?workflowKey=${encodeURIComponent(id)}`);
22897
- },
22898
- disabled: !id,
22899
- variant: "outline",
22900
- size: "sm",
22901
- className: "flex gap-4",
22902
- children: "View Runs"
22903
- }
22904
- ),
22905
- /* @__PURE__ */ jsx(SaveFlowButton, {}),
22906
- /* @__PURE__ */ jsx(ActivateWorkflowButton, {}),
22907
- /* @__PURE__ */ jsx(ExecuteWorkflowButton, {})
22980
+ name !== "" && /* @__PURE__ */ jsxs(Fragment, { children: [
22981
+ /* @__PURE__ */ jsxs("div", { className: "hidden lg:inline-flex items-center gap-2", children: [
22982
+ /* @__PURE__ */ jsx(VersionHistoryPanel, {}),
22983
+ /* @__PURE__ */ jsx(SaveFlowButton, {}),
22984
+ /* @__PURE__ */ jsx(ActivateWorkflowButton, {}),
22985
+ /* @__PURE__ */ jsx(RunWithViewRuns, { onViewRuns: handleViewRuns, canViewRuns: !!id })
22986
+ ] }),
22987
+ /* @__PURE__ */ jsx("div", { className: "lg:hidden", children: /* @__PURE__ */ jsxs(DropdownMenu, { children: [
22988
+ /* @__PURE__ */ jsx(DropdownMenuTrigger, { asChild: true, children: /* @__PURE__ */ jsx(
22989
+ Button,
22990
+ {
22991
+ variant: "ghost",
22992
+ size: "icon",
22993
+ className: "text-card-foreground",
22994
+ children: /* @__PURE__ */ jsx(Icon, { icon: "mynaui:dots-vertical", className: "size-5" })
22995
+ }
22996
+ ) }),
22997
+ /* @__PURE__ */ jsxs(
22998
+ DropdownMenuContent,
22999
+ {
23000
+ align: "end",
23001
+ className: "flex flex-col gap-1.5 p-2 w-56",
23002
+ children: [
23003
+ /* @__PURE__ */ jsx(VersionHistoryPanel, { className: "w-full justify-start" }),
23004
+ /* @__PURE__ */ jsx(SaveFlowButton, { className: "w-full justify-start" }),
23005
+ /* @__PURE__ */ jsx(ActivateWorkflowButton, { className: "w-full justify-start" }),
23006
+ /* @__PURE__ */ jsx(
23007
+ RunWithViewRuns,
23008
+ {
23009
+ onViewRuns: handleViewRuns,
23010
+ canViewRuns: !!id,
23011
+ className: "w-full",
23012
+ runButtonClassName: "flex-1 justify-start rounded-l-lg"
23013
+ }
23014
+ )
23015
+ ]
23016
+ }
23017
+ )
23018
+ ] }) })
22908
23019
  ] })
22909
23020
  ] }),
22910
23021
  /* @__PURE__ */ jsxs(
@@ -22922,7 +23033,7 @@ var FlowBuilder = ({ readOnly = false }) => {
22922
23033
  el._ro?.disconnect();
22923
23034
  el._ro = ro;
22924
23035
  },
22925
- className: "relative w-full flex-1",
23036
+ className: "relative w-full flex-1 rounded-b-xl border border-card-foreground/10 border-t-0 overflow-hidden ml-4 mb-1",
22926
23037
  children: [
22927
23038
  /* @__PURE__ */ jsx(CanvasControls, {}),
22928
23039
  /* @__PURE__ */ jsx(
@@ -23223,11 +23334,11 @@ function WorkflowBuilder() {
23223
23334
  )
23224
23335
  ] })
23225
23336
  ] }) }),
23226
- children: /* @__PURE__ */ jsx(ThemeProvider, { children: /* @__PURE__ */ jsx(WorkflowItem, {}) })
23337
+ children: /* @__PURE__ */ jsx(WorkflowItem, {})
23227
23338
  }
23228
23339
  );
23229
23340
  }
23230
23341
 
23231
- export { Card2 as Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, ConfigSchemaForm, ConnectionFormDialog, ConnectionSelector, FlowBuilderPage, FluidGridsProvider, ProviderPicker, TemplateCard, ThemeProvider, WorkflowBuilder, getProviderForm, listCustomBlocks, refetchStoreNodes, registerCustomBlock, resolveUiSpec, stripSubmitActions, useConnection, useConnectionDialog, useConnections, useConnectionsByProvider, useCreateConnection, useFluidGridsContext, useImportWorkflowTemplate, useInitiateOAuth, useNodeExecution, useProviderByKey, useProviderCatalog, useProviders, useWorkflowTemplates };
23232
- //# sourceMappingURL=chunk-V67QXGBK.js.map
23233
- //# sourceMappingURL=chunk-V67QXGBK.js.map
23342
+ export { Card2 as Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, ConfigSchemaForm, ConnectionFormDialog, ConnectionSelector, FlowBuilderPage, FluidGridsProvider, ProviderPicker, TemplateCard, WorkflowBuilder, getProviderForm, listCustomBlocks, refetchStoreNodes, registerCustomBlock, resolveUiSpec, stripSubmitActions, useConnection, useConnectionDialog, useConnections, useConnectionsByProvider, useCreateConnection, useFluidGridsContext, useImportWorkflowTemplate, useInitiateOAuth, useNodeExecution, useProviderByKey, useProviderCatalog, useProviders, useWorkflowTemplates };
23343
+ //# sourceMappingURL=chunk-LA7ELWEY.js.map
23344
+ //# sourceMappingURL=chunk-LA7ELWEY.js.map