@carlonicora/nextjs-jsonapi 4.0.4 → 4.0.6
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-FGVQP35E.mjs → BlockNoteEditor-6CTF5DEV.mjs} +5 -5
- package/dist/{BlockNoteEditor-BXMTGKDV.js → BlockNoteEditor-JJ3S5COJ.js} +20 -20
- package/dist/{BlockNoteEditor-BXMTGKDV.js.map → BlockNoteEditor-JJ3S5COJ.js.map} +1 -1
- package/dist/{BlockNoteViewer-DQYT6IJW.mjs → BlockNoteViewer-4THJHQMK.mjs} +3 -3
- package/dist/{BlockNoteViewer-YH7G66PS.js → BlockNoteViewer-TEC7DN2N.js} +4 -4
- package/dist/{BlockNoteViewer-YH7G66PS.js.map → BlockNoteViewer-TEC7DN2N.js.map} +1 -1
- package/dist/{JsonApiRequest-MEP6AXDT.mjs → JsonApiRequest-A66XK5WT.mjs} +2 -2
- package/dist/JsonApiRequest-FZGPLNUF.js +26 -0
- package/dist/{JsonApiRequest-OB6WL4LA.js.map → JsonApiRequest-FZGPLNUF.js.map} +1 -1
- package/dist/billing/index.js +400 -400
- package/dist/billing/index.mjs +4 -4
- package/dist/{chunk-6OFANJTE.js → chunk-5PNDDYGL.js} +32 -32
- package/dist/{chunk-6OFANJTE.js.map → chunk-5PNDDYGL.js.map} +1 -1
- package/dist/{chunk-5W5MN7JP.js → chunk-7ZRQOLSV.js} +13 -13
- package/dist/{chunk-5W5MN7JP.js.map → chunk-7ZRQOLSV.js.map} +1 -1
- package/dist/{chunk-TWBZ2GSX.js → chunk-C2WQXUL5.js} +3 -3
- package/dist/{chunk-TWBZ2GSX.js.map → chunk-C2WQXUL5.js.map} +1 -1
- package/dist/{chunk-JEQ34Z5E.js → chunk-DYTKNSHY.js} +15 -15
- package/dist/{chunk-JEQ34Z5E.js.map → chunk-DYTKNSHY.js.map} +1 -1
- package/dist/{chunk-WGVNJXZO.js → chunk-GHE4VT2R.js} +12 -12
- package/dist/{chunk-WGVNJXZO.js.map → chunk-GHE4VT2R.js.map} +1 -1
- package/dist/{chunk-3CZ2GK5R.mjs → chunk-IOG22OAO.mjs} +3 -3
- package/dist/{chunk-R6ZYB4VN.mjs → chunk-RDI62FAT.mjs} +2 -2
- package/dist/{chunk-7SCREMTX.mjs → chunk-V5MI7RNB.mjs} +2 -2
- package/dist/chunk-V5MI7RNB.mjs.map +1 -0
- package/dist/{chunk-ADZSH3MG.mjs → chunk-XTOEN5GN.mjs} +3 -3
- package/dist/{chunk-NFCXUAE6.js → chunk-XUUHPYMM.js} +849 -847
- package/dist/chunk-XUUHPYMM.js.map +1 -0
- package/dist/{chunk-WJC4SYRL.mjs → chunk-Y2AWOWWH.mjs} +20 -18
- package/dist/chunk-Y2AWOWWH.mjs.map +1 -0
- package/dist/{chunk-AQZ3T4BR.mjs → chunk-Z3226FM6.mjs} +5 -5
- package/dist/client/index.js +5 -5
- package/dist/client/index.mjs +4 -4
- package/dist/components/index.js +5 -5
- package/dist/components/index.mjs +4 -4
- package/dist/contexts/index.js +5 -5
- package/dist/contexts/index.mjs +4 -4
- package/dist/core/index.js +3 -3
- package/dist/core/index.mjs +2 -2
- package/dist/features/analytics/index.js +123 -123
- package/dist/features/analytics/index.mjs +5 -5
- package/dist/features/analytics/server.js +5 -5
- package/dist/features/analytics/server.mjs +3 -3
- package/dist/features/help/index.js +38 -38
- package/dist/features/help/index.mjs +4 -4
- package/dist/features/tokenusage/index.js +126 -126
- package/dist/features/tokenusage/index.mjs +5 -5
- package/dist/index.js +4 -4
- package/dist/index.mjs +3 -3
- package/dist/server/index.js +4 -4
- package/dist/server/index.mjs +3 -3
- package/package.json +1 -1
- package/src/core/utils/__tests__/translateResponse.test.ts +17 -0
- package/src/core/utils/translateResponse.ts +7 -3
- package/src/shadcnui/ui/__tests__/sidebar.session.test.tsx +136 -0
- package/src/shadcnui/ui/sidebar.tsx +21 -13
- package/dist/JsonApiRequest-OB6WL4LA.js +0 -26
- package/dist/chunk-7SCREMTX.mjs.map +0 -1
- package/dist/chunk-NFCXUAE6.js.map +0 -1
- package/dist/chunk-WJC4SYRL.mjs.map +0 -1
- /package/dist/{BlockNoteEditor-FGVQP35E.mjs.map → BlockNoteEditor-6CTF5DEV.mjs.map} +0 -0
- /package/dist/{BlockNoteViewer-DQYT6IJW.mjs.map → BlockNoteViewer-4THJHQMK.mjs.map} +0 -0
- /package/dist/{JsonApiRequest-MEP6AXDT.mjs.map → JsonApiRequest-A66XK5WT.mjs.map} +0 -0
- /package/dist/{chunk-3CZ2GK5R.mjs.map → chunk-IOG22OAO.mjs.map} +0 -0
- /package/dist/{chunk-R6ZYB4VN.mjs.map → chunk-RDI62FAT.mjs.map} +0 -0
- /package/dist/{chunk-ADZSH3MG.mjs.map → chunk-XTOEN5GN.mjs.map} +0 -0
- /package/dist/{chunk-AQZ3T4BR.mjs.map → chunk-Z3226FM6.mjs.map} +0 -0
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
|
|
4
4
|
|
|
5
5
|
|
|
6
|
-
var
|
|
6
|
+
var _chunkC2WQXUL5js = require('../../chunk-C2WQXUL5.js');
|
|
7
7
|
|
|
8
8
|
|
|
9
9
|
|
|
@@ -33,8 +33,8 @@ var _chunkTWBZ2GSXjs = require('../../chunk-TWBZ2GSX.js');
|
|
|
33
33
|
|
|
34
34
|
|
|
35
35
|
|
|
36
|
-
var
|
|
37
|
-
require('../../chunk-
|
|
36
|
+
var _chunkXUUHPYMMjs = require('../../chunk-XUUHPYMM.js');
|
|
37
|
+
require('../../chunk-7ZRQOLSV.js');
|
|
38
38
|
require('../../chunk-G4JR3SFV.js');
|
|
39
39
|
|
|
40
40
|
|
|
@@ -48,10 +48,10 @@ require('../../chunk-G4JR3SFV.js');
|
|
|
48
48
|
|
|
49
49
|
|
|
50
50
|
|
|
51
|
-
var
|
|
51
|
+
var _chunk5PNDDYGLjs = require('../../chunk-5PNDDYGL.js');
|
|
52
52
|
require('../../chunk-LXKSUWAV.js');
|
|
53
53
|
require('../../chunk-JTPRJNT2.js');
|
|
54
|
-
require('../../chunk-
|
|
54
|
+
require('../../chunk-GHE4VT2R.js');
|
|
55
55
|
require('../../chunk-3EPNHTMH.js');
|
|
56
56
|
|
|
57
57
|
|
|
@@ -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 _chunk5PNDDYGLjs.AbstractService {
|
|
67
67
|
static {
|
|
68
68
|
_chunk7QVYU63Ejs.__name.call(void 0, this, "AnalyticsService");
|
|
69
69
|
}
|
|
@@ -75,9 +75,9 @@ var AnalyticsService = class extends _chunk6OFANJTEjs.AbstractService {
|
|
|
75
75
|
static async track(input) {
|
|
76
76
|
try {
|
|
77
77
|
await this.callApi({
|
|
78
|
-
type:
|
|
78
|
+
type: _chunk5PNDDYGLjs.Modules.AnalyticsEvent,
|
|
79
79
|
method: "POST" /* POST */,
|
|
80
|
-
endpoint: new (0,
|
|
80
|
+
endpoint: new (0, _chunk5PNDDYGLjs.EndpointCreator)({ endpoint: _chunk5PNDDYGLjs.Modules.AnalyticsEvent }).generate(),
|
|
81
81
|
input,
|
|
82
82
|
suppressGlobalError: true
|
|
83
83
|
});
|
|
@@ -224,7 +224,7 @@ function AnalyticsAdminFilterBar({ section, granularity, onChange }) {
|
|
|
224
224
|
};
|
|
225
225
|
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex flex-wrap items-center gap-2", children: [
|
|
226
226
|
/* @__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
|
-
|
|
227
|
+
_chunkXUUHPYMMjs.DateRangeSelector,
|
|
228
228
|
{
|
|
229
229
|
onDateChange: (range) => {
|
|
230
230
|
if (!_optionalChain([range, 'optionalAccess', _ => _.from]) || !_optionalChain([range, 'optionalAccess', _2 => _2.to])) return;
|
|
@@ -268,13 +268,13 @@ function Segmented({
|
|
|
268
268
|
children: options.map((option) => {
|
|
269
269
|
const selected = option.value === value;
|
|
270
270
|
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
271
|
-
|
|
271
|
+
_chunkXUUHPYMMjs.Button,
|
|
272
272
|
{
|
|
273
273
|
type: "button",
|
|
274
274
|
size: "sm",
|
|
275
275
|
variant: selected ? "default" : "ghost",
|
|
276
276
|
"aria-pressed": selected,
|
|
277
|
-
className:
|
|
277
|
+
className: _chunk5PNDDYGLjs.cn.call(void 0, !selected && "text-muted-foreground"),
|
|
278
278
|
onClick: () => onSelect(option.value),
|
|
279
279
|
children: option.label
|
|
280
280
|
},
|
|
@@ -294,45 +294,45 @@ function withFilters(endpoint, filters) {
|
|
|
294
294
|
return endpoint;
|
|
295
295
|
}
|
|
296
296
|
_chunk7QVYU63Ejs.__name.call(void 0, withFilters, "withFilters");
|
|
297
|
-
var AnalyticsAdminService = class extends
|
|
297
|
+
var AnalyticsAdminService = class extends _chunk5PNDDYGLjs.AbstractService {
|
|
298
298
|
static {
|
|
299
299
|
_chunk7QVYU63Ejs.__name.call(void 0, this, "AnalyticsAdminService");
|
|
300
300
|
}
|
|
301
301
|
/** Headline tiles: one row per window (current, previous). */
|
|
302
302
|
static async getSummary(filters) {
|
|
303
|
-
const endpoint = withFilters(new (0,
|
|
303
|
+
const endpoint = withFilters(new (0, _chunk5PNDDYGLjs.EndpointCreator)({ endpoint: _chunk5PNDDYGLjs.Modules.AnalyticsSummary }), filters);
|
|
304
304
|
return this.callApi({
|
|
305
|
-
type:
|
|
305
|
+
type: _chunk5PNDDYGLjs.Modules.AnalyticsSummary,
|
|
306
306
|
method: "GET" /* GET */,
|
|
307
307
|
endpoint: endpoint.generate()
|
|
308
308
|
});
|
|
309
309
|
}
|
|
310
310
|
static async getTimeline(params) {
|
|
311
|
-
const endpoint = withFilters(new (0,
|
|
311
|
+
const endpoint = withFilters(new (0, _chunk5PNDDYGLjs.EndpointCreator)({ endpoint: _chunk5PNDDYGLjs.Modules.AnalyticsTimeline }), params);
|
|
312
312
|
endpoint.addAdditionalParam("granularity", params.granularity);
|
|
313
313
|
return this.callApi({
|
|
314
|
-
type:
|
|
314
|
+
type: _chunk5PNDDYGLjs.Modules.AnalyticsTimeline,
|
|
315
315
|
method: "GET" /* GET */,
|
|
316
316
|
endpoint: endpoint.generate()
|
|
317
317
|
});
|
|
318
318
|
}
|
|
319
319
|
static async getBreakdown(params) {
|
|
320
|
-
const endpoint = withFilters(new (0,
|
|
320
|
+
const endpoint = withFilters(new (0, _chunk5PNDDYGLjs.EndpointCreator)({ endpoint: _chunk5PNDDYGLjs.Modules.AnalyticsBreakdown }), params);
|
|
321
321
|
endpoint.addAdditionalParam("dimension", params.dimension);
|
|
322
322
|
if (params.limit !== void 0) endpoint.addAdditionalParam("limit", String(params.limit));
|
|
323
323
|
return this.callApi({
|
|
324
|
-
type:
|
|
324
|
+
type: _chunk5PNDDYGLjs.Modules.AnalyticsBreakdown,
|
|
325
325
|
method: "GET" /* GET */,
|
|
326
326
|
endpoint: endpoint.generate()
|
|
327
327
|
});
|
|
328
328
|
}
|
|
329
329
|
/** Newest sessions first, cursor-paginated through `next`. */
|
|
330
330
|
static async getSessions(params) {
|
|
331
|
-
const endpoint = withFilters(new (0,
|
|
331
|
+
const endpoint = withFilters(new (0, _chunk5PNDDYGLjs.EndpointCreator)({ endpoint: _chunk5PNDDYGLjs.Modules.AnalyticsSession }), params);
|
|
332
332
|
if (params.visitorId) endpoint.addAdditionalParam("visitorId", params.visitorId);
|
|
333
333
|
if (params.userId) endpoint.addAdditionalParam("userId", params.userId);
|
|
334
334
|
return this.callApi({
|
|
335
|
-
type:
|
|
335
|
+
type: _chunk5PNDDYGLjs.Modules.AnalyticsSession,
|
|
336
336
|
method: "GET" /* GET */,
|
|
337
337
|
endpoint: endpoint.generate(),
|
|
338
338
|
next: params.next
|
|
@@ -340,20 +340,20 @@ var AnalyticsAdminService = class extends _chunk6OFANJTEjs.AbstractService {
|
|
|
340
340
|
}
|
|
341
341
|
static async getSession(params) {
|
|
342
342
|
return this.callApi({
|
|
343
|
-
type:
|
|
343
|
+
type: _chunk5PNDDYGLjs.Modules.AnalyticsSession,
|
|
344
344
|
method: "GET" /* GET */,
|
|
345
|
-
endpoint: new (0,
|
|
345
|
+
endpoint: new (0, _chunk5PNDDYGLjs.EndpointCreator)({ endpoint: _chunk5PNDDYGLjs.Modules.AnalyticsSession, id: params.id }).generate()
|
|
346
346
|
});
|
|
347
347
|
}
|
|
348
348
|
/** The journey: every page view of one session, oldest first. */
|
|
349
349
|
static async getSessionPageViews(params) {
|
|
350
350
|
return this.callApi({
|
|
351
|
-
type:
|
|
351
|
+
type: _chunk5PNDDYGLjs.Modules.AnalyticsPageView,
|
|
352
352
|
method: "GET" /* GET */,
|
|
353
|
-
endpoint: new (0,
|
|
354
|
-
endpoint:
|
|
353
|
+
endpoint: new (0, _chunk5PNDDYGLjs.EndpointCreator)({
|
|
354
|
+
endpoint: _chunk5PNDDYGLjs.Modules.AnalyticsSession,
|
|
355
355
|
id: params.sessionId,
|
|
356
|
-
childEndpoint:
|
|
356
|
+
childEndpoint: _chunk5PNDDYGLjs.Modules.AnalyticsPageView
|
|
357
357
|
}).generate()
|
|
358
358
|
});
|
|
359
359
|
}
|
|
@@ -388,7 +388,7 @@ var AnalyticsAdminProvider = /* @__PURE__ */ _chunk7QVYU63Ejs.__name.call(void 0
|
|
|
388
388
|
sessionPageUrl = ANALYTICS_SESSION_PAGE_URL
|
|
389
389
|
}) => {
|
|
390
390
|
const t = _nextintl.useTranslations.call(void 0, );
|
|
391
|
-
const generateUrl =
|
|
391
|
+
const generateUrl = _chunkXUUHPYMMjs.usePageUrlGenerator.call(void 0, );
|
|
392
392
|
const [filters, setFilterState] = _react.useState.call(void 0, () => {
|
|
393
393
|
const range = defaultRange();
|
|
394
394
|
return {
|
|
@@ -452,7 +452,7 @@ var AnalyticsAdminProvider = /* @__PURE__ */ _chunk7QVYU63Ejs.__name.call(void 0
|
|
|
452
452
|
const sessionsNext = {};
|
|
453
453
|
try {
|
|
454
454
|
const nextSessions = await AnalyticsAdminService.next({
|
|
455
|
-
type:
|
|
455
|
+
type: _chunk5PNDDYGLjs.Modules.AnalyticsSession,
|
|
456
456
|
endpoint: sessionsNextPage,
|
|
457
457
|
next: sessionsNext
|
|
458
458
|
});
|
|
@@ -512,7 +512,7 @@ var AnalyticsAdminProvider = /* @__PURE__ */ _chunk7QVYU63Ejs.__name.call(void 0
|
|
|
512
512
|
error
|
|
513
513
|
]
|
|
514
514
|
);
|
|
515
|
-
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
515
|
+
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXUUHPYMMjs.SharedProvider, { value: { breadcrumbs: breadcrumb(), title: title() }, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, AnalyticsAdminContext.Provider, { value: contextValue, children }) });
|
|
516
516
|
}, "AnalyticsAdminProvider");
|
|
517
517
|
var useAnalyticsAdmin = /* @__PURE__ */ _chunk7QVYU63Ejs.__name.call(void 0, () => {
|
|
518
518
|
const ctx = _react.useContext.call(void 0, AnalyticsAdminContext);
|
|
@@ -532,7 +532,7 @@ var _lucidereact = require('lucide-react');
|
|
|
532
532
|
var ZERO = { visitors: 0, sessions: 0, pageViews: 0, pagesPerSession: 0, consentShare: 0 };
|
|
533
533
|
function AnalyticsAdminTiles({ summary }) {
|
|
534
534
|
const t = _nextintl.useTranslations.call(void 0, );
|
|
535
|
-
const { decimal } =
|
|
535
|
+
const { decimal } = _chunkC2WQXUL5js.useUsageFormatters.call(void 0, );
|
|
536
536
|
const rowFor = /* @__PURE__ */ _chunk7QVYU63Ejs.__name.call(void 0, (window2) => _nullishCoalesce(summary.find((r) => r.section === "total" && r.window === window2), () => ( ZERO)), "rowFor");
|
|
537
537
|
const current = rowFor("current");
|
|
538
538
|
const previous = rowFor("previous");
|
|
@@ -545,7 +545,7 @@ function AnalyticsAdminTiles({ summary }) {
|
|
|
545
545
|
testId: "analytics-tile-visitors",
|
|
546
546
|
label: t("analytics.admin.tiles.visitors"),
|
|
547
547
|
value: decimal(current.visitors, 0),
|
|
548
|
-
delta:
|
|
548
|
+
delta: _chunkC2WQXUL5js.percentageDelta.call(void 0, current.visitors, previous.visitors),
|
|
549
549
|
previousLabel,
|
|
550
550
|
decimal
|
|
551
551
|
}
|
|
@@ -556,7 +556,7 @@ function AnalyticsAdminTiles({ summary }) {
|
|
|
556
556
|
testId: "analytics-tile-sessions",
|
|
557
557
|
label: t("analytics.admin.tiles.sessions"),
|
|
558
558
|
value: decimal(current.sessions, 0),
|
|
559
|
-
delta:
|
|
559
|
+
delta: _chunkC2WQXUL5js.percentageDelta.call(void 0, current.sessions, previous.sessions),
|
|
560
560
|
previousLabel,
|
|
561
561
|
decimal
|
|
562
562
|
}
|
|
@@ -567,7 +567,7 @@ function AnalyticsAdminTiles({ summary }) {
|
|
|
567
567
|
testId: "analytics-tile-page-views",
|
|
568
568
|
label: t("analytics.admin.tiles.page_views"),
|
|
569
569
|
value: decimal(current.pageViews, 0),
|
|
570
|
-
delta:
|
|
570
|
+
delta: _chunkC2WQXUL5js.percentageDelta.call(void 0, current.pageViews, previous.pageViews),
|
|
571
571
|
previousLabel,
|
|
572
572
|
decimal
|
|
573
573
|
}
|
|
@@ -580,7 +580,7 @@ function AnalyticsAdminTiles({ summary }) {
|
|
|
580
580
|
testId: "analytics-tile-pages-per-session",
|
|
581
581
|
label: t("analytics.admin.tiles.pages_per_session"),
|
|
582
582
|
value: decimal(current.pagesPerSession, 1),
|
|
583
|
-
delta:
|
|
583
|
+
delta: _chunkC2WQXUL5js.percentageDelta.call(void 0, current.pagesPerSession, previous.pagesPerSession),
|
|
584
584
|
decimal
|
|
585
585
|
}
|
|
586
586
|
),
|
|
@@ -605,8 +605,8 @@ function LeadTile({
|
|
|
605
605
|
previousLabel,
|
|
606
606
|
decimal
|
|
607
607
|
}) {
|
|
608
|
-
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
609
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
608
|
+
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXUUHPYMMjs.Card, { "data-testid": testId, children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkXUUHPYMMjs.CardContent, { className: "grid gap-1", children: [
|
|
609
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXUUHPYMMjs.MicroLabel, { children: label }),
|
|
610
610
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "text-primary text-xl font-semibold tabular-nums", children: value }),
|
|
611
611
|
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: "flex items-center gap-1", children: [
|
|
612
612
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, Delta, { testId: `${testId}-delta`, delta, decimal }),
|
|
@@ -622,8 +622,8 @@ function SupportingTile({
|
|
|
622
622
|
delta,
|
|
623
623
|
decimal
|
|
624
624
|
}) {
|
|
625
|
-
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
626
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
625
|
+
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXUUHPYMMjs.Card, { "data-testid": testId, size: "sm", children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkXUUHPYMMjs.CardContent, { className: "grid gap-1", children: [
|
|
626
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXUUHPYMMjs.MicroLabel, { children: label }),
|
|
627
627
|
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: "flex items-center gap-2", children: [
|
|
628
628
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "text-sm font-medium tabular-nums", children: value }),
|
|
629
629
|
delta !== void 0 && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, Delta, { testId: `${testId}-delta`, delta, decimal })
|
|
@@ -646,7 +646,7 @@ function Delta({
|
|
|
646
646
|
"span",
|
|
647
647
|
{
|
|
648
648
|
"data-testid": testId,
|
|
649
|
-
className:
|
|
649
|
+
className: _chunk5PNDDYGLjs.cn.call(void 0,
|
|
650
650
|
"inline-flex items-center gap-0.5 text-xs tabular-nums",
|
|
651
651
|
increased ? "text-success" : "text-destructive"
|
|
652
652
|
),
|
|
@@ -674,15 +674,15 @@ function AnalyticsBreakdownTable({ breakdowns }) {
|
|
|
674
674
|
route: t("analytics.admin.dimensions.route"),
|
|
675
675
|
landing: t("analytics.admin.dimensions.landing")
|
|
676
676
|
};
|
|
677
|
-
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
678
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
679
|
-
ANALYTICS_DIMENSIONS.map((dimension) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
677
|
+
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkXUUHPYMMjs.Tabs, { defaultValue: ANALYTICS_DIMENSIONS[0], children: [
|
|
678
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXUUHPYMMjs.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, _chunkXUUHPYMMjs.TabsTrigger, { value: dimension, children: labels[dimension] }, dimension)) }),
|
|
679
|
+
ANALYTICS_DIMENSIONS.map((dimension) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXUUHPYMMjs.TabsContent, { value: dimension, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, BreakdownRows, { rows: _nullishCoalesce(breakdowns[dimension], () => ( [])) }) }, dimension))
|
|
680
680
|
] });
|
|
681
681
|
}
|
|
682
682
|
_chunk7QVYU63Ejs.__name.call(void 0, AnalyticsBreakdownTable, "AnalyticsBreakdownTable");
|
|
683
683
|
function BreakdownRows({ rows }) {
|
|
684
684
|
const t = _nextintl.useTranslations.call(void 0, );
|
|
685
|
-
const { decimal } =
|
|
685
|
+
const { decimal } = _chunkC2WQXUL5js.useUsageFormatters.call(void 0, );
|
|
686
686
|
const sortedRows = _react.useMemo.call(void 0, () => [...rows].sort((a, b) => b.visitors - a.visitors), [rows]);
|
|
687
687
|
if (sortedRows.length === 0) {
|
|
688
688
|
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "text-muted-foreground text-sm", children: t("analytics.admin.no_data") });
|
|
@@ -691,18 +691,18 @@ function BreakdownRows({ rows }) {
|
|
|
691
691
|
// The package's <Table> wraps itself in an `overflow-x-clip` container, which
|
|
692
692
|
// would swallow the overflow before this scroller ever saw it — hence the
|
|
693
693
|
// child override. Wide tables must scroll, never widen the page.
|
|
694
|
-
/* @__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,
|
|
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,
|
|
694
|
+
/* @__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, _chunkXUUHPYMMjs.Table, { children: [
|
|
695
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXUUHPYMMjs.TableHeader, { children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkXUUHPYMMjs.TableRow, { children: [
|
|
696
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXUUHPYMMjs.TableHead, { className: "text-xs font-medium", children: t("analytics.admin.columns.key") }),
|
|
697
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXUUHPYMMjs.TableHead, { className: "text-end text-xs font-medium", children: t("analytics.admin.columns.visitors") }),
|
|
698
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXUUHPYMMjs.TableHead, { className: "text-end text-xs font-medium", children: t("analytics.admin.columns.sessions") }),
|
|
699
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXUUHPYMMjs.TableHead, { className: "text-end text-xs font-medium", children: t("analytics.admin.columns.page_views") })
|
|
700
700
|
] }) }),
|
|
701
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
702
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
703
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
704
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
705
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
701
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXUUHPYMMjs.TableBody, { children: sortedRows.map((row) => /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkXUUHPYMMjs.TableRow, { "data-testid": `analytics-breakdown-row-${row.id}`, children: [
|
|
702
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXUUHPYMMjs.TableCell, { className: "text-xs", children: row.key === OTHER_KEY ? t("analytics.admin.other") : row.key }),
|
|
703
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXUUHPYMMjs.TableCell, { className: "text-end text-xs tabular-nums", children: decimal(row.visitors, 0) }),
|
|
704
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXUUHPYMMjs.TableCell, { className: "text-end text-xs tabular-nums", children: decimal(row.sessions, 0) }),
|
|
705
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXUUHPYMMjs.TableCell, { className: "text-end text-xs tabular-nums", children: decimal(row.pageViews, 0) })
|
|
706
706
|
] }, row.id)) })
|
|
707
707
|
] }) })
|
|
708
708
|
);
|
|
@@ -717,48 +717,48 @@ var VISITOR_SUFFIX_LENGTH = 6;
|
|
|
717
717
|
function AnalyticsSessionsTable({ rows, sessionPageUrl, onLoadMore, hasMore }) {
|
|
718
718
|
const t = _nextintl.useTranslations.call(void 0, );
|
|
719
719
|
const locale = _nextintl.useLocale.call(void 0, );
|
|
720
|
-
const generateUrl =
|
|
721
|
-
const { decimal } =
|
|
720
|
+
const generateUrl = _chunkXUUHPYMMjs.usePageUrlGenerator.call(void 0, );
|
|
721
|
+
const { decimal } = _chunkC2WQXUL5js.useUsageFormatters.call(void 0, );
|
|
722
722
|
const dateTime = _react.useMemo.call(void 0, () => new Intl.DateTimeFormat(locale, { dateStyle: "short", timeStyle: "short" }), [locale]);
|
|
723
723
|
if (rows.length === 0) {
|
|
724
724
|
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "text-muted-foreground text-sm", children: t("analytics.admin.no_data") });
|
|
725
725
|
}
|
|
726
726
|
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex flex-col gap-3", children: [
|
|
727
|
-
/* @__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,
|
|
728
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
729
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
730
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
731
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
732
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
733
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
734
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
727
|
+
/* @__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, _chunkXUUHPYMMjs.Table, { children: [
|
|
728
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXUUHPYMMjs.TableHeader, { children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkXUUHPYMMjs.TableRow, { children: [
|
|
729
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXUUHPYMMjs.TableHead, { className: "text-xs font-medium", children: t("analytics.admin.columns.started") }),
|
|
730
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXUUHPYMMjs.TableHead, { className: "text-xs font-medium", children: t("analytics.admin.columns.visitor") }),
|
|
731
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXUUHPYMMjs.TableHead, { className: "text-xs font-medium", children: t("analytics.admin.columns.source") }),
|
|
732
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXUUHPYMMjs.TableHead, { className: "text-xs font-medium", children: t("analytics.admin.columns.landing") }),
|
|
733
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXUUHPYMMjs.TableHead, { className: "text-end text-xs font-medium", children: t("analytics.admin.columns.pages") }),
|
|
734
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXUUHPYMMjs.TableHead, { className: "text-xs font-medium", children: t("analytics.admin.columns.device") })
|
|
735
735
|
] }) }),
|
|
736
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
736
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXUUHPYMMjs.TableBody, { children: rows.map((row) => {
|
|
737
737
|
const source = [_nullishCoalesce(row.utmSource, () => ( row.referrerHost)), row.utmMedium].filter(Boolean).join(" / ");
|
|
738
|
-
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
739
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
740
|
-
|
|
738
|
+
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkXUUHPYMMjs.TableRow, { "data-testid": `analytics-session-row-${row.id}`, children: [
|
|
739
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXUUHPYMMjs.TableCell, { className: "text-xs tabular-nums", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
740
|
+
_chunkXUUHPYMMjs.Link,
|
|
741
741
|
{
|
|
742
742
|
href: generateUrl({ page: sessionPageUrl, id: row.id }),
|
|
743
743
|
"data-testid": `analytics-session-link-${row.id}`,
|
|
744
744
|
children: dateTime.format(row.startedAt)
|
|
745
745
|
}
|
|
746
746
|
) }),
|
|
747
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
747
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXUUHPYMMjs.TableCell, { className: "text-xs", children: row.user ? /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: "flex flex-col", children: [
|
|
748
748
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { children: row.user.name }),
|
|
749
749
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "text-muted-foreground text-xs", children: row.user.email })
|
|
750
750
|
] }) : /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: "flex items-center gap-2", children: [
|
|
751
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
751
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXUUHPYMMjs.Badge, { variant: "softGray", children: t("analytics.admin.anonymous") }),
|
|
752
752
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "text-muted-foreground text-xs tabular-nums", children: row.visitorId.slice(-VISITOR_SUFFIX_LENGTH) })
|
|
753
753
|
] }) }),
|
|
754
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
755
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
756
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
757
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
754
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXUUHPYMMjs.TableCell, { className: "text-xs", children: source }),
|
|
755
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXUUHPYMMjs.TableCell, { className: "text-xs", children: row.landingRoute }),
|
|
756
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXUUHPYMMjs.TableCell, { className: "text-end text-xs tabular-nums", children: decimal(row.pageViews, 0) }),
|
|
757
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXUUHPYMMjs.TableCell, { className: "text-muted-foreground text-xs", children: row.deviceType })
|
|
758
758
|
] }, row.id);
|
|
759
759
|
}) })
|
|
760
760
|
] }) }),
|
|
761
|
-
hasMore && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "flex justify-center", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
761
|
+
hasMore && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "flex justify-center", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXUUHPYMMjs.Button, { type: "button", variant: "outline", size: "sm", onClick: onLoadMore, children: t("analytics.admin.load_more") }) })
|
|
762
762
|
] });
|
|
763
763
|
}
|
|
764
764
|
_chunk7QVYU63Ejs.__name.call(void 0, AnalyticsSessionsTable, "AnalyticsSessionsTable");
|
|
@@ -790,7 +790,7 @@ var inferGranularity = /* @__PURE__ */ _chunk7QVYU63Ejs.__name.call(void 0, (buc
|
|
|
790
790
|
}, "inferGranularity");
|
|
791
791
|
function AnalyticsTimelineChart({ rows, className }) {
|
|
792
792
|
const t = _nextintl.useTranslations.call(void 0, );
|
|
793
|
-
const { compact, bucketDate, decimal } =
|
|
793
|
+
const { compact, bucketDate, decimal } = _chunkC2WQXUL5js.useUsageFormatters.call(void 0, );
|
|
794
794
|
const { resolvedTheme } = _nextthemes.useTheme.call(void 0, );
|
|
795
795
|
const mode = resolvedTheme === "dark" ? "dark" : "light";
|
|
796
796
|
const chartData = _react.useMemo.call(void 0, () => {
|
|
@@ -825,7 +825,7 @@ function AnalyticsTimelineChart({ rows, className }) {
|
|
|
825
825
|
// rtl-ok: deliberate LTR island (chart)
|
|
826
826
|
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className, dir: "ltr", children: [
|
|
827
827
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "sr-only", "data-testid": "analytics-timeline-data", children: JSON.stringify(chartData) }),
|
|
828
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
828
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXUUHPYMMjs.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: [
|
|
829
829
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _recharts.CartesianGrid, { vertical: false }),
|
|
830
830
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
831
831
|
_recharts.XAxis,
|
|
@@ -849,10 +849,10 @@ function AnalyticsTimelineChart({ rows, className }) {
|
|
|
849
849
|
}
|
|
850
850
|
),
|
|
851
851
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
852
|
-
|
|
852
|
+
_chunkXUUHPYMMjs.ChartTooltip,
|
|
853
853
|
{
|
|
854
854
|
content: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
855
|
-
|
|
855
|
+
_chunkXUUHPYMMjs.ChartTooltipContent,
|
|
856
856
|
{
|
|
857
857
|
labelFormatter: (value) => bucketDate(String(value), granularity),
|
|
858
858
|
valueFormatter: (value) => decimal(Number(value), 0)
|
|
@@ -860,13 +860,13 @@ function AnalyticsTimelineChart({ rows, className }) {
|
|
|
860
860
|
)
|
|
861
861
|
}
|
|
862
862
|
),
|
|
863
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
863
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXUUHPYMMjs.ChartLegend, { content: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXUUHPYMMjs.ChartLegendContent, {}) }),
|
|
864
864
|
SERIES.map((series, index) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
865
865
|
_recharts.Bar,
|
|
866
866
|
{
|
|
867
867
|
dataKey: series,
|
|
868
868
|
maxBarSize: 28,
|
|
869
|
-
fill:
|
|
869
|
+
fill: _chunkC2WQXUL5js.seriesColor.call(void 0, index, mode),
|
|
870
870
|
stroke: "var(--background)",
|
|
871
871
|
strokeWidth: 2,
|
|
872
872
|
radius: [4, 4, 0, 0]
|
|
@@ -895,25 +895,25 @@ function AnalyticsAdminContainer() {
|
|
|
895
895
|
error
|
|
896
896
|
} = useAnalyticsAdmin();
|
|
897
897
|
if (error) {
|
|
898
|
-
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
898
|
+
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXUUHPYMMjs.RoundPageContainer, { fullWidth: true, forceHeader: true, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "p-4", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXUUHPYMMjs.Card, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXUUHPYMMjs.CardContent, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "text-destructive text-xs/relaxed", children: error }) }) }) }) });
|
|
899
899
|
}
|
|
900
|
-
if (isLoading) return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
901
|
-
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
900
|
+
if (isLoading) return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXUUHPYMMjs.RoundPageContainer, { fullWidth: true, forceHeader: true });
|
|
901
|
+
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXUUHPYMMjs.RoundPageContainer, { fullWidth: true, forceHeader: true, children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex w-full flex-col gap-4 p-4", children: [
|
|
902
902
|
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex flex-col gap-2", children: [
|
|
903
903
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, AnalyticsAdminTiles, { summary }),
|
|
904
904
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "text-muted-foreground text-xs", children: t("analytics.admin.tiles.summarised_note") })
|
|
905
905
|
] }),
|
|
906
|
-
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
907
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
908
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
906
|
+
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkXUUHPYMMjs.Card, { children: [
|
|
907
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXUUHPYMMjs.CardHeader, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXUUHPYMMjs.CardTitle, { children: t("analytics.admin.panels.over_time") }) }),
|
|
908
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXUUHPYMMjs.CardContent, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, AnalyticsTimelineChart, { rows: timeline }) })
|
|
909
909
|
] }),
|
|
910
|
-
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
911
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
912
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
910
|
+
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkXUUHPYMMjs.Card, { children: [
|
|
911
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXUUHPYMMjs.CardHeader, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXUUHPYMMjs.CardTitle, { children: t("analytics.admin.panels.breakdown") }) }),
|
|
912
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXUUHPYMMjs.CardContent, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, AnalyticsBreakdownTable, { breakdowns }) })
|
|
913
913
|
] }),
|
|
914
|
-
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
915
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
916
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
914
|
+
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkXUUHPYMMjs.Card, { children: [
|
|
915
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXUUHPYMMjs.CardHeader, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXUUHPYMMjs.CardTitle, { children: t("analytics.admin.panels.sessions") }) }),
|
|
916
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXUUHPYMMjs.CardContent, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
917
917
|
AnalyticsSessionsTable,
|
|
918
918
|
{
|
|
919
919
|
rows: sessions,
|
|
@@ -936,7 +936,7 @@ var OTHER_SESSIONS_WINDOW_DAYS = 395;
|
|
|
936
936
|
function AnalyticsJourneyContainer({ sessionId, pageUrl = ANALYTICS_ADMIN_PAGE_URL2 }) {
|
|
937
937
|
const t = _nextintl.useTranslations.call(void 0, );
|
|
938
938
|
const locale = _nextintl.useLocale.call(void 0, );
|
|
939
|
-
const generateUrl =
|
|
939
|
+
const generateUrl = _chunkXUUHPYMMjs.usePageUrlGenerator.call(void 0, );
|
|
940
940
|
const [session, setSession] = _react.useState.call(void 0, void 0);
|
|
941
941
|
const [pageViews, setPageViews] = _react.useState.call(void 0, []);
|
|
942
942
|
const [otherSessions, setOtherSessions] = _react.useState.call(void 0, []);
|
|
@@ -992,26 +992,26 @@ function AnalyticsJourneyContainer({ sessionId, pageUrl = ANALYTICS_ADMIN_PAGE_U
|
|
|
992
992
|
const title = { type: t("analytics.admin.panels.journey") };
|
|
993
993
|
const renderBody = /* @__PURE__ */ _chunk7QVYU63Ejs.__name.call(void 0, () => {
|
|
994
994
|
if (error) {
|
|
995
|
-
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
995
|
+
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXUUHPYMMjs.RoundPageContainer, { fullWidth: true, forceHeader: true, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "p-4", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXUUHPYMMjs.Card, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXUUHPYMMjs.CardContent, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "text-destructive text-xs/relaxed", children: error }) }) }) }) });
|
|
996
996
|
}
|
|
997
|
-
if (isLoading || !session) return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
997
|
+
if (isLoading || !session) return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXUUHPYMMjs.RoundPageContainer, { fullWidth: true, forceHeader: true });
|
|
998
998
|
const source = [_nullishCoalesce(session.utmSource, () => ( session.referrerHost)), session.utmMedium, session.utmCampaign].filter(Boolean).join(" / ");
|
|
999
|
-
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1000
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
999
|
+
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXUUHPYMMjs.RoundPageContainer, { fullWidth: true, forceHeader: true, children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex w-full flex-col gap-4 p-4", children: [
|
|
1000
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXUUHPYMMjs.Card, { "data-testid": "analytics-journey-attribution", children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkXUUHPYMMjs.CardContent, { className: "flex flex-col gap-3", children: [
|
|
1001
1001
|
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex flex-wrap items-center gap-2", children: [
|
|
1002
1002
|
session.user ? /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: "flex flex-col", children: [
|
|
1003
1003
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "text-sm", children: session.user.name }),
|
|
1004
1004
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "text-muted-foreground text-xs", children: session.user.email })
|
|
1005
|
-
] }) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1006
|
-
session.consented ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1005
|
+
] }) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXUUHPYMMjs.Badge, { variant: "softGray", children: t("analytics.admin.anonymous") }),
|
|
1006
|
+
session.consented ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXUUHPYMMjs.Badge, { variant: "softGreen", children: t("analytics.admin.consented") }) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXUUHPYMMjs.Badge, { variant: "softGray", children: t("analytics.admin.not_consented") })
|
|
1007
1007
|
] }),
|
|
1008
1008
|
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "grid gap-3 sm:grid-cols-3", children: [
|
|
1009
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1010
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1011
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1012
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1009
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXUUHPYMMjs.DetailField, { label: t("analytics.admin.columns.started"), value: dateTime.format(session.startedAt) }),
|
|
1010
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXUUHPYMMjs.DetailField, { label: t("analytics.admin.columns.source"), value: source }),
|
|
1011
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXUUHPYMMjs.DetailField, { label: t("analytics.admin.columns.landing"), value: session.landingRoute }),
|
|
1012
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXUUHPYMMjs.DetailField, { label: t("analytics.admin.columns.device"), value: session.deviceType }),
|
|
1013
1013
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1014
|
-
|
|
1014
|
+
_chunkXUUHPYMMjs.DetailField,
|
|
1015
1015
|
{
|
|
1016
1016
|
label: t("analytics.admin.columns.visitor"),
|
|
1017
1017
|
value: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "tabular-nums", children: session.visitorId })
|
|
@@ -1019,31 +1019,31 @@ function AnalyticsJourneyContainer({ sessionId, pageUrl = ANALYTICS_ADMIN_PAGE_U
|
|
|
1019
1019
|
)
|
|
1020
1020
|
] })
|
|
1021
1021
|
] }) }),
|
|
1022
|
-
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
1023
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1024
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1022
|
+
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkXUUHPYMMjs.Card, { children: [
|
|
1023
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXUUHPYMMjs.CardHeader, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXUUHPYMMjs.CardTitle, { children: t("analytics.admin.columns.pages") }) }),
|
|
1024
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXUUHPYMMjs.CardContent, { children: pageViews.length === 0 ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "text-muted-foreground text-sm", children: t("analytics.admin.no_data") }) : (
|
|
1025
1025
|
// The package's <Table> wraps itself in an `overflow-x-clip`
|
|
1026
1026
|
// container — hence the child override, so wide rows scroll.
|
|
1027
|
-
/* @__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,
|
|
1028
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1029
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1030
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1031
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1027
|
+
/* @__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, _chunkXUUHPYMMjs.Table, { children: [
|
|
1028
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXUUHPYMMjs.TableHeader, { children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkXUUHPYMMjs.TableRow, { children: [
|
|
1029
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXUUHPYMMjs.TableHead, { className: "text-xs font-medium", children: t("analytics.admin.columns.time") }),
|
|
1030
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXUUHPYMMjs.TableHead, { className: "text-end text-xs font-medium", children: t("analytics.admin.columns.gap") }),
|
|
1031
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXUUHPYMMjs.TableHead, { className: "text-xs font-medium", children: t("analytics.admin.columns.path") })
|
|
1032
1032
|
] }) }),
|
|
1033
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1033
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXUUHPYMMjs.TableBody, { children: pageViews.map((pageView, index) => {
|
|
1034
1034
|
const previous = index > 0 ? pageViews[index - 1] : void 0;
|
|
1035
|
-
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
1036
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1037
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1038
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1035
|
+
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkXUUHPYMMjs.TableRow, { "data-testid": `analytics-pageview-row-${pageView.id}`, children: [
|
|
1036
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXUUHPYMMjs.TableCell, { className: "text-xs tabular-nums", children: dateTime.format(pageView.createdAt) }),
|
|
1037
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXUUHPYMMjs.TableCell, { className: "text-end text-xs tabular-nums", children: previous ? formatGap(pageView.createdAt.getTime() - previous.createdAt.getTime()) : "\u2014" }),
|
|
1038
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXUUHPYMMjs.TableCell, { className: "text-xs", children: pageView.path })
|
|
1039
1039
|
] }, pageView.id);
|
|
1040
1040
|
}) })
|
|
1041
1041
|
] }) })
|
|
1042
1042
|
) })
|
|
1043
1043
|
] }),
|
|
1044
|
-
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
1045
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1046
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1044
|
+
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkXUUHPYMMjs.Card, { children: [
|
|
1045
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXUUHPYMMjs.CardHeader, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXUUHPYMMjs.CardTitle, { children: t("analytics.admin.panels.other_sessions") }) }),
|
|
1046
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXUUHPYMMjs.CardContent, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1047
1047
|
AnalyticsSessionsTable,
|
|
1048
1048
|
{
|
|
1049
1049
|
rows: otherSessions,
|
|
@@ -1055,7 +1055,7 @@ function AnalyticsJourneyContainer({ sessionId, pageUrl = ANALYTICS_ADMIN_PAGE_U
|
|
|
1055
1055
|
] })
|
|
1056
1056
|
] }) });
|
|
1057
1057
|
}, "renderBody");
|
|
1058
|
-
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1058
|
+
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXUUHPYMMjs.SharedProvider, { value: { breadcrumbs: breadcrumb, title }, children: renderBody() });
|
|
1059
1059
|
}
|
|
1060
1060
|
_chunk7QVYU63Ejs.__name.call(void 0, AnalyticsJourneyContainer, "AnalyticsJourneyContainer");
|
|
1061
1061
|
function unit(locale, name, value) {
|
|
@@ -1163,5 +1163,5 @@ var ANALYTICS_ADMIN_I18N_KEYS = [
|
|
|
1163
1163
|
|
|
1164
1164
|
|
|
1165
1165
|
|
|
1166
|
-
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 =
|
|
1166
|
+
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 = _chunk5PNDDYGLjs.AnalyticsBreakdown; exports.AnalyticsBreakdownTable = AnalyticsBreakdownTable; exports.AnalyticsEvent = _chunk5PNDDYGLjs.AnalyticsEvent; exports.AnalyticsJourneyContainer = AnalyticsJourneyContainer; exports.AnalyticsJourneyPageContainer = AnalyticsJourneyPageContainer; exports.AnalyticsPageView = _chunk5PNDDYGLjs.AnalyticsPageView; exports.AnalyticsService = AnalyticsService; exports.AnalyticsSession = _chunk5PNDDYGLjs.AnalyticsSession; exports.AnalyticsSessionsTable = AnalyticsSessionsTable; exports.AnalyticsSummary = _chunk5PNDDYGLjs.AnalyticsSummary; exports.AnalyticsTimeline = _chunk5PNDDYGLjs.AnalyticsTimeline; exports.AnalyticsTimelineChart = AnalyticsTimelineChart; exports.AnalyticsTracker = AnalyticsTracker; exports.analyticsModules = _chunk5PNDDYGLjs.analyticsModules; exports.useAnalyticsAdmin = useAnalyticsAdmin;
|
|
1167
1167
|
//# sourceMappingURL=index.js.map
|