diff --git a/packages/plans-grid-next/src/components/shared/header-price/index.tsx b/packages/plans-grid-next/src/components/shared/header-price/index.tsx index f79077957bd51..041c866b20fa7 100644 --- a/packages/plans-grid-next/src/components/shared/header-price/index.tsx +++ b/packages/plans-grid-next/src/components/shared/header-price/index.tsx @@ -57,41 +57,34 @@ const HeaderPrice = ( { planSlug, visibleGridPlans }: HeaderPriceProps ) => { return (
{ ! current && ( -
+
{ translate( 'Limited Time Offer' ) }
) } - { isLargeCurrency ? ( -
- - -
- ) : ( +
+ - ) } +
); } diff --git a/packages/plans-grid-next/src/components/shared/header-price/style.scss b/packages/plans-grid-next/src/components/shared/header-price/style.scss index 4c79e6daab5c1..f4ae64c4fb888 100644 --- a/packages/plans-grid-next/src/components/shared/header-price/style.scss +++ b/packages/plans-grid-next/src/components/shared/header-price/style.scss @@ -93,16 +93,6 @@ white-space: nowrap; width: fit-content; - &.is-intro-offer { - background-color: inherit; - color: var(--studio-blue-50); - font-weight: 600; - letter-spacing: inherit; - padding: 0; - text-align: left; - text-transform: uppercase; - } - &.is-hidden { visibility: hidden; } diff --git a/packages/plans-grid-next/src/hooks/data-store/use-plan-billing-description.tsx b/packages/plans-grid-next/src/hooks/data-store/use-plan-billing-description.tsx index bceaee161ae65..d33cbaf4a4ca4 100644 --- a/packages/plans-grid-next/src/hooks/data-store/use-plan-billing-description.tsx +++ b/packages/plans-grid-next/src/hooks/data-store/use-plan-billing-description.tsx @@ -109,23 +109,23 @@ export default function usePlanBillingDescription( { */ if ( introOffer?.intervalCount && introOffer.intervalUnit && ! introOffer.isOfferComplete ) { if ( originalPriceFullTermText ) { + /* Introductory offers for monthly plans */ if ( isMonthlyPlan ) { - if ( 1 === introOffer.intervalCount ) { - return translate( - 'per month, for your first %(introOfferIntervalUnit)s,{{br/}}' + - 'then %(rawPrice)s billed monthly, excl. taxes', - { - args: { - rawPrice: originalPriceFullTermText, - introOfferIntervalUnit: introOffer.intervalUnit, - }, - components: { br:
}, - comment: 'excl. taxes is short for excluding taxes', - } - ); - } - + /* If the offer is for X months */ if ( 'month' === introOffer.intervalUnit ) { + if ( 1 === introOffer.intervalCount ) { + return translate( + 'for your first month,{{br/}}' + 'then %(rawPrice)s billed monthly, excl. taxes', + { + args: { + rawPrice: originalPriceFullTermText, + }, + components: { br:
}, + comment: 'excl. taxes is short for excluding taxes', + } + ); + } + return translate( 'for your first %(introOfferIntervalCount)s months,{{br/}}' + 'then %(rawPrice)s billed monthly, excl. taxes', @@ -140,7 +140,21 @@ export default function usePlanBillingDescription( { ); } + /* If the offer is for X years of monthly intervals */ if ( 'year' === introOffer.intervalUnit ) { + if ( 1 === introOffer.intervalCount ) { + return translate( + 'for your first year,{{br/}}' + 'then %(rawPrice)s billed monthly, excl. taxes', + { + args: { + rawPrice: originalPriceFullTermText, + }, + components: { br:
}, + comment: 'excl. taxes is short for excluding taxes', + } + ); + } + return translate( 'per month, for your first %(introOfferIntervalCount)s years,{{br/}}' + 'then %(rawPrice)s billed monthly, excl. taxes', @@ -156,23 +170,24 @@ export default function usePlanBillingDescription( { } } + /* Introductory offers for yearly plans */ if ( PLAN_ANNUAL_PERIOD === billingPeriod ) { - if ( 1 === introOffer.intervalCount ) { - return translate( - 'per month, for your first %(introOfferIntervalUnit)s,{{br/}}' + - 'then %(rawPrice)s billed annually, excl. taxes', - { - args: { - rawPrice: originalPriceFullTermText, - introOfferIntervalUnit: introOffer.intervalUnit, - }, - components: { br:
}, - comment: 'excl. taxes is short for excluding taxes', - } - ); - } - + /* If the offer is for X months of a yearly plan */ if ( 'month' === introOffer.intervalUnit ) { + if ( 1 === introOffer.intervalCount ) { + return translate( + 'for your first month,{{br/}}' + 'then %(rawPrice)s billed annually, excl. taxes', + { + args: { + rawPrice: originalPriceFullTermText, + introOfferIntervalUnit: introOffer.intervalUnit, + }, + components: { br:
}, + comment: 'excl. taxes is short for excluding taxes', + } + ); + } + return translate( 'for your first %(introOfferIntervalCount)s months,{{br/}}' + 'then %(rawPrice)s billed annually, excl. taxes', @@ -187,12 +202,29 @@ export default function usePlanBillingDescription( { ); } + /* If the offer is for X years of a yearly plan */ if ( 'year' === introOffer.intervalUnit ) { + if ( 1 === introOffer.intervalCount ) { + return translate( + 'per month, %(introOfferFormattedPrice)s for your first year,{{br/}}' + + 'then %(rawPrice)s billed annually, excl. taxes', + { + args: { + introOfferFormattedPrice: introOffer.formattedPrice, + rawPrice: originalPriceFullTermText, + }, + components: { br:
}, + comment: 'excl. taxes is short for excluding taxes', + } + ); + } + return translate( - 'per month, for your first %(introOfferIntervalCount)s years,{{br/}}' + + 'per month, %(introOfferFormattedPrice)s for your first %(introOfferIntervalCount)s years,{{br/}}' + 'then %(rawPrice)s billed annually, excl. taxes', { args: { + introOfferFormattedPrice: introOffer.formattedPrice, rawPrice: originalPriceFullTermText, introOfferIntervalCount: introOffer.intervalCount, },