@burdenoff/microfe-workflows 2026.623.1 → 2026.626.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.
- package/dist/WorkflowsRoot.js +55 -43
- package/dist/WorkflowsRoutes.js +88 -52
- package/dist/providers/WorkflowsProvider.js +107 -49
- package/package.json +2 -2
package/dist/WorkflowsRoot.js
CHANGED
|
@@ -3,95 +3,107 @@ import { WorkflowsProvider as t } from "./providers/WorkflowsProvider.js";
|
|
|
3
3
|
import { WorkflowsRoutes as n } from "./WorkflowsRoutes.js";
|
|
4
4
|
import { useEffect as r } from "react";
|
|
5
5
|
import { ErrorBoundary as i } from "@burdenoff/fe-libs/shared/components";
|
|
6
|
-
import {
|
|
7
|
-
import { Boxes as
|
|
6
|
+
import { AuroraBackground as a, Button as o, IllustratedEmptyState as s } from "@burdenoff/fe-libs/ui";
|
|
7
|
+
import { Boxes as c, FileCode2 as l, History as u, LayoutDashboard as d, Network as f, PlayCircle as p, RefreshCw as m, Settings as h, Workflow as g } from "lucide-react";
|
|
8
|
+
import { jsx as _, jsxs as v } from "react/jsx-runtime";
|
|
8
9
|
//#region src/WorkflowsRoot.tsx
|
|
9
|
-
function
|
|
10
|
-
let { basePath:
|
|
10
|
+
function y(y) {
|
|
11
|
+
let { basePath: b = "/", registerNavItems: x, registerFooterItems: S } = y, C = e();
|
|
11
12
|
return r(() => {
|
|
12
|
-
if (!
|
|
13
|
+
if (!x) return;
|
|
13
14
|
let e = (e, t) => `${e.endsWith("/") ? e.slice(0, -1) : e}/${t}`, t = [
|
|
14
15
|
{
|
|
15
16
|
id: "workflows-list",
|
|
16
|
-
label:
|
|
17
|
-
path: e(
|
|
18
|
-
icon: /* @__PURE__ */
|
|
17
|
+
label: C("workflows.nav.myWorkflows", "My Workflows"),
|
|
18
|
+
path: e(b, "list"),
|
|
19
|
+
icon: /* @__PURE__ */ _(g, { size: 18 }),
|
|
19
20
|
order: 2
|
|
20
21
|
},
|
|
21
22
|
{
|
|
22
23
|
id: "workflows-builder",
|
|
23
|
-
label:
|
|
24
|
-
path: e(
|
|
25
|
-
icon: /* @__PURE__ */
|
|
24
|
+
label: C("workflows.nav.builder", "Builder"),
|
|
25
|
+
path: e(b, "new"),
|
|
26
|
+
icon: /* @__PURE__ */ _(c, { size: 18 }),
|
|
26
27
|
order: 3
|
|
27
28
|
},
|
|
28
29
|
{
|
|
29
30
|
id: "workflows-runs",
|
|
30
|
-
label:
|
|
31
|
-
path: e(
|
|
32
|
-
icon: /* @__PURE__ */
|
|
31
|
+
label: C("workflows.nav.runs", "Runs"),
|
|
32
|
+
path: e(b, "runs"),
|
|
33
|
+
icon: /* @__PURE__ */ _(p, { size: 18 }),
|
|
33
34
|
order: 4
|
|
34
35
|
},
|
|
35
36
|
{
|
|
36
37
|
id: "workflows-history",
|
|
37
|
-
label:
|
|
38
|
-
path: e(
|
|
39
|
-
icon: /* @__PURE__ */
|
|
38
|
+
label: C("workflows.nav.history", "History"),
|
|
39
|
+
path: e(b, "history"),
|
|
40
|
+
icon: /* @__PURE__ */ _(u, { size: 18 }),
|
|
40
41
|
order: 5
|
|
41
42
|
},
|
|
42
43
|
{
|
|
43
44
|
id: "workflows-templates",
|
|
44
|
-
label:
|
|
45
|
-
path: e(
|
|
46
|
-
icon: /* @__PURE__ */
|
|
45
|
+
label: C("workflows.nav.templates", "Templates"),
|
|
46
|
+
path: e(b, "templates"),
|
|
47
|
+
icon: /* @__PURE__ */ _(d, { size: 18 }),
|
|
47
48
|
order: 6
|
|
48
49
|
},
|
|
49
50
|
{
|
|
50
51
|
id: "workflows-nodes",
|
|
51
|
-
label:
|
|
52
|
-
path: e(
|
|
53
|
-
icon: /* @__PURE__ */
|
|
52
|
+
label: C("workflows.nav.nodes", "Nodes"),
|
|
53
|
+
path: e(b, "nodes"),
|
|
54
|
+
icon: /* @__PURE__ */ _(f, { size: 18 }),
|
|
54
55
|
order: 7
|
|
55
56
|
},
|
|
56
57
|
{
|
|
57
58
|
id: "workflows-settings",
|
|
58
|
-
label:
|
|
59
|
-
path: e(
|
|
60
|
-
icon: /* @__PURE__ */
|
|
59
|
+
label: C("workflows.nav.settings", "Settings"),
|
|
60
|
+
path: e(b, "settings"),
|
|
61
|
+
icon: /* @__PURE__ */ _(h, { size: 18 }),
|
|
61
62
|
order: 8
|
|
62
63
|
}
|
|
63
64
|
];
|
|
64
|
-
return
|
|
65
|
+
return x([{
|
|
65
66
|
id: "workflows",
|
|
66
|
-
label:
|
|
67
|
-
path:
|
|
68
|
-
icon: /* @__PURE__ */
|
|
67
|
+
label: C("workflows.nav.title", "Workflows"),
|
|
68
|
+
path: b,
|
|
69
|
+
icon: /* @__PURE__ */ _(l, { size: 20 }),
|
|
69
70
|
order: 200,
|
|
70
71
|
group: "workflows",
|
|
71
72
|
children: t
|
|
72
73
|
}]);
|
|
73
74
|
}, [
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
75
|
+
x,
|
|
76
|
+
b,
|
|
77
|
+
C
|
|
77
78
|
]), r(() => {
|
|
78
|
-
if (
|
|
79
|
+
if (S) return S([{
|
|
79
80
|
id: "workflows-status",
|
|
80
|
-
label:
|
|
81
|
+
label: C("workflows.footer.status", "Workflows Ready"),
|
|
81
82
|
type: "status",
|
|
82
83
|
order: 10,
|
|
83
84
|
section: "left"
|
|
84
85
|
}]);
|
|
85
|
-
}, [
|
|
86
|
-
fallback: /* @__PURE__ */
|
|
87
|
-
className: "
|
|
88
|
-
children:
|
|
86
|
+
}, [S, C]), /* @__PURE__ */ _(i, {
|
|
87
|
+
fallback: /* @__PURE__ */ v("div", {
|
|
88
|
+
className: "relative flex min-h-[60vh] w-full items-center justify-center overflow-hidden px-4 py-10",
|
|
89
|
+
children: [/* @__PURE__ */ _(a, { intensity: "subtle" }), /* @__PURE__ */ _(s, {
|
|
90
|
+
illustration: "empty-generic",
|
|
91
|
+
title: C("workflows.error.title", "Workflows hit a snag"),
|
|
92
|
+
description: C("workflows.error.loadFailed", "Something went wrong loading this module. Please refresh the page."),
|
|
93
|
+
action: /* @__PURE__ */ v(o, {
|
|
94
|
+
onClick: () => window.location.reload(),
|
|
95
|
+
children: [/* @__PURE__ */ _(m, {
|
|
96
|
+
className: "size-4",
|
|
97
|
+
"aria-hidden": "true"
|
|
98
|
+
}), C("workflows.error.refresh", "Refresh page")]
|
|
99
|
+
})
|
|
100
|
+
})]
|
|
89
101
|
}),
|
|
90
|
-
children: /* @__PURE__ */
|
|
91
|
-
...
|
|
92
|
-
children: /* @__PURE__ */
|
|
102
|
+
children: /* @__PURE__ */ _(t, {
|
|
103
|
+
...y,
|
|
104
|
+
children: /* @__PURE__ */ _(n, {})
|
|
93
105
|
})
|
|
94
106
|
});
|
|
95
107
|
}
|
|
96
108
|
//#endregion
|
|
97
|
-
export {
|
|
109
|
+
export { y as WorkflowsRoot };
|
package/dist/WorkflowsRoutes.js
CHANGED
|
@@ -1,115 +1,151 @@
|
|
|
1
1
|
import { useWorkflowsTranslation as e } from "./i18n.js";
|
|
2
2
|
import { Suspense as t } from "react";
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
3
|
+
import { GlassCard as n } from "@burdenoff/fe-libs/ui";
|
|
4
|
+
import { ExecutionDetailPage as r, ExecutionsListPage as i, HistoryPage as a, NodesPage as o, SettingsPage as s, TemplatesPage as c, WorkflowBuilderPage as l, WorkflowsList as u } from "@burdenoff/fluidgrids-fe-sdk";
|
|
5
|
+
import { jsx as d, jsxs as f } from "react/jsx-runtime";
|
|
6
|
+
import { Navigate as p, Route as m, Routes as h, useParams as g } from "react-router-dom";
|
|
6
7
|
//#region src/WorkflowsRoutes.tsx
|
|
7
|
-
function
|
|
8
|
+
function _() {
|
|
8
9
|
let t = e();
|
|
9
|
-
return /* @__PURE__ */
|
|
10
|
-
className: "flex
|
|
10
|
+
return /* @__PURE__ */ f("div", {
|
|
11
|
+
className: "mx-auto flex w-full max-w-6xl flex-col gap-6 px-4 py-6 sm:px-6",
|
|
11
12
|
role: "status",
|
|
12
13
|
"aria-live": "polite",
|
|
14
|
+
"aria-busy": "true",
|
|
13
15
|
"aria-label": t("workflows.routes.loading.ariaLabel", "Loading workflow page"),
|
|
14
|
-
children: [
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
16
|
+
children: [
|
|
17
|
+
/* @__PURE__ */ f("div", {
|
|
18
|
+
className: "flex flex-col gap-3",
|
|
19
|
+
children: [/* @__PURE__ */ d("div", { className: "h-7 w-48 rounded-md bg-muted/60 motion-safe:animate-vc-shimmer" }), /* @__PURE__ */ d("div", { className: "h-4 w-72 max-w-full rounded bg-muted/40 motion-safe:animate-vc-shimmer" })]
|
|
20
|
+
}),
|
|
21
|
+
/* @__PURE__ */ d("div", {
|
|
22
|
+
className: "grid grid-cols-1 gap-4 sm:grid-cols-2 lg:grid-cols-3",
|
|
23
|
+
children: [
|
|
24
|
+
0,
|
|
25
|
+
1,
|
|
26
|
+
2
|
|
27
|
+
].map((e) => /* @__PURE__ */ f(n, {
|
|
28
|
+
treatment: "metric",
|
|
29
|
+
className: "flex flex-col gap-3 border-border-seam p-5",
|
|
30
|
+
children: [/* @__PURE__ */ d("div", { className: "h-3 w-20 rounded bg-muted/50 motion-safe:animate-vc-shimmer" }), /* @__PURE__ */ d("div", { className: "h-8 w-24 rounded-md bg-muted/60 motion-safe:animate-vc-shimmer" })]
|
|
31
|
+
}, e))
|
|
32
|
+
}),
|
|
33
|
+
/* @__PURE__ */ d(n, {
|
|
34
|
+
treatment: "glass",
|
|
35
|
+
className: "flex flex-col gap-4 border-border-seam p-6",
|
|
36
|
+
children: [
|
|
37
|
+
0,
|
|
38
|
+
1,
|
|
39
|
+
2,
|
|
40
|
+
3
|
|
41
|
+
].map((e) => /* @__PURE__ */ f("div", {
|
|
42
|
+
className: "flex items-center gap-4",
|
|
43
|
+
children: [/* @__PURE__ */ d("div", { className: "h-10 w-10 shrink-0 rounded-full bg-muted/50 motion-safe:animate-vc-shimmer" }), /* @__PURE__ */ f("div", {
|
|
44
|
+
className: "flex flex-1 flex-col gap-2",
|
|
45
|
+
children: [/* @__PURE__ */ d("div", { className: "h-4 w-1/3 rounded bg-muted/50 motion-safe:animate-vc-shimmer" }), /* @__PURE__ */ d("div", { className: "h-3 w-2/3 rounded bg-muted/30 motion-safe:animate-vc-shimmer" })]
|
|
46
|
+
})]
|
|
47
|
+
}, e))
|
|
48
|
+
}),
|
|
49
|
+
/* @__PURE__ */ d("p", {
|
|
50
|
+
className: "text-center text-sm text-text-secondary",
|
|
51
|
+
children: t("workflows.routes.loading.message", "Loading workflow page...")
|
|
52
|
+
})
|
|
53
|
+
]
|
|
18
54
|
});
|
|
19
55
|
}
|
|
20
|
-
function
|
|
21
|
-
let { runId: e } =
|
|
22
|
-
return /* @__PURE__ */
|
|
56
|
+
function v() {
|
|
57
|
+
let { runId: e } = g();
|
|
58
|
+
return /* @__PURE__ */ d(p, {
|
|
23
59
|
to: `../runs/${e}`,
|
|
24
60
|
replace: !0
|
|
25
61
|
});
|
|
26
62
|
}
|
|
27
|
-
function
|
|
28
|
-
return /* @__PURE__ */
|
|
29
|
-
fallback: /* @__PURE__ */
|
|
30
|
-
children: /* @__PURE__ */
|
|
31
|
-
/* @__PURE__ */
|
|
63
|
+
function y() {
|
|
64
|
+
return /* @__PURE__ */ d(t, {
|
|
65
|
+
fallback: /* @__PURE__ */ d(_, {}),
|
|
66
|
+
children: /* @__PURE__ */ f(h, { children: [
|
|
67
|
+
/* @__PURE__ */ d(m, {
|
|
32
68
|
index: !0,
|
|
33
|
-
element: /* @__PURE__ */
|
|
69
|
+
element: /* @__PURE__ */ d(p, {
|
|
34
70
|
to: "list",
|
|
35
71
|
replace: !0
|
|
36
72
|
})
|
|
37
73
|
}),
|
|
38
|
-
/* @__PURE__ */
|
|
74
|
+
/* @__PURE__ */ d(m, {
|
|
39
75
|
path: "list",
|
|
40
|
-
element: /* @__PURE__ */ u
|
|
76
|
+
element: /* @__PURE__ */ d(u, {})
|
|
41
77
|
}),
|
|
42
|
-
/* @__PURE__ */
|
|
78
|
+
/* @__PURE__ */ d(m, {
|
|
43
79
|
path: "new",
|
|
44
|
-
element: /* @__PURE__ */
|
|
80
|
+
element: /* @__PURE__ */ d(l, {})
|
|
45
81
|
}),
|
|
46
|
-
/* @__PURE__ */
|
|
82
|
+
/* @__PURE__ */ d(m, {
|
|
47
83
|
path: "workflow/:id/:version",
|
|
48
|
-
element: /* @__PURE__ */
|
|
84
|
+
element: /* @__PURE__ */ d(l, {})
|
|
49
85
|
}),
|
|
50
|
-
/* @__PURE__ */
|
|
86
|
+
/* @__PURE__ */ d(m, {
|
|
51
87
|
path: "builder",
|
|
52
|
-
element: /* @__PURE__ */
|
|
88
|
+
element: /* @__PURE__ */ d(p, {
|
|
53
89
|
to: "../new",
|
|
54
90
|
replace: !0
|
|
55
91
|
})
|
|
56
92
|
}),
|
|
57
|
-
/* @__PURE__ */
|
|
93
|
+
/* @__PURE__ */ d(m, {
|
|
58
94
|
path: "builder/:id/:version",
|
|
59
|
-
element: /* @__PURE__ */
|
|
95
|
+
element: /* @__PURE__ */ d(l, {})
|
|
60
96
|
}),
|
|
61
|
-
/* @__PURE__ */
|
|
97
|
+
/* @__PURE__ */ d(m, {
|
|
62
98
|
path: "runs",
|
|
63
|
-
element: /* @__PURE__ */
|
|
99
|
+
element: /* @__PURE__ */ d(i, {})
|
|
64
100
|
}),
|
|
65
|
-
/* @__PURE__ */
|
|
101
|
+
/* @__PURE__ */ d(m, {
|
|
66
102
|
path: "runs/:runId",
|
|
67
|
-
element: /* @__PURE__ */
|
|
103
|
+
element: /* @__PURE__ */ d(r, {})
|
|
68
104
|
}),
|
|
69
|
-
/* @__PURE__ */
|
|
105
|
+
/* @__PURE__ */ d(m, {
|
|
70
106
|
path: "history",
|
|
71
|
-
element: /* @__PURE__ */
|
|
107
|
+
element: /* @__PURE__ */ d(a, {})
|
|
72
108
|
}),
|
|
73
|
-
/* @__PURE__ */
|
|
109
|
+
/* @__PURE__ */ d(m, {
|
|
74
110
|
path: "templates",
|
|
75
|
-
element: /* @__PURE__ */
|
|
111
|
+
element: /* @__PURE__ */ d(c, {})
|
|
76
112
|
}),
|
|
77
|
-
/* @__PURE__ */
|
|
113
|
+
/* @__PURE__ */ d(m, {
|
|
78
114
|
path: "nodes",
|
|
79
|
-
element: /* @__PURE__ */
|
|
115
|
+
element: /* @__PURE__ */ d(o, {})
|
|
80
116
|
}),
|
|
81
|
-
/* @__PURE__ */
|
|
117
|
+
/* @__PURE__ */ d(m, {
|
|
82
118
|
path: "settings",
|
|
83
|
-
element: /* @__PURE__ */
|
|
119
|
+
element: /* @__PURE__ */ d(s, {})
|
|
84
120
|
}),
|
|
85
|
-
/* @__PURE__ */
|
|
121
|
+
/* @__PURE__ */ d(m, {
|
|
86
122
|
path: "executions",
|
|
87
|
-
element: /* @__PURE__ */
|
|
123
|
+
element: /* @__PURE__ */ d(p, {
|
|
88
124
|
to: "../runs",
|
|
89
125
|
replace: !0
|
|
90
126
|
})
|
|
91
127
|
}),
|
|
92
|
-
/* @__PURE__ */
|
|
128
|
+
/* @__PURE__ */ d(m, {
|
|
93
129
|
path: "executions/:runId",
|
|
94
|
-
element: /* @__PURE__ */
|
|
130
|
+
element: /* @__PURE__ */ d(v, {})
|
|
95
131
|
}),
|
|
96
|
-
/* @__PURE__ */
|
|
132
|
+
/* @__PURE__ */ d(m, {
|
|
97
133
|
path: "credentials",
|
|
98
|
-
element: /* @__PURE__ */
|
|
134
|
+
element: /* @__PURE__ */ d(p, {
|
|
99
135
|
to: "/integrations/connections",
|
|
100
136
|
replace: !0
|
|
101
137
|
})
|
|
102
138
|
}),
|
|
103
|
-
/* @__PURE__ */
|
|
139
|
+
/* @__PURE__ */ d(m, {
|
|
104
140
|
path: "oauth/callback",
|
|
105
|
-
element: /* @__PURE__ */
|
|
141
|
+
element: /* @__PURE__ */ d(p, {
|
|
106
142
|
to: "/integrations/connections",
|
|
107
143
|
replace: !0
|
|
108
144
|
})
|
|
109
145
|
}),
|
|
110
|
-
/* @__PURE__ */
|
|
146
|
+
/* @__PURE__ */ d(m, {
|
|
111
147
|
path: "*",
|
|
112
|
-
element: /* @__PURE__ */
|
|
148
|
+
element: /* @__PURE__ */ d(p, {
|
|
113
149
|
to: "list",
|
|
114
150
|
replace: !0
|
|
115
151
|
})
|
|
@@ -118,4 +154,4 @@ function v() {
|
|
|
118
154
|
});
|
|
119
155
|
}
|
|
120
156
|
//#endregion
|
|
121
|
-
export {
|
|
157
|
+
export { y as WorkflowsRoutes };
|
|
@@ -1,75 +1,133 @@
|
|
|
1
1
|
import { setWorkflowsConfig as e } from "../config/index.js";
|
|
2
2
|
import { useWorkflowsTranslation as t } from "../i18n.js";
|
|
3
3
|
import { createContext as n, useEffect as r, useState as i } from "react";
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
4
|
+
import { EmphasisPanel as a, GlassCard as o, IllustratedEmptyState as s, NextSteps as c, PagePurpose as l } from "@burdenoff/fe-libs/ui";
|
|
5
|
+
import { Boxes as u, LayoutDashboard as d, Workflow as f } from "lucide-react";
|
|
6
|
+
import { resetFluidGridsClient as p, resetGlobalStoreClient as m, setFluidGridsClient as h, setFluidGridsConfig as g, setGlobalStoreClient as _ } from "@burdenoff/fluidgrids-fe-sdk";
|
|
7
|
+
import { useGatewayClient as v } from "@burdenoff/fe-libs/shared/graphql";
|
|
8
|
+
import { PermissionProvider as y } from "@burdenoff/fe-libs/shared/providers/shell";
|
|
9
|
+
import { jsx as b, jsxs as x } from "react/jsx-runtime";
|
|
8
10
|
//#region src/providers/WorkflowsProvider.tsx
|
|
9
|
-
var
|
|
10
|
-
function
|
|
11
|
+
var S = n(null);
|
|
12
|
+
function C(e) {
|
|
11
13
|
let t = e.endsWith("/") ? e.slice(0, -1) : e;
|
|
12
14
|
return t.endsWith("/graphql") ? t : `${t}/workspaces/graphql`;
|
|
13
15
|
}
|
|
14
|
-
function
|
|
15
|
-
let
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
}), [
|
|
19
|
-
if (
|
|
20
|
-
let t =
|
|
16
|
+
function w({ children: n, ...w }) {
|
|
17
|
+
let T = t(), E = v("workspace"), D = v("global"), [O, k] = i(!1);
|
|
18
|
+
if (r(() => (E && D && (h(E), _(D), k(!0)), () => {
|
|
19
|
+
p(), m(), k(!1);
|
|
20
|
+
}), [E, D]), r(() => {
|
|
21
|
+
if (w.apiGatewayUrl) {
|
|
22
|
+
let t = C(w.apiGatewayUrl), n = w.apiGatewayUrl.endsWith("/") ? w.apiGatewayUrl.slice(0, -1) : w.apiGatewayUrl;
|
|
21
23
|
e({
|
|
22
24
|
workflowSvcUrl: t,
|
|
23
25
|
apiGatewayUrl: n
|
|
24
26
|
});
|
|
25
|
-
let r =
|
|
26
|
-
|
|
27
|
+
let r = w.callbacks?.onWorkflowSaved;
|
|
28
|
+
g({
|
|
27
29
|
apiGatewayUrl: n,
|
|
28
|
-
authToken:
|
|
29
|
-
workspaceId:
|
|
30
|
-
tenantId:
|
|
31
|
-
productId:
|
|
32
|
-
productName:
|
|
30
|
+
authToken: w.authToken,
|
|
31
|
+
workspaceId: w.workspaceId ?? "",
|
|
32
|
+
tenantId: w.tenantId,
|
|
33
|
+
productId: w.productId,
|
|
34
|
+
productName: w.productName,
|
|
33
35
|
onWorkflowSaved: r
|
|
34
36
|
});
|
|
35
37
|
}
|
|
36
38
|
}, [
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
]),
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
39
|
+
w.apiGatewayUrl,
|
|
40
|
+
w.authToken,
|
|
41
|
+
w.workspaceId,
|
|
42
|
+
w.tenantId,
|
|
43
|
+
w.productId,
|
|
44
|
+
w.productName,
|
|
45
|
+
w.callbacks
|
|
46
|
+
]), !w.workspaceId) {
|
|
47
|
+
let e = (e, t) => `${e.endsWith("/") ? e.slice(0, -1) : e}/${t}`, t = (t) => w.navigate(e(w.basePath ?? "/", t));
|
|
48
|
+
return /* @__PURE__ */ x("div", {
|
|
49
|
+
className: "mx-auto flex h-full min-h-[60vh] w-full max-w-2xl flex-col justify-center gap-6 px-4 py-10",
|
|
50
|
+
children: [
|
|
51
|
+
/* @__PURE__ */ b(l, {
|
|
52
|
+
icon: /* @__PURE__ */ b(f, {
|
|
53
|
+
className: "size-4",
|
|
54
|
+
"aria-hidden": "true"
|
|
55
|
+
}),
|
|
56
|
+
children: T("workflows.provider.purpose", "Workflows let you automate multi-step processes — for example, sync a new signup into your CRM, post run results to Slack, or transform and route data between apps. You build them visually by wiring nodes together, then trigger them on a schedule, a webhook, or on demand.")
|
|
57
|
+
}),
|
|
58
|
+
/* @__PURE__ */ b(a, {
|
|
59
|
+
className: "p-6",
|
|
60
|
+
children: /* @__PURE__ */ b(s, {
|
|
61
|
+
illustration: "onboarding",
|
|
62
|
+
title: T("workflows.provider.workspaceRequired.title", "Pick a workspace to start building"),
|
|
63
|
+
description: T("workflows.provider.workspaceRequired.description", "Workflows live inside a workspace so your automations, runs, and connections stay scoped to the right team. Select or create an active workspace from the shell to load your workflows.")
|
|
64
|
+
})
|
|
65
|
+
}),
|
|
66
|
+
/* @__PURE__ */ b(c, {
|
|
67
|
+
storageKey: "workflows-get-started",
|
|
68
|
+
title: T("workflows.provider.nextSteps.title", "Once your workspace is active"),
|
|
69
|
+
steps: [
|
|
70
|
+
{
|
|
71
|
+
id: "open-workflows",
|
|
72
|
+
label: T("workflows.provider.nextSteps.open.label", "Open your workflows"),
|
|
73
|
+
description: T("workflows.provider.nextSteps.open.description", "Browse, search, and manage every automation in this workspace."),
|
|
74
|
+
icon: /* @__PURE__ */ b(f, {
|
|
75
|
+
className: "size-4",
|
|
76
|
+
"aria-hidden": "true"
|
|
77
|
+
}),
|
|
78
|
+
onClick: () => t("list")
|
|
79
|
+
},
|
|
80
|
+
{
|
|
81
|
+
id: "start-template",
|
|
82
|
+
label: T("workflows.provider.nextSteps.template.label", "Start from a template"),
|
|
83
|
+
description: T("workflows.provider.nextSteps.template.description", "Skip the blank canvas — adapt a ready-made workflow to your use-case."),
|
|
84
|
+
icon: /* @__PURE__ */ b(d, {
|
|
85
|
+
className: "size-4",
|
|
86
|
+
"aria-hidden": "true"
|
|
87
|
+
}),
|
|
88
|
+
onClick: () => t("templates")
|
|
89
|
+
},
|
|
90
|
+
{
|
|
91
|
+
id: "build-new",
|
|
92
|
+
label: T("workflows.provider.nextSteps.build.label", "Build a workflow from scratch"),
|
|
93
|
+
description: T("workflows.provider.nextSteps.build.description", "Open the visual builder and wire nodes together step by step."),
|
|
94
|
+
icon: /* @__PURE__ */ b(u, {
|
|
95
|
+
className: "size-4",
|
|
96
|
+
"aria-hidden": "true"
|
|
97
|
+
}),
|
|
98
|
+
onClick: () => t("new")
|
|
99
|
+
}
|
|
100
|
+
]
|
|
101
|
+
})
|
|
102
|
+
]
|
|
103
|
+
});
|
|
104
|
+
}
|
|
105
|
+
return O ? /* @__PURE__ */ b(S.Provider, {
|
|
106
|
+
value: w,
|
|
107
|
+
children: /* @__PURE__ */ b(y, {
|
|
108
|
+
scopeId: w.workspaceId ?? null,
|
|
48
109
|
gateway: "workspace",
|
|
49
110
|
children: n
|
|
50
111
|
})
|
|
51
|
-
}) : /* @__PURE__ */
|
|
52
|
-
className: "flex h-full min-h-[
|
|
112
|
+
}) : /* @__PURE__ */ x("div", {
|
|
113
|
+
className: "mx-auto flex h-full min-h-[60vh] w-full max-w-md flex-col items-center justify-center gap-4 px-4 py-10 text-center",
|
|
53
114
|
role: "status",
|
|
54
115
|
"aria-live": "polite",
|
|
55
|
-
"aria-
|
|
56
|
-
|
|
116
|
+
"aria-busy": "true",
|
|
117
|
+
"aria-label": T("workflows.provider.loading.ariaLabel", "Loading workflows"),
|
|
118
|
+
children: [/* @__PURE__ */ x(o, {
|
|
119
|
+
treatment: "glass",
|
|
120
|
+
className: "flex w-full flex-col items-center gap-4 border-border-seam p-6",
|
|
121
|
+
children: [
|
|
122
|
+
/* @__PURE__ */ b("div", { className: "h-12 w-12 rounded-full bg-muted/60 motion-safe:animate-vc-shimmer" }),
|
|
123
|
+
/* @__PURE__ */ b("div", { className: "h-4 w-40 rounded bg-muted/50 motion-safe:animate-vc-shimmer" }),
|
|
124
|
+
/* @__PURE__ */ b("div", { className: "h-3 w-56 max-w-full rounded bg-muted/30 motion-safe:animate-vc-shimmer" })
|
|
125
|
+
]
|
|
126
|
+
}), /* @__PURE__ */ b("p", {
|
|
57
127
|
className: "text-sm text-text-secondary",
|
|
58
|
-
children:
|
|
128
|
+
children: T("workflows.provider.loading.message", "Connecting workflows...")
|
|
59
129
|
})]
|
|
60
|
-
}) : /* @__PURE__ */ f("div", {
|
|
61
|
-
className: "flex h-full min-h-[200px] w-full items-center justify-center px-6 text-center",
|
|
62
|
-
children: /* @__PURE__ */ p("div", {
|
|
63
|
-
className: "max-w-md",
|
|
64
|
-
children: [/* @__PURE__ */ f("h2", {
|
|
65
|
-
className: "mb-2 text-lg font-semibold text-text-primary",
|
|
66
|
-
children: _("workflows.provider.workspaceRequired.title", "Workspace context required")
|
|
67
|
-
}), /* @__PURE__ */ f("p", {
|
|
68
|
-
className: "text-sm text-text-secondary",
|
|
69
|
-
children: _("workflows.provider.workspaceRequired.description", "This workflows module needs an active workspace before it can load workflow data.")
|
|
70
|
-
})]
|
|
71
|
-
})
|
|
72
130
|
});
|
|
73
131
|
}
|
|
74
132
|
//#endregion
|
|
75
|
-
export {
|
|
133
|
+
export { w as WorkflowsProvider };
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@burdenoff/microfe-workflows",
|
|
3
|
-
"version": "2026.
|
|
3
|
+
"version": "2026.626.1",
|
|
4
4
|
"description": "Workflows microfrontend for Burdenoff products - thin shell over @burdenoff/fluidgrids-fe-sdk",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"exports": {
|
|
@@ -28,7 +28,7 @@
|
|
|
28
28
|
"format:check": "prettier --check \"src/**/*.{ts,tsx}\""
|
|
29
29
|
},
|
|
30
30
|
"dependencies": {
|
|
31
|
-
"@burdenoff/fe-libs": "2026.
|
|
31
|
+
"@burdenoff/fe-libs": "2026.625.5",
|
|
32
32
|
"lucide-react": "^0.468.0",
|
|
33
33
|
"react": "^19.0.0",
|
|
34
34
|
"react-dom": "^19.0.0",
|