@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
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/hooks/useWorkflows.ts"],"names":[],"mappings":"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","file":"chunk-WZBJIBUX.js","sourcesContent":["import { useState, useEffect, useCallback } from \"react\";\nimport { getFluidGridsClient } from \"../graphql/client\";\nimport { getFluidGridsConfig } from \"../config\";\nimport {\n WorkflowDefinitionsDocument,\n WorkflowDefinitionDocument,\n WorkflowVersionsDocument,\n CreateWorkflowDefinitionDocument,\n UpdateWorkflowDefinitionDocument,\n CreateWorkflowVersionDocument,\n DeleteWorkflowDefinitionDocument,\n DuplicateWorkflowDocument,\n TriggerWorkflowDocument,\n WorkflowRunsDocument,\n WorkflowRunDocument,\n DashboardSummaryDocument,\n RestoreWorkflowVersionDocument,\n ActivateWorkflowDefinitionDocument,\n DeactivateWorkflowDefinitionDocument,\n} from \"../generated/operations\";\nimport type {\n ActivateWorkflowDefinitionMutation,\n DeactivateWorkflowDefinitionMutation,\n} from \"../generated/operations\";\nimport type {\n WorkflowDefinition,\n ListWorkflowDefinitionsInput,\n CreateWorkflowDefinitionInput,\n UpdateWorkflowDefinitionInput,\n TriggerWorkflowInput,\n} from \"../generated/graphql-types\";\n\nimport { throwIfResultError } from \"../graphql/errors\";\n\n// Alias for backward compatibility\nconst WORKFLOW_DEFINITIONS = WorkflowDefinitionsDocument;\nconst WORKFLOW_DEFINITION = WorkflowDefinitionDocument;\nconst WORKFLOW_VERSIONS = WorkflowVersionsDocument;\nconst CREATE_WORKFLOW_DEFINITION = CreateWorkflowDefinitionDocument;\nconst UPDATE_WORKFLOW_DEFINITION = UpdateWorkflowDefinitionDocument;\nconst CREATE_WORKFLOW_VERSION = CreateWorkflowVersionDocument;\nconst DELETE_WORKFLOW_DEFINITION = DeleteWorkflowDefinitionDocument;\nconst DUPLICATE_WORKFLOW = DuplicateWorkflowDocument;\nconst TRIGGER_WORKFLOW = TriggerWorkflowDocument;\nconst WORKFLOW_RUNS = WorkflowRunsDocument;\nconst WORKFLOW_RUN = WorkflowRunDocument;\nconst DASHBOARD_SUMMARY = DashboardSummaryDocument;\nconst RESTORE_WORKFLOW_VERSION = RestoreWorkflowVersionDocument;\n\n// ============================================================================\n// Workflow Definition Hooks\n// ============================================================================\n\ninterface WorkflowDefinitionsData {\n workflowDefinitions: {\n items: WorkflowDefinition[];\n total: number;\n hasMore: boolean;\n };\n}\n\ninterface WorkflowDefinitionData {\n workflowDefinition: WorkflowDefinition | null;\n}\n\ninterface WorkflowVersionsData {\n workflowVersions: WorkflowDefinition[];\n}\n\n/**\n * Check if an error is Apollo's \"Store reset while query was in flight\" error (error 89)\n * This happens when the shell's MultiGatewayProvider cleans up during re-renders\n */\nfunction isStoreResetError(err: unknown): boolean {\n if (err instanceof Error) {\n // Check for error 89 in the message URL or error text\n return (\n err.message.includes(\"message%22%3A89\") ||\n err.message.includes(\"Store reset while query was in flight\")\n );\n }\n return false;\n}\n\n/**\n * Hook to fetch list of workflow definitions\n * Uses Apollo Client with the WORKFLOW_DEFINITIONS query\n * Automatically filters by productId if configured\n */\nexport function useWorkflowDefinitions(\n input: ListWorkflowDefinitionsInput = {},\n) {\n const [workflows, setWorkflows] = useState<WorkflowDefinition[]>([]);\n const [total, setTotal] = useState(0);\n const [hasMore, setHasMore] = useState(false);\n const [loading, setLoading] = useState(true);\n const [error, setError] = useState<Error | null>(null);\n const [retryCount, setRetryCount] = useState(0);\n\n // Add productId filter if configured\n const config = getFluidGridsConfig();\n const inputWithProductFilter = {\n ...input,\n customFilters: {\n ...(input.customFilters || {}),\n ...(config.productId ? { productId: config.productId } : {}),\n },\n };\n\n // Stringify input to use as stable dependency\n const inputKey = JSON.stringify(inputWithProductFilter);\n\n const fetchData = useCallback(\n async (isRetry = false) => {\n setLoading(true);\n setError(null);\n try {\n const client = getFluidGridsClient();\n const result = await client.query<WorkflowDefinitionsData>({\n query: WORKFLOW_DEFINITIONS,\n variables: { input: JSON.parse(inputKey) },\n fetchPolicy: \"network-only\",\n });\n setWorkflows(result.data?.workflowDefinitions?.items ?? []);\n setTotal(result.data?.workflowDefinitions?.total ?? 0);\n setHasMore(result.data?.workflowDefinitions?.hasMore ?? false);\n // Reset retry count on success\n if (isRetry) setRetryCount(0);\n } catch (err) {\n // Handle Apollo error 89 \"Store reset while query was in flight\"\n // This occurs when shell's MultiGatewayProvider cleans up during re-renders\n // Retry after a short delay to allow client to stabilize\n if (isStoreResetError(err)) {\n console.warn(\n \"[useWorkflowDefinitions] Store reset error - will retry\",\n );\n if (retryCount < 3) {\n setRetryCount((prev) => prev + 1);\n // Don't set loading to false, will retry\n return;\n }\n console.warn(\"[useWorkflowDefinitions] Max retries reached\");\n }\n console.error(\"[useWorkflowDefinitions] Error:\", err);\n setError(err as Error);\n } finally {\n setLoading(false);\n }\n },\n [inputKey, retryCount],\n );\n\n // Initial fetch and retry on store reset\n useEffect(() => {\n fetchData(retryCount > 0);\n }, [fetchData, retryCount]);\n\n // Retry with delay when retryCount increases\n useEffect(() => {\n if (retryCount > 0 && retryCount <= 3) {\n const timer = setTimeout(() => {\n fetchData(true);\n }, 500 * retryCount); // Exponential backoff: 500ms, 1000ms, 1500ms\n return () => clearTimeout(timer);\n }\n }, [retryCount, fetchData]);\n\n return {\n workflows,\n total,\n hasMore,\n loading,\n error,\n refetch: () => fetchData(false),\n };\n}\n\n/**\n * Hook to fetch a single workflow definition\n */\nexport function useWorkflowDefinition(workflowKey?: string, id?: string) {\n const [workflow, setWorkflow] = useState<WorkflowDefinition | null>(null);\n const [loading, setLoading] = useState(true);\n const [error, setError] = useState<Error | null>(null);\n\n const fetchData = useCallback(async () => {\n if (!workflowKey && !id) {\n setLoading(false);\n return;\n }\n\n setLoading(true);\n setError(null);\n try {\n const client = getFluidGridsClient();\n const result = await client.query<WorkflowDefinitionData>({\n query: WORKFLOW_DEFINITION,\n variables: { workflowKey, id },\n fetchPolicy: \"cache-first\",\n });\n setWorkflow(result.data?.workflowDefinition ?? null);\n } catch (err) {\n setError(err as Error);\n } finally {\n setLoading(false);\n }\n }, [workflowKey, id]);\n\n useEffect(() => {\n fetchData();\n }, [fetchData]);\n\n return {\n workflow,\n loading,\n error,\n refetch: fetchData,\n };\n}\n\n/**\n * Lazy hook to fetch workflow definition on demand\n */\nexport function useLazyWorkflowDefinition() {\n const [workflow, setWorkflow] = useState<WorkflowDefinition | null>(null);\n const [loading, setLoading] = useState(false);\n const [error, setError] = useState<Error | null>(null);\n\n const getWorkflow = useCallback(\n async (workflowKey?: string, id?: string, version?: string) => {\n setLoading(true);\n setError(null);\n try {\n const client = getFluidGridsClient();\n const result = await client.query<WorkflowDefinitionData>({\n query: WORKFLOW_DEFINITION,\n variables: { workflowKey, id, ...(version ? { version } : {}) },\n fetchPolicy: \"network-only\",\n });\n const data = result.data?.workflowDefinition ?? null;\n setWorkflow(data);\n return data;\n } catch (err) {\n setError(err as Error);\n return null;\n } finally {\n setLoading(false);\n }\n },\n [],\n );\n\n return {\n getWorkflow,\n workflow,\n loading,\n error,\n };\n}\n\n/**\n * Hook to fetch workflow versions\n */\nexport function useWorkflowVersions(workflowKey: string) {\n const [versions, setVersions] = useState<WorkflowDefinition[]>([]);\n const [loading, setLoading] = useState(true);\n const [error, setError] = useState<Error | null>(null);\n\n const fetchData = useCallback(async (): Promise<WorkflowDefinition[]> => {\n if (!workflowKey) {\n setLoading(false);\n return [];\n }\n\n setLoading(true);\n setError(null);\n try {\n const client = getFluidGridsClient();\n const result = await client.query<WorkflowVersionsData>({\n query: WORKFLOW_VERSIONS,\n variables: { workflowKey },\n fetchPolicy: \"network-only\",\n });\n const fetched = result.data?.workflowVersions ?? [];\n setVersions(fetched);\n return fetched;\n } catch (err) {\n setError(err as Error);\n return [];\n } finally {\n setLoading(false);\n }\n }, [workflowKey]);\n\n useEffect(() => {\n fetchData();\n }, [fetchData]);\n\n return {\n versions,\n loading,\n error,\n refetch: fetchData,\n };\n}\n\n// ============================================================================\n// Workflow Mutation Hooks\n// ============================================================================\n\ninterface CreateWorkflowData {\n createWorkflowDefinition: WorkflowDefinition;\n}\n\ninterface UpdateWorkflowData {\n updateWorkflowDefinition: WorkflowDefinition;\n}\n\ninterface CreateVersionData {\n createWorkflowVersion: {\n success: boolean;\n message?: string;\n workflow?: WorkflowDefinition;\n };\n}\n\ninterface DuplicateWorkflowData {\n duplicateWorkflow: {\n success: boolean;\n message?: string;\n workflow?: WorkflowDefinition;\n };\n}\n\ninterface TriggerWorkflowData {\n triggerWorkflow: {\n runId: string;\n workflowKey: string;\n version: string;\n triggerNodeId: string;\n status: string;\n };\n}\n\n/**\n * Hook to create a new workflow definition\n * Automatically adds productId and productName to context if configured\n */\nexport function useCreateWorkflow() {\n const [workflow, setWorkflow] = useState<WorkflowDefinition | null>(null);\n const [loading, setLoading] = useState(false);\n const [error, setError] = useState<Error | null>(null);\n\n const createWorkflow = useCallback(\n async (input: CreateWorkflowDefinitionInput) => {\n setLoading(true);\n setError(null);\n try {\n const config = getFluidGridsConfig();\n\n // Add productId to context for product-level isolation\n const inputWithProductContext = {\n ...input,\n context: {\n ...(input.context || {}),\n ...(config.productId ? { productId: config.productId } : {}),\n ...(config.productName ? { productName: config.productName } : {}),\n },\n };\n\n const client = getFluidGridsClient();\n const result = throwIfResultError(\n await client.mutate<CreateWorkflowData>({\n mutation: CREATE_WORKFLOW_DEFINITION,\n variables: { input: inputWithProductContext },\n refetchQueries: [\"WorkflowDefinitions\"],\n }),\n );\n const data = result.data?.createWorkflowDefinition ?? null;\n setWorkflow(data);\n return data;\n } catch (err) {\n setError(err as Error);\n return null;\n } finally {\n setLoading(false);\n }\n },\n [],\n );\n\n return {\n createWorkflow,\n workflow,\n loading,\n error,\n };\n}\n\n/**\n * Hook to update a workflow definition\n */\nexport function useUpdateWorkflow() {\n const [workflow, setWorkflow] = useState<WorkflowDefinition | null>(null);\n const [loading, setLoading] = useState(false);\n const [error, setError] = useState<Error | null>(null);\n\n const updateWorkflow = useCallback(\n async (id: string, input: UpdateWorkflowDefinitionInput) => {\n setLoading(true);\n setError(null);\n try {\n const client = getFluidGridsClient();\n const result = throwIfResultError(\n await client.mutate<UpdateWorkflowData>({\n mutation: UPDATE_WORKFLOW_DEFINITION,\n variables: { id, input },\n }),\n );\n const data = result.data?.updateWorkflowDefinition ?? null;\n setWorkflow(data);\n return data;\n } catch (err) {\n setError(err as Error);\n return null;\n } finally {\n setLoading(false);\n }\n },\n [],\n );\n\n return {\n updateWorkflow,\n workflow,\n loading,\n error,\n };\n}\n\n/**\n * Hook to create a new workflow version\n */\nexport function useCreateWorkflowVersion() {\n const [result, setResult] = useState<\n CreateVersionData[\"createWorkflowVersion\"] | null\n >(null);\n const [loading, setLoading] = useState(false);\n const [error, setError] = useState<Error | null>(null);\n\n const createVersion = useCallback(\n async (\n workflowKey: string,\n input: { version: string; definitionJson: unknown; description?: string },\n ) => {\n setLoading(true);\n setError(null);\n try {\n const client = getFluidGridsClient();\n const response = throwIfResultError(\n await client.mutate<CreateVersionData>({\n mutation: CREATE_WORKFLOW_VERSION,\n variables: { workflowKey, input },\n }),\n );\n const data = response.data?.createWorkflowVersion ?? null;\n setResult(data);\n return data;\n } catch (err) {\n setError(err as Error);\n return null;\n } finally {\n setLoading(false);\n }\n },\n [],\n );\n\n return {\n createVersion,\n result,\n loading,\n error,\n };\n}\n\n/**\n * Hook to delete a workflow definition.\n * - If version is provided: deletes that specific version only.\n * - If version is omitted: deletes ALL versions for the workflowKey (removes the entire workflow).\n */\nexport function useDeleteWorkflow() {\n const [loading, setLoading] = useState(false);\n const [error, setError] = useState<Error | null>(null);\n\n const deleteWorkflow = useCallback(\n async (workflowKey: string, version?: string) => {\n setLoading(true);\n setError(null);\n try {\n const client = getFluidGridsClient();\n const result = throwIfResultError(\n await client.mutate({\n mutation: DELETE_WORKFLOW_DEFINITION,\n variables: { workflowKey, ...(version ? { version } : {}) },\n refetchQueries: [\"WorkflowDefinitions\"],\n }),\n );\n return (\n (result.data as { deleteWorkflowDefinition?: boolean })\n ?.deleteWorkflowDefinition ?? false\n );\n } catch (err) {\n setError(err as Error);\n return false;\n } finally {\n setLoading(false);\n }\n },\n [],\n );\n\n return {\n deleteWorkflow,\n loading,\n error,\n };\n}\n\n/**\n * Hook to duplicate a workflow\n */\nexport function useDuplicateWorkflow() {\n const [result, setResult] = useState<\n DuplicateWorkflowData[\"duplicateWorkflow\"] | null\n >(null);\n const [loading, setLoading] = useState(false);\n const [error, setError] = useState<Error | null>(null);\n\n const duplicateWorkflow = useCallback(\n async (\n workflowKey: string,\n version: string,\n input: { newWorkflowKey: string; newVersion?: string },\n ) => {\n setLoading(true);\n setError(null);\n try {\n const client = getFluidGridsClient();\n const response = throwIfResultError(\n await client.mutate<DuplicateWorkflowData>({\n mutation: DUPLICATE_WORKFLOW,\n variables: { workflowKey, version, input },\n refetchQueries: [\"WorkflowDefinitions\"],\n }),\n );\n const data = response.data?.duplicateWorkflow ?? null;\n setResult(data);\n return data;\n } catch (err) {\n setError(err as Error);\n return null;\n } finally {\n setLoading(false);\n }\n },\n [],\n );\n\n return {\n duplicateWorkflow,\n result,\n loading,\n error,\n };\n}\n\n/**\n * Hook to restore a previous workflow version (creates a new DRAFT from the old version's definitionJson)\n */\nexport function useRestoreWorkflowVersion() {\n const [result, setResult] = useState<{\n success: boolean;\n message?: string;\n workflow?: WorkflowDefinition;\n } | null>(null);\n const [loading, setLoading] = useState(false);\n const [error, setError] = useState<Error | null>(null);\n\n const restoreVersion = useCallback(\n async (workflowKey: string, version: string) => {\n setLoading(true);\n setError(null);\n try {\n const client = getFluidGridsClient();\n const response = throwIfResultError(\n await client.mutate<{\n restoreWorkflowVersion: {\n success: boolean;\n message?: string;\n workflow?: WorkflowDefinition;\n };\n }>({\n mutation: RESTORE_WORKFLOW_VERSION,\n variables: { workflowKey, version },\n refetchQueries: [\"WorkflowDefinitions\"],\n }),\n );\n const data = response.data?.restoreWorkflowVersion ?? null;\n setResult(data);\n return data;\n } catch (err) {\n setError(err as Error);\n return null;\n } finally {\n setLoading(false);\n }\n },\n [],\n );\n\n return {\n restoreVersion,\n result,\n loading,\n error,\n };\n}\n\n/**\n * Hook to trigger a workflow execution\n */\nexport function useTriggerWorkflow() {\n const [result, setResult] = useState<\n TriggerWorkflowData[\"triggerWorkflow\"] | null\n >(null);\n const [loading, setLoading] = useState(false);\n const [error, setError] = useState<Error | null>(null);\n\n const triggerWorkflow = useCallback(async (input: TriggerWorkflowInput) => {\n setLoading(true);\n setError(null);\n try {\n const client = getFluidGridsClient();\n const response = throwIfResultError(\n await client.mutate<TriggerWorkflowData>({\n mutation: TRIGGER_WORKFLOW,\n variables: { input },\n }),\n );\n const data = response.data?.triggerWorkflow ?? null;\n setResult(data);\n return data;\n } catch (err) {\n setError(err as Error);\n return null;\n } finally {\n setLoading(false);\n }\n }, []);\n\n return {\n triggerWorkflow,\n result,\n loading,\n error,\n };\n}\n\n// ============================================================================\n// Workflow Runs Hooks\n// ============================================================================\n\ninterface WorkflowRunsData {\n workflowRuns: {\n items: unknown[];\n total: number;\n hasMore: boolean;\n };\n}\n\ninterface WorkflowRunData {\n workflowRun: unknown;\n}\n\n/**\n * Hook to fetch workflow runs\n */\nexport function useWorkflowRuns(\n input: {\n workflowKey?: string;\n status?: string;\n limit?: number;\n offset?: number;\n } = {},\n) {\n const [runs, setRuns] = useState<unknown[]>([]);\n const [total, setTotal] = useState(0);\n const [hasMore, setHasMore] = useState(false);\n const [loading, setLoading] = useState(true);\n const [error, setError] = useState<Error | null>(null);\n\n const fetchData = useCallback(async () => {\n setLoading(true);\n setError(null);\n try {\n const client = getFluidGridsClient();\n const result = await client.query<WorkflowRunsData>({\n query: WORKFLOW_RUNS,\n variables: { input },\n fetchPolicy: \"cache-first\",\n });\n setRuns(result.data?.workflowRuns?.items ?? []);\n setTotal(result.data?.workflowRuns?.total ?? 0);\n setHasMore(result.data?.workflowRuns?.hasMore ?? false);\n } catch (err) {\n setError(err as Error);\n } finally {\n setLoading(false);\n }\n }, [input]);\n\n useEffect(() => {\n fetchData();\n }, [fetchData]);\n\n return {\n runs,\n total,\n hasMore,\n loading,\n error,\n refetch: fetchData,\n };\n}\n\n/**\n * Hook to fetch a single workflow run with node states\n */\nexport function useWorkflowRun(id: string) {\n const [run, setRun] = useState<unknown>(null);\n const [loading, setLoading] = useState(true);\n const [error, setError] = useState<Error | null>(null);\n\n const fetchData = useCallback(async () => {\n if (!id) {\n setLoading(false);\n return;\n }\n\n setLoading(true);\n setError(null);\n try {\n const client = getFluidGridsClient();\n const result = await client.query<WorkflowRunData>({\n query: WORKFLOW_RUN,\n variables: { id },\n fetchPolicy: \"cache-first\",\n });\n setRun(result.data?.workflowRun ?? null);\n } catch (err) {\n setError(err as Error);\n } finally {\n setLoading(false);\n }\n }, [id]);\n\n useEffect(() => {\n fetchData();\n }, [fetchData]);\n\n return {\n run,\n loading,\n error,\n refetch: fetchData,\n };\n}\n\n// ============================================================================\n// Dashboard Hook\n// ============================================================================\n\ninterface DashboardSummaryData {\n dashboardSummary: {\n workflowsCount: number;\n activeWorkflowsCount: number;\n archivedWorkflowsCount: number;\n runsCountTotal: number;\n runsCompletedCount: number;\n runsFailedCount: number;\n runsRunningCount: number;\n runsPendingCount: number;\n workflowSuccessRate: number;\n nodeUsageStats: unknown[];\n recentRuns: unknown[];\n recentWorkflows: unknown[];\n };\n}\n\n/**\n * Hook to fetch dashboard summary\n */\nexport function useDashboardSummary(\n options: { workspaceId?: string; tenantId?: string; projectId?: string } = {},\n) {\n const [summary, setSummary] = useState<\n DashboardSummaryData[\"dashboardSummary\"] | null\n >(null);\n const [loading, setLoading] = useState(true);\n const [error, setError] = useState<Error | null>(null);\n\n const fetchData = useCallback(async () => {\n setLoading(true);\n setError(null);\n try {\n const client = getFluidGridsClient();\n const result = await client.query<DashboardSummaryData>({\n query: DASHBOARD_SUMMARY,\n variables: options,\n fetchPolicy: \"cache-first\",\n });\n setSummary(result.data?.dashboardSummary ?? null);\n } catch (err) {\n setError(err as Error);\n } finally {\n setLoading(false);\n }\n }, [options]);\n\n useEffect(() => {\n fetchData();\n }, [fetchData]);\n\n return {\n summary,\n loading,\n error,\n refetch: fetchData,\n };\n}\n\n// ============================================================================\n// Activate / Deactivate Workflow Hooks\n// ============================================================================\n\nconst ACTIVATE_WORKFLOW_DEFINITION = ActivateWorkflowDefinitionDocument;\nconst DEACTIVATE_WORKFLOW_DEFINITION = DeactivateWorkflowDefinitionDocument;\n\n/**\n * Hook to activate a workflow definition (set status to ACTIVE)\n */\nexport function useActivateWorkflow() {\n const [loading, setLoading] = useState(false);\n\n const activateWorkflow = useCallback(async (id: string) => {\n setLoading(true);\n try {\n const client = getFluidGridsClient();\n const result = throwIfResultError(\n await client.mutate<ActivateWorkflowDefinitionMutation>({\n mutation: ACTIVATE_WORKFLOW_DEFINITION,\n variables: { id },\n // Activation changes sibling versions' statuses too (previous\n // ACTIVE becomes ARCHIVED) — refresh the version list everywhere.\n refetchQueries: [\"WorkflowVersions\", \"WorkflowDefinitions\"],\n }),\n );\n return result.data?.activateWorkflowDefinition ?? null;\n } catch (err) {\n console.error(\"Error activating workflow:\", err);\n throw err;\n } finally {\n setLoading(false);\n }\n }, []);\n\n return { activateWorkflow, loading };\n}\n\n/**\n * Hook to deactivate a workflow definition (set status back to DRAFT)\n */\nexport function useDeactivateWorkflow() {\n const [loading, setLoading] = useState(false);\n\n const deactivateWorkflow = useCallback(async (id: string) => {\n setLoading(true);\n try {\n const client = getFluidGridsClient();\n const result = throwIfResultError(\n await client.mutate<DeactivateWorkflowDefinitionMutation>({\n mutation: DEACTIVATE_WORKFLOW_DEFINITION,\n variables: { id },\n refetchQueries: [\"WorkflowVersions\", \"WorkflowDefinitions\"],\n }),\n );\n return result.data?.deactivateWorkflowDefinition ?? null;\n } catch (err) {\n console.error(\"Error deactivating workflow:\", err);\n throw err;\n } finally {\n setLoading(false);\n }\n }, []);\n\n return { deactivateWorkflow, loading };\n}\n"]}
1
+ {"version":3,"sources":["../src/hooks/useWorkflows.ts"],"names":[],"mappings":";;;;;AAmCA,IAAM,oBAAA,GAAuB,2BAAA;AAC7B,IAAM,mBAAA,GAAsB,0BAAA;AAC5B,IAAM,iBAAA,GAAoB,wBAAA;AAC1B,IAAM,0BAAA,GAA6B,gCAAA;AACnC,IAAM,0BAAA,GAA6B,gCAAA;AACnC,IAAM,uBAAA,GAA0B,6BAAA;AAChC,IAAM,0BAAA,GAA6B,gCAAA;AACnC,IAAM,kBAAA,GAAqB,yBAAA;AAC3B,IAAM,gBAAA,GAAmB,uBAAA;AACzB,IAAM,aAAA,GAAgB,oBAAA;AACtB,IAAM,YAAA,GAAe,mBAAA;AACrB,IAAM,iBAAA,GAAoB,wBAAA;AAC1B,IAAM,wBAAA,GAA2B,8BAAA;AA0BjC,SAAS,kBAAkB,GAAA,EAAuB;AAChD,EAAA,IAAI,eAAe,KAAA,EAAO;AAExB,IAAA,OACE,GAAA,CAAI,QAAQ,QAAA,CAAS,iBAAiB,KACtC,GAAA,CAAI,OAAA,CAAQ,SAAS,uCAAuC,CAAA;AAAA,EAEhE;AACA,EAAA,OAAO,KAAA;AACT;AAOO,SAAS,sBAAA,CACd,KAAA,GAAsC,EAAC,EACvC;AACA,EAAA,MAAM,CAAC,SAAA,EAAW,YAAY,CAAA,GAAI,QAAA,CAA+B,EAAE,CAAA;AACnE,EAAA,MAAM,CAAC,KAAA,EAAO,QAAQ,CAAA,GAAI,SAAS,CAAC,CAAA;AACpC,EAAA,MAAM,CAAC,OAAA,EAAS,UAAU,CAAA,GAAI,SAAS,KAAK,CAAA;AAC5C,EAAA,MAAM,CAAC,OAAA,EAAS,UAAU,CAAA,GAAI,SAAS,IAAI,CAAA;AAC3C,EAAA,MAAM,CAAC,KAAA,EAAO,QAAQ,CAAA,GAAI,SAAuB,IAAI,CAAA;AACrD,EAAA,MAAM,CAAC,UAAA,EAAY,aAAa,CAAA,GAAI,SAAS,CAAC,CAAA;AAG9C,EAAA,MAAM,SAAS,mBAAA,EAAoB;AACnC,EAAA,MAAM,sBAAA,GAAyB;AAAA,IAC7B,GAAG,KAAA;AAAA,IACH,aAAA,EAAe;AAAA,MACb,GAAI,KAAA,CAAM,aAAA,IAAiB,EAAC;AAAA,MAC5B,GAAI,OAAO,SAAA,GAAY,EAAE,WAAW,MAAA,CAAO,SAAA,KAAc;AAAC;AAC5D,GACF;AAGA,EAAA,MAAM,QAAA,GAAW,IAAA,CAAK,SAAA,CAAU,sBAAsB,CAAA;AAEtD,EAAA,MAAM,SAAA,GAAY,WAAA;AAAA,IAChB,OAAO,UAAU,KAAA,KAAU;AACzB,MAAA,UAAA,CAAW,IAAI,CAAA;AACf,MAAA,QAAA,CAAS,IAAI,CAAA;AACb,MAAA,IAAI;AACF,QAAA,MAAM,SAAS,mBAAA,EAAoB;AACnC,QAAA,MAAM,MAAA,GAAS,MAAM,MAAA,CAAO,KAAA,CAA+B;AAAA,UACzD,KAAA,EAAO,oBAAA;AAAA,UACP,WAAW,EAAE,KAAA,EAAO,IAAA,CAAK,KAAA,CAAM,QAAQ,CAAA,EAAE;AAAA,UACzC,WAAA,EAAa;AAAA,SACd,CAAA;AACD,QAAA,YAAA,CAAa,MAAA,CAAO,IAAA,EAAM,mBAAA,EAAqB,KAAA,IAAS,EAAE,CAAA;AAC1D,QAAA,QAAA,CAAS,MAAA,CAAO,IAAA,EAAM,mBAAA,EAAqB,KAAA,IAAS,CAAC,CAAA;AACrD,QAAA,UAAA,CAAW,MAAA,CAAO,IAAA,EAAM,mBAAA,EAAqB,OAAA,IAAW,KAAK,CAAA;AAE7D,QAAA,IAAI,OAAA,gBAAuB,CAAC,CAAA;AAAA,MAC9B,SAAS,GAAA,EAAK;AAIZ,QAAA,IAAI,iBAAA,CAAkB,GAAG,CAAA,EAAG;AAC1B,UAAA,OAAA,CAAQ,IAAA;AAAA,YACN;AAAA,WACF;AACA,UAAA,IAAI,aAAa,CAAA,EAAG;AAClB,YAAA,aAAA,CAAc,CAAC,IAAA,KAAS,IAAA,GAAO,CAAC,CAAA;AAEhC,YAAA;AAAA,UACF;AACA,UAAA,OAAA,CAAQ,KAAK,8CAA8C,CAAA;AAAA,QAC7D;AACA,QAAA,OAAA,CAAQ,KAAA,CAAM,mCAAmC,GAAG,CAAA;AACpD,QAAA,QAAA,CAAS,GAAY,CAAA;AAAA,MACvB,CAAA,SAAE;AACA,QAAA,UAAA,CAAW,KAAK,CAAA;AAAA,MAClB;AAAA,IACF,CAAA;AAAA,IACA,CAAC,UAAU,UAAU;AAAA,GACvB;AAGA,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,SAAA,CAAU,aAAa,CAAC,CAAA;AAAA,EAC1B,CAAA,EAAG,CAAC,SAAA,EAAW,UAAU,CAAC,CAAA;AAG1B,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,IAAI,UAAA,GAAa,CAAA,IAAK,UAAA,IAAc,CAAA,EAAG;AACrC,MAAA,MAAM,KAAA,GAAQ,WAAW,MAAM;AAC7B,QAAA,SAAA,CAAU,IAAI,CAAA;AAAA,MAChB,CAAA,EAAG,MAAM,UAAU,CAAA;AACnB,MAAA,OAAO,MAAM,aAAa,KAAK,CAAA;AAAA,IACjC;AAAA,EACF,CAAA,EAAG,CAAC,UAAA,EAAY,SAAS,CAAC,CAAA;AAE1B,EAAA,OAAO;AAAA,IACL,SAAA;AAAA,IACA,KAAA;AAAA,IACA,OAAA;AAAA,IACA,OAAA;AAAA,IACA,KAAA;AAAA,IACA,OAAA,EAAS,MAAM,SAAA,CAAU,KAAK;AAAA,GAChC;AACF;AAKO,SAAS,qBAAA,CAAsB,aAAsB,EAAA,EAAa;AACvE,EAAA,MAAM,CAAC,QAAA,EAAU,WAAW,CAAA,GAAI,SAAoC,IAAI,CAAA;AACxE,EAAA,MAAM,CAAC,OAAA,EAAS,UAAU,CAAA,GAAI,SAAS,IAAI,CAAA;AAC3C,EAAA,MAAM,CAAC,KAAA,EAAO,QAAQ,CAAA,GAAI,SAAuB,IAAI,CAAA;AAErD,EAAA,MAAM,SAAA,GAAY,YAAY,YAAY;AACxC,IAAA,IAAI,CAAC,WAAA,IAAe,CAAC,EAAA,EAAI;AACvB,MAAA,UAAA,CAAW,KAAK,CAAA;AAChB,MAAA;AAAA,IACF;AAEA,IAAA,UAAA,CAAW,IAAI,CAAA;AACf,IAAA,QAAA,CAAS,IAAI,CAAA;AACb,IAAA,IAAI;AACF,MAAA,MAAM,SAAS,mBAAA,EAAoB;AACnC,MAAA,MAAM,MAAA,GAAS,MAAM,MAAA,CAAO,KAAA,CAA8B;AAAA,QACxD,KAAA,EAAO,mBAAA;AAAA,QACP,SAAA,EAAW,EAAE,WAAA,EAAa,EAAA,EAAG;AAAA,QAC7B,WAAA,EAAa;AAAA,OACd,CAAA;AACD,MAAA,WAAA,CAAY,MAAA,CAAO,IAAA,EAAM,kBAAA,IAAsB,IAAI,CAAA;AAAA,IACrD,SAAS,GAAA,EAAK;AACZ,MAAA,QAAA,CAAS,GAAY,CAAA;AAAA,IACvB,CAAA,SAAE;AACA,MAAA,UAAA,CAAW,KAAK,CAAA;AAAA,IAClB;AAAA,EACF,CAAA,EAAG,CAAC,WAAA,EAAa,EAAE,CAAC,CAAA;AAEpB,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,SAAA,EAAU;AAAA,EACZ,CAAA,EAAG,CAAC,SAAS,CAAC,CAAA;AAEd,EAAA,OAAO;AAAA,IACL,QAAA;AAAA,IACA,OAAA;AAAA,IACA,KAAA;AAAA,IACA,OAAA,EAAS;AAAA,GACX;AACF;AAKO,SAAS,yBAAA,GAA4B;AAC1C,EAAA,MAAM,CAAC,QAAA,EAAU,WAAW,CAAA,GAAI,SAAoC,IAAI,CAAA;AACxE,EAAA,MAAM,CAAC,OAAA,EAAS,UAAU,CAAA,GAAI,SAAS,KAAK,CAAA;AAC5C,EAAA,MAAM,CAAC,KAAA,EAAO,QAAQ,CAAA,GAAI,SAAuB,IAAI,CAAA;AAErD,EAAA,MAAM,WAAA,GAAc,WAAA;AAAA,IAClB,OAAO,WAAA,EAAsB,EAAA,EAAa,OAAA,KAAqB;AAC7D,MAAA,UAAA,CAAW,IAAI,CAAA;AACf,MAAA,QAAA,CAAS,IAAI,CAAA;AACb,MAAA,IAAI;AACF,QAAA,MAAM,SAAS,mBAAA,EAAoB;AACnC,QAAA,MAAM,MAAA,GAAS,MAAM,MAAA,CAAO,KAAA,CAA8B;AAAA,UACxD,KAAA,EAAO,mBAAA;AAAA,UACP,SAAA,EAAW,EAAE,WAAA,EAAa,EAAA,EAAI,GAAI,UAAU,EAAE,OAAA,EAAQ,GAAI,EAAC,EAAG;AAAA,UAC9D,WAAA,EAAa;AAAA,SACd,CAAA;AACD,QAAA,MAAM,IAAA,GAAO,MAAA,CAAO,IAAA,EAAM,kBAAA,IAAsB,IAAA;AAChD,QAAA,WAAA,CAAY,IAAI,CAAA;AAChB,QAAA,OAAO,IAAA;AAAA,MACT,SAAS,GAAA,EAAK;AACZ,QAAA,QAAA,CAAS,GAAY,CAAA;AACrB,QAAA,OAAO,IAAA;AAAA,MACT,CAAA,SAAE;AACA,QAAA,UAAA,CAAW,KAAK,CAAA;AAAA,MAClB;AAAA,IACF,CAAA;AAAA,IACA;AAAC,GACH;AAEA,EAAA,OAAO;AAAA,IACL,WAAA;AAAA,IACA,QAAA;AAAA,IACA,OAAA;AAAA,IACA;AAAA,GACF;AACF;AAKO,SAAS,oBAAoB,WAAA,EAAqB;AACvD,EAAA,MAAM,CAAC,QAAA,EAAU,WAAW,CAAA,GAAI,QAAA,CAA+B,EAAE,CAAA;AACjE,EAAA,MAAM,CAAC,OAAA,EAAS,UAAU,CAAA,GAAI,SAAS,IAAI,CAAA;AAC3C,EAAA,MAAM,CAAC,KAAA,EAAO,QAAQ,CAAA,GAAI,SAAuB,IAAI,CAAA;AAErD,EAAA,MAAM,SAAA,GAAY,YAAY,YAA2C;AACvE,IAAA,IAAI,CAAC,WAAA,EAAa;AAChB,MAAA,UAAA,CAAW,KAAK,CAAA;AAChB,MAAA,OAAO,EAAC;AAAA,IACV;AAEA,IAAA,UAAA,CAAW,IAAI,CAAA;AACf,IAAA,QAAA,CAAS,IAAI,CAAA;AACb,IAAA,IAAI;AACF,MAAA,MAAM,SAAS,mBAAA,EAAoB;AACnC,MAAA,MAAM,MAAA,GAAS,MAAM,MAAA,CAAO,KAAA,CAA4B;AAAA,QACtD,KAAA,EAAO,iBAAA;AAAA,QACP,SAAA,EAAW,EAAE,WAAA,EAAY;AAAA,QACzB,WAAA,EAAa;AAAA,OACd,CAAA;AACD,MAAA,MAAM,OAAA,GAAU,MAAA,CAAO,IAAA,EAAM,gBAAA,IAAoB,EAAC;AAClD,MAAA,WAAA,CAAY,OAAO,CAAA;AACnB,MAAA,OAAO,OAAA;AAAA,IACT,SAAS,GAAA,EAAK;AACZ,MAAA,QAAA,CAAS,GAAY,CAAA;AACrB,MAAA,OAAO,EAAC;AAAA,IACV,CAAA,SAAE;AACA,MAAA,UAAA,CAAW,KAAK,CAAA;AAAA,IAClB;AAAA,EACF,CAAA,EAAG,CAAC,WAAW,CAAC,CAAA;AAEhB,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,SAAA,EAAU;AAAA,EACZ,CAAA,EAAG,CAAC,SAAS,CAAC,CAAA;AAEd,EAAA,OAAO;AAAA,IACL,QAAA;AAAA,IACA,OAAA;AAAA,IACA,KAAA;AAAA,IACA,OAAA,EAAS;AAAA,GACX;AACF;AA4CO,SAAS,iBAAA,GAAoB;AAClC,EAAA,MAAM,CAAC,QAAA,EAAU,WAAW,CAAA,GAAI,SAAoC,IAAI,CAAA;AACxE,EAAA,MAAM,CAAC,OAAA,EAAS,UAAU,CAAA,GAAI,SAAS,KAAK,CAAA;AAC5C,EAAA,MAAM,CAAC,KAAA,EAAO,QAAQ,CAAA,GAAI,SAAuB,IAAI,CAAA;AAErD,EAAA,MAAM,cAAA,GAAiB,WAAA;AAAA,IACrB,OAAO,KAAA,KAAyC;AAC9C,MAAA,UAAA,CAAW,IAAI,CAAA;AACf,MAAA,QAAA,CAAS,IAAI,CAAA;AACb,MAAA,IAAI;AACF,QAAA,MAAM,SAAS,mBAAA,EAAoB;AAGnC,QAAA,MAAM,uBAAA,GAA0B;AAAA,UAC9B,GAAG,KAAA;AAAA,UACH,OAAA,EAAS;AAAA,YACP,GAAI,KAAA,CAAM,OAAA,IAAW,EAAC;AAAA,YACtB,GAAI,OAAO,SAAA,GAAY,EAAE,WAAW,MAAA,CAAO,SAAA,KAAc,EAAC;AAAA,YAC1D,GAAI,OAAO,WAAA,GAAc,EAAE,aAAa,MAAA,CAAO,WAAA,KAAgB;AAAC;AAClE,SACF;AAEA,QAAA,MAAM,SAAS,mBAAA,EAAoB;AACnC,QAAA,MAAM,MAAA,GAAS,kBAAA;AAAA,UACb,MAAM,OAAO,MAAA,CAA2B;AAAA,YACtC,QAAA,EAAU,0BAAA;AAAA,YACV,SAAA,EAAW,EAAE,KAAA,EAAO,uBAAA,EAAwB;AAAA,YAC5C,cAAA,EAAgB,CAAC,qBAAqB;AAAA,WACvC;AAAA,SACH;AACA,QAAA,MAAM,IAAA,GAAO,MAAA,CAAO,IAAA,EAAM,wBAAA,IAA4B,IAAA;AACtD,QAAA,WAAA,CAAY,IAAI,CAAA;AAChB,QAAA,OAAO,IAAA;AAAA,MACT,SAAS,GAAA,EAAK;AACZ,QAAA,QAAA,CAAS,GAAY,CAAA;AACrB,QAAA,OAAO,IAAA;AAAA,MACT,CAAA,SAAE;AACA,QAAA,UAAA,CAAW,KAAK,CAAA;AAAA,MAClB;AAAA,IACF,CAAA;AAAA,IACA;AAAC,GACH;AAEA,EAAA,OAAO;AAAA,IACL,cAAA;AAAA,IACA,QAAA;AAAA,IACA,OAAA;AAAA,IACA;AAAA,GACF;AACF;AAKO,SAAS,iBAAA,GAAoB;AAClC,EAAA,MAAM,CAAC,QAAA,EAAU,WAAW,CAAA,GAAI,SAAoC,IAAI,CAAA;AACxE,EAAA,MAAM,CAAC,OAAA,EAAS,UAAU,CAAA,GAAI,SAAS,KAAK,CAAA;AAC5C,EAAA,MAAM,CAAC,KAAA,EAAO,QAAQ,CAAA,GAAI,SAAuB,IAAI,CAAA;AAErD,EAAA,MAAM,cAAA,GAAiB,WAAA;AAAA,IACrB,OAAO,IAAY,KAAA,KAAyC;AAC1D,MAAA,UAAA,CAAW,IAAI,CAAA;AACf,MAAA,QAAA,CAAS,IAAI,CAAA;AACb,MAAA,IAAI;AACF,QAAA,MAAM,SAAS,mBAAA,EAAoB;AACnC,QAAA,MAAM,MAAA,GAAS,kBAAA;AAAA,UACb,MAAM,OAAO,MAAA,CAA2B;AAAA,YACtC,QAAA,EAAU,0BAAA;AAAA,YACV,SAAA,EAAW,EAAE,EAAA,EAAI,KAAA;AAAM,WACxB;AAAA,SACH;AACA,QAAA,MAAM,IAAA,GAAO,MAAA,CAAO,IAAA,EAAM,wBAAA,IAA4B,IAAA;AACtD,QAAA,WAAA,CAAY,IAAI,CAAA;AAChB,QAAA,OAAO,IAAA;AAAA,MACT,SAAS,GAAA,EAAK;AACZ,QAAA,QAAA,CAAS,GAAY,CAAA;AACrB,QAAA,OAAO,IAAA;AAAA,MACT,CAAA,SAAE;AACA,QAAA,UAAA,CAAW,KAAK,CAAA;AAAA,MAClB;AAAA,IACF,CAAA;AAAA,IACA;AAAC,GACH;AAEA,EAAA,OAAO;AAAA,IACL,cAAA;AAAA,IACA,QAAA;AAAA,IACA,OAAA;AAAA,IACA;AAAA,GACF;AACF;AAKO,SAAS,wBAAA,GAA2B;AACzC,EAAA,MAAM,CAAC,MAAA,EAAQ,SAAS,CAAA,GAAI,SAE1B,IAAI,CAAA;AACN,EAAA,MAAM,CAAC,OAAA,EAAS,UAAU,CAAA,GAAI,SAAS,KAAK,CAAA;AAC5C,EAAA,MAAM,CAAC,KAAA,EAAO,QAAQ,CAAA,GAAI,SAAuB,IAAI,CAAA;AAErD,EAAA,MAAM,aAAA,GAAgB,WAAA;AAAA,IACpB,OACE,aACA,KAAA,KACG;AACH,MAAA,UAAA,CAAW,IAAI,CAAA;AACf,MAAA,QAAA,CAAS,IAAI,CAAA;AACb,MAAA,IAAI;AACF,QAAA,MAAM,SAAS,mBAAA,EAAoB;AACnC,QAAA,MAAM,QAAA,GAAW,kBAAA;AAAA,UACf,MAAM,OAAO,MAAA,CAA0B;AAAA,YACrC,QAAA,EAAU,uBAAA;AAAA,YACV,SAAA,EAAW,EAAE,WAAA,EAAa,KAAA;AAAM,WACjC;AAAA,SACH;AACA,QAAA,MAAM,IAAA,GAAO,QAAA,CAAS,IAAA,EAAM,qBAAA,IAAyB,IAAA;AACrD,QAAA,SAAA,CAAU,IAAI,CAAA;AACd,QAAA,OAAO,IAAA;AAAA,MACT,SAAS,GAAA,EAAK;AACZ,QAAA,QAAA,CAAS,GAAY,CAAA;AACrB,QAAA,OAAO,IAAA;AAAA,MACT,CAAA,SAAE;AACA,QAAA,UAAA,CAAW,KAAK,CAAA;AAAA,MAClB;AAAA,IACF,CAAA;AAAA,IACA;AAAC,GACH;AAEA,EAAA,OAAO;AAAA,IACL,aAAA;AAAA,IACA,MAAA;AAAA,IACA,OAAA;AAAA,IACA;AAAA,GACF;AACF;AAOO,SAAS,iBAAA,GAAoB;AAClC,EAAA,MAAM,CAAC,OAAA,EAAS,UAAU,CAAA,GAAI,SAAS,KAAK,CAAA;AAC5C,EAAA,MAAM,CAAC,KAAA,EAAO,QAAQ,CAAA,GAAI,SAAuB,IAAI,CAAA;AAErD,EAAA,MAAM,cAAA,GAAiB,WAAA;AAAA,IACrB,OAAO,aAAqB,OAAA,KAAqB;AAC/C,MAAA,UAAA,CAAW,IAAI,CAAA;AACf,MAAA,QAAA,CAAS,IAAI,CAAA;AACb,MAAA,IAAI;AACF,QAAA,MAAM,SAAS,mBAAA,EAAoB;AACnC,QAAA,MAAM,MAAA,GAAS,kBAAA;AAAA,UACb,MAAM,OAAO,MAAA,CAAO;AAAA,YAClB,QAAA,EAAU,0BAAA;AAAA,YACV,SAAA,EAAW,EAAE,WAAA,EAAa,GAAI,UAAU,EAAE,OAAA,EAAQ,GAAI,EAAC,EAAG;AAAA,YAC1D,cAAA,EAAgB,CAAC,qBAAqB;AAAA,WACvC;AAAA,SACH;AACA,QAAA,OACG,MAAA,CAAO,MACJ,wBAAA,IAA4B,KAAA;AAAA,MAEpC,SAAS,GAAA,EAAK;AACZ,QAAA,QAAA,CAAS,GAAY,CAAA;AACrB,QAAA,OAAO,KAAA;AAAA,MACT,CAAA,SAAE;AACA,QAAA,UAAA,CAAW,KAAK,CAAA;AAAA,MAClB;AAAA,IACF,CAAA;AAAA,IACA;AAAC,GACH;AAEA,EAAA,OAAO;AAAA,IACL,cAAA;AAAA,IACA,OAAA;AAAA,IACA;AAAA,GACF;AACF;AAKO,SAAS,oBAAA,GAAuB;AACrC,EAAA,MAAM,CAAC,MAAA,EAAQ,SAAS,CAAA,GAAI,SAE1B,IAAI,CAAA;AACN,EAAA,MAAM,CAAC,OAAA,EAAS,UAAU,CAAA,GAAI,SAAS,KAAK,CAAA;AAC5C,EAAA,MAAM,CAAC,KAAA,EAAO,QAAQ,CAAA,GAAI,SAAuB,IAAI,CAAA;AAErD,EAAA,MAAM,iBAAA,GAAoB,WAAA;AAAA,IACxB,OACE,WAAA,EACA,OAAA,EACA,KAAA,KACG;AACH,MAAA,UAAA,CAAW,IAAI,CAAA;AACf,MAAA,QAAA,CAAS,IAAI,CAAA;AACb,MAAA,IAAI;AACF,QAAA,MAAM,SAAS,mBAAA,EAAoB;AACnC,QAAA,MAAM,QAAA,GAAW,kBAAA;AAAA,UACf,MAAM,OAAO,MAAA,CAA8B;AAAA,YACzC,QAAA,EAAU,kBAAA;AAAA,YACV,SAAA,EAAW,EAAE,WAAA,EAAa,OAAA,EAAS,KAAA,EAAM;AAAA,YACzC,cAAA,EAAgB,CAAC,qBAAqB;AAAA,WACvC;AAAA,SACH;AACA,QAAA,MAAM,IAAA,GAAO,QAAA,CAAS,IAAA,EAAM,iBAAA,IAAqB,IAAA;AACjD,QAAA,SAAA,CAAU,IAAI,CAAA;AACd,QAAA,OAAO,IAAA;AAAA,MACT,SAAS,GAAA,EAAK;AAKZ,QAAA,QAAA,CAAS,GAAY,CAAA;AACrB,QAAA,MAAM,GAAA;AAAA,MACR,CAAA,SAAE;AACA,QAAA,UAAA,CAAW,KAAK,CAAA;AAAA,MAClB;AAAA,IACF,CAAA;AAAA,IACA;AAAC,GACH;AAEA,EAAA,OAAO;AAAA,IACL,iBAAA;AAAA,IACA,MAAA;AAAA,IACA,OAAA;AAAA,IACA;AAAA,GACF;AACF;AAKO,SAAS,yBAAA,GAA4B;AAC1C,EAAA,MAAM,CAAC,MAAA,EAAQ,SAAS,CAAA,GAAI,SAIlB,IAAI,CAAA;AACd,EAAA,MAAM,CAAC,OAAA,EAAS,UAAU,CAAA,GAAI,SAAS,KAAK,CAAA;AAC5C,EAAA,MAAM,CAAC,KAAA,EAAO,QAAQ,CAAA,GAAI,SAAuB,IAAI,CAAA;AAErD,EAAA,MAAM,cAAA,GAAiB,WAAA;AAAA,IACrB,OAAO,aAAqB,OAAA,KAAoB;AAC9C,MAAA,UAAA,CAAW,IAAI,CAAA;AACf,MAAA,QAAA,CAAS,IAAI,CAAA;AACb,MAAA,IAAI;AACF,QAAA,MAAM,SAAS,mBAAA,EAAoB;AACnC,QAAA,MAAM,QAAA,GAAW,kBAAA;AAAA,UACf,MAAM,OAAO,MAAA,CAMV;AAAA,YACD,QAAA,EAAU,wBAAA;AAAA,YACV,SAAA,EAAW,EAAE,WAAA,EAAa,OAAA,EAAQ;AAAA,YAClC,cAAA,EAAgB,CAAC,qBAAqB;AAAA,WACvC;AAAA,SACH;AACA,QAAA,MAAM,IAAA,GAAO,QAAA,CAAS,IAAA,EAAM,sBAAA,IAA0B,IAAA;AACtD,QAAA,SAAA,CAAU,IAAI,CAAA;AACd,QAAA,OAAO,IAAA;AAAA,MACT,SAAS,GAAA,EAAK;AACZ,QAAA,QAAA,CAAS,GAAY,CAAA;AACrB,QAAA,OAAO,IAAA;AAAA,MACT,CAAA,SAAE;AACA,QAAA,UAAA,CAAW,KAAK,CAAA;AAAA,MAClB;AAAA,IACF,CAAA;AAAA,IACA;AAAC,GACH;AAEA,EAAA,OAAO;AAAA,IACL,cAAA;AAAA,IACA,MAAA;AAAA,IACA,OAAA;AAAA,IACA;AAAA,GACF;AACF;AAKO,SAAS,kBAAA,GAAqB;AACnC,EAAA,MAAM,CAAC,MAAA,EAAQ,SAAS,CAAA,GAAI,SAE1B,IAAI,CAAA;AACN,EAAA,MAAM,CAAC,OAAA,EAAS,UAAU,CAAA,GAAI,SAAS,KAAK,CAAA;AAC5C,EAAA,MAAM,CAAC,KAAA,EAAO,QAAQ,CAAA,GAAI,SAAuB,IAAI,CAAA;AAErD,EAAA,MAAM,eAAA,GAAkB,WAAA,CAAY,OAAO,KAAA,KAAgC;AACzE,IAAA,UAAA,CAAW,IAAI,CAAA;AACf,IAAA,QAAA,CAAS,IAAI,CAAA;AACb,IAAA,IAAI;AACF,MAAA,MAAM,SAAS,mBAAA,EAAoB;AACnC,MAAA,MAAM,QAAA,GAAW,kBAAA;AAAA,QACf,MAAM,OAAO,MAAA,CAA4B;AAAA,UACvC,QAAA,EAAU,gBAAA;AAAA,UACV,SAAA,EAAW,EAAE,KAAA;AAAM,SACpB;AAAA,OACH;AACA,MAAA,MAAM,IAAA,GAAO,QAAA,CAAS,IAAA,EAAM,eAAA,IAAmB,IAAA;AAC/C,MAAA,SAAA,CAAU,IAAI,CAAA;AACd,MAAA,OAAO,IAAA;AAAA,IACT,SAAS,GAAA,EAAK;AACZ,MAAA,QAAA,CAAS,GAAY,CAAA;AACrB,MAAA,OAAO,IAAA;AAAA,IACT,CAAA,SAAE;AACA,MAAA,UAAA,CAAW,KAAK,CAAA;AAAA,IAClB;AAAA,EACF,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,OAAO;AAAA,IACL,eAAA;AAAA,IACA,MAAA;AAAA,IACA,OAAA;AAAA,IACA;AAAA,GACF;AACF;AAqBO,SAAS,eAAA,CACd,KAAA,GAKI,EAAC,EACL;AACA,EAAA,MAAM,CAAC,IAAA,EAAM,OAAO,CAAA,GAAI,QAAA,CAAoB,EAAE,CAAA;AAC9C,EAAA,MAAM,CAAC,KAAA,EAAO,QAAQ,CAAA,GAAI,SAAS,CAAC,CAAA;AACpC,EAAA,MAAM,CAAC,OAAA,EAAS,UAAU,CAAA,GAAI,SAAS,KAAK,CAAA;AAC5C,EAAA,MAAM,CAAC,OAAA,EAAS,UAAU,CAAA,GAAI,SAAS,IAAI,CAAA;AAC3C,EAAA,MAAM,CAAC,KAAA,EAAO,QAAQ,CAAA,GAAI,SAAuB,IAAI,CAAA;AAErD,EAAA,MAAM,SAAA,GAAY,YAAY,YAAY;AACxC,IAAA,UAAA,CAAW,IAAI,CAAA;AACf,IAAA,QAAA,CAAS,IAAI,CAAA;AACb,IAAA,IAAI;AACF,MAAA,MAAM,SAAS,mBAAA,EAAoB;AACnC,MAAA,MAAM,MAAA,GAAS,MAAM,MAAA,CAAO,KAAA,CAAwB;AAAA,QAClD,KAAA,EAAO,aAAA;AAAA,QACP,SAAA,EAAW,EAAE,KAAA,EAAM;AAAA,QACnB,WAAA,EAAa;AAAA,OACd,CAAA;AACD,MAAA,OAAA,CAAQ,MAAA,CAAO,IAAA,EAAM,YAAA,EAAc,KAAA,IAAS,EAAE,CAAA;AAC9C,MAAA,QAAA,CAAS,MAAA,CAAO,IAAA,EAAM,YAAA,EAAc,KAAA,IAAS,CAAC,CAAA;AAC9C,MAAA,UAAA,CAAW,MAAA,CAAO,IAAA,EAAM,YAAA,EAAc,OAAA,IAAW,KAAK,CAAA;AAAA,IACxD,SAAS,GAAA,EAAK;AACZ,MAAA,QAAA,CAAS,GAAY,CAAA;AAAA,IACvB,CAAA,SAAE;AACA,MAAA,UAAA,CAAW,KAAK,CAAA;AAAA,IAClB;AAAA,EACF,CAAA,EAAG,CAAC,KAAK,CAAC,CAAA;AAEV,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,SAAA,EAAU;AAAA,EACZ,CAAA,EAAG,CAAC,SAAS,CAAC,CAAA;AAEd,EAAA,OAAO;AAAA,IACL,IAAA;AAAA,IACA,KAAA;AAAA,IACA,OAAA;AAAA,IACA,OAAA;AAAA,IACA,KAAA;AAAA,IACA,OAAA,EAAS;AAAA,GACX;AACF;AAKO,SAAS,eAAe,EAAA,EAAY;AACzC,EAAA,MAAM,CAAC,GAAA,EAAK,MAAM,CAAA,GAAI,SAAkB,IAAI,CAAA;AAC5C,EAAA,MAAM,CAAC,OAAA,EAAS,UAAU,CAAA,GAAI,SAAS,IAAI,CAAA;AAC3C,EAAA,MAAM,CAAC,KAAA,EAAO,QAAQ,CAAA,GAAI,SAAuB,IAAI,CAAA;AAErD,EAAA,MAAM,SAAA,GAAY,YAAY,YAAY;AACxC,IAAA,IAAI,CAAC,EAAA,EAAI;AACP,MAAA,UAAA,CAAW,KAAK,CAAA;AAChB,MAAA;AAAA,IACF;AAEA,IAAA,UAAA,CAAW,IAAI,CAAA;AACf,IAAA,QAAA,CAAS,IAAI,CAAA;AACb,IAAA,IAAI;AACF,MAAA,MAAM,SAAS,mBAAA,EAAoB;AACnC,MAAA,MAAM,MAAA,GAAS,MAAM,MAAA,CAAO,KAAA,CAAuB;AAAA,QACjD,KAAA,EAAO,YAAA;AAAA,QACP,SAAA,EAAW,EAAE,EAAA,EAAG;AAAA,QAChB,WAAA,EAAa;AAAA,OACd,CAAA;AACD,MAAA,MAAA,CAAO,MAAA,CAAO,IAAA,EAAM,WAAA,IAAe,IAAI,CAAA;AAAA,IACzC,SAAS,GAAA,EAAK;AACZ,MAAA,QAAA,CAAS,GAAY,CAAA;AAAA,IACvB,CAAA,SAAE;AACA,MAAA,UAAA,CAAW,KAAK,CAAA;AAAA,IAClB;AAAA,EACF,CAAA,EAAG,CAAC,EAAE,CAAC,CAAA;AAEP,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,SAAA,EAAU;AAAA,EACZ,CAAA,EAAG,CAAC,SAAS,CAAC,CAAA;AAEd,EAAA,OAAO;AAAA,IACL,GAAA;AAAA,IACA,OAAA;AAAA,IACA,KAAA;AAAA,IACA,OAAA,EAAS;AAAA,GACX;AACF;AA0BO,SAAS,mBAAA,CACd,OAAA,GAA2E,EAAC,EAC5E;AACA,EAAA,MAAM,CAAC,OAAA,EAAS,UAAU,CAAA,GAAI,SAE5B,IAAI,CAAA;AACN,EAAA,MAAM,CAAC,OAAA,EAAS,UAAU,CAAA,GAAI,SAAS,IAAI,CAAA;AAC3C,EAAA,MAAM,CAAC,KAAA,EAAO,QAAQ,CAAA,GAAI,SAAuB,IAAI,CAAA;AAErD,EAAA,MAAM,SAAA,GAAY,YAAY,YAAY;AACxC,IAAA,UAAA,CAAW,IAAI,CAAA;AACf,IAAA,QAAA,CAAS,IAAI,CAAA;AACb,IAAA,IAAI;AACF,MAAA,MAAM,SAAS,mBAAA,EAAoB;AACnC,MAAA,MAAM,MAAA,GAAS,MAAM,MAAA,CAAO,KAAA,CAA4B;AAAA,QACtD,KAAA,EAAO,iBAAA;AAAA,QACP,SAAA,EAAW,OAAA;AAAA,QACX,WAAA,EAAa;AAAA,OACd,CAAA;AACD,MAAA,UAAA,CAAW,MAAA,CAAO,IAAA,EAAM,gBAAA,IAAoB,IAAI,CAAA;AAAA,IAClD,SAAS,GAAA,EAAK;AACZ,MAAA,QAAA,CAAS,GAAY,CAAA;AAAA,IACvB,CAAA,SAAE;AACA,MAAA,UAAA,CAAW,KAAK,CAAA;AAAA,IAClB;AAAA,EACF,CAAA,EAAG,CAAC,OAAO,CAAC,CAAA;AAEZ,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,SAAA,EAAU;AAAA,EACZ,CAAA,EAAG,CAAC,SAAS,CAAC,CAAA;AAEd,EAAA,OAAO;AAAA,IACL,OAAA;AAAA,IACA,OAAA;AAAA,IACA,KAAA;AAAA,IACA,OAAA,EAAS;AAAA,GACX;AACF;AAMA,IAAM,4BAAA,GAA+B,kCAAA;AACrC,IAAM,8BAAA,GAAiC,oCAAA;AAKhC,SAAS,mBAAA,GAAsB;AACpC,EAAA,MAAM,CAAC,OAAA,EAAS,UAAU,CAAA,GAAI,SAAS,KAAK,CAAA;AAE5C,EAAA,MAAM,gBAAA,GAAmB,WAAA,CAAY,OAAO,EAAA,KAAe;AACzD,IAAA,UAAA,CAAW,IAAI,CAAA;AACf,IAAA,IAAI;AACF,MAAA,MAAM,SAAS,mBAAA,EAAoB;AACnC,MAAA,MAAM,MAAA,GAAS,kBAAA;AAAA,QACb,MAAM,OAAO,MAAA,CAA2C;AAAA,UACtD,QAAA,EAAU,4BAAA;AAAA,UACV,SAAA,EAAW,EAAE,EAAA,EAAG;AAAA;AAAA;AAAA,UAGhB,cAAA,EAAgB,CAAC,kBAAA,EAAoB,qBAAqB;AAAA,SAC3D;AAAA,OACH;AACA,MAAA,OAAO,MAAA,CAAO,MAAM,0BAAA,IAA8B,IAAA;AAAA,IACpD,SAAS,GAAA,EAAK;AACZ,MAAA,OAAA,CAAQ,KAAA,CAAM,8BAA8B,GAAG,CAAA;AAC/C,MAAA,MAAM,GAAA;AAAA,IACR,CAAA,SAAE;AACA,MAAA,UAAA,CAAW,KAAK,CAAA;AAAA,IAClB;AAAA,EACF,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,OAAO,EAAE,kBAAkB,OAAA,EAAQ;AACrC;AAKO,SAAS,qBAAA,GAAwB;AACtC,EAAA,MAAM,CAAC,OAAA,EAAS,UAAU,CAAA,GAAI,SAAS,KAAK,CAAA;AAE5C,EAAA,MAAM,kBAAA,GAAqB,WAAA,CAAY,OAAO,EAAA,KAAe;AAC3D,IAAA,UAAA,CAAW,IAAI,CAAA;AACf,IAAA,IAAI;AACF,MAAA,MAAM,SAAS,mBAAA,EAAoB;AACnC,MAAA,MAAM,MAAA,GAAS,kBAAA;AAAA,QACb,MAAM,OAAO,MAAA,CAA6C;AAAA,UACxD,QAAA,EAAU,8BAAA;AAAA,UACV,SAAA,EAAW,EAAE,EAAA,EAAG;AAAA,UAChB,cAAA,EAAgB,CAAC,kBAAA,EAAoB,qBAAqB;AAAA,SAC3D;AAAA,OACH;AACA,MAAA,OAAO,MAAA,CAAO,MAAM,4BAAA,IAAgC,IAAA;AAAA,IACtD,SAAS,GAAA,EAAK;AACZ,MAAA,OAAA,CAAQ,KAAA,CAAM,gCAAgC,GAAG,CAAA;AACjD,MAAA,MAAM,GAAA;AAAA,IACR,CAAA,SAAE;AACA,MAAA,UAAA,CAAW,KAAK,CAAA;AAAA,IAClB;AAAA,EACF,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,OAAO,EAAE,oBAAoB,OAAA,EAAQ;AACvC","file":"chunk-MH4AHYK3.js","sourcesContent":["import { useState, useEffect, useCallback } from \"react\";\nimport { getFluidGridsClient } from \"../graphql/client\";\nimport { getFluidGridsConfig } from \"../config\";\nimport {\n WorkflowDefinitionsDocument,\n WorkflowDefinitionDocument,\n WorkflowVersionsDocument,\n CreateWorkflowDefinitionDocument,\n UpdateWorkflowDefinitionDocument,\n CreateWorkflowVersionDocument,\n DeleteWorkflowDefinitionDocument,\n DuplicateWorkflowDocument,\n TriggerWorkflowDocument,\n WorkflowRunsDocument,\n WorkflowRunDocument,\n DashboardSummaryDocument,\n RestoreWorkflowVersionDocument,\n ActivateWorkflowDefinitionDocument,\n DeactivateWorkflowDefinitionDocument,\n} from \"../generated/operations\";\nimport type {\n ActivateWorkflowDefinitionMutation,\n DeactivateWorkflowDefinitionMutation,\n} from \"../generated/operations\";\nimport type {\n WorkflowDefinition,\n ListWorkflowDefinitionsInput,\n CreateWorkflowDefinitionInput,\n UpdateWorkflowDefinitionInput,\n TriggerWorkflowInput,\n} from \"../generated/graphql-types\";\n\nimport { throwIfResultError } from \"../graphql/errors\";\n\n// Alias for backward compatibility\nconst WORKFLOW_DEFINITIONS = WorkflowDefinitionsDocument;\nconst WORKFLOW_DEFINITION = WorkflowDefinitionDocument;\nconst WORKFLOW_VERSIONS = WorkflowVersionsDocument;\nconst CREATE_WORKFLOW_DEFINITION = CreateWorkflowDefinitionDocument;\nconst UPDATE_WORKFLOW_DEFINITION = UpdateWorkflowDefinitionDocument;\nconst CREATE_WORKFLOW_VERSION = CreateWorkflowVersionDocument;\nconst DELETE_WORKFLOW_DEFINITION = DeleteWorkflowDefinitionDocument;\nconst DUPLICATE_WORKFLOW = DuplicateWorkflowDocument;\nconst TRIGGER_WORKFLOW = TriggerWorkflowDocument;\nconst WORKFLOW_RUNS = WorkflowRunsDocument;\nconst WORKFLOW_RUN = WorkflowRunDocument;\nconst DASHBOARD_SUMMARY = DashboardSummaryDocument;\nconst RESTORE_WORKFLOW_VERSION = RestoreWorkflowVersionDocument;\n\n// ============================================================================\n// Workflow Definition Hooks\n// ============================================================================\n\ninterface WorkflowDefinitionsData {\n workflowDefinitions: {\n items: WorkflowDefinition[];\n total: number;\n hasMore: boolean;\n };\n}\n\ninterface WorkflowDefinitionData {\n workflowDefinition: WorkflowDefinition | null;\n}\n\ninterface WorkflowVersionsData {\n workflowVersions: WorkflowDefinition[];\n}\n\n/**\n * Check if an error is Apollo's \"Store reset while query was in flight\" error (error 89)\n * This happens when the shell's MultiGatewayProvider cleans up during re-renders\n */\nfunction isStoreResetError(err: unknown): boolean {\n if (err instanceof Error) {\n // Check for error 89 in the message URL or error text\n return (\n err.message.includes(\"message%22%3A89\") ||\n err.message.includes(\"Store reset while query was in flight\")\n );\n }\n return false;\n}\n\n/**\n * Hook to fetch list of workflow definitions\n * Uses Apollo Client with the WORKFLOW_DEFINITIONS query\n * Automatically filters by productId if configured\n */\nexport function useWorkflowDefinitions(\n input: ListWorkflowDefinitionsInput = {},\n) {\n const [workflows, setWorkflows] = useState<WorkflowDefinition[]>([]);\n const [total, setTotal] = useState(0);\n const [hasMore, setHasMore] = useState(false);\n const [loading, setLoading] = useState(true);\n const [error, setError] = useState<Error | null>(null);\n const [retryCount, setRetryCount] = useState(0);\n\n // Add productId filter if configured\n const config = getFluidGridsConfig();\n const inputWithProductFilter = {\n ...input,\n customFilters: {\n ...(input.customFilters || {}),\n ...(config.productId ? { productId: config.productId } : {}),\n },\n };\n\n // Stringify input to use as stable dependency\n const inputKey = JSON.stringify(inputWithProductFilter);\n\n const fetchData = useCallback(\n async (isRetry = false) => {\n setLoading(true);\n setError(null);\n try {\n const client = getFluidGridsClient();\n const result = await client.query<WorkflowDefinitionsData>({\n query: WORKFLOW_DEFINITIONS,\n variables: { input: JSON.parse(inputKey) },\n fetchPolicy: \"network-only\",\n });\n setWorkflows(result.data?.workflowDefinitions?.items ?? []);\n setTotal(result.data?.workflowDefinitions?.total ?? 0);\n setHasMore(result.data?.workflowDefinitions?.hasMore ?? false);\n // Reset retry count on success\n if (isRetry) setRetryCount(0);\n } catch (err) {\n // Handle Apollo error 89 \"Store reset while query was in flight\"\n // This occurs when shell's MultiGatewayProvider cleans up during re-renders\n // Retry after a short delay to allow client to stabilize\n if (isStoreResetError(err)) {\n console.warn(\n \"[useWorkflowDefinitions] Store reset error - will retry\",\n );\n if (retryCount < 3) {\n setRetryCount((prev) => prev + 1);\n // Don't set loading to false, will retry\n return;\n }\n console.warn(\"[useWorkflowDefinitions] Max retries reached\");\n }\n console.error(\"[useWorkflowDefinitions] Error:\", err);\n setError(err as Error);\n } finally {\n setLoading(false);\n }\n },\n [inputKey, retryCount],\n );\n\n // Initial fetch and retry on store reset\n useEffect(() => {\n fetchData(retryCount > 0);\n }, [fetchData, retryCount]);\n\n // Retry with delay when retryCount increases\n useEffect(() => {\n if (retryCount > 0 && retryCount <= 3) {\n const timer = setTimeout(() => {\n fetchData(true);\n }, 500 * retryCount); // Exponential backoff: 500ms, 1000ms, 1500ms\n return () => clearTimeout(timer);\n }\n }, [retryCount, fetchData]);\n\n return {\n workflows,\n total,\n hasMore,\n loading,\n error,\n refetch: () => fetchData(false),\n };\n}\n\n/**\n * Hook to fetch a single workflow definition\n */\nexport function useWorkflowDefinition(workflowKey?: string, id?: string) {\n const [workflow, setWorkflow] = useState<WorkflowDefinition | null>(null);\n const [loading, setLoading] = useState(true);\n const [error, setError] = useState<Error | null>(null);\n\n const fetchData = useCallback(async () => {\n if (!workflowKey && !id) {\n setLoading(false);\n return;\n }\n\n setLoading(true);\n setError(null);\n try {\n const client = getFluidGridsClient();\n const result = await client.query<WorkflowDefinitionData>({\n query: WORKFLOW_DEFINITION,\n variables: { workflowKey, id },\n fetchPolicy: \"cache-first\",\n });\n setWorkflow(result.data?.workflowDefinition ?? null);\n } catch (err) {\n setError(err as Error);\n } finally {\n setLoading(false);\n }\n }, [workflowKey, id]);\n\n useEffect(() => {\n fetchData();\n }, [fetchData]);\n\n return {\n workflow,\n loading,\n error,\n refetch: fetchData,\n };\n}\n\n/**\n * Lazy hook to fetch workflow definition on demand\n */\nexport function useLazyWorkflowDefinition() {\n const [workflow, setWorkflow] = useState<WorkflowDefinition | null>(null);\n const [loading, setLoading] = useState(false);\n const [error, setError] = useState<Error | null>(null);\n\n const getWorkflow = useCallback(\n async (workflowKey?: string, id?: string, version?: string) => {\n setLoading(true);\n setError(null);\n try {\n const client = getFluidGridsClient();\n const result = await client.query<WorkflowDefinitionData>({\n query: WORKFLOW_DEFINITION,\n variables: { workflowKey, id, ...(version ? { version } : {}) },\n fetchPolicy: \"network-only\",\n });\n const data = result.data?.workflowDefinition ?? null;\n setWorkflow(data);\n return data;\n } catch (err) {\n setError(err as Error);\n return null;\n } finally {\n setLoading(false);\n }\n },\n [],\n );\n\n return {\n getWorkflow,\n workflow,\n loading,\n error,\n };\n}\n\n/**\n * Hook to fetch workflow versions\n */\nexport function useWorkflowVersions(workflowKey: string) {\n const [versions, setVersions] = useState<WorkflowDefinition[]>([]);\n const [loading, setLoading] = useState(true);\n const [error, setError] = useState<Error | null>(null);\n\n const fetchData = useCallback(async (): Promise<WorkflowDefinition[]> => {\n if (!workflowKey) {\n setLoading(false);\n return [];\n }\n\n setLoading(true);\n setError(null);\n try {\n const client = getFluidGridsClient();\n const result = await client.query<WorkflowVersionsData>({\n query: WORKFLOW_VERSIONS,\n variables: { workflowKey },\n fetchPolicy: \"network-only\",\n });\n const fetched = result.data?.workflowVersions ?? [];\n setVersions(fetched);\n return fetched;\n } catch (err) {\n setError(err as Error);\n return [];\n } finally {\n setLoading(false);\n }\n }, [workflowKey]);\n\n useEffect(() => {\n fetchData();\n }, [fetchData]);\n\n return {\n versions,\n loading,\n error,\n refetch: fetchData,\n };\n}\n\n// ============================================================================\n// Workflow Mutation Hooks\n// ============================================================================\n\ninterface CreateWorkflowData {\n createWorkflowDefinition: WorkflowDefinition;\n}\n\ninterface UpdateWorkflowData {\n updateWorkflowDefinition: WorkflowDefinition;\n}\n\ninterface CreateVersionData {\n createWorkflowVersion: {\n success: boolean;\n message?: string;\n workflow?: WorkflowDefinition;\n };\n}\n\ninterface DuplicateWorkflowData {\n duplicateWorkflow: {\n success: boolean;\n message?: string;\n workflow?: WorkflowDefinition;\n };\n}\n\ninterface TriggerWorkflowData {\n triggerWorkflow: {\n runId: string;\n workflowKey: string;\n version: string;\n triggerNodeId: string;\n status: string;\n };\n}\n\n/**\n * Hook to create a new workflow definition\n * Automatically adds productId and productName to context if configured\n */\nexport function useCreateWorkflow() {\n const [workflow, setWorkflow] = useState<WorkflowDefinition | null>(null);\n const [loading, setLoading] = useState(false);\n const [error, setError] = useState<Error | null>(null);\n\n const createWorkflow = useCallback(\n async (input: CreateWorkflowDefinitionInput) => {\n setLoading(true);\n setError(null);\n try {\n const config = getFluidGridsConfig();\n\n // Add productId to context for product-level isolation\n const inputWithProductContext = {\n ...input,\n context: {\n ...(input.context || {}),\n ...(config.productId ? { productId: config.productId } : {}),\n ...(config.productName ? { productName: config.productName } : {}),\n },\n };\n\n const client = getFluidGridsClient();\n const result = throwIfResultError(\n await client.mutate<CreateWorkflowData>({\n mutation: CREATE_WORKFLOW_DEFINITION,\n variables: { input: inputWithProductContext },\n refetchQueries: [\"WorkflowDefinitions\"],\n }),\n );\n const data = result.data?.createWorkflowDefinition ?? null;\n setWorkflow(data);\n return data;\n } catch (err) {\n setError(err as Error);\n return null;\n } finally {\n setLoading(false);\n }\n },\n [],\n );\n\n return {\n createWorkflow,\n workflow,\n loading,\n error,\n };\n}\n\n/**\n * Hook to update a workflow definition\n */\nexport function useUpdateWorkflow() {\n const [workflow, setWorkflow] = useState<WorkflowDefinition | null>(null);\n const [loading, setLoading] = useState(false);\n const [error, setError] = useState<Error | null>(null);\n\n const updateWorkflow = useCallback(\n async (id: string, input: UpdateWorkflowDefinitionInput) => {\n setLoading(true);\n setError(null);\n try {\n const client = getFluidGridsClient();\n const result = throwIfResultError(\n await client.mutate<UpdateWorkflowData>({\n mutation: UPDATE_WORKFLOW_DEFINITION,\n variables: { id, input },\n }),\n );\n const data = result.data?.updateWorkflowDefinition ?? null;\n setWorkflow(data);\n return data;\n } catch (err) {\n setError(err as Error);\n return null;\n } finally {\n setLoading(false);\n }\n },\n [],\n );\n\n return {\n updateWorkflow,\n workflow,\n loading,\n error,\n };\n}\n\n/**\n * Hook to create a new workflow version\n */\nexport function useCreateWorkflowVersion() {\n const [result, setResult] = useState<\n CreateVersionData[\"createWorkflowVersion\"] | null\n >(null);\n const [loading, setLoading] = useState(false);\n const [error, setError] = useState<Error | null>(null);\n\n const createVersion = useCallback(\n async (\n workflowKey: string,\n input: { version: string; definitionJson: unknown; description?: string },\n ) => {\n setLoading(true);\n setError(null);\n try {\n const client = getFluidGridsClient();\n const response = throwIfResultError(\n await client.mutate<CreateVersionData>({\n mutation: CREATE_WORKFLOW_VERSION,\n variables: { workflowKey, input },\n }),\n );\n const data = response.data?.createWorkflowVersion ?? null;\n setResult(data);\n return data;\n } catch (err) {\n setError(err as Error);\n return null;\n } finally {\n setLoading(false);\n }\n },\n [],\n );\n\n return {\n createVersion,\n result,\n loading,\n error,\n };\n}\n\n/**\n * Hook to delete a workflow definition.\n * - If version is provided: deletes that specific version only.\n * - If version is omitted: deletes ALL versions for the workflowKey (removes the entire workflow).\n */\nexport function useDeleteWorkflow() {\n const [loading, setLoading] = useState(false);\n const [error, setError] = useState<Error | null>(null);\n\n const deleteWorkflow = useCallback(\n async (workflowKey: string, version?: string) => {\n setLoading(true);\n setError(null);\n try {\n const client = getFluidGridsClient();\n const result = throwIfResultError(\n await client.mutate({\n mutation: DELETE_WORKFLOW_DEFINITION,\n variables: { workflowKey, ...(version ? { version } : {}) },\n refetchQueries: [\"WorkflowDefinitions\"],\n }),\n );\n return (\n (result.data as { deleteWorkflowDefinition?: boolean })\n ?.deleteWorkflowDefinition ?? false\n );\n } catch (err) {\n setError(err as Error);\n return false;\n } finally {\n setLoading(false);\n }\n },\n [],\n );\n\n return {\n deleteWorkflow,\n loading,\n error,\n };\n}\n\n/**\n * Hook to duplicate a workflow\n */\nexport function useDuplicateWorkflow() {\n const [result, setResult] = useState<\n DuplicateWorkflowData[\"duplicateWorkflow\"] | null\n >(null);\n const [loading, setLoading] = useState(false);\n const [error, setError] = useState<Error | null>(null);\n\n const duplicateWorkflow = useCallback(\n async (\n workflowKey: string,\n version: string,\n input: { newWorkflowKey: string; newVersion?: string },\n ) => {\n setLoading(true);\n setError(null);\n try {\n const client = getFluidGridsClient();\n const response = throwIfResultError(\n await client.mutate<DuplicateWorkflowData>({\n mutation: DUPLICATE_WORKFLOW,\n variables: { workflowKey, version, input },\n refetchQueries: [\"WorkflowDefinitions\"],\n }),\n );\n const data = response.data?.duplicateWorkflow ?? null;\n setResult(data);\n return data;\n } catch (err) {\n // Re-thrown (not swallowed) so callers can inspect the real error —\n // e.g. isQuotaExhaustedError(err.cause) — instead of only ever\n // seeing a generic \"Failed to duplicate workflow\" message. Every\n // existing caller already wraps this call in its own try/catch.\n setError(err as Error);\n throw err;\n } finally {\n setLoading(false);\n }\n },\n [],\n );\n\n return {\n duplicateWorkflow,\n result,\n loading,\n error,\n };\n}\n\n/**\n * Hook to restore a previous workflow version (creates a new DRAFT from the old version's definitionJson)\n */\nexport function useRestoreWorkflowVersion() {\n const [result, setResult] = useState<{\n success: boolean;\n message?: string;\n workflow?: WorkflowDefinition;\n } | null>(null);\n const [loading, setLoading] = useState(false);\n const [error, setError] = useState<Error | null>(null);\n\n const restoreVersion = useCallback(\n async (workflowKey: string, version: string) => {\n setLoading(true);\n setError(null);\n try {\n const client = getFluidGridsClient();\n const response = throwIfResultError(\n await client.mutate<{\n restoreWorkflowVersion: {\n success: boolean;\n message?: string;\n workflow?: WorkflowDefinition;\n };\n }>({\n mutation: RESTORE_WORKFLOW_VERSION,\n variables: { workflowKey, version },\n refetchQueries: [\"WorkflowDefinitions\"],\n }),\n );\n const data = response.data?.restoreWorkflowVersion ?? null;\n setResult(data);\n return data;\n } catch (err) {\n setError(err as Error);\n return null;\n } finally {\n setLoading(false);\n }\n },\n [],\n );\n\n return {\n restoreVersion,\n result,\n loading,\n error,\n };\n}\n\n/**\n * Hook to trigger a workflow execution\n */\nexport function useTriggerWorkflow() {\n const [result, setResult] = useState<\n TriggerWorkflowData[\"triggerWorkflow\"] | null\n >(null);\n const [loading, setLoading] = useState(false);\n const [error, setError] = useState<Error | null>(null);\n\n const triggerWorkflow = useCallback(async (input: TriggerWorkflowInput) => {\n setLoading(true);\n setError(null);\n try {\n const client = getFluidGridsClient();\n const response = throwIfResultError(\n await client.mutate<TriggerWorkflowData>({\n mutation: TRIGGER_WORKFLOW,\n variables: { input },\n }),\n );\n const data = response.data?.triggerWorkflow ?? null;\n setResult(data);\n return data;\n } catch (err) {\n setError(err as Error);\n return null;\n } finally {\n setLoading(false);\n }\n }, []);\n\n return {\n triggerWorkflow,\n result,\n loading,\n error,\n };\n}\n\n// ============================================================================\n// Workflow Runs Hooks\n// ============================================================================\n\ninterface WorkflowRunsData {\n workflowRuns: {\n items: unknown[];\n total: number;\n hasMore: boolean;\n };\n}\n\ninterface WorkflowRunData {\n workflowRun: unknown;\n}\n\n/**\n * Hook to fetch workflow runs\n */\nexport function useWorkflowRuns(\n input: {\n workflowKey?: string;\n status?: string;\n limit?: number;\n offset?: number;\n } = {},\n) {\n const [runs, setRuns] = useState<unknown[]>([]);\n const [total, setTotal] = useState(0);\n const [hasMore, setHasMore] = useState(false);\n const [loading, setLoading] = useState(true);\n const [error, setError] = useState<Error | null>(null);\n\n const fetchData = useCallback(async () => {\n setLoading(true);\n setError(null);\n try {\n const client = getFluidGridsClient();\n const result = await client.query<WorkflowRunsData>({\n query: WORKFLOW_RUNS,\n variables: { input },\n fetchPolicy: \"cache-first\",\n });\n setRuns(result.data?.workflowRuns?.items ?? []);\n setTotal(result.data?.workflowRuns?.total ?? 0);\n setHasMore(result.data?.workflowRuns?.hasMore ?? false);\n } catch (err) {\n setError(err as Error);\n } finally {\n setLoading(false);\n }\n }, [input]);\n\n useEffect(() => {\n fetchData();\n }, [fetchData]);\n\n return {\n runs,\n total,\n hasMore,\n loading,\n error,\n refetch: fetchData,\n };\n}\n\n/**\n * Hook to fetch a single workflow run with node states\n */\nexport function useWorkflowRun(id: string) {\n const [run, setRun] = useState<unknown>(null);\n const [loading, setLoading] = useState(true);\n const [error, setError] = useState<Error | null>(null);\n\n const fetchData = useCallback(async () => {\n if (!id) {\n setLoading(false);\n return;\n }\n\n setLoading(true);\n setError(null);\n try {\n const client = getFluidGridsClient();\n const result = await client.query<WorkflowRunData>({\n query: WORKFLOW_RUN,\n variables: { id },\n fetchPolicy: \"cache-first\",\n });\n setRun(result.data?.workflowRun ?? null);\n } catch (err) {\n setError(err as Error);\n } finally {\n setLoading(false);\n }\n }, [id]);\n\n useEffect(() => {\n fetchData();\n }, [fetchData]);\n\n return {\n run,\n loading,\n error,\n refetch: fetchData,\n };\n}\n\n// ============================================================================\n// Dashboard Hook\n// ============================================================================\n\ninterface DashboardSummaryData {\n dashboardSummary: {\n workflowsCount: number;\n activeWorkflowsCount: number;\n archivedWorkflowsCount: number;\n runsCountTotal: number;\n runsCompletedCount: number;\n runsFailedCount: number;\n runsRunningCount: number;\n runsPendingCount: number;\n workflowSuccessRate: number;\n nodeUsageStats: unknown[];\n recentRuns: unknown[];\n recentWorkflows: unknown[];\n };\n}\n\n/**\n * Hook to fetch dashboard summary\n */\nexport function useDashboardSummary(\n options: { workspaceId?: string; tenantId?: string; projectId?: string } = {},\n) {\n const [summary, setSummary] = useState<\n DashboardSummaryData[\"dashboardSummary\"] | null\n >(null);\n const [loading, setLoading] = useState(true);\n const [error, setError] = useState<Error | null>(null);\n\n const fetchData = useCallback(async () => {\n setLoading(true);\n setError(null);\n try {\n const client = getFluidGridsClient();\n const result = await client.query<DashboardSummaryData>({\n query: DASHBOARD_SUMMARY,\n variables: options,\n fetchPolicy: \"cache-first\",\n });\n setSummary(result.data?.dashboardSummary ?? null);\n } catch (err) {\n setError(err as Error);\n } finally {\n setLoading(false);\n }\n }, [options]);\n\n useEffect(() => {\n fetchData();\n }, [fetchData]);\n\n return {\n summary,\n loading,\n error,\n refetch: fetchData,\n };\n}\n\n// ============================================================================\n// Activate / Deactivate Workflow Hooks\n// ============================================================================\n\nconst ACTIVATE_WORKFLOW_DEFINITION = ActivateWorkflowDefinitionDocument;\nconst DEACTIVATE_WORKFLOW_DEFINITION = DeactivateWorkflowDefinitionDocument;\n\n/**\n * Hook to activate a workflow definition (set status to ACTIVE)\n */\nexport function useActivateWorkflow() {\n const [loading, setLoading] = useState(false);\n\n const activateWorkflow = useCallback(async (id: string) => {\n setLoading(true);\n try {\n const client = getFluidGridsClient();\n const result = throwIfResultError(\n await client.mutate<ActivateWorkflowDefinitionMutation>({\n mutation: ACTIVATE_WORKFLOW_DEFINITION,\n variables: { id },\n // Activation changes sibling versions' statuses too (previous\n // ACTIVE becomes ARCHIVED) — refresh the version list everywhere.\n refetchQueries: [\"WorkflowVersions\", \"WorkflowDefinitions\"],\n }),\n );\n return result.data?.activateWorkflowDefinition ?? null;\n } catch (err) {\n console.error(\"Error activating workflow:\", err);\n throw err;\n } finally {\n setLoading(false);\n }\n }, []);\n\n return { activateWorkflow, loading };\n}\n\n/**\n * Hook to deactivate a workflow definition (set status back to DRAFT)\n */\nexport function useDeactivateWorkflow() {\n const [loading, setLoading] = useState(false);\n\n const deactivateWorkflow = useCallback(async (id: string) => {\n setLoading(true);\n try {\n const client = getFluidGridsClient();\n const result = throwIfResultError(\n await client.mutate<DeactivateWorkflowDefinitionMutation>({\n mutation: DEACTIVATE_WORKFLOW_DEFINITION,\n variables: { id },\n refetchQueries: [\"WorkflowVersions\", \"WorkflowDefinitions\"],\n }),\n );\n return result.data?.deactivateWorkflowDefinition ?? null;\n } catch (err) {\n console.error(\"Error deactivating workflow:\", err);\n throw err;\n } finally {\n setLoading(false);\n }\n }, []);\n\n return { deactivateWorkflow, loading };\n}\n"]}
@@ -0,0 +1,25 @@
1
+ import { cn } from './chunk-3ZYUGTIT.js';
2
+ import { forwardRef } from 'react';
3
+ import { jsx } from 'react/jsx-runtime';
4
+
5
+ var Input = forwardRef(
6
+ ({ className, type, ...props }, ref) => {
7
+ return /* @__PURE__ */ jsx(
8
+ "input",
9
+ {
10
+ type,
11
+ className: cn(
12
+ "flex h-10 w-full rounded-md border border-input bg-background px-3 py-2 text-sm ring-offset-background file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50",
13
+ className
14
+ ),
15
+ ref,
16
+ ...props
17
+ }
18
+ );
19
+ }
20
+ );
21
+ Input.displayName = "Input";
22
+
23
+ export { Input };
24
+ //# sourceMappingURL=chunk-P5PKRQAO.js.map
25
+ //# sourceMappingURL=chunk-P5PKRQAO.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/ui/input.tsx"],"names":[],"mappings":";;;;AAKA,IAAM,KAAA,GAAQ,UAAA;AAAA,EACZ,CAAC,EAAE,SAAA,EAAW,MAAM,GAAG,KAAA,IAAS,GAAA,KAAQ;AACtC,IAAA,uBACE,GAAA;AAAA,MAAC,OAAA;AAAA,MAAA;AAAA,QACC,IAAA;AAAA,QACA,SAAA,EAAW,EAAA;AAAA,UACT,mXAAA;AAAA,UACA;AAAA,SACF;AAAA,QACA,GAAA;AAAA,QACC,GAAG;AAAA;AAAA,KACN;AAAA,EAEJ;AACF;AACA,KAAA,CAAM,WAAA,GAAc,OAAA","file":"chunk-P5PKRQAO.js","sourcesContent":["import { forwardRef, type InputHTMLAttributes } from \"react\";\nimport { cn } from \"../utils/cn\";\n\nexport interface InputProps extends InputHTMLAttributes<HTMLInputElement> {}\n\nconst Input = forwardRef<HTMLInputElement, InputProps>(\n ({ className, type, ...props }, ref) => {\n return (\n <input\n type={type}\n className={cn(\n \"flex h-10 w-full rounded-md border border-input bg-background px-3 py-2 text-sm ring-offset-background file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50\",\n className,\n )}\n ref={ref}\n {...props}\n />\n );\n },\n);\nInput.displayName = \"Input\";\n\nexport { Input };\n"]}
@@ -1,6 +1,5 @@
1
- import { useWorkflowTagOverlay } from './chunk-F2CI6H7E.js';
2
- import { useWorkflowDefinitions, useDuplicateWorkflow, useDeleteWorkflow } from './chunk-WZBJIBUX.js';
3
- import { useFlowStore } from './chunk-ZM4SSEVI.js';
1
+ import { useWorkflowTagOverlay, useFlowStore, QuotaExhaustedDialog } from './chunk-JPHK5LAL.js';
2
+ import { useWorkflowDefinitions, useDuplicateWorkflow, useDeleteWorkflow } from './chunk-MH4AHYK3.js';
4
3
  import { SdkPermissionButton, FLUIDGRIDS_PERMISSIONS, SdkPermissionGate } from './chunk-UIY2HBWA.js';
5
4
  import { config } from './chunk-WWU2O2SR.js';
6
5
  import { useState, useMemo } from 'react';
@@ -10,6 +9,7 @@ import { Icon } from '@iconify/react';
10
9
  import { Button, Badge, Input, IllustratedEmptyState, Skeleton, TooltipProvider, Card, Tooltip, TooltipTrigger, TooltipContent, AlertDialog, AlertDialogContent, AlertDialogHeader, AlertDialogTitle, AlertDialogDescription, AlertDialogFooter, AlertDialogCancel, AlertDialogAction } from '@burdenoff/fe-libs/ui';
11
10
  import { cn } from '@burdenoff/fe-libs/utils';
12
11
  import { TagBadge } from '@burdenoff/fe-libs/tag';
12
+ import { isQuotaExhaustedError } from '@burdenoff/fe-libs/shared/utils';
13
13
  import { toast } from 'sonner';
14
14
  import { Share2, Copy } from 'lucide-react';
15
15
  import { jsx, jsxs } from 'react/jsx-runtime';
@@ -181,6 +181,7 @@ var CardWorkflow = ({
181
181
  const { deleteWorkflow: deleteWorkflowMutation } = useDeleteWorkflow();
182
182
  const [showDeleteDialog, setShowDeleteDialog] = useState(false);
183
183
  const [isDeleting, setIsDeleting] = useState(false);
184
+ const [showQuotaExhausted, setShowQuotaExhausted] = useState(false);
184
185
  async function handleDuplicateWorkflow() {
185
186
  try {
186
187
  resetWorkflow();
@@ -199,6 +200,11 @@ var CardWorkflow = ({
199
200
  throw new Error(result?.message || "Failed to duplicate workflow");
200
201
  }
201
202
  } catch (error) {
203
+ const cause = error instanceof Error ? error.cause : void 0;
204
+ if (isQuotaExhaustedError(cause) || isQuotaExhaustedError(error)) {
205
+ setShowQuotaExhausted(true);
206
+ return;
207
+ }
202
208
  console.error("Error duplicating workflow:", error);
203
209
  toast.error(
204
210
  `Error duplicating workflow: ${error instanceof Error ? error.message : String(error)}`
@@ -407,7 +413,18 @@ var CardWorkflow = ({
407
413
  }
408
414
  )
409
415
  ] })
410
- ] }) })
416
+ ] }) }),
417
+ /* @__PURE__ */ jsx(
418
+ QuotaExhaustedDialog,
419
+ {
420
+ open: showQuotaExhausted,
421
+ onOpenChange: setShowQuotaExhausted,
422
+ onUpgrade: () => {
423
+ setShowQuotaExhausted(false);
424
+ navigate("/billing");
425
+ }
426
+ }
427
+ )
411
428
  ] });
412
429
  };
413
430
  var STATUS_FILTERS = [
@@ -650,5 +667,5 @@ function WorkflowsList() {
650
667
  }
651
668
 
652
669
  export { WorkflowsList };
653
- //# sourceMappingURL=chunk-FIREEQYQ.js.map
654
- //# sourceMappingURL=chunk-FIREEQYQ.js.map
670
+ //# sourceMappingURL=chunk-S7FNNFPU.js.map
671
+ //# sourceMappingURL=chunk-S7FNNFPU.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/SharePopup.tsx","../src/builder/components/ui/card-workflow.tsx","../src/pages/WorkflowsList.tsx"],"names":["useState","toast","jsxs","jsx","Button","useNavigate","uuidv4","Icon","cn"],"mappings":"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","file":"chunk-S7FNNFPU.js","sourcesContent":["import { useState } from \"react\";\nimport { Copy, Share2 } from \"lucide-react\";\nimport { toast } from \"sonner\";\nimport { Button } from \"@burdenoff/fe-libs/ui\";\nimport { config } from \"../config\";\n\ninterface SharePopupProps {\n url: string;\n embedSrc: string;\n}\n\nexport default function SharePopup({\n url = window.location.href,\n embedSrc = `${config.fluidgridFrontendUrl}/workflow-view/565201ec-e803-4281-ad39-a135c46daa89/1.0`,\n}: SharePopupProps) {\n const [isOpen, setIsOpen] = useState(false);\n const [width, setWidth] = useState(600);\n const [height, setHeight] = useState(400);\n const [activeTab, setActiveTab] = useState<\"link\" | \"embed\">(\"link\");\n\n const embedCode = `<iframe src=\"${embedSrc}\" width=\"${width}\" height=\"${height}\"></iframe>`;\n\n const copyToClipboard = (text: string, message: string) => {\n navigator.clipboard.writeText(text);\n toast.success(message);\n };\n\n if (!isOpen) {\n return (\n <Button variant=\"ghost\" size=\"icon\" onClick={() => setIsOpen(true)}>\n <Share2 className=\"h-4 w-4\" />\n <span className=\"sr-only\">Share</span>\n </Button>\n );\n }\n\n return (\n <div\n className=\"fixed inset-0 z-50 flex items-center justify-center bg-black/50\"\n onClick={() => setIsOpen(false)}\n >\n <div\n className=\"bg-card rounded-lg p-6 max-w-md w-full mx-4\"\n onClick={(e) => e.stopPropagation()}\n >\n <div className=\"flex justify-between items-center mb-4\">\n <h2 className=\"text-lg font-semibold\">Share</h2>\n <Button variant=\"ghost\" size=\"icon\" onClick={() => setIsOpen(false)}>\n &times;\n </Button>\n </div>\n\n <div className=\"flex gap-2 mb-4\">\n <Button\n variant={activeTab === \"link\" ? \"default\" : \"outline\"}\n size=\"sm\"\n onClick={() => setActiveTab(\"link\")}\n >\n Share Link\n </Button>\n <Button\n variant={activeTab === \"embed\" ? \"default\" : \"outline\"}\n size=\"sm\"\n onClick={() => setActiveTab(\"embed\")}\n >\n Embed\n </Button>\n </div>\n\n {activeTab === \"link\" && (\n <div className=\"flex items-center space-x-2\">\n <input\n readOnly\n value={url}\n className=\"flex-1 h-9 px-3 rounded-md border bg-background text-sm\"\n />\n <Button\n size=\"sm\"\n onClick={() => copyToClipboard(url, \"Link copied to clipboard\")}\n >\n <Copy className=\"h-4 w-4\" />\n </Button>\n </div>\n )}\n\n {activeTab === \"embed\" && (\n <div className=\"space-y-4\">\n <div className=\"grid grid-cols-2 gap-4\">\n <div>\n <label className=\"text-sm font-medium\">Width</label>\n <input\n type=\"number\"\n value={width}\n onChange={(e) => setWidth(Number(e.target.value))}\n className=\"w-full h-9 px-3 rounded-md border bg-background text-sm mt-1\"\n />\n </div>\n <div>\n <label className=\"text-sm font-medium\">Height</label>\n <input\n type=\"number\"\n value={height}\n onChange={(e) => setHeight(Number(e.target.value))}\n className=\"w-full h-9 px-3 rounded-md border bg-background text-sm mt-1\"\n />\n </div>\n </div>\n <div>\n <label className=\"text-sm font-medium\">Embed Code</label>\n <div className=\"relative mt-1\">\n <input\n readOnly\n value={embedCode}\n className=\"w-full h-9 px-3 pr-12 rounded-md border bg-background text-sm font-mono\"\n />\n <Button\n size=\"sm\"\n className=\"absolute right-1 top-1/2 -translate-y-1/2 h-7\"\n onClick={() =>\n copyToClipboard(embedCode, \"Embed code copied to clipboard\")\n }\n >\n <Copy className=\"h-4 w-4\" />\n </Button>\n </div>\n </div>\n </div>\n )}\n </div>\n </div>\n );\n}\n","import { useState } from \"react\";\nimport {\n AlertDialog,\n AlertDialogAction,\n AlertDialogCancel,\n AlertDialogContent,\n AlertDialogDescription,\n AlertDialogFooter,\n AlertDialogHeader,\n AlertDialogTitle,\n Button,\n Card,\n Tooltip,\n TooltipContent,\n TooltipTrigger,\n TooltipProvider,\n} from \"@burdenoff/fe-libs/ui\";\nimport { TagBadge } from \"@burdenoff/fe-libs/tag\";\nimport { cn } from \"@burdenoff/fe-libs/utils\";\nimport { isQuotaExhaustedError } from \"@burdenoff/fe-libs/shared/utils\";\nimport { Icon } from \"@iconify/react\";\nimport { toast } from \"sonner\";\nimport { useFlowStore } from \"../../stores/flow-store\";\nimport { useNavigate } from \"react-router\";\nimport { config } from \"../../../config\";\nimport SharePopup from \"../../../components/SharePopup\";\nimport {\n useDuplicateWorkflow,\n useDeleteWorkflow,\n} from \"../../../hooks/useWorkflows\";\nimport { SdkPermissionGate } from \"../../../permissions/PermissionsBridge\";\nimport { FLUIDGRIDS_PERMISSIONS } from \"../../../permissions/constants\";\nimport { QuotaExhaustedDialog } from \"../../../components/shared/QuotaExhaustedDialog\";\n\ninterface WorkflowTagChip {\n id: string;\n label: string;\n color?: string;\n}\n\ninterface WorkflowData {\n id?: string;\n workflow_key: string;\n version: string;\n name: string;\n description?: string;\n status?: string;\n alias?: string;\n updated_at?: string;\n created_at?: string;\n total_versions?: number;\n /** Resolved tag assignments, rendered as read-only chips. */\n tags?: WorkflowTagChip[];\n}\n\n/** Status pill: colored dot + label, calmer than a filled badge. */\nconst STATUS_STYLES: Record<string, { label: string; dotClass: string }> = {\n DRAFT: { label: \"Draft\", dotClass: \"bg-muted-foreground/60\" },\n ACTIVE: {\n label: \"Active\",\n dotClass: \"bg-[var(--color-status-success-text)]\",\n },\n ARCHIVED: { label: \"Archived\", dotClass: \"bg-muted-foreground/30\" },\n DEPRECATED: {\n label: \"Deprecated\",\n dotClass: \"bg-[var(--color-status-error-text)]\",\n },\n};\n\n/** Compact relative timestamp (\"2h ago\"); absolute date beyond a week. */\nfunction relativeTime(iso?: string): string {\n if (!iso) return \"—\";\n const then = new Date(iso).getTime();\n if (Number.isNaN(then)) return \"—\";\n const mins = Math.floor((Date.now() - then) / 60_000);\n if (mins < 1) return \"just now\";\n if (mins < 60) return `${mins}m ago`;\n const hrs = Math.floor(mins / 60);\n if (hrs < 24) return `${hrs}h ago`;\n const days = Math.floor(hrs / 24);\n if (days < 7) return `${days}d ago`;\n return new Intl.DateTimeFormat(\"en-US\", {\n month: \"short\",\n day: \"numeric\",\n year: \"numeric\",\n }).format(new Date(then));\n}\n\nexport const CardWorkflow = ({\n workflow,\n onUpdateSuccess,\n}: {\n workflow: WorkflowData;\n onUpdateSuccess: () => void;\n}) => {\n const navigate = useNavigate();\n const resetWorkflow = useFlowStore((s) => s.actions.resetWorkflow);\n const { duplicateWorkflow: duplicateWorkflowMutation } =\n useDuplicateWorkflow();\n const { deleteWorkflow: deleteWorkflowMutation } = useDeleteWorkflow();\n const [showDeleteDialog, setShowDeleteDialog] = useState(false);\n const [isDeleting, setIsDeleting] = useState(false);\n const [showQuotaExhausted, setShowQuotaExhausted] = useState(false);\n\n async function handleDuplicateWorkflow() {\n try {\n // Reset the store first to clear any existing state\n resetWorkflow();\n\n const result = await duplicateWorkflowMutation(\n workflow.workflow_key,\n workflow.version,\n {\n newWorkflowKey: `${workflow.workflow_key}_copy_${Date.now()}`,\n },\n );\n\n if (result?.success && result.workflow) {\n navigate(\n `../workflow/${result.workflow.workflowKey}/${result.workflow.version}`,\n );\n } else {\n throw new Error(result?.message || \"Failed to duplicate workflow\");\n }\n } catch (error) {\n // duplicateWorkflowMutation re-throws on failure, preserving the\n // original GraphQL error as `.cause` — check that (not the wrapped\n // message) to detect QUOTA_EXHAUSTED.\n const cause = error instanceof Error ? error.cause : undefined;\n if (isQuotaExhaustedError(cause) || isQuotaExhaustedError(error)) {\n setShowQuotaExhausted(true);\n return;\n }\n console.error(\"Error duplicating workflow:\", error);\n toast.error(\n `Error duplicating workflow: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n }\n\n const handleDeleteWorkflow = async (): Promise<void> => {\n if (!workflow.workflow_key) {\n console.error(\"Workflow ID is required to delete.\");\n return;\n }\n setIsDeleting(true);\n try {\n // Omit version to delete ALL versions of this workflow\n const success = await deleteWorkflowMutation(workflow.workflow_key);\n if (success) {\n setShowDeleteDialog(false);\n }\n } catch (error) {\n console.error(\"Error deleting workflow:\", error);\n toast.error(\n `Error deleting workflow: ${error instanceof Error ? error.message : String(error)}`,\n );\n } finally {\n setIsDeleting(false);\n setShowDeleteDialog(false);\n onUpdateSuccess();\n }\n };\n\n const handleOnEdit = () => {\n navigate(\"../workflow/\" + workflow.workflow_key + \"/\" + workflow.version);\n };\n\n /**\n * The whole card opens the builder (n8n-style). Inner controls — action\n * buttons, the share overlay (a non-portaled `fixed` div whose clicks bubble\n * through the card), and the dialog — must not trigger navigation.\n */\n const handleCardClick = (e: React.MouseEvent<HTMLDivElement>) => {\n const el = e.target as HTMLElement;\n if (el.closest(\"button, a, input, [role='dialog'], .fixed\")) return;\n handleOnEdit();\n };\n\n const statusInfo =\n STATUS_STYLES[workflow.status ?? \"DRAFT\"] ?? STATUS_STYLES.DRAFT;\n const updatedExact = workflow.updated_at\n ? new Date(workflow.updated_at).toLocaleString()\n : undefined;\n\n return (\n <TooltipProvider>\n <Card\n role=\"button\"\n tabIndex={0}\n aria-label={`Open workflow ${workflow.name}`}\n onClick={handleCardClick}\n onKeyDown={(e) => {\n if (\n e.target === e.currentTarget &&\n (e.key === \"Enter\" || e.key === \" \")\n ) {\n e.preventDefault();\n handleOnEdit();\n }\n }}\n className={cn(\n \"group relative flex min-h-44 cursor-pointer flex-col gap-0 rounded-xl border-border bg-card p-0\",\n \"transition-all duration-150 hover:-translate-y-0.5 hover:border-primary/40 hover:shadow-lg\",\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary/50\",\n )}\n >\n {/* Header: icon square + name/description + status pill */}\n <div className=\"flex flex-1 items-start gap-3 p-4\">\n <div className=\"flex size-9 shrink-0 items-center justify-center rounded-lg border border-primary/20 bg-primary/10 text-primary\">\n <Icon icon=\"mdi:transit-connection-variant\" className=\"size-5\" />\n </div>\n <div className=\"min-w-0 flex-1\">\n <div className=\"flex items-start justify-between gap-2\">\n <h3 className=\"truncate font-semibold leading-6 text-card-foreground\">\n {workflow?.name}\n </h3>\n <span className=\"mt-0.5 inline-flex shrink-0 items-center gap-1.5 rounded-full border border-border px-2 py-0.5 text-[11px] font-medium text-muted-foreground\">\n <span\n className={cn(\"size-1.5 rounded-full\", statusInfo.dotClass)}\n />\n {statusInfo.label}\n </span>\n </div>\n <p className=\"mt-1 line-clamp-2 text-xs leading-snug text-muted-foreground\">\n {workflow.description || \"No description\"}\n </p>\n {workflow.tags && workflow.tags.length > 0 && (\n <div className=\"mt-2 flex flex-wrap items-center gap-1\">\n {workflow.tags.slice(0, 3).map((tag) => (\n <TagBadge\n key={tag.id}\n id={tag.id}\n label={tag.label}\n color={tag.color}\n size=\"sm\"\n />\n ))}\n {workflow.tags.length > 3 && (\n <span className=\"text-[11px] text-muted-foreground\">\n +{workflow.tags.length - 3}\n </span>\n )}\n </div>\n )}\n </div>\n </div>\n\n {/* Footer: metadata + actions (actions brighten on hover/focus) */}\n <div className=\"flex items-center justify-between gap-2 border-t border-border px-4 py-1.5\">\n <div\n className=\"flex min-w-0 items-center gap-1.5 text-[11px] text-muted-foreground\"\n title={updatedExact}\n >\n <Icon icon=\"mdi:clock-outline\" className=\"size-3.5 shrink-0\" />\n <span className=\"truncate\">\n Updated {relativeTime(workflow.updated_at)}\n </span>\n <span aria-hidden=\"true\">·</span>\n <span className=\"shrink-0 font-mono\">\n {workflow.version}\n {workflow.alias ? ` (${workflow.alias})` : \"\"}\n </span>\n {workflow.total_versions && workflow.total_versions > 1 ? (\n <span className=\"shrink-0\">\n · {workflow.total_versions} versions\n </span>\n ) : null}\n </div>\n\n <div className=\"flex shrink-0 items-center gap-0.5 opacity-60 transition-opacity group-hover:opacity-100 group-focus-within:opacity-100\">\n <Tooltip>\n <TooltipTrigger asChild>\n <Button\n variant=\"ghost\"\n size=\"icon\"\n className=\"size-8\"\n onClick={handleOnEdit}\n aria-label=\"Edit workflow\"\n >\n <Icon icon=\"mynaui:edit\" className=\"size-4\" />\n </Button>\n </TooltipTrigger>\n <TooltipContent side=\"top\">\n <p>Edit workflow</p>\n </TooltipContent>\n </Tooltip>\n <Tooltip>\n <TooltipTrigger asChild>\n <span>\n <SharePopup\n url={`${config.fluidgridFrontendUrl}/workflow-view/${workflow.workflow_key}/${workflow.version}`}\n embedSrc={`${config.fluidgridFrontendUrl}/workflow-view/${workflow.workflow_key}/${workflow.version}`}\n />\n </span>\n </TooltipTrigger>\n <TooltipContent side=\"top\">\n <p>Share workflow</p>\n </TooltipContent>\n </Tooltip>\n <SdkPermissionGate\n permission={FLUIDGRIDS_PERMISSIONS.WORKFLOW_CREATE}\n >\n <Tooltip>\n <TooltipTrigger asChild>\n <Button\n variant=\"ghost\"\n size=\"icon\"\n className=\"size-8\"\n onClick={() => handleDuplicateWorkflow()}\n aria-label=\"Duplicate workflow\"\n >\n <Icon icon=\"mynaui:copy\" className=\"size-4\" />\n </Button>\n </TooltipTrigger>\n <TooltipContent side=\"top\">\n <p>Duplicate workflow</p>\n </TooltipContent>\n </Tooltip>\n </SdkPermissionGate>\n <SdkPermissionGate\n permission={FLUIDGRIDS_PERMISSIONS.WORKFLOW_DELETE}\n >\n <Tooltip>\n <TooltipTrigger asChild>\n <Button\n variant=\"ghost\"\n size=\"icon\"\n className=\"size-8 text-[var(--color-status-error-text)] hover:text-[var(--color-status-error-text)]\"\n onClick={() => setShowDeleteDialog(true)}\n aria-label=\"Delete workflow\"\n >\n <Icon icon=\"mynaui:trash\" className=\"size-4\" />\n </Button>\n </TooltipTrigger>\n <TooltipContent side=\"top\">\n <p>Delete workflow</p>\n </TooltipContent>\n </Tooltip>\n </SdkPermissionGate>\n </div>\n </div>\n </Card>\n\n <AlertDialog open={showDeleteDialog} onOpenChange={setShowDeleteDialog}>\n <AlertDialogContent>\n <AlertDialogHeader>\n <AlertDialogTitle>Delete Workflow</AlertDialogTitle>\n <AlertDialogDescription>\n Are you sure you want to delete workflow &quot;{workflow.name}\n &quot; and all its versions? This action cannot be undone.\n </AlertDialogDescription>\n </AlertDialogHeader>\n <AlertDialogFooter>\n <AlertDialogCancel disabled={isDeleting}>Cancel</AlertDialogCancel>\n <AlertDialogAction\n onClick={handleDeleteWorkflow}\n disabled={isDeleting}\n className=\"bg-destructive text-destructive-foreground hover:bg-destructive/90\"\n >\n {isDeleting ? \"Deleting...\" : \"Delete\"}\n </AlertDialogAction>\n </AlertDialogFooter>\n </AlertDialogContent>\n </AlertDialog>\n\n <QuotaExhaustedDialog\n open={showQuotaExhausted}\n onOpenChange={setShowQuotaExhausted}\n onUpgrade={() => {\n setShowQuotaExhausted(false);\n navigate(\"/billing\");\n }}\n />\n </TooltipProvider>\n );\n};\n","import { useMemo, useState } from \"react\";\nimport { useNavigate } from \"react-router\";\nimport { v4 as uuidv4 } from \"uuid\";\nimport { Icon } from \"@iconify/react\";\n\nimport {\n Badge,\n Button,\n IllustratedEmptyState,\n Input,\n Skeleton,\n} from \"@burdenoff/fe-libs/ui\";\nimport { cn } from \"@burdenoff/fe-libs/utils\";\nimport { CardWorkflow } from \"../builder/components/ui/card-workflow\";\nimport { useWorkflowDefinitions } from \"../hooks/useWorkflows\";\nimport { useWorkflowTagOverlay } from \"../hooks/useEntityTags\";\nimport { SdkPermissionButton } from \"../permissions/PermissionsBridge\";\nimport { FLUIDGRIDS_PERMISSIONS } from \"../permissions/constants\";\n\n/** Display order + labels for the status filter chips. */\nconst STATUS_FILTERS: Array<{ value: string; label: string }> = [\n { value: \"ACTIVE\", label: \"Active\" },\n { value: \"DRAFT\", label: \"Draft\" },\n { value: \"ARCHIVED\", label: \"Archived\" },\n { value: \"DEPRECATED\", label: \"Deprecated\" },\n];\n\nfunction SkeletonCard() {\n return (\n <div className=\"flex min-h-40 flex-col justify-between rounded-xl border border-border bg-card p-6\">\n <div className=\"space-y-2.5\">\n <Skeleton className=\"h-6 w-2/3 bg-card-foreground/15\" />\n <Skeleton className=\"h-4 w-full bg-card-foreground/10\" />\n </div>\n <div className=\"flex items-center gap-2\">\n <Skeleton className=\"mr-4 h-6 w-full bg-card-foreground/10\" />\n <Skeleton className=\"h-6 w-8 bg-card-foreground/10\" />\n <Skeleton className=\"h-6 w-8 bg-card-foreground/10\" />\n </div>\n </div>\n );\n}\n\nexport function WorkflowsList() {\n const navigate = useNavigate();\n const { workflows, loading, error, refetch } = useWorkflowDefinitions({\n limit: 100,\n latestOnly: true,\n });\n\n const [search, setSearch] = useState(\"\");\n const [statusFilter, setStatusFilter] = useState<string | null>(null);\n const [tagFilter, setTagFilter] = useState<string | null>(null);\n // Fetched separately from the workflow list so a missing/lagging\n // tagAssignments field can never blank the list itself.\n const { tagsByKey } = useWorkflowTagOverlay();\n\n // Only offer chips for statuses that actually occur in this workspace.\n const presentStatuses = useMemo(() => {\n const seen = new Set<string>(workflows.map((w) => w.status ?? \"DRAFT\"));\n return STATUS_FILTERS.filter((s) => seen.has(s.value));\n }, [workflows]);\n\n // Tags present across the listed workflows, for the filter chips. Tag ids\n // come from the assignments so the filter works on ids, not labels\n // (two vocabularies can share a label).\n const presentTags = useMemo(() => {\n const byId = new Map<string, { id: string; label: string }>();\n for (const w of workflows) {\n for (const a of tagsByKey[w.workflowKey] ?? []) {\n if (!byId.has(a.tagId)) {\n byId.set(a.tagId, {\n id: a.tagId,\n label: a.tagInfo?.label ?? a.tagInfo?.key ?? \"Tag\",\n });\n }\n }\n }\n return [...byId.values()].sort((a, b) => a.label.localeCompare(b.label));\n }, [workflows, tagsByKey]);\n\n const filtered = useMemo(() => {\n const q = search.trim().toLowerCase();\n return workflows.filter((w) => {\n if (statusFilter && (w.status ?? \"DRAFT\") !== statusFilter) return false;\n // Tags come from the separate overlay query, not from the workflow row:\n // tagAssignments was removed from the list query so a missing field can\n // never blank the list. Reading it here left the filter always empty.\n if (\n tagFilter &&\n !(tagsByKey[w.workflowKey] ?? []).some((a) => a.tagId === tagFilter)\n )\n return false;\n if (!q) return true;\n return [w.name, w.description, w.alias]\n .filter((v): v is string => typeof v === \"string\")\n .some((v) => v.toLowerCase().includes(q));\n });\n }, [workflows, search, statusFilter, tagFilter, tagsByKey]);\n\n const hasFilters =\n search.trim() !== \"\" || statusFilter !== null || tagFilter !== null;\n\n const createButton = (\n <SdkPermissionButton\n permission={FLUIDGRIDS_PERMISSIONS.WORKFLOW_CREATE}\n deniedTooltip=\"You don't have permission to create workflows\"\n >\n <Button\n variant=\"default\"\n size=\"default\"\n className=\"font-bold text-primary-foreground\"\n onClick={() => navigate(`../workflow/${uuidv4()}/v1`)}\n >\n <Icon icon=\"mynaui:plus\" className=\"size-5 text-primary-foreground\" />\n Create Workflow\n </Button>\n </SdkPermissionButton>\n );\n\n return (\n // min-h-screen (matching the sibling pages) makes short content still fill\n // the viewport, keeping the shell footer below the fold.\n <main className=\"flex min-h-screen w-full flex-col bg-background-primary\">\n <div className=\"flex flex-1 flex-col gap-5 p-4 sm:p-6\">\n {/* Page header */}\n <div className=\"flex flex-wrap items-start justify-between gap-3\">\n <div className=\"min-w-0\">\n <div className=\"flex items-center gap-2.5\">\n <h1 className=\"text-2xl font-bold tracking-tight\">Workflows</h1>\n {!loading && !error && (\n <Badge variant=\"secondary\" className=\"font-mono\">\n {workflows.length}\n </Badge>\n )}\n </div>\n <p className=\"mt-1 text-sm text-muted-foreground\">\n Build, run, and manage your automations. Open a workflow to edit\n it in the visual builder.\n </p>\n </div>\n {createButton}\n </div>\n\n {/* Toolbar: search + status chips (only useful once something exists) */}\n {!loading && !error && workflows.length > 0 && (\n <div className=\"flex flex-wrap items-center gap-3\">\n <div className=\"relative w-full max-w-xs\">\n <Icon\n icon=\"mynaui:search\"\n className=\"pointer-events-none absolute left-2.5 top-1/2 size-4 -translate-y-1/2 text-muted-foreground\"\n />\n <Input\n value={search}\n onChange={(e) => setSearch(e.target.value)}\n placeholder=\"Search workflows…\"\n aria-label=\"Search workflows\"\n className=\"pl-8\"\n />\n </div>\n {presentStatuses.length > 1 && (\n <div className=\"flex flex-wrap items-center gap-1.5\">\n <button\n type=\"button\"\n onClick={() => setStatusFilter(null)}\n className={cn(\n \"rounded-full border px-3 py-1 text-xs font-medium transition-colors\",\n statusFilter === null\n ? \"border-transparent bg-primary text-primary-foreground\"\n : \"border-border bg-card text-muted-foreground hover:text-foreground\",\n )}\n >\n All\n </button>\n {presentStatuses.map((s) => (\n <button\n key={s.value}\n type=\"button\"\n onClick={() =>\n setStatusFilter((cur) =>\n cur === s.value ? null : s.value,\n )\n }\n className={cn(\n \"rounded-full border px-3 py-1 text-xs font-medium transition-colors\",\n statusFilter === s.value\n ? \"border-transparent bg-primary text-primary-foreground\"\n : \"border-border bg-card text-muted-foreground hover:text-foreground\",\n )}\n >\n {s.label}\n </button>\n ))}\n </div>\n )}\n {presentTags.length > 0 && (\n <div className=\"flex flex-wrap items-center gap-1.5\">\n <Icon\n icon=\"mdi:tag-outline\"\n className=\"size-4 text-muted-foreground\"\n aria-hidden=\"true\"\n />\n {presentTags.map((t) => (\n <button\n key={t.id}\n type=\"button\"\n onClick={() =>\n setTagFilter((cur) => (cur === t.id ? null : t.id))\n }\n className={cn(\n \"rounded-full border px-3 py-1 text-xs font-medium transition-colors\",\n tagFilter === t.id\n ? \"border-transparent bg-primary text-primary-foreground\"\n : \"border-border bg-card text-muted-foreground hover:text-foreground\",\n )}\n >\n {t.label}\n </button>\n ))}\n </div>\n )}\n </div>\n )}\n\n {/* Content */}\n {loading ? (\n <div className=\"grid grid-cols-1 gap-4 sm:grid-cols-2 lg:grid-cols-3 2xl:grid-cols-4\">\n {Array.from({ length: 6 }, (_, i) => (\n <SkeletonCard key={i} />\n ))}\n </div>\n ) : error ? (\n <div className=\"grid flex-1 place-items-center\">\n <div className=\"flex max-w-md flex-col items-center gap-3 rounded-xl border border-border bg-card p-8 text-center\">\n <Icon\n icon=\"mynaui:danger-triangle\"\n className=\"size-8 text-destructive\"\n />\n <div>\n <p className=\"font-semibold\">Couldn't load workflows</p>\n <p className=\"mt-1 text-sm text-muted-foreground\">\n {error.message}\n </p>\n </div>\n <Button variant=\"outline\" size=\"sm\" onClick={() => refetch()}>\n <Icon icon=\"mynaui:refresh\" className=\"size-4\" />\n Try again\n </Button>\n </div>\n </div>\n ) : workflows.length === 0 ? (\n <div className=\"grid flex-1 place-items-center\">\n <IllustratedEmptyState\n illustration=\"onboarding\"\n title=\"Create your first workflow\"\n description=\"Workflows automate multi-step processes — sync signups into your CRM, post alerts to Slack, or transform data between apps. Start from a blank canvas or a template.\"\n action={createButton}\n />\n </div>\n ) : filtered.length === 0 ? (\n <div className=\"grid flex-1 place-items-center\">\n <div className=\"flex flex-col items-center gap-3 text-center\">\n <Icon\n icon=\"mynaui:search\"\n className=\"size-8 text-muted-foreground\"\n />\n <p className=\"font-medium\">No workflows match your filters</p>\n <Button\n variant=\"outline\"\n size=\"sm\"\n onClick={() => {\n setSearch(\"\");\n setStatusFilter(null);\n setTagFilter(null);\n }}\n >\n Clear filters\n </Button>\n </div>\n </div>\n ) : (\n <div className=\"grid grid-cols-1 gap-4 sm:grid-cols-2 lg:grid-cols-3 2xl:grid-cols-4\">\n {filtered.map((workflow) => (\n <CardWorkflow\n key={workflow.id}\n workflow={{\n id: workflow.id,\n workflow_key: workflow.workflowKey,\n version: workflow.version,\n name: workflow.name,\n description: workflow.description ?? undefined,\n status: workflow.status ?? undefined,\n alias: workflow.alias ?? undefined,\n updated_at: workflow.updatedAt ?? undefined,\n created_at: workflow.createdAt ?? undefined,\n total_versions: workflow.totalVersions ?? undefined,\n tags: (tagsByKey[workflow.workflowKey] ?? []).map((a) => ({\n id: a.tagId,\n label: a.tagInfo?.label ?? a.tagInfo?.key ?? \"Tag\",\n color: a.tagInfo?.color ?? undefined,\n })),\n }}\n onUpdateSuccess={() => refetch()}\n />\n ))}\n </div>\n )}\n </div>\n </main>\n );\n}\n"]}