@burdenoff/fluidgrids-fe-sdk 2026.803.3 → 2026.804.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.
Files changed (42) hide show
  1. package/dist/ExecutionDetailPage-FCY3S336.js +1 -1
  2. package/dist/ExecutionsListPage-IZJPACQV.js +8 -0
  3. package/dist/{ExecutionsListPage-5S7FYMT3.js.map → ExecutionsListPage-IZJPACQV.js.map} +1 -1
  4. package/dist/MissingNodesInstallModal-OT3LJZ4M.js +184 -0
  5. package/dist/MissingNodesInstallModal-OT3LJZ4M.js.map +1 -0
  6. package/dist/{TemplateConfigurationModal-MTR7VP6G.js → TemplateConfigurationModal-7OT6QBEA.js} +4 -3
  7. package/dist/TemplateConfigurationModal-7OT6QBEA.js.map +1 -0
  8. package/dist/WorkflowBuilder-42S2S3PO.js +16 -0
  9. package/dist/{WorkflowBuilder-UVG6GJ6F.js.map → WorkflowBuilder-42S2S3PO.js.map} +1 -1
  10. package/dist/WorkflowsList-L7EJW54K.js +10 -0
  11. package/dist/{WorkflowsList-HNXWE56Q.js.map → WorkflowsList-L7EJW54K.js.map} +1 -1
  12. package/dist/{chunk-MRVS73S2.js → chunk-BRMURCHH.js} +4 -22
  13. package/dist/chunk-BRMURCHH.js.map +1 -0
  14. package/dist/{chunk-WWKY5CJ4.js → chunk-CN3VSAYR.js} +11349 -419
  15. package/dist/chunk-CN3VSAYR.js.map +1 -0
  16. package/dist/{chunk-3CIPVKE4.js → chunk-CQAHXNT2.js} +3 -3
  17. package/dist/{chunk-3CIPVKE4.js.map → chunk-CQAHXNT2.js.map} +1 -1
  18. package/dist/{chunk-ZM4SSEVI.js → chunk-JPHK5LAL.js} +195 -3
  19. package/dist/chunk-JPHK5LAL.js.map +1 -0
  20. package/dist/{chunk-WZBJIBUX.js → chunk-MH4AHYK3.js} +3 -3
  21. package/dist/{chunk-WZBJIBUX.js.map → chunk-MH4AHYK3.js.map} +1 -1
  22. package/dist/chunk-P5PKRQAO.js +25 -0
  23. package/dist/chunk-P5PKRQAO.js.map +1 -0
  24. package/dist/{chunk-FIREEQYQ.js → chunk-S7FNNFPU.js} +23 -6
  25. package/dist/chunk-S7FNNFPU.js.map +1 -0
  26. package/dist/index.js +108 -73
  27. package/dist/index.js.map +1 -1
  28. package/package.json +1 -1
  29. package/dist/ExecutionsListPage-5S7FYMT3.js +0 -8
  30. package/dist/TemplateConfigurationModal-MTR7VP6G.js.map +0 -1
  31. package/dist/WorkflowBuilder-UVG6GJ6F.js +0 -17
  32. package/dist/WorkflowsList-HNXWE56Q.js +0 -11
  33. package/dist/blocks-LFAFGFT4.js +0 -11
  34. package/dist/blocks-LFAFGFT4.js.map +0 -1
  35. package/dist/chunk-CN6MX457.js +0 -10897
  36. package/dist/chunk-CN6MX457.js.map +0 -1
  37. package/dist/chunk-F2CI6H7E.js +0 -177
  38. package/dist/chunk-F2CI6H7E.js.map +0 -1
  39. package/dist/chunk-FIREEQYQ.js.map +0 -1
  40. package/dist/chunk-MRVS73S2.js.map +0 -1
  41. package/dist/chunk-WWKY5CJ4.js.map +0 -1
  42. package/dist/chunk-ZM4SSEVI.js.map +0 -1
