@carlonicora/nextjs-jsonapi 6.18.0 → 6.20.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-KSOVYIOL.mjs → BlockNoteEditor-7JRJ3XWV.mjs} +5 -5
- package/dist/{BlockNoteEditor-HHTAZKRO.js → BlockNoteEditor-MH2D5L4A.js} +20 -20
- package/dist/{BlockNoteEditor-HHTAZKRO.js.map → BlockNoteEditor-MH2D5L4A.js.map} +1 -1
- package/dist/{BlockNoteViewer-XYKFY77F.js → BlockNoteViewer-72J3CBAH.js} +4 -4
- package/dist/{BlockNoteViewer-XYKFY77F.js.map → BlockNoteViewer-72J3CBAH.js.map} +1 -1
- package/dist/{BlockNoteViewer-X4UEVI2A.mjs → BlockNoteViewer-UKYEU3E3.mjs} +3 -3
- package/dist/{analytics.modules-Bsacu6ik.d.ts → analytics.modules-C4OT7fVa.d.ts} +1 -0
- package/dist/{analytics.modules-txdCLNG-.d.mts → analytics.modules-DEnXnRGt.d.mts} +1 -0
- package/dist/billing/index.js +492 -492
- package/dist/billing/index.mjs +4 -4
- package/dist/{chunk-OKBJEIOP.mjs → chunk-2U57XVNF.mjs} +1 -1
- package/dist/chunk-2U57XVNF.mjs.map +1 -0
- package/dist/{chunk-KMPBSOFB.mjs → chunk-ASORDSWQ.mjs} +50 -2
- package/dist/chunk-ASORDSWQ.mjs.map +1 -0
- package/dist/{chunk-B6WMZXRY.js → chunk-IN2F6HI2.js} +1242 -1206
- package/dist/chunk-IN2F6HI2.js.map +1 -0
- package/dist/{chunk-DFA566KY.js → chunk-JAOBCIE7.js} +4 -4
- package/dist/{chunk-DFA566KY.js.map → chunk-JAOBCIE7.js.map} +1 -1
- package/dist/{chunk-YVKWACDP.mjs → chunk-LSZZIQJ5.mjs} +2 -2
- package/dist/{chunk-I5BQLY7V.js → chunk-MVAIYPIN.js} +9 -9
- package/dist/{chunk-I5BQLY7V.js.map → chunk-MVAIYPIN.js.map} +1 -1
- package/dist/{chunk-MBLF236G.mjs → chunk-NKXNOGMH.mjs} +47 -11
- package/dist/chunk-NKXNOGMH.mjs.map +1 -0
- package/dist/{chunk-OO2DBP6L.js → chunk-SGLFQ55U.js} +942 -894
- package/dist/chunk-SGLFQ55U.js.map +1 -0
- package/dist/{chunk-TY5YWBLL.mjs → chunk-SJ3K3ATF.mjs} +3 -3
- package/dist/{chunk-A7Y5YW7Q.js → chunk-V7CHD7QT.js} +1 -1
- package/dist/{chunk-A7Y5YW7Q.js.map → chunk-V7CHD7QT.js.map} +1 -1
- package/dist/client/index.js +5 -5
- package/dist/client/index.mjs +4 -4
- package/dist/components/index.d.mts +7 -1
- package/dist/components/index.d.ts +7 -1
- 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.d.mts +2 -1
- package/dist/core/index.d.ts +2 -1
- package/dist/core/index.js +3 -3
- package/dist/core/index.mjs +2 -2
- package/dist/email-automations/index.js +118 -118
- package/dist/email-automations/index.mjs +4 -4
- package/dist/features/analytics/index.d.mts +60 -3
- package/dist/features/analytics/index.d.ts +60 -3
- package/dist/features/analytics/index.js +320 -128
- package/dist/features/analytics/index.js.map +1 -1
- package/dist/features/analytics/index.mjs +314 -122
- package/dist/features/analytics/index.mjs.map +1 -1
- package/dist/features/analytics/server.js +5 -5
- package/dist/features/analytics/server.mjs +3 -3
- package/dist/features/blog/index.js +151 -151
- package/dist/features/blog/index.mjs +4 -4
- package/dist/features/blog/server.js +17 -17
- package/dist/features/blog/server.mjs +2 -2
- package/dist/features/help/index.js +38 -38
- package/dist/features/help/index.mjs +4 -4
- package/dist/features/tokenusage/index.js +127 -127
- package/dist/features/tokenusage/index.mjs +4 -4
- package/dist/index.d.mts +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +4 -4
- package/dist/index.mjs +3 -3
- package/dist/offline/index.js +14 -14
- package/dist/offline/index.mjs +1 -1
- package/dist/server/index.js +4 -4
- package/dist/server/index.mjs +3 -3
- package/messages/en.json +8 -0
- package/messages/it.json +8 -0
- package/package.json +1 -1
- package/src/components/forms/FormDateTime.tsx +55 -3
- package/src/core/registry/ModuleRegistry.ts +1 -0
- package/src/features/analytics/analytics.modules.ts +6 -0
- package/src/features/analytics/components/AnalyticsAdminContainer.tsx +20 -0
- package/src/features/analytics/components/AnalyticsDailyUniquesChart.tsx +224 -0
- package/src/features/analytics/components/__tests__/AnalyticsDailyUniquesChart.spec.tsx +88 -0
- package/src/features/analytics/components/__tests__/AnalyticsPageContainers.spec.tsx +22 -0
- package/src/features/analytics/contexts/AnalyticsAdminContext.tsx +15 -2
- package/src/features/analytics/contexts/__tests__/AnalyticsAdminContext.spec.tsx +38 -0
- package/src/features/analytics/data/AnalyticsAdminService.ts +20 -0
- package/src/features/analytics/data/__tests__/AnalyticsAdminService.spec.ts +15 -0
- package/src/features/analytics/data/__tests__/models.spec.ts +29 -0
- package/src/features/analytics/data/analytics-daily-unique-timeline.interface.ts +11 -0
- package/src/features/analytics/data/analytics-daily-unique-timeline.ts +53 -0
- package/src/features/analytics/data/analytics.types.ts +10 -0
- package/src/features/analytics/data/index.ts +2 -0
- package/src/features/analytics/i18n-keys.ts +8 -0
- package/src/features/analytics/index.ts +1 -0
- package/dist/chunk-B6WMZXRY.js.map +0 -1
- package/dist/chunk-KMPBSOFB.mjs.map +0 -1
- package/dist/chunk-MBLF236G.mjs.map +0 -1
- package/dist/chunk-OKBJEIOP.mjs.map +0 -1
- package/dist/chunk-OO2DBP6L.js.map +0 -1
- /package/dist/{BlockNoteEditor-KSOVYIOL.mjs.map → BlockNoteEditor-7JRJ3XWV.mjs.map} +0 -0
- /package/dist/{BlockNoteViewer-X4UEVI2A.mjs.map → BlockNoteViewer-UKYEU3E3.mjs.map} +0 -0
- /package/dist/{chunk-YVKWACDP.mjs.map → chunk-LSZZIQJ5.mjs.map} +0 -0
- /package/dist/{chunk-TY5YWBLL.mjs.map → chunk-SJ3K3ATF.mjs.map} +0 -0
|
@@ -45,9 +45,9 @@ import {
|
|
|
45
45
|
useDebounce,
|
|
46
46
|
usePageUrlGenerator,
|
|
47
47
|
useSidebar
|
|
48
|
-
} from "../chunk-
|
|
48
|
+
} from "../chunk-NKXNOGMH.mjs";
|
|
49
49
|
import "../chunk-VOXD3ZLY.mjs";
|
|
50
|
-
import "../chunk-
|
|
50
|
+
import "../chunk-SJ3K3ATF.mjs";
|
|
51
51
|
import "../chunk-PW42LRSL.mjs";
|
|
52
52
|
import {
|
|
53
53
|
EmailAutomationEnrollmentService,
|
|
@@ -60,12 +60,12 @@ import {
|
|
|
60
60
|
showError,
|
|
61
61
|
showToast,
|
|
62
62
|
useIsMobile
|
|
63
|
-
} from "../chunk-
|
|
63
|
+
} from "../chunk-ASORDSWQ.mjs";
|
|
64
64
|
import "../chunk-OY65RYD3.mjs";
|
|
65
65
|
import {
|
|
66
66
|
Modules,
|
|
67
67
|
useI18nRouter
|
|
68
|
-
} from "../chunk-
|
|
68
|
+
} from "../chunk-2U57XVNF.mjs";
|
|
69
69
|
import "../chunk-AUD6ZLBB.mjs";
|
|
70
70
|
import "../chunk-M3N7LPHX.mjs";
|
|
71
71
|
import "../chunk-4ZJIUTIV.mjs";
|
|
@@ -4,7 +4,7 @@ import { A as ApiDataInterface, J as JsonApiHydratedDataInterface } from '../../
|
|
|
4
4
|
import { U as UserInterface } from '../../user.interface-Bm-0TbsB.mjs';
|
|
5
5
|
import { A as AbstractApiData } from '../../AbstractApiData-CKy8tbde.mjs';
|
|
6
6
|
import { A as AbstractService, N as NextRef } from '../../AbstractService-N0wFgaHD.mjs';
|
|
7
|
-
export { a as analyticsModules } from '../../analytics.modules-
|
|
7
|
+
export { a as analyticsModules } from '../../analytics.modules-DEnXnRGt.mjs';
|
|
8
8
|
import '../../stripe-price.interface-D6mKjAdr.mjs';
|
|
9
9
|
import '../../ApiRequestDataTypeInterface-CYEcRUrh.mjs';
|
|
10
10
|
import '../../types-Bq_UA8Lg.mjs';
|
|
@@ -31,6 +31,16 @@ interface AnalyticsBreakdownInterface extends ApiDataInterface {
|
|
|
31
31
|
get pageViews(): number;
|
|
32
32
|
}
|
|
33
33
|
|
|
34
|
+
/** One calendar day of the unique visitors / unique users charts. */
|
|
35
|
+
interface AnalyticsDailyUniqueTimelineInterface extends ApiDataInterface {
|
|
36
|
+
/** Backend declares this `type: "date"`, so it is a Date in memory. */
|
|
37
|
+
get day(): Date;
|
|
38
|
+
/** null = unknown for that day (drawn as a gap). */
|
|
39
|
+
get visitors(): number | null;
|
|
40
|
+
/** null = unknown for that day (drawn as a gap). */
|
|
41
|
+
get users(): number | null;
|
|
42
|
+
}
|
|
43
|
+
|
|
34
44
|
interface AnalyticsSessionInterface extends ApiDataInterface {
|
|
35
45
|
get visitorId(): string;
|
|
36
46
|
get consented(): boolean;
|
|
@@ -119,6 +129,15 @@ type AnalyticsTimelineInput = {
|
|
|
119
129
|
sessions: number;
|
|
120
130
|
pageViews: number;
|
|
121
131
|
};
|
|
132
|
+
type AnalyticsDailyUniqueTimelineInput = {
|
|
133
|
+
id: string;
|
|
134
|
+
/** Backend field type is "date" — emitted via formatLocalDate, never raw. */
|
|
135
|
+
day?: Date;
|
|
136
|
+
/** null = unknown for that day. */
|
|
137
|
+
visitors?: number | null;
|
|
138
|
+
/** null = unknown for that day. */
|
|
139
|
+
users?: number | null;
|
|
140
|
+
};
|
|
122
141
|
type AnalyticsBreakdownInput = {
|
|
123
142
|
id: string;
|
|
124
143
|
dimension: string;
|
|
@@ -170,6 +189,8 @@ interface AnalyticsAdminContextType {
|
|
|
170
189
|
timeline: AnalyticsTimelineInterface[];
|
|
171
190
|
breakdowns: Record<AnalyticsDimension, AnalyticsBreakdownInterface[]>;
|
|
172
191
|
sessions: AnalyticsSessionInterface[];
|
|
192
|
+
/** One row per day of the range: unique visitors and users, never filtered by section. */
|
|
193
|
+
dailyUniques: AnalyticsDailyUniqueTimelineInterface[];
|
|
173
194
|
filters: AnalyticsAdminFilterState;
|
|
174
195
|
/** Merges a partial patch into the current filters; every key is optional. */
|
|
175
196
|
setFilters: (next: Partial<AnalyticsAdminFilterState>) => void;
|
|
@@ -275,6 +296,22 @@ type AnalyticsTimelineChartProps = {
|
|
|
275
296
|
*/
|
|
276
297
|
declare function AnalyticsTimelineChart({ rows, className }: AnalyticsTimelineChartProps): React.JSX.Element;
|
|
277
298
|
|
|
299
|
+
type DailyUniquesMetric = "visitors" | "users";
|
|
300
|
+
type AnalyticsDailyUniquesChartProps = {
|
|
301
|
+
rows: AnalyticsDailyUniqueTimelineInterface[];
|
|
302
|
+
metric: DailyUniquesMetric;
|
|
303
|
+
className?: string;
|
|
304
|
+
};
|
|
305
|
+
/**
|
|
306
|
+
* Unique visitors or unique users per day, as a line.
|
|
307
|
+
*
|
|
308
|
+
* Always daily and never filtered by section: one row per day of the picked
|
|
309
|
+
* range, as the backend returns it. One series, so no legend — the card title
|
|
310
|
+
* names it. Colour does an identity job (the same metric keeps the same colour
|
|
311
|
+
* as in the "Over time" chart); the tooltip carries the value as text.
|
|
312
|
+
*/
|
|
313
|
+
declare function AnalyticsDailyUniquesChart({ rows, metric, className }: AnalyticsDailyUniquesChartProps): React.JSX.Element;
|
|
314
|
+
|
|
278
315
|
type Props$4 = {
|
|
279
316
|
breakdowns: Record<AnalyticsDimension, AnalyticsBreakdownInterface[]>;
|
|
280
317
|
};
|
|
@@ -402,6 +439,18 @@ declare class AnalyticsTimeline extends AbstractApiData implements AnalyticsTime
|
|
|
402
439
|
createJsonApi(data: AnalyticsTimelineInput): any;
|
|
403
440
|
}
|
|
404
441
|
|
|
442
|
+
/** One day of the daily unique visitors / users charts. A null count is an unknown day, never 0. */
|
|
443
|
+
declare class AnalyticsDailyUniqueTimeline extends AbstractApiData implements AnalyticsDailyUniqueTimelineInterface {
|
|
444
|
+
private _day;
|
|
445
|
+
private _visitors;
|
|
446
|
+
private _users;
|
|
447
|
+
get day(): Date;
|
|
448
|
+
get visitors(): number | null;
|
|
449
|
+
get users(): number | null;
|
|
450
|
+
rehydrate(data: JsonApiHydratedDataInterface): this;
|
|
451
|
+
createJsonApi(data: AnalyticsDailyUniqueTimelineInput): any;
|
|
452
|
+
}
|
|
453
|
+
|
|
405
454
|
/** One row of a breakdown table: a key (source, route, …) and its counts. */
|
|
406
455
|
declare class AnalyticsBreakdown extends AbstractApiData implements AnalyticsBreakdownInterface {
|
|
407
456
|
private _dimension;
|
|
@@ -489,6 +538,14 @@ declare class AnalyticsAdminService extends AbstractService {
|
|
|
489
538
|
static getTimeline(params: AnalyticsFilters & {
|
|
490
539
|
granularity: AnalyticsGranularity;
|
|
491
540
|
}): Promise<AnalyticsTimelineInterface[]>;
|
|
541
|
+
/**
|
|
542
|
+
* One row per calendar day from fromDate to toDate (YYYY-MM-DD, local dates).
|
|
543
|
+
* Always daily and never filtered by section, so it skips withFilters.
|
|
544
|
+
*/
|
|
545
|
+
static getDailyUniques(params: {
|
|
546
|
+
fromDate: string;
|
|
547
|
+
toDate: string;
|
|
548
|
+
}): Promise<AnalyticsDailyUniqueTimelineInterface[]>;
|
|
492
549
|
static getBreakdown(params: AnalyticsFilters & {
|
|
493
550
|
dimension: AnalyticsDimension;
|
|
494
551
|
limit?: number;
|
|
@@ -518,6 +575,6 @@ declare class AnalyticsAdminService extends AbstractService {
|
|
|
518
575
|
* a component in this package, which is why the contract spec lists it among
|
|
519
576
|
* the keys declared for app-rendered surfaces.
|
|
520
577
|
*/
|
|
521
|
-
declare const ANALYTICS_ADMIN_I18N_KEYS: readonly ["analytics.admin.title", "analytics.admin.description", "analytics.admin.tiles.visitors", "analytics.admin.tiles.sessions", "analytics.admin.tiles.page_views", "analytics.admin.tiles.pages_per_session", "analytics.admin.tiles.consent_share", "analytics.admin.tiles.vs_previous", "analytics.admin.tiles.summarised_note", "analytics.admin.filter.section", "analytics.admin.filter.section_all", "analytics.admin.filter.section_public", "analytics.admin.filter.section_app", "analytics.admin.filter.granularity", "analytics.admin.filter.granularity_day", "analytics.admin.filter.granularity_week", "analytics.admin.filter.granularity_month", "analytics.admin.panels.over_time", "analytics.admin.panels.breakdown", "analytics.admin.panels.sessions", "analytics.admin.panels.journey", "analytics.admin.panels.other_sessions", "analytics.admin.dimensions.source", "analytics.admin.dimensions.medium", "analytics.admin.dimensions.campaign", "analytics.admin.dimensions.referrer", "analytics.admin.dimensions.route", "analytics.admin.dimensions.landing", "analytics.admin.columns.key", "analytics.admin.columns.visitors", "analytics.admin.columns.sessions", "analytics.admin.columns.page_views", "analytics.admin.columns.started", "analytics.admin.columns.visitor", "analytics.admin.columns.source", "analytics.admin.columns.landing", "analytics.admin.columns.pages", "analytics.admin.columns.device", "analytics.admin.columns.time", "analytics.admin.columns.gap", "analytics.admin.columns.path", "analytics.admin.anonymous", "analytics.admin.consented", "analytics.admin.not_consented", "analytics.admin.load_more", "analytics.admin.no_data", "analytics.admin.other", "analytics.admin.series.visitors", "analytics.admin.series.page_views"];
|
|
578
|
+
declare const ANALYTICS_ADMIN_I18N_KEYS: readonly ["analytics.admin.title", "analytics.admin.description", "analytics.admin.tiles.visitors", "analytics.admin.tiles.sessions", "analytics.admin.tiles.page_views", "analytics.admin.tiles.pages_per_session", "analytics.admin.tiles.consent_share", "analytics.admin.tiles.vs_previous", "analytics.admin.tiles.summarised_note", "analytics.admin.filter.section", "analytics.admin.filter.section_all", "analytics.admin.filter.section_public", "analytics.admin.filter.section_app", "analytics.admin.filter.granularity", "analytics.admin.filter.granularity_day", "analytics.admin.filter.granularity_week", "analytics.admin.filter.granularity_month", "analytics.admin.panels.over_time", "analytics.admin.panels.breakdown", "analytics.admin.panels.sessions", "analytics.admin.panels.journey", "analytics.admin.panels.other_sessions", "analytics.admin.panels.daily_visitors", "analytics.admin.panels.daily_users", "analytics.admin.dimensions.source", "analytics.admin.dimensions.medium", "analytics.admin.dimensions.campaign", "analytics.admin.dimensions.referrer", "analytics.admin.dimensions.route", "analytics.admin.dimensions.landing", "analytics.admin.columns.key", "analytics.admin.columns.visitors", "analytics.admin.columns.sessions", "analytics.admin.columns.page_views", "analytics.admin.columns.started", "analytics.admin.columns.visitor", "analytics.admin.columns.source", "analytics.admin.columns.landing", "analytics.admin.columns.pages", "analytics.admin.columns.device", "analytics.admin.columns.time", "analytics.admin.columns.gap", "analytics.admin.columns.path", "analytics.admin.anonymous", "analytics.admin.consented", "analytics.admin.not_consented", "analytics.admin.load_more", "analytics.admin.no_data", "analytics.admin.other", "analytics.admin.series.visitors", "analytics.admin.series.page_views", "analytics.admin.daily_uniques.visitors", "analytics.admin.daily_uniques.users", "analytics.admin.daily_uniques.today", "analytics.admin.daily_uniques.no_data"];
|
|
522
579
|
|
|
523
|
-
export { ANALYTICS_ADMIN_I18N_KEYS, ANALYTICS_DIMENSIONS, ANALYTICS_GRANULARITIES, ANALYTICS_SECTIONS, AnalyticsAdminContainer, type AnalyticsAdminContextType, AnalyticsAdminFilterBar, type AnalyticsAdminFilterState, AnalyticsAdminPageContainer, AnalyticsAdminProvider, AnalyticsAdminService, AnalyticsAdminTiles, AnalyticsBreakdown, type AnalyticsBreakdownInput, type AnalyticsBreakdownInterface, AnalyticsBreakdownTable, type AnalyticsDimension, AnalyticsEvent, type AnalyticsEventInput, type AnalyticsEventInterface, type AnalyticsFilters, type AnalyticsGranularity, AnalyticsJourneyContainer, AnalyticsJourneyPageContainer, AnalyticsPageView, type AnalyticsPageViewInput, type AnalyticsPageViewInterface, type AnalyticsSection, AnalyticsService, AnalyticsSession, type AnalyticsSessionInput, type AnalyticsSessionInterface, AnalyticsSessionsTable, AnalyticsSummary, type AnalyticsSummaryInput, type AnalyticsSummaryInterface, AnalyticsTimeline, AnalyticsTimelineChart, type AnalyticsTimelineInput, type AnalyticsTimelineInterface, AnalyticsTracker, useAnalyticsAdmin };
|
|
580
|
+
export { ANALYTICS_ADMIN_I18N_KEYS, ANALYTICS_DIMENSIONS, ANALYTICS_GRANULARITIES, ANALYTICS_SECTIONS, AnalyticsAdminContainer, type AnalyticsAdminContextType, AnalyticsAdminFilterBar, type AnalyticsAdminFilterState, AnalyticsAdminPageContainer, AnalyticsAdminProvider, AnalyticsAdminService, AnalyticsAdminTiles, AnalyticsBreakdown, type AnalyticsBreakdownInput, type AnalyticsBreakdownInterface, AnalyticsBreakdownTable, AnalyticsDailyUniqueTimeline, type AnalyticsDailyUniqueTimelineInput, type AnalyticsDailyUniqueTimelineInterface, AnalyticsDailyUniquesChart, type AnalyticsDimension, AnalyticsEvent, type AnalyticsEventInput, type AnalyticsEventInterface, type AnalyticsFilters, type AnalyticsGranularity, AnalyticsJourneyContainer, AnalyticsJourneyPageContainer, AnalyticsPageView, type AnalyticsPageViewInput, type AnalyticsPageViewInterface, type AnalyticsSection, AnalyticsService, AnalyticsSession, type AnalyticsSessionInput, type AnalyticsSessionInterface, AnalyticsSessionsTable, AnalyticsSummary, type AnalyticsSummaryInput, type AnalyticsSummaryInterface, AnalyticsTimeline, AnalyticsTimelineChart, type AnalyticsTimelineInput, type AnalyticsTimelineInterface, AnalyticsTracker, useAnalyticsAdmin };
|
|
@@ -4,7 +4,7 @@ import { A as ApiDataInterface, J as JsonApiHydratedDataInterface } from '../../
|
|
|
4
4
|
import { U as UserInterface } from '../../user.interface-CKBIEvNu.js';
|
|
5
5
|
import { A as AbstractApiData } from '../../AbstractApiData-rgvs0cdY.js';
|
|
6
6
|
import { A as AbstractService, N as NextRef } from '../../AbstractService-kNAykPDk.js';
|
|
7
|
-
export { a as analyticsModules } from '../../analytics.modules-
|
|
7
|
+
export { a as analyticsModules } from '../../analytics.modules-C4OT7fVa.js';
|
|
8
8
|
import '../../stripe-price.interface-DGqcklFJ.js';
|
|
9
9
|
import '../../ApiRequestDataTypeInterface-CYEcRUrh.js';
|
|
10
10
|
import '../../types-bsm8Fp55.js';
|
|
@@ -31,6 +31,16 @@ interface AnalyticsBreakdownInterface extends ApiDataInterface {
|
|
|
31
31
|
get pageViews(): number;
|
|
32
32
|
}
|
|
33
33
|
|
|
34
|
+
/** One calendar day of the unique visitors / unique users charts. */
|
|
35
|
+
interface AnalyticsDailyUniqueTimelineInterface extends ApiDataInterface {
|
|
36
|
+
/** Backend declares this `type: "date"`, so it is a Date in memory. */
|
|
37
|
+
get day(): Date;
|
|
38
|
+
/** null = unknown for that day (drawn as a gap). */
|
|
39
|
+
get visitors(): number | null;
|
|
40
|
+
/** null = unknown for that day (drawn as a gap). */
|
|
41
|
+
get users(): number | null;
|
|
42
|
+
}
|
|
43
|
+
|
|
34
44
|
interface AnalyticsSessionInterface extends ApiDataInterface {
|
|
35
45
|
get visitorId(): string;
|
|
36
46
|
get consented(): boolean;
|
|
@@ -119,6 +129,15 @@ type AnalyticsTimelineInput = {
|
|
|
119
129
|
sessions: number;
|
|
120
130
|
pageViews: number;
|
|
121
131
|
};
|
|
132
|
+
type AnalyticsDailyUniqueTimelineInput = {
|
|
133
|
+
id: string;
|
|
134
|
+
/** Backend field type is "date" — emitted via formatLocalDate, never raw. */
|
|
135
|
+
day?: Date;
|
|
136
|
+
/** null = unknown for that day. */
|
|
137
|
+
visitors?: number | null;
|
|
138
|
+
/** null = unknown for that day. */
|
|
139
|
+
users?: number | null;
|
|
140
|
+
};
|
|
122
141
|
type AnalyticsBreakdownInput = {
|
|
123
142
|
id: string;
|
|
124
143
|
dimension: string;
|
|
@@ -170,6 +189,8 @@ interface AnalyticsAdminContextType {
|
|
|
170
189
|
timeline: AnalyticsTimelineInterface[];
|
|
171
190
|
breakdowns: Record<AnalyticsDimension, AnalyticsBreakdownInterface[]>;
|
|
172
191
|
sessions: AnalyticsSessionInterface[];
|
|
192
|
+
/** One row per day of the range: unique visitors and users, never filtered by section. */
|
|
193
|
+
dailyUniques: AnalyticsDailyUniqueTimelineInterface[];
|
|
173
194
|
filters: AnalyticsAdminFilterState;
|
|
174
195
|
/** Merges a partial patch into the current filters; every key is optional. */
|
|
175
196
|
setFilters: (next: Partial<AnalyticsAdminFilterState>) => void;
|
|
@@ -275,6 +296,22 @@ type AnalyticsTimelineChartProps = {
|
|
|
275
296
|
*/
|
|
276
297
|
declare function AnalyticsTimelineChart({ rows, className }: AnalyticsTimelineChartProps): React.JSX.Element;
|
|
277
298
|
|
|
299
|
+
type DailyUniquesMetric = "visitors" | "users";
|
|
300
|
+
type AnalyticsDailyUniquesChartProps = {
|
|
301
|
+
rows: AnalyticsDailyUniqueTimelineInterface[];
|
|
302
|
+
metric: DailyUniquesMetric;
|
|
303
|
+
className?: string;
|
|
304
|
+
};
|
|
305
|
+
/**
|
|
306
|
+
* Unique visitors or unique users per day, as a line.
|
|
307
|
+
*
|
|
308
|
+
* Always daily and never filtered by section: one row per day of the picked
|
|
309
|
+
* range, as the backend returns it. One series, so no legend — the card title
|
|
310
|
+
* names it. Colour does an identity job (the same metric keeps the same colour
|
|
311
|
+
* as in the "Over time" chart); the tooltip carries the value as text.
|
|
312
|
+
*/
|
|
313
|
+
declare function AnalyticsDailyUniquesChart({ rows, metric, className }: AnalyticsDailyUniquesChartProps): React.JSX.Element;
|
|
314
|
+
|
|
278
315
|
type Props$4 = {
|
|
279
316
|
breakdowns: Record<AnalyticsDimension, AnalyticsBreakdownInterface[]>;
|
|
280
317
|
};
|
|
@@ -402,6 +439,18 @@ declare class AnalyticsTimeline extends AbstractApiData implements AnalyticsTime
|
|
|
402
439
|
createJsonApi(data: AnalyticsTimelineInput): any;
|
|
403
440
|
}
|
|
404
441
|
|
|
442
|
+
/** One day of the daily unique visitors / users charts. A null count is an unknown day, never 0. */
|
|
443
|
+
declare class AnalyticsDailyUniqueTimeline extends AbstractApiData implements AnalyticsDailyUniqueTimelineInterface {
|
|
444
|
+
private _day;
|
|
445
|
+
private _visitors;
|
|
446
|
+
private _users;
|
|
447
|
+
get day(): Date;
|
|
448
|
+
get visitors(): number | null;
|
|
449
|
+
get users(): number | null;
|
|
450
|
+
rehydrate(data: JsonApiHydratedDataInterface): this;
|
|
451
|
+
createJsonApi(data: AnalyticsDailyUniqueTimelineInput): any;
|
|
452
|
+
}
|
|
453
|
+
|
|
405
454
|
/** One row of a breakdown table: a key (source, route, …) and its counts. */
|
|
406
455
|
declare class AnalyticsBreakdown extends AbstractApiData implements AnalyticsBreakdownInterface {
|
|
407
456
|
private _dimension;
|
|
@@ -489,6 +538,14 @@ declare class AnalyticsAdminService extends AbstractService {
|
|
|
489
538
|
static getTimeline(params: AnalyticsFilters & {
|
|
490
539
|
granularity: AnalyticsGranularity;
|
|
491
540
|
}): Promise<AnalyticsTimelineInterface[]>;
|
|
541
|
+
/**
|
|
542
|
+
* One row per calendar day from fromDate to toDate (YYYY-MM-DD, local dates).
|
|
543
|
+
* Always daily and never filtered by section, so it skips withFilters.
|
|
544
|
+
*/
|
|
545
|
+
static getDailyUniques(params: {
|
|
546
|
+
fromDate: string;
|
|
547
|
+
toDate: string;
|
|
548
|
+
}): Promise<AnalyticsDailyUniqueTimelineInterface[]>;
|
|
492
549
|
static getBreakdown(params: AnalyticsFilters & {
|
|
493
550
|
dimension: AnalyticsDimension;
|
|
494
551
|
limit?: number;
|
|
@@ -518,6 +575,6 @@ declare class AnalyticsAdminService extends AbstractService {
|
|
|
518
575
|
* a component in this package, which is why the contract spec lists it among
|
|
519
576
|
* the keys declared for app-rendered surfaces.
|
|
520
577
|
*/
|
|
521
|
-
declare const ANALYTICS_ADMIN_I18N_KEYS: readonly ["analytics.admin.title", "analytics.admin.description", "analytics.admin.tiles.visitors", "analytics.admin.tiles.sessions", "analytics.admin.tiles.page_views", "analytics.admin.tiles.pages_per_session", "analytics.admin.tiles.consent_share", "analytics.admin.tiles.vs_previous", "analytics.admin.tiles.summarised_note", "analytics.admin.filter.section", "analytics.admin.filter.section_all", "analytics.admin.filter.section_public", "analytics.admin.filter.section_app", "analytics.admin.filter.granularity", "analytics.admin.filter.granularity_day", "analytics.admin.filter.granularity_week", "analytics.admin.filter.granularity_month", "analytics.admin.panels.over_time", "analytics.admin.panels.breakdown", "analytics.admin.panels.sessions", "analytics.admin.panels.journey", "analytics.admin.panels.other_sessions", "analytics.admin.dimensions.source", "analytics.admin.dimensions.medium", "analytics.admin.dimensions.campaign", "analytics.admin.dimensions.referrer", "analytics.admin.dimensions.route", "analytics.admin.dimensions.landing", "analytics.admin.columns.key", "analytics.admin.columns.visitors", "analytics.admin.columns.sessions", "analytics.admin.columns.page_views", "analytics.admin.columns.started", "analytics.admin.columns.visitor", "analytics.admin.columns.source", "analytics.admin.columns.landing", "analytics.admin.columns.pages", "analytics.admin.columns.device", "analytics.admin.columns.time", "analytics.admin.columns.gap", "analytics.admin.columns.path", "analytics.admin.anonymous", "analytics.admin.consented", "analytics.admin.not_consented", "analytics.admin.load_more", "analytics.admin.no_data", "analytics.admin.other", "analytics.admin.series.visitors", "analytics.admin.series.page_views"];
|
|
578
|
+
declare const ANALYTICS_ADMIN_I18N_KEYS: readonly ["analytics.admin.title", "analytics.admin.description", "analytics.admin.tiles.visitors", "analytics.admin.tiles.sessions", "analytics.admin.tiles.page_views", "analytics.admin.tiles.pages_per_session", "analytics.admin.tiles.consent_share", "analytics.admin.tiles.vs_previous", "analytics.admin.tiles.summarised_note", "analytics.admin.filter.section", "analytics.admin.filter.section_all", "analytics.admin.filter.section_public", "analytics.admin.filter.section_app", "analytics.admin.filter.granularity", "analytics.admin.filter.granularity_day", "analytics.admin.filter.granularity_week", "analytics.admin.filter.granularity_month", "analytics.admin.panels.over_time", "analytics.admin.panels.breakdown", "analytics.admin.panels.sessions", "analytics.admin.panels.journey", "analytics.admin.panels.other_sessions", "analytics.admin.panels.daily_visitors", "analytics.admin.panels.daily_users", "analytics.admin.dimensions.source", "analytics.admin.dimensions.medium", "analytics.admin.dimensions.campaign", "analytics.admin.dimensions.referrer", "analytics.admin.dimensions.route", "analytics.admin.dimensions.landing", "analytics.admin.columns.key", "analytics.admin.columns.visitors", "analytics.admin.columns.sessions", "analytics.admin.columns.page_views", "analytics.admin.columns.started", "analytics.admin.columns.visitor", "analytics.admin.columns.source", "analytics.admin.columns.landing", "analytics.admin.columns.pages", "analytics.admin.columns.device", "analytics.admin.columns.time", "analytics.admin.columns.gap", "analytics.admin.columns.path", "analytics.admin.anonymous", "analytics.admin.consented", "analytics.admin.not_consented", "analytics.admin.load_more", "analytics.admin.no_data", "analytics.admin.other", "analytics.admin.series.visitors", "analytics.admin.series.page_views", "analytics.admin.daily_uniques.visitors", "analytics.admin.daily_uniques.users", "analytics.admin.daily_uniques.today", "analytics.admin.daily_uniques.no_data"];
|
|
522
579
|
|
|
523
|
-
export { ANALYTICS_ADMIN_I18N_KEYS, ANALYTICS_DIMENSIONS, ANALYTICS_GRANULARITIES, ANALYTICS_SECTIONS, AnalyticsAdminContainer, type AnalyticsAdminContextType, AnalyticsAdminFilterBar, type AnalyticsAdminFilterState, AnalyticsAdminPageContainer, AnalyticsAdminProvider, AnalyticsAdminService, AnalyticsAdminTiles, AnalyticsBreakdown, type AnalyticsBreakdownInput, type AnalyticsBreakdownInterface, AnalyticsBreakdownTable, type AnalyticsDimension, AnalyticsEvent, type AnalyticsEventInput, type AnalyticsEventInterface, type AnalyticsFilters, type AnalyticsGranularity, AnalyticsJourneyContainer, AnalyticsJourneyPageContainer, AnalyticsPageView, type AnalyticsPageViewInput, type AnalyticsPageViewInterface, type AnalyticsSection, AnalyticsService, AnalyticsSession, type AnalyticsSessionInput, type AnalyticsSessionInterface, AnalyticsSessionsTable, AnalyticsSummary, type AnalyticsSummaryInput, type AnalyticsSummaryInterface, AnalyticsTimeline, AnalyticsTimelineChart, type AnalyticsTimelineInput, type AnalyticsTimelineInterface, AnalyticsTracker, useAnalyticsAdmin };
|
|
580
|
+
export { ANALYTICS_ADMIN_I18N_KEYS, ANALYTICS_DIMENSIONS, ANALYTICS_GRANULARITIES, ANALYTICS_SECTIONS, AnalyticsAdminContainer, type AnalyticsAdminContextType, AnalyticsAdminFilterBar, type AnalyticsAdminFilterState, AnalyticsAdminPageContainer, AnalyticsAdminProvider, AnalyticsAdminService, AnalyticsAdminTiles, AnalyticsBreakdown, type AnalyticsBreakdownInput, type AnalyticsBreakdownInterface, AnalyticsBreakdownTable, AnalyticsDailyUniqueTimeline, type AnalyticsDailyUniqueTimelineInput, type AnalyticsDailyUniqueTimelineInterface, AnalyticsDailyUniquesChart, type AnalyticsDimension, AnalyticsEvent, type AnalyticsEventInput, type AnalyticsEventInterface, type AnalyticsFilters, type AnalyticsGranularity, AnalyticsJourneyContainer, AnalyticsJourneyPageContainer, AnalyticsPageView, type AnalyticsPageViewInput, type AnalyticsPageViewInterface, type AnalyticsSection, AnalyticsService, AnalyticsSession, type AnalyticsSessionInput, type AnalyticsSessionInterface, AnalyticsSessionsTable, AnalyticsSummary, type AnalyticsSummaryInput, type AnalyticsSummaryInterface, AnalyticsTimeline, AnalyticsTimelineChart, type AnalyticsTimelineInput, type AnalyticsTimelineInterface, AnalyticsTracker, useAnalyticsAdmin };
|