@burdenoff/fluidgrids-fe-sdk 2026.1022.2 → 2026.1022.4

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.
Files changed (30) hide show
  1. package/dist/{ExecutionDetailPage-NFZVCUCA.js → ExecutionDetailPage-GXP7V43B.js} +2 -2
  2. package/dist/{ExecutionsListPage-KSOHJU4T.js → ExecutionsListPage-7AZRFJJT.js} +2 -2
  3. package/dist/{MissingNodesInstallModal-ODVBW4X4.js → MissingNodesInstallModal-OSAJLIBE.js} +9 -9
  4. package/dist/{TemplateConfigurationModal-HUHXIL3K.js → TemplateConfigurationModal-SILENYXX.js} +9 -9
  5. package/dist/{TemplateDetailPanel-RZDJEXGG.js → TemplateDetailPanel-PP42MUM2.js} +6 -6
  6. package/dist/{WorkflowBuilder-FR3TUJ33.js → WorkflowBuilder-36X3QZTC.js} +5 -5
  7. package/dist/{WorkflowsList-BAYEP7TU.js → WorkflowsList-O3DFQM6S.js} +2 -2
  8. package/dist/{chunk-JG65547T.js → chunk-3FI4DCIY.js} +24 -24
  9. package/dist/{chunk-YPF7LVUZ.js → chunk-5QUAOGY7.js} +1 -1
  10. package/dist/{chunk-TWIORNPU.js → chunk-6CVZQJKW.js} +20 -13
  11. package/dist/{chunk-GDAFKRQO.js → chunk-BQXVT32O.js} +4 -4
  12. package/dist/{chunk-3XEIMQNT.js → chunk-HIXQIM22.js} +77 -77
  13. package/dist/{chunk-EU5ANGO4.js → chunk-M7FOQBCR.js} +3 -3
  14. package/dist/{chunk-6LMWVUD7.js → chunk-P3R3RFAC.js} +4 -4
  15. package/dist/{chunk-PBIN6ERJ.js → chunk-PVDKSM6Q.js} +7 -7
  16. package/dist/{chunk-FJHERSHE.js → chunk-QP62LB3V.js} +2 -2
  17. package/dist/{chunk-2HUSQTUK.js → chunk-T3UCFY7J.js} +189 -204
  18. package/dist/{chunk-CU23L6GP.js → chunk-TVTOVRGV.js} +7 -7
  19. package/dist/{chunk-EGYJKHAL.js → chunk-VI2RFS65.js} +4 -4
  20. package/dist/{chunk-7LSGGJ7D.js → chunk-YXMFRQYV.js} +1 -1
  21. package/dist/executions.js +3 -3
  22. package/dist/index.d.ts +14 -0
  23. package/dist/index.js +60 -40
  24. package/dist/nodes.js +1 -1
  25. package/dist/settings.js +2 -2
  26. package/dist/styles.css +1 -1
  27. package/dist/templates.js +5 -5
  28. package/dist/workflow-builder.js +6 -6
  29. package/dist/workflows-list.js +2 -2
  30. package/package.json +1 -1
@@ -1,7 +1,7 @@
1
1
  import { deepClone, applyTemplateInputs } from './chunk-GEMNVFPK.js';
2
2
  import { Input as Input$1 } from './chunk-IEVSFCFS.js';
3
- import { Dialog as Dialog$1, DialogContent as DialogContent$1, DialogHeader as DialogHeader$1, DialogTitle as DialogTitle$1, DialogDescription as DialogDescription$1, DialogFooter } from './chunk-7LSGGJ7D.js';
4
- import { Badge as Badge$1, Button as Button$1 } from './chunk-GDAFKRQO.js';
3
+ import { Dialog as Dialog$1, DialogContent as DialogContent$1, DialogHeader as DialogHeader$1, DialogTitle as DialogTitle$1, DialogDescription as DialogDescription$1, DialogFooter } from './chunk-YXMFRQYV.js';
4
+ import { Badge as Badge$1, Button as Button$1 } from './chunk-BQXVT32O.js';
5
5
  import { QuotaExhaustedDialog } from './chunk-SYVLFHWV.js';
6
6
  import { getGlobalStoreClient, createGlobalStoreClient, setGlobalStoreClient, resetGlobalStoreClient } from './chunk-PXIFUMLA.js';
7
7
  import { GetMyNodeInstallationsDocument, BrowseWorkflowTemplatesDocument, InstallWorkflowNodeDocument, InstallPurchasedNodeDocument, BrowseWorkflowNodesDocument, UninstallWorkflowNodeDocument, CreateStoreOrderDocument, GetNodeInstallableVersionsDocument } from './chunk-WBH2XEWO.js';
@@ -10,7 +10,7 @@ import { cn as cn$1 } from './chunk-JL7CASN5.js';
10
10
  import { useWorkflowVersions, useRestoreWorkflowVersion, useActivateWorkflow, useDeleteWorkflow, useLazyWorkflowDefinition, useDeactivateWorkflow } from './chunk-HP3A6BPK.js';
11
11
  import { config, getFluidGridsConfig, validateTrustedOrigin, resetFluidGridsExecutionState, setFluidGridsConfig, resetFluidGridsConfig } from './chunk-UZG3ZIQM.js';
12
12
  import { fetchAllNodeEndpointConfigs } from './chunk-5TW5JP5R.js';
13
- import { useFlowStore, isNodeTrigger, useIsValidConnection, isTriggerOperation } from './chunk-EGYJKHAL.js';
13
+ import { useFlowStore, isNodeTrigger, useIsValidConnection, isTriggerOperation } from './chunk-VI2RFS65.js';
14
14
  import { NodeManifestDocument, UpdateWorkflowDefinitionDocument, CreateWorkflowDefinitionDocument, CreateWorkflowVersionDocument, ExecuteStepDocument, TriggerWorkflowDocument, RunFromNodeDocument, ExecutionDetailDocument, WorkflowRunDocument, FluidgridsEntityTagsDocument, AvailableFluidgridsTagsDocument, SearchFluidgridsTagsDocument, TagFluidgridsEntityDocument, UntagFluidgridsEntityDocument, ReplaceFluidgridsEntityTagsDocument, CreateFluidgridsTagDocument, WorkspaceRunsQuotaDocument, NodeSchemaIntrospectionDocument, useWorkflowPinnedDataQuery, usePinNodeDataMutation, useUnpinNodeDataMutation, useRunFromNodeEligibilityQuery, EventRegistrationsDocument, WebhookTestListenerDocument, StopWebhookTestListenerDocument, ListenForWebhookTestEventDocument, NodeUsageStatusDocument, RemoveNodeFromWorkflowsDocument } from './chunk-SAZVBFMO.js';
15
15
  import { throwIfResultError, isQuotaExhaustedFailure, describeOperationError, openRunQuotaUpgradePrompt, RUNS_QUOTA_NAME, BILLING_PLANS_PATH } from './chunk-4UAWCWS7.js';
16
16
  import { useTr, FluidGridsTranslationProvider, ENGLISH_FALLBACK_TRANSLATOR } from './chunk-UULVIT25.js';
