@burdenoff/microfe-vibecontrols 2026.1003.2 → 2026.1004.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.
@@ -33,80 +33,109 @@ import { AnimatePresence as ze } from "framer-motion";
33
33
  import { Fragment as Be, jsx as u, jsxs as d } from "react/jsx-runtime";
34
34
  import { Button as Ve, CTAOverflowMenu as He, PagePurpose as Ue } from "@burdenoff/fe-libs/ui";
35
35
  import { AccessDenied as We, PermissionButton as f, PermissionGate as Ge } from "@burdenoff/fe-libs/shared/components";
36
- import { MotionItem as Ke, MotionList as p, MotionPage as qe } from "@burdenoff/fe-libs/shared/motion";
36
+ import { MotionItem as Ke, MotionList as qe, MotionPage as Je } from "@burdenoff/fe-libs/shared/motion";
37
+ import { useAssistantPageControls as Ye } from "@burdenoff/fe-libs/shared/assistant/appControls/useAssistantControl";
38
+ import { enumFilter as Xe, filtersOf as Ze, openersOf as Qe, searchOf as $e } from "@burdenoff/fe-libs/shared/assistant/appControls/pageAdapters";
37
39
  //#region src/pages/VibesPage.tsx
38
- function m() {
39
- let { onVibeActivate: m, workspaceId: h } = oe(), Je = se(), { hasPermission: g, isLoading: _, permissions: Ye } = Re(), { t: Xe } = Oe(), { isFree: Ze, approachingLimits: Qe } = ke({ resource: "vibes" }), v = Qe[0], y = o((e, t, n) => {
40
- let r = Xe(e, n), i = r === e ? t : r;
40
+ function et() {
41
+ let { onVibeActivate: et, workspaceId: p } = oe(), tt = se(), { hasPermission: m, isLoading: h, permissions: nt } = Re(), { t: rt } = Oe(), { isFree: it, approachingLimits: at } = ke({ resource: "vibes" }), g = at[0], _ = o((e, t, n) => {
42
+ let r = rt(e, n), i = r === e ? t : r;
41
43
  return n ? Object.entries(n).reduce((e, [t, n]) => e.replace(`{{${t}}}`, String(n)), i) : i;
42
- }, [Xe]), $e = [
44
+ }, [rt]), v = s(() => [
43
45
  {
44
46
  value: "all",
45
- label: y("vibesPage.statusAll", "All Statuses")
47
+ label: _("vibesPage.statusAll", "All Statuses")
46
48
  },
47
49
  {
48
50
  value: "ACTIVE",
49
- label: y("vibesPage.statusActive", "Active")
51
+ label: _("vibesPage.statusActive", "Active")
50
52
  },
51
53
  {
52
54
  value: "INACTIVE",
53
- label: y("vibesPage.statusInactive", "Inactive")
55
+ label: _("vibesPage.statusInactive", "Inactive")
54
56
  },
55
57
  {
56
58
  value: "ARCHIVED",
57
- label: y("vibesPage.statusArchived", "Archived")
59
+ label: _("vibesPage.statusArchived", "Archived")
58
60
  },
59
61
  {
60
62
  value: "ERROR",
61
- label: y("vibesPage.statusError", "Error")
63
+ label: _("vibesPage.statusError", "Error")
62
64
  }
63
- ];
64
- y("vibesPage.typeAll", "All Types"), y("vibesPage.typeProject", "Project"), y("vibesPage.typeRepository", "Repository"), y("vibesPage.typeWorkspace", "Workspace"), y("vibesPage.typeMonorepo", "Monorepo"), y("vibesPage.typePackage", "Package"), y("vibesPage.typeCustom", "Custom");
65
- let et = g(a.VIBE_LIST), tt = g(a.VIBE_UPDATE), nt = g(a.VIBE_DELETE), b = _ || !et, [x, rt] = l(""), [S, it] = l("all"), [C, at] = l("all"), [w, ot] = l("all"), [T, st] = l("grid"), [ct, E] = l(!1), [lt, D] = l(null), [O, ut] = l(!1), [k, A] = l(null), [dt, j] = l(!1), [M, N] = l({}), [ft, P] = l(null), [F, I] = l(/* @__PURE__ */ new Set()), [pt, L] = l(null), R = c(null);
65
+ ], [_]), ot = s(() => [
66
+ {
67
+ value: "all",
68
+ label: _("vibesPage.typeAll", "All Types")
69
+ },
70
+ {
71
+ value: "PROJECT",
72
+ label: _("vibesPage.typeProject", "Project")
73
+ },
74
+ {
75
+ value: "REPOSITORY",
76
+ label: _("vibesPage.typeRepository", "Repository")
77
+ },
78
+ {
79
+ value: "WORKSPACE",
80
+ label: _("vibesPage.typeWorkspace", "Workspace")
81
+ },
82
+ {
83
+ value: "MONOREPO",
84
+ label: _("vibesPage.typeMonorepo", "Monorepo")
85
+ },
86
+ {
87
+ value: "PACKAGE",
88
+ label: _("vibesPage.typePackage", "Package")
89
+ },
90
+ {
91
+ value: "CUSTOM",
92
+ label: _("vibesPage.typeCustom", "Custom")
93
+ }
94
+ ], [_]), st = m(a.VIBE_LIST), ct = m(a.VIBE_UPDATE), lt = m(a.VIBE_DELETE), y = h || !st, [b, ut] = l(""), [x, dt] = l("all"), [S, ft] = l("all"), [C, pt] = l("all"), [w, mt] = l("grid"), [ht, T] = l(!1), [gt, E] = l(null), [D, _t] = l(!1), [vt, O] = l(null), [yt, k] = l(!1), [A, j] = l({}), [bt, M] = l(null), [N, P] = l(/* @__PURE__ */ new Set()), [xt, F] = l(null), I = c(null);
66
95
  De(() => () => {
67
- R.current && clearTimeout(R.current);
96
+ I.current && clearTimeout(I.current);
68
97
  }, []);
69
- let mt = o(() => {
70
- P(null), R.current &&= (clearTimeout(R.current), null);
71
- }, []), ht = c(null), gt = c(null), _t = c(null), vt = c(null), [yt] = n(), [bt] = t(), { setDraftTagIds: xt, flushTags: St } = me("VIBECONTROLS_VIBE"), [Ct] = te(), [wt] = e(), [Tt, { loading: Et }] = r(), [z, B] = l(null), { data: Dt, loading: V, error: Ot, refetch: H } = ee({
98
+ let St = o(() => {
99
+ M(null), I.current &&= (clearTimeout(I.current), null);
100
+ }, []), Ct = c(null), wt = c(null), Tt = c(null), Et = c(null), [Dt] = n(), [Ot] = t(), { setDraftTagIds: kt, flushTags: At } = me("VIBECONTROLS_VIBE"), [jt] = te(), [Mt] = e(), [Nt, { loading: Pt }] = r(), [L, R] = l(null), { data: Ft, loading: z, error: It, refetch: B } = ee({
72
101
  variables: s(() => {
73
102
  let e = {};
74
- return h && (e.workspaceId = h), S !== "all" && (e.status = S), C !== "all" && (e.type = C), w !== "all" && (e.attachedAgentIds = [w]), {
103
+ return p && (e.workspaceId = p), x !== "all" && (e.status = x), S !== "all" && (e.type = S), C !== "all" && (e.attachedAgentIds = [C]), {
75
104
  filter: e,
76
105
  pagination: { limit: 50 }
77
106
  };
78
107
  }, [
79
- h,
108
+ p,
109
+ x,
80
110
  S,
81
- C,
82
- w
111
+ C
83
112
  ]),
84
- fetchPolicy: S === "all" && C === "all" && w === "all" ? "cache-first" : "cache-and-network",
113
+ fetchPolicy: x === "all" && S === "all" && C === "all" ? "cache-first" : "cache-and-network",
85
114
  nextFetchPolicy: "cache-first",
86
- skip: b,
115
+ skip: y,
87
116
  notifyOnNetworkStatusChange: !0
88
- }), { agents: kt } = le(), [At, { data: jt }] = i({ fetchPolicy: "cache-first" }), Mt = c(!1), U = o(() => {
89
- Mt.current || b || (Mt.current = !0, At({ variables: { pagination: { limit: 100 } } }));
90
- }, [At, b]), Nt = s(() => {
91
- let e = jt?.vibecontrolsAgents ?? null, t = e ? e.map((e) => ({
117
+ }), { agents: Lt } = le(), [Rt, { data: zt }] = i({ fetchPolicy: "cache-first" }), Bt = c(!1), V = o(() => {
118
+ Bt.current || y || (Bt.current = !0, Rt({ variables: { pagination: { limit: 100 } } }));
119
+ }, [Rt, y]), Vt = s(() => {
120
+ let e = zt?.vibecontrolsAgents ?? null, t = e ? e.map((e) => ({
92
121
  id: e.id,
93
122
  name: e.name
94
- })) : kt.map((e) => ({
123
+ })) : Lt.map((e) => ({
95
124
  id: e.id,
96
125
  name: e.name
97
126
  }));
98
127
  return [{
99
128
  value: "all",
100
- label: y("vibesPage.allAgents", "All Agents")
129
+ label: _("vibesPage.allAgents", "All Agents")
101
130
  }, ...t.map((e) => ({
102
131
  value: e.id,
103
132
  label: e.name
104
133
  }))];
105
134
  }, [
106
- jt?.vibecontrolsAgents,
107
- kt,
108
- y
109
- ]), W = s(() => (Dt?.vibes?.items ?? []).map((e) => ({
135
+ zt?.vibecontrolsAgents,
136
+ Lt,
137
+ _
138
+ ]), H = s(() => (Ft?.vibes?.items ?? []).map((e) => ({
110
139
  id: e.id,
111
140
  workspaceId: e.workspaceId,
112
141
  name: e.name,
@@ -124,39 +153,39 @@ function m() {
124
153
  createdAt: e.createdAt,
125
154
  updatedAt: e.updatedAt,
126
155
  agents: []
127
- })), [Dt?.vibes?.items]), G = s(() => W.filter((e) => {
128
- if (x) {
129
- let t = x.toLowerCase();
156
+ })), [Ft?.vibes?.items]), U = s(() => H.filter((e) => {
157
+ if (b) {
158
+ let t = b.toLowerCase();
130
159
  if (!(e.name.toLowerCase().includes(t) || e.description?.toLowerCase().includes(t) || e.path?.toLowerCase().includes(t) || e.tags?.some((e) => e.toLowerCase().includes(t)))) return !1;
131
160
  }
132
161
  return !0;
133
- }), [W, x]), Pt = s(() => W.filter((e) => F.has(e.id)), [W, F]), K = Pt.filter((e) => e.status !== "ACTIVE"), q = Pt.filter((e) => e.status !== "ARCHIVED"), J = G.length > 0 && G.every((e) => F.has(e.id)), Ft = G.some((e) => F.has(e.id)) && !J, It = (e) => {
134
- Je(`/vibes/${e.id}`);
135
- }, Lt = async (e) => {
162
+ }), [H, b]), Ht = s(() => H.filter((e) => N.has(e.id)), [H, N]), W = Ht.filter((e) => e.status !== "ACTIVE"), G = Ht.filter((e) => e.status !== "ARCHIVED"), K = U.length > 0 && U.every((e) => N.has(e.id)), Ut = U.some((e) => N.has(e.id)) && !K, Wt = (e) => {
163
+ tt(`/vibes/${e.id}`);
164
+ }, Gt = async (e) => {
136
165
  try {
137
- (await Ct({ variables: {
166
+ (await jt({ variables: {
138
167
  id: e.id,
139
168
  status: "ACTIVE"
140
- } })).data?.updateVibeStatus && (m?.({
169
+ } })).data?.updateVibeStatus && (et?.({
141
170
  id: e.id,
142
171
  name: e.name,
143
172
  type: e.type,
144
173
  status: "ACTIVE"
145
- }), await H());
174
+ }), await B());
146
175
  } catch (e) {
147
176
  console.error("Failed to activate vibe:", e);
148
177
  }
149
- }, Rt = async (e) => {
178
+ }, q = async (e) => {
150
179
  try {
151
- await wt({ variables: { id: e.id } }), await H();
180
+ await Mt({ variables: { id: e.id } }), await B();
152
181
  } catch (e) {
153
182
  console.error("Failed to archive vibe:", e);
154
183
  }
155
- }, zt = async (e) => {
156
- if (!z) return;
157
- let t = z.id;
184
+ }, Kt = async (e) => {
185
+ if (!L) return;
186
+ let t = L.id;
158
187
  try {
159
- await Tt({
188
+ await Nt({
160
189
  variables: {
161
190
  id: t,
162
191
  deleteRelatedEntities: e
@@ -167,65 +196,98 @@ function m() {
167
196
  id: t
168
197
  }) }), e.gc();
169
198
  }
170
- }), B(null), await H();
199
+ }), R(null), await B();
171
200
  } catch (e) {
172
201
  console.error("Failed to delete vibe:", e);
173
202
  }
174
- }, Bt = ce((e) => e.preferredIdeCommand), Vt = ce((e) => e.vibeIdeOverrides), Ht = (e) => {
203
+ }, qt = ce((e) => e.preferredIdeCommand), Jt = ce((e) => e.vibeIdeOverrides), Yt = (e) => {
175
204
  if (!e.path) {
176
- P(y("vibesPage.openEditorPathMissing", "No path available to open in editor")), R.current = setTimeout(() => {
177
- P(null), R.current = null;
205
+ M(_("vibesPage.openEditorPathMissing", "No path available to open in editor")), I.current = setTimeout(() => {
206
+ M(null), I.current = null;
178
207
  }, 3e3);
179
208
  return;
180
209
  }
181
- let t = Ce(e.id, Bt, Vt), n = Se(t), r = n ? xe(n, e.path) : `vscode://file/${e.path}`;
182
- r ? window.location.href = r : (P(y("vibesPage.openEditorNoProtocol", `${n?.label ?? t} has no URL handler — open this Vibe and use the editor menu.`)), R.current = setTimeout(() => {
183
- P(null), R.current = null;
210
+ let t = Ce(e.id, qt, Jt), n = Se(t), r = n ? xe(n, e.path) : `vscode://file/${e.path}`;
211
+ r ? window.location.href = r : (M(_("vibesPage.openEditorNoProtocol", `${n?.label ?? t} has no URL handler — open this Vibe and use the editor menu.`)), I.current = setTimeout(() => {
212
+ M(null), I.current = null;
184
213
  }, 4e3));
185
- }, Y = o(() => {
186
- D(null), E(!0), U();
187
- }, [U]), [X, Ut] = Le();
214
+ }, J = o(() => {
215
+ E(null), T(!0), V();
216
+ }, [V]), Xt = m(a.VIBE_CREATE);
217
+ Ye(s(() => ({
218
+ page: _("vibesPage.assistantPage", "Vibes"),
219
+ filters: Ze([Xe({
220
+ id: "status",
221
+ label: _("vibesPage.filterStatus", "Status"),
222
+ options: v,
223
+ neutral: "all",
224
+ value: x,
225
+ set: dt
226
+ }), Xe({
227
+ id: "type",
228
+ label: _("vibesPage.assistantType", "Type"),
229
+ options: ot,
230
+ neutral: "all",
231
+ value: S,
232
+ set: ft
233
+ })]),
234
+ search: $e(ut),
235
+ ...Xt ? { openers: Qe([{
236
+ id: "create-vibe",
237
+ label: _("vibesPage.assistantCreateVibe", "Create vibe"),
238
+ open: J
239
+ }]) } : {}
240
+ }), [
241
+ _,
242
+ v,
243
+ ot,
244
+ x,
245
+ S,
246
+ Xt,
247
+ J
248
+ ]));
249
+ let [Y, Zt] = Le();
188
250
  De(() => {
189
- if (X.get("create") === "true") {
190
- Y();
191
- let e = new URLSearchParams(X);
192
- e.delete("create"), Ut(e, { replace: !0 });
251
+ if (Y.get("create") === "true") {
252
+ J();
253
+ let e = new URLSearchParams(Y);
254
+ e.delete("create"), Zt(e, { replace: !0 });
193
255
  }
194
256
  }, [
195
- X,
196
- Ut,
197
- Y
257
+ Y,
258
+ Zt,
259
+ J
198
260
  ]);
199
- let Wt = (e, t) => {
200
- I((n) => {
261
+ let Qt = (e, t) => {
262
+ P((n) => {
201
263
  let r = new Set(n);
202
264
  return t ? r.add(e.id) : r.delete(e.id), r;
203
265
  });
204
- }, Gt = (e) => {
205
- I((t) => {
266
+ }, $t = (e) => {
267
+ P((t) => {
206
268
  let n = new Set(t);
207
- return G.forEach((t) => {
269
+ return U.forEach((t) => {
208
270
  e ? n.add(t.id) : n.delete(t.id);
209
271
  }), n;
210
272
  });
211
- }, Z = () => I(/* @__PURE__ */ new Set()), Kt = async () => {
212
- if (K.length === 0) return;
213
- let e = await Promise.allSettled(K.map((e) => Ct({ variables: {
273
+ }, X = () => P(/* @__PURE__ */ new Set()), en = async () => {
274
+ if (W.length === 0) return;
275
+ let e = await Promise.allSettled(W.map((e) => jt({ variables: {
214
276
  id: e.id,
215
277
  status: "ACTIVE"
216
278
  } }))), t = e.filter((e) => e.status === "fulfilled").length, n = e.length - t;
217
- A(`Activated ${t} vibe${t === 1 ? "" : "s"}${n > 0 ? ` • ${n} failed` : ""}`), setTimeout(() => A(null), 4e3), Z(), L(null), await H();
218
- }, qt = async () => {
219
- if (q.length === 0) return;
220
- let e = await Promise.allSettled(q.map((e) => wt({ variables: { id: e.id } }))), t = e.filter((e) => e.status === "fulfilled").length, n = e.length - t;
221
- A(`Archived ${t} vibe${t === 1 ? "" : "s"}${n > 0 ? ` • ${n} failed` : ""}`), setTimeout(() => A(null), 4e3), Z(), L(null), await H();
222
- }, Jt = async () => {
223
- let e = ht.current?.value?.trim(), t = gt.current?.value?.trim(), n = _t.current?.value, r = vt.current?.value, i = {};
224
- if (e || (i.name = y("vibesPage.nameRequired", "Name is required")), i.name) {
225
- N(i), D(y("vibesPage.fillRequired", "Please fill in all required fields"));
279
+ O(`Activated ${t} vibe${t === 1 ? "" : "s"}${n > 0 ? ` • ${n} failed` : ""}`), setTimeout(() => O(null), 4e3), X(), F(null), await B();
280
+ }, tn = async () => {
281
+ if (G.length === 0) return;
282
+ let e = await Promise.allSettled(G.map((e) => Mt({ variables: { id: e.id } }))), t = e.filter((e) => e.status === "fulfilled").length, n = e.length - t;
283
+ O(`Archived ${t} vibe${t === 1 ? "" : "s"}${n > 0 ? ` • ${n} failed` : ""}`), setTimeout(() => O(null), 4e3), X(), F(null), await B();
284
+ }, nn = async () => {
285
+ let e = Ct.current?.value?.trim(), t = wt.current?.value?.trim(), n = Tt.current?.value, r = Et.current?.value, i = {};
286
+ if (e || (i.name = _("vibesPage.nameRequired", "Name is required")), i.name) {
287
+ j(i), E(_("vibesPage.fillRequired", "Please fill in all required fields"));
226
288
  return;
227
289
  }
228
- N({});
290
+ j({});
229
291
  let ee = [
230
292
  "PROJECT",
231
293
  "REPOSITORY",
@@ -234,147 +296,147 @@ function m() {
234
296
  "PACKAGE",
235
297
  "CUSTOM"
236
298
  ].includes(r) ? r : "PROJECT";
237
- ut(!0), D(null);
299
+ _t(!0), E(null);
238
300
  try {
239
- let r = await yt({ variables: { input: {
301
+ let r = await Dt({ variables: { input: {
240
302
  name: e,
241
303
  path: t ?? "",
242
304
  type: ee
243
305
  } } });
244
- if (!r.data?.createVibe?.id) throw Error(y("vibesPage.failedCreate", "Failed to create vibe"));
306
+ if (!r.data?.createVibe?.id) throw Error(_("vibesPage.failedCreate", "Failed to create vibe"));
245
307
  let i = r.data.createVibe.id;
246
308
  if (n) try {
247
- await bt({ variables: { input: {
309
+ await Ot({ variables: { input: {
248
310
  vibeId: i,
249
311
  agentId: n
250
312
  } } });
251
313
  } catch {}
252
- E(!1), A(y("vibesPage.createdSuccess", "Vibe created successfully")), await St(i), await H(), setTimeout(() => A(null), 3e3);
314
+ T(!1), O(_("vibesPage.createdSuccess", "Vibe created successfully")), await At(i), await B(), setTimeout(() => O(null), 3e3);
253
315
  } catch (e) {
254
316
  if (ie(e)) {
255
- E(!1), D(null), N({}), ae(), j(!0);
317
+ T(!1), E(null), j({}), ae(), k(!0);
256
318
  return;
257
319
  }
258
- D(e instanceof Error ? e.message : y("vibesPage.failedCreate", "Failed to create vibe"));
320
+ E(e instanceof Error ? e.message : _("vibesPage.failedCreate", "Failed to create vibe"));
259
321
  } finally {
260
- ut(!1);
322
+ _t(!1);
261
323
  }
262
- }, Yt = {
263
- total: W.length,
264
- active: W.filter((e) => e.status === "ACTIVE").length,
265
- inactive: W.filter((e) => e.status === "INACTIVE").length
266
- }, Q = _, $ = !_ && !!Ye && (Ye.permissionStrings?.length ?? 0) > 0 && !et, Xt = !Q && !$ && V && W.length === 0, Zt = !Q && !$ && !!Ot && W.length === 0, Qt = !Q && !$ && !Zt;
267
- return /* @__PURE__ */ d(qe, {
324
+ }, rn = {
325
+ total: H.length,
326
+ active: H.filter((e) => e.status === "ACTIVE").length,
327
+ inactive: H.filter((e) => e.status === "INACTIVE").length
328
+ }, Z = h, Q = !h && !!nt && (nt.permissionStrings?.length ?? 0) > 0 && !st, an = !Z && !Q && z && H.length === 0, $ = !Z && !Q && !!It && H.length === 0, on = !Z && !Q && !$;
329
+ return /* @__PURE__ */ d(Je, {
268
330
  className: "space-y-6 px-6 lg:px-8 py-6 bg-bg-canvas min-h-screen",
269
331
  children: [
270
- Q && /* @__PURE__ */ u(de, { message: y("vibesPage.loadingPermissions", "Loading permissions...") }),
271
- $ && /* @__PURE__ */ u(We, {
272
- title: y("vibesPage.accessDeniedTitle", "Access Denied"),
273
- description: y("vibesPage.accessDeniedDescription", "You don't have permission to view vibes. Contact your workspace administrator for access.")
332
+ Z && /* @__PURE__ */ u(de, { message: _("vibesPage.loadingPermissions", "Loading permissions...") }),
333
+ Q && /* @__PURE__ */ u(We, {
334
+ title: _("vibesPage.accessDeniedTitle", "Access Denied"),
335
+ description: _("vibesPage.accessDeniedDescription", "You don't have permission to view vibes. Contact your workspace administrator for access.")
274
336
  }),
275
- Zt && /* @__PURE__ */ u(fe, {
276
- title: y("vibesPage.failedLoad", "Failed to load vibes"),
277
- message: Ot?.message ?? "",
278
- onRetry: () => H()
337
+ $ && /* @__PURE__ */ u(fe, {
338
+ title: _("vibesPage.failedLoad", "Failed to load vibes"),
339
+ message: It?.message ?? "",
340
+ onRetry: () => B()
279
341
  }),
280
- Qt && /* @__PURE__ */ d(Be, { children: [
342
+ on && /* @__PURE__ */ d(Be, { children: [
281
343
  /* @__PURE__ */ u(ue, {
282
- title: y("vibesPage.title", "Vibes"),
283
- description: y("vibesPage.descriptionActive", "{{active}} of {{total}} vibes active", {
284
- active: Yt.active,
285
- total: Yt.total
344
+ title: _("vibesPage.title", "Vibes"),
345
+ description: _("vibesPage.descriptionActive", "{{active}} of {{total}} vibes active", {
346
+ active: rn.active,
347
+ total: rn.total
286
348
  }),
287
349
  actions: /* @__PURE__ */ d("div", {
288
350
  className: "flex items-center gap-2",
289
351
  children: [
290
- Ze && v && typeof v.limit == "number" && /* @__PURE__ */ u("a", {
352
+ it && g && typeof g.limit == "number" && /* @__PURE__ */ u("a", {
291
353
  href: "/billing/plans",
292
- className: `inline-flex items-center gap-1 px-2 py-1 text-xs font-medium rounded-md border ${v.current >= v.limit ? "border-status-error-border bg-status-error-bg-subtle text-status-error-text" : "border-status-warning-border bg-status-warning-bg-subtle text-status-warning-text"}`,
293
- title: y("vibesPage.upgradeChipTooltip", "Free plan limit — upgrade for more vibes"),
294
- children: y("vibesPage.usageChip", "{{current}} of {{limit}} vibes used", {
295
- current: v.current,
296
- limit: v.limit
354
+ className: `inline-flex items-center gap-1 px-2 py-1 text-xs font-medium rounded-md border ${g.current >= g.limit ? "border-status-error-border bg-status-error-bg-subtle text-status-error-text" : "border-status-warning-border bg-status-warning-bg-subtle text-status-warning-text"}`,
355
+ title: _("vibesPage.upgradeChipTooltip", "Free plan limit — upgrade for more vibes"),
356
+ children: _("vibesPage.usageChip", "{{current}} of {{limit}} vibes used", {
357
+ current: g.current,
358
+ limit: g.limit
297
359
  })
298
360
  }),
299
361
  /* @__PURE__ */ u(f, {
300
362
  permission: a.VIBE_CREATE,
301
363
  deniedBehavior: "disable",
302
- deniedTooltip: y("vibesPage.deniedCreateTooltip", "You don't have permission to create vibes"),
364
+ deniedTooltip: _("vibesPage.deniedCreateTooltip", "You don't have permission to create vibes"),
303
365
  children: /* @__PURE__ */ d(Ve, {
304
366
  type: "button",
305
- onClick: Y,
367
+ onClick: J,
306
368
  className: "gap-2",
307
- children: [/* @__PURE__ */ u(Pe, { className: "size-4" }), y("vibesPage.addVibe", "Add Vibe")]
369
+ children: [/* @__PURE__ */ u(Pe, { className: "size-4" }), _("vibesPage.addVibe", "Add Vibe")]
308
370
  })
309
371
  }),
310
372
  /* @__PURE__ */ u(He, { actions: [{
311
- label: y("vibesPage.refreshTitle", "Refresh vibes"),
312
- onSelect: () => void H(),
313
- disabled: V,
314
- icon: /* @__PURE__ */ u(Fe, { className: `size-4 ${V ? "animate-spin" : ""}` })
373
+ label: _("vibesPage.refreshTitle", "Refresh vibes"),
374
+ onSelect: () => void B(),
375
+ disabled: z,
376
+ icon: /* @__PURE__ */ u(Fe, { className: `size-4 ${z ? "animate-spin" : ""}` })
315
377
  }] })
316
378
  ]
317
379
  })
318
380
  }),
319
381
  /* @__PURE__ */ u(Ue, {
320
382
  icon: /* @__PURE__ */ u(Ie, { className: "size-4" }),
321
- children: y("vibesPage.purpose", "A vibe is a workspace for a piece of work — a project, an experiment, a support task. It ties together the agent that runs your commands, the sessions you open, notes, schedules and audit history in one place. Create a vibe whenever you want a focused, shareable space to get something done with AI and your own machines.")
383
+ children: _("vibesPage.purpose", "A vibe is a workspace for a piece of work — a project, an experiment, a support task. It ties together the agent that runs your commands, the sessions you open, notes, schedules and audit history in one place. Create a vibe whenever you want a focused, shareable space to get something done with AI and your own machines.")
322
384
  }),
323
385
  /* @__PURE__ */ d("div", {
324
386
  className: "space-y-3",
325
387
  children: [/* @__PURE__ */ d("div", {
326
388
  className: "flex items-center gap-2",
327
389
  children: [/* @__PURE__ */ u(ge, {
328
- value: x,
329
- onChange: rt,
330
- placeholder: y("vibesPage.searchPlaceholder", "Search vibes..."),
390
+ value: b,
391
+ onChange: ut,
392
+ placeholder: _("vibesPage.searchPlaceholder", "Search vibes..."),
331
393
  className: "flex-1 sm:w-64 sm:flex-none"
332
394
  }), /* @__PURE__ */ d("div", {
333
395
  className: "flex items-center gap-1 bg-bg-sunken rounded-button p-1 flex-shrink-0 border border-border-subtle",
334
396
  children: [/* @__PURE__ */ u("button", {
335
397
  type: "button",
336
- onClick: () => st("grid"),
337
- className: `p-1.5 sm:p-2 rounded ${T === "grid" ? "bg-[var(--color-accent-soft)] text-text-primary" : "text-text-secondary hover:bg-bg-surface/60"}`,
338
- title: y("vibesPage.gridViewTitle", "Grid view"),
398
+ onClick: () => mt("grid"),
399
+ className: `p-1.5 sm:p-2 rounded ${w === "grid" ? "bg-[var(--color-accent-soft)] text-text-primary" : "text-text-secondary hover:bg-bg-surface/60"}`,
400
+ title: _("vibesPage.gridViewTitle", "Grid view"),
339
401
  children: /* @__PURE__ */ u(je, { className: "size-4 text-text-secondary" })
340
402
  }), /* @__PURE__ */ u("button", {
341
403
  type: "button",
342
- onClick: () => st("list"),
343
- className: `p-1.5 sm:p-2 rounded ${T === "list" ? "bg-[var(--color-accent-soft)] text-text-primary" : "text-text-secondary hover:bg-bg-surface/60"}`,
344
- title: y("vibesPage.listViewTitle", "List view"),
404
+ onClick: () => mt("list"),
405
+ className: `p-1.5 sm:p-2 rounded ${w === "list" ? "bg-[var(--color-accent-soft)] text-text-primary" : "text-text-secondary hover:bg-bg-surface/60"}`,
406
+ title: _("vibesPage.listViewTitle", "List view"),
345
407
  children: /* @__PURE__ */ u(Me, { className: "size-4 text-text-secondary" })
346
408
  })]
347
409
  })]
348
410
  }), /* @__PURE__ */ d("div", {
349
411
  className: "flex items-center gap-2 sm:gap-3 flex-wrap",
350
412
  children: [/* @__PURE__ */ u(_e, {
351
- label: y("vibesPage.filterStatus", "Status"),
352
- value: S,
353
- options: $e,
354
- onChange: it
413
+ label: _("vibesPage.filterStatus", "Status"),
414
+ value: x,
415
+ options: v,
416
+ onChange: dt
355
417
  }), /* @__PURE__ */ u("div", {
356
- onMouseDown: U,
357
- onFocus: U,
418
+ onMouseDown: V,
419
+ onFocus: V,
358
420
  children: /* @__PURE__ */ u(_e, {
359
- label: y("vibesPage.filterAgent", "Agent"),
360
- value: w,
361
- options: Nt,
362
- onChange: ot
421
+ label: _("vibesPage.filterAgent", "Agent"),
422
+ value: C,
423
+ options: Vt,
424
+ onChange: pt
363
425
  })
364
426
  })]
365
427
  })]
366
428
  }),
367
- x || S !== "all" || C !== "all" || w !== "all" ? /* @__PURE__ */ d("p", {
429
+ b || x !== "all" || S !== "all" || C !== "all" ? /* @__PURE__ */ d("p", {
368
430
  className: "text-sm text-text-secondary",
369
- children: [y("vibesPage.showingResults", "Showing {{filtered}} of {{total}} vibes", {
370
- filtered: G.length,
371
- total: W.length
372
- }), V && /* @__PURE__ */ u("span", {
431
+ children: [_("vibesPage.showingResults", "Showing {{filtered}} of {{total}} vibes", {
432
+ filtered: U.length,
433
+ total: H.length
434
+ }), z && /* @__PURE__ */ u("span", {
373
435
  className: "ml-2 text-text-muted",
374
- children: y("vibesPage.refreshing", "(refreshing...)")
436
+ children: _("vibesPage.refreshing", "(refreshing...)")
375
437
  })]
376
438
  }) : null,
377
- G.length > 0 && /* @__PURE__ */ u("div", {
439
+ U.length > 0 && /* @__PURE__ */ u("div", {
378
440
  className: "rounded-card border border-border-subtle bg-bg-surface shadow-elevation-1 p-5",
379
441
  children: /* @__PURE__ */ d("div", {
380
442
  className: "flex flex-col gap-3 lg:flex-row lg:items-center lg:justify-between",
@@ -383,17 +445,17 @@ function m() {
383
445
  children: [/* @__PURE__ */ d("div", {
384
446
  className: "flex items-center gap-2",
385
447
  children: [/* @__PURE__ */ u(ye, {
386
- checked: J,
387
- indeterminate: Ft,
388
- onChange: Gt,
448
+ checked: K,
449
+ indeterminate: Ut,
450
+ onChange: $t,
389
451
  ariaLabel: "Select all visible vibes"
390
452
  }), /* @__PURE__ */ u("span", {
391
453
  className: "text-sm font-medium text-text-primary",
392
454
  children: "Select all visible"
393
455
  })]
394
- }), F.size > 0 && /* @__PURE__ */ u("button", {
456
+ }), N.size > 0 && /* @__PURE__ */ u("button", {
395
457
  type: "button",
396
- onClick: Z,
458
+ onClick: X,
397
459
  className: "text-sm text-text-secondary hover:text-text-primary",
398
460
  children: "Clear selection"
399
461
  })]
@@ -402,15 +464,15 @@ function m() {
402
464
  children: [
403
465
  /* @__PURE__ */ d("span", {
404
466
  className: "rounded-full bg-bg-sunken px-3 py-1 text-sm font-medium text-text-secondary",
405
- children: [F.size, " selected"]
467
+ children: [N.size, " selected"]
406
468
  }),
407
469
  /* @__PURE__ */ u(f, {
408
470
  permission: a.VIBE_UPDATE,
409
471
  deniedBehavior: "hide",
410
472
  children: /* @__PURE__ */ u("button", {
411
473
  type: "button",
412
- onClick: () => L("activate"),
413
- disabled: K.length === 0,
474
+ onClick: () => F("activate"),
475
+ disabled: W.length === 0,
414
476
  title: "Mark selected vibes as ACTIVE so they appear in the default vibe list and can run sessions/tunnels via their attached agent(s).",
415
477
  className: "rounded-button border border-status-success-border px-3 py-2 text-sm font-medium text-status-success-text hover:bg-status-success-bg-subtle transition-colors disabled:cursor-not-allowed disabled:opacity-50 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-border-focus",
416
478
  children: /* @__PURE__ */ d("span", {
@@ -418,7 +480,7 @@ function m() {
418
480
  children: [
419
481
  /* @__PURE__ */ u(Ne, { className: "size-4" }),
420
482
  "Activate Selected",
421
- K.length > 0 ? ` (${K.length})` : ""
483
+ W.length > 0 ? ` (${W.length})` : ""
422
484
  ]
423
485
  })
424
486
  })
@@ -428,15 +490,15 @@ function m() {
428
490
  deniedBehavior: "hide",
429
491
  children: /* @__PURE__ */ u("button", {
430
492
  type: "button",
431
- onClick: () => L("archive"),
432
- disabled: q.length === 0,
493
+ onClick: () => F("archive"),
494
+ disabled: G.length === 0,
433
495
  className: "rounded-button border border-status-warning-border px-3 py-2 text-sm font-medium text-status-warning-text hover:bg-status-warning-bg-subtle transition-colors disabled:cursor-not-allowed disabled:opacity-50 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-border-focus",
434
496
  children: /* @__PURE__ */ d("span", {
435
497
  className: "inline-flex items-center gap-2",
436
498
  children: [
437
499
  /* @__PURE__ */ u(Ae, { className: "size-4" }),
438
500
  "Archive Selected",
439
- q.length > 0 ? ` (${q.length})` : ""
501
+ G.length > 0 ? ` (${G.length})` : ""
440
502
  ]
441
503
  })
442
504
  })
@@ -445,165 +507,165 @@ function m() {
445
507
  })]
446
508
  })
447
509
  }),
448
- Xt ? /* @__PURE__ */ u(be, {
510
+ an ? /* @__PURE__ */ u(be, {
449
511
  variant: "cards",
450
512
  count: 6
451
- }) : G.length > 0 ? /* @__PURE__ */ u(ze, {
513
+ }) : U.length > 0 ? /* @__PURE__ */ u(ze, {
452
514
  mode: "wait",
453
- children: T === "grid" ? /* @__PURE__ */ u(p, {
515
+ children: w === "grid" ? /* @__PURE__ */ u(qe, {
454
516
  "data-tour": "vibes-page-grid-view",
455
517
  stagger: .04,
456
518
  className: "grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4 2xl:grid-cols-5 gap-4 xl:gap-3",
457
- children: G.map((e) => /* @__PURE__ */ u(Ke, { children: /* @__PURE__ */ u(we, {
519
+ children: U.map((e) => /* @__PURE__ */ u(Ke, { children: /* @__PURE__ */ u(we, {
458
520
  vibe: e,
459
- onOpen: It,
460
- onActivate: tt ? Lt : void 0,
461
- onArchive: tt ? Rt : void 0,
462
- onDelete: nt ? B : void 0,
463
- onOpenInEditor: Ht,
464
- selected: F.has(e.id),
465
- onToggleSelect: (t) => Wt(e, t)
521
+ onOpen: Wt,
522
+ onActivate: ct ? Gt : void 0,
523
+ onArchive: ct ? q : void 0,
524
+ onDelete: lt ? R : void 0,
525
+ onOpenInEditor: Yt,
526
+ selected: N.has(e.id),
527
+ onToggleSelect: (t) => Qt(e, t)
466
528
  }) }, e.id))
467
- }, "grid") : /* @__PURE__ */ u(p, { children: /* @__PURE__ */ u(Ee, {
468
- vibes: G,
469
- onOpen: It,
470
- onActivate: Lt,
471
- onArchive: Rt,
472
- onDelete: nt ? B : void 0,
473
- onOpenInEditor: Ht,
474
- selectedVibeIds: F,
475
- onToggleSelect: Wt,
476
- onToggleAllVisible: Gt,
477
- allVisibleSelected: J,
478
- partiallySelected: Ft
529
+ }, "grid") : /* @__PURE__ */ u(qe, { children: /* @__PURE__ */ u(Ee, {
530
+ vibes: U,
531
+ onOpen: Wt,
532
+ onActivate: Gt,
533
+ onArchive: q,
534
+ onDelete: lt ? R : void 0,
535
+ onOpenInEditor: Yt,
536
+ selectedVibeIds: N,
537
+ onToggleSelect: Qt,
538
+ onToggleAllVisible: $t,
539
+ allVisibleSelected: K,
540
+ partiallySelected: Ut
479
541
  }) }, "list")
480
542
  }) : /* @__PURE__ */ u(he, {
481
543
  icon: /* @__PURE__ */ u(Ie, { className: "size-8 text-text-secondary" }),
482
- illustration: x || S !== "all" || C !== "all" || w !== "all" ? "empty-search" : "empty-vibes",
483
- title: x || S !== "all" || C !== "all" || w !== "all" ? y("vibesPage.emptyNoVibesFound", "No vibes found") : y("vibesPage.emptyNoVibesConfigured", "No vibes configured"),
484
- description: x || S !== "all" || C !== "all" || w !== "all" ? y("vibesPage.emptyAdjustSearch", "Try adjusting your search or filters") : y("vibesPage.emptyNoVibesDescription", "Add your first vibe to start managing your development projects"),
485
- action: !x && S === "all" && C === "all" && w === "all" ? /* @__PURE__ */ d("div", {
544
+ illustration: b || x !== "all" || S !== "all" || C !== "all" ? "empty-search" : "empty-vibes",
545
+ title: b || x !== "all" || S !== "all" || C !== "all" ? _("vibesPage.emptyNoVibesFound", "No vibes found") : _("vibesPage.emptyNoVibesConfigured", "No vibes configured"),
546
+ description: b || x !== "all" || S !== "all" || C !== "all" ? _("vibesPage.emptyAdjustSearch", "Try adjusting your search or filters") : _("vibesPage.emptyNoVibesDescription", "Add your first vibe to start managing your development projects"),
547
+ action: !b && x === "all" && S === "all" && C === "all" ? /* @__PURE__ */ d("div", {
486
548
  className: "flex items-center gap-2",
487
549
  children: [/* @__PURE__ */ u(Ge, {
488
550
  permission: a.VIBE_CREATE,
489
551
  children: /* @__PURE__ */ d("button", {
490
552
  type: "button",
491
- onClick: Y,
553
+ onClick: J,
492
554
  className: "flex items-center gap-2 px-4 py-2 bg-action-primary-bg text-action-primary-text rounded-button hover:bg-action-primary-bgHover transition-all duration-200 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-border-focus",
493
- children: [/* @__PURE__ */ u(Pe, { className: "size-4" }), y("vibesPage.addVibe", "Add Vibe")]
555
+ children: [/* @__PURE__ */ u(Pe, { className: "size-4" }), _("vibesPage.addVibe", "Add Vibe")]
494
556
  })
495
557
  }), /* @__PURE__ */ u(ve, { prompt: "What is a Vibe in VibeControls and how do I create one?" })]
496
558
  }) : void 0
497
559
  }),
498
- k && /* @__PURE__ */ u("div", {
560
+ vt && /* @__PURE__ */ u("div", {
499
561
  className: "fixed bottom-4 right-4 z-50 px-4 py-3 bg-status-success-bg-subtle text-status-success-text border border-status-success-border rounded-card shadow-elevation-3 text-sm",
500
- children: k
562
+ children: vt
501
563
  }),
502
564
  /* @__PURE__ */ u(ne, {
503
- isOpen: pt === "activate",
504
- onClose: () => L(null),
505
- onConfirm: Kt,
565
+ isOpen: xt === "activate",
566
+ onClose: () => F(null),
567
+ onConfirm: en,
506
568
  title: "Activate selected vibes",
507
- message: `Activate ${K.length} selected vibe${K.length === 1 ? "" : "s"}?`,
569
+ message: `Activate ${W.length} selected vibe${W.length === 1 ? "" : "s"}?`,
508
570
  confirmLabel: "Activate",
509
571
  variant: "default"
510
572
  }),
511
573
  /* @__PURE__ */ u(ne, {
512
- isOpen: pt === "archive",
513
- onClose: () => L(null),
514
- onConfirm: qt,
574
+ isOpen: xt === "archive",
575
+ onClose: () => F(null),
576
+ onConfirm: tn,
515
577
  title: "Archive selected vibes",
516
- message: `Archive ${q.length} selected vibe${q.length === 1 ? "" : "s"}? Archived vibes will be hidden from active workflows.`,
578
+ message: `Archive ${G.length} selected vibe${G.length === 1 ? "" : "s"}? Archived vibes will be hidden from active workflows.`,
517
579
  confirmLabel: "Archive",
518
580
  variant: "warning"
519
581
  }),
520
- ft && /* @__PURE__ */ d("div", {
582
+ bt && /* @__PURE__ */ d("div", {
521
583
  role: "alert",
522
584
  className: "fixed bottom-4 right-4 z-50 px-4 py-3 bg-status-error-bg-subtle text-status-error-text border border-status-error-border rounded-card shadow-elevation-3 text-sm",
523
- children: [ft, /* @__PURE__ */ u("button", {
585
+ children: [bt, /* @__PURE__ */ u("button", {
524
586
  type: "button",
525
- onClick: mt,
587
+ onClick: St,
526
588
  className: "ml-3 text-xs underline opacity-80 hover:opacity-100",
527
- children: y("vibesPage.dismiss", "Dismiss")
589
+ children: _("vibesPage.dismiss", "Dismiss")
528
590
  })]
529
591
  }),
530
- ct && /* @__PURE__ */ u("div", {
592
+ ht && /* @__PURE__ */ u("div", {
531
593
  className: "fixed inset-0 bg-bg-overlay flex items-center justify-center z-50 p-4",
532
594
  children: /* @__PURE__ */ d("div", {
533
595
  className: "bg-bg-surface rounded-card border border-border-subtle shadow-[var(--shadow-elevation-4)] p-6 w-full max-w-lg",
534
596
  children: [
535
597
  /* @__PURE__ */ u("h2", {
536
598
  className: "text-lg font-semibold text-text-primary mb-4",
537
- children: y("vibesPage.addNewVibe", "Add New Vibe")
599
+ children: _("vibesPage.addNewVibe", "Add New Vibe")
538
600
  }),
539
601
  /* @__PURE__ */ d("div", {
540
602
  className: "space-y-4",
541
603
  children: [
542
- lt && /* @__PURE__ */ u("div", {
604
+ gt && /* @__PURE__ */ u("div", {
543
605
  className: "p-3 bg-status-error-bg-subtle text-status-error-text border border-status-error-border text-sm rounded-card",
544
- children: lt
606
+ children: gt
545
607
  }),
546
608
  /* @__PURE__ */ d("div", { children: [
547
609
  /* @__PURE__ */ u("label", {
548
610
  className: "block text-sm font-medium text-text-primary mb-1",
549
- children: y("vibesPage.nameLabel", "Name *")
611
+ children: _("vibesPage.nameLabel", "Name *")
550
612
  }),
551
613
  /* @__PURE__ */ u("input", {
552
614
  "aria-label": "control",
553
- ref: ht,
615
+ ref: Ct,
554
616
  type: "text",
555
- placeholder: y("vibesPage.namePlaceholder", "My Project"),
556
- onChange: () => M.name && N((e) => ({
617
+ placeholder: _("vibesPage.namePlaceholder", "My Project"),
618
+ onChange: () => A.name && j((e) => ({
557
619
  ...e,
558
620
  name: void 0
559
621
  })),
560
- className: `w-full px-3 py-2 bg-bg-sunken border rounded-input text-text-primary placeholder:text-text-placeholder transition-colors focus:outline-none focus:ring-1 focus:ring-[var(--color-focus-ring)] focus:border-border-strong ${M.name ? "border-status-error-border" : "border-border-subtle"}`
622
+ className: `w-full px-3 py-2 bg-bg-sunken border rounded-input text-text-primary placeholder:text-text-placeholder transition-colors focus:outline-none focus:ring-1 focus:ring-[var(--color-focus-ring)] focus:border-border-strong ${A.name ? "border-status-error-border" : "border-border-subtle"}`
561
623
  }),
562
- M.name && /* @__PURE__ */ u("p", {
624
+ A.name && /* @__PURE__ */ u("p", {
563
625
  className: "mt-1 text-xs text-status-error-text",
564
- children: M.name
626
+ children: A.name
565
627
  })
566
628
  ] }),
567
629
  /* @__PURE__ */ d("div", { children: [
568
630
  /* @__PURE__ */ d("label", {
569
631
  className: "block text-sm font-medium text-text-primary mb-1",
570
- children: [y("vibesPage.pathLabel", "Path"), /* @__PURE__ */ u("span", {
632
+ children: [_("vibesPage.pathLabel", "Path"), /* @__PURE__ */ u("span", {
571
633
  className: "ml-1 text-xs text-text-tertiary font-normal",
572
- children: y("vibesPage.pathOptional", "(optional)")
634
+ children: _("vibesPage.pathOptional", "(optional)")
573
635
  })]
574
636
  }),
575
637
  /* @__PURE__ */ u("input", {
576
638
  "aria-label": "control",
577
- ref: gt,
639
+ ref: wt,
578
640
  type: "text",
579
- placeholder: y("vibesPage.pathPlaceholder", "/path/to/project"),
580
- onChange: () => M.path && N((e) => ({
641
+ placeholder: _("vibesPage.pathPlaceholder", "/path/to/project"),
642
+ onChange: () => A.path && j((e) => ({
581
643
  ...e,
582
644
  path: void 0
583
645
  })),
584
- className: `w-full px-3 py-2 bg-bg-sunken border rounded-input text-text-primary placeholder:text-text-placeholder transition-colors focus:outline-none focus:ring-1 focus:ring-[var(--color-focus-ring)] focus:border-border-strong ${M.path ? "border-status-error-border" : "border-border-subtle"}`
646
+ className: `w-full px-3 py-2 bg-bg-sunken border rounded-input text-text-primary placeholder:text-text-placeholder transition-colors focus:outline-none focus:ring-1 focus:ring-[var(--color-focus-ring)] focus:border-border-strong ${A.path ? "border-status-error-border" : "border-border-subtle"}`
585
647
  }),
586
- M.path && /* @__PURE__ */ u("p", {
648
+ A.path && /* @__PURE__ */ u("p", {
587
649
  className: "mt-1 text-xs text-status-error-text",
588
- children: M.path
650
+ children: A.path
589
651
  })
590
652
  ] }),
591
653
  /* @__PURE__ */ d("div", { children: [/* @__PURE__ */ u("label", {
592
654
  className: "block text-sm font-medium text-text-primary mb-1",
593
- children: y("vibesPage.agentLabel", "Agent")
655
+ children: _("vibesPage.agentLabel", "Agent")
594
656
  }), /* @__PURE__ */ d("select", {
595
- ref: _t,
657
+ ref: Tt,
596
658
  className: "w-full px-3 py-2 bg-bg-sunken border border-border-subtle rounded-input text-text-primary transition-colors focus:outline-none focus:ring-1 focus:ring-[var(--color-focus-ring)] focus:border-border-strong",
597
659
  children: [/* @__PURE__ */ u("option", {
598
660
  value: "",
599
- children: y("vibesPage.selectAgent", "Select an agent")
600
- }), Nt.filter((e) => e.value !== "all").map((e) => /* @__PURE__ */ u("option", {
661
+ children: _("vibesPage.selectAgent", "Select an agent")
662
+ }), Vt.filter((e) => e.value !== "all").map((e) => /* @__PURE__ */ u("option", {
601
663
  value: e.value,
602
664
  children: e.label
603
665
  }, e.value))]
604
666
  })] }),
605
667
  /* @__PURE__ */ u("input", {
606
- ref: vt,
668
+ ref: Et,
607
669
  type: "hidden",
608
670
  value: "PROJECT"
609
671
  })
@@ -613,54 +675,54 @@ function m() {
613
675
  className: "mt-4 border-t border-border-subtle pt-4",
614
676
  children: [/* @__PURE__ */ u("h3", {
615
677
  className: "text-sm font-medium text-text-secondary mb-2",
616
- children: y("vibesPage.tags", "Tags")
678
+ children: _("vibesPage.tags", "Tags")
617
679
  }), /* @__PURE__ */ u(pe, {
618
680
  entityType: "VIBECONTROLS_VIBE",
619
- onDraftChange: xt
681
+ onDraftChange: kt
620
682
  })]
621
683
  }),
622
684
  /* @__PURE__ */ d("div", {
623
685
  className: "flex flex-col sm:flex-row justify-end gap-3 mt-6",
624
686
  children: [/* @__PURE__ */ u("button", {
625
687
  type: "button",
626
- onClick: () => E(!1),
627
- disabled: O,
688
+ onClick: () => T(!1),
689
+ disabled: D,
628
690
  className: "px-4 py-2 text-text-primary hover:bg-bg-sunken rounded-md transition-colors disabled:opacity-50",
629
- children: y("vibesPage.cancel", "Cancel")
691
+ children: _("vibesPage.cancel", "Cancel")
630
692
  }), /* @__PURE__ */ u("button", {
631
693
  type: "button",
632
- onClick: Jt,
633
- disabled: O,
694
+ onClick: nn,
695
+ disabled: D,
634
696
  className: "px-4 py-2 bg-action-primary-bg text-action-primary-text rounded-button hover:bg-action-primary-bgHover transition-all duration-200 disabled:opacity-50 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-border-focus",
635
- children: O ? y("vibesPage.creating", "Creating...") : y("vibesPage.createVibe", "Create Vibe")
697
+ children: D ? _("vibesPage.creating", "Creating...") : _("vibesPage.createVibe", "Create Vibe")
636
698
  })]
637
699
  })
638
700
  ]
639
701
  })
640
702
  }),
641
703
  /* @__PURE__ */ u(re, {
642
- isOpen: dt,
643
- onClose: () => j(!1),
704
+ isOpen: yt,
705
+ onClose: () => k(!1),
644
706
  onConfirm: () => {
645
- j(!1), Je("/billing/plans");
707
+ k(!1), tt("/billing/plans");
646
708
  },
647
709
  title: "Vibe Quota Reached",
648
710
  message: "You've used all available vibe creation quota on your current plan. Upgrade your plan to create more vibes."
649
711
  })
650
712
  ] }),
651
- z && /* @__PURE__ */ u(Te, {
713
+ L && /* @__PURE__ */ u(Te, {
652
714
  vibe: {
653
- id: z.id,
654
- name: z.name
715
+ id: L.id,
716
+ name: L.name
655
717
  },
656
- deleting: Et,
657
- onConfirm: zt,
658
- onCancel: () => B(null)
718
+ deleting: Pt,
719
+ onConfirm: Kt,
720
+ onCancel: () => R(null)
659
721
  })
660
722
  ]
661
723
  });
662
724
  }
663
725
  //#endregion
664
- export { m as VibesPage };
726
+ export { et as VibesPage };
665
727
 
666
728
  //# sourceMappingURL=VibesPage.js.map