@burdenoff/microfe-workflows 2026.1023.1 → 2026.1023.2
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,28 +1,28 @@
|
|
|
1
1
|
import { setWorkflowsConfig as e } from "../config/index.js";
|
|
2
2
|
import { useWorkflowsTranslation as t } from "../i18n.js";
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import { FluidGridsPermissionsProvider as
|
|
7
|
-
import { useGatewayClient as
|
|
8
|
-
import { PermissionProvider as
|
|
9
|
-
import { jsx as
|
|
3
|
+
import { WorkspaceRequiredGuidance as n } from "./WorkspaceRequiredGuidance.js";
|
|
4
|
+
import { createContext as r, useEffect as i, useState as a, useSyncExternalStore as o } from "react";
|
|
5
|
+
import { GlassCard as s } from "@burdenoff/fe-libs/ui";
|
|
6
|
+
import { FluidGridsPermissionsProvider as c, FluidGridsTranslationProvider as l, refetchStoreNodes as u, resetFluidGridsClient as d, resetFluidGridsConfig as f, resetFluidGridsExecutionState 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, usePermissions as b } from "@burdenoff/fe-libs/shared/providers/shell";
|
|
9
|
+
import { jsx as x, jsxs as S } from "react/jsx-runtime";
|
|
10
10
|
//#region src/providers/WorkflowsProvider.tsx
|
|
11
|
-
var
|
|
12
|
-
function
|
|
13
|
-
let { hasPermission: t, isLoading: n } =
|
|
14
|
-
return /* @__PURE__ */
|
|
11
|
+
var C = r(null);
|
|
12
|
+
function w({ children: e }) {
|
|
13
|
+
let { hasPermission: t, isLoading: n } = b();
|
|
14
|
+
return /* @__PURE__ */ x(c, {
|
|
15
15
|
hasPermission: t,
|
|
16
16
|
isLoading: n,
|
|
17
17
|
children: e
|
|
18
18
|
});
|
|
19
19
|
}
|
|
20
|
-
function
|
|
20
|
+
function T(e) {
|
|
21
21
|
let t = e.endsWith("/") ? e.slice(0, -1) : e;
|
|
22
22
|
return t.endsWith("/graphql") ? t : `${t}/workspaces/graphql`;
|
|
23
23
|
}
|
|
24
|
-
function
|
|
25
|
-
let
|
|
24
|
+
function E({ children: r, ...c }) {
|
|
25
|
+
let b = t(), E = v("workspace"), D = v("global"), [O] = a(() => {
|
|
26
26
|
let e = !1, t = /* @__PURE__ */ new Set();
|
|
27
27
|
return {
|
|
28
28
|
subscribe: (e) => (t.add(e), () => {
|
|
@@ -34,128 +34,72 @@ function M({ children: n, ...m }) {
|
|
|
34
34
|
for (let e of t) e();
|
|
35
35
|
}
|
|
36
36
|
};
|
|
37
|
-
}),
|
|
38
|
-
|
|
39
|
-
if (!
|
|
40
|
-
let t =
|
|
37
|
+
}), k = o(O.subscribe, O.snapshot, () => !1);
|
|
38
|
+
return i(() => (p(), p), []), i(() => {
|
|
39
|
+
if (!c.apiGatewayUrl || !c.productId || !c.workspaceId || !c.workspaceToken || !E || !D) return;
|
|
40
|
+
let t = c.apiGatewayUrl.replace(/\/+$/, "");
|
|
41
41
|
e({
|
|
42
|
-
workflowSvcUrl:
|
|
42
|
+
workflowSvcUrl: T(t),
|
|
43
43
|
apiGatewayUrl: t
|
|
44
44
|
});
|
|
45
|
-
let n =
|
|
46
|
-
return
|
|
45
|
+
let n = c.callbacks?.onWorkflowSaved;
|
|
46
|
+
return g({
|
|
47
47
|
apiGatewayUrl: t,
|
|
48
|
-
authToken:
|
|
49
|
-
workspaceId:
|
|
50
|
-
tenantId:
|
|
51
|
-
productId:
|
|
52
|
-
productName:
|
|
48
|
+
authToken: c.authToken,
|
|
49
|
+
workspaceId: c.workspaceId,
|
|
50
|
+
tenantId: c.tenantId,
|
|
51
|
+
productId: c.productId,
|
|
52
|
+
productName: c.productName,
|
|
53
53
|
onWorkflowSaved: n
|
|
54
|
-
}),
|
|
54
|
+
}), h(E), _(D), u().catch((e) => {
|
|
55
55
|
console.warn("[Workflows] Could not refresh installed nodes", e);
|
|
56
|
-
}),
|
|
57
|
-
|
|
56
|
+
}), O.set(!0), () => {
|
|
57
|
+
O.set(!1), d(), m(), f();
|
|
58
58
|
};
|
|
59
59
|
}, [
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
]),
|
|
72
|
-
let e = (e, t) => `${e.endsWith("/") ? e.slice(0, -1) : e}/${t}`, t = (t) => m.navigate(e(m.basePath ?? "/", t));
|
|
73
|
-
return /* @__PURE__ */ O("div", {
|
|
74
|
-
className: "mx-auto flex h-full min-h-[60vh] w-full max-w-2xl flex-col justify-center gap-6 px-4 py-10",
|
|
75
|
-
children: [
|
|
76
|
-
/* @__PURE__ */ D(u, {
|
|
77
|
-
icon: /* @__PURE__ */ D(p, {
|
|
78
|
-
className: "size-4",
|
|
79
|
-
"aria-hidden": "true"
|
|
80
|
-
}),
|
|
81
|
-
children: E("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.")
|
|
82
|
-
}),
|
|
83
|
-
/* @__PURE__ */ D(o, {
|
|
84
|
-
className: "p-6",
|
|
85
|
-
children: /* @__PURE__ */ D(c, {
|
|
86
|
-
illustration: "onboarding",
|
|
87
|
-
title: E("workflows.provider.workspaceRequired.title", "Pick a workspace to start building"),
|
|
88
|
-
description: E("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.")
|
|
89
|
-
})
|
|
90
|
-
}),
|
|
91
|
-
/* @__PURE__ */ D(l, {
|
|
92
|
-
storageKey: "workflows-get-started",
|
|
93
|
-
title: E("workflows.provider.nextSteps.title", "Once your workspace is active"),
|
|
94
|
-
steps: [
|
|
95
|
-
{
|
|
96
|
-
id: "open-workflows",
|
|
97
|
-
label: E("workflows.provider.nextSteps.open.label", "Open your workflows"),
|
|
98
|
-
description: E("workflows.provider.nextSteps.open.description", "Browse, search, and manage every automation in this workspace."),
|
|
99
|
-
icon: /* @__PURE__ */ D(p, {
|
|
100
|
-
className: "size-4",
|
|
101
|
-
"aria-hidden": "true"
|
|
102
|
-
}),
|
|
103
|
-
onClick: () => t("list")
|
|
104
|
-
},
|
|
105
|
-
{
|
|
106
|
-
id: "start-template",
|
|
107
|
-
label: E("workflows.provider.nextSteps.template.label", "Start from a template"),
|
|
108
|
-
description: E("workflows.provider.nextSteps.template.description", "Skip the blank canvas — adapt a ready-made workflow to your use-case."),
|
|
109
|
-
icon: /* @__PURE__ */ D(f, {
|
|
110
|
-
className: "size-4",
|
|
111
|
-
"aria-hidden": "true"
|
|
112
|
-
}),
|
|
113
|
-
onClick: () => t("templates")
|
|
114
|
-
},
|
|
115
|
-
{
|
|
116
|
-
id: "build-new",
|
|
117
|
-
label: E("workflows.provider.nextSteps.build.label", "Build a workflow from scratch"),
|
|
118
|
-
description: E("workflows.provider.nextSteps.build.description", "Open the visual builder and wire nodes together step by step."),
|
|
119
|
-
icon: /* @__PURE__ */ D(d, {
|
|
120
|
-
className: "size-4",
|
|
121
|
-
"aria-hidden": "true"
|
|
122
|
-
}),
|
|
123
|
-
onClick: () => t("new")
|
|
124
|
-
}
|
|
125
|
-
]
|
|
126
|
-
})
|
|
127
|
-
]
|
|
128
|
-
});
|
|
129
|
-
}
|
|
130
|
-
return !F || !m.workspaceToken || !m.productId ? /* @__PURE__ */ O("div", {
|
|
60
|
+
O,
|
|
61
|
+
E,
|
|
62
|
+
D,
|
|
63
|
+
c.apiGatewayUrl,
|
|
64
|
+
c.authToken,
|
|
65
|
+
c.workspaceToken,
|
|
66
|
+
c.workspaceId,
|
|
67
|
+
c.tenantId,
|
|
68
|
+
c.productId,
|
|
69
|
+
c.productName,
|
|
70
|
+
c.callbacks
|
|
71
|
+
]), c.workspaceId ? !k || !c.workspaceToken || !c.productId ? /* @__PURE__ */ S("div", {
|
|
131
72
|
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",
|
|
132
73
|
role: "status",
|
|
133
74
|
"aria-live": "polite",
|
|
134
75
|
"aria-busy": "true",
|
|
135
|
-
"aria-label":
|
|
136
|
-
children: [/* @__PURE__ */
|
|
76
|
+
"aria-label": b("workflows.provider.loading.ariaLabel", "Loading workflows"),
|
|
77
|
+
children: [/* @__PURE__ */ S(s, {
|
|
137
78
|
treatment: "glass",
|
|
138
79
|
className: "flex w-full flex-col items-center gap-4 border-border-seam p-6",
|
|
139
80
|
children: [
|
|
140
|
-
/* @__PURE__ */
|
|
141
|
-
/* @__PURE__ */
|
|
142
|
-
/* @__PURE__ */
|
|
81
|
+
/* @__PURE__ */ x("div", { className: "h-12 w-12 rounded-full bg-muted/60 motion-safe:animate-vc-shimmer" }),
|
|
82
|
+
/* @__PURE__ */ x("div", { className: "h-4 w-40 rounded bg-muted/50 motion-safe:animate-vc-shimmer" }),
|
|
83
|
+
/* @__PURE__ */ x("div", { className: "h-3 w-56 max-w-full rounded bg-muted/30 motion-safe:animate-vc-shimmer" })
|
|
143
84
|
]
|
|
144
|
-
}), /* @__PURE__ */
|
|
85
|
+
}), /* @__PURE__ */ x("p", {
|
|
145
86
|
className: "text-sm text-text-secondary",
|
|
146
|
-
children:
|
|
87
|
+
children: b("workflows.provider.loading.message", "Connecting workflows...")
|
|
147
88
|
})]
|
|
148
|
-
}) : /* @__PURE__ */
|
|
149
|
-
value:
|
|
150
|
-
children: /* @__PURE__ */
|
|
151
|
-
t:
|
|
152
|
-
children: /* @__PURE__ */
|
|
153
|
-
scopeId:
|
|
89
|
+
}) : /* @__PURE__ */ x(C.Provider, {
|
|
90
|
+
value: c,
|
|
91
|
+
children: /* @__PURE__ */ x(l, {
|
|
92
|
+
t: b,
|
|
93
|
+
children: /* @__PURE__ */ x(y, {
|
|
94
|
+
scopeId: c.workspaceId ?? null,
|
|
154
95
|
gateway: "workspace",
|
|
155
|
-
children: /* @__PURE__ */
|
|
96
|
+
children: /* @__PURE__ */ x(w, { children: r })
|
|
156
97
|
})
|
|
157
98
|
})
|
|
99
|
+
}) : /* @__PURE__ */ x(n, {
|
|
100
|
+
basePath: c.basePath,
|
|
101
|
+
navigate: c.navigate
|
|
158
102
|
});
|
|
159
103
|
}
|
|
160
104
|
//#endregion
|
|
161
|
-
export {
|
|
105
|
+
export { E as WorkflowsProvider };
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import { useWorkflowsTranslation as e } from "../i18n.js";
|
|
2
|
+
import { useProductDocsUrl as t } from "@burdenoff/fe-libs/shared/components";
|
|
3
|
+
import { EmphasisPanel as n, IllustratedEmptyState as r, NextSteps as i, PagePurpose as a } from "@burdenoff/fe-libs/ui";
|
|
4
|
+
import { Boxes as o, LayoutDashboard as s, Workflow as c } from "lucide-react";
|
|
5
|
+
import { jsx as l, jsxs as u } from "react/jsx-runtime";
|
|
6
|
+
//#region src/providers/WorkspaceRequiredGuidance.tsx
|
|
7
|
+
var d = "/users/getting-started", f = "fluidgrids";
|
|
8
|
+
function p({ basePath: p, navigate: m }) {
|
|
9
|
+
let h = e(), g = t(d, { productSlug: f }), _ = (e, t) => `${e.endsWith("/") ? e.slice(0, -1) : e}/${t}`, v = (e) => m(_(p ?? "/", e));
|
|
10
|
+
return /* @__PURE__ */ u("div", {
|
|
11
|
+
className: "mx-auto flex h-full min-h-[60vh] w-full max-w-2xl flex-col justify-center gap-6 px-4 py-10",
|
|
12
|
+
children: [
|
|
13
|
+
/* @__PURE__ */ l(a, {
|
|
14
|
+
icon: /* @__PURE__ */ l(c, {
|
|
15
|
+
className: "size-4",
|
|
16
|
+
"aria-hidden": "true"
|
|
17
|
+
}),
|
|
18
|
+
learnMoreHref: g,
|
|
19
|
+
learnMoreLabel: h("workflows.provider.learnMore", "Learn more"),
|
|
20
|
+
children: h("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.")
|
|
21
|
+
}),
|
|
22
|
+
/* @__PURE__ */ l(n, {
|
|
23
|
+
className: "p-6",
|
|
24
|
+
children: /* @__PURE__ */ l(r, {
|
|
25
|
+
illustration: "onboarding",
|
|
26
|
+
title: h("workflows.provider.workspaceRequired.title", "Pick a workspace to start building"),
|
|
27
|
+
description: h("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.")
|
|
28
|
+
})
|
|
29
|
+
}),
|
|
30
|
+
/* @__PURE__ */ l(i, {
|
|
31
|
+
storageKey: "workflows-get-started",
|
|
32
|
+
title: h("workflows.provider.nextSteps.title", "Once your workspace is active"),
|
|
33
|
+
steps: [
|
|
34
|
+
{
|
|
35
|
+
id: "open-workflows",
|
|
36
|
+
label: h("workflows.provider.nextSteps.open.label", "Open your workflows"),
|
|
37
|
+
description: h("workflows.provider.nextSteps.open.description", "Browse, search, and manage every automation in this workspace."),
|
|
38
|
+
icon: /* @__PURE__ */ l(c, {
|
|
39
|
+
className: "size-4",
|
|
40
|
+
"aria-hidden": "true"
|
|
41
|
+
}),
|
|
42
|
+
onClick: () => v("list")
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
id: "start-template",
|
|
46
|
+
label: h("workflows.provider.nextSteps.template.label", "Start from a template"),
|
|
47
|
+
description: h("workflows.provider.nextSteps.template.description", "Skip the blank canvas — adapt a ready-made workflow to your use-case."),
|
|
48
|
+
icon: /* @__PURE__ */ l(s, {
|
|
49
|
+
className: "size-4",
|
|
50
|
+
"aria-hidden": "true"
|
|
51
|
+
}),
|
|
52
|
+
onClick: () => v("templates")
|
|
53
|
+
},
|
|
54
|
+
{
|
|
55
|
+
id: "build-new",
|
|
56
|
+
label: h("workflows.provider.nextSteps.build.label", "Build a workflow from scratch"),
|
|
57
|
+
description: h("workflows.provider.nextSteps.build.description", "Open the visual builder and wire nodes together step by step."),
|
|
58
|
+
icon: /* @__PURE__ */ l(o, {
|
|
59
|
+
className: "size-4",
|
|
60
|
+
"aria-hidden": "true"
|
|
61
|
+
}),
|
|
62
|
+
onClick: () => v("new")
|
|
63
|
+
}
|
|
64
|
+
]
|
|
65
|
+
})
|
|
66
|
+
]
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
//#endregion
|
|
70
|
+
export { p as WorkspaceRequiredGuidance };
|
package/dist/translations/en.js
CHANGED
|
@@ -26,6 +26,7 @@ var e = { workflows: {
|
|
|
26
26
|
message: "Loading workflow page..."
|
|
27
27
|
} },
|
|
28
28
|
provider: {
|
|
29
|
+
learnMore: "Learn more",
|
|
29
30
|
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.",
|
|
30
31
|
workspaceRequired: {
|
|
31
32
|
title: "Pick a workspace to start building",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@burdenoff/microfe-workflows",
|
|
3
|
-
"version": "2026.1023.
|
|
3
|
+
"version": "2026.1023.2",
|
|
4
4
|
"description": "Workflows microfrontend for Burdenoff products - thin shell over @burdenoff/fluidgrids-fe-sdk",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"exports": {
|
|
@@ -43,7 +43,7 @@
|
|
|
43
43
|
"react-router": "^8.3.0"
|
|
44
44
|
},
|
|
45
45
|
"devDependencies": {
|
|
46
|
-
"@burdenoff/fluidgrids-fe-sdk": "2026.
|
|
46
|
+
"@burdenoff/fluidgrids-fe-sdk": "2026.1023.1",
|
|
47
47
|
"@eslint/js": "^9.39.2",
|
|
48
48
|
"@types/bun": "^1.3.9",
|
|
49
49
|
"@types/react": "^19.0.2",
|
|
@@ -66,7 +66,7 @@
|
|
|
66
66
|
"vite-plugin-dts": "3.9.1"
|
|
67
67
|
},
|
|
68
68
|
"peerDependencies": {
|
|
69
|
-
"@burdenoff/fluidgrids-fe-sdk": "2026.
|
|
69
|
+
"@burdenoff/fluidgrids-fe-sdk": "2026.1023.1",
|
|
70
70
|
"framer-motion": "^12.0.0",
|
|
71
71
|
"react": "^19.0.0",
|
|
72
72
|
"react-dom": "^19.0.0"
|