diff --git a/src/components/shared/pricing/PricingSection.tsx b/src/components/shared/pricing/PricingSection.tsx
index a88536499..664f0f455 100644
--- a/src/components/shared/pricing/PricingSection.tsx
+++ b/src/components/shared/pricing/PricingSection.tsx
@@ -48,6 +48,7 @@ interface PriceTableProps {
onBusinessSwitchToggled?: (interval: Interval) => void;
onBusinessPlansSelected?: (isBusiness: boolean) => void;
differentRecommended?: boolean;
+ isValentinesMode?: boolean;
}
export const PricingSection = ({
@@ -79,6 +80,7 @@ export const PricingSection = ({
hideFeatures,
showPromo,
isAffiliate,
+ isValentinesMode = false,
}: PriceTableProps): JSX.Element => {
const banner = require('@/assets/lang/en/banners.json');
@@ -200,6 +202,7 @@ export const PricingSection = ({
isAffiliate={isAffiliate}
cardIndex={cardIndex}
showGift={showPromo}
+ isValentinesMode={isValentinesMode}
/>
))
: undefined}
@@ -240,6 +243,7 @@ export const PricingSection = ({
darkMode={darkMode}
cardIndex={cardIndex}
showGift={showPromo}
+ isValentinesMode={isValentinesMode}
/>
))
: undefined}
diff --git a/src/components/shared/pricing/PricingSectionForMobile.tsx b/src/components/shared/pricing/PricingSectionForMobile.tsx
index 3357aad63..7897f6274 100644
--- a/src/components/shared/pricing/PricingSectionForMobile.tsx
+++ b/src/components/shared/pricing/PricingSectionForMobile.tsx
@@ -45,6 +45,7 @@ interface PriceTableProps {
onCheckoutButtonClicked: (planId: string, isCheckoutForLifetime: boolean, interval: string, storage: string) => void;
onBusinessSwitchToggled?: (interval: Interval) => void;
onBusinessPlansSelected?: (isBusiness: boolean) => void;
+ isValentinesMode?: boolean;
}
export const PricingSectionForMobile = ({
@@ -75,6 +76,7 @@ export const PricingSectionForMobile = ({
showPromo,
isAffiliate,
hideBillingController,
+ isValentinesMode = false,
}: PriceTableProps): JSX.Element => {
const banner = require('@/assets/lang/en/banners.json');
@@ -198,6 +200,7 @@ export const PricingSectionForMobile = ({
isAffiliate={isAffiliate}
cardIndex={cardIndex}
showGift={showPromo}
+ isValentinesMode={isValentinesMode}
/>
))
: undefined}
@@ -241,6 +244,7 @@ export const PricingSectionForMobile = ({
darkMode={darkMode}
cardIndex={cardIndex}
showGift={showPromo}
+ isValentinesMode={isValentinesMode}
/>
))
: undefined}
diff --git a/src/components/shared/pricing/PricingSectionWrapper.tsx b/src/components/shared/pricing/PricingSectionWrapper.tsx
index 8bd9b910e..fb23e597a 100644
--- a/src/components/shared/pricing/PricingSectionWrapper.tsx
+++ b/src/components/shared/pricing/PricingSectionWrapper.tsx
@@ -1,3 +1,4 @@
+/* eslint-disable @typescript-eslint/no-explicit-any */
import { Interval, ProductsDataProps } from '@/services/stripe.service';
import { PricingSection } from './PricingSection';
import { SwitchButtonOptions, SwitchStorageOptions } from './components/PlanSelector';
@@ -56,6 +57,7 @@ interface PricingSectionWrapperProps {
hideFeatures?: boolean;
showPromo?: boolean;
isAffiliate?: boolean;
+ isValentinesMode?: boolean;
hideBillingController?: boolean;
overrideBillingFrequency?: Interval;
overrideBusinessBillingFrequency?: Interval;
@@ -85,7 +87,7 @@ const couponNameLabel = (label: string, couponName: string) => {
return label.replace('{{coupon}}', `'${couponName}'`);
};
-const HotLabel = ({ textContent, discountValue, darkMode }) => {
+const HotLabel = ({ textContent, discountValue, darkMode, isValentinesMode }) => {
if (!discountValue || discountValue <= MINIMUM_DISCOUNT || !textContent?.hotLabel) {
return null;
}
@@ -93,21 +95,45 @@ const HotLabel = ({ textContent, discountValue, darkMode }) => {
return (
- {formatDiscountLabel(textContent.hotLabel, discountValue)} 🔥
+ {isValentinesMode ? textContent.valentinesTitle : ''}
+ {formatDiscountLabel(textContent.hotLabel, discountValue)}
+ {isValentinesMode ? '💘' : '🔥'}
);
};
-const PricingHeader = ({ textContent, discountValue, className = '', couponCodeName, darkMode, SectionTag }) => (
-
+const PricingHeader = ({
+ textContent,
+ discountValue,
+ className = '',
+ couponCodeName,
+ darkMode,
+ SectionTag,
+ isValentinesMode,
+}) => (
+
{textContent.planTitles.header}
-
+
);
@@ -146,6 +172,7 @@ export const PricingSectionWrapper = ({
isAnnual,
showPromo,
isAffiliate,
+ isValentinesMode = false,
hideBillingController = DEFAULTS.hideBillingController,
hideFreeCard,
startIndividualPlansFromInterval = Interval.Lifetime,
@@ -221,6 +248,7 @@ export const PricingSectionWrapper = ({
onBusinessStorageChange,
hideFreeCard,
differentRecommended,
+ isValentinesMode,
};
return (
@@ -237,6 +265,7 @@ export const PricingSectionWrapper = ({
couponCodeName={couponCodeName}
darkMode={darkMode}
SectionTag={SectionTag}
+ isValentinesMode={isValentinesMode}
/>
{couponCodeName &&
}
@@ -250,6 +279,7 @@ export const PricingSectionWrapper = ({
darkMode={darkMode}
differentRecommended={differentRecommended}
showPromo={showPromo}
+ isValentinesMode={isValentinesMode}
/>
@@ -261,6 +291,7 @@ export const PricingSectionWrapper = ({
couponCodeName={couponCodeName}
darkMode={darkMode}
SectionTag={'p'}
+ isValentinesMode={isValentinesMode}
/>
{couponCodeName &&