@burdenoff/fluidgrids-fe-sdk 2026.710.2 → 2026.715.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-JQHYUKTA.js';
1
+ export { WorkflowBuilder } from './chunk-LRHIL5LS.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-5TQRBOND.js.map
13
- //# sourceMappingURL=WorkflowBuilder-5TQRBOND.js.map
12
+ //# sourceMappingURL=WorkflowBuilder-IQKOCRDB.js.map
13
+ //# sourceMappingURL=WorkflowBuilder-IQKOCRDB.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":[],"names":[],"mappings":"","file":"WorkflowBuilder-5TQRBOND.js"}
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"WorkflowBuilder-IQKOCRDB.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(
@@ -9757,7 +9754,10 @@ function SidebarPanelWrapper({
9757
9754
  return /* @__PURE__ */ jsx(
9758
9755
  "div",
9759
9756
  {
9760
- 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
+ ),
9761
9761
  ...props,
9762
9762
  children
9763
9763
  }
@@ -10929,43 +10929,50 @@ var STORE_CATEGORIES = [
10929
10929
  key: "ai",
10930
10930
  label: "AI & Automation",
10931
10931
  description: "AI models, agents, and intelligent automation",
10932
- icon: "mynaui:brain"
10932
+ icon: "mynaui:sparkles",
10933
+ color: "--color-chart-1"
10933
10934
  },
10934
10935
  {
10935
10936
  key: "integration",
10936
10937
  label: "Action in an App",
10937
10938
  description: "Connect with apps like Slack, Notion, Google Sheets",
10938
- icon: "mynaui:puzzle"
10939
+ icon: "mynaui:puzzle",
10940
+ color: "--color-chart-2"
10939
10941
  },
10940
10942
  {
10941
10943
  key: "data",
10942
10944
  label: "Data & Transform",
10943
10945
  description: "Manipulate, filter, or convert data",
10944
- icon: "mynaui:database"
10946
+ icon: "mynaui:database",
10947
+ color: "--color-chart-3"
10945
10948
  },
10946
10949
  {
10947
10950
  key: "flow",
10948
10951
  label: "Flow & Logic",
10949
10952
  description: "Branch, merge, or loop the flow",
10950
- icon: "mynaui:git-branch"
10953
+ icon: "mynaui:git-branch",
10954
+ color: "--color-chart-4"
10951
10955
  },
10952
10956
  {
10953
10957
  key: "core",
10954
10958
  label: "Core",
10955
10959
  description: "HTTP requests, code, webhooks, and more",
10956
- icon: "mynaui:cog"
10960
+ icon: "mynaui:cog",
10961
+ color: "--color-chart-5"
10957
10962
  },
10958
10963
  {
10959
10964
  key: "communication",
10960
10965
  label: "Communication",
10961
10966
  description: "Email, messaging, and notifications",
10962
- icon: "mynaui:message-dots"
10967
+ icon: "mynaui:message-dots",
10968
+ color: "--color-chart-6"
10963
10969
  },
10964
10970
  {
10965
10971
  key: "trigger",
10966
10972
  label: "Triggers",
10967
10973
  description: "Start your workflow automatically",
10968
- icon: "mynaui:bolt"
10974
+ icon: "mynaui:zap",
10975
+ color: "--color-chart-7"
10969
10976
  }
10970
10977
  ];
10971
10978
  function useStoreNodes(options = {}) {
@@ -12147,9 +12154,23 @@ function StoreCategoryList({
12147
12154
  "button",
12148
12155
  {
12149
12156
  onClick: () => onSelectCategory(cat),
12150
- 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",
12151
12158
  children: [
12152
- /* @__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
+ ),
12153
12174
  /* @__PURE__ */ jsxs("div", { className: "flex-1 min-w-0", children: [
12154
12175
  /* @__PURE__ */ jsx("p", { className: "text-sm font-medium text-foreground group-hover:text-primary transition-colors", children: cat.label }),
12155
12176
  /* @__PURE__ */ jsx("p", { className: "text-xs text-muted-foreground truncate mt-0.5", children: cat.description })
@@ -12158,7 +12179,7 @@ function StoreCategoryList({
12158
12179
  Icon,
12159
12180
  {
12160
12181
  icon: "mynaui:chevron-right",
12161
- 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"
12162
12183
  }
12163
12184
  )
12164
12185
  ]
@@ -12423,7 +12444,7 @@ function StoreNodeOperations({ nodeType }) {
12423
12444
  /* @__PURE__ */ jsx("div", { className: "size-7 shrink-0 rounded-md bg-muted flex items-center justify-center", children: /* @__PURE__ */ jsx(
12424
12445
  Icon,
12425
12446
  {
12426
- icon: isTrigger ? "solar:play-bold" : "mynaui:bolt",
12447
+ icon: isTrigger ? "solar:play-bold" : "mynaui:zap",
12427
12448
  className: "size-3.5 text-primary"
12428
12449
  }
12429
12450
  ) }),
@@ -13573,7 +13594,7 @@ function DesktopSidebarFragment({
13573
13594
  },
13574
13595
  [configTemplate, configContent, configNodeCheck, performImport]
13575
13596
  );
13576
- 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: [
13577
13598
  activePanel !== "none" && /* @__PURE__ */ jsx("div", { className: "min-w-xs grow bg-card", children: /* @__PURE__ */ jsx(SwitchSidebarPanel, { active: activePanel }) }),
13578
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: [
13579
13600
  /* @__PURE__ */ jsx(
@@ -13851,7 +13872,7 @@ function useNodeAutoAdjust() {
13851
13872
  [getNodes, updateNode]
13852
13873
  );
13853
13874
  }
13854
- function ThemeProvider2({
13875
+ function ThemeProvider({
13855
13876
  children,
13856
13877
  defaultTheme = "system",
13857
13878
  storageKey = "vite-ui-theme"
@@ -17631,7 +17652,7 @@ function App({
17631
17652
  };
17632
17653
  const currentSourceSchema = propSourceSchema || getSchemaForNode(selectedSourceNode, true);
17633
17654
  const currentTargetSchema = propTargetSchema || getSchemaForNode(selectedTargetNode, false);
17634
- 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: [
17635
17656
  /* @__PURE__ */ jsx("div", { className: "min-h-screen bg-background", children: /* @__PURE__ */ jsxs("main", { className: "container py-6", children: [
17636
17657
  currentSourceSchema && currentTargetSchema && selectedSourceNode && selectedSourceOperation && selectedTargetNode && selectedTargetOperation && /* @__PURE__ */ jsxs("div", { className: "mt-8 p-4 border rounded-lg", children: [
17637
17658
  /* @__PURE__ */ jsx("h2", { className: "text-lg font-medium mb-4", children: "Data Mapping" }),
@@ -20411,7 +20432,7 @@ function useFlowValidator(onValidate) {
20411
20432
  }, [getNodes, getEdges, onValidate]);
20412
20433
  return [isValidating, validate];
20413
20434
  }
20414
- var SaveFlowButton = () => {
20435
+ var SaveFlowButton = ({ className }) => {
20415
20436
  const { saveToBackend, isSaving } = useSaveWorkflow();
20416
20437
  const [isValidating, validateFlow] = useFlowValidator(async (isValid) => {
20417
20438
  if (isValid) {
@@ -20429,10 +20450,10 @@ var SaveFlowButton = () => {
20429
20450
  disabled: isValidating || isSaving,
20430
20451
  variant: "outline",
20431
20452
  size: "sm",
20432
- className: "flex gap-4",
20453
+ className: cn("flex gap-4", className),
20433
20454
  children: [
20434
20455
  /* @__PURE__ */ jsx(Icon, { icon: "fluent:save-28-filled" }),
20435
- isSaving ? "Saving..." : "Save Flow"
20456
+ isSaving ? "Saving..." : "Save"
20436
20457
  ]
20437
20458
  }
20438
20459
  ) });
@@ -20566,7 +20587,9 @@ function TriggerDataDialog({
20566
20587
  ] })
20567
20588
  ] }) });
20568
20589
  }
20569
- var ExecuteWorkflowButton = () => {
20590
+ var ExecuteWorkflowButton = ({
20591
+ className
20592
+ }) => {
20570
20593
  const { executeFullWorkflow } = useNodeExecution();
20571
20594
  const [dialogOpen, setDialogOpen] = useState(false);
20572
20595
  const [isExecuting] = useFlowStore(
@@ -20611,10 +20634,13 @@ var ExecuteWorkflowButton = () => {
20611
20634
  disabled: isValidating || isExecuting,
20612
20635
  variant: "default",
20613
20636
  size: "sm",
20614
- 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
+ ),
20615
20641
  children: [
20616
20642
  /* @__PURE__ */ jsx(Icon, { icon: "mdi:play", className: "size-4" }),
20617
- isExecuting ? "Running..." : isValidating ? "Validating..." : "Execute"
20643
+ isExecuting ? "Running..." : isValidating ? "Validating..." : "Run"
20618
20644
  ]
20619
20645
  }
20620
20646
  ),
@@ -22512,7 +22538,7 @@ var STATUS_STYLES = {
22512
22538
  ARCHIVED: { label: "Archived", variant: "outline" },
22513
22539
  DEPRECATED: { label: "Deprecated", variant: "destructive" }
22514
22540
  };
22515
- function VersionHistoryPanel() {
22541
+ function VersionHistoryPanel({ className }) {
22516
22542
  const params = useParams();
22517
22543
  const navigate = useNavigate();
22518
22544
  const workflowKey = params?.id ?? "";
@@ -22552,7 +22578,7 @@ function VersionHistoryPanel() {
22552
22578
  {
22553
22579
  variant: "outline",
22554
22580
  size: "sm",
22555
- className: "flex gap-1",
22581
+ className: cn("flex gap-1", className),
22556
22582
  onClick: () => refetch(),
22557
22583
  children: [
22558
22584
  /* @__PURE__ */ jsx(History, { className: "size-4" }),
@@ -22640,7 +22666,9 @@ function VersionHistoryPanel() {
22640
22666
  ] })
22641
22667
  ] });
22642
22668
  }
22643
- var ActivateWorkflowButton = () => {
22669
+ var ActivateWorkflowButton = ({
22670
+ className
22671
+ }) => {
22644
22672
  const [isProcessing, setIsProcessing] = useState(false);
22645
22673
  const [dbId, status, setWorkflow] = useFlowStore(
22646
22674
  useShallow((s) => [
@@ -22694,7 +22722,11 @@ var ActivateWorkflowButton = () => {
22694
22722
  disabled: isProcessing || !dbId,
22695
22723
  variant: isDraft ? "default" : "outline",
22696
22724
  size: "sm",
22697
- 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
+ ),
22698
22730
  children: [
22699
22731
  /* @__PURE__ */ jsx(
22700
22732
  Icon,
@@ -22708,6 +22740,34 @@ var ActivateWorkflowButton = () => {
22708
22740
  }
22709
22741
  );
22710
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
+ }
22711
22771
  var edgeTypes2 = {
22712
22772
  deletable: CustomDeletableEdge
22713
22773
  };
@@ -22768,6 +22828,7 @@ var FlowBuilder = ({ readOnly = false }) => {
22768
22828
  }, [nodeTypesVersion, nodes]);
22769
22829
  const [workflowName, setWorkflowName] = useState(name);
22770
22830
  const [workflowAlias, setWorkflowAlias] = useState(alias || "");
22831
+ const [isEditingName, setIsEditingName] = useState(false);
22771
22832
  useEffect(() => {
22772
22833
  setWorkflowName(name);
22773
22834
  }, [name]);
@@ -22818,6 +22879,10 @@ var FlowBuilder = ({ readOnly = false }) => {
22818
22879
  useEffect(() => {
22819
22880
  handleAutoAdjustNodeAfterNodeMeasuredRef.current = handleAutoAdjustNodeAfterNodeMeasured;
22820
22881
  }, [handleAutoAdjustNodeAfterNodeMeasured]);
22882
+ const handleViewRuns = useCallback(() => {
22883
+ if (!id) return;
22884
+ navigate(`../runs?workflowKey=${encodeURIComponent(id)}`);
22885
+ }, [id, navigate]);
22821
22886
  const handleNodesChange = useCallback(
22822
22887
  (changes) => {
22823
22888
  changes.forEach((change) => {
@@ -22841,7 +22906,7 @@ var FlowBuilder = ({ readOnly = false }) => {
22841
22906
  ]
22842
22907
  );
22843
22908
  return /* @__PURE__ */ jsxs("div", { className: "flex flex-col h-full w-full overflow-hidden", children: [
22844
- !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: [
22845
22910
  /* @__PURE__ */ jsxs("div", { className: "inline-flex items-center gap-2", children: [
22846
22911
  /* @__PURE__ */ jsx(
22847
22912
  Button,
@@ -22861,16 +22926,46 @@ var FlowBuilder = ({ readOnly = false }) => {
22861
22926
  )
22862
22927
  }
22863
22928
  ),
22864
- /* @__PURE__ */ jsx(
22929
+ isEditingName ? /* @__PURE__ */ jsx(
22865
22930
  Input,
22866
22931
  {
22867
- className: "text-card-foreground font-bold",
22932
+ autoFocus: true,
22933
+ className: "text-card-foreground font-bold w-48",
22868
22934
  type: "email",
22869
22935
  placeholder: "Workflow Name",
22870
22936
  value: workflowName || name,
22871
- onChange: handleNameChange
22937
+ onChange: handleNameChange,
22938
+ onBlur: () => setIsEditingName(false),
22939
+ onKeyDown: (e) => {
22940
+ if (e.key === "Enter") setIsEditingName(false);
22941
+ }
22872
22942
  }
22873
- ),
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
+ ] }),
22874
22969
  /* @__PURE__ */ jsx(
22875
22970
  Input,
22876
22971
  {
@@ -22882,25 +22977,45 @@ var FlowBuilder = ({ readOnly = false }) => {
22882
22977
  }
22883
22978
  )
22884
22979
  ] }),
22885
- name !== "" && /* @__PURE__ */ jsxs("div", { className: "inline-flex items-center gap-2", children: [
22886
- /* @__PURE__ */ jsx(VersionHistoryPanel, {}),
22887
- /* @__PURE__ */ jsx(
22888
- Button,
22889
- {
22890
- onClick: () => {
22891
- if (!id) return;
22892
- navigate(`../runs?workflowKey=${encodeURIComponent(id)}`);
22893
- },
22894
- disabled: !id,
22895
- variant: "outline",
22896
- size: "sm",
22897
- className: "flex gap-4",
22898
- children: "View Runs"
22899
- }
22900
- ),
22901
- /* @__PURE__ */ jsx(SaveFlowButton, {}),
22902
- /* @__PURE__ */ jsx(ActivateWorkflowButton, {}),
22903
- /* @__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
+ ] }) })
22904
23019
  ] })
22905
23020
  ] }),
22906
23021
  /* @__PURE__ */ jsxs(
@@ -22918,7 +23033,7 @@ var FlowBuilder = ({ readOnly = false }) => {
22918
23033
  el._ro?.disconnect();
22919
23034
  el._ro = ro;
22920
23035
  },
22921
- 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",
22922
23037
  children: [
22923
23038
  /* @__PURE__ */ jsx(CanvasControls, {}),
22924
23039
  /* @__PURE__ */ jsx(
@@ -23095,6 +23210,26 @@ function WorkflowItem({
23095
23210
  try {
23096
23211
  resetWorkflow();
23097
23212
  if (!version) {
23213
+ const fromSharedId = typeof window !== "undefined" ? new URLSearchParams(window.location.search).get("fromShared") : null;
23214
+ const pendingManifestJson = fromSharedId && typeof sessionStorage !== "undefined" ? sessionStorage.getItem("pendingSharedWorkflow") : null;
23215
+ if (fromSharedId && pendingManifestJson) {
23216
+ try {
23217
+ sessionStorage.removeItem("pendingSharedWorkflow");
23218
+ const manifest = JSON.parse(pendingManifestJson);
23219
+ if (mounted) {
23220
+ setWorkflow({
23221
+ ...newWorkflow,
23222
+ name: manifest.name ?? "Copied Workflow",
23223
+ nodes: manifest.nodes ?? [],
23224
+ edges: manifest.edges ?? []
23225
+ });
23226
+ setIsLoading(false);
23227
+ }
23228
+ return;
23229
+ } catch {
23230
+ sessionStorage.removeItem("pendingSharedWorkflow");
23231
+ }
23232
+ }
23098
23233
  if (mounted) {
23099
23234
  setWorkflow(newWorkflow);
23100
23235
  setIsLoading(false);
@@ -23219,11 +23354,11 @@ function WorkflowBuilder() {
23219
23354
  )
23220
23355
  ] })
23221
23356
  ] }) }),
23222
- children: /* @__PURE__ */ jsx(ThemeProvider, { children: /* @__PURE__ */ jsx(WorkflowItem, {}) })
23357
+ children: /* @__PURE__ */ jsx(WorkflowItem, {})
23223
23358
  }
23224
23359
  );
23225
23360
  }
23226
23361
 
23227
- 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 };
23228
- //# sourceMappingURL=chunk-JQHYUKTA.js.map
23229
- //# sourceMappingURL=chunk-JQHYUKTA.js.map
23362
+ 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 };
23363
+ //# sourceMappingURL=chunk-LRHIL5LS.js.map
23364
+ //# sourceMappingURL=chunk-LRHIL5LS.js.map