@bunnyapp/components 1.7.0-beta.44 → 1.7.0-beta.45
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/index.js +206 -213
- package/dist/cjs/types/src/components/Subscriptions/Upgrade/PlanPicker/planPickerDesktop/featureAddons/FeatureAddonRow.d.ts +0 -3
- package/dist/cjs/types/src/components/Subscriptions/Upgrade/PlanPicker/planPickerDesktop/priceListCardDesktop/PriceListCardDesktop.d.ts +1 -17
- package/dist/cjs/types/src/components/Subscriptions/Upgrade/PlanPicker/planPickerMobile/PriceListCardMobile.d.ts +1 -3
- package/dist/cjs/types/src/components/Subscriptions/Upgrade/PlanPicker/priceListCard/PriceDescription/BillingPeriodDescription.d.ts +12 -0
- package/dist/cjs/types/src/components/Subscriptions/Upgrade/PlanPicker/priceListCard/PriceDescription/PriceListCardPriceDescription.d.ts +13 -6
- package/dist/cjs/types/src/components/Subscriptions/Upgrade/PlanPicker/priceListCard/PriceListCard.d.ts +1 -1
- package/dist/cjs/types/src/components/Subscriptions/Upgrade/PlanPicker/priceListCard/priceListCardUtils.d.ts +0 -4
- package/dist/cjs/types/src/components/priceListPricing/PricingTooltip.d.ts +6 -5
- package/dist/cjs/types/src/components/priceListPricing/components/ChargePriceTiers.d.ts +2 -1
- package/dist/cjs/types/src/components/priceListPricing/components/PriceTierPrice.d.ts +10 -3
- package/dist/cjs/types/src/utils/priceListChargeUtils/priceListChargePriceDescription.d.ts +13 -0
- package/dist/cjs/types/src/utils/priceListUtils/getActiveCharges.d.ts +10 -0
- package/dist/cjs/types/src/utils/priceListUtils/getPrice.d.ts +2 -2
- package/dist/cjs/types/src/utils/priceListUtils/getPricingUnit.d.ts +16 -0
- package/dist/cjs/types/src/utils/priceListUtils/priceDescription.d.ts +11 -4
- package/dist/esm/index.js +206 -213
- package/dist/esm/types/src/components/Subscriptions/Upgrade/PlanPicker/planPickerDesktop/featureAddons/FeatureAddonRow.d.ts +0 -3
- package/dist/esm/types/src/components/Subscriptions/Upgrade/PlanPicker/planPickerDesktop/priceListCardDesktop/PriceListCardDesktop.d.ts +1 -17
- package/dist/esm/types/src/components/Subscriptions/Upgrade/PlanPicker/planPickerMobile/PriceListCardMobile.d.ts +1 -3
- package/dist/esm/types/src/components/Subscriptions/Upgrade/PlanPicker/priceListCard/PriceDescription/BillingPeriodDescription.d.ts +12 -0
- package/dist/esm/types/src/components/Subscriptions/Upgrade/PlanPicker/priceListCard/PriceDescription/PriceListCardPriceDescription.d.ts +13 -6
- package/dist/esm/types/src/components/Subscriptions/Upgrade/PlanPicker/priceListCard/PriceListCard.d.ts +1 -1
- package/dist/esm/types/src/components/Subscriptions/Upgrade/PlanPicker/priceListCard/priceListCardUtils.d.ts +0 -4
- package/dist/esm/types/src/components/priceListPricing/PricingTooltip.d.ts +6 -5
- package/dist/esm/types/src/components/priceListPricing/components/ChargePriceTiers.d.ts +2 -1
- package/dist/esm/types/src/components/priceListPricing/components/PriceTierPrice.d.ts +10 -3
- package/dist/esm/types/src/utils/priceListChargeUtils/priceListChargePriceDescription.d.ts +13 -0
- package/dist/esm/types/src/utils/priceListUtils/getActiveCharges.d.ts +10 -0
- package/dist/esm/types/src/utils/priceListUtils/getPrice.d.ts +2 -2
- package/dist/esm/types/src/utils/priceListUtils/getPricingUnit.d.ts +16 -0
- package/dist/esm/types/src/utils/priceListUtils/priceDescription.d.ts +11 -4
- package/package.json +1 -1
- package/dist/cjs/types/src/components/Subscriptions/Upgrade/PlanPicker/priceListCard/PriceDescription/utils/hasMultipleRecurringCharges.d.ts +0 -12
- package/dist/cjs/types/src/utils/priceListUtils/doesPriceListHaveFlatFeeCharges.d.ts +0 -12
- package/dist/esm/types/src/components/Subscriptions/Upgrade/PlanPicker/priceListCard/PriceDescription/utils/hasMultipleRecurringCharges.d.ts +0 -12
- package/dist/esm/types/src/utils/priceListUtils/doesPriceListHaveFlatFeeCharges.d.ts +0 -12
package/dist/cjs/index.js
CHANGED
|
@@ -1283,7 +1283,7 @@ const DEFAULT_CONFIG = {
|
|
|
1283
1283
|
};
|
|
1284
1284
|
|
|
1285
1285
|
// This will be replaced at build time by rollup-plugin-replace
|
|
1286
|
-
const PACKAGE_VERSION = '1.7.0-beta.
|
|
1286
|
+
const PACKAGE_VERSION = '1.7.0-beta.44';
|
|
1287
1287
|
const createRequestHeaders = (token) => {
|
|
1288
1288
|
const headers = createClientDevHeaders({ token });
|
|
1289
1289
|
// Add the components version header
|
|
@@ -26496,6 +26496,36 @@ const everythingInPlusString = ({ priceList }) => {
|
|
|
26496
26496
|
return `Everything in ${priceList.plan.name}, plus`;
|
|
26497
26497
|
};
|
|
26498
26498
|
|
|
26499
|
+
const ChargeHasPriceTiers_PriceListChargeFragment = t(`
|
|
26500
|
+
fragment ChargeHasPriceTiers_PriceListChargeFragment on PriceListCharge {
|
|
26501
|
+
priceListChargeTiers {
|
|
26502
|
+
starts
|
|
26503
|
+
price
|
|
26504
|
+
}
|
|
26505
|
+
}
|
|
26506
|
+
`);
|
|
26507
|
+
function chargeHasPriceTiers(maskedCharge) {
|
|
26508
|
+
var _a;
|
|
26509
|
+
// Read fragments
|
|
26510
|
+
const charge = readFragment(ChargeHasPriceTiers_PriceListChargeFragment, maskedCharge);
|
|
26511
|
+
return ((_a = charge.priceListChargeTiers) === null || _a === void 0 ? void 0 : _a.length) && charge.priceListChargeTiers.length > 1;
|
|
26512
|
+
}
|
|
26513
|
+
|
|
26514
|
+
const PriceListHasPriceTiers_PriceListFragment = t(`
|
|
26515
|
+
fragment PriceListHasPriceTiers_PriceListFragment on PriceList {
|
|
26516
|
+
charges {
|
|
26517
|
+
...ChargeHasPriceTiers_PriceListChargeFragment
|
|
26518
|
+
}
|
|
26519
|
+
}
|
|
26520
|
+
`, [ChargeHasPriceTiers_PriceListChargeFragment]);
|
|
26521
|
+
// a pricelist has price tiers if any of its charges have > 1 price tier
|
|
26522
|
+
const priceListHasPriceTiers = (maskedPriceList) => {
|
|
26523
|
+
var _a;
|
|
26524
|
+
// Read fragments
|
|
26525
|
+
const priceList = readFragment(PriceListHasPriceTiers_PriceListFragment, maskedPriceList);
|
|
26526
|
+
return (_a = priceList.charges) === null || _a === void 0 ? void 0 : _a.some(chargeHasPriceTiers);
|
|
26527
|
+
};
|
|
26528
|
+
|
|
26499
26529
|
const TOOLTIP_BG_COLOR = '#2F353B';
|
|
26500
26530
|
|
|
26501
26531
|
function Tooltip(props) {
|
|
@@ -26509,53 +26539,97 @@ function Tooltip(props) {
|
|
|
26509
26539
|
} }));
|
|
26510
26540
|
}
|
|
26511
26541
|
|
|
26512
|
-
const
|
|
26513
|
-
fragment
|
|
26514
|
-
|
|
26515
|
-
|
|
26542
|
+
const priceListChargePriceDescription_PriceListChargeFragment = t(`
|
|
26543
|
+
fragment priceListChargePriceDescription_PriceListChargeFragment on PriceListCharge {
|
|
26544
|
+
showPriceAsMonthly
|
|
26545
|
+
billingPeriod
|
|
26546
|
+
feature {
|
|
26547
|
+
unitName
|
|
26548
|
+
}
|
|
26516
26549
|
}
|
|
26517
26550
|
`);
|
|
26518
|
-
function
|
|
26519
|
-
|
|
26520
|
-
//
|
|
26521
|
-
|
|
26522
|
-
|
|
26523
|
-
|
|
26524
|
-
|
|
26525
|
-
|
|
26526
|
-
|
|
26527
|
-
|
|
26528
|
-
|
|
26529
|
-
|
|
26551
|
+
function priceListChargePriceDescription(maskedPriceListCharge) {
|
|
26552
|
+
var _a;
|
|
26553
|
+
// Read fragments
|
|
26554
|
+
const priceListCharge = readFragment(priceListChargePriceDescription_PriceListChargeFragment, maskedPriceListCharge);
|
|
26555
|
+
const billingPeriod = priceListCharge.billingPeriod;
|
|
26556
|
+
const periodLabel = billingPeriod ? PERIOD_LABELS[billingPeriod] : null;
|
|
26557
|
+
const unitName = (_a = priceListCharge.feature) === null || _a === void 0 ? void 0 : _a.unitName;
|
|
26558
|
+
return `Per ${unitName ? `${unitName} / ` : ''}${priceListCharge.showPriceAsMonthly ? 'month' : periodLabel}`;
|
|
26559
|
+
}
|
|
26560
|
+
|
|
26561
|
+
const GetActiveCharges_PriceListChargeFragment = t(`
|
|
26562
|
+
fragment GetActiveCharges_PriceListChargeFragment on PriceListCharge {
|
|
26563
|
+
deprecated
|
|
26564
|
+
featureAddon
|
|
26530
26565
|
}
|
|
26531
|
-
|
|
26566
|
+
`);
|
|
26567
|
+
// Active charges: any charge that is not deprecated and not a feature addon
|
|
26568
|
+
function getActiveCharges(charges) {
|
|
26569
|
+
return charges.filter(maskedCharge => {
|
|
26570
|
+
const charge = readFragment(GetActiveCharges_PriceListChargeFragment, maskedCharge);
|
|
26571
|
+
return !charge.deprecated && !charge.featureAddon;
|
|
26572
|
+
});
|
|
26532
26573
|
}
|
|
26533
26574
|
|
|
26534
|
-
const
|
|
26535
|
-
fragment
|
|
26575
|
+
const getPriceListUnitName_PriceListFragment = t(`
|
|
26576
|
+
fragment getPriceListUnitName_PriceListFragment on PriceList {
|
|
26536
26577
|
charges {
|
|
26537
|
-
|
|
26538
|
-
|
|
26578
|
+
chargeType
|
|
26579
|
+
featureAddon
|
|
26580
|
+
deprecated
|
|
26581
|
+
feature {
|
|
26582
|
+
unitName
|
|
26583
|
+
}
|
|
26539
26584
|
}
|
|
26540
26585
|
}
|
|
26541
|
-
|
|
26542
|
-
function
|
|
26543
|
-
var _a, _b;
|
|
26586
|
+
`, []);
|
|
26587
|
+
function getPriceListUnitName(maskedPriceList) {
|
|
26588
|
+
var _a, _b, _c;
|
|
26544
26589
|
// Read fragments
|
|
26545
|
-
const priceList = readFragment(
|
|
26546
|
-
|
|
26547
|
-
|
|
26548
|
-
|
|
26590
|
+
const priceList = readFragment(getPriceListUnitName_PriceListFragment, maskedPriceList);
|
|
26591
|
+
const activeCharges = (_a = priceList.charges) === null || _a === void 0 ? void 0 : _a.filter(charge => !charge.deprecated && !charge.featureAddon);
|
|
26592
|
+
const recurringCharges = activeCharges === null || activeCharges === void 0 ? void 0 : activeCharges.filter(charge => charge.chargeType === 'RECURRING');
|
|
26593
|
+
const usageCharges = activeCharges === null || activeCharges === void 0 ? void 0 : activeCharges.filter(charge => charge.chargeType === 'USAGE');
|
|
26594
|
+
// Strategy 1: If only 1 recurring charge
|
|
26595
|
+
// return that charge.unit
|
|
26596
|
+
if ((recurringCharges === null || recurringCharges === void 0 ? void 0 : recurringCharges.length) === 1) {
|
|
26597
|
+
return (_b = recurringCharges[0].feature) === null || _b === void 0 ? void 0 : _b.unitName;
|
|
26598
|
+
}
|
|
26599
|
+
// Strategy 2: If only 1 usage charge
|
|
26600
|
+
// return that charge.unit
|
|
26601
|
+
if ((usageCharges === null || usageCharges === void 0 ? void 0 : usageCharges.length) === 1) {
|
|
26602
|
+
return (_c = usageCharges[0].feature) === null || _c === void 0 ? void 0 : _c.unitName;
|
|
26603
|
+
}
|
|
26604
|
+
// Stragey 3: Else there are conflicting charges
|
|
26605
|
+
// return null
|
|
26606
|
+
return null;
|
|
26549
26607
|
}
|
|
26550
26608
|
|
|
26551
|
-
|
|
26552
|
-
|
|
26609
|
+
const priceDescriptionString_PriceListFragment = t(`
|
|
26610
|
+
fragment priceDescriptionString_PriceListFragment on PriceList {
|
|
26611
|
+
showPriceAsMonthly
|
|
26612
|
+
periodMonths
|
|
26613
|
+
...getPriceListUnitName_PriceListFragment
|
|
26614
|
+
}
|
|
26615
|
+
`, [getPriceListUnitName_PriceListFragment]);
|
|
26616
|
+
function priceDescriptionString(maskedPriceList) {
|
|
26617
|
+
// Read fragments
|
|
26618
|
+
const priceList = readFragment(priceDescriptionString_PriceListFragment, maskedPriceList);
|
|
26619
|
+
const periodMonthsConverted = periodMonthsConverter(priceList.periodMonths);
|
|
26553
26620
|
const periodLabel = periodMonthsConverted ? PERIOD_LABELS[periodMonthsConverted] : null;
|
|
26554
|
-
|
|
26621
|
+
const unitName = getPriceListUnitName(priceList);
|
|
26622
|
+
return `Per ${unitName ? `${unitName} / ` : ''}${priceList.showPriceAsMonthly ? 'month' : periodLabel}`;
|
|
26555
26623
|
}
|
|
26556
26624
|
|
|
26557
26625
|
const { Text: Text$e } = antd.Typography;
|
|
26558
|
-
const
|
|
26626
|
+
const PriceTierPrice_PriceTierFragment = t(`
|
|
26627
|
+
fragment PriceTierPrice_PriceTierFragment on PriceListChargeTier {
|
|
26628
|
+
price
|
|
26629
|
+
}
|
|
26630
|
+
`);
|
|
26631
|
+
const PriceTierPrice = ({ currencyId, priceDecimals, tier: maskedTier, }) => {
|
|
26632
|
+
const tier = readFragment(PriceTierPrice_PriceTierFragment, maskedTier);
|
|
26559
26633
|
return (jsxRuntime.jsx(Text$e, { className: "bunny-text-white", children: formatCurrency(tier.price, currencyId, priceDecimals) }));
|
|
26560
26634
|
};
|
|
26561
26635
|
|
|
@@ -26586,11 +26660,11 @@ const ChargePriceTiers_PriceListChargeFragment = t(`
|
|
|
26586
26660
|
priceDecimals
|
|
26587
26661
|
priceListChargeTiers {
|
|
26588
26662
|
starts
|
|
26589
|
-
price
|
|
26590
26663
|
...PriceTierRow_PriceTierFragment
|
|
26664
|
+
...PriceTierPrice_PriceTierFragment
|
|
26591
26665
|
}
|
|
26592
26666
|
}
|
|
26593
|
-
`, [PriceTierRow_PriceTierFragment]);
|
|
26667
|
+
`, [PriceTierRow_PriceTierFragment, PriceTierPrice_PriceTierFragment]);
|
|
26594
26668
|
const ChargePriceTiers = ({ charge: maskedCharge, currencyId, }) => {
|
|
26595
26669
|
var _a;
|
|
26596
26670
|
const charge = readFragment(ChargePriceTiers_PriceListChargeFragment, maskedCharge);
|
|
@@ -26606,21 +26680,6 @@ const ChargePriceTiers = ({ charge: maskedCharge, currencyId, }) => {
|
|
|
26606
26680
|
}) })] }));
|
|
26607
26681
|
};
|
|
26608
26682
|
|
|
26609
|
-
const ChargeHasPriceTiers_PriceListChargeFragment = t(`
|
|
26610
|
-
fragment ChargeHasPriceTiers_PriceListChargeFragment on PriceListCharge {
|
|
26611
|
-
priceListChargeTiers {
|
|
26612
|
-
starts
|
|
26613
|
-
price
|
|
26614
|
-
}
|
|
26615
|
-
}
|
|
26616
|
-
`);
|
|
26617
|
-
function chargeHasPriceTiers(maskedCharge) {
|
|
26618
|
-
var _a;
|
|
26619
|
-
// Read fragments
|
|
26620
|
-
const charge = readFragment(ChargeHasPriceTiers_PriceListChargeFragment, maskedCharge);
|
|
26621
|
-
return ((_a = charge.priceListChargeTiers) === null || _a === void 0 ? void 0 : _a.length) && charge.priceListChargeTiers.length > 1;
|
|
26622
|
-
}
|
|
26623
|
-
|
|
26624
26683
|
const getFirstTierPrice = (charge, currencyId) => {
|
|
26625
26684
|
var _a, _b, _c;
|
|
26626
26685
|
const price = (_b = (_a = charge.priceListChargeTiers) === null || _a === void 0 ? void 0 : _a[0]) === null || _b === void 0 ? void 0 : _b.price;
|
|
@@ -26652,75 +26711,41 @@ const PricingTooltip_PriceListChargeFragment = t(`
|
|
|
26652
26711
|
priceDecimals
|
|
26653
26712
|
basePrice
|
|
26654
26713
|
name
|
|
26714
|
+
...priceListChargePriceDescription_PriceListChargeFragment
|
|
26655
26715
|
...ChargeHasPriceTiers_PriceListChargeFragment
|
|
26656
26716
|
...ChargePriceTiers_PriceListChargeFragment
|
|
26717
|
+
...GetActiveCharges_PriceListChargeFragment
|
|
26657
26718
|
}
|
|
26658
|
-
`, [
|
|
26719
|
+
`, [
|
|
26720
|
+
ChargeHasPriceTiers_PriceListChargeFragment,
|
|
26721
|
+
ChargePriceTiers_PriceListChargeFragment,
|
|
26722
|
+
GetActiveCharges_PriceListChargeFragment,
|
|
26723
|
+
priceListChargePriceDescription_PriceListChargeFragment
|
|
26724
|
+
]);
|
|
26659
26725
|
const PricingTooltip_PriceListFragment = t(`
|
|
26660
26726
|
fragment PricingTooltip_PriceListFragment on PriceList {
|
|
26661
|
-
showPriceAsMonthly
|
|
26662
|
-
periodMonths
|
|
26663
26727
|
currencyId
|
|
26664
26728
|
monthlyBasePrice
|
|
26665
26729
|
basePrice
|
|
26666
|
-
...
|
|
26730
|
+
...priceDescriptionString_PriceListFragment
|
|
26667
26731
|
}
|
|
26668
|
-
`, [
|
|
26669
|
-
const PricingTooltip = ({ className, priceListCharges: maskedPriceListCharges, currencyId,
|
|
26732
|
+
`, [priceDescriptionString_PriceListFragment]);
|
|
26733
|
+
const PricingTooltip = ({ className, priceListCharges: maskedPriceListCharges, currencyId, }) => {
|
|
26670
26734
|
// Read fragments
|
|
26671
|
-
const priceList = readFragment(PricingTooltip_PriceListFragment, maskedPriceList);
|
|
26672
26735
|
const priceListCharges = maskedPriceListCharges.map(charge => readFragment(PricingTooltip_PriceListChargeFragment, charge));
|
|
26673
|
-
const
|
|
26736
|
+
const activeCharges = getActiveCharges(priceListCharges);
|
|
26674
26737
|
const content = react.useMemo(() => {
|
|
26675
|
-
return (jsxRuntime.jsx("div", { className: "bunny-flex bunny-flex-col bunny-gap-3", children:
|
|
26676
|
-
var _a;
|
|
26738
|
+
return (jsxRuntime.jsx("div", { className: "bunny-flex bunny-flex-col bunny-gap-3", children: activeCharges === null || activeCharges === void 0 ? void 0 : activeCharges.map((charge, index) => {
|
|
26677
26739
|
const hasPriceTiers = chargeHasPriceTiers(charge);
|
|
26678
26740
|
if (hasPriceTiers) {
|
|
26679
26741
|
return jsxRuntime.jsx(ChargePriceTiers, { charge: charge, currencyId: currencyId }, index);
|
|
26680
26742
|
}
|
|
26681
|
-
return (jsxRuntime.jsxs("div", { className: "bunny-flex bunny-flex-col bunny-gap-1", children: [jsxRuntime.jsx("div", { className: "bunny-text-white bunny-font-bold", children: charge.name }), jsxRuntime.jsxs("div", { className: "bunny-text-gray-400 bunny-text-xs/3", children: [getChargeBasePrice(charge, currencyId), ' ',
|
|
26682
|
-
unitName: (_a = charge.feature) === null || _a === void 0 ? void 0 : _a.unitName,
|
|
26683
|
-
showPriceAsMonthly: priceList === null || priceList === void 0 ? void 0 : priceList.showPriceAsMonthly,
|
|
26684
|
-
periodMonths: priceList === null || priceList === void 0 ? void 0 : priceList.periodMonths,
|
|
26685
|
-
priceListHasFlatFeeCharges: doesPriceListHaveFlatFeeCharges(priceList),
|
|
26686
|
-
})] })] }, index));
|
|
26743
|
+
return (jsxRuntime.jsxs("div", { className: "bunny-flex bunny-flex-col bunny-gap-1", children: [jsxRuntime.jsx("div", { className: "bunny-text-white bunny-font-bold", children: charge.name }), jsxRuntime.jsxs("div", { className: "bunny-text-gray-400 bunny-text-xs/3", children: [getChargeBasePrice(charge, currencyId), ' ', priceListChargePriceDescription(charge)] })] }, index));
|
|
26687
26744
|
}) }));
|
|
26688
|
-
}, [
|
|
26745
|
+
}, [activeCharges, currencyId]);
|
|
26689
26746
|
return (jsxRuntime.jsx(Tooltip, { className: `bunny-text-gray-400 bunny-text-sm ${className}`, title: content, children: jsxRuntime.jsx(icons.InfoCircleOutlined, { className: "bunny-text-gray-400 ", size: 15 }) }));
|
|
26690
26747
|
};
|
|
26691
26748
|
|
|
26692
|
-
const PriceListHasPriceTiers_PriceListFragment = t(`
|
|
26693
|
-
fragment PriceListHasPriceTiers_PriceListFragment on PriceList {
|
|
26694
|
-
charges {
|
|
26695
|
-
...ChargeHasPriceTiers_PriceListChargeFragment
|
|
26696
|
-
}
|
|
26697
|
-
}
|
|
26698
|
-
`, [ChargeHasPriceTiers_PriceListChargeFragment]);
|
|
26699
|
-
// a pricelist has price tiers if any of its charges have > 1 price tier
|
|
26700
|
-
const priceListHasPriceTiers = (maskedPriceList) => {
|
|
26701
|
-
var _a;
|
|
26702
|
-
// Read fragments
|
|
26703
|
-
const priceList = readFragment(PriceListHasPriceTiers_PriceListFragment, maskedPriceList);
|
|
26704
|
-
return (_a = priceList.charges) === null || _a === void 0 ? void 0 : _a.some(chargeHasPriceTiers);
|
|
26705
|
-
};
|
|
26706
|
-
|
|
26707
|
-
const HasMultipleRecurringCharges_PriceListFragment = t(`
|
|
26708
|
-
fragment HasMultipleRecurringCharges_PriceListFragment on PriceList {
|
|
26709
|
-
charges {
|
|
26710
|
-
chargeType
|
|
26711
|
-
featureAddon
|
|
26712
|
-
}
|
|
26713
|
-
}
|
|
26714
|
-
`);
|
|
26715
|
-
// Exclude add-on charges because they may not be present in the quote/subscription
|
|
26716
|
-
// Exclude usage charges because their price depends on the usage (we don't know what the usage will be)
|
|
26717
|
-
const hasMultipleRecurringCharges = (maskedPriceList) => {
|
|
26718
|
-
var _a, _b;
|
|
26719
|
-
// Read fragments
|
|
26720
|
-
const priceList = readFragment(HasMultipleRecurringCharges_PriceListFragment, maskedPriceList);
|
|
26721
|
-
return (((_b = (_a = priceList.charges) === null || _a === void 0 ? void 0 : _a.filter(charge => charge.chargeType !== t.scalar('ChargeType', 'USAGE') && charge.featureAddon !== true).length) !== null && _b !== void 0 ? _b : 0) > 1);
|
|
26722
|
-
};
|
|
26723
|
-
|
|
26724
26749
|
/**
|
|
26725
26750
|
* It is possible for html based descriptions to return something like '<p></p>'
|
|
26726
26751
|
* In which case a null check or character length count doesn't work.
|
|
@@ -26731,6 +26756,22 @@ function isEmptyHTML(html) {
|
|
|
26731
26756
|
return /^<[^>]*>(\s*)<\/[^>]*>$/.test(html);
|
|
26732
26757
|
}
|
|
26733
26758
|
|
|
26759
|
+
const BillingPeriodDescription_PriceListFragment = t(`
|
|
26760
|
+
fragment BillingPeriodDescription_PriceListFragment on PriceList {
|
|
26761
|
+
periodMonths
|
|
26762
|
+
}
|
|
26763
|
+
`);
|
|
26764
|
+
const BillingPeriodDescription = ({ priceList: maskedPriceList, }) => {
|
|
26765
|
+
// Read fragments
|
|
26766
|
+
const priceList = readFragment(BillingPeriodDescription_PriceListFragment, maskedPriceList);
|
|
26767
|
+
const periodMonthsConverted = periodMonthsConverter(priceList.periodMonths);
|
|
26768
|
+
const billingPeriodText = periodMonthsConverted
|
|
26769
|
+
? BillingPeriodConverter$1[periodMonthsConverted]
|
|
26770
|
+
: 'undefined';
|
|
26771
|
+
const showDescription = priceList.periodMonths && priceList.periodMonths > 1;
|
|
26772
|
+
return (jsxRuntime.jsx(jsxRuntime.Fragment, { children: showDescription && (jsxRuntime.jsxs("div", { children: ["Billed ", billingPeriodText] })) }));
|
|
26773
|
+
};
|
|
26774
|
+
|
|
26734
26775
|
const { Text: Text$b } = antd.Typography;
|
|
26735
26776
|
const MarkupWrapper = defaultStyled.div `
|
|
26736
26777
|
padding: 0 !important;
|
|
@@ -26747,28 +26788,32 @@ const PriceListCardPriceDescription_PriceListFragment = t(`
|
|
|
26747
26788
|
plan {
|
|
26748
26789
|
pricingDescription
|
|
26749
26790
|
}
|
|
26750
|
-
|
|
26791
|
+
charges {
|
|
26792
|
+
...GetActiveCharges_PriceListChargeFragment
|
|
26793
|
+
...PricingTooltip_PriceListChargeFragment
|
|
26794
|
+
}
|
|
26795
|
+
currencyId
|
|
26751
26796
|
periodMonths
|
|
26752
|
-
...
|
|
26753
|
-
...
|
|
26797
|
+
...priceDescriptionString_PriceListFragment
|
|
26798
|
+
...BillingPeriodDescription_PriceListFragment
|
|
26799
|
+
...PriceListHasPriceTiers_PriceListFragment
|
|
26754
26800
|
}
|
|
26755
|
-
`, [
|
|
26756
|
-
|
|
26757
|
-
|
|
26801
|
+
`, [
|
|
26802
|
+
priceDescriptionString_PriceListFragment,
|
|
26803
|
+
BillingPeriodDescription_PriceListFragment,
|
|
26804
|
+
PriceListHasPriceTiers_PriceListFragment,
|
|
26805
|
+
GetActiveCharges_PriceListChargeFragment,
|
|
26806
|
+
PricingTooltip_PriceListChargeFragment
|
|
26807
|
+
]);
|
|
26808
|
+
const PriceListCardPriceDescription = ({ priceList: maskedPriceList, }) => {
|
|
26809
|
+
var _a, _b;
|
|
26758
26810
|
// Read fragments
|
|
26759
26811
|
const priceList = readFragment(PriceListCardPriceDescription_PriceListFragment, maskedPriceList);
|
|
26812
|
+
const activeCharges = getActiveCharges((_a = priceList.charges) !== null && _a !== void 0 ? _a : []);
|
|
26813
|
+
const showPricingTooltip = priceListHasPriceTiers(priceList) || activeCharges.length > 1;
|
|
26760
26814
|
if (priceList.periodMonths && priceList.periodMonths <= 0)
|
|
26761
26815
|
return null;
|
|
26762
|
-
|
|
26763
|
-
const billingPeriodText = periodMonthsConverted
|
|
26764
|
-
? BillingPeriodConverter$1[periodMonthsConverted]
|
|
26765
|
-
: 'undefined';
|
|
26766
|
-
return (jsxRuntime.jsxs(Text$b, { className: "bunny-text-start bunny-text-gray-400 bunny-text-sm", children: [jsxRuntime.jsx("div", { children: ((_a = priceList.plan) === null || _a === void 0 ? void 0 : _a.pricingDescription) && !isEmptyHTML(priceList.plan.pricingDescription) ? (jsxRuntime.jsx(MarkupWrapper, { children: jsxRuntime.jsx(interweave.Markup, { content: priceList.plan.pricingDescription }) })) : (priceDescriptionString({
|
|
26767
|
-
unitName: hasMultipleRecurringCharges(priceList) ? undefined : feature === null || feature === void 0 ? void 0 : feature.unitName,
|
|
26768
|
-
showPriceAsMonthly: priceList.showPriceAsMonthly,
|
|
26769
|
-
periodMonths: priceList.periodMonths,
|
|
26770
|
-
priceListHasFlatFeeCharges: doesPriceListHaveFlatFeeCharges(priceList),
|
|
26771
|
-
})) }), priceList.periodMonths && priceList.periodMonths > 1 && (jsxRuntime.jsxs("div", { children: ["Billed ", billingPeriodText] }))] }));
|
|
26816
|
+
return (jsxRuntime.jsxs(Text$b, { className: "bunny-text-start bunny-text-gray-400 bunny-text-sm", children: [jsxRuntime.jsxs("div", { className: "bunny-flex bunny-flex-row bunny-gap-2 bunny-items-center", children: [jsxRuntime.jsx("div", { children: ((_b = priceList.plan) === null || _b === void 0 ? void 0 : _b.pricingDescription) && !isEmptyHTML(priceList.plan.pricingDescription) ? (jsxRuntime.jsx(MarkupWrapper, { children: jsxRuntime.jsx(interweave.Markup, { content: priceList.plan.pricingDescription }) })) : (priceDescriptionString(priceList)) }), showPricingTooltip && (jsxRuntime.jsx(PricingTooltip, { priceListCharges: activeCharges, currencyId: priceList.currencyId }))] }), jsxRuntime.jsx(BillingPeriodDescription, { priceList: priceList })] }));
|
|
26772
26817
|
};
|
|
26773
26818
|
|
|
26774
26819
|
/**
|
|
@@ -26805,6 +26850,28 @@ const PriceListCardDescription = ({ description, className }) => {
|
|
|
26805
26850
|
return jsxRuntime.jsx(TruncatedText, { className: `bunny-text-gray-400 bunny-text-sm ${className !== null && className !== void 0 ? className : ''}`, text: description });
|
|
26806
26851
|
};
|
|
26807
26852
|
|
|
26853
|
+
const filterDeprecatedCharges_PriceListChargeFragment = t(`
|
|
26854
|
+
fragment filterDeprecatedCharges_PriceListChargeFragment on PriceListCharge {
|
|
26855
|
+
deprecated
|
|
26856
|
+
removeOnRenewal
|
|
26857
|
+
}
|
|
26858
|
+
`);
|
|
26859
|
+
function filterDeprecatedCharges(quoteChangeKind, maskedCharge) {
|
|
26860
|
+
const charge = readFragment(filterDeprecatedCharges_PriceListChargeFragment, maskedCharge);
|
|
26861
|
+
// If kind are not subscribe, reinstate or renew, then the deprecated charge is grandfathered in and can be displayed
|
|
26862
|
+
if (quoteChangeKind &&
|
|
26863
|
+
!(quoteChangeKind === t.scalar('QuoteChangeKind', 'SUBSCRIBE') ||
|
|
26864
|
+
quoteChangeKind === t.scalar('QuoteChangeKind', 'REINSTATE') ||
|
|
26865
|
+
quoteChangeKind === t.scalar('QuoteChangeKind', 'RENEW'))) {
|
|
26866
|
+
return true;
|
|
26867
|
+
}
|
|
26868
|
+
const deprecated = charge.deprecated;
|
|
26869
|
+
if (deprecated && quoteChangeKind === t.scalar('QuoteChangeKind', 'RENEW')) {
|
|
26870
|
+
return !charge.removeOnRenewal;
|
|
26871
|
+
}
|
|
26872
|
+
return !deprecated;
|
|
26873
|
+
}
|
|
26874
|
+
|
|
26808
26875
|
const GetPrice_PriceListFragment = t(`
|
|
26809
26876
|
fragment GetPrice_PriceListFragment on PriceList {
|
|
26810
26877
|
showPriceAsMonthly
|
|
@@ -26813,37 +26880,21 @@ const GetPrice_PriceListFragment = t(`
|
|
|
26813
26880
|
charges {
|
|
26814
26881
|
basePrice
|
|
26815
26882
|
chargeType
|
|
26816
|
-
featureAddon
|
|
26817
|
-
deprecated
|
|
26818
26883
|
...filterDeprecatedCharges_PriceListChargeFragment
|
|
26884
|
+
...GetActiveCharges_PriceListChargeFragment
|
|
26819
26885
|
}
|
|
26820
26886
|
}
|
|
26821
|
-
`, [filterDeprecatedCharges_PriceListChargeFragment]);
|
|
26887
|
+
`, [filterDeprecatedCharges_PriceListChargeFragment, GetActiveCharges_PriceListChargeFragment]);
|
|
26822
26888
|
function getPrice(maskedPriceList) {
|
|
26823
|
-
var _a
|
|
26889
|
+
var _a;
|
|
26824
26890
|
// Read fragments
|
|
26825
26891
|
const priceList = readFragment(GetPrice_PriceListFragment, maskedPriceList);
|
|
26826
|
-
|
|
26827
|
-
|
|
26828
|
-
//
|
|
26829
|
-
|
|
26830
|
-
|
|
26831
|
-
|
|
26832
|
-
if (!filterDeprecatedCharges(undefined, charge)) {
|
|
26833
|
-
return false;
|
|
26834
|
-
}
|
|
26835
|
-
// Exclude featureAddon charges
|
|
26836
|
-
if (charge.featureAddon === true) {
|
|
26837
|
-
return false;
|
|
26838
|
-
}
|
|
26839
|
-
// Keep only USAGE charges
|
|
26840
|
-
return charge.chargeType === t.scalar('ChargeType', 'USAGE');
|
|
26841
|
-
})) !== null && _b !== void 0 ? _b : [];
|
|
26842
|
-
// If there are any usage charges, sum their basePrice
|
|
26843
|
-
if (usageCharges.length > 0) {
|
|
26844
|
-
return usageCharges.reduce((sum, charge) => sum + charge.basePrice, 0);
|
|
26845
|
-
}
|
|
26846
|
-
// =================================================================
|
|
26892
|
+
const activeCharges = getActiveCharges((_a = priceList.charges) !== null && _a !== void 0 ? _a : []);
|
|
26893
|
+
const onlyUsageChargesExist = activeCharges === null || activeCharges === void 0 ? void 0 : activeCharges.every(charge => charge.chargeType === 'USAGE');
|
|
26894
|
+
// HACK: If there are ONLY usage charges, sum their basePrice
|
|
26895
|
+
if (onlyUsageChargesExist) {
|
|
26896
|
+
return activeCharges === null || activeCharges === void 0 ? void 0 : activeCharges.reduce((sum, charge) => sum + charge.basePrice, 0);
|
|
26897
|
+
}
|
|
26847
26898
|
// Otherwise, return the priceList basePrice or monthlyBasePrice
|
|
26848
26899
|
if (priceList.showPriceAsMonthly) {
|
|
26849
26900
|
return priceList.monthlyBasePrice;
|
|
@@ -26932,32 +26983,19 @@ const PriceListCardDesktop_PriceListFragment = t(`
|
|
|
26932
26983
|
contactUsUrl
|
|
26933
26984
|
name
|
|
26934
26985
|
}
|
|
26935
|
-
charges {
|
|
26936
|
-
id
|
|
26937
|
-
featureAddon
|
|
26938
|
-
priceListChargeTiers {
|
|
26939
|
-
starts
|
|
26940
|
-
price
|
|
26941
|
-
}
|
|
26942
|
-
...PricingTooltip_PriceListChargeFragment
|
|
26943
|
-
}
|
|
26944
|
-
currencyId
|
|
26945
26986
|
...PriceListCardButton_PriceListFragment
|
|
26946
26987
|
...PriceListHasPriceTiers_PriceListFragment
|
|
26947
|
-
...PricingTooltip_PriceListFragment
|
|
26948
26988
|
...PriceListCardPrice_PriceListFragment
|
|
26949
26989
|
...PriceListCardPriceDescription_PriceListFragment
|
|
26950
26990
|
}
|
|
26951
26991
|
`, [
|
|
26952
26992
|
PriceListCardButton_PriceListFragment,
|
|
26953
|
-
PricingTooltip_PriceListChargeFragment,
|
|
26954
26993
|
PriceListHasPriceTiers_PriceListFragment,
|
|
26955
|
-
PricingTooltip_PriceListFragment,
|
|
26956
26994
|
PriceListCardPrice_PriceListFragment,
|
|
26957
26995
|
PriceListCardPriceDescription_PriceListFragment,
|
|
26958
26996
|
]);
|
|
26959
|
-
const PriceListCardDesktop = ({ hideButton, description, disableSelectCurrentPlan,
|
|
26960
|
-
var _a, _b
|
|
26997
|
+
const PriceListCardDesktop = ({ hideButton, description, disableSelectCurrentPlan, isPriceListCurrentSubscription, isSelected, priceList: maskedPriceList, subscriptionPlan, trialRemainingDays, noBorder, onClickPriceListCard, }) => {
|
|
26998
|
+
var _a, _b;
|
|
26961
26999
|
// Read fragments
|
|
26962
27000
|
const priceList = readFragment(PriceListCardDesktop_PriceListFragment, maskedPriceList);
|
|
26963
27001
|
return (jsxRuntime.jsx(PlanPickerGridCell, { noBorder: noBorder, children: jsxRuntime.jsxs("div", { className: `bunny-flex bunny-flex-col bunny-items-start bunny-justify-between bunny-w-full bunny-rounded-md bunny-gap-4 bunny-pt-4 bunny-px-4 ${disableSelectCurrentPlan ? '' : 'cursor-pointer'} bunny-box-border`, onClick: () => {
|
|
@@ -26976,7 +27014,7 @@ const PriceListCardDesktop = ({ hideButton, description, disableSelectCurrentPla
|
|
|
26976
27014
|
display: 'grid',
|
|
26977
27015
|
gridTemplateRows: 'auto minmax(40px, auto)',
|
|
26978
27016
|
alignItems: 'start',
|
|
26979
|
-
}, children: [jsxRuntime.jsx(PriceListCardPrice, { priceList: priceList }), jsxRuntime.
|
|
27017
|
+
}, children: [jsxRuntime.jsx(PriceListCardPrice, { priceList: priceList }), jsxRuntime.jsx("div", { className: "bunny-flex bunny-flex-row bunny-gap-2 bunny-items-center", children: jsxRuntime.jsx(PriceListCardPriceDescription, { priceList: priceList }) })] })] }), !hideButton && (jsxRuntime.jsx(PriceListCardButton, { disableSelectCurrentPlan: disableSelectCurrentPlan, isPriceListCurrentSubscription: isPriceListCurrentSubscription, isSelected: isSelected, priceList: priceList, subscriptionPlan: subscriptionPlan }))] }) }));
|
|
26980
27018
|
};
|
|
26981
27019
|
|
|
26982
27020
|
const CheckIcon = ({ backgroundColor, size, }) => {
|
|
@@ -26999,7 +27037,7 @@ const PriceListCardMobile_PriceListFragment = t(`
|
|
|
26999
27037
|
PriceListCardPrice_PriceListFragment,
|
|
27000
27038
|
PriceListCardButton_PriceListFragment,
|
|
27001
27039
|
]);
|
|
27002
|
-
const PriceListCardMobile = ({ description,
|
|
27040
|
+
const PriceListCardMobile = ({ description, isPriceListCurrentSubscription, isSelected, priceList: maskedPriceList, subscriptionPlan, trialRemainingDays, disableOnClickPriceListCard, onClickPriceListCard, }) => {
|
|
27003
27041
|
var _a, _b;
|
|
27004
27042
|
// Context
|
|
27005
27043
|
const { brandColor } = useBrand();
|
|
@@ -27014,7 +27052,7 @@ const PriceListCardMobile = ({ description, feature, isPriceListCurrentSubscript
|
|
|
27014
27052
|
}, children: [isSelected && (jsxRuntime.jsx("div", { className: "bunny-absolute", style: {
|
|
27015
27053
|
top: '10px',
|
|
27016
27054
|
right: '10px',
|
|
27017
|
-
}, children: jsxRuntime.jsx(CheckIcon, { backgroundColor: brandColor, size: "20px" }) })), jsxRuntime.jsxs("div", { className: "bunny-flex bunny-flex-col bunny-items-center bunny-grow bunny-gap-2", children: [jsxRuntime.jsxs("div", { className: "bunny-flex bunny-flex-col bunny-items-center bunny-gap-2", children: [jsxRuntime.jsx(PriceListCardTitle, { isPriceListCurrentSubscription: isPriceListCurrentSubscription, planName: (_b = (_a = priceList.plan) === null || _a === void 0 ? void 0 : _a.name) !== null && _b !== void 0 ? _b : 'undefined', trialRemainingDays: trialRemainingDays }), jsxRuntime.jsx(PriceListCardDescription, { description: description })] }), jsxRuntime.jsxs("div", { className: "bunny-flex bunny-flex-col bunny-items-center bunny-gap-2", children: [jsxRuntime.jsx(PriceListCardPrice, { priceList: priceList }), jsxRuntime.jsx(PriceListCardPriceDescription, {
|
|
27055
|
+
}, children: jsxRuntime.jsx(CheckIcon, { backgroundColor: brandColor, size: "20px" }) })), jsxRuntime.jsxs("div", { className: "bunny-flex bunny-flex-col bunny-items-center bunny-grow bunny-gap-2", children: [jsxRuntime.jsxs("div", { className: "bunny-flex bunny-flex-col bunny-items-center bunny-gap-2", children: [jsxRuntime.jsx(PriceListCardTitle, { isPriceListCurrentSubscription: isPriceListCurrentSubscription, planName: (_b = (_a = priceList.plan) === null || _a === void 0 ? void 0 : _a.name) !== null && _b !== void 0 ? _b : 'undefined', trialRemainingDays: trialRemainingDays }), jsxRuntime.jsx(PriceListCardDescription, { description: description })] }), jsxRuntime.jsxs("div", { className: "bunny-flex bunny-flex-col bunny-items-center bunny-gap-2", children: [jsxRuntime.jsx(PriceListCardPrice, { priceList: priceList }), jsxRuntime.jsx(PriceListCardPriceDescription, { priceList: priceList })] }), jsxRuntime.jsx(PriceListCardButton, { disableSelectCurrentPlan: disableOnClickPriceListCard, isPriceListCurrentSubscription: isPriceListCurrentSubscription, isSelected: isSelected, priceList: priceList, subscriptionPlan: subscriptionPlan })] })] }));
|
|
27018
27056
|
};
|
|
27019
27057
|
|
|
27020
27058
|
function getAddonsForBillingPeriod(billingPeriod, addonPlans) {
|
|
@@ -27048,43 +27086,6 @@ const removeHTMLTagsRegex = /<br>(?=(?:\s*<[^>]*>)*$)|(<br>)|<[^>]*>/gi;
|
|
|
27048
27086
|
const createPlanDescription = (planDescription) => {
|
|
27049
27087
|
return (planDescription || '').replace(removeHTMLTagsRegex, (_, y) => (y ? ' & ' : ''));
|
|
27050
27088
|
};
|
|
27051
|
-
const getActivePlanPriceData = (priceList, selectedPriceList) => {
|
|
27052
|
-
if (!priceList) {
|
|
27053
|
-
return;
|
|
27054
|
-
}
|
|
27055
|
-
// If a period option is selected, return the charge that matches the selected period option
|
|
27056
|
-
let activeBillingPLCharge;
|
|
27057
|
-
// Default to first price list charge
|
|
27058
|
-
let lowestPLCharge;
|
|
27059
|
-
// Find the lowest price list charge with a billing period that matches the selected period option
|
|
27060
|
-
if (priceList.id === (selectedPriceList === null || selectedPriceList === void 0 ? void 0 : selectedPriceList.id)) {
|
|
27061
|
-
activeBillingPLCharge = priceList.charges[0];
|
|
27062
|
-
}
|
|
27063
|
-
for (let j = 0; j < priceList.charges.length; j++) {
|
|
27064
|
-
const charge = priceList.charges[j];
|
|
27065
|
-
if (charge.chargeType === ChargeType$1.USAGE || charge.featureAddon === true)
|
|
27066
|
-
continue;
|
|
27067
|
-
if (activeBillingPLCharge) {
|
|
27068
|
-
// If we already found a charge with the same billing period check if this charge is lower
|
|
27069
|
-
if (charge.basePrice < activeBillingPLCharge.basePrice &&
|
|
27070
|
-
charge.billingPeriod === (activeBillingPLCharge === null || activeBillingPLCharge === void 0 ? void 0 : activeBillingPLCharge.billingPeriod)) {
|
|
27071
|
-
activeBillingPLCharge = charge;
|
|
27072
|
-
}
|
|
27073
|
-
}
|
|
27074
|
-
// If a period option is selected, only return the charge if it matches the selected period option
|
|
27075
|
-
else if (selectedPriceList &&
|
|
27076
|
-
charge.billingPeriod === periodMonthsConverter(selectedPriceList.periodMonths)) {
|
|
27077
|
-
activeBillingPLCharge = charge;
|
|
27078
|
-
}
|
|
27079
|
-
// Otherwise, return the lowest price list charge
|
|
27080
|
-
else if (charge.basePrice < ((lowestPLCharge === null || lowestPLCharge === void 0 ? void 0 : lowestPLCharge.basePrice) || -1)) {
|
|
27081
|
-
lowestPLCharge = charge;
|
|
27082
|
-
}
|
|
27083
|
-
}
|
|
27084
|
-
return {
|
|
27085
|
-
activeCharge: activeBillingPLCharge || lowestPLCharge,
|
|
27086
|
-
};
|
|
27087
|
-
};
|
|
27088
27089
|
|
|
27089
27090
|
const PriceListCard_PriceListFragment = t(`
|
|
27090
27091
|
fragment PriceListCard_PriceListFragment on PriceList {
|
|
@@ -27098,17 +27099,15 @@ const PriceListCard_PriceListFragment = t(`
|
|
|
27098
27099
|
}
|
|
27099
27100
|
`, [PriceListCardDesktop_PriceListFragment, PriceListCardMobile_PriceListFragment]);
|
|
27100
27101
|
const PriceListCard = ({ hideButton, isSelected, priceList: maskedPriceList, subscriptions, trialRemainingDays, noBorder, onClickPriceListCard, disableCurrentPlan = false, }) => {
|
|
27101
|
-
var _a, _b, _c
|
|
27102
|
+
var _a, _b, _c;
|
|
27102
27103
|
const isMobile = useIsMobile();
|
|
27103
27104
|
const upgradingSubscription = useUpgradingSubscription();
|
|
27104
27105
|
// Read fragments
|
|
27105
27106
|
const priceList = readFragment(PriceListCard_PriceListFragment, maskedPriceList);
|
|
27106
27107
|
// Derived state
|
|
27107
27108
|
const description = createPlanDescription((_b = (_a = priceList.plan) === null || _a === void 0 ? void 0 : _a.description) !== null && _b !== void 0 ? _b : '');
|
|
27108
|
-
// Get the active price list charge for this plan
|
|
27109
|
-
const activeCharge = (_c = getActivePlanPriceData(priceList, priceList)) === null || _c === void 0 ? void 0 : _c.activeCharge;
|
|
27110
27109
|
// Is the price list the current price list for the upgradingSubscription
|
|
27111
|
-
const isPriceListCurrentSubscription = ((
|
|
27110
|
+
const isPriceListCurrentSubscription = ((_c = upgradingSubscription === null || upgradingSubscription === void 0 ? void 0 : upgradingSubscription.priceList) === null || _c === void 0 ? void 0 : _c.id) === priceList.id;
|
|
27112
27111
|
const disableSelectCurrentPlan = disableCurrentPlan;
|
|
27113
27112
|
// We now support updating quantities by clicking the current plan. Therefore we shouldn't disable current plan
|
|
27114
27113
|
// disableCurrentPlan ??
|
|
@@ -27123,13 +27122,9 @@ const PriceListCard = ({ hideButton, isSelected, priceList: maskedPriceList, sub
|
|
|
27123
27122
|
subscription.state !== t.scalar('SubscriptionState', 'EXPIRED') &&
|
|
27124
27123
|
((_b = subscription.state) === null || _b === void 0 ? void 0 : _b.toUpperCase()) === t.scalar('SubscriptionState', 'TRIAL_EXPIRED');
|
|
27125
27124
|
});
|
|
27126
|
-
|
|
27127
|
-
return null;
|
|
27128
|
-
}
|
|
27129
|
-
const { feature } = activeCharge;
|
|
27130
|
-
return isMobile ? (jsxRuntime.jsx(PriceListCardMobile, { description: description, feature: feature, isPriceListCurrentSubscription: isPriceListCurrentSubscription, isSelected: isSelected, priceList: priceList, trialRemainingDays: trialRemainingDays, subscriptionPlan: subscriptionPlan,
|
|
27125
|
+
return isMobile ? (jsxRuntime.jsx(PriceListCardMobile, { description: description, isPriceListCurrentSubscription: isPriceListCurrentSubscription, isSelected: isSelected, priceList: priceList, trialRemainingDays: trialRemainingDays, subscriptionPlan: subscriptionPlan,
|
|
27131
27126
|
// TODO: naming mismatch disableOnClickPriceListCard vs disableSelectCurrentPlan, maybe also functionality mismatch? (ignore for now, mobile won't ever show this currently)
|
|
27132
|
-
disableOnClickPriceListCard: disableSelectCurrentPlan, onClickPriceListCard: onClickPriceListCard })) : (jsxRuntime.jsx(PriceListCardDesktop, { hideButton: hideButton, description: description, disableSelectCurrentPlan: disableSelectCurrentPlan,
|
|
27127
|
+
disableOnClickPriceListCard: disableSelectCurrentPlan, onClickPriceListCard: onClickPriceListCard })) : (jsxRuntime.jsx(PriceListCardDesktop, { hideButton: hideButton, description: description, disableSelectCurrentPlan: disableSelectCurrentPlan, isPriceListCurrentSubscription: isPriceListCurrentSubscription, isSelected: isSelected, priceList: priceList, trialRemainingDays: trialRemainingDays, subscriptionPlan: subscriptionPlan, noBorder: noBorder, onClickPriceListCard: onClickPriceListCard }));
|
|
27133
27128
|
};
|
|
27134
27129
|
|
|
27135
27130
|
const mutation$a = t(`
|
|
@@ -27295,9 +27290,8 @@ const FeatureAddonRow_PriceListFragment = t(`
|
|
|
27295
27290
|
id
|
|
27296
27291
|
name
|
|
27297
27292
|
}
|
|
27298
|
-
...PricingTooltip_PriceListFragment
|
|
27299
27293
|
}
|
|
27300
|
-
|
|
27294
|
+
`);
|
|
27301
27295
|
const FeatureAddonRow_PriceListChargeFragment = t(`
|
|
27302
27296
|
fragment FeatureAddonRow_PriceListChargeFragment on PriceListCharge {
|
|
27303
27297
|
id
|
|
@@ -27318,7 +27312,7 @@ function FeatureAddonRow({ featureAddon: maskedFeatureAddon, priceList: maskedPr
|
|
|
27318
27312
|
const isPurchased = isAddonPurchased(featureAddon, upgradingSubscription);
|
|
27319
27313
|
const isDisabled = !isPriceListSelected || isPurchased;
|
|
27320
27314
|
const checked = isChecked || isPurchased;
|
|
27321
|
-
return (jsxRuntime.jsxs("div", { className: "bunny-flex bunny-flex-row bunny-flex-wrap bunny-items-center bunny-justify-between bunny-gap-1", children: [jsxRuntime.jsxs("div", { className: "bunny-flex bunny-flex-row bunny-gap-1", children: [jsxRuntime.jsx(Text$7, { className: "bunny-flex bunny-text-sm bunny-items-center bunny-gap-1 bunny-text-gray-600", children: featureAddon.name }), jsxRuntime.jsx(PricingTooltip, { priceListCharges: [featureAddon], currencyId: priceList.currencyId
|
|
27315
|
+
return (jsxRuntime.jsxs("div", { className: "bunny-flex bunny-flex-row bunny-flex-wrap bunny-items-center bunny-justify-between bunny-gap-1", children: [jsxRuntime.jsxs("div", { className: "bunny-flex bunny-flex-row bunny-gap-1", children: [jsxRuntime.jsx(Text$7, { className: "bunny-flex bunny-text-sm bunny-items-center bunny-gap-1 bunny-text-gray-600", children: featureAddon.name }), jsxRuntime.jsx(PricingTooltip, { priceListCharges: [featureAddon], currencyId: priceList.currencyId })] }), jsxRuntime.jsx(antd.Switch, { id: featureAddonSwitchTestId(featureAddon.name), size: "small", loading: isPending, disabled: isDisabled || !quote, checked: checked, onChange: checked => {
|
|
27322
27316
|
if (checked) {
|
|
27323
27317
|
handleAddFeatureAddon();
|
|
27324
27318
|
}
|
|
@@ -27694,20 +27688,19 @@ const AddonPlanRow_PriceListFragment = t(`
|
|
|
27694
27688
|
PriceListCardPriceDescription_PriceListFragment,
|
|
27695
27689
|
]);
|
|
27696
27690
|
function AddonPlanRow({ addonPriceList: maskedAddonPriceList, selectedPriceList, onClickSelect, isPurchased, }) {
|
|
27697
|
-
var _a, _b, _c, _d, _e, _f
|
|
27691
|
+
var _a, _b, _c, _d, _e, _f;
|
|
27698
27692
|
// Read fragments
|
|
27699
27693
|
const addonPriceList = readFragment(AddonPlanRow_PriceListFragment, maskedAddonPriceList);
|
|
27700
27694
|
const { quote: maskedQuote, setIsAddonPlanLoading } = react.useContext(QuoteContext);
|
|
27701
27695
|
const quote = readFragment(AddonPlanRow_QuoteFragment, maskedQuote);
|
|
27702
27696
|
const { shadow, isInPreviewMode } = useSubscriptionProps();
|
|
27703
27697
|
const { isPending, addedQuoteChange, addAddonQuoteChange, deleteQuoteChange } = useToggleAddonPlan(quote, addonPriceList.id, selectedPriceList, setIsAddonPlanLoading);
|
|
27704
|
-
const activeCharge = (_a = getActivePlanPriceData(addonPriceList, selectedPriceList)) === null || _a === void 0 ? void 0 : _a.activeCharge;
|
|
27705
27698
|
// Derived state
|
|
27706
27699
|
const switchDisabled = isInPreviewMode || isPurchased;
|
|
27707
|
-
const hasCustomPrice = !isEmptyHTML((
|
|
27708
|
-
return (jsxRuntime.jsxs("div", { className: `bunny-flex bunny-flex-row bunny-gap-2 bunny-justify-between bunny-items-center bunny-p-4 bunny-rounded-md bunny-bg-white ${shadow ? `shadow-${shadow}` : ''} bunny-mb-2`, children: [jsxRuntime.jsxs("div", { className: "bunny-flex bunny-flex-row bunny-gap-2 bunny-items-center bunny-min-w-0 bunny-flex-1", children: [jsxRuntime.jsx(Shrink0Wrapper, { className: "bunny-font-medium bunny-text-center bunny-text-orange-600", children: (
|
|
27700
|
+
const hasCustomPrice = !isEmptyHTML((_a = addonPriceList.plan) === null || _a === void 0 ? void 0 : _a.pricingDescription);
|
|
27701
|
+
return (jsxRuntime.jsxs("div", { className: `bunny-flex bunny-flex-row bunny-gap-2 bunny-justify-between bunny-items-center bunny-p-4 bunny-rounded-md bunny-bg-white ${shadow ? `shadow-${shadow}` : ''} bunny-mb-2`, children: [jsxRuntime.jsxs("div", { className: "bunny-flex bunny-flex-row bunny-gap-2 bunny-items-center bunny-min-w-0 bunny-flex-1", children: [jsxRuntime.jsx(Shrink0Wrapper, { className: "bunny-font-medium bunny-text-center bunny-text-orange-600", children: (_b = addonPriceList.plan) === null || _b === void 0 ? void 0 : _b.name }), jsxRuntime.jsx("div", { className: "bunny-min-w-0 bunny-flex-1", children: jsxRuntime.jsx(PriceListCardDescription, { description: (_d = (_c = addonPriceList.plan) === null || _c === void 0 ? void 0 : _c.description) !== null && _d !== void 0 ? _d : '', className: "bunny-whitespace-nowrap" }) })] }), jsxRuntime.jsxs("div", { className: "bunny-flex bunny-flex-row bunny-gap-2 bunny-items-center bunny-shrink-0", children: [!hasCustomPrice && (jsxRuntime.jsx(Shrink0Wrapper, { children: jsxRuntime.jsx(PriceListCardPrice, { priceList: addonPriceList, className: "bunny-whitespace-nowrap bunny-text-sm bunny-font-medium bunny-text-gray-900" }) })), jsxRuntime.jsx(Shrink0Wrapper, { children: jsxRuntime.jsx(PriceListCardPriceDescription, { priceList: addonPriceList }) }), jsxRuntime.jsx(Shrink0Wrapper, { children: jsxRuntime.jsx(antd.Button, { type: "link", onClick: () => {
|
|
27709
27702
|
onClickSelect();
|
|
27710
|
-
}, children: jsxRuntime.jsx(icons.InfoCircleOutlined, {}) }) }), jsxRuntime.jsx(antd.Switch, { id: addonPlanSwitchTestId((
|
|
27703
|
+
}, children: jsxRuntime.jsx(icons.InfoCircleOutlined, {}) }) }), jsxRuntime.jsx(antd.Switch, { id: addonPlanSwitchTestId((_f = (_e = addonPriceList.plan) === null || _e === void 0 ? void 0 : _e.name) !== null && _f !== void 0 ? _f : ''), loading: isPending && !switchDisabled, checked: addedQuoteChange || isPurchased, onChange: (checked) => {
|
|
27711
27704
|
if (checked) {
|
|
27712
27705
|
addAddonQuoteChange();
|
|
27713
27706
|
}
|