@burdenoff/microfe-vibecontrols 2026.602.1 → 2026.602.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/vibes/DeleteVibeDialog.js +130 -0
- package/dist/components/vibes/DeleteVibeDialog.js.map +1 -0
- package/dist/components/vibes/VibeCard.js +64 -56
- package/dist/components/vibes/VibeCard.js.map +1 -1
- package/dist/components/vibes/VibeList.js +132 -113
- package/dist/components/vibes/VibeList.js.map +1 -1
- package/dist/components/vibes/index.js +1 -0
- package/dist/generated/wspace-operations.js +2 -2
- package/dist/generated/wspace-operations.js.map +1 -1
- package/dist/generated/wspace-types.js.map +1 -1
- package/dist/pages/VibeDetailsPage.js +560 -523
- package/dist/pages/VibeDetailsPage.js.map +1 -1
- package/dist/pages/VibesPage.js +311 -280
- package/dist/pages/VibesPage.js.map +1 -1
- package/package.json +1 -1
|
@@ -4,12 +4,12 @@ import { StatusBadge as n } from "../shared/StatusBadge.js";
|
|
|
4
4
|
import { SelectionCheckbox as r } from "../shared/SelectionCheckbox.js";
|
|
5
5
|
import { vibeTypeIcons as i } from "./icons.js";
|
|
6
6
|
import { useState as a } from "react";
|
|
7
|
-
import { Archive as o, ExternalLink as s, FolderOpen as c, GitBranch as l, MoreVertical as u, Play as d, Plus as f, Settings as p, Tag as m } from "lucide-react";
|
|
8
|
-
import { Fragment as
|
|
7
|
+
import { Archive as o, ExternalLink as s, FolderOpen as c, GitBranch as l, MoreVertical as u, Play as d, Plus as f, Settings as p, Tag as m, Trash2 as h } from "lucide-react";
|
|
8
|
+
import { Fragment as g, jsx as _, jsxs as v } from "react/jsx-runtime";
|
|
9
9
|
//#region src/components/vibes/VibeList.tsx
|
|
10
|
-
function
|
|
11
|
-
let
|
|
12
|
-
return /* @__PURE__ */
|
|
10
|
+
function y({ vibe: e, onOpen: t, onActivate: a, onOpenInEditor: u, onArchive: f, onDelete: p, selected: g, onToggleSelect: y }) {
|
|
11
|
+
let b = i[e.type] || c;
|
|
12
|
+
return /* @__PURE__ */ v("div", {
|
|
13
13
|
role: "button",
|
|
14
14
|
tabIndex: 0,
|
|
15
15
|
onKeyDown: (n) => {
|
|
@@ -18,210 +18,227 @@ function v({ vibe: e, onOpen: t, onActivate: a, onOpenInEditor: u, onArchive: f,
|
|
|
18
18
|
className: "p-4 border border-border-default rounded-lg bg-bg-surface hover:bg-bg-sunken/50 cursor-pointer transition-colors",
|
|
19
19
|
onClick: () => t?.(e),
|
|
20
20
|
children: [
|
|
21
|
-
/* @__PURE__ */
|
|
21
|
+
/* @__PURE__ */ v("div", {
|
|
22
22
|
className: "flex items-start justify-between gap-3",
|
|
23
|
-
children: [/* @__PURE__ */
|
|
23
|
+
children: [/* @__PURE__ */ v("div", {
|
|
24
24
|
className: "flex items-start gap-3 min-w-0 flex-1",
|
|
25
25
|
children: [
|
|
26
|
-
|
|
26
|
+
y && /* @__PURE__ */ _("div", {
|
|
27
27
|
onClick: (e) => e.stopPropagation(),
|
|
28
|
-
children: /* @__PURE__ */
|
|
29
|
-
checked: !!
|
|
30
|
-
onChange:
|
|
28
|
+
children: /* @__PURE__ */ _(r, {
|
|
29
|
+
checked: !!g,
|
|
30
|
+
onChange: y,
|
|
31
31
|
ariaLabel: `Select vibe ${e.name}`
|
|
32
32
|
})
|
|
33
33
|
}),
|
|
34
|
-
/* @__PURE__ */
|
|
35
|
-
/* @__PURE__ */
|
|
34
|
+
/* @__PURE__ */ _(b, { className: "size-5 text-action-primary-bg flex-shrink-0 mt-0.5" }),
|
|
35
|
+
/* @__PURE__ */ v("div", {
|
|
36
36
|
className: "min-w-0 flex-1",
|
|
37
|
-
children: [/* @__PURE__ */
|
|
37
|
+
children: [/* @__PURE__ */ _("p", {
|
|
38
38
|
className: "text-sm font-medium text-text-primary truncate",
|
|
39
39
|
children: e.name
|
|
40
|
-
}), e.description && /* @__PURE__ */
|
|
40
|
+
}), e.description && /* @__PURE__ */ _("p", {
|
|
41
41
|
className: "text-xs text-text-muted truncate mt-0.5",
|
|
42
42
|
children: e.description
|
|
43
43
|
})]
|
|
44
44
|
})
|
|
45
45
|
]
|
|
46
|
-
}), /* @__PURE__ */
|
|
46
|
+
}), /* @__PURE__ */ _(n, { status: e.status })]
|
|
47
47
|
}),
|
|
48
|
-
/* @__PURE__ */
|
|
48
|
+
/* @__PURE__ */ v("div", {
|
|
49
49
|
className: "mt-3 flex flex-wrap items-center gap-x-4 gap-y-2 text-xs text-text-secondary",
|
|
50
|
-
children: [e.gitBranch && /* @__PURE__ */
|
|
50
|
+
children: [e.gitBranch && /* @__PURE__ */ v("span", {
|
|
51
51
|
className: "flex items-center gap-1",
|
|
52
|
-
children: [/* @__PURE__ */
|
|
53
|
-
}), e.tags && e.tags.length > 0 && /* @__PURE__ */
|
|
52
|
+
children: [/* @__PURE__ */ _(l, { className: "size-3" }), e.gitBranch]
|
|
53
|
+
}), e.tags && e.tags.length > 0 && /* @__PURE__ */ v("span", {
|
|
54
54
|
className: "flex items-center gap-1",
|
|
55
55
|
children: [
|
|
56
|
-
/* @__PURE__ */
|
|
56
|
+
/* @__PURE__ */ _(m, { className: "size-3" }),
|
|
57
57
|
e.tags.length,
|
|
58
58
|
" tag",
|
|
59
59
|
e.tags.length === 1 ? "" : "s"
|
|
60
60
|
]
|
|
61
61
|
})]
|
|
62
62
|
}),
|
|
63
|
-
e.path && /* @__PURE__ */
|
|
63
|
+
e.path && /* @__PURE__ */ _("div", {
|
|
64
64
|
className: "mt-2 text-xs font-mono text-text-muted truncate",
|
|
65
65
|
children: e.path
|
|
66
66
|
}),
|
|
67
|
-
/* @__PURE__ */
|
|
67
|
+
/* @__PURE__ */ v("div", {
|
|
68
68
|
className: "mt-3 flex items-center gap-2 justify-end border-t border-border-default pt-3",
|
|
69
69
|
children: [
|
|
70
|
-
a && e.status !== "ACTIVE" && /* @__PURE__ */
|
|
70
|
+
a && e.status !== "ACTIVE" && /* @__PURE__ */ _("button", {
|
|
71
71
|
type: "button",
|
|
72
72
|
onClick: (t) => {
|
|
73
73
|
t.stopPropagation(), a(e);
|
|
74
74
|
},
|
|
75
75
|
className: "p-2 rounded hover:bg-bg-sunken transition-colors",
|
|
76
76
|
title: "Activate",
|
|
77
|
-
children: /* @__PURE__ */
|
|
77
|
+
children: /* @__PURE__ */ _(d, { className: "size-4 text-text-secondary" })
|
|
78
78
|
}),
|
|
79
|
-
u && e.path && /* @__PURE__ */
|
|
79
|
+
u && e.path && /* @__PURE__ */ _("button", {
|
|
80
80
|
type: "button",
|
|
81
81
|
onClick: (t) => {
|
|
82
82
|
t.stopPropagation(), u(e);
|
|
83
83
|
},
|
|
84
84
|
className: "p-2 rounded hover:bg-bg-sunken transition-colors",
|
|
85
85
|
title: "Open in VS Code",
|
|
86
|
-
children: /* @__PURE__ */
|
|
86
|
+
children: /* @__PURE__ */ _(s, { className: "size-4 text-text-secondary" })
|
|
87
87
|
}),
|
|
88
|
-
f && e.status !== "ARCHIVED" && /* @__PURE__ */
|
|
88
|
+
f && e.status !== "ARCHIVED" && /* @__PURE__ */ _("button", {
|
|
89
89
|
type: "button",
|
|
90
90
|
onClick: (t) => {
|
|
91
91
|
t.stopPropagation(), f(e);
|
|
92
92
|
},
|
|
93
93
|
className: "p-2 rounded hover:bg-bg-sunken transition-colors",
|
|
94
94
|
title: "Archive",
|
|
95
|
-
children: /* @__PURE__ */
|
|
95
|
+
children: /* @__PURE__ */ _(o, { className: "size-4 text-text-secondary" })
|
|
96
|
+
}),
|
|
97
|
+
p && /* @__PURE__ */ _("button", {
|
|
98
|
+
type: "button",
|
|
99
|
+
onClick: (t) => {
|
|
100
|
+
t.stopPropagation(), p(e);
|
|
101
|
+
},
|
|
102
|
+
className: "p-2 rounded hover:bg-bg-sunken transition-colors",
|
|
103
|
+
title: "Delete",
|
|
104
|
+
children: /* @__PURE__ */ _(h, { className: "size-4 text-status-error-text" })
|
|
96
105
|
})
|
|
97
106
|
]
|
|
98
107
|
})
|
|
99
108
|
]
|
|
100
109
|
});
|
|
101
110
|
}
|
|
102
|
-
function
|
|
103
|
-
let [
|
|
104
|
-
return /* @__PURE__ */
|
|
105
|
-
className: `border-b border-border-default hover:bg-bg-sunken/50 cursor-pointer transition-colors ${
|
|
111
|
+
function b({ vibe: e, onOpen: t, onEdit: f, onArchive: g, onDelete: y, onActivate: b, onOpenInEditor: x, selected: S, onToggleSelect: C }) {
|
|
112
|
+
let [w, T] = a(!1), E = i[e.type] || c;
|
|
113
|
+
return /* @__PURE__ */ v("tr", {
|
|
114
|
+
className: `border-b border-border-default hover:bg-bg-sunken/50 cursor-pointer transition-colors ${S ? "bg-bg-sunken/40" : ""}`,
|
|
106
115
|
onClick: () => t?.(e),
|
|
107
116
|
children: [
|
|
108
|
-
/* @__PURE__ */
|
|
117
|
+
/* @__PURE__ */ _("td", {
|
|
109
118
|
className: "px-4 py-3",
|
|
110
|
-
children:
|
|
119
|
+
children: C && /* @__PURE__ */ _("div", {
|
|
111
120
|
onClick: (e) => e.stopPropagation(),
|
|
112
|
-
children: /* @__PURE__ */
|
|
113
|
-
checked: !!
|
|
114
|
-
onChange:
|
|
121
|
+
children: /* @__PURE__ */ _(r, {
|
|
122
|
+
checked: !!S,
|
|
123
|
+
onChange: C,
|
|
115
124
|
ariaLabel: `Select vibe ${e.name}`
|
|
116
125
|
})
|
|
117
126
|
})
|
|
118
127
|
}),
|
|
119
|
-
/* @__PURE__ */
|
|
128
|
+
/* @__PURE__ */ _("td", {
|
|
120
129
|
className: "px-4 py-3",
|
|
121
|
-
children: /* @__PURE__ */
|
|
130
|
+
children: /* @__PURE__ */ v("div", {
|
|
122
131
|
className: "flex items-center gap-3 min-w-0",
|
|
123
|
-
children: [/* @__PURE__ */
|
|
132
|
+
children: [/* @__PURE__ */ _(E, { className: "size-4 text-action-primary-bg shrink-0" }), /* @__PURE__ */ v("div", {
|
|
124
133
|
className: "min-w-0",
|
|
125
|
-
children: [/* @__PURE__ */
|
|
134
|
+
children: [/* @__PURE__ */ _("p", {
|
|
126
135
|
className: "text-sm font-medium text-text-primary truncate",
|
|
127
136
|
children: e.name
|
|
128
|
-
}), e.description && /* @__PURE__ */
|
|
137
|
+
}), e.description && /* @__PURE__ */ _("p", {
|
|
129
138
|
className: "text-xs text-text-muted truncate max-w-[250px]",
|
|
130
139
|
children: e.description
|
|
131
140
|
})]
|
|
132
141
|
})]
|
|
133
142
|
})
|
|
134
143
|
}),
|
|
135
|
-
/* @__PURE__ */
|
|
144
|
+
/* @__PURE__ */ _("td", {
|
|
136
145
|
className: "px-4 py-3",
|
|
137
|
-
children: /* @__PURE__ */
|
|
146
|
+
children: /* @__PURE__ */ _(n, { status: e.status })
|
|
138
147
|
}),
|
|
139
|
-
/* @__PURE__ */
|
|
148
|
+
/* @__PURE__ */ _("td", {
|
|
140
149
|
className: "px-4 py-3",
|
|
141
|
-
children: e.path ? /* @__PURE__ */
|
|
150
|
+
children: e.path ? /* @__PURE__ */ _("span", {
|
|
142
151
|
className: "text-xs font-mono text-text-muted truncate block max-w-[180px]",
|
|
143
152
|
children: e.path
|
|
144
|
-
}) : /* @__PURE__ */
|
|
153
|
+
}) : /* @__PURE__ */ _("span", {
|
|
145
154
|
className: "text-xs text-text-muted",
|
|
146
155
|
children: "-"
|
|
147
156
|
})
|
|
148
157
|
}),
|
|
149
|
-
/* @__PURE__ */
|
|
158
|
+
/* @__PURE__ */ _("td", {
|
|
150
159
|
className: "px-4 py-3",
|
|
151
|
-
children: e.gitBranch ? /* @__PURE__ */
|
|
160
|
+
children: e.gitBranch ? /* @__PURE__ */ v("div", {
|
|
152
161
|
className: "flex items-center gap-1.5 text-xs text-text-secondary",
|
|
153
|
-
children: [/* @__PURE__ */
|
|
162
|
+
children: [/* @__PURE__ */ _(l, { className: "size-3" }), /* @__PURE__ */ _("span", {
|
|
154
163
|
className: "truncate max-w-[100px]",
|
|
155
164
|
children: e.gitBranch
|
|
156
165
|
})]
|
|
157
|
-
}) : /* @__PURE__ */
|
|
166
|
+
}) : /* @__PURE__ */ _("span", {
|
|
158
167
|
className: "text-xs text-text-muted",
|
|
159
168
|
children: "-"
|
|
160
169
|
})
|
|
161
170
|
}),
|
|
162
|
-
/* @__PURE__ */
|
|
171
|
+
/* @__PURE__ */ _("td", {
|
|
163
172
|
className: "px-4 py-3",
|
|
164
|
-
children: e.tags && e.tags.length > 0 ? /* @__PURE__ */
|
|
173
|
+
children: e.tags && e.tags.length > 0 ? /* @__PURE__ */ v("div", {
|
|
165
174
|
className: "flex flex-wrap gap-1",
|
|
166
|
-
children: [e.tags.slice(0, 2).map((e) => /* @__PURE__ */
|
|
175
|
+
children: [e.tags.slice(0, 2).map((e) => /* @__PURE__ */ v("span", {
|
|
167
176
|
className: "inline-flex items-center gap-0.5 px-1.5 py-0.5 text-xs bg-bg-sunken text-text-secondary rounded",
|
|
168
|
-
children: [/* @__PURE__ */
|
|
169
|
-
}, e)), e.tags.length > 2 && /* @__PURE__ */
|
|
177
|
+
children: [/* @__PURE__ */ _(m, { className: "size-2.5" }), e]
|
|
178
|
+
}, e)), e.tags.length > 2 && /* @__PURE__ */ v("span", {
|
|
170
179
|
className: "px-1.5 py-0.5 text-xs bg-bg-sunken text-text-secondary rounded",
|
|
171
180
|
children: ["+", e.tags.length - 2]
|
|
172
181
|
})]
|
|
173
|
-
}) : /* @__PURE__ */
|
|
182
|
+
}) : /* @__PURE__ */ _("span", {
|
|
174
183
|
className: "text-xs text-text-muted",
|
|
175
184
|
children: "-"
|
|
176
185
|
})
|
|
177
186
|
}),
|
|
178
|
-
/* @__PURE__ */
|
|
187
|
+
/* @__PURE__ */ _("td", {
|
|
179
188
|
className: "px-4 py-3",
|
|
180
|
-
children: /* @__PURE__ */
|
|
189
|
+
children: /* @__PURE__ */ _("div", {
|
|
181
190
|
className: "flex items-center gap-1 justify-end",
|
|
182
|
-
children: (f ||
|
|
191
|
+
children: (f || g || y || b || x) && /* @__PURE__ */ v("div", {
|
|
183
192
|
className: "relative",
|
|
184
|
-
children: [/* @__PURE__ */
|
|
193
|
+
children: [/* @__PURE__ */ _("button", {
|
|
185
194
|
type: "button",
|
|
186
195
|
onClick: (e) => {
|
|
187
|
-
e.stopPropagation(),
|
|
196
|
+
e.stopPropagation(), T(!w);
|
|
188
197
|
},
|
|
189
198
|
className: "p-1.5 rounded hover:bg-bg-sunken transition-colors",
|
|
190
|
-
children: /* @__PURE__ */
|
|
191
|
-
}),
|
|
199
|
+
children: /* @__PURE__ */ _(u, { className: "size-3.5 text-text-secondary" })
|
|
200
|
+
}), w && /* @__PURE__ */ v("div", {
|
|
192
201
|
className: "absolute right-0 mt-1 w-36 bg-bg-surface border border-border-default rounded-lg shadow-lg z-10",
|
|
193
202
|
children: [
|
|
194
|
-
|
|
203
|
+
b && e.status !== "ACTIVE" && /* @__PURE__ */ v("button", {
|
|
195
204
|
type: "button",
|
|
196
205
|
onClick: (t) => {
|
|
197
|
-
t.stopPropagation(),
|
|
206
|
+
t.stopPropagation(), b(e), T(!1);
|
|
198
207
|
},
|
|
199
208
|
className: "flex items-center gap-2 w-full px-3 py-2 text-sm text-text-primary hover:bg-bg-sunken rounded-t-lg",
|
|
200
|
-
children: [/* @__PURE__ */
|
|
209
|
+
children: [/* @__PURE__ */ _(d, { className: "size-4" }), "Activate"]
|
|
201
210
|
}),
|
|
202
|
-
f && /* @__PURE__ */
|
|
211
|
+
f && /* @__PURE__ */ v("button", {
|
|
203
212
|
type: "button",
|
|
204
213
|
onClick: (t) => {
|
|
205
|
-
t.stopPropagation(), f(e),
|
|
214
|
+
t.stopPropagation(), f(e), T(!1);
|
|
206
215
|
},
|
|
207
216
|
className: "flex items-center gap-2 w-full px-3 py-2 text-sm text-text-primary hover:bg-bg-sunken",
|
|
208
|
-
children: [/* @__PURE__ */
|
|
217
|
+
children: [/* @__PURE__ */ _(p, { className: "size-4" }), "Edit"]
|
|
209
218
|
}),
|
|
210
|
-
|
|
219
|
+
x && e.path && /* @__PURE__ */ v("button", {
|
|
211
220
|
type: "button",
|
|
212
221
|
onClick: (t) => {
|
|
213
|
-
t.stopPropagation(),
|
|
222
|
+
t.stopPropagation(), x(e), T(!1);
|
|
214
223
|
},
|
|
215
224
|
className: "flex items-center gap-2 w-full px-3 py-2 text-sm text-text-primary hover:bg-bg-sunken",
|
|
216
|
-
children: [/* @__PURE__ */
|
|
225
|
+
children: [/* @__PURE__ */ _(s, { className: "size-4" }), "Open in VS Code"]
|
|
217
226
|
}),
|
|
218
|
-
|
|
227
|
+
g && e.status !== "ARCHIVED" && /* @__PURE__ */ v("button", {
|
|
219
228
|
type: "button",
|
|
220
229
|
onClick: (t) => {
|
|
221
|
-
t.stopPropagation(),
|
|
230
|
+
t.stopPropagation(), g(e), T(!1);
|
|
222
231
|
},
|
|
223
232
|
className: "flex items-center gap-2 w-full px-3 py-2 text-sm text-text-primary hover:bg-bg-sunken rounded-b-lg",
|
|
224
|
-
children: [/* @__PURE__ */
|
|
233
|
+
children: [/* @__PURE__ */ _(o, { className: "size-4" }), "Archive"]
|
|
234
|
+
}),
|
|
235
|
+
y && /* @__PURE__ */ v("button", {
|
|
236
|
+
type: "button",
|
|
237
|
+
onClick: (t) => {
|
|
238
|
+
t.stopPropagation(), y(e), T(!1);
|
|
239
|
+
},
|
|
240
|
+
className: "flex items-center gap-2 w-full px-3 py-2 text-sm text-status-error-text hover:bg-bg-sunken rounded-b-lg",
|
|
241
|
+
children: [/* @__PURE__ */ _(h, { className: "size-4" }), "Delete"]
|
|
225
242
|
})
|
|
226
243
|
]
|
|
227
244
|
})]
|
|
@@ -231,87 +248,89 @@ function y({ vibe: e, onOpen: t, onEdit: f, onArchive: h, onActivate: v, onOpenI
|
|
|
231
248
|
]
|
|
232
249
|
});
|
|
233
250
|
}
|
|
234
|
-
function
|
|
235
|
-
let
|
|
236
|
-
return !
|
|
237
|
-
icon: /* @__PURE__ */
|
|
238
|
-
title:
|
|
239
|
-
description:
|
|
240
|
-
action:
|
|
251
|
+
function x({ vibes: n, onOpen: i, onEdit: a, onArchive: o, onDelete: s, onActivate: l, onOpenInEditor: u, onCreateNew: d, isLoading: p, selectedVibeIds: m = /* @__PURE__ */ new Set(), onToggleSelect: h, onToggleAllVisible: x, allVisibleSelected: S = !1, partiallySelected: C = !1 }) {
|
|
252
|
+
let w = e();
|
|
253
|
+
return !p && n.length === 0 ? /* @__PURE__ */ _(t, {
|
|
254
|
+
icon: /* @__PURE__ */ _(c, { className: "size-8 text-text-secondary" }),
|
|
255
|
+
title: w("vibecontrols.vibes.list.emptyTitle", "No vibes yet"),
|
|
256
|
+
description: w("vibecontrols.vibes.list.emptyDescription", "Vibes are your development projects and environments. Create your first vibe to organize your work."),
|
|
257
|
+
action: d && /* @__PURE__ */ v("button", {
|
|
241
258
|
type: "button",
|
|
242
|
-
onClick:
|
|
259
|
+
onClick: d,
|
|
243
260
|
className: "inline-flex items-center gap-2 px-4 py-2 text-sm font-medium text-action-primary-text bg-action-primary-bg rounded-md hover:bg-action-primary-bg-hover transition-colors",
|
|
244
|
-
children: [/* @__PURE__ */
|
|
261
|
+
children: [/* @__PURE__ */ _(f, { className: "size-4" }), w("vibecontrols.vibes.list.createVibe", "Create Vibe")]
|
|
245
262
|
})
|
|
246
|
-
}) : /* @__PURE__ */
|
|
263
|
+
}) : /* @__PURE__ */ v(g, { children: [/* @__PURE__ */ _("div", {
|
|
247
264
|
className: "sm:hidden space-y-3",
|
|
248
|
-
children: n.map((e) => /* @__PURE__ */
|
|
265
|
+
children: n.map((e) => /* @__PURE__ */ _(y, {
|
|
249
266
|
vibe: e,
|
|
250
267
|
onOpen: i,
|
|
251
|
-
onActivate:
|
|
252
|
-
onOpenInEditor:
|
|
268
|
+
onActivate: l,
|
|
269
|
+
onOpenInEditor: u,
|
|
253
270
|
onArchive: o,
|
|
254
|
-
|
|
255
|
-
|
|
271
|
+
onDelete: s,
|
|
272
|
+
selected: m.has(e.id),
|
|
273
|
+
onToggleSelect: h ? (t) => h(e, t) : void 0
|
|
256
274
|
}, e.id))
|
|
257
|
-
}), /* @__PURE__ */
|
|
275
|
+
}), /* @__PURE__ */ _("div", {
|
|
258
276
|
className: "hidden sm:block border border-border-default rounded-lg overflow-visible",
|
|
259
|
-
children: /* @__PURE__ */
|
|
277
|
+
children: /* @__PURE__ */ _("div", {
|
|
260
278
|
className: "overflow-x-auto",
|
|
261
|
-
children: /* @__PURE__ */
|
|
279
|
+
children: /* @__PURE__ */ v("table", {
|
|
262
280
|
className: "w-full",
|
|
263
|
-
children: [/* @__PURE__ */
|
|
281
|
+
children: [/* @__PURE__ */ _("thead", { children: /* @__PURE__ */ v("tr", {
|
|
264
282
|
className: "bg-bg-sunken border-b border-border-default",
|
|
265
283
|
children: [
|
|
266
|
-
/* @__PURE__ */
|
|
284
|
+
/* @__PURE__ */ _("th", {
|
|
267
285
|
className: "px-4 py-2.5 text-left text-xs font-medium text-text-secondary uppercase tracking-wider w-12",
|
|
268
|
-
children:
|
|
269
|
-
checked:
|
|
270
|
-
indeterminate:
|
|
271
|
-
onChange:
|
|
286
|
+
children: x ? /* @__PURE__ */ _(r, {
|
|
287
|
+
checked: S,
|
|
288
|
+
indeterminate: C,
|
|
289
|
+
onChange: x,
|
|
272
290
|
ariaLabel: "Select all visible vibes"
|
|
273
291
|
}) : null
|
|
274
292
|
}),
|
|
275
|
-
/* @__PURE__ */
|
|
293
|
+
/* @__PURE__ */ _("th", {
|
|
276
294
|
className: "px-4 py-2.5 text-left text-xs font-medium text-text-secondary uppercase tracking-wider",
|
|
277
295
|
children: "Name"
|
|
278
296
|
}),
|
|
279
|
-
/* @__PURE__ */
|
|
297
|
+
/* @__PURE__ */ _("th", {
|
|
280
298
|
className: "px-4 py-2.5 text-left text-xs font-medium text-text-secondary uppercase tracking-wider",
|
|
281
299
|
children: "Status"
|
|
282
300
|
}),
|
|
283
|
-
/* @__PURE__ */
|
|
301
|
+
/* @__PURE__ */ _("th", {
|
|
284
302
|
className: "px-4 py-2.5 text-left text-xs font-medium text-text-secondary uppercase tracking-wider",
|
|
285
303
|
children: "Path"
|
|
286
304
|
}),
|
|
287
|
-
/* @__PURE__ */
|
|
305
|
+
/* @__PURE__ */ _("th", {
|
|
288
306
|
className: "px-4 py-2.5 text-left text-xs font-medium text-text-secondary uppercase tracking-wider",
|
|
289
307
|
children: "Branch"
|
|
290
308
|
}),
|
|
291
|
-
/* @__PURE__ */
|
|
309
|
+
/* @__PURE__ */ _("th", {
|
|
292
310
|
className: "px-4 py-2.5 text-left text-xs font-medium text-text-secondary uppercase tracking-wider",
|
|
293
311
|
children: "Tags"
|
|
294
312
|
}),
|
|
295
|
-
/* @__PURE__ */
|
|
313
|
+
/* @__PURE__ */ _("th", {
|
|
296
314
|
className: "px-4 py-2.5 text-right text-xs font-medium text-text-secondary uppercase tracking-wider",
|
|
297
315
|
children: "Actions"
|
|
298
316
|
})
|
|
299
317
|
]
|
|
300
|
-
}) }), /* @__PURE__ */
|
|
318
|
+
}) }), /* @__PURE__ */ _("tbody", { children: n.map((e) => /* @__PURE__ */ _(b, {
|
|
301
319
|
vibe: e,
|
|
302
320
|
onOpen: i,
|
|
303
321
|
onEdit: a,
|
|
304
322
|
onArchive: o,
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
323
|
+
onDelete: s,
|
|
324
|
+
onActivate: l,
|
|
325
|
+
onOpenInEditor: u,
|
|
326
|
+
selected: m.has(e.id),
|
|
327
|
+
onToggleSelect: h ? (t) => h(e, t) : void 0
|
|
309
328
|
}, e.id)) })]
|
|
310
329
|
})
|
|
311
330
|
})
|
|
312
331
|
})] });
|
|
313
332
|
}
|
|
314
333
|
//#endregion
|
|
315
|
-
export {
|
|
334
|
+
export { x as VibeList };
|
|
316
335
|
|
|
317
336
|
//# sourceMappingURL=VibeList.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VibeList.js","names":[],"sources":["../../../src/components/vibes/VibeList.tsx"],"sourcesContent":["import type { Vibe } from './types';\nimport { vibeTypeIcons } from './icons';\nimport { StatusBadge } from '../shared/StatusBadge';\nimport { EmptyState } from '../shared/EmptyState';\nimport { SelectionCheckbox } from '../shared/SelectionCheckbox';\nimport {\n FolderOpen,\n Plus,\n GitBranch,\n Tag,\n MoreVertical,\n Play,\n Archive,\n Settings,\n ExternalLink,\n} from 'lucide-react';\nimport { useState } from 'react';\nimport { useTr } from '../../shared/hooks/useTr';\n\ninterface VibeListProps {\n vibes: Vibe[];\n onOpen?: (vibe: Vibe) => void;\n onEdit?: (vibe: Vibe) => void;\n onArchive?: (vibe: Vibe) => void;\n onActivate?: (vibe: Vibe) => void;\n onOpenInEditor?: (vibe: Vibe) => void;\n onCreateNew?: () => void;\n isLoading?: boolean;\n selectedVibeIds?: Set<string>;\n onToggleSelect?: (vibe: Vibe, checked: boolean) => void;\n onToggleAllVisible?: (checked: boolean) => void;\n allVisibleSelected?: boolean;\n partiallySelected?: boolean;\n}\n\n/**\n * Mobile card view for a single vibe\n */\nfunction VibeListCard({\n vibe,\n onOpen,\n onActivate,\n onOpenInEditor,\n onArchive,\n selected,\n onToggleSelect,\n}: {\n vibe: Vibe;\n onOpen?: (vibe: Vibe) => void;\n onActivate?: (vibe: Vibe) => void;\n onOpenInEditor?: (vibe: Vibe) => void;\n onArchive?: (vibe: Vibe) => void;\n selected?: boolean;\n onToggleSelect?: (checked: boolean) => void;\n}) {\n const Icon = vibeTypeIcons[vibe.type] || FolderOpen;\n\n return (\n <div\n role=\"button\"\n tabIndex={0}\n onKeyDown={(e) => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n (() => onOpen?.(vibe))();\n }\n }}\n className=\"p-4 border border-border-default rounded-lg bg-bg-surface hover:bg-bg-sunken/50 cursor-pointer transition-colors\"\n onClick={() => onOpen?.(vibe)}\n >\n {/* Header: Icon, Name, Status */}\n <div className=\"flex items-start justify-between gap-3\">\n <div className=\"flex items-start gap-3 min-w-0 flex-1\">\n {onToggleSelect && (\n <div onClick={(event) => event.stopPropagation()}>\n <SelectionCheckbox\n checked={!!selected}\n onChange={onToggleSelect}\n ariaLabel={`Select vibe ${vibe.name}`}\n />\n </div>\n )}\n <Icon className=\"size-5 text-action-primary-bg flex-shrink-0 mt-0.5\" />\n <div className=\"min-w-0 flex-1\">\n <p className=\"text-sm font-medium text-text-primary truncate\">{vibe.name}</p>\n {vibe.description && (\n <p className=\"text-xs text-text-muted truncate mt-0.5\">{vibe.description}</p>\n )}\n </div>\n </div>\n <StatusBadge status={vibe.status} />\n </div>\n\n {/* Meta info row */}\n <div className=\"mt-3 flex flex-wrap items-center gap-x-4 gap-y-2 text-xs text-text-secondary\">\n {vibe.gitBranch && (\n <span className=\"flex items-center gap-1\">\n <GitBranch className=\"size-3\" />\n {vibe.gitBranch}\n </span>\n )}\n {vibe.tags && vibe.tags.length > 0 && (\n <span className=\"flex items-center gap-1\">\n <Tag className=\"size-3\" />\n {vibe.tags.length} tag{vibe.tags.length !== 1 ? 's' : ''}\n </span>\n )}\n </div>\n\n {/* Path (if exists) */}\n {vibe.path && (\n <div className=\"mt-2 text-xs font-mono text-text-muted truncate\">{vibe.path}</div>\n )}\n\n {/* Actions */}\n <div className=\"mt-3 flex items-center gap-2 justify-end border-t border-border-default pt-3\">\n {onActivate && vibe.status !== 'ACTIVE' && (\n <button\n type=\"button\"\n onClick={(e) => {\n e.stopPropagation();\n onActivate(vibe);\n }}\n className=\"p-2 rounded hover:bg-bg-sunken transition-colors\"\n title=\"Activate\"\n >\n <Play className=\"size-4 text-text-secondary\" />\n </button>\n )}\n {onOpenInEditor && vibe.path && (\n <button\n type=\"button\"\n onClick={(e) => {\n e.stopPropagation();\n onOpenInEditor(vibe);\n }}\n className=\"p-2 rounded hover:bg-bg-sunken transition-colors\"\n title=\"Open in VS Code\"\n >\n <ExternalLink className=\"size-4 text-text-secondary\" />\n </button>\n )}\n {onArchive && vibe.status !== 'ARCHIVED' && (\n <button\n type=\"button\"\n onClick={(e) => {\n e.stopPropagation();\n onArchive(vibe);\n }}\n className=\"p-2 rounded hover:bg-bg-sunken transition-colors\"\n title=\"Archive\"\n >\n <Archive className=\"size-4 text-text-secondary\" />\n </button>\n )}\n </div>\n </div>\n );\n}\n\nfunction VibeRow({\n vibe,\n onOpen,\n onEdit,\n onArchive,\n onActivate,\n onOpenInEditor,\n selected,\n onToggleSelect,\n}: {\n vibe: Vibe;\n onOpen?: (vibe: Vibe) => void;\n onEdit?: (vibe: Vibe) => void;\n onArchive?: (vibe: Vibe) => void;\n onActivate?: (vibe: Vibe) => void;\n onOpenInEditor?: (vibe: Vibe) => void;\n selected?: boolean;\n onToggleSelect?: (checked: boolean) => void;\n}) {\n const [showMenu, setShowMenu] = useState(false);\n const Icon = vibeTypeIcons[vibe.type] || FolderOpen;\n\n return (\n <tr\n className={`border-b border-border-default hover:bg-bg-sunken/50 cursor-pointer transition-colors ${\n selected ? 'bg-bg-sunken/40' : ''\n }`}\n onClick={() => onOpen?.(vibe)}\n >\n <td className=\"px-4 py-3\">\n {onToggleSelect && (\n <div onClick={(event) => event.stopPropagation()}>\n <SelectionCheckbox\n checked={!!selected}\n onChange={onToggleSelect}\n ariaLabel={`Select vibe ${vibe.name}`}\n />\n </div>\n )}\n </td>\n <td className=\"px-4 py-3\">\n <div className=\"flex items-center gap-3 min-w-0\">\n <Icon className=\"size-4 text-action-primary-bg shrink-0\" />\n <div className=\"min-w-0\">\n <p className=\"text-sm font-medium text-text-primary truncate\">{vibe.name}</p>\n {vibe.description && (\n <p className=\"text-xs text-text-muted truncate max-w-[250px]\">{vibe.description}</p>\n )}\n </div>\n </div>\n </td>\n <td className=\"px-4 py-3\">\n <StatusBadge status={vibe.status} />\n </td>\n <td className=\"px-4 py-3\">\n {vibe.path ? (\n <span className=\"text-xs font-mono text-text-muted truncate block max-w-[180px]\">\n {vibe.path}\n </span>\n ) : (\n <span className=\"text-xs text-text-muted\">-</span>\n )}\n </td>\n <td className=\"px-4 py-3\">\n {vibe.gitBranch ? (\n <div className=\"flex items-center gap-1.5 text-xs text-text-secondary\">\n <GitBranch className=\"size-3\" />\n <span className=\"truncate max-w-[100px]\">{vibe.gitBranch}</span>\n </div>\n ) : (\n <span className=\"text-xs text-text-muted\">-</span>\n )}\n </td>\n <td className=\"px-4 py-3\">\n {vibe.tags && vibe.tags.length > 0 ? (\n <div className=\"flex flex-wrap gap-1\">\n {vibe.tags.slice(0, 2).map((tag) => (\n <span\n key={tag}\n className=\"inline-flex items-center gap-0.5 px-1.5 py-0.5 text-xs bg-bg-sunken text-text-secondary rounded\"\n >\n <Tag className=\"size-2.5\" />\n {tag}\n </span>\n ))}\n {vibe.tags.length > 2 && (\n <span className=\"px-1.5 py-0.5 text-xs bg-bg-sunken text-text-secondary rounded\">\n +{vibe.tags.length - 2}\n </span>\n )}\n </div>\n ) : (\n <span className=\"text-xs text-text-muted\">-</span>\n )}\n </td>\n <td className=\"px-4 py-3\">\n <div className=\"flex items-center gap-1 justify-end\">\n {(onEdit || onArchive || onActivate || onOpenInEditor) && (\n <div className=\"relative\">\n <button\n type=\"button\"\n onClick={(e) => {\n e.stopPropagation();\n setShowMenu(!showMenu);\n }}\n className=\"p-1.5 rounded hover:bg-bg-sunken transition-colors\"\n >\n <MoreVertical className=\"size-3.5 text-text-secondary\" />\n </button>\n {showMenu && (\n <div className=\"absolute right-0 mt-1 w-36 bg-bg-surface border border-border-default rounded-lg shadow-lg z-10\">\n {onActivate && vibe.status !== 'ACTIVE' && (\n <button\n type=\"button\"\n onClick={(e) => {\n e.stopPropagation();\n onActivate(vibe);\n setShowMenu(false);\n }}\n className=\"flex items-center gap-2 w-full px-3 py-2 text-sm text-text-primary hover:bg-bg-sunken rounded-t-lg\"\n >\n <Play className=\"size-4\" />\n Activate\n </button>\n )}\n {onEdit && (\n <button\n type=\"button\"\n onClick={(e) => {\n e.stopPropagation();\n onEdit(vibe);\n setShowMenu(false);\n }}\n className=\"flex items-center gap-2 w-full px-3 py-2 text-sm text-text-primary hover:bg-bg-sunken\"\n >\n <Settings className=\"size-4\" />\n Edit\n </button>\n )}\n {onOpenInEditor && vibe.path && (\n <button\n type=\"button\"\n onClick={(e) => {\n e.stopPropagation();\n onOpenInEditor(vibe);\n setShowMenu(false);\n }}\n className=\"flex items-center gap-2 w-full px-3 py-2 text-sm text-text-primary hover:bg-bg-sunken\"\n >\n <ExternalLink className=\"size-4\" />\n Open in VS Code\n </button>\n )}\n {onArchive && vibe.status !== 'ARCHIVED' && (\n <button\n type=\"button\"\n onClick={(e) => {\n e.stopPropagation();\n onArchive(vibe);\n setShowMenu(false);\n }}\n className=\"flex items-center gap-2 w-full px-3 py-2 text-sm text-text-primary hover:bg-bg-sunken rounded-b-lg\"\n >\n <Archive className=\"size-4\" />\n Archive\n </button>\n )}\n </div>\n )}\n </div>\n )}\n </div>\n </td>\n </tr>\n );\n}\n\nexport function VibeList({\n vibes,\n onOpen,\n onEdit,\n onArchive,\n onActivate,\n onOpenInEditor,\n onCreateNew,\n isLoading,\n selectedVibeIds = new Set<string>(),\n onToggleSelect,\n onToggleAllVisible,\n allVisibleSelected = false,\n partiallySelected = false,\n}: VibeListProps) {\n const tr = useTr();\n\n if (!isLoading && vibes.length === 0) {\n return (\n <EmptyState\n icon={<FolderOpen className=\"size-8 text-text-secondary\" />}\n title={tr('vibecontrols.vibes.list.emptyTitle', 'No vibes yet')}\n description={tr(\n 'vibecontrols.vibes.list.emptyDescription',\n 'Vibes are your development projects and environments. Create your first vibe to organize your work.'\n )}\n action={\n onCreateNew && (\n <button\n type=\"button\"\n onClick={onCreateNew}\n className=\"inline-flex items-center gap-2 px-4 py-2 text-sm font-medium text-action-primary-text bg-action-primary-bg rounded-md hover:bg-action-primary-bg-hover transition-colors\"\n >\n <Plus className=\"size-4\" />\n {tr('vibecontrols.vibes.list.createVibe', 'Create Vibe')}\n </button>\n )\n }\n />\n );\n }\n\n return (\n <>\n {/* Mobile: Card view */}\n <div className=\"sm:hidden space-y-3\">\n {vibes.map((vibe) => (\n <VibeListCard\n key={vibe.id}\n vibe={vibe}\n onOpen={onOpen}\n onActivate={onActivate}\n onOpenInEditor={onOpenInEditor}\n onArchive={onArchive}\n selected={selectedVibeIds.has(vibe.id)}\n onToggleSelect={onToggleSelect ? (checked) => onToggleSelect(vibe, checked) : undefined}\n />\n ))}\n </div>\n\n {/* Desktop: Table view */}\n <div className=\"hidden sm:block border border-border-default rounded-lg overflow-visible\">\n <div className=\"overflow-x-auto\">\n <table className=\"w-full\">\n <thead>\n <tr className=\"bg-bg-sunken border-b border-border-default\">\n <th className=\"px-4 py-2.5 text-left text-xs font-medium text-text-secondary uppercase tracking-wider w-12\">\n {onToggleAllVisible ? (\n <SelectionCheckbox\n checked={allVisibleSelected}\n indeterminate={partiallySelected}\n onChange={onToggleAllVisible}\n ariaLabel=\"Select all visible vibes\"\n />\n ) : null}\n </th>\n <th className=\"px-4 py-2.5 text-left text-xs font-medium text-text-secondary uppercase tracking-wider\">\n Name\n </th>\n <th className=\"px-4 py-2.5 text-left text-xs font-medium text-text-secondary uppercase tracking-wider\">\n Status\n </th>\n <th className=\"px-4 py-2.5 text-left text-xs font-medium text-text-secondary uppercase tracking-wider\">\n Path\n </th>\n <th className=\"px-4 py-2.5 text-left text-xs font-medium text-text-secondary uppercase tracking-wider\">\n Branch\n </th>\n <th className=\"px-4 py-2.5 text-left text-xs font-medium text-text-secondary uppercase tracking-wider\">\n Tags\n </th>\n <th className=\"px-4 py-2.5 text-right text-xs font-medium text-text-secondary uppercase tracking-wider\">\n Actions\n </th>\n </tr>\n </thead>\n <tbody>\n {vibes.map((vibe) => (\n <VibeRow\n key={vibe.id}\n vibe={vibe}\n onOpen={onOpen}\n onEdit={onEdit}\n onArchive={onArchive}\n onActivate={onActivate}\n onOpenInEditor={onOpenInEditor}\n selected={selectedVibeIds.has(vibe.id)}\n onToggleSelect={\n onToggleSelect ? (checked) => onToggleSelect(vibe, checked) : undefined\n }\n />\n ))}\n </tbody>\n </table>\n </div>\n </div>\n </>\n );\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"VibeList.js","names":[],"sources":["../../../src/components/vibes/VibeList.tsx"],"sourcesContent":["import type { Vibe } from './types';\nimport { vibeTypeIcons } from './icons';\nimport { StatusBadge } from '../shared/StatusBadge';\nimport { EmptyState } from '../shared/EmptyState';\nimport { SelectionCheckbox } from '../shared/SelectionCheckbox';\nimport {\n FolderOpen,\n Plus,\n GitBranch,\n Tag,\n MoreVertical,\n Play,\n Archive,\n Settings,\n ExternalLink,\n Trash2,\n} from 'lucide-react';\nimport { useState } from 'react';\nimport { useTr } from '../../shared/hooks/useTr';\n\ninterface VibeListProps {\n vibes: Vibe[];\n onOpen?: (vibe: Vibe) => void;\n onEdit?: (vibe: Vibe) => void;\n onArchive?: (vibe: Vibe) => void;\n onDelete?: (vibe: Vibe) => void;\n onActivate?: (vibe: Vibe) => void;\n onOpenInEditor?: (vibe: Vibe) => void;\n onCreateNew?: () => void;\n isLoading?: boolean;\n selectedVibeIds?: Set<string>;\n onToggleSelect?: (vibe: Vibe, checked: boolean) => void;\n onToggleAllVisible?: (checked: boolean) => void;\n allVisibleSelected?: boolean;\n partiallySelected?: boolean;\n}\n\n/**\n * Mobile card view for a single vibe\n */\nfunction VibeListCard({\n vibe,\n onOpen,\n onActivate,\n onOpenInEditor,\n onArchive,\n onDelete,\n selected,\n onToggleSelect,\n}: {\n vibe: Vibe;\n onOpen?: (vibe: Vibe) => void;\n onActivate?: (vibe: Vibe) => void;\n onOpenInEditor?: (vibe: Vibe) => void;\n onArchive?: (vibe: Vibe) => void;\n onDelete?: (vibe: Vibe) => void;\n selected?: boolean;\n onToggleSelect?: (checked: boolean) => void;\n}) {\n const Icon = vibeTypeIcons[vibe.type] || FolderOpen;\n\n return (\n <div\n role=\"button\"\n tabIndex={0}\n onKeyDown={(e) => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n (() => onOpen?.(vibe))();\n }\n }}\n className=\"p-4 border border-border-default rounded-lg bg-bg-surface hover:bg-bg-sunken/50 cursor-pointer transition-colors\"\n onClick={() => onOpen?.(vibe)}\n >\n {/* Header: Icon, Name, Status */}\n <div className=\"flex items-start justify-between gap-3\">\n <div className=\"flex items-start gap-3 min-w-0 flex-1\">\n {onToggleSelect && (\n <div onClick={(event) => event.stopPropagation()}>\n <SelectionCheckbox\n checked={!!selected}\n onChange={onToggleSelect}\n ariaLabel={`Select vibe ${vibe.name}`}\n />\n </div>\n )}\n <Icon className=\"size-5 text-action-primary-bg flex-shrink-0 mt-0.5\" />\n <div className=\"min-w-0 flex-1\">\n <p className=\"text-sm font-medium text-text-primary truncate\">{vibe.name}</p>\n {vibe.description && (\n <p className=\"text-xs text-text-muted truncate mt-0.5\">{vibe.description}</p>\n )}\n </div>\n </div>\n <StatusBadge status={vibe.status} />\n </div>\n\n {/* Meta info row */}\n <div className=\"mt-3 flex flex-wrap items-center gap-x-4 gap-y-2 text-xs text-text-secondary\">\n {vibe.gitBranch && (\n <span className=\"flex items-center gap-1\">\n <GitBranch className=\"size-3\" />\n {vibe.gitBranch}\n </span>\n )}\n {vibe.tags && vibe.tags.length > 0 && (\n <span className=\"flex items-center gap-1\">\n <Tag className=\"size-3\" />\n {vibe.tags.length} tag{vibe.tags.length !== 1 ? 's' : ''}\n </span>\n )}\n </div>\n\n {/* Path (if exists) */}\n {vibe.path && (\n <div className=\"mt-2 text-xs font-mono text-text-muted truncate\">{vibe.path}</div>\n )}\n\n {/* Actions */}\n <div className=\"mt-3 flex items-center gap-2 justify-end border-t border-border-default pt-3\">\n {onActivate && vibe.status !== 'ACTIVE' && (\n <button\n type=\"button\"\n onClick={(e) => {\n e.stopPropagation();\n onActivate(vibe);\n }}\n className=\"p-2 rounded hover:bg-bg-sunken transition-colors\"\n title=\"Activate\"\n >\n <Play className=\"size-4 text-text-secondary\" />\n </button>\n )}\n {onOpenInEditor && vibe.path && (\n <button\n type=\"button\"\n onClick={(e) => {\n e.stopPropagation();\n onOpenInEditor(vibe);\n }}\n className=\"p-2 rounded hover:bg-bg-sunken transition-colors\"\n title=\"Open in VS Code\"\n >\n <ExternalLink className=\"size-4 text-text-secondary\" />\n </button>\n )}\n {onArchive && vibe.status !== 'ARCHIVED' && (\n <button\n type=\"button\"\n onClick={(e) => {\n e.stopPropagation();\n onArchive(vibe);\n }}\n className=\"p-2 rounded hover:bg-bg-sunken transition-colors\"\n title=\"Archive\"\n >\n <Archive className=\"size-4 text-text-secondary\" />\n </button>\n )}\n {onDelete && (\n <button\n type=\"button\"\n onClick={(e) => {\n e.stopPropagation();\n onDelete(vibe);\n }}\n className=\"p-2 rounded hover:bg-bg-sunken transition-colors\"\n title=\"Delete\"\n >\n <Trash2 className=\"size-4 text-status-error-text\" />\n </button>\n )}\n </div>\n </div>\n );\n}\n\nfunction VibeRow({\n vibe,\n onOpen,\n onEdit,\n onArchive,\n onDelete,\n onActivate,\n onOpenInEditor,\n selected,\n onToggleSelect,\n}: {\n vibe: Vibe;\n onOpen?: (vibe: Vibe) => void;\n onEdit?: (vibe: Vibe) => void;\n onArchive?: (vibe: Vibe) => void;\n onDelete?: (vibe: Vibe) => void;\n onActivate?: (vibe: Vibe) => void;\n onOpenInEditor?: (vibe: Vibe) => void;\n selected?: boolean;\n onToggleSelect?: (checked: boolean) => void;\n}) {\n const [showMenu, setShowMenu] = useState(false);\n const Icon = vibeTypeIcons[vibe.type] || FolderOpen;\n\n return (\n <tr\n className={`border-b border-border-default hover:bg-bg-sunken/50 cursor-pointer transition-colors ${\n selected ? 'bg-bg-sunken/40' : ''\n }`}\n onClick={() => onOpen?.(vibe)}\n >\n <td className=\"px-4 py-3\">\n {onToggleSelect && (\n <div onClick={(event) => event.stopPropagation()}>\n <SelectionCheckbox\n checked={!!selected}\n onChange={onToggleSelect}\n ariaLabel={`Select vibe ${vibe.name}`}\n />\n </div>\n )}\n </td>\n <td className=\"px-4 py-3\">\n <div className=\"flex items-center gap-3 min-w-0\">\n <Icon className=\"size-4 text-action-primary-bg shrink-0\" />\n <div className=\"min-w-0\">\n <p className=\"text-sm font-medium text-text-primary truncate\">{vibe.name}</p>\n {vibe.description && (\n <p className=\"text-xs text-text-muted truncate max-w-[250px]\">{vibe.description}</p>\n )}\n </div>\n </div>\n </td>\n <td className=\"px-4 py-3\">\n <StatusBadge status={vibe.status} />\n </td>\n <td className=\"px-4 py-3\">\n {vibe.path ? (\n <span className=\"text-xs font-mono text-text-muted truncate block max-w-[180px]\">\n {vibe.path}\n </span>\n ) : (\n <span className=\"text-xs text-text-muted\">-</span>\n )}\n </td>\n <td className=\"px-4 py-3\">\n {vibe.gitBranch ? (\n <div className=\"flex items-center gap-1.5 text-xs text-text-secondary\">\n <GitBranch className=\"size-3\" />\n <span className=\"truncate max-w-[100px]\">{vibe.gitBranch}</span>\n </div>\n ) : (\n <span className=\"text-xs text-text-muted\">-</span>\n )}\n </td>\n <td className=\"px-4 py-3\">\n {vibe.tags && vibe.tags.length > 0 ? (\n <div className=\"flex flex-wrap gap-1\">\n {vibe.tags.slice(0, 2).map((tag) => (\n <span\n key={tag}\n className=\"inline-flex items-center gap-0.5 px-1.5 py-0.5 text-xs bg-bg-sunken text-text-secondary rounded\"\n >\n <Tag className=\"size-2.5\" />\n {tag}\n </span>\n ))}\n {vibe.tags.length > 2 && (\n <span className=\"px-1.5 py-0.5 text-xs bg-bg-sunken text-text-secondary rounded\">\n +{vibe.tags.length - 2}\n </span>\n )}\n </div>\n ) : (\n <span className=\"text-xs text-text-muted\">-</span>\n )}\n </td>\n <td className=\"px-4 py-3\">\n <div className=\"flex items-center gap-1 justify-end\">\n {(onEdit || onArchive || onDelete || onActivate || onOpenInEditor) && (\n <div className=\"relative\">\n <button\n type=\"button\"\n onClick={(e) => {\n e.stopPropagation();\n setShowMenu(!showMenu);\n }}\n className=\"p-1.5 rounded hover:bg-bg-sunken transition-colors\"\n >\n <MoreVertical className=\"size-3.5 text-text-secondary\" />\n </button>\n {showMenu && (\n <div className=\"absolute right-0 mt-1 w-36 bg-bg-surface border border-border-default rounded-lg shadow-lg z-10\">\n {onActivate && vibe.status !== 'ACTIVE' && (\n <button\n type=\"button\"\n onClick={(e) => {\n e.stopPropagation();\n onActivate(vibe);\n setShowMenu(false);\n }}\n className=\"flex items-center gap-2 w-full px-3 py-2 text-sm text-text-primary hover:bg-bg-sunken rounded-t-lg\"\n >\n <Play className=\"size-4\" />\n Activate\n </button>\n )}\n {onEdit && (\n <button\n type=\"button\"\n onClick={(e) => {\n e.stopPropagation();\n onEdit(vibe);\n setShowMenu(false);\n }}\n className=\"flex items-center gap-2 w-full px-3 py-2 text-sm text-text-primary hover:bg-bg-sunken\"\n >\n <Settings className=\"size-4\" />\n Edit\n </button>\n )}\n {onOpenInEditor && vibe.path && (\n <button\n type=\"button\"\n onClick={(e) => {\n e.stopPropagation();\n onOpenInEditor(vibe);\n setShowMenu(false);\n }}\n className=\"flex items-center gap-2 w-full px-3 py-2 text-sm text-text-primary hover:bg-bg-sunken\"\n >\n <ExternalLink className=\"size-4\" />\n Open in VS Code\n </button>\n )}\n {onArchive && vibe.status !== 'ARCHIVED' && (\n <button\n type=\"button\"\n onClick={(e) => {\n e.stopPropagation();\n onArchive(vibe);\n setShowMenu(false);\n }}\n className=\"flex items-center gap-2 w-full px-3 py-2 text-sm text-text-primary hover:bg-bg-sunken rounded-b-lg\"\n >\n <Archive className=\"size-4\" />\n Archive\n </button>\n )}\n {onDelete && (\n <button\n type=\"button\"\n onClick={(e) => {\n e.stopPropagation();\n onDelete(vibe);\n setShowMenu(false);\n }}\n className=\"flex items-center gap-2 w-full px-3 py-2 text-sm text-status-error-text hover:bg-bg-sunken rounded-b-lg\"\n >\n <Trash2 className=\"size-4\" />\n Delete\n </button>\n )}\n </div>\n )}\n </div>\n )}\n </div>\n </td>\n </tr>\n );\n}\n\nexport function VibeList({\n vibes,\n onOpen,\n onEdit,\n onArchive,\n onDelete,\n onActivate,\n onOpenInEditor,\n onCreateNew,\n isLoading,\n selectedVibeIds = new Set<string>(),\n onToggleSelect,\n onToggleAllVisible,\n allVisibleSelected = false,\n partiallySelected = false,\n}: VibeListProps) {\n const tr = useTr();\n\n if (!isLoading && vibes.length === 0) {\n return (\n <EmptyState\n icon={<FolderOpen className=\"size-8 text-text-secondary\" />}\n title={tr('vibecontrols.vibes.list.emptyTitle', 'No vibes yet')}\n description={tr(\n 'vibecontrols.vibes.list.emptyDescription',\n 'Vibes are your development projects and environments. Create your first vibe to organize your work.'\n )}\n action={\n onCreateNew && (\n <button\n type=\"button\"\n onClick={onCreateNew}\n className=\"inline-flex items-center gap-2 px-4 py-2 text-sm font-medium text-action-primary-text bg-action-primary-bg rounded-md hover:bg-action-primary-bg-hover transition-colors\"\n >\n <Plus className=\"size-4\" />\n {tr('vibecontrols.vibes.list.createVibe', 'Create Vibe')}\n </button>\n )\n }\n />\n );\n }\n\n return (\n <>\n {/* Mobile: Card view */}\n <div className=\"sm:hidden space-y-3\">\n {vibes.map((vibe) => (\n <VibeListCard\n key={vibe.id}\n vibe={vibe}\n onOpen={onOpen}\n onActivate={onActivate}\n onOpenInEditor={onOpenInEditor}\n onArchive={onArchive}\n onDelete={onDelete}\n selected={selectedVibeIds.has(vibe.id)}\n onToggleSelect={onToggleSelect ? (checked) => onToggleSelect(vibe, checked) : undefined}\n />\n ))}\n </div>\n\n {/* Desktop: Table view */}\n <div className=\"hidden sm:block border border-border-default rounded-lg overflow-visible\">\n <div className=\"overflow-x-auto\">\n <table className=\"w-full\">\n <thead>\n <tr className=\"bg-bg-sunken border-b border-border-default\">\n <th className=\"px-4 py-2.5 text-left text-xs font-medium text-text-secondary uppercase tracking-wider w-12\">\n {onToggleAllVisible ? (\n <SelectionCheckbox\n checked={allVisibleSelected}\n indeterminate={partiallySelected}\n onChange={onToggleAllVisible}\n ariaLabel=\"Select all visible vibes\"\n />\n ) : null}\n </th>\n <th className=\"px-4 py-2.5 text-left text-xs font-medium text-text-secondary uppercase tracking-wider\">\n Name\n </th>\n <th className=\"px-4 py-2.5 text-left text-xs font-medium text-text-secondary uppercase tracking-wider\">\n Status\n </th>\n <th className=\"px-4 py-2.5 text-left text-xs font-medium text-text-secondary uppercase tracking-wider\">\n Path\n </th>\n <th className=\"px-4 py-2.5 text-left text-xs font-medium text-text-secondary uppercase tracking-wider\">\n Branch\n </th>\n <th className=\"px-4 py-2.5 text-left text-xs font-medium text-text-secondary uppercase tracking-wider\">\n Tags\n </th>\n <th className=\"px-4 py-2.5 text-right text-xs font-medium text-text-secondary uppercase tracking-wider\">\n Actions\n </th>\n </tr>\n </thead>\n <tbody>\n {vibes.map((vibe) => (\n <VibeRow\n key={vibe.id}\n vibe={vibe}\n onOpen={onOpen}\n onEdit={onEdit}\n onArchive={onArchive}\n onDelete={onDelete}\n onActivate={onActivate}\n onOpenInEditor={onOpenInEditor}\n selected={selectedVibeIds.has(vibe.id)}\n onToggleSelect={\n onToggleSelect ? (checked) => onToggleSelect(vibe, checked) : undefined\n }\n />\n ))}\n </tbody>\n </table>\n </div>\n </div>\n </>\n );\n}\n"],"mappings":"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"}
|
|
@@ -4053,8 +4053,8 @@ function Rs(e) {
|
|
|
4053
4053
|
return t.useMutation(Ls, r);
|
|
4054
4054
|
}
|
|
4055
4055
|
var zs = e`
|
|
4056
|
-
mutation DeleteVibe($id: ID
|
|
4057
|
-
deleteVibe(id: $id)
|
|
4056
|
+
mutation DeleteVibe($id: ID!, $deleteRelatedEntities: Boolean) {
|
|
4057
|
+
deleteVibe(id: $id, deleteRelatedEntities: $deleteRelatedEntities)
|
|
4058
4058
|
}
|
|
4059
4059
|
`;
|
|
4060
4060
|
function Bs(e) {
|