@carlonicora/nextjs-jsonapi 6.6.0 → 6.7.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.
- package/dist/{BlockNoteEditor-E4V7AEG2.js → BlockNoteEditor-BSFR2GPI.js} +19 -19
- package/dist/{BlockNoteEditor-E4V7AEG2.js.map → BlockNoteEditor-BSFR2GPI.js.map} +1 -1
- package/dist/{BlockNoteEditor-MWGVWNSE.mjs → BlockNoteEditor-HWJBQAKG.mjs} +4 -4
- package/dist/{BlockNoteViewer-VNU7WVN5.mjs → BlockNoteViewer-IIBUU7J7.mjs} +2 -2
- package/dist/{BlockNoteViewer-LGRKM7OA.js → BlockNoteViewer-NHS6CCMS.js} +3 -3
- package/dist/{BlockNoteViewer-LGRKM7OA.js.map → BlockNoteViewer-NHS6CCMS.js.map} +1 -1
- package/dist/{auth.interface-D5606g19.d.ts → auth.interface-B4tRE0k0.d.ts} +2 -0
- package/dist/{auth.interface-tsOuc0Fi.d.mts → auth.interface-DuX87BZ3.d.mts} +2 -0
- package/dist/billing/index.js +492 -492
- package/dist/billing/index.mjs +3 -3
- package/dist/{chunk-AMN2XDN5.js → chunk-3HOJNAZB.js} +8 -8
- package/dist/{chunk-AMN2XDN5.js.map → chunk-3HOJNAZB.js.map} +1 -1
- package/dist/{chunk-OJAIKQR2.js → chunk-6KE7UBYY.js} +427 -233
- package/dist/chunk-6KE7UBYY.js.map +1 -0
- package/dist/{chunk-F2MZ7GY6.js → chunk-73XWQA6U.js} +4 -4
- package/dist/{chunk-F2MZ7GY6.js.map → chunk-73XWQA6U.js.map} +1 -1
- package/dist/{chunk-IQ2XYAB5.mjs → chunk-EC4PQ44E.mjs} +2 -2
- package/dist/{chunk-RSMBRI3E.mjs → chunk-OYRJ32KR.mjs} +2 -2
- package/dist/{chunk-R2XBVIO5.js → chunk-PCCUPEBU.js} +1066 -873
- package/dist/chunk-PCCUPEBU.js.map +1 -0
- package/dist/{chunk-AEVLFZRK.js → chunk-PYDDFFQM.js} +3 -3
- package/dist/{chunk-AEVLFZRK.js.map → chunk-PYDDFFQM.js.map} +1 -1
- package/dist/{chunk-7GB5MR77.mjs → chunk-QNIWATQD.mjs} +195 -1
- package/dist/chunk-QNIWATQD.mjs.map +1 -0
- package/dist/{chunk-IDV534SJ.mjs → chunk-S4NKWMX5.mjs} +3729 -3536
- package/dist/chunk-S4NKWMX5.mjs.map +1 -0
- package/dist/{chunk-PDS57QPD.mjs → chunk-XYKDBOCE.mjs} +2 -2
- package/dist/client/index.js +4 -4
- package/dist/client/index.mjs +3 -3
- package/dist/components/index.d.mts +39 -4
- package/dist/components/index.d.ts +39 -4
- package/dist/components/index.js +12 -4
- package/dist/components/index.js.map +1 -1
- package/dist/components/index.mjs +11 -3
- package/dist/contexts/index.js +4 -4
- package/dist/contexts/index.mjs +3 -3
- package/dist/core/index.d.mts +115 -5
- package/dist/core/index.d.ts +115 -5
- package/dist/core/index.js +14 -2
- package/dist/core/index.js.map +1 -1
- package/dist/core/index.mjs +13 -1
- package/dist/email-automations/index.js +92 -92
- package/dist/email-automations/index.mjs +3 -3
- package/dist/features/analytics/index.js +121 -121
- package/dist/features/analytics/index.mjs +4 -4
- package/dist/features/analytics/server.js +4 -4
- package/dist/features/analytics/server.mjs +2 -2
- package/dist/features/blog/index.js +150 -150
- package/dist/features/blog/index.mjs +3 -3
- package/dist/features/blog/server.js +16 -16
- package/dist/features/blog/server.mjs +1 -1
- package/dist/features/help/index.js +37 -37
- package/dist/features/help/index.mjs +3 -3
- package/dist/features/tokenusage/index.js +127 -127
- package/dist/features/tokenusage/index.mjs +4 -4
- package/dist/index.d.mts +3 -3
- package/dist/index.d.ts +3 -3
- package/dist/index.js +15 -3
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +14 -2
- package/dist/{s3.service-BNBD9YTg.d.mts → s3.service-CRGJbO-6.d.mts} +1 -1
- package/dist/{s3.service-Da7C2gtt.d.ts → s3.service-DZG-VyLY.d.ts} +1 -1
- package/dist/server/index.d.mts +2 -2
- package/dist/server/index.d.ts +2 -2
- package/dist/server/index.js +3 -3
- package/dist/server/index.mjs +2 -2
- package/messages/en.json +24 -0
- package/messages/it.json +24 -0
- package/package.json +1 -1
- package/src/components/index.ts +1 -0
- package/src/core/index.ts +5 -0
- package/src/core/registry/ModuleRegistry.ts +13 -0
- package/src/features/account-deletion/account-deletion.module.ts +13 -0
- package/src/features/account-deletion/components/AccountDeletionAdminTrigger.tsx +183 -0
- package/src/features/account-deletion/components/AccountDeletionCancelledNotice.tsx +51 -0
- package/src/features/account-deletion/components/AccountDeletionKeepContainer.tsx +74 -0
- package/src/features/account-deletion/components/index.ts +3 -0
- package/src/features/account-deletion/data/__tests__/AccountDeletion.spec.ts +89 -0
- package/src/features/account-deletion/data/account-deletion.interface.ts +22 -0
- package/src/features/account-deletion/data/account-deletion.service.ts +69 -0
- package/src/features/account-deletion/data/account-deletion.ts +90 -0
- package/src/features/account-deletion/data/index.ts +3 -0
- package/src/features/account-deletion/index.ts +4 -0
- package/src/features/account-deletion/utils/__tests__/account-deletion-notice.spec.ts +40 -0
- package/src/features/account-deletion/utils/account-deletion-notice.ts +27 -0
- package/src/features/account-deletion/utils/index.ts +1 -0
- package/src/features/auth/components/forms/Cookies.tsx +3 -0
- package/src/features/auth/components/forms/TwoFactorChallenge.tsx +2 -0
- package/src/features/auth/data/__tests__/auth.spec.ts +36 -0
- package/src/features/auth/data/auth.interface.ts +2 -0
- package/src/features/auth/data/auth.service.ts +4 -0
- package/src/features/auth/data/auth.ts +7 -0
- package/src/features/user/contexts/UserContext.tsx +8 -0
- package/dist/chunk-7GB5MR77.mjs.map +0 -1
- package/dist/chunk-IDV534SJ.mjs.map +0 -1
- package/dist/chunk-OJAIKQR2.js.map +0 -1
- package/dist/chunk-R2XBVIO5.js.map +0 -1
- /package/dist/{BlockNoteEditor-MWGVWNSE.mjs.map → BlockNoteEditor-HWJBQAKG.mjs.map} +0 -0
- /package/dist/{BlockNoteViewer-VNU7WVN5.mjs.map → BlockNoteViewer-IIBUU7J7.mjs.map} +0 -0
- /package/dist/{chunk-IQ2XYAB5.mjs.map → chunk-EC4PQ44E.mjs.map} +0 -0
- /package/dist/{chunk-RSMBRI3E.mjs.map → chunk-OYRJ32KR.mjs.map} +0 -0
- /package/dist/{chunk-PDS57QPD.mjs.map → chunk-XYKDBOCE.mjs.map} +0 -0
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
|
|
4
4
|
|
|
5
5
|
|
|
6
|
-
var
|
|
6
|
+
var _chunkPYDDFFQMjs = require('../../chunk-PYDDFFQM.js');
|
|
7
7
|
|
|
8
8
|
|
|
9
9
|
|
|
@@ -33,8 +33,8 @@ var _chunkAEVLFZRKjs = require('../../chunk-AEVLFZRK.js');
|
|
|
33
33
|
|
|
34
34
|
|
|
35
35
|
|
|
36
|
-
var
|
|
37
|
-
require('../../chunk-
|
|
36
|
+
var _chunkPCCUPEBUjs = require('../../chunk-PCCUPEBU.js');
|
|
37
|
+
require('../../chunk-3HOJNAZB.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
|
|
51
|
+
var _chunk6KE7UBYYjs = require('../../chunk-6KE7UBYY.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
|
|
66
|
+
var AnalyticsService = class extends _chunk6KE7UBYYjs.AbstractService {
|
|
67
67
|
static {
|
|
68
68
|
_chunk7QVYU63Ejs.__name.call(void 0, this, "AnalyticsService");
|
|
69
69
|
}
|
|
@@ -75,9 +75,9 @@ var AnalyticsService = class extends _chunkOJAIKQR2js.AbstractService {
|
|
|
75
75
|
static async track(input) {
|
|
76
76
|
try {
|
|
77
77
|
await this.callApi({
|
|
78
|
-
type:
|
|
78
|
+
type: _chunk6KE7UBYYjs.Modules.AnalyticsEvent,
|
|
79
79
|
method: "POST" /* POST */,
|
|
80
|
-
endpoint: new (0,
|
|
80
|
+
endpoint: new (0, _chunk6KE7UBYYjs.EndpointCreator)({ endpoint: _chunk6KE7UBYYjs.Modules.AnalyticsEvent }).generate(),
|
|
81
81
|
input,
|
|
82
82
|
suppressGlobalError: true
|
|
83
83
|
});
|
|
@@ -226,7 +226,7 @@ function AnalyticsAdminFilterBar({ section, granularity, onChange }) {
|
|
|
226
226
|
};
|
|
227
227
|
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex flex-wrap items-center gap-2", children: [
|
|
228
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,
|
|
229
|
-
|
|
229
|
+
_chunkPCCUPEBUjs.DateRangeSelector,
|
|
230
230
|
{
|
|
231
231
|
onDateChange: (range) => {
|
|
232
232
|
if (!_optionalChain([range, 'optionalAccess', _ => _.from]) || !_optionalChain([range, 'optionalAccess', _2 => _2.to])) return;
|
|
@@ -270,13 +270,13 @@ function Segmented({
|
|
|
270
270
|
children: options.map((option) => {
|
|
271
271
|
const selected = option.value === value;
|
|
272
272
|
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
273
|
-
|
|
273
|
+
_chunkPCCUPEBUjs.Button,
|
|
274
274
|
{
|
|
275
275
|
type: "button",
|
|
276
276
|
size: "sm",
|
|
277
277
|
variant: selected ? "default" : "ghost",
|
|
278
278
|
"aria-pressed": selected,
|
|
279
|
-
className:
|
|
279
|
+
className: _chunk6KE7UBYYjs.cn.call(void 0, !selected && "text-muted-foreground"),
|
|
280
280
|
onClick: () => onSelect(option.value),
|
|
281
281
|
children: option.label
|
|
282
282
|
},
|
|
@@ -296,45 +296,45 @@ function withFilters(endpoint, filters) {
|
|
|
296
296
|
return endpoint;
|
|
297
297
|
}
|
|
298
298
|
_chunk7QVYU63Ejs.__name.call(void 0, withFilters, "withFilters");
|
|
299
|
-
var AnalyticsAdminService = class extends
|
|
299
|
+
var AnalyticsAdminService = class extends _chunk6KE7UBYYjs.AbstractService {
|
|
300
300
|
static {
|
|
301
301
|
_chunk7QVYU63Ejs.__name.call(void 0, this, "AnalyticsAdminService");
|
|
302
302
|
}
|
|
303
303
|
/** Headline tiles: one row per window (current, previous). */
|
|
304
304
|
static async getSummary(filters) {
|
|
305
|
-
const endpoint = withFilters(new (0,
|
|
305
|
+
const endpoint = withFilters(new (0, _chunk6KE7UBYYjs.EndpointCreator)({ endpoint: _chunk6KE7UBYYjs.Modules.AnalyticsSummary }), filters);
|
|
306
306
|
return this.callApi({
|
|
307
|
-
type:
|
|
307
|
+
type: _chunk6KE7UBYYjs.Modules.AnalyticsSummary,
|
|
308
308
|
method: "GET" /* GET */,
|
|
309
309
|
endpoint: endpoint.generate()
|
|
310
310
|
});
|
|
311
311
|
}
|
|
312
312
|
static async getTimeline(params) {
|
|
313
|
-
const endpoint = withFilters(new (0,
|
|
313
|
+
const endpoint = withFilters(new (0, _chunk6KE7UBYYjs.EndpointCreator)({ endpoint: _chunk6KE7UBYYjs.Modules.AnalyticsTimeline }), params);
|
|
314
314
|
endpoint.addAdditionalParam("granularity", params.granularity);
|
|
315
315
|
return this.callApi({
|
|
316
|
-
type:
|
|
316
|
+
type: _chunk6KE7UBYYjs.Modules.AnalyticsTimeline,
|
|
317
317
|
method: "GET" /* GET */,
|
|
318
318
|
endpoint: endpoint.generate()
|
|
319
319
|
});
|
|
320
320
|
}
|
|
321
321
|
static async getBreakdown(params) {
|
|
322
|
-
const endpoint = withFilters(new (0,
|
|
322
|
+
const endpoint = withFilters(new (0, _chunk6KE7UBYYjs.EndpointCreator)({ endpoint: _chunk6KE7UBYYjs.Modules.AnalyticsBreakdown }), params);
|
|
323
323
|
endpoint.addAdditionalParam("dimension", params.dimension);
|
|
324
324
|
if (params.limit !== void 0) endpoint.addAdditionalParam("limit", String(params.limit));
|
|
325
325
|
return this.callApi({
|
|
326
|
-
type:
|
|
326
|
+
type: _chunk6KE7UBYYjs.Modules.AnalyticsBreakdown,
|
|
327
327
|
method: "GET" /* GET */,
|
|
328
328
|
endpoint: endpoint.generate()
|
|
329
329
|
});
|
|
330
330
|
}
|
|
331
331
|
/** Newest sessions first, cursor-paginated through `next`. */
|
|
332
332
|
static async getSessions(params) {
|
|
333
|
-
const endpoint = withFilters(new (0,
|
|
333
|
+
const endpoint = withFilters(new (0, _chunk6KE7UBYYjs.EndpointCreator)({ endpoint: _chunk6KE7UBYYjs.Modules.AnalyticsSession }), params);
|
|
334
334
|
if (params.visitorId) endpoint.addAdditionalParam("visitorId", params.visitorId);
|
|
335
335
|
if (params.userId) endpoint.addAdditionalParam("userId", params.userId);
|
|
336
336
|
return this.callApi({
|
|
337
|
-
type:
|
|
337
|
+
type: _chunk6KE7UBYYjs.Modules.AnalyticsSession,
|
|
338
338
|
method: "GET" /* GET */,
|
|
339
339
|
endpoint: endpoint.generate(),
|
|
340
340
|
next: params.next
|
|
@@ -342,20 +342,20 @@ var AnalyticsAdminService = class extends _chunkOJAIKQR2js.AbstractService {
|
|
|
342
342
|
}
|
|
343
343
|
static async getSession(params) {
|
|
344
344
|
return this.callApi({
|
|
345
|
-
type:
|
|
345
|
+
type: _chunk6KE7UBYYjs.Modules.AnalyticsSession,
|
|
346
346
|
method: "GET" /* GET */,
|
|
347
|
-
endpoint: new (0,
|
|
347
|
+
endpoint: new (0, _chunk6KE7UBYYjs.EndpointCreator)({ endpoint: _chunk6KE7UBYYjs.Modules.AnalyticsSession, id: params.id }).generate()
|
|
348
348
|
});
|
|
349
349
|
}
|
|
350
350
|
/** The journey: every page view of one session, oldest first. */
|
|
351
351
|
static async getSessionPageViews(params) {
|
|
352
352
|
return this.callApi({
|
|
353
|
-
type:
|
|
353
|
+
type: _chunk6KE7UBYYjs.Modules.AnalyticsPageView,
|
|
354
354
|
method: "GET" /* GET */,
|
|
355
|
-
endpoint: new (0,
|
|
356
|
-
endpoint:
|
|
355
|
+
endpoint: new (0, _chunk6KE7UBYYjs.EndpointCreator)({
|
|
356
|
+
endpoint: _chunk6KE7UBYYjs.Modules.AnalyticsSession,
|
|
357
357
|
id: params.sessionId,
|
|
358
|
-
childEndpoint:
|
|
358
|
+
childEndpoint: _chunk6KE7UBYYjs.Modules.AnalyticsPageView
|
|
359
359
|
}).generate()
|
|
360
360
|
});
|
|
361
361
|
}
|
|
@@ -451,7 +451,7 @@ var AnalyticsAdminProvider = /* @__PURE__ */ _chunk7QVYU63Ejs.__name.call(void 0
|
|
|
451
451
|
const sessionsNext = {};
|
|
452
452
|
try {
|
|
453
453
|
const nextSessions = await AnalyticsAdminService.next({
|
|
454
|
-
type:
|
|
454
|
+
type: _chunk6KE7UBYYjs.Modules.AnalyticsSession,
|
|
455
455
|
endpoint: sessionsNextPage,
|
|
456
456
|
next: sessionsNext
|
|
457
457
|
});
|
|
@@ -506,7 +506,7 @@ var AnalyticsAdminProvider = /* @__PURE__ */ _chunk7QVYU63Ejs.__name.call(void 0
|
|
|
506
506
|
error
|
|
507
507
|
]
|
|
508
508
|
);
|
|
509
|
-
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
509
|
+
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkPCCUPEBUjs.SharedProvider, { value: { breadcrumbs: breadcrumb(), title: title() }, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, AnalyticsAdminContext.Provider, { value: contextValue, children }) });
|
|
510
510
|
}, "AnalyticsAdminProvider");
|
|
511
511
|
var useAnalyticsAdmin = /* @__PURE__ */ _chunk7QVYU63Ejs.__name.call(void 0, () => {
|
|
512
512
|
const ctx = _react.useContext.call(void 0, AnalyticsAdminContext);
|
|
@@ -526,7 +526,7 @@ var _lucidereact = require('lucide-react');
|
|
|
526
526
|
var ZERO = { visitors: 0, sessions: 0, pageViews: 0, pagesPerSession: 0, consentShare: 0 };
|
|
527
527
|
function AnalyticsAdminTiles({ summary }) {
|
|
528
528
|
const t = _nextintl.useTranslations.call(void 0, );
|
|
529
|
-
const { decimal } =
|
|
529
|
+
const { decimal } = _chunkPYDDFFQMjs.useUsageFormatters.call(void 0, );
|
|
530
530
|
const rowFor = /* @__PURE__ */ _chunk7QVYU63Ejs.__name.call(void 0, (window2) => _nullishCoalesce(summary.find((r) => r.section === "total" && r.window === window2), () => ( ZERO)), "rowFor");
|
|
531
531
|
const current = rowFor("current");
|
|
532
532
|
const previous = rowFor("previous");
|
|
@@ -539,7 +539,7 @@ function AnalyticsAdminTiles({ summary }) {
|
|
|
539
539
|
testId: "analytics-tile-visitors",
|
|
540
540
|
label: t("analytics.admin.tiles.visitors"),
|
|
541
541
|
value: decimal(current.visitors, 0),
|
|
542
|
-
delta:
|
|
542
|
+
delta: _chunkPYDDFFQMjs.percentageDelta.call(void 0, current.visitors, previous.visitors),
|
|
543
543
|
previousLabel,
|
|
544
544
|
decimal
|
|
545
545
|
}
|
|
@@ -550,7 +550,7 @@ function AnalyticsAdminTiles({ summary }) {
|
|
|
550
550
|
testId: "analytics-tile-sessions",
|
|
551
551
|
label: t("analytics.admin.tiles.sessions"),
|
|
552
552
|
value: decimal(current.sessions, 0),
|
|
553
|
-
delta:
|
|
553
|
+
delta: _chunkPYDDFFQMjs.percentageDelta.call(void 0, current.sessions, previous.sessions),
|
|
554
554
|
previousLabel,
|
|
555
555
|
decimal
|
|
556
556
|
}
|
|
@@ -561,7 +561,7 @@ function AnalyticsAdminTiles({ summary }) {
|
|
|
561
561
|
testId: "analytics-tile-page-views",
|
|
562
562
|
label: t("analytics.admin.tiles.page_views"),
|
|
563
563
|
value: decimal(current.pageViews, 0),
|
|
564
|
-
delta:
|
|
564
|
+
delta: _chunkPYDDFFQMjs.percentageDelta.call(void 0, current.pageViews, previous.pageViews),
|
|
565
565
|
previousLabel,
|
|
566
566
|
decimal
|
|
567
567
|
}
|
|
@@ -574,7 +574,7 @@ function AnalyticsAdminTiles({ summary }) {
|
|
|
574
574
|
testId: "analytics-tile-pages-per-session",
|
|
575
575
|
label: t("analytics.admin.tiles.pages_per_session"),
|
|
576
576
|
value: decimal(current.pagesPerSession, 1),
|
|
577
|
-
delta:
|
|
577
|
+
delta: _chunkPYDDFFQMjs.percentageDelta.call(void 0, current.pagesPerSession, previous.pagesPerSession),
|
|
578
578
|
decimal
|
|
579
579
|
}
|
|
580
580
|
),
|
|
@@ -599,8 +599,8 @@ function LeadTile({
|
|
|
599
599
|
previousLabel,
|
|
600
600
|
decimal
|
|
601
601
|
}) {
|
|
602
|
-
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
603
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
602
|
+
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkPCCUPEBUjs.Card, { "data-testid": testId, children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkPCCUPEBUjs.CardContent, { className: "grid gap-1", children: [
|
|
603
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkPCCUPEBUjs.MicroLabel, { children: label }),
|
|
604
604
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "text-primary text-xl font-semibold tabular-nums", children: value }),
|
|
605
605
|
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: "flex items-center gap-1", children: [
|
|
606
606
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, Delta, { testId: `${testId}-delta`, delta, decimal }),
|
|
@@ -616,8 +616,8 @@ function SupportingTile({
|
|
|
616
616
|
delta,
|
|
617
617
|
decimal
|
|
618
618
|
}) {
|
|
619
|
-
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
620
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
619
|
+
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkPCCUPEBUjs.Card, { "data-testid": testId, size: "sm", children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkPCCUPEBUjs.CardContent, { className: "grid gap-1", children: [
|
|
620
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkPCCUPEBUjs.MicroLabel, { children: label }),
|
|
621
621
|
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: "flex items-center gap-2", children: [
|
|
622
622
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "text-sm font-medium tabular-nums", children: value }),
|
|
623
623
|
delta !== void 0 && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, Delta, { testId: `${testId}-delta`, delta, decimal })
|
|
@@ -640,7 +640,7 @@ function Delta({
|
|
|
640
640
|
"span",
|
|
641
641
|
{
|
|
642
642
|
"data-testid": testId,
|
|
643
|
-
className:
|
|
643
|
+
className: _chunk6KE7UBYYjs.cn.call(void 0,
|
|
644
644
|
"inline-flex items-center gap-0.5 text-xs tabular-nums",
|
|
645
645
|
increased ? "text-success" : "text-destructive"
|
|
646
646
|
),
|
|
@@ -668,15 +668,15 @@ function AnalyticsBreakdownTable({ breakdowns }) {
|
|
|
668
668
|
route: t("analytics.admin.dimensions.route"),
|
|
669
669
|
landing: t("analytics.admin.dimensions.landing")
|
|
670
670
|
};
|
|
671
|
-
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
672
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
673
|
-
ANALYTICS_DIMENSIONS.map((dimension) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
671
|
+
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkPCCUPEBUjs.Tabs, { defaultValue: ANALYTICS_DIMENSIONS[0], children: [
|
|
672
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkPCCUPEBUjs.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, _chunkPCCUPEBUjs.TabsTrigger, { value: dimension, children: labels[dimension] }, dimension)) }),
|
|
673
|
+
ANALYTICS_DIMENSIONS.map((dimension) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkPCCUPEBUjs.TabsContent, { value: dimension, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, BreakdownRows, { rows: _nullishCoalesce(breakdowns[dimension], () => ( [])) }) }, dimension))
|
|
674
674
|
] });
|
|
675
675
|
}
|
|
676
676
|
_chunk7QVYU63Ejs.__name.call(void 0, AnalyticsBreakdownTable, "AnalyticsBreakdownTable");
|
|
677
677
|
function BreakdownRows({ rows }) {
|
|
678
678
|
const t = _nextintl.useTranslations.call(void 0, );
|
|
679
|
-
const { decimal } =
|
|
679
|
+
const { decimal } = _chunkPYDDFFQMjs.useUsageFormatters.call(void 0, );
|
|
680
680
|
const sortedRows = _react.useMemo.call(void 0, () => [...rows].sort((a, b) => b.visitors - a.visitors), [rows]);
|
|
681
681
|
if (sortedRows.length === 0) {
|
|
682
682
|
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "text-muted-foreground text-sm", children: t("analytics.admin.no_data") });
|
|
@@ -685,18 +685,18 @@ function BreakdownRows({ rows }) {
|
|
|
685
685
|
// The package's <Table> wraps itself in an `overflow-x-clip` container, which
|
|
686
686
|
// would swallow the overflow before this scroller ever saw it — hence the
|
|
687
687
|
// child override. Wide tables must scroll, never widen the page.
|
|
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,
|
|
689
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
690
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
691
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
692
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
693
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
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, _chunkPCCUPEBUjs.Table, { children: [
|
|
689
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkPCCUPEBUjs.TableHeader, { children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkPCCUPEBUjs.TableRow, { children: [
|
|
690
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkPCCUPEBUjs.TableHead, { className: "text-xs font-medium", children: t("analytics.admin.columns.key") }),
|
|
691
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkPCCUPEBUjs.TableHead, { className: "text-end text-xs font-medium", children: t("analytics.admin.columns.visitors") }),
|
|
692
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkPCCUPEBUjs.TableHead, { className: "text-end text-xs font-medium", children: t("analytics.admin.columns.sessions") }),
|
|
693
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkPCCUPEBUjs.TableHead, { className: "text-end text-xs font-medium", children: t("analytics.admin.columns.page_views") })
|
|
694
694
|
] }) }),
|
|
695
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
696
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
697
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
698
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
699
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
695
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkPCCUPEBUjs.TableBody, { children: sortedRows.map((row) => /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkPCCUPEBUjs.TableRow, { "data-testid": `analytics-breakdown-row-${row.id}`, children: [
|
|
696
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkPCCUPEBUjs.TableCell, { className: "text-xs", children: row.key === OTHER_KEY ? t("analytics.admin.other") : row.key }),
|
|
697
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkPCCUPEBUjs.TableCell, { className: "text-end text-xs tabular-nums", children: decimal(row.visitors, 0) }),
|
|
698
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkPCCUPEBUjs.TableCell, { className: "text-end text-xs tabular-nums", children: decimal(row.sessions, 0) }),
|
|
699
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkPCCUPEBUjs.TableCell, { className: "text-end text-xs tabular-nums", children: decimal(row.pageViews, 0) })
|
|
700
700
|
] }, row.id)) })
|
|
701
701
|
] }) })
|
|
702
702
|
);
|
|
@@ -711,48 +711,48 @@ var VISITOR_SUFFIX_LENGTH = 6;
|
|
|
711
711
|
function AnalyticsSessionsTable({ rows, sessionPageUrl, onLoadMore, hasMore }) {
|
|
712
712
|
const t = _nextintl.useTranslations.call(void 0, );
|
|
713
713
|
const locale = _nextintl.useLocale.call(void 0, );
|
|
714
|
-
const generateUrl =
|
|
715
|
-
const { decimal } =
|
|
714
|
+
const generateUrl = _chunkPCCUPEBUjs.usePageUrlGenerator.call(void 0, );
|
|
715
|
+
const { decimal } = _chunkPYDDFFQMjs.useUsageFormatters.call(void 0, );
|
|
716
716
|
const dateTime = _react.useMemo.call(void 0, () => new Intl.DateTimeFormat(locale, { dateStyle: "short", timeStyle: "short" }), [locale]);
|
|
717
717
|
if (rows.length === 0) {
|
|
718
718
|
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "text-muted-foreground text-sm", children: t("analytics.admin.no_data") });
|
|
719
719
|
}
|
|
720
720
|
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex flex-col gap-3", children: [
|
|
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,
|
|
722
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
723
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
724
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
725
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
726
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
727
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
728
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
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, _chunkPCCUPEBUjs.Table, { children: [
|
|
722
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkPCCUPEBUjs.TableHeader, { children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkPCCUPEBUjs.TableRow, { children: [
|
|
723
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkPCCUPEBUjs.TableHead, { className: "text-xs font-medium", children: t("analytics.admin.columns.started") }),
|
|
724
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkPCCUPEBUjs.TableHead, { className: "text-xs font-medium", children: t("analytics.admin.columns.visitor") }),
|
|
725
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkPCCUPEBUjs.TableHead, { className: "text-xs font-medium", children: t("analytics.admin.columns.source") }),
|
|
726
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkPCCUPEBUjs.TableHead, { className: "text-xs font-medium", children: t("analytics.admin.columns.landing") }),
|
|
727
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkPCCUPEBUjs.TableHead, { className: "text-end text-xs font-medium", children: t("analytics.admin.columns.pages") }),
|
|
728
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkPCCUPEBUjs.TableHead, { className: "text-xs font-medium", children: t("analytics.admin.columns.device") })
|
|
729
729
|
] }) }),
|
|
730
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
730
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkPCCUPEBUjs.TableBody, { children: rows.map((row) => {
|
|
731
731
|
const source = [_nullishCoalesce(row.utmSource, () => ( row.referrerHost)), row.utmMedium].filter(Boolean).join(" / ");
|
|
732
|
-
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
733
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
734
|
-
|
|
732
|
+
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkPCCUPEBUjs.TableRow, { "data-testid": `analytics-session-row-${row.id}`, children: [
|
|
733
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkPCCUPEBUjs.TableCell, { className: "text-xs tabular-nums", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
734
|
+
_chunkPCCUPEBUjs.Link,
|
|
735
735
|
{
|
|
736
736
|
href: generateUrl({ page: sessionPageUrl, id: row.id }),
|
|
737
737
|
"data-testid": `analytics-session-link-${row.id}`,
|
|
738
738
|
children: dateTime.format(row.startedAt)
|
|
739
739
|
}
|
|
740
740
|
) }),
|
|
741
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
741
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkPCCUPEBUjs.TableCell, { className: "text-xs", children: row.user ? /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: "flex flex-col", children: [
|
|
742
742
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { children: row.user.name }),
|
|
743
743
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "text-muted-foreground text-xs", children: row.user.email })
|
|
744
744
|
] }) : /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: "flex items-center gap-2", children: [
|
|
745
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
745
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkPCCUPEBUjs.Badge, { variant: "softGray", children: t("analytics.admin.anonymous") }),
|
|
746
746
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "text-muted-foreground text-xs tabular-nums", children: row.visitorId.slice(-VISITOR_SUFFIX_LENGTH) })
|
|
747
747
|
] }) }),
|
|
748
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
749
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
750
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
751
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
748
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkPCCUPEBUjs.TableCell, { className: "text-xs", children: source }),
|
|
749
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkPCCUPEBUjs.TableCell, { className: "text-xs", children: row.landingRoute }),
|
|
750
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkPCCUPEBUjs.TableCell, { className: "text-end text-xs tabular-nums", children: decimal(row.pageViews, 0) }),
|
|
751
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkPCCUPEBUjs.TableCell, { className: "text-muted-foreground text-xs", children: row.deviceType })
|
|
752
752
|
] }, row.id);
|
|
753
753
|
}) })
|
|
754
754
|
] }) }),
|
|
755
|
-
hasMore && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "flex justify-center", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
755
|
+
hasMore && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "flex justify-center", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkPCCUPEBUjs.Button, { type: "button", variant: "outline", size: "sm", onClick: onLoadMore, children: t("analytics.admin.load_more") }) })
|
|
756
756
|
] });
|
|
757
757
|
}
|
|
758
758
|
_chunk7QVYU63Ejs.__name.call(void 0, AnalyticsSessionsTable, "AnalyticsSessionsTable");
|
|
@@ -784,7 +784,7 @@ var inferGranularity = /* @__PURE__ */ _chunk7QVYU63Ejs.__name.call(void 0, (buc
|
|
|
784
784
|
}, "inferGranularity");
|
|
785
785
|
function AnalyticsTimelineChart({ rows, className }) {
|
|
786
786
|
const t = _nextintl.useTranslations.call(void 0, );
|
|
787
|
-
const { compact, bucketDate, decimal } =
|
|
787
|
+
const { compact, bucketDate, decimal } = _chunkPYDDFFQMjs.useUsageFormatters.call(void 0, );
|
|
788
788
|
const { resolvedTheme } = _nextthemes.useTheme.call(void 0, );
|
|
789
789
|
const mode = resolvedTheme === "dark" ? "dark" : "light";
|
|
790
790
|
const chartData = _react.useMemo.call(void 0, () => {
|
|
@@ -819,7 +819,7 @@ function AnalyticsTimelineChart({ rows, className }) {
|
|
|
819
819
|
// rtl-ok: deliberate LTR island (chart)
|
|
820
820
|
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className, dir: "ltr", children: [
|
|
821
821
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "sr-only", "data-testid": "analytics-timeline-data", children: JSON.stringify(chartData) }),
|
|
822
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
822
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkPCCUPEBUjs.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: [
|
|
823
823
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _recharts.CartesianGrid, { vertical: false }),
|
|
824
824
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
825
825
|
_recharts.XAxis,
|
|
@@ -843,10 +843,10 @@ function AnalyticsTimelineChart({ rows, className }) {
|
|
|
843
843
|
}
|
|
844
844
|
),
|
|
845
845
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
846
|
-
|
|
846
|
+
_chunkPCCUPEBUjs.ChartTooltip,
|
|
847
847
|
{
|
|
848
848
|
content: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
849
|
-
|
|
849
|
+
_chunkPCCUPEBUjs.ChartTooltipContent,
|
|
850
850
|
{
|
|
851
851
|
labelFormatter: (value) => bucketDate(String(value), granularity),
|
|
852
852
|
valueFormatter: (value) => decimal(Number(value), 0)
|
|
@@ -854,13 +854,13 @@ function AnalyticsTimelineChart({ rows, className }) {
|
|
|
854
854
|
)
|
|
855
855
|
}
|
|
856
856
|
),
|
|
857
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
857
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkPCCUPEBUjs.ChartLegend, { content: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkPCCUPEBUjs.ChartLegendContent, {}) }),
|
|
858
858
|
SERIES.map((series, index) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
859
859
|
_recharts.Bar,
|
|
860
860
|
{
|
|
861
861
|
dataKey: series,
|
|
862
862
|
maxBarSize: 28,
|
|
863
|
-
fill:
|
|
863
|
+
fill: _chunkPYDDFFQMjs.seriesColor.call(void 0, index, mode),
|
|
864
864
|
stroke: "var(--background)",
|
|
865
865
|
strokeWidth: 2,
|
|
866
866
|
radius: [4, 4, 0, 0]
|
|
@@ -889,25 +889,25 @@ function AnalyticsAdminContainer() {
|
|
|
889
889
|
error
|
|
890
890
|
} = useAnalyticsAdmin();
|
|
891
891
|
if (error) {
|
|
892
|
-
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
892
|
+
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkPCCUPEBUjs.RoundPageContainer, { module: _chunk6KE7UBYYjs.Modules.AnalyticsSummary, fullWidth: true, forceHeader: true, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "p-4", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkPCCUPEBUjs.Card, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkPCCUPEBUjs.CardContent, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "text-destructive text-xs/relaxed", children: error }) }) }) }) });
|
|
893
893
|
}
|
|
894
|
-
if (isLoading) return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
895
|
-
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
894
|
+
if (isLoading) return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkPCCUPEBUjs.RoundPageContainer, { module: _chunk6KE7UBYYjs.Modules.AnalyticsSummary, fullWidth: true, forceHeader: true });
|
|
895
|
+
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkPCCUPEBUjs.RoundPageContainer, { module: _chunk6KE7UBYYjs.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: [
|
|
896
896
|
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex flex-col gap-2", children: [
|
|
897
897
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, AnalyticsAdminTiles, { summary }),
|
|
898
898
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "text-muted-foreground text-xs", children: t("analytics.admin.tiles.summarised_note") })
|
|
899
899
|
] }),
|
|
900
|
-
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
901
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
902
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
900
|
+
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkPCCUPEBUjs.Card, { children: [
|
|
901
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkPCCUPEBUjs.CardHeader, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkPCCUPEBUjs.CardTitle, { children: t("analytics.admin.panels.over_time") }) }),
|
|
902
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkPCCUPEBUjs.CardContent, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, AnalyticsTimelineChart, { rows: timeline }) })
|
|
903
903
|
] }),
|
|
904
|
-
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
905
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
906
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
904
|
+
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkPCCUPEBUjs.Card, { children: [
|
|
905
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkPCCUPEBUjs.CardHeader, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkPCCUPEBUjs.CardTitle, { children: t("analytics.admin.panels.breakdown") }) }),
|
|
906
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkPCCUPEBUjs.CardContent, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, AnalyticsBreakdownTable, { breakdowns }) })
|
|
907
907
|
] }),
|
|
908
|
-
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
909
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
910
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
908
|
+
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkPCCUPEBUjs.Card, { children: [
|
|
909
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkPCCUPEBUjs.CardHeader, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkPCCUPEBUjs.CardTitle, { children: t("analytics.admin.panels.sessions") }) }),
|
|
910
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkPCCUPEBUjs.CardContent, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
911
911
|
AnalyticsSessionsTable,
|
|
912
912
|
{
|
|
913
913
|
rows: sessions,
|
|
@@ -930,7 +930,7 @@ var OTHER_SESSIONS_WINDOW_DAYS = 395;
|
|
|
930
930
|
function AnalyticsJourneyContainer({ sessionId, pageUrl = ANALYTICS_ADMIN_PAGE_URL }) {
|
|
931
931
|
const t = _nextintl.useTranslations.call(void 0, );
|
|
932
932
|
const locale = _nextintl.useLocale.call(void 0, );
|
|
933
|
-
const generateUrl =
|
|
933
|
+
const generateUrl = _chunkPCCUPEBUjs.usePageUrlGenerator.call(void 0, );
|
|
934
934
|
const [session, setSession] = _react.useState.call(void 0, void 0);
|
|
935
935
|
const [pageViews, setPageViews] = _react.useState.call(void 0, []);
|
|
936
936
|
const [otherSessions, setOtherSessions] = _react.useState.call(void 0, []);
|
|
@@ -986,26 +986,26 @@ function AnalyticsJourneyContainer({ sessionId, pageUrl = ANALYTICS_ADMIN_PAGE_U
|
|
|
986
986
|
const title = { type: t("analytics.admin.panels.journey") };
|
|
987
987
|
const renderBody = /* @__PURE__ */ _chunk7QVYU63Ejs.__name.call(void 0, () => {
|
|
988
988
|
if (error) {
|
|
989
|
-
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
989
|
+
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkPCCUPEBUjs.RoundPageContainer, { module: _chunk6KE7UBYYjs.Modules.AnalyticsSession, fullWidth: true, forceHeader: true, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "p-4", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkPCCUPEBUjs.Card, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkPCCUPEBUjs.CardContent, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "text-destructive text-xs/relaxed", children: error }) }) }) }) });
|
|
990
990
|
}
|
|
991
|
-
if (isLoading || !session) return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
991
|
+
if (isLoading || !session) return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkPCCUPEBUjs.RoundPageContainer, { module: _chunk6KE7UBYYjs.Modules.AnalyticsSession, fullWidth: true, forceHeader: true });
|
|
992
992
|
const source = [_nullishCoalesce(session.utmSource, () => ( session.referrerHost)), session.utmMedium, session.utmCampaign].filter(Boolean).join(" / ");
|
|
993
|
-
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
994
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
993
|
+
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkPCCUPEBUjs.RoundPageContainer, { module: _chunk6KE7UBYYjs.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, _chunkPCCUPEBUjs.Card, { "data-testid": "analytics-journey-attribution", children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkPCCUPEBUjs.CardContent, { className: "flex flex-col gap-3", children: [
|
|
995
995
|
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex flex-wrap items-center gap-2", children: [
|
|
996
996
|
session.user ? /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: "flex flex-col", children: [
|
|
997
997
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "text-sm", children: session.user.name }),
|
|
998
998
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "text-muted-foreground text-xs", children: session.user.email })
|
|
999
|
-
] }) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1000
|
-
session.consented ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
999
|
+
] }) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkPCCUPEBUjs.Badge, { variant: "softGray", children: t("analytics.admin.anonymous") }),
|
|
1000
|
+
session.consented ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkPCCUPEBUjs.Badge, { variant: "softGreen", children: t("analytics.admin.consented") }) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkPCCUPEBUjs.Badge, { variant: "softGray", children: t("analytics.admin.not_consented") })
|
|
1001
1001
|
] }),
|
|
1002
1002
|
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "grid gap-3 sm:grid-cols-3", children: [
|
|
1003
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1004
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1005
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1006
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1003
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkPCCUPEBUjs.DetailField, { label: t("analytics.admin.columns.started"), value: dateTime.format(session.startedAt) }),
|
|
1004
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkPCCUPEBUjs.DetailField, { label: t("analytics.admin.columns.source"), value: source }),
|
|
1005
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkPCCUPEBUjs.DetailField, { label: t("analytics.admin.columns.landing"), value: session.landingRoute }),
|
|
1006
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkPCCUPEBUjs.DetailField, { label: t("analytics.admin.columns.device"), value: session.deviceType }),
|
|
1007
1007
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1008
|
-
|
|
1008
|
+
_chunkPCCUPEBUjs.DetailField,
|
|
1009
1009
|
{
|
|
1010
1010
|
label: t("analytics.admin.columns.visitor"),
|
|
1011
1011
|
value: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "tabular-nums", children: session.visitorId })
|
|
@@ -1013,31 +1013,31 @@ function AnalyticsJourneyContainer({ sessionId, pageUrl = ANALYTICS_ADMIN_PAGE_U
|
|
|
1013
1013
|
)
|
|
1014
1014
|
] })
|
|
1015
1015
|
] }) }),
|
|
1016
|
-
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
1017
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1018
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1016
|
+
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkPCCUPEBUjs.Card, { children: [
|
|
1017
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkPCCUPEBUjs.CardHeader, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkPCCUPEBUjs.CardTitle, { children: t("analytics.admin.columns.pages") }) }),
|
|
1018
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkPCCUPEBUjs.CardContent, { children: pageViews.length === 0 ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "text-muted-foreground text-sm", children: t("analytics.admin.no_data") }) : (
|
|
1019
1019
|
// The package's <Table> wraps itself in an `overflow-x-clip`
|
|
1020
1020
|
// container — hence the child override, so wide rows scroll.
|
|
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,
|
|
1022
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1023
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1024
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1025
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
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, _chunkPCCUPEBUjs.Table, { children: [
|
|
1022
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkPCCUPEBUjs.TableHeader, { children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkPCCUPEBUjs.TableRow, { children: [
|
|
1023
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkPCCUPEBUjs.TableHead, { className: "text-xs font-medium", children: t("analytics.admin.columns.time") }),
|
|
1024
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkPCCUPEBUjs.TableHead, { className: "text-end text-xs font-medium", children: t("analytics.admin.columns.gap") }),
|
|
1025
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkPCCUPEBUjs.TableHead, { className: "text-xs font-medium", children: t("analytics.admin.columns.path") })
|
|
1026
1026
|
] }) }),
|
|
1027
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1027
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkPCCUPEBUjs.TableBody, { children: pageViews.map((pageView, index) => {
|
|
1028
1028
|
const previous = index > 0 ? pageViews[index - 1] : void 0;
|
|
1029
|
-
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
1030
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1031
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1032
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1029
|
+
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkPCCUPEBUjs.TableRow, { "data-testid": `analytics-pageview-row-${pageView.id}`, children: [
|
|
1030
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkPCCUPEBUjs.TableCell, { className: "text-xs tabular-nums", children: dateTime.format(pageView.createdAt) }),
|
|
1031
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkPCCUPEBUjs.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, _chunkPCCUPEBUjs.TableCell, { className: "text-xs", children: pageView.path })
|
|
1033
1033
|
] }, pageView.id);
|
|
1034
1034
|
}) })
|
|
1035
1035
|
] }) })
|
|
1036
1036
|
) })
|
|
1037
1037
|
] }),
|
|
1038
|
-
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
1039
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1040
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1038
|
+
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkPCCUPEBUjs.Card, { children: [
|
|
1039
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkPCCUPEBUjs.CardHeader, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkPCCUPEBUjs.CardTitle, { children: t("analytics.admin.panels.other_sessions") }) }),
|
|
1040
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkPCCUPEBUjs.CardContent, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1041
1041
|
AnalyticsSessionsTable,
|
|
1042
1042
|
{
|
|
1043
1043
|
rows: otherSessions,
|
|
@@ -1049,7 +1049,7 @@ function AnalyticsJourneyContainer({ sessionId, pageUrl = ANALYTICS_ADMIN_PAGE_U
|
|
|
1049
1049
|
] })
|
|
1050
1050
|
] }) });
|
|
1051
1051
|
}, "renderBody");
|
|
1052
|
-
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1052
|
+
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkPCCUPEBUjs.SharedProvider, { value: { breadcrumbs: breadcrumb, title }, children: renderBody() });
|
|
1053
1053
|
}
|
|
1054
1054
|
_chunk7QVYU63Ejs.__name.call(void 0, AnalyticsJourneyContainer, "AnalyticsJourneyContainer");
|
|
1055
1055
|
function unit(locale, name, value) {
|
|
@@ -1157,5 +1157,5 @@ var ANALYTICS_ADMIN_I18N_KEYS = [
|
|
|
1157
1157
|
|
|
1158
1158
|
|
|
1159
1159
|
|
|
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 =
|
|
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 = _chunk6KE7UBYYjs.AnalyticsBreakdown; exports.AnalyticsBreakdownTable = AnalyticsBreakdownTable; exports.AnalyticsEvent = _chunk6KE7UBYYjs.AnalyticsEvent; exports.AnalyticsJourneyContainer = AnalyticsJourneyContainer; exports.AnalyticsJourneyPageContainer = AnalyticsJourneyPageContainer; exports.AnalyticsPageView = _chunk6KE7UBYYjs.AnalyticsPageView; exports.AnalyticsService = AnalyticsService; exports.AnalyticsSession = _chunk6KE7UBYYjs.AnalyticsSession; exports.AnalyticsSessionsTable = AnalyticsSessionsTable; exports.AnalyticsSummary = _chunk6KE7UBYYjs.AnalyticsSummary; exports.AnalyticsTimeline = _chunk6KE7UBYYjs.AnalyticsTimeline; exports.AnalyticsTimelineChart = AnalyticsTimelineChart; exports.AnalyticsTracker = AnalyticsTracker; exports.analyticsModules = _chunk6KE7UBYYjs.analyticsModules; exports.useAnalyticsAdmin = useAnalyticsAdmin;
|
|
1161
1161
|
//# sourceMappingURL=index.js.map
|