package/dist/index.js CHANGED
@@ -1,26 +1,21 @@
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';
4
- import { Input as Input$1 } from './chunk-MRVS73S2.js';
5
- export { Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, Input } from './chunk-MRVS73S2.js';
6
- import { Button as Button$1 } from './chunk-DBOMRIP5.js';
7
- export { Badge, Button, badgeVariants, buttonVariants } from './chunk-DBOMRIP5.js';
8
- export { ExecutionsListPage } from './chunk-3CIPVKE4.js';
2
+ import { FluidGridsProvider, useImportWorkflowTemplate, FlowBuilderPage, useWorkflowTemplates, TemplateCard, Card } from './chunk-CN3VSAYR.js';
3
+ export { Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, ConfigSchemaForm, ConnectionFormDialog, ConnectionSelector, EntityTagPicker, FluidGridsProvider, ProviderPicker, WorkflowBuilder as WorkflowBuilderPage, getProviderForm, listCustomBlocks, refetchStoreNodes, registerCustomBlock, resolveUiSpec, stripSubmitActions, useConnection, useConnectionDialog, useConnections, useConnectionsByProvider, useCreateConnection, useFluidGridsContext, useInitiateOAuth, useNodeExecution, useProviderByKey, useProviderCatalog, useProviders } from './chunk-CN3VSAYR.js';
4
+ import { Input as Input$1 } from './chunk-P5PKRQAO.js';
5
+ export { Input } from './chunk-P5PKRQAO.js';
6
+ export { Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger } from './chunk-BRMURCHH.js';
7
+ export { ExecutionsListPage } from './chunk-CQAHXNT2.js';
9
8
  export { ExecutionDetailPage } from './chunk-F5ACDIYR.js';
10
9
  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';
12
10
  import { createGlobalStoreClient } from './chunk-BQXHJIER.js';
13
11
  export { createGlobalStoreClient, getGlobalStoreClient, resetGlobalStoreClient, setGlobalStoreClient } from './chunk-BQXHJIER.js';
14
12
  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';
19
- import { useFlowStore } from './chunk-ZM4SSEVI.js';
20
- export { useFlowStore } from './chunk-ZM4SSEVI.js';
13
+ export { WorkflowsList } from './chunk-S7FNNFPU.js';
14
+ import { QuotaExhaustedDialog, useFlowStore } from './chunk-JPHK5LAL.js';
15
+ export { FLUIDGRIDS_ENTITY_TYPES, tagLabel, useAvailableTags, useCreateTag, useDraftEntityTags, useEntityTags, useFlowStore, useReplaceEntityTags, useSearchTags, useTagEntity, useUntagEntity } from './chunk-JPHK5LAL.js';
16
+ import { useWorkflowDefinition, useWorkflowDefinitions, useDuplicateWorkflow } from './chunk-MH4AHYK3.js';
17
+ export { useActivateWorkflow, useCreateWorkflow, useCreateWorkflowVersion, useDashboardSummary, useDeactivateWorkflow, useDeleteWorkflow, useDuplicateWorkflow, useLazyWorkflowDefinition, useRestoreWorkflowVersion, useTriggerWorkflow, useUpdateWorkflow, useWorkflowDefinition, useWorkflowDefinitions, useWorkflowRun, useWorkflowRuns, useWorkflowVersions } from './chunk-MH4AHYK3.js';
21
18
  export { ALLOW_ALL_PERMISSIONS, FLUIDGRIDS_PERMISSIONS, FluidGridsPermissionsProvider, SdkPermissionButton, SdkPermissionGate, Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, evaluatePermissionCheck, useFluidGridsPermission } from './chunk-UIY2HBWA.js';
22
- import { cn } from './chunk-3ZYUGTIT.js';
23
- export { cn } from './chunk-3ZYUGTIT.js';
24
19
  import { NodeEndpointConfigsDocument, NodeEndpointConfigDocument, NodeManifestDocument } from './chunk-V5UEEB74.js';
