@burdenoff/microfe-vibecontrols 2026.1023.7 → 2026.1023.8

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.
@@ -9,28 +9,37 @@ import { StatCard as o } from "../components/shared/StatCard.js";
9
9
  import { AgentSetupBanner as ne } from "../components/shared/AgentSetupBanner.js";
10
10
  import "../components/shared/index.js";
11
11
  import { VIBE_PERMISSIONS as s } from "../constants/permissions.js";
12
- import { AgentCard as c } from "../components/agents/AgentCard.js";
12
+ import { AgentCard as re } from "../components/agents/AgentCard.js";
13
13
  import "../components/agents/index.js";
14
- import { SessionCard as re } from "../components/sessions/SessionCard.js";
14
+ import { SessionCard as ie } from "../components/sessions/SessionCard.js";
15
15
  import "../components/sessions/index.js";
16
- import { VibeCard as ie } from "../components/vibes/VibeCard.js";
16
+ import { VibeCard as ae } from "../components/vibes/VibeCard.js";
17
17
  import "../components/vibes/index.js";
18
- import { FleetActivityChart as ae } from "../components/overview/FleetActivityChart.js";
19
- import { FleetHealthCard as oe } from "../components/overview/FleetHealthCard.js";
20
- import { QuickActionsCard as se } from "../components/overview/QuickActionsCard.js";
21
- import { useAiRunsToday as ce, useFleetActivity as l } from "../components/overview/useFleetAnalytics.js";
18
+ import { FleetActivityChart as oe } from "../components/overview/FleetActivityChart.js";
19
+ import { FleetHealthCard as se } from "../components/overview/FleetHealthCard.js";
20
+ import { QuickActionsCard as ce } from "../components/overview/QuickActionsCard.js";
21
+ import { useAiRunsToday as le, useFleetActivity as ue } from "../components/overview/useFleetAnalytics.js";
22
22
  import "../components/overview/index.js";
23
- import { useCallback as le, useMemo as u, useState as ue } from "react";
24
- import { useI18n as de } from "@burdenoff/fe-libs/shared/providers/shell/I18nProvider";
25
- import { Activity as d, Bot as f, FileText as fe, GitBranch as pe, Play as me, RefreshCw as he, Server as p, Sparkles as ge, Terminal as m, Zap as h } from "lucide-react";
26
- import { usePermissions as _e } from "@burdenoff/fe-libs/shared/providers/shell";
27
- import { Fragment as ve, jsx as g, jsxs as _ } from "react/jsx-runtime";
28
- import { AuroraBackground as ye, EmphasisPanel as be, GradientText as xe, IllustratedEmptyState as v, NextSteps as Se, PagePurpose as Ce } from "@burdenoff/fe-libs/ui";
23
+ import { useCallback as de, useMemo as c, useState as fe } from "react";
24
+ import { useI18n as pe } from "@burdenoff/fe-libs/shared/providers/shell/I18nProvider";
25
+ import { Activity as l, Bot as u, FileText as me, GitBranch as he, Play as ge, RefreshCw as _e, Server as d, Sparkles as ve, Terminal as f, Zap as p } from "lucide-react";
26
+ import { usePermissions as ye } from "@burdenoff/fe-libs/shared/providers/shell";
27
+ import { Fragment as m, jsx as h, jsxs as g } from "react/jsx-runtime";
28
+ import { AuroraBackground as be, EmphasisPanel as xe, GradientText as _, IllustratedEmptyState as v, NextSteps as Se, PagePurpose as Ce } from "@burdenoff/fe-libs/ui";
29
29
  import { MotionItem as y, MotionList as b, MotionPage as we } from "@burdenoff/fe-libs/shared/motion";
30
30
  //#region src/pages/OverviewPage.tsx
