@burdenoff/microfe-vibecontrols 2026.522.1 → 2026.522.2

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.
@@ -1,123 +1,132 @@
1
- import { useArchiveVibeMutation as e, useCreateVibeMutation as t, useListAgentsQuery as n, useListVibesQuery as r, useUpdateVibeStatusMutation as i } from "../generated/wspace-operations.js";
2
- import { useVibeControls as a, useVibeNavigate as ee } from "../providers/VibeControlsProvider.js";
3
- import { useVibeControlsStore as te } from "../store/vibeControlsStore.js";
4
- import { PageHeader as ne } from "../components/shared/PageHeader.js";
5
- import { LoadingState as re } from "../components/shared/LoadingState.js";
6
- import { ErrorState as ie } from "../components/shared/ErrorState.js";
7
- import { ConfirmDialog as ae } from "../components/shared/ConfirmDialog.js";
8
- import { QuotaExhaustedDialog as oe } from "../components/shared/QuotaExhaustedDialog.js";
9
- import { isQuotaExhaustedError as se } from "../utils/quotaUtils.js";
10
- import { EntityTagPicker as ce } from "../components/shared/EntityTagPicker.js";
11
- import { useDraftEntityTags as le } from "../hooks/useDraftEntityTags.js";
12
- import { EmptyState as ue } from "../components/shared/EmptyState.js";
13
- import { SearchInput as de } from "../components/shared/SearchInput.js";
1
+ import { useArchiveVibeMutation as e, useCreateVibeMutation as t, useListAgentsLazyQuery as n, useListVibesQuery as r, useUpdateVibeStatusMutation as i } from "../generated/wspace-operations.js";
2
+ import { useVibeControls as ee, useVibeNavigate as te } from "../providers/VibeControlsProvider.js";
3
+ import { useVibeControlsStore as ne } from "../store/vibeControlsStore.js";
4
+ import re from "../hooks/useCachedInitialData.js";
5
+ import { PageHeader as ie } from "../components/shared/PageHeader.js";
6
+ import { LoadingState as ae } from "../components/shared/LoadingState.js";
7
+ import { ErrorState as oe } from "../components/shared/ErrorState.js";
8
+ import { ConfirmDialog as a } from "../components/shared/ConfirmDialog.js";
9
+ import { QuotaExhaustedDialog as se } from "../components/shared/QuotaExhaustedDialog.js";
10
+ import { isQuotaExhaustedError as ce } from "../utils/quotaUtils.js";
11
+ import { EntityTagPicker as le } from "../components/shared/EntityTagPicker.js";
12
+ import { useDraftEntityTags as ue } from "../hooks/useDraftEntityTags.js";
13
+ import { EmptyState as de } from "../components/shared/EmptyState.js";
14
+ import { SearchInput as fe } from "../components/shared/SearchInput.js";
14
15
  import { FilterDropdown as o } from "../components/shared/FilterDropdown.js";
15
- import { GetHelpButton as fe } from "../components/shared/GetHelpButton.js";
16
- import { SelectionCheckbox as pe } from "../components/shared/SelectionCheckbox.js";
16
+ import { GetHelpButton as pe } from "../components/shared/GetHelpButton.js";
17
+ import { SelectionCheckbox as me } from "../components/shared/SelectionCheckbox.js";
17
18
  import "../components/shared/index.js";
18
19
  import { VIBE_PERMISSIONS as s } from "../constants/permissions.js";
19
- import { PageSkeleton as me } from "../components/shared/PageSkeleton.js";
20
- import { buildProtocolUrl as he, getIdePreset as ge, resolveEffectiveIdeCommand as _e } from "../components/agents/idePresets.js";
21
- import { VibeCard as ve } from "../components/vibes/VibeCard.js";
22
- import { VibeList as ye } from "../components/vibes/VibeList.js";
20
+ import { PageSkeleton as he } from "../components/shared/PageSkeleton.js";
21
+ import { buildProtocolUrl as ge, getIdePreset as _e, resolveEffectiveIdeCommand as ve } from "../components/agents/idePresets.js";
22
+ import { VibeCard as ye } from "../components/vibes/VibeCard.js";
23
+ import { VibeList as be } from "../components/vibes/VibeList.js";
23
24
  import "../components/vibes/index.js";
24
- import { useCallback as be, useEffect as xe, useMemo as c, useRef as l, useState as u } from "react";
25
+ import { useCallback as c, useEffect as xe, useMemo as l, useRef as u, useState as d } from "react";
25
26
  import { useI18n as Se } from "@burdenoff/fe-libs/shared/providers/shell/I18nProvider";
26
27
  import { Archive as Ce, Grid as we, List as Te, Play as Ee, Plus as De, RefreshCw as Oe, Zap as ke } from "lucide-react";
27
28
  import { usePermissions as Ae } from "@burdenoff/fe-libs/shared/providers/shell";
28
29
  import { AnimatePresence as je } from "framer-motion";
29
- import { Fragment as Me, jsx as d, jsxs as f } from "react/jsx-runtime";
30
- import { MotionItem as Ne, MotionList as Pe, MotionPage as Fe } from "@burdenoff/fe-libs/shared/motion";
31
- import { AccessDenied as Ie, PermissionButton as Le, PermissionGate as Re } from "@burdenoff/fe-libs/shared/components";
30
+ import { Fragment as Me, jsx as f, jsxs as p } from "react/jsx-runtime";
31
+ import { MotionItem as Ne, MotionList as m, MotionPage as Pe } from "@burdenoff/fe-libs/shared/motion";
32
+ import { AccessDenied as Fe, PermissionButton as Ie, PermissionGate as Le } from "@burdenoff/fe-libs/shared/components";
32
33
  //#region src/pages/VibesPage.tsx
