diff --git a/frontend/editor/public/locales/en-US/translation.toml b/frontend/editor/public/locales/en-US/translation.toml index d4a028388b..eea64d65b8 100644 --- a/frontend/editor/public/locales/en-US/translation.toml +++ b/frontend/editor/public/locales/en-US/translation.toml @@ -5756,10 +5756,10 @@ rolePlaceholder = "Confirm your role" roleUser = "User" [onboarding.serverLicense] -freeBody = "Our Open-Core licensing permits up to {{freeTierLimit}} users for free per server. To scale uninterrupted, we recommend the Stirling Server plan - unlimited seats and SSO support for $99/server/mo." -freeTitle = "Server License" -overLimitBody = "Our licensing permits up to {{freeTierLimit}} users for free per server. You have {{overLimitUserCopy}} Stirling users. To continue uninterrupted, upgrade to the Stirling Server plan - unlimited seats, PDF text editing, and full admin control for $99/server/mo." -overLimitTitle = "Server License Needed" +freeBody = "Our Open-Core licensing permits up to {{freeTierLimit}} users for free. To scale uninterrupted, we recommend the Stirling Team plan - 100 users and SSO support for $99/mo." +freeTitle = "Team plan" +overLimitBody = "Our licensing permits up to {{freeTierLimit}} users for free. You have {{overLimitUserCopy}} Stirling users. To continue uninterrupted, upgrade to the Stirling Team plan - 100 users, PDF text editing, and full admin control for $99/mo." +overLimitTitle = "Team plan needed" seePlans = "See Plans →" upgrade = "Upgrade now →" @@ -6570,7 +6570,7 @@ popular = "Popular" selectPlan = "Select Plan" showComparison = "Compare All Features" upgrade = "Upgrade" -withServer = "+ Server Plan" +withServer = "+ Team plan" [plan.api] large = "5,000 Credits" @@ -6588,8 +6588,8 @@ highlight1 = "Custom pricing" highlight2 = "Dedicated support" highlight3 = "Latest features" name = "Enterprise" -requiresServer = "Requires Server" -requiresServerMessage = "Please upgrade to the Server plan first before upgrading to Enterprise." +requiresServer = "Requires Team plan" +requiresServerMessage = "Please upgrade to the Team plan first before upgrading to Enterprise." [plan.feature] api = "API Access" @@ -6614,10 +6614,10 @@ saml = "SAML" secureLoginSupport = "Secure Login Support" selfHostedDeployment = "Self-hosted deployment" sso = "SSO" -unlimitedUsers = "Unlimited users" upToFiveUsers = "Up to 5 users" upToFiveUsersLowercase = "up to 5 users" usageTracking = "Usage tracking" +usersIncluded = "100 users included" usersLimitedToSeats = "Users limited to seats" [plan.free] @@ -6646,12 +6646,12 @@ saveWithAnnualBilling = "Save with annual billing" selfHosted = "Self-hosted" selfHostedOnInfrastructure = "Self-hosted on your infrastructure" ssoOAuth = "SSO (OAuth2/OIDC)" -unlimitedUsers = "Unlimited users" upToFiveUsers = "Up to 5 users" usageTrackingPrometheus = "Usage tracking & Prometheus" +usersIncluded = "100 users included" [plan.licenseWarning] -body = "You have {{total}} users but the free tier only supports {{limit}} per server. Upgrade to keep Stirling PDF running smoothly." +body = "You have {{total}} users but the free tier only supports {{limit}}. Upgrade to keep Stirling PDF running smoothly." cta = "See plans" overLimit = "more than {{limit}}" title = "Free self-hosted limit reached" @@ -6674,7 +6674,7 @@ title = "You're on a Roll!" [plan.static] activateLicense = "Activate Your License" contactToUpgrade = "Contact us to upgrade or customize your plan" -getLicense = "Get Server License" +getLicense = "Get the Team plan" monthlyBilling = "Monthly Billing" selectPeriod = "Select Billing Period" upgradeToEnterprise = "Upgrade to Enterprise" @@ -6695,6 +6695,10 @@ keyDescription = "Paste the license key from your email" success = "License Activated!" successMessage = "Your license has been successfully activated. You can now close this window." +[plan.team] +maxUsers = "100 users" +name = "Team" + [policies.activity] outputsUnavailable = "Policy outputs are no longer available to download." partialOutputsUnavailable = "Some policy outputs are no longer available to download." @@ -7000,16 +7004,16 @@ subtitle = "Deploy anywhere, for your whole team." title = "Free PDF Editors" [portal.billing.freePlan] +anywhere = "Web, desktop & self-hosted" checkoutErrorTitle = "Couldn't start checkout" currentPlan = "Current plan" +everyPdfTool = "Every PDF tool" freeForever = "Free forever" noTeamResolved = "No team is resolved on your wallet yet — refresh and try again." ownerOnly = "Only the team owner can switch on the Processor plan." payInvoice = "Pay invoice to complete" planName = "Editor" -ssoIncluded = "SSO included" switchOnProcessor = "Switch on the Processor →" -unlimitedUsers = "Unlimited users" viewQuote = "View quote" [portal.billing.invoices] @@ -10444,18 +10448,6 @@ memberCount_one = "{{count}} team member" memberCount_other = "{{count}} team members" memberCount_zero = "no team members" -[settings.planBilling.tier] -enterprise = "Enterprise" -enterpriseDescription = "Custom enterprise features and support" -free = "Free" -freeDescription = "50 credits per month" -team = "Team" -teamBadge = "Team" -teamDescription = "500 credits/month included, automatic overage billing for uninterrupted service" -teamTooltipCredits = "Team plan includes {{credits}} credits/month." -teamTooltipFineprint = "Only pay for what you use beyond included credits." -teamTooltipOverage = "Automatic overage billing at {{price}}/credit ensures uninterrupted service." - [settings.planBilling.trial] daysRemaining = "{{days}} days remaining" daysRemainingFull = "Your trial ends in {{days}} days" @@ -11414,9 +11406,9 @@ urgent = "Urgent" attentionBody = "Your admin needs to sign in to see more info. Please contact them immediately." attentionBodyAdmin = "Review the license requirements to keep this server compliant." attentionTitle = "This server needs admin attention" -message = "Get the most out of Stirling PDF with unlimited users and advanced features" +message = "Get the most out of Stirling PDF with 100 users, SSO, and advanced features" seeInfo = "See info" -title = "Upgrade to Server Plan" +title = "Upgrade to the Team plan" upgradeButton = "Upgrade Now" [URLToPDF] diff --git a/frontend/editor/src/core/components/onboarding/slides/ServerLicenseSlide.tsx b/frontend/editor/src/core/components/onboarding/slides/ServerLicenseSlide.tsx index ac32244e85..09265fb3cf 100644 --- a/frontend/editor/src/core/components/onboarding/slides/ServerLicenseSlide.tsx +++ b/frontend/editor/src/core/components/onboarding/slides/ServerLicenseSlide.tsx @@ -20,8 +20,8 @@ export default function ServerLicenseSlide({ totalUsers != null ? totalUsers.toLocaleString() : null; const overLimitUserCopy = formattedTotalUsers ?? `more than ${freeTierLimit}`; const title = isOverLimit - ? i18n.t("onboarding.serverLicense.overLimitTitle", "Server License Needed") - : i18n.t("onboarding.serverLicense.freeTitle", "Server License"); + ? i18n.t("onboarding.serverLicense.overLimitTitle", "Team plan needed") + : i18n.t("onboarding.serverLicense.freeTitle", "Team plan"); const key = isOverLimit ? "server-license-over-limit" : "server-license"; const overLimitBody = ( @@ -31,7 +31,7 @@ export default function ServerLicenseSlide({ components={{ strong: , }} - defaults="Our licensing permits up to {{freeTierLimit}} users for free per server. You have {{overLimitUserCopy}} Stirling users. To continue uninterrupted, upgrade to the Stirling Server plan - unlimited seats, PDF text editing, and full admin control for $99/server/mo." + defaults="Our licensing permits up to {{freeTierLimit}} users for free. You have {{overLimitUserCopy}} Stirling users. To continue uninterrupted, upgrade to the Stirling Team plan - 100 users, PDF text editing, and full admin control for $99/mo." /> ); @@ -42,7 +42,7 @@ export default function ServerLicenseSlide({ components={{ strong: , }} - defaults="Our Open-Core licensing permits up to {{freeTierLimit}} users for free per server. To scale uninterrupted, we recommend the Stirling Server plan - unlimited seats and SSO support for $99/server/mo." + defaults="Our Open-Core licensing permits up to {{freeTierLimit}} users for free. To scale uninterrupted, we recommend the Stirling Team plan - 100 users and SSO support for $99/mo." /> ); diff --git a/frontend/editor/src/core/components/tools/certSign/CertificateSelector.tsx b/frontend/editor/src/core/components/tools/certSign/CertificateSelector.tsx index 0c09b8c5e6..0cccbe4a40 100644 --- a/frontend/editor/src/core/components/tools/certSign/CertificateSelector.tsx +++ b/frontend/editor/src/core/components/tools/certSign/CertificateSelector.tsx @@ -70,7 +70,7 @@ export const CertificateSelector: React.FC = ({ return ( - {/* Managed certificate options — server plan only */} + {/* Managed certificate options — Team plan only */} {isServerPlan && ( - {t("portal.billing.freePlan.ssoIncluded", "SSO included")} + {t("portal.billing.freePlan.everyPdfTool", "Every PDF tool")} - {t("portal.billing.freePlan.unlimitedUsers", "Unlimited users")} + {t( + "portal.billing.freePlan.anywhere", + "Web, desktop & self-hosted", + )} diff --git a/frontend/editor/src/proprietary/components/shared/UpgradeBanner.tsx b/frontend/editor/src/proprietary/components/shared/UpgradeBanner.tsx index fdb92dc271..87d44000d2 100644 --- a/frontend/editor/src/proprietary/components/shared/UpgradeBanner.tsx +++ b/frontend/editor/src/proprietary/components/shared/UpgradeBanner.tsx @@ -330,10 +330,10 @@ const UpgradeBanner: React.FC = () => { {friendlyVisible && ( { if (currentTier === "free" && planGroup.tier === "enterprise") { alert({ alertType: "warning", - title: t("plan.enterprise.requiresServer", "Server Plan Required"), + title: t("plan.enterprise.requiresServer", "Requires Team plan"), body: t( "plan.enterprise.requiresServerMessage", - "Please upgrade to the Server plan first before upgrading to Enterprise.", + "Please upgrade to the Team plan first before upgrading to Enterprise.", ), }); return; diff --git a/frontend/editor/src/proprietary/components/shared/config/configSections/plan/PlanCard.tsx b/frontend/editor/src/proprietary/components/shared/config/configSections/plan/PlanCard.tsx index 1bf1dd0d76..e45e29e50c 100644 --- a/frontend/editor/src/proprietary/components/shared/config/configSections/plan/PlanCard.tsx +++ b/frontend/editor/src/proprietary/components/shared/config/configSections/plan/PlanCard.tsx @@ -144,7 +144,7 @@ const PlanCard: React.FC = ({ {t("plan.perMonth", "/month")}{" "} - {t("plan.withServer", "+ Server Plan")} + {t("plan.withServer", "+ Team plan")} ) : ( @@ -185,7 +185,7 @@ const PlanCard: React.FC = ({ {/* Single Upgrade Button */} = ({ if (currentTier === "free" && plan === "enterprise") { alert({ alertType: "warning", - title: t("plan.enterprise.requiresServer", "Server Plan Required"), + title: t("plan.enterprise.requiresServer", "Requires Team plan"), body: t( "plan.enterprise.requiresServerMessage", - "Please upgrade to the Server plan first before upgrading to Enterprise.", + "Please upgrade to the Team plan first before upgrading to Enterprise.", ), }); return; @@ -92,14 +92,14 @@ const StaticPlanSection: React.FC = ({ }, { id: "server", - name: "Server", + name: t("plan.team.name", "Team"), price: 0, currency: "", period: "", popular: false, highlights: planHighlights.SERVER_MONTHLY, features: planFeatures.SERVER, - maxUsers: "Unlimited users", + maxUsers: t("plan.team.maxUsers", "100 users"), }, { id: "enterprise", @@ -227,7 +227,7 @@ const StaticPlanSection: React.FC = ({ ); } - // Server Plan + // Team plan if (plan.id === "server") { if (currentTier === "free") { return ( @@ -274,7 +274,7 @@ const StaticPlanSection: React.FC = ({ { "up to 5 users", ); const upToFiveUsers = t("plan.features.upToFiveUsers", "Up to 5 users"); - const unlimitedUsers = t("plan.features.unlimitedUsers", "Unlimited users"); + const usersIncluded = t( + "plan.features.usersIncluded", + "100 users included", + ); const googleDriveIntegration = t( "plan.features.googleDriveIntegration", "Google drive integration", @@ -88,7 +91,7 @@ export const usePlanFeatures = (): PlanFeaturesMap => { { name: communitySupport, included: true }, { name: regularUpdates, included: true }, { name: upToFiveUsersLowercase, included: true }, - { name: unlimitedUsers, included: false }, + { name: usersIncluded, included: false }, { name: googleDriveIntegration, included: false }, { name: externalDatabase, included: false }, { name: editingTextInPdfs, included: false }, @@ -107,7 +110,7 @@ export const usePlanFeatures = (): PlanFeaturesMap => { { name: communitySupport, included: true }, { name: regularUpdates, included: true }, { name: upToFiveUsers, included: false }, - { name: unlimitedUsers, included: true }, + { name: usersIncluded, included: true }, { name: googleDriveIntegration, included: true }, { name: externalDatabase, included: true }, { name: editingTextInPdfs, included: true }, @@ -126,7 +129,7 @@ export const usePlanFeatures = (): PlanFeaturesMap => { { name: communitySupport, included: true }, { name: regularUpdates, included: true }, { name: upToFiveUsersLowercase, included: false }, - { name: unlimitedUsers, included: false }, + { name: usersIncluded, included: false }, { name: googleDriveIntegration, included: true }, { name: externalDatabase, included: true }, { name: editingTextInPdfs, included: true }, @@ -150,9 +153,9 @@ export const usePlanHighlights = (): PlanHighlightsMap => { "plan.highlights.selfHostedOnInfrastructure", "Self-hosted on your infrastructure", ); - const unlimitedUsers = t( - "plan.highlights.unlimitedUsers", - "Unlimited users", + const usersIncluded = t( + "plan.highlights.usersIncluded", + "100 users included", ); const advancedIntegrations = t( "plan.highlights.advancedIntegrations", @@ -188,7 +191,7 @@ export const usePlanHighlights = (): PlanHighlightsMap => { ], SERVER_MONTHLY: [ selfHostedOnInfrastructure, - unlimitedUsers, + usersIncluded, advancedIntegrations, ssoOAuth, editingTextInPdfsCaps, @@ -196,7 +199,7 @@ export const usePlanHighlights = (): PlanHighlightsMap => { ], SERVER_YEARLY: [ selfHostedOnInfrastructure, - unlimitedUsers, + usersIncluded, advancedIntegrations, ssoOAuth, editingTextInPdfsCaps,