@burdenoff/microfe-bigconsole 2026.805.1 → 2026.805.3

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 (150) hide show
  1. package/dist/bigconsole/AdminRoot.js +21 -16
  2. package/dist/bigconsole/AdminRoot.js.map +1 -1
  3. package/dist/bigconsole/BigConsoleRoot.js +44 -39
  4. package/dist/bigconsole/BigConsoleRoot.js.map +1 -1
  5. package/dist/bigconsole/components/builder/inspector/DataBindingSection.js +109 -113
  6. package/dist/bigconsole/components/builder/inspector/DataBindingSection.js.map +1 -1
  7. package/dist/bigconsole/components/dashboard/CreateDashboardDialog.js +115 -113
  8. package/dist/bigconsole/components/dashboard/CreateDashboardDialog.js.map +1 -1
  9. package/dist/bigconsole/components/dashboard/DashboardCanvas.js +71 -62
  10. package/dist/bigconsole/components/dashboard/DashboardCanvas.js.map +1 -1
  11. package/dist/bigconsole/components/dashboard/DashboardToolbar.js +116 -100
  12. package/dist/bigconsole/components/dashboard/DashboardToolbar.js.map +1 -1
  13. package/dist/bigconsole/components/dashboard/DrilldownBreadcrumb.js +56 -54
  14. package/dist/bigconsole/components/dashboard/DrilldownBreadcrumb.js.map +1 -1
  15. package/dist/bigconsole/components/dashboard/GlobalFiltersBar/FilterChip.js +126 -125
  16. package/dist/bigconsole/components/dashboard/GlobalFiltersBar/FilterChip.js.map +1 -1
  17. package/dist/bigconsole/components/dashboard/GlobalFiltersBar/FilterEditor.js +151 -150
  18. package/dist/bigconsole/components/dashboard/GlobalFiltersBar/FilterEditor.js.map +1 -1
  19. package/dist/bigconsole/components/dashboard/GlobalFiltersBar/FilterPresetSelector.js +77 -76
  20. package/dist/bigconsole/components/dashboard/GlobalFiltersBar/FilterPresetSelector.js.map +1 -1
  21. package/dist/bigconsole/components/dashboard/GlobalFiltersBar/GlobalFiltersBar.js +97 -96
  22. package/dist/bigconsole/components/dashboard/GlobalFiltersBar/GlobalFiltersBar.js.map +1 -1
  23. package/dist/bigconsole/components/dashboard/ImportDashboardDialog.js +172 -191
  24. package/dist/bigconsole/components/dashboard/ImportDashboardDialog.js.map +1 -1
  25. package/dist/bigconsole/components/dashboard/PageTabsManager/PageTabsManager.js +100 -98
  26. package/dist/bigconsole/components/dashboard/PageTabsManager/PageTabsManager.js.map +1 -1
  27. package/dist/bigconsole/components/dashboard/PublishToStoreDialog.js +75 -83
  28. package/dist/bigconsole/components/dashboard/PublishToStoreDialog.js.map +1 -1
  29. package/dist/bigconsole/components/dashboard/SavedViewsDropdown/SavedViewsDropdown.js +151 -154
  30. package/dist/bigconsole/components/dashboard/SavedViewsDropdown/SavedViewsDropdown.js.map +1 -1
  31. package/dist/bigconsole/components/dashboard/ShareDialog/EmbedTab.js +187 -193
  32. package/dist/bigconsole/components/dashboard/ShareDialog/EmbedTab.js.map +1 -1
  33. package/dist/bigconsole/components/dashboard/TemplatePicker/TemplatePicker.js +1 -0
  34. package/dist/bigconsole/components/dashboard/WidgetPalette.js +110 -108
  35. package/dist/bigconsole/components/dashboard/WidgetPalette.js.map +1 -1
  36. package/dist/bigconsole/components/datasink/CacheTTLSelector.js +102 -103
  37. package/dist/bigconsole/components/datasink/CacheTTLSelector.js.map +1 -1
  38. package/dist/bigconsole/components/datasink/DataSinkCard.js +20 -20
  39. package/dist/bigconsole/components/datasink/DataSinkCard.js.map +1 -1
  40. package/dist/bigconsole/components/datasink/DataSinkDeleteDialog.js +36 -41
  41. package/dist/bigconsole/components/datasink/DataSinkDeleteDialog.js.map +1 -1
  42. package/dist/bigconsole/components/datasink/DataSinkRefreshDialog.js +38 -37
  43. package/dist/bigconsole/components/datasink/DataSinkRefreshDialog.js.map +1 -1
  44. package/dist/bigconsole/components/datasink/ImportDataGuideDialog.js +113 -117
  45. package/dist/bigconsole/components/datasink/ImportDataGuideDialog.js.map +1 -1
  46. package/dist/bigconsole/components/datasink/ImportDataSinkDialog.js +182 -197
  47. package/dist/bigconsole/components/datasink/ImportDataSinkDialog.js.map +1 -1
  48. package/dist/bigconsole/components/datasink/RefreshTypeSelector.js +166 -168
  49. package/dist/bigconsole/components/datasink/RefreshTypeSelector.js.map +1 -1
  50. package/dist/bigconsole/components/parser/DataSinkSelector.js +87 -86
  51. package/dist/bigconsole/components/parser/DataSinkSelector.js.map +1 -1
  52. package/dist/bigconsole/components/parser/ImportParserDialog.js +196 -211
  53. package/dist/bigconsole/components/parser/ImportParserDialog.js.map +1 -1
  54. package/dist/bigconsole/components/parser/ParserSelector.js +130 -128
  55. package/dist/bigconsole/components/parser/ParserSelector.js.map +1 -1
  56. package/dist/bigconsole/components/preview/AiPreviewMiniPanel.js +66 -63
  57. package/dist/bigconsole/components/preview/AiPreviewMiniPanel.js.map +1 -1
  58. package/dist/bigconsole/components/preview/AiPreviewPanel.js +95 -91
  59. package/dist/bigconsole/components/preview/AiPreviewPanel.js.map +1 -1
  60. package/dist/bigconsole/components/widgets/ActionConfigDialog.js +243 -230
  61. package/dist/bigconsole/components/widgets/ActionConfigDialog.js.map +1 -1
  62. package/dist/bigconsole/components/widgets/DrilldownConfigPanel.js +149 -145
  63. package/dist/bigconsole/components/widgets/DrilldownConfigPanel.js.map +1 -1
  64. package/dist/bigconsole/components/widgets/PropertiesPanel.js +504 -470
  65. package/dist/bigconsole/components/widgets/PropertiesPanel.js.map +1 -1
  66. package/dist/bigconsole/components/widgets/WidgetMenu.js +87 -76
  67. package/dist/bigconsole/components/widgets/WidgetMenu.js.map +1 -1
  68. package/dist/bigconsole/components/widgets/calendar/CalendarWidget.js +44 -47
  69. package/dist/bigconsole/components/widgets/calendar/CalendarWidget.js.map +1 -1
  70. package/dist/bigconsole/components/widgets/chart/ChartConfig.js +143 -142
  71. package/dist/bigconsole/components/widgets/chart/ChartConfig.js.map +1 -1
  72. package/dist/bigconsole/components/widgets/comments/WidgetComments.js +101 -88
  73. package/dist/bigconsole/components/widgets/comments/WidgetComments.js.map +1 -1
  74. package/dist/bigconsole/components/widgets/event-logs/EventLogViewer.js +135 -134
  75. package/dist/bigconsole/components/widgets/event-logs/EventLogViewer.js.map +1 -1
  76. package/dist/bigconsole/components/widgets/form/FormWidget.js +167 -159
  77. package/dist/bigconsole/components/widgets/form/FormWidget.js.map +1 -1
  78. package/dist/bigconsole/components/widgets/gauge/GaugeConfig.js +69 -68
  79. package/dist/bigconsole/components/widgets/gauge/GaugeConfig.js.map +1 -1
  80. package/dist/bigconsole/components/widgets/heatmap/HeatmapConfig.js +64 -72
  81. package/dist/bigconsole/components/widgets/heatmap/HeatmapConfig.js.map +1 -1
  82. package/dist/bigconsole/components/widgets/kanban/KanbanWidget.js +60 -59
  83. package/dist/bigconsole/components/widgets/kanban/KanbanWidget.js.map +1 -1
  84. package/dist/bigconsole/components/widgets/list/ListConfig.js +57 -56
  85. package/dist/bigconsole/components/widgets/list/ListConfig.js.map +1 -1
  86. package/dist/bigconsole/components/widgets/metric-card/MetricCardConfig.js +70 -69
  87. package/dist/bigconsole/components/widgets/metric-card/MetricCardConfig.js.map +1 -1
  88. package/dist/bigconsole/components/widgets/metric-card/SparklineChart.js +35 -34
  89. package/dist/bigconsole/components/widgets/metric-card/SparklineChart.js.map +1 -1
  90. package/dist/bigconsole/components/widgets/metric-card/TrendIndicator.js +20 -19
  91. package/dist/bigconsole/components/widgets/metric-card/TrendIndicator.js.map +1 -1
  92. package/dist/bigconsole/components/widgets/pivot-table/PivotTableWidget.js +178 -177
  93. package/dist/bigconsole/components/widgets/pivot-table/PivotTableWidget.js.map +1 -1
  94. package/dist/bigconsole/components/widgets/progress/ProgressConfig.js +76 -75
  95. package/dist/bigconsole/components/widgets/progress/ProgressConfig.js.map +1 -1
  96. package/dist/bigconsole/components/widgets/table/TableConfig.js +183 -168
  97. package/dist/bigconsole/components/widgets/table/TableConfig.js.map +1 -1
  98. package/dist/bigconsole/components/widgets/webhook-config/WebhookConfigPanel.js +187 -180
  99. package/dist/bigconsole/components/widgets/webhook-config/WebhookConfigPanel.js.map +1 -1
  100. package/dist/bigconsole/components/widgets/widget-actions/WidgetActions.js +120 -118
  101. package/dist/bigconsole/components/widgets/widget-actions/WidgetActions.js.map +1 -1
  102. package/dist/bigconsole/customWidget/CustomWidgetBuilderSheet.js +40 -38
  103. package/dist/bigconsole/customWidget/CustomWidgetBuilderSheet.js.map +1 -1
  104. package/dist/bigconsole/customWidget/CustomWidgetProposalPanel.js +150 -148
  105. package/dist/bigconsole/customWidget/CustomWidgetProposalPanel.js.map +1 -1
  106. package/dist/bigconsole/pages/DashboardBuilderPage.js +189 -175
  107. package/dist/bigconsole/pages/DashboardBuilderPage.js.map +1 -1
  108. package/dist/bigconsole/pages/DashboardViewPage.js +200 -187
  109. package/dist/bigconsole/pages/DashboardViewPage.js.map +1 -1
  110. package/dist/bigconsole/pages/DashboardsPage.js +379 -324
  111. package/dist/bigconsole/pages/DashboardsPage.js.map +1 -1
  112. package/dist/bigconsole/pages/DataParsersPage.js +185 -178
  113. package/dist/bigconsole/pages/DataParsersPage.js.map +1 -1
  114. package/dist/bigconsole/pages/DataSinkBuilderPage.js +195 -170
  115. package/dist/bigconsole/pages/DataSinkBuilderPage.js.map +1 -1
  116. package/dist/bigconsole/pages/DataSinkViewPage.js +224 -200
  117. package/dist/bigconsole/pages/DataSinkViewPage.js.map +1 -1
  118. package/dist/bigconsole/pages/DataSinksPage.js +281 -268
  119. package/dist/bigconsole/pages/DataSinksPage.js.map +1 -1
  120. package/dist/bigconsole/pages/DataSourcesPage.js +8 -7
  121. package/dist/bigconsole/pages/DataSourcesPage.js.map +1 -1
  122. package/dist/bigconsole/pages/InsightsPage.js +238 -208
  123. package/dist/bigconsole/pages/InsightsPage.js.map +1 -1
  124. package/dist/bigconsole/pages/ParserBuilderPage.js +480 -413
  125. package/dist/bigconsole/pages/ParserBuilderPage.js.map +1 -1
  126. package/dist/bigconsole/pages/ParserViewPage.js +192 -172
  127. package/dist/bigconsole/pages/ParserViewPage.js.map +1 -1
  128. package/dist/bigconsole/pages/PipelineBuilderPage.js +198 -163
  129. package/dist/bigconsole/pages/PipelineBuilderPage.js.map +1 -1
  130. package/dist/bigconsole/pages/PipelineViewPage.js +138 -133
  131. package/dist/bigconsole/pages/PipelineViewPage.js.map +1 -1
  132. package/dist/bigconsole/pages/PipelinesPage.js +162 -136
  133. package/dist/bigconsole/pages/PipelinesPage.js.map +1 -1
  134. package/dist/bigconsole/pages/SettingsPage.js +177 -172
  135. package/dist/bigconsole/pages/SettingsPage.js.map +1 -1
  136. package/dist/bigconsole/pages/WidgetDemoPage.js +121 -83
  137. package/dist/bigconsole/pages/WidgetDemoPage.js.map +1 -1
  138. package/dist/bigconsole/pages/WorkflowViewPage.js +269 -242
  139. package/dist/bigconsole/pages/WorkflowViewPage.js.map +1 -1
  140. package/dist/bigconsole/pages/WorkflowsPage.js +153 -138
  141. package/dist/bigconsole/pages/WorkflowsPage.js.map +1 -1
  142. package/dist/bigconsole/renderers/adapters/AdaptiveCardRenderer.js +111 -109
  143. package/dist/bigconsole/renderers/adapters/AdaptiveCardRenderer.js.map +1 -1
  144. package/dist/bigconsole/renderers/adapters/BlockKitRenderer.js +127 -126
  145. package/dist/bigconsole/renderers/adapters/BlockKitRenderer.js.map +1 -1
  146. package/dist/bigconsole/renderers/adapters/CustomRenderer.js +103 -103
  147. package/dist/bigconsole/renderers/adapters/CustomRenderer.js.map +1 -1
  148. package/dist/constants/permissions.js +83 -0
  149. package/dist/constants/permissions.js.map +1 -0
  150. package/package.json +2 -1
