@burdenoff/fluidgrids-fe-sdk 2026.803.3 → 2026.803.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 (29) hide show
  1. package/dist/ExecutionsListPage-IZJPACQV.js +8 -0
  2. package/dist/{ExecutionsListPage-5S7FYMT3.js.map → ExecutionsListPage-IZJPACQV.js.map} +1 -1
  3. package/dist/{WorkflowBuilder-UVG6GJ6F.js → WorkflowBuilder-WMAHTZEI.js} +6 -6
  4. package/dist/{WorkflowBuilder-UVG6GJ6F.js.map → WorkflowBuilder-WMAHTZEI.js.map} +1 -1
  5. package/dist/WorkflowsList-BXESQVAH.js +11 -0
  6. package/dist/{WorkflowsList-HNXWE56Q.js.map → WorkflowsList-BXESQVAH.js.map} +1 -1
  7. package/dist/{blocks-LFAFGFT4.js → blocks-7KN7ZRE6.js} +3 -3
  8. package/dist/{blocks-LFAFGFT4.js.map → blocks-7KN7ZRE6.js.map} +1 -1
  9. package/dist/{chunk-CN6MX457.js → chunk-7LLCYNKY.js} +19 -6
  10. package/dist/chunk-7LLCYNKY.js.map +1 -0
  11. package/dist/{chunk-FIREEQYQ.js → chunk-CBUOMHGH.js} +23 -5
  12. package/dist/chunk-CBUOMHGH.js.map +1 -0
  13. package/dist/{chunk-3CIPVKE4.js → chunk-CQAHXNT2.js} +3 -3
  14. package/dist/{chunk-3CIPVKE4.js.map → chunk-CQAHXNT2.js.map} +1 -1
  15. package/dist/{chunk-WZBJIBUX.js → chunk-MH4AHYK3.js} +3 -3
  16. package/dist/{chunk-WZBJIBUX.js.map → chunk-MH4AHYK3.js.map} +1 -1
  17. package/dist/{chunk-F2CI6H7E.js → chunk-OAPYQFQU.js} +23 -3
  18. package/dist/chunk-OAPYQFQU.js.map +1 -0
  19. package/dist/{chunk-WWKY5CJ4.js → chunk-Z3NRSPTV.js} +49 -32
  20. package/dist/chunk-Z3NRSPTV.js.map +1 -0
  21. package/dist/index.js +102 -65
  22. package/dist/index.js.map +1 -1
  23. package/package.json +1 -1
  24. package/dist/ExecutionsListPage-5S7FYMT3.js +0 -8
  25. package/dist/WorkflowsList-HNXWE56Q.js +0 -11
  26. package/dist/chunk-CN6MX457.js.map +0 -1
  27. package/dist/chunk-F2CI6H7E.js.map +0 -1
  28. package/dist/chunk-FIREEQYQ.js.map +0 -1
  29. package/dist/chunk-WWKY5CJ4.js.map +0 -1
package/dist/index.js CHANGED
@@ -1,21 +1,22 @@
1
1
  export { Label } from './chunk-6QCBKN3P.js';
2
- import { FluidGridsProvider, useImportWorkflowTemplate, FlowBuilderPage, useWorkflowTemplates, TemplateCard, Card } from './chunk-WWKY5CJ4.js';
3
- export { Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, EntityTagPicker, FluidGridsProvider, WorkflowBuilder as WorkflowBuilderPage, useFluidGridsContext } from './chunk-WWKY5CJ4.js';
2
+ import { FluidGridsProvider, useImportWorkflowTemplate, FlowBuilderPage, useWorkflowTemplates, TemplateCard, Card } from './chunk-Z3NRSPTV.js';
3
+ export { Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, EntityTagPicker, FluidGridsProvider, WorkflowBuilder as WorkflowBuilderPage, useFluidGridsContext } from './chunk-Z3NRSPTV.js';
4
4
  import { Input as Input$1 } from './chunk-MRVS73S2.js';
5
5
  export { Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, Input } from './chunk-MRVS73S2.js';
6
6
  import { Button as Button$1 } from './chunk-DBOMRIP5.js';
7
7
  export { Badge, Button, badgeVariants, buttonVariants } from './chunk-DBOMRIP5.js';
8
- export { ExecutionsListPage } from './chunk-3CIPVKE4.js';
8
+ export { ExecutionsListPage } from './chunk-CQAHXNT2.js';
9
9
  export { ExecutionDetailPage } from './chunk-F5ACDIYR.js';
10
10
  import './chunk-WAVGHDYH.js';
