diff --git a/package.json b/package.json
index a7a3aba1..f14e552d 100644
--- a/package.json
+++ b/package.json
@@ -64,9 +64,9 @@
".next/cache"
],
"dependencies": {
- "@clickhouse/client": "^1.2.0",
+ "@clickhouse/client": "^1.3.0",
"@fontsource/inter": "^4.5.15",
- "@prisma/client": "5.16.1",
+ "@prisma/client": "5.16.2",
"@prisma/extension-read-replicas": "^0.3.0",
"@react-spring/web": "^9.7.3",
"@tanstack/react-query": "^5.28.6",
@@ -102,7 +102,7 @@
"next-basics": "^0.39.0",
"node-fetch": "^3.2.8",
"npm-run-all": "^4.1.5",
- "prisma": "5.16.1",
+ "prisma": "5.16.2",
"react": "^18.2.0",
"react-basics": "^0.123.0",
"react-beautiful-dnd": "^13.1.0",
diff --git a/src/app/(main)/reports/create/ReportTemplates.tsx b/src/app/(main)/reports/create/ReportTemplates.tsx
index e37efc03..2314f7d6 100644
--- a/src/app/(main)/reports/create/ReportTemplates.tsx
+++ b/src/app/(main)/reports/create/ReportTemplates.tsx
@@ -51,6 +51,12 @@ export function ReportTemplates({ showHeader = true }: { showHeader?: boolean })
url: renderTeamUrl('/reports/journey'),
icon: ,
},
+ {
+ title: formatMessage(labels.revenue),
+ description: formatMessage(labels.revenueDescription),
+ url: renderTeamUrl('/reports/revenue'),
+ icon: ,
+ },
];
return (
diff --git a/src/app/(main)/websites/[websiteId]/sessions/SessionMetricsBar.tsx b/src/app/(main)/websites/[websiteId]/sessions/SessionMetricsBar.tsx
new file mode 100644
index 00000000..c4f21875
--- /dev/null
+++ b/src/app/(main)/websites/[websiteId]/sessions/SessionMetricsBar.tsx
@@ -0,0 +1,5 @@
+export function SessionMetricsBar({ websiteId }: { websiteId: string }) {
+ return
{websiteId}
;
+}
+
+export default SessionMetricsBar;
diff --git a/src/app/(main)/websites/[websiteId]/sessions/SessionsTable.tsx b/src/app/(main)/websites/[websiteId]/sessions/SessionsTable.tsx
index 41c0fef3..d5ca439a 100644
--- a/src/app/(main)/websites/[websiteId]/sessions/SessionsTable.tsx
+++ b/src/app/(main)/websites/[websiteId]/sessions/SessionsTable.tsx
@@ -1,19 +1,29 @@
import { GridColumn, GridTable, useBreakpoint } from 'react-basics';
-import { useMessages } from 'components/hooks';
+import { useFormat, useMessages } from 'components/hooks';
+import { formatDistanceToNow } from 'date-fns';
export function SessionsTable({ data = [] }: { data: any[]; showDomain?: boolean }) {
const { formatMessage, labels } = useMessages();
const breakpoint = useBreakpoint();
+ const { formatValue } = useFormat();
return (
-
+
+ {row => formatValue(row.country, 'country')}
+
-
+
+ {row => formatValue(row.browser, 'browser')}
+
-
-
+
+ {row => formatValue(row.device, 'device')}
+
+
+ {row => formatDistanceToNow(new Date(row.createdAt))}
+
);
}
diff --git a/src/components/metrics/EventsChart.tsx b/src/components/metrics/EventsChart.tsx
index 842ae605..36ec8672 100644
--- a/src/components/metrics/EventsChart.tsx
+++ b/src/components/metrics/EventsChart.tsx
@@ -1,5 +1,4 @@
import { useMemo } from 'react';
-import { Loading } from 'react-basics';
import { colord } from 'colord';
import BarChart from 'components/charts/BarChart';
import { getDateArray } from 'lib/date';
@@ -51,10 +50,6 @@ export function EventsChart({ websiteId, className }: EventsChartProps) {
};
}, [data, startDate, endDate, unit]);
- if (isLoading) {
- return ;
- }
-
return (