@carlonicora/nextjs-jsonapi 6.0.0 → 6.2.0

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 (75) hide show
  1. package/dist/{BlockNoteEditor-FZNU4YQT.mjs → BlockNoteEditor-D6VMXRZH.mjs} +4 -4
  2. package/dist/{BlockNoteEditor-SAU3G6H7.js → BlockNoteEditor-Q757ZLCO.js} +19 -19
  3. package/dist/{BlockNoteEditor-SAU3G6H7.js.map → BlockNoteEditor-Q757ZLCO.js.map} +1 -1
  4. package/dist/{BlockNoteViewer-6XDDVTN6.mjs → BlockNoteViewer-GI5LVQHZ.mjs} +2 -2
  5. package/dist/{BlockNoteViewer-7BTV7QQA.js → BlockNoteViewer-KG4CIJC5.js} +3 -3
  6. package/dist/{BlockNoteViewer-7BTV7QQA.js.map → BlockNoteViewer-KG4CIJC5.js.map} +1 -1
  7. package/dist/billing/index.js +491 -491
  8. package/dist/billing/index.mjs +3 -3
  9. package/dist/{chunk-F4JB7YAP.js → chunk-3P3IYUWQ.js} +8 -8
  10. package/dist/{chunk-F4JB7YAP.js.map → chunk-3P3IYUWQ.js.map} +1 -1
  11. package/dist/{chunk-U7DR5VDT.mjs → chunk-6PW3562E.mjs} +5 -5
  12. package/dist/{chunk-JVJS5RHB.mjs → chunk-CUNSPLOD.mjs} +2 -2
  13. package/dist/{chunk-T3YQ47EF.js → chunk-GSHMGL6N.js} +2 -1
  14. package/dist/chunk-GSHMGL6N.js.map +1 -0
  15. package/dist/{chunk-GFGKMUPZ.mjs → chunk-HLW3SUMD.mjs} +2 -2
  16. package/dist/{chunk-RYZYKG6W.mjs → chunk-MHBE4KQR.mjs} +2 -2
  17. package/dist/{chunk-USYZNWKS.mjs → chunk-QKDPCZ3G.mjs} +2 -1
  18. package/dist/{chunk-USYZNWKS.mjs.map → chunk-QKDPCZ3G.mjs.map} +1 -1
  19. package/dist/{chunk-TPZS46IM.js → chunk-S332ZCIE.js} +3 -3
  20. package/dist/{chunk-TPZS46IM.js.map → chunk-S332ZCIE.js.map} +1 -1
  21. package/dist/{chunk-MTI2UXDA.js → chunk-UEWDYVLW.js} +4 -4
  22. package/dist/{chunk-MTI2UXDA.js.map → chunk-UEWDYVLW.js.map} +1 -1
  23. package/dist/{chunk-IPYXT7MH.js → chunk-XQEYBESH.js} +868 -868
  24. package/dist/{chunk-IPYXT7MH.js.map → chunk-XQEYBESH.js.map} +1 -1
  25. package/dist/client/index.js +4 -4
  26. package/dist/client/index.mjs +3 -3
  27. package/dist/components/index.js +4 -4
  28. package/dist/components/index.mjs +3 -3
  29. package/dist/contexts/index.js +4 -4
  30. package/dist/contexts/index.mjs +3 -3
  31. package/dist/core/index.js +2 -2
  32. package/dist/core/index.mjs +1 -1
  33. package/dist/email-automations/index.js +92 -92
  34. package/dist/email-automations/index.mjs +3 -3
  35. package/dist/features/analytics/index.d.mts +9 -1
  36. package/dist/features/analytics/index.d.ts +9 -1
  37. package/dist/features/analytics/index.js +129 -127
  38. package/dist/features/analytics/index.js.map +1 -1
  39. package/dist/features/analytics/index.mjs +12 -10
  40. package/dist/features/analytics/index.mjs.map +1 -1
  41. package/dist/features/analytics/server.js +4 -4
  42. package/dist/features/analytics/server.mjs +2 -2
  43. package/dist/features/blog/index.js +150 -150
  44. package/dist/features/blog/index.mjs +3 -3
  45. package/dist/features/blog/server.js +16 -16
  46. package/dist/features/blog/server.mjs +1 -1
  47. package/dist/features/help/index.js +37 -37
  48. package/dist/features/help/index.mjs +3 -3
  49. package/dist/features/tokenusage/index.js +158 -125
  50. package/dist/features/tokenusage/index.js.map +1 -1
  51. package/dist/features/tokenusage/index.mjs +38 -5
  52. package/dist/features/tokenusage/index.mjs.map +1 -1
  53. package/dist/index.js +3 -3
  54. package/dist/index.mjs +2 -2
  55. package/dist/server/index.js +3 -3
  56. package/dist/server/index.mjs +2 -2
  57. package/messages/en.json +23 -0
  58. package/messages/it.json +23 -0
  59. package/package.json +1 -1
  60. package/scripts/validate-messages.mjs +4 -1
  61. package/src/features/analytics/components/AnalyticsTracker.tsx +22 -9
  62. package/src/features/analytics/components/__tests__/AnalyticsTracker.spec.tsx +67 -0
  63. package/src/features/analytics/data/__tests__/models.spec.ts +13 -0
  64. package/src/features/analytics/data/analytics-event.ts +1 -0
  65. package/src/features/analytics/data/analytics.types.ts +2 -0
  66. package/src/features/tokenusage/components/TokenUsageRankedBar.tsx +34 -2
  67. package/src/features/tokenusage/components/__tests__/TokenUsageRankedBar.spec.tsx +22 -0
  68. package/src/features/tokenusage/lib/operation-label.ts +20 -0
  69. package/dist/chunk-T3YQ47EF.js.map +0 -1
  70. /package/dist/{BlockNoteEditor-FZNU4YQT.mjs.map → BlockNoteEditor-D6VMXRZH.mjs.map} +0 -0
  71. /package/dist/{BlockNoteViewer-6XDDVTN6.mjs.map → BlockNoteViewer-GI5LVQHZ.mjs.map} +0 -0
  72. /package/dist/{chunk-U7DR5VDT.mjs.map → chunk-6PW3562E.mjs.map} +0 -0
  73. /package/dist/{chunk-JVJS5RHB.mjs.map → chunk-CUNSPLOD.mjs.map} +0 -0
  74. /package/dist/{chunk-GFGKMUPZ.mjs.map → chunk-HLW3SUMD.mjs.map} +0 -0
  75. /package/dist/{chunk-RYZYKG6W.mjs.map → chunk-MHBE4KQR.mjs.map} +0 -0
@@ -3,7 +3,7 @@
3
3
 
4
4
 
5
5
 
6
- var _chunkTPZS46IMjs = require('../../chunk-TPZS46IM.js');
6
+ var _chunkS332ZCIEjs = require('../../chunk-S332ZCIE.js');
7
7
 
8
8
 
9
9
 
@@ -33,8 +33,8 @@ var _chunkTPZS46IMjs = require('../../chunk-TPZS46IM.js');
33
33
 
34
34
 
35
35
 
36
- var _chunkIPYXT7MHjs = require('../../chunk-IPYXT7MH.js');
37
- require('../../chunk-F4JB7YAP.js');
36
+ var _chunkXQEYBESHjs = require('../../chunk-XQEYBESH.js');
37
+ require('../../chunk-3P3IYUWQ.js');
38
38
  require('../../chunk-G4JR3SFV.js');
39
39
 
40
40
 
@@ -48,7 +48,7 @@ require('../../chunk-G4JR3SFV.js');
48
48
 
49
49
 
50
50
 
51
- var _chunkT3YQ47EFjs = require('../../chunk-T3YQ47EF.js');
51
+ var _chunkGSHMGL6Njs = require('../../chunk-GSHMGL6N.js');
52
52
  require('../../chunk-GHE4VT2R.js');
