diff --git a/apps/dashboard/src/app/(main)/(protected)/projects/[projectId]/analytics/shared.tsx b/apps/dashboard/src/app/(main)/(protected)/projects/[projectId]/analytics/shared.tsx index eb2bf54e3..9e80840fb 100644 --- a/apps/dashboard/src/app/(main)/(protected)/projects/[projectId]/analytics/shared.tsx +++ b/apps/dashboard/src/app/(main)/(protected)/projects/[projectId]/analytics/shared.tsx @@ -15,6 +15,7 @@ import { WarningCircleIcon } from "@phosphor-icons/react"; import { Alert, AlertDescription, Button } from "@/components/ui"; +import { Link } from "@/components/link"; import { useDashboardInternalUser } from "@/lib/dashboard-user"; import { PLAN_LIMITS, resolvePlanId } from "@hexclave/shared/dist/plans"; import { runAsynchronouslyWithAlert } from "@hexclave/shared/dist/utils/promises"; @@ -340,7 +341,7 @@ export function AnalyticsEventLimitBanner() { return null; } - return ; + return ; } /** @@ -395,7 +396,7 @@ function SessionReplayLimitBannerInner({ team }: { team: { useItem: (itemId: str ); } -function AnalyticsEventLimitBannerInner({ team }: { team: { useItem: (itemId: string) => { quantity: number }, useProducts: () => Array<{ id: string | null, type?: string }>, createCheckoutUrl: (options: { productId: string, returnUrl: string }) => Promise } }) { +function AnalyticsEventLimitBannerInner({ team, projectId }: { team: { useItem: (itemId: string) => { quantity: number }, useProducts: () => Array<{ id: string | null, type?: string }>, createCheckoutUrl: (options: { productId: string, returnUrl: string }) => Promise }, projectId: string }) { const eventsItem = team.useItem("analytics_events"); const products = team.useProducts(); const planId = resolvePlanId(products); @@ -433,15 +434,26 @@ function AnalyticsEventLimitBannerInner({ team }: { team: { useItem: (itemId: st } {canUpgrade && !isExhausted && " Consider upgrading your plan."} - {canUpgrade && ( +
- )} + {canUpgrade && ( + + )} +
); diff --git a/apps/dashboard/src/app/(main)/(protected)/projects/[projectId]/project-settings/usage/page-client.test.tsx b/apps/dashboard/src/app/(main)/(protected)/projects/[projectId]/project-settings/usage/page-client.test.tsx index 48a999652..4ec7a3934 100644 --- a/apps/dashboard/src/app/(main)/(protected)/projects/[projectId]/project-settings/usage/page-client.test.tsx +++ b/apps/dashboard/src/app/(main)/(protected)/projects/[projectId]/project-settings/usage/page-client.test.tsx @@ -106,8 +106,8 @@ describe("Usage settings page", () => { it("renders the plan, usage rows, and overage state", () => { render(); - // The page title and usage card share this label. - expect(screen.getAllByText("Usage").length).toBeGreaterThan(0); + // The page title + expect(screen.getAllByText("Billing & Usage").length).toBeGreaterThan(0); expect(screen.getAllByText("Free").length).toBeGreaterThan(0); expect(screen.getAllByText("Owner").length).toBeGreaterThan(0); expect(screen.getAllByText("Dashboard admins").length).toBeGreaterThan(0); diff --git a/apps/dashboard/src/app/(main)/(protected)/projects/[projectId]/project-settings/usage/page-client.tsx b/apps/dashboard/src/app/(main)/(protected)/projects/[projectId]/project-settings/usage/page-client.tsx index d7780dbb5..cfdac5213 100644 --- a/apps/dashboard/src/app/(main)/(protected)/projects/[projectId]/project-settings/usage/page-client.tsx +++ b/apps/dashboard/src/app/(main)/(protected)/projects/[projectId]/project-settings/usage/page-client.tsx @@ -362,7 +362,7 @@ export default function PageClient() { return ( diff --git a/apps/dashboard/src/app/(main)/(protected)/projects/[projectId]/sidebar-layout.tsx b/apps/dashboard/src/app/(main)/(protected)/projects/[projectId]/sidebar-layout.tsx index 4b4059751..e2bf5154c 100644 --- a/apps/dashboard/src/app/(main)/(protected)/projects/[projectId]/sidebar-layout.tsx +++ b/apps/dashboard/src/app/(main)/(protected)/projects/[projectId]/sidebar-layout.tsx @@ -139,7 +139,7 @@ const projectSettingsItem: AppSection = { match: (fullUrl: URL) => /^\/projects\/[^\/]+\/project-settings\/?$/.test(fullUrl.pathname), }, { - name: "Usage", + name: "Billing & Usage", href: "/project-settings/usage", match: (fullUrl: URL) => /^\/projects\/[^\/]+\/project-settings\/usage(\/.*)?$/.test(fullUrl.pathname), },