25
20
  export { ActivateWorkflowDefinitionDocument, ActiveExecutionsDocument, AvailableFluidgridsTagsDocument, CancelExecutionDocument, CreateFluidgridsTagDocument, CreateWorkflowDefinitionDocument, CreateWorkflowVersionDocument, DashboardSummaryDocument, DeactivateWorkflowDefinitionDocument, DeleteWorkflowDefinitionDocument, DuplicateWorkflowDocument, EventRegistrationsDocument, ExecutionDetailDocument, ExecutionLogsDocument, ExecutionStatsDocument, ExecutionsListDocument, FluidgridsAvailableTagFieldsFragmentDoc, FluidgridsEntityTagsDocument, FluidgridsTagAssignmentFieldsFragmentDoc, ImportWorkflowTemplateDocument, NodeEndpointConfigDocument, NodeEndpointConfigsDocument, NodeManifestDocument, NodeSchemaIntrospectionDocument, NodeStatesDocument, NodeUsageStatusDocument, PauseExecutionDocument, RegisterNodeDocument, RemoveNodeFromWorkflowsDocument, ReplaceFluidgridsEntityTagsDocument, RestoreWorkflowVersionDocument, ResumeExecutionDocument, RetryNodeDocument, RunLogAppendedDocument, RunLogLineFieldsFragmentDoc, RunLogsDocument, SearchFluidgridsTagsDocument, TagFluidgridsEntityDocument, TerminateExecutionDocument, TriggerWorkflowDocument, UntagFluidgridsEntityDocument, UpdateWorkflowDefinitionDocument, UsageTimeSeriesDocument, WorkflowDefinitionDocument, WorkflowDefinitionsDocument, WorkflowDefinitionsTagsDocument, WorkflowRunDocument, WorkflowRunsDocument, WorkflowVersionsDocument, describeOperationError, throwIfResultError, useActivateWorkflowDefinitionMutation, useActiveExecutionsLazyQuery, useActiveExecutionsQuery, useActiveExecutionsSuspenseQuery, useAvailableFluidgridsTagsLazyQuery, useAvailableFluidgridsTagsQuery, useAvailableFluidgridsTagsSuspenseQuery, useCancelExecutionMutation, useCreateFluidgridsTagMutation, useCreateWorkflowDefinitionMutation, useCreateWorkflowVersionMutation, useDashboardSummaryLazyQuery, useDashboardSummaryQuery, useDashboardSummarySuspenseQuery, useDeactivateWorkflowDefinitionMutation, useDeleteWorkflowDefinitionMutation, useDuplicateWorkflowMutation, useEventRegistrationsLazyQuery, useEventRegistrationsQuery, useEventRegistrationsSuspenseQuery, useExecutionDetailLazyQuery, useExecutionDetailQuery, useExecutionDetailSuspenseQuery, useExecutionLogsLazyQuery, useExecutionLogsQuery, useExecutionLogsSuspenseQuery, useExecutionStatsLazyQuery, useExecutionStatsQuery, useExecutionStatsSuspenseQuery, useExecutionsListLazyQuery, useExecutionsListQuery, useExecutionsListSuspenseQuery, useFluidgridsEntityTagsLazyQuery, useFluidgridsEntityTagsQuery, useFluidgridsEntityTagsSuspenseQuery, useImportWorkflowTemplateMutation, useNodeEndpointConfigLazyQuery, useNodeEndpointConfigQuery, useNodeEndpointConfigSuspenseQuery, useNodeEndpointConfigsLazyQuery, useNodeEndpointConfigsQuery, useNodeEndpointConfigsSuspenseQuery, useNodeManifestLazyQuery, useNodeManifestQuery, useNodeManifestSuspenseQuery, useNodeSchemaIntrospectionLazyQuery, useNodeSchemaIntrospectionQuery, useNodeSchemaIntrospectionSuspenseQuery, useNodeStatesLazyQuery, useNodeStatesQuery, useNodeStatesSuspenseQuery, useNodeUsageStatusLazyQuery, useNodeUsageStatusQuery, useNodeUsageStatusSuspenseQuery, usePauseExecutionMutation, useRegisterNodeMutation, useRemoveNodeFromWorkflowsMutation, useReplaceFluidgridsEntityTagsMutation, useRestoreWorkflowVersionMutation, useResumeExecutionMutation, useRetryNodeMutation, useRunLogAppendedSubscription, useRunLogsLazyQuery, useRunLogsQuery, useRunLogsSuspenseQuery, useSearchFluidgridsTagsLazyQuery, useSearchFluidgridsTagsQuery, useSearchFluidgridsTagsSuspenseQuery, useTagFluidgridsEntityMutation, useTerminateExecutionMutation, useTriggerWorkflowMutation, useUntagFluidgridsEntityMutation, useUpdateWorkflowDefinitionMutation, useUsageTimeSeriesLazyQuery, useUsageTimeSeriesQuery, useUsageTimeSeriesSuspenseQuery, useWorkflowDefinitionLazyQuery, useWorkflowDefinitionQuery, useWorkflowDefinitionSuspenseQuery, useWorkflowDefinitionsLazyQuery, useWorkflowDefinitionsQuery, useWorkflowDefinitionsSuspenseQuery, useWorkflowDefinitionsTagsLazyQuery, useWorkflowDefinitionsTagsQuery, useWorkflowDefinitionsTagsSuspenseQuery, useWorkflowRunLazyQuery, useWorkflowRunQuery, useWorkflowRunSuspenseQuery, useWorkflowRunsLazyQuery, useWorkflowRunsQuery, useWorkflowRunsSuspenseQuery, useWorkflowVersionsLazyQuery, useWorkflowVersionsQuery, useWorkflowVersionsSuspenseQuery } from './chunk-V5UEEB74.js';