53
53
  require('../../chunk-LXKSUWAV.js');
54
54
  require('../../chunk-JTPRJNT2.js');
@@ -63,7 +63,7 @@ var _react = require('react');
63
63
  var _uuid = require('uuid');
64
64
 
65
65
  // src/features/analytics/data/AnalyticsService.ts
66
- var AnalyticsService = class extends _chunkT3YQ47EFjs.AbstractService {
66
+ var AnalyticsService = class extends _chunkGSHMGL6Njs.AbstractService {
67
67
  static {
68
68
  _chunk7QVYU63Ejs.__name.call(void 0, this, "AnalyticsService");
69
69
  }
@@ -75,9 +75,9 @@ var AnalyticsService = class extends _chunkT3YQ47EFjs.AbstractService {
75
75
  static async track(input) {
76
76
  try {
77
77
  await this.callApi({
78
- type: _chunkT3YQ47EFjs.Modules.AnalyticsEvent,
78
+ type: _chunkGSHMGL6Njs.Modules.AnalyticsEvent,
79
79
  method: "POST" /* POST */,
80
- endpoint: new (0, _chunkT3YQ47EFjs.EndpointCreator)({ endpoint: _chunkT3YQ47EFjs.Modules.AnalyticsEvent }).generate(),
80
+ endpoint: new (0, _chunkGSHMGL6Njs.EndpointCreator)({ endpoint: _chunkGSHMGL6Njs.Modules.AnalyticsEvent }).generate(),
81
81
  input,
82
82
  suppressGlobalError: true
83
83
  });
@@ -163,18 +163,19 @@ _chunk7QVYU63Ejs.__name.call(void 0, maskSensitivePath, "maskSensitivePath");
163
163
  function AnalyticsTracker({ hasConsent, resolveSection, sensitivePrefixes }) {
164
164
  const pathname = _navigation.usePathname.call(void 0, );
165
165
  const lastPath = _react.useRef.call(void 0, null);
166
- const lastConsent = _react.useRef.call(void 0, false);
166
+ const lastKnownConsent = _react.useRef.call(void 0, void 0);
167
167
  const attribution = _react.useRef.call(void 0, null);
168
168
  _react.useEffect.call(void 0, () => {
169
- if (!hasConsent) clearVisitorCookie();
169
+ if (hasConsent === void 0) return;
170
+ if (hasConsent === false) clearVisitorCookie();
170
171
  if (!pathname) return;
171
172
  if (typeof navigator !== "undefined" && navigator.webdriver) return;
172
173
  const path = pathname.split(/[?#]/)[0] || "/";
173
174
  if (path.startsWith(EXCLUDED_PREFIX)) return;
174
175
  const isNewPath = lastPath.current !== path;
175
- const consentJustGranted = hasConsent && !lastConsent.current;
176
- lastConsent.current = hasConsent;
177
- if (!isNewPath && !consentJustGranted) return;
176
+ const consentGranted = hasConsent === true && lastKnownConsent.current === false;
177
+ lastKnownConsent.current = hasConsent;
178
+ if (!isNewPath && !consentGranted) return;
178
179
  lastPath.current = path;
179
180
  const sentPath = maskSensitivePath(path, sensitivePrefixes);
180
181
  const input = {
@@ -184,12 +185,13 @@ function AnalyticsTracker({ hasConsent, resolveSection, sensitivePrefixes }) {
184
185
  screenWidth: window.innerWidth
185
186
  };
186
187
  if (hasConsent) input.visitorId = ensureVisitorCookie();
188
+ if (consentGranted) input.consentGranted = true;
187
189
  const isFirstEvent = attribution.current === null;
188
190
  if (isFirstEvent) {
189
191
  const referrer = readExternalReferrer();
190
192
  attribution.current = { ...referrer ? { referrer } : {}, ...readUtm(window.location.search) };
191
193
  }
192
- if (isFirstEvent || consentJustGranted) Object.assign(input, attribution.current);
194
+ if (isFirstEvent || consentGranted) Object.assign(input, attribution.current);
193
195
  void AnalyticsService.track(input);
194
196
  }, [pathname, hasConsent, resolveSection, sensitivePrefixes]);
195
197
  return null;
@@ -224,7 +226,7 @@ function AnalyticsAdminFilterBar({ section, granularity, onChange }) {
224
226
  };
225
227
  return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex flex-wrap items-center gap-2", children: [
226
228
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "max-md:w-full max-md:[&_#date]:w-full", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
227
- _chunkIPYXT7MHjs.DateRangeSelector,
229
+ _chunkXQEYBESHjs.DateRangeSelector,
228
230
  {
229
231
  onDateChange: (range) => {
230
232
  if (!_optionalChain([range, 'optionalAccess', _ => _.from]) || !_optionalChain([range, 'optionalAccess', _2 => _2.to])) return;
@@ -268,13 +270,13 @@ function Segmented({
268
270
  children: options.map((option) => {
269
271
  const selected = option.value === value;
270
272
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
271
- _chunkIPYXT7MHjs.Button,
273
+ _chunkXQEYBESHjs.Button,
272
274
  {
273
275
  type: "button",
274
276
  size: "sm",
275
277
  variant: selected ? "default" : "ghost",
276
278
  "aria-pressed": selected,
277
- className: _chunkT3YQ47EFjs.cn.call(void 0, !selected && "text-muted-foreground"),
279
+ className: _chunkGSHMGL6Njs.cn.call(void 0, !selected && "text-muted-foreground"),
278
280
  onClick: () => onSelect(option.value),
279
281
  children: option.label
280
282
  },
@@ -294,45 +296,45 @@ function withFilters(endpoint, filters) {
294
296
  return endpoint;
295
297
  }
296
298
  _chunk7QVYU63Ejs.__name.call(void 0, withFilters, "withFilters");
297
- var AnalyticsAdminService = class extends _chunkT3YQ47EFjs.AbstractService {
299
+ var AnalyticsAdminService = class extends _chunkGSHMGL6Njs.AbstractService {
298
300
  static {
299
301
  _chunk7QVYU63Ejs.__name.call(void 0, this, "AnalyticsAdminService");
300
302
  }
301
303
  /** Headline tiles: one row per window (current, previous). */
302
304
  static async getSummary(filters) {
303
- const endpoint = withFilters(new (0, _chunkT3YQ47EFjs.EndpointCreator)({ endpoint: _chunkT3YQ47EFjs.Modules.AnalyticsSummary }), filters);
305
+ const endpoint = withFilters(new (0, _chunkGSHMGL6Njs.EndpointCreator)({ endpoint: _chunkGSHMGL6Njs.Modules.AnalyticsSummary }), filters);
304
306
  return this.callApi({
305
- type: _chunkT3YQ47EFjs.Modules.AnalyticsSummary,
307
+ type: _chunkGSHMGL6Njs.Modules.AnalyticsSummary,
306
308
  method: "GET" /* GET */,
307
309
  endpoint: endpoint.generate()
308
310
  });
309
311
  }
310
312
  static async getTimeline(params) {
311
- const endpoint = withFilters(new (0, _chunkT3YQ47EFjs.EndpointCreator)({ endpoint: _chunkT3YQ47EFjs.Modules.AnalyticsTimeline }), params);
313
+ const endpoint = withFilters(new (0, _chunkGSHMGL6Njs.EndpointCreator)({ endpoint: _chunkGSHMGL6Njs.Modules.AnalyticsTimeline }), params);
312
314
  endpoint.addAdditionalParam("granularity", params.granularity);
313
315
  return this.callApi({
314
- type: _chunkT3YQ47EFjs.Modules.AnalyticsTimeline,
316
+ type: _chunkGSHMGL6Njs.Modules.AnalyticsTimeline,
315
317
  method: "GET" /* GET */,
316
318
  endpoint: endpoint.generate()
317
319
  });
318
320
  }
319
321
  static async getBreakdown(params) {
320
- const endpoint = withFilters(new (0, _chunkT3YQ47EFjs.EndpointCreator)({ endpoint: _chunkT3YQ47EFjs.Modules.AnalyticsBreakdown }), params);
322
+ const endpoint = withFilters(new (0, _chunkGSHMGL6Njs.EndpointCreator)({ endpoint: _chunkGSHMGL6Njs.Modules.AnalyticsBreakdown }), params);
321
323
  endpoint.addAdditionalParam("dimension", params.dimension);
322
324
  if (params.limit !== void 0) endpoint.addAdditionalParam("limit", String(params.limit));
323
325
  return this.callApi({
324
- type: _chunkT3YQ47EFjs.Modules.AnalyticsBreakdown,
326
+ type: _chunkGSHMGL6Njs.Modules.AnalyticsBreakdown,
325
327
  method: "GET" /* GET */,
326
328
  endpoint: endpoint.generate()
327
329
  });
328
330
  }
329
331
  /** Newest sessions first, cursor-paginated through `next`. */
330
332
  static async getSessions(params) {
331
- const endpoint = withFilters(new (0, _chunkT3YQ47EFjs.EndpointCreator)({ endpoint: _chunkT3YQ47EFjs.Modules.AnalyticsSession }), params);
333
+ const endpoint = withFilters(new (0, _chunkGSHMGL6Njs.EndpointCreator)({ endpoint: _chunkGSHMGL6Njs.Modules.AnalyticsSession }), params);
332
334
  if (params.visitorId) endpoint.addAdditionalParam("visitorId", params.visitorId);
333
335
  if (params.userId) endpoint.addAdditionalParam("userId", params.userId);
334
336
  return this.callApi({
335
- type: _chunkT3YQ47EFjs.Modules.AnalyticsSession,
337
+ type: _chunkGSHMGL6Njs.Modules.AnalyticsSession,
336
338
  method: "GET" /* GET */,
337
339
  endpoint: endpoint.generate(),
338
340
  next: params.next
@@ -340,20 +342,20 @@ var AnalyticsAdminService = class extends _chunkT3YQ47EFjs.AbstractService {
340
342
  }
341
343
  static async getSession(params) {
342
344
  return this.callApi({
343
- type: _chunkT3YQ47EFjs.Modules.AnalyticsSession,
345
+ type: _chunkGSHMGL6Njs.Modules.AnalyticsSession,
344
346
  method: "GET" /* GET */,
345
- endpoint: new (0, _chunkT3YQ47EFjs.EndpointCreator)({ endpoint: _chunkT3YQ47EFjs.Modules.AnalyticsSession, id: params.id }).generate()
347
+ endpoint: new (0, _chunkGSHMGL6Njs.EndpointCreator)({ endpoint: _chunkGSHMGL6Njs.Modules.AnalyticsSession, id: params.id }).generate()
346
348
  });
347
349
  }
348
350
  /** The journey: every page view of one session, oldest first. */
349
351
  static async getSessionPageViews(params) {
350
352
  return this.callApi({
351
- type: _chunkT3YQ47EFjs.Modules.AnalyticsPageView,
353
+ type: _chunkGSHMGL6Njs.Modules.AnalyticsPageView,
352
354
  method: "GET" /* GET */,
353
- endpoint: new (0, _chunkT3YQ47EFjs.EndpointCreator)({
354
- endpoint: _chunkT3YQ47EFjs.Modules.AnalyticsSession,
355
+ endpoint: new (0, _chunkGSHMGL6Njs.EndpointCreator)({
356
+ endpoint: _chunkGSHMGL6Njs.Modules.AnalyticsSession,
355
357
  id: params.sessionId,
356
- childEndpoint: _chunkT3YQ47EFjs.Modules.AnalyticsPageView
358
+ childEndpoint: _chunkGSHMGL6Njs.Modules.AnalyticsPageView
357
359
  }).generate()
358
360
  });
359
361
  }
@@ -449,7 +451,7 @@ var AnalyticsAdminProvider = /* @__PURE__ */ _chunk7QVYU63Ejs.__name.call(void 0
449
451
  const sessionsNext = {};
450
452
  try {
451
453
  const nextSessions = await AnalyticsAdminService.next({
452
- type: _chunkT3YQ47EFjs.Modules.AnalyticsSession,
454
+ type: _chunkGSHMGL6Njs.Modules.AnalyticsSession,
453
455
  endpoint: sessionsNextPage,
454
456
  next: sessionsNext
455
457
  });
@@ -504,7 +506,7 @@ var AnalyticsAdminProvider = /* @__PURE__ */ _chunk7QVYU63Ejs.__name.call(void 0
504
506
  error
505
507
  ]
506
508
  );
507
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkIPYXT7MHjs.SharedProvider, { value: { breadcrumbs: breadcrumb(), title: title() }, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, AnalyticsAdminContext.Provider, { value: contextValue, children }) });
509
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXQEYBESHjs.SharedProvider, { value: { breadcrumbs: breadcrumb(), title: title() }, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, AnalyticsAdminContext.Provider, { value: contextValue, children }) });
508
510
  }, "AnalyticsAdminProvider");
509
511
  var useAnalyticsAdmin = /* @__PURE__ */ _chunk7QVYU63Ejs.__name.call(void 0, () => {
510
512
  const ctx = _react.useContext.call(void 0, AnalyticsAdminContext);
@@ -524,7 +526,7 @@ var _lucidereact = require('lucide-react');
524
526
  var ZERO = { visitors: 0, sessions: 0, pageViews: 0, pagesPerSession: 0, consentShare: 0 };
525
527
  function AnalyticsAdminTiles({ summary }) {
526
528
  const t = _nextintl.useTranslations.call(void 0, );
527
- const { decimal } = _chunkTPZS46IMjs.useUsageFormatters.call(void 0, );
529
+ const { decimal } = _chunkS332ZCIEjs.useUsageFormatters.call(void 0, );
528
530
  const rowFor = /* @__PURE__ */ _chunk7QVYU63Ejs.__name.call(void 0, (window2) => _nullishCoalesce(summary.find((r) => r.section === "total" && r.window === window2), () => ( ZERO)), "rowFor");
529
531
  const current = rowFor("current");
530
532
  const previous = rowFor("previous");
@@ -537,7 +539,7 @@ function AnalyticsAdminTiles({ summary }) {
537
539
  testId: "analytics-tile-visitors",
538
540
  label: t("analytics.admin.tiles.visitors"),
539
541
  value: decimal(current.visitors, 0),
540
- delta: _chunkTPZS46IMjs.percentageDelta.call(void 0, current.visitors, previous.visitors),
542
+ delta: _chunkS332ZCIEjs.percentageDelta.call(void 0, current.visitors, previous.visitors),
541
543
  previousLabel,
542
544
  decimal
543
545
  }
@@ -548,7 +550,7 @@ function AnalyticsAdminTiles({ summary }) {
548
550
  testId: "analytics-tile-sessions",
549
551
  label: t("analytics.admin.tiles.sessions"),
550
552
  value: decimal(current.sessions, 0),
551
- delta: _chunkTPZS46IMjs.percentageDelta.call(void 0, current.sessions, previous.sessions),
553
+ delta: _chunkS332ZCIEjs.percentageDelta.call(void 0, current.sessions, previous.sessions),
552
554
  previousLabel,
553
555
  decimal
554
556
  }
@@ -559,7 +561,7 @@ function AnalyticsAdminTiles({ summary }) {
559
561
  testId: "analytics-tile-page-views",
560
562
  label: t("analytics.admin.tiles.page_views"),
561
563
  value: decimal(current.pageViews, 0),
562
- delta: _chunkTPZS46IMjs.percentageDelta.call(void 0, current.pageViews, previous.pageViews),
564
+ delta: _chunkS332ZCIEjs.percentageDelta.call(void 0, current.pageViews, previous.pageViews),
563
565
  previousLabel,
564
566
  decimal
565
567
  }
@@ -572,7 +574,7 @@ function AnalyticsAdminTiles({ summary }) {
572
574
  testId: "analytics-tile-pages-per-session",
573
575
  label: t("analytics.admin.tiles.pages_per_session"),
574
576
  value: decimal(current.pagesPerSession, 1),
575
- delta: _chunkTPZS46IMjs.percentageDelta.call(void 0, current.pagesPerSession, previous.pagesPerSession),
577
+ delta: _chunkS332ZCIEjs.percentageDelta.call(void 0, current.pagesPerSession, previous.pagesPerSession),
576
578
  decimal
577
579
  }
578
580
  ),
@@ -597,8 +599,8 @@ function LeadTile({
597
599
  previousLabel,
598
600
  decimal
599
601
  }) {
600
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkIPYXT7MHjs.Card, { "data-testid": testId, children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkIPYXT7MHjs.CardContent, { className: "grid gap-1", children: [
601
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkIPYXT7MHjs.MicroLabel, { children: label }),
602
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXQEYBESHjs.Card, { "data-testid": testId, children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkXQEYBESHjs.CardContent, { className: "grid gap-1", children: [
603
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXQEYBESHjs.MicroLabel, { children: label }),
602
604
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "text-primary text-xl font-semibold tabular-nums", children: value }),
603
605
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: "flex items-center gap-1", children: [
604
606
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, Delta, { testId: `${testId}-delta`, delta, decimal }),
@@ -614,8 +616,8 @@ function SupportingTile({
614
616
  delta,
615
617
  decimal
616
618
  }) {
617
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkIPYXT7MHjs.Card, { "data-testid": testId, size: "sm", children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkIPYXT7MHjs.CardContent, { className: "grid gap-1", children: [
618
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkIPYXT7MHjs.MicroLabel, { children: label }),
619
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXQEYBESHjs.Card, { "data-testid": testId, size: "sm", children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkXQEYBESHjs.CardContent, { className: "grid gap-1", children: [
620
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXQEYBESHjs.MicroLabel, { children: label }),
619
621
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: "flex items-center gap-2", children: [
620
622
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "text-sm font-medium tabular-nums", children: value }),
621
623
  delta !== void 0 && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, Delta, { testId: `${testId}-delta`, delta, decimal })
@@ -638,7 +640,7 @@ function Delta({
638
640
  "span",
639
641
  {
640
642
  "data-testid": testId,
641
- className: _chunkT3YQ47EFjs.cn.call(void 0,
643
+ className: _chunkGSHMGL6Njs.cn.call(void 0,
642
644
  "inline-flex items-center gap-0.5 text-xs tabular-nums",
643
645
  increased ? "text-success" : "text-destructive"
644
646
  ),
@@ -666,15 +668,15 @@ function AnalyticsBreakdownTable({ breakdowns }) {
666
668
  route: t("analytics.admin.dimensions.route"),
667
669
  landing: t("analytics.admin.dimensions.landing")
668
670
  };
669
- return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkIPYXT7MHjs.Tabs, { defaultValue: ANALYTICS_DIMENSIONS[0], children: [
670
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkIPYXT7MHjs.TabsList, { className: "max-md:w-full max-md:justify-start max-md:overflow-x-auto", children: ANALYTICS_DIMENSIONS.map((dimension) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkIPYXT7MHjs.TabsTrigger, { value: dimension, children: labels[dimension] }, dimension)) }),
671
- ANALYTICS_DIMENSIONS.map((dimension) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkIPYXT7MHjs.TabsContent, { value: dimension, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, BreakdownRows, { rows: _nullishCoalesce(breakdowns[dimension], () => ( [])) }) }, dimension))
671
+ return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkXQEYBESHjs.Tabs, { defaultValue: ANALYTICS_DIMENSIONS[0], children: [
672
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXQEYBESHjs.TabsList, { className: "max-md:w-full max-md:justify-start max-md:overflow-x-auto", children: ANALYTICS_DIMENSIONS.map((dimension) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXQEYBESHjs.TabsTrigger, { value: dimension, children: labels[dimension] }, dimension)) }),
673
+ ANALYTICS_DIMENSIONS.map((dimension) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXQEYBESHjs.TabsContent, { value: dimension, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, BreakdownRows, { rows: _nullishCoalesce(breakdowns[dimension], () => ( [])) }) }, dimension))
672
674
  ] });
673
675
  }
674
676
  _chunk7QVYU63Ejs.__name.call(void 0, AnalyticsBreakdownTable, "AnalyticsBreakdownTable");
675
677
  function BreakdownRows({ rows }) {
676
678
  const t = _nextintl.useTranslations.call(void 0, );
677
- const { decimal } = _chunkTPZS46IMjs.useUsageFormatters.call(void 0, );
679
+ const { decimal } = _chunkS332ZCIEjs.useUsageFormatters.call(void 0, );
678
680
  const sortedRows = _react.useMemo.call(void 0, () => [...rows].sort((a, b) => b.visitors - a.visitors), [rows]);
679
681
  if (sortedRows.length === 0) {
680
682
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "text-muted-foreground text-sm", children: t("analytics.admin.no_data") });
@@ -683,18 +685,18 @@ function BreakdownRows({ rows }) {
683
685
  // The package's <Table> wraps itself in an `overflow-x-clip` container, which
684
686
  // would swallow the overflow before this scroller ever saw it — hence the
685
687
  // child override. Wide tables must scroll, never widen the page.
686
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "overflow-x-auto [&_[data-slot=table-container]]:overflow-x-visible", children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkIPYXT7MHjs.Table, { children: [
687
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkIPYXT7MHjs.TableHeader, { children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkIPYXT7MHjs.TableRow, { children: [
688
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkIPYXT7MHjs.TableHead, { className: "text-xs font-medium", children: t("analytics.admin.columns.key") }),
689
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkIPYXT7MHjs.TableHead, { className: "text-end text-xs font-medium", children: t("analytics.admin.columns.visitors") }),
690
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkIPYXT7MHjs.TableHead, { className: "text-end text-xs font-medium", children: t("analytics.admin.columns.sessions") }),
691
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkIPYXT7MHjs.TableHead, { className: "text-end text-xs font-medium", children: t("analytics.admin.columns.page_views") })
688
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "overflow-x-auto [&_[data-slot=table-container]]:overflow-x-visible", children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkXQEYBESHjs.Table, { children: [
689
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXQEYBESHjs.TableHeader, { children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkXQEYBESHjs.TableRow, { children: [
690
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXQEYBESHjs.TableHead, { className: "text-xs font-medium", children: t("analytics.admin.columns.key") }),
691
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXQEYBESHjs.TableHead, { className: "text-end text-xs font-medium", children: t("analytics.admin.columns.visitors") }),
692
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXQEYBESHjs.TableHead, { className: "text-end text-xs font-medium", children: t("analytics.admin.columns.sessions") }),
693
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXQEYBESHjs.TableHead, { className: "text-end text-xs font-medium", children: t("analytics.admin.columns.page_views") })
692
694
  ] }) }),
693
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkIPYXT7MHjs.TableBody, { children: sortedRows.map((row) => /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkIPYXT7MHjs.TableRow, { "data-testid": `analytics-breakdown-row-${row.id}`, children: [
694
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkIPYXT7MHjs.TableCell, { className: "text-xs", children: row.key === OTHER_KEY ? t("analytics.admin.other") : row.key }),
695
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkIPYXT7MHjs.TableCell, { className: "text-end text-xs tabular-nums", children: decimal(row.visitors, 0) }),
696
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkIPYXT7MHjs.TableCell, { className: "text-end text-xs tabular-nums", children: decimal(row.sessions, 0) }),
697
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkIPYXT7MHjs.TableCell, { className: "text-end text-xs tabular-nums", children: decimal(row.pageViews, 0) })
695
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXQEYBESHjs.TableBody, { children: sortedRows.map((row) => /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkXQEYBESHjs.TableRow, { "data-testid": `analytics-breakdown-row-${row.id}`, children: [
696
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXQEYBESHjs.TableCell, { className: "text-xs", children: row.key === OTHER_KEY ? t("analytics.admin.other") : row.key }),
697
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXQEYBESHjs.TableCell, { className: "text-end text-xs tabular-nums", children: decimal(row.visitors, 0) }),
698
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXQEYBESHjs.TableCell, { className: "text-end text-xs tabular-nums", children: decimal(row.sessions, 0) }),
699
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXQEYBESHjs.TableCell, { className: "text-end text-xs tabular-nums", children: decimal(row.pageViews, 0) })
698
700
  ] }, row.id)) })
699
701
  ] }) })
700
702
  );
@@ -709,48 +711,48 @@ var VISITOR_SUFFIX_LENGTH = 6;
709
711
  function AnalyticsSessionsTable({ rows, sessionPageUrl, onLoadMore, hasMore }) {
710
712
  const t = _nextintl.useTranslations.call(void 0, );
711
713
  const locale = _nextintl.useLocale.call(void 0, );
712
- const generateUrl = _chunkIPYXT7MHjs.usePageUrlGenerator.call(void 0, );
713
- const { decimal } = _chunkTPZS46IMjs.useUsageFormatters.call(void 0, );
714
+ const generateUrl = _chunkXQEYBESHjs.usePageUrlGenerator.call(void 0, );
715
+ const { decimal } = _chunkS332ZCIEjs.useUsageFormatters.call(void 0, );
714
716
  const dateTime = _react.useMemo.call(void 0, () => new Intl.DateTimeFormat(locale, { dateStyle: "short", timeStyle: "short" }), [locale]);
715
717
  if (rows.length === 0) {
716
718
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "text-muted-foreground text-sm", children: t("analytics.admin.no_data") });
717
719
  }
718
720
  return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex flex-col gap-3", children: [
719
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "overflow-x-auto [&_[data-slot=table-container]]:overflow-x-visible", children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkIPYXT7MHjs.Table, { children: [
720
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkIPYXT7MHjs.TableHeader, { children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkIPYXT7MHjs.TableRow, { children: [
721
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkIPYXT7MHjs.TableHead, { className: "text-xs font-medium", children: t("analytics.admin.columns.started") }),
722
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkIPYXT7MHjs.TableHead, { className: "text-xs font-medium", children: t("analytics.admin.columns.visitor") }),
723
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkIPYXT7MHjs.TableHead, { className: "text-xs font-medium", children: t("analytics.admin.columns.source") }),
724
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkIPYXT7MHjs.TableHead, { className: "text-xs font-medium", children: t("analytics.admin.columns.landing") }),
725
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkIPYXT7MHjs.TableHead, { className: "text-end text-xs font-medium", children: t("analytics.admin.columns.pages") }),
726
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkIPYXT7MHjs.TableHead, { className: "text-xs font-medium", children: t("analytics.admin.columns.device") })
721
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "overflow-x-auto [&_[data-slot=table-container]]:overflow-x-visible", children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkXQEYBESHjs.Table, { children: [
722
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXQEYBESHjs.TableHeader, { children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkXQEYBESHjs.TableRow, { children: [
723
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXQEYBESHjs.TableHead, { className: "text-xs font-medium", children: t("analytics.admin.columns.started") }),
724
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXQEYBESHjs.TableHead, { className: "text-xs font-medium", children: t("analytics.admin.columns.visitor") }),
725
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXQEYBESHjs.TableHead, { className: "text-xs font-medium", children: t("analytics.admin.columns.source") }),
726
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXQEYBESHjs.TableHead, { className: "text-xs font-medium", children: t("analytics.admin.columns.landing") }),
727
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXQEYBESHjs.TableHead, { className: "text-end text-xs font-medium", children: t("analytics.admin.columns.pages") }),
728
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXQEYBESHjs.TableHead, { className: "text-xs font-medium", children: t("analytics.admin.columns.device") })
727
729
  ] }) }),
