@stigg/react-sdk 4.15.0 → 5.1.0
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/components/paywall/paywallTextOverrides.d.ts +6 -1
- package/dist/components/utils/priceTierUtils.d.ts +3 -1
- package/dist/react-sdk.cjs.development.js +49 -46
- package/dist/react-sdk.cjs.development.js.map +1 -1
- package/dist/react-sdk.cjs.production.min.js +1 -1
- package/dist/react-sdk.cjs.production.min.js.map +1 -1
- package/dist/react-sdk.esm.js +51 -48
- package/dist/react-sdk.esm.js.map +1 -1
- package/package.json +2 -2
- package/src/components/checkout/hooks/usePlanStepModel.ts +3 -3
- package/src/components/checkout/summary/components/LineItems.tsx +7 -3
- package/src/components/common/TiersSelectContainer.tsx +7 -14
- package/src/components/utils/calculateDiscountRate.ts +2 -1
- package/src/components/utils/getPaidPriceText.ts +1 -1
- package/src/components/utils/priceTierUtils.ts +41 -21
- package/src/stories/mocks/checkout/mockCheckoutState.ts +4 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"react-sdk.cjs.development.js","sources":["../src/assets/check-stigg.svg","../src/components/paywall/utils/calculateUnitQuantityText.ts","../src/components/common/Typography.tsx","../src/components/paywall/EntitlementRow.tsx","../src/components/paywall/PlanEntitlements.tsx","../src/components/paywall/types.ts","../src/theme/getResolvedTheme.ts","../src/components/utils/getSubscriptionScheduleUpdateTexts.tsx","../src/components/utils/priceTierUtils.ts","../src/components/paywall/PlanOfferingButton.tsx","../src/assets/mini-schedule.svg","../src/components/utils/currencyUtils.ts","../src/components/utils/getPaidPriceText.ts","../src/components/utils/getPlanPrice.ts","../src/components/checkout/components/Button.tsx","../src/components/checkout/components/InputField.tsx","../src/components/checkout/components/Skeletons.style.ts","../src/components/checkout/components/ContentLoadingSkeleton.tsx","../src/components/common/VolumePerUnitInput.tsx","../src/components/common/VolumeBulkSelect.tsx","../src/components/common/TiersSelectContainer.tsx","../src/components/paywall/PlanPrice.tsx","../src/components/paywall/PlanOffering.tsx","../src/components/paywall/BillingPeriodPicker.tsx","../src/components/utils/calculateDiscountRate.ts","../src/assets/powered-by-stigg.svg","../src/components/common/PoweredByStigg.tsx","../src/components/paywall/utils/hasPricePoints.ts","../src/components/paywall/utils/getPlansToDisplay.ts","../src/components/paywall/Paywall.tsx","../node_modules/regenerator-runtime/runtime.js","../src/services/logger.ts","../src/components/StiggProvider.tsx","../src/components/paywall/utils/computeDefaultBillingPeriod.ts","../src/components/paywall/utils/calculateTrialDaysLeft.ts","../src/components/checkout/configurations/typography.ts","../src/components/common/mapExternalTheme.ts","../src/components/paywall/utils/mapPaywallData.ts","../src/components/paywall/hooks/useLoadPaywallData.ts","../src/components/paywall/paywallTextOverrides.ts","../src/components/paywall/PaywallLoader.tsx","../src/theme/Fonts.tsx","../src/theme/Theme.tsx","../src/components/customerPortal/hooks/useCustomerPortal.ts","../src/components/customerPortal/customerPortalTextOverrides.ts","../src/components/customerPortal/customerPortalTheme.ts","../src/components/customerPortal/CustomerPortalProvider.tsx","../src/components/paywall/PaywallContainer.tsx","../src/components/customerPortal/common/StyledButton.tsx","../src/assets/edit-icon.svg","../src/components/customerPortal/common/SectionHeader.ts","../src/components/customerPortal/common/SectionTitle.tsx","../src/components/customerPortal/types.ts","../src/components/customerPortal/subscriptionOverview/SubscriptionsOverviewHeader.tsx","../src/components/customerPortal/subscriptionOverview/tabs/AddonsList.tsx","../src/components/customerPortal/subscriptionOverview/tabs/Promotions.tsx","../src/components/customerPortal/subscriptionOverview/tabs/SubscriptionTabs.style.tsx","../src/components/common/iconColor.ts","../src/assets/addons.svg","../src/assets/billing-info-customer.svg","../src/assets/contact-support.svg","../src/assets/credit-card.svg","../src/assets/dollar-coin.svg","../src/assets/promotions.svg","../src/assets/restore.svg","../src/assets/schedule-box.svg","../src/assets/schedule.svg","../src/assets/subscription-renews-icon.svg","../src/assets/trash.svg","../src/assets/payment-method.svg","../src/assets/outlined-circle.svg","../src/assets/outlined-checked-circle.svg","../src/assets/outlined-checked-circle-disabled.svg","../src/assets/arrow-forward.svg","../src/assets/close.svg","../src/assets/check.svg","../src/assets/pay-as-you-go-charge.svg","../src/assets/coupon.svg","../src/components/common/Icon.tsx","../src/components/customerPortal/subscriptionOverview/tabs/SubscriptionTabs.tsx","../src/components/customerPortal/subscriptionOverview/SubscriptionOverviewLoader.tsx","../src/components/customerPortal/subscriptionOverview/subscriptionScheduledUpdates/SubscriptionScheduledUpdateRow.tsx","../src/components/customerPortal/subscriptionOverview/subscriptionScheduledUpdates/SubscriptionScheduledUpdatesAlert.tsx","../src/components/customerPortal/common/SectionContainer.tsx","../src/components/customerPortal/subscriptionOverview/upcomingBilling/NextEstimatedBill.tsx","../src/components/customerPortal/subscriptionOverview/upcomingBilling/NoUpcomingBilling.tsx","../src/components/customerPortal/subscriptionOverview/ContactCustomerSupport.tsx","../src/components/customerPortal/subscriptionOverview/upcomingBilling/UpcomingBilling.tsx","../src/assets/sand-clock.svg","../src/components/common/InformationTooltip.tsx","../src/components/common/LongText.tsx","../src/components/customerPortal/subscriptionOverview/subscriptionView/TrialPanel.tsx","../src/components/customerPortal/subscriptionOverview/subscriptionView/SubscriptionView.tsx","../src/components/customerPortal/usage/featureUsage/FeatureUsage.helper.ts","../src/components/customerPortal/usage/featureUsage/FeatureUsageProgressBar.tsx","../src/components/customerPortal/usage/featureUsage/EntitlementCTAButton.tsx","../src/components/customerPortal/subscriptionOverview/charges/ChargeItem.tsx","../src/components/customerPortal/subscriptionOverview/charges/ChargeList.tsx","../src/components/customerPortal/subscriptionOverview/SubscriptionsOverview.tsx","../src/components/customerPortal/CustomerPortalHeader.tsx","../src/components/customerPortal/common/ExternalLinkButton.tsx","../src/components/customerPortal/billing/InformationGrid.tsx","../src/components/customerPortal/common/SkeletonButton.tsx","../src/components/customerPortal/billing/PaymentDetailsSection.tsx","../src/components/customerPortal/paywall/CustomerPortalPaywall.style.ts","../src/components/customerPortal/paywall/CustomerPortalPaywall.tsx","../src/components/customerPortal/CustomerPortal.style.ts","../src/components/utils/getFeatureName.ts","../src/components/customerPortal/usage/featureUsage/FeatureUsage.style.ts","../src/components/customerPortal/usage/featureUsage/FeatureUsage.tsx","../src/components/customerPortal/usage/CustomerUsageData.style.tsx","../src/components/customerPortal/usage/CustomerUsageData.tsx","../src/components/customerPortal/CustomerPortalContainer.tsx","../src/components/customerPortal/CustomerPortal.tsx","../src/components/customerPortal/billing/InvoicesSection.tsx","../src/components/checkout/steps/addons/addon.utils.ts","../src/components/checkout/hooks/useAddonsStepModel.ts","../src/components/checkout/hooks/useCheckoutModel.ts","../src/components/checkout/hooks/useLoadCheckout.ts","../src/components/utils/priceUtils.ts","../src/components/checkout/hooks/usePlanStepModel.ts","../src/components/checkout/hooks/useProgressBarModel.ts","../src/components/checkout/hooks/useSubscriptionModel.ts","../src/components/checkout/hooks/usePreviewSubscription.ts","../src/components/checkout/hooks/usePaymentStepModel.ts","../src/components/checkout/configurations/textOverrides.ts","../src/components/checkout/configurations/theme.ts","../src/components/checkout/CheckoutProvider.tsx","../src/components/checkout/CheckoutContainer.style.ts","../src/components/checkout/progressBar/CheckoutProgressBar.style.ts","../src/components/checkout/progressBar/CheckoutProgressBar.tsx","../src/components/hooks/useChargeSort.ts","../src/components/checkout/hooks/useCouponModel.ts","../src/assets/plus-icon.svg","../src/components/checkout/promotionCode/AddPromotionCodeButton.tsx","../src/components/checkout/promotionCode/AddPromotionCode.tsx","../src/components/checkout/promotionCode/AppliedPromotionCode.tsx","../src/components/checkout/promotionCode/PromotionCodeSection.tsx","../src/components/checkout/steps/payment/stripe/StripePaymentForm.tsx","../src/components/checkout/steps/payment/stripe/useStripeIntegration.ts","../src/components/checkout/hooks/useSubscriptionState.ts","../src/components/checkout/steps/payment/stripe/stripe.utils.ts","../src/components/checkout/summary/CheckoutSuccess.tsx","../src/components/checkout/steps/payment/stripe/useSubmit.ts","../src/components/checkout/summary/components/WithSkeleton.tsx","../src/components/checkout/summary/components/CheckoutCaptions.tsx","../src/components/checkout/summary/components/LineItems.tsx","../src/components/checkout/summary/CheckoutSummary.tsx","../src/components/checkout/summary/CheckoutSummarySkeleton.tsx","../src/components/checkout/steps/addons/CheckoutAddonsStep.style.tsx","../src/components/checkout/steps/addons/CheckoutAddonsStep.tsx","../src/components/checkout/steps/payment/PaymentMethods.style.ts","../src/components/checkout/steps/payment/PaymentMethods.tsx","../src/components/checkout/steps/payment/PaymentStep.tsx","../src/components/checkout/components/ChangePlanButton.tsx","../src/components/checkout/planHeader/PlanHeader.tsx","../src/components/checkout/formatting.ts","../src/components/checkout/steps/plan/BillingPeriodPicker.style.tsx","../src/components/checkout/steps/plan/BillingPeriodPicker.tsx","../src/components/checkout/steps/plan/CheckoutChargeList.tsx","../src/components/checkout/steps/plan/CheckoutPlanStep.style.tsx","../src/components/checkout/steps/plan/CheckoutPlanStep.tsx","../src/assets/arrow-right.svg","../src/components/checkout/components/StyledArrow.tsx","../src/components/checkout/components/DowngradeToFreeContainer.tsx","../src/components/checkout/CheckoutContainer.tsx","../src/components/checkout/Checkout.tsx","../src/components/hooks/useWaitForCheckoutCompleted.ts"],"sourcesContent":["<svg width=\"15\" height=\"11\" viewBox=\"0 0 15 11\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<path d=\"M5.59 7.9899L2.125 4.5249C1.73524 4.13514 1.10365 4.13402 0.712509 4.52241V4.52241C0.319409 4.91274 0.318286 5.54819 0.710005 5.9399L5.59 10.8199L14.2948 2.11513C14.6843 1.72565 14.6843 1.09417 14.2948 0.704691V0.704691C13.9055 0.315381 13.2743 0.315184 12.8848 0.70425L5.59 7.9899Z\" fill=\"#B2BBD3\"/>\n</svg>\n","export function calculateUnitQuantityText(\n minUnitQuantity?: number | null,\n maxUnitQuantity?: number | null,\n unitsPlural?: string | null,\n) {\n const unitsText = unitsPlural ? ` ${unitsPlural}` : '';\n\n // copy for only maxunit\n if ((!minUnitQuantity || minUnitQuantity === 1) && maxUnitQuantity) {\n return `Up to ${maxUnitQuantity}${unitsText}`;\n }\n\n // both limits\n if (minUnitQuantity && minUnitQuantity > 1 && maxUnitQuantity) {\n return `${minUnitQuantity}-${maxUnitQuantity}${unitsText}`;\n }\n\n if (minUnitQuantity && minUnitQuantity > 1) {\n return `Minimum ${minUnitQuantity}${unitsText}`;\n }\n\n return '';\n}\n","import React, { CSSProperties, forwardRef } from 'react';\nimport styled from '@emotion/styled/macro';\nimport { FontWeight as StyledFontWeight, Text, TypeProps } from 'styled-typography';\nimport { Theme, useTheme } from '@emotion/react';\nimport { FontWeight } from '../../theme/types';\n\ntype Colors =\n | 'primary'\n | 'primary.main'\n | 'primary.main.light'\n | 'secondary'\n | 'disabled'\n | 'white'\n | 'warning'\n | 'error';\n\nexport type TypographyProps = {\n children: React.ReactNode;\n variant?: 'h1' | 'h3' | 'h6' | 'body1' | 'caption';\n style?: CSSProperties | undefined;\n color?: Colors;\n // This is being used when passing color from the theming which\n // can be any color and not from the closed list of colors above\n overrideColor?: string;\n className?: string;\n bold?: boolean;\n span?: boolean;\n as?: 'div' | 'p' | 'span';\n} & Omit<TypeProps, 'color' | 'level'>;\n\nfunction getColor(theme: Theme, $color: Colors) {\n switch ($color) {\n case 'white':\n return 'white';\n case 'primary.main':\n return theme.stigg.palette.primary;\n case 'primary.main.light':\n return theme.stigg.palette.primaryLight;\n case 'warning':\n return theme.stigg.palette.warning;\n case 'error':\n return theme.stigg.palette.error;\n default:\n return theme.stigg.palette.text[$color];\n }\n}\n\nconst StyledText = styled(Text)<{ $span?: boolean }>`\n margin: 0;\n ${({ $span }) => $span && `display: inline`};\n`;\n\nfunction getLevel(variant: TypographyProps['variant']) {\n switch (variant) {\n case 'h1':\n return 1;\n case 'h3':\n return 2;\n case 'h6':\n return 3;\n case 'body1':\n return 4;\n case 'caption':\n return 5;\n default:\n return 3;\n }\n}\n\nfunction mapFontWeight(fontWeight: FontWeight) {\n switch (fontWeight) {\n case 'bold':\n return StyledFontWeight.Bold;\n case 'normal':\n return StyledFontWeight.Normal;\n default:\n return StyledFontWeight.Normal;\n }\n}\n\nfunction getFontWeight(theme: Theme, variant: TypographyProps['variant']) {\n const { typography } = theme.stigg;\n switch (variant) {\n case 'h1':\n return mapFontWeight(typography.h1.fontWeight);\n case 'h3':\n return mapFontWeight(typography.h2.fontWeight);\n case 'h6':\n return mapFontWeight(typography.h3.fontWeight);\n case 'body1':\n return mapFontWeight(typography.body.fontWeight);\n case 'caption':\n return mapFontWeight(typography.caption.fontWeight);\n default:\n return StyledFontWeight.Normal;\n }\n}\n\nexport const Typography = forwardRef((props: TypographyProps, ref) => {\n const {\n children,\n span,\n style,\n fontWeight,\n variant = 'body1',\n color = 'primary',\n overrideColor,\n bold,\n as = 'p',\n ...rest\n } = props;\n const theme = useTheme();\n const level = getLevel(variant);\n const levelClassName = `typography-level-${level}`;\n const className = props.className ? `${props.className} ${levelClassName}` : levelClassName;\n\n return (\n <StyledText\n as={as}\n ref={ref}\n {...rest}\n className={className}\n style={style}\n level={level}\n color={overrideColor || getColor(theme, color)}\n fontWeight={fontWeight ?? (bold ? StyledFontWeight.Bold : getFontWeight(theme, variant))}\n $span={span}>\n {children}\n </StyledText>\n );\n});\n","import React from 'react';\nimport styled from '@emotion/styled/macro';\nimport { EntitlementResetPeriod } from '@stigg/js-client-sdk';\nimport CheckUrl from '../../assets/check-stigg.svg';\nimport { calculateUnitQuantityText } from './utils/calculateUnitQuantityText';\nimport { Typography } from '../common/Typography';\n\nconst EntitlementName = styled(Typography)`\n margin: 0;\n`;\n\nconst EntitlementRowContainer = styled.div`\n display: flex;\n align-items: baseline;\n`;\n\nconst EntitlementIconContainer = styled.div`\n display: flex;\n align-items: center;\n margin-right: 16px;\n height: ${({ theme }) => theme.stigg.typography.h3.fontSize};\n flex-shrink: 0;\n`;\n\nconst EntitlementCheckIcon = styled(CheckUrl)`\n flex-shrink: 0;\n * {\n fill: ${({ theme }) => theme.stigg.palette.text.disabled};\n }\n`;\n\nfunction formatUsageNumber(usageLimit: number) {\n return usageLimit.toLocaleString('en-US', {\n maximumFractionDigits: 0,\n });\n}\n\ntype EntitlementRowProps = {\n hasUnlimitedUsage?: boolean | null;\n isCustom?: boolean | null;\n usageLimit?: number | null;\n minUnitQuantity?: number | null;\n maxUnitQuantity?: number | null;\n resetPeriod?: EntitlementResetPeriod | null;\n displayNameOverride?: string | null;\n feature?: {\n units?: string | null | undefined;\n unitsPlural?: string | null | undefined;\n unitQuantity?: number | null;\n displayName: string;\n } | null;\n};\n\nfunction getResetPeriodText(resetPeriod?: EntitlementResetPeriod) {\n if (!resetPeriod) {\n return '';\n }\n\n switch (resetPeriod) {\n case EntitlementResetPeriod.Day: {\n return 'per day';\n }\n case EntitlementResetPeriod.Hour: {\n return 'per hour';\n }\n case EntitlementResetPeriod.Week: {\n return 'per week';\n }\n case EntitlementResetPeriod.Month: {\n return 'per month';\n }\n default: {\n return '';\n }\n }\n}\n\nfunction getEntitlementDisplay({\n hasUnlimitedUsage,\n feature,\n resetPeriod,\n usageLimit,\n minUnitQuantity,\n maxUnitQuantity,\n isCustom,\n}: EntitlementRowProps) {\n const unitBasedEntitlement = minUnitQuantity || maxUnitQuantity;\n const resetPeriodSuffix = `${resetPeriod && usageLimit ? `${getResetPeriodText(resetPeriod)}` : ''}`;\n\n if (hasUnlimitedUsage) {\n return `Unlimited ${feature?.unitsPlural}`;\n }\n\n if (isCustom) {\n return `Custom ${feature?.unitsPlural}`;\n }\n\n if (usageLimit) {\n const featureUnits = usageLimit === 1 ? feature?.units : feature?.unitsPlural;\n return `${formatUsageNumber(usageLimit)} ${featureUnits} ${resetPeriodSuffix}`;\n }\n\n if (unitBasedEntitlement) {\n return calculateUnitQuantityText(minUnitQuantity, maxUnitQuantity, feature?.unitsPlural);\n }\n\n return feature?.displayName;\n}\n\nexport function EntitlementRow(props: EntitlementRowProps) {\n const { displayNameOverride, ...restProps } = props;\n const displayName = getEntitlementDisplay(restProps);\n\n return (\n <EntitlementRowContainer className=\"stigg-entitlement-row-container\">\n <EntitlementIconContainer>\n <EntitlementCheckIcon className=\"stigg-entitlement-row-icon\" />\n </EntitlementIconContainer>\n <EntitlementName className=\"stigg-entitlement-name\" variant=\"h6\" color=\"secondary\">\n {displayNameOverride || displayName}\n </EntitlementName>\n </EntitlementRowContainer>\n );\n}\n","import React from 'react';\nimport styled from '@emotion/styled/macro';\nimport { BillingPeriod, WidgetType } from '@stigg/js-client-sdk';\nimport { EntitlementRow } from './EntitlementRow';\nimport { PaywallPlan } from './types';\nimport { PaywallLocalization } from './paywallTextOverrides';\nimport { Typography } from '../common/Typography';\n\nconst PlanEntitlementsContainer = styled.div`\n display: flex;\n flex-direction: column;\n gap: 16px;\n`;\n\nfunction getTitle(plan: PaywallPlan, paywallLocale: PaywallLocalization) {\n if (paywallLocale.entitlementsTitle) {\n return paywallLocale.entitlementsTitle(plan);\n }\n let title = `${plan.displayName} includes`;\n if (plan.basePlan) {\n title = `Everything in ${plan.basePlan.displayName}, plus:`;\n }\n\n return title;\n}\n\nexport function PlanEntitlements({\n plan,\n billingPeriod,\n paywallLocale,\n}: {\n plan: PaywallPlan;\n billingPeriod: BillingPeriod;\n paywallLocale: PaywallLocalization;\n}) {\n const prices = plan.pricePoints?.filter((price) => price.billingPeriod === billingPeriod);\n const unitBasedEntitlements = prices?.map((price) => {\n const shouldRenderUnitBasedEntitlement =\n (price?.minUnitQuantity && price?.minUnitQuantity > 1) || price?.maxUnitQuantity;\n\n if (!shouldRenderUnitBasedEntitlement) {\n return null;\n }\n\n return (\n <EntitlementRow\n key={`priceUnitEntitlement-${price?.feature?.displayName}`}\n feature={price?.feature}\n minUnitQuantity={price?.minUnitQuantity}\n maxUnitQuantity={price?.maxUnitQuantity}\n />\n );\n });\n\n return (\n <PlanEntitlementsContainer className=\"stigg-plan-entitlements-container\">\n <Typography className=\"stigg-plan-entitlements-title\" color=\"secondary\" variant=\"h6\" bold>\n {getTitle(plan, paywallLocale)}\n </Typography>\n {unitBasedEntitlements}\n {plan.entitlements\n .filter((entitlement) => !(entitlement.hiddenFromWidgets || []).includes(WidgetType.Paywall))\n .map((entitlement) => (\n <EntitlementRow\n key={entitlement.feature?.id}\n displayNameOverride={entitlement.displayNameOverride}\n feature={entitlement.feature}\n resetPeriod={entitlement.resetPeriod}\n hasUnlimitedUsage={entitlement.hasUnlimitedUsage}\n usageLimit={entitlement.usageLimit}\n isCustom={entitlement.isCustom}\n />\n ))}\n </PlanEntitlementsContainer>\n );\n}\n","import {\n BillingPeriod,\n Customer,\n Plan,\n Subscription,\n CustomerPortalSubscriptionScheduledUpdateDataFragment,\n PaywallCurrency,\n PaywallCalculatedPricePoint,\n BillableFeature,\n} from '@stigg/js-client-sdk';\nimport { CustomizedTheme } from '../../theme/Theme';\n\nexport type PaywallData = {\n plans: PaywallPlan[] | null;\n customer: Customer | null;\n currentSubscription: Subscription | null;\n isCustomerOnTrial: boolean;\n isLoading: boolean;\n selectedBillingPeriod: BillingPeriod;\n setSelectedBillingPeriod: (billingPeriod: BillingPeriod) => void;\n availableBillingPeriods: BillingPeriod[];\n locale: string;\n configuration?: CustomizedTheme;\n};\n\nexport enum SubscribeIntentionType {\n START_TRIAL = 'START_TRIAL',\n UPGRADE_TRIAL_TO_PAID = 'UPGRADE_TRIAL_TO_PAID',\n REQUEST_CUSTOM_PLAN_ACCESS = 'REQUEST_CUSTOM_PLAN_ACCESS',\n CHANGE_BILLING_PERIOD = 'CHANGE_BILLING_PERIOD',\n CHANGE_UNIT_QUANTITY = 'CHANGE_UNIT_QUANTITY',\n UPGRADE_PLAN = 'UPGRADE_PLAN',\n DOWNGRADE_PLAN = 'DOWNGRADE_PLAN',\n CANCEL_SCHEDULED_UPDATES = 'CANCEL_SCHEDULED_UPDATES',\n}\n\nexport type PaywallPlan = Plan & {\n isLowerThanCurrentPlan?: boolean;\n isTriable: boolean;\n isCurrentCustomerPlan: boolean;\n currentCustomerPlanBillingPeriod?: BillingPeriod;\n trialDaysLeft?: number;\n isNextPlan?: (billingPeriod: BillingPeriod) => boolean;\n scheduledUpdate?: CustomerPortalSubscriptionScheduledUpdateDataFragment;\n paywallCurrency?: PaywallCurrency;\n paywallCalculatedPricePoints?: PaywallCalculatedPricePoint[];\n};\n\nexport type OnPlanSelectedCallbackFn = ({\n plan,\n customer,\n subscription,\n intentionType,\n selectedBillingPeriod,\n billableFeatures,\n}: {\n plan: Plan;\n customer: Customer | null;\n subscription: Subscription | null;\n intentionType: SubscribeIntentionType;\n selectedBillingPeriod: BillingPeriod;\n billableFeatures?: BillableFeature[];\n}) => void | Promise<void>;\n\nexport type ShouldHidePlanFn = ({ plan }: { plan: PaywallPlan }) => boolean | Promise<boolean>;\n\nexport type SelectDefaultTierIndexFn = ({ plan }: { plan: PaywallPlan }) => number;\n","import Color from 'color';\nimport merge from 'lodash/merge';\nimport { HorizontalAlignment, StiggTheme } from './types';\nimport { CustomizedTheme } from './Theme';\n\nexport const flexLayoutMapper = (horizontalAlignment: HorizontalAlignment) => {\n return {\n left: 'flex-start',\n center: 'center',\n right: 'flex-end',\n }[horizontalAlignment];\n};\n\nexport const getResolvedTheme = (customizedTheme?: CustomizedTheme): StiggTheme => {\n const primaryColor = Color(customizedTheme?.palette?.primary || '#327EEE');\n const textColor = Color(customizedTheme?.palette?.text?.primary || '#001E6C');\n const successColor = Color('#4CAF50');\n const errorColor = Color('#f44336');\n\n const baseTheme: StiggTheme = {\n palette: {\n primary: primaryColor.hex(),\n primaryDark: primaryColor.darken(0.3).hex(),\n primaryLight: primaryColor.alpha(0.5).toString(),\n backgroundPaper: '#FFFFFF',\n backgroundHighlight: '#F5F6F9',\n backgroundSection: primaryColor.alpha(0.1).toString(),\n backgroundButton: primaryColor.alpha(0.08).toString(),\n outlinedBorder: '#C4CBDD',\n outlinedRestingBorder: primaryColor.alpha(0.5).toString(),\n outlinedHoverBackground: primaryColor.lightness(95).hex(),\n switchBorder: primaryColor.lighten(0.1).hex(),\n switchFill: primaryColor.lighten(0.5).hex(),\n switchHandle: primaryColor.hex(),\n warning: '#ed6c02',\n error: errorColor.hex(),\n errorDark: errorColor.darken(0.3).hex(),\n success: successColor.hex(),\n successDark: successColor.darken(0.3).hex(),\n white: '#FFFFFF',\n text: {\n primary: textColor.hex(),\n secondary: textColor.alpha(0.75).toString(),\n disabled: textColor.alpha(0.5).toString(),\n },\n },\n layout: {\n planMinWidth: '330px',\n planMaxWidth: '330px',\n planMargin: '20px',\n planPadding: '40px',\n ctaAlignment: 'left',\n headerAlignment: 'left',\n descriptionAlignment: 'left',\n descriptionMinHeight: '80px',\n switchBottomSpacing: '40px',\n },\n shadows: {\n light: '0px 2px 1px -1px rgba(0, 0, 0, 0.2), 0px 1px 1px rgba(0, 0, 0, 0.14), 0px 1px 3px rgba(0, 0, 0, 0.12)',\n popover:\n '0px 4px 5px -2px rgba(0, 30, 108, 0.2), 0px 7px 10px 1px rgba(0, 30, 108, 0.14), 0px 2px 16px 1px rgba(0, 30, 108, 0.12)',\n },\n border: {\n radius: '10px',\n },\n typography: {\n fontFamily: 'custom-font, DM Sans, sans-serif',\n h1: {\n fontSize: '32px',\n fontWeight: 'bold',\n },\n h2: {\n fontSize: '24px',\n fontWeight: 'normal',\n },\n h3: {\n fontSize: '16px',\n fontWeight: 'normal',\n },\n body: {\n fontSize: '14px',\n fontWeight: 'normal',\n },\n caption: {\n fontSize: '12px',\n fontWeight: 'normal',\n },\n },\n customCss: '',\n };\n\n return merge(baseTheme, customizedTheme);\n};\n","import React from 'react';\nimport moment from 'moment';\nimport isNil from 'lodash/isNil';\nimport {\n CustomerPortalSubscription,\n CustomerPortalSubscriptionScheduledUpdateDataFragment,\n SubscriptionScheduleType,\n} from '@stigg/js-client-sdk';\nimport { CustomerPortalSubscriptionPriceFragment } from '@stigg/api-client-js/src/generated/sdk';\nimport { compact, map } from 'lodash';\nimport { BillingPeriodChangeVariables, UnitAmountChangeVariables } from '../../types';\n\nconst formatDate = (date: string) => moment.utc(date).format('MMMM Do, yyyy');\n\ntype GetSubscriptionScheduleUpdateTextsProps = {\n scheduledUpdate: CustomerPortalSubscriptionScheduledUpdateDataFragment | undefined;\n subscriptionPrices?: CustomerPortalSubscriptionPriceFragment[];\n billingPeriodRange?: CustomerPortalSubscription['billingPeriodRange'];\n options?: { withDate?: boolean; postfix?: string };\n};\n\nexport function getSubscriptionScheduleUpdateTexts({\n scheduledUpdate,\n subscriptionPrices,\n billingPeriodRange,\n options = {},\n}: GetSubscriptionScheduleUpdateTextsProps) {\n if (!scheduledUpdate) {\n return {};\n }\n const { withDate, postfix = '' } = options;\n\n switch (scheduledUpdate.subscriptionScheduleType) {\n case SubscriptionScheduleType.Downgrade: {\n let shouldShowDate = withDate;\n if (isNil(shouldShowDate) && billingPeriodRange?.end) {\n shouldShowDate = !moment(scheduledUpdate.scheduledExecutionTime).isSame(billingPeriodRange?.end, 'day');\n }\n\n const line1 = (\n <>\n Your subscription will be downgraded to the <b>{scheduledUpdate.targetPackage?.displayName} plan</b>{' '}\n {shouldShowDate ? <>on {formatDate(scheduledUpdate.scheduledExecutionTime)}</> : postfix}.\n </>\n );\n const line2 = `Until then you still have access to your current plan.`;\n\n return { line1, line2 };\n }\n\n case SubscriptionScheduleType.BillingPeriod: {\n const variables = scheduledUpdate.scheduleVariables as BillingPeriodChangeVariables;\n const line1 = (\n <>\n Your billing cycle will change to <b>{variables.billingPeriod?.toLocaleLowerCase()}</b>{' '}\n {withDate ? <>on {formatDate(scheduledUpdate.scheduledExecutionTime)}</> : postfix}.\n </>\n );\n\n return { line1 };\n }\n\n case SubscriptionScheduleType.UnitAmount: {\n const variables = scheduledUpdate.scheduleVariables as UnitAmountChangeVariables;\n const feature = compact(map(subscriptionPrices, 'feature')).find(({ id }) => id === variables.featureId);\n const { featureUnits, featureUnitsPlural } = feature || {};\n const unitsText = variables.newUnitAmount === 1 ? featureUnits : featureUnitsPlural;\n\n const line1 = (\n <>\n Your subscription will be updated to <b>{variables.newUnitAmount}</b> {unitsText}{' '}\n {withDate ? <>on {formatDate(scheduledUpdate.scheduledExecutionTime)}</> : postfix}.\n </>\n );\n\n const line2 = `Until then you still have access to your current ${featureUnits} count.`;\n\n return { line1, line2 };\n }\n\n default: {\n return {};\n }\n }\n}\n","import { BillingModel, TiersMode, BillingPeriod, Price, PriceTierFragment, Subscription } from '@stigg/js-client-sdk';\nimport { PaywallPlan } from '../paywall';\nimport { SelectDefaultTierIndexFn } from '../paywall/types';\n\nexport function getPriceFeatureUnit(price: Price) {\n if (!price.feature) {\n return '';\n }\n\n return (price.feature.unitQuantity !== 1 ? price.feature.unitsPlural : price.feature.units) || '';\n}\n\nexport function getTierByQuantity(tiers: PriceTierFragment[], quantity: number) {\n if (!tiers) return undefined;\n\n const ascendingTiers = [...tiers];\n // Sort tiers by upTo value, ascending, if upTo is not set,\n // put it at the end as it represent the last infinity tier\n ascendingTiers.sort((a, b) => (!a.upTo ? 1 : !b.upTo ? -1 : a.upTo - b.upTo));\n\n for (const tier of ascendingTiers) {\n if (tier.upTo && quantity <= tier.upTo) {\n return tier;\n }\n }\n\n return ascendingTiers[ascendingTiers.length - 1];\n}\n\nexport function calculateTierPrice(\n price: Price,\n currentTier: PriceTierFragment,\n selectedBillingPeriod: BillingPeriod,\n shouldShowMonthlyPriceAmount: boolean,\n perUnitQuantity?: number,\n): number {\n const unitPrice =\n selectedBillingPeriod === BillingPeriod.Annually && shouldShowMonthlyPriceAmount\n ? currentTier.unitPrice.amount / 12\n : currentTier.unitPrice.amount;\n switch (price.tiersMode) {\n case TiersMode.Volume: {\n return unitPrice * (currentTier.upTo || 1);\n }\n case TiersMode.VolumePerUnit: {\n return unitPrice * (perUnitQuantity || 1);\n }\n default:\n return 0;\n }\n}\n\nexport function getSelectedTierQuantityBeFeature(\n plan: PaywallPlan,\n billingPeriod: BillingPeriod,\n currentSubscription: Subscription | null,\n) {\n const result: Record<string, number> = {};\n const planTierPrices = plan.pricePoints.filter(\n (price) => price.billingPeriod === billingPeriod && price.isTieredPrice,\n );\n if (planTierPrices.length === 1) {\n const [price] = planTierPrices;\n const featureId = price?.feature!.featureId;\n if (currentSubscription && currentSubscription.plan.id === plan.id) {\n const tieredPrice = currentSubscription?.prices.find(\n (subscriptionPrice) =>\n subscriptionPrice.pricingModel === BillingModel.PerUnit &&\n subscriptionPrice.tiersMode &&\n subscriptionPrice.feature?.featureId === featureId,\n );\n if (tieredPrice) {\n result[featureId] = tieredPrice.feature?.unitQuantity || 1;\n }\n }\n }\n\n return result;\n}\n\nexport function getSelectedTier(\n plan: PaywallPlan,\n billingPeriod: BillingPeriod,\n currentSubscription: Subscription | null,\n selectedTierByFeature: Record<string, PriceTierFragment>,\n selectDefaultTierIndex?: SelectDefaultTierIndexFn,\n): Record<string, PriceTierFragment> {\n const planTierPrices = plan.pricePoints.filter(\n (price) => price.billingPeriod === billingPeriod && price.isTieredPrice,\n );\n\n if (planTierPrices.length === 1) {\n const [price] = planTierPrices;\n const { featureId } = price.feature!;\n const selectedDefaultTierIndex = selectDefaultTierIndex ? selectDefaultTierIndex({ plan }) : 0;\n let currentTier = price.tiers![selectedDefaultTierIndex];\n\n if (selectedTierByFeature[featureId]) {\n currentTier = price.tiers?.find((tier) => tier.upTo === selectedTierByFeature[featureId].upTo) || currentTier;\n } else if (currentSubscription && currentSubscription.plan.id === plan.id) {\n const tieredPrice = currentSubscription.prices.find(\n (subscriptionPrice) =>\n subscriptionPrice.pricingModel === BillingModel.PerUnit &&\n subscriptionPrice.tiersMode &&\n subscriptionPrice.feature?.featureId === featureId,\n );\n\n if (tieredPrice) {\n currentTier = getTierByQuantity(price.tiers!, tieredPrice.feature!.unitQuantity || 1)!;\n }\n }\n\n const result: Record<string, PriceTierFragment> = {};\n result[featureId] = currentTier;\n\n return result;\n }\n\n return {};\n}\n\nexport enum PriceTierComparison {\n Lower = -1,\n Equal = 0,\n Higher = 1,\n}\n\nexport function compareSelectedTierToCurrentTier(\n selectedTierByFeature: Record<string, PriceTierFragment>,\n perUnitQuantityByFeature: Record<string, number>,\n currentSubscription: Subscription | null,\n): PriceTierComparison {\n if (!currentSubscription || !selectedTierByFeature) {\n return PriceTierComparison.Equal;\n }\n\n const currentTierPrice = currentSubscription.prices.find(\n (price) => price.pricingModel === BillingModel.PerUnit && price.tiersMode,\n );\n if (!currentTierPrice) {\n return PriceTierComparison.Equal;\n }\n\n const { featureId, unitQuantity } = currentTierPrice.feature!;\n const { tiersMode } = currentTierPrice;\n\n if (!unitQuantity) {\n return PriceTierComparison.Equal;\n }\n\n const selectedTier = selectedTierByFeature[featureId];\n const selectedQuantity = perUnitQuantityByFeature[featureId];\n if (!selectedTier) {\n return PriceTierComparison.Equal;\n }\n\n if (tiersMode === TiersMode.Volume) {\n if (selectedTier.upTo && selectedTier.upTo < unitQuantity) {\n return PriceTierComparison.Lower;\n }\n\n if (selectedTier.upTo && selectedTier.upTo > unitQuantity) {\n return PriceTierComparison.Higher;\n }\n } else if (tiersMode === TiersMode.VolumePerUnit) {\n if (selectedQuantity && selectedQuantity < unitQuantity) {\n return PriceTierComparison.Lower;\n }\n\n if (selectedQuantity && selectedQuantity > unitQuantity) {\n return PriceTierComparison.Higher;\n }\n }\n\n return PriceTierComparison.Equal;\n}\n","import React, { useState } from 'react';\nimport { BillingPeriod, Customer, PriceTierFragment, PricingType, Subscription } from '@stigg/js-client-sdk';\nimport { isFunction } from 'lodash';\nimport ClipLoader from 'react-spinners/ClipLoader';\nimport styled from '@emotion/styled/macro';\nimport { css, useTheme } from '@emotion/react';\nimport { PaywallPlan, SubscribeIntentionType } from './types';\nimport { PaywallLocalization } from './paywallTextOverrides';\nimport { flexLayoutMapper } from '../../theme/getResolvedTheme';\nimport { Typography } from '../common/Typography';\nimport { getSubscriptionScheduleUpdateTexts } from '../utils/getSubscriptionScheduleUpdateTexts';\nimport { compareSelectedTierToCurrentTier, PriceTierComparison } from '../utils/priceTierUtils';\n\nconst LoadingIndicator = styled(ClipLoader)`\n margin-left: 10px;\n`;\n\nconst OfferingButton = styled.button<{ $disabled?: boolean }>`\n cursor: ${({ $disabled }) => ($disabled ? 'default' : 'pointer')};\n padding: 8px 12px;\n background-color: ${({ theme }) => theme.stigg.palette.backgroundButton};\n border: ${({ theme }) => `1px solid ${theme.stigg.palette.outlinedRestingBorder}`};\n border-radius: 10px;\n display: flex;\n align-items: center;\n justify-content: center;\n min-height: 42px;\n min-width: 120px;\n\n ${({ $disabled }) =>\n $disabled &&\n css`\n opacity: 0.5;\n `}\n\n &:hover {\n background-color: ${({ theme, $disabled }) =>\n $disabled ? theme.stigg.palette.backgroundButton : theme.stigg.palette.outlinedHoverBackground};\n }\n`;\n\nconst ButtonText = styled(Typography)`\n margin: 0;\n font-size: 15px;\n`;\n\nconst ScheduledUpdateText = styled(Typography)`\n min-height: 87px;\n`;\n\nconst CancelScheduledUpdateButton = styled.button<{ $disabled?: boolean }>`\n background: none;\n border: none;\n padding: 0;\n color: ${({ theme }) => theme.stigg.palette.text.secondary};\n\n text-decoration: underline;\n cursor: pointer;\n`;\n\nconst TrialDaysLeft = styled(Typography)`\n margin-top: 8px;\n margin-bottom: 17px;\n min-height: 20px;\n`;\n\nconst ButtonLayout = styled.div`\n display: flex;\n flex-direction: column;\n margin-top: 4px;\n align-self: ${({ theme }) => flexLayoutMapper(theme.stigg.layout.ctaAlignment)};\n width: 100%;\n`;\n\ntype PlanOfferingButtonProps = {\n isNextPlan?: boolean;\n customer: Customer | null;\n plan: PaywallPlan;\n currentSubscription: Subscription | null;\n billingPeriod: BillingPeriod;\n isCustomerOnTrial: boolean;\n paywallLocale: PaywallLocalization;\n onPlanSelected: (intentionType: SubscribeIntentionType) => void | Promise<void>;\n withTrialLeftRow: boolean;\n selectedTierByFeature: Record<string, PriceTierFragment>;\n perUnitQuantityByFeature: Record<string, number>;\n};\n\nexport function PlanOfferingButton({\n isNextPlan,\n customer,\n plan,\n billingPeriod,\n isCustomerOnTrial,\n onPlanSelected,\n paywallLocale,\n withTrialLeftRow,\n currentSubscription,\n selectedTierByFeature,\n perUnitQuantityByFeature,\n}: PlanOfferingButtonProps) {\n const theme = useTheme();\n const [isLoading, setIsLoading] = useState(false);\n const {\n currentPlan,\n custom,\n downgrade,\n startTrial,\n upgrade,\n startNew,\n switchToBillingPeriod,\n cancelScheduledUpdate,\n } = paywallLocale.planCTAButton;\n const resolvedDowngrade = isFunction(downgrade) ? downgrade(plan) : downgrade;\n const resolvedUpgrade = isFunction(upgrade) ? upgrade(plan) : upgrade;\n\n const buttonProps: {\n title: string;\n disabled: boolean;\n intentionType: SubscribeIntentionType;\n } = {\n title: customer ? (plan.isLowerThanCurrentPlan ? resolvedDowngrade : resolvedUpgrade) : startNew,\n disabled: false,\n intentionType: plan.isLowerThanCurrentPlan\n ? SubscribeIntentionType.DOWNGRADE_PLAN\n : isCustomerOnTrial\n ? SubscribeIntentionType.UPGRADE_TRIAL_TO_PAID\n : SubscribeIntentionType.UPGRADE_PLAN,\n };\n const isCustomPrice = plan.pricingType === PricingType.Custom;\n\n const { line1: scheduledUpdateText } = getSubscriptionScheduleUpdateTexts({\n scheduledUpdate: plan.scheduledUpdate,\n options: { withDate: true },\n });\n\n if (plan.isTriable && !plan.isCurrentCustomerPlan && !isCustomerOnTrial) {\n buttonProps.title = startTrial(plan);\n buttonProps.intentionType = SubscribeIntentionType.START_TRIAL;\n } else if (plan.isCurrentCustomerPlan && !isCustomerOnTrial) {\n const isSameBillingPeriod = billingPeriod === plan.currentCustomerPlanBillingPeriod;\n\n if (\n isSameBillingPeriod ||\n (plan.pricingType && [PricingType.Free, PricingType.Custom].includes(plan.pricingType))\n ) {\n const planComparison = compareSelectedTierToCurrentTier(\n selectedTierByFeature,\n perUnitQuantityByFeature,\n currentSubscription,\n );\n switch (planComparison) {\n case PriceTierComparison.Lower:\n buttonProps.intentionType = SubscribeIntentionType.CHANGE_UNIT_QUANTITY;\n buttonProps.title = resolvedDowngrade;\n break;\n case PriceTierComparison.Higher:\n buttonProps.intentionType = SubscribeIntentionType.CHANGE_UNIT_QUANTITY;\n buttonProps.title = resolvedUpgrade;\n break;\n\n default:\n buttonProps.title = currentPlan;\n buttonProps.disabled = true;\n break;\n }\n } else {\n buttonProps.title = switchToBillingPeriod(billingPeriod);\n buttonProps.intentionType = SubscribeIntentionType.CHANGE_BILLING_PERIOD;\n }\n } else if (isCustomPrice) {\n buttonProps.title = typeof custom === 'function' ? custom({ plan, selectedBillingPeriod: billingPeriod }) : custom;\n buttonProps.intentionType = SubscribeIntentionType.REQUEST_CUSTOM_PLAN_ACCESS;\n }\n\n if (isNextPlan && plan.scheduledUpdate) {\n buttonProps.disabled = false;\n buttonProps.title = cancelScheduledUpdate;\n buttonProps.intentionType = SubscribeIntentionType.CANCEL_SCHEDULED_UPDATES;\n }\n\n const isDisabled = isLoading || buttonProps.disabled;\n return (\n <>\n <ButtonLayout className=\"stigg-paywall-plan-button-layout\">\n {isNextPlan && scheduledUpdateText ? (\n <ScheduledUpdateText color=\"secondary\" variant=\"body1\" className=\"stigg-paywall-schedule-update-text\">\n {scheduledUpdateText}{' '}\n <CancelScheduledUpdateButton\n color=\"secondary\"\n onClick={() => {\n setIsLoading(true);\n Promise.resolve(onPlanSelected(buttonProps.intentionType)).finally(() => setIsLoading(false));\n }}>\n {buttonProps.title}\n </CancelScheduledUpdateButton>\n </ScheduledUpdateText>\n ) : (\n <>\n <OfferingButton\n className=\"stigg-paywall-plan-button\"\n data-testid={`paywall-card-cta-${plan.displayName}`}\n disabled={isDisabled}\n $disabled={isDisabled}\n onClick={() => {\n setIsLoading(true);\n Promise.resolve(onPlanSelected(buttonProps.intentionType)).finally(() => setIsLoading(false));\n }}>\n <ButtonText className=\"stigg-paywall-plan-button-text\" variant=\"h6\" color=\"primary.main\">\n {buttonProps.title}\n </ButtonText>\n {isLoading && <LoadingIndicator color={theme.stigg.palette.text.disabled} loading size={16} />}\n </OfferingButton>\n\n {!withTrialLeftRow ? (\n <div style={{ height: '20px' }} />\n ) : (\n <TrialDaysLeft className=\"stigg-trial-days-left-text\" variant=\"h6\" color=\"secondary\">\n {plan.isCurrentCustomerPlan && plan.trialDaysLeft && (\n <>\n <b>{plan.trialDaysLeft} days</b> left on your free trial\n </>\n )}\n </TrialDaysLeft>\n )}\n </>\n )}\n </ButtonLayout>\n </>\n );\n}\n","<svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M6.95392 1.03353C7.1196 1.56038 6.82682 2.12178 6.29997 2.28746C5.79034 2.44773 5.30237 2.68036 4.85175 2.98146C3.76168 3.70982 2.95789 4.79361 2.57732 6.04817C2.19675 7.30273 2.26296 8.65044 2.76466 9.86166C3.26637 11.0729 4.17252 12.0727 5.32873 12.6907C6.48494 13.3087 7.81967 13.5067 9.10549 13.2509C10.3913 12.9951 11.5487 12.3014 12.3804 11.288C13.2121 10.2746 13.6666 9.00413 13.6666 7.69312C13.6666 7.14083 14.1144 6.69312 14.6666 6.69312C15.2189 6.69312 15.6666 7.14083 15.6666 7.69312C15.6666 7.92228 15.6564 8.15052 15.6361 8.37721C15.6465 8.44937 15.6492 8.52379 15.6432 8.59952L15.6392 8.64883C15.6298 8.75932 15.6028 8.86407 15.5612 8.96057C15.3409 10.2743 14.7807 11.5158 13.9264 12.5568C12.8012 13.9279 11.2353 14.8664 9.49568 15.2125C7.75603 15.5585 5.95022 15.2906 4.38594 14.4545C2.82166 13.6184 1.59568 12.2657 0.916905 10.627C0.238131 8.98832 0.148554 7.16495 0.663439 5.4676C1.17832 3.77025 2.26581 2.30394 3.74061 1.31852C4.35023 0.911179 5.01049 0.596408 5.69999 0.379577C6.22684 0.213898 6.78824 0.506683 6.95392 1.03353ZM7.56761 1.27284C7.61434 0.722538 8.09832 0.314306 8.64863 0.361031L8.69791 0.365373C9.24791 0.415584 9.65307 0.902149 9.60286 1.45215C9.55265 2.00214 9.06608 2.4073 8.51608 2.35709L8.47942 2.35386C7.92912 2.30714 7.52089 1.82315 7.56761 1.27284ZM12.4186 2.90891C12.8384 2.55014 13.4697 2.59967 13.8284 3.01954C13.8498 3.04454 13.871 3.06967 13.892 3.09494C14.2454 3.51937 14.1878 4.14991 13.7634 4.50329C13.339 4.85667 12.7084 4.79906 12.355 4.37463C12.3395 4.35592 12.3238 4.33731 12.3079 4.31879C11.9492 3.89892 11.9987 3.26769 12.4186 2.90891ZM8.99998 5.33352C8.99998 4.78124 8.55226 4.33352 7.99998 4.33352C7.44769 4.33352 6.99998 4.78124 6.99998 5.33352V8.00019C6.99998 8.55247 7.44769 9.00019 7.99998 9.00019H10.6666C11.2189 9.00019 11.6666 8.55247 11.6666 8.00019C11.6666 7.4479 11.2189 7.00019 10.6666 7.00019H8.99998V5.33352Z\" fill=\"#7586B0\"/>\n</svg>\n","import { Currency } from '@stigg/js-client-sdk';\nimport getSymbolFromCurrency from 'currency-symbol-map';\n\nexport const currencyPriceFormatter = ({\n amount,\n currency = Currency.Usd,\n locale,\n maximumFractionDigits = 5,\n minimumFractionDigits = 0,\n}: {\n amount: number;\n currency?: Currency | string;\n locale?: string;\n maximumFractionDigits?: number;\n minimumFractionDigits?: number;\n}) => {\n const currencyString = currency.toString();\n const currencySymbol = getSymbolFromCurrency(currencyString);\n let formattedPrice = new Intl.NumberFormat(locale, {\n maximumFractionDigits,\n minimumFractionDigits,\n style: 'currency',\n currency: currencyString,\n ...(currencySymbol ? { currencyDisplay: 'code' } : {}),\n }).format(amount || 0);\n\n if (currencySymbol) {\n formattedPrice = formattedPrice.replace(currencyString, currencySymbol);\n }\n\n // remove space between currency symbol and price\n formattedPrice = formattedPrice.replace(/\\s/g, '');\n\n return formattedPrice;\n};\n","import {\n BillingModel,\n BillingPeriod,\n PaywallCalculatedPricePoint,\n Price,\n PriceTierFragment,\n} from '@stigg/js-client-sdk';\nimport { currencyPriceFormatter } from './currencyUtils';\nimport { PlanPriceText } from './getPlanPrice';\nimport { calculateTierPrice, getPriceFeatureUnit } from './priceTierUtils';\nimport { PaywallLocalization } from '../paywall';\n\ntype GetPaidPriceTextParams = {\n planPrices: Price[];\n paywallCalculatedPrice?: PaywallCalculatedPricePoint;\n selectedBillingPeriod: BillingPeriod;\n locale: string;\n shouldShowMonthlyPriceAmount: boolean;\n selectedTierByFeature: Record<string, PriceTierFragment>;\n paywallLocale: PaywallLocalization;\n perUnitQuantityByFeature?: Record<string, number>;\n};\n\nexport function getPaidPriceText({\n planPrices,\n paywallCalculatedPrice,\n selectedBillingPeriod,\n locale,\n shouldShowMonthlyPriceAmount,\n selectedTierByFeature,\n paywallLocale,\n perUnitQuantityByFeature,\n}: GetPaidPriceTextParams): PlanPriceText {\n const { amount, currency } = paywallCalculatedPrice || planPrices[0];\n const priceAmount = amount || 0;\n\n const isSinglePrice = planPrices.length === 1;\n let priceNumber =\n selectedBillingPeriod === BillingPeriod.Annually && shouldShowMonthlyPriceAmount ? priceAmount / 12 : priceAmount;\n\n let tiers;\n let tierUnits;\n const pricePeriod = paywallLocale.price.pricePeriod(\n shouldShowMonthlyPriceAmount ? BillingPeriod.Monthly : BillingPeriod.Annually,\n );\n let unit = pricePeriod;\n\n for (const price of planPrices) {\n if (price.isTieredPrice) {\n let currentTier = price.tiers![0];\n if (selectedTierByFeature[price.feature!.featureId]) {\n currentTier = selectedTierByFeature[price.feature!.featureId] || currentTier;\n\n tiers = price.tiers;\n tierUnits = getPriceFeatureUnit(price);\n }\n\n priceNumber += calculateTierPrice(\n price,\n currentTier,\n selectedBillingPeriod,\n shouldShowMonthlyPriceAmount,\n perUnitQuantityByFeature?.[price.feature!.featureId],\n );\n }\n }\n\n if (isSinglePrice) {\n const price = planPrices[0];\n const featureUnit = price.feature?.units || '';\n\n if (price.pricingModel === BillingModel.PerUnit && !price.isTieredPrice) {\n unit = shouldShowMonthlyPriceAmount ? `per ${featureUnit} ${pricePeriod}` : `per ${featureUnit} ${pricePeriod}`;\n } else if (price.pricingModel === BillingModel.UsageBased) {\n unit = `per ${featureUnit}`;\n }\n }\n\n return {\n price: currencyPriceFormatter({ amount: priceNumber, currency, locale }),\n unit,\n tiers,\n tierUnits,\n };\n}\n","import { BillingPeriod, PriceTierFragment, PricingType } from '@stigg/js-client-sdk';\nimport { getPaidPriceText } from './getPaidPriceText';\nimport { PaywallPlan, PaywallLocalization } from '../paywall';\n\nexport type PlanPriceText = {\n price: string;\n unit?: string;\n tiers?: PriceTierFragment[] | null | undefined;\n tierUnits?: string;\n};\n\nexport function getPlanPrice(\n plan: PaywallPlan,\n billingPeriod: BillingPeriod,\n paywallLocale: PaywallLocalization,\n locale: string,\n shouldShowMonthlyPriceAmount: boolean,\n selectedTierByFeature?: Record<string, PriceTierFragment>,\n perUnitQuantityByFeature?: Record<string, number>,\n): PlanPriceText {\n switch (plan.pricingType) {\n case PricingType.Free:\n if (typeof paywallLocale.price.free === 'function') {\n return paywallLocale.price.free(plan.paywallCurrency);\n }\n\n return paywallLocale.price.free;\n case PricingType.Custom:\n return {\n price:\n typeof paywallLocale.price.custom === 'function'\n ? paywallLocale.price.custom({ plan, selectedBillingPeriod: billingPeriod })\n : paywallLocale.price.custom,\n };\n case PricingType.Paid: {\n const planPrices = plan.pricePoints.filter((pricePoint) => pricePoint.billingPeriod === billingPeriod);\n const paywallCalculatedPrice = plan.paywallCalculatedPricePoints?.find(\n (pricePoint) => pricePoint.billingPeriod === billingPeriod,\n );\n\n if (!planPrices?.length && !paywallCalculatedPrice) {\n return {\n price: paywallLocale.price.priceNotSet,\n };\n }\n\n const paidParams = {\n planPrices,\n paywallCalculatedPrice,\n selectedBillingPeriod: billingPeriod,\n selectedTierByFeature: selectedTierByFeature || {},\n perUnitQuantityByFeature: perUnitQuantityByFeature || {},\n };\n\n return paywallLocale.price.paid\n ? paywallLocale.price.paid({ ...paidParams, plan })\n : getPaidPriceText({ ...paidParams, locale, shouldShowMonthlyPriceAmount, paywallLocale });\n }\n default:\n return {\n price: '',\n };\n }\n}\n","import React from 'react';\n\nimport styled from '@emotion/styled/macro';\nimport MuiButton, { ButtonProps } from '@mui/material/Button';\n\nexport type StyledButtonProps = { $success?: boolean; $error?: boolean };\n\nconst StyledButton = styled(MuiButton, { shouldForwardProp: (prop) => !prop.startsWith('$') })<StyledButtonProps>`\n border-radius: 10px;\n text-transform: none;\n\n background-color: ${({ theme, $success, $error }) => {\n if ($success) {\n return theme.stigg.palette.success;\n }\n if ($error) {\n return theme.stigg.palette.error;\n }\n return '';\n }};\n\n &:hover {\n background-color: ${({ theme, $success, $error }) => {\n if ($success) {\n return theme.stigg.palette.successDark;\n }\n if ($error) {\n return theme.stigg.palette.errorDark;\n }\n return '';\n }};\n }\n`;\n\nexport const Button = ({ variant = 'outlined', ...props }: ButtonProps & StyledButtonProps) => {\n return <StyledButton variant={variant} {...props} />;\n};\n","import styled from '@emotion/styled';\nimport { OutlinedInputProps } from '@mui/material/OutlinedInput';\nimport TextField from '@mui/material/TextField';\n\nexport const InputField = styled(TextField)<OutlinedInputProps>(({ theme }) => ({\n '& .MuiOutlinedInput-root': {\n height: '42px',\n borderRadius: theme.stigg.border.radius,\n fieldset: {\n borderColor: theme.stigg.palette.outlinedBorder,\n },\n '&:not(.Mui-focused):hover fieldset': {\n borderColor: theme.stigg.palette.outlinedRestingBorder,\n },\n },\n '& .MuiInputBase-input': {\n padding: '8px 12px',\n borderRadius: theme.stigg.border.radius,\n fontFamily: theme.stigg.typography.fontFamily,\n color: theme.stigg.palette.text.primary,\n ...theme.stigg.typography.body,\n },\n '& .Mui-error': {\n fontFamily: theme.stigg.typography.fontFamily,\n },\n}));\n","import styled from '@emotion/styled/macro';\nimport Grid from '@mui/material/Grid';\nimport ReactSkeleton from 'react-loading-skeleton';\n\nexport const SkeletonsContainer = styled(Grid, { shouldForwardProp: (prop) => !prop.startsWith('$') })<{\n $gap: number;\n $flexDirection?: 'row' | 'column';\n}>`\n display: flex;\n flex-direction: ${({ $flexDirection }) => $flexDirection || 'row'};\n gap: ${({ $gap }) => $gap}px;\n`;\n\nexport const FlexedSkeletonContainer = styled(SkeletonsContainer)`\n span {\n display: flex;\n flex: 1;\n }\n`;\n\nexport const FlexedSkeleton = styled(Grid)<{ flex: number }>`\n span {\n display: flex;\n flex: ${({ flex }) => flex};\n }\n`;\n\nexport const Skeleton = styled(ReactSkeleton)`\n border-radius: 4px;\n`;\n","import React from 'react';\nimport Divider from '@mui/material/Divider';\nimport Grid from '@mui/material/Grid';\nimport styled from '@emotion/styled/macro';\nimport { FlexedSkeleton, FlexedSkeletonContainer, Skeleton, SkeletonsContainer } from './Skeletons.style';\n\nconst ContentContainer = styled(Grid)`\n display: flex;\n flex-direction: column;\n`;\n\nexport function ContentLoadingSkeleton() {\n return (\n <ContentContainer container>\n <SkeletonsContainer item $gap={48}>\n <Skeleton width={120} height={20} />\n <Skeleton width={120} height={20} />\n </SkeletonsContainer>\n\n <Divider className=\"stigg-checkout-plan-header-divider\" sx={{ marginY: 2 }} />\n\n <ContentContainer item>\n <Skeleton width={120} height={20} />\n\n <FlexedSkeletonContainer $gap={16} marginTop={3}>\n <Skeleton height={20} />\n <Skeleton height={20} />\n </FlexedSkeletonContainer>\n\n <SkeletonsContainer $gap={130} marginTop={3}>\n <FlexedSkeleton flex={1}>\n <Skeleton height={20} />\n </FlexedSkeleton>\n\n <FlexedSkeleton flex={3}>\n <Skeleton height={20} />\n </FlexedSkeleton>\n </SkeletonsContainer>\n </ContentContainer>\n </ContentContainer>\n );\n}\n","import InputAdornment from '@mui/material/InputAdornment';\nimport React from 'react';\nimport { Typography } from './Typography';\nimport { InputField } from '../checkout/components';\nimport { TiersSelectContainerProps } from './TiersSelectContainer';\n\nexport function VolumePerUnitInput({\n width,\n tierUnits,\n perUnitQuantity,\n handlePerUnitQuantityChange,\n handleChange,\n}: Pick<TiersSelectContainerProps, 'width' | 'tierUnits' | 'perUnitQuantity' | 'handlePerUnitQuantityChange'> & {\n handleChange: (quantity: number) => void;\n}) {\n return (\n <InputField\n type=\"number\"\n fullWidth\n sx={{ minHeight: '46px', width }}\n InputProps={{\n endAdornment: (\n <InputAdornment position=\"end\">\n <Typography variant=\"body1\" color=\"primary\">\n {tierUnits}\n </Typography>\n </InputAdornment>\n ),\n }}\n value={perUnitQuantity || 1}\n onChange={(event) => {\n const quantity = event?.target?.value ? Number(event?.target?.value) : null;\n if (quantity) {\n handleChange(quantity);\n handlePerUnitQuantityChange(quantity);\n }\n }}\n />\n );\n}\n","import { PriceTierFragment } from '@stigg/js-client-sdk';\nimport styled from '@emotion/styled/macro';\nimport OutlinedInput from '@mui/material/OutlinedInput';\nimport Select from '@mui/material/Select';\nimport MenuItem from '@mui/material/MenuItem';\nimport { map } from 'lodash';\nimport React from 'react';\nimport { Typography } from './Typography';\nimport { TiersSelectContainerProps } from './TiersSelectContainer';\n\nconst TierSelect = styled(Select)`\n border-radius: 10px;\n min-height: 42px;\n min-width: 120px;\n\n &:hover .MuiOutlinedInput-notchedOutline {\n border-color: ${({ theme }) => theme.stigg.palette.outlinedBorder};\n }\n`;\n\nconst TierInput = styled(OutlinedInput)`\n & .MuiInputBase-input {\n padding: 10px 12px;\n }\n\n &.Mui-focused .MuiOutlinedInput-notchedOutline {\n border-color: ${({ theme }) => theme.stigg.palette.primary} !important;\n }\n`;\n\nexport function VolumeBulkSelect({\n selectedTier,\n componentId,\n tierUnits,\n tiers,\n handleChange,\n}: Pick<TiersSelectContainerProps, 'selectedTier' | 'componentId' | 'tiers' | 'tierUnits'> & {\n handleChange: (quantity: number) => void;\n}) {\n if (!tiers) {\n return null;\n }\n\n return (\n <TierSelect\n value={selectedTier ? selectedTier.upTo?.toString() : tiers[0].upTo?.toString()}\n fullWidth\n onChange={(event) => {\n handleChange(event.target.value as number);\n }}\n id={componentId}\n input={<TierInput />}\n MenuProps={{\n MenuListProps: { disablePadding: true },\n PaperProps: {\n sx: { marginTop: '4px', borderRadius: '10px' },\n },\n }}>\n {map(tiers, (tier: PriceTierFragment) => (\n <MenuItem className=\"stigg-price-tier-menu-item-text\" key={tier.upTo} value={tier.upTo?.toString()}>\n <Typography variant=\"body1\" color=\"primary\" style={{ lineHeight: 'unset' }}>\n {tier.upTo} {tierUnits}\n </Typography>\n </MenuItem>\n ))}\n </TierSelect>\n );\n}\n","import { PriceTierFragment, TiersMode } from '@stigg/js-client-sdk';\nimport React from 'react';\nimport styled from '@emotion/styled/macro';\nimport { getTierByQuantity } from '../utils/priceTierUtils';\nimport { Typography } from './Typography';\nimport { VolumePerUnitInput } from './VolumePerUnitInput';\nimport { VolumeBulkSelect } from './VolumeBulkSelect';\n\nexport type TiersSelectContainerProps = {\n componentId: string;\n tiers?: PriceTierFragment[] | null;\n tierUnits?: string;\n selectedTier?: PriceTierFragment;\n handleTierChange: (tier: PriceTierFragment) => void;\n tiersMode?: TiersMode | null;\n handlePerUnitQuantityChange: (quantity: number) => void;\n perUnitQuantity?: number;\n width?: number;\n};\n\nconst TiersSelectLayout = styled(Typography)`\n min-height: 46px;\n`;\n\nexport function TiersSelectContainer(props: TiersSelectContainerProps) {\n const { tiers, tiersMode, handleTierChange } = props;\n const handleChange = (quantity: number) => {\n if (!tiers) return;\n\n handleTierChange(getTierByQuantity(tiers, quantity)!);\n };\n\n const getContent = () => {\n switch (tiersMode) {\n case TiersMode.VolumePerUnit:\n return <VolumePerUnitInput handleChange={handleChange} {...props} />;\n case TiersMode.Volume:\n return <VolumeBulkSelect handleChange={handleChange} {...props} />;\n default:\n return <div />;\n }\n };\n\n return (\n <TiersSelectLayout as=\"div\" className=\"stigg-price-tier-select\">\n {getContent()}\n </TiersSelectLayout>\n );\n}\n","import React from 'react';\nimport styled from '@emotion/styled/macro';\nimport { BillingPeriod, PriceTierFragment } from '@stigg/js-client-sdk';\nimport { PaywallPlan } from './types';\nimport { PaywallLocalization } from './paywallTextOverrides';\nimport { getPlanPrice } from '../utils/getPlanPrice';\nimport { Typography } from '../common/Typography';\nimport { TiersSelectContainer } from '../common/TiersSelectContainer';\n\nconst EMPTY_CHAR = '';\n\nconst PlanPriceContainer = styled(Typography)`\n word-break: break-word;\n width: 100%;\n`;\n\nconst UnitSpan = styled(Typography)`\n white-space: nowrap;\n`;\n\nconst PriceSpan = styled(Typography)`\n white-space: normal;\n min-height: 39px;\n`;\n\ntype PriceBillingPeriodProps = {\n plan: PaywallPlan;\n billingPeriod: BillingPeriod;\n hasMonthlyPrice: boolean;\n hasAnnuallyPrice: boolean;\n paywallLocale: PaywallLocalization;\n};\n\nfunction PriceBillingPeriod({\n plan,\n billingPeriod,\n hasMonthlyPrice,\n hasAnnuallyPrice,\n paywallLocale,\n}: PriceBillingPeriodProps) {\n const hasPrice = plan.pricePoints.find((pricePoint) => pricePoint.billingPeriod === billingPeriod);\n\n let content = EMPTY_CHAR;\n if (hasPrice && hasMonthlyPrice && hasAnnuallyPrice) {\n content = paywallLocale.price.billingPeriod?.(billingPeriod) || `, billed ${billingPeriod.toLowerCase()}`;\n }\n\n return (\n <Typography span className=\"stigg-price-billing-period-text\" variant=\"h6\" color=\"secondary\">\n {content}\n </Typography>\n );\n}\n\nexport const PlanPrice = ({\n showStartingAt,\n withUnitPriceRow,\n withStartingAtRow,\n withTiersRow,\n selectedTierByFeature,\n setSelectedTierByFeature,\n plan,\n billingPeriod,\n paywallLocale,\n locale,\n hasMonthlyPrice,\n hasAnnuallyPrice,\n perUnitQuantityByFeature,\n setPerUnitQuantityByFeature,\n}: {\n showStartingAt: boolean;\n withUnitPriceRow: boolean;\n withStartingAtRow: boolean;\n withTiersRow: boolean;\n selectedTierByFeature: Record<string, PriceTierFragment>;\n setSelectedTierByFeature: React.Dispatch<React.SetStateAction<Record<string, PriceTierFragment>>>;\n perUnitQuantityByFeature: Record<string, number>;\n setPerUnitQuantityByFeature: React.Dispatch<React.SetStateAction<Record<string, number>>>;\n plan: PaywallPlan;\n billingPeriod: BillingPeriod;\n paywallLocale: PaywallLocalization;\n hasMonthlyPrice: boolean;\n hasAnnuallyPrice: boolean;\n locale: string;\n}) => {\n const { price, unit, tiers, tierUnits } = getPlanPrice(\n plan,\n billingPeriod,\n paywallLocale,\n locale,\n hasMonthlyPrice,\n selectedTierByFeature,\n perUnitQuantityByFeature,\n );\n\n // We currently only support prices with one tier - so we select the first one\n const tieredPrice = plan.pricePoints.find((planPrice) => {\n return planPrice.billingPeriod === billingPeriod && planPrice.isTieredPrice;\n });\n const featureId = tieredPrice ? tieredPrice.feature!.featureId : undefined;\n const selectedTier = featureId ? selectedTierByFeature[featureId] : undefined;\n const perUnitQuantity = featureId ? perUnitQuantityByFeature[featureId] : undefined;\n\n const handleTierChange = (tier: PriceTierFragment) => {\n if (!featureId) {\n return;\n }\n\n setSelectedTierByFeature((prevState) => ({\n ...prevState,\n [featureId]: tier,\n }));\n };\n\n const handlePerUnitQuantityChange = (quantity: number) => {\n if (!featureId) {\n return;\n }\n\n setPerUnitQuantityByFeature((prevState) => ({\n ...prevState,\n [featureId]: quantity,\n }));\n };\n\n return (\n <PlanPriceContainer as=\"div\" className=\"stigg-price-text\">\n <>\n {withStartingAtRow && (\n <Typography\n style={{ minHeight: '20px' }}\n className=\"stigg-starting-at-text\"\n variant=\"body1\"\n color=\"secondary\">\n {showStartingAt ? paywallLocale.price.startingAtCaption : EMPTY_CHAR}\n </Typography>\n )}\n\n <PriceSpan className=\"stigg-price-point\" variant=\"h1\">\n {price}\n </PriceSpan>\n\n {withUnitPriceRow && (\n <Typography as=\"div\" className=\"stigg-price-unit-and-billing-period-text\" style={{ minHeight: '48px' }}>\n <UnitSpan className=\"stigg-price-unit-text\" span variant=\"h6\" color=\"secondary\">\n {unit}\n </UnitSpan>\n\n <PriceBillingPeriod\n plan={plan}\n billingPeriod={billingPeriod}\n hasAnnuallyPrice={hasAnnuallyPrice}\n hasMonthlyPrice={hasMonthlyPrice}\n paywallLocale={paywallLocale}\n />\n </Typography>\n )}\n\n {withTiersRow ? (\n <TiersSelectContainer\n componentId={`${plan.id}_${featureId}_tier`}\n tiers={tiers}\n tierUnits={tierUnits}\n selectedTier={selectedTier}\n handleTierChange={handleTierChange}\n tiersMode={tieredPrice?.tiersMode}\n handlePerUnitQuantityChange={handlePerUnitQuantityChange}\n perUnitQuantity={perUnitQuantity}\n />\n ) : null}\n </>\n </PlanPriceContainer>\n );\n};\n","import React, { useEffect, useState } from 'react';\nimport {\n BillableFeature,\n BillingPeriod,\n Customer,\n PriceTierFragment,\n PricingType,\n Subscription,\n} from '@stigg/js-client-sdk';\nimport styled from '@emotion/styled/macro';\nimport classNames from 'classnames';\nimport Grid from '@mui/material/Grid';\nimport { PlanEntitlements } from './PlanEntitlements';\nimport { PlanOfferingButton } from './PlanOfferingButton';\nimport { PaywallPlan, SelectDefaultTierIndexFn, SubscribeIntentionType } from './types';\nimport { PaywallLocalization } from './paywallTextOverrides';\nimport { flexLayoutMapper } from '../../theme/getResolvedTheme';\nimport { Typography } from '../common/Typography';\nimport MiniSchedule from '../../assets/mini-schedule.svg';\nimport { PlanPrice } from './PlanPrice';\nimport { getSelectedTier, getSelectedTierQuantityBeFeature } from '../utils/priceTierUtils';\n\nconst PlanOfferingButtonHeight = '66px';\n\nconst PlanOfferingContainer = styled.div<{ $isHighlighted: boolean; $isCurrentPlan: boolean }>`\n position: relative;\n background-color: ${({ theme, $isCurrentPlan }) =>\n $isCurrentPlan ? theme.stigg.palette.backgroundHighlight : theme.stigg.palette.backgroundPaper};\n border: ${({ theme, $isHighlighted }) =>\n $isHighlighted ? `3px solid ${theme.stigg.palette.primary}` : `1px solid ${theme.stigg.palette.outlinedBorder}`};\n border-radius: 10px;\n padding: ${({ theme }) => theme.stigg.layout.planPadding};\n display: flex;\n min-width: ${({ theme }) => theme.stigg.layout.planMinWidth};\n max-width: ${({ theme }) => theme.stigg.layout.planMaxWidth};\n flex-direction: column;\n align-items: flex-start;\n justify-content: flex-start;\n position: relative;\n`;\n\nconst PlanHeader = styled(Typography)`\n padding-bottom: 8px;\n`;\n\nconst Divider = styled.div`\n height: 2px;\n width: 100%;\n background-color: ${({ theme }) => theme.stigg.palette.outlinedBorder};\n margin-bottom: 40px;\n`;\n\nconst PlanDescription = styled(Typography)`\n text-align: ${({ theme }) => theme.stigg.layout.descriptionAlignment};\n min-height: ${({ theme }) => theme.stigg.layout.descriptionMinHeight};\n`;\n\nconst HighlightBadge = styled.div`\n background-color: ${({ theme }) => theme.stigg.palette.primary};\n border-radius: 40px;\n position: absolute;\n top: -12px;\n`;\n\nconst HighlightText = styled(Typography)`\n margin: 0;\n padding: 2px 8px;\n`;\n\nconst HeaderWrapper = styled.div`\n width: 100%;\n display: flex;\n flex-direction: column;\n align-items: ${({ theme }) => flexLayoutMapper(theme.stigg.layout.headerAlignment)};\n`;\n\ntype PlanOfferingProps = {\n withUnitPriceRow: boolean;\n withTiersRow: boolean;\n withTrialLeftRow: boolean;\n customer: Customer | null;\n plan: PaywallPlan;\n billingPeriod: BillingPeriod;\n currentSubscription: Subscription | null;\n isHighlighted: boolean;\n shouldShowDescriptionSection: boolean;\n hasAnnuallyPrice: boolean;\n hasMonthlyPrice: boolean;\n isCustomerOnTrial: boolean;\n onPlanSelected: (intentionType: SubscribeIntentionType, billableFeatures: BillableFeature[]) => void | Promise<void>;\n paywallLocale: PaywallLocalization;\n locale: string;\n withStartingAtRow: boolean;\n isCustomerInCustomPlan: boolean;\n selectDefaultTierIndex?: SelectDefaultTierIndexFn;\n};\n\nconst NextPlanTagContainer = styled.div`\n position: absolute;\n top: 0;\n background-color: ${({ theme }) => theme.stigg.palette.outlinedBorder};\n border-radius: 0px 0px 10px 10px;\n padding: 3px 12px;\n`;\n\nconst StyledMiniSchedule = styled(MiniSchedule)<{ $iconsColor?: string }>`\n display: flex;\n height: 100%;\n margin-right: 4px;\n\n path {\n fill: ${({ theme }) => theme.stigg.palette.text.primary};\n }\n`;\n\nfunction UpcomingChangeTag({ text = 'Next', iconsColor }: { text?: string; iconsColor?: string }) {\n return (\n <NextPlanTagContainer>\n <Grid display=\"flex\" alignItems=\"center\" gap={1}>\n <StyledMiniSchedule $iconsColor={iconsColor} />\n <Typography color=\"primary\" variant=\"body1\">\n {text}\n </Typography>\n </Grid>\n </NextPlanTagContainer>\n );\n}\n\nexport function PlanOffering({\n withUnitPriceRow,\n withTiersRow,\n withTrialLeftRow,\n customer,\n plan,\n billingPeriod,\n isHighlighted,\n currentSubscription,\n shouldShowDescriptionSection,\n hasMonthlyPrice,\n hasAnnuallyPrice,\n isCustomerOnTrial,\n onPlanSelected,\n paywallLocale,\n locale,\n withStartingAtRow,\n isCustomerInCustomPlan,\n selectDefaultTierIndex,\n}: PlanOfferingProps) {\n const isNextPlan = plan.isNextPlan && plan.isNextPlan(billingPeriod);\n const planPrices = plan.pricePoints.filter((pricePoint) => pricePoint.billingPeriod === billingPeriod);\n const paywallCalculatedPrice = plan.paywallCalculatedPricePoints?.find(\n (pricePoint) => pricePoint.billingPeriod === billingPeriod,\n );\n const showStartingAt = planPrices.length > 1 && !!paywallCalculatedPrice?.additionalChargesMayApply;\n const showCTAButton = !isCustomerInCustomPlan || plan.pricingType === PricingType.Custom;\n\n let planBadge = null;\n if (isNextPlan) {\n planBadge = <UpcomingChangeTag text=\"Next plan\" />;\n } else if (isHighlighted && paywallLocale.highlightChip) {\n planBadge = (\n <HighlightBadge className=\"stigg-highlight-badge\">\n <HighlightText className=\"stigg-highlight-badge-text\" color=\"white\" bold>\n {paywallLocale.highlightChip}\n </HighlightText>\n </HighlightBadge>\n );\n }\n\n const [perUnitQuantityByFeature, setPerUnitQuantityByFeature] = useState<Record<string, number>>({});\n const [selectedTierByFeature, setSelectedTierByFeature] = useState<Record<string, PriceTierFragment>>(\n getSelectedTier(plan, billingPeriod, currentSubscription, {}, selectDefaultTierIndex),\n );\n\n useEffect(() => {\n setSelectedTierByFeature(getSelectedTier(plan, billingPeriod, currentSubscription, selectedTierByFeature));\n setPerUnitQuantityByFeature(getSelectedTierQuantityBeFeature(plan, billingPeriod, currentSubscription));\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [billingPeriod, currentSubscription, plan]);\n\n const onPlanButtonClick = (intentionType: SubscribeIntentionType) => {\n const tierBillableFeatures: BillableFeature[] = Object.keys(selectedTierByFeature).map((featureId) => ({\n featureId,\n quantity: selectedTierByFeature[featureId].upTo || 0,\n }));\n const perUnitBillableFeatures: BillableFeature[] = Object.keys(perUnitQuantityByFeature).map((featureId) => ({\n featureId,\n quantity: perUnitQuantityByFeature[featureId],\n }));\n\n return onPlanSelected(intentionType, { ...tierBillableFeatures, ...perUnitBillableFeatures });\n };\n\n return (\n <PlanOfferingContainer\n className={classNames(`stigg-${plan.id}`, 'stigg-plan-offering-container', {\n 'stigg-current-plan': plan.isCurrentCustomerPlan,\n })}\n $isHighlighted={isHighlighted}\n $isCurrentPlan={plan.isCurrentCustomerPlan}>\n {planBadge}\n\n <HeaderWrapper className=\"stigg-header-wrapper\">\n <PlanHeader className=\"stigg-plan-header\" variant=\"h3\">\n {plan.displayName}\n </PlanHeader>\n\n {shouldShowDescriptionSection && (\n <PlanDescription className=\"stigg-plan-description\" variant=\"h6\" color=\"secondary\">\n {plan.description}\n </PlanDescription>\n )}\n\n <PlanPrice\n showStartingAt={showStartingAt}\n withUnitPriceRow={withUnitPriceRow}\n withStartingAtRow={withStartingAtRow}\n withTiersRow={withTiersRow}\n selectedTierByFeature={selectedTierByFeature}\n setSelectedTierByFeature={setSelectedTierByFeature}\n plan={plan}\n billingPeriod={billingPeriod}\n paywallLocale={paywallLocale}\n locale={locale}\n hasAnnuallyPrice={hasAnnuallyPrice}\n hasMonthlyPrice={hasMonthlyPrice}\n setPerUnitQuantityByFeature={setPerUnitQuantityByFeature}\n perUnitQuantityByFeature={perUnitQuantityByFeature}\n />\n\n {showCTAButton ? (\n <PlanOfferingButton\n isNextPlan={isNextPlan}\n customer={customer}\n plan={plan}\n currentSubscription={currentSubscription}\n billingPeriod={billingPeriod}\n isCustomerOnTrial={isCustomerOnTrial}\n onPlanSelected={onPlanButtonClick}\n paywallLocale={paywallLocale}\n withTrialLeftRow={withTrialLeftRow}\n selectedTierByFeature={selectedTierByFeature}\n perUnitQuantityByFeature={perUnitQuantityByFeature}\n />\n ) : (\n <div style={{ height: PlanOfferingButtonHeight }} />\n )}\n\n <Divider className=\"stigg-plan-header-divider\" />\n </HeaderWrapper>\n\n <PlanEntitlements plan={plan} billingPeriod={billingPeriod} paywallLocale={paywallLocale} />\n </PlanOfferingContainer>\n );\n}\n","import React from 'react';\nimport styled from '@emotion/styled/macro';\nimport Switch from 'react-switch';\nimport { BillingPeriod } from '@stigg/js-client-sdk';\nimport { Typography } from '../common/Typography';\n\nconst PickerContainer = styled.div`\n height: 40px;\n padding: 0 20px;\n margin-bottom: ${({ theme }) => theme.stigg.layout.switchBottomSpacing};\n border-radius: 10px;\n border: ${({ theme }) => `1px solid ${theme.stigg.palette.outlinedBorder}`};\n background-color: ${({ theme }) => theme.stigg.palette.backgroundPaper};\n display: flex;\n align-items: center;\n justify-content: center;\n`;\n\nconst PeriodText = styled(Typography)`\n margin: 0 8px;\n`;\n\nconst StyledSwitch = styled(Switch)`\n & .react-switch-bg {\n border: ${({ theme }) => `1px solid ${theme.stigg.palette.switchBorder}`};\n background: ${({ theme }) => theme.stigg.palette.switchFill} !important;\n }\n\n & .react-switch-handle {\n box-shadow: ${({ theme }) => theme.stigg.shadows.light};\n background: ${({ theme }) => theme.stigg.palette.switchHandle} !important;\n top: 0.5px !important;\n }\n`;\n\nfunction DiscountRate({ discount, disabled }: { discount: number; disabled: boolean }) {\n return (\n <Typography variant=\"h6\" color={disabled ? 'disabled' : 'primary'} className=\"stigg-discount-rate-text\">\n {discount}% off\n </Typography>\n );\n}\n\nexport function BillingPeriodPicker({\n discountRate,\n selectedBillingPeriod,\n onBillingPeriodChanged,\n availableBillingPeriods,\n}: {\n discountRate: number;\n selectedBillingPeriod: BillingPeriod;\n onBillingPeriodChanged: (billingPeriod: BillingPeriod) => void;\n availableBillingPeriods: BillingPeriod[];\n}) {\n if (availableBillingPeriods.length <= 1) {\n return null;\n }\n\n const isMonthlyBillingPeriod = selectedBillingPeriod === BillingPeriod.Monthly;\n\n return (\n <PickerContainer className=\"stigg-period-picker-container\">\n <PeriodText\n variant=\"h6\"\n className=\"stigg-monthly-period-text\"\n color={isMonthlyBillingPeriod ? 'primary' : 'disabled'}>\n Monthly\n </PeriodText>\n <StyledSwitch\n className=\"stigg-period-switch\"\n uncheckedIcon={false}\n checkedIcon={false}\n height={16}\n width={33}\n onChange={(isAnnuallySelected) =>\n onBillingPeriodChanged(isAnnuallySelected ? BillingPeriod.Annually : BillingPeriod.Monthly)\n }\n checked={!isMonthlyBillingPeriod}\n borderRadius={10}\n handleDiameter={19}\n />\n <PeriodText\n variant=\"h6\"\n className=\"stigg-annual-period-text\"\n color={!isMonthlyBillingPeriod ? 'primary' : 'disabled'}>\n Annual\n </PeriodText>\n {discountRate !== 0 && <DiscountRate discount={discountRate} disabled={isMonthlyBillingPeriod} />}\n </PickerContainer>\n );\n}\n","import { BillingPeriod, PaywallCalculatedPricePoint, Price } from '@stigg/js-client-sdk';\nimport isNil from 'lodash/isNil';\nimport { PaywallPlan } from '../paywall';\n\nexport function calculateDiscountRate(monthlyPrice?: number | null, annuallyPrice?: number | null) {\n if (!isNil(monthlyPrice) && !isNil(annuallyPrice)) {\n const annuallyPerMonthPrice = annuallyPrice / 12;\n return Math.round(((monthlyPrice - annuallyPerMonthPrice) / monthlyPrice) * 100);\n }\n\n return null;\n}\n\nfunction getPlanBillingPeriodAmount(plan: PaywallPlan, billingPeriod: BillingPeriod) {\n let pricePoint: PaywallCalculatedPricePoint | Price | undefined;\n\n pricePoint = plan.paywallCalculatedPricePoints?.find((price) => price.billingPeriod === billingPeriod);\n\n if (!pricePoint) {\n pricePoint = plan.pricePoints.find((price) => price.billingPeriod === billingPeriod);\n }\n\n if (!pricePoint?.amount) {\n const tieredPrice = plan.pricePoints.find((price) => {\n return price.isTieredPrice && price.billingPeriod === billingPeriod;\n });\n\n if (tieredPrice) {\n return tieredPrice.tiers![0].unitPrice.amount;\n }\n }\n\n return pricePoint?.amount;\n}\n\nexport function calculatePaywallDiscountRate(plans: PaywallPlan[]) {\n return plans.reduce((maxDiscount, plan) => {\n const monthlyAmount = getPlanBillingPeriodAmount(plan, BillingPeriod.Monthly);\n const annuallyAmount = getPlanBillingPeriodAmount(plan, BillingPeriod.Annually);\n\n const discountRate = calculateDiscountRate(monthlyAmount, annuallyAmount);\n if (discountRate) {\n maxDiscount = Math.max(maxDiscount, discountRate);\n }\n\n return maxDiscount;\n }, 0);\n}\n","<svg width=\"135\" height=\"16\" viewBox=\"0 0 135 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<path d=\"M0.0987549 3.43016V12.9878H1.15589V9.52681H3.96527C5.94922 9.52681 7.28874 8.25245 7.28874 6.47848C7.28874 4.70452 5.94922 3.43016 3.96527 3.43016H0.0987549ZM1.15589 8.55656V4.40765H4.04492C5.33376 4.40765 6.18816 5.26205 6.18816 6.47848C6.18816 7.69492 5.33376 8.55656 4.04492 8.55656H1.15589Z\" fill=\"#001E6C\"/>\n<path d=\"M11.7787 13.1616C13.9075 13.1616 15.6525 11.5397 15.6525 9.38199C15.6525 7.21703 13.9365 5.62408 11.8077 5.62408C9.64999 5.62408 7.93395 7.24599 7.93395 9.41095C7.93395 11.5687 9.62103 13.1616 11.7787 13.1616ZM11.7932 12.2276C10.2365 12.2276 9.02005 11.0256 9.02005 9.39647C9.02005 7.76732 10.2365 6.56537 11.7932 6.56537C13.321 6.56537 14.5664 7.76732 14.5664 9.39647C14.5664 11.0256 13.321 12.2276 11.7932 12.2276Z\" fill=\"#001E6C\"/>\n<path d=\"M19.9054 12.9878L21.4766 6.94189H21.5056L23.0623 12.9878H24.4018L26.5958 5.8051H25.4155L23.7936 11.909H23.7647L22.2152 5.8051H20.7815L19.232 11.909H19.203L17.5522 5.8051H16.3575L18.5659 12.9878H19.9054Z\" fill=\"#001E6C\"/>\n<path d=\"M34.9835 9.42544C34.9835 7.30392 33.4051 5.62408 31.1532 5.62408C29.0534 5.62408 27.3084 7.18083 27.3084 9.41095C27.3084 11.5542 28.9086 13.1616 31.1822 13.1616C32.7679 13.1616 34.0567 12.3941 34.6794 11.1922L33.7816 10.707C33.3688 11.6049 32.3696 12.2348 31.1966 12.2348C29.5241 12.2348 28.5031 10.9894 28.4017 9.7223H34.969C34.9835 9.59197 34.9835 9.54129 34.9835 9.42544ZM31.1387 6.55089C32.5434 6.55089 33.6657 7.49942 33.854 8.80998H28.4307C28.6552 7.5501 29.7558 6.55089 31.1387 6.55089Z\" fill=\"#001E6C\"/>\n<path d=\"M39.5922 5.68201C38.564 5.68201 37.8182 6.20334 37.4924 6.93464L37.391 5.8051H36.486V12.9878H37.5431V8.5638C37.5431 7.44873 38.1585 6.77535 39.3171 6.77535H39.9977V5.68201H39.5922Z\" fill=\"#001E6C\"/>\n<path d=\"M48.2486 9.42544C48.2486 7.30392 46.6702 5.62408 44.4183 5.62408C42.3185 5.62408 40.5735 7.18083 40.5735 9.41095C40.5735 11.5542 42.1737 13.1616 44.4473 13.1616C46.033 13.1616 47.3218 12.3941 47.9445 11.1922L47.0467 10.707C46.634 11.6049 45.6348 12.2348 44.4618 12.2348C42.7892 12.2348 41.7682 10.9894 41.6669 9.7223H48.2342C48.2486 9.59197 48.2486 9.54129 48.2486 9.42544ZM44.4039 6.55089C45.8085 6.55089 46.9308 7.49942 47.1191 8.80998H41.6958C41.9203 7.5501 43.0209 6.55089 44.4039 6.55089Z\" fill=\"#001E6C\"/>\n<path d=\"M55.846 7.02877C55.2161 6.13817 54.2024 5.63132 53.0149 5.63132C50.9224 5.63132 49.2425 7.21703 49.2425 9.39647C49.2425 11.5759 50.8934 13.1616 52.986 13.1616C54.1807 13.1616 55.2161 12.6403 55.8533 11.7425L55.9981 12.9878H56.9032V2.56128L55.846 2.67713V7.02877ZM53.0294 12.2276C51.5306 12.2276 50.3286 11.0401 50.3286 9.39647C50.3286 7.75284 51.5306 6.56537 53.0294 6.56537C54.5789 6.56537 55.846 7.76732 55.846 9.39647C55.846 11.0256 54.5789 12.2276 53.0294 12.2276Z\" fill=\"#001E6C\"/>\n<path d=\"M65.7314 5.63132C64.5367 5.63132 63.5085 6.14541 62.8713 7.04325V2.56128L61.8142 2.67713V12.9878H62.7192L62.8641 11.7497C63.494 12.6475 64.5077 13.1616 65.7024 13.1616C67.795 13.1616 69.4748 11.5759 69.4748 9.39647C69.4748 7.21703 67.8239 5.63132 65.7314 5.63132ZM65.6879 12.2276C64.1384 12.2276 62.8713 11.0256 62.8713 9.39647C62.8713 7.76732 64.1384 6.56537 65.6879 6.56537C67.1867 6.56537 68.3887 7.75284 68.3887 9.39647C68.3887 11.0401 67.1867 12.2276 65.6879 12.2276Z\" fill=\"#001E6C\"/>\n<path d=\"M76.2187 5.8051V9.9178C76.2187 11.3297 75.3136 12.1841 74.0465 12.1841C72.7866 12.1841 72.077 11.4456 72.077 10.1133V5.8051H71.0199V10.2726C71.0199 11.9669 72.1349 13.0965 73.7641 13.0965C74.843 13.0965 75.6901 12.6765 76.2187 11.9814V12.8937C76.2187 14.1608 75.2629 15.0804 73.8727 15.0804C72.7504 15.0804 71.8236 14.4794 71.5847 13.4295L70.6579 13.9074C71.0995 15.16 72.3087 16 73.8582 16C75.8132 16 77.2758 14.5953 77.2758 12.7923V5.8051H76.2187Z\" fill=\"#001E6C\"/>\n<path d=\"M108.672 10.4867C108.672 11.9077 107.411 12.7873 105.491 12.7873C104.464 12.7873 103.634 12.6028 102.84 12.2091C102.914 11.76 102.982 11.2187 103 10.5913C103.738 11.0219 104.575 11.231 105.381 11.231C106.34 11.231 106.839 11.0096 106.839 10.5421C106.857 10.0807 106.5 9.87155 105.067 9.59473C103.406 9.26255 102.668 8.57359 102.668 7.35559C102.668 5.97767 103.929 5.0857 105.848 5.0857C106.697 5.0857 107.54 5.24564 108.186 5.52246L107.866 7.06647C107.226 6.7712 106.537 6.63587 105.848 6.63587C104.95 6.63587 104.507 6.85733 104.507 7.29408C104.507 7.67547 104.815 7.83541 106.217 8.12453C108.007 8.50592 108.678 9.19488 108.678 10.4744L108.672 10.4867ZM112.879 11.0957C112.16 11.0957 111.581 10.7143 111.581 9.70546V6.88808H113.408L113.747 5.25794H111.581V2.93884C111.157 3.06187 110.517 3.2095 109.681 3.28332L109.662 10.0315C109.662 11.8708 110.763 12.7996 112.412 12.7996C112.787 12.7996 113.113 12.7627 113.39 12.6951L113.753 10.9665C113.525 11.0465 113.236 11.1018 112.879 11.1018V11.0957ZM114.965 12.6889H116.884V5.25794H114.965V12.6889ZM115.93 2.21912C115.309 2.21297 114.829 2.66817 114.823 3.27102C114.823 3.89232 115.278 4.35983 115.894 4.36598C116.515 4.36598 116.976 3.92923 116.989 3.32638C117.001 2.70508 116.546 2.23142 115.937 2.21912H115.93ZM126.056 5.25794V11.5263C126.056 13.8946 124.456 15.5247 121.756 15.5247C120.784 15.5247 119.714 15.3094 118.994 14.8973C119.492 14.3867 119.831 13.9438 120.046 13.6239C120.532 13.79 121.042 13.8762 121.565 13.8762C123.275 13.8762 124.143 12.9288 124.143 11.7354V11.4955C123.534 12.1968 122.654 12.6336 121.602 12.6336C119.584 12.6336 118.065 11.1326 118.065 8.90577C118.065 6.67893 119.726 5.098 121.756 5.098C122.808 5.098 123.724 5.4794 124.333 6.19912L124.395 5.25179H126.062L126.056 5.25794ZM124.155 8.90577C124.155 7.72468 123.294 6.82657 122.107 6.82657C120.919 6.82657 120.046 7.72468 120.046 8.90577C120.046 10.0868 120.907 10.9542 122.107 10.9542C123.306 10.9542 124.155 10.0561 124.155 8.90577ZM134.994 5.25794V11.5263C134.994 13.8946 133.394 15.5247 130.694 15.5247C129.722 15.5247 128.652 15.3094 127.932 14.8973C128.43 14.3867 128.769 13.9438 128.984 13.6239C129.47 13.79 129.98 13.8762 130.503 13.8762C132.213 13.8762 133.081 12.9288 133.081 11.7354V11.4955C132.472 12.1968 131.592 12.6336 130.54 12.6336C128.523 12.6336 127.003 11.1326 127.003 8.90577C127.003 6.67893 128.664 5.098 130.694 5.098C131.746 5.098 132.662 5.4794 133.271 6.19912L133.333 5.25179H135L134.994 5.25794ZM133.093 8.90577C133.093 7.72468 132.232 6.82657 131.045 6.82657C129.857 6.82657 128.984 7.72468 128.984 8.90577C128.984 10.0868 129.845 10.9542 131.045 10.9542C132.244 10.9542 133.093 10.0561 133.093 8.90577Z\" fill=\"#001E6C\"/>\n<path d=\"M95.7092 14.9825C95.6354 15.0194 94.2267 15.6407 91.7353 15.5238C90.4374 15.4623 89.3117 15.2224 88.512 15.0009L92.8241 9.99361C93.5931 10.1905 94.5835 10.375 95.7092 10.4304C98.2005 10.5534 99.6092 9.92594 99.683 9.88903L95.7092 14.9886V14.9825ZM89.2686 5.36155C88.5612 2.96863 88.838 1.45537 88.8564 1.3754L84.8457 6.44421C84.8334 6.52418 84.5566 8.03744 85.2578 10.4304C85.6269 11.673 86.1252 12.7126 86.5312 13.4384L90.3759 8.0682C90.0068 7.36693 89.5885 6.44421 89.2686 5.3677V5.36155ZM99.2647 5.89058C98.6988 3.97132 97.813 2.55033 97.4501 2.009L93.8822 6.55494L94.5527 9.77216C94.9526 9.82752 95.3462 9.86443 95.7461 9.88903C95.9491 9.89518 96.1521 9.90134 96.3489 9.90134C98.2805 9.90134 99.357 9.44613 99.4739 9.39076L99.7507 9.26773C99.7753 8.60338 99.7322 7.42844 99.2709 5.88443L99.2647 5.89058ZM97.0256 1.68297C96.4166 1.45537 94.8295 0.932493 92.8303 0.83407C91.2248 0.754101 90.0744 0.987856 89.4347 1.1724L89.3793 1.46767C89.367 1.52919 89.121 2.96248 89.7792 5.20777C89.8899 5.58916 90.0252 5.9644 90.1729 6.33964L93.4577 6.22891L97.0318 1.68912L97.0256 1.68297Z\" fill=\"#001E6C\"/>\n</svg>\n","import React from 'react';\nimport styled from '@emotion/styled/macro';\nimport PoweredByStiggSvg from '../../assets/powered-by-stigg.svg';\n\nexport const STIGG_WATERMARK_CLASSNAME = 'stigg-watermark';\n\nexport type PoweredByStiggSources = 'paywall' | 'customer_portal' | 'checkout';\n\nconst PoweredByStiggThemedSvg = styled(PoweredByStiggSvg)`\n * {\n fill: ${({ theme }) => theme.stigg.palette.text.secondary};\n }\n`;\n\ntype PoweredByStiggProps = {\n source: PoweredByStiggSources;\n showWatermark?: boolean;\n style?: React.CSSProperties;\n align?: 'center' | 'end';\n};\n\nconst StyledPoweredByStigg = styled.div<{ $alignSelf?: string }>`\n align-self: ${({ $alignSelf }) => $alignSelf || 'unset'};\n\n @media (max-width: 1040px) {\n align-self: center;\n }\n`;\n\nexport function PoweredByStigg({ source, showWatermark, align, style = {} }: PoweredByStiggProps) {\n if (!showWatermark) {\n return null;\n }\n\n const onWatermarkClick = () => {\n const sourceDomain = window.location.hostname.replace('www.', '');\n window.open(\n `https://www.stigg.io/?utm_source=${sourceDomain}&utm_medium=referral&utm_campaign=${source}`,\n '_blank',\n );\n };\n\n return (\n <StyledPoweredByStigg\n $alignSelf={align}\n className={STIGG_WATERMARK_CLASSNAME}\n style={{ cursor: 'pointer', ...style }}\n onClick={onWatermarkClick}>\n <PoweredByStiggThemedSvg />\n </StyledPoweredByStigg>\n );\n}\n","import { BillingPeriod } from '@stigg/js-client-sdk';\nimport { PaywallPlan } from '../types';\n\nexport function hasPricePoints(plan: PaywallPlan, billingPeriod: BillingPeriod): boolean {\n return plan.pricePoints.some((pricePoint) => pricePoint.billingPeriod === billingPeriod);\n}\n\nexport function hasPricePointsForPlans(plans: PaywallPlan[], billingPeriod: BillingPeriod): boolean {\n return plans.some((plan) => hasPricePoints(plan, billingPeriod));\n}\n","import { BillingPeriod, PricingType } from '@stigg/js-client-sdk';\nimport { ShouldHidePlanFn, PaywallPlan } from '../types';\nimport { hasPricePoints } from './hasPricePoints';\n\nexport function getPlansToDisplay(\n plans: PaywallPlan[],\n selectedBillingPeriod: BillingPeriod,\n shouldHidePlan?: ShouldHidePlanFn,\n): PaywallPlan[] {\n return plans\n .filter((plan) => plan.pricingType !== PricingType.Paid || hasPricePoints(plan, selectedBillingPeriod))\n .filter((plan) => !shouldHidePlan || !shouldHidePlan({ plan }));\n}\n","import { BillableFeature, BillingPeriod, Customer, Plan, PricingType, Subscription } from '@stigg/js-client-sdk';\nimport React, { useCallback, useMemo } from 'react';\nimport styled from '@emotion/styled/macro';\nimport { PlanOffering } from './PlanOffering';\nimport { BillingPeriodPicker } from './BillingPeriodPicker';\nimport { calculatePaywallDiscountRate } from '../utils/calculateDiscountRate';\nimport {\n ShouldHidePlanFn,\n OnPlanSelectedCallbackFn,\n PaywallPlan,\n SubscribeIntentionType,\n SelectDefaultTierIndexFn,\n} from './types';\nimport { PaywallLocalization } from './paywallTextOverrides';\nimport { PoweredByStigg } from '../common/PoweredByStigg';\nimport { useStiggContext } from '../..';\nimport { hasPricePointsForPlans } from './utils/hasPricePoints';\nimport { getPlansToDisplay } from './utils/getPlansToDisplay';\nimport { getPlanPrice } from '../utils/getPlanPrice';\nimport { getSelectedTier } from '../utils/priceTierUtils';\n\nconst PaywallPlansContainer = styled.div`\n color: ${({ theme }) => theme.stigg.palette.text.primary};\n display: flex;\n align-items: stretch;\n justify-content: center;\n flex-wrap: wrap;\n padding: 10px 0;\n gap: ${({ theme }) => theme.stigg.layout.planMargin};\n`;\n\nconst PaywallContainer = styled.div`\n display: flex;\n flex-direction: column;\n align-items: center;\n\n & * {\n box-sizing: border-box;\n }\n`;\n\nconst PaywallLayout = styled.div`\n display: flex;\n flex-direction: column;\n align-items: center;\n`;\n\ntype PaywallProps = {\n plans: PaywallPlan[];\n customer: Customer | null;\n currentSubscription: Subscription | null;\n selectedBillingPeriod: BillingPeriod;\n highlightedPlanId?: string;\n onBillingPeriodChanged: (billingPeriod: BillingPeriod) => void;\n availableBillingPeriods: BillingPeriod[];\n isCustomerOnTrial: boolean;\n onPlanSelected: OnPlanSelectedCallbackFn;\n paywallLocale: PaywallLocalization;\n locale: string;\n shouldHidePlan?: ShouldHidePlanFn;\n selectDefaultTierIndex?: SelectDefaultTierIndexFn;\n};\n\nexport const Paywall = ({\n plans,\n customer,\n currentSubscription,\n highlightedPlanId,\n selectedBillingPeriod,\n onBillingPeriodChanged,\n availableBillingPeriods,\n isCustomerOnTrial,\n onPlanSelected,\n paywallLocale,\n locale,\n shouldHidePlan,\n selectDefaultTierIndex,\n}: PaywallProps) => {\n const { stigg } = useStiggContext();\n const discountRate = calculatePaywallDiscountRate(plans);\n const shouldShowDescriptionSection = plans.some((plan) => !!plan.description);\n const hasMonthlyPrice = hasPricePointsForPlans(plans, BillingPeriod.Monthly);\n const hasAnnuallyPrice = hasPricePointsForPlans(plans, BillingPeriod.Annually);\n const plansToShow = getPlansToDisplay(plans, selectedBillingPeriod, shouldHidePlan);\n\n const handleOnSubscribe = useCallback(\n (plan: Plan, intentionType: SubscribeIntentionType, billableFeatures: BillableFeature[]) => {\n return onPlanSelected({\n plan,\n customer,\n subscription: currentSubscription,\n intentionType,\n selectedBillingPeriod,\n billableFeatures,\n });\n },\n [customer, selectedBillingPeriod, currentSubscription, onPlanSelected],\n );\n\n const isCustomerInCustomPlan = !!currentSubscription && currentSubscription.plan.pricingType === PricingType.Custom;\n\n const withStartingAtRow = useMemo(\n () =>\n plansToShow.some((plan) => {\n const planPrices = plan.pricePoints.filter((pricePoint) => pricePoint.billingPeriod === selectedBillingPeriod);\n const paywallCalculatedPrice = plan.paywallCalculatedPricePoints?.find(\n (pricePoint) => pricePoint.billingPeriod === selectedBillingPeriod,\n );\n return planPrices.length > 1 && !!paywallCalculatedPrice?.additionalChargesMayApply;\n }),\n [selectedBillingPeriod, plansToShow],\n );\n\n const withUnitPriceRow = useMemo(\n () =>\n plansToShow.some((plan) => {\n return !!getPlanPrice(plan, selectedBillingPeriod, paywallLocale, locale, hasMonthlyPrice).unit;\n }),\n [selectedBillingPeriod, hasMonthlyPrice, locale, paywallLocale, plansToShow],\n );\n\n const withTiersRow = useMemo(() => {\n return (\n !isCustomerInCustomPlan &&\n plansToShow.some((plan) => {\n const tiers = getSelectedTier(plan, selectedBillingPeriod, currentSubscription, {});\n return Object.values(tiers).length > 0;\n })\n );\n }, [selectedBillingPeriod, currentSubscription, isCustomerInCustomPlan, plansToShow]);\n\n const withTrialLeftRow = plansToShow.some((plan) => {\n return plan.isCurrentCustomerPlan && plan.trialDaysLeft;\n });\n\n return (\n <PaywallContainer className=\"stigg-paywall-container\">\n <PaywallLayout className=\"stigg-paywall-layout\">\n <BillingPeriodPicker\n onBillingPeriodChanged={onBillingPeriodChanged}\n selectedBillingPeriod={selectedBillingPeriod}\n availableBillingPeriods={availableBillingPeriods}\n discountRate={discountRate}\n />\n\n <PaywallPlansContainer className=\"stigg-paywall-plans-layout\">\n {plansToShow.map((plan) => (\n <PlanOffering\n withUnitPriceRow={withUnitPriceRow}\n withTiersRow={withTiersRow}\n withTrialLeftRow={withTrialLeftRow}\n key={plan.id}\n shouldShowDescriptionSection={shouldShowDescriptionSection}\n hasMonthlyPrice={hasMonthlyPrice}\n hasAnnuallyPrice={hasAnnuallyPrice}\n plan={plan}\n withStartingAtRow={withStartingAtRow}\n currentSubscription={currentSubscription}\n billingPeriod={selectedBillingPeriod}\n isHighlighted={plan.id === highlightedPlanId}\n isCustomerOnTrial={isCustomerOnTrial}\n onPlanSelected={(intentionType: SubscribeIntentionType, billableFeatures: BillableFeature[]) =>\n handleOnSubscribe(plan, intentionType, billableFeatures)\n }\n paywallLocale={paywallLocale}\n locale={locale}\n customer={customer}\n isCustomerInCustomPlan={isCustomerInCustomPlan}\n selectDefaultTierIndex={selectDefaultTierIndex}\n />\n ))}\n </PaywallPlansContainer>\n <PoweredByStigg\n source=\"paywall\"\n align=\"end\"\n style={{ marginTop: 16 }}\n showWatermark={stigg.isWidgetWatermarkEnabled}\n />\n </PaywallLayout>\n </PaywallContainer>\n );\n};\n","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nvar runtime = (function (exports) {\n \"use strict\";\n\n var Op = Object.prototype;\n var hasOwn = Op.hasOwnProperty;\n var undefined; // More compressible than void 0.\n var $Symbol = typeof Symbol === \"function\" ? Symbol : {};\n var iteratorSymbol = $Symbol.iterator || \"@@iterator\";\n var asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\";\n var toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n\n function define(obj, key, value) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n return obj[key];\n }\n try {\n // IE 8 has a broken Object.defineProperty that only works on DOM objects.\n define({}, \"\");\n } catch (err) {\n define = function(obj, key, value) {\n return obj[key] = value;\n };\n }\n\n function wrap(innerFn, outerFn, self, tryLocsList) {\n // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator.\n var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;\n var generator = Object.create(protoGenerator.prototype);\n var context = new Context(tryLocsList || []);\n\n // The ._invoke method unifies the implementations of the .next,\n // .throw, and .return methods.\n generator._invoke = makeInvokeMethod(innerFn, self, context);\n\n return generator;\n }\n exports.wrap = wrap;\n\n // Try/catch helper to minimize deoptimizations. Returns a completion\n // record like context.tryEntries[i].completion. This interface could\n // have been (and was previously) designed to take a closure to be\n // invoked without arguments, but in all the cases we care about we\n // already have an existing method we want to call, so there's no need\n // to create a new function object. We can even get away with assuming\n // the method takes exactly one argument, since that happens to be true\n // in every case, so we don't have to touch the arguments object. The\n // only additional allocation required is the completion record, which\n // has a stable shape and so hopefully should be cheap to allocate.\n function tryCatch(fn, obj, arg) {\n try {\n return { type: \"normal\", arg: fn.call(obj, arg) };\n } catch (err) {\n return { type: \"throw\", arg: err };\n }\n }\n\n var GenStateSuspendedStart = \"suspendedStart\";\n var GenStateSuspendedYield = \"suspendedYield\";\n var GenStateExecuting = \"executing\";\n var GenStateCompleted = \"completed\";\n\n // Returning this object from the innerFn has the same effect as\n // breaking out of the dispatch switch statement.\n var ContinueSentinel = {};\n\n // Dummy constructor functions that we use as the .constructor and\n // .constructor.prototype properties for functions that return Generator\n // objects. For full spec compliance, you may wish to configure your\n // minifier not to mangle the names of these two functions.\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n\n // This is a polyfill for %IteratorPrototype% for environments that\n // don't natively support it.\n var IteratorPrototype = {};\n define(IteratorPrototype, iteratorSymbol, function () {\n return this;\n });\n\n var getProto = Object.getPrototypeOf;\n var NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n if (NativeIteratorPrototype &&\n NativeIteratorPrototype !== Op &&\n hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {\n // This environment has a native %IteratorPrototype%; use it instead\n // of the polyfill.\n IteratorPrototype = NativeIteratorPrototype;\n }\n\n var Gp = GeneratorFunctionPrototype.prototype =\n Generator.prototype = Object.create(IteratorPrototype);\n GeneratorFunction.prototype = GeneratorFunctionPrototype;\n define(Gp, \"constructor\", GeneratorFunctionPrototype);\n define(GeneratorFunctionPrototype, \"constructor\", GeneratorFunction);\n GeneratorFunction.displayName = define(\n GeneratorFunctionPrototype,\n toStringTagSymbol,\n \"GeneratorFunction\"\n );\n\n // Helper for defining the .next, .throw, and .return methods of the\n // Iterator interface in terms of a single ._invoke method.\n function defineIteratorMethods(prototype) {\n [\"next\", \"throw\", \"return\"].forEach(function(method) {\n define(prototype, method, function(arg) {\n return this._invoke(method, arg);\n });\n });\n }\n\n exports.isGeneratorFunction = function(genFun) {\n var ctor = typeof genFun === \"function\" && genFun.constructor;\n return ctor\n ? ctor === GeneratorFunction ||\n // For the native GeneratorFunction constructor, the best we can\n // do is to check its .name property.\n (ctor.displayName || ctor.name) === \"GeneratorFunction\"\n : false;\n };\n\n exports.mark = function(genFun) {\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);\n } else {\n genFun.__proto__ = GeneratorFunctionPrototype;\n define(genFun, toStringTagSymbol, \"GeneratorFunction\");\n }\n genFun.prototype = Object.create(Gp);\n return genFun;\n };\n\n // Within the body of any async function, `await x` is transformed to\n // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test\n // `hasOwn.call(value, \"__await\")` to determine if the yielded value is\n // meant to be awaited.\n exports.awrap = function(arg) {\n return { __await: arg };\n };\n\n function AsyncIterator(generator, PromiseImpl) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n if (record.type === \"throw\") {\n reject(record.arg);\n } else {\n var result = record.arg;\n var value = result.value;\n if (value &&\n typeof value === \"object\" &&\n hasOwn.call(value, \"__await\")) {\n return PromiseImpl.resolve(value.__await).then(function(value) {\n invoke(\"next\", value, resolve, reject);\n }, function(err) {\n invoke(\"throw\", err, resolve, reject);\n });\n }\n\n return PromiseImpl.resolve(value).then(function(unwrapped) {\n // When a yielded Promise is resolved, its final value becomes\n // the .value of the Promise<{value,done}> result for the\n // current iteration.\n result.value = unwrapped;\n resolve(result);\n }, function(error) {\n // If a rejected Promise was yielded, throw the rejection back\n // into the async generator function so it can be handled there.\n return invoke(\"throw\", error, resolve, reject);\n });\n }\n }\n\n var previousPromise;\n\n function enqueue(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new PromiseImpl(function(resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n\n return previousPromise =\n // If enqueue has been called before, then we want to wait until\n // all previous Promises have been resolved before calling invoke,\n // so that results are always delivered in the correct order. If\n // enqueue has not been called before, then it is important to\n // call invoke immediately, without waiting on a callback to fire,\n // so that the async generator function has the opportunity to do\n // any necessary setup in a predictable way. This predictability\n // is why the Promise constructor synchronously invokes its\n // executor callback, and why async functions synchronously\n // execute code before the first await. Since we implement simple\n // async functions in terms of async generators, it is especially\n // important to get this right, even though it requires care.\n previousPromise ? previousPromise.then(\n callInvokeWithMethodAndArg,\n // Avoid propagating failures to Promises returned by later\n // invocations of the iterator.\n callInvokeWithMethodAndArg\n ) : callInvokeWithMethodAndArg();\n }\n\n // Define the unified helper method that is used to implement .next,\n // .throw, and .return (see defineIteratorMethods).\n this._invoke = enqueue;\n }\n\n defineIteratorMethods(AsyncIterator.prototype);\n define(AsyncIterator.prototype, asyncIteratorSymbol, function () {\n return this;\n });\n exports.AsyncIterator = AsyncIterator;\n\n // Note that simple async functions are implemented on top of\n // AsyncIterator objects; they just return a Promise for the value of\n // the final result produced by the iterator.\n exports.async = function(innerFn, outerFn, self, tryLocsList, PromiseImpl) {\n if (PromiseImpl === void 0) PromiseImpl = Promise;\n\n var iter = new AsyncIterator(\n wrap(innerFn, outerFn, self, tryLocsList),\n PromiseImpl\n );\n\n return exports.isGeneratorFunction(outerFn)\n ? iter // If outerFn is a generator, return the full iterator.\n : iter.next().then(function(result) {\n return result.done ? result.value : iter.next();\n });\n };\n\n function makeInvokeMethod(innerFn, self, context) {\n var state = GenStateSuspendedStart;\n\n return function invoke(method, arg) {\n if (state === GenStateExecuting) {\n throw new Error(\"Generator is already running\");\n }\n\n if (state === GenStateCompleted) {\n if (method === \"throw\") {\n throw arg;\n }\n\n // Be forgiving, per 25.3.3.3.3 of the spec:\n // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume\n return doneResult();\n }\n\n context.method = method;\n context.arg = arg;\n\n while (true) {\n var delegate = context.delegate;\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n\n if (context.method === \"next\") {\n // Setting context._sent for legacy support of Babel's\n // function.sent implementation.\n context.sent = context._sent = context.arg;\n\n } else if (context.method === \"throw\") {\n if (state === GenStateSuspendedStart) {\n state = GenStateCompleted;\n throw context.arg;\n }\n\n context.dispatchException(context.arg);\n\n } else if (context.method === \"return\") {\n context.abrupt(\"return\", context.arg);\n }\n\n state = GenStateExecuting;\n\n var record = tryCatch(innerFn, self, context);\n if (record.type === \"normal\") {\n // If an exception is thrown from innerFn, we leave state ===\n // GenStateExecuting and loop back for another invocation.\n state = context.done\n ? GenStateCompleted\n : GenStateSuspendedYield;\n\n if (record.arg === ContinueSentinel) {\n continue;\n }\n\n return {\n value: record.arg,\n done: context.done\n };\n\n } else if (record.type === \"throw\") {\n state = GenStateCompleted;\n // Dispatch the exception by looping back around to the\n // context.dispatchException(context.arg) call above.\n context.method = \"throw\";\n context.arg = record.arg;\n }\n }\n };\n }\n\n // Call delegate.iterator[context.method](context.arg) and handle the\n // result, either by returning a { value, done } result from the\n // delegate iterator, or by modifying context.method and context.arg,\n // setting context.delegate to null, and returning the ContinueSentinel.\n function maybeInvokeDelegate(delegate, context) {\n var method = delegate.iterator[context.method];\n if (method === undefined) {\n // A .throw or .return when the delegate iterator has no .throw\n // method always terminates the yield* loop.\n context.delegate = null;\n\n if (context.method === \"throw\") {\n // Note: [\"return\"] must be used for ES3 parsing compatibility.\n if (delegate.iterator[\"return\"]) {\n // If the delegate iterator has a return method, give it a\n // chance to clean up.\n context.method = \"return\";\n context.arg = undefined;\n maybeInvokeDelegate(delegate, context);\n\n if (context.method === \"throw\") {\n // If maybeInvokeDelegate(context) changed context.method from\n // \"return\" to \"throw\", let that override the TypeError below.\n return ContinueSentinel;\n }\n }\n\n context.method = \"throw\";\n context.arg = new TypeError(\n \"The iterator does not provide a 'throw' method\");\n }\n\n return ContinueSentinel;\n }\n\n var record = tryCatch(method, delegate.iterator, context.arg);\n\n if (record.type === \"throw\") {\n context.method = \"throw\";\n context.arg = record.arg;\n context.delegate = null;\n return ContinueSentinel;\n }\n\n var info = record.arg;\n\n if (! info) {\n context.method = \"throw\";\n context.arg = new TypeError(\"iterator result is not an object\");\n context.delegate = null;\n return ContinueSentinel;\n }\n\n if (info.done) {\n // Assign the result of the finished delegate to the temporary\n // variable specified by delegate.resultName (see delegateYield).\n context[delegate.resultName] = info.value;\n\n // Resume execution at the desired location (see delegateYield).\n context.next = delegate.nextLoc;\n\n // If context.method was \"throw\" but the delegate handled the\n // exception, let the outer generator proceed normally. If\n // context.method was \"next\", forget context.arg since it has been\n // \"consumed\" by the delegate iterator. If context.method was\n // \"return\", allow the original .return call to continue in the\n // outer generator.\n if (context.method !== \"return\") {\n context.method = \"next\";\n context.arg = undefined;\n }\n\n } else {\n // Re-yield the result returned by the delegate method.\n return info;\n }\n\n // The delegate iterator is finished, so forget it and continue with\n // the outer generator.\n context.delegate = null;\n return ContinueSentinel;\n }\n\n // Define Generator.prototype.{next,throw,return} in terms of the\n // unified ._invoke helper method.\n defineIteratorMethods(Gp);\n\n define(Gp, toStringTagSymbol, \"Generator\");\n\n // A Generator should always return itself as the iterator object when the\n // @@iterator function is called on it. Some browsers' implementations of the\n // iterator prototype chain incorrectly implement this, causing the Generator\n // object to not be returned from this call. This ensures that doesn't happen.\n // See https://github.com/facebook/regenerator/issues/274 for more details.\n define(Gp, iteratorSymbol, function() {\n return this;\n });\n\n define(Gp, \"toString\", function() {\n return \"[object Generator]\";\n });\n\n function pushTryEntry(locs) {\n var entry = { tryLoc: locs[0] };\n\n if (1 in locs) {\n entry.catchLoc = locs[1];\n }\n\n if (2 in locs) {\n entry.finallyLoc = locs[2];\n entry.afterLoc = locs[3];\n }\n\n this.tryEntries.push(entry);\n }\n\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\";\n delete record.arg;\n entry.completion = record;\n }\n\n function Context(tryLocsList) {\n // The root entry object (effectively a try statement without a catch\n // or a finally block) gives us a place to store values thrown from\n // locations where there is no enclosing try statement.\n this.tryEntries = [{ tryLoc: \"root\" }];\n tryLocsList.forEach(pushTryEntry, this);\n this.reset(true);\n }\n\n exports.keys = function(object) {\n var keys = [];\n for (var key in object) {\n keys.push(key);\n }\n keys.reverse();\n\n // Rather than returning an object with a next method, we keep\n // things simple and return the next function itself.\n return function next() {\n while (keys.length) {\n var key = keys.pop();\n if (key in object) {\n next.value = key;\n next.done = false;\n return next;\n }\n }\n\n // To avoid creating an additional object, we just hang the .value\n // and .done properties off the next function object itself. This\n // also ensures that the minifier will not anonymize the function.\n next.done = true;\n return next;\n };\n };\n\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) {\n return iteratorMethod.call(iterable);\n }\n\n if (typeof iterable.next === \"function\") {\n return iterable;\n }\n\n if (!isNaN(iterable.length)) {\n var i = -1, next = function next() {\n while (++i < iterable.length) {\n if (hasOwn.call(iterable, i)) {\n next.value = iterable[i];\n next.done = false;\n return next;\n }\n }\n\n next.value = undefined;\n next.done = true;\n\n return next;\n };\n\n return next.next = next;\n }\n }\n\n // Return an iterator with no values.\n return { next: doneResult };\n }\n exports.values = values;\n\n function doneResult() {\n return { value: undefined, done: true };\n }\n\n Context.prototype = {\n constructor: Context,\n\n reset: function(skipTempReset) {\n this.prev = 0;\n this.next = 0;\n // Resetting context._sent for legacy support of Babel's\n // function.sent implementation.\n this.sent = this._sent = undefined;\n this.done = false;\n this.delegate = null;\n\n this.method = \"next\";\n this.arg = undefined;\n\n this.tryEntries.forEach(resetTryEntry);\n\n if (!skipTempReset) {\n for (var name in this) {\n // Not sure about the optimal order of these conditions:\n if (name.charAt(0) === \"t\" &&\n hasOwn.call(this, name) &&\n !isNaN(+name.slice(1))) {\n this[name] = undefined;\n }\n }\n }\n },\n\n stop: function() {\n this.done = true;\n\n var rootEntry = this.tryEntries[0];\n var rootRecord = rootEntry.completion;\n if (rootRecord.type === \"throw\") {\n throw rootRecord.arg;\n }\n\n return this.rval;\n },\n\n dispatchException: function(exception) {\n if (this.done) {\n throw exception;\n }\n\n var context = this;\n function handle(loc, caught) {\n record.type = \"throw\";\n record.arg = exception;\n context.next = loc;\n\n if (caught) {\n // If the dispatched exception was caught by a catch block,\n // then let that catch block handle the exception normally.\n context.method = \"next\";\n context.arg = undefined;\n }\n\n return !! caught;\n }\n\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n var record = entry.completion;\n\n if (entry.tryLoc === \"root\") {\n // Exception thrown outside of any try block that could handle\n // it, so set the completion value of the entire function to\n // throw the exception.\n return handle(\"end\");\n }\n\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\");\n var hasFinally = hasOwn.call(entry, \"finallyLoc\");\n\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n } else if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n }\n\n } else if (hasFinally) {\n if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else {\n throw new Error(\"try statement without catch or finally\");\n }\n }\n }\n },\n\n abrupt: function(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc <= this.prev &&\n hasOwn.call(entry, \"finallyLoc\") &&\n this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n\n if (finallyEntry &&\n (type === \"break\" ||\n type === \"continue\") &&\n finallyEntry.tryLoc <= arg &&\n arg <= finallyEntry.finallyLoc) {\n // Ignore the finally entry if control is not jumping to a\n // location outside the try/catch block.\n finallyEntry = null;\n }\n\n var record = finallyEntry ? finallyEntry.completion : {};\n record.type = type;\n record.arg = arg;\n\n if (finallyEntry) {\n this.method = \"next\";\n this.next = finallyEntry.finallyLoc;\n return ContinueSentinel;\n }\n\n return this.complete(record);\n },\n\n complete: function(record, afterLoc) {\n if (record.type === \"throw\") {\n throw record.arg;\n }\n\n if (record.type === \"break\" ||\n record.type === \"continue\") {\n this.next = record.arg;\n } else if (record.type === \"return\") {\n this.rval = this.arg = record.arg;\n this.method = \"return\";\n this.next = \"end\";\n } else if (record.type === \"normal\" && afterLoc) {\n this.next = afterLoc;\n }\n\n return ContinueSentinel;\n },\n\n finish: function(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) {\n this.complete(entry.completion, entry.afterLoc);\n resetTryEntry(entry);\n return ContinueSentinel;\n }\n }\n },\n\n \"catch\": function(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n if (record.type === \"throw\") {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n return thrown;\n }\n }\n\n // The context.catch method must only be called with a location\n // argument that corresponds to a known catch block.\n throw new Error(\"illegal catch attempt\");\n },\n\n delegateYield: function(iterable, resultName, nextLoc) {\n this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n };\n\n if (this.method === \"next\") {\n // Deliberately forget the last sent value so that we don't\n // accidentally pass it on to the delegate.\n this.arg = undefined;\n }\n\n return ContinueSentinel;\n }\n };\n\n // Regardless of whether this script is executing as a CommonJS module\n // or not, return the runtime object so that we can declare the variable\n // regeneratorRuntime in the outer scope, which allows this module to be\n // injected easily by `bin/regenerator --include-runtime script.js`.\n return exports;\n\n}(\n // If this script is executing as a CommonJS module, use module.exports\n // as the regeneratorRuntime namespace. Otherwise create a new empty\n // object. Either way, the resulting object will be used to initialize\n // the regeneratorRuntime variable at the top of this file.\n typeof module === \"object\" ? module.exports : {}\n));\n\ntry {\n regeneratorRuntime = runtime;\n} catch (accidentalStrictMode) {\n // This module should not be running in strict mode, so the above\n // assignment should always work unless something is misconfigured. Just\n // in case runtime.js accidentally runs in strict mode, in modern engines\n // we can explicitly access globalThis. In older engines we can escape\n // strict mode using a global Function call. This could conceivably fail\n // if a Content Security Policy forbids using Function, but in that case\n // the proper solution is to fix the accidental strict mode problem. If\n // you've misconfigured your bundler to force strict mode and applied a\n // CSP to forbid Function, and you're not willing to fix either of those\n // problems, please detail your unique predicament in a GitHub issue.\n if (typeof globalThis === \"object\") {\n globalThis.regeneratorRuntime = runtime;\n } else {\n Function(\"r\", \"regeneratorRuntime = r\")(runtime);\n }\n}\n","export interface Logger {\n log: (message: string, object?: Record<string, string>) => void;\n debug: (message: string, object?: Record<string, string>) => void;\n error: (message: string, error?: Error, ...params: Record<string, string>[]) => void;\n}\n\nexport class LoggerService implements Logger {\n error(message: string, error?: Error, ...params: Record<string, string>[]): void {\n console.error(message, error || {}, params);\n }\n\n log(message: string, object?: Record<string, string>): void {\n console.log(message, object || {});\n }\n\n debug(message: string, object?: Record<string, string> | undefined): void {\n console.debug(message, object || {});\n }\n}\n\n// Export a singleton logger service, in the future we might allow to user to configure external logger\nexport default new LoggerService();\n","import React, { useEffect, useState, PropsWithChildren, useContext, useRef } from 'react';\nimport * as StiggJs from '@stigg/js-client-sdk';\nimport Stigg, { EntitlementsFallback } from '@stigg/js-client-sdk';\nimport { SkeletonTheme } from 'react-loading-skeleton';\nimport { CustomizedTheme } from '../theme/Theme';\nimport logger from '../services/logger';\n\nexport interface StiggContextValue {\n stigg: StiggJs.StiggClient;\n isInitialized: boolean;\n locale: string;\n updatedAt?: Date;\n customerPortalUpdatedAt?: Date;\n refreshData: () => Promise<void>;\n theme?: CustomizedTheme;\n}\n\nexport const StiggContext = React.createContext<StiggContextValue | null>(null);\nStiggContext.displayName = 'StiggContext';\n\nexport type StiggProviderProps = {\n apiKey: string;\n baseUri?: string;\n baseEdgeUri?: string;\n enableEdge?: boolean;\n entitlementsFallback?: EntitlementsFallback;\n customerId?: string;\n customerToken?: string;\n resourceId?: string;\n theme?: CustomizedTheme;\n locale?: string;\n useEntitlementPolling?: boolean;\n entitlementPollingInterval?: number;\n stiggClient?: StiggJs.StiggClient;\n};\n\nconst DEFAULT_LOCALE = 'en-US';\n\nexport const StiggProvider: React.FC<PropsWithChildren<StiggProviderProps>> = ({\n apiKey,\n baseUri,\n baseEdgeUri,\n enableEdge,\n customerId,\n customerToken,\n resourceId,\n theme,\n locale,\n useEntitlementPolling,\n entitlementPollingInterval,\n entitlementsFallback,\n stiggClient,\n children,\n}) => {\n const currentApiKey = useRef(apiKey);\n const initializeParams = {\n apiKey,\n customerId,\n customerToken,\n resourceId,\n baseUri,\n baseEdgeUri,\n enableEdge,\n entitlementsFallback,\n useEntitlementPolling,\n entitlementPollingInterval,\n };\n const [ctx, setContext] = useState<StiggContextValue>(() => ({\n stigg:\n stiggClient ??\n Stigg.initialize({\n ...initializeParams,\n lazyLoad: true,\n }),\n locale: locale || DEFAULT_LOCALE,\n isInitialized: false,\n theme,\n refreshData: async () => {\n setContext((ctx) => ({ ...ctx, customerPortalUpdatedAt: new Date() }));\n await ctx.stigg.refresh();\n },\n }));\n\n useEffect(() => {\n let isMounted = true;\n\n const safeSetContext = (setContextFunc: React.SetStateAction<StiggContextValue>) => {\n if (isMounted) {\n setContext(setContextFunc);\n }\n };\n\n const onEntitlementsUpdated = () => safeSetContext((ctx) => ({ ...ctx, updatedAt: new Date() }));\n\n const setStiggInstance = (stigg: StiggJs.StiggClient) =>\n safeSetContext((ctx) => {\n if (ctx.stigg) {\n ctx.stigg.removeListener('entitlementsUpdated', onEntitlementsUpdated);\n }\n stigg.addListener('entitlementsUpdated', onEntitlementsUpdated);\n\n return {\n ...ctx,\n stigg,\n isInitialized: true,\n updatedAt: new Date(),\n };\n });\n\n const loadStiggClient = async () => {\n let stiggClient = ctx.stigg;\n if (apiKey !== currentApiKey.current) {\n logger.log('Updating stigg client', { apiKey });\n currentApiKey.current = apiKey;\n stiggClient = Stigg.initialize({\n ...initializeParams,\n });\n safeSetContext((ctx) => ({ ...ctx, isInitialized: false, updatedAt: new Date() }));\n }\n await stiggClient.waitForInitialization();\n setStiggInstance(stiggClient);\n };\n\n void loadStiggClient();\n\n return () => {\n isMounted = false;\n ctx.stigg.removeListener('entitlementsUpdated', onEntitlementsUpdated);\n ctx.stigg.clearCustomer();\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [apiKey]);\n\n useEffect(() => {\n const stiggClient = ctx.stigg;\n if (customerId) {\n void stiggClient.setCustomerId(customerId, customerToken, resourceId);\n } else {\n stiggClient.clearCustomer();\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [customerId, customerToken, resourceId]);\n\n useEffect(() => {\n setContext((ctx) => ({ ...ctx, theme }));\n }, [theme]);\n\n return (\n <StiggContext.Provider value={ctx}>\n <SkeletonTheme baseColor=\"#F5F6F9\" highlightColor=\"#e5e6ea\">\n {children}\n </SkeletonTheme>\n </StiggContext.Provider>\n );\n};\n\nexport const useStiggContext = (): StiggContextValue => {\n const ctx = useContext(StiggContext);\n if (!ctx) {\n throw new Error('Could not find Stigg context; You need to wrap your app in an <StiggProvider> component.');\n }\n return ctx;\n};\n","import { BillingPeriod, Plan, Subscription, SubscriptionStatus } from '@stigg/js-client-sdk';\nimport { countBy, uniq } from 'lodash';\n\nexport function computeBillingPeriods(\n plans: Plan[],\n activeSubscriptions?: Subscription[] | null,\n preferredBillingPeriod?: BillingPeriod,\n): { defaultBillingPeriod: BillingPeriod; availableBillingPeriods: BillingPeriod[] } {\n const billingPeriods = plans.flatMap((x) => x.pricePoints).map((x) => x.billingPeriod);\n const counts = countBy(billingPeriods);\n\n const availableBillingPeriods = uniq(billingPeriods);\n let defaultBillingPeriod: BillingPeriod | undefined;\n\n if (preferredBillingPeriod && availableBillingPeriods.includes(preferredBillingPeriod)) {\n defaultBillingPeriod = preferredBillingPeriod;\n } else if (activeSubscriptions) {\n const activeSubscription = activeSubscriptions.find((x) => x.status === SubscriptionStatus.Active);\n\n if (activeSubscription && activeSubscription.prices.length > 0) {\n defaultBillingPeriod = activeSubscription?.prices[0].billingPeriod;\n }\n }\n\n if (!defaultBillingPeriod) {\n defaultBillingPeriod =\n (counts[BillingPeriod.Monthly] || 0) > (counts[BillingPeriod.Annually] || 0)\n ? BillingPeriod.Monthly\n : BillingPeriod.Annually;\n }\n\n return { defaultBillingPeriod, availableBillingPeriods };\n}\n","import moment from 'moment';\n\nexport function calculateTrialDaysLeft(trialEndDate: Date) {\n return moment.utc(trialEndDate).diff(moment.utc(), 'days', false) + 1;\n}\n","import { FontWeight, TypographyConfiguration } from '@stigg/js-client-sdk';\n\nexport const defaultCheckoutTypography: TypographyConfiguration = {\n h1: {\n fontSize: 24,\n fontWeight: FontWeight.Bold,\n },\n h2: {\n fontSize: 16,\n fontWeight: FontWeight.Normal,\n },\n h3: {\n fontSize: 16,\n fontWeight: FontWeight.Normal,\n },\n body: {\n fontSize: 14,\n fontWeight: FontWeight.Normal,\n },\n};\n","import {\n Alignment,\n CheckoutConfiguration,\n CustomerPortalConfiguration,\n FontWeight as JSFontWeight,\n PaywallConfiguration,\n TypographyConfiguration,\n} from '@stigg/js-client-sdk';\nimport { CustomizedTheme } from '../../theme/Theme';\nimport { HorizontalAlignment, FontWeight } from '../../theme/types';\nimport { defaultCheckoutTypography } from '../checkout/configurations/typography';\n\nfunction addCssUnits(value?: number | null, unit = 'px') {\n if (!value) {\n return undefined;\n }\n return `${value}${unit}`;\n}\n\nfunction mapFontWeight(defaultValue: FontWeight, fontWeight?: JSFontWeight | null): FontWeight {\n if (!fontWeight) {\n return defaultValue;\n }\n\n switch (fontWeight) {\n case JSFontWeight.Normal:\n return 'normal';\n case JSFontWeight.Bold:\n return 'bold';\n default:\n return 'normal';\n }\n}\n\nexport function mapTypography(\n typography?: TypographyConfiguration | null,\n defaultTypography?: TypographyConfiguration | null,\n): CustomizedTheme['typography'] {\n return {\n fontFamilyUrl: typography?.fontFamily || undefined,\n h1: {\n fontSize: addCssUnits(typography?.h1?.fontSize || defaultTypography?.h1?.fontSize),\n fontWeight: mapFontWeight('bold', typography?.h1?.fontWeight || defaultTypography?.h1?.fontWeight),\n },\n h2: {\n fontSize: addCssUnits(typography?.h2?.fontSize || defaultTypography?.h2?.fontSize),\n fontWeight: mapFontWeight('normal', defaultTypography?.h2?.fontWeight),\n },\n h3: {\n fontSize: addCssUnits(typography?.h3?.fontSize || defaultTypography?.h3?.fontSize),\n fontWeight: mapFontWeight('normal', typography?.h3?.fontWeight || defaultTypography?.h3?.fontWeight),\n },\n body: {\n fontSize: addCssUnits(typography?.body?.fontSize || defaultTypography?.body?.fontSize),\n fontWeight: mapFontWeight('normal', typography?.body?.fontWeight || defaultTypography?.body?.fontWeight),\n },\n };\n}\n\nfunction mapAlignment(alignment?: Alignment | null): HorizontalAlignment | undefined {\n if (!alignment) {\n return undefined;\n }\n\n switch (alignment) {\n case Alignment.Left:\n return 'left';\n case Alignment.Center:\n return 'center';\n case Alignment.Right:\n return 'right';\n default: {\n return undefined;\n }\n }\n}\n\nexport function mapCustomerPortalConfiguration(configuration: CustomerPortalConfiguration): CustomizedTheme {\n const { palette, typography } = configuration;\n return {\n palette: {\n primary: palette?.primary || undefined,\n backgroundPaper: palette?.paywallBackgroundColor || undefined,\n outlinedBorder: palette?.borderColor || undefined,\n backgroundHighlight: palette?.currentPlanBackground || undefined,\n text: {\n primary: palette?.textColor || undefined,\n },\n },\n typography: mapTypography(typography),\n };\n}\n\nexport function mapPaywallConfiguration(paywallConfiguration: PaywallConfiguration): CustomizedTheme {\n const { palette, layout, customCss, typography } = paywallConfiguration;\n return {\n customCss: customCss || undefined,\n palette: {\n primary: palette?.primary || undefined,\n backgroundPaper: palette?.backgroundColor || undefined,\n outlinedBorder: palette?.borderColor || undefined,\n backgroundHighlight: palette?.currentPlanBackground || undefined,\n text: {\n primary: palette?.textColor || undefined,\n },\n },\n typography: mapTypography(typography),\n layout: {\n ctaAlignment: mapAlignment(layout?.alignment),\n headerAlignment: mapAlignment(layout?.alignment),\n descriptionAlignment: mapAlignment(layout?.alignment),\n planMaxWidth: addCssUnits(layout?.planWidth),\n planMinWidth: addCssUnits(layout?.planWidth),\n planMargin: addCssUnits(layout?.planMargin),\n planPadding: addCssUnits(layout?.planPadding),\n },\n };\n}\n\nexport function mapCheckoutConfiguration(configuration: CheckoutConfiguration): CustomizedTheme {\n const { palette, typography } = configuration;\n return {\n palette: {\n primary: palette?.primary || undefined,\n backgroundPaper: palette?.backgroundColor || undefined,\n outlinedBorder: palette?.borderColor || undefined,\n text: {\n primary: palette?.textColor || undefined,\n },\n backgroundHighlight: palette?.summaryBackgroundColor || undefined,\n },\n typography: mapTypography(typography, defaultCheckoutTypography),\n };\n}\n","import {\n BillingPeriod,\n SubscriptionStatus,\n Paywall,\n Plan,\n Subscription,\n SubscriptionScheduleType,\n} from '@stigg/js-client-sdk';\nimport isNil from 'lodash/isNil';\nimport sortBy from 'lodash/sortBy';\nimport { PaywallPlan } from '../types';\nimport { calculateTrialDaysLeft } from './calculateTrialDaysLeft';\nimport { BillingPeriodChangeVariables, DeepPartial, DowngradeChangeVariables } from '../../../types';\nimport { StiggTheme } from '../../../theme/types';\nimport { mapPaywallConfiguration } from '../../common/mapExternalTheme';\n\nfunction getCustomerSubscriptionDetails(activeSubscriptions?: Subscription[] | null) {\n let isCustomerOnTrial = true;\n let currentSubscription: Subscription | null =\n activeSubscriptions?.find((s) => s.status === SubscriptionStatus.InTrial) || null;\n let currentPlan = currentSubscription?.plan;\n const trialDaysLeft = currentSubscription?.trialEndDate\n ? calculateTrialDaysLeft(currentSubscription.trialEndDate)\n : undefined;\n if (!currentPlan) {\n isCustomerOnTrial = false;\n currentSubscription = activeSubscriptions?.find((s) => s.status === SubscriptionStatus.Active) || null;\n currentPlan = currentSubscription?.plan;\n }\n\n return {\n currentSubscription,\n currentPlan,\n isCustomerOnTrial,\n trialDaysLeft,\n };\n}\n\ntype PaywallData = {\n currentPlan?: Plan;\n currentSubscription: Subscription | null;\n isCustomerOnTrial: boolean;\n plans: PaywallPlan[];\n paywallConfiguration?: DeepPartial<StiggTheme>;\n};\n\nexport function mapPaywallData(paywall: Paywall | null, showOnlyEligiblePlans?: boolean): PaywallData {\n const { plans, currency, configuration, customer, activeSubscriptions, paywallCalculatedPricePoints } = paywall || {};\n const { currentSubscription, currentPlan, isCustomerOnTrial, trialDaysLeft } =\n getCustomerSubscriptionDetails(activeSubscriptions);\n\n const scheduledUpdates = currentSubscription?.scheduledUpdates || [];\n const currentCustomerPlanBillingPeriod = currentSubscription?.price?.billingPeriod;\n const downgradeSchedule = scheduledUpdates.find(\n ({ subscriptionScheduleType }) => subscriptionScheduleType === SubscriptionScheduleType.Downgrade,\n );\n const billingChangedSchedule = scheduledUpdates.find(\n ({ subscriptionScheduleType }) => subscriptionScheduleType === SubscriptionScheduleType.BillingPeriod,\n );\n\n let paywallPlans: PaywallPlan[] = sortBy(plans, (plan) => plan.order).map((plan) => {\n const eligibleForProductTrial = customer?.eligibleForTrial?.find(\n (productTrial) => productTrial.productId === plan.product.id,\n );\n const isCurrentCustomerPlan = plan.id === currentPlan?.id;\n\n const isNextPlan = (currentBillingPeriod: BillingPeriod) => {\n const downgradeVariables = downgradeSchedule?.scheduleVariables as DowngradeChangeVariables;\n const billingChangedVariables = billingChangedSchedule?.scheduleVariables as BillingPeriodChangeVariables;\n const isPlanHasBillingPeriodPrice = plan.pricePoints.some(\n (price) => price.billingPeriod === currentBillingPeriod,\n );\n\n return downgradeSchedule\n ? downgradeSchedule.targetPackage?.refId === plan.id &&\n (!isPlanHasBillingPeriodPrice || downgradeVariables.billingPeriod === currentBillingPeriod)\n : billingChangedSchedule && isCurrentCustomerPlan\n ? billingChangedVariables.billingPeriod === currentBillingPeriod\n : false;\n };\n\n return {\n ...plan,\n paywallCalculatedPricePoints: paywallCalculatedPricePoints?.filter((pricePoint) => pricePoint.planId === plan.id),\n isTriable: !isNil(plan.defaultTrialConfig) && (!eligibleForProductTrial || eligibleForProductTrial.eligible),\n isCurrentCustomerPlan,\n currentCustomerPlanBillingPeriod,\n isUpcomingPlan: false,\n trialDaysLeft,\n isNextPlan,\n paywallCurrency: currency,\n scheduledUpdate: downgradeSchedule || billingChangedSchedule,\n };\n });\n if (plans && currentPlan) {\n const currentPlanOrder = currentPlan && plans?.find((x) => x.id === currentPlan?.id)?.order;\n if (!isNil(currentPlanOrder)) {\n paywallPlans = paywallPlans.map<PaywallPlan>((plan) => ({\n ...plan,\n isLowerThanCurrentPlan: currentPlanOrder > plan.order,\n }));\n if (showOnlyEligiblePlans) {\n paywallPlans = paywallPlans.filter((plan) => plan.order >= currentPlanOrder);\n }\n }\n }\n const paywallConfiguration = configuration ? mapPaywallConfiguration(configuration) : undefined;\n\n return {\n currentPlan,\n currentSubscription,\n isCustomerOnTrial,\n plans: paywallPlans,\n paywallConfiguration,\n };\n}\n","import { BillingPeriod, Paywall } from '@stigg/js-client-sdk';\nimport { useEffect, useState } from 'react';\nimport logger from '../../../services/logger';\nimport { useStiggContext } from '../../StiggProvider';\nimport { PaywallData } from '../types';\nimport { computeBillingPeriods } from '../utils/computeDefaultBillingPeriod';\nimport { mapPaywallData } from '../utils/mapPaywallData';\n\ntype UseLoadPaywallDataProps = {\n productId?: string;\n resourceId?: string;\n showOnlyEligiblePlans?: boolean;\n billingCountryCode?: string;\n preferredBillingPeriod?: BillingPeriod;\n};\n\nexport function useLoadPaywallData({\n productId,\n resourceId,\n showOnlyEligiblePlans,\n billingCountryCode,\n preferredBillingPeriod,\n}: UseLoadPaywallDataProps): PaywallData {\n const { stigg, locale } = useStiggContext();\n const [selectedBillingPeriod, setSelectedBillingPeriod] = useState(BillingPeriod.Annually);\n const [availableBillingPeriods, setAvailableBillingPeriods] = useState<BillingPeriod[]>([]);\n const [paywall, setPaywall] = useState<Paywall | null>(null);\n const [isLoading, setIsLoading] = useState<boolean>(true);\n\n useEffect(() => {\n const loadPaywall = async () => {\n try {\n setIsLoading(true);\n\n await stigg.waitForInitialization();\n const paywallResult = await stigg.getPaywall({\n productId,\n resourceId,\n billingCountryCode,\n });\n const { availableBillingPeriods, defaultBillingPeriod } = computeBillingPeriods(\n paywallResult.plans,\n paywallResult.activeSubscriptions,\n preferredBillingPeriod,\n );\n\n setPaywall(paywallResult);\n setAvailableBillingPeriods(availableBillingPeriods);\n setSelectedBillingPeriod(defaultBillingPeriod);\n } catch (err) {\n logger.error(`Failed to load paywall ${(err as any)?.message}`, err as any);\n } finally {\n setIsLoading(false);\n }\n };\n\n void loadPaywall();\n }, [stigg, productId, stigg.isCustomerLoaded, billingCountryCode, resourceId, preferredBillingPeriod]);\n\n const paywallData = mapPaywallData(paywall, showOnlyEligiblePlans);\n\n return {\n customer: paywall?.customer || null,\n isLoading,\n selectedBillingPeriod,\n setSelectedBillingPeriod,\n availableBillingPeriods,\n locale,\n configuration: paywallData.paywallConfiguration,\n ...paywallData,\n };\n}\n","import {\n BillingPeriod,\n PaywallCalculatedPricePoint,\n PaywallCurrency,\n Plan,\n Price,\n PriceTierFragment,\n} from '@stigg/js-client-sdk';\nimport merge from 'lodash/merge';\nimport { DeepPartial } from '../../types';\nimport { PlanPriceText } from '../utils/getPlanPrice';\nimport { PaywallPlan } from './types';\n\nexport { PlanPriceText } from '../utils/getPlanPrice';\n\nexport type CurrentPlanParams = {\n plan: Plan;\n selectedBillingPeriod: BillingPeriod;\n};\n\nexport type PaywallLocalization = {\n highlightChip: string;\n entitlementsTitle?: (plan: PaywallPlan) => string;\n planCTAButton: {\n upgrade: string | ((plan: PaywallPlan) => string);\n downgrade: string | ((plan: PaywallPlan) => string);\n startTrial: (plan: PaywallPlan) => string;\n custom: ((data: CurrentPlanParams) => string) | string;\n currentPlan: string;\n startNew: string;\n switchToBillingPeriod: (billingPeriod: BillingPeriod) => string;\n cancelScheduledUpdate: string;\n };\n price: {\n startingAtCaption: string;\n billingPeriod?: (billingPeriod: BillingPeriod) => string;\n pricePeriod: (billingPeriod: BillingPeriod) => string;\n custom: ((data: CurrentPlanParams) => string) | string;\n priceNotSet: string;\n free: PlanPriceText | ((currency?: PaywallCurrency) => PlanPriceText);\n paid?: (priceData: {\n planPrices: Price[];\n paywallCalculatedPrice?: PaywallCalculatedPricePoint;\n plan: Plan;\n selectedBillingPeriod: BillingPeriod;\n selectedTier?: PriceTierFragment;\n }) => PlanPriceText;\n };\n};\n\nexport function getResolvedPaywallLocalize(localizeOverride?: DeepPartial<PaywallLocalization>) {\n const paywallDefaultLocalization: PaywallLocalization = {\n highlightChip: 'Recommended',\n planCTAButton: {\n upgrade: 'Upgrade',\n downgrade: 'Downgrade',\n startTrial: (plan: PaywallPlan) => `Start ${plan.defaultTrialConfig?.duration} day trial`,\n custom: 'Contact us',\n currentPlan: 'Current plan',\n startNew: 'Get started',\n switchToBillingPeriod: (billingPeriod) => {\n return billingPeriod === BillingPeriod.Monthly ? 'Switch to monthly billing' : 'Switch to annual billing';\n },\n cancelScheduledUpdate: 'Cancel',\n },\n price: {\n startingAtCaption: 'Starts at',\n pricePeriod: (billingPeriod: BillingPeriod) => (billingPeriod === BillingPeriod.Monthly ? '/ month' : '/ year'),\n free: (currency) => ({\n price: `${currency?.symbol}0`,\n }),\n custom: 'Custom',\n priceNotSet: 'Price not set',\n },\n };\n return merge(paywallDefaultLocalization, localizeOverride);\n}\n","import React from 'react';\nimport styled from '@emotion/styled/macro';\nimport Skeleton from 'react-loading-skeleton';\nimport CheckUrl from '../../assets/check-stigg.svg';\n\nconst SkeletonContainer = styled.div`\n display: flex;\n flex-direction: column;\n align-items: center;\n`;\n\nconst EntitlementCheckIcon = styled(CheckUrl)`\n margin-right: 16px;\n`;\n\nconst PlanOfferingSkeleton = styled.div`\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n gap: 20px;\n border-radius: 10px;\n padding: ${({ theme }) => theme.stigg.layout.planPadding};\n background-color: ${({ theme }) => theme.stigg.palette.backgroundPaper};\n min-width: ${({ theme }) => theme.stigg.layout.planMinWidth};\n max-width: ${({ theme }) => theme.stigg.layout.planMaxWidth};\n min-height: 450px;\n border: ${({ theme }) => `1px solid ${theme.stigg.palette.outlinedBorder}`};\n`;\n\nconst PlansContainer = styled.div`\n display: flex;\n gap: ${({ theme }) => theme.stigg.layout.planMargin};\n flex-wrap: wrap;\n justify-content: center;\n`;\n\nconst EntitlementContainer = styled.div`\n display: flex;\n align-items: center;\n margin-bottom: 12px;\n`;\n\nconst FooterSkeletonLoader = styled.div`\n margin-top: auto;\n`;\n\nconst BillingPeriodLoader = styled.div`\n width: 150px;\n margin-bottom: ${({ theme }) => theme.stigg.layout.switchBottomSpacing};\n padding: 12px 12px;\n border-radius: 10px;\n background-color: white;\n border: ${({ theme }) => `1px solid ${theme.stigg.palette.outlinedBorder}`};\n`;\n\nfunction PlanOfferingLoader() {\n return (\n <PlanOfferingSkeleton>\n <Skeleton width={120} borderRadius={4} />\n <Skeleton circle width={40} height={40} />\n <Skeleton style={{ marginBottom: 33 }} width={120} borderRadius={4} />\n\n <EntitlementContainer>\n <EntitlementCheckIcon />\n <Skeleton width={120} borderRadius={4} />\n </EntitlementContainer>\n <EntitlementContainer>\n <EntitlementCheckIcon />\n <Skeleton width={120} borderRadius={4} />\n </EntitlementContainer>\n <EntitlementContainer>\n <EntitlementCheckIcon />\n <Skeleton width={120} borderRadius={4} />\n </EntitlementContainer>\n\n <FooterSkeletonLoader>\n <Skeleton height={50} borderRadius={4} />\n </FooterSkeletonLoader>\n </PlanOfferingSkeleton>\n );\n}\n\nexport function PaywallLoader() {\n return (\n <SkeletonContainer className=\"stigg-skeleton-loader-container\">\n <BillingPeriodLoader className=\"stigg-skeleton-loader-billing-period\">\n <Skeleton borderRadius={4} />\n </BillingPeriodLoader>\n\n <PlansContainer className=\"stigg-skeleton-loader-plans-container\">\n <PlanOfferingLoader />\n <PlanOfferingLoader />\n <PlanOfferingLoader />\n </PlansContainer>\n </SkeletonContainer>\n );\n}\n","import React from 'react';\nimport { Global, css } from '@emotion/react';\n\nexport const Fonts = ({ externalFontUrl }: { externalFontUrl?: string }) => {\n return (\n <Global\n styles={css`\n ${externalFontUrl &&\n `\n @font-face {\n font-family: 'custom-font';\n font-style: normal;\n font-weight: normal;\n src: local('custom-font'), url(${externalFontUrl}) format('woff');\n }\n `}\n\n /* latin-ext */\n @font-face {\n font-family: 'DM Sans';\n font-style: normal;\n font-weight: 400;\n font-display: swap;\n src: url(https://fonts.gstatic.com/s/dmsans/v11/rP2Hp2ywxg089UriCZ2IHTWEBlwu8Q.woff2) format('woff2');\n unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F,\n U+A720-A7FF;\n }\n /* latin */\n @font-face {\n font-family: 'DM Sans';\n font-style: normal;\n font-weight: 400;\n font-display: swap;\n src: url(https://fonts.gstatic.com/s/dmsans/v11/rP2Hp2ywxg089UriCZOIHTWEBlw.woff2) format('woff2');\n unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074,\n U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;\n }\n /* latin-ext */\n @font-face {\n font-family: 'DM Sans';\n font-style: normal;\n font-weight: 500;\n font-display: swap;\n src: url(https://fonts.gstatic.com/s/dmsans/v11/rP2Cp2ywxg089UriAWCrCBamC3YU-CnE6Q.woff2) format('woff2');\n unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F,\n U+A720-A7FF;\n }\n /* latin */\n @font-face {\n font-family: 'DM Sans';\n font-style: normal;\n font-weight: 500;\n font-display: swap;\n src: url(https://fonts.gstatic.com/s/dmsans/v11/rP2Cp2ywxg089UriAWCrCBimC3YU-Ck.woff2) format('woff2');\n unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074,\n U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;\n }\n /* latin-ext */\n @font-face {\n font-family: 'DM Sans';\n font-style: normal;\n font-weight: 700;\n font-display: swap;\n src: url(https://fonts.gstatic.com/s/dmsans/v11/rP2Cp2ywxg089UriASitCBamC3YU-CnE6Q.woff2) format('woff2');\n unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F,\n U+A720-A7FF;\n }\n /* latin */\n @font-face {\n font-family: 'DM Sans';\n font-style: normal;\n font-weight: 700;\n font-display: swap;\n src: url(https://fonts.gstatic.com/s/dmsans/v11/rP2Cp2ywxg089UriASitCBimC3YU-Ck.woff2) format('woff2');\n unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074,\n U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;\n }\n `}\n />\n );\n};\n","import { merge } from 'lodash';\nimport React, { PropsWithChildren } from 'react';\nimport { ThemeProvider as StyledThemeProvider } from 'styled-components';\nimport { TypographyProps } from 'styled-typography';\nimport { css, ThemeProvider } from '@emotion/react';\nimport styled from '@emotion/styled/macro';\nimport { createTheme, ThemeProvider as MuiThemeProvider, THEME_ID } from '@mui/material/styles';\nimport { useStiggContext } from '../components/StiggProvider';\nimport { DeepPartial } from '../types';\nimport { Fonts } from './Fonts';\nimport { getResolvedTheme } from './getResolvedTheme';\nimport { StiggTheme } from './types';\n\nexport type CustomizedTheme = DeepPartial<StiggTheme>;\n\nconst CustomCssGlobal = styled.div<{ customCss?: string }>`\n ${({ customCss }) =>\n customCss &&\n css`\n ${customCss}\n `}\n`;\n\ntype SdkThemeProviderProps = {\n componentTheme?: CustomizedTheme;\n};\n\n/*\n This merge the theme from 3 places:\n 1. External theme that we got from the user in StiggProvider\n 2. Remote theme from api\n 3. Default theme\n*/\nexport function useStiggTheme(remoteThemeOverride?: CustomizedTheme): StiggTheme {\n const { theme: externalTheme } = useStiggContext();\n const mergedTheme = merge(remoteThemeOverride, externalTheme);\n const resolvedTheme = getResolvedTheme(mergedTheme);\n\n return resolvedTheme;\n}\n\nfunction createTypographyTheme(theme: StiggTheme): Partial<TypographyProps> {\n const { typography } = theme;\n const htmlFontSize = 16;\n const coef = Number(typography.body.fontSize.replace('px', '')) / 14;\n\n return {\n // Hack to fix theming issues\n // @ts-ignore\n pxToRem: (size) => `${(size / htmlFontSize) * coef}rem`,\n bodyFontFamily: typography.fontFamily,\n headingFontFamily: typography.fontFamily,\n fontSizes: [\n typography.h1.fontSize,\n typography.h2.fontSize,\n typography.h3.fontSize,\n typography.body.fontSize,\n '12px',\n '10px',\n ],\n };\n}\n\nconst createMuiPalette = (theme: StiggTheme) => {\n return {\n primary: {\n main: theme.palette.primary,\n },\n };\n};\n\nexport const SdkThemeProvider: React.FC<PropsWithChildren<SdkThemeProviderProps>> = ({ children, componentTheme }) => {\n const theme = useStiggTheme(componentTheme);\n const muiPalette = createMuiPalette(theme);\n const materialTheme = createTheme({ palette: muiPalette, stigg: theme });\n\n return (\n // We are using styled-components theme here only because we are using styled-typography\n // which depends on styled-components for the typography theming\n <MuiThemeProvider theme={{ [THEME_ID]: materialTheme }}>\n <ThemeProvider theme={{ stigg: theme }}>\n <CustomCssGlobal customCss={theme.customCss}>\n <Fonts externalFontUrl={theme.typography.fontFamilyUrl} />\n <StyledThemeProvider theme={{ typography: createTypographyTheme(theme) }}>{children}</StyledThemeProvider>\n </CustomCssGlobal>\n </ThemeProvider>\n </MuiThemeProvider>\n );\n};\n","import { CustomerPortal } from '@stigg/js-client-sdk';\nimport { useEffect, useState } from 'react';\nimport logger from '../../../services/logger';\nimport { useStiggContext } from '../../StiggProvider';\n\ntype UseCustomerPortalProps = {\n resourceId?: string;\n productId?: string;\n};\n\nexport function useCustomerPortal({ resourceId, productId }: UseCustomerPortalProps) {\n const { stigg, customerPortalUpdatedAt } = useStiggContext();\n const [isLoading, setIsLoading] = useState(false);\n const [customerPortal, setCustomerPortal] = useState<CustomerPortal | null>();\n\n useEffect(() => {\n const loadCustomerPortal = async () => {\n if (stigg.isCustomerLoaded) {\n try {\n setIsLoading(true);\n const customerPortalData = await stigg.getCustomerPortal({ resourceId, productId });\n setCustomerPortal(customerPortalData);\n } catch (err) {\n logger.error(`Failed to load customer portal ${(err as any)?.message}`, err as any);\n } finally {\n setIsLoading(false);\n }\n }\n };\n\n void loadCustomerPortal();\n }, [stigg, stigg.isCustomerLoaded, customerPortalUpdatedAt, resourceId, productId]);\n\n return {\n customerPortal,\n isLoading,\n };\n}\n","import merge from 'lodash/merge';\nimport { DeepPartial } from '../../types';\n\nexport type CustomerPortalLocalization = {\n manageSubscription: string;\n usageTabTitle: string;\n addonsTabTitle: string;\n promotionsTabTitle: string;\n promotionsSubtitle: string;\n contactSupportTitle: string;\n contactSupportLink: string;\n editBilling: string;\n invoicesTitle: string;\n viewInvoiceHistory: string;\n editPaymentDetails: string;\n paywallSectionTitle: string;\n cancelScheduledUpdatesButtonTitle: string;\n};\n\nexport function getResolvedCustomerPortalLocalize(\n localizeOverride?: DeepPartial<CustomerPortalLocalization>,\n): CustomerPortalLocalization {\n const customerPortalDefaultLocalization: CustomerPortalLocalization = {\n manageSubscription: 'Manage',\n usageTabTitle: 'Usage',\n addonsTabTitle: 'Add-ons',\n promotionsTabTitle: 'Promotions',\n promotionsSubtitle: 'You were granted access to additional functionality at no additional cost.',\n contactSupportTitle: 'Have questions about your subscription?',\n contactSupportLink: 'Contact support',\n editBilling: 'Edit billing details',\n invoicesTitle: 'Invoices',\n viewInvoiceHistory: 'View invoice history',\n editPaymentDetails: 'Edit',\n paywallSectionTitle: 'Plans',\n cancelScheduledUpdatesButtonTitle: 'Cancel',\n };\n return merge(customerPortalDefaultLocalization, localizeOverride);\n}\n","import { CustomerPortalConfiguration } from '@stigg/js-client-sdk';\nimport { StiggTheme } from '../../theme/types';\nimport { DeepPartial } from '../../types';\n\nexport type CustomerPortalTheme = {\n sectionTitleColor: string;\n planNameColor: string;\n backgroundColor: string;\n borderColor: string;\n listItemBackgroundColor: string;\n tabMaxHeight: string;\n iconsColor?: string;\n iconsBackgroundColor?: string;\n};\n\nexport function getResolvedCustomerPortalTheme(\n globalTheme: StiggTheme,\n themeOverride?: DeepPartial<CustomerPortalTheme>,\n remoteConfiguration?: CustomerPortalConfiguration | null,\n) {\n const customerPortalDefaultTheme: CustomerPortalTheme = {\n sectionTitleColor: themeOverride?.sectionTitleColor || globalTheme.palette.text.secondary,\n planNameColor: themeOverride?.planNameColor || globalTheme.palette.text.primary,\n backgroundColor: themeOverride?.backgroundColor || remoteConfiguration?.palette?.backgroundColor || 'white',\n borderColor: themeOverride?.borderColor || remoteConfiguration?.palette?.borderColor || 'rgba(0, 30, 108, 0.15)',\n listItemBackgroundColor: themeOverride?.backgroundColor || remoteConfiguration?.palette?.backgroundColor || 'white',\n tabMaxHeight: themeOverride?.tabMaxHeight || '380px',\n\n // add icons background color and apply to scheduled updates and customer support icons\n iconsColor: themeOverride?.iconsColor || remoteConfiguration?.palette?.iconsColor || undefined,\n iconsBackgroundColor: themeOverride?.iconsBackgroundColor,\n };\n\n return customerPortalDefaultTheme;\n}\n","import React, { useContext } from 'react';\nimport { CustomerPortal } from '@stigg/js-client-sdk';\nimport { useCustomerPortal } from './hooks/useCustomerPortal';\nimport { DeepPartial } from '../../types';\nimport { CustomerPortalLocalization, getResolvedCustomerPortalLocalize } from './customerPortalTextOverrides';\nimport { CustomerPortalTheme, getResolvedCustomerPortalTheme } from './customerPortalTheme';\nimport { SdkThemeProvider, useStiggTheme } from '../../theme/Theme';\nimport { useStiggContext } from '../..';\nimport { mapCustomerPortalConfiguration } from '../common/mapExternalTheme';\n\nexport interface CustomerPortalContextValue {\n customerPortal?: CustomerPortal | null;\n textOverrides: CustomerPortalLocalization;\n theme: CustomerPortalTheme;\n isLoading: boolean;\n resourceId?: string;\n}\n\nexport const CustomerPortalContext = React.createContext<CustomerPortalContextValue | null>(null);\nCustomerPortalContext.displayName = 'CustomerPortalContext';\n\nexport const useCustomerPortalContext = (): CustomerPortalContextValue => {\n const ctx = useContext(CustomerPortalContext);\n if (!ctx) {\n throw new Error(\n 'Could not find Customer portal context; You need to wrap your customer portal components in an <CustomerPortalProvider> component.',\n );\n }\n return ctx;\n};\n\nexport function useCheckContextExists<T>(contextType: React.Context<T>) {\n const ctx = useContext(contextType);\n return !!ctx;\n}\n\nexport function CustomerPortalProvider({\n children,\n textOverrides,\n theme,\n resourceId,\n productId,\n}: {\n children: React.ReactNode;\n textOverrides?: DeepPartial<CustomerPortalLocalization>;\n theme?: DeepPartial<CustomerPortalTheme>;\n resourceId?: string;\n productId?: string;\n}) {\n const { customerPortalUpdatedAt } = useStiggContext();\n const { customerPortal, isLoading } = useCustomerPortal({ resourceId, productId });\n const configuration = customerPortal?.configuration\n ? mapCustomerPortalConfiguration(customerPortal.configuration)\n : undefined;\n const globalTheme = useStiggTheme(configuration);\n const customerPortalTheme = getResolvedCustomerPortalTheme(globalTheme, theme, customerPortal?.configuration);\n const resolvedTextOverrides = getResolvedCustomerPortalLocalize(textOverrides);\n\n return (\n <SdkThemeProvider componentTheme={configuration}>\n <CustomerPortalContext.Provider\n key={customerPortalUpdatedAt?.toString()}\n value={{\n customerPortal,\n isLoading,\n textOverrides: resolvedTextOverrides,\n theme: customerPortalTheme,\n resourceId,\n }}>\n {children}\n </CustomerPortalContext.Provider>\n </SdkThemeProvider>\n );\n}\n","import React from 'react';\nimport { BillingPeriod } from '@stigg/js-client-sdk';\nimport { Paywall } from './Paywall';\nimport { useLoadPaywallData } from './hooks/useLoadPaywallData';\nimport { ShouldHidePlanFn, OnPlanSelectedCallbackFn, SelectDefaultTierIndexFn } from './types';\nimport { getResolvedPaywallLocalize, PaywallLocalization } from './paywallTextOverrides';\nimport { DeepPartial } from '../../types';\nimport { PaywallLoader } from './PaywallLoader';\nimport { SdkThemeProvider } from '../../theme/Theme';\nimport {\n CustomerPortalContext,\n useCheckContextExists,\n useCustomerPortalContext,\n} from '../customerPortal/CustomerPortalProvider';\n\nexport type PaywallContainerProps = {\n productId?: string;\n resourceId?: string;\n highlightedPlanId?: string;\n showOnlyEligiblePlans?: boolean;\n onPlanSelected: OnPlanSelectedCallbackFn;\n preferredBillingPeriod?: BillingPeriod;\n onBillingPeriodChange?: (billingPeriod: BillingPeriod) => void;\n textOverrides?: DeepPartial<PaywallLocalization>;\n billingCountryCode?: string;\n shouldHidePlan?: ShouldHidePlanFn;\n selectDefaultTierIndex?: SelectDefaultTierIndexFn;\n};\n\nexport const PaywallContainer = ({\n productId,\n resourceId,\n highlightedPlanId,\n showOnlyEligiblePlans,\n textOverrides,\n onPlanSelected,\n preferredBillingPeriod,\n onBillingPeriodChange,\n billingCountryCode,\n shouldHidePlan,\n selectDefaultTierIndex,\n}: PaywallContainerProps) => {\n const hasCustomerPortalContext = useCheckContextExists(CustomerPortalContext);\n let isCustomerPortalLoading = false;\n if (hasCustomerPortalContext) {\n // eslint-disable-next-line react-hooks/rules-of-hooks\n const { isLoading, resourceId: customerPortalResourceId } = useCustomerPortalContext();\n isCustomerPortalLoading = isLoading;\n resourceId = customerPortalResourceId;\n }\n const {\n plans,\n customer,\n currentSubscription,\n isCustomerOnTrial,\n isLoading,\n selectedBillingPeriod,\n setSelectedBillingPeriod,\n availableBillingPeriods,\n locale,\n configuration,\n } = useLoadPaywallData({\n productId,\n resourceId,\n showOnlyEligiblePlans,\n billingCountryCode,\n preferredBillingPeriod,\n });\n const paywallLocale = getResolvedPaywallLocalize(textOverrides);\n const handlePeriodChange = (billingPeriod: BillingPeriod) => {\n setSelectedBillingPeriod(billingPeriod);\n if (onBillingPeriodChange) {\n onBillingPeriodChange(billingPeriod);\n }\n };\n\n const component =\n !plans || isLoading || isCustomerPortalLoading ? (\n <PaywallLoader />\n ) : (\n <Paywall\n plans={plans}\n customer={customer}\n currentSubscription={currentSubscription}\n selectedBillingPeriod={selectedBillingPeriod}\n onBillingPeriodChanged={handlePeriodChange}\n availableBillingPeriods={availableBillingPeriods}\n highlightedPlanId={highlightedPlanId}\n isCustomerOnTrial={isCustomerOnTrial}\n onPlanSelected={onPlanSelected}\n paywallLocale={paywallLocale}\n locale={locale}\n shouldHidePlan={shouldHidePlan}\n selectDefaultTierIndex={selectDefaultTierIndex}\n />\n );\n\n // When rendering the paywall in the customer portal context we don't want to apply paywall theme\n if (hasCustomerPortalContext) {\n return component;\n }\n return <SdkThemeProvider componentTheme={configuration}>{component}</SdkThemeProvider>;\n};\n","import styled from '@emotion/styled/macro';\nimport MuiButton from '@mui/material/Button';\n\nexport const StyledButton = styled(MuiButton)`\n border-radius: 10px;\n padding: 8px 16px;\n text-transform: none;\n\n &,\n &:hover {\n border-color: ${({ theme }) => theme.stigg.palette.outlinedRestingBorder};\n }\n`;\n","<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M13.3333 2.5L17.5 6.66667L6.66667 17.5H2.5V13.3333L13.3333 2.5V2.5Z\" stroke=\"#327EEE\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n</svg>\n","import styled from '@emotion/styled/macro';\n\nexport const SectionHeader = styled.div<{ $disableMargin?: boolean }>`\n display: flex;\n align-items: center;\n justify-content: space-between;\n\n ${({ $disableMargin }) =>\n !$disableMargin &&\n `\n &:not(:last-child) {\n margin-bottom: 32px;\n }\n `};\n`;\n","import React from 'react';\nimport Skeleton from 'react-loading-skeleton';\nimport { Typography } from '../../common/Typography';\nimport { useCustomerPortalContext } from '../CustomerPortalProvider';\n\nexport type SectionTitleProps = {\n title: string;\n className: string;\n isLoading?: boolean;\n};\n\nexport function SectionTitle({ title, className, isLoading }: SectionTitleProps) {\n const { theme } = useCustomerPortalContext();\n\n if (isLoading) {\n return <Skeleton width={120} />;\n }\n\n return (\n <Typography className={className} overrideColor={theme.sectionTitleColor} variant=\"h3\" bold>\n {title}\n </Typography>\n );\n}\n","import { CustomerPortalEntitlement, CustomerPortalSubscription } from '@stigg/js-client-sdk';\nimport { FeatureFragment } from '@stigg/api-client-js/src/generated/sdk';\n\nexport type OnBuyMoreCallbackFn = (feature: FeatureFragment, entitlement: CustomerPortalEntitlement) => void;\n\nexport enum CustomerPortalIntentionType {\n MANAGE_SUBSCRIPTION = 'MANAGE_SUBSCRIPTION',\n UPGRADE_PLAN = 'UPGRADE_PLAN',\n UPGRADE_TRIAL_PLAN = 'UPGRADE_TRIAL_PLAN',\n}\n\nexport type OnManageSubscriptionFn = ({\n intentionType,\n customerSubscriptions,\n}: {\n intentionType: CustomerPortalIntentionType;\n customerSubscriptions: CustomerPortalSubscription[];\n}) => Promise<void> | void;\n","import React from 'react';\nimport styled from '@emotion/styled/macro';\nimport { StyledButton } from '../common/StyledButton';\nimport { Typography } from '../../common/Typography';\nimport EditIcon from '../../../assets/edit-icon.svg';\nimport { CustomerPortalLocalization } from '../customerPortalTextOverrides';\nimport { SectionHeader } from '../common/SectionHeader';\nimport { SectionTitle } from '../common/SectionTitle';\nimport { OnManageClick } from '../CustomerPortalContainer';\nimport { CustomerPortalIntentionType } from '../types';\n\ntype SubscriptionsOverviewHeaderProps = {\n onManageSubscription: OnManageClick;\n hideManageButton: boolean;\n textOverrides: CustomerPortalLocalization;\n};\n\nconst StyledEditIcon = styled(EditIcon)`\n path {\n stroke: ${({ theme }) => theme.stigg.palette.primary};\n }\n`;\n\nexport function SubscriptionsOverviewHeader({\n onManageSubscription,\n hideManageButton,\n textOverrides,\n}: SubscriptionsOverviewHeaderProps) {\n return (\n <SectionHeader className=\"stigg-customer-portal-overview-header\" $disableMargin>\n <SectionTitle title=\"Subscription\" className=\"stigg-overview-title\" />\n {!hideManageButton && (\n <StyledButton\n className=\"stigg-manage-subscription-button\"\n variant=\"outlined\"\n onClick={() => onManageSubscription({ intentionType: CustomerPortalIntentionType.MANAGE_SUBSCRIPTION })}>\n <StyledEditIcon className=\"stigg-manage-subscription-button-image\" />\n <Typography\n className=\"stigg-manage-subscription-button-text\"\n color=\"primary.main\"\n style={{ marginLeft: '8px' }}\n variant=\"body1\">\n {textOverrides?.manageSubscription}\n </Typography>\n </StyledButton>\n )}\n </SectionHeader>\n );\n}\n","import flatMap from 'lodash/flatMap';\nimport isEmpty from 'lodash/isEmpty';\nimport React from 'react';\nimport { Typography } from '../../../common/Typography';\nimport { useCustomerPortalContext } from '../../CustomerPortalProvider';\n\nexport function AddonsList() {\n const { customerPortal } = useCustomerPortalContext();\n const addons = flatMap(customerPortal?.subscriptions, (subscription) => subscription.addons);\n if (isEmpty(addons)) {\n return null;\n }\n\n return (\n <div className=\"stigg-addons-list-layout\">\n {addons.map((addon, index) => (\n <Typography key={addon.addonId} span className=\"stigg-addon-list-item-text\" variant=\"body1\">\n {addon.quantity > 1 && `${addon.quantity} X `}\n {addon.displayName}\n {index === addons.length - 1 ? '' : ', '}\n </Typography>\n ))}\n </div>\n );\n}\n","import { CustomerPortalPromotionalEntitlement } from '@stigg/js-client-sdk';\nimport moment from 'moment';\nimport React from 'react';\nimport styled from '@emotion/styled/macro';\nimport { Typography } from '../../../common/Typography';\nimport { useCustomerPortalContext } from '../../CustomerPortalProvider';\n\nconst Row = styled.div<{ $borderColor: string }>`\n display: flex;\n justify-content: space-between;\n align-items: center;\n gap: 64px;\n border-bottom: ${({ $borderColor }) => `1px solid ${$borderColor}`};\n padding: 16px 0;\n\n & > *:first-of-type {\n max-width: 60%;\n }\n`;\n\nfunction getPromotionTitle(promotionalEntitlement: CustomerPortalPromotionalEntitlement) {\n const { displayName, usageLimit, hasUnlimitedUsage } = promotionalEntitlement;\n\n if (hasUnlimitedUsage) {\n return `Unlimited ${displayName}`;\n }\n if (usageLimit) {\n return `${displayName} x ${promotionalEntitlement.usageLimit?.toLocaleString()}`;\n }\n\n return displayName;\n}\n\nexport function Promotions() {\n const { customerPortal, textOverrides, theme } = useCustomerPortalContext();\n const promotionalEntitlements = customerPortal?.promotionalEntitlements;\n\n return (\n <div style={{ display: 'flex', flexDirection: 'column' }}>\n <Typography color=\"secondary\">{textOverrides.promotionsSubtitle}</Typography>\n <div style={{ display: 'flex', flexDirection: 'column' }}>\n <Row $borderColor={theme.borderColor}>\n <Typography variant=\"body1\" bold>\n Feature\n </Typography>\n <Typography variant=\"body1\" bold>\n Expiration date\n </Typography>\n </Row>\n {promotionalEntitlements?.map((promotionalEntitlement, index) => (\n <Row key={`${promotionalEntitlement.displayName}-${index}`} $borderColor={theme.borderColor}>\n <Typography variant=\"body1\">{getPromotionTitle(promotionalEntitlement)}</Typography>\n <Typography variant=\"body1\" color=\"disabled\">\n {promotionalEntitlement.endDate\n ? moment.utc(promotionalEntitlement.endDate).format('MMM Do, YYYY')\n : 'None'}\n </Typography>\n </Row>\n ))}\n </div>\n </div>\n );\n}\n","import styled from '@emotion/styled/macro';\nimport Box from '@mui/material/Box';\nimport Tabs from '@mui/material/Tabs';\n\nexport const StyledTabs = styled(Tabs)`\n .MuiTabs-indicator {\n background-color: #001e6c;\n }\n`;\n\nexport const TabsLayout = styled.div`\n width: 100%;\n flex: 1;\n margin-top: 16px;\n`;\n\nexport const TabContent = styled(Box, { shouldForwardProp: (prop) => !prop.startsWith('$') })<{ $maxHeight: string }>`\n margin-top: 16px;\n max-height: ${({ $maxHeight }) => $maxHeight};\n overflow-y: auto;\n`;\n\nexport const ListBox = styled.div<{ $backgroundColor: string; $borderColor: string }>`\n display: flex;\n flex-direction: column;\n padding: 24px;\n border: ${({ $borderColor }) => `1px solid ${$borderColor}`};\n border-radius: 10px;\n margin-bottom: 16px;\n row-gap: 16px;\n background-color: ${({ $backgroundColor }) => $backgroundColor};\n`;\n","import { Theme } from '@emotion/react';\n\nexport type IconColor = 'primary' | 'secondary';\n\nexport const getIconColor = (color: IconColor | string | undefined, theme: Theme) => {\n switch (color) {\n case 'primary':\n return theme.stigg.palette.text.primary;\n case 'secondary':\n return theme.stigg.palette.text.secondary;\n default:\n return color;\n }\n};\n","<svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<g clip-path=\"url(#clip0_834_118930)\">\n<path d=\"M12 6.85712V17.1428\" stroke=\"#7586B0\" stroke-width=\"1.71429\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n<path d=\"M6.85712 12H17.1428\" stroke=\"#7586B0\" stroke-width=\"1.71429\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n<path d=\"M18 0.857117H5.99997C3.15966 0.857117 0.857117 3.15966 0.857117 5.99997V18C0.857117 20.8404 3.15966 23.1428 5.99997 23.1428H18C20.8404 23.1428 23.1428 20.8404 23.1428 18V5.99997C23.1428 3.15966 20.8404 0.857117 18 0.857117Z\" stroke=\"#7586B0\" stroke-width=\"1.71429\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n</g>\n<defs>\n<clipPath id=\"clip0_834_118930\">\n<rect width=\"24\" height=\"24\" fill=\"white\"/>\n</clipPath>\n</defs>\n</svg>\n","<svg width=\"36\" height=\"36\" viewBox=\"0 0 36 36\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<rect width=\"36\" height=\"36\" rx=\"10\" fill=\"#F5F6F9\"/>\n<path d=\"M26 27V25C26 22.7909 24.2091 21 22 21H14C11.7909 21 10 22.7909 10 25V27\" stroke=\"#7586B0\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M18 17C20.2091 17 22 15.2091 22 13C22 10.7909 20.2091 9 18 9C15.7909 9 14 10.7909 14 13C14 15.2091 15.7909 17 18 17Z\" stroke=\"#7586B0\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n<defs>\n<linearGradient id=\"paint0_linear_67_8545\" x1=\"35.0204\" y1=\"1.22449\" x2=\"0\" y2=\"36\" gradientUnits=\"userSpaceOnUse\">\n<stop stop-color=\"#56ACF6\"/>\n<stop offset=\"1\" stop-color=\"#1559E6\"/>\n</linearGradient>\n</defs>\n</svg>\n","<svg width=\"36\" height=\"36\" viewBox=\"0 0 36 36\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<rect width=\"36\" height=\"36\" rx=\"10\" fill=\"#F5F6F9\"/>\n<path d=\"M27 18.22C27 12.73 22.74 9 18 9C13.31 9 9 12.65 9 18.28C8.4 18.62 8 19.26 8 20V22C8 23.1 8.9 24 10 24H11V17.9C11 14.03 14.13 10.9 18 10.9C21.87 10.9 25 14.03 25 17.9V25H17V27H25C26.1 27 27 26.1 27 25V23.78C27.59 23.47 28 22.86 28 22.14V19.84C28 19.14 27.59 18.53 27 18.22Z\" fill=\"#7586B0\"/>\n<path d=\"M15 20C15.5523 20 16 19.5523 16 19C16 18.4477 15.5523 18 15 18C14.4477 18 14 18.4477 14 19C14 19.5523 14.4477 20 15 20Z\" fill=\"#7586B0\"/>\n<path d=\"M21 20C21.5523 20 22 19.5523 22 19C22 18.4477 21.5523 18 21 18C20.4477 18 20 18.4477 20 19C20 19.5523 20.4477 20 21 20Z\" fill=\"#7586B0\"/>\n<path d=\"M24 17.03C23.52 14.18 21.04 12 18.05 12C15.02 12 11.76 14.51 12.02 18.45C14.49 17.44 16.35 15.24 16.88 12.56C18.19 15.19 20.88 17 24 17.03Z\" fill=\"#7586B0\"/>\n<defs>\n<linearGradient id=\"paint0_linear_267_19310\" x1=\"35.0204\" y1=\"1.22449\" x2=\"0\" y2=\"36\" gradientUnits=\"userSpaceOnUse\">\n<stop stop-color=\"#56ACF6\"/>\n<stop offset=\"1\" stop-color=\"#1559E6\"/>\n</linearGradient>\n</defs>\n</svg>\n","<svg width=\"36\" height=\"36\" viewBox=\"0 0 36 36\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<rect width=\"36\" height=\"36\" rx=\"10\" fill=\"#F5F6F9\"/>\n<path d=\"M26 10H10C8.89 10 8.01 10.89 8.01 12L8 24C8 25.11 8.89 26 10 26H26C27.11 26 28 25.11 28 24V12C28 10.89 27.11 10 26 10ZM26 24H10V18H26V24ZM26 14H10V12H26V14Z\" fill=\"#7586B0\"/>\n<defs>\n<linearGradient id=\"paint0_linear_67_8556\" x1=\"35.0204\" y1=\"1.22449\" x2=\"0\" y2=\"36\" gradientUnits=\"userSpaceOnUse\">\n<stop stop-color=\"#56ACF6\"/>\n<stop offset=\"1\" stop-color=\"#1559E6\"/>\n</linearGradient>\n</defs>\n</svg>\n","<svg width=\"21\" height=\"20\" viewBox=\"0 0 21 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<g clip-path=\"url(#clip0_834_120339)\">\n<path d=\"M10.3336 19.2858C15.462 19.2858 19.6193 15.1285 19.6193 10.0001C19.6193 4.87171 15.462 0.714355 10.3336 0.714355C5.20521 0.714355 1.04785 4.87171 1.04785 10.0001C1.04785 15.1285 5.20521 19.2858 10.3336 19.2858Z\" stroke=\"#7586B0\" stroke-width=\"1.71429\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n<path d=\"M12.7649 7.46052C12.6813 7.22393 12.5523 7.0088 12.3883 6.8256C12.0395 6.43592 11.5327 6.19067 10.9685 6.19067H9.4942C8.55517 6.19067 7.79395 6.9519 7.79395 7.89093C7.79395 8.68995 8.3503 9.38116 9.13086 9.5519L11.3756 10.0429C12.25 10.2342 12.8733 11.0091 12.8733 11.9043C12.8733 12.9562 12.0205 13.8097 10.9685 13.8097H9.6987C8.86936 13.8097 8.16382 13.2797 7.90233 12.5399\" stroke=\"#7586B0\" stroke-width=\"1.71429\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n<path d=\"M10.3335 6.19065V4.28589\" stroke=\"#7586B0\" stroke-width=\"1.71429\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n<path d=\"M10.3335 15.7144V13.8096\" stroke=\"#7586B0\" stroke-width=\"1.71429\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n</g>\n<defs>\n<clipPath id=\"clip0_834_120339\">\n<rect width=\"20\" height=\"20\" fill=\"white\" transform=\"translate(0.333496)\"/>\n</clipPath>\n</defs>\n</svg>\n","<svg width=\"24\" height=\"25\" viewBox=\"0 0 24 25\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<g clip-path=\"url(#clip0_834_116282)\">\n<path d=\"M21.4286 5.32483H2.57146C1.62469 5.32483 0.857178 6.09235 0.857178 7.03911V10.4677C0.857178 11.4145 1.62469 12.182 2.57146 12.182H21.4286C22.3754 12.182 23.1429 11.4145 23.1429 10.4677V7.03911C23.1429 6.09235 22.3754 5.32483 21.4286 5.32483Z\" stroke=\"#7586B0\" stroke-width=\"1.71429\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n<path d=\"M21.4287 12.182V21.6106C21.4287 22.0652 21.248 22.5013 20.9266 22.8227C20.6051 23.1442 20.169 23.3249 19.7144 23.3249H4.28582C3.83116 23.3249 3.39513 23.1442 3.07363 22.8227C2.75215 22.5013 2.57153 22.0652 2.57153 21.6106V12.182\" stroke=\"#7586B0\" stroke-width=\"1.71429\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n<path d=\"M12 5.32483V23.3248\" stroke=\"#7586B0\" stroke-width=\"1.71429\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n<path d=\"M17.1429 1.03912L12 5.32484L6.85718 1.03912\" stroke=\"#7586B0\" stroke-width=\"1.71429\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n</g>\n<defs>\n<clipPath id=\"clip0_834_116282\">\n<rect width=\"24\" height=\"24\" fill=\"white\" transform=\"translate(0 0.182007)\"/>\n</clipPath>\n</defs>\n</svg>\n","<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<path d=\"M10.8333 2.5C6.69168 2.5 3.33334 5.85833 3.33334 10H0.833344L4.07501 13.2417L4.13334 13.3583L7.50001 10H5.00001C5.00001 6.775 7.60834 4.16667 10.8333 4.16667C14.0583 4.16667 16.6667 6.775 16.6667 10C16.6667 13.225 14.0583 15.8333 10.8333 15.8333C9.22501 15.8333 7.76668 15.175 6.71668 14.1167L5.53334 15.3C6.89168 16.6583 8.75834 17.5 10.8333 17.5C14.975 17.5 18.3333 14.1417 18.3333 10C18.3333 5.85833 14.975 2.5 10.8333 2.5ZM10 6.66667V10.8333L13.5667 12.95L14.1667 11.9417L11.25 10.2083V6.66667H10Z\" fill=\"#6678A7\"/>\n</svg>\n","<svg width=\"36\" height=\"36\" viewBox=\"0 0 36 36\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<rect width=\"36\" height=\"36\" rx=\"10\" fill=\"url(#paint0_linear_834_118583)\"/>\n<rect width=\"36\" height=\"36\" rx=\"10\" fill=\"#F5F6F9\"/>\n<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M15.9539 7.70028C16.1196 8.22713 15.8268 8.78853 15.3 8.95421C14.4906 9.20875 13.7155 9.57824 12.9999 10.0564C11.2686 11.2132 9.99197 12.9346 9.38754 14.9271C8.78311 16.9196 8.88826 19.0601 9.68509 20.9838C10.4819 22.9075 11.9211 24.4954 13.7574 25.477C15.5938 26.4585 17.7136 26.7729 19.7558 26.3667C21.798 25.9605 23.6362 24.8588 24.9571 23.2492C26.278 21.6396 27 19.6219 27 17.5397C27 16.9874 27.4477 16.5397 28 16.5397C28.5523 16.5397 29 16.9874 29 17.5397C29 17.8969 28.9826 18.2526 28.9483 18.6056C28.9662 18.6949 28.9722 18.7883 28.9645 18.8837L28.9606 18.9309C28.9496 19.0607 28.9143 19.1825 28.8595 19.2924C28.5513 21.2017 27.7432 23.007 26.5031 24.518C24.8886 26.4852 22.642 27.8318 20.146 28.3283C17.65 28.8248 15.059 28.4405 12.8146 27.2408C10.5702 26.0411 8.81122 24.1004 7.83733 21.7492C6.86343 19.398 6.73491 16.7819 7.47366 14.3465C8.21241 11.9112 9.77272 9.80737 11.8887 8.3935C12.7634 7.80905 13.7107 7.35743 14.7 7.04633C15.2269 6.88065 15.7883 7.17343 15.9539 7.70028ZM17.8497 7.95155C17.8964 7.40125 18.3804 6.99302 18.9307 7.03974L18.9779 7.04385C19.528 7.0929 19.9342 7.57861 19.8851 8.12871C19.8361 8.67881 19.3503 9.085 18.8002 9.03595L18.7615 9.03257C18.2112 8.98585 17.8029 8.50186 17.8497 7.95155ZM22.8579 9.19953C23.172 8.74525 23.7949 8.63161 24.2492 8.9457C24.2751 8.96361 24.3009 8.98162 24.3266 8.99974C24.7782 9.31772 24.8865 9.94155 24.5685 10.3931C24.2505 10.8447 23.6267 10.953 23.1751 10.635C23.1541 10.6202 23.1329 10.6054 23.1118 10.5908C22.6575 10.2767 22.5438 9.6538 22.8579 9.19953ZM26.6058 12.8085C27.1045 12.5712 27.7011 12.7831 27.9384 13.2818C27.9519 13.3102 27.9653 13.3387 27.9786 13.3672C28.2116 13.868 27.9946 14.4628 27.4939 14.6958C26.9931 14.9288 26.3983 14.7117 26.1653 14.211L26.1506 14.1796L26.1324 14.1411C25.8951 13.6424 26.1071 13.0458 26.6058 12.8085ZM19 14.0003C19 13.448 18.5523 13.0003 18 13.0003C17.4477 13.0003 17 13.448 17 14.0003V18.0003C17 18.5526 17.4477 19.0003 18 19.0003H22C22.5523 19.0003 23 18.5526 23 18.0003C23 17.448 22.5523 17.0003 22 17.0003H19V14.0003Z\" fill=\"#7586B0\"/>\n<defs>\n<linearGradient id=\"paint0_linear_834_118583\" x1=\"35.0204\" y1=\"1.22449\" x2=\"0\" y2=\"36\" gradientUnits=\"userSpaceOnUse\">\n</linearGradient>\n</defs>\n</svg>\n","<svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M9.95394 1.70028C10.1196 2.22713 9.82684 2.78853 9.29999 2.95421C8.49057 3.20875 7.71555 3.57824 6.99987 4.05644C5.26859 5.21324 3.99197 6.93456 3.38754 8.9271C2.78311 10.9196 2.88826 13.0601 3.68509 14.9838C4.48191 16.9075 5.9211 18.4954 7.75743 19.477C9.59377 20.4585 11.7136 20.7729 13.7558 20.3667C15.798 19.9605 17.6362 18.8588 18.9571 17.2492C20.278 15.6396 21 13.6219 21 11.5397C21 10.9874 21.4477 10.5397 22 10.5397C22.5523 10.5397 23 10.9874 23 11.5397C23 11.8969 22.9826 12.2526 22.9483 12.6056C22.9662 12.6949 22.9722 12.7883 22.9645 12.8837L22.9606 12.9309C22.9496 13.0607 22.9143 13.1825 22.8595 13.2924C22.5513 15.2017 21.7432 17.007 20.5031 18.518C18.8886 20.4852 16.642 21.8318 14.146 22.3283C11.65 22.8248 9.05905 22.4405 6.81464 21.2408C4.57023 20.0411 2.81122 18.1004 1.83733 15.7492C0.863434 13.398 0.734911 10.7819 1.47366 8.34653C2.21241 5.91121 3.77272 3.80737 5.88873 2.3935C6.76341 1.80905 7.71072 1.35743 8.70001 1.04633C9.22686 0.880646 9.78826 1.17343 9.95394 1.70028ZM11.8497 1.95155C11.8964 1.40125 12.3804 0.993017 12.9307 1.03974L12.9779 1.04385C13.528 1.0929 13.9342 1.57861 13.8851 2.12871C13.8361 2.67881 13.3503 3.085 12.8002 3.03595L12.7615 3.03257C12.2112 2.98585 11.8029 2.50186 11.8497 1.95155ZM16.8579 3.19953C17.172 2.74525 17.7949 2.63161 18.2492 2.9457C18.2751 2.96361 18.3009 2.98162 18.3266 2.99974C18.7782 3.31772 18.8865 3.94155 18.5685 4.39311C18.2505 4.84467 17.6267 4.95296 17.1751 4.63498C17.1541 4.62016 17.1329 4.60542 17.1118 4.59078C16.6575 4.27669 16.5438 3.6538 16.8579 3.19953ZM20.6058 6.80846C21.1045 6.57117 21.7011 6.78308 21.9384 7.28179C21.9519 7.3102 21.9653 7.33869 21.9786 7.36723C22.2116 7.86796 21.9946 8.46276 21.4939 8.69577C20.9931 8.92877 20.3983 8.71174 20.1653 8.21101L20.1506 8.17957L20.1324 8.14112C19.8951 7.64241 20.1071 7.04576 20.6058 6.80846ZM13 8.00027C13 7.44798 12.5523 7.00027 12 7.00027C11.4477 7.00027 11 7.44798 11 8.00027V12.0003C11 12.5526 11.4477 13.0003 12 13.0003H16C16.5523 13.0003 17 12.5526 17 12.0003C17 11.448 16.5523 11.0003 16 11.0003H13V8.00027Z\" fill=\"#7586B0\"/>\n</svg>\n","<svg width=\"36\" height=\"36\" viewBox=\"0 0 36 36\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n\n<rect width=\"36\" height=\"36\" rx=\"10\" fill=\"#F5F6F9\"/>\n<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M9 12C9 10.8954 9.89543 10 11 10H25C26.1046 10 27 10.8954 27 12V26C27 27.1046 26.1046 28 25 28H11C9.89543 28 9 27.1046 9 26V12Z\" stroke=\"#7586B0\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n<path d=\"M22 8V12\" stroke=\"#7586B0\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n<path d=\"M14 8V12\" stroke=\"#7586B0\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n<path d=\"M9 16H27\" stroke=\"#7586B0\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n<defs>\n<linearGradient id=\"paint0_linear_45_8861\" x1=\"35.0204\" y1=\"1.22449\" x2=\"0\" y2=\"36\" gradientUnits=\"userSpaceOnUse\">\n<stop stop-color=\"#56ACF6\"/>\n<stop offset=\"1\" stop-color=\"#1559E6\"/>\n</linearGradient>\n</defs>\n</svg>\n","<svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<g id=\"trash-2\">\n<path id=\"Shape\" d=\"M3 6H5H21\" stroke=\"#F88078\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n<path id=\"Shape_2\" d=\"M20 6C20 5.44772 19.5523 5 19 5C18.4477 5 18 5.44772 18 6H20ZM6 6C6 5.44772 5.55228 5 5 5C4.44772 5 4 5.44772 4 6H6ZM7 6C7 6.55228 7.44772 7 8 7C8.55228 7 9 6.55228 9 6H7ZM15 6C15 6.55228 15.4477 7 16 7C16.5523 7 17 6.55228 17 6H15ZM18 6V20H20V6H18ZM18 20C18 20.5523 17.5523 21 17 21V23C18.6569 23 20 21.6569 20 20H18ZM17 21H7V23H17V21ZM7 21C6.44772 21 6 20.5523 6 20H4C4 21.6569 5.34315 23 7 23V21ZM6 20V6H4V20H6ZM9 6V4H7V6H9ZM9 4C9 3.44772 9.44772 3 10 3V1C8.34315 1 7 2.34315 7 4H9ZM10 3H14V1H10V3ZM14 3C14.5523 3 15 3.44772 15 4H17C17 2.34315 15.6569 1 14 1V3ZM15 4V6H17V4H15Z\" fill=\"#F88078\"/>\n<path id=\"Shape_3\" d=\"M10 11V17\" stroke=\"#F88078\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n<path id=\"Shape_4\" d=\"M14 11V17\" stroke=\"#F88078\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n</g>\n</svg>\n","<svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<path d=\"M21.1667 4H2.83333C1.82081 4 1 4.89543 1 6V18C1 19.1046 1.82081 20 2.83333 20H21.1667C22.1792 20 23 19.1046 23 18V6C23 4.89543 22.1792 4 21.1667 4Z\" fill=\"#C6C6C7\"/>\n<path opacity=\"0.3\" d=\"M19.75 16.4286H17.5C17.0125 16.4286 16.75 16.2 16.75 15.6667C16.75 15.1334 17.0125 14.9048 17.5 14.9048H19.75C20.2375 14.9048 20.5 15.1334 20.5 15.6667C20.5 16.2 20.2375 16.4286 19.75 16.4286ZM15.25 16.4286H13C12.5125 16.4286 12.25 16.2 12.25 15.6667C12.25 15.1334 12.5125 14.9048 13 14.9048H15.25C15.7375 14.9048 16 15.1334 16 15.6667C16 16.2 15.7375 16.4286 15.25 16.4286ZM10.75 16.4286H8.5C8.0125 16.4286 7.75 16.2 7.75 15.6667C7.75 15.1334 8.0125 14.9048 8.5 14.9048H10.75C11.2375 14.9048 11.5 15.1334 11.5 15.6667C11.5 16.2 11.2375 16.4286 10.75 16.4286ZM6.25 16.4286H4C3.5125 16.4286 3.25 16.2 3.25 15.6667C3.25 15.1334 3.5125 14.9048 4 14.9048H6.25C6.7375 14.9048 7 15.1334 7 15.6667C7 16.2 6.7375 16.4286 6.25 16.4286Z\" fill=\"black\"/>\n</svg>\n","<svg width=\"21\" height=\"20\" viewBox=\"0 0 21 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<circle cx=\"10.333\" cy=\"10\" r=\"9\" fill=\"white\" stroke=\"#327EEE\" stroke-width=\"2\"/>\n</svg>\n","<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<g id=\"Group 16159\">\n<circle id=\"Ellipse 5\" cx=\"10\" cy=\"10\" r=\"9.25\" fill=\"#327EEE\" stroke=\"#327EEE\" stroke-width=\"1.5\"/>\n<path id=\"Shape\" d=\"M5 10.3636L8.63667 14L12.637 10L14.6372 8\" stroke=\"white\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n</g>\n</svg>\n","<svg width=\"21\" height=\"20\" viewBox=\"0 0 21 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<g id=\"Stepper indicators\">\n<circle id=\"Ellipse 5\" cx=\"10.667\" cy=\"10\" r=\"9.25\" fill=\"#B3BCD3\" stroke=\"#B3BCD3\" stroke-width=\"1.5\"/>\n<path id=\"Shape\" d=\"M5.66699 10.3636L9.30366 14L13.304 10L15.3042 8\" stroke=\"white\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n</g>\n</svg>\n","<svg width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<path d=\"M9 3L7.9425 4.0575L12.1275 8.25H3V9.75H12.1275L7.9425 13.9425L9 15L15 9L9 3Z\" fill=\"white\"/>\n</svg>\n","<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<path d=\"M15.8337 5.34199L14.6587 4.16699L10.0003 8.82533L5.34199 4.16699L4.16699 5.34199L8.82533 10.0003L4.16699 14.6587L5.34199 15.8337L10.0003 11.1753L14.6587 15.8337L15.8337 14.6587L11.1753 10.0003L15.8337 5.34199Z\" fill=\"#327EEE\"/>\n</svg>\n","<svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<g id=\"check\">\n<path id=\"Shape\" d=\"M20 7L9 18L4 13\" stroke=\"#F5F6F9\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n</g>\n</svg>\n","<svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<g clip-path=\"url(#clip0_1889_12169)\">\n<path d=\"M11.4286 7.42578L8 13.1401\" stroke=\"#7586B0\" stroke-width=\"1.71429\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n<path d=\"M14.857 13.1412C15.3274 12.0123 15.5118 10.7848 15.3938 9.56751C15.2758 8.35027 14.8592 7.18097 14.1808 6.16341C13.5024 5.14585 12.5833 4.31152 11.5051 3.73446C10.4268 3.1574 9.22281 2.85547 7.99986 2.85547C6.77691 2.85547 5.57288 3.1574 4.49463 3.73446C3.41639 4.31152 2.49729 5.14585 1.81892 6.16341C1.14055 7.18097 0.723889 8.35027 0.605928 9.56751C0.487968 10.7848 0.672354 12.0123 1.14272 13.1412H14.857Z\" stroke=\"#7586B0\" stroke-width=\"1.71429\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n</g>\n<defs>\n<clipPath id=\"clip0_1889_12169\">\n<rect width=\"16\" height=\"16\" fill=\"white\"/>\n</clipPath>\n</defs>\n</svg>\n","<svg width=\"16\" height=\"16\" viewBox=\"0 0 18 18\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<g id=\"tag--tags-bookmark-favorite\">\n<path id=\"Vector\" d=\"M1.26995 11.9426L6.05743 16.7301C6.2305 16.903 6.4651 17.0001 6.7097 17.0001C6.95431 17.0001 7.18891 16.903 7.36198 16.7301L16.8631 7.22895C16.9108 7.18332 16.9478 7.12758 16.9712 7.06583C16.9946 7.00408 17.0039 6.93787 16.9985 6.87205L16.2724 2.15839C16.2664 2.04607 16.2192 1.93992 16.1396 1.86038C16.0601 1.78085 15.9539 1.73357 15.8416 1.72764L11.128 1.00152C11.0622 0.996055 10.9959 1.00538 10.9342 1.0288C10.8724 1.05222 10.8167 1.08916 10.7711 1.1369L1.26995 10.638C1.09709 10.8111 1 11.0457 1 11.2903C1 11.5349 1.09709 11.7695 1.26995 11.9426Z\" stroke=\"#327EEE\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n<path id=\"Vector_2\" d=\"M12.5548 6.05884C12.3916 6.05884 12.2351 5.99401 12.1197 5.87861C12.0043 5.76321 11.9395 5.60669 11.9395 5.44348C11.9395 5.28028 12.0043 5.12376 12.1197 5.00836C12.2351 4.89296 12.3916 4.82812 12.5548 4.82812C12.718 4.82812 12.8745 4.89296 12.9899 5.00836C13.1053 5.12376 13.1702 5.28028 13.1702 5.44348C13.1702 5.60669 13.1053 5.76321 12.9899 5.87861C12.8745 5.99401 12.718 6.05884 12.5548 6.05884Z\" stroke=\"#327EEE\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n</g>\n</svg>\n","import styled from '@emotion/styled/macro';\nimport React, { CSSProperties } from 'react';\nimport { css, useTheme } from '@emotion/react';\nimport { getIconColor, IconColor } from './iconColor';\nimport * as customIcons from './customIcons';\n\nexport type Icons = keyof typeof customIcons;\n\nconst IconWrapper = styled.div<{ $pathColor?: string; $rectColor?: string; $strokeColor?: string }>`\n ${({ $pathColor }) =>\n $pathColor &&\n css`\n path {\n fill: ${$pathColor};\n }\n `}\n\n ${({ $rectColor }) =>\n $rectColor &&\n css`\n svg rect {\n fill: ${$rectColor};\n }\n `}\n\n\n ${({ $strokeColor }) =>\n $strokeColor &&\n css`\n g {\n stroke: ${$strokeColor};\n }\n `}\n`;\n\nexport type IconProps = {\n icon: Icons;\n className?: string;\n style?: CSSProperties;\n svgPathColor?: IconColor | string;\n svgRectColor?: IconColor | string;\n svgStrokeColor?: IconColor | string;\n};\n\nexport function Icon({ icon, className, style, svgPathColor, svgRectColor, svgStrokeColor }: IconProps) {\n const IconComponent = (customIcons as any)[icon];\n const theme = useTheme();\n\n return (\n <IconWrapper\n className={className}\n style={style}\n $pathColor={getIconColor(svgPathColor, theme)}\n $rectColor={getIconColor(svgRectColor, theme)}\n $strokeColor={getIconColor(svgStrokeColor, theme)}>\n <IconComponent />\n </IconWrapper>\n );\n}\n","import React, { useState } from 'react';\nimport { CustomerPortal } from '@stigg/js-client-sdk';\nimport flatMap from 'lodash/flatMap';\nimport Box from '@mui/material/Box';\nimport Tab from '@mui/material/Tab';\nimport { FontWeight } from 'styled-typography';\nimport { Typography } from '../../../common/Typography';\nimport { AddonsList } from './AddonsList';\nimport { Promotions } from './Promotions';\nimport { CustomerPortalSection } from '../../CustomerPortal';\nimport { CustomerPortalLocalization } from '../../customerPortalTextOverrides';\nimport { StyledTabs, TabContent, TabsLayout } from './SubscriptionTabs.style';\nimport { CustomerPortalTheme } from '../../customerPortalTheme';\nimport { Icon, Icons } from '../../../common/Icon';\n\ntype TabPanelProps = {\n children?: React.ReactNode;\n index: number;\n value: number;\n maxHeight: string;\n};\n\nfunction TabPanel(props: TabPanelProps) {\n const { children, value, index, maxHeight, ...other } = props;\n\n return (\n <div role=\"tabpanel\" hidden={value !== index} {...other}>\n {value === index && <TabContent $maxHeight={maxHeight}>{children}</TabContent>}\n </div>\n );\n}\n\nexport type SubscriptionTabsProps = {\n customerPortal: CustomerPortal;\n hiddenSections?: CustomerPortalSection[];\n textOverrides: CustomerPortalLocalization;\n theme: CustomerPortalTheme;\n};\n\nfunction TabTitle({ isSelected, label, icon }: { isSelected: boolean; label: string; icon: Icons }) {\n const color = isSelected ? 'primary' : 'secondary';\n return (\n <div style={{ display: 'flex', gap: 8, alignItems: 'center' }}>\n <Icon icon={icon} svgStrokeColor={color} />\n <Typography variant=\"h6\" bold={isSelected} fontWeight={FontWeight.Medium} color={color}>\n {label}\n </Typography>\n </div>\n );\n}\n\nexport function SubscriptionTabs({ customerPortal, hiddenSections, textOverrides, theme }: SubscriptionTabsProps) {\n const allAddons = flatMap(customerPortal.subscriptions, (subscription) => subscription.addons);\n const isSectionHidden = (sectionName: CustomerPortalSection) =>\n hiddenSections?.some((section) => section === sectionName);\n const showAddons = allAddons.length > 0 && !isSectionHidden('addons');\n const showPromotions =\n customerPortal.promotionalEntitlements.length > 0 && !isSectionHidden('promotionalEntitlements');\n const [value, setValue] = useState(showAddons ? 1 : 2);\n\n const handleChange = (_: React.SyntheticEvent, newValue: number) => {\n setValue(newValue);\n };\n const shouldShowTabs = showAddons || showPromotions;\n\n if (!shouldShowTabs) {\n return null;\n }\n\n return (\n <TabsLayout>\n <Box sx={{ borderBottom: 1, borderColor: 'divider' }}>\n <StyledTabs value={value} onChange={handleChange}>\n {showAddons ? (\n <Tab\n sx={{ textTransform: 'none' }}\n value={1}\n label={<TabTitle isSelected={value === 1} label={textOverrides.addonsTabTitle} icon=\"Addons\" />}\n />\n ) : null}\n {showPromotions ? (\n <Tab\n sx={{ textTransform: 'none' }}\n value={2}\n label={<TabTitle isSelected={value === 2} label={textOverrides.promotionsTabTitle} icon=\"Promotions\" />}\n />\n ) : null}\n </StyledTabs>\n </Box>\n <TabPanel value={value} index={1} maxHeight={theme.tabMaxHeight}>\n <AddonsList />\n </TabPanel>\n <TabPanel value={value} index={2} maxHeight={theme.tabMaxHeight}>\n <Promotions />\n </TabPanel>\n </TabsLayout>\n );\n}\n","import styled from '@emotion/styled/macro';\nimport React from 'react';\nimport Skeleton from 'react-loading-skeleton';\n\nconst SkeletonLayout = styled.div`\n display: flex;\n justify-content: space-between;\n`;\n\nconst SkeletonLayoutLeft = styled.div`\n display: flex;\n flex-direction: column;\n gap: 32px;\n`;\n\nexport function SubscriptionOverviewLoader() {\n return (\n <SkeletonLayout className=\"stigg-subscription-overview-skeleton-layout\">\n <SkeletonLayoutLeft>\n <Skeleton width={120} />\n <Skeleton width={120} />\n </SkeletonLayoutLeft>\n <Skeleton width={295} height={193} />\n </SkeletonLayout>\n );\n}\n","import React from 'react';\nimport { ArrowDown } from 'react-feather';\nimport Grid from '@mui/material/Grid';\nimport {\n CustomerPortalSubscription,\n CustomerPortalSubscriptionScheduledUpdateDataFragment,\n SubscriptionScheduleType,\n BillingPeriod,\n} from '@stigg/js-client-sdk';\nimport { compact, map } from 'lodash';\nimport { Typography } from '../../../common/Typography';\nimport { BillingPeriodChangeVariables, UnitAmountChangeVariables } from '../../../../types';\n\nexport type SubscriptionScheduledUpdateRowProps = {\n scheduleUpdate: CustomerPortalSubscriptionScheduledUpdateDataFragment;\n};\n\nfunction SubscriptionScheduledUpdateDowngradeRow({ scheduleUpdate }: SubscriptionScheduledUpdateRowProps) {\n const { targetPackage } = scheduleUpdate;\n return (\n <Grid container alignItems=\"center\">\n <Grid>\n <ArrowDown color=\"#D94052\" height={20} className=\"stigg-scheduled-updates-arrow-down\" />\n </Grid>\n <Grid item>\n <Typography className=\"stigg-scheduled-updates-description\" variant=\"body1\">\n Downgrade to the <b>{targetPackage?.displayName}</b> plan\n </Typography>\n </Grid>\n </Grid>\n );\n}\n\nfunction SubscriptionScheduledUpdateBillingPeriodChangeRow({ scheduleUpdate }: SubscriptionScheduledUpdateRowProps) {\n const { scheduleVariables } = scheduleUpdate;\n const { billingPeriod } = scheduleVariables as BillingPeriodChangeVariables;\n const currentBillingPeriod = billingPeriod === BillingPeriod.Monthly ? 'annually' : 'monthly';\n const nextBillingPeriod = billingPeriod === BillingPeriod.Monthly ? 'monthly' : 'annually';\n\n return (\n <Grid container alignItems=\"center\">\n <Grid>\n <ArrowDown color=\"#D94052\" height={20} className=\"stigg-scheduled-updates-arrow-down\" />\n </Grid>\n <Grid item>\n <Typography className=\"stigg-scheduled-updates-description\" variant=\"body1\">\n Change from an {currentBillingPeriod} to a <b>{nextBillingPeriod}</b> billing cycle\n </Typography>\n </Grid>\n </Grid>\n );\n}\n\nfunction SubscriptionScheduledUpdateUnitQuantityChangeRow({\n subscription,\n scheduleUpdate,\n}: SubscriptionScheduledUpdateRowProps & { subscription: CustomerPortalSubscription }) {\n const { scheduleVariables } = scheduleUpdate;\n const { newUnitAmount, featureId } = scheduleVariables as UnitAmountChangeVariables;\n const feature = compact(map(subscription.prices, 'feature')).find(({ id }) => id === featureId);\n\n if (!feature) {\n return null;\n }\n\n const { featureUnits, featureUnitsPlural } = feature;\n const newQuantityUnits = newUnitAmount === 1 ? featureUnits : featureUnitsPlural;\n\n return (\n <Grid container alignItems=\"flex-start\" flexWrap=\"nowrap\">\n <Grid>\n <ArrowDown color=\"#D94052\" height={20} className=\"stigg-scheduled-updates-arrow-down\" />\n </Grid>\n <Grid item>\n <Typography className=\"stigg-scheduled-updates-description\" variant=\"body1\">\n Reduce the <b>{featureUnits}</b> quantity to {newUnitAmount} {newQuantityUnits}\n </Typography>\n </Grid>\n </Grid>\n );\n}\n\nexport function SubscriptionScheduledUpdateRow({\n scheduleUpdate,\n subscription,\n}: {\n scheduleUpdate: CustomerPortalSubscriptionScheduledUpdateDataFragment;\n subscription: CustomerPortalSubscription;\n}) {\n switch (scheduleUpdate.subscriptionScheduleType) {\n case SubscriptionScheduleType.Downgrade: {\n return <SubscriptionScheduledUpdateDowngradeRow scheduleUpdate={scheduleUpdate} />;\n }\n\n case SubscriptionScheduleType.BillingPeriod: {\n return <SubscriptionScheduledUpdateBillingPeriodChangeRow scheduleUpdate={scheduleUpdate} />;\n }\n\n case SubscriptionScheduleType.UnitAmount: {\n return (\n <SubscriptionScheduledUpdateUnitQuantityChangeRow scheduleUpdate={scheduleUpdate} subscription={subscription} />\n );\n }\n\n default: {\n return null;\n }\n }\n}\n","import React, { useState } from 'react';\nimport Box from '@mui/material/Box';\nimport Grid from '@mui/material/Grid';\nimport { CustomerPortalSubscription } from '@stigg/js-client-sdk';\nimport styled from '@emotion/styled/macro';\nimport { useTheme } from '@emotion/react';\nimport ClipLoader from 'react-spinners/ClipLoader';\nimport { CustomerPortalTheme } from '../../customerPortalTheme';\nimport Restore from '../../../../assets/restore.svg';\nimport { Icon } from '../../../common/Icon';\nimport { Typography } from '../../../common/Typography';\nimport { SubscriptionScheduledUpdateRow } from './SubscriptionScheduledUpdateRow';\nimport { getSubscriptionScheduleUpdateTexts } from '../../../utils/getSubscriptionScheduleUpdateTexts';\nimport { StyledButton } from '../../common/StyledButton';\n\nexport type SubscriptionScheduledUpdatesAlertProps = {\n subscription: CustomerPortalSubscription;\n onCancelScheduledUpdates?: (subscription: CustomerPortalSubscription) => void;\n theme: CustomerPortalTheme;\n cancelScheduledUpdatesButtonTitle: string;\n};\n\nconst SubscriptionScheduleUpdateAlertContainer = styled(Box)<{ $borderColor: string }>`\n border-bottom: ${({ $borderColor }) => `1px solid ${$borderColor}`};\n border-top-left-radius: 10px;\n border-top-right-radius: 10px;\n margin: -64px -64px 64px -64px;\n padding: 24px 32px;\n`;\n\nconst LoadingIndicator = styled(ClipLoader)`\n margin-left: 4px;\n`;\n\nconst StyledRestoreIcon = styled(Restore)`\n color: ${({ theme }) => theme.stigg.palette.primary};\n path {\n fill: ${({ theme }) => theme.stigg.palette.primary};\n }\n`;\n\nfunction MultipleScheduledUpdates({ subscription }: Pick<SubscriptionScheduledUpdatesAlertProps, 'subscription'>) {\n const { scheduledUpdates } = subscription;\n\n return (\n <>\n <Grid container alignItems=\"center\" justifyContent=\"space-between\" gap={1}>\n <Grid>\n <Typography className=\"stigg-scheduled-updates-description\" variant=\"body1\">\n The following updates will take effect in the next billing cycle:\n </Typography>\n </Grid>\n </Grid>\n <Grid>\n {(scheduledUpdates || []).map((scheduleUpdate) => (\n <SubscriptionScheduledUpdateRow\n key={scheduleUpdate.subscriptionScheduleType}\n scheduleUpdate={scheduleUpdate}\n subscription={subscription}\n />\n ))}\n </Grid>\n </>\n );\n}\n\nfunction SingleScheduledUpdate({ subscription }: Pick<SubscriptionScheduledUpdatesAlertProps, 'subscription'>) {\n const { scheduledUpdates } = subscription;\n const [scheduledUpdate] = scheduledUpdates || [];\n\n const { line1, line2 } = getSubscriptionScheduleUpdateTexts({\n scheduledUpdate,\n subscriptionPrices: subscription.prices,\n billingPeriodRange: subscription.billingPeriodRange,\n options: {\n postfix: 'at the end of the current billing period', // We can later remove this if unnecessary\n },\n });\n\n return (\n <>\n <Grid container alignItems=\"center\" justifyContent=\"space-between\" gap={1}>\n <Grid>\n <Typography className=\"stigg-scheduled-updates-title\" variant=\"body1\" color=\"primary\">\n {line1}\n </Typography>\n </Grid>\n </Grid>\n {line2 && (\n <Grid>\n <Typography className=\"stigg-scheduled-updates-subtitle\" variant=\"body1\" color=\"secondary\">\n {line2}\n </Typography>\n </Grid>\n )}\n </>\n );\n}\n\nexport function SubscriptionScheduledUpdatesAlert({\n subscription,\n onCancelScheduledUpdates,\n theme,\n cancelScheduledUpdatesButtonTitle,\n}: SubscriptionScheduledUpdatesAlertProps) {\n const stiggTheme = useTheme();\n const [isLoading, setIsLoading] = useState(false);\n const { scheduledUpdates } = subscription;\n\n if (!scheduledUpdates || scheduledUpdates.length === 0) {\n return null;\n }\n\n const isSingleScheduledUpdate = scheduledUpdates.length === 1;\n\n return (\n <SubscriptionScheduleUpdateAlertContainer\n $borderColor={theme.borderColor}\n className=\"stigg-scheduled-updates-alert-container\">\n <Grid container alignItems={isSingleScheduledUpdate ? 'center' : 'flex-start'} gap={2}>\n <Grid item display=\"flex\">\n <Icon icon=\"ScheduleBox\" svgPathColor={theme.iconsColor} svgRectColor={theme.iconsBackgroundColor} />\n </Grid>\n\n <Grid item flex={1}>\n {isSingleScheduledUpdate ? (\n <SingleScheduledUpdate subscription={subscription} />\n ) : (\n <MultipleScheduledUpdates subscription={subscription} />\n )}\n </Grid>\n\n {!!onCancelScheduledUpdates && (\n <Grid item>\n <StyledButton\n variant=\"outlined\"\n onClick={() => {\n setIsLoading(true);\n Promise.resolve(onCancelScheduledUpdates(subscription)).finally(() => setIsLoading(false));\n }}>\n {isLoading ? (\n <LoadingIndicator loading size={16} color={stiggTheme.stigg.palette.text.disabled} />\n ) : (\n <StyledRestoreIcon\n style={{ display: 'flex', marginRight: 4 }}\n className=\"stigg-scheduled-updates-cancel-update-button-icon\"\n />\n )}\n <Typography variant=\"body1\" color=\"primary.main\" className=\"stigg-scheduled-updates-cancel-update-button\">\n {cancelScheduledUpdatesButtonTitle}\n </Typography>\n </StyledButton>\n </Grid>\n )}\n </Grid>\n </SubscriptionScheduleUpdateAlertContainer>\n );\n}\n","import styled from '@emotion/styled/macro';\n\nexport const SectionContainer = styled.div<{ $backgroundColor: string; $borderColor: string }>`\n width: 100%;\n display: flex;\n flex-direction: column;\n border-radius: 10px;\n background-color: ${({ $backgroundColor }) => $backgroundColor};\n border: ${({ $borderColor }) => `1px solid ${$borderColor}`};\n padding: 64px;\n`;\n","import { BillingPeriod, Currency } from '@stigg/js-client-sdk';\nimport moment from 'moment';\nimport React from 'react';\nimport { currencyPriceFormatter } from '../../../utils/currencyUtils';\nimport { Typography } from '../../../common/Typography';\n\nexport type NextEstimatedBillProps = {\n billingPeriod: BillingPeriod;\n rangeEnd: string;\n amount: number;\n currency: Currency;\n};\n\nexport function NextEstimatedBill({ billingPeriod, rangeEnd, amount, currency }: NextEstimatedBillProps) {\n return (\n <>\n <Typography variant=\"h6\">Next estimated bill</Typography>\n <Typography variant=\"h1\">{currencyPriceFormatter({ amount, currency, maximumFractionDigits: 2 })}</Typography>\n <Typography as=\"div\" variant=\"body1\" color=\"secondary\">\n Billed {billingPeriod === BillingPeriod.Monthly ? 'monthly' : 'annually'} on{' '}\n <Typography variant=\"body1\" span color=\"primary\">\n {moment.utc(rangeEnd).format('MMM Do, YYYY')}\n </Typography>\n </Typography>\n <Typography variant=\"body1\" color=\"secondary\">\n * Additional tax rates may apply\n </Typography>\n </>\n );\n}\n","import React from 'react';\nimport { Typography } from '../../../common/Typography';\n\ntype NoUpcomingBillingProps = {\n description: string;\n};\n\nexport function NoUpcomingBilling({ description }: NoUpcomingBillingProps) {\n return (\n <>\n <Typography variant=\"h6\" color=\"secondary\">\n No upcoming bill\n </Typography>\n <Typography variant=\"body1\" color=\"secondary\">\n {description}\n </Typography>\n </>\n );\n}\n","import React from 'react';\nimport styled from '@emotion/styled/macro';\nimport Button from '@mui/material/Button';\nimport { Typography } from '../../common/Typography';\n\nconst ContactCustomerSupportLayout = styled.div`\n display: flex;\n flex-direction: column;\n align-items: left;\n gap: 8px;\n`;\n\nconst ContactSupportButton = styled(Button)`\n width: fit-content;\n &.MuiButton-root {\n padding: 0;\n &:hover {\n background: none;\n }\n }\n`;\n\ntype ContactCustomerSupportProps = {\n onContactSupport?: () => void;\n label: string;\n linkLabel: string;\n};\n\nexport function ContactCustomerSupport({ onContactSupport, label, linkLabel }: ContactCustomerSupportProps) {\n const contactSupportText = (\n <Typography color={onContactSupport ? 'primary.main' : 'secondary'}>{linkLabel}</Typography>\n );\n return (\n <ContactCustomerSupportLayout className=\"stigg-contact-support-layout\">\n <Typography className=\"stigg-contact-support-label\" color=\"secondary\">\n {label}\n </Typography>\n {onContactSupport ? (\n <ContactSupportButton\n className=\"stigg-contact-support-button\"\n style={{ textTransform: 'none' }}\n variant=\"text\"\n onClick={onContactSupport}>\n {contactSupportText}\n </ContactSupportButton>\n ) : (\n contactSupportText\n )}\n </ContactCustomerSupportLayout>\n );\n}\n","import styled from '@emotion/styled/macro';\nimport React, { ReactNode } from 'react';\nimport {\n BillingModel,\n CustomerPortalSubscription,\n PricingType,\n SubscriptionScheduleType,\n SubscriptionStatus,\n} from '@stigg/js-client-sdk';\nimport { CustomerPortalTheme } from '../../customerPortalTheme';\nimport { NextEstimatedBill } from './NextEstimatedBill';\nimport { NoUpcomingBilling } from './NoUpcomingBilling';\nimport { ContactCustomerSupport } from '../ContactCustomerSupport';\nimport { CustomerPortalLocalization } from '../../customerPortalTextOverrides';\n\nconst Container = styled.div<{ $borderColor: string }>`\n max-height: 278px;\n display: flex;\n flex-direction: column;\n border-radius: 10px;\n background-color: ${({ theme }) => theme.stigg.palette.backgroundSection};\n border: ${({ $borderColor }) => `1px solid ${$borderColor}`};\n padding: 32px;\n gap: 16px;\n`;\n\nexport type UpcomingBillingProps = {\n subscription: CustomerPortalSubscription;\n theme: CustomerPortalTheme;\n textOverrides: CustomerPortalLocalization;\n onContactSupport?: () => Promise<void> | void;\n};\n\nexport function UpcomingBilling({ subscription, theme, textOverrides, onContactSupport }: UpcomingBillingProps) {\n const { pricingType } = subscription;\n let content: ReactNode;\n const noUsageBasedPrices =\n subscription.prices?.every((price) => price.billingModel !== BillingModel.UsageBased) ?? true;\n const scheduledDowngradeToFree = subscription.scheduledUpdates?.find(\n ({ subscriptionScheduleType, targetPackage }) =>\n subscriptionScheduleType === SubscriptionScheduleType.Downgrade &&\n targetPackage?.pricingType === PricingType.Free,\n );\n\n if (pricingType === PricingType.Free) {\n content = <NoUpcomingBilling description=\"You're on a free plan, so you don’t have any upcoming charges\" />;\n } else if (pricingType === PricingType.Paid) {\n if (scheduledDowngradeToFree && noUsageBasedPrices) {\n content = (\n <NoUpcomingBilling description=\"Your plan will be downgraded to a free plan, so you don’t have any upcoming charges\" />\n );\n } else if (subscription.status === SubscriptionStatus.InTrial) {\n content = (\n <NoUpcomingBilling\n description={`You’re on a free trial of the ${subscription.planName} plan, so you don’t have any upcoming charges`}\n />\n );\n } else {\n const billingPeriod = subscription.prices?.[0]?.billingPeriod;\n const rangeEnd = subscription.billingPeriodRange?.end;\n const total = subscription.totalPrice?.total;\n\n if (billingPeriod && rangeEnd && total) {\n content = (\n <NextEstimatedBill\n billingPeriod={billingPeriod}\n rangeEnd={rangeEnd}\n amount={total.amount}\n currency={total.currency}\n />\n );\n }\n }\n } else if (pricingType === PricingType.Custom) {\n content = (\n <ContactCustomerSupport\n onContactSupport={onContactSupport}\n label={textOverrides.contactSupportTitle}\n linkLabel={textOverrides.contactSupportLink}\n />\n );\n }\n\n return (\n <Container className=\"stigg-subscription-total-price-layout\" $borderColor={theme.borderColor}>\n {content}\n </Container>\n );\n}\n","<svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<path d=\"M12.9469 13.5999H11.9344L11.935 10.7756C11.935 10.6288 11.87 10.4819 11.7557 10.3838L8.62061 7.91816L11.755 5.4532C11.8694 5.35507 11.9344 5.22444 11.9344 5.06132L11.935 2.40004H12.9475C13.225 2.40004 13.4375 2.18755 13.4375 1.91004C13.4375 1.63254 13.225 1.42004 12.9475 1.42004L3.05311 1.42067C2.77561 1.42067 2.56311 1.63316 2.56311 1.91067C2.56311 2.18817 2.77561 2.40067 3.05311 2.40067H4.06561L4.06498 5.06131C4.06498 5.20818 4.12998 5.35505 4.24436 5.45318L7.36244 7.91814L4.245 10.3837C4.13062 10.4819 4.06562 10.6125 4.06562 10.7756V13.5999H3.05313C2.77562 13.5999 2.56313 13.8124 2.56313 14.0899C2.56313 14.3674 2.77562 14.5799 3.05313 14.5799H12.9469C13.2244 14.5799 13.4369 14.3674 13.4369 14.0899C13.4369 13.8124 13.2244 13.5999 12.9469 13.5999ZM5.04498 2.39995H10.9551V4.81627L8.00002 7.16747L5.04498 4.81627V2.39995ZM5.04498 11.0206L8.00002 8.66939L10.9551 11.0044V13.5838H5.04498V11.0206Z\" fill=\"white\"/>\n<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M3.05303 1.25404L12.9474 1.25342C13.317 1.25342 13.6041 1.54053 13.6041 1.91008C13.6041 2.27964 13.317 2.56675 12.9474 2.56675H12.1016L12.101 5.06136V5.06136C12.101 5.2747 12.0135 5.45101 11.8635 5.57973L11.8581 5.58436L8.89014 7.9182L11.8642 10.2572C12.0164 10.3878 12.1016 10.5814 12.1016 10.7757L12.101 13.4333H12.9468C13.3164 13.4333 13.6035 13.7204 13.6035 14.09C13.6035 14.4595 13.3164 14.7466 12.9468 14.7466H3.05304C2.68349 14.7466 2.39638 14.4595 2.39638 14.09C2.39638 13.7204 2.68349 13.4333 3.05304 13.4333H3.89887V10.7757C3.89887 10.5623 3.98635 10.386 4.13639 10.2573L4.14144 10.253L7.09365 7.91821L4.13566 5.57982C3.98346 5.44923 3.89823 5.25562 3.89823 5.06135L3.89882 2.56738H3.05303C2.68348 2.56738 2.39636 2.28026 2.39636 1.91071C2.39636 1.54116 2.68348 1.25405 3.05303 1.25404V1.25404ZM12.9474 1.58675L3.05304 1.58738C2.86758 1.58738 2.7297 1.72525 2.7297 1.91071C2.7297 2.09617 2.86757 2.23404 3.05303 2.23404H4.23223L4.23157 5.06135V5.06135C4.23158 5.15983 4.27538 5.25908 4.35053 5.32476L7.63107 7.91815L4.35113 10.5123C4.2739 10.5795 4.23221 10.6639 4.23221 10.7757V13.7666H3.05304C2.86759 13.7666 2.72971 13.9045 2.72971 14.09C2.72971 14.2754 2.86759 14.4133 3.05304 14.4133H12.9468C13.1323 14.4133 13.2701 14.2754 13.2701 14.09C13.2701 13.9045 13.1323 13.7667 12.9468 13.7667H11.7676L11.7683 10.7757V10.7757C11.7683 10.6772 11.7245 10.5781 11.6495 10.5124L8.35092 7.91819L11.6489 5.32461C11.726 5.25743 11.7676 5.17306 11.7676 5.06136L11.7683 2.23342H12.9474C13.1329 2.23342 13.2708 2.09554 13.2708 1.91008C13.2708 1.72463 13.1329 1.58676 12.9474 1.58675V1.58675ZM4.87823 2.23332H11.1216V4.89669L7.99994 7.3805L4.87823 4.89669V2.23332ZM5.21157 2.56666V4.73593L7.99994 6.95452L10.7883 4.73593V2.56666H5.21157ZM7.99958 8.45673L11.1216 10.9237V13.7505H4.87823V10.9403L7.99958 8.45673ZM8.0003 8.88213L5.21157 11.101V13.4172H10.7883V11.0852L8.0003 8.88213Z\" fill=\"white\"/>\n</svg>\n","import React from 'react';\nimport Tooltip, { tooltipClasses, TooltipProps } from '@mui/material/Tooltip';\nimport styled from '@emotion/styled/macro';\n\nexport type InformationTooltipProps = TooltipProps & { $padding?: number; $maxWidth?: number };\n\nexport const InformationTooltip = styled(\n ({ children, className, placement = 'top', ...props }: InformationTooltipProps) => (\n <Tooltip\n arrow\n placement={placement}\n {...props}\n classes={{ popper: className, tooltip: 'stigg-tooltip', arrow: 'stigg-tooltip-arrow' }}>\n <div>{children}</div>\n </Tooltip>\n ),\n)(({ theme, $padding = 8, $maxWidth = 300 }) => ({\n [`& .${tooltipClasses.tooltip}`]: {\n backgroundColor: theme.stigg.palette.white,\n maxWidth: $maxWidth,\n boxShadow: theme.stigg.shadows.popover,\n padding: $padding,\n borderRadius: theme.stigg.border.radius,\n color: theme.stigg.palette.text.primary,\n },\n [`& .${tooltipClasses.arrow}`]: {\n color: theme.stigg.palette.white,\n },\n}));\n","import React, { CSSProperties, ReactNode, useEffect, useRef, useState } from 'react';\nimport styled, { css } from 'styled-components';\nimport { TooltipProps } from '@mui/material/Tooltip';\nimport { InformationTooltip } from './InformationTooltip';\nimport { Typography, TypographyProps } from './Typography';\n\nconst StyledText = styled(Typography)<{ $maxLines: number; $wordBreak?: boolean; $display: string; $bold?: boolean }>`\n display: ${({ $display }) => $display};\n -webkit-line-clamp: ${({ $maxLines }) => $maxLines};\n -webkit-box-orient: vertical;\n text-overflow: ellipsis;\n overflow: hidden;\n white-space: normal;\n ${({ $wordBreak }) =>\n $wordBreak &&\n css`\n word-break: break-word;\n `}\n\n ${({ $bold }) =>\n $bold &&\n css`\n font-weight: bold;\n `}\n`;\n\nfunction checkTextClamped(element: HTMLSpanElement) {\n return element && (element.clientHeight < element.scrollHeight || element.offsetWidth < element.scrollWidth);\n}\n\nexport const LongText = ({\n leaveDelay,\n children,\n variant,\n color,\n maxLines = 1,\n wordBreak,\n bold,\n tooltipPlacement = 'top',\n className,\n display = '-webkit-box',\n style,\n 'data-testid': dataTestId,\n}: {\n children: ReactNode;\n leaveDelay?: number;\n variant?: TypographyProps['variant'];\n color?: TypographyProps['color'];\n maxLines?: number;\n wordBreak?: boolean;\n bold?: boolean;\n tooltipPlacement?: TooltipProps['placement'];\n className?: string;\n display?: string;\n style?: CSSProperties;\n ['data-testid']?: string;\n}) => {\n const [isTextClamped, setIsTextClamped] = useState(false);\n const ref = useRef<HTMLSpanElement>(null);\n const content = (\n <StyledText\n ref={ref}\n variant={variant}\n color={color}\n $maxLines={maxLines}\n $wordBreak={wordBreak}\n $bold={bold}\n className={className}\n $display={display}\n style={style}\n data-testid={dataTestId}>\n {children}\n </StyledText>\n );\n\n // Trigger recalculate of text clamped since ref is not always exists on first render\n useEffect(() => {\n if (ref?.current) {\n const textClamped = checkTextClamped(ref.current);\n setIsTextClamped(textClamped);\n }\n }, [ref]);\n\n const textClamped = ref?.current && checkTextClamped(ref.current);\n return (\n <span>\n {isTextClamped || textClamped ? (\n <InformationTooltip\n placement={tooltipPlacement}\n leaveDelay={leaveDelay}\n title={<Typography variant=\"body1\">{children}</Typography>}>\n {content}\n </InformationTooltip>\n ) : (\n content\n )}\n </span>\n );\n};\n","import styled from '@emotion/styled/macro';\nimport React from 'react';\nimport { CustomerPortalSubscription, SubscriptionStatus } from '@stigg/js-client-sdk';\nimport Link from '@mui/material/Link';\nimport SandClockIcon from '../../../../assets/sand-clock.svg';\nimport { Typography } from '../../../common/Typography';\nimport { LongText } from '../../../common/LongText';\nimport { OnManageClick } from '../../CustomerPortalContainer';\nimport { CustomerPortalIntentionType } from '../../types';\n\nconst OnTrialBadge = styled.div`\n width: 100%;\n display: flex;\n align-items: center;\n gap: 4px;\n background-color: ${({ theme }) => theme.stigg.palette.warning};\n border-radius: 10px;\n padding: 8px 16px;\n margin-top: 16px;\n`;\n\nconst StyledLink = styled(Link)`\n text-decoration-color: white;\n color: white;\n cursor: pointer;\n`;\n\nexport function TrialPanel({\n subscription,\n includePlanName,\n onManageSubscription,\n}: {\n subscription: CustomerPortalSubscription | undefined;\n includePlanName: boolean;\n onManageSubscription: OnManageClick;\n}) {\n if (subscription?.status !== SubscriptionStatus.InTrial) {\n return null;\n }\n\n return (\n <OnTrialBadge className=\"stigg-subscription-trial-badge\">\n <SandClockIcon className=\"stigg-subscription-trial-badge-image\" />\n\n <div style={{ flex: 1, marginRight: 4 }}>\n <LongText variant=\"body1\" className=\"stigg-subscription-trial-badge-text\" color=\"white\">\n {`${subscription.trialRemainingDays} days remaining in trial`}\n {includePlanName && ` of the ${subscription.planName} plan`}\n </LongText>\n </div>\n\n <StyledLink\n className=\"stigg-subscription-trial-upgrade-button\"\n onClick={() => onManageSubscription({ intentionType: CustomerPortalIntentionType.UPGRADE_TRIAL_PLAN })}>\n <Typography color=\"white\">Upgrade plan</Typography>\n </StyledLink>\n </OnTrialBadge>\n );\n}\n","import React from 'react';\nimport { CustomerPortalSubscription } from '@stigg/js-client-sdk';\nimport { Typography } from '../../../common/Typography';\nimport { TrialPanel } from './TrialPanel';\nimport { CustomerPortalTheme } from '../../customerPortalTheme';\nimport { OnManageClick } from '../../CustomerPortalContainer';\n\ntype SubscriptionViewProps = {\n mainSubscription: CustomerPortalSubscription;\n trialSubscription: CustomerPortalSubscription | undefined;\n onManageSubscription: OnManageClick;\n theme: CustomerPortalTheme;\n};\n\nexport function SubscriptionView({\n mainSubscription,\n trialSubscription,\n onManageSubscription,\n theme,\n}: SubscriptionViewProps) {\n return (\n <div className=\"stigg-subscription-view-layout\">\n <Typography\n className=\"stigg-subscription-plan-name\"\n variant=\"h1\"\n overrideColor={theme.planNameColor}\n style={{ marginTop: 8 }}>\n {mainSubscription.planName} plan\n </Typography>\n\n <TrialPanel\n subscription={trialSubscription}\n includePlanName={trialSubscription?.planName !== mainSubscription.planName}\n onManageSubscription={onManageSubscription}\n />\n </div>\n );\n}\n","import { CustomerPortalEntitlement } from '@stigg/js-client-sdk';\nimport moment from 'moment';\n\nexport const USAGE_PERCENTAGE_WARNING_THRESHOLD = 70;\n\nexport function getUsagePercentage(currentUsage: number, limit: number) {\n return Math.min(Math.floor((currentUsage / limit) * 100), 100);\n}\n\nexport function getUsageProgressStatus(currentUsage: number) {\n let status: 'standard' | 'warning' | 'error';\n\n if (currentUsage < USAGE_PERCENTAGE_WARNING_THRESHOLD) {\n status = 'standard';\n } else if (currentUsage < 100) {\n status = 'warning';\n } else {\n status = 'error';\n }\n\n return status;\n}\n\nexport function getResetUsageText(entitlement: CustomerPortalEntitlement) {\n if (!entitlement.resetPeriod || !entitlement.nextResetDate) {\n return null;\n }\n\n const calculateResetDiff = (unit: 'days' | 'hours' | 'minutes') => {\n return moment.utc(entitlement.nextResetDate).diff(moment.utc(), unit);\n };\n\n switch (entitlement.resetPeriod) {\n case 'MONTH':\n return `Resets monthly - in ${calculateResetDiff('days')} days`;\n case 'WEEK':\n return `Resets weekly - in ${calculateResetDiff('days')} days`;\n case 'DAY':\n return `Resets daily - in ${calculateResetDiff('hours')} hours`;\n case 'HOUR':\n return `Resets hourly - in ${calculateResetDiff('minutes')} minutes`;\n default:\n return null;\n }\n}\n","import styled from '@emotion/styled/macro';\nimport LinearProgress from '@mui/material/LinearProgress';\nimport React from 'react';\nimport { CustomerPortalEntitlement } from '@stigg/js-client-sdk';\nimport Divider from '@mui/material/Divider';\nimport Color from 'color';\nimport { getUsagePercentage, getUsageProgressStatus } from './FeatureUsage.helper';\n\nexport const StyledLinearProgress = styled(LinearProgress, { shouldForwardProp: (prop) => !prop.startsWith('$') })<{\n $progressStatus: 'standard' | 'warning' | 'error';\n}>`\n height: 4px;\n background-color: ${({ theme }) => Color(theme.stigg.palette.primary).alpha(0.4).string()};\n\n span {\n background-color: ${({ $progressStatus, theme }) => {\n switch ($progressStatus) {\n case 'standard':\n return theme.stigg.palette.primary;\n case 'warning':\n return theme.stigg.palette.warning;\n case 'error':\n return theme.stigg.palette.error;\n default:\n return theme.stigg.palette.primary;\n }\n }};\n }\n`;\n\nexport const StyledDivider = styled(Divider)`\n border-style: dotted;\n border-bottom-width: 2px;\n border-color: ${({ theme }) => Color(theme.stigg.palette.outlinedRestingBorder).alpha(0.4).string()};\n`;\n\nexport type FeatureUsageProgressBarProps = {\n entitlement: CustomerPortalEntitlement;\n};\n\nexport function FeatureUsageProgressBar({ entitlement }: FeatureUsageProgressBarProps) {\n if (entitlement.hasUnlimitedUsage) {\n return <StyledDivider />;\n }\n\n const usagePercentage = getUsagePercentage(entitlement.currentUsage || 0, entitlement.usageLimit!);\n const linearProgressStatus = getUsageProgressStatus(usagePercentage);\n\n return (\n <StyledLinearProgress\n $progressStatus={linearProgressStatus}\n className={`stigg-feature-usage-progress-bar-${linearProgressStatus.toString()}`}\n variant=\"determinate\"\n value={usagePercentage}\n />\n );\n}\n","import { CustomerPortalEntitlement } from '@stigg/js-client-sdk';\nimport { FeatureFragment } from '@stigg/api-client-js/src/generated/sdk';\nimport Button from '@mui/material/Button';\nimport React from 'react';\nimport styled from 'styled-components';\nimport { getUsagePercentage, USAGE_PERCENTAGE_WARNING_THRESHOLD } from './FeatureUsage.helper';\nimport { Typography } from '../../../common/Typography';\nimport { CustomerPortalIntentionType, OnBuyMoreCallbackFn } from '../../types';\nimport { OnManageClick } from '../../CustomerPortalContainer';\n\nconst StyledButton = styled(Button)`\n text-transform: none;\n padding: 0;\n white-space: nowrap;\n`;\n\nexport type EntitlementCtaButtonProps = {\n entitlement: Exclude<CustomerPortalEntitlement, 'feature'>;\n feature: FeatureFragment;\n onManageSubscription: OnManageClick | undefined;\n onBuyMore?: OnBuyMoreCallbackFn;\n canBuyMore: boolean;\n canUpgradeSubscription: boolean;\n hasCustomSubscription: boolean;\n};\n\nexport function EntitlementCtaButton({\n entitlement,\n feature,\n onManageSubscription,\n onBuyMore,\n canBuyMore,\n canUpgradeSubscription,\n hasCustomSubscription,\n}: EntitlementCtaButtonProps) {\n if (hasCustomSubscription || entitlement.hasUnlimitedUsage) {\n return null;\n }\n\n if (getUsagePercentage(entitlement.currentUsage || 0, entitlement.usageLimit!) < USAGE_PERCENTAGE_WARNING_THRESHOLD) {\n return null;\n }\n\n if (canBuyMore) {\n return onBuyMore ? (\n <StyledButton variant=\"text\" onClick={() => onBuyMore(feature, entitlement)}>\n <Typography color=\"primary.main\">Buy more</Typography>\n </StyledButton>\n ) : null;\n }\n\n if (canUpgradeSubscription) {\n return onManageSubscription ? (\n <StyledButton\n variant=\"text\"\n onClick={() => onManageSubscription({ intentionType: CustomerPortalIntentionType.UPGRADE_PLAN })}>\n <Typography color=\"primary.main\">Upgrade</Typography>\n </StyledButton>\n ) : null;\n }\n\n return null;\n}\n","import { Currency, CustomerPortalEntitlement } from '@stigg/js-client-sdk';\nimport React from 'react';\nimport { FeatureFragment } from '@stigg/api-client-js/src/generated/sdk';\nimport { Typography } from '../../../common/Typography';\nimport { currencyPriceFormatter } from '../../../utils/currencyUtils';\nimport { FeatureUsageProgressBar } from '../../usage/featureUsage/FeatureUsageProgressBar';\nimport { LongText } from '../../../common/LongText';\nimport { EntitlementCtaButton } from '../../usage/featureUsage/EntitlementCTAButton';\nimport { OnBuyMoreCallbackFn } from '../../types';\nimport { OnManageClick } from '../../CustomerPortalContainer';\n\nexport type UsageBasedChargeProps = {\n entitlement: Exclude<CustomerPortalEntitlement, 'feature'>;\n feature: FeatureFragment;\n amount: number;\n currency: Currency;\n onBuyMore?: OnBuyMoreCallbackFn;\n onManageSubscription: OnManageClick;\n canUpgradeSubscription: boolean;\n hasCustomSubscription: boolean;\n hideChargePrice?: boolean;\n};\n\nexport function ChargeItem({\n amount,\n currency,\n entitlement,\n feature,\n hideChargePrice,\n onBuyMore,\n onManageSubscription,\n canUpgradeSubscription,\n hasCustomSubscription,\n}: UsageBasedChargeProps) {\n return (\n <div className=\"stigg-charge-list-item\" style={{ display: 'flex', flexDirection: 'column', gap: 12 }}>\n <div style={{ display: 'flex', justifyContent: 'space-between', gap: 12 }}>\n <div style={{ display: 'flex', gap: 12 }}>\n <LongText variant=\"body1\" color=\"primary\">\n {feature.displayName}\n </LongText>\n {!hideChargePrice && (\n <LongText variant=\"body1\" color=\"secondary\">\n {currencyPriceFormatter({ amount, currency })} per {feature.featureUnits}\n </LongText>\n )}\n </div>\n\n <div style={{ display: 'flex', gap: 12 }}>\n <EntitlementCtaButton\n entitlement={entitlement}\n feature={feature}\n canBuyMore\n onBuyMore={onBuyMore}\n onManageSubscription={onManageSubscription}\n canUpgradeSubscription={canUpgradeSubscription}\n hasCustomSubscription={hasCustomSubscription}\n />\n <Typography variant=\"body1\" color=\"primary\" style={{ whiteSpace: 'nowrap' }}>\n {entitlement.hasUnlimitedUsage\n ? entitlement.currentUsage?.toLocaleString()\n : `${entitlement.currentUsage?.toLocaleString()} of ${entitlement.usageLimit?.toLocaleString()}`}\n </Typography>\n </div>\n </div>\n\n <FeatureUsageProgressBar entitlement={entitlement} />\n </div>\n );\n}\n","import { BillingModel, CustomerPortalEntitlement, CustomerPortalSubscription } from '@stigg/js-client-sdk';\nimport React from 'react';\nimport { keyBy } from 'lodash';\nimport { ChargeItem } from './ChargeItem';\nimport { OnBuyMoreCallbackFn } from '../../types';\nimport { OnManageClick } from '../../CustomerPortalContainer';\n\nexport type ChargesProps = {\n subscription: CustomerPortalSubscription;\n entitlements: CustomerPortalEntitlement[];\n onBuyMore?: OnBuyMoreCallbackFn;\n onManageSubscription: OnManageClick;\n canUpgradeSubscription: boolean;\n hasCustomSubscription: boolean;\n};\n\nexport function ChargeList({\n subscription,\n entitlements,\n onBuyMore,\n onManageSubscription,\n hasCustomSubscription,\n canUpgradeSubscription,\n}: ChargesProps) {\n const entitlementByFeature = keyBy(entitlements, 'feature.refId');\n\n const filteredSubscriptionPrices = subscription.prices.filter(\n ({ feature, price }) => !!feature && entitlementByFeature[feature.refId] && !!price,\n );\n\n if (!filteredSubscriptionPrices.length) {\n return null;\n }\n\n return (\n <div className=\"stigg-charge-list\" style={{ display: 'flex', flexDirection: 'column', gap: 16, marginTop: 32 }}>\n {filteredSubscriptionPrices.map(({ feature, price, billingModel }) => {\n if (!feature || !price) {\n return null;\n }\n\n const entitlement = entitlementByFeature[feature.refId];\n\n if (!entitlement || !entitlement.feature) {\n return null;\n }\n\n return (\n <ChargeItem\n key={feature.refId}\n entitlement={entitlement}\n feature={entitlement.feature}\n amount={price.amount}\n currency={price.currency}\n hideChargePrice={billingModel === BillingModel.PerUnit}\n onBuyMore={onBuyMore}\n onManageSubscription={onManageSubscription}\n canUpgradeSubscription={canUpgradeSubscription}\n hasCustomSubscription={hasCustomSubscription}\n />\n );\n })}\n </div>\n );\n}\n","import React from 'react';\nimport { CustomerPortalSubscription, PricingType, SubscriptionStatus } from '@stigg/js-client-sdk';\nimport { SubscriptionsOverviewHeader } from './SubscriptionsOverviewHeader';\nimport { SubscriptionTabs } from './tabs/SubscriptionTabs';\nimport { useCustomerPortalContext } from '../CustomerPortalProvider';\nimport { SubscriptionOverviewLoader } from './SubscriptionOverviewLoader';\nimport { CustomerPortalSection } from '../CustomerPortal';\nimport { SubscriptionScheduledUpdatesAlert } from './subscriptionScheduledUpdates/SubscriptionScheduledUpdatesAlert';\nimport { SectionContainer } from '../common/SectionContainer';\nimport { UpcomingBilling } from './upcomingBilling/UpcomingBilling';\nimport { SubscriptionView } from './subscriptionView/SubscriptionView';\nimport { ChargeList } from './charges/ChargeList';\nimport { OnBuyMoreCallbackFn } from '../types';\nimport { OnManageClick } from '../CustomerPortalContainer';\n\nexport type SubscriptionsOverviewProps = {\n onManageSubscription: OnManageClick;\n onBuyMore?: OnBuyMoreCallbackFn;\n onCancelScheduledUpdates?: (subscription: CustomerPortalSubscription) => void;\n onContactSupport?: () => void;\n hiddenSections?: CustomerPortalSection[];\n cancelScheduledUpdatesButtonTitle: string;\n};\n\nexport function SubscriptionsOverview({\n onManageSubscription,\n onBuyMore,\n onCancelScheduledUpdates,\n onContactSupport,\n hiddenSections,\n cancelScheduledUpdatesButtonTitle,\n}: SubscriptionsOverviewProps) {\n const { customerPortal, isLoading, textOverrides, theme } = useCustomerPortalContext();\n const isLoadingData = isLoading || !customerPortal;\n const { subscriptions, entitlements, canUpgradeSubscription } = customerPortal || {};\n\n const activeSubscription = subscriptions?.find(({ status }) => status === SubscriptionStatus.Active);\n const trialSubscription = subscriptions?.find(({ status }) => status === SubscriptionStatus.InTrial);\n const hasCustomSubscription = activeSubscription?.pricingType === PricingType.Custom;\n const mainSubscription = activeSubscription || trialSubscription;\n\n return (\n <SectionContainer\n className=\"stigg-customer-portal-subscriptions-overview\"\n $backgroundColor={theme.backgroundColor}\n $borderColor={theme.borderColor}>\n {!isLoadingData && activeSubscription && activeSubscription.scheduledUpdates && (\n <SubscriptionScheduledUpdatesAlert\n theme={theme}\n subscription={activeSubscription}\n onCancelScheduledUpdates={onCancelScheduledUpdates}\n cancelScheduledUpdatesButtonTitle={cancelScheduledUpdatesButtonTitle}\n />\n )}\n\n {isLoadingData || !mainSubscription ? (\n <SubscriptionOverviewLoader />\n ) : (\n <div className=\"stigg-overview-layout\" style={{ display: 'flex', alignItems: 'flex-start', gap: 64 }}>\n <div style={{ display: 'flex', flexDirection: 'column', flex: 1 }}>\n <SubscriptionsOverviewHeader\n onManageSubscription={onManageSubscription}\n hideManageButton={hasCustomSubscription}\n textOverrides={textOverrides}\n />\n\n <SubscriptionView\n mainSubscription={mainSubscription}\n trialSubscription={trialSubscription}\n theme={theme}\n onManageSubscription={onManageSubscription}\n />\n\n {activeSubscription && entitlements && (\n <ChargeList\n subscription={activeSubscription}\n entitlements={entitlements}\n onBuyMore={onBuyMore}\n onManageSubscription={onManageSubscription}\n canUpgradeSubscription={!!canUpgradeSubscription}\n hasCustomSubscription={hasCustomSubscription}\n />\n )}\n\n <SubscriptionTabs\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion\n customerPortal={customerPortal!}\n hiddenSections={hiddenSections}\n textOverrides={textOverrides}\n theme={theme}\n />\n </div>\n\n <div style={{ display: 'flex', flexDirection: 'column', width: 319, gap: 24 }}>\n <UpcomingBilling\n subscription={mainSubscription}\n theme={theme}\n onContactSupport={onContactSupport}\n textOverrides={textOverrides}\n />\n </div>\n </div>\n )}\n </SectionContainer>\n );\n}\n","import React from 'react';\nimport styled from '@emotion/styled/macro';\nimport { PoweredByStigg } from '../common/PoweredByStigg';\n\nconst CustomerPortalHeaderLayout = styled.div`\n display: flex;\n width: 100%;\n align-items: flex-end;\n justify-content: flex-end;\n margin-bottom: 24px;\n`;\n\nexport function CustomerPortalHeader({ showWatermark }: { showWatermark?: boolean }) {\n return (\n <CustomerPortalHeaderLayout className=\"stigg-customer-portal-header-layout\">\n <PoweredByStigg source=\"customer_portal\" showWatermark={showWatermark} />\n </CustomerPortalHeaderLayout>\n );\n}\n","import React from 'react';\nimport styled from '@emotion/styled/macro';\nimport { ExternalLink as ExternalLinkIcon } from 'react-feather';\nimport { Typography } from '../../common/Typography';\nimport { StyledButton } from './StyledButton';\n\nconst ExternalLinkText = styled(Typography)`\n text-transform: none;\n`;\n\nconst LinkIcon = styled(ExternalLinkIcon)`\n color: ${({ theme }) => theme.stigg.palette.primary};\n`;\n\nexport type ExternalLinkButtonProps = {\n text: string;\n url: string;\n className: string;\n};\n\nexport function ExternalLinkButton({ text, url, className }: ExternalLinkButtonProps) {\n const onClick = () => {\n window.open(url, '_blank');\n };\n\n return (\n <StyledButton\n className={className}\n variant=\"outlined\"\n startIcon={<LinkIcon size={20} strokeWidth={2.5} />}\n onClick={onClick}>\n <ExternalLinkText color=\"primary.main\">{text}</ExternalLinkText>\n </StyledButton>\n );\n}\n","import styled from '@emotion/styled/macro';\nimport React from 'react';\nimport { FontWeight } from 'styled-typography';\nimport { Typography, TypographyProps } from '../../common/Typography';\n\nexport const InformationGridContainer = styled.div`\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n gap: 16px;\n flex: 1 0 0;\n`;\n\nconst InformationGridRow = styled.div`\n display: flex;\n align-items: flex-start;\n gap: 16px;\n align-self: stretch;\n`;\n\nexport type InformationGridProps = {\n title: string;\n rows: Array<{\n classNamePrefix: string;\n label: string;\n value: string;\n labelTypographyProps?: Partial<TypographyProps>;\n valueTypographyProps?: Partial<TypographyProps>;\n }>;\n};\n\nexport function InformationGrid({ title, rows }: InformationGridProps) {\n return (\n <InformationGridContainer>\n <Typography variant=\"h6\" color=\"secondary\" fontWeight={FontWeight.Medium}>\n {title}\n </Typography>\n {rows.map(({ classNamePrefix, label, value, labelTypographyProps, valueTypographyProps }) => (\n <InformationGridRow key={label}>\n <Typography\n className={`${classNamePrefix}-label`}\n variant=\"body1\"\n color=\"secondary\"\n style={{ width: 80 }}\n {...labelTypographyProps}>\n {label}\n </Typography>\n <Typography className={`${classNamePrefix}-text`} variant=\"body1\" color=\"secondary\" {...valueTypographyProps}>\n {value}\n </Typography>\n </InformationGridRow>\n ))}\n </InformationGridContainer>\n );\n}\n","import Skeleton from 'react-loading-skeleton';\nimport React from 'react';\n\nexport function SkeletonButton() {\n return <Skeleton width={220} height={42} />;\n}\n","import React, { ReactElement } from 'react';\nimport Divider from '@mui/material/Divider';\nimport { padStart } from 'lodash';\nimport Skeleton from 'react-loading-skeleton';\nimport { useCustomerPortalContext } from '../CustomerPortalProvider';\nimport { SectionTitle } from '../common/SectionTitle';\nimport { SectionContainer } from '../common/SectionContainer';\nimport { ExternalLinkButton } from '../common/ExternalLinkButton';\nimport { InformationGrid, InformationGridContainer } from './InformationGrid';\nimport { SectionHeader } from '../common/SectionHeader';\nimport { SkeletonButton } from '../common/SkeletonButton';\n\nexport const EMPTY_CHAR = '-';\n\nexport function PaymentDetailsSection() {\n const { customerPortal, isLoading, textOverrides, theme } = useCustomerPortalContext();\n const { billingInformation } = customerPortal || {};\n const isLoadingData = !billingInformation || isLoading;\n\n const items: ReactElement[] = [];\n\n if (isLoadingData) {\n items.push(\n ...[\n <InformationGridContainer key=\"information-loading-data-top\">\n <Skeleton width={220} height={12} />\n <Skeleton width={220} height={12} />\n <Skeleton width={220} height={12} />\n </InformationGridContainer>,\n <Divider key=\"information-loading-data-divider\" orientation=\"vertical\" style={{ minHeight: 93 }} />,\n <InformationGridContainer key=\"information-loading-data-bottom\">\n <Skeleton width={220} height={12} />\n <Skeleton width={220} height={12} />\n <Skeleton width={220} height={12} />\n </InformationGridContainer>,\n ],\n );\n } else {\n items.push(\n <InformationGrid\n key=\"information-billing-data-billed-to\"\n title=\"Billed to\"\n rows={[\n {\n classNamePrefix: 'stigg-customer-name',\n label: 'Name',\n value: billingInformation?.name || EMPTY_CHAR,\n valueTypographyProps: billingInformation?.name ? {} : { color: 'disabled' },\n },\n {\n classNamePrefix: 'stigg-customer-email',\n label: 'Email',\n value: billingInformation?.email || EMPTY_CHAR,\n valueTypographyProps: billingInformation?.email ? {} : { color: 'disabled' },\n },\n ]}\n />,\n );\n\n if (\n billingInformation?.defaultPaymentMethodId &&\n billingInformation.defaultPaymentMethodLast4Digits &&\n billingInformation.defaultPaymentExpirationMonth &&\n billingInformation.defaultPaymentExpirationYear\n ) {\n items.unshift(\n <Divider key=\"information-billing-data-divider\" orientation=\"vertical\" style={{ minHeight: 93 }} />,\n );\n items.unshift(\n <InformationGrid\n key=\"information-billing-data-payment-method\"\n title=\"Payment method\"\n rows={[\n {\n classNamePrefix: 'stigg-credit-card',\n label: 'Card',\n value: `Ending in ${billingInformation.defaultPaymentMethodLast4Digits}`,\n },\n {\n classNamePrefix: 'stigg-credit-card-expiration',\n label: 'Expires',\n value: `${padStart(billingInformation.defaultPaymentExpirationMonth.toString(), 2, '0')}/${\n billingInformation.defaultPaymentExpirationYear\n }`,\n },\n ]}\n />,\n );\n }\n }\n\n if (\n !isLoadingData &&\n !billingInformation?.name &&\n !billingInformation?.email &&\n !billingInformation?.defaultPaymentMethodId\n ) {\n return null;\n }\n\n const editButton = isLoadingData ? (\n <SkeletonButton />\n ) : customerPortal?.billingPortalUrl ? (\n <ExternalLinkButton\n url={customerPortal.billingPortalUrl}\n text={textOverrides.editPaymentDetails}\n className=\"stigg-edit-payment-details-button\"\n />\n ) : null;\n\n return (\n <SectionContainer\n className=\"stigg-payment-details-section-layout\"\n $backgroundColor={theme.backgroundColor}\n $borderColor={theme.borderColor}>\n <SectionHeader className=\"stigg-payment-details-section-header\">\n <SectionTitle\n isLoading={isLoadingData}\n className=\"stigg-payment-details-section-title\"\n title=\"Payment details\"\n />\n {editButton}\n </SectionHeader>\n\n <div style={{ display: 'flex', alignItems: 'stretch', gap: 64 }}>{items}</div>\n </SectionContainer>\n );\n}\n","import styled from '@emotion/styled/macro';\nimport { STIGG_WATERMARK_CLASSNAME } from '../../common/PoweredByStigg';\nimport { SectionContainer } from '../common/SectionContainer';\n\nexport const CustomerPortalPaywallLayout = styled(SectionContainer)<{\n $backgroundColor: string;\n $borderColor: string;\n}>`\n position: relative;\n\n .stigg-paywall-layout {\n width: 100%;\n }\n\n .stigg-paywall-plans-layout {\n flex-wrap: nowrap;\n width: 100%;\n overflow-x: auto;\n justify-content: unset;\n padding: 10px 0px 0px 0px;\n }\n\n .stigg-paywall-plans-layout .stigg-plan-offering-container:first-of-type {\n margin-left: auto;\n }\n .stigg-paywall-plans-layout .stigg-plan-offering-container:last-child {\n margin-right: auto;\n }\n\n .${STIGG_WATERMARK_CLASSNAME} {\n display: none;\n }\n`;\n","import React from 'react';\nimport { CustomerPortalTheme } from '../customerPortalTheme';\nimport { CustomerPortalPaywallLayout } from './CustomerPortalPaywall.style';\nimport { SectionTitle } from '../common/SectionTitle';\nimport { SectionHeader } from '../common/SectionHeader';\n\ntype CustomerPortalPaywallProps = {\n paywallComponent?: React.ReactNode;\n theme: CustomerPortalTheme;\n title: string;\n isLoading: boolean;\n};\n\nexport const CustomerPortalPaywall = React.forwardRef<HTMLDivElement, CustomerPortalPaywallProps>(\n ({ paywallComponent, theme, title, isLoading }, ref) => {\n if (!paywallComponent) {\n return null;\n }\n\n return (\n <CustomerPortalPaywallLayout\n className=\"stigg-customer-portal-paywall-section\"\n ref={ref}\n $backgroundColor={theme.backgroundColor}\n $borderColor={theme.borderColor}>\n <SectionHeader className=\"stigg-customer-portal-paywall-header\">\n <SectionTitle isLoading={isLoading} className=\"stigg-customer-portal-paywall-section-title\" title={title} />\n </SectionHeader>\n\n {paywallComponent}\n </CustomerPortalPaywallLayout>\n );\n },\n);\n","import styled from '@emotion/styled/macro';\n\nexport const CustomerPortalLayout = styled.div`\n width: 100%;\n display: flex;\n flex-direction: column;\n align-items: center;\n\n & * {\n box-sizing: border-box;\n }\n`;\n\nexport const CustomerPortalSections = styled.div`\n width: 100%;\n display: flex;\n flex-direction: column;\n align-items: center;\n row-gap: 24px;\n`;\n","import { FeatureFragment } from '@stigg/api-client-js/src/generated/sdk';\nimport lowercase from 'lodash/lowerCase';\n\nexport function getFeatureDisplayNameText(\n featureDisplayName: string,\n featureUnits: string | undefined | null,\n featureUnitsPlural: string | undefined | null,\n) {\n if (!featureUnits && !featureUnitsPlural) {\n return featureDisplayName;\n }\n\n const displayNameLowerCase = lowercase(featureDisplayName);\n if (\n displayNameLowerCase === lowercase(featureUnits || '') ||\n displayNameLowerCase === lowercase(featureUnitsPlural || '')\n ) {\n return featureDisplayName;\n }\n\n return `${featureDisplayName} (${featureUnitsPlural})`;\n}\n\nexport function getFeatureDisplayName(feature: FeatureFragment) {\n return getFeatureDisplayNameText(feature.displayName, feature.featureUnits, feature.featureUnitsPlural);\n}\n","import styled from '@emotion/styled/macro';\n\nexport const FeatureUsageContainer = styled.div<{ $highlight: boolean; $borderColor: string }>`\n display: flex;\n flex-direction: column;\n padding: 24px;\n border: ${({ $borderColor }) => `1px solid ${$borderColor}`};\n border-radius: 10px;\n row-gap: 16px;\n height: 100%;\n\n ${({ theme, $highlight }) => $highlight && `background-color: ${theme.stigg.palette.backgroundSection}`};\n`;\n","import isUndefined from 'lodash/isUndefined';\nimport React from 'react';\nimport { BillingModel, CustomerPortalEntitlement } from '@stigg/js-client-sdk';\nimport { CustomerPortalSubscriptionPriceFragment } from '@stigg/api-client-js/src/generated/sdk';\nimport { Typography } from '../../../common/Typography';\nimport { useCustomerPortalContext } from '../../CustomerPortalProvider';\nimport { getResetUsageText, getUsagePercentage } from './FeatureUsage.helper';\nimport { getFeatureDisplayName } from '../../../utils/getFeatureName';\nimport { FeatureUsageContainer } from './FeatureUsage.style';\nimport { FeatureUsageProgressBar } from './FeatureUsageProgressBar';\nimport { Icon } from '../../../common/Icon';\nimport { InformationTooltip } from '../../../common/InformationTooltip';\nimport { LongText } from '../../../common/LongText';\nimport { EntitlementCtaButton } from './EntitlementCTAButton';\nimport { OnBuyMoreCallbackFn } from '../../types';\nimport { OnManageClick } from '../../CustomerPortalContainer';\n\nexport type UsageBoxProps = {\n entitlement: CustomerPortalEntitlement;\n subscriptionPrice: CustomerPortalSubscriptionPriceFragment | undefined;\n onManageSubscription: OnManageClick | undefined;\n onBuyMore?: OnBuyMoreCallbackFn;\n hasCustomSubscription: boolean;\n canUpgradeSubscription: boolean;\n};\n\nexport function FeatureUsage({\n entitlement,\n subscriptionPrice,\n onManageSubscription,\n onBuyMore,\n hasCustomSubscription,\n canUpgradeSubscription,\n}: UsageBoxProps) {\n const { theme } = useCustomerPortalContext();\n\n const hasOverageUsage = !entitlement.hasUnlimitedUsage && entitlement.currentUsage! > entitlement.usageLimit!;\n\n if (!entitlement.feature) {\n return null;\n }\n\n return (\n <FeatureUsageContainer $highlight={!!subscriptionPrice} $borderColor={theme.borderColor}>\n <div style={{ display: 'flex', alignItems: 'center', justifyContent: 'space-between', gap: 16 }}>\n <LongText variant=\"body1\">{entitlement.feature && getFeatureDisplayName(entitlement.feature)}</LongText>\n {subscriptionPrice && (\n <InformationTooltip\n title={\n <Typography variant=\"body1\">\n {subscriptionPrice.billingModel === BillingModel.PerUnit\n ? 'Billed for committed usage'\n : 'Billed for actual usage'}\n </Typography>\n }>\n <Icon icon=\"DollarCoin\" svgStrokeColor={theme.iconsColor} />\n </InformationTooltip>\n )}\n </div>\n\n <div style={{ display: 'flex', justifyContent: 'space-between', alignItems: 'center', gap: 8 }}>\n <LongText\n variant=\"body1\"\n color={hasOverageUsage ? 'error' : 'primary'}\n data-testid={`usage-data-${entitlement.feature?.refId}`}>\n {entitlement.currentUsage?.toLocaleString()}\n {!entitlement.hasUnlimitedUsage &&\n ` / ${entitlement.usageLimit?.toLocaleString()} (${getUsagePercentage(\n entitlement.currentUsage || 0,\n entitlement.usageLimit!,\n )}%)`}\n </LongText>\n\n <EntitlementCtaButton\n entitlement={entitlement}\n feature={entitlement.feature}\n onBuyMore={onBuyMore}\n canBuyMore={!!subscriptionPrice}\n onManageSubscription={onManageSubscription}\n canUpgradeSubscription={canUpgradeSubscription}\n hasCustomSubscription={hasCustomSubscription}\n />\n </div>\n\n <FeatureUsageProgressBar entitlement={entitlement} />\n\n {!entitlement.hasUnlimitedUsage &&\n !isUndefined(entitlement.usageLimit) &&\n !isUndefined(entitlement.currentUsage) &&\n entitlement.resetPeriod &&\n entitlement.nextResetDate ? (\n <Typography color=\"secondary\">{getResetUsageText(entitlement)}</Typography>\n ) : null}\n {entitlement.hasUnlimitedUsage && <Typography color=\"secondary\">In current billing period</Typography>}\n </FeatureUsageContainer>\n );\n}\n","import styled from '@emotion/styled/macro';\nimport Grid from '@mui/material/Grid';\nimport { range } from 'lodash';\nimport Skeleton from 'react-loading-skeleton';\nimport React from 'react';\n\nexport const Footer = styled.div`\n margin-top: 32px;\n`;\n\nexport function CustomerUsageLoader() {\n return (\n <Grid container spacing={4} className=\"stigg-subscription-usage-skeleton-layout\">\n {range(6).map((item) => (\n <Grid key={item} item xs={4}>\n <Skeleton width={280} height={120} />\n </Grid>\n ))}\n </Grid>\n );\n}\n","import { MeterType, PricingType, SubscriptionStatus } from '@stigg/js-client-sdk';\nimport React from 'react';\nimport { compact, keyBy } from 'lodash';\nimport { Minus, Plus } from 'react-feather';\nimport Grid from '@mui/material/Grid';\nimport { useCustomerPortalContext } from '../CustomerPortalProvider';\nimport { FeatureUsage } from './featureUsage/FeatureUsage';\nimport { Footer, CustomerUsageLoader } from './CustomerUsageData.style';\nimport { SectionContainer } from '../common/SectionContainer';\nimport { SectionHeader } from '../common/SectionHeader';\nimport { SectionTitle } from '../common/SectionTitle';\nimport { StyledButton } from '../common/StyledButton';\nimport { OnBuyMoreCallbackFn } from '../types';\nimport { OnManageClick } from '../CustomerPortalContainer';\n\nconst MAX_BOXES = 6;\n\nexport type CustomerUsageDataProps = {\n onManageSubscription?: OnManageClick;\n onBuyMore?: OnBuyMoreCallbackFn;\n};\n\nexport function CustomerUsageData({ onManageSubscription, onBuyMore }: CustomerUsageDataProps) {\n const [showAll, setShowAll] = React.useState(false);\n const { customerPortal, isLoading, textOverrides, theme } = useCustomerPortalContext();\n const isLoadingData = isLoading || !customerPortal;\n const { entitlements, subscriptions } = customerPortal || {};\n const meteredEntitlements = entitlements?.filter(\n (entitlement) =>\n entitlement.feature?.meterType === MeterType.Fluctuating ||\n entitlement.feature?.meterType === MeterType.Incremental,\n );\n const activeSubscription = subscriptions?.find(({ status }) => status === SubscriptionStatus.Active);\n const hasCustomSubscription = activeSubscription?.pricingType === PricingType.Custom;\n const canUpgradeSubscription = !!customerPortal?.canUpgradeSubscription;\n\n const subscriptionPriceByFeature = keyBy(activeSubscription?.prices, 'feature.refId');\n const entitlementByFeature = keyBy(meteredEntitlements, 'feature.refId');\n\n // sort features by prices first, then other entitlements\n const priceEntitlements = compact(\n activeSubscription?.prices.map(\n (subscriptionPrice) => subscriptionPrice.feature && entitlementByFeature[subscriptionPrice.feature.refId],\n ),\n );\n const otherEntitlements = compact(\n meteredEntitlements?.filter((entitlement) => !subscriptionPriceByFeature[entitlement.feature!.refId]),\n );\n const sortedEntitlements = [...priceEntitlements, ...otherEntitlements];\n\n // 4 -> 3 per row, 6 -> 2 per row\n const xs = sortedEntitlements.length > 2 ? 4 : 6;\n\n const entitlementsToShow = showAll ? sortedEntitlements : sortedEntitlements.slice(0, MAX_BOXES);\n\n const toggleShowAll = () => setShowAll((prevState) => !prevState);\n\n if (!isLoadingData && !meteredEntitlements?.length) {\n return null;\n }\n\n return (\n <SectionContainer\n className=\"stigg-subscription-usage-layout\"\n $backgroundColor={theme.backgroundColor}\n $borderColor={theme.borderColor}>\n <SectionHeader>\n <SectionTitle\n title={textOverrides.usageTabTitle}\n className=\"stigg-customer-portal-usage-section-title\"\n isLoading={isLoadingData}\n />\n </SectionHeader>\n\n {isLoadingData ? (\n <CustomerUsageLoader />\n ) : (\n <>\n <Grid container spacing={4}>\n {entitlementsToShow.map((entitlement) => (\n <Grid key={entitlement.feature!.refId} item xs={xs}>\n <FeatureUsage\n key={entitlement.feature!.refId}\n subscriptionPrice={subscriptionPriceByFeature[entitlement.feature!.refId]}\n entitlement={entitlement}\n onManageSubscription={onManageSubscription}\n onBuyMore={onBuyMore}\n hasCustomSubscription={hasCustomSubscription}\n canUpgradeSubscription={canUpgradeSubscription}\n />\n </Grid>\n ))}\n </Grid>\n\n {sortedEntitlements.length > MAX_BOXES && (\n <Footer>\n <StyledButton\n className=\"stigg-usage-toggle-many-button\"\n variant=\"text\"\n startIcon={showAll ? <Minus /> : <Plus />}\n onClick={toggleShowAll}>\n {showAll ? 'Show less' : 'Show more'}\n </StyledButton>\n </Footer>\n )}\n </>\n )}\n </SectionContainer>\n );\n}\n","import React, { useRef } from 'react';\nimport { SubscriptionsOverview } from './subscriptionOverview/SubscriptionsOverview';\nimport { CustomerPortalHeader } from './CustomerPortalHeader';\nimport { PaymentDetailsSection } from './billing/PaymentDetailsSection';\nimport { CustomerPortalPaywall } from './paywall/CustomerPortalPaywall';\nimport { useCustomerPortalContext } from './CustomerPortalProvider';\nimport { CustomerPortalLayout, CustomerPortalSections } from './CustomerPortal.style';\nimport { CustomerPortalProps } from './CustomerPortal';\nimport { InvoicesSection, useStiggContext } from '../..';\nimport { CustomerUsageData } from './usage/CustomerUsageData';\nimport { CustomerPortalIntentionType } from './types';\n\nexport type OnManageClick = ({ intentionType }: { intentionType: CustomerPortalIntentionType }) => void;\n\nexport function CustomerPortalContainer({\n onManageSubscription,\n onBuyMore,\n onCancelScheduledUpdates,\n onContactSupport,\n paywallComponent,\n hiddenSections,\n}: CustomerPortalProps) {\n const { stigg } = useStiggContext();\n const { customerPortal, textOverrides, theme, isLoading } = useCustomerPortalContext();\n const customerPortalSectionRef = useRef<HTMLDivElement>(null);\n\n const onManageClick: OnManageClick = ({ intentionType }: { intentionType: CustomerPortalIntentionType }) => {\n if (onManageSubscription) {\n void onManageSubscription({\n intentionType,\n customerSubscriptions: customerPortal?.subscriptions ?? [],\n });\n } else {\n customerPortalSectionRef?.current?.scrollIntoView({ behavior: 'smooth' });\n }\n };\n\n const shouldShowUsage = !hiddenSections?.some((section) => section === 'usage');\n const shouldShowPaymentDetails = !hiddenSections?.some(\n (section) => section === 'paymentDetails' || section === 'billingInformation',\n );\n const shouldShowInvoices = !hiddenSections?.some(\n (section) => section === 'invoices' || section === 'billingInformation',\n );\n\n return (\n <CustomerPortalLayout className=\"stigg-customer-portal-layout\">\n <CustomerPortalHeader showWatermark={stigg.isWidgetWatermarkEnabled && !!customerPortal} />\n <CustomerPortalSections className=\"stigg-customer-portal-sections\">\n <SubscriptionsOverview\n onCancelScheduledUpdates={onCancelScheduledUpdates}\n onBuyMore={onBuyMore}\n onManageSubscription={onManageClick}\n onContactSupport={onContactSupport}\n hiddenSections={hiddenSections}\n cancelScheduledUpdatesButtonTitle={textOverrides.cancelScheduledUpdatesButtonTitle}\n />\n {shouldShowUsage && <CustomerUsageData onManageSubscription={onManageClick} onBuyMore={onBuyMore} />}\n <CustomerPortalPaywall\n ref={customerPortalSectionRef}\n paywallComponent={paywallComponent}\n theme={theme}\n title={textOverrides.paywallSectionTitle}\n isLoading={!customerPortal || isLoading}\n />\n {shouldShowPaymentDetails && <PaymentDetailsSection />}\n {shouldShowInvoices && <InvoicesSection />}\n </CustomerPortalSections>\n </CustomerPortalLayout>\n );\n}\n","import React from 'react';\nimport { CustomerPortalSubscription } from '@stigg/js-client-sdk';\nimport { CustomerPortalProvider } from './CustomerPortalProvider';\nimport { CustomerPortalContainer } from './CustomerPortalContainer';\nimport { DeepPartial } from '../../types';\nimport { CustomerPortalLocalization } from './customerPortalTextOverrides';\nimport { CustomerPortalTheme } from './customerPortalTheme';\nimport { OnBuyMoreCallbackFn, OnManageSubscriptionFn } from './types';\n\nexport type CustomerPortalSection =\n | 'usage'\n | 'addons'\n | 'promotionalEntitlements'\n | 'billingInformation'\n | 'paymentDetails'\n | 'invoices';\n\nexport type CustomerPortalProps = {\n onManageSubscription?: OnManageSubscriptionFn;\n onBuyMore?: OnBuyMoreCallbackFn;\n onCancelScheduledUpdates?: (subscription: CustomerPortalSubscription) => Promise<void> | void;\n onContactSupport?: () => Promise<void> | void;\n paywallComponent?: React.ReactNode;\n hiddenSections?: CustomerPortalSection[];\n textOverrides?: DeepPartial<CustomerPortalLocalization>;\n theme?: DeepPartial<CustomerPortalTheme>;\n resourceId?: string;\n productId?: string;\n};\n\nexport function CustomerPortal({ textOverrides, theme, resourceId, productId, ...restProps }: CustomerPortalProps) {\n return (\n <CustomerPortalProvider textOverrides={textOverrides} theme={theme} resourceId={resourceId} productId={productId}>\n <CustomerPortalContainer {...restProps} />\n </CustomerPortalProvider>\n );\n}\n","import React from 'react';\nimport { useCustomerPortalContext } from '../CustomerPortalProvider';\nimport { SectionTitle } from '../common/SectionTitle';\nimport { ExternalLinkButton } from '../common/ExternalLinkButton';\nimport { SectionContainer } from '../common/SectionContainer';\nimport { SectionHeader } from '../common/SectionHeader';\nimport { SkeletonButton } from '../common/SkeletonButton';\n\nexport function InvoicesSection() {\n const { customerPortal, isLoading, textOverrides, theme } = useCustomerPortalContext();\n const isLoadingData = !customerPortal || isLoading;\n\n const viewInvoiceHistoryButton = isLoadingData ? (\n <SkeletonButton />\n ) : customerPortal?.billingPortalUrl ? (\n <ExternalLinkButton\n url={customerPortal.billingPortalUrl}\n text={textOverrides.viewInvoiceHistory}\n className=\"stigg-view-invoice-history-button\"\n />\n ) : null;\n\n if (!isLoadingData && !customerPortal?.billingPortalUrl) {\n return null;\n }\n\n return (\n <SectionContainer\n className=\"stigg-invoices-section-layout\"\n $backgroundColor={theme.backgroundColor}\n $borderColor={theme.borderColor}>\n <SectionHeader className=\"stigg-invoices-section-header\">\n <SectionTitle\n isLoading={isLoadingData}\n className=\"stigg-invoices-section-title\"\n title={textOverrides.invoicesTitle}\n />\n {viewInvoiceHistoryButton}\n </SectionHeader>\n </SectionContainer>\n );\n}\n","import sortBy from 'lodash/sortBy';\nimport { Addon, BillingPeriod, Currency, SubscriptionAddon } from '@stigg/js-client-sdk';\n\ntype FilterAddonsBaseProps = {\n billingPeriod: BillingPeriod;\n currency: Currency;\n billingCountryCode?: string;\n};\n\nexport const sortAddons = (addons: Addon[]) => {\n return sortBy(addons, 'displayName');\n};\n\nexport const sortSubscriptionAddons = (addons: SubscriptionAddon[]) => {\n return sortBy(addons, 'addon.displayName');\n};\n\nfunction filterAddonPricePointsByBillingPeriod(addon: Addon, billingPeriod: BillingPeriod) {\n return addon.pricePoints.some((pricePoint) => pricePoint.billingPeriod === billingPeriod);\n}\n\nfunction mapAddonPricePointsByBillingCountryCode({\n addon,\n currency,\n billingCountryCode,\n}: {\n addon: Addon;\n currency: Currency;\n billingCountryCode?: string;\n}) {\n return {\n ...addon,\n pricePoints: addon.pricePoints.filter(\n (pricePoint) =>\n pricePoint.currency === currency &&\n (billingCountryCode ? pricePoint.billingCountryCode === billingCountryCode : true),\n ),\n };\n}\n\nexport function filterAddons({\n addons,\n billingPeriod,\n billingCountryCode,\n currency,\n}: { addons?: Addon[] } & FilterAddonsBaseProps): Addon[] {\n return (\n addons\n ?.filter((addon) => filterAddonPricePointsByBillingPeriod(addon, billingPeriod))\n ?.map((addon) => mapAddonPricePointsByBillingCountryCode({ addon, currency, billingCountryCode })) || []\n );\n}\n\nexport function filterSubscriptionAddons({\n addons,\n billingPeriod,\n billingCountryCode,\n currency,\n}: { addons?: SubscriptionAddon[] } & FilterAddonsBaseProps): SubscriptionAddon[] {\n return (\n addons\n ?.filter((addon) => filterAddonPricePointsByBillingPeriod(addon.addon, billingPeriod))\n ?.map((addon) => ({\n ...addon,\n addon: mapAddonPricePointsByBillingCountryCode({ addon: addon.addon, currency, billingCountryCode }),\n })) || []\n );\n}\n","import cloneDeep from 'lodash/cloneDeep';\nimport remove from 'lodash/remove';\nimport { Addon, BillingPeriod, Currency, Plan, Subscription, SubscriptionAddon } from '@stigg/js-client-sdk';\nimport { useCheckoutContext } from '../CheckoutProvider';\nimport {\n filterAddons,\n filterSubscriptionAddons,\n sortAddons,\n sortSubscriptionAddons,\n} from '../steps/addons/addon.utils';\n\nexport type AddonsStepState = {\n addons: SubscriptionAddon[];\n initialAddons?: SubscriptionAddon[];\n availableAddons?: Addon[];\n};\n\ntype GetAddonsStepInitialStateProps = {\n plan?: Plan;\n billingPeriod: BillingPeriod;\n activeSubscription?: Subscription | null;\n billingCountryCode?: string;\n};\n\nexport function getAddonsStepInitialState({\n activeSubscription,\n plan,\n billingPeriod,\n billingCountryCode,\n}: GetAddonsStepInitialStateProps): AddonsStepState {\n let addons: SubscriptionAddon[] = [];\n const currency = plan?.pricePoints?.[0]?.currency || Currency.Usd;\n const availableAddons = sortAddons(\n filterAddons({\n addons: plan?.compatibleAddons,\n billingPeriod,\n billingCountryCode,\n currency,\n }),\n );\n\n const activeSubscriptionAddons = filterSubscriptionAddons({\n addons: activeSubscription?.addons,\n billingPeriod,\n billingCountryCode,\n currency,\n });\n\n if (activeSubscriptionAddons?.length && availableAddons?.length) {\n addons = sortSubscriptionAddons(\n activeSubscriptionAddons.filter((addon) => availableAddons.some((planAddon) => planAddon.id === addon.addon.id)),\n );\n }\n\n return { addons, initialAddons: cloneDeep(addons), availableAddons };\n}\n\nfunction useSetAddon() {\n const [, setState] = useCheckoutContext();\n\n return (addon: Addon, quantity: number) =>\n setState((draft) => {\n const addonToUpdate = draft.addonsStep.addons.find((currentAddon) => currentAddon.addon.id === addon.id);\n\n if (addonToUpdate) {\n addonToUpdate.quantity = quantity;\n } else {\n draft.addonsStep.addons.push({ addon, quantity });\n draft.addonsStep.addons = sortSubscriptionAddons(draft.addonsStep.addons);\n }\n });\n}\n\nfunction useRemoveAddon() {\n const [, setState] = useCheckoutContext();\n\n return (addonId: string) =>\n setState((draft) => {\n remove(draft.addonsStep.addons, (addon) => addon.addon.id === addonId);\n });\n}\n\nfunction useAddonsState() {\n const [{ addonsStep }] = useCheckoutContext();\n return addonsStep;\n}\n\nexport function useAddonsStepModel() {\n const state = useAddonsState();\n\n return {\n ...state,\n setAddon: useSetAddon(),\n removeAddon: useRemoveAddon(),\n };\n}\n","import { useCheckoutContext } from '../CheckoutProvider';\n\nexport type WidgetState = {\n readOnly?: boolean;\n isLoadingCheckoutData?: boolean;\n isValid?: boolean;\n};\n\nfunction useCheckoutState() {\n const [{ checkout, widgetState, checkoutLocalization }] = useCheckoutContext();\n return { checkoutState: checkout, widgetState, checkoutLocalization };\n}\n\nfunction useSetWidgetReadonly() {\n const [, setState] = useCheckoutContext();\n\n return (readOnly: boolean) =>\n setState((draft) => {\n draft.widgetState.readOnly = readOnly;\n });\n}\n\nfunction useSetIsValid() {\n const [, setState] = useCheckoutContext();\n\n return (isValid: boolean) =>\n setState((draft) => {\n draft.widgetState.isValid = isValid;\n });\n}\n\nexport function useCheckoutModel() {\n const { checkoutState, widgetState, checkoutLocalization } = useCheckoutState();\n\n return {\n checkoutState,\n widgetState,\n checkoutLocalization,\n setWidgetReadOnly: useSetWidgetReadonly(),\n setIsValid: useSetIsValid(),\n };\n}\n","import { GetCheckoutStateResults } from '@stigg/js-client-sdk';\nimport { useEffect, useState } from 'react';\nimport logger from '../../../services/logger';\nimport { useStiggContext } from '../../StiggProvider';\nimport { MockCheckoutStateCallback } from '../types';\n\ntype UseLoadCheckoutProps = {\n planId: string;\n resourceId?: string;\n billingCountryCode?: string;\n onMockCheckoutState?: MockCheckoutStateCallback;\n};\n\nexport function useLoadCheckout({ planId, resourceId, billingCountryCode, onMockCheckoutState }: UseLoadCheckoutProps) {\n const { stigg } = useStiggContext();\n const [isLoading, setIsLoading] = useState(true);\n const [checkout, setCheckout] = useState<GetCheckoutStateResults | null>();\n\n useEffect(() => {\n const loadCheckout = async () => {\n try {\n const checkout = await stigg.getCheckoutState({ planId, resourceId, billingCountryCode });\n setCheckout(checkout);\n } catch (err) {\n logger.error(`Failed to load checkout ${(err as any)?.message}`, err as any);\n } finally {\n setIsLoading(false);\n }\n };\n\n if (onMockCheckoutState) {\n setIsLoading(false);\n setCheckout(onMockCheckoutState({ planId, resourceId, billingCountryCode }));\n return;\n }\n\n if (stigg.isCustomerLoaded) {\n setIsLoading(true);\n void loadCheckout();\n }\n }, [stigg, stigg.isCustomerLoaded, resourceId, planId, billingCountryCode, onMockCheckoutState]);\n\n return {\n checkout,\n isLoading,\n };\n}\n","import { Price } from '@stigg/js-client-sdk';\n\nexport const getValidPriceQuantity = (price: Price, quantity: number) => {\n if (price.minUnitQuantity && quantity < price.minUnitQuantity) {\n return price.minUnitQuantity;\n }\n if (price.maxUnitQuantity && quantity > price.maxUnitQuantity) {\n return price.maxUnitQuantity;\n }\n return quantity;\n};\n","import keyBy from 'lodash/keyBy';\nimport compact from 'lodash/compact';\nimport { BillableFeatureInput, BillingPeriod, TiersMode } from '@stigg/api-client-js/src/generated/sdk';\nimport { BillableFeature, BillingModel, Plan, Price, Subscription } from '@stigg/js-client-sdk';\nimport { useCheckoutContext } from '../CheckoutProvider';\nimport { getTierByQuantity } from '../../utils/priceTierUtils';\nimport { getValidPriceQuantity } from '../../utils/priceUtils';\n\nexport type PlanStepState = {\n billingPeriod: BillingPeriod;\n billableFeatures: BillableFeatureInput[];\n billingCountryCode?: string;\n};\n\ntype GetPlanStepInitialStateProps = {\n preferredBillingPeriod?: BillingPeriod;\n plan?: Plan;\n activeSubscription?: Subscription | null;\n billingCountryCode?: string;\n preconfiguredBillableFeatures: BillableFeature[];\n};\n\nconst getBillingPeriod = (billingPeriod: BillingPeriod, hasMonthlyPrices?: boolean, hasAnnualPrices?: boolean) => {\n if (billingPeriod === BillingPeriod.Monthly && hasMonthlyPrices) {\n return billingPeriod;\n }\n if (billingPeriod === BillingPeriod.Annually && hasAnnualPrices) {\n return billingPeriod;\n }\n return null;\n};\n\nconst isInAdvanceCommitmentCharge = ({ pricingModel }: Price) => {\n return pricingModel === BillingModel.PerUnit;\n};\n\nfunction getBillableFeatures(\n preconfiguredBillableFeatures: BillableFeature[],\n planPrices?: Price[],\n activeSubscription?: Subscription | null,\n): BillableFeature[] {\n if (!planPrices) return [];\n\n const preconfBillableFeaturesByFeatureId = keyBy(preconfiguredBillableFeatures, 'featureId');\n\n const quantityByFeatureId = keyBy(\n compact(\n activeSubscription?.prices?.map((charge) => {\n const { feature } = charge;\n if (!feature || !isInAdvanceCommitmentCharge(charge)) {\n return null;\n }\n\n return {\n featureId: feature.featureId,\n quantity: feature.unitQuantity || null,\n };\n }),\n ),\n 'featureId',\n );\n\n return compact(\n planPrices?.map((price) => {\n const featureId = price.feature?.featureId;\n if (!featureId || !isInAdvanceCommitmentCharge(price)) {\n return null;\n }\n\n let quantity;\n const preconfiguredQuantity =\n preconfBillableFeaturesByFeatureId[featureId]?.quantity || quantityByFeatureId[featureId]?.quantity;\n\n quantity = getValidPriceQuantity(price, preconfiguredQuantity || 1);\n\n if (price.isTieredPrice && price.tiersMode === TiersMode.Volume) {\n const tier = getTierByQuantity(price.tiers!, quantity);\n quantity = tier!.upTo!;\n }\n\n return {\n featureId,\n quantity,\n };\n }),\n );\n}\n\nfunction resolveBillingPeriod({\n plan,\n activeSubscription,\n preferredBillingPeriod,\n}: {\n plan?: Plan;\n activeSubscription?: Subscription | null;\n preferredBillingPeriod?: BillingPeriod;\n}) {\n const hasMonthlyPrices = plan?.pricePoints.some((pricePoint) => pricePoint.billingPeriod === BillingPeriod.Monthly);\n const hasAnnualPrices = plan?.pricePoints.some((pricePoint) => pricePoint.billingPeriod === BillingPeriod.Annually);\n\n if (preferredBillingPeriod) {\n const billingPeriod = getBillingPeriod(preferredBillingPeriod, hasMonthlyPrices, hasAnnualPrices);\n if (billingPeriod) {\n return billingPeriod;\n }\n }\n\n const isUpdate = activeSubscription?.plan?.id === plan?.id;\n if (isUpdate) {\n return activeSubscription?.price?.billingPeriod || BillingPeriod.Monthly;\n }\n\n if (activeSubscription?.prices && activeSubscription?.prices.length > 0) {\n const billingPeriod = getBillingPeriod(\n activeSubscription?.prices[0].billingPeriod,\n hasMonthlyPrices,\n hasAnnualPrices,\n );\n if (billingPeriod) {\n return billingPeriod;\n }\n }\n\n return hasAnnualPrices ? BillingPeriod.Annually : BillingPeriod.Monthly;\n}\n\nexport function getPlanStepInitialState({\n preferredBillingPeriod,\n plan,\n activeSubscription,\n billingCountryCode,\n preconfiguredBillableFeatures,\n}: GetPlanStepInitialStateProps): PlanStepState {\n const billingPeriod = resolveBillingPeriod({ plan, activeSubscription, preferredBillingPeriod });\n const planPrices = plan?.pricePoints.filter((pricePoint) => pricePoint.billingPeriod === billingPeriod);\n const billableFeatures = getBillableFeatures(preconfiguredBillableFeatures, planPrices, activeSubscription);\n\n return {\n billingPeriod,\n billableFeatures,\n billingCountryCode,\n };\n}\n\nfunction usePlanState() {\n const [{ planStep }] = useCheckoutContext();\n return planStep;\n}\n\nfunction useSetBillableFeature() {\n const [, setState] = useCheckoutContext();\n\n return (featureId: string, quantity: number) =>\n setState((draft) => {\n const billableFeature = draft.planStep.billableFeatures.find(\n (billableFeature) => billableFeature.featureId === featureId,\n );\n\n if (billableFeature) {\n billableFeature.quantity = quantity;\n } else {\n draft.planStep.billableFeatures.push({ featureId, quantity });\n }\n });\n}\n\nfunction useSetBillingPeriod() {\n const [, setState] = useCheckoutContext();\n\n return (billingPeriod: BillingPeriod) =>\n setState((draft) => {\n draft.planStep.billingPeriod = billingPeriod;\n });\n}\n\nexport function usePlanStepModel() {\n const state = usePlanState();\n\n return {\n ...state,\n setBillingPeriod: useSetBillingPeriod(),\n setBillableFeature: useSetBillableFeature(),\n };\n}\n","import { Addon } from '@stigg/js-client-sdk';\nimport { useCheckoutContext } from '../CheckoutProvider';\n\nexport enum CheckoutStepKey {\n PLAN = 'PLAN',\n ADDONS = 'ADDONS',\n PAYMENT = 'PAYMENT',\n}\n\nexport type CheckoutStep = {\n key: CheckoutStepKey;\n label: string;\n};\n\nconst CHECKOUT_STEPS: CheckoutStep[] = [\n { key: CheckoutStepKey.PLAN, label: 'Plan' },\n { key: CheckoutStepKey.ADDONS, label: 'Add-ons' },\n { key: CheckoutStepKey.PAYMENT, label: 'Payment details' },\n];\n\nexport type ProgressBarState = {\n activeStep: number;\n completedSteps: number[];\n steps: CheckoutStep[];\n isDisabled: boolean;\n};\n\nconst INITIAL_STATE: ProgressBarState = {\n activeStep: 0,\n completedSteps: [],\n steps: CHECKOUT_STEPS,\n isDisabled: false,\n};\n\nexport function getProgressBarInitialState({ availableAddons }: { availableAddons?: Addon[] }) {\n if (availableAddons?.length === 0) {\n return { ...INITIAL_STATE, steps: CHECKOUT_STEPS.filter((step) => step.key !== CheckoutStepKey.ADDONS) };\n }\n\n return INITIAL_STATE;\n}\n\nfunction useProgressBarState() {\n const [{ progressBar }] = useCheckoutContext();\n return progressBar;\n}\n\nfunction useSetActiveStep() {\n const [, setState] = useCheckoutContext();\n return (stepNumber: number) =>\n setState(({ progressBar }) => {\n progressBar.activeStep = stepNumber;\n });\n}\nfunction useMarkStepAsCompleted() {\n const [, setState] = useCheckoutContext();\n return (stepNumber: number) =>\n setState(({ progressBar }) => {\n progressBar.completedSteps.push(stepNumber);\n });\n}\n\nfunction isCheckoutComplete(progressBar: ProgressBarState) {\n return progressBar.completedSteps.length >= progressBar.steps.length - 1;\n}\n\nfunction useGoNext() {\n const [, setState] = useCheckoutContext();\n return () =>\n setState(({ progressBar }) => {\n if (progressBar.isDisabled) {\n return;\n }\n\n if (!progressBar.completedSteps.includes(progressBar.activeStep)) {\n progressBar.completedSteps.push(progressBar.activeStep);\n }\n\n if (progressBar.activeStep < progressBar.steps.length - 1) {\n progressBar.activeStep += 1;\n }\n });\n}\n\nfunction useSetIsDisabled() {\n const [, setState] = useCheckoutContext();\n return (isDisabled?: boolean) =>\n setState(({ progressBar }) => {\n progressBar.isDisabled = !!isDisabled;\n });\n}\n\nexport function useProgressBarModel() {\n const progressBarState = useProgressBarState();\n const currentStep = progressBarState.steps[progressBarState.activeStep];\n\n return {\n currentStep,\n progressBarState,\n isLastStep: progressBarState.activeStep === progressBarState.steps.length - 1,\n isCheckoutComplete: isCheckoutComplete(progressBarState),\n setActiveStep: useSetActiveStep(),\n markStepAsCompleted: useMarkStepAsCompleted(),\n goNext: useGoNext(),\n setIsDisabled: useSetIsDisabled(),\n };\n}\n","import { useCheckoutContext } from '../CheckoutProvider';\nimport { AddonsStepState } from './useAddonsStepModel';\nimport { PromotionCodeState } from './useCouponModel';\nimport { PaymentStepState } from './usePaymentStepModel';\nimport { PlanStepState } from './usePlanStepModel';\n\nexport type SubscriptionState = PlanStepState &\n PromotionCodeState &\n Pick<AddonsStepState, 'addons'> &\n Pick<PaymentStepState, 'billingAddress' | 'taxPercentage'>;\n\nexport function useSubscriptionModel(): SubscriptionState {\n const [{ planStep, addonsStep, promotionCode, paymentStep }] = useCheckoutContext();\n\n return {\n ...planStep,\n addons: addonsStep.addons,\n promotionCode,\n billingAddress: paymentStep.billingAddress,\n taxPercentage: paymentStep.taxPercentage,\n };\n}\n","import { useCallback, useEffect, useState } from 'react';\nimport isEmpty from 'lodash/isEmpty';\nimport { BillingAddress, PreviewSubscription, StiggClient, SubscriptionPreviewV2 } from '@stigg/js-client-sdk';\nimport { useStiggContext } from '../../StiggProvider';\nimport { useCheckoutContext } from '../CheckoutProvider';\nimport { useCheckoutModel } from './useCheckoutModel';\nimport { SubscriptionState, useSubscriptionModel } from './useSubscriptionModel';\nimport { MockCheckoutPreviewCallback } from '../types';\n\nfunction mapBillingInformation({\n billingAddress,\n taxPercentage,\n}: {\n billingAddress?: BillingAddress;\n taxPercentage?: number;\n}): Pick<PreviewSubscription, 'billingInformation'> {\n if (!billingAddress && !taxPercentage) {\n return {};\n }\n\n return {\n billingInformation: {\n ...(billingAddress ? { billingAddress } : {}),\n ...(taxPercentage ? { taxPercentage } : {}),\n },\n };\n}\n\ntype UsePreviewSubscriptionProps = {\n onMockCheckoutPreview?: MockCheckoutPreviewCallback;\n};\n\nexport type PreviewSubscriptionProps = {\n customerId?: string;\n planId?: string;\n resourceId?: string;\n stigg: StiggClient;\n} & SubscriptionState &\n UsePreviewSubscriptionProps;\n\nconst previewSubscription = async ({\n stigg,\n customerId,\n planId,\n resourceId,\n promotionCode,\n addons,\n billableFeatures,\n billingCountryCode,\n billingPeriod,\n billingAddress,\n taxPercentage,\n onMockCheckoutPreview,\n}: PreviewSubscriptionProps) => {\n const estimateAddons = addons.map(({ addon, quantity }) => ({ addonId: addon.id, quantity }));\n let subscriptionPreview: SubscriptionPreviewV2 | null = null;\n let errorMessage: string | null = null;\n\n try {\n if (customerId && planId) {\n const previewSubscriptionProps: PreviewSubscription = {\n customerId,\n planId,\n resourceId,\n billingCountryCode,\n addons: estimateAddons,\n billingPeriod,\n promotionCode,\n billableFeatures: isEmpty(billableFeatures) ? undefined : billableFeatures,\n ...mapBillingInformation({ billingAddress, taxPercentage }),\n };\n\n subscriptionPreview = onMockCheckoutPreview\n ? onMockCheckoutPreview(previewSubscriptionProps)\n : await stigg.previewSubscription(previewSubscriptionProps);\n }\n } catch (error) {\n const [, errorMsg] = (error as any)?.message?.split('Error:') || [];\n\n errorMessage = errorMsg?.trim();\n }\n\n return { subscriptionPreview, errorMessage };\n};\n\nexport const usePreviewSubscriptionAction = ({ onMockCheckoutPreview }: UsePreviewSubscriptionProps = {}) => {\n const { stigg } = useStiggContext();\n const subscription = useSubscriptionModel();\n const [{ resourceId }] = useCheckoutContext();\n const { checkoutState, widgetState } = useCheckoutModel();\n const { plan, customer } = checkoutState || {};\n\n const previewSubscriptionAction = useCallback(\n async ({ promotionCode }: { promotionCode?: string | null } = {}) => {\n if (!widgetState.isValid) {\n return { subscriptionPreview: null, errorMessage: null };\n }\n\n return previewSubscription({\n stigg,\n customerId: customer?.id,\n planId: plan?.id,\n resourceId,\n addons: subscription.addons,\n billableFeatures: subscription.billableFeatures,\n billingCountryCode: subscription.billingCountryCode,\n billingPeriod: subscription.billingPeriod,\n billingAddress: subscription.billingAddress,\n taxPercentage: subscription.taxPercentage,\n promotionCode: promotionCode ?? subscription.promotionCode,\n onMockCheckoutPreview,\n });\n },\n [\n stigg,\n customer?.id,\n plan?.id,\n resourceId,\n subscription.addons,\n subscription.billableFeatures,\n subscription.billingCountryCode,\n subscription.billingPeriod,\n subscription.billingAddress,\n subscription.taxPercentage,\n subscription.promotionCode,\n widgetState.isValid,\n onMockCheckoutPreview,\n ],\n );\n\n return { previewSubscriptionAction };\n};\n\nconst SUBSCRIPTION_PREVIEW_DEBOUNCE_TIME = 500;\n\nexport const usePreviewSubscription = ({ onMockCheckoutPreview }: UsePreviewSubscriptionProps = {}) => {\n const [subscriptionPreview, setSubscriptionPreview] = useState<SubscriptionPreviewV2 | null>(null);\n const [isFetchingSubscriptionPreview, setIsFetchingSubscriptionPreview] = useState(false);\n\n const { previewSubscriptionAction } = usePreviewSubscriptionAction({ onMockCheckoutPreview });\n\n useEffect(() => {\n const estimateSubscription = async () => {\n const { subscriptionPreview } = await previewSubscriptionAction();\n if (subscriptionPreview) {\n setSubscriptionPreview(subscriptionPreview);\n }\n\n setIsFetchingSubscriptionPreview(false);\n };\n\n setIsFetchingSubscriptionPreview(true);\n\n const timer = setTimeout(() => {\n setIsFetchingSubscriptionPreview(true);\n void estimateSubscription();\n }, SUBSCRIPTION_PREVIEW_DEBOUNCE_TIME);\n\n return () => {\n clearTimeout(timer);\n };\n }, [previewSubscriptionAction]);\n\n return { subscriptionPreview, isFetchingSubscriptionPreview };\n};\n","import { BillingAddress, Customer } from '@stigg/js-client-sdk';\n\nimport { useCheckoutContext } from '../CheckoutProvider';\n\nexport type PaymentStepState = {\n useNewPaymentMethod: boolean;\n errorMessage?: string;\n billingAddress?: BillingAddress;\n taxPercentage?: number;\n};\n\ntype GetPaymentStepInitialStateProps = {\n customer?: Customer;\n taxPercentage?: number;\n};\n\nexport function getPaymentStepInitialState({\n customer,\n taxPercentage,\n}: GetPaymentStepInitialStateProps): PaymentStepState {\n return {\n useNewPaymentMethod: !customer?.paymentMethodDetails,\n taxPercentage,\n };\n}\n\nfunction useSetUseNewPaymentMethod() {\n const [, setState] = useCheckoutContext();\n\n return (useNewPaymentMethod: boolean) =>\n setState((draft) => {\n draft.paymentStep.useNewPaymentMethod = useNewPaymentMethod;\n });\n}\n\nfunction useSetErrorMessage() {\n const [, setState] = useCheckoutContext();\n\n return (errorMessage?: string) =>\n setState((draft) => {\n draft.paymentStep.errorMessage = errorMessage;\n });\n}\n\nfunction useSetBillingAddress() {\n const [, setState] = useCheckoutContext();\n\n return (billingAddress?: BillingAddress) =>\n setState((draft) => {\n draft.paymentStep.billingAddress = billingAddress;\n });\n}\n\nfunction usePaymentState() {\n const [{ paymentStep }] = useCheckoutContext();\n return paymentStep;\n}\n\nexport function usePaymentStepModel() {\n const state = usePaymentState();\n\n return {\n ...state,\n setUseNewPaymentMethod: useSetUseNewPaymentMethod(),\n setErrorMessage: useSetErrorMessage(),\n setBillingAddress: useSetBillingAddress(),\n };\n}\n","import {\n BillingPeriod,\n DiscountType,\n Plan,\n SubscriptionPreviewDiscount,\n SubscriptionPreviewTaxDetails,\n DiscountDurationType,\n} from '@stigg/js-client-sdk';\nimport moment from 'moment';\nimport merge from 'lodash/merge';\nimport { DeepPartial } from '../../../types';\nimport { currencyPriceFormatter } from '../../utils/currencyUtils';\n\nexport type CheckoutLocalization = {\n changePlan: string;\n billingPeriodsTitle: string;\n addAddonText: string;\n newPaymentMethodText: string;\n newPaymentMethodCardTitle: string;\n newPaymentMethodBillingAddressTitle: string;\n summary: {\n title: string;\n planName: (params: { plan: Plan }) => string;\n addCouponCodeText: string;\n couponCodeTitle: string;\n addonsSectionTitle: string;\n discountsSectionTitle: string;\n onlyPayAsYouGoText: string;\n startsAtText: string;\n proratedTotalDueText: string;\n baseChargeText: string | ((params: { billingPeriod: BillingPeriod }) => string);\n totalText: string;\n totalDueText: string;\n totalBillingPeriodText: (params: { billingPeriod: BillingPeriod }) => string;\n discountText: (params: { discountDetails: SubscriptionPreviewDiscount; currency: string }) => string;\n appliedCreditsTitle: string;\n taxTitle: (params: { taxDetails: SubscriptionPreviewTaxDetails }) => string;\n checkoutSuccessText: string;\n payAsYouGoTooltipText: string;\n changesWillApplyAtEndOfBillingPeriod: string | ((params: { billingPeriodEnd: Date }) => string);\n creditsForUnusedTimeText: (params: { credits: string }) => string;\n };\n checkoutButton: {\n nextText: string;\n noChangesText: string;\n updateText: string;\n downgradeToFreeText: string;\n upgradeText: string;\n };\n downgradeToFree: {\n alertText: (params: { plan: Plan }) => string;\n freePlanHeader: (params: { plan: Plan }) => string;\n freePlanName: (params: { plan: Plan }) => string;\n freePlanPriceText: (params: { plan: Plan }) => string;\n paidPlanHeader: (params: { plan: Plan }) => string;\n paidPlanName: (params: { plan: Plan }) => string;\n paidPlanPriceText: (params: { plan: Plan; billingPeriod?: BillingPeriod }) => string;\n };\n};\n\nexport function getResolvedCheckoutLocalize(\n localizeOverride?: DeepPartial<CheckoutLocalization>,\n): CheckoutLocalization {\n const checkoutDefaultLocalization: CheckoutLocalization = {\n changePlan: 'Change',\n billingPeriodsTitle: 'Billing cycle',\n addAddonText: 'Add',\n newPaymentMethodText: 'New payment method',\n newPaymentMethodBillingAddressTitle: 'Billing address',\n newPaymentMethodCardTitle: 'Payment method',\n summary: {\n title: 'Order summary',\n planName: ({ plan }) => `${plan.displayName} plan`,\n addCouponCodeText: 'Add promotion code',\n couponCodeTitle: 'Promotion code',\n addonsSectionTitle: 'Add-ons',\n discountsSectionTitle: 'Discounts',\n onlyPayAsYouGoText: 'Varies by usage',\n startsAtText: 'Starts at ',\n proratedTotalDueText: 'Prorated charge today',\n baseChargeText: () => 'Base charge',\n totalText: 'Total',\n totalDueText: 'Total due today',\n totalBillingPeriodText: ({ billingPeriod }) => `Billed ${billingPeriod.toLowerCase()}`,\n appliedCreditsTitle: 'Applied credits',\n creditsForUnusedTimeText: ({ credits }) =>\n `Your account will be granted credits worth ${credits} for unused time, which will be automatically applied to future payments.`,\n discountText: ({ discountDetails, currency }) => {\n let discountText = '';\n if (discountDetails.type === DiscountType.Percentage) {\n discountText = `${discountDetails.value}% off`;\n } else {\n discountText = `${currencyPriceFormatter({ amount: discountDetails.value, currency })}`;\n }\n\n let discountTextPostfix = '';\n switch (discountDetails.durationType) {\n case DiscountDurationType.Once: {\n discountTextPostfix = ' once';\n break;\n }\n case DiscountDurationType.Repeating: {\n const prefix = discountDetails.type === DiscountType.Fixed ? ' per month' : '';\n discountTextPostfix = `${prefix} for ${discountDetails.durationInMonths} months`;\n\n break;\n }\n\n case DiscountDurationType.Forever:\n default: {\n discountTextPostfix = '';\n }\n }\n\n return `${discountText}${discountTextPostfix}`;\n },\n taxTitle: ({ taxDetails }) => `Tax (${taxDetails?.percentage}%)`,\n changesWillApplyAtEndOfBillingPeriod: ({ billingPeriodEnd }) =>\n `Your changes will take effect at the end of your current billing cycle on ${moment(billingPeriodEnd).format(\n 'MMMM D, YYYY',\n )}.`,\n checkoutSuccessText: 'Changes applied',\n payAsYouGoTooltipText: 'Billed according to actual usage',\n },\n checkoutButton: {\n nextText: 'Next',\n noChangesText: 'No changes',\n updateText: 'Update subscription',\n downgradeToFreeText: 'Cancel subscription',\n upgradeText: 'Subscribe',\n },\n downgradeToFree: {\n alertText: () => `We’re sorry to see you cancel your paid subscription 😭`,\n freePlanHeader: () => 'New plan',\n freePlanName: ({ plan }) => `${plan.displayName}`,\n freePlanPriceText: () => 'Free',\n paidPlanHeader: () => 'Current plan',\n paidPlanName: ({ plan }) => `${plan.displayName}`,\n paidPlanPriceText: ({ billingPeriod }) =>\n `Paid plan${billingPeriod ? `, billed ${billingPeriod.toLowerCase()}` : ''}`,\n },\n };\n\n return merge(checkoutDefaultLocalization, localizeOverride);\n}\n","import { CheckoutConfiguration } from '@stigg/js-client-sdk';\nimport { StiggTheme } from '../../../theme/types';\nimport { DeepPartial } from '../../../types';\n\nexport type CheckoutTheme = {\n primary: string;\n textColor: string;\n backgroundColor: string;\n borderColor: string;\n summaryBackgroundColor: string;\n paymentInputBackgroundColor?: string;\n paymentInputBorderColor?: string;\n paymentInputBorderRadius?: string;\n};\n\nconst defaultCheckoutTheme: CheckoutTheme = {\n primary: 'rgb(50, 126, 238)',\n textColor: 'rgb(0, 30, 108)',\n backgroundColor: 'rgb(255, 255, 255)',\n borderColor: 'rgb(235, 237, 243)',\n summaryBackgroundColor: 'rgb(109, 121, 144)',\n};\n\nexport function getResolvedCheckoutTheme(\n globalTheme: StiggTheme,\n themeOverride?: DeepPartial<CheckoutTheme>,\n // all the remote colors override theme colors, no need to use them here\n _remoteConfiguration?: CheckoutConfiguration | null,\n): CheckoutTheme {\n const { palette: globalPalette } = globalTheme || {};\n\n return {\n primary: themeOverride?.primary || globalPalette?.primary || defaultCheckoutTheme.primary,\n textColor: themeOverride?.textColor || globalPalette?.text.primary || defaultCheckoutTheme.textColor,\n backgroundColor:\n themeOverride?.backgroundColor || globalPalette?.backgroundPaper || defaultCheckoutTheme.backgroundColor,\n borderColor: themeOverride?.borderColor || globalPalette?.outlinedBorder || defaultCheckoutTheme.borderColor,\n summaryBackgroundColor:\n themeOverride?.summaryBackgroundColor ||\n globalPalette?.backgroundHighlight ||\n defaultCheckoutTheme.summaryBackgroundColor,\n paymentInputBackgroundColor: themeOverride?.paymentInputBackgroundColor,\n paymentInputBorderColor: themeOverride?.paymentInputBorderColor,\n paymentInputBorderRadius: themeOverride?.paymentInputBorderRadius,\n };\n}\n","import { produce } from 'immer';\nimport React, { useCallback, useContext, useEffect, useMemo, useState } from 'react';\nimport { BillableFeature, BillingPeriod, GetCheckoutStateResults } from '@stigg/js-client-sdk';\nimport { CustomizedTheme, SdkThemeProvider, useStiggTheme } from '../../theme/Theme';\nimport { DeepPartial } from '../../types';\nimport { mapCheckoutConfiguration, mapTypography } from '../common/mapExternalTheme';\nimport {\n AddonsStepState,\n getAddonsStepInitialState,\n getPaymentStepInitialState,\n getPlanStepInitialState,\n getProgressBarInitialState,\n PaymentStepState,\n PlanStepState,\n ProgressBarState,\n useLoadCheckout,\n WidgetState,\n} from './hooks';\nimport { CheckoutLocalization, getResolvedCheckoutLocalize } from './configurations/textOverrides';\nimport { CheckoutTheme, getResolvedCheckoutTheme } from './configurations/theme';\nimport { StiggTheme } from '../../theme/types';\nimport { BillingInformation, MockCheckoutStateCallback } from './types';\nimport { defaultCheckoutTypography } from './configurations/typography';\n\nexport interface CheckoutContextState {\n checkout?: GetCheckoutStateResults | null;\n checkoutLocalization: CheckoutLocalization;\n stiggTheme: StiggTheme;\n theme: CheckoutTheme;\n resourceId?: string;\n promotionCode?: string;\n progressBar: ProgressBarState;\n planStep: PlanStepState;\n addonsStep: AddonsStepState;\n paymentStep: PaymentStepState;\n widgetState: WidgetState;\n}\n\nexport const CheckoutContext = React.createContext<\n [CheckoutContextState, (updater: (state: CheckoutContextState) => void) => void] | null\n>(null);\n\nCheckoutContext.displayName = 'CheckoutContext';\n\nexport const useCheckoutContext = () => {\n const ctx = useContext(CheckoutContext);\n if (!ctx) {\n throw new Error(\n 'Could not find Checkout context; You need to wrap your checkout components in an <CheckoutProvider> component.',\n );\n }\n return ctx;\n};\n\nconst CheckoutContextProvider: React.FC<{ children: React.ReactNode; initialState: CheckoutContextState }> = ({\n children,\n initialState,\n}) => {\n const [state, innerSetState] = useState(initialState);\n\n useEffect(() => {\n innerSetState(initialState);\n }, [initialState]);\n\n const setState = useCallback(\n (updater: (state: CheckoutContextState) => void) => innerSetState((old) => produce(old, (draft) => updater(draft))),\n [innerSetState],\n );\n\n const [contextValue, setContextValue] = useMemo(() => [state, setState], [setState, state]);\n\n return <CheckoutContext.Provider value={[contextValue, setContextValue]}>{children}</CheckoutContext.Provider>;\n};\n\nexport type CheckoutProviderProps = {\n textOverrides?: DeepPartial<CheckoutLocalization>;\n theme?: DeepPartial<CheckoutTheme>;\n resourceId?: string;\n planId: string;\n preferredBillingPeriod?: BillingPeriod;\n billingCountryCode?: string;\n billableFeatures?: BillableFeature[];\n billingInformation?: BillingInformation;\n onMockCheckoutState?: MockCheckoutStateCallback;\n};\n\nexport function CheckoutProvider({\n children,\n textOverrides,\n theme,\n preferredBillingPeriod,\n billableFeatures,\n resourceId,\n planId,\n billingCountryCode,\n billingInformation,\n onMockCheckoutState,\n}: {\n children: React.ReactNode;\n} & CheckoutProviderProps) {\n const { checkout, isLoading } = useLoadCheckout({ resourceId, planId, billingCountryCode, onMockCheckoutState });\n const configuration: CustomizedTheme = checkout?.configuration\n ? mapCheckoutConfiguration(checkout.configuration)\n : { typography: mapTypography(defaultCheckoutTypography) };\n const globalTheme: StiggTheme = useStiggTheme(configuration);\n\n const initialState = useMemo(() => {\n const checkoutTheme = getResolvedCheckoutTheme(globalTheme, theme, checkout?.configuration);\n const checkoutLocalization = getResolvedCheckoutLocalize(textOverrides);\n const planStep = getPlanStepInitialState({\n preferredBillingPeriod,\n plan: checkout?.plan,\n activeSubscription: checkout?.activeSubscription,\n billingCountryCode,\n preconfiguredBillableFeatures: billableFeatures ?? [],\n });\n const addonsStep = getAddonsStepInitialState({\n plan: checkout?.plan,\n billingPeriod: planStep.billingPeriod,\n activeSubscription: checkout?.activeSubscription,\n });\n const paymentStep = getPaymentStepInitialState({\n customer: checkout?.customer,\n taxPercentage: billingInformation?.taxDetails?.taxPercentage,\n });\n const progressBar = getProgressBarInitialState({\n availableAddons: isLoading ? undefined : addonsStep.availableAddons,\n });\n\n const initialState: CheckoutContextState = {\n checkout,\n checkoutLocalization,\n stiggTheme: globalTheme,\n theme: checkoutTheme,\n progressBar,\n planStep,\n addonsStep,\n paymentStep,\n resourceId: checkout?.resource?.id,\n widgetState: { readOnly: false, isValid: true, isLoadingCheckoutData: isLoading },\n };\n\n return initialState;\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [preferredBillingPeriod, billingCountryCode, checkout, isLoading, billingInformation?.taxDetails?.taxPercentage]);\n\n return (\n <SdkThemeProvider key={checkout?.plan.id} componentTheme={configuration}>\n <CheckoutContextProvider initialState={initialState}>{children}</CheckoutContextProvider>\n </SdkThemeProvider>\n );\n}\n","import styled from '@emotion/styled/macro';\nimport Box from '@mui/material/Box';\n\nexport const CheckoutLayout = styled.div`\n margin: auto;\n width: 100%;\n min-height: 760px;\n max-width: 920px;\n display: flex;\n position: relative;\n flex-direction: column;\n align-items: center;\n\n padding: 16px 32px;\n border-radius: 10px;\n background-color: ${({ theme }) => theme.stigg.palette.backgroundPaper};\n border: ${({ theme }) => `1px solid ${theme.stigg.palette.outlinedBorder}`};\n\n & * {\n box-sizing: border-box;\n }\n`;\nexport const CheckoutContent = styled(Box)`\n display: flex;\n align-items: flex-start;\n gap: 32px;\n flex-wrap: wrap;\n width: 100%;\n`;\n\nexport const CheckoutPanel = styled(Box)`\n display: flex;\n flex-direction: column;\n gap: 0;\n flex: 2;\n`;\n","import styled from '@emotion/styled/macro';\nimport LinearProgress, { linearProgressClasses } from '@mui/material/LinearProgress';\nimport Button, { buttonClasses } from '@mui/material/Button';\nimport { Icon } from '../../common/Icon';\n\nexport const StyledProgress = styled(LinearProgress, { shouldForwardProp: (prop) => !prop.startsWith('$') })<{\n $disabled?: boolean;\n}>(({ theme, $disabled }) => ({\n [`&.${linearProgressClasses.root}`]: {\n borderRadius: theme.stigg.border.radius,\n backgroundColor: theme.stigg.palette.outlinedBorder,\n },\n [`& .${linearProgressClasses.bar}`]: {\n backgroundColor: $disabled ? theme.stigg.palette.primaryLight : theme.stigg.palette.primary,\n },\n}));\n\nexport const StyledStepButton = styled(Button)(() => ({\n [`&.${buttonClasses.root}`]: {\n textTransform: 'none',\n lineHeight: 'inherit',\n justifyContent: 'flex-start',\n padding: '8px 4px',\n },\n}));\n\nexport const StyledIcon = styled(Icon, { shouldForwardProp: (prop) => !prop.startsWith('$') })<{\n $disabled?: boolean;\n $shouldFill?: boolean;\n}>(({ theme, $disabled, $shouldFill }) => ({\n circle: {\n stroke: $disabled ? theme.stigg.palette.primaryLight : theme.stigg.palette.primary,\n fill: $shouldFill ? ($disabled ? theme.stigg.palette.primaryLight : theme.stigg.palette.primary) : undefined,\n },\n}));\n","import React from 'react';\nimport Grid from '@mui/material/Grid';\nimport Box from '@mui/material/Box';\nimport StepIcon from '@mui/material/StepIcon';\nimport { useCheckoutModel, useProgressBarModel } from '../hooks';\nimport { Typography } from '../../common/Typography';\nimport { StyledProgress, StyledStepButton, StyledIcon } from './CheckoutProgressBar.style';\nimport { Icons } from '../../common/Icon';\nimport { Skeleton } from '../components/Skeletons.style';\n\nexport const CheckoutProgressBar = () => {\n const { progressBarState, setActiveStep } = useProgressBarModel();\n const { widgetState } = useCheckoutModel();\n const { readOnly, isLoadingCheckoutData } = widgetState;\n const { activeStep, completedSteps, steps } = progressBarState || {};\n const progress = ((activeStep + 1) * 100) / steps.length;\n\n return (\n <Box sx={{ width: '100%', mb: 3 }}>\n <StyledProgress variant=\"determinate\" value={progress} $disabled={readOnly} />\n <Grid container display=\"flex\">\n {steps.map(({ key, label }, index) => {\n const isCompleted = completedSteps.includes(index);\n const isDisabled =\n readOnly ||\n (index > activeStep && !isCompleted && !completedSteps.includes(index - 1)) ||\n (activeStep !== index && progressBarState.isDisabled);\n const checkedIcon: Icons = isDisabled ? 'OutlinedCheckedCircleDisabled' : 'OutlinedCheckedCircle';\n\n return (\n <Grid key={key} item display=\"flex\" flexDirection=\"row\" flex={1} justifyContent=\"flex-start\">\n {isLoadingCheckoutData ? (\n <Skeleton width={120} height={20} style={{ marginTop: 8 }} />\n ) : (\n <StyledStepButton onClick={() => setActiveStep(index)} fullWidth disabled={isDisabled}>\n <Grid item display=\"flex\" flexDirection=\"row\" alignItems=\"center\" gap={1}>\n <StepIcon\n icon={\n <StyledIcon\n icon={isCompleted ? checkedIcon : 'OutlinedCircle'}\n $disabled={isDisabled}\n $shouldFill={isCompleted}\n />\n }\n />\n\n <Typography variant=\"h6\" color={isDisabled ? 'primary.main.light' : 'primary.main'}>\n {label}\n </Typography>\n </Grid>\n </StyledStepButton>\n )}\n </Grid>\n );\n })}\n </Grid>\n </Box>\n );\n};\n","import sortBy from 'lodash/sortBy';\nimport { useMemo } from 'react';\n\nimport { BillingModel, Price } from '@stigg/js-client-sdk';\n\nconst CHARGES_BILLING_MODEL_ORDER = [BillingModel.FlatFee, BillingModel.PerUnit, BillingModel.UsageBased];\n\nexport const sortCharges = (charges: Price[]) => {\n return sortBy(charges, [\n (charge) => CHARGES_BILLING_MODEL_ORDER.indexOf(charge.pricingModel),\n (charge) => charge.feature?.displayName,\n ]);\n};\n\nexport const useChargesSort = (charges: Price[]) => {\n return useMemo(() => sortCharges(charges), [charges]);\n};\n","import { useCheckoutContext } from '../CheckoutProvider';\n\nexport type PromotionCodeState = {\n promotionCode?: string;\n};\n\nfunction usePromotionCodeState() {\n const [{ promotionCode }] = useCheckoutContext();\n return promotionCode;\n}\n\nfunction useSetPromotionCode() {\n const [, setState] = useCheckoutContext();\n\n return (promotionCode: string) =>\n setState((draft) => {\n draft.promotionCode = promotionCode;\n });\n}\n\nexport function usePromotionCodeModel() {\n const promotionCode = usePromotionCodeState();\n\n return {\n promotionCode,\n setPromotionCode: useSetPromotionCode(),\n };\n}\n","<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<g id=\"plus\">\n<path id=\"Shape\" d=\"M10 4.16666V15.8333\" stroke=\"#327EEE\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n<path id=\"Shape_2\" d=\"M4.16699 10H15.8337\" stroke=\"#327EEE\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n</g>\n</svg>\n","import React from 'react';\nimport styled from '@emotion/styled/macro';\n\nimport PlusIcon from '../../../assets/plus-icon.svg';\nimport { Typography } from '../../common/Typography';\nimport { Button } from '../components';\nimport { CheckoutLocalization } from '../configurations/textOverrides';\n\nconst StyledPlusIcon = styled(PlusIcon, { shouldForwardProp: (prop) => !prop.startsWith('$') })<{ $disabled: boolean }>`\n margin-right: 8px;\n path {\n stroke: ${({ theme, $disabled }) => ($disabled ? theme.stigg.palette.text.disabled : theme.stigg.palette.primary)};\n }\n`;\n\nexport type AddPromotionCodeButtonProps = {\n onAddClick: () => void;\n checkoutLocalization: CheckoutLocalization;\n disabled: boolean;\n};\n\nexport const AddPromotionCodeButton = ({ onAddClick, checkoutLocalization, disabled }: AddPromotionCodeButtonProps) => (\n <Button\n disabled={disabled}\n fullWidth\n className=\"stigg-checkout-summary-add-coupon-code-button\"\n sx={{\n textTransform: 'none',\n justifyContent: 'flex-start',\n color: disabled ? 'text.disabled' : 'primary.main',\n }}\n variant=\"text\"\n size=\"medium\"\n onClick={onAddClick}>\n <StyledPlusIcon $disabled={disabled} className=\"stigg-checkout-summary-add-coupon-code-button-icon\" />\n <Typography\n className=\"stigg-checkout-change-plan-button-text\"\n color={disabled ? 'disabled' : 'primary.main'}\n style={{ lineHeight: '24px' }}\n variant=\"h3\">\n {checkoutLocalization.summary.addCouponCodeText}\n </Typography>\n </Button>\n);\n","import React, { useState } from 'react';\n\nimport styled from '@emotion/styled/macro';\nimport CircularProgress from '@mui/material/CircularProgress';\nimport Grid from '@mui/material/Grid';\n\nimport { Icon } from '../../common/Icon';\nimport { Typography } from '../../common/Typography';\nimport { Button, InputField } from '../components';\nimport { usePreviewSubscriptionAction } from '../hooks';\nimport { usePromotionCodeModel } from '../hooks/useCouponModel';\nimport { AddPromotionCodeButton } from './AddPromotionCodeButton';\nimport { PromotionCodeSectionProps } from './PromotionCodeSection';\n\nconst CouponCodeAddButton = styled(Button)`\n padding: 4px 10px;\n min-width: unset;\n border-radius: ${({ theme }) => theme.stigg.border.radius};\n display: flex;\n align-items: center;\n`;\n\nexport const AddPromotionCode = ({\n disabled,\n checkoutLocalization,\n onMockCheckoutPreview,\n}: PromotionCodeSectionProps) => {\n const { setPromotionCode: persistPromotionCode } = usePromotionCodeModel();\n const [showInput, setShowInput] = useState(false);\n const [promotionCode, setPromotionCode] = React.useState('');\n const [isLoading, setIsLoading] = React.useState(false);\n const [errorMessage, setErrorMessage] = React.useState('');\n const { previewSubscriptionAction } = usePreviewSubscriptionAction({ onMockCheckoutPreview });\n\n const handlePromotionCode = async () => {\n setIsLoading(true);\n setErrorMessage('');\n\n const { subscriptionPreview, errorMessage } = await previewSubscriptionAction({ promotionCode });\n\n if (!errorMessage && subscriptionPreview?.immediateInvoice?.discountDetails) {\n persistPromotionCode(promotionCode.toUpperCase());\n setShowInput(false);\n } else if (errorMessage) {\n setErrorMessage(errorMessage);\n }\n setIsLoading(false);\n };\n\n if (!showInput) {\n return (\n <AddPromotionCodeButton\n disabled={disabled}\n onAddClick={() => setShowInput(true)}\n checkoutLocalization={checkoutLocalization}\n />\n );\n }\n\n return (\n <Grid>\n <Typography variant=\"body1\" color={errorMessage ? 'error' : disabled ? 'disabled' : 'primary.main'}>\n {checkoutLocalization.summary.couponCodeTitle}\n </Typography>\n\n <InputField\n disabled={disabled}\n autoFocus\n variant=\"outlined\"\n fullWidth\n error={!!errorMessage}\n value={promotionCode}\n onChange={(e) => {\n setPromotionCode(e.target.value);\n }}\n inputProps={{ maxLength: 20 }}\n onKeyDown={(e: any) => {\n if (e.key === 'Enter') {\n void handlePromotionCode();\n e.preventDefault();\n }\n }}\n // eslint-disable-next-line react/jsx-no-duplicate-props\n InputProps={{\n endAdornment: (\n <CouponCodeAddButton\n variant=\"contained\"\n disabled={disabled}\n onClick={() => {\n void handlePromotionCode();\n }}>\n {isLoading ? (\n <CircularProgress size={18} sx={{ color: 'white' }} />\n ) : (\n <Icon style={{ display: 'flex' }} icon=\"ArrowForward\" />\n )}\n </CouponCodeAddButton>\n ),\n }}\n />\n {!!errorMessage && (\n <Typography variant=\"body1\" color=\"error\">\n {errorMessage}\n </Typography>\n )}\n </Grid>\n );\n};\n","import React from 'react';\nimport styled from '@emotion/styled/macro';\nimport Grid from '@mui/material/Grid';\nimport { Icon } from '../../common/Icon';\nimport { Typography } from '../../common/Typography';\nimport { Button } from '../components';\n\nconst AppliedCouponContainer = styled(Grid)`\n width: auto;\n display: inline-flex;\n align-items: center;\n flex-direction: row;\n gap: 8px;\n padding: 6px 8px;\n border-radius: ${({ theme }) => theme.stigg.border.radius};\n border: 1px solid ${({ theme }) => theme.stigg.palette.primary};\n`;\n\nexport const StyledIcon = styled(Icon, { shouldForwardProp: (prop) => prop !== 'style' })<{ $shouldFill?: boolean }>`\n display: flex;\n\n g {\n stroke: ${({ theme }) => theme.stigg.palette.primary};\n }\n\n path {\n fill: ${({ theme, $shouldFill }) => ($shouldFill ? theme.stigg.palette.primary : undefined)};\n }\n`;\n\nexport type AppliedPromotionCodeProps = {\n promotionCode: string;\n onClearPromotionCode: () => void;\n};\n\nexport const AppliedPromotionCode = ({ promotionCode, onClearPromotionCode }: AppliedPromotionCodeProps) => (\n <AppliedCouponContainer container>\n <Grid item display=\"flex\" gap={1} alignItems=\"center\">\n <StyledIcon icon=\"Coupon\" />\n <Typography variant=\"body1\" color=\"primary.main\" lineHeight=\"auto\">\n {promotionCode}\n </Typography>\n </Grid>\n <Grid item>\n <Button variant=\"text\" sx={{ minWidth: 'unset', padding: 0 }} onClick={onClearPromotionCode}>\n <StyledIcon icon=\"Close\" $shouldFill />\n </Button>\n </Grid>\n </AppliedCouponContainer>\n);\n","import React from 'react';\nimport styled from '@emotion/styled/macro';\nimport { usePromotionCodeModel } from '../hooks/useCouponModel';\nimport { AddPromotionCode } from './AddPromotionCode';\nimport { AppliedPromotionCode } from './AppliedPromotionCode';\nimport { CheckoutLocalization } from '../configurations/textOverrides';\nimport { MockCheckoutPreviewCallback } from '../types';\n\nconst PromotionCodeSectionContainer = styled.div`\n margin: 16px 0;\n`;\n\nexport type PromotionCodeSectionProps = {\n disabled: boolean;\n checkoutLocalization: CheckoutLocalization;\n onMockCheckoutPreview?: MockCheckoutPreviewCallback;\n};\n\nexport const PromotionCodeSection = ({\n disabled,\n checkoutLocalization,\n onMockCheckoutPreview,\n}: PromotionCodeSectionProps) => {\n const { promotionCode, setPromotionCode } = usePromotionCodeModel();\n\n const onClearPromotionCode = () => {\n setPromotionCode('');\n };\n\n const content = promotionCode ? (\n <AppliedPromotionCode promotionCode={promotionCode} onClearPromotionCode={onClearPromotionCode} />\n ) : (\n <AddPromotionCode\n disabled={disabled}\n checkoutLocalization={checkoutLocalization}\n onMockCheckoutPreview={onMockCheckoutPreview}\n />\n );\n\n return <PromotionCodeSectionContainer>{content}</PromotionCodeSectionContainer>;\n};\n","import React from 'react';\nimport { StripeAddressElementChangeEvent } from '@stripe/stripe-js';\nimport Grid from '@mui/material/Grid';\nimport { BillingAddress } from '@stigg/js-client-sdk';\nimport { AddressElement, PaymentElement } from '@stripe/react-stripe-js';\nimport { Typography } from '../../../../common/Typography';\nimport { useCheckoutModel, usePaymentStepModel } from '../../../hooks';\nimport { CheckoutContainerProps } from '../../../CheckoutContainer';\n\nexport function StripePaymentForm({\n onBillingAddressChange,\n collectPhoneNumber,\n}: Pick<CheckoutContainerProps, 'onBillingAddressChange' | 'collectPhoneNumber'>) {\n const { checkoutState, checkoutLocalization, widgetState, setWidgetReadOnly } = useCheckoutModel();\n const { setBillingAddress } = usePaymentStepModel();\n const { customer, configuration } = checkoutState || {};\n const { readOnly } = widgetState;\n const shouldCollectPhoneNumber = !!(collectPhoneNumber ?? configuration?.content?.collectPhoneNumber);\n\n const handleAddressChange = (args: StripeAddressElementChangeEvent) => {\n if (!args.complete) {\n return;\n }\n\n const { postal_code: postalCode, ...addressFields } = args.value.address;\n const billingAddress: BillingAddress = {\n postalCode,\n ...addressFields,\n };\n\n setWidgetReadOnly(true);\n setBillingAddress(billingAddress);\n\n if (onBillingAddressChange) {\n const callExternalBillingAddressChanged = async () => {\n await onBillingAddressChange({ billingAddress });\n setWidgetReadOnly(false);\n };\n\n void callExternalBillingAddressChanged();\n } else {\n setWidgetReadOnly(false);\n }\n };\n\n return (\n <Grid flexDirection=\"column\" container gap={3} padding=\"16px\" sx={{ pointerEvents: readOnly ? 'none' : undefined }}>\n <Grid flexDirection=\"column\" container gap={2}>\n <Typography variant=\"h6\">{checkoutLocalization.newPaymentMethodBillingAddressTitle}</Typography>\n <AddressElement\n onChange={handleAddressChange}\n options={{\n mode: 'billing',\n fields: { phone: shouldCollectPhoneNumber ? 'always' : 'auto' },\n defaultValues: {\n ...(customer?.name && { name: customer.name }),\n },\n }}\n />\n </Grid>\n <Grid flexDirection=\"column\" container gap={2}>\n <Typography variant=\"h6\">{checkoutLocalization.newPaymentMethodCardTitle}</Typography>\n <PaymentElement\n onChange={() => {}}\n onReady={() => {}}\n options={{\n readOnly,\n terms: { card: 'never' },\n defaultValues: {\n billingDetails: {\n ...(customer?.name && { name: customer.name }),\n ...(customer?.email && { email: customer.email }),\n },\n },\n }}\n />\n </Grid>\n </Grid>\n );\n}\n","import { useEffect, useState } from 'react';\n\nimport { BillingVendorIdentifier } from '@stigg/js-client-sdk';\nimport { loadStripe, Stripe } from '@stripe/stripe-js';\n\nimport { useCheckoutModel } from '../../../hooks';\n\nexport function useStripeIntegration() {\n const [stripePromise, setStripePromise] = useState<Promise<Stripe | null> | null>(null);\n const { checkoutState } = useCheckoutModel();\n const { billingIntegration, setupSecret } = checkoutState || {};\n\n useEffect(() => {\n if (billingIntegration) {\n const { billingIdentifier, credentials } = billingIntegration;\n if (billingIdentifier !== BillingVendorIdentifier.Stripe) {\n console.error('Currently only stripe integration is supported');\n return;\n }\n\n const { accountId, publicKey } = credentials;\n setStripePromise(loadStripe(publicKey, { stripeAccount: accountId }));\n }\n }, [billingIntegration]);\n\n return { stripePromise, setupIntentClientSecret: setupSecret };\n}\n","import { ApplySubscription, PreviewSubscription } from '@stigg/js-client-sdk';\nimport { useCheckoutContext } from '../CheckoutProvider';\nimport { useCheckoutModel } from './useCheckoutModel';\nimport { useSubscriptionModel } from './useSubscriptionModel';\n\nexport function useSubscriptionState(): ApplySubscription | PreviewSubscription | undefined {\n const subscription = useSubscriptionModel();\n const [{ resourceId }] = useCheckoutContext();\n const { checkoutState } = useCheckoutModel();\n const { plan } = checkoutState || {};\n const addons = subscription.addons.map(({ addon, quantity }) => ({ addonId: addon.id, quantity }));\n\n if (!plan?.id) {\n return undefined;\n }\n\n return {\n resourceId,\n planId: plan.id,\n billingPeriod: subscription.billingPeriod,\n billableFeatures: subscription.billableFeatures,\n addons,\n promotionCode: subscription.promotionCode,\n billingCountryCode: subscription.billingCountryCode,\n };\n}\n","import { ApplySubscriptionResults, PaymentCollection } from '@stigg/js-client-sdk';\nimport { Stripe, StripeElements } from '@stripe/stripe-js';\n\ntype StripeElementsProps = {\n stripe: Stripe | null;\n elements: StripeElements | null;\n};\n\nconst FAILED_PAYMENT_COLLECTION_STATUSES = [PaymentCollection.Failed, PaymentCollection.Processing];\n\nexport async function handleStripeFormValidations({ elements }: Pick<StripeElementsProps, 'elements'>) {\n if (!elements) {\n const errorMessage = 'Stripe elements not initialized';\n console.error(errorMessage);\n return { success: false, errorMessage };\n }\n\n const { error: elementsError } = await elements.submit();\n\n if (elementsError) {\n console.log(elementsError.message);\n return { success: false, errorMessage: elementsError.message || '' };\n }\n\n return { success: true };\n}\n\nexport async function handleStripeNextAction({\n applySubscriptionResults,\n stripe,\n}: {\n applySubscriptionResults: ApplySubscriptionResults;\n stripe: Stripe | null;\n}) {\n const subscription = applySubscriptionResults?.subscription;\n const paymentIntentClientSecret = subscription?.latestInvoice?.paymentSecret;\n const paymentCollection = subscription?.paymentCollection;\n\n if (stripe && paymentIntentClientSecret && paymentCollection === PaymentCollection.ActionRequired) {\n const { error: NextActionError } = await stripe.handleNextAction({ clientSecret: paymentIntentClientSecret });\n if (NextActionError) {\n return { errorMessage: NextActionError.message || '' };\n }\n } else if (paymentCollection && FAILED_PAYMENT_COLLECTION_STATUSES.includes(paymentCollection)) {\n return { errorMessage: subscription?.latestInvoice?.errorMessage || 'An error occurred - try again later' };\n }\n\n return { subscription };\n}\n\nasync function handleStripeSetup({\n stripe,\n elements,\n clientSecret,\n}: {\n stripe: Stripe;\n elements: StripeElements;\n clientSecret: string;\n}) {\n let newPaymentMethodId: string | undefined;\n let setupErrorMessage: string | undefined;\n\n const { error: setupError } = await stripe.confirmSetup({\n elements,\n confirmParams: { return_url: window.location.href },\n redirect: 'if_required',\n });\n\n if (setupError) {\n if (setupError.type === 'card_error' || setupError.type === 'validation_error') {\n if (setupError.type === 'card_error') {\n // Set some error message\n setupErrorMessage = setupError.message || '';\n }\n } else {\n setupErrorMessage = 'An unexpected error occurred.';\n }\n } else {\n try {\n const { setupIntent } = await stripe.retrieveSetupIntent(clientSecret);\n if (setupIntent?.payment_method) {\n newPaymentMethodId = setupIntent.payment_method as string;\n }\n } catch (e) {\n setupErrorMessage = 'An unexpected error occurred.';\n console.error(e);\n }\n }\n\n return { newPaymentMethodId, setupErrorMessage };\n}\n\nexport async function handleNewPaymentMethod({\n stripe,\n elements,\n setupIntentClientSecret,\n}: {\n stripe: Stripe | null;\n elements: StripeElements | null;\n setupIntentClientSecret?: string;\n}): Promise<{ success: boolean; errorMessage?: string; paymentMethodId?: string }> {\n if (!stripe || !elements || !setupIntentClientSecret) {\n return { success: false };\n }\n\n const stripeFormValidationsResults = await handleStripeFormValidations({ elements });\n if (!stripeFormValidationsResults.success) {\n return { success: false, errorMessage: stripeFormValidationsResults.errorMessage };\n }\n\n const { newPaymentMethodId, setupErrorMessage } = await handleStripeSetup({\n stripe,\n elements,\n clientSecret: setupIntentClientSecret,\n });\n\n if (setupErrorMessage || !newPaymentMethodId) {\n return { success: false, errorMessage: setupErrorMessage };\n }\n\n return { success: true, paymentMethodId: newPaymentMethodId };\n}\n","import styled from '@emotion/styled/macro';\nimport Box from '@mui/material/Box';\nimport Color from 'color';\nimport React from 'react';\nimport Lottie from 'lottie-react';\nimport animationData from '../../../assets/lottie/checkout-success.json';\nimport { Typography } from '../../common/Typography';\nimport { CheckoutLocalization } from '../configurations/textOverrides';\n\nexport const ANIMATION_DURATION = 5000;\n\nconst CheckoutSuccessContainer = styled(Box)`\n @keyframes blurFade {\n 0% {\n background-color: ${({ theme }) => Color(theme.stigg.palette.backgroundPaper).alpha(0).toString()};\n backdrop-filter: blur(0px);\n }\n 100% {\n background-color: ${({ theme }) => Color(theme.stigg.palette.backgroundPaper).alpha(0.9).toString()};\n backdrop-filter: blur(6.5px);\n }\n }\n\n position: absolute;\n top: 0;\n left: 0;\n bottom: 0;\n right: 0;\n z-index: 5;\n background-color: ${({ theme }) => Color(theme.stigg.palette.backgroundPaper).alpha(0.9).toString()};\n animation: blurFade 2s ease-in forwards;\n display: flex;\n flex-direction: column;\n justify-content: center;\n\n * rect {\n fill: transparent;\n }\n\n & path {\n stroke: ${({ theme }) => theme.stigg.palette.primary};\n }\n`;\n\nconst CheckoutSuccessText = styled(Typography)`\n @keyframes fadeIn {\n 0% {\n opacity: 0;\n }\n 75% {\n opacity: 0;\n }\n 100% {\n opacity: 1;\n }\n }\n\n align-self: center;\n animation: fadeIn 5s ease-in forwards;\n`;\n\nconst StyledLottie = styled(Lottie)`\n display: flex;\n justify-content: center;\n\n svg {\n width: 350px !important;\n height: auto !important;\n }\n`;\n\nexport function CheckoutSuccess({ checkoutLocalization }: { checkoutLocalization: CheckoutLocalization }) {\n return (\n <CheckoutSuccessContainer className=\"stigg-checkout-success-container\">\n <StyledLottie animationData={animationData} loop={false} autoplay />\n <CheckoutSuccessText variant=\"h1\" color=\"primary.main\">\n {checkoutLocalization.summary.checkoutSuccessText}\n </CheckoutSuccessText>\n </CheckoutSuccessContainer>\n );\n}\n","import { ApplySubscription, ApplySubscriptionResults } from '@stigg/js-client-sdk';\nimport { useElements, useStripe } from '@stripe/react-stripe-js';\nimport { useStiggContext } from '../../../../..';\nimport { useCheckoutModel } from '../../../hooks';\nimport { usePaymentStepModel } from '../../../hooks/usePaymentStepModel';\nimport { useSubscriptionState } from '../../../hooks/useSubscriptionState';\nimport { CheckoutContainerProps, CheckoutResult } from '../../../CheckoutContainer';\nimport { handleNewPaymentMethod, handleStripeNextAction } from './stripe.utils';\nimport { ANIMATION_DURATION } from '../../../summary/CheckoutSuccess';\n\nconst delay = (ms: number) => new Promise((res) => setTimeout(res, ms));\n\nexport type HandleSubmitResult = { results?: ApplySubscriptionResults; success: boolean; errorMessage?: string };\n\nexport type UseSubmitProps = {\n onSuccess?: () => void;\n isMocked?: boolean;\n} & Pick<CheckoutContainerProps, 'onCheckout' | 'onCheckoutCompleted' | 'disableSuccessAnimation'>;\n\nexport function useSubmit({\n isMocked = false,\n onCheckout,\n onCheckoutCompleted,\n onSuccess,\n disableSuccessAnimation,\n}: UseSubmitProps) {\n const { stigg } = useStiggContext();\n const { useNewPaymentMethod } = usePaymentStepModel();\n const subscriptionState = useSubscriptionState();\n const { checkoutState, widgetState, setWidgetReadOnly } = useCheckoutModel();\n const { setupSecret: setupIntentClientSecret, customer } = checkoutState || {};\n const stripe = useStripe();\n const elements = useElements();\n\n const handleSubmit = async (e: any): Promise<HandleSubmitResult> => {\n e.preventDefault();\n\n if (!subscriptionState) {\n return { success: false, errorMessage: 'Unexpected error, please contact support.' };\n }\n\n let success = true;\n let errorMessage: string | undefined;\n let usedStiggCheckoutAction = false;\n let paymentMethodId: string | undefined;\n\n setWidgetReadOnly(true);\n\n if (!isMocked && useNewPaymentMethod) {\n const paymentMethodResults = await handleNewPaymentMethod({ elements, stripe, setupIntentClientSecret });\n if (!paymentMethodResults.success) {\n errorMessage = paymentMethodResults.errorMessage;\n success = false;\n } else {\n paymentMethodId = paymentMethodResults.paymentMethodId;\n }\n }\n\n const checkoutParams: ApplySubscription = { ...subscriptionState, paymentMethodId };\n\n const checkoutAction = async (params: ApplySubscription): Promise<CheckoutResult> => {\n usedStiggCheckoutAction = true;\n\n try {\n const applySubscriptionResults = await stigg.applySubscription(params);\n\n const nextActionResults = await handleStripeNextAction({ applySubscriptionResults, stripe });\n\n return {\n success: !nextActionResults.errorMessage,\n errorMessage: nextActionResults.errorMessage,\n results: applySubscriptionResults,\n };\n } catch (e) {\n console.error(e);\n errorMessage = (e as any)?.message;\n return { success: false, errorMessage };\n }\n };\n\n let checkoutResults: ApplySubscriptionResults | undefined;\n\n if (success) {\n if (onCheckout) {\n const externalCheckoutResults = await onCheckout({\n customerId: customer!.id,\n checkoutParams,\n checkoutAction,\n });\n if (externalCheckoutResults.errorMessage) {\n errorMessage = externalCheckoutResults.errorMessage;\n }\n\n if (!usedStiggCheckoutAction && externalCheckoutResults.results && externalCheckoutResults.success) {\n const nextActionResults = await handleStripeNextAction({\n applySubscriptionResults: externalCheckoutResults.results,\n stripe,\n });\n\n if (nextActionResults.errorMessage) {\n errorMessage = nextActionResults.errorMessage;\n success = false;\n }\n }\n\n success = success && externalCheckoutResults.success && !errorMessage;\n checkoutResults = externalCheckoutResults.results;\n } else {\n const checkoutActionResults = await checkoutAction(checkoutParams);\n if (!checkoutActionResults.success && checkoutActionResults.errorMessage) {\n errorMessage = checkoutActionResults.errorMessage;\n }\n success = checkoutActionResults.success && !errorMessage;\n checkoutResults = checkoutActionResults.results;\n }\n }\n\n setWidgetReadOnly(false);\n\n if (success && onSuccess) {\n onSuccess();\n\n if (!disableSuccessAnimation) {\n await delay(ANIMATION_DURATION); // Wait for animation to finish\n }\n }\n\n await onCheckoutCompleted({ success, error: errorMessage });\n\n return { results: checkoutResults, success: !errorMessage, errorMessage };\n };\n\n return { handleSubmit, isLoading: !!widgetState?.readOnly };\n}\n","import React, { FC, PropsWithChildren } from 'react';\nimport { Skeleton } from '../../components/Skeletons.style';\n\nexport const WithSkeleton: FC<\n PropsWithChildren<{\n isLoading: boolean;\n width?: number | string;\n height?: number | string;\n }>\n> = ({ isLoading, width = 50, height = 16, children }) => {\n if (isLoading) {\n return <Skeleton width={width} height={height} />;\n }\n\n return <>{children}</>;\n};\n","/* eslint-disable react/no-unused-prop-types */\nimport React from 'react';\nimport moment from 'moment';\nimport { BillingModel, BillingPeriod, Plan, Subscription, SubscriptionPreviewV2 } from '@stigg/js-client-sdk';\nimport { Typography } from '../../../common/Typography';\nimport { currencyPriceFormatter } from '../../../utils/currencyUtils';\nimport { CheckoutLocalization } from '../../configurations/textOverrides';\nimport { WithSkeleton } from './WithSkeleton';\n\nexport type CheckoutCaptionProps = {\n subscriptionPreview?: SubscriptionPreviewV2 | null;\n isFetchingSubscriptionPreview: boolean;\n activeSubscription?: Subscription | null;\n plan?: Plan;\n checkoutLocalization: CheckoutLocalization;\n billingPeriod: BillingPeriod;\n};\n\nconst RemainingCreditsCaption = ({\n subscriptionPreview,\n isFetchingSubscriptionPreview,\n checkoutLocalization,\n}: CheckoutCaptionProps) => {\n const { immediateInvoice } = subscriptionPreview || {};\n if (!immediateInvoice?.proration?.netAmount?.amount || immediateInvoice?.proration?.netAmount?.amount >= 0) {\n return null;\n }\n\n const positiveAmount = immediateInvoice.proration.netAmount.amount * -1;\n\n const credits = currencyPriceFormatter({\n amount: positiveAmount,\n currency: immediateInvoice.proration.netAmount.currency,\n minimumFractionDigits: 2,\n });\n\n return (\n <Typography variant=\"caption\" style={{ marginTop: 14 }}>\n <WithSkeleton isLoading={isFetchingSubscriptionPreview} width=\"100%\">\n {checkoutLocalization.summary.creditsForUnusedTimeText({ credits })}\n </WithSkeleton>\n </Typography>\n );\n};\n\nconst ScheduledUpdatesCaption = ({\n subscriptionPreview,\n activeSubscription,\n isFetchingSubscriptionPreview,\n checkoutLocalization,\n}: CheckoutCaptionProps) => {\n if (!subscriptionPreview?.hasScheduledUpdates || !activeSubscription?.currentBillingPeriodEnd) {\n return null;\n }\n\n const { currentBillingPeriodEnd } = activeSubscription;\n const changesWillApplyText =\n typeof checkoutLocalization.summary.changesWillApplyAtEndOfBillingPeriod === 'function'\n ? checkoutLocalization.summary.changesWillApplyAtEndOfBillingPeriod({ billingPeriodEnd: currentBillingPeriodEnd })\n : checkoutLocalization.summary.changesWillApplyAtEndOfBillingPeriod;\n\n return (\n <Typography variant=\"caption\" style={{ marginTop: 14 }}>\n <WithSkeleton isLoading={isFetchingSubscriptionPreview} width=\"100%\">\n {changesWillApplyText}\n </WithSkeleton>\n </Typography>\n );\n};\n\nconst NextBillingCaption = ({\n subscriptionPreview,\n activeSubscription,\n plan,\n isFetchingSubscriptionPreview,\n billingPeriod,\n}: CheckoutCaptionProps) => {\n const { recurringInvoice } = subscriptionPreview || {};\n if (!subscriptionPreview || !recurringInvoice?.total.amount) {\n return null;\n }\n\n const currentBillingPeriodEnd = subscriptionPreview.hasScheduledUpdates\n ? activeSubscription?.currentBillingPeriodEnd\n : subscriptionPreview?.billingPeriodRange.end;\n\n const total = currencyPriceFormatter({\n ...recurringInvoice.total,\n minimumFractionDigits: 2,\n });\n\n const hasUnitBasedPricing = plan?.pricePoints.some((price) => price.pricingModel === BillingModel.UsageBased);\n const hasNonUnitBasedPricing = plan?.pricePoints.some((price) => price.pricingModel !== BillingModel.UsageBased);\n\n let text = 'We will bill you ';\n let totalAmountText = `${total} `;\n\n if (hasUnitBasedPricing) {\n if (!hasNonUnitBasedPricing) {\n totalAmountText = 'for';\n } else {\n totalAmountText += '+';\n }\n\n totalAmountText += ' applicable usage-based charges for this subscription ';\n }\n\n let nextBillingDate;\n let billingPeriodText;\n\n switch (billingPeriod) {\n case BillingPeriod.Monthly:\n billingPeriodText = 'month';\n nextBillingDate = `the ${moment(currentBillingPeriodEnd).format('Do')}`;\n break;\n case BillingPeriod.Annually:\n billingPeriodText = 'year';\n nextBillingDate = moment(currentBillingPeriodEnd).format('MMMM Do');\n break;\n default: {\n break;\n }\n }\n\n text += `${totalAmountText}for this subscription every ${billingPeriodText} on ${nextBillingDate}, unless you cancel.`;\n\n return (\n <Typography variant=\"body1\" style={{ marginTop: 14 }}>\n <WithSkeleton isLoading={isFetchingSubscriptionPreview} width=\"100%\">\n {text}\n </WithSkeleton>\n </Typography>\n );\n};\n\nexport function CheckoutCaptions(props: CheckoutCaptionProps) {\n return (\n <>\n <RemainingCreditsCaption {...props} />\n\n <ScheduledUpdatesCaption {...props} />\n\n <NextBillingCaption {...props} />\n </>\n );\n}\n","import React from 'react';\nimport styled from '@emotion/styled/macro';\nimport Grid from '@mui/material/Grid';\nimport {\n BillingModel,\n BillingPeriod,\n Price,\n SubscriptionPreviewInvoice,\n SubscriptionPreviewV2,\n} from '@stigg/js-client-sdk';\nimport { Typography } from '../../../common/Typography';\nimport { currencyPriceFormatter } from '../../../utils/currencyUtils';\nimport { getTierByQuantity } from '../../../utils/priceTierUtils';\nimport { WithSkeleton } from './WithSkeleton';\nimport { Skeleton } from '../../components/Skeletons.style';\nimport { CheckoutLocalization } from '../../configurations/textOverrides';\nimport { Icon } from '../../../common/Icon';\nimport { InformationTooltip } from '../../../common/InformationTooltip';\n\nexport const LineItemContainer = styled.div`\n & + & {\n margin-top: 8px;\n }\n`;\n\nexport const LineItemRow = styled.div`\n display: flex;\n align-items: center;\n justify-content: space-between;\n`;\n\nexport const getPriceString = ({ amount, price, quantity }: { amount: number; price: Price; quantity: number }) => {\n const { billingPeriod } = price;\n let billingPeriodString = null;\n\n if (billingPeriod === BillingPeriod.Annually) {\n amount /= 12;\n billingPeriodString = '12 months';\n }\n\n const addonPriceFormat = currencyPriceFormatter({ amount, currency: price.currency, minimumFractionDigits: 2 });\n\n return `${quantity > 1 ? `${quantity} x ${addonPriceFormat} each` : addonPriceFormat}${\n billingPeriodString ? ` x ${billingPeriodString}` : ''\n }`;\n};\n\nconst PayAsYouGoPriceTooltip = ({ checkoutLocalization }: { checkoutLocalization: CheckoutLocalization }) => {\n const title = <Typography variant=\"body1\">{checkoutLocalization.summary.payAsYouGoTooltipText}</Typography>;\n return (\n <InformationTooltip placement=\"left\" title={title}>\n <Icon icon=\"PayAsYouGoCharge\" style={{ display: 'flex' }} />\n </InformationTooltip>\n );\n};\n\nexport const BilledPriceLineItem = ({\n checkoutLocalization,\n label,\n quantity,\n price,\n}: {\n checkoutLocalization: CheckoutLocalization;\n label: string;\n quantity: number;\n price: Price;\n}) => {\n const { billingPeriod } = price;\n const isPayAsYouGo = price.pricingModel === BillingModel.UsageBased;\n\n let amount;\n if (price.isTieredPrice) {\n const tier = getTierByQuantity(price.tiers!, quantity);\n amount = tier!.unitPrice.amount!;\n } else {\n amount = price.amount!;\n }\n\n return (\n <LineItemContainer>\n <LineItemRow style={{ alignItems: 'flex-start' }}>\n <Grid item>\n <Typography variant=\"body1\" color=\"secondary\">\n {label}\n </Typography>\n {(quantity > 1 || billingPeriod === BillingPeriod.Annually) && (\n <Typography variant=\"body1\" color=\"secondary\">\n {getPriceString({ amount, price, quantity })}\n </Typography>\n )}\n </Grid>\n <Grid item display=\"flex\" gap={1} alignItems=\"center\">\n {isPayAsYouGo && <PayAsYouGoPriceTooltip checkoutLocalization={checkoutLocalization} />}\n <Typography variant=\"body1\" color=\"secondary\" style={{ wordBreak: 'break-word' }}>\n {currencyPriceFormatter({ amount: quantity * amount, currency: price.currency, minimumFractionDigits: 2 })}\n {isPayAsYouGo && ' / unit'}\n </Typography>\n </Grid>\n </LineItemRow>\n </LineItemContainer>\n );\n};\n\nexport const FreeChargeLineItem = ({ label }: { label: string }) => {\n return (\n <LineItemContainer>\n <LineItemRow style={{ alignItems: 'flex-end' }}>\n <Grid item>\n <Typography variant=\"body1\" color=\"secondary\">\n {label}\n </Typography>\n </Grid>\n <Grid item display=\"flex\" gap={1} alignItems=\"center\">\n <Typography variant=\"body1\" color=\"secondary\" style={{ wordBreak: 'break-word' }}>\n Free\n </Typography>\n </Grid>\n </LineItemRow>\n </LineItemContainer>\n );\n};\n\nexport const DiscountLineItem = ({\n subscriptionPreview,\n isFetchingSubscriptionPreview,\n checkoutLocalization,\n}: {\n subscriptionPreview: SubscriptionPreviewV2;\n isFetchingSubscriptionPreview: boolean;\n checkoutLocalization: CheckoutLocalization;\n}) => {\n const { immediateInvoice, recurringInvoice } = subscriptionPreview;\n const { discount, discountDetails } = recurringInvoice || {};\n if (!discount || !discountDetails) {\n return null;\n }\n\n return (\n <LineItemContainer>\n <LineItemRow>\n <Typography variant=\"body1\" color=\"secondary\">\n {checkoutLocalization.summary.discountText({\n discountDetails,\n currency: immediateInvoice.total.currency,\n })}\n </Typography>\n <Typography variant=\"body1\" color=\"secondary\">\n {isFetchingSubscriptionPreview ? (\n <Skeleton width={50} height={16} />\n ) : (\n currencyPriceFormatter({\n amount: discount.amount,\n currency: discount.currency,\n minimumFractionDigits: 2,\n })\n )}\n </Typography>\n </LineItemRow>\n </LineItemContainer>\n );\n};\n\nexport const AppliedCreditsLineItem = ({\n subscriptionPreview,\n isFetchingSubscriptionPreview,\n checkoutLocalization,\n}: {\n subscriptionPreview: SubscriptionPreviewV2 | null;\n isFetchingSubscriptionPreview: boolean;\n checkoutLocalization: CheckoutLocalization;\n}) => {\n const { immediateInvoice } = subscriptionPreview || {};\n const { credits } = immediateInvoice || {};\n\n if (!credits || !credits.used || credits.used.amount <= 0) {\n return null;\n }\n\n return (\n <LineItemContainer>\n <LineItemRow>\n <Typography variant=\"body1\" color=\"secondary\">\n {checkoutLocalization.summary.appliedCreditsTitle}\n </Typography>\n <Typography variant=\"body1\" color=\"secondary\">\n <WithSkeleton isLoading={isFetchingSubscriptionPreview}>\n {currencyPriceFormatter({\n amount: -1 * credits.used.amount,\n currency: credits.used.currency,\n minimumFractionDigits: 2,\n })}\n </WithSkeleton>\n </Typography>\n </LineItemRow>\n </LineItemContainer>\n );\n};\n\nexport const TaxLineItem = ({\n tax,\n taxDetails,\n isFetchingSubscriptionPreview,\n checkoutLocalization,\n}: {\n isFetchingSubscriptionPreview: boolean;\n checkoutLocalization: CheckoutLocalization;\n} & Pick<SubscriptionPreviewInvoice, 'tax' | 'taxDetails'>) => {\n if (!taxDetails || !tax || tax?.amount <= 0) {\n return null;\n }\n\n return (\n <LineItemContainer>\n <LineItemRow>\n <Typography variant=\"body1\" color=\"secondary\">\n {checkoutLocalization.summary.taxTitle({ taxDetails })}\n </Typography>\n <Typography variant=\"body1\" color=\"secondary\">\n <WithSkeleton isLoading={isFetchingSubscriptionPreview}>\n {currencyPriceFormatter({ amount: tax?.amount, currency: tax?.currency, minimumFractionDigits: 2 })}\n </WithSkeleton>\n </Typography>\n </LineItemRow>\n </LineItemContainer>\n );\n};\n","import React, { useState } from 'react';\nimport partition from 'lodash/partition';\nimport styled from '@emotion/styled/macro';\nimport Box from '@mui/material/Box';\nimport CircularProgress from '@mui/material/CircularProgress';\nimport Divider from '@mui/material/Divider';\nimport Grid from '@mui/material/Grid';\nimport Paper from '@mui/material/Paper';\nimport { BillingModel } from '@stigg/js-client-sdk';\nimport { PoweredByStigg } from '../../common/PoweredByStigg';\nimport { Typography } from '../../common/Typography';\nimport { useChargesSort } from '../../hooks/useChargeSort';\nimport { currencyPriceFormatter } from '../../utils/currencyUtils';\nimport { Button } from '../components';\nimport {\n useCheckoutModel,\n useProgressBarModel,\n usePreviewSubscription,\n useSubscriptionModel,\n usePaymentStepModel,\n} from '../hooks';\nimport { PromotionCodeSection } from '../promotionCode';\nimport { useSubmit } from '../steps/payment/stripe';\nimport { CheckoutContainerProps } from '../CheckoutContainer';\nimport { CheckoutCaptions } from './components/CheckoutCaptions';\nimport {\n AppliedCreditsLineItem,\n BilledPriceLineItem,\n DiscountLineItem,\n FreeChargeLineItem,\n LineItemContainer,\n LineItemRow,\n TaxLineItem,\n} from './components/LineItems';\nimport { WithSkeleton } from './components/WithSkeleton';\nimport { Icon } from '../../common/Icon';\nimport { CheckoutLocalization } from '../configurations/textOverrides';\nimport { CheckoutSuccess } from './CheckoutSuccess';\nimport { getFeatureDisplayNameText } from '../../utils/getFeatureName';\n\nexport const SummaryContainer = styled(Box)`\n max-width: 470px;\n flex: 1.5;\n`;\n\nexport const SummaryCard = styled(Paper)`\n border-radius: 10px;\n background: ${({ theme }) => theme.stigg.palette.backgroundHighlight};\n padding: 16px;\n`;\n\nSummaryCard.defaultProps = {\n elevation: 0,\n};\n\nconst SummaryTitle = styled(Typography)`\n margin-bottom: 16px;\n font-weight: 500;\n`;\n\nconst StyledDivider = styled(Divider)`\n margin: 16px 0;\n`;\n\nconst TotalDueText = styled(Typography)`\n margin-bottom: 8px;\n`;\n\nfunction resolveCheckoutButtonText({\n isLastStep,\n checkoutHasChanges,\n isFreeDowngrade,\n checkoutLocalization,\n isPlanUpdate,\n}: {\n isLastStep?: boolean;\n checkoutHasChanges: boolean;\n isFreeDowngrade: boolean;\n checkoutLocalization: CheckoutLocalization;\n isPlanUpdate?: boolean;\n}) {\n if (!isLastStep) {\n return checkoutLocalization.checkoutButton.nextText;\n }\n\n if (!checkoutHasChanges) {\n return checkoutLocalization.checkoutButton.noChangesText;\n }\n\n if (isPlanUpdate) {\n return checkoutLocalization.checkoutButton.updateText;\n }\n\n if (isFreeDowngrade) {\n return checkoutLocalization.checkoutButton.downgradeToFreeText;\n }\n\n return checkoutLocalization.checkoutButton.upgradeText;\n}\n\nexport const CheckoutSummary = ({\n onCheckout,\n onCheckoutCompleted,\n disablePromotionCode,\n disableSuccessAnimation,\n isFreeDowngrade,\n onMockCheckoutPreview,\n}: CheckoutContainerProps & { isFreeDowngrade: boolean }) => {\n const [isCheckoutCompletedSuccessfully, setIsCheckoutCompletedSuccessfully] = useState(false);\n const { setErrorMessage } = usePaymentStepModel();\n const progressBar = useProgressBarModel();\n const subscription = useSubscriptionModel();\n const { checkoutState, checkoutLocalization } = useCheckoutModel();\n const { plan, activeSubscription } = checkoutState || {};\n const planPrices = useChargesSort(\n plan?.pricePoints?.filter((price) => price.billingPeriod === subscription.billingPeriod) || [],\n );\n const [baseCharges, usageCharges] = partition(planPrices, (price) => price.pricingModel === BillingModel.FlatFee);\n const [baseCharge] = baseCharges || [];\n const isLastStep = isFreeDowngrade || (progressBar.isCheckoutComplete && progressBar.isLastStep);\n\n const { subscriptionPreview, isFetchingSubscriptionPreview } = usePreviewSubscription({ onMockCheckoutPreview });\n\n const { handleSubmit, isLoading } = useSubmit({\n isMocked: !!onMockCheckoutPreview, // This is a hack to make the submit button work with mocked data\n disableSuccessAnimation,\n onCheckout,\n onCheckoutCompleted,\n onSuccess: () => {\n setIsCheckoutCompletedSuccessfully(true);\n progressBar.markStepAsCompleted(progressBar.progressBarState.activeStep);\n },\n });\n\n const handleCheckout = async (e: any) => {\n if (isCheckoutCompletedSuccessfully) {\n return;\n }\n\n const { errorMessage } = (await handleSubmit(e)) || {};\n if (errorMessage) {\n setErrorMessage(errorMessage);\n setIsCheckoutCompletedSuccessfully(false);\n } else {\n setErrorMessage(undefined);\n }\n };\n\n const onCheckoutClick = async (e: any): Promise<void> => {\n if (isLoading) {\n return;\n }\n\n if (isLastStep) {\n await handleCheckout(e);\n } else {\n progressBar.goNext();\n }\n };\n\n const { immediateInvoice, recurringInvoice } = subscriptionPreview || {};\n const checkoutHasChanges =\n !!subscriptionPreview && (!!immediateInvoice?.proration || !!subscriptionPreview.hasScheduledUpdates);\n const showPromotionCodeLine = !disablePromotionCode && !isFreeDowngrade;\n const showDiscountLine = !!recurringInvoice?.discountDetails && !isFreeDowngrade;\n const hasDiscounts = showPromotionCodeLine || showDiscountLine;\n\n const hasPayAsYouGoCharges = usageCharges.some((price) => price.pricingModel === BillingModel.UsageBased);\n const onlyPayAsYouGoCharges =\n hasPayAsYouGoCharges &&\n !baseCharge &&\n usageCharges.every((price) => price.pricingModel === BillingModel.UsageBased);\n\n const baseChargeLabel =\n typeof checkoutLocalization.summary.baseChargeText === 'function'\n ? checkoutLocalization.summary.baseChargeText({ billingPeriod: subscription.billingPeriod })\n : checkoutLocalization.summary.baseChargeText;\n\n return (\n <SummaryContainer>\n <SummaryCard>\n <SummaryTitle variant=\"h3\">{checkoutLocalization.summary.title}</SummaryTitle>\n\n <Grid display=\"flex\" flexDirection=\"row\" alignItems=\"center\" marginY={2}>\n <Typography variant=\"h6\" color=\"primary\" style={{ paddingRight: '8px' }}>\n {checkoutLocalization.summary.planName({ plan: plan! })}\n </Typography>\n <StyledDivider className=\"stigg-checkout-summary-divider\" sx={{ flex: 1, margin: '0 !important' }} />\n </Grid>\n\n {baseCharge && (\n <BilledPriceLineItem\n checkoutLocalization={checkoutLocalization}\n label={baseChargeLabel}\n quantity={1}\n price={baseCharge}\n />\n )}\n {!baseCharge && isFreeDowngrade ? <FreeChargeLineItem label={baseChargeLabel} /> : null}\n\n {usageCharges.map((price) => {\n const priceBillableFeature = subscription.billableFeatures?.find(\n (billableFeature) => billableFeature.featureId === price.feature?.featureId,\n );\n\n return (\n <BilledPriceLineItem\n checkoutLocalization={checkoutLocalization}\n key={price.feature?.featureId}\n label={getFeatureDisplayNameText(\n price.feature?.displayName || '',\n price.feature?.units,\n price.feature?.unitsPlural,\n )}\n quantity={priceBillableFeature?.quantity || 1}\n price={price}\n />\n );\n })}\n\n {!!subscription.addons?.length && (\n <>\n <Grid display=\"flex\" flexDirection=\"row\" alignItems=\"center\" marginY={2}>\n <Typography variant=\"h6\" color=\"primary\" style={{ paddingRight: '8px' }}>\n {checkoutLocalization.summary.addonsSectionTitle}\n </Typography>\n <StyledDivider className=\"stigg-checkout-summary-divider\" sx={{ flex: 1, margin: '0 !important' }} />\n </Grid>\n {subscription.addons.map((addon) => {\n const addonPrice = addon.addon.pricePoints?.find(\n (price) => price.billingPeriod === subscription.billingPeriod,\n );\n\n if (!addonPrice) return null;\n\n const addonQuantity = addon.quantity && addon.quantity > 0 ? addon.quantity : 1;\n\n return (\n <BilledPriceLineItem\n checkoutLocalization={checkoutLocalization}\n key={addon?.addon?.id}\n label={addon.addon.displayName}\n quantity={addonQuantity}\n price={addonPrice}\n />\n );\n })}\n </>\n )}\n\n {!hasDiscounts && <StyledDivider className=\"stigg-checkout-summary-divider\" />}\n {hasDiscounts && (\n <Grid display=\"flex\" flexDirection=\"row\" alignItems=\"center\" marginY={2}>\n <Typography variant=\"h6\" color=\"primary\" style={{ paddingRight: '8px' }}>\n {checkoutLocalization.summary.discountsSectionTitle}\n </Typography>\n <StyledDivider className=\"stigg-checkout-summary-divider\" sx={{ flex: 1, margin: '0 !important' }} />\n </Grid>\n )}\n\n {showPromotionCodeLine && (\n <PromotionCodeSection\n disabled={isLoading || isFetchingSubscriptionPreview}\n checkoutLocalization={checkoutLocalization}\n onMockCheckoutPreview={onMockCheckoutPreview}\n />\n )}\n\n {showDiscountLine && (\n <DiscountLineItem\n subscriptionPreview={subscriptionPreview!}\n isFetchingSubscriptionPreview={isFetchingSubscriptionPreview}\n checkoutLocalization={checkoutLocalization}\n />\n )}\n\n {hasDiscounts && <StyledDivider className=\"stigg-checkout-summary-divider\" />}\n\n <TaxLineItem\n tax={recurringInvoice?.tax}\n taxDetails={recurringInvoice?.taxDetails}\n isFetchingSubscriptionPreview={isFetchingSubscriptionPreview}\n checkoutLocalization={checkoutLocalization}\n />\n\n {!isFreeDowngrade ? (\n <>\n <LineItemRow style={{ marginTop: 16 }}>\n <Grid display=\"flex\" flexDirection=\"column\" container>\n <Grid item display=\"flex\" justifyContent=\"space-between\">\n <Typography variant=\"h6\">{checkoutLocalization.summary.totalText}</Typography>\n <Typography variant=\"h6\">\n <WithSkeleton isLoading={isFetchingSubscriptionPreview}>\n {onlyPayAsYouGoCharges ? checkoutLocalization.summary.onlyPayAsYouGoText : null}\n {!onlyPayAsYouGoCharges && hasPayAsYouGoCharges\n ? checkoutLocalization.summary.startsAtText\n : null}\n {!onlyPayAsYouGoCharges\n ? currencyPriceFormatter({\n amount: 0,\n ...recurringInvoice?.total,\n minimumFractionDigits: 2,\n })\n : null}\n </WithSkeleton>\n </Typography>\n </Grid>\n <Grid item>\n <Typography variant=\"body1\" color=\"secondary\">\n {checkoutLocalization.summary.totalBillingPeriodText({ billingPeriod: subscription.billingPeriod })}\n </Typography>\n </Grid>\n </Grid>\n </LineItemRow>\n <StyledDivider className=\"stigg-checkout-summary-divider\" />\n </>\n ) : null}\n\n {immediateInvoice?.proration?.hasProrations &&\n immediateInvoice?.subTotal &&\n immediateInvoice?.subTotal.amount > 0 ? (\n <LineItemContainer>\n <LineItemRow>\n <Typography variant=\"body1\" color=\"secondary\">\n {checkoutLocalization.summary.proratedTotalDueText}\n </Typography>\n <Typography variant=\"body1\" color=\"secondary\">\n <WithSkeleton isLoading={isFetchingSubscriptionPreview}>\n {currencyPriceFormatter({\n amount: immediateInvoice?.subTotal?.amount + (immediateInvoice?.tax?.amount || 0),\n currency: immediateInvoice?.subTotal.currency,\n minimumFractionDigits: 2,\n })}\n </WithSkeleton>\n </Typography>\n </LineItemRow>\n </LineItemContainer>\n ) : null}\n\n <AppliedCreditsLineItem\n subscriptionPreview={subscriptionPreview}\n isFetchingSubscriptionPreview={isFetchingSubscriptionPreview}\n checkoutLocalization={checkoutLocalization}\n />\n\n <LineItemContainer>\n <LineItemRow>\n <TotalDueText variant=\"h6\">{checkoutLocalization.summary.totalDueText}</TotalDueText>\n <TotalDueText variant=\"h6\">\n <WithSkeleton isLoading={isFetchingSubscriptionPreview}>\n {currencyPriceFormatter({ amount: 0, ...immediateInvoice?.total, minimumFractionDigits: 2 })}\n </WithSkeleton>\n </TotalDueText>\n </LineItemRow>\n </LineItemContainer>\n\n <CheckoutCaptions\n plan={plan}\n activeSubscription={activeSubscription}\n subscriptionPreview={subscriptionPreview}\n isFetchingSubscriptionPreview={isFetchingSubscriptionPreview}\n checkoutLocalization={checkoutLocalization}\n billingPeriod={subscription.billingPeriod}\n />\n\n <Button\n $success={isCheckoutCompletedSuccessfully}\n $error={isLastStep && isFreeDowngrade}\n disabled={\n isLoading ||\n isFetchingSubscriptionPreview ||\n progressBar.progressBarState.isDisabled ||\n (isLastStep && !checkoutHasChanges)\n }\n className=\"stigg-checkout-summary-cta-button\"\n sx={{ textTransform: 'none', borderRadius: '10px', marginTop: '24px', height: '36px' }}\n variant=\"contained\"\n size=\"medium\"\n onClick={(e: any) => {\n void onCheckoutClick(e);\n }}\n fullWidth>\n <Typography\n className=\"stigg-checkout-summary-cta-button-text\"\n variant=\"h3\"\n color=\"white\"\n style={{ display: 'flex' }}>\n {isCheckoutCompletedSuccessfully ? (\n <Icon icon=\"Check\" style={{ display: 'contents' }} />\n ) : isLoading || isFetchingSubscriptionPreview ? (\n <CircularProgress size={20} sx={{ color: 'white' }} />\n ) : (\n resolveCheckoutButtonText({\n isLastStep,\n checkoutHasChanges,\n isFreeDowngrade,\n checkoutLocalization,\n isPlanUpdate: !!activeSubscription && activeSubscription?.plan.id === plan?.id,\n })\n )}\n </Typography>\n </Button>\n </SummaryCard>\n <PoweredByStigg\n source=\"checkout\"\n showWatermark\n style={{ marginTop: 8, display: 'flex', justifyContent: 'center' }}\n />\n {!disableSuccessAnimation && isCheckoutCompletedSuccessfully && (\n <CheckoutSuccess checkoutLocalization={checkoutLocalization} />\n )}\n </SummaryContainer>\n );\n};\n","import React from 'react';\nimport { PoweredByStigg } from '../../common/PoweredByStigg';\nimport { SummaryCard, SummaryContainer } from './CheckoutSummary';\nimport { FlexedSkeleton, Skeleton, SkeletonsContainer } from '../components/Skeletons.style';\n\nexport const CheckoutSummarySkeleton = () => {\n return (\n <SummaryContainer>\n <SummaryCard>\n <SkeletonsContainer $flexDirection=\"column\" $gap={24}>\n <Skeleton width={120} height={20} />\n\n <Skeleton width={120} height={20} />\n\n <Skeleton width={120} height={20} />\n\n <Skeleton width={120} height={20} />\n </SkeletonsContainer>\n\n <SkeletonsContainer $flexDirection=\"column\" $gap={24} marginTop={5}>\n <Skeleton height={20} />\n\n <Skeleton height={20} />\n\n <Skeleton height={20} />\n </SkeletonsContainer>\n\n <FlexedSkeleton flex={1} marginTop={5}>\n <Skeleton height={34} />\n </FlexedSkeleton>\n </SummaryCard>\n <PoweredByStigg\n source=\"checkout\"\n showWatermark\n style={{ marginTop: 8, display: 'flex', justifyContent: 'center' }}\n />\n </SummaryContainer>\n );\n};\n","import styled from '@emotion/styled/macro';\nimport Grid from '@mui/material/Grid';\n\nimport { Button } from '../../components';\n\nexport const CheckoutAddonsContainer = styled(Grid)`\n width: 100%;\n gap: 8px;\n`;\n\nexport const AddonListItemContainer = styled(Grid)`\n display: flex;\n justify-content: space-between;\n align-items: center;\n height: 80px;\n`;\n\nexport const TrashButton = styled(Button)`\n min-width: unset;\n width: 41px;\n height: 41px;\n padding: 0;\n`;\n","import React, { useEffect, useState } from 'react';\n\nimport Grid from '@mui/material/Grid';\nimport { Addon, BillingPeriod, SubscriptionAddon } from '@stigg/js-client-sdk';\n\nimport { Icon } from '../../../common/Icon';\nimport { Typography } from '../../../common/Typography';\nimport { currencyPriceFormatter } from '../../../utils/currencyUtils';\nimport { Button, InputField } from '../../components';\nimport { useAddonsStepModel } from '../../hooks/useAddonsStepModel';\nimport { usePlanStepModel } from '../../hooks/usePlanStepModel';\nimport { AddonListItemContainer, CheckoutAddonsContainer, TrashButton } from './CheckoutAddonsStep.style';\nimport { CheckoutLocalization } from '../../configurations/textOverrides';\nimport { useCheckoutModel, useProgressBarModel } from '../../hooks';\n\ntype UseAddonsStepModel = ReturnType<typeof useAddonsStepModel>;\n\ntype AddonListItemProps = {\n addon: Addon;\n addonState?: SubscriptionAddon;\n initialAddonState?: SubscriptionAddon;\n billingPeriod: BillingPeriod;\n setAddon: UseAddonsStepModel['setAddon'];\n removeAddon: UseAddonsStepModel['removeAddon'];\n checkoutLocalization: CheckoutLocalization;\n onAddonsValidationChange: (params: { addonId: string; isValid: boolean }) => void;\n isValid: boolean;\n};\n\nfunction AddonListItem({\n addon,\n billingPeriod,\n addonState,\n initialAddonState,\n setAddon,\n removeAddon,\n checkoutLocalization,\n onAddonsValidationChange,\n isValid,\n}: AddonListItemProps) {\n const addonPrice = addon.pricePoints.find((pricePoint) => pricePoint.billingPeriod === billingPeriod);\n const isAdded = !!addonState;\n const hasChanges =\n (!!addonState && !!initialAddonState && addonState.quantity !== initialAddonState.quantity) ||\n (!!initialAddonState && !addonState);\n\n const handleQuantityChange = (quantity: number | null) => {\n if (!quantity || quantity <= 0) {\n onAddonsValidationChange({ addonId: addon.id, isValid: false });\n // Reset the input value to null\n // @ts-ignore\n setAddon(addon, quantity ?? null);\n return;\n }\n\n onAddonsValidationChange({ addonId: addon.id, isValid: true });\n setAddon(addon, quantity);\n };\n\n const handleUndo = () => {\n if (initialAddonState) {\n setAddon(addon, initialAddonState.quantity);\n } else {\n removeAddon(addon.id);\n }\n\n onAddonsValidationChange({ addonId: addon.id, isValid: true });\n };\n\n return (\n <AddonListItemContainer container>\n <Grid item>\n <Typography variant=\"h6\" lineHeight=\"24px\">\n {addon.displayName}\n </Typography>\n {!!addonPrice && (\n <Typography variant=\"body1\" lineHeight=\"20px\" color=\"secondary\">\n {`${currencyPriceFormatter({\n amount: addonPrice.amount!,\n currency: addonPrice.currency,\n minimumFractionDigits: 2,\n })}/${billingPeriod === BillingPeriod.Annually ? 'year' : 'month'}`}\n </Typography>\n )}\n </Grid>\n <Grid item>\n {hasChanges && (\n <Button variant=\"text\" size=\"small\" sx={{ padding: '8px', minWidth: 'unset' }} onClick={handleUndo}>\n <Typography color=\"primary.main\" variant=\"body1\">\n Undo\n </Typography>\n </Button>\n )}\n {isAdded && (\n <>\n <InputField\n id={`${addon.id}-input`}\n type=\"number\"\n sx={{ width: 120, marginX: 2 }}\n value={addonState?.quantity ?? ''}\n error={!isValid}\n helperText={!isValid ? 'Minimum 1' : undefined}\n FormHelperTextProps={{ sx: { margin: '4px' } }}\n onChange={(event) => handleQuantityChange(event?.target?.value ? Number(event?.target?.value) : null)}\n />\n <TrashButton\n color=\"error\"\n onClick={() => {\n removeAddon(addon.id);\n onAddonsValidationChange({ addonId: addon.id, isValid: true });\n }}>\n <Icon icon=\"Trash\" style={{ display: 'flex' }} />\n </TrashButton>\n </>\n )}\n {!isAdded && (\n <Button sx={{ paddingX: '22px', paddingY: '8px' }} onClick={() => handleQuantityChange(1)}>\n <Typography color=\"primary.main\" variant=\"body1\">\n {checkoutLocalization.addAddonText}\n </Typography>\n </Button>\n )}\n </Grid>\n </AddonListItemContainer>\n );\n}\n\nexport function CheckoutAddonsStep() {\n const { checkoutLocalization, setIsValid } = useCheckoutModel();\n const { billingPeriod } = usePlanStepModel();\n const { setIsDisabled } = useProgressBarModel();\n const { initialAddons, addons, availableAddons, setAddon, removeAddon } = useAddonsStepModel();\n const [addonsValidation, setAddonsValidation] = useState(\n availableAddons?.reduce<Record<string, boolean>>((acc, curr) => {\n acc[curr.id] = true;\n return acc;\n }, {}) || {},\n );\n\n useEffect(() => {\n const isDisabled = Object.values(addonsValidation).some((x) => !x);\n setIsDisabled(isDisabled);\n setIsValid(!isDisabled);\n }, [addonsValidation, setIsDisabled, setIsValid]);\n\n return (\n <CheckoutAddonsContainer container>\n {availableAddons?.map((addon) => {\n const addonState = addons.find((x) => x.addon.id === addon.id);\n const initialAddonState = initialAddons?.find((x) => x.addon.id === addon.id);\n const isValid = addonsValidation[addon.id];\n\n return (\n <AddonListItem\n key={addon.id}\n addon={addon}\n billingPeriod={billingPeriod}\n addonState={addonState}\n initialAddonState={initialAddonState}\n setAddon={setAddon}\n removeAddon={removeAddon}\n checkoutLocalization={checkoutLocalization}\n onAddonsValidationChange={({ addonId, isValid }: { addonId: string; isValid: boolean }) =>\n setAddonsValidation({ ...addonsValidation, [addonId]: isValid })\n }\n isValid={isValid}\n />\n );\n })}\n </CheckoutAddonsContainer>\n );\n}\n","import styled from '@emotion/styled';\nimport Grid from '@mui/material/Grid';\n\nexport const PaymentMethodContainer = styled(Grid, { shouldForwardProp: (prop) => !prop.startsWith('$') })<{\n $disabled?: boolean;\n}>`\n padding: 8px;\n border-radius: 10px;\n border: 1px solid ${({ theme }) => theme.stigg.palette.outlinedBorder};\n cursor: ${({ $disabled }) => ($disabled ? 'not-allowed' : 'pointer')};\n opacity: ${({ $disabled }) => ($disabled ? 0.6 : 1)};\n`;\n\nexport const NewPaymentMethodContainer = styled(PaymentMethodContainer)`\n flex-direction: column;\n align-items: unset;\n`;\n\nexport const PaymentMethodLayoutContainer = styled(Grid)`\n display: flex;\n align-items: center;\n flex: 1;\n gap: 12px;\n`;\n\nexport const PaymentMethodTextContainer = styled(Grid)`\n display: flex;\n flex-direction: column;\n`;\n","import React from 'react';\n\nimport Collapse from '@mui/material/Collapse';\nimport Grid from '@mui/material/Grid';\nimport Radio from '@mui/material/Radio';\nimport { Customer } from '@stigg/js-client-sdk';\n\nimport { Icon, Icons } from '../../../common/Icon';\nimport { Typography } from '../../../common/Typography';\nimport {\n NewPaymentMethodContainer,\n PaymentMethodContainer,\n PaymentMethodLayoutContainer,\n PaymentMethodTextContainer,\n} from './PaymentMethods.style';\nimport { StripePaymentForm } from './stripe';\nimport { CheckoutLocalization } from '../../configurations/textOverrides';\nimport { CheckoutContainerProps } from '../../CheckoutContainer';\n\nexport type PaymentMethodLayoutProps = {\n checked: boolean;\n icon: Icons;\n text: React.ReactNode;\n subtitle?: React.ReactNode;\n readOnly?: boolean;\n};\n\nexport type PaymentMethodProps = Pick<Customer, 'paymentMethodDetails'> &\n Pick<PaymentMethodLayoutProps, 'checked' | 'readOnly'> & { onSelect: () => void };\n\nexport type NewPaymentMethodProps = Pick<PaymentMethodLayoutProps, 'checked' | 'readOnly'> & {\n onSelect: () => void;\n checkoutLocalization: CheckoutLocalization;\n} & Pick<CheckoutContainerProps, 'onBillingAddressChange' | 'collectPhoneNumber'>;\n\nfunction PaymentMethodLayout({ checked, icon, text, subtitle, readOnly }: PaymentMethodLayoutProps) {\n return (\n <PaymentMethodLayoutContainer>\n <Radio checked={checked} disabled={readOnly} />\n <Icon icon={icon} style={{ display: 'flex' }} />\n <PaymentMethodTextContainer container>\n <Grid item>{text}</Grid>\n {subtitle && <Grid item>{subtitle}</Grid>}\n </PaymentMethodTextContainer>\n </PaymentMethodLayoutContainer>\n );\n}\n\nexport function ExistingPaymentMethod({ checked, paymentMethodDetails, readOnly, onSelect }: PaymentMethodProps) {\n if (!paymentMethodDetails) {\n return null;\n }\n const { last4Digits, expirationMonth, expirationYear } = paymentMethodDetails;\n\n return (\n <PaymentMethodContainer item onClick={onSelect} $disabled={readOnly}>\n <PaymentMethodLayout\n checked={checked}\n readOnly={readOnly}\n icon=\"PaymentMethod\"\n text={<Typography variant=\"h6\">{`Card ending in ${last4Digits}`}</Typography>}\n subtitle={\n !!expirationMonth &&\n !!expirationYear && (\n <Typography variant=\"body1\">{`Expires ${expirationMonth\n .toString()\n .padStart(2, '0')}/${expirationYear}`}</Typography>\n )\n }\n />\n </PaymentMethodContainer>\n );\n}\n\nexport function NewPaymentMethod({\n checked,\n onSelect,\n readOnly,\n checkoutLocalization,\n onBillingAddressChange,\n collectPhoneNumber,\n}: NewPaymentMethodProps) {\n return (\n <NewPaymentMethodContainer item onClick={onSelect} $disabled={readOnly}>\n <PaymentMethodLayout\n checked={checked}\n readOnly={readOnly}\n icon=\"PaymentMethod\"\n text={<Typography variant=\"h6\">{checkoutLocalization.newPaymentMethodText}</Typography>}\n />\n <Collapse in={checked}>\n <StripePaymentForm onBillingAddressChange={onBillingAddressChange} collectPhoneNumber={collectPhoneNumber} />\n </Collapse>\n </NewPaymentMethodContainer>\n );\n}\n","import React from 'react';\nimport styled from '@emotion/styled';\nimport Alert from '@mui/material/Alert';\nimport Grid from '@mui/material/Grid';\nimport { useCheckoutModel, usePaymentStepModel } from '../../hooks';\nimport { ExistingPaymentMethod, NewPaymentMethod } from './PaymentMethods';\nimport { Typography } from '../../../common/Typography';\nimport { CheckoutContainerProps } from '../../CheckoutContainer';\n\nconst PaymentContainer = styled(Grid)`\n display: flex;\n flex-direction: column;\n gap: 24px;\n`;\n\nexport function PaymentStep({\n onBillingAddressChange,\n collectPhoneNumber,\n}: Pick<CheckoutContainerProps, 'onBillingAddressChange' | 'collectPhoneNumber'>) {\n const { checkoutState, checkoutLocalization, widgetState } = useCheckoutModel();\n const { customer } = checkoutState || {};\n const { errorMessage, useNewPaymentMethod, setUseNewPaymentMethod } = usePaymentStepModel();\n const { readOnly } = widgetState;\n\n const handleOnSelect = (openNewPaymentMethod: boolean) => {\n if (readOnly) {\n return;\n }\n\n setUseNewPaymentMethod(openNewPaymentMethod);\n };\n\n return (\n <PaymentContainer container>\n {!!errorMessage && (\n <Alert severity=\"error\" sx={{ alignItems: 'center' }}>\n <Typography overrideColor=\"inherit\">{errorMessage}</Typography>\n </Alert>\n )}\n <ExistingPaymentMethod\n readOnly={readOnly}\n checked={!useNewPaymentMethod}\n paymentMethodDetails={customer?.paymentMethodDetails}\n onSelect={() => handleOnSelect(false)}\n />\n <NewPaymentMethod\n readOnly={readOnly}\n checked={useNewPaymentMethod}\n checkoutLocalization={checkoutLocalization}\n onSelect={() => handleOnSelect(true)}\n onBillingAddressChange={onBillingAddressChange}\n collectPhoneNumber={collectPhoneNumber}\n />\n </PaymentContainer>\n );\n}\n","import React from 'react';\nimport Button, { ButtonProps } from '@mui/material/Button';\nimport { Typography } from '../../common/Typography';\nimport { CheckoutLocalization } from '../configurations/textOverrides';\n\nexport const ChangePlanButton = ({\n onClick,\n checkoutLocalization,\n size,\n}: {\n onClick: () => void;\n checkoutLocalization: CheckoutLocalization;\n size: ButtonProps['size'];\n}) => {\n return (\n <Button\n className=\"stigg-checkout-change-plan-button\"\n sx={{ textTransform: 'none' }}\n variant=\"text\"\n size={size}\n onClick={onClick}>\n <Typography\n className=\"stigg-checkout-change-plan-button-text\"\n color=\"primary.main\"\n variant=\"h3\"\n style={{ lineHeight: '24px' }}>\n {checkoutLocalization.changePlan}\n </Typography>\n </Button>\n );\n};\n","import React from 'react';\n\nimport Box from '@mui/material/Box';\nimport Divider from '@mui/material/Divider';\n\nimport { Typography } from '../../common/Typography';\nimport { useCheckoutModel } from '../hooks/useCheckoutModel';\nimport { CheckoutContainerProps } from '../CheckoutContainer';\nimport { ChangePlanButton } from '../components/ChangePlanButton';\n\ntype PlanHeaderProps = {\n allowChangePlan?: boolean;\n} & Pick<CheckoutContainerProps, 'onChangePlan'>;\n\nexport function PlanHeader({ allowChangePlan = false, onChangePlan }: PlanHeaderProps) {\n const { checkoutState, checkoutLocalization } = useCheckoutModel();\n const { plan } = checkoutState || {};\n\n return (\n <>\n <Box sx={{ marginBottom: '16px' }}>\n <Typography variant=\"body1\" color=\"disabled\" style={{ opacity: 0.6, marginBottom: '8px' }}>\n Selected plan\n </Typography>\n\n <Box sx={{ display: 'flex', justifyContent: 'space-between' }}>\n <Typography variant=\"h1\">{plan?.displayName}</Typography>\n\n {allowChangePlan && onChangePlan && (\n <ChangePlanButton\n onClick={() => {\n onChangePlan({ currentPlan: plan });\n }}\n checkoutLocalization={checkoutLocalization}\n size=\"medium\"\n />\n )}\n </Box>\n </Box>\n <Divider className=\"stigg-checkout-plan-header-divider\" />\n </>\n );\n}\n","import { BillingPeriod } from '@stigg/js-client-sdk';\n\nexport function formatBillingPeriod(billingPeriod: BillingPeriod) {\n switch (billingPeriod) {\n case BillingPeriod.Annually:\n return 'Annual';\n case BillingPeriod.Monthly:\n return 'Monthly';\n default:\n return '';\n }\n}\n","import styled from '@emotion/styled/macro';\nimport Box from '@mui/material/Box';\nimport Chip from '@mui/material/Chip';\nimport Color from 'color';\n\nexport const BillingPeriodPickerContainer = styled(Box)`\n margin: 16px 0;\n`;\n\nexport const BillingPeriodButton = styled.button<{\n $isActive?: boolean;\n $disabled?: boolean;\n $isOnlyBillingPeriod?: boolean;\n}>`\n cursor: ${({ $disabled, $isOnlyBillingPeriod }) =>\n $disabled ? 'default' : $isOnlyBillingPeriod ? 'default' : 'pointer'};\n flex: 1;\n display: flex;\n align-items: center;\n justify-content: flex-start;\n padding: 2px 8px;\n border-radius: 10px;\n border: ${({ theme, $isActive, $isOnlyBillingPeriod }) => {\n let borderColor = theme.stigg.palette.outlinedBorder;\n if ($isOnlyBillingPeriod) {\n borderColor = 'transparent';\n } else if ($isActive) {\n borderColor = theme.stigg.palette.outlinedRestingBorder;\n }\n return `1px solid ${borderColor}`;\n }};\n background: ${({ theme, $isActive, $isOnlyBillingPeriod }) => {\n if ($isOnlyBillingPeriod) {\n return 'transparent';\n }\n if ($isActive) {\n return Color(theme.stigg.palette.primary).alpha(0.15).toString();\n }\n return 'transparent';\n }};\n text-transform: none;\n text-align: start;\n height: 36px;\n\n &.MuiButton-root {\n padding: 0 16px 0 8px;\n &:hover {\n background: none;\n }\n }\n`;\n\nexport const BillingPeriodOptions = styled(Box)`\n display: flex;\n gap: 16px;\n margin-top: 16px;\n`;\n\nexport const BillingPeriodPrice = styled.div`\n display: flex;\n align-items: baseline;\n gap: 8px;\n`;\n\nexport const DiscountChip = styled(Chip)`\n & .MuiChip-label {\n font-size: 12px;\n }\n`;\n","import { partition } from 'lodash';\nimport React from 'react';\nimport { FontWeight } from 'styled-typography';\n\nimport Box from '@mui/material/Box';\nimport Radio from '@mui/material/Radio';\nimport { BillingPeriod, Plan } from '@stigg/js-client-sdk';\n\nimport { Typography } from '../../../common/Typography';\nimport { formatBillingPeriod } from '../../formatting';\nimport { usePlanStepModel } from '../../hooks/usePlanStepModel';\nimport { BillingPeriodButton, BillingPeriodOptions, BillingPeriodPickerContainer } from './BillingPeriodPicker.style';\nimport { CheckoutLocalization } from '../../configurations/textOverrides';\n\nconst BillingPeriodOption = ({\n billingPeriod,\n isOnlyBillingPeriod,\n}: {\n billingPeriod: BillingPeriod;\n isOnlyBillingPeriod: boolean;\n}) => {\n const { billingPeriod: selectedBillingPeriod, setBillingPeriod } = usePlanStepModel();\n const isActive = selectedBillingPeriod === billingPeriod;\n\n return (\n <BillingPeriodButton\n onClick={() => setBillingPeriod(billingPeriod)}\n $isActive={isActive}\n $isOnlyBillingPeriod={isOnlyBillingPeriod}>\n <Radio\n checked={isActive}\n onChange={() => setBillingPeriod(billingPeriod)}\n value={billingPeriod}\n disabled={isOnlyBillingPeriod}\n inputProps={{ 'aria-label': formatBillingPeriod(billingPeriod) }}\n sx={{ padding: 0, marginRight: '8px' }}\n />\n\n <Box>\n <Typography variant=\"h3\" color=\"primary\">\n {formatBillingPeriod(billingPeriod)}\n </Typography>\n </Box>\n </BillingPeriodButton>\n );\n};\n\ntype BillingPeriodPickerProps = {\n plan?: Plan;\n checkoutLocalization: CheckoutLocalization;\n};\n\nexport function BillingPeriodPicker({ plan, checkoutLocalization }: BillingPeriodPickerProps) {\n const [monthlyPrices, annualPrices] = partition(\n plan?.pricePoints,\n (price) => price.billingPeriod === BillingPeriod.Monthly,\n );\n\n const hasBothBillingPeriods = !!monthlyPrices?.length && !!annualPrices?.length;\n if (!hasBothBillingPeriods) {\n return null;\n }\n\n return (\n <BillingPeriodPickerContainer>\n <Typography variant=\"h6\" color=\"primary\" fontWeight={FontWeight.Medium}>\n {checkoutLocalization.billingPeriodsTitle}\n </Typography>\n\n <BillingPeriodOptions>\n {!!monthlyPrices?.length && (\n <BillingPeriodOption\n key={BillingPeriod.Monthly}\n billingPeriod={BillingPeriod.Monthly}\n isOnlyBillingPeriod={!hasBothBillingPeriods}\n />\n )}\n {!!annualPrices?.length && (\n <BillingPeriodOption\n key={BillingPeriod.Annually}\n billingPeriod={BillingPeriod.Annually}\n isOnlyBillingPeriod={!hasBothBillingPeriods}\n />\n )}\n </BillingPeriodOptions>\n </BillingPeriodPickerContainer>\n );\n}\n","import React, { useEffect, useState } from 'react';\n\nimport styled from '@emotion/styled';\nimport Box from '@mui/material/Box';\nimport { BillableFeatureInput } from '@stigg/api-client-js/src/generated/sdk';\nimport { BillingModel, BillingPeriod, Plan, Price, PriceTierFragment } from '@stigg/js-client-sdk';\n\nimport { Typography } from '../../../common/Typography';\nimport { useChargesSort } from '../../../hooks/useChargeSort';\nimport { calculateUnitQuantityText } from '../../../paywall/utils/calculateUnitQuantityText';\nimport { currencyPriceFormatter } from '../../../utils/currencyUtils';\nimport { InputField } from '../../components';\nimport { useCheckoutModel, usePlanStepModel, useProgressBarModel } from '../../hooks';\nimport { TiersSelectContainer } from '../../../common/TiersSelectContainer';\nimport { getTierByQuantity } from '../../../utils/priceTierUtils';\nimport { getValidPriceQuantity } from '../../../utils/priceUtils';\nimport { getFeatureDisplayNameText } from '../../../utils/getFeatureName';\n\nexport type UsePlanStepModel = ReturnType<typeof usePlanStepModel>;\n\ntype CheckoutChargeListProps = {\n plan?: Plan;\n billingPeriod: BillingPeriod;\n};\n\nconst StyledPlanCharge = styled.div`\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n align-items: center;\n min-height: 60px;\n margin-top: 16px;\n`;\n\nconst getValidationText = (charge: Price, quantity?: number) => {\n const { minUnitQuantity, maxUnitQuantity } = charge;\n if (!quantity || quantity < (minUnitQuantity || 1)) {\n return `Minimum ${minUnitQuantity || 1}`;\n }\n\n if (maxUnitQuantity && quantity > maxUnitQuantity) {\n return `Maximum ${maxUnitQuantity}`;\n }\n\n return '';\n};\n\nexport function PlanCharge({\n charge,\n isValid,\n setBillableFeature,\n billableFeature,\n onValidationChange,\n}: {\n charge: Price;\n isValid: boolean;\n billableFeature?: BillableFeatureInput;\n setBillableFeature: UsePlanStepModel['setBillableFeature'];\n onValidationChange: ({ featureId, isValid }: { featureId: string; isValid: boolean }) => void;\n}) {\n const featureId = charge.feature?.featureId;\n const isBaseCharge = !featureId;\n const isPayAsYouGo = charge.pricingModel === BillingModel.UsageBased;\n const displayName = isBaseCharge\n ? 'Base charge'\n : getFeatureDisplayNameText(charge.feature?.displayName || '', charge.feature?.units, charge.feature?.unitsPlural);\n const hasQuantityRestrictions = !!(charge?.minUnitQuantity || charge?.maxUnitQuantity);\n\n const handleQuantityChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n if (isBaseCharge || !featureId) return;\n\n const { minUnitQuantity, maxUnitQuantity } = charge;\n const value = event?.target?.value ? Number(event?.target?.value) : null;\n if (\n !value ||\n value <= 0 ||\n (minUnitQuantity && value < minUnitQuantity) ||\n (maxUnitQuantity && value > maxUnitQuantity)\n ) {\n onValidationChange({ featureId, isValid: false });\n // Reset the input value to null\n // @ts-ignore\n setBillableFeature(featureId, value ?? null);\n return;\n }\n\n onValidationChange({ featureId, isValid: true });\n const quantity = getValidPriceQuantity(charge, value);\n setBillableFeature(featureId, quantity);\n };\n\n let chargeRow;\n\n if (isBaseCharge || isPayAsYouGo) {\n const formattedAmount = currencyPriceFormatter({\n amount: charge.amount!,\n currency: charge.currency,\n locale: 'en-us',\n minimumFractionDigits: 2,\n });\n\n chargeRow = `${formattedAmount}`;\n if (isPayAsYouGo) {\n chargeRow += ' / unit';\n }\n } else if (charge.isTieredPrice && charge.tiersMode && featureId) {\n const tier = getTierByQuantity(charge.tiers!, billableFeature!.quantity || 1);\n chargeRow = (\n <TiersSelectContainer\n componentId={`${featureId}-tiers`}\n tiers={charge.tiers}\n selectedTier={tier}\n handleTierChange={(tier: PriceTierFragment) => {\n if (tier.upTo) {\n setBillableFeature(featureId, tier.upTo);\n }\n }}\n tiersMode={charge.tiersMode}\n perUnitQuantity={billableFeature?.quantity}\n handlePerUnitQuantityChange={(quantity: number) => {\n setBillableFeature(featureId, quantity);\n }}\n width={120}\n />\n );\n } else {\n chargeRow = (\n <InputField\n sx={{ width: 120 }}\n id={`${featureId}-input`}\n type=\"number\"\n error={!isValid}\n helperText={!isValid ? getValidationText(charge, billableFeature?.quantity) : undefined}\n FormHelperTextProps={{ sx: { margin: '4px' } }}\n value={billableFeature?.quantity ?? ''}\n onChange={handleQuantityChange}\n onWheel={(e: React.WheelEvent<HTMLInputElement>) => (e.target as HTMLElement).blur()}\n />\n );\n }\n\n return (\n <StyledPlanCharge>\n <Box display=\"flex\" flexDirection=\"column\">\n <Typography variant=\"h6\" color=\"primary\" lineHeight=\"24px\">\n {displayName}\n </Typography>\n {hasQuantityRestrictions && (\n <Typography variant=\"body1\" color=\"secondary\" lineHeight=\"20px\">\n {calculateUnitQuantityText(charge.minUnitQuantity, charge.maxUnitQuantity, charge.feature?.unitsPlural)}\n </Typography>\n )}\n </Box>\n\n <Typography variant=\"h6\" color=\"primary\">\n {chargeRow}\n </Typography>\n </StyledPlanCharge>\n );\n}\n\nexport function CheckoutChargeList({ plan, billingPeriod }: CheckoutChargeListProps) {\n const { billableFeatures, setBillableFeature } = usePlanStepModel();\n const { setIsDisabled } = useProgressBarModel();\n const { setIsValid } = useCheckoutModel();\n const planCharges = useChargesSort(plan?.pricePoints?.filter((p) => p.billingPeriod === billingPeriod) || []);\n const [chargesValidation, setChargesValidation] = useState(\n planCharges?.reduce<Record<string, boolean>>((acc, curr) => {\n acc[curr.feature?.featureId || 'base-charge'] = true;\n return acc;\n }, {}),\n );\n\n useEffect(() => {\n const isDisabled = Object.values(chargesValidation).some((x) => !x);\n setIsDisabled(isDisabled);\n setIsValid(!isDisabled);\n }, [chargesValidation, setIsDisabled, setIsValid]);\n\n return (\n <div>\n {planCharges?.map((charge) => {\n const billableFeature = billableFeatures.find((x) => x.featureId === charge.feature?.featureId);\n return (\n <PlanCharge\n key={charge.feature?.featureId || 'base-charge'}\n charge={charge}\n setBillableFeature={setBillableFeature}\n billableFeature={billableFeature}\n isValid={chargesValidation[charge.feature?.featureId || 'base-charge']}\n onValidationChange={({ featureId, isValid }: { featureId: string; isValid: boolean }) =>\n setChargesValidation((prev) => ({ ...prev, [featureId]: isValid }))\n }\n />\n );\n })}\n </div>\n );\n}\n","import styled from '@emotion/styled/macro';\nimport Box from '@mui/material/Box';\n\nexport const CheckoutPlanContainer = styled(Box)`\n width: 100%;\n`;\n","import React from 'react';\nimport { CheckoutContainerProps } from '../../CheckoutContainer';\n\nimport { useCheckoutModel } from '../../hooks/useCheckoutModel';\nimport { usePlanStepModel } from '../../hooks/usePlanStepModel';\nimport { PlanHeader } from '../../planHeader';\nimport { BillingPeriodPicker } from './BillingPeriodPicker';\nimport { CheckoutChargeList } from './CheckoutChargeList';\nimport { CheckoutPlanContainer } from './CheckoutPlanStep.style';\n\nexport const CheckoutPlanStep = ({ onChangePlan }: Pick<CheckoutContainerProps, 'onChangePlan'>) => {\n const { checkoutState, checkoutLocalization } = useCheckoutModel();\n const { plan } = checkoutState || {};\n const { billingPeriod } = usePlanStepModel();\n\n return (\n <>\n <PlanHeader allowChangePlan onChangePlan={onChangePlan} />\n <CheckoutPlanContainer>\n <BillingPeriodPicker plan={plan} checkoutLocalization={checkoutLocalization} />\n <CheckoutChargeList plan={plan} billingPeriod={billingPeriod} />\n </CheckoutPlanContainer>\n </>\n );\n};\n","<svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<g id=\"arrow-right\">\n<path id=\"Shape\" d=\"M2.66699 8H13.3337\" stroke=\"#7586B0\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n<path id=\"Shape_2\" d=\"M9.33301 4L13.333 8L9.33301 12\" stroke=\"#7586B0\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n</g>\n</svg>\n","import styled from '@emotion/styled/macro';\n\nimport ArrowRightIcon from '../../../assets/arrow-right.svg';\n\nexport const StyledArrowRightIcon = styled(ArrowRightIcon)`\n path {\n stroke: ${({ theme }) => theme.stigg.palette.text.secondary};\n }\n`;\n","import React from 'react';\nimport styled from '@emotion/styled/macro';\nimport Box from '@mui/material/Box';\nimport Alert from '@mui/material/Alert';\nimport { CheckoutStatePlan, Subscription } from '@stigg/js-client-sdk';\nimport { StyledArrowRightIcon } from './StyledArrow';\nimport { Typography } from '../../common/Typography';\nimport { CheckoutLocalization } from '../configurations/textOverrides';\nimport { CheckoutContainerProps } from '../CheckoutContainer';\nimport { ChangePlanButton } from './ChangePlanButton';\n\nconst DowngradeToFreePlansContainer = styled(Box)`\n display: flex;\n`;\n\nconst DowngradeToFreeAlert = styled(Alert)`\n margin-bottom: 16px;\n`;\n\nexport const DowngradeToFreePlanBox = styled(Box)`\n padding: 16px;\n border-radius: 10px;\n width: 100%;\n border: ${({ theme }) => `1px solid ${theme.stigg.palette.outlinedBorder}`};\n`;\n\nexport const DowngradeToFreeContent = ({\n headerText,\n planName,\n priceText,\n}: {\n headerText: string;\n planName: string;\n priceText: string;\n}) => {\n return (\n <DowngradeToFreePlanBox className=\"stigg-checkout-downgrade-to-free-container\">\n <Typography\n className=\"stigg-checkout-downgrade-to-free-text-header\"\n style={{ opacity: 0.8 }}\n variant=\"caption\"\n color=\"disabled\">\n {headerText}\n </Typography>\n <Typography className=\"stigg-checkout-downgrade-to-free-plan-name\" bold variant=\"h3\" color=\"primary\">\n {planName}\n </Typography>\n <Typography className=\"stigg-checkout-downgrade-to-free-price-text\" color=\"secondary\">\n {priceText}\n </Typography>\n </DowngradeToFreePlanBox>\n );\n};\n\ntype DowngradeToFreePlanProps = {\n checkoutLocalization: CheckoutLocalization;\n activeSubscription: Subscription;\n freePlan: CheckoutStatePlan;\n allowChangePlan?: boolean;\n} & Pick<CheckoutContainerProps, 'onChangePlan'>;\n\nexport const DowngradeToFreePlan = ({\n checkoutLocalization,\n activeSubscription,\n freePlan,\n allowChangePlan = false,\n onChangePlan,\n}: DowngradeToFreePlanProps) => {\n let alertAction;\n if (allowChangePlan && onChangePlan) {\n alertAction = (\n <ChangePlanButton\n onClick={() => {\n onChangePlan({ currentPlan: freePlan });\n }}\n checkoutLocalization={checkoutLocalization}\n size=\"small\"\n />\n );\n }\n\n const paidBillingPeriod =\n activeSubscription.prices.length > 0 ? activeSubscription.prices[0].billingPeriod : undefined;\n\n return (\n <>\n <DowngradeToFreeAlert action={alertAction} className=\"stigg-checkout-downgrade-to-free-alert\" severity=\"info\">\n <Typography span color=\"secondary\">\n {checkoutLocalization.downgradeToFree.alertText({ plan: activeSubscription.plan })}\n </Typography>\n </DowngradeToFreeAlert>\n\n <DowngradeToFreePlansContainer className=\"stigg-checkout-downgrade-to-free-plans-container\">\n <DowngradeToFreeContent\n headerText={checkoutLocalization.downgradeToFree.paidPlanHeader({ plan: activeSubscription.plan })}\n planName={checkoutLocalization.downgradeToFree.paidPlanName({ plan: activeSubscription.plan })}\n priceText={checkoutLocalization.downgradeToFree.paidPlanPriceText({\n plan: activeSubscription.plan,\n billingPeriod: paidBillingPeriod,\n })}\n />\n\n <StyledArrowRightIcon\n className=\"stigg-checkout-downgrade-to-free-arrow\"\n style={{ margin: 'auto 16px', minWidth: '16px' }}\n />\n\n <DowngradeToFreeContent\n headerText={checkoutLocalization.downgradeToFree.freePlanHeader({ plan: freePlan })}\n planName={checkoutLocalization.downgradeToFree.freePlanName({ plan: freePlan })}\n priceText={checkoutLocalization.downgradeToFree.freePlanPriceText({ plan: freePlan })}\n />\n </DowngradeToFreePlansContainer>\n </>\n );\n};\n","import React, { useMemo } from 'react';\nimport { Elements } from '@stripe/react-stripe-js';\nimport {\n PricingType,\n BillingAddress,\n ApplySubscription,\n CheckoutStatePlan,\n ApplySubscriptionResults,\n} from '@stigg/js-client-sdk';\nimport { CheckoutContent, CheckoutLayout, CheckoutPanel } from './CheckoutContainer.style';\nimport { CheckoutProgressBar } from './progressBar/CheckoutProgressBar';\nimport { CheckoutSummary, CheckoutSummarySkeleton } from './summary';\nimport { CheckoutStep, CheckoutStepKey, useCheckoutModel, useProgressBarModel } from './hooks';\nimport { CheckoutAddonsStep } from './steps/addons';\nimport { PaymentStep } from './steps/payment';\nimport { useStripeIntegration } from './steps/payment/stripe';\nimport { CheckoutPlanStep } from './steps/plan';\nimport { useCheckoutContext } from './CheckoutProvider';\nimport { ContentLoadingSkeleton } from './components';\nimport { DowngradeToFreePlan } from './components/DowngradeToFreeContainer';\nimport { MockCheckoutPreviewCallback } from './types';\n\ntype StepProps = {\n content: React.ReactNode;\n};\n\ntype StripeClientSecret = { clientSecret: string };\ntype StripeManualMode = { mode: 'setup' | 'payment' | 'subscription'; currency: string };\n\nconst getStepProps = (\n currentStep: CheckoutStep,\n {\n onBillingAddressChange,\n onChangePlan,\n collectPhoneNumber,\n }: Pick<CheckoutContainerProps, 'onBillingAddressChange' | 'onChangePlan' | 'collectPhoneNumber'>,\n): StepProps => {\n switch (currentStep.key) {\n case CheckoutStepKey.PLAN:\n return { content: <CheckoutPlanStep onChangePlan={onChangePlan} /> };\n case CheckoutStepKey.ADDONS:\n return { content: <CheckoutAddonsStep /> };\n case CheckoutStepKey.PAYMENT:\n return {\n content: (\n <PaymentStep onBillingAddressChange={onBillingAddressChange} collectPhoneNumber={collectPhoneNumber} />\n ),\n };\n default:\n return { content: null };\n }\n};\n\nexport type CheckoutResult = { success: boolean; errorMessage?: string; results?: ApplySubscriptionResults };\n\nexport type OnCheckoutParams = {\n customerId: string;\n checkoutParams: ApplySubscription;\n checkoutAction: (params: ApplySubscription) => Promise<CheckoutResult>;\n};\n\nexport type OnCheckoutCompletedParams = { success: boolean; error?: string };\n\nexport type CheckoutContainerProps = {\n onCheckout?: (params: OnCheckoutParams) => Promise<CheckoutResult>;\n onCheckoutCompleted: (params: OnCheckoutCompletedParams) => Promise<void>;\n onChangePlan?: (params: { currentPlan: CheckoutStatePlan | undefined }) => void;\n onBillingAddressChange?: (params: { billingAddress: BillingAddress }) => Promise<void>;\n disablePromotionCode?: boolean;\n disableSuccessAnimation?: boolean;\n collectPhoneNumber?: boolean;\n onMockCheckoutPreview?: MockCheckoutPreviewCallback;\n};\n\nexport function CheckoutContainer({\n onCheckout,\n onCheckoutCompleted,\n onChangePlan,\n onBillingAddressChange,\n collectPhoneNumber,\n disablePromotionCode,\n disableSuccessAnimation,\n onMockCheckoutPreview,\n}: CheckoutContainerProps) {\n const { stripePromise, setupIntentClientSecret } = useStripeIntegration();\n const [{ stiggTheme, widgetState, theme }] = useCheckoutContext();\n const { currentStep } = useProgressBarModel();\n\n const { isLoadingCheckoutData } = widgetState;\n\n const { checkoutState, checkoutLocalization } = useCheckoutModel();\n const { plan, activeSubscription } = checkoutState || {};\n const isFreeDowngrade =\n !!plan &&\n plan.pricingType === PricingType.Free &&\n !!activeSubscription &&\n activeSubscription.pricingType !== PricingType.Free;\n\n const { content } = getStepProps(currentStep, { onBillingAddressChange, onChangePlan, collectPhoneNumber });\n\n const checkoutContent = (\n <>\n {isFreeDowngrade ? (\n <DowngradeToFreePlan\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion\n freePlan={plan!}\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion\n activeSubscription={activeSubscription!}\n allowChangePlan\n checkoutLocalization={checkoutLocalization}\n onChangePlan={onChangePlan}\n />\n ) : (\n <>{content}</>\n )}\n </>\n );\n\n const stripeElementsMode: StripeClientSecret | StripeManualMode = useMemo(\n () => (setupIntentClientSecret ? { clientSecret: setupIntentClientSecret } : { mode: 'setup', currency: 'usd' }),\n [setupIntentClientSecret],\n );\n\n return (\n <Elements\n key={setupIntentClientSecret}\n stripe={stripePromise}\n options={{\n ...stripeElementsMode,\n appearance: {\n theme: 'stripe',\n variables: {\n colorText: stiggTheme.palette.text.primary,\n colorPrimaryText: stiggTheme.palette.text.primary,\n colorTextPlaceholder: stiggTheme.palette.text.disabled,\n fontFamily: stiggTheme.typography.fontFamily,\n colorBackground: theme?.paymentInputBackgroundColor,\n borderRadius: theme?.paymentInputBorderRadius,\n },\n rules: theme?.paymentInputBorderColor\n ? {\n '.Input': {\n borderColor: theme?.paymentInputBorderColor,\n },\n }\n : undefined,\n },\n }}>\n <CheckoutLayout className=\"stigg-checkout-layout\">\n {!isFreeDowngrade && <CheckoutProgressBar />}\n <CheckoutContent>\n <CheckoutPanel>{isLoadingCheckoutData ? <ContentLoadingSkeleton /> : checkoutContent}</CheckoutPanel>\n {isLoadingCheckoutData ? (\n <CheckoutSummarySkeleton />\n ) : (\n <CheckoutSummary\n disablePromotionCode={disablePromotionCode}\n disableSuccessAnimation={disableSuccessAnimation}\n onCheckout={onCheckout}\n onCheckoutCompleted={onCheckoutCompleted}\n isFreeDowngrade={isFreeDowngrade}\n onMockCheckoutPreview={onMockCheckoutPreview}\n />\n )}\n </CheckoutContent>\n </CheckoutLayout>\n </Elements>\n );\n}\n","import React from 'react';\nimport { CheckoutProvider, CheckoutProviderProps } from './CheckoutProvider';\nimport { CheckoutContainer, CheckoutContainerProps } from './CheckoutContainer';\nimport { CheckoutMockProps } from './types';\n\nexport type CheckoutProps = CheckoutProviderProps & CheckoutContainerProps & CheckoutMockProps;\n\nexport const Checkout = ({\n textOverrides,\n theme,\n resourceId,\n planId,\n preferredBillingPeriod,\n billingCountryCode,\n billableFeatures,\n billingInformation,\n onMockCheckoutState,\n ...containerProps\n}: CheckoutProps) => {\n return (\n <CheckoutProvider\n textOverrides={textOverrides}\n theme={theme}\n resourceId={resourceId}\n planId={planId}\n preferredBillingPeriod={preferredBillingPeriod}\n billingCountryCode={billingCountryCode}\n billableFeatures={billableFeatures}\n billingInformation={billingInformation}\n onMockCheckoutState={onMockCheckoutState}>\n <CheckoutContainer {...containerProps} />\n </CheckoutProvider>\n );\n};\n","import { Subscription } from '@stigg/js-client-sdk';\nimport { useEffect, useMemo, useState } from 'react';\nimport { useStiggContext } from '../StiggProvider';\n\nfunction useQueryParams(paramName?: string) {\n return useMemo(() => {\n const urlSearchParams = new URLSearchParams(window.location.search);\n return paramName ? urlSearchParams.get(paramName) : urlSearchParams;\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [paramName, window.location.search]);\n}\n\nexport enum ProvisionStatus {\n IN_PROGRESS = 'IN_PROGRESS',\n SUCCEEDED = 'SUCCEEDED',\n FAILED = 'FAILED',\n}\n\nexport const useWaitForCheckoutCompleted = ({\n onProvisionStart,\n onProvisionSucceeded,\n onProvisionFailed,\n}: {\n onProvisionStart?: () => void;\n onProvisionSucceeded?: (subscription?: Subscription | null) => void;\n onProvisionFailed?: (err?: any) => void;\n} = {}) => {\n const { stigg } = useStiggContext();\n const [provisionStatus, setProvisionStatus] = useState(ProvisionStatus.IN_PROGRESS);\n const [isAwaitingCheckout, setIsAwaitingCheckout] = useState(false);\n const checkoutCompleted = useQueryParams('checkoutCompleted') as string;\n\n useEffect(() => {\n const waitForCheckoutToComplete = async () => {\n if (!checkoutCompleted || checkoutCompleted.toLowerCase() === 'false' || isAwaitingCheckout) {\n return;\n }\n\n setIsAwaitingCheckout(true);\n if (onProvisionStart) {\n onProvisionStart();\n }\n try {\n const subscription = await stigg.waitForCheckoutCompleted();\n setProvisionStatus(ProvisionStatus.SUCCEEDED);\n if (onProvisionSucceeded) {\n onProvisionSucceeded(subscription);\n }\n } catch (err) {\n console.error('Failed to wait for checkout to complete', err);\n setProvisionStatus(ProvisionStatus.FAILED);\n if (onProvisionFailed) {\n onProvisionFailed(err);\n }\n } finally {\n setIsAwaitingCheckout(false);\n }\n };\n\n void waitForCheckoutToComplete();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [stigg, checkoutCompleted]);\n\n return { isAwaitingCheckout, provisionStatus };\n};\n"],"names":["_extends","React.createElement","calculateUnitQuantityText","minUnitQuantity","maxUnitQuantity","unitsPlural","unitsText","getColor","theme","$color","stigg","palette","primary","primaryLight","warning","error","text","StyledText","Text","$span","getLevel","variant","mapFontWeight","fontWeight","StyledFontWeight","Bold","Normal","getFontWeight","typography","h1","h2","h3","body","caption","Typography","forwardRef","props","ref","children","span","style","color","overrideColor","bold","as","rest","useTheme","level","levelClassName","className","React","EntitlementName","EntitlementRowContainer","EntitlementIconContainer","fontSize","EntitlementCheckIcon","CheckUrl","disabled","formatUsageNumber","usageLimit","toLocaleString","maximumFractionDigits","getResetPeriodText","resetPeriod","EntitlementResetPeriod","Day","Hour","Week","Month","getEntitlementDisplay","hasUnlimitedUsage","feature","isCustom","unitBasedEntitlement","resetPeriodSuffix","featureUnits","units","displayName","EntitlementRow","displayNameOverride","restProps","PlanEntitlementsContainer","getTitle","plan","paywallLocale","entitlementsTitle","title","basePlan","PlanEntitlements","billingPeriod","prices","pricePoints","filter","price","unitBasedEntitlements","map","shouldRenderUnitBasedEntitlement","key","entitlements","entitlement","hiddenFromWidgets","includes","WidgetType","Paywall","id","SubscribeIntentionType","flexLayoutMapper","horizontalAlignment","left","center","right","getResolvedTheme","customizedTheme","primaryColor","Color","textColor","successColor","errorColor","baseTheme","hex","primaryDark","darken","alpha","toString","backgroundPaper","backgroundHighlight","backgroundSection","backgroundButton","outlinedBorder","outlinedRestingBorder","outlinedHoverBackground","lightness","switchBorder","lighten","switchFill","switchHandle","errorDark","success","successDark","white","secondary","layout","planMinWidth","planMaxWidth","planMargin","planPadding","ctaAlignment","headerAlignment","descriptionAlignment","descriptionMinHeight","switchBottomSpacing","shadows","light","popover","border","radius","fontFamily","customCss","merge","formatDate","date","moment","utc","format","getSubscriptionScheduleUpdateTexts","scheduledUpdate","subscriptionPrices","billingPeriodRange","options","withDate","postfix","subscriptionScheduleType","SubscriptionScheduleType","Downgrade","shouldShowDate","isNil","end","scheduledExecutionTime","isSame","line1","targetPackage","line2","BillingPeriod","variables","scheduleVariables","toLocaleLowerCase","UnitAmount","compact","find","featureId","featureUnitsPlural","newUnitAmount","getPriceFeatureUnit","unitQuantity","getTierByQuantity","tiers","quantity","undefined","ascendingTiers","sort","a","b","upTo","tier","length","calculateTierPrice","currentTier","selectedBillingPeriod","shouldShowMonthlyPriceAmount","perUnitQuantity","unitPrice","Annually","amount","tiersMode","TiersMode","Volume","VolumePerUnit","getSelectedTierQuantityBeFeature","currentSubscription","result","planTierPrices","isTieredPrice","tieredPrice","subscriptionPrice","pricingModel","BillingModel","PerUnit","getSelectedTier","selectedTierByFeature","selectDefaultTierIndex","selectedDefaultTierIndex","PriceTierComparison","compareSelectedTierToCurrentTier","perUnitQuantityByFeature","Equal","currentTierPrice","selectedTier","selectedQuantity","Lower","Higher","LoadingIndicator","ClipLoader","OfferingButton","$disabled","css","ButtonText","ScheduledUpdateText","CancelScheduledUpdateButton","TrialDaysLeft","ButtonLayout","PlanOfferingButton","isNextPlan","customer","isCustomerOnTrial","onPlanSelected","withTrialLeftRow","useState","isLoading","setIsLoading","planCTAButton","currentPlan","custom","downgrade","startTrial","upgrade","startNew","switchToBillingPeriod","cancelScheduledUpdate","resolvedDowngrade","isFunction","resolvedUpgrade","buttonProps","isLowerThanCurrentPlan","intentionType","DOWNGRADE_PLAN","UPGRADE_TRIAL_TO_PAID","UPGRADE_PLAN","isCustomPrice","pricingType","PricingType","Custom","scheduledUpdateText","isTriable","isCurrentCustomerPlan","START_TRIAL","isSameBillingPeriod","currentCustomerPlanBillingPeriod","Free","planComparison","CHANGE_UNIT_QUANTITY","CHANGE_BILLING_PERIOD","REQUEST_CUSTOM_PLAN_ACCESS","CANCEL_SCHEDULED_UPDATES","isDisabled","onClick","Promise","resolve","loading","size","height","trialDaysLeft","_path","currencyPriceFormatter","currency","Currency","Usd","locale","minimumFractionDigits","currencyString","currencySymbol","getSymbolFromCurrency","formattedPrice","Intl","NumberFormat","currencyDisplay","replace","getPaidPriceText","planPrices","paywallCalculatedPrice","priceAmount","isSinglePrice","priceNumber","tierUnits","pricePeriod","Monthly","unit","featureUnit","UsageBased","getPlanPrice","free","paywallCurrency","Paid","pricePoint","paywallCalculatedPricePoints","priceNotSet","paidParams","paid","StyledButton","MuiButton","shouldForwardProp","prop","startsWith","$success","$error","Button","InputField","styled","TextField","borderRadius","fieldset","borderColor","padding","SkeletonsContainer","Grid","$flexDirection","$gap","FlexedSkeletonContainer","FlexedSkeleton","flex","Skeleton","ReactSkeleton","ContentContainer","ContentLoadingSkeleton","container","item","width","Divider","sx","marginY","marginTop","VolumePerUnitInput","handlePerUnitQuantityChange","handleChange","type","fullWidth","minHeight","InputProps","endAdornment","InputAdornment","position","value","onChange","event","target","Number","TierSelect","Select","TierInput","OutlinedInput","VolumeBulkSelect","componentId","input","MenuProps","MenuListProps","disablePadding","PaperProps","MenuItem","lineHeight","TiersSelectLayout","TiersSelectContainer","handleTierChange","getContent","EMPTY_CHAR","PlanPriceContainer","UnitSpan","PriceSpan","PriceBillingPeriod","hasMonthlyPrice","hasAnnuallyPrice","hasPrice","content","toLowerCase","PlanPrice","showStartingAt","withUnitPriceRow","withStartingAtRow","withTiersRow","setSelectedTierByFeature","setPerUnitQuantityByFeature","planPrice","prevState","startingAtCaption","PlanOfferingButtonHeight","PlanOfferingContainer","$isCurrentPlan","$isHighlighted","PlanHeader","PlanDescription","HighlightBadge","HighlightText","HeaderWrapper","NextPlanTagContainer","StyledMiniSchedule","MiniSchedule","UpcomingChangeTag","iconsColor","display","alignItems","gap","PlanOffering","isHighlighted","shouldShowDescriptionSection","isCustomerInCustomPlan","additionalChargesMayApply","showCTAButton","planBadge","highlightChip","useEffect","onPlanButtonClick","tierBillableFeatures","Object","keys","perUnitBillableFeatures","classNames","description","PickerContainer","PeriodText","StyledSwitch","Switch","DiscountRate","discount","BillingPeriodPicker","discountRate","onBillingPeriodChanged","availableBillingPeriods","isMonthlyBillingPeriod","uncheckedIcon","checkedIcon","isAnnuallySelected","checked","handleDiameter","calculateDiscountRate","monthlyPrice","annuallyPrice","annuallyPerMonthPrice","Math","round","getPlanBillingPeriodAmount","calculatePaywallDiscountRate","plans","reduce","maxDiscount","monthlyAmount","annuallyAmount","max","STIGG_WATERMARK_CLASSNAME","PoweredByStiggThemedSvg","PoweredByStiggSvg","StyledPoweredByStigg","$alignSelf","PoweredByStigg","source","showWatermark","align","onWatermarkClick","sourceDomain","window","location","hostname","open","cursor","hasPricePoints","some","hasPricePointsForPlans","getPlansToDisplay","shouldHidePlan","PaywallPlansContainer","PaywallContainer","PaywallLayout","highlightedPlanId","useStiggContext","plansToShow","handleOnSubscribe","useCallback","billableFeatures","subscription","useMemo","values","isWidgetWatermarkEnabled","LoggerService","message","params","console","log","object","debug","StiggContext","createContext","DEFAULT_LOCALE","StiggProvider","apiKey","baseUri","baseEdgeUri","enableEdge","customerId","customerToken","resourceId","useEntitlementPolling","entitlementPollingInterval","entitlementsFallback","stiggClient","currentApiKey","useRef","initializeParams","Stigg","initialize","lazyLoad","isInitialized","refreshData","setContext","ctx","customerPortalUpdatedAt","Date","refresh","isMounted","safeSetContext","setContextFunc","onEntitlementsUpdated","updatedAt","setStiggInstance","removeListener","addListener","loadStiggClient","current","logger","waitForInitialization","clearCustomer","setCustomerId","Provider","SkeletonTheme","baseColor","highlightColor","useContext","Error","computeBillingPeriods","activeSubscriptions","preferredBillingPeriod","billingPeriods","flatMap","x","counts","countBy","uniq","defaultBillingPeriod","activeSubscription","status","SubscriptionStatus","Active","calculateTrialDaysLeft","trialEndDate","diff","defaultCheckoutTypography","FontWeight","addCssUnits","defaultValue","JSFontWeight","mapTypography","defaultTypography","fontFamilyUrl","mapAlignment","alignment","Alignment","Left","Center","Right","mapCustomerPortalConfiguration","configuration","paywallBackgroundColor","currentPlanBackground","mapPaywallConfiguration","paywallConfiguration","backgroundColor","planWidth","mapCheckoutConfiguration","summaryBackgroundColor","getCustomerSubscriptionDetails","s","InTrial","mapPaywallData","paywall","showOnlyEligiblePlans","scheduledUpdates","downgradeSchedule","billingChangedSchedule","paywallPlans","sortBy","order","eligibleForProductTrial","eligibleForTrial","productTrial","productId","product","currentBillingPeriod","downgradeVariables","billingChangedVariables","isPlanHasBillingPeriodPrice","refId","planId","defaultTrialConfig","eligible","isUpcomingPlan","currentPlanOrder","useLoadPaywallData","billingCountryCode","setSelectedBillingPeriod","setAvailableBillingPeriods","setPaywall","loadPaywall","getPaywall","paywallResult","isCustomerLoaded","paywallData","getResolvedPaywallLocalize","localizeOverride","paywallDefaultLocalization","duration","symbol","SkeletonContainer","PlanOfferingSkeleton","PlansContainer","EntitlementContainer","FooterSkeletonLoader","BillingPeriodLoader","PlanOfferingLoader","circle","marginBottom","PaywallLoader","Fonts","externalFontUrl","Global","styles","CustomCssGlobal","useStiggTheme","remoteThemeOverride","externalTheme","mergedTheme","resolvedTheme","createTypographyTheme","htmlFontSize","coef","pxToRem","bodyFontFamily","headingFontFamily","fontSizes","createMuiPalette","main","SdkThemeProvider","componentTheme","muiPalette","materialTheme","createTheme","MuiThemeProvider","THEME_ID","ThemeProvider","StyledThemeProvider","useCustomerPortal","customerPortal","setCustomerPortal","loadCustomerPortal","getCustomerPortal","customerPortalData","getResolvedCustomerPortalLocalize","customerPortalDefaultLocalization","manageSubscription","usageTabTitle","addonsTabTitle","promotionsTabTitle","promotionsSubtitle","contactSupportTitle","contactSupportLink","editBilling","invoicesTitle","viewInvoiceHistory","editPaymentDetails","paywallSectionTitle","cancelScheduledUpdatesButtonTitle","getResolvedCustomerPortalTheme","globalTheme","themeOverride","remoteConfiguration","customerPortalDefaultTheme","sectionTitleColor","planNameColor","listItemBackgroundColor","tabMaxHeight","iconsBackgroundColor","CustomerPortalContext","useCustomerPortalContext","useCheckContextExists","contextType","CustomerPortalProvider","textOverrides","customerPortalTheme","resolvedTextOverrides","onBillingPeriodChange","hasCustomerPortalContext","isCustomerPortalLoading","customerPortalResourceId","handlePeriodChange","component","SectionHeader","$disableMargin","SectionTitle","CustomerPortalIntentionType","StyledEditIcon","EditIcon","SubscriptionsOverviewHeader","onManageSubscription","hideManageButton","MANAGE_SUBSCRIPTION","marginLeft","AddonsList","addons","subscriptions","isEmpty","addon","index","addonId","Row","$borderColor","getPromotionTitle","promotionalEntitlement","Promotions","promotionalEntitlements","flexDirection","endDate","StyledTabs","Tabs","TabsLayout","TabContent","Box","$maxHeight","getIconColor","_rect","_path2","_g","_defs","_path3","_circle","IconWrapper","$pathColor","$rectColor","$strokeColor","Icon","icon","svgPathColor","svgRectColor","svgStrokeColor","IconComponent","customIcons","TabPanel","maxHeight","other","role","hidden","TabTitle","isSelected","label","Medium","SubscriptionTabs","hiddenSections","allAddons","isSectionHidden","sectionName","section","showAddons","showPromotions","setValue","_","newValue","shouldShowTabs","borderBottom","Tab","textTransform","SkeletonLayout","SkeletonLayoutLeft","SubscriptionOverviewLoader","SubscriptionScheduledUpdateDowngradeRow","scheduleUpdate","ArrowDown","SubscriptionScheduledUpdateBillingPeriodChangeRow","nextBillingPeriod","SubscriptionScheduledUpdateUnitQuantityChangeRow","newQuantityUnits","flexWrap","SubscriptionScheduledUpdateRow","SubscriptionScheduleUpdateAlertContainer","StyledRestoreIcon","Restore","MultipleScheduledUpdates","justifyContent","SingleScheduledUpdate","SubscriptionScheduledUpdatesAlert","onCancelScheduledUpdates","stiggTheme","isSingleScheduledUpdate","marginRight","SectionContainer","$backgroundColor","NextEstimatedBill","rangeEnd","NoUpcomingBilling","ContactCustomerSupportLayout","ContactSupportButton","ContactCustomerSupport","onContactSupport","linkLabel","contactSupportText","Container","UpcomingBilling","noUsageBasedPrices","every","billingModel","scheduledDowngradeToFree","planName","total","totalPrice","InformationTooltip","placement","Tooltip","arrow","classes","popper","tooltip","$padding","$maxWidth","tooltipClasses","maxWidth","boxShadow","$display","$maxLines","$wordBreak","$bold","checkTextClamped","element","clientHeight","scrollHeight","offsetWidth","scrollWidth","LongText","leaveDelay","maxLines","wordBreak","tooltipPlacement","dataTestId","isTextClamped","setIsTextClamped","textClamped","OnTrialBadge","StyledLink","Link","TrialPanel","includePlanName","SandClockIcon","trialRemainingDays","UPGRADE_TRIAL_PLAN","SubscriptionView","mainSubscription","trialSubscription","USAGE_PERCENTAGE_WARNING_THRESHOLD","getUsagePercentage","currentUsage","limit","min","floor","getUsageProgressStatus","getResetUsageText","nextResetDate","calculateResetDiff","StyledLinearProgress","LinearProgress","string","$progressStatus","StyledDivider","FeatureUsageProgressBar","usagePercentage","linearProgressStatus","EntitlementCtaButton","onBuyMore","canBuyMore","canUpgradeSubscription","hasCustomSubscription","ChargeItem","hideChargePrice","whiteSpace","ChargeList","entitlementByFeature","keyBy","filteredSubscriptionPrices","SubscriptionsOverview","isLoadingData","CustomerPortalHeaderLayout","CustomerPortalHeader","ExternalLinkText","LinkIcon","ExternalLinkIcon","ExternalLinkButton","url","startIcon","strokeWidth","InformationGridContainer","InformationGridRow","InformationGrid","rows","classNamePrefix","labelTypographyProps","valueTypographyProps","SkeletonButton","PaymentDetailsSection","billingInformation","items","push","orientation","name","email","defaultPaymentMethodId","defaultPaymentMethodLast4Digits","defaultPaymentExpirationMonth","defaultPaymentExpirationYear","unshift","padStart","editButton","billingPortalUrl","CustomerPortalPaywallLayout","CustomerPortalPaywall","paywallComponent","CustomerPortalLayout","CustomerPortalSections","getFeatureDisplayNameText","featureDisplayName","displayNameLowerCase","lowercase","getFeatureDisplayName","FeatureUsageContainer","$highlight","FeatureUsage","hasOverageUsage","isUndefined","Footer","CustomerUsageLoader","spacing","range","xs","MAX_BOXES","CustomerUsageData","showAll","setShowAll","meteredEntitlements","meterType","MeterType","Fluctuating","Incremental","subscriptionPriceByFeature","priceEntitlements","otherEntitlements","sortedEntitlements","entitlementsToShow","slice","toggleShowAll","Minus","Plus","CustomerPortalContainer","customerPortalSectionRef","onManageClick","customerSubscriptions","scrollIntoView","behavior","shouldShowUsage","shouldShowPaymentDetails","shouldShowInvoices","InvoicesSection","CustomerPortal","viewInvoiceHistoryButton","sortAddons","sortSubscriptionAddons","filterAddonPricePointsByBillingPeriod","mapAddonPricePointsByBillingCountryCode","filterAddons","filterSubscriptionAddons","getAddonsStepInitialState","availableAddons","compatibleAddons","activeSubscriptionAddons","planAddon","initialAddons","cloneDeep","useSetAddon","useCheckoutContext","setState","draft","addonToUpdate","addonsStep","currentAddon","useRemoveAddon","remove","useAddonsState","useAddonsStepModel","state","setAddon","removeAddon","useCheckoutState","checkout","widgetState","checkoutLocalization","checkoutState","useSetWidgetReadonly","readOnly","useSetIsValid","isValid","useCheckoutModel","setWidgetReadOnly","setIsValid","useLoadCheckout","onMockCheckoutState","setCheckout","loadCheckout","getCheckoutState","getValidPriceQuantity","getBillingPeriod","hasMonthlyPrices","hasAnnualPrices","isInAdvanceCommitmentCharge","getBillableFeatures","preconfiguredBillableFeatures","preconfBillableFeaturesByFeatureId","quantityByFeatureId","charge","preconfiguredQuantity","resolveBillingPeriod","isUpdate","getPlanStepInitialState","usePlanState","planStep","useSetBillableFeature","billableFeature","useSetBillingPeriod","usePlanStepModel","setBillingPeriod","setBillableFeature","CheckoutStepKey","CHECKOUT_STEPS","PLAN","ADDONS","PAYMENT","INITIAL_STATE","activeStep","completedSteps","steps","getProgressBarInitialState","step","useProgressBarState","progressBar","useSetActiveStep","stepNumber","useMarkStepAsCompleted","isCheckoutComplete","useGoNext","useSetIsDisabled","useProgressBarModel","progressBarState","currentStep","isLastStep","setActiveStep","markStepAsCompleted","goNext","setIsDisabled","useSubscriptionModel","promotionCode","paymentStep","billingAddress","taxPercentage","mapBillingInformation","previewSubscription","onMockCheckoutPreview","estimateAddons","subscriptionPreview","errorMessage","previewSubscriptionProps","split","errorMsg","trim","usePreviewSubscriptionAction","previewSubscriptionAction","SUBSCRIPTION_PREVIEW_DEBOUNCE_TIME","usePreviewSubscription","setSubscriptionPreview","isFetchingSubscriptionPreview","setIsFetchingSubscriptionPreview","estimateSubscription","timer","setTimeout","clearTimeout","getPaymentStepInitialState","useNewPaymentMethod","paymentMethodDetails","useSetUseNewPaymentMethod","useSetErrorMessage","useSetBillingAddress","usePaymentState","usePaymentStepModel","setUseNewPaymentMethod","setErrorMessage","setBillingAddress","getResolvedCheckoutLocalize","checkoutDefaultLocalization","changePlan","billingPeriodsTitle","addAddonText","newPaymentMethodText","newPaymentMethodBillingAddressTitle","newPaymentMethodCardTitle","summary","addCouponCodeText","couponCodeTitle","addonsSectionTitle","discountsSectionTitle","onlyPayAsYouGoText","startsAtText","proratedTotalDueText","baseChargeText","totalText","totalDueText","totalBillingPeriodText","appliedCreditsTitle","creditsForUnusedTimeText","credits","discountText","discountDetails","DiscountType","Percentage","discountTextPostfix","durationType","DiscountDurationType","Once","Repeating","prefix","Fixed","durationInMonths","Forever","taxTitle","taxDetails","percentage","changesWillApplyAtEndOfBillingPeriod","billingPeriodEnd","checkoutSuccessText","payAsYouGoTooltipText","checkoutButton","nextText","noChangesText","updateText","downgradeToFreeText","upgradeText","downgradeToFree","alertText","freePlanHeader","freePlanName","freePlanPriceText","paidPlanHeader","paidPlanName","paidPlanPriceText","defaultCheckoutTheme","getResolvedCheckoutTheme","_remoteConfiguration","globalPalette","paymentInputBackgroundColor","paymentInputBorderColor","paymentInputBorderRadius","CheckoutContext","CheckoutContextProvider","initialState","innerSetState","updater","old","produce","contextValue","setContextValue","CheckoutProvider","checkoutTheme","resource","isLoadingCheckoutData","CheckoutLayout","CheckoutContent","CheckoutPanel","StyledProgress","linearProgressClasses","root","bar","StyledStepButton","buttonClasses","StyledIcon","$shouldFill","stroke","fill","CheckoutProgressBar","progress","mb","isCompleted","StepIcon","CHARGES_BILLING_MODEL_ORDER","FlatFee","sortCharges","charges","indexOf","useChargesSort","usePromotionCodeState","useSetPromotionCode","usePromotionCodeModel","setPromotionCode","StyledPlusIcon","PlusIcon","AddPromotionCodeButton","onAddClick","CouponCodeAddButton","AddPromotionCode","persistPromotionCode","showInput","setShowInput","handlePromotionCode","immediateInvoice","toUpperCase","autoFocus","e","inputProps","maxLength","onKeyDown","preventDefault","CircularProgress","AppliedCouponContainer","AppliedPromotionCode","onClearPromotionCode","minWidth","PromotionCodeSectionContainer","PromotionCodeSection","StripePaymentForm","onBillingAddressChange","collectPhoneNumber","shouldCollectPhoneNumber","handleAddressChange","args","complete","address","postalCode","postal_code","addressFields","callExternalBillingAddressChanged","pointerEvents","AddressElement","mode","fields","phone","defaultValues","PaymentElement","onReady","terms","card","billingDetails","useStripeIntegration","stripePromise","setStripePromise","billingIntegration","setupSecret","billingIdentifier","credentials","BillingVendorIdentifier","Stripe","accountId","publicKey","loadStripe","stripeAccount","setupIntentClientSecret","useSubscriptionState","FAILED_PAYMENT_COLLECTION_STATUSES","PaymentCollection","Failed","Processing","handleStripeFormValidations","elements","submit","elementsError","handleStripeNextAction","applySubscriptionResults","stripe","paymentIntentClientSecret","latestInvoice","paymentSecret","paymentCollection","ActionRequired","handleNextAction","clientSecret","NextActionError","handleStripeSetup","confirmSetup","confirmParams","return_url","href","redirect","setupError","setupErrorMessage","retrieveSetupIntent","setupIntent","payment_method","newPaymentMethodId","handleNewPaymentMethod","stripeFormValidationsResults","paymentMethodId","ANIMATION_DURATION","CheckoutSuccessContainer","CheckoutSuccessText","StyledLottie","Lottie","CheckoutSuccess","animationData","loop","autoplay","delay","ms","res","useSubmit","isMocked","onCheckout","onCheckoutCompleted","onSuccess","disableSuccessAnimation","subscriptionState","useStripe","useElements","handleSubmit","usedStiggCheckoutAction","paymentMethodResults","checkoutParams","checkoutAction","applySubscription","nextActionResults","results","externalCheckoutResults","checkoutResults","checkoutActionResults","WithSkeleton","RemainingCreditsCaption","proration","netAmount","positiveAmount","ScheduledUpdatesCaption","hasScheduledUpdates","currentBillingPeriodEnd","changesWillApplyText","NextBillingCaption","recurringInvoice","hasUnitBasedPricing","hasNonUnitBasedPricing","totalAmountText","nextBillingDate","billingPeriodText","CheckoutCaptions","LineItemContainer","LineItemRow","getPriceString","billingPeriodString","addonPriceFormat","PayAsYouGoPriceTooltip","BilledPriceLineItem","isPayAsYouGo","FreeChargeLineItem","DiscountLineItem","AppliedCreditsLineItem","used","TaxLineItem","tax","SummaryContainer","SummaryCard","Paper","defaultProps","elevation","SummaryTitle","TotalDueText","resolveCheckoutButtonText","checkoutHasChanges","isFreeDowngrade","isPlanUpdate","CheckoutSummary","disablePromotionCode","isCheckoutCompletedSuccessfully","setIsCheckoutCompletedSuccessfully","partition","baseCharges","usageCharges","baseCharge","handleCheckout","onCheckoutClick","showPromotionCodeLine","showDiscountLine","hasDiscounts","hasPayAsYouGoCharges","onlyPayAsYouGoCharges","baseChargeLabel","paddingRight","margin","priceBillableFeature","addonPrice","addonQuantity","hasProrations","subTotal","CheckoutSummarySkeleton","CheckoutAddonsContainer","AddonListItemContainer","TrashButton","AddonListItem","addonState","initialAddonState","onAddonsValidationChange","isAdded","hasChanges","handleQuantityChange","handleUndo","marginX","helperText","FormHelperTextProps","paddingX","paddingY","CheckoutAddonsStep","acc","curr","addonsValidation","setAddonsValidation","PaymentMethodContainer","NewPaymentMethodContainer","PaymentMethodLayoutContainer","PaymentMethodTextContainer","PaymentMethodLayout","subtitle","Radio","ExistingPaymentMethod","onSelect","last4Digits","expirationMonth","expirationYear","NewPaymentMethod","Collapse","PaymentContainer","PaymentStep","handleOnSelect","openNewPaymentMethod","Alert","severity","ChangePlanButton","allowChangePlan","onChangePlan","opacity","formatBillingPeriod","BillingPeriodPickerContainer","BillingPeriodButton","$isOnlyBillingPeriod","$isActive","BillingPeriodOptions","BillingPeriodOption","isOnlyBillingPeriod","isActive","monthlyPrices","annualPrices","hasBothBillingPeriods","StyledPlanCharge","div","getValidationText","PlanCharge","onValidationChange","isBaseCharge","hasQuantityRestrictions","chargeRow","formattedAmount","onWheel","blur","CheckoutChargeList","planCharges","p","chargesValidation","setChargesValidation","prev","CheckoutPlanContainer","CheckoutPlanStep","StyledArrowRightIcon","ArrowRightIcon","DowngradeToFreePlansContainer","DowngradeToFreeAlert","DowngradeToFreePlanBox","DowngradeToFreeContent","headerText","priceText","DowngradeToFreePlan","freePlan","alertAction","paidBillingPeriod","action","getStepProps","CheckoutContainer","checkoutContent","stripeElementsMode","Elements","appearance","colorText","colorPrimaryText","colorTextPlaceholder","colorBackground","rules","Checkout","containerProps","useQueryParams","paramName","urlSearchParams","URLSearchParams","search","get","ProvisionStatus","useWaitForCheckoutCompleted","onProvisionStart","onProvisionSucceeded","onProvisionFailed","IN_PROGRESS","provisionStatus","setProvisionStatus","isAwaitingCheckout","setIsAwaitingCheckout","checkoutCompleted","waitForCheckoutToComplete","waitForCheckoutCompleted","SUCCEEDED","FAILED"],"mappings":"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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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"}
|
|
1
|
+
{"version":3,"file":"react-sdk.cjs.development.js","sources":["../src/assets/check-stigg.svg","../src/components/paywall/utils/calculateUnitQuantityText.ts","../src/components/common/Typography.tsx","../src/components/paywall/EntitlementRow.tsx","../src/components/paywall/PlanEntitlements.tsx","../src/components/paywall/types.ts","../src/theme/getResolvedTheme.ts","../src/components/utils/getSubscriptionScheduleUpdateTexts.tsx","../src/components/utils/priceTierUtils.ts","../src/components/paywall/PlanOfferingButton.tsx","../src/assets/mini-schedule.svg","../src/components/utils/currencyUtils.ts","../src/components/utils/getPaidPriceText.ts","../src/components/utils/getPlanPrice.ts","../src/components/checkout/components/Button.tsx","../src/components/checkout/components/InputField.tsx","../src/components/checkout/components/Skeletons.style.ts","../src/components/checkout/components/ContentLoadingSkeleton.tsx","../src/components/common/VolumePerUnitInput.tsx","../src/components/common/VolumeBulkSelect.tsx","../src/components/common/TiersSelectContainer.tsx","../src/components/paywall/PlanPrice.tsx","../src/components/paywall/PlanOffering.tsx","../src/components/paywall/BillingPeriodPicker.tsx","../src/components/utils/calculateDiscountRate.ts","../src/assets/powered-by-stigg.svg","../src/components/common/PoweredByStigg.tsx","../src/components/paywall/utils/hasPricePoints.ts","../src/components/paywall/utils/getPlansToDisplay.ts","../src/components/paywall/Paywall.tsx","../node_modules/regenerator-runtime/runtime.js","../src/services/logger.ts","../src/components/StiggProvider.tsx","../src/components/paywall/utils/computeDefaultBillingPeriod.ts","../src/components/paywall/utils/calculateTrialDaysLeft.ts","../src/components/checkout/configurations/typography.ts","../src/components/common/mapExternalTheme.ts","../src/components/paywall/utils/mapPaywallData.ts","../src/components/paywall/hooks/useLoadPaywallData.ts","../src/components/paywall/paywallTextOverrides.ts","../src/components/paywall/PaywallLoader.tsx","../src/theme/Fonts.tsx","../src/theme/Theme.tsx","../src/components/customerPortal/hooks/useCustomerPortal.ts","../src/components/customerPortal/customerPortalTextOverrides.ts","../src/components/customerPortal/customerPortalTheme.ts","../src/components/customerPortal/CustomerPortalProvider.tsx","../src/components/paywall/PaywallContainer.tsx","../src/components/customerPortal/common/StyledButton.tsx","../src/assets/edit-icon.svg","../src/components/customerPortal/common/SectionHeader.ts","../src/components/customerPortal/common/SectionTitle.tsx","../src/components/customerPortal/types.ts","../src/components/customerPortal/subscriptionOverview/SubscriptionsOverviewHeader.tsx","../src/components/customerPortal/subscriptionOverview/tabs/AddonsList.tsx","../src/components/customerPortal/subscriptionOverview/tabs/Promotions.tsx","../src/components/customerPortal/subscriptionOverview/tabs/SubscriptionTabs.style.tsx","../src/components/common/iconColor.ts","../src/assets/addons.svg","../src/assets/billing-info-customer.svg","../src/assets/contact-support.svg","../src/assets/credit-card.svg","../src/assets/dollar-coin.svg","../src/assets/promotions.svg","../src/assets/restore.svg","../src/assets/schedule-box.svg","../src/assets/schedule.svg","../src/assets/subscription-renews-icon.svg","../src/assets/trash.svg","../src/assets/payment-method.svg","../src/assets/outlined-circle.svg","../src/assets/outlined-checked-circle.svg","../src/assets/outlined-checked-circle-disabled.svg","../src/assets/arrow-forward.svg","../src/assets/close.svg","../src/assets/check.svg","../src/assets/pay-as-you-go-charge.svg","../src/assets/coupon.svg","../src/components/common/Icon.tsx","../src/components/customerPortal/subscriptionOverview/tabs/SubscriptionTabs.tsx","../src/components/customerPortal/subscriptionOverview/SubscriptionOverviewLoader.tsx","../src/components/customerPortal/subscriptionOverview/subscriptionScheduledUpdates/SubscriptionScheduledUpdateRow.tsx","../src/components/customerPortal/subscriptionOverview/subscriptionScheduledUpdates/SubscriptionScheduledUpdatesAlert.tsx","../src/components/customerPortal/common/SectionContainer.tsx","../src/components/customerPortal/subscriptionOverview/upcomingBilling/NextEstimatedBill.tsx","../src/components/customerPortal/subscriptionOverview/upcomingBilling/NoUpcomingBilling.tsx","../src/components/customerPortal/subscriptionOverview/ContactCustomerSupport.tsx","../src/components/customerPortal/subscriptionOverview/upcomingBilling/UpcomingBilling.tsx","../src/assets/sand-clock.svg","../src/components/common/InformationTooltip.tsx","../src/components/common/LongText.tsx","../src/components/customerPortal/subscriptionOverview/subscriptionView/TrialPanel.tsx","../src/components/customerPortal/subscriptionOverview/subscriptionView/SubscriptionView.tsx","../src/components/customerPortal/usage/featureUsage/FeatureUsage.helper.ts","../src/components/customerPortal/usage/featureUsage/FeatureUsageProgressBar.tsx","../src/components/customerPortal/usage/featureUsage/EntitlementCTAButton.tsx","../src/components/customerPortal/subscriptionOverview/charges/ChargeItem.tsx","../src/components/customerPortal/subscriptionOverview/charges/ChargeList.tsx","../src/components/customerPortal/subscriptionOverview/SubscriptionsOverview.tsx","../src/components/customerPortal/CustomerPortalHeader.tsx","../src/components/customerPortal/common/ExternalLinkButton.tsx","../src/components/customerPortal/billing/InformationGrid.tsx","../src/components/customerPortal/common/SkeletonButton.tsx","../src/components/customerPortal/billing/PaymentDetailsSection.tsx","../src/components/customerPortal/paywall/CustomerPortalPaywall.style.ts","../src/components/customerPortal/paywall/CustomerPortalPaywall.tsx","../src/components/customerPortal/CustomerPortal.style.ts","../src/components/utils/getFeatureName.ts","../src/components/customerPortal/usage/featureUsage/FeatureUsage.style.ts","../src/components/customerPortal/usage/featureUsage/FeatureUsage.tsx","../src/components/customerPortal/usage/CustomerUsageData.style.tsx","../src/components/customerPortal/usage/CustomerUsageData.tsx","../src/components/customerPortal/CustomerPortalContainer.tsx","../src/components/customerPortal/CustomerPortal.tsx","../src/components/customerPortal/billing/InvoicesSection.tsx","../src/components/checkout/steps/addons/addon.utils.ts","../src/components/checkout/hooks/useAddonsStepModel.ts","../src/components/checkout/hooks/useCheckoutModel.ts","../src/components/checkout/hooks/useLoadCheckout.ts","../src/components/utils/priceUtils.ts","../src/components/checkout/hooks/usePlanStepModel.ts","../src/components/checkout/hooks/useProgressBarModel.ts","../src/components/checkout/hooks/useSubscriptionModel.ts","../src/components/checkout/hooks/usePreviewSubscription.ts","../src/components/checkout/hooks/usePaymentStepModel.ts","../src/components/checkout/configurations/textOverrides.ts","../src/components/checkout/configurations/theme.ts","../src/components/checkout/CheckoutProvider.tsx","../src/components/checkout/CheckoutContainer.style.ts","../src/components/checkout/progressBar/CheckoutProgressBar.style.ts","../src/components/checkout/progressBar/CheckoutProgressBar.tsx","../src/components/hooks/useChargeSort.ts","../src/components/checkout/hooks/useCouponModel.ts","../src/assets/plus-icon.svg","../src/components/checkout/promotionCode/AddPromotionCodeButton.tsx","../src/components/checkout/promotionCode/AddPromotionCode.tsx","../src/components/checkout/promotionCode/AppliedPromotionCode.tsx","../src/components/checkout/promotionCode/PromotionCodeSection.tsx","../src/components/checkout/steps/payment/stripe/StripePaymentForm.tsx","../src/components/checkout/steps/payment/stripe/useStripeIntegration.ts","../src/components/checkout/hooks/useSubscriptionState.ts","../src/components/checkout/steps/payment/stripe/stripe.utils.ts","../src/components/checkout/summary/CheckoutSuccess.tsx","../src/components/checkout/steps/payment/stripe/useSubmit.ts","../src/components/checkout/summary/components/WithSkeleton.tsx","../src/components/checkout/summary/components/CheckoutCaptions.tsx","../src/components/checkout/summary/components/LineItems.tsx","../src/components/checkout/summary/CheckoutSummary.tsx","../src/components/checkout/summary/CheckoutSummarySkeleton.tsx","../src/components/checkout/steps/addons/CheckoutAddonsStep.style.tsx","../src/components/checkout/steps/addons/CheckoutAddonsStep.tsx","../src/components/checkout/steps/payment/PaymentMethods.style.ts","../src/components/checkout/steps/payment/PaymentMethods.tsx","../src/components/checkout/steps/payment/PaymentStep.tsx","../src/components/checkout/components/ChangePlanButton.tsx","../src/components/checkout/planHeader/PlanHeader.tsx","../src/components/checkout/formatting.ts","../src/components/checkout/steps/plan/BillingPeriodPicker.style.tsx","../src/components/checkout/steps/plan/BillingPeriodPicker.tsx","../src/components/checkout/steps/plan/CheckoutChargeList.tsx","../src/components/checkout/steps/plan/CheckoutPlanStep.style.tsx","../src/components/checkout/steps/plan/CheckoutPlanStep.tsx","../src/assets/arrow-right.svg","../src/components/checkout/components/StyledArrow.tsx","../src/components/checkout/components/DowngradeToFreeContainer.tsx","../src/components/checkout/CheckoutContainer.tsx","../src/components/checkout/Checkout.tsx","../src/components/hooks/useWaitForCheckoutCompleted.ts"],"sourcesContent":["<svg width=\"15\" height=\"11\" viewBox=\"0 0 15 11\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<path d=\"M5.59 7.9899L2.125 4.5249C1.73524 4.13514 1.10365 4.13402 0.712509 4.52241V4.52241C0.319409 4.91274 0.318286 5.54819 0.710005 5.9399L5.59 10.8199L14.2948 2.11513C14.6843 1.72565 14.6843 1.09417 14.2948 0.704691V0.704691C13.9055 0.315381 13.2743 0.315184 12.8848 0.70425L5.59 7.9899Z\" fill=\"#B2BBD3\"/>\n</svg>\n","export function calculateUnitQuantityText(\n minUnitQuantity?: number | null,\n maxUnitQuantity?: number | null,\n unitsPlural?: string | null,\n) {\n const unitsText = unitsPlural ? ` ${unitsPlural}` : '';\n\n // copy for only maxunit\n if ((!minUnitQuantity || minUnitQuantity === 1) && maxUnitQuantity) {\n return `Up to ${maxUnitQuantity}${unitsText}`;\n }\n\n // both limits\n if (minUnitQuantity && minUnitQuantity > 1 && maxUnitQuantity) {\n return `${minUnitQuantity}-${maxUnitQuantity}${unitsText}`;\n }\n\n if (minUnitQuantity && minUnitQuantity > 1) {\n return `Minimum ${minUnitQuantity}${unitsText}`;\n }\n\n return '';\n}\n","import React, { CSSProperties, forwardRef } from 'react';\nimport styled from '@emotion/styled/macro';\nimport { FontWeight as StyledFontWeight, Text, TypeProps } from 'styled-typography';\nimport { Theme, useTheme } from '@emotion/react';\nimport { FontWeight } from '../../theme/types';\n\ntype Colors =\n | 'primary'\n | 'primary.main'\n | 'primary.main.light'\n | 'secondary'\n | 'disabled'\n | 'white'\n | 'warning'\n | 'error';\n\nexport type TypographyProps = {\n children: React.ReactNode;\n variant?: 'h1' | 'h3' | 'h6' | 'body1' | 'caption';\n style?: CSSProperties | undefined;\n color?: Colors;\n // This is being used when passing color from the theming which\n // can be any color and not from the closed list of colors above\n overrideColor?: string;\n className?: string;\n bold?: boolean;\n span?: boolean;\n as?: 'div' | 'p' | 'span';\n} & Omit<TypeProps, 'color' | 'level'>;\n\nfunction getColor(theme: Theme, $color: Colors) {\n switch ($color) {\n case 'white':\n return 'white';\n case 'primary.main':\n return theme.stigg.palette.primary;\n case 'primary.main.light':\n return theme.stigg.palette.primaryLight;\n case 'warning':\n return theme.stigg.palette.warning;\n case 'error':\n return theme.stigg.palette.error;\n default:\n return theme.stigg.palette.text[$color];\n }\n}\n\nconst StyledText = styled(Text)<{ $span?: boolean }>`\n margin: 0;\n ${({ $span }) => $span && `display: inline`};\n`;\n\nfunction getLevel(variant: TypographyProps['variant']) {\n switch (variant) {\n case 'h1':\n return 1;\n case 'h3':\n return 2;\n case 'h6':\n return 3;\n case 'body1':\n return 4;\n case 'caption':\n return 5;\n default:\n return 3;\n }\n}\n\nfunction mapFontWeight(fontWeight: FontWeight) {\n switch (fontWeight) {\n case 'bold':\n return StyledFontWeight.Bold;\n case 'normal':\n return StyledFontWeight.Normal;\n default:\n return StyledFontWeight.Normal;\n }\n}\n\nfunction getFontWeight(theme: Theme, variant: TypographyProps['variant']) {\n const { typography } = theme.stigg;\n switch (variant) {\n case 'h1':\n return mapFontWeight(typography.h1.fontWeight);\n case 'h3':\n return mapFontWeight(typography.h2.fontWeight);\n case 'h6':\n return mapFontWeight(typography.h3.fontWeight);\n case 'body1':\n return mapFontWeight(typography.body.fontWeight);\n case 'caption':\n return mapFontWeight(typography.caption.fontWeight);\n default:\n return StyledFontWeight.Normal;\n }\n}\n\nexport const Typography = forwardRef((props: TypographyProps, ref) => {\n const {\n children,\n span,\n style,\n fontWeight,\n variant = 'body1',\n color = 'primary',\n overrideColor,\n bold,\n as = 'p',\n ...rest\n } = props;\n const theme = useTheme();\n const level = getLevel(variant);\n const levelClassName = `typography-level-${level}`;\n const className = props.className ? `${props.className} ${levelClassName}` : levelClassName;\n\n return (\n <StyledText\n as={as}\n ref={ref}\n {...rest}\n className={className}\n style={style}\n level={level}\n color={overrideColor || getColor(theme, color)}\n fontWeight={fontWeight ?? (bold ? StyledFontWeight.Bold : getFontWeight(theme, variant))}\n $span={span}>\n {children}\n </StyledText>\n );\n});\n","import React from 'react';\nimport styled from '@emotion/styled/macro';\nimport { EntitlementResetPeriod } from '@stigg/js-client-sdk';\nimport CheckUrl from '../../assets/check-stigg.svg';\nimport { calculateUnitQuantityText } from './utils/calculateUnitQuantityText';\nimport { Typography } from '../common/Typography';\n\nconst EntitlementName = styled(Typography)`\n margin: 0;\n`;\n\nconst EntitlementRowContainer = styled.div`\n display: flex;\n align-items: baseline;\n`;\n\nconst EntitlementIconContainer = styled.div`\n display: flex;\n align-items: center;\n margin-right: 16px;\n height: ${({ theme }) => theme.stigg.typography.h3.fontSize};\n flex-shrink: 0;\n`;\n\nconst EntitlementCheckIcon = styled(CheckUrl)`\n flex-shrink: 0;\n * {\n fill: ${({ theme }) => theme.stigg.palette.text.disabled};\n }\n`;\n\nfunction formatUsageNumber(usageLimit: number) {\n return usageLimit.toLocaleString('en-US', {\n maximumFractionDigits: 0,\n });\n}\n\ntype EntitlementRowProps = {\n hasUnlimitedUsage?: boolean | null;\n isCustom?: boolean | null;\n usageLimit?: number | null;\n minUnitQuantity?: number | null;\n maxUnitQuantity?: number | null;\n resetPeriod?: EntitlementResetPeriod | null;\n displayNameOverride?: string | null;\n feature?: {\n units?: string | null | undefined;\n unitsPlural?: string | null | undefined;\n unitQuantity?: number | null;\n displayName: string;\n } | null;\n};\n\nfunction getResetPeriodText(resetPeriod?: EntitlementResetPeriod) {\n if (!resetPeriod) {\n return '';\n }\n\n switch (resetPeriod) {\n case EntitlementResetPeriod.Day: {\n return 'per day';\n }\n case EntitlementResetPeriod.Hour: {\n return 'per hour';\n }\n case EntitlementResetPeriod.Week: {\n return 'per week';\n }\n case EntitlementResetPeriod.Month: {\n return 'per month';\n }\n default: {\n return '';\n }\n }\n}\n\nfunction getEntitlementDisplay({\n hasUnlimitedUsage,\n feature,\n resetPeriod,\n usageLimit,\n minUnitQuantity,\n maxUnitQuantity,\n isCustom,\n}: EntitlementRowProps) {\n const unitBasedEntitlement = minUnitQuantity || maxUnitQuantity;\n const resetPeriodSuffix = `${resetPeriod && usageLimit ? `${getResetPeriodText(resetPeriod)}` : ''}`;\n\n if (hasUnlimitedUsage) {\n return `Unlimited ${feature?.unitsPlural}`;\n }\n\n if (isCustom) {\n return `Custom ${feature?.unitsPlural}`;\n }\n\n if (usageLimit) {\n const featureUnits = usageLimit === 1 ? feature?.units : feature?.unitsPlural;\n return `${formatUsageNumber(usageLimit)} ${featureUnits} ${resetPeriodSuffix}`;\n }\n\n if (unitBasedEntitlement) {\n return calculateUnitQuantityText(minUnitQuantity, maxUnitQuantity, feature?.unitsPlural);\n }\n\n return feature?.displayName;\n}\n\nexport function EntitlementRow(props: EntitlementRowProps) {\n const { displayNameOverride, ...restProps } = props;\n const displayName = getEntitlementDisplay(restProps);\n\n return (\n <EntitlementRowContainer className=\"stigg-entitlement-row-container\">\n <EntitlementIconContainer>\n <EntitlementCheckIcon className=\"stigg-entitlement-row-icon\" />\n </EntitlementIconContainer>\n <EntitlementName className=\"stigg-entitlement-name\" variant=\"h6\" color=\"secondary\">\n {displayNameOverride || displayName}\n </EntitlementName>\n </EntitlementRowContainer>\n );\n}\n","import React from 'react';\nimport styled from '@emotion/styled/macro';\nimport { BillingPeriod, WidgetType } from '@stigg/js-client-sdk';\nimport { EntitlementRow } from './EntitlementRow';\nimport { PaywallPlan } from './types';\nimport { PaywallLocalization } from './paywallTextOverrides';\nimport { Typography } from '../common/Typography';\n\nconst PlanEntitlementsContainer = styled.div`\n display: flex;\n flex-direction: column;\n gap: 16px;\n`;\n\nfunction getTitle(plan: PaywallPlan, paywallLocale: PaywallLocalization) {\n if (paywallLocale.entitlementsTitle) {\n return paywallLocale.entitlementsTitle(plan);\n }\n let title = `${plan.displayName} includes`;\n if (plan.basePlan) {\n title = `Everything in ${plan.basePlan.displayName}, plus:`;\n }\n\n return title;\n}\n\nexport function PlanEntitlements({\n plan,\n billingPeriod,\n paywallLocale,\n}: {\n plan: PaywallPlan;\n billingPeriod: BillingPeriod;\n paywallLocale: PaywallLocalization;\n}) {\n const prices = plan.pricePoints?.filter((price) => price.billingPeriod === billingPeriod);\n const unitBasedEntitlements = prices?.map((price) => {\n const shouldRenderUnitBasedEntitlement =\n (price?.minUnitQuantity && price?.minUnitQuantity > 1) || price?.maxUnitQuantity;\n\n if (!shouldRenderUnitBasedEntitlement) {\n return null;\n }\n\n return (\n <EntitlementRow\n key={`priceUnitEntitlement-${price?.feature?.displayName}`}\n feature={price?.feature}\n minUnitQuantity={price?.minUnitQuantity}\n maxUnitQuantity={price?.maxUnitQuantity}\n />\n );\n });\n\n return (\n <PlanEntitlementsContainer className=\"stigg-plan-entitlements-container\">\n <Typography className=\"stigg-plan-entitlements-title\" color=\"secondary\" variant=\"h6\" bold>\n {getTitle(plan, paywallLocale)}\n </Typography>\n {unitBasedEntitlements}\n {plan.entitlements\n .filter((entitlement) => !(entitlement.hiddenFromWidgets || []).includes(WidgetType.Paywall))\n .map((entitlement) => (\n <EntitlementRow\n key={entitlement.feature?.id}\n displayNameOverride={entitlement.displayNameOverride}\n feature={entitlement.feature}\n resetPeriod={entitlement.resetPeriod}\n hasUnlimitedUsage={entitlement.hasUnlimitedUsage}\n usageLimit={entitlement.usageLimit}\n isCustom={entitlement.isCustom}\n />\n ))}\n </PlanEntitlementsContainer>\n );\n}\n","import {\n BillingPeriod,\n Customer,\n Plan,\n Subscription,\n CustomerPortalSubscriptionScheduledUpdateDataFragment,\n PaywallCurrency,\n PaywallCalculatedPricePoint,\n BillableFeature,\n} from '@stigg/js-client-sdk';\nimport { CustomizedTheme } from '../../theme/Theme';\n\nexport type PaywallData = {\n plans: PaywallPlan[] | null;\n customer: Customer | null;\n currentSubscription: Subscription | null;\n isCustomerOnTrial: boolean;\n isLoading: boolean;\n selectedBillingPeriod: BillingPeriod;\n setSelectedBillingPeriod: (billingPeriod: BillingPeriod) => void;\n availableBillingPeriods: BillingPeriod[];\n locale: string;\n configuration?: CustomizedTheme;\n};\n\nexport enum SubscribeIntentionType {\n START_TRIAL = 'START_TRIAL',\n UPGRADE_TRIAL_TO_PAID = 'UPGRADE_TRIAL_TO_PAID',\n REQUEST_CUSTOM_PLAN_ACCESS = 'REQUEST_CUSTOM_PLAN_ACCESS',\n CHANGE_BILLING_PERIOD = 'CHANGE_BILLING_PERIOD',\n CHANGE_UNIT_QUANTITY = 'CHANGE_UNIT_QUANTITY',\n UPGRADE_PLAN = 'UPGRADE_PLAN',\n DOWNGRADE_PLAN = 'DOWNGRADE_PLAN',\n CANCEL_SCHEDULED_UPDATES = 'CANCEL_SCHEDULED_UPDATES',\n}\n\nexport type PaywallPlan = Plan & {\n isLowerThanCurrentPlan?: boolean;\n isTriable: boolean;\n isCurrentCustomerPlan: boolean;\n currentCustomerPlanBillingPeriod?: BillingPeriod;\n trialDaysLeft?: number;\n isNextPlan?: (billingPeriod: BillingPeriod) => boolean;\n scheduledUpdate?: CustomerPortalSubscriptionScheduledUpdateDataFragment;\n paywallCurrency?: PaywallCurrency;\n paywallCalculatedPricePoints?: PaywallCalculatedPricePoint[];\n};\n\nexport type OnPlanSelectedCallbackFn = ({\n plan,\n customer,\n subscription,\n intentionType,\n selectedBillingPeriod,\n billableFeatures,\n}: {\n plan: Plan;\n customer: Customer | null;\n subscription: Subscription | null;\n intentionType: SubscribeIntentionType;\n selectedBillingPeriod: BillingPeriod;\n billableFeatures?: BillableFeature[];\n}) => void | Promise<void>;\n\nexport type ShouldHidePlanFn = ({ plan }: { plan: PaywallPlan }) => boolean | Promise<boolean>;\n\nexport type SelectDefaultTierIndexFn = ({ plan }: { plan: PaywallPlan }) => number;\n","import Color from 'color';\nimport merge from 'lodash/merge';\nimport { HorizontalAlignment, StiggTheme } from './types';\nimport { CustomizedTheme } from './Theme';\n\nexport const flexLayoutMapper = (horizontalAlignment: HorizontalAlignment) => {\n return {\n left: 'flex-start',\n center: 'center',\n right: 'flex-end',\n }[horizontalAlignment];\n};\n\nexport const getResolvedTheme = (customizedTheme?: CustomizedTheme): StiggTheme => {\n const primaryColor = Color(customizedTheme?.palette?.primary || '#327EEE');\n const textColor = Color(customizedTheme?.palette?.text?.primary || '#001E6C');\n const successColor = Color('#4CAF50');\n const errorColor = Color('#f44336');\n\n const baseTheme: StiggTheme = {\n palette: {\n primary: primaryColor.hex(),\n primaryDark: primaryColor.darken(0.3).hex(),\n primaryLight: primaryColor.alpha(0.5).toString(),\n backgroundPaper: '#FFFFFF',\n backgroundHighlight: '#F5F6F9',\n backgroundSection: primaryColor.alpha(0.1).toString(),\n backgroundButton: primaryColor.alpha(0.08).toString(),\n outlinedBorder: '#C4CBDD',\n outlinedRestingBorder: primaryColor.alpha(0.5).toString(),\n outlinedHoverBackground: primaryColor.lightness(95).hex(),\n switchBorder: primaryColor.lighten(0.1).hex(),\n switchFill: primaryColor.lighten(0.5).hex(),\n switchHandle: primaryColor.hex(),\n warning: '#ed6c02',\n error: errorColor.hex(),\n errorDark: errorColor.darken(0.3).hex(),\n success: successColor.hex(),\n successDark: successColor.darken(0.3).hex(),\n white: '#FFFFFF',\n text: {\n primary: textColor.hex(),\n secondary: textColor.alpha(0.75).toString(),\n disabled: textColor.alpha(0.5).toString(),\n },\n },\n layout: {\n planMinWidth: '330px',\n planMaxWidth: '330px',\n planMargin: '20px',\n planPadding: '40px',\n ctaAlignment: 'left',\n headerAlignment: 'left',\n descriptionAlignment: 'left',\n descriptionMinHeight: '80px',\n switchBottomSpacing: '40px',\n },\n shadows: {\n light: '0px 2px 1px -1px rgba(0, 0, 0, 0.2), 0px 1px 1px rgba(0, 0, 0, 0.14), 0px 1px 3px rgba(0, 0, 0, 0.12)',\n popover:\n '0px 4px 5px -2px rgba(0, 30, 108, 0.2), 0px 7px 10px 1px rgba(0, 30, 108, 0.14), 0px 2px 16px 1px rgba(0, 30, 108, 0.12)',\n },\n border: {\n radius: '10px',\n },\n typography: {\n fontFamily: 'custom-font, DM Sans, sans-serif',\n h1: {\n fontSize: '32px',\n fontWeight: 'bold',\n },\n h2: {\n fontSize: '24px',\n fontWeight: 'normal',\n },\n h3: {\n fontSize: '16px',\n fontWeight: 'normal',\n },\n body: {\n fontSize: '14px',\n fontWeight: 'normal',\n },\n caption: {\n fontSize: '12px',\n fontWeight: 'normal',\n },\n },\n customCss: '',\n };\n\n return merge(baseTheme, customizedTheme);\n};\n","import React from 'react';\nimport moment from 'moment';\nimport isNil from 'lodash/isNil';\nimport {\n CustomerPortalSubscription,\n CustomerPortalSubscriptionScheduledUpdateDataFragment,\n SubscriptionScheduleType,\n} from '@stigg/js-client-sdk';\nimport { CustomerPortalSubscriptionPriceFragment } from '@stigg/api-client-js/src/generated/sdk';\nimport { compact, map } from 'lodash';\nimport { BillingPeriodChangeVariables, UnitAmountChangeVariables } from '../../types';\n\nconst formatDate = (date: string) => moment.utc(date).format('MMMM Do, yyyy');\n\ntype GetSubscriptionScheduleUpdateTextsProps = {\n scheduledUpdate: CustomerPortalSubscriptionScheduledUpdateDataFragment | undefined;\n subscriptionPrices?: CustomerPortalSubscriptionPriceFragment[];\n billingPeriodRange?: CustomerPortalSubscription['billingPeriodRange'];\n options?: { withDate?: boolean; postfix?: string };\n};\n\nexport function getSubscriptionScheduleUpdateTexts({\n scheduledUpdate,\n subscriptionPrices,\n billingPeriodRange,\n options = {},\n}: GetSubscriptionScheduleUpdateTextsProps) {\n if (!scheduledUpdate) {\n return {};\n }\n const { withDate, postfix = '' } = options;\n\n switch (scheduledUpdate.subscriptionScheduleType) {\n case SubscriptionScheduleType.Downgrade: {\n let shouldShowDate = withDate;\n if (isNil(shouldShowDate) && billingPeriodRange?.end) {\n shouldShowDate = !moment(scheduledUpdate.scheduledExecutionTime).isSame(billingPeriodRange?.end, 'day');\n }\n\n const line1 = (\n <>\n Your subscription will be downgraded to the <b>{scheduledUpdate.targetPackage?.displayName} plan</b>{' '}\n {shouldShowDate ? <>on {formatDate(scheduledUpdate.scheduledExecutionTime)}</> : postfix}.\n </>\n );\n const line2 = `Until then you still have access to your current plan.`;\n\n return { line1, line2 };\n }\n\n case SubscriptionScheduleType.BillingPeriod: {\n const variables = scheduledUpdate.scheduleVariables as BillingPeriodChangeVariables;\n const line1 = (\n <>\n Your billing cycle will change to <b>{variables.billingPeriod?.toLocaleLowerCase()}</b>{' '}\n {withDate ? <>on {formatDate(scheduledUpdate.scheduledExecutionTime)}</> : postfix}.\n </>\n );\n\n return { line1 };\n }\n\n case SubscriptionScheduleType.UnitAmount: {\n const variables = scheduledUpdate.scheduleVariables as UnitAmountChangeVariables;\n const feature = compact(map(subscriptionPrices, 'feature')).find(({ id }) => id === variables.featureId);\n const { featureUnits, featureUnitsPlural } = feature || {};\n const unitsText = variables.newUnitAmount === 1 ? featureUnits : featureUnitsPlural;\n\n const line1 = (\n <>\n Your subscription will be updated to <b>{variables.newUnitAmount}</b> {unitsText}{' '}\n {withDate ? <>on {formatDate(scheduledUpdate.scheduledExecutionTime)}</> : postfix}.\n </>\n );\n\n const line2 = `Until then you still have access to your current ${featureUnits} count.`;\n\n return { line1, line2 };\n }\n\n default: {\n return {};\n }\n }\n}\n","import { BillingModel, TiersMode, BillingPeriod, Price, PriceTierFragment, Subscription } from '@stigg/js-client-sdk';\nimport isNil from 'lodash/isNil';\nimport { PaywallPlan } from '../paywall';\nimport { SelectDefaultTierIndexFn } from '../paywall/types';\n\nexport function getPriceFeatureUnit(price: Price) {\n if (!price.feature) {\n return '';\n }\n\n return (price.feature.unitQuantity !== 1 ? price.feature.unitsPlural : price.feature.units) || '';\n}\n\nexport function getTierByQuantity(tiers: PriceTierFragment[], quantity: number) {\n if (!tiers) return undefined;\n\n const ascendingTiers = [...tiers];\n // Sort tiers by upTo value, ascending, if upTo is not set,\n // put it at the end as it represent the last infinity tier\n ascendingTiers.sort((a, b) => (!a.upTo ? 1 : !b.upTo ? -1 : a.upTo - b.upTo));\n\n for (const tier of ascendingTiers) {\n if (tier.upTo && quantity <= tier.upTo) {\n return tier;\n }\n }\n\n return ascendingTiers[ascendingTiers.length - 1];\n}\n\nfunction getAmount(amount: number, selectedBillingPeriod?: BillingPeriod, shouldShowMonthlyPriceAmount?: boolean) {\n return selectedBillingPeriod === BillingPeriod.Annually && shouldShowMonthlyPriceAmount ? amount / 12 : amount;\n}\n\nexport function calculateTierPriceVolume(\n currentTier: PriceTierFragment,\n perUnitQuantity: number,\n selectedBillingPeriod?: BillingPeriod,\n shouldShowMonthlyPriceAmount?: boolean,\n): number {\n let amount = 0;\n\n if (currentTier.unitPrice) {\n const unitPrice = getAmount(currentTier.unitPrice.amount, selectedBillingPeriod, shouldShowMonthlyPriceAmount);\n amount += unitPrice * perUnitQuantity;\n }\n\n if (currentTier.flatPrice) {\n amount += getAmount(currentTier.flatPrice.amount, selectedBillingPeriod, shouldShowMonthlyPriceAmount);\n }\n\n return amount;\n}\n\nexport function calculateTierPrice(\n price: Price,\n currentTier: PriceTierFragment,\n selectedBillingPeriod: BillingPeriod,\n shouldShowMonthlyPriceAmount: boolean,\n perUnitQuantity: number,\n): number {\n switch (price.tiersMode) {\n case TiersMode.Volume: {\n return calculateTierPriceVolume(\n currentTier,\n perUnitQuantity,\n selectedBillingPeriod,\n shouldShowMonthlyPriceAmount,\n );\n }\n default:\n return 0;\n }\n}\n\nexport function getSelectedTierQuantityBeFeature(\n plan: PaywallPlan,\n billingPeriod: BillingPeriod,\n currentSubscription: Subscription | null,\n) {\n const result: Record<string, number> = {};\n const planTierPrices = plan.pricePoints.filter(\n (price) => price.billingPeriod === billingPeriod && price.isTieredPrice,\n );\n if (planTierPrices.length === 1) {\n const [price] = planTierPrices;\n const featureId = price?.feature!.featureId;\n if (currentSubscription && currentSubscription.plan.id === plan.id) {\n const tieredPrice = currentSubscription?.prices.find(\n (subscriptionPrice) =>\n subscriptionPrice.pricingModel === BillingModel.PerUnit &&\n subscriptionPrice.tiersMode &&\n subscriptionPrice.feature?.featureId === featureId,\n );\n if (tieredPrice) {\n result[featureId] = tieredPrice.feature?.unitQuantity || 1;\n }\n }\n }\n\n return result;\n}\n\nexport function hasTierWithUnitPrice(tiers: PriceTierFragment[] | null | undefined) {\n return tiers?.some(({ unitPrice, upTo }) => unitPrice && !isNil(upTo));\n}\n\nexport function getSelectedTier(\n plan: PaywallPlan,\n billingPeriod: BillingPeriod,\n currentSubscription: Subscription | null,\n selectedTierByFeature: Record<string, PriceTierFragment>,\n selectDefaultTierIndex?: SelectDefaultTierIndexFn,\n): Record<string, PriceTierFragment> {\n const planTierPrices = plan.pricePoints.filter(\n (price) => price.billingPeriod === billingPeriod && price.isTieredPrice,\n );\n\n if (planTierPrices.length === 1) {\n const [price] = planTierPrices;\n const { featureId } = price.feature!;\n const selectedDefaultTierIndex = selectDefaultTierIndex ? selectDefaultTierIndex({ plan }) : 0;\n let currentTier = price.tiers![selectedDefaultTierIndex];\n\n if (selectedTierByFeature[featureId]) {\n currentTier = price.tiers?.find((tier) => tier.upTo === selectedTierByFeature[featureId].upTo) || currentTier;\n } else if (currentSubscription && currentSubscription.plan.id === plan.id) {\n const tieredPrice = currentSubscription.prices.find(\n (subscriptionPrice) =>\n subscriptionPrice.pricingModel === BillingModel.PerUnit &&\n subscriptionPrice.tiersMode &&\n subscriptionPrice.feature?.featureId === featureId,\n );\n\n if (tieredPrice) {\n currentTier = getTierByQuantity(price.tiers!, tieredPrice.feature!.unitQuantity || 1)!;\n }\n }\n\n const result: Record<string, PriceTierFragment> = {};\n result[featureId] = currentTier;\n\n return result;\n }\n\n return {};\n}\n\nexport enum PriceTierComparison {\n Lower = -1,\n Equal = 0,\n Higher = 1,\n}\n\nexport function compareSelectedTierToCurrentTier(\n selectedTierByFeature: Record<string, PriceTierFragment>,\n perUnitQuantityByFeature: Record<string, number>,\n currentSubscription: Subscription | null,\n): PriceTierComparison {\n if (!currentSubscription || !selectedTierByFeature) {\n return PriceTierComparison.Equal;\n }\n\n const currentTierPrice = currentSubscription.prices.find(\n (price) => price.pricingModel === BillingModel.PerUnit && price.tiersMode,\n );\n if (!currentTierPrice) {\n return PriceTierComparison.Equal;\n }\n\n const { featureId, unitQuantity } = currentTierPrice.feature!;\n const { tiers } = currentTierPrice;\n\n if (!unitQuantity) {\n return PriceTierComparison.Equal;\n }\n\n const selectedTier = selectedTierByFeature[featureId];\n const selectedQuantity = perUnitQuantityByFeature[featureId];\n if (!selectedTier) {\n return PriceTierComparison.Equal;\n }\n\n const effectiveQuantity = hasTierWithUnitPrice(tiers) ? selectedQuantity : selectedTier.upTo;\n\n if (!isNil(effectiveQuantity)) {\n if (effectiveQuantity < unitQuantity) {\n return PriceTierComparison.Lower;\n }\n if (effectiveQuantity > unitQuantity) {\n return PriceTierComparison.Higher;\n }\n }\n\n return PriceTierComparison.Equal;\n}\n","import React, { useState } from 'react';\nimport { BillingPeriod, Customer, PriceTierFragment, PricingType, Subscription } from '@stigg/js-client-sdk';\nimport { isFunction } from 'lodash';\nimport ClipLoader from 'react-spinners/ClipLoader';\nimport styled from '@emotion/styled/macro';\nimport { css, useTheme } from '@emotion/react';\nimport { PaywallPlan, SubscribeIntentionType } from './types';\nimport { PaywallLocalization } from './paywallTextOverrides';\nimport { flexLayoutMapper } from '../../theme/getResolvedTheme';\nimport { Typography } from '../common/Typography';\nimport { getSubscriptionScheduleUpdateTexts } from '../utils/getSubscriptionScheduleUpdateTexts';\nimport { compareSelectedTierToCurrentTier, PriceTierComparison } from '../utils/priceTierUtils';\n\nconst LoadingIndicator = styled(ClipLoader)`\n margin-left: 10px;\n`;\n\nconst OfferingButton = styled.button<{ $disabled?: boolean }>`\n cursor: ${({ $disabled }) => ($disabled ? 'default' : 'pointer')};\n padding: 8px 12px;\n background-color: ${({ theme }) => theme.stigg.palette.backgroundButton};\n border: ${({ theme }) => `1px solid ${theme.stigg.palette.outlinedRestingBorder}`};\n border-radius: 10px;\n display: flex;\n align-items: center;\n justify-content: center;\n min-height: 42px;\n min-width: 120px;\n\n ${({ $disabled }) =>\n $disabled &&\n css`\n opacity: 0.5;\n `}\n\n &:hover {\n background-color: ${({ theme, $disabled }) =>\n $disabled ? theme.stigg.palette.backgroundButton : theme.stigg.palette.outlinedHoverBackground};\n }\n`;\n\nconst ButtonText = styled(Typography)`\n margin: 0;\n font-size: 15px;\n`;\n\nconst ScheduledUpdateText = styled(Typography)`\n min-height: 87px;\n`;\n\nconst CancelScheduledUpdateButton = styled.button<{ $disabled?: boolean }>`\n background: none;\n border: none;\n padding: 0;\n color: ${({ theme }) => theme.stigg.palette.text.secondary};\n\n text-decoration: underline;\n cursor: pointer;\n`;\n\nconst TrialDaysLeft = styled(Typography)`\n margin-top: 8px;\n margin-bottom: 17px;\n min-height: 20px;\n`;\n\nconst ButtonLayout = styled.div`\n display: flex;\n flex-direction: column;\n margin-top: 4px;\n align-self: ${({ theme }) => flexLayoutMapper(theme.stigg.layout.ctaAlignment)};\n width: 100%;\n`;\n\ntype PlanOfferingButtonProps = {\n isNextPlan?: boolean;\n customer: Customer | null;\n plan: PaywallPlan;\n currentSubscription: Subscription | null;\n billingPeriod: BillingPeriod;\n isCustomerOnTrial: boolean;\n paywallLocale: PaywallLocalization;\n onPlanSelected: (intentionType: SubscribeIntentionType) => void | Promise<void>;\n withTrialLeftRow: boolean;\n selectedTierByFeature: Record<string, PriceTierFragment>;\n perUnitQuantityByFeature: Record<string, number>;\n};\n\nexport function PlanOfferingButton({\n isNextPlan,\n customer,\n plan,\n billingPeriod,\n isCustomerOnTrial,\n onPlanSelected,\n paywallLocale,\n withTrialLeftRow,\n currentSubscription,\n selectedTierByFeature,\n perUnitQuantityByFeature,\n}: PlanOfferingButtonProps) {\n const theme = useTheme();\n const [isLoading, setIsLoading] = useState(false);\n const {\n currentPlan,\n custom,\n downgrade,\n startTrial,\n upgrade,\n startNew,\n switchToBillingPeriod,\n cancelScheduledUpdate,\n } = paywallLocale.planCTAButton;\n const resolvedDowngrade = isFunction(downgrade) ? downgrade(plan) : downgrade;\n const resolvedUpgrade = isFunction(upgrade) ? upgrade(plan) : upgrade;\n\n const buttonProps: {\n title: string;\n disabled: boolean;\n intentionType: SubscribeIntentionType;\n } = {\n title: customer ? (plan.isLowerThanCurrentPlan ? resolvedDowngrade : resolvedUpgrade) : startNew,\n disabled: false,\n intentionType: plan.isLowerThanCurrentPlan\n ? SubscribeIntentionType.DOWNGRADE_PLAN\n : isCustomerOnTrial\n ? SubscribeIntentionType.UPGRADE_TRIAL_TO_PAID\n : SubscribeIntentionType.UPGRADE_PLAN,\n };\n const isCustomPrice = plan.pricingType === PricingType.Custom;\n\n const { line1: scheduledUpdateText } = getSubscriptionScheduleUpdateTexts({\n scheduledUpdate: plan.scheduledUpdate,\n options: { withDate: true },\n });\n\n if (plan.isTriable && !plan.isCurrentCustomerPlan && !isCustomerOnTrial) {\n buttonProps.title = startTrial(plan);\n buttonProps.intentionType = SubscribeIntentionType.START_TRIAL;\n } else if (plan.isCurrentCustomerPlan && !isCustomerOnTrial) {\n const isSameBillingPeriod = billingPeriod === plan.currentCustomerPlanBillingPeriod;\n\n if (\n isSameBillingPeriod ||\n (plan.pricingType && [PricingType.Free, PricingType.Custom].includes(plan.pricingType))\n ) {\n const planComparison = compareSelectedTierToCurrentTier(\n selectedTierByFeature,\n perUnitQuantityByFeature,\n currentSubscription,\n );\n switch (planComparison) {\n case PriceTierComparison.Lower:\n buttonProps.intentionType = SubscribeIntentionType.CHANGE_UNIT_QUANTITY;\n buttonProps.title = resolvedDowngrade;\n break;\n case PriceTierComparison.Higher:\n buttonProps.intentionType = SubscribeIntentionType.CHANGE_UNIT_QUANTITY;\n buttonProps.title = resolvedUpgrade;\n break;\n\n default:\n buttonProps.title = currentPlan;\n buttonProps.disabled = true;\n break;\n }\n } else {\n buttonProps.title = switchToBillingPeriod(billingPeriod);\n buttonProps.intentionType = SubscribeIntentionType.CHANGE_BILLING_PERIOD;\n }\n } else if (isCustomPrice) {\n buttonProps.title = typeof custom === 'function' ? custom({ plan, selectedBillingPeriod: billingPeriod }) : custom;\n buttonProps.intentionType = SubscribeIntentionType.REQUEST_CUSTOM_PLAN_ACCESS;\n }\n\n if (isNextPlan && plan.scheduledUpdate) {\n buttonProps.disabled = false;\n buttonProps.title = cancelScheduledUpdate;\n buttonProps.intentionType = SubscribeIntentionType.CANCEL_SCHEDULED_UPDATES;\n }\n\n const isDisabled = isLoading || buttonProps.disabled;\n return (\n <>\n <ButtonLayout className=\"stigg-paywall-plan-button-layout\">\n {isNextPlan && scheduledUpdateText ? (\n <ScheduledUpdateText color=\"secondary\" variant=\"body1\" className=\"stigg-paywall-schedule-update-text\">\n {scheduledUpdateText}{' '}\n <CancelScheduledUpdateButton\n color=\"secondary\"\n onClick={() => {\n setIsLoading(true);\n Promise.resolve(onPlanSelected(buttonProps.intentionType)).finally(() => setIsLoading(false));\n }}>\n {buttonProps.title}\n </CancelScheduledUpdateButton>\n </ScheduledUpdateText>\n ) : (\n <>\n <OfferingButton\n className=\"stigg-paywall-plan-button\"\n data-testid={`paywall-card-cta-${plan.displayName}`}\n disabled={isDisabled}\n $disabled={isDisabled}\n onClick={() => {\n setIsLoading(true);\n Promise.resolve(onPlanSelected(buttonProps.intentionType)).finally(() => setIsLoading(false));\n }}>\n <ButtonText className=\"stigg-paywall-plan-button-text\" variant=\"h6\" color=\"primary.main\">\n {buttonProps.title}\n </ButtonText>\n {isLoading && <LoadingIndicator color={theme.stigg.palette.text.disabled} loading size={16} />}\n </OfferingButton>\n\n {!withTrialLeftRow ? (\n <div style={{ height: '20px' }} />\n ) : (\n <TrialDaysLeft className=\"stigg-trial-days-left-text\" variant=\"h6\" color=\"secondary\">\n {plan.isCurrentCustomerPlan && plan.trialDaysLeft && (\n <>\n <b>{plan.trialDaysLeft} days</b> left on your free trial\n </>\n )}\n </TrialDaysLeft>\n )}\n </>\n )}\n </ButtonLayout>\n </>\n );\n}\n","<svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M6.95392 1.03353C7.1196 1.56038 6.82682 2.12178 6.29997 2.28746C5.79034 2.44773 5.30237 2.68036 4.85175 2.98146C3.76168 3.70982 2.95789 4.79361 2.57732 6.04817C2.19675 7.30273 2.26296 8.65044 2.76466 9.86166C3.26637 11.0729 4.17252 12.0727 5.32873 12.6907C6.48494 13.3087 7.81967 13.5067 9.10549 13.2509C10.3913 12.9951 11.5487 12.3014 12.3804 11.288C13.2121 10.2746 13.6666 9.00413 13.6666 7.69312C13.6666 7.14083 14.1144 6.69312 14.6666 6.69312C15.2189 6.69312 15.6666 7.14083 15.6666 7.69312C15.6666 7.92228 15.6564 8.15052 15.6361 8.37721C15.6465 8.44937 15.6492 8.52379 15.6432 8.59952L15.6392 8.64883C15.6298 8.75932 15.6028 8.86407 15.5612 8.96057C15.3409 10.2743 14.7807 11.5158 13.9264 12.5568C12.8012 13.9279 11.2353 14.8664 9.49568 15.2125C7.75603 15.5585 5.95022 15.2906 4.38594 14.4545C2.82166 13.6184 1.59568 12.2657 0.916905 10.627C0.238131 8.98832 0.148554 7.16495 0.663439 5.4676C1.17832 3.77025 2.26581 2.30394 3.74061 1.31852C4.35023 0.911179 5.01049 0.596408 5.69999 0.379577C6.22684 0.213898 6.78824 0.506683 6.95392 1.03353ZM7.56761 1.27284C7.61434 0.722538 8.09832 0.314306 8.64863 0.361031L8.69791 0.365373C9.24791 0.415584 9.65307 0.902149 9.60286 1.45215C9.55265 2.00214 9.06608 2.4073 8.51608 2.35709L8.47942 2.35386C7.92912 2.30714 7.52089 1.82315 7.56761 1.27284ZM12.4186 2.90891C12.8384 2.55014 13.4697 2.59967 13.8284 3.01954C13.8498 3.04454 13.871 3.06967 13.892 3.09494C14.2454 3.51937 14.1878 4.14991 13.7634 4.50329C13.339 4.85667 12.7084 4.79906 12.355 4.37463C12.3395 4.35592 12.3238 4.33731 12.3079 4.31879C11.9492 3.89892 11.9987 3.26769 12.4186 2.90891ZM8.99998 5.33352C8.99998 4.78124 8.55226 4.33352 7.99998 4.33352C7.44769 4.33352 6.99998 4.78124 6.99998 5.33352V8.00019C6.99998 8.55247 7.44769 9.00019 7.99998 9.00019H10.6666C11.2189 9.00019 11.6666 8.55247 11.6666 8.00019C11.6666 7.4479 11.2189 7.00019 10.6666 7.00019H8.99998V5.33352Z\" fill=\"#7586B0\"/>\n</svg>\n","import { Currency } from '@stigg/js-client-sdk';\nimport getSymbolFromCurrency from 'currency-symbol-map';\n\nexport const currencyPriceFormatter = ({\n amount,\n currency = Currency.Usd,\n locale,\n maximumFractionDigits = 5,\n minimumFractionDigits = 0,\n}: {\n amount: number;\n currency?: Currency | string;\n locale?: string;\n maximumFractionDigits?: number;\n minimumFractionDigits?: number;\n}) => {\n const currencyString = currency.toString();\n const currencySymbol = getSymbolFromCurrency(currencyString);\n let formattedPrice = new Intl.NumberFormat(locale, {\n maximumFractionDigits,\n minimumFractionDigits,\n style: 'currency',\n currency: currencyString,\n ...(currencySymbol ? { currencyDisplay: 'code' } : {}),\n }).format(amount || 0);\n\n if (currencySymbol) {\n formattedPrice = formattedPrice.replace(currencyString, currencySymbol);\n }\n\n // remove space between currency symbol and price\n formattedPrice = formattedPrice.replace(/\\s/g, '');\n\n return formattedPrice;\n};\n","import {\n BillingModel,\n BillingPeriod,\n PaywallCalculatedPricePoint,\n Price,\n PriceTierFragment,\n} from '@stigg/js-client-sdk';\nimport { currencyPriceFormatter } from './currencyUtils';\nimport { PlanPriceText } from './getPlanPrice';\nimport { calculateTierPrice, getPriceFeatureUnit } from './priceTierUtils';\nimport { PaywallLocalization } from '../paywall';\n\ntype GetPaidPriceTextParams = {\n planPrices: Price[];\n paywallCalculatedPrice?: PaywallCalculatedPricePoint;\n selectedBillingPeriod: BillingPeriod;\n locale: string;\n shouldShowMonthlyPriceAmount: boolean;\n selectedTierByFeature: Record<string, PriceTierFragment>;\n paywallLocale: PaywallLocalization;\n perUnitQuantityByFeature?: Record<string, number>;\n};\n\nexport function getPaidPriceText({\n planPrices,\n paywallCalculatedPrice,\n selectedBillingPeriod,\n locale,\n shouldShowMonthlyPriceAmount,\n selectedTierByFeature,\n paywallLocale,\n perUnitQuantityByFeature,\n}: GetPaidPriceTextParams): PlanPriceText {\n const { amount, currency } = paywallCalculatedPrice || planPrices[0];\n const priceAmount = amount || 0;\n\n const isSinglePrice = planPrices.length === 1;\n let priceNumber =\n selectedBillingPeriod === BillingPeriod.Annually && shouldShowMonthlyPriceAmount ? priceAmount / 12 : priceAmount;\n\n let tiers;\n let tierUnits;\n const pricePeriod = paywallLocale.price.pricePeriod(\n shouldShowMonthlyPriceAmount ? BillingPeriod.Monthly : BillingPeriod.Annually,\n );\n let unit = pricePeriod;\n\n for (const price of planPrices) {\n if (price.isTieredPrice) {\n let currentTier = price.tiers![0];\n if (selectedTierByFeature[price.feature!.featureId]) {\n currentTier = selectedTierByFeature[price.feature!.featureId] || currentTier;\n\n tiers = price.tiers;\n tierUnits = getPriceFeatureUnit(price);\n }\n\n priceNumber += calculateTierPrice(\n price,\n currentTier,\n selectedBillingPeriod,\n shouldShowMonthlyPriceAmount,\n perUnitQuantityByFeature?.[price.feature!.featureId] || 1,\n );\n }\n }\n\n if (isSinglePrice) {\n const price = planPrices[0];\n const featureUnit = price.feature?.units || '';\n\n if (price.pricingModel === BillingModel.PerUnit && !price.isTieredPrice) {\n unit = shouldShowMonthlyPriceAmount ? `per ${featureUnit} ${pricePeriod}` : `per ${featureUnit} ${pricePeriod}`;\n } else if (price.pricingModel === BillingModel.UsageBased) {\n unit = `per ${featureUnit}`;\n }\n }\n\n return {\n price: currencyPriceFormatter({ amount: priceNumber, currency, locale }),\n unit,\n tiers,\n tierUnits,\n };\n}\n","import { BillingPeriod, PriceTierFragment, PricingType } from '@stigg/js-client-sdk';\nimport { getPaidPriceText } from './getPaidPriceText';\nimport { PaywallPlan, PaywallLocalization } from '../paywall';\n\nexport type PlanPriceText = {\n price: string;\n unit?: string;\n tiers?: PriceTierFragment[] | null | undefined;\n tierUnits?: string;\n};\n\nexport function getPlanPrice(\n plan: PaywallPlan,\n billingPeriod: BillingPeriod,\n paywallLocale: PaywallLocalization,\n locale: string,\n shouldShowMonthlyPriceAmount: boolean,\n selectedTierByFeature?: Record<string, PriceTierFragment>,\n perUnitQuantityByFeature?: Record<string, number>,\n): PlanPriceText {\n switch (plan.pricingType) {\n case PricingType.Free:\n if (typeof paywallLocale.price.free === 'function') {\n return paywallLocale.price.free(plan.paywallCurrency);\n }\n\n return paywallLocale.price.free;\n case PricingType.Custom:\n return {\n price:\n typeof paywallLocale.price.custom === 'function'\n ? paywallLocale.price.custom({ plan, selectedBillingPeriod: billingPeriod })\n : paywallLocale.price.custom,\n };\n case PricingType.Paid: {\n const planPrices = plan.pricePoints.filter((pricePoint) => pricePoint.billingPeriod === billingPeriod);\n const paywallCalculatedPrice = plan.paywallCalculatedPricePoints?.find(\n (pricePoint) => pricePoint.billingPeriod === billingPeriod,\n );\n\n if (!planPrices?.length && !paywallCalculatedPrice) {\n return {\n price: paywallLocale.price.priceNotSet,\n };\n }\n\n const paidParams = {\n planPrices,\n paywallCalculatedPrice,\n selectedBillingPeriod: billingPeriod,\n selectedTierByFeature: selectedTierByFeature || {},\n perUnitQuantityByFeature: perUnitQuantityByFeature || {},\n };\n\n return paywallLocale.price.paid\n ? paywallLocale.price.paid({ ...paidParams, plan })\n : getPaidPriceText({ ...paidParams, locale, shouldShowMonthlyPriceAmount, paywallLocale });\n }\n default:\n return {\n price: '',\n };\n }\n}\n","import React from 'react';\n\nimport styled from '@emotion/styled/macro';\nimport MuiButton, { ButtonProps } from '@mui/material/Button';\n\nexport type StyledButtonProps = { $success?: boolean; $error?: boolean };\n\nconst StyledButton = styled(MuiButton, { shouldForwardProp: (prop) => !prop.startsWith('$') })<StyledButtonProps>`\n border-radius: 10px;\n text-transform: none;\n\n background-color: ${({ theme, $success, $error }) => {\n if ($success) {\n return theme.stigg.palette.success;\n }\n if ($error) {\n return theme.stigg.palette.error;\n }\n return '';\n }};\n\n &:hover {\n background-color: ${({ theme, $success, $error }) => {\n if ($success) {\n return theme.stigg.palette.successDark;\n }\n if ($error) {\n return theme.stigg.palette.errorDark;\n }\n return '';\n }};\n }\n`;\n\nexport const Button = ({ variant = 'outlined', ...props }: ButtonProps & StyledButtonProps) => {\n return <StyledButton variant={variant} {...props} />;\n};\n","import styled from '@emotion/styled';\nimport { OutlinedInputProps } from '@mui/material/OutlinedInput';\nimport TextField from '@mui/material/TextField';\n\nexport const InputField = styled(TextField)<OutlinedInputProps>(({ theme }) => ({\n '& .MuiOutlinedInput-root': {\n height: '42px',\n borderRadius: theme.stigg.border.radius,\n fieldset: {\n borderColor: theme.stigg.palette.outlinedBorder,\n },\n '&:not(.Mui-focused):hover fieldset': {\n borderColor: theme.stigg.palette.outlinedRestingBorder,\n },\n },\n '& .MuiInputBase-input': {\n padding: '8px 12px',\n borderRadius: theme.stigg.border.radius,\n fontFamily: theme.stigg.typography.fontFamily,\n color: theme.stigg.palette.text.primary,\n ...theme.stigg.typography.body,\n },\n '& .Mui-error': {\n fontFamily: theme.stigg.typography.fontFamily,\n },\n}));\n","import styled from '@emotion/styled/macro';\nimport Grid from '@mui/material/Grid';\nimport ReactSkeleton from 'react-loading-skeleton';\n\nexport const SkeletonsContainer = styled(Grid, { shouldForwardProp: (prop) => !prop.startsWith('$') })<{\n $gap: number;\n $flexDirection?: 'row' | 'column';\n}>`\n display: flex;\n flex-direction: ${({ $flexDirection }) => $flexDirection || 'row'};\n gap: ${({ $gap }) => $gap}px;\n`;\n\nexport const FlexedSkeletonContainer = styled(SkeletonsContainer)`\n span {\n display: flex;\n flex: 1;\n }\n`;\n\nexport const FlexedSkeleton = styled(Grid)<{ flex: number }>`\n span {\n display: flex;\n flex: ${({ flex }) => flex};\n }\n`;\n\nexport const Skeleton = styled(ReactSkeleton)`\n border-radius: 4px;\n`;\n","import React from 'react';\nimport Divider from '@mui/material/Divider';\nimport Grid from '@mui/material/Grid';\nimport styled from '@emotion/styled/macro';\nimport { FlexedSkeleton, FlexedSkeletonContainer, Skeleton, SkeletonsContainer } from './Skeletons.style';\n\nconst ContentContainer = styled(Grid)`\n display: flex;\n flex-direction: column;\n`;\n\nexport function ContentLoadingSkeleton() {\n return (\n <ContentContainer container>\n <SkeletonsContainer item $gap={48}>\n <Skeleton width={120} height={20} />\n <Skeleton width={120} height={20} />\n </SkeletonsContainer>\n\n <Divider className=\"stigg-checkout-plan-header-divider\" sx={{ marginY: 2 }} />\n\n <ContentContainer item>\n <Skeleton width={120} height={20} />\n\n <FlexedSkeletonContainer $gap={16} marginTop={3}>\n <Skeleton height={20} />\n <Skeleton height={20} />\n </FlexedSkeletonContainer>\n\n <SkeletonsContainer $gap={130} marginTop={3}>\n <FlexedSkeleton flex={1}>\n <Skeleton height={20} />\n </FlexedSkeleton>\n\n <FlexedSkeleton flex={3}>\n <Skeleton height={20} />\n </FlexedSkeleton>\n </SkeletonsContainer>\n </ContentContainer>\n </ContentContainer>\n );\n}\n","import InputAdornment from '@mui/material/InputAdornment';\nimport React from 'react';\nimport { Typography } from './Typography';\nimport { InputField } from '../checkout/components';\nimport { TiersSelectContainerProps } from './TiersSelectContainer';\n\nexport function VolumePerUnitInput({\n width,\n tierUnits,\n perUnitQuantity,\n handlePerUnitQuantityChange,\n handleChange,\n}: Pick<TiersSelectContainerProps, 'width' | 'tierUnits' | 'perUnitQuantity' | 'handlePerUnitQuantityChange'> & {\n handleChange: (quantity: number) => void;\n}) {\n return (\n <InputField\n type=\"number\"\n fullWidth\n sx={{ minHeight: '46px', width }}\n InputProps={{\n endAdornment: (\n <InputAdornment position=\"end\">\n <Typography variant=\"body1\" color=\"primary\">\n {tierUnits}\n </Typography>\n </InputAdornment>\n ),\n }}\n value={perUnitQuantity || 1}\n onChange={(event) => {\n const quantity = event?.target?.value ? Number(event?.target?.value) : null;\n if (quantity) {\n handleChange(quantity);\n handlePerUnitQuantityChange(quantity);\n }\n }}\n />\n );\n}\n","import { PriceTierFragment } from '@stigg/js-client-sdk';\nimport styled from '@emotion/styled/macro';\nimport OutlinedInput from '@mui/material/OutlinedInput';\nimport Select from '@mui/material/Select';\nimport MenuItem from '@mui/material/MenuItem';\nimport { map } from 'lodash';\nimport React from 'react';\nimport { Typography } from './Typography';\nimport { TiersSelectContainerProps } from './TiersSelectContainer';\n\nconst TierSelect = styled(Select)`\n border-radius: 10px;\n min-height: 42px;\n min-width: 120px;\n\n &:hover .MuiOutlinedInput-notchedOutline {\n border-color: ${({ theme }) => theme.stigg.palette.outlinedBorder};\n }\n`;\n\nconst TierInput = styled(OutlinedInput)`\n & .MuiInputBase-input {\n padding: 10px 12px;\n }\n\n &.Mui-focused .MuiOutlinedInput-notchedOutline {\n border-color: ${({ theme }) => theme.stigg.palette.primary} !important;\n }\n`;\n\nexport function VolumeBulkSelect({\n selectedTier,\n componentId,\n tierUnits,\n tiers,\n handleChange,\n}: Pick<TiersSelectContainerProps, 'selectedTier' | 'componentId' | 'tiers' | 'tierUnits'> & {\n handleChange: (quantity: number) => void;\n}) {\n if (!tiers) {\n return null;\n }\n\n return (\n <TierSelect\n value={selectedTier ? selectedTier.upTo?.toString() : tiers[0].upTo?.toString()}\n fullWidth\n onChange={(event) => {\n handleChange(event.target.value as number);\n }}\n id={componentId}\n input={<TierInput />}\n MenuProps={{\n MenuListProps: { disablePadding: true },\n PaperProps: {\n sx: { marginTop: '4px', borderRadius: '10px' },\n },\n }}>\n {map(tiers, (tier: PriceTierFragment) => (\n <MenuItem className=\"stigg-price-tier-menu-item-text\" key={tier.upTo} value={tier.upTo?.toString()}>\n <Typography variant=\"body1\" color=\"primary\" style={{ lineHeight: 'unset' }}>\n {tier.upTo} {tierUnits}\n </Typography>\n </MenuItem>\n ))}\n </TierSelect>\n );\n}\n","import { PriceTierFragment, TiersMode } from '@stigg/js-client-sdk';\nimport React from 'react';\nimport styled from '@emotion/styled/macro';\nimport { getTierByQuantity, hasTierWithUnitPrice } from '../utils/priceTierUtils';\nimport { Typography } from './Typography';\nimport { VolumePerUnitInput } from './VolumePerUnitInput';\nimport { VolumeBulkSelect } from './VolumeBulkSelect';\n\nexport type TiersSelectContainerProps = {\n componentId: string;\n tiers?: PriceTierFragment[] | null;\n tierUnits?: string;\n selectedTier?: PriceTierFragment;\n handleTierChange: (tier: PriceTierFragment) => void;\n tiersMode?: TiersMode | null;\n handlePerUnitQuantityChange: (quantity: number) => void;\n perUnitQuantity?: number;\n width?: number;\n};\n\nconst TiersSelectLayout = styled(Typography)`\n min-height: 46px;\n`;\n\nexport function TiersSelectContainer(props: TiersSelectContainerProps) {\n const { tiers, handleTierChange } = props;\n const handleChange = (quantity: number) => {\n if (!tiers) return;\n\n handleTierChange(getTierByQuantity(tiers, quantity)!);\n };\n\n return (\n <TiersSelectLayout as=\"div\" className=\"stigg-price-tier-select\">\n {hasTierWithUnitPrice(tiers) ? (\n <VolumePerUnitInput handleChange={handleChange} {...props} />\n ) : (\n <VolumeBulkSelect handleChange={handleChange} {...props} />\n )}\n </TiersSelectLayout>\n );\n}\n","import React from 'react';\nimport styled from '@emotion/styled/macro';\nimport { BillingPeriod, PriceTierFragment } from '@stigg/js-client-sdk';\nimport { PaywallPlan } from './types';\nimport { PaywallLocalization } from './paywallTextOverrides';\nimport { getPlanPrice } from '../utils/getPlanPrice';\nimport { Typography } from '../common/Typography';\nimport { TiersSelectContainer } from '../common/TiersSelectContainer';\n\nconst EMPTY_CHAR = '';\n\nconst PlanPriceContainer = styled(Typography)`\n word-break: break-word;\n width: 100%;\n`;\n\nconst UnitSpan = styled(Typography)`\n white-space: nowrap;\n`;\n\nconst PriceSpan = styled(Typography)`\n white-space: normal;\n min-height: 39px;\n`;\n\ntype PriceBillingPeriodProps = {\n plan: PaywallPlan;\n billingPeriod: BillingPeriod;\n hasMonthlyPrice: boolean;\n hasAnnuallyPrice: boolean;\n paywallLocale: PaywallLocalization;\n};\n\nfunction PriceBillingPeriod({\n plan,\n billingPeriod,\n hasMonthlyPrice,\n hasAnnuallyPrice,\n paywallLocale,\n}: PriceBillingPeriodProps) {\n const hasPrice = plan.pricePoints.find((pricePoint) => pricePoint.billingPeriod === billingPeriod);\n\n let content = EMPTY_CHAR;\n if (hasPrice && hasMonthlyPrice && hasAnnuallyPrice) {\n content = paywallLocale.price.billingPeriod?.(billingPeriod) || `, billed ${billingPeriod.toLowerCase()}`;\n }\n\n return (\n <Typography span className=\"stigg-price-billing-period-text\" variant=\"h6\" color=\"secondary\">\n {content}\n </Typography>\n );\n}\n\nexport const PlanPrice = ({\n showStartingAt,\n withUnitPriceRow,\n withStartingAtRow,\n withTiersRow,\n selectedTierByFeature,\n setSelectedTierByFeature,\n plan,\n billingPeriod,\n paywallLocale,\n locale,\n hasMonthlyPrice,\n hasAnnuallyPrice,\n perUnitQuantityByFeature,\n setPerUnitQuantityByFeature,\n}: {\n showStartingAt: boolean;\n withUnitPriceRow: boolean;\n withStartingAtRow: boolean;\n withTiersRow: boolean;\n selectedTierByFeature: Record<string, PriceTierFragment>;\n setSelectedTierByFeature: React.Dispatch<React.SetStateAction<Record<string, PriceTierFragment>>>;\n perUnitQuantityByFeature: Record<string, number>;\n setPerUnitQuantityByFeature: React.Dispatch<React.SetStateAction<Record<string, number>>>;\n plan: PaywallPlan;\n billingPeriod: BillingPeriod;\n paywallLocale: PaywallLocalization;\n hasMonthlyPrice: boolean;\n hasAnnuallyPrice: boolean;\n locale: string;\n}) => {\n const { price, unit, tiers, tierUnits } = getPlanPrice(\n plan,\n billingPeriod,\n paywallLocale,\n locale,\n hasMonthlyPrice,\n selectedTierByFeature,\n perUnitQuantityByFeature,\n );\n\n // We currently only support prices with one tier - so we select the first one\n const tieredPrice = plan.pricePoints.find((planPrice) => {\n return planPrice.billingPeriod === billingPeriod && planPrice.isTieredPrice;\n });\n const featureId = tieredPrice ? tieredPrice.feature!.featureId : undefined;\n const selectedTier = featureId ? selectedTierByFeature[featureId] : undefined;\n const perUnitQuantity = featureId ? perUnitQuantityByFeature[featureId] : undefined;\n\n const handleTierChange = (tier: PriceTierFragment) => {\n if (!featureId) {\n return;\n }\n\n setSelectedTierByFeature((prevState) => ({\n ...prevState,\n [featureId]: tier,\n }));\n };\n\n const handlePerUnitQuantityChange = (quantity: number) => {\n if (!featureId) {\n return;\n }\n\n setPerUnitQuantityByFeature((prevState) => ({\n ...prevState,\n [featureId]: quantity,\n }));\n };\n\n return (\n <PlanPriceContainer as=\"div\" className=\"stigg-price-text\">\n <>\n {withStartingAtRow && (\n <Typography\n style={{ minHeight: '20px' }}\n className=\"stigg-starting-at-text\"\n variant=\"body1\"\n color=\"secondary\">\n {showStartingAt ? paywallLocale.price.startingAtCaption : EMPTY_CHAR}\n </Typography>\n )}\n\n <PriceSpan className=\"stigg-price-point\" variant=\"h1\">\n {price}\n </PriceSpan>\n\n {withUnitPriceRow && (\n <Typography as=\"div\" className=\"stigg-price-unit-and-billing-period-text\" style={{ minHeight: '48px' }}>\n <UnitSpan className=\"stigg-price-unit-text\" span variant=\"h6\" color=\"secondary\">\n {unit}\n </UnitSpan>\n\n <PriceBillingPeriod\n plan={plan}\n billingPeriod={billingPeriod}\n hasAnnuallyPrice={hasAnnuallyPrice}\n hasMonthlyPrice={hasMonthlyPrice}\n paywallLocale={paywallLocale}\n />\n </Typography>\n )}\n\n {withTiersRow ? (\n <TiersSelectContainer\n componentId={`${plan.id}_${featureId}_tier`}\n tiers={tiers}\n tierUnits={tierUnits}\n selectedTier={selectedTier}\n handleTierChange={handleTierChange}\n tiersMode={tieredPrice?.tiersMode}\n handlePerUnitQuantityChange={handlePerUnitQuantityChange}\n perUnitQuantity={perUnitQuantity}\n />\n ) : null}\n </>\n </PlanPriceContainer>\n );\n};\n","import React, { useEffect, useState } from 'react';\nimport {\n BillableFeature,\n BillingPeriod,\n Customer,\n PriceTierFragment,\n PricingType,\n Subscription,\n} from '@stigg/js-client-sdk';\nimport styled from '@emotion/styled/macro';\nimport classNames from 'classnames';\nimport Grid from '@mui/material/Grid';\nimport { PlanEntitlements } from './PlanEntitlements';\nimport { PlanOfferingButton } from './PlanOfferingButton';\nimport { PaywallPlan, SelectDefaultTierIndexFn, SubscribeIntentionType } from './types';\nimport { PaywallLocalization } from './paywallTextOverrides';\nimport { flexLayoutMapper } from '../../theme/getResolvedTheme';\nimport { Typography } from '../common/Typography';\nimport MiniSchedule from '../../assets/mini-schedule.svg';\nimport { PlanPrice } from './PlanPrice';\nimport { getSelectedTier, getSelectedTierQuantityBeFeature } from '../utils/priceTierUtils';\n\nconst PlanOfferingButtonHeight = '66px';\n\nconst PlanOfferingContainer = styled.div<{ $isHighlighted: boolean; $isCurrentPlan: boolean }>`\n position: relative;\n background-color: ${({ theme, $isCurrentPlan }) =>\n $isCurrentPlan ? theme.stigg.palette.backgroundHighlight : theme.stigg.palette.backgroundPaper};\n border: ${({ theme, $isHighlighted }) =>\n $isHighlighted ? `3px solid ${theme.stigg.palette.primary}` : `1px solid ${theme.stigg.palette.outlinedBorder}`};\n border-radius: 10px;\n padding: ${({ theme }) => theme.stigg.layout.planPadding};\n display: flex;\n min-width: ${({ theme }) => theme.stigg.layout.planMinWidth};\n max-width: ${({ theme }) => theme.stigg.layout.planMaxWidth};\n flex-direction: column;\n align-items: flex-start;\n justify-content: flex-start;\n position: relative;\n`;\n\nconst PlanHeader = styled(Typography)`\n padding-bottom: 8px;\n`;\n\nconst Divider = styled.div`\n height: 2px;\n width: 100%;\n background-color: ${({ theme }) => theme.stigg.palette.outlinedBorder};\n margin-bottom: 40px;\n`;\n\nconst PlanDescription = styled(Typography)`\n text-align: ${({ theme }) => theme.stigg.layout.descriptionAlignment};\n min-height: ${({ theme }) => theme.stigg.layout.descriptionMinHeight};\n`;\n\nconst HighlightBadge = styled.div`\n background-color: ${({ theme }) => theme.stigg.palette.primary};\n border-radius: 40px;\n position: absolute;\n top: -12px;\n`;\n\nconst HighlightText = styled(Typography)`\n margin: 0;\n padding: 2px 8px;\n`;\n\nconst HeaderWrapper = styled.div`\n width: 100%;\n display: flex;\n flex-direction: column;\n align-items: ${({ theme }) => flexLayoutMapper(theme.stigg.layout.headerAlignment)};\n`;\n\ntype PlanOfferingProps = {\n withUnitPriceRow: boolean;\n withTiersRow: boolean;\n withTrialLeftRow: boolean;\n customer: Customer | null;\n plan: PaywallPlan;\n billingPeriod: BillingPeriod;\n currentSubscription: Subscription | null;\n isHighlighted: boolean;\n shouldShowDescriptionSection: boolean;\n hasAnnuallyPrice: boolean;\n hasMonthlyPrice: boolean;\n isCustomerOnTrial: boolean;\n onPlanSelected: (intentionType: SubscribeIntentionType, billableFeatures: BillableFeature[]) => void | Promise<void>;\n paywallLocale: PaywallLocalization;\n locale: string;\n withStartingAtRow: boolean;\n isCustomerInCustomPlan: boolean;\n selectDefaultTierIndex?: SelectDefaultTierIndexFn;\n};\n\nconst NextPlanTagContainer = styled.div`\n position: absolute;\n top: 0;\n background-color: ${({ theme }) => theme.stigg.palette.outlinedBorder};\n border-radius: 0px 0px 10px 10px;\n padding: 3px 12px;\n`;\n\nconst StyledMiniSchedule = styled(MiniSchedule)<{ $iconsColor?: string }>`\n display: flex;\n height: 100%;\n margin-right: 4px;\n\n path {\n fill: ${({ theme }) => theme.stigg.palette.text.primary};\n }\n`;\n\nfunction UpcomingChangeTag({ text = 'Next', iconsColor }: { text?: string; iconsColor?: string }) {\n return (\n <NextPlanTagContainer>\n <Grid display=\"flex\" alignItems=\"center\" gap={1}>\n <StyledMiniSchedule $iconsColor={iconsColor} />\n <Typography color=\"primary\" variant=\"body1\">\n {text}\n </Typography>\n </Grid>\n </NextPlanTagContainer>\n );\n}\n\nexport function PlanOffering({\n withUnitPriceRow,\n withTiersRow,\n withTrialLeftRow,\n customer,\n plan,\n billingPeriod,\n isHighlighted,\n currentSubscription,\n shouldShowDescriptionSection,\n hasMonthlyPrice,\n hasAnnuallyPrice,\n isCustomerOnTrial,\n onPlanSelected,\n paywallLocale,\n locale,\n withStartingAtRow,\n isCustomerInCustomPlan,\n selectDefaultTierIndex,\n}: PlanOfferingProps) {\n const isNextPlan = plan.isNextPlan && plan.isNextPlan(billingPeriod);\n const planPrices = plan.pricePoints.filter((pricePoint) => pricePoint.billingPeriod === billingPeriod);\n const paywallCalculatedPrice = plan.paywallCalculatedPricePoints?.find(\n (pricePoint) => pricePoint.billingPeriod === billingPeriod,\n );\n const showStartingAt = planPrices.length > 1 && !!paywallCalculatedPrice?.additionalChargesMayApply;\n const showCTAButton = !isCustomerInCustomPlan || plan.pricingType === PricingType.Custom;\n\n let planBadge = null;\n if (isNextPlan) {\n planBadge = <UpcomingChangeTag text=\"Next plan\" />;\n } else if (isHighlighted && paywallLocale.highlightChip) {\n planBadge = (\n <HighlightBadge className=\"stigg-highlight-badge\">\n <HighlightText className=\"stigg-highlight-badge-text\" color=\"white\" bold>\n {paywallLocale.highlightChip}\n </HighlightText>\n </HighlightBadge>\n );\n }\n\n const [perUnitQuantityByFeature, setPerUnitQuantityByFeature] = useState<Record<string, number>>({});\n const [selectedTierByFeature, setSelectedTierByFeature] = useState<Record<string, PriceTierFragment>>(\n getSelectedTier(plan, billingPeriod, currentSubscription, {}, selectDefaultTierIndex),\n );\n\n useEffect(() => {\n setSelectedTierByFeature(getSelectedTier(plan, billingPeriod, currentSubscription, selectedTierByFeature));\n setPerUnitQuantityByFeature(getSelectedTierQuantityBeFeature(plan, billingPeriod, currentSubscription));\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [billingPeriod, currentSubscription, plan]);\n\n const onPlanButtonClick = (intentionType: SubscribeIntentionType) => {\n const tierBillableFeatures: BillableFeature[] = Object.keys(selectedTierByFeature).map((featureId) => ({\n featureId,\n quantity: selectedTierByFeature[featureId].upTo || 0,\n }));\n const perUnitBillableFeatures: BillableFeature[] = Object.keys(perUnitQuantityByFeature).map((featureId) => ({\n featureId,\n quantity: perUnitQuantityByFeature[featureId],\n }));\n\n return onPlanSelected(intentionType, { ...tierBillableFeatures, ...perUnitBillableFeatures });\n };\n\n return (\n <PlanOfferingContainer\n className={classNames(`stigg-${plan.id}`, 'stigg-plan-offering-container', {\n 'stigg-current-plan': plan.isCurrentCustomerPlan,\n })}\n $isHighlighted={isHighlighted}\n $isCurrentPlan={plan.isCurrentCustomerPlan}>\n {planBadge}\n\n <HeaderWrapper className=\"stigg-header-wrapper\">\n <PlanHeader className=\"stigg-plan-header\" variant=\"h3\">\n {plan.displayName}\n </PlanHeader>\n\n {shouldShowDescriptionSection && (\n <PlanDescription className=\"stigg-plan-description\" variant=\"h6\" color=\"secondary\">\n {plan.description}\n </PlanDescription>\n )}\n\n <PlanPrice\n showStartingAt={showStartingAt}\n withUnitPriceRow={withUnitPriceRow}\n withStartingAtRow={withStartingAtRow}\n withTiersRow={withTiersRow}\n selectedTierByFeature={selectedTierByFeature}\n setSelectedTierByFeature={setSelectedTierByFeature}\n plan={plan}\n billingPeriod={billingPeriod}\n paywallLocale={paywallLocale}\n locale={locale}\n hasAnnuallyPrice={hasAnnuallyPrice}\n hasMonthlyPrice={hasMonthlyPrice}\n setPerUnitQuantityByFeature={setPerUnitQuantityByFeature}\n perUnitQuantityByFeature={perUnitQuantityByFeature}\n />\n\n {showCTAButton ? (\n <PlanOfferingButton\n isNextPlan={isNextPlan}\n customer={customer}\n plan={plan}\n currentSubscription={currentSubscription}\n billingPeriod={billingPeriod}\n isCustomerOnTrial={isCustomerOnTrial}\n onPlanSelected={onPlanButtonClick}\n paywallLocale={paywallLocale}\n withTrialLeftRow={withTrialLeftRow}\n selectedTierByFeature={selectedTierByFeature}\n perUnitQuantityByFeature={perUnitQuantityByFeature}\n />\n ) : (\n <div style={{ height: PlanOfferingButtonHeight }} />\n )}\n\n <Divider className=\"stigg-plan-header-divider\" />\n </HeaderWrapper>\n\n <PlanEntitlements plan={plan} billingPeriod={billingPeriod} paywallLocale={paywallLocale} />\n </PlanOfferingContainer>\n );\n}\n","import React from 'react';\nimport styled from '@emotion/styled/macro';\nimport Switch from 'react-switch';\nimport { BillingPeriod } from '@stigg/js-client-sdk';\nimport { Typography } from '../common/Typography';\n\nconst PickerContainer = styled.div`\n height: 40px;\n padding: 0 20px;\n margin-bottom: ${({ theme }) => theme.stigg.layout.switchBottomSpacing};\n border-radius: 10px;\n border: ${({ theme }) => `1px solid ${theme.stigg.palette.outlinedBorder}`};\n background-color: ${({ theme }) => theme.stigg.palette.backgroundPaper};\n display: flex;\n align-items: center;\n justify-content: center;\n`;\n\nconst PeriodText = styled(Typography)`\n margin: 0 8px;\n`;\n\nconst StyledSwitch = styled(Switch)`\n & .react-switch-bg {\n border: ${({ theme }) => `1px solid ${theme.stigg.palette.switchBorder}`};\n background: ${({ theme }) => theme.stigg.palette.switchFill} !important;\n }\n\n & .react-switch-handle {\n box-shadow: ${({ theme }) => theme.stigg.shadows.light};\n background: ${({ theme }) => theme.stigg.palette.switchHandle} !important;\n top: 0.5px !important;\n }\n`;\n\nfunction DiscountRate({ discount, disabled }: { discount: number; disabled: boolean }) {\n return (\n <Typography variant=\"h6\" color={disabled ? 'disabled' : 'primary'} className=\"stigg-discount-rate-text\">\n {discount}% off\n </Typography>\n );\n}\n\nexport function BillingPeriodPicker({\n discountRate,\n selectedBillingPeriod,\n onBillingPeriodChanged,\n availableBillingPeriods,\n}: {\n discountRate: number;\n selectedBillingPeriod: BillingPeriod;\n onBillingPeriodChanged: (billingPeriod: BillingPeriod) => void;\n availableBillingPeriods: BillingPeriod[];\n}) {\n if (availableBillingPeriods.length <= 1) {\n return null;\n }\n\n const isMonthlyBillingPeriod = selectedBillingPeriod === BillingPeriod.Monthly;\n\n return (\n <PickerContainer className=\"stigg-period-picker-container\">\n <PeriodText\n variant=\"h6\"\n className=\"stigg-monthly-period-text\"\n color={isMonthlyBillingPeriod ? 'primary' : 'disabled'}>\n Monthly\n </PeriodText>\n <StyledSwitch\n className=\"stigg-period-switch\"\n uncheckedIcon={false}\n checkedIcon={false}\n height={16}\n width={33}\n onChange={(isAnnuallySelected) =>\n onBillingPeriodChanged(isAnnuallySelected ? BillingPeriod.Annually : BillingPeriod.Monthly)\n }\n checked={!isMonthlyBillingPeriod}\n borderRadius={10}\n handleDiameter={19}\n />\n <PeriodText\n variant=\"h6\"\n className=\"stigg-annual-period-text\"\n color={!isMonthlyBillingPeriod ? 'primary' : 'disabled'}>\n Annual\n </PeriodText>\n {discountRate !== 0 && <DiscountRate discount={discountRate} disabled={isMonthlyBillingPeriod} />}\n </PickerContainer>\n );\n}\n","import { BillingPeriod, PaywallCalculatedPricePoint, Price } from '@stigg/js-client-sdk';\nimport isNil from 'lodash/isNil';\nimport { PaywallPlan } from '../paywall';\nimport { calculateTierPriceVolume } from './priceTierUtils';\n\nexport function calculateDiscountRate(monthlyPrice?: number | null, annuallyPrice?: number | null) {\n if (!isNil(monthlyPrice) && !isNil(annuallyPrice)) {\n const annuallyPerMonthPrice = annuallyPrice / 12;\n return Math.round(((monthlyPrice - annuallyPerMonthPrice) / monthlyPrice) * 100);\n }\n\n return null;\n}\n\nfunction getPlanBillingPeriodAmount(plan: PaywallPlan, billingPeriod: BillingPeriod) {\n let pricePoint: PaywallCalculatedPricePoint | Price | undefined;\n\n pricePoint = plan.paywallCalculatedPricePoints?.find((price) => price.billingPeriod === billingPeriod);\n\n if (!pricePoint) {\n pricePoint = plan.pricePoints.find((price) => price.billingPeriod === billingPeriod);\n }\n\n if (!pricePoint?.amount) {\n const tieredPrice = plan.pricePoints.find((price) => {\n return price.isTieredPrice && price.billingPeriod === billingPeriod;\n });\n\n if (tieredPrice) {\n return calculateTierPriceVolume(tieredPrice.tiers![0], 1);\n }\n }\n\n return pricePoint?.amount;\n}\n\nexport function calculatePaywallDiscountRate(plans: PaywallPlan[]) {\n return plans.reduce((maxDiscount, plan) => {\n const monthlyAmount = getPlanBillingPeriodAmount(plan, BillingPeriod.Monthly);\n const annuallyAmount = getPlanBillingPeriodAmount(plan, BillingPeriod.Annually);\n\n const discountRate = calculateDiscountRate(monthlyAmount, annuallyAmount);\n if (discountRate) {\n maxDiscount = Math.max(maxDiscount, discountRate);\n }\n\n return maxDiscount;\n }, 0);\n}\n","<svg width=\"135\" height=\"16\" viewBox=\"0 0 135 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<path d=\"M0.0987549 3.43016V12.9878H1.15589V9.52681H3.96527C5.94922 9.52681 7.28874 8.25245 7.28874 6.47848C7.28874 4.70452 5.94922 3.43016 3.96527 3.43016H0.0987549ZM1.15589 8.55656V4.40765H4.04492C5.33376 4.40765 6.18816 5.26205 6.18816 6.47848C6.18816 7.69492 5.33376 8.55656 4.04492 8.55656H1.15589Z\" fill=\"#001E6C\"/>\n<path d=\"M11.7787 13.1616C13.9075 13.1616 15.6525 11.5397 15.6525 9.38199C15.6525 7.21703 13.9365 5.62408 11.8077 5.62408C9.64999 5.62408 7.93395 7.24599 7.93395 9.41095C7.93395 11.5687 9.62103 13.1616 11.7787 13.1616ZM11.7932 12.2276C10.2365 12.2276 9.02005 11.0256 9.02005 9.39647C9.02005 7.76732 10.2365 6.56537 11.7932 6.56537C13.321 6.56537 14.5664 7.76732 14.5664 9.39647C14.5664 11.0256 13.321 12.2276 11.7932 12.2276Z\" fill=\"#001E6C\"/>\n<path d=\"M19.9054 12.9878L21.4766 6.94189H21.5056L23.0623 12.9878H24.4018L26.5958 5.8051H25.4155L23.7936 11.909H23.7647L22.2152 5.8051H20.7815L19.232 11.909H19.203L17.5522 5.8051H16.3575L18.5659 12.9878H19.9054Z\" fill=\"#001E6C\"/>\n<path d=\"M34.9835 9.42544C34.9835 7.30392 33.4051 5.62408 31.1532 5.62408C29.0534 5.62408 27.3084 7.18083 27.3084 9.41095C27.3084 11.5542 28.9086 13.1616 31.1822 13.1616C32.7679 13.1616 34.0567 12.3941 34.6794 11.1922L33.7816 10.707C33.3688 11.6049 32.3696 12.2348 31.1966 12.2348C29.5241 12.2348 28.5031 10.9894 28.4017 9.7223H34.969C34.9835 9.59197 34.9835 9.54129 34.9835 9.42544ZM31.1387 6.55089C32.5434 6.55089 33.6657 7.49942 33.854 8.80998H28.4307C28.6552 7.5501 29.7558 6.55089 31.1387 6.55089Z\" fill=\"#001E6C\"/>\n<path d=\"M39.5922 5.68201C38.564 5.68201 37.8182 6.20334 37.4924 6.93464L37.391 5.8051H36.486V12.9878H37.5431V8.5638C37.5431 7.44873 38.1585 6.77535 39.3171 6.77535H39.9977V5.68201H39.5922Z\" fill=\"#001E6C\"/>\n<path d=\"M48.2486 9.42544C48.2486 7.30392 46.6702 5.62408 44.4183 5.62408C42.3185 5.62408 40.5735 7.18083 40.5735 9.41095C40.5735 11.5542 42.1737 13.1616 44.4473 13.1616C46.033 13.1616 47.3218 12.3941 47.9445 11.1922L47.0467 10.707C46.634 11.6049 45.6348 12.2348 44.4618 12.2348C42.7892 12.2348 41.7682 10.9894 41.6669 9.7223H48.2342C48.2486 9.59197 48.2486 9.54129 48.2486 9.42544ZM44.4039 6.55089C45.8085 6.55089 46.9308 7.49942 47.1191 8.80998H41.6958C41.9203 7.5501 43.0209 6.55089 44.4039 6.55089Z\" fill=\"#001E6C\"/>\n<path d=\"M55.846 7.02877C55.2161 6.13817 54.2024 5.63132 53.0149 5.63132C50.9224 5.63132 49.2425 7.21703 49.2425 9.39647C49.2425 11.5759 50.8934 13.1616 52.986 13.1616C54.1807 13.1616 55.2161 12.6403 55.8533 11.7425L55.9981 12.9878H56.9032V2.56128L55.846 2.67713V7.02877ZM53.0294 12.2276C51.5306 12.2276 50.3286 11.0401 50.3286 9.39647C50.3286 7.75284 51.5306 6.56537 53.0294 6.56537C54.5789 6.56537 55.846 7.76732 55.846 9.39647C55.846 11.0256 54.5789 12.2276 53.0294 12.2276Z\" fill=\"#001E6C\"/>\n<path d=\"M65.7314 5.63132C64.5367 5.63132 63.5085 6.14541 62.8713 7.04325V2.56128L61.8142 2.67713V12.9878H62.7192L62.8641 11.7497C63.494 12.6475 64.5077 13.1616 65.7024 13.1616C67.795 13.1616 69.4748 11.5759 69.4748 9.39647C69.4748 7.21703 67.8239 5.63132 65.7314 5.63132ZM65.6879 12.2276C64.1384 12.2276 62.8713 11.0256 62.8713 9.39647C62.8713 7.76732 64.1384 6.56537 65.6879 6.56537C67.1867 6.56537 68.3887 7.75284 68.3887 9.39647C68.3887 11.0401 67.1867 12.2276 65.6879 12.2276Z\" fill=\"#001E6C\"/>\n<path d=\"M76.2187 5.8051V9.9178C76.2187 11.3297 75.3136 12.1841 74.0465 12.1841C72.7866 12.1841 72.077 11.4456 72.077 10.1133V5.8051H71.0199V10.2726C71.0199 11.9669 72.1349 13.0965 73.7641 13.0965C74.843 13.0965 75.6901 12.6765 76.2187 11.9814V12.8937C76.2187 14.1608 75.2629 15.0804 73.8727 15.0804C72.7504 15.0804 71.8236 14.4794 71.5847 13.4295L70.6579 13.9074C71.0995 15.16 72.3087 16 73.8582 16C75.8132 16 77.2758 14.5953 77.2758 12.7923V5.8051H76.2187Z\" fill=\"#001E6C\"/>\n<path d=\"M108.672 10.4867C108.672 11.9077 107.411 12.7873 105.491 12.7873C104.464 12.7873 103.634 12.6028 102.84 12.2091C102.914 11.76 102.982 11.2187 103 10.5913C103.738 11.0219 104.575 11.231 105.381 11.231C106.34 11.231 106.839 11.0096 106.839 10.5421C106.857 10.0807 106.5 9.87155 105.067 9.59473C103.406 9.26255 102.668 8.57359 102.668 7.35559C102.668 5.97767 103.929 5.0857 105.848 5.0857C106.697 5.0857 107.54 5.24564 108.186 5.52246L107.866 7.06647C107.226 6.7712 106.537 6.63587 105.848 6.63587C104.95 6.63587 104.507 6.85733 104.507 7.29408C104.507 7.67547 104.815 7.83541 106.217 8.12453C108.007 8.50592 108.678 9.19488 108.678 10.4744L108.672 10.4867ZM112.879 11.0957C112.16 11.0957 111.581 10.7143 111.581 9.70546V6.88808H113.408L113.747 5.25794H111.581V2.93884C111.157 3.06187 110.517 3.2095 109.681 3.28332L109.662 10.0315C109.662 11.8708 110.763 12.7996 112.412 12.7996C112.787 12.7996 113.113 12.7627 113.39 12.6951L113.753 10.9665C113.525 11.0465 113.236 11.1018 112.879 11.1018V11.0957ZM114.965 12.6889H116.884V5.25794H114.965V12.6889ZM115.93 2.21912C115.309 2.21297 114.829 2.66817 114.823 3.27102C114.823 3.89232 115.278 4.35983 115.894 4.36598C116.515 4.36598 116.976 3.92923 116.989 3.32638C117.001 2.70508 116.546 2.23142 115.937 2.21912H115.93ZM126.056 5.25794V11.5263C126.056 13.8946 124.456 15.5247 121.756 15.5247C120.784 15.5247 119.714 15.3094 118.994 14.8973C119.492 14.3867 119.831 13.9438 120.046 13.6239C120.532 13.79 121.042 13.8762 121.565 13.8762C123.275 13.8762 124.143 12.9288 124.143 11.7354V11.4955C123.534 12.1968 122.654 12.6336 121.602 12.6336C119.584 12.6336 118.065 11.1326 118.065 8.90577C118.065 6.67893 119.726 5.098 121.756 5.098C122.808 5.098 123.724 5.4794 124.333 6.19912L124.395 5.25179H126.062L126.056 5.25794ZM124.155 8.90577C124.155 7.72468 123.294 6.82657 122.107 6.82657C120.919 6.82657 120.046 7.72468 120.046 8.90577C120.046 10.0868 120.907 10.9542 122.107 10.9542C123.306 10.9542 124.155 10.0561 124.155 8.90577ZM134.994 5.25794V11.5263C134.994 13.8946 133.394 15.5247 130.694 15.5247C129.722 15.5247 128.652 15.3094 127.932 14.8973C128.43 14.3867 128.769 13.9438 128.984 13.6239C129.47 13.79 129.98 13.8762 130.503 13.8762C132.213 13.8762 133.081 12.9288 133.081 11.7354V11.4955C132.472 12.1968 131.592 12.6336 130.54 12.6336C128.523 12.6336 127.003 11.1326 127.003 8.90577C127.003 6.67893 128.664 5.098 130.694 5.098C131.746 5.098 132.662 5.4794 133.271 6.19912L133.333 5.25179H135L134.994 5.25794ZM133.093 8.90577C133.093 7.72468 132.232 6.82657 131.045 6.82657C129.857 6.82657 128.984 7.72468 128.984 8.90577C128.984 10.0868 129.845 10.9542 131.045 10.9542C132.244 10.9542 133.093 10.0561 133.093 8.90577Z\" fill=\"#001E6C\"/>\n<path d=\"M95.7092 14.9825C95.6354 15.0194 94.2267 15.6407 91.7353 15.5238C90.4374 15.4623 89.3117 15.2224 88.512 15.0009L92.8241 9.99361C93.5931 10.1905 94.5835 10.375 95.7092 10.4304C98.2005 10.5534 99.6092 9.92594 99.683 9.88903L95.7092 14.9886V14.9825ZM89.2686 5.36155C88.5612 2.96863 88.838 1.45537 88.8564 1.3754L84.8457 6.44421C84.8334 6.52418 84.5566 8.03744 85.2578 10.4304C85.6269 11.673 86.1252 12.7126 86.5312 13.4384L90.3759 8.0682C90.0068 7.36693 89.5885 6.44421 89.2686 5.3677V5.36155ZM99.2647 5.89058C98.6988 3.97132 97.813 2.55033 97.4501 2.009L93.8822 6.55494L94.5527 9.77216C94.9526 9.82752 95.3462 9.86443 95.7461 9.88903C95.9491 9.89518 96.1521 9.90134 96.3489 9.90134C98.2805 9.90134 99.357 9.44613 99.4739 9.39076L99.7507 9.26773C99.7753 8.60338 99.7322 7.42844 99.2709 5.88443L99.2647 5.89058ZM97.0256 1.68297C96.4166 1.45537 94.8295 0.932493 92.8303 0.83407C91.2248 0.754101 90.0744 0.987856 89.4347 1.1724L89.3793 1.46767C89.367 1.52919 89.121 2.96248 89.7792 5.20777C89.8899 5.58916 90.0252 5.9644 90.1729 6.33964L93.4577 6.22891L97.0318 1.68912L97.0256 1.68297Z\" fill=\"#001E6C\"/>\n</svg>\n","import React from 'react';\nimport styled from '@emotion/styled/macro';\nimport PoweredByStiggSvg from '../../assets/powered-by-stigg.svg';\n\nexport const STIGG_WATERMARK_CLASSNAME = 'stigg-watermark';\n\nexport type PoweredByStiggSources = 'paywall' | 'customer_portal' | 'checkout';\n\nconst PoweredByStiggThemedSvg = styled(PoweredByStiggSvg)`\n * {\n fill: ${({ theme }) => theme.stigg.palette.text.secondary};\n }\n`;\n\ntype PoweredByStiggProps = {\n source: PoweredByStiggSources;\n showWatermark?: boolean;\n style?: React.CSSProperties;\n align?: 'center' | 'end';\n};\n\nconst StyledPoweredByStigg = styled.div<{ $alignSelf?: string }>`\n align-self: ${({ $alignSelf }) => $alignSelf || 'unset'};\n\n @media (max-width: 1040px) {\n align-self: center;\n }\n`;\n\nexport function PoweredByStigg({ source, showWatermark, align, style = {} }: PoweredByStiggProps) {\n if (!showWatermark) {\n return null;\n }\n\n const onWatermarkClick = () => {\n const sourceDomain = window.location.hostname.replace('www.', '');\n window.open(\n `https://www.stigg.io/?utm_source=${sourceDomain}&utm_medium=referral&utm_campaign=${source}`,\n '_blank',\n );\n };\n\n return (\n <StyledPoweredByStigg\n $alignSelf={align}\n className={STIGG_WATERMARK_CLASSNAME}\n style={{ cursor: 'pointer', ...style }}\n onClick={onWatermarkClick}>\n <PoweredByStiggThemedSvg />\n </StyledPoweredByStigg>\n );\n}\n","import { BillingPeriod } from '@stigg/js-client-sdk';\nimport { PaywallPlan } from '../types';\n\nexport function hasPricePoints(plan: PaywallPlan, billingPeriod: BillingPeriod): boolean {\n return plan.pricePoints.some((pricePoint) => pricePoint.billingPeriod === billingPeriod);\n}\n\nexport function hasPricePointsForPlans(plans: PaywallPlan[], billingPeriod: BillingPeriod): boolean {\n return plans.some((plan) => hasPricePoints(plan, billingPeriod));\n}\n","import { BillingPeriod, PricingType } from '@stigg/js-client-sdk';\nimport { ShouldHidePlanFn, PaywallPlan } from '../types';\nimport { hasPricePoints } from './hasPricePoints';\n\nexport function getPlansToDisplay(\n plans: PaywallPlan[],\n selectedBillingPeriod: BillingPeriod,\n shouldHidePlan?: ShouldHidePlanFn,\n): PaywallPlan[] {\n return plans\n .filter((plan) => plan.pricingType !== PricingType.Paid || hasPricePoints(plan, selectedBillingPeriod))\n .filter((plan) => !shouldHidePlan || !shouldHidePlan({ plan }));\n}\n","import { BillableFeature, BillingPeriod, Customer, Plan, PricingType, Subscription } from '@stigg/js-client-sdk';\nimport React, { useCallback, useMemo } from 'react';\nimport styled from '@emotion/styled/macro';\nimport { PlanOffering } from './PlanOffering';\nimport { BillingPeriodPicker } from './BillingPeriodPicker';\nimport { calculatePaywallDiscountRate } from '../utils/calculateDiscountRate';\nimport {\n ShouldHidePlanFn,\n OnPlanSelectedCallbackFn,\n PaywallPlan,\n SubscribeIntentionType,\n SelectDefaultTierIndexFn,\n} from './types';\nimport { PaywallLocalization } from './paywallTextOverrides';\nimport { PoweredByStigg } from '../common/PoweredByStigg';\nimport { useStiggContext } from '../..';\nimport { hasPricePointsForPlans } from './utils/hasPricePoints';\nimport { getPlansToDisplay } from './utils/getPlansToDisplay';\nimport { getPlanPrice } from '../utils/getPlanPrice';\nimport { getSelectedTier } from '../utils/priceTierUtils';\n\nconst PaywallPlansContainer = styled.div`\n color: ${({ theme }) => theme.stigg.palette.text.primary};\n display: flex;\n align-items: stretch;\n justify-content: center;\n flex-wrap: wrap;\n padding: 10px 0;\n gap: ${({ theme }) => theme.stigg.layout.planMargin};\n`;\n\nconst PaywallContainer = styled.div`\n display: flex;\n flex-direction: column;\n align-items: center;\n\n & * {\n box-sizing: border-box;\n }\n`;\n\nconst PaywallLayout = styled.div`\n display: flex;\n flex-direction: column;\n align-items: center;\n`;\n\ntype PaywallProps = {\n plans: PaywallPlan[];\n customer: Customer | null;\n currentSubscription: Subscription | null;\n selectedBillingPeriod: BillingPeriod;\n highlightedPlanId?: string;\n onBillingPeriodChanged: (billingPeriod: BillingPeriod) => void;\n availableBillingPeriods: BillingPeriod[];\n isCustomerOnTrial: boolean;\n onPlanSelected: OnPlanSelectedCallbackFn;\n paywallLocale: PaywallLocalization;\n locale: string;\n shouldHidePlan?: ShouldHidePlanFn;\n selectDefaultTierIndex?: SelectDefaultTierIndexFn;\n};\n\nexport const Paywall = ({\n plans,\n customer,\n currentSubscription,\n highlightedPlanId,\n selectedBillingPeriod,\n onBillingPeriodChanged,\n availableBillingPeriods,\n isCustomerOnTrial,\n onPlanSelected,\n paywallLocale,\n locale,\n shouldHidePlan,\n selectDefaultTierIndex,\n}: PaywallProps) => {\n const { stigg } = useStiggContext();\n const discountRate = calculatePaywallDiscountRate(plans);\n const shouldShowDescriptionSection = plans.some((plan) => !!plan.description);\n const hasMonthlyPrice = hasPricePointsForPlans(plans, BillingPeriod.Monthly);\n const hasAnnuallyPrice = hasPricePointsForPlans(plans, BillingPeriod.Annually);\n const plansToShow = getPlansToDisplay(plans, selectedBillingPeriod, shouldHidePlan);\n\n const handleOnSubscribe = useCallback(\n (plan: Plan, intentionType: SubscribeIntentionType, billableFeatures: BillableFeature[]) => {\n return onPlanSelected({\n plan,\n customer,\n subscription: currentSubscription,\n intentionType,\n selectedBillingPeriod,\n billableFeatures,\n });\n },\n [customer, selectedBillingPeriod, currentSubscription, onPlanSelected],\n );\n\n const isCustomerInCustomPlan = !!currentSubscription && currentSubscription.plan.pricingType === PricingType.Custom;\n\n const withStartingAtRow = useMemo(\n () =>\n plansToShow.some((plan) => {\n const planPrices = plan.pricePoints.filter((pricePoint) => pricePoint.billingPeriod === selectedBillingPeriod);\n const paywallCalculatedPrice = plan.paywallCalculatedPricePoints?.find(\n (pricePoint) => pricePoint.billingPeriod === selectedBillingPeriod,\n );\n return planPrices.length > 1 && !!paywallCalculatedPrice?.additionalChargesMayApply;\n }),\n [selectedBillingPeriod, plansToShow],\n );\n\n const withUnitPriceRow = useMemo(\n () =>\n plansToShow.some((plan) => {\n return !!getPlanPrice(plan, selectedBillingPeriod, paywallLocale, locale, hasMonthlyPrice).unit;\n }),\n [selectedBillingPeriod, hasMonthlyPrice, locale, paywallLocale, plansToShow],\n );\n\n const withTiersRow = useMemo(() => {\n return (\n !isCustomerInCustomPlan &&\n plansToShow.some((plan) => {\n const tiers = getSelectedTier(plan, selectedBillingPeriod, currentSubscription, {});\n return Object.values(tiers).length > 0;\n })\n );\n }, [selectedBillingPeriod, currentSubscription, isCustomerInCustomPlan, plansToShow]);\n\n const withTrialLeftRow = plansToShow.some((plan) => {\n return plan.isCurrentCustomerPlan && plan.trialDaysLeft;\n });\n\n return (\n <PaywallContainer className=\"stigg-paywall-container\">\n <PaywallLayout className=\"stigg-paywall-layout\">\n <BillingPeriodPicker\n onBillingPeriodChanged={onBillingPeriodChanged}\n selectedBillingPeriod={selectedBillingPeriod}\n availableBillingPeriods={availableBillingPeriods}\n discountRate={discountRate}\n />\n\n <PaywallPlansContainer className=\"stigg-paywall-plans-layout\">\n {plansToShow.map((plan) => (\n <PlanOffering\n withUnitPriceRow={withUnitPriceRow}\n withTiersRow={withTiersRow}\n withTrialLeftRow={withTrialLeftRow}\n key={plan.id}\n shouldShowDescriptionSection={shouldShowDescriptionSection}\n hasMonthlyPrice={hasMonthlyPrice}\n hasAnnuallyPrice={hasAnnuallyPrice}\n plan={plan}\n withStartingAtRow={withStartingAtRow}\n currentSubscription={currentSubscription}\n billingPeriod={selectedBillingPeriod}\n isHighlighted={plan.id === highlightedPlanId}\n isCustomerOnTrial={isCustomerOnTrial}\n onPlanSelected={(intentionType: SubscribeIntentionType, billableFeatures: BillableFeature[]) =>\n handleOnSubscribe(plan, intentionType, billableFeatures)\n }\n paywallLocale={paywallLocale}\n locale={locale}\n customer={customer}\n isCustomerInCustomPlan={isCustomerInCustomPlan}\n selectDefaultTierIndex={selectDefaultTierIndex}\n />\n ))}\n </PaywallPlansContainer>\n <PoweredByStigg\n source=\"paywall\"\n align=\"end\"\n style={{ marginTop: 16 }}\n showWatermark={stigg.isWidgetWatermarkEnabled}\n />\n </PaywallLayout>\n </PaywallContainer>\n );\n};\n","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nvar runtime = (function (exports) {\n \"use strict\";\n\n var Op = Object.prototype;\n var hasOwn = Op.hasOwnProperty;\n var undefined; // More compressible than void 0.\n var $Symbol = typeof Symbol === \"function\" ? Symbol : {};\n var iteratorSymbol = $Symbol.iterator || \"@@iterator\";\n var asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\";\n var toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n\n function define(obj, key, value) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n return obj[key];\n }\n try {\n // IE 8 has a broken Object.defineProperty that only works on DOM objects.\n define({}, \"\");\n } catch (err) {\n define = function(obj, key, value) {\n return obj[key] = value;\n };\n }\n\n function wrap(innerFn, outerFn, self, tryLocsList) {\n // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator.\n var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;\n var generator = Object.create(protoGenerator.prototype);\n var context = new Context(tryLocsList || []);\n\n // The ._invoke method unifies the implementations of the .next,\n // .throw, and .return methods.\n generator._invoke = makeInvokeMethod(innerFn, self, context);\n\n return generator;\n }\n exports.wrap = wrap;\n\n // Try/catch helper to minimize deoptimizations. Returns a completion\n // record like context.tryEntries[i].completion. This interface could\n // have been (and was previously) designed to take a closure to be\n // invoked without arguments, but in all the cases we care about we\n // already have an existing method we want to call, so there's no need\n // to create a new function object. We can even get away with assuming\n // the method takes exactly one argument, since that happens to be true\n // in every case, so we don't have to touch the arguments object. The\n // only additional allocation required is the completion record, which\n // has a stable shape and so hopefully should be cheap to allocate.\n function tryCatch(fn, obj, arg) {\n try {\n return { type: \"normal\", arg: fn.call(obj, arg) };\n } catch (err) {\n return { type: \"throw\", arg: err };\n }\n }\n\n var GenStateSuspendedStart = \"suspendedStart\";\n var GenStateSuspendedYield = \"suspendedYield\";\n var GenStateExecuting = \"executing\";\n var GenStateCompleted = \"completed\";\n\n // Returning this object from the innerFn has the same effect as\n // breaking out of the dispatch switch statement.\n var ContinueSentinel = {};\n\n // Dummy constructor functions that we use as the .constructor and\n // .constructor.prototype properties for functions that return Generator\n // objects. For full spec compliance, you may wish to configure your\n // minifier not to mangle the names of these two functions.\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n\n // This is a polyfill for %IteratorPrototype% for environments that\n // don't natively support it.\n var IteratorPrototype = {};\n define(IteratorPrototype, iteratorSymbol, function () {\n return this;\n });\n\n var getProto = Object.getPrototypeOf;\n var NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n if (NativeIteratorPrototype &&\n NativeIteratorPrototype !== Op &&\n hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {\n // This environment has a native %IteratorPrototype%; use it instead\n // of the polyfill.\n IteratorPrototype = NativeIteratorPrototype;\n }\n\n var Gp = GeneratorFunctionPrototype.prototype =\n Generator.prototype = Object.create(IteratorPrototype);\n GeneratorFunction.prototype = GeneratorFunctionPrototype;\n define(Gp, \"constructor\", GeneratorFunctionPrototype);\n define(GeneratorFunctionPrototype, \"constructor\", GeneratorFunction);\n GeneratorFunction.displayName = define(\n GeneratorFunctionPrototype,\n toStringTagSymbol,\n \"GeneratorFunction\"\n );\n\n // Helper for defining the .next, .throw, and .return methods of the\n // Iterator interface in terms of a single ._invoke method.\n function defineIteratorMethods(prototype) {\n [\"next\", \"throw\", \"return\"].forEach(function(method) {\n define(prototype, method, function(arg) {\n return this._invoke(method, arg);\n });\n });\n }\n\n exports.isGeneratorFunction = function(genFun) {\n var ctor = typeof genFun === \"function\" && genFun.constructor;\n return ctor\n ? ctor === GeneratorFunction ||\n // For the native GeneratorFunction constructor, the best we can\n // do is to check its .name property.\n (ctor.displayName || ctor.name) === \"GeneratorFunction\"\n : false;\n };\n\n exports.mark = function(genFun) {\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);\n } else {\n genFun.__proto__ = GeneratorFunctionPrototype;\n define(genFun, toStringTagSymbol, \"GeneratorFunction\");\n }\n genFun.prototype = Object.create(Gp);\n return genFun;\n };\n\n // Within the body of any async function, `await x` is transformed to\n // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test\n // `hasOwn.call(value, \"__await\")` to determine if the yielded value is\n // meant to be awaited.\n exports.awrap = function(arg) {\n return { __await: arg };\n };\n\n function AsyncIterator(generator, PromiseImpl) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n if (record.type === \"throw\") {\n reject(record.arg);\n } else {\n var result = record.arg;\n var value = result.value;\n if (value &&\n typeof value === \"object\" &&\n hasOwn.call(value, \"__await\")) {\n return PromiseImpl.resolve(value.__await).then(function(value) {\n invoke(\"next\", value, resolve, reject);\n }, function(err) {\n invoke(\"throw\", err, resolve, reject);\n });\n }\n\n return PromiseImpl.resolve(value).then(function(unwrapped) {\n // When a yielded Promise is resolved, its final value becomes\n // the .value of the Promise<{value,done}> result for the\n // current iteration.\n result.value = unwrapped;\n resolve(result);\n }, function(error) {\n // If a rejected Promise was yielded, throw the rejection back\n // into the async generator function so it can be handled there.\n return invoke(\"throw\", error, resolve, reject);\n });\n }\n }\n\n var previousPromise;\n\n function enqueue(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new PromiseImpl(function(resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n\n return previousPromise =\n // If enqueue has been called before, then we want to wait until\n // all previous Promises have been resolved before calling invoke,\n // so that results are always delivered in the correct order. If\n // enqueue has not been called before, then it is important to\n // call invoke immediately, without waiting on a callback to fire,\n // so that the async generator function has the opportunity to do\n // any necessary setup in a predictable way. This predictability\n // is why the Promise constructor synchronously invokes its\n // executor callback, and why async functions synchronously\n // execute code before the first await. Since we implement simple\n // async functions in terms of async generators, it is especially\n // important to get this right, even though it requires care.\n previousPromise ? previousPromise.then(\n callInvokeWithMethodAndArg,\n // Avoid propagating failures to Promises returned by later\n // invocations of the iterator.\n callInvokeWithMethodAndArg\n ) : callInvokeWithMethodAndArg();\n }\n\n // Define the unified helper method that is used to implement .next,\n // .throw, and .return (see defineIteratorMethods).\n this._invoke = enqueue;\n }\n\n defineIteratorMethods(AsyncIterator.prototype);\n define(AsyncIterator.prototype, asyncIteratorSymbol, function () {\n return this;\n });\n exports.AsyncIterator = AsyncIterator;\n\n // Note that simple async functions are implemented on top of\n // AsyncIterator objects; they just return a Promise for the value of\n // the final result produced by the iterator.\n exports.async = function(innerFn, outerFn, self, tryLocsList, PromiseImpl) {\n if (PromiseImpl === void 0) PromiseImpl = Promise;\n\n var iter = new AsyncIterator(\n wrap(innerFn, outerFn, self, tryLocsList),\n PromiseImpl\n );\n\n return exports.isGeneratorFunction(outerFn)\n ? iter // If outerFn is a generator, return the full iterator.\n : iter.next().then(function(result) {\n return result.done ? result.value : iter.next();\n });\n };\n\n function makeInvokeMethod(innerFn, self, context) {\n var state = GenStateSuspendedStart;\n\n return function invoke(method, arg) {\n if (state === GenStateExecuting) {\n throw new Error(\"Generator is already running\");\n }\n\n if (state === GenStateCompleted) {\n if (method === \"throw\") {\n throw arg;\n }\n\n // Be forgiving, per 25.3.3.3.3 of the spec:\n // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume\n return doneResult();\n }\n\n context.method = method;\n context.arg = arg;\n\n while (true) {\n var delegate = context.delegate;\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n\n if (context.method === \"next\") {\n // Setting context._sent for legacy support of Babel's\n // function.sent implementation.\n context.sent = context._sent = context.arg;\n\n } else if (context.method === \"throw\") {\n if (state === GenStateSuspendedStart) {\n state = GenStateCompleted;\n throw context.arg;\n }\n\n context.dispatchException(context.arg);\n\n } else if (context.method === \"return\") {\n context.abrupt(\"return\", context.arg);\n }\n\n state = GenStateExecuting;\n\n var record = tryCatch(innerFn, self, context);\n if (record.type === \"normal\") {\n // If an exception is thrown from innerFn, we leave state ===\n // GenStateExecuting and loop back for another invocation.\n state = context.done\n ? GenStateCompleted\n : GenStateSuspendedYield;\n\n if (record.arg === ContinueSentinel) {\n continue;\n }\n\n return {\n value: record.arg,\n done: context.done\n };\n\n } else if (record.type === \"throw\") {\n state = GenStateCompleted;\n // Dispatch the exception by looping back around to the\n // context.dispatchException(context.arg) call above.\n context.method = \"throw\";\n context.arg = record.arg;\n }\n }\n };\n }\n\n // Call delegate.iterator[context.method](context.arg) and handle the\n // result, either by returning a { value, done } result from the\n // delegate iterator, or by modifying context.method and context.arg,\n // setting context.delegate to null, and returning the ContinueSentinel.\n function maybeInvokeDelegate(delegate, context) {\n var method = delegate.iterator[context.method];\n if (method === undefined) {\n // A .throw or .return when the delegate iterator has no .throw\n // method always terminates the yield* loop.\n context.delegate = null;\n\n if (context.method === \"throw\") {\n // Note: [\"return\"] must be used for ES3 parsing compatibility.\n if (delegate.iterator[\"return\"]) {\n // If the delegate iterator has a return method, give it a\n // chance to clean up.\n context.method = \"return\";\n context.arg = undefined;\n maybeInvokeDelegate(delegate, context);\n\n if (context.method === \"throw\") {\n // If maybeInvokeDelegate(context) changed context.method from\n // \"return\" to \"throw\", let that override the TypeError below.\n return ContinueSentinel;\n }\n }\n\n context.method = \"throw\";\n context.arg = new TypeError(\n \"The iterator does not provide a 'throw' method\");\n }\n\n return ContinueSentinel;\n }\n\n var record = tryCatch(method, delegate.iterator, context.arg);\n\n if (record.type === \"throw\") {\n context.method = \"throw\";\n context.arg = record.arg;\n context.delegate = null;\n return ContinueSentinel;\n }\n\n var info = record.arg;\n\n if (! info) {\n context.method = \"throw\";\n context.arg = new TypeError(\"iterator result is not an object\");\n context.delegate = null;\n return ContinueSentinel;\n }\n\n if (info.done) {\n // Assign the result of the finished delegate to the temporary\n // variable specified by delegate.resultName (see delegateYield).\n context[delegate.resultName] = info.value;\n\n // Resume execution at the desired location (see delegateYield).\n context.next = delegate.nextLoc;\n\n // If context.method was \"throw\" but the delegate handled the\n // exception, let the outer generator proceed normally. If\n // context.method was \"next\", forget context.arg since it has been\n // \"consumed\" by the delegate iterator. If context.method was\n // \"return\", allow the original .return call to continue in the\n // outer generator.\n if (context.method !== \"return\") {\n context.method = \"next\";\n context.arg = undefined;\n }\n\n } else {\n // Re-yield the result returned by the delegate method.\n return info;\n }\n\n // The delegate iterator is finished, so forget it and continue with\n // the outer generator.\n context.delegate = null;\n return ContinueSentinel;\n }\n\n // Define Generator.prototype.{next,throw,return} in terms of the\n // unified ._invoke helper method.\n defineIteratorMethods(Gp);\n\n define(Gp, toStringTagSymbol, \"Generator\");\n\n // A Generator should always return itself as the iterator object when the\n // @@iterator function is called on it. Some browsers' implementations of the\n // iterator prototype chain incorrectly implement this, causing the Generator\n // object to not be returned from this call. This ensures that doesn't happen.\n // See https://github.com/facebook/regenerator/issues/274 for more details.\n define(Gp, iteratorSymbol, function() {\n return this;\n });\n\n define(Gp, \"toString\", function() {\n return \"[object Generator]\";\n });\n\n function pushTryEntry(locs) {\n var entry = { tryLoc: locs[0] };\n\n if (1 in locs) {\n entry.catchLoc = locs[1];\n }\n\n if (2 in locs) {\n entry.finallyLoc = locs[2];\n entry.afterLoc = locs[3];\n }\n\n this.tryEntries.push(entry);\n }\n\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\";\n delete record.arg;\n entry.completion = record;\n }\n\n function Context(tryLocsList) {\n // The root entry object (effectively a try statement without a catch\n // or a finally block) gives us a place to store values thrown from\n // locations where there is no enclosing try statement.\n this.tryEntries = [{ tryLoc: \"root\" }];\n tryLocsList.forEach(pushTryEntry, this);\n this.reset(true);\n }\n\n exports.keys = function(object) {\n var keys = [];\n for (var key in object) {\n keys.push(key);\n }\n keys.reverse();\n\n // Rather than returning an object with a next method, we keep\n // things simple and return the next function itself.\n return function next() {\n while (keys.length) {\n var key = keys.pop();\n if (key in object) {\n next.value = key;\n next.done = false;\n return next;\n }\n }\n\n // To avoid creating an additional object, we just hang the .value\n // and .done properties off the next function object itself. This\n // also ensures that the minifier will not anonymize the function.\n next.done = true;\n return next;\n };\n };\n\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) {\n return iteratorMethod.call(iterable);\n }\n\n if (typeof iterable.next === \"function\") {\n return iterable;\n }\n\n if (!isNaN(iterable.length)) {\n var i = -1, next = function next() {\n while (++i < iterable.length) {\n if (hasOwn.call(iterable, i)) {\n next.value = iterable[i];\n next.done = false;\n return next;\n }\n }\n\n next.value = undefined;\n next.done = true;\n\n return next;\n };\n\n return next.next = next;\n }\n }\n\n // Return an iterator with no values.\n return { next: doneResult };\n }\n exports.values = values;\n\n function doneResult() {\n return { value: undefined, done: true };\n }\n\n Context.prototype = {\n constructor: Context,\n\n reset: function(skipTempReset) {\n this.prev = 0;\n this.next = 0;\n // Resetting context._sent for legacy support of Babel's\n // function.sent implementation.\n this.sent = this._sent = undefined;\n this.done = false;\n this.delegate = null;\n\n this.method = \"next\";\n this.arg = undefined;\n\n this.tryEntries.forEach(resetTryEntry);\n\n if (!skipTempReset) {\n for (var name in this) {\n // Not sure about the optimal order of these conditions:\n if (name.charAt(0) === \"t\" &&\n hasOwn.call(this, name) &&\n !isNaN(+name.slice(1))) {\n this[name] = undefined;\n }\n }\n }\n },\n\n stop: function() {\n this.done = true;\n\n var rootEntry = this.tryEntries[0];\n var rootRecord = rootEntry.completion;\n if (rootRecord.type === \"throw\") {\n throw rootRecord.arg;\n }\n\n return this.rval;\n },\n\n dispatchException: function(exception) {\n if (this.done) {\n throw exception;\n }\n\n var context = this;\n function handle(loc, caught) {\n record.type = \"throw\";\n record.arg = exception;\n context.next = loc;\n\n if (caught) {\n // If the dispatched exception was caught by a catch block,\n // then let that catch block handle the exception normally.\n context.method = \"next\";\n context.arg = undefined;\n }\n\n return !! caught;\n }\n\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n var record = entry.completion;\n\n if (entry.tryLoc === \"root\") {\n // Exception thrown outside of any try block that could handle\n // it, so set the completion value of the entire function to\n // throw the exception.\n return handle(\"end\");\n }\n\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\");\n var hasFinally = hasOwn.call(entry, \"finallyLoc\");\n\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n } else if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n }\n\n } else if (hasFinally) {\n if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else {\n throw new Error(\"try statement without catch or finally\");\n }\n }\n }\n },\n\n abrupt: function(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc <= this.prev &&\n hasOwn.call(entry, \"finallyLoc\") &&\n this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n\n if (finallyEntry &&\n (type === \"break\" ||\n type === \"continue\") &&\n finallyEntry.tryLoc <= arg &&\n arg <= finallyEntry.finallyLoc) {\n // Ignore the finally entry if control is not jumping to a\n // location outside the try/catch block.\n finallyEntry = null;\n }\n\n var record = finallyEntry ? finallyEntry.completion : {};\n record.type = type;\n record.arg = arg;\n\n if (finallyEntry) {\n this.method = \"next\";\n this.next = finallyEntry.finallyLoc;\n return ContinueSentinel;\n }\n\n return this.complete(record);\n },\n\n complete: function(record, afterLoc) {\n if (record.type === \"throw\") {\n throw record.arg;\n }\n\n if (record.type === \"break\" ||\n record.type === \"continue\") {\n this.next = record.arg;\n } else if (record.type === \"return\") {\n this.rval = this.arg = record.arg;\n this.method = \"return\";\n this.next = \"end\";\n } else if (record.type === \"normal\" && afterLoc) {\n this.next = afterLoc;\n }\n\n return ContinueSentinel;\n },\n\n finish: function(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) {\n this.complete(entry.completion, entry.afterLoc);\n resetTryEntry(entry);\n return ContinueSentinel;\n }\n }\n },\n\n \"catch\": function(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n if (record.type === \"throw\") {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n return thrown;\n }\n }\n\n // The context.catch method must only be called with a location\n // argument that corresponds to a known catch block.\n throw new Error(\"illegal catch attempt\");\n },\n\n delegateYield: function(iterable, resultName, nextLoc) {\n this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n };\n\n if (this.method === \"next\") {\n // Deliberately forget the last sent value so that we don't\n // accidentally pass it on to the delegate.\n this.arg = undefined;\n }\n\n return ContinueSentinel;\n }\n };\n\n // Regardless of whether this script is executing as a CommonJS module\n // or not, return the runtime object so that we can declare the variable\n // regeneratorRuntime in the outer scope, which allows this module to be\n // injected easily by `bin/regenerator --include-runtime script.js`.\n return exports;\n\n}(\n // If this script is executing as a CommonJS module, use module.exports\n // as the regeneratorRuntime namespace. Otherwise create a new empty\n // object. Either way, the resulting object will be used to initialize\n // the regeneratorRuntime variable at the top of this file.\n typeof module === \"object\" ? module.exports : {}\n));\n\ntry {\n regeneratorRuntime = runtime;\n} catch (accidentalStrictMode) {\n // This module should not be running in strict mode, so the above\n // assignment should always work unless something is misconfigured. Just\n // in case runtime.js accidentally runs in strict mode, in modern engines\n // we can explicitly access globalThis. In older engines we can escape\n // strict mode using a global Function call. This could conceivably fail\n // if a Content Security Policy forbids using Function, but in that case\n // the proper solution is to fix the accidental strict mode problem. If\n // you've misconfigured your bundler to force strict mode and applied a\n // CSP to forbid Function, and you're not willing to fix either of those\n // problems, please detail your unique predicament in a GitHub issue.\n if (typeof globalThis === \"object\") {\n globalThis.regeneratorRuntime = runtime;\n } else {\n Function(\"r\", \"regeneratorRuntime = r\")(runtime);\n }\n}\n","export interface Logger {\n log: (message: string, object?: Record<string, string>) => void;\n debug: (message: string, object?: Record<string, string>) => void;\n error: (message: string, error?: Error, ...params: Record<string, string>[]) => void;\n}\n\nexport class LoggerService implements Logger {\n error(message: string, error?: Error, ...params: Record<string, string>[]): void {\n console.error(message, error || {}, params);\n }\n\n log(message: string, object?: Record<string, string>): void {\n console.log(message, object || {});\n }\n\n debug(message: string, object?: Record<string, string> | undefined): void {\n console.debug(message, object || {});\n }\n}\n\n// Export a singleton logger service, in the future we might allow to user to configure external logger\nexport default new LoggerService();\n","import React, { useEffect, useState, PropsWithChildren, useContext, useRef } from 'react';\nimport * as StiggJs from '@stigg/js-client-sdk';\nimport Stigg, { EntitlementsFallback } from '@stigg/js-client-sdk';\nimport { SkeletonTheme } from 'react-loading-skeleton';\nimport { CustomizedTheme } from '../theme/Theme';\nimport logger from '../services/logger';\n\nexport interface StiggContextValue {\n stigg: StiggJs.StiggClient;\n isInitialized: boolean;\n locale: string;\n updatedAt?: Date;\n customerPortalUpdatedAt?: Date;\n refreshData: () => Promise<void>;\n theme?: CustomizedTheme;\n}\n\nexport const StiggContext = React.createContext<StiggContextValue | null>(null);\nStiggContext.displayName = 'StiggContext';\n\nexport type StiggProviderProps = {\n apiKey: string;\n baseUri?: string;\n baseEdgeUri?: string;\n enableEdge?: boolean;\n entitlementsFallback?: EntitlementsFallback;\n customerId?: string;\n customerToken?: string;\n resourceId?: string;\n theme?: CustomizedTheme;\n locale?: string;\n useEntitlementPolling?: boolean;\n entitlementPollingInterval?: number;\n stiggClient?: StiggJs.StiggClient;\n};\n\nconst DEFAULT_LOCALE = 'en-US';\n\nexport const StiggProvider: React.FC<PropsWithChildren<StiggProviderProps>> = ({\n apiKey,\n baseUri,\n baseEdgeUri,\n enableEdge,\n customerId,\n customerToken,\n resourceId,\n theme,\n locale,\n useEntitlementPolling,\n entitlementPollingInterval,\n entitlementsFallback,\n stiggClient,\n children,\n}) => {\n const currentApiKey = useRef(apiKey);\n const initializeParams = {\n apiKey,\n customerId,\n customerToken,\n resourceId,\n baseUri,\n baseEdgeUri,\n enableEdge,\n entitlementsFallback,\n useEntitlementPolling,\n entitlementPollingInterval,\n };\n const [ctx, setContext] = useState<StiggContextValue>(() => ({\n stigg:\n stiggClient ??\n Stigg.initialize({\n ...initializeParams,\n lazyLoad: true,\n }),\n locale: locale || DEFAULT_LOCALE,\n isInitialized: false,\n theme,\n refreshData: async () => {\n setContext((ctx) => ({ ...ctx, customerPortalUpdatedAt: new Date() }));\n await ctx.stigg.refresh();\n },\n }));\n\n useEffect(() => {\n let isMounted = true;\n\n const safeSetContext = (setContextFunc: React.SetStateAction<StiggContextValue>) => {\n if (isMounted) {\n setContext(setContextFunc);\n }\n };\n\n const onEntitlementsUpdated = () => safeSetContext((ctx) => ({ ...ctx, updatedAt: new Date() }));\n\n const setStiggInstance = (stigg: StiggJs.StiggClient) =>\n safeSetContext((ctx) => {\n if (ctx.stigg) {\n ctx.stigg.removeListener('entitlementsUpdated', onEntitlementsUpdated);\n }\n stigg.addListener('entitlementsUpdated', onEntitlementsUpdated);\n\n return {\n ...ctx,\n stigg,\n isInitialized: true,\n updatedAt: new Date(),\n };\n });\n\n const loadStiggClient = async () => {\n let stiggClient = ctx.stigg;\n if (apiKey !== currentApiKey.current) {\n logger.log('Updating stigg client', { apiKey });\n currentApiKey.current = apiKey;\n stiggClient = Stigg.initialize({\n ...initializeParams,\n });\n safeSetContext((ctx) => ({ ...ctx, isInitialized: false, updatedAt: new Date() }));\n }\n await stiggClient.waitForInitialization();\n setStiggInstance(stiggClient);\n };\n\n void loadStiggClient();\n\n return () => {\n isMounted = false;\n ctx.stigg.removeListener('entitlementsUpdated', onEntitlementsUpdated);\n ctx.stigg.clearCustomer();\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [apiKey]);\n\n useEffect(() => {\n const stiggClient = ctx.stigg;\n if (customerId) {\n void stiggClient.setCustomerId(customerId, customerToken, resourceId);\n } else {\n stiggClient.clearCustomer();\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [customerId, customerToken, resourceId]);\n\n useEffect(() => {\n setContext((ctx) => ({ ...ctx, theme }));\n }, [theme]);\n\n return (\n <StiggContext.Provider value={ctx}>\n <SkeletonTheme baseColor=\"#F5F6F9\" highlightColor=\"#e5e6ea\">\n {children}\n </SkeletonTheme>\n </StiggContext.Provider>\n );\n};\n\nexport const useStiggContext = (): StiggContextValue => {\n const ctx = useContext(StiggContext);\n if (!ctx) {\n throw new Error('Could not find Stigg context; You need to wrap your app in an <StiggProvider> component.');\n }\n return ctx;\n};\n","import { BillingPeriod, Plan, Subscription, SubscriptionStatus } from '@stigg/js-client-sdk';\nimport { countBy, uniq } from 'lodash';\n\nexport function computeBillingPeriods(\n plans: Plan[],\n activeSubscriptions?: Subscription[] | null,\n preferredBillingPeriod?: BillingPeriod,\n): { defaultBillingPeriod: BillingPeriod; availableBillingPeriods: BillingPeriod[] } {\n const billingPeriods = plans.flatMap((x) => x.pricePoints).map((x) => x.billingPeriod);\n const counts = countBy(billingPeriods);\n\n const availableBillingPeriods = uniq(billingPeriods);\n let defaultBillingPeriod: BillingPeriod | undefined;\n\n if (preferredBillingPeriod && availableBillingPeriods.includes(preferredBillingPeriod)) {\n defaultBillingPeriod = preferredBillingPeriod;\n } else if (activeSubscriptions) {\n const activeSubscription = activeSubscriptions.find((x) => x.status === SubscriptionStatus.Active);\n\n if (activeSubscription && activeSubscription.prices.length > 0) {\n defaultBillingPeriod = activeSubscription?.prices[0].billingPeriod;\n }\n }\n\n if (!defaultBillingPeriod) {\n defaultBillingPeriod =\n (counts[BillingPeriod.Monthly] || 0) > (counts[BillingPeriod.Annually] || 0)\n ? BillingPeriod.Monthly\n : BillingPeriod.Annually;\n }\n\n return { defaultBillingPeriod, availableBillingPeriods };\n}\n","import moment from 'moment';\n\nexport function calculateTrialDaysLeft(trialEndDate: Date) {\n return moment.utc(trialEndDate).diff(moment.utc(), 'days', false) + 1;\n}\n","import { FontWeight, TypographyConfiguration } from '@stigg/js-client-sdk';\n\nexport const defaultCheckoutTypography: TypographyConfiguration = {\n h1: {\n fontSize: 24,\n fontWeight: FontWeight.Bold,\n },\n h2: {\n fontSize: 16,\n fontWeight: FontWeight.Normal,\n },\n h3: {\n fontSize: 16,\n fontWeight: FontWeight.Normal,\n },\n body: {\n fontSize: 14,\n fontWeight: FontWeight.Normal,\n },\n};\n","import {\n Alignment,\n CheckoutConfiguration,\n CustomerPortalConfiguration,\n FontWeight as JSFontWeight,\n PaywallConfiguration,\n TypographyConfiguration,\n} from '@stigg/js-client-sdk';\nimport { CustomizedTheme } from '../../theme/Theme';\nimport { HorizontalAlignment, FontWeight } from '../../theme/types';\nimport { defaultCheckoutTypography } from '../checkout/configurations/typography';\n\nfunction addCssUnits(value?: number | null, unit = 'px') {\n if (!value) {\n return undefined;\n }\n return `${value}${unit}`;\n}\n\nfunction mapFontWeight(defaultValue: FontWeight, fontWeight?: JSFontWeight | null): FontWeight {\n if (!fontWeight) {\n return defaultValue;\n }\n\n switch (fontWeight) {\n case JSFontWeight.Normal:\n return 'normal';\n case JSFontWeight.Bold:\n return 'bold';\n default:\n return 'normal';\n }\n}\n\nexport function mapTypography(\n typography?: TypographyConfiguration | null,\n defaultTypography?: TypographyConfiguration | null,\n): CustomizedTheme['typography'] {\n return {\n fontFamilyUrl: typography?.fontFamily || undefined,\n h1: {\n fontSize: addCssUnits(typography?.h1?.fontSize || defaultTypography?.h1?.fontSize),\n fontWeight: mapFontWeight('bold', typography?.h1?.fontWeight || defaultTypography?.h1?.fontWeight),\n },\n h2: {\n fontSize: addCssUnits(typography?.h2?.fontSize || defaultTypography?.h2?.fontSize),\n fontWeight: mapFontWeight('normal', defaultTypography?.h2?.fontWeight),\n },\n h3: {\n fontSize: addCssUnits(typography?.h3?.fontSize || defaultTypography?.h3?.fontSize),\n fontWeight: mapFontWeight('normal', typography?.h3?.fontWeight || defaultTypography?.h3?.fontWeight),\n },\n body: {\n fontSize: addCssUnits(typography?.body?.fontSize || defaultTypography?.body?.fontSize),\n fontWeight: mapFontWeight('normal', typography?.body?.fontWeight || defaultTypography?.body?.fontWeight),\n },\n };\n}\n\nfunction mapAlignment(alignment?: Alignment | null): HorizontalAlignment | undefined {\n if (!alignment) {\n return undefined;\n }\n\n switch (alignment) {\n case Alignment.Left:\n return 'left';\n case Alignment.Center:\n return 'center';\n case Alignment.Right:\n return 'right';\n default: {\n return undefined;\n }\n }\n}\n\nexport function mapCustomerPortalConfiguration(configuration: CustomerPortalConfiguration): CustomizedTheme {\n const { palette, typography } = configuration;\n return {\n palette: {\n primary: palette?.primary || undefined,\n backgroundPaper: palette?.paywallBackgroundColor || undefined,\n outlinedBorder: palette?.borderColor || undefined,\n backgroundHighlight: palette?.currentPlanBackground || undefined,\n text: {\n primary: palette?.textColor || undefined,\n },\n },\n typography: mapTypography(typography),\n };\n}\n\nexport function mapPaywallConfiguration(paywallConfiguration: PaywallConfiguration): CustomizedTheme {\n const { palette, layout, customCss, typography } = paywallConfiguration;\n return {\n customCss: customCss || undefined,\n palette: {\n primary: palette?.primary || undefined,\n backgroundPaper: palette?.backgroundColor || undefined,\n outlinedBorder: palette?.borderColor || undefined,\n backgroundHighlight: palette?.currentPlanBackground || undefined,\n text: {\n primary: palette?.textColor || undefined,\n },\n },\n typography: mapTypography(typography),\n layout: {\n ctaAlignment: mapAlignment(layout?.alignment),\n headerAlignment: mapAlignment(layout?.alignment),\n descriptionAlignment: mapAlignment(layout?.alignment),\n planMaxWidth: addCssUnits(layout?.planWidth),\n planMinWidth: addCssUnits(layout?.planWidth),\n planMargin: addCssUnits(layout?.planMargin),\n planPadding: addCssUnits(layout?.planPadding),\n },\n };\n}\n\nexport function mapCheckoutConfiguration(configuration: CheckoutConfiguration): CustomizedTheme {\n const { palette, typography } = configuration;\n return {\n palette: {\n primary: palette?.primary || undefined,\n backgroundPaper: palette?.backgroundColor || undefined,\n outlinedBorder: palette?.borderColor || undefined,\n text: {\n primary: palette?.textColor || undefined,\n },\n backgroundHighlight: palette?.summaryBackgroundColor || undefined,\n },\n typography: mapTypography(typography, defaultCheckoutTypography),\n };\n}\n","import {\n BillingPeriod,\n SubscriptionStatus,\n Paywall,\n Plan,\n Subscription,\n SubscriptionScheduleType,\n} from '@stigg/js-client-sdk';\nimport isNil from 'lodash/isNil';\nimport sortBy from 'lodash/sortBy';\nimport { PaywallPlan } from '../types';\nimport { calculateTrialDaysLeft } from './calculateTrialDaysLeft';\nimport { BillingPeriodChangeVariables, DeepPartial, DowngradeChangeVariables } from '../../../types';\nimport { StiggTheme } from '../../../theme/types';\nimport { mapPaywallConfiguration } from '../../common/mapExternalTheme';\n\nfunction getCustomerSubscriptionDetails(activeSubscriptions?: Subscription[] | null) {\n let isCustomerOnTrial = true;\n let currentSubscription: Subscription | null =\n activeSubscriptions?.find((s) => s.status === SubscriptionStatus.InTrial) || null;\n let currentPlan = currentSubscription?.plan;\n const trialDaysLeft = currentSubscription?.trialEndDate\n ? calculateTrialDaysLeft(currentSubscription.trialEndDate)\n : undefined;\n if (!currentPlan) {\n isCustomerOnTrial = false;\n currentSubscription = activeSubscriptions?.find((s) => s.status === SubscriptionStatus.Active) || null;\n currentPlan = currentSubscription?.plan;\n }\n\n return {\n currentSubscription,\n currentPlan,\n isCustomerOnTrial,\n trialDaysLeft,\n };\n}\n\ntype PaywallData = {\n currentPlan?: Plan;\n currentSubscription: Subscription | null;\n isCustomerOnTrial: boolean;\n plans: PaywallPlan[];\n paywallConfiguration?: DeepPartial<StiggTheme>;\n};\n\nexport function mapPaywallData(paywall: Paywall | null, showOnlyEligiblePlans?: boolean): PaywallData {\n const { plans, currency, configuration, customer, activeSubscriptions, paywallCalculatedPricePoints } = paywall || {};\n const { currentSubscription, currentPlan, isCustomerOnTrial, trialDaysLeft } =\n getCustomerSubscriptionDetails(activeSubscriptions);\n\n const scheduledUpdates = currentSubscription?.scheduledUpdates || [];\n const currentCustomerPlanBillingPeriod = currentSubscription?.price?.billingPeriod;\n const downgradeSchedule = scheduledUpdates.find(\n ({ subscriptionScheduleType }) => subscriptionScheduleType === SubscriptionScheduleType.Downgrade,\n );\n const billingChangedSchedule = scheduledUpdates.find(\n ({ subscriptionScheduleType }) => subscriptionScheduleType === SubscriptionScheduleType.BillingPeriod,\n );\n\n let paywallPlans: PaywallPlan[] = sortBy(plans, (plan) => plan.order).map((plan) => {\n const eligibleForProductTrial = customer?.eligibleForTrial?.find(\n (productTrial) => productTrial.productId === plan.product.id,\n );\n const isCurrentCustomerPlan = plan.id === currentPlan?.id;\n\n const isNextPlan = (currentBillingPeriod: BillingPeriod) => {\n const downgradeVariables = downgradeSchedule?.scheduleVariables as DowngradeChangeVariables;\n const billingChangedVariables = billingChangedSchedule?.scheduleVariables as BillingPeriodChangeVariables;\n const isPlanHasBillingPeriodPrice = plan.pricePoints.some(\n (price) => price.billingPeriod === currentBillingPeriod,\n );\n\n return downgradeSchedule\n ? downgradeSchedule.targetPackage?.refId === plan.id &&\n (!isPlanHasBillingPeriodPrice || downgradeVariables.billingPeriod === currentBillingPeriod)\n : billingChangedSchedule && isCurrentCustomerPlan\n ? billingChangedVariables.billingPeriod === currentBillingPeriod\n : false;\n };\n\n return {\n ...plan,\n paywallCalculatedPricePoints: paywallCalculatedPricePoints?.filter((pricePoint) => pricePoint.planId === plan.id),\n isTriable: !isNil(plan.defaultTrialConfig) && (!eligibleForProductTrial || eligibleForProductTrial.eligible),\n isCurrentCustomerPlan,\n currentCustomerPlanBillingPeriod,\n isUpcomingPlan: false,\n trialDaysLeft,\n isNextPlan,\n paywallCurrency: currency,\n scheduledUpdate: downgradeSchedule || billingChangedSchedule,\n };\n });\n if (plans && currentPlan) {\n const currentPlanOrder = currentPlan && plans?.find((x) => x.id === currentPlan?.id)?.order;\n if (!isNil(currentPlanOrder)) {\n paywallPlans = paywallPlans.map<PaywallPlan>((plan) => ({\n ...plan,\n isLowerThanCurrentPlan: currentPlanOrder > plan.order,\n }));\n if (showOnlyEligiblePlans) {\n paywallPlans = paywallPlans.filter((plan) => plan.order >= currentPlanOrder);\n }\n }\n }\n const paywallConfiguration = configuration ? mapPaywallConfiguration(configuration) : undefined;\n\n return {\n currentPlan,\n currentSubscription,\n isCustomerOnTrial,\n plans: paywallPlans,\n paywallConfiguration,\n };\n}\n","import { BillingPeriod, Paywall } from '@stigg/js-client-sdk';\nimport { useEffect, useState } from 'react';\nimport logger from '../../../services/logger';\nimport { useStiggContext } from '../../StiggProvider';\nimport { PaywallData } from '../types';\nimport { computeBillingPeriods } from '../utils/computeDefaultBillingPeriod';\nimport { mapPaywallData } from '../utils/mapPaywallData';\n\ntype UseLoadPaywallDataProps = {\n productId?: string;\n resourceId?: string;\n showOnlyEligiblePlans?: boolean;\n billingCountryCode?: string;\n preferredBillingPeriod?: BillingPeriod;\n};\n\nexport function useLoadPaywallData({\n productId,\n resourceId,\n showOnlyEligiblePlans,\n billingCountryCode,\n preferredBillingPeriod,\n}: UseLoadPaywallDataProps): PaywallData {\n const { stigg, locale } = useStiggContext();\n const [selectedBillingPeriod, setSelectedBillingPeriod] = useState(BillingPeriod.Annually);\n const [availableBillingPeriods, setAvailableBillingPeriods] = useState<BillingPeriod[]>([]);\n const [paywall, setPaywall] = useState<Paywall | null>(null);\n const [isLoading, setIsLoading] = useState<boolean>(true);\n\n useEffect(() => {\n const loadPaywall = async () => {\n try {\n setIsLoading(true);\n\n await stigg.waitForInitialization();\n const paywallResult = await stigg.getPaywall({\n productId,\n resourceId,\n billingCountryCode,\n });\n const { availableBillingPeriods, defaultBillingPeriod } = computeBillingPeriods(\n paywallResult.plans,\n paywallResult.activeSubscriptions,\n preferredBillingPeriod,\n );\n\n setPaywall(paywallResult);\n setAvailableBillingPeriods(availableBillingPeriods);\n setSelectedBillingPeriod(defaultBillingPeriod);\n } catch (err) {\n logger.error(`Failed to load paywall ${(err as any)?.message}`, err as any);\n } finally {\n setIsLoading(false);\n }\n };\n\n void loadPaywall();\n }, [stigg, productId, stigg.isCustomerLoaded, billingCountryCode, resourceId, preferredBillingPeriod]);\n\n const paywallData = mapPaywallData(paywall, showOnlyEligiblePlans);\n\n return {\n customer: paywall?.customer || null,\n isLoading,\n selectedBillingPeriod,\n setSelectedBillingPeriod,\n availableBillingPeriods,\n locale,\n configuration: paywallData.paywallConfiguration,\n ...paywallData,\n };\n}\n","import {\n BillingPeriod,\n PaywallCalculatedPricePoint,\n PaywallCurrency,\n Plan,\n Price,\n PriceTierFragment,\n} from '@stigg/js-client-sdk';\nimport merge from 'lodash/merge';\nimport { DeepPartial } from '../../types';\nimport { PlanPriceText } from '../utils/getPlanPrice';\nimport { PaywallPlan } from './types';\n\nexport { PlanPriceText } from '../utils/getPlanPrice';\n\nexport type CurrentPlanParams = {\n plan: Plan;\n selectedBillingPeriod: BillingPeriod;\n};\n\nexport type PaywallLocalization = {\n highlightChip: string;\n entitlementsTitle?: (plan: PaywallPlan) => string;\n planCTAButton: {\n upgrade: string | ((plan: PaywallPlan) => string);\n downgrade: string | ((plan: PaywallPlan) => string);\n startTrial: (plan: PaywallPlan) => string;\n custom: ((data: CurrentPlanParams) => string) | string;\n currentPlan: string;\n startNew: string;\n switchToBillingPeriod: (billingPeriod: BillingPeriod) => string;\n cancelScheduledUpdate: string;\n };\n price: {\n startingAtCaption: string;\n billingPeriod?: (billingPeriod: BillingPeriod) => string;\n pricePeriod: (billingPeriod: BillingPeriod) => string;\n custom: ((data: CurrentPlanParams) => string) | string;\n priceNotSet: string;\n free: PlanPriceText | ((currency?: PaywallCurrency) => PlanPriceText);\n paid?: (priceData: {\n planPrices: Price[];\n paywallCalculatedPrice?: PaywallCalculatedPricePoint;\n plan: Plan;\n selectedBillingPeriod: BillingPeriod;\n selectedTier?: PriceTierFragment;\n }) => PlanPriceText;\n };\n};\n\nexport function getResolvedPaywallLocalize(localizeOverride?: DeepPartial<PaywallLocalization>) {\n const paywallDefaultLocalization: PaywallLocalization = {\n highlightChip: 'Recommended',\n planCTAButton: {\n upgrade: 'Upgrade',\n downgrade: 'Downgrade',\n startTrial: (plan: PaywallPlan) => `Start ${plan.defaultTrialConfig?.duration} day trial`,\n custom: 'Contact us',\n currentPlan: 'Current plan',\n startNew: 'Get started',\n switchToBillingPeriod: (billingPeriod) => {\n return billingPeriod === BillingPeriod.Monthly ? 'Switch to monthly billing' : 'Switch to annual billing';\n },\n cancelScheduledUpdate: 'Cancel',\n },\n price: {\n startingAtCaption: 'Starts at',\n pricePeriod: (billingPeriod: BillingPeriod) => (billingPeriod === BillingPeriod.Monthly ? '/ month' : '/ year'),\n free: (currency) => ({\n price: `${currency?.symbol}0`,\n }),\n custom: 'Custom',\n priceNotSet: 'Price not set',\n },\n };\n return merge(paywallDefaultLocalization, localizeOverride);\n}\n","import React from 'react';\nimport styled from '@emotion/styled/macro';\nimport Skeleton from 'react-loading-skeleton';\nimport CheckUrl from '../../assets/check-stigg.svg';\n\nconst SkeletonContainer = styled.div`\n display: flex;\n flex-direction: column;\n align-items: center;\n`;\n\nconst EntitlementCheckIcon = styled(CheckUrl)`\n margin-right: 16px;\n`;\n\nconst PlanOfferingSkeleton = styled.div`\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n gap: 20px;\n border-radius: 10px;\n padding: ${({ theme }) => theme.stigg.layout.planPadding};\n background-color: ${({ theme }) => theme.stigg.palette.backgroundPaper};\n min-width: ${({ theme }) => theme.stigg.layout.planMinWidth};\n max-width: ${({ theme }) => theme.stigg.layout.planMaxWidth};\n min-height: 450px;\n border: ${({ theme }) => `1px solid ${theme.stigg.palette.outlinedBorder}`};\n`;\n\nconst PlansContainer = styled.div`\n display: flex;\n gap: ${({ theme }) => theme.stigg.layout.planMargin};\n flex-wrap: wrap;\n justify-content: center;\n`;\n\nconst EntitlementContainer = styled.div`\n display: flex;\n align-items: center;\n margin-bottom: 12px;\n`;\n\nconst FooterSkeletonLoader = styled.div`\n margin-top: auto;\n`;\n\nconst BillingPeriodLoader = styled.div`\n width: 150px;\n margin-bottom: ${({ theme }) => theme.stigg.layout.switchBottomSpacing};\n padding: 12px 12px;\n border-radius: 10px;\n background-color: white;\n border: ${({ theme }) => `1px solid ${theme.stigg.palette.outlinedBorder}`};\n`;\n\nfunction PlanOfferingLoader() {\n return (\n <PlanOfferingSkeleton>\n <Skeleton width={120} borderRadius={4} />\n <Skeleton circle width={40} height={40} />\n <Skeleton style={{ marginBottom: 33 }} width={120} borderRadius={4} />\n\n <EntitlementContainer>\n <EntitlementCheckIcon />\n <Skeleton width={120} borderRadius={4} />\n </EntitlementContainer>\n <EntitlementContainer>\n <EntitlementCheckIcon />\n <Skeleton width={120} borderRadius={4} />\n </EntitlementContainer>\n <EntitlementContainer>\n <EntitlementCheckIcon />\n <Skeleton width={120} borderRadius={4} />\n </EntitlementContainer>\n\n <FooterSkeletonLoader>\n <Skeleton height={50} borderRadius={4} />\n </FooterSkeletonLoader>\n </PlanOfferingSkeleton>\n );\n}\n\nexport function PaywallLoader() {\n return (\n <SkeletonContainer className=\"stigg-skeleton-loader-container\">\n <BillingPeriodLoader className=\"stigg-skeleton-loader-billing-period\">\n <Skeleton borderRadius={4} />\n </BillingPeriodLoader>\n\n <PlansContainer className=\"stigg-skeleton-loader-plans-container\">\n <PlanOfferingLoader />\n <PlanOfferingLoader />\n <PlanOfferingLoader />\n </PlansContainer>\n </SkeletonContainer>\n );\n}\n","import React from 'react';\nimport { Global, css } from '@emotion/react';\n\nexport const Fonts = ({ externalFontUrl }: { externalFontUrl?: string }) => {\n return (\n <Global\n styles={css`\n ${externalFontUrl &&\n `\n @font-face {\n font-family: 'custom-font';\n font-style: normal;\n font-weight: normal;\n src: local('custom-font'), url(${externalFontUrl}) format('woff');\n }\n `}\n\n /* latin-ext */\n @font-face {\n font-family: 'DM Sans';\n font-style: normal;\n font-weight: 400;\n font-display: swap;\n src: url(https://fonts.gstatic.com/s/dmsans/v11/rP2Hp2ywxg089UriCZ2IHTWEBlwu8Q.woff2) format('woff2');\n unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F,\n U+A720-A7FF;\n }\n /* latin */\n @font-face {\n font-family: 'DM Sans';\n font-style: normal;\n font-weight: 400;\n font-display: swap;\n src: url(https://fonts.gstatic.com/s/dmsans/v11/rP2Hp2ywxg089UriCZOIHTWEBlw.woff2) format('woff2');\n unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074,\n U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;\n }\n /* latin-ext */\n @font-face {\n font-family: 'DM Sans';\n font-style: normal;\n font-weight: 500;\n font-display: swap;\n src: url(https://fonts.gstatic.com/s/dmsans/v11/rP2Cp2ywxg089UriAWCrCBamC3YU-CnE6Q.woff2) format('woff2');\n unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F,\n U+A720-A7FF;\n }\n /* latin */\n @font-face {\n font-family: 'DM Sans';\n font-style: normal;\n font-weight: 500;\n font-display: swap;\n src: url(https://fonts.gstatic.com/s/dmsans/v11/rP2Cp2ywxg089UriAWCrCBimC3YU-Ck.woff2) format('woff2');\n unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074,\n U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;\n }\n /* latin-ext */\n @font-face {\n font-family: 'DM Sans';\n font-style: normal;\n font-weight: 700;\n font-display: swap;\n src: url(https://fonts.gstatic.com/s/dmsans/v11/rP2Cp2ywxg089UriASitCBamC3YU-CnE6Q.woff2) format('woff2');\n unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F,\n U+A720-A7FF;\n }\n /* latin */\n @font-face {\n font-family: 'DM Sans';\n font-style: normal;\n font-weight: 700;\n font-display: swap;\n src: url(https://fonts.gstatic.com/s/dmsans/v11/rP2Cp2ywxg089UriASitCBimC3YU-Ck.woff2) format('woff2');\n unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074,\n U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;\n }\n `}\n />\n );\n};\n","import { merge } from 'lodash';\nimport React, { PropsWithChildren } from 'react';\nimport { ThemeProvider as StyledThemeProvider } from 'styled-components';\nimport { TypographyProps } from 'styled-typography';\nimport { css, ThemeProvider } from '@emotion/react';\nimport styled from '@emotion/styled/macro';\nimport { createTheme, ThemeProvider as MuiThemeProvider, THEME_ID } from '@mui/material/styles';\nimport { useStiggContext } from '../components/StiggProvider';\nimport { DeepPartial } from '../types';\nimport { Fonts } from './Fonts';\nimport { getResolvedTheme } from './getResolvedTheme';\nimport { StiggTheme } from './types';\n\nexport type CustomizedTheme = DeepPartial<StiggTheme>;\n\nconst CustomCssGlobal = styled.div<{ customCss?: string }>`\n ${({ customCss }) =>\n customCss &&\n css`\n ${customCss}\n `}\n`;\n\ntype SdkThemeProviderProps = {\n componentTheme?: CustomizedTheme;\n};\n\n/*\n This merge the theme from 3 places:\n 1. External theme that we got from the user in StiggProvider\n 2. Remote theme from api\n 3. Default theme\n*/\nexport function useStiggTheme(remoteThemeOverride?: CustomizedTheme): StiggTheme {\n const { theme: externalTheme } = useStiggContext();\n const mergedTheme = merge(remoteThemeOverride, externalTheme);\n const resolvedTheme = getResolvedTheme(mergedTheme);\n\n return resolvedTheme;\n}\n\nfunction createTypographyTheme(theme: StiggTheme): Partial<TypographyProps> {\n const { typography } = theme;\n const htmlFontSize = 16;\n const coef = Number(typography.body.fontSize.replace('px', '')) / 14;\n\n return {\n // Hack to fix theming issues\n // @ts-ignore\n pxToRem: (size) => `${(size / htmlFontSize) * coef}rem`,\n bodyFontFamily: typography.fontFamily,\n headingFontFamily: typography.fontFamily,\n fontSizes: [\n typography.h1.fontSize,\n typography.h2.fontSize,\n typography.h3.fontSize,\n typography.body.fontSize,\n '12px',\n '10px',\n ],\n };\n}\n\nconst createMuiPalette = (theme: StiggTheme) => {\n return {\n primary: {\n main: theme.palette.primary,\n },\n };\n};\n\nexport const SdkThemeProvider: React.FC<PropsWithChildren<SdkThemeProviderProps>> = ({ children, componentTheme }) => {\n const theme = useStiggTheme(componentTheme);\n const muiPalette = createMuiPalette(theme);\n const materialTheme = createTheme({ palette: muiPalette, stigg: theme });\n\n return (\n // We are using styled-components theme here only because we are using styled-typography\n // which depends on styled-components for the typography theming\n <MuiThemeProvider theme={{ [THEME_ID]: materialTheme }}>\n <ThemeProvider theme={{ stigg: theme }}>\n <CustomCssGlobal customCss={theme.customCss}>\n <Fonts externalFontUrl={theme.typography.fontFamilyUrl} />\n <StyledThemeProvider theme={{ typography: createTypographyTheme(theme) }}>{children}</StyledThemeProvider>\n </CustomCssGlobal>\n </ThemeProvider>\n </MuiThemeProvider>\n );\n};\n","import { CustomerPortal } from '@stigg/js-client-sdk';\nimport { useEffect, useState } from 'react';\nimport logger from '../../../services/logger';\nimport { useStiggContext } from '../../StiggProvider';\n\ntype UseCustomerPortalProps = {\n resourceId?: string;\n productId?: string;\n};\n\nexport function useCustomerPortal({ resourceId, productId }: UseCustomerPortalProps) {\n const { stigg, customerPortalUpdatedAt } = useStiggContext();\n const [isLoading, setIsLoading] = useState(false);\n const [customerPortal, setCustomerPortal] = useState<CustomerPortal | null>();\n\n useEffect(() => {\n const loadCustomerPortal = async () => {\n if (stigg.isCustomerLoaded) {\n try {\n setIsLoading(true);\n const customerPortalData = await stigg.getCustomerPortal({ resourceId, productId });\n setCustomerPortal(customerPortalData);\n } catch (err) {\n logger.error(`Failed to load customer portal ${(err as any)?.message}`, err as any);\n } finally {\n setIsLoading(false);\n }\n }\n };\n\n void loadCustomerPortal();\n }, [stigg, stigg.isCustomerLoaded, customerPortalUpdatedAt, resourceId, productId]);\n\n return {\n customerPortal,\n isLoading,\n };\n}\n","import merge from 'lodash/merge';\nimport { DeepPartial } from '../../types';\n\nexport type CustomerPortalLocalization = {\n manageSubscription: string;\n usageTabTitle: string;\n addonsTabTitle: string;\n promotionsTabTitle: string;\n promotionsSubtitle: string;\n contactSupportTitle: string;\n contactSupportLink: string;\n editBilling: string;\n invoicesTitle: string;\n viewInvoiceHistory: string;\n editPaymentDetails: string;\n paywallSectionTitle: string;\n cancelScheduledUpdatesButtonTitle: string;\n};\n\nexport function getResolvedCustomerPortalLocalize(\n localizeOverride?: DeepPartial<CustomerPortalLocalization>,\n): CustomerPortalLocalization {\n const customerPortalDefaultLocalization: CustomerPortalLocalization = {\n manageSubscription: 'Manage',\n usageTabTitle: 'Usage',\n addonsTabTitle: 'Add-ons',\n promotionsTabTitle: 'Promotions',\n promotionsSubtitle: 'You were granted access to additional functionality at no additional cost.',\n contactSupportTitle: 'Have questions about your subscription?',\n contactSupportLink: 'Contact support',\n editBilling: 'Edit billing details',\n invoicesTitle: 'Invoices',\n viewInvoiceHistory: 'View invoice history',\n editPaymentDetails: 'Edit',\n paywallSectionTitle: 'Plans',\n cancelScheduledUpdatesButtonTitle: 'Cancel',\n };\n return merge(customerPortalDefaultLocalization, localizeOverride);\n}\n","import { CustomerPortalConfiguration } from '@stigg/js-client-sdk';\nimport { StiggTheme } from '../../theme/types';\nimport { DeepPartial } from '../../types';\n\nexport type CustomerPortalTheme = {\n sectionTitleColor: string;\n planNameColor: string;\n backgroundColor: string;\n borderColor: string;\n listItemBackgroundColor: string;\n tabMaxHeight: string;\n iconsColor?: string;\n iconsBackgroundColor?: string;\n};\n\nexport function getResolvedCustomerPortalTheme(\n globalTheme: StiggTheme,\n themeOverride?: DeepPartial<CustomerPortalTheme>,\n remoteConfiguration?: CustomerPortalConfiguration | null,\n) {\n const customerPortalDefaultTheme: CustomerPortalTheme = {\n sectionTitleColor: themeOverride?.sectionTitleColor || globalTheme.palette.text.secondary,\n planNameColor: themeOverride?.planNameColor || globalTheme.palette.text.primary,\n backgroundColor: themeOverride?.backgroundColor || remoteConfiguration?.palette?.backgroundColor || 'white',\n borderColor: themeOverride?.borderColor || remoteConfiguration?.palette?.borderColor || 'rgba(0, 30, 108, 0.15)',\n listItemBackgroundColor: themeOverride?.backgroundColor || remoteConfiguration?.palette?.backgroundColor || 'white',\n tabMaxHeight: themeOverride?.tabMaxHeight || '380px',\n\n // add icons background color and apply to scheduled updates and customer support icons\n iconsColor: themeOverride?.iconsColor || remoteConfiguration?.palette?.iconsColor || undefined,\n iconsBackgroundColor: themeOverride?.iconsBackgroundColor,\n };\n\n return customerPortalDefaultTheme;\n}\n","import React, { useContext } from 'react';\nimport { CustomerPortal } from '@stigg/js-client-sdk';\nimport { useCustomerPortal } from './hooks/useCustomerPortal';\nimport { DeepPartial } from '../../types';\nimport { CustomerPortalLocalization, getResolvedCustomerPortalLocalize } from './customerPortalTextOverrides';\nimport { CustomerPortalTheme, getResolvedCustomerPortalTheme } from './customerPortalTheme';\nimport { SdkThemeProvider, useStiggTheme } from '../../theme/Theme';\nimport { useStiggContext } from '../..';\nimport { mapCustomerPortalConfiguration } from '../common/mapExternalTheme';\n\nexport interface CustomerPortalContextValue {\n customerPortal?: CustomerPortal | null;\n textOverrides: CustomerPortalLocalization;\n theme: CustomerPortalTheme;\n isLoading: boolean;\n resourceId?: string;\n}\n\nexport const CustomerPortalContext = React.createContext<CustomerPortalContextValue | null>(null);\nCustomerPortalContext.displayName = 'CustomerPortalContext';\n\nexport const useCustomerPortalContext = (): CustomerPortalContextValue => {\n const ctx = useContext(CustomerPortalContext);\n if (!ctx) {\n throw new Error(\n 'Could not find Customer portal context; You need to wrap your customer portal components in an <CustomerPortalProvider> component.',\n );\n }\n return ctx;\n};\n\nexport function useCheckContextExists<T>(contextType: React.Context<T>) {\n const ctx = useContext(contextType);\n return !!ctx;\n}\n\nexport function CustomerPortalProvider({\n children,\n textOverrides,\n theme,\n resourceId,\n productId,\n}: {\n children: React.ReactNode;\n textOverrides?: DeepPartial<CustomerPortalLocalization>;\n theme?: DeepPartial<CustomerPortalTheme>;\n resourceId?: string;\n productId?: string;\n}) {\n const { customerPortalUpdatedAt } = useStiggContext();\n const { customerPortal, isLoading } = useCustomerPortal({ resourceId, productId });\n const configuration = customerPortal?.configuration\n ? mapCustomerPortalConfiguration(customerPortal.configuration)\n : undefined;\n const globalTheme = useStiggTheme(configuration);\n const customerPortalTheme = getResolvedCustomerPortalTheme(globalTheme, theme, customerPortal?.configuration);\n const resolvedTextOverrides = getResolvedCustomerPortalLocalize(textOverrides);\n\n return (\n <SdkThemeProvider componentTheme={configuration}>\n <CustomerPortalContext.Provider\n key={customerPortalUpdatedAt?.toString()}\n value={{\n customerPortal,\n isLoading,\n textOverrides: resolvedTextOverrides,\n theme: customerPortalTheme,\n resourceId,\n }}>\n {children}\n </CustomerPortalContext.Provider>\n </SdkThemeProvider>\n );\n}\n","import React from 'react';\nimport { BillingPeriod } from '@stigg/js-client-sdk';\nimport { Paywall } from './Paywall';\nimport { useLoadPaywallData } from './hooks/useLoadPaywallData';\nimport { ShouldHidePlanFn, OnPlanSelectedCallbackFn, SelectDefaultTierIndexFn } from './types';\nimport { getResolvedPaywallLocalize, PaywallLocalization } from './paywallTextOverrides';\nimport { DeepPartial } from '../../types';\nimport { PaywallLoader } from './PaywallLoader';\nimport { SdkThemeProvider } from '../../theme/Theme';\nimport {\n CustomerPortalContext,\n useCheckContextExists,\n useCustomerPortalContext,\n} from '../customerPortal/CustomerPortalProvider';\n\nexport type PaywallContainerProps = {\n productId?: string;\n resourceId?: string;\n highlightedPlanId?: string;\n showOnlyEligiblePlans?: boolean;\n onPlanSelected: OnPlanSelectedCallbackFn;\n preferredBillingPeriod?: BillingPeriod;\n onBillingPeriodChange?: (billingPeriod: BillingPeriod) => void;\n textOverrides?: DeepPartial<PaywallLocalization>;\n billingCountryCode?: string;\n shouldHidePlan?: ShouldHidePlanFn;\n selectDefaultTierIndex?: SelectDefaultTierIndexFn;\n};\n\nexport const PaywallContainer = ({\n productId,\n resourceId,\n highlightedPlanId,\n showOnlyEligiblePlans,\n textOverrides,\n onPlanSelected,\n preferredBillingPeriod,\n onBillingPeriodChange,\n billingCountryCode,\n shouldHidePlan,\n selectDefaultTierIndex,\n}: PaywallContainerProps) => {\n const hasCustomerPortalContext = useCheckContextExists(CustomerPortalContext);\n let isCustomerPortalLoading = false;\n if (hasCustomerPortalContext) {\n // eslint-disable-next-line react-hooks/rules-of-hooks\n const { isLoading, resourceId: customerPortalResourceId } = useCustomerPortalContext();\n isCustomerPortalLoading = isLoading;\n resourceId = customerPortalResourceId;\n }\n const {\n plans,\n customer,\n currentSubscription,\n isCustomerOnTrial,\n isLoading,\n selectedBillingPeriod,\n setSelectedBillingPeriod,\n availableBillingPeriods,\n locale,\n configuration,\n } = useLoadPaywallData({\n productId,\n resourceId,\n showOnlyEligiblePlans,\n billingCountryCode,\n preferredBillingPeriod,\n });\n const paywallLocale = getResolvedPaywallLocalize(textOverrides);\n const handlePeriodChange = (billingPeriod: BillingPeriod) => {\n setSelectedBillingPeriod(billingPeriod);\n if (onBillingPeriodChange) {\n onBillingPeriodChange(billingPeriod);\n }\n };\n\n const component =\n !plans || isLoading || isCustomerPortalLoading ? (\n <PaywallLoader />\n ) : (\n <Paywall\n plans={plans}\n customer={customer}\n currentSubscription={currentSubscription}\n selectedBillingPeriod={selectedBillingPeriod}\n onBillingPeriodChanged={handlePeriodChange}\n availableBillingPeriods={availableBillingPeriods}\n highlightedPlanId={highlightedPlanId}\n isCustomerOnTrial={isCustomerOnTrial}\n onPlanSelected={onPlanSelected}\n paywallLocale={paywallLocale}\n locale={locale}\n shouldHidePlan={shouldHidePlan}\n selectDefaultTierIndex={selectDefaultTierIndex}\n />\n );\n\n // When rendering the paywall in the customer portal context we don't want to apply paywall theme\n if (hasCustomerPortalContext) {\n return component;\n }\n return <SdkThemeProvider componentTheme={configuration}>{component}</SdkThemeProvider>;\n};\n","import styled from '@emotion/styled/macro';\nimport MuiButton from '@mui/material/Button';\n\nexport const StyledButton = styled(MuiButton)`\n border-radius: 10px;\n padding: 8px 16px;\n text-transform: none;\n\n &,\n &:hover {\n border-color: ${({ theme }) => theme.stigg.palette.outlinedRestingBorder};\n }\n`;\n","<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M13.3333 2.5L17.5 6.66667L6.66667 17.5H2.5V13.3333L13.3333 2.5V2.5Z\" stroke=\"#327EEE\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n</svg>\n","import styled from '@emotion/styled/macro';\n\nexport const SectionHeader = styled.div<{ $disableMargin?: boolean }>`\n display: flex;\n align-items: center;\n justify-content: space-between;\n\n ${({ $disableMargin }) =>\n !$disableMargin &&\n `\n &:not(:last-child) {\n margin-bottom: 32px;\n }\n `};\n`;\n","import React from 'react';\nimport Skeleton from 'react-loading-skeleton';\nimport { Typography } from '../../common/Typography';\nimport { useCustomerPortalContext } from '../CustomerPortalProvider';\n\nexport type SectionTitleProps = {\n title: string;\n className: string;\n isLoading?: boolean;\n};\n\nexport function SectionTitle({ title, className, isLoading }: SectionTitleProps) {\n const { theme } = useCustomerPortalContext();\n\n if (isLoading) {\n return <Skeleton width={120} />;\n }\n\n return (\n <Typography className={className} overrideColor={theme.sectionTitleColor} variant=\"h3\" bold>\n {title}\n </Typography>\n );\n}\n","import { CustomerPortalEntitlement, CustomerPortalSubscription } from '@stigg/js-client-sdk';\nimport { FeatureFragment } from '@stigg/api-client-js/src/generated/sdk';\n\nexport type OnBuyMoreCallbackFn = (feature: FeatureFragment, entitlement: CustomerPortalEntitlement) => void;\n\nexport enum CustomerPortalIntentionType {\n MANAGE_SUBSCRIPTION = 'MANAGE_SUBSCRIPTION',\n UPGRADE_PLAN = 'UPGRADE_PLAN',\n UPGRADE_TRIAL_PLAN = 'UPGRADE_TRIAL_PLAN',\n}\n\nexport type OnManageSubscriptionFn = ({\n intentionType,\n customerSubscriptions,\n}: {\n intentionType: CustomerPortalIntentionType;\n customerSubscriptions: CustomerPortalSubscription[];\n}) => Promise<void> | void;\n","import React from 'react';\nimport styled from '@emotion/styled/macro';\nimport { StyledButton } from '../common/StyledButton';\nimport { Typography } from '../../common/Typography';\nimport EditIcon from '../../../assets/edit-icon.svg';\nimport { CustomerPortalLocalization } from '../customerPortalTextOverrides';\nimport { SectionHeader } from '../common/SectionHeader';\nimport { SectionTitle } from '../common/SectionTitle';\nimport { OnManageClick } from '../CustomerPortalContainer';\nimport { CustomerPortalIntentionType } from '../types';\n\ntype SubscriptionsOverviewHeaderProps = {\n onManageSubscription: OnManageClick;\n hideManageButton: boolean;\n textOverrides: CustomerPortalLocalization;\n};\n\nconst StyledEditIcon = styled(EditIcon)`\n path {\n stroke: ${({ theme }) => theme.stigg.palette.primary};\n }\n`;\n\nexport function SubscriptionsOverviewHeader({\n onManageSubscription,\n hideManageButton,\n textOverrides,\n}: SubscriptionsOverviewHeaderProps) {\n return (\n <SectionHeader className=\"stigg-customer-portal-overview-header\" $disableMargin>\n <SectionTitle title=\"Subscription\" className=\"stigg-overview-title\" />\n {!hideManageButton && (\n <StyledButton\n className=\"stigg-manage-subscription-button\"\n variant=\"outlined\"\n onClick={() => onManageSubscription({ intentionType: CustomerPortalIntentionType.MANAGE_SUBSCRIPTION })}>\n <StyledEditIcon className=\"stigg-manage-subscription-button-image\" />\n <Typography\n className=\"stigg-manage-subscription-button-text\"\n color=\"primary.main\"\n style={{ marginLeft: '8px' }}\n variant=\"body1\">\n {textOverrides?.manageSubscription}\n </Typography>\n </StyledButton>\n )}\n </SectionHeader>\n );\n}\n","import flatMap from 'lodash/flatMap';\nimport isEmpty from 'lodash/isEmpty';\nimport React from 'react';\nimport { Typography } from '../../../common/Typography';\nimport { useCustomerPortalContext } from '../../CustomerPortalProvider';\n\nexport function AddonsList() {\n const { customerPortal } = useCustomerPortalContext();\n const addons = flatMap(customerPortal?.subscriptions, (subscription) => subscription.addons);\n if (isEmpty(addons)) {\n return null;\n }\n\n return (\n <div className=\"stigg-addons-list-layout\">\n {addons.map((addon, index) => (\n <Typography key={addon.addonId} span className=\"stigg-addon-list-item-text\" variant=\"body1\">\n {addon.quantity > 1 && `${addon.quantity} X `}\n {addon.displayName}\n {index === addons.length - 1 ? '' : ', '}\n </Typography>\n ))}\n </div>\n );\n}\n","import { CustomerPortalPromotionalEntitlement } from '@stigg/js-client-sdk';\nimport moment from 'moment';\nimport React from 'react';\nimport styled from '@emotion/styled/macro';\nimport { Typography } from '../../../common/Typography';\nimport { useCustomerPortalContext } from '../../CustomerPortalProvider';\n\nconst Row = styled.div<{ $borderColor: string }>`\n display: flex;\n justify-content: space-between;\n align-items: center;\n gap: 64px;\n border-bottom: ${({ $borderColor }) => `1px solid ${$borderColor}`};\n padding: 16px 0;\n\n & > *:first-of-type {\n max-width: 60%;\n }\n`;\n\nfunction getPromotionTitle(promotionalEntitlement: CustomerPortalPromotionalEntitlement) {\n const { displayName, usageLimit, hasUnlimitedUsage } = promotionalEntitlement;\n\n if (hasUnlimitedUsage) {\n return `Unlimited ${displayName}`;\n }\n if (usageLimit) {\n return `${displayName} x ${promotionalEntitlement.usageLimit?.toLocaleString()}`;\n }\n\n return displayName;\n}\n\nexport function Promotions() {\n const { customerPortal, textOverrides, theme } = useCustomerPortalContext();\n const promotionalEntitlements = customerPortal?.promotionalEntitlements;\n\n return (\n <div style={{ display: 'flex', flexDirection: 'column' }}>\n <Typography color=\"secondary\">{textOverrides.promotionsSubtitle}</Typography>\n <div style={{ display: 'flex', flexDirection: 'column' }}>\n <Row $borderColor={theme.borderColor}>\n <Typography variant=\"body1\" bold>\n Feature\n </Typography>\n <Typography variant=\"body1\" bold>\n Expiration date\n </Typography>\n </Row>\n {promotionalEntitlements?.map((promotionalEntitlement, index) => (\n <Row key={`${promotionalEntitlement.displayName}-${index}`} $borderColor={theme.borderColor}>\n <Typography variant=\"body1\">{getPromotionTitle(promotionalEntitlement)}</Typography>\n <Typography variant=\"body1\" color=\"disabled\">\n {promotionalEntitlement.endDate\n ? moment.utc(promotionalEntitlement.endDate).format('MMM Do, YYYY')\n : 'None'}\n </Typography>\n </Row>\n ))}\n </div>\n </div>\n );\n}\n","import styled from '@emotion/styled/macro';\nimport Box from '@mui/material/Box';\nimport Tabs from '@mui/material/Tabs';\n\nexport const StyledTabs = styled(Tabs)`\n .MuiTabs-indicator {\n background-color: #001e6c;\n }\n`;\n\nexport const TabsLayout = styled.div`\n width: 100%;\n flex: 1;\n margin-top: 16px;\n`;\n\nexport const TabContent = styled(Box, { shouldForwardProp: (prop) => !prop.startsWith('$') })<{ $maxHeight: string }>`\n margin-top: 16px;\n max-height: ${({ $maxHeight }) => $maxHeight};\n overflow-y: auto;\n`;\n\nexport const ListBox = styled.div<{ $backgroundColor: string; $borderColor: string }>`\n display: flex;\n flex-direction: column;\n padding: 24px;\n border: ${({ $borderColor }) => `1px solid ${$borderColor}`};\n border-radius: 10px;\n margin-bottom: 16px;\n row-gap: 16px;\n background-color: ${({ $backgroundColor }) => $backgroundColor};\n`;\n","import { Theme } from '@emotion/react';\n\nexport type IconColor = 'primary' | 'secondary';\n\nexport const getIconColor = (color: IconColor | string | undefined, theme: Theme) => {\n switch (color) {\n case 'primary':\n return theme.stigg.palette.text.primary;\n case 'secondary':\n return theme.stigg.palette.text.secondary;\n default:\n return color;\n }\n};\n","<svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<g clip-path=\"url(#clip0_834_118930)\">\n<path d=\"M12 6.85712V17.1428\" stroke=\"#7586B0\" stroke-width=\"1.71429\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n<path d=\"M6.85712 12H17.1428\" stroke=\"#7586B0\" stroke-width=\"1.71429\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n<path d=\"M18 0.857117H5.99997C3.15966 0.857117 0.857117 3.15966 0.857117 5.99997V18C0.857117 20.8404 3.15966 23.1428 5.99997 23.1428H18C20.8404 23.1428 23.1428 20.8404 23.1428 18V5.99997C23.1428 3.15966 20.8404 0.857117 18 0.857117Z\" stroke=\"#7586B0\" stroke-width=\"1.71429\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n</g>\n<defs>\n<clipPath id=\"clip0_834_118930\">\n<rect width=\"24\" height=\"24\" fill=\"white\"/>\n</clipPath>\n</defs>\n</svg>\n","<svg width=\"36\" height=\"36\" viewBox=\"0 0 36 36\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<rect width=\"36\" height=\"36\" rx=\"10\" fill=\"#F5F6F9\"/>\n<path d=\"M26 27V25C26 22.7909 24.2091 21 22 21H14C11.7909 21 10 22.7909 10 25V27\" stroke=\"#7586B0\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M18 17C20.2091 17 22 15.2091 22 13C22 10.7909 20.2091 9 18 9C15.7909 9 14 10.7909 14 13C14 15.2091 15.7909 17 18 17Z\" stroke=\"#7586B0\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n<defs>\n<linearGradient id=\"paint0_linear_67_8545\" x1=\"35.0204\" y1=\"1.22449\" x2=\"0\" y2=\"36\" gradientUnits=\"userSpaceOnUse\">\n<stop stop-color=\"#56ACF6\"/>\n<stop offset=\"1\" stop-color=\"#1559E6\"/>\n</linearGradient>\n</defs>\n</svg>\n","<svg width=\"36\" height=\"36\" viewBox=\"0 0 36 36\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<rect width=\"36\" height=\"36\" rx=\"10\" fill=\"#F5F6F9\"/>\n<path d=\"M27 18.22C27 12.73 22.74 9 18 9C13.31 9 9 12.65 9 18.28C8.4 18.62 8 19.26 8 20V22C8 23.1 8.9 24 10 24H11V17.9C11 14.03 14.13 10.9 18 10.9C21.87 10.9 25 14.03 25 17.9V25H17V27H25C26.1 27 27 26.1 27 25V23.78C27.59 23.47 28 22.86 28 22.14V19.84C28 19.14 27.59 18.53 27 18.22Z\" fill=\"#7586B0\"/>\n<path d=\"M15 20C15.5523 20 16 19.5523 16 19C16 18.4477 15.5523 18 15 18C14.4477 18 14 18.4477 14 19C14 19.5523 14.4477 20 15 20Z\" fill=\"#7586B0\"/>\n<path d=\"M21 20C21.5523 20 22 19.5523 22 19C22 18.4477 21.5523 18 21 18C20.4477 18 20 18.4477 20 19C20 19.5523 20.4477 20 21 20Z\" fill=\"#7586B0\"/>\n<path d=\"M24 17.03C23.52 14.18 21.04 12 18.05 12C15.02 12 11.76 14.51 12.02 18.45C14.49 17.44 16.35 15.24 16.88 12.56C18.19 15.19 20.88 17 24 17.03Z\" fill=\"#7586B0\"/>\n<defs>\n<linearGradient id=\"paint0_linear_267_19310\" x1=\"35.0204\" y1=\"1.22449\" x2=\"0\" y2=\"36\" gradientUnits=\"userSpaceOnUse\">\n<stop stop-color=\"#56ACF6\"/>\n<stop offset=\"1\" stop-color=\"#1559E6\"/>\n</linearGradient>\n</defs>\n</svg>\n","<svg width=\"36\" height=\"36\" viewBox=\"0 0 36 36\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<rect width=\"36\" height=\"36\" rx=\"10\" fill=\"#F5F6F9\"/>\n<path d=\"M26 10H10C8.89 10 8.01 10.89 8.01 12L8 24C8 25.11 8.89 26 10 26H26C27.11 26 28 25.11 28 24V12C28 10.89 27.11 10 26 10ZM26 24H10V18H26V24ZM26 14H10V12H26V14Z\" fill=\"#7586B0\"/>\n<defs>\n<linearGradient id=\"paint0_linear_67_8556\" x1=\"35.0204\" y1=\"1.22449\" x2=\"0\" y2=\"36\" gradientUnits=\"userSpaceOnUse\">\n<stop stop-color=\"#56ACF6\"/>\n<stop offset=\"1\" stop-color=\"#1559E6\"/>\n</linearGradient>\n</defs>\n</svg>\n","<svg width=\"21\" height=\"20\" viewBox=\"0 0 21 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<g clip-path=\"url(#clip0_834_120339)\">\n<path d=\"M10.3336 19.2858C15.462 19.2858 19.6193 15.1285 19.6193 10.0001C19.6193 4.87171 15.462 0.714355 10.3336 0.714355C5.20521 0.714355 1.04785 4.87171 1.04785 10.0001C1.04785 15.1285 5.20521 19.2858 10.3336 19.2858Z\" stroke=\"#7586B0\" stroke-width=\"1.71429\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n<path d=\"M12.7649 7.46052C12.6813 7.22393 12.5523 7.0088 12.3883 6.8256C12.0395 6.43592 11.5327 6.19067 10.9685 6.19067H9.4942C8.55517 6.19067 7.79395 6.9519 7.79395 7.89093C7.79395 8.68995 8.3503 9.38116 9.13086 9.5519L11.3756 10.0429C12.25 10.2342 12.8733 11.0091 12.8733 11.9043C12.8733 12.9562 12.0205 13.8097 10.9685 13.8097H9.6987C8.86936 13.8097 8.16382 13.2797 7.90233 12.5399\" stroke=\"#7586B0\" stroke-width=\"1.71429\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n<path d=\"M10.3335 6.19065V4.28589\" stroke=\"#7586B0\" stroke-width=\"1.71429\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n<path d=\"M10.3335 15.7144V13.8096\" stroke=\"#7586B0\" stroke-width=\"1.71429\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n</g>\n<defs>\n<clipPath id=\"clip0_834_120339\">\n<rect width=\"20\" height=\"20\" fill=\"white\" transform=\"translate(0.333496)\"/>\n</clipPath>\n</defs>\n</svg>\n","<svg width=\"24\" height=\"25\" viewBox=\"0 0 24 25\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<g clip-path=\"url(#clip0_834_116282)\">\n<path d=\"M21.4286 5.32483H2.57146C1.62469 5.32483 0.857178 6.09235 0.857178 7.03911V10.4677C0.857178 11.4145 1.62469 12.182 2.57146 12.182H21.4286C22.3754 12.182 23.1429 11.4145 23.1429 10.4677V7.03911C23.1429 6.09235 22.3754 5.32483 21.4286 5.32483Z\" stroke=\"#7586B0\" stroke-width=\"1.71429\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n<path d=\"M21.4287 12.182V21.6106C21.4287 22.0652 21.248 22.5013 20.9266 22.8227C20.6051 23.1442 20.169 23.3249 19.7144 23.3249H4.28582C3.83116 23.3249 3.39513 23.1442 3.07363 22.8227C2.75215 22.5013 2.57153 22.0652 2.57153 21.6106V12.182\" stroke=\"#7586B0\" stroke-width=\"1.71429\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n<path d=\"M12 5.32483V23.3248\" stroke=\"#7586B0\" stroke-width=\"1.71429\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n<path d=\"M17.1429 1.03912L12 5.32484L6.85718 1.03912\" stroke=\"#7586B0\" stroke-width=\"1.71429\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n</g>\n<defs>\n<clipPath id=\"clip0_834_116282\">\n<rect width=\"24\" height=\"24\" fill=\"white\" transform=\"translate(0 0.182007)\"/>\n</clipPath>\n</defs>\n</svg>\n","<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<path d=\"M10.8333 2.5C6.69168 2.5 3.33334 5.85833 3.33334 10H0.833344L4.07501 13.2417L4.13334 13.3583L7.50001 10H5.00001C5.00001 6.775 7.60834 4.16667 10.8333 4.16667C14.0583 4.16667 16.6667 6.775 16.6667 10C16.6667 13.225 14.0583 15.8333 10.8333 15.8333C9.22501 15.8333 7.76668 15.175 6.71668 14.1167L5.53334 15.3C6.89168 16.6583 8.75834 17.5 10.8333 17.5C14.975 17.5 18.3333 14.1417 18.3333 10C18.3333 5.85833 14.975 2.5 10.8333 2.5ZM10 6.66667V10.8333L13.5667 12.95L14.1667 11.9417L11.25 10.2083V6.66667H10Z\" fill=\"#6678A7\"/>\n</svg>\n","<svg width=\"36\" height=\"36\" viewBox=\"0 0 36 36\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<rect width=\"36\" height=\"36\" rx=\"10\" fill=\"url(#paint0_linear_834_118583)\"/>\n<rect width=\"36\" height=\"36\" rx=\"10\" fill=\"#F5F6F9\"/>\n<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M15.9539 7.70028C16.1196 8.22713 15.8268 8.78853 15.3 8.95421C14.4906 9.20875 13.7155 9.57824 12.9999 10.0564C11.2686 11.2132 9.99197 12.9346 9.38754 14.9271C8.78311 16.9196 8.88826 19.0601 9.68509 20.9838C10.4819 22.9075 11.9211 24.4954 13.7574 25.477C15.5938 26.4585 17.7136 26.7729 19.7558 26.3667C21.798 25.9605 23.6362 24.8588 24.9571 23.2492C26.278 21.6396 27 19.6219 27 17.5397C27 16.9874 27.4477 16.5397 28 16.5397C28.5523 16.5397 29 16.9874 29 17.5397C29 17.8969 28.9826 18.2526 28.9483 18.6056C28.9662 18.6949 28.9722 18.7883 28.9645 18.8837L28.9606 18.9309C28.9496 19.0607 28.9143 19.1825 28.8595 19.2924C28.5513 21.2017 27.7432 23.007 26.5031 24.518C24.8886 26.4852 22.642 27.8318 20.146 28.3283C17.65 28.8248 15.059 28.4405 12.8146 27.2408C10.5702 26.0411 8.81122 24.1004 7.83733 21.7492C6.86343 19.398 6.73491 16.7819 7.47366 14.3465C8.21241 11.9112 9.77272 9.80737 11.8887 8.3935C12.7634 7.80905 13.7107 7.35743 14.7 7.04633C15.2269 6.88065 15.7883 7.17343 15.9539 7.70028ZM17.8497 7.95155C17.8964 7.40125 18.3804 6.99302 18.9307 7.03974L18.9779 7.04385C19.528 7.0929 19.9342 7.57861 19.8851 8.12871C19.8361 8.67881 19.3503 9.085 18.8002 9.03595L18.7615 9.03257C18.2112 8.98585 17.8029 8.50186 17.8497 7.95155ZM22.8579 9.19953C23.172 8.74525 23.7949 8.63161 24.2492 8.9457C24.2751 8.96361 24.3009 8.98162 24.3266 8.99974C24.7782 9.31772 24.8865 9.94155 24.5685 10.3931C24.2505 10.8447 23.6267 10.953 23.1751 10.635C23.1541 10.6202 23.1329 10.6054 23.1118 10.5908C22.6575 10.2767 22.5438 9.6538 22.8579 9.19953ZM26.6058 12.8085C27.1045 12.5712 27.7011 12.7831 27.9384 13.2818C27.9519 13.3102 27.9653 13.3387 27.9786 13.3672C28.2116 13.868 27.9946 14.4628 27.4939 14.6958C26.9931 14.9288 26.3983 14.7117 26.1653 14.211L26.1506 14.1796L26.1324 14.1411C25.8951 13.6424 26.1071 13.0458 26.6058 12.8085ZM19 14.0003C19 13.448 18.5523 13.0003 18 13.0003C17.4477 13.0003 17 13.448 17 14.0003V18.0003C17 18.5526 17.4477 19.0003 18 19.0003H22C22.5523 19.0003 23 18.5526 23 18.0003C23 17.448 22.5523 17.0003 22 17.0003H19V14.0003Z\" fill=\"#7586B0\"/>\n<defs>\n<linearGradient id=\"paint0_linear_834_118583\" x1=\"35.0204\" y1=\"1.22449\" x2=\"0\" y2=\"36\" gradientUnits=\"userSpaceOnUse\">\n</linearGradient>\n</defs>\n</svg>\n","<svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M9.95394 1.70028C10.1196 2.22713 9.82684 2.78853 9.29999 2.95421C8.49057 3.20875 7.71555 3.57824 6.99987 4.05644C5.26859 5.21324 3.99197 6.93456 3.38754 8.9271C2.78311 10.9196 2.88826 13.0601 3.68509 14.9838C4.48191 16.9075 5.9211 18.4954 7.75743 19.477C9.59377 20.4585 11.7136 20.7729 13.7558 20.3667C15.798 19.9605 17.6362 18.8588 18.9571 17.2492C20.278 15.6396 21 13.6219 21 11.5397C21 10.9874 21.4477 10.5397 22 10.5397C22.5523 10.5397 23 10.9874 23 11.5397C23 11.8969 22.9826 12.2526 22.9483 12.6056C22.9662 12.6949 22.9722 12.7883 22.9645 12.8837L22.9606 12.9309C22.9496 13.0607 22.9143 13.1825 22.8595 13.2924C22.5513 15.2017 21.7432 17.007 20.5031 18.518C18.8886 20.4852 16.642 21.8318 14.146 22.3283C11.65 22.8248 9.05905 22.4405 6.81464 21.2408C4.57023 20.0411 2.81122 18.1004 1.83733 15.7492C0.863434 13.398 0.734911 10.7819 1.47366 8.34653C2.21241 5.91121 3.77272 3.80737 5.88873 2.3935C6.76341 1.80905 7.71072 1.35743 8.70001 1.04633C9.22686 0.880646 9.78826 1.17343 9.95394 1.70028ZM11.8497 1.95155C11.8964 1.40125 12.3804 0.993017 12.9307 1.03974L12.9779 1.04385C13.528 1.0929 13.9342 1.57861 13.8851 2.12871C13.8361 2.67881 13.3503 3.085 12.8002 3.03595L12.7615 3.03257C12.2112 2.98585 11.8029 2.50186 11.8497 1.95155ZM16.8579 3.19953C17.172 2.74525 17.7949 2.63161 18.2492 2.9457C18.2751 2.96361 18.3009 2.98162 18.3266 2.99974C18.7782 3.31772 18.8865 3.94155 18.5685 4.39311C18.2505 4.84467 17.6267 4.95296 17.1751 4.63498C17.1541 4.62016 17.1329 4.60542 17.1118 4.59078C16.6575 4.27669 16.5438 3.6538 16.8579 3.19953ZM20.6058 6.80846C21.1045 6.57117 21.7011 6.78308 21.9384 7.28179C21.9519 7.3102 21.9653 7.33869 21.9786 7.36723C22.2116 7.86796 21.9946 8.46276 21.4939 8.69577C20.9931 8.92877 20.3983 8.71174 20.1653 8.21101L20.1506 8.17957L20.1324 8.14112C19.8951 7.64241 20.1071 7.04576 20.6058 6.80846ZM13 8.00027C13 7.44798 12.5523 7.00027 12 7.00027C11.4477 7.00027 11 7.44798 11 8.00027V12.0003C11 12.5526 11.4477 13.0003 12 13.0003H16C16.5523 13.0003 17 12.5526 17 12.0003C17 11.448 16.5523 11.0003 16 11.0003H13V8.00027Z\" fill=\"#7586B0\"/>\n</svg>\n","<svg width=\"36\" height=\"36\" viewBox=\"0 0 36 36\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n\n<rect width=\"36\" height=\"36\" rx=\"10\" fill=\"#F5F6F9\"/>\n<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M9 12C9 10.8954 9.89543 10 11 10H25C26.1046 10 27 10.8954 27 12V26C27 27.1046 26.1046 28 25 28H11C9.89543 28 9 27.1046 9 26V12Z\" stroke=\"#7586B0\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n<path d=\"M22 8V12\" stroke=\"#7586B0\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n<path d=\"M14 8V12\" stroke=\"#7586B0\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n<path d=\"M9 16H27\" stroke=\"#7586B0\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n<defs>\n<linearGradient id=\"paint0_linear_45_8861\" x1=\"35.0204\" y1=\"1.22449\" x2=\"0\" y2=\"36\" gradientUnits=\"userSpaceOnUse\">\n<stop stop-color=\"#56ACF6\"/>\n<stop offset=\"1\" stop-color=\"#1559E6\"/>\n</linearGradient>\n</defs>\n</svg>\n","<svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<g id=\"trash-2\">\n<path id=\"Shape\" d=\"M3 6H5H21\" stroke=\"#F88078\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n<path id=\"Shape_2\" d=\"M20 6C20 5.44772 19.5523 5 19 5C18.4477 5 18 5.44772 18 6H20ZM6 6C6 5.44772 5.55228 5 5 5C4.44772 5 4 5.44772 4 6H6ZM7 6C7 6.55228 7.44772 7 8 7C8.55228 7 9 6.55228 9 6H7ZM15 6C15 6.55228 15.4477 7 16 7C16.5523 7 17 6.55228 17 6H15ZM18 6V20H20V6H18ZM18 20C18 20.5523 17.5523 21 17 21V23C18.6569 23 20 21.6569 20 20H18ZM17 21H7V23H17V21ZM7 21C6.44772 21 6 20.5523 6 20H4C4 21.6569 5.34315 23 7 23V21ZM6 20V6H4V20H6ZM9 6V4H7V6H9ZM9 4C9 3.44772 9.44772 3 10 3V1C8.34315 1 7 2.34315 7 4H9ZM10 3H14V1H10V3ZM14 3C14.5523 3 15 3.44772 15 4H17C17 2.34315 15.6569 1 14 1V3ZM15 4V6H17V4H15Z\" fill=\"#F88078\"/>\n<path id=\"Shape_3\" d=\"M10 11V17\" stroke=\"#F88078\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n<path id=\"Shape_4\" d=\"M14 11V17\" stroke=\"#F88078\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n</g>\n</svg>\n","<svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<path d=\"M21.1667 4H2.83333C1.82081 4 1 4.89543 1 6V18C1 19.1046 1.82081 20 2.83333 20H21.1667C22.1792 20 23 19.1046 23 18V6C23 4.89543 22.1792 4 21.1667 4Z\" fill=\"#C6C6C7\"/>\n<path opacity=\"0.3\" d=\"M19.75 16.4286H17.5C17.0125 16.4286 16.75 16.2 16.75 15.6667C16.75 15.1334 17.0125 14.9048 17.5 14.9048H19.75C20.2375 14.9048 20.5 15.1334 20.5 15.6667C20.5 16.2 20.2375 16.4286 19.75 16.4286ZM15.25 16.4286H13C12.5125 16.4286 12.25 16.2 12.25 15.6667C12.25 15.1334 12.5125 14.9048 13 14.9048H15.25C15.7375 14.9048 16 15.1334 16 15.6667C16 16.2 15.7375 16.4286 15.25 16.4286ZM10.75 16.4286H8.5C8.0125 16.4286 7.75 16.2 7.75 15.6667C7.75 15.1334 8.0125 14.9048 8.5 14.9048H10.75C11.2375 14.9048 11.5 15.1334 11.5 15.6667C11.5 16.2 11.2375 16.4286 10.75 16.4286ZM6.25 16.4286H4C3.5125 16.4286 3.25 16.2 3.25 15.6667C3.25 15.1334 3.5125 14.9048 4 14.9048H6.25C6.7375 14.9048 7 15.1334 7 15.6667C7 16.2 6.7375 16.4286 6.25 16.4286Z\" fill=\"black\"/>\n</svg>\n","<svg width=\"21\" height=\"20\" viewBox=\"0 0 21 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<circle cx=\"10.333\" cy=\"10\" r=\"9\" fill=\"white\" stroke=\"#327EEE\" stroke-width=\"2\"/>\n</svg>\n","<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<g id=\"Group 16159\">\n<circle id=\"Ellipse 5\" cx=\"10\" cy=\"10\" r=\"9.25\" fill=\"#327EEE\" stroke=\"#327EEE\" stroke-width=\"1.5\"/>\n<path id=\"Shape\" d=\"M5 10.3636L8.63667 14L12.637 10L14.6372 8\" stroke=\"white\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n</g>\n</svg>\n","<svg width=\"21\" height=\"20\" viewBox=\"0 0 21 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<g id=\"Stepper indicators\">\n<circle id=\"Ellipse 5\" cx=\"10.667\" cy=\"10\" r=\"9.25\" fill=\"#B3BCD3\" stroke=\"#B3BCD3\" stroke-width=\"1.5\"/>\n<path id=\"Shape\" d=\"M5.66699 10.3636L9.30366 14L13.304 10L15.3042 8\" stroke=\"white\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n</g>\n</svg>\n","<svg width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<path d=\"M9 3L7.9425 4.0575L12.1275 8.25H3V9.75H12.1275L7.9425 13.9425L9 15L15 9L9 3Z\" fill=\"white\"/>\n</svg>\n","<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<path d=\"M15.8337 5.34199L14.6587 4.16699L10.0003 8.82533L5.34199 4.16699L4.16699 5.34199L8.82533 10.0003L4.16699 14.6587L5.34199 15.8337L10.0003 11.1753L14.6587 15.8337L15.8337 14.6587L11.1753 10.0003L15.8337 5.34199Z\" fill=\"#327EEE\"/>\n</svg>\n","<svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<g id=\"check\">\n<path id=\"Shape\" d=\"M20 7L9 18L4 13\" stroke=\"#F5F6F9\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n</g>\n</svg>\n","<svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<g clip-path=\"url(#clip0_1889_12169)\">\n<path d=\"M11.4286 7.42578L8 13.1401\" stroke=\"#7586B0\" stroke-width=\"1.71429\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n<path d=\"M14.857 13.1412C15.3274 12.0123 15.5118 10.7848 15.3938 9.56751C15.2758 8.35027 14.8592 7.18097 14.1808 6.16341C13.5024 5.14585 12.5833 4.31152 11.5051 3.73446C10.4268 3.1574 9.22281 2.85547 7.99986 2.85547C6.77691 2.85547 5.57288 3.1574 4.49463 3.73446C3.41639 4.31152 2.49729 5.14585 1.81892 6.16341C1.14055 7.18097 0.723889 8.35027 0.605928 9.56751C0.487968 10.7848 0.672354 12.0123 1.14272 13.1412H14.857Z\" stroke=\"#7586B0\" stroke-width=\"1.71429\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n</g>\n<defs>\n<clipPath id=\"clip0_1889_12169\">\n<rect width=\"16\" height=\"16\" fill=\"white\"/>\n</clipPath>\n</defs>\n</svg>\n","<svg width=\"16\" height=\"16\" viewBox=\"0 0 18 18\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<g id=\"tag--tags-bookmark-favorite\">\n<path id=\"Vector\" d=\"M1.26995 11.9426L6.05743 16.7301C6.2305 16.903 6.4651 17.0001 6.7097 17.0001C6.95431 17.0001 7.18891 16.903 7.36198 16.7301L16.8631 7.22895C16.9108 7.18332 16.9478 7.12758 16.9712 7.06583C16.9946 7.00408 17.0039 6.93787 16.9985 6.87205L16.2724 2.15839C16.2664 2.04607 16.2192 1.93992 16.1396 1.86038C16.0601 1.78085 15.9539 1.73357 15.8416 1.72764L11.128 1.00152C11.0622 0.996055 10.9959 1.00538 10.9342 1.0288C10.8724 1.05222 10.8167 1.08916 10.7711 1.1369L1.26995 10.638C1.09709 10.8111 1 11.0457 1 11.2903C1 11.5349 1.09709 11.7695 1.26995 11.9426Z\" stroke=\"#327EEE\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n<path id=\"Vector_2\" d=\"M12.5548 6.05884C12.3916 6.05884 12.2351 5.99401 12.1197 5.87861C12.0043 5.76321 11.9395 5.60669 11.9395 5.44348C11.9395 5.28028 12.0043 5.12376 12.1197 5.00836C12.2351 4.89296 12.3916 4.82812 12.5548 4.82812C12.718 4.82812 12.8745 4.89296 12.9899 5.00836C13.1053 5.12376 13.1702 5.28028 13.1702 5.44348C13.1702 5.60669 13.1053 5.76321 12.9899 5.87861C12.8745 5.99401 12.718 6.05884 12.5548 6.05884Z\" stroke=\"#327EEE\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n</g>\n</svg>\n","import styled from '@emotion/styled/macro';\nimport React, { CSSProperties } from 'react';\nimport { css, useTheme } from '@emotion/react';\nimport { getIconColor, IconColor } from './iconColor';\nimport * as customIcons from './customIcons';\n\nexport type Icons = keyof typeof customIcons;\n\nconst IconWrapper = styled.div<{ $pathColor?: string; $rectColor?: string; $strokeColor?: string }>`\n ${({ $pathColor }) =>\n $pathColor &&\n css`\n path {\n fill: ${$pathColor};\n }\n `}\n\n ${({ $rectColor }) =>\n $rectColor &&\n css`\n svg rect {\n fill: ${$rectColor};\n }\n `}\n\n\n ${({ $strokeColor }) =>\n $strokeColor &&\n css`\n g {\n stroke: ${$strokeColor};\n }\n `}\n`;\n\nexport type IconProps = {\n icon: Icons;\n className?: string;\n style?: CSSProperties;\n svgPathColor?: IconColor | string;\n svgRectColor?: IconColor | string;\n svgStrokeColor?: IconColor | string;\n};\n\nexport function Icon({ icon, className, style, svgPathColor, svgRectColor, svgStrokeColor }: IconProps) {\n const IconComponent = (customIcons as any)[icon];\n const theme = useTheme();\n\n return (\n <IconWrapper\n className={className}\n style={style}\n $pathColor={getIconColor(svgPathColor, theme)}\n $rectColor={getIconColor(svgRectColor, theme)}\n $strokeColor={getIconColor(svgStrokeColor, theme)}>\n <IconComponent />\n </IconWrapper>\n );\n}\n","import React, { useState } from 'react';\nimport { CustomerPortal } from '@stigg/js-client-sdk';\nimport flatMap from 'lodash/flatMap';\nimport Box from '@mui/material/Box';\nimport Tab from '@mui/material/Tab';\nimport { FontWeight } from 'styled-typography';\nimport { Typography } from '../../../common/Typography';\nimport { AddonsList } from './AddonsList';\nimport { Promotions } from './Promotions';\nimport { CustomerPortalSection } from '../../CustomerPortal';\nimport { CustomerPortalLocalization } from '../../customerPortalTextOverrides';\nimport { StyledTabs, TabContent, TabsLayout } from './SubscriptionTabs.style';\nimport { CustomerPortalTheme } from '../../customerPortalTheme';\nimport { Icon, Icons } from '../../../common/Icon';\n\ntype TabPanelProps = {\n children?: React.ReactNode;\n index: number;\n value: number;\n maxHeight: string;\n};\n\nfunction TabPanel(props: TabPanelProps) {\n const { children, value, index, maxHeight, ...other } = props;\n\n return (\n <div role=\"tabpanel\" hidden={value !== index} {...other}>\n {value === index && <TabContent $maxHeight={maxHeight}>{children}</TabContent>}\n </div>\n );\n}\n\nexport type SubscriptionTabsProps = {\n customerPortal: CustomerPortal;\n hiddenSections?: CustomerPortalSection[];\n textOverrides: CustomerPortalLocalization;\n theme: CustomerPortalTheme;\n};\n\nfunction TabTitle({ isSelected, label, icon }: { isSelected: boolean; label: string; icon: Icons }) {\n const color = isSelected ? 'primary' : 'secondary';\n return (\n <div style={{ display: 'flex', gap: 8, alignItems: 'center' }}>\n <Icon icon={icon} svgStrokeColor={color} />\n <Typography variant=\"h6\" bold={isSelected} fontWeight={FontWeight.Medium} color={color}>\n {label}\n </Typography>\n </div>\n );\n}\n\nexport function SubscriptionTabs({ customerPortal, hiddenSections, textOverrides, theme }: SubscriptionTabsProps) {\n const allAddons = flatMap(customerPortal.subscriptions, (subscription) => subscription.addons);\n const isSectionHidden = (sectionName: CustomerPortalSection) =>\n hiddenSections?.some((section) => section === sectionName);\n const showAddons = allAddons.length > 0 && !isSectionHidden('addons');\n const showPromotions =\n customerPortal.promotionalEntitlements.length > 0 && !isSectionHidden('promotionalEntitlements');\n const [value, setValue] = useState(showAddons ? 1 : 2);\n\n const handleChange = (_: React.SyntheticEvent, newValue: number) => {\n setValue(newValue);\n };\n const shouldShowTabs = showAddons || showPromotions;\n\n if (!shouldShowTabs) {\n return null;\n }\n\n return (\n <TabsLayout>\n <Box sx={{ borderBottom: 1, borderColor: 'divider' }}>\n <StyledTabs value={value} onChange={handleChange}>\n {showAddons ? (\n <Tab\n sx={{ textTransform: 'none' }}\n value={1}\n label={<TabTitle isSelected={value === 1} label={textOverrides.addonsTabTitle} icon=\"Addons\" />}\n />\n ) : null}\n {showPromotions ? (\n <Tab\n sx={{ textTransform: 'none' }}\n value={2}\n label={<TabTitle isSelected={value === 2} label={textOverrides.promotionsTabTitle} icon=\"Promotions\" />}\n />\n ) : null}\n </StyledTabs>\n </Box>\n <TabPanel value={value} index={1} maxHeight={theme.tabMaxHeight}>\n <AddonsList />\n </TabPanel>\n <TabPanel value={value} index={2} maxHeight={theme.tabMaxHeight}>\n <Promotions />\n </TabPanel>\n </TabsLayout>\n );\n}\n","import styled from '@emotion/styled/macro';\nimport React from 'react';\nimport Skeleton from 'react-loading-skeleton';\n\nconst SkeletonLayout = styled.div`\n display: flex;\n justify-content: space-between;\n`;\n\nconst SkeletonLayoutLeft = styled.div`\n display: flex;\n flex-direction: column;\n gap: 32px;\n`;\n\nexport function SubscriptionOverviewLoader() {\n return (\n <SkeletonLayout className=\"stigg-subscription-overview-skeleton-layout\">\n <SkeletonLayoutLeft>\n <Skeleton width={120} />\n <Skeleton width={120} />\n </SkeletonLayoutLeft>\n <Skeleton width={295} height={193} />\n </SkeletonLayout>\n );\n}\n","import React from 'react';\nimport { ArrowDown } from 'react-feather';\nimport Grid from '@mui/material/Grid';\nimport {\n CustomerPortalSubscription,\n CustomerPortalSubscriptionScheduledUpdateDataFragment,\n SubscriptionScheduleType,\n BillingPeriod,\n} from '@stigg/js-client-sdk';\nimport { compact, map } from 'lodash';\nimport { Typography } from '../../../common/Typography';\nimport { BillingPeriodChangeVariables, UnitAmountChangeVariables } from '../../../../types';\n\nexport type SubscriptionScheduledUpdateRowProps = {\n scheduleUpdate: CustomerPortalSubscriptionScheduledUpdateDataFragment;\n};\n\nfunction SubscriptionScheduledUpdateDowngradeRow({ scheduleUpdate }: SubscriptionScheduledUpdateRowProps) {\n const { targetPackage } = scheduleUpdate;\n return (\n <Grid container alignItems=\"center\">\n <Grid>\n <ArrowDown color=\"#D94052\" height={20} className=\"stigg-scheduled-updates-arrow-down\" />\n </Grid>\n <Grid item>\n <Typography className=\"stigg-scheduled-updates-description\" variant=\"body1\">\n Downgrade to the <b>{targetPackage?.displayName}</b> plan\n </Typography>\n </Grid>\n </Grid>\n );\n}\n\nfunction SubscriptionScheduledUpdateBillingPeriodChangeRow({ scheduleUpdate }: SubscriptionScheduledUpdateRowProps) {\n const { scheduleVariables } = scheduleUpdate;\n const { billingPeriod } = scheduleVariables as BillingPeriodChangeVariables;\n const currentBillingPeriod = billingPeriod === BillingPeriod.Monthly ? 'annually' : 'monthly';\n const nextBillingPeriod = billingPeriod === BillingPeriod.Monthly ? 'monthly' : 'annually';\n\n return (\n <Grid container alignItems=\"center\">\n <Grid>\n <ArrowDown color=\"#D94052\" height={20} className=\"stigg-scheduled-updates-arrow-down\" />\n </Grid>\n <Grid item>\n <Typography className=\"stigg-scheduled-updates-description\" variant=\"body1\">\n Change from an {currentBillingPeriod} to a <b>{nextBillingPeriod}</b> billing cycle\n </Typography>\n </Grid>\n </Grid>\n );\n}\n\nfunction SubscriptionScheduledUpdateUnitQuantityChangeRow({\n subscription,\n scheduleUpdate,\n}: SubscriptionScheduledUpdateRowProps & { subscription: CustomerPortalSubscription }) {\n const { scheduleVariables } = scheduleUpdate;\n const { newUnitAmount, featureId } = scheduleVariables as UnitAmountChangeVariables;\n const feature = compact(map(subscription.prices, 'feature')).find(({ id }) => id === featureId);\n\n if (!feature) {\n return null;\n }\n\n const { featureUnits, featureUnitsPlural } = feature;\n const newQuantityUnits = newUnitAmount === 1 ? featureUnits : featureUnitsPlural;\n\n return (\n <Grid container alignItems=\"flex-start\" flexWrap=\"nowrap\">\n <Grid>\n <ArrowDown color=\"#D94052\" height={20} className=\"stigg-scheduled-updates-arrow-down\" />\n </Grid>\n <Grid item>\n <Typography className=\"stigg-scheduled-updates-description\" variant=\"body1\">\n Reduce the <b>{featureUnits}</b> quantity to {newUnitAmount} {newQuantityUnits}\n </Typography>\n </Grid>\n </Grid>\n );\n}\n\nexport function SubscriptionScheduledUpdateRow({\n scheduleUpdate,\n subscription,\n}: {\n scheduleUpdate: CustomerPortalSubscriptionScheduledUpdateDataFragment;\n subscription: CustomerPortalSubscription;\n}) {\n switch (scheduleUpdate.subscriptionScheduleType) {\n case SubscriptionScheduleType.Downgrade: {\n return <SubscriptionScheduledUpdateDowngradeRow scheduleUpdate={scheduleUpdate} />;\n }\n\n case SubscriptionScheduleType.BillingPeriod: {\n return <SubscriptionScheduledUpdateBillingPeriodChangeRow scheduleUpdate={scheduleUpdate} />;\n }\n\n case SubscriptionScheduleType.UnitAmount: {\n return (\n <SubscriptionScheduledUpdateUnitQuantityChangeRow scheduleUpdate={scheduleUpdate} subscription={subscription} />\n );\n }\n\n default: {\n return null;\n }\n }\n}\n","import React, { useState } from 'react';\nimport Box from '@mui/material/Box';\nimport Grid from '@mui/material/Grid';\nimport { CustomerPortalSubscription } from '@stigg/js-client-sdk';\nimport styled from '@emotion/styled/macro';\nimport { useTheme } from '@emotion/react';\nimport ClipLoader from 'react-spinners/ClipLoader';\nimport { CustomerPortalTheme } from '../../customerPortalTheme';\nimport Restore from '../../../../assets/restore.svg';\nimport { Icon } from '../../../common/Icon';\nimport { Typography } from '../../../common/Typography';\nimport { SubscriptionScheduledUpdateRow } from './SubscriptionScheduledUpdateRow';\nimport { getSubscriptionScheduleUpdateTexts } from '../../../utils/getSubscriptionScheduleUpdateTexts';\nimport { StyledButton } from '../../common/StyledButton';\n\nexport type SubscriptionScheduledUpdatesAlertProps = {\n subscription: CustomerPortalSubscription;\n onCancelScheduledUpdates?: (subscription: CustomerPortalSubscription) => void;\n theme: CustomerPortalTheme;\n cancelScheduledUpdatesButtonTitle: string;\n};\n\nconst SubscriptionScheduleUpdateAlertContainer = styled(Box)<{ $borderColor: string }>`\n border-bottom: ${({ $borderColor }) => `1px solid ${$borderColor}`};\n border-top-left-radius: 10px;\n border-top-right-radius: 10px;\n margin: -64px -64px 64px -64px;\n padding: 24px 32px;\n`;\n\nconst LoadingIndicator = styled(ClipLoader)`\n margin-left: 4px;\n`;\n\nconst StyledRestoreIcon = styled(Restore)`\n color: ${({ theme }) => theme.stigg.palette.primary};\n path {\n fill: ${({ theme }) => theme.stigg.palette.primary};\n }\n`;\n\nfunction MultipleScheduledUpdates({ subscription }: Pick<SubscriptionScheduledUpdatesAlertProps, 'subscription'>) {\n const { scheduledUpdates } = subscription;\n\n return (\n <>\n <Grid container alignItems=\"center\" justifyContent=\"space-between\" gap={1}>\n <Grid>\n <Typography className=\"stigg-scheduled-updates-description\" variant=\"body1\">\n The following updates will take effect in the next billing cycle:\n </Typography>\n </Grid>\n </Grid>\n <Grid>\n {(scheduledUpdates || []).map((scheduleUpdate) => (\n <SubscriptionScheduledUpdateRow\n key={scheduleUpdate.subscriptionScheduleType}\n scheduleUpdate={scheduleUpdate}\n subscription={subscription}\n />\n ))}\n </Grid>\n </>\n );\n}\n\nfunction SingleScheduledUpdate({ subscription }: Pick<SubscriptionScheduledUpdatesAlertProps, 'subscription'>) {\n const { scheduledUpdates } = subscription;\n const [scheduledUpdate] = scheduledUpdates || [];\n\n const { line1, line2 } = getSubscriptionScheduleUpdateTexts({\n scheduledUpdate,\n subscriptionPrices: subscription.prices,\n billingPeriodRange: subscription.billingPeriodRange,\n options: {\n postfix: 'at the end of the current billing period', // We can later remove this if unnecessary\n },\n });\n\n return (\n <>\n <Grid container alignItems=\"center\" justifyContent=\"space-between\" gap={1}>\n <Grid>\n <Typography className=\"stigg-scheduled-updates-title\" variant=\"body1\" color=\"primary\">\n {line1}\n </Typography>\n </Grid>\n </Grid>\n {line2 && (\n <Grid>\n <Typography className=\"stigg-scheduled-updates-subtitle\" variant=\"body1\" color=\"secondary\">\n {line2}\n </Typography>\n </Grid>\n )}\n </>\n );\n}\n\nexport function SubscriptionScheduledUpdatesAlert({\n subscription,\n onCancelScheduledUpdates,\n theme,\n cancelScheduledUpdatesButtonTitle,\n}: SubscriptionScheduledUpdatesAlertProps) {\n const stiggTheme = useTheme();\n const [isLoading, setIsLoading] = useState(false);\n const { scheduledUpdates } = subscription;\n\n if (!scheduledUpdates || scheduledUpdates.length === 0) {\n return null;\n }\n\n const isSingleScheduledUpdate = scheduledUpdates.length === 1;\n\n return (\n <SubscriptionScheduleUpdateAlertContainer\n $borderColor={theme.borderColor}\n className=\"stigg-scheduled-updates-alert-container\">\n <Grid container alignItems={isSingleScheduledUpdate ? 'center' : 'flex-start'} gap={2}>\n <Grid item display=\"flex\">\n <Icon icon=\"ScheduleBox\" svgPathColor={theme.iconsColor} svgRectColor={theme.iconsBackgroundColor} />\n </Grid>\n\n <Grid item flex={1}>\n {isSingleScheduledUpdate ? (\n <SingleScheduledUpdate subscription={subscription} />\n ) : (\n <MultipleScheduledUpdates subscription={subscription} />\n )}\n </Grid>\n\n {!!onCancelScheduledUpdates && (\n <Grid item>\n <StyledButton\n variant=\"outlined\"\n onClick={() => {\n setIsLoading(true);\n Promise.resolve(onCancelScheduledUpdates(subscription)).finally(() => setIsLoading(false));\n }}>\n {isLoading ? (\n <LoadingIndicator loading size={16} color={stiggTheme.stigg.palette.text.disabled} />\n ) : (\n <StyledRestoreIcon\n style={{ display: 'flex', marginRight: 4 }}\n className=\"stigg-scheduled-updates-cancel-update-button-icon\"\n />\n )}\n <Typography variant=\"body1\" color=\"primary.main\" className=\"stigg-scheduled-updates-cancel-update-button\">\n {cancelScheduledUpdatesButtonTitle}\n </Typography>\n </StyledButton>\n </Grid>\n )}\n </Grid>\n </SubscriptionScheduleUpdateAlertContainer>\n );\n}\n","import styled from '@emotion/styled/macro';\n\nexport const SectionContainer = styled.div<{ $backgroundColor: string; $borderColor: string }>`\n width: 100%;\n display: flex;\n flex-direction: column;\n border-radius: 10px;\n background-color: ${({ $backgroundColor }) => $backgroundColor};\n border: ${({ $borderColor }) => `1px solid ${$borderColor}`};\n padding: 64px;\n`;\n","import { BillingPeriod, Currency } from '@stigg/js-client-sdk';\nimport moment from 'moment';\nimport React from 'react';\nimport { currencyPriceFormatter } from '../../../utils/currencyUtils';\nimport { Typography } from '../../../common/Typography';\n\nexport type NextEstimatedBillProps = {\n billingPeriod: BillingPeriod;\n rangeEnd: string;\n amount: number;\n currency: Currency;\n};\n\nexport function NextEstimatedBill({ billingPeriod, rangeEnd, amount, currency }: NextEstimatedBillProps) {\n return (\n <>\n <Typography variant=\"h6\">Next estimated bill</Typography>\n <Typography variant=\"h1\">{currencyPriceFormatter({ amount, currency, maximumFractionDigits: 2 })}</Typography>\n <Typography as=\"div\" variant=\"body1\" color=\"secondary\">\n Billed {billingPeriod === BillingPeriod.Monthly ? 'monthly' : 'annually'} on{' '}\n <Typography variant=\"body1\" span color=\"primary\">\n {moment.utc(rangeEnd).format('MMM Do, YYYY')}\n </Typography>\n </Typography>\n <Typography variant=\"body1\" color=\"secondary\">\n * Additional tax rates may apply\n </Typography>\n </>\n );\n}\n","import React from 'react';\nimport { Typography } from '../../../common/Typography';\n\ntype NoUpcomingBillingProps = {\n description: string;\n};\n\nexport function NoUpcomingBilling({ description }: NoUpcomingBillingProps) {\n return (\n <>\n <Typography variant=\"h6\" color=\"secondary\">\n No upcoming bill\n </Typography>\n <Typography variant=\"body1\" color=\"secondary\">\n {description}\n </Typography>\n </>\n );\n}\n","import React from 'react';\nimport styled from '@emotion/styled/macro';\nimport Button from '@mui/material/Button';\nimport { Typography } from '../../common/Typography';\n\nconst ContactCustomerSupportLayout = styled.div`\n display: flex;\n flex-direction: column;\n align-items: left;\n gap: 8px;\n`;\n\nconst ContactSupportButton = styled(Button)`\n width: fit-content;\n &.MuiButton-root {\n padding: 0;\n &:hover {\n background: none;\n }\n }\n`;\n\ntype ContactCustomerSupportProps = {\n onContactSupport?: () => void;\n label: string;\n linkLabel: string;\n};\n\nexport function ContactCustomerSupport({ onContactSupport, label, linkLabel }: ContactCustomerSupportProps) {\n const contactSupportText = (\n <Typography color={onContactSupport ? 'primary.main' : 'secondary'}>{linkLabel}</Typography>\n );\n return (\n <ContactCustomerSupportLayout className=\"stigg-contact-support-layout\">\n <Typography className=\"stigg-contact-support-label\" color=\"secondary\">\n {label}\n </Typography>\n {onContactSupport ? (\n <ContactSupportButton\n className=\"stigg-contact-support-button\"\n style={{ textTransform: 'none' }}\n variant=\"text\"\n onClick={onContactSupport}>\n {contactSupportText}\n </ContactSupportButton>\n ) : (\n contactSupportText\n )}\n </ContactCustomerSupportLayout>\n );\n}\n","import styled from '@emotion/styled/macro';\nimport React, { ReactNode } from 'react';\nimport {\n BillingModel,\n CustomerPortalSubscription,\n PricingType,\n SubscriptionScheduleType,\n SubscriptionStatus,\n} from '@stigg/js-client-sdk';\nimport { CustomerPortalTheme } from '../../customerPortalTheme';\nimport { NextEstimatedBill } from './NextEstimatedBill';\nimport { NoUpcomingBilling } from './NoUpcomingBilling';\nimport { ContactCustomerSupport } from '../ContactCustomerSupport';\nimport { CustomerPortalLocalization } from '../../customerPortalTextOverrides';\n\nconst Container = styled.div<{ $borderColor: string }>`\n max-height: 278px;\n display: flex;\n flex-direction: column;\n border-radius: 10px;\n background-color: ${({ theme }) => theme.stigg.palette.backgroundSection};\n border: ${({ $borderColor }) => `1px solid ${$borderColor}`};\n padding: 32px;\n gap: 16px;\n`;\n\nexport type UpcomingBillingProps = {\n subscription: CustomerPortalSubscription;\n theme: CustomerPortalTheme;\n textOverrides: CustomerPortalLocalization;\n onContactSupport?: () => Promise<void> | void;\n};\n\nexport function UpcomingBilling({ subscription, theme, textOverrides, onContactSupport }: UpcomingBillingProps) {\n const { pricingType } = subscription;\n let content: ReactNode;\n const noUsageBasedPrices =\n subscription.prices?.every((price) => price.billingModel !== BillingModel.UsageBased) ?? true;\n const scheduledDowngradeToFree = subscription.scheduledUpdates?.find(\n ({ subscriptionScheduleType, targetPackage }) =>\n subscriptionScheduleType === SubscriptionScheduleType.Downgrade &&\n targetPackage?.pricingType === PricingType.Free,\n );\n\n if (pricingType === PricingType.Free) {\n content = <NoUpcomingBilling description=\"You're on a free plan, so you don’t have any upcoming charges\" />;\n } else if (pricingType === PricingType.Paid) {\n if (scheduledDowngradeToFree && noUsageBasedPrices) {\n content = (\n <NoUpcomingBilling description=\"Your plan will be downgraded to a free plan, so you don’t have any upcoming charges\" />\n );\n } else if (subscription.status === SubscriptionStatus.InTrial) {\n content = (\n <NoUpcomingBilling\n description={`You’re on a free trial of the ${subscription.planName} plan, so you don’t have any upcoming charges`}\n />\n );\n } else {\n const billingPeriod = subscription.prices?.[0]?.billingPeriod;\n const rangeEnd = subscription.billingPeriodRange?.end;\n const total = subscription.totalPrice?.total;\n\n if (billingPeriod && rangeEnd && total) {\n content = (\n <NextEstimatedBill\n billingPeriod={billingPeriod}\n rangeEnd={rangeEnd}\n amount={total.amount}\n currency={total.currency}\n />\n );\n }\n }\n } else if (pricingType === PricingType.Custom) {\n content = (\n <ContactCustomerSupport\n onContactSupport={onContactSupport}\n label={textOverrides.contactSupportTitle}\n linkLabel={textOverrides.contactSupportLink}\n />\n );\n }\n\n return (\n <Container className=\"stigg-subscription-total-price-layout\" $borderColor={theme.borderColor}>\n {content}\n </Container>\n );\n}\n","<svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<path d=\"M12.9469 13.5999H11.9344L11.935 10.7756C11.935 10.6288 11.87 10.4819 11.7557 10.3838L8.62061 7.91816L11.755 5.4532C11.8694 5.35507 11.9344 5.22444 11.9344 5.06132L11.935 2.40004H12.9475C13.225 2.40004 13.4375 2.18755 13.4375 1.91004C13.4375 1.63254 13.225 1.42004 12.9475 1.42004L3.05311 1.42067C2.77561 1.42067 2.56311 1.63316 2.56311 1.91067C2.56311 2.18817 2.77561 2.40067 3.05311 2.40067H4.06561L4.06498 5.06131C4.06498 5.20818 4.12998 5.35505 4.24436 5.45318L7.36244 7.91814L4.245 10.3837C4.13062 10.4819 4.06562 10.6125 4.06562 10.7756V13.5999H3.05313C2.77562 13.5999 2.56313 13.8124 2.56313 14.0899C2.56313 14.3674 2.77562 14.5799 3.05313 14.5799H12.9469C13.2244 14.5799 13.4369 14.3674 13.4369 14.0899C13.4369 13.8124 13.2244 13.5999 12.9469 13.5999ZM5.04498 2.39995H10.9551V4.81627L8.00002 7.16747L5.04498 4.81627V2.39995ZM5.04498 11.0206L8.00002 8.66939L10.9551 11.0044V13.5838H5.04498V11.0206Z\" fill=\"white\"/>\n<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M3.05303 1.25404L12.9474 1.25342C13.317 1.25342 13.6041 1.54053 13.6041 1.91008C13.6041 2.27964 13.317 2.56675 12.9474 2.56675H12.1016L12.101 5.06136V5.06136C12.101 5.2747 12.0135 5.45101 11.8635 5.57973L11.8581 5.58436L8.89014 7.9182L11.8642 10.2572C12.0164 10.3878 12.1016 10.5814 12.1016 10.7757L12.101 13.4333H12.9468C13.3164 13.4333 13.6035 13.7204 13.6035 14.09C13.6035 14.4595 13.3164 14.7466 12.9468 14.7466H3.05304C2.68349 14.7466 2.39638 14.4595 2.39638 14.09C2.39638 13.7204 2.68349 13.4333 3.05304 13.4333H3.89887V10.7757C3.89887 10.5623 3.98635 10.386 4.13639 10.2573L4.14144 10.253L7.09365 7.91821L4.13566 5.57982C3.98346 5.44923 3.89823 5.25562 3.89823 5.06135L3.89882 2.56738H3.05303C2.68348 2.56738 2.39636 2.28026 2.39636 1.91071C2.39636 1.54116 2.68348 1.25405 3.05303 1.25404V1.25404ZM12.9474 1.58675L3.05304 1.58738C2.86758 1.58738 2.7297 1.72525 2.7297 1.91071C2.7297 2.09617 2.86757 2.23404 3.05303 2.23404H4.23223L4.23157 5.06135V5.06135C4.23158 5.15983 4.27538 5.25908 4.35053 5.32476L7.63107 7.91815L4.35113 10.5123C4.2739 10.5795 4.23221 10.6639 4.23221 10.7757V13.7666H3.05304C2.86759 13.7666 2.72971 13.9045 2.72971 14.09C2.72971 14.2754 2.86759 14.4133 3.05304 14.4133H12.9468C13.1323 14.4133 13.2701 14.2754 13.2701 14.09C13.2701 13.9045 13.1323 13.7667 12.9468 13.7667H11.7676L11.7683 10.7757V10.7757C11.7683 10.6772 11.7245 10.5781 11.6495 10.5124L8.35092 7.91819L11.6489 5.32461C11.726 5.25743 11.7676 5.17306 11.7676 5.06136L11.7683 2.23342H12.9474C13.1329 2.23342 13.2708 2.09554 13.2708 1.91008C13.2708 1.72463 13.1329 1.58676 12.9474 1.58675V1.58675ZM4.87823 2.23332H11.1216V4.89669L7.99994 7.3805L4.87823 4.89669V2.23332ZM5.21157 2.56666V4.73593L7.99994 6.95452L10.7883 4.73593V2.56666H5.21157ZM7.99958 8.45673L11.1216 10.9237V13.7505H4.87823V10.9403L7.99958 8.45673ZM8.0003 8.88213L5.21157 11.101V13.4172H10.7883V11.0852L8.0003 8.88213Z\" fill=\"white\"/>\n</svg>\n","import React from 'react';\nimport Tooltip, { tooltipClasses, TooltipProps } from '@mui/material/Tooltip';\nimport styled from '@emotion/styled/macro';\n\nexport type InformationTooltipProps = TooltipProps & { $padding?: number; $maxWidth?: number };\n\nexport const InformationTooltip = styled(\n ({ children, className, placement = 'top', ...props }: InformationTooltipProps) => (\n <Tooltip\n arrow\n placement={placement}\n {...props}\n classes={{ popper: className, tooltip: 'stigg-tooltip', arrow: 'stigg-tooltip-arrow' }}>\n <div>{children}</div>\n </Tooltip>\n ),\n)(({ theme, $padding = 8, $maxWidth = 300 }) => ({\n [`& .${tooltipClasses.tooltip}`]: {\n backgroundColor: theme.stigg.palette.white,\n maxWidth: $maxWidth,\n boxShadow: theme.stigg.shadows.popover,\n padding: $padding,\n borderRadius: theme.stigg.border.radius,\n color: theme.stigg.palette.text.primary,\n },\n [`& .${tooltipClasses.arrow}`]: {\n color: theme.stigg.palette.white,\n },\n}));\n","import React, { CSSProperties, ReactNode, useEffect, useRef, useState } from 'react';\nimport styled, { css } from 'styled-components';\nimport { TooltipProps } from '@mui/material/Tooltip';\nimport { InformationTooltip } from './InformationTooltip';\nimport { Typography, TypographyProps } from './Typography';\n\nconst StyledText = styled(Typography)<{ $maxLines: number; $wordBreak?: boolean; $display: string; $bold?: boolean }>`\n display: ${({ $display }) => $display};\n -webkit-line-clamp: ${({ $maxLines }) => $maxLines};\n -webkit-box-orient: vertical;\n text-overflow: ellipsis;\n overflow: hidden;\n white-space: normal;\n ${({ $wordBreak }) =>\n $wordBreak &&\n css`\n word-break: break-word;\n `}\n\n ${({ $bold }) =>\n $bold &&\n css`\n font-weight: bold;\n `}\n`;\n\nfunction checkTextClamped(element: HTMLSpanElement) {\n return element && (element.clientHeight < element.scrollHeight || element.offsetWidth < element.scrollWidth);\n}\n\nexport const LongText = ({\n leaveDelay,\n children,\n variant,\n color,\n maxLines = 1,\n wordBreak,\n bold,\n tooltipPlacement = 'top',\n className,\n display = '-webkit-box',\n style,\n 'data-testid': dataTestId,\n}: {\n children: ReactNode;\n leaveDelay?: number;\n variant?: TypographyProps['variant'];\n color?: TypographyProps['color'];\n maxLines?: number;\n wordBreak?: boolean;\n bold?: boolean;\n tooltipPlacement?: TooltipProps['placement'];\n className?: string;\n display?: string;\n style?: CSSProperties;\n ['data-testid']?: string;\n}) => {\n const [isTextClamped, setIsTextClamped] = useState(false);\n const ref = useRef<HTMLSpanElement>(null);\n const content = (\n <StyledText\n ref={ref}\n variant={variant}\n color={color}\n $maxLines={maxLines}\n $wordBreak={wordBreak}\n $bold={bold}\n className={className}\n $display={display}\n style={style}\n data-testid={dataTestId}>\n {children}\n </StyledText>\n );\n\n // Trigger recalculate of text clamped since ref is not always exists on first render\n useEffect(() => {\n if (ref?.current) {\n const textClamped = checkTextClamped(ref.current);\n setIsTextClamped(textClamped);\n }\n }, [ref]);\n\n const textClamped = ref?.current && checkTextClamped(ref.current);\n return (\n <span>\n {isTextClamped || textClamped ? (\n <InformationTooltip\n placement={tooltipPlacement}\n leaveDelay={leaveDelay}\n title={<Typography variant=\"body1\">{children}</Typography>}>\n {content}\n </InformationTooltip>\n ) : (\n content\n )}\n </span>\n );\n};\n","import styled from '@emotion/styled/macro';\nimport React from 'react';\nimport { CustomerPortalSubscription, SubscriptionStatus } from '@stigg/js-client-sdk';\nimport Link from '@mui/material/Link';\nimport SandClockIcon from '../../../../assets/sand-clock.svg';\nimport { Typography } from '../../../common/Typography';\nimport { LongText } from '../../../common/LongText';\nimport { OnManageClick } from '../../CustomerPortalContainer';\nimport { CustomerPortalIntentionType } from '../../types';\n\nconst OnTrialBadge = styled.div`\n width: 100%;\n display: flex;\n align-items: center;\n gap: 4px;\n background-color: ${({ theme }) => theme.stigg.palette.warning};\n border-radius: 10px;\n padding: 8px 16px;\n margin-top: 16px;\n`;\n\nconst StyledLink = styled(Link)`\n text-decoration-color: white;\n color: white;\n cursor: pointer;\n`;\n\nexport function TrialPanel({\n subscription,\n includePlanName,\n onManageSubscription,\n}: {\n subscription: CustomerPortalSubscription | undefined;\n includePlanName: boolean;\n onManageSubscription: OnManageClick;\n}) {\n if (subscription?.status !== SubscriptionStatus.InTrial) {\n return null;\n }\n\n return (\n <OnTrialBadge className=\"stigg-subscription-trial-badge\">\n <SandClockIcon className=\"stigg-subscription-trial-badge-image\" />\n\n <div style={{ flex: 1, marginRight: 4 }}>\n <LongText variant=\"body1\" className=\"stigg-subscription-trial-badge-text\" color=\"white\">\n {`${subscription.trialRemainingDays} days remaining in trial`}\n {includePlanName && ` of the ${subscription.planName} plan`}\n </LongText>\n </div>\n\n <StyledLink\n className=\"stigg-subscription-trial-upgrade-button\"\n onClick={() => onManageSubscription({ intentionType: CustomerPortalIntentionType.UPGRADE_TRIAL_PLAN })}>\n <Typography color=\"white\">Upgrade plan</Typography>\n </StyledLink>\n </OnTrialBadge>\n );\n}\n","import React from 'react';\nimport { CustomerPortalSubscription } from '@stigg/js-client-sdk';\nimport { Typography } from '../../../common/Typography';\nimport { TrialPanel } from './TrialPanel';\nimport { CustomerPortalTheme } from '../../customerPortalTheme';\nimport { OnManageClick } from '../../CustomerPortalContainer';\n\ntype SubscriptionViewProps = {\n mainSubscription: CustomerPortalSubscription;\n trialSubscription: CustomerPortalSubscription | undefined;\n onManageSubscription: OnManageClick;\n theme: CustomerPortalTheme;\n};\n\nexport function SubscriptionView({\n mainSubscription,\n trialSubscription,\n onManageSubscription,\n theme,\n}: SubscriptionViewProps) {\n return (\n <div className=\"stigg-subscription-view-layout\">\n <Typography\n className=\"stigg-subscription-plan-name\"\n variant=\"h1\"\n overrideColor={theme.planNameColor}\n style={{ marginTop: 8 }}>\n {mainSubscription.planName} plan\n </Typography>\n\n <TrialPanel\n subscription={trialSubscription}\n includePlanName={trialSubscription?.planName !== mainSubscription.planName}\n onManageSubscription={onManageSubscription}\n />\n </div>\n );\n}\n","import { CustomerPortalEntitlement } from '@stigg/js-client-sdk';\nimport moment from 'moment';\n\nexport const USAGE_PERCENTAGE_WARNING_THRESHOLD = 70;\n\nexport function getUsagePercentage(currentUsage: number, limit: number) {\n return Math.min(Math.floor((currentUsage / limit) * 100), 100);\n}\n\nexport function getUsageProgressStatus(currentUsage: number) {\n let status: 'standard' | 'warning' | 'error';\n\n if (currentUsage < USAGE_PERCENTAGE_WARNING_THRESHOLD) {\n status = 'standard';\n } else if (currentUsage < 100) {\n status = 'warning';\n } else {\n status = 'error';\n }\n\n return status;\n}\n\nexport function getResetUsageText(entitlement: CustomerPortalEntitlement) {\n if (!entitlement.resetPeriod || !entitlement.nextResetDate) {\n return null;\n }\n\n const calculateResetDiff = (unit: 'days' | 'hours' | 'minutes') => {\n return moment.utc(entitlement.nextResetDate).diff(moment.utc(), unit);\n };\n\n switch (entitlement.resetPeriod) {\n case 'MONTH':\n return `Resets monthly - in ${calculateResetDiff('days')} days`;\n case 'WEEK':\n return `Resets weekly - in ${calculateResetDiff('days')} days`;\n case 'DAY':\n return `Resets daily - in ${calculateResetDiff('hours')} hours`;\n case 'HOUR':\n return `Resets hourly - in ${calculateResetDiff('minutes')} minutes`;\n default:\n return null;\n }\n}\n","import styled from '@emotion/styled/macro';\nimport LinearProgress from '@mui/material/LinearProgress';\nimport React from 'react';\nimport { CustomerPortalEntitlement } from '@stigg/js-client-sdk';\nimport Divider from '@mui/material/Divider';\nimport Color from 'color';\nimport { getUsagePercentage, getUsageProgressStatus } from './FeatureUsage.helper';\n\nexport const StyledLinearProgress = styled(LinearProgress, { shouldForwardProp: (prop) => !prop.startsWith('$') })<{\n $progressStatus: 'standard' | 'warning' | 'error';\n}>`\n height: 4px;\n background-color: ${({ theme }) => Color(theme.stigg.palette.primary).alpha(0.4).string()};\n\n span {\n background-color: ${({ $progressStatus, theme }) => {\n switch ($progressStatus) {\n case 'standard':\n return theme.stigg.palette.primary;\n case 'warning':\n return theme.stigg.palette.warning;\n case 'error':\n return theme.stigg.palette.error;\n default:\n return theme.stigg.palette.primary;\n }\n }};\n }\n`;\n\nexport const StyledDivider = styled(Divider)`\n border-style: dotted;\n border-bottom-width: 2px;\n border-color: ${({ theme }) => Color(theme.stigg.palette.outlinedRestingBorder).alpha(0.4).string()};\n`;\n\nexport type FeatureUsageProgressBarProps = {\n entitlement: CustomerPortalEntitlement;\n};\n\nexport function FeatureUsageProgressBar({ entitlement }: FeatureUsageProgressBarProps) {\n if (entitlement.hasUnlimitedUsage) {\n return <StyledDivider />;\n }\n\n const usagePercentage = getUsagePercentage(entitlement.currentUsage || 0, entitlement.usageLimit!);\n const linearProgressStatus = getUsageProgressStatus(usagePercentage);\n\n return (\n <StyledLinearProgress\n $progressStatus={linearProgressStatus}\n className={`stigg-feature-usage-progress-bar-${linearProgressStatus.toString()}`}\n variant=\"determinate\"\n value={usagePercentage}\n />\n );\n}\n","import { CustomerPortalEntitlement } from '@stigg/js-client-sdk';\nimport { FeatureFragment } from '@stigg/api-client-js/src/generated/sdk';\nimport Button from '@mui/material/Button';\nimport React from 'react';\nimport styled from 'styled-components';\nimport { getUsagePercentage, USAGE_PERCENTAGE_WARNING_THRESHOLD } from './FeatureUsage.helper';\nimport { Typography } from '../../../common/Typography';\nimport { CustomerPortalIntentionType, OnBuyMoreCallbackFn } from '../../types';\nimport { OnManageClick } from '../../CustomerPortalContainer';\n\nconst StyledButton = styled(Button)`\n text-transform: none;\n padding: 0;\n white-space: nowrap;\n`;\n\nexport type EntitlementCtaButtonProps = {\n entitlement: Exclude<CustomerPortalEntitlement, 'feature'>;\n feature: FeatureFragment;\n onManageSubscription: OnManageClick | undefined;\n onBuyMore?: OnBuyMoreCallbackFn;\n canBuyMore: boolean;\n canUpgradeSubscription: boolean;\n hasCustomSubscription: boolean;\n};\n\nexport function EntitlementCtaButton({\n entitlement,\n feature,\n onManageSubscription,\n onBuyMore,\n canBuyMore,\n canUpgradeSubscription,\n hasCustomSubscription,\n}: EntitlementCtaButtonProps) {\n if (hasCustomSubscription || entitlement.hasUnlimitedUsage) {\n return null;\n }\n\n if (getUsagePercentage(entitlement.currentUsage || 0, entitlement.usageLimit!) < USAGE_PERCENTAGE_WARNING_THRESHOLD) {\n return null;\n }\n\n if (canBuyMore) {\n return onBuyMore ? (\n <StyledButton variant=\"text\" onClick={() => onBuyMore(feature, entitlement)}>\n <Typography color=\"primary.main\">Buy more</Typography>\n </StyledButton>\n ) : null;\n }\n\n if (canUpgradeSubscription) {\n return onManageSubscription ? (\n <StyledButton\n variant=\"text\"\n onClick={() => onManageSubscription({ intentionType: CustomerPortalIntentionType.UPGRADE_PLAN })}>\n <Typography color=\"primary.main\">Upgrade</Typography>\n </StyledButton>\n ) : null;\n }\n\n return null;\n}\n","import { Currency, CustomerPortalEntitlement } from '@stigg/js-client-sdk';\nimport React from 'react';\nimport { FeatureFragment } from '@stigg/api-client-js/src/generated/sdk';\nimport { Typography } from '../../../common/Typography';\nimport { currencyPriceFormatter } from '../../../utils/currencyUtils';\nimport { FeatureUsageProgressBar } from '../../usage/featureUsage/FeatureUsageProgressBar';\nimport { LongText } from '../../../common/LongText';\nimport { EntitlementCtaButton } from '../../usage/featureUsage/EntitlementCTAButton';\nimport { OnBuyMoreCallbackFn } from '../../types';\nimport { OnManageClick } from '../../CustomerPortalContainer';\n\nexport type UsageBasedChargeProps = {\n entitlement: Exclude<CustomerPortalEntitlement, 'feature'>;\n feature: FeatureFragment;\n amount: number;\n currency: Currency;\n onBuyMore?: OnBuyMoreCallbackFn;\n onManageSubscription: OnManageClick;\n canUpgradeSubscription: boolean;\n hasCustomSubscription: boolean;\n hideChargePrice?: boolean;\n};\n\nexport function ChargeItem({\n amount,\n currency,\n entitlement,\n feature,\n hideChargePrice,\n onBuyMore,\n onManageSubscription,\n canUpgradeSubscription,\n hasCustomSubscription,\n}: UsageBasedChargeProps) {\n return (\n <div className=\"stigg-charge-list-item\" style={{ display: 'flex', flexDirection: 'column', gap: 12 }}>\n <div style={{ display: 'flex', justifyContent: 'space-between', gap: 12 }}>\n <div style={{ display: 'flex', gap: 12 }}>\n <LongText variant=\"body1\" color=\"primary\">\n {feature.displayName}\n </LongText>\n {!hideChargePrice && (\n <LongText variant=\"body1\" color=\"secondary\">\n {currencyPriceFormatter({ amount, currency })} per {feature.featureUnits}\n </LongText>\n )}\n </div>\n\n <div style={{ display: 'flex', gap: 12 }}>\n <EntitlementCtaButton\n entitlement={entitlement}\n feature={feature}\n canBuyMore\n onBuyMore={onBuyMore}\n onManageSubscription={onManageSubscription}\n canUpgradeSubscription={canUpgradeSubscription}\n hasCustomSubscription={hasCustomSubscription}\n />\n <Typography variant=\"body1\" color=\"primary\" style={{ whiteSpace: 'nowrap' }}>\n {entitlement.hasUnlimitedUsage\n ? entitlement.currentUsage?.toLocaleString()\n : `${entitlement.currentUsage?.toLocaleString()} of ${entitlement.usageLimit?.toLocaleString()}`}\n </Typography>\n </div>\n </div>\n\n <FeatureUsageProgressBar entitlement={entitlement} />\n </div>\n );\n}\n","import { BillingModel, CustomerPortalEntitlement, CustomerPortalSubscription } from '@stigg/js-client-sdk';\nimport React from 'react';\nimport { keyBy } from 'lodash';\nimport { ChargeItem } from './ChargeItem';\nimport { OnBuyMoreCallbackFn } from '../../types';\nimport { OnManageClick } from '../../CustomerPortalContainer';\n\nexport type ChargesProps = {\n subscription: CustomerPortalSubscription;\n entitlements: CustomerPortalEntitlement[];\n onBuyMore?: OnBuyMoreCallbackFn;\n onManageSubscription: OnManageClick;\n canUpgradeSubscription: boolean;\n hasCustomSubscription: boolean;\n};\n\nexport function ChargeList({\n subscription,\n entitlements,\n onBuyMore,\n onManageSubscription,\n hasCustomSubscription,\n canUpgradeSubscription,\n}: ChargesProps) {\n const entitlementByFeature = keyBy(entitlements, 'feature.refId');\n\n const filteredSubscriptionPrices = subscription.prices.filter(\n ({ feature, price }) => !!feature && entitlementByFeature[feature.refId] && !!price,\n );\n\n if (!filteredSubscriptionPrices.length) {\n return null;\n }\n\n return (\n <div className=\"stigg-charge-list\" style={{ display: 'flex', flexDirection: 'column', gap: 16, marginTop: 32 }}>\n {filteredSubscriptionPrices.map(({ feature, price, billingModel }) => {\n if (!feature || !price) {\n return null;\n }\n\n const entitlement = entitlementByFeature[feature.refId];\n\n if (!entitlement || !entitlement.feature) {\n return null;\n }\n\n return (\n <ChargeItem\n key={feature.refId}\n entitlement={entitlement}\n feature={entitlement.feature}\n amount={price.amount}\n currency={price.currency}\n hideChargePrice={billingModel === BillingModel.PerUnit}\n onBuyMore={onBuyMore}\n onManageSubscription={onManageSubscription}\n canUpgradeSubscription={canUpgradeSubscription}\n hasCustomSubscription={hasCustomSubscription}\n />\n );\n })}\n </div>\n );\n}\n","import React from 'react';\nimport { CustomerPortalSubscription, PricingType, SubscriptionStatus } from '@stigg/js-client-sdk';\nimport { SubscriptionsOverviewHeader } from './SubscriptionsOverviewHeader';\nimport { SubscriptionTabs } from './tabs/SubscriptionTabs';\nimport { useCustomerPortalContext } from '../CustomerPortalProvider';\nimport { SubscriptionOverviewLoader } from './SubscriptionOverviewLoader';\nimport { CustomerPortalSection } from '../CustomerPortal';\nimport { SubscriptionScheduledUpdatesAlert } from './subscriptionScheduledUpdates/SubscriptionScheduledUpdatesAlert';\nimport { SectionContainer } from '../common/SectionContainer';\nimport { UpcomingBilling } from './upcomingBilling/UpcomingBilling';\nimport { SubscriptionView } from './subscriptionView/SubscriptionView';\nimport { ChargeList } from './charges/ChargeList';\nimport { OnBuyMoreCallbackFn } from '../types';\nimport { OnManageClick } from '../CustomerPortalContainer';\n\nexport type SubscriptionsOverviewProps = {\n onManageSubscription: OnManageClick;\n onBuyMore?: OnBuyMoreCallbackFn;\n onCancelScheduledUpdates?: (subscription: CustomerPortalSubscription) => void;\n onContactSupport?: () => void;\n hiddenSections?: CustomerPortalSection[];\n cancelScheduledUpdatesButtonTitle: string;\n};\n\nexport function SubscriptionsOverview({\n onManageSubscription,\n onBuyMore,\n onCancelScheduledUpdates,\n onContactSupport,\n hiddenSections,\n cancelScheduledUpdatesButtonTitle,\n}: SubscriptionsOverviewProps) {\n const { customerPortal, isLoading, textOverrides, theme } = useCustomerPortalContext();\n const isLoadingData = isLoading || !customerPortal;\n const { subscriptions, entitlements, canUpgradeSubscription } = customerPortal || {};\n\n const activeSubscription = subscriptions?.find(({ status }) => status === SubscriptionStatus.Active);\n const trialSubscription = subscriptions?.find(({ status }) => status === SubscriptionStatus.InTrial);\n const hasCustomSubscription = activeSubscription?.pricingType === PricingType.Custom;\n const mainSubscription = activeSubscription || trialSubscription;\n\n return (\n <SectionContainer\n className=\"stigg-customer-portal-subscriptions-overview\"\n $backgroundColor={theme.backgroundColor}\n $borderColor={theme.borderColor}>\n {!isLoadingData && activeSubscription && activeSubscription.scheduledUpdates && (\n <SubscriptionScheduledUpdatesAlert\n theme={theme}\n subscription={activeSubscription}\n onCancelScheduledUpdates={onCancelScheduledUpdates}\n cancelScheduledUpdatesButtonTitle={cancelScheduledUpdatesButtonTitle}\n />\n )}\n\n {isLoadingData || !mainSubscription ? (\n <SubscriptionOverviewLoader />\n ) : (\n <div className=\"stigg-overview-layout\" style={{ display: 'flex', alignItems: 'flex-start', gap: 64 }}>\n <div style={{ display: 'flex', flexDirection: 'column', flex: 1 }}>\n <SubscriptionsOverviewHeader\n onManageSubscription={onManageSubscription}\n hideManageButton={hasCustomSubscription}\n textOverrides={textOverrides}\n />\n\n <SubscriptionView\n mainSubscription={mainSubscription}\n trialSubscription={trialSubscription}\n theme={theme}\n onManageSubscription={onManageSubscription}\n />\n\n {activeSubscription && entitlements && (\n <ChargeList\n subscription={activeSubscription}\n entitlements={entitlements}\n onBuyMore={onBuyMore}\n onManageSubscription={onManageSubscription}\n canUpgradeSubscription={!!canUpgradeSubscription}\n hasCustomSubscription={hasCustomSubscription}\n />\n )}\n\n <SubscriptionTabs\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion\n customerPortal={customerPortal!}\n hiddenSections={hiddenSections}\n textOverrides={textOverrides}\n theme={theme}\n />\n </div>\n\n <div style={{ display: 'flex', flexDirection: 'column', width: 319, gap: 24 }}>\n <UpcomingBilling\n subscription={mainSubscription}\n theme={theme}\n onContactSupport={onContactSupport}\n textOverrides={textOverrides}\n />\n </div>\n </div>\n )}\n </SectionContainer>\n );\n}\n","import React from 'react';\nimport styled from '@emotion/styled/macro';\nimport { PoweredByStigg } from '../common/PoweredByStigg';\n\nconst CustomerPortalHeaderLayout = styled.div`\n display: flex;\n width: 100%;\n align-items: flex-end;\n justify-content: flex-end;\n margin-bottom: 24px;\n`;\n\nexport function CustomerPortalHeader({ showWatermark }: { showWatermark?: boolean }) {\n return (\n <CustomerPortalHeaderLayout className=\"stigg-customer-portal-header-layout\">\n <PoweredByStigg source=\"customer_portal\" showWatermark={showWatermark} />\n </CustomerPortalHeaderLayout>\n );\n}\n","import React from 'react';\nimport styled from '@emotion/styled/macro';\nimport { ExternalLink as ExternalLinkIcon } from 'react-feather';\nimport { Typography } from '../../common/Typography';\nimport { StyledButton } from './StyledButton';\n\nconst ExternalLinkText = styled(Typography)`\n text-transform: none;\n`;\n\nconst LinkIcon = styled(ExternalLinkIcon)`\n color: ${({ theme }) => theme.stigg.palette.primary};\n`;\n\nexport type ExternalLinkButtonProps = {\n text: string;\n url: string;\n className: string;\n};\n\nexport function ExternalLinkButton({ text, url, className }: ExternalLinkButtonProps) {\n const onClick = () => {\n window.open(url, '_blank');\n };\n\n return (\n <StyledButton\n className={className}\n variant=\"outlined\"\n startIcon={<LinkIcon size={20} strokeWidth={2.5} />}\n onClick={onClick}>\n <ExternalLinkText color=\"primary.main\">{text}</ExternalLinkText>\n </StyledButton>\n );\n}\n","import styled from '@emotion/styled/macro';\nimport React from 'react';\nimport { FontWeight } from 'styled-typography';\nimport { Typography, TypographyProps } from '../../common/Typography';\n\nexport const InformationGridContainer = styled.div`\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n gap: 16px;\n flex: 1 0 0;\n`;\n\nconst InformationGridRow = styled.div`\n display: flex;\n align-items: flex-start;\n gap: 16px;\n align-self: stretch;\n`;\n\nexport type InformationGridProps = {\n title: string;\n rows: Array<{\n classNamePrefix: string;\n label: string;\n value: string;\n labelTypographyProps?: Partial<TypographyProps>;\n valueTypographyProps?: Partial<TypographyProps>;\n }>;\n};\n\nexport function InformationGrid({ title, rows }: InformationGridProps) {\n return (\n <InformationGridContainer>\n <Typography variant=\"h6\" color=\"secondary\" fontWeight={FontWeight.Medium}>\n {title}\n </Typography>\n {rows.map(({ classNamePrefix, label, value, labelTypographyProps, valueTypographyProps }) => (\n <InformationGridRow key={label}>\n <Typography\n className={`${classNamePrefix}-label`}\n variant=\"body1\"\n color=\"secondary\"\n style={{ width: 80 }}\n {...labelTypographyProps}>\n {label}\n </Typography>\n <Typography className={`${classNamePrefix}-text`} variant=\"body1\" color=\"secondary\" {...valueTypographyProps}>\n {value}\n </Typography>\n </InformationGridRow>\n ))}\n </InformationGridContainer>\n );\n}\n","import Skeleton from 'react-loading-skeleton';\nimport React from 'react';\n\nexport function SkeletonButton() {\n return <Skeleton width={220} height={42} />;\n}\n","import React, { ReactElement } from 'react';\nimport Divider from '@mui/material/Divider';\nimport { padStart } from 'lodash';\nimport Skeleton from 'react-loading-skeleton';\nimport { useCustomerPortalContext } from '../CustomerPortalProvider';\nimport { SectionTitle } from '../common/SectionTitle';\nimport { SectionContainer } from '../common/SectionContainer';\nimport { ExternalLinkButton } from '../common/ExternalLinkButton';\nimport { InformationGrid, InformationGridContainer } from './InformationGrid';\nimport { SectionHeader } from '../common/SectionHeader';\nimport { SkeletonButton } from '../common/SkeletonButton';\n\nexport const EMPTY_CHAR = '-';\n\nexport function PaymentDetailsSection() {\n const { customerPortal, isLoading, textOverrides, theme } = useCustomerPortalContext();\n const { billingInformation } = customerPortal || {};\n const isLoadingData = !billingInformation || isLoading;\n\n const items: ReactElement[] = [];\n\n if (isLoadingData) {\n items.push(\n ...[\n <InformationGridContainer key=\"information-loading-data-top\">\n <Skeleton width={220} height={12} />\n <Skeleton width={220} height={12} />\n <Skeleton width={220} height={12} />\n </InformationGridContainer>,\n <Divider key=\"information-loading-data-divider\" orientation=\"vertical\" style={{ minHeight: 93 }} />,\n <InformationGridContainer key=\"information-loading-data-bottom\">\n <Skeleton width={220} height={12} />\n <Skeleton width={220} height={12} />\n <Skeleton width={220} height={12} />\n </InformationGridContainer>,\n ],\n );\n } else {\n items.push(\n <InformationGrid\n key=\"information-billing-data-billed-to\"\n title=\"Billed to\"\n rows={[\n {\n classNamePrefix: 'stigg-customer-name',\n label: 'Name',\n value: billingInformation?.name || EMPTY_CHAR,\n valueTypographyProps: billingInformation?.name ? {} : { color: 'disabled' },\n },\n {\n classNamePrefix: 'stigg-customer-email',\n label: 'Email',\n value: billingInformation?.email || EMPTY_CHAR,\n valueTypographyProps: billingInformation?.email ? {} : { color: 'disabled' },\n },\n ]}\n />,\n );\n\n if (\n billingInformation?.defaultPaymentMethodId &&\n billingInformation.defaultPaymentMethodLast4Digits &&\n billingInformation.defaultPaymentExpirationMonth &&\n billingInformation.defaultPaymentExpirationYear\n ) {\n items.unshift(\n <Divider key=\"information-billing-data-divider\" orientation=\"vertical\" style={{ minHeight: 93 }} />,\n );\n items.unshift(\n <InformationGrid\n key=\"information-billing-data-payment-method\"\n title=\"Payment method\"\n rows={[\n {\n classNamePrefix: 'stigg-credit-card',\n label: 'Card',\n value: `Ending in ${billingInformation.defaultPaymentMethodLast4Digits}`,\n },\n {\n classNamePrefix: 'stigg-credit-card-expiration',\n label: 'Expires',\n value: `${padStart(billingInformation.defaultPaymentExpirationMonth.toString(), 2, '0')}/${\n billingInformation.defaultPaymentExpirationYear\n }`,\n },\n ]}\n />,\n );\n }\n }\n\n if (\n !isLoadingData &&\n !billingInformation?.name &&\n !billingInformation?.email &&\n !billingInformation?.defaultPaymentMethodId\n ) {\n return null;\n }\n\n const editButton = isLoadingData ? (\n <SkeletonButton />\n ) : customerPortal?.billingPortalUrl ? (\n <ExternalLinkButton\n url={customerPortal.billingPortalUrl}\n text={textOverrides.editPaymentDetails}\n className=\"stigg-edit-payment-details-button\"\n />\n ) : null;\n\n return (\n <SectionContainer\n className=\"stigg-payment-details-section-layout\"\n $backgroundColor={theme.backgroundColor}\n $borderColor={theme.borderColor}>\n <SectionHeader className=\"stigg-payment-details-section-header\">\n <SectionTitle\n isLoading={isLoadingData}\n className=\"stigg-payment-details-section-title\"\n title=\"Payment details\"\n />\n {editButton}\n </SectionHeader>\n\n <div style={{ display: 'flex', alignItems: 'stretch', gap: 64 }}>{items}</div>\n </SectionContainer>\n );\n}\n","import styled from '@emotion/styled/macro';\nimport { STIGG_WATERMARK_CLASSNAME } from '../../common/PoweredByStigg';\nimport { SectionContainer } from '../common/SectionContainer';\n\nexport const CustomerPortalPaywallLayout = styled(SectionContainer)<{\n $backgroundColor: string;\n $borderColor: string;\n}>`\n position: relative;\n\n .stigg-paywall-layout {\n width: 100%;\n }\n\n .stigg-paywall-plans-layout {\n flex-wrap: nowrap;\n width: 100%;\n overflow-x: auto;\n justify-content: unset;\n padding: 10px 0px 0px 0px;\n }\n\n .stigg-paywall-plans-layout .stigg-plan-offering-container:first-of-type {\n margin-left: auto;\n }\n .stigg-paywall-plans-layout .stigg-plan-offering-container:last-child {\n margin-right: auto;\n }\n\n .${STIGG_WATERMARK_CLASSNAME} {\n display: none;\n }\n`;\n","import React from 'react';\nimport { CustomerPortalTheme } from '../customerPortalTheme';\nimport { CustomerPortalPaywallLayout } from './CustomerPortalPaywall.style';\nimport { SectionTitle } from '../common/SectionTitle';\nimport { SectionHeader } from '../common/SectionHeader';\n\ntype CustomerPortalPaywallProps = {\n paywallComponent?: React.ReactNode;\n theme: CustomerPortalTheme;\n title: string;\n isLoading: boolean;\n};\n\nexport const CustomerPortalPaywall = React.forwardRef<HTMLDivElement, CustomerPortalPaywallProps>(\n ({ paywallComponent, theme, title, isLoading }, ref) => {\n if (!paywallComponent) {\n return null;\n }\n\n return (\n <CustomerPortalPaywallLayout\n className=\"stigg-customer-portal-paywall-section\"\n ref={ref}\n $backgroundColor={theme.backgroundColor}\n $borderColor={theme.borderColor}>\n <SectionHeader className=\"stigg-customer-portal-paywall-header\">\n <SectionTitle isLoading={isLoading} className=\"stigg-customer-portal-paywall-section-title\" title={title} />\n </SectionHeader>\n\n {paywallComponent}\n </CustomerPortalPaywallLayout>\n );\n },\n);\n","import styled from '@emotion/styled/macro';\n\nexport const CustomerPortalLayout = styled.div`\n width: 100%;\n display: flex;\n flex-direction: column;\n align-items: center;\n\n & * {\n box-sizing: border-box;\n }\n`;\n\nexport const CustomerPortalSections = styled.div`\n width: 100%;\n display: flex;\n flex-direction: column;\n align-items: center;\n row-gap: 24px;\n`;\n","import { FeatureFragment } from '@stigg/api-client-js/src/generated/sdk';\nimport lowercase from 'lodash/lowerCase';\n\nexport function getFeatureDisplayNameText(\n featureDisplayName: string,\n featureUnits: string | undefined | null,\n featureUnitsPlural: string | undefined | null,\n) {\n if (!featureUnits && !featureUnitsPlural) {\n return featureDisplayName;\n }\n\n const displayNameLowerCase = lowercase(featureDisplayName);\n if (\n displayNameLowerCase === lowercase(featureUnits || '') ||\n displayNameLowerCase === lowercase(featureUnitsPlural || '')\n ) {\n return featureDisplayName;\n }\n\n return `${featureDisplayName} (${featureUnitsPlural})`;\n}\n\nexport function getFeatureDisplayName(feature: FeatureFragment) {\n return getFeatureDisplayNameText(feature.displayName, feature.featureUnits, feature.featureUnitsPlural);\n}\n","import styled from '@emotion/styled/macro';\n\nexport const FeatureUsageContainer = styled.div<{ $highlight: boolean; $borderColor: string }>`\n display: flex;\n flex-direction: column;\n padding: 24px;\n border: ${({ $borderColor }) => `1px solid ${$borderColor}`};\n border-radius: 10px;\n row-gap: 16px;\n height: 100%;\n\n ${({ theme, $highlight }) => $highlight && `background-color: ${theme.stigg.palette.backgroundSection}`};\n`;\n","import isUndefined from 'lodash/isUndefined';\nimport React from 'react';\nimport { BillingModel, CustomerPortalEntitlement } from '@stigg/js-client-sdk';\nimport { CustomerPortalSubscriptionPriceFragment } from '@stigg/api-client-js/src/generated/sdk';\nimport { Typography } from '../../../common/Typography';\nimport { useCustomerPortalContext } from '../../CustomerPortalProvider';\nimport { getResetUsageText, getUsagePercentage } from './FeatureUsage.helper';\nimport { getFeatureDisplayName } from '../../../utils/getFeatureName';\nimport { FeatureUsageContainer } from './FeatureUsage.style';\nimport { FeatureUsageProgressBar } from './FeatureUsageProgressBar';\nimport { Icon } from '../../../common/Icon';\nimport { InformationTooltip } from '../../../common/InformationTooltip';\nimport { LongText } from '../../../common/LongText';\nimport { EntitlementCtaButton } from './EntitlementCTAButton';\nimport { OnBuyMoreCallbackFn } from '../../types';\nimport { OnManageClick } from '../../CustomerPortalContainer';\n\nexport type UsageBoxProps = {\n entitlement: CustomerPortalEntitlement;\n subscriptionPrice: CustomerPortalSubscriptionPriceFragment | undefined;\n onManageSubscription: OnManageClick | undefined;\n onBuyMore?: OnBuyMoreCallbackFn;\n hasCustomSubscription: boolean;\n canUpgradeSubscription: boolean;\n};\n\nexport function FeatureUsage({\n entitlement,\n subscriptionPrice,\n onManageSubscription,\n onBuyMore,\n hasCustomSubscription,\n canUpgradeSubscription,\n}: UsageBoxProps) {\n const { theme } = useCustomerPortalContext();\n\n const hasOverageUsage = !entitlement.hasUnlimitedUsage && entitlement.currentUsage! > entitlement.usageLimit!;\n\n if (!entitlement.feature) {\n return null;\n }\n\n return (\n <FeatureUsageContainer $highlight={!!subscriptionPrice} $borderColor={theme.borderColor}>\n <div style={{ display: 'flex', alignItems: 'center', justifyContent: 'space-between', gap: 16 }}>\n <LongText variant=\"body1\">{entitlement.feature && getFeatureDisplayName(entitlement.feature)}</LongText>\n {subscriptionPrice && (\n <InformationTooltip\n title={\n <Typography variant=\"body1\">\n {subscriptionPrice.billingModel === BillingModel.PerUnit\n ? 'Billed for committed usage'\n : 'Billed for actual usage'}\n </Typography>\n }>\n <Icon icon=\"DollarCoin\" svgStrokeColor={theme.iconsColor} />\n </InformationTooltip>\n )}\n </div>\n\n <div style={{ display: 'flex', justifyContent: 'space-between', alignItems: 'center', gap: 8 }}>\n <LongText\n variant=\"body1\"\n color={hasOverageUsage ? 'error' : 'primary'}\n data-testid={`usage-data-${entitlement.feature?.refId}`}>\n {entitlement.currentUsage?.toLocaleString()}\n {!entitlement.hasUnlimitedUsage &&\n ` / ${entitlement.usageLimit?.toLocaleString()} (${getUsagePercentage(\n entitlement.currentUsage || 0,\n entitlement.usageLimit!,\n )}%)`}\n </LongText>\n\n <EntitlementCtaButton\n entitlement={entitlement}\n feature={entitlement.feature}\n onBuyMore={onBuyMore}\n canBuyMore={!!subscriptionPrice}\n onManageSubscription={onManageSubscription}\n canUpgradeSubscription={canUpgradeSubscription}\n hasCustomSubscription={hasCustomSubscription}\n />\n </div>\n\n <FeatureUsageProgressBar entitlement={entitlement} />\n\n {!entitlement.hasUnlimitedUsage &&\n !isUndefined(entitlement.usageLimit) &&\n !isUndefined(entitlement.currentUsage) &&\n entitlement.resetPeriod &&\n entitlement.nextResetDate ? (\n <Typography color=\"secondary\">{getResetUsageText(entitlement)}</Typography>\n ) : null}\n {entitlement.hasUnlimitedUsage && <Typography color=\"secondary\">In current billing period</Typography>}\n </FeatureUsageContainer>\n );\n}\n","import styled from '@emotion/styled/macro';\nimport Grid from '@mui/material/Grid';\nimport { range } from 'lodash';\nimport Skeleton from 'react-loading-skeleton';\nimport React from 'react';\n\nexport const Footer = styled.div`\n margin-top: 32px;\n`;\n\nexport function CustomerUsageLoader() {\n return (\n <Grid container spacing={4} className=\"stigg-subscription-usage-skeleton-layout\">\n {range(6).map((item) => (\n <Grid key={item} item xs={4}>\n <Skeleton width={280} height={120} />\n </Grid>\n ))}\n </Grid>\n );\n}\n","import { MeterType, PricingType, SubscriptionStatus } from '@stigg/js-client-sdk';\nimport React from 'react';\nimport { compact, keyBy } from 'lodash';\nimport { Minus, Plus } from 'react-feather';\nimport Grid from '@mui/material/Grid';\nimport { useCustomerPortalContext } from '../CustomerPortalProvider';\nimport { FeatureUsage } from './featureUsage/FeatureUsage';\nimport { Footer, CustomerUsageLoader } from './CustomerUsageData.style';\nimport { SectionContainer } from '../common/SectionContainer';\nimport { SectionHeader } from '../common/SectionHeader';\nimport { SectionTitle } from '../common/SectionTitle';\nimport { StyledButton } from '../common/StyledButton';\nimport { OnBuyMoreCallbackFn } from '../types';\nimport { OnManageClick } from '../CustomerPortalContainer';\n\nconst MAX_BOXES = 6;\n\nexport type CustomerUsageDataProps = {\n onManageSubscription?: OnManageClick;\n onBuyMore?: OnBuyMoreCallbackFn;\n};\n\nexport function CustomerUsageData({ onManageSubscription, onBuyMore }: CustomerUsageDataProps) {\n const [showAll, setShowAll] = React.useState(false);\n const { customerPortal, isLoading, textOverrides, theme } = useCustomerPortalContext();\n const isLoadingData = isLoading || !customerPortal;\n const { entitlements, subscriptions } = customerPortal || {};\n const meteredEntitlements = entitlements?.filter(\n (entitlement) =>\n entitlement.feature?.meterType === MeterType.Fluctuating ||\n entitlement.feature?.meterType === MeterType.Incremental,\n );\n const activeSubscription = subscriptions?.find(({ status }) => status === SubscriptionStatus.Active);\n const hasCustomSubscription = activeSubscription?.pricingType === PricingType.Custom;\n const canUpgradeSubscription = !!customerPortal?.canUpgradeSubscription;\n\n const subscriptionPriceByFeature = keyBy(activeSubscription?.prices, 'feature.refId');\n const entitlementByFeature = keyBy(meteredEntitlements, 'feature.refId');\n\n // sort features by prices first, then other entitlements\n const priceEntitlements = compact(\n activeSubscription?.prices.map(\n (subscriptionPrice) => subscriptionPrice.feature && entitlementByFeature[subscriptionPrice.feature.refId],\n ),\n );\n const otherEntitlements = compact(\n meteredEntitlements?.filter((entitlement) => !subscriptionPriceByFeature[entitlement.feature!.refId]),\n );\n const sortedEntitlements = [...priceEntitlements, ...otherEntitlements];\n\n // 4 -> 3 per row, 6 -> 2 per row\n const xs = sortedEntitlements.length > 2 ? 4 : 6;\n\n const entitlementsToShow = showAll ? sortedEntitlements : sortedEntitlements.slice(0, MAX_BOXES);\n\n const toggleShowAll = () => setShowAll((prevState) => !prevState);\n\n if (!isLoadingData && !meteredEntitlements?.length) {\n return null;\n }\n\n return (\n <SectionContainer\n className=\"stigg-subscription-usage-layout\"\n $backgroundColor={theme.backgroundColor}\n $borderColor={theme.borderColor}>\n <SectionHeader>\n <SectionTitle\n title={textOverrides.usageTabTitle}\n className=\"stigg-customer-portal-usage-section-title\"\n isLoading={isLoadingData}\n />\n </SectionHeader>\n\n {isLoadingData ? (\n <CustomerUsageLoader />\n ) : (\n <>\n <Grid container spacing={4}>\n {entitlementsToShow.map((entitlement) => (\n <Grid key={entitlement.feature!.refId} item xs={xs}>\n <FeatureUsage\n key={entitlement.feature!.refId}\n subscriptionPrice={subscriptionPriceByFeature[entitlement.feature!.refId]}\n entitlement={entitlement}\n onManageSubscription={onManageSubscription}\n onBuyMore={onBuyMore}\n hasCustomSubscription={hasCustomSubscription}\n canUpgradeSubscription={canUpgradeSubscription}\n />\n </Grid>\n ))}\n </Grid>\n\n {sortedEntitlements.length > MAX_BOXES && (\n <Footer>\n <StyledButton\n className=\"stigg-usage-toggle-many-button\"\n variant=\"text\"\n startIcon={showAll ? <Minus /> : <Plus />}\n onClick={toggleShowAll}>\n {showAll ? 'Show less' : 'Show more'}\n </StyledButton>\n </Footer>\n )}\n </>\n )}\n </SectionContainer>\n );\n}\n","import React, { useRef } from 'react';\nimport { SubscriptionsOverview } from './subscriptionOverview/SubscriptionsOverview';\nimport { CustomerPortalHeader } from './CustomerPortalHeader';\nimport { PaymentDetailsSection } from './billing/PaymentDetailsSection';\nimport { CustomerPortalPaywall } from './paywall/CustomerPortalPaywall';\nimport { useCustomerPortalContext } from './CustomerPortalProvider';\nimport { CustomerPortalLayout, CustomerPortalSections } from './CustomerPortal.style';\nimport { CustomerPortalProps } from './CustomerPortal';\nimport { InvoicesSection, useStiggContext } from '../..';\nimport { CustomerUsageData } from './usage/CustomerUsageData';\nimport { CustomerPortalIntentionType } from './types';\n\nexport type OnManageClick = ({ intentionType }: { intentionType: CustomerPortalIntentionType }) => void;\n\nexport function CustomerPortalContainer({\n onManageSubscription,\n onBuyMore,\n onCancelScheduledUpdates,\n onContactSupport,\n paywallComponent,\n hiddenSections,\n}: CustomerPortalProps) {\n const { stigg } = useStiggContext();\n const { customerPortal, textOverrides, theme, isLoading } = useCustomerPortalContext();\n const customerPortalSectionRef = useRef<HTMLDivElement>(null);\n\n const onManageClick: OnManageClick = ({ intentionType }: { intentionType: CustomerPortalIntentionType }) => {\n if (onManageSubscription) {\n void onManageSubscription({\n intentionType,\n customerSubscriptions: customerPortal?.subscriptions ?? [],\n });\n } else {\n customerPortalSectionRef?.current?.scrollIntoView({ behavior: 'smooth' });\n }\n };\n\n const shouldShowUsage = !hiddenSections?.some((section) => section === 'usage');\n const shouldShowPaymentDetails = !hiddenSections?.some(\n (section) => section === 'paymentDetails' || section === 'billingInformation',\n );\n const shouldShowInvoices = !hiddenSections?.some(\n (section) => section === 'invoices' || section === 'billingInformation',\n );\n\n return (\n <CustomerPortalLayout className=\"stigg-customer-portal-layout\">\n <CustomerPortalHeader showWatermark={stigg.isWidgetWatermarkEnabled && !!customerPortal} />\n <CustomerPortalSections className=\"stigg-customer-portal-sections\">\n <SubscriptionsOverview\n onCancelScheduledUpdates={onCancelScheduledUpdates}\n onBuyMore={onBuyMore}\n onManageSubscription={onManageClick}\n onContactSupport={onContactSupport}\n hiddenSections={hiddenSections}\n cancelScheduledUpdatesButtonTitle={textOverrides.cancelScheduledUpdatesButtonTitle}\n />\n {shouldShowUsage && <CustomerUsageData onManageSubscription={onManageClick} onBuyMore={onBuyMore} />}\n <CustomerPortalPaywall\n ref={customerPortalSectionRef}\n paywallComponent={paywallComponent}\n theme={theme}\n title={textOverrides.paywallSectionTitle}\n isLoading={!customerPortal || isLoading}\n />\n {shouldShowPaymentDetails && <PaymentDetailsSection />}\n {shouldShowInvoices && <InvoicesSection />}\n </CustomerPortalSections>\n </CustomerPortalLayout>\n );\n}\n","import React from 'react';\nimport { CustomerPortalSubscription } from '@stigg/js-client-sdk';\nimport { CustomerPortalProvider } from './CustomerPortalProvider';\nimport { CustomerPortalContainer } from './CustomerPortalContainer';\nimport { DeepPartial } from '../../types';\nimport { CustomerPortalLocalization } from './customerPortalTextOverrides';\nimport { CustomerPortalTheme } from './customerPortalTheme';\nimport { OnBuyMoreCallbackFn, OnManageSubscriptionFn } from './types';\n\nexport type CustomerPortalSection =\n | 'usage'\n | 'addons'\n | 'promotionalEntitlements'\n | 'billingInformation'\n | 'paymentDetails'\n | 'invoices';\n\nexport type CustomerPortalProps = {\n onManageSubscription?: OnManageSubscriptionFn;\n onBuyMore?: OnBuyMoreCallbackFn;\n onCancelScheduledUpdates?: (subscription: CustomerPortalSubscription) => Promise<void> | void;\n onContactSupport?: () => Promise<void> | void;\n paywallComponent?: React.ReactNode;\n hiddenSections?: CustomerPortalSection[];\n textOverrides?: DeepPartial<CustomerPortalLocalization>;\n theme?: DeepPartial<CustomerPortalTheme>;\n resourceId?: string;\n productId?: string;\n};\n\nexport function CustomerPortal({ textOverrides, theme, resourceId, productId, ...restProps }: CustomerPortalProps) {\n return (\n <CustomerPortalProvider textOverrides={textOverrides} theme={theme} resourceId={resourceId} productId={productId}>\n <CustomerPortalContainer {...restProps} />\n </CustomerPortalProvider>\n );\n}\n","import React from 'react';\nimport { useCustomerPortalContext } from '../CustomerPortalProvider';\nimport { SectionTitle } from '../common/SectionTitle';\nimport { ExternalLinkButton } from '../common/ExternalLinkButton';\nimport { SectionContainer } from '../common/SectionContainer';\nimport { SectionHeader } from '../common/SectionHeader';\nimport { SkeletonButton } from '../common/SkeletonButton';\n\nexport function InvoicesSection() {\n const { customerPortal, isLoading, textOverrides, theme } = useCustomerPortalContext();\n const isLoadingData = !customerPortal || isLoading;\n\n const viewInvoiceHistoryButton = isLoadingData ? (\n <SkeletonButton />\n ) : customerPortal?.billingPortalUrl ? (\n <ExternalLinkButton\n url={customerPortal.billingPortalUrl}\n text={textOverrides.viewInvoiceHistory}\n className=\"stigg-view-invoice-history-button\"\n />\n ) : null;\n\n if (!isLoadingData && !customerPortal?.billingPortalUrl) {\n return null;\n }\n\n return (\n <SectionContainer\n className=\"stigg-invoices-section-layout\"\n $backgroundColor={theme.backgroundColor}\n $borderColor={theme.borderColor}>\n <SectionHeader className=\"stigg-invoices-section-header\">\n <SectionTitle\n isLoading={isLoadingData}\n className=\"stigg-invoices-section-title\"\n title={textOverrides.invoicesTitle}\n />\n {viewInvoiceHistoryButton}\n </SectionHeader>\n </SectionContainer>\n );\n}\n","import sortBy from 'lodash/sortBy';\nimport { Addon, BillingPeriod, Currency, SubscriptionAddon } from '@stigg/js-client-sdk';\n\ntype FilterAddonsBaseProps = {\n billingPeriod: BillingPeriod;\n currency: Currency;\n billingCountryCode?: string;\n};\n\nexport const sortAddons = (addons: Addon[]) => {\n return sortBy(addons, 'displayName');\n};\n\nexport const sortSubscriptionAddons = (addons: SubscriptionAddon[]) => {\n return sortBy(addons, 'addon.displayName');\n};\n\nfunction filterAddonPricePointsByBillingPeriod(addon: Addon, billingPeriod: BillingPeriod) {\n return addon.pricePoints.some((pricePoint) => pricePoint.billingPeriod === billingPeriod);\n}\n\nfunction mapAddonPricePointsByBillingCountryCode({\n addon,\n currency,\n billingCountryCode,\n}: {\n addon: Addon;\n currency: Currency;\n billingCountryCode?: string;\n}) {\n return {\n ...addon,\n pricePoints: addon.pricePoints.filter(\n (pricePoint) =>\n pricePoint.currency === currency &&\n (billingCountryCode ? pricePoint.billingCountryCode === billingCountryCode : true),\n ),\n };\n}\n\nexport function filterAddons({\n addons,\n billingPeriod,\n billingCountryCode,\n currency,\n}: { addons?: Addon[] } & FilterAddonsBaseProps): Addon[] {\n return (\n addons\n ?.filter((addon) => filterAddonPricePointsByBillingPeriod(addon, billingPeriod))\n ?.map((addon) => mapAddonPricePointsByBillingCountryCode({ addon, currency, billingCountryCode })) || []\n );\n}\n\nexport function filterSubscriptionAddons({\n addons,\n billingPeriod,\n billingCountryCode,\n currency,\n}: { addons?: SubscriptionAddon[] } & FilterAddonsBaseProps): SubscriptionAddon[] {\n return (\n addons\n ?.filter((addon) => filterAddonPricePointsByBillingPeriod(addon.addon, billingPeriod))\n ?.map((addon) => ({\n ...addon,\n addon: mapAddonPricePointsByBillingCountryCode({ addon: addon.addon, currency, billingCountryCode }),\n })) || []\n );\n}\n","import cloneDeep from 'lodash/cloneDeep';\nimport remove from 'lodash/remove';\nimport { Addon, BillingPeriod, Currency, Plan, Subscription, SubscriptionAddon } from '@stigg/js-client-sdk';\nimport { useCheckoutContext } from '../CheckoutProvider';\nimport {\n filterAddons,\n filterSubscriptionAddons,\n sortAddons,\n sortSubscriptionAddons,\n} from '../steps/addons/addon.utils';\n\nexport type AddonsStepState = {\n addons: SubscriptionAddon[];\n initialAddons?: SubscriptionAddon[];\n availableAddons?: Addon[];\n};\n\ntype GetAddonsStepInitialStateProps = {\n plan?: Plan;\n billingPeriod: BillingPeriod;\n activeSubscription?: Subscription | null;\n billingCountryCode?: string;\n};\n\nexport function getAddonsStepInitialState({\n activeSubscription,\n plan,\n billingPeriod,\n billingCountryCode,\n}: GetAddonsStepInitialStateProps): AddonsStepState {\n let addons: SubscriptionAddon[] = [];\n const currency = plan?.pricePoints?.[0]?.currency || Currency.Usd;\n const availableAddons = sortAddons(\n filterAddons({\n addons: plan?.compatibleAddons,\n billingPeriod,\n billingCountryCode,\n currency,\n }),\n );\n\n const activeSubscriptionAddons = filterSubscriptionAddons({\n addons: activeSubscription?.addons,\n billingPeriod,\n billingCountryCode,\n currency,\n });\n\n if (activeSubscriptionAddons?.length && availableAddons?.length) {\n addons = sortSubscriptionAddons(\n activeSubscriptionAddons.filter((addon) => availableAddons.some((planAddon) => planAddon.id === addon.addon.id)),\n );\n }\n\n return { addons, initialAddons: cloneDeep(addons), availableAddons };\n}\n\nfunction useSetAddon() {\n const [, setState] = useCheckoutContext();\n\n return (addon: Addon, quantity: number) =>\n setState((draft) => {\n const addonToUpdate = draft.addonsStep.addons.find((currentAddon) => currentAddon.addon.id === addon.id);\n\n if (addonToUpdate) {\n addonToUpdate.quantity = quantity;\n } else {\n draft.addonsStep.addons.push({ addon, quantity });\n draft.addonsStep.addons = sortSubscriptionAddons(draft.addonsStep.addons);\n }\n });\n}\n\nfunction useRemoveAddon() {\n const [, setState] = useCheckoutContext();\n\n return (addonId: string) =>\n setState((draft) => {\n remove(draft.addonsStep.addons, (addon) => addon.addon.id === addonId);\n });\n}\n\nfunction useAddonsState() {\n const [{ addonsStep }] = useCheckoutContext();\n return addonsStep;\n}\n\nexport function useAddonsStepModel() {\n const state = useAddonsState();\n\n return {\n ...state,\n setAddon: useSetAddon(),\n removeAddon: useRemoveAddon(),\n };\n}\n","import { useCheckoutContext } from '../CheckoutProvider';\n\nexport type WidgetState = {\n readOnly?: boolean;\n isLoadingCheckoutData?: boolean;\n isValid?: boolean;\n};\n\nfunction useCheckoutState() {\n const [{ checkout, widgetState, checkoutLocalization }] = useCheckoutContext();\n return { checkoutState: checkout, widgetState, checkoutLocalization };\n}\n\nfunction useSetWidgetReadonly() {\n const [, setState] = useCheckoutContext();\n\n return (readOnly: boolean) =>\n setState((draft) => {\n draft.widgetState.readOnly = readOnly;\n });\n}\n\nfunction useSetIsValid() {\n const [, setState] = useCheckoutContext();\n\n return (isValid: boolean) =>\n setState((draft) => {\n draft.widgetState.isValid = isValid;\n });\n}\n\nexport function useCheckoutModel() {\n const { checkoutState, widgetState, checkoutLocalization } = useCheckoutState();\n\n return {\n checkoutState,\n widgetState,\n checkoutLocalization,\n setWidgetReadOnly: useSetWidgetReadonly(),\n setIsValid: useSetIsValid(),\n };\n}\n","import { GetCheckoutStateResults } from '@stigg/js-client-sdk';\nimport { useEffect, useState } from 'react';\nimport logger from '../../../services/logger';\nimport { useStiggContext } from '../../StiggProvider';\nimport { MockCheckoutStateCallback } from '../types';\n\ntype UseLoadCheckoutProps = {\n planId: string;\n resourceId?: string;\n billingCountryCode?: string;\n onMockCheckoutState?: MockCheckoutStateCallback;\n};\n\nexport function useLoadCheckout({ planId, resourceId, billingCountryCode, onMockCheckoutState }: UseLoadCheckoutProps) {\n const { stigg } = useStiggContext();\n const [isLoading, setIsLoading] = useState(true);\n const [checkout, setCheckout] = useState<GetCheckoutStateResults | null>();\n\n useEffect(() => {\n const loadCheckout = async () => {\n try {\n const checkout = await stigg.getCheckoutState({ planId, resourceId, billingCountryCode });\n setCheckout(checkout);\n } catch (err) {\n logger.error(`Failed to load checkout ${(err as any)?.message}`, err as any);\n } finally {\n setIsLoading(false);\n }\n };\n\n if (onMockCheckoutState) {\n setIsLoading(false);\n setCheckout(onMockCheckoutState({ planId, resourceId, billingCountryCode }));\n return;\n }\n\n if (stigg.isCustomerLoaded) {\n setIsLoading(true);\n void loadCheckout();\n }\n }, [stigg, stigg.isCustomerLoaded, resourceId, planId, billingCountryCode, onMockCheckoutState]);\n\n return {\n checkout,\n isLoading,\n };\n}\n","import { Price } from '@stigg/js-client-sdk';\n\nexport const getValidPriceQuantity = (price: Price, quantity: number) => {\n if (price.minUnitQuantity && quantity < price.minUnitQuantity) {\n return price.minUnitQuantity;\n }\n if (price.maxUnitQuantity && quantity > price.maxUnitQuantity) {\n return price.maxUnitQuantity;\n }\n return quantity;\n};\n","import keyBy from 'lodash/keyBy';\nimport compact from 'lodash/compact';\nimport { BillableFeatureInput, BillingPeriod } from '@stigg/api-client-js/src/generated/sdk';\nimport { BillableFeature, BillingModel, Plan, Price, Subscription } from '@stigg/js-client-sdk';\nimport { useCheckoutContext } from '../CheckoutProvider';\nimport { getTierByQuantity, hasTierWithUnitPrice } from '../../utils/priceTierUtils';\nimport { getValidPriceQuantity } from '../../utils/priceUtils';\n\nexport type PlanStepState = {\n billingPeriod: BillingPeriod;\n billableFeatures: BillableFeatureInput[];\n billingCountryCode?: string;\n};\n\ntype GetPlanStepInitialStateProps = {\n preferredBillingPeriod?: BillingPeriod;\n plan?: Plan;\n activeSubscription?: Subscription | null;\n billingCountryCode?: string;\n preconfiguredBillableFeatures: BillableFeature[];\n};\n\nconst getBillingPeriod = (billingPeriod: BillingPeriod, hasMonthlyPrices?: boolean, hasAnnualPrices?: boolean) => {\n if (billingPeriod === BillingPeriod.Monthly && hasMonthlyPrices) {\n return billingPeriod;\n }\n if (billingPeriod === BillingPeriod.Annually && hasAnnualPrices) {\n return billingPeriod;\n }\n return null;\n};\n\nconst isInAdvanceCommitmentCharge = ({ pricingModel }: Price) => {\n return pricingModel === BillingModel.PerUnit;\n};\n\nfunction getBillableFeatures(\n preconfiguredBillableFeatures: BillableFeature[],\n planPrices?: Price[],\n activeSubscription?: Subscription | null,\n): BillableFeature[] {\n if (!planPrices) return [];\n\n const preconfBillableFeaturesByFeatureId = keyBy(preconfiguredBillableFeatures, 'featureId');\n\n const quantityByFeatureId = keyBy(\n compact(\n activeSubscription?.prices?.map((charge) => {\n const { feature } = charge;\n if (!feature || !isInAdvanceCommitmentCharge(charge)) {\n return null;\n }\n\n return {\n featureId: feature.featureId,\n quantity: feature.unitQuantity || null,\n };\n }),\n ),\n 'featureId',\n );\n\n return compact(\n planPrices?.map((price) => {\n const featureId = price.feature?.featureId;\n if (!featureId || !isInAdvanceCommitmentCharge(price)) {\n return null;\n }\n\n let quantity;\n const preconfiguredQuantity =\n preconfBillableFeaturesByFeatureId[featureId]?.quantity || quantityByFeatureId[featureId]?.quantity;\n\n quantity = getValidPriceQuantity(price, preconfiguredQuantity || 1);\n\n if (price.isTieredPrice && !hasTierWithUnitPrice(price.tiers)) {\n const tier = getTierByQuantity(price.tiers!, quantity);\n quantity = tier!.upTo!;\n }\n\n return {\n featureId,\n quantity,\n };\n }),\n );\n}\n\nfunction resolveBillingPeriod({\n plan,\n activeSubscription,\n preferredBillingPeriod,\n}: {\n plan?: Plan;\n activeSubscription?: Subscription | null;\n preferredBillingPeriod?: BillingPeriod;\n}) {\n const hasMonthlyPrices = plan?.pricePoints.some((pricePoint) => pricePoint.billingPeriod === BillingPeriod.Monthly);\n const hasAnnualPrices = plan?.pricePoints.some((pricePoint) => pricePoint.billingPeriod === BillingPeriod.Annually);\n\n if (preferredBillingPeriod) {\n const billingPeriod = getBillingPeriod(preferredBillingPeriod, hasMonthlyPrices, hasAnnualPrices);\n if (billingPeriod) {\n return billingPeriod;\n }\n }\n\n const isUpdate = activeSubscription?.plan?.id === plan?.id;\n if (isUpdate) {\n return activeSubscription?.price?.billingPeriod || BillingPeriod.Monthly;\n }\n\n if (activeSubscription?.prices && activeSubscription?.prices.length > 0) {\n const billingPeriod = getBillingPeriod(\n activeSubscription?.prices[0].billingPeriod,\n hasMonthlyPrices,\n hasAnnualPrices,\n );\n if (billingPeriod) {\n return billingPeriod;\n }\n }\n\n return hasAnnualPrices ? BillingPeriod.Annually : BillingPeriod.Monthly;\n}\n\nexport function getPlanStepInitialState({\n preferredBillingPeriod,\n plan,\n activeSubscription,\n billingCountryCode,\n preconfiguredBillableFeatures,\n}: GetPlanStepInitialStateProps): PlanStepState {\n const billingPeriod = resolveBillingPeriod({ plan, activeSubscription, preferredBillingPeriod });\n const planPrices = plan?.pricePoints.filter((pricePoint) => pricePoint.billingPeriod === billingPeriod);\n const billableFeatures = getBillableFeatures(preconfiguredBillableFeatures, planPrices, activeSubscription);\n\n return {\n billingPeriod,\n billableFeatures,\n billingCountryCode,\n };\n}\n\nfunction usePlanState() {\n const [{ planStep }] = useCheckoutContext();\n return planStep;\n}\n\nfunction useSetBillableFeature() {\n const [, setState] = useCheckoutContext();\n\n return (featureId: string, quantity: number) =>\n setState((draft) => {\n const billableFeature = draft.planStep.billableFeatures.find(\n (billableFeature) => billableFeature.featureId === featureId,\n );\n\n if (billableFeature) {\n billableFeature.quantity = quantity;\n } else {\n draft.planStep.billableFeatures.push({ featureId, quantity });\n }\n });\n}\n\nfunction useSetBillingPeriod() {\n const [, setState] = useCheckoutContext();\n\n return (billingPeriod: BillingPeriod) =>\n setState((draft) => {\n draft.planStep.billingPeriod = billingPeriod;\n });\n}\n\nexport function usePlanStepModel() {\n const state = usePlanState();\n\n return {\n ...state,\n setBillingPeriod: useSetBillingPeriod(),\n setBillableFeature: useSetBillableFeature(),\n };\n}\n","import { Addon } from '@stigg/js-client-sdk';\nimport { useCheckoutContext } from '../CheckoutProvider';\n\nexport enum CheckoutStepKey {\n PLAN = 'PLAN',\n ADDONS = 'ADDONS',\n PAYMENT = 'PAYMENT',\n}\n\nexport type CheckoutStep = {\n key: CheckoutStepKey;\n label: string;\n};\n\nconst CHECKOUT_STEPS: CheckoutStep[] = [\n { key: CheckoutStepKey.PLAN, label: 'Plan' },\n { key: CheckoutStepKey.ADDONS, label: 'Add-ons' },\n { key: CheckoutStepKey.PAYMENT, label: 'Payment details' },\n];\n\nexport type ProgressBarState = {\n activeStep: number;\n completedSteps: number[];\n steps: CheckoutStep[];\n isDisabled: boolean;\n};\n\nconst INITIAL_STATE: ProgressBarState = {\n activeStep: 0,\n completedSteps: [],\n steps: CHECKOUT_STEPS,\n isDisabled: false,\n};\n\nexport function getProgressBarInitialState({ availableAddons }: { availableAddons?: Addon[] }) {\n if (availableAddons?.length === 0) {\n return { ...INITIAL_STATE, steps: CHECKOUT_STEPS.filter((step) => step.key !== CheckoutStepKey.ADDONS) };\n }\n\n return INITIAL_STATE;\n}\n\nfunction useProgressBarState() {\n const [{ progressBar }] = useCheckoutContext();\n return progressBar;\n}\n\nfunction useSetActiveStep() {\n const [, setState] = useCheckoutContext();\n return (stepNumber: number) =>\n setState(({ progressBar }) => {\n progressBar.activeStep = stepNumber;\n });\n}\nfunction useMarkStepAsCompleted() {\n const [, setState] = useCheckoutContext();\n return (stepNumber: number) =>\n setState(({ progressBar }) => {\n progressBar.completedSteps.push(stepNumber);\n });\n}\n\nfunction isCheckoutComplete(progressBar: ProgressBarState) {\n return progressBar.completedSteps.length >= progressBar.steps.length - 1;\n}\n\nfunction useGoNext() {\n const [, setState] = useCheckoutContext();\n return () =>\n setState(({ progressBar }) => {\n if (progressBar.isDisabled) {\n return;\n }\n\n if (!progressBar.completedSteps.includes(progressBar.activeStep)) {\n progressBar.completedSteps.push(progressBar.activeStep);\n }\n\n if (progressBar.activeStep < progressBar.steps.length - 1) {\n progressBar.activeStep += 1;\n }\n });\n}\n\nfunction useSetIsDisabled() {\n const [, setState] = useCheckoutContext();\n return (isDisabled?: boolean) =>\n setState(({ progressBar }) => {\n progressBar.isDisabled = !!isDisabled;\n });\n}\n\nexport function useProgressBarModel() {\n const progressBarState = useProgressBarState();\n const currentStep = progressBarState.steps[progressBarState.activeStep];\n\n return {\n currentStep,\n progressBarState,\n isLastStep: progressBarState.activeStep === progressBarState.steps.length - 1,\n isCheckoutComplete: isCheckoutComplete(progressBarState),\n setActiveStep: useSetActiveStep(),\n markStepAsCompleted: useMarkStepAsCompleted(),\n goNext: useGoNext(),\n setIsDisabled: useSetIsDisabled(),\n };\n}\n","import { useCheckoutContext } from '../CheckoutProvider';\nimport { AddonsStepState } from './useAddonsStepModel';\nimport { PromotionCodeState } from './useCouponModel';\nimport { PaymentStepState } from './usePaymentStepModel';\nimport { PlanStepState } from './usePlanStepModel';\n\nexport type SubscriptionState = PlanStepState &\n PromotionCodeState &\n Pick<AddonsStepState, 'addons'> &\n Pick<PaymentStepState, 'billingAddress' | 'taxPercentage'>;\n\nexport function useSubscriptionModel(): SubscriptionState {\n const [{ planStep, addonsStep, promotionCode, paymentStep }] = useCheckoutContext();\n\n return {\n ...planStep,\n addons: addonsStep.addons,\n promotionCode,\n billingAddress: paymentStep.billingAddress,\n taxPercentage: paymentStep.taxPercentage,\n };\n}\n","import { useCallback, useEffect, useState } from 'react';\nimport isEmpty from 'lodash/isEmpty';\nimport { BillingAddress, PreviewSubscription, StiggClient, SubscriptionPreviewV2 } from '@stigg/js-client-sdk';\nimport { useStiggContext } from '../../StiggProvider';\nimport { useCheckoutContext } from '../CheckoutProvider';\nimport { useCheckoutModel } from './useCheckoutModel';\nimport { SubscriptionState, useSubscriptionModel } from './useSubscriptionModel';\nimport { MockCheckoutPreviewCallback } from '../types';\n\nfunction mapBillingInformation({\n billingAddress,\n taxPercentage,\n}: {\n billingAddress?: BillingAddress;\n taxPercentage?: number;\n}): Pick<PreviewSubscription, 'billingInformation'> {\n if (!billingAddress && !taxPercentage) {\n return {};\n }\n\n return {\n billingInformation: {\n ...(billingAddress ? { billingAddress } : {}),\n ...(taxPercentage ? { taxPercentage } : {}),\n },\n };\n}\n\ntype UsePreviewSubscriptionProps = {\n onMockCheckoutPreview?: MockCheckoutPreviewCallback;\n};\n\nexport type PreviewSubscriptionProps = {\n customerId?: string;\n planId?: string;\n resourceId?: string;\n stigg: StiggClient;\n} & SubscriptionState &\n UsePreviewSubscriptionProps;\n\nconst previewSubscription = async ({\n stigg,\n customerId,\n planId,\n resourceId,\n promotionCode,\n addons,\n billableFeatures,\n billingCountryCode,\n billingPeriod,\n billingAddress,\n taxPercentage,\n onMockCheckoutPreview,\n}: PreviewSubscriptionProps) => {\n const estimateAddons = addons.map(({ addon, quantity }) => ({ addonId: addon.id, quantity }));\n let subscriptionPreview: SubscriptionPreviewV2 | null = null;\n let errorMessage: string | null = null;\n\n try {\n if (customerId && planId) {\n const previewSubscriptionProps: PreviewSubscription = {\n customerId,\n planId,\n resourceId,\n billingCountryCode,\n addons: estimateAddons,\n billingPeriod,\n promotionCode,\n billableFeatures: isEmpty(billableFeatures) ? undefined : billableFeatures,\n ...mapBillingInformation({ billingAddress, taxPercentage }),\n };\n\n subscriptionPreview = onMockCheckoutPreview\n ? onMockCheckoutPreview(previewSubscriptionProps)\n : await stigg.previewSubscription(previewSubscriptionProps);\n }\n } catch (error) {\n const [, errorMsg] = (error as any)?.message?.split('Error:') || [];\n\n errorMessage = errorMsg?.trim();\n }\n\n return { subscriptionPreview, errorMessage };\n};\n\nexport const usePreviewSubscriptionAction = ({ onMockCheckoutPreview }: UsePreviewSubscriptionProps = {}) => {\n const { stigg } = useStiggContext();\n const subscription = useSubscriptionModel();\n const [{ resourceId }] = useCheckoutContext();\n const { checkoutState, widgetState } = useCheckoutModel();\n const { plan, customer } = checkoutState || {};\n\n const previewSubscriptionAction = useCallback(\n async ({ promotionCode }: { promotionCode?: string | null } = {}) => {\n if (!widgetState.isValid) {\n return { subscriptionPreview: null, errorMessage: null };\n }\n\n return previewSubscription({\n stigg,\n customerId: customer?.id,\n planId: plan?.id,\n resourceId,\n addons: subscription.addons,\n billableFeatures: subscription.billableFeatures,\n billingCountryCode: subscription.billingCountryCode,\n billingPeriod: subscription.billingPeriod,\n billingAddress: subscription.billingAddress,\n taxPercentage: subscription.taxPercentage,\n promotionCode: promotionCode ?? subscription.promotionCode,\n onMockCheckoutPreview,\n });\n },\n [\n stigg,\n customer?.id,\n plan?.id,\n resourceId,\n subscription.addons,\n subscription.billableFeatures,\n subscription.billingCountryCode,\n subscription.billingPeriod,\n subscription.billingAddress,\n subscription.taxPercentage,\n subscription.promotionCode,\n widgetState.isValid,\n onMockCheckoutPreview,\n ],\n );\n\n return { previewSubscriptionAction };\n};\n\nconst SUBSCRIPTION_PREVIEW_DEBOUNCE_TIME = 500;\n\nexport const usePreviewSubscription = ({ onMockCheckoutPreview }: UsePreviewSubscriptionProps = {}) => {\n const [subscriptionPreview, setSubscriptionPreview] = useState<SubscriptionPreviewV2 | null>(null);\n const [isFetchingSubscriptionPreview, setIsFetchingSubscriptionPreview] = useState(false);\n\n const { previewSubscriptionAction } = usePreviewSubscriptionAction({ onMockCheckoutPreview });\n\n useEffect(() => {\n const estimateSubscription = async () => {\n const { subscriptionPreview } = await previewSubscriptionAction();\n if (subscriptionPreview) {\n setSubscriptionPreview(subscriptionPreview);\n }\n\n setIsFetchingSubscriptionPreview(false);\n };\n\n setIsFetchingSubscriptionPreview(true);\n\n const timer = setTimeout(() => {\n setIsFetchingSubscriptionPreview(true);\n void estimateSubscription();\n }, SUBSCRIPTION_PREVIEW_DEBOUNCE_TIME);\n\n return () => {\n clearTimeout(timer);\n };\n }, [previewSubscriptionAction]);\n\n return { subscriptionPreview, isFetchingSubscriptionPreview };\n};\n","import { BillingAddress, Customer } from '@stigg/js-client-sdk';\n\nimport { useCheckoutContext } from '../CheckoutProvider';\n\nexport type PaymentStepState = {\n useNewPaymentMethod: boolean;\n errorMessage?: string;\n billingAddress?: BillingAddress;\n taxPercentage?: number;\n};\n\ntype GetPaymentStepInitialStateProps = {\n customer?: Customer;\n taxPercentage?: number;\n};\n\nexport function getPaymentStepInitialState({\n customer,\n taxPercentage,\n}: GetPaymentStepInitialStateProps): PaymentStepState {\n return {\n useNewPaymentMethod: !customer?.paymentMethodDetails,\n taxPercentage,\n };\n}\n\nfunction useSetUseNewPaymentMethod() {\n const [, setState] = useCheckoutContext();\n\n return (useNewPaymentMethod: boolean) =>\n setState((draft) => {\n draft.paymentStep.useNewPaymentMethod = useNewPaymentMethod;\n });\n}\n\nfunction useSetErrorMessage() {\n const [, setState] = useCheckoutContext();\n\n return (errorMessage?: string) =>\n setState((draft) => {\n draft.paymentStep.errorMessage = errorMessage;\n });\n}\n\nfunction useSetBillingAddress() {\n const [, setState] = useCheckoutContext();\n\n return (billingAddress?: BillingAddress) =>\n setState((draft) => {\n draft.paymentStep.billingAddress = billingAddress;\n });\n}\n\nfunction usePaymentState() {\n const [{ paymentStep }] = useCheckoutContext();\n return paymentStep;\n}\n\nexport function usePaymentStepModel() {\n const state = usePaymentState();\n\n return {\n ...state,\n setUseNewPaymentMethod: useSetUseNewPaymentMethod(),\n setErrorMessage: useSetErrorMessage(),\n setBillingAddress: useSetBillingAddress(),\n };\n}\n","import {\n BillingPeriod,\n DiscountType,\n Plan,\n SubscriptionPreviewDiscount,\n SubscriptionPreviewTaxDetails,\n DiscountDurationType,\n} from '@stigg/js-client-sdk';\nimport moment from 'moment';\nimport merge from 'lodash/merge';\nimport { DeepPartial } from '../../../types';\nimport { currencyPriceFormatter } from '../../utils/currencyUtils';\n\nexport type CheckoutLocalization = {\n changePlan: string;\n billingPeriodsTitle: string;\n addAddonText: string;\n newPaymentMethodText: string;\n newPaymentMethodCardTitle: string;\n newPaymentMethodBillingAddressTitle: string;\n summary: {\n title: string;\n planName: (params: { plan: Plan }) => string;\n addCouponCodeText: string;\n couponCodeTitle: string;\n addonsSectionTitle: string;\n discountsSectionTitle: string;\n onlyPayAsYouGoText: string;\n startsAtText: string;\n proratedTotalDueText: string;\n baseChargeText: string | ((params: { billingPeriod: BillingPeriod }) => string);\n totalText: string;\n totalDueText: string;\n totalBillingPeriodText: (params: { billingPeriod: BillingPeriod }) => string;\n discountText: (params: { discountDetails: SubscriptionPreviewDiscount; currency: string }) => string;\n appliedCreditsTitle: string;\n taxTitle: (params: { taxDetails: SubscriptionPreviewTaxDetails }) => string;\n checkoutSuccessText: string;\n payAsYouGoTooltipText: string;\n changesWillApplyAtEndOfBillingPeriod: string | ((params: { billingPeriodEnd: Date }) => string);\n creditsForUnusedTimeText: (params: { credits: string }) => string;\n };\n checkoutButton: {\n nextText: string;\n noChangesText: string;\n updateText: string;\n downgradeToFreeText: string;\n upgradeText: string;\n };\n downgradeToFree: {\n alertText: (params: { plan: Plan }) => string;\n freePlanHeader: (params: { plan: Plan }) => string;\n freePlanName: (params: { plan: Plan }) => string;\n freePlanPriceText: (params: { plan: Plan }) => string;\n paidPlanHeader: (params: { plan: Plan }) => string;\n paidPlanName: (params: { plan: Plan }) => string;\n paidPlanPriceText: (params: { plan: Plan; billingPeriod?: BillingPeriod }) => string;\n };\n};\n\nexport function getResolvedCheckoutLocalize(\n localizeOverride?: DeepPartial<CheckoutLocalization>,\n): CheckoutLocalization {\n const checkoutDefaultLocalization: CheckoutLocalization = {\n changePlan: 'Change',\n billingPeriodsTitle: 'Billing cycle',\n addAddonText: 'Add',\n newPaymentMethodText: 'New payment method',\n newPaymentMethodBillingAddressTitle: 'Billing address',\n newPaymentMethodCardTitle: 'Payment method',\n summary: {\n title: 'Order summary',\n planName: ({ plan }) => `${plan.displayName} plan`,\n addCouponCodeText: 'Add promotion code',\n couponCodeTitle: 'Promotion code',\n addonsSectionTitle: 'Add-ons',\n discountsSectionTitle: 'Discounts',\n onlyPayAsYouGoText: 'Varies by usage',\n startsAtText: 'Starts at ',\n proratedTotalDueText: 'Prorated charge today',\n baseChargeText: () => 'Base charge',\n totalText: 'Total',\n totalDueText: 'Total due today',\n totalBillingPeriodText: ({ billingPeriod }) => `Billed ${billingPeriod.toLowerCase()}`,\n appliedCreditsTitle: 'Applied credits',\n creditsForUnusedTimeText: ({ credits }) =>\n `Your account will be granted credits worth ${credits} for unused time, which will be automatically applied to future payments.`,\n discountText: ({ discountDetails, currency }) => {\n let discountText = '';\n if (discountDetails.type === DiscountType.Percentage) {\n discountText = `${discountDetails.value}% off`;\n } else {\n discountText = `${currencyPriceFormatter({ amount: discountDetails.value, currency })}`;\n }\n\n let discountTextPostfix = '';\n switch (discountDetails.durationType) {\n case DiscountDurationType.Once: {\n discountTextPostfix = ' once';\n break;\n }\n case DiscountDurationType.Repeating: {\n const prefix = discountDetails.type === DiscountType.Fixed ? ' per month' : '';\n discountTextPostfix = `${prefix} for ${discountDetails.durationInMonths} months`;\n\n break;\n }\n\n case DiscountDurationType.Forever:\n default: {\n discountTextPostfix = '';\n }\n }\n\n return `${discountText}${discountTextPostfix}`;\n },\n taxTitle: ({ taxDetails }) => `Tax (${taxDetails?.percentage}%)`,\n changesWillApplyAtEndOfBillingPeriod: ({ billingPeriodEnd }) =>\n `Your changes will take effect at the end of your current billing cycle on ${moment(billingPeriodEnd).format(\n 'MMMM D, YYYY',\n )}.`,\n checkoutSuccessText: 'Changes applied',\n payAsYouGoTooltipText: 'Billed according to actual usage',\n },\n checkoutButton: {\n nextText: 'Next',\n noChangesText: 'No changes',\n updateText: 'Update subscription',\n downgradeToFreeText: 'Cancel subscription',\n upgradeText: 'Subscribe',\n },\n downgradeToFree: {\n alertText: () => `We’re sorry to see you cancel your paid subscription 😭`,\n freePlanHeader: () => 'New plan',\n freePlanName: ({ plan }) => `${plan.displayName}`,\n freePlanPriceText: () => 'Free',\n paidPlanHeader: () => 'Current plan',\n paidPlanName: ({ plan }) => `${plan.displayName}`,\n paidPlanPriceText: ({ billingPeriod }) =>\n `Paid plan${billingPeriod ? `, billed ${billingPeriod.toLowerCase()}` : ''}`,\n },\n };\n\n return merge(checkoutDefaultLocalization, localizeOverride);\n}\n","import { CheckoutConfiguration } from '@stigg/js-client-sdk';\nimport { StiggTheme } from '../../../theme/types';\nimport { DeepPartial } from '../../../types';\n\nexport type CheckoutTheme = {\n primary: string;\n textColor: string;\n backgroundColor: string;\n borderColor: string;\n summaryBackgroundColor: string;\n paymentInputBackgroundColor?: string;\n paymentInputBorderColor?: string;\n paymentInputBorderRadius?: string;\n};\n\nconst defaultCheckoutTheme: CheckoutTheme = {\n primary: 'rgb(50, 126, 238)',\n textColor: 'rgb(0, 30, 108)',\n backgroundColor: 'rgb(255, 255, 255)',\n borderColor: 'rgb(235, 237, 243)',\n summaryBackgroundColor: 'rgb(109, 121, 144)',\n};\n\nexport function getResolvedCheckoutTheme(\n globalTheme: StiggTheme,\n themeOverride?: DeepPartial<CheckoutTheme>,\n // all the remote colors override theme colors, no need to use them here\n _remoteConfiguration?: CheckoutConfiguration | null,\n): CheckoutTheme {\n const { palette: globalPalette } = globalTheme || {};\n\n return {\n primary: themeOverride?.primary || globalPalette?.primary || defaultCheckoutTheme.primary,\n textColor: themeOverride?.textColor || globalPalette?.text.primary || defaultCheckoutTheme.textColor,\n backgroundColor:\n themeOverride?.backgroundColor || globalPalette?.backgroundPaper || defaultCheckoutTheme.backgroundColor,\n borderColor: themeOverride?.borderColor || globalPalette?.outlinedBorder || defaultCheckoutTheme.borderColor,\n summaryBackgroundColor:\n themeOverride?.summaryBackgroundColor ||\n globalPalette?.backgroundHighlight ||\n defaultCheckoutTheme.summaryBackgroundColor,\n paymentInputBackgroundColor: themeOverride?.paymentInputBackgroundColor,\n paymentInputBorderColor: themeOverride?.paymentInputBorderColor,\n paymentInputBorderRadius: themeOverride?.paymentInputBorderRadius,\n };\n}\n","import { produce } from 'immer';\nimport React, { useCallback, useContext, useEffect, useMemo, useState } from 'react';\nimport { BillableFeature, BillingPeriod, GetCheckoutStateResults } from '@stigg/js-client-sdk';\nimport { CustomizedTheme, SdkThemeProvider, useStiggTheme } from '../../theme/Theme';\nimport { DeepPartial } from '../../types';\nimport { mapCheckoutConfiguration, mapTypography } from '../common/mapExternalTheme';\nimport {\n AddonsStepState,\n getAddonsStepInitialState,\n getPaymentStepInitialState,\n getPlanStepInitialState,\n getProgressBarInitialState,\n PaymentStepState,\n PlanStepState,\n ProgressBarState,\n useLoadCheckout,\n WidgetState,\n} from './hooks';\nimport { CheckoutLocalization, getResolvedCheckoutLocalize } from './configurations/textOverrides';\nimport { CheckoutTheme, getResolvedCheckoutTheme } from './configurations/theme';\nimport { StiggTheme } from '../../theme/types';\nimport { BillingInformation, MockCheckoutStateCallback } from './types';\nimport { defaultCheckoutTypography } from './configurations/typography';\n\nexport interface CheckoutContextState {\n checkout?: GetCheckoutStateResults | null;\n checkoutLocalization: CheckoutLocalization;\n stiggTheme: StiggTheme;\n theme: CheckoutTheme;\n resourceId?: string;\n promotionCode?: string;\n progressBar: ProgressBarState;\n planStep: PlanStepState;\n addonsStep: AddonsStepState;\n paymentStep: PaymentStepState;\n widgetState: WidgetState;\n}\n\nexport const CheckoutContext = React.createContext<\n [CheckoutContextState, (updater: (state: CheckoutContextState) => void) => void] | null\n>(null);\n\nCheckoutContext.displayName = 'CheckoutContext';\n\nexport const useCheckoutContext = () => {\n const ctx = useContext(CheckoutContext);\n if (!ctx) {\n throw new Error(\n 'Could not find Checkout context; You need to wrap your checkout components in an <CheckoutProvider> component.',\n );\n }\n return ctx;\n};\n\nconst CheckoutContextProvider: React.FC<{ children: React.ReactNode; initialState: CheckoutContextState }> = ({\n children,\n initialState,\n}) => {\n const [state, innerSetState] = useState(initialState);\n\n useEffect(() => {\n innerSetState(initialState);\n }, [initialState]);\n\n const setState = useCallback(\n (updater: (state: CheckoutContextState) => void) => innerSetState((old) => produce(old, (draft) => updater(draft))),\n [innerSetState],\n );\n\n const [contextValue, setContextValue] = useMemo(() => [state, setState], [setState, state]);\n\n return <CheckoutContext.Provider value={[contextValue, setContextValue]}>{children}</CheckoutContext.Provider>;\n};\n\nexport type CheckoutProviderProps = {\n textOverrides?: DeepPartial<CheckoutLocalization>;\n theme?: DeepPartial<CheckoutTheme>;\n resourceId?: string;\n planId: string;\n preferredBillingPeriod?: BillingPeriod;\n billingCountryCode?: string;\n billableFeatures?: BillableFeature[];\n billingInformation?: BillingInformation;\n onMockCheckoutState?: MockCheckoutStateCallback;\n};\n\nexport function CheckoutProvider({\n children,\n textOverrides,\n theme,\n preferredBillingPeriod,\n billableFeatures,\n resourceId,\n planId,\n billingCountryCode,\n billingInformation,\n onMockCheckoutState,\n}: {\n children: React.ReactNode;\n} & CheckoutProviderProps) {\n const { checkout, isLoading } = useLoadCheckout({ resourceId, planId, billingCountryCode, onMockCheckoutState });\n const configuration: CustomizedTheme = checkout?.configuration\n ? mapCheckoutConfiguration(checkout.configuration)\n : { typography: mapTypography(defaultCheckoutTypography) };\n const globalTheme: StiggTheme = useStiggTheme(configuration);\n\n const initialState = useMemo(() => {\n const checkoutTheme = getResolvedCheckoutTheme(globalTheme, theme, checkout?.configuration);\n const checkoutLocalization = getResolvedCheckoutLocalize(textOverrides);\n const planStep = getPlanStepInitialState({\n preferredBillingPeriod,\n plan: checkout?.plan,\n activeSubscription: checkout?.activeSubscription,\n billingCountryCode,\n preconfiguredBillableFeatures: billableFeatures ?? [],\n });\n const addonsStep = getAddonsStepInitialState({\n plan: checkout?.plan,\n billingPeriod: planStep.billingPeriod,\n activeSubscription: checkout?.activeSubscription,\n });\n const paymentStep = getPaymentStepInitialState({\n customer: checkout?.customer,\n taxPercentage: billingInformation?.taxDetails?.taxPercentage,\n });\n const progressBar = getProgressBarInitialState({\n availableAddons: isLoading ? undefined : addonsStep.availableAddons,\n });\n\n const initialState: CheckoutContextState = {\n checkout,\n checkoutLocalization,\n stiggTheme: globalTheme,\n theme: checkoutTheme,\n progressBar,\n planStep,\n addonsStep,\n paymentStep,\n resourceId: checkout?.resource?.id,\n widgetState: { readOnly: false, isValid: true, isLoadingCheckoutData: isLoading },\n };\n\n return initialState;\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [preferredBillingPeriod, billingCountryCode, checkout, isLoading, billingInformation?.taxDetails?.taxPercentage]);\n\n return (\n <SdkThemeProvider key={checkout?.plan.id} componentTheme={configuration}>\n <CheckoutContextProvider initialState={initialState}>{children}</CheckoutContextProvider>\n </SdkThemeProvider>\n );\n}\n","import styled from '@emotion/styled/macro';\nimport Box from '@mui/material/Box';\n\nexport const CheckoutLayout = styled.div`\n margin: auto;\n width: 100%;\n min-height: 760px;\n max-width: 920px;\n display: flex;\n position: relative;\n flex-direction: column;\n align-items: center;\n\n padding: 16px 32px;\n border-radius: 10px;\n background-color: ${({ theme }) => theme.stigg.palette.backgroundPaper};\n border: ${({ theme }) => `1px solid ${theme.stigg.palette.outlinedBorder}`};\n\n & * {\n box-sizing: border-box;\n }\n`;\nexport const CheckoutContent = styled(Box)`\n display: flex;\n align-items: flex-start;\n gap: 32px;\n flex-wrap: wrap;\n width: 100%;\n`;\n\nexport const CheckoutPanel = styled(Box)`\n display: flex;\n flex-direction: column;\n gap: 0;\n flex: 2;\n`;\n","import styled from '@emotion/styled/macro';\nimport LinearProgress, { linearProgressClasses } from '@mui/material/LinearProgress';\nimport Button, { buttonClasses } from '@mui/material/Button';\nimport { Icon } from '../../common/Icon';\n\nexport const StyledProgress = styled(LinearProgress, { shouldForwardProp: (prop) => !prop.startsWith('$') })<{\n $disabled?: boolean;\n}>(({ theme, $disabled }) => ({\n [`&.${linearProgressClasses.root}`]: {\n borderRadius: theme.stigg.border.radius,\n backgroundColor: theme.stigg.palette.outlinedBorder,\n },\n [`& .${linearProgressClasses.bar}`]: {\n backgroundColor: $disabled ? theme.stigg.palette.primaryLight : theme.stigg.palette.primary,\n },\n}));\n\nexport const StyledStepButton = styled(Button)(() => ({\n [`&.${buttonClasses.root}`]: {\n textTransform: 'none',\n lineHeight: 'inherit',\n justifyContent: 'flex-start',\n padding: '8px 4px',\n },\n}));\n\nexport const StyledIcon = styled(Icon, { shouldForwardProp: (prop) => !prop.startsWith('$') })<{\n $disabled?: boolean;\n $shouldFill?: boolean;\n}>(({ theme, $disabled, $shouldFill }) => ({\n circle: {\n stroke: $disabled ? theme.stigg.palette.primaryLight : theme.stigg.palette.primary,\n fill: $shouldFill ? ($disabled ? theme.stigg.palette.primaryLight : theme.stigg.palette.primary) : undefined,\n },\n}));\n","import React from 'react';\nimport Grid from '@mui/material/Grid';\nimport Box from '@mui/material/Box';\nimport StepIcon from '@mui/material/StepIcon';\nimport { useCheckoutModel, useProgressBarModel } from '../hooks';\nimport { Typography } from '../../common/Typography';\nimport { StyledProgress, StyledStepButton, StyledIcon } from './CheckoutProgressBar.style';\nimport { Icons } from '../../common/Icon';\nimport { Skeleton } from '../components/Skeletons.style';\n\nexport const CheckoutProgressBar = () => {\n const { progressBarState, setActiveStep } = useProgressBarModel();\n const { widgetState } = useCheckoutModel();\n const { readOnly, isLoadingCheckoutData } = widgetState;\n const { activeStep, completedSteps, steps } = progressBarState || {};\n const progress = ((activeStep + 1) * 100) / steps.length;\n\n return (\n <Box sx={{ width: '100%', mb: 3 }}>\n <StyledProgress variant=\"determinate\" value={progress} $disabled={readOnly} />\n <Grid container display=\"flex\">\n {steps.map(({ key, label }, index) => {\n const isCompleted = completedSteps.includes(index);\n const isDisabled =\n readOnly ||\n (index > activeStep && !isCompleted && !completedSteps.includes(index - 1)) ||\n (activeStep !== index && progressBarState.isDisabled);\n const checkedIcon: Icons = isDisabled ? 'OutlinedCheckedCircleDisabled' : 'OutlinedCheckedCircle';\n\n return (\n <Grid key={key} item display=\"flex\" flexDirection=\"row\" flex={1} justifyContent=\"flex-start\">\n {isLoadingCheckoutData ? (\n <Skeleton width={120} height={20} style={{ marginTop: 8 }} />\n ) : (\n <StyledStepButton onClick={() => setActiveStep(index)} fullWidth disabled={isDisabled}>\n <Grid item display=\"flex\" flexDirection=\"row\" alignItems=\"center\" gap={1}>\n <StepIcon\n icon={\n <StyledIcon\n icon={isCompleted ? checkedIcon : 'OutlinedCircle'}\n $disabled={isDisabled}\n $shouldFill={isCompleted}\n />\n }\n />\n\n <Typography variant=\"h6\" color={isDisabled ? 'primary.main.light' : 'primary.main'}>\n {label}\n </Typography>\n </Grid>\n </StyledStepButton>\n )}\n </Grid>\n );\n })}\n </Grid>\n </Box>\n );\n};\n","import sortBy from 'lodash/sortBy';\nimport { useMemo } from 'react';\n\nimport { BillingModel, Price } from '@stigg/js-client-sdk';\n\nconst CHARGES_BILLING_MODEL_ORDER = [BillingModel.FlatFee, BillingModel.PerUnit, BillingModel.UsageBased];\n\nexport const sortCharges = (charges: Price[]) => {\n return sortBy(charges, [\n (charge) => CHARGES_BILLING_MODEL_ORDER.indexOf(charge.pricingModel),\n (charge) => charge.feature?.displayName,\n ]);\n};\n\nexport const useChargesSort = (charges: Price[]) => {\n return useMemo(() => sortCharges(charges), [charges]);\n};\n","import { useCheckoutContext } from '../CheckoutProvider';\n\nexport type PromotionCodeState = {\n promotionCode?: string;\n};\n\nfunction usePromotionCodeState() {\n const [{ promotionCode }] = useCheckoutContext();\n return promotionCode;\n}\n\nfunction useSetPromotionCode() {\n const [, setState] = useCheckoutContext();\n\n return (promotionCode: string) =>\n setState((draft) => {\n draft.promotionCode = promotionCode;\n });\n}\n\nexport function usePromotionCodeModel() {\n const promotionCode = usePromotionCodeState();\n\n return {\n promotionCode,\n setPromotionCode: useSetPromotionCode(),\n };\n}\n","<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<g id=\"plus\">\n<path id=\"Shape\" d=\"M10 4.16666V15.8333\" stroke=\"#327EEE\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n<path id=\"Shape_2\" d=\"M4.16699 10H15.8337\" stroke=\"#327EEE\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n</g>\n</svg>\n","import React from 'react';\nimport styled from '@emotion/styled/macro';\n\nimport PlusIcon from '../../../assets/plus-icon.svg';\nimport { Typography } from '../../common/Typography';\nimport { Button } from '../components';\nimport { CheckoutLocalization } from '../configurations/textOverrides';\n\nconst StyledPlusIcon = styled(PlusIcon, { shouldForwardProp: (prop) => !prop.startsWith('$') })<{ $disabled: boolean }>`\n margin-right: 8px;\n path {\n stroke: ${({ theme, $disabled }) => ($disabled ? theme.stigg.palette.text.disabled : theme.stigg.palette.primary)};\n }\n`;\n\nexport type AddPromotionCodeButtonProps = {\n onAddClick: () => void;\n checkoutLocalization: CheckoutLocalization;\n disabled: boolean;\n};\n\nexport const AddPromotionCodeButton = ({ onAddClick, checkoutLocalization, disabled }: AddPromotionCodeButtonProps) => (\n <Button\n disabled={disabled}\n fullWidth\n className=\"stigg-checkout-summary-add-coupon-code-button\"\n sx={{\n textTransform: 'none',\n justifyContent: 'flex-start',\n color: disabled ? 'text.disabled' : 'primary.main',\n }}\n variant=\"text\"\n size=\"medium\"\n onClick={onAddClick}>\n <StyledPlusIcon $disabled={disabled} className=\"stigg-checkout-summary-add-coupon-code-button-icon\" />\n <Typography\n className=\"stigg-checkout-change-plan-button-text\"\n color={disabled ? 'disabled' : 'primary.main'}\n style={{ lineHeight: '24px' }}\n variant=\"h3\">\n {checkoutLocalization.summary.addCouponCodeText}\n </Typography>\n </Button>\n);\n","import React, { useState } from 'react';\n\nimport styled from '@emotion/styled/macro';\nimport CircularProgress from '@mui/material/CircularProgress';\nimport Grid from '@mui/material/Grid';\n\nimport { Icon } from '../../common/Icon';\nimport { Typography } from '../../common/Typography';\nimport { Button, InputField } from '../components';\nimport { usePreviewSubscriptionAction } from '../hooks';\nimport { usePromotionCodeModel } from '../hooks/useCouponModel';\nimport { AddPromotionCodeButton } from './AddPromotionCodeButton';\nimport { PromotionCodeSectionProps } from './PromotionCodeSection';\n\nconst CouponCodeAddButton = styled(Button)`\n padding: 4px 10px;\n min-width: unset;\n border-radius: ${({ theme }) => theme.stigg.border.radius};\n display: flex;\n align-items: center;\n`;\n\nexport const AddPromotionCode = ({\n disabled,\n checkoutLocalization,\n onMockCheckoutPreview,\n}: PromotionCodeSectionProps) => {\n const { setPromotionCode: persistPromotionCode } = usePromotionCodeModel();\n const [showInput, setShowInput] = useState(false);\n const [promotionCode, setPromotionCode] = React.useState('');\n const [isLoading, setIsLoading] = React.useState(false);\n const [errorMessage, setErrorMessage] = React.useState('');\n const { previewSubscriptionAction } = usePreviewSubscriptionAction({ onMockCheckoutPreview });\n\n const handlePromotionCode = async () => {\n setIsLoading(true);\n setErrorMessage('');\n\n const { subscriptionPreview, errorMessage } = await previewSubscriptionAction({ promotionCode });\n\n if (!errorMessage && subscriptionPreview?.immediateInvoice?.discountDetails) {\n persistPromotionCode(promotionCode.toUpperCase());\n setShowInput(false);\n } else if (errorMessage) {\n setErrorMessage(errorMessage);\n }\n setIsLoading(false);\n };\n\n if (!showInput) {\n return (\n <AddPromotionCodeButton\n disabled={disabled}\n onAddClick={() => setShowInput(true)}\n checkoutLocalization={checkoutLocalization}\n />\n );\n }\n\n return (\n <Grid>\n <Typography variant=\"body1\" color={errorMessage ? 'error' : disabled ? 'disabled' : 'primary.main'}>\n {checkoutLocalization.summary.couponCodeTitle}\n </Typography>\n\n <InputField\n disabled={disabled}\n autoFocus\n variant=\"outlined\"\n fullWidth\n error={!!errorMessage}\n value={promotionCode}\n onChange={(e) => {\n setPromotionCode(e.target.value);\n }}\n inputProps={{ maxLength: 20 }}\n onKeyDown={(e: any) => {\n if (e.key === 'Enter') {\n void handlePromotionCode();\n e.preventDefault();\n }\n }}\n // eslint-disable-next-line react/jsx-no-duplicate-props\n InputProps={{\n endAdornment: (\n <CouponCodeAddButton\n variant=\"contained\"\n disabled={disabled}\n onClick={() => {\n void handlePromotionCode();\n }}>\n {isLoading ? (\n <CircularProgress size={18} sx={{ color: 'white' }} />\n ) : (\n <Icon style={{ display: 'flex' }} icon=\"ArrowForward\" />\n )}\n </CouponCodeAddButton>\n ),\n }}\n />\n {!!errorMessage && (\n <Typography variant=\"body1\" color=\"error\">\n {errorMessage}\n </Typography>\n )}\n </Grid>\n );\n};\n","import React from 'react';\nimport styled from '@emotion/styled/macro';\nimport Grid from '@mui/material/Grid';\nimport { Icon } from '../../common/Icon';\nimport { Typography } from '../../common/Typography';\nimport { Button } from '../components';\n\nconst AppliedCouponContainer = styled(Grid)`\n width: auto;\n display: inline-flex;\n align-items: center;\n flex-direction: row;\n gap: 8px;\n padding: 6px 8px;\n border-radius: ${({ theme }) => theme.stigg.border.radius};\n border: 1px solid ${({ theme }) => theme.stigg.palette.primary};\n`;\n\nexport const StyledIcon = styled(Icon, { shouldForwardProp: (prop) => prop !== 'style' })<{ $shouldFill?: boolean }>`\n display: flex;\n\n g {\n stroke: ${({ theme }) => theme.stigg.palette.primary};\n }\n\n path {\n fill: ${({ theme, $shouldFill }) => ($shouldFill ? theme.stigg.palette.primary : undefined)};\n }\n`;\n\nexport type AppliedPromotionCodeProps = {\n promotionCode: string;\n onClearPromotionCode: () => void;\n};\n\nexport const AppliedPromotionCode = ({ promotionCode, onClearPromotionCode }: AppliedPromotionCodeProps) => (\n <AppliedCouponContainer container>\n <Grid item display=\"flex\" gap={1} alignItems=\"center\">\n <StyledIcon icon=\"Coupon\" />\n <Typography variant=\"body1\" color=\"primary.main\" lineHeight=\"auto\">\n {promotionCode}\n </Typography>\n </Grid>\n <Grid item>\n <Button variant=\"text\" sx={{ minWidth: 'unset', padding: 0 }} onClick={onClearPromotionCode}>\n <StyledIcon icon=\"Close\" $shouldFill />\n </Button>\n </Grid>\n </AppliedCouponContainer>\n);\n","import React from 'react';\nimport styled from '@emotion/styled/macro';\nimport { usePromotionCodeModel } from '../hooks/useCouponModel';\nimport { AddPromotionCode } from './AddPromotionCode';\nimport { AppliedPromotionCode } from './AppliedPromotionCode';\nimport { CheckoutLocalization } from '../configurations/textOverrides';\nimport { MockCheckoutPreviewCallback } from '../types';\n\nconst PromotionCodeSectionContainer = styled.div`\n margin: 16px 0;\n`;\n\nexport type PromotionCodeSectionProps = {\n disabled: boolean;\n checkoutLocalization: CheckoutLocalization;\n onMockCheckoutPreview?: MockCheckoutPreviewCallback;\n};\n\nexport const PromotionCodeSection = ({\n disabled,\n checkoutLocalization,\n onMockCheckoutPreview,\n}: PromotionCodeSectionProps) => {\n const { promotionCode, setPromotionCode } = usePromotionCodeModel();\n\n const onClearPromotionCode = () => {\n setPromotionCode('');\n };\n\n const content = promotionCode ? (\n <AppliedPromotionCode promotionCode={promotionCode} onClearPromotionCode={onClearPromotionCode} />\n ) : (\n <AddPromotionCode\n disabled={disabled}\n checkoutLocalization={checkoutLocalization}\n onMockCheckoutPreview={onMockCheckoutPreview}\n />\n );\n\n return <PromotionCodeSectionContainer>{content}</PromotionCodeSectionContainer>;\n};\n","import React from 'react';\nimport { StripeAddressElementChangeEvent } from '@stripe/stripe-js';\nimport Grid from '@mui/material/Grid';\nimport { BillingAddress } from '@stigg/js-client-sdk';\nimport { AddressElement, PaymentElement } from '@stripe/react-stripe-js';\nimport { Typography } from '../../../../common/Typography';\nimport { useCheckoutModel, usePaymentStepModel } from '../../../hooks';\nimport { CheckoutContainerProps } from '../../../CheckoutContainer';\n\nexport function StripePaymentForm({\n onBillingAddressChange,\n collectPhoneNumber,\n}: Pick<CheckoutContainerProps, 'onBillingAddressChange' | 'collectPhoneNumber'>) {\n const { checkoutState, checkoutLocalization, widgetState, setWidgetReadOnly } = useCheckoutModel();\n const { setBillingAddress } = usePaymentStepModel();\n const { customer, configuration } = checkoutState || {};\n const { readOnly } = widgetState;\n const shouldCollectPhoneNumber = !!(collectPhoneNumber ?? configuration?.content?.collectPhoneNumber);\n\n const handleAddressChange = (args: StripeAddressElementChangeEvent) => {\n if (!args.complete) {\n return;\n }\n\n const { postal_code: postalCode, ...addressFields } = args.value.address;\n const billingAddress: BillingAddress = {\n postalCode,\n ...addressFields,\n };\n\n setWidgetReadOnly(true);\n setBillingAddress(billingAddress);\n\n if (onBillingAddressChange) {\n const callExternalBillingAddressChanged = async () => {\n await onBillingAddressChange({ billingAddress });\n setWidgetReadOnly(false);\n };\n\n void callExternalBillingAddressChanged();\n } else {\n setWidgetReadOnly(false);\n }\n };\n\n return (\n <Grid flexDirection=\"column\" container gap={3} padding=\"16px\" sx={{ pointerEvents: readOnly ? 'none' : undefined }}>\n <Grid flexDirection=\"column\" container gap={2}>\n <Typography variant=\"h6\">{checkoutLocalization.newPaymentMethodBillingAddressTitle}</Typography>\n <AddressElement\n onChange={handleAddressChange}\n options={{\n mode: 'billing',\n fields: { phone: shouldCollectPhoneNumber ? 'always' : 'auto' },\n defaultValues: {\n ...(customer?.name && { name: customer.name }),\n },\n }}\n />\n </Grid>\n <Grid flexDirection=\"column\" container gap={2}>\n <Typography variant=\"h6\">{checkoutLocalization.newPaymentMethodCardTitle}</Typography>\n <PaymentElement\n onChange={() => {}}\n onReady={() => {}}\n options={{\n readOnly,\n terms: { card: 'never' },\n defaultValues: {\n billingDetails: {\n ...(customer?.name && { name: customer.name }),\n ...(customer?.email && { email: customer.email }),\n },\n },\n }}\n />\n </Grid>\n </Grid>\n );\n}\n","import { useEffect, useState } from 'react';\n\nimport { BillingVendorIdentifier } from '@stigg/js-client-sdk';\nimport { loadStripe, Stripe } from '@stripe/stripe-js';\n\nimport { useCheckoutModel } from '../../../hooks';\n\nexport function useStripeIntegration() {\n const [stripePromise, setStripePromise] = useState<Promise<Stripe | null> | null>(null);\n const { checkoutState } = useCheckoutModel();\n const { billingIntegration, setupSecret } = checkoutState || {};\n\n useEffect(() => {\n if (billingIntegration) {\n const { billingIdentifier, credentials } = billingIntegration;\n if (billingIdentifier !== BillingVendorIdentifier.Stripe) {\n console.error('Currently only stripe integration is supported');\n return;\n }\n\n const { accountId, publicKey } = credentials;\n setStripePromise(loadStripe(publicKey, { stripeAccount: accountId }));\n }\n }, [billingIntegration]);\n\n return { stripePromise, setupIntentClientSecret: setupSecret };\n}\n","import { ApplySubscription, PreviewSubscription } from '@stigg/js-client-sdk';\nimport { useCheckoutContext } from '../CheckoutProvider';\nimport { useCheckoutModel } from './useCheckoutModel';\nimport { useSubscriptionModel } from './useSubscriptionModel';\n\nexport function useSubscriptionState(): ApplySubscription | PreviewSubscription | undefined {\n const subscription = useSubscriptionModel();\n const [{ resourceId }] = useCheckoutContext();\n const { checkoutState } = useCheckoutModel();\n const { plan } = checkoutState || {};\n const addons = subscription.addons.map(({ addon, quantity }) => ({ addonId: addon.id, quantity }));\n\n if (!plan?.id) {\n return undefined;\n }\n\n return {\n resourceId,\n planId: plan.id,\n billingPeriod: subscription.billingPeriod,\n billableFeatures: subscription.billableFeatures,\n addons,\n promotionCode: subscription.promotionCode,\n billingCountryCode: subscription.billingCountryCode,\n };\n}\n","import { ApplySubscriptionResults, PaymentCollection } from '@stigg/js-client-sdk';\nimport { Stripe, StripeElements } from '@stripe/stripe-js';\n\ntype StripeElementsProps = {\n stripe: Stripe | null;\n elements: StripeElements | null;\n};\n\nconst FAILED_PAYMENT_COLLECTION_STATUSES = [PaymentCollection.Failed, PaymentCollection.Processing];\n\nexport async function handleStripeFormValidations({ elements }: Pick<StripeElementsProps, 'elements'>) {\n if (!elements) {\n const errorMessage = 'Stripe elements not initialized';\n console.error(errorMessage);\n return { success: false, errorMessage };\n }\n\n const { error: elementsError } = await elements.submit();\n\n if (elementsError) {\n console.log(elementsError.message);\n return { success: false, errorMessage: elementsError.message || '' };\n }\n\n return { success: true };\n}\n\nexport async function handleStripeNextAction({\n applySubscriptionResults,\n stripe,\n}: {\n applySubscriptionResults: ApplySubscriptionResults;\n stripe: Stripe | null;\n}) {\n const subscription = applySubscriptionResults?.subscription;\n const paymentIntentClientSecret = subscription?.latestInvoice?.paymentSecret;\n const paymentCollection = subscription?.paymentCollection;\n\n if (stripe && paymentIntentClientSecret && paymentCollection === PaymentCollection.ActionRequired) {\n const { error: NextActionError } = await stripe.handleNextAction({ clientSecret: paymentIntentClientSecret });\n if (NextActionError) {\n return { errorMessage: NextActionError.message || '' };\n }\n } else if (paymentCollection && FAILED_PAYMENT_COLLECTION_STATUSES.includes(paymentCollection)) {\n return { errorMessage: subscription?.latestInvoice?.errorMessage || 'An error occurred - try again later' };\n }\n\n return { subscription };\n}\n\nasync function handleStripeSetup({\n stripe,\n elements,\n clientSecret,\n}: {\n stripe: Stripe;\n elements: StripeElements;\n clientSecret: string;\n}) {\n let newPaymentMethodId: string | undefined;\n let setupErrorMessage: string | undefined;\n\n const { error: setupError } = await stripe.confirmSetup({\n elements,\n confirmParams: { return_url: window.location.href },\n redirect: 'if_required',\n });\n\n if (setupError) {\n if (setupError.type === 'card_error' || setupError.type === 'validation_error') {\n if (setupError.type === 'card_error') {\n // Set some error message\n setupErrorMessage = setupError.message || '';\n }\n } else {\n setupErrorMessage = 'An unexpected error occurred.';\n }\n } else {\n try {\n const { setupIntent } = await stripe.retrieveSetupIntent(clientSecret);\n if (setupIntent?.payment_method) {\n newPaymentMethodId = setupIntent.payment_method as string;\n }\n } catch (e) {\n setupErrorMessage = 'An unexpected error occurred.';\n console.error(e);\n }\n }\n\n return { newPaymentMethodId, setupErrorMessage };\n}\n\nexport async function handleNewPaymentMethod({\n stripe,\n elements,\n setupIntentClientSecret,\n}: {\n stripe: Stripe | null;\n elements: StripeElements | null;\n setupIntentClientSecret?: string;\n}): Promise<{ success: boolean; errorMessage?: string; paymentMethodId?: string }> {\n if (!stripe || !elements || !setupIntentClientSecret) {\n return { success: false };\n }\n\n const stripeFormValidationsResults = await handleStripeFormValidations({ elements });\n if (!stripeFormValidationsResults.success) {\n return { success: false, errorMessage: stripeFormValidationsResults.errorMessage };\n }\n\n const { newPaymentMethodId, setupErrorMessage } = await handleStripeSetup({\n stripe,\n elements,\n clientSecret: setupIntentClientSecret,\n });\n\n if (setupErrorMessage || !newPaymentMethodId) {\n return { success: false, errorMessage: setupErrorMessage };\n }\n\n return { success: true, paymentMethodId: newPaymentMethodId };\n}\n","import styled from '@emotion/styled/macro';\nimport Box from '@mui/material/Box';\nimport Color from 'color';\nimport React from 'react';\nimport Lottie from 'lottie-react';\nimport animationData from '../../../assets/lottie/checkout-success.json';\nimport { Typography } from '../../common/Typography';\nimport { CheckoutLocalization } from '../configurations/textOverrides';\n\nexport const ANIMATION_DURATION = 5000;\n\nconst CheckoutSuccessContainer = styled(Box)`\n @keyframes blurFade {\n 0% {\n background-color: ${({ theme }) => Color(theme.stigg.palette.backgroundPaper).alpha(0).toString()};\n backdrop-filter: blur(0px);\n }\n 100% {\n background-color: ${({ theme }) => Color(theme.stigg.palette.backgroundPaper).alpha(0.9).toString()};\n backdrop-filter: blur(6.5px);\n }\n }\n\n position: absolute;\n top: 0;\n left: 0;\n bottom: 0;\n right: 0;\n z-index: 5;\n background-color: ${({ theme }) => Color(theme.stigg.palette.backgroundPaper).alpha(0.9).toString()};\n animation: blurFade 2s ease-in forwards;\n display: flex;\n flex-direction: column;\n justify-content: center;\n\n * rect {\n fill: transparent;\n }\n\n & path {\n stroke: ${({ theme }) => theme.stigg.palette.primary};\n }\n`;\n\nconst CheckoutSuccessText = styled(Typography)`\n @keyframes fadeIn {\n 0% {\n opacity: 0;\n }\n 75% {\n opacity: 0;\n }\n 100% {\n opacity: 1;\n }\n }\n\n align-self: center;\n animation: fadeIn 5s ease-in forwards;\n`;\n\nconst StyledLottie = styled(Lottie)`\n display: flex;\n justify-content: center;\n\n svg {\n width: 350px !important;\n height: auto !important;\n }\n`;\n\nexport function CheckoutSuccess({ checkoutLocalization }: { checkoutLocalization: CheckoutLocalization }) {\n return (\n <CheckoutSuccessContainer className=\"stigg-checkout-success-container\">\n <StyledLottie animationData={animationData} loop={false} autoplay />\n <CheckoutSuccessText variant=\"h1\" color=\"primary.main\">\n {checkoutLocalization.summary.checkoutSuccessText}\n </CheckoutSuccessText>\n </CheckoutSuccessContainer>\n );\n}\n","import { ApplySubscription, ApplySubscriptionResults } from '@stigg/js-client-sdk';\nimport { useElements, useStripe } from '@stripe/react-stripe-js';\nimport { useStiggContext } from '../../../../..';\nimport { useCheckoutModel } from '../../../hooks';\nimport { usePaymentStepModel } from '../../../hooks/usePaymentStepModel';\nimport { useSubscriptionState } from '../../../hooks/useSubscriptionState';\nimport { CheckoutContainerProps, CheckoutResult } from '../../../CheckoutContainer';\nimport { handleNewPaymentMethod, handleStripeNextAction } from './stripe.utils';\nimport { ANIMATION_DURATION } from '../../../summary/CheckoutSuccess';\n\nconst delay = (ms: number) => new Promise((res) => setTimeout(res, ms));\n\nexport type HandleSubmitResult = { results?: ApplySubscriptionResults; success: boolean; errorMessage?: string };\n\nexport type UseSubmitProps = {\n onSuccess?: () => void;\n isMocked?: boolean;\n} & Pick<CheckoutContainerProps, 'onCheckout' | 'onCheckoutCompleted' | 'disableSuccessAnimation'>;\n\nexport function useSubmit({\n isMocked = false,\n onCheckout,\n onCheckoutCompleted,\n onSuccess,\n disableSuccessAnimation,\n}: UseSubmitProps) {\n const { stigg } = useStiggContext();\n const { useNewPaymentMethod } = usePaymentStepModel();\n const subscriptionState = useSubscriptionState();\n const { checkoutState, widgetState, setWidgetReadOnly } = useCheckoutModel();\n const { setupSecret: setupIntentClientSecret, customer } = checkoutState || {};\n const stripe = useStripe();\n const elements = useElements();\n\n const handleSubmit = async (e: any): Promise<HandleSubmitResult> => {\n e.preventDefault();\n\n if (!subscriptionState) {\n return { success: false, errorMessage: 'Unexpected error, please contact support.' };\n }\n\n let success = true;\n let errorMessage: string | undefined;\n let usedStiggCheckoutAction = false;\n let paymentMethodId: string | undefined;\n\n setWidgetReadOnly(true);\n\n if (!isMocked && useNewPaymentMethod) {\n const paymentMethodResults = await handleNewPaymentMethod({ elements, stripe, setupIntentClientSecret });\n if (!paymentMethodResults.success) {\n errorMessage = paymentMethodResults.errorMessage;\n success = false;\n } else {\n paymentMethodId = paymentMethodResults.paymentMethodId;\n }\n }\n\n const checkoutParams: ApplySubscription = { ...subscriptionState, paymentMethodId };\n\n const checkoutAction = async (params: ApplySubscription): Promise<CheckoutResult> => {\n usedStiggCheckoutAction = true;\n\n try {\n const applySubscriptionResults = await stigg.applySubscription(params);\n\n const nextActionResults = await handleStripeNextAction({ applySubscriptionResults, stripe });\n\n return {\n success: !nextActionResults.errorMessage,\n errorMessage: nextActionResults.errorMessage,\n results: applySubscriptionResults,\n };\n } catch (e) {\n console.error(e);\n errorMessage = (e as any)?.message;\n return { success: false, errorMessage };\n }\n };\n\n let checkoutResults: ApplySubscriptionResults | undefined;\n\n if (success) {\n if (onCheckout) {\n const externalCheckoutResults = await onCheckout({\n customerId: customer!.id,\n checkoutParams,\n checkoutAction,\n });\n if (externalCheckoutResults.errorMessage) {\n errorMessage = externalCheckoutResults.errorMessage;\n }\n\n if (!usedStiggCheckoutAction && externalCheckoutResults.results && externalCheckoutResults.success) {\n const nextActionResults = await handleStripeNextAction({\n applySubscriptionResults: externalCheckoutResults.results,\n stripe,\n });\n\n if (nextActionResults.errorMessage) {\n errorMessage = nextActionResults.errorMessage;\n success = false;\n }\n }\n\n success = success && externalCheckoutResults.success && !errorMessage;\n checkoutResults = externalCheckoutResults.results;\n } else {\n const checkoutActionResults = await checkoutAction(checkoutParams);\n if (!checkoutActionResults.success && checkoutActionResults.errorMessage) {\n errorMessage = checkoutActionResults.errorMessage;\n }\n success = checkoutActionResults.success && !errorMessage;\n checkoutResults = checkoutActionResults.results;\n }\n }\n\n setWidgetReadOnly(false);\n\n if (success && onSuccess) {\n onSuccess();\n\n if (!disableSuccessAnimation) {\n await delay(ANIMATION_DURATION); // Wait for animation to finish\n }\n }\n\n await onCheckoutCompleted({ success, error: errorMessage });\n\n return { results: checkoutResults, success: !errorMessage, errorMessage };\n };\n\n return { handleSubmit, isLoading: !!widgetState?.readOnly };\n}\n","import React, { FC, PropsWithChildren } from 'react';\nimport { Skeleton } from '../../components/Skeletons.style';\n\nexport const WithSkeleton: FC<\n PropsWithChildren<{\n isLoading: boolean;\n width?: number | string;\n height?: number | string;\n }>\n> = ({ isLoading, width = 50, height = 16, children }) => {\n if (isLoading) {\n return <Skeleton width={width} height={height} />;\n }\n\n return <>{children}</>;\n};\n","/* eslint-disable react/no-unused-prop-types */\nimport React from 'react';\nimport moment from 'moment';\nimport { BillingModel, BillingPeriod, Plan, Subscription, SubscriptionPreviewV2 } from '@stigg/js-client-sdk';\nimport { Typography } from '../../../common/Typography';\nimport { currencyPriceFormatter } from '../../../utils/currencyUtils';\nimport { CheckoutLocalization } from '../../configurations/textOverrides';\nimport { WithSkeleton } from './WithSkeleton';\n\nexport type CheckoutCaptionProps = {\n subscriptionPreview?: SubscriptionPreviewV2 | null;\n isFetchingSubscriptionPreview: boolean;\n activeSubscription?: Subscription | null;\n plan?: Plan;\n checkoutLocalization: CheckoutLocalization;\n billingPeriod: BillingPeriod;\n};\n\nconst RemainingCreditsCaption = ({\n subscriptionPreview,\n isFetchingSubscriptionPreview,\n checkoutLocalization,\n}: CheckoutCaptionProps) => {\n const { immediateInvoice } = subscriptionPreview || {};\n if (!immediateInvoice?.proration?.netAmount?.amount || immediateInvoice?.proration?.netAmount?.amount >= 0) {\n return null;\n }\n\n const positiveAmount = immediateInvoice.proration.netAmount.amount * -1;\n\n const credits = currencyPriceFormatter({\n amount: positiveAmount,\n currency: immediateInvoice.proration.netAmount.currency,\n minimumFractionDigits: 2,\n });\n\n return (\n <Typography variant=\"caption\" style={{ marginTop: 14 }}>\n <WithSkeleton isLoading={isFetchingSubscriptionPreview} width=\"100%\">\n {checkoutLocalization.summary.creditsForUnusedTimeText({ credits })}\n </WithSkeleton>\n </Typography>\n );\n};\n\nconst ScheduledUpdatesCaption = ({\n subscriptionPreview,\n activeSubscription,\n isFetchingSubscriptionPreview,\n checkoutLocalization,\n}: CheckoutCaptionProps) => {\n if (!subscriptionPreview?.hasScheduledUpdates || !activeSubscription?.currentBillingPeriodEnd) {\n return null;\n }\n\n const { currentBillingPeriodEnd } = activeSubscription;\n const changesWillApplyText =\n typeof checkoutLocalization.summary.changesWillApplyAtEndOfBillingPeriod === 'function'\n ? checkoutLocalization.summary.changesWillApplyAtEndOfBillingPeriod({ billingPeriodEnd: currentBillingPeriodEnd })\n : checkoutLocalization.summary.changesWillApplyAtEndOfBillingPeriod;\n\n return (\n <Typography variant=\"caption\" style={{ marginTop: 14 }}>\n <WithSkeleton isLoading={isFetchingSubscriptionPreview} width=\"100%\">\n {changesWillApplyText}\n </WithSkeleton>\n </Typography>\n );\n};\n\nconst NextBillingCaption = ({\n subscriptionPreview,\n activeSubscription,\n plan,\n isFetchingSubscriptionPreview,\n billingPeriod,\n}: CheckoutCaptionProps) => {\n const { recurringInvoice } = subscriptionPreview || {};\n if (!subscriptionPreview || !recurringInvoice?.total.amount) {\n return null;\n }\n\n const currentBillingPeriodEnd = subscriptionPreview.hasScheduledUpdates\n ? activeSubscription?.currentBillingPeriodEnd\n : subscriptionPreview?.billingPeriodRange.end;\n\n const total = currencyPriceFormatter({\n ...recurringInvoice.total,\n minimumFractionDigits: 2,\n });\n\n const hasUnitBasedPricing = plan?.pricePoints.some((price) => price.pricingModel === BillingModel.UsageBased);\n const hasNonUnitBasedPricing = plan?.pricePoints.some((price) => price.pricingModel !== BillingModel.UsageBased);\n\n let text = 'We will bill you ';\n let totalAmountText = `${total} `;\n\n if (hasUnitBasedPricing) {\n if (!hasNonUnitBasedPricing) {\n totalAmountText = 'for';\n } else {\n totalAmountText += '+';\n }\n\n totalAmountText += ' applicable usage-based charges for this subscription ';\n }\n\n let nextBillingDate;\n let billingPeriodText;\n\n switch (billingPeriod) {\n case BillingPeriod.Monthly:\n billingPeriodText = 'month';\n nextBillingDate = `the ${moment(currentBillingPeriodEnd).format('Do')}`;\n break;\n case BillingPeriod.Annually:\n billingPeriodText = 'year';\n nextBillingDate = moment(currentBillingPeriodEnd).format('MMMM Do');\n break;\n default: {\n break;\n }\n }\n\n text += `${totalAmountText}for this subscription every ${billingPeriodText} on ${nextBillingDate}, unless you cancel.`;\n\n return (\n <Typography variant=\"body1\" style={{ marginTop: 14 }}>\n <WithSkeleton isLoading={isFetchingSubscriptionPreview} width=\"100%\">\n {text}\n </WithSkeleton>\n </Typography>\n );\n};\n\nexport function CheckoutCaptions(props: CheckoutCaptionProps) {\n return (\n <>\n <RemainingCreditsCaption {...props} />\n\n <ScheduledUpdatesCaption {...props} />\n\n <NextBillingCaption {...props} />\n </>\n );\n}\n","import React from 'react';\nimport styled from '@emotion/styled/macro';\nimport Grid from '@mui/material/Grid';\nimport {\n BillingModel,\n BillingPeriod,\n Price,\n SubscriptionPreviewInvoice,\n SubscriptionPreviewV2,\n} from '@stigg/js-client-sdk';\nimport { Typography } from '../../../common/Typography';\nimport { currencyPriceFormatter } from '../../../utils/currencyUtils';\nimport { calculateTierPriceVolume, getTierByQuantity } from '../../../utils/priceTierUtils';\nimport { WithSkeleton } from './WithSkeleton';\nimport { Skeleton } from '../../components/Skeletons.style';\nimport { CheckoutLocalization } from '../../configurations/textOverrides';\nimport { Icon } from '../../../common/Icon';\nimport { InformationTooltip } from '../../../common/InformationTooltip';\n\nexport const LineItemContainer = styled.div`\n & + & {\n margin-top: 8px;\n }\n`;\n\nexport const LineItemRow = styled.div`\n display: flex;\n align-items: center;\n justify-content: space-between;\n`;\n\nexport const getPriceString = ({ amount, price, quantity }: { amount: number; price: Price; quantity: number }) => {\n const { billingPeriod } = price;\n let billingPeriodString = null;\n\n if (quantity) {\n amount /= quantity;\n }\n\n if (billingPeriod === BillingPeriod.Annually) {\n amount /= 12;\n billingPeriodString = '12 months';\n }\n\n const addonPriceFormat = currencyPriceFormatter({ amount, currency: price.currency, minimumFractionDigits: 2 });\n\n return `${quantity > 1 ? `${quantity} x ${addonPriceFormat} each` : addonPriceFormat}${\n billingPeriodString ? ` x ${billingPeriodString}` : ''\n }`;\n};\n\nconst PayAsYouGoPriceTooltip = ({ checkoutLocalization }: { checkoutLocalization: CheckoutLocalization }) => {\n const title = <Typography variant=\"body1\">{checkoutLocalization.summary.payAsYouGoTooltipText}</Typography>;\n return (\n <InformationTooltip placement=\"left\" title={title}>\n <Icon icon=\"PayAsYouGoCharge\" style={{ display: 'flex' }} />\n </InformationTooltip>\n );\n};\n\nexport const BilledPriceLineItem = ({\n checkoutLocalization,\n label,\n quantity,\n price,\n}: {\n checkoutLocalization: CheckoutLocalization;\n label: string;\n quantity: number;\n price: Price;\n}) => {\n const { billingPeriod } = price;\n const isPayAsYouGo = price.pricingModel === BillingModel.UsageBased;\n\n let amount;\n if (price.isTieredPrice) {\n const tier = getTierByQuantity(price.tiers!, quantity);\n amount = calculateTierPriceVolume(tier!, quantity);\n } else {\n amount = price.amount!;\n }\n\n return (\n <LineItemContainer>\n <LineItemRow style={{ alignItems: 'flex-start' }}>\n <Grid item>\n <Typography variant=\"body1\" color=\"secondary\">\n {label}\n </Typography>\n {(quantity > 1 || billingPeriod === BillingPeriod.Annually) && (\n <Typography variant=\"body1\" color=\"secondary\">\n {getPriceString({ amount, price, quantity })}\n </Typography>\n )}\n </Grid>\n <Grid item display=\"flex\" gap={1} alignItems=\"center\">\n {isPayAsYouGo && <PayAsYouGoPriceTooltip checkoutLocalization={checkoutLocalization} />}\n <Typography variant=\"body1\" color=\"secondary\" style={{ wordBreak: 'break-word' }}>\n {currencyPriceFormatter({ amount, currency: price.currency, minimumFractionDigits: 2 })}\n {isPayAsYouGo && ' / unit'}\n </Typography>\n </Grid>\n </LineItemRow>\n </LineItemContainer>\n );\n};\n\nexport const FreeChargeLineItem = ({ label }: { label: string }) => {\n return (\n <LineItemContainer>\n <LineItemRow style={{ alignItems: 'flex-end' }}>\n <Grid item>\n <Typography variant=\"body1\" color=\"secondary\">\n {label}\n </Typography>\n </Grid>\n <Grid item display=\"flex\" gap={1} alignItems=\"center\">\n <Typography variant=\"body1\" color=\"secondary\" style={{ wordBreak: 'break-word' }}>\n Free\n </Typography>\n </Grid>\n </LineItemRow>\n </LineItemContainer>\n );\n};\n\nexport const DiscountLineItem = ({\n subscriptionPreview,\n isFetchingSubscriptionPreview,\n checkoutLocalization,\n}: {\n subscriptionPreview: SubscriptionPreviewV2;\n isFetchingSubscriptionPreview: boolean;\n checkoutLocalization: CheckoutLocalization;\n}) => {\n const { immediateInvoice, recurringInvoice } = subscriptionPreview;\n const { discount, discountDetails } = recurringInvoice || {};\n if (!discount || !discountDetails) {\n return null;\n }\n\n return (\n <LineItemContainer>\n <LineItemRow>\n <Typography variant=\"body1\" color=\"secondary\">\n {checkoutLocalization.summary.discountText({\n discountDetails,\n currency: immediateInvoice.total.currency,\n })}\n </Typography>\n <Typography variant=\"body1\" color=\"secondary\">\n {isFetchingSubscriptionPreview ? (\n <Skeleton width={50} height={16} />\n ) : (\n currencyPriceFormatter({\n amount: discount.amount,\n currency: discount.currency,\n minimumFractionDigits: 2,\n })\n )}\n </Typography>\n </LineItemRow>\n </LineItemContainer>\n );\n};\n\nexport const AppliedCreditsLineItem = ({\n subscriptionPreview,\n isFetchingSubscriptionPreview,\n checkoutLocalization,\n}: {\n subscriptionPreview: SubscriptionPreviewV2 | null;\n isFetchingSubscriptionPreview: boolean;\n checkoutLocalization: CheckoutLocalization;\n}) => {\n const { immediateInvoice } = subscriptionPreview || {};\n const { credits } = immediateInvoice || {};\n\n if (!credits || !credits.used || credits.used.amount <= 0) {\n return null;\n }\n\n return (\n <LineItemContainer>\n <LineItemRow>\n <Typography variant=\"body1\" color=\"secondary\">\n {checkoutLocalization.summary.appliedCreditsTitle}\n </Typography>\n <Typography variant=\"body1\" color=\"secondary\">\n <WithSkeleton isLoading={isFetchingSubscriptionPreview}>\n {currencyPriceFormatter({\n amount: -1 * credits.used.amount,\n currency: credits.used.currency,\n minimumFractionDigits: 2,\n })}\n </WithSkeleton>\n </Typography>\n </LineItemRow>\n </LineItemContainer>\n );\n};\n\nexport const TaxLineItem = ({\n tax,\n taxDetails,\n isFetchingSubscriptionPreview,\n checkoutLocalization,\n}: {\n isFetchingSubscriptionPreview: boolean;\n checkoutLocalization: CheckoutLocalization;\n} & Pick<SubscriptionPreviewInvoice, 'tax' | 'taxDetails'>) => {\n if (!taxDetails || !tax || tax?.amount <= 0) {\n return null;\n }\n\n return (\n <LineItemContainer>\n <LineItemRow>\n <Typography variant=\"body1\" color=\"secondary\">\n {checkoutLocalization.summary.taxTitle({ taxDetails })}\n </Typography>\n <Typography variant=\"body1\" color=\"secondary\">\n <WithSkeleton isLoading={isFetchingSubscriptionPreview}>\n {currencyPriceFormatter({ amount: tax?.amount, currency: tax?.currency, minimumFractionDigits: 2 })}\n </WithSkeleton>\n </Typography>\n </LineItemRow>\n </LineItemContainer>\n );\n};\n","import React, { useState } from 'react';\nimport partition from 'lodash/partition';\nimport styled from '@emotion/styled/macro';\nimport Box from '@mui/material/Box';\nimport CircularProgress from '@mui/material/CircularProgress';\nimport Divider from '@mui/material/Divider';\nimport Grid from '@mui/material/Grid';\nimport Paper from '@mui/material/Paper';\nimport { BillingModel } from '@stigg/js-client-sdk';\nimport { PoweredByStigg } from '../../common/PoweredByStigg';\nimport { Typography } from '../../common/Typography';\nimport { useChargesSort } from '../../hooks/useChargeSort';\nimport { currencyPriceFormatter } from '../../utils/currencyUtils';\nimport { Button } from '../components';\nimport {\n useCheckoutModel,\n useProgressBarModel,\n usePreviewSubscription,\n useSubscriptionModel,\n usePaymentStepModel,\n} from '../hooks';\nimport { PromotionCodeSection } from '../promotionCode';\nimport { useSubmit } from '../steps/payment/stripe';\nimport { CheckoutContainerProps } from '../CheckoutContainer';\nimport { CheckoutCaptions } from './components/CheckoutCaptions';\nimport {\n AppliedCreditsLineItem,\n BilledPriceLineItem,\n DiscountLineItem,\n FreeChargeLineItem,\n LineItemContainer,\n LineItemRow,\n TaxLineItem,\n} from './components/LineItems';\nimport { WithSkeleton } from './components/WithSkeleton';\nimport { Icon } from '../../common/Icon';\nimport { CheckoutLocalization } from '../configurations/textOverrides';\nimport { CheckoutSuccess } from './CheckoutSuccess';\nimport { getFeatureDisplayNameText } from '../../utils/getFeatureName';\n\nexport const SummaryContainer = styled(Box)`\n max-width: 470px;\n flex: 1.5;\n`;\n\nexport const SummaryCard = styled(Paper)`\n border-radius: 10px;\n background: ${({ theme }) => theme.stigg.palette.backgroundHighlight};\n padding: 16px;\n`;\n\nSummaryCard.defaultProps = {\n elevation: 0,\n};\n\nconst SummaryTitle = styled(Typography)`\n margin-bottom: 16px;\n font-weight: 500;\n`;\n\nconst StyledDivider = styled(Divider)`\n margin: 16px 0;\n`;\n\nconst TotalDueText = styled(Typography)`\n margin-bottom: 8px;\n`;\n\nfunction resolveCheckoutButtonText({\n isLastStep,\n checkoutHasChanges,\n isFreeDowngrade,\n checkoutLocalization,\n isPlanUpdate,\n}: {\n isLastStep?: boolean;\n checkoutHasChanges: boolean;\n isFreeDowngrade: boolean;\n checkoutLocalization: CheckoutLocalization;\n isPlanUpdate?: boolean;\n}) {\n if (!isLastStep) {\n return checkoutLocalization.checkoutButton.nextText;\n }\n\n if (!checkoutHasChanges) {\n return checkoutLocalization.checkoutButton.noChangesText;\n }\n\n if (isPlanUpdate) {\n return checkoutLocalization.checkoutButton.updateText;\n }\n\n if (isFreeDowngrade) {\n return checkoutLocalization.checkoutButton.downgradeToFreeText;\n }\n\n return checkoutLocalization.checkoutButton.upgradeText;\n}\n\nexport const CheckoutSummary = ({\n onCheckout,\n onCheckoutCompleted,\n disablePromotionCode,\n disableSuccessAnimation,\n isFreeDowngrade,\n onMockCheckoutPreview,\n}: CheckoutContainerProps & { isFreeDowngrade: boolean }) => {\n const [isCheckoutCompletedSuccessfully, setIsCheckoutCompletedSuccessfully] = useState(false);\n const { setErrorMessage } = usePaymentStepModel();\n const progressBar = useProgressBarModel();\n const subscription = useSubscriptionModel();\n const { checkoutState, checkoutLocalization } = useCheckoutModel();\n const { plan, activeSubscription } = checkoutState || {};\n const planPrices = useChargesSort(\n plan?.pricePoints?.filter((price) => price.billingPeriod === subscription.billingPeriod) || [],\n );\n const [baseCharges, usageCharges] = partition(planPrices, (price) => price.pricingModel === BillingModel.FlatFee);\n const [baseCharge] = baseCharges || [];\n const isLastStep = isFreeDowngrade || (progressBar.isCheckoutComplete && progressBar.isLastStep);\n\n const { subscriptionPreview, isFetchingSubscriptionPreview } = usePreviewSubscription({ onMockCheckoutPreview });\n\n const { handleSubmit, isLoading } = useSubmit({\n isMocked: !!onMockCheckoutPreview, // This is a hack to make the submit button work with mocked data\n disableSuccessAnimation,\n onCheckout,\n onCheckoutCompleted,\n onSuccess: () => {\n setIsCheckoutCompletedSuccessfully(true);\n progressBar.markStepAsCompleted(progressBar.progressBarState.activeStep);\n },\n });\n\n const handleCheckout = async (e: any) => {\n if (isCheckoutCompletedSuccessfully) {\n return;\n }\n\n const { errorMessage } = (await handleSubmit(e)) || {};\n if (errorMessage) {\n setErrorMessage(errorMessage);\n setIsCheckoutCompletedSuccessfully(false);\n } else {\n setErrorMessage(undefined);\n }\n };\n\n const onCheckoutClick = async (e: any): Promise<void> => {\n if (isLoading) {\n return;\n }\n\n if (isLastStep) {\n await handleCheckout(e);\n } else {\n progressBar.goNext();\n }\n };\n\n const { immediateInvoice, recurringInvoice } = subscriptionPreview || {};\n const checkoutHasChanges =\n !!subscriptionPreview && (!!immediateInvoice?.proration || !!subscriptionPreview.hasScheduledUpdates);\n const showPromotionCodeLine = !disablePromotionCode && !isFreeDowngrade;\n const showDiscountLine = !!recurringInvoice?.discountDetails && !isFreeDowngrade;\n const hasDiscounts = showPromotionCodeLine || showDiscountLine;\n\n const hasPayAsYouGoCharges = usageCharges.some((price) => price.pricingModel === BillingModel.UsageBased);\n const onlyPayAsYouGoCharges =\n hasPayAsYouGoCharges &&\n !baseCharge &&\n usageCharges.every((price) => price.pricingModel === BillingModel.UsageBased);\n\n const baseChargeLabel =\n typeof checkoutLocalization.summary.baseChargeText === 'function'\n ? checkoutLocalization.summary.baseChargeText({ billingPeriod: subscription.billingPeriod })\n : checkoutLocalization.summary.baseChargeText;\n\n return (\n <SummaryContainer>\n <SummaryCard>\n <SummaryTitle variant=\"h3\">{checkoutLocalization.summary.title}</SummaryTitle>\n\n <Grid display=\"flex\" flexDirection=\"row\" alignItems=\"center\" marginY={2}>\n <Typography variant=\"h6\" color=\"primary\" style={{ paddingRight: '8px' }}>\n {checkoutLocalization.summary.planName({ plan: plan! })}\n </Typography>\n <StyledDivider className=\"stigg-checkout-summary-divider\" sx={{ flex: 1, margin: '0 !important' }} />\n </Grid>\n\n {baseCharge && (\n <BilledPriceLineItem\n checkoutLocalization={checkoutLocalization}\n label={baseChargeLabel}\n quantity={1}\n price={baseCharge}\n />\n )}\n {!baseCharge && isFreeDowngrade ? <FreeChargeLineItem label={baseChargeLabel} /> : null}\n\n {usageCharges.map((price) => {\n const priceBillableFeature = subscription.billableFeatures?.find(\n (billableFeature) => billableFeature.featureId === price.feature?.featureId,\n );\n\n return (\n <BilledPriceLineItem\n checkoutLocalization={checkoutLocalization}\n key={price.feature?.featureId}\n label={getFeatureDisplayNameText(\n price.feature?.displayName || '',\n price.feature?.units,\n price.feature?.unitsPlural,\n )}\n quantity={priceBillableFeature?.quantity || 1}\n price={price}\n />\n );\n })}\n\n {!!subscription.addons?.length && (\n <>\n <Grid display=\"flex\" flexDirection=\"row\" alignItems=\"center\" marginY={2}>\n <Typography variant=\"h6\" color=\"primary\" style={{ paddingRight: '8px' }}>\n {checkoutLocalization.summary.addonsSectionTitle}\n </Typography>\n <StyledDivider className=\"stigg-checkout-summary-divider\" sx={{ flex: 1, margin: '0 !important' }} />\n </Grid>\n {subscription.addons.map((addon) => {\n const addonPrice = addon.addon.pricePoints?.find(\n (price) => price.billingPeriod === subscription.billingPeriod,\n );\n\n if (!addonPrice) return null;\n\n const addonQuantity = addon.quantity && addon.quantity > 0 ? addon.quantity : 1;\n\n return (\n <BilledPriceLineItem\n checkoutLocalization={checkoutLocalization}\n key={addon?.addon?.id}\n label={addon.addon.displayName}\n quantity={addonQuantity}\n price={addonPrice}\n />\n );\n })}\n </>\n )}\n\n {!hasDiscounts && <StyledDivider className=\"stigg-checkout-summary-divider\" />}\n {hasDiscounts && (\n <Grid display=\"flex\" flexDirection=\"row\" alignItems=\"center\" marginY={2}>\n <Typography variant=\"h6\" color=\"primary\" style={{ paddingRight: '8px' }}>\n {checkoutLocalization.summary.discountsSectionTitle}\n </Typography>\n <StyledDivider className=\"stigg-checkout-summary-divider\" sx={{ flex: 1, margin: '0 !important' }} />\n </Grid>\n )}\n\n {showPromotionCodeLine && (\n <PromotionCodeSection\n disabled={isLoading || isFetchingSubscriptionPreview}\n checkoutLocalization={checkoutLocalization}\n onMockCheckoutPreview={onMockCheckoutPreview}\n />\n )}\n\n {showDiscountLine && (\n <DiscountLineItem\n subscriptionPreview={subscriptionPreview!}\n isFetchingSubscriptionPreview={isFetchingSubscriptionPreview}\n checkoutLocalization={checkoutLocalization}\n />\n )}\n\n {hasDiscounts && <StyledDivider className=\"stigg-checkout-summary-divider\" />}\n\n <TaxLineItem\n tax={recurringInvoice?.tax}\n taxDetails={recurringInvoice?.taxDetails}\n isFetchingSubscriptionPreview={isFetchingSubscriptionPreview}\n checkoutLocalization={checkoutLocalization}\n />\n\n {!isFreeDowngrade ? (\n <>\n <LineItemRow style={{ marginTop: 16 }}>\n <Grid display=\"flex\" flexDirection=\"column\" container>\n <Grid item display=\"flex\" justifyContent=\"space-between\">\n <Typography variant=\"h6\">{checkoutLocalization.summary.totalText}</Typography>\n <Typography variant=\"h6\">\n <WithSkeleton isLoading={isFetchingSubscriptionPreview}>\n {onlyPayAsYouGoCharges ? checkoutLocalization.summary.onlyPayAsYouGoText : null}\n {!onlyPayAsYouGoCharges && hasPayAsYouGoCharges\n ? checkoutLocalization.summary.startsAtText\n : null}\n {!onlyPayAsYouGoCharges\n ? currencyPriceFormatter({\n amount: 0,\n ...recurringInvoice?.total,\n minimumFractionDigits: 2,\n })\n : null}\n </WithSkeleton>\n </Typography>\n </Grid>\n <Grid item>\n <Typography variant=\"body1\" color=\"secondary\">\n {checkoutLocalization.summary.totalBillingPeriodText({ billingPeriod: subscription.billingPeriod })}\n </Typography>\n </Grid>\n </Grid>\n </LineItemRow>\n <StyledDivider className=\"stigg-checkout-summary-divider\" />\n </>\n ) : null}\n\n {immediateInvoice?.proration?.hasProrations &&\n immediateInvoice?.subTotal &&\n immediateInvoice?.subTotal.amount > 0 ? (\n <LineItemContainer>\n <LineItemRow>\n <Typography variant=\"body1\" color=\"secondary\">\n {checkoutLocalization.summary.proratedTotalDueText}\n </Typography>\n <Typography variant=\"body1\" color=\"secondary\">\n <WithSkeleton isLoading={isFetchingSubscriptionPreview}>\n {currencyPriceFormatter({\n amount: immediateInvoice?.subTotal?.amount + (immediateInvoice?.tax?.amount || 0),\n currency: immediateInvoice?.subTotal.currency,\n minimumFractionDigits: 2,\n })}\n </WithSkeleton>\n </Typography>\n </LineItemRow>\n </LineItemContainer>\n ) : null}\n\n <AppliedCreditsLineItem\n subscriptionPreview={subscriptionPreview}\n isFetchingSubscriptionPreview={isFetchingSubscriptionPreview}\n checkoutLocalization={checkoutLocalization}\n />\n\n <LineItemContainer>\n <LineItemRow>\n <TotalDueText variant=\"h6\">{checkoutLocalization.summary.totalDueText}</TotalDueText>\n <TotalDueText variant=\"h6\">\n <WithSkeleton isLoading={isFetchingSubscriptionPreview}>\n {currencyPriceFormatter({ amount: 0, ...immediateInvoice?.total, minimumFractionDigits: 2 })}\n </WithSkeleton>\n </TotalDueText>\n </LineItemRow>\n </LineItemContainer>\n\n <CheckoutCaptions\n plan={plan}\n activeSubscription={activeSubscription}\n subscriptionPreview={subscriptionPreview}\n isFetchingSubscriptionPreview={isFetchingSubscriptionPreview}\n checkoutLocalization={checkoutLocalization}\n billingPeriod={subscription.billingPeriod}\n />\n\n <Button\n $success={isCheckoutCompletedSuccessfully}\n $error={isLastStep && isFreeDowngrade}\n disabled={\n isLoading ||\n isFetchingSubscriptionPreview ||\n progressBar.progressBarState.isDisabled ||\n (isLastStep && !checkoutHasChanges)\n }\n className=\"stigg-checkout-summary-cta-button\"\n sx={{ textTransform: 'none', borderRadius: '10px', marginTop: '24px', height: '36px' }}\n variant=\"contained\"\n size=\"medium\"\n onClick={(e: any) => {\n void onCheckoutClick(e);\n }}\n fullWidth>\n <Typography\n className=\"stigg-checkout-summary-cta-button-text\"\n variant=\"h3\"\n color=\"white\"\n style={{ display: 'flex' }}>\n {isCheckoutCompletedSuccessfully ? (\n <Icon icon=\"Check\" style={{ display: 'contents' }} />\n ) : isLoading || isFetchingSubscriptionPreview ? (\n <CircularProgress size={20} sx={{ color: 'white' }} />\n ) : (\n resolveCheckoutButtonText({\n isLastStep,\n checkoutHasChanges,\n isFreeDowngrade,\n checkoutLocalization,\n isPlanUpdate: !!activeSubscription && activeSubscription?.plan.id === plan?.id,\n })\n )}\n </Typography>\n </Button>\n </SummaryCard>\n <PoweredByStigg\n source=\"checkout\"\n showWatermark\n style={{ marginTop: 8, display: 'flex', justifyContent: 'center' }}\n />\n {!disableSuccessAnimation && isCheckoutCompletedSuccessfully && (\n <CheckoutSuccess checkoutLocalization={checkoutLocalization} />\n )}\n </SummaryContainer>\n );\n};\n","import React from 'react';\nimport { PoweredByStigg } from '../../common/PoweredByStigg';\nimport { SummaryCard, SummaryContainer } from './CheckoutSummary';\nimport { FlexedSkeleton, Skeleton, SkeletonsContainer } from '../components/Skeletons.style';\n\nexport const CheckoutSummarySkeleton = () => {\n return (\n <SummaryContainer>\n <SummaryCard>\n <SkeletonsContainer $flexDirection=\"column\" $gap={24}>\n <Skeleton width={120} height={20} />\n\n <Skeleton width={120} height={20} />\n\n <Skeleton width={120} height={20} />\n\n <Skeleton width={120} height={20} />\n </SkeletonsContainer>\n\n <SkeletonsContainer $flexDirection=\"column\" $gap={24} marginTop={5}>\n <Skeleton height={20} />\n\n <Skeleton height={20} />\n\n <Skeleton height={20} />\n </SkeletonsContainer>\n\n <FlexedSkeleton flex={1} marginTop={5}>\n <Skeleton height={34} />\n </FlexedSkeleton>\n </SummaryCard>\n <PoweredByStigg\n source=\"checkout\"\n showWatermark\n style={{ marginTop: 8, display: 'flex', justifyContent: 'center' }}\n />\n </SummaryContainer>\n );\n};\n","import styled from '@emotion/styled/macro';\nimport Grid from '@mui/material/Grid';\n\nimport { Button } from '../../components';\n\nexport const CheckoutAddonsContainer = styled(Grid)`\n width: 100%;\n gap: 8px;\n`;\n\nexport const AddonListItemContainer = styled(Grid)`\n display: flex;\n justify-content: space-between;\n align-items: center;\n height: 80px;\n`;\n\nexport const TrashButton = styled(Button)`\n min-width: unset;\n width: 41px;\n height: 41px;\n padding: 0;\n`;\n","import React, { useEffect, useState } from 'react';\n\nimport Grid from '@mui/material/Grid';\nimport { Addon, BillingPeriod, SubscriptionAddon } from '@stigg/js-client-sdk';\n\nimport { Icon } from '../../../common/Icon';\nimport { Typography } from '../../../common/Typography';\nimport { currencyPriceFormatter } from '../../../utils/currencyUtils';\nimport { Button, InputField } from '../../components';\nimport { useAddonsStepModel } from '../../hooks/useAddonsStepModel';\nimport { usePlanStepModel } from '../../hooks/usePlanStepModel';\nimport { AddonListItemContainer, CheckoutAddonsContainer, TrashButton } from './CheckoutAddonsStep.style';\nimport { CheckoutLocalization } from '../../configurations/textOverrides';\nimport { useCheckoutModel, useProgressBarModel } from '../../hooks';\n\ntype UseAddonsStepModel = ReturnType<typeof useAddonsStepModel>;\n\ntype AddonListItemProps = {\n addon: Addon;\n addonState?: SubscriptionAddon;\n initialAddonState?: SubscriptionAddon;\n billingPeriod: BillingPeriod;\n setAddon: UseAddonsStepModel['setAddon'];\n removeAddon: UseAddonsStepModel['removeAddon'];\n checkoutLocalization: CheckoutLocalization;\n onAddonsValidationChange: (params: { addonId: string; isValid: boolean }) => void;\n isValid: boolean;\n};\n\nfunction AddonListItem({\n addon,\n billingPeriod,\n addonState,\n initialAddonState,\n setAddon,\n removeAddon,\n checkoutLocalization,\n onAddonsValidationChange,\n isValid,\n}: AddonListItemProps) {\n const addonPrice = addon.pricePoints.find((pricePoint) => pricePoint.billingPeriod === billingPeriod);\n const isAdded = !!addonState;\n const hasChanges =\n (!!addonState && !!initialAddonState && addonState.quantity !== initialAddonState.quantity) ||\n (!!initialAddonState && !addonState);\n\n const handleQuantityChange = (quantity: number | null) => {\n if (!quantity || quantity <= 0) {\n onAddonsValidationChange({ addonId: addon.id, isValid: false });\n // Reset the input value to null\n // @ts-ignore\n setAddon(addon, quantity ?? null);\n return;\n }\n\n onAddonsValidationChange({ addonId: addon.id, isValid: true });\n setAddon(addon, quantity);\n };\n\n const handleUndo = () => {\n if (initialAddonState) {\n setAddon(addon, initialAddonState.quantity);\n } else {\n removeAddon(addon.id);\n }\n\n onAddonsValidationChange({ addonId: addon.id, isValid: true });\n };\n\n return (\n <AddonListItemContainer container>\n <Grid item>\n <Typography variant=\"h6\" lineHeight=\"24px\">\n {addon.displayName}\n </Typography>\n {!!addonPrice && (\n <Typography variant=\"body1\" lineHeight=\"20px\" color=\"secondary\">\n {`${currencyPriceFormatter({\n amount: addonPrice.amount!,\n currency: addonPrice.currency,\n minimumFractionDigits: 2,\n })}/${billingPeriod === BillingPeriod.Annually ? 'year' : 'month'}`}\n </Typography>\n )}\n </Grid>\n <Grid item>\n {hasChanges && (\n <Button variant=\"text\" size=\"small\" sx={{ padding: '8px', minWidth: 'unset' }} onClick={handleUndo}>\n <Typography color=\"primary.main\" variant=\"body1\">\n Undo\n </Typography>\n </Button>\n )}\n {isAdded && (\n <>\n <InputField\n id={`${addon.id}-input`}\n type=\"number\"\n sx={{ width: 120, marginX: 2 }}\n value={addonState?.quantity ?? ''}\n error={!isValid}\n helperText={!isValid ? 'Minimum 1' : undefined}\n FormHelperTextProps={{ sx: { margin: '4px' } }}\n onChange={(event) => handleQuantityChange(event?.target?.value ? Number(event?.target?.value) : null)}\n />\n <TrashButton\n color=\"error\"\n onClick={() => {\n removeAddon(addon.id);\n onAddonsValidationChange({ addonId: addon.id, isValid: true });\n }}>\n <Icon icon=\"Trash\" style={{ display: 'flex' }} />\n </TrashButton>\n </>\n )}\n {!isAdded && (\n <Button sx={{ paddingX: '22px', paddingY: '8px' }} onClick={() => handleQuantityChange(1)}>\n <Typography color=\"primary.main\" variant=\"body1\">\n {checkoutLocalization.addAddonText}\n </Typography>\n </Button>\n )}\n </Grid>\n </AddonListItemContainer>\n );\n}\n\nexport function CheckoutAddonsStep() {\n const { checkoutLocalization, setIsValid } = useCheckoutModel();\n const { billingPeriod } = usePlanStepModel();\n const { setIsDisabled } = useProgressBarModel();\n const { initialAddons, addons, availableAddons, setAddon, removeAddon } = useAddonsStepModel();\n const [addonsValidation, setAddonsValidation] = useState(\n availableAddons?.reduce<Record<string, boolean>>((acc, curr) => {\n acc[curr.id] = true;\n return acc;\n }, {}) || {},\n );\n\n useEffect(() => {\n const isDisabled = Object.values(addonsValidation).some((x) => !x);\n setIsDisabled(isDisabled);\n setIsValid(!isDisabled);\n }, [addonsValidation, setIsDisabled, setIsValid]);\n\n return (\n <CheckoutAddonsContainer container>\n {availableAddons?.map((addon) => {\n const addonState = addons.find((x) => x.addon.id === addon.id);\n const initialAddonState = initialAddons?.find((x) => x.addon.id === addon.id);\n const isValid = addonsValidation[addon.id];\n\n return (\n <AddonListItem\n key={addon.id}\n addon={addon}\n billingPeriod={billingPeriod}\n addonState={addonState}\n initialAddonState={initialAddonState}\n setAddon={setAddon}\n removeAddon={removeAddon}\n checkoutLocalization={checkoutLocalization}\n onAddonsValidationChange={({ addonId, isValid }: { addonId: string; isValid: boolean }) =>\n setAddonsValidation({ ...addonsValidation, [addonId]: isValid })\n }\n isValid={isValid}\n />\n );\n })}\n </CheckoutAddonsContainer>\n );\n}\n","import styled from '@emotion/styled';\nimport Grid from '@mui/material/Grid';\n\nexport const PaymentMethodContainer = styled(Grid, { shouldForwardProp: (prop) => !prop.startsWith('$') })<{\n $disabled?: boolean;\n}>`\n padding: 8px;\n border-radius: 10px;\n border: 1px solid ${({ theme }) => theme.stigg.palette.outlinedBorder};\n cursor: ${({ $disabled }) => ($disabled ? 'not-allowed' : 'pointer')};\n opacity: ${({ $disabled }) => ($disabled ? 0.6 : 1)};\n`;\n\nexport const NewPaymentMethodContainer = styled(PaymentMethodContainer)`\n flex-direction: column;\n align-items: unset;\n`;\n\nexport const PaymentMethodLayoutContainer = styled(Grid)`\n display: flex;\n align-items: center;\n flex: 1;\n gap: 12px;\n`;\n\nexport const PaymentMethodTextContainer = styled(Grid)`\n display: flex;\n flex-direction: column;\n`;\n","import React from 'react';\n\nimport Collapse from '@mui/material/Collapse';\nimport Grid from '@mui/material/Grid';\nimport Radio from '@mui/material/Radio';\nimport { Customer } from '@stigg/js-client-sdk';\n\nimport { Icon, Icons } from '../../../common/Icon';\nimport { Typography } from '../../../common/Typography';\nimport {\n NewPaymentMethodContainer,\n PaymentMethodContainer,\n PaymentMethodLayoutContainer,\n PaymentMethodTextContainer,\n} from './PaymentMethods.style';\nimport { StripePaymentForm } from './stripe';\nimport { CheckoutLocalization } from '../../configurations/textOverrides';\nimport { CheckoutContainerProps } from '../../CheckoutContainer';\n\nexport type PaymentMethodLayoutProps = {\n checked: boolean;\n icon: Icons;\n text: React.ReactNode;\n subtitle?: React.ReactNode;\n readOnly?: boolean;\n};\n\nexport type PaymentMethodProps = Pick<Customer, 'paymentMethodDetails'> &\n Pick<PaymentMethodLayoutProps, 'checked' | 'readOnly'> & { onSelect: () => void };\n\nexport type NewPaymentMethodProps = Pick<PaymentMethodLayoutProps, 'checked' | 'readOnly'> & {\n onSelect: () => void;\n checkoutLocalization: CheckoutLocalization;\n} & Pick<CheckoutContainerProps, 'onBillingAddressChange' | 'collectPhoneNumber'>;\n\nfunction PaymentMethodLayout({ checked, icon, text, subtitle, readOnly }: PaymentMethodLayoutProps) {\n return (\n <PaymentMethodLayoutContainer>\n <Radio checked={checked} disabled={readOnly} />\n <Icon icon={icon} style={{ display: 'flex' }} />\n <PaymentMethodTextContainer container>\n <Grid item>{text}</Grid>\n {subtitle && <Grid item>{subtitle}</Grid>}\n </PaymentMethodTextContainer>\n </PaymentMethodLayoutContainer>\n );\n}\n\nexport function ExistingPaymentMethod({ checked, paymentMethodDetails, readOnly, onSelect }: PaymentMethodProps) {\n if (!paymentMethodDetails) {\n return null;\n }\n const { last4Digits, expirationMonth, expirationYear } = paymentMethodDetails;\n\n return (\n <PaymentMethodContainer item onClick={onSelect} $disabled={readOnly}>\n <PaymentMethodLayout\n checked={checked}\n readOnly={readOnly}\n icon=\"PaymentMethod\"\n text={<Typography variant=\"h6\">{`Card ending in ${last4Digits}`}</Typography>}\n subtitle={\n !!expirationMonth &&\n !!expirationYear && (\n <Typography variant=\"body1\">{`Expires ${expirationMonth\n .toString()\n .padStart(2, '0')}/${expirationYear}`}</Typography>\n )\n }\n />\n </PaymentMethodContainer>\n );\n}\n\nexport function NewPaymentMethod({\n checked,\n onSelect,\n readOnly,\n checkoutLocalization,\n onBillingAddressChange,\n collectPhoneNumber,\n}: NewPaymentMethodProps) {\n return (\n <NewPaymentMethodContainer item onClick={onSelect} $disabled={readOnly}>\n <PaymentMethodLayout\n checked={checked}\n readOnly={readOnly}\n icon=\"PaymentMethod\"\n text={<Typography variant=\"h6\">{checkoutLocalization.newPaymentMethodText}</Typography>}\n />\n <Collapse in={checked}>\n <StripePaymentForm onBillingAddressChange={onBillingAddressChange} collectPhoneNumber={collectPhoneNumber} />\n </Collapse>\n </NewPaymentMethodContainer>\n );\n}\n","import React from 'react';\nimport styled from '@emotion/styled';\nimport Alert from '@mui/material/Alert';\nimport Grid from '@mui/material/Grid';\nimport { useCheckoutModel, usePaymentStepModel } from '../../hooks';\nimport { ExistingPaymentMethod, NewPaymentMethod } from './PaymentMethods';\nimport { Typography } from '../../../common/Typography';\nimport { CheckoutContainerProps } from '../../CheckoutContainer';\n\nconst PaymentContainer = styled(Grid)`\n display: flex;\n flex-direction: column;\n gap: 24px;\n`;\n\nexport function PaymentStep({\n onBillingAddressChange,\n collectPhoneNumber,\n}: Pick<CheckoutContainerProps, 'onBillingAddressChange' | 'collectPhoneNumber'>) {\n const { checkoutState, checkoutLocalization, widgetState } = useCheckoutModel();\n const { customer } = checkoutState || {};\n const { errorMessage, useNewPaymentMethod, setUseNewPaymentMethod } = usePaymentStepModel();\n const { readOnly } = widgetState;\n\n const handleOnSelect = (openNewPaymentMethod: boolean) => {\n if (readOnly) {\n return;\n }\n\n setUseNewPaymentMethod(openNewPaymentMethod);\n };\n\n return (\n <PaymentContainer container>\n {!!errorMessage && (\n <Alert severity=\"error\" sx={{ alignItems: 'center' }}>\n <Typography overrideColor=\"inherit\">{errorMessage}</Typography>\n </Alert>\n )}\n <ExistingPaymentMethod\n readOnly={readOnly}\n checked={!useNewPaymentMethod}\n paymentMethodDetails={customer?.paymentMethodDetails}\n onSelect={() => handleOnSelect(false)}\n />\n <NewPaymentMethod\n readOnly={readOnly}\n checked={useNewPaymentMethod}\n checkoutLocalization={checkoutLocalization}\n onSelect={() => handleOnSelect(true)}\n onBillingAddressChange={onBillingAddressChange}\n collectPhoneNumber={collectPhoneNumber}\n />\n </PaymentContainer>\n );\n}\n","import React from 'react';\nimport Button, { ButtonProps } from '@mui/material/Button';\nimport { Typography } from '../../common/Typography';\nimport { CheckoutLocalization } from '../configurations/textOverrides';\n\nexport const ChangePlanButton = ({\n onClick,\n checkoutLocalization,\n size,\n}: {\n onClick: () => void;\n checkoutLocalization: CheckoutLocalization;\n size: ButtonProps['size'];\n}) => {\n return (\n <Button\n className=\"stigg-checkout-change-plan-button\"\n sx={{ textTransform: 'none' }}\n variant=\"text\"\n size={size}\n onClick={onClick}>\n <Typography\n className=\"stigg-checkout-change-plan-button-text\"\n color=\"primary.main\"\n variant=\"h3\"\n style={{ lineHeight: '24px' }}>\n {checkoutLocalization.changePlan}\n </Typography>\n </Button>\n );\n};\n","import React from 'react';\n\nimport Box from '@mui/material/Box';\nimport Divider from '@mui/material/Divider';\n\nimport { Typography } from '../../common/Typography';\nimport { useCheckoutModel } from '../hooks/useCheckoutModel';\nimport { CheckoutContainerProps } from '../CheckoutContainer';\nimport { ChangePlanButton } from '../components/ChangePlanButton';\n\ntype PlanHeaderProps = {\n allowChangePlan?: boolean;\n} & Pick<CheckoutContainerProps, 'onChangePlan'>;\n\nexport function PlanHeader({ allowChangePlan = false, onChangePlan }: PlanHeaderProps) {\n const { checkoutState, checkoutLocalization } = useCheckoutModel();\n const { plan } = checkoutState || {};\n\n return (\n <>\n <Box sx={{ marginBottom: '16px' }}>\n <Typography variant=\"body1\" color=\"disabled\" style={{ opacity: 0.6, marginBottom: '8px' }}>\n Selected plan\n </Typography>\n\n <Box sx={{ display: 'flex', justifyContent: 'space-between' }}>\n <Typography variant=\"h1\">{plan?.displayName}</Typography>\n\n {allowChangePlan && onChangePlan && (\n <ChangePlanButton\n onClick={() => {\n onChangePlan({ currentPlan: plan });\n }}\n checkoutLocalization={checkoutLocalization}\n size=\"medium\"\n />\n )}\n </Box>\n </Box>\n <Divider className=\"stigg-checkout-plan-header-divider\" />\n </>\n );\n}\n","import { BillingPeriod } from '@stigg/js-client-sdk';\n\nexport function formatBillingPeriod(billingPeriod: BillingPeriod) {\n switch (billingPeriod) {\n case BillingPeriod.Annually:\n return 'Annual';\n case BillingPeriod.Monthly:\n return 'Monthly';\n default:\n return '';\n }\n}\n","import styled from '@emotion/styled/macro';\nimport Box from '@mui/material/Box';\nimport Chip from '@mui/material/Chip';\nimport Color from 'color';\n\nexport const BillingPeriodPickerContainer = styled(Box)`\n margin: 16px 0;\n`;\n\nexport const BillingPeriodButton = styled.button<{\n $isActive?: boolean;\n $disabled?: boolean;\n $isOnlyBillingPeriod?: boolean;\n}>`\n cursor: ${({ $disabled, $isOnlyBillingPeriod }) =>\n $disabled ? 'default' : $isOnlyBillingPeriod ? 'default' : 'pointer'};\n flex: 1;\n display: flex;\n align-items: center;\n justify-content: flex-start;\n padding: 2px 8px;\n border-radius: 10px;\n border: ${({ theme, $isActive, $isOnlyBillingPeriod }) => {\n let borderColor = theme.stigg.palette.outlinedBorder;\n if ($isOnlyBillingPeriod) {\n borderColor = 'transparent';\n } else if ($isActive) {\n borderColor = theme.stigg.palette.outlinedRestingBorder;\n }\n return `1px solid ${borderColor}`;\n }};\n background: ${({ theme, $isActive, $isOnlyBillingPeriod }) => {\n if ($isOnlyBillingPeriod) {\n return 'transparent';\n }\n if ($isActive) {\n return Color(theme.stigg.palette.primary).alpha(0.15).toString();\n }\n return 'transparent';\n }};\n text-transform: none;\n text-align: start;\n height: 36px;\n\n &.MuiButton-root {\n padding: 0 16px 0 8px;\n &:hover {\n background: none;\n }\n }\n`;\n\nexport const BillingPeriodOptions = styled(Box)`\n display: flex;\n gap: 16px;\n margin-top: 16px;\n`;\n\nexport const BillingPeriodPrice = styled.div`\n display: flex;\n align-items: baseline;\n gap: 8px;\n`;\n\nexport const DiscountChip = styled(Chip)`\n & .MuiChip-label {\n font-size: 12px;\n }\n`;\n","import { partition } from 'lodash';\nimport React from 'react';\nimport { FontWeight } from 'styled-typography';\n\nimport Box from '@mui/material/Box';\nimport Radio from '@mui/material/Radio';\nimport { BillingPeriod, Plan } from '@stigg/js-client-sdk';\n\nimport { Typography } from '../../../common/Typography';\nimport { formatBillingPeriod } from '../../formatting';\nimport { usePlanStepModel } from '../../hooks/usePlanStepModel';\nimport { BillingPeriodButton, BillingPeriodOptions, BillingPeriodPickerContainer } from './BillingPeriodPicker.style';\nimport { CheckoutLocalization } from '../../configurations/textOverrides';\n\nconst BillingPeriodOption = ({\n billingPeriod,\n isOnlyBillingPeriod,\n}: {\n billingPeriod: BillingPeriod;\n isOnlyBillingPeriod: boolean;\n}) => {\n const { billingPeriod: selectedBillingPeriod, setBillingPeriod } = usePlanStepModel();\n const isActive = selectedBillingPeriod === billingPeriod;\n\n return (\n <BillingPeriodButton\n onClick={() => setBillingPeriod(billingPeriod)}\n $isActive={isActive}\n $isOnlyBillingPeriod={isOnlyBillingPeriod}>\n <Radio\n checked={isActive}\n onChange={() => setBillingPeriod(billingPeriod)}\n value={billingPeriod}\n disabled={isOnlyBillingPeriod}\n inputProps={{ 'aria-label': formatBillingPeriod(billingPeriod) }}\n sx={{ padding: 0, marginRight: '8px' }}\n />\n\n <Box>\n <Typography variant=\"h3\" color=\"primary\">\n {formatBillingPeriod(billingPeriod)}\n </Typography>\n </Box>\n </BillingPeriodButton>\n );\n};\n\ntype BillingPeriodPickerProps = {\n plan?: Plan;\n checkoutLocalization: CheckoutLocalization;\n};\n\nexport function BillingPeriodPicker({ plan, checkoutLocalization }: BillingPeriodPickerProps) {\n const [monthlyPrices, annualPrices] = partition(\n plan?.pricePoints,\n (price) => price.billingPeriod === BillingPeriod.Monthly,\n );\n\n const hasBothBillingPeriods = !!monthlyPrices?.length && !!annualPrices?.length;\n if (!hasBothBillingPeriods) {\n return null;\n }\n\n return (\n <BillingPeriodPickerContainer>\n <Typography variant=\"h6\" color=\"primary\" fontWeight={FontWeight.Medium}>\n {checkoutLocalization.billingPeriodsTitle}\n </Typography>\n\n <BillingPeriodOptions>\n {!!monthlyPrices?.length && (\n <BillingPeriodOption\n key={BillingPeriod.Monthly}\n billingPeriod={BillingPeriod.Monthly}\n isOnlyBillingPeriod={!hasBothBillingPeriods}\n />\n )}\n {!!annualPrices?.length && (\n <BillingPeriodOption\n key={BillingPeriod.Annually}\n billingPeriod={BillingPeriod.Annually}\n isOnlyBillingPeriod={!hasBothBillingPeriods}\n />\n )}\n </BillingPeriodOptions>\n </BillingPeriodPickerContainer>\n );\n}\n","import React, { useEffect, useState } from 'react';\n\nimport styled from '@emotion/styled';\nimport Box from '@mui/material/Box';\nimport { BillableFeatureInput } from '@stigg/api-client-js/src/generated/sdk';\nimport { BillingModel, BillingPeriod, Plan, Price, PriceTierFragment } from '@stigg/js-client-sdk';\n\nimport { Typography } from '../../../common/Typography';\nimport { useChargesSort } from '../../../hooks/useChargeSort';\nimport { calculateUnitQuantityText } from '../../../paywall/utils/calculateUnitQuantityText';\nimport { currencyPriceFormatter } from '../../../utils/currencyUtils';\nimport { InputField } from '../../components';\nimport { useCheckoutModel, usePlanStepModel, useProgressBarModel } from '../../hooks';\nimport { TiersSelectContainer } from '../../../common/TiersSelectContainer';\nimport { getTierByQuantity } from '../../../utils/priceTierUtils';\nimport { getValidPriceQuantity } from '../../../utils/priceUtils';\nimport { getFeatureDisplayNameText } from '../../../utils/getFeatureName';\n\nexport type UsePlanStepModel = ReturnType<typeof usePlanStepModel>;\n\ntype CheckoutChargeListProps = {\n plan?: Plan;\n billingPeriod: BillingPeriod;\n};\n\nconst StyledPlanCharge = styled.div`\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n align-items: center;\n min-height: 60px;\n margin-top: 16px;\n`;\n\nconst getValidationText = (charge: Price, quantity?: number) => {\n const { minUnitQuantity, maxUnitQuantity } = charge;\n if (!quantity || quantity < (minUnitQuantity || 1)) {\n return `Minimum ${minUnitQuantity || 1}`;\n }\n\n if (maxUnitQuantity && quantity > maxUnitQuantity) {\n return `Maximum ${maxUnitQuantity}`;\n }\n\n return '';\n};\n\nexport function PlanCharge({\n charge,\n isValid,\n setBillableFeature,\n billableFeature,\n onValidationChange,\n}: {\n charge: Price;\n isValid: boolean;\n billableFeature?: BillableFeatureInput;\n setBillableFeature: UsePlanStepModel['setBillableFeature'];\n onValidationChange: ({ featureId, isValid }: { featureId: string; isValid: boolean }) => void;\n}) {\n const featureId = charge.feature?.featureId;\n const isBaseCharge = !featureId;\n const isPayAsYouGo = charge.pricingModel === BillingModel.UsageBased;\n const displayName = isBaseCharge\n ? 'Base charge'\n : getFeatureDisplayNameText(charge.feature?.displayName || '', charge.feature?.units, charge.feature?.unitsPlural);\n const hasQuantityRestrictions = !!(charge?.minUnitQuantity || charge?.maxUnitQuantity);\n\n const handleQuantityChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n if (isBaseCharge || !featureId) return;\n\n const { minUnitQuantity, maxUnitQuantity } = charge;\n const value = event?.target?.value ? Number(event?.target?.value) : null;\n if (\n !value ||\n value <= 0 ||\n (minUnitQuantity && value < minUnitQuantity) ||\n (maxUnitQuantity && value > maxUnitQuantity)\n ) {\n onValidationChange({ featureId, isValid: false });\n // Reset the input value to null\n // @ts-ignore\n setBillableFeature(featureId, value ?? null);\n return;\n }\n\n onValidationChange({ featureId, isValid: true });\n const quantity = getValidPriceQuantity(charge, value);\n setBillableFeature(featureId, quantity);\n };\n\n let chargeRow;\n\n if (isBaseCharge || isPayAsYouGo) {\n const formattedAmount = currencyPriceFormatter({\n amount: charge.amount!,\n currency: charge.currency,\n locale: 'en-us',\n minimumFractionDigits: 2,\n });\n\n chargeRow = `${formattedAmount}`;\n if (isPayAsYouGo) {\n chargeRow += ' / unit';\n }\n } else if (charge.isTieredPrice && charge.tiersMode && featureId) {\n const tier = getTierByQuantity(charge.tiers!, billableFeature!.quantity || 1);\n chargeRow = (\n <TiersSelectContainer\n componentId={`${featureId}-tiers`}\n tiers={charge.tiers}\n selectedTier={tier}\n handleTierChange={(tier: PriceTierFragment) => {\n if (tier.upTo) {\n setBillableFeature(featureId, tier.upTo);\n }\n }}\n tiersMode={charge.tiersMode}\n perUnitQuantity={billableFeature?.quantity}\n handlePerUnitQuantityChange={(quantity: number) => {\n setBillableFeature(featureId, quantity);\n }}\n width={120}\n />\n );\n } else {\n chargeRow = (\n <InputField\n sx={{ width: 120 }}\n id={`${featureId}-input`}\n type=\"number\"\n error={!isValid}\n helperText={!isValid ? getValidationText(charge, billableFeature?.quantity) : undefined}\n FormHelperTextProps={{ sx: { margin: '4px' } }}\n value={billableFeature?.quantity ?? ''}\n onChange={handleQuantityChange}\n onWheel={(e: React.WheelEvent<HTMLInputElement>) => (e.target as HTMLElement).blur()}\n />\n );\n }\n\n return (\n <StyledPlanCharge>\n <Box display=\"flex\" flexDirection=\"column\">\n <Typography variant=\"h6\" color=\"primary\" lineHeight=\"24px\">\n {displayName}\n </Typography>\n {hasQuantityRestrictions && (\n <Typography variant=\"body1\" color=\"secondary\" lineHeight=\"20px\">\n {calculateUnitQuantityText(charge.minUnitQuantity, charge.maxUnitQuantity, charge.feature?.unitsPlural)}\n </Typography>\n )}\n </Box>\n\n <Typography variant=\"h6\" color=\"primary\">\n {chargeRow}\n </Typography>\n </StyledPlanCharge>\n );\n}\n\nexport function CheckoutChargeList({ plan, billingPeriod }: CheckoutChargeListProps) {\n const { billableFeatures, setBillableFeature } = usePlanStepModel();\n const { setIsDisabled } = useProgressBarModel();\n const { setIsValid } = useCheckoutModel();\n const planCharges = useChargesSort(plan?.pricePoints?.filter((p) => p.billingPeriod === billingPeriod) || []);\n const [chargesValidation, setChargesValidation] = useState(\n planCharges?.reduce<Record<string, boolean>>((acc, curr) => {\n acc[curr.feature?.featureId || 'base-charge'] = true;\n return acc;\n }, {}),\n );\n\n useEffect(() => {\n const isDisabled = Object.values(chargesValidation).some((x) => !x);\n setIsDisabled(isDisabled);\n setIsValid(!isDisabled);\n }, [chargesValidation, setIsDisabled, setIsValid]);\n\n return (\n <div>\n {planCharges?.map((charge) => {\n const billableFeature = billableFeatures.find((x) => x.featureId === charge.feature?.featureId);\n return (\n <PlanCharge\n key={charge.feature?.featureId || 'base-charge'}\n charge={charge}\n setBillableFeature={setBillableFeature}\n billableFeature={billableFeature}\n isValid={chargesValidation[charge.feature?.featureId || 'base-charge']}\n onValidationChange={({ featureId, isValid }: { featureId: string; isValid: boolean }) =>\n setChargesValidation((prev) => ({ ...prev, [featureId]: isValid }))\n }\n />\n );\n })}\n </div>\n );\n}\n","import styled from '@emotion/styled/macro';\nimport Box from '@mui/material/Box';\n\nexport const CheckoutPlanContainer = styled(Box)`\n width: 100%;\n`;\n","import React from 'react';\nimport { CheckoutContainerProps } from '../../CheckoutContainer';\n\nimport { useCheckoutModel } from '../../hooks/useCheckoutModel';\nimport { usePlanStepModel } from '../../hooks/usePlanStepModel';\nimport { PlanHeader } from '../../planHeader';\nimport { BillingPeriodPicker } from './BillingPeriodPicker';\nimport { CheckoutChargeList } from './CheckoutChargeList';\nimport { CheckoutPlanContainer } from './CheckoutPlanStep.style';\n\nexport const CheckoutPlanStep = ({ onChangePlan }: Pick<CheckoutContainerProps, 'onChangePlan'>) => {\n const { checkoutState, checkoutLocalization } = useCheckoutModel();\n const { plan } = checkoutState || {};\n const { billingPeriod } = usePlanStepModel();\n\n return (\n <>\n <PlanHeader allowChangePlan onChangePlan={onChangePlan} />\n <CheckoutPlanContainer>\n <BillingPeriodPicker plan={plan} checkoutLocalization={checkoutLocalization} />\n <CheckoutChargeList plan={plan} billingPeriod={billingPeriod} />\n </CheckoutPlanContainer>\n </>\n );\n};\n","<svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<g id=\"arrow-right\">\n<path id=\"Shape\" d=\"M2.66699 8H13.3337\" stroke=\"#7586B0\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n<path id=\"Shape_2\" d=\"M9.33301 4L13.333 8L9.33301 12\" stroke=\"#7586B0\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n</g>\n</svg>\n","import styled from '@emotion/styled/macro';\n\nimport ArrowRightIcon from '../../../assets/arrow-right.svg';\n\nexport const StyledArrowRightIcon = styled(ArrowRightIcon)`\n path {\n stroke: ${({ theme }) => theme.stigg.palette.text.secondary};\n }\n`;\n","import React from 'react';\nimport styled from '@emotion/styled/macro';\nimport Box from '@mui/material/Box';\nimport Alert from '@mui/material/Alert';\nimport { CheckoutStatePlan, Subscription } from '@stigg/js-client-sdk';\nimport { StyledArrowRightIcon } from './StyledArrow';\nimport { Typography } from '../../common/Typography';\nimport { CheckoutLocalization } from '../configurations/textOverrides';\nimport { CheckoutContainerProps } from '../CheckoutContainer';\nimport { ChangePlanButton } from './ChangePlanButton';\n\nconst DowngradeToFreePlansContainer = styled(Box)`\n display: flex;\n`;\n\nconst DowngradeToFreeAlert = styled(Alert)`\n margin-bottom: 16px;\n`;\n\nexport const DowngradeToFreePlanBox = styled(Box)`\n padding: 16px;\n border-radius: 10px;\n width: 100%;\n border: ${({ theme }) => `1px solid ${theme.stigg.palette.outlinedBorder}`};\n`;\n\nexport const DowngradeToFreeContent = ({\n headerText,\n planName,\n priceText,\n}: {\n headerText: string;\n planName: string;\n priceText: string;\n}) => {\n return (\n <DowngradeToFreePlanBox className=\"stigg-checkout-downgrade-to-free-container\">\n <Typography\n className=\"stigg-checkout-downgrade-to-free-text-header\"\n style={{ opacity: 0.8 }}\n variant=\"caption\"\n color=\"disabled\">\n {headerText}\n </Typography>\n <Typography className=\"stigg-checkout-downgrade-to-free-plan-name\" bold variant=\"h3\" color=\"primary\">\n {planName}\n </Typography>\n <Typography className=\"stigg-checkout-downgrade-to-free-price-text\" color=\"secondary\">\n {priceText}\n </Typography>\n </DowngradeToFreePlanBox>\n );\n};\n\ntype DowngradeToFreePlanProps = {\n checkoutLocalization: CheckoutLocalization;\n activeSubscription: Subscription;\n freePlan: CheckoutStatePlan;\n allowChangePlan?: boolean;\n} & Pick<CheckoutContainerProps, 'onChangePlan'>;\n\nexport const DowngradeToFreePlan = ({\n checkoutLocalization,\n activeSubscription,\n freePlan,\n allowChangePlan = false,\n onChangePlan,\n}: DowngradeToFreePlanProps) => {\n let alertAction;\n if (allowChangePlan && onChangePlan) {\n alertAction = (\n <ChangePlanButton\n onClick={() => {\n onChangePlan({ currentPlan: freePlan });\n }}\n checkoutLocalization={checkoutLocalization}\n size=\"small\"\n />\n );\n }\n\n const paidBillingPeriod =\n activeSubscription.prices.length > 0 ? activeSubscription.prices[0].billingPeriod : undefined;\n\n return (\n <>\n <DowngradeToFreeAlert action={alertAction} className=\"stigg-checkout-downgrade-to-free-alert\" severity=\"info\">\n <Typography span color=\"secondary\">\n {checkoutLocalization.downgradeToFree.alertText({ plan: activeSubscription.plan })}\n </Typography>\n </DowngradeToFreeAlert>\n\n <DowngradeToFreePlansContainer className=\"stigg-checkout-downgrade-to-free-plans-container\">\n <DowngradeToFreeContent\n headerText={checkoutLocalization.downgradeToFree.paidPlanHeader({ plan: activeSubscription.plan })}\n planName={checkoutLocalization.downgradeToFree.paidPlanName({ plan: activeSubscription.plan })}\n priceText={checkoutLocalization.downgradeToFree.paidPlanPriceText({\n plan: activeSubscription.plan,\n billingPeriod: paidBillingPeriod,\n })}\n />\n\n <StyledArrowRightIcon\n className=\"stigg-checkout-downgrade-to-free-arrow\"\n style={{ margin: 'auto 16px', minWidth: '16px' }}\n />\n\n <DowngradeToFreeContent\n headerText={checkoutLocalization.downgradeToFree.freePlanHeader({ plan: freePlan })}\n planName={checkoutLocalization.downgradeToFree.freePlanName({ plan: freePlan })}\n priceText={checkoutLocalization.downgradeToFree.freePlanPriceText({ plan: freePlan })}\n />\n </DowngradeToFreePlansContainer>\n </>\n );\n};\n","import React, { useMemo } from 'react';\nimport { Elements } from '@stripe/react-stripe-js';\nimport {\n PricingType,\n BillingAddress,\n ApplySubscription,\n CheckoutStatePlan,\n ApplySubscriptionResults,\n} from '@stigg/js-client-sdk';\nimport { CheckoutContent, CheckoutLayout, CheckoutPanel } from './CheckoutContainer.style';\nimport { CheckoutProgressBar } from './progressBar/CheckoutProgressBar';\nimport { CheckoutSummary, CheckoutSummarySkeleton } from './summary';\nimport { CheckoutStep, CheckoutStepKey, useCheckoutModel, useProgressBarModel } from './hooks';\nimport { CheckoutAddonsStep } from './steps/addons';\nimport { PaymentStep } from './steps/payment';\nimport { useStripeIntegration } from './steps/payment/stripe';\nimport { CheckoutPlanStep } from './steps/plan';\nimport { useCheckoutContext } from './CheckoutProvider';\nimport { ContentLoadingSkeleton } from './components';\nimport { DowngradeToFreePlan } from './components/DowngradeToFreeContainer';\nimport { MockCheckoutPreviewCallback } from './types';\n\ntype StepProps = {\n content: React.ReactNode;\n};\n\ntype StripeClientSecret = { clientSecret: string };\ntype StripeManualMode = { mode: 'setup' | 'payment' | 'subscription'; currency: string };\n\nconst getStepProps = (\n currentStep: CheckoutStep,\n {\n onBillingAddressChange,\n onChangePlan,\n collectPhoneNumber,\n }: Pick<CheckoutContainerProps, 'onBillingAddressChange' | 'onChangePlan' | 'collectPhoneNumber'>,\n): StepProps => {\n switch (currentStep.key) {\n case CheckoutStepKey.PLAN:\n return { content: <CheckoutPlanStep onChangePlan={onChangePlan} /> };\n case CheckoutStepKey.ADDONS:\n return { content: <CheckoutAddonsStep /> };\n case CheckoutStepKey.PAYMENT:\n return {\n content: (\n <PaymentStep onBillingAddressChange={onBillingAddressChange} collectPhoneNumber={collectPhoneNumber} />\n ),\n };\n default:\n return { content: null };\n }\n};\n\nexport type CheckoutResult = { success: boolean; errorMessage?: string; results?: ApplySubscriptionResults };\n\nexport type OnCheckoutParams = {\n customerId: string;\n checkoutParams: ApplySubscription;\n checkoutAction: (params: ApplySubscription) => Promise<CheckoutResult>;\n};\n\nexport type OnCheckoutCompletedParams = { success: boolean; error?: string };\n\nexport type CheckoutContainerProps = {\n onCheckout?: (params: OnCheckoutParams) => Promise<CheckoutResult>;\n onCheckoutCompleted: (params: OnCheckoutCompletedParams) => Promise<void>;\n onChangePlan?: (params: { currentPlan: CheckoutStatePlan | undefined }) => void;\n onBillingAddressChange?: (params: { billingAddress: BillingAddress }) => Promise<void>;\n disablePromotionCode?: boolean;\n disableSuccessAnimation?: boolean;\n collectPhoneNumber?: boolean;\n onMockCheckoutPreview?: MockCheckoutPreviewCallback;\n};\n\nexport function CheckoutContainer({\n onCheckout,\n onCheckoutCompleted,\n onChangePlan,\n onBillingAddressChange,\n collectPhoneNumber,\n disablePromotionCode,\n disableSuccessAnimation,\n onMockCheckoutPreview,\n}: CheckoutContainerProps) {\n const { stripePromise, setupIntentClientSecret } = useStripeIntegration();\n const [{ stiggTheme, widgetState, theme }] = useCheckoutContext();\n const { currentStep } = useProgressBarModel();\n\n const { isLoadingCheckoutData } = widgetState;\n\n const { checkoutState, checkoutLocalization } = useCheckoutModel();\n const { plan, activeSubscription } = checkoutState || {};\n const isFreeDowngrade =\n !!plan &&\n plan.pricingType === PricingType.Free &&\n !!activeSubscription &&\n activeSubscription.pricingType !== PricingType.Free;\n\n const { content } = getStepProps(currentStep, { onBillingAddressChange, onChangePlan, collectPhoneNumber });\n\n const checkoutContent = (\n <>\n {isFreeDowngrade ? (\n <DowngradeToFreePlan\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion\n freePlan={plan!}\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion\n activeSubscription={activeSubscription!}\n allowChangePlan\n checkoutLocalization={checkoutLocalization}\n onChangePlan={onChangePlan}\n />\n ) : (\n <>{content}</>\n )}\n </>\n );\n\n const stripeElementsMode: StripeClientSecret | StripeManualMode = useMemo(\n () => (setupIntentClientSecret ? { clientSecret: setupIntentClientSecret } : { mode: 'setup', currency: 'usd' }),\n [setupIntentClientSecret],\n );\n\n return (\n <Elements\n key={setupIntentClientSecret}\n stripe={stripePromise}\n options={{\n ...stripeElementsMode,\n appearance: {\n theme: 'stripe',\n variables: {\n colorText: stiggTheme.palette.text.primary,\n colorPrimaryText: stiggTheme.palette.text.primary,\n colorTextPlaceholder: stiggTheme.palette.text.disabled,\n fontFamily: stiggTheme.typography.fontFamily,\n colorBackground: theme?.paymentInputBackgroundColor,\n borderRadius: theme?.paymentInputBorderRadius,\n },\n rules: theme?.paymentInputBorderColor\n ? {\n '.Input': {\n borderColor: theme?.paymentInputBorderColor,\n },\n }\n : undefined,\n },\n }}>\n <CheckoutLayout className=\"stigg-checkout-layout\">\n {!isFreeDowngrade && <CheckoutProgressBar />}\n <CheckoutContent>\n <CheckoutPanel>{isLoadingCheckoutData ? <ContentLoadingSkeleton /> : checkoutContent}</CheckoutPanel>\n {isLoadingCheckoutData ? (\n <CheckoutSummarySkeleton />\n ) : (\n <CheckoutSummary\n disablePromotionCode={disablePromotionCode}\n disableSuccessAnimation={disableSuccessAnimation}\n onCheckout={onCheckout}\n onCheckoutCompleted={onCheckoutCompleted}\n isFreeDowngrade={isFreeDowngrade}\n onMockCheckoutPreview={onMockCheckoutPreview}\n />\n )}\n </CheckoutContent>\n </CheckoutLayout>\n </Elements>\n );\n}\n","import React from 'react';\nimport { CheckoutProvider, CheckoutProviderProps } from './CheckoutProvider';\nimport { CheckoutContainer, CheckoutContainerProps } from './CheckoutContainer';\nimport { CheckoutMockProps } from './types';\n\nexport type CheckoutProps = CheckoutProviderProps & CheckoutContainerProps & CheckoutMockProps;\n\nexport const Checkout = ({\n textOverrides,\n theme,\n resourceId,\n planId,\n preferredBillingPeriod,\n billingCountryCode,\n billableFeatures,\n billingInformation,\n onMockCheckoutState,\n ...containerProps\n}: CheckoutProps) => {\n return (\n <CheckoutProvider\n textOverrides={textOverrides}\n theme={theme}\n resourceId={resourceId}\n planId={planId}\n preferredBillingPeriod={preferredBillingPeriod}\n billingCountryCode={billingCountryCode}\n billableFeatures={billableFeatures}\n billingInformation={billingInformation}\n onMockCheckoutState={onMockCheckoutState}>\n <CheckoutContainer {...containerProps} />\n </CheckoutProvider>\n );\n};\n","import { Subscription } from '@stigg/js-client-sdk';\nimport { useEffect, useMemo, useState } from 'react';\nimport { useStiggContext } from '../StiggProvider';\n\nfunction useQueryParams(paramName?: string) {\n return useMemo(() => {\n const urlSearchParams = new URLSearchParams(window.location.search);\n return paramName ? urlSearchParams.get(paramName) : urlSearchParams;\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [paramName, window.location.search]);\n}\n\nexport enum ProvisionStatus {\n IN_PROGRESS = 'IN_PROGRESS',\n SUCCEEDED = 'SUCCEEDED',\n FAILED = 'FAILED',\n}\n\nexport const useWaitForCheckoutCompleted = ({\n onProvisionStart,\n onProvisionSucceeded,\n onProvisionFailed,\n}: {\n onProvisionStart?: () => void;\n onProvisionSucceeded?: (subscription?: Subscription | null) => void;\n onProvisionFailed?: (err?: any) => void;\n} = {}) => {\n const { stigg } = useStiggContext();\n const [provisionStatus, setProvisionStatus] = useState(ProvisionStatus.IN_PROGRESS);\n const [isAwaitingCheckout, setIsAwaitingCheckout] = useState(false);\n const checkoutCompleted = useQueryParams('checkoutCompleted') as string;\n\n useEffect(() => {\n const waitForCheckoutToComplete = async () => {\n if (!checkoutCompleted || checkoutCompleted.toLowerCase() === 'false' || isAwaitingCheckout) {\n return;\n }\n\n setIsAwaitingCheckout(true);\n if (onProvisionStart) {\n onProvisionStart();\n }\n try {\n const subscription = await stigg.waitForCheckoutCompleted();\n setProvisionStatus(ProvisionStatus.SUCCEEDED);\n if (onProvisionSucceeded) {\n onProvisionSucceeded(subscription);\n }\n } catch (err) {\n console.error('Failed to wait for checkout to complete', err);\n setProvisionStatus(ProvisionStatus.FAILED);\n if (onProvisionFailed) {\n onProvisionFailed(err);\n }\n } finally {\n setIsAwaitingCheckout(false);\n }\n };\n\n void waitForCheckoutToComplete();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [stigg, checkoutCompleted]);\n\n return { isAwaitingCheckout, provisionStatus };\n};\n"],"names":["_extends","React.createElement","calculateUnitQuantityText","minUnitQuantity","maxUnitQuantity","unitsPlural","unitsText","getColor","theme","$color","stigg","palette","primary","primaryLight","warning","error","text","StyledText","Text","$span","getLevel","variant","mapFontWeight","fontWeight","StyledFontWeight","Bold","Normal","getFontWeight","typography","h1","h2","h3","body","caption","Typography","forwardRef","props","ref","children","span","style","color","overrideColor","bold","as","rest","useTheme","level","levelClassName","className","React","EntitlementName","EntitlementRowContainer","EntitlementIconContainer","fontSize","EntitlementCheckIcon","CheckUrl","disabled","formatUsageNumber","usageLimit","toLocaleString","maximumFractionDigits","getResetPeriodText","resetPeriod","EntitlementResetPeriod","Day","Hour","Week","Month","getEntitlementDisplay","hasUnlimitedUsage","feature","isCustom","unitBasedEntitlement","resetPeriodSuffix","featureUnits","units","displayName","EntitlementRow","displayNameOverride","restProps","PlanEntitlementsContainer","getTitle","plan","paywallLocale","entitlementsTitle","title","basePlan","PlanEntitlements","billingPeriod","prices","pricePoints","filter","price","unitBasedEntitlements","map","shouldRenderUnitBasedEntitlement","key","entitlements","entitlement","hiddenFromWidgets","includes","WidgetType","Paywall","id","SubscribeIntentionType","flexLayoutMapper","horizontalAlignment","left","center","right","getResolvedTheme","customizedTheme","primaryColor","Color","textColor","successColor","errorColor","baseTheme","hex","primaryDark","darken","alpha","toString","backgroundPaper","backgroundHighlight","backgroundSection","backgroundButton","outlinedBorder","outlinedRestingBorder","outlinedHoverBackground","lightness","switchBorder","lighten","switchFill","switchHandle","errorDark","success","successDark","white","secondary","layout","planMinWidth","planMaxWidth","planMargin","planPadding","ctaAlignment","headerAlignment","descriptionAlignment","descriptionMinHeight","switchBottomSpacing","shadows","light","popover","border","radius","fontFamily","customCss","merge","formatDate","date","moment","utc","format","getSubscriptionScheduleUpdateTexts","scheduledUpdate","subscriptionPrices","billingPeriodRange","options","withDate","postfix","subscriptionScheduleType","SubscriptionScheduleType","Downgrade","shouldShowDate","isNil","end","scheduledExecutionTime","isSame","line1","targetPackage","line2","BillingPeriod","variables","scheduleVariables","toLocaleLowerCase","UnitAmount","compact","find","featureId","featureUnitsPlural","newUnitAmount","getPriceFeatureUnit","unitQuantity","getTierByQuantity","tiers","quantity","undefined","ascendingTiers","sort","a","b","upTo","tier","length","getAmount","amount","selectedBillingPeriod","shouldShowMonthlyPriceAmount","Annually","calculateTierPriceVolume","currentTier","perUnitQuantity","unitPrice","flatPrice","calculateTierPrice","tiersMode","TiersMode","Volume","getSelectedTierQuantityBeFeature","currentSubscription","result","planTierPrices","isTieredPrice","tieredPrice","subscriptionPrice","pricingModel","BillingModel","PerUnit","hasTierWithUnitPrice","some","getSelectedTier","selectedTierByFeature","selectDefaultTierIndex","selectedDefaultTierIndex","PriceTierComparison","compareSelectedTierToCurrentTier","perUnitQuantityByFeature","Equal","currentTierPrice","selectedTier","selectedQuantity","effectiveQuantity","Lower","Higher","LoadingIndicator","ClipLoader","OfferingButton","$disabled","css","ButtonText","ScheduledUpdateText","CancelScheduledUpdateButton","TrialDaysLeft","ButtonLayout","PlanOfferingButton","isNextPlan","customer","isCustomerOnTrial","onPlanSelected","withTrialLeftRow","useState","isLoading","setIsLoading","planCTAButton","currentPlan","custom","downgrade","startTrial","upgrade","startNew","switchToBillingPeriod","cancelScheduledUpdate","resolvedDowngrade","isFunction","resolvedUpgrade","buttonProps","isLowerThanCurrentPlan","intentionType","DOWNGRADE_PLAN","UPGRADE_TRIAL_TO_PAID","UPGRADE_PLAN","isCustomPrice","pricingType","PricingType","Custom","scheduledUpdateText","isTriable","isCurrentCustomerPlan","START_TRIAL","isSameBillingPeriod","currentCustomerPlanBillingPeriod","Free","planComparison","CHANGE_UNIT_QUANTITY","CHANGE_BILLING_PERIOD","REQUEST_CUSTOM_PLAN_ACCESS","CANCEL_SCHEDULED_UPDATES","isDisabled","onClick","Promise","resolve","loading","size","height","trialDaysLeft","_path","currencyPriceFormatter","currency","Currency","Usd","locale","minimumFractionDigits","currencyString","currencySymbol","getSymbolFromCurrency","formattedPrice","Intl","NumberFormat","currencyDisplay","replace","getPaidPriceText","planPrices","paywallCalculatedPrice","priceAmount","isSinglePrice","priceNumber","tierUnits","pricePeriod","Monthly","unit","featureUnit","UsageBased","getPlanPrice","free","paywallCurrency","Paid","pricePoint","paywallCalculatedPricePoints","priceNotSet","paidParams","paid","StyledButton","MuiButton","shouldForwardProp","prop","startsWith","$success","$error","Button","InputField","styled","TextField","borderRadius","fieldset","borderColor","padding","SkeletonsContainer","Grid","$flexDirection","$gap","FlexedSkeletonContainer","FlexedSkeleton","flex","Skeleton","ReactSkeleton","ContentContainer","ContentLoadingSkeleton","container","item","width","Divider","sx","marginY","marginTop","VolumePerUnitInput","handlePerUnitQuantityChange","handleChange","type","fullWidth","minHeight","InputProps","endAdornment","InputAdornment","position","value","onChange","event","target","Number","TierSelect","Select","TierInput","OutlinedInput","VolumeBulkSelect","componentId","input","MenuProps","MenuListProps","disablePadding","PaperProps","MenuItem","lineHeight","TiersSelectLayout","TiersSelectContainer","handleTierChange","EMPTY_CHAR","PlanPriceContainer","UnitSpan","PriceSpan","PriceBillingPeriod","hasMonthlyPrice","hasAnnuallyPrice","hasPrice","content","toLowerCase","PlanPrice","showStartingAt","withUnitPriceRow","withStartingAtRow","withTiersRow","setSelectedTierByFeature","setPerUnitQuantityByFeature","planPrice","prevState","startingAtCaption","PlanOfferingButtonHeight","PlanOfferingContainer","$isCurrentPlan","$isHighlighted","PlanHeader","PlanDescription","HighlightBadge","HighlightText","HeaderWrapper","NextPlanTagContainer","StyledMiniSchedule","MiniSchedule","UpcomingChangeTag","iconsColor","display","alignItems","gap","PlanOffering","isHighlighted","shouldShowDescriptionSection","isCustomerInCustomPlan","additionalChargesMayApply","showCTAButton","planBadge","highlightChip","useEffect","onPlanButtonClick","tierBillableFeatures","Object","keys","perUnitBillableFeatures","classNames","description","PickerContainer","PeriodText","StyledSwitch","Switch","DiscountRate","discount","BillingPeriodPicker","discountRate","onBillingPeriodChanged","availableBillingPeriods","isMonthlyBillingPeriod","uncheckedIcon","checkedIcon","isAnnuallySelected","checked","handleDiameter","calculateDiscountRate","monthlyPrice","annuallyPrice","annuallyPerMonthPrice","Math","round","getPlanBillingPeriodAmount","calculatePaywallDiscountRate","plans","reduce","maxDiscount","monthlyAmount","annuallyAmount","max","STIGG_WATERMARK_CLASSNAME","PoweredByStiggThemedSvg","PoweredByStiggSvg","StyledPoweredByStigg","$alignSelf","PoweredByStigg","source","showWatermark","align","onWatermarkClick","sourceDomain","window","location","hostname","open","cursor","hasPricePoints","hasPricePointsForPlans","getPlansToDisplay","shouldHidePlan","PaywallPlansContainer","PaywallContainer","PaywallLayout","highlightedPlanId","useStiggContext","plansToShow","handleOnSubscribe","useCallback","billableFeatures","subscription","useMemo","values","isWidgetWatermarkEnabled","LoggerService","message","params","console","log","object","debug","StiggContext","createContext","DEFAULT_LOCALE","StiggProvider","apiKey","baseUri","baseEdgeUri","enableEdge","customerId","customerToken","resourceId","useEntitlementPolling","entitlementPollingInterval","entitlementsFallback","stiggClient","currentApiKey","useRef","initializeParams","Stigg","initialize","lazyLoad","isInitialized","refreshData","setContext","ctx","customerPortalUpdatedAt","Date","refresh","isMounted","safeSetContext","setContextFunc","onEntitlementsUpdated","updatedAt","setStiggInstance","removeListener","addListener","loadStiggClient","current","logger","waitForInitialization","clearCustomer","setCustomerId","Provider","SkeletonTheme","baseColor","highlightColor","useContext","Error","computeBillingPeriods","activeSubscriptions","preferredBillingPeriod","billingPeriods","flatMap","x","counts","countBy","uniq","defaultBillingPeriod","activeSubscription","status","SubscriptionStatus","Active","calculateTrialDaysLeft","trialEndDate","diff","defaultCheckoutTypography","FontWeight","addCssUnits","defaultValue","JSFontWeight","mapTypography","defaultTypography","fontFamilyUrl","mapAlignment","alignment","Alignment","Left","Center","Right","mapCustomerPortalConfiguration","configuration","paywallBackgroundColor","currentPlanBackground","mapPaywallConfiguration","paywallConfiguration","backgroundColor","planWidth","mapCheckoutConfiguration","summaryBackgroundColor","getCustomerSubscriptionDetails","s","InTrial","mapPaywallData","paywall","showOnlyEligiblePlans","scheduledUpdates","downgradeSchedule","billingChangedSchedule","paywallPlans","sortBy","order","eligibleForProductTrial","eligibleForTrial","productTrial","productId","product","currentBillingPeriod","downgradeVariables","billingChangedVariables","isPlanHasBillingPeriodPrice","refId","planId","defaultTrialConfig","eligible","isUpcomingPlan","currentPlanOrder","useLoadPaywallData","billingCountryCode","setSelectedBillingPeriod","setAvailableBillingPeriods","setPaywall","loadPaywall","getPaywall","paywallResult","isCustomerLoaded","paywallData","getResolvedPaywallLocalize","localizeOverride","paywallDefaultLocalization","duration","symbol","SkeletonContainer","PlanOfferingSkeleton","PlansContainer","EntitlementContainer","FooterSkeletonLoader","BillingPeriodLoader","PlanOfferingLoader","circle","marginBottom","PaywallLoader","Fonts","externalFontUrl","Global","styles","CustomCssGlobal","useStiggTheme","remoteThemeOverride","externalTheme","mergedTheme","resolvedTheme","createTypographyTheme","htmlFontSize","coef","pxToRem","bodyFontFamily","headingFontFamily","fontSizes","createMuiPalette","main","SdkThemeProvider","componentTheme","muiPalette","materialTheme","createTheme","MuiThemeProvider","THEME_ID","ThemeProvider","StyledThemeProvider","useCustomerPortal","customerPortal","setCustomerPortal","loadCustomerPortal","getCustomerPortal","customerPortalData","getResolvedCustomerPortalLocalize","customerPortalDefaultLocalization","manageSubscription","usageTabTitle","addonsTabTitle","promotionsTabTitle","promotionsSubtitle","contactSupportTitle","contactSupportLink","editBilling","invoicesTitle","viewInvoiceHistory","editPaymentDetails","paywallSectionTitle","cancelScheduledUpdatesButtonTitle","getResolvedCustomerPortalTheme","globalTheme","themeOverride","remoteConfiguration","customerPortalDefaultTheme","sectionTitleColor","planNameColor","listItemBackgroundColor","tabMaxHeight","iconsBackgroundColor","CustomerPortalContext","useCustomerPortalContext","useCheckContextExists","contextType","CustomerPortalProvider","textOverrides","customerPortalTheme","resolvedTextOverrides","onBillingPeriodChange","hasCustomerPortalContext","isCustomerPortalLoading","customerPortalResourceId","handlePeriodChange","component","SectionHeader","$disableMargin","SectionTitle","CustomerPortalIntentionType","StyledEditIcon","EditIcon","SubscriptionsOverviewHeader","onManageSubscription","hideManageButton","MANAGE_SUBSCRIPTION","marginLeft","AddonsList","addons","subscriptions","isEmpty","addon","index","addonId","Row","$borderColor","getPromotionTitle","promotionalEntitlement","Promotions","promotionalEntitlements","flexDirection","endDate","StyledTabs","Tabs","TabsLayout","TabContent","Box","$maxHeight","getIconColor","_rect","_path2","_g","_defs","_path3","_circle","IconWrapper","$pathColor","$rectColor","$strokeColor","Icon","icon","svgPathColor","svgRectColor","svgStrokeColor","IconComponent","customIcons","TabPanel","maxHeight","other","role","hidden","TabTitle","isSelected","label","Medium","SubscriptionTabs","hiddenSections","allAddons","isSectionHidden","sectionName","section","showAddons","showPromotions","setValue","_","newValue","shouldShowTabs","borderBottom","Tab","textTransform","SkeletonLayout","SkeletonLayoutLeft","SubscriptionOverviewLoader","SubscriptionScheduledUpdateDowngradeRow","scheduleUpdate","ArrowDown","SubscriptionScheduledUpdateBillingPeriodChangeRow","nextBillingPeriod","SubscriptionScheduledUpdateUnitQuantityChangeRow","newQuantityUnits","flexWrap","SubscriptionScheduledUpdateRow","SubscriptionScheduleUpdateAlertContainer","StyledRestoreIcon","Restore","MultipleScheduledUpdates","justifyContent","SingleScheduledUpdate","SubscriptionScheduledUpdatesAlert","onCancelScheduledUpdates","stiggTheme","isSingleScheduledUpdate","marginRight","SectionContainer","$backgroundColor","NextEstimatedBill","rangeEnd","NoUpcomingBilling","ContactCustomerSupportLayout","ContactSupportButton","ContactCustomerSupport","onContactSupport","linkLabel","contactSupportText","Container","UpcomingBilling","noUsageBasedPrices","every","billingModel","scheduledDowngradeToFree","planName","total","totalPrice","InformationTooltip","placement","Tooltip","arrow","classes","popper","tooltip","$padding","$maxWidth","tooltipClasses","maxWidth","boxShadow","$display","$maxLines","$wordBreak","$bold","checkTextClamped","element","clientHeight","scrollHeight","offsetWidth","scrollWidth","LongText","leaveDelay","maxLines","wordBreak","tooltipPlacement","dataTestId","isTextClamped","setIsTextClamped","textClamped","OnTrialBadge","StyledLink","Link","TrialPanel","includePlanName","SandClockIcon","trialRemainingDays","UPGRADE_TRIAL_PLAN","SubscriptionView","mainSubscription","trialSubscription","USAGE_PERCENTAGE_WARNING_THRESHOLD","getUsagePercentage","currentUsage","limit","min","floor","getUsageProgressStatus","getResetUsageText","nextResetDate","calculateResetDiff","StyledLinearProgress","LinearProgress","string","$progressStatus","StyledDivider","FeatureUsageProgressBar","usagePercentage","linearProgressStatus","EntitlementCtaButton","onBuyMore","canBuyMore","canUpgradeSubscription","hasCustomSubscription","ChargeItem","hideChargePrice","whiteSpace","ChargeList","entitlementByFeature","keyBy","filteredSubscriptionPrices","SubscriptionsOverview","isLoadingData","CustomerPortalHeaderLayout","CustomerPortalHeader","ExternalLinkText","LinkIcon","ExternalLinkIcon","ExternalLinkButton","url","startIcon","strokeWidth","InformationGridContainer","InformationGridRow","InformationGrid","rows","classNamePrefix","labelTypographyProps","valueTypographyProps","SkeletonButton","PaymentDetailsSection","billingInformation","items","push","orientation","name","email","defaultPaymentMethodId","defaultPaymentMethodLast4Digits","defaultPaymentExpirationMonth","defaultPaymentExpirationYear","unshift","padStart","editButton","billingPortalUrl","CustomerPortalPaywallLayout","CustomerPortalPaywall","paywallComponent","CustomerPortalLayout","CustomerPortalSections","getFeatureDisplayNameText","featureDisplayName","displayNameLowerCase","lowercase","getFeatureDisplayName","FeatureUsageContainer","$highlight","FeatureUsage","hasOverageUsage","isUndefined","Footer","CustomerUsageLoader","spacing","range","xs","MAX_BOXES","CustomerUsageData","showAll","setShowAll","meteredEntitlements","meterType","MeterType","Fluctuating","Incremental","subscriptionPriceByFeature","priceEntitlements","otherEntitlements","sortedEntitlements","entitlementsToShow","slice","toggleShowAll","Minus","Plus","CustomerPortalContainer","customerPortalSectionRef","onManageClick","customerSubscriptions","scrollIntoView","behavior","shouldShowUsage","shouldShowPaymentDetails","shouldShowInvoices","InvoicesSection","CustomerPortal","viewInvoiceHistoryButton","sortAddons","sortSubscriptionAddons","filterAddonPricePointsByBillingPeriod","mapAddonPricePointsByBillingCountryCode","filterAddons","filterSubscriptionAddons","getAddonsStepInitialState","availableAddons","compatibleAddons","activeSubscriptionAddons","planAddon","initialAddons","cloneDeep","useSetAddon","useCheckoutContext","setState","draft","addonToUpdate","addonsStep","currentAddon","useRemoveAddon","remove","useAddonsState","useAddonsStepModel","state","setAddon","removeAddon","useCheckoutState","checkout","widgetState","checkoutLocalization","checkoutState","useSetWidgetReadonly","readOnly","useSetIsValid","isValid","useCheckoutModel","setWidgetReadOnly","setIsValid","useLoadCheckout","onMockCheckoutState","setCheckout","loadCheckout","getCheckoutState","getValidPriceQuantity","getBillingPeriod","hasMonthlyPrices","hasAnnualPrices","isInAdvanceCommitmentCharge","getBillableFeatures","preconfiguredBillableFeatures","preconfBillableFeaturesByFeatureId","quantityByFeatureId","charge","preconfiguredQuantity","resolveBillingPeriod","isUpdate","getPlanStepInitialState","usePlanState","planStep","useSetBillableFeature","billableFeature","useSetBillingPeriod","usePlanStepModel","setBillingPeriod","setBillableFeature","CheckoutStepKey","CHECKOUT_STEPS","PLAN","ADDONS","PAYMENT","INITIAL_STATE","activeStep","completedSteps","steps","getProgressBarInitialState","step","useProgressBarState","progressBar","useSetActiveStep","stepNumber","useMarkStepAsCompleted","isCheckoutComplete","useGoNext","useSetIsDisabled","useProgressBarModel","progressBarState","currentStep","isLastStep","setActiveStep","markStepAsCompleted","goNext","setIsDisabled","useSubscriptionModel","promotionCode","paymentStep","billingAddress","taxPercentage","mapBillingInformation","previewSubscription","onMockCheckoutPreview","estimateAddons","subscriptionPreview","errorMessage","previewSubscriptionProps","split","errorMsg","trim","usePreviewSubscriptionAction","previewSubscriptionAction","SUBSCRIPTION_PREVIEW_DEBOUNCE_TIME","usePreviewSubscription","setSubscriptionPreview","isFetchingSubscriptionPreview","setIsFetchingSubscriptionPreview","estimateSubscription","timer","setTimeout","clearTimeout","getPaymentStepInitialState","useNewPaymentMethod","paymentMethodDetails","useSetUseNewPaymentMethod","useSetErrorMessage","useSetBillingAddress","usePaymentState","usePaymentStepModel","setUseNewPaymentMethod","setErrorMessage","setBillingAddress","getResolvedCheckoutLocalize","checkoutDefaultLocalization","changePlan","billingPeriodsTitle","addAddonText","newPaymentMethodText","newPaymentMethodBillingAddressTitle","newPaymentMethodCardTitle","summary","addCouponCodeText","couponCodeTitle","addonsSectionTitle","discountsSectionTitle","onlyPayAsYouGoText","startsAtText","proratedTotalDueText","baseChargeText","totalText","totalDueText","totalBillingPeriodText","appliedCreditsTitle","creditsForUnusedTimeText","credits","discountText","discountDetails","DiscountType","Percentage","discountTextPostfix","durationType","DiscountDurationType","Once","Repeating","prefix","Fixed","durationInMonths","Forever","taxTitle","taxDetails","percentage","changesWillApplyAtEndOfBillingPeriod","billingPeriodEnd","checkoutSuccessText","payAsYouGoTooltipText","checkoutButton","nextText","noChangesText","updateText","downgradeToFreeText","upgradeText","downgradeToFree","alertText","freePlanHeader","freePlanName","freePlanPriceText","paidPlanHeader","paidPlanName","paidPlanPriceText","defaultCheckoutTheme","getResolvedCheckoutTheme","_remoteConfiguration","globalPalette","paymentInputBackgroundColor","paymentInputBorderColor","paymentInputBorderRadius","CheckoutContext","CheckoutContextProvider","initialState","innerSetState","updater","old","produce","contextValue","setContextValue","CheckoutProvider","checkoutTheme","resource","isLoadingCheckoutData","CheckoutLayout","CheckoutContent","CheckoutPanel","StyledProgress","linearProgressClasses","root","bar","StyledStepButton","buttonClasses","StyledIcon","$shouldFill","stroke","fill","CheckoutProgressBar","progress","mb","isCompleted","StepIcon","CHARGES_BILLING_MODEL_ORDER","FlatFee","sortCharges","charges","indexOf","useChargesSort","usePromotionCodeState","useSetPromotionCode","usePromotionCodeModel","setPromotionCode","StyledPlusIcon","PlusIcon","AddPromotionCodeButton","onAddClick","CouponCodeAddButton","AddPromotionCode","persistPromotionCode","showInput","setShowInput","handlePromotionCode","immediateInvoice","toUpperCase","autoFocus","e","inputProps","maxLength","onKeyDown","preventDefault","CircularProgress","AppliedCouponContainer","AppliedPromotionCode","onClearPromotionCode","minWidth","PromotionCodeSectionContainer","PromotionCodeSection","StripePaymentForm","onBillingAddressChange","collectPhoneNumber","shouldCollectPhoneNumber","handleAddressChange","args","complete","address","postalCode","postal_code","addressFields","callExternalBillingAddressChanged","pointerEvents","AddressElement","mode","fields","phone","defaultValues","PaymentElement","onReady","terms","card","billingDetails","useStripeIntegration","stripePromise","setStripePromise","billingIntegration","setupSecret","billingIdentifier","credentials","BillingVendorIdentifier","Stripe","accountId","publicKey","loadStripe","stripeAccount","setupIntentClientSecret","useSubscriptionState","FAILED_PAYMENT_COLLECTION_STATUSES","PaymentCollection","Failed","Processing","handleStripeFormValidations","elements","submit","elementsError","handleStripeNextAction","applySubscriptionResults","stripe","paymentIntentClientSecret","latestInvoice","paymentSecret","paymentCollection","ActionRequired","handleNextAction","clientSecret","NextActionError","handleStripeSetup","confirmSetup","confirmParams","return_url","href","redirect","setupError","setupErrorMessage","retrieveSetupIntent","setupIntent","payment_method","newPaymentMethodId","handleNewPaymentMethod","stripeFormValidationsResults","paymentMethodId","ANIMATION_DURATION","CheckoutSuccessContainer","CheckoutSuccessText","StyledLottie","Lottie","CheckoutSuccess","animationData","loop","autoplay","delay","ms","res","useSubmit","isMocked","onCheckout","onCheckoutCompleted","onSuccess","disableSuccessAnimation","subscriptionState","useStripe","useElements","handleSubmit","usedStiggCheckoutAction","paymentMethodResults","checkoutParams","checkoutAction","applySubscription","nextActionResults","results","externalCheckoutResults","checkoutResults","checkoutActionResults","WithSkeleton","RemainingCreditsCaption","proration","netAmount","positiveAmount","ScheduledUpdatesCaption","hasScheduledUpdates","currentBillingPeriodEnd","changesWillApplyText","NextBillingCaption","recurringInvoice","hasUnitBasedPricing","hasNonUnitBasedPricing","totalAmountText","nextBillingDate","billingPeriodText","CheckoutCaptions","LineItemContainer","LineItemRow","getPriceString","billingPeriodString","addonPriceFormat","PayAsYouGoPriceTooltip","BilledPriceLineItem","isPayAsYouGo","FreeChargeLineItem","DiscountLineItem","AppliedCreditsLineItem","used","TaxLineItem","tax","SummaryContainer","SummaryCard","Paper","defaultProps","elevation","SummaryTitle","TotalDueText","resolveCheckoutButtonText","checkoutHasChanges","isFreeDowngrade","isPlanUpdate","CheckoutSummary","disablePromotionCode","isCheckoutCompletedSuccessfully","setIsCheckoutCompletedSuccessfully","partition","baseCharges","usageCharges","baseCharge","handleCheckout","onCheckoutClick","showPromotionCodeLine","showDiscountLine","hasDiscounts","hasPayAsYouGoCharges","onlyPayAsYouGoCharges","baseChargeLabel","paddingRight","margin","priceBillableFeature","addonPrice","addonQuantity","hasProrations","subTotal","CheckoutSummarySkeleton","CheckoutAddonsContainer","AddonListItemContainer","TrashButton","AddonListItem","addonState","initialAddonState","onAddonsValidationChange","isAdded","hasChanges","handleQuantityChange","handleUndo","marginX","helperText","FormHelperTextProps","paddingX","paddingY","CheckoutAddonsStep","acc","curr","addonsValidation","setAddonsValidation","PaymentMethodContainer","NewPaymentMethodContainer","PaymentMethodLayoutContainer","PaymentMethodTextContainer","PaymentMethodLayout","subtitle","Radio","ExistingPaymentMethod","onSelect","last4Digits","expirationMonth","expirationYear","NewPaymentMethod","Collapse","PaymentContainer","PaymentStep","handleOnSelect","openNewPaymentMethod","Alert","severity","ChangePlanButton","allowChangePlan","onChangePlan","opacity","formatBillingPeriod","BillingPeriodPickerContainer","BillingPeriodButton","$isOnlyBillingPeriod","$isActive","BillingPeriodOptions","BillingPeriodOption","isOnlyBillingPeriod","isActive","monthlyPrices","annualPrices","hasBothBillingPeriods","StyledPlanCharge","div","getValidationText","PlanCharge","onValidationChange","isBaseCharge","hasQuantityRestrictions","chargeRow","formattedAmount","onWheel","blur","CheckoutChargeList","planCharges","p","chargesValidation","setChargesValidation","prev","CheckoutPlanContainer","CheckoutPlanStep","StyledArrowRightIcon","ArrowRightIcon","DowngradeToFreePlansContainer","DowngradeToFreeAlert","DowngradeToFreePlanBox","DowngradeToFreeContent","headerText","priceText","DowngradeToFreePlan","freePlan","alertAction","paidBillingPeriod","action","getStepProps","CheckoutContainer","checkoutContent","stripeElementsMode","Elements","appearance","colorText","colorPrimaryText","colorTextPlaceholder","colorBackground","rules","Checkout","containerProps","useQueryParams","paramName","urlSearchParams","URLSearchParams","search","get","ProvisionStatus","useWaitForCheckoutCompleted","onProvisionStart","onProvisionSucceeded","onProvisionFailed","IN_PROGRESS","provisionStatus","setProvisionStatus","isAwaitingCheckout","setIsAwaitingCheckout","checkoutCompleted","waitForCheckoutToComplete","waitForCheckoutCompleted","SUCCEEDED","FAILED"],"mappings":"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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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"}
|