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