728
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkIPYXT7MHjs.TableBody, { children: rows.map((row) => {
730
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXQEYBESHjs.TableBody, { children: rows.map((row) => {
729
731
  const source = [_nullishCoalesce(row.utmSource, () => ( row.referrerHost)), row.utmMedium].filter(Boolean).join(" / ");
730
- return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkIPYXT7MHjs.TableRow, { "data-testid": `analytics-session-row-${row.id}`, children: [
731
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkIPYXT7MHjs.TableCell, { className: "text-xs tabular-nums", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
732
- _chunkIPYXT7MHjs.Link,
732
+ return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkXQEYBESHjs.TableRow, { "data-testid": `analytics-session-row-${row.id}`, children: [
733
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXQEYBESHjs.TableCell, { className: "text-xs tabular-nums", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
734
+ _chunkXQEYBESHjs.Link,
733
735
  {
734
736
  href: generateUrl({ page: sessionPageUrl, id: row.id }),
735
737
  "data-testid": `analytics-session-link-${row.id}`,
736
738
  children: dateTime.format(row.startedAt)
737
739
  }
738
740
  ) }),
739
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkIPYXT7MHjs.TableCell, { className: "text-xs", children: row.user ? /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: "flex flex-col", children: [
741
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXQEYBESHjs.TableCell, { className: "text-xs", children: row.user ? /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: "flex flex-col", children: [
740
742
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { children: row.user.name }),
741
743
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "text-muted-foreground text-xs", children: row.user.email })
742
744
  ] }) : /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: "flex items-center gap-2", children: [
743
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkIPYXT7MHjs.Badge, { variant: "softGray", children: t("analytics.admin.anonymous") }),
745
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXQEYBESHjs.Badge, { variant: "softGray", children: t("analytics.admin.anonymous") }),
744
746
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "text-muted-foreground text-xs tabular-nums", children: row.visitorId.slice(-VISITOR_SUFFIX_LENGTH) })
745
747
  ] }) }),