11
- export { ConfigSchemaForm, ConnectionFormDialog, ConnectionSelector, ProviderPicker, getProviderForm, listCustomBlocks, refetchStoreNodes, registerCustomBlock, resolveUiSpec, stripSubmitActions, useConnection, useConnectionDialog, useConnections, useConnectionsByProvider, useCreateConnection, useInitiateOAuth, useNodeExecution, useProviderByKey, useProviderCatalog, useProviders } from './chunk-CN6MX457.js';
11
+ export { ConfigSchemaForm, ConnectionFormDialog, ConnectionSelector, ProviderPicker, getProviderForm, listCustomBlocks, refetchStoreNodes, registerCustomBlock, resolveUiSpec, stripSubmitActions, useConnection, useConnectionDialog, useConnections, useConnectionsByProvider, useCreateConnection, useInitiateOAuth, useNodeExecution, useProviderByKey, useProviderCatalog, useProviders } from './chunk-7LLCYNKY.js';
12
12
  import { createGlobalStoreClient } from './chunk-BQXHJIER.js';
13
13
  export { createGlobalStoreClient, getGlobalStoreClient, resetGlobalStoreClient, setGlobalStoreClient } from './chunk-BQXHJIER.js';
14
14
  import './chunk-PNOA7CQV.js';
15
- export { WorkflowsList } from './chunk-FIREEQYQ.js';
16
- export { FLUIDGRIDS_ENTITY_TYPES, tagLabel, useAvailableTags, useCreateTag, useDraftEntityTags, useEntityTags, useReplaceEntityTags, useSearchTags, useTagEntity, useUntagEntity } from './chunk-F2CI6H7E.js';
17
- import { useWorkflowDefinition, useWorkflowDefinitions, useDuplicateWorkflow } from './chunk-WZBJIBUX.js';
18
- export { useActivateWorkflow, useCreateWorkflow, useCreateWorkflowVersion, useDashboardSummary, useDeactivateWorkflow, useDeleteWorkflow, useDuplicateWorkflow, useLazyWorkflowDefinition, useRestoreWorkflowVersion, useTriggerWorkflow, useUpdateWorkflow, useWorkflowDefinition, useWorkflowDefinitions, useWorkflowRun, useWorkflowRuns, useWorkflowVersions } from './chunk-WZBJIBUX.js';
15
+ export { WorkflowsList } from './chunk-CBUOMHGH.js';
16
+ import { QuotaExhaustedDialog } from './chunk-OAPYQFQU.js';
17
+ export { FLUIDGRIDS_ENTITY_TYPES, tagLabel, useAvailableTags, useCreateTag, useDraftEntityTags, useEntityTags, useReplaceEntityTags, useSearchTags, useTagEntity, useUntagEntity } from './chunk-OAPYQFQU.js';
18
+ import { useWorkflowDefinition, useWorkflowDefinitions, useDuplicateWorkflow } from './chunk-MH4AHYK3.js';
19
+ export { useActivateWorkflow, useCreateWorkflow, useCreateWorkflowVersion, useDashboardSummary, useDeactivateWorkflow, useDeleteWorkflow, useDuplicateWorkflow, useLazyWorkflowDefinition, useRestoreWorkflowVersion, useTriggerWorkflow, useUpdateWorkflow, useWorkflowDefinition, useWorkflowDefinitions, useWorkflowRun, useWorkflowRuns, useWorkflowVersions } from './chunk-MH4AHYK3.js';
19
20
  import { useFlowStore } from './chunk-ZM4SSEVI.js';
20
21
  export { useFlowStore } from './chunk-ZM4SSEVI.js';
21
22
  export { ALLOW_ALL_PERMISSIONS, FLUIDGRIDS_PERMISSIONS, FluidGridsPermissionsProvider, SdkPermissionButton, SdkPermissionGate, Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, evaluatePermissionCheck, useFluidGridsPermission } from './chunk-UIY2HBWA.js';
@@ -41,6 +42,7 @@ import { toast, Toaster as Toaster$1 } from 'sonner';
41
42
  import { Icon } from '@iconify/react';
42
43
  import { Button } from '@burdenoff/fe-libs/button';
43
44
  import { ErrorBoundary } from '@burdenoff/fe-libs/shared/components';
45
+ import { isQuotaExhaustedError } from '@burdenoff/fe-libs/shared/utils';
44
46
  import { ThemeProvider as ThemeProvider$1 } from '@burdenoff/fe-libs/shared/providers/shell';
