diff --git a/src/gui/src/UI/Dashboard/TabHome.js b/src/gui/src/UI/Dashboard/TabHome.js index f0c3aa35b..9a545724d 100644 --- a/src/gui/src/UI/Dashboard/TabHome.js +++ b/src/gui/src/UI/Dashboard/TabHome.js @@ -21,7 +21,7 @@ import UIWindowSaveAccount from '../UIWindowSaveAccount.js'; import { formatCredits, formatDollarsFromMicrocents, usageIsCredits } from './credits.js'; import { usageBudget } from './usageBudget.js'; import { appIconAttrs } from '../../helpers/appIcon.js'; -import { isOrgSeat } from './orgSeat.js'; +import { isOrgSeat, orgSeatTeamName } from './orgSeat.js'; // How long a completed usage load stays fresh enough to skip a repeat. Long // enough to absorb the init/onActivate/routing burst on a single dashboard @@ -463,6 +463,8 @@ const TabHome = { subscription.status === 'cancel_pending' || pastDue); const planName = subscription?.tier || 'free'; + const seat = isOrgSeat(window.user); + const teamName = orgSeatTeamName(window.user); const trialEnds = trialing ? formatTrialEnd(subscription.trialEndsAt) : null; @@ -515,14 +517,25 @@ const TabHome = { } $el_window.find('.bento-plan-upgrade').text('Manage →').show(); } else { - $badge.text('Upgrade for more features').addClass('free'); + $badge + .text( + seat + ? i18n('plan_team_seat') + : 'Upgrade for more features', + ) + .addClass('free'); // Reset the label too — otherwise it keeps saying "Manage →" // after a subscription lapses/cancels. $el_window.find('.bento-plan-upgrade').text('Upgrade →').show(); } + // A seat cannot change its plan, so name who can. + if (seat && teamName) { + $note.text(i18n('plan_team_managed', [teamName])).show(); + } + // A seat's plan is the team's; the link only reaches a refusal. - if ( isOrgSeat(window.user) ) { + if (seat) { $el_window.find('.bento-plan-upgrade').hide(); } diff --git a/src/gui/src/i18n/translations/en.js b/src/gui/src/i18n/translations/en.js index 57fe3a89f..88e32da60 100644 --- a/src/gui/src/i18n/translations/en.js +++ b/src/gui/src/i18n/translations/en.js @@ -539,6 +539,8 @@ const en = { storage_usage: 'Storage Usage', storage_puter_used: 'used by Puter', 'your_plan': 'Your Plan', + plan_team_seat: 'Team account', + plan_team_managed: 'Managed by %%', taking_longer_than_usual: 'Taking a little longer than usual. Please wait...', teams: 'Teams', teams_subtitle: 'The accounts your team pays for',