26
21
  import { getFluidGridsClient, createFluidGridsClient } from './chunk-5BDQNSP3.js';
@@ -28,6 +23,10 @@ export { createFluidGridsClient, getFluidGridsClient, getFluidGridsClientSafe, i
28
23
  import { getFluidGridsConfig } from './chunk-WWU2O2SR.js';
29
24
  export { config, getFluidGridsConfig, getGraphQLEndpoint, resetFluidGridsConfig, setFluidGridsConfig } from './chunk-WWU2O2SR.js';
30
25
  import './chunk-XQP33UJR.js';
26
+ import { Button as Button$1 } from './chunk-DBOMRIP5.js';
27
+ export { Badge, Button, badgeVariants, buttonVariants } from './chunk-DBOMRIP5.js';
28
+ import { cn } from './chunk-3ZYUGTIT.js';
29
+ export { cn } from './chunk-3ZYUGTIT.js';
31
30
  import * as React4 from 'react';
32
31
  import { lazy, Suspense, useState, useEffect, useMemo, useCallback, useRef } from 'react';
33
32
  import { Routes, Route, Navigate, useParams, useNavigate } from 'react-router';
@@ -41,6 +40,7 @@ import { toast, Toaster as Toaster$1 } from 'sonner';
41
40
  import { Icon } from '@iconify/react';
42
41
  import { Button } from '@burdenoff/fe-libs/button';
43
42
  import { ErrorBoundary } from '@burdenoff/fe-libs/shared/components';
43
+ import { isQuotaExhaustedError } from '@burdenoff/fe-libs/shared/utils';
44
44
  import { ThemeProvider as ThemeProvider$1 } from '@burdenoff/fe-libs/shared/providers/shell';
45
45
  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
46
  import { useActorProfiles, buildActorFallback } from '@burdenoff/fe-libs/shared';
@@ -55,15 +55,15 @@ import * as SwitchPrimitives from '@radix-ui/react-switch';
55
55
  import * as PopoverPrimitive from '@radix-ui/react-popover';
56
56
 
57
57
  var WorkflowsList2 = lazy(
58
- () => import('./WorkflowsList-HNXWE56Q.js').then((m) => ({ default: m.WorkflowsList }))
58
+ () => import('./WorkflowsList-L7EJW54K.js').then((m) => ({ default: m.WorkflowsList }))
59
59
  );
60
60
  var WorkflowBuilder2 = lazy(
61
- () => import('./WorkflowBuilder-UVG6GJ6F.js').then((m) => ({
61
+ () => import('./WorkflowBuilder-42S2S3PO.js').then((m) => ({
62
62
  default: m.WorkflowBuilder
63
63
  }))
64
64
  );
65
65
  var ExecutionsListPage2 = lazy(
66
- () => import('./ExecutionsListPage-5S7FYMT3.js').then((m) => ({
66
+ () => import('./ExecutionsListPage-IZJPACQV.js').then((m) => ({
67
67
  default: m.ExecutionsListPage
68
68
  }))
69
69
  );
@@ -603,6 +603,7 @@ function TemplatePreview() {
603
603
  const [loading, setLoading] = useState(true);
604
604
  const [error, setError] = useState(null);
605
605
  const [importing, setImporting] = useState(false);
606
+ const [showQuotaExhausted, setShowQuotaExhausted] = useState(false);
606
607
  const workflowsBase = window.location.pathname.replace(
607
608
  /\/templates(\/.*)?$/,
608
609
  ""
@@ -677,6 +678,8 @@ function TemplatePreview() {
677
678
  navigate(
678
679
  `${workflowsBase}/workflow/${result.workflow.workflowKey}/${result.workflow.version}`
679
680
  );
681
+ } else if (isQuotaExhaustedError(result.error?.cause ?? result.error)) {
682
+ setShowQuotaExhausted(true);
680
683
  } else {
681
684
  toast.error("Failed to use template", { description: result.message });
682
685
  }
@@ -690,70 +693,83 @@ function TemplatePreview() {
690
693
  }
691
694
  };
692
695
  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",
696
+ return /* @__PURE__ */ jsxs(ThemeProvider, { children: [
697
+ /* @__PURE__ */ jsxs("div", { className: "flex h-full w-full flex-col overflow-hidden", children: [
698
+ /* @__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: [
699
+ /* @__PURE__ */ jsxs("div", { className: "flex min-w-0 items-center gap-2", children: [
700
+ /* @__PURE__ */ jsx(
701
+ "button",
702
+ {
703
+ type: "button",
704
+ onClick: backToTemplates,
705
+ title: "Back to templates",
706
+ className: "flex size-9 shrink-0 items-center justify-center rounded-md text-card-foreground transition-colors hover:bg-card-foreground/10",
707
+ children: /* @__PURE__ */ jsx(Icon, { icon: "ion:arrow-back-outline", className: "size-5" })
708
+ }
709
+ ),
710
+ /* @__PURE__ */ jsxs("div", { className: "min-w-0", children: [
711
+ /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", children: [
712
+ /* @__PURE__ */ jsx("span", { className: "truncate text-sm font-semibold text-card-foreground", children: workflow?.name ?? template?.name ?? "Template preview" }),
713
+ /* @__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" })
714
+ ] }),
715
+ template?.description ? /* @__PURE__ */ jsx("span", { className: "block truncate text-xs text-muted-foreground", children: template.description }) : null
716
+ ] })
717
+ ] }),
718
+ /* @__PURE__ */ jsxs(
719
+ Button,
698
720
  {
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" })
721
+ onClick: handleUse,
722
+ disabled: importing || !template,
723
+ className: "shrink-0 gap-2",
724
+ children: [
725
+ /* @__PURE__ */ jsx(
726
+ Icon,
727
+ {
728
+ icon: importing ? "svg-spinners:ring-resize" : "mdi:plus",
729
+ className: "size-4"
730
+ }
731
+ ),
732
+ "Use this template"
733
+ ]
704
734
  }
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
- ] })
735
+ )
713
736
  ] }),
714
- /* @__PURE__ */ jsxs(
715
- Button,
737
+ /* @__PURE__ */ jsx("div", { className: "relative min-h-0 w-full flex-1", children: /* @__PURE__ */ jsx(
738
+ ErrorBoundary,
716
739
  {
717
- onClick: handleUse,
718
- disabled: importing || !template,
719
- className: "shrink-0 gap-2",
720
- children: [
740
+ fallback: () => /* @__PURE__ */ jsxs("div", { className: "flex h-full flex-col items-center justify-center gap-3 p-8 text-center", children: [
741
+ /* @__PURE__ */ jsx("p", { className: "text-sm text-muted-foreground", children: "Something went wrong rendering this template preview." }),
742
+ /* @__PURE__ */ jsx(Button, { variant: "outline", onClick: backToTemplates, children: "Back to templates" })
743
+ ] }),
744
+ children: loading ? /* @__PURE__ */ jsxs("div", { className: "flex h-full items-center justify-center gap-2 text-sm text-muted-foreground", children: [
745
+ /* @__PURE__ */ jsx(Icon, { icon: "svg-spinners:ring-resize", className: "size-4" }),
746
+ "Loading preview\u2026"
747
+ ] }) : error ? /* @__PURE__ */ jsxs("div", { className: "flex h-full flex-col items-center justify-center gap-3 p-8 text-center", children: [
721
748
  /* @__PURE__ */ jsx(
722
749
  Icon,
723
750
  {
724
- icon: importing ? "svg-spinners:ring-resize" : "mdi:plus",
725
- className: "size-4"
751
+ icon: "mdi:alert-circle-outline",
752
+ className: "size-8 text-muted-foreground"
726
753
  }
727
754
  ),
728
- "Use this template"
729
- ]
755
+ /* @__PURE__ */ jsx("p", { className: "text-sm text-muted-foreground", children: error }),
756
+ /* @__PURE__ */ jsx(Button, { variant: "outline", onClick: backToTemplates, children: "Back to templates" })
757
+ ] }) : workflow ? /* @__PURE__ */ jsx(FlowBuilderPage, { workflow, readOnly: true }) : null
730
758
  }
731
- )
759
+ ) })
732
760
  ] }),
733
- /* @__PURE__ */ jsx("div", { className: "relative min-h-0 w-full flex-1", children: /* @__PURE__ */ jsx(
734
- ErrorBoundary,
761
+ /* @__PURE__ */ jsx(
762
+ QuotaExhaustedDialog,
735
763
  {
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
764
+ open: showQuotaExhausted,
765
+ onOpenChange: setShowQuotaExhausted,
766
+ onUpgrade: () => {
767
+ setShowQuotaExhausted(false);
768
+ navigate("/billing");
769
+ }
754
770
  }
755
- ) })
756
- ] }) });
771
+ )
772
+ ] });
757
773
  }