746
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkIPYXT7MHjs.TableCell, { className: "text-xs", children: source }),
747
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkIPYXT7MHjs.TableCell, { className: "text-xs", children: row.landingRoute }),
748
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkIPYXT7MHjs.TableCell, { className: "text-end text-xs tabular-nums", children: decimal(row.pageViews, 0) }),
749
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkIPYXT7MHjs.TableCell, { className: "text-muted-foreground text-xs", children: row.deviceType })
748
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXQEYBESHjs.TableCell, { className: "text-xs", children: source }),
749
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXQEYBESHjs.TableCell, { className: "text-xs", children: row.landingRoute }),
750
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXQEYBESHjs.TableCell, { className: "text-end text-xs tabular-nums", children: decimal(row.pageViews, 0) }),
751
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXQEYBESHjs.TableCell, { className: "text-muted-foreground text-xs", children: row.deviceType })
750
752
  ] }, row.id);
751
753
  }) })
752
754
  ] }) }),
753
- hasMore && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "flex justify-center", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkIPYXT7MHjs.Button, { type: "button", variant: "outline", size: "sm", onClick: onLoadMore, children: t("analytics.admin.load_more") }) })
755
+ hasMore && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "flex justify-center", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXQEYBESHjs.Button, { type: "button", variant: "outline", size: "sm", onClick: onLoadMore, children: t("analytics.admin.load_more") }) })
754
756
  ] });
