@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.
- package/dist/components/agents/AgentForm.js +152 -148
- package/dist/components/agents/AgentForm.js.map +1 -1
- package/dist/components/catalog/CatalogForm.js +46 -42
- package/dist/components/catalog/CatalogForm.js.map +1 -1
- package/dist/components/idp-components/ComponentForm.js +69 -65
- package/dist/components/idp-components/ComponentForm.js.map +1 -1
- package/dist/components/shared/EntityTagPicker.js +5 -1
- package/dist/components/shared/EntityTagPicker.js.map +1 -1
- package/dist/components/tunnels/TunnelCreateWizard.js +45 -54
- package/dist/components/tunnels/TunnelCreateWizard.js.map +1 -1
- package/dist/hooks/useDraftEntityTags.js +29 -0
- package/dist/hooks/useDraftEntityTags.js.map +1 -0
- package/dist/pages/ActionsPage.js +109 -96
- package/dist/pages/ActionsPage.js.map +1 -1
- package/dist/pages/AgentsPage.js +345 -336
- package/dist/pages/AgentsPage.js.map +1 -1
- package/dist/pages/CatalogPage.js +107 -97
- package/dist/pages/CatalogPage.js.map +1 -1
- package/dist/pages/ComponentsPage.js +126 -116
- package/dist/pages/ComponentsPage.js.map +1 -1
- package/dist/pages/SessionsPage.js +598 -586
- package/dist/pages/SessionsPage.js.map +1 -1
- package/dist/pages/TargetsPage.js +499 -485
- package/dist/pages/TargetsPage.js.map +1 -1
- package/dist/pages/VibeDeckPage.js +310 -300
- package/dist/pages/VibeDeckPage.js.map +1 -1
- package/dist/pages/VibesPage.js +309 -296
- package/dist/pages/VibesPage.js.map +1 -1
- package/package.json +1 -1
package/dist/pages/VibesPage.js
CHANGED
|
@@ -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 {
|
|
10
|
-
import {
|
|
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
|
|
13
|
-
import { SelectionCheckbox as
|
|
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
|
|
17
|
-
import { VibeList as
|
|
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
|
|
20
|
-
import { useI18n as
|
|
21
|
-
import { Archive as
|
|
22
|
-
import { usePermissions as
|
|
23
|
-
import { AnimatePresence as
|
|
24
|
-
import { Fragment as
|
|
25
|
-
import { MotionItem as
|
|
26
|
-
import { AccessDenied as
|
|
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
|
|
29
|
-
let { onVibeActivate:
|
|
30
|
-
let 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
|
-
}, [
|
|
34
|
+
}, [v]), Pe = [
|
|
33
35
|
{
|
|
34
36
|
value: "all",
|
|
35
|
-
label:
|
|
37
|
+
label: y("vibesPage.statusAll", "All Statuses")
|
|
36
38
|
},
|
|
37
39
|
{
|
|
38
40
|
value: "ACTIVE",
|
|
39
|
-
label:
|
|
41
|
+
label: y("vibesPage.statusActive", "Active")
|
|
40
42
|
},
|
|
41
43
|
{
|
|
42
44
|
value: "INACTIVE",
|
|
43
|
-
label:
|
|
45
|
+
label: y("vibesPage.statusInactive", "Inactive")
|
|
44
46
|
},
|
|
45
47
|
{
|
|
46
48
|
value: "ARCHIVED",
|
|
47
|
-
label:
|
|
49
|
+
label: y("vibesPage.statusArchived", "Archived")
|
|
48
50
|
},
|
|
49
51
|
{
|
|
50
52
|
value: "ERROR",
|
|
51
|
-
label:
|
|
53
|
+
label: y("vibesPage.statusError", "Error")
|
|
52
54
|
}
|
|
53
|
-
],
|
|
55
|
+
], Fe = [
|
|
54
56
|
{
|
|
55
57
|
value: "all",
|
|
56
|
-
label:
|
|
58
|
+
label: y("vibesPage.typeAll", "All Types")
|
|
57
59
|
},
|
|
58
60
|
{
|
|
59
61
|
value: "PROJECT",
|
|
60
|
-
label:
|
|
62
|
+
label: y("vibesPage.typeProject", "Project")
|
|
61
63
|
},
|
|
62
64
|
{
|
|
63
65
|
value: "REPOSITORY",
|
|
64
|
-
label:
|
|
66
|
+
label: y("vibesPage.typeRepository", "Repository")
|
|
65
67
|
},
|
|
66
68
|
{
|
|
67
69
|
value: "WORKSPACE",
|
|
68
|
-
label:
|
|
70
|
+
label: y("vibesPage.typeWorkspace", "Workspace")
|
|
69
71
|
},
|
|
70
72
|
{
|
|
71
73
|
value: "MONOREPO",
|
|
72
|
-
label:
|
|
74
|
+
label: y("vibesPage.typeMonorepo", "Monorepo")
|
|
73
75
|
},
|
|
74
76
|
{
|
|
75
77
|
value: "PACKAGE",
|
|
76
|
-
label:
|
|
78
|
+
label: y("vibesPage.typePackage", "Package")
|
|
77
79
|
},
|
|
78
80
|
{
|
|
79
81
|
value: "CUSTOM",
|
|
80
|
-
label:
|
|
82
|
+
label: y("vibesPage.typeCustom", "Custom")
|
|
81
83
|
}
|
|
82
|
-
],
|
|
83
|
-
|
|
84
|
-
|
|
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
|
|
87
|
-
|
|
88
|
-
}, []),
|
|
89
|
-
variables:
|
|
90
|
-
status:
|
|
91
|
-
type:
|
|
92
|
-
attachedAgentIds:
|
|
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:
|
|
102
|
+
skip: S,
|
|
101
103
|
notifyOnNetworkStatusChange: !0
|
|
102
|
-
}), { data:
|
|
104
|
+
}), { data: it } = n({
|
|
103
105
|
variables: { pagination: { limit: 100 } },
|
|
104
106
|
fetchPolicy: "cache-first",
|
|
105
|
-
skip:
|
|
106
|
-
}),
|
|
107
|
-
let e =
|
|
107
|
+
skip: S
|
|
108
|
+
}), at = c(() => {
|
|
109
|
+
let e = it?.vibecontrolsAgents ?? [];
|
|
108
110
|
return [{
|
|
109
111
|
value: "all",
|
|
110
|
-
label:
|
|
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
|
-
}, [
|
|
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
|
-
})), [
|
|
139
|
-
if (
|
|
140
|
-
let t =
|
|
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
|
-
}), [
|
|
145
|
-
|
|
146
|
-
},
|
|
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
|
|
150
|
+
(await et({ variables: {
|
|
149
151
|
id: e.id,
|
|
150
152
|
status: "ACTIVE"
|
|
151
|
-
} })).data?.updateVibeStatus &&
|
|
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
|
-
},
|
|
162
|
+
}, lt = async (e) => {
|
|
161
163
|
try {
|
|
162
|
-
await
|
|
164
|
+
await tt({ variables: { id: e.id } });
|
|
163
165
|
} catch (e) {
|
|
164
166
|
console.error("Failed to archive vibe:", e);
|
|
165
167
|
}
|
|
166
|
-
},
|
|
167
|
-
e.path ? window.location.href = `vscode://file/${e.path}` : (
|
|
168
|
-
|
|
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
|
-
},
|
|
171
|
-
|
|
172
|
-
},
|
|
173
|
-
|
|
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
|
-
},
|
|
178
|
-
|
|
179
|
+
}, pt = (e) => {
|
|
180
|
+
z((t) => {
|
|
179
181
|
let n = new Set(t);
|
|
180
|
-
return
|
|
182
|
+
return G.forEach((t) => {
|
|
181
183
|
e ? n.add(t.id) : n.delete(t.id);
|
|
182
184
|
}), n;
|
|
183
185
|
});
|
|
184
|
-
},
|
|
185
|
-
if (
|
|
186
|
-
let e = await Promise.allSettled(
|
|
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
|
-
|
|
191
|
-
},
|
|
192
|
-
if (
|
|
193
|
-
let e = await Promise.allSettled(
|
|
194
|
-
|
|
195
|
-
},
|
|
196
|
-
let e =
|
|
197
|
-
if (e || (i.name =
|
|
198
|
-
|
|
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
|
-
|
|
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
|
-
|
|
212
|
+
Ve(!0), j(null);
|
|
211
213
|
try {
|
|
212
|
-
|
|
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
|
-
} } })
|
|
218
|
-
|
|
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
|
-
|
|
224
|
+
k(!1), j(null), I({}), P(!0);
|
|
222
225
|
return;
|
|
223
226
|
}
|
|
224
|
-
|
|
227
|
+
j(e instanceof Error ? e.message : y("vibesPage.failedCreate", "Failed to create vibe"));
|
|
225
228
|
} finally {
|
|
226
|
-
|
|
229
|
+
Ve(!1);
|
|
227
230
|
}
|
|
228
|
-
},
|
|
229
|
-
total:
|
|
230
|
-
active:
|
|
231
|
-
inactive:
|
|
232
|
-
},
|
|
233
|
-
return /* @__PURE__ */
|
|
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
|
-
|
|
237
|
-
|
|
238
|
-
title:
|
|
239
|
-
description:
|
|
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
|
-
|
|
242
|
-
|
|
243
|
-
title:
|
|
244
|
-
message:
|
|
245
|
-
onRetry: () =>
|
|
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
|
-
|
|
248
|
-
/* @__PURE__ */
|
|
249
|
-
title:
|
|
250
|
-
description:
|
|
251
|
-
active:
|
|
252
|
-
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__ */
|
|
257
|
+
actions: /* @__PURE__ */ f("div", {
|
|
255
258
|
className: "flex items-center gap-2",
|
|
256
|
-
children: [/* @__PURE__ */
|
|
257
|
-
onClick: () =>
|
|
258
|
-
disabled:
|
|
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:
|
|
261
|
-
children: /* @__PURE__ */
|
|
262
|
-
}), /* @__PURE__ */
|
|
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:
|
|
266
|
-
children: /* @__PURE__ */
|
|
267
|
-
onClick:
|
|
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__ */
|
|
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__ */
|
|
277
|
+
/* @__PURE__ */ f("div", {
|
|
275
278
|
className: "space-y-3",
|
|
276
|
-
children: [/* @__PURE__ */
|
|
279
|
+
children: [/* @__PURE__ */ f("div", {
|
|
277
280
|
className: "flex items-center gap-2",
|
|
278
|
-
children: [/* @__PURE__ */
|
|
279
|
-
value:
|
|
280
|
-
onChange:
|
|
281
|
-
placeholder:
|
|
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__ */
|
|
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__ */
|
|
286
|
-
onClick: () =>
|
|
287
|
-
className: `p-1.5 sm:p-2 rounded ${
|
|
288
|
-
title:
|
|
289
|
-
children: /* @__PURE__ */
|
|
290
|
-
}), /* @__PURE__ */
|
|
291
|
-
onClick: () =>
|
|
292
|
-
className: `p-1.5 sm:p-2 rounded ${
|
|
293
|
-
title:
|
|
294
|
-
children: /* @__PURE__ */
|
|
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__ */
|
|
300
|
+
}), /* @__PURE__ */ f("div", {
|
|
298
301
|
className: "flex items-center gap-2 sm:gap-3 flex-wrap",
|
|
299
302
|
children: [
|
|
300
|
-
/* @__PURE__ */
|
|
301
|
-
label:
|
|
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:
|
|
304
|
-
onChange:
|
|
312
|
+
options: Fe,
|
|
313
|
+
onChange: Re
|
|
305
314
|
}),
|
|
306
|
-
/* @__PURE__ */
|
|
307
|
-
label:
|
|
315
|
+
/* @__PURE__ */ d(o, {
|
|
316
|
+
label: y("vibesPage.filterAgent", "Agent"),
|
|
308
317
|
value: E,
|
|
309
|
-
options:
|
|
310
|
-
onChange:
|
|
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
|
-
|
|
324
|
+
C || w !== "all" || T !== "all" || E !== "all" ? /* @__PURE__ */ f("p", {
|
|
322
325
|
className: "text-sm text-text-secondary",
|
|
323
|
-
children: [
|
|
324
|
-
filtered:
|
|
325
|
-
total:
|
|
326
|
-
}),
|
|
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:
|
|
331
|
+
children: y("vibesPage.refreshing", "(refreshing...)")
|
|
329
332
|
})]
|
|
330
333
|
}) : null,
|
|
331
|
-
|
|
334
|
+
G.length > 0 && /* @__PURE__ */ d("div", {
|
|
332
335
|
className: "rounded-lg border border-border-default bg-bg-surface p-4",
|
|
333
|
-
children: /* @__PURE__ */
|
|
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__ */
|
|
338
|
+
children: [/* @__PURE__ */ f("div", {
|
|
336
339
|
className: "flex flex-wrap items-center gap-3",
|
|
337
|
-
children: [/* @__PURE__ */
|
|
340
|
+
children: [/* @__PURE__ */ f("div", {
|
|
338
341
|
className: "flex items-center gap-2",
|
|
339
|
-
children: [/* @__PURE__ */
|
|
340
|
-
checked:
|
|
341
|
-
indeterminate:
|
|
342
|
-
onChange:
|
|
342
|
+
children: [/* @__PURE__ */ d(fe, {
|
|
343
|
+
checked: J,
|
|
344
|
+
indeterminate: st,
|
|
345
|
+
onChange: pt,
|
|
343
346
|
ariaLabel: "Select all visible vibes"
|
|
344
|
-
}), /* @__PURE__ */
|
|
347
|
+
}), /* @__PURE__ */ d("span", {
|
|
345
348
|
className: "text-sm font-medium text-text-primary",
|
|
346
349
|
children: "Select all visible"
|
|
347
350
|
})]
|
|
348
|
-
}),
|
|
349
|
-
onClick:
|
|
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__ */
|
|
356
|
+
}), /* @__PURE__ */ f("div", {
|
|
354
357
|
className: "flex flex-wrap items-center gap-2",
|
|
355
358
|
children: [
|
|
356
|
-
/* @__PURE__ */
|
|
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: [
|
|
361
|
+
children: [R.size, " selected"]
|
|
359
362
|
}),
|
|
360
|
-
/* @__PURE__ */
|
|
361
|
-
onClick: () =>
|
|
362
|
-
disabled:
|
|
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__ */
|
|
367
|
+
children: /* @__PURE__ */ f("span", {
|
|
365
368
|
className: "inline-flex items-center gap-2",
|
|
366
369
|
children: [
|
|
367
|
-
/* @__PURE__ */
|
|
370
|
+
/* @__PURE__ */ d(xe, { className: "w-4 h-4" }),
|
|
368
371
|
"Activate Selected",
|
|
369
|
-
|
|
372
|
+
K.length > 0 ? ` (${K.length})` : ""
|
|
370
373
|
]
|
|
371
374
|
})
|
|
372
375
|
}),
|
|
373
|
-
/* @__PURE__ */
|
|
374
|
-
onClick: () =>
|
|
375
|
-
disabled:
|
|
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__ */
|
|
380
|
+
children: /* @__PURE__ */ f("span", {
|
|
378
381
|
className: "inline-flex items-center gap-2",
|
|
379
382
|
children: [
|
|
380
|
-
/* @__PURE__ */
|
|
383
|
+
/* @__PURE__ */ d(ve, { className: "w-4 h-4" }),
|
|
381
384
|
"Archive Selected",
|
|
382
|
-
|
|
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
|
-
|
|
393
|
+
G.length > 0 ? /* @__PURE__ */ d(Ee, {
|
|
391
394
|
mode: "wait",
|
|
392
|
-
children:
|
|
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:
|
|
398
|
+
children: G.map((e) => /* @__PURE__ */ d(Oe, { children: /* @__PURE__ */ d(pe, {
|
|
396
399
|
vibe: e,
|
|
397
|
-
onOpen:
|
|
398
|
-
onActivate:
|
|
399
|
-
onArchive:
|
|
400
|
-
onOpenInEditor:
|
|
401
|
-
selected:
|
|
402
|
-
onToggleSelect: (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__ */
|
|
405
|
-
vibes:
|
|
406
|
-
onOpen:
|
|
407
|
-
onActivate:
|
|
408
|
-
onArchive:
|
|
409
|
-
onOpenInEditor:
|
|
410
|
-
selectedVibeIds:
|
|
411
|
-
onToggleSelect:
|
|
412
|
-
onToggleAllVisible:
|
|
413
|
-
allVisibleSelected:
|
|
414
|
-
partiallySelected:
|
|
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__ */
|
|
417
|
-
icon: /* @__PURE__ */
|
|
418
|
-
title:
|
|
419
|
-
description:
|
|
420
|
-
action: !
|
|
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__ */
|
|
425
|
+
children: [/* @__PURE__ */ d(Ne, {
|
|
423
426
|
permission: s.VIBE_CREATE,
|
|
424
|
-
children: /* @__PURE__ */
|
|
425
|
-
onClick:
|
|
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__ */
|
|
430
|
+
children: [/* @__PURE__ */ d(Se, { className: "w-4 h-4" }), y("vibesPage.addVibe", "Add Vibe")]
|
|
428
431
|
})
|
|
429
|
-
}), /* @__PURE__ */
|
|
432
|
+
}), /* @__PURE__ */ d(de, { prompt: "What is a Vibe in VibeControls and how do I create one?" })]
|
|
430
433
|
}) : void 0
|
|
431
434
|
}),
|
|
432
|
-
|
|
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:
|
|
437
|
+
children: He
|
|
435
438
|
}),
|
|
436
|
-
/* @__PURE__ */
|
|
437
|
-
isOpen:
|
|
438
|
-
onClose: () =>
|
|
439
|
-
onConfirm:
|
|
439
|
+
/* @__PURE__ */ d(ie, {
|
|
440
|
+
isOpen: Ge === "activate",
|
|
441
|
+
onClose: () => B(null),
|
|
442
|
+
onConfirm: mt,
|
|
440
443
|
title: "Activate selected vibes",
|
|
441
|
-
message: `Activate ${
|
|
444
|
+
message: `Activate ${K.length} selected vibe${K.length === 1 ? "" : "s"}?`,
|
|
442
445
|
confirmLabel: "Activate",
|
|
443
446
|
variant: "default"
|
|
444
447
|
}),
|
|
445
|
-
/* @__PURE__ */
|
|
446
|
-
isOpen:
|
|
447
|
-
onClose: () =>
|
|
448
|
-
onConfirm:
|
|
448
|
+
/* @__PURE__ */ d(ie, {
|
|
449
|
+
isOpen: Ge === "archive",
|
|
450
|
+
onClose: () => B(null),
|
|
451
|
+
onConfirm: ht,
|
|
449
452
|
title: "Archive selected vibes",
|
|
450
|
-
message: `Archive ${
|
|
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
|
-
|
|
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: [
|
|
458
|
-
onClick:
|
|
460
|
+
children: [We, /* @__PURE__ */ d("button", {
|
|
461
|
+
onClick: Ke,
|
|
459
462
|
className: "ml-3 text-xs underline opacity-80 hover:opacity-100",
|
|
460
|
-
children:
|
|
463
|
+
children: y("vibesPage.dismiss", "Dismiss")
|
|
461
464
|
})]
|
|
462
465
|
}),
|
|
463
|
-
|
|
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__ */
|
|
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__ */
|
|
471
|
+
/* @__PURE__ */ d("h2", {
|
|
469
472
|
className: "text-lg font-semibold text-text-primary mb-4",
|
|
470
|
-
children:
|
|
473
|
+
children: y("vibesPage.addNewVibe", "Add New Vibe")
|
|
471
474
|
}),
|
|
472
|
-
/* @__PURE__ */
|
|
475
|
+
/* @__PURE__ */ f("div", {
|
|
473
476
|
className: "space-y-4",
|
|
474
477
|
children: [
|
|
475
|
-
|
|
478
|
+
A && /* @__PURE__ */ d("div", {
|
|
476
479
|
className: "p-3 bg-status-error-bg text-status-error-text text-sm rounded-md",
|
|
477
|
-
children:
|
|
480
|
+
children: A
|
|
478
481
|
}),
|
|
479
|
-
/* @__PURE__ */
|
|
480
|
-
/* @__PURE__ */
|
|
482
|
+
/* @__PURE__ */ f("div", { children: [
|
|
483
|
+
/* @__PURE__ */ d("label", {
|
|
481
484
|
className: "block text-sm font-medium text-text-primary mb-1",
|
|
482
|
-
children:
|
|
485
|
+
children: y("vibesPage.nameLabel", "Name *")
|
|
483
486
|
}),
|
|
484
|
-
/* @__PURE__ */
|
|
485
|
-
ref:
|
|
487
|
+
/* @__PURE__ */ d("input", {
|
|
488
|
+
ref: qe,
|
|
486
489
|
type: "text",
|
|
487
|
-
placeholder:
|
|
488
|
-
onChange: () =>
|
|
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 ${
|
|
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
|
-
|
|
497
|
+
F.name && /* @__PURE__ */ d("p", {
|
|
495
498
|
className: "mt-1 text-xs text-status-error-text",
|
|
496
|
-
children:
|
|
499
|
+
children: F.name
|
|
497
500
|
})
|
|
498
501
|
] }),
|
|
499
|
-
/* @__PURE__ */
|
|
500
|
-
/* @__PURE__ */
|
|
502
|
+
/* @__PURE__ */ f("div", { children: [
|
|
503
|
+
/* @__PURE__ */ d("label", {
|
|
501
504
|
className: "block text-sm font-medium text-text-primary mb-1",
|
|
502
|
-
children:
|
|
505
|
+
children: y("vibesPage.pathLabel", "Path *")
|
|
503
506
|
}),
|
|
504
|
-
/* @__PURE__ */
|
|
505
|
-
ref:
|
|
507
|
+
/* @__PURE__ */ d("input", {
|
|
508
|
+
ref: Je,
|
|
506
509
|
type: "text",
|
|
507
|
-
placeholder:
|
|
508
|
-
onChange: () =>
|
|
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 ${
|
|
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
|
-
|
|
517
|
+
F.path && /* @__PURE__ */ d("p", {
|
|
515
518
|
className: "mt-1 text-xs text-status-error-text",
|
|
516
|
-
children:
|
|
519
|
+
children: F.path
|
|
517
520
|
})
|
|
518
521
|
] }),
|
|
519
|
-
/* @__PURE__ */
|
|
522
|
+
/* @__PURE__ */ f("div", { children: [/* @__PURE__ */ d("label", {
|
|
520
523
|
className: "block text-sm font-medium text-text-primary mb-1",
|
|
521
|
-
children:
|
|
522
|
-
}), /* @__PURE__ */
|
|
523
|
-
ref:
|
|
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__ */
|
|
528
|
+
children: [/* @__PURE__ */ d("option", {
|
|
526
529
|
value: "",
|
|
527
|
-
children:
|
|
528
|
-
}),
|
|
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__ */
|
|
536
|
+
/* @__PURE__ */ f("div", { children: [/* @__PURE__ */ d("label", {
|
|
534
537
|
className: "block text-sm font-medium text-text-primary mb-1",
|
|
535
|
-
children:
|
|
536
|
-
}), /* @__PURE__ */
|
|
537
|
-
ref:
|
|
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__ */
|
|
543
|
+
/* @__PURE__ */ d("option", {
|
|
541
544
|
value: "PROJECT",
|
|
542
|
-
children:
|
|
545
|
+
children: y("vibesPage.typeProject", "Project")
|
|
543
546
|
}),
|
|
544
|
-
/* @__PURE__ */
|
|
547
|
+
/* @__PURE__ */ d("option", {
|
|
545
548
|
value: "REPOSITORY",
|
|
546
|
-
children:
|
|
549
|
+
children: y("vibesPage.typeRepository", "Repository")
|
|
547
550
|
}),
|
|
548
|
-
/* @__PURE__ */
|
|
551
|
+
/* @__PURE__ */ d("option", {
|
|
549
552
|
value: "WORKSPACE",
|
|
550
|
-
children:
|
|
553
|
+
children: y("vibesPage.typeWorkspace", "Workspace")
|
|
551
554
|
}),
|
|
552
|
-
/* @__PURE__ */
|
|
555
|
+
/* @__PURE__ */ d("option", {
|
|
553
556
|
value: "MONOREPO",
|
|
554
|
-
children:
|
|
557
|
+
children: y("vibesPage.typeMonorepo", "Monorepo")
|
|
555
558
|
}),
|
|
556
|
-
/* @__PURE__ */
|
|
559
|
+
/* @__PURE__ */ d("option", {
|
|
557
560
|
value: "PACKAGE",
|
|
558
|
-
children:
|
|
561
|
+
children: y("vibesPage.typePackage", "Package")
|
|
559
562
|
}),
|
|
560
|
-
/* @__PURE__ */
|
|
563
|
+
/* @__PURE__ */ d("option", {
|
|
561
564
|
value: "CUSTOM",
|
|
562
|
-
children:
|
|
565
|
+
children: y("vibesPage.typeCustom", "Custom")
|
|
563
566
|
})
|
|
564
567
|
]
|
|
565
568
|
})] })
|
|
566
569
|
]
|
|
567
570
|
}),
|
|
568
|
-
/* @__PURE__ */
|
|
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__ */
|
|
571
|
-
onClick: () =>
|
|
572
|
-
disabled:
|
|
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:
|
|
575
|
-
}), /* @__PURE__ */
|
|
576
|
-
onClick:
|
|
577
|
-
disabled:
|
|
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:
|
|
592
|
+
children: M ? y("vibesPage.creating", "Creating...") : y("vibesPage.createVibe", "Create Vibe")
|
|
580
593
|
})]
|
|
581
594
|
})
|
|
582
595
|
]
|
|
583
596
|
})
|
|
584
597
|
}),
|
|
585
|
-
/* @__PURE__ */
|
|
586
|
-
isOpen:
|
|
587
|
-
onClose: () =>
|
|
598
|
+
/* @__PURE__ */ d(ae, {
|
|
599
|
+
isOpen: Ue,
|
|
600
|
+
onClose: () => P(!1),
|
|
588
601
|
onConfirm: () => {
|
|
589
|
-
|
|
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 {
|
|
612
|
+
export { p as VibesPage };
|
|
600
613
|
|
|
601
614
|
//# sourceMappingURL=VibesPage.js.map
|