@burdenoff/microfe-vibecontrols 2026.613.1 → 2026.618.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/agents/AgentConnectionRecovery.js +100 -94
- package/dist/components/agents/AgentConnectionRecovery.js.map +1 -1
- package/dist/components/agents/AgentMaintenanceTab.js +177 -160
- package/dist/components/agents/AgentMaintenanceTab.js.map +1 -1
- package/dist/components/agents/OpenInBrowserEditorButton.js +102 -94
- package/dist/components/agents/OpenInBrowserEditorButton.js.map +1 -1
- package/dist/components/assistant/AssistantChatArea.js +1 -0
- package/dist/components/assistant/AssistantChatArea.js.map +1 -1
- package/dist/components/assistant/AssistantModeSelector.js +20 -19
- package/dist/components/assistant/AssistantModeSelector.js.map +1 -1
- package/dist/components/tunnels/TunnelCard.js +3 -3
- package/dist/components/tunnels/TunnelCard.js.map +1 -1
- package/dist/components/tunnels/TunnelPublicAccessPanel.js +36 -36
- package/dist/components/tunnels/TunnelPublicAccessPanel.js.map +1 -1
- package/dist/config/assistantUsecases.js +11 -0
- package/dist/config/assistantUsecases.js.map +1 -1
- package/dist/constants/permissions.js +38 -6
- package/dist/constants/permissions.js.map +1 -1
- package/dist/index.js +4 -3
- package/dist/pages/CatalogDetailPage.js +155 -155
- package/dist/pages/CatalogDetailPage.js.map +1 -1
- package/dist/pages/CatalogPage.js +110 -109
- package/dist/pages/CatalogPage.js.map +1 -1
- package/dist/pages/ComponentDetailPage.js +338 -338
- package/dist/pages/ComponentDetailPage.js.map +1 -1
- package/dist/pages/ComponentsPage.js +104 -103
- package/dist/pages/ComponentsPage.js.map +1 -1
- package/dist/pages/TargetDetailsPage.js +140 -132
- package/dist/pages/TargetDetailsPage.js.map +1 -1
- package/dist/pages/TemplateDetailPage.js +201 -199
- package/dist/pages/TemplateDetailPage.js.map +1 -1
- package/dist/pages/TemplatesPage.js +62 -61
- package/dist/pages/TemplatesPage.js.map +1 -1
- package/dist/pages/VibeDetailsPage.js +568 -555
- package/dist/pages/VibeDetailsPage.js.map +1 -1
- package/dist/pages/ai/AIBookmarksPage.js +104 -89
- package/dist/pages/ai/AIBookmarksPage.js.map +1 -1
- package/dist/pages/ai/AIPage.js +116 -107
- package/dist/pages/ai/AIPage.js.map +1 -1
- package/dist/pages/ai/AISessionDetailPage.js +46 -34
- package/dist/pages/ai/AISessionDetailPage.js.map +1 -1
- package/dist/pages/ai/AgentManagerPage.js +112 -100
- package/dist/pages/ai/AgentManagerPage.js.map +1 -1
- package/dist/pages/tunnels/TunnelDetailsPage.js +177 -153
- package/dist/pages/tunnels/TunnelDetailsPage.js.map +1 -1
- package/dist/pages/tunnels/TunnelsTab.js +119 -111
- package/dist/pages/tunnels/TunnelsTab.js.map +1 -1
- package/dist/pages/tunnels/tabs/TunnelDomainsTab.js +24 -24
- package/dist/pages/tunnels/tabs/TunnelDomainsTab.js.map +1 -1
- package/dist/pages/tunnels/tabs/TunnelOverviewTab.js +9 -8
- package/dist/pages/tunnels/tabs/TunnelOverviewTab.js.map +1 -1
- package/dist/pages/tunnels/tabs/TunnelSessionsTab.js +13 -13
- package/dist/pages/tunnels/tabs/TunnelSessionsTab.js.map +1 -1
- package/dist/pages/tunnels/tabs/TunnelSettingsTab.js +19 -15
- package/dist/pages/tunnels/tabs/TunnelSettingsTab.js.map +1 -1
- package/dist/services/assistantApi.js +9 -3
- package/dist/services/assistantApi.js.map +1 -1
- package/dist/services/createSandboxAssistantTransport.js +120 -0
- package/dist/services/createSandboxAssistantTransport.js.map +1 -0
- package/dist/store/assistantStore.js +1 -1
- package/dist/store/assistantStore.js.map +1 -1
- package/package.json +5 -1
|
@@ -9,31 +9,31 @@ 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
|
|
13
|
-
import { EntityShareButton as
|
|
12
|
+
import { VIBE_PERMISSIONS as _ } from "../constants/permissions.js";
|
|
13
|
+
import { EntityShareButton as ee } from "../components/sharing/EntityShareButton.js";
|
|
14
14
|
import "../components/sharing/index.js";
|
|
15
|
-
import { PageSkeleton as
|
|
16
|
-
import { useQueryBackedTab as
|
|
17
|
-
import { DocsTabPanel as
|
|
15
|
+
import { PageSkeleton as te } from "../components/shared/PageSkeleton.js";
|
|
16
|
+
import { useQueryBackedTab as ne } from "../hooks/useQueryBackedTab.js";
|
|
17
|
+
import { DocsTabPanel as re } from "../components/docs/DocsTabPanel.js";
|
|
18
18
|
import "../components/docs/index.js";
|
|
19
|
-
import { ScorecardPanel as
|
|
19
|
+
import { ScorecardPanel as ie } from "../components/scorecard/ScorecardPanel.js";
|
|
20
20
|
import "../components/scorecard/index.js";
|
|
21
|
-
import { ComponentCard as
|
|
21
|
+
import { ComponentCard as ae } from "../components/idp-components/ComponentCard.js";
|
|
22
22
|
import "../components/idp-components/index.js";
|
|
23
|
-
import { CatalogForm as
|
|
23
|
+
import { CatalogForm as oe } from "../components/catalog/CatalogForm.js";
|
|
24
24
|
import "../components/catalog/index.js";
|
|
25
|
-
import { useCallback as
|
|
26
|
-
import { useI18n as
|
|
27
|
-
import { ArrowLeft as
|
|
25
|
+
import { useCallback as v, useEffect as y, useMemo as b, useState as x } from "react";
|
|
26
|
+
import { useI18n as se } from "@burdenoff/fe-libs/shared/providers/shell/I18nProvider";
|
|
27
|
+
import { ArrowLeft as S, ArrowRight as C, BarChart3 as ce, BookOpen as w, FileText as le, Layers as T, Network as E, Plus as D, RefreshCw as ue, Settings as de, Tag as fe, Trash2 as pe, Zap as me } from "lucide-react";
|
|
28
28
|
import { useParams as he } from "react-router-dom";
|
|
29
29
|
import { usePermissions as ge } from "@burdenoff/fe-libs/shared/providers/shell";
|
|
30
30
|
import { AnimatePresence as _e, motion as O } from "framer-motion";
|
|
31
31
|
import { Fragment as k, jsx as A, jsxs as j } from "react/jsx-runtime";
|
|
32
32
|
import { MotionItem as M, MotionList as N, MotionPage as P } from "@burdenoff/fe-libs/shared/motion";
|
|
33
|
-
import { Background as
|
|
33
|
+
import { Background as ve, BackgroundVariant as F, Controls as I, Handle as L, MarkerType as R, Position as z, ReactFlow as B, addEdge as V, useEdgesState as H, useNodesState as U } from "@xyflow/react";
|
|
34
34
|
import "@xyflow/react/dist/style.css";
|
|
35
35
|
//#region src/pages/CatalogDetailPage.tsx
|
|
36
|
-
var
|
|
36
|
+
var ye = [
|
|
37
37
|
"overview",
|
|
38
38
|
"components",
|
|
39
39
|
"dependency-graph",
|
|
@@ -41,15 +41,15 @@ var ve = [
|
|
|
41
41
|
"docs",
|
|
42
42
|
"settings"
|
|
43
43
|
];
|
|
44
|
-
function
|
|
45
|
-
let { t: n } =
|
|
44
|
+
function W() {
|
|
45
|
+
let { t: n } = se(), { id: i } = he(), s = l(), { hasPermission: d, isLoading: y } = ge(), C = d(_.CATALOG_READ), k = d(_.CATALOG_UPDATE), ve = d(_.CATALOG_DELETE), F = d(_.COMPONENT_READ), I = v((e, t) => {
|
|
46
46
|
let r = n(e);
|
|
47
47
|
return r === e ? t : r;
|
|
48
|
-
}, [n]), [
|
|
48
|
+
}, [n]), [L, R] = ne(ye, "overview"), [z, B] = x(!1), [V, H] = x(!1), [U, W] = x(!1), [G, K] = x(!1), [q, J] = x(null), { data: Se, loading: Y, error: X, refetch: Ce } = r({
|
|
49
49
|
variables: { id: i || "" },
|
|
50
|
-
skip: !i,
|
|
50
|
+
skip: !i || y || !C,
|
|
51
51
|
fetchPolicy: "cache-and-network"
|
|
52
|
-
}), [
|
|
52
|
+
}), [we] = o({ refetchQueries: ["GetCatalog"] }), [Te] = t({ refetchQueries: ["ListCatalogs"] }), [Ee] = e({ refetchQueries: ["GetCatalog"] }), [De] = a({ refetchQueries: ["GetCatalog"] }), Z = Se?.vibecontrolsCatalog ?? null, Q = b(() => (Z?.components ?? []).map((e) => {
|
|
53
53
|
let t = e.component || {};
|
|
54
54
|
return {
|
|
55
55
|
id: t.id,
|
|
@@ -65,14 +65,14 @@ function G() {
|
|
|
65
65
|
updatedAt: t.updatedAt
|
|
66
66
|
};
|
|
67
67
|
}), [Z?.components]);
|
|
68
|
-
if (
|
|
68
|
+
if (y) return /* @__PURE__ */ A("div", {
|
|
69
69
|
className: "flex items-center justify-center min-h-[400px]",
|
|
70
70
|
children: /* @__PURE__ */ A("p", {
|
|
71
71
|
className: "text-text-secondary",
|
|
72
72
|
children: "Loading permissions…"
|
|
73
73
|
})
|
|
74
74
|
});
|
|
75
|
-
if (!
|
|
75
|
+
if (!C) return /* @__PURE__ */ A("div", {
|
|
76
76
|
className: "flex items-center justify-center min-h-[400px]",
|
|
77
77
|
children: /* @__PURE__ */ j("div", {
|
|
78
78
|
className: "text-center space-y-2",
|
|
@@ -87,10 +87,10 @@ function G() {
|
|
|
87
87
|
});
|
|
88
88
|
let $ = () => {
|
|
89
89
|
s("/catalogs");
|
|
90
|
-
},
|
|
90
|
+
}, Oe = (e) => {
|
|
91
91
|
s(`/components/${e.id}`);
|
|
92
|
-
},
|
|
93
|
-
i
|
|
92
|
+
}, ke = async (e) => {
|
|
93
|
+
!i || !k || (await we({ variables: {
|
|
94
94
|
id: i,
|
|
95
95
|
input: {
|
|
96
96
|
name: e.name,
|
|
@@ -99,104 +99,104 @@ function G() {
|
|
|
99
99
|
ownerName: e.owner || void 0,
|
|
100
100
|
tags: e.tags.length > 0 ? e.tags : void 0
|
|
101
101
|
}
|
|
102
|
-
} }),
|
|
103
|
-
},
|
|
102
|
+
} }), J(I("catalog.updatedSuccess", "Catalog updated successfully")), setTimeout(() => J(null), 3e3));
|
|
103
|
+
}, Ae = async () => {
|
|
104
104
|
if (i) {
|
|
105
|
-
|
|
105
|
+
K(!0);
|
|
106
106
|
try {
|
|
107
|
-
await
|
|
107
|
+
await Te({ variables: { id: i } }), W(!1), s("/catalogs");
|
|
108
108
|
} finally {
|
|
109
|
-
|
|
109
|
+
K(!1);
|
|
110
110
|
}
|
|
111
111
|
}
|
|
112
|
-
},
|
|
112
|
+
}, je = [
|
|
113
113
|
{
|
|
114
114
|
id: "overview",
|
|
115
|
-
label:
|
|
116
|
-
icon:
|
|
115
|
+
label: I("nav.overview", "Overview"),
|
|
116
|
+
icon: w
|
|
117
117
|
},
|
|
118
118
|
{
|
|
119
119
|
id: "components",
|
|
120
|
-
label:
|
|
121
|
-
icon:
|
|
120
|
+
label: I("catalog.components", "Components"),
|
|
121
|
+
icon: T,
|
|
122
122
|
badge: `${Z?.componentCount ?? 0}`
|
|
123
123
|
},
|
|
124
124
|
{
|
|
125
125
|
id: "dependency-graph",
|
|
126
|
-
label:
|
|
127
|
-
icon:
|
|
126
|
+
label: I("catalog.dependencyGraph", "Dependency Graph"),
|
|
127
|
+
icon: E
|
|
128
128
|
},
|
|
129
129
|
{
|
|
130
130
|
id: "scorecard",
|
|
131
|
-
label:
|
|
132
|
-
icon:
|
|
131
|
+
label: I("catalog.scorecard", "Scorecard"),
|
|
132
|
+
icon: ce
|
|
133
133
|
},
|
|
134
134
|
{
|
|
135
135
|
id: "docs",
|
|
136
|
-
label:
|
|
137
|
-
icon:
|
|
136
|
+
label: I("catalog.docs", "Docs"),
|
|
137
|
+
icon: le
|
|
138
138
|
},
|
|
139
139
|
{
|
|
140
140
|
id: "settings",
|
|
141
|
-
label:
|
|
141
|
+
label: I("common.settings", "Settings"),
|
|
142
142
|
icon: de
|
|
143
143
|
}
|
|
144
144
|
];
|
|
145
|
-
return
|
|
145
|
+
return Y && !Z ? /* @__PURE__ */ j(P, {
|
|
146
146
|
className: "space-y-6 p-4 sm:p-6 bg-bg-surface min-h-screen",
|
|
147
147
|
children: [/* @__PURE__ */ j("button", {
|
|
148
148
|
type: "button",
|
|
149
149
|
onClick: $,
|
|
150
150
|
className: "flex items-center gap-2 text-text-secondary hover:text-text-primary transition-colors",
|
|
151
|
-
children: [/* @__PURE__ */ A(
|
|
152
|
-
}), /* @__PURE__ */ A(
|
|
153
|
-
}) :
|
|
151
|
+
children: [/* @__PURE__ */ A(S, { className: "size-4" }), I("catalog.backToCatalogs", "Back to Catalogs")]
|
|
152
|
+
}), /* @__PURE__ */ A(te, { variant: "detail" })]
|
|
153
|
+
}) : X && !Z ? /* @__PURE__ */ j(P, {
|
|
154
154
|
className: "space-y-6 p-4 sm:p-6 bg-bg-surface min-h-screen",
|
|
155
155
|
children: [/* @__PURE__ */ j("button", {
|
|
156
156
|
type: "button",
|
|
157
157
|
onClick: $,
|
|
158
158
|
className: "flex items-center gap-2 text-text-secondary hover:text-text-primary transition-colors",
|
|
159
|
-
children: [/* @__PURE__ */ A(
|
|
159
|
+
children: [/* @__PURE__ */ A(S, { className: "size-4" }), I("catalog.backToCatalogs", "Back to Catalogs")]
|
|
160
160
|
}), /* @__PURE__ */ A(f, {
|
|
161
|
-
title:
|
|
162
|
-
message:
|
|
163
|
-
onRetry: () =>
|
|
161
|
+
title: I("catalog.failedLoad", "Failed to load catalog"),
|
|
162
|
+
message: X.message,
|
|
163
|
+
onRetry: () => Ce()
|
|
164
164
|
})]
|
|
165
165
|
}) : Z ? /* @__PURE__ */ j(P, {
|
|
166
166
|
className: "space-y-6 p-4 sm:p-6 bg-bg-surface min-h-screen",
|
|
167
167
|
children: [
|
|
168
|
-
|
|
168
|
+
q && /* @__PURE__ */ A("div", {
|
|
169
169
|
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",
|
|
170
|
-
children:
|
|
170
|
+
children: q
|
|
171
171
|
}),
|
|
172
172
|
/* @__PURE__ */ j("button", {
|
|
173
173
|
type: "button",
|
|
174
174
|
onClick: $,
|
|
175
175
|
className: "flex items-center gap-2 text-text-secondary hover:text-text-primary transition-colors",
|
|
176
|
-
children: [/* @__PURE__ */ A(
|
|
176
|
+
children: [/* @__PURE__ */ A(S, { className: "size-4" }), I("catalog.backToCatalogs", "Back to Catalogs")]
|
|
177
177
|
}),
|
|
178
178
|
/* @__PURE__ */ A(u, {
|
|
179
179
|
title: Z.name,
|
|
180
|
-
description: Z.description ||
|
|
180
|
+
description: Z.description || I("catalog.noDescription", "No description"),
|
|
181
181
|
actions: /* @__PURE__ */ j("div", {
|
|
182
182
|
className: "flex items-center gap-2 flex-wrap",
|
|
183
183
|
children: [
|
|
184
|
-
/* @__PURE__ */ A(
|
|
184
|
+
/* @__PURE__ */ A(ee, {
|
|
185
185
|
entity: "catalog",
|
|
186
186
|
resource: {
|
|
187
187
|
id: Z.id,
|
|
188
188
|
name: Z.name
|
|
189
189
|
},
|
|
190
|
-
label:
|
|
190
|
+
label: I("catalog.share", "Share"),
|
|
191
191
|
variant: "button"
|
|
192
192
|
}),
|
|
193
193
|
/* @__PURE__ */ A("button", {
|
|
194
194
|
type: "button",
|
|
195
|
-
onClick: () =>
|
|
196
|
-
disabled:
|
|
195
|
+
onClick: () => Ce(),
|
|
196
|
+
disabled: Y,
|
|
197
197
|
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",
|
|
198
|
-
title:
|
|
199
|
-
children: /* @__PURE__ */ A(
|
|
198
|
+
title: I("common.refresh", "Refresh"),
|
|
199
|
+
children: /* @__PURE__ */ A(ue, { className: `size-4 ${Y ? "animate-spin" : ""}` })
|
|
200
200
|
}),
|
|
201
201
|
/* @__PURE__ */ A("span", {
|
|
202
202
|
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"}`,
|
|
@@ -210,19 +210,19 @@ function G() {
|
|
|
210
210
|
className: "grid grid-cols-2 sm:grid-cols-3 gap-3 sm:gap-4",
|
|
211
211
|
children: [
|
|
212
212
|
/* @__PURE__ */ A(M, { children: /* @__PURE__ */ A(g, {
|
|
213
|
-
title:
|
|
213
|
+
title: I("catalog.components", "Components"),
|
|
214
214
|
value: Z.componentCount ?? 0,
|
|
215
|
-
icon: /* @__PURE__ */ A(
|
|
215
|
+
icon: /* @__PURE__ */ A(T, { className: "size-4" })
|
|
216
216
|
}) }),
|
|
217
217
|
/* @__PURE__ */ A(M, { children: /* @__PURE__ */ A(g, {
|
|
218
|
-
title:
|
|
218
|
+
title: I("catalog.vibes", "Vibes"),
|
|
219
219
|
value: Z.vibeCount ?? 0,
|
|
220
220
|
icon: /* @__PURE__ */ A(me, { className: "size-4" })
|
|
221
221
|
}) }),
|
|
222
222
|
/* @__PURE__ */ A(M, { children: /* @__PURE__ */ A(g, {
|
|
223
|
-
title:
|
|
223
|
+
title: I("catalog.ownerName", "Owner"),
|
|
224
224
|
value: Z.ownerNameName || "Unassigned",
|
|
225
|
-
icon: /* @__PURE__ */ A(
|
|
225
|
+
icon: /* @__PURE__ */ A(w, { className: "size-4" })
|
|
226
226
|
}) })
|
|
227
227
|
]
|
|
228
228
|
}),
|
|
@@ -230,7 +230,7 @@ function G() {
|
|
|
230
230
|
className: "p-4 border-b border-border-default flex items-center gap-2",
|
|
231
231
|
children: [/* @__PURE__ */ A(fe, { className: "size-5" }), /* @__PURE__ */ A("h3", {
|
|
232
232
|
className: "font-semibold text-text-primary",
|
|
233
|
-
children:
|
|
233
|
+
children: I("catalog.tags", "Tags")
|
|
234
234
|
})]
|
|
235
235
|
}), /* @__PURE__ */ A("div", {
|
|
236
236
|
className: "p-4",
|
|
@@ -243,12 +243,12 @@ function G() {
|
|
|
243
243
|
className: "border-b border-border-default",
|
|
244
244
|
children: /* @__PURE__ */ A("nav", {
|
|
245
245
|
className: "flex gap-1 -mb-px overflow-x-auto pb-1",
|
|
246
|
-
"aria-label":
|
|
247
|
-
children:
|
|
248
|
-
let t = e.icon, n =
|
|
246
|
+
"aria-label": I("catalog.tabsAriaLabel", "Catalog tabs"),
|
|
247
|
+
children: je.map((e) => {
|
|
248
|
+
let t = e.icon, n = L === e.id;
|
|
249
249
|
return /* @__PURE__ */ j("button", {
|
|
250
250
|
type: "button",
|
|
251
|
-
onClick: () =>
|
|
251
|
+
onClick: () => R(e.id),
|
|
252
252
|
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"}`,
|
|
253
253
|
"aria-selected": n,
|
|
254
254
|
role: "tab",
|
|
@@ -267,7 +267,7 @@ function G() {
|
|
|
267
267
|
/* @__PURE__ */ j(_e, {
|
|
268
268
|
mode: "wait",
|
|
269
269
|
children: [
|
|
270
|
-
|
|
270
|
+
L === "overview" && /* @__PURE__ */ j(O.div, {
|
|
271
271
|
initial: {
|
|
272
272
|
opacity: 0,
|
|
273
273
|
y: 8
|
|
@@ -294,7 +294,7 @@ function G() {
|
|
|
294
294
|
className: "p-4 border-b border-border-default",
|
|
295
295
|
children: /* @__PURE__ */ A("h3", {
|
|
296
296
|
className: "font-semibold text-text-primary",
|
|
297
|
-
children:
|
|
297
|
+
children: I("catalog.metadata", "Metadata")
|
|
298
298
|
})
|
|
299
299
|
}), /* @__PURE__ */ A("div", {
|
|
300
300
|
className: "p-4",
|
|
@@ -303,28 +303,28 @@ function G() {
|
|
|
303
303
|
children: [
|
|
304
304
|
/* @__PURE__ */ j("div", { children: [/* @__PURE__ */ A("p", {
|
|
305
305
|
className: "text-text-secondary",
|
|
306
|
-
children:
|
|
306
|
+
children: I("catalog.ownerNameLabel", "Owner")
|
|
307
307
|
}), /* @__PURE__ */ A("p", {
|
|
308
308
|
className: "font-medium text-text-primary",
|
|
309
|
-
children: Z.ownerName ||
|
|
309
|
+
children: Z.ownerName || I("common.unset", "Unset")
|
|
310
310
|
})] }),
|
|
311
311
|
/* @__PURE__ */ j("div", { children: [/* @__PURE__ */ A("p", {
|
|
312
312
|
className: "text-text-secondary",
|
|
313
|
-
children:
|
|
313
|
+
children: I("catalog.visibility", "Visibility")
|
|
314
314
|
}), /* @__PURE__ */ A("p", {
|
|
315
315
|
className: "font-medium text-text-primary",
|
|
316
316
|
children: Z.visibility
|
|
317
317
|
})] }),
|
|
318
318
|
/* @__PURE__ */ j("div", { children: [/* @__PURE__ */ A("p", {
|
|
319
319
|
className: "text-text-secondary",
|
|
320
|
-
children:
|
|
320
|
+
children: I("common.created", "Created")
|
|
321
321
|
}), /* @__PURE__ */ A("p", {
|
|
322
322
|
className: "font-medium text-text-primary",
|
|
323
323
|
children: new Date(Z.createdAt).toLocaleDateString()
|
|
324
324
|
})] }),
|
|
325
325
|
/* @__PURE__ */ j("div", { children: [/* @__PURE__ */ A("p", {
|
|
326
326
|
className: "text-text-secondary",
|
|
327
|
-
children:
|
|
327
|
+
children: I("common.updated", "Updated")
|
|
328
328
|
}), /* @__PURE__ */ A("p", {
|
|
329
329
|
className: "font-medium text-text-primary",
|
|
330
330
|
children: new Date(Z.updatedAt).toLocaleDateString()
|
|
@@ -336,7 +336,7 @@ function G() {
|
|
|
336
336
|
className: "p-4",
|
|
337
337
|
children: [/* @__PURE__ */ A("h3", {
|
|
338
338
|
className: "font-semibold text-text-primary mb-3",
|
|
339
|
-
children:
|
|
339
|
+
children: I("catalog.tags", "Tags")
|
|
340
340
|
}), /* @__PURE__ */ A("div", {
|
|
341
341
|
className: "flex flex-wrap gap-2",
|
|
342
342
|
children: Z.tags.map((e) => /* @__PURE__ */ A("span", {
|
|
@@ -347,7 +347,7 @@ function G() {
|
|
|
347
347
|
}) })
|
|
348
348
|
]
|
|
349
349
|
}, "overview"),
|
|
350
|
-
|
|
350
|
+
L === "components" && /* @__PURE__ */ j(O.div, {
|
|
351
351
|
initial: {
|
|
352
352
|
opacity: 0,
|
|
353
353
|
y: 8
|
|
@@ -369,32 +369,32 @@ function G() {
|
|
|
369
369
|
children: [
|
|
370
370
|
Q.length,
|
|
371
371
|
" ",
|
|
372
|
-
|
|
372
|
+
I("catalog.componentsInCatalog", "components in this catalog")
|
|
373
373
|
]
|
|
374
|
-
}), /* @__PURE__ */ j("button", {
|
|
374
|
+
}), k && F && /* @__PURE__ */ j("button", {
|
|
375
375
|
type: "button",
|
|
376
|
-
onClick: () =>
|
|
376
|
+
onClick: () => H(!0),
|
|
377
377
|
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",
|
|
378
|
-
children: [/* @__PURE__ */ A(
|
|
378
|
+
children: [/* @__PURE__ */ A(D, { className: "size-4" }), I("catalog.addComponent", "Add Component")]
|
|
379
379
|
})]
|
|
380
380
|
}), Q.length > 0 ? /* @__PURE__ */ A(N, {
|
|
381
381
|
stagger: .04,
|
|
382
382
|
className: "grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-4",
|
|
383
|
-
children: Q.map((e) => /* @__PURE__ */ A(M, { children: /* @__PURE__ */ A(
|
|
383
|
+
children: Q.map((e) => /* @__PURE__ */ A(M, { children: /* @__PURE__ */ A(ae, {
|
|
384
384
|
component: e,
|
|
385
|
-
onOpen:
|
|
385
|
+
onOpen: Oe
|
|
386
386
|
}) }, e.id))
|
|
387
387
|
}) : /* @__PURE__ */ A(m, {
|
|
388
|
-
icon: /* @__PURE__ */ A(
|
|
389
|
-
title:
|
|
390
|
-
description:
|
|
388
|
+
icon: /* @__PURE__ */ A(T, { className: "size-8 text-text-secondary" }),
|
|
389
|
+
title: I("catalog.noComponents", "No components"),
|
|
390
|
+
description: I("catalog.noComponentsDescription", "Add components to this catalog to track them")
|
|
391
391
|
})]
|
|
392
392
|
}, "components"),
|
|
393
|
-
|
|
393
|
+
L === "dependency-graph" && /* @__PURE__ */ A(be, {
|
|
394
394
|
catalogId: i || "",
|
|
395
|
-
tr:
|
|
395
|
+
tr: I
|
|
396
396
|
}),
|
|
397
|
-
|
|
397
|
+
L === "scorecard" && /* @__PURE__ */ A(O.div, {
|
|
398
398
|
initial: {
|
|
399
399
|
opacity: 0,
|
|
400
400
|
y: 8
|
|
@@ -409,12 +409,12 @@ function G() {
|
|
|
409
409
|
},
|
|
410
410
|
transition: { duration: .2 },
|
|
411
411
|
className: "space-y-6",
|
|
412
|
-
children: /* @__PURE__ */ A(
|
|
412
|
+
children: /* @__PURE__ */ A(ie, {
|
|
413
413
|
ownerType: "CATALOG",
|
|
414
414
|
ownerId: i || ""
|
|
415
415
|
})
|
|
416
416
|
}, "scorecard"),
|
|
417
|
-
|
|
417
|
+
L === "docs" && /* @__PURE__ */ A(O.div, {
|
|
418
418
|
initial: {
|
|
419
419
|
opacity: 0,
|
|
420
420
|
y: 8
|
|
@@ -429,12 +429,12 @@ function G() {
|
|
|
429
429
|
},
|
|
430
430
|
transition: { duration: .2 },
|
|
431
431
|
className: "space-y-6",
|
|
432
|
-
children: /* @__PURE__ */ A(
|
|
432
|
+
children: /* @__PURE__ */ A(re, {
|
|
433
433
|
ownerType: "CATALOG",
|
|
434
434
|
ownerId: i || ""
|
|
435
435
|
})
|
|
436
436
|
}, "docs"),
|
|
437
|
-
|
|
437
|
+
L === "settings" && /* @__PURE__ */ A(O.div, {
|
|
438
438
|
initial: {
|
|
439
439
|
opacity: 0,
|
|
440
440
|
y: 8
|
|
@@ -450,37 +450,37 @@ function G() {
|
|
|
450
450
|
transition: { duration: .2 },
|
|
451
451
|
children: /* @__PURE__ */ j("div", {
|
|
452
452
|
className: "space-y-4",
|
|
453
|
-
children: [/* @__PURE__ */ j(h, {
|
|
453
|
+
children: [k && /* @__PURE__ */ j(h, {
|
|
454
454
|
padding: "lg",
|
|
455
455
|
children: [/* @__PURE__ */ A("h3", {
|
|
456
456
|
className: "font-semibold text-text-primary mb-4",
|
|
457
|
-
children:
|
|
457
|
+
children: I("catalog.editCatalog", "Edit Catalog")
|
|
458
458
|
}), /* @__PURE__ */ A("button", {
|
|
459
459
|
type: "button",
|
|
460
|
-
onClick: () =>
|
|
460
|
+
onClick: () => B(!0),
|
|
461
461
|
className: "px-4 py-2 bg-action-primary-bg text-action-primary-text rounded-md hover:bg-action-primary-bg-hover transition-colors",
|
|
462
|
-
children:
|
|
462
|
+
children: I("catalog.editDetails", "Edit Details")
|
|
463
463
|
})]
|
|
464
|
-
}), /* @__PURE__ */ j(h, {
|
|
464
|
+
}), ve && /* @__PURE__ */ j(h, {
|
|
465
465
|
padding: "lg",
|
|
466
466
|
children: [
|
|
467
467
|
/* @__PURE__ */ A("h3", {
|
|
468
468
|
className: "font-semibold text-status-error-text mb-2",
|
|
469
|
-
children:
|
|
469
|
+
children: I("catalog.dangerZone", "Danger Zone")
|
|
470
470
|
}),
|
|
471
471
|
/* @__PURE__ */ A("p", {
|
|
472
472
|
className: "text-sm text-text-secondary mb-4",
|
|
473
|
-
children:
|
|
473
|
+
children: I("catalog.deleteWarning", "Deleting this catalog will detach all components and vibes. This cannot be undone.")
|
|
474
474
|
}),
|
|
475
475
|
/* @__PURE__ */ j("button", {
|
|
476
476
|
type: "button",
|
|
477
477
|
"data-testid": "catalog-delete-button",
|
|
478
|
-
onClick: () =>
|
|
478
|
+
onClick: () => W(!0),
|
|
479
479
|
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",
|
|
480
480
|
children: [/* @__PURE__ */ A(pe, {
|
|
481
481
|
className: "size-4",
|
|
482
482
|
"aria-hidden": "true"
|
|
483
|
-
}),
|
|
483
|
+
}), I("catalog.deleteCatalog", "Delete Catalog")]
|
|
484
484
|
})
|
|
485
485
|
]
|
|
486
486
|
})]
|
|
@@ -488,10 +488,10 @@ function G() {
|
|
|
488
488
|
}, "settings")
|
|
489
489
|
]
|
|
490
490
|
}),
|
|
491
|
-
/* @__PURE__ */ A(
|
|
492
|
-
isOpen:
|
|
493
|
-
onClose: () =>
|
|
494
|
-
onSubmit:
|
|
491
|
+
k && /* @__PURE__ */ A(oe, {
|
|
492
|
+
isOpen: z,
|
|
493
|
+
onClose: () => B(!1),
|
|
494
|
+
onSubmit: ke,
|
|
495
495
|
initialData: {
|
|
496
496
|
name: Z.name,
|
|
497
497
|
description: Z.description || "",
|
|
@@ -499,29 +499,29 @@ function G() {
|
|
|
499
499
|
owner: Z.ownerName || "",
|
|
500
500
|
tags: Z.tags || []
|
|
501
501
|
},
|
|
502
|
-
title:
|
|
502
|
+
title: I("catalog.editCatalog", "Edit Catalog")
|
|
503
503
|
}),
|
|
504
|
-
|
|
504
|
+
V && k && F && /* @__PURE__ */ A(xe, {
|
|
505
505
|
catalogId: i || "",
|
|
506
506
|
existingComponentIds: Q.map((e) => e.id),
|
|
507
507
|
onAdd: async (e) => {
|
|
508
|
-
await
|
|
508
|
+
await Ee({ variables: {
|
|
509
509
|
catalogId: i,
|
|
510
510
|
componentId: e
|
|
511
|
-
} }),
|
|
511
|
+
} }), J(I("catalog.componentAdded", "Component added to catalog")), setTimeout(() => J(null), 3e3), H(!1);
|
|
512
512
|
},
|
|
513
|
-
onClose: () =>
|
|
514
|
-
tr:
|
|
513
|
+
onClose: () => H(!1),
|
|
514
|
+
tr: I
|
|
515
515
|
}),
|
|
516
516
|
/* @__PURE__ */ A(c, {
|
|
517
|
-
isOpen:
|
|
518
|
-
onClose: () =>
|
|
519
|
-
onConfirm:
|
|
520
|
-
title:
|
|
521
|
-
message:
|
|
522
|
-
confirmLabel:
|
|
517
|
+
isOpen: U,
|
|
518
|
+
onClose: () => W(!1),
|
|
519
|
+
onConfirm: Ae,
|
|
520
|
+
title: I("catalog.deleteCatalog", "Delete Catalog"),
|
|
521
|
+
message: I("catalog.deleteConfirmMessage", `Are you sure you want to delete "${Z.name}"? This action cannot be undone.`),
|
|
522
|
+
confirmLabel: I("common.delete", "Delete"),
|
|
523
523
|
variant: "danger",
|
|
524
|
-
isLoading:
|
|
524
|
+
isLoading: G
|
|
525
525
|
})
|
|
526
526
|
]
|
|
527
527
|
}) : /* @__PURE__ */ j(P, {
|
|
@@ -530,25 +530,25 @@ function G() {
|
|
|
530
530
|
type: "button",
|
|
531
531
|
onClick: $,
|
|
532
532
|
className: "flex items-center gap-2 text-text-secondary hover:text-text-primary transition-colors",
|
|
533
|
-
children: [/* @__PURE__ */ A(
|
|
533
|
+
children: [/* @__PURE__ */ A(S, { className: "size-4" }), I("catalog.backToCatalogs", "Back to Catalogs")]
|
|
534
534
|
}), /* @__PURE__ */ A(m, {
|
|
535
|
-
icon: /* @__PURE__ */ A(
|
|
536
|
-
title:
|
|
535
|
+
icon: /* @__PURE__ */ A(w, { className: "size-8 text-text-secondary" }),
|
|
536
|
+
title: I("catalog.notFound", "Catalog not found"),
|
|
537
537
|
description: `No catalog with ID "${i}" exists`,
|
|
538
538
|
action: /* @__PURE__ */ A("button", {
|
|
539
539
|
type: "button",
|
|
540
540
|
onClick: $,
|
|
541
541
|
className: "px-4 py-2 bg-action-primary-bg text-action-primary-text rounded-md hover:bg-action-primary-bg-hover transition-colors",
|
|
542
|
-
children:
|
|
542
|
+
children: I("catalog.backToCatalogs", "Back to Catalogs")
|
|
543
543
|
})
|
|
544
544
|
})]
|
|
545
545
|
});
|
|
546
546
|
}
|
|
547
|
-
function
|
|
547
|
+
function G({ data: e }) {
|
|
548
548
|
return /* @__PURE__ */ j(k, { children: [
|
|
549
|
-
/* @__PURE__ */ A(
|
|
549
|
+
/* @__PURE__ */ A(L, {
|
|
550
550
|
type: "target",
|
|
551
|
-
position:
|
|
551
|
+
position: z.Left,
|
|
552
552
|
style: {
|
|
553
553
|
width: 8,
|
|
554
554
|
height: 8,
|
|
@@ -556,9 +556,9 @@ function K({ data: e }) {
|
|
|
556
556
|
}
|
|
557
557
|
}),
|
|
558
558
|
/* @__PURE__ */ A("div", { children: e.label }),
|
|
559
|
-
/* @__PURE__ */ A(
|
|
559
|
+
/* @__PURE__ */ A(L, {
|
|
560
560
|
type: "source",
|
|
561
|
-
position:
|
|
561
|
+
position: z.Right,
|
|
562
562
|
style: {
|
|
563
563
|
width: 8,
|
|
564
564
|
height: 8,
|
|
@@ -567,8 +567,8 @@ function K({ data: e }) {
|
|
|
567
567
|
})
|
|
568
568
|
] });
|
|
569
569
|
}
|
|
570
|
-
var
|
|
571
|
-
function
|
|
570
|
+
var K = { catalog: G };
|
|
571
|
+
function q(e, t) {
|
|
572
572
|
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));
|
|
573
573
|
return {
|
|
574
574
|
nodes: e.map((e, t) => {
|
|
@@ -639,7 +639,7 @@ function J(e, t) {
|
|
|
639
639
|
target: r.get(e.target),
|
|
640
640
|
label: e.version || void 0,
|
|
641
641
|
animated: e.dependencyType !== "dev",
|
|
642
|
-
markerEnd: { type:
|
|
642
|
+
markerEnd: { type: R.ArrowClosed },
|
|
643
643
|
style: {
|
|
644
644
|
stroke: "var(--color-border-strong)",
|
|
645
645
|
strokeWidth: 1.5,
|
|
@@ -656,10 +656,10 @@ function J(e, t) {
|
|
|
656
656
|
}))
|
|
657
657
|
};
|
|
658
658
|
}
|
|
659
|
-
function
|
|
660
|
-
let { nodes: i, edges: a } =
|
|
661
|
-
|
|
662
|
-
let { nodes: n, edges: r } =
|
|
659
|
+
function J({ graphNodes: e, graphEdges: t, onComponentClick: n, onConnect: r }) {
|
|
660
|
+
let { nodes: i, edges: a } = b(() => q(e, t), [e, t]), [o, s, c] = U(i), [l, u, d] = H(a);
|
|
661
|
+
y(() => {
|
|
662
|
+
let { nodes: n, edges: r } = q(e, t);
|
|
663
663
|
s(n), u(r);
|
|
664
664
|
}, [
|
|
665
665
|
e,
|
|
@@ -667,13 +667,13 @@ function Y({ graphNodes: e, graphEdges: t, onComponentClick: n, onConnect: r })
|
|
|
667
667
|
s,
|
|
668
668
|
u
|
|
669
669
|
]);
|
|
670
|
-
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 =
|
|
670
|
+
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) => {
|
|
671
671
|
n?.(t.id);
|
|
672
|
-
}, [n]), h =
|
|
673
|
-
!e.source || !e.target || (u((t) =>
|
|
672
|
+
}, [n]), h = v((e) => {
|
|
673
|
+
!e.source || !e.target || (u((t) => V({
|
|
674
674
|
...e,
|
|
675
675
|
animated: !0,
|
|
676
|
-
markerEnd: { type:
|
|
676
|
+
markerEnd: { type: R.ArrowClosed },
|
|
677
677
|
style: {
|
|
678
678
|
stroke: "var(--color-border-strong)",
|
|
679
679
|
strokeWidth: 1.5
|
|
@@ -686,14 +686,14 @@ function Y({ graphNodes: e, graphEdges: t, onComponentClick: n, onConnect: r })
|
|
|
686
686
|
height: p,
|
|
687
687
|
background: "var(--color-bg-secondary)"
|
|
688
688
|
},
|
|
689
|
-
children: /* @__PURE__ */ j(
|
|
689
|
+
children: /* @__PURE__ */ j(B, {
|
|
690
690
|
nodes: o,
|
|
691
691
|
edges: l,
|
|
692
692
|
onNodesChange: c,
|
|
693
693
|
onEdgesChange: d,
|
|
694
694
|
onNodeClick: m,
|
|
695
695
|
onConnect: h,
|
|
696
|
-
nodeTypes:
|
|
696
|
+
nodeTypes: K,
|
|
697
697
|
fitView: !0,
|
|
698
698
|
fitViewOptions: { padding: .25 },
|
|
699
699
|
minZoom: .15,
|
|
@@ -702,12 +702,12 @@ function Y({ graphNodes: e, graphEdges: t, onComponentClick: n, onConnect: r })
|
|
|
702
702
|
panOnScroll: !1,
|
|
703
703
|
zoomOnScroll: !0,
|
|
704
704
|
proOptions: { hideAttribution: !0 },
|
|
705
|
-
children: [/* @__PURE__ */ A(
|
|
706
|
-
variant:
|
|
705
|
+
children: [/* @__PURE__ */ A(ve, {
|
|
706
|
+
variant: F.Dots,
|
|
707
707
|
gap: 20,
|
|
708
708
|
size: 1,
|
|
709
709
|
className: "!fill-text-tertiary/10"
|
|
710
|
-
}), /* @__PURE__ */ A(
|
|
710
|
+
}), /* @__PURE__ */ A(I, {
|
|
711
711
|
showInteractive: !1,
|
|
712
712
|
style: {
|
|
713
713
|
background: "var(--color-bg-primary)",
|
|
@@ -719,12 +719,12 @@ function Y({ graphNodes: e, graphEdges: t, onComponentClick: n, onConnect: r })
|
|
|
719
719
|
})
|
|
720
720
|
});
|
|
721
721
|
}
|
|
722
|
-
function
|
|
722
|
+
function be({ catalogId: e, tr: t }) {
|
|
723
723
|
let r = l(), { data: i, loading: a, error: o, refetch: c } = n({
|
|
724
724
|
variables: { catalogId: e },
|
|
725
725
|
skip: !e,
|
|
726
726
|
fetchPolicy: "cache-and-network"
|
|
727
|
-
}), [u] = s(), p = i?.vibecontrolsCatalogDependencyGraph, g =
|
|
727
|
+
}), [u] = s(), p = i?.vibecontrolsCatalogDependencyGraph, g = v(async (e, t) => {
|
|
728
728
|
if (!p) return;
|
|
729
729
|
let n = p.nodes.find((e) => e.id === t);
|
|
730
730
|
if (!n) return;
|
|
@@ -772,14 +772,14 @@ function ye({ catalogId: e, tr: t }) {
|
|
|
772
772
|
className: "flex items-center justify-between",
|
|
773
773
|
children: [/* @__PURE__ */ j("h3", {
|
|
774
774
|
className: "font-semibold text-text-primary flex items-center gap-2",
|
|
775
|
-
children: [/* @__PURE__ */ A(
|
|
775
|
+
children: [/* @__PURE__ */ A(E, { className: "size-5" }), t("catalog.dependencyGraph", "Dependency Graph")]
|
|
776
776
|
}), /* @__PURE__ */ A("button", {
|
|
777
777
|
type: "button",
|
|
778
778
|
onClick: () => c(),
|
|
779
779
|
disabled: a,
|
|
780
780
|
className: "p-2 text-text-secondary hover:bg-bg-sunken rounded-md transition-colors disabled:opacity-50",
|
|
781
781
|
title: t("common.refresh", "Refresh"),
|
|
782
|
-
children: /* @__PURE__ */ A(
|
|
782
|
+
children: /* @__PURE__ */ A(ue, { className: `size-4 ${a ? "animate-spin" : ""}` })
|
|
783
783
|
})]
|
|
784
784
|
}),
|
|
785
785
|
a && !p && /* @__PURE__ */ A(d, { message: t("catalog.loadingGraph", "Loading dependency graph...") }),
|
|
@@ -789,7 +789,7 @@ function ye({ catalogId: e, tr: t }) {
|
|
|
789
789
|
onRetry: () => c()
|
|
790
790
|
}),
|
|
791
791
|
p && p.nodes.length === 0 && /* @__PURE__ */ A(m, {
|
|
792
|
-
icon: /* @__PURE__ */ A(
|
|
792
|
+
icon: /* @__PURE__ */ A(E, { className: "size-8 text-text-secondary" }),
|
|
793
793
|
title: t("catalog.noGraphNodes", "No components in catalog"),
|
|
794
794
|
description: t("catalog.noGraphNodesDesc", "Add components to this catalog to visualize the dependency graph")
|
|
795
795
|
}),
|
|
@@ -816,7 +816,7 @@ function ye({ catalogId: e, tr: t }) {
|
|
|
816
816
|
})]
|
|
817
817
|
})]
|
|
818
818
|
}),
|
|
819
|
-
/* @__PURE__ */ A(
|
|
819
|
+
/* @__PURE__ */ A(J, {
|
|
820
820
|
graphNodes: p.nodes,
|
|
821
821
|
graphEdges: p.edges,
|
|
822
822
|
onComponentClick: (e) => r(`/components/${e}`),
|
|
@@ -841,7 +841,7 @@ function ye({ catalogId: e, tr: t }) {
|
|
|
841
841
|
className: "font-medium text-text-primary truncate max-w-[120px]",
|
|
842
842
|
children: p.nodes.find((t) => t.id === e.source)?.name || e.source
|
|
843
843
|
}),
|
|
844
|
-
/* @__PURE__ */ A(
|
|
844
|
+
/* @__PURE__ */ A(C, { className: "size-4 text-text-muted flex-shrink-0" }),
|
|
845
845
|
/* @__PURE__ */ A("span", {
|
|
846
846
|
className: "text-text-primary truncate max-w-[120px]",
|
|
847
847
|
children: p.nodes.find((t) => t.id === e.target)?.name || e.target
|
|
@@ -861,8 +861,8 @@ function ye({ catalogId: e, tr: t }) {
|
|
|
861
861
|
]
|
|
862
862
|
}, "dependency-graph");
|
|
863
863
|
}
|
|
864
|
-
function
|
|
865
|
-
let [o, s] =
|
|
864
|
+
function xe({ catalogId: e, existingComponentIds: t, onAdd: n, onClose: r, tr: a }) {
|
|
865
|
+
let [o, s] = x(!1), [c, l] = x(""), { data: u, loading: f } = i({ fetchPolicy: "cache-and-network" }), p = b(() => {
|
|
866
866
|
let e = (u?.vibecontrolsComponents?.items ?? []).filter((e) => !t.includes(e.id));
|
|
867
867
|
if (!c) return e;
|
|
868
868
|
let n = c.toLowerCase();
|
|
@@ -932,7 +932,7 @@ function X({ catalogId: e, existingComponentIds: t, onAdd: n, onClose: r, tr: a
|
|
|
932
932
|
" · ",
|
|
933
933
|
e.lifecycle
|
|
934
934
|
]
|
|
935
|
-
})] }), /* @__PURE__ */ A(
|
|
935
|
+
})] }), /* @__PURE__ */ A(D, { className: "size-4 text-text-secondary" })]
|
|
936
936
|
}, e.id))
|
|
937
937
|
]
|
|
938
938
|
}),
|
|
@@ -950,6 +950,6 @@ function X({ catalogId: e, existingComponentIds: t, onAdd: n, onClose: r, tr: a
|
|
|
950
950
|
});
|
|
951
951
|
}
|
|
952
952
|
//#endregion
|
|
953
|
-
export {
|
|
953
|
+
export { W as CatalogDetailPage };
|
|
954
954
|
|
|
955
955
|
//# sourceMappingURL=CatalogDetailPage.js.map
|