755
757
  }
756
758
  _chunk7QVYU63Ejs.__name.call(void 0, AnalyticsSessionsTable, "AnalyticsSessionsTable");
@@ -782,7 +784,7 @@ var inferGranularity = /* @__PURE__ */ _chunk7QVYU63Ejs.__name.call(void 0, (buc
782
784
  }, "inferGranularity");
783
785
  function AnalyticsTimelineChart({ rows, className }) {
784
786
  const t = _nextintl.useTranslations.call(void 0, );
785
- const { compact, bucketDate, decimal } = _chunkTPZS46IMjs.useUsageFormatters.call(void 0, );
787
+ const { compact, bucketDate, decimal } = _chunkS332ZCIEjs.useUsageFormatters.call(void 0, );
786
788
  const { resolvedTheme } = _nextthemes.useTheme.call(void 0, );
787
789
  const mode = resolvedTheme === "dark" ? "dark" : "light";
788
790
  const chartData = _react.useMemo.call(void 0, () => {
@@ -817,7 +819,7 @@ function AnalyticsTimelineChart({ rows, className }) {
817
819
  // rtl-ok: deliberate LTR island (chart)
818
820
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className, dir: "ltr", children: [
819
821
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "sr-only", "data-testid": "analytics-timeline-data", children: JSON.stringify(chartData) }),
820
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkIPYXT7MHjs.ChartContainer, { config: chartConfig, className: "aspect-auto h-72 w-full", children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _recharts.BarChart, { accessibilityLayer: true, data: chartData, margin: { top: 8, right: 8, bottom: 0, left: 0 }, children: [
822
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXQEYBESHjs.ChartContainer, { config: chartConfig, className: "aspect-auto h-72 w-full", children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _recharts.BarChart, { accessibilityLayer: true, data: chartData, margin: { top: 8, right: 8, bottom: 0, left: 0 }, children: [
821
823
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _recharts.CartesianGrid, { vertical: false }),
822
824
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
823
825
  _recharts.XAxis,
@@ -841,10 +843,10 @@ function AnalyticsTimelineChart({ rows, className }) {
841
843
  }
842
844
  ),
843
845
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
844
- _chunkIPYXT7MHjs.ChartTooltip,
846
+ _chunkXQEYBESHjs.ChartTooltip,
845
847
  {
846
848
  content: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
847
- _chunkIPYXT7MHjs.ChartTooltipContent,
849
+ _chunkXQEYBESHjs.ChartTooltipContent,
848
850
  {
849
851
  labelFormatter: (value) => bucketDate(String(value), granularity),
850
852
  valueFormatter: (value) => decimal(Number(value), 0)
@@ -852,13 +854,13 @@ function AnalyticsTimelineChart({ rows, className }) {
852
854
  )
853
855
  }
854
856
  ),
855
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkIPYXT7MHjs.ChartLegend, { content: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkIPYXT7MHjs.ChartLegendContent, {}) }),
857
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXQEYBESHjs.ChartLegend, { content: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXQEYBESHjs.ChartLegendContent, {}) }),
856
858
  SERIES.map((series, index) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
857
859
  _recharts.Bar,
858
860
  {
859
861
  dataKey: series,
860
862
  maxBarSize: 28,
861
- fill: _chunkTPZS46IMjs.seriesColor.call(void 0, index, mode),
863
+ fill: _chunkS332ZCIEjs.seriesColor.call(void 0, index, mode),
862
864
  stroke: "var(--background)",
863
865
  strokeWidth: 2,
864
866
  radius: [4, 4, 0, 0]
@@ -887,25 +889,25 @@ function AnalyticsAdminContainer() {
887
889
  error
888
890
  } = useAnalyticsAdmin();
889
891
  if (error) {
890
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkIPYXT7MHjs.RoundPageContainer, { module: _chunkT3YQ47EFjs.Modules.AnalyticsSummary, fullWidth: true, forceHeader: true, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "p-4", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkIPYXT7MHjs.Card, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkIPYXT7MHjs.CardContent, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "text-destructive text-xs/relaxed", children: error }) }) }) }) });
892
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXQEYBESHjs.RoundPageContainer, { module: _chunkGSHMGL6Njs.Modules.AnalyticsSummary, fullWidth: true, forceHeader: true, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "p-4", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXQEYBESHjs.Card, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXQEYBESHjs.CardContent, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "text-destructive text-xs/relaxed", children: error }) }) }) }) });
891
893
  }