@@ -4,543 +4,570 @@ import t from "../hooks/useWorkflowOperations.js";
4
4
  import { BOOTSTRAP_RETRY_DELAY_MS as n } from "../constants.js";
5
5
  import { useBigConsole as r } from "../context/BigConsoleContext.js";
6
6
  import "../context/index.js";
7
- import { isNative as i, nativeCopyText as a, nativeNotify as o, nativeToast as ee } from "../../utils/nativeBridge.js";
7
+ import { BIGCONSOLE_PERMISSIONS as i } from "../../constants/permissions.js";
8
+ import { isNative as a, nativeCopyText as o, nativeNotify as s, nativeToast as ee } from "../../utils/nativeBridge.js";
8
9
  import te from "../components/workflow/WorkflowStatusBadge.js";
9
- import s from "../components/workflow/WorkflowDeleteDialog.js";
10
- import { memo as c, useCallback as l, useEffect as u, useState as d } from "react";
11
- import { useParams as f } from "react-router";
12
- import { GlassCard as ne, IllustratedEmptyState as p, NextSteps as m, PagePurpose as h } from "@burdenoff/fe-libs/ui";
13
- import { Fragment as g, jsx as _, jsxs as v } from "react/jsx-runtime";
14
- import { WorkflowBuilder as y } from "@burdenoff/fluidgrids-fe-sdk";
15
- import { formatDistanceToNow as b } from "date-fns";
10
+ import c from "../components/workflow/WorkflowDeleteDialog.js";
11
+ import { memo as l, useCallback as u, useEffect as d, useState as f } from "react";
12
+ import { useParams as ne } from "react-router";
13
+ import { AccessDenied as re, PermissionButton as p } from "@burdenoff/fe-libs/shared/components";
14
+ import { usePermissions as m } from "@burdenoff/fe-libs/shared/providers/shell";
15
+ import { useI18n as h } from "@burdenoff/fe-libs/shared/providers/shell/I18nProvider";
16
+ import { GlassCard as ie, IllustratedEmptyState as g, NextSteps as ae, PagePurpose as oe } from "@burdenoff/fe-libs/ui";
17
+ import { Fragment as _, jsx as v, jsxs as y } from "react/jsx-runtime";
18
+ import { WorkflowBuilder as b } from "@burdenoff/fluidgrids-fe-sdk";
19
+ import { formatDistanceToNow as x } from "date-fns";
16
20
  //#region src/bigconsole/pages/WorkflowViewPage.tsx
