@stigg/react-sdk 5.28.4 → 5.30.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/Paywall.d.ts +3 -2
- package/dist/components/paywall/PaywallContainer.d.ts +3 -2
- package/dist/components/paywall/PlanOffering.d.ts +3 -2
- package/dist/components/paywall/PlanOfferingButton.d.ts +3 -2
- package/dist/components/paywall/hooks/useLoadPaywallData.d.ts +3 -2
- package/dist/components/paywall/types.d.ts +8 -0
- package/dist/components/paywall/utils/mapPaywallData.d.ts +3 -2
- package/dist/components/utils/priceTierUtils.d.ts +14 -3
- package/dist/react-sdk.cjs.development.js +106 -34
- 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 +106 -34
- package/dist/react-sdk.esm.js.map +1 -1
- package/package.json +2 -2
- package/src/components/paywall/Paywall.tsx +11 -2
- package/src/components/paywall/PaywallContainer.tsx +11 -1
- package/src/components/paywall/PlanOffering.tsx +11 -2
- package/src/components/paywall/PlanOfferingButton.tsx +9 -2
- package/src/components/paywall/hooks/useLoadPaywallData.ts +4 -2
- package/src/components/paywall/types.ts +12 -0
- package/src/components/paywall/utils/mapPaywallData.ts +13 -3
- package/src/components/utils/priceTierUtils.ts +54 -13
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"react-sdk.esm.js","sources":["../src/assets/check-stigg.svg","../src/components/paywall/utils/calculateUnitQuantityText.ts","../src/components/utils/formatNumber.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/numberUtils.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/utils/onWheelBlur.ts","../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/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/StiggProvider.tsx","../src/hooks/useStiggContext.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/common/mediaQuery.ts","../src/components/hooks/useIsScreenWiderThan.ts","../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/utils/planPrices.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/getPriceBreakdownString.ts","../src/components/checkout/summary/components/GraduatedPriceBreakdown.tsx","../src/components/common/CollapsableSectionIcon.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","../src/hooks/useBooleanEntitlement.ts","../src/hooks/useNumericEntitlement.ts","../src/hooks/useMeteredEntitlement.ts","../src/hooks/useFetch.ts","../src/hooks/useActiveSubscriptions.ts","../src/hooks/usePaywall.ts","../src/hooks/useCustomerPortal.ts","../src/components/BooleanEntitlementGuard.tsx","../src/components/NumericEntitlementGuard.tsx","../src/components/MeteredEntitlementGuard.tsx"],"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","export function formatNumber(usageLimit: number | null | undefined) {\n return usageLimit?.toLocaleString('en-US', {\n maximumFractionDigits: 0,\n });\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 | 'tertiary'\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 { formatNumber } from '../utils/formatNumber';\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\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 case EntitlementResetPeriod.Year: {\n return 'per year';\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 `${formatNumber(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, hasFeatures: boolean) {\n if (paywallLocale.entitlementsTitle) {\n return paywallLocale.entitlementsTitle(plan);\n }\n let title = hasFeatures ? `${plan.displayName} includes` : '';\n if (plan.basePlan) {\n title = `Everything in ${plan.basePlan.displayName}${hasFeatures ? ', 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\n .filter((price) => (price?.minUnitQuantity && price?.minUnitQuantity > 1) || price?.maxUnitQuantity)\n .map((price) => {\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 const visibleEntitlements = plan.entitlements.filter(\n (entitlement) => !(entitlement.hiddenFromWidgets || []).includes(WidgetType.Paywall),\n );\n\n const hasFeatures = unitBasedEntitlements.length > 0 || visibleEntitlements.length > 0;\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, hasFeatures)}\n </Typography>\n {unitBasedEntitlements}\n {visibleEntitlements.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 tertiary: textColor.alpha(0.5).toString(),\n disabled: textColor.alpha(0.35).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 { sum } from 'lodash';\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): PriceTierFragment {\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\nfunction 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 calculateTierPriceGraduated(\n tiers: PriceTierFragment[],\n unitQuantity: number,\n selectedBillingPeriod?: BillingPeriod,\n shouldShowMonthlyPriceAmount?: boolean,\n): { total: number; breakdown: Array<{ unitQuantity: number; amount: number }> } {\n let remainingQuantity = unitQuantity;\n let prevUpTo = 0;\n let currentTierIndex = 0;\n\n const breakdown: Array<{ unitQuantity: number; amount: number }> = [];\n\n while (remainingQuantity > 0 && currentTierIndex < tiers.length) {\n const tier = tiers[currentTierIndex];\n const { upTo } = tier;\n\n if (isNil(upTo)) {\n breakdown.push({\n unitQuantity: remainingQuantity,\n amount: calculateTierPriceVolume(tier, remainingQuantity, selectedBillingPeriod, shouldShowMonthlyPriceAmount),\n });\n remainingQuantity = 0;\n } else {\n const unitsInTier = upTo - prevUpTo;\n const consumed = Math.min(remainingQuantity, unitsInTier);\n breakdown.push({\n unitQuantity: consumed,\n amount: calculateTierPriceVolume(tier, consumed, selectedBillingPeriod, shouldShowMonthlyPriceAmount),\n });\n remainingQuantity -= consumed;\n prevUpTo = upTo;\n }\n\n currentTierIndex += 1;\n }\n\n const total = sum(breakdown.map(({ amount }) => amount));\n\n return {\n breakdown,\n total,\n };\n}\n\nexport function calculateTierPrice(\n price: Pick<Price, 'tiers' | 'tiersMode'>,\n unitQuantity: number,\n selectedBillingPeriod?: BillingPeriod,\n shouldShowMonthlyPriceAmount?: boolean,\n): number {\n if (!price.tiers) {\n return 0;\n }\n\n switch (price.tiersMode) {\n case TiersMode.Volume: {\n const currentTier = getTierByQuantity(price.tiers, unitQuantity);\n return calculateTierPriceVolume(currentTier, unitQuantity, selectedBillingPeriod, shouldShowMonthlyPriceAmount);\n }\n case TiersMode.Graduated: {\n return calculateTierPriceGraduated(price.tiers, unitQuantity, selectedBillingPeriod, shouldShowMonthlyPriceAmount)\n .total;\n }\n default:\n return 0;\n }\n}\n\nexport function hasTierWithUnitPrice(tiers: PriceTierFragment[] | null | undefined) {\n return tiers?.some(({ unitPrice, upTo }) => unitPrice && !isNil(upTo));\n}\n\nexport function isBulkTiers(tiers: PriceTierFragment[] | null | undefined) {\n return tiers?.every(({ unitPrice, upTo }) => !unitPrice || isNil(upTo));\n}\n\nexport function isQuantityInFirstTier(tiers: PriceTierFragment[] | null | undefined, quantity: number) {\n return tiers?.[0].upTo && quantity <= tiers[0].upTo;\n}\n\nexport function getTiersPerUnitQuantities(\n plan: PaywallPlan,\n billingPeriod: BillingPeriod,\n currentSubscription: Subscription | null,\n selectDefaultTierIndex?: SelectDefaultTierIndexFn,\n): Record<string, number> {\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 const currentTier = price.tiers![selectedDefaultTierIndex];\n let quantity = hasTierWithUnitPrice(price.tiers) ? 1 : currentTier.upTo || 1;\n\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\n if (tieredPrice) {\n quantity = tieredPrice.feature!.unitQuantity || 1;\n }\n }\n\n const result: Record<string, number> = {};\n result[featureId] = quantity;\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 perUnitQuantityByFeature: Record<string, number>,\n currentSubscription: Subscription | null,\n): PriceTierComparison {\n if (!currentSubscription) {\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: oldQuantity } = currentTierPrice.feature!;\n\n if (isNil(oldQuantity)) {\n return PriceTierComparison.Equal;\n }\n\n const newQuantity = perUnitQuantityByFeature[featureId];\n\n if (newQuantity < oldQuantity) {\n return PriceTierComparison.Lower;\n }\n if (newQuantity > oldQuantity) {\n return PriceTierComparison.Higher;\n }\n return PriceTierComparison.Equal;\n}\n","import React, { useState } from 'react';\nimport { BillingPeriod, Customer, 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 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 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(perUnitQuantityByFeature, currentSubscription);\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 removeTrailingZero,\n}: {\n amount: number;\n currency?: Currency | string;\n locale?: string;\n maximumFractionDigits?: number;\n minimumFractionDigits?: number;\n removeTrailingZero?: boolean;\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 trailingZeroDisplay: removeTrailingZero ? 'stripIfInteger' : 'auto',\n ...(currencySymbol ? { currencyDisplay: 'code' } : {}),\n } as Intl.NumberFormatOptions).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","export function numberFormatter(number: number, { locale }: { locale?: string } = {}) {\n return new Intl.NumberFormat(locale).format(number);\n}\n","import { BillingModel, BillingPeriod, PaywallCalculatedPricePoint, Price } from '@stigg/js-client-sdk';\nimport { currencyPriceFormatter } from './currencyUtils';\nimport { PlanPriceText } from './getPlanPrice';\nimport { calculateTierPrice, getPriceFeatureUnit } from './priceTierUtils';\nimport { PaywallLocalization } from '../paywall';\nimport { numberFormatter } from './numberUtils';\n\ntype GetPaidPriceTextParams = {\n planPrices: Price[];\n paywallCalculatedPrice?: PaywallCalculatedPricePoint;\n selectedBillingPeriod: BillingPeriod;\n locale: string;\n shouldShowMonthlyPriceAmount: boolean;\n paywallLocale: PaywallLocalization;\n perUnitQuantityByFeature?: Record<string, number>;\n};\n\nexport function getPaidPriceText({\n planPrices,\n paywallCalculatedPrice,\n selectedBillingPeriod,\n locale,\n shouldShowMonthlyPriceAmount,\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 && price.tiers) {\n const quantity = perUnitQuantityByFeature?.[price.feature!.featureId] || 1;\n tiers = price.tiers;\n tierUnits = getPriceFeatureUnit(price);\n\n priceNumber += calculateTierPrice(price, quantity, selectedBillingPeriod, shouldShowMonthlyPriceAmount);\n }\n }\n\n if (isSinglePrice) {\n const price = planPrices[0];\n const formattedUnits =\n price.blockSize && price.blockSize > 1\n ? `for ${numberFormatter(price.blockSize)} ${price.feature?.unitsPlural || price.feature?.units || ''}`\n : `per ${price.feature?.units || ''}`;\n\n if (price.pricingModel === BillingModel.PerUnit && !price.isTieredPrice) {\n unit = `${formattedUnits} ${pricePeriod}`;\n } else if (price.pricingModel === BillingModel.UsageBased) {\n unit = `${formattedUnits}`;\n }\n }\n\n return {\n price: currencyPriceFormatter({\n amount: priceNumber,\n currency,\n locale,\n minimumFractionDigits: 2,\n removeTrailingZero: true,\n }),\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 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 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 React from 'react';\n\nexport const ON_WHEEL_BLUR = (e: React.WheelEvent<HTMLInputElement>) => (e.target as HTMLElement).blur();\n","import InputAdornment from '@mui/material/InputAdornment';\nimport React from 'react';\nimport { Typography } from './Typography';\nimport { InputField } from '../checkout/components';\nimport { TiersSelectContainerProps } from './TiersSelectContainer';\nimport { ON_WHEEL_BLUR } from '../utils/onWheelBlur';\n\nexport function VolumePerUnitInput({\n width,\n tierUnits,\n value,\n handleChange,\n}: Pick<TiersSelectContainerProps, 'width' | 'tierUnits' | 'value'> & {\n handleChange: (quantity: number) => void;\n}) {\n return (\n <InputField\n type=\"number\"\n onWheel={ON_WHEEL_BLUR}\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={value}\n onChange={(event) => {\n const quantity = event?.target?.value ? Number(event?.target?.value) : null;\n if (quantity) {\n handleChange(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';\nimport { formatNumber } from '../utils/formatNumber';\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 value,\n componentId,\n tierUnits,\n tiers,\n handleChange,\n}: Pick<TiersSelectContainerProps, 'value' | 'componentId' | 'tiers' | 'tierUnits'> & {\n handleChange: (quantity: number) => void;\n}) {\n if (!tiers) {\n return null;\n }\n\n return (\n <TierSelect\n value={value.toString()}\n fullWidth\n onChange={(event) => {\n const quantity = event?.target?.value ? Number(event?.target?.value) : null;\n if (quantity) {\n handleChange(quantity);\n }\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 {formatNumber(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 { 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 tiersMode?: TiersMode | null;\n handleChange: (quantity: number) => void;\n value: number;\n width?: number;\n};\n\nconst TiersSelectLayout = styled(Typography)`\n min-height: 46px;\n`;\n\nexport function TiersSelectContainer(props: TiersSelectContainerProps) {\n const { tiers } = props;\n\n return (\n <TiersSelectLayout as=\"div\" className=\"stigg-price-tier-select\">\n {hasTierWithUnitPrice(tiers) ? <VolumePerUnitInput {...props} /> : <VolumeBulkSelect {...props} />}\n </TiersSelectLayout>\n );\n}\n","import React from 'react';\nimport styled from '@emotion/styled/macro';\nimport { BillingPeriod } 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 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 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 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 perUnitQuantity = perUnitQuantityByFeature[featureId || ''] ?? 1;\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 tiersMode={tieredPrice?.tiersMode}\n handleChange={handlePerUnitQuantityChange}\n value={perUnitQuantity}\n />\n ) : null}\n </>\n </PlanPriceContainer>\n );\n};\n","import React, { useState } from 'react';\nimport { BillableFeature, BillingPeriod, Customer, PricingType, Subscription } 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 { getTiersPerUnitQuantities } 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 getTiersPerUnitQuantities(plan, billingPeriod, currentSubscription, selectDefaultTierIndex),\n );\n\n const onPlanButtonClick = (intentionType: SubscribeIntentionType) => {\n const perUnitBillableFeatures: BillableFeature[] = Object.keys(perUnitQuantityByFeature).map((featureId) => ({\n featureId,\n quantity: perUnitQuantityByFeature[featureId],\n }));\n\n return onPlanSelected(intentionType, 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 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 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 { calculateTierPrice } 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 calculateTierPrice(tieredPrice, 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 { getTiersPerUnitQuantities } 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 = getTiersPerUnitQuantities(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 { 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, customCss, 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 customCss: customCss || undefined,\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, customCss } = 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 customCss: customCss || undefined,\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 React, { useEffect, useState, PropsWithChildren, useRef } from 'react';\nimport * as StiggJs from '@stigg/js-client-sdk';\nimport Stigg, { ClientConfiguration, EntitlementsFallback } from '@stigg/js-client-sdk';\nimport { SkeletonTheme } from 'react-loading-skeleton';\nimport { CustomizedTheme } from '../theme/Theme';\nimport logger from '../services/logger';\nimport { name as CLIENT_NAME, version as CLIENT_VERSION } from '../../package.json';\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 offline?: boolean;\n cacheTtlMs?: number;\n /** @deprecated not longer in use */\n useEntitlementPolling?: boolean;\n /** @deprecated not longer in use */\n entitlementPollingInterval?: number;\n stiggClient?: StiggJs.StiggClient;\n clientName?: string;\n clientVersion?: string;\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 cacheTtlMs,\n useEntitlementPolling,\n entitlementPollingInterval,\n entitlementsFallback,\n stiggClient,\n children,\n offline,\n clientName = CLIENT_NAME,\n clientVersion = CLIENT_VERSION,\n}) => {\n const currentApiKey = useRef(apiKey);\n const initializeParams: ClientConfiguration = {\n apiKey,\n customerId,\n customerToken,\n resourceId,\n baseUri,\n baseEdgeUri,\n enableEdge,\n entitlementsFallback,\n cacheTtlMs,\n useEntitlementPolling,\n entitlementPollingInterval,\n clientName,\n clientVersion,\n offline,\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","import { useContext } from 'react';\nimport { StiggContext, StiggContextValue } from '../components/StiggProvider';\n\nexport function useStiggContext(options?: { optional?: false }): StiggContextValue;\nexport function useStiggContext(options: { optional: true }): StiggContextValue | null;\nexport function useStiggContext(options?: { optional?: boolean }): StiggContextValue | null {\n const { optional } = options || {};\n const ctx = useContext(StiggContext);\n if (!ctx && !optional) {\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, Paywall } from '@stigg/js-client-sdk';\nimport { useEffect, useState } from 'react';\nimport logger from '../../../services/logger';\nimport { PaywallData } from '../types';\nimport { computeBillingPeriods } from '../utils/computeDefaultBillingPeriod';\nimport { mapPaywallData } from '../utils/mapPaywallData';\nimport { useStiggContext } from '../../../hooks/useStiggContext';\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';\n\nimport { DeepPartial } from '../types';\nimport { Fonts } from './Fonts';\nimport { getResolvedTheme } from './getResolvedTheme';\nimport { StiggTheme } from './types';\nimport { useStiggContext } from '../hooks/useStiggContext';\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 '../../../hooks/useStiggContext';\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 type FilterEntitlementsFn = (entitlements: CustomerPortalEntitlement[]) => CustomerPortalEntitlement[];\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","export const breakpoints = {\n xs: 320,\n sm: 640,\n md: 768,\n lg: 1024,\n xl: 1280,\n xxl: 1536,\n} as const;\n\nexport type Breakpoints = typeof breakpoints;\n\nexport type Breakpoint = keyof Breakpoints;\n\nexport const mqMinWidth = (breakpoint: Breakpoint) => `(min-width: ${breakpoints[breakpoint]}px)`;\n\nexport const mq = Object.keys(breakpoints).reduce(\n (obj, breakpoint) => ({ ...obj, [breakpoint]: `@media ${mqMinWidth(breakpoint as Breakpoint)}` }),\n {} as Record<Breakpoint, string>,\n);\n","import { useMediaQuery as useMediaQueryMui } from '@mui/material';\nimport { Breakpoint, mqMinWidth } from '../common/mediaQuery';\n\nexport function useIsScreenWiderThan(breakpoint: Breakpoint) {\n return useMediaQueryMui(mqMinWidth(breakpoint));\n}\n","import styled from '@emotion/styled/macro';\nimport React from 'react';\nimport Skeleton from 'react-loading-skeleton';\nimport { useIsScreenWiderThan } from '../../hooks/useIsScreenWiderThan';\n\nconst SkeletonLayout = styled.div`\n display: flex;\n justify-content: space-between;\n flex-wrap: wrap;\n`;\n\nconst SkeletonLayoutLeft = styled.div`\n display: flex;\n flex-direction: column;\n gap: 32px;\n`;\n\nexport function SubscriptionOverviewLoader() {\n const isScreenWiderThanMd = useIsScreenWiderThan('md');\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={isScreenWiderThanMd ? 295 : 260} 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';\nimport { mq } from '../../common/mediaQuery';\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\n padding: 16px;\n ${mq.sm} {\n padding: 32px;\n }\n ${mq.md} {\n padding: 48px;\n }\n ${mq.lg} {\n padding: 64px;\n }\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.usagePeriodEnd) {\n return null;\n }\n\n const calculateResetDiff = (unit: 'days' | 'hours' | 'minutes') => {\n return moment.utc(entitlement.usagePeriodEnd).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 blockSize?: number | null;\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 blockSize,\n entitlement,\n feature,\n hideChargePrice,\n onBuyMore,\n onManageSubscription,\n canUpgradeSubscription,\n hasCustomSubscription,\n}: UsageBasedChargeProps) {\n return (\n <div\n className={`stigg-charge-list-item stigg-charge-list-item-${entitlement.feature!.refId}`}\n 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 {blockSize ? `${blockSize} ` : ''}\n {blockSize ? feature.featureUnitsPlural : 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, blockSize, 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 blockSize={blockSize}\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\n className=\"stigg-overview-layout\"\n style={{ display: 'flex', alignItems: 'flex-start', gap: 64, flexWrap: 'wrap' }}>\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 flex-wrap: wrap;\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';\nimport { useIsScreenWiderThan } from '../../hooks/useIsScreenWiderThan';\n\nexport const EMPTY_CHAR = '-';\n\nexport function PaymentDetailsSection() {\n const { customerPortal, isLoading, textOverrides, theme } = useCustomerPortalContext();\n const isScreenWiderThanMd = useIsScreenWiderThan('md');\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\n key=\"information-loading-data-divider\"\n orientation=\"vertical\"\n style={{ minHeight: 93, display: isScreenWiderThanMd ? 'block' : 'none' }}\n />,\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\n key=\"information-billing-data-divider\"\n orientation=\"vertical\"\n style={{ minHeight: 93, display: isScreenWiderThanMd ? 'block' : 'none' }}\n />,\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: isScreenWiderThanMd ? 64 : 32, flexWrap: 'wrap' }}>\n {items}\n </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.usagePeriodEnd ? (\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';\nimport { useIsScreenWiderThan } from '../../hooks/useIsScreenWiderThan';\n\nexport const Footer = styled.div`\n margin-top: 32px;\n`;\n\nexport function CustomerUsageLoader() {\n const isMdScreen = useIsScreenWiderThan('md');\n return (\n <Grid container spacing={4} className=\"stigg-subscription-usage-skeleton-layout\" sx={{ flexWrap: 'wrap' }}>\n {range(6).map((item) => (\n <Grid key={item} item xs={isMdScreen ? 4 : 12}>\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, { useState } 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 { FilterEntitlementsFn, OnBuyMoreCallbackFn } from '../types';\nimport { OnManageClick } from '../CustomerPortalContainer';\nimport { useIsScreenWiderThan } from '../../hooks/useIsScreenWiderThan';\n\nconst MAX_BOXES = 6;\n\nexport type CustomerUsageDataProps = {\n onManageSubscription?: OnManageClick;\n onBuyMore?: OnBuyMoreCallbackFn;\n filterEntitlements?: FilterEntitlementsFn;\n};\n\nexport function CustomerUsageData({ onManageSubscription, onBuyMore, filterEntitlements }: CustomerUsageDataProps) {\n const [showAll, setShowAll] = useState(false);\n const isMdScreen = useIsScreenWiderThan('md');\n\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 const filteredEntitlements = filterEntitlements ? filterEntitlements(sortedEntitlements) : sortedEntitlements;\n\n // 4 -> 3 per row, 6 -> 2 per row\n const xs = isMdScreen ? (filteredEntitlements.length > 2 ? 4 : 6) : 12;\n\n const entitlementsToShow = showAll ? filteredEntitlements : filteredEntitlements.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\n className={`stigg-entitlement-usage-${entitlement.feature!.refId}`}\n key={entitlement.feature!.refId}\n item\n 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 {filteredEntitlements.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 filterEntitlements,\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 && (\n <CustomerUsageData\n onManageSubscription={onManageClick}\n onBuyMore={onBuyMore}\n filterEntitlements={filterEntitlements}\n />\n )}\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 { FilterEntitlementsFn, 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 filterEntitlements?: FilterEntitlementsFn;\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 { MockCheckoutStateCallback } from '../types';\nimport { useStiggContext } from '../../../hooks/useStiggContext';\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 isWidgetWatermarkEnabled: stigg.isWidgetWatermarkEnabled,\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 { Plan } from '@stigg/js-client-sdk';\nimport { BillingPeriod } from '@stigg/api-client-js/src/generated/sdk';\n\nexport const hasMonthlyPrices = (plan?: Plan) =>\n !!plan?.pricePoints.some((pricePoint) => pricePoint.billingPeriod === BillingPeriod.Monthly);\n\nexport const hasAnnualPrices = (plan?: Plan) =>\n !!plan?.pricePoints.some((pricePoint) => pricePoint.billingPeriod === BillingPeriod.Annually);\n\nexport const hasMultipleBillingPeriods = (plan?: Plan) => hasMonthlyPrices(plan) && hasAnnualPrices(plan);\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';\nimport { hasAnnualPrices, hasMonthlyPrices } from '../../utils/planPrices';\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 hasMonthlyPlan = hasMonthlyPrices(plan);\n const hasAnnualPlan = hasAnnualPrices(plan);\n\n if (preferredBillingPeriod) {\n const billingPeriod = getBillingPeriod(preferredBillingPeriod, hasMonthlyPlan, hasAnnualPlan);\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(activeSubscription?.prices[0].billingPeriod, hasMonthlyPlan, hasAnnualPlan);\n if (billingPeriod) {\n return billingPeriod;\n }\n }\n\n return hasAnnualPlan ? 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 { BillableFeatureInput } from '@stigg/api-client-js/src/generated/sdk';\nimport { Addon, BillableFeature, BillingPeriod, CheckoutStatePlan } from '@stigg/js-client-sdk';\nimport { useCheckoutContext } from '../CheckoutProvider';\nimport { CheckoutSteps } from '../configurations/steps';\nimport { hasMultipleBillingPeriods } from '../../utils/planPrices';\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\ntype GetProgressBarInitialStateProps = {\n isLoading: boolean;\n skipCheckoutSteps: CheckoutSteps[];\n plan?: CheckoutStatePlan;\n availableAddons?: Addon[];\n availableCharges: BillableFeatureInput[];\n preferredBillingPeriod?: BillingPeriod;\n preconfiguredBillableFeatures: BillableFeature[];\n};\n\nconst canSkipPlanStep = (\n plan: CheckoutStatePlan,\n availableCharges: BillableFeatureInput[],\n preconfiguredBillableFeatures: BillableFeature[],\n preferredBillingPeriod?: BillingPeriod,\n) => {\n // if multiple billing periods are available, a preferred billing period must be selected\n if (hasMultipleBillingPeriods(plan) && !preferredBillingPeriod) {\n return false;\n }\n\n const availableChargesIds = availableCharges.map((charge) => charge.featureId);\n const preconfiguredChargesIds = preconfiguredBillableFeatures.map((charge) => charge.featureId);\n\n // if there are available charges, they must be preconfigured\n if (\n availableChargesIds.length !== preconfiguredChargesIds.length ||\n !availableChargesIds.every((charge) => preconfiguredChargesIds.includes(charge))\n ) {\n return false;\n }\n\n return true;\n};\n\nexport function getProgressBarInitialState({\n isLoading,\n skipCheckoutSteps,\n plan,\n availableAddons,\n availableCharges,\n preferredBillingPeriod,\n preconfiguredBillableFeatures,\n}: GetProgressBarInitialStateProps) {\n if (isLoading || !plan) {\n return INITIAL_STATE;\n }\n\n const stepsToFilter: CheckoutStepKey[] = [];\n\n if (\n skipCheckoutSteps.includes('PLAN') &&\n canSkipPlanStep(plan, availableCharges, preconfiguredBillableFeatures, preferredBillingPeriod)\n ) {\n stepsToFilter.push(CheckoutStepKey.PLAN);\n }\n\n if (availableAddons?.length === 0 || skipCheckoutSteps.includes('ADDONS')) {\n stepsToFilter.push(CheckoutStepKey.ADDONS);\n }\n\n return { ...INITIAL_STATE, steps: CHECKOUT_STEPS.filter((step) => !stepsToFilter.includes(step.key)) };\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 { useCheckoutContext } from '../CheckoutProvider';\nimport { useCheckoutModel } from './useCheckoutModel';\nimport { SubscriptionState, useSubscriptionModel } from './useSubscriptionModel';\nimport { MockCheckoutPreviewCallback } from '../types';\nimport { useStiggContext } from '../../../hooks/useStiggContext';\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';\nimport { CheckoutSteps } from './configurations/steps';\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 isWidgetWatermarkEnabled: boolean;\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 skipCheckoutSteps?: CheckoutSteps[];\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 skipCheckoutSteps,\n}: {\n children: React.ReactNode;\n} & CheckoutProviderProps) {\n const { checkout, isLoading, isWidgetWatermarkEnabled } = useLoadCheckout({\n resourceId,\n planId,\n billingCountryCode,\n onMockCheckoutState,\n });\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 isLoading,\n skipCheckoutSteps: skipCheckoutSteps ?? [],\n plan: checkout?.plan,\n availableAddons: addonsStep.availableAddons,\n availableCharges: planStep.billableFeatures,\n preferredBillingPeriod,\n preconfiguredBillableFeatures: billableFeatures ?? [],\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 isWidgetWatermarkEnabled,\n };\n\n return initialState;\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [\n preferredBillingPeriod,\n billingCountryCode,\n checkout,\n isLoading,\n skipCheckoutSteps,\n billingInformation?.taxDetails?.taxPercentage,\n ]);\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';\nimport { mq } from '../common/mediaQuery';\n\nexport const CheckoutLayout = styled.div`\n margin: auto;\n min-height: 760px;\n max-width: 920px;\n display: flex;\n position: relative;\n flex-direction: column;\n align-items: center;\n\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\n padding: 16px 16px;\n ${mq.md} {\n padding: 32px;\n width: calc(100% - 64px);\n border-radius: 10px;\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 flex-direction: column;\n ${mq.md} {\n flex-direction: row;\n }\n`;\n\nexport const CheckoutPanel = styled(Box)`\n display: flex;\n flex-direction: column;\n gap: 0;\n flex: 2;\n\n width: 100%;\n ${mq.md} {\n width: auto;\n }\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, { useEffect, useRef } 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 { StyledIcon, StyledProgress, StyledStepButton } from './CheckoutProgressBar.style';\nimport { Icons } from '../../common/Icon';\nimport { Skeleton } from '../components/Skeletons.style';\nimport { useIsScreenWiderThan } from '../../hooks/useIsScreenWiderThan';\n\nexport const CheckoutProgressBar = () => {\n const { progressBarState, setActiveStep, currentStep } = useProgressBarModel();\n const { widgetState } = useCheckoutModel();\n const isScreenWiderThanMd = useIsScreenWiderThan('md');\n const containerRef = useRef<HTMLElement>();\n const { readOnly, isLoadingCheckoutData } = widgetState;\n const { activeStep, completedSteps, steps } = progressBarState || {};\n const progress = ((activeStep + 1) * 100) / steps.length;\n\n const [previousStep, setPreviousStep] = React.useState(currentStep);\n useEffect(() => {\n if (!isScreenWiderThanMd) {\n if (containerRef.current && currentStep !== previousStep) {\n containerRef.current.scrollIntoView({ behavior: 'smooth' });\n }\n }\n setPreviousStep(currentStep);\n }, [currentStep, isScreenWiderThanMd, previousStep, setPreviousStep]);\n\n if (progressBarState.steps.length === 1) {\n return null;\n }\n\n return (\n <Box className=\"stigg-checkout-progress-container\" sx={{ width: '100%', mb: 3 }} ref={containerRef}>\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\n key={key}\n item\n display=\"flex\"\n flexDirection=\"row\"\n flex={isScreenWiderThanMd ? 1 : 'auto'}\n 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, { useEffect, useRef } 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 const containerRef = useRef<HTMLDivElement>();\n useEffect(() => {\n if (containerRef.current) {\n containerRef.current.scrollIntoView({ behavior: 'smooth', block: 'center', inline: 'center' });\n }\n }, []);\n return (\n <CheckoutSuccessContainer className=\"stigg-checkout-success-container\" ref={containerRef}>\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 { Box } from '@mui/material';\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=\"body1\" style={{ marginTop: 14 }} className=\"stigg-checkout-summary-captions-remaining-credits\">\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=\"body1\" style={{ marginTop: 14 }} className=\"stigg-checkout-summary-captions-scheduled-updates\">\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 }} className=\"stigg-checkout-summary-captions-next-billing\">\n <WithSkeleton isLoading={isFetchingSubscriptionPreview} width=\"100%\">\n {text}\n </WithSkeleton>\n </Typography>\n );\n};\n\nexport function CheckoutCaptions(props: CheckoutCaptionProps) {\n return (\n <Box className=\"stigg-checkout-summary-captions\">\n <RemainingCreditsCaption {...props} />\n\n <ScheduledUpdatesCaption {...props} />\n\n <NextBillingCaption {...props} />\n </Box>\n );\n}\n","import { BillingModel, BillingPeriod, Currency, Price, TiersMode } from '@stigg/js-client-sdk';\nimport { currencyPriceFormatter } from '../../../utils/currencyUtils';\nimport { isBulkTiers, isQuantityInFirstTier } from '../../../utils/priceTierUtils';\nimport { numberFormatter } from '../../../utils/numberUtils';\n\nexport type GetPriceBreakdownStringProps = {\n totalAmount: number;\n quantity: number;\n tiersMode: Price['tiersMode'];\n tiers: Price['tiers'];\n currency: Currency;\n pricingModel: BillingModel;\n billingPeriod: BillingPeriod;\n blockSize?: number | null;\n priceAmount?: Price['amount'];\n};\n\nexport function formatPricePerUnit({\n quantity,\n totalAmount,\n pricingModel,\n billingPeriod,\n currency,\n blockSize,\n priceAmount,\n}: GetPriceBreakdownStringProps) {\n const isPerUnit = pricingModel === BillingModel.PerUnit;\n const aBlockSize = blockSize || 1;\n const featureUnits =\n quantity && (isPerUnit || quantity > 1) ? `${numberFormatter(quantity)} ${aBlockSize > 1 ? 'for' : 'x'} ` : '';\n const billingPeriodString = billingPeriod === BillingPeriod.Annually ? ' x 12 months' : '';\n\n const unitPrice = (priceAmount || totalAmount / quantity) / (billingPeriod === BillingPeriod.Annually ? 12 : 1);\n const formattedUnitPrice = currencyPriceFormatter({\n amount: unitPrice,\n currency,\n minimumFractionDigits: 2,\n });\n const formattedTotalPrice = currencyPriceFormatter({\n amount: totalAmount,\n currency,\n minimumFractionDigits: 2,\n });\n\n return `${featureUnits}${formattedUnitPrice}${billingPeriodString} ${\n billingPeriodString || featureUnits ? ` = ${formattedTotalPrice}` : ''\n }`;\n}\n\nexport function getPriceBreakdownString(params: GetPriceBreakdownStringProps) {\n const { totalAmount, quantity, tiersMode, tiers, currency } = params;\n if (isBulkTiers(tiers) || (tiersMode === TiersMode.Graduated && !isQuantityInFirstTier(tiers, quantity))) {\n const formattedTotalPrice = currencyPriceFormatter({\n amount: totalAmount,\n currency,\n minimumFractionDigits: 2,\n });\n return `${numberFormatter(quantity)} for ${formattedTotalPrice}`;\n }\n\n return formatPricePerUnit(params);\n}\n","import React from 'react';\nimport isNil from 'lodash/isNil';\nimport { Price, PriceTierFragment } from '@stigg/js-client-sdk';\nimport { Typography } from '../../../common/Typography';\nimport { calculateTierPriceGraduated } from '../../../utils/priceTierUtils';\nimport { formatPricePerUnit } from './getPriceBreakdownString';\nimport { LineItemContainer, LineItemRow } from './LineItems';\nimport { numberFormatter } from '../../../utils/numberUtils';\n\nfunction getLabel(tiers: PriceTierFragment[], index: number): string {\n const { unitPrice, upTo } = tiers[index];\n if (!unitPrice) {\n return '';\n }\n\n if (index === 0) {\n return `First ${upTo}`;\n }\n\n const previousTierUpTo = tiers[index - 1].upTo || 0;\n const startUnit = previousTierUpTo + 1;\n\n return isNil(upTo)\n ? `${numberFormatter(startUnit)} and above`\n : `Next ${numberFormatter(startUnit)} to ${numberFormatter(upTo)}`;\n}\n\nexport type GraduatedPriceBreakdownProps = {\n price: Price;\n unitQuantity: number;\n};\n\nexport function GraduatedPriceBreakdown({ price, unitQuantity }: GraduatedPriceBreakdownProps) {\n const tiers = price.tiers || [];\n\n const { breakdown } = calculateTierPriceGraduated(tiers, unitQuantity);\n\n if (breakdown.length === 1) {\n return null;\n }\n\n return (\n <>\n {breakdown.map(({ unitQuantity, amount }, index) => (\n <LineItemContainer>\n <LineItemRow key={index} style={{ alignItems: 'flex-start' }}>\n <Typography variant=\"body1\" color=\"tertiary\" style={{ whiteSpace: 'nowrap' }}>\n {getLabel(tiers, index)}\n </Typography>\n <Typography variant=\"body1\" color=\"tertiary\" style={{ whiteSpace: 'nowrap' }}>\n {formatPricePerUnit({\n quantity: unitQuantity,\n totalAmount: amount,\n currency: price.currency,\n pricingModel: price.pricingModel,\n billingPeriod: price.billingPeriod,\n tiers: price.tiers,\n tiersMode: price.tiersMode,\n blockSize: price.blockSize,\n priceAmount: price.amount,\n })}\n </Typography>\n </LineItemRow>\n </LineItemContainer>\n ))}\n </>\n );\n}\n","import { ChevronRight } from 'react-feather';\nimport styled from 'styled-components';\n\nexport const CollapsableSectionIcon = styled(ChevronRight)<{ $isOpen: boolean; $size?: number }>`\n height: ${({ $size = 24 }) => `${$size}px`};\n width: ${({ $size = 24 }) => `${$size}px`};\n transition: all 0.2s ease-in;\n ${({ $isOpen }) => $isOpen && `transform: rotate(90deg)`}\n`;\n","import React, { ReactNode, useState } from 'react';\nimport styled from '@emotion/styled/macro';\nimport Grid from '@mui/material/Grid';\nimport {\n BillingModel,\n Price,\n SubscriptionPreviewInvoice,\n SubscriptionPreviewV2,\n TiersMode,\n} from '@stigg/js-client-sdk';\nimport isEmpty from 'lodash/isEmpty';\nimport isNil from 'lodash/isNil';\nimport Link from '@mui/material/Link';\nimport { IconButton } from '@mui/material';\nimport Collapse from '@mui/material/Collapse';\nimport { Typography } from '../../../common/Typography';\nimport { currencyPriceFormatter } from '../../../utils/currencyUtils';\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';\nimport { getPriceBreakdownString } from './getPriceBreakdownString';\nimport { GraduatedPriceBreakdown } from './GraduatedPriceBreakdown';\nimport { CollapsableSectionIcon } from '../../../common/CollapsableSectionIcon';\nimport { calculateTierPrice } from '../../../utils/priceTierUtils';\nimport { useIsScreenWiderThan } from '../../../hooks/useIsScreenWiderThan';\nimport { mq } from '../../../common/mediaQuery';\n\nexport const LineItemContainer = styled.div`\n & + & {\n margin-top: 16px;\n }\n`;\n\nexport const NestedBreakdownContainer = styled.div`\n margin-top: 16px;\n margin-left: 16px;\n`;\n\nexport const LineItemRow = styled.div`\n display: flex;\n flex-direction: column;\n gap: 16px;\n\n ${mq.lg} {\n flex-direction: row;\n align-items: center;\n justify-content: space-between;\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 isScreenWiderThanLg = useIsScreenWiderThan('lg');\n const [isNestedBreakdownOpen, setIsNestedBreakdownOpen] = useState(false);\n const toggleNestedBreakdown = () => setIsNestedBreakdownOpen((prev) => !prev);\n\n const isPayAsYouGo = price.pricingModel === BillingModel.UsageBased;\n const totalAmount = price.isTieredPrice\n ? calculateTierPrice(price, quantity)\n : (price.amount || 0) * Math.ceil(quantity / (price.blockSize || 1));\n\n let nestedBreakdown: ReactNode;\n const shouldShowGraduatedPriceBreakdown =\n price.tiersMode === TiersMode.Graduated &&\n !!price.tiers &&\n !isEmpty(price.tiers) &&\n !isNil(price.tiers[0].upTo) &&\n quantity > price.tiers[0].upTo;\n\n if (shouldShowGraduatedPriceBreakdown) {\n nestedBreakdown = <GraduatedPriceBreakdown price={price} unitQuantity={quantity} />;\n }\n\n let title: ReactNode = (\n <Typography variant=\"body1\" color=\"secondary\">\n {label}\n </Typography>\n );\n\n if (nestedBreakdown) {\n title = (\n <Link onClick={toggleNestedBreakdown} underline=\"none\" style={{ cursor: 'pointer' }}>\n {title}\n </Link>\n );\n }\n\n return (\n <LineItemContainer className=\"stigg-checkout-summary-base-charges-container\">\n <LineItemRow style={{ alignItems: 'flex-start' }}>\n <Grid item display=\"flex\" gap={0.5} style={{ whiteSpace: isScreenWiderThanLg ? 'nowrap' : 'break-spaces' }}>\n {title}\n {nestedBreakdown && (\n <IconButton onClick={toggleNestedBreakdown} sx={{ padding: 0 }}>\n <CollapsableSectionIcon $isOpen={isNestedBreakdownOpen} $size={16} />\n </IconButton>\n )}\n </Grid>\n <Grid item display=\"flex\" gap={1} alignItems=\"center\">\n {isPayAsYouGo && <PayAsYouGoPriceTooltip checkoutLocalization={checkoutLocalization} />}\n <Typography\n variant=\"body1\"\n color=\"secondary\"\n style={{ whiteSpace: isScreenWiderThanLg ? 'nowrap' : 'break-spaces' }}>\n {getPriceBreakdownString({\n totalAmount,\n quantity,\n currency: price.currency,\n pricingModel: price.pricingModel,\n billingPeriod: price.billingPeriod,\n tiers: price.tiers,\n tiersMode: price.tiersMode,\n blockSize: price.blockSize,\n priceAmount: price.amount,\n })}\n {isPayAsYouGo && ' / unit'}\n </Typography>\n </Grid>\n </LineItemRow>\n {nestedBreakdown && (\n <Collapse in={isNestedBreakdownOpen}>\n <NestedBreakdownContainer>{nestedBreakdown}</NestedBreakdownContainer>\n </Collapse>\n )}\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';\nimport { mq } from '../../common/mediaQuery';\n\nexport const SummaryContainer = styled(Box)`\n width: 100%;\n max-width: 470px;\n flex: 1.5;\n`;\n\nexport const SummaryCard = styled(Paper)`\n background: ${({ theme }) => theme.stigg.palette.backgroundHighlight};\n padding: 16px;\n\n ${mq.md} {\n border-radius: 10px;\n }\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 isWidgetWatermarkEnabled,\n}: CheckoutContainerProps & { isFreeDowngrade: boolean; isWidgetWatermarkEnabled: 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\n className=\"stigg-checkout-summary-plan-title-container\"\n display=\"flex\"\n flexDirection=\"row\"\n alignItems=\"center\"\n 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 <Grid item className=\"stigg-checkout-summary-usage-charges-container\">\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 </Grid>\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={isWidgetWatermarkEnabled}\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 = ({ isWidgetWatermarkEnabled }: { isWidgetWatermarkEnabled: boolean }) => {\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={isWidgetWatermarkEnabled}\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';\nimport { mq } from '../../../common/mediaQuery';\n\nexport const CheckoutAddonsContainer = styled(Grid)`\n width: 100%;\n gap: 8px;\n`;\n\nexport const AddonListItemContainer = styled(Grid)`\n display: flex;\n flex-direction: column;\n gap: 16px;\n\n ${mq.md} {\n gap: 0;\n flex-direction: row;\n justify-content: space-between;\n height: 80px;\n align-items: center;\n }\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';\nimport { ON_WHEEL_BLUR } from '../../../utils/onWheelBlur';\nimport { useIsScreenWiderThan } from '../../../hooks/useIsScreenWiderThan';\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 isScreenWiderThanLg = useIsScreenWiderThan('lg');\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 sx={{ gap: '16px' }} container={!isScreenWiderThanLg}>\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 onWheel={ON_WHEEL_BLUR}\n sx={isScreenWiderThanLg ? { marginX: 2, width: 120 } : { flex: 1 }}\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 { css } from '@emotion/react';\nimport 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)<{ $hideBorders?: boolean }>`\n flex-direction: column;\n align-items: unset;\n ${({ $hideBorders }) =>\n $hideBorders &&\n css`\n border: none;\n padding: 0;\n `}\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 { 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 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 hasExistingPaymentMethod: boolean;\n} & Pick<CheckoutContainerProps, 'onBillingAddressChange' | 'collectPhoneNumber'>;\n\nfunction PaymentMethodLayout({ checked, text, subtitle, readOnly }: PaymentMethodLayoutProps) {\n return (\n <PaymentMethodLayoutContainer>\n <Radio checked={checked} disabled={readOnly} />\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 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 hasExistingPaymentMethod,\n checked,\n onSelect,\n readOnly,\n checkoutLocalization,\n onBillingAddressChange,\n collectPhoneNumber,\n}: NewPaymentMethodProps) {\n return (\n <NewPaymentMethodContainer item $hideBorders={!hasExistingPaymentMethod} onClick={onSelect} $disabled={readOnly}>\n {hasExistingPaymentMethod && (\n <PaymentMethodLayout\n checked={checked}\n readOnly={readOnly}\n text={<Typography variant=\"h6\">{checkoutLocalization.newPaymentMethodText}</Typography>}\n />\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 hasExistingPaymentMethod={!!customer?.paymentMethodDetails}\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 } 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 { getValidPriceQuantity } from '../../../utils/priceUtils';\nimport { getFeatureDisplayNameText } from '../../../utils/getFeatureName';\nimport { ON_WHEEL_BLUR } from '../../../utils/onWheelBlur';\nimport { mq } from '../../../common/mediaQuery';\nimport { useIsScreenWiderThan } from '../../../hooks/useIsScreenWiderThan';\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 min-height: 60px;\n margin-top: 16px;\n flex-direction: column;\n\n ${mq.md} {\n flex-direction: row;\n align-items: center;\n justify-content: space-between;\n }\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 isScreenWiderThanMd = useIsScreenWiderThan('md');\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 quantity = billableFeature?.quantity || 1;\n chargeRow = (\n <TiersSelectContainer\n componentId={`${featureId}-tiers`}\n tiers={charge.tiers}\n tiersMode={charge.tiersMode}\n value={quantity}\n handleChange={(quantity: number) => {\n setBillableFeature(featureId, quantity);\n }}\n width={120}\n />\n );\n } else {\n chargeRow = (\n <InputField\n sx={{ width: isScreenWiderThanMd ? 120 : '100%' }}\n id={`${featureId}-input`}\n type=\"number\"\n onWheel={ON_WHEEL_BLUR}\n error={!isValid}\n helperText={!isValid ? getValidationText(charge, billableFeature?.quantity) : undefined}\n FormHelperTextProps={{ sx: { margin: '4px' } }}\n value={billableFeature?.quantity ?? ''}\n onChange={handleQuantityChange}\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 <>\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 </>\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, isWidgetWatermarkEnabled }] = 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 isWidgetWatermarkEnabled={isWidgetWatermarkEnabled} />\n ) : (\n <CheckoutSummary\n disablePromotionCode={disablePromotionCode}\n disableSuccessAnimation={disableSuccessAnimation}\n onCheckout={onCheckout}\n onCheckoutCompleted={onCheckoutCompleted}\n isFreeDowngrade={isFreeDowngrade}\n onMockCheckoutPreview={onMockCheckoutPreview}\n isWidgetWatermarkEnabled={isWidgetWatermarkEnabled}\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 skipCheckoutSteps,\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 skipCheckoutSteps={skipCheckoutSteps}>\n <CheckoutContainer {...containerProps} />\n </CheckoutProvider>\n );\n};\n","import { Subscription } from '@stigg/js-client-sdk';\nimport { useEffect, useMemo, useState } from 'react';\nimport { useStiggContext } from '../../hooks/useStiggContext';\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","import { BooleanEntitlement, GetBooleanEntitlement, BOOLEAN_DEFAULT_FALLBACK_ENTITLEMENT } from '@stigg/js-client-sdk';\nimport { useStiggContext } from './useStiggContext';\n\nexport type TypedGetBooleanEntitlement<T> = Omit<GetBooleanEntitlement, 'featureId'> & {\n featureId: T;\n};\n\nexport function useBooleanEntitlement<T extends string>(params: TypedGetBooleanEntitlement<T>): BooleanEntitlement {\n const stiggContext = useStiggContext({ optional: true });\n const stigg = stiggContext?.stigg;\n\n if (!stigg) {\n return {\n ...BOOLEAN_DEFAULT_FALLBACK_ENTITLEMENT,\n ...params.options?.fallback,\n };\n }\n\n return stigg.getBooleanEntitlement(params);\n}\n","import { NumericEntitlement, GetNumericEntitlement, NUMERIC_DEFAULT_FALLBACK_ENTITLEMENT } from '@stigg/js-client-sdk';\nimport { useStiggContext } from './useStiggContext';\n\ntype TypedGetNumericEntitlement<T> = Omit<GetNumericEntitlement, 'featureId'> & {\n featureId: T;\n};\n\nexport function useNumericEntitlement<T extends string>(params: TypedGetNumericEntitlement<T>): NumericEntitlement {\n const stiggContext = useStiggContext({ optional: true });\n const stigg = stiggContext?.stigg;\n\n if (!stigg) {\n return {\n ...NUMERIC_DEFAULT_FALLBACK_ENTITLEMENT,\n ...params.options?.fallback,\n };\n }\n\n return stigg.getNumericEntitlement(params);\n}\n","import { GetMeteredEntitlement, METERED_DEFAULT_FALLBACK_ENTITLEMENT, MeteredEntitlement } from '@stigg/js-client-sdk';\nimport { useStiggContext } from './useStiggContext';\n\ntype TypedGetMeteredEntitlement<T> = Omit<GetMeteredEntitlement, 'featureId'> & {\n featureId: T;\n};\n\nexport function useMeteredEntitlement<T extends string>(params: TypedGetMeteredEntitlement<T>): MeteredEntitlement {\n const stiggContext = useStiggContext({ optional: true });\n const stigg = stiggContext?.stigg;\n\n if (!stigg) {\n return {\n ...METERED_DEFAULT_FALLBACK_ENTITLEMENT,\n ...params.options?.fallback,\n };\n }\n\n return stigg.getMeteredEntitlement(params);\n}\n","import { useEffect, useState } from 'react';\n\nexport type FetchResult<T> = {\n isLoaded: boolean;\n error: Error | null;\n data: T | null;\n};\n\nexport function useFetch<T>({ func }: { func: () => Promise<T> }): FetchResult<T> {\n const [isLoaded, setIsLoaded] = useState(false);\n const [error, setError] = useState<Error | null>(null);\n const [data, setData] = useState<T | null>(null);\n\n useEffect(() => {\n const fetchData = async () => {\n setIsLoaded(true);\n try {\n const result = await func();\n setData(result);\n } catch (error) {\n setError(error as Error);\n } finally {\n setIsLoaded(false);\n }\n };\n\n void fetchData();\n }, [func]);\n\n return { isLoaded, error, data };\n}\n","import { useMemo, useCallback } from 'react';\nimport { GetActiveSubscriptions } from '@stigg/js-client-sdk';\nimport { useStiggContext } from './useStiggContext';\nimport { useFetch } from './useFetch';\n\nexport function useActiveSubscriptions(params?: GetActiveSubscriptions) {\n const stiggContext = useStiggContext({ optional: true });\n const stigg = stiggContext?.stigg;\n\n const func = useCallback(() => (stigg ? stigg.getActiveSubscriptions(params) : Promise.resolve([])), [params, stigg]);\n const { data, error, isLoaded } = useFetch({ func });\n\n return useMemo(\n () => ({\n activeSubscriptions: data,\n isLoaded,\n error,\n }),\n [data, error, isLoaded],\n );\n}\n","import { useMemo, useCallback } from 'react';\nimport { GetPaywall } from '@stigg/js-client-sdk';\nimport { useStiggContext } from './useStiggContext';\nimport { useFetch } from './useFetch';\n\nexport function usePaywall(params?: GetPaywall) {\n const stiggContext = useStiggContext({ optional: true });\n const stigg = stiggContext?.stigg;\n\n const func = useCallback(() => (stigg ? stigg.getPaywall(params) : Promise.resolve(null)), [params, stigg]);\n const { data, error, isLoaded } = useFetch({ func });\n\n return useMemo(\n () => ({\n paywall: data,\n isLoaded,\n error,\n }),\n [data, error, isLoaded],\n );\n}\n","import { useMemo, useCallback } from 'react';\nimport { GetCustomerPortal } from '@stigg/js-client-sdk';\nimport { useStiggContext } from './useStiggContext';\nimport { useFetch } from './useFetch';\n\nexport function useCustomerPortal(params?: GetCustomerPortal) {\n const stiggContext = useStiggContext({ optional: true });\n const stigg = stiggContext?.stigg;\n\n const func = useCallback(() => (stigg ? stigg.getCustomerPortal(params) : Promise.resolve(null)), [params, stigg]);\n const { data, error, isLoaded } = useFetch({ func });\n\n return useMemo(\n () => ({\n customerPortal: data,\n isLoaded,\n error,\n }),\n [data, error, isLoaded],\n );\n}\n","import React from 'react';\nimport { GetBooleanEntitlement } from '@stigg/js-client-sdk';\nimport { useBooleanEntitlement } from '../hooks';\n\ntype BooleanEntitlementGuardProps = GetBooleanEntitlement & {\n noAccessComponent?: React.ReactNode;\n children: React.ReactElement;\n};\n\nexport function BooleanEntitlementGuard({\n noAccessComponent,\n children,\n ...rest\n}: BooleanEntitlementGuardProps): JSX.Element {\n const { hasAccess } = useBooleanEntitlement(rest);\n\n if (!hasAccess) {\n return <>{noAccessComponent ?? null}</>;\n }\n\n return children;\n}\n","import React from 'react';\nimport { GetNumericEntitlement } from '@stigg/js-client-sdk';\nimport { useNumericEntitlement } from '../hooks';\n\ntype NumericEntitlementGuardProps = GetNumericEntitlement & {\n noAccessComponent?: React.ReactNode;\n children: React.ReactElement;\n};\n\nexport function NumericEntitlementGuard({\n noAccessComponent,\n children,\n ...rest\n}: NumericEntitlementGuardProps): JSX.Element {\n const { hasAccess } = useNumericEntitlement(rest);\n\n if (!hasAccess) {\n return <>{noAccessComponent ?? null}</>;\n }\n\n return children;\n}\n","import React from 'react';\nimport { GetMeteredEntitlement } from '@stigg/js-client-sdk';\nimport { useMeteredEntitlement } from '../hooks';\n\ntype MeteredEntitlementGuardProps = GetMeteredEntitlement & {\n noAccessComponent?: React.ReactNode;\n children: React.ReactElement;\n};\n\nexport function MeteredEntitlementGuard({\n noAccessComponent,\n children,\n ...rest\n}: MeteredEntitlementGuardProps): JSX.Element {\n const { hasAccess } = useMeteredEntitlement(rest);\n\n if (!hasAccess) {\n return <>{noAccessComponent ?? null}</>;\n }\n\n return children;\n}\n"],"names":["_extends","React.createElement","calculateUnitQuantityText","minUnitQuantity","maxUnitQuantity","unitsPlural","unitsText","formatNumber","usageLimit","toLocaleString","maximumFractionDigits","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","getResetPeriodText","resetPeriod","EntitlementResetPeriod","Day","Hour","Week","Month","Year","getEntitlementDisplay","hasUnlimitedUsage","feature","isCustom","unitBasedEntitlement","resetPeriodSuffix","featureUnits","units","displayName","EntitlementRow","displayNameOverride","restProps","PlanEntitlementsContainer","getTitle","plan","paywallLocale","hasFeatures","entitlementsTitle","title","basePlan","PlanEntitlements","billingPeriod","prices","pricePoints","filter","price","unitBasedEntitlements","map","key","visibleEntitlements","entitlements","entitlement","hiddenFromWidgets","includes","WidgetType","Paywall","length","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","tertiary","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","ascendingTiers","sort","a","b","upTo","tier","getAmount","amount","selectedBillingPeriod","shouldShowMonthlyPriceAmount","Annually","calculateTierPriceVolume","currentTier","perUnitQuantity","unitPrice","flatPrice","calculateTierPriceGraduated","remainingQuantity","prevUpTo","currentTierIndex","breakdown","push","unitsInTier","consumed","Math","min","total","sum","calculateTierPrice","tiersMode","TiersMode","Volume","Graduated","hasTierWithUnitPrice","some","isBulkTiers","every","isQuantityInFirstTier","getTiersPerUnitQuantities","currentSubscription","selectDefaultTierIndex","planTierPrices","isTieredPrice","selectedDefaultTierIndex","tieredPrice","subscriptionPrice","pricingModel","BillingModel","PerUnit","result","PriceTierComparison","compareSelectedTierToCurrentTier","perUnitQuantityByFeature","Equal","currentTierPrice","oldQuantity","newQuantity","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","removeTrailingZero","currencyString","currencySymbol","getSymbolFromCurrency","formattedPrice","Intl","NumberFormat","trailingZeroDisplay","currencyDisplay","replace","numberFormatter","number","getPaidPriceText","planPrices","paywallCalculatedPrice","priceAmount","isSinglePrice","priceNumber","tierUnits","pricePeriod","Monthly","unit","formattedUnits","blockSize","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","ON_WHEEL_BLUR","e","target","blur","VolumePerUnitInput","value","handleChange","type","onWheel","fullWidth","minHeight","InputProps","endAdornment","InputAdornment","position","onChange","event","Number","TierSelect","Select","TierInput","OutlinedInput","VolumeBulkSelect","componentId","input","MenuProps","MenuListProps","disablePadding","PaperProps","MenuItem","lineHeight","TiersSelectLayout","TiersSelectContainer","EMPTY_CHAR","PlanPriceContainer","UnitSpan","PriceSpan","PriceBillingPeriod","hasMonthlyPrice","hasAnnuallyPrice","hasPrice","content","toLowerCase","PlanPrice","showStartingAt","withUnitPriceRow","withStartingAtRow","withTiersRow","setPerUnitQuantityByFeature","planPrice","undefined","handlePerUnitQuantityChange","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","onPlanButtonClick","perUnitBillableFeatures","Object","keys","classNames","description","PickerContainer","PeriodText","StyledSwitch","Switch","DiscountRate","discount","BillingPeriodPicker","discountRate","onBillingPeriodChanged","availableBillingPeriods","isMonthlyBillingPeriod","uncheckedIcon","checkedIcon","isAnnuallySelected","checked","handleDiameter","calculateDiscountRate","monthlyPrice","annuallyPrice","annuallyPerMonthPrice","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","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","StiggContext","createContext","DEFAULT_LOCALE","StiggProvider","apiKey","baseUri","baseEdgeUri","enableEdge","customerId","customerToken","resourceId","cacheTtlMs","useEntitlementPolling","entitlementPollingInterval","entitlementsFallback","stiggClient","offline","clientName","CLIENT_NAME","clientVersion","CLIENT_VERSION","currentApiKey","useRef","initializeParams","Stigg","initialize","lazyLoad","isInitialized","refreshData","setContext","ctx","customerPortalUpdatedAt","Date","refresh","useEffect","isMounted","safeSetContext","setContextFunc","onEntitlementsUpdated","updatedAt","setStiggInstance","removeListener","addListener","loadStiggClient","current","logger","waitForInitialization","clearCustomer","setCustomerId","Provider","SkeletonTheme","baseColor","highlightColor","optional","useContext","Error","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","ListBox","$backgroundColor","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","breakpoints","xs","sm","md","lg","xl","xxl","mqMinWidth","breakpoint","mq","obj","useIsScreenWiderThan","useMediaQueryMui","SkeletonLayout","SkeletonLayoutLeft","SubscriptionOverviewLoader","isScreenWiderThanMd","SubscriptionScheduledUpdateDowngradeRow","scheduleUpdate","ArrowDown","SubscriptionScheduledUpdateBillingPeriodChangeRow","nextBillingPeriod","SubscriptionScheduledUpdateUnitQuantityChangeRow","newQuantityUnits","flexWrap","SubscriptionScheduledUpdateRow","SubscriptionScheduleUpdateAlertContainer","StyledRestoreIcon","Restore","MultipleScheduledUpdates","justifyContent","SingleScheduledUpdate","SubscriptionScheduledUpdatesAlert","onCancelScheduledUpdates","stiggTheme","isSingleScheduledUpdate","marginRight","SectionContainer","NextEstimatedBill","rangeEnd","NoUpcomingBilling","ContactCustomerSupportLayout","ContactSupportButton","ContactCustomerSupport","onContactSupport","linkLabel","contactSupportText","Container","UpcomingBilling","noUsageBasedPrices","billingModel","scheduledDowngradeToFree","planName","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","floor","getUsageProgressStatus","getResetUsageText","usagePeriodEnd","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","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","isMdScreen","spacing","range","MAX_BOXES","CustomerUsageData","filterEntitlements","showAll","setShowAll","meteredEntitlements","meterType","MeterType","Fluctuating","Incremental","subscriptionPriceByFeature","priceEntitlements","otherEntitlements","sortedEntitlements","filteredEntitlements","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","hasMonthlyPrices","hasAnnualPrices","hasMultipleBillingPeriods","getBillingPeriod","isInAdvanceCommitmentCharge","getBillableFeatures","preconfiguredBillableFeatures","preconfBillableFeaturesByFeatureId","quantityByFeatureId","charge","preconfiguredQuantity","resolveBillingPeriod","hasMonthlyPlan","hasAnnualPlan","isUpdate","getPlanStepInitialState","usePlanState","planStep","useSetBillableFeature","billableFeature","useSetBillingPeriod","usePlanStepModel","setBillingPeriod","setBillableFeature","CheckoutStepKey","CHECKOUT_STEPS","PLAN","ADDONS","PAYMENT","INITIAL_STATE","activeStep","completedSteps","steps","canSkipPlanStep","availableCharges","availableChargesIds","preconfiguredChargesIds","getProgressBarInitialState","skipCheckoutSteps","stepsToFilter","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","containerRef","progress","previousStep","setPreviousStep","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","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","block","inline","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","formatPricePerUnit","totalAmount","isPerUnit","aBlockSize","billingPeriodString","formattedUnitPrice","formattedTotalPrice","getPriceBreakdownString","getLabel","previousTierUpTo","startUnit","GraduatedPriceBreakdown","LineItemContainer","LineItemRow","CollapsableSectionIcon","ChevronRight","$size","$isOpen","NestedBreakdownContainer","PayAsYouGoPriceTooltip","BilledPriceLineItem","isScreenWiderThanLg","isNestedBreakdownOpen","setIsNestedBreakdownOpen","toggleNestedBreakdown","prev","isPayAsYouGo","ceil","nestedBreakdown","shouldShowGraduatedPriceBreakdown","underline","IconButton","Collapse","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","$hideBorders","PaymentMethodLayoutContainer","PaymentMethodTextContainer","PaymentMethodLayout","subtitle","Radio","ExistingPaymentMethod","onSelect","last4Digits","expirationMonth","expirationYear","NewPaymentMethod","hasExistingPaymentMethod","PaymentContainer","PaymentStep","handleOnSelect","openNewPaymentMethod","Alert","severity","ChangePlanButton","allowChangePlan","onChangePlan","opacity","formatBillingPeriod","BillingPeriodPickerContainer","BillingPeriodButton","$isOnlyBillingPeriod","$isActive","BillingPeriodOptions","BillingPeriodPrice","DiscountChip","Chip","BillingPeriodOption","isOnlyBillingPeriod","isActive","monthlyPrices","annualPrices","hasBothBillingPeriods","StyledPlanCharge","div","getValidationText","PlanCharge","onValidationChange","isBaseCharge","hasQuantityRestrictions","chargeRow","formattedAmount","CheckoutChargeList","planCharges","p","chargesValidation","setChargesValidation","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","useBooleanEntitlement","stiggContext","BOOLEAN_DEFAULT_FALLBACK_ENTITLEMENT","fallback","getBooleanEntitlement","useNumericEntitlement","NUMERIC_DEFAULT_FALLBACK_ENTITLEMENT","getNumericEntitlement","useMeteredEntitlement","METERED_DEFAULT_FALLBACK_ENTITLEMENT","getMeteredEntitlement","useFetch","func","isLoaded","setIsLoaded","setError","data","setData","fetchData","useActiveSubscriptions","getActiveSubscriptions","usePaywall","BooleanEntitlementGuard","noAccessComponent","hasAccess","NumericEntitlementGuard","MeteredEntitlementGuard"],"mappings":"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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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"}
|
|
1
|
+
{"version":3,"file":"react-sdk.esm.js","sources":["../src/assets/check-stigg.svg","../src/components/paywall/utils/calculateUnitQuantityText.ts","../src/components/utils/formatNumber.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/numberUtils.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/utils/onWheelBlur.ts","../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/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/StiggProvider.tsx","../src/hooks/useStiggContext.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/common/mediaQuery.ts","../src/components/hooks/useIsScreenWiderThan.ts","../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/utils/planPrices.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/getPriceBreakdownString.ts","../src/components/checkout/summary/components/GraduatedPriceBreakdown.tsx","../src/components/common/CollapsableSectionIcon.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","../src/hooks/useBooleanEntitlement.ts","../src/hooks/useNumericEntitlement.ts","../src/hooks/useMeteredEntitlement.ts","../src/hooks/useFetch.ts","../src/hooks/useActiveSubscriptions.ts","../src/hooks/usePaywall.ts","../src/hooks/useCustomerPortal.ts","../src/components/BooleanEntitlementGuard.tsx","../src/components/NumericEntitlementGuard.tsx","../src/components/MeteredEntitlementGuard.tsx"],"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","export function formatNumber(usageLimit: number | null | undefined) {\n return usageLimit?.toLocaleString('en-US', {\n maximumFractionDigits: 0,\n });\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 | 'tertiary'\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 { formatNumber } from '../utils/formatNumber';\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\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 case EntitlementResetPeriod.Year: {\n return 'per year';\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 `${formatNumber(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, hasFeatures: boolean) {\n if (paywallLocale.entitlementsTitle) {\n return paywallLocale.entitlementsTitle(plan);\n }\n let title = hasFeatures ? `${plan.displayName} includes` : '';\n if (plan.basePlan) {\n title = `Everything in ${plan.basePlan.displayName}${hasFeatures ? ', 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\n .filter((price) => (price?.minUnitQuantity && price?.minUnitQuantity > 1) || price?.maxUnitQuantity)\n .map((price) => {\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 const visibleEntitlements = plan.entitlements.filter(\n (entitlement) => !(entitlement.hiddenFromWidgets || []).includes(WidgetType.Paywall),\n );\n\n const hasFeatures = unitBasedEntitlements.length > 0 || visibleEntitlements.length > 0;\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, hasFeatures)}\n </Typography>\n {unitBasedEntitlements}\n {visibleEntitlements.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 currentSubscriptionOverride?: CurrentSubscriptionOverride | 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 type CurrentSubscriptionOverride = {\n planId: string;\n billableFeatures: BillableFeature[];\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 CurrentSubscriptionOverrideFn = ({\n currentSubscription,\n}: {\n currentSubscription: Subscription | null;\n}) => CurrentSubscriptionOverride | null | undefined;\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 tertiary: textColor.alpha(0.5).toString(),\n disabled: textColor.alpha(0.35).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 { sum } from 'lodash';\nimport { PaywallPlan } from '../paywall';\nimport { CurrentSubscriptionOverride, 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): PriceTierFragment {\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\nfunction 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 calculateTierPriceGraduated(\n tiers: PriceTierFragment[],\n unitQuantity: number,\n selectedBillingPeriod?: BillingPeriod,\n shouldShowMonthlyPriceAmount?: boolean,\n): { total: number; breakdown: Array<{ unitQuantity: number; amount: number }> } {\n let remainingQuantity = unitQuantity;\n let prevUpTo = 0;\n let currentTierIndex = 0;\n\n const breakdown: Array<{ unitQuantity: number; amount: number }> = [];\n\n while (remainingQuantity > 0 && currentTierIndex < tiers.length) {\n const tier = tiers[currentTierIndex];\n const { upTo } = tier;\n\n if (isNil(upTo)) {\n breakdown.push({\n unitQuantity: remainingQuantity,\n amount: calculateTierPriceVolume(tier, remainingQuantity, selectedBillingPeriod, shouldShowMonthlyPriceAmount),\n });\n remainingQuantity = 0;\n } else {\n const unitsInTier = upTo - prevUpTo;\n const consumed = Math.min(remainingQuantity, unitsInTier);\n breakdown.push({\n unitQuantity: consumed,\n amount: calculateTierPriceVolume(tier, consumed, selectedBillingPeriod, shouldShowMonthlyPriceAmount),\n });\n remainingQuantity -= consumed;\n prevUpTo = upTo;\n }\n\n currentTierIndex += 1;\n }\n\n const total = sum(breakdown.map(({ amount }) => amount));\n\n return {\n breakdown,\n total,\n };\n}\n\nexport function calculateTierPrice(\n price: Pick<Price, 'tiers' | 'tiersMode'>,\n unitQuantity: number,\n selectedBillingPeriod?: BillingPeriod,\n shouldShowMonthlyPriceAmount?: boolean,\n): number {\n if (!price.tiers) {\n return 0;\n }\n\n switch (price.tiersMode) {\n case TiersMode.Volume: {\n const currentTier = getTierByQuantity(price.tiers, unitQuantity);\n return calculateTierPriceVolume(currentTier, unitQuantity, selectedBillingPeriod, shouldShowMonthlyPriceAmount);\n }\n case TiersMode.Graduated: {\n return calculateTierPriceGraduated(price.tiers, unitQuantity, selectedBillingPeriod, shouldShowMonthlyPriceAmount)\n .total;\n }\n default:\n return 0;\n }\n}\n\nexport function hasTierWithUnitPrice(tiers: PriceTierFragment[] | null | undefined) {\n return tiers?.some(({ unitPrice, upTo }) => unitPrice && !isNil(upTo));\n}\n\nexport function isBulkTiers(tiers: PriceTierFragment[] | null | undefined) {\n return tiers?.every(({ unitPrice, upTo }) => !unitPrice || isNil(upTo));\n}\n\nexport function isQuantityInFirstTier(tiers: PriceTierFragment[] | null | undefined, quantity: number) {\n return tiers?.[0].upTo && quantity <= tiers[0].upTo;\n}\n\nexport function getTiersPerUnitQuantities({\n plan,\n billingPeriod,\n currentSubscription,\n currentSubscriptionOverride,\n selectDefaultTierIndex,\n}: {\n plan: PaywallPlan;\n billingPeriod: BillingPeriod;\n currentSubscription: Subscription | null;\n currentSubscriptionOverride?: CurrentSubscriptionOverride | null;\n selectDefaultTierIndex?: SelectDefaultTierIndexFn;\n}): Record<string, number> {\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 const currentTier = price.tiers![selectedDefaultTierIndex];\n let quantity = hasTierWithUnitPrice(price.tiers) ? 1 : currentTier.upTo || 1;\n\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\n if (tieredPrice) {\n quantity = tieredPrice.feature!.unitQuantity || 1;\n }\n }\n\n if (currentSubscriptionOverride?.planId === plan.id) {\n const billableFeature = currentSubscriptionOverride.billableFeatures.find(\n (billableFeature) => billableFeature.featureId === featureId,\n );\n if (billableFeature) {\n quantity = billableFeature.quantity;\n }\n }\n\n const result: Record<string, number> = {};\n result[featureId] = quantity;\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 perUnitQuantityByFeature,\n plan,\n currentSubscription,\n currentSubscriptionOverride,\n}: {\n perUnitQuantityByFeature: Record<string, number>;\n plan: PaywallPlan;\n currentSubscription: Subscription | null;\n currentSubscriptionOverride?: CurrentSubscriptionOverride | null;\n}): PriceTierComparison {\n if (!currentSubscription) {\n return PriceTierComparison.Equal;\n }\n\n let currentTierPrice = currentSubscription.prices.find(\n (price) => price.pricingModel === BillingModel.PerUnit && price.tiersMode,\n );\n\n const isCurrentPlanOverride = plan.id === currentSubscriptionOverride?.planId;\n if (isCurrentPlanOverride) {\n currentTierPrice =\n plan.pricePoints.find((price) => price.pricingModel === BillingModel.PerUnit && price.tiersMode) ??\n currentTierPrice;\n }\n\n if (!currentTierPrice) {\n return PriceTierComparison.Equal;\n }\n\n const { featureId, unitQuantity } = currentTierPrice.feature!;\n let oldQuantity = unitQuantity;\n\n if (isCurrentPlanOverride) {\n const billableFeature = currentSubscriptionOverride?.billableFeatures?.find(\n (billableFeature) => billableFeature.featureId === featureId,\n );\n if (billableFeature) {\n oldQuantity = billableFeature.quantity;\n }\n }\n\n if (isNil(oldQuantity)) {\n return PriceTierComparison.Equal;\n }\n\n const newQuantity = perUnitQuantityByFeature[featureId];\n\n if (newQuantity < oldQuantity) {\n return PriceTierComparison.Lower;\n }\n if (newQuantity > oldQuantity) {\n return PriceTierComparison.Higher;\n }\n return PriceTierComparison.Equal;\n}\n","import React, { useState } from 'react';\nimport { BillingPeriod, Customer, 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 { CurrentSubscriptionOverride, 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 currentSubscriptionOverride?: CurrentSubscriptionOverride | null;\n billingPeriod: BillingPeriod;\n isCustomerOnTrial: boolean;\n paywallLocale: PaywallLocalization;\n onPlanSelected: (intentionType: SubscribeIntentionType) => void | Promise<void>;\n withTrialLeftRow: boolean;\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 currentSubscriptionOverride,\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 perUnitQuantityByFeature,\n plan,\n currentSubscription,\n currentSubscriptionOverride,\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 removeTrailingZero,\n}: {\n amount: number;\n currency?: Currency | string;\n locale?: string;\n maximumFractionDigits?: number;\n minimumFractionDigits?: number;\n removeTrailingZero?: boolean;\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 trailingZeroDisplay: removeTrailingZero ? 'stripIfInteger' : 'auto',\n ...(currencySymbol ? { currencyDisplay: 'code' } : {}),\n } as Intl.NumberFormatOptions).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","export function numberFormatter(number: number, { locale }: { locale?: string } = {}) {\n return new Intl.NumberFormat(locale).format(number);\n}\n","import { BillingModel, BillingPeriod, PaywallCalculatedPricePoint, Price } from '@stigg/js-client-sdk';\nimport { currencyPriceFormatter } from './currencyUtils';\nimport { PlanPriceText } from './getPlanPrice';\nimport { calculateTierPrice, getPriceFeatureUnit } from './priceTierUtils';\nimport { PaywallLocalization } from '../paywall';\nimport { numberFormatter } from './numberUtils';\n\ntype GetPaidPriceTextParams = {\n planPrices: Price[];\n paywallCalculatedPrice?: PaywallCalculatedPricePoint;\n selectedBillingPeriod: BillingPeriod;\n locale: string;\n shouldShowMonthlyPriceAmount: boolean;\n paywallLocale: PaywallLocalization;\n perUnitQuantityByFeature?: Record<string, number>;\n};\n\nexport function getPaidPriceText({\n planPrices,\n paywallCalculatedPrice,\n selectedBillingPeriod,\n locale,\n shouldShowMonthlyPriceAmount,\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 && price.tiers) {\n const quantity = perUnitQuantityByFeature?.[price.feature!.featureId] || 1;\n tiers = price.tiers;\n tierUnits = getPriceFeatureUnit(price);\n\n priceNumber += calculateTierPrice(price, quantity, selectedBillingPeriod, shouldShowMonthlyPriceAmount);\n }\n }\n\n if (isSinglePrice) {\n const price = planPrices[0];\n const formattedUnits =\n price.blockSize && price.blockSize > 1\n ? `for ${numberFormatter(price.blockSize)} ${price.feature?.unitsPlural || price.feature?.units || ''}`\n : `per ${price.feature?.units || ''}`;\n\n if (price.pricingModel === BillingModel.PerUnit && !price.isTieredPrice) {\n unit = `${formattedUnits} ${pricePeriod}`;\n } else if (price.pricingModel === BillingModel.UsageBased) {\n unit = `${formattedUnits}`;\n }\n }\n\n return {\n price: currencyPriceFormatter({\n amount: priceNumber,\n currency,\n locale,\n minimumFractionDigits: 2,\n removeTrailingZero: true,\n }),\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 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 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 React from 'react';\n\nexport const ON_WHEEL_BLUR = (e: React.WheelEvent<HTMLInputElement>) => (e.target as HTMLElement).blur();\n","import InputAdornment from '@mui/material/InputAdornment';\nimport React from 'react';\nimport { Typography } from './Typography';\nimport { InputField } from '../checkout/components';\nimport { TiersSelectContainerProps } from './TiersSelectContainer';\nimport { ON_WHEEL_BLUR } from '../utils/onWheelBlur';\n\nexport function VolumePerUnitInput({\n width,\n tierUnits,\n value,\n handleChange,\n}: Pick<TiersSelectContainerProps, 'width' | 'tierUnits' | 'value'> & {\n handleChange: (quantity: number) => void;\n}) {\n return (\n <InputField\n type=\"number\"\n onWheel={ON_WHEEL_BLUR}\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={value}\n onChange={(event) => {\n const quantity = event?.target?.value ? Number(event?.target?.value) : null;\n if (quantity) {\n handleChange(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';\nimport { formatNumber } from '../utils/formatNumber';\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 value,\n componentId,\n tierUnits,\n tiers,\n handleChange,\n}: Pick<TiersSelectContainerProps, 'value' | 'componentId' | 'tiers' | 'tierUnits'> & {\n handleChange: (quantity: number) => void;\n}) {\n if (!tiers) {\n return null;\n }\n\n return (\n <TierSelect\n value={value.toString()}\n fullWidth\n onChange={(event) => {\n const quantity = event?.target?.value ? Number(event?.target?.value) : null;\n if (quantity) {\n handleChange(quantity);\n }\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 {formatNumber(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 { 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 tiersMode?: TiersMode | null;\n handleChange: (quantity: number) => void;\n value: number;\n width?: number;\n};\n\nconst TiersSelectLayout = styled(Typography)`\n min-height: 46px;\n`;\n\nexport function TiersSelectContainer(props: TiersSelectContainerProps) {\n const { tiers } = props;\n\n return (\n <TiersSelectLayout as=\"div\" className=\"stigg-price-tier-select\">\n {hasTierWithUnitPrice(tiers) ? <VolumePerUnitInput {...props} /> : <VolumeBulkSelect {...props} />}\n </TiersSelectLayout>\n );\n}\n","import React from 'react';\nimport styled from '@emotion/styled/macro';\nimport { BillingPeriod } 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 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 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 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 perUnitQuantity = perUnitQuantityByFeature[featureId || ''] ?? 1;\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 tiersMode={tieredPrice?.tiersMode}\n handleChange={handlePerUnitQuantityChange}\n value={perUnitQuantity}\n />\n ) : null}\n </>\n </PlanPriceContainer>\n );\n};\n","import React, { useState } from 'react';\nimport { BillableFeature, BillingPeriod, Customer, PricingType, Subscription } 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 { CurrentSubscriptionOverride, 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 { getTiersPerUnitQuantities } 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 currentSubscriptionOverride?: CurrentSubscriptionOverride | 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 currentSubscriptionOverride,\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 getTiersPerUnitQuantities({\n plan,\n billingPeriod,\n currentSubscription,\n currentSubscriptionOverride,\n selectDefaultTierIndex,\n }),\n );\n\n const onPlanButtonClick = (intentionType: SubscribeIntentionType) => {\n const perUnitBillableFeatures: BillableFeature[] = Object.keys(perUnitQuantityByFeature).map((featureId) => ({\n featureId,\n quantity: perUnitQuantityByFeature[featureId],\n }));\n\n return onPlanSelected(intentionType, 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 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 currentSubscriptionOverride={currentSubscriptionOverride}\n billingPeriod={billingPeriod}\n isCustomerOnTrial={isCustomerOnTrial}\n onPlanSelected={onPlanButtonClick}\n paywallLocale={paywallLocale}\n withTrialLeftRow={withTrialLeftRow}\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 { calculateTierPrice } 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 calculateTierPrice(tieredPrice, 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 CurrentSubscriptionOverride,\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 { getTiersPerUnitQuantities } 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 currentSubscriptionOverride?: CurrentSubscriptionOverride | 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 currentSubscriptionOverride,\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 = getTiersPerUnitQuantities({\n plan,\n billingPeriod: selectedBillingPeriod,\n currentSubscription,\n currentSubscriptionOverride,\n });\n return Object.values(tiers).length > 0;\n })\n );\n }, [selectedBillingPeriod, currentSubscription, currentSubscriptionOverride, 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 currentSubscriptionOverride={currentSubscriptionOverride}\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 { 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, customCss, 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 customCss: customCss || undefined,\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, customCss } = 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 customCss: customCss || undefined,\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 { CurrentSubscriptionOverride, CurrentSubscriptionOverrideFn, 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 currentSubscriptionOverride: CurrentSubscriptionOverride | null | undefined;\n isCustomerOnTrial: boolean;\n plans: PaywallPlan[];\n paywallConfiguration?: DeepPartial<StiggTheme>;\n};\n\nexport function mapPaywallData(\n paywall: Paywall | null,\n showOnlyEligiblePlans?: boolean,\n currentSubscriptionOverrideFn?: CurrentSubscriptionOverrideFn,\n): PaywallData {\n const { plans, currency, configuration, customer, activeSubscriptions, paywallCalculatedPricePoints } = paywall || {};\n const { currentSubscription, currentPlan, isCustomerOnTrial, trialDaysLeft } =\n getCustomerSubscriptionDetails(activeSubscriptions);\n\n const currentSubscriptionOverride = currentSubscriptionOverrideFn?.({ currentSubscription });\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 = currentSubscriptionOverride?.planId\n ? currentSubscriptionOverride?.planId === plan.id\n : 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 currentSubscriptionOverride,\n isCustomerOnTrial,\n plans: paywallPlans,\n paywallConfiguration,\n };\n}\n","import React, { useEffect, useState, PropsWithChildren, useRef } from 'react';\nimport * as StiggJs from '@stigg/js-client-sdk';\nimport Stigg, { ClientConfiguration, EntitlementsFallback } from '@stigg/js-client-sdk';\nimport { SkeletonTheme } from 'react-loading-skeleton';\nimport { CustomizedTheme } from '../theme/Theme';\nimport logger from '../services/logger';\nimport { name as CLIENT_NAME, version as CLIENT_VERSION } from '../../package.json';\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 offline?: boolean;\n cacheTtlMs?: number;\n /** @deprecated not longer in use */\n useEntitlementPolling?: boolean;\n /** @deprecated not longer in use */\n entitlementPollingInterval?: number;\n stiggClient?: StiggJs.StiggClient;\n clientName?: string;\n clientVersion?: string;\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 cacheTtlMs,\n useEntitlementPolling,\n entitlementPollingInterval,\n entitlementsFallback,\n stiggClient,\n children,\n offline,\n clientName = CLIENT_NAME,\n clientVersion = CLIENT_VERSION,\n}) => {\n const currentApiKey = useRef(apiKey);\n const initializeParams: ClientConfiguration = {\n apiKey,\n customerId,\n customerToken,\n resourceId,\n baseUri,\n baseEdgeUri,\n enableEdge,\n entitlementsFallback,\n cacheTtlMs,\n useEntitlementPolling,\n entitlementPollingInterval,\n clientName,\n clientVersion,\n offline,\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","import { useContext } from 'react';\nimport { StiggContext, StiggContextValue } from '../components/StiggProvider';\n\nexport function useStiggContext(options?: { optional?: false }): StiggContextValue;\nexport function useStiggContext(options: { optional: true }): StiggContextValue | null;\nexport function useStiggContext(options?: { optional?: boolean }): StiggContextValue | null {\n const { optional } = options || {};\n const ctx = useContext(StiggContext);\n if (!ctx && !optional) {\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, Paywall } from '@stigg/js-client-sdk';\nimport { useEffect, useState } from 'react';\nimport logger from '../../../services/logger';\nimport { CurrentSubscriptionOverrideFn, PaywallData } from '../types';\nimport { computeBillingPeriods } from '../utils/computeDefaultBillingPeriod';\nimport { mapPaywallData } from '../utils/mapPaywallData';\nimport { useStiggContext } from '../../../hooks/useStiggContext';\n\ntype UseLoadPaywallDataProps = {\n productId?: string;\n resourceId?: string;\n showOnlyEligiblePlans?: boolean;\n billingCountryCode?: string;\n preferredBillingPeriod?: BillingPeriod;\n currentSubscriptionOverrideFn?: CurrentSubscriptionOverrideFn;\n};\n\nexport function useLoadPaywallData({\n productId,\n resourceId,\n showOnlyEligiblePlans,\n billingCountryCode,\n preferredBillingPeriod,\n currentSubscriptionOverrideFn,\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, currentSubscriptionOverrideFn);\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';\n\nimport { DeepPartial } from '../types';\nimport { Fonts } from './Fonts';\nimport { getResolvedTheme } from './getResolvedTheme';\nimport { StiggTheme } from './types';\nimport { useStiggContext } from '../hooks/useStiggContext';\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 '../../../hooks/useStiggContext';\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 {\n ShouldHidePlanFn,\n OnPlanSelectedCallbackFn,\n SelectDefaultTierIndexFn,\n CurrentSubscriptionOverrideFn,\n} 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 currentSubscriptionOverride?: CurrentSubscriptionOverrideFn;\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 currentSubscriptionOverride: currentSubscriptionOverrideFn,\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 currentSubscriptionOverride,\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 currentSubscriptionOverrideFn,\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 currentSubscriptionOverride={currentSubscriptionOverride}\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 type FilterEntitlementsFn = (entitlements: CustomerPortalEntitlement[]) => CustomerPortalEntitlement[];\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","export const breakpoints = {\n xs: 320,\n sm: 640,\n md: 768,\n lg: 1024,\n xl: 1280,\n xxl: 1536,\n} as const;\n\nexport type Breakpoints = typeof breakpoints;\n\nexport type Breakpoint = keyof Breakpoints;\n\nexport const mqMinWidth = (breakpoint: Breakpoint) => `(min-width: ${breakpoints[breakpoint]}px)`;\n\nexport const mq = Object.keys(breakpoints).reduce(\n (obj, breakpoint) => ({ ...obj, [breakpoint]: `@media ${mqMinWidth(breakpoint as Breakpoint)}` }),\n {} as Record<Breakpoint, string>,\n);\n","import { useMediaQuery as useMediaQueryMui } from '@mui/material';\nimport { Breakpoint, mqMinWidth } from '../common/mediaQuery';\n\nexport function useIsScreenWiderThan(breakpoint: Breakpoint) {\n return useMediaQueryMui(mqMinWidth(breakpoint));\n}\n","import styled from '@emotion/styled/macro';\nimport React from 'react';\nimport Skeleton from 'react-loading-skeleton';\nimport { useIsScreenWiderThan } from '../../hooks/useIsScreenWiderThan';\n\nconst SkeletonLayout = styled.div`\n display: flex;\n justify-content: space-between;\n flex-wrap: wrap;\n`;\n\nconst SkeletonLayoutLeft = styled.div`\n display: flex;\n flex-direction: column;\n gap: 32px;\n`;\n\nexport function SubscriptionOverviewLoader() {\n const isScreenWiderThanMd = useIsScreenWiderThan('md');\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={isScreenWiderThanMd ? 295 : 260} 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';\nimport { mq } from '../../common/mediaQuery';\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\n padding: 16px;\n ${mq.sm} {\n padding: 32px;\n }\n ${mq.md} {\n padding: 48px;\n }\n ${mq.lg} {\n padding: 64px;\n }\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.usagePeriodEnd) {\n return null;\n }\n\n const calculateResetDiff = (unit: 'days' | 'hours' | 'minutes') => {\n return moment.utc(entitlement.usagePeriodEnd).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 blockSize?: number | null;\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 blockSize,\n entitlement,\n feature,\n hideChargePrice,\n onBuyMore,\n onManageSubscription,\n canUpgradeSubscription,\n hasCustomSubscription,\n}: UsageBasedChargeProps) {\n return (\n <div\n className={`stigg-charge-list-item stigg-charge-list-item-${entitlement.feature!.refId}`}\n 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 {blockSize ? `${blockSize} ` : ''}\n {blockSize ? feature.featureUnitsPlural : 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, blockSize, 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 blockSize={blockSize}\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\n className=\"stigg-overview-layout\"\n style={{ display: 'flex', alignItems: 'flex-start', gap: 64, flexWrap: 'wrap' }}>\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 flex-wrap: wrap;\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';\nimport { useIsScreenWiderThan } from '../../hooks/useIsScreenWiderThan';\n\nexport const EMPTY_CHAR = '-';\n\nexport function PaymentDetailsSection() {\n const { customerPortal, isLoading, textOverrides, theme } = useCustomerPortalContext();\n const isScreenWiderThanMd = useIsScreenWiderThan('md');\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\n key=\"information-loading-data-divider\"\n orientation=\"vertical\"\n style={{ minHeight: 93, display: isScreenWiderThanMd ? 'block' : 'none' }}\n />,\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\n key=\"information-billing-data-divider\"\n orientation=\"vertical\"\n style={{ minHeight: 93, display: isScreenWiderThanMd ? 'block' : 'none' }}\n />,\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: isScreenWiderThanMd ? 64 : 32, flexWrap: 'wrap' }}>\n {items}\n </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.usagePeriodEnd ? (\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';\nimport { useIsScreenWiderThan } from '../../hooks/useIsScreenWiderThan';\n\nexport const Footer = styled.div`\n margin-top: 32px;\n`;\n\nexport function CustomerUsageLoader() {\n const isMdScreen = useIsScreenWiderThan('md');\n return (\n <Grid container spacing={4} className=\"stigg-subscription-usage-skeleton-layout\" sx={{ flexWrap: 'wrap' }}>\n {range(6).map((item) => (\n <Grid key={item} item xs={isMdScreen ? 4 : 12}>\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, { useState } 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 { FilterEntitlementsFn, OnBuyMoreCallbackFn } from '../types';\nimport { OnManageClick } from '../CustomerPortalContainer';\nimport { useIsScreenWiderThan } from '../../hooks/useIsScreenWiderThan';\n\nconst MAX_BOXES = 6;\n\nexport type CustomerUsageDataProps = {\n onManageSubscription?: OnManageClick;\n onBuyMore?: OnBuyMoreCallbackFn;\n filterEntitlements?: FilterEntitlementsFn;\n};\n\nexport function CustomerUsageData({ onManageSubscription, onBuyMore, filterEntitlements }: CustomerUsageDataProps) {\n const [showAll, setShowAll] = useState(false);\n const isMdScreen = useIsScreenWiderThan('md');\n\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 const filteredEntitlements = filterEntitlements ? filterEntitlements(sortedEntitlements) : sortedEntitlements;\n\n // 4 -> 3 per row, 6 -> 2 per row\n const xs = isMdScreen ? (filteredEntitlements.length > 2 ? 4 : 6) : 12;\n\n const entitlementsToShow = showAll ? filteredEntitlements : filteredEntitlements.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\n className={`stigg-entitlement-usage-${entitlement.feature!.refId}`}\n key={entitlement.feature!.refId}\n item\n 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 {filteredEntitlements.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 filterEntitlements,\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 && (\n <CustomerUsageData\n onManageSubscription={onManageClick}\n onBuyMore={onBuyMore}\n filterEntitlements={filterEntitlements}\n />\n )}\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 { FilterEntitlementsFn, 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 filterEntitlements?: FilterEntitlementsFn;\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 { MockCheckoutStateCallback } from '../types';\nimport { useStiggContext } from '../../../hooks/useStiggContext';\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 isWidgetWatermarkEnabled: stigg.isWidgetWatermarkEnabled,\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 { Plan } from '@stigg/js-client-sdk';\nimport { BillingPeriod } from '@stigg/api-client-js/src/generated/sdk';\n\nexport const hasMonthlyPrices = (plan?: Plan) =>\n !!plan?.pricePoints.some((pricePoint) => pricePoint.billingPeriod === BillingPeriod.Monthly);\n\nexport const hasAnnualPrices = (plan?: Plan) =>\n !!plan?.pricePoints.some((pricePoint) => pricePoint.billingPeriod === BillingPeriod.Annually);\n\nexport const hasMultipleBillingPeriods = (plan?: Plan) => hasMonthlyPrices(plan) && hasAnnualPrices(plan);\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';\nimport { hasAnnualPrices, hasMonthlyPrices } from '../../utils/planPrices';\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 hasMonthlyPlan = hasMonthlyPrices(plan);\n const hasAnnualPlan = hasAnnualPrices(plan);\n\n if (preferredBillingPeriod) {\n const billingPeriod = getBillingPeriod(preferredBillingPeriod, hasMonthlyPlan, hasAnnualPlan);\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(activeSubscription?.prices[0].billingPeriod, hasMonthlyPlan, hasAnnualPlan);\n if (billingPeriod) {\n return billingPeriod;\n }\n }\n\n return hasAnnualPlan ? 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 { BillableFeatureInput } from '@stigg/api-client-js/src/generated/sdk';\nimport { Addon, BillableFeature, BillingPeriod, CheckoutStatePlan } from '@stigg/js-client-sdk';\nimport { useCheckoutContext } from '../CheckoutProvider';\nimport { CheckoutSteps } from '../configurations/steps';\nimport { hasMultipleBillingPeriods } from '../../utils/planPrices';\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\ntype GetProgressBarInitialStateProps = {\n isLoading: boolean;\n skipCheckoutSteps: CheckoutSteps[];\n plan?: CheckoutStatePlan;\n availableAddons?: Addon[];\n availableCharges: BillableFeatureInput[];\n preferredBillingPeriod?: BillingPeriod;\n preconfiguredBillableFeatures: BillableFeature[];\n};\n\nconst canSkipPlanStep = (\n plan: CheckoutStatePlan,\n availableCharges: BillableFeatureInput[],\n preconfiguredBillableFeatures: BillableFeature[],\n preferredBillingPeriod?: BillingPeriod,\n) => {\n // if multiple billing periods are available, a preferred billing period must be selected\n if (hasMultipleBillingPeriods(plan) && !preferredBillingPeriod) {\n return false;\n }\n\n const availableChargesIds = availableCharges.map((charge) => charge.featureId);\n const preconfiguredChargesIds = preconfiguredBillableFeatures.map((charge) => charge.featureId);\n\n // if there are available charges, they must be preconfigured\n if (\n availableChargesIds.length !== preconfiguredChargesIds.length ||\n !availableChargesIds.every((charge) => preconfiguredChargesIds.includes(charge))\n ) {\n return false;\n }\n\n return true;\n};\n\nexport function getProgressBarInitialState({\n isLoading,\n skipCheckoutSteps,\n plan,\n availableAddons,\n availableCharges,\n preferredBillingPeriod,\n preconfiguredBillableFeatures,\n}: GetProgressBarInitialStateProps) {\n if (isLoading || !plan) {\n return INITIAL_STATE;\n }\n\n const stepsToFilter: CheckoutStepKey[] = [];\n\n if (\n skipCheckoutSteps.includes('PLAN') &&\n canSkipPlanStep(plan, availableCharges, preconfiguredBillableFeatures, preferredBillingPeriod)\n ) {\n stepsToFilter.push(CheckoutStepKey.PLAN);\n }\n\n if (availableAddons?.length === 0 || skipCheckoutSteps.includes('ADDONS')) {\n stepsToFilter.push(CheckoutStepKey.ADDONS);\n }\n\n return { ...INITIAL_STATE, steps: CHECKOUT_STEPS.filter((step) => !stepsToFilter.includes(step.key)) };\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 { useCheckoutContext } from '../CheckoutProvider';\nimport { useCheckoutModel } from './useCheckoutModel';\nimport { SubscriptionState, useSubscriptionModel } from './useSubscriptionModel';\nimport { MockCheckoutPreviewCallback } from '../types';\nimport { useStiggContext } from '../../../hooks/useStiggContext';\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';\nimport { CheckoutSteps } from './configurations/steps';\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 isWidgetWatermarkEnabled: boolean;\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 skipCheckoutSteps?: CheckoutSteps[];\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 skipCheckoutSteps,\n}: {\n children: React.ReactNode;\n} & CheckoutProviderProps) {\n const { checkout, isLoading, isWidgetWatermarkEnabled } = useLoadCheckout({\n resourceId,\n planId,\n billingCountryCode,\n onMockCheckoutState,\n });\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 isLoading,\n skipCheckoutSteps: skipCheckoutSteps ?? [],\n plan: checkout?.plan,\n availableAddons: addonsStep.availableAddons,\n availableCharges: planStep.billableFeatures,\n preferredBillingPeriod,\n preconfiguredBillableFeatures: billableFeatures ?? [],\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 isWidgetWatermarkEnabled,\n };\n\n return initialState;\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [\n preferredBillingPeriod,\n billingCountryCode,\n checkout,\n isLoading,\n skipCheckoutSteps,\n billingInformation?.taxDetails?.taxPercentage,\n ]);\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';\nimport { mq } from '../common/mediaQuery';\n\nexport const CheckoutLayout = styled.div`\n margin: auto;\n min-height: 760px;\n max-width: 920px;\n display: flex;\n position: relative;\n flex-direction: column;\n align-items: center;\n\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\n padding: 16px 16px;\n ${mq.md} {\n padding: 32px;\n width: calc(100% - 64px);\n border-radius: 10px;\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 flex-direction: column;\n ${mq.md} {\n flex-direction: row;\n }\n`;\n\nexport const CheckoutPanel = styled(Box)`\n display: flex;\n flex-direction: column;\n gap: 0;\n flex: 2;\n\n width: 100%;\n ${mq.md} {\n width: auto;\n }\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, { useEffect, useRef } 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 { StyledIcon, StyledProgress, StyledStepButton } from './CheckoutProgressBar.style';\nimport { Icons } from '../../common/Icon';\nimport { Skeleton } from '../components/Skeletons.style';\nimport { useIsScreenWiderThan } from '../../hooks/useIsScreenWiderThan';\n\nexport const CheckoutProgressBar = () => {\n const { progressBarState, setActiveStep, currentStep } = useProgressBarModel();\n const { widgetState } = useCheckoutModel();\n const isScreenWiderThanMd = useIsScreenWiderThan('md');\n const containerRef = useRef<HTMLElement>();\n const { readOnly, isLoadingCheckoutData } = widgetState;\n const { activeStep, completedSteps, steps } = progressBarState || {};\n const progress = ((activeStep + 1) * 100) / steps.length;\n\n const [previousStep, setPreviousStep] = React.useState(currentStep);\n useEffect(() => {\n if (!isScreenWiderThanMd) {\n if (containerRef.current && currentStep !== previousStep) {\n containerRef.current.scrollIntoView({ behavior: 'smooth' });\n }\n }\n setPreviousStep(currentStep);\n }, [currentStep, isScreenWiderThanMd, previousStep, setPreviousStep]);\n\n if (progressBarState.steps.length === 1) {\n return null;\n }\n\n return (\n <Box className=\"stigg-checkout-progress-container\" sx={{ width: '100%', mb: 3 }} ref={containerRef}>\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\n key={key}\n item\n display=\"flex\"\n flexDirection=\"row\"\n flex={isScreenWiderThanMd ? 1 : 'auto'}\n 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, { useEffect, useRef } 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 const containerRef = useRef<HTMLDivElement>();\n useEffect(() => {\n if (containerRef.current) {\n containerRef.current.scrollIntoView({ behavior: 'smooth', block: 'center', inline: 'center' });\n }\n }, []);\n return (\n <CheckoutSuccessContainer className=\"stigg-checkout-success-container\" ref={containerRef}>\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 { Box } from '@mui/material';\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=\"body1\" style={{ marginTop: 14 }} className=\"stigg-checkout-summary-captions-remaining-credits\">\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=\"body1\" style={{ marginTop: 14 }} className=\"stigg-checkout-summary-captions-scheduled-updates\">\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 }} className=\"stigg-checkout-summary-captions-next-billing\">\n <WithSkeleton isLoading={isFetchingSubscriptionPreview} width=\"100%\">\n {text}\n </WithSkeleton>\n </Typography>\n );\n};\n\nexport function CheckoutCaptions(props: CheckoutCaptionProps) {\n return (\n <Box className=\"stigg-checkout-summary-captions\">\n <RemainingCreditsCaption {...props} />\n\n <ScheduledUpdatesCaption {...props} />\n\n <NextBillingCaption {...props} />\n </Box>\n );\n}\n","import { BillingModel, BillingPeriod, Currency, Price, TiersMode } from '@stigg/js-client-sdk';\nimport { currencyPriceFormatter } from '../../../utils/currencyUtils';\nimport { isBulkTiers, isQuantityInFirstTier } from '../../../utils/priceTierUtils';\nimport { numberFormatter } from '../../../utils/numberUtils';\n\nexport type GetPriceBreakdownStringProps = {\n totalAmount: number;\n quantity: number;\n tiersMode: Price['tiersMode'];\n tiers: Price['tiers'];\n currency: Currency;\n pricingModel: BillingModel;\n billingPeriod: BillingPeriod;\n blockSize?: number | null;\n priceAmount?: Price['amount'];\n};\n\nexport function formatPricePerUnit({\n quantity,\n totalAmount,\n pricingModel,\n billingPeriod,\n currency,\n blockSize,\n priceAmount,\n}: GetPriceBreakdownStringProps) {\n const isPerUnit = pricingModel === BillingModel.PerUnit;\n const aBlockSize = blockSize || 1;\n const featureUnits =\n quantity && (isPerUnit || quantity > 1) ? `${numberFormatter(quantity)} ${aBlockSize > 1 ? 'for' : 'x'} ` : '';\n const billingPeriodString = billingPeriod === BillingPeriod.Annually ? ' x 12 months' : '';\n\n const unitPrice = (priceAmount || totalAmount / quantity) / (billingPeriod === BillingPeriod.Annually ? 12 : 1);\n const formattedUnitPrice = currencyPriceFormatter({\n amount: unitPrice,\n currency,\n minimumFractionDigits: 2,\n });\n const formattedTotalPrice = currencyPriceFormatter({\n amount: totalAmount,\n currency,\n minimumFractionDigits: 2,\n });\n\n return `${featureUnits}${formattedUnitPrice}${billingPeriodString} ${\n billingPeriodString || featureUnits ? ` = ${formattedTotalPrice}` : ''\n }`;\n}\n\nexport function getPriceBreakdownString(params: GetPriceBreakdownStringProps) {\n const { totalAmount, quantity, tiersMode, tiers, currency } = params;\n if (isBulkTiers(tiers) || (tiersMode === TiersMode.Graduated && !isQuantityInFirstTier(tiers, quantity))) {\n const formattedTotalPrice = currencyPriceFormatter({\n amount: totalAmount,\n currency,\n minimumFractionDigits: 2,\n });\n return `${numberFormatter(quantity)} for ${formattedTotalPrice}`;\n }\n\n return formatPricePerUnit(params);\n}\n","import React from 'react';\nimport isNil from 'lodash/isNil';\nimport { Price, PriceTierFragment } from '@stigg/js-client-sdk';\nimport { Typography } from '../../../common/Typography';\nimport { calculateTierPriceGraduated } from '../../../utils/priceTierUtils';\nimport { formatPricePerUnit } from './getPriceBreakdownString';\nimport { LineItemContainer, LineItemRow } from './LineItems';\nimport { numberFormatter } from '../../../utils/numberUtils';\n\nfunction getLabel(tiers: PriceTierFragment[], index: number): string {\n const { unitPrice, upTo } = tiers[index];\n if (!unitPrice) {\n return '';\n }\n\n if (index === 0) {\n return `First ${upTo}`;\n }\n\n const previousTierUpTo = tiers[index - 1].upTo || 0;\n const startUnit = previousTierUpTo + 1;\n\n return isNil(upTo)\n ? `${numberFormatter(startUnit)} and above`\n : `Next ${numberFormatter(startUnit)} to ${numberFormatter(upTo)}`;\n}\n\nexport type GraduatedPriceBreakdownProps = {\n price: Price;\n unitQuantity: number;\n};\n\nexport function GraduatedPriceBreakdown({ price, unitQuantity }: GraduatedPriceBreakdownProps) {\n const tiers = price.tiers || [];\n\n const { breakdown } = calculateTierPriceGraduated(tiers, unitQuantity);\n\n if (breakdown.length === 1) {\n return null;\n }\n\n return (\n <>\n {breakdown.map(({ unitQuantity, amount }, index) => (\n <LineItemContainer>\n <LineItemRow key={index} style={{ alignItems: 'flex-start' }}>\n <Typography variant=\"body1\" color=\"tertiary\" style={{ whiteSpace: 'nowrap' }}>\n {getLabel(tiers, index)}\n </Typography>\n <Typography variant=\"body1\" color=\"tertiary\" style={{ whiteSpace: 'nowrap' }}>\n {formatPricePerUnit({\n quantity: unitQuantity,\n totalAmount: amount,\n currency: price.currency,\n pricingModel: price.pricingModel,\n billingPeriod: price.billingPeriod,\n tiers: price.tiers,\n tiersMode: price.tiersMode,\n blockSize: price.blockSize,\n priceAmount: price.amount,\n })}\n </Typography>\n </LineItemRow>\n </LineItemContainer>\n ))}\n </>\n );\n}\n","import { ChevronRight } from 'react-feather';\nimport styled from 'styled-components';\n\nexport const CollapsableSectionIcon = styled(ChevronRight)<{ $isOpen: boolean; $size?: number }>`\n height: ${({ $size = 24 }) => `${$size}px`};\n width: ${({ $size = 24 }) => `${$size}px`};\n transition: all 0.2s ease-in;\n ${({ $isOpen }) => $isOpen && `transform: rotate(90deg)`}\n`;\n","import React, { ReactNode, useState } from 'react';\nimport styled from '@emotion/styled/macro';\nimport Grid from '@mui/material/Grid';\nimport {\n BillingModel,\n Price,\n SubscriptionPreviewInvoice,\n SubscriptionPreviewV2,\n TiersMode,\n} from '@stigg/js-client-sdk';\nimport isEmpty from 'lodash/isEmpty';\nimport isNil from 'lodash/isNil';\nimport Link from '@mui/material/Link';\nimport { IconButton } from '@mui/material';\nimport Collapse from '@mui/material/Collapse';\nimport { Typography } from '../../../common/Typography';\nimport { currencyPriceFormatter } from '../../../utils/currencyUtils';\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';\nimport { getPriceBreakdownString } from './getPriceBreakdownString';\nimport { GraduatedPriceBreakdown } from './GraduatedPriceBreakdown';\nimport { CollapsableSectionIcon } from '../../../common/CollapsableSectionIcon';\nimport { calculateTierPrice } from '../../../utils/priceTierUtils';\nimport { useIsScreenWiderThan } from '../../../hooks/useIsScreenWiderThan';\nimport { mq } from '../../../common/mediaQuery';\n\nexport const LineItemContainer = styled.div`\n & + & {\n margin-top: 16px;\n }\n`;\n\nexport const NestedBreakdownContainer = styled.div`\n margin-top: 16px;\n margin-left: 16px;\n`;\n\nexport const LineItemRow = styled.div`\n display: flex;\n flex-direction: column;\n gap: 16px;\n\n ${mq.lg} {\n flex-direction: row;\n align-items: center;\n justify-content: space-between;\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 isScreenWiderThanLg = useIsScreenWiderThan('lg');\n const [isNestedBreakdownOpen, setIsNestedBreakdownOpen] = useState(false);\n const toggleNestedBreakdown = () => setIsNestedBreakdownOpen((prev) => !prev);\n\n const isPayAsYouGo = price.pricingModel === BillingModel.UsageBased;\n const totalAmount = price.isTieredPrice\n ? calculateTierPrice(price, quantity)\n : (price.amount || 0) * Math.ceil(quantity / (price.blockSize || 1));\n\n let nestedBreakdown: ReactNode;\n const shouldShowGraduatedPriceBreakdown =\n price.tiersMode === TiersMode.Graduated &&\n !!price.tiers &&\n !isEmpty(price.tiers) &&\n !isNil(price.tiers[0].upTo) &&\n quantity > price.tiers[0].upTo;\n\n if (shouldShowGraduatedPriceBreakdown) {\n nestedBreakdown = <GraduatedPriceBreakdown price={price} unitQuantity={quantity} />;\n }\n\n let title: ReactNode = (\n <Typography variant=\"body1\" color=\"secondary\">\n {label}\n </Typography>\n );\n\n if (nestedBreakdown) {\n title = (\n <Link onClick={toggleNestedBreakdown} underline=\"none\" style={{ cursor: 'pointer' }}>\n {title}\n </Link>\n );\n }\n\n return (\n <LineItemContainer className=\"stigg-checkout-summary-base-charges-container\">\n <LineItemRow style={{ alignItems: 'flex-start' }}>\n <Grid item display=\"flex\" gap={0.5} style={{ whiteSpace: isScreenWiderThanLg ? 'nowrap' : 'break-spaces' }}>\n {title}\n {nestedBreakdown && (\n <IconButton onClick={toggleNestedBreakdown} sx={{ padding: 0 }}>\n <CollapsableSectionIcon $isOpen={isNestedBreakdownOpen} $size={16} />\n </IconButton>\n )}\n </Grid>\n <Grid item display=\"flex\" gap={1} alignItems=\"center\">\n {isPayAsYouGo && <PayAsYouGoPriceTooltip checkoutLocalization={checkoutLocalization} />}\n <Typography\n variant=\"body1\"\n color=\"secondary\"\n style={{ whiteSpace: isScreenWiderThanLg ? 'nowrap' : 'break-spaces' }}>\n {getPriceBreakdownString({\n totalAmount,\n quantity,\n currency: price.currency,\n pricingModel: price.pricingModel,\n billingPeriod: price.billingPeriod,\n tiers: price.tiers,\n tiersMode: price.tiersMode,\n blockSize: price.blockSize,\n priceAmount: price.amount,\n })}\n {isPayAsYouGo && ' / unit'}\n </Typography>\n </Grid>\n </LineItemRow>\n {nestedBreakdown && (\n <Collapse in={isNestedBreakdownOpen}>\n <NestedBreakdownContainer>{nestedBreakdown}</NestedBreakdownContainer>\n </Collapse>\n )}\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';\nimport { mq } from '../../common/mediaQuery';\n\nexport const SummaryContainer = styled(Box)`\n width: 100%;\n max-width: 470px;\n flex: 1.5;\n`;\n\nexport const SummaryCard = styled(Paper)`\n background: ${({ theme }) => theme.stigg.palette.backgroundHighlight};\n padding: 16px;\n\n ${mq.md} {\n border-radius: 10px;\n }\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 isWidgetWatermarkEnabled,\n}: CheckoutContainerProps & { isFreeDowngrade: boolean; isWidgetWatermarkEnabled: 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\n className=\"stigg-checkout-summary-plan-title-container\"\n display=\"flex\"\n flexDirection=\"row\"\n alignItems=\"center\"\n 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 <Grid item className=\"stigg-checkout-summary-usage-charges-container\">\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 </Grid>\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={isWidgetWatermarkEnabled}\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 = ({ isWidgetWatermarkEnabled }: { isWidgetWatermarkEnabled: boolean }) => {\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={isWidgetWatermarkEnabled}\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';\nimport { mq } from '../../../common/mediaQuery';\n\nexport const CheckoutAddonsContainer = styled(Grid)`\n width: 100%;\n gap: 8px;\n`;\n\nexport const AddonListItemContainer = styled(Grid)`\n display: flex;\n flex-direction: column;\n gap: 16px;\n\n ${mq.md} {\n gap: 0;\n flex-direction: row;\n justify-content: space-between;\n height: 80px;\n align-items: center;\n }\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';\nimport { ON_WHEEL_BLUR } from '../../../utils/onWheelBlur';\nimport { useIsScreenWiderThan } from '../../../hooks/useIsScreenWiderThan';\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 isScreenWiderThanLg = useIsScreenWiderThan('lg');\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 sx={{ gap: '16px' }} container={!isScreenWiderThanLg}>\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 onWheel={ON_WHEEL_BLUR}\n sx={isScreenWiderThanLg ? { marginX: 2, width: 120 } : { flex: 1 }}\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 { css } from '@emotion/react';\nimport 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)<{ $hideBorders?: boolean }>`\n flex-direction: column;\n align-items: unset;\n ${({ $hideBorders }) =>\n $hideBorders &&\n css`\n border: none;\n padding: 0;\n `}\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 { 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 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 hasExistingPaymentMethod: boolean;\n} & Pick<CheckoutContainerProps, 'onBillingAddressChange' | 'collectPhoneNumber'>;\n\nfunction PaymentMethodLayout({ checked, text, subtitle, readOnly }: PaymentMethodLayoutProps) {\n return (\n <PaymentMethodLayoutContainer>\n <Radio checked={checked} disabled={readOnly} />\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 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 hasExistingPaymentMethod,\n checked,\n onSelect,\n readOnly,\n checkoutLocalization,\n onBillingAddressChange,\n collectPhoneNumber,\n}: NewPaymentMethodProps) {\n return (\n <NewPaymentMethodContainer item $hideBorders={!hasExistingPaymentMethod} onClick={onSelect} $disabled={readOnly}>\n {hasExistingPaymentMethod && (\n <PaymentMethodLayout\n checked={checked}\n readOnly={readOnly}\n text={<Typography variant=\"h6\">{checkoutLocalization.newPaymentMethodText}</Typography>}\n />\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 hasExistingPaymentMethod={!!customer?.paymentMethodDetails}\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 } 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 { getValidPriceQuantity } from '../../../utils/priceUtils';\nimport { getFeatureDisplayNameText } from '../../../utils/getFeatureName';\nimport { ON_WHEEL_BLUR } from '../../../utils/onWheelBlur';\nimport { mq } from '../../../common/mediaQuery';\nimport { useIsScreenWiderThan } from '../../../hooks/useIsScreenWiderThan';\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 min-height: 60px;\n margin-top: 16px;\n flex-direction: column;\n\n ${mq.md} {\n flex-direction: row;\n align-items: center;\n justify-content: space-between;\n }\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 isScreenWiderThanMd = useIsScreenWiderThan('md');\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 quantity = billableFeature?.quantity || 1;\n chargeRow = (\n <TiersSelectContainer\n componentId={`${featureId}-tiers`}\n tiers={charge.tiers}\n tiersMode={charge.tiersMode}\n value={quantity}\n handleChange={(quantity: number) => {\n setBillableFeature(featureId, quantity);\n }}\n width={120}\n />\n );\n } else {\n chargeRow = (\n <InputField\n sx={{ width: isScreenWiderThanMd ? 120 : '100%' }}\n id={`${featureId}-input`}\n type=\"number\"\n onWheel={ON_WHEEL_BLUR}\n error={!isValid}\n helperText={!isValid ? getValidationText(charge, billableFeature?.quantity) : undefined}\n FormHelperTextProps={{ sx: { margin: '4px' } }}\n value={billableFeature?.quantity ?? ''}\n onChange={handleQuantityChange}\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 <>\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 </>\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, isWidgetWatermarkEnabled }] = 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 isWidgetWatermarkEnabled={isWidgetWatermarkEnabled} />\n ) : (\n <CheckoutSummary\n disablePromotionCode={disablePromotionCode}\n disableSuccessAnimation={disableSuccessAnimation}\n onCheckout={onCheckout}\n onCheckoutCompleted={onCheckoutCompleted}\n isFreeDowngrade={isFreeDowngrade}\n onMockCheckoutPreview={onMockCheckoutPreview}\n isWidgetWatermarkEnabled={isWidgetWatermarkEnabled}\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 skipCheckoutSteps,\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 skipCheckoutSteps={skipCheckoutSteps}>\n <CheckoutContainer {...containerProps} />\n </CheckoutProvider>\n );\n};\n","import { Subscription } from '@stigg/js-client-sdk';\nimport { useEffect, useMemo, useState } from 'react';\nimport { useStiggContext } from '../../hooks/useStiggContext';\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","import { BooleanEntitlement, GetBooleanEntitlement, BOOLEAN_DEFAULT_FALLBACK_ENTITLEMENT } from '@stigg/js-client-sdk';\nimport { useStiggContext } from './useStiggContext';\n\nexport type TypedGetBooleanEntitlement<T> = Omit<GetBooleanEntitlement, 'featureId'> & {\n featureId: T;\n};\n\nexport function useBooleanEntitlement<T extends string>(params: TypedGetBooleanEntitlement<T>): BooleanEntitlement {\n const stiggContext = useStiggContext({ optional: true });\n const stigg = stiggContext?.stigg;\n\n if (!stigg) {\n return {\n ...BOOLEAN_DEFAULT_FALLBACK_ENTITLEMENT,\n ...params.options?.fallback,\n };\n }\n\n return stigg.getBooleanEntitlement(params);\n}\n","import { NumericEntitlement, GetNumericEntitlement, NUMERIC_DEFAULT_FALLBACK_ENTITLEMENT } from '@stigg/js-client-sdk';\nimport { useStiggContext } from './useStiggContext';\n\ntype TypedGetNumericEntitlement<T> = Omit<GetNumericEntitlement, 'featureId'> & {\n featureId: T;\n};\n\nexport function useNumericEntitlement<T extends string>(params: TypedGetNumericEntitlement<T>): NumericEntitlement {\n const stiggContext = useStiggContext({ optional: true });\n const stigg = stiggContext?.stigg;\n\n if (!stigg) {\n return {\n ...NUMERIC_DEFAULT_FALLBACK_ENTITLEMENT,\n ...params.options?.fallback,\n };\n }\n\n return stigg.getNumericEntitlement(params);\n}\n","import { GetMeteredEntitlement, METERED_DEFAULT_FALLBACK_ENTITLEMENT, MeteredEntitlement } from '@stigg/js-client-sdk';\nimport { useStiggContext } from './useStiggContext';\n\ntype TypedGetMeteredEntitlement<T> = Omit<GetMeteredEntitlement, 'featureId'> & {\n featureId: T;\n};\n\nexport function useMeteredEntitlement<T extends string>(params: TypedGetMeteredEntitlement<T>): MeteredEntitlement {\n const stiggContext = useStiggContext({ optional: true });\n const stigg = stiggContext?.stigg;\n\n if (!stigg) {\n return {\n ...METERED_DEFAULT_FALLBACK_ENTITLEMENT,\n ...params.options?.fallback,\n };\n }\n\n return stigg.getMeteredEntitlement(params);\n}\n","import { useEffect, useState } from 'react';\n\nexport type FetchResult<T> = {\n isLoaded: boolean;\n error: Error | null;\n data: T | null;\n};\n\nexport function useFetch<T>({ func }: { func: () => Promise<T> }): FetchResult<T> {\n const [isLoaded, setIsLoaded] = useState(false);\n const [error, setError] = useState<Error | null>(null);\n const [data, setData] = useState<T | null>(null);\n\n useEffect(() => {\n const fetchData = async () => {\n setIsLoaded(true);\n try {\n const result = await func();\n setData(result);\n } catch (error) {\n setError(error as Error);\n } finally {\n setIsLoaded(false);\n }\n };\n\n void fetchData();\n }, [func]);\n\n return { isLoaded, error, data };\n}\n","import { useMemo, useCallback } from 'react';\nimport { GetActiveSubscriptions } from '@stigg/js-client-sdk';\nimport { useStiggContext } from './useStiggContext';\nimport { useFetch } from './useFetch';\n\nexport function useActiveSubscriptions(params?: GetActiveSubscriptions) {\n const stiggContext = useStiggContext({ optional: true });\n const stigg = stiggContext?.stigg;\n\n const func = useCallback(() => (stigg ? stigg.getActiveSubscriptions(params) : Promise.resolve([])), [params, stigg]);\n const { data, error, isLoaded } = useFetch({ func });\n\n return useMemo(\n () => ({\n activeSubscriptions: data,\n isLoaded,\n error,\n }),\n [data, error, isLoaded],\n );\n}\n","import { useMemo, useCallback } from 'react';\nimport { GetPaywall } from '@stigg/js-client-sdk';\nimport { useStiggContext } from './useStiggContext';\nimport { useFetch } from './useFetch';\n\nexport function usePaywall(params?: GetPaywall) {\n const stiggContext = useStiggContext({ optional: true });\n const stigg = stiggContext?.stigg;\n\n const func = useCallback(() => (stigg ? stigg.getPaywall(params) : Promise.resolve(null)), [params, stigg]);\n const { data, error, isLoaded } = useFetch({ func });\n\n return useMemo(\n () => ({\n paywall: data,\n isLoaded,\n error,\n }),\n [data, error, isLoaded],\n );\n}\n","import { useMemo, useCallback } from 'react';\nimport { GetCustomerPortal } from '@stigg/js-client-sdk';\nimport { useStiggContext } from './useStiggContext';\nimport { useFetch } from './useFetch';\n\nexport function useCustomerPortal(params?: GetCustomerPortal) {\n const stiggContext = useStiggContext({ optional: true });\n const stigg = stiggContext?.stigg;\n\n const func = useCallback(() => (stigg ? stigg.getCustomerPortal(params) : Promise.resolve(null)), [params, stigg]);\n const { data, error, isLoaded } = useFetch({ func });\n\n return useMemo(\n () => ({\n customerPortal: data,\n isLoaded,\n error,\n }),\n [data, error, isLoaded],\n );\n}\n","import React from 'react';\nimport { GetBooleanEntitlement } from '@stigg/js-client-sdk';\nimport { useBooleanEntitlement } from '../hooks';\n\ntype BooleanEntitlementGuardProps = GetBooleanEntitlement & {\n noAccessComponent?: React.ReactNode;\n children: React.ReactElement;\n};\n\nexport function BooleanEntitlementGuard({\n noAccessComponent,\n children,\n ...rest\n}: BooleanEntitlementGuardProps): JSX.Element {\n const { hasAccess } = useBooleanEntitlement(rest);\n\n if (!hasAccess) {\n return <>{noAccessComponent ?? null}</>;\n }\n\n return children;\n}\n","import React from 'react';\nimport { GetNumericEntitlement } from '@stigg/js-client-sdk';\nimport { useNumericEntitlement } from '../hooks';\n\ntype NumericEntitlementGuardProps = GetNumericEntitlement & {\n noAccessComponent?: React.ReactNode;\n children: React.ReactElement;\n};\n\nexport function NumericEntitlementGuard({\n noAccessComponent,\n children,\n ...rest\n}: NumericEntitlementGuardProps): JSX.Element {\n const { hasAccess } = useNumericEntitlement(rest);\n\n if (!hasAccess) {\n return <>{noAccessComponent ?? null}</>;\n }\n\n return children;\n}\n","import React from 'react';\nimport { GetMeteredEntitlement } from '@stigg/js-client-sdk';\nimport { useMeteredEntitlement } from '../hooks';\n\ntype MeteredEntitlementGuardProps = GetMeteredEntitlement & {\n noAccessComponent?: React.ReactNode;\n children: React.ReactElement;\n};\n\nexport function MeteredEntitlementGuard({\n noAccessComponent,\n children,\n ...rest\n}: MeteredEntitlementGuardProps): JSX.Element {\n const { hasAccess } = useMeteredEntitlement(rest);\n\n if (!hasAccess) {\n return <>{noAccessComponent ?? null}</>;\n }\n\n return children;\n}\n"],"names":["_extends","React.createElement","calculateUnitQuantityText","minUnitQuantity","maxUnitQuantity","unitsPlural","unitsText","formatNumber","usageLimit","toLocaleString","maximumFractionDigits","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","getResetPeriodText","resetPeriod","EntitlementResetPeriod","Day","Hour","Week","Month","Year","getEntitlementDisplay","hasUnlimitedUsage","feature","isCustom","unitBasedEntitlement","resetPeriodSuffix","featureUnits","units","displayName","EntitlementRow","displayNameOverride","restProps","PlanEntitlementsContainer","getTitle","plan","paywallLocale","hasFeatures","entitlementsTitle","title","basePlan","PlanEntitlements","billingPeriod","prices","pricePoints","filter","price","unitBasedEntitlements","map","key","visibleEntitlements","entitlements","entitlement","hiddenFromWidgets","includes","WidgetType","Paywall","length","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","tertiary","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","ascendingTiers","sort","a","b","upTo","tier","getAmount","amount","selectedBillingPeriod","shouldShowMonthlyPriceAmount","Annually","calculateTierPriceVolume","currentTier","perUnitQuantity","unitPrice","flatPrice","calculateTierPriceGraduated","remainingQuantity","prevUpTo","currentTierIndex","breakdown","push","unitsInTier","consumed","Math","min","total","sum","calculateTierPrice","tiersMode","TiersMode","Volume","Graduated","hasTierWithUnitPrice","some","isBulkTiers","every","isQuantityInFirstTier","getTiersPerUnitQuantities","currentSubscription","currentSubscriptionOverride","selectDefaultTierIndex","planTierPrices","isTieredPrice","selectedDefaultTierIndex","tieredPrice","subscriptionPrice","pricingModel","BillingModel","PerUnit","planId","billableFeature","billableFeatures","result","PriceTierComparison","compareSelectedTierToCurrentTier","perUnitQuantityByFeature","Equal","currentTierPrice","isCurrentPlanOverride","oldQuantity","newQuantity","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","removeTrailingZero","currencyString","currencySymbol","getSymbolFromCurrency","formattedPrice","Intl","NumberFormat","trailingZeroDisplay","currencyDisplay","replace","numberFormatter","number","getPaidPriceText","planPrices","paywallCalculatedPrice","priceAmount","isSinglePrice","priceNumber","tierUnits","pricePeriod","Monthly","unit","formattedUnits","blockSize","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","ON_WHEEL_BLUR","e","target","blur","VolumePerUnitInput","value","handleChange","type","onWheel","fullWidth","minHeight","InputProps","endAdornment","InputAdornment","position","onChange","event","Number","TierSelect","Select","TierInput","OutlinedInput","VolumeBulkSelect","componentId","input","MenuProps","MenuListProps","disablePadding","PaperProps","MenuItem","lineHeight","TiersSelectLayout","TiersSelectContainer","EMPTY_CHAR","PlanPriceContainer","UnitSpan","PriceSpan","PriceBillingPeriod","hasMonthlyPrice","hasAnnuallyPrice","hasPrice","content","toLowerCase","PlanPrice","showStartingAt","withUnitPriceRow","withStartingAtRow","withTiersRow","setPerUnitQuantityByFeature","planPrice","undefined","handlePerUnitQuantityChange","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","onPlanButtonClick","perUnitBillableFeatures","Object","keys","classNames","description","PickerContainer","PeriodText","StyledSwitch","Switch","DiscountRate","discount","BillingPeriodPicker","discountRate","onBillingPeriodChanged","availableBillingPeriods","isMonthlyBillingPeriod","uncheckedIcon","checkedIcon","isAnnuallySelected","checked","handleDiameter","calculateDiscountRate","monthlyPrice","annuallyPrice","annuallyPerMonthPrice","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","subscription","useMemo","values","isWidgetWatermarkEnabled","LoggerService","message","params","console","log","object","debug","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","currentSubscriptionOverrideFn","scheduledUpdates","downgradeSchedule","billingChangedSchedule","paywallPlans","sortBy","order","eligibleForProductTrial","eligibleForTrial","productTrial","productId","product","currentBillingPeriod","downgradeVariables","billingChangedVariables","isPlanHasBillingPeriodPrice","refId","defaultTrialConfig","eligible","isUpcomingPlan","currentPlanOrder","StiggContext","createContext","DEFAULT_LOCALE","StiggProvider","apiKey","baseUri","baseEdgeUri","enableEdge","customerId","customerToken","resourceId","cacheTtlMs","useEntitlementPolling","entitlementPollingInterval","entitlementsFallback","stiggClient","offline","clientName","CLIENT_NAME","clientVersion","CLIENT_VERSION","currentApiKey","useRef","initializeParams","Stigg","initialize","lazyLoad","isInitialized","refreshData","setContext","ctx","customerPortalUpdatedAt","Date","refresh","useEffect","isMounted","safeSetContext","setContextFunc","onEntitlementsUpdated","updatedAt","setStiggInstance","removeListener","addListener","loadStiggClient","current","logger","waitForInitialization","clearCustomer","setCustomerId","Provider","SkeletonTheme","baseColor","highlightColor","optional","useContext","Error","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","ListBox","$backgroundColor","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","breakpoints","xs","sm","md","lg","xl","xxl","mqMinWidth","breakpoint","mq","obj","useIsScreenWiderThan","useMediaQueryMui","SkeletonLayout","SkeletonLayoutLeft","SubscriptionOverviewLoader","isScreenWiderThanMd","SubscriptionScheduledUpdateDowngradeRow","scheduleUpdate","ArrowDown","SubscriptionScheduledUpdateBillingPeriodChangeRow","nextBillingPeriod","SubscriptionScheduledUpdateUnitQuantityChangeRow","newQuantityUnits","flexWrap","SubscriptionScheduledUpdateRow","SubscriptionScheduleUpdateAlertContainer","StyledRestoreIcon","Restore","MultipleScheduledUpdates","justifyContent","SingleScheduledUpdate","SubscriptionScheduledUpdatesAlert","onCancelScheduledUpdates","stiggTheme","isSingleScheduledUpdate","marginRight","SectionContainer","NextEstimatedBill","rangeEnd","NoUpcomingBilling","ContactCustomerSupportLayout","ContactSupportButton","ContactCustomerSupport","onContactSupport","linkLabel","contactSupportText","Container","UpcomingBilling","noUsageBasedPrices","billingModel","scheduledDowngradeToFree","planName","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","floor","getUsageProgressStatus","getResetUsageText","usagePeriodEnd","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","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","isMdScreen","spacing","range","MAX_BOXES","CustomerUsageData","filterEntitlements","showAll","setShowAll","meteredEntitlements","meterType","MeterType","Fluctuating","Incremental","subscriptionPriceByFeature","priceEntitlements","otherEntitlements","sortedEntitlements","filteredEntitlements","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","hasMonthlyPrices","hasAnnualPrices","hasMultipleBillingPeriods","getBillingPeriod","isInAdvanceCommitmentCharge","getBillableFeatures","preconfiguredBillableFeatures","preconfBillableFeaturesByFeatureId","quantityByFeatureId","charge","preconfiguredQuantity","resolveBillingPeriod","hasMonthlyPlan","hasAnnualPlan","isUpdate","getPlanStepInitialState","usePlanState","planStep","useSetBillableFeature","useSetBillingPeriod","usePlanStepModel","setBillingPeriod","setBillableFeature","CheckoutStepKey","CHECKOUT_STEPS","PLAN","ADDONS","PAYMENT","INITIAL_STATE","activeStep","completedSteps","steps","canSkipPlanStep","availableCharges","availableChargesIds","preconfiguredChargesIds","getProgressBarInitialState","skipCheckoutSteps","stepsToFilter","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","containerRef","progress","previousStep","setPreviousStep","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","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","block","inline","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","formatPricePerUnit","totalAmount","isPerUnit","aBlockSize","billingPeriodString","formattedUnitPrice","formattedTotalPrice","getPriceBreakdownString","getLabel","previousTierUpTo","startUnit","GraduatedPriceBreakdown","LineItemContainer","LineItemRow","CollapsableSectionIcon","ChevronRight","$size","$isOpen","NestedBreakdownContainer","PayAsYouGoPriceTooltip","BilledPriceLineItem","isScreenWiderThanLg","isNestedBreakdownOpen","setIsNestedBreakdownOpen","toggleNestedBreakdown","prev","isPayAsYouGo","ceil","nestedBreakdown","shouldShowGraduatedPriceBreakdown","underline","IconButton","Collapse","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","$hideBorders","PaymentMethodLayoutContainer","PaymentMethodTextContainer","PaymentMethodLayout","subtitle","Radio","ExistingPaymentMethod","onSelect","last4Digits","expirationMonth","expirationYear","NewPaymentMethod","hasExistingPaymentMethod","PaymentContainer","PaymentStep","handleOnSelect","openNewPaymentMethod","Alert","severity","ChangePlanButton","allowChangePlan","onChangePlan","opacity","formatBillingPeriod","BillingPeriodPickerContainer","BillingPeriodButton","$isOnlyBillingPeriod","$isActive","BillingPeriodOptions","BillingPeriodPrice","DiscountChip","Chip","BillingPeriodOption","isOnlyBillingPeriod","isActive","monthlyPrices","annualPrices","hasBothBillingPeriods","StyledPlanCharge","div","getValidationText","PlanCharge","onValidationChange","isBaseCharge","hasQuantityRestrictions","chargeRow","formattedAmount","CheckoutChargeList","planCharges","p","chargesValidation","setChargesValidation","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","useBooleanEntitlement","stiggContext","BOOLEAN_DEFAULT_FALLBACK_ENTITLEMENT","fallback","getBooleanEntitlement","useNumericEntitlement","NUMERIC_DEFAULT_FALLBACK_ENTITLEMENT","getNumericEntitlement","useMeteredEntitlement","METERED_DEFAULT_FALLBACK_ENTITLEMENT","getMeteredEntitlement","useFetch","func","isLoaded","setIsLoaded","setError","data","setData","fetchData","useActiveSubscriptions","getActiveSubscriptions","usePaywall","BooleanEntitlementGuard","noAccessComponent","hasAccess","NumericEntitlementGuard","MeteredEntitlementGuard"],"mappings":"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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACnFA,IAAMI,kBAAkB,GAAG,IAA3B;;AAEP,IAAMC,wBAAwB,gBAAG,QAAOvlB,GAAP;AAAA;AAAA;AAAA;AAAA;AAAA,EAAH,6CAGJ;AAAA,MAAGzxB,KAAH,QAAGA,KAAH;AAAA,SAAeyG,KAAK,CAACzG,KAAK,CAACE,KAAN,CAAYC,OAAZ,CAAoBgH,eAArB,CAAL,CAA2CF,KAA3C,CAAiD,CAAjD,EAAoDC,QAApD,EAAf;AAAA,CAHI,wDAOJ;AAAA,MAAGlH,KAAH,SAAGA,KAAH;AAAA,SAAeyG,KAAK,CAACzG,KAAK,CAACE,KAAN,CAAYC,OAAZ,CAAoBgH,eAArB,CAAL,CAA2CF,KAA3C,CAAiD,GAAjD,EAAsDC,QAAtD,EAAf;AAAA,CAPI,gHAkBR;AAAA,MAAGlH,KAAH,SAAGA,KAAH;AAAA,SAAeyG,KAAK,CAACzG,KAAK,CAACE,KAAN,CAAYC,OAAZ,CAAoBgH,eAArB,CAAL,CAA2CF,KAA3C,CAAiD,GAAjD,EAAsDC,QAAtD,EAAf;AAAA,CAlBQ,+IA6BhB;AAAA,MAAGlH,KAAH,SAAGA,KAAH;AAAA,SAAeA,KAAK,CAACE,KAAN,CAAYC,OAAZ,CAAoBC,OAAnC;AAAA,CA7BgB,06GAA9B;;AAiCA,IAAM62C,mBAAmB,gBAAG,QAAOv1C,UAAP;AAAA;AAAA;AAAA;AAAA;AAAA,EAAH;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAAzB;;AAiBA,IAAMw1C,YAAY,gBAAG,QAAOC,MAAP;AAAA;AAAA;AAAA;AAAA;AAAA,EAAH;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAAlB;;AAUA,SAAgBC;MAAkB7T,6BAAAA;AAChC,MAAMuM,YAAY,GAAGvoB,MAAM,EAA3B;AACAY,EAAAA,SAAS,CAAC;AACR,QAAI2nB,YAAY,CAACjnB,OAAjB,EAA0B;AACxBinB,MAAAA,YAAY,CAACjnB,OAAb,CAAqBoY,cAArB,CAAoC;AAAEC,QAAAA,QAAQ,EAAE,QAAZ;AAAsBmW,QAAAA,KAAK,EAAE,QAA7B;AAAuCC,QAAAA,MAAM,EAAE;AAA/C,OAApC;AACD;AACF,GAJQ,EAIN,EAJM,CAAT;AAKA,SACE50C,4BAAA,CAACs0C,wBAAD;AAA0Bv0C,IAAAA,SAAS,EAAC;AAAmCZ,IAAAA,GAAG,EAAEiuC;GAA5E,EACEptC,4BAAA,CAACw0C,YAAD;AAAcK,IAAAA,aAAa,EAAEA;AAAeC,IAAAA,IAAI,EAAE;AAAOC,IAAAA,QAAQ;GAAjE,CADF,EAEE/0C,4BAAA,CAACu0C,mBAAD;AAAqBp2C,IAAAA,OAAO,EAAC;AAAKoB,IAAAA,KAAK,EAAC;GAAxC,EACGshC,oBAAoB,CAACoH,OAArB,CAA6BiC,mBADhC,CAFF,CADF;AAQD;;AC5ED,IAAM8K,KAAK,GAAG,SAARA,KAAQ,CAACC,EAAD;AAAA,SAAgB,IAAIvkC,OAAJ,CAAY,UAACwkC,GAAD;AAAA,WAAStO,UAAU,CAACsO,GAAD,EAAMD,EAAN,CAAnB;AAAA,GAAZ,CAAhB;AAAA,CAAd;;AASA,SAAgBE;2BACdC;MAAAA,sCAAW;MACXC,kBAAAA;MACAC,2BAAAA;MACAC,iBAAAA;MACAC,+BAAAA;;AAEA,yBAAkBp3B,eAAe,EAAjC;AAAA,MAAQ5gB,KAAR,oBAAQA,KAAR;;AACA,6BAAgC6pC,mBAAmB,EAAnD;AAAA,MAAQN,mBAAR,wBAAQA,mBAAR;;AACA,MAAM0O,iBAAiB,GAAGvD,oBAAoB,EAA9C;;AACA,0BAA0D/Q,gBAAgB,EAA1E;AAAA,MAAQL,aAAR,qBAAQA,aAAR;AAAA,MAAuBF,WAAvB,qBAAuBA,WAAvB;AAAA,MAAoCQ,iBAApC,qBAAoCA,iBAApC;;AACA,cAA2DN,aAAa,IAAI,EAA5E;AAAA,MAAqBmR,uBAArB,SAAQT,WAAR;AAAA,MAA8CzjC,QAA9C,SAA8CA,QAA9C;;AACA,MAAM8kC,MAAM,GAAG6C,SAAS,EAAxB;AACA,MAAMlD,QAAQ,GAAGmD,WAAW,EAA5B;;AAEA,MAAMC,YAAY;AAAA,+DAAG,kBAAOjgC,CAAP;AAAA;AAAA;AAAA;AAAA;AAAA;AACnBA,cAAAA,CAAC,CAAC05B,cAAF;;AADmB,kBAGdoG,iBAHc;AAAA;AAAA;AAAA;;AAAA,gDAIV;AAAEnwC,gBAAAA,OAAO,EAAE,KAAX;AAAkBwgC,gBAAAA,YAAY,EAAE;AAAhC,eAJU;;AAAA;AAOfxgC,cAAAA,OAPe,GAOL,IAPK;AASfuwC,cAAAA,uBATe,GASW,KATX;AAYnBzU,cAAAA,iBAAiB,CAAC,IAAD,CAAjB;;AAZmB,oBAcf,CAACgU,QAAD,IAAarO,mBAdE;AAAA;AAAA;AAAA;;AAAA;AAAA,qBAekBmN,sBAAsB,CAAC;AAAE1B,gBAAAA,QAAQ,EAARA,QAAF;AAAYK,gBAAAA,MAAM,EAANA,MAAZ;AAAoBZ,gBAAAA,uBAAuB,EAAvBA;AAApB,eAAD,CAfxC;;AAAA;AAeX6D,cAAAA,oBAfW;;AAgBjB,kBAAI,CAACA,oBAAoB,CAACxwC,OAA1B,EAAmC;AACjCwgC,gBAAAA,YAAY,GAAGgQ,oBAAoB,CAAChQ,YAApC;AACAxgC,gBAAAA,OAAO,GAAG,KAAV;AACD,eAHD,MAGO;AACL8uC,gBAAAA,eAAe,GAAG0B,oBAAoB,CAAC1B,eAAvC;AACD;;AArBgB;AAwBb2B,cAAAA,cAxBa,gBAwB4BN,iBAxB5B;AAwB+CrB,gBAAAA,eAAe,EAAfA;AAxB/C;;AA0Bb4B,cAAAA,cA1Ba;AAAA,2EA0BI,iBAAOl3B,MAAP;AAAA;AAAA;AAAA;AAAA;AAAA;AACrB+2B,0BAAAA,uBAAuB,GAAG,IAA1B;AADqB;AAAA;AAAA,iCAIoBr4C,KAAK,CAACy4C,iBAAN,CAAwBn3B,MAAxB,CAJpB;;AAAA;AAIb8zB,0BAAAA,wBAJa;AAAA;AAAA,iCAMaD,sBAAsB,CAAC;AAAEC,4BAAAA,wBAAwB,EAAxBA,wBAAF;AAA4BC,4BAAAA,MAAM,EAANA;AAA5B,2BAAD,CANnC;;AAAA;AAMbqD,0BAAAA,iBANa;AAAA,2DAQZ;AACL5wC,4BAAAA,OAAO,EAAE,CAAC4wC,iBAAiB,CAACpQ,YADvB;AAELA,4BAAAA,YAAY,EAAEoQ,iBAAiB,CAACpQ,YAF3B;AAGLqQ,4BAAAA,OAAO,EAAEvD;AAHJ,2BARY;;AAAA;AAAA;AAAA;AAcnB7zB,0BAAAA,OAAO,CAAClhB,KAAR;AACAioC,0BAAAA,YAAY,kCAAI,YAAWjnB,OAA3B;AAfmB,2DAgBZ;AAAEvZ,4BAAAA,OAAO,EAAE,KAAX;AAAkBwgC,4BAAAA,YAAY,EAAZA;AAAlB,2BAhBY;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,iBA1BJ;;AAAA,gCA0BbkQ,cA1Ba;AAAA;AAAA;AAAA;;AAAA,mBAgDf1wC,OAhDe;AAAA;AAAA;AAAA;;AAAA,mBAiDb+vC,UAjDa;AAAA;AAAA;AAAA;;AAAA;AAAA,qBAkDuBA,UAAU,CAAC;AAC/CtxB,gBAAAA,UAAU,EAAEhW,QAAS,CAAC1K,EADyB;AAE/C0yC,gBAAAA,cAAc,EAAdA,cAF+C;AAG/CC,gBAAAA,cAAc,EAAdA;AAH+C,eAAD,CAlDjC;;AAAA;AAkDTI,cAAAA,uBAlDS;;AAuDf,kBAAIA,uBAAuB,CAACtQ,YAA5B,EAA0C;AACxCA,gBAAAA,YAAY,GAAGsQ,uBAAuB,CAACtQ,YAAvC;AACD;;AAzDc,oBA2DX,CAAC+P,uBAAD,IAA4BO,uBAAuB,CAACD,OAApD,IAA+DC,uBAAuB,CAAC9wC,OA3D5E;AAAA;AAAA;AAAA;;AAAA;AAAA,qBA4DmBqtC,sBAAsB,CAAC;AACrDC,gBAAAA,wBAAwB,EAAEwD,uBAAuB,CAACD,OADG;AAErDtD,gBAAAA,MAAM,EAANA;AAFqD,eAAD,CA5DzC;;AAAA;AA4DPqD,cAAAA,iBA5DO;;AAiEb,kBAAIA,iBAAiB,CAACpQ,YAAtB,EAAoC;AAClCA,gBAAAA,YAAY,GAAGoQ,iBAAiB,CAACpQ,YAAjC;AACAxgC,gBAAAA,OAAO,GAAG,KAAV;AACD;;AApEY;AAuEfA,cAAAA,OAAO,GAAGA,OAAO,IAAI8wC,uBAAuB,CAAC9wC,OAAnC,IAA8C,CAACwgC,YAAzD;AACAuQ,cAAAA,eAAe,GAAGD,uBAAuB,CAACD,OAA1C;AAxEe;AAAA;;AAAA;AAAA;AAAA,qBA0EqBH,cAAc,CAACD,cAAD,CA1EnC;;AAAA;AA0ETO,cAAAA,qBA1ES;;AA2Ef,kBAAI,CAACA,qBAAqB,CAAChxC,OAAvB,IAAkCgxC,qBAAqB,CAACxQ,YAA5D,EAA0E;AACxEA,gBAAAA,YAAY,GAAGwQ,qBAAqB,CAACxQ,YAArC;AACD;;AACDxgC,cAAAA,OAAO,GAAGgxC,qBAAqB,CAAChxC,OAAtB,IAAiC,CAACwgC,YAA5C;AACAuQ,cAAAA,eAAe,GAAGC,qBAAqB,CAACH,OAAxC;;AA/Ee;AAmFnB/U,cAAAA,iBAAiB,CAAC,KAAD,CAAjB;;AAnFmB,oBAqFf97B,OAAO,IAAIiwC,SArFI;AAAA;AAAA;AAAA;;AAsFjBA,cAAAA,SAAS;;AAtFQ,kBAwFZC,uBAxFY;AAAA;AAAA;AAAA;;AAAA;AAAA,qBAyFTR,KAAK,CAACX,kBAAD,CAzFI;;AAAA;AAAA;AAAA,qBA6FbiB,mBAAmB,CAAC;AAAEhwC,gBAAAA,OAAO,EAAPA,OAAF;AAAWzH,gBAAAA,KAAK,EAAEioC;AAAlB,eAAD,CA7FN;;AAAA;AAAA,gDA+FZ;AAAEqQ,gBAAAA,OAAO,EAAEE,eAAX;AAA4B/wC,gBAAAA,OAAO,EAAE,CAACwgC,YAAtC;AAAoDA,gBAAAA,YAAY,EAAZA;AAApD,eA/FY;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KAAH;;AAAA,oBAAZ8P,YAAY;AAAA;AAAA;AAAA,KAAlB;;AAkGA,SAAO;AAAEA,IAAAA,YAAY,EAAZA,YAAF;AAAgBxnC,IAAAA,SAAS,EAAE,CAAC,EAACwyB,WAAD,YAACA,WAAW,CAAEI,QAAd;AAA5B,GAAP;AACD;;AClIM,IAAMuV,YAAY,GAMrB,SANSA,YAMT;MAAGnoC,iBAAAA;wBAAWiH;MAAAA,gCAAQ;yBAAIvE;MAAAA,kCAAS;MAAI1R,gBAAAA;;AACzC,MAAIgP,SAAJ,EAAe;AACb,WAAOpO,4BAAA,CAAC+U,QAAD;AAAUM,MAAAA,KAAK,EAAEA;AAAOvE,MAAAA,MAAM,EAAEA;KAAhC,CAAP;AACD;;AAED,SAAO9Q,4BAAA,wBAAA,MAAA,EAAGZ,QAAH,CAAP;AACD,CAZM;;ACgBP,IAAMo3C,uBAAuB,GAAG,SAA1BA,uBAA0B;;;MAC9B3Q,2BAAAA;MACAW,qCAAAA;MACA3F,4BAAAA;;AAEA,cAA6BgF,mBAAmB,IAAI,EAApD;AAAA,MAAQkJ,gBAAR,SAAQA,gBAAR;;AACA,MAAI,EAACA,gBAAD,qCAACA,gBAAgB,CAAE0H,SAAnB,uCAAC,sBAA6BC,SAA9B,aAAC,uBAAwChtC,MAAzC,KAAmD,CAAAqlC,gBAAgB,QAAhB,sCAAAA,gBAAgB,CAAE0H,SAAlB,sEAA6BC,SAA7B,4CAAwChtC,MAAxC,KAAkD,CAAzG,EAA4G;AAC1G,WAAO,IAAP;AACD;;AAED,MAAMitC,cAAc,GAAG5H,gBAAgB,CAAC0H,SAAjB,CAA2BC,SAA3B,CAAqChtC,MAArC,GAA8C,CAAC,CAAtE;AAEA,MAAMq/B,OAAO,GAAG93B,sBAAsB,CAAC;AACrCvH,IAAAA,MAAM,EAAEitC,cAD6B;AAErCzlC,IAAAA,QAAQ,EAAE69B,gBAAgB,CAAC0H,SAAjB,CAA2BC,SAA3B,CAAqCxlC,QAFV;AAGrCI,IAAAA,qBAAqB,EAAE;AAHc,GAAD,CAAtC;AAMA,SACEtR,4BAAA,CAAChB,UAAD;AAAYb,IAAAA,OAAO,EAAC;AAAQmB,IAAAA,KAAK,EAAE;AAAEmW,MAAAA,SAAS,EAAE;AAAb;AAAmB1V,IAAAA,SAAS,EAAC;GAAhE,EACEC,4BAAA,CAACu2C,YAAD;AAAcnoC,IAAAA,SAAS,EAAEo4B;AAA+BnxB,IAAAA,KAAK,EAAC;GAA9D,EACGwrB,oBAAoB,CAACoH,OAArB,CAA6Ba,wBAA7B,CAAsD;AAAEC,IAAAA,OAAO,EAAPA;AAAF,GAAtD,CADH,CADF,CADF;AAOD,CAzBD;;AA2BA,IAAM6N,uBAAuB,GAAG,SAA1BA,uBAA0B;MAC9B/Q,4BAAAA;MACAhmB,2BAAAA;MACA2mB,sCAAAA;MACA3F,6BAAAA;;AAEA,MAAI,EAACgF,mBAAD,YAACA,mBAAmB,CAAEgR,mBAAtB,KAA6C,EAACh3B,kBAAD,YAACA,kBAAkB,CAAEi3B,uBAArB,CAAjD,EAA+F;AAC7F,WAAO,IAAP;AACD;;AAED,MAAQA,uBAAR,GAAoCj3B,kBAApC,CAAQi3B,uBAAR;AACA,MAAMC,oBAAoB,GACxB,OAAOlW,oBAAoB,CAACoH,OAArB,CAA6B+B,oCAApC,KAA6E,UAA7E,GACInJ,oBAAoB,CAACoH,OAArB,CAA6B+B,oCAA7B,CAAkE;AAAEC,IAAAA,gBAAgB,EAAE6M;AAApB,GAAlE,CADJ,GAEIjW,oBAAoB,CAACoH,OAArB,CAA6B+B,oCAHnC;AAKA,SACEhqC,4BAAA,CAAChB,UAAD;AAAYb,IAAAA,OAAO,EAAC;AAAQmB,IAAAA,KAAK,EAAE;AAAEmW,MAAAA,SAAS,EAAE;AAAb;AAAmB1V,IAAAA,SAAS,EAAC;GAAhE,EACEC,4BAAA,CAACu2C,YAAD;AAAcnoC,IAAAA,SAAS,EAAEo4B;AAA+BnxB,IAAAA,KAAK,EAAC;GAA9D,EACG0hC,oBADH,CADF,CADF;AAOD,CAvBD;;AAyBA,IAAMC,kBAAkB,GAAG,SAArBA,kBAAqB;MACzBnR,4BAAAA;MACAhmB,2BAAAA;MACA/d,aAAAA;MACA0kC,sCAAAA;MACAnkC,sBAAAA;;AAEA,cAA6BwjC,mBAAmB,IAAI,EAApD;AAAA,MAAQoR,gBAAR,SAAQA,gBAAR;;AACA,MAAI,CAACpR,mBAAD,IAAwB,EAACoR,gBAAD,YAACA,gBAAgB,CAAEpsC,KAAlB,CAAwBnB,MAAzB,CAA5B,EAA6D;AAC3D,WAAO,IAAP;AACD;;AAED,MAAMotC,uBAAuB,GAAGjR,mBAAmB,CAACgR,mBAApB,GAC5Bh3B,kBAD4B,oBAC5BA,kBAAkB,CAAEi3B,uBADQ,GAE5BjR,mBAF4B,oBAE5BA,mBAAmB,CAAEx+B,kBAArB,CAAwCS,GAF5C;AAIA,MAAM+C,KAAK,GAAGoG,sBAAsB,cAC/BgmC,gBAAgB,CAACpsC,KADc;AAElCyG,IAAAA,qBAAqB,EAAE;AAFW,KAApC;AAKA,MAAM4lC,mBAAmB,GAAGp1C,IAAH,oBAAGA,IAAI,CAAES,WAAN,CAAkB8I,IAAlB,CAAuB,UAAC5I,KAAD;AAAA,WAAWA,KAAK,CAACyJ,YAAN,KAAuBC,YAAY,CAAC4G,UAA/C;AAAA,GAAvB,CAA5B;AACA,MAAMokC,sBAAsB,GAAGr1C,IAAH,oBAAGA,IAAI,CAAES,WAAN,CAAkB8I,IAAlB,CAAuB,UAAC5I,KAAD;AAAA,WAAWA,KAAK,CAACyJ,YAAN,KAAuBC,YAAY,CAAC4G,UAA/C;AAAA,GAAvB,CAA/B;AAEA,MAAIjV,IAAI,GAAG,mBAAX;AACA,MAAIs5C,eAAe,GAAMvsC,KAAN,MAAnB;;AAEA,MAAIqsC,mBAAJ,EAAyB;AACvB,QAAI,CAACC,sBAAL,EAA6B;AAC3BC,MAAAA,eAAe,GAAG,KAAlB;AACD,KAFD,MAEO;AACLA,MAAAA,eAAe,IAAI,GAAnB;AACD;;AAEDA,IAAAA,eAAe,IAAI,wDAAnB;AACD;;AAED,MAAIC,eAAJ;AACA,MAAIC,iBAAJ;;AAEA,UAAQj1C,aAAR;AACE,SAAK+F,aAAa,CAACuK,OAAnB;AACE2kC,MAAAA,iBAAiB,GAAG,OAApB;AACAD,MAAAA,eAAe,YAAUtwC,MAAM,CAAC+vC,uBAAD,CAAN,CAAgC7vC,MAAhC,CAAuC,IAAvC,CAAzB;AACA;;AACF,SAAKmB,aAAa,CAACyB,QAAnB;AACEytC,MAAAA,iBAAiB,GAAG,MAApB;AACAD,MAAAA,eAAe,GAAGtwC,MAAM,CAAC+vC,uBAAD,CAAN,CAAgC7vC,MAAhC,CAAuC,SAAvC,CAAlB;AACA;AARJ;;AAcAnJ,EAAAA,IAAI,IAAOs5C,eAAP,oCAAqDE,iBAArD,YAA6ED,eAA7E,yBAAJ;AAEA,SACEr3C,4BAAA,CAAChB,UAAD;AAAYb,IAAAA,OAAO,EAAC;AAAQmB,IAAAA,KAAK,EAAE;AAAEmW,MAAAA,SAAS,EAAE;AAAb;AAAmB1V,IAAAA,SAAS,EAAC;GAAhE,EACEC,4BAAA,CAACu2C,YAAD;AAAcnoC,IAAAA,SAAS,EAAEo4B;AAA+BnxB,IAAAA,KAAK,EAAC;GAA9D,EACGvX,IADH,CADF,CADF;AAOD,CA/DD;;AAiEA,SAAgBy5C,iBAAiBr4C;AAC/B,SACEc,4BAAA,CAAC+uB,KAAD;AAAKhvB,IAAAA,SAAS,EAAC;GAAf,EACEC,4BAAA,CAACw2C,uBAAD,oBAA6Bt3C,MAA7B,CADF,EAGEc,4BAAA,CAAC42C,uBAAD,oBAA6B13C,MAA7B,CAHF,EAKEc,4BAAA,CAACg3C,kBAAD,oBAAwB93C,MAAxB,CALF,CADF;AASD;;SCjIes4C;MACdtuC,gBAAAA;MACAuuC,mBAAAA;MACAvrC,oBAAAA;MACA7J,qBAAAA;MACA6O,gBAAAA;MACA4B,iBAAAA;MACAR,mBAAAA;AAEA,MAAMolC,SAAS,GAAGxrC,YAAY,KAAKC,YAAY,CAACC,OAAhD;AACA,MAAMurC,UAAU,GAAG7kC,SAAS,IAAI,CAAhC;AACA,MAAMxR,YAAY,GAChB4H,QAAQ,KAAKwuC,SAAS,IAAIxuC,QAAQ,GAAG,CAA7B,CAAR,GAA6C+I,eAAe,CAAC/I,QAAD,CAA5D,UAA0EyuC,UAAU,GAAG,CAAb,GAAiB,KAAjB,GAAyB,GAAnG,UAA4G,EAD9G;AAEA,MAAMC,mBAAmB,GAAGv1C,aAAa,KAAK+F,aAAa,CAACyB,QAAhC,GAA2C,cAA3C,GAA4D,EAAxF;AAEA,MAAMI,SAAS,GAAG,CAACqI,WAAW,IAAImlC,WAAW,GAAGvuC,QAA9B,KAA2C7G,aAAa,KAAK+F,aAAa,CAACyB,QAAhC,GAA2C,EAA3C,GAAgD,CAA3F,CAAlB;AACA,MAAMguC,kBAAkB,GAAG5mC,sBAAsB,CAAC;AAChDvH,IAAAA,MAAM,EAAEO,SADwC;AAEhDiH,IAAAA,QAAQ,EAARA,QAFgD;AAGhDI,IAAAA,qBAAqB,EAAE;AAHyB,GAAD,CAAjD;AAKA,MAAMwmC,mBAAmB,GAAG7mC,sBAAsB,CAAC;AACjDvH,IAAAA,MAAM,EAAE+tC,WADyC;AAEjDvmC,IAAAA,QAAQ,EAARA,QAFiD;AAGjDI,IAAAA,qBAAqB,EAAE;AAH0B,GAAD,CAAlD;AAMA,cAAUhQ,YAAV,GAAyBu2C,kBAAzB,GAA8CD,mBAA9C,UACEA,mBAAmB,IAAIt2C,YAAvB,YAA6Cw2C,mBAA7C,GAAqE,EADvE;AAGD;AAED,SAAgBC,wBAAwBj5B;AACtC,MAAQ24B,WAAR,GAA8D34B,MAA9D,CAAQ24B,WAAR;AAAA,MAAqBvuC,QAArB,GAA8D4V,MAA9D,CAAqB5V,QAArB;AAAA,MAA+B8B,SAA/B,GAA8D8T,MAA9D,CAA+B9T,SAA/B;AAAA,MAA0C/B,KAA1C,GAA8D6V,MAA9D,CAA0C7V,KAA1C;AAAA,MAAiDiI,QAAjD,GAA8D4N,MAA9D,CAAiD5N,QAAjD;;AACA,MAAI5F,WAAW,CAACrC,KAAD,CAAX,IAAuB+B,SAAS,KAAKC,SAAS,CAACE,SAAxB,IAAqC,CAACK,qBAAqB,CAACvC,KAAD,EAAQC,QAAR,CAAtF,EAA0G;AACxG,QAAM4uC,mBAAmB,GAAG7mC,sBAAsB,CAAC;AACjDvH,MAAAA,MAAM,EAAE+tC,WADyC;AAEjDvmC,MAAAA,QAAQ,EAARA,QAFiD;AAGjDI,MAAAA,qBAAqB,EAAE;AAH0B,KAAD,CAAlD;AAKA,WAAUW,eAAe,CAAC/I,QAAD,CAAzB,aAA2C4uC,mBAA3C;AACD;;AAED,SAAON,kBAAkB,CAAC14B,MAAD,CAAzB;AACD;;ACpDD,SAASk5B,QAAT,CAAkB/uC,KAAlB,EAA8CglB,KAA9C;AACE,qBAA4BhlB,KAAK,CAACglB,KAAD,CAAjC;AAAA,MAAQhkB,SAAR,gBAAQA,SAAR;AAAA,MAAmBV,IAAnB,gBAAmBA,IAAnB;;AACA,MAAI,CAACU,SAAL,EAAgB;AACd,WAAO,EAAP;AACD;;AAED,MAAIgkB,KAAK,KAAK,CAAd,EAAiB;AACf,sBAAgB1kB,IAAhB;AACD;;AAED,MAAM0uC,gBAAgB,GAAGhvC,KAAK,CAACglB,KAAK,GAAG,CAAT,CAAL,CAAiB1kB,IAAjB,IAAyB,CAAlD;AACA,MAAM2uC,SAAS,GAAGD,gBAAgB,GAAG,CAArC;AAEA,SAAOpwC,KAAK,CAAC0B,IAAD,CAAL,GACA0I,eAAe,CAACimC,SAAD,CADf,4BAEKjmC,eAAe,CAACimC,SAAD,CAFpB,YAEsCjmC,eAAe,CAAC1I,IAAD,CAF5D;AAGD;;AAOD,SAAgB4uC;MAA0B11C,aAAAA;MAAOsG,oBAAAA;AAC/C,MAAME,KAAK,GAAGxG,KAAK,CAACwG,KAAN,IAAe,EAA7B;;AAEA,8BAAsBkB,2BAA2B,CAAClB,KAAD,EAAQF,YAAR,CAAjD;AAAA,MAAQwB,SAAR,yBAAQA,SAAR;;AAEA,MAAIA,SAAS,CAACnH,MAAV,KAAqB,CAAzB,EAA4B;AAC1B,WAAO,IAAP;AACD;;AAED,SACEpD,4BAAA,wBAAA,MAAA,EACGuK,SAAS,CAAC5H,GAAV,CAAc,iBAA2BsrB,KAA3B;AAAA,QAAGllB,YAAH,SAAGA,YAAH;AAAA,QAAiBW,MAAjB,SAAiBA,MAAjB;AAAA,WACb1J,4BAAA,CAACo4C,iBAAD,MAAA,EACEp4C,4BAAA,CAACq4C,WAAD;AAAaz1C,MAAAA,GAAG,EAAEqrB;AAAO3uB,MAAAA,KAAK,EAAE;AAAEya,QAAAA,UAAU,EAAE;AAAd;KAAhC,EACE/Z,4BAAA,CAAChB,UAAD;AAAYb,MAAAA,OAAO,EAAC;AAAQoB,MAAAA,KAAK,EAAC;AAAWD,MAAAA,KAAK,EAAE;AAAE+5B,QAAAA,UAAU,EAAE;AAAd;KAApD,EACG2e,QAAQ,CAAC/uC,KAAD,EAAQglB,KAAR,CADX,CADF,EAIEjuB,4BAAA,CAAChB,UAAD;AAAYb,MAAAA,OAAO,EAAC;AAAQoB,MAAAA,KAAK,EAAC;AAAWD,MAAAA,KAAK,EAAE;AAAE+5B,QAAAA,UAAU,EAAE;AAAd;KAApD,EACGme,kBAAkB,CAAC;AAClBtuC,MAAAA,QAAQ,EAAEH,YADQ;AAElB0uC,MAAAA,WAAW,EAAE/tC,MAFK;AAGlBwH,MAAAA,QAAQ,EAAEzO,KAAK,CAACyO,QAHE;AAIlBhF,MAAAA,YAAY,EAAEzJ,KAAK,CAACyJ,YAJF;AAKlB7J,MAAAA,aAAa,EAAEI,KAAK,CAACJ,aALH;AAMlB4G,MAAAA,KAAK,EAAExG,KAAK,CAACwG,KANK;AAOlB+B,MAAAA,SAAS,EAAEvI,KAAK,CAACuI,SAPC;AAQlB8H,MAAAA,SAAS,EAAErQ,KAAK,CAACqQ,SARC;AASlBR,MAAAA,WAAW,EAAE7P,KAAK,CAACiH;AATD,KAAD,CADrB,CAJF,CADF,CADa;AAAA,GAAd,CADH,CADF;AA0BD;;;AChEM,IAAM4uC,sBAAsB,gBAAGpkC,QAAM,CAACqkC,YAAD,CAAT,wKACvB;AAAA,wBAAGC,KAAH;AAAA,MAAGA,KAAH,2BAAW,EAAX;AAAA,SAAuBA,KAAvB;AAAA,CADuB,EAExB;AAAA,0BAAGA,KAAH;AAAA,MAAGA,KAAH,4BAAW,EAAX;AAAA,SAAuBA,KAAvB;AAAA,CAFwB,EAI/B;AAAA,MAAGC,OAAH,SAAGA,OAAH;AAAA,SAAiBA,OAAO,8BAAxB;AAAA,CAJ+B,CAA5B;;;AC0BA,IAAML,iBAAiB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAAvB;AAMP,AAAO,IAAMM,wBAAwB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAA9B;AAKP,AAAO,IAAML,WAAW;AAAA;AAAA;AAAA;AAAA;AAAA,mDAKpB/lB,EAAE,CAACL,EALiB,kpXAAjB;;AAYP,IAAM0mB,sBAAsB,GAAG,SAAzBA,sBAAyB;MAAG9X,4BAAAA;AAChC,MAAM3+B,KAAK,GAAGlC,4BAAA,CAAChB,UAAD;AAAYb,IAAAA,OAAO,EAAC;GAApB,EAA6B0iC,oBAAoB,CAACoH,OAArB,CAA6BkC,qBAA1D,CAAd;AACA,SACEnqC,4BAAA,CAACm1B,kBAAD;AAAoBC,IAAAA,SAAS,EAAC;AAAOlzB,IAAAA,KAAK,EAAEA;GAA5C,EACElC,4BAAA,CAAC8vB,IAAD;AAAMC,IAAAA,IAAI,EAAC;AAAmBzwB,IAAAA,KAAK,EAAE;AAAEwa,MAAAA,OAAO,EAAE;AAAX;GAArC,CADF,CADF;AAKD,CAPD;;AASA,AAAO,IAAM8+B,mBAAmB,GAAG,SAAtBA,mBAAsB;MACjC/X,6BAAAA;MACAjQ,cAAAA;MACA1nB,iBAAAA;MACAzG,cAAAA;AAOA,MAAMo2C,mBAAmB,GAAGrmB,oBAAoB,CAAC,IAAD,CAAhD;;AACA,kBAA0DrkB,QAAQ,CAAC,KAAD,CAAlE;AAAA,MAAO2qC,qBAAP;AAAA,MAA8BC,wBAA9B;;AACA,MAAMC,qBAAqB,GAAG,SAAxBA,qBAAwB;AAAA,WAAMD,wBAAwB,CAAC,UAACE,IAAD;AAAA,aAAU,CAACA,IAAX;AAAA,KAAD,CAA9B;AAAA,GAA9B;;AAEA,MAAMC,YAAY,GAAGz2C,KAAK,CAACyJ,YAAN,KAAuBC,YAAY,CAAC4G,UAAzD;AACA,MAAM0kC,WAAW,GAAGh1C,KAAK,CAACqJ,aAAN,GAChBf,kBAAkB,CAACtI,KAAD,EAAQyG,QAAR,CADF,GAEhB,CAACzG,KAAK,CAACiH,MAAN,IAAgB,CAAjB,IAAsBiB,IAAI,CAACwuC,IAAL,CAAUjwC,QAAQ,IAAIzG,KAAK,CAACqQ,SAAN,IAAmB,CAAvB,CAAlB,CAF1B;AAIA,MAAIsmC,eAAJ;AACA,MAAMC,iCAAiC,GACrC52C,KAAK,CAACuI,SAAN,KAAoBC,SAAS,CAACE,SAA9B,IACA,CAAC,CAAC1I,KAAK,CAACwG,KADR,IAEA,CAAC8kB,OAAO,CAACtrB,KAAK,CAACwG,KAAP,CAFR,IAGA,CAACpB,KAAK,CAACpF,KAAK,CAACwG,KAAN,CAAY,CAAZ,EAAeM,IAAhB,CAHN,IAIAL,QAAQ,GAAGzG,KAAK,CAACwG,KAAN,CAAY,CAAZ,EAAeM,IAL5B;;AAOA,MAAI8vC,iCAAJ,EAAuC;AACrCD,IAAAA,eAAe,GAAGp5C,4BAAA,CAACm4C,uBAAD;AAAyB11C,MAAAA,KAAK,EAAEA;AAAOsG,MAAAA,YAAY,EAAEG;KAArD,CAAlB;AACD;;AAED,MAAIhH,KAAK,GACPlC,4BAAA,CAAChB,UAAD;AAAYb,IAAAA,OAAO,EAAC;AAAQoB,IAAAA,KAAK,EAAC;GAAlC,EACGqxB,KADH,CADF;;AAMA,MAAIwoB,eAAJ,EAAqB;AACnBl3C,IAAAA,KAAK,GACHlC,4BAAA,CAACo3B,IAAD;AAAM3mB,MAAAA,OAAO,EAAEuoC;AAAuBM,MAAAA,SAAS,EAAC;AAAOh6C,MAAAA,KAAK,EAAE;AAAEqe,QAAAA,MAAM,EAAE;AAAV;KAA9D,EACGzb,KADH,CADF;AAKD;;AAED,SACElC,4BAAA,CAACo4C,iBAAD;AAAmBr4C,IAAAA,SAAS,EAAC;GAA7B,EACEC,4BAAA,CAACq4C,WAAD;AAAa/4C,IAAAA,KAAK,EAAE;AAAEya,MAAAA,UAAU,EAAE;AAAd;GAApB,EACE/Z,4BAAA,CAACyU,IAAD;AAAMW,IAAAA,IAAI;AAAC0E,IAAAA,OAAO,EAAC;AAAOE,IAAAA,GAAG,EAAE;AAAK1a,IAAAA,KAAK,EAAE;AAAE+5B,MAAAA,UAAU,EAAEwf,mBAAmB,GAAG,QAAH,GAAc;AAA/C;GAA3C,EACG32C,KADH,EAEGk3C,eAAe,IACdp5C,4BAAA,CAACu5C,UAAD;AAAY9oC,IAAAA,OAAO,EAAEuoC;AAAuBzjC,IAAAA,EAAE,EAAE;AAAEhB,MAAAA,OAAO,EAAE;AAAX;GAAhD,EACEvU,4BAAA,CAACs4C,sBAAD;eAAiCQ;aAA8B;GAA/D,CADF,CAHJ,CADF,EASE94C,4BAAA,CAACyU,IAAD;AAAMW,IAAAA,IAAI;AAAC0E,IAAAA,OAAO,EAAC;AAAOE,IAAAA,GAAG,EAAE;AAAGD,IAAAA,UAAU,EAAC;GAA7C,EACGm/B,YAAY,IAAIl5C,4BAAA,CAAC24C,sBAAD;AAAwB9X,IAAAA,oBAAoB,EAAEA;GAA9C,CADnB,EAEE7gC,4BAAA,CAAChB,UAAD;AACEb,IAAAA,OAAO,EAAC;AACRoB,IAAAA,KAAK,EAAC;AACND,IAAAA,KAAK,EAAE;AAAE+5B,MAAAA,UAAU,EAAEwf,mBAAmB,GAAG,QAAH,GAAc;AAA/C;GAHT,EAIGd,uBAAuB,CAAC;AACvBN,IAAAA,WAAW,EAAXA,WADuB;AAEvBvuC,IAAAA,QAAQ,EAARA,QAFuB;AAGvBgI,IAAAA,QAAQ,EAAEzO,KAAK,CAACyO,QAHO;AAIvBhF,IAAAA,YAAY,EAAEzJ,KAAK,CAACyJ,YAJG;AAKvB7J,IAAAA,aAAa,EAAEI,KAAK,CAACJ,aALE;AAMvB4G,IAAAA,KAAK,EAAExG,KAAK,CAACwG,KANU;AAOvB+B,IAAAA,SAAS,EAAEvI,KAAK,CAACuI,SAPM;AAQvB8H,IAAAA,SAAS,EAAErQ,KAAK,CAACqQ,SARM;AASvBR,IAAAA,WAAW,EAAE7P,KAAK,CAACiH;AATI,GAAD,CAJ1B,EAeGwvC,YAAY,IAAI,SAfnB,CAFF,CATF,CADF,EA+BGE,eAAe,IACdp5C,4BAAA,CAACw5C,QAAD;AAAU,UAAIV;GAAd,EACE94C,4BAAA,CAAC04C,wBAAD,MAAA,EAA2BU,eAA3B,CADF,CAhCJ,CADF;AAuCD,CArFM;AAuFP,AAAO,IAAMK,kBAAkB,GAAG,SAArBA,kBAAqB;MAAG7oB,cAAAA;AACnC,SACE5wB,4BAAA,CAACo4C,iBAAD,MAAA,EACEp4C,4BAAA,CAACq4C,WAAD;AAAa/4C,IAAAA,KAAK,EAAE;AAAEya,MAAAA,UAAU,EAAE;AAAd;GAApB,EACE/Z,4BAAA,CAACyU,IAAD;AAAMW,IAAAA,IAAI;GAAV,EACEpV,4BAAA,CAAChB,UAAD;AAAYb,IAAAA,OAAO,EAAC;AAAQoB,IAAAA,KAAK,EAAC;GAAlC,EACGqxB,KADH,CADF,CADF,EAME5wB,4BAAA,CAACyU,IAAD;AAAMW,IAAAA,IAAI;AAAC0E,IAAAA,OAAO,EAAC;AAAOE,IAAAA,GAAG,EAAE;AAAGD,IAAAA,UAAU,EAAC;GAA7C,EACE/Z,4BAAA,CAAChB,UAAD;AAAYb,IAAAA,OAAO,EAAC;AAAQoB,IAAAA,KAAK,EAAC;AAAYD,IAAAA,KAAK,EAAE;AAAEs3B,MAAAA,SAAS,EAAE;AAAb;GAArD,QAAA,CADF,CANF,CADF,CADF;AAgBD,CAjBM;AAmBP,AAAO,IAAM8iB,gBAAgB,GAAG,SAAnBA,gBAAmB;MAC9B7T,4BAAAA;MACAW,sCAAAA;MACA3F,6BAAAA;AAMA,MAAQkO,gBAAR,GAA+ClJ,mBAA/C,CAAQkJ,gBAAR;AAAA,MAA0BkI,gBAA1B,GAA+CpR,mBAA/C,CAA0BoR,gBAA1B;;AACA,cAAsCA,gBAAgB,IAAI,EAA1D;AAAA,MAAQ77B,QAAR,SAAQA,QAAR;AAAA,MAAkB6tB,eAAlB,SAAkBA,eAAlB;;AACA,MAAI,CAAC7tB,QAAD,IAAa,CAAC6tB,eAAlB,EAAmC;AACjC,WAAO,IAAP;AACD;;AAED,SACEjpC,4BAAA,CAACo4C,iBAAD,MAAA,EACEp4C,4BAAA,CAACq4C,WAAD,MAAA,EACEr4C,4BAAA,CAAChB,UAAD;AAAYb,IAAAA,OAAO,EAAC;AAAQoB,IAAAA,KAAK,EAAC;GAAlC,EACGshC,oBAAoB,CAACoH,OAArB,CAA6Be,YAA7B,CAA0C;AACzCC,IAAAA,eAAe,EAAfA,eADyC;AAEzC/3B,IAAAA,QAAQ,EAAE69B,gBAAgB,CAAClkC,KAAjB,CAAuBqG;AAFQ,GAA1C,CADH,CADF,EAOElR,4BAAA,CAAChB,UAAD;AAAYb,IAAAA,OAAO,EAAC;AAAQoB,IAAAA,KAAK,EAAC;GAAlC,EACGinC,6BAA6B,GAC5BxmC,4BAAA,CAAC+U,QAAD;AAAUM,IAAAA,KAAK,EAAE;AAAIvE,IAAAA,MAAM,EAAE;GAA7B,CAD4B,GAG5BG,sBAAsB,CAAC;AACrBvH,IAAAA,MAAM,EAAE0R,QAAQ,CAAC1R,MADI;AAErBwH,IAAAA,QAAQ,EAAEkK,QAAQ,CAAClK,QAFE;AAGrBI,IAAAA,qBAAqB,EAAE;AAHF,GAAD,CAJ1B,CAPF,CADF,CADF;AAuBD,CAtCM;AAwCP,AAAO,IAAMqoC,sBAAsB,GAAG,SAAzBA,sBAAyB;MACpC9T,4BAAAA;MACAW,sCAAAA;MACA3F,6BAAAA;;AAMA,cAA6BgF,mBAAmB,IAAI,EAApD;AAAA,MAAQkJ,gBAAR,SAAQA,gBAAR;;AACA,cAAoBA,gBAAgB,IAAI,EAAxC;AAAA,MAAQhG,OAAR,SAAQA,OAAR;;AAEA,MAAI,CAACA,OAAD,IAAY,CAACA,OAAO,CAAC6Q,IAArB,IAA6B7Q,OAAO,CAAC6Q,IAAR,CAAalwC,MAAb,IAAuB,CAAxD,EAA2D;AACzD,WAAO,IAAP;AACD;;AAED,SACE1J,4BAAA,CAACo4C,iBAAD,MAAA,EACEp4C,4BAAA,CAACq4C,WAAD,MAAA,EACEr4C,4BAAA,CAAChB,UAAD;AAAYb,IAAAA,OAAO,EAAC;AAAQoB,IAAAA,KAAK,EAAC;GAAlC,EACGshC,oBAAoB,CAACoH,OAArB,CAA6BY,mBADhC,CADF,EAIE7oC,4BAAA,CAAChB,UAAD;AAAYb,IAAAA,OAAO,EAAC;AAAQoB,IAAAA,KAAK,EAAC;GAAlC,EACES,4BAAA,CAACu2C,YAAD;AAAcnoC,IAAAA,SAAS,EAAEo4B;GAAzB,EACGv1B,sBAAsB,CAAC;AACtBvH,IAAAA,MAAM,EAAE,CAAC,CAAD,GAAKq/B,OAAO,CAAC6Q,IAAR,CAAalwC,MADJ;AAEtBwH,IAAAA,QAAQ,EAAE63B,OAAO,CAAC6Q,IAAR,CAAa1oC,QAFD;AAGtBI,IAAAA,qBAAqB,EAAE;AAHD,GAAD,CADzB,CADF,CAJF,CADF,CADF;AAkBD,CAlCM;AAoCP,AAAO,IAAMuoC,WAAW,GAAG,SAAdA,WAAc;MACzBC,YAAAA;MACAhQ,mBAAAA;MACAtD,sCAAAA;MACA3F,6BAAAA;;AAKA,MAAI,CAACiJ,UAAD,IAAe,CAACgQ,GAAhB,IAAuB,CAAAA,GAAG,QAAH,YAAAA,GAAG,CAAEpwC,MAAL,KAAe,CAA1C,EAA6C;AAC3C,WAAO,IAAP;AACD;;AAED,SACE1J,4BAAA,CAACo4C,iBAAD,MAAA,EACEp4C,4BAAA,CAACq4C,WAAD,MAAA,EACEr4C,4BAAA,CAAChB,UAAD;AAAYb,IAAAA,OAAO,EAAC;AAAQoB,IAAAA,KAAK,EAAC;GAAlC,EACGshC,oBAAoB,CAACoH,OAArB,CAA6B4B,QAA7B,CAAsC;AAAEC,IAAAA,UAAU,EAAVA;AAAF,GAAtC,CADH,CADF,EAIE9pC,4BAAA,CAAChB,UAAD;AAAYb,IAAAA,OAAO,EAAC;AAAQoB,IAAAA,KAAK,EAAC;GAAlC,EACES,4BAAA,CAACu2C,YAAD;AAAcnoC,IAAAA,SAAS,EAAEo4B;GAAzB,EACGv1B,sBAAsB,CAAC;AAAEvH,IAAAA,MAAM,EAAEowC,GAAF,oBAAEA,GAAG,CAAEpwC,MAAf;AAAuBwH,IAAAA,QAAQ,EAAE4oC,GAAF,oBAAEA,GAAG,CAAE5oC,QAAtC;AAAgDI,IAAAA,qBAAqB,EAAE;AAAvE,GAAD,CADzB,CADF,CAJF,CADF,CADF;AAcD,CA3BM;;;AC1MA,IAAMyoC,gBAAgB,gBAAG,QAAOhrB,GAAP;AAAA;AAAA;AAAA;AAAA;AAAA,EAAH;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAAtB;AAMP,AAAO,IAAMirB,WAAW,gBAAG,QAAOC,KAAP;AAAA;AAAA;AAAA;AAAA;AAAA,EAAH,gBACR;AAAA,MAAG38C,KAAH,QAAGA,KAAH;AAAA,SAAeA,KAAK,CAACE,KAAN,CAAYC,OAAZ,CAAoBiH,mBAAnC;AAAA,CADQ,oBAIpB4tB,EAAE,CAACN,EAJiB,y8pBAAjB;AASPgoB,WAAW,CAACE,YAAZ,GAA2B;AACzBC,EAAAA,SAAS,EAAE;AADc,CAA3B;;AAIA,IAAMC,YAAY,gBAAG,QAAOp7C,UAAP;AAAA;AAAA;AAAA;AAAA;AAAA,EAAH;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAAlB;;AAKA,IAAM05B,eAAa,gBAAG,QAAOpjB,SAAP;AAAA;AAAA;AAAA;AAAA;AAAA,EAAH;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAAnB;;AAIA,IAAM+kC,YAAY,gBAAG,QAAOr7C,UAAP;AAAA;AAAA;AAAA;AAAA;AAAA,EAAH;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAAlB;;AAIA,SAASs7C,yBAAT;MACEvV,mBAAAA;MACAwV,2BAAAA;MACAC,wBAAAA;MACA3Z,6BAAAA;MACA4Z,qBAAAA;;AAQA,MAAI,CAAC1V,UAAL,EAAiB;AACf,WAAOlE,oBAAoB,CAACuJ,cAArB,CAAoCC,QAA3C;AACD;;AAED,MAAI,CAACkQ,kBAAL,EAAyB;AACvB,WAAO1Z,oBAAoB,CAACuJ,cAArB,CAAoCE,aAA3C;AACD;;AAED,MAAImQ,YAAJ,EAAkB;AAChB,WAAO5Z,oBAAoB,CAACuJ,cAArB,CAAoCG,UAA3C;AACD;;AAED,MAAIiQ,eAAJ,EAAqB;AACnB,WAAO3Z,oBAAoB,CAACuJ,cAArB,CAAoCI,mBAA3C;AACD;;AAED,SAAO3J,oBAAoB,CAACuJ,cAArB,CAAoCK,WAA3C;AACD;;AAED,AAAO,IAAMiQ,eAAe,GAAG,SAAlBA,eAAkB;;;MAC7BrF,mBAAAA;MACAC,4BAAAA;MACAqF,6BAAAA;MACAnF,gCAAAA;MACAgF,wBAAAA;MACA7U,8BAAAA;MACAhnB,iCAAAA;;AAEA,kBAA8ExQ,QAAQ,CAAC,KAAD,CAAtF;AAAA,MAAOysC,+BAAP;AAAA,MAAwCC,kCAAxC;;AACA,6BAA4BxT,mBAAmB,EAA/C;AAAA,MAAQE,eAAR,wBAAQA,eAAR;;AACA,MAAMlD,WAAW,GAAGO,mBAAmB,EAAvC;AACA,MAAMpmB,YAAY,GAAG4mB,oBAAoB,EAAzC;;AACA,0BAAgDjE,gBAAgB,EAAhE;AAAA,MAAQL,aAAR,qBAAQA,aAAR;AAAA,MAAuBD,oBAAvB,qBAAuBA,oBAAvB;;AACA,cAAqCC,aAAa,IAAI,EAAtD;AAAA,MAAQh/B,IAAR,SAAQA,IAAR;AAAA,MAAc+d,kBAAd,SAAcA,kBAAd;;AACA,MAAMzN,UAAU,GAAG47B,cAAc,CAC/B,CAAAlsC,IAAI,QAAJ,iCAAAA,IAAI,CAAES,WAAN,uCAAmBC,MAAnB,CAA0B,UAACC,KAAD;AAAA,WAAWA,KAAK,CAACJ,aAAN,KAAwBmc,YAAY,CAACnc,aAAhD;AAAA,GAA1B,MAA4F,EAD7D,CAAjC;;AAGA,mBAAoCy4C,SAAS,CAAC1oC,UAAD,EAAa,UAAC3P,KAAD;AAAA,WAAWA,KAAK,CAACyJ,YAAN,KAAuBC,YAAY,CAACyhC,OAA/C;AAAA,GAAb,CAA7C;AAAA,MAAOmN,WAAP;AAAA,MAAoBC,YAApB;;AACA,cAAqBD,WAAW,IAAI,EAApC;AAAA,MAAOE,UAAP;;AACA,MAAMlW,UAAU,GAAGyV,eAAe,IAAKnW,WAAW,CAACI,kBAAZ,IAAkCJ,WAAW,CAACU,UAArF;;AAEA,8BAA+DuB,sBAAsB,CAAC;AAAEX,IAAAA,qBAAqB,EAArBA;AAAF,GAAD,CAArF;AAAA,MAAQE,mBAAR,yBAAQA,mBAAR;AAAA,MAA6BW,6BAA7B,yBAA6BA,6BAA7B;;AAEA,mBAAoC2O,SAAS,CAAC;AAC5CC,IAAAA,QAAQ,EAAE,CAAC,CAACzP,qBADgC;AAE5C6P,IAAAA,uBAAuB,EAAvBA,uBAF4C;AAG5CH,IAAAA,UAAU,EAAVA,UAH4C;AAI5CC,IAAAA,mBAAmB,EAAnBA,mBAJ4C;AAK5CC,IAAAA,SAAS,EAAE;AACTsF,MAAAA,kCAAkC,CAAC,IAAD,CAAlC;AACAxW,MAAAA,WAAW,CAACY,mBAAZ,CAAgCZ,WAAW,CAACQ,gBAAZ,CAA6BpB,UAA7D;AACD;AAR2C,GAAD,CAA7C;AAAA,MAAQmS,YAAR,cAAQA,YAAR;AAAA,MAAsBxnC,SAAtB,cAAsBA,SAAtB;;AAWA,MAAM8sC,cAAc;AAAA,+DAAG,iBAAOvlC,CAAP;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA,mBACjBilC,+BADiB;AAAA;AAAA;AAAA;;AAAA;;AAAA;AAAA;AAAA,qBAKWhF,YAAY,CAACjgC,CAAD,CALvB;;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;;AAAA,4BAK+B,EAL/B;;AAAA;AAAA;AAKbmwB,cAAAA,YALa,SAKbA,YALa;;AAMrB,kBAAIA,YAAJ,EAAkB;AAChByB,gBAAAA,eAAe,CAACzB,YAAD,CAAf;AACA+U,gBAAAA,kCAAkC,CAAC,KAAD,CAAlC;AACD,eAHD,MAGO;AACLtT,gBAAAA,eAAe,CAAC3uB,SAAD,CAAf;AACD;;AAXoB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KAAH;;AAAA,oBAAdsiC,cAAc;AAAA;AAAA;AAAA,KAApB;;AAcA,MAAMC,eAAe;AAAA,+DAAG,kBAAOxlC,CAAP;AAAA;AAAA;AAAA;AAAA;AAAA,mBAClBvH,SADkB;AAAA;AAAA;AAAA;;AAAA;;AAAA;AAAA,mBAKlB22B,UALkB;AAAA;AAAA;AAAA;;AAAA;AAAA,qBAMdmW,cAAc,CAACvlC,CAAD,CANA;;AAAA;AAAA;AAAA;;AAAA;AAQpB0uB,cAAAA,WAAW,CAACa,MAAZ;;AARoB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KAAH;;AAAA,oBAAfiW,eAAe;AAAA;AAAA;AAAA,KAArB;;AAYA,cAA+CtV,mBAAmB,IAAI,EAAtE;AAAA,MAAQkJ,gBAAR,SAAQA,gBAAR;AAAA,MAA0BkI,gBAA1B,SAA0BA,gBAA1B;;AACA,MAAMsD,kBAAkB,GACtB,CAAC,CAAC1U,mBAAF,KAA0B,CAAC,EAACkJ,gBAAD,YAACA,gBAAgB,CAAE0H,SAAnB,CAAD,IAAiC,CAAC,CAAC5Q,mBAAmB,CAACgR,mBAAjF,CADF;AAEA,MAAMuE,qBAAqB,GAAG,CAACT,oBAAD,IAAyB,CAACH,eAAxD;AACA,MAAMa,gBAAgB,GAAG,CAAC,EAACpE,gBAAD,YAACA,gBAAgB,CAAEhO,eAAnB,CAAD,IAAuC,CAACuR,eAAjE;AACA,MAAMc,YAAY,GAAGF,qBAAqB,IAAIC,gBAA9C;AAEA,MAAME,oBAAoB,GAAGP,YAAY,CAAC3vC,IAAb,CAAkB,UAAC5I,KAAD;AAAA,WAAWA,KAAK,CAACyJ,YAAN,KAAuBC,YAAY,CAAC4G,UAA/C;AAAA,GAAlB,CAA7B;AACA,MAAMyoC,qBAAqB,GACzBD,oBAAoB,IACpB,CAACN,UADD,IAEAD,YAAY,CAACzvC,KAAb,CAAmB,UAAC9I,KAAD;AAAA,WAAWA,KAAK,CAACyJ,YAAN,KAAuBC,YAAY,CAAC4G,UAA/C;AAAA,GAAnB,CAHF;AAKA,MAAM0oC,eAAe,GACnB,OAAO5a,oBAAoB,CAACoH,OAArB,CAA6BQ,cAApC,KAAuD,UAAvD,GACI5H,oBAAoB,CAACoH,OAArB,CAA6BQ,cAA7B,CAA4C;AAAEpmC,IAAAA,aAAa,EAAEmc,YAAY,CAACnc;AAA9B,GAA5C,CADJ,GAEIw+B,oBAAoB,CAACoH,OAArB,CAA6BQ,cAHnC;AAKA,SACEzoC,4BAAA,CAAC+5C,gBAAD,MAAA,EACE/5C,4BAAA,CAACg6C,WAAD,MAAA,EACEh6C,4BAAA,CAACo6C,YAAD;AAAcj8C,IAAAA,OAAO,EAAC;GAAtB,EAA4B0iC,oBAAoB,CAACoH,OAArB,CAA6B/lC,KAAzD,CADF,EAGElC,4BAAA,CAACyU,IAAD;AACE1U,IAAAA,SAAS,EAAC;AACV+Z,IAAAA,OAAO,EAAC;AACR2U,IAAAA,aAAa,EAAC;AACd1U,IAAAA,UAAU,EAAC;AACXvE,IAAAA,OAAO,EAAE;GALX,EAMExV,4BAAA,CAAChB,UAAD;AAAYb,IAAAA,OAAO,EAAC;AAAKoB,IAAAA,KAAK,EAAC;AAAUD,IAAAA,KAAK,EAAE;AAAEo8C,MAAAA,YAAY,EAAE;AAAhB;GAAhD,EACG7a,oBAAoB,CAACoH,OAArB,CAA6BhT,QAA7B,CAAsC;AAAEnzB,IAAAA,IAAI,EAAEA;AAAR,GAAtC,CADH,CANF,EASE9B,4BAAA,CAAC04B,eAAD;AAAe34B,IAAAA,SAAS,EAAC;AAAiCwV,IAAAA,EAAE,EAAE;AAAET,MAAAA,IAAI,EAAE,CAAR;AAAW6mC,MAAAA,MAAM,EAAE;AAAnB;GAA9D,CATF,CAHF,EAeGV,UAAU,IACTj7C,4BAAA,CAAC44C,mBAAD;AACE/X,IAAAA,oBAAoB,EAAEA;AACtBjQ,IAAAA,KAAK,EAAE6qB;AACPvyC,IAAAA,QAAQ,EAAE;AACVzG,IAAAA,KAAK,EAAEw4C;GAJT,CAhBJ,EAuBG,CAACA,UAAD,IAAeT,eAAf,GAAiCx6C,4BAAA,CAACy5C,kBAAD;AAAoB7oB,IAAAA,KAAK,EAAE6qB;GAA3B,CAAjC,GAAkF,IAvBrF,EAyBEz7C,4BAAA,CAACyU,IAAD;AAAMW,IAAAA,IAAI;AAACrV,IAAAA,SAAS,EAAC;GAArB,EACGi7C,YAAY,CAACr4C,GAAb,CAAiB,UAACF,KAAD;;;AAChB,QAAMm5C,oBAAoB,4BAAGp9B,YAAY,CAACjS,gBAAhB,qBAAG,sBAA+B7D,IAA/B,CAC3B,UAAC4D,eAAD;AAAA;;AAAA,aAAqBA,eAAe,CAAC3D,SAAhB,wBAA8BlG,KAAK,CAACvB,OAApC,qBAA8B,eAAeyH,SAA7C,CAArB;AAAA,KAD2B,CAA7B;AAIA,WACE3I,4BAAA,CAAC44C,mBAAD;AACE/X,MAAAA,oBAAoB,EAAEA;AACtBj+B,MAAAA,GAAG,qBAAEH,KAAK,CAACvB,OAAR,qBAAE,gBAAeyH;AACpBioB,MAAAA,KAAK,EAAEoL,yBAAyB,CAC9B,oBAAAv5B,KAAK,CAACvB,OAAN,qCAAeM,WAAf,KAA8B,EADA,qBAE9BiB,KAAK,CAACvB,OAFwB,qBAE9B,gBAAeK,KAFe,qBAG9BkB,KAAK,CAACvB,OAHwB,qBAG9B,gBAAenE,WAHe;AAKhCmM,MAAAA,QAAQ,EAAE,CAAA0yC,oBAAoB,QAApB,YAAAA,oBAAoB,CAAE1yC,QAAtB,KAAkC;AAC5CzG,MAAAA,KAAK,EAAEA;KATT,CADF;AAaD,GAlBA,CADH,CAzBF,EA+CG,CAAC,0BAAC+b,YAAY,CAACqP,MAAd,aAAC,qBAAqBzqB,MAAtB,CAAD,IACCpD,4BAAA,wBAAA,MAAA,EACEA,4BAAA,CAACyU,IAAD;AAAMqF,IAAAA,OAAO,EAAC;AAAO2U,IAAAA,aAAa,EAAC;AAAM1U,IAAAA,UAAU,EAAC;AAASvE,IAAAA,OAAO,EAAE;GAAtE,EACExV,4BAAA,CAAChB,UAAD;AAAYb,IAAAA,OAAO,EAAC;AAAKoB,IAAAA,KAAK,EAAC;AAAUD,IAAAA,KAAK,EAAE;AAAEo8C,MAAAA,YAAY,EAAE;AAAhB;GAAhD,EACG7a,oBAAoB,CAACoH,OAArB,CAA6BG,kBADhC,CADF,EAIEpoC,4BAAA,CAAC04B,eAAD;AAAe34B,IAAAA,SAAS,EAAC;AAAiCwV,IAAAA,EAAE,EAAE;AAAET,MAAAA,IAAI,EAAE,CAAR;AAAW6mC,MAAAA,MAAM,EAAE;AAAnB;GAA9D,CAJF,CADF,EAOGn9B,YAAY,CAACqP,MAAb,CAAoBlrB,GAApB,CAAwB,UAACqrB,KAAD;;;AACvB,QAAM6tB,UAAU,4BAAG7tB,KAAK,CAACA,KAAN,CAAYzrB,WAAf,qBAAG,sBAAyBmG,IAAzB,CACjB,UAACjG,KAAD;AAAA,aAAWA,KAAK,CAACJ,aAAN,KAAwBmc,YAAY,CAACnc,aAAhD;AAAA,KADiB,CAAnB;AAIA,QAAI,CAACw5C,UAAL,EAAiB,OAAO,IAAP;AAEjB,QAAMC,aAAa,GAAG9tB,KAAK,CAAC9kB,QAAN,IAAkB8kB,KAAK,CAAC9kB,QAAN,GAAiB,CAAnC,GAAuC8kB,KAAK,CAAC9kB,QAA7C,GAAwD,CAA9E;AAEA,WACElJ,4BAAA,CAAC44C,mBAAD;AACE/X,MAAAA,oBAAoB,EAAEA;AACtBj+B,MAAAA,GAAG,EAAEorB,KAAF,oCAAEA,KAAK,CAAEA,KAAT,qBAAE,aAAc3qB;AACnButB,MAAAA,KAAK,EAAE5C,KAAK,CAACA,KAAN,CAAYxsB;AACnB0H,MAAAA,QAAQ,EAAE4yC;AACVr5C,MAAAA,KAAK,EAAEo5C;KALT,CADF;AASD,GAlBA,CAPH,CAhDJ,EA6EG,CAACP,YAAD,IAAiBt7C,4BAAA,CAAC04B,eAAD;AAAe34B,IAAAA,SAAS,EAAC;GAAzB,CA7EpB,EA8EGu7C,YAAY,IACXt7C,4BAAA,CAACyU,IAAD;AAAMqF,IAAAA,OAAO,EAAC;AAAO2U,IAAAA,aAAa,EAAC;AAAM1U,IAAAA,UAAU,EAAC;AAASvE,IAAAA,OAAO,EAAE;GAAtE,EACExV,4BAAA,CAAChB,UAAD;AAAYb,IAAAA,OAAO,EAAC;AAAKoB,IAAAA,KAAK,EAAC;AAAUD,IAAAA,KAAK,EAAE;AAAEo8C,MAAAA,YAAY,EAAE;AAAhB;GAAhD,EACG7a,oBAAoB,CAACoH,OAArB,CAA6BI,qBADhC,CADF,EAIEroC,4BAAA,CAAC04B,eAAD;AAAe34B,IAAAA,SAAS,EAAC;AAAiCwV,IAAAA,EAAE,EAAE;AAAET,MAAAA,IAAI,EAAE,CAAR;AAAW6mC,MAAAA,MAAM,EAAE;AAAnB;GAA9D,CAJF,CA/EJ,EAuFGP,qBAAqB,IACpBp7C,4BAAA,CAAC4vC,oBAAD;AACErvC,IAAAA,QAAQ,EAAE6N,SAAS,IAAIo4B;AACvB3F,IAAAA,oBAAoB,EAAEA;AACtB8E,IAAAA,qBAAqB,EAAEA;GAHzB,CAxFJ,EA+FG0V,gBAAgB,IACfr7C,4BAAA,CAAC05C,gBAAD;AACE7T,IAAAA,mBAAmB,EAAEA;AACrBW,IAAAA,6BAA6B,EAAEA;AAC/B3F,IAAAA,oBAAoB,EAAEA;GAHxB,CAhGJ,EAuGGya,YAAY,IAAIt7C,4BAAA,CAAC04B,eAAD;AAAe34B,IAAAA,SAAS,EAAC;GAAzB,CAvGnB,EAyGEC,4BAAA,CAAC65C,WAAD;AACEC,IAAAA,GAAG,EAAE7C,gBAAF,oBAAEA,gBAAgB,CAAE6C;AACvBhQ,IAAAA,UAAU,EAAEmN,gBAAF,oBAAEA,gBAAgB,CAAEnN;AAC9BtD,IAAAA,6BAA6B,EAAEA;AAC/B3F,IAAAA,oBAAoB,EAAEA;GAJxB,CAzGF,EAgHG,CAAC2Z,eAAD,GACCx6C,4BAAA,wBAAA,MAAA,EACEA,4BAAA,CAACq4C,WAAD;AAAa/4C,IAAAA,KAAK,EAAE;AAAEmW,MAAAA,SAAS,EAAE;AAAb;GAApB,EACEzV,4BAAA,CAACyU,IAAD;AAAMqF,IAAAA,OAAO,EAAC;AAAO2U,IAAAA,aAAa,EAAC;AAAStZ,IAAAA,SAAS;GAArD,EACEnV,4BAAA,CAACyU,IAAD;AAAMW,IAAAA,IAAI;AAAC0E,IAAAA,OAAO,EAAC;AAAO6Z,IAAAA,cAAc,EAAC;GAAzC,EACE3zB,4BAAA,CAAChB,UAAD;AAAYb,IAAAA,OAAO,EAAC;GAApB,EAA0B0iC,oBAAoB,CAACoH,OAArB,CAA6BS,SAAvD,CADF,EAEE1oC,4BAAA,CAAChB,UAAD;AAAYb,IAAAA,OAAO,EAAC;GAApB,EACE6B,4BAAA,CAACu2C,YAAD;AAAcnoC,IAAAA,SAAS,EAAEo4B;GAAzB,EACGgV,qBAAqB,GAAG3a,oBAAoB,CAACoH,OAArB,CAA6BK,kBAAhC,GAAqD,IAD7E,EAEG,CAACkT,qBAAD,IAA0BD,oBAA1B,GACG1a,oBAAoB,CAACoH,OAArB,CAA6BM,YADhC,GAEG,IAJN,EAKG,CAACiT,qBAAD,GACGvqC,sBAAsB;AACpBvH,IAAAA,MAAM,EAAE;AADY,KAEjButC,gBAFiB,oBAEjBA,gBAAgB,CAAEpsC,KAFD;AAGpByG,IAAAA,qBAAqB,EAAE;AAHH,KADzB,GAMG,IAXN,CADF,CAFF,CADF,EAmBEtR,4BAAA,CAACyU,IAAD;AAAMW,IAAAA,IAAI;GAAV,EACEpV,4BAAA,CAAChB,UAAD;AAAYb,IAAAA,OAAO,EAAC;AAAQoB,IAAAA,KAAK,EAAC;GAAlC,EACGshC,oBAAoB,CAACoH,OAArB,CAA6BW,sBAA7B,CAAoD;AAAEvmC,IAAAA,aAAa,EAAEmc,YAAY,CAACnc;AAA9B,GAApD,CADH,CADF,CAnBF,CADF,CADF,EA4BErC,4BAAA,CAAC04B,eAAD;AAAe34B,IAAAA,SAAS,EAAC;GAAzB,CA5BF,CADD,GA+BG,IA/IN,EAiJGgvC,gBAAgB,QAAhB,6BAAAA,gBAAgB,CAAE0H,SAAlB,mCAA6BsF,aAA7B,IACDhN,gBADC,YACDA,gBAAgB,CAAEiN,QADjB,IAED,CAAAjN,gBAAgB,QAAhB,YAAAA,gBAAgB,CAAEiN,QAAlB,CAA2BtyC,MAA3B,IAAoC,CAFnC,GAGC1J,4BAAA,CAACo4C,iBAAD,MAAA,EACEp4C,4BAAA,CAACq4C,WAAD,MAAA,EACEr4C,4BAAA,CAAChB,UAAD;AAAYb,IAAAA,OAAO,EAAC;AAAQoB,IAAAA,KAAK,EAAC;GAAlC,EACGshC,oBAAoB,CAACoH,OAArB,CAA6BO,oBADhC,CADF,EAIExoC,4BAAA,CAAChB,UAAD;AAAYb,IAAAA,OAAO,EAAC;AAAQoB,IAAAA,KAAK,EAAC;GAAlC,EACES,4BAAA,CAACu2C,YAAD;AAAcnoC,IAAAA,SAAS,EAAEo4B;GAAzB,EACGv1B,sBAAsB,CAAC;AACtBvH,IAAAA,MAAM,EAAE,CAAAqlC,gBAAgB,QAAhB,qCAAAA,gBAAgB,CAAEiN,QAAlB,2CAA4BtyC,MAA5B,KAAsC,CAAAqlC,gBAAgB,QAAhB,qCAAAA,gBAAgB,CAAE+K,GAAlB,2CAAuBpwC,MAAvB,KAAiC,CAAvE,CADc;AAEtBwH,IAAAA,QAAQ,EAAE69B,gBAAF,oBAAEA,gBAAgB,CAAEiN,QAAlB,CAA2B9qC,QAFf;AAGtBI,IAAAA,qBAAqB,EAAE;AAHD,GAAD,CADzB,CADF,CAJF,CADF,CAHD,GAmBG,IApKN,EAsKEtR,4BAAA,CAAC25C,sBAAD;AACE9T,IAAAA,mBAAmB,EAAEA;AACrBW,IAAAA,6BAA6B,EAAEA;AAC/B3F,IAAAA,oBAAoB,EAAEA;GAHxB,CAtKF,EA4KE7gC,4BAAA,CAACo4C,iBAAD,MAAA,EACEp4C,4BAAA,CAACq4C,WAAD,MAAA,EACEr4C,4BAAA,CAACq6C,YAAD;AAAcl8C,IAAAA,OAAO,EAAC;GAAtB,EAA4B0iC,oBAAoB,CAACoH,OAArB,CAA6BU,YAAzD,CADF,EAEE3oC,4BAAA,CAACq6C,YAAD;AAAcl8C,IAAAA,OAAO,EAAC;GAAtB,EACE6B,4BAAA,CAACu2C,YAAD;AAAcnoC,IAAAA,SAAS,EAAEo4B;GAAzB,EACGv1B,sBAAsB;AAAGvH,IAAAA,MAAM,EAAE;AAAX,KAAiBqlC,gBAAjB,oBAAiBA,gBAAgB,CAAElkC,KAAnC;AAA0CyG,IAAAA,qBAAqB,EAAE;AAAjE,KADzB,CADF,CAFF,CADF,CA5KF,EAuLEtR,4BAAA,CAACu3C,gBAAD;AACEz1C,IAAAA,IAAI,EAAEA;AACN+d,IAAAA,kBAAkB,EAAEA;AACpBgmB,IAAAA,mBAAmB,EAAEA;AACrBW,IAAAA,6BAA6B,EAAEA;AAC/B3F,IAAAA,oBAAoB,EAAEA;AACtBx+B,IAAAA,aAAa,EAAEmc,YAAY,CAACnc;GAN9B,CAvLF,EAgMErC,4BAAA,CAACgU,MAAD;gBACY4mC;cACF7V,UAAU,IAAIyV;AACtBj6C,IAAAA,QAAQ,EACN6N,SAAS,IACTo4B,6BADA,IAEAnC,WAAW,CAACQ,gBAAZ,CAA6Br0B,UAF7B,IAGCu0B,UAAU,IAAI,CAACwV;AAElBx6C,IAAAA,SAAS,EAAC;AACVwV,IAAAA,EAAE,EAAE;AAAEqc,MAAAA,aAAa,EAAE,MAAjB;AAAyBxd,MAAAA,YAAY,EAAE,MAAvC;AAA+CqB,MAAAA,SAAS,EAAE,MAA1D;AAAkE3E,MAAAA,MAAM,EAAE;AAA1E;AACJ3S,IAAAA,OAAO,EAAC;AACR0S,IAAAA,IAAI,EAAC;AACLJ,IAAAA,OAAO,EAAE,iBAACkF,CAAD;AACP,WAAKwlC,eAAe,CAACxlC,CAAD,CAApB;AACD;AACDQ,IAAAA,SAAS;GAhBX,EAiBEnW,4BAAA,CAAChB,UAAD;AACEe,IAAAA,SAAS,EAAC;AACV5B,IAAAA,OAAO,EAAC;AACRoB,IAAAA,KAAK,EAAC;AACND,IAAAA,KAAK,EAAE;AAAEwa,MAAAA,OAAO,EAAE;AAAX;GAJT,EAKG8gC,+BAA+B,GAC9B56C,4BAAA,CAAC8vB,IAAD;AAAMC,IAAAA,IAAI,EAAC;AAAQzwB,IAAAA,KAAK,EAAE;AAAEwa,MAAAA,OAAO,EAAE;AAAX;GAA1B,CAD8B,GAE5B1L,SAAS,IAAIo4B,6BAAb,GACFxmC,4BAAA,CAACsvC,gBAAD;AAAkBz+B,IAAAA,IAAI,EAAE;AAAI0E,IAAAA,EAAE,EAAE;AAAEhW,MAAAA,KAAK,EAAE;AAAT;GAAhC,CADE,GAGF+6C,yBAAyB,CAAC;AACxBvV,IAAAA,UAAU,EAAVA,UADwB;AAExBwV,IAAAA,kBAAkB,EAAlBA,kBAFwB;AAGxBC,IAAAA,eAAe,EAAfA,eAHwB;AAIxB3Z,IAAAA,oBAAoB,EAApBA,oBAJwB;AAKxB4Z,IAAAA,YAAY,EAAE,CAAC,CAAC56B,kBAAF,IAAwB,CAAAA,kBAAkB,QAAlB,YAAAA,kBAAkB,CAAE/d,IAApB,CAAyBuB,EAAzB,OAAgCvB,IAAhC,oBAAgCA,IAAI,CAAEuB,EAAtC;AALd,GAAD,CAV7B,CAjBF,CAhMF,CADF,EAuOErD,4BAAA,CAACid,cAAD;AACEC,IAAAA,MAAM,EAAC;AACPC,IAAAA,aAAa,EAAEwB;AACfrf,IAAAA,KAAK,EAAE;AAAEmW,MAAAA,SAAS,EAAE,CAAb;AAAgBqE,MAAAA,OAAO,EAAE,MAAzB;AAAiC6Z,MAAAA,cAAc,EAAE;AAAjD;GAHT,CAvOF,EA4OG,CAAC6hB,uBAAD,IAA4BoF,+BAA5B,IACC56C,4BAAA,CAAC00C,eAAD;AAAiB7T,IAAAA,oBAAoB,EAAEA;GAAvC,CA7OJ,CADF;AAkPD,CAjUM;;ACpGA,IAAMob,uBAAuB,GAAG,SAA1BA,uBAA0B;MAAGt9B,gCAAAA;AACxC,SACE3e,4BAAA,CAAC+5C,gBAAD,MAAA,EACE/5C,4BAAA,CAACg6C,WAAD,MAAA,EACEh6C,4BAAA,CAACwU,kBAAD;sBAAmC;YAAe;GAAlD,EACExU,4BAAA,CAAC+U,QAAD;AAAUM,IAAAA,KAAK,EAAE;AAAKvE,IAAAA,MAAM,EAAE;GAA9B,CADF,EAGE9Q,4BAAA,CAAC+U,QAAD;AAAUM,IAAAA,KAAK,EAAE;AAAKvE,IAAAA,MAAM,EAAE;GAA9B,CAHF,EAKE9Q,4BAAA,CAAC+U,QAAD;AAAUM,IAAAA,KAAK,EAAE;AAAKvE,IAAAA,MAAM,EAAE;GAA9B,CALF,EAOE9Q,4BAAA,CAAC+U,QAAD;AAAUM,IAAAA,KAAK,EAAE;AAAKvE,IAAAA,MAAM,EAAE;GAA9B,CAPF,CADF,EAWE9Q,4BAAA,CAACwU,kBAAD;sBAAmC;YAAe;AAAIiB,IAAAA,SAAS,EAAE;GAAjE,EACEzV,4BAAA,CAAC+U,QAAD;AAAUjE,IAAAA,MAAM,EAAE;GAAlB,CADF,EAGE9Q,4BAAA,CAAC+U,QAAD;AAAUjE,IAAAA,MAAM,EAAE;GAAlB,CAHF,EAKE9Q,4BAAA,CAAC+U,QAAD;AAAUjE,IAAAA,MAAM,EAAE;GAAlB,CALF,CAXF,EAmBE9Q,4BAAA,CAAC6U,cAAD;AAAgBC,IAAAA,IAAI,EAAE;AAAGW,IAAAA,SAAS,EAAE;GAApC,EACEzV,4BAAA,CAAC+U,QAAD;AAAUjE,IAAAA,MAAM,EAAE;GAAlB,CADF,CAnBF,CADF,EAwBE9Q,4BAAA,CAACid,cAAD;AACEC,IAAAA,MAAM,EAAC;AACPC,IAAAA,aAAa,EAAEwB;AACfrf,IAAAA,KAAK,EAAE;AAAEmW,MAAAA,SAAS,EAAE,CAAb;AAAgBqE,MAAAA,OAAO,EAAE,MAAzB;AAAiC6Z,MAAAA,cAAc,EAAE;AAAjD;GAHT,CAxBF,CADF;AAgCD,CAjCM;;;ACCA,IAAMuoB,uBAAuB,gBAAG,QAAOznC,IAAP;AAAA;AAAA;AAAA;AAAA;AAAA,EAAH;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAA7B;AAKP,AAAO,IAAM0nC,sBAAsB,gBAAG,QAAO1nC,IAAP;AAAA;AAAA;AAAA;AAAA;AAAA,EAAH,iDAK/B6d,EAAE,CAACN,EAL4B,40CAA5B;AAcP,AAAO,IAAMoqB,WAAW,gBAAG,QAAOpoC,MAAP;AAAA;AAAA;AAAA;AAAA;AAAA,EAAH;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAAjB;;ACMP,SAASqoC,aAAT;;;MACEruB,aAAAA;MACA3rB,qBAAAA;MACAi6C,kBAAAA;MACAC,yBAAAA;MACA/b,gBAAAA;MACAC,mBAAAA;MACAI,4BAAAA;MACA2b,gCAAAA;MACAtb,eAAAA;AAEA,MAAM2X,mBAAmB,GAAGrmB,oBAAoB,CAAC,IAAD,CAAhD;AACA,MAAMqpB,UAAU,GAAG7tB,KAAK,CAACzrB,WAAN,CAAkBmG,IAAlB,CAAuB,UAAC0K,UAAD;AAAA,WAAgBA,UAAU,CAAC/Q,aAAX,KAA6BA,aAA7C;AAAA,GAAvB,CAAnB;AACA,MAAMo6C,OAAO,GAAG,CAAC,CAACH,UAAlB;AACA,MAAMI,UAAU,GACb,CAAC,CAACJ,UAAF,IAAgB,CAAC,CAACC,iBAAlB,IAAuCD,UAAU,CAACpzC,QAAX,KAAwBqzC,iBAAiB,CAACrzC,QAAlF,IACC,CAAC,CAACqzC,iBAAF,IAAuB,CAACD,UAF3B;;AAIA,MAAMK,oBAAoB,GAAG,SAAvBA,oBAAuB,CAACzzC,QAAD;AAC3B,QAAI,CAACA,QAAD,IAAaA,QAAQ,IAAI,CAA7B,EAAgC;AAC9BszC,MAAAA,wBAAwB,CAAC;AAAEtuB,QAAAA,OAAO,EAAEF,KAAK,CAAC3qB,EAAjB;AAAqB69B,QAAAA,OAAO,EAAE;AAA9B,OAAD,CAAxB,CAD8B;AAG9B;;AACAV,MAAAA,QAAQ,CAACxS,KAAD,EAAQ9kB,QAAR,WAAQA,QAAR,GAAoB,IAApB,CAAR;AACA;AACD;;AAEDszC,IAAAA,wBAAwB,CAAC;AAAEtuB,MAAAA,OAAO,EAAEF,KAAK,CAAC3qB,EAAjB;AAAqB69B,MAAAA,OAAO,EAAE;AAA9B,KAAD,CAAxB;AACAV,IAAAA,QAAQ,CAACxS,KAAD,EAAQ9kB,QAAR,CAAR;AACD,GAXD;;AAaA,MAAM0zC,UAAU,GAAG,SAAbA,UAAa;AACjB,QAAIL,iBAAJ,EAAuB;AACrB/b,MAAAA,QAAQ,CAACxS,KAAD,EAAQuuB,iBAAiB,CAACrzC,QAA1B,CAAR;AACD,KAFD,MAEO;AACLu3B,MAAAA,WAAW,CAACzS,KAAK,CAAC3qB,EAAP,CAAX;AACD;;AAEDm5C,IAAAA,wBAAwB,CAAC;AAAEtuB,MAAAA,OAAO,EAAEF,KAAK,CAAC3qB,EAAjB;AAAqB69B,MAAAA,OAAO,EAAE;AAA9B,KAAD,CAAxB;AACD,GARD;;AAUA,SACElhC,4BAAA,CAACm8C,sBAAD;AAAwBhnC,IAAAA,SAAS;GAAjC,EACEnV,4BAAA,CAACyU,IAAD;AAAMW,IAAAA,IAAI;GAAV,EACEpV,4BAAA,CAAChB,UAAD;AAAYb,IAAAA,OAAO,EAAC;AAAKqZ,IAAAA,UAAU,EAAC;GAApC,EACGwW,KAAK,CAACxsB,WADT,CADF,EAIG,CAAC,CAACq6C,UAAF,IACC77C,4BAAA,CAAChB,UAAD;AAAYb,IAAAA,OAAO,EAAC;AAAQqZ,IAAAA,UAAU,EAAC;AAAOjY,IAAAA,KAAK,EAAC;GAApD,EACM0R,sBAAsB,CAAC;AACzBvH,IAAAA,MAAM,EAAEmyC,UAAU,CAACnyC,MADM;AAEzBwH,IAAAA,QAAQ,EAAE2qC,UAAU,CAAC3qC,QAFI;AAGzBI,IAAAA,qBAAqB,EAAE;AAHE,GAAD,CAD5B,UAKQjP,aAAa,KAAK+F,aAAa,CAACyB,QAAhC,GAA2C,MAA3C,GAAoD,OAL5D,EALJ,CADF,EAeE7J,4BAAA,CAACyU,IAAD;AAAMW,IAAAA,IAAI;AAACG,IAAAA,EAAE,EAAE;AAAEyE,MAAAA,GAAG,EAAE;AAAP;AAAiB7E,IAAAA,SAAS,EAAE,CAAC0jC;GAA5C,EACG6D,UAAU,IACT18C,4BAAA,CAACgU,MAAD;AAAQ7V,IAAAA,OAAO,EAAC;AAAO0S,IAAAA,IAAI,EAAC;AAAQ0E,IAAAA,EAAE,EAAE;AAAEhB,MAAAA,OAAO,EAAE,KAAX;AAAkBm7B,MAAAA,QAAQ,EAAE;AAA5B;AAAuCj/B,IAAAA,OAAO,EAAEmsC;GAAxF,EACE58C,4BAAA,CAAChB,UAAD;AAAYO,IAAAA,KAAK,EAAC;AAAepB,IAAAA,OAAO,EAAC;GAAzC,QAAA,CADF,CAFJ,EAQGs+C,OAAO,IACNz8C,4BAAA,wBAAA,MAAA,EACEA,4BAAA,CAACiU,UAAD;AACE5Q,IAAAA,EAAE,EAAK2qB,KAAK,CAAC3qB,EAAX;AACF4S,IAAAA,IAAI,EAAC;AACLC,IAAAA,OAAO,EAAER;AACTH,IAAAA,EAAE,EAAEsjC,mBAAmB,GAAG;AAAEgE,MAAAA,OAAO,EAAE,CAAX;AAAcxnC,MAAAA,KAAK,EAAE;AAArB,KAAH,GAAgC;AAAEP,MAAAA,IAAI,EAAE;AAAR;AACvDiB,IAAAA,KAAK,0BAAEumC,UAAF,oBAAEA,UAAU,CAAEpzC,QAAd,mCAA0B;AAC/BrL,IAAAA,KAAK,EAAE,CAACqjC;AACR4b,IAAAA,UAAU,EAAE,CAAC5b,OAAD,GAAW,WAAX,GAAyBtoB;AACrCmkC,IAAAA,mBAAmB,EAAE;AAAExnC,MAAAA,EAAE,EAAE;AAAEomC,QAAAA,MAAM,EAAE;AAAV;AAAN;AACrBllC,IAAAA,QAAQ,EAAE,kBAACC,KAAD;AAAA;;AAAA,aAAWimC,oBAAoB,CAACjmC,KAAK,QAAL,qBAAAA,KAAK,CAAEd,MAAP,2BAAeG,KAAf,GAAuBY,MAAM,CAACD,KAAD,sCAACA,KAAK,CAAEd,MAAR,qBAAC,eAAeG,KAAhB,CAA7B,GAAsD,IAAvD,CAA/B;AAAA;GATZ,CADF,EAYE/V,4BAAA,CAACo8C,WAAD;AACE78C,IAAAA,KAAK,EAAC;AACNkR,IAAAA,OAAO,EAAE;AACPgwB,MAAAA,WAAW,CAACzS,KAAK,CAAC3qB,EAAP,CAAX;AACAm5C,MAAAA,wBAAwB,CAAC;AAAEtuB,QAAAA,OAAO,EAAEF,KAAK,CAAC3qB,EAAjB;AAAqB69B,QAAAA,OAAO,EAAE;AAA9B,OAAD,CAAxB;AACD;GALH,EAMElhC,4BAAA,CAAC8vB,IAAD;AAAMC,IAAAA,IAAI,EAAC;AAAQzwB,IAAAA,KAAK,EAAE;AAAEwa,MAAAA,OAAO,EAAE;AAAX;GAA1B,CANF,CAZF,CATJ,EA+BG,CAAC2iC,OAAD,IACCz8C,4BAAA,CAACgU,MAAD;AAAQuB,IAAAA,EAAE,EAAE;AAAEynC,MAAAA,QAAQ,EAAE,MAAZ;AAAoBC,MAAAA,QAAQ,EAAE;AAA9B;AAAuCxsC,IAAAA,OAAO,EAAE;AAAA,aAAMksC,oBAAoB,CAAC,CAAD,CAA1B;AAAA;GAA5D,EACE38C,4BAAA,CAAChB,UAAD;AAAYO,IAAAA,KAAK,EAAC;AAAepB,IAAAA,OAAO,EAAC;GAAzC,EACG0iC,oBAAoB,CAACgH,YADxB,CADF,CAhCJ,CAfF,CADF;AAyDD;;AAED,SAAgBqV;AACd,0BAA6C/b,gBAAgB,EAA7D;AAAA,MAAQN,oBAAR,qBAAQA,oBAAR;AAAA,MAA8BQ,UAA9B,qBAA8BA,UAA9B;;AACA,0BAA0B2B,gBAAgB,EAA1C;AAAA,MAAQ3gC,aAAR,qBAAQA,aAAR;;AACA,6BAA0BuiC,mBAAmB,EAA7C;AAAA,MAAQO,aAAR,wBAAQA,aAAR;;AACA,4BAA0E7E,kBAAkB,EAA5F;AAAA,MAAQZ,aAAR,uBAAQA,aAAR;AAAA,MAAuB7R,MAAvB,uBAAuBA,MAAvB;AAAA,MAA+ByR,eAA/B,uBAA+BA,eAA/B;AAAA,MAAgDkB,QAAhD,uBAAgDA,QAAhD;AAAA,MAA0DC,WAA1D,uBAA0DA,WAA1D;;AACA,kBAAgDtyB,QAAQ,CACtD,CAAAmxB,eAAe,QAAf,YAAAA,eAAe,CAAE/iB,MAAjB,CAAiD,UAAC4gC,GAAD,EAAMC,IAAN;AAC/CD,IAAAA,GAAG,CAACC,IAAI,CAAC/5C,EAAN,CAAH,GAAe,IAAf;AACA,WAAO85C,GAAP;AACD,GAHD,EAGG,EAHH,MAGU,EAJ4C,CAAxD;AAAA,MAAOE,gBAAP;AAAA,MAAyBC,mBAAzB;;AAOA73B,EAAAA,SAAS,CAAC;AACR,QAAMjV,UAAU,GAAGmK,MAAM,CAAC+D,MAAP,CAAc2+B,gBAAd,EAAgChyC,IAAhC,CAAqC,UAACmU,CAAD;AAAA,aAAO,CAACA,CAAR;AAAA,KAArC,CAAnB;AACA2lB,IAAAA,aAAa,CAAC30B,UAAD,CAAb;AACA6wB,IAAAA,UAAU,CAAC,CAAC7wB,UAAF,CAAV;AACD,GAJQ,EAIN,CAAC6sC,gBAAD,EAAmBlY,aAAnB,EAAkC9D,UAAlC,CAJM,CAAT;AAMA,SACErhC,4BAAA,CAACk8C,uBAAD;AAAyB/mC,IAAAA,SAAS;GAAlC,EACGmqB,eADH,oBACGA,eAAe,CAAE38B,GAAjB,CAAqB,UAACqrB,KAAD;AACpB,QAAMsuB,UAAU,GAAGzuB,MAAM,CAACnlB,IAAP,CAAY,UAAC8W,CAAD;AAAA,aAAOA,CAAC,CAACwO,KAAF,CAAQ3qB,EAAR,KAAe2qB,KAAK,CAAC3qB,EAA5B;AAAA,KAAZ,CAAnB;AACA,QAAMk5C,iBAAiB,GAAG7c,aAAH,oBAAGA,aAAa,CAAEh3B,IAAf,CAAoB,UAAC8W,CAAD;AAAA,aAAOA,CAAC,CAACwO,KAAF,CAAQ3qB,EAAR,KAAe2qB,KAAK,CAAC3qB,EAA5B;AAAA,KAApB,CAA1B;AACA,QAAM69B,OAAO,GAAGmc,gBAAgB,CAACrvB,KAAK,CAAC3qB,EAAP,CAAhC;AAEA,WACErD,4BAAA,CAACq8C,aAAD;AACEz5C,MAAAA,GAAG,EAAEorB,KAAK,CAAC3qB;AACX2qB,MAAAA,KAAK,EAAEA;AACP3rB,MAAAA,aAAa,EAAEA;AACfi6C,MAAAA,UAAU,EAAEA;AACZC,MAAAA,iBAAiB,EAAEA;AACnB/b,MAAAA,QAAQ,EAAEA;AACVC,MAAAA,WAAW,EAAEA;AACbI,MAAAA,oBAAoB,EAAEA;AACtB2b,MAAAA,wBAAwB,EAAE;AAAA;;AAAA,YAAGtuB,OAAH,SAAGA,OAAH;AAAA,YAAYgT,OAAZ,SAAYA,OAAZ;AAAA,eACxBoc,mBAAmB,cAAMD,gBAAN,6BAAyBnvB,OAAzB,IAAmCgT,OAAnC,cADK;AAAA;AAG1BA,MAAAA,OAAO,EAAEA;KAZX,CADF;AAgBD,GArBA,CADH,CADF;AA0BD;;;AC3KM,IAAMqc,sBAAsB,gBAAGrpC,MAAM,CAACO,IAAD,EAAO;AAAEd,EAAAA,iBAAiB,EAAE,2BAACC,IAAD;AAAA,WAAU,CAACA,IAAI,CAACC,UAAL,CAAgB,GAAhB,CAAX;AAAA;AAArB,CAAP,CAAT,qMAKb;AAAA,MAAGvW,KAAH,QAAGA,KAAH;AAAA,SAAeA,KAAK,CAACE,KAAN,CAAYC,OAAZ,CAAoBoH,cAAnC;AAAA,CALa,EAMvB;AAAA,MAAGyI,SAAH,SAAGA,SAAH;AAAA,SAAoBA,SAAS,GAAG,aAAH,GAAmB,SAAhD;AAAA,CANuB,EAOtB;AAAA,MAAGA,SAAH,SAAGA,SAAH;AAAA,SAAoBA,SAAS,GAAG,GAAH,GAAS,CAAtC;AAAA,CAPsB,CAA5B;AAUP,AAAO,IAAMkwC,yBAAyB,gBAAGtpC,MAAM,CAACqpC,sBAAD,CAAT,0JAGlC;AAAA,MAAGE,YAAH,SAAGA,YAAH;AAAA,SACAA,YAAY,IACZlwC,GADY,8HADZ;AAAA,CAHkC,CAA/B;AAWP,AAAO,IAAMmwC,4BAA4B,gBAAGxpC,MAAM,CAACO,IAAD,CAAT,+JAAlC;AAOP,AAAO,IAAMkpC,0BAA0B,gBAAGzpC,MAAM,CAACO,IAAD,CAAT,wIAAhC;;ACEP,SAASmpC,mBAAT;MAA+B/hC,eAAAA;MAAS/d,YAAAA;MAAM+/C,gBAAAA;MAAU7c,gBAAAA;AACtD,SACEhhC,4BAAA,CAAC09C,4BAAD,MAAA,EACE19C,4BAAA,CAAC89C,KAAD;AAAOjiC,IAAAA,OAAO,EAAEA;AAAStb,IAAAA,QAAQ,EAAEygC;GAAnC,CADF,EAEEhhC,4BAAA,CAAC29C,0BAAD;AAA4BxoC,IAAAA,SAAS;GAArC,EACEnV,4BAAA,CAACyU,IAAD;AAAMW,IAAAA,IAAI;GAAV,EAAYtX,IAAZ,CADF,EAEG+/C,QAAQ,IAAI79C,4BAAA,CAACyU,IAAD;AAAMW,IAAAA,IAAI;GAAV,EAAYyoC,QAAZ,CAFf,CAFF,CADF;AASD;;AAED,SAAgBE;MAAwBliC,gBAAAA;MAASmrB,6BAAAA;MAAsBhG,iBAAAA;MAAUgd,iBAAAA;;AAC/E,MAAI,CAAChX,oBAAL,EAA2B;AACzB,WAAO,IAAP;AACD;;AACD,MAAQiX,WAAR,GAAyDjX,oBAAzD,CAAQiX,WAAR;AAAA,MAAqBC,eAArB,GAAyDlX,oBAAzD,CAAqBkX,eAArB;AAAA,MAAsCC,cAAtC,GAAyDnX,oBAAzD,CAAsCmX,cAAtC;AAEA,SACEn+C,4BAAA,CAACu9C,sBAAD;AAAwBnoC,IAAAA,IAAI;AAAC3E,IAAAA,OAAO,EAAEutC;iBAAqBhd;GAA3D,EACEhhC,4BAAA,CAAC49C,mBAAD;AACE/hC,IAAAA,OAAO,EAAEA;AACTmlB,IAAAA,QAAQ,EAAEA;AACVljC,IAAAA,IAAI,EAAEkC,4BAAA,CAAChB,UAAD;AAAYb,MAAAA,OAAO,EAAC;KAApB,sBAA4C8/C,WAA5C;AACNJ,IAAAA,QAAQ,EACN,CAAC,CAACK,eAAF,IACA,CAAC,CAACC,cADF,IAEEn+C,4BAAA,CAAChB,UAAD;AAAYb,MAAAA,OAAO,EAAC;KAApB,eAAwC+/C,eAAe,CACpD15C,QADqC,GAErCg3B,QAFqC,CAE5B,CAF4B,EAEzB,GAFyB,CAAxC,SAEuB2iB,cAFvB;GAPN,CADF,CADF;AAiBD;AAED,SAAgBC;MACdC,iCAAAA;MACAxiC,gBAAAA;MACAmiC,iBAAAA;MACAhd,iBAAAA;MACAH,6BAAAA;MACAiP,+BAAAA;MACAC,2BAAAA;AAEA,SACE/vC,4BAAA,CAACw9C,yBAAD;AAA2BpoC,IAAAA,IAAI;oBAAe,CAACipC;AAA0B5tC,IAAAA,OAAO,EAAEutC;iBAAqBhd;GAAvG,EACGqd,wBAAwB,IACvBr+C,4BAAA,CAAC49C,mBAAD;AACE/hC,IAAAA,OAAO,EAAEA;AACTmlB,IAAAA,QAAQ,EAAEA;AACVljC,IAAAA,IAAI,EAAEkC,4BAAA,CAAChB,UAAD;AAAYb,MAAAA,OAAO,EAAC;KAApB,EAA0B0iC,oBAAoB,CAACiH,oBAA/C;GAHR,CAFJ,EAQE9nC,4BAAA,CAACw5C,QAAD;AAAU,UAAI39B;GAAd,EACE7b,4BAAA,CAAC6vC,iBAAD;AAAmBC,IAAAA,sBAAsB,EAAEA;AAAwBC,IAAAA,kBAAkB,EAAEA;GAAvF,CADF,CARF,CADF;AAcD;;;ACrFD,IAAMuO,gBAAgB,gBAAGpqC,MAAM,CAACO,IAAD,CAAT,wJAAtB;AAMA,SAAgB8pC;MACdzO,8BAAAA;MACAC,0BAAAA;;AAEA,0BAA6D5O,gBAAgB,EAA7E;AAAA,MAAQL,aAAR,qBAAQA,aAAR;AAAA,MAAuBD,oBAAvB,qBAAuBA,oBAAvB;AAAA,MAA6CD,WAA7C,qBAA6CA,WAA7C;;AACA,cAAqBE,aAAa,IAAI,EAAtC;AAAA,MAAQ/yB,QAAR,SAAQA,QAAR;;AACA,6BAAsEs5B,mBAAmB,EAAzF;AAAA,MAAQvB,YAAR,wBAAQA,YAAR;AAAA,MAAsBiB,mBAAtB,wBAAsBA,mBAAtB;AAAA,MAA2CO,sBAA3C,wBAA2CA,sBAA3C;;AACA,MAAQtG,QAAR,GAAqBJ,WAArB,CAAQI,QAAR;;AAEA,MAAMwd,cAAc,GAAG,SAAjBA,cAAiB,CAACC,oBAAD;AACrB,QAAIzd,QAAJ,EAAc;AACZ;AACD;;AAEDsG,IAAAA,sBAAsB,CAACmX,oBAAD,CAAtB;AACD,GAND;;AAQA,SACEz+C,4BAAA,CAACs+C,gBAAD;AAAkBnpC,IAAAA,SAAS;GAA3B,EACG,CAAC,CAAC2wB,YAAF,IACC9lC,4BAAA,CAAC0+C,KAAD;AAAOC,IAAAA,QAAQ,EAAC;AAAQppC,IAAAA,EAAE,EAAE;AAAEwE,MAAAA,UAAU,EAAE;AAAd;GAA5B,EACE/Z,4BAAA,CAAChB,UAAD;AAAYQ,IAAAA,aAAa,EAAC;GAA1B,EAAqCsmC,YAArC,CADF,CAFJ,EAME9lC,4BAAA,CAAC+9C,qBAAD;AACE/c,IAAAA,QAAQ,EAAEA;AACVnlB,IAAAA,OAAO,EAAE,CAACkrB;AACVC,IAAAA,oBAAoB,EAAEj5B,QAAF,oBAAEA,QAAQ,CAAEi5B;AAChCgX,IAAAA,QAAQ,EAAE;AAAA,aAAMQ,cAAc,CAAC,KAAD,CAApB;AAAA;GAJZ,CANF,EAYEx+C,4BAAA,CAACo+C,gBAAD;AACEC,IAAAA,wBAAwB,EAAE,CAAC,EAACtwC,QAAD,YAACA,QAAQ,CAAEi5B,oBAAX;AAC3BhG,IAAAA,QAAQ,EAAEA;AACVnlB,IAAAA,OAAO,EAAEkrB;AACTlG,IAAAA,oBAAoB,EAAEA;AACtBmd,IAAAA,QAAQ,EAAE;AAAA,aAAMQ,cAAc,CAAC,IAAD,CAApB;AAAA;AACV1O,IAAAA,sBAAsB,EAAEA;AACxBC,IAAAA,kBAAkB,EAAEA;GAPtB,CAZF,CADF;AAwBD;;ACnDM,IAAM6O,gBAAgB,GAAG,SAAnBA,gBAAmB;MAC9BnuC,eAAAA;MACAowB,4BAAAA;MACAhwB,YAAAA;AAMA,SACE7Q,4BAAA,CAACgU,QAAD;AACEjU,IAAAA,SAAS,EAAC;AACVwV,IAAAA,EAAE,EAAE;AAAEqc,MAAAA,aAAa,EAAE;AAAjB;AACJzzB,IAAAA,OAAO,EAAC;AACR0S,IAAAA,IAAI,EAAEA;AACNJ,IAAAA,OAAO,EAAEA;GALX,EAMEzQ,4BAAA,CAAChB,UAAD;AACEe,IAAAA,SAAS,EAAC;AACVR,IAAAA,KAAK,EAAC;AACNpB,IAAAA,OAAO,EAAC;AACRmB,IAAAA,KAAK,EAAE;AAAEkY,MAAAA,UAAU,EAAE;AAAd;GAJT,EAKGqpB,oBAAoB,CAAC8G,UALxB,CANF,CADF;AAgBD,CAzBM;;SCSSvuB;kCAAaylC;MAAAA,oDAAkB;MAAOC,oBAAAA;;AACpD,0BAAgD3d,gBAAgB,EAAhE;AAAA,MAAQL,aAAR,qBAAQA,aAAR;AAAA,MAAuBD,oBAAvB,qBAAuBA,oBAAvB;;AACA,cAAiBC,aAAa,IAAI,EAAlC;AAAA,MAAQh/B,IAAR,SAAQA,IAAR;;AAEA,SACE9B,4BAAA,wBAAA,MAAA,EACEA,4BAAA,CAAC+uB,GAAD;AAAKxZ,IAAAA,EAAE,EAAE;AAAE+S,MAAAA,YAAY,EAAE;AAAhB;GAAT,EACEtoB,4BAAA,CAAChB,UAAD;AAAYb,IAAAA,OAAO,EAAC;AAAQoB,IAAAA,KAAK,EAAC;AAAWD,IAAAA,KAAK,EAAE;AAAEy/C,MAAAA,OAAO,EAAE,GAAX;AAAgBz2B,MAAAA,YAAY,EAAE;AAA9B;GAApD,iBAAA,CADF,EAKEtoB,4BAAA,CAAC+uB,GAAD;AAAKxZ,IAAAA,EAAE,EAAE;AAAEuE,MAAAA,OAAO,EAAE,MAAX;AAAmB6Z,MAAAA,cAAc,EAAE;AAAnC;GAAT,EACE3zB,4BAAA,CAAChB,UAAD;AAAYb,IAAAA,OAAO,EAAC;GAApB,EAA0B2D,IAA1B,oBAA0BA,IAAI,CAAEN,WAAhC,CADF,EAGGq9C,eAAe,IAAIC,YAAnB,IACC9+C,4BAAA,CAAC4+C,gBAAD;AACEnuC,IAAAA,OAAO,EAAE;AACPquC,MAAAA,YAAY,CAAC;AAAEvwC,QAAAA,WAAW,EAAEzM;AAAf,OAAD,CAAZ;AACD;AACD++B,IAAAA,oBAAoB,EAAEA;AACtBhwB,IAAAA,IAAI,EAAC;GALP,CAJJ,CALF,CADF,EAoBE7Q,4BAAA,CAACsV,SAAD;AAASvV,IAAAA,SAAS,EAAC;GAAnB,CApBF,CADF;AAwBD;;SCxCei/C,oBAAoB38C;AAClC,UAAQA,aAAR;AACE,SAAK+F,aAAa,CAACyB,QAAnB;AACE,aAAO,QAAP;;AACF,SAAKzB,aAAa,CAACuK,OAAnB;AACE,aAAO,SAAP;;AACF;AACE,aAAO,EAAP;AANJ;AAQD;;;ACNM,IAAMssC,4BAA4B,gBAAG,QAAOlwB,GAAP;AAAA;AAAA;AAAA;AAAA;AAAA,EAAH;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAAlC;AAIP,AAAO,IAAMmwB,mBAAmB;AAAA;AAAA;AAAA;AAAA;AAAA,cAKpB;AAAA,MAAG5xC,SAAH,QAAGA,SAAH;AAAA,MAAc6xC,oBAAd,QAAcA,oBAAd;AAAA,SACR7xC,SAAS,GAAG,SAAH,GAAe6xC,oBAAoB,GAAG,SAAH,GAAe,SADnD;AAAA,CALoB,mHAapB;MAAG7hD,cAAAA;MAAO8hD,kBAAAA;MAAWD,6BAAAA;AAC7B,MAAI7qC,WAAW,GAAGhX,KAAK,CAACE,KAAN,CAAYC,OAAZ,CAAoBoH,cAAtC;;AACA,MAAIs6C,oBAAJ,EAA0B;AACxB7qC,IAAAA,WAAW,GAAG,aAAd;AACD,GAFD,MAEO,IAAI8qC,SAAJ,EAAe;AACpB9qC,IAAAA,WAAW,GAAGhX,KAAK,CAACE,KAAN,CAAYC,OAAZ,CAAoBqH,qBAAlC;AACD;;AACD,wBAAoBwP,WAApB;AACD,CArB6B,kBAsBhB;MAAGhX,cAAAA;MAAO8hD,kBAAAA;MAAWD,6BAAAA;;AACjC,MAAIA,oBAAJ,EAA0B;AACxB,WAAO,aAAP;AACD;;AACD,MAAIC,SAAJ,EAAe;AACb,WAAOr7C,KAAK,CAACzG,KAAK,CAACE,KAAN,CAAYC,OAAZ,CAAoBC,OAArB,CAAL,CAAmC6G,KAAnC,CAAyC,IAAzC,EAA+CC,QAA/C,EAAP;AACD;;AACD,SAAO,aAAP;AACD,CA9B6B,ktFAAzB;AA2CP,AAAO,IAAM66C,oBAAoB,gBAAG,QAAOtwB,GAAP;AAAA;AAAA;AAAA;AAAA;AAAA,EAAH;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAA1B;AAMP,AAAO,IAAMuwB,kBAAkB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAAxB;AAMP,AAAO,IAAMC,YAAY,gBAAG,QAAOC,IAAP;AAAA;AAAA;AAAA;AAAA;AAAA,EAAH;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAAlB;;AClDP,IAAMC,mBAAmB,GAAG,SAAtBA,mBAAsB;MAC1Bp9C,qBAAAA;MACAq9C,2BAAAA;;AAKA,0BAAmE1c,gBAAgB,EAAnF;AAAA,MAAuBr5B,qBAAvB,qBAAQtH,aAAR;AAAA,MAA8C4gC,gBAA9C,qBAA8CA,gBAA9C;;AACA,MAAM0c,QAAQ,GAAGh2C,qBAAqB,KAAKtH,aAA3C;AAEA,SACErC,4BAAA,CAACk/C,mBAAD;AACEzuC,IAAAA,OAAO,EAAE;AAAA,aAAMwyB,gBAAgB,CAAC5gC,aAAD,CAAtB;AAAA;iBACEs9C;4BACWD;GAHxB,EAIE1/C,4BAAA,CAAC89C,KAAD;AACEjiC,IAAAA,OAAO,EAAE8jC;AACTlpC,IAAAA,QAAQ,EAAE;AAAA,aAAMwsB,gBAAgB,CAAC5gC,aAAD,CAAtB;AAAA;AACV0T,IAAAA,KAAK,EAAE1T;AACP9B,IAAAA,QAAQ,EAAEm/C;AACVxQ,IAAAA,UAAU,EAAE;AAAE,oBAAc8P,mBAAmB,CAAC38C,aAAD;AAAnC;AACZkT,IAAAA,EAAE,EAAE;AAAEhB,MAAAA,OAAO,EAAE,CAAX;AAAc0f,MAAAA,WAAW,EAAE;AAA3B;GANN,CAJF,EAaEj0B,4BAAA,CAAC+uB,GAAD,MAAA,EACE/uB,4BAAA,CAAChB,UAAD;AAAYb,IAAAA,OAAO,EAAC;AAAKoB,IAAAA,KAAK,EAAC;GAA/B,EACGy/C,mBAAmB,CAAC38C,aAAD,CADtB,CADF,CAbF,CADF;AAqBD,CA/BD;;AAsCA,SAAgBgZ;MAAsBvZ,aAAAA;MAAM++B,6BAAAA;;AAC1C,mBAAsCia,WAAS,CAC7Ch5C,IAD6C,oBAC7CA,IAAI,CAAES,WADuC,EAE7C,UAACE,KAAD;AAAA,WAAWA,KAAK,CAACJ,aAAN,KAAwB+F,aAAa,CAACuK,OAAjD;AAAA,GAF6C,CAA/C;AAAA,MAAOitC,aAAP;AAAA,MAAsBC,YAAtB;;AAKA,MAAMC,qBAAqB,GAAG,CAAC,EAACF,aAAD,YAACA,aAAa,CAAEx8C,MAAhB,CAAD,IAA2B,CAAC,EAACy8C,YAAD,YAACA,YAAY,CAAEz8C,MAAf,CAA1D;;AACA,MAAI,CAAC08C,qBAAL,EAA4B;AAC1B,WAAO,IAAP;AACD;;AAED,SACE9/C,4BAAA,CAACi/C,4BAAD,MAAA,EACEj/C,4BAAA,CAAChB,UAAD;AAAYb,IAAAA,OAAO,EAAC;AAAKoB,IAAAA,KAAK,EAAC;AAAUlB,IAAAA,UAAU,EAAEgiB,UAAU,CAACwQ;GAAhE,EACGgQ,oBAAoB,CAAC+G,mBADxB,CADF,EAKE5nC,4BAAA,CAACq/C,oBAAD,MAAA,EACG,CAAC,EAACO,aAAD,YAACA,aAAa,CAAEx8C,MAAhB,CAAD,IACCpD,4BAAA,CAACy/C,mBAAD;AACE78C,IAAAA,GAAG,EAAEwF,aAAa,CAACuK;AACnBtQ,IAAAA,aAAa,EAAE+F,aAAa,CAACuK;AAC7B+sC,IAAAA,mBAAmB,EAAE,CAACI;GAHxB,CAFJ,EAQG,CAAC,EAACD,YAAD,YAACA,YAAY,CAAEz8C,MAAf,CAAD,IACCpD,4BAAA,CAACy/C,mBAAD;AACE78C,IAAAA,GAAG,EAAEwF,aAAa,CAACyB;AACnBxH,IAAAA,aAAa,EAAE+F,aAAa,CAACyB;AAC7B61C,IAAAA,mBAAmB,EAAE,CAACI;GAHxB,CATJ,CALF,CADF;AAwBD;;;AC5DD,IAAMC,gBAAgB,gBAAG7rC,MAAM,CAAC8rC,GAAV,+RAMlB1tB,EAAE,CAACN,EANe,CAAtB;;AAaA,IAAMiuB,iBAAiB,GAAG,SAApBA,iBAAoB,CAAC5d,MAAD,EAAgBn5B,QAAhB;AACxB,MAAQrM,eAAR,GAA6CwlC,MAA7C,CAAQxlC,eAAR;AAAA,MAAyBC,eAAzB,GAA6CulC,MAA7C,CAAyBvlC,eAAzB;;AACA,MAAI,CAACoM,QAAD,IAAaA,QAAQ,IAAIrM,eAAe,IAAI,CAAvB,CAAzB,EAAoD;AAClD,yBAAkBA,eAAe,IAAI,CAArC;AACD;;AAED,MAAIC,eAAe,IAAIoM,QAAQ,GAAGpM,eAAlC,EAAmD;AACjD,wBAAkBA,eAAlB;AACD;;AAED,SAAO,EAAP;AACD,CAXD;;AAaA,SAAgBojD;;;MACd7d,cAAAA;MACAnB,eAAAA;MACAgC,0BAAAA;MACA52B,uBAAAA;MACA6zC,0BAAAA;AAQA,MAAMttB,mBAAmB,GAAGL,oBAAoB,CAAC,IAAD,CAAhD;AACA,MAAM7pB,SAAS,sBAAG05B,MAAM,CAACnhC,OAAV,qBAAG,gBAAgByH,SAAlC;AACA,MAAMy3C,YAAY,GAAG,CAACz3C,SAAtB;AACA,MAAMuwC,YAAY,GAAG7W,MAAM,CAACn2B,YAAP,KAAwBC,YAAY,CAAC4G,UAA1D;AACA,MAAMvR,WAAW,GAAG4+C,YAAY,GAC5B,aAD4B,GAE5BpkB,yBAAyB,CAAC,qBAAAqG,MAAM,CAACnhC,OAAP,sCAAgBM,WAAhB,KAA+B,EAAhC,sBAAoC6gC,MAAM,CAACnhC,OAA3C,qBAAoC,iBAAgBK,KAApD,sBAA2D8gC,MAAM,CAACnhC,OAAlE,qBAA2D,iBAAgBnE,WAA3E,CAF7B;AAGA,MAAMsjD,uBAAuB,GAAG,CAAC,EAAEhe,MAAM,QAAN,IAAAA,MAAM,CAAExlC,eAAR,IAA2BwlC,MAA3B,YAA2BA,MAAM,CAAEvlC,eAArC,CAAjC;;AAEA,MAAM6/C,oBAAoB,GAAG,SAAvBA,oBAAuB,CAACjmC,KAAD;;;AAC3B,QAAI0pC,YAAY,IAAI,CAACz3C,SAArB,EAAgC;AAEhC,QAAQ9L,eAAR,GAA6CwlC,MAA7C,CAAQxlC,eAAR;AAAA,QAAyBC,eAAzB,GAA6CulC,MAA7C,CAAyBvlC,eAAzB;AACA,QAAMiZ,KAAK,GAAGW,KAAK,QAAL,qBAAAA,KAAK,CAAEd,MAAP,2BAAeG,KAAf,GAAuBY,MAAM,CAACD,KAAD,sCAACA,KAAK,CAAEd,MAAR,qBAAC,eAAeG,KAAhB,CAA7B,GAAsD,IAApE;;AACA,QACE,CAACA,KAAD,IACAA,KAAK,IAAI,CADT,IAEClZ,eAAe,IAAIkZ,KAAK,GAAGlZ,eAF5B,IAGCC,eAAe,IAAIiZ,KAAK,GAAGjZ,eAJ9B,EAKE;AACAqjD,MAAAA,kBAAkB,CAAC;AAAEx3C,QAAAA,SAAS,EAATA,SAAF;AAAau4B,QAAAA,OAAO,EAAE;AAAtB,OAAD,CAAlB,CADA;AAGA;;AACAgC,MAAAA,kBAAkB,CAACv6B,SAAD,EAAYoN,KAAZ,WAAYA,KAAZ,GAAqB,IAArB,CAAlB;AACA;AACD;;AAEDoqC,IAAAA,kBAAkB,CAAC;AAAEx3C,MAAAA,SAAS,EAATA,SAAF;AAAau4B,MAAAA,OAAO,EAAE;AAAtB,KAAD,CAAlB;AACA,QAAMh4B,QAAQ,GAAGy4B,qBAAqB,CAACU,MAAD,EAAStsB,KAAT,CAAtC;AACAmtB,IAAAA,kBAAkB,CAACv6B,SAAD,EAAYO,QAAZ,CAAlB;AACD,GArBD;;AAuBA,MAAIo3C,SAAJ;;AAEA,MAAIF,YAAY,IAAIlH,YAApB,EAAkC;AAChC,QAAMqH,eAAe,GAAGtvC,sBAAsB,CAAC;AAC7CvH,MAAAA,MAAM,EAAE24B,MAAM,CAAC34B,MAD8B;AAE7CwH,MAAAA,QAAQ,EAAEmxB,MAAM,CAACnxB,QAF4B;AAG7CG,MAAAA,MAAM,EAAE,OAHqC;AAI7CC,MAAAA,qBAAqB,EAAE;AAJsB,KAAD,CAA9C;AAOAgvC,IAAAA,SAAS,QAAMC,eAAf;;AACA,QAAIrH,YAAJ,EAAkB;AAChBoH,MAAAA,SAAS,IAAI,SAAb;AACD;AACF,GAZD,MAYO,IAAIje,MAAM,CAACv2B,aAAP,IAAwBu2B,MAAM,CAACr3B,SAA/B,IAA4CrC,SAAhD,EAA2D;AAChE,QAAMO,QAAQ,GAAG,CAAAoD,eAAe,QAAf,YAAAA,eAAe,CAAEpD,QAAjB,KAA6B,CAA9C;AACAo3C,IAAAA,SAAS,GACPtgD,4BAAA,CAAC0X,oBAAD;AACET,MAAAA,WAAW,EAAKtO,SAAL;AACXM,MAAAA,KAAK,EAAEo5B,MAAM,CAACp5B;AACd+B,MAAAA,SAAS,EAAEq3B,MAAM,CAACr3B;AAClB+K,MAAAA,KAAK,EAAE7M;AACP8M,MAAAA,YAAY,EAAE,sBAAC9M,QAAD;AACZg6B,QAAAA,kBAAkB,CAACv6B,SAAD,EAAYO,QAAZ,CAAlB;AACD;AACDmM,MAAAA,KAAK,EAAE;KART,CADF;AAYD,GAdM,MAcA;AAAA;;AACLirC,IAAAA,SAAS,GACPtgD,4BAAA,CAACiU,UAAD;AACEsB,MAAAA,EAAE,EAAE;AAAEF,QAAAA,KAAK,EAAEwd,mBAAmB,GAAG,GAAH,GAAS;AAArC;AACJxvB,MAAAA,EAAE,EAAKsF,SAAL;AACFsN,MAAAA,IAAI,EAAC;AACLC,MAAAA,OAAO,EAAER;AACT7X,MAAAA,KAAK,EAAE,CAACqjC;AACR4b,MAAAA,UAAU,EAAE,CAAC5b,OAAD,GAAW+e,iBAAiB,CAAC5d,MAAD,EAAS/1B,eAAT,oBAASA,eAAe,CAAEpD,QAA1B,CAA5B,GAAkE0P;AAC9EmkC,MAAAA,mBAAmB,EAAE;AAAExnC,QAAAA,EAAE,EAAE;AAAEomC,UAAAA,MAAM,EAAE;AAAV;AAAN;AACrB5lC,MAAAA,KAAK,2BAAEzJ,eAAF,oBAAEA,eAAe,CAAEpD,QAAnB,oCAA+B;AACpCuN,MAAAA,QAAQ,EAAEkmC;KATZ,CADF;AAaD;;AAED,SACE38C,4BAAA,CAAC+/C,gBAAD,MAAA,EACE//C,4BAAA,CAAC+uB,GAAD;AAAKjV,IAAAA,OAAO,EAAC;AAAO2U,IAAAA,aAAa,EAAC;GAAlC,EACEzuB,4BAAA,CAAChB,UAAD;AAAYb,IAAAA,OAAO,EAAC;AAAKoB,IAAAA,KAAK,EAAC;AAAUiY,IAAAA,UAAU,EAAC;GAApD,EACGhW,WADH,CADF,EAIG6+C,uBAAuB,IACtBrgD,4BAAA,CAAChB,UAAD;AAAYb,IAAAA,OAAO,EAAC;AAAQoB,IAAAA,KAAK,EAAC;AAAYiY,IAAAA,UAAU,EAAC;GAAzD,EACG5a,yBAAyB,CAACylC,MAAM,CAACxlC,eAAR,EAAyBwlC,MAAM,CAACvlC,eAAhC,sBAAiDulC,MAAM,CAACnhC,OAAxD,qBAAiD,iBAAgBnE,WAAjE,CAD5B,CALJ,CADF,EAYEiD,4BAAA,CAAChB,UAAD;AAAYb,IAAAA,OAAO,EAAC;AAAKoB,IAAAA,KAAK,EAAC;GAA/B,EACG+gD,SADH,CAZF,CADF;AAkBD;AAED,SAAgBE;;;MAAqB1+C,aAAAA;MAAMO,sBAAAA;;AACzC,0BAAiD2gC,gBAAgB,EAAjE;AAAA,MAAQz2B,gBAAR,qBAAQA,gBAAR;AAAA,MAA0B22B,kBAA1B,qBAA0BA,kBAA1B;;AACA,6BAA0B0B,mBAAmB,EAA7C;AAAA,MAAQO,aAAR,wBAAQA,aAAR;;AACA,0BAAuBhE,gBAAgB,EAAvC;AAAA,MAAQE,UAAR,qBAAQA,UAAR;;AACA,MAAMof,WAAW,GAAGzS,cAAc,CAAC,CAAAlsC,IAAI,QAAJ,iCAAAA,IAAI,CAAES,WAAN,uCAAmBC,MAAnB,CAA0B,UAACk+C,CAAD;AAAA,WAAOA,CAAC,CAACr+C,aAAF,KAAoBA,aAA3B;AAAA,GAA1B,MAAuE,EAAxE,CAAlC;;AACA,kBAAkD8L,QAAQ,CACxDsyC,WADwD,oBACxDA,WAAW,CAAElkC,MAAb,CAA6C,UAAC4gC,GAAD,EAAMC,IAAN;;;AAC3CD,IAAAA,GAAG,CAAC,kBAAAC,IAAI,CAACl8C,OAAL,mCAAcyH,SAAd,KAA2B,aAA5B,CAAH,GAAgD,IAAhD;AACA,WAAOw0C,GAAP;AACD,GAHD,EAGG,EAHH,CADwD,CAA1D;AAAA,MAAOwD,iBAAP;AAAA,MAA0BC,oBAA1B;;AAOAn7B,EAAAA,SAAS,CAAC;AACR,QAAMjV,UAAU,GAAGmK,MAAM,CAAC+D,MAAP,CAAciiC,iBAAd,EAAiCt1C,IAAjC,CAAsC,UAACmU,CAAD;AAAA,aAAO,CAACA,CAAR;AAAA,KAAtC,CAAnB;AACA2lB,IAAAA,aAAa,CAAC30B,UAAD,CAAb;AACA6wB,IAAAA,UAAU,CAAC,CAAC7wB,UAAF,CAAV;AACD,GAJQ,EAIN,CAACmwC,iBAAD,EAAoBxb,aAApB,EAAmC9D,UAAnC,CAJM,CAAT;AAMA,SACErhC,4BAAA,wBAAA,MAAA,EACGygD,WADH,oBACGA,WAAW,CAAE99C,GAAb,CAAiB,UAAC0/B,MAAD;;;AAChB,QAAM/1B,eAAe,GAAGC,gBAAgB,CAAC7D,IAAjB,CAAsB,UAAC8W,CAAD;AAAA;;AAAA,aAAOA,CAAC,CAAC7W,SAAF,0BAAgB05B,MAAM,CAACnhC,OAAvB,qBAAgB,iBAAgByH,SAAhC,CAAP;AAAA,KAAtB,CAAxB;AACA,WACE3I,4BAAA,CAACkgD,UAAD;AACEt9C,MAAAA,GAAG,EAAE,qBAAAy/B,MAAM,CAACnhC,OAAP,sCAAgByH,SAAhB,KAA6B;AAClC05B,MAAAA,MAAM,EAAEA;AACRa,MAAAA,kBAAkB,EAAEA;AACpB52B,MAAAA,eAAe,EAAEA;AACjB40B,MAAAA,OAAO,EAAEyf,iBAAiB,CAAC,qBAAAte,MAAM,CAACnhC,OAAP,sCAAgByH,SAAhB,KAA6B,aAA9B;AAC1Bw3C,MAAAA,kBAAkB,EAAE;AAAA,YAAGx3C,SAAH,SAAGA,SAAH;AAAA,YAAcu4B,OAAd,SAAcA,OAAd;AAAA,eAClB0f,oBAAoB,CAAC,UAAC3H,IAAD;AAAA;;AAAA,8BAAgBA,IAAhB,6BAAuBtwC,SAAvB,IAAmCu4B,OAAnC;AAAA,SAAD,CADF;AAAA;KANtB,CADF;AAYD,GAdA,CADH,CADF;AAmBD;;;ACpMM,IAAM2f,qBAAqB,gBAAG,QAAO9xB,GAAP;AAAA;AAAA;AAAA;AAAA;AAAA,EAAH;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAA3B;;ACOA,IAAM+xB,gBAAgB,GAAG,SAAnBA,gBAAmB;MAAGhC,oBAAAA;;AACjC,0BAAgD3d,gBAAgB,EAAhE;AAAA,MAAQL,aAAR,qBAAQA,aAAR;AAAA,MAAuBD,oBAAvB,qBAAuBA,oBAAvB;;AACA,cAAiBC,aAAa,IAAI,EAAlC;AAAA,MAAQh/B,IAAR,SAAQA,IAAR;;AACA,0BAA0BkhC,gBAAgB,EAA1C;AAAA,MAAQ3gC,aAAR,qBAAQA,aAAR;;AAEA,SACErC,4BAAA,wBAAA,MAAA,EACEA,4BAAA,CAACoZ,YAAD;AAAYylC,IAAAA,eAAe;AAACC,IAAAA,YAAY,EAAEA;GAA1C,CADF,EAEE9+C,4BAAA,CAAC6gD,qBAAD,MAAA,EACE7gD,4BAAA,CAACqb,qBAAD;AAAqBvZ,IAAAA,IAAI,EAAEA;AAAM++B,IAAAA,oBAAoB,EAAEA;GAAvD,CADF,EAEE7gC,4BAAA,CAACwgD,kBAAD;AAAoB1+C,IAAAA,IAAI,EAAEA;AAAMO,IAAAA,aAAa,EAAEA;GAA/C,CAFF,CAFF,CADF;AASD,CAdM;;ACVP,IAAIitB,IAAE,CAAC;AACP,SAAS5yB,UAAQ,GAAG,EAAEA,UAAQ,GAAG,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,UAAU,MAAM,EAAE,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,EAAE,IAAI,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,GAAG,IAAI,MAAM,EAAE,EAAE,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,OAAO,MAAM,CAAC,EAAE,CAAC,CAAC,OAAOA,UAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,EAAE;AACnV,AACA,IAAI,aAAa,GAAG,SAAS,aAAa,CAAC,KAAK,EAAE;AAClD,EAAE,oBAAoBC,aAAmB,CAAC,KAAK,EAAED,UAAQ,CAAC;AAC1D,IAAI,KAAK,EAAE,EAAE;AACb,IAAI,MAAM,EAAE,EAAE;AACd,IAAI,IAAI,EAAE,MAAM;AAChB,IAAI,KAAK,EAAE,4BAA4B;AACvC,GAAG,EAAE,KAAK,CAAC,EAAE4yB,IAAE,KAAKA,IAAE,gBAAgB3yB,aAAmB,CAAC,GAAG,EAAE;AAC/D,IAAI,MAAM,EAAE,SAAS;AACrB,IAAI,WAAW,EAAE,KAAK;AACtB,IAAI,aAAa,EAAE,OAAO;AAC1B,IAAI,cAAc,EAAE,OAAO;AAC3B,GAAG,eAAeA,aAAmB,CAAC,MAAM,EAAE;AAC9C,IAAI,CAAC,EAAE,iCAAiC;AACxC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACR,CAAC,CAAC;;ACbK,IAAMokD,oBAAoB,gBAAG,QAAOC,aAAP;AAAA;AAAA;AAAA;AAAA;AAAA,EAAH,iBAEnB;AAAA,MAAG1jD,KAAH,QAAGA,KAAH;AAAA,SAAeA,KAAK,CAACE,KAAN,CAAYC,OAAZ,CAAoBK,IAApB,CAAyB2H,SAAxC;AAAA,CAFmB,krBAA1B;;;;ACOP,IAAMw7C,6BAA6B,gBAAG,QAAOlyB,GAAP;AAAA;AAAA;AAAA;AAAA;AAAA,EAAH;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAAnC;;AAIA,IAAMmyB,oBAAoB,gBAAG,QAAOxC,KAAP;AAAA;AAAA;AAAA;AAAA;AAAA,EAAH;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAA1B;;AAIA,AAAO,IAAMyC,sBAAsB,gBAAG,QAAOpyB,GAAP;AAAA;AAAA;AAAA;AAAA;AAAA,EAAH,uDAIvB;AAAA,MAAGzxB,KAAH,QAAGA,KAAH;AAAA,wBAA4BA,KAAK,CAACE,KAAN,CAAYC,OAAZ,CAAoBoH,cAAhD;AAAA,CAJuB,y2JAA5B;AAOP,AAAO,IAAMu8C,sBAAsB,GAAG,SAAzBA,sBAAyB;MACpCC,mBAAAA;MACApsB,iBAAAA;MACAqsB,kBAAAA;AAMA,SACEthD,4BAAA,CAACmhD,sBAAD;AAAwBphD,IAAAA,SAAS,EAAC;GAAlC,EACEC,4BAAA,CAAChB,UAAD;AACEe,IAAAA,SAAS,EAAC;AACVT,IAAAA,KAAK,EAAE;AAAEy/C,MAAAA,OAAO,EAAE;AAAX;AACP5gD,IAAAA,OAAO,EAAC;AACRoB,IAAAA,KAAK,EAAC;GAJR,EAKG8hD,UALH,CADF,EAQErhD,4BAAA,CAAChB,UAAD;AAAYe,IAAAA,SAAS,EAAC;AAA6CN,IAAAA,IAAI;AAACtB,IAAAA,OAAO,EAAC;AAAKoB,IAAAA,KAAK,EAAC;GAA3F,EACG01B,QADH,CARF,EAWEj1B,4BAAA,CAAChB,UAAD;AAAYe,IAAAA,SAAS,EAAC;AAA8CR,IAAAA,KAAK,EAAC;GAA1E,EACG+hD,SADH,CAXF,CADF;AAiBD,CA1BM;AAmCP,AAAO,IAAMC,mBAAmB,GAAG,SAAtBA,mBAAsB;MACjC1gB,6BAAAA;MACAhhB,2BAAAA;MACA2hC,iBAAAA;oCACA3C;MAAAA,qDAAkB;MAClBC,qBAAAA;AAEA,MAAI2C,WAAJ;;AACA,MAAI5C,eAAe,IAAIC,YAAvB,EAAqC;AACnC2C,IAAAA,WAAW,GACTzhD,4BAAA,CAAC4+C,gBAAD;AACEnuC,MAAAA,OAAO,EAAE;AACPquC,QAAAA,YAAY,CAAC;AAAEvwC,UAAAA,WAAW,EAAEizC;AAAf,SAAD,CAAZ;AACD;AACD3gB,MAAAA,oBAAoB,EAAEA;AACtBhwB,MAAAA,IAAI,EAAC;KALP,CADF;AASD;;AAED,MAAM6wC,iBAAiB,GACrB7hC,kBAAkB,CAACvd,MAAnB,CAA0Bc,MAA1B,GAAmC,CAAnC,GAAuCyc,kBAAkB,CAACvd,MAAnB,CAA0B,CAA1B,EAA6BD,aAApE,GAAoFuW,SADtF;AAGA,SACE5Y,4BAAA,wBAAA,MAAA,EACEA,4BAAA,CAACkhD,oBAAD;AAAsBS,IAAAA,MAAM,EAAEF;AAAa1hD,IAAAA,SAAS,EAAC;AAAyC4+C,IAAAA,QAAQ,EAAC;GAAvG,EACE3+C,4BAAA,CAAChB,UAAD;AAAYK,IAAAA,IAAI;AAACE,IAAAA,KAAK,EAAC;GAAvB,EACGshC,oBAAoB,CAAC6J,eAArB,CAAqCC,SAArC,CAA+C;AAAE7oC,IAAAA,IAAI,EAAE+d,kBAAkB,CAAC/d;AAA3B,GAA/C,CADH,CADF,CADF,EAOE9B,4BAAA,CAACihD,6BAAD;AAA+BlhD,IAAAA,SAAS,EAAC;GAAzC,EACEC,4BAAA,CAACohD,sBAAD;AACEC,IAAAA,UAAU,EAAExgB,oBAAoB,CAAC6J,eAArB,CAAqCK,cAArC,CAAoD;AAAEjpC,MAAAA,IAAI,EAAE+d,kBAAkB,CAAC/d;AAA3B,KAApD;AACZmzB,IAAAA,QAAQ,EAAE4L,oBAAoB,CAAC6J,eAArB,CAAqCM,YAArC,CAAkD;AAAElpC,MAAAA,IAAI,EAAE+d,kBAAkB,CAAC/d;AAA3B,KAAlD;AACVw/C,IAAAA,SAAS,EAAEzgB,oBAAoB,CAAC6J,eAArB,CAAqCO,iBAArC,CAAuD;AAChEnpC,MAAAA,IAAI,EAAE+d,kBAAkB,CAAC/d,IADuC;AAEhEO,MAAAA,aAAa,EAAEq/C;AAFiD,KAAvD;GAHb,CADF,EAUE1hD,4BAAA,CAAC+gD,oBAAD;AACEhhD,IAAAA,SAAS,EAAC;AACVT,IAAAA,KAAK,EAAE;AAAEq8C,MAAAA,MAAM,EAAE,WAAV;AAAuBjM,MAAAA,QAAQ,EAAE;AAAjC;GAFT,CAVF,EAeE1vC,4BAAA,CAACohD,sBAAD;AACEC,IAAAA,UAAU,EAAExgB,oBAAoB,CAAC6J,eAArB,CAAqCE,cAArC,CAAoD;AAAE9oC,MAAAA,IAAI,EAAE0/C;AAAR,KAApD;AACZvsB,IAAAA,QAAQ,EAAE4L,oBAAoB,CAAC6J,eAArB,CAAqCG,YAArC,CAAkD;AAAE/oC,MAAAA,IAAI,EAAE0/C;AAAR,KAAlD;AACVF,IAAAA,SAAS,EAAEzgB,oBAAoB,CAAC6J,eAArB,CAAqCI,iBAArC,CAAuD;AAAEhpC,MAAAA,IAAI,EAAE0/C;AAAR,KAAvD;GAHb,CAfF,CAPF,CADF;AA+BD,CAtDM;;AChCP,IAAMI,YAAY,GAAG,SAAfA,YAAe,CACnB9c,WADmB;MAGjBgL,8BAAAA;MACAgP,oBAAAA;MACA/O,0BAAAA;;AAGF,UAAQjL,WAAW,CAACliC,GAApB;AACE,SAAKugC,eAAe,CAACE,IAArB;AACE,aAAO;AAAElrB,QAAAA,OAAO,EAAEnY,4BAAA,CAAC8gD,gBAAD;AAAkBhC,UAAAA,YAAY,EAAEA;SAAhC;AAAX,OAAP;;AACF,SAAK3b,eAAe,CAACG,MAArB;AACE,aAAO;AAAEnrB,QAAAA,OAAO,EAAEnY,4BAAA,CAACk9C,kBAAD,MAAA;AAAX,OAAP;;AACF,SAAK/Z,eAAe,CAACI,OAArB;AACE,aAAO;AACLprB,QAAAA,OAAO,EACLnY,4BAAA,CAACu+C,WAAD;AAAazO,UAAAA,sBAAsB,EAAEA;AAAwBC,UAAAA,kBAAkB,EAAEA;SAAjF;AAFG,OAAP;;AAKF;AACE,aAAO;AAAE53B,QAAAA,OAAO,EAAE;AAAX,OAAP;AAZJ;AAcD,CAtBD;;AA6CA,SAAgB0pC;MACdxM,mBAAAA;MACAC,4BAAAA;MACAwJ,qBAAAA;MACAhP,+BAAAA;MACAC,2BAAAA;MACA4K,6BAAAA;MACAnF,gCAAAA;MACA7P,8BAAAA;;AAEA,8BAAmDyL,oBAAoB,EAAvE;AAAA,MAAQC,aAAR,yBAAQA,aAAR;AAAA,MAAuBY,uBAAvB,yBAAuBA,uBAAvB;;AACA,4BAAuEpS,kBAAkB,EAAzF;AAAA;AAAA,MAAS9L,UAAT,wBAASA,UAAT;AAAA,MAAqB6M,WAArB,wBAAqBA,WAArB;AAAA,MAAkCtjC,KAAlC,wBAAkCA,KAAlC;AAAA,MAAyCqhB,wBAAzC,wBAAyCA,wBAAzC;;AACA,6BAAwBimB,mBAAmB,EAA3C;AAAA,MAAQE,WAAR,wBAAQA,WAAR;;AAEA,MAAQuH,qBAAR,GAAkCzL,WAAlC,CAAQyL,qBAAR;;AAEA,0BAAgDlL,gBAAgB,EAAhE;AAAA,MAAQL,aAAR,qBAAQA,aAAR;AAAA,MAAuBD,oBAAvB,qBAAuBA,oBAAvB;;AACA,cAAqCC,aAAa,IAAI,EAAtD;AAAA,MAAQh/B,IAAR,SAAQA,IAAR;AAAA,MAAc+d,kBAAd,SAAcA,kBAAd;;AACA,MAAM26B,eAAe,GACnB,CAAC,CAAC14C,IAAF,IACAA,IAAI,CAAC2N,WAAL,KAAqBC,WAAW,CAACQ,IADjC,IAEA,CAAC,CAAC2P,kBAFF,IAGAA,kBAAkB,CAACpQ,WAAnB,KAAmCC,WAAW,CAACQ,IAJjD;;AAMA,sBAAoB0xC,YAAY,CAAC9c,WAAD,EAAc;AAAEgL,IAAAA,sBAAsB,EAAtBA,sBAAF;AAA0BgP,IAAAA,YAAY,EAAZA,YAA1B;AAAwC/O,IAAAA,kBAAkB,EAAlBA;AAAxC,GAAd,CAAhC;AAAA,MAAQ53B,OAAR,iBAAQA,OAAR;;AAEA,MAAM2pC,eAAe,GACnB9hD,4BAAA,wBAAA,MAAA,EACGw6C,eAAe,GACdx6C,4BAAA,CAACuhD,mBAAD;AAAA;AACE;AACAC,IAAAA,QAAQ,EAAE1/C;AACV;AACA+d,IAAAA,kBAAkB,EAAEA;AACpBg/B,IAAAA,eAAe;AACfhe,IAAAA,oBAAoB,EAAEA;AACtBie,IAAAA,YAAY,EAAEA;GAPhB,CADc,GAWd9+C,4BAAA,wBAAA,MAAA,EAAGmY,OAAH,CAZJ,CADF;AAkBA,MAAM4pC,kBAAkB,GAA0CtjC,OAAO,CACvE;AAAA,WAAOwzB,uBAAuB,GAAG;AAAEmB,MAAAA,YAAY,EAAEnB;AAAhB,KAAH,GAA+C;AAAEtB,MAAAA,IAAI,EAAE,OAAR;AAAiBz/B,MAAAA,QAAQ,EAAE;AAA3B,KAA7E;AAAA,GADuE,EAEvE,CAAC+gC,uBAAD,CAFuE,CAAzE;AAKA,SACEjyC,4BAAA,CAACgiD,QAAD;AACEp/C,IAAAA,GAAG,EAAEqvC;AACLY,IAAAA,MAAM,EAAExB;AACR/pC,IAAAA,OAAO,eACFy6C,kBADE;AAELE,MAAAA,UAAU,EAAE;AACV3kD,QAAAA,KAAK,EAAE,QADG;AAEV+K,QAAAA,SAAS,EAAE;AACT65C,UAAAA,SAAS,EAAEnuB,UAAU,CAACt2B,OAAX,CAAmBK,IAAnB,CAAwBJ,OAD1B;AAETykD,UAAAA,gBAAgB,EAAEpuB,UAAU,CAACt2B,OAAX,CAAmBK,IAAnB,CAAwBJ,OAFjC;AAGT0kD,UAAAA,oBAAoB,EAAEruB,UAAU,CAACt2B,OAAX,CAAmBK,IAAnB,CAAwByC,QAHrC;AAITmG,UAAAA,UAAU,EAAEqtB,UAAU,CAACr1B,UAAX,CAAsBgI,UAJzB;AAKT27C,UAAAA,eAAe,EAAE/kD,KAAF,oBAAEA,KAAK,CAAEguC,2BALf;AAMTl3B,UAAAA,YAAY,EAAE9W,KAAF,oBAAEA,KAAK,CAAEkuC;AANZ,SAFD;AAUV8W,QAAAA,KAAK,EAAEhlD,KAAK,QAAL,IAAAA,KAAK,CAAEiuC,uBAAP,GACH;AACE,oBAAU;AACRj3B,YAAAA,WAAW,EAAEhX,KAAF,oBAAEA,KAAK,CAAEiuC;AADZ;AADZ,SADG,GAMH3yB;AAhBM;AAFP;GAHT,EAwBE5Y,4BAAA,CAACssC,cAAD;AAAgBvsC,IAAAA,SAAS,EAAC;GAA1B,EACG,CAACy6C,eAAD,IAAoBx6C,4BAAA,CAACmtC,mBAAD,MAAA,CADvB,EAEEntC,4BAAA,CAACusC,eAAD,MAAA,EACEvsC,4BAAA,CAACwsC,aAAD,MAAA,EAAgBH,qBAAqB,GAAGrsC,4BAAA,CAACkV,sBAAD,MAAA,CAAH,GAAgC4sC,eAArE,CADF,EAEGzV,qBAAqB,GACpBrsC,4BAAA,CAACi8C,uBAAD;AAAyBt9B,IAAAA,wBAAwB,EAAEA;GAAnD,CADoB,GAGpB3e,4BAAA,CAAC06C,eAAD;AACEC,IAAAA,oBAAoB,EAAEA;AACtBnF,IAAAA,uBAAuB,EAAEA;AACzBH,IAAAA,UAAU,EAAEA;AACZC,IAAAA,mBAAmB,EAAEA;AACrBkF,IAAAA,eAAe,EAAEA;AACjB7U,IAAAA,qBAAqB,EAAEA;AACvBhnB,IAAAA,wBAAwB,EAAEA;GAP5B,CALJ,CAFF,CAxBF,CADF;AA8CD;;;ACzKD,IAOa4jC,QAAQ,GAAG,SAAXA,QAAW;MACtB/1B,qBAAAA;MACAlvB,aAAAA;MACA2mB,kBAAAA;MACA5X,cAAAA;MACAgT,8BAAAA;MACA2H,0BAAAA;MACAza,wBAAAA;MACAuuB,0BAAAA;MACAyG,2BAAAA;MACA0C,yBAAAA;MACGue;;AAEH,SACExiD,4BAAA,CAACksC,gBAAD;AACE1f,IAAAA,aAAa,EAAEA;AACflvB,IAAAA,KAAK,EAAEA;AACP2mB,IAAAA,UAAU,EAAEA;AACZ5X,IAAAA,MAAM,EAAEA;AACRgT,IAAAA,sBAAsB,EAAEA;AACxB2H,IAAAA,kBAAkB,EAAEA;AACpBza,IAAAA,gBAAgB,EAAEA;AAClBuuB,IAAAA,kBAAkB,EAAEA;AACpByG,IAAAA,mBAAmB,EAAEA;AACrB0C,IAAAA,iBAAiB,EAAEA;GAVrB,EAWEjkC,4BAAA,CAAC6hD,iBAAD,oBAAuBW,eAAvB,CAXF,CADF;AAeD,CA5BM;;ACHP,SAASC,cAAT,CAAwBC,SAAxB;AACE,SAAOjkC,OAAO,CAAC;AACb,QAAMkkC,eAAe,GAAG,IAAIC,eAAJ,CAAoBrlC,MAAM,CAACC,QAAP,CAAgBqlC,MAApC,CAAxB;AACA,WAAOH,SAAS,GAAGC,eAAe,CAACG,GAAhB,CAAoBJ,SAApB,CAAH,GAAoCC,eAApD;AAED,GAJa,EAIX,CAACD,SAAD,EAAYnlC,MAAM,CAACC,QAAP,CAAgBqlC,MAA5B,CAJW,CAAd;AAKD;;AAED,IAAYE,eAAZ;;AAAA,WAAYA;AACVA,EAAAA,8BAAA,gBAAA;AACAA,EAAAA,4BAAA,cAAA;AACAA,EAAAA,yBAAA,WAAA;AACD,CAJD,EAAYA,eAAe,KAAfA,eAAe,KAAA,CAA3B;;AAMA,IAAaC,2BAA2B,GAAG,SAA9BA,2BAA8B;gCAQvC;MAPFC,wBAAAA;MACAC,4BAAAA;MACAC,yBAAAA;;AAMA,yBAAkB/kC,eAAe,EAAjC;AAAA,MAAQ5gB,KAAR,oBAAQA,KAAR;;AACA,kBAA8C2Q,QAAQ,CAAC40C,eAAe,CAACK,WAAjB,CAAtD;AAAA,MAAOC,eAAP;AAAA,MAAwBC,kBAAxB;;AACA,mBAAoDn1C,QAAQ,CAAC,KAAD,CAA5D;AAAA,MAAOo1C,kBAAP;AAAA,MAA2BC,qBAA3B;;AACA,MAAMC,iBAAiB,GAAGhB,cAAc,CAAC,mBAAD,CAAxC;AAEAh9B,EAAAA,SAAS,CAAC;AACR,QAAMi+B,yBAAyB;AAAA,iEAAG;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,sBAC5B,CAACD,iBAAD,IAAsBA,iBAAiB,CAACrrC,WAAlB,OAAoC,OAA1D,IAAqEmrC,kBADzC;AAAA;AAAA;AAAA;;AAAA;;AAAA;AAKhCC,gBAAAA,qBAAqB,CAAC,IAAD,CAArB;;AACA,oBAAIP,gBAAJ,EAAsB;AACpBA,kBAAAA,gBAAgB;AACjB;;AAR+B;AAAA;AAAA,uBAUHzlD,KAAK,CAACmmD,wBAAN,EAVG;;AAAA;AAUxBnlC,gBAAAA,YAVwB;AAW9B8kC,gBAAAA,kBAAkB,CAACP,eAAe,CAACa,SAAjB,CAAlB;;AACA,oBAAIV,oBAAJ,EAA0B;AACxBA,kBAAAA,oBAAoB,CAAC1kC,YAAD,CAApB;AACD;;AAd6B;AAAA;;AAAA;AAAA;AAAA;AAgB9BO,gBAAAA,OAAO,CAAClhB,KAAR,CAAc,yCAAd;AACAylD,gBAAAA,kBAAkB,CAACP,eAAe,CAACc,MAAjB,CAAlB;;AACA,oBAAIV,iBAAJ,EAAuB;AACrBA,kBAAAA,iBAAiB,aAAjB;AACD;;AApB6B;AAAA;AAsB9BK,gBAAAA,qBAAqB,CAAC,KAAD,CAArB;AAtB8B;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,OAAH;;AAAA,sBAAzBE,yBAAyB;AAAA;AAAA;AAAA,OAA/B;;AA0BA,SAAKA,yBAAyB,EAA9B;AAED,GA7BQ,EA6BN,CAAClmD,KAAD,EAAQimD,iBAAR,CA7BM,CAAT;AA+BA,SAAO;AAAEF,IAAAA,kBAAkB,EAAlBA,kBAAF;AAAsBF,IAAAA,eAAe,EAAfA;AAAtB,GAAP;AACD,CA9CM;;SCXSS,sBAAwChlC;AACtD,MAAMilC,YAAY,GAAG3lC,eAAe,CAAC;AAAEwI,IAAAA,QAAQ,EAAE;AAAZ,GAAD,CAApC;AACA,MAAMppB,KAAK,GAAGumD,YAAH,oBAAGA,YAAY,CAAEvmD,KAA5B;;AAEA,MAAI,CAACA,KAAL,EAAY;AAAA;;AACV,wBACKwmD,oCADL,qBAEKllC,MAAM,CAACxX,OAFZ,qBAEK,gBAAgB28C,QAFrB;AAID;;AAED,SAAOzmD,KAAK,CAAC0mD,qBAAN,CAA4BplC,MAA5B,CAAP;AACD;;SCZeqlC,sBAAwCrlC;AACtD,MAAMilC,YAAY,GAAG3lC,eAAe,CAAC;AAAEwI,IAAAA,QAAQ,EAAE;AAAZ,GAAD,CAApC;AACA,MAAMppB,KAAK,GAAGumD,YAAH,oBAAGA,YAAY,CAAEvmD,KAA5B;;AAEA,MAAI,CAACA,KAAL,EAAY;AAAA;;AACV,wBACK4mD,oCADL,qBAEKtlC,MAAM,CAACxX,OAFZ,qBAEK,gBAAgB28C,QAFrB;AAID;;AAED,SAAOzmD,KAAK,CAAC6mD,qBAAN,CAA4BvlC,MAA5B,CAAP;AACD;;SCZewlC,sBAAwCxlC;AACtD,MAAMilC,YAAY,GAAG3lC,eAAe,CAAC;AAAEwI,IAAAA,QAAQ,EAAE;AAAZ,GAAD,CAApC;AACA,MAAMppB,KAAK,GAAGumD,YAAH,oBAAGA,YAAY,CAAEvmD,KAA5B;;AAEA,MAAI,CAACA,KAAL,EAAY;AAAA;;AACV,wBACK+mD,oCADL,qBAEKzlC,MAAM,CAACxX,OAFZ,qBAEK,gBAAgB28C,QAFrB;AAID;;AAED,SAAOzmD,KAAK,CAACgnD,qBAAN,CAA4B1lC,MAA5B,CAAP;AACD;;SCXe2lC;MAAcC,YAAAA;;AAC5B,kBAAgCv2C,QAAQ,CAAC,KAAD,CAAxC;AAAA,MAAOw2C,QAAP;AAAA,MAAiBC,WAAjB;;AACA,mBAA0Bz2C,QAAQ,CAAe,IAAf,CAAlC;AAAA,MAAOtQ,KAAP;AAAA,MAAcgnD,QAAd;;AACA,mBAAwB12C,QAAQ,CAAW,IAAX,CAAhC;AAAA,MAAO22C,IAAP;AAAA,MAAaC,OAAb;;AAEAt/B,EAAAA,SAAS,CAAC;AACR,QAAMu/B,SAAS;AAAA,iEAAG;AAAA;AAAA;AAAA;AAAA;AAAA;AAChBJ,gBAAAA,WAAW,CAAC,IAAD,CAAX;AADgB;AAAA;AAAA,uBAGOF,IAAI,EAHX;;AAAA;AAGRl4C,gBAAAA,MAHQ;AAIdu4C,gBAAAA,OAAO,CAACv4C,MAAD,CAAP;AAJc;AAAA;;AAAA;AAAA;AAAA;AAMdq4C,gBAAAA,QAAQ,aAAR;;AANc;AAAA;AAQdD,gBAAAA,WAAW,CAAC,KAAD,CAAX;AARc;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,OAAH;;AAAA,sBAATI,SAAS;AAAA;AAAA;AAAA,OAAf;;AAYA,SAAKA,SAAS,EAAd;AACD,GAdQ,EAcN,CAACN,IAAD,CAdM,CAAT;AAgBA,SAAO;AAAEC,IAAAA,QAAQ,EAARA,QAAF;AAAY9mD,IAAAA,KAAK,EAALA,KAAZ;AAAmBinD,IAAAA,IAAI,EAAJA;AAAnB,GAAP;AACD;;SCzBeG,uBAAuBnmC;AACrC,MAAMilC,YAAY,GAAG3lC,eAAe,CAAC;AAAEwI,IAAAA,QAAQ,EAAE;AAAZ,GAAD,CAApC;AACA,MAAMppB,KAAK,GAAGumD,YAAH,oBAAGA,YAAY,CAAEvmD,KAA5B;AAEA,MAAMknD,IAAI,GAAGnmC,WAAW,CAAC;AAAA,WAAO/gB,KAAK,GAAGA,KAAK,CAAC0nD,sBAAN,CAA6BpmC,MAA7B,CAAH,GAA0CpO,OAAO,CAACC,OAAR,CAAgB,EAAhB,CAAtD;AAAA,GAAD,EAA6E,CAACmO,MAAD,EAASthB,KAAT,CAA7E,CAAxB;;AACA,kBAAkCinD,QAAQ,CAAC;AAAEC,IAAAA,IAAI,EAAJA;AAAF,GAAD,CAA1C;AAAA,MAAQI,IAAR,aAAQA,IAAR;AAAA,MAAcjnD,KAAd,aAAcA,KAAd;AAAA,MAAqB8mD,QAArB,aAAqBA,QAArB;;AAEA,SAAOlmC,OAAO,CACZ;AAAA,WAAO;AACLW,MAAAA,mBAAmB,EAAE0lC,IADhB;AAELH,MAAAA,QAAQ,EAARA,QAFK;AAGL9mD,MAAAA,KAAK,EAALA;AAHK,KAAP;AAAA,GADY,EAMZ,CAACinD,IAAD,EAAOjnD,KAAP,EAAc8mD,QAAd,CANY,CAAd;AAQD;;SCfeQ,WAAWrmC;AACzB,MAAMilC,YAAY,GAAG3lC,eAAe,CAAC;AAAEwI,IAAAA,QAAQ,EAAE;AAAZ,GAAD,CAApC;AACA,MAAMppB,KAAK,GAAGumD,YAAH,oBAAGA,YAAY,CAAEvmD,KAA5B;AAEA,MAAMknD,IAAI,GAAGnmC,WAAW,CAAC;AAAA,WAAO/gB,KAAK,GAAGA,KAAK,CAAC6pB,UAAN,CAAiBvI,MAAjB,CAAH,GAA8BpO,OAAO,CAACC,OAAR,CAAgB,IAAhB,CAA1C;AAAA,GAAD,EAAmE,CAACmO,MAAD,EAASthB,KAAT,CAAnE,CAAxB;;AACA,kBAAkCinD,QAAQ,CAAC;AAAEC,IAAAA,IAAI,EAAJA;AAAF,GAAD,CAA1C;AAAA,MAAQI,IAAR,aAAQA,IAAR;AAAA,MAAcjnD,KAAd,aAAcA,KAAd;AAAA,MAAqB8mD,QAArB,aAAqBA,QAArB;;AAEA,SAAOlmC,OAAO,CACZ;AAAA,WAAO;AACLuD,MAAAA,OAAO,EAAE8iC,IADJ;AAELH,MAAAA,QAAQ,EAARA,QAFK;AAGL9mD,MAAAA,KAAK,EAALA;AAHK,KAAP;AAAA,GADY,EAMZ,CAACinD,IAAD,EAAOjnD,KAAP,EAAc8mD,QAAd,CANY,CAAd;AAQD;;SCfev6B,oBAAkBtL;AAChC,MAAMilC,YAAY,GAAG3lC,eAAe,CAAC;AAAEwI,IAAAA,QAAQ,EAAE;AAAZ,GAAD,CAApC;AACA,MAAMppB,KAAK,GAAGumD,YAAH,oBAAGA,YAAY,CAAEvmD,KAA5B;AAEA,MAAMknD,IAAI,GAAGnmC,WAAW,CAAC;AAAA,WAAO/gB,KAAK,GAAGA,KAAK,CAACgtB,iBAAN,CAAwB1L,MAAxB,CAAH,GAAqCpO,OAAO,CAACC,OAAR,CAAgB,IAAhB,CAAjD;AAAA,GAAD,EAA0E,CAACmO,MAAD,EAASthB,KAAT,CAA1E,CAAxB;;AACA,kBAAkCinD,QAAQ,CAAC;AAAEC,IAAAA,IAAI,EAAJA;AAAF,GAAD,CAA1C;AAAA,MAAQI,IAAR,aAAQA,IAAR;AAAA,MAAcjnD,KAAd,aAAcA,KAAd;AAAA,MAAqB8mD,QAArB,aAAqBA,QAArB;;AAEA,SAAOlmC,OAAO,CACZ;AAAA,WAAO;AACL4L,MAAAA,cAAc,EAAEy6B,IADX;AAELH,MAAAA,QAAQ,EAARA,QAFK;AAGL9mD,MAAAA,KAAK,EAALA;AAHK,KAAP;AAAA,GADY,EAMZ,CAACinD,IAAD,EAAOjnD,KAAP,EAAc8mD,QAAd,CANY,CAAd;AAQD;;;ACpBD,SASgBS;MACdC,yBAAAA;MACAjmD,gBAAAA;MACGO;;AAEH,8BAAsBmkD,qBAAqB,CAACnkD,IAAD,CAA3C;AAAA,MAAQ2lD,SAAR,yBAAQA,SAAR;;AAEA,MAAI,CAACA,SAAL,EAAgB;AACd,WAAOtlD,4BAAA,wBAAA,MAAA,EAAGqlD,iBAAH,WAAGA,iBAAH,GAAwB,IAAxB,CAAP;AACD;;AAED,SAAOjmD,QAAP;AACD;;;ACrBD,SASgBmmD;MACdF,yBAAAA;MACAjmD,gBAAAA;MACGO;;AAEH,8BAAsBwkD,qBAAqB,CAACxkD,IAAD,CAA3C;AAAA,MAAQ2lD,SAAR,yBAAQA,SAAR;;AAEA,MAAI,CAACA,SAAL,EAAgB;AACd,WAAOtlD,4BAAA,wBAAA,MAAA,EAAGqlD,iBAAH,WAAGA,iBAAH,GAAwB,IAAxB,CAAP;AACD;;AAED,SAAOjmD,QAAP;AACD;;;ACrBD,SASgBomD;MACdH,yBAAAA;MACAjmD,gBAAAA;MACGO;;AAEH,8BAAsB2kD,qBAAqB,CAAC3kD,IAAD,CAA3C;AAAA,MAAQ2lD,SAAR,yBAAQA,SAAR;;AAEA,MAAI,CAACA,SAAL,EAAgB;AACd,WAAOtlD,4BAAA,wBAAA,MAAA,EAAGqlD,iBAAH,WAAGA,iBAAH,GAAwB,IAAxB,CAAP;AACD;;AAED,SAAOjmD,QAAP;AACD;;;;"}
|