@burdenoff/fluidgrids-fe-sdk 2026.1111.16 → 2026.1111.18
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/README.md +41 -0
- package/dist/AiStudioPage-BHVEU4Wp.js +774 -0
- package/dist/ApprovalInboxPage-dbBDSJ-f.js +558 -0
- package/dist/DataSinkDashboardPage-1h2QsMzH.js +270 -0
- package/dist/DataTablesPage-BZy2z0LB.js +1690 -0
- package/dist/EntityTagPicker-BqRNsLCQ.js +135 -0
- package/dist/{ExecutionDetailPage-D-0_POAf.js → ExecutionDetailPage-BdcZmLT4.js} +799 -4420
- package/dist/ExecutionDetailPage-DvQ667OE.d.ts +10 -0
- package/dist/ExecutionsListPage-BCUJoAIE.js +2742 -0
- package/dist/{FailureTriagePanel-BHiduL7A.js → FailureTriagePanel-B9hDQymi.js} +4 -97
- package/dist/{FluidGridsProvider-DmvFADFa.js → FluidGridsProvider-dvZSNtSW.js} +10 -350
- package/dist/HistoryPage-BLoRpJ1R.d.ts +6 -0
- package/dist/{HistoryPage-BbUgxx1I.js → HistoryPage-U0tqupBN.js} +6 -4
- package/dist/HumanRequestCard-D-ooVPDn.js +439 -0
- package/dist/{InsightsPage-s6f5bU-8.js → InsightsPage-CALo16eB.js} +17 -328
- package/dist/ManagedAiPolicyAuthority-BxwJ3ptd.js +40 -0
- package/dist/{ManagedAiPolicyAuthority-CGux_DaV.d.ts → ManagedAiPolicyAuthority-DM3t3wNr.d.ts} +1 -5
- package/dist/ManagedAiPolicyAuthorityContext-CNkxIOZ1.js +10 -0
- package/dist/{MissingNodesInstallModal-B-9gHy2K.js → MissingNodesInstallModal-CMybsI8h.js} +3 -2
- package/dist/{NodesPage-ClvhUfbh.js → NodesPage-Bf5PhfBK.js} +7 -3
- package/dist/NodesPage-DEbnz9iU.d.ts +6 -0
- package/dist/{PublishCustomNodeAction-D2F7oN0S.js → PublishCustomNodeAction-5XXnSA3H.js} +3 -45
- package/dist/QuotaExhaustedDialog-7IFSaLyi.js +54 -0
- package/dist/RunnerStatusPill-Ctg4TJcP.js +187 -0
- package/dist/RunnersPage-CLCOCclc.js +467 -0
- package/dist/{ManagedAiPolicyAuthority-DsSaz-vg.js → SettingsPage-CJLZvv4J.js} +743 -773
- package/dist/SettingsPage-DMHQFj5-.d.ts +9 -0
- package/dist/TagFilterSelect-DCBOH6Ou.js +41 -0
- package/dist/TaskQueuesPage-9VgSnLdL.js +951 -0
- package/dist/TemplateCard-DsC0KNH1.js +1416 -0
- package/dist/{TemplateConfigurationModal-D_Mvgxqa.js → TemplateConfigurationModal-BhGWIzpm.js} +3 -2
- package/dist/{TemplateDetailPanel-DfFfUcOe.js → TemplateDetailPanel-D4cUVr-m.js} +3 -3
- package/dist/TemplatePreview-FayF6jxh.js +231 -0
- package/dist/TemplatesPage-BG3H-6v6.d.ts +10 -0
- package/dist/{TemplatesPage-Cku13bav.js → TemplatesPage-CsDNT54N.js} +11 -228
- package/dist/VariablesPage-67WR_lVE.js +949 -0
- package/dist/{VersionDiffDialog-Dq2xlPFI.js → VersionDiffDialog-DSN0mU0f.js} +2 -1
- package/dist/WorkflowBuilder-CPnXEL5J.js +555 -0
- package/dist/{WorkflowSearchRedirect-CaoOOpEl.js → WorkflowBuilder-YXRysvZc.js} +19 -585
- package/dist/{WorkflowProposalCard-8Vr56kQa.js → WorkflowProposalCard-qrEeNyYG.js} +4 -405
- package/dist/WorkflowSearchRedirect-DwDNZ_q5.js +36 -0
- package/dist/WorkflowShareDialog-mbIwRQUY.js +168 -0
- package/dist/WorkflowsList-CcNDQge5.d.ts +6 -0
- package/dist/{WorkflowsList-B2j1Pehb.js → WorkflowsList-DiiGyZkT.js} +12 -6
- package/dist/agent-form-Bfvm32j1.js +83 -0
- package/dist/{agentTools-DJ5o2ekg.js → agentTools-8s_25Q_F.js} +3 -2
- package/dist/{ai-usage-D5p7ZeRR.js → ai-usage-glCwHyQz.js} +1 -1
- package/dist/api-BrCHB5oA.js +224 -0
- package/dist/api-C8e0iV-Q.js +55 -0
- package/dist/button-DG7y_FVJ.js +48 -0
- package/dist/{canvasNoteTools-D3zUdEeg.js → canvasNoteTools-B6pYARgU.js} +2 -2
- package/dist/client-C9XSzSXr.js +1147 -0
- package/dist/code-editor-field-9-GdVE_8.js +111 -0
- package/dist/{codec-client-DstqyzTN.js → codec-client-CJ95Rmqo.js} +1 -1
- package/dist/constants-B2lhWNoN.js +202 -0
- package/dist/constants-XdvUxeWK.d.ts +162 -0
- package/dist/dialog-Cjb4lB4D.js +105 -0
- package/dist/executions.d.ts +1 -1
- package/dist/executions.js +2 -1
- package/dist/feature-flags-DM5myWaD.js +296 -0
- package/dist/flags.d.ts +3 -0
- package/dist/flags.js +4 -0
- package/dist/{flow-builder-DEzT8TQu.js → flow-builder-CZDKRc6f.js} +662 -10716
- package/dist/{node-endpoint-configs-DHFGA5MQ.js → graphql-operation-types-kX-MMjgW.js} +1 -1194
- package/dist/{graphql-types-XcDLtFwU.js → graphql-types-CDKVWH2R.js} +2 -202
- package/dist/history.d.ts +1 -1
- package/dist/history.js +1 -1
- package/dist/{index-DRf25-D3.d.ts → index-6JR2vD9J.d.ts} +33 -215
- package/dist/index-72XFgvbn.d.ts +132 -0
- package/dist/index-BcdtKBM-.d.ts +56 -0
- package/dist/{index-B3BWqafN.d.ts → index-DjiFgEQl.d.ts} +5 -131
- package/dist/index.d.ts +13 -9
- package/dist/index.js +52 -5300
- package/dist/{node-detail-view-LNqeIqN-.js → node-detail-view-CV4ZRwqh.js} +13 -8
- package/dist/node-editor-tab-body-DU-dh35X.js +174 -0
- package/dist/node-endpoint-configs-B5bjNMDW.js +37 -0
- package/dist/node-registry-refresh-Dy0uRg9f.js +84 -0
- package/dist/nodes.d.ts +1 -1
- package/dist/nodes.js +1 -1
- package/dist/observability.d.ts +1 -1
- package/dist/observability.js +2 -1
- package/dist/popover-BJHvrFGR.js +472 -0
- package/dist/{quick-config-panel-D3ogsaFL.js → quick-config-panel-ws3pLvbt.js} +3 -2
- package/dist/rolldown-runtime-hDbaFkMy.js +18 -0
- package/dist/run-display-BycKYSU0.js +46 -0
- package/dist/run-list-links-ByYC0OlV.js +98 -0
- package/dist/schedule-panel-C0mfGQSD.js +7542 -0
- package/dist/settings.d.ts +2 -1
- package/dist/settings.js +2 -1
- package/dist/shared-CMfn30xT.js +196 -0
- package/dist/sidebar-node-editor-CR1PiZO-.js +177 -0
- package/dist/templates.d.ts +1 -1
- package/dist/templates.js +2 -1
- package/dist/theme-provider-B3mIuz2d.js +11 -0
- package/dist/{useAgentDefinitions-NFtLytDR.js → useAgentDefinitions-B0dam3_o.js} +3 -397
- package/dist/useConnections-Cs7LCWEM.js +401 -0
- package/dist/useDurableParity-CzUQMFJ3.js +415 -0
- package/dist/useEntityTags-DhnsZcTl.js +236 -0
- package/dist/{useExecutions-DAzeWHS6.js → useExecutions-9aLuOt1c.js} +4 -3
- package/dist/{useObservability-COCZ0hUS.js → useObservability-CfEw3ZFD.js} +2 -2
- package/dist/{useRunHistory-CsYUbouO.js → useRunHistory-B1xJDwl1.js} +4 -3
- package/dist/{WorkflowShareDialog-6RRDe-_v.js → useWorkflowCodeExport-Bu2QYJzA.js} +7 -210
- package/dist/{useWorkflows-w4Dx2fF2.js → useWorkflows-BlVVu8NM.js} +3 -2
- package/dist/utils-uaL5UVxb.js +65 -0
- package/dist/workflow-builder.d.ts +1 -1
- package/dist/workflow-builder.js +4 -2
- package/dist/workflow-host.d.ts +6 -0
- package/dist/workflow-host.js +9 -0
- package/dist/workflow-pages.d.ts +55 -0
- package/dist/workflow-pages.js +113 -0
- package/dist/workflows-list.d.ts +1 -1
- package/dist/workflows-list.js +1 -1
- package/package.json +13 -1
- package/dist/ExecutionDetailPage-MvsnOnE1.d.ts +0 -4
- package/dist/HistoryPage-BqUizaFv.d.ts +0 -3
- package/dist/NodesPage-C97-9K2Y.d.ts +0 -3
- package/dist/TemplatesPage-D0qnXzHh.d.ts +0 -4
- package/dist/WorkflowsList-0d5GSKdh.d.ts +0 -3
- package/dist/agent-form-BvMWhQ42.js +0 -496
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { t as __exportAll } from "./rolldown-runtime-hDbaFkMy.js";
|
|
3
|
+
import { g as toCodeMirrorDiagnostics } from "./node-operation-selection--oy-yEq_.js";
|
|
4
|
+
import { Fn as useBuilderReadOnly } from "./FluidGridsProvider-dvZSNtSW.js";
|
|
5
|
+
import { useEffect, useMemo, useRef, useState } from "react";
|
|
6
|
+
import { cn } from "@burdenoff/fe-libs/utils";
|
|
7
|
+
import { jsx } from "react/jsx-runtime";
|
|
8
|
+
import CodeMirror, { EditorView } from "@uiw/react-codemirror";
|
|
9
|
+
import { lintGutter, setDiagnostics } from "@codemirror/lint";
|
|
10
|
+
|
|
11
|
+
// src/builder/components/ndv/code-editor-field.tsx
|
|
12
|
+
var code_editor_field_exports = /* @__PURE__ */ __exportAll({ CodeEditorField: () => CodeEditorField });
|
|
13
|
+
/**
|
|
14
|
+
* Loads the grammar for the selected language on demand (BOFF-6695). The
|
|
15
|
+
* lezer parsers are heavy and only one language is ever shown per editor, so
|
|
16
|
+
* each language pack is a separate chunk that loads when an editor for it
|
|
17
|
+
* mounts. `null` until the pack resolves: the editor renders as plain text
|
|
18
|
+
* for that first moment and reconfigures once highlighting arrives.
|
|
19
|
+
*/
|
|
20
|
+
function useLanguageExtension(language) {
|
|
21
|
+
const [extension, setExtension] = useState(null);
|
|
22
|
+
useEffect(() => {
|
|
23
|
+
let cancelled = false;
|
|
24
|
+
(language === "python" ? import("@codemirror/lang-python").then((m) => m.python()) : import("@codemirror/lang-javascript").then((m) => m.javascript({ typescript: language === "typescript" }))).then((ext) => {
|
|
25
|
+
if (!cancelled) setExtension(ext);
|
|
26
|
+
});
|
|
27
|
+
return () => {
|
|
28
|
+
cancelled = true;
|
|
29
|
+
};
|
|
30
|
+
}, [language]);
|
|
31
|
+
return extension;
|
|
32
|
+
}
|
|
33
|
+
function normalizeCodeLanguage(value) {
|
|
34
|
+
return typeof value === "string" && value.toLowerCase().startsWith("py") ? "python" : "javascript";
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Follows the app shell's `.dark` class on <html> so the editor theme matches
|
|
38
|
+
* the surrounding UI (fe-libs toggles that class; there is no context to read).
|
|
39
|
+
*/
|
|
40
|
+
function useIsDarkTheme() {
|
|
41
|
+
const [dark, setDark] = useState(() => typeof document !== "undefined" && document.documentElement.classList.contains("dark"));
|
|
42
|
+
useEffect(() => {
|
|
43
|
+
const root = document.documentElement;
|
|
44
|
+
const observer = new MutationObserver(() => setDark(root.classList.contains("dark")));
|
|
45
|
+
observer.observe(root, {
|
|
46
|
+
attributes: true,
|
|
47
|
+
attributeFilter: ["class"]
|
|
48
|
+
});
|
|
49
|
+
return () => observer.disconnect();
|
|
50
|
+
}, []);
|
|
51
|
+
return dark;
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* CodeMirror-backed editor for `code`-typed NDV parameters (n8n-style Code
|
|
55
|
+
* node). Purely presentational — the stored value stays a plain string in
|
|
56
|
+
* `args.state`, exactly like the single-line input it replaces.
|
|
57
|
+
*/
|
|
58
|
+
function CodeEditorField({ value, language, placeholder, label, onChange, readOnly: readOnlyProp = false, diagnostics, minHeight = "180px", maxHeight = "420px", className, "data-testid": testId }) {
|
|
59
|
+
const dark = useIsDarkTheme();
|
|
60
|
+
const withLint = diagnostics !== void 0;
|
|
61
|
+
const builderReadOnly = useBuilderReadOnly();
|
|
62
|
+
const readOnly = readOnlyProp || builderReadOnly;
|
|
63
|
+
const languageExtension = useLanguageExtension(language);
|
|
64
|
+
const extensions = useMemo(() => [
|
|
65
|
+
...languageExtension ? [languageExtension] : [],
|
|
66
|
+
...label ? [EditorView.contentAttributes.of({ "aria-label": label })] : [],
|
|
67
|
+
...withLint ? [lintGutter()] : []
|
|
68
|
+
], [
|
|
69
|
+
languageExtension,
|
|
70
|
+
label,
|
|
71
|
+
withLint
|
|
72
|
+
]);
|
|
73
|
+
const viewRef = useRef(null);
|
|
74
|
+
useEffect(() => {
|
|
75
|
+
const view = viewRef.current;
|
|
76
|
+
if (!view || diagnostics === void 0) return;
|
|
77
|
+
view.dispatch(setDiagnostics(view.state, toCodeMirrorDiagnostics(view.state.doc.toString(), diagnostics)));
|
|
78
|
+
}, [diagnostics]);
|
|
79
|
+
return /* @__PURE__ */ jsx("div", {
|
|
80
|
+
"data-testid": testId,
|
|
81
|
+
className: cn("overflow-hidden rounded-md border border-input text-sm transition-colors focus-within:border-primary", className),
|
|
82
|
+
onKeyDown: (e) => e.stopPropagation(),
|
|
83
|
+
onMouseDown: (e) => e.stopPropagation(),
|
|
84
|
+
children: /* @__PURE__ */ jsx(CodeMirror, {
|
|
85
|
+
value,
|
|
86
|
+
onChange: readOnly ? void 0 : onChange,
|
|
87
|
+
extensions,
|
|
88
|
+
theme: dark ? "dark" : "light",
|
|
89
|
+
placeholder,
|
|
90
|
+
minHeight,
|
|
91
|
+
maxHeight,
|
|
92
|
+
editable: !readOnly,
|
|
93
|
+
readOnly,
|
|
94
|
+
onCreateEditor: (view) => {
|
|
95
|
+
viewRef.current = view;
|
|
96
|
+
if (diagnostics?.length) view.dispatch(setDiagnostics(view.state, toCodeMirrorDiagnostics(view.state.doc.toString(), diagnostics)));
|
|
97
|
+
},
|
|
98
|
+
basicSetup: {
|
|
99
|
+
lineNumbers: true,
|
|
100
|
+
foldGutter: true,
|
|
101
|
+
highlightActiveLine: !readOnly,
|
|
102
|
+
autocompletion: !readOnly,
|
|
103
|
+
bracketMatching: true,
|
|
104
|
+
closeBrackets: !readOnly,
|
|
105
|
+
indentOnInput: !readOnly
|
|
106
|
+
}
|
|
107
|
+
})
|
|
108
|
+
});
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
export { code_editor_field_exports as n, normalizeCodeLanguage as r, CodeEditorField as t };
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import {
|
|
2
|
+
import { _ as throwIfResultError, n as getFluidGridsClient } from "./client-C9XSzSXr.js";
|
|
3
3
|
import { r as useTr } from "./TranslationBridge-Da-TPgQm.js";
|
|
4
4
|
import { useCallback, useEffect, useState } from "react";
|
|
5
5
|
import { cn } from "@burdenoff/fe-libs/utils";
|
|
@@ -0,0 +1,202 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { t as cn } from "./cn-QqidFIgr.js";
|
|
3
|
+
import { cloneElement, createContext, forwardRef, useContext, useMemo } from "react";
|
|
4
|
+
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
5
|
+
import * as TooltipPrimitive from "@radix-ui/react-tooltip";
|
|
6
|
+
|
|
7
|
+
// src/ui/tooltip.tsx
|
|
8
|
+
const TooltipProvider = TooltipPrimitive.Provider;
|
|
9
|
+
const Tooltip = TooltipPrimitive.Root;
|
|
10
|
+
const TooltipTrigger = TooltipPrimitive.Trigger;
|
|
11
|
+
const TooltipContent = forwardRef(({ className, sideOffset = 4, ...props }, ref) => /* @__PURE__ */ jsx(TooltipPrimitive.Content, {
|
|
12
|
+
ref,
|
|
13
|
+
sideOffset,
|
|
14
|
+
className: cn("z-50 overflow-hidden rounded-md border bg-popover px-3 py-1.5 text-sm text-popover-foreground shadow-md animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2", className),
|
|
15
|
+
...props
|
|
16
|
+
}));
|
|
17
|
+
TooltipContent.displayName = TooltipPrimitive.Content.displayName;
|
|
18
|
+
|
|
19
|
+
// src/permissions/PermissionsBridge.tsx
|
|
20
|
+
/**
|
|
21
|
+
* FluidGrids Permissions Bridge
|
|
22
|
+
*
|
|
23
|
+
* The SDK never talks to the RBAC service itself and never imports
|
|
24
|
+
* @burdenoff/fe-libs (embed/standalone consumers have no shell providers).
|
|
25
|
+
* Instead, hosts that DO have real permission data (e.g. microfe-workflows,
|
|
26
|
+
* which wraps the SDK in the fe-libs PermissionProvider) bridge it in via
|
|
27
|
+
* FluidGridsPermissionsProvider.
|
|
28
|
+
*
|
|
29
|
+
* Without a provider the context defaults to allow-all (enforced: false):
|
|
30
|
+
* every surface renders enabled and the API gateway remains the enforcement
|
|
31
|
+
* point. This keeps /embed/workflow, /shared/:id and standalone embedders
|
|
32
|
+
* working unchanged.
|
|
33
|
+
*/
|
|
34
|
+
/** No-provider default: allow-all, unenforced (gateway remains the gate). */
|
|
35
|
+
const ALLOW_ALL_PERMISSIONS = {
|
|
36
|
+
hasPermission: () => true,
|
|
37
|
+
isLoading: false,
|
|
38
|
+
enforced: false
|
|
39
|
+
};
|
|
40
|
+
const FluidGridsPermissionsContext = createContext(ALLOW_ALL_PERMISSIONS);
|
|
41
|
+
function FluidGridsPermissionsProvider({ hasPermission, isLoading = false, children }) {
|
|
42
|
+
const value = useMemo(() => ({
|
|
43
|
+
hasPermission,
|
|
44
|
+
isLoading,
|
|
45
|
+
enforced: true
|
|
46
|
+
}), [hasPermission, isLoading]);
|
|
47
|
+
return /* @__PURE__ */ jsx(FluidGridsPermissionsContext.Provider, {
|
|
48
|
+
value,
|
|
49
|
+
children
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Pure gating semantics, extracted for unit testing: denied while loading
|
|
54
|
+
* (no flash of allowed UI), any-of across a permission list, allow-all when
|
|
55
|
+
* the context is the unenforced default.
|
|
56
|
+
*/
|
|
57
|
+
function evaluatePermissionCheck(ctx, permission) {
|
|
58
|
+
const permissions = typeof permission === "string" ? [permission] : permission;
|
|
59
|
+
return {
|
|
60
|
+
allowed: ctx.isLoading ? false : permissions.some((p) => ctx.hasPermission(p)),
|
|
61
|
+
isLoading: ctx.isLoading,
|
|
62
|
+
enforced: ctx.enforced
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
/** Accepts a single permission or an any-of list. */
|
|
66
|
+
function useFluidGridsPermission(permission) {
|
|
67
|
+
return evaluatePermissionCheck(useContext(FluidGridsPermissionsContext), permission);
|
|
68
|
+
}
|
|
69
|
+
const DEFAULT_DENIED_TOOLTIP = "You don't have permission to perform this action";
|
|
70
|
+
/**
|
|
71
|
+
* Wraps a single button-like element. When the permission is denied the
|
|
72
|
+
* child is disabled (with an explanatory tooltip) or hidden; while
|
|
73
|
+
* permissions load it renders disabled without the tooltip.
|
|
74
|
+
*/
|
|
75
|
+
function SdkPermissionButton({ permission, deniedBehavior = "disable", deniedTooltip = DEFAULT_DENIED_TOOLTIP, deniedTooltipClassName, children }) {
|
|
76
|
+
const { allowed, isLoading } = useFluidGridsPermission(permission);
|
|
77
|
+
if (allowed) return children;
|
|
78
|
+
if (deniedBehavior === "hide") return null;
|
|
79
|
+
const disabledChild = cloneElement(children, {
|
|
80
|
+
disabled: true,
|
|
81
|
+
onClick: void 0
|
|
82
|
+
});
|
|
83
|
+
if (isLoading) return disabledChild;
|
|
84
|
+
return /* @__PURE__ */ jsx(TooltipProvider, { children: /* @__PURE__ */ jsxs(Tooltip, { children: [/* @__PURE__ */ jsx(TooltipTrigger, {
|
|
85
|
+
asChild: true,
|
|
86
|
+
children: /* @__PURE__ */ jsx("span", {
|
|
87
|
+
className: "inline-flex cursor-not-allowed",
|
|
88
|
+
children: disabledChild
|
|
89
|
+
})
|
|
90
|
+
}), /* @__PURE__ */ jsx(TooltipContent, {
|
|
91
|
+
className: deniedTooltipClassName,
|
|
92
|
+
children: deniedTooltip
|
|
93
|
+
})] }) });
|
|
94
|
+
}
|
|
95
|
+
/** Renders children only when the permission is granted (and loaded). */
|
|
96
|
+
function SdkPermissionGate({ permission, fallback = null, children }) {
|
|
97
|
+
const { allowed } = useFluidGridsPermission(permission);
|
|
98
|
+
return /* @__PURE__ */ jsx(Fragment, { children: allowed ? children : fallback });
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
// src/permissions/constants.ts
|
|
102
|
+
/**
|
|
103
|
+
* FluidGrids Permission Constants
|
|
104
|
+
*
|
|
105
|
+
* Canonical permission strings for FluidGrids UI surfaces, matching the
|
|
106
|
+
* backend @rbac (resource, action) pairs. Format: '{resourceType}:{action}'.
|
|
107
|
+
*
|
|
108
|
+
* Hosts (e.g. microfe-workflows) bridge real permission data via
|
|
109
|
+
* FluidGridsPermissionsProvider; without a provider the SDK defaults to
|
|
110
|
+
* allow-all and the gateway remains the enforcement point.
|
|
111
|
+
*/
|
|
112
|
+
const FLUIDGRIDS_PERMISSIONS = {
|
|
113
|
+
WORKFLOW_LIST: "workflow:list",
|
|
114
|
+
WORKFLOW_READ: "workflow:read",
|
|
115
|
+
WORKFLOW_CREATE: "workflow:create",
|
|
116
|
+
WORKFLOW_UPDATE: "workflow:update",
|
|
117
|
+
WORKFLOW_DELETE: "workflow:delete",
|
|
118
|
+
WORKFLOW_EXECUTE: "workflow:execute",
|
|
119
|
+
/** Activating workflows; also turns failure triage on and off (BOFF-3698). */
|
|
120
|
+
WORKFLOW_PUBLISH: "workflow:publish",
|
|
121
|
+
/** Changing who a workflow is shared with (BOFF-9726); the service also checks the workflow. */
|
|
122
|
+
WORKFLOW_SHARE: "workflow:share",
|
|
123
|
+
WORKFLOW_RUN_LIST: "workflow-run:list",
|
|
124
|
+
WORKFLOW_RUN_READ: "workflow-run:read",
|
|
125
|
+
WORKFLOW_RUN_EXECUTE: "workflow-run:execute",
|
|
126
|
+
/** Terminating a durable-function run (terminateWorkflowRun, BOFF-9905). */
|
|
127
|
+
WORKFLOW_RUN_DELETE: "workflow-run:delete",
|
|
128
|
+
NODE_LIST: "node:list",
|
|
129
|
+
NODE_READ: "node:read",
|
|
130
|
+
NODE_CREATE: "node:create",
|
|
131
|
+
NODE_DELETE: "node:delete",
|
|
132
|
+
NODE_INSTALLATION_LIST: "node-installation:list",
|
|
133
|
+
NODE_INSTALLATION_READ: "node-installation:read",
|
|
134
|
+
NODE_INSTALLATION_CREATE: "node-installation:create",
|
|
135
|
+
NODE_INSTALLATION_UPDATE: "node-installation:update",
|
|
136
|
+
NODE_INSTALLATION_DELETE: "node-installation:delete",
|
|
137
|
+
NODE_ENDPOINT_CONFIG_LIST: "node-endpoint-config:list",
|
|
138
|
+
NODE_ENDPOINT_CONFIG_READ: "node-endpoint-config:read",
|
|
139
|
+
NODE_ENDPOINT_CONFIG_UPDATE: "node-endpoint-config:update",
|
|
140
|
+
NODE_ENDPOINT_CONFIG_DELETE: "node-endpoint-config:delete",
|
|
141
|
+
SCHEDULED_JOB_LIST: "scheduled-job:list",
|
|
142
|
+
SCHEDULED_JOB_READ: "scheduled-job:read",
|
|
143
|
+
SCHEDULED_JOB_CREATE: "scheduled-job:create",
|
|
144
|
+
SCHEDULED_JOB_UPDATE: "scheduled-job:update",
|
|
145
|
+
SCHEDULED_JOB_DELETE: "scheduled-job:delete",
|
|
146
|
+
AI_WORKFLOW_EXECUTE: "ai-workflow:execute",
|
|
147
|
+
AI_WORKFLOW_CREATE: "ai-workflow:create",
|
|
148
|
+
ARTIFACT_LIST: "artifact:list",
|
|
149
|
+
ARTIFACT_READ: "artifact:read",
|
|
150
|
+
ARTIFACT_DELETE: "artifact:delete",
|
|
151
|
+
CHAT_SESSION_LIST: "chat-session:list",
|
|
152
|
+
CHAT_SESSION_READ: "chat-session:read",
|
|
153
|
+
CHAT_SESSION_CREATE: "chat-session:create",
|
|
154
|
+
CHAT_SESSION_DELETE: "chat-session:delete",
|
|
155
|
+
SUBMISSION_LIST: "submission:list",
|
|
156
|
+
SUBMISSION_READ: "submission:read",
|
|
157
|
+
SUBMISSION_DELETE: "submission:delete",
|
|
158
|
+
SUBMISSION_EXECUTE: "submission:execute",
|
|
159
|
+
EVENT_REGISTRATION_LIST: "event-registration:list",
|
|
160
|
+
EVENT_REGISTRATION_READ: "event-registration:read",
|
|
161
|
+
EVENT_REGISTRATION_CREATE: "event-registration:create",
|
|
162
|
+
EVENT_REGISTRATION_UPDATE: "event-registration:update",
|
|
163
|
+
EVENT_REGISTRATION_DELETE: "event-registration:delete",
|
|
164
|
+
USAGE_LIST: "usage:list",
|
|
165
|
+
USAGE_READ: "usage:read",
|
|
166
|
+
DASHBOARD_READ: "dashboard:read",
|
|
167
|
+
SYSTEM_CONFIG_READ: "system-config:read",
|
|
168
|
+
SYSTEM_CONFIG_UPDATE: "system-config:update",
|
|
169
|
+
SYSTEM_CONFIG_MANAGE: "system-config:manage",
|
|
170
|
+
VARIABLE_READ: "workflow-variable:read",
|
|
171
|
+
VARIABLE_CREATE: "workflow-variable:create",
|
|
172
|
+
VARIABLE_UPDATE: "workflow-variable:update",
|
|
173
|
+
VARIABLE_DELETE: "workflow-variable:delete",
|
|
174
|
+
VARIABLE_REVEAL: "workflow-variable:reveal",
|
|
175
|
+
SECRETS_PROVIDER_CONFIG_READ: "secrets-provider-config:read",
|
|
176
|
+
SECRETS_PROVIDER_CONFIG_UPDATE: "secrets-provider-config:update",
|
|
177
|
+
SECRETS_PROVIDER_CONFIG_TEST: "secrets-provider-config:test",
|
|
178
|
+
INTEGRATION_CONNECTION_CREATE: "integration-connection:create",
|
|
179
|
+
SANDBOX_READ: "sandbox:read",
|
|
180
|
+
SANDBOX_CREATE: "sandbox:create",
|
|
181
|
+
/** Rotating a runner's registration token (rotateSandboxRunnerToken). */
|
|
182
|
+
SANDBOX_UPDATE: "sandbox:update",
|
|
183
|
+
SANDBOX_DELETE: "sandbox:delete",
|
|
184
|
+
DATA_TABLE_CREATE: "data-table:create",
|
|
185
|
+
DATA_TABLE_UPDATE: "data-table:update",
|
|
186
|
+
DATA_TABLE_DELETE: "data-table:delete",
|
|
187
|
+
DATA_TABLE_ROW_CREATE: "data-table-row:create",
|
|
188
|
+
DATA_TABLE_ROW_UPDATE: "data-table-row:update",
|
|
189
|
+
DATA_TABLE_ROW_DELETE: "data-table-row:delete",
|
|
190
|
+
TASK_QUEUE_READ: "task-queue:read",
|
|
191
|
+
TASK_QUEUE_CREATE: "task-queue:create",
|
|
192
|
+
TASK_QUEUE_UPDATE: "task-queue:update",
|
|
193
|
+
TASK_QUEUE_DELETE: "task-queue:delete",
|
|
194
|
+
RUNNER_READ: "runner:read",
|
|
195
|
+
RUNNER_CREATE: "runner:create",
|
|
196
|
+
RUNNER_UPDATE: "runner:update",
|
|
197
|
+
RUNNER_DELETE: "runner:delete",
|
|
198
|
+
TOOL_APPROVAL_REQUEST_READ: "tool-approval-request:read",
|
|
199
|
+
TOOL_APPROVAL_REQUEST_EXECUTE: "tool-approval-request:execute"
|
|
200
|
+
};
|
|
201
|
+
|
|
202
|
+
export { SdkPermissionGate as a, Tooltip as c, TooltipTrigger as d, SdkPermissionButton as i, TooltipContent as l, ALLOW_ALL_PERMISSIONS as n, evaluatePermissionCheck as o, FluidGridsPermissionsProvider as r, useFluidGridsPermission as s, FLUIDGRIDS_PERMISSIONS as t, TooltipProvider as u };
|
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
|
|
2
|
+
import { ReactElement, ReactNode } from "react";
|
|
3
|
+
import { ApolloClient } from "@apollo/client/core";
|
|
4
|
+
type Translator = (key: string, fallback: string, params?: Record<string, string | number>) => string;
|
|
5
|
+
declare const ENGLISH_FALLBACK_TRANSLATOR: Translator;
|
|
6
|
+
interface FluidGridsTranslationProviderProps {
|
|
7
|
+
t: Translator;
|
|
8
|
+
children: ReactNode;
|
|
9
|
+
}
|
|
10
|
+
declare function FluidGridsTranslationProvider({ t, children }: FluidGridsTranslationProviderProps): import("react").JSX.Element;
|
|
11
|
+
declare function useTr(): Translator;
|
|
12
|
+
declare function refreshNodeRegistry(): Promise<void>;
|
|
13
|
+
interface FluidGridsClientConfig {
|
|
14
|
+
apiGatewayUrl: string;
|
|
15
|
+
authToken?: string;
|
|
16
|
+
workspaceToken?: string;
|
|
17
|
+
workspaceId: string;
|
|
18
|
+
tenantId?: string;
|
|
19
|
+
productId?: string;
|
|
20
|
+
}
|
|
21
|
+
declare function createFluidGridsClient(config: FluidGridsClientConfig): ApolloClient;
|
|
22
|
+
declare function setFluidGridsClient(client: ApolloClient): void;
|
|
23
|
+
declare function getFluidGridsClient(): ApolloClient;
|
|
24
|
+
declare function getFluidGridsClientSafe(): ApolloClient | null;
|
|
25
|
+
declare function isFluidGridsClientReady(): boolean;
|
|
26
|
+
declare function waitForFluidGridsClient(timeoutMs?: number, intervalMs?: number): Promise<ApolloClient | null>;
|
|
27
|
+
declare function resetFluidGridsClient(): void;
|
|
28
|
+
interface GlobalClientConfig {
|
|
29
|
+
globalApiUrl: string;
|
|
30
|
+
authToken?: string;
|
|
31
|
+
workspaceId: string;
|
|
32
|
+
tenantId?: string;
|
|
33
|
+
organizationId?: string;
|
|
34
|
+
}
|
|
35
|
+
declare function setGlobalStoreClient(client: ApolloClient | null): void;
|
|
36
|
+
declare function getGlobalStoreClient(): ApolloClient | null;
|
|
37
|
+
declare function resetGlobalStoreClient(): void;
|
|
38
|
+
declare function createGlobalStoreClient(config: GlobalClientConfig): ApolloClient;
|
|
39
|
+
interface FluidGridsPermissionsValue {
|
|
40
|
+
hasPermission: (permission: string) => boolean;
|
|
41
|
+
isLoading: boolean;
|
|
42
|
+
enforced: boolean;
|
|
43
|
+
}
|
|
44
|
+
declare const ALLOW_ALL_PERMISSIONS: FluidGridsPermissionsValue;
|
|
45
|
+
interface FluidGridsPermissionsProviderProps {
|
|
46
|
+
hasPermission: (permission: string) => boolean;
|
|
47
|
+
isLoading?: boolean;
|
|
48
|
+
children: ReactNode;
|
|
49
|
+
}
|
|
50
|
+
declare function FluidGridsPermissionsProvider({ hasPermission, isLoading, children }: FluidGridsPermissionsProviderProps): ReactElement;
|
|
51
|
+
interface PermissionCheck {
|
|
52
|
+
allowed: boolean;
|
|
53
|
+
isLoading: boolean;
|
|
54
|
+
enforced: boolean;
|
|
55
|
+
}
|
|
56
|
+
declare function evaluatePermissionCheck(ctx: FluidGridsPermissionsValue, permission: string | readonly string[]): PermissionCheck;
|
|
57
|
+
declare function useFluidGridsPermission(permission: string | readonly string[]): PermissionCheck;
|
|
58
|
+
interface DisableableProps {
|
|
59
|
+
disabled?: boolean;
|
|
60
|
+
onClick?: (...args: never[]) => unknown;
|
|
61
|
+
}
|
|
62
|
+
interface SdkPermissionButtonProps {
|
|
63
|
+
permission: string | readonly string[];
|
|
64
|
+
deniedBehavior?: "disable" | "hide";
|
|
65
|
+
deniedTooltip?: string;
|
|
66
|
+
deniedTooltipClassName?: string;
|
|
67
|
+
children: ReactElement<DisableableProps>;
|
|
68
|
+
}
|
|
69
|
+
declare function SdkPermissionButton({ permission, deniedBehavior, deniedTooltip, deniedTooltipClassName, children }: SdkPermissionButtonProps): ReactElement | null;
|
|
70
|
+
interface SdkPermissionGateProps {
|
|
71
|
+
permission: string | readonly string[];
|
|
72
|
+
fallback?: ReactNode;
|
|
73
|
+
children: ReactNode;
|
|
74
|
+
}
|
|
75
|
+
declare function SdkPermissionGate({ permission, fallback, children }: SdkPermissionGateProps): ReactElement | null;
|
|
76
|
+
declare const FLUIDGRIDS_PERMISSIONS: {
|
|
77
|
+
readonly WORKFLOW_LIST: "workflow:list";
|
|
78
|
+
readonly WORKFLOW_READ: "workflow:read";
|
|
79
|
+
readonly WORKFLOW_CREATE: "workflow:create";
|
|
80
|
+
readonly WORKFLOW_UPDATE: "workflow:update";
|
|
81
|
+
readonly WORKFLOW_DELETE: "workflow:delete";
|
|
82
|
+
readonly WORKFLOW_EXECUTE: "workflow:execute";
|
|
83
|
+
readonly WORKFLOW_PUBLISH: "workflow:publish";
|
|
84
|
+
readonly WORKFLOW_SHARE: "workflow:share";
|
|
85
|
+
readonly WORKFLOW_RUN_LIST: "workflow-run:list";
|
|
86
|
+
readonly WORKFLOW_RUN_READ: "workflow-run:read";
|
|
87
|
+
readonly WORKFLOW_RUN_EXECUTE: "workflow-run:execute";
|
|
88
|
+
readonly WORKFLOW_RUN_DELETE: "workflow-run:delete";
|
|
89
|
+
readonly NODE_LIST: "node:list";
|
|
90
|
+
readonly NODE_READ: "node:read";
|
|
91
|
+
readonly NODE_CREATE: "node:create";
|
|
92
|
+
readonly NODE_DELETE: "node:delete";
|
|
93
|
+
readonly NODE_INSTALLATION_LIST: "node-installation:list";
|
|
94
|
+
readonly NODE_INSTALLATION_READ: "node-installation:read";
|
|
95
|
+
readonly NODE_INSTALLATION_CREATE: "node-installation:create";
|
|
96
|
+
readonly NODE_INSTALLATION_UPDATE: "node-installation:update";
|
|
97
|
+
readonly NODE_INSTALLATION_DELETE: "node-installation:delete";
|
|
98
|
+
readonly NODE_ENDPOINT_CONFIG_LIST: "node-endpoint-config:list";
|
|
99
|
+
readonly NODE_ENDPOINT_CONFIG_READ: "node-endpoint-config:read";
|
|
100
|
+
readonly NODE_ENDPOINT_CONFIG_UPDATE: "node-endpoint-config:update";
|
|
101
|
+
readonly NODE_ENDPOINT_CONFIG_DELETE: "node-endpoint-config:delete";
|
|
102
|
+
readonly SCHEDULED_JOB_LIST: "scheduled-job:list";
|
|
103
|
+
readonly SCHEDULED_JOB_READ: "scheduled-job:read";
|
|
104
|
+
readonly SCHEDULED_JOB_CREATE: "scheduled-job:create";
|
|
105
|
+
readonly SCHEDULED_JOB_UPDATE: "scheduled-job:update";
|
|
106
|
+
readonly SCHEDULED_JOB_DELETE: "scheduled-job:delete";
|
|
107
|
+
readonly AI_WORKFLOW_EXECUTE: "ai-workflow:execute";
|
|
108
|
+
readonly AI_WORKFLOW_CREATE: "ai-workflow:create";
|
|
109
|
+
readonly ARTIFACT_LIST: "artifact:list";
|
|
110
|
+
readonly ARTIFACT_READ: "artifact:read";
|
|
111
|
+
readonly ARTIFACT_DELETE: "artifact:delete";
|
|
112
|
+
readonly CHAT_SESSION_LIST: "chat-session:list";
|
|
113
|
+
readonly CHAT_SESSION_READ: "chat-session:read";
|
|
114
|
+
readonly CHAT_SESSION_CREATE: "chat-session:create";
|
|
115
|
+
readonly CHAT_SESSION_DELETE: "chat-session:delete";
|
|
116
|
+
readonly SUBMISSION_LIST: "submission:list";
|
|
117
|
+
readonly SUBMISSION_READ: "submission:read";
|
|
118
|
+
readonly SUBMISSION_DELETE: "submission:delete";
|
|
119
|
+
readonly SUBMISSION_EXECUTE: "submission:execute";
|
|
120
|
+
readonly EVENT_REGISTRATION_LIST: "event-registration:list";
|
|
121
|
+
readonly EVENT_REGISTRATION_READ: "event-registration:read";
|
|
122
|
+
readonly EVENT_REGISTRATION_CREATE: "event-registration:create";
|
|
123
|
+
readonly EVENT_REGISTRATION_UPDATE: "event-registration:update";
|
|
124
|
+
readonly EVENT_REGISTRATION_DELETE: "event-registration:delete";
|
|
125
|
+
readonly USAGE_LIST: "usage:list";
|
|
126
|
+
readonly USAGE_READ: "usage:read";
|
|
127
|
+
readonly DASHBOARD_READ: "dashboard:read";
|
|
128
|
+
readonly SYSTEM_CONFIG_READ: "system-config:read";
|
|
129
|
+
readonly SYSTEM_CONFIG_UPDATE: "system-config:update";
|
|
130
|
+
readonly SYSTEM_CONFIG_MANAGE: "system-config:manage";
|
|
131
|
+
readonly VARIABLE_READ: "workflow-variable:read";
|
|
132
|
+
readonly VARIABLE_CREATE: "workflow-variable:create";
|
|
133
|
+
readonly VARIABLE_UPDATE: "workflow-variable:update";
|
|
134
|
+
readonly VARIABLE_DELETE: "workflow-variable:delete";
|
|
135
|
+
readonly VARIABLE_REVEAL: "workflow-variable:reveal";
|
|
136
|
+
readonly SECRETS_PROVIDER_CONFIG_READ: "secrets-provider-config:read";
|
|
137
|
+
readonly SECRETS_PROVIDER_CONFIG_UPDATE: "secrets-provider-config:update";
|
|
138
|
+
readonly SECRETS_PROVIDER_CONFIG_TEST: "secrets-provider-config:test";
|
|
139
|
+
readonly INTEGRATION_CONNECTION_CREATE: "integration-connection:create";
|
|
140
|
+
readonly SANDBOX_READ: "sandbox:read";
|
|
141
|
+
readonly SANDBOX_CREATE: "sandbox:create";
|
|
142
|
+
readonly SANDBOX_UPDATE: "sandbox:update";
|
|
143
|
+
readonly SANDBOX_DELETE: "sandbox:delete";
|
|
144
|
+
readonly DATA_TABLE_CREATE: "data-table:create";
|
|
145
|
+
readonly DATA_TABLE_UPDATE: "data-table:update";
|
|
146
|
+
readonly DATA_TABLE_DELETE: "data-table:delete";
|
|
147
|
+
readonly DATA_TABLE_ROW_CREATE: "data-table-row:create";
|
|
148
|
+
readonly DATA_TABLE_ROW_UPDATE: "data-table-row:update";
|
|
149
|
+
readonly DATA_TABLE_ROW_DELETE: "data-table-row:delete";
|
|
150
|
+
readonly TASK_QUEUE_READ: "task-queue:read";
|
|
151
|
+
readonly TASK_QUEUE_CREATE: "task-queue:create";
|
|
152
|
+
readonly TASK_QUEUE_UPDATE: "task-queue:update";
|
|
153
|
+
readonly TASK_QUEUE_DELETE: "task-queue:delete";
|
|
154
|
+
readonly RUNNER_READ: "runner:read";
|
|
155
|
+
readonly RUNNER_CREATE: "runner:create";
|
|
156
|
+
readonly RUNNER_UPDATE: "runner:update";
|
|
157
|
+
readonly RUNNER_DELETE: "runner:delete";
|
|
158
|
+
readonly TOOL_APPROVAL_REQUEST_READ: "tool-approval-request:read";
|
|
159
|
+
readonly TOOL_APPROVAL_REQUEST_EXECUTE: "tool-approval-request:execute";
|
|
160
|
+
};
|
|
161
|
+
type FluidGridsPermission = (typeof FLUIDGRIDS_PERMISSIONS)[keyof typeof FLUIDGRIDS_PERMISSIONS];
|
|
162
|
+
export { FluidGridsTranslationProviderProps as A, isFluidGridsClientReady as C, refreshNodeRegistry as D, waitForFluidGridsClient as E, useTr as M, ENGLISH_FALLBACK_TRANSLATOR as O, getFluidGridsClientSafe as S, setFluidGridsClient as T, resetGlobalStoreClient as _, FluidGridsPermissionsProviderProps as a, createFluidGridsClient as b, SdkPermissionButton as c, SdkPermissionGateProps as d, evaluatePermissionCheck as f, getGlobalStoreClient as g, createGlobalStoreClient as h, FluidGridsPermissionsProvider as i, Translator as j, FluidGridsTranslationProvider as k, SdkPermissionButtonProps as l, GlobalClientConfig as m, FluidGridsPermission as n, FluidGridsPermissionsValue as o, useFluidGridsPermission as p, ALLOW_ALL_PERMISSIONS as r, PermissionCheck as s, FLUIDGRIDS_PERMISSIONS as t, SdkPermissionGate as u, setGlobalStoreClient as v, resetFluidGridsClient as w, getFluidGridsClient as x, FluidGridsClientConfig as y };
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { r as useTr } from "./TranslationBridge-Da-TPgQm.js";
|
|
3
|
+
import { t as cn } from "./cn-QqidFIgr.js";
|
|
4
|
+
import { forwardRef } from "react";
|
|
5
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
6
|
+
import { XIcon } from "lucide-react";
|
|
7
|
+
import * as DialogPrimitive from "@radix-ui/react-dialog";
|
|
8
|
+
|
|
9
|
+
// src/ui/input.tsx
|
|
10
|
+
const Input = forwardRef(({ className, type, ...props }, ref) => {
|
|
11
|
+
return /* @__PURE__ */ jsx("input", {
|
|
12
|
+
type,
|
|
13
|
+
className: cn("flex h-10 w-full rounded-md border border-input bg-background px-3 py-2 text-sm ring-offset-background file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50", className),
|
|
14
|
+
ref,
|
|
15
|
+
...props
|
|
16
|
+
});
|
|
17
|
+
});
|
|
18
|
+
Input.displayName = "Input";
|
|
19
|
+
|
|
20
|
+
// src/ui/dialog.tsx
|
|
21
|
+
function Dialog({ ...props }) {
|
|
22
|
+
return /* @__PURE__ */ jsx(DialogPrimitive.Root, {
|
|
23
|
+
"data-slot": "dialog",
|
|
24
|
+
...props
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
function DialogTrigger({ ...props }) {
|
|
28
|
+
return /* @__PURE__ */ jsx(DialogPrimitive.Trigger, {
|
|
29
|
+
"data-slot": "dialog-trigger",
|
|
30
|
+
...props
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
function DialogPortal({ ...props }) {
|
|
34
|
+
return /* @__PURE__ */ jsx(DialogPrimitive.Portal, {
|
|
35
|
+
"data-slot": "dialog-portal",
|
|
36
|
+
...props
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
function DialogClose({ ...props }) {
|
|
40
|
+
return /* @__PURE__ */ jsx(DialogPrimitive.Close, {
|
|
41
|
+
"data-slot": "dialog-close",
|
|
42
|
+
...props
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
function DialogOverlay({ className, ...props }) {
|
|
46
|
+
return /* @__PURE__ */ jsx(DialogPrimitive.Overlay, {
|
|
47
|
+
"data-slot": "dialog-overlay",
|
|
48
|
+
className: cn("data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-bg-overlay", className),
|
|
49
|
+
...props
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
function DialogContent({ className, children, showCloseButton = true, size = "default", ...props }) {
|
|
53
|
+
const tr = useTr();
|
|
54
|
+
return /* @__PURE__ */ jsxs(DialogPortal, {
|
|
55
|
+
"data-slot": "dialog-portal",
|
|
56
|
+
children: [/* @__PURE__ */ jsx(DialogOverlay, {}), /* @__PURE__ */ jsxs(DialogPrimitive.Content, {
|
|
57
|
+
"data-slot": "dialog-content",
|
|
58
|
+
className: cn("bg-background data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 fixed top-[50%] left-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-4 rounded-lg border p-6 shadow-lg duration-200 outline-none", {
|
|
59
|
+
default: "sm:max-w-lg",
|
|
60
|
+
lg: "sm:max-w-3xl",
|
|
61
|
+
xl: "sm:max-w-[1400px] w-[90vw]",
|
|
62
|
+
full: "sm:max-w-[95vw] w-[95vw]"
|
|
63
|
+
}[size], className),
|
|
64
|
+
...props,
|
|
65
|
+
children: [children, showCloseButton && /* @__PURE__ */ jsxs(DialogPrimitive.Close, {
|
|
66
|
+
"data-slot": "dialog-close",
|
|
67
|
+
className: "ring-offset-background focus:ring-ring data-[state=open]:bg-accent data-[state=open]:text-muted-foreground absolute top-4 right-4 rounded-xs opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none",
|
|
68
|
+
children: [/* @__PURE__ */ jsx(XIcon, { className: "size-4" }), /* @__PURE__ */ jsx("span", {
|
|
69
|
+
className: "sr-only",
|
|
70
|
+
children: tr("fluidgrids.ui.dialog.closeLabel", "Close")
|
|
71
|
+
})]
|
|
72
|
+
})]
|
|
73
|
+
})]
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
function DialogHeader({ className, ...props }) {
|
|
77
|
+
return /* @__PURE__ */ jsx("div", {
|
|
78
|
+
"data-slot": "dialog-header",
|
|
79
|
+
className: cn("flex flex-col gap-2 text-center sm:text-left", className),
|
|
80
|
+
...props
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
function DialogFooter({ className, ...props }) {
|
|
84
|
+
return /* @__PURE__ */ jsx("div", {
|
|
85
|
+
"data-slot": "dialog-footer",
|
|
86
|
+
className: cn("flex flex-col-reverse gap-2 sm:flex-row sm:justify-end", className),
|
|
87
|
+
...props
|
|
88
|
+
});
|
|
89
|
+
}
|
|
90
|
+
function DialogTitle({ className, ...props }) {
|
|
91
|
+
return /* @__PURE__ */ jsx(DialogPrimitive.Title, {
|
|
92
|
+
"data-slot": "dialog-title",
|
|
93
|
+
className: cn("text-lg leading-none font-semibold", className),
|
|
94
|
+
...props
|
|
95
|
+
});
|
|
96
|
+
}
|
|
97
|
+
function DialogDescription({ className, ...props }) {
|
|
98
|
+
return /* @__PURE__ */ jsx(DialogPrimitive.Description, {
|
|
99
|
+
"data-slot": "dialog-description",
|
|
100
|
+
className: cn("text-muted-foreground text-sm", className),
|
|
101
|
+
...props
|
|
102
|
+
});
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
export { DialogFooter as a, DialogPortal as c, Input as d, DialogDescription as i, DialogTitle as l, DialogClose as n, DialogHeader as o, DialogContent as r, DialogOverlay as s, Dialog as t, DialogTrigger as u };
|
package/dist/executions.d.ts
CHANGED
package/dist/executions.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import { t as
|
|
2
|
+
import { t as ExecutionsListPage } from "./ExecutionsListPage-BCUJoAIE.js";
|
|
3
|
+
import { t as ExecutionDetailPage } from "./ExecutionDetailPage-BdcZmLT4.js";
|
|
3
4
|
|
|
4
5
|
export { ExecutionDetailPage, ExecutionsListPage };
|