17
- var x = ({ className: e }) => /* @__PURE__ */ _("svg", {
21
+ var S = ({ className: e }) => /* @__PURE__ */ v("svg", {
18
22
  className: e,
19
23
  fill: "none",
20
24
  stroke: "currentColor",
21
25
  viewBox: "0 0 24 24",
22
- children: /* @__PURE__ */ _("path", {
26
+ children: /* @__PURE__ */ v("path", {
23
27
  strokeLinecap: "round",
24
28
  strokeLinejoin: "round",
25
29
  strokeWidth: 2,
26
30
  d: "M15 19l-7-7 7-7"
27
31
  })
28
- }), S = ({ className: e }) => /* @__PURE__ */ _("svg", {
32
+ }), C = ({ className: e }) => /* @__PURE__ */ v("svg", {
29
33
  className: e,
30
34
  fill: "none",
31
35
  stroke: "currentColor",
32
36
  viewBox: "0 0 24 24",
33
- children: /* @__PURE__ */ _("path", {
37
+ children: /* @__PURE__ */ v("path", {
34
38
  strokeLinecap: "round",
35
39
  strokeLinejoin: "round",
36
40
  strokeWidth: 2,
37
41
  d: "M11 5H6a2 2 0 00-2 2v11a2 2 0 002 2h11a2 2 0 002-2v-5m-1.414-9.414a2 2 0 112.828 2.828L11.828 15H9v-2.828l8.586-8.586z"
38
42
  })
39
- }), C = ({ className: e }) => /* @__PURE__ */ _("svg", {
43
+ }), se = ({ className: e }) => /* @__PURE__ */ v("svg", {
40
44
  className: e,
41
45
  fill: "none",
42
46
  stroke: "currentColor",
43
47
  viewBox: "0 0 24 24",
44
- children: /* @__PURE__ */ _("path", {
48
+ children: /* @__PURE__ */ v("path", {
45
49
  strokeLinecap: "round",
46
50
  strokeLinejoin: "round",
47
51
  strokeWidth: 2,
48
52
  d: "M19 7l-.867 12.142A2 2 0 0116.138 21H7.862a2 2 0 01-1.995-1.858L5 7m5 4v6m4-6v6m1-10V4a1 1 0 00-1-1h-4a1 1 0 00-1 1v3M4 7h16"
49
53
  })
50
- }), w = ({ className: e }) => /* @__PURE__ */ v("svg", {
54
+ }), ce = ({ className: e }) => /* @__PURE__ */ y("svg", {
51
55
  className: e,
52
56
  fill: "none",
53
57
  stroke: "currentColor",
54
58
  viewBox: "0 0 24 24",
55
- children: [/* @__PURE__ */ _("path", {
59
+ children: [/* @__PURE__ */ v("path", {
56
60
  strokeLinecap: "round",
57
61
  strokeLinejoin: "round",
58
62
  strokeWidth: 2,
59
63
  d: "M14.752 11.168l-3.197-2.132A1 1 0 0010 9.87v4.263a1 1 0 001.555.832l3.197-2.132a1 1 0 000-1.664z"
60
- }), /* @__PURE__ */ _("path", {
64
+ }), /* @__PURE__ */ v("path", {
61
65
  strokeLinecap: "round",
62
66
  strokeLinejoin: "round",
63
67
  strokeWidth: 2,
64
68
  d: "M21 12a9 9 0 11-18 0 9 9 0 0118 0z"
65
69
  })]
66
- }), T = ({ className: e }) => /* @__PURE__ */ _("svg", {
70
+ }), le = ({ className: e }) => /* @__PURE__ */ v("svg", {
67
71
  className: e,
68
72
  fill: "none",
69
73
  stroke: "currentColor",
70
74
  viewBox: "0 0 24 24",
71
- children: /* @__PURE__ */ _("path", {
75
+ children: /* @__PURE__ */ v("path", {
72
76
  strokeLinecap: "round",
73
77
  strokeLinejoin: "round",
74
78
  strokeWidth: 2,
75
79
  d: "M8 16H6a2 2 0 01-2-2V6a2 2 0 012-2h8a2 2 0 012 2v2m-6 12h8a2 2 0 002-2v-8a2 2 0 00-2-2h-8a2 2 0 00-2 2v8a2 2 0 002 2z"
76
80
  })
77
- }), E = ({ className: e }) => /* @__PURE__ */ _("svg", {
81
+ }), ue = ({ className: e }) => /* @__PURE__ */ v("svg", {
78
82
  className: e,
79
83
  fill: "none",
80
84
  stroke: "currentColor",
81
85
  viewBox: "0 0 24 24",
82
- children: /* @__PURE__ */ _("path", {
86
+ children: /* @__PURE__ */ v("path", {
83
87
  strokeLinecap: "round",
84
88
  strokeLinejoin: "round",
85
89
  strokeWidth: 2,
86
90
  d: "M5 13l4 4L19 7"
87
91
  })
88
- }), D = ({ className: e }) => /* @__PURE__ */ _("svg", {
92
+ }), de = ({ className: e }) => /* @__PURE__ */ v("svg", {
89
93
  className: e,
90
94
  fill: "none",
91
95
  stroke: "currentColor",
92
96
  viewBox: "0 0 24 24",
93
- children: /* @__PURE__ */ _("path", {
97
+ children: /* @__PURE__ */ v("path", {
94
98
  strokeLinecap: "round",
95
99
  strokeLinejoin: "round",
96
100
  strokeWidth: 2,
97
101
  d: "M4 7v10c0 2.21 3.582 4 8 4s8-1.79 8-4V7M4 7c0 2.21 3.582 4 8 4s8-1.79 8-4M4 7c0-2.21 3.582-4 8-4s8 1.79 8 4"
98
102
  })
99
- }), re = ({ className: e }) => /* @__PURE__ */ _("svg", {
103
+ }), fe = ({ className: e }) => /* @__PURE__ */ v("svg", {
100
104
  className: e,
101
105
  fill: "none",
102
106
  stroke: "currentColor",
103
107
  viewBox: "0 0 24 24",
104
- children: /* @__PURE__ */ _("path", {
108
+ children: /* @__PURE__ */ v("path", {
105
109
  strokeLinecap: "round",
106
110
  strokeLinejoin: "round",
107
111
  strokeWidth: 2,
108
112
  d: "M19 9l-7 7-7-7"
109
113
  })
110
- }), O = c(function() {
111
- let c = e(), { workflowId: O } = f(), { apiGatewayUrl: ie, authToken: ae, workspaceId: oe } = r(), [k, A] = d(null), [j, M] = d(!1), [, N] = d(!1), [P, F] = d(!1), [I, L] = d(!1), [R, z] = d(!1), [B, V] = d(!1), [H, U] = d(null), { loading: W, error: G, fetchWorkflow: K, deleteWorkflow: q, executeWorkflow: J, pollWorkflowExecution: Y } = t({ skipFetch: !0 });
112
- u(() => {
113
- if (!O) {
114
- V(!0);
114
+ }), w = l(function() {
115
+ let l = e(), { t: w } = h(), { workflowId: T } = ne(), { apiGatewayUrl: pe, authToken: me, workspaceId: he } = r(), { hasPermission: E, isLoading: D } = m(), O = E(i.WORKFLOW_READ), k = E(i.WORKFLOW_UPDATE);
116
+ E(i.WORKFLOW_DELETE);
117
+ let A = E(i.WORKFLOW_EXECUTE), [j, M] = f(null), [N, P] = f(!1), [, F] = f(!1), [I, L] = f(!1), [R, z] = f(!1), [B, V] = f(!1), [ge, H] = f(!1), [U, W] = f(null), { loading: _e, error: G, fetchWorkflow: K, deleteWorkflow: q, executeWorkflow: J, pollWorkflowExecution: Y } = t({ skipFetch: !0 });
118
+ d(() => {
119
+ if (!T) {
120
+ H(!0);
115
121
  return;
116
122
  }
117
123
  let e = !1, t = async (r) => {
118
124
  try {
119
- let i = await K(O);
125
+ let i = await K(T);
120
126
  if (e) return;
121
- i ? (A(i), V(!0)) : r === 0 ? setTimeout(() => {
127
+ i ? (M(i), H(!0)) : r === 0 ? setTimeout(() => {
122
128
  e || t(1);
123
- }, n) : V(!0);
129
+ }, n) : H(!0);
124
130
  } catch {
125
- e || V(!0);
131
+ e || H(!0);
126
132
  }
127
133
  };
128
134
  return t(0), () => {
129
135
  e = !0;
130
136
  };
131
- }, [O, K]);
132
- let X = l(() => {
133
- c("/workflows");
134
- }, [c]), Z = l(() => {
135
- c(`/workflows/${O}/edit`);
136
- }, [c, O]), se = l(async () => {
137
- if (O) {
138
- N(!0);
137
+ }, [T, K]);
138
+ let X = u(() => {
139
+ l("/workflows");
140
+ }, [l]), Z = u(() => {
141
+ l(`/workflows/${T}/edit`);
142
+ }, [l, T]), ve = u(async () => {
143
+ if (T) {
144
+ F(!0);
139
145
  try {
140
- await q(O) ? (i() && o("success"), c("/workflows")) : i() && o("error");
146
+ await q(T) ? (a() && s("success"), l("/workflows")) : a() && s("error");
141
147
  } catch {
142
- i() && o("error");
148
+ a() && s("error");
143
149
  } finally {
144
- N(!1), M(!1);
150
+ F(!1), P(!1);
145
151
  }
146
152
  }
147
153
  }, [
148
- O,
154
+ T,
149
155
  q,
150
- c
151
- ]), Q = l(async () => {
152
- if (!O) return;
153
- F(!0), U(null);
156
+ l
157
+ ]), Q = u(async () => {
158
+ if (!T) return;
159
+ L(!0), W(null);
154
160
  let e = Date.now();
155
161
  try {
156
- let t = await J(O);
162
+ let t = await J(T);
157
163
  if (t) {
158
164
  let n = Date.now() - e;
159
- t.externalWorkflowId ? (U({
165
+ t.externalWorkflowId ? (W({
160
166
  success: !0,
161
167
  output: {
162
168
  externalWorkflowId: t.externalWorkflowId,
163
169
  executionCount: t.executionCount,
164
- status: "Triggered — polling for completion..."
170
+ status: w("bigconsole.workflows.view.executionTriggeredPolling", "Triggered — polling for completion...")
165
171
  },
166
172
  error: null,
167
173
  executionTimeMs: n
168
- }), Y(O, {
174
+ }), Y(T, {
169
175
  intervalMs: 3e3,
170
176
  timeoutMs: 12e4,
171
177
  onProgress: (e) => {
172
- A(e);
178
+ M(e);
173
179
  }
174
180
  }).then((t) => {
175
- t && (A(t), U((n) => n && {
181
+ t && (M(t), W((n) => n && {
176
182
  ...n,
177
183
  output: {
178
184
  ...n.output || {},
179
- status: t.status === "error" ? "Failed" : "Completed",
185
+ status: t.status === "error" ? w("bigconsole.workflows.view.executionStatusFailed", "Failed") : w("bigconsole.workflows.view.executionStatusCompleted", "Completed"),
180
186
  executionCount: t.executionCount,
181
187
  lastExecutedAt: t.lastExecutedAt
182
188
  },
183
189
  executionTimeMs: Date.now() - e
184
190
  }));
185
- })) : U({
191
+ })) : W({
186
192
  success: !0,
187
193
  output: {
188
194
  executionCount: t.executionCount,
189
195
  lastExecutedAt: t.lastExecutedAt,
190
- status: "Completed"
196
+ status: w("bigconsole.workflows.view.executionStatusCompleted", "Completed")
191
197
  },
192
198
  error: null,
193
199
  executionTimeMs: n
194
200
  });
195
- let r = await K(O);
196
- r && A(r);
201
+ let r = await K(T);
202
+ r && M(r);
197
203
  }
198
204
  } catch (t) {
199
- U({
205
+ W({
200
206
  success: !1,
201
207
  output: null,
202
- error: t instanceof Error ? t.message : "Execution failed",
208
+ error: t instanceof Error ? t.message : w("bigconsole.workflows.errors.executionFailed", "Execution failed"),
203
209
  executionTimeMs: Date.now() - e
204
210
  });
205
211
  } finally {
206
- F(!1);
212
+ L(!1);
207
213
  }
208
214
  }, [
209
- O,
215
+ T,
210
216
  J,
211
217
  K,
212
- Y
213
- ]), ce = l(async () => {
214
- if (k?.webhookUrl) try {
215
- await a(k.webhookUrl), L(!0), i() && ee("Webhook copied"), setTimeout(() => L(!1), 2e3);
218
+ Y,
219
+ w
220
+ ]), ye = u(async () => {
221
+ if (j?.webhookUrl) try {
222
+ await o(j.webhookUrl), z(!0), a() && ee(w("bigconsole.workflows.view.webhookCopiedToast", "Webhook copied")), setTimeout(() => z(!1), 2e3);
216
223
  } catch {}
217
- }, [k?.webhookUrl]), le = l((e) => {
218
- c(`/datasinks/${e}`);
219
- }, [c]);
220
- if (!B || W && !k) return /* @__PURE__ */ _("div", {
224
+ }, [j?.webhookUrl, w]), be = u((e) => {
225
+ l(`/datasinks/${e}`);
226
+ }, [l]);
227
+ if (!ge || _e && !j || D) return /* @__PURE__ */ v("div", {
221
228
  className: "p-6 flex items-center justify-center min-h-[400px]",
222
- children: /* @__PURE__ */ v("svg", {
229
+ children: /* @__PURE__ */ y("svg", {
223
230
  className: "w-8 h-8 text-action-primary-bg animate-spin",
224
231
  fill: "none",
225
232
  viewBox: "0 0 24 24",
226
- children: [/* @__PURE__ */ _("circle", {
233
+ children: [/* @__PURE__ */ v("circle", {
227
234
  className: "opacity-25",
228
235
  cx: "12",
229
236
  cy: "12",
230
237
  r: "10",
231
238
  stroke: "currentColor",
232
239
  strokeWidth: "4"
233
- }), /* @__PURE__ */ _("path", {
240
+ }), /* @__PURE__ */ v("path", {
234
241
  className: "opacity-75",
235
242
  fill: "currentColor",
236
243
  d: "M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z"
237
244
  })]
238
245
  })
239
246
  });
240
- if (G || !k) return /* @__PURE__ */ v("div", {
247
+ if (!O) return /* @__PURE__ */ v(re, {
248
+ title: w("bigconsole.workflows.errors.accessDeniedTitle", "Access Denied"),
249
+ description: w("bigconsole.workflows.errors.accessDeniedViewDescription", "You don't have permission to view this workflow.")
250
+ });
251
+ if (G || !j) return /* @__PURE__ */ y("div", {
241
252
  className: "p-6",
242
- children: [/* @__PURE__ */ v("button", {
253
+ children: [/* @__PURE__ */ y("button", {
243
254
  type: "button",
244
255
  onClick: X,
245
256
  className: "inline-flex items-center gap-1 text-sm text-text-secondary hover:text-text-primary mb-4",
246
- children: [/* @__PURE__ */ _(x, { className: "w-4 h-4" }), "Back to Workflows"]
247
- }), /* @__PURE__ */ _(p, {
257
+ children: [/* @__PURE__ */ v(S, { className: "w-4 h-4" }), w("bigconsole.workflows.view.backToWorkflows", "Back to Workflows")]
258
+ }), /* @__PURE__ */ v(g, {
248
259
  illustration: "empty-data",
249
- title: "Workflow not found",
250
- description: G?.message || "The workflow you are looking for does not exist."
260
+ title: w("bigconsole.workflows.view.notFoundTitle", "Workflow not found"),
261
+ description: G?.message || w("bigconsole.workflows.view.notFoundDescription", "The workflow you are looking for does not exist.")
251
262
  })]
252
263
  });
253
- let $ = k.dataSinkLinks?.length || 0;
254
- return /* @__PURE__ */ v("div", {
264
+ let $ = j.dataSinkLinks?.length || 0, xe = [
265
+ ...A ? [{
266
+ id: "execute",
267
+ label: w("bigconsole.workflows.view.nextStepExecuteLabel", "Run the workflow"),
268
+ description: w("bigconsole.workflows.view.nextStepExecuteDescription", "Trigger an execution to pull fresh data now."),
269
+ onClick: Q
270
+ }] : [],
271
+ {
272
+ id: "design",
273
+ label: w("bigconsole.workflows.view.nextStepDesignLabel", "Inspect the design"),
274
+ description: w("bigconsole.workflows.view.nextStepDesignDescription", "Expand the read-only preview to see each step."),
275
+ onClick: () => V(!0)
276
+ },
277
+ ...k ? [{
278
+ id: "edit",
279
+ label: w("bigconsole.workflows.view.nextStepEditLabel", "Edit in the builder"),
280
+ description: w("bigconsole.workflows.view.nextStepEditDescription", "Open the FluidGrids visual builder to change the flow."),
281
+ onClick: Z
282
+ }] : [],
283
+ {
284
+ id: "sinks",
285
+ label: w("bigconsole.workflows.view.nextStepSinksLabel", "Check the linked data sinks"),
286
+ description: w("bigconsole.workflows.view.nextStepSinksDescription", "See where this workflow writes its output."),
287
+ onClick: () => l("/datasinks")
288
+ }
289
+ ];
290
+ return /* @__PURE__ */ y("div", {
255
291
  className: "p-6 max-w-5xl mx-auto",
256
292
  children: [
257
- /* @__PURE__ */ v("div", {
293
+ /* @__PURE__ */ y("div", {
258
294
  className: "mb-8",
259
- children: [/* @__PURE__ */ v("button", {
295
+ children: [/* @__PURE__ */ y("button", {
260
296
  type: "button",
261
297
  onClick: X,
262
298
  className: "inline-flex items-center gap-1 text-sm text-text-secondary hover:text-text-primary mb-4",
263
- children: [/* @__PURE__ */ _(x, { className: "w-4 h-4" }), "Back to Workflows"]
264
- }), /* @__PURE__ */ v("div", {
299
+ children: [/* @__PURE__ */ v(S, { className: "w-4 h-4" }), w("bigconsole.workflows.view.backToWorkflows", "Back to Workflows")]
300
+ }), /* @__PURE__ */ y("div", {
265
301
  className: "flex items-start justify-between",
266
- children: [/* @__PURE__ */ v("div", { children: [
267
- /* @__PURE__ */ v("div", {
302
+ children: [/* @__PURE__ */ y("div", { children: [
303
+ /* @__PURE__ */ y("div", {
268
304
  className: "flex items-center gap-3 mb-2",
269
- children: [/* @__PURE__ */ _("h1", {
305
+ children: [/* @__PURE__ */ v("h1", {
270
306
  className: "text-2xl font-bold text-text-primary",
271
- children: k.name
272
- }), /* @__PURE__ */ _(te, { status: k.status })]
307
+ children: j.name
308
+ }), /* @__PURE__ */ v(te, { status: j.status })]
273
309
  }),
274
- /* @__PURE__ */ _("p", {
310
+ /* @__PURE__ */ v("p", {
275
311
  className: "text-sm text-text-secondary font-mono",
276
- children: k.key
312
+ children: j.key
277
313
  }),
278
- k.externalWorkflowId && /* @__PURE__ */ v("p", {
314
+ j.externalWorkflowId && /* @__PURE__ */ y("p", {
279
315
  className: "text-xs text-text-tertiary mt-1",
280
- children: ["FluidGrids ID: ", /* @__PURE__ */ _("span", {
281
- className: "font-mono",
282
- children: k.externalWorkflowId
283
- })]
316
+ children: [
317
+ w("bigconsole.workflows.view.fluidGridsIdLabel", "FluidGrids ID:"),
318
+ " ",
319
+ /* @__PURE__ */ v("span", {
320
+ className: "font-mono",
321
+ children: j.externalWorkflowId
322
+ })
323
+ ]
284
324
  })
285
- ] }), /* @__PURE__ */ v("div", {
325
+ ] }), /* @__PURE__ */ y("div", {
286
326
  className: "flex items-center gap-2",
287
327
  children: [
288
- /* @__PURE__ */ v("button", {
289
- type: "button",
290
- onClick: Q,
291
- disabled: P,
292
- className: "inline-flex items-center gap-2 px-4 py-2 text-sm font-medium text-white bg-status-success-bg hover:bg-status-success-bg/90 rounded-md transition-colors disabled:opacity-50",
293
- children: [/* @__PURE__ */ _(w, { className: "w-4 h-4" }), P ? "Executing..." : "Execute"]
328
+ /* @__PURE__ */ v(p, {
329
+ permission: i.WORKFLOW_EXECUTE,
330
+ deniedBehavior: "disable",
331
+ children: /* @__PURE__ */ y("button", {
332
+ type: "button",
333
+ onClick: Q,
334
+ disabled: I,
335
+ className: "inline-flex items-center gap-2 px-4 py-2 text-sm font-medium text-white bg-status-success-bg hover:bg-status-success-bg/90 rounded-md transition-colors disabled:opacity-50",
336
+ children: [/* @__PURE__ */ v(ce, { className: "w-4 h-4" }), I ? w("bigconsole.workflows.actions.executing", "Executing...") : w("bigconsole.workflows.actions.execute", "Execute")]
337
+ })
294
338
  }),
295
- /* @__PURE__ */ v("button", {
296
- type: "button",
297
- onClick: Z,
298
- className: "inline-flex items-center gap-2 px-4 py-2 text-sm font-medium text-text-primary bg-bg-sunken hover:bg-border-default rounded-md transition-colors",
299
- children: [/* @__PURE__ */ _(S, { className: "w-4 h-4" }), "Edit"]
339
+ /* @__PURE__ */ v(p, {
340
+ permission: i.WORKFLOW_UPDATE,
341
+ deniedBehavior: "disable",
342
+ children: /* @__PURE__ */ y("button", {
343
+ type: "button",
344
+ onClick: Z,
345
+ className: "inline-flex items-center gap-2 px-4 py-2 text-sm font-medium text-text-primary bg-bg-sunken hover:bg-border-default rounded-md transition-colors",
346
+ children: [/* @__PURE__ */ v(C, { className: "w-4 h-4" }), w("bigconsole.workflows.actions.edit", "Edit")]
347
+ })
300
348
  }),
301
- /* @__PURE__ */ v("button", {
302
- type: "button",
303
- onClick: () => M(!0),
304
- className: "inline-flex items-center gap-2 px-4 py-2 text-sm font-medium text-status-error-text bg-status-error-bg/10 hover:bg-status-error-bg/20 rounded-md transition-colors",
305
- children: [/* @__PURE__ */ _(C, { className: "w-4 h-4" }), "Delete"]
349
+ /* @__PURE__ */ v(p, {
350
+ permission: i.WORKFLOW_DELETE,
351
+ deniedBehavior: "hide",
352
+ children: /* @__PURE__ */ y("button", {
353
+ type: "button",
354
+ onClick: () => P(!0),
355
+ className: "inline-flex items-center gap-2 px-4 py-2 text-sm font-medium text-status-error-text bg-status-error-bg/10 hover:bg-status-error-bg/20 rounded-md transition-colors",
356
+ children: [/* @__PURE__ */ v(se, { className: "w-4 h-4" }), w("bigconsole.workflows.actions.delete", "Delete")]
357
+ })
306
358
  })
307
359
  ]
308
360
  })]
309
361
  })]
310
362
  }),
311
- /* @__PURE__ */ _(h, {
363
+ /* @__PURE__ */ v(oe, {
312
364
  className: "mb-6",
313
- children: "A workflow is the visual ETL job that feeds this BigConsole — it fetches, transforms, and delivers data into linked data sinks. From here you can run it on demand, inspect its design and execution history, copy its webhook trigger, and edit it in the visual builder."
365
+ children: w("bigconsole.workflows.view.purpose", "A workflow is the visual ETL job that feeds this BigConsole — it fetches, transforms, and delivers data into linked data sinks. From here you can run it on demand, inspect its design and execution history, copy its webhook trigger, and edit it in the visual builder.")
314
366
  }),
315
- /* @__PURE__ */ _(m, {
367
+ /* @__PURE__ */ v(ae, {
316
368
  storageKey: "bigconsole-workflow-view",
317
- steps: [
318
- {
319
- id: "execute",
320
- label: "Run the workflow",
321
- description: "Trigger an execution to pull fresh data now.",
322
- onClick: Q
323
- },
324
- {
325
- id: "design",
326
- label: "Inspect the design",
327
- description: "Expand the read-only preview to see each step.",
328
- onClick: () => z(!0)
329
- },
330
- {
331
- id: "edit",
332
- label: "Edit in the builder",
333
- description: "Open the FluidGrids visual builder to change the flow.",
334
- onClick: Z
335
- },
336
- {
337
- id: "sinks",
338
- label: "Check the linked data sinks",
339
- description: "See where this workflow writes its output.",
340
- onClick: () => c("/datasinks")
341
- }
342
- ]
369
+ steps: xe
343
370
  }),
344
- H && /* @__PURE__ */ v("div", {
345
- className: `mb-6 p-4 rounded-lg border ${H.success ? "bg-status-success-bg/10 border-status-success-border/20" : "bg-status-error-bg/10 border-status-error-border/20"}`,
371
+ U && /* @__PURE__ */ y("div", {
372
+ className: `mb-6 p-4 rounded-lg border ${U.success ? "bg-status-success-bg/10 border-status-success-border/20" : "bg-status-error-bg/10 border-status-error-border/20"}`,
346
373
  children: [
347
- /* @__PURE__ */ v("div", {
374
+ /* @__PURE__ */ y("div", {
348
375
  className: "flex items-center justify-between mb-2",
349
- children: [/* @__PURE__ */ _("h3", {
376
+ children: [/* @__PURE__ */ v("h3", {
350
377
  className: "text-sm font-semibold text-text-primary",
351
- children: H.success ? "Execution Triggered" : "Execution Failed"
352
- }), /* @__PURE__ */ v("span", {
378
+ children: U.success ? w("bigconsole.workflows.view.executionResultTriggered", "Execution Triggered") : w("bigconsole.workflows.view.executionResultFailed", "Execution Failed")
379
+ }), /* @__PURE__ */ y("span", {
353
380
  className: "text-xs text-text-secondary",
354
- children: [H.executionTimeMs, "ms"]
381
+ children: [U.executionTimeMs, "ms"]
355
382
  })]
356
383
  }),
357
- H.error ? /* @__PURE__ */ _("p", {
384
+ U.error ? /* @__PURE__ */ v("p", {
358
385
  className: "text-sm text-status-error-text",
359
- children: H.error
360
- }) : /* @__PURE__ */ _("pre", {
386
+ children: U.error
387
+ }) : /* @__PURE__ */ v("pre", {
361
388
  className: "text-xs text-text-secondary font-mono bg-bg-sunken p-2 rounded overflow-auto max-h-[200px]",
362
- children: JSON.stringify(H.output, null, 2)
389
+ children: JSON.stringify(U.output, null, 2)
363
390
  }),
364
- H.runId && /* @__PURE__ */ v("p", {
391
+ U.runId && /* @__PURE__ */ y("p", {
365
392
  className: "text-xs text-text-tertiary mt-2",
366
- children: ["Run ID: ", /* @__PURE__ */ _("span", {
367
- className: "font-mono",
368
- children: H.runId
369
- })]
393
+ children: [
394
+ w("bigconsole.workflows.view.runIdLabel", "Run ID:"),
395
+ " ",
396
+ /* @__PURE__ */ v("span", {
397
+ className: "font-mono",
398
+ children: U.runId
399
+ })
400
+ ]
370
401
  })
371
402
  ]
372
403
  }),
373
- /* @__PURE__ */ v("div", {
404
+ /* @__PURE__ */ y("div", {
374
405
  className: "grid grid-cols-1 md:grid-cols-2 gap-6 mb-8",
375
- children: [/* @__PURE__ */ v("div", {
406
+ children: [/* @__PURE__ */ y("div", {
376
407
  className: "bg-bg-surface border border-border-default rounded-lg p-4",
377
- children: [/* @__PURE__ */ _("h3", {
408
+ children: [/* @__PURE__ */ v("h3", {
378
409
  className: "text-sm font-medium text-text-secondary mb-2",
379
- children: "Description"
380
- }), /* @__PURE__ */ _("p", {
410
+ children: w("bigconsole.workflows.view.descriptionLabel", "Description")
411
+ }), /* @__PURE__ */ v("p", {
381
412
  className: "text-sm text-text-primary",
382
- children: k.description || "No description"
413
+ children: j.description || w("bigconsole.workflows.view.noDescription", "No description")
383
414
  })]
384
- }), /* @__PURE__ */ v(ne, {
415
+ }), /* @__PURE__ */ y(ie, {
385
416
  treatment: "glass",
386
417
  glow: !0,
387
418
  className: "p-4",
388
- children: [/* @__PURE__ */ _("h3", {
419
+ children: [/* @__PURE__ */ v("h3", {
389
420
  className: "text-sm font-medium text-text-secondary mb-2",
390
- children: "Execution Stats"
391
- }), /* @__PURE__ */ v("div", {
421
+ children: w("bigconsole.workflows.view.executionStatsLabel", "Execution Stats")
422
+ }), /* @__PURE__ */ y("div", {
392
423
  className: "grid grid-cols-2 gap-4",
393
- children: [/* @__PURE__ */ v("div", { children: [/* @__PURE__ */ _("p", {
424
+ children: [/* @__PURE__ */ y("div", { children: [/* @__PURE__ */ v("p", {
394
425
  className: "text-2xl font-bold text-text-primary",
395
- children: k.executionCount
396
- }), /* @__PURE__ */ _("p", {
426
+ children: j.executionCount
427
+ }), /* @__PURE__ */ v("p", {
397
428
  className: "text-xs text-text-secondary",
398
- children: "Total Executions"
399
- })] }), /* @__PURE__ */ v("div", { children: [/* @__PURE__ */ _("p", {
429
+ children: w("bigconsole.workflows.view.totalExecutionsLabel", "Total Executions")
430
+ })] }), /* @__PURE__ */ y("div", { children: [/* @__PURE__ */ v("p", {
400
431
  className: "text-sm font-medium text-text-primary",
401
- children: k.lastExecutedAt ? b(new Date(k.lastExecutedAt), { addSuffix: !0 }) : "Never"
402
- }), /* @__PURE__ */ _("p", {
432
+ children: j.lastExecutedAt ? x(new Date(j.lastExecutedAt), { addSuffix: !0 }) : w("bigconsole.workflows.view.never", "Never")
433
+ }), /* @__PURE__ */ v("p", {
403
434
  className: "text-xs text-text-secondary",
404
- children: "Last Executed"
435
+ children: w("bigconsole.workflows.view.lastExecutedLabel", "Last Executed")
405
436
  })] })]
406
437
  })]
407
438
  })]
408
439
  }),
409
- k.webhookUrl && /* @__PURE__ */ v("div", {
440
+ j.webhookUrl && /* @__PURE__ */ y("div", {
410
441
  className: "bg-bg-surface border border-border-default rounded-lg p-4 mb-8",
411
- children: [/* @__PURE__ */ _("h3", {
442
+ children: [/* @__PURE__ */ v("h3", {
412
443
  className: "text-sm font-medium text-text-secondary mb-2",
413
- children: "Webhook URL"
414
- }), /* @__PURE__ */ v("div", {
444
+ children: w("bigconsole.workflows.view.webhookUrlLabel", "Webhook URL")
445
+ }), /* @__PURE__ */ y("div", {
415
446
  className: "flex items-center gap-2",
416
- children: [/* @__PURE__ */ _("code", {
447
+ children: [/* @__PURE__ */ v("code", {
417
448
  className: "flex-1 text-sm text-text-primary font-mono bg-bg-sunken px-3 py-2 rounded overflow-auto",
418
- children: k.webhookUrl
419
- }), /* @__PURE__ */ _("button", {
449
+ children: j.webhookUrl
450
+ }), /* @__PURE__ */ v("button", {
420
451
  type: "button",
421
- onClick: ce,
452
+ onClick: ye,
422
453
  className: "flex items-center gap-1 px-3 py-2 text-sm text-text-secondary hover:text-text-primary transition-colors",
423
- children: I ? /* @__PURE__ */ v(g, { children: [/* @__PURE__ */ _(E, { className: "w-4 h-4 text-status-success-text" }), "Copied!"] }) : /* @__PURE__ */ v(g, { children: [/* @__PURE__ */ _(T, { className: "w-4 h-4" }), "Copy"] })
454
+ children: R ? /* @__PURE__ */ y(_, { children: [/* @__PURE__ */ v(ue, { className: "w-4 h-4 text-status-success-text" }), w("bigconsole.workflows.actions.copied", "Copied!")] }) : /* @__PURE__ */ y(_, { children: [/* @__PURE__ */ v(le, { className: "w-4 h-4" }), w("bigconsole.workflows.actions.copy", "Copy")] })
424
455
  })]
425
456
  })]
426
457
  }),
427
- k.externalWorkflowId && /* @__PURE__ */ v("div", {
458
+ j.externalWorkflowId && /* @__PURE__ */ y("div", {
428
459
  className: "bg-bg-surface border border-border-default rounded-lg mb-8 overflow-hidden",
429
- children: [/* @__PURE__ */ v("button", {
460
+ children: [/* @__PURE__ */ y("button", {
430
461
  type: "button",
431
- onClick: () => z((e) => !e),
462
+ onClick: () => V((e) => !e),
432
463
  className: "w-full flex items-center justify-between px-4 py-3 text-sm font-medium text-text-primary hover:bg-bg-sunken transition-colors",
433
- children: [/* @__PURE__ */ _("span", { children: "Workflow Design Preview" }), /* @__PURE__ */ _(re, { className: `w-4 h-4 text-text-secondary transition-transform ${R ? "rotate-180" : ""}` })]
434
- }), R && /* @__PURE__ */ _("div", {
464
+ children: [/* @__PURE__ */ v("span", { children: w("bigconsole.workflows.view.designPreviewTitle", "Workflow Design Preview") }), /* @__PURE__ */ v(fe, { className: `w-4 h-4 text-text-secondary transition-transform ${B ? "rotate-180" : ""}` })]
465
+ }), B && /* @__PURE__ */ v("div", {
435
466
  className: "border-t border-border-default",
436
467
  style: { height: "450px" },
437
- children: /* @__PURE__ */ _(y, {
438
- apiGatewayUrl: ie,
439
- workspaceId: oe || "default",
440
- authToken: ae,
441
- workflowId: k.externalWorkflowId,
468
+ children: /* @__PURE__ */ v(b, {
469
+ apiGatewayUrl: pe,
470
+ workspaceId: he || "default",
471
+ authToken: me,
472
+ workflowId: j.externalWorkflowId,
442
473
  readonly: !0,
443
474
  hideHeader: !0,
444
475
  className: "h-full"
445
476
  })
446
477
  })]
447
478
  }),
448
- /* @__PURE__ */ v("div", {
479
+ /* @__PURE__ */ y("div", {
449
480
  className: "bg-bg-surface border border-border-default rounded-lg p-4 mb-8",
450
481
  children: [/* @__PURE__ */ v("h3", {
451
482
  className: "text-sm font-medium text-text-secondary mb-4",
452
- children: [
453
- "Linked DataSinks (",
454
- $,
455
- ")"
456
- ]
457
- }), $ === 0 ? /* @__PURE__ */ _(p, {
483
+ children: w("bigconsole.workflows.view.linkedDataSinksTitle", "Linked DataSinks ({{count}})", { count: $ })
484
+ }), $ === 0 ? /* @__PURE__ */ v(g, {
458
485
  illustration: "empty-generic",
459
- title: "No data sinks linked",
460
- description: "This workflow has no data sinks linked yet — its output isn't being stored."
461
- }) : /* @__PURE__ */ _("div", {
486
+ title: w("bigconsole.workflows.view.noDataSinksTitle", "No data sinks linked"),
487
+ description: w("bigconsole.workflows.view.noDataSinksDescription", "This workflow has no data sinks linked yet — its output isn't being stored.")
488
+ }) : /* @__PURE__ */ v("div", {
462
489
  className: "space-y-2",
463
- children: k.dataSinkLinks?.map((e) => /* @__PURE__ */ v("div", {
490
+ children: j.dataSinkLinks?.map((e) => /* @__PURE__ */ y("div", {
464
491
  className: "flex items-center justify-between px-3 py-2 bg-bg-sunken rounded-md",
465
- children: [/* @__PURE__ */ v("div", {
492
+ children: [/* @__PURE__ */ y("div", {
466
493
  className: "flex items-center gap-3",
467
- children: [/* @__PURE__ */ _(D, { className: "w-4 h-4 text-text-secondary" }), /* @__PURE__ */ v("div", { children: [/* @__PURE__ */ _("p", {
494
+ children: [/* @__PURE__ */ v(de, { className: "w-4 h-4 text-text-secondary" }), /* @__PURE__ */ y("div", { children: [/* @__PURE__ */ v("p", {
468
495
  className: "text-sm font-medium text-text-primary",
469
496
  children: e.dataSink?.name || e.dataSink?.key || e.dataSinkId
470
- }), e.dataSink?.key && /* @__PURE__ */ _("p", {
497
+ }), e.dataSink?.key && /* @__PURE__ */ v("p", {
471
498
  className: "text-xs text-text-secondary font-mono",
472
499
  children: e.dataSink.key
473
500
  })] })]
474
- }), /* @__PURE__ */ v("div", {
501
+ }), /* @__PURE__ */ y("div", {
475
502
  className: "flex items-center gap-4",
476
- children: [/* @__PURE__ */ v("div", {
503
+ children: [/* @__PURE__ */ y("div", {
477
504
  className: "flex items-center gap-2",
478
- children: [e.isEnabled ? /* @__PURE__ */ _("span", {
505
+ children: [e.isEnabled ? /* @__PURE__ */ v("span", {
479
506
  className: "text-xs text-status-success-text",
480
- children: "Enabled"
481
- }) : /* @__PURE__ */ _("span", {
507
+ children: w("bigconsole.workflows.view.dataSinkEnabled", "Enabled")
508
+ }) : /* @__PURE__ */ v("span", {
482
509
  className: "text-xs text-text-secondary",
483
- children: "Disabled"
510
+ children: w("bigconsole.workflows.view.dataSinkDisabled", "Disabled")
484
511
  }), /* @__PURE__ */ v("span", {
485
512
  className: "text-xs text-text-secondary",
486
- children: ["Priority: ", e.priority]
513
+ children: w("bigconsole.workflows.view.dataSinkPriority", "Priority: {{priority}}", { priority: e.priority })
487
514
  })]
488
- }), e.dataSink && /* @__PURE__ */ _("button", {
515
+ }), e.dataSink && /* @__PURE__ */ v("button", {
489
516
  type: "button",
490
- onClick: () => le(e.dataSinkId),
517
+ onClick: () => be(e.dataSinkId),
491
518
  className: "text-xs text-action-primary-bg hover:underline",
492
- children: "View"
519
+ children: w("bigconsole.workflows.actions.view", "View")
493
520
  })]
494
521
  })]
495
522
  }, e.id))
496
523
  })]
497
524
  }),
498
- /* @__PURE__ */ v("div", {
525
+ /* @__PURE__ */ y("div", {
499
526
  className: "grid grid-cols-1 md:grid-cols-2 gap-6",
500
- children: [/* @__PURE__ */ v("div", {
527
+ children: [/* @__PURE__ */ y("div", {
501
528
  className: "bg-bg-surface border border-border-default rounded-lg p-4",
502
529
  children: [
503
- /* @__PURE__ */ _("h3", {
530
+ /* @__PURE__ */ v("h3", {
504
531
  className: "text-sm font-medium text-text-secondary mb-2",
505
- children: "Created"
532
+ children: w("bigconsole.workflows.view.createdLabel", "Created")
506
533
  }),
507
- /* @__PURE__ */ _("p", {
534
+ /* @__PURE__ */ v("p", {
508
535
  className: "text-sm text-text-primary",
509
- children: b(new Date(k.createdAt), { addSuffix: !0 })
536
+ children: x(new Date(j.createdAt), { addSuffix: !0 })
510
537
  }),
511
538
  /* @__PURE__ */ v("p", {
512
539
  className: "text-xs text-text-secondary",
513
- children: ["by ", k.createdBy]
540
+ children: w("bigconsole.workflows.view.byAuthor", "by {{author}}", { author: j.createdBy })
514
541
  })
515
542
  ]
516
- }), /* @__PURE__ */ v("div", {
543
+ }), /* @__PURE__ */ y("div", {
517
544
  className: "bg-bg-surface border border-border-default rounded-lg p-4",
518
545
  children: [
519
- /* @__PURE__ */ _("h3", {
546
+ /* @__PURE__ */ v("h3", {
520
547
  className: "text-sm font-medium text-text-secondary mb-2",
521
- children: "Last Updated"
548
+ children: w("bigconsole.workflows.view.lastUpdatedLabel", "Last Updated")
522
549
  }),
523
- /* @__PURE__ */ _("p", {
550
+ /* @__PURE__ */ v("p", {
524
551
  className: "text-sm text-text-primary",
525
- children: b(new Date(k.updatedAt), { addSuffix: !0 })
552
+ children: x(new Date(j.updatedAt), { addSuffix: !0 })
526
553
  }),
527
554
  /* @__PURE__ */ v("p", {
528
555
  className: "text-xs text-text-secondary",
529
- children: ["by ", k.updatedBy || k.createdBy]
556
+ children: w("bigconsole.workflows.view.byAuthor", "by {{author}}", { author: j.updatedBy || j.createdBy })
530
557
  })
531
558
  ]
532
559
  })]
533
560
  }),
534
- k && /* @__PURE__ */ _(s, {
535
- workflow: k,
536
- isOpen: j,
537
- onClose: () => M(!1),
538
- onConfirm: se
561
+ j && /* @__PURE__ */ v(c, {
562
+ workflow: j,
563
+ isOpen: N,
564
+ onClose: () => P(!1),
565
+ onConfirm: ve
539
566
  })
540
567
  ]
541
568
  });
542
569
  });
543
570
  //#endregion
544
- export { O as WorkflowViewPage };
571
+ export { w as WorkflowViewPage };
545
572
 
546
573
  //# sourceMappingURL=WorkflowViewPage.js.map