From 7520de229c4cf16cbb7f26095c84da6b91f12e9e Mon Sep 17 00:00:00 2001 From: Alex Morask <144709477+amorask-bitwarden@users.noreply.github.com> Date: Wed, 10 Jun 2026 13:09:47 -0500 Subject: [PATCH] [PM-37228] feat: Add price increase callout to organization subscription page (#21153) * chore: ignore root .worktrees/ directory * [PM-37228] feat: Add price increase callout to organization subscription page Customers being migrated to current pricing need in-product visibility of the upcoming increase ahead of renewal. Renders an info callout, driven by the new scheduledPriceIncrease organization warning, showing the new per-seat monthly price and effective date to match the renewal email. * Fix nullable DatePipe result to satisfy typescript-strict * Show cents only for non-whole prices in price-increase callout --- .gitignore | 1 + .../organization-billing.module.ts | 2 + ...nization-subscription-cloud.component.html | 3 + .../warnings/components/index.ts | 1 + ...d-price-increase-warning.component.spec.ts | 127 ++++++++++++++++++ ...eduled-price-increase-warning.component.ts | 55 ++++++++ .../organization-warnings.service.spec.ts | 63 +++++++++ .../services/organization-warnings.service.ts | 6 + .../warnings/types/organization-warnings.ts | 26 ++++ apps/web/src/locales/en/messages.json | 31 +++++ 10 files changed, 315 insertions(+) create mode 100644 apps/web/src/app/billing/organizations/warnings/components/organization-scheduled-price-increase-warning.component.spec.ts create mode 100644 apps/web/src/app/billing/organizations/warnings/components/organization-scheduled-price-increase-warning.component.ts diff --git a/.gitignore b/.gitignore index 5c04bd7df74..00910f4e72c 100644 --- a/.gitignore +++ b/.gitignore @@ -2,6 +2,7 @@ .DS_Store Thumbs.db .claude/worktrees/ +.worktrees/ # IDEs and editors .idea/ diff --git a/apps/web/src/app/billing/organizations/organization-billing.module.ts b/apps/web/src/app/billing/organizations/organization-billing.module.ts index c111ac10834..f9c665b8cec 100644 --- a/apps/web/src/app/billing/organizations/organization-billing.module.ts +++ b/apps/web/src/app/billing/organizations/organization-billing.module.ts @@ -22,6 +22,7 @@ import { SecretsManagerAdjustSubscriptionComponent } from "./sm-adjust-subscript import { SecretsManagerSubscribeStandaloneComponent } from "./sm-subscribe-standalone.component"; import { SubscriptionHiddenComponent } from "./subscription-hidden.component"; import { SubscriptionStatusComponent } from "./subscription-status.component"; +import { OrganizationScheduledPriceIncreaseWarningComponent } from "./warnings/components"; @NgModule({ imports: [ @@ -31,6 +32,7 @@ import { SubscriptionStatusComponent } from "./subscription-status.component"; OrganizationPlansComponent, HeaderModule, BannerModule, + OrganizationScheduledPriceIncreaseWarningComponent, ChurnMitigationOfferDialogComponent, ], declarations: [ diff --git a/apps/web/src/app/billing/organizations/organization-subscription-cloud.component.html b/apps/web/src/app/billing/organizations/organization-subscription-cloud.component.html index c5ec663a1cd..a9128ddbc26 100644 --- a/apps/web/src/app/billing/organizations/organization-subscription-cloud.component.html +++ b/apps/web/src/app/billing/organizations/organization-subscription-cloud.component.html @@ -83,6 +83,9 @@ + + +