@loopstack/loopstack-studio 0.25.2 → 0.26.0
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/api/environments.js +4 -0
- package/dist/api/index.js +13 -9
- package/dist/app/EnvironmentEmbedRoot.js +29 -19
- package/dist/components/data-table/DataList.js +93 -91
- package/dist/components/data-table/DataTable.js +128 -126
- package/dist/components/feedback/Snackbar.js +1 -1
- package/dist/components/layout/StudioSidebar.js +124 -131
- package/dist/components/ui/sidebar.js +2 -2
- package/dist/components/ui/slider.js +37 -26
- package/dist/components/ui-widgets/widgets/SandboxRun.js +16 -14
- package/dist/features/code-explorer/components/CodeExplorerTree.js +1 -0
- package/dist/features/code-explorer/components/FileContentViewer.js +1 -1
- package/dist/features/dashboard/RunItem.js +39 -37
- package/dist/features/debug/lib/flow-utils.js +1 -1
- package/dist/features/documents/DocumentRenderer.js +59 -58
- package/dist/features/documents/renderers/useDocumentTransition.js +29 -24
- package/dist/features/feature-registry/FeatureRegistryProvider.js +17 -0
- package/dist/features/feature-registry/index.js +1 -0
- package/dist/features/file-explorer/api/files.js +7 -0
- package/dist/features/file-explorer/components/FileExplorerPanel.js +95 -0
- package/dist/features/{workbench/components/RemoteFileTabsBar.js → file-explorer/components/FileTabsBar.js} +4 -4
- package/dist/features/{workbench/components/RemoteFileTree.js → file-explorer/components/FileTree.js} +6 -6
- package/dist/features/file-explorer/file-explorer-feature.js +12 -0
- package/dist/features/file-explorer/hooks/useFileExplorer.js +44 -0
- package/dist/features/file-explorer/index.js +2 -0
- package/dist/features/file-explorer/providers/FileExplorerProvider.js +112 -0
- package/dist/features/oauth/OAuthPromptRenderer.js +162 -132
- package/dist/features/runs/Runs.js +1 -1
- package/dist/features/secrets/components/WorkbenchSecretsPanel.js +178 -0
- package/dist/features/secrets/index.js +1 -0
- package/dist/features/{documents → secrets}/renderers/SecretInputRenderer.js +17 -17
- package/dist/features/secrets/secrets-feature.js +14 -0
- package/dist/features/workbench/Workbench.js +32 -82
- package/dist/features/workbench/WorkflowList.js +109 -46
- package/dist/features/workbench/components/SidebarPanel.js +155 -0
- package/dist/features/workbench/components/WorkbenchEnvironmentPanel.js +82 -0
- package/dist/features/workbench/components/WorkbenchIconSidebar.js +128 -60
- package/dist/features/workbench/components/WorkbenchPreviewPanel.js +127 -114
- package/dist/features/workbench/components/WorkbenchRunsPanel.js +32 -0
- package/dist/features/workbench/components/WorkbenchSidebarShell.js +80 -0
- package/dist/features/workbench/hooks/useWorkflowData.js +3 -3
- package/dist/features/workbench/index.js +3 -2
- package/dist/features/workbench/providers/WorkbenchLayoutProvider.js +60 -62
- package/dist/features/workspaces/Workspaces.js +1 -1
- package/dist/features/workspaces/components/EnvironmentSlotSelector.js +68 -51
- package/dist/features/workspaces/components/WorkflowRunForm.js +1 -1
- package/dist/features/workspaces/components/WorkspaceHomePage.js +1 -1
- package/dist/hooks/useEnvironmentPreviewUrl.js +13 -0
- package/dist/hooks/useEnvironments.js +8 -0
- package/dist/hooks/useWorkflows.js +28 -26
- package/dist/hooks/useWorkspaces.js +28 -26
- package/dist/index.d.ts +98 -7
- package/dist/index.js +8 -1
- package/dist/loopstack-studio.css +1 -1
- package/dist/node_modules/@shikijs/core/dist/index.js +105 -643
- package/dist/node_modules/@shikijs/engine-oniguruma/dist/index.js +135 -122
- package/dist/node_modules/@shikijs/langs/dist/bird2.js +1 -1
- package/dist/node_modules/@shikijs/langs/dist/cobol.js +1 -1
- package/dist/node_modules/@shikijs/langs/dist/css.js +1 -1
- package/dist/node_modules/@shikijs/langs/dist/dart.js +1 -1
- package/dist/node_modules/@shikijs/langs/dist/emacs-lisp.js +1 -1
- package/dist/node_modules/@shikijs/langs/dist/es-tag-sql.js +1 -1
- package/dist/node_modules/@shikijs/langs/dist/go.js +1 -1
- package/dist/node_modules/@shikijs/langs/dist/kusto.js +1 -1
- package/dist/node_modules/@shikijs/langs/dist/nextflow-groovy.js +1 -1
- package/dist/node_modules/@shikijs/langs/dist/php.js +1 -1
- package/dist/node_modules/@shikijs/langs/dist/ruby.js +1 -1
- package/dist/node_modules/@shikijs/langs/dist/typespec.js +1 -1
- package/dist/node_modules/@shikijs/primitive/dist/index.js +538 -0
- package/dist/node_modules/@shikijs/themes/dist/horizon-bright.js +1 -1
- package/dist/node_modules/@xyflow/react/dist/esm/index.js +1 -1
- package/dist/node_modules/shiki/dist/bundle-full.js +6 -5
- package/dist/node_modules/shiki/dist/chunk-CtajNgzt.js +15 -0
- package/dist/node_modules/shiki/dist/engine-oniguruma.js +5 -0
- package/dist/node_modules/shiki/dist/{langs.js → langs-bundle-full-DfKZStlK.js} +1 -1
- package/dist/node_modules/shiki/dist/themes.js +1 -1
- package/dist/pages/DashboardPage.js +54 -79
- package/dist/pages/DebugWorkflowDetailsPage.js +41 -55
- package/dist/pages/DebugWorkflowsPage.js +151 -112
- package/dist/pages/EmbedWorkbenchPage.js +2 -1
- package/dist/pages/PreviewWorkbenchPage.js +77 -59
- package/dist/pages/RunsListPage.js +27 -41
- package/dist/pages/RunsPage.js +21 -36
- package/dist/pages/WorkbenchPage.js +48 -70
- package/dist/pages/WorkflowDebugPage.js +65 -79
- package/dist/pages/WorkspacePage.js +59 -86
- package/dist/pages/WorkspaceRunsPage.js +59 -54
- package/dist/pages/WorkspacesPage.js +11 -27
- package/dist/providers/StudioPreferencesProvider.js +54 -0
- package/package.json +29 -29
- package/dist/features/workbench/components/WorkbenchFilesPanel.js +0 -67
- package/dist/features/workbench/components/WorkbenchFloatingPanel.js +0 -57
- package/dist/features/workbench/components/WorkbenchFlowPanel.js +0 -47
- package/dist/features/workbench/components/WorkbenchSecretsPanel.js +0 -182
- package/dist/features/workbench/providers/RemoteFileExplorerProvider.js +0 -160
- /package/dist/{node_modules → frontend/studio/node_modules}/@dagrejs/dagre/dist/dagre.esm.js +0 -0
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { useStudio, useStudioOptional } from "../../providers/StudioProvider.js";
|
|
2
2
|
import { useFilterWorkflows } from "../../hooks/useWorkflows.js";
|
|
3
|
+
import { useFilterWorkspaces } from "../../hooks/useWorkspaces.js";
|
|
3
4
|
import { useComponentOverrides } from "../../providers/ComponentOverridesProvider.js";
|
|
4
5
|
import { cn } from "../../lib/utils.js";
|
|
5
6
|
import { Button } from "../ui/button.js";
|
|
@@ -9,12 +10,12 @@ import { c } from "react/compiler-runtime";
|
|
|
9
10
|
import { useState } from "react";
|
|
10
11
|
import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
|
|
11
12
|
import { Link, useLocation } from "react-router-dom";
|
|
12
|
-
import { CircleAlert,
|
|
13
|
+
import { CircleAlert, LayoutGrid, MoreHorizontal, PanelLeftIcon, Play, Star } from "lucide-react";
|
|
13
14
|
var DefaultSidebarHeader = () => {
|
|
14
|
-
let e = c(18), { state:
|
|
15
|
-
e[0] ===
|
|
16
|
-
let
|
|
17
|
-
e[2] ===
|
|
15
|
+
let e = c(18), { state: u, toggleSidebar: d } = useSidebar(), [f, p] = useState(!1), g = u === "collapsed" ? "justify-center" : "justify-between", _;
|
|
16
|
+
e[0] === g ? _ = e[1] : (_ = cn("border-sidebar-border h-12 w-full flex-row items-center border-b px-1.5 py-0", g), e[0] = g, e[1] = _);
|
|
17
|
+
let v;
|
|
18
|
+
e[2] === u ? v = e[3] : (v = u === "expanded" && /* @__PURE__ */ jsxs("div", {
|
|
18
19
|
className: "flex items-center gap-2 overflow-hidden px-1.5",
|
|
19
20
|
children: [/* @__PURE__ */ jsx("img", {
|
|
20
21
|
src: "/loopstack.svg",
|
|
@@ -44,182 +45,174 @@ var DefaultSidebarHeader = () => {
|
|
|
44
45
|
},
|
|
45
46
|
children: "Loopstack Studio"
|
|
46
47
|
})]
|
|
47
|
-
}), e[2] =
|
|
48
|
-
let
|
|
49
|
-
e[4] === Symbol.for("react.memo_cache_sentinel") ? (
|
|
50
|
-
let
|
|
51
|
-
e[5] === Symbol.for("react.memo_cache_sentinel") ? (
|
|
52
|
-
let
|
|
53
|
-
e[7] !==
|
|
48
|
+
}), e[2] = u, e[3] = v);
|
|
49
|
+
let y;
|
|
50
|
+
e[4] === Symbol.for("react.memo_cache_sentinel") ? (y = cn("relative size-10 text-muted-foreground hover:cursor-pointer hover:bg-accent/50 hover:text-accent-foreground"), e[4] = y) : y = e[4];
|
|
51
|
+
let b, x;
|
|
52
|
+
e[5] === Symbol.for("react.memo_cache_sentinel") ? (b = () => p(!0), x = () => p(!1), e[5] = b, e[6] = x) : (b = e[5], x = e[6]);
|
|
53
|
+
let C;
|
|
54
|
+
e[7] !== f || e[8] !== u ? (C = u === "collapsed" ? /* @__PURE__ */ jsxs(Fragment$1, { children: [/* @__PURE__ */ jsx(motion.img, {
|
|
54
55
|
src: "/loopstack.svg",
|
|
55
56
|
alt: "Loopstack",
|
|
56
57
|
className: "absolute top-1/2 left-1/2 h-5 w-5 -translate-x-1/2 -translate-y-1/2",
|
|
57
58
|
initial: { opacity: 1 },
|
|
58
|
-
animate: { opacity:
|
|
59
|
+
animate: { opacity: f ? 0 : 1 },
|
|
59
60
|
transition: { duration: .2 }
|
|
60
61
|
}), /* @__PURE__ */ jsx(motion.div, {
|
|
61
62
|
className: "absolute top-1/2 left-1/2 flex -translate-x-1/2 -translate-y-1/2 items-center justify-center",
|
|
62
63
|
initial: { opacity: 0 },
|
|
63
|
-
animate: { opacity:
|
|
64
|
+
animate: { opacity: f ? 1 : 0 },
|
|
64
65
|
transition: { duration: .2 },
|
|
65
66
|
children: /* @__PURE__ */ jsx(PanelLeftIcon, { className: "size-5" })
|
|
66
|
-
})] }) : /* @__PURE__ */ jsx(PanelLeftIcon, { className: "size-5" }), e[7] =
|
|
67
|
-
let
|
|
68
|
-
e[10] === Symbol.for("react.memo_cache_sentinel") ? (
|
|
67
|
+
})] }) : /* @__PURE__ */ jsx(PanelLeftIcon, { className: "size-5" }), e[7] = f, e[8] = u, e[9] = C) : C = e[9];
|
|
68
|
+
let w;
|
|
69
|
+
e[10] === Symbol.for("react.memo_cache_sentinel") ? (w = /* @__PURE__ */ jsx("span", {
|
|
69
70
|
className: "sr-only",
|
|
70
71
|
children: "Toggle Sidebar"
|
|
71
|
-
}), e[10] =
|
|
72
|
-
let
|
|
73
|
-
e[11] !==
|
|
72
|
+
}), e[10] = w) : w = e[10];
|
|
73
|
+
let T;
|
|
74
|
+
e[11] !== C || e[12] !== d ? (T = /* @__PURE__ */ jsxs(Button, {
|
|
74
75
|
"data-sidebar": "trigger",
|
|
75
76
|
"data-slot": "sidebar-trigger",
|
|
76
77
|
variant: "ghost",
|
|
77
78
|
size: "icon",
|
|
78
|
-
className:
|
|
79
|
-
onClick:
|
|
80
|
-
onMouseEnter:
|
|
79
|
+
className: y,
|
|
80
|
+
onClick: d,
|
|
81
|
+
onMouseEnter: b,
|
|
81
82
|
onMouseLeave: x,
|
|
82
|
-
children: [
|
|
83
|
-
}), e[11] =
|
|
84
|
-
let
|
|
85
|
-
return e[14] !==
|
|
86
|
-
className:
|
|
87
|
-
children: [
|
|
88
|
-
}), e[14] =
|
|
83
|
+
children: [C, w]
|
|
84
|
+
}), e[11] = C, e[12] = d, e[13] = T) : T = e[13];
|
|
85
|
+
let E;
|
|
86
|
+
return e[14] !== _ || e[15] !== v || e[16] !== T ? (E = /* @__PURE__ */ jsxs(SidebarHeader, {
|
|
87
|
+
className: _,
|
|
88
|
+
children: [v, T]
|
|
89
|
+
}), e[14] = _, e[15] = v, e[16] = T, e[17] = E) : E = e[17], E;
|
|
89
90
|
}, RunsNav = () => {
|
|
90
|
-
let
|
|
91
|
-
|
|
92
|
-
let
|
|
93
|
-
|
|
91
|
+
let u = c(26), f = useLocation(), { router: p } = useStudio(), m = p.getRuns(), h;
|
|
92
|
+
u[0] === p ? h = u[1] : (h = p.getRunsActionRequired(), u[0] = p, u[1] = h);
|
|
93
|
+
let g = h, _;
|
|
94
|
+
u[2] === Symbol.for("react.memo_cache_sentinel") ? (_ = {
|
|
94
95
|
parentId: null,
|
|
95
96
|
status: "paused"
|
|
96
|
-
},
|
|
97
|
-
let
|
|
98
|
-
|
|
99
|
-
let
|
|
100
|
-
|
|
97
|
+
}, u[2] = _) : _ = u[2];
|
|
98
|
+
let v = useFilterWorkflows(void 0, _, "createdAt", "DESC", 0, 1).data?.total ?? 0, S;
|
|
99
|
+
u[3] === Symbol.for("react.memo_cache_sentinel") ? (S = /* @__PURE__ */ jsx(SidebarGroupLabel, { children: "Runs" }), u[3] = S) : S = u[3];
|
|
100
|
+
let D = f.pathname === m || f.pathname === m + "/", O, k;
|
|
101
|
+
u[4] === Symbol.for("react.memo_cache_sentinel") ? (O = /* @__PURE__ */ jsx(Play, {}), k = /* @__PURE__ */ jsx("span", { children: "Overview" }), u[4] = O, u[5] = k) : (O = u[4], k = u[5]);
|
|
101
102
|
let A;
|
|
102
|
-
|
|
103
|
-
to:
|
|
104
|
-
children: [
|
|
105
|
-
}),
|
|
103
|
+
u[6] === m ? A = u[7] : (A = /* @__PURE__ */ jsxs(Link, {
|
|
104
|
+
to: m,
|
|
105
|
+
children: [O, k]
|
|
106
|
+
}), u[6] = m, u[7] = A);
|
|
106
107
|
let j;
|
|
107
|
-
|
|
108
|
+
u[8] !== D || u[9] !== A ? (j = /* @__PURE__ */ jsx(SidebarMenuItem, { children: /* @__PURE__ */ jsx(SidebarMenuButton, {
|
|
108
109
|
asChild: !0,
|
|
109
|
-
isActive:
|
|
110
|
+
isActive: D,
|
|
110
111
|
tooltip: "Overview",
|
|
111
112
|
children: A
|
|
112
|
-
}) }),
|
|
113
|
-
let M =
|
|
114
|
-
|
|
113
|
+
}) }), u[8] = D, u[9] = A, u[10] = j) : j = u[10];
|
|
114
|
+
let M = f.pathname === g, N, P;
|
|
115
|
+
u[11] === Symbol.for("react.memo_cache_sentinel") ? (P = /* @__PURE__ */ jsx(CircleAlert, {}), N = /* @__PURE__ */ jsx("span", { children: "Action Required" }), u[11] = N, u[12] = P) : (N = u[11], P = u[12]);
|
|
115
116
|
let F;
|
|
116
|
-
|
|
117
|
-
to:
|
|
117
|
+
u[13] === g ? F = u[14] : (F = /* @__PURE__ */ jsxs(Link, {
|
|
118
|
+
to: g,
|
|
118
119
|
children: [P, N]
|
|
119
|
-
}),
|
|
120
|
+
}), u[13] = g, u[14] = F);
|
|
120
121
|
let I;
|
|
121
|
-
|
|
122
|
+
u[15] !== F || u[16] !== M ? (I = /* @__PURE__ */ jsx(SidebarMenuButton, {
|
|
122
123
|
asChild: !0,
|
|
123
124
|
isActive: M,
|
|
124
125
|
tooltip: "Action Required",
|
|
125
126
|
children: F
|
|
126
|
-
}),
|
|
127
|
+
}), u[15] = F, u[16] = M, u[17] = I) : I = u[17];
|
|
127
128
|
let L;
|
|
128
|
-
|
|
129
|
+
u[18] === v ? L = u[19] : (L = v > 0 && /* @__PURE__ */ jsx(SidebarMenuBadge, { children: v }), u[18] = v, u[19] = L);
|
|
129
130
|
let R;
|
|
130
|
-
|
|
131
|
+
u[20] !== I || u[21] !== L ? (R = /* @__PURE__ */ jsxs(SidebarMenuItem, { children: [I, L] }), u[20] = I, u[21] = L, u[22] = R) : R = u[22];
|
|
131
132
|
let z;
|
|
132
|
-
return
|
|
133
|
+
return u[23] !== R || u[24] !== j ? (z = /* @__PURE__ */ jsxs(SidebarGroup, { children: [S, /* @__PURE__ */ jsx(SidebarGroupContent, { children: /* @__PURE__ */ jsxs(SidebarMenu, { children: [j, R] }) })] }), u[23] = R, u[24] = j, u[25] = z) : z = u[25], z;
|
|
133
134
|
}, WorkspacesNav = () => {
|
|
134
|
-
let
|
|
135
|
-
|
|
136
|
-
let m;
|
|
137
|
-
|
|
138
|
-
let
|
|
139
|
-
|
|
140
|
-
let b;
|
|
141
|
-
l[6] === f ? b = l[7] : (b = /* @__PURE__ */ jsxs(Link, {
|
|
142
|
-
to: f,
|
|
143
|
-
children: [h, g]
|
|
144
|
-
}), l[6] = f, l[7] = b);
|
|
135
|
+
let u = c(10), d = useLocation(), { router: f } = useStudio(), p;
|
|
136
|
+
u[0] === f ? p = u[1] : (p = f.getWorkspaces(), u[0] = f, u[1] = p);
|
|
137
|
+
let m = p, h;
|
|
138
|
+
u[2] === Symbol.for("react.memo_cache_sentinel") ? (h = /* @__PURE__ */ jsx(SidebarGroupLabel, { children: "Workspaces" }), u[2] = h) : h = u[2];
|
|
139
|
+
let g = d.pathname === m, _, v;
|
|
140
|
+
u[3] === Symbol.for("react.memo_cache_sentinel") ? (_ = /* @__PURE__ */ jsx(LayoutGrid, {}), v = /* @__PURE__ */ jsx("span", { children: "Workspaces" }), u[3] = _, u[4] = v) : (_ = u[3], v = u[4]);
|
|
145
141
|
let S;
|
|
146
|
-
|
|
142
|
+
u[5] === m ? S = u[6] : (S = /* @__PURE__ */ jsxs(Link, {
|
|
143
|
+
to: m,
|
|
144
|
+
children: [_, v]
|
|
145
|
+
}), u[5] = m, u[6] = S);
|
|
146
|
+
let w;
|
|
147
|
+
return u[7] !== g || u[8] !== S ? (w = /* @__PURE__ */ jsxs(SidebarGroup, { children: [h, /* @__PURE__ */ jsx(SidebarGroupContent, { children: /* @__PURE__ */ jsx(SidebarMenu, { children: /* @__PURE__ */ jsx(SidebarMenuItem, { children: /* @__PURE__ */ jsx(SidebarMenuButton, {
|
|
147
148
|
asChild: !0,
|
|
148
|
-
isActive:
|
|
149
|
-
tooltip: "
|
|
150
|
-
children:
|
|
151
|
-
}) }) }) })] }),
|
|
152
|
-
},
|
|
153
|
-
let
|
|
154
|
-
|
|
155
|
-
let
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
let
|
|
162
|
-
|
|
163
|
-
let
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
149
|
+
isActive: g,
|
|
150
|
+
tooltip: "Workspaces",
|
|
151
|
+
children: S
|
|
152
|
+
}) }) }) })] }), u[7] = g, u[8] = S, u[9] = w) : w = u[9], w;
|
|
153
|
+
}, FavouritesNav = () => {
|
|
154
|
+
let u = c(19), d = useLocation(), { router: p } = useStudio(), m;
|
|
155
|
+
u[0] === p ? m = u[1] : (m = p.getWorkspaces(), u[0] = p, u[1] = m);
|
|
156
|
+
let h = m, g;
|
|
157
|
+
u[2] === Symbol.for("react.memo_cache_sentinel") ? (g = { isFavourite: "true" }, u[2] = g) : g = u[2];
|
|
158
|
+
let _ = useFilterWorkspaces(void 0, g, "createdAt", "ASC", 0, 10), v;
|
|
159
|
+
u[3] === _.data?.data ? v = u[4] : (v = _.data?.data ?? [], u[3] = _.data?.data, u[4] = v);
|
|
160
|
+
let S = v;
|
|
161
|
+
if (S.length === 0) return null;
|
|
162
|
+
let w;
|
|
163
|
+
u[5] === Symbol.for("react.memo_cache_sentinel") ? (w = /* @__PURE__ */ jsx(SidebarGroupLabel, { children: "Favourites" }), u[5] = w) : w = u[5];
|
|
164
|
+
let D;
|
|
165
|
+
if (u[6] !== S || u[7] !== d || u[8] !== p) {
|
|
166
|
+
let e;
|
|
167
|
+
u[10] !== d || u[11] !== p ? (e = (e) => {
|
|
168
|
+
let u = p.getWorkspace(e.id);
|
|
169
|
+
return /* @__PURE__ */ jsx(SidebarMenuItem, { children: /* @__PURE__ */ jsx(SidebarMenuButton, {
|
|
170
|
+
asChild: !0,
|
|
171
|
+
isActive: d.pathname === u || d.pathname.startsWith(u + "/"),
|
|
172
|
+
tooltip: e.title,
|
|
173
|
+
children: /* @__PURE__ */ jsxs(Link, {
|
|
174
|
+
to: u,
|
|
175
|
+
children: [/* @__PURE__ */ jsx(Star, { className: "h-4 w-4" }), /* @__PURE__ */ jsx("span", { children: e.title })]
|
|
176
|
+
})
|
|
177
|
+
}) }, e.id);
|
|
178
|
+
}, u[10] = d, u[11] = p, u[12] = e) : e = u[12], D = S.map(e), u[6] = S, u[7] = d, u[8] = p, u[9] = D;
|
|
179
|
+
} else D = u[9];
|
|
180
|
+
let O;
|
|
181
|
+
u[13] !== _.data?.total || u[14] !== h ? (O = (_.data?.total ?? 0) > 10 && /* @__PURE__ */ jsx(SidebarMenuItem, { children: /* @__PURE__ */ jsx(SidebarMenuButton, {
|
|
175
182
|
asChild: !0,
|
|
176
|
-
|
|
177
|
-
tooltip: e.label,
|
|
183
|
+
tooltip: "More favourites",
|
|
178
184
|
children: /* @__PURE__ */ jsxs(Link, {
|
|
179
|
-
to:
|
|
180
|
-
children: [/* @__PURE__ */ jsx(
|
|
185
|
+
to: h,
|
|
186
|
+
children: [/* @__PURE__ */ jsx(MoreHorizontal, { className: "h-4 w-4" }), /* @__PURE__ */ jsx("span", { children: "More" })]
|
|
181
187
|
})
|
|
182
|
-
}) }
|
|
188
|
+
}) }), u[13] = _.data?.total, u[14] = h, u[15] = O) : O = u[15];
|
|
189
|
+
let k;
|
|
190
|
+
return u[16] !== D || u[17] !== O ? (k = /* @__PURE__ */ jsxs(SidebarGroup, { children: [w, /* @__PURE__ */ jsx(SidebarGroupContent, { children: /* @__PURE__ */ jsxs(SidebarMenu, { children: [D, O] }) })] }), u[16] = D, u[17] = O, u[18] = k) : k = u[18], k;
|
|
183
191
|
}, DefaultSidebarFooter = () => {
|
|
184
|
-
let
|
|
185
|
-
|
|
186
|
-
let p = f, m = u.pathname === p, h, _;
|
|
187
|
-
l[2] === Symbol.for("react.memo_cache_sentinel") ? (h = /* @__PURE__ */ jsx(Info, {}), _ = /* @__PURE__ */ jsx("span", { children: "Info" }), l[2] = h, l[3] = _) : (h = l[2], _ = l[3]);
|
|
188
|
-
let v;
|
|
189
|
-
l[4] === p ? v = l[5] : (v = /* @__PURE__ */ jsxs(Link, {
|
|
190
|
-
to: p,
|
|
191
|
-
children: [h, _]
|
|
192
|
-
}), l[4] = p, l[5] = v);
|
|
193
|
-
let y;
|
|
194
|
-
return l[6] !== m || l[7] !== v ? (y = /* @__PURE__ */ jsx(SidebarFooter, { children: /* @__PURE__ */ jsx(SidebarMenu, { children: /* @__PURE__ */ jsx(SidebarMenuItem, { children: /* @__PURE__ */ jsx(SidebarMenuButton, {
|
|
195
|
-
asChild: !0,
|
|
196
|
-
isActive: m,
|
|
197
|
-
size: "sm",
|
|
198
|
-
tooltip: "Info",
|
|
199
|
-
children: v
|
|
200
|
-
}) }) }) }), l[6] = m, l[7] = v, l[8] = y) : y = l[8], y;
|
|
192
|
+
let e = c(1), u;
|
|
193
|
+
return e[0] === Symbol.for("react.memo_cache_sentinel") ? (u = /* @__PURE__ */ jsx(SidebarFooter, {}), e[0] = u) : u = e[0], u;
|
|
201
194
|
};
|
|
202
195
|
const StudioSidebar = () => {
|
|
203
|
-
let e = c(13),
|
|
204
|
-
e[0] ===
|
|
205
|
-
let
|
|
206
|
-
e[2] === f ?
|
|
196
|
+
let e = c(13), d = useComponentOverrides(), f = useStudioOptional(), m = d.SidebarHeader ?? DefaultSidebarHeader, h = d.SidebarFooter ?? DefaultSidebarFooter, v;
|
|
197
|
+
e[0] === m ? v = e[1] : (v = /* @__PURE__ */ jsx(m, {}), e[0] = m, e[1] = v);
|
|
198
|
+
let y;
|
|
199
|
+
e[2] === f ? y = e[3] : (y = f && /* @__PURE__ */ jsxs(Fragment$1, { children: [
|
|
207
200
|
/* @__PURE__ */ jsx(RunsNav, {}),
|
|
208
201
|
/* @__PURE__ */ jsx(WorkspacesNav, {}),
|
|
209
|
-
/* @__PURE__ */ jsx(
|
|
210
|
-
] }), e[2] = f, e[3] =
|
|
211
|
-
let y;
|
|
212
|
-
e[4] === v ? y = e[5] : (y = /* @__PURE__ */ jsx(SidebarContent, { children: v }), e[4] = v, e[5] = y);
|
|
202
|
+
/* @__PURE__ */ jsx(FavouritesNav, {})
|
|
203
|
+
] }), e[2] = f, e[3] = y);
|
|
213
204
|
let b;
|
|
214
|
-
e[
|
|
205
|
+
e[4] === y ? b = e[5] : (b = /* @__PURE__ */ jsx(SidebarContent, { children: y }), e[4] = y, e[5] = b);
|
|
215
206
|
let x;
|
|
216
|
-
|
|
207
|
+
e[6] !== h || e[7] !== f ? (x = f && /* @__PURE__ */ jsx(h, {}), e[6] = h, e[7] = f, e[8] = x) : x = e[8];
|
|
208
|
+
let S;
|
|
209
|
+
return e[9] !== v || e[10] !== b || e[11] !== x ? (S = /* @__PURE__ */ jsxs(Sidebar, {
|
|
217
210
|
collapsible: "icon",
|
|
218
211
|
children: [
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
212
|
+
v,
|
|
213
|
+
b,
|
|
214
|
+
x
|
|
222
215
|
]
|
|
223
|
-
}), e[9] =
|
|
216
|
+
}), e[9] = v, e[10] = b, e[11] = x, e[12] = S) : S = e[12], S;
|
|
224
217
|
};
|
|
225
218
|
export { StudioSidebar };
|
|
@@ -293,7 +293,7 @@ function SidebarGroup(t) {
|
|
|
293
293
|
let g = c(8), _, v;
|
|
294
294
|
g[0] === t ? (_ = g[1], v = g[2]) : ({className: _, ...v} = t, g[0] = t, g[1] = _, g[2] = v);
|
|
295
295
|
let y;
|
|
296
|
-
g[3] === _ ? y = g[4] : (y = cn("relative flex w-full min-w-0 flex-col p-1.5", _), g[3] = _, g[4] = y);
|
|
296
|
+
g[3] === _ ? y = g[4] : (y = cn("relative flex w-full min-w-0 flex-col p-1.5 group-data-[collapsible=icon]:p-1", _), g[3] = _, g[4] = y);
|
|
297
297
|
let b;
|
|
298
298
|
return g[5] !== v || g[6] !== y ? (b = /* @__PURE__ */ jsx("div", {
|
|
299
299
|
"data-slot": "sidebar-group",
|
|
@@ -367,7 +367,7 @@ function SidebarMenuItem(t) {
|
|
|
367
367
|
...v
|
|
368
368
|
}), g[5] = v, g[6] = y, g[7] = b) : b = g[7], b;
|
|
369
369
|
}
|
|
370
|
-
var sidebarMenuButtonVariants = cva("peer/menu-button flex w-full items-center gap-2 overflow-hidden rounded-md p-2 text-left text-sm text-muted-foreground outline-hidden ring-sidebar-ring transition-[width,height,padding] hover:bg-accent/50 hover:text-accent-foreground focus-visible:ring-2 active:bg-accent/50 active:text-accent-foreground disabled:pointer-events-none disabled:opacity-50 group-has-data-[sidebar=menu-action]/menu-item:pr-8 aria-disabled:pointer-events-none aria-disabled:opacity-50 data-[active=true]:bg-foreground data-[active=true]:font-medium data-[active=true]:text-background data-[state=open]:hover:bg-accent/50 data-[state=open]:hover:text-accent-foreground group-data-[collapsible=icon]:size-10! group-data-[collapsible=icon]:p-2! [&>span:last-child]:truncate [&>svg]:size-
|
|
370
|
+
var sidebarMenuButtonVariants = cva("peer/menu-button flex w-full items-center gap-2 overflow-hidden rounded-md p-2 text-left text-sm text-muted-foreground outline-hidden ring-sidebar-ring transition-[width,height,padding] hover:bg-accent/50 hover:text-accent-foreground focus-visible:ring-2 active:bg-accent/50 active:text-accent-foreground disabled:pointer-events-none disabled:opacity-50 group-has-data-[sidebar=menu-action]/menu-item:pr-8 aria-disabled:pointer-events-none aria-disabled:opacity-50 data-[active=true]:bg-foreground data-[active=true]:font-medium data-[active=true]:text-background data-[state=open]:hover:bg-accent/50 data-[state=open]:hover:text-accent-foreground group-data-[collapsible=icon]:size-10! group-data-[collapsible=icon]:p-2! group-data-[collapsible=icon]:relative group-data-[collapsible=icon]:[&>svg]:absolute group-data-[collapsible=icon]:[&>svg]:left-1/2 group-data-[collapsible=icon]:[&>svg]:top-1/2 group-data-[collapsible=icon]:[&>svg]:-translate-x-1/2 group-data-[collapsible=icon]:[&>svg]:-translate-y-1/2 group-data-[collapsible=icon]:[&>span]:hidden [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0", {
|
|
371
371
|
variants: {
|
|
372
372
|
variant: {
|
|
373
373
|
default: "hover:bg-accent/50 hover:text-accent-foreground",
|
|
@@ -1,35 +1,46 @@
|
|
|
1
1
|
import { cn } from "../../lib/utils.js";
|
|
2
|
-
import
|
|
2
|
+
import { c } from "react/compiler-runtime";
|
|
3
|
+
import "react";
|
|
3
4
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
4
5
|
import * as SliderPrimitive from "@radix-ui/react-slider";
|
|
5
|
-
function Slider(
|
|
6
|
-
let
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
]);
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
}), Array.from({ length: d.length }, (e, i) => /* @__PURE__ */ jsx(SliderPrimitive.Thumb, {
|
|
6
|
+
function Slider(a) {
|
|
7
|
+
let o = c(29), s, l, u, d, f, p;
|
|
8
|
+
o[0] === a ? (s = o[1], l = o[2], u = o[3], d = o[4], f = o[5], p = o[6]) : ({className: s, defaultValue: l, value: p, min: d, max: f, ...u} = a, o[0] = a, o[1] = s, o[2] = l, o[3] = u, o[4] = d, o[5] = f, o[6] = p);
|
|
9
|
+
let m = d === void 0 ? 0 : d, h = f === void 0 ? 100 : f, g;
|
|
10
|
+
o[7] !== l || o[8] !== h || o[9] !== m || o[10] !== p ? (g = Array.isArray(p) ? p : Array.isArray(l) ? l : [m, h], o[7] = l, o[8] = h, o[9] = m, o[10] = p, o[11] = g) : g = o[11];
|
|
11
|
+
let _ = g, v;
|
|
12
|
+
o[12] === s ? v = o[13] : (v = cn("relative flex w-full touch-none items-center select-none data-[disabled]:opacity-50 data-[orientation=vertical]:h-full data-[orientation=vertical]:min-h-44 data-[orientation=vertical]:w-auto data-[orientation=vertical]:flex-col", s), o[12] = s, o[13] = v);
|
|
13
|
+
let y;
|
|
14
|
+
o[14] === Symbol.for("react.memo_cache_sentinel") ? (y = cn("bg-muted relative grow overflow-hidden rounded-full data-[orientation=horizontal]:h-1.5 data-[orientation=horizontal]:w-full data-[orientation=vertical]:h-full data-[orientation=vertical]:w-1.5"), o[14] = y) : y = o[14];
|
|
15
|
+
let b;
|
|
16
|
+
o[15] === Symbol.for("react.memo_cache_sentinel") ? (b = /* @__PURE__ */ jsx(SliderPrimitive.Track, {
|
|
17
|
+
"data-slot": "slider-track",
|
|
18
|
+
className: y,
|
|
19
|
+
children: /* @__PURE__ */ jsx(SliderPrimitive.Range, {
|
|
20
|
+
"data-slot": "slider-range",
|
|
21
|
+
className: cn("bg-primary absolute data-[orientation=horizontal]:h-full data-[orientation=vertical]:w-full")
|
|
22
|
+
})
|
|
23
|
+
}), o[15] = b) : b = o[15];
|
|
24
|
+
let x;
|
|
25
|
+
if (o[16] !== _.length || o[17] !== u) {
|
|
26
|
+
let e;
|
|
27
|
+
o[19] === u ? e = o[20] : (e = (e, i) => /* @__PURE__ */ jsx(SliderPrimitive.Thumb, {
|
|
28
28
|
"data-slot": "slider-thumb",
|
|
29
29
|
className: "border-primary bg-background ring-ring/50 block size-4 shrink-0 rounded-full border shadow-sm transition-[color,box-shadow] hover:ring-4 focus-visible:ring-4 focus-visible:outline-hidden disabled:pointer-events-none disabled:opacity-50",
|
|
30
30
|
"aria-label": u["aria-label"],
|
|
31
31
|
"aria-labelledby": u["aria-labelledby"]
|
|
32
|
-
}, i))]
|
|
33
|
-
}
|
|
32
|
+
}, i), o[19] = u, o[20] = e), x = Array.from({ length: _.length }, e), o[16] = _.length, o[17] = u, o[18] = x;
|
|
33
|
+
} else x = o[18];
|
|
34
|
+
let S;
|
|
35
|
+
return o[21] !== l || o[22] !== h || o[23] !== m || o[24] !== u || o[25] !== v || o[26] !== x || o[27] !== p ? (S = /* @__PURE__ */ jsxs(SliderPrimitive.Root, {
|
|
36
|
+
"data-slot": "slider",
|
|
37
|
+
defaultValue: l,
|
|
38
|
+
value: p,
|
|
39
|
+
min: m,
|
|
40
|
+
max: h,
|
|
41
|
+
className: v,
|
|
42
|
+
...u,
|
|
43
|
+
children: [b, x]
|
|
44
|
+
}), o[21] = l, o[22] = h, o[23] = m, o[24] = u, o[25] = v, o[26] = x, o[27] = p, o[28] = S) : S = o[28], S;
|
|
34
45
|
}
|
|
35
46
|
export { Slider };
|
|
@@ -7,27 +7,29 @@ import React from "react";
|
|
|
7
7
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
8
8
|
import { MonitorPlay } from "lucide-react";
|
|
9
9
|
const SandboxRun = (u) => {
|
|
10
|
-
let d = c(
|
|
11
|
-
d[0] !==
|
|
10
|
+
let d = c(15), { ui: f, disabled: p } = u, { openPreviewWithEnvironment: m, environments: h } = useWorkbenchLayout(), g = f?.slotId, _;
|
|
11
|
+
d[0] !== h || d[1] !== g ? (_ = g ? h?.find((t) => t.slotId === g) : void 0, d[0] = h, d[1] = g, d[2] = _) : _ = d[2];
|
|
12
|
+
let v = _, y = !!v, b = v?.envName ? `Open ${v.envName}` : "Open Sandbox", x;
|
|
13
|
+
d[3] !== m || d[4] !== g ? (x = () => {
|
|
12
14
|
g && m(g);
|
|
13
|
-
}, d[
|
|
14
|
-
let
|
|
15
|
-
d[
|
|
16
|
-
let
|
|
17
|
-
d[
|
|
15
|
+
}, d[3] = m, d[4] = g, d[5] = x) : x = d[5];
|
|
16
|
+
let S = x, C = p || !y, w;
|
|
17
|
+
d[6] === Symbol.for("react.memo_cache_sentinel") ? (w = /* @__PURE__ */ jsx(MonitorPlay, { className: "h-4 w-4" }), d[6] = w) : w = d[6];
|
|
18
|
+
let T;
|
|
19
|
+
d[7] !== S || d[8] !== C ? (T = /* @__PURE__ */ jsx(TooltipTrigger, {
|
|
18
20
|
asChild: !0,
|
|
19
21
|
children: /* @__PURE__ */ jsx(Button, {
|
|
20
22
|
type: "button",
|
|
21
23
|
variant: "default",
|
|
22
24
|
size: "icon",
|
|
23
|
-
disabled:
|
|
24
|
-
onClick:
|
|
25
|
-
children:
|
|
25
|
+
disabled: C,
|
|
26
|
+
onClick: S,
|
|
27
|
+
children: w
|
|
26
28
|
})
|
|
27
|
-
}), d[
|
|
28
|
-
let T;
|
|
29
|
-
d[7] === y ? T = d[8] : (T = /* @__PURE__ */ jsx(TooltipContent, { children: y }), d[7] = y, d[8] = T);
|
|
29
|
+
}), d[7] = S, d[8] = C, d[9] = T) : T = d[9];
|
|
30
30
|
let E;
|
|
31
|
-
|
|
31
|
+
d[10] === b ? E = d[11] : (E = /* @__PURE__ */ jsx(TooltipContent, { children: b }), d[10] = b, d[11] = E);
|
|
32
|
+
let D;
|
|
33
|
+
return d[12] !== T || d[13] !== E ? (D = /* @__PURE__ */ jsxs(Tooltip, { children: [T, E] }), d[12] = T, d[13] = E, d[14] = D) : D = d[14], D;
|
|
32
34
|
};
|
|
33
35
|
export { SandboxRun };
|
|
@@ -2,9 +2,9 @@ import { cn } from "../../../lib/utils.js";
|
|
|
2
2
|
import { ScrollArea, ScrollBar } from "../../../components/ui/scroll-area.js";
|
|
3
3
|
import MarkdownContent_default from "../../../components/dynamic-form/MarkdownContent.js";
|
|
4
4
|
import { ReactFlowProvider } from "../../../node_modules/@xyflow/react/dist/esm/index.js";
|
|
5
|
-
import { Tabs, TabsContent, TabsList, TabsTrigger } from "../../../components/ui/tabs.js";
|
|
6
5
|
import ConfigFlowViewer_default from "../../debug/components/ConfigFlowViewer.js";
|
|
7
6
|
import "../../debug/index.js";
|
|
7
|
+
import { Tabs, TabsContent, TabsList, TabsTrigger } from "../../../components/ui/tabs.js";
|
|
8
8
|
import { c } from "react/compiler-runtime";
|
|
9
9
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
10
10
|
import { Loader2 } from "lucide-react";
|
|
@@ -3,49 +3,51 @@ import { c } from "react/compiler-runtime";
|
|
|
3
3
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
4
4
|
import { Link } from "react-router-dom";
|
|
5
5
|
function RunItem(a) {
|
|
6
|
-
let o = c(
|
|
6
|
+
let o = c(27), { run: s, router: l } = a, u;
|
|
7
|
+
o[0] === Symbol.for("react.memo_cache_sentinel") ? (u = {
|
|
7
8
|
completed: "bg-green-50 text-green-900 border-green-200",
|
|
8
9
|
failed: "bg-destructive/10 text-destructive border-destructive/20",
|
|
9
10
|
canceled: "bg-orange-50 text-orange-900 border-orange-200",
|
|
10
11
|
running: "bg-blue-50 text-blue-900 border-blue-200",
|
|
11
12
|
paused: "bg-yellow-50 text-yellow-900 border-yellow-200",
|
|
12
13
|
pending: "bg-muted text-muted-foreground border-border"
|
|
13
|
-
}[
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
14
|
+
}, o[0] = u) : u = o[0];
|
|
15
|
+
let d = u[s.status] || "bg-muted text-muted-foreground border-border", f;
|
|
16
|
+
o[1] !== l || o[2] !== s.id ? (f = l.getWorkflow(s.id), o[1] = l, o[2] = s.id, o[3] = f) : f = o[3];
|
|
17
|
+
let p = s.id, m = s.run ?? s.index ?? "?", h = s.title ? `(${s.title})` : "", g;
|
|
18
|
+
o[4] !== m || o[5] !== h ? (g = /* @__PURE__ */ jsxs("h3", {
|
|
17
19
|
className: "text-foreground group-hover:text-primary truncate font-semibold transition-colors",
|
|
18
20
|
children: [
|
|
19
21
|
"Run #",
|
|
20
|
-
|
|
22
|
+
m,
|
|
21
23
|
" ",
|
|
22
|
-
|
|
24
|
+
h
|
|
23
25
|
]
|
|
24
|
-
}), o[
|
|
25
|
-
let
|
|
26
|
-
o[
|
|
27
|
-
className:
|
|
26
|
+
}), o[4] = m, o[5] = h, o[6] = g) : g = o[6];
|
|
27
|
+
let _ = `rounded-full border px-2 py-1 text-xs whitespace-nowrap ${d}`, v;
|
|
28
|
+
o[7] !== s.status || o[8] !== _ ? (v = /* @__PURE__ */ jsx(Badge, {
|
|
29
|
+
className: _,
|
|
28
30
|
children: s.status
|
|
29
|
-
}), o[
|
|
30
|
-
let v;
|
|
31
|
-
o[9] === s.updatedAt ? v = o[10] : (v = new Date(s.updatedAt).toLocaleString(), o[9] = s.updatedAt, o[10] = v);
|
|
31
|
+
}), o[7] = s.status, o[8] = _, o[9] = v) : v = o[9];
|
|
32
32
|
let y;
|
|
33
|
-
o[
|
|
34
|
-
className: "text-muted-foreground text-xs",
|
|
35
|
-
children: v
|
|
36
|
-
}), o[11] = v, o[12] = y);
|
|
33
|
+
o[10] === s.updatedAt ? y = o[11] : (y = new Date(s.updatedAt).toLocaleString(), o[10] = s.updatedAt, o[11] = y);
|
|
37
34
|
let b;
|
|
38
|
-
o[
|
|
39
|
-
className: "
|
|
40
|
-
children:
|
|
41
|
-
}), o[
|
|
35
|
+
o[12] === y ? b = o[13] : (b = /* @__PURE__ */ jsx("span", {
|
|
36
|
+
className: "text-muted-foreground text-xs",
|
|
37
|
+
children: y
|
|
38
|
+
}), o[12] = y, o[13] = b);
|
|
42
39
|
let x;
|
|
43
|
-
o[
|
|
44
|
-
className: "
|
|
45
|
-
children: [
|
|
46
|
-
}), o[
|
|
40
|
+
o[14] !== b || o[15] !== v ? (x = /* @__PURE__ */ jsxs("div", {
|
|
41
|
+
className: "mt-2 flex flex-wrap items-center gap-2",
|
|
42
|
+
children: [v, b]
|
|
43
|
+
}), o[14] = b, o[15] = v, o[16] = x) : x = o[16];
|
|
47
44
|
let S;
|
|
48
|
-
o[
|
|
45
|
+
o[17] !== x || o[18] !== g ? (S = /* @__PURE__ */ jsxs("div", {
|
|
46
|
+
className: "min-w-0 flex-1 pr-2",
|
|
47
|
+
children: [g, x]
|
|
48
|
+
}), o[17] = x, o[18] = g, o[19] = S) : S = o[19];
|
|
49
|
+
let C;
|
|
50
|
+
o[20] === Symbol.for("react.memo_cache_sentinel") ? (C = /* @__PURE__ */ jsx("div", {
|
|
49
51
|
className: "ml-3 opacity-0 transition-opacity group-hover:opacity-100",
|
|
50
52
|
children: /* @__PURE__ */ jsx("svg", {
|
|
51
53
|
className: "text-muted-foreground h-4 w-4",
|
|
@@ -59,18 +61,18 @@ function RunItem(a) {
|
|
|
59
61
|
d: "M9 5l7 7-7 7"
|
|
60
62
|
})
|
|
61
63
|
})
|
|
62
|
-
}), o[
|
|
63
|
-
let C;
|
|
64
|
-
o[20] === x ? C = o[21] : (C = /* @__PURE__ */ jsxs("div", {
|
|
65
|
-
className: "flex min-w-0 items-start justify-between",
|
|
66
|
-
children: [x, S]
|
|
67
|
-
}), o[20] = x, o[21] = C);
|
|
64
|
+
}), o[20] = C) : C = o[20];
|
|
68
65
|
let w;
|
|
69
|
-
|
|
70
|
-
|
|
66
|
+
o[21] === S ? w = o[22] : (w = /* @__PURE__ */ jsxs("div", {
|
|
67
|
+
className: "flex min-w-0 items-start justify-between",
|
|
68
|
+
children: [S, C]
|
|
69
|
+
}), o[21] = S, o[22] = w);
|
|
70
|
+
let T;
|
|
71
|
+
return o[23] !== s.id || o[24] !== w || o[25] !== f ? (T = /* @__PURE__ */ jsx(Link, {
|
|
72
|
+
to: f,
|
|
71
73
|
className: "bg-card border-border hover:border-primary/50 group block w-full overflow-hidden rounded-lg border p-4 transition-all duration-200 hover:shadow-md",
|
|
72
|
-
children:
|
|
73
|
-
},
|
|
74
|
+
children: w
|
|
75
|
+
}, p), o[23] = s.id, o[24] = w, o[25] = f, o[26] = T) : T = o[26], T;
|
|
74
76
|
}
|
|
75
77
|
var RunItem_default = RunItem;
|
|
76
78
|
export { RunItem_default as default };
|