33
- function ze() {
34
- let { onVibeActivate: ze } = a(), p = ee(), { hasPermission: Be, isLoading: m, permissions: h } = Ae(), { t: g } = Se(), _ = be((e, t, n) => {
35
- let r = g(e, n), i = r === e ? t : r;
34
+ function h() {
35
+ let { onVibeActivate: h } = ee(), g = te(), { hasPermission: _, isLoading: v, permissions: y } = Ae(), { t: b } = Se(), x = c((e, t, n) => {
36
+ let r = b(e, n), i = r === e ? t : r;
36
37
  return n ? Object.entries(n).reduce((e, [t, n]) => e.replace(`{{${t}}}`, String(n)), i) : i;
37
- }, [g]), Ve = [
38
+ }, [b]), Re = [
38
39
  {
39
40
  value: "all",
40
- label: _("vibesPage.statusAll", "All Statuses")
41
+ label: x("vibesPage.statusAll", "All Statuses")
41
42
  },
42
43
  {
43
44
  value: "ACTIVE",
44
- label: _("vibesPage.statusActive", "Active")
45
+ label: x("vibesPage.statusActive", "Active")
45
46
  },
46
47
  {
47
48
  value: "INACTIVE",
48
- label: _("vibesPage.statusInactive", "Inactive")
49
+ label: x("vibesPage.statusInactive", "Inactive")
49
50
  },
50
51
  {
51
52
  value: "ARCHIVED",
52
- label: _("vibesPage.statusArchived", "Archived")
53
+ label: x("vibesPage.statusArchived", "Archived")
53
54
  },
54
55
  {
55
56
  value: "ERROR",
56
- label: _("vibesPage.statusError", "Error")
57
+ label: x("vibesPage.statusError", "Error")
57
58
  }
58
- ], He = [
59
+ ], ze = [
59
60
  {
60
61
  value: "all",
61
- label: _("vibesPage.typeAll", "All Types")
62
+ label: x("vibesPage.typeAll", "All Types")
62
63
  },
63
64
  {
64
65
  value: "PROJECT",
65
- label: _("vibesPage.typeProject", "Project")
66
+ label: x("vibesPage.typeProject", "Project")
66
67
  },
67
68
  {
68
69
  value: "REPOSITORY",
69
- label: _("vibesPage.typeRepository", "Repository")
70
+ label: x("vibesPage.typeRepository", "Repository")
70
71
  },
71
72
  {
72
73
  value: "WORKSPACE",
73
- label: _("vibesPage.typeWorkspace", "Workspace")
74
+ label: x("vibesPage.typeWorkspace", "Workspace")
74
75
  },
75
76
  {
76
77
  value: "MONOREPO",
77
- label: _("vibesPage.typeMonorepo", "Monorepo")
78
+ label: x("vibesPage.typeMonorepo", "Monorepo")
78
79
  },
79
80
  {
80
81
  value: "PACKAGE",
81
- label: _("vibesPage.typePackage", "Package")
82
+ label: x("vibesPage.typePackage", "Package")
82
83
  },
83
84
  {
84
85
  value: "CUSTOM",
85
- label: _("vibesPage.typeCustom", "Custom")
86
+ label: x("vibesPage.typeCustom", "Custom")
86
87
  }
87
- ], v = Be(s.VIBE_LIST), Ue = Be(s.VIBE_UPDATE), We = m || !v, [y, Ge] = u(""), [b, Ke] = u("all"), [x, qe] = u("all"), [S, Je] = u("all"), [C, Ye] = u("grid"), [Xe, w] = u(!1), [Ze, T] = u(null), [E, Qe] = u(!1), [$e, D] = u(null), [et, O] = u(!1), [k, A] = u({}), [j, M] = u(null), [N, P] = u(/* @__PURE__ */ new Set()), [F, I] = u(null), L = l(null);
88
+ ], S = _(s.VIBE_LIST), C = _(s.VIBE_UPDATE), w = v || !S, [T, Be] = d(""), [E, Ve] = d("all"), [D, He] = d("all"), [O, Ue] = d("all"), [k, We] = d("grid"), [Ge, A] = d(!1), [Ke, j] = d(null), [M, qe] = d(!1), [Je, N] = d(null), [Ye, P] = d(!1), [F, I] = d({}), [Xe, L] = d(null), [R, z] = d(/* @__PURE__ */ new Set()), [Ze, B] = d(null), V = u(null);
88
89
  xe(() => () => {
89
- L.current && clearTimeout(L.current);
90
+ V.current && clearTimeout(V.current);
90
91
  }, []);
91
- let tt = be(() => {
92
- M(null), L.current &&= (clearTimeout(L.current), null);
93
- }, []), R = l(null), z = l(null), B = l(null), V = l(null), [nt] = t(), { setDraftTagIds: rt, flushTags: it } = le("VIBECONTROLS_VIBE"), [H] = i(), [at] = e(), { data: ot, loading: U, error: W, refetch: G } = r({
94
- variables: c(() => ({ filter: {
95
- status: b === "all" ? void 0 : b,
96
- type: x === "all" ? void 0 : x,
97
- attachedAgentIds: S === "all" ? void 0 : [S]
92
+ let Qe = c(() => {
93
+ L(null), V.current &&= (clearTimeout(V.current), null);
94
+ }, []), $e = u(null), et = u(null), tt = u(null), nt = u(null), [rt] = t(), { setDraftTagIds: it, flushTags: at } = ue("VIBECONTROLS_VIBE"), [ot] = i(), [st] = e(), { data: ct, loading: H, error: lt, refetch: U } = r({
95
+ variables: l(() => ({ filter: {
96
+ status: E === "all" ? void 0 : E,
97
+ type: D === "all" ? void 0 : D,
98
+ attachedAgentIds: O === "all" ? void 0 : [O]
98
99
  } }), [
99
- b,
100
- x,
101
- S
100
+ E,
101
+ D,
102
+ O
102
103
  ]),
103
- fetchPolicy: "cache-and-network",
104
+ fetchPolicy: E === "all" && D === "all" && O === "all" ? "cache-first" : "cache-and-network",
104
105
  nextFetchPolicy: "cache-first",
105
- skip: We,
106
+ skip: w,
106
107
  notifyOnNetworkStatusChange: !0
107
- }), { data: st } = n({
108
- variables: { pagination: { limit: 100 } },
109
- fetchPolicy: "cache-first",
110
- skip: We
111
- }), ct = c(() => {
112
- let e = st?.vibecontrolsAgents ?? [];
108
+ }), { agents: ut } = re(), [dt, { data: ft }] = n({ fetchPolicy: "cache-first" }), pt = u(!1), W = c(() => {
109
+ pt.current || w || (pt.current = !0, dt({ variables: { pagination: { limit: 100 } } }));
110
+ }, [dt, w]), mt = l(() => {
111
+ let e = ft?.vibecontrolsAgents ?? null, t = e ? e.map((e) => ({
112
+ id: e.id,
113
+ name: e.name
114
+ })) : ut.map((e) => ({
115
+ id: e.id,
116
+ name: e.name
117
+ }));
113
118
  return [{
114
119
  value: "all",
115
- label: _("vibesPage.allAgents", "All Agents")
116
- }, ...e.map((e) => ({
120
+ label: x("vibesPage.allAgents", "All Agents")
121
+ }, ...t.map((e) => ({
117
122
  value: e.id,
118
123
  label: e.name
119
124
  }))];
120
- }, [st?.vibecontrolsAgents, _]), K = c(() => (ot?.vibes?.items ?? []).map((e) => ({
125
+ }, [
126
+ ft?.vibecontrolsAgents,
127
+ ut,
128
+ x
129
+ ]), G = l(() => (ct?.vibes?.items ?? []).map((e) => ({
121
130
  id: e.id,
122
131
  workspaceId: e.workspaceId,
123
132
  name: e.name,
@@ -140,20 +149,20 @@ function ze() {
140
149
  isActive: e.isActive,
141
150
  ownerUserId: e.ownerUserId ?? null
142
151
  }))
143
- })), [ot?.vibes?.items]), q = c(() => K.filter((e) => {
144
- if (y) {
145
- let t = y.toLowerCase();
152
+ })), [ct?.vibes?.items]), K = l(() => G.filter((e) => {
153
+ if (T) {
154
+ let t = T.toLowerCase();
146
155
  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;
147
156
  }
148
157
  return !0;
149
- }), [K, y]), lt = c(() => K.filter((e) => N.has(e.id)), [K, N]), J = lt.filter((e) => e.status !== "ACTIVE"), Y = lt.filter((e) => e.status !== "ARCHIVED"), X = q.length > 0 && q.every((e) => N.has(e.id)), ut = q.some((e) => N.has(e.id)) && !X, dt = (e) => {
150
- p(`/vibes/${e.id}`);
151
- }, ft = async (e) => {
158
+ }), [G, T]), ht = l(() => G.filter((e) => R.has(e.id)), [G, R]), q = ht.filter((e) => e.status !== "ACTIVE"), J = ht.filter((e) => e.status !== "ARCHIVED"), Y = K.length > 0 && K.every((e) => R.has(e.id)), gt = K.some((e) => R.has(e.id)) && !Y, _t = (e) => {
159
+ g(`/vibes/${e.id}`);
160
+ }, vt = async (e) => {
152
161
  try {
153
- (await H({ variables: {
162
+ (await ot({ variables: {
154
163
  id: e.id,
155
164
  status: "ACTIVE"
156
- } })).data?.updateVibeStatus && ze?.({
165
+ } })).data?.updateVibeStatus && h?.({
157
166
  id: e.id,
158
167
  name: e.name,
159
168
  type: e.type,
@@ -162,56 +171,56 @@ function ze() {
162
171
  } catch (e) {
163
172
  console.error("Failed to activate vibe:", e);
164
173
  }
165
- }, pt = async (e) => {
174
+ }, yt = async (e) => {
166
175
  try {
167
- await at({ variables: { id: e.id } });
176
+ await st({ variables: { id: e.id } });
168
177
  } catch (e) {
169
178
  console.error("Failed to archive vibe:", e);
170
179
  }
171
- }, mt = te((e) => e.preferredIdeCommand), ht = te((e) => e.vibeIdeOverrides), gt = (e) => {
180
+ }, bt = ne((e) => e.preferredIdeCommand), xt = ne((e) => e.vibeIdeOverrides), St = (e) => {
172
181
  if (!e.path) {
173
- M(_("vibesPage.openEditorPathMissing", "No path available to open in editor")), L.current = setTimeout(() => {
174
- M(null), L.current = null;
182
+ L(x("vibesPage.openEditorPathMissing", "No path available to open in editor")), V.current = setTimeout(() => {
183
+ L(null), V.current = null;
175
184
  }, 3e3);
176
185
  return;
177
186
  }
178
- let t = _e(e.id, mt, ht), n = ge(t), r = n ? he(n, e.path) : `vscode://file/${e.path}`;
179
- r ? window.location.href = r : (M(_("vibesPage.openEditorNoProtocol", `${n?.label ?? t} has no URL handler — open this Vibe and use the editor menu.`)), L.current = setTimeout(() => {
180
- M(null), L.current = null;
187
+ let t = ve(e.id, bt, xt), n = _e(t), r = n ? ge(n, e.path) : `vscode://file/${e.path}`;
188
+ r ? window.location.href = r : (L(x("vibesPage.openEditorNoProtocol", `${n?.label ?? t} has no URL handler — open this Vibe and use the editor menu.`)), V.current = setTimeout(() => {
189
+ L(null), V.current = null;
181
190
  }, 4e3));
182
- }, _t = () => {
183
- T(null), w(!0);
184
- }, vt = (e, t) => {
185
- P((n) => {
191
+ }, X = () => {
192
+ j(null), A(!0), W();
193
+ }, Ct = (e, t) => {
194
+ z((n) => {
186
195
  let r = new Set(n);
187
196
  return t ? r.add(e.id) : r.delete(e.id), r;
188
197
  });
189
- }, yt = (e) => {
190
- P((t) => {
198
+ }, wt = (e) => {
199
+ z((t) => {
191
200
  let n = new Set(t);
192
- return q.forEach((t) => {
201
+ return K.forEach((t) => {
193
202
  e ? n.add(t.id) : n.delete(t.id);
194
203
  }), n;
195
204
  });
196
- }, Z = () => P(/* @__PURE__ */ new Set()), bt = async () => {
197
- if (J.length === 0) return;
198
- let e = await Promise.allSettled(J.map((e) => H({ variables: {
205
+ }, Z = () => z(/* @__PURE__ */ new Set()), Tt = async () => {
206
+ if (q.length === 0) return;
207
+ let e = await Promise.allSettled(q.map((e) => ot({ variables: {
199
208
  id: e.id,
200
209
  status: "ACTIVE"
201
210
  } }))), t = e.filter((e) => e.status === "fulfilled").length, n = e.length - t;
202
- D(`Activated ${t} vibe${t === 1 ? "" : "s"}${n > 0 ? ` • ${n} failed` : ""}`), setTimeout(() => D(null), 4e3), Z(), I(null), await G();
203
- }, xt = async () => {
204
- if (Y.length === 0) return;
205
- let e = await Promise.allSettled(Y.map((e) => at({ variables: { id: e.id } }))), t = e.filter((e) => e.status === "fulfilled").length, n = e.length - t;
206
- D(`Archived ${t} vibe${t === 1 ? "" : "s"}${n > 0 ? ` • ${n} failed` : ""}`), setTimeout(() => D(null), 4e3), Z(), I(null), await G();
207
- }, St = async () => {
208
- let e = R.current?.value?.trim(), t = z.current?.value?.trim(), n = B.current?.value, r = V.current?.value, i = {};
209
- if (e || (i.name = _("vibesPage.nameRequired", "Name is required")), t || (i.path = _("vibesPage.pathRequired", "Path is required")), i.name || i.path) {
210
- A(i), T(_("vibesPage.fillRequired", "Please fill in all required fields"));
211
+ N(`Activated ${t} vibe${t === 1 ? "" : "s"}${n > 0 ? ` • ${n} failed` : ""}`), setTimeout(() => N(null), 4e3), Z(), B(null), await U();
212
+ }, Et = async () => {
213
+ if (J.length === 0) return;
214
+ let e = await Promise.allSettled(J.map((e) => st({ variables: { id: e.id } }))), t = e.filter((e) => e.status === "fulfilled").length, n = e.length - t;
215
+ N(`Archived ${t} vibe${t === 1 ? "" : "s"}${n > 0 ? ` • ${n} failed` : ""}`), setTimeout(() => N(null), 4e3), Z(), B(null), await U();
216
+ }, Dt = async () => {
217
+ let e = $e.current?.value?.trim(), t = et.current?.value?.trim(), n = tt.current?.value, r = nt.current?.value, i = {};
218
+ if (e || (i.name = x("vibesPage.nameRequired", "Name is required")), t || (i.path = x("vibesPage.pathRequired", "Path is required")), i.name || i.path) {
219
+ I(i), j(x("vibesPage.fillRequired", "Please fill in all required fields"));
211
220
  return;
212
221
  }
213
- A({});
214
- let a = [
222
+ I({});
223
+ let ee = [
215
224
  "PROJECT",
216
225
  "REPOSITORY",
217
226
  "WORKSPACE",
@@ -219,180 +228,184 @@ function ze() {
219
228
  "PACKAGE",
220
229
  "CUSTOM"
221
230
  ].includes(r) ? r : "PROJECT";
222
- Qe(!0), T(null);
231
+ qe(!0), j(null);
223
232
  try {
224
- let r = await nt({ variables: { input: {
233
+ let r = await rt({ variables: { input: {
225
234
  name: e,
226
235
  path: t,
227
- type: a,
236
+ type: ee,
228
237
  agentId: n || void 0
229
238
  } } });
230
- if (!r.data?.createVibe?.id) throw Error(_("vibesPage.failedCreate", "Failed to create vibe"));
239
+ if (!r.data?.createVibe?.id) throw Error(x("vibesPage.failedCreate", "Failed to create vibe"));
231
240
  let i = r.data.createVibe.id;
232
- w(!1), D(_("vibesPage.createdSuccess", "Vibe created successfully")), await it(i), await G(), setTimeout(() => D(null), 3e3);
241
+ A(!1), N(x("vibesPage.createdSuccess", "Vibe created successfully")), await at(i), await U(), setTimeout(() => N(null), 3e3);
233
242
  } catch (e) {
234
- if (se(e)) {
235
- w(!1), T(null), A({}), O(!0);
243
+ if (ce(e)) {
244
+ A(!1), j(null), I({}), P(!0);
236
245
  return;
237
246
  }
238
- T(e instanceof Error ? e.message : _("vibesPage.failedCreate", "Failed to create vibe"));
247
+ j(e instanceof Error ? e.message : x("vibesPage.failedCreate", "Failed to create vibe"));
239
248
  } finally {
240
- Qe(!1);
249
+ qe(!1);
241
250
  }
242
- }, Ct = {
243
- total: K.length,
244
- active: K.filter((e) => e.status === "ACTIVE").length,
245
- inactive: K.filter((e) => e.status === "INACTIVE").length
246
- }, Q = m, $ = !m && !!h && (h.permissionStrings?.length ?? 0) > 0 && !v, wt = !Q && !$ && U && K.length === 0, Tt = !Q && !$ && !!W && K.length === 0, Et = !Q && !$ && !Tt;
247
- return /* @__PURE__ */ f(Fe, {
251
+ }, Ot = {
252
+ total: G.length,
253
+ active: G.filter((e) => e.status === "ACTIVE").length,
254
+ inactive: G.filter((e) => e.status === "INACTIVE").length
255
+ }, Q = v, $ = !v && !!y && (y.permissionStrings?.length ?? 0) > 0 && !S, kt = !Q && !$ && H && G.length === 0, At = !Q && !$ && !!lt && G.length === 0, jt = !Q && !$ && !At;
256
+ return /* @__PURE__ */ p(Pe, {
248
257
  className: "space-y-6 p-4 sm:p-6 bg-bg-surface min-h-screen",
249
258
  children: [
250
- Q && /* @__PURE__ */ d(re, { message: _("vibesPage.loadingPermissions", "Loading permissions...") }),
251
- $ && /* @__PURE__ */ d(Ie, {
252
- title: _("vibesPage.accessDeniedTitle", "Access Denied"),
253
- description: _("vibesPage.accessDeniedDescription", "You don't have permission to view vibes. Contact your workspace administrator for access.")
259
+ Q && /* @__PURE__ */ f(ae, { message: x("vibesPage.loadingPermissions", "Loading permissions...") }),
260
+ $ && /* @__PURE__ */ f(Fe, {
261
+ title: x("vibesPage.accessDeniedTitle", "Access Denied"),
262
+ description: x("vibesPage.accessDeniedDescription", "You don't have permission to view vibes. Contact your workspace administrator for access.")
254
263
  }),
255
- Tt && /* @__PURE__ */ d(ie, {
256
- title: _("vibesPage.failedLoad", "Failed to load vibes"),
257
- message: W?.message ?? "",
258
- onRetry: () => G()
264
+ At && /* @__PURE__ */ f(oe, {
265
+ title: x("vibesPage.failedLoad", "Failed to load vibes"),
266
+ message: lt?.message ?? "",
267
+ onRetry: () => U()
259
268
  }),
260
- Et && /* @__PURE__ */ f(Me, { children: [
261
- /* @__PURE__ */ d(ne, {
262
- title: _("vibesPage.title", "Vibes"),
263
- description: _("vibesPage.descriptionActive", "{{active}} of {{total}} vibes active", {
264
- active: Ct.active,
265
- total: Ct.total
269
+ jt && /* @__PURE__ */ p(Me, { children: [
270
+ /* @__PURE__ */ f(ie, {
271
+ title: x("vibesPage.title", "Vibes"),
272
+ description: x("vibesPage.descriptionActive", "{{active}} of {{total}} vibes active", {
273
+ active: Ot.active,
274
+ total: Ot.total
266
275
  }),
267
- actions: /* @__PURE__ */ f("div", {
276
+ actions: /* @__PURE__ */ p("div", {
268
277
  className: "flex items-center gap-2",
269
- children: [/* @__PURE__ */ d("button", {
270
- onClick: () => G(),
271
- disabled: U,
278
+ children: [/* @__PURE__ */ f("button", {
279
+ onClick: () => U(),
280
+ disabled: H,
272
281
  className: "flex items-center gap-2 px-3 py-2 text-text-secondary hover:bg-bg-sunken rounded-md transition-colors disabled:opacity-50",
273
- title: _("vibesPage.refreshTitle", "Refresh vibes"),
274
- children: /* @__PURE__ */ d(Oe, { className: `w-4 h-4 ${U ? "animate-spin" : ""}` })
275
- }), /* @__PURE__ */ d(Le, {
282
+ title: x("vibesPage.refreshTitle", "Refresh vibes"),
283
+ children: /* @__PURE__ */ f(Oe, { className: `w-4 h-4 ${H ? "animate-spin" : ""}` })
284
+ }), /* @__PURE__ */ f(Ie, {
276
285
  permission: s.VIBE_CREATE,
277
286
  deniedBehavior: "disable",
278
- deniedTooltip: _("vibesPage.deniedCreateTooltip", "You don't have permission to create vibes"),
279
- children: /* @__PURE__ */ f("button", {
280
- onClick: _t,
287
+ deniedTooltip: x("vibesPage.deniedCreateTooltip", "You don't have permission to create vibes"),
288
+ children: /* @__PURE__ */ p("button", {
289
+ onClick: X,
281
290
  className: "flex items-center gap-2 px-4 py-2 bg-action-primary-bg text-action-primary-text rounded-md hover:bg-action-primary-bg-hover transition-colors disabled:opacity-50 disabled:cursor-not-allowed",
282
- children: [/* @__PURE__ */ d(De, { className: "w-4 h-4" }), _("vibesPage.addVibe", "Add Vibe")]
291
+ children: [/* @__PURE__ */ f(De, { className: "w-4 h-4" }), x("vibesPage.addVibe", "Add Vibe")]
283
292
  })
284
293
  })]
285
294
  })
286
295
  }),
287
- /* @__PURE__ */ f("div", {
296
+ /* @__PURE__ */ p("div", {
288
297
  className: "space-y-3",
289
- children: [/* @__PURE__ */ f("div", {
298
+ children: [/* @__PURE__ */ p("div", {
290
299
  className: "flex items-center gap-2",
291
- children: [/* @__PURE__ */ d(de, {
292
- value: y,
293
- onChange: Ge,
294
- placeholder: _("vibesPage.searchPlaceholder", "Search vibes..."),
300
+ children: [/* @__PURE__ */ f(fe, {
301
+ value: T,
302
+ onChange: Be,
303
+ placeholder: x("vibesPage.searchPlaceholder", "Search vibes..."),
295
304
  className: "flex-1 sm:w-64 sm:flex-none"
296
- }), /* @__PURE__ */ f("div", {
305
+ }), /* @__PURE__ */ p("div", {
297
306
  className: "flex items-center gap-1 bg-bg-sunken rounded-md p-1 flex-shrink-0",
298
- children: [/* @__PURE__ */ d("button", {
299
- onClick: () => Ye("grid"),
300
- className: `p-1.5 sm:p-2 rounded ${C === "grid" ? "bg-bg-surface shadow-sm" : "hover:bg-bg-surface/50"}`,
301
- title: _("vibesPage.gridViewTitle", "Grid view"),
302
- children: /* @__PURE__ */ d(we, { className: "w-4 h-4 text-text-secondary" })
303
- }), /* @__PURE__ */ d("button", {
304
- onClick: () => Ye("list"),
305
- className: `p-1.5 sm:p-2 rounded ${C === "list" ? "bg-bg-surface shadow-sm" : "hover:bg-bg-surface/50"}`,
306
- title: _("vibesPage.listViewTitle", "List view"),
307
- children: /* @__PURE__ */ d(Te, { className: "w-4 h-4 text-text-secondary" })
307
+ children: [/* @__PURE__ */ f("button", {
308
+ onClick: () => We("grid"),
309
+ className: `p-1.5 sm:p-2 rounded ${k === "grid" ? "bg-bg-surface shadow-sm" : "hover:bg-bg-surface/50"}`,
310
+ title: x("vibesPage.gridViewTitle", "Grid view"),
311
+ children: /* @__PURE__ */ f(we, { className: "w-4 h-4 text-text-secondary" })
312
+ }), /* @__PURE__ */ f("button", {
313
+ onClick: () => We("list"),
314
+ className: `p-1.5 sm:p-2 rounded ${k === "list" ? "bg-bg-surface shadow-sm" : "hover:bg-bg-surface/50"}`,
315
+ title: x("vibesPage.listViewTitle", "List view"),
316
+ children: /* @__PURE__ */ f(Te, { className: "w-4 h-4 text-text-secondary" })
308
317
  })]
309
318
  })]
310
- }), /* @__PURE__ */ f("div", {
319
+ }), /* @__PURE__ */ p("div", {
311
320
  className: "flex items-center gap-2 sm:gap-3 flex-wrap",
312
321
  children: [
313
- /* @__PURE__ */ d(o, {
314
- label: _("vibesPage.filterStatus", "Status"),
315
- value: b,
316
- options: Ve,
317
- onChange: Ke
322
+ /* @__PURE__ */ f(o, {
323
+ label: x("vibesPage.filterStatus", "Status"),
324
+ value: E,
325
+ options: Re,
326
+ onChange: Ve
318
327
  }),
319
- /* @__PURE__ */ d(o, {
320
- label: _("vibesPage.filterType", "Type"),
321
- value: x,
322
- options: He,
323
- onChange: qe
328
+ /* @__PURE__ */ f(o, {
329
+ label: x("vibesPage.filterType", "Type"),
330
+ value: D,
331
+ options: ze,
332
+ onChange: He
324
333
  }),
325
- /* @__PURE__ */ d(o, {
326
- label: _("vibesPage.filterAgent", "Agent"),
327
- value: S,
328
- options: ct,
329
- onChange: Je
334
+ /* @__PURE__ */ f("div", {
335
+ onMouseDown: W,
336
+ onFocus: W,
337
+ children: /* @__PURE__ */ f(o, {
338
+ label: x("vibesPage.filterAgent", "Agent"),
339
+ value: O,
340
+ options: mt,
341
+ onChange: Ue
342
+ })
330
343
  })
331
344
  ]
332
345
  })]
333
346
  }),
334
- y || b !== "all" || x !== "all" || S !== "all" ? /* @__PURE__ */ f("p", {
347
+ T || E !== "all" || D !== "all" || O !== "all" ? /* @__PURE__ */ p("p", {
335
348
  className: "text-sm text-text-secondary",
336
- children: [_("vibesPage.showingResults", "Showing {{filtered}} of {{total}} vibes", {
337
- filtered: q.length,
338
- total: K.length
339
- }), U && /* @__PURE__ */ d("span", {
349
+ children: [x("vibesPage.showingResults", "Showing {{filtered}} of {{total}} vibes", {
350
+ filtered: K.length,
351
+ total: G.length
352
+ }), H && /* @__PURE__ */ f("span", {
340
353
  className: "ml-2 text-text-muted",
341
- children: _("vibesPage.refreshing", "(refreshing...)")
354
+ children: x("vibesPage.refreshing", "(refreshing...)")
342
355
  })]
343
356
  }) : null,
344
- q.length > 0 && /* @__PURE__ */ d("div", {
357
+ K.length > 0 && /* @__PURE__ */ f("div", {
345
358
  className: "rounded-lg border border-border-default bg-bg-surface p-4",
346
- children: /* @__PURE__ */ f("div", {
359
+ children: /* @__PURE__ */ p("div", {
347
360
  className: "flex flex-col gap-3 lg:flex-row lg:items-center lg:justify-between",
348
- children: [/* @__PURE__ */ f("div", {
361
+ children: [/* @__PURE__ */ p("div", {
349
362
  className: "flex flex-wrap items-center gap-3",
350
- children: [/* @__PURE__ */ f("div", {
363
+ children: [/* @__PURE__ */ p("div", {
351
364
  className: "flex items-center gap-2",
352
- children: [/* @__PURE__ */ d(pe, {
353
- checked: X,
354
- indeterminate: ut,
355
- onChange: yt,
365
+ children: [/* @__PURE__ */ f(me, {
366
+ checked: Y,
367
+ indeterminate: gt,
368
+ onChange: wt,
356
369
  ariaLabel: "Select all visible vibes"
357
- }), /* @__PURE__ */ d("span", {
370
+ }), /* @__PURE__ */ f("span", {
358
371
  className: "text-sm font-medium text-text-primary",
359
372
  children: "Select all visible"
360
373
  })]
361
- }), N.size > 0 && /* @__PURE__ */ d("button", {
374
+ }), R.size > 0 && /* @__PURE__ */ f("button", {
362
375
  onClick: Z,
363
376
  className: "text-sm text-text-secondary hover:text-text-primary",
364
377
  children: "Clear selection"
365
378
  })]
366
- }), /* @__PURE__ */ f("div", {
379
+ }), /* @__PURE__ */ p("div", {
367
380
  className: "flex flex-wrap items-center gap-2",
368
381
  children: [
369
- /* @__PURE__ */ f("span", {
382
+ /* @__PURE__ */ p("span", {
370
383
  className: "rounded-full bg-bg-sunken px-3 py-1 text-sm font-medium text-text-secondary",
371
- children: [N.size, " selected"]
384
+ children: [R.size, " selected"]
372
385
  }),
373
- /* @__PURE__ */ d("button", {
374
- onClick: () => I("activate"),
375
- disabled: J.length === 0,
386
+ /* @__PURE__ */ f("button", {
387
+ onClick: () => B("activate"),
388
+ disabled: q.length === 0,
376
389
  className: "rounded-md border border-status-success-border px-3 py-2 text-sm font-medium text-status-success-text hover:bg-status-success-bg disabled:cursor-not-allowed disabled:opacity-50",
377
- children: /* @__PURE__ */ f("span", {
390
+ children: /* @__PURE__ */ p("span", {
378
391
  className: "inline-flex items-center gap-2",
379
392
  children: [
380
- /* @__PURE__ */ d(Ee, { className: "w-4 h-4" }),
393
+ /* @__PURE__ */ f(Ee, { className: "w-4 h-4" }),
381
394
  "Activate Selected",
382
- J.length > 0 ? ` (${J.length})` : ""
395
+ q.length > 0 ? ` (${q.length})` : ""
383
396
  ]
384
397
  })
385
398
  }),
386
- /* @__PURE__ */ d("button", {
387
- onClick: () => I("archive"),
388
- disabled: Y.length === 0,
399
+ /* @__PURE__ */ f("button", {
400
+ onClick: () => B("archive"),
401
+ disabled: J.length === 0,
389
402
  className: "rounded-md border border-status-warning-border px-3 py-2 text-sm font-medium text-status-warning-text hover:bg-status-warning-bg disabled:cursor-not-allowed disabled:opacity-50",
390
- children: /* @__PURE__ */ f("span", {
403
+ children: /* @__PURE__ */ p("span", {
391
404
  className: "inline-flex items-center gap-2",
392
405
  children: [
393
- /* @__PURE__ */ d(Ce, { className: "w-4 h-4" }),
406
+ /* @__PURE__ */ f(Ce, { className: "w-4 h-4" }),
394
407
  "Archive Selected",
395
- Y.length > 0 ? ` (${Y.length})` : ""
408
+ J.length > 0 ? ` (${J.length})` : ""
396
409
  ]
397
410
  })
398
411
  })
@@ -400,219 +413,219 @@ function ze() {
400
413
  })]
401
414
  })
402
415
  }),
403
- wt ? /* @__PURE__ */ d(me, {
416
+ kt ? /* @__PURE__ */ f(he, {
404
417
  variant: "cards",
405
418
  count: 6
406
- }) : q.length > 0 ? /* @__PURE__ */ d(je, {
419
+ }) : K.length > 0 ? /* @__PURE__ */ f(je, {
407
420
  mode: "wait",
408
- children: C === "grid" ? /* @__PURE__ */ d(Pe, {
421
+ children: k === "grid" ? /* @__PURE__ */ f(m, {
409
422
  stagger: .04,
410
423
  className: "grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-4",
411
- children: q.map((e) => /* @__PURE__ */ d(Ne, { children: /* @__PURE__ */ d(ve, {
424
+ children: K.map((e) => /* @__PURE__ */ f(Ne, { children: /* @__PURE__ */ f(ye, {
412
425
  vibe: e,
413
- onOpen: dt,
414
- onActivate: Ue ? ft : void 0,
415
- onArchive: Ue ? pt : void 0,
416
- onOpenInEditor: gt,
417
- selected: N.has(e.id),
418
- onToggleSelect: (t) => vt(e, t)
426
+ onOpen: _t,
427
+ onActivate: C ? vt : void 0,
428
+ onArchive: C ? yt : void 0,
429
+ onOpenInEditor: St,
430
+ selected: R.has(e.id),
431
+ onToggleSelect: (t) => Ct(e, t)
419
432
  }) }, e.id))
420
- }, "grid") : /* @__PURE__ */ d(Pe, { children: /* @__PURE__ */ d(ye, {
421
- vibes: q,
422
- onOpen: dt,
423
- onActivate: ft,
424
- onArchive: pt,
425
- onOpenInEditor: gt,
426
- selectedVibeIds: N,
427
- onToggleSelect: vt,
428
- onToggleAllVisible: yt,
429
- allVisibleSelected: X,
430
- partiallySelected: ut
433
+ }, "grid") : /* @__PURE__ */ f(m, { children: /* @__PURE__ */ f(be, {
434
+ vibes: K,
435
+ onOpen: _t,
436
+ onActivate: vt,
437
+ onArchive: yt,
438
+ onOpenInEditor: St,
439
+ selectedVibeIds: R,
440
+ onToggleSelect: Ct,
441
+ onToggleAllVisible: wt,
442
+ allVisibleSelected: Y,
443
+ partiallySelected: gt
431
444
  }) }, "list")
432
- }) : /* @__PURE__ */ d(ue, {
433
- icon: /* @__PURE__ */ d(ke, { className: "w-8 h-8 text-text-secondary" }),
434
- title: y || b !== "all" || x !== "all" || S !== "all" ? _("vibesPage.emptyNoVibesFound", "No vibes found") : _("vibesPage.emptyNoVibesConfigured", "No vibes configured"),
435
- description: y || b !== "all" || x !== "all" || S !== "all" ? _("vibesPage.emptyAdjustSearch", "Try adjusting your search or filters") : _("vibesPage.emptyNoVibesDescription", "Add your first vibe to start managing your development projects"),
436
- action: !y && b === "all" && x === "all" && S === "all" ? /* @__PURE__ */ f("div", {
445
+ }) : /* @__PURE__ */ f(de, {
446
+ icon: /* @__PURE__ */ f(ke, { className: "w-8 h-8 text-text-secondary" }),
447
+ title: T || E !== "all" || D !== "all" || O !== "all" ? x("vibesPage.emptyNoVibesFound", "No vibes found") : x("vibesPage.emptyNoVibesConfigured", "No vibes configured"),
448
+ description: T || E !== "all" || D !== "all" || O !== "all" ? x("vibesPage.emptyAdjustSearch", "Try adjusting your search or filters") : x("vibesPage.emptyNoVibesDescription", "Add your first vibe to start managing your development projects"),
449
+ action: !T && E === "all" && D === "all" && O === "all" ? /* @__PURE__ */ p("div", {
437
450
  className: "flex items-center gap-2",
438
- children: [/* @__PURE__ */ d(Re, {
451
+ children: [/* @__PURE__ */ f(Le, {
439
452
  permission: s.VIBE_CREATE,
440
- children: /* @__PURE__ */ f("button", {
441
- onClick: _t,
453
+ children: /* @__PURE__ */ p("button", {
454
+ onClick: X,
442
455
  className: "flex items-center gap-2 px-4 py-2 bg-action-primary-bg text-action-primary-text rounded-md hover:bg-action-primary-bg-hover transition-colors",
443
- children: [/* @__PURE__ */ d(De, { className: "w-4 h-4" }), _("vibesPage.addVibe", "Add Vibe")]
456
+ children: [/* @__PURE__ */ f(De, { className: "w-4 h-4" }), x("vibesPage.addVibe", "Add Vibe")]
444
457
  })
445
- }), /* @__PURE__ */ d(fe, { prompt: "What is a Vibe in VibeControls and how do I create one?" })]
458
+ }), /* @__PURE__ */ f(pe, { prompt: "What is a Vibe in VibeControls and how do I create one?" })]
446
459
  }) : void 0
447
460
  }),
448
- $e && /* @__PURE__ */ d("div", {
461
+ Je && /* @__PURE__ */ f("div", {
449
462
  className: "fixed bottom-4 right-4 z-50 px-4 py-3 bg-status-success-bg text-status-success-text rounded-md shadow-lg text-sm",
450
- children: $e
463
+ children: Je
451
464
  }),
452
- /* @__PURE__ */ d(ae, {
453
- isOpen: F === "activate",
454
- onClose: () => I(null),
455
- onConfirm: bt,
465
+ /* @__PURE__ */ f(a, {
466
+ isOpen: Ze === "activate",
467
+ onClose: () => B(null),
468
+ onConfirm: Tt,
456
469
  title: "Activate selected vibes",
457
- message: `Activate ${J.length} selected vibe${J.length === 1 ? "" : "s"}?`,
470
+ message: `Activate ${q.length} selected vibe${q.length === 1 ? "" : "s"}?`,
458
471
  confirmLabel: "Activate",
459
472
  variant: "default"
460
473
  }),
461
- /* @__PURE__ */ d(ae, {
462
- isOpen: F === "archive",
463
- onClose: () => I(null),
464
- onConfirm: xt,
474
+ /* @__PURE__ */ f(a, {
475
+ isOpen: Ze === "archive",
476
+ onClose: () => B(null),
477
+ onConfirm: Et,
465
478
  title: "Archive selected vibes",
466
- message: `Archive ${Y.length} selected vibe${Y.length === 1 ? "" : "s"}? Archived vibes will be hidden from active workflows.`,
479
+ message: `Archive ${J.length} selected vibe${J.length === 1 ? "" : "s"}? Archived vibes will be hidden from active workflows.`,
467
480
  confirmLabel: "Archive",
468
481
  variant: "warning"
469
482
  }),
470
- j && /* @__PURE__ */ f("div", {
483
+ Xe && /* @__PURE__ */ p("div", {
471
484
  role: "alert",
472
485
  className: "fixed bottom-4 right-4 z-50 px-4 py-3 bg-status-error-bg text-status-error-text rounded-md shadow-lg text-sm",
473
- children: [j, /* @__PURE__ */ d("button", {
474
- onClick: tt,
486
+ children: [Xe, /* @__PURE__ */ f("button", {
487
+ onClick: Qe,
475
488
  className: "ml-3 text-xs underline opacity-80 hover:opacity-100",
476
- children: _("vibesPage.dismiss", "Dismiss")
489
+ children: x("vibesPage.dismiss", "Dismiss")
477
490
  })]
478
491
  }),
479
- Xe && /* @__PURE__ */ d("div", {
492
+ Ge && /* @__PURE__ */ f("div", {
480
493
  className: "fixed inset-0 bg-bg-overlay flex items-center justify-center z-50 p-4",
481
- children: /* @__PURE__ */ f("div", {
494
+ children: /* @__PURE__ */ p("div", {
482
495
  className: "bg-bg-surface rounded-lg p-6 w-full max-w-lg",
483
496
  children: [
484
- /* @__PURE__ */ d("h2", {
497
+ /* @__PURE__ */ f("h2", {
485
498
  className: "text-lg font-semibold text-text-primary mb-4",
486
- children: _("vibesPage.addNewVibe", "Add New Vibe")
499
+ children: x("vibesPage.addNewVibe", "Add New Vibe")
487
500
  }),
488
- /* @__PURE__ */ f("div", {
501
+ /* @__PURE__ */ p("div", {
489
502
  className: "space-y-4",
490
503
  children: [
491
- Ze && /* @__PURE__ */ d("div", {
504
+ Ke && /* @__PURE__ */ f("div", {
492
505
  className: "p-3 bg-status-error-bg text-status-error-text text-sm rounded-md",
493
- children: Ze
506
+ children: Ke
494
507
  }),
495
- /* @__PURE__ */ f("div", { children: [
496
- /* @__PURE__ */ d("label", {
508
+ /* @__PURE__ */ p("div", { children: [
509
+ /* @__PURE__ */ f("label", {
497
510
  className: "block text-sm font-medium text-text-primary mb-1",
498
- children: _("vibesPage.nameLabel", "Name *")
511
+ children: x("vibesPage.nameLabel", "Name *")
499
512
  }),
500
- /* @__PURE__ */ d("input", {
501
- ref: R,
513
+ /* @__PURE__ */ f("input", {
514
+ ref: $e,
502
515
  type: "text",
503
- placeholder: _("vibesPage.namePlaceholder", "My Project"),
504
- onChange: () => k.name && A((e) => ({
516
+ placeholder: x("vibesPage.namePlaceholder", "My Project"),
517
+ onChange: () => F.name && I((e) => ({
505
518
  ...e,
506
519
  name: void 0
507
520
  })),
508
- className: `w-full px-3 py-2 bg-bg-sunken border rounded-md text-text-primary placeholder:text-text-placeholder ${k.name ? "border-status-error-border" : "border-border-default"}`
521
+ className: `w-full px-3 py-2 bg-bg-sunken border rounded-md text-text-primary placeholder:text-text-placeholder ${F.name ? "border-status-error-border" : "border-border-default"}`
509
522
  }),
510
- k.name && /* @__PURE__ */ d("p", {
523
+ F.name && /* @__PURE__ */ f("p", {
511
524
  className: "mt-1 text-xs text-status-error-text",
512
- children: k.name
525
+ children: F.name
513
526
  })
514
527
  ] }),
515
- /* @__PURE__ */ f("div", { children: [
516
- /* @__PURE__ */ d("label", {
528
+ /* @__PURE__ */ p("div", { children: [
529
+ /* @__PURE__ */ f("label", {
517
530
  className: "block text-sm font-medium text-text-primary mb-1",
518
- children: _("vibesPage.pathLabel", "Path *")
531
+ children: x("vibesPage.pathLabel", "Path *")
519
532
  }),
520
- /* @__PURE__ */ d("input", {
521
- ref: z,
533
+ /* @__PURE__ */ f("input", {
534
+ ref: et,
522
535
  type: "text",
523
- placeholder: _("vibesPage.pathPlaceholder", "/path/to/project"),
524
- onChange: () => k.path && A((e) => ({
536
+ placeholder: x("vibesPage.pathPlaceholder", "/path/to/project"),
537
+ onChange: () => F.path && I((e) => ({
525
538
  ...e,
526
539
  path: void 0
527
540
  })),
528
- className: `w-full px-3 py-2 bg-bg-sunken border rounded-md text-text-primary placeholder:text-text-placeholder ${k.path ? "border-status-error-border" : "border-border-default"}`
541
+ className: `w-full px-3 py-2 bg-bg-sunken border rounded-md text-text-primary placeholder:text-text-placeholder ${F.path ? "border-status-error-border" : "border-border-default"}`
529
542
  }),
530
- k.path && /* @__PURE__ */ d("p", {
543
+ F.path && /* @__PURE__ */ f("p", {
531
544
  className: "mt-1 text-xs text-status-error-text",
532
- children: k.path
545
+ children: F.path
533
546
  })
534
547
  ] }),
535
- /* @__PURE__ */ f("div", { children: [/* @__PURE__ */ d("label", {
548
+ /* @__PURE__ */ p("div", { children: [/* @__PURE__ */ f("label", {
536
549
  className: "block text-sm font-medium text-text-primary mb-1",
537
- children: _("vibesPage.agentLabel", "Agent")
538
- }), /* @__PURE__ */ f("select", {
539
- ref: B,
550
+ children: x("vibesPage.agentLabel", "Agent")
551
+ }), /* @__PURE__ */ p("select", {
552
+ ref: tt,
540
553
  className: "w-full px-3 py-2 bg-bg-sunken border border-border-default rounded-md text-text-primary",
541
- children: [/* @__PURE__ */ d("option", {
554
+ children: [/* @__PURE__ */ f("option", {
542
555
  value: "",
543
- children: _("vibesPage.selectAgent", "Select an agent")
544
- }), ct.filter((e) => e.value !== "all").map((e) => /* @__PURE__ */ d("option", {
556
+ children: x("vibesPage.selectAgent", "Select an agent")
557
+ }), mt.filter((e) => e.value !== "all").map((e) => /* @__PURE__ */ f("option", {
545
558
  value: e.value,
546
559
  children: e.label
547
560
  }, e.value))]
548
561
  })] }),
549
- /* @__PURE__ */ f("div", { children: [/* @__PURE__ */ d("label", {
562
+ /* @__PURE__ */ p("div", { children: [/* @__PURE__ */ f("label", {
550
563
  className: "block text-sm font-medium text-text-primary mb-1",
551
- children: _("vibesPage.typeLabel", "Type")
552
- }), /* @__PURE__ */ f("select", {
553
- ref: V,
564
+ children: x("vibesPage.typeLabel", "Type")
565
+ }), /* @__PURE__ */ p("select", {
566
+ ref: nt,
554
567
  className: "w-full px-3 py-2 bg-bg-sunken border border-border-default rounded-md text-text-primary",
555
568
  children: [
556
- /* @__PURE__ */ d("option", {
569
+ /* @__PURE__ */ f("option", {
557
570
  value: "PROJECT",
558
- children: _("vibesPage.typeProject", "Project")
571
+ children: x("vibesPage.typeProject", "Project")
559
572
  }),
560
- /* @__PURE__ */ d("option", {
573
+ /* @__PURE__ */ f("option", {
561
574
  value: "REPOSITORY",
562
- children: _("vibesPage.typeRepository", "Repository")
575
+ children: x("vibesPage.typeRepository", "Repository")
563
576
  }),
564
- /* @__PURE__ */ d("option", {
577
+ /* @__PURE__ */ f("option", {
565
578
  value: "WORKSPACE",
566
- children: _("vibesPage.typeWorkspace", "Workspace")
579
+ children: x("vibesPage.typeWorkspace", "Workspace")
567
580
  }),
568
- /* @__PURE__ */ d("option", {
581
+ /* @__PURE__ */ f("option", {
569
582
  value: "MONOREPO",
570
- children: _("vibesPage.typeMonorepo", "Monorepo")
583
+ children: x("vibesPage.typeMonorepo", "Monorepo")
571
584
  }),
572
- /* @__PURE__ */ d("option", {
585
+ /* @__PURE__ */ f("option", {
573
586
  value: "PACKAGE",
574
- children: _("vibesPage.typePackage", "Package")
587
+ children: x("vibesPage.typePackage", "Package")
575
588
  }),
576
- /* @__PURE__ */ d("option", {
589
+ /* @__PURE__ */ f("option", {
577
590
  value: "CUSTOM",
578
- children: _("vibesPage.typeCustom", "Custom")
591
+ children: x("vibesPage.typeCustom", "Custom")
579
592
  })
580
593
  ]
581
594
  })] })
582
595
  ]
583
596
  }),
584
- /* @__PURE__ */ f("div", {
597
+ /* @__PURE__ */ p("div", {
585
598
  className: "mt-4 border-t border-border-default pt-4",
586
- children: [/* @__PURE__ */ d("h3", {
599
+ children: [/* @__PURE__ */ f("h3", {
587
600
  className: "text-sm font-medium text-text-secondary mb-2",
588
- children: _("vibesPage.tags", "Tags")
589
- }), /* @__PURE__ */ d(ce, {
601
+ children: x("vibesPage.tags", "Tags")
602
+ }), /* @__PURE__ */ f(le, {
590
603
  entityType: "VIBECONTROLS_VIBE",
591
- onDraftChange: rt
604
+ onDraftChange: it
592
605
  })]
593
606
  }),
594
- /* @__PURE__ */ f("div", {
607
+ /* @__PURE__ */ p("div", {
595
608
  className: "flex flex-col sm:flex-row justify-end gap-3 mt-6",
596
- children: [/* @__PURE__ */ d("button", {
597
- onClick: () => w(!1),
598
- disabled: E,
609
+ children: [/* @__PURE__ */ f("button", {
610
+ onClick: () => A(!1),
611
+ disabled: M,
599
612
  className: "px-4 py-2 text-text-primary hover:bg-bg-sunken rounded-md transition-colors disabled:opacity-50",
600
- children: _("vibesPage.cancel", "Cancel")
601
- }), /* @__PURE__ */ d("button", {
602
- onClick: St,
603
- disabled: E,
613
+ children: x("vibesPage.cancel", "Cancel")
614
+ }), /* @__PURE__ */ f("button", {
615
+ onClick: Dt,
616
+ disabled: M,
604
617
  className: "px-4 py-2 bg-action-primary-bg text-action-primary-text rounded-md hover:bg-action-primary-bg-hover transition-colors disabled:opacity-50",
605
- children: E ? _("vibesPage.creating", "Creating...") : _("vibesPage.createVibe", "Create Vibe")
618
+ children: M ? x("vibesPage.creating", "Creating...") : x("vibesPage.createVibe", "Create Vibe")
606
619
  })]
607
620
  })
608
621
  ]
609
622
  })
610
623
  }),
611
- /* @__PURE__ */ d(oe, {
612
- isOpen: et,
613
- onClose: () => O(!1),
624
+ /* @__PURE__ */ f(se, {
625
+ isOpen: Ye,
626
+ onClose: () => P(!1),
614
627
  onConfirm: () => {
615
- O(!1), p("/billing");
628
+ P(!1), g("/billing");
616
629
  },
617
630
  title: "Vibe Quota Reached",
618
631
  message: "You've used all available vibe creation quota on your current plan. Upgrade your plan to create more vibes."
@@ -622,6 +635,6 @@ function ze() {
622
635
  });
623
636
  }
624
637
  //#endregion
625
- export { ze as VibesPage };
638
+ export { h as VibesPage };
626
639
 
627
640
  //# sourceMappingURL=VibesPage.js.map