@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.
Files changed (62) hide show
  1. package/dist/components/agents/AgentConnectionRecovery.js +100 -94
  2. package/dist/components/agents/AgentConnectionRecovery.js.map +1 -1
  3. package/dist/components/agents/AgentMaintenanceTab.js +177 -160
  4. package/dist/components/agents/AgentMaintenanceTab.js.map +1 -1
  5. package/dist/components/agents/OpenInBrowserEditorButton.js +102 -94
  6. package/dist/components/agents/OpenInBrowserEditorButton.js.map +1 -1
  7. package/dist/components/assistant/AssistantChatArea.js +1 -0
  8. package/dist/components/assistant/AssistantChatArea.js.map +1 -1
  9. package/dist/components/assistant/AssistantModeSelector.js +20 -19
  10. package/dist/components/assistant/AssistantModeSelector.js.map +1 -1
  11. package/dist/components/tunnels/TunnelCard.js +3 -3
  12. package/dist/components/tunnels/TunnelCard.js.map +1 -1
  13. package/dist/components/tunnels/TunnelPublicAccessPanel.js +36 -36
  14. package/dist/components/tunnels/TunnelPublicAccessPanel.js.map +1 -1
  15. package/dist/config/assistantUsecases.js +11 -0
  16. package/dist/config/assistantUsecases.js.map +1 -1
  17. package/dist/constants/permissions.js +38 -6
  18. package/dist/constants/permissions.js.map +1 -1
  19. package/dist/index.js +4 -3
  20. package/dist/pages/CatalogDetailPage.js +155 -155
  21. package/dist/pages/CatalogDetailPage.js.map +1 -1
  22. package/dist/pages/CatalogPage.js +110 -109
  23. package/dist/pages/CatalogPage.js.map +1 -1
  24. package/dist/pages/ComponentDetailPage.js +338 -338
  25. package/dist/pages/ComponentDetailPage.js.map +1 -1
  26. package/dist/pages/ComponentsPage.js +104 -103
  27. package/dist/pages/ComponentsPage.js.map +1 -1
  28. package/dist/pages/TargetDetailsPage.js +140 -132
  29. package/dist/pages/TargetDetailsPage.js.map +1 -1
  30. package/dist/pages/TemplateDetailPage.js +201 -199
  31. package/dist/pages/TemplateDetailPage.js.map +1 -1
  32. package/dist/pages/TemplatesPage.js +62 -61
  33. package/dist/pages/TemplatesPage.js.map +1 -1
  34. package/dist/pages/VibeDetailsPage.js +568 -555
  35. package/dist/pages/VibeDetailsPage.js.map +1 -1
  36. package/dist/pages/ai/AIBookmarksPage.js +104 -89
  37. package/dist/pages/ai/AIBookmarksPage.js.map +1 -1
  38. package/dist/pages/ai/AIPage.js +116 -107
  39. package/dist/pages/ai/AIPage.js.map +1 -1
  40. package/dist/pages/ai/AISessionDetailPage.js +46 -34
  41. package/dist/pages/ai/AISessionDetailPage.js.map +1 -1
  42. package/dist/pages/ai/AgentManagerPage.js +112 -100
  43. package/dist/pages/ai/AgentManagerPage.js.map +1 -1
  44. package/dist/pages/tunnels/TunnelDetailsPage.js +177 -153
  45. package/dist/pages/tunnels/TunnelDetailsPage.js.map +1 -1
  46. package/dist/pages/tunnels/TunnelsTab.js +119 -111
  47. package/dist/pages/tunnels/TunnelsTab.js.map +1 -1
  48. package/dist/pages/tunnels/tabs/TunnelDomainsTab.js +24 -24
  49. package/dist/pages/tunnels/tabs/TunnelDomainsTab.js.map +1 -1
  50. package/dist/pages/tunnels/tabs/TunnelOverviewTab.js +9 -8
  51. package/dist/pages/tunnels/tabs/TunnelOverviewTab.js.map +1 -1
  52. package/dist/pages/tunnels/tabs/TunnelSessionsTab.js +13 -13
  53. package/dist/pages/tunnels/tabs/TunnelSessionsTab.js.map +1 -1
  54. package/dist/pages/tunnels/tabs/TunnelSettingsTab.js +19 -15
  55. package/dist/pages/tunnels/tabs/TunnelSettingsTab.js.map +1 -1
  56. package/dist/services/assistantApi.js +9 -3
  57. package/dist/services/assistantApi.js.map +1 -1
  58. package/dist/services/createSandboxAssistantTransport.js +120 -0
  59. package/dist/services/createSandboxAssistantTransport.js.map +1 -0
  60. package/dist/store/assistantStore.js +1 -1
  61. package/dist/store/assistantStore.js.map +1 -1
  62. 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 ee } from "../constants/permissions.js";
13
- import { EntityShareButton as te } from "../components/sharing/EntityShareButton.js";
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 ne } from "../components/shared/PageSkeleton.js";
16
- import { useQueryBackedTab as re } from "../hooks/useQueryBackedTab.js";
17
- import { DocsTabPanel as ie } from "../components/docs/DocsTabPanel.js";
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 ae } from "../components/scorecard/ScorecardPanel.js";
19
+ import { ScorecardPanel as ie } from "../components/scorecard/ScorecardPanel.js";
20
20
  import "../components/scorecard/index.js";
21
- import { ComponentCard as oe } from "../components/idp-components/ComponentCard.js";
21
+ import { ComponentCard as ae } from "../components/idp-components/ComponentCard.js";
22
22
  import "../components/idp-components/index.js";
23
- import { CatalogForm as se } from "../components/catalog/CatalogForm.js";
23
+ import { CatalogForm as oe } from "../components/catalog/CatalogForm.js";
24
24
  import "../components/catalog/index.js";
25
- import { useCallback as _, useEffect as v, useMemo as y, useState as b } from "react";
26
- import { useI18n as ce } from "@burdenoff/fe-libs/shared/providers/shell/I18nProvider";
27
- import { ArrowLeft as x, ArrowRight as S, BarChart3 as le, BookOpen as C, FileText as ue, Layers as w, Network as T, Plus as E, RefreshCw as D, Settings as de, Tag as fe, Trash2 as pe, Zap as me } from "lucide-react";
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 F, BackgroundVariant as I, Controls as L, Handle as R, MarkerType as z, Position as B, ReactFlow as V, addEdge as H, useEdgesState as U, useNodesState as W } from "@xyflow/react";
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 ve = [
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 G() {
45
- let { t: n } = ce(), { id: i } = he(), s = l(), { hasPermission: d, isLoading: v } = ge(), S = _((e, t) => {
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]), [k, F] = re(ve, "overview"), [I, L] = b(!1), [R, z] = b(!1), [B, V] = b(!1), [H, U] = b(!1), [W, G] = b(null), { data: K, loading: q, error: J, refetch: Y } = r({
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
- }), [be] = o({ refetchQueries: ["GetCatalog"] }), [xe] = t({ refetchQueries: ["ListCatalogs"] }), [Se] = e({ refetchQueries: ["GetCatalog"] }), [Ce] = a({ refetchQueries: ["GetCatalog"] }), Z = K?.vibecontrolsCatalog ?? null, Q = y(() => (Z?.components ?? []).map((e) => {
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 (v) return /* @__PURE__ */ A("div", {
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 (!d(ee.VIBE_READ)) return /* @__PURE__ */ A("div", {
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
- }, we = (e) => {
90
+ }, Oe = (e) => {
91
91
  s(`/components/${e.id}`);
92
- }, Te = async (e) => {
93
- i && (await be({ variables: {
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
- } }), G(S("catalog.updatedSuccess", "Catalog updated successfully")), setTimeout(() => G(null), 3e3));
103
- }, Ee = async () => {
102
+ } }), J(I("catalog.updatedSuccess", "Catalog updated successfully")), setTimeout(() => J(null), 3e3));
103
+ }, Ae = async () => {
104
104
  if (i) {
105
- U(!0);
105
+ K(!0);
106
106
  try {
107
- await xe({ variables: { id: i } }), V(!1), s("/catalogs");
107
+ await Te({ variables: { id: i } }), W(!1), s("/catalogs");
108
108
  } finally {
109
- U(!1);
109
+ K(!1);
110
110
  }
111
111
  }
112
- }, De = [
112
+ }, je = [
113
113
  {
114
114
  id: "overview",
115
- label: S("nav.overview", "Overview"),
116
- icon: C
115
+ label: I("nav.overview", "Overview"),
116
+ icon: w
117
117
  },
118
118
  {
119
119
  id: "components",
120
- label: S("catalog.components", "Components"),
121
- icon: w,
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: S("catalog.dependencyGraph", "Dependency Graph"),
127
- icon: T
126
+ label: I("catalog.dependencyGraph", "Dependency Graph"),
127
+ icon: E
128
128
  },
129
129
  {
130
130
  id: "scorecard",
131
- label: S("catalog.scorecard", "Scorecard"),
132
- icon: le
131
+ label: I("catalog.scorecard", "Scorecard"),
132
+ icon: ce
133
133
  },
134
134
  {
135
135
  id: "docs",
136
- label: S("catalog.docs", "Docs"),
137
- icon: ue
136
+ label: I("catalog.docs", "Docs"),
137
+ icon: le
138
138
  },
139
139
  {
140
140
  id: "settings",
141
- label: S("common.settings", "Settings"),
141
+ label: I("common.settings", "Settings"),
142
142
  icon: de
143
143
  }
144
144
  ];
145
- return q && !Z ? /* @__PURE__ */ j(P, {
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(x, { className: "size-4" }), S("catalog.backToCatalogs", "Back to Catalogs")]
152
- }), /* @__PURE__ */ A(ne, { variant: "detail" })]
153
- }) : J && !Z ? /* @__PURE__ */ j(P, {
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(x, { className: "size-4" }), S("catalog.backToCatalogs", "Back to Catalogs")]
159
+ children: [/* @__PURE__ */ A(S, { className: "size-4" }), I("catalog.backToCatalogs", "Back to Catalogs")]
160
160
  }), /* @__PURE__ */ A(f, {
161
- title: S("catalog.failedLoad", "Failed to load catalog"),
162
- message: J.message,
163
- onRetry: () => Y()
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
- W && /* @__PURE__ */ A("div", {
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: W
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(x, { className: "size-4" }), S("catalog.backToCatalogs", "Back to Catalogs")]
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 || S("catalog.noDescription", "No 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(te, {
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: S("catalog.share", "Share"),
190
+ label: I("catalog.share", "Share"),
191
191
  variant: "button"
192
192
  }),
193
193
  /* @__PURE__ */ A("button", {
194
194
  type: "button",
195
- onClick: () => Y(),
196
- disabled: q,
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: S("common.refresh", "Refresh"),
199
- children: /* @__PURE__ */ A(D, { className: `size-4 ${q ? "animate-spin" : ""}` })
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: S("catalog.components", "Components"),
213
+ title: I("catalog.components", "Components"),
214
214
  value: Z.componentCount ?? 0,
215
- icon: /* @__PURE__ */ A(w, { className: "size-4" })
215
+ icon: /* @__PURE__ */ A(T, { className: "size-4" })
216
216
  }) }),
217
217
  /* @__PURE__ */ A(M, { children: /* @__PURE__ */ A(g, {
218
- title: S("catalog.vibes", "Vibes"),
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: S("catalog.ownerName", "Owner"),
223
+ title: I("catalog.ownerName", "Owner"),
224
224
  value: Z.ownerNameName || "Unassigned",
225
- icon: /* @__PURE__ */ A(C, { className: "size-4" })
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: S("catalog.tags", "Tags")
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": S("catalog.tabsAriaLabel", "Catalog tabs"),
247
- children: De.map((e) => {
248
- let t = e.icon, n = k === e.id;
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: () => F(e.id),
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
- k === "overview" && /* @__PURE__ */ j(O.div, {
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: S("catalog.metadata", "Metadata")
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: S("catalog.ownerNameLabel", "Owner")
306
+ children: I("catalog.ownerNameLabel", "Owner")
307
307
  }), /* @__PURE__ */ A("p", {
308
308
  className: "font-medium text-text-primary",
309
- children: Z.ownerName || S("common.unset", "Unset")
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: S("catalog.visibility", "Visibility")
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: S("common.created", "Created")
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: S("common.updated", "Updated")
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: S("catalog.tags", "Tags")
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
- k === "components" && /* @__PURE__ */ j(O.div, {
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
- S("catalog.componentsInCatalog", "components in this catalog")
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: () => z(!0),
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(E, { className: "size-4" }), S("catalog.addComponent", "Add Component")]
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(oe, {
383
+ children: Q.map((e) => /* @__PURE__ */ A(M, { children: /* @__PURE__ */ A(ae, {
384
384
  component: e,
385
- onOpen: we
385
+ onOpen: Oe
386
386
  }) }, e.id))
387
387
  }) : /* @__PURE__ */ A(m, {
388
- icon: /* @__PURE__ */ A(w, { className: "size-8 text-text-secondary" }),
389
- title: S("catalog.noComponents", "No components"),
390
- description: S("catalog.noComponentsDescription", "Add components to this catalog to track them")
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
- k === "dependency-graph" && /* @__PURE__ */ A(ye, {
393
+ L === "dependency-graph" && /* @__PURE__ */ A(be, {
394
394
  catalogId: i || "",
395
- tr: S
395
+ tr: I
396
396
  }),
397
- k === "scorecard" && /* @__PURE__ */ A(O.div, {
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(ae, {
412
+ children: /* @__PURE__ */ A(ie, {
413
413
  ownerType: "CATALOG",
414
414
  ownerId: i || ""
415
415
  })
416
416
  }, "scorecard"),
417
- k === "docs" && /* @__PURE__ */ A(O.div, {
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(ie, {
432
+ children: /* @__PURE__ */ A(re, {
433
433
  ownerType: "CATALOG",
434
434
  ownerId: i || ""
435
435
  })
436
436
  }, "docs"),
437
- k === "settings" && /* @__PURE__ */ A(O.div, {
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: S("catalog.editCatalog", "Edit Catalog")
457
+ children: I("catalog.editCatalog", "Edit Catalog")
458
458
  }), /* @__PURE__ */ A("button", {
459
459
  type: "button",
460
- onClick: () => L(!0),
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: S("catalog.editDetails", "Edit Details")
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: S("catalog.dangerZone", "Danger Zone")
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: S("catalog.deleteWarning", "Deleting this catalog will detach all components and vibes. This cannot be undone.")
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: () => V(!0),
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
- }), S("catalog.deleteCatalog", "Delete Catalog")]
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(se, {
492
- isOpen: I,
493
- onClose: () => L(!1),
494
- onSubmit: Te,
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: S("catalog.editCatalog", "Edit Catalog")
502
+ title: I("catalog.editCatalog", "Edit Catalog")
503
503
  }),
504
- R && /* @__PURE__ */ A(X, {
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 Se({ variables: {
508
+ await Ee({ variables: {
509
509
  catalogId: i,
510
510
  componentId: e
511
- } }), G(S("catalog.componentAdded", "Component added to catalog")), setTimeout(() => G(null), 3e3), z(!1);
511
+ } }), J(I("catalog.componentAdded", "Component added to catalog")), setTimeout(() => J(null), 3e3), H(!1);
512
512
  },
513
- onClose: () => z(!1),
514
- tr: S
513
+ onClose: () => H(!1),
514
+ tr: I
515
515
  }),
516
516
  /* @__PURE__ */ A(c, {
517
- isOpen: B,
518
- onClose: () => V(!1),
519
- onConfirm: Ee,
520
- title: S("catalog.deleteCatalog", "Delete Catalog"),
521
- message: S("catalog.deleteConfirmMessage", `Are you sure you want to delete "${Z.name}"? This action cannot be undone.`),
522
- confirmLabel: S("common.delete", "Delete"),
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: H
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(x, { className: "size-4" }), S("catalog.backToCatalogs", "Back to Catalogs")]
533
+ children: [/* @__PURE__ */ A(S, { className: "size-4" }), I("catalog.backToCatalogs", "Back to Catalogs")]
534
534
  }), /* @__PURE__ */ A(m, {
535
- icon: /* @__PURE__ */ A(C, { className: "size-8 text-text-secondary" }),
536
- title: S("catalog.notFound", "Catalog not found"),
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: S("catalog.backToCatalogs", "Back to Catalogs")
542
+ children: I("catalog.backToCatalogs", "Back to Catalogs")
543
543
  })
544
544
  })]
545
545
  });
546
546
  }
547
- function K({ data: e }) {
547
+ function G({ data: e }) {
548
548
  return /* @__PURE__ */ j(k, { children: [
549
- /* @__PURE__ */ A(R, {
549
+ /* @__PURE__ */ A(L, {
550
550
  type: "target",
551
- position: B.Left,
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(R, {
559
+ /* @__PURE__ */ A(L, {
560
560
  type: "source",
561
- position: B.Right,
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 q = { catalog: K };
571
- function J(e, t) {
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: z.ArrowClosed },
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 Y({ graphNodes: e, graphEdges: t, onComponentClick: n, onConnect: r }) {
660
- let { nodes: i, edges: a } = y(() => J(e, t), [e, t]), [o, s, c] = W(i), [l, u, d] = U(a);
661
- v(() => {
662
- let { nodes: n, edges: r } = J(e, t);
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 = _((e, t) => {
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 = _((e) => {
673
- !e.source || !e.target || (u((t) => H({
672
+ }, [n]), h = v((e) => {
673
+ !e.source || !e.target || (u((t) => V({
674
674
  ...e,
675
675
  animated: !0,
676
- markerEnd: { type: z.ArrowClosed },
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(V, {
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: q,
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(F, {
706
- variant: I.Dots,
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(L, {
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 ye({ catalogId: e, tr: t }) {
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 = _(async (e, t) => {
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(T, { className: "size-5" }), t("catalog.dependencyGraph", "Dependency Graph")]
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(D, { className: `size-4 ${a ? "animate-spin" : ""}` })
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(T, { className: "size-8 text-text-secondary" }),
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(Y, {
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(S, { className: "size-4 text-text-muted flex-shrink-0" }),
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 X({ catalogId: e, existingComponentIds: t, onAdd: n, onClose: r, tr: a }) {
865
- let [o, s] = b(!1), [c, l] = b(""), { data: u, loading: f } = i({ fetchPolicy: "cache-and-network" }), p = y(() => {
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(E, { className: "size-4 text-text-secondary" })]
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 { G as CatalogDetailPage };
953
+ export { W as CatalogDetailPage };
954
954
 
955
955
  //# sourceMappingURL=CatalogDetailPage.js.map