@burdenoff/microfe-eventfullymanaged 2026.716.1 → 2026.719.1

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.
Files changed (23) hide show
  1. package/dist/eventfullymanaged/api/eventApi.d.ts +40 -0
  2. package/dist/eventfullymanaged/api/eventApi.d.ts.map +1 -1
  3. package/dist/eventfullymanaged/api/eventApi.js +147 -117
  4. package/dist/eventfullymanaged/api/eventApi.js.map +1 -1
  5. package/dist/eventfullymanaged/pages/events/SessionFormPage.d.ts.map +1 -1
  6. package/dist/eventfullymanaged/pages/events/SessionFormPage.js +152 -135
  7. package/dist/eventfullymanaged/pages/events/SessionFormPage.js.map +1 -1
  8. package/dist/eventfullymanaged/pages/modules/AnalyticsPage.d.ts.map +1 -1
  9. package/dist/eventfullymanaged/pages/modules/AnalyticsPage.js +154 -117
  10. package/dist/eventfullymanaged/pages/modules/AnalyticsPage.js.map +1 -1
  11. package/dist/eventfullymanaged/pages/modules/CommunicationPage.d.ts.map +1 -1
  12. package/dist/eventfullymanaged/pages/modules/CommunicationPage.js +228 -187
  13. package/dist/eventfullymanaged/pages/modules/CommunicationPage.js.map +1 -1
  14. package/dist/eventfullymanaged/pages/modules/EventsPage.d.ts.map +1 -1
  15. package/dist/eventfullymanaged/pages/modules/EventsPage.js +233 -122
  16. package/dist/eventfullymanaged/pages/modules/EventsPage.js.map +1 -1
  17. package/dist/eventfullymanaged/pages/registration/RegisterAttendeePage.d.ts.map +1 -1
  18. package/dist/eventfullymanaged/pages/registration/RegisterAttendeePage.js +255 -254
  19. package/dist/eventfullymanaged/pages/registration/RegisterAttendeePage.js.map +1 -1
  20. package/dist/eventfullymanaged/types/index.d.ts.map +1 -1
  21. package/dist/services/createSandboxAssistantTransport.d.ts.map +1 -1
  22. package/dist/services/createSandboxAssistantTransport.js.map +1 -1
  23. package/package.json +1 -1
@@ -1,16 +1,16 @@
1
1
  import { gql as e } from "../../../node_modules/graphql-tag/lib/index.js";
2
2
  import { useQuery as t } from "../../../node_modules/@apollo/client/react/hooks/useQuery.js";
3
3
  import { notify as n } from "../../lib/toast.js";
4
- import { useDashboardSummaryQuery as r, useRegistrationsQuery as i, useUpsertAnalyticsSnapshotMutation as a } from "../../api/eventApi.js";
5
- import { CHART_SERIES_COLORS as o, ChartLegend as s, EventAreaChart as c, EventBarChart as l, EventDonutChart as u } from "../../components/EventCharts.js";
6
- import { Pagination as d, usePagination as f } from "../../components/Pagination.js";
7
- import { describeError as p, mutationSucceeded as m } from "../../lib/mutationResult.js";
8
- import { useMemo as h, useState as g } from "react";
9
- import { jsx as _, jsxs as v } from "react/jsx-runtime";
10
- import { BarChart3 as y, CalendarDays as b, ClipboardList as ee, MapPin as te, QrCode as ne, Sparkles as re, Ticket as x, Trophy as S, Users as C } from "lucide-react";
11
- import { Badge as w, Button as T, EmphasisPanel as E, GlassCard as D, GradientText as O, IllustratedEmptyState as k, Input as A, PagePurpose as j, Skeleton as M } from "@burdenoff/fe-libs/ui";
4
+ import { useCheckInThroughputQuery as r, useDashboardSummaryQuery as ee, useEventsQuery as i, useRegistrationsQuery as a, useUpsertAnalyticsSnapshotMutation as te } from "../../api/eventApi.js";
5
+ import { CHART_SERIES_COLORS as o, ChartLegend as ne, EventAreaChart as s, EventBarChart as c, EventDonutChart as l } from "../../components/EventCharts.js";
6
+ import { Pagination as u, usePagination as d } from "../../components/Pagination.js";
7
+ import { describeError as re, mutationSucceeded as f } from "../../lib/mutationResult.js";
8
+ import { useMemo as p, useState as m } from "react";
9
+ import { jsx as h, jsxs as g } from "react/jsx-runtime";
10
+ import { BarChart3 as ie, CalendarDays as ae, ClipboardList as oe, MapPin as se, QrCode as ce, Sparkles as le, Ticket as ue, Trophy as de, Users as fe } from "lucide-react";
11
+ import { Badge as pe, Button as _, EmphasisPanel as v, GlassCard as y, GradientText as b, IllustratedEmptyState as x, Input as S, PagePurpose as C, Select as w, SelectContent as T, SelectItem as E, SelectTrigger as D, SelectValue as O, Skeleton as k } from "@burdenoff/fe-libs/ui";
12
12
  //#region src/eventfullymanaged/pages/modules/AnalyticsPage.tsx
