@@ -31,6 +31,8 @@ export function getSubscriptionStatus(
3131 isPro : subscriptionData ?. isPro ?? false ,
3232 isTeam : subscriptionData ?. isTeam ?? false ,
3333 isEnterprise : subscriptionData ?. isEnterprise ?? false ,
34+ isOrgScoped : subscriptionData ?. isOrgScoped ?? false ,
35+ organizationId : subscriptionData ?. organizationId ?? null ,
3436 isFree : ! ( subscriptionData ?. isPaid ?? false ) ,
3537 plan : subscriptionData ?. plan ?? 'free' ,
3638 status : subscriptionData ?. status ?? null ,
@@ -45,7 +47,12 @@ export function getSubscriptionAccessState(
4547 const status = getSubscriptionStatus ( subscriptionData )
4648 const billingBlocked = Boolean ( subscriptionData ?. billingBlocked )
4749 const hasUsablePaidAccess = hasUsableSubscriptionAccess ( status . status , billingBlocked )
48- const hasUsableTeamAccess = hasUsablePaidAccess && ( status . isTeam || status . isEnterprise )
50+ // Team-management features (invitations, seats, roles) are available on
51+ // any paid subscription attached to an organization — including `pro_*`
52+ // plans that have been transferred to an org. Plan-name gating would
53+ // miss those.
54+ const hasUsableTeamAccess =
55+ hasUsablePaidAccess && ( status . isOrgScoped || status . isTeam || status . isEnterprise )
4956 const hasUsableEnterpriseAccess = hasUsablePaidAccess && status . isEnterprise
5057 const hasUsableMaxAccess =
5158 hasUsablePaidAccess && ( getPlanTierCredits ( status . plan ) >= 25000 || isEnterprise ( status . plan ) )
0 commit comments