892
- if (isLoading) return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkIPYXT7MHjs.RoundPageContainer, { module: _chunkT3YQ47EFjs.Modules.AnalyticsSummary, fullWidth: true, forceHeader: true });
893
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkIPYXT7MHjs.RoundPageContainer, { module: _chunkT3YQ47EFjs.Modules.AnalyticsSummary, fullWidth: true, forceHeader: true, children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex w-full flex-col gap-4 p-4", children: [
894
+ if (isLoading) return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXQEYBESHjs.RoundPageContainer, { module: _chunkGSHMGL6Njs.Modules.AnalyticsSummary, fullWidth: true, forceHeader: true });
895
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXQEYBESHjs.RoundPageContainer, { module: _chunkGSHMGL6Njs.Modules.AnalyticsSummary, fullWidth: true, forceHeader: true, children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex w-full flex-col gap-4 p-4", children: [
894
896
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex flex-col gap-2", children: [
895
897
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, AnalyticsAdminTiles, { summary }),
896
898
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "text-muted-foreground text-xs", children: t("analytics.admin.tiles.summarised_note") })
897
899
  ] }),
898
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkIPYXT7MHjs.Card, { children: [
899
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkIPYXT7MHjs.CardHeader, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkIPYXT7MHjs.CardTitle, { children: t("analytics.admin.panels.over_time") }) }),
900
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkIPYXT7MHjs.CardContent, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, AnalyticsTimelineChart, { rows: timeline }) })
900
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkXQEYBESHjs.Card, { children: [
901
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXQEYBESHjs.CardHeader, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXQEYBESHjs.CardTitle, { children: t("analytics.admin.panels.over_time") }) }),
902
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXQEYBESHjs.CardContent, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, AnalyticsTimelineChart, { rows: timeline }) })
901
903
  ] }),
902
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkIPYXT7MHjs.Card, { children: [
903
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkIPYXT7MHjs.CardHeader, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkIPYXT7MHjs.CardTitle, { children: t("analytics.admin.panels.breakdown") }) }),
904
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkIPYXT7MHjs.CardContent, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, AnalyticsBreakdownTable, { breakdowns }) })
904
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkXQEYBESHjs.Card, { children: [
905
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXQEYBESHjs.CardHeader, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXQEYBESHjs.CardTitle, { children: t("analytics.admin.panels.breakdown") }) }),
906
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXQEYBESHjs.CardContent, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, AnalyticsBreakdownTable, { breakdowns }) })
905
907
  ] }),
906
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkIPYXT7MHjs.Card, { children: [
907
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkIPYXT7MHjs.CardHeader, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkIPYXT7MHjs.CardTitle, { children: t("analytics.admin.panels.sessions") }) }),
908
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkIPYXT7MHjs.CardContent, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
908
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkXQEYBESHjs.Card, { children: [
909
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXQEYBESHjs.CardHeader, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXQEYBESHjs.CardTitle, { children: t("analytics.admin.panels.sessions") }) }),
910
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXQEYBESHjs.CardContent, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
909
911
  AnalyticsSessionsTable,