45
47
  import { Input, Select, SelectTrigger, SelectValue, SelectContent, SelectItem, Badge, TooltipProvider, Tooltip, TooltipTrigger, TooltipContent, Tabs, TabsList, TabsTrigger, TabsContent, Skeleton, Card as Card$1, CardHeader, Switch, Label } from '@burdenoff/fe-libs/ui';
46
48
  import { useActorProfiles, buildActorFallback } from '@burdenoff/fe-libs/shared';
@@ -55,15 +57,15 @@ import * as SwitchPrimitives from '@radix-ui/react-switch';
55
57
  import * as PopoverPrimitive from '@radix-ui/react-popover';
56
58
 
57
59
  var WorkflowsList2 = lazy(
58
- () => import('./WorkflowsList-HNXWE56Q.js').then((m) => ({ default: m.WorkflowsList }))
60
+ () => import('./WorkflowsList-BXESQVAH.js').then((m) => ({ default: m.WorkflowsList }))
59
61
  );
60
62
  var WorkflowBuilder2 = lazy(
61
- () => import('./WorkflowBuilder-UVG6GJ6F.js').then((m) => ({
63
+ () => import('./WorkflowBuilder-WMAHTZEI.js').then((m) => ({
62
64
  default: m.WorkflowBuilder
63
65
  }))
64
66
  );
65
67
  var ExecutionsListPage2 = lazy(
66
- () => import('./ExecutionsListPage-5S7FYMT3.js').then((m) => ({
68
+ () => import('./ExecutionsListPage-IZJPACQV.js').then((m) => ({
67
69
  default: m.ExecutionsListPage
68
70
  }))
69
71
  );
@@ -603,6 +605,7 @@ function TemplatePreview() {
603
605
  const [loading, setLoading] = useState(true);
604
606
  const [error, setError] = useState(null);
605
607
  const [importing, setImporting] = useState(false);
608
+ const [showQuotaExhausted, setShowQuotaExhausted] = useState(false);
606
609
  const workflowsBase = window.location.pathname.replace(
607
610
  /\/templates(\/.*)?$/,
608
611
  ""
@@ -677,6 +680,8 @@ function TemplatePreview() {
677
680
  navigate(
678
681
  `${workflowsBase}/workflow/${result.workflow.workflowKey}/${result.workflow.version}`
679
682
  );
683
+ } else if (isQuotaExhaustedError(result.error?.cause ?? result.error)) {
684
+ setShowQuotaExhausted(true);
680
685
  } else {
681
686
  toast.error("Failed to use template", { description: result.message });
682
687
  }
@@ -690,70 +695,83 @@ function TemplatePreview() {
690
695
  }
691
696
  };
692
697
  const backToTemplates = () => navigate(`${workflowsBase}/templates`);
693
- return /* @__PURE__ */ jsx(ThemeProvider, { children: /* @__PURE__ */ jsxs("div", { className: "flex h-full w-full flex-col overflow-hidden", children: [
694
- /* @__PURE__ */ jsxs("div", { className: "flex h-14 shrink-0 items-center justify-between gap-3 border-b border-card-foreground/10 bg-gradient-to-r from-primary/40 to-transparent px-3", children: [
695
- /* @__PURE__ */ jsxs("div", { className: "flex min-w-0 items-center gap-2", children: [
696
- /* @__PURE__ */ jsx(
697
- "button",
698
+ return /* @__PURE__ */ jsxs(ThemeProvider, { children: [
699
+ /* @__PURE__ */ jsxs("div", { className: "flex h-full w-full flex-col overflow-hidden", children: [
700
+ /* @__PURE__ */ jsxs("div", { className: "flex h-14 shrink-0 items-center justify-between gap-3 border-b border-card-foreground/10 bg-gradient-to-r from-primary/40 to-transparent px-3", children: [
701
+ /* @__PURE__ */ jsxs("div", { className: "flex min-w-0 items-center gap-2", children: [
702
+ /* @__PURE__ */ jsx(
703
+ "button",
704
+ {
705
+ type: "button",
706
+ onClick: backToTemplates,
707
+ title: "Back to templates",
708
+ className: "flex size-9 shrink-0 items-center justify-center rounded-md text-card-foreground transition-colors hover:bg-card-foreground/10",
709
+ children: /* @__PURE__ */ jsx(Icon, { icon: "ion:arrow-back-outline", className: "size-5" })
710
+ }
711
+ ),
712
+ /* @__PURE__ */ jsxs("div", { className: "min-w-0", children: [
713
+ /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", children: [
714
+ /* @__PURE__ */ jsx("span", { className: "truncate text-sm font-semibold text-card-foreground", children: workflow?.name ?? template?.name ?? "Template preview" }),
715
+ /* @__PURE__ */ jsx("span", { className: "shrink-0 rounded-full bg-card-foreground/10 px-2 py-0.5 text-[10px] font-medium uppercase tracking-wide text-muted-foreground", children: "Preview \xB7 read-only" })
716
+ ] }),
717
+ template?.description ? /* @__PURE__ */ jsx("span", { className: "block truncate text-xs text-muted-foreground", children: template.description }) : null
718
+ ] })
719
+ ] }),
720
+ /* @__PURE__ */ jsxs(
721
+ Button,
698
722
  {
699
- type: "button",
700
- onClick: backToTemplates,
701
- title: "Back to templates",
702
- className: "flex size-9 shrink-0 items-center justify-center rounded-md text-card-foreground transition-colors hover:bg-card-foreground/10",
703
- children: /* @__PURE__ */ jsx(Icon, { icon: "ion:arrow-back-outline", className: "size-5" })
723
+ onClick: handleUse,
724
+ disabled: importing || !template,
725
+ className: "shrink-0 gap-2",
726
+ children: [
727
+ /* @__PURE__ */ jsx(
728
+ Icon,
729
+ {
730
+ icon: importing ? "svg-spinners:ring-resize" : "mdi:plus",
731
+ className: "size-4"
732
+ }
733
+ ),
734
+ "Use this template"
735
+ ]
704
736
  }
705
- ),
706
- /* @__PURE__ */ jsxs("div", { className: "min-w-0", children: [
707
- /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", children: [
708
- /* @__PURE__ */ jsx("span", { className: "truncate text-sm font-semibold text-card-foreground", children: workflow?.name ?? template?.name ?? "Template preview" }),
709
- /* @__PURE__ */ jsx("span", { className: "shrink-0 rounded-full bg-card-foreground/10 px-2 py-0.5 text-[10px] font-medium uppercase tracking-wide text-muted-foreground", children: "Preview \xB7 read-only" })
710
- ] }),
711
- template?.description ? /* @__PURE__ */ jsx("span", { className: "block truncate text-xs text-muted-foreground", children: template.description }) : null
712
- ] })
737
+ )
713
738
  ] }),
714
- /* @__PURE__ */ jsxs(
715
- Button,
739
+ /* @__PURE__ */ jsx("div", { className: "relative min-h-0 w-full flex-1", children: /* @__PURE__ */ jsx(
740
+ ErrorBoundary,
716
741
  {
717
- onClick: handleUse,
718
- disabled: importing || !template,
719
- className: "shrink-0 gap-2",
720
- children: [
742
+ fallback: () => /* @__PURE__ */ jsxs("div", { className: "flex h-full flex-col items-center justify-center gap-3 p-8 text-center", children: [
743
+ /* @__PURE__ */ jsx("p", { className: "text-sm text-muted-foreground", children: "Something went wrong rendering this template preview." }),
744
+ /* @__PURE__ */ jsx(Button, { variant: "outline", onClick: backToTemplates, children: "Back to templates" })
745
+ ] }),
746
+ children: loading ? /* @__PURE__ */ jsxs("div", { className: "flex h-full items-center justify-center gap-2 text-sm text-muted-foreground", children: [
747
+ /* @__PURE__ */ jsx(Icon, { icon: "svg-spinners:ring-resize", className: "size-4" }),
748
+ "Loading preview\u2026"
749
+ ] }) : error ? /* @__PURE__ */ jsxs("div", { className: "flex h-full flex-col items-center justify-center gap-3 p-8 text-center", children: [
721
750
  /* @__PURE__ */ jsx(
722
751
  Icon,
723
752
  {
724
- icon: importing ? "svg-spinners:ring-resize" : "mdi:plus",
725
- className: "size-4"
753
+ icon: "mdi:alert-circle-outline",
754
+ className: "size-8 text-muted-foreground"
726
755
  }
727
756
  ),
728
- "Use this template"
729
- ]
757
+ /* @__PURE__ */ jsx("p", { className: "text-sm text-muted-foreground", children: error }),
758
+ /* @__PURE__ */ jsx(Button, { variant: "outline", onClick: backToTemplates, children: "Back to templates" })
759
+ ] }) : workflow ? /* @__PURE__ */ jsx(FlowBuilderPage, { workflow, readOnly: true }) : null
730
760
  }
731
- )
761
+ ) })
732
762
  ] }),
733
- /* @__PURE__ */ jsx("div", { className: "relative min-h-0 w-full flex-1", children: /* @__PURE__ */ jsx(
734
- ErrorBoundary,
763
+ /* @__PURE__ */ jsx(
764
+ QuotaExhaustedDialog,
735
765
  {
736
- fallback: () => /* @__PURE__ */ jsxs("div", { className: "flex h-full flex-col items-center justify-center gap-3 p-8 text-center", children: [
737
- /* @__PURE__ */ jsx("p", { className: "text-sm text-muted-foreground", children: "Something went wrong rendering this template preview." }),
738
- /* @__PURE__ */ jsx(Button, { variant: "outline", onClick: backToTemplates, children: "Back to templates" })
739
- ] }),
740
- children: loading ? /* @__PURE__ */ jsxs("div", { className: "flex h-full items-center justify-center gap-2 text-sm text-muted-foreground", children: [
741
- /* @__PURE__ */ jsx(Icon, { icon: "svg-spinners:ring-resize", className: "size-4" }),
742
- "Loading preview\u2026"
743
- ] }) : error ? /* @__PURE__ */ jsxs("div", { className: "flex h-full flex-col items-center justify-center gap-3 p-8 text-center", children: [
744
- /* @__PURE__ */ jsx(
745
- Icon,
746
- {
747
- icon: "mdi:alert-circle-outline",
748
- className: "size-8 text-muted-foreground"
749
- }
750
- ),
751
- /* @__PURE__ */ jsx("p", { className: "text-sm text-muted-foreground", children: error }),
752
- /* @__PURE__ */ jsx(Button, { variant: "outline", onClick: backToTemplates, children: "Back to templates" })
753
- ] }) : workflow ? /* @__PURE__ */ jsx(FlowBuilderPage, { workflow, readOnly: true }) : null
766
+ open: showQuotaExhausted,
767
+ onOpenChange: setShowQuotaExhausted,
768
+ onUpgrade: () => {
769
+ setShowQuotaExhausted(false);
770
+ navigate("/billing");
771
+ }
754
772
  }
755
- ) })
756
- ] }) });
773
+ )
774
+ ] });
757
775
  }
758
776
  function WorkflowEmbedPage({
759
777
  globalGraphqlUrl
@@ -5528,6 +5546,7 @@ function TemplatesPage() {
5528
5546
  const [activeCategory, setActiveCategory] = useState("all");
5529
5547
  const [duplicatingId, setDuplicatingId] = useState(null);
5530
5548
  const [activeSource, setActiveSource] = useState("store");
5549
+ const [showQuotaExhausted, setShowQuotaExhausted] = useState(false);
5531
5550
  const { workflows, loading, error, refetch } = useWorkflowDefinitions({
5532
5551
  status: "ACTIVE" /* Active */,
5533
5552
  limit: 100
@@ -5601,8 +5620,13 @@ function TemplatesPage() {
5601
5620
  );
5602
5621
  }
5603
5622
  } catch (err) {
5604
- toast.error("Failed to create workflow from template");
5605
- console.error("[TemplatesPage] Error duplicating workflow:", err);
5623
+ const cause = err instanceof Error ? err.cause : void 0;
5624
+ if (isQuotaExhaustedError(cause) || isQuotaExhaustedError(err)) {
5625
+ setShowQuotaExhausted(true);
5626
+ } else {
5627
+ toast.error("Failed to create workflow from template");
5628
+ console.error("[TemplatesPage] Error duplicating workflow:", err);
5629
+ }
5606
5630
  } finally {
5607
5631
  setDuplicatingId(null);
5608
5632
  }
@@ -5634,6 +5658,8 @@ function TemplatesPage() {
5634
5658
  navigate(
5635
5659
  `../workflow/${result.workflow.workflowKey}/${result.workflow.version}`
5636
5660
  );
5661
+ } else if (isQuotaExhaustedError(result.error?.cause ?? result.error)) {
5662
+ setShowQuotaExhausted(true);
5637
5663
  } else {
5638
5664
  toast.error("Failed to import template", {
5639
5665
  description: result.message
@@ -5789,7 +5815,18 @@ function TemplatesPage() {
5789
5815
  }
5790
5816
  ) })
5791
5817
  ] })
5792
- ] })
5818
+ ] }),
5819
+ /* @__PURE__ */ jsx(
5820
+ QuotaExhaustedDialog,
5821
+ {
5822
+ open: showQuotaExhausted,
5823
+ onOpenChange: setShowQuotaExhausted,
5824
+ onUpgrade: () => {
5825
+ setShowQuotaExhausted(false);
5826
+ navigate("/billing");
5827
+ }
5828
+ }
5829
+ )
5793
5830
  ] });
5794
5831
  }
5795
5832
  var NODE_ENDPOINT_CONFIGS = NodeEndpointConfigsDocument;