@burdenoff/microfe-vibecontrols 2026.601.21 → 2026.601.23
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/components/actions/ActionCard.js +77 -66
- package/dist/components/actions/ActionCard.js.map +1 -1
- package/dist/components/ai/AIContextsTab.js +186 -173
- package/dist/components/ai/AIContextsTab.js.map +1 -1
- package/dist/components/ai/AITemplatesTab.js +135 -125
- package/dist/components/ai/AITemplatesTab.js.map +1 -1
- package/dist/components/ai/InstructionFilesManager.js +151 -137
- package/dist/components/ai/InstructionFilesManager.js.map +1 -1
- package/dist/components/docs/DocsEditPanel.js +17 -16
- package/dist/components/docs/DocsEditPanel.js.map +1 -1
- package/dist/components/docs/DocsPreviewPanel.js +25 -24
- package/dist/components/docs/DocsPreviewPanel.js.map +1 -1
- package/dist/components/docs/DocsTabPanel.js +110 -94
- package/dist/components/docs/DocsTabPanel.js.map +1 -1
- package/dist/components/notes/NotesTabPanel.js +8 -8
- package/dist/components/scorecard/ScorecardPanel.js +271 -257
- package/dist/components/scorecard/ScorecardPanel.js.map +1 -1
- package/dist/components/sharing/EntityShareButton.js +58 -0
- package/dist/components/sharing/EntityShareButton.js.map +1 -0
- package/dist/components/sharing/entityShareOps.js +603 -0
- package/dist/components/sharing/entityShareOps.js.map +1 -0
- package/dist/components/sharing/index.js +3 -0
- package/dist/components/sharing/shareRegistry.js +37 -12
- package/dist/components/sharing/shareRegistry.js.map +1 -1
- package/dist/components/sharing/useEntityShareController.js +88 -0
- package/dist/components/sharing/useEntityShareController.js.map +1 -0
- package/dist/constants/permissions.js +11 -0
- package/dist/constants/permissions.js.map +1 -1
- package/dist/pages/ActionsPage.js +162 -162
- package/dist/pages/ActionsPage.js.map +1 -1
- package/dist/pages/CatalogDetailPage.js +264 -250
- package/dist/pages/CatalogDetailPage.js.map +1 -1
- package/dist/pages/ComponentDetailPage.js +124 -113
- package/dist/pages/ComponentDetailPage.js.map +1 -1
- package/dist/pages/TargetDetailsPage.js +139 -126
- package/dist/pages/TargetDetailsPage.js.map +1 -1
- package/dist/pages/TemplateDetailPage.js +78 -67
- package/dist/pages/TemplateDetailPage.js.map +1 -1
- package/dist/pages/VibeDeckPage.js +1 -1
- package/dist/pages/VibeDetailsPage.js +484 -484
- package/dist/pages/VibeDetailsPage.js.map +1 -1
- package/dist/pages/tunnels/TunnelDetailsPage.js +91 -77
- package/dist/pages/tunnels/TunnelDetailsPage.js.map +1 -1
- package/package.json +1 -1
|
@@ -9,7 +9,9 @@ import { EmptyState as m } from "../components/shared/EmptyState.js";
|
|
|
9
9
|
import { Card as h } from "../components/shared/Card.js";
|
|
10
10
|
import { StatCard as g } from "../components/shared/StatCard.js";
|
|
11
11
|
import "../components/shared/index.js";
|
|
12
|
-
import { VIBE_PERMISSIONS as
|
|
12
|
+
import { VIBE_PERMISSIONS as _ } from "../constants/permissions.js";
|
|
13
|
+
import { EntityShareButton as ee } from "../components/sharing/EntityShareButton.js";
|
|
14
|
+
import "../components/sharing/index.js";
|
|
13
15
|
import { PageSkeleton as te } from "../components/shared/PageSkeleton.js";
|
|
14
16
|
import { useQueryBackedTab as ne } from "../hooks/useQueryBackedTab.js";
|
|
15
17
|
import { DocsTabPanel as re } from "../components/docs/DocsTabPanel.js";
|
|
@@ -18,15 +20,15 @@ import { ComponentCard as ie } from "../components/idp-components/ComponentCard.
|
|
|
18
20
|
import "../components/idp-components/index.js";
|
|
19
21
|
import { CatalogForm as ae } from "../components/catalog/CatalogForm.js";
|
|
20
22
|
import "../components/catalog/index.js";
|
|
21
|
-
import { useCallback as
|
|
23
|
+
import { useCallback as v, useEffect as y, useMemo as b, useState as x } from "react";
|
|
22
24
|
import { useI18n as oe } from "@burdenoff/fe-libs/shared/providers/shell/I18nProvider";
|
|
23
|
-
import { ArrowLeft as
|
|
25
|
+
import { ArrowLeft as S, ArrowRight as C, BookOpen as w, FileText as se, Layers as T, Network as E, Plus as D, RefreshCw as O, Settings as ce, Tag as le, Trash2 as ue, Zap as de } from "lucide-react";
|
|
24
26
|
import { useParams as fe } from "react-router-dom";
|
|
25
27
|
import { usePermissions as pe } from "@burdenoff/fe-libs/shared/providers/shell";
|
|
26
|
-
import { AnimatePresence as me, motion as
|
|
27
|
-
import { Fragment as
|
|
28
|
-
import { MotionItem as
|
|
29
|
-
import { Background as
|
|
28
|
+
import { AnimatePresence as me, motion as k } from "framer-motion";
|
|
29
|
+
import { Fragment as A, jsx as j, jsxs as M } from "react/jsx-runtime";
|
|
30
|
+
import { MotionItem as N, MotionList as P, MotionPage as F } from "@burdenoff/fe-libs/shared/motion";
|
|
31
|
+
import { Background as I, BackgroundVariant as L, Controls as R, Handle as z, MarkerType as B, Position as V, ReactFlow as H, addEdge as U, useEdgesState as W, useNodesState as G } from "@xyflow/react";
|
|
30
32
|
import "@xyflow/react/dist/style.css";
|
|
31
33
|
//#region src/pages/CatalogDetailPage.tsx
|
|
32
34
|
var he = [
|
|
@@ -36,15 +38,15 @@ var he = [
|
|
|
36
38
|
"docs",
|
|
37
39
|
"settings"
|
|
38
40
|
];
|
|
39
|
-
function
|
|
40
|
-
let { t: n } = oe(), { id: i } = fe(), s = l(), { hasPermission: d, isLoading:
|
|
41
|
+
function K() {
|
|
42
|
+
let { t: n } = oe(), { id: i } = fe(), s = l(), { hasPermission: d, isLoading: y } = pe(), C = v((e, t) => {
|
|
41
43
|
let r = n(e);
|
|
42
44
|
return r === e ? t : r;
|
|
43
|
-
}, [n]), [
|
|
45
|
+
}, [n]), [A, I] = ne(he, "overview"), [L, R] = x(!1), [z, B] = x(!1), [V, H] = x(!1), [U, W] = x(!1), [G, K] = x(null), { data: q, loading: J, error: Y, refetch: X } = r({
|
|
44
46
|
variables: { id: i || "" },
|
|
45
47
|
skip: !i,
|
|
46
48
|
fetchPolicy: "cache-and-network"
|
|
47
|
-
}), [ve] = o({ refetchQueries: ["GetCatalog"] }), [ye] = t({ refetchQueries: ["ListCatalogs"] }), [
|
|
49
|
+
}), [ve] = o({ refetchQueries: ["GetCatalog"] }), [ye] = t({ refetchQueries: ["ListCatalogs"] }), [be] = e({ refetchQueries: ["GetCatalog"] }), [xe] = a({ refetchQueries: ["GetCatalog"] }), Z = q?.vibecontrolsCatalog ?? null, Q = b(() => (Z?.components ?? []).map((e) => {
|
|
48
50
|
let t = e.component || {};
|
|
49
51
|
return {
|
|
50
52
|
id: t.id,
|
|
@@ -60,21 +62,21 @@ function G() {
|
|
|
60
62
|
updatedAt: t.updatedAt
|
|
61
63
|
};
|
|
62
64
|
}), [Z?.components]);
|
|
63
|
-
if (
|
|
65
|
+
if (y) return /* @__PURE__ */ j("div", {
|
|
64
66
|
className: "flex items-center justify-center min-h-[400px]",
|
|
65
|
-
children: /* @__PURE__ */
|
|
67
|
+
children: /* @__PURE__ */ j("p", {
|
|
66
68
|
className: "text-text-secondary",
|
|
67
69
|
children: "Loading permissions…"
|
|
68
70
|
})
|
|
69
71
|
});
|
|
70
|
-
if (!d(
|
|
72
|
+
if (!d(_.VIBE_READ)) return /* @__PURE__ */ j("div", {
|
|
71
73
|
className: "flex items-center justify-center min-h-[400px]",
|
|
72
|
-
children: /* @__PURE__ */
|
|
74
|
+
children: /* @__PURE__ */ M("div", {
|
|
73
75
|
className: "text-center space-y-2",
|
|
74
|
-
children: [/* @__PURE__ */
|
|
76
|
+
children: [/* @__PURE__ */ j("h2", {
|
|
75
77
|
className: "text-lg font-semibold text-foreground",
|
|
76
78
|
children: "Access Denied"
|
|
77
|
-
}), /* @__PURE__ */
|
|
79
|
+
}), /* @__PURE__ */ j("p", {
|
|
78
80
|
className: "text-sm text-text-secondary",
|
|
79
81
|
children: "You don't have permission to access this page."
|
|
80
82
|
})]
|
|
@@ -82,9 +84,9 @@ function G() {
|
|
|
82
84
|
});
|
|
83
85
|
let $ = () => {
|
|
84
86
|
s("/catalogs");
|
|
85
|
-
},
|
|
87
|
+
}, Se = (e) => {
|
|
86
88
|
s(`/components/${e.id}`);
|
|
87
|
-
},
|
|
89
|
+
}, Ce = async (e) => {
|
|
88
90
|
i && (await ve({ variables: {
|
|
89
91
|
id: i,
|
|
90
92
|
input: {
|
|
@@ -94,146 +96,158 @@ function G() {
|
|
|
94
96
|
ownerName: e.owner || void 0,
|
|
95
97
|
tags: e.tags.length > 0 ? e.tags : void 0
|
|
96
98
|
}
|
|
97
|
-
} }),
|
|
98
|
-
},
|
|
99
|
+
} }), K(C("catalog.updatedSuccess", "Catalog updated successfully")), setTimeout(() => K(null), 3e3));
|
|
100
|
+
}, we = async () => {
|
|
99
101
|
if (i) {
|
|
100
|
-
|
|
102
|
+
W(!0);
|
|
101
103
|
try {
|
|
102
|
-
await ye({ variables: { id: i } }),
|
|
104
|
+
await ye({ variables: { id: i } }), H(!1), s("/catalogs");
|
|
103
105
|
} finally {
|
|
104
|
-
|
|
106
|
+
W(!1);
|
|
105
107
|
}
|
|
106
108
|
}
|
|
107
|
-
},
|
|
109
|
+
}, Te = [
|
|
108
110
|
{
|
|
109
111
|
id: "overview",
|
|
110
|
-
label:
|
|
111
|
-
icon:
|
|
112
|
+
label: C("nav.overview", "Overview"),
|
|
113
|
+
icon: w
|
|
112
114
|
},
|
|
113
115
|
{
|
|
114
116
|
id: "components",
|
|
115
|
-
label:
|
|
116
|
-
icon:
|
|
117
|
+
label: C("catalog.components", "Components"),
|
|
118
|
+
icon: T,
|
|
117
119
|
badge: `${Z?.componentCount ?? 0}`
|
|
118
120
|
},
|
|
119
121
|
{
|
|
120
122
|
id: "dependency-graph",
|
|
121
|
-
label:
|
|
122
|
-
icon:
|
|
123
|
+
label: C("catalog.dependencyGraph", "Dependency Graph"),
|
|
124
|
+
icon: E
|
|
123
125
|
},
|
|
124
126
|
{
|
|
125
127
|
id: "docs",
|
|
126
|
-
label:
|
|
128
|
+
label: C("catalog.docs", "Docs"),
|
|
127
129
|
icon: se
|
|
128
130
|
},
|
|
129
131
|
{
|
|
130
132
|
id: "settings",
|
|
131
|
-
label:
|
|
133
|
+
label: C("common.settings", "Settings"),
|
|
132
134
|
icon: ce
|
|
133
135
|
}
|
|
134
136
|
];
|
|
135
|
-
return
|
|
137
|
+
return J && !Z ? /* @__PURE__ */ M(F, {
|
|
136
138
|
className: "space-y-6 p-4 sm:p-6 bg-bg-surface min-h-screen",
|
|
137
|
-
children: [/* @__PURE__ */
|
|
139
|
+
children: [/* @__PURE__ */ M("button", {
|
|
138
140
|
type: "button",
|
|
139
141
|
onClick: $,
|
|
140
142
|
className: "flex items-center gap-2 text-text-secondary hover:text-text-primary transition-colors",
|
|
141
|
-
children: [/* @__PURE__ */
|
|
142
|
-
}), /* @__PURE__ */
|
|
143
|
-
}) :
|
|
143
|
+
children: [/* @__PURE__ */ j(S, { className: "size-4" }), C("catalog.backToCatalogs", "Back to Catalogs")]
|
|
144
|
+
}), /* @__PURE__ */ j(te, { variant: "detail" })]
|
|
145
|
+
}) : Y && !Z ? /* @__PURE__ */ M(F, {
|
|
144
146
|
className: "space-y-6 p-4 sm:p-6 bg-bg-surface min-h-screen",
|
|
145
|
-
children: [/* @__PURE__ */
|
|
147
|
+
children: [/* @__PURE__ */ M("button", {
|
|
146
148
|
type: "button",
|
|
147
149
|
onClick: $,
|
|
148
150
|
className: "flex items-center gap-2 text-text-secondary hover:text-text-primary transition-colors",
|
|
149
|
-
children: [/* @__PURE__ */
|
|
150
|
-
}), /* @__PURE__ */
|
|
151
|
-
title:
|
|
152
|
-
message:
|
|
153
|
-
onRetry: () =>
|
|
151
|
+
children: [/* @__PURE__ */ j(S, { className: "size-4" }), C("catalog.backToCatalogs", "Back to Catalogs")]
|
|
152
|
+
}), /* @__PURE__ */ j(f, {
|
|
153
|
+
title: C("catalog.failedLoad", "Failed to load catalog"),
|
|
154
|
+
message: Y.message,
|
|
155
|
+
onRetry: () => X()
|
|
154
156
|
})]
|
|
155
|
-
}) : Z ? /* @__PURE__ */
|
|
157
|
+
}) : Z ? /* @__PURE__ */ M(F, {
|
|
156
158
|
className: "space-y-6 p-4 sm:p-6 bg-bg-surface min-h-screen",
|
|
157
159
|
children: [
|
|
158
|
-
|
|
160
|
+
G && /* @__PURE__ */ j("div", {
|
|
159
161
|
className: "fixed top-4 left-4 right-4 sm:left-auto z-50 bg-status-success-bg text-status-success-text px-4 py-3 rounded-md shadow-lg",
|
|
160
|
-
children:
|
|
162
|
+
children: G
|
|
161
163
|
}),
|
|
162
|
-
/* @__PURE__ */
|
|
164
|
+
/* @__PURE__ */ M("button", {
|
|
163
165
|
type: "button",
|
|
164
166
|
onClick: $,
|
|
165
167
|
className: "flex items-center gap-2 text-text-secondary hover:text-text-primary transition-colors",
|
|
166
|
-
children: [/* @__PURE__ */
|
|
168
|
+
children: [/* @__PURE__ */ j(S, { className: "size-4" }), C("catalog.backToCatalogs", "Back to Catalogs")]
|
|
167
169
|
}),
|
|
168
|
-
/* @__PURE__ */
|
|
170
|
+
/* @__PURE__ */ j(u, {
|
|
169
171
|
title: Z.name,
|
|
170
|
-
description: Z.description ||
|
|
171
|
-
actions: /* @__PURE__ */
|
|
172
|
+
description: Z.description || C("catalog.noDescription", "No description"),
|
|
173
|
+
actions: /* @__PURE__ */ M("div", {
|
|
172
174
|
className: "flex items-center gap-2 flex-wrap",
|
|
173
|
-
children: [
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
175
|
+
children: [
|
|
176
|
+
/* @__PURE__ */ j(ee, {
|
|
177
|
+
entity: "catalog",
|
|
178
|
+
resource: {
|
|
179
|
+
id: Z.id,
|
|
180
|
+
name: Z.name
|
|
181
|
+
},
|
|
182
|
+
label: C("catalog.share", "Share"),
|
|
183
|
+
variant: "button"
|
|
184
|
+
}),
|
|
185
|
+
/* @__PURE__ */ j("button", {
|
|
186
|
+
type: "button",
|
|
187
|
+
onClick: () => X(),
|
|
188
|
+
disabled: J,
|
|
189
|
+
className: "flex items-center justify-center p-2 bg-bg-sunken text-text-primary rounded-md hover:bg-bg-sunken/80 transition-colors disabled:opacity-50",
|
|
190
|
+
title: C("common.refresh", "Refresh"),
|
|
191
|
+
children: /* @__PURE__ */ j(O, { className: `size-4 ${J ? "animate-spin" : ""}` })
|
|
192
|
+
}),
|
|
193
|
+
/* @__PURE__ */ j("span", {
|
|
194
|
+
className: `inline-flex items-center px-2.5 py-1 text-xs font-medium rounded ${Z.visibility === "PUBLIC" ? "bg-status-success-bg text-status-success-text" : Z.visibility === "INTERNAL" ? "bg-status-warning-bg text-status-warning-text" : "bg-bg-sunken text-text-secondary"}`,
|
|
195
|
+
children: Z.visibility
|
|
196
|
+
})
|
|
197
|
+
]
|
|
184
198
|
})
|
|
185
199
|
}),
|
|
186
|
-
/* @__PURE__ */
|
|
200
|
+
/* @__PURE__ */ M(P, {
|
|
187
201
|
stagger: .04,
|
|
188
202
|
className: "grid grid-cols-2 sm:grid-cols-3 gap-3 sm:gap-4",
|
|
189
203
|
children: [
|
|
190
|
-
/* @__PURE__ */
|
|
191
|
-
title:
|
|
204
|
+
/* @__PURE__ */ j(N, { children: /* @__PURE__ */ j(g, {
|
|
205
|
+
title: C("catalog.components", "Components"),
|
|
192
206
|
value: Z.componentCount ?? 0,
|
|
193
|
-
icon: /* @__PURE__ */
|
|
207
|
+
icon: /* @__PURE__ */ j(T, { className: "size-4" })
|
|
194
208
|
}) }),
|
|
195
|
-
/* @__PURE__ */
|
|
196
|
-
title:
|
|
209
|
+
/* @__PURE__ */ j(N, { children: /* @__PURE__ */ j(g, {
|
|
210
|
+
title: C("catalog.vibes", "Vibes"),
|
|
197
211
|
value: Z.vibeCount ?? 0,
|
|
198
|
-
icon: /* @__PURE__ */
|
|
212
|
+
icon: /* @__PURE__ */ j(de, { className: "size-4" })
|
|
199
213
|
}) }),
|
|
200
|
-
/* @__PURE__ */
|
|
201
|
-
title:
|
|
214
|
+
/* @__PURE__ */ j(N, { children: /* @__PURE__ */ j(g, {
|
|
215
|
+
title: C("catalog.ownerName", "Owner"),
|
|
202
216
|
value: Z.ownerNameName || "Unassigned",
|
|
203
|
-
icon: /* @__PURE__ */
|
|
217
|
+
icon: /* @__PURE__ */ j(w, { className: "size-4" })
|
|
204
218
|
}) })
|
|
205
219
|
]
|
|
206
220
|
}),
|
|
207
|
-
/* @__PURE__ */
|
|
221
|
+
/* @__PURE__ */ M(h, { children: [/* @__PURE__ */ M("div", {
|
|
208
222
|
className: "p-4 border-b border-border-default flex items-center gap-2",
|
|
209
|
-
children: [/* @__PURE__ */
|
|
223
|
+
children: [/* @__PURE__ */ j(le, { className: "size-5" }), /* @__PURE__ */ j("h3", {
|
|
210
224
|
className: "font-semibold text-text-primary",
|
|
211
|
-
children:
|
|
225
|
+
children: C("catalog.tags", "Tags")
|
|
212
226
|
})]
|
|
213
|
-
}), /* @__PURE__ */
|
|
227
|
+
}), /* @__PURE__ */ j("div", {
|
|
214
228
|
className: "p-4",
|
|
215
|
-
children: /* @__PURE__ */
|
|
229
|
+
children: /* @__PURE__ */ j(p, {
|
|
216
230
|
entityType: "VIBECONTROLS_CATALOG",
|
|
217
231
|
entityId: Z.id
|
|
218
232
|
})
|
|
219
233
|
})] }),
|
|
220
|
-
/* @__PURE__ */
|
|
234
|
+
/* @__PURE__ */ j("div", {
|
|
221
235
|
className: "border-b border-border-default",
|
|
222
|
-
children: /* @__PURE__ */
|
|
236
|
+
children: /* @__PURE__ */ j("nav", {
|
|
223
237
|
className: "flex gap-1 -mb-px overflow-x-auto pb-1",
|
|
224
|
-
"aria-label":
|
|
225
|
-
children:
|
|
226
|
-
let t = e.icon, n =
|
|
227
|
-
return /* @__PURE__ */
|
|
238
|
+
"aria-label": C("catalog.tabsAriaLabel", "Catalog tabs"),
|
|
239
|
+
children: Te.map((e) => {
|
|
240
|
+
let t = e.icon, n = A === e.id;
|
|
241
|
+
return /* @__PURE__ */ M("button", {
|
|
228
242
|
type: "button",
|
|
229
|
-
onClick: () =>
|
|
243
|
+
onClick: () => I(e.id),
|
|
230
244
|
className: `flex shrink-0 items-center gap-1.5 px-3 py-2.5 text-xs sm:gap-2 sm:px-4 sm:text-sm font-medium border-b-2 transition-colors whitespace-nowrap ${n ? "border-action-primary-bg text-action-primary-text" : "border-transparent text-text-secondary hover:text-text-primary hover:border-border-default"}`,
|
|
231
245
|
"aria-selected": n,
|
|
232
246
|
role: "tab",
|
|
233
247
|
children: [
|
|
234
|
-
/* @__PURE__ */
|
|
248
|
+
/* @__PURE__ */ j(t, { className: "size-4" }),
|
|
235
249
|
e.label,
|
|
236
|
-
e.badge && /* @__PURE__ */
|
|
250
|
+
e.badge && /* @__PURE__ */ j("span", {
|
|
237
251
|
className: `hidden rounded-full px-1.5 py-0.5 text-[10px] sm:inline-flex sm:text-xs ${n ? "bg-action-primary-bg/10 text-action-primary-bg" : "bg-bg-sunken text-text-muted"}`,
|
|
238
252
|
children: e.badge
|
|
239
253
|
})
|
|
@@ -242,10 +256,10 @@ function G() {
|
|
|
242
256
|
})
|
|
243
257
|
})
|
|
244
258
|
}),
|
|
245
|
-
/* @__PURE__ */
|
|
259
|
+
/* @__PURE__ */ M(me, {
|
|
246
260
|
mode: "wait",
|
|
247
261
|
children: [
|
|
248
|
-
|
|
262
|
+
A === "overview" && /* @__PURE__ */ M(k.div, {
|
|
249
263
|
initial: {
|
|
250
264
|
opacity: 0,
|
|
251
265
|
y: 8
|
|
@@ -261,63 +275,63 @@ function G() {
|
|
|
261
275
|
transition: { duration: .2 },
|
|
262
276
|
className: "space-y-6",
|
|
263
277
|
children: [
|
|
264
|
-
Z.description && /* @__PURE__ */
|
|
278
|
+
Z.description && /* @__PURE__ */ j(h, { children: /* @__PURE__ */ j("div", {
|
|
265
279
|
className: "p-4",
|
|
266
|
-
children: /* @__PURE__ */
|
|
280
|
+
children: /* @__PURE__ */ j("p", {
|
|
267
281
|
className: "text-text-primary",
|
|
268
282
|
children: Z.description
|
|
269
283
|
})
|
|
270
284
|
}) }),
|
|
271
|
-
/* @__PURE__ */
|
|
285
|
+
/* @__PURE__ */ M(h, { children: [/* @__PURE__ */ j("div", {
|
|
272
286
|
className: "p-4 border-b border-border-default",
|
|
273
|
-
children: /* @__PURE__ */
|
|
287
|
+
children: /* @__PURE__ */ j("h3", {
|
|
274
288
|
className: "font-semibold text-text-primary",
|
|
275
|
-
children:
|
|
289
|
+
children: C("catalog.metadata", "Metadata")
|
|
276
290
|
})
|
|
277
|
-
}), /* @__PURE__ */
|
|
291
|
+
}), /* @__PURE__ */ j("div", {
|
|
278
292
|
className: "p-4",
|
|
279
|
-
children: /* @__PURE__ */
|
|
293
|
+
children: /* @__PURE__ */ M("div", {
|
|
280
294
|
className: "grid grid-cols-1 sm:grid-cols-2 gap-4 text-sm",
|
|
281
295
|
children: [
|
|
282
|
-
/* @__PURE__ */
|
|
296
|
+
/* @__PURE__ */ M("div", { children: [/* @__PURE__ */ j("p", {
|
|
283
297
|
className: "text-text-secondary",
|
|
284
|
-
children:
|
|
285
|
-
}), /* @__PURE__ */
|
|
298
|
+
children: C("catalog.ownerNameLabel", "Owner")
|
|
299
|
+
}), /* @__PURE__ */ j("p", {
|
|
286
300
|
className: "font-medium text-text-primary",
|
|
287
|
-
children: Z.ownerName ||
|
|
301
|
+
children: Z.ownerName || C("common.unset", "Unset")
|
|
288
302
|
})] }),
|
|
289
|
-
/* @__PURE__ */
|
|
303
|
+
/* @__PURE__ */ M("div", { children: [/* @__PURE__ */ j("p", {
|
|
290
304
|
className: "text-text-secondary",
|
|
291
|
-
children:
|
|
292
|
-
}), /* @__PURE__ */
|
|
305
|
+
children: C("catalog.visibility", "Visibility")
|
|
306
|
+
}), /* @__PURE__ */ j("p", {
|
|
293
307
|
className: "font-medium text-text-primary",
|
|
294
308
|
children: Z.visibility
|
|
295
309
|
})] }),
|
|
296
|
-
/* @__PURE__ */
|
|
310
|
+
/* @__PURE__ */ M("div", { children: [/* @__PURE__ */ j("p", {
|
|
297
311
|
className: "text-text-secondary",
|
|
298
|
-
children:
|
|
299
|
-
}), /* @__PURE__ */
|
|
312
|
+
children: C("common.created", "Created")
|
|
313
|
+
}), /* @__PURE__ */ j("p", {
|
|
300
314
|
className: "font-medium text-text-primary",
|
|
301
315
|
children: new Date(Z.createdAt).toLocaleDateString()
|
|
302
316
|
})] }),
|
|
303
|
-
/* @__PURE__ */
|
|
317
|
+
/* @__PURE__ */ M("div", { children: [/* @__PURE__ */ j("p", {
|
|
304
318
|
className: "text-text-secondary",
|
|
305
|
-
children:
|
|
306
|
-
}), /* @__PURE__ */
|
|
319
|
+
children: C("common.updated", "Updated")
|
|
320
|
+
}), /* @__PURE__ */ j("p", {
|
|
307
321
|
className: "font-medium text-text-primary",
|
|
308
322
|
children: new Date(Z.updatedAt).toLocaleDateString()
|
|
309
323
|
})] })
|
|
310
324
|
]
|
|
311
325
|
})
|
|
312
326
|
})] }),
|
|
313
|
-
Z.tags?.length > 0 && /* @__PURE__ */
|
|
327
|
+
Z.tags?.length > 0 && /* @__PURE__ */ j(h, { children: /* @__PURE__ */ M("div", {
|
|
314
328
|
className: "p-4",
|
|
315
|
-
children: [/* @__PURE__ */
|
|
329
|
+
children: [/* @__PURE__ */ j("h3", {
|
|
316
330
|
className: "font-semibold text-text-primary mb-3",
|
|
317
|
-
children:
|
|
318
|
-
}), /* @__PURE__ */
|
|
331
|
+
children: C("catalog.tags", "Tags")
|
|
332
|
+
}), /* @__PURE__ */ j("div", {
|
|
319
333
|
className: "flex flex-wrap gap-2",
|
|
320
|
-
children: Z.tags.map((e) => /* @__PURE__ */
|
|
334
|
+
children: Z.tags.map((e) => /* @__PURE__ */ j("span", {
|
|
321
335
|
className: "px-2.5 py-1 text-sm bg-bg-sunken text-text-secondary rounded-md",
|
|
322
336
|
children: e
|
|
323
337
|
}, e))
|
|
@@ -325,7 +339,7 @@ function G() {
|
|
|
325
339
|
}) })
|
|
326
340
|
]
|
|
327
341
|
}, "overview"),
|
|
328
|
-
|
|
342
|
+
A === "components" && /* @__PURE__ */ M(k.div, {
|
|
329
343
|
initial: {
|
|
330
344
|
opacity: 0,
|
|
331
345
|
y: 8
|
|
@@ -340,39 +354,39 @@ function G() {
|
|
|
340
354
|
},
|
|
341
355
|
transition: { duration: .2 },
|
|
342
356
|
className: "space-y-4",
|
|
343
|
-
children: [/* @__PURE__ */
|
|
357
|
+
children: [/* @__PURE__ */ M("div", {
|
|
344
358
|
className: "flex items-center justify-between",
|
|
345
|
-
children: [/* @__PURE__ */
|
|
359
|
+
children: [/* @__PURE__ */ M("p", {
|
|
346
360
|
className: "text-sm text-text-secondary",
|
|
347
361
|
children: [
|
|
348
362
|
Q.length,
|
|
349
363
|
" ",
|
|
350
|
-
|
|
364
|
+
C("catalog.componentsInCatalog", "components in this catalog")
|
|
351
365
|
]
|
|
352
|
-
}), /* @__PURE__ */
|
|
366
|
+
}), /* @__PURE__ */ M("button", {
|
|
353
367
|
type: "button",
|
|
354
|
-
onClick: () =>
|
|
368
|
+
onClick: () => B(!0),
|
|
355
369
|
className: "flex items-center gap-2 px-3 py-2 text-sm bg-action-primary-bg text-action-primary-text rounded-md hover:bg-action-primary-bg-hover transition-colors",
|
|
356
|
-
children: [/* @__PURE__ */
|
|
370
|
+
children: [/* @__PURE__ */ j(D, { className: "size-4" }), C("catalog.addComponent", "Add Component")]
|
|
357
371
|
})]
|
|
358
|
-
}), Q.length > 0 ? /* @__PURE__ */
|
|
372
|
+
}), Q.length > 0 ? /* @__PURE__ */ j(P, {
|
|
359
373
|
stagger: .04,
|
|
360
374
|
className: "grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-4",
|
|
361
|
-
children: Q.map((e) => /* @__PURE__ */
|
|
375
|
+
children: Q.map((e) => /* @__PURE__ */ j(N, { children: /* @__PURE__ */ j(ie, {
|
|
362
376
|
component: e,
|
|
363
|
-
onOpen:
|
|
377
|
+
onOpen: Se
|
|
364
378
|
}) }, e.id))
|
|
365
|
-
}) : /* @__PURE__ */
|
|
366
|
-
icon: /* @__PURE__ */
|
|
367
|
-
title:
|
|
368
|
-
description:
|
|
379
|
+
}) : /* @__PURE__ */ j(m, {
|
|
380
|
+
icon: /* @__PURE__ */ j(T, { className: "size-8 text-text-secondary" }),
|
|
381
|
+
title: C("catalog.noComponents", "No components"),
|
|
382
|
+
description: C("catalog.noComponentsDescription", "Add components to this catalog to track them")
|
|
369
383
|
})]
|
|
370
384
|
}, "components"),
|
|
371
|
-
|
|
385
|
+
A === "dependency-graph" && /* @__PURE__ */ j(ge, {
|
|
372
386
|
catalogId: i || "",
|
|
373
|
-
tr:
|
|
387
|
+
tr: C
|
|
374
388
|
}),
|
|
375
|
-
|
|
389
|
+
A === "docs" && /* @__PURE__ */ j(k.div, {
|
|
376
390
|
initial: {
|
|
377
391
|
opacity: 0,
|
|
378
392
|
y: 8
|
|
@@ -387,12 +401,12 @@ function G() {
|
|
|
387
401
|
},
|
|
388
402
|
transition: { duration: .2 },
|
|
389
403
|
className: "space-y-6",
|
|
390
|
-
children: /* @__PURE__ */
|
|
404
|
+
children: /* @__PURE__ */ j(re, {
|
|
391
405
|
ownerType: "CATALOG",
|
|
392
406
|
ownerId: i || ""
|
|
393
407
|
})
|
|
394
408
|
}, "docs"),
|
|
395
|
-
|
|
409
|
+
A === "settings" && /* @__PURE__ */ j(k.div, {
|
|
396
410
|
initial: {
|
|
397
411
|
opacity: 0,
|
|
398
412
|
y: 8
|
|
@@ -406,39 +420,39 @@ function G() {
|
|
|
406
420
|
y: -8
|
|
407
421
|
},
|
|
408
422
|
transition: { duration: .2 },
|
|
409
|
-
children: /* @__PURE__ */
|
|
423
|
+
children: /* @__PURE__ */ M("div", {
|
|
410
424
|
className: "space-y-4",
|
|
411
|
-
children: [/* @__PURE__ */
|
|
425
|
+
children: [/* @__PURE__ */ M(h, {
|
|
412
426
|
padding: "lg",
|
|
413
|
-
children: [/* @__PURE__ */
|
|
427
|
+
children: [/* @__PURE__ */ j("h3", {
|
|
414
428
|
className: "font-semibold text-text-primary mb-4",
|
|
415
|
-
children:
|
|
416
|
-
}), /* @__PURE__ */
|
|
429
|
+
children: C("catalog.editCatalog", "Edit Catalog")
|
|
430
|
+
}), /* @__PURE__ */ j("button", {
|
|
417
431
|
type: "button",
|
|
418
|
-
onClick: () =>
|
|
432
|
+
onClick: () => R(!0),
|
|
419
433
|
className: "px-4 py-2 bg-action-primary-bg text-action-primary-text rounded-md hover:bg-action-primary-bg-hover transition-colors",
|
|
420
|
-
children:
|
|
434
|
+
children: C("catalog.editDetails", "Edit Details")
|
|
421
435
|
})]
|
|
422
|
-
}), /* @__PURE__ */
|
|
436
|
+
}), /* @__PURE__ */ M(h, {
|
|
423
437
|
padding: "lg",
|
|
424
438
|
children: [
|
|
425
|
-
/* @__PURE__ */
|
|
439
|
+
/* @__PURE__ */ j("h3", {
|
|
426
440
|
className: "font-semibold text-status-error-text mb-2",
|
|
427
|
-
children:
|
|
441
|
+
children: C("catalog.dangerZone", "Danger Zone")
|
|
428
442
|
}),
|
|
429
|
-
/* @__PURE__ */
|
|
443
|
+
/* @__PURE__ */ j("p", {
|
|
430
444
|
className: "text-sm text-text-secondary mb-4",
|
|
431
|
-
children:
|
|
445
|
+
children: C("catalog.deleteWarning", "Deleting this catalog will detach all components and vibes. This cannot be undone.")
|
|
432
446
|
}),
|
|
433
|
-
/* @__PURE__ */
|
|
447
|
+
/* @__PURE__ */ M("button", {
|
|
434
448
|
type: "button",
|
|
435
449
|
"data-testid": "catalog-delete-button",
|
|
436
|
-
onClick: () =>
|
|
450
|
+
onClick: () => H(!0),
|
|
437
451
|
className: "inline-flex items-center gap-2 px-4 py-2 bg-status-error-bg text-status-error-text rounded-md hover:opacity-90 transition-opacity",
|
|
438
|
-
children: [/* @__PURE__ */
|
|
452
|
+
children: [/* @__PURE__ */ j(ue, {
|
|
439
453
|
className: "size-4",
|
|
440
454
|
"aria-hidden": "true"
|
|
441
|
-
}),
|
|
455
|
+
}), C("catalog.deleteCatalog", "Delete Catalog")]
|
|
442
456
|
})
|
|
443
457
|
]
|
|
444
458
|
})]
|
|
@@ -446,10 +460,10 @@ function G() {
|
|
|
446
460
|
}, "settings")
|
|
447
461
|
]
|
|
448
462
|
}),
|
|
449
|
-
/* @__PURE__ */
|
|
450
|
-
isOpen:
|
|
451
|
-
onClose: () =>
|
|
452
|
-
onSubmit:
|
|
463
|
+
/* @__PURE__ */ j(ae, {
|
|
464
|
+
isOpen: L,
|
|
465
|
+
onClose: () => R(!1),
|
|
466
|
+
onSubmit: Ce,
|
|
453
467
|
initialData: {
|
|
454
468
|
name: Z.name,
|
|
455
469
|
description: Z.description || "",
|
|
@@ -457,66 +471,66 @@ function G() {
|
|
|
457
471
|
owner: Z.ownerName || "",
|
|
458
472
|
tags: Z.tags || []
|
|
459
473
|
},
|
|
460
|
-
title:
|
|
474
|
+
title: C("catalog.editCatalog", "Edit Catalog")
|
|
461
475
|
}),
|
|
462
|
-
|
|
476
|
+
z && /* @__PURE__ */ j(_e, {
|
|
463
477
|
catalogId: i || "",
|
|
464
478
|
existingComponentIds: Q.map((e) => e.id),
|
|
465
479
|
onAdd: async (e) => {
|
|
466
|
-
await
|
|
480
|
+
await be({ variables: {
|
|
467
481
|
catalogId: i,
|
|
468
482
|
componentId: e
|
|
469
|
-
} }),
|
|
483
|
+
} }), K(C("catalog.componentAdded", "Component added to catalog")), setTimeout(() => K(null), 3e3), B(!1);
|
|
470
484
|
},
|
|
471
|
-
onClose: () =>
|
|
472
|
-
tr:
|
|
485
|
+
onClose: () => B(!1),
|
|
486
|
+
tr: C
|
|
473
487
|
}),
|
|
474
|
-
/* @__PURE__ */
|
|
475
|
-
isOpen:
|
|
476
|
-
onClose: () =>
|
|
477
|
-
onConfirm:
|
|
478
|
-
title:
|
|
479
|
-
message:
|
|
480
|
-
confirmLabel:
|
|
488
|
+
/* @__PURE__ */ j(c, {
|
|
489
|
+
isOpen: V,
|
|
490
|
+
onClose: () => H(!1),
|
|
491
|
+
onConfirm: we,
|
|
492
|
+
title: C("catalog.deleteCatalog", "Delete Catalog"),
|
|
493
|
+
message: C("catalog.deleteConfirmMessage", `Are you sure you want to delete "${Z.name}"? This action cannot be undone.`),
|
|
494
|
+
confirmLabel: C("common.delete", "Delete"),
|
|
481
495
|
variant: "danger",
|
|
482
|
-
isLoading:
|
|
496
|
+
isLoading: U
|
|
483
497
|
})
|
|
484
498
|
]
|
|
485
|
-
}) : /* @__PURE__ */
|
|
499
|
+
}) : /* @__PURE__ */ M(F, {
|
|
486
500
|
className: "space-y-6 p-4 sm:p-6 bg-bg-surface min-h-screen",
|
|
487
|
-
children: [/* @__PURE__ */
|
|
501
|
+
children: [/* @__PURE__ */ M("button", {
|
|
488
502
|
type: "button",
|
|
489
503
|
onClick: $,
|
|
490
504
|
className: "flex items-center gap-2 text-text-secondary hover:text-text-primary transition-colors",
|
|
491
|
-
children: [/* @__PURE__ */
|
|
492
|
-
}), /* @__PURE__ */
|
|
493
|
-
icon: /* @__PURE__ */
|
|
494
|
-
title:
|
|
505
|
+
children: [/* @__PURE__ */ j(S, { className: "size-4" }), C("catalog.backToCatalogs", "Back to Catalogs")]
|
|
506
|
+
}), /* @__PURE__ */ j(m, {
|
|
507
|
+
icon: /* @__PURE__ */ j(w, { className: "size-8 text-text-secondary" }),
|
|
508
|
+
title: C("catalog.notFound", "Catalog not found"),
|
|
495
509
|
description: `No catalog with ID "${i}" exists`,
|
|
496
|
-
action: /* @__PURE__ */
|
|
510
|
+
action: /* @__PURE__ */ j("button", {
|
|
497
511
|
type: "button",
|
|
498
512
|
onClick: $,
|
|
499
513
|
className: "px-4 py-2 bg-action-primary-bg text-action-primary-text rounded-md hover:bg-action-primary-bg-hover transition-colors",
|
|
500
|
-
children:
|
|
514
|
+
children: C("catalog.backToCatalogs", "Back to Catalogs")
|
|
501
515
|
})
|
|
502
516
|
})]
|
|
503
517
|
});
|
|
504
518
|
}
|
|
505
|
-
function
|
|
506
|
-
return /* @__PURE__ */
|
|
507
|
-
/* @__PURE__ */
|
|
519
|
+
function q({ data: e }) {
|
|
520
|
+
return /* @__PURE__ */ M(A, { children: [
|
|
521
|
+
/* @__PURE__ */ j(z, {
|
|
508
522
|
type: "target",
|
|
509
|
-
position:
|
|
523
|
+
position: V.Left,
|
|
510
524
|
style: {
|
|
511
525
|
width: 8,
|
|
512
526
|
height: 8,
|
|
513
527
|
background: "var(--color-border-strong)"
|
|
514
528
|
}
|
|
515
529
|
}),
|
|
516
|
-
/* @__PURE__ */
|
|
517
|
-
/* @__PURE__ */
|
|
530
|
+
/* @__PURE__ */ j("div", { children: e.label }),
|
|
531
|
+
/* @__PURE__ */ j(z, {
|
|
518
532
|
type: "source",
|
|
519
|
-
position:
|
|
533
|
+
position: V.Right,
|
|
520
534
|
style: {
|
|
521
535
|
width: 8,
|
|
522
536
|
height: 8,
|
|
@@ -525,8 +539,8 @@ function K({ data: e }) {
|
|
|
525
539
|
})
|
|
526
540
|
] });
|
|
527
541
|
}
|
|
528
|
-
var
|
|
529
|
-
function
|
|
542
|
+
var J = { catalog: q };
|
|
543
|
+
function Y(e, t) {
|
|
530
544
|
let n = Math.max(1, Math.ceil(Math.sqrt(e.length))), r = new Map(e.map((e) => [e.name, e.id])), i = t.filter((e) => r.has(e.target));
|
|
531
545
|
return {
|
|
532
546
|
nodes: e.map((e, t) => {
|
|
@@ -538,13 +552,13 @@ function J(e, t) {
|
|
|
538
552
|
x: r * 220 + 40,
|
|
539
553
|
y: a * 120 + 40
|
|
540
554
|
},
|
|
541
|
-
data: { label: /* @__PURE__ */
|
|
555
|
+
data: { label: /* @__PURE__ */ M("div", {
|
|
542
556
|
style: {
|
|
543
557
|
lineHeight: 1.4,
|
|
544
558
|
textAlign: "center"
|
|
545
559
|
},
|
|
546
560
|
children: [
|
|
547
|
-
/* @__PURE__ */
|
|
561
|
+
/* @__PURE__ */ j("div", {
|
|
548
562
|
style: {
|
|
549
563
|
fontWeight: 700,
|
|
550
564
|
fontSize: 12,
|
|
@@ -555,7 +569,7 @@ function J(e, t) {
|
|
|
555
569
|
},
|
|
556
570
|
children: e.name
|
|
557
571
|
}),
|
|
558
|
-
/* @__PURE__ */
|
|
572
|
+
/* @__PURE__ */ M("div", {
|
|
559
573
|
style: {
|
|
560
574
|
fontSize: 10,
|
|
561
575
|
color: o > 0 ? "rgba(255,255,255,0.75)" : "var(--color-text-muted)",
|
|
@@ -563,7 +577,7 @@ function J(e, t) {
|
|
|
563
577
|
},
|
|
564
578
|
children: [e.type, e.version ? ` v${e.version}` : ""]
|
|
565
579
|
}),
|
|
566
|
-
o > 0 && /* @__PURE__ */
|
|
580
|
+
o > 0 && /* @__PURE__ */ M("div", {
|
|
567
581
|
style: {
|
|
568
582
|
fontSize: 10,
|
|
569
583
|
marginTop: 3,
|
|
@@ -597,7 +611,7 @@ function J(e, t) {
|
|
|
597
611
|
target: r.get(e.target),
|
|
598
612
|
label: e.version || void 0,
|
|
599
613
|
animated: e.dependencyType !== "dev",
|
|
600
|
-
markerEnd: { type:
|
|
614
|
+
markerEnd: { type: B.ArrowClosed },
|
|
601
615
|
style: {
|
|
602
616
|
stroke: "var(--color-border-strong)",
|
|
603
617
|
strokeWidth: 1.5,
|
|
@@ -614,10 +628,10 @@ function J(e, t) {
|
|
|
614
628
|
}))
|
|
615
629
|
};
|
|
616
630
|
}
|
|
617
|
-
function
|
|
618
|
-
let { nodes: i, edges: a } =
|
|
619
|
-
|
|
620
|
-
let { nodes: n, edges: r } =
|
|
631
|
+
function X({ graphNodes: e, graphEdges: t, onComponentClick: n, onConnect: r }) {
|
|
632
|
+
let { nodes: i, edges: a } = b(() => Y(e, t), [e, t]), [o, s, c] = G(i), [l, u, d] = W(a);
|
|
633
|
+
y(() => {
|
|
634
|
+
let { nodes: n, edges: r } = Y(e, t);
|
|
621
635
|
s(n), u(r);
|
|
622
636
|
}, [
|
|
623
637
|
e,
|
|
@@ -625,33 +639,33 @@ function Y({ graphNodes: e, graphEdges: t, onComponentClick: n, onConnect: r })
|
|
|
625
639
|
s,
|
|
626
640
|
u
|
|
627
641
|
]);
|
|
628
|
-
let f = Math.ceil(e.length / Math.max(1, Math.ceil(Math.sqrt(e.length)))), p = Math.max(380, Math.min(f * 140 + 120, 600)), m =
|
|
642
|
+
let f = Math.ceil(e.length / Math.max(1, Math.ceil(Math.sqrt(e.length)))), p = Math.max(380, Math.min(f * 140 + 120, 600)), m = v((e, t) => {
|
|
629
643
|
n?.(t.id);
|
|
630
|
-
}, [n]), h =
|
|
631
|
-
!e.source || !e.target || (u((t) =>
|
|
644
|
+
}, [n]), h = v((e) => {
|
|
645
|
+
!e.source || !e.target || (u((t) => U({
|
|
632
646
|
...e,
|
|
633
647
|
animated: !0,
|
|
634
|
-
markerEnd: { type:
|
|
648
|
+
markerEnd: { type: B.ArrowClosed },
|
|
635
649
|
style: {
|
|
636
650
|
stroke: "var(--color-border-strong)",
|
|
637
651
|
strokeWidth: 1.5
|
|
638
652
|
}
|
|
639
653
|
}, t)), r?.(e.source, e.target));
|
|
640
654
|
}, [r, u]);
|
|
641
|
-
return /* @__PURE__ */
|
|
655
|
+
return /* @__PURE__ */ j("div", {
|
|
642
656
|
className: "w-full rounded-lg border border-border-default overflow-hidden",
|
|
643
657
|
style: {
|
|
644
658
|
height: p,
|
|
645
659
|
background: "var(--color-bg-secondary)"
|
|
646
660
|
},
|
|
647
|
-
children: /* @__PURE__ */
|
|
661
|
+
children: /* @__PURE__ */ M(H, {
|
|
648
662
|
nodes: o,
|
|
649
663
|
edges: l,
|
|
650
664
|
onNodesChange: c,
|
|
651
665
|
onEdgesChange: d,
|
|
652
666
|
onNodeClick: m,
|
|
653
667
|
onConnect: h,
|
|
654
|
-
nodeTypes:
|
|
668
|
+
nodeTypes: J,
|
|
655
669
|
fitView: !0,
|
|
656
670
|
fitViewOptions: { padding: .25 },
|
|
657
671
|
minZoom: .15,
|
|
@@ -660,12 +674,12 @@ function Y({ graphNodes: e, graphEdges: t, onComponentClick: n, onConnect: r })
|
|
|
660
674
|
panOnScroll: !1,
|
|
661
675
|
zoomOnScroll: !0,
|
|
662
676
|
proOptions: { hideAttribution: !0 },
|
|
663
|
-
children: [/* @__PURE__ */
|
|
664
|
-
variant:
|
|
677
|
+
children: [/* @__PURE__ */ j(I, {
|
|
678
|
+
variant: L.Dots,
|
|
665
679
|
gap: 20,
|
|
666
680
|
size: 1,
|
|
667
681
|
className: "!fill-text-tertiary/10"
|
|
668
|
-
}), /* @__PURE__ */
|
|
682
|
+
}), /* @__PURE__ */ j(R, {
|
|
669
683
|
showInteractive: !1,
|
|
670
684
|
style: {
|
|
671
685
|
background: "var(--color-bg-primary)",
|
|
@@ -682,7 +696,7 @@ function ge({ catalogId: e, tr: t }) {
|
|
|
682
696
|
variables: { catalogId: e },
|
|
683
697
|
skip: !e,
|
|
684
698
|
fetchPolicy: "cache-and-network"
|
|
685
|
-
}), [u] = s(), p = i?.vibecontrolsCatalogDependencyGraph, g =
|
|
699
|
+
}), [u] = s(), p = i?.vibecontrolsCatalogDependencyGraph, g = v(async (e, t) => {
|
|
686
700
|
if (!p) return;
|
|
687
701
|
let n = p.nodes.find((e) => e.id === t);
|
|
688
702
|
if (!n) return;
|
|
@@ -710,7 +724,7 @@ function ge({ catalogId: e, tr: t }) {
|
|
|
710
724
|
u,
|
|
711
725
|
c
|
|
712
726
|
]);
|
|
713
|
-
return /* @__PURE__ */
|
|
727
|
+
return /* @__PURE__ */ M(k.div, {
|
|
714
728
|
initial: {
|
|
715
729
|
opacity: 0,
|
|
716
730
|
y: 8
|
|
@@ -726,89 +740,89 @@ function ge({ catalogId: e, tr: t }) {
|
|
|
726
740
|
transition: { duration: .2 },
|
|
727
741
|
className: "space-y-4",
|
|
728
742
|
children: [
|
|
729
|
-
/* @__PURE__ */
|
|
743
|
+
/* @__PURE__ */ M("div", {
|
|
730
744
|
className: "flex items-center justify-between",
|
|
731
|
-
children: [/* @__PURE__ */
|
|
745
|
+
children: [/* @__PURE__ */ M("h3", {
|
|
732
746
|
className: "font-semibold text-text-primary flex items-center gap-2",
|
|
733
|
-
children: [/* @__PURE__ */
|
|
734
|
-
}), /* @__PURE__ */
|
|
747
|
+
children: [/* @__PURE__ */ j(E, { className: "size-5" }), t("catalog.dependencyGraph", "Dependency Graph")]
|
|
748
|
+
}), /* @__PURE__ */ j("button", {
|
|
735
749
|
type: "button",
|
|
736
750
|
onClick: () => c(),
|
|
737
751
|
disabled: a,
|
|
738
752
|
className: "p-2 text-text-secondary hover:bg-bg-sunken rounded-md transition-colors disabled:opacity-50",
|
|
739
753
|
title: t("common.refresh", "Refresh"),
|
|
740
|
-
children: /* @__PURE__ */
|
|
754
|
+
children: /* @__PURE__ */ j(O, { className: `size-4 ${a ? "animate-spin" : ""}` })
|
|
741
755
|
})]
|
|
742
756
|
}),
|
|
743
|
-
a && !p && /* @__PURE__ */
|
|
744
|
-
o && !p && /* @__PURE__ */
|
|
757
|
+
a && !p && /* @__PURE__ */ j(d, { message: t("catalog.loadingGraph", "Loading dependency graph...") }),
|
|
758
|
+
o && !p && /* @__PURE__ */ j(f, {
|
|
745
759
|
title: t("catalog.graphError", "Failed to load graph"),
|
|
746
760
|
message: o.message,
|
|
747
761
|
onRetry: () => c()
|
|
748
762
|
}),
|
|
749
|
-
p && p.nodes.length === 0 && /* @__PURE__ */
|
|
750
|
-
icon: /* @__PURE__ */
|
|
763
|
+
p && p.nodes.length === 0 && /* @__PURE__ */ j(m, {
|
|
764
|
+
icon: /* @__PURE__ */ j(E, { className: "size-8 text-text-secondary" }),
|
|
751
765
|
title: t("catalog.noGraphNodes", "No components in catalog"),
|
|
752
766
|
description: t("catalog.noGraphNodesDesc", "Add components to this catalog to visualize the dependency graph")
|
|
753
767
|
}),
|
|
754
|
-
p && p.nodes.length > 0 && /* @__PURE__ */
|
|
755
|
-
/* @__PURE__ */
|
|
768
|
+
p && p.nodes.length > 0 && /* @__PURE__ */ M(A, { children: [
|
|
769
|
+
/* @__PURE__ */ M("div", {
|
|
756
770
|
className: "grid grid-cols-2 gap-4",
|
|
757
|
-
children: [/* @__PURE__ */
|
|
771
|
+
children: [/* @__PURE__ */ M(h, {
|
|
758
772
|
padding: "md",
|
|
759
|
-
children: [/* @__PURE__ */
|
|
773
|
+
children: [/* @__PURE__ */ j("p", {
|
|
760
774
|
className: "text-sm text-text-secondary",
|
|
761
775
|
children: t("catalog.graphNodes", "Components")
|
|
762
|
-
}), /* @__PURE__ */
|
|
776
|
+
}), /* @__PURE__ */ j("p", {
|
|
763
777
|
className: "text-2xl font-bold text-text-primary",
|
|
764
778
|
children: p.nodes.length
|
|
765
779
|
})]
|
|
766
|
-
}), /* @__PURE__ */
|
|
780
|
+
}), /* @__PURE__ */ M(h, {
|
|
767
781
|
padding: "md",
|
|
768
|
-
children: [/* @__PURE__ */
|
|
782
|
+
children: [/* @__PURE__ */ j("p", {
|
|
769
783
|
className: "text-sm text-text-secondary",
|
|
770
784
|
children: t("catalog.graphEdges", "Dependencies")
|
|
771
|
-
}), /* @__PURE__ */
|
|
785
|
+
}), /* @__PURE__ */ j("p", {
|
|
772
786
|
className: "text-2xl font-bold text-text-primary",
|
|
773
787
|
children: p.edges.length
|
|
774
788
|
})]
|
|
775
789
|
})]
|
|
776
790
|
}),
|
|
777
|
-
/* @__PURE__ */
|
|
791
|
+
/* @__PURE__ */ j(X, {
|
|
778
792
|
graphNodes: p.nodes,
|
|
779
793
|
graphEdges: p.edges,
|
|
780
794
|
onComponentClick: (e) => r(`/components/${e}`),
|
|
781
795
|
onConnect: g
|
|
782
796
|
}),
|
|
783
|
-
p.edges.length === 0 && /* @__PURE__ */
|
|
797
|
+
p.edges.length === 0 && /* @__PURE__ */ j("p", {
|
|
784
798
|
className: "text-xs text-text-muted text-center",
|
|
785
799
|
children: "No inter-component dependencies yet. Drag from a node's right handle to another node to create a dependency."
|
|
786
800
|
}),
|
|
787
|
-
p.edges.length > 0 && /* @__PURE__ */
|
|
801
|
+
p.edges.length > 0 && /* @__PURE__ */ M(h, { children: [/* @__PURE__ */ j("div", {
|
|
788
802
|
className: "p-4 border-b border-border-default",
|
|
789
|
-
children: /* @__PURE__ */
|
|
803
|
+
children: /* @__PURE__ */ j("h4", {
|
|
790
804
|
className: "font-medium text-text-primary",
|
|
791
805
|
children: t("catalog.graphEdgesList", "Dependency Edges")
|
|
792
806
|
})
|
|
793
|
-
}), /* @__PURE__ */
|
|
807
|
+
}), /* @__PURE__ */ j("div", {
|
|
794
808
|
className: "divide-y divide-border-default",
|
|
795
|
-
children: p.edges.map((e, t) => /* @__PURE__ */
|
|
809
|
+
children: p.edges.map((e, t) => /* @__PURE__ */ M("div", {
|
|
796
810
|
className: "p-3 flex items-center gap-3 text-sm",
|
|
797
811
|
children: [
|
|
798
|
-
/* @__PURE__ */
|
|
812
|
+
/* @__PURE__ */ j("span", {
|
|
799
813
|
className: "font-medium text-text-primary truncate max-w-[120px]",
|
|
800
814
|
children: p.nodes.find((t) => t.id === e.source)?.name || e.source
|
|
801
815
|
}),
|
|
802
|
-
/* @__PURE__ */
|
|
803
|
-
/* @__PURE__ */
|
|
816
|
+
/* @__PURE__ */ j(C, { className: "size-4 text-text-muted flex-shrink-0" }),
|
|
817
|
+
/* @__PURE__ */ j("span", {
|
|
804
818
|
className: "text-text-primary truncate max-w-[120px]",
|
|
805
819
|
children: p.nodes.find((t) => t.id === e.target)?.name || e.target
|
|
806
820
|
}),
|
|
807
|
-
e.version && /* @__PURE__ */
|
|
821
|
+
e.version && /* @__PURE__ */ j("span", {
|
|
808
822
|
className: "text-xs text-text-muted ml-auto",
|
|
809
823
|
children: e.version
|
|
810
824
|
}),
|
|
811
|
-
e.dependencyType && /* @__PURE__ */
|
|
825
|
+
e.dependencyType && /* @__PURE__ */ j("span", {
|
|
812
826
|
className: "text-xs bg-bg-sunken text-text-secondary px-1.5 py-0.5 rounded",
|
|
813
827
|
children: e.dependencyType
|
|
814
828
|
})
|
|
@@ -820,7 +834,7 @@ function ge({ catalogId: e, tr: t }) {
|
|
|
820
834
|
}, "dependency-graph");
|
|
821
835
|
}
|
|
822
836
|
function _e({ catalogId: e, existingComponentIds: t, onAdd: n, onClose: r, tr: a }) {
|
|
823
|
-
let [o, s] =
|
|
837
|
+
let [o, s] = x(!1), [c, l] = x(""), { data: u, loading: f } = i({ fetchPolicy: "cache-and-network" }), p = b(() => {
|
|
824
838
|
let e = (u?.vibecontrolsComponents?.items ?? []).filter((e) => !t.includes(e.id));
|
|
825
839
|
if (!c) return e;
|
|
826
840
|
let n = c.toLowerCase();
|
|
@@ -837,9 +851,9 @@ function _e({ catalogId: e, existingComponentIds: t, onAdd: n, onClose: r, tr: a
|
|
|
837
851
|
s(!1);
|
|
838
852
|
}
|
|
839
853
|
};
|
|
840
|
-
return /* @__PURE__ */
|
|
854
|
+
return /* @__PURE__ */ j("div", {
|
|
841
855
|
className: "fixed inset-0 bg-bg-overlay flex items-center justify-center z-50 p-4",
|
|
842
|
-
children: /* @__PURE__ */
|
|
856
|
+
children: /* @__PURE__ */ M(k.div, {
|
|
843
857
|
initial: {
|
|
844
858
|
opacity: 0,
|
|
845
859
|
scale: .95
|
|
@@ -850,14 +864,14 @@ function _e({ catalogId: e, existingComponentIds: t, onAdd: n, onClose: r, tr: a
|
|
|
850
864
|
},
|
|
851
865
|
className: "bg-bg-surface rounded-lg w-full max-w-md max-h-[70vh] flex flex-col",
|
|
852
866
|
children: [
|
|
853
|
-
/* @__PURE__ */
|
|
867
|
+
/* @__PURE__ */ M("div", {
|
|
854
868
|
className: "p-4 border-b border-border-default",
|
|
855
|
-
children: [/* @__PURE__ */
|
|
869
|
+
children: [/* @__PURE__ */ j("h2", {
|
|
856
870
|
className: "text-lg font-semibold text-text-primary",
|
|
857
871
|
children: a("catalog.addComponentTitle", "Add Component to Catalog")
|
|
858
|
-
}), /* @__PURE__ */
|
|
872
|
+
}), /* @__PURE__ */ j("div", {
|
|
859
873
|
className: "mt-3",
|
|
860
|
-
children: /* @__PURE__ */
|
|
874
|
+
children: /* @__PURE__ */ j("input", {
|
|
861
875
|
"aria-label": "control",
|
|
862
876
|
type: "text",
|
|
863
877
|
value: c,
|
|
@@ -867,36 +881,36 @@ function _e({ catalogId: e, existingComponentIds: t, onAdd: n, onClose: r, tr: a
|
|
|
867
881
|
})
|
|
868
882
|
})]
|
|
869
883
|
}),
|
|
870
|
-
/* @__PURE__ */
|
|
884
|
+
/* @__PURE__ */ M("div", {
|
|
871
885
|
className: "flex-1 overflow-y-auto p-2",
|
|
872
886
|
children: [
|
|
873
|
-
f && /* @__PURE__ */
|
|
874
|
-
!f && p.length === 0 && /* @__PURE__ */
|
|
887
|
+
f && /* @__PURE__ */ j(d, { message: a("common.loading", "Loading...") }),
|
|
888
|
+
!f && p.length === 0 && /* @__PURE__ */ j("div", {
|
|
875
889
|
className: "p-4 text-center text-text-secondary text-sm",
|
|
876
890
|
children: a("catalog.noAvailableComponents", "No available components to add")
|
|
877
891
|
}),
|
|
878
|
-
p.map((e) => /* @__PURE__ */
|
|
892
|
+
p.map((e) => /* @__PURE__ */ M("button", {
|
|
879
893
|
type: "button",
|
|
880
894
|
onClick: () => m(e.id),
|
|
881
895
|
disabled: o,
|
|
882
896
|
className: "w-full flex items-center justify-between p-3 rounded-md hover:bg-bg-sunken transition-colors disabled:opacity-50 text-left",
|
|
883
|
-
children: [/* @__PURE__ */
|
|
897
|
+
children: [/* @__PURE__ */ M("div", { children: [/* @__PURE__ */ j("p", {
|
|
884
898
|
className: "font-medium text-text-primary text-sm",
|
|
885
899
|
children: e.name
|
|
886
|
-
}), /* @__PURE__ */
|
|
900
|
+
}), /* @__PURE__ */ M("p", {
|
|
887
901
|
className: "text-xs text-text-secondary",
|
|
888
902
|
children: [
|
|
889
903
|
e.type,
|
|
890
904
|
" · ",
|
|
891
905
|
e.lifecycle
|
|
892
906
|
]
|
|
893
|
-
})] }), /* @__PURE__ */
|
|
907
|
+
})] }), /* @__PURE__ */ j(D, { className: "size-4 text-text-secondary" })]
|
|
894
908
|
}, e.id))
|
|
895
909
|
]
|
|
896
910
|
}),
|
|
897
|
-
/* @__PURE__ */
|
|
911
|
+
/* @__PURE__ */ j("div", {
|
|
898
912
|
className: "p-4 border-t border-border-default",
|
|
899
|
-
children: /* @__PURE__ */
|
|
913
|
+
children: /* @__PURE__ */ j("button", {
|
|
900
914
|
type: "button",
|
|
901
915
|
onClick: r,
|
|
902
916
|
className: "w-full px-4 py-2 text-text-primary hover:bg-bg-sunken rounded-md transition-colors",
|
|
@@ -908,6 +922,6 @@ function _e({ catalogId: e, existingComponentIds: t, onAdd: n, onClose: r, tr: a
|
|
|
908
922
|
});
|
|
909
923
|
}
|
|
910
924
|
//#endregion
|
|
911
|
-
export {
|
|
925
|
+
export { K as CatalogDetailPage };
|
|
912
926
|
|
|
913
927
|
//# sourceMappingURL=CatalogDetailPage.js.map
|