910
912
  {
911
913
  rows: sessions,
@@ -928,7 +930,7 @@ var OTHER_SESSIONS_WINDOW_DAYS = 395;
928
930
  function AnalyticsJourneyContainer({ sessionId, pageUrl = ANALYTICS_ADMIN_PAGE_URL }) {
929
931
  const t = _nextintl.useTranslations.call(void 0, );
930
932
  const locale = _nextintl.useLocale.call(void 0, );
931
- const generateUrl = _chunkIPYXT7MHjs.usePageUrlGenerator.call(void 0, );
933
+ const generateUrl = _chunkXQEYBESHjs.usePageUrlGenerator.call(void 0, );
932
934
  const [session, setSession] = _react.useState.call(void 0, void 0);
933
935
  const [pageViews, setPageViews] = _react.useState.call(void 0, []);
934
936
  const [otherSessions, setOtherSessions] = _react.useState.call(void 0, []);
@@ -984,26 +986,26 @@ function AnalyticsJourneyContainer({ sessionId, pageUrl = ANALYTICS_ADMIN_PAGE_U
984
986
  const title = { type: t("analytics.admin.panels.journey") };
985
987
  const renderBody = /* @__PURE__ */ _chunk7QVYU63Ejs.__name.call(void 0, () => {
986
988
  if (error) {
987
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkIPYXT7MHjs.RoundPageContainer, { module: _chunkT3YQ47EFjs.Modules.AnalyticsSession, fullWidth: true, forceHeader: true, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "p-4", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkIPYXT7MHjs.Card, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkIPYXT7MHjs.CardContent, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "text-destructive text-xs/relaxed", children: error }) }) }) }) });
989
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXQEYBESHjs.RoundPageContainer, { module: _chunkGSHMGL6Njs.Modules.AnalyticsSession, fullWidth: true, forceHeader: true, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "p-4", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXQEYBESHjs.Card, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXQEYBESHjs.CardContent, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "text-destructive text-xs/relaxed", children: error }) }) }) }) });
988
990
  }
989
- if (isLoading || !session) return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkIPYXT7MHjs.RoundPageContainer, { module: _chunkT3YQ47EFjs.Modules.AnalyticsSession, fullWidth: true, forceHeader: true });
991
+ if (isLoading || !session) return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXQEYBESHjs.RoundPageContainer, { module: _chunkGSHMGL6Njs.Modules.AnalyticsSession, fullWidth: true, forceHeader: true });
990
992
  const source = [_nullishCoalesce(session.utmSource, () => ( session.referrerHost)), session.utmMedium, session.utmCampaign].filter(Boolean).join(" / ");
991
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkIPYXT7MHjs.RoundPageContainer, { module: _chunkT3YQ47EFjs.Modules.AnalyticsSession, fullWidth: true, forceHeader: true, children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex w-full flex-col gap-4 p-4", children: [
992
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkIPYXT7MHjs.Card, { "data-testid": "analytics-journey-attribution", children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkIPYXT7MHjs.CardContent, { className: "flex flex-col gap-3", children: [
993
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXQEYBESHjs.RoundPageContainer, { module: _chunkGSHMGL6Njs.Modules.AnalyticsSession, fullWidth: true, forceHeader: true, children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex w-full flex-col gap-4 p-4", children: [
994
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXQEYBESHjs.Card, { "data-testid": "analytics-journey-attribution", children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkXQEYBESHjs.CardContent, { className: "flex flex-col gap-3", children: [
993
995
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex flex-wrap items-center gap-2", children: [
994
996
  session.user ? /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: "flex flex-col", children: [
995
997
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "text-sm", children: session.user.name }),
996
998
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "text-muted-foreground text-xs", children: session.user.email })
997
- ] }) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkIPYXT7MHjs.Badge, { variant: "softGray", children: t("analytics.admin.anonymous") }),
998
- session.consented ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkIPYXT7MHjs.Badge, { variant: "softGreen", children: t("analytics.admin.consented") }) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkIPYXT7MHjs.Badge, { variant: "softGray", children: t("analytics.admin.not_consented") })
999
+ ] }) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXQEYBESHjs.Badge, { variant: "softGray", children: t("analytics.admin.anonymous") }),
1000
+ session.consented ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXQEYBESHjs.Badge, { variant: "softGreen", children: t("analytics.admin.consented") }) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXQEYBESHjs.Badge, { variant: "softGray", children: t("analytics.admin.not_consented") })
999
1001
  ] }),
1000
1002
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "grid gap-3 sm:grid-cols-3", children: [
1001
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkIPYXT7MHjs.DetailField, { label: t("analytics.admin.columns.started"), value: dateTime.format(session.startedAt) }),
1002
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkIPYXT7MHjs.DetailField, { label: t("analytics.admin.columns.source"), value: source }),
1003
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkIPYXT7MHjs.DetailField, { label: t("analytics.admin.columns.landing"), value: session.landingRoute }),
1004
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkIPYXT7MHjs.DetailField, { label: t("analytics.admin.columns.device"), value: session.deviceType }),
1003
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXQEYBESHjs.DetailField, { label: t("analytics.admin.columns.started"), value: dateTime.format(session.startedAt) }),
1004
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXQEYBESHjs.DetailField, { label: t("analytics.admin.columns.source"), value: source }),
1005
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXQEYBESHjs.DetailField, { label: t("analytics.admin.columns.landing"), value: session.landingRoute }),
1006
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXQEYBESHjs.DetailField, { label: t("analytics.admin.columns.device"), value: session.deviceType }),
1005
1007
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1006
- _chunkIPYXT7MHjs.DetailField,
1008
+ _chunkXQEYBESHjs.DetailField,
1007
1009
  {
1008
1010
  label: t("analytics.admin.columns.visitor"),
1009
1011
  value: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "tabular-nums", children: session.visitorId })
@@ -1011,31 +1013,31 @@ function AnalyticsJourneyContainer({ sessionId, pageUrl = ANALYTICS_ADMIN_PAGE_U
1011
1013
  )
1012
1014
  ] })
1013
1015
  ] }) }),
1014
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkIPYXT7MHjs.Card, { children: [
1015
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkIPYXT7MHjs.CardHeader, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkIPYXT7MHjs.CardTitle, { children: t("analytics.admin.columns.pages") }) }),
1016
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkIPYXT7MHjs.CardContent, { children: pageViews.length === 0 ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "text-muted-foreground text-sm", children: t("analytics.admin.no_data") }) : (
1016
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkXQEYBESHjs.Card, { children: [
1017
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXQEYBESHjs.CardHeader, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXQEYBESHjs.CardTitle, { children: t("analytics.admin.columns.pages") }) }),
1018
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXQEYBESHjs.CardContent, { children: pageViews.length === 0 ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "text-muted-foreground text-sm", children: t("analytics.admin.no_data") }) : (
1017
1019
  // The package's <Table> wraps itself in an `overflow-x-clip`
1018
1020
  // container — hence the child override, so wide rows scroll.
1019
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "overflow-x-auto [&_[data-slot=table-container]]:overflow-x-visible", children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkIPYXT7MHjs.Table, { children: [
1020
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkIPYXT7MHjs.TableHeader, { children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkIPYXT7MHjs.TableRow, { children: [
1021
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkIPYXT7MHjs.TableHead, { className: "text-xs font-medium", children: t("analytics.admin.columns.time") }),
1022
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkIPYXT7MHjs.TableHead, { className: "text-end text-xs font-medium", children: t("analytics.admin.columns.gap") }),
1023
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkIPYXT7MHjs.TableHead, { className: "text-xs font-medium", children: t("analytics.admin.columns.path") })
1021
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "overflow-x-auto [&_[data-slot=table-container]]:overflow-x-visible", children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkXQEYBESHjs.Table, { children: [
1022
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXQEYBESHjs.TableHeader, { children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkXQEYBESHjs.TableRow, { children: [
1023
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXQEYBESHjs.TableHead, { className: "text-xs font-medium", children: t("analytics.admin.columns.time") }),
1024
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXQEYBESHjs.TableHead, { className: "text-end text-xs font-medium", children: t("analytics.admin.columns.gap") }),
1025
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXQEYBESHjs.TableHead, { className: "text-xs font-medium", children: t("analytics.admin.columns.path") })
1024
1026
  ] }) }),