31
- function x() {
32
- let x = n(), { t: Te } = de(), { hasPermission: S, isLoading: Ee } = _e(), C = (e, t, n) => {
33
- let r = Te(e, n), i = r === e ? t : r;
31
+ var x = "VibeControls";
32
+ function Te({ title: e }) {
33
+ let t = e.indexOf(x);
34
+ return t < 0 ? /* @__PURE__ */ h(m, { children: e }) : /* @__PURE__ */ g(m, { children: [
35
+ e.slice(0, t),
36
+ /* @__PURE__ */ h(_, { children: x }),
37
+ e.slice(t + 12)
38
+ ] });
39
+ }
40
+ function S() {
41
+ let m = n(), { t: _ } = pe(), { hasPermission: x, isLoading: S } = ye(), C = (e, t, n) => {
42
+ let r = _(e, n), i = r === e ? t : r;
34
43
  return n ? Object.entries(n).reduce((e, [t, n]) => e.replace(`{{${t}}}`, String(n)), i) : i;
35
44
  }, { agents: w, vibes: T, sessions: E, loading: D, error: O, totals: k, refetch: A } = r(), { workspaceId: j } = t(), M = e({
36
45
  variables: {
@@ -39,16 +48,16 @@ function x() {
39
48
  },
40
49
  skip: !j,
41
50
  fetchPolicy: "cache-and-network"
42
- }), N = M.refetch, P = S(s.ANALYTICS_READ), F = P && !!j, [I, De] = ue("LAST_24H"), L = l(I, F), R = ce(F), z = L.refetch, B = R.refetch, V = le(() => {
51
+ }), N = M.refetch, P = x(s.ANALYTICS_READ), F = P && !!j, [I, Ee] = fe("LAST_24H"), L = ue(I, F), R = le(F), z = L.refetch, B = R.refetch, V = de(() => {
43
52
  A(), N(), z(), B();
44
53
  }, [
45
54
  A,
46
55
  N,
47
56
  z,
48
57
  B
49
- ]), H = M.data?.targets.items ?? [], U = M.data?.targets.total ?? 0, Oe = U > H.length, ke = H.filter((e) => e.status === "connected" || e.status === "active").length;
58
+ ]), H = M.data?.targets.items ?? [], U = M.data?.targets.total ?? 0, De = U > H.length, Oe = H.filter((e) => e.status === "connected" || e.status === "active").length;
50
59
  O && console.error("[overview] failed to load initial workspace data", O);
51
- let W = u(() => w.map((e) => ({
60
+ let W = c(() => w.map((e) => ({
52
61
  id: e.id,
53
62
  workspaceId: "",
54
63
  name: e.name,
@@ -70,7 +79,7 @@ function x() {
70
79
  visibility: e.visibility,
71
80
  createdAt: e.createdAt || "",
72
81
  updatedAt: ""
73
- })), [w]), G = u(() => T.map((e) => ({
82
+ })), [w]), G = c(() => T.map((e) => ({
74
83
  id: e.id,
75
84
  workspaceId: "",
76
85
  name: e.name,
@@ -89,7 +98,7 @@ function x() {
89
98
  updatedAt: "",
90
99
  archivedAt: null,
91
100
  agents: e.agents ?? []
92
- })), [T]), K = u(() => E.map((e) => ({
101
+ })), [T]), K = c(() => E.map((e) => ({
93
102
  id: e.id,
94
103
  workspaceId: "",
95
104
  agentId: e.agentId ?? null,
@@ -125,7 +134,7 @@ function x() {
125
134
  running: J.length,
126
135
  stopped: K.filter((e) => e.status === "STOPPED").length
127
136
  }
128
- }, Z = u(() => {
137
+ }, Z = c(() => {
129
138
  let e = [];
130
139
  return K.slice(0, 3).forEach((t) => {
131
140
  e.push({
@@ -147,34 +156,34 @@ function x() {
147
156
  });
148
157
  }), e.sort((e, t) => new Date(t.timestamp).getTime() - new Date(e.timestamp).getTime()).slice(0, 6);
149
158
  }, [K, q]);
150
- if (Ee || D && w.length === 0 && T.length === 0 && E.length === 0) return /* @__PURE__ */ g("div", {
159
+ if (S || D && w.length === 0 && T.length === 0 && E.length === 0) return /* @__PURE__ */ h("div", {
151
160
  className: "flex items-center justify-center min-h-[400px]",
152
- children: /* @__PURE__ */ g(ee, { message: C("overviewPage.loadingPermissions", "Loading permissions...") })
161
+ children: /* @__PURE__ */ h(ee, { message: C("overviewPage.loadingPermissions", "Loading permissions...") })
153
162
  });
154
- if (!S(s.VIBE_LIST)) return /* @__PURE__ */ g("div", {
163
+ if (!x(s.VIBE_LIST)) return /* @__PURE__ */ h("div", {
155
164
  className: "flex items-center justify-center min-h-[400px] px-4",
156
- children: /* @__PURE__ */ _("div", {
165
+ children: /* @__PURE__ */ g("div", {
157
166
  className: "text-center space-y-2 max-w-sm",
158
- children: [/* @__PURE__ */ g("h2", {
167
+ children: [/* @__PURE__ */ h("h2", {
159
168
  className: "text-lg font-semibold tracking-tight text-text-primary",
160
169
  children: C("common.accessDeniedTitle", "Access Denied")
161
- }), /* @__PURE__ */ g("p", {
170
+ }), /* @__PURE__ */ h("p", {
162
171
  className: "text-sm text-text-secondary",
163
172
  children: C("overviewPage.accessDeniedDescription", "You don't have permission to access this page.")
164
173
  })]
165
174
  })
166
175
  });
167
- let Ae = (e) => {
176
+ let ke = (e) => {
168
177
  if (!e) return C("overviewPage.time.unknown", "Unknown");
169
178
  let t = Date.now() - new Date(e).getTime();
170
179
  return t < 6e4 ? C("overviewPage.time.justNow", "Just now") : t < 36e5 ? C("overviewPage.time.minutesAgo", "{{count}}m ago", { count: Math.floor(t / 6e4) }) : t < 864e5 ? C("overviewPage.time.hoursAgo", "{{count}}h ago", { count: Math.floor(t / 36e5) }) : C("overviewPage.time.daysAgo", "{{count}}d ago", { count: Math.floor(t / 864e5) });
171
- }, je = (e) => /* @__PURE__ */ g({
172
- session_started: me,
173
- agent_connected: p,
174
- vibe_updated: pe,
175
- note_created: fe,
176
- module_installed: d
177
- }[e] || d, { className: "size-4" }), Me = (e) => ({
180
+ }, Ae = (e) => /* @__PURE__ */ h({
181
+ session_started: ge,
182
+ agent_connected: d,
183
+ vibe_updated: he,
184
+ note_created: me,
185
+ module_installed: l
186
+ }[e] || l, { className: "size-4" }), je = (e) => ({
178
187
  green: "bg-status-success-bg-subtle text-status-success-text",
179
188
  blue: "bg-[var(--color-accent-soft)] text-text-primary",
180
189
  purple: "bg-accent-purple-subtle text-text-primary",
@@ -182,218 +191,214 @@ function x() {
182
191
  cyan: "bg-accent-teal-subtle text-accent-teal",
183
192
  yellow: "bg-status-warning-bg-subtle text-status-warning-text",
184
193
  pink: "bg-accent-purple-subtle text-text-primary"
185
- })[e] || "bg-bg-sunken text-text-secondary", Q = /* @__PURE__ */ g(oe, {
194
+ })[e] || "bg-bg-sunken text-text-secondary", Q = /* @__PURE__ */ h(se, {
186
195
  agents: W,
187
196
  loading: D,
188
197
  error: O,
189
198
  onRetry: V,
190
- onViewAll: () => x("/health"),
191
- onSelectAgent: (e) => x(`/agents/${e}`),
192
- onAddAgent: () => x("/agents?create=true")
193
- }), $ = /* @__PURE__ */ g(se, { onNavigate: x });
194
- return /* @__PURE__ */ _(we, {
199
+ onViewAll: () => m("/health"),
200
+ onSelectAgent: (e) => m(`/agents/${e}`),
201
+ onAddAgent: () => m("/agents?create=true")
202
+ }), $ = /* @__PURE__ */ h(ce, { onNavigate: m });
203
+ return /* @__PURE__ */ g(we, {
195
204
  className: "space-y-6 px-6 lg:px-8 py-6 bg-bg-canvas min-h-screen",
196
205
  children: [
197
- /* @__PURE__ */ _("div", {
206
+ /* @__PURE__ */ g("div", {
198
207
  className: "relative overflow-hidden rounded-card -mx-2 px-2 pt-1",
199
- children: [/* @__PURE__ */ g(ye, { intensity: "subtle" }), /* @__PURE__ */ g(i, {
200
- title: /* @__PURE__ */ _(ve, { children: [
201
- /* @__PURE__ */ g(xe, { children: C("overviewPage.titleNoun", "VibeControls") }),
202
- " ",
203
- C("overviewPage.titleSuffix", "Overview")
204
- ] }),
208
+ children: [/* @__PURE__ */ h(be, { intensity: "subtle" }), /* @__PURE__ */ h(i, {
209
+ title: /* @__PURE__ */ h(Te, { title: C("overviewPage.title", "VibeControls Overview") }),
205
210
  description: C("overviewPage.description", "Monitor and manage your development environments"),
206
- actions: /* @__PURE__ */ _("button", {
211
+ actions: /* @__PURE__ */ g("button", {
207
212
  type: "button",
208
213
  onClick: V,
209
214
  disabled: D,
210
215
  className: "inline-flex items-center gap-2 px-3 py-2 text-sm bg-bg-surface border border-border-subtle rounded-button text-text-primary hover:bg-bg-sunken hover:border-border-strong transition-all duration-200 disabled:opacity-50 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-border-focus",
211
- children: [/* @__PURE__ */ g(he, {
216
+ children: [/* @__PURE__ */ h(_e, {
212
217
  className: `size-4 ${D ? "animate-spin" : ""}`,
213
218
  "aria-hidden": "true"
214
219
  }), C("overviewPage.refresh", "Refresh")]
215
220
  })
216
221
  })]
217
222
  }),
218
- /* @__PURE__ */ g(Ce, {
219
- icon: /* @__PURE__ */ g(f, { className: "size-4" }),
223
+ /* @__PURE__ */ h(Ce, {
224
+ icon: /* @__PURE__ */ h(u, { className: "size-4" }),
220
225
  children: C("overviewPage.purpose", "This is your VibeControls home — a live snapshot of everything you’re running. See which agents are online, what sessions and vibes are active, and recent activity at a glance, then jump straight into the area that needs you. Start here each day to get your bearings before diving into the work.")
221
226
  }),
222
- /* @__PURE__ */ g(Se, {
227
+ /* @__PURE__ */ h(Se, {
223
228
  storageKey: "vibecontrols-overview",
224
229
  steps: [
225
230
  {
226
231
  id: "register-agent",
227
232
  label: C("overviewPage.next.registerAgent", "Register an agent"),
228
233
  description: C("overviewPage.next.registerAgentDesc", "Install the agent on a machine so VibeControls can run work there."),
229
- icon: /* @__PURE__ */ g(p, { className: "size-4" }),
230
- onClick: () => x("/agents")
234
+ icon: /* @__PURE__ */ h(d, { className: "size-4" }),
235
+ onClick: () => m("/agents")
231
236
  },
232
237
  {
233
238
  id: "create-vibe",
234
239
  label: C("overviewPage.next.createVibe", "Create your first vibe"),
235
240
  description: C("overviewPage.next.createVibeDesc", "Spin up a workspace to organise a piece of work."),
236
- icon: /* @__PURE__ */ g(h, { className: "size-4" }),
237
- onClick: () => x("/vibes")
241
+ icon: /* @__PURE__ */ h(p, { className: "size-4" }),
242
+ onClick: () => m("/vibes")
238
243
  },
239
244
  {
240
245
  id: "open-session",
241
246
  label: C("overviewPage.next.openSession", "Start a session"),
242
247
  description: C("overviewPage.next.openSessionDesc", "Open a live terminal or task on one of your agents."),
243
- icon: /* @__PURE__ */ g(f, { className: "size-4" }),
244
- onClick: () => x("/sessions")
248
+ icon: /* @__PURE__ */ h(u, { className: "size-4" }),
249
+ onClick: () => m("/sessions")
245
250
  }
246
251
  ]
247
252
  }),
248
- O && !D && /* @__PURE__ */ g(te, {
253
+ O && !D && /* @__PURE__ */ h(te, {
249
254
  title: C("overviewPage.loadFailed.title", "Could not load workspace data"),
250
255
  message: C("overviewPage.loadFailed.message", "We couldn't load your VibeControls overview. Please try again in a moment."),
251
256
  onRetry: V
252
257
  }),
253
- !O && W.length === 0 && !D && /* @__PURE__ */ g(ne, {
258
+ !O && W.length === 0 && !D && /* @__PURE__ */ h(ne, {
254
259
  variant: "full",
255
260
  dismissKey: "vibecontrols-overview-setup-banner"
256
261
  }),
257
- /* @__PURE__ */ _(b, {
262
+ /* @__PURE__ */ g(b, {
258
263
  "data-tour": "overview-stats",
259
264
  className: `grid grid-cols-2 gap-4 sm:grid-cols-3 ${P ? "xl:grid-cols-5" : "xl:grid-cols-4"}`,
260
265
  stagger: .06,
261
266
  children: [
262
- /* @__PURE__ */ g(y, {
267
+ /* @__PURE__ */ h(y, {
263
268
  variant: "fadeScale",
264
- children: /* @__PURE__ */ g(o, {
269
+ children: /* @__PURE__ */ h(o, {
265
270
  title: C("overviewPage.stats.targets", "Targets"),
266
271
  value: D ? "-" : U,
267
- subtitle: D || Oe ? "" : C("overviewPage.stats.connected", "{{count}} connected", { count: ke }),
268
- icon: /* @__PURE__ */ g(p, { className: "size-6" }),
272
+ subtitle: D || De ? "" : C("overviewPage.stats.connected", "{{count}} connected", { count: Oe }),
273
+ icon: /* @__PURE__ */ h(d, { className: "size-6" }),
269
274
  variant: !D && U > 0 ? "success" : "default",
270
- onClick: () => x("/targets")
275
+ onClick: () => m("/targets")
271
276
  })
272
277
  }),
273
- /* @__PURE__ */ g(y, {
278
+ /* @__PURE__ */ h(y, {
274
279
  variant: "fadeScale",
275
- children: /* @__PURE__ */ g(o, {
280
+ children: /* @__PURE__ */ h(o, {
276
281
  title: C("overviewPage.stats.agents", "Agents"),
277
282
  value: D ? "-" : X.agents.total,
278
283
  subtitle: D ? "" : C("overviewPage.stats.active", "{{count}} active", { count: X.agents.active }),
279
- icon: /* @__PURE__ */ g(f, { className: "size-6" }),
284
+ icon: /* @__PURE__ */ h(u, { className: "size-6" }),
280
285
  variant: !D && X.agents.active > 0 ? "success" : "default",
281
- onClick: () => x("/agents")
286
+ onClick: () => m("/agents")
282
287
  })
283
288
  }),
284
- /* @__PURE__ */ g(y, {
289
+ /* @__PURE__ */ h(y, {
285
290
  variant: "fadeScale",
286
- children: /* @__PURE__ */ g(o, {
291
+ children: /* @__PURE__ */ h(o, {
287
292
  title: C("overviewPage.stats.vibes", "Vibes"),
288
293
  value: D ? "-" : X.vibes.total,
289
294
  subtitle: D ? "" : C("overviewPage.stats.active", "{{count}} active", { count: X.vibes.active }),
290
- icon: /* @__PURE__ */ g(h, { className: "size-6" }),
291
- onClick: () => x("/vibes")
295
+ icon: /* @__PURE__ */ h(p, { className: "size-6" }),
296
+ onClick: () => m("/vibes")
292
297
  })
293
298
  }),
294
- /* @__PURE__ */ g(y, {
299
+ /* @__PURE__ */ h(y, {
295
300
  variant: "fadeScale",
296
- children: /* @__PURE__ */ g(o, {
301
+ children: /* @__PURE__ */ h(o, {
297
302
  title: C("overviewPage.stats.sessions", "Sessions"),
298
303
  value: D ? "-" : X.sessions.total,
299
304
  subtitle: D ? "" : C("overviewPage.stats.running", "{{count}} running", { count: X.sessions.running }),
300
- icon: /* @__PURE__ */ g(m, { className: "size-6" }),
305
+ icon: /* @__PURE__ */ h(f, { className: "size-6" }),
301
306
  variant: !D && X.sessions.running > 0 ? "success" : "default",
302
- onClick: () => x("/sessions")
307
+ onClick: () => m("/sessions")
303
308
  })
304
309
  }),
305
- P && /* @__PURE__ */ g(y, {
310
+ P && /* @__PURE__ */ h(y, {
306
311
  variant: "fadeScale",
307
- children: /* @__PURE__ */ g(o, {
312
+ children: /* @__PURE__ */ h(o, {
308
313
  title: C("overviewPage.stats.aiRunsToday", "AI Runs Today"),
309
314
  value: R.total === null ? "-" : R.total,
310
315
  subtitle: R.error ? C("overviewPage.stats.aiRunsUnavailable", "Currently unavailable") : R.total === null ? "" : C("overviewPage.stats.aiRunsSubtitle", "AI tool events since midnight"),
311
- icon: /* @__PURE__ */ g(ge, { className: "size-6" }),
316
+ icon: /* @__PURE__ */ h(ve, { className: "size-6" }),
312
317
  variant: R.error ? "warning" : (R.total ?? 0) > 0 ? "success" : "default",
313
- onClick: () => x("/analytics")
318
+ onClick: () => m("/analytics")
314
319
  })
315
320
  })
316
321
  ]
317
322
  }),
318
- P ? /* @__PURE__ */ _(b, {
323
+ P ? /* @__PURE__ */ g(b, {
319
324
  className: "grid grid-cols-1 gap-6 xl:grid-cols-3",
320
325
  stagger: .08,
321
- children: [/* @__PURE__ */ g(y, {
326
+ children: [/* @__PURE__ */ h(y, {
322
327
  className: "xl:col-span-2 h-full",
323
- children: /* @__PURE__ */ g(ae, {
328
+ children: /* @__PURE__ */ h(oe, {
324
329
  range: I,
325
- onRangeChange: De,
330
+ onRangeChange: Ee,
326
331
  activity: L,
327
- onViewAnalytics: () => x("/analytics")
332
+ onViewAnalytics: () => m("/analytics")
328
333
  })
329
- }), /* @__PURE__ */ g(y, {
334
+ }), /* @__PURE__ */ h(y, {
330
335
  className: "h-full",
331
- children: /* @__PURE__ */ _("div", {
336
+ children: /* @__PURE__ */ g("div", {
332
337
  className: "flex h-full flex-col gap-6",
333
338
  children: [Q, $]
334
339
  })
335
340
  })]
336
- }) : /* @__PURE__ */ _(b, {
341
+ }) : /* @__PURE__ */ g(b, {
337
342
  className: "grid grid-cols-1 gap-6 lg:grid-cols-2",
338
343
  stagger: .08,
339
- children: [/* @__PURE__ */ g(y, {
344
+ children: [/* @__PURE__ */ h(y, {
340
345
  className: "h-full",
341
346
  children: Q
342
- }), /* @__PURE__ */ g(y, {
347
+ }), /* @__PURE__ */ h(y, {
343
348
  className: "h-full",
344
349
  children: $
345
350
  })]
346
351
  }),
347
- /* @__PURE__ */ _(b, {
352
+ /* @__PURE__ */ g(b, {
348
353
  className: "grid grid-cols-1 gap-6 xl:grid-cols-3",
349
354
  stagger: .08,
350
- children: [/* @__PURE__ */ g(y, {
355
+ children: [/* @__PURE__ */ h(y, {
351
356
  className: "xl:col-span-2 h-full",
352
- children: /* @__PURE__ */ _(be, {
357
+ children: /* @__PURE__ */ g(xe, {
353
358
  className: "flex h-full flex-col border-[color-mix(in_oklab,var(--color-action-primary-bg)_34%,transparent)] shadow-[var(--shadow-glow)]",
354
- children: [/* @__PURE__ */ _("div", {
359
+ children: [/* @__PURE__ */ g("div", {
355
360
  className: "flex items-center justify-between mb-5",
356
- children: [/* @__PURE__ */ _("h2", {
361
+ children: [/* @__PURE__ */ g("h2", {
357
362
  className: "text-lg font-semibold tracking-tight text-text-primary flex items-center gap-2.5",
358
- children: [/* @__PURE__ */ g("span", {
363
+ children: [/* @__PURE__ */ h("span", {
359
364
  className: "inline-flex size-8 items-center justify-center rounded-lg bg-[var(--color-accent-soft)] text-text-primary",
360
- children: /* @__PURE__ */ g(f, { className: "size-5" })
365
+ children: /* @__PURE__ */ h(u, { className: "size-5" })
361
366
  }), C("overviewPage.sections.activeAgents", "Active Agents")]
362
- }), /* @__PURE__ */ g("button", {
367
+ }), /* @__PURE__ */ h("button", {
363
368
  type: "button",
364
- onClick: () => x("/agents"),
369
+ onClick: () => m("/agents"),
365
370
  className: "text-sm font-medium text-text-link hover:underline",
366
371
  "aria-label": C("overviewPage.sections.viewAllAgents", "View all agents"),
367
372
  children: C("overviewPage.sections.viewAll", "View all")
368
373
  })]
369
- }), q.length > 0 ? /* @__PURE__ */ g(b, {
374
+ }), q.length > 0 ? /* @__PURE__ */ h(b, {
370
375
  className: "grid grid-cols-1 sm:grid-cols-2 gap-4 flex-1 content-start",
371
376
  stagger: .04,
372
- children: q.slice(0, 4).map((e) => /* @__PURE__ */ g(y, { children: /* @__PURE__ */ g(c, {
377
+ children: q.slice(0, 4).map((e) => /* @__PURE__ */ h(y, { children: /* @__PURE__ */ h(re, {
373
378
  agent: e,
374
- onSelect: (e) => x(`/agents/${e.id}`)
379
+ onSelect: (e) => m(`/agents/${e.id}`)
375
380
  }) }, e.id))
376
- }) : /* @__PURE__ */ g(v, {
381
+ }) : /* @__PURE__ */ h(v, {
377
382
  className: "flex-1 py-8",
378
383
  illustration: "empty-agents",
379
384
  title: C("overviewPage.empty.noActiveAgents", "No active agents"),
380
385
  description: C("overviewPage.empty.installCliHint", "Install the agent CLI to get started"),
381
- action: /* @__PURE__ */ _("div", {
386
+ action: /* @__PURE__ */ g("div", {
382
387
  className: "flex flex-wrap items-center justify-center gap-2",
383
388
  children: [
384
- /* @__PURE__ */ g("button", {
389
+ /* @__PURE__ */ h("button", {
385
390
  type: "button",
386
- onClick: () => x("/getting-started"),
391
+ onClick: () => m("/getting-started"),
387
392
  className: "text-sm font-medium text-text-link hover:underline",
388
393
  children: C("overviewPage.empty.setupGuide", "Setup guide")
389
394
  }),
390
- /* @__PURE__ */ g("span", {
395
+ /* @__PURE__ */ h("span", {
391
396
  className: "text-text-muted",
392
397
  children: "·"
393
398
  }),
394
- /* @__PURE__ */ g("button", {
399
+ /* @__PURE__ */ h("button", {
395
400
  type: "button",
396
- onClick: () => x("/agents"),
401
+ onClick: () => m("/agents"),
397
402
  className: "text-sm text-text-link hover:underline",
398
403
  children: C("overviewPage.empty.addAgent", "Add agent")
399
404
  })
@@ -401,60 +406,60 @@ function x() {
401
406
  })
402
407
  })]
403
408
  })
404
- }), /* @__PURE__ */ g(y, {
409
+ }), /* @__PURE__ */ h(y, {
405
410
  className: "h-full",
406
- children: /* @__PURE__ */ _(a, {
411
+ children: /* @__PURE__ */ g(a, {
407
412
  className: "flex h-full flex-col",
408
- children: [/* @__PURE__ */ _("div", {
413
+ children: [/* @__PURE__ */ g("div", {
409
414
  className: "flex items-center justify-between mb-5",
410
- children: [/* @__PURE__ */ _("h2", {
415
+ children: [/* @__PURE__ */ g("h2", {
411
416
  className: "text-lg font-semibold tracking-tight text-text-primary flex items-center gap-2.5",
412
- children: [/* @__PURE__ */ g("span", {
417
+ children: [/* @__PURE__ */ h("span", {
413
418
  className: "inline-flex size-8 items-center justify-center rounded-lg bg-[var(--color-accent-soft)] text-text-primary",
414
- children: /* @__PURE__ */ g(d, { className: "size-5" })
419
+ children: /* @__PURE__ */ h(l, { className: "size-5" })
415
420
  }), C("overviewPage.sections.recentActivity", "Recent Activity")]
416
- }), /* @__PURE__ */ g("button", {
421
+ }), /* @__PURE__ */ h("button", {
417
422
  type: "button",
418
- onClick: () => x("/audit"),
423
+ onClick: () => m("/audit"),
419
424
  className: "text-sm font-medium text-text-link hover:underline",
420
425
  "aria-label": C("overviewPage.sections.viewAllActivity", "View all activity"),
421
426
  children: "View all"
422
427
  })]
423
- }), /* @__PURE__ */ g(b, {
428
+ }), /* @__PURE__ */ h(b, {
424
429
  className: "space-y-3 flex-1",
425
430
  stagger: .04,
426
- children: Z.length > 0 ? Z.map((e) => /* @__PURE__ */ g(y, {
431
+ children: Z.length > 0 ? Z.map((e) => /* @__PURE__ */ h(y, {
427
432
  variant: "fadeRight",
428
- children: /* @__PURE__ */ _("div", {
433
+ children: /* @__PURE__ */ g("div", {
429
434
  className: "flex items-start gap-3",
430
435
  children: [
431
- /* @__PURE__ */ g("div", {
432
- className: `flex-shrink-0 size-8 rounded-full flex items-center justify-center ${Me(e.color)}`,
433
- children: je(e.type)
436
+ /* @__PURE__ */ h("div", {
437
+ className: `flex-shrink-0 size-8 rounded-full flex items-center justify-center ${je(e.color)}`,
438
+ children: Ae(e.type)
434
439
  }),
435
- /* @__PURE__ */ _("div", {
440
+ /* @__PURE__ */ g("div", {
436
441
  className: "flex-1 min-w-0",
437
- children: [/* @__PURE__ */ g("p", {
442
+ children: [/* @__PURE__ */ h("p", {
438
443
  className: "text-sm font-medium text-text-primary truncate",
439
444
  children: e.title
440
- }), /* @__PURE__ */ g("p", {
445
+ }), /* @__PURE__ */ h("p", {
441
446
  className: "text-xs text-text-secondary truncate",
442
447
  children: e.description
443
448
  })]
444
449
  }),
445
- /* @__PURE__ */ g("span", {
450
+ /* @__PURE__ */ h("span", {
446
451
  className: "text-xs text-text-secondary flex-shrink-0",
447
- children: Ae(e.timestamp)
452
+ children: ke(e.timestamp)
448
453
  })
449
454
  ]
450
455
  })
451
- }, e.id)) : /* @__PURE__ */ g(v, {
456
+ }, e.id)) : /* @__PURE__ */ h(v, {
452
457
  className: "h-full py-6",
453
458
  illustration: "empty-notifications",
454
459
  title: C("overviewPage.empty.noRecentActivity", "No recent activity"),
455
- action: /* @__PURE__ */ g("button", {
460
+ action: /* @__PURE__ */ h("button", {
456
461
  type: "button",
457
- onClick: () => x("/audit"),
462
+ onClick: () => m("/audit"),
458
463
  className: "text-sm text-text-link hover:underline",
459
464
  children: C("overviewPage.empty.viewAuditLog", "View audit log")
460
465
  })
@@ -463,64 +468,64 @@ function x() {
463
468
  })
464
469
  })]
465
470
  }),
466
- /* @__PURE__ */ g(y, { children: /* @__PURE__ */ _(a, { children: [/* @__PURE__ */ _("div", {
471
+ /* @__PURE__ */ h(y, { children: /* @__PURE__ */ g(a, { children: [/* @__PURE__ */ g("div", {
467
472
  className: "flex items-center justify-between mb-5",
468
- children: [/* @__PURE__ */ _("h2", {
473
+ children: [/* @__PURE__ */ g("h2", {
469
474
  className: "text-lg font-semibold tracking-tight text-text-primary flex items-center gap-2.5",
470
- children: [/* @__PURE__ */ g("span", {
475
+ children: [/* @__PURE__ */ h("span", {
471
476
  className: "inline-flex size-8 items-center justify-center rounded-lg bg-[var(--color-accent-soft)] text-text-primary",
472
- children: /* @__PURE__ */ g(m, { className: "size-5" })
477
+ children: /* @__PURE__ */ h(f, { className: "size-5" })
473
478
  }), C("overviewPage.sections.runningSessions", "Running Sessions")]
474
- }), /* @__PURE__ */ g("button", {
479
+ }), /* @__PURE__ */ h("button", {
475
480
  type: "button",
476
- onClick: () => x("/sessions"),
481
+ onClick: () => m("/sessions"),
477
482
  className: "text-sm font-medium text-text-link hover:underline",
478
483
  children: C("overviewPage.sections.viewAll", "View all")
479
484
  })]
480
- }), J.length > 0 ? /* @__PURE__ */ g(b, {
485
+ }), J.length > 0 ? /* @__PURE__ */ h(b, {
481
486
  className: "grid grid-cols-1 sm:grid-cols-2 xl:grid-cols-3 gap-4",
482
487
  stagger: .04,
483
- children: J.slice(0, 6).map((e) => /* @__PURE__ */ g(y, { children: /* @__PURE__ */ g(re, {
488
+ children: J.slice(0, 6).map((e) => /* @__PURE__ */ h(y, { children: /* @__PURE__ */ h(ie, {
484
489
  session: e,
485
- onOpen: (e) => x(`/sessions/${e.id}`)
490
+ onOpen: (e) => m(`/sessions/${e.id}`)
486
491
  }) }, e.id))
487
- }) : /* @__PURE__ */ g(v, {
492
+ }) : /* @__PURE__ */ h(v, {
488
493
  illustration: "empty-sessions",
489
494
  title: C("overviewPage.empty.noRunningSessions", "No running sessions"),
490
- action: /* @__PURE__ */ g("button", {
495
+ action: /* @__PURE__ */ h("button", {
491
496
  type: "button",
492
- onClick: () => x("/sessions"),
497
+ onClick: () => m("/sessions"),
493
498
  className: "text-sm font-medium text-text-link hover:underline",
494
499
  children: C("overviewPage.empty.startSession", "Start a session")
495
500
  })
496
501
  })] }) }),
497
- /* @__PURE__ */ g(y, { children: /* @__PURE__ */ _(a, { children: [/* @__PURE__ */ _("div", {
502
+ /* @__PURE__ */ h(y, { children: /* @__PURE__ */ g(a, { children: [/* @__PURE__ */ g("div", {
498
503
  className: "flex items-center justify-between mb-5",
499
- children: [/* @__PURE__ */ _("h2", {
504
+ children: [/* @__PURE__ */ g("h2", {
500
505
  className: "text-lg font-semibold tracking-tight text-text-primary flex items-center gap-2.5",
501
- children: [/* @__PURE__ */ g("span", {
506
+ children: [/* @__PURE__ */ h("span", {
502
507
  className: "inline-flex size-8 items-center justify-center rounded-lg bg-[var(--color-accent-soft)] text-text-primary",
503
- children: /* @__PURE__ */ g(h, { className: "size-5" })
508
+ children: /* @__PURE__ */ h(p, { className: "size-5" })
504
509
  }), C("overviewPage.sections.activeVibes", "Active Vibes")]
505
- }), /* @__PURE__ */ g("button", {
510
+ }), /* @__PURE__ */ h("button", {
506
511
  type: "button",
507
- onClick: () => x("/vibes"),
512
+ onClick: () => m("/vibes"),
508
513
  className: "text-sm font-medium text-text-link hover:underline",
509
514
  children: C("overviewPage.sections.viewAll", "View all")
510
515
  })]
511
- }), Y.length > 0 ? /* @__PURE__ */ g(b, {
516
+ }), Y.length > 0 ? /* @__PURE__ */ h(b, {
512
517
  className: "grid grid-cols-1 sm:grid-cols-2 xl:grid-cols-3 gap-4",
513
518
  stagger: .04,
514
- children: Y.slice(0, 6).map((e) => /* @__PURE__ */ g(y, { children: /* @__PURE__ */ g(ie, {
519
+ children: Y.slice(0, 6).map((e) => /* @__PURE__ */ h(y, { children: /* @__PURE__ */ h(ae, {
515
520
  vibe: e,
516
- onOpen: (e) => x(`/vibes/${e.id}`)
521
+ onOpen: (e) => m(`/vibes/${e.id}`)
517
522
  }) }, e.id))
518
- }) : /* @__PURE__ */ g(v, {
523
+ }) : /* @__PURE__ */ h(v, {
519
524
  illustration: "empty-vibes",
520
525
  title: C("overviewPage.empty.noActiveVibes", "No active vibes"),
521
- action: /* @__PURE__ */ g("button", {
526
+ action: /* @__PURE__ */ h("button", {
522
527
  type: "button",
523
- onClick: () => x("/vibes"),
528
+ onClick: () => m("/vibes"),
524
529
  className: "text-sm font-medium text-text-link hover:underline",
525
530
  children: C("overviewPage.empty.addVibe", "Add a vibe")
526
531
  })
@@ -529,4 +534,4 @@ function x() {
529
534
  });
530
535
  }
531
536
  //#endregion
532
- export { x as OverviewPage };
537
+ export { S as OverviewPage };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@burdenoff/microfe-vibecontrols",
3
- "version": "2026.1023.7",
3
+ "version": "2026.1023.8",
4
4
  "description": "VibeControls microfrontend for Burdenoff products",
5
5
  "type": "module",
6
6
  "files": [