13
- var N = e`
13
+ var A = e`
14
14
  query EventfullymanagedAnalyticsSnapshotsWithMetrics($limit: Int, $offset: Int) {
15
15
  analyticsSnapshots: eventfullyManagedAnalyticsSnapshots(limit: $limit, offset: $offset) {
16
16
  total
@@ -24,7 +24,7 @@ var N = e`
24
24
  }
25
25
  }
26
26
  }
27
- `, P = [
27
+ `, j = [
28
28
  {
29
29
  key: "totalEvents",
30
30
  label: "Events"
@@ -54,7 +54,7 @@ var N = e`
54
54
  label: "Upcoming Sessions"
55
55
  }
56
56
  ];
57
- function F(e) {
57
+ function M(e) {
58
58
  let t = e.toLowerCase();
59
59
  return [
60
60
  "active",
@@ -72,12 +72,12 @@ function F(e) {
72
72
  "scheduled"
73
73
  ].includes(t) ? "info" : "secondary";
74
74
  }
75
- function I(e) {
75
+ function N(e) {
76
76
  if (!e) return null;
77
77
  let t = new Date(e);
78
78
  return Number.isNaN(t.getTime()) ? null : t.toLocaleString();
79
79
  }
80
- function ie(e) {
80
+ function P(e) {
81
81
  if (!e) return "—";
82
82
  let t = new Date(e);
83
83
  return Number.isNaN(t.getTime()) ? "—" : t.toLocaleDateString(void 0, {
@@ -85,54 +85,60 @@ function ie(e) {
85
85
  day: "numeric"
86
86
  });
87
87
  }
88
- function L(e) {
88
+ function F(e) {
89
89
  return e.replace(/[_-]+/g, " ").split(" ").filter(Boolean).map((e) => e.charAt(0).toUpperCase() + e.slice(1).toLowerCase()).join(" ");
90
90
  }
91
- function R({ icon: e, label: t, value: n }) {
92
- return /* @__PURE__ */ v(D, {
91
+ function I({ icon: e, label: t, value: n }) {
92
+ return /* @__PURE__ */ g(y, {
93
93
  treatment: "metric",
94
94
  className: "p-4",
95
- children: [/* @__PURE__ */ v("div", {
95
+ children: [/* @__PURE__ */ g("div", {
96
96
  className: "flex items-center gap-2 text-text-secondary",
97
- children: [/* @__PURE__ */ _(e, { className: "h-4 w-4 text-accent-primary" }), /* @__PURE__ */ _("p", {
97
+ children: [/* @__PURE__ */ h(e, { className: "h-4 w-4 text-accent-primary" }), /* @__PURE__ */ h("p", {
98
98
  className: "text-xs font-medium uppercase tracking-wide",
99
99
  children: t
100
100
  })]
101
- }), /* @__PURE__ */ _("p", {
101
+ }), /* @__PURE__ */ h("p", {
102
102
  className: "mt-2 text-2xl font-bold tabular-nums text-text-primary",
103
103
  children: n.toLocaleString()
104
104
  })]
105
105
  });
106
106
  }
107
- function z() {
108
- let e = f({ pageSize: 8 }), { data: z, loading: B, refetch: V } = t(N, { variables: {
107
+ function L() {
108
+ let e = d({ pageSize: 8 }), { data: L, loading: R, refetch: z } = t(A, { variables: {
109
109
  limit: e.limit,
110
110
  offset: e.offset
111
- } }), H = r(), U = i({
111
+ } }), B = ee(), V = a({
112
112
  limit: 200,
113
113
  offset: 0
114
- }), [W, { loading: G }] = a(), [K, q] = g("overview"), J = h(() => z?.analyticsSnapshots.items ?? [], [z]), Y = z?.analyticsSnapshots.total ?? 0, X = H.data?.dashboardSummary, Z = h(() => U.data?.registrations.items ?? [], [U.data]), Q = h(() => Z.filter((e) => !!e.checkedInAt).length, [Z]), ae = h(() => J.map((e) => {
114
+ }), [me, { loading: H }] = te(), [U, he] = m("overview"), W = i({
115
+ limit: 50,
116
+ offset: 0
117
+ }), G = p(() => W.data?.events.items ?? [], [W.data]), [ge, _e] = m(""), K = ge || G[0]?.id || "", q = r({ eventId: K }), ve = p(() => (q.data?.checkInThroughput ?? []).map((e) => ({
118
+ name: new Date(e.hour).toLocaleTimeString(void 0, { hour: "numeric" }),
119
+ value: e.count
120
+ })), [q.data]), J = p(() => L?.analyticsSnapshots.items ?? [], [L]), Y = L?.analyticsSnapshots.total ?? 0, X = B.data?.dashboardSummary, Z = p(() => V.data?.registrations.items ?? [], [V.data]), Q = p(() => Z.filter((e) => !!e.checkedInAt).length, [Z]), ye = p(() => J.map((e) => {
115
121
  let t = e.metrics?.generatedAt ?? e.createdAt ?? null, n = t ? new Date(t) : null, r = typeof e.metrics?.totalRegistrations == "number" ? e.metrics.totalRegistrations : null;
116
122
  return n && !Number.isNaN(n.getTime()) && r !== null ? {
117
123
  time: n.getTime(),
118
- label: ie(t),
124
+ label: P(t),
119
125
  value: r
120
126
  } : null;
121
127
  }).filter((e) => e !== null).sort((e, t) => e.time - t.time).map(({ label: e, value: t }) => ({
122
128
  label: e,
123
129
  value: t
124
- })), [J]), $ = h(() => {
130
+ })), [J]), $ = p(() => {
125
131
  let e = /* @__PURE__ */ new Map();
126
132
  for (let t of Z) {
127
133
  let n = (t.status || "unknown").toLowerCase();
128
134
  e.set(n, (e.get(n) ?? 0) + 1);
129
135
  }
130
136
  return Array.from(e.entries()).sort((e, t) => t[1] - e[1]).map(([e, t], n) => ({
131
- name: L(e),
137
+ name: F(e),
132
138
  value: t,
133
139
  color: o[n % o.length]
134
140
  }));
135
- }, [Z]), oe = Z.length, se = h(() => X ? [
141
+ }, [Z]), be = Z.length, xe = p(() => X ? [
136
142
  {
137
143
  name: "Events",
138
144
  value: X.totalEvents
@@ -161,136 +167,136 @@ function z() {
161
167
  name: "Sessions",
162
168
  value: X.upcomingSessions
163
169
  }
164
- ] : [], [X, Q]), ce = async () => {
165
- if (K.trim()) try {
166
- let e = await W({ variables: { input: {
167
- name: K,
168
- title: K,
170
+ ] : [], [X, Q]), Se = async () => {
171
+ if (U.trim()) try {
172
+ let e = await me({ variables: { input: {
173
+ name: U,
174
+ title: U,
169
175
  status: "created",
170
176
  metadata: {}
171
177
  } } });
172
- if (!m(e, e.data?.upsertAnalyticsSnapshot?.id, "Could not generate snapshot")) return;
173
- n.success("Snapshot generated"), await V();
178
+ if (!f(e, e.data?.upsertAnalyticsSnapshot?.id, "Could not generate snapshot")) return;
179
+ n.success("Snapshot generated"), await z();
174
180
  } catch (e) {
175
- n.error("Could not generate snapshot", p(e));
181
+ n.error("Could not generate snapshot", re(e));
176
182
  }
177
- }, le = H.loading && !X;
178
- return /* @__PURE__ */ v("div", {
183
+ }, Ce = B.loading && !X;
184
+ return /* @__PURE__ */ g("div", {
179
185
  className: "space-y-6 p-6",
180
186
  children: [
181
- /* @__PURE__ */ _(j, { children: "Analytics gives you the live pulse of your event operations — registrations over time, how those registrations break down by status, and totals across every entity you manage. Generate a snapshot to freeze today's numbers so you can compare trends over time and report on outcomes." }),
182
- /* @__PURE__ */ _(E, { children: /* @__PURE__ */ v("div", {
187
+ /* @__PURE__ */ h(C, { children: "Analytics gives you the live pulse of your event operations — registrations over time, how those registrations break down by status, and totals across every entity you manage. Generate a snapshot to freeze today's numbers so you can compare trends over time and report on outcomes." }),
188
+ /* @__PURE__ */ h(v, { children: /* @__PURE__ */ g("div", {
183
189
  className: "flex flex-col gap-4 sm:flex-row sm:items-end sm:justify-between",
184
- children: [/* @__PURE__ */ v("div", { children: [/* @__PURE__ */ _("h1", {
190
+ children: [/* @__PURE__ */ g("div", { children: [/* @__PURE__ */ h("h1", {
185
191
  className: "text-2xl font-bold text-text-primary",
186
- children: /* @__PURE__ */ _(O, { children: "Analytics" })
187
- }), /* @__PURE__ */ _("p", {
192
+ children: /* @__PURE__ */ h(b, { children: "Analytics" })
193
+ }), /* @__PURE__ */ h("p", {
188
194
  className: "mt-1 text-sm text-text-secondary",
189
195
  children: "Real-time metrics from live event operations, plus point-in-time snapshots you control."
190
- })] }), /* @__PURE__ */ v("div", {
196
+ })] }), /* @__PURE__ */ g("div", {
191
197
  className: "flex w-full flex-col gap-2 sm:w-auto sm:flex-row",
192
- children: [/* @__PURE__ */ _(A, {
193
- value: K,
194
- onChange: (e) => q(e.target.value),
198
+ children: [/* @__PURE__ */ h(S, {
199
+ value: U,
200
+ onChange: (e) => he(e.target.value),
195
201
  placeholder: "daily-summary",
196
202
  "aria-label": "Snapshot name",
197
203
  className: "sm:w-48"
198
- }), /* @__PURE__ */ v(T, {
204
+ }), /* @__PURE__ */ g(_, {
199
205
  type: "button",
200
- disabled: G,
201
- onClick: ce,
202
- children: [/* @__PURE__ */ _(re, { className: "h-4 w-4" }), G ? "Generating..." : "Generate snapshot"]
206
+ disabled: H,
207
+ onClick: Se,
208
+ children: [/* @__PURE__ */ h(le, { className: "h-4 w-4" }), H ? "Generating..." : "Generate snapshot"]
203
209
  })]
204
210
  })]
205
211
  }) }),
206
- /* @__PURE__ */ v("div", {
212
+ /* @__PURE__ */ g("div", {
207
213
  className: "grid grid-cols-1 gap-6 xl:grid-cols-[minmax(0,1fr)_320px]",
208
- children: [/* @__PURE__ */ v("div", {
214
+ children: [/* @__PURE__ */ g("div", {
209
215
  className: "space-y-6",
210
216
  children: [
211
- le ? /* @__PURE__ */ _("div", {
217
+ Ce ? /* @__PURE__ */ h("div", {
212
218
  className: "grid grid-cols-2 gap-4 sm:grid-cols-3 xl:grid-cols-4",
213
- children: Array.from({ length: 7 }).map((e, t) => /* @__PURE__ */ _(M, { className: "h-[92px] rounded-card" }, t))
214
- }) : X ? /* @__PURE__ */ v("div", {
219
+ children: Array.from({ length: 7 }).map((e, t) => /* @__PURE__ */ h(k, { className: "h-[92px] rounded-card" }, t))
220
+ }) : X ? /* @__PURE__ */ g("div", {
215
221
  className: "grid grid-cols-2 gap-4 sm:grid-cols-3 xl:grid-cols-4",
216
222
  children: [
217
- /* @__PURE__ */ _(R, {
218
- icon: b,
223
+ /* @__PURE__ */ h(I, {
224
+ icon: ae,
219
225
  label: "Events",
220
226
  value: X.totalEvents
221
227
  }),
222
- /* @__PURE__ */ _(R, {
223
- icon: ee,
228
+ /* @__PURE__ */ h(I, {
229
+ icon: oe,
224
230
  label: "Registrations",
225
231
  value: X.totalRegistrations
226
232
  }),
227
- /* @__PURE__ */ _(R, {
228
- icon: C,
233
+ /* @__PURE__ */ h(I, {
234
+ icon: fe,
229
235
  label: "Attendees",
230
236
  value: X.totalAttendees
231
237
  }),
232
- /* @__PURE__ */ _(R, {
233
- icon: ne,
238
+ /* @__PURE__ */ h(I, {
239
+ icon: ce,
234
240
  label: "Check-ins",
235
241
  value: Q
236
242
  }),
237
- /* @__PURE__ */ _(R, {
238
- icon: te,
243
+ /* @__PURE__ */ h(I, {
244
+ icon: se,
239
245
  label: "Venues",
240
246
  value: X.totalVenues
241
247
  }),
242
- /* @__PURE__ */ _(R, {
243
- icon: S,
248
+ /* @__PURE__ */ h(I, {
249
+ icon: de,
244
250
  label: "Sponsors",
245
251
  value: X.totalSponsors
246
252
  }),
247
- /* @__PURE__ */ _(R, {
248
- icon: x,
253
+ /* @__PURE__ */ h(I, {
254
+ icon: ue,
249
255
  label: "Upcoming Sessions",
250
256
  value: X.upcomingSessions
251
257
  })
252
258
  ]
253
259
  }) : null,
254
- /* @__PURE__ */ v("div", {
260
+ /* @__PURE__ */ g("div", {
255
261
  className: "grid grid-cols-1 gap-6 lg:grid-cols-2",
256
- children: [/* @__PURE__ */ v(D, {
262
+ children: [/* @__PURE__ */ g(y, {
257
263
  treatment: "insight",
258
264
  className: "p-5",
259
- children: [/* @__PURE__ */ v("div", {
265
+ children: [/* @__PURE__ */ g("div", {
260
266
  className: "flex items-center justify-between",
261
- children: [/* @__PURE__ */ _("h2", {
267
+ children: [/* @__PURE__ */ h("h2", {
262
268
  className: "text-base font-semibold text-text-primary",
263
269
  children: "Registrations over time"
264
- }), /* @__PURE__ */ _("span", {
270
+ }), /* @__PURE__ */ h("span", {
265
271
  className: "text-xs text-text-muted",
266
272
  children: "By snapshot"
267
273
  })]
268
- }), /* @__PURE__ */ _("div", {
274
+ }), /* @__PURE__ */ h("div", {
269
275
  className: "mt-4",
270
- children: /* @__PURE__ */ _(c, {
271
- data: ae,
276
+ children: /* @__PURE__ */ h(s, {
277
+ data: ye,
272
278
  emptyLabel: "Generate a few snapshots to chart the trend"
273
279
  })
274
280
  })]
275
- }), /* @__PURE__ */ v(D, {
281
+ }), /* @__PURE__ */ g(y, {
276
282
  treatment: "insight",
277
283
  className: "p-5",
278
- children: [/* @__PURE__ */ _("h2", {
284
+ children: [/* @__PURE__ */ h("h2", {
279
285
  className: "text-base font-semibold text-text-primary",
280
286
  children: "Registrations by status"
281
- }), /* @__PURE__ */ v("div", {
287
+ }), /* @__PURE__ */ g("div", {
282
288
  className: "mt-4 flex flex-col items-center gap-4 sm:flex-row",
283
- children: [/* @__PURE__ */ _("div", {
289
+ children: [/* @__PURE__ */ h("div", {
284
290
  className: "w-full sm:w-1/2",
285
- children: /* @__PURE__ */ _(u, {
291
+ children: /* @__PURE__ */ h(l, {
286
292
  data: $,
287
- centerValue: oe.toLocaleString(),
293
+ centerValue: be.toLocaleString(),
288
294
  centerLabel: "Registrations",
289
295
  emptyLabel: "No registrations yet"
290
296
  })
291
- }), /* @__PURE__ */ _("div", {
297
+ }), /* @__PURE__ */ h("div", {
292
298
  className: "w-full sm:w-1/2",
293
- children: /* @__PURE__ */ _(s, { items: $.map((e) => ({
299
+ children: /* @__PURE__ */ h(ne, { items: $.map((e) => ({
294
300
  label: e.name,
295
301
  color: e.color ?? "var(--color-chart-1)",
296
302
  value: e.value.toLocaleString()
@@ -299,35 +305,66 @@ function z() {
299
305
  })]
300
306
  })]
301
307
  }),
302
- /* @__PURE__ */ v(D, {
308
+ /* @__PURE__ */ g(y, {
303
309
  treatment: "insight",
304
310
  className: "p-5",
305
311
  children: [
306
- /* @__PURE__ */ _("h2", {
312
+ /* @__PURE__ */ h("h2", {
307
313
  className: "text-base font-semibold text-text-primary",
308
314
  children: "Portfolio totals"
309
315
  }),
310
- /* @__PURE__ */ _("p", {
316
+ /* @__PURE__ */ h("p", {
311
317
  className: "mt-0.5 text-xs text-text-muted",
312
318
  children: "Live counts across every entity you manage."
313
319
  }),
314
- /* @__PURE__ */ _("div", {
320
+ /* @__PURE__ */ h("div", {
315
321
  className: "mt-4",
316
- children: /* @__PURE__ */ _(l, {
317
- data: se,
322
+ children: /* @__PURE__ */ h(c, {
323
+ data: xe,
318
324
  emptyLabel: "No operational data yet"
319
325
  })
320
326
  })
321
327
  ]
328
+ }),
329
+ /* @__PURE__ */ g(y, {
330
+ treatment: "insight",
331
+ className: "p-5",
332
+ children: [/* @__PURE__ */ g("div", {
333
+ className: "flex flex-wrap items-center justify-between gap-3",
334
+ children: [/* @__PURE__ */ g("div", { children: [/* @__PURE__ */ h("h2", {
335
+ className: "text-base font-semibold text-text-primary",
336
+ children: "Check-in throughput"
337
+ }), /* @__PURE__ */ h("p", {
338
+ className: "mt-0.5 text-xs text-text-muted",
339
+ children: "Scans per hour at the door for the selected event."
340
+ })] }), G.length > 0 ? /* @__PURE__ */ g(w, {
341
+ value: K,
342
+ onValueChange: _e,
343
+ children: [/* @__PURE__ */ h(D, {
344
+ className: "w-full sm:w-56",
345
+ "aria-label": "Select event for check-in throughput",
346
+ children: /* @__PURE__ */ h(O, { placeholder: "Select event" })
347
+ }), /* @__PURE__ */ h(T, { children: G.map((e) => /* @__PURE__ */ h(E, {
348
+ value: e.id,
349
+ children: e.name
350
+ }, e.id)) })]
351
+ }) : null]
352
+ }), /* @__PURE__ */ h("div", {
353
+ className: "mt-4",
354
+ children: /* @__PURE__ */ h(c, {
355
+ data: ve,
356
+ emptyLabel: K ? "No check-ins recorded yet for this event" : "Select an event to see throughput"
357
+ })
358
+ })]
322
359
  })
323
360
  ]
324
- }), /* @__PURE__ */ v("aside", {
361
+ }), /* @__PURE__ */ g("aside", {
325
362
  className: "space-y-4",
326
- children: [/* @__PURE__ */ v("div", {
363
+ children: [/* @__PURE__ */ g("div", {
327
364
  className: "flex items-center justify-between",
328
- children: [/* @__PURE__ */ v("h2", {
365
+ children: [/* @__PURE__ */ g("h2", {
329
366
  className: "text-base font-semibold text-text-primary",
330
- children: ["Saved snapshots ", Y > 0 ? /* @__PURE__ */ v("span", {
367
+ children: ["Saved snapshots ", Y > 0 ? /* @__PURE__ */ g("span", {
331
368
  className: "text-text-muted",
332
369
  children: [
333
370
  "(",
@@ -335,66 +372,66 @@ function z() {
335
372
  ")"
336
373
  ]
337
374
  }) : null]
338
- }), /* @__PURE__ */ _(y, { className: "h-4 w-4 text-text-muted" })]
339
- }), B && J.length === 0 ? /* @__PURE__ */ _("div", {
375
+ }), /* @__PURE__ */ h(ie, { className: "h-4 w-4 text-text-muted" })]
376
+ }), R && J.length === 0 ? /* @__PURE__ */ h("div", {
340
377
  className: "space-y-3",
341
- children: Array.from({ length: 3 }).map((e, t) => /* @__PURE__ */ _(M, { className: "h-24 rounded-card" }, t))
342
- }) : J.length === 0 ? /* @__PURE__ */ _(D, {
378
+ children: Array.from({ length: 3 }).map((e, t) => /* @__PURE__ */ h(k, { className: "h-24 rounded-card" }, t))
379
+ }) : J.length === 0 ? /* @__PURE__ */ h(y, {
343
380
  treatment: "plain",
344
381
  className: "border-border-seam",
345
- children: /* @__PURE__ */ _(k, {
382
+ children: /* @__PURE__ */ h(x, {
346
383
  illustration: "empty-data",
347
384
  title: "No snapshots yet",
348
385
  description: "Generate your first snapshot to freeze the current metrics.",
349
386
  className: "py-8"
350
387
  })
351
- }) : /* @__PURE__ */ v("div", {
388
+ }) : /* @__PURE__ */ g("div", {
352
389
  className: "space-y-3",
353
390
  children: [J.map((e) => {
354
- let t = I(e.metrics?.generatedAt) ?? I(e.createdAt), n = P.map((t) => {
391
+ let t = N(e.metrics?.generatedAt) ?? N(e.createdAt), n = j.map((t) => {
355
392
  let n = e.metrics?.[t.key];
356
393
  return {
357
394
  label: t.label,
358
395
  value: typeof n == "number" ? n : null
359
396
  };
360
397
  }).filter((e) => e.value !== null);
361
- return /* @__PURE__ */ v(D, {
398
+ return /* @__PURE__ */ g(y, {
362
399
  treatment: "plain",
363
400
  className: "border-border-seam p-4",
364
- children: [/* @__PURE__ */ v("div", {
401
+ children: [/* @__PURE__ */ g("div", {
365
402
  className: "flex items-start justify-between gap-2",
366
- children: [/* @__PURE__ */ v("div", {
403
+ children: [/* @__PURE__ */ g("div", {
367
404
  className: "min-w-0",
368
- children: [/* @__PURE__ */ _("h3", {
405
+ children: [/* @__PURE__ */ h("h3", {
369
406
  className: "truncate text-sm font-semibold text-text-primary",
370
407
  children: e.title ?? e.name ?? `Snapshot ${e.id}`
371
- }), t ? /* @__PURE__ */ _("p", {
408
+ }), t ? /* @__PURE__ */ h("p", {
372
409
  className: "mt-0.5 text-xs text-text-muted",
373
410
  children: t
374
411
  }) : null]
375
- }), e.status ? /* @__PURE__ */ _(w, {
376
- variant: F(e.status),
412
+ }), e.status ? /* @__PURE__ */ h(pe, {
413
+ variant: M(e.status),
377
414
  className: "shrink-0 uppercase",
378
415
  children: e.status
379
416
  }) : null]
380
- }), n.length > 0 ? /* @__PURE__ */ _("dl", {
417
+ }), n.length > 0 ? /* @__PURE__ */ h("dl", {
381
418
  className: "mt-3 space-y-1.5",
382
- children: n.map((e) => /* @__PURE__ */ v("div", {
419
+ children: n.map((e) => /* @__PURE__ */ g("div", {
383
420
  className: "flex items-center justify-between text-xs",
384
- children: [/* @__PURE__ */ _("dt", {
421
+ children: [/* @__PURE__ */ h("dt", {
385
422
  className: "text-text-secondary",
386
423
  children: e.label
387
- }), /* @__PURE__ */ _("dd", {
424
+ }), /* @__PURE__ */ h("dd", {
388
425
  className: "font-semibold tabular-nums text-text-primary",
389
426
  children: (e.value ?? 0).toLocaleString()
390
427
  })]
391
428
  }, e.label))
392
- }) : /* @__PURE__ */ _("p", {
429
+ }) : /* @__PURE__ */ h("p", {
393
430
  className: "mt-3 text-xs text-text-muted",
394
431
  children: "No metrics captured."
395
432
  })]
396
433
  }, e.id);
397
- }), /* @__PURE__ */ _(d, {
434
+ }), /* @__PURE__ */ h(u, {
398
435
  offset: e.offset,
399
436
  limit: e.limit,
400
437
  loadedCount: J.length,
@@ -402,7 +439,7 @@ function z() {
402
439
  onPrev: e.prevPage,
403
440
  onNext: e.nextPage,
404
441
  itemLabel: "snapshots",
405
- loading: B
442
+ loading: R
406
443
  })]
407
444
  })]
408
445
  })]
@@ -411,6 +448,6 @@ function z() {
411
448
  });
412
449
  }
413
450
  //#endregion
414
- export { z as default };
451
+ export { L as default };
415
452
 
416
453
  //# sourceMappingURL=AnalyticsPage.js.map