1025
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkIPYXT7MHjs.TableBody, { children: pageViews.map((pageView, index) => {
1027
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXQEYBESHjs.TableBody, { children: pageViews.map((pageView, index) => {
1026
1028
  const previous = index > 0 ? pageViews[index - 1] : void 0;
1027
- return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkIPYXT7MHjs.TableRow, { "data-testid": `analytics-pageview-row-${pageView.id}`, children: [
1028
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkIPYXT7MHjs.TableCell, { className: "text-xs tabular-nums", children: dateTime.format(pageView.createdAt) }),
1029
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkIPYXT7MHjs.TableCell, { className: "text-end text-xs tabular-nums", children: previous ? formatGap(pageView.createdAt.getTime() - previous.createdAt.getTime()) : "\u2014" }),
1030
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkIPYXT7MHjs.TableCell, { className: "text-xs", children: pageView.path })
1029
+ return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkXQEYBESHjs.TableRow, { "data-testid": `analytics-pageview-row-${pageView.id}`, children: [
1030
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXQEYBESHjs.TableCell, { className: "text-xs tabular-nums", children: dateTime.format(pageView.createdAt) }),
1031
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXQEYBESHjs.TableCell, { className: "text-end text-xs tabular-nums", children: previous ? formatGap(pageView.createdAt.getTime() - previous.createdAt.getTime()) : "\u2014" }),
1032
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXQEYBESHjs.TableCell, { className: "text-xs", children: pageView.path })
1031
1033
  ] }, pageView.id);
1032
1034
  }) })
1033
1035
  ] }) })
1034
1036
  ) })
1035
1037
  ] }),
1036
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkIPYXT7MHjs.Card, { children: [
1037
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkIPYXT7MHjs.CardHeader, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkIPYXT7MHjs.CardTitle, { children: t("analytics.admin.panels.other_sessions") }) }),
1038
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkIPYXT7MHjs.CardContent, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1038
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkXQEYBESHjs.Card, { children: [
1039
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXQEYBESHjs.CardHeader, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXQEYBESHjs.CardTitle, { children: t("analytics.admin.panels.other_sessions") }) }),
1040
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXQEYBESHjs.CardContent, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1039
1041
  AnalyticsSessionsTable,
1040
1042
  {
1041
1043
  rows: otherSessions,
@@ -1047,7 +1049,7 @@ function AnalyticsJourneyContainer({ sessionId, pageUrl = ANALYTICS_ADMIN_PAGE_U
1047
1049
  ] })
1048
1050
  ] }) });
1049
1051
  }, "renderBody");
1050
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkIPYXT7MHjs.SharedProvider, { value: { breadcrumbs: breadcrumb, title }, children: renderBody() });
1052
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXQEYBESHjs.SharedProvider, { value: { breadcrumbs: breadcrumb, title }, children: renderBody() });
1051
1053
  }
1052
1054
  _chunk7QVYU63Ejs.__name.call(void 0, AnalyticsJourneyContainer, "AnalyticsJourneyContainer");
1053
1055
  function unit(locale, name, value) {
@@ -1155,5 +1157,5 @@ var ANALYTICS_ADMIN_I18N_KEYS = [
1155
1157
 
1156
1158
 
1157
1159
 
1158
- exports.ANALYTICS_ADMIN_I18N_KEYS = ANALYTICS_ADMIN_I18N_KEYS; exports.ANALYTICS_DIMENSIONS = ANALYTICS_DIMENSIONS; exports.ANALYTICS_GRANULARITIES = ANALYTICS_GRANULARITIES; exports.ANALYTICS_SECTIONS = ANALYTICS_SECTIONS; exports.AnalyticsAdminContainer = AnalyticsAdminContainer; exports.AnalyticsAdminFilterBar = AnalyticsAdminFilterBar; exports.AnalyticsAdminPageContainer = AnalyticsAdminPageContainer; exports.AnalyticsAdminProvider = AnalyticsAdminProvider; exports.AnalyticsAdminService = AnalyticsAdminService; exports.AnalyticsAdminTiles = AnalyticsAdminTiles; exports.AnalyticsBreakdown = _chunkT3YQ47EFjs.AnalyticsBreakdown; exports.AnalyticsBreakdownTable = AnalyticsBreakdownTable; exports.AnalyticsEvent = _chunkT3YQ47EFjs.AnalyticsEvent; exports.AnalyticsJourneyContainer = AnalyticsJourneyContainer; exports.AnalyticsJourneyPageContainer = AnalyticsJourneyPageContainer; exports.AnalyticsPageView = _chunkT3YQ47EFjs.AnalyticsPageView; exports.AnalyticsService = AnalyticsService; exports.AnalyticsSession = _chunkT3YQ47EFjs.AnalyticsSession; exports.AnalyticsSessionsTable = AnalyticsSessionsTable; exports.AnalyticsSummary = _chunkT3YQ47EFjs.AnalyticsSummary; exports.AnalyticsTimeline = _chunkT3YQ47EFjs.AnalyticsTimeline; exports.AnalyticsTimelineChart = AnalyticsTimelineChart; exports.AnalyticsTracker = AnalyticsTracker; exports.analyticsModules = _chunkT3YQ47EFjs.analyticsModules; exports.useAnalyticsAdmin = useAnalyticsAdmin;
1160
+ exports.ANALYTICS_ADMIN_I18N_KEYS = ANALYTICS_ADMIN_I18N_KEYS; exports.ANALYTICS_DIMENSIONS = ANALYTICS_DIMENSIONS; exports.ANALYTICS_GRANULARITIES = ANALYTICS_GRANULARITIES; exports.ANALYTICS_SECTIONS = ANALYTICS_SECTIONS; exports.AnalyticsAdminContainer = AnalyticsAdminContainer; exports.AnalyticsAdminFilterBar = AnalyticsAdminFilterBar; exports.AnalyticsAdminPageContainer = AnalyticsAdminPageContainer; exports.AnalyticsAdminProvider = AnalyticsAdminProvider; exports.AnalyticsAdminService = AnalyticsAdminService; exports.AnalyticsAdminTiles = AnalyticsAdminTiles; exports.AnalyticsBreakdown = _chunkGSHMGL6Njs.AnalyticsBreakdown; exports.AnalyticsBreakdownTable = AnalyticsBreakdownTable; exports.AnalyticsEvent = _chunkGSHMGL6Njs.AnalyticsEvent; exports.AnalyticsJourneyContainer = AnalyticsJourneyContainer; exports.AnalyticsJourneyPageContainer = AnalyticsJourneyPageContainer; exports.AnalyticsPageView = _chunkGSHMGL6Njs.AnalyticsPageView; exports.AnalyticsService = AnalyticsService; exports.AnalyticsSession = _chunkGSHMGL6Njs.AnalyticsSession; exports.AnalyticsSessionsTable = AnalyticsSessionsTable; exports.AnalyticsSummary = _chunkGSHMGL6Njs.AnalyticsSummary; exports.AnalyticsTimeline = _chunkGSHMGL6Njs.AnalyticsTimeline; exports.AnalyticsTimelineChart = AnalyticsTimelineChart; exports.AnalyticsTracker = AnalyticsTracker; exports.analyticsModules = _chunkGSHMGL6Njs.analyticsModules; exports.useAnalyticsAdmin = useAnalyticsAdmin;
1159
1161
  //# sourceMappingURL=index.js.map