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