diff --git a/apps/dashboard/src/app/team/[team_slug]/(team)/page.tsx b/apps/dashboard/src/app/team/[team_slug]/(team)/page.tsx index f17957d3bfd..9480b512e3d 100644 --- a/apps/dashboard/src/app/team/[team_slug]/(team)/page.tsx +++ b/apps/dashboard/src/app/team/[team_slug]/(team)/page.tsx @@ -25,23 +25,28 @@ import { EmptyState } from "../../components/Analytics/EmptyState"; import { PieChartCard } from "../../components/Analytics/PieChartCard"; import { getTeamBySlug } from "@/api/team"; +import { GenericLoadingPage } from "@/components/blocks/skeletons/GenericLoadingPage"; +import type { Account } from "@3rdweb-sdk/react/hooks/useApi"; import { getAccount } from "app/account/settings/getAccount"; import { EmptyStateCard } from "app/team/components/Analytics/EmptyStateCard"; import { Changelog, type ChangelogItem } from "components/dashboard/Changelog"; +import { Suspense } from "react"; import { TotalSponsoredChartCardUI } from "./_components/TotalSponsoredCard"; // revalidate every 5 minutes export const revalidate = 300; +type SearchParams = { + usersChart?: string; + from?: string; + to?: string; + type?: string; + interval?: string; +}; + export default async function TeamOverviewPage(props: { - params: { team_slug: string }; - searchParams: { - usersChart?: string; - from?: string; - to?: string; - type?: string; - interval?: string; - }; + params: Promise<{ team_slug: string }>; + searchParams: Promise; }) { const changelog = await getChangelog(); const [params, searchParams] = await Promise.all([ @@ -67,6 +72,43 @@ export default async function TeamOverviewPage(props: { redirect("/login"); } + return ( +
+
+ +
+
+ }> + + +
+

+ Latest changes +

+ +
+
+
+ ); +} + +async function OverviewPageContent(props: { + account: Account; + range: Range; + interval: "day" | "week"; + searchParams: SearchParams; +}) { + const { account, range, interval, searchParams } = props; + const [ walletConnections, walletUserStatsTimeSeries, @@ -116,77 +158,56 @@ export default async function TeamOverviewPage(props: { inAppWalletUsage.length === 0 && userOpUsage.length === 0; + if (isEmpty) { + return ; + } + return ( -
-
- -
-
-
- {isEmpty ? ( -
- -
- ) : ( -
- {walletUserStatsTimeSeries.some((w) => w.totalUsers !== 0) ? ( -
- -
- ) : ( - - )} -
- {walletConnections.length > 0 ? ( - - ) : ( - - )} - {inAppWalletUsage.length > 0 ? ( - - ) : ( - - )} -
- {userOpUsage.length > 0 ? ( - - ) : ( - - )} -
- )} -
-
-

- Latest changes -

- +
+ {walletUserStatsTimeSeries.some((w) => w.totalUsers !== 0) ? ( +
+
+ ) : ( + + )} +
+ {walletConnections.length > 0 ? ( + + ) : ( + + )} + {inAppWalletUsage.length > 0 ? ( + + ) : ( + + )}
+ {userOpUsage.length > 0 ? ( + + ) : ( + + )}
); } diff --git a/apps/dashboard/src/app/team/components/Analytics/AnalyticsHeader.tsx b/apps/dashboard/src/app/team/components/Analytics/AnalyticsHeader.tsx index 57ab6f32ed9..74beef5b625 100644 --- a/apps/dashboard/src/app/team/components/Analytics/AnalyticsHeader.tsx +++ b/apps/dashboard/src/app/team/components/Analytics/AnalyticsHeader.tsx @@ -9,9 +9,11 @@ export function AnalyticsHeader(props: { const { title, interval, range } = props; return ( -
+
-

{title}

+

+ {title} +

diff --git a/apps/dashboard/src/app/team/components/Analytics/EmptyState.tsx b/apps/dashboard/src/app/team/components/Analytics/EmptyState.tsx index 7c6f25fe5ce..5ae7eee6c86 100644 --- a/apps/dashboard/src/app/team/components/Analytics/EmptyState.tsx +++ b/apps/dashboard/src/app/team/components/Analytics/EmptyState.tsx @@ -17,7 +17,7 @@ import walletsIcon from "../../../../../public/assets/tw-icons/wallets.svg"; export function EmptyState() { return ( -
+
diff --git a/apps/dashboard/src/components/analytics/range-selector.tsx b/apps/dashboard/src/components/analytics/range-selector.tsx index 1c477e8165a..8afdc8f545b 100644 --- a/apps/dashboard/src/components/analytics/range-selector.tsx +++ b/apps/dashboard/src/components/analytics/range-selector.tsx @@ -73,7 +73,7 @@ export function RangeSelector({ }); return ( -
+
{