@@ -30,6 +30,7 @@ import { Handle, Position, getBezierPath, MarkerType, useReactFlow, NodeResizer,
30
30
  import { nanoid } from 'nanoid';
31
31
  import ReactMarkdown from 'react-markdown';
32
32
  import { toast } from 'sonner';
33
+ import { nodeCategoryColor, edgeColor, chartSeriesColor, chartSeriesIndex } from '@burdenoff/fe-libs/shared/utils';
33
34
  import { useParams, useNavigate, Link } from 'react-router';
34
35
  import { useShallow, shallow } from 'zustand/shallow';
35
36
  import { InfoCircledIcon } from '@radix-ui/react-icons';
@@ -1267,14 +1268,20 @@ var AdaptiveCardRenderer = forwardRef(function AdaptiveCardRenderer2({ cardData,
1267
1268
  },
1268
1269
  separator: {
1269
1270
  lineThickness: 1,
1270
- lineColor: "#e5e7eb"
1271
+ lineColor: "var(--color-border-default)"
1271
1272
  },
1272
1273
  containerStyles: {
1273
1274
  default: {
1274
1275
  backgroundColor: "transparent",
1275
1276
  foregroundColors: {
1276
- default: { default: "#374151", subtle: "#6b7280" },
1277
- accent: { default: "#3b82f6", subtle: "#60a5fa" }
1277
+ default: {
1278
+ default: "var(--color-text-primary)",
1279
+ subtle: "var(--color-text-muted)"
1280
+ },
1281
+ accent: {
1282
+ default: "var(--color-text-link)",
1283
+ subtle: "var(--color-text-linkHover)"
1284
+ }
1278
1285
  }
1279
1286
  }
1280
1287
  }
@@ -2749,13 +2756,13 @@ var NODE_TYPE_DRAG_DATA_FORMAT = "application/flow-builder.node-type";
2749
2756
  var NODE_OPERATION_DRAG_DATA_FORMAT = "application/flow-builder.node-operation";
2750
2757
  var STICKY_NOTE_TYPE = "sticky-note";
2751
2758
  var STICKY_COLORS = {
2752
- yellow: "#F2C94C",
2753
- orange: "#EB8934",
2754
- blue: "#3B82F6",
2755
- green: "#10B981",
2756
- red: "#EF4444",
2757
- purple: "#8B5CF6",
2758
- gray: "#9CA3AF"
2759
+ yellow: "var(--color-chart-4)",
2760
+ orange: "var(--color-status-warning-bg)",
2761
+ blue: "var(--color-chart-1)",
2762
+ green: "var(--color-chart-2)",
2763
+ red: "var(--color-chart-5)",
2764
+ purple: "var(--color-chart-3)",
2765
+ gray: "var(--color-chart-axis)"
2759
2766
  };
2760
2767
  var DEFAULT_STICKY_COLOR = "yellow";
2761
2768
  var STICKY_DEFAULT_SIZE = { width: 260, height: 170 };
@@ -2889,7 +2896,7 @@ function StickyNoteNodeComponent({
2889
2896
  ),
2890
2897
  style: { top: -15 },
2891
2898
  onDoubleClick: (e) => e.stopPropagation(),
2892
- children: showPalette ? /* @__PURE__ */ jsx("div", { className: "flex items-center gap-1 px-1 py-0.5", children: Object.entries(STICKY_COLORS).map(([name, hex]) => /* @__PURE__ */ jsx(
2899
+ children: showPalette ? /* @__PURE__ */ jsx("div", { className: "flex items-center gap-1 px-1 py-0.5", children: Object.entries(STICKY_COLORS).map(([name, color]) => /* @__PURE__ */ jsx(
2893
2900
  "button",
2894
2901
  {
2895
2902
  type: "button",
@@ -2903,7 +2910,7 @@ function StickyNoteNodeComponent({
2903
2910
  "nodrag size-4 rounded-full border transition-transform hover:scale-125",
2904
2911
  name === colorKey ? "border-foreground" : "border-transparent"
2905
2912
  ),
2906
- style: { backgroundColor: hex }
2913
+ style: { backgroundColor: color }
2907
2914
  },
2908
2915
  name
2909
2916
  )) }) : /* @__PURE__ */ jsxs(Fragment, { children: [
@@ -3124,44 +3131,26 @@ function NodeTypeIcon({
3124
3131
  }
3125
3132
  return /* @__PURE__ */ jsx(Icon, { icon: icon || fallbackIcon, className });
3126
3133
  }
3127
- var BRAND_ACCENTS = [
3128
- [/gmail|google/, "#ea4335"],
3129
- [/slack/, "#611f69"],
3130
- [/github/, "#334155"],
3131
- [/gitlab/, "#fc6d26"],
3132
- [/stripe/, "#635bff"],
3133
- [/discord/, "#5865f2"],
3134
- [/notion/, "#111827"],
3135
- [/telegram/, "#2aabee"],
3136
- [/whatsapp/, "#25d366"],
3137
- [/openai/, "#10a37f"],
3138
- [/anthropic|claude/, "#d97757"],
3139
- [/twilio/, "#f22f46"],
3140
- [/sheet|excel/, "#21a366"],
3141
- [/http|api|webhook|rest/, "#6366f1"],
3142
- [/db|sql|postgres|mysql|mongo/, "#0ea5e9"]
3143
- ];
3144
- var HASH_PALETTE = [
3145
- "#6366f1",
3146
- "#0ea5e9",
3147
- "#10b981",
3148
- "#f59e0b",
3149
- "#ef4444",
3150
- "#a855f7",
3151
- "#ec4899",
3152
- "#14b8a6",
3153
- "#f97316",
3154
- "#8b5cf6"
3134
+ var PROVIDER_ACCENTS = [
3135
+ [/gmail|google/, "var(--color-chart-5)"],
3136
+ [/slack/, "var(--color-chart-3)"],
3137
+ [/github|gitlab/, nodeCategoryColor("utility")],
3138
+ [/stripe/, "var(--color-chart-12)"],
3139
+ [/discord|telegram/, "var(--color-chart-1)"],
3140
+ [/notion/, "var(--color-text-primary)"],
3141
+ [/whatsapp|sheet|excel/, "var(--color-chart-7)"],
3142
+ [/openai|anthropic|claude/, nodeCategoryColor("ai")],
3143
+ [/twilio/, "var(--color-chart-10)"],
3144
+ [/http|api|webhook|rest/, nodeCategoryColor("integration")],
3145
+ [/db|sql|postgres|mysql|mongo/, nodeCategoryColor("data")]
3155
3146
  ];
3156
3147
  function nodeAccent(key) {
3157
3148
  const k = (key || "").toLowerCase();
3158
- for (const [re, hex] of BRAND_ACCENTS) if (re.test(k)) return hex;
3159
- let h = 0;
3160
- for (let i = 0; i < k.length; i++) h = h * 31 + k.charCodeAt(i) >>> 0;
3161
- return HASH_PALETTE[h % HASH_PALETTE.length];
3149
+ for (const [re, color] of PROVIDER_ACCENTS) if (re.test(k)) return color;
3150
+ return chartSeriesColor(chartSeriesIndex(k));
3162
3151
  }
3163
- function tint(hex, pct = 14) {
3164
- return `color-mix(in srgb, ${hex} ${pct}%, transparent)`;
3152
+ function tint(color, pct = 14) {
3153
+ return `color-mix(in srgb, ${color} ${pct}%, transparent)`;
3165
3154
  }
3166
3155
  function InlineEditableLabel({
3167
3156
  value,
@@ -3236,7 +3225,7 @@ var NodeCard = React2.forwardRef(
3236
3225
  executionStatus = "idle",
3237
3226
  itemCount,
3238
3227
  isTrigger = false,
3239
- accent = "#3b82f6",
3228
+ accent = nodeCategoryColor("action"),
3240
3229
  onSettings,
3241
3230
  onExecute,
3242
3231
  onDelete,
@@ -3379,7 +3368,7 @@ var NodeCard = React2.forwardRef(
3379
3368
  borderTop: `3px solid ${accent}`,
3380
3369
  transition: "transform 0.15s ease, box-shadow 0.15s ease",
3381
3370
  transform: hovered ? "translateY(-2px)" : "none",
3382
- boxShadow: hovered ? "0 2px 4px rgba(16,24,40,0.06), 0 16px 34px -12px rgba(16,24,40,0.24)" : void 0
3371
+ boxShadow: hovered ? "var(--shadow-float)" : void 0
3383
3372
  },
3384
3373
  ...props,
3385
3374
  children: [
@@ -3570,7 +3559,7 @@ function CustomHandle({
3570
3559
  width: 14,
3571
3560
  height: 14,
3572
3561
  borderRadius: "50%",
3573
- background: "var(--card, #fff)",
3562
+ background: "var(--color-node-bg)",
3574
3563
  border: `2.5px solid ${accent}`,
3575
3564
  boxShadow: `0 0 0 3px color-mix(in srgb, ${accent} 12%, transparent)`
3576
3565
  } : void 0,
@@ -3615,8 +3604,8 @@ var TONE_COLORS = {
3615
3604
  success: "var(--color-status-success-text)",
3616
3605
  error: "var(--color-status-error-text)",
3617
3606
  warning: "var(--color-status-warning-text)",
3618
- info: "#3b82f6",
3619
- neutral: "var(--muted-foreground, #6b7280)"
3607
+ info: "var(--color-status-info-text)",
3608
+ neutral: "var(--color-text-muted)"
3620
3609
  };
3621
3610
  function HandlePlusStub({
3622
3611
  nodeId,
@@ -3685,8 +3674,8 @@ function HandlePlusStub({
3685
3674
  alignItems: "center",
3686
3675
  justifyContent: "center",
3687
3676
  border: `1.5px solid ${color}`,
3688
- background: isArmedHere ? color : "var(--card, #fff)",
3689
- color: isArmedHere ? "var(--card, #fff)" : color,
3677
+ background: isArmedHere ? color : "var(--color-node-bg)",
3678
+ color: isArmedHere ? "var(--color-node-bg)" : color,
3690
3679
  boxShadow: isArmedHere ? `0 0 0 3px color-mix(in srgb, ${color} 22%, transparent)` : `0 0 0 2px color-mix(in srgb, ${color} 10%, transparent)`,
3691
3680
  transition: "transform .12s ease, background .12s ease, color .12s ease"
3692
3681
  },
@@ -5224,7 +5213,7 @@ function SubNodeComponent({
5224
5213
  "button",
5225
5214
  {
5226
5215
  onClick: () => deleteNode(id),
5227
- className: "absolute -top-1 -right-1 w-4 h-4 rounded-full bg-[var(--color-status-error)] text-white text-[10px] flex items-center justify-center opacity-0 group-hover:opacity-100 hover:bg-[var(--color-status-error)] transition-opacity",
5216
+ className: "absolute -top-1 -right-1 w-4 h-4 rounded-full bg-action-danger-bg text-action-danger-text text-[10px] flex items-center justify-center opacity-0 group-hover:opacity-100 hover:bg-action-danger-bgHover transition-opacity",
5228
5217
  children: "\xD7"
5229
5218
  }
5230
5219
  ),
@@ -5436,7 +5425,9 @@ var getNodeMetadata = (value) => {
5436
5425
  const isLogicNode = /(^|[:/])(if|switch|merge|loop|filter|branch|router|condition|aggregate)/.test(
5437
5426
  (value?.type || "").toLowerCase()
5438
5427
  );
5439
- const roleAccent = isTrigger ? "#10b981" : isLogicNode ? "#f59e0b" : "#3b82f6";
5428
+ const roleAccent = nodeCategoryColor(
5429
+ isTrigger ? "trigger" : isLogicNode ? "logic" : "action"
5430
+ );
5440
5431
  const outputHandles = resolveOutputHandles(
5441
5432
  data
5442
5433
  );
@@ -6253,7 +6244,7 @@ function useNodeExecution() {
6253
6244
  return { success: false, error: "No result from trigger" };
6254
6245
  } catch (error) {
6255
6246
  console.error("[useNodeExecution] Error triggering workflow:", error);
6256
- openRunQuotaUpgradePrompt(error, tr);
6247
+ const quotaExhausted = openRunQuotaUpgradePrompt(error, tr);
6257
6248
  const errorMessage = describeOperationError(error);
6258
6249
  const errorRunId = nanoid$1();
6259
6250
  const errorLog = {
@@ -6273,7 +6264,7 @@ function useNodeExecution() {
6273
6264
  addLog(errorLog);
6274
6265
  setNodeStatus(triggerNode.id, "error");
6275
6266
  completeExecution();
6276
- return { success: false, error: errorMessage };
6267
+ return { success: false, error: errorMessage, quotaExhausted };
6277
6268
  }
6278
6269
  },
6279
6270
  [
@@ -6350,11 +6341,11 @@ function useNodeExecution() {
6350
6341
  return { success: false, error: "No result from runFromNode" };
6351
6342
  } catch (error) {
6352
6343
  console.error("[useNodeExecution] Error running from node:", error);
6353
- openRunQuotaUpgradePrompt(error, tr);
6344
+ const quotaExhausted = openRunQuotaUpgradePrompt(error, tr);
6354
6345
  const errorMessage = describeOperationError(error);
6355
6346
  setNodeStatus(nodeId, "error");
6356
6347
  completeExecution();
6357
- return { success: false, error: errorMessage };
6348
+ return { success: false, error: errorMessage, quotaExhausted };
6358
6349
  }
6359
6350
  },
6360
6351
  [
@@ -6863,7 +6854,7 @@ function useRunnerActions() {
6863
6854
  }
6864
6855
  var STYLES = {
6865
6856
  ONLINE: "border-status-success-border bg-status-success-bg-subtle text-status-success-text",
6866
- OFFLINE: "border-status-neutral-border bg-status-neutral-bg-subtle text-status-neutral-text",
6857
+ OFFLINE: "border-border-default bg-bg-sunken text-text-muted",
6867
6858
  NEVER_CONNECTED: "border-status-warning-border bg-status-warning-bg-subtle text-status-warning-text"
6868
6859
  };
6869
6860
  function RunnerStatusPill({
@@ -7257,9 +7248,9 @@ function useRunsQuota() {
7257
7248
  const isExecuting = useFlowStore((s) => s.execution.isExecuting);
7258
7249
  const request = useRef(0);
7259
7250
  const refresh = useCallback(async () => {
7260
- const client = getFluidGridsClientSafe();
7261
- const { workspaceId } = getFluidGridsConfig();
7262
7251
  const id = ++request.current;
7252
+ const client = await waitForFluidGridsClient();
7253
+ const { workspaceId } = getFluidGridsConfig();
7263
7254
  const next = client ? await readRunsQuota(client, workspaceId) : null;
7264
7255
  if (id === request.current) setQuota(next);
7265
7256
  }, []);
@@ -8426,9 +8417,9 @@ function TemplateCard({
8426
8417
  Badge$1,
8427
8418
  {
8428
8419
  variant: "default",
8429
- className: "bg-gradient-to-r from-yellow-500 to-orange-500 text-white border-0 shadow-lg",
8420
+ className: "bg-status-warning-bg-subtle text-status-warning-text border border-status-warning-border shadow-lg",
8430
8421
  children: [
8431
- /* @__PURE__ */ jsx(Star, { className: "size-3 mr-1 fill-white" }),
8422
+ /* @__PURE__ */ jsx(Star, { className: "size-3 mr-1 fill-current" }),
8432
8423
  tr("fluidgrids.builder.templateCard.featuredBadge", "Featured")
8433
8424
  ]
8434
8425
  }
@@ -8437,21 +8428,21 @@ function TemplateCard({
8437
8428
  Badge$1,
8438
8429
  {
8439
8430
  variant: "secondary",
8440
- className: "bg-green-500 text-white border-0",
8431
+ className: "bg-status-success-bg text-action-primary-text border-0",
8441
8432
  children: tr("fluidgrids.builder.templateCard.freeBadge", "Free")
8442
8433
  }
8443
8434
  ) : /* @__PURE__ */ jsxs(
8444
8435
  Badge$1,
8445
8436
  {
8446
8437
  variant: "default",
8447
- className: "bg-blue-500 text-white border-0",
8438
+ className: "bg-status-info-bg text-action-primary-text border-0",
8448
8439
  children: [
8449
8440
  "$",
8450
8441
  template.price?.toString() || "0"
8451
8442
  ]
8452
8443
  }
8453
8444
  ) }),
8454
- /* @__PURE__ */ jsx("div", { className: "absolute inset-0 bg-gradient-to-t from-black/60 via-transparent to-transparent opacity-0 group-hover:opacity-100 transition-opacity duration-300" })
8445
+ /* @__PURE__ */ jsx("div", { className: "absolute inset-0 bg-gradient-to-t from-bg-overlay via-transparent to-transparent opacity-0 group-hover:opacity-100 transition-opacity duration-300" })
8455
8446
  ] }),
8456
8447
  /* @__PURE__ */ jsxs("div", { className: "p-4 space-y-3", children: [
8457
8448
  /* @__PURE__ */ jsx("h3", { className: "font-semibold text-base line-clamp-1 group-hover:text-primary transition-colors", children: template.name }),
@@ -8465,7 +8456,7 @@ function TemplateCard({
8465
8456
  ] }),
8466
8457
  /* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between text-xs text-muted-foreground pt-2 border-t", children: [
8467
8458
  /* @__PURE__ */ jsx("div", { className: "flex items-center gap-3", children: template.rating && /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-1", children: [
8468
- /* @__PURE__ */ jsx(Star, { className: "size-3 fill-yellow-400 text-yellow-400" }),
8459
+ /* @__PURE__ */ jsx(Star, { className: "size-3 fill-status-warning-bg text-status-warning-text" }),
8469
8460
  /* @__PURE__ */ jsx("span", { className: "font-medium", children: template.rating.toFixed(1) }),
8470
8461
  /* @__PURE__ */ jsxs("span", { className: "text-muted-foreground/60", children: [
8471
8462
  "(",
@@ -8753,7 +8744,13 @@ function NodeListItem({
8753
8744
  }
8754
8745
  function UnavailableNodePropertyPanel() {
8755
8746
  return /* @__PURE__ */ jsxs("div", { className: "h-full flex flex-col items-center justify-center p-4 text-center", children: [
8756
- /* @__PURE__ */ jsx("div", { className: "size-12 flex items-center justify-center rounded-full bg-card", children: /* @__PURE__ */ jsx(Icon, { icon: "mynaui:info-triangle", className: "size-6 text-white" }) }),
8747
+ /* @__PURE__ */ jsx("div", { className: "size-12 flex items-center justify-center rounded-full bg-card", children: /* @__PURE__ */ jsx(
8748
+ Icon,
8749
+ {
8750
+ icon: "mynaui:info-triangle",
8751
+ className: "size-6 text-status-warning-text"
8752
+ }
8753
+ ) }),
8757
8754
  /* @__PURE__ */ jsx("div", { className: "mt-4 text-balance font-medium", children: "Unavailable Properties" }),
8758
8755
  /* @__PURE__ */ jsx("div", { className: "mt-1 text-xs text-card-foreground/40 font-medium leading-normal", children: "Either no properties are available for this node or the node is not selected." }),
8759
8756
  /* @__PURE__ */ jsx("div", { className: "mt-8 w-full text-xs text-card-foreground/40 font-medium italic", children: "Select another node to view its properties." })
@@ -9702,7 +9699,13 @@ function NodePropertyPanel2({ id, type, data }) {
9702
9699
  function IntroductionPropertyPanel() {
9703
9700
  const tr = useTr();
9704
9701
  return /* @__PURE__ */ jsxs("div", { className: "h-full flex flex-col items-center justify-center p-4 text-center", children: [
9705
- /* @__PURE__ */ jsx("div", { className: "size-12 flex items-center justify-center rounded-full bg-primary", children: /* @__PURE__ */ jsx(Icon, { icon: "mynaui:cog-one", className: "size-6 text-white" }) }),
9702
+ /* @__PURE__ */ jsx("div", { className: "size-12 flex items-center justify-center rounded-full bg-primary", children: /* @__PURE__ */ jsx(
9703
+ Icon,
9704
+ {
9705
+ icon: "mynaui:cog-one",
9706
+ className: "size-6 text-primary-foreground"
9707
+ }
9708
+ ) }),
9706
9709
  /* @__PURE__ */ jsx("div", { className: "mt-4 text-balance font-medium", children: tr(
9707
9710
  "fluidgrids.builder.introductionPropertyPanel.title",
9708
9711
  "Node Properties"
@@ -10243,7 +10246,7 @@ function StoreCategoryList({
10243
10246
  {
10244
10247
  className: "size-9 shrink-0 rounded-lg flex items-center justify-center",
10245
10248
  style: {
10246
- backgroundColor: "var(--color-status-warning-bgSubtle, color-mix(in oklab, #f59e0b 16%, transparent))"
10249
+ backgroundColor: "var(--color-status-warning-bgSubtle)"
10247
10250
  },
10248
10251
  children: /* @__PURE__ */ jsx(
10249
10252
  Icon,
@@ -10251,7 +10254,7 @@ function StoreCategoryList({
10251
10254
  icon: "mynaui:circle-warning",
10252
10255
  className: "size-5",
10253
10256
  style: {
10254
- color: "var(--color-status-warning-text, #d97706)"
10257
+ color: "var(--color-status-warning-text)"
10255
10258
  }
10256
10259
  }
10257
10260
  )
@@ -10263,7 +10266,7 @@ function StoreCategoryList({
10263
10266
  {
10264
10267
  className: "text-sm font-medium group-hover:text-primary transition-colors",
10265
10268
  style: {
10266
- color: "var(--color-status-warning-text, #d97706)"
10269
+ color: "var(--color-status-warning-text)"
10267
10270
  },
10268
10271
  children: tr(
10269
10272
  "fluidgrids.builder.storeCategoryList.deprecatedCategoryLabel",
@@ -10409,11 +10412,11 @@ var UninstallNodeDialog = ({
10409
10412
  onCancel
10410
10413
  }) => {
10411
10414
  const tr = useTr();
10412
- return /* @__PURE__ */ jsx("div", { className: "fixed inset-0 bg-black/50 flex items-center justify-center z-50", children: /* @__PURE__ */ jsxs("div", { className: "bg-white rounded-lg shadow-xl max-w-md w-full mx-4", children: [
10415
+ return /* @__PURE__ */ jsx("div", { className: "fixed inset-0 bg-bg-overlay flex items-center justify-center z-50", children: /* @__PURE__ */ jsxs("div", { className: "bg-bg-surface rounded-lg shadow-xl max-w-md w-full mx-4", children: [
10413
10416
  /* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between p-4 border-b", children: [
10414
10417
  /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", children: [
10415
- /* @__PURE__ */ jsx(Trash2, { className: "w-5 h-5 text-red-600" }),
10416
- /* @__PURE__ */ jsx("h2", { className: "text-lg font-semibold text-gray-900", children: tr(
10418
+ /* @__PURE__ */ jsx(Trash2, { className: "w-5 h-5 text-status-error-text" }),
10419
+ /* @__PURE__ */ jsx("h2", { className: "text-lg font-semibold text-text-primary", children: tr(
10417
10420
  "fluidgrids.builder.uninstallNodeDialog.title",
10418
10421
  "Uninstall Node"
10419
10422
  ) })
@@ -10422,7 +10425,7 @@ var UninstallNodeDialog = ({
10422
10425
  "button",
10423
10426
  {
10424
10427
  onClick: onCancel,
10425
- className: "text-gray-400 hover:text-gray-600 transition-colors",
10428
+ className: "text-text-muted hover:text-text-secondary transition-colors",
10426
10429
  "aria-label": tr(
10427
10430
  "fluidgrids.builder.uninstallNodeDialog.closeAriaLabel",
10428
10431
  "Close dialog"
@@ -10432,20 +10435,20 @@ var UninstallNodeDialog = ({
10432
10435
  )
10433
10436
  ] }),
10434
10437
  /* @__PURE__ */ jsx("div", { className: "p-4", children: loading ? /* @__PURE__ */ jsxs("div", { className: "flex items-center justify-center py-8", children: [
10435
- /* @__PURE__ */ jsx("div", { className: "animate-spin rounded-full h-8 w-8 border-b-2 border-blue-600" }),
10436
- /* @__PURE__ */ jsx("span", { className: "ml-3 text-gray-600", children: tr(
10438
+ /* @__PURE__ */ jsx("div", { className: "animate-spin rounded-full h-8 w-8 border-b-2 border-status-info-border" }),
10439
+ /* @__PURE__ */ jsx("span", { className: "ml-3 text-text-secondary", children: tr(
10437
10440
  "fluidgrids.builder.uninstallNodeDialog.checkingUsage",
10438
10441
  "Checking node usage..."
10439
10442
  ) })
10440
10443
  ] }) : /* @__PURE__ */ jsxs(Fragment, { children: [
10441
- isUsed && /* @__PURE__ */ jsxs("div", { className: "mb-4 p-3 bg-amber-50 border border-amber-200 rounded-lg flex gap-3", children: [
10442
- /* @__PURE__ */ jsx(AlertTriangle, { className: "w-5 h-5 text-amber-600 flex-shrink-0 mt-0.5" }),
10444
+ isUsed && /* @__PURE__ */ jsxs("div", { className: "mb-4 p-3 bg-status-warning-bg-subtle border border-status-warning-border rounded-lg flex gap-3", children: [
10445
+ /* @__PURE__ */ jsx(AlertTriangle, { className: "w-5 h-5 text-status-warning-text flex-shrink-0 mt-0.5" }),
10443
10446
  /* @__PURE__ */ jsxs("div", { children: [
10444
- /* @__PURE__ */ jsx("p", { className: "text-sm font-medium text-amber-900", children: tr(
10447
+ /* @__PURE__ */ jsx("p", { className: "text-sm font-medium text-status-warning-text", children: tr(
10445
10448
  "fluidgrids.builder.uninstallNodeDialog.inUseWarningTitle",
10446
10449
  "Warning: Node is in use"
10447
10450
  ) }),
10448
- /* @__PURE__ */ jsxs("p", { className: "text-sm text-amber-700 mt-1", children: [
10451
+ /* @__PURE__ */ jsxs("p", { className: "text-sm text-status-warning-text mt-1", children: [
10449
10452
  "This node is currently used in ",
10450
10453
  workflows.length,
10451
10454
  " workflow",
@@ -10455,13 +10458,13 @@ var UninstallNodeDialog = ({
10455
10458
  ] })
10456
10459
  ] }),
10457
10460
  /* @__PURE__ */ jsxs("div", { className: "mb-4", children: [
10458
- /* @__PURE__ */ jsxs("p", { className: "text-sm text-gray-600", children: [
10461
+ /* @__PURE__ */ jsxs("p", { className: "text-sm text-text-secondary", children: [
10459
10462
  "Are you sure you want to uninstall",
10460
10463
  " ",
10461
- /* @__PURE__ */ jsx("span", { className: "font-semibold text-gray-900", children: nodeName }),
10464
+ /* @__PURE__ */ jsx("span", { className: "font-semibold text-text-primary", children: nodeName }),
10462
10465
  "?"
10463
10466
  ] }),
10464
- /* @__PURE__ */ jsxs("p", { className: "text-xs text-gray-500 mt-1", children: [
10467
+ /* @__PURE__ */ jsxs("p", { className: "text-xs text-text-muted mt-1", children: [
10465
10468
  tr(
10466
10469
  "fluidgrids.builder.uninstallNodeDialog.nodeTypeLabel",
10467
10470
  "Node Type:"
@@ -10471,13 +10474,13 @@ var UninstallNodeDialog = ({
10471
10474
  ] })
10472
10475
  ] }),
10473
10476
  isUsed && workflows.length > 0 && /* @__PURE__ */ jsxs("div", { className: "mb-4", children: [
10474
- /* @__PURE__ */ jsx("p", { className: "text-sm font-medium text-gray-700 mb-2", children: tr(
10477
+ /* @__PURE__ */ jsx("p", { className: "text-sm font-medium text-text-secondary mb-2", children: tr(
10475
10478
  "fluidgrids.builder.uninstallNodeDialog.workflowsListHeading",
10476
10479
  "Workflows using this node:"
10477
10480
  ) }),
10478
- /* @__PURE__ */ jsx("div", { className: "max-h-40 overflow-y-auto border rounded-lg divide-y", children: workflows.map((workflow) => /* @__PURE__ */ jsxs("div", { className: "p-2 hover:bg-gray-50", children: [
10479
- /* @__PURE__ */ jsx("p", { className: "text-sm font-medium text-gray-900", children: workflow.name }),
10480
- /* @__PURE__ */ jsxs("p", { className: "text-xs text-gray-500", children: [
10481
+ /* @__PURE__ */ jsx("div", { className: "max-h-40 overflow-y-auto border rounded-lg divide-y", children: workflows.map((workflow) => /* @__PURE__ */ jsxs("div", { className: "p-2 hover:bg-bg-sunken", children: [
10482
+ /* @__PURE__ */ jsx("p", { className: "text-sm font-medium text-text-primary", children: workflow.name }),
10483
+ /* @__PURE__ */ jsxs("p", { className: "text-xs text-text-muted", children: [
10481
10484
  "ID: ",
10482
10485
  workflow.id,
10483
10486
  " \u2022 Version: ",
@@ -10485,17 +10488,17 @@ var UninstallNodeDialog = ({
10485
10488
  ] })
10486
10489
  ] }, workflow.id)) })
10487
10490
  ] }),
10488
- !isUsed && /* @__PURE__ */ jsx("div", { className: "mb-4 p-3 bg-green-50 border border-green-200 rounded-lg", children: /* @__PURE__ */ jsx("p", { className: "text-sm text-green-800", children: tr(
10491
+ !isUsed && /* @__PURE__ */ jsx("div", { className: "mb-4 p-3 bg-status-success-bg-subtle border border-status-success-border rounded-lg", children: /* @__PURE__ */ jsx("p", { className: "text-sm text-status-success-text", children: tr(
10489
10492
  "fluidgrids.builder.uninstallNodeDialog.safeToUninstall",
10490
10493
  "This node is not currently used in any workflows. It's safe to uninstall."
10491
10494
  ) }) })
10492
10495
  ] }) }),
10493
- /* @__PURE__ */ jsxs("div", { className: "flex items-center justify-end gap-3 p-4 border-t bg-gray-50", children: [
10496
+ /* @__PURE__ */ jsxs("div", { className: "flex items-center justify-end gap-3 p-4 border-t bg-bg-sunken", children: [
10494
10497
  /* @__PURE__ */ jsx(
10495
10498
  "button",
10496
10499
  {
10497
10500
  onClick: onCancel,
10498
- className: "px-4 py-2 text-sm font-medium text-gray-700 bg-white border border-gray-300 rounded-lg hover:bg-gray-50 transition-colors",
10501
+ className: "px-4 py-2 text-sm font-medium text-text-secondary bg-bg-surface border border-border-strong rounded-lg hover:bg-bg-sunken transition-colors",
10499
10502
  disabled: loading,
10500
10503
  children: tr(
10501
10504
  "fluidgrids.builder.uninstallNodeDialog.cancelButton",
@@ -10507,7 +10510,7 @@ var UninstallNodeDialog = ({
10507
10510
  "button",
10508
10511
  {
10509
10512
  onClick: onConfirm,
10510
- className: `px-4 py-2 text-sm font-medium text-white rounded-lg transition-colors ${isUsed ? "bg-red-600 hover:bg-red-700" : "bg-red-500 hover:bg-red-600"}`,
10513
+ className: "px-4 py-2 text-sm font-medium rounded-lg transition-colors bg-action-danger-bg text-action-danger-text hover:bg-action-danger-bgHover",
10511
10514
  disabled: loading,
10512
10515
  children: isUsed ? tr(
10513
10516
  "fluidgrids.builder.uninstallNodeDialog.confirmAnywayButton",
@@ -11107,7 +11110,7 @@ function StoreNodeDetail({ node, onBack }) {
11107
11110
  ] }),
11108
11111
  /* @__PURE__ */ jsxs("div", { className: "flex items-center justify-center gap-4 text-xs text-muted-foreground mb-4", children: [
11109
11112
  node.rating != null && /* @__PURE__ */ jsxs("span", { className: "flex items-center gap-1", children: [
11110
- /* @__PURE__ */ jsx(Star, { className: "size-3 fill-yellow-400 text-yellow-400" }),
11113
+ /* @__PURE__ */ jsx(Star, { className: "size-3 fill-status-warning-bg text-status-warning-text" }),
11111
11114
  node.rating.toFixed(1),
11112
11115
  /* @__PURE__ */ jsxs("span", { className: "opacity-60", children: [
11113
11116
  "(",
@@ -11409,7 +11412,13 @@ function StoreBrowsePanel() {
11409
11412
  return /* @__PURE__ */ jsxs(SidebarPanelWrapper, { children: [
11410
11413
  /* @__PURE__ */ jsx(AttachModeBanner, {}),
11411
11414
  view.type === "categories" && /* @__PURE__ */ jsxs("div", { className: "px-4 pt-4 pb-2 shrink-0 flex items-center gap-2", children: [
11412
- /* @__PURE__ */ jsx("div", { className: "size-7 flex items-center justify-center rounded-lg bg-primary", children: /* @__PURE__ */ jsx(Icon, { icon: "mynaui:store", className: "size-4 text-white" }) }),
11415
+ /* @__PURE__ */ jsx("div", { className: "size-7 flex items-center justify-center rounded-lg bg-primary", children: /* @__PURE__ */ jsx(
11416
+ Icon,
11417
+ {
11418
+ icon: "mynaui:store",
11419
+ className: "size-4 text-primary-foreground"
11420
+ }
11421
+ ) }),
11413
11422
  /* @__PURE__ */ jsxs("div", { children: [
11414
11423
  /* @__PURE__ */ jsx("p", { className: "text-sm font-semibold text-foreground leading-tight", children: tr("fluidgrids.builder.storeBrowsePanel.title", "Node Store") }),
11415
11424
  /* @__PURE__ */ jsx("p", { className: "text-xs text-muted-foreground", children: tr(
@@ -11536,7 +11545,7 @@ function TemplatesGrid({
11536
11545
  ] });
11537
11546
  }
11538
11547
  var LazyTemplateDetailPanel = lazy(
11539
- () => import('./TemplateDetailPanel-RZDJEXGG.js').then((m) => ({
11548
+ () => import('./TemplateDetailPanel-PP42MUM2.js').then((m) => ({
11540
11549
  default: m.TemplateDetailPanel
11541
11550
  }))
11542
11551
  );
@@ -11677,7 +11686,7 @@ function TemplatesModal({
11677
11686
  ) });
11678
11687
  }
11679
11688
  var LazyTemplateConfigurationModal = lazy(
11680
- () => import('./TemplateConfigurationModal-HUHXIL3K.js').then((m) => ({
11689
+ () => import('./TemplateConfigurationModal-SILENYXX.js').then((m) => ({
11681
11690
  default: m.TemplateConfigurationModal
11682
11691
  }))
11683
11692
  );
@@ -12685,25 +12694,43 @@ function getCategoryColor(category) {
12685
12694
  function getCategoryBgColor(category) {
12686
12695
  switch (category.toLowerCase()) {
12687
12696
  case "input":
12688
- return "rgba(199, 210, 254, 0.3)";
12689
- // indigo-100 with opacity
12697
+ return "var(--color-node-integration-subtle)";
12690
12698
  case "metadata":
12691
- return "rgba(253, 230, 138, 0.3)";
12692
- // amber-100 with opacity
12699
+ return "var(--color-status-warning-bgSubtle)";
12693
12700
  case "context":
12694
- return "rgba(167, 243, 208, 0.3)";
12695
- // emerald-100 with opacity
12701
+ return "var(--color-status-success-bgSubtle)";
12696
12702
  case "output":
12697
- return "rgba(186, 230, 253, 0.3)";
12698
- // sky-100 with opacity
12703
+ return "var(--color-status-info-bgSubtle)";
12699
12704
  case "config":
12700
- return "rgba(254, 205, 211, 0.3)";
12701
- // rose-100 with opacity
12705
+ return "var(--color-status-error-bgSubtle)";
12702
12706
  default:
12703
- return "rgba(229, 231, 235, 0.3)";
12707
+ return "var(--color-bg-sunken)";
12704
12708
  }
12705
12709
  }
12706
12710
  SchemaNode.displayName = "SchemaNode";
12711
+ var MAPPING_COMPATIBILITY_COLORS = {
12712
+ compatible: edgeColor("compatible"),
12713
+ incompatible: edgeColor("incompatible")
12714
+ };
12715
+ var MAPPING_TYPE_COLORS = {
12716
+ direct: MAPPING_COMPATIBILITY_COLORS.compatible,
12717
+ expression: "var(--color-chart-3)",
12718
+ transform: "var(--color-chart-10)",
12719
+ cast: "var(--color-chart-2)",
12720
+ array: "var(--color-chart-4)",
12721
+ object: "var(--color-chart-12)",
12722
+ context: "var(--color-chart-11)"
12723
+ };
12724
+ var MAPPING_FALLBACK_COLOR = edgeColor("default");
12725
+ function isMappingTypeKey(value) {
12726
+ return Object.prototype.hasOwnProperty.call(MAPPING_TYPE_COLORS, value);
12727
+ }
12728
+ function mappingTypeColor(mappingType) {
12729
+ return isMappingTypeKey(mappingType) ? MAPPING_TYPE_COLORS[mappingType] : MAPPING_FALLBACK_COLOR;
12730
+ }
12731
+ function compatibilityColor(isCompatible) {
12732
+ return isCompatible ? MAPPING_COMPATIBILITY_COLORS.compatible : MAPPING_COMPATIBILITY_COLORS.incompatible;
12733
+ }
12707
12734
  var MappingEdge = memo(
12708
12735
  ({
12709
12736
  id,
@@ -12728,7 +12755,7 @@ var MappingEdge = memo(
12728
12755
  const mappingType = data?.mappingType || "direct";
12729
12756
  const isCompatible = data?.isCompatible !== false;
12730
12757
  let mappingLabel = "";
12731
- const mappingColor = getEdgeColor(mappingType, isCompatible) || "#888";
12758
+ const mappingColor = getEdgeColor(mappingType, isCompatible) || MAPPING_FALLBACK_COLOR;
12732
12759
  switch (mappingType) {
12733
12760
  case "direct":
12734
12761
  mappingLabel = "Direct";
@@ -13775,7 +13802,7 @@ function MappingDialogContent({
13775
13802
  /* @__PURE__ */ jsx(
13776
13803
  "div",
13777
13804
  {
13778
- className: "fixed inset-0 bg-black/50 z-[100001] flex items-center justify-center",
13805
+ className: "fixed inset-0 bg-bg-overlay z-[100001] flex items-center justify-center",
13779
13806
  onClick: () => onOpenChange(false),
13780
13807
  children: /* @__PURE__ */ jsxs(
13781
13808
  "div",
@@ -14607,33 +14634,6 @@ function detectMappingType(value) {
14607
14634
  }
14608
14635
  return "direct";
14609
14636
  }
14610
- function getMappingTypeColor(mappingType) {
14611
- switch (mappingType) {
14612
- case "direct":
14613
- return "#3b82f6";
14614
- // blue
14615
- case "expression":
14616
- return "#8b5cf6";
14617
- // violet
14618
- case "transform":
14619
- return "#ec4899";
14620
- // pink
14621
- case "cast":
14622
- return "#10b981";
14623
- // emerald
14624
- case "array":
14625
- return "#f97316";
14626
- // orange
14627
- case "object":
14628
- return "#6366f1";
14629
- // indigo
14630
- case "context":
14631
- return "#14b8a6";
14632
- // teal
14633
- default:
14634
- return "#6b7280";
14635
- }
14636
- }
14637
14637
  function VisualMapperContent({
14638
14638
  sourceSchema,
14639
14639
  targetSchema,
@@ -14730,7 +14730,7 @@ function VisualMapperContent({
14730
14730
  data: {
14731
14731
  mappingType: "direct",
14732
14732
  isCompatible,
14733
- color: isCompatible ? "#3b82f6" : "#ef4444"
14733
+ color: compatibilityColor(isCompatible)
14734
14734
  }
14735
14735
  });
14736
14736
  continue;
@@ -14745,7 +14745,7 @@ function VisualMapperContent({
14745
14745
  data: {
14746
14746
  mappingType,
14747
14747
  expression: value,
14748
- color: getMappingTypeColor(mappingType)
14748
+ color: mappingTypeColor(mappingType)
14749
14749
  }
14750
14750
  });
14751
14751
  }
@@ -14771,7 +14771,7 @@ function VisualMapperContent({
14771
14771
  data: {
14772
14772
  mappingType: "direct",
14773
14773
  isCompatible,
14774
- color: isCompatible ? "#3b82f6" : "#ef4444"
14774
+ color: compatibilityColor(isCompatible)
14775
14775
  }
14776
14776
  };
14777
14777
  setEdges((eds) => addEdge(newEdge, eds));
@@ -15050,7 +15050,7 @@ function VisualMapperContent({
15050
15050
  item.icon,
15051
15051
  {
15052
15052
  className: "h-4 w-4 mt-0.5",
15053
- style: { color: getMappingTypeColor(item.type) }
15053
+ style: { color: mappingTypeColor(item.type) }
15054
15054
  }
15055
15055
  ),
15056
15056
  /* @__PURE__ */ jsxs("div", { className: "flex flex-col", children: [
@@ -15723,10 +15723,8 @@ var defaultDataConfig = {
15723
15723
  displayName: "Direct Mapping",
15724
15724
  description: "Map a source field directly to a target field using ${output.field} syntax",
15725
15725
  color: {
15726
- compatible: "#3b82f6",
15727
- // blue-500
15728
- incompatible: "#ef4444"
15729
- // red-500
15726
+ compatible: MAPPING_COMPATIBILITY_COLORS.compatible,
15727
+ incompatible: MAPPING_COMPATIBILITY_COLORS.incompatible
15730
15728
  },
15731
15729
  examples: [
15732
15730
  {
@@ -15755,8 +15753,7 @@ var defaultDataConfig = {
15755
15753
  expression: {
15756
15754
  displayName: "Expression Mapping",
15757
15755
  description: "Create a custom JavaScript expression to transform the data",
15758
- color: "#8b5cf6",
15759
- // violet-500
15756
+ color: MAPPING_TYPE_COLORS.expression,
15760
15757
  examples: [
15761
15758
  {
15762
15759
  name: "String concatenation",
@@ -15859,8 +15856,7 @@ var defaultDataConfig = {
15859
15856
  transform: {
15860
15857
  displayName: "Transform Mapping",
15861
15858
  description: "Apply string and data transformation functions",
15862
- color: "#ec4899",
15863
- // pink-500
15859
+ color: MAPPING_TYPE_COLORS.transform,
15864
15860
  examples: [
15865
15861
  {
15866
15862
  name: "Uppercase",
@@ -15962,8 +15958,7 @@ var defaultDataConfig = {
15962
15958
  cast: {
15963
15959
  displayName: "Cast Mapping",
15964
15960
  description: "Convert data from one type to another using JavaScript functions",
15965
- color: "#10b981",
15966
- // emerald-500
15961
+ color: MAPPING_TYPE_COLORS.cast,
15967
15962
  examples: [
15968
15963
  {
15969
15964
  name: "String to Integer",
@@ -16038,8 +16033,7 @@ var defaultDataConfig = {
16038
16033
  array: {
16039
16034
  displayName: "Array Mapping",
16040
16035
  description: "Transform arrays using map, filter, reduce and other array methods",
16041
- color: "#f97316",
16042
- // orange-500
16036
+ color: MAPPING_TYPE_COLORS.array,
16043
16037
  examples: [
16044
16038
  {
16045
16039
  name: "Map - Extract IDs",
@@ -16157,8 +16151,7 @@ var defaultDataConfig = {
16157
16151
  object: {
16158
16152
  displayName: "Object Mapping",
16159
16153
  description: "Transform and manipulate objects",
16160
- color: "#6366f1",
16161
- // indigo-500
16154
+ color: MAPPING_TYPE_COLORS.object,
16162
16155
  examples: [
16163
16156
  {
16164
16157
  name: "Get keys",
@@ -16206,8 +16199,7 @@ var defaultDataConfig = {
16206
16199
  context: {
16207
16200
  displayName: "Workflow Context",
16208
16201
  description: "Access workflow execution context and state from previous nodes",
16209
- color: "#14b8a6",
16210
- // teal-500
16202
+ color: MAPPING_TYPE_COLORS.context,
16211
16203
  examples: [
16212
16204
  {
16213
16205
  name: "Trigger input",
@@ -18181,10 +18173,8 @@ function CustomDeletableEdge(props) {
18181
18173
  "Map a source field directly to a target field"
18182
18174
  ),
18183
18175
  color: {
18184
- compatible: "#3b82f6",
18185
- // blue-500
18186
- incompatible: "#ef4444"
18187
- // red-500
18176
+ compatible: MAPPING_COMPATIBILITY_COLORS.compatible,
18177
+ incompatible: MAPPING_COMPATIBILITY_COLORS.incompatible
18188
18178
  }
18189
18179
  },
18190
18180
  expression: {
@@ -18196,8 +18186,7 @@ function CustomDeletableEdge(props) {
18196
18186
  "fluidgrids.builder.edges.customDeletableEdge.mappingExpressionDescription",
18197
18187
  "Create a custom expression to transform the data"
18198
18188
  ),
18199
- color: "#8b5cf6",
18200
- // violet-500
18189
+ color: MAPPING_TYPE_COLORS.expression,
18201
18190
  examples: [
18202
18191
  {
18203
18192
  name: "Concatenate strings",
@@ -18273,8 +18262,7 @@ function CustomDeletableEdge(props) {
18273
18262
  "fluidgrids.builder.edges.customDeletableEdge.mappingTransformDescription",
18274
18263
  "Apply a predefined transformation function"
18275
18264
  ),
18276
- color: "#ec4899",
18277
- // pink-500
18265
+ color: MAPPING_TYPE_COLORS.transform,
18278
18266
  functions: [
18279
18267
  {
18280
18268
  name: "uppercase",
@@ -18405,8 +18393,7 @@ function CustomDeletableEdge(props) {
18405
18393
  "fluidgrids.builder.edges.customDeletableEdge.mappingCastDescription",
18406
18394
  "Convert data from one type to another"
18407
18395
  ),
18408
- color: "#10b981",
18409
- // emerald-500
18396
+ color: MAPPING_TYPE_COLORS.cast,
18410
18397
  types: [
18411
18398
  {
18412
18399
  name: "int",
@@ -18467,8 +18454,7 @@ function CustomDeletableEdge(props) {
18467
18454
  "fluidgrids.builder.edges.customDeletableEdge.mappingArrayDescription",
18468
18455
  "Transform arrays using map, filter, reduce and other array methods"
18469
18456
  ),
18470
- color: "#f97316",
18471
- // orange-500
18457
+ color: MAPPING_TYPE_COLORS.array,
18472
18458
  examples: [
18473
18459
  {
18474
18460
  name: "Map - Extract IDs",
@@ -18625,8 +18611,7 @@ function CustomDeletableEdge(props) {
18625
18611
  "fluidgrids.builder.edges.customDeletableEdge.mappingObjectDescription",
18626
18612
  "Transform and manipulate objects"
18627
18613
  ),
18628
- color: "#6366f1",
18629
- // indigo-500
18614
+ color: MAPPING_TYPE_COLORS.object,
18630
18615
  examples: [
18631
18616
  {
18632
18617
  name: "Get keys",
@@ -18703,8 +18688,7 @@ function CustomDeletableEdge(props) {
18703
18688
  "fluidgrids.builder.edges.customDeletableEdge.mappingContextDescription",
18704
18689
  "Access workflow execution context and state from previous nodes"
18705
18690
  ),
18706
- color: "#14b8a6",
18707
- // teal-500
18691
+ color: MAPPING_TYPE_COLORS.context,
18708
18692
  examples: [
18709
18693
  {
18710
18694
  name: "Trigger input",
@@ -18836,29 +18820,25 @@ function CustomDeletableEdge(props) {
18836
18820
  const getEdgeStyle = () => {
18837
18821
  if (isRunning) {
18838
18822
  return {
18839
- stroke: "#22c55e",
18840
- // Green for running
18823
+ stroke: edgeColor("active"),
18841
18824
  strokeWidth: 2,
18842
18825
  strokeDasharray: "5 5"
18843
18826
  };
18844
18827
  }
18845
18828
  if (isSuccess) {
18846
18829
  return {
18847
- stroke: "#22c55e",
18848
- // Green for success
18830
+ stroke: edgeColor("success"),
18849
18831
  strokeWidth: 2
18850
18832
  };
18851
18833
  }
18852
18834
  if (isError) {
18853
18835
  return {
18854
- stroke: "#ef4444",
18855
- // Red for error
18836
+ stroke: edgeColor("error"),
18856
18837
  strokeWidth: 2
18857
18838
  };
18858
18839
  }
18859
18840
  return {
18860
- stroke: "var(--color-text-tertiary)",
18861
- // Theme-aware default color
18841
+ stroke: edgeColor("default"),
18862
18842
  strokeWidth: 2
18863
18843
  };
18864
18844
  };
@@ -18870,7 +18850,9 @@ function CustomDeletableEdge(props) {
18870
18850
  const srcIsLogic = /(if|switch|merge|loop|filter|branch|router|condition|aggregate)/.test(
18871
18851
  srcType
18872
18852
  );
18873
- const flowAccent = srcIsTrigger ? "#10b981" : srcIsLogic ? "#f59e0b" : "#3b82f6";
18853
+ const flowAccent = nodeCategoryColor(
18854
+ srcIsTrigger ? "trigger" : srcIsLogic ? "logic" : "action"
18855
+ );
18874
18856
  const edgeClassName = [isRunning && "animated-edge edge-glow"].filter(Boolean).join(" ");
18875
18857
  return /* @__PURE__ */ jsxs(Fragment, { children: [
18876
18858
  /* @__PURE__ */ jsx(
@@ -18890,10 +18872,12 @@ function CustomDeletableEdge(props) {
18890
18872
  {
18891
18873
  d: edgePath,
18892
18874
  fill: "none",
18893
- stroke: "#22c55e",
18894
18875
  strokeWidth: 4,
18895
18876
  strokeOpacity: 0.3,
18896
- style: { pointerEvents: "none" }
18877
+ style: {
18878
+ pointerEvents: "none",
18879
+ stroke: edgeColor(isRunning ? "active" : "success")
18880
+ }
18897
18881
  }
18898
18882
  ),
18899
18883
  /* @__PURE__ */ jsx(
@@ -18912,10 +18896,9 @@ function CustomDeletableEdge(props) {
18912
18896
  {
18913
18897
  d: edgePath,
18914
18898
  fill: "none",
18915
- stroke: flowAccent,
18916
18899
  strokeWidth: 2,
18917
18900
  strokeDasharray: "6 8",
18918
- style: { pointerEvents: "none" },
18901
+ style: { pointerEvents: "none", stroke: flowAccent },
18919
18902
  children: /* @__PURE__ */ jsx(
18920
18903
  "animate",
18921
18904
  {
@@ -18932,11 +18915,10 @@ function CustomDeletableEdge(props) {
18932
18915
  {
18933
18916
  d: edgePath,
18934
18917
  fill: "none",
18935
- stroke: "#22c55e",
18936
18918
  strokeWidth: 2,
18937
18919
  strokeDasharray: "3 7",
18938
18920
  className: "animate-edge-flow",
18939
- style: { pointerEvents: "none" }
18921
+ style: { pointerEvents: "none", stroke: edgeColor("active") }
18940
18922
  }
18941
18923
  ),
18942
18924
  /* @__PURE__ */ jsxs(EdgeLabelRenderer, { children: [
@@ -19017,7 +18999,7 @@ function CustomDeletableEdge(props) {
19017
18999
  /* @__PURE__ */ jsx(
19018
19000
  "div",
19019
19001
  {
19020
- className: "fixed inset-0 bg-black/50 z-[99999] flex items-center justify-center",
19002
+ className: "fixed inset-0 bg-bg-overlay z-[99999] flex items-center justify-center",
19021
19003
  onClick: () => setShowModal(false),
19022
19004
  children: /* @__PURE__ */ jsxs(
19023
19005
  "div",
@@ -19099,7 +19081,7 @@ function CustomDeletableEdge(props) {
19099
19081
  /* @__PURE__ */ jsx(
19100
19082
  "div",
19101
19083
  {
19102
- className: "fixed inset-0 bg-black/50 z-[99999] flex items-center justify-center",
19084
+ className: "fixed inset-0 bg-bg-overlay z-[99999] flex items-center justify-center",
19103
19085
  onClick: () => setConditionShowModal(false),
19104
19086
  children: /* @__PURE__ */ jsxs(
19105
19087
  "div",
@@ -19811,7 +19793,7 @@ function CanvasControls() {
19811
19793
  className: "!rounded-lg !border !border-card-foreground/10 !shadow-lg",
19812
19794
  nodeColor: "var(--color-primary)",
19813
19795
  nodeStrokeColor: "transparent",
19814
- maskColor: "rgba(0,0,0,0.45)",
19796
+ maskColor: "var(--color-canvas-minimap-mask)",
19815
19797
  zoomable: true,
19816
19798
  pannable: true
19817
19799
  }
@@ -20405,6 +20387,8 @@ var ExecuteWorkflowButton = ({
20405
20387
  dismissible: true
20406
20388
  }
20407
20389
  );
20390
+ } else if ("quotaExhausted" in result && result.quotaExhausted) {
20391
+ setDialogOpen(false);
20408
20392
  } else {
20409
20393
  throw new Error(result.error || "Failed to trigger workflow");
20410
20394
  }
@@ -20583,7 +20567,7 @@ var LogDetailView = ({ log }) => {
20583
20567
  /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", children: [
20584
20568
  /* @__PURE__ */ jsx("span", { className: "text-sm font-medium", children: log.nodeName }),
20585
20569
  /* @__PURE__ */ jsx("span", { className: cn("text-xs capitalize", statusColor), children: log.status === "completed" ? tr("fluidgrids.builder.logsPanel.statusSuccess", "Success") : log.status }),
20586
- log.duration && /* @__PURE__ */ jsxs("span", { className: "text-xs text-gray-500", children: [
20570
+ log.duration && /* @__PURE__ */ jsxs("span", { className: "text-xs text-text-muted", children: [
20587
20571
  "in ",
20588
20572
  (log.duration * 1e3).toFixed(0),
20589
20573
  "ms"
@@ -24879,7 +24863,8 @@ function NodeDetailView() {
24879
24863
  await executeStep(targetId);
24880
24864
  },
24881
24865
  onContinueFromNode: async (sourceRunId, targetId) => {
24882
- await executeFromNode(sourceRunId, targetId);
24866
+ const result = await executeFromNode(sourceRunId, targetId);
24867
+ if (!result.success && result.quotaExhausted) closeNdv();
24883
24868
  },
24884
24869
  testIdPrefix: "ndv",
24885
24870
  className: "border-t-0 border-b"
@@ -25131,7 +25116,7 @@ function NodeDetailView() {
25131
25116
  )
25132
25117
  }
25133
25118
  ),
25134
- nodeLog?.usedPinnedData && /* @__PURE__ */ jsx("span", { className: "rounded bg-amber-500/10 px-1.5 py-0.5 text-[10px] font-medium uppercase tracking-wide text-amber-600 dark:text-amber-400", children: tr(
25119
+ nodeLog?.usedPinnedData && /* @__PURE__ */ jsx("span", { className: "rounded bg-status-warning-bg-subtle px-1.5 py-0.5 text-[10px] font-medium uppercase tracking-wide text-status-warning-text", children: tr(
25135
25120
  "fluidgrids.builder.nodeDetailView.pinnedDataUsedBadge",
25136
25121
  "Pinned"
25137
25122
  ) }),
@@ -25148,7 +25133,7 @@ function NodeDetailView() {
25148
25133
  ),
25149
25134
  className: cn(
25150
25135
  "flex items-center gap-1 rounded px-1.5 py-0.5 text-[10px] font-medium uppercase tracking-wide transition-colors disabled:opacity-50",
25151
- isPinned ? "bg-amber-500/15 text-amber-600 dark:text-amber-400" : "text-muted-foreground hover:text-foreground"
25136
+ isPinned ? "bg-status-warning-bg-subtle text-status-warning-text" : "text-muted-foreground hover:text-foreground"
25152
25137
  ),
25153
25138
  children: [
25154
25139
  /* @__PURE__ */ jsx(
@@ -26603,7 +26588,7 @@ var ActivateWorkflowButton = ({
26603
26588
  size: "sm",
26604
26589
  className: cn(
26605
26590
  "flex gap-1",
26606
- isDraft && "bg-green-600 hover:bg-green-700 text-white",
26591
+ isDraft && "bg-status-success-bg hover:bg-status-success-bg/90 text-action-primary-text",
26607
26592
  className
26608
26593
  ),
26609
26594
  children: [
@@ -26639,7 +26624,7 @@ function RunWithViewRuns({
26639
26624
  {
26640
26625
  variant: "default",
26641
26626
  size: "icon",
26642
- 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",
26627
+ className: "flex items-center justify-center h-8 w-6 rounded-r-lg rounded-l-none border-l border-action-primary-text/20 bg-[var(--color-status-success-bg)] hover:bg-[var(--color-status-success-bg)]/90",
26643
26628
  children: /* @__PURE__ */ jsx(
26644
26629
  Icon,
26645
26630
  {
@@ -26881,11 +26866,11 @@ var FlowBuilder = ({ readOnly = false }) => {
26881
26866
  entityId: id,
26882
26867
  className: "ml-2 shrink-0"
26883
26868
  }
26884
- )
26869
+ ),
26870
+ name !== "" && /* @__PURE__ */ jsx(RunsUsageMeter, { className: "ml-2 shrink-0" })
26885
26871
  ] }),
26886
26872
  name !== "" && /* @__PURE__ */ jsxs(Fragment, { children: [
26887
26873
  /* @__PURE__ */ jsxs("div", { className: "hidden shrink-0 lg:inline-flex items-center gap-2", children: [
26888
- /* @__PURE__ */ jsx(RunsUsageMeter, { className: "mr-1" }),
26889
26874
  /* @__PURE__ */ jsx(VersionHistoryPanel, {}),
26890
26875
  /* @__PURE__ */ jsx(SaveFlowButton, {}),
26891
26876
  /* @__PURE__ */ jsx(ActivateWorkflowButton, {}),
@@ -27014,7 +26999,7 @@ var FlowBuilder = ({ readOnly = false }) => {
27014
26999
  {
27015
27000
  className: cn(
27016
27001
  "pointer-events-none absolute inset-0 backdrop-blur-3xl transition-all",
27017
- "opacity-0 bg-zinc-800/0 backdrop-saturate-100 pointer-events-none"
27002
+ "opacity-0 bg-transparent backdrop-saturate-100 pointer-events-none"
27018
27003
  ),
27019
27004
  children: /* @__PURE__ */ jsx("div", { ref: floatingMenuWrapperRef, className: "relative size-full", children: /* @__PURE__ */ jsx(AddNodeFloatingMenu, { onNodeAdd: handleAddConnectedNode }) })
27020
27005
  }