758
774
  function WorkflowEmbedPage({
759
775
  globalGraphqlUrl
@@ -5528,6 +5544,7 @@ function TemplatesPage() {
5528
5544
  const [activeCategory, setActiveCategory] = useState("all");
5529
5545
  const [duplicatingId, setDuplicatingId] = useState(null);
5530
5546
  const [activeSource, setActiveSource] = useState("store");
5547
+ const [showQuotaExhausted, setShowQuotaExhausted] = useState(false);
5531
5548
  const { workflows, loading, error, refetch } = useWorkflowDefinitions({
5532
5549
  status: "ACTIVE" /* Active */,
5533
5550
  limit: 100
@@ -5601,8 +5618,13 @@ function TemplatesPage() {
5601
5618
  );
5602
5619
  }
5603
5620
  } catch (err) {
5604
- toast.error("Failed to create workflow from template");
5605
- console.error("[TemplatesPage] Error duplicating workflow:", err);
5621
+ const cause = err instanceof Error ? err.cause : void 0;
5622
+ if (isQuotaExhaustedError(cause) || isQuotaExhaustedError(err)) {
5623
+ setShowQuotaExhausted(true);
5624
+ } else {
5625
+ toast.error("Failed to create workflow from template");
5626
+ console.error("[TemplatesPage] Error duplicating workflow:", err);
5627
+ }
5606
5628
  } finally {
5607
5629
  setDuplicatingId(null);
5608
5630
  }
@@ -5634,6 +5656,8 @@ function TemplatesPage() {
5634
5656
  navigate(
5635
5657
  `../workflow/${result.workflow.workflowKey}/${result.workflow.version}`
5636
5658
  );
5659
+ } else if (isQuotaExhaustedError(result.error?.cause ?? result.error)) {
5660
+ setShowQuotaExhausted(true);
5637
5661
  } else {
5638
5662
  toast.error("Failed to import template", {
5639
5663
  description: result.message
@@ -5789,7 +5813,18 @@ function TemplatesPage() {
5789
5813
  }
5790
5814
  ) })
5791
5815
  ] })
5792
- ] })
5816
+ ] }),
5817
+ /* @__PURE__ */ jsx(
5818
+ QuotaExhaustedDialog,
5819
+ {
5820
+ open: showQuotaExhausted,
5821
+ onOpenChange: setShowQuotaExhausted,
5822
+ onUpgrade: () => {
5823
+ setShowQuotaExhausted(false);
5824
+ navigate("/billing");
5825
+ }
5826
+ }
5827
+ )
5793
5828
  ] });
5794
5829
  }
5795
5830
  var NODE_ENDPOINT_CONFIGS = NodeEndpointConfigsDocument;