@burdenoff/fluidgrids-fe-sdk 2026.1022.5 → 2026.1022.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,17 +1,13 @@
1
- import { REPLAY_WORKFLOW_RUN, RETRY_WORKFLOW_RUNS } from './chunk-QBFAJNUC.js';
1
+ import { validateDateRange } from './chunk-VGIH3SOT.js';
2
2
  import { executionsControls } from './chunk-D3UWK7GY.js';
3
3
  import { useExecutionsStore } from './chunk-UZG3ZIQM.js';
4
4
  import { useFluidGridsPageControls } from './chunk-PJAWNFJV.js';
5
- import { ExecutionDetailDocument, ExecutionStatsDocument, PauseExecutionDocument, ResumeExecutionDocument, CancelExecutionDocument, RetryNodeDocument, TriggerWorkflowDocument, TerminateExecutionDocument, ExecutionsListDocument } from './chunk-SAZVBFMO.js';
6
- import { throwIfResultError, openRunQuotaUpgradePrompt } from './chunk-4UAWCWS7.js';
7
5
  import { useTr } from './chunk-UULVIT25.js';
8
- import { getFluidGridsClient } from './chunk-NTWG3CJX.js';
9
6
  import { Icon } from '@iconify/react';
10
7
  import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
11
8
  import { useMemo, useState, useCallback, useRef, useEffect } from 'react';
12
9
  import { Button } from '@burdenoff/fe-libs/button';
13
10
  import { useNavigate } from 'react-router';
14
- import { gql } from '@apollo/client';
15
11
 
16
12
  // src/modules/executions/types/index.ts
17
13
  var RUN_STATUS_CONFIG = {
@@ -252,38 +248,6 @@ function NodeStatusBadge({
252
248
  }
253
249
  );
254
250
  }
255
-
256
- // src/modules/executions/utils/date-range.ts
257
- function toDate(value) {
258
- if (value === null || value === void 0 || value === "") return null;
259
- const date = value instanceof Date ? value : new Date(value);
260
- return Number.isNaN(date.getTime()) ? null : date;
261
- }
262
- function validateDateRange(start, end, preset) {
263
- const startDate = toDate(start);
264
- const endDate = toDate(end);
265
- if (startDate && endDate && startDate.getTime() > endDate.getTime()) {
266
- return { valid: false, start: null, end: null, preset: preset ?? "all" };
267
- }
268
- return {
269
- valid: true,
270
- start: startDate,
271
- end: endDate,
272
- preset: preset ?? "all"
273
- };
274
- }
275
- function dateRangeToInput(start, end) {
276
- const {
277
- valid,
278
- start: validatedStart,
279
- end: validatedEnd
280
- } = validateDateRange(start, end);
281
- if (!valid) return {};
282
- const input = {};
283
- if (validatedStart) input.startDate = validatedStart.toISOString();
284
- if (validatedEnd) input.endDate = validatedEnd.toISOString();
285
- return input;
286
- }
287
251
  function ExecutionFilters({
288
252
  workflows = [],
289
253
  onRefresh
@@ -2712,438 +2676,5 @@ function Pagination({
2712
2676
  ] })
2713
2677
  ] });
2714
2678
  }
2715
- gql`
2716
- subscription NodeStateUpdated($runId: String!) {
2717
- _empty
2718
- }
2719
- `;
2720
- gql`
2721
- subscription WorkflowCompleted($runId: String!) {
2722
- _empty
2723
- }
2724
- `;
2725
- gql`
2726
- subscription WorkflowError($runId: String!) {
2727
- _empty
2728
- }
2729
- `;
2730
- gql`
2731
- subscription ExecutionUpdated($runId: String!) {
2732
- _empty
2733
- }
2734
- `;
2735
- gql`
2736
- subscription ExecutionNodeStateUpdated($runId: String!) {
2737
- _empty
2738
- }
2739
- `;
2740
- gql`
2741
- subscription ExecutionCompleted($runId: String!) {
2742
- _empty
2743
- }
2744
- `;
2745
- gql`
2746
- subscription ExecutionError($runId: String!) {
2747
- _empty
2748
- }
2749
- `;
2750
-
2751
- // src/modules/executions/utils/retry.ts
2752
- var NON_REPLAYABLE_CONTEXT_KEYS = ["isScheduled", "workspaceId"];
2753
- function buildRetryTriggerInput(run) {
2754
- if (!run.workflowKey || !run.version || !run.triggerNodeId) return null;
2755
- const context = {};
2756
- const original = run.context;
2757
- if (original && typeof original === "object" && !Array.isArray(original)) {
2758
- for (const [key, value] of Object.entries(
2759
- original
2760
- )) {
2761
- if (NON_REPLAYABLE_CONTEXT_KEYS.includes(key)) {
2762
- continue;
2763
- }
2764
- context[key] = value;
2765
- }
2766
- }
2767
- context.retryOfRunId = run.id;
2768
- return {
2769
- workflowKey: run.workflowKey,
2770
- version: run.version,
2771
- triggerNodeId: run.triggerNodeId,
2772
- triggerData: run.triggerData ?? void 0,
2773
- context
2774
- };
2775
- }
2776
-
2777
- // src/modules/executions/hooks/useExecutions.ts
2778
- function useExecutions(input = {}) {
2779
- const [executions, setExecutions] = useState([]);
2780
- const [total, setTotal] = useState(0);
2781
- const [hasMore, setHasMore] = useState(false);
2782
- const [loading, setLoading] = useState(true);
2783
- const [error, setError] = useState(null);
2784
- const inputKey = JSON.stringify(input);
2785
- const reqIdRef = useRef(0);
2786
- const fetchData = useCallback(async () => {
2787
- const reqId = ++reqIdRef.current;
2788
- setLoading(true);
2789
- setError(null);
2790
- try {
2791
- const client = getFluidGridsClient();
2792
- const result = await client.query({
2793
- query: ExecutionsListDocument,
2794
- variables: { input: JSON.parse(inputKey) },
2795
- fetchPolicy: "network-only"
2796
- });
2797
- if (reqId !== reqIdRef.current) return;
2798
- setExecutions(result.data?.workflowRuns?.items ?? []);
2799
- setTotal(result.data?.workflowRuns?.total ?? 0);
2800
- setHasMore(result.data?.workflowRuns?.hasMore ?? false);
2801
- } catch (err) {
2802
- if (reqId !== reqIdRef.current) return;
2803
- setError(err);
2804
- } finally {
2805
- if (reqId === reqIdRef.current) setLoading(false);
2806
- }
2807
- }, [inputKey]);
2808
- useEffect(() => {
2809
- fetchData();
2810
- }, [fetchData]);
2811
- return {
2812
- executions,
2813
- total,
2814
- hasMore,
2815
- loading,
2816
- error,
2817
- refetch: fetchData
2818
- };
2819
- }
2820
- function useExecution(id) {
2821
- const [execution, setExecution] = useState(null);
2822
- const [loading, setLoading] = useState(true);
2823
- const [error, setError] = useState(null);
2824
- const fetchData = useCallback(async () => {
2825
- if (!id) {
2826
- setLoading(false);
2827
- return;
2828
- }
2829
- setLoading(true);
2830
- setError(null);
2831
- try {
2832
- const client = getFluidGridsClient();
2833
- const result = await client.query({
2834
- query: ExecutionDetailDocument,
2835
- variables: { id },
2836
- fetchPolicy: "network-only"
2837
- });
2838
- setExecution(result.data?.workflowRun ?? null);
2839
- } catch (err) {
2840
- setError(err);
2841
- } finally {
2842
- setLoading(false);
2843
- }
2844
- }, [id]);
2845
- useEffect(() => {
2846
- fetchData();
2847
- }, [fetchData]);
2848
- return {
2849
- execution,
2850
- loading,
2851
- error,
2852
- refetch: fetchData
2853
- };
2854
- }
2855
- function useExecutionStats(options = {}) {
2856
- const [stats, setStats] = useState(null);
2857
- const [loading, setLoading] = useState(true);
2858
- const [error, setError] = useState(null);
2859
- const optionsKey = JSON.stringify(options);
2860
- const fetchData = useCallback(async () => {
2861
- setLoading(true);
2862
- setError(null);
2863
- try {
2864
- const client = getFluidGridsClient();
2865
- const result = await client.query({
2866
- query: ExecutionStatsDocument,
2867
- variables: JSON.parse(optionsKey),
2868
- fetchPolicy: "network-only"
2869
- });
2870
- setStats(result.data?.dashboardSummary ?? null);
2871
- } catch (err) {
2872
- setError(err);
2873
- } finally {
2874
- setLoading(false);
2875
- }
2876
- }, [optionsKey]);
2877
- useEffect(() => {
2878
- fetchData();
2879
- }, [fetchData]);
2880
- return {
2881
- stats,
2882
- loading,
2883
- error,
2884
- refetch: fetchData
2885
- };
2886
- }
2887
- function useExecutionActions() {
2888
- const tr = useTr();
2889
- const [loading, setLoading] = useState(false);
2890
- const [error, setError] = useState(null);
2891
- const pauseExecution = useCallback(async (id) => {
2892
- setLoading(true);
2893
- setError(null);
2894
- try {
2895
- const client = getFluidGridsClient();
2896
- const result = throwIfResultError(
2897
- await client.mutate({
2898
- mutation: PauseExecutionDocument,
2899
- variables: { id }
2900
- })
2901
- );
2902
- return result.data?.pauseWorkflowRun ?? null;
2903
- } catch (err) {
2904
- setError(err);
2905
- return null;
2906
- } finally {
2907
- setLoading(false);
2908
- }
2909
- }, []);
2910
- const resumeExecution = useCallback(async (id) => {
2911
- setLoading(true);
2912
- setError(null);
2913
- try {
2914
- const client = getFluidGridsClient();
2915
- const result = throwIfResultError(
2916
- await client.mutate({
2917
- mutation: ResumeExecutionDocument,
2918
- variables: { id }
2919
- })
2920
- );
2921
- return result.data?.resumeWorkflowRun ?? null;
2922
- } catch (err) {
2923
- setError(err);
2924
- return null;
2925
- } finally {
2926
- setLoading(false);
2927
- }
2928
- }, []);
2929
- const cancelExecution = useCallback(async (id) => {
2930
- setLoading(true);
2931
- setError(null);
2932
- try {
2933
- const client = getFluidGridsClient();
2934
- const result = throwIfResultError(
2935
- await client.mutate({
2936
- mutation: CancelExecutionDocument,
2937
- variables: { id }
2938
- })
2939
- );
2940
- return result.data?.cancelWorkflowRun ?? null;
2941
- } catch (err) {
2942
- setError(err);
2943
- return null;
2944
- } finally {
2945
- setLoading(false);
2946
- }
2947
- }, []);
2948
- const retryNode = useCallback(async (runId, nodeId) => {
2949
- setLoading(true);
2950
- setError(null);
2951
- try {
2952
- const client = getFluidGridsClient();
2953
- const result = throwIfResultError(
2954
- await client.mutate({
2955
- mutation: RetryNodeDocument,
2956
- variables: { id: runId, nodeId }
2957
- })
2958
- );
2959
- return result.data?.retryNode ?? null;
2960
- } catch (err) {
2961
- setError(err);
2962
- return null;
2963
- } finally {
2964
- setLoading(false);
2965
- }
2966
- }, []);
2967
- const retryExecution = useCallback(
2968
- async (execution) => {
2969
- const input = buildRetryTriggerInput(execution);
2970
- if (!input) {
2971
- const message = "This run has no trigger node, so it cannot be re-run.";
2972
- setError(new Error(message));
2973
- return { ok: false, message };
2974
- }
2975
- setLoading(true);
2976
- setError(null);
2977
- try {
2978
- const client = getFluidGridsClient();
2979
- const result = throwIfResultError(
2980
- await client.mutate({
2981
- mutation: TriggerWorkflowDocument,
2982
- variables: { input }
2983
- })
2984
- );
2985
- const run = result.data?.triggerWorkflow;
2986
- if (!run) {
2987
- const message = "The workflow did not start.";
2988
- setError(new Error(message));
2989
- return { ok: false, message };
2990
- }
2991
- return { ok: true, run };
2992
- } catch (err) {
2993
- const error2 = err;
2994
- setError(error2);
2995
- openRunQuotaUpgradePrompt(err, tr);
2996
- return { ok: false, message: error2.message };
2997
- } finally {
2998
- setLoading(false);
2999
- }
3000
- },
3001
- [tr]
3002
- );
3003
- const replayExecution = useCallback(
3004
- async (runId) => {
3005
- setLoading(true);
3006
- setError(null);
3007
- try {
3008
- const client = getFluidGridsClient();
3009
- const result = throwIfResultError(
3010
- await client.mutate({
3011
- mutation: REPLAY_WORKFLOW_RUN,
3012
- variables: { runId }
3013
- })
3014
- );
3015
- return result.data?.replayWorkflowRun ?? null;
3016
- } catch (err) {
3017
- setError(err);
3018
- openRunQuotaUpgradePrompt(err, tr);
3019
- return null;
3020
- } finally {
3021
- setLoading(false);
3022
- }
3023
- },
3024
- [tr]
3025
- );
3026
- const retryExecutions = useCallback(
3027
- async (runIds) => {
3028
- setLoading(true);
3029
- setError(null);
3030
- try {
3031
- const client = getFluidGridsClient();
3032
- const result = throwIfResultError(
3033
- await client.mutate({
3034
- mutation: RETRY_WORKFLOW_RUNS,
3035
- variables: { runIds }
3036
- })
3037
- );
3038
- return result.data?.retryWorkflowRuns ?? [];
3039
- } catch (err) {
3040
- setError(err);
3041
- openRunQuotaUpgradePrompt(err, tr);
3042
- return [];
3043
- } finally {
3044
- setLoading(false);
3045
- }
3046
- },
3047
- [tr]
3048
- );
3049
- const terminateExecution = useCallback(
3050
- async (runId, reason) => {
3051
- setLoading(true);
3052
- setError(null);
3053
- try {
3054
- const client = getFluidGridsClient();
3055
- const result = throwIfResultError(
3056
- await client.mutate({
3057
- mutation: TerminateExecutionDocument,
3058
- variables: { runId, reason }
3059
- })
3060
- );
3061
- return result.data?.terminateWorkflow ?? null;
3062
- } catch (err) {
3063
- setError(err);
3064
- return null;
3065
- } finally {
3066
- setLoading(false);
3067
- }
3068
- },
3069
- []
3070
- );
3071
- return {
3072
- pauseExecution,
3073
- resumeExecution,
3074
- cancelExecution,
3075
- retryNode,
3076
- retryExecution,
3077
- replayExecution,
3078
- retryExecutions,
3079
- terminateExecution,
3080
- loading,
3081
- error
3082
- };
3083
- }
3084
- var EXECUTIONS_SEARCH_DEBOUNCE_MS = 350;
3085
- function useExecutionsWithStore() {
3086
- const { filter, pagination, setTotal } = useExecutionsStore();
3087
- const [debouncedSearch, setDebouncedSearch] = useState(filter.search);
3088
- useEffect(() => {
3089
- const timer = setTimeout(
3090
- () => setDebouncedSearch(filter.search),
3091
- EXECUTIONS_SEARCH_DEBOUNCE_MS
3092
- );
3093
- return () => clearTimeout(timer);
3094
- }, [filter.search]);
3095
- const input = useMemo(() => {
3096
- const baseInput = {
3097
- limit: pagination.pageSize,
3098
- offset: (pagination.page - 1) * pagination.pageSize
3099
- };
3100
- if (filter.status !== "all") {
3101
- baseInput.status = filter.status;
3102
- }
3103
- if (filter.workflowKey) {
3104
- baseInput.workflowKey = filter.workflowKey;
3105
- }
3106
- Object.assign(
3107
- baseInput,
3108
- dateRangeToInput(filter.dateRange.start, filter.dateRange.end)
3109
- );
3110
- const term = debouncedSearch.trim();
3111
- if (term) {
3112
- baseInput.search = term;
3113
- }
3114
- if (filter.triggerType !== "all") {
3115
- baseInput.triggerType = filter.triggerType;
3116
- }
3117
- if (filter.durationMinSeconds !== null) {
3118
- baseInput.durationMinSeconds = filter.durationMinSeconds;
3119
- }
3120
- if (filter.durationMaxSeconds !== null) {
3121
- baseInput.durationMaxSeconds = filter.durationMaxSeconds;
3122
- }
3123
- if (filter.errorType !== "all") {
3124
- baseInput.errorType = filter.errorType;
3125
- }
3126
- if (filter.nodeId.trim()) {
3127
- baseInput.nodeId = filter.nodeId.trim();
3128
- }
3129
- return baseInput;
3130
- }, [filter, debouncedSearch, pagination.page, pagination.pageSize]);
3131
- const result = useExecutions(input);
3132
- useEffect(() => {
3133
- if (result.total !== pagination.total) {
3134
- setTotal(result.total);
3135
- }
3136
- }, [result.total, pagination.total, setTotal]);
3137
- return result;
3138
- }
3139
- function useAutoRefresh(refetchFn, enabled = true, interval = 5e3) {
3140
- useEffect(() => {
3141
- if (!enabled) return;
3142
- const timer = setInterval(() => {
3143
- refetchFn();
3144
- }, interval);
3145
- return () => clearInterval(timer);
3146
- }, [enabled, interval, refetchFn]);
3147
- }
3148
2679
 
3149
- export { ExecutionCards, ExecutionFilters, ExecutionStats, ExecutionStatusBadge, ExecutionTable, ExecutionTimeline, NodeTimeline, Pagination, RunLogViewer, buildNodeDisplayMap, formatRunVersion, useAutoRefresh, useExecution, useExecutionActions, useExecutionStats, useExecutionsWithStore };
2680
+ export { ExecutionCards, ExecutionFilters, ExecutionStats, ExecutionStatusBadge, ExecutionTable, ExecutionTimeline, NodeTimeline, Pagination, RunLogViewer, buildNodeDisplayMap, formatRunVersion };
@@ -636,42 +636,72 @@ function SettingsPage({
636
636
  const logStreamsEnabled = useFluidGridsFlag(FLUIDGRIDS_FLAGS.logStreams);
637
637
  const visibleTab = !logStreamsEnabled && activeTab === "log-streaming" ? "general" : activeTab;
638
638
  return /* @__PURE__ */ jsxs("div", { className: "p-4 sm:p-6 bg-background-primary min-h-screen", children: [
639
- /* @__PURE__ */ jsxs("div", { className: "flex flex-col sm:flex-row sm:items-center sm:justify-between gap-4 mb-6", children: [
640
- /* @__PURE__ */ jsxs("div", { children: [
641
- /* @__PURE__ */ jsx("h1", { className: "text-2xl sm:text-3xl font-bold text-text-primary", children: tr("fluidgrids.settings.page.title", "Settings") }),
642
- /* @__PURE__ */ jsx("p", { className: "text-text-secondary mt-1", children: tr(
643
- "fluidgrids.settings.page.subtitle",
644
- "Configure workflow execution and notification preferences"
645
- ) })
646
- ] }),
647
- /* @__PURE__ */ jsxs(Button, { variant: "outline", onClick: () => navigate("../list"), children: [
648
- /* @__PURE__ */ jsx(Icon, { icon: "mdi:arrow-left", className: "mr-2", width: 16 }),
649
- tr("fluidgrids.settings.page.backToWorkflows", "Back to Workflows")
650
- ] })
651
- ] }),
639
+ /* @__PURE__ */ jsxs(
640
+ "div",
641
+ {
642
+ className: "flex flex-col sm:flex-row sm:items-center sm:justify-between gap-4 mb-6",
643
+ "data-tour": "fluidgrids-settings-header",
644
+ children: [
645
+ /* @__PURE__ */ jsxs("div", { children: [
646
+ /* @__PURE__ */ jsx("h1", { className: "text-2xl sm:text-3xl font-bold text-text-primary", children: tr("fluidgrids.settings.page.title", "Settings") }),
647
+ /* @__PURE__ */ jsx("p", { className: "text-text-secondary mt-1", children: tr(
648
+ "fluidgrids.settings.page.subtitle",
649
+ "Configure workflow execution and notification preferences"
650
+ ) })
651
+ ] }),
652
+ /* @__PURE__ */ jsxs(Button, { variant: "outline", onClick: () => navigate("../list"), children: [
653
+ /* @__PURE__ */ jsx(Icon, { icon: "mdi:arrow-left", className: "mr-2", width: 16 }),
654
+ tr("fluidgrids.settings.page.backToWorkflows", "Back to Workflows")
655
+ ] })
656
+ ]
657
+ }
658
+ ),
652
659
  /* @__PURE__ */ jsxs(Tabs, { value: visibleTab, onValueChange: setActiveTab, className: "w-full", children: [
653
- /* @__PURE__ */ jsxs(TabsList, { className: "mb-6 h-auto max-w-full flex-wrap justify-start border border-border-secondary bg-background-secondary", children: [
654
- /* @__PURE__ */ jsxs(TabsTrigger, { value: "general", className: "gap-1.5", children: [
655
- /* @__PURE__ */ jsx(Icon, { icon: "mdi:cog", width: 16 }),
656
- tr("fluidgrids.settings.page.generalTab", "General")
657
- ] }),
658
- /* @__PURE__ */ jsxs(TabsTrigger, { value: "execution", className: "gap-1.5", children: [
659
- /* @__PURE__ */ jsx(Icon, { icon: "mdi:play-circle", width: 16 }),
660
- tr("fluidgrids.settings.page.executionTab", "Execution")
661
- ] }),
662
- /* @__PURE__ */ jsxs(TabsTrigger, { value: "notifications", className: "gap-1.5", children: [
663
- /* @__PURE__ */ jsx(Icon, { icon: "mdi:bell-outline", width: 16 }),
664
- tr("fluidgrids.settings.page.notificationsTab", "Notifications")
665
- ] }),
666
- logStreamsEnabled ? /* @__PURE__ */ jsxs(TabsTrigger, { value: "log-streaming", className: "gap-1.5", children: [
667
- /* @__PURE__ */ jsx(Icon, { icon: "mdi:transit-connection-variant", width: 16 }),
668
- tr("fluidgrids.settings.page.logStreamingTab", "Log streaming")
669
- ] }) : null,
670
- /* @__PURE__ */ jsxs(TabsTrigger, { value: "api", className: "gap-1.5", children: [
671
- /* @__PURE__ */ jsx(Icon, { icon: "mdi:api", width: 16 }),
672
- tr("fluidgrids.settings.page.apiTab", "API")
673
- ] })
674
- ] }),
660
+ /* @__PURE__ */ jsxs(
661
+ TabsList,
662
+ {
663
+ className: "mb-6 h-auto max-w-full flex-wrap justify-start border border-border-secondary bg-background-secondary",
664
+ "data-tour": "fluidgrids-settings-tabs",
665
+ children: [
666
+ /* @__PURE__ */ jsxs(TabsTrigger, { value: "general", className: "gap-1.5", children: [
667
+ /* @__PURE__ */ jsx(Icon, { icon: "mdi:cog", width: 16 }),
668
+ tr("fluidgrids.settings.page.generalTab", "General")
669
+ ] }),
670
+ /* @__PURE__ */ jsxs(
671
+ TabsTrigger,
672
+ {
673
+ value: "execution",
674
+ className: "gap-1.5",
675
+ "data-tour": "fluidgrids-settings-execution-tab",
676
+ children: [
677
+ /* @__PURE__ */ jsx(Icon, { icon: "mdi:play-circle", width: 16 }),
678
+ tr("fluidgrids.settings.page.executionTab", "Execution")
679
+ ]
680
+ }
681
+ ),
682
+ /* @__PURE__ */ jsxs(TabsTrigger, { value: "notifications", className: "gap-1.5", children: [
683
+ /* @__PURE__ */ jsx(Icon, { icon: "mdi:bell-outline", width: 16 }),
684
+ tr("fluidgrids.settings.page.notificationsTab", "Notifications")
685
+ ] }),
686
+ logStreamsEnabled ? /* @__PURE__ */ jsxs(TabsTrigger, { value: "log-streaming", className: "gap-1.5", children: [
687
+ /* @__PURE__ */ jsx(Icon, { icon: "mdi:transit-connection-variant", width: 16 }),
688
+ tr("fluidgrids.settings.page.logStreamingTab", "Log streaming")
689
+ ] }) : null,
690
+ /* @__PURE__ */ jsxs(
691
+ TabsTrigger,
692
+ {
693
+ value: "api",
694
+ className: "gap-1.5",
695
+ "data-tour": "fluidgrids-settings-api-tab",
696
+ children: [
697
+ /* @__PURE__ */ jsx(Icon, { icon: "mdi:api", width: 16 }),
698
+ tr("fluidgrids.settings.page.apiTab", "API")
699
+ ]
700
+ }
701
+ )
702
+ ]
703
+ }
704
+ ),
675
705
  /* @__PURE__ */ jsx(TabsContent, { value: "general", children: /* @__PURE__ */ jsx(GeneralTab, {}) }),
676
706
  /* @__PURE__ */ jsx(TabsContent, { value: "execution", children: /* @__PURE__ */ jsx(ExecutionTab, { workflowKey }) }),
677
707
  /* @__PURE__ */ jsx(TabsContent, { value: "notifications", children: /* @__PURE__ */ jsx(NotificationsTab, {}) }),
@@ -1,4 +1,4 @@
1
- import { FluidGridsProvider, Card, FluidGridsMark } from './chunk-T3UCFY7J.js';
1
+ import { FluidGridsProvider, Card, FluidGridsMark } from './chunk-36RTRUCM.js';
2
2
  import { Input } from './chunk-IEVSFCFS.js';
3
3
  import { Button } from './chunk-BQXVT32O.js';
4
4
  import { cn } from './chunk-JL7CASN5.js';