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