@burdenoff/microfe-billing 2026.510.114
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/README.md +12 -0
- package/dist/billing/BillingAdminRoutes.d.ts +6 -0
- package/dist/billing/BillingAdminRoutes.d.ts.map +1 -0
- package/dist/billing/BillingAdminRoutes.js +359 -0
- package/dist/billing/BillingAdminRoutes.js.map +1 -0
- package/dist/billing/BillingRoot.d.ts +37 -0
- package/dist/billing/BillingRoot.d.ts.map +1 -0
- package/dist/billing/BillingRoot.js +190 -0
- package/dist/billing/BillingRoot.js.map +1 -0
- package/dist/billing/BillingUserRoutes.d.ts +7 -0
- package/dist/billing/BillingUserRoutes.d.ts.map +1 -0
- package/dist/billing/BillingUserRoutes.js +479 -0
- package/dist/billing/BillingUserRoutes.js.map +1 -0
- package/dist/billing/constants/permissions.d.ts +18 -0
- package/dist/billing/constants/permissions.d.ts.map +1 -0
- package/dist/billing/hooks/useBillingAccountSelection.d.ts +36 -0
- package/dist/billing/hooks/useBillingAccountSelection.d.ts.map +1 -0
- package/dist/billing/hooks/useBillingAccountSelection.js +81 -0
- package/dist/billing/hooks/useBillingAccountSelection.js.map +1 -0
- package/dist/billing/hooks/useBillingEventEmitter.d.ts +8 -0
- package/dist/billing/hooks/useBillingEventEmitter.d.ts.map +1 -0
- package/dist/billing/hooks/useBillingEventEmitter.js +15 -0
- package/dist/billing/hooks/useBillingEventEmitter.js.map +1 -0
- package/dist/billing/hooks/useBillingNavigate.d.ts +30 -0
- package/dist/billing/hooks/useBillingNavigate.d.ts.map +1 -0
- package/dist/billing/hooks/useBillingNavigate.js +23 -0
- package/dist/billing/hooks/useBillingNavigate.js.map +1 -0
- package/dist/billing/hooks/useBillingPermissions.d.ts +94 -0
- package/dist/billing/hooks/useBillingPermissions.d.ts.map +1 -0
- package/dist/billing/hooks/useBillingPermissions.js +78 -0
- package/dist/billing/hooks/useBillingPermissions.js.map +1 -0
- package/dist/billing/hooks/useDefaultBillingCurrency.d.ts +14 -0
- package/dist/billing/hooks/useDefaultBillingCurrency.d.ts.map +1 -0
- package/dist/billing/hooks/useDefaultBillingCurrency.js +23 -0
- package/dist/billing/hooks/useDefaultBillingCurrency.js.map +1 -0
- package/dist/billing/index.d.ts +31 -0
- package/dist/billing/index.d.ts.map +1 -0
- package/dist/billing/lib/native-purchases.d.ts +51 -0
- package/dist/billing/lib/native-purchases.d.ts.map +1 -0
- package/dist/billing/lib/native-purchases.js +44 -0
- package/dist/billing/lib/native-purchases.js.map +1 -0
- package/dist/billing/modules/addons/components/FloatingCartDrawer.d.ts +4 -0
- package/dist/billing/modules/addons/components/FloatingCartDrawer.d.ts.map +1 -0
- package/dist/billing/modules/addons/components/FloatingCartDrawer.js +179 -0
- package/dist/billing/modules/addons/components/FloatingCartDrawer.js.map +1 -0
- package/dist/billing/modules/addons/components/index.d.ts +5 -0
- package/dist/billing/modules/addons/components/index.d.ts.map +1 -0
- package/dist/billing/modules/addons/hooks/index.d.ts +6 -0
- package/dist/billing/modules/addons/hooks/index.d.ts.map +1 -0
- package/dist/billing/modules/addons/hooks/index.js +1 -0
- package/dist/billing/modules/addons/hooks/useAddons.d.ts +55 -0
- package/dist/billing/modules/addons/hooks/useAddons.d.ts.map +1 -0
- package/dist/billing/modules/addons/hooks/useAddons.js +77 -0
- package/dist/billing/modules/addons/hooks/useAddons.js.map +1 -0
- package/dist/billing/modules/addons/index.d.ts +7 -0
- package/dist/billing/modules/addons/index.d.ts.map +1 -0
- package/dist/billing/modules/addons/index.js +10 -0
- package/dist/billing/modules/addons/pages/AddonBrowseDetailPage.d.ts +4 -0
- package/dist/billing/modules/addons/pages/AddonBrowseDetailPage.d.ts.map +1 -0
- package/dist/billing/modules/addons/pages/AddonBrowseDetailPage.js +266 -0
- package/dist/billing/modules/addons/pages/AddonBrowseDetailPage.js.map +1 -0
- package/dist/billing/modules/addons/pages/AddonCreatePage.d.ts +4 -0
- package/dist/billing/modules/addons/pages/AddonCreatePage.d.ts.map +1 -0
- package/dist/billing/modules/addons/pages/AddonCreatePage.js +369 -0
- package/dist/billing/modules/addons/pages/AddonCreatePage.js.map +1 -0
- package/dist/billing/modules/addons/pages/AddonDetailPage.d.ts +4 -0
- package/dist/billing/modules/addons/pages/AddonDetailPage.d.ts.map +1 -0
- package/dist/billing/modules/addons/pages/AddonDetailPage.js +280 -0
- package/dist/billing/modules/addons/pages/AddonDetailPage.js.map +1 -0
- package/dist/billing/modules/addons/pages/AddonEditPage.d.ts +4 -0
- package/dist/billing/modules/addons/pages/AddonEditPage.d.ts.map +1 -0
- package/dist/billing/modules/addons/pages/AddonEditPage.js +396 -0
- package/dist/billing/modules/addons/pages/AddonEditPage.js.map +1 -0
- package/dist/billing/modules/addons/pages/AddonsBrowsePage.d.ts +4 -0
- package/dist/billing/modules/addons/pages/AddonsBrowsePage.d.ts.map +1 -0
- package/dist/billing/modules/addons/pages/AddonsBrowsePage.js +582 -0
- package/dist/billing/modules/addons/pages/AddonsBrowsePage.js.map +1 -0
- package/dist/billing/modules/addons/pages/AddonsListPage.d.ts +4 -0
- package/dist/billing/modules/addons/pages/AddonsListPage.d.ts.map +1 -0
- package/dist/billing/modules/addons/pages/AddonsListPage.js +744 -0
- package/dist/billing/modules/addons/pages/AddonsListPage.js.map +1 -0
- package/dist/billing/modules/addons/pages/index.d.ts +11 -0
- package/dist/billing/modules/addons/pages/index.d.ts.map +1 -0
- package/dist/billing/modules/addons/pages/index.js +6 -0
- package/dist/billing/modules/addons/store/addonCartStore.d.ts +38 -0
- package/dist/billing/modules/addons/store/addonCartStore.d.ts.map +1 -0
- package/dist/billing/modules/addons/store/addonCartStore.js +74 -0
- package/dist/billing/modules/addons/store/addonCartStore.js.map +1 -0
- package/dist/billing/modules/affiliate/api.d.ts +101 -0
- package/dist/billing/modules/affiliate/api.d.ts.map +1 -0
- package/dist/billing/modules/affiliate/api.js +38 -0
- package/dist/billing/modules/affiliate/api.js.map +1 -0
- package/dist/billing/modules/affiliate/index.d.ts +2 -0
- package/dist/billing/modules/affiliate/index.d.ts.map +1 -0
- package/dist/billing/modules/affiliate/index.js +2 -0
- package/dist/billing/modules/affiliate/pages/AffiliateDashboardPage.d.ts +4 -0
- package/dist/billing/modules/affiliate/pages/AffiliateDashboardPage.d.ts.map +1 -0
- package/dist/billing/modules/affiliate/pages/AffiliateDashboardPage.js +464 -0
- package/dist/billing/modules/affiliate/pages/AffiliateDashboardPage.js.map +1 -0
- package/dist/billing/modules/analytics/index.d.ts +5 -0
- package/dist/billing/modules/analytics/index.d.ts.map +1 -0
- package/dist/billing/modules/analytics/index.js +3 -0
- package/dist/billing/modules/analytics/pages/AnalyticsPage.d.ts +4 -0
- package/dist/billing/modules/analytics/pages/AnalyticsPage.d.ts.map +1 -0
- package/dist/billing/modules/analytics/pages/AnalyticsPage.js +469 -0
- package/dist/billing/modules/analytics/pages/AnalyticsPage.js.map +1 -0
- package/dist/billing/modules/analytics/pages/index.d.ts +5 -0
- package/dist/billing/modules/analytics/pages/index.d.ts.map +1 -0
- package/dist/billing/modules/analytics/pages/index.js +1 -0
- package/dist/billing/modules/billing/hooks/index.d.ts +10 -0
- package/dist/billing/modules/billing/hooks/index.d.ts.map +1 -0
- package/dist/billing/modules/billing/hooks/index.js +4 -0
- package/dist/billing/modules/billing/hooks/useInvoices.d.ts +67 -0
- package/dist/billing/modules/billing/hooks/useInvoices.d.ts.map +1 -0
- package/dist/billing/modules/billing/hooks/useInvoices.js +87 -0
- package/dist/billing/modules/billing/hooks/useInvoices.js.map +1 -0
- package/dist/billing/modules/billing/hooks/usePayments.d.ts +62 -0
- package/dist/billing/modules/billing/hooks/usePayments.d.ts.map +1 -0
- package/dist/billing/modules/billing/hooks/usePayments.js +3 -0
- package/dist/billing/modules/billing/hooks/useRefunds.d.ts +191 -0
- package/dist/billing/modules/billing/hooks/useRefunds.d.ts.map +1 -0
- package/dist/billing/modules/billing/hooks/useRefunds.js +162 -0
- package/dist/billing/modules/billing/hooks/useRefunds.js.map +1 -0
- package/dist/billing/modules/billing/hooks/useTransactions.d.ts +41 -0
- package/dist/billing/modules/billing/hooks/useTransactions.d.ts.map +1 -0
- package/dist/billing/modules/billing/hooks/useTransactions.js +55 -0
- package/dist/billing/modules/billing/hooks/useTransactions.js.map +1 -0
- package/dist/billing/modules/billing/index.d.ts +7 -0
- package/dist/billing/modules/billing/index.d.ts.map +1 -0
- package/dist/billing/modules/billing/index.js +11 -0
- package/dist/billing/modules/billing/pages/InvoiceDetailPage.d.ts +4 -0
- package/dist/billing/modules/billing/pages/InvoiceDetailPage.d.ts.map +1 -0
- package/dist/billing/modules/billing/pages/InvoiceDetailPage.js +631 -0
- package/dist/billing/modules/billing/pages/InvoiceDetailPage.js.map +1 -0
- package/dist/billing/modules/billing/pages/InvoicesListPage.d.ts +4 -0
- package/dist/billing/modules/billing/pages/InvoicesListPage.d.ts.map +1 -0
- package/dist/billing/modules/billing/pages/InvoicesListPage.js +382 -0
- package/dist/billing/modules/billing/pages/InvoicesListPage.js.map +1 -0
- package/dist/billing/modules/billing/pages/PaymentMethodsPage.d.ts +4 -0
- package/dist/billing/modules/billing/pages/PaymentMethodsPage.d.ts.map +1 -0
- package/dist/billing/modules/billing/pages/PaymentMethodsPage.js +147 -0
- package/dist/billing/modules/billing/pages/PaymentMethodsPage.js.map +1 -0
- package/dist/billing/modules/billing/pages/RefundsPage.d.ts +4 -0
- package/dist/billing/modules/billing/pages/RefundsPage.d.ts.map +1 -0
- package/dist/billing/modules/billing/pages/RefundsPage.js +1074 -0
- package/dist/billing/modules/billing/pages/RefundsPage.js.map +1 -0
- package/dist/billing/modules/billing/pages/TransactionsPage.d.ts +4 -0
- package/dist/billing/modules/billing/pages/TransactionsPage.d.ts.map +1 -0
- package/dist/billing/modules/billing/pages/TransactionsPage.js +587 -0
- package/dist/billing/modules/billing/pages/TransactionsPage.js.map +1 -0
- package/dist/billing/modules/billing/pages/index.d.ts +10 -0
- package/dist/billing/modules/billing/pages/index.d.ts.map +1 -0
- package/dist/billing/modules/billing/pages/index.js +5 -0
- package/dist/billing/modules/checkout/components/AutoPayToggle.d.ts +14 -0
- package/dist/billing/modules/checkout/components/AutoPayToggle.d.ts.map +1 -0
- package/dist/billing/modules/checkout/components/AutoPayToggle.js +3 -0
- package/dist/billing/modules/checkout/components/BillingAccountSelector.d.ts +14 -0
- package/dist/billing/modules/checkout/components/BillingAccountSelector.d.ts.map +1 -0
- package/dist/billing/modules/checkout/components/BillingAccountSelector.js +151 -0
- package/dist/billing/modules/checkout/components/BillingAccountSelector.js.map +1 -0
- package/dist/billing/modules/checkout/components/CompactAutoPayToggle.d.ts +14 -0
- package/dist/billing/modules/checkout/components/CompactAutoPayToggle.d.ts.map +1 -0
- package/dist/billing/modules/checkout/components/CompactAutoPayToggle.js +4 -0
- package/dist/billing/modules/checkout/components/CreditsAmountInput.d.ts +14 -0
- package/dist/billing/modules/checkout/components/CreditsAmountInput.d.ts.map +1 -0
- package/dist/billing/modules/checkout/components/CreditsAmountInput.js +130 -0
- package/dist/billing/modules/checkout/components/CreditsAmountInput.js.map +1 -0
- package/dist/billing/modules/checkout/components/CreditsPaymentOption.d.ts +16 -0
- package/dist/billing/modules/checkout/components/CreditsPaymentOption.d.ts.map +1 -0
- package/dist/billing/modules/checkout/components/CreditsPaymentOption.js +5 -0
- package/dist/billing/modules/checkout/components/CurrencySelector.d.ts +19 -0
- package/dist/billing/modules/checkout/components/CurrencySelector.d.ts.map +1 -0
- package/dist/billing/modules/checkout/components/CurrencySelector.js +5 -0
- package/dist/billing/modules/checkout/components/NativeCheckoutView.d.ts +14 -0
- package/dist/billing/modules/checkout/components/NativeCheckoutView.d.ts.map +1 -0
- package/dist/billing/modules/checkout/components/NativeCheckoutView.js +273 -0
- package/dist/billing/modules/checkout/components/NativeCheckoutView.js.map +1 -0
- package/dist/billing/modules/checkout/components/OrderSummary.d.ts +22 -0
- package/dist/billing/modules/checkout/components/OrderSummary.d.ts.map +1 -0
- package/dist/billing/modules/checkout/components/OrderSummary.js +293 -0
- package/dist/billing/modules/checkout/components/OrderSummary.js.map +1 -0
- package/dist/billing/modules/checkout/components/PaymentProviderSelector.d.ts +19 -0
- package/dist/billing/modules/checkout/components/PaymentProviderSelector.d.ts.map +1 -0
- package/dist/billing/modules/checkout/components/PaymentProviderSelector.js +3 -0
- package/dist/billing/modules/checkout/components/PromoCodeInput.d.ts +19 -0
- package/dist/billing/modules/checkout/components/PromoCodeInput.d.ts.map +1 -0
- package/dist/billing/modules/checkout/components/PromoCodeInput.js +102 -0
- package/dist/billing/modules/checkout/components/PromoCodeInput.js.map +1 -0
- package/dist/billing/modules/checkout/components/RazorpayPaymentButton.d.ts +25 -0
- package/dist/billing/modules/checkout/components/RazorpayPaymentButton.d.ts.map +1 -0
- package/dist/billing/modules/checkout/components/RazorpayPaymentButton.js +169 -0
- package/dist/billing/modules/checkout/components/RazorpayPaymentButton.js.map +1 -0
- package/dist/billing/modules/checkout/components/SavedCardSelector.d.ts +13 -0
- package/dist/billing/modules/checkout/components/SavedCardSelector.d.ts.map +1 -0
- package/dist/billing/modules/checkout/components/SavedCardSelector.js +4 -0
- package/dist/billing/modules/checkout/components/SimpleAutoPayToggle.d.ts +13 -0
- package/dist/billing/modules/checkout/components/SimpleAutoPayToggle.d.ts.map +1 -0
- package/dist/billing/modules/checkout/components/SimpleAutoPayToggle.js +78 -0
- package/dist/billing/modules/checkout/components/SimpleAutoPayToggle.js.map +1 -0
- package/dist/billing/modules/checkout/components/StripePaymentForm.d.ts +16 -0
- package/dist/billing/modules/checkout/components/StripePaymentForm.d.ts.map +1 -0
- package/dist/billing/modules/checkout/components/StripePaymentForm.js +253 -0
- package/dist/billing/modules/checkout/components/StripePaymentForm.js.map +1 -0
- package/dist/billing/modules/checkout/components/SubscriptionSelector.d.ts +26 -0
- package/dist/billing/modules/checkout/components/SubscriptionSelector.d.ts.map +1 -0
- package/dist/billing/modules/checkout/components/SubscriptionSelector.js +84 -0
- package/dist/billing/modules/checkout/components/SubscriptionSelector.js.map +1 -0
- package/dist/billing/modules/checkout/components/UnifiedPaymentMethodSelector.d.ts +23 -0
- package/dist/billing/modules/checkout/components/UnifiedPaymentMethodSelector.d.ts.map +1 -0
- package/dist/billing/modules/checkout/components/UnifiedPaymentMethodSelector.js +229 -0
- package/dist/billing/modules/checkout/components/UnifiedPaymentMethodSelector.js.map +1 -0
- package/dist/billing/modules/checkout/components/index.d.ts +20 -0
- package/dist/billing/modules/checkout/components/index.d.ts.map +1 -0
- package/dist/billing/modules/checkout/components/index.js +16 -0
- package/dist/billing/modules/checkout/graphql/index.d.ts +6 -0
- package/dist/billing/modules/checkout/graphql/index.d.ts.map +1 -0
- package/dist/billing/modules/checkout/hooks/index.d.ts +9 -0
- package/dist/billing/modules/checkout/hooks/index.d.ts.map +1 -0
- package/dist/billing/modules/checkout/hooks/index.js +4 -0
- package/dist/billing/modules/checkout/hooks/useCheckout.d.ts +69 -0
- package/dist/billing/modules/checkout/hooks/useCheckout.d.ts.map +1 -0
- package/dist/billing/modules/checkout/hooks/useCheckout.js +377 -0
- package/dist/billing/modules/checkout/hooks/useCheckout.js.map +1 -0
- package/dist/billing/modules/checkout/hooks/useNativeCheckout.d.ts +26 -0
- package/dist/billing/modules/checkout/hooks/useNativeCheckout.d.ts.map +1 -0
- package/dist/billing/modules/checkout/hooks/useNativeCheckout.js +88 -0
- package/dist/billing/modules/checkout/hooks/useNativeCheckout.js.map +1 -0
- package/dist/billing/modules/checkout/hooks/usePaymentProviders.d.ts +19 -0
- package/dist/billing/modules/checkout/hooks/usePaymentProviders.d.ts.map +1 -0
- package/dist/billing/modules/checkout/hooks/usePaymentProviders.js +16 -0
- package/dist/billing/modules/checkout/hooks/usePaymentProviders.js.map +1 -0
- package/dist/billing/modules/checkout/hooks/usePaymentStatusPolling.d.ts +59 -0
- package/dist/billing/modules/checkout/hooks/usePaymentStatusPolling.d.ts.map +1 -0
- package/dist/billing/modules/checkout/hooks/usePaymentStatusPolling.js +107 -0
- package/dist/billing/modules/checkout/hooks/usePaymentStatusPolling.js.map +1 -0
- package/dist/billing/modules/checkout/index.d.ts +24 -0
- package/dist/billing/modules/checkout/index.d.ts.map +1 -0
- package/dist/billing/modules/checkout/index.js +19 -0
- package/dist/billing/modules/checkout/pages/CheckoutPage.d.ts +4 -0
- package/dist/billing/modules/checkout/pages/CheckoutPage.d.ts.map +1 -0
- package/dist/billing/modules/checkout/pages/CheckoutPage.js +1248 -0
- package/dist/billing/modules/checkout/pages/CheckoutPage.js.map +1 -0
- package/dist/billing/modules/checkout/pages/index.d.ts +5 -0
- package/dist/billing/modules/checkout/pages/index.d.ts.map +1 -0
- package/dist/billing/modules/checkout/pages/index.js +1 -0
- package/dist/billing/modules/checkout/types/index.d.ts +270 -0
- package/dist/billing/modules/checkout/types/index.d.ts.map +1 -0
- package/dist/billing/modules/checkout/utils/storeOrder.d.ts +20 -0
- package/dist/billing/modules/checkout/utils/storeOrder.d.ts.map +1 -0
- package/dist/billing/modules/checkout/utils/storeOrder.js +27 -0
- package/dist/billing/modules/checkout/utils/storeOrder.js.map +1 -0
- package/dist/billing/modules/coupons/index.d.ts +5 -0
- package/dist/billing/modules/coupons/index.d.ts.map +1 -0
- package/dist/billing/modules/coupons/index.js +6 -0
- package/dist/billing/modules/coupons/pages/CouponDetailPage.d.ts +4 -0
- package/dist/billing/modules/coupons/pages/CouponDetailPage.d.ts.map +1 -0
- package/dist/billing/modules/coupons/pages/CouponDetailPage.js +489 -0
- package/dist/billing/modules/coupons/pages/CouponDetailPage.js.map +1 -0
- package/dist/billing/modules/coupons/pages/CouponsListPage.d.ts +4 -0
- package/dist/billing/modules/coupons/pages/CouponsListPage.d.ts.map +1 -0
- package/dist/billing/modules/coupons/pages/CouponsListPage.js +544 -0
- package/dist/billing/modules/coupons/pages/CouponsListPage.js.map +1 -0
- package/dist/billing/modules/coupons/pages/CreateCouponPage.d.ts +4 -0
- package/dist/billing/modules/coupons/pages/CreateCouponPage.d.ts.map +1 -0
- package/dist/billing/modules/coupons/pages/CreateCouponPage.js +421 -0
- package/dist/billing/modules/coupons/pages/CreateCouponPage.js.map +1 -0
- package/dist/billing/modules/coupons/pages/EditCouponPage.d.ts +4 -0
- package/dist/billing/modules/coupons/pages/EditCouponPage.d.ts.map +1 -0
- package/dist/billing/modules/coupons/pages/EditCouponPage.js +379 -0
- package/dist/billing/modules/coupons/pages/EditCouponPage.js.map +1 -0
- package/dist/billing/modules/coupons/pages/index.d.ts +8 -0
- package/dist/billing/modules/coupons/pages/index.d.ts.map +1 -0
- package/dist/billing/modules/coupons/pages/index.js +4 -0
- package/dist/billing/modules/credits/hooks/index.d.ts +5 -0
- package/dist/billing/modules/credits/hooks/index.d.ts.map +1 -0
- package/dist/billing/modules/credits/hooks/index.js +1 -0
- package/dist/billing/modules/credits/hooks/useCredits.d.ts +75 -0
- package/dist/billing/modules/credits/hooks/useCredits.d.ts.map +1 -0
- package/dist/billing/modules/credits/hooks/useCredits.js +78 -0
- package/dist/billing/modules/credits/hooks/useCredits.js.map +1 -0
- package/dist/billing/modules/credits/index.d.ts +6 -0
- package/dist/billing/modules/credits/index.d.ts.map +1 -0
- package/dist/billing/modules/credits/index.js +8 -0
- package/dist/billing/modules/credits/pages/AdminCreditsPage.d.ts +4 -0
- package/dist/billing/modules/credits/pages/AdminCreditsPage.d.ts.map +1 -0
- package/dist/billing/modules/credits/pages/AdminCreditsPage.js +140 -0
- package/dist/billing/modules/credits/pages/AdminCreditsPage.js.map +1 -0
- package/dist/billing/modules/credits/pages/CreditTransactionsPage.d.ts +4 -0
- package/dist/billing/modules/credits/pages/CreditTransactionsPage.d.ts.map +1 -0
- package/dist/billing/modules/credits/pages/CreditTransactionsPage.js +331 -0
- package/dist/billing/modules/credits/pages/CreditTransactionsPage.js.map +1 -0
- package/dist/billing/modules/credits/pages/CreditWithdrawalPage.d.ts +4 -0
- package/dist/billing/modules/credits/pages/CreditWithdrawalPage.d.ts.map +1 -0
- package/dist/billing/modules/credits/pages/CreditWithdrawalPage.js +770 -0
- package/dist/billing/modules/credits/pages/CreditWithdrawalPage.js.map +1 -0
- package/dist/billing/modules/credits/pages/CreditsPage.d.ts +4 -0
- package/dist/billing/modules/credits/pages/CreditsPage.d.ts.map +1 -0
- package/dist/billing/modules/credits/pages/CreditsPage.js +324 -0
- package/dist/billing/modules/credits/pages/CreditsPage.js.map +1 -0
- package/dist/billing/modules/credits/pages/index.d.ts +8 -0
- package/dist/billing/modules/credits/pages/index.d.ts.map +1 -0
- package/dist/billing/modules/credits/pages/index.js +4 -0
- package/dist/billing/modules/dashboard/components/ActiveSubscriptionCard.d.ts +14 -0
- package/dist/billing/modules/dashboard/components/ActiveSubscriptionCard.d.ts.map +1 -0
- package/dist/billing/modules/dashboard/components/ActiveSubscriptionCard.js +185 -0
- package/dist/billing/modules/dashboard/components/ActiveSubscriptionCard.js.map +1 -0
- package/dist/billing/modules/dashboard/components/AddPaymentMethodModal.d.ts +111 -0
- package/dist/billing/modules/dashboard/components/AddPaymentMethodModal.d.ts.map +1 -0
- package/dist/billing/modules/dashboard/components/AddPaymentMethodModal.js +388 -0
- package/dist/billing/modules/dashboard/components/AddPaymentMethodModal.js.map +1 -0
- package/dist/billing/modules/dashboard/components/BillingAccountCard.d.ts +16 -0
- package/dist/billing/modules/dashboard/components/BillingAccountCard.d.ts.map +1 -0
- package/dist/billing/modules/dashboard/components/BillingAccountCard.js +146 -0
- package/dist/billing/modules/dashboard/components/BillingAccountCard.js.map +1 -0
- package/dist/billing/modules/dashboard/components/CreateBillingAccountModal.d.ts +13 -0
- package/dist/billing/modules/dashboard/components/CreateBillingAccountModal.d.ts.map +1 -0
- package/dist/billing/modules/dashboard/components/CreateBillingAccountModal.js +1044 -0
- package/dist/billing/modules/dashboard/components/CreateBillingAccountModal.js.map +1 -0
- package/dist/billing/modules/dashboard/components/PaymentMethodsSection.d.ts +15 -0
- package/dist/billing/modules/dashboard/components/PaymentMethodsSection.d.ts.map +1 -0
- package/dist/billing/modules/dashboard/components/PaymentMethodsSection.js +216 -0
- package/dist/billing/modules/dashboard/components/PaymentMethodsSection.js.map +1 -0
- package/dist/billing/modules/dashboard/components/RecommendedAddonsSection.d.ts +27 -0
- package/dist/billing/modules/dashboard/components/RecommendedAddonsSection.d.ts.map +1 -0
- package/dist/billing/modules/dashboard/components/RecommendedAddonsSection.js +193 -0
- package/dist/billing/modules/dashboard/components/RecommendedAddonsSection.js.map +1 -0
- package/dist/billing/modules/dashboard/components/index.d.ts +10 -0
- package/dist/billing/modules/dashboard/components/index.d.ts.map +1 -0
- package/dist/billing/modules/dashboard/components/index.js +6 -0
- package/dist/billing/modules/dashboard/hooks/index.d.ts +6 -0
- package/dist/billing/modules/dashboard/hooks/index.d.ts.map +1 -0
- package/dist/billing/modules/dashboard/hooks/index.js +2 -0
- package/dist/billing/modules/dashboard/hooks/useBillingOverviewData.d.ts +17 -0
- package/dist/billing/modules/dashboard/hooks/useBillingOverviewData.d.ts.map +1 -0
- package/dist/billing/modules/dashboard/hooks/useBillingOverviewData.js +42 -0
- package/dist/billing/modules/dashboard/hooks/useBillingOverviewData.js.map +1 -0
- package/dist/billing/modules/dashboard/hooks/useDashboard.d.ts +145 -0
- package/dist/billing/modules/dashboard/hooks/useDashboard.d.ts.map +1 -0
- package/dist/billing/modules/dashboard/hooks/useDashboard.js +118 -0
- package/dist/billing/modules/dashboard/hooks/useDashboard.js.map +1 -0
- package/dist/billing/modules/dashboard/index.d.ts +8 -0
- package/dist/billing/modules/dashboard/index.d.ts.map +1 -0
- package/dist/billing/modules/dashboard/index.js +12 -0
- package/dist/billing/modules/dashboard/pages/OverviewPage.d.ts +4 -0
- package/dist/billing/modules/dashboard/pages/OverviewPage.d.ts.map +1 -0
- package/dist/billing/modules/dashboard/pages/OverviewPage.js +478 -0
- package/dist/billing/modules/dashboard/pages/OverviewPage.js.map +1 -0
- package/dist/billing/modules/dashboard/pages/index.d.ts +5 -0
- package/dist/billing/modules/dashboard/pages/index.d.ts.map +1 -0
- package/dist/billing/modules/dashboard/pages/index.js +1 -0
- package/dist/billing/modules/discounts/index.d.ts +6 -0
- package/dist/billing/modules/discounts/index.d.ts.map +1 -0
- package/dist/billing/modules/discounts/index.js +3 -0
- package/dist/billing/modules/discounts/pages/DiscountsListPage.d.ts +4 -0
- package/dist/billing/modules/discounts/pages/DiscountsListPage.d.ts.map +1 -0
- package/dist/billing/modules/discounts/pages/DiscountsListPage.js +1009 -0
- package/dist/billing/modules/discounts/pages/DiscountsListPage.js.map +1 -0
- package/dist/billing/modules/discounts/pages/index.d.ts +6 -0
- package/dist/billing/modules/discounts/pages/index.d.ts.map +1 -0
- package/dist/billing/modules/discounts/pages/index.js +1 -0
- package/dist/billing/modules/earnings/api.d.ts +131 -0
- package/dist/billing/modules/earnings/api.d.ts.map +1 -0
- package/dist/billing/modules/earnings/api.js +122 -0
- package/dist/billing/modules/earnings/api.js.map +1 -0
- package/dist/billing/modules/earnings/index.d.ts +4 -0
- package/dist/billing/modules/earnings/index.d.ts.map +1 -0
- package/dist/billing/modules/earnings/index.js +4 -0
- package/dist/billing/modules/earnings/pages/EarningsPage.d.ts +4 -0
- package/dist/billing/modules/earnings/pages/EarningsPage.d.ts.map +1 -0
- package/dist/billing/modules/earnings/pages/EarningsPage.js +435 -0
- package/dist/billing/modules/earnings/pages/EarningsPage.js.map +1 -0
- package/dist/billing/modules/earnings/pages/PayoutAdminPage.d.ts +4 -0
- package/dist/billing/modules/earnings/pages/PayoutAdminPage.d.ts.map +1 -0
- package/dist/billing/modules/earnings/pages/PayoutAdminPage.js +273 -0
- package/dist/billing/modules/earnings/pages/PayoutAdminPage.js.map +1 -0
- package/dist/billing/modules/earnings/pages/PayoutsPage.d.ts +4 -0
- package/dist/billing/modules/earnings/pages/PayoutsPage.d.ts.map +1 -0
- package/dist/billing/modules/earnings/pages/PayoutsPage.js +480 -0
- package/dist/billing/modules/earnings/pages/PayoutsPage.js.map +1 -0
- package/dist/billing/modules/plans/hooks/index.d.ts +7 -0
- package/dist/billing/modules/plans/hooks/index.d.ts.map +1 -0
- package/dist/billing/modules/plans/hooks/index.js +2 -0
- package/dist/billing/modules/plans/hooks/usePlans.d.ts +46 -0
- package/dist/billing/modules/plans/hooks/usePlans.d.ts.map +1 -0
- package/dist/billing/modules/plans/hooks/usePlans.js +77 -0
- package/dist/billing/modules/plans/hooks/usePlans.js.map +1 -0
- package/dist/billing/modules/plans/hooks/useQuotas.d.ts +27 -0
- package/dist/billing/modules/plans/hooks/useQuotas.d.ts.map +1 -0
- package/dist/billing/modules/plans/hooks/useQuotas.js +21 -0
- package/dist/billing/modules/plans/hooks/useQuotas.js.map +1 -0
- package/dist/billing/modules/plans/index.d.ts +7 -0
- package/dist/billing/modules/plans/index.d.ts.map +1 -0
- package/dist/billing/modules/plans/index.js +11 -0
- package/dist/billing/modules/plans/pages/PlanBrowseDetailPage.d.ts +4 -0
- package/dist/billing/modules/plans/pages/PlanBrowseDetailPage.d.ts.map +1 -0
- package/dist/billing/modules/plans/pages/PlanBrowseDetailPage.js +264 -0
- package/dist/billing/modules/plans/pages/PlanBrowseDetailPage.js.map +1 -0
- package/dist/billing/modules/plans/pages/PlanCreatePage.d.ts +4 -0
- package/dist/billing/modules/plans/pages/PlanCreatePage.d.ts.map +1 -0
- package/dist/billing/modules/plans/pages/PlanCreatePage.js +368 -0
- package/dist/billing/modules/plans/pages/PlanCreatePage.js.map +1 -0
- package/dist/billing/modules/plans/pages/PlanDetailPage.d.ts +4 -0
- package/dist/billing/modules/plans/pages/PlanDetailPage.d.ts.map +1 -0
- package/dist/billing/modules/plans/pages/PlanDetailPage.js +356 -0
- package/dist/billing/modules/plans/pages/PlanDetailPage.js.map +1 -0
- package/dist/billing/modules/plans/pages/PlanEditPage.d.ts +4 -0
- package/dist/billing/modules/plans/pages/PlanEditPage.d.ts.map +1 -0
- package/dist/billing/modules/plans/pages/PlanEditPage.js +395 -0
- package/dist/billing/modules/plans/pages/PlanEditPage.js.map +1 -0
- package/dist/billing/modules/plans/pages/PlansBrowsePage.d.ts +4 -0
- package/dist/billing/modules/plans/pages/PlansBrowsePage.d.ts.map +1 -0
- package/dist/billing/modules/plans/pages/PlansBrowsePage.js +314 -0
- package/dist/billing/modules/plans/pages/PlansBrowsePage.js.map +1 -0
- package/dist/billing/modules/plans/pages/PlansListPage.d.ts +4 -0
- package/dist/billing/modules/plans/pages/PlansListPage.d.ts.map +1 -0
- package/dist/billing/modules/plans/pages/PlansListPage.js +438 -0
- package/dist/billing/modules/plans/pages/PlansListPage.js.map +1 -0
- package/dist/billing/modules/plans/pages/index.d.ts +11 -0
- package/dist/billing/modules/plans/pages/index.d.ts.map +1 -0
- package/dist/billing/modules/plans/pages/index.js +6 -0
- package/dist/billing/modules/quota/hooks/index.d.ts +6 -0
- package/dist/billing/modules/quota/hooks/index.d.ts.map +1 -0
- package/dist/billing/modules/quota/hooks/index.js +2 -0
- package/dist/billing/modules/quota/hooks/useQuota.d.ts +102 -0
- package/dist/billing/modules/quota/hooks/useQuota.d.ts.map +1 -0
- package/dist/billing/modules/quota/hooks/useQuota.js +63 -0
- package/dist/billing/modules/quota/hooks/useQuota.js.map +1 -0
- package/dist/billing/modules/quota/hooks/useQuotaTemplates.d.ts +39 -0
- package/dist/billing/modules/quota/hooks/useQuotaTemplates.d.ts.map +1 -0
- package/dist/billing/modules/quota/hooks/useQuotaTemplates.js +67 -0
- package/dist/billing/modules/quota/hooks/useQuotaTemplates.js.map +1 -0
- package/dist/billing/modules/quota/index.d.ts +6 -0
- package/dist/billing/modules/quota/index.d.ts.map +1 -0
- package/dist/billing/modules/quota/index.js +10 -0
- package/dist/billing/modules/quota/pages/QuotaPage.d.ts +4 -0
- package/dist/billing/modules/quota/pages/QuotaPage.d.ts.map +1 -0
- package/dist/billing/modules/quota/pages/QuotaPage.js +337 -0
- package/dist/billing/modules/quota/pages/QuotaPage.js.map +1 -0
- package/dist/billing/modules/quota/pages/QuotaTemplateCreatePage.d.ts +4 -0
- package/dist/billing/modules/quota/pages/QuotaTemplateCreatePage.d.ts.map +1 -0
- package/dist/billing/modules/quota/pages/QuotaTemplateCreatePage.js +273 -0
- package/dist/billing/modules/quota/pages/QuotaTemplateCreatePage.js.map +1 -0
- package/dist/billing/modules/quota/pages/QuotaTemplateDetailPage.d.ts +4 -0
- package/dist/billing/modules/quota/pages/QuotaTemplateDetailPage.d.ts.map +1 -0
- package/dist/billing/modules/quota/pages/QuotaTemplateDetailPage.js +272 -0
- package/dist/billing/modules/quota/pages/QuotaTemplateDetailPage.js.map +1 -0
- package/dist/billing/modules/quota/pages/QuotaTemplateEditPage.d.ts +4 -0
- package/dist/billing/modules/quota/pages/QuotaTemplateEditPage.d.ts.map +1 -0
- package/dist/billing/modules/quota/pages/QuotaTemplateEditPage.js +316 -0
- package/dist/billing/modules/quota/pages/QuotaTemplateEditPage.js.map +1 -0
- package/dist/billing/modules/quota/pages/QuotaTemplatesListPage.d.ts +4 -0
- package/dist/billing/modules/quota/pages/QuotaTemplatesListPage.d.ts.map +1 -0
- package/dist/billing/modules/quota/pages/QuotaTemplatesListPage.js +401 -0
- package/dist/billing/modules/quota/pages/QuotaTemplatesListPage.js.map +1 -0
- package/dist/billing/modules/quota/pages/index.d.ts +9 -0
- package/dist/billing/modules/quota/pages/index.d.ts.map +1 -0
- package/dist/billing/modules/quota/pages/index.js +5 -0
- package/dist/billing/modules/settings/index.d.ts +5 -0
- package/dist/billing/modules/settings/index.d.ts.map +1 -0
- package/dist/billing/modules/settings/index.js +4 -0
- package/dist/billing/modules/settings/pages/SettingsPage.d.ts +4 -0
- package/dist/billing/modules/settings/pages/SettingsPage.d.ts.map +1 -0
- package/dist/billing/modules/settings/pages/SettingsPage.js +632 -0
- package/dist/billing/modules/settings/pages/SettingsPage.js.map +1 -0
- package/dist/billing/modules/settings/pages/TeamPermissionsPage.d.ts +4 -0
- package/dist/billing/modules/settings/pages/TeamPermissionsPage.d.ts.map +1 -0
- package/dist/billing/modules/settings/pages/TeamPermissionsPage.js +270 -0
- package/dist/billing/modules/settings/pages/TeamPermissionsPage.js.map +1 -0
- package/dist/billing/modules/settings/pages/index.d.ts +6 -0
- package/dist/billing/modules/settings/pages/index.d.ts.map +1 -0
- package/dist/billing/modules/settings/pages/index.js +2 -0
- package/dist/billing/modules/store/graphql/index.d.ts +6 -0
- package/dist/billing/modules/store/graphql/index.d.ts.map +1 -0
- package/dist/billing/modules/store/graphql/index.js +1 -0
- package/dist/billing/modules/store/index.d.ts +6 -0
- package/dist/billing/modules/store/index.d.ts.map +1 -0
- package/dist/billing/modules/store/index.js +3 -0
- package/dist/billing/modules/store/pages/StoreCheckoutPage.d.ts +11 -0
- package/dist/billing/modules/store/pages/StoreCheckoutPage.d.ts.map +1 -0
- package/dist/billing/modules/store/pages/StoreCheckoutPage.js +18 -0
- package/dist/billing/modules/store/pages/StoreCheckoutPage.js.map +1 -0
- package/dist/billing/modules/subscriptions/components/ManageSeatsModal.d.ts +12 -0
- package/dist/billing/modules/subscriptions/components/ManageSeatsModal.d.ts.map +1 -0
- package/dist/billing/modules/subscriptions/components/ManageSeatsModal.js +167 -0
- package/dist/billing/modules/subscriptions/components/ManageSeatsModal.js.map +1 -0
- package/dist/billing/modules/subscriptions/hooks/index.d.ts +6 -0
- package/dist/billing/modules/subscriptions/hooks/index.d.ts.map +1 -0
- package/dist/billing/modules/subscriptions/hooks/index.js +1 -0
- package/dist/billing/modules/subscriptions/hooks/useSubscriptions.d.ts +92 -0
- package/dist/billing/modules/subscriptions/hooks/useSubscriptions.d.ts.map +1 -0
- package/dist/billing/modules/subscriptions/hooks/useSubscriptions.js +136 -0
- package/dist/billing/modules/subscriptions/hooks/useSubscriptions.js.map +1 -0
- package/dist/billing/modules/subscriptions/index.d.ts +7 -0
- package/dist/billing/modules/subscriptions/index.d.ts.map +1 -0
- package/dist/billing/modules/subscriptions/index.js +7 -0
- package/dist/billing/modules/subscriptions/pages/SubscriptionDetailPage.d.ts +4 -0
- package/dist/billing/modules/subscriptions/pages/SubscriptionDetailPage.d.ts.map +1 -0
- package/dist/billing/modules/subscriptions/pages/SubscriptionDetailPage.js +551 -0
- package/dist/billing/modules/subscriptions/pages/SubscriptionDetailPage.js.map +1 -0
- package/dist/billing/modules/subscriptions/pages/SubscriptionsListPage.d.ts +4 -0
- package/dist/billing/modules/subscriptions/pages/SubscriptionsListPage.d.ts.map +1 -0
- package/dist/billing/modules/subscriptions/pages/SubscriptionsListPage.js +529 -0
- package/dist/billing/modules/subscriptions/pages/SubscriptionsListPage.js.map +1 -0
- package/dist/billing/modules/subscriptions/pages/UpgradeSubscriptionPage.d.ts +4 -0
- package/dist/billing/modules/subscriptions/pages/UpgradeSubscriptionPage.d.ts.map +1 -0
- package/dist/billing/modules/subscriptions/pages/UpgradeSubscriptionPage.js +430 -0
- package/dist/billing/modules/subscriptions/pages/UpgradeSubscriptionPage.js.map +1 -0
- package/dist/billing/modules/subscriptions/pages/index.d.ts +8 -0
- package/dist/billing/modules/subscriptions/pages/index.d.ts.map +1 -0
- package/dist/billing/modules/subscriptions/pages/index.js +3 -0
- package/dist/billing/modules/usage/hooks/index.d.ts +6 -0
- package/dist/billing/modules/usage/hooks/index.d.ts.map +1 -0
- package/dist/billing/modules/usage/hooks/index.js +1 -0
- package/dist/billing/modules/usage/hooks/useUsage.d.ts +203 -0
- package/dist/billing/modules/usage/hooks/useUsage.d.ts.map +1 -0
- package/dist/billing/modules/usage/hooks/useUsage.js +271 -0
- package/dist/billing/modules/usage/hooks/useUsage.js.map +1 -0
- package/dist/billing/modules/usage/index.d.ts +6 -0
- package/dist/billing/modules/usage/index.d.ts.map +1 -0
- package/dist/billing/modules/usage/index.js +5 -0
- package/dist/billing/modules/usage/pages/UsagePage.d.ts +4 -0
- package/dist/billing/modules/usage/pages/UsagePage.d.ts.map +1 -0
- package/dist/billing/modules/usage/pages/UsagePage.js +817 -0
- package/dist/billing/modules/usage/pages/UsagePage.js.map +1 -0
- package/dist/billing/modules/usage/pages/index.d.ts +5 -0
- package/dist/billing/modules/usage/pages/index.d.ts.map +1 -0
- package/dist/billing/modules/usage/pages/index.js +1 -0
- package/dist/billing/providers/BillingProvider.d.ts +16 -0
- package/dist/billing/providers/BillingProvider.d.ts.map +1 -0
- package/dist/billing/providers/BillingProvider.js +40 -0
- package/dist/billing/providers/BillingProvider.js.map +1 -0
- package/dist/billing/shared/components/AccessDenied.d.ts +8 -0
- package/dist/billing/shared/components/AccessDenied.d.ts.map +1 -0
- package/dist/billing/shared/components/AccessDenied.js +44 -0
- package/dist/billing/shared/components/AccessDenied.js.map +1 -0
- package/dist/billing/shared/components/CurrencyPriceOverridesEditor.d.ts +11 -0
- package/dist/billing/shared/components/CurrencyPriceOverridesEditor.d.ts.map +1 -0
- package/dist/billing/shared/components/CurrencyPriceOverridesEditor.js +230 -0
- package/dist/billing/shared/components/CurrencyPriceOverridesEditor.js.map +1 -0
- package/dist/billing/shared/components/EmptyState.d.ts +11 -0
- package/dist/billing/shared/components/EmptyState.d.ts.map +1 -0
- package/dist/billing/shared/components/EmptyState.js +27 -0
- package/dist/billing/shared/components/EmptyState.js.map +1 -0
- package/dist/billing/shared/components/GeoPricingOverridesEditor.d.ts +11 -0
- package/dist/billing/shared/components/GeoPricingOverridesEditor.d.ts.map +1 -0
- package/dist/billing/shared/components/GeoPricingOverridesEditor.js +1 -0
- package/dist/billing/shared/components/PageHeader.d.ts +11 -0
- package/dist/billing/shared/components/PageHeader.d.ts.map +1 -0
- package/dist/billing/shared/components/PageHeader.js +25 -0
- package/dist/billing/shared/components/PageHeader.js.map +1 -0
- package/dist/billing/shared/components/ServerError.d.ts +11 -0
- package/dist/billing/shared/components/ServerError.d.ts.map +1 -0
- package/dist/billing/shared/components/ServerError.js +75 -0
- package/dist/billing/shared/components/ServerError.js.map +1 -0
- package/dist/billing/shared/components/StatCard.d.ts +15 -0
- package/dist/billing/shared/components/StatCard.d.ts.map +1 -0
- package/dist/billing/shared/components/StatCard.js +37 -0
- package/dist/billing/shared/components/StatCard.js.map +1 -0
- package/dist/billing/shared/components/index.d.ts +11 -0
- package/dist/billing/shared/components/index.d.ts.map +1 -0
- package/dist/billing/shared/components/index.js +7 -0
- package/dist/billing/shared/index.d.ts +8 -0
- package/dist/billing/shared/index.d.ts.map +1 -0
- package/dist/billing/shared/types/graphql.d.ts +926 -0
- package/dist/billing/shared/types/graphql.d.ts.map +1 -0
- package/dist/billing/shared/types/graphql.js +30 -0
- package/dist/billing/shared/types/graphql.js.map +1 -0
- package/dist/billing/shared/types/index.d.ts +96 -0
- package/dist/billing/shared/types/index.d.ts.map +1 -0
- package/dist/billing/shared/utils/directActivityGraphql.d.ts +13 -0
- package/dist/billing/shared/utils/directActivityGraphql.d.ts.map +1 -0
- package/dist/billing/shared/utils/directActivityGraphql.js +2 -0
- package/dist/billing/shared/utils/directBillingGraphql.d.ts +13 -0
- package/dist/billing/shared/utils/directBillingGraphql.d.ts.map +1 -0
- package/dist/billing/shared/utils/directBillingGraphql.js +22 -0
- package/dist/billing/shared/utils/directBillingGraphql.js.map +1 -0
- package/dist/billing/shared/utils/error.d.ts +30 -0
- package/dist/billing/shared/utils/error.d.ts.map +1 -0
- package/dist/billing/shared/utils/error.js +16 -0
- package/dist/billing/shared/utils/error.js.map +1 -0
- package/dist/billing/shared/utils/format.d.ts +28 -0
- package/dist/billing/shared/utils/format.d.ts.map +1 -0
- package/dist/billing/shared/utils/format.js +65 -0
- package/dist/billing/shared/utils/format.js.map +1 -0
- package/dist/billing/shared/utils/gatewayGraphql.d.ts +15 -0
- package/dist/billing/shared/utils/gatewayGraphql.d.ts.map +1 -0
- package/dist/billing/shared/utils/gatewayGraphql.js +27 -0
- package/dist/billing/shared/utils/gatewayGraphql.js.map +1 -0
- package/dist/billing/shared/utils/index.d.ts +13 -0
- package/dist/billing/shared/utils/index.d.ts.map +1 -0
- package/dist/billing/shared/utils/index.js +8 -0
- package/dist/billing/shared/utils/navigation.d.ts +2 -0
- package/dist/billing/shared/utils/navigation.d.ts.map +1 -0
- package/dist/billing/shared/utils/navigation.js +8 -0
- package/dist/billing/shared/utils/navigation.js.map +1 -0
- package/dist/billing/shared/utils/paymentTheme.d.ts +18 -0
- package/dist/billing/shared/utils/paymentTheme.d.ts.map +1 -0
- package/dist/billing/shared/utils/paymentTheme.js +32 -0
- package/dist/billing/shared/utils/paymentTheme.js.map +1 -0
- package/dist/billing/shared/utils/status.d.ts +28 -0
- package/dist/billing/shared/utils/status.d.ts.map +1 -0
- package/dist/billing/shared/utils/status.js +57 -0
- package/dist/billing/shared/utils/status.js.map +1 -0
- package/dist/billing/shared/utils/tokens.d.ts +156 -0
- package/dist/billing/shared/utils/tokens.d.ts.map +1 -0
- package/dist/billing/shared/utils/tokens.js +128 -0
- package/dist/billing/shared/utils/tokens.js.map +1 -0
- package/dist/billing/types/index.d.ts +268 -0
- package/dist/billing/types/index.d.ts.map +1 -0
- package/dist/billing/utils/index.d.ts +128 -0
- package/dist/billing/utils/index.d.ts.map +1 -0
- package/dist/dev/main.d.ts +2 -0
- package/dist/dev/main.d.ts.map +1 -0
- package/dist/generated/global-operations.d.ts +9544 -0
- package/dist/generated/global-operations.d.ts.map +1 -0
- package/dist/generated/global-operations.js +3542 -0
- package/dist/generated/global-operations.js.map +1 -0
- package/dist/generated/global-types.d.ts +22208 -0
- package/dist/generated/global-types.d.ts.map +1 -0
- package/dist/generated/global-types.js +12 -0
- package/dist/generated/global-types.js.map +1 -0
- package/dist/generated/wspace-operations.d.ts +61 -0
- package/dist/generated/wspace-operations.d.ts.map +1 -0
- package/dist/generated/wspace-operations.js +35 -0
- package/dist/generated/wspace-operations.js.map +1 -0
- package/dist/generated/wspace-types.d.ts +48578 -0
- package/dist/generated/wspace-types.d.ts.map +1 -0
- package/dist/index.d.ts +8 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +2 -0
- package/dist/node_modules/@capacitor/core/dist/index.js +270 -0
- package/dist/node_modules/@capacitor/core/dist/index.js.map +1 -0
- package/dist/utils/nativeBridge.d.ts +3 -0
- package/dist/utils/nativeBridge.d.ts.map +1 -0
- package/dist/utils/nativeBridge.js +2 -0
- package/package.json +112 -0
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import { CheckoutItem, CheckoutBillingAccount, PaymentProvider, Currency, CheckoutState, PaymentInitResponse, PromoCodeResult } from '../types';
|
|
2
|
+
|
|
3
|
+
interface UseCheckoutOptions {
|
|
4
|
+
billingAccountId?: string;
|
|
5
|
+
defaultCurrency?: Currency;
|
|
6
|
+
defaultSaveCard?: boolean;
|
|
7
|
+
upgradeFromSubscriptionId?: string;
|
|
8
|
+
/** For plan downgrades — old sub auto-renewal cancelled, runs to natural expiry */
|
|
9
|
+
downgradeFromSubscriptionId?: string;
|
|
10
|
+
/** For addon purchases - pre-selected subscription ID */
|
|
11
|
+
defaultSubscriptionId?: string;
|
|
12
|
+
}
|
|
13
|
+
interface UseCheckoutResult {
|
|
14
|
+
items: CheckoutItem[];
|
|
15
|
+
billingAccount: CheckoutBillingAccount | null;
|
|
16
|
+
selectedProvider: PaymentProvider;
|
|
17
|
+
selectedCurrency: Currency;
|
|
18
|
+
promoCode: string;
|
|
19
|
+
promoDiscount: number;
|
|
20
|
+
promoDiscountType: 'PERCENTAGE' | 'FIXED';
|
|
21
|
+
useCredits: boolean;
|
|
22
|
+
creditsToUse: number;
|
|
23
|
+
checkoutState: CheckoutState;
|
|
24
|
+
error: string | null;
|
|
25
|
+
selectedPaymentMethodId: string | null;
|
|
26
|
+
saveCard: boolean;
|
|
27
|
+
autoRenew: boolean;
|
|
28
|
+
autoRenewPaymentMethodId: string | null;
|
|
29
|
+
selectedSubscriptionId: string | null;
|
|
30
|
+
subtotal: number;
|
|
31
|
+
subtotalUSD: number;
|
|
32
|
+
discountAmount: number;
|
|
33
|
+
taxAmount: number;
|
|
34
|
+
taxRate: number;
|
|
35
|
+
taxType: string;
|
|
36
|
+
total: number;
|
|
37
|
+
totalInSelectedCurrency: number;
|
|
38
|
+
availableCredits: number;
|
|
39
|
+
hasEnoughCredits: boolean;
|
|
40
|
+
canPayWithCredits: boolean;
|
|
41
|
+
isLoading: boolean;
|
|
42
|
+
isProcessing: boolean;
|
|
43
|
+
isCalculatingTax: boolean;
|
|
44
|
+
conversionRate: number;
|
|
45
|
+
convertedAmount: number | null;
|
|
46
|
+
addItem: (item: CheckoutItem) => void;
|
|
47
|
+
removeItem: (itemId: string) => void;
|
|
48
|
+
updateItemQuantity: (itemId: string, quantity: number) => void;
|
|
49
|
+
updateItemPrice: (itemId: string, price: number, currency?: Currency) => void;
|
|
50
|
+
clearItems: () => void;
|
|
51
|
+
setBillingAccount: (account: CheckoutBillingAccount | null) => void;
|
|
52
|
+
setPaymentProvider: (provider: PaymentProvider) => void;
|
|
53
|
+
setCurrency: (currency: Currency) => void;
|
|
54
|
+
setPromoCode: (code: string) => void;
|
|
55
|
+
validatePromoCode: () => Promise<PromoCodeResult>;
|
|
56
|
+
clearPromoCode: () => void;
|
|
57
|
+
setUseCredits: (use: boolean) => void;
|
|
58
|
+
setCreditsToUse: (amount: number) => void;
|
|
59
|
+
setSelectedPaymentMethodId: (id: string | null) => void;
|
|
60
|
+
setSaveCard: (save: boolean) => void;
|
|
61
|
+
setAutoRenew: (enabled: boolean) => void;
|
|
62
|
+
setAutoRenewPaymentMethodId: (id: string | null) => void;
|
|
63
|
+
setSelectedSubscriptionId: (id: string | null) => void;
|
|
64
|
+
initiatePayment: () => Promise<PaymentInitResponse>;
|
|
65
|
+
reset: () => void;
|
|
66
|
+
}
|
|
67
|
+
export declare function useCheckout(options?: UseCheckoutOptions): UseCheckoutResult;
|
|
68
|
+
export {};
|
|
69
|
+
//# sourceMappingURL=useCheckout.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useCheckout.d.ts","sourceRoot":"","sources":["../../../../../src/billing/modules/checkout/hooks/useCheckout.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,377 @@
|
|
|
1
|
+
import { useConvertCurrencyLazyQuery as e, useInitiatePaymentCheckoutMutation as t, useSpendCreditsCheckoutMutation as n, useValidateCouponLazyQuery as r } from "../../../../generated/global-operations.js";
|
|
2
|
+
import { useCallback as i, useEffect as a, useMemo as o, useState as s } from "react";
|
|
3
|
+
//#region src/billing/modules/checkout/hooks/useCheckout.ts
|
|
4
|
+
var ee = 100;
|
|
5
|
+
function c(c = {}) {
|
|
6
|
+
let { defaultCurrency: l = "USD", defaultSaveCard: u = !1, upgradeFromSubscriptionId: d, downgradeFromSubscriptionId: f, defaultSubscriptionId: p } = c, [m, h] = s([]), [g, te] = s(null), [_, ne] = s("AUTO"), [v, y] = s(l), [b, x] = s(""), [S, C] = s(0), [re, w] = s("PERCENTAGE"), [T, E] = s(!1), [D, O] = s(0), [k, A] = s("idle"), [ie, j] = s(null), [M, N] = s(0), [ae, P] = s(0), [oe, F] = s("NONE"), [I, L] = s(null), [R, se] = s(u), [z, ce] = s(!1), [B, V] = s(null), [H, U] = s(p ?? null), [W] = t(), [G] = n(), [K, { data: q, loading: le }] = e(), [ue] = r(), J = o(() => m.reduce((e, t) => e + t.price * t.quantity, 0), [m]), Y = o(() => m.reduce((e, t) => e + (t.priceUSD ?? t.price) * t.quantity, 0), [m]), X = o(() => S ? Math.min(S, J) : 0, [J, S]), Z = o(() => {
|
|
7
|
+
let e = J - X;
|
|
8
|
+
return (T ? Math.max(0, e - D) : e) + M;
|
|
9
|
+
}, [
|
|
10
|
+
J,
|
|
11
|
+
X,
|
|
12
|
+
T,
|
|
13
|
+
D,
|
|
14
|
+
M
|
|
15
|
+
]), Q = g?.creditAmount ?? 0, de = o(() => Q >= Y * ee, [Q, Y]), fe = o(() => !m.some((e) => e.type === "CREDITS") && Q > 0, [m, Q]), pe = q?.convertCurrency?.amount ?? null, me = q?.convertCurrency?.exchangeRate ?? 1, he = pe ?? Z, ge = k === "loading" || le, _e = k === "processing";
|
|
16
|
+
a(() => {
|
|
17
|
+
if (_ !== "CREDITS" && m.length !== 0 && !m.every((e) => e.currency === v || e.type === "CREDITS") && Z > 0 && v !== "USD") {
|
|
18
|
+
if (v === "INR" && M === 0 && J > 0) return;
|
|
19
|
+
K({ variables: {
|
|
20
|
+
amount: Z,
|
|
21
|
+
toCurrency: v,
|
|
22
|
+
fromCurrency: "USD"
|
|
23
|
+
} });
|
|
24
|
+
}
|
|
25
|
+
}, [
|
|
26
|
+
Z,
|
|
27
|
+
v,
|
|
28
|
+
_,
|
|
29
|
+
K,
|
|
30
|
+
M,
|
|
31
|
+
J,
|
|
32
|
+
m
|
|
33
|
+
]), a(() => {
|
|
34
|
+
if (!g || J <= 0) {
|
|
35
|
+
N(0), P(0), F("NONE");
|
|
36
|
+
return;
|
|
37
|
+
}
|
|
38
|
+
if (_ === "CREDITS") {
|
|
39
|
+
N(0), P(0), F("NONE");
|
|
40
|
+
return;
|
|
41
|
+
}
|
|
42
|
+
if (v !== "INR") {
|
|
43
|
+
N(0), P(0), F("NONE");
|
|
44
|
+
return;
|
|
45
|
+
}
|
|
46
|
+
let e = J - X, t = .18;
|
|
47
|
+
N(e * t), P(t), F("GST");
|
|
48
|
+
}, [
|
|
49
|
+
g,
|
|
50
|
+
J,
|
|
51
|
+
X,
|
|
52
|
+
v,
|
|
53
|
+
_
|
|
54
|
+
]);
|
|
55
|
+
let ve = i((e) => {
|
|
56
|
+
h((t) => e.type === "PLAN" ? t.find((e) => e.type === "PLAN") ? t.map((t) => t.type === "PLAN" ? {
|
|
57
|
+
...e,
|
|
58
|
+
quantity: 1
|
|
59
|
+
} : t) : [...t, {
|
|
60
|
+
...e,
|
|
61
|
+
quantity: 1
|
|
62
|
+
}] : t.find((t) => t.id === e.id) ? t.map((t) => t.id === e.id ? {
|
|
63
|
+
...t,
|
|
64
|
+
quantity: t.quantity + e.quantity
|
|
65
|
+
} : t) : [...t, e]);
|
|
66
|
+
}, []), $ = i((e) => {
|
|
67
|
+
h((t) => t.filter((t) => t.id !== e));
|
|
68
|
+
}, []), ye = i((e, t) => {
|
|
69
|
+
if (t <= 0) {
|
|
70
|
+
$(e);
|
|
71
|
+
return;
|
|
72
|
+
}
|
|
73
|
+
h((n) => n.map((n) => n.id === e ? n.type === "PLAN" ? {
|
|
74
|
+
...n,
|
|
75
|
+
quantity: 1
|
|
76
|
+
} : {
|
|
77
|
+
...n,
|
|
78
|
+
quantity: t
|
|
79
|
+
} : n));
|
|
80
|
+
}, [$]), be = i((e, t, n) => {
|
|
81
|
+
h((r) => r.map((r) => {
|
|
82
|
+
if (r.id !== e) return r;
|
|
83
|
+
let i = { price: t };
|
|
84
|
+
return n && (i.currency = n), {
|
|
85
|
+
...r,
|
|
86
|
+
...i
|
|
87
|
+
};
|
|
88
|
+
}));
|
|
89
|
+
}, []), xe = i(() => {
|
|
90
|
+
h([]);
|
|
91
|
+
}, []), Se = i((e) => {
|
|
92
|
+
te(e), E(!1), O(0);
|
|
93
|
+
}, []), Ce = i((e) => {
|
|
94
|
+
y(e);
|
|
95
|
+
let t = m.every((t) => t.currency === e || t.type === "CREDITS");
|
|
96
|
+
Z > 0 && e !== "USD" && !t && K({ variables: {
|
|
97
|
+
amount: Z,
|
|
98
|
+
toCurrency: e,
|
|
99
|
+
fromCurrency: "USD"
|
|
100
|
+
} });
|
|
101
|
+
}, [
|
|
102
|
+
Z,
|
|
103
|
+
K,
|
|
104
|
+
m
|
|
105
|
+
]);
|
|
106
|
+
return {
|
|
107
|
+
items: m,
|
|
108
|
+
billingAccount: g,
|
|
109
|
+
selectedProvider: _,
|
|
110
|
+
selectedCurrency: v,
|
|
111
|
+
promoCode: b,
|
|
112
|
+
promoDiscount: S,
|
|
113
|
+
promoDiscountType: re,
|
|
114
|
+
useCredits: T,
|
|
115
|
+
creditsToUse: D,
|
|
116
|
+
checkoutState: k,
|
|
117
|
+
error: ie,
|
|
118
|
+
selectedPaymentMethodId: I,
|
|
119
|
+
saveCard: R,
|
|
120
|
+
autoRenew: z,
|
|
121
|
+
autoRenewPaymentMethodId: B,
|
|
122
|
+
selectedSubscriptionId: H,
|
|
123
|
+
subtotal: J,
|
|
124
|
+
subtotalUSD: Y,
|
|
125
|
+
discountAmount: X,
|
|
126
|
+
taxAmount: M,
|
|
127
|
+
taxRate: ae,
|
|
128
|
+
taxType: oe,
|
|
129
|
+
total: Z,
|
|
130
|
+
totalInSelectedCurrency: he,
|
|
131
|
+
availableCredits: Q,
|
|
132
|
+
hasEnoughCredits: de,
|
|
133
|
+
canPayWithCredits: fe,
|
|
134
|
+
isLoading: ge,
|
|
135
|
+
isProcessing: _e,
|
|
136
|
+
isCalculatingTax: !1,
|
|
137
|
+
conversionRate: me,
|
|
138
|
+
convertedAmount: pe,
|
|
139
|
+
addItem: ve,
|
|
140
|
+
removeItem: $,
|
|
141
|
+
updateItemQuantity: ye,
|
|
142
|
+
updateItemPrice: be,
|
|
143
|
+
clearItems: xe,
|
|
144
|
+
setBillingAccount: Se,
|
|
145
|
+
setPaymentProvider: i((e) => {
|
|
146
|
+
ne(e), e === "RAZORPAY" && v !== "INR" && y("INR");
|
|
147
|
+
}, [v]),
|
|
148
|
+
setCurrency: Ce,
|
|
149
|
+
setPromoCode: x,
|
|
150
|
+
validatePromoCode: i(async () => {
|
|
151
|
+
if (!b.trim()) return {
|
|
152
|
+
valid: !1,
|
|
153
|
+
code: "",
|
|
154
|
+
discountType: "PERCENTAGE",
|
|
155
|
+
discountValue: 0,
|
|
156
|
+
error: "Please enter a promo code"
|
|
157
|
+
};
|
|
158
|
+
try {
|
|
159
|
+
A("loading");
|
|
160
|
+
let { data: e, error: t } = await ue({ variables: { input: {
|
|
161
|
+
code: b.trim().toUpperCase(),
|
|
162
|
+
userId: g?.id || "unknown",
|
|
163
|
+
amount: J,
|
|
164
|
+
currency: v
|
|
165
|
+
} } });
|
|
166
|
+
if (t || !e?.validateCoupon) return C(0), A("idle"), {
|
|
167
|
+
valid: !1,
|
|
168
|
+
code: b,
|
|
169
|
+
discountType: "PERCENTAGE",
|
|
170
|
+
discountValue: 0,
|
|
171
|
+
error: "Failed to validate coupon"
|
|
172
|
+
};
|
|
173
|
+
let n = e.validateCoupon;
|
|
174
|
+
if (!n.valid) return C(0), A("idle"), {
|
|
175
|
+
valid: !1,
|
|
176
|
+
code: b,
|
|
177
|
+
discountType: "PERCENTAGE",
|
|
178
|
+
discountValue: 0,
|
|
179
|
+
error: n.error || "Invalid coupon code"
|
|
180
|
+
};
|
|
181
|
+
let r = n.coupon;
|
|
182
|
+
if (!r) return C(0), A("idle"), {
|
|
183
|
+
valid: !1,
|
|
184
|
+
code: b,
|
|
185
|
+
discountType: "PERCENTAGE",
|
|
186
|
+
discountValue: 0,
|
|
187
|
+
error: "Coupon data not found"
|
|
188
|
+
};
|
|
189
|
+
let i = n.discountAmount || 0, a = r.type === "FIXED_AMOUNT" ? "FIXED" : "PERCENTAGE";
|
|
190
|
+
return C(i), w(a), A("idle"), {
|
|
191
|
+
valid: !0,
|
|
192
|
+
code: r.code,
|
|
193
|
+
discountType: a,
|
|
194
|
+
discountValue: i
|
|
195
|
+
};
|
|
196
|
+
} catch {
|
|
197
|
+
return C(0), A("idle"), {
|
|
198
|
+
valid: !1,
|
|
199
|
+
code: b,
|
|
200
|
+
discountType: "PERCENTAGE",
|
|
201
|
+
discountValue: 0,
|
|
202
|
+
error: "Failed to validate coupon"
|
|
203
|
+
};
|
|
204
|
+
}
|
|
205
|
+
}, [
|
|
206
|
+
g?.id,
|
|
207
|
+
b,
|
|
208
|
+
v,
|
|
209
|
+
J,
|
|
210
|
+
ue
|
|
211
|
+
]),
|
|
212
|
+
clearPromoCode: i(() => {
|
|
213
|
+
x(""), C(0), w("PERCENTAGE");
|
|
214
|
+
}, []),
|
|
215
|
+
setUseCredits: E,
|
|
216
|
+
setCreditsToUse: i((e) => {
|
|
217
|
+
let t = Math.min(e, Q, J - X);
|
|
218
|
+
O(Math.max(0, t));
|
|
219
|
+
}, [
|
|
220
|
+
Q,
|
|
221
|
+
J,
|
|
222
|
+
X
|
|
223
|
+
]),
|
|
224
|
+
setSelectedPaymentMethodId: L,
|
|
225
|
+
setSaveCard: se,
|
|
226
|
+
setAutoRenew: ce,
|
|
227
|
+
setAutoRenewPaymentMethodId: V,
|
|
228
|
+
setSelectedSubscriptionId: U,
|
|
229
|
+
initiatePayment: i(async () => {
|
|
230
|
+
if (!g) return {
|
|
231
|
+
success: !1,
|
|
232
|
+
provider: "AUTO",
|
|
233
|
+
subtotal: 0,
|
|
234
|
+
taxAmount: 0,
|
|
235
|
+
taxRate: 0,
|
|
236
|
+
total: 0,
|
|
237
|
+
taxType: "NONE",
|
|
238
|
+
jurisdiction: "UNKNOWN",
|
|
239
|
+
currency: v,
|
|
240
|
+
error: "Please select a billing account"
|
|
241
|
+
};
|
|
242
|
+
if (m.length === 0) return {
|
|
243
|
+
success: !1,
|
|
244
|
+
provider: "AUTO",
|
|
245
|
+
subtotal: 0,
|
|
246
|
+
taxAmount: 0,
|
|
247
|
+
taxRate: 0,
|
|
248
|
+
total: 0,
|
|
249
|
+
taxType: "NONE",
|
|
250
|
+
jurisdiction: "UNKNOWN",
|
|
251
|
+
currency: v,
|
|
252
|
+
error: "No items in checkout"
|
|
253
|
+
};
|
|
254
|
+
try {
|
|
255
|
+
A("processing"), j(null);
|
|
256
|
+
let e = m[0], t = e.type, n = m.find((e) => e.metadata?.billingOrderId)?.metadata?.billingOrderId;
|
|
257
|
+
n && (t = "ORDER");
|
|
258
|
+
let r = J - X, i = _;
|
|
259
|
+
if (i === "AUTO" && (i = v === "INR" ? "RAZORPAY" : "STRIPE"), i === "CREDITS") {
|
|
260
|
+
let e = m.filter((e) => e.type === "ADDON"), t = m.find((e) => e.type === "PLAN"), { data: n } = await G({ variables: { input: {
|
|
261
|
+
billingAccountId: g.id,
|
|
262
|
+
planId: t ? t.metadata?.planId || t.id : void 0,
|
|
263
|
+
addOnIds: e.length > 0 ? e.map((e) => ({
|
|
264
|
+
id: e.metadata?.addonId || e.id,
|
|
265
|
+
quantity: e.quantity
|
|
266
|
+
})) : void 0,
|
|
267
|
+
isAnnual: t?.metadata?.duration === "yearly",
|
|
268
|
+
upgradeFromSubscriptionId: d || void 0,
|
|
269
|
+
downgradeFromSubscriptionId: f || void 0,
|
|
270
|
+
subscriptionId: e.length > 0 ? H : void 0,
|
|
271
|
+
seatCount: t?.metadata?.seatCount
|
|
272
|
+
} } }), i = n?.spendCredits;
|
|
273
|
+
return i?.creditTransactionID ? (A("success"), {
|
|
274
|
+
success: !0,
|
|
275
|
+
provider: "CREDITS",
|
|
276
|
+
subtotal: r,
|
|
277
|
+
taxAmount: 0,
|
|
278
|
+
taxRate: 0,
|
|
279
|
+
total: r,
|
|
280
|
+
taxType: "NONE",
|
|
281
|
+
jurisdiction: "UNKNOWN",
|
|
282
|
+
currency: v,
|
|
283
|
+
orderId: i.creditTransactionID
|
|
284
|
+
}) : (A("error"), j("Failed to process credit payment"), {
|
|
285
|
+
success: !1,
|
|
286
|
+
provider: "CREDITS",
|
|
287
|
+
subtotal: r,
|
|
288
|
+
taxAmount: 0,
|
|
289
|
+
taxRate: 0,
|
|
290
|
+
total: r,
|
|
291
|
+
taxType: "NONE",
|
|
292
|
+
jurisdiction: "UNKNOWN",
|
|
293
|
+
currency: v,
|
|
294
|
+
error: "Failed to process credit payment"
|
|
295
|
+
});
|
|
296
|
+
}
|
|
297
|
+
let a = m.filter((e) => e.type === "ADDON"), o = a.length > 0 ? a.map((e) => e.metadata?.addonId || e.id) : void 0, s = a.length > 0 ? a.map((e) => e.quantity) : void 0, ee = m.find((e) => e.type === "PLAN")?.metadata?.duration === "yearly", c = t === "PLAN" && z && (B || I) || void 0, { data: l } = await W({ variables: { input: {
|
|
298
|
+
billingAccountId: g.id,
|
|
299
|
+
amount: r,
|
|
300
|
+
currency: v,
|
|
301
|
+
purchaseType: t,
|
|
302
|
+
provider: i,
|
|
303
|
+
orderId: n || void 0,
|
|
304
|
+
creditAmount: t === "CREDITS" ? e.quantity : void 0,
|
|
305
|
+
planId: t === "PLAN" ? e.metadata?.planId || e.id : void 0,
|
|
306
|
+
addonId: t === "ADDON" && a.length === 1 && !n ? a[0].metadata?.addonId || a[0].id : void 0,
|
|
307
|
+
quantity: t === "ADDON" && a.length === 1 && !n ? a[0].quantity : void 0,
|
|
308
|
+
addonIds: t === "ADDON" && a.length > 1 && !n ? o : void 0,
|
|
309
|
+
quantities: t === "ADDON" && a.length > 1 && !n ? s : void 0,
|
|
310
|
+
subscriptionId: t === "ADDON" && !n ? H : void 0,
|
|
311
|
+
paymentMethodId: I || void 0,
|
|
312
|
+
saveCard: I ? void 0 : R || z,
|
|
313
|
+
upgradeFromSubscriptionId: d || void 0,
|
|
314
|
+
downgradeFromSubscriptionId: f || void 0,
|
|
315
|
+
isAnnual: ee || void 0,
|
|
316
|
+
promoCode: b || void 0,
|
|
317
|
+
autoRenew: t === "PLAN" && z ? !0 : void 0,
|
|
318
|
+
autoRenewPaymentMethodId: c
|
|
319
|
+
} } }), u = l?.initiatePayment;
|
|
320
|
+
return u?.success ? (A("success"), u) : (A("error"), j(u?.error ?? "Payment initiation failed"), {
|
|
321
|
+
success: !1,
|
|
322
|
+
provider: i,
|
|
323
|
+
subtotal: r,
|
|
324
|
+
taxAmount: 0,
|
|
325
|
+
taxRate: 0,
|
|
326
|
+
total: r,
|
|
327
|
+
taxType: "NONE",
|
|
328
|
+
jurisdiction: "UNKNOWN",
|
|
329
|
+
currency: v,
|
|
330
|
+
error: u?.error ?? "Payment initiation failed"
|
|
331
|
+
});
|
|
332
|
+
} catch (e) {
|
|
333
|
+
let t = e instanceof Error ? e.message : "An error occurred";
|
|
334
|
+
return A("error"), j(t), {
|
|
335
|
+
success: !1,
|
|
336
|
+
provider: "AUTO",
|
|
337
|
+
subtotal: 0,
|
|
338
|
+
taxAmount: 0,
|
|
339
|
+
taxRate: 0,
|
|
340
|
+
total: 0,
|
|
341
|
+
taxType: "NONE",
|
|
342
|
+
jurisdiction: "UNKNOWN",
|
|
343
|
+
currency: v,
|
|
344
|
+
error: t
|
|
345
|
+
};
|
|
346
|
+
}
|
|
347
|
+
}, [
|
|
348
|
+
g,
|
|
349
|
+
m,
|
|
350
|
+
v,
|
|
351
|
+
_,
|
|
352
|
+
J,
|
|
353
|
+
X,
|
|
354
|
+
b,
|
|
355
|
+
I,
|
|
356
|
+
R,
|
|
357
|
+
z,
|
|
358
|
+
B,
|
|
359
|
+
H,
|
|
360
|
+
d,
|
|
361
|
+
f,
|
|
362
|
+
W,
|
|
363
|
+
G
|
|
364
|
+
]),
|
|
365
|
+
reset: i(() => {
|
|
366
|
+
h([]), te(null), ne("AUTO"), y(l), x(""), C(0), w("PERCENTAGE"), E(!1), O(0), A("idle"), j(null), N(0), P(0), F("NONE"), L(null), se(u), ce(!1), V(null), U(p ?? null);
|
|
367
|
+
}, [
|
|
368
|
+
l,
|
|
369
|
+
u,
|
|
370
|
+
p
|
|
371
|
+
])
|
|
372
|
+
};
|
|
373
|
+
}
|
|
374
|
+
//#endregion
|
|
375
|
+
export { c as useCheckout };
|
|
376
|
+
|
|
377
|
+
//# sourceMappingURL=useCheckout.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useCheckout.js","names":[],"sources":["../../../../../src/billing/modules/checkout/hooks/useCheckout.ts"],"sourcesContent":["/**\n * Main checkout hook for managing checkout state and payment processing\n */\n\nimport { useState, useCallback, useMemo, useEffect } from 'react';\nimport {\n useInitiatePaymentCheckoutMutation,\n useSpendCreditsCheckoutMutation,\n useConvertCurrencyLazyQuery,\n useValidateCouponLazyQuery,\n} from '../../../../generated/global-operations';\nimport type {\n CheckoutItem,\n CheckoutBillingAccount,\n PaymentProvider,\n Currency,\n CheckoutState,\n PaymentInitResponse,\n PromoCodeResult,\n PurchaseType,\n} from '../types';\n\n/**\n * Credit conversion rate: How many credits equal 1 USD\n * This should match the backend creditRate.rateUSD (default 0.01 means 100 credits = $1)\n */\nconst CREDITS_PER_USD = 100;\n\ninterface UseCheckoutOptions {\n billingAccountId?: string;\n defaultCurrency?: Currency;\n defaultSaveCard?: boolean;\n upgradeFromSubscriptionId?: string;\n /** For plan downgrades — old sub auto-renewal cancelled, runs to natural expiry */\n downgradeFromSubscriptionId?: string;\n /** For addon purchases - pre-selected subscription ID */\n defaultSubscriptionId?: string;\n}\n\ninterface UseCheckoutResult {\n // State\n items: CheckoutItem[];\n billingAccount: CheckoutBillingAccount | null;\n selectedProvider: PaymentProvider;\n selectedCurrency: Currency;\n promoCode: string;\n promoDiscount: number;\n promoDiscountType: 'PERCENTAGE' | 'FIXED';\n useCredits: boolean;\n creditsToUse: number;\n checkoutState: CheckoutState;\n error: string | null;\n\n // Saved card state\n selectedPaymentMethodId: string | null;\n saveCard: boolean;\n\n // Auto-pay state (for subscription purchases)\n autoRenew: boolean;\n autoRenewPaymentMethodId: string | null;\n\n // Subscription state (for addon purchases)\n selectedSubscriptionId: string | null;\n\n // Computed values\n subtotal: number;\n subtotalUSD: number;\n discountAmount: number;\n taxAmount: number;\n taxRate: number;\n taxType: string;\n total: number;\n totalInSelectedCurrency: number;\n availableCredits: number;\n hasEnoughCredits: boolean;\n canPayWithCredits: boolean;\n isLoading: boolean;\n isProcessing: boolean;\n isCalculatingTax: boolean;\n\n // Currency conversion\n conversionRate: number;\n convertedAmount: number | null;\n\n // Actions\n addItem: (item: CheckoutItem) => void;\n removeItem: (itemId: string) => void;\n updateItemQuantity: (itemId: string, quantity: number) => void;\n updateItemPrice: (itemId: string, price: number, currency?: Currency) => void;\n clearItems: () => void;\n setBillingAccount: (account: CheckoutBillingAccount | null) => void;\n setPaymentProvider: (provider: PaymentProvider) => void;\n setCurrency: (currency: Currency) => void;\n setPromoCode: (code: string) => void;\n validatePromoCode: () => Promise<PromoCodeResult>;\n clearPromoCode: () => void;\n setUseCredits: (use: boolean) => void;\n setCreditsToUse: (amount: number) => void;\n setSelectedPaymentMethodId: (id: string | null) => void;\n setSaveCard: (save: boolean) => void;\n setAutoRenew: (enabled: boolean) => void;\n setAutoRenewPaymentMethodId: (id: string | null) => void;\n setSelectedSubscriptionId: (id: string | null) => void;\n initiatePayment: () => Promise<PaymentInitResponse>;\n reset: () => void;\n}\n\nexport function useCheckout(options: UseCheckoutOptions = {}): UseCheckoutResult {\n const {\n defaultCurrency = 'USD',\n defaultSaveCard = false, // CRITICAL: Never save cards without explicit user consent\n upgradeFromSubscriptionId,\n downgradeFromSubscriptionId,\n defaultSubscriptionId,\n } = options;\n\n // Core state\n const [items, setItems] = useState<CheckoutItem[]>([]);\n const [billingAccount, setBillingAccount] = useState<CheckoutBillingAccount | null>(null);\n const [selectedProvider, setSelectedProvider] = useState<PaymentProvider>('AUTO');\n const [selectedCurrency, setSelectedCurrency] = useState<Currency>(defaultCurrency);\n const [promoCode, setPromoCode] = useState('');\n const [promoDiscount, setPromoDiscount] = useState(0);\n const [promoDiscountType, setPromoDiscountType] = useState<'PERCENTAGE' | 'FIXED'>('PERCENTAGE');\n const [useCredits, setUseCredits] = useState(false);\n const [creditsToUse, setCreditsToUse] = useState(0);\n const [checkoutState, setCheckoutState] = useState<CheckoutState>('idle');\n const [error, setError] = useState<string | null>(null);\n const [taxAmount, setTaxAmount] = useState(0);\n const [taxRate, setTaxRate] = useState(0);\n const [taxType, setTaxType] = useState<string>('NONE');\n\n // Saved card state\n const [selectedPaymentMethodId, setSelectedPaymentMethodId] = useState<string | null>(null);\n const [saveCard, setSaveCard] = useState(defaultSaveCard);\n\n // Auto-pay state (for subscription purchases)\n const [autoRenew, setAutoRenew] = useState(false);\n const [autoRenewPaymentMethodId, setAutoRenewPaymentMethodId] = useState<string | null>(null);\n\n // Subscription state (for addon purchases)\n const [selectedSubscriptionId, setSelectedSubscriptionId] = useState<string | null>(\n defaultSubscriptionId ?? null\n );\n\n // GraphQL mutations and queries\n const [initiatePaymentMutation] = useInitiatePaymentCheckoutMutation();\n const [spendCreditsMutation] = useSpendCreditsCheckoutMutation();\n const [convertCurrency, { data: currencyData, loading: currencyLoading }] =\n useConvertCurrencyLazyQuery();\n const [validateCoupon] = useValidateCouponLazyQuery();\n\n // Computed values\n const subtotal = useMemo(() => {\n return items.reduce((sum, item) => sum + item.price * item.quantity, 0);\n }, [items]);\n\n // USD subtotal — always use priceUSD (base price) for credit calculations.\n // item.price may be in a local currency (INR, EUR, etc.) when currencyPrices is set.\n const subtotalUSD = useMemo(() => {\n return items.reduce((sum, item) => sum + (item.priceUSD ?? item.price) * item.quantity, 0);\n }, [items]);\n\n const discountAmount = useMemo(() => {\n if (!promoDiscount) return 0;\n // promoDiscount now contains the actual discount amount from backend validation\n // (not the percentage value), so use it directly\n return Math.min(promoDiscount, subtotal);\n }, [subtotal, promoDiscount]);\n\n // Total includes tax (calculated via calculateTax query)\n const total = useMemo(() => {\n const afterDiscount = subtotal - discountAmount;\n const withCredits = useCredits ? Math.max(0, afterDiscount - creditsToUse) : afterDiscount;\n return withCredits + taxAmount;\n }, [subtotal, discountAmount, useCredits, creditsToUse, taxAmount]);\n\n const availableCredits = billingAccount?.creditAmount ?? 0;\n\n const hasEnoughCredits = useMemo(() => {\n // Use subtotalUSD so this works correctly for any display currency\n const creditsRequired = subtotalUSD * CREDITS_PER_USD;\n return availableCredits >= creditsRequired;\n }, [availableCredits, subtotalUSD]);\n\n // Can only pay with credits if not buying credits\n const canPayWithCredits = useMemo(() => {\n const hasCreditsPurchase = items.some((item) => item.type === 'CREDITS');\n return !hasCreditsPurchase && availableCredits > 0;\n }, [items, availableCredits]);\n\n // Currency conversion result\n const convertedAmount = currencyData?.convertCurrency?.amount ?? null;\n const conversionRate = currencyData?.convertCurrency?.exchangeRate ?? 1;\n const totalInSelectedCurrency = convertedAmount ?? total;\n\n const isLoading = checkoutState === 'loading' || currencyLoading;\n const isProcessing = checkoutState === 'processing';\n\n // Effect to trigger currency conversion when total or currency changes\n // This ensures the converted amount is always up-to-date\n useEffect(() => {\n // Skip conversion for credit payments (no currency conversion needed)\n if (selectedProvider === 'CREDITS') {\n return;\n }\n\n // Skip if no items yet (cart is still loading)\n if (items.length === 0) {\n return;\n }\n\n // Skip conversion if items already have prices in selected currency\n // (Plans/Addons with multi-currency pricing have currencyPrices stored)\n const allItemsHaveLocalizedPrices = items.every(\n (item) => item.currency === selectedCurrency || item.type === 'CREDITS'\n );\n\n if (allItemsHaveLocalizedPrices) {\n // Items are already priced in the selected currency (from currencyPrices)\n // No conversion needed - subtotal and total are already correct!\n return;\n }\n\n // Only fetch if we have a valid total and non-USD currency\n if (total > 0 && selectedCurrency !== 'USD') {\n // For INR, wait until tax has been calculated (taxAmount > 0 or taxRate is set)\n // This prevents double API calls - one before tax, one after\n if (selectedCurrency === 'INR' && taxAmount === 0 && subtotal > 0) {\n // Tax hasn't been calculated yet, skip this conversion\n // The effect will run again when taxAmount changes\n return;\n }\n\n convertCurrency({\n variables: {\n amount: total,\n toCurrency: selectedCurrency,\n fromCurrency: 'USD',\n },\n });\n }\n }, [total, selectedCurrency, selectedProvider, convertCurrency, taxAmount, subtotal, items]);\n\n // Effect to calculate tax when billing account, subtotal, or currency changes\n // Tax is only applied for INR payments (18% GST)\n useEffect(() => {\n // Only calculate tax if we have a billing account and items\n if (!billingAccount || subtotal <= 0) {\n // Reset tax if no billing account or empty cart\n setTaxAmount(0);\n setTaxRate(0);\n setTaxType('NONE');\n return;\n }\n\n // Skip if paying with credits (no tax on credit payments)\n if (selectedProvider === 'CREDITS') {\n setTaxAmount(0);\n setTaxRate(0);\n setTaxType('NONE');\n return;\n }\n\n // Only apply tax for INR payments\n if (selectedCurrency !== 'INR') {\n setTaxAmount(0);\n setTaxRate(0);\n setTaxType('NONE');\n return;\n }\n\n // For INR: Calculate 18% GST on the USD amount, then we'll convert for display\n const afterDiscount = subtotal - discountAmount;\n const GST_RATE = 0.18;\n const taxInUSD = afterDiscount * GST_RATE;\n\n setTaxAmount(taxInUSD);\n setTaxRate(GST_RATE);\n setTaxType('GST');\n }, [billingAccount, subtotal, discountAmount, selectedCurrency, selectedProvider]);\n\n // Actions\n const addItem = useCallback((item: CheckoutItem) => {\n setItems((prev) => {\n // Plans can only be purchased once - quantity is always 1\n if (item.type === 'PLAN') {\n // Check if any plan already exists in cart\n const existingPlan = prev.find((i) => i.type === 'PLAN');\n if (existingPlan) {\n // Replace existing plan with new one (can only have 1 plan)\n return prev.map((i) => (i.type === 'PLAN' ? { ...item, quantity: 1 } : i));\n }\n // Add new plan with quantity forced to 1\n return [...prev, { ...item, quantity: 1 }];\n }\n\n // For addons and credits, allow quantity increment\n const existing = prev.find((i) => i.id === item.id);\n if (existing) {\n return prev.map((i) =>\n i.id === item.id ? { ...i, quantity: i.quantity + item.quantity } : i\n );\n }\n return [...prev, item];\n });\n }, []);\n\n const removeItem = useCallback((itemId: string) => {\n setItems((prev) => prev.filter((i) => i.id !== itemId));\n }, []);\n\n const updateItemQuantity = useCallback(\n (itemId: string, quantity: number) => {\n if (quantity <= 0) {\n removeItem(itemId);\n return;\n }\n setItems((prev) =>\n prev.map((i) => {\n if (i.id !== itemId) return i;\n // Plans can only have quantity 1\n if (i.type === 'PLAN') {\n return { ...i, quantity: 1 };\n }\n return { ...i, quantity };\n })\n );\n },\n [removeItem]\n );\n\n const updateItemPrice = useCallback((itemId: string, price: number, currency?: Currency) => {\n setItems((prev) =>\n prev.map((i) => {\n if (i.id !== itemId) return i;\n // Update price and optionally currency\n const updates: Partial<CheckoutItem> = { price };\n if (currency) {\n updates.currency = currency;\n }\n return { ...i, ...updates };\n })\n );\n }, []);\n\n const clearItems = useCallback(() => {\n setItems([]);\n }, []);\n\n const handleSetBillingAccount = useCallback((account: CheckoutBillingAccount | null) => {\n setBillingAccount(account);\n // Reset credits usage when billing account changes\n setUseCredits(false);\n setCreditsToUse(0);\n }, []);\n\n const handleSetCurrency = useCallback(\n (currency: Currency) => {\n setSelectedCurrency(currency);\n // Skip conversion if items already have localized prices\n // (Plans/Addons with multi-currency pricing don't need conversion)\n const allItemsHaveLocalizedPrices = items.every(\n (item) => item.currency === currency || item.type === 'CREDITS'\n );\n\n // Only fetch conversion rate if items don't have localized prices\n if (total > 0 && currency !== 'USD' && !allItemsHaveLocalizedPrices) {\n convertCurrency({\n variables: {\n amount: total,\n toCurrency: currency,\n fromCurrency: 'USD',\n },\n });\n }\n },\n [total, convertCurrency, items]\n );\n\n const handleSetPaymentProvider = useCallback(\n (provider: PaymentProvider) => {\n setSelectedProvider(provider);\n // Razorpay only supports INR\n if (provider === 'RAZORPAY' && selectedCurrency !== 'INR') {\n setSelectedCurrency('INR');\n }\n },\n [selectedCurrency]\n );\n\n const validatePromoCode = useCallback(async (): Promise<PromoCodeResult> => {\n if (!promoCode.trim()) {\n return {\n valid: false,\n code: '',\n discountType: 'PERCENTAGE',\n discountValue: 0,\n error: 'Please enter a promo code',\n };\n }\n\n try {\n setCheckoutState('loading');\n\n // Build validation input\n const validationInput = {\n code: promoCode.trim().toUpperCase(),\n userId: billingAccount?.id || 'unknown', // Use billing account ID as user identifier\n amount: subtotal,\n currency: selectedCurrency,\n };\n\n const { data, error: queryError } = await validateCoupon({\n variables: {\n input: validationInput,\n },\n });\n\n if (queryError || !data?.validateCoupon) {\n setPromoDiscount(0);\n setCheckoutState('idle');\n return {\n valid: false,\n code: promoCode,\n discountType: 'PERCENTAGE',\n discountValue: 0,\n error: 'Failed to validate coupon',\n };\n }\n\n const response = data.validateCoupon;\n\n if (!response.valid) {\n setPromoDiscount(0);\n setCheckoutState('idle');\n return {\n valid: false,\n code: promoCode,\n discountType: 'PERCENTAGE',\n discountValue: 0,\n error: response.error || 'Invalid coupon code',\n };\n }\n\n // Extract discount details from coupon\n const coupon = response.coupon;\n if (!coupon) {\n setPromoDiscount(0);\n setCheckoutState('idle');\n return {\n valid: false,\n code: promoCode,\n discountType: 'PERCENTAGE',\n discountValue: 0,\n error: 'Coupon data not found',\n };\n }\n\n // Use the ACTUAL discount amount from validation (includes caps and currency conversion)\n const actualDiscountAmount = response.discountAmount || 0;\n\n const discountType = coupon.type === 'FIXED_AMOUNT' ? 'FIXED' : 'PERCENTAGE';\n setPromoDiscount(actualDiscountAmount); // Use actual discount, not coupon.value\n setPromoDiscountType(discountType);\n setCheckoutState('idle');\n\n return {\n valid: true,\n code: coupon.code,\n discountType,\n discountValue: actualDiscountAmount, // Use actual discount, not coupon.value\n };\n } catch {\n setPromoDiscount(0);\n setCheckoutState('idle');\n return {\n valid: false,\n code: promoCode,\n discountType: 'PERCENTAGE',\n discountValue: 0,\n error: 'Failed to validate coupon',\n };\n }\n }, [billingAccount?.id, promoCode, selectedCurrency, subtotal, validateCoupon]);\n\n const clearPromoCode = useCallback(() => {\n setPromoCode('');\n setPromoDiscount(0);\n setPromoDiscountType('PERCENTAGE');\n }, []);\n\n const handleSetCreditsToUse = useCallback(\n (amount: number) => {\n const maxCredits = Math.min(amount, availableCredits, subtotal - discountAmount);\n setCreditsToUse(Math.max(0, maxCredits));\n },\n [availableCredits, subtotal, discountAmount]\n );\n\n const initiatePayment = useCallback(async (): Promise<PaymentInitResponse> => {\n if (!billingAccount) {\n return {\n success: false,\n provider: 'AUTO',\n subtotal: 0,\n taxAmount: 0,\n taxRate: 0,\n total: 0,\n taxType: 'NONE',\n jurisdiction: 'UNKNOWN',\n currency: selectedCurrency,\n error: 'Please select a billing account',\n };\n }\n\n if (items.length === 0) {\n return {\n success: false,\n provider: 'AUTO',\n subtotal: 0,\n taxAmount: 0,\n taxRate: 0,\n total: 0,\n taxType: 'NONE',\n jurisdiction: 'UNKNOWN',\n currency: selectedCurrency,\n error: 'No items in checkout',\n };\n }\n\n try {\n setCheckoutState('processing');\n setError(null);\n\n // Determine purchase type from first item\n const firstItem = items[0];\n let purchaseType: PurchaseType = firstItem.type;\n\n // Check if this is a store order checkout (detect early)\n const storeOrderItem = items.find((item) => item.metadata?.billingOrderId);\n const billingOrderId = storeOrderItem?.metadata?.billingOrderId as string | undefined;\n\n // For store orders, use 'ORDER' purchase type\n if (billingOrderId) {\n purchaseType = 'ORDER' as PurchaseType;\n }\n\n // Calculate amount to charge\n const chargeAmount = subtotal - discountAmount;\n\n // Determine provider\n let provider = selectedProvider;\n if (provider === 'AUTO') {\n provider = selectedCurrency === 'INR' ? 'RAZORPAY' : 'STRIPE';\n }\n\n // ========================================\n // CREDITS PAYMENT - use spendCredits mutation\n // Supports multiple addons\n // ========================================\n if (provider === 'CREDITS') {\n const addonItems = items.filter((item) => item.type === 'ADDON');\n const planItem = items.find((item) => item.type === 'PLAN');\n\n const { data } = await spendCreditsMutation({\n variables: {\n input: {\n billingAccountId: billingAccount.id,\n planId: planItem ? (planItem.metadata?.planId as string) || planItem.id : undefined,\n // Multiple addons supported via addOnIds array\n addOnIds:\n addonItems.length > 0\n ? addonItems.map((item) => ({\n id: (item.metadata?.addonId as string) || item.id,\n quantity: item.quantity,\n }))\n : undefined,\n isAnnual: planItem?.metadata?.duration === 'yearly',\n // Include upgrade context if changing plans\n upgradeFromSubscriptionId: upgradeFromSubscriptionId || undefined,\n // Include downgrade context if downgrading\n downgradeFromSubscriptionId: downgradeFromSubscriptionId || undefined,\n // For addon purchases - subscription to attach to\n subscriptionId: addonItems.length > 0 ? selectedSubscriptionId : undefined,\n // For PER_SEAT plans - pass seat count for credit calculation + subscription storage\n seatCount: planItem?.metadata?.seatCount as number | undefined,\n },\n },\n });\n\n const response = data?.spendCredits;\n\n if (!response?.creditTransactionID) {\n setCheckoutState('error');\n setError('Failed to process credit payment');\n return {\n success: false,\n provider: 'CREDITS',\n subtotal: chargeAmount,\n taxAmount: 0,\n taxRate: 0,\n total: chargeAmount,\n taxType: 'NONE',\n jurisdiction: 'UNKNOWN',\n currency: selectedCurrency,\n error: 'Failed to process credit payment',\n };\n }\n\n setCheckoutState('success');\n return {\n success: true,\n provider: 'CREDITS',\n subtotal: chargeAmount,\n taxAmount: 0,\n taxRate: 0,\n total: chargeAmount,\n taxType: 'NONE',\n jurisdiction: 'UNKNOWN',\n currency: selectedCurrency,\n // Return transaction ID for success handling\n orderId: response.creditTransactionID,\n };\n }\n\n // ========================================\n // CARD PAYMENT (Stripe/Razorpay) - use initiatePayment\n // Supports single or multiple addons\n // Supports store orders (via orderId parameter)\n // ========================================\n const addonItems = items.filter((item) => item.type === 'ADDON');\n\n // Build addon IDs and quantities for the mutation\n const addonIds =\n addonItems.length > 0\n ? addonItems.map((item) => (item.metadata?.addonId as string) || item.id)\n : undefined;\n const quantities =\n addonItems.length > 0 ? addonItems.map((item) => item.quantity) : undefined;\n\n // Determine if this is an annual plan purchase\n const planItem = items.find((item) => item.type === 'PLAN');\n const isAnnualPlan = planItem?.metadata?.duration === 'yearly';\n\n // Determine auto-renew payment method\n const autoRenewPMId =\n purchaseType === 'PLAN' && autoRenew\n ? autoRenewPaymentMethodId || selectedPaymentMethodId || undefined\n : undefined;\n\n const { data } = await initiatePaymentMutation({\n variables: {\n input: {\n billingAccountId: billingAccount.id,\n amount: chargeAmount, // Note: Backend IGNORES this and calculates from DB\n currency: selectedCurrency,\n purchaseType,\n provider: provider,\n // Store order - use orderId parameter (billing order ID)\n orderId: billingOrderId || undefined,\n creditAmount: purchaseType === 'CREDITS' ? firstItem.quantity : undefined,\n planId:\n purchaseType === 'PLAN'\n ? (firstItem.metadata?.planId as string) || firstItem.id\n : undefined,\n // Single addon (backwards compatible) - skip if store order\n addonId:\n purchaseType === 'ADDON' && addonItems.length === 1 && !billingOrderId\n ? (addonItems[0].metadata?.addonId as string) || addonItems[0].id\n : undefined,\n quantity:\n purchaseType === 'ADDON' && addonItems.length === 1 && !billingOrderId\n ? addonItems[0].quantity\n : undefined,\n // Multiple addons (cart checkout) - skip if store order\n addonIds:\n purchaseType === 'ADDON' && addonItems.length > 1 && !billingOrderId\n ? addonIds\n : undefined,\n quantities:\n purchaseType === 'ADDON' && addonItems.length > 1 && !billingOrderId\n ? quantities\n : undefined,\n // For addon purchases - subscription to attach to (skip for store orders)\n subscriptionId:\n purchaseType === 'ADDON' && !billingOrderId ? selectedSubscriptionId : undefined,\n // Saved card support\n paymentMethodId: selectedPaymentMethodId || undefined,\n // Save card if: user checked save card OR auto-renewal is enabled (which requires a saved card)\n // Only save if not using existing card (selectedPaymentMethodId is null)\n saveCard: !selectedPaymentMethodId ? saveCard || autoRenew : undefined,\n // Include upgrade context if changing plans\n upgradeFromSubscriptionId: upgradeFromSubscriptionId || undefined,\n // Include downgrade context if downgrading\n downgradeFromSubscriptionId: downgradeFromSubscriptionId || undefined,\n // Annual plan flag (for pricing calculation)\n isAnnual: isAnnualPlan || undefined,\n // Promo code (validated and applied on backend)\n promoCode: promoCode || undefined,\n // Auto-renewal (for plan purchases only)\n autoRenew: purchaseType === 'PLAN' && autoRenew ? true : undefined,\n autoRenewPaymentMethodId: autoRenewPMId,\n },\n },\n });\n\n const response = data?.initiatePayment;\n\n if (!response?.success) {\n setCheckoutState('error');\n setError(response?.error ?? 'Payment initiation failed');\n return {\n success: false,\n provider: provider,\n subtotal: chargeAmount,\n taxAmount: 0,\n taxRate: 0,\n total: chargeAmount,\n taxType: 'NONE',\n jurisdiction: 'UNKNOWN',\n currency: selectedCurrency,\n error: response?.error ?? 'Payment initiation failed',\n };\n }\n\n // Note: Tax is already calculated upfront in the effect, don't overwrite\n // The response tax is in converted currency which would mess up display\n setCheckoutState('success');\n\n return response;\n } catch (err) {\n const errorMessage = err instanceof Error ? err.message : 'An error occurred';\n setCheckoutState('error');\n setError(errorMessage);\n return {\n success: false,\n provider: 'AUTO',\n subtotal: 0,\n taxAmount: 0,\n taxRate: 0,\n total: 0,\n taxType: 'NONE',\n jurisdiction: 'UNKNOWN',\n currency: selectedCurrency,\n error: errorMessage,\n };\n }\n }, [\n billingAccount,\n items,\n selectedCurrency,\n selectedProvider,\n subtotal,\n discountAmount,\n promoCode,\n selectedPaymentMethodId,\n saveCard,\n autoRenew,\n autoRenewPaymentMethodId,\n selectedSubscriptionId,\n upgradeFromSubscriptionId,\n downgradeFromSubscriptionId,\n initiatePaymentMutation,\n spendCreditsMutation,\n ]);\n\n const reset = useCallback(() => {\n setItems([]);\n setBillingAccount(null);\n setSelectedProvider('AUTO');\n setSelectedCurrency(defaultCurrency);\n setPromoCode('');\n setPromoDiscount(0);\n setPromoDiscountType('PERCENTAGE');\n setUseCredits(false);\n setCreditsToUse(0);\n setCheckoutState('idle');\n setError(null);\n setTaxAmount(0);\n setTaxRate(0);\n setTaxType('NONE');\n setSelectedPaymentMethodId(null);\n setSaveCard(defaultSaveCard);\n setAutoRenew(false);\n setAutoRenewPaymentMethodId(null);\n setSelectedSubscriptionId(defaultSubscriptionId ?? null);\n }, [defaultCurrency, defaultSaveCard, defaultSubscriptionId]);\n\n return {\n // State\n items,\n billingAccount,\n selectedProvider,\n selectedCurrency,\n promoCode,\n promoDiscount,\n promoDiscountType,\n useCredits,\n creditsToUse,\n checkoutState,\n error,\n\n // Saved card state\n selectedPaymentMethodId,\n saveCard,\n\n // Auto-pay state\n autoRenew,\n autoRenewPaymentMethodId,\n\n // Subscription state (for addon purchases)\n selectedSubscriptionId,\n\n // Computed\n subtotal,\n subtotalUSD,\n discountAmount,\n taxAmount,\n taxRate,\n taxType,\n total,\n totalInSelectedCurrency,\n availableCredits,\n hasEnoughCredits,\n canPayWithCredits,\n isLoading,\n isProcessing,\n isCalculatingTax: false, // Tax is calculated synchronously now\n conversionRate,\n convertedAmount,\n\n // Actions\n addItem,\n removeItem,\n updateItemQuantity,\n updateItemPrice,\n clearItems,\n setBillingAccount: handleSetBillingAccount,\n setPaymentProvider: handleSetPaymentProvider,\n setCurrency: handleSetCurrency,\n setPromoCode,\n validatePromoCode,\n clearPromoCode,\n setUseCredits,\n setCreditsToUse: handleSetCreditsToUse,\n setSelectedPaymentMethodId,\n setSaveCard,\n setAutoRenew,\n setAutoRenewPaymentMethodId,\n setSelectedSubscriptionId,\n initiatePayment,\n reset,\n };\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { Product, Transaction } from '@capgo/native-purchases';
|
|
2
|
+
import { CheckoutState, PurchaseType } from '../types';
|
|
3
|
+
|
|
4
|
+
export type { Product, Transaction };
|
|
5
|
+
interface UseNativeCheckoutOptions {
|
|
6
|
+
billingAccountId?: string;
|
|
7
|
+
purchaseType?: PurchaseType;
|
|
8
|
+
/** Store product identifier — passed to getProducts to load the specific product. */
|
|
9
|
+
productId?: string;
|
|
10
|
+
}
|
|
11
|
+
interface UseNativeCheckoutResult {
|
|
12
|
+
isAvailable: boolean;
|
|
13
|
+
products: Product[];
|
|
14
|
+
checkoutState: CheckoutState;
|
|
15
|
+
error: string | null;
|
|
16
|
+
isLoading: boolean;
|
|
17
|
+
loadProducts: (productIdentifiers?: string[]) => Promise<void>;
|
|
18
|
+
purchaseProduct: (product: Product) => Promise<{
|
|
19
|
+
success: boolean;
|
|
20
|
+
}>;
|
|
21
|
+
restorePurchases: () => Promise<{
|
|
22
|
+
success: boolean;
|
|
23
|
+
}>;
|
|
24
|
+
}
|
|
25
|
+
export declare function useNativeCheckout({ billingAccountId, purchaseType, productId, }?: UseNativeCheckoutOptions): UseNativeCheckoutResult;
|
|
26
|
+
//# sourceMappingURL=useNativeCheckout.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useNativeCheckout.d.ts","sourceRoot":"","sources":["../../../../../src/billing/modules/checkout/hooks/useNativeCheckout.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAWH,OAAO,KAAK,EAAE,OAAO,EAAE,WAAW,EAAiB,MAAM,yBAAyB,CAAC;AACnF,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAG5D,YAAY,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC;AAErC,UAAU,wBAAwB;IAChC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,qFAAqF;IACrF,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,UAAU,uBAAuB;IAC/B,WAAW,EAAE,OAAO,CAAC;IACrB,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,aAAa,EAAE,aAAa,CAAC;IAC7B,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,SAAS,EAAE,OAAO,CAAC;IACnB,YAAY,EAAE,CAAC,kBAAkB,CAAC,EAAE,MAAM,EAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/D,eAAe,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;IACrE,gBAAgB,EAAE,MAAM,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;CACvD;AAED,wBAAgB,iBAAiB,CAAC,EAChC,gBAAgB,EAChB,YAAY,EACZ,SAAS,GACV,GAAE,wBAA6B,GAAG,uBAAuB,CA+HzD"}
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
import { useBilling as e } from "../../../providers/BillingProvider.js";
|
|
2
|
+
import { Capacitor as t } from "../../../../node_modules/@capacitor/core/dist/index.js";
|
|
3
|
+
import { acknowledgeNativePurchase as n, getNativeProducts as r, isNativeIAPAvailable as i, purchaseNativeProduct as a, restoreNativePurchases as o } from "../../../lib/native-purchases.js";
|
|
4
|
+
import { useCallback as s, useState as c } from "react";
|
|
5
|
+
//#region src/billing/modules/checkout/hooks/useNativeCheckout.ts
|
|
6
|
+
function l({ billingAccountId: l, purchaseType: u, productId: d } = {}) {
|
|
7
|
+
let { apiGatewayUrl: f, authToken: p } = e(), [m, h] = c([]), [g, _] = c("idle"), [v, y] = c(null), [b, x] = c(!1), S = s(async (e) => {
|
|
8
|
+
if (!i()) return;
|
|
9
|
+
let t = e ?? (d ? [d] : []);
|
|
10
|
+
if (t.length !== 0) {
|
|
11
|
+
x(!0), y(null);
|
|
12
|
+
try {
|
|
13
|
+
h(await r(t));
|
|
14
|
+
} catch (e) {
|
|
15
|
+
y(e instanceof Error ? e.message : "Failed to load products");
|
|
16
|
+
} finally {
|
|
17
|
+
x(!1);
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
}, [d]), C = s(async (e) => {
|
|
21
|
+
if (!l) return y("No billing account selected"), { success: !1 };
|
|
22
|
+
_("processing"), y(null);
|
|
23
|
+
let r;
|
|
24
|
+
try {
|
|
25
|
+
let i = u === "CREDITS", o = crypto.randomUUID();
|
|
26
|
+
r = await a(e.identifier, {
|
|
27
|
+
autoAcknowledgePurchases: !1,
|
|
28
|
+
isConsumable: i,
|
|
29
|
+
planIdentifier: i ? void 0 : e.planIdentifier ?? void 0,
|
|
30
|
+
appAccountToken: o
|
|
31
|
+
});
|
|
32
|
+
let s = t.getPlatform(), c = await fetch(`${f}/rest/billing/iap/validate`, {
|
|
33
|
+
method: "POST",
|
|
34
|
+
headers: {
|
|
35
|
+
"Content-Type": "application/json",
|
|
36
|
+
...p ? { Authorization: `Bearer ${p}` } : {}
|
|
37
|
+
},
|
|
38
|
+
body: JSON.stringify({
|
|
39
|
+
platform: s,
|
|
40
|
+
transactionId: r.transactionId,
|
|
41
|
+
productIdentifier: r.productIdentifier,
|
|
42
|
+
receipt: r.receipt,
|
|
43
|
+
jwsRepresentation: r.jwsRepresentation,
|
|
44
|
+
purchaseToken: r.purchaseToken,
|
|
45
|
+
appAccountToken: o,
|
|
46
|
+
billingAccountId: l,
|
|
47
|
+
purchaseType: u
|
|
48
|
+
})
|
|
49
|
+
});
|
|
50
|
+
if (!c.ok) {
|
|
51
|
+
let e = await c.json().catch(() => ({}));
|
|
52
|
+
throw Error(e.message ?? `Validation failed (${c.status})`);
|
|
53
|
+
}
|
|
54
|
+
return await n(r.purchaseToken ?? r.transactionId), _("success"), { success: !0 };
|
|
55
|
+
} catch (e) {
|
|
56
|
+
let t = e instanceof Error ? e.message : "Purchase failed";
|
|
57
|
+
return t.toLowerCase().includes("cancel") || t.toLowerCase().includes("dismiss") || t.toLowerCase().includes("abort") ? _("idle") : (y(t), _("error")), { success: !1 };
|
|
58
|
+
}
|
|
59
|
+
}, [
|
|
60
|
+
l,
|
|
61
|
+
f,
|
|
62
|
+
p,
|
|
63
|
+
u
|
|
64
|
+
]), w = s(async () => {
|
|
65
|
+
x(!0), y(null);
|
|
66
|
+
try {
|
|
67
|
+
return await o(), { success: !0 };
|
|
68
|
+
} catch (e) {
|
|
69
|
+
return y(e instanceof Error ? e.message : "Restore failed"), { success: !1 };
|
|
70
|
+
} finally {
|
|
71
|
+
x(!1);
|
|
72
|
+
}
|
|
73
|
+
}, []);
|
|
74
|
+
return {
|
|
75
|
+
isAvailable: i(),
|
|
76
|
+
products: m,
|
|
77
|
+
checkoutState: g,
|
|
78
|
+
error: v,
|
|
79
|
+
isLoading: b,
|
|
80
|
+
loadProducts: S,
|
|
81
|
+
purchaseProduct: C,
|
|
82
|
+
restorePurchases: w
|
|
83
|
+
};
|
|
84
|
+
}
|
|
85
|
+
//#endregion
|
|
86
|
+
export { l as useNativeCheckout };
|
|
87
|
+
|
|
88
|
+
//# sourceMappingURL=useNativeCheckout.js.map
|