diff --git a/apps/dashboard/src/@/components/blocks/pricing-card.tsx b/apps/dashboard/src/@/components/blocks/pricing-card.tsx index 789125f4b34..d00e988b700 100644 --- a/apps/dashboard/src/@/components/blocks/pricing-card.tsx +++ b/apps/dashboard/src/@/components/blocks/pricing-card.tsx @@ -16,7 +16,6 @@ import { CheckoutButton } from "../billing"; type PricingCardCta = { hint?: string; - onClick?: () => void; } & ( | { @@ -58,12 +57,17 @@ export const PricingCard: React.FC = ({ activeTrialEndsAt, }) => { const plan = TEAM_PLANS[billingPlan]; - const isCustomPrice = typeof plan.price === "string"; const trackEvent = useTrack(); const remainingTrialDays = (activeTrialEndsAt ? remainingDays(activeTrialEndsAt) : 0) || 0; + // if the team has just signed up and has not subscribed yet, and the billing plan is growth, then they get a 7 day trial + const has7DayTrial = + remainingTrialDays === 0 && + billingStatus === "noPayment" && + billingPlan === "growth"; + const handleCTAClick = () => { cta?.onClick?.(); trackEvent({ @@ -97,6 +101,7 @@ export const PricingCard: React.FC = ({ {plan.title} {current && Current plan} + {has7DayTrial && 7 Day Free Trial}

{plan.description} @@ -108,15 +113,23 @@ export const PricingCard: React.FC = ({ {plan.isStartingPriceOnly && ( Starting at )} -

- - ${plan.price.toLocaleString()} - - - {!isCustomPrice && ( + {has7DayTrial ? ( +
+ + 7 days free + + + Then ${plan.price.toLocaleString()} / month + +
+ ) : ( +
+ + ${plan.price.toLocaleString()} + / month - )} -
+
+ )} {remainingTrialDays > 0 && (

@@ -155,7 +168,7 @@ export const PricingCard: React.FC = ({ teamSlug={teamSlug} sku={billingPlanToSkuMap[billingPlan]} > - {cta.label} + {has7DayTrial ? "Start 7 Day Free Trial" : cta.label} )} @@ -166,7 +179,7 @@ export const PricingCard: React.FC = ({ asChild > - {cta.label} + {has7DayTrial ? "Start 7 Day Free Trial" : cta.label} )} diff --git a/apps/dashboard/src/app/(app)/login/onboarding/team-onboarding/InviteTeamMembers.tsx b/apps/dashboard/src/app/(app)/login/onboarding/team-onboarding/InviteTeamMembers.tsx index e527b169486..0db70385b23 100644 --- a/apps/dashboard/src/app/(app)/login/onboarding/team-onboarding/InviteTeamMembers.tsx +++ b/apps/dashboard/src/app/(app)/login/onboarding/team-onboarding/InviteTeamMembers.tsx @@ -49,7 +49,8 @@ export function InviteTeamMembersUI(props: { await pollWithTimeout({ shouldStop: async () => { const team = await props.getTeam(); - const isNonFreePlan = team.billingPlan !== "free"; + const isNonFreePlan = + team.billingPlan !== "free" && team.billingPlan !== "starter"; if (isNonFreePlan) { props.trackEvent({ @@ -233,8 +234,8 @@ function InviteModalContent(props: { Choose a plan - Get started with the free Starter plan or upgrade to Growth plan for - increased limits and advanced features.{" "} + Upgrade to the Growth plan to unlock team members and advanced + features.{" "} Learn more about pricing diff --git a/apps/dashboard/src/utils/pricing.tsx b/apps/dashboard/src/utils/pricing.tsx index 3a0da853a7a..de772d0e81d 100644 --- a/apps/dashboard/src/utils/pricing.tsx +++ b/apps/dashboard/src/utils/pricing.tsx @@ -11,7 +11,7 @@ export const TEAM_PLANS: Record< { title: string; isStartingPriceOnly?: boolean; - price: string | number; + price: number; subTitle: string | null; trialPeriodDays: number; description: string;