From 076724276c05a4463f05aa50fc119f5058dc2324 Mon Sep 17 00:00:00 2001 From: Stephon Brown Date: Wed, 28 Jan 2026 16:23:31 -0500 Subject: [PATCH] feat(pricing): adds support for hidden discount amounts Allows hiding the formatted amount for discounts in the cart summary. This is useful for scenarios where the discount amount is displayed elsewhere or is not relevant to the user. Updates the storybook to include a story demonstrating this feature. --- .../cart-summary.component.stories.ts | 32 +++++++++++++++++++ libs/pricing/src/types/discount.ts | 4 +++ 2 files changed, 36 insertions(+) diff --git a/libs/pricing/src/components/cart-summary/cart-summary.component.stories.ts b/libs/pricing/src/components/cart-summary/cart-summary.component.stories.ts index 550badd983f..a99a9cf6174 100644 --- a/libs/pricing/src/components/cart-summary/cart-summary.component.stories.ts +++ b/libs/pricing/src/components/cart-summary/cart-summary.component.stories.ts @@ -57,6 +57,8 @@ export default { return "Your next charge is for"; case "dueOn": return "due on"; + case "specialOfferDiscount": + return "Special Offer Discount"; default: return key; } @@ -342,6 +344,36 @@ export const WithAmountDiscount: Story = { }, }; +export const WithAmountDiscountHidden: Story = { + name: "Amount Discount (Hidden Formatted Amount)", + args: { + cart: { + passwordManager: { + seats: { + quantity: 5, + translationKey: "members", + cost: 50.0, + }, + }, + secretsManager: { + seats: { + quantity: 3, + translationKey: "members", + cost: 30.0, + }, + }, + cadence: "annually", + discount: { + type: DiscountTypes.AmountOff, + value: 50.0, + translationKey: "specialOfferDiscount", + hideFormattedAmount: true, + }, + estimatedTax: 95.0, + } satisfies Cart, + }, +}; + export const WithHiddenBreakdown: Story = { name: "Hidden Cost Breakdown", args: { diff --git a/libs/pricing/src/types/discount.ts b/libs/pricing/src/types/discount.ts index 04a03caf381..48f704f0b73 100644 --- a/libs/pricing/src/types/discount.ts +++ b/libs/pricing/src/types/discount.ts @@ -11,11 +11,15 @@ export type Discount = { type: DiscountType; value: number; translationKey?: string; + hideFormattedAmount?: boolean; }; export const getLabel = (i18nService: I18nService, discount: Discount): string => { switch (discount.type) { case DiscountTypes.AmountOff: { + if (discount.hideFormattedAmount) { + return i18nService.t(discount.translationKey ?? "discount"); + } const formattedAmount = new Intl.NumberFormat("en-US", { style: "currency", currency: "USD",