@bunnyapp/components 1.0.0 → 1.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/index.js +1279 -967
- package/dist/cjs/playground/main.d.ts +1 -0
- package/dist/cjs/{types/src → src}/components/BunnyProvider.d.ts +5 -3
- package/dist/cjs/src/components/Card.d.ts +7 -0
- package/dist/cjs/src/components/Checkout/InvoiceCheckout.d.ts +27 -0
- package/dist/cjs/src/components/Footer.d.ts +4 -0
- package/dist/cjs/src/components/Icons/ArrowDownToLine.d.ts +5 -0
- package/dist/{esm/types → cjs}/src/components/PaymentForm/PaymentMethod/PaymentMethod.d.ts +1 -0
- package/dist/cjs/{types/src → src}/components/PaymentForm/PaymentOption.d.ts +1 -1
- package/dist/cjs/src/components/Signup/PaymentForms.d.ts +18 -0
- package/dist/cjs/src/components/Signup/PaymentSuccess.d.ts +7 -0
- package/dist/cjs/src/components/Signup/PriceListDisplay.d.ts +6 -0
- package/dist/cjs/src/components/Signup/Signup.d.ts +5 -0
- package/dist/cjs/src/components/Signup/Signup.stories.d.ts +8 -0
- package/dist/cjs/src/components/Signup/index.d.ts +1 -0
- package/dist/cjs/{types/src → src}/components/Subscriptions/Subscriptions.d.ts +1 -1
- package/dist/cjs/{types/src → src}/components/Transactions/Transactions.d.ts +4 -3
- package/dist/{esm/types → cjs}/src/components/Transactions/TransactionsListContext.d.ts +1 -0
- package/dist/cjs/{types/src → src}/components/index.d.ts +1 -0
- package/dist/cjs/src/contexts/PaymentContext.d.ts +6 -0
- package/dist/cjs/src/graphql/mutations/accountSignup.d.ts +12 -0
- package/dist/cjs/src/graphql/mutations/portalSessionCreate.d.ts +8 -0
- package/dist/cjs/src/graphql/mutations/quoteAccountSignup.d.ts +14 -0
- package/dist/{esm/types → cjs}/src/graphql/mutations/quoteCompose.d.ts +5 -3
- package/dist/cjs/src/graphql/mutations/quoteCreate.d.ts +9 -0
- package/dist/cjs/src/graphql/queries/getAccount.d.ts +7 -0
- package/dist/cjs/src/graphql/queries/getFormattedQuote.d.ts +7 -0
- package/dist/cjs/src/graphql/queries/getPriceList.d.ts +7 -0
- package/dist/cjs/src/graphql/queries/getSubscription.d.ts +12 -0
- package/dist/cjs/{types/src → src}/mocks/handlers.d.ts +1 -1
- package/dist/esm/index.js +1280 -970
- package/dist/esm/playground/main.d.ts +1 -0
- package/dist/esm/{types/src → src}/components/BunnyProvider.d.ts +5 -3
- package/dist/esm/src/components/Card.d.ts +7 -0
- package/dist/esm/src/components/Checkout/InvoiceCheckout.d.ts +27 -0
- package/dist/esm/src/components/Footer.d.ts +4 -0
- package/dist/esm/src/components/Icons/ArrowDownToLine.d.ts +5 -0
- package/dist/{cjs/types → esm}/src/components/PaymentForm/PaymentMethod/PaymentMethod.d.ts +1 -0
- package/dist/esm/{types/src → src}/components/PaymentForm/PaymentOption.d.ts +1 -1
- package/dist/esm/src/components/Signup/PaymentForms.d.ts +18 -0
- package/dist/esm/src/components/Signup/PaymentSuccess.d.ts +7 -0
- package/dist/esm/src/components/Signup/PriceListDisplay.d.ts +6 -0
- package/dist/esm/src/components/Signup/Signup.d.ts +5 -0
- package/dist/esm/src/components/Signup/Signup.stories.d.ts +8 -0
- package/dist/esm/src/components/Signup/index.d.ts +1 -0
- package/dist/esm/{types/src → src}/components/Subscriptions/Subscriptions.d.ts +1 -1
- package/dist/esm/{types/src → src}/components/Transactions/Transactions.d.ts +4 -3
- package/dist/{cjs/types → esm}/src/components/Transactions/TransactionsListContext.d.ts +1 -0
- package/dist/esm/{types/src → src}/components/index.d.ts +1 -0
- package/dist/esm/src/contexts/PaymentContext.d.ts +6 -0
- package/dist/esm/src/graphql/mutations/accountSignup.d.ts +12 -0
- package/dist/esm/src/graphql/mutations/portalSessionCreate.d.ts +8 -0
- package/dist/esm/src/graphql/mutations/quoteAccountSignup.d.ts +14 -0
- package/dist/{cjs/types → esm}/src/graphql/mutations/quoteCompose.d.ts +5 -3
- package/dist/esm/src/graphql/mutations/quoteCreate.d.ts +9 -0
- package/dist/esm/src/graphql/queries/getAccount.d.ts +7 -0
- package/dist/esm/src/graphql/queries/getFormattedQuote.d.ts +7 -0
- package/dist/esm/src/graphql/queries/getPriceList.d.ts +7 -0
- package/dist/esm/src/graphql/queries/getSubscription.d.ts +12 -0
- package/dist/esm/{types/src → src}/mocks/handlers.d.ts +1 -1
- package/dist/index.d.ts +14 -9
- package/package.json +16 -10
- package/dist/cjs/types/playground/main.d.ts +0 -1
- package/dist/cjs/types/src/components/Card.d.ts +0 -5
- package/dist/cjs/types/src/components/Checkout/InvoiceCheckout.d.ts +0 -7
- package/dist/cjs/types/src/components/Footer.d.ts +0 -2
- package/dist/cjs/types/src/components/Quote/QuoteContext.d.ts +0 -5
- package/dist/cjs/types/src/graphql/queries/getFormattedQuote.d.ts +0 -3
- package/dist/esm/types/playground/main.d.ts +0 -1
- package/dist/esm/types/src/components/Card.d.ts +0 -5
- package/dist/esm/types/src/components/Checkout/InvoiceCheckout.d.ts +0 -7
- package/dist/esm/types/src/components/Footer.d.ts +0 -2
- package/dist/esm/types/src/components/Quote/QuoteContext.d.ts +0 -5
- package/dist/esm/types/src/graphql/queries/getFormattedQuote.d.ts +0 -3
- /package/dist/cjs/{types/src → src}/atoms/pageContentRefAtom.d.ts +0 -0
- /package/dist/cjs/{types/src → src}/atoms/planPickerQuoteDataAtom.d.ts +0 -0
- /package/dist/cjs/{types/src → src}/atoms/updatingChargeQuantityIdAtom.d.ts +0 -0
- /package/dist/cjs/{types/src → src}/components/Checkout/Checkout.d.ts +0 -0
- /package/dist/cjs/{types/src → src}/components/Checkout/CouponComponent.d.ts +0 -0
- /package/dist/cjs/{types/src → src}/components/Checkout/QuoteCheckout.d.ts +0 -0
- /package/dist/cjs/{types/src → src}/components/Checkout/checkoutUtils.d.ts +0 -0
- /package/dist/cjs/{types/src → src}/components/Checkout/index.d.ts +0 -0
- /package/dist/cjs/{types/src → src}/components/DrawerHeader.d.ts +0 -0
- /package/dist/cjs/{types/src → src}/components/Error.d.ts +0 -0
- /package/dist/cjs/{types/src → src}/components/FeatureUsageGraph.d.ts +0 -0
- /package/dist/cjs/{types/src → src}/components/HeaderModalWrapper.d.ts +0 -0
- /package/dist/cjs/{types/src → src}/components/Icons/BunnyFooterIcon.d.ts +0 -0
- /package/dist/cjs/{types/src → src}/components/Icons/CardIcon.d.ts +0 -0
- /package/dist/cjs/{types/src → src}/components/Invoice/Invoice.d.ts +0 -0
- /package/dist/cjs/{types/src → src}/components/Invoice/Invoice.stories.d.ts +0 -0
- /package/dist/cjs/{types/src → src}/components/Invoice/InvoiceQuoteView.d.ts +0 -0
- /package/dist/cjs/{types/src → src}/components/Invoice/index.d.ts +0 -0
- /package/dist/cjs/{types/src → src}/components/LegacyInvoicePDF.d.ts +0 -0
- /package/dist/cjs/{types/src → src}/components/PageContent.d.ts +0 -0
- /package/dist/cjs/{types/src → src}/components/PageHeaderWithActions.d.ts +0 -0
- /package/dist/cjs/{types/src → src}/components/PageWrapper.d.ts +0 -0
- /package/dist/cjs/{types/src → src}/components/PandadocPollingModal.d.ts +0 -0
- /package/dist/cjs/{types/src → src}/components/PaymentForm/CheckoutFooter.d.ts +0 -0
- /package/dist/cjs/{types/src → src}/components/PaymentForm/DemoPay/DemoPayCardCvc.d.ts +0 -0
- /package/dist/cjs/{types/src → src}/components/PaymentForm/DemoPay/DemoPayCardNumber.d.ts +0 -0
- /package/dist/cjs/{types/src → src}/components/PaymentForm/DemoPay/DemoPayExpiry.d.ts +0 -0
- /package/dist/cjs/{types/src → src}/components/PaymentForm/DemoPay/DemoPayForm.d.ts +0 -0
- /package/dist/cjs/{types/src → src}/components/PaymentForm/DemoPay/demoPayUtils.d.ts +0 -0
- /package/dist/cjs/{types/src → src}/components/PaymentForm/DemoPay/index.d.ts +0 -0
- /package/dist/cjs/{types/src → src}/components/PaymentForm/Finix/FinixCardForm.d.ts +0 -0
- /package/dist/cjs/{types/src → src}/components/PaymentForm/Finix/index.d.ts +0 -0
- /package/dist/cjs/{types/src → src}/components/PaymentForm/FinixAch.d.ts +0 -0
- /package/dist/cjs/{types/src → src}/components/PaymentForm/PaymentForm.d.ts +0 -0
- /package/dist/cjs/{types/src → src}/components/PaymentForm/PaymentFormTypes.d.ts +0 -0
- /package/dist/cjs/{types/src → src}/components/PaymentForm/PaymentMethod/CreditCard/CreditCard.d.ts +0 -0
- /package/dist/cjs/{types/src → src}/components/PaymentForm/PaymentMethod/CreditCard/LargCardIcon.d.ts +0 -0
- /package/dist/cjs/{types/src → src}/components/PaymentForm/PaymentMethod/CreditCard/PlusIcon.d.ts +0 -0
- /package/dist/cjs/{types/src → src}/components/PaymentForm/PaymentMethod/PaymentMethodContext.d.ts +0 -0
- /package/dist/cjs/{types/src → src}/components/PaymentForm/PaymentMethod/index.d.ts +0 -0
- /package/dist/cjs/{types/src → src}/components/PaymentForm/PaymentMethodForm.d.ts +0 -0
- /package/dist/cjs/{types/src → src}/components/PaymentForm/PaymentMethodSelector.d.ts +0 -0
- /package/dist/cjs/{types/src → src}/components/PaymentForm/StoredPaymentMethod/StoredPaymentMethodForm.d.ts +0 -0
- /package/dist/cjs/{types/src → src}/components/PaymentForm/Stripe/CheckoutForm.d.ts +0 -0
- /package/dist/cjs/{types/src → src}/components/PaymentForm/Stripe/PaymentMethodForm.d.ts +0 -0
- /package/dist/cjs/{types/src → src}/components/PaymentForm/Stripe/StripeForm.d.ts +0 -0
- /package/dist/cjs/{types/src → src}/components/PaymentForm/Stripe/index.d.ts +0 -0
- /package/dist/cjs/{types/src → src}/components/PaymentForm/Stripe/stripeUtils.d.ts +0 -0
- /package/dist/cjs/{types/src → src}/components/PaymentForm/index.d.ts +0 -0
- /package/dist/cjs/{types/src → src}/components/PaymentForm/paymentUtils.d.ts +0 -0
- /package/dist/cjs/{types/src → src}/components/Quote/AcceptQuoteModal.d.ts +0 -0
- /package/dist/cjs/{types/src → src}/components/Quote/DocumentNameEnum.d.ts +0 -0
- /package/dist/cjs/{types/src → src}/components/Quote/Quote.d.ts +0 -0
- /package/dist/cjs/{types/src → src}/components/Quote/Quote.stories.d.ts +0 -0
- /package/dist/cjs/{types/src → src}/components/Quote/StyledModal.d.ts +0 -0
- /package/dist/cjs/{types/src → src}/components/Quote/index.d.ts +0 -0
- /package/dist/cjs/{types/src → src}/components/StateTag.d.ts +0 -0
- /package/dist/cjs/{types/src → src}/components/Subscriptions/index.d.ts +0 -0
- /package/dist/cjs/{types/src → src}/components/Subscriptions/subscriptionsList/ChangeQuantitiesButton.d.ts +0 -0
- /package/dist/cjs/{types/src → src}/components/Subscriptions/subscriptionsList/HideExpiredToggle.d.ts +0 -0
- /package/dist/cjs/{types/src → src}/components/Subscriptions/subscriptionsList/SubscriptionCardActions.d.ts +0 -0
- /package/dist/cjs/{types/src → src}/components/Subscriptions/subscriptionsList/SubscriptionCardHeader.d.ts +0 -0
- /package/dist/cjs/{types/src → src}/components/Subscriptions/subscriptionsList/SubscriptionChargeTotal.d.ts +0 -0
- /package/dist/cjs/{types/src → src}/components/Subscriptions/subscriptionsList/SubscriptionChargeUnitPrice.d.ts +0 -0
- /package/dist/cjs/{types/src → src}/components/Subscriptions/subscriptionsList/SubscriptionsList.d.ts +0 -0
- /package/dist/cjs/{types/src → src}/components/Subscriptions/subscriptionsList/SubscriptionsNavigation.d.ts +0 -0
- /package/dist/cjs/{types/src → src}/components/Subscriptions/subscriptionsList/subscriptionCardDesktop/SubscriptionCardColumnHeaders.d.ts +0 -0
- /package/dist/cjs/{types/src → src}/components/Subscriptions/subscriptionsList/subscriptionCardDesktop/SubscriptionCardDesktop.d.ts +0 -0
- /package/dist/cjs/{types/src → src}/components/Subscriptions/subscriptionsList/subscriptionCardDesktop/SubscriptionsCardCell.d.ts +0 -0
- /package/dist/cjs/{types/src → src}/components/Subscriptions/subscriptionsList/subscriptionCardMobile/SubscriptionCardCellMobile.d.ts +0 -0
- /package/dist/cjs/{types/src → src}/components/Subscriptions/subscriptionsList/subscriptionCardMobile/SubscriptionCardMobile.d.ts +0 -0
- /package/dist/cjs/{types/src → src}/components/Subscriptions/subscriptionsList/subscriptionUtils.d.ts +0 -0
- /package/dist/cjs/{types/src → src}/components/TaxationForm.d.ts +0 -0
- /package/dist/cjs/{types/src → src}/components/Transactions/DocumentNameEnum.d.ts +0 -0
- /package/dist/cjs/{types/src → src}/components/Transactions/Transactions.stories.d.ts +0 -0
- /package/dist/cjs/{types/src → src}/components/Transactions/index.d.ts +0 -0
- /package/dist/cjs/{types/src → src}/components/Transactions/transactionsList/TransactionDate.d.ts +0 -0
- /package/dist/cjs/{types/src → src}/components/Transactions/transactionsList/TransactionDownload.d.ts +0 -0
- /package/dist/cjs/{types/src → src}/components/Transactions/transactionsList/TransactionGridCell.d.ts +0 -0
- /package/dist/cjs/{types/src → src}/components/Transactions/transactionsList/TransactionTitle.d.ts +0 -0
- /package/dist/cjs/{types/src → src}/components/Transactions/transactionsList/TransactionsEmptyState.d.ts +0 -0
- /package/dist/cjs/{types/src → src}/components/Transactions/transactionsList/TransactionsListDesktop.d.ts +0 -0
- /package/dist/cjs/{types/src → src}/components/Transactions/transactionsList/TransactionsListMobile.d.ts +0 -0
- /package/dist/cjs/{types/src → src}/consts/paymentConsts.d.ts +0 -0
- /package/dist/cjs/{types/src → src}/contexts/BrandContext.d.ts +0 -0
- /package/dist/cjs/{types/src → src}/contexts/NavigationContext.d.ts +0 -0
- /package/dist/cjs/{types/src → src}/enums/SubscriptionState.d.ts +0 -0
- /package/dist/cjs/{types/src → src}/features/quantityChangeDrawer/QuantityChangeGridRow.d.ts +0 -0
- /package/dist/cjs/{types/src → src}/features/quantityChangeDrawer/QuantityChangeGridTitle.d.ts +0 -0
- /package/dist/cjs/{types/src → src}/features/quantityChangeDrawer/QuantityInput.d.ts +0 -0
- /package/dist/cjs/{types/src → src}/features/quantityChangeDrawer/QuoteChangeSummarySection.d.ts +0 -0
- /package/dist/cjs/{types/src → src}/features/quantityChangeDrawer/quantityChangeDrawerDesktop/QuantityChangeDrawerDesktop.d.ts +0 -0
- /package/dist/cjs/{types/src → src}/graphql/QuoteRequests.d.ts +0 -0
- /package/dist/cjs/{types/src → src}/graphql/SubscriptionRequests.d.ts +0 -0
- /package/dist/cjs/{types/src → src}/graphql/mutations/accountUpdate.d.ts +0 -0
- /package/dist/cjs/{types/src → src}/graphql/mutations/checkout.d.ts +0 -0
- /package/dist/cjs/{types/src → src}/graphql/mutations/quoteAddCoupon.d.ts +0 -0
- /package/dist/cjs/{types/src → src}/graphql/mutations/quoteRecalculateTaxes.d.ts +0 -0
- /package/dist/cjs/{types/src → src}/graphql/mutations/quoteSubscriptionReinstate.d.ts +0 -0
- /package/dist/cjs/{types/src → src}/graphql/queries/getBranding.d.ts +0 -0
- /package/dist/cjs/{types/src → src}/graphql/queries/getCurrentUserData.d.ts +0 -0
- /package/dist/cjs/{types/src → src}/graphql/queries/getFeatureUsage.d.ts +0 -0
- /package/dist/cjs/{types/src → src}/graphql/queries/getFormattedInvoice.d.ts +0 -0
- /package/dist/cjs/{types/src → src}/graphql/queries/getInvoice.d.ts +0 -0
- /package/dist/cjs/{types/src → src}/graphql/queries/getPlanChangeOptions.d.ts +0 -0
- /package/dist/cjs/{types/src → src}/graphql/queries/getQuote.d.ts +0 -0
- /package/dist/cjs/{types/src → src}/graphql/queries/getSubscriptions.d.ts +0 -0
- /package/dist/cjs/{types/src → src}/graphql/queries/getTransactions.d.ts +0 -0
- /package/dist/cjs/{types/src → src}/hooks/index.d.ts +0 -0
- /package/dist/cjs/{types/src → src}/hooks/quotes/useSendAcceptQuote.d.ts +0 -0
- /package/dist/cjs/{types/src → src}/hooks/quotes/useSigningComplete.d.ts +0 -0
- /package/dist/cjs/{types/src → src}/hooks/subscriptions/useSubscriptions.d.ts +0 -0
- /package/dist/cjs/{types/src → src}/hooks/useCurrentUserData.d.ts +0 -0
- /package/dist/cjs/{types/src → src}/hooks/useFocusFirstInput.d.ts +0 -0
- /package/dist/cjs/{types/src → src}/hooks/useHasTaxPlugin.d.ts +0 -0
- /package/dist/cjs/{types/src → src}/hooks/useIsExpired.d.ts +0 -0
- /package/dist/cjs/{types/src → src}/hooks/useIsMobile.d.ts +0 -0
- /package/dist/cjs/{types/src → src}/hooks/usePaymentMethod.d.ts +0 -0
- /package/dist/cjs/{types/src → src}/hooks/useSigningPlugins.d.ts +0 -0
- /package/dist/cjs/{types/src → src}/index.d.ts +0 -0
- /package/dist/cjs/{types/src → src}/mocks/browser.d.ts +0 -0
- /package/dist/cjs/{types/src → src}/stories/Button.d.ts +0 -0
- /package/dist/cjs/{types/src → src}/stories/Button.stories.d.ts +0 -0
- /package/dist/cjs/{types/src → src}/stories/Header.d.ts +0 -0
- /package/dist/cjs/{types/src → src}/stories/Header.stories.d.ts +0 -0
- /package/dist/cjs/{types/src → src}/stories/Page.d.ts +0 -0
- /package/dist/cjs/{types/src → src}/stories/Page.stories.d.ts +0 -0
- /package/dist/cjs/{types/src → src}/utils.d.ts +0 -0
- /package/dist/cjs/{types/vite.config.d.ts → vite.config.d.ts} +0 -0
- /package/dist/esm/{types/src → src}/atoms/pageContentRefAtom.d.ts +0 -0
- /package/dist/esm/{types/src → src}/atoms/planPickerQuoteDataAtom.d.ts +0 -0
- /package/dist/esm/{types/src → src}/atoms/updatingChargeQuantityIdAtom.d.ts +0 -0
- /package/dist/esm/{types/src → src}/components/Checkout/Checkout.d.ts +0 -0
- /package/dist/esm/{types/src → src}/components/Checkout/CouponComponent.d.ts +0 -0
- /package/dist/esm/{types/src → src}/components/Checkout/QuoteCheckout.d.ts +0 -0
- /package/dist/esm/{types/src → src}/components/Checkout/checkoutUtils.d.ts +0 -0
- /package/dist/esm/{types/src → src}/components/Checkout/index.d.ts +0 -0
- /package/dist/esm/{types/src → src}/components/DrawerHeader.d.ts +0 -0
- /package/dist/esm/{types/src → src}/components/Error.d.ts +0 -0
- /package/dist/esm/{types/src → src}/components/FeatureUsageGraph.d.ts +0 -0
- /package/dist/esm/{types/src → src}/components/HeaderModalWrapper.d.ts +0 -0
- /package/dist/esm/{types/src → src}/components/Icons/BunnyFooterIcon.d.ts +0 -0
- /package/dist/esm/{types/src → src}/components/Icons/CardIcon.d.ts +0 -0
- /package/dist/esm/{types/src → src}/components/Invoice/Invoice.d.ts +0 -0
- /package/dist/esm/{types/src → src}/components/Invoice/Invoice.stories.d.ts +0 -0
- /package/dist/esm/{types/src → src}/components/Invoice/InvoiceQuoteView.d.ts +0 -0
- /package/dist/esm/{types/src → src}/components/Invoice/index.d.ts +0 -0
- /package/dist/esm/{types/src → src}/components/LegacyInvoicePDF.d.ts +0 -0
- /package/dist/esm/{types/src → src}/components/PageContent.d.ts +0 -0
- /package/dist/esm/{types/src → src}/components/PageHeaderWithActions.d.ts +0 -0
- /package/dist/esm/{types/src → src}/components/PageWrapper.d.ts +0 -0
- /package/dist/esm/{types/src → src}/components/PandadocPollingModal.d.ts +0 -0
- /package/dist/esm/{types/src → src}/components/PaymentForm/CheckoutFooter.d.ts +0 -0
- /package/dist/esm/{types/src → src}/components/PaymentForm/DemoPay/DemoPayCardCvc.d.ts +0 -0
- /package/dist/esm/{types/src → src}/components/PaymentForm/DemoPay/DemoPayCardNumber.d.ts +0 -0
- /package/dist/esm/{types/src → src}/components/PaymentForm/DemoPay/DemoPayExpiry.d.ts +0 -0
- /package/dist/esm/{types/src → src}/components/PaymentForm/DemoPay/DemoPayForm.d.ts +0 -0
- /package/dist/esm/{types/src → src}/components/PaymentForm/DemoPay/demoPayUtils.d.ts +0 -0
- /package/dist/esm/{types/src → src}/components/PaymentForm/DemoPay/index.d.ts +0 -0
- /package/dist/esm/{types/src → src}/components/PaymentForm/Finix/FinixCardForm.d.ts +0 -0
- /package/dist/esm/{types/src → src}/components/PaymentForm/Finix/index.d.ts +0 -0
- /package/dist/esm/{types/src → src}/components/PaymentForm/FinixAch.d.ts +0 -0
- /package/dist/esm/{types/src → src}/components/PaymentForm/PaymentForm.d.ts +0 -0
- /package/dist/esm/{types/src → src}/components/PaymentForm/PaymentFormTypes.d.ts +0 -0
- /package/dist/esm/{types/src → src}/components/PaymentForm/PaymentMethod/CreditCard/CreditCard.d.ts +0 -0
- /package/dist/esm/{types/src → src}/components/PaymentForm/PaymentMethod/CreditCard/LargCardIcon.d.ts +0 -0
- /package/dist/esm/{types/src → src}/components/PaymentForm/PaymentMethod/CreditCard/PlusIcon.d.ts +0 -0
- /package/dist/esm/{types/src → src}/components/PaymentForm/PaymentMethod/PaymentMethodContext.d.ts +0 -0
- /package/dist/esm/{types/src → src}/components/PaymentForm/PaymentMethod/index.d.ts +0 -0
- /package/dist/esm/{types/src → src}/components/PaymentForm/PaymentMethodForm.d.ts +0 -0
- /package/dist/esm/{types/src → src}/components/PaymentForm/PaymentMethodSelector.d.ts +0 -0
- /package/dist/esm/{types/src → src}/components/PaymentForm/StoredPaymentMethod/StoredPaymentMethodForm.d.ts +0 -0
- /package/dist/esm/{types/src → src}/components/PaymentForm/Stripe/CheckoutForm.d.ts +0 -0
- /package/dist/esm/{types/src → src}/components/PaymentForm/Stripe/PaymentMethodForm.d.ts +0 -0
- /package/dist/esm/{types/src → src}/components/PaymentForm/Stripe/StripeForm.d.ts +0 -0
- /package/dist/esm/{types/src → src}/components/PaymentForm/Stripe/index.d.ts +0 -0
- /package/dist/esm/{types/src → src}/components/PaymentForm/Stripe/stripeUtils.d.ts +0 -0
- /package/dist/esm/{types/src → src}/components/PaymentForm/index.d.ts +0 -0
- /package/dist/esm/{types/src → src}/components/PaymentForm/paymentUtils.d.ts +0 -0
- /package/dist/esm/{types/src → src}/components/Quote/AcceptQuoteModal.d.ts +0 -0
- /package/dist/esm/{types/src → src}/components/Quote/DocumentNameEnum.d.ts +0 -0
- /package/dist/esm/{types/src → src}/components/Quote/Quote.d.ts +0 -0
- /package/dist/esm/{types/src → src}/components/Quote/Quote.stories.d.ts +0 -0
- /package/dist/esm/{types/src → src}/components/Quote/StyledModal.d.ts +0 -0
- /package/dist/esm/{types/src → src}/components/Quote/index.d.ts +0 -0
- /package/dist/esm/{types/src → src}/components/StateTag.d.ts +0 -0
- /package/dist/esm/{types/src → src}/components/Subscriptions/index.d.ts +0 -0
- /package/dist/esm/{types/src → src}/components/Subscriptions/subscriptionsList/ChangeQuantitiesButton.d.ts +0 -0
- /package/dist/esm/{types/src → src}/components/Subscriptions/subscriptionsList/HideExpiredToggle.d.ts +0 -0
- /package/dist/esm/{types/src → src}/components/Subscriptions/subscriptionsList/SubscriptionCardActions.d.ts +0 -0
- /package/dist/esm/{types/src → src}/components/Subscriptions/subscriptionsList/SubscriptionCardHeader.d.ts +0 -0
- /package/dist/esm/{types/src → src}/components/Subscriptions/subscriptionsList/SubscriptionChargeTotal.d.ts +0 -0
- /package/dist/esm/{types/src → src}/components/Subscriptions/subscriptionsList/SubscriptionChargeUnitPrice.d.ts +0 -0
- /package/dist/esm/{types/src → src}/components/Subscriptions/subscriptionsList/SubscriptionsList.d.ts +0 -0
- /package/dist/esm/{types/src → src}/components/Subscriptions/subscriptionsList/SubscriptionsNavigation.d.ts +0 -0
- /package/dist/esm/{types/src → src}/components/Subscriptions/subscriptionsList/subscriptionCardDesktop/SubscriptionCardColumnHeaders.d.ts +0 -0
- /package/dist/esm/{types/src → src}/components/Subscriptions/subscriptionsList/subscriptionCardDesktop/SubscriptionCardDesktop.d.ts +0 -0
- /package/dist/esm/{types/src → src}/components/Subscriptions/subscriptionsList/subscriptionCardDesktop/SubscriptionsCardCell.d.ts +0 -0
- /package/dist/esm/{types/src → src}/components/Subscriptions/subscriptionsList/subscriptionCardMobile/SubscriptionCardCellMobile.d.ts +0 -0
- /package/dist/esm/{types/src → src}/components/Subscriptions/subscriptionsList/subscriptionCardMobile/SubscriptionCardMobile.d.ts +0 -0
- /package/dist/esm/{types/src → src}/components/Subscriptions/subscriptionsList/subscriptionUtils.d.ts +0 -0
- /package/dist/esm/{types/src → src}/components/TaxationForm.d.ts +0 -0
- /package/dist/esm/{types/src → src}/components/Transactions/DocumentNameEnum.d.ts +0 -0
- /package/dist/esm/{types/src → src}/components/Transactions/Transactions.stories.d.ts +0 -0
- /package/dist/esm/{types/src → src}/components/Transactions/index.d.ts +0 -0
- /package/dist/esm/{types/src → src}/components/Transactions/transactionsList/TransactionDate.d.ts +0 -0
- /package/dist/esm/{types/src → src}/components/Transactions/transactionsList/TransactionDownload.d.ts +0 -0
- /package/dist/esm/{types/src → src}/components/Transactions/transactionsList/TransactionGridCell.d.ts +0 -0
- /package/dist/esm/{types/src → src}/components/Transactions/transactionsList/TransactionTitle.d.ts +0 -0
- /package/dist/esm/{types/src → src}/components/Transactions/transactionsList/TransactionsEmptyState.d.ts +0 -0
- /package/dist/esm/{types/src → src}/components/Transactions/transactionsList/TransactionsListDesktop.d.ts +0 -0
- /package/dist/esm/{types/src → src}/components/Transactions/transactionsList/TransactionsListMobile.d.ts +0 -0
- /package/dist/esm/{types/src → src}/consts/paymentConsts.d.ts +0 -0
- /package/dist/esm/{types/src → src}/contexts/BrandContext.d.ts +0 -0
- /package/dist/esm/{types/src → src}/contexts/NavigationContext.d.ts +0 -0
- /package/dist/esm/{types/src → src}/enums/SubscriptionState.d.ts +0 -0
- /package/dist/esm/{types/src → src}/features/quantityChangeDrawer/QuantityChangeGridRow.d.ts +0 -0
- /package/dist/esm/{types/src → src}/features/quantityChangeDrawer/QuantityChangeGridTitle.d.ts +0 -0
- /package/dist/esm/{types/src → src}/features/quantityChangeDrawer/QuantityInput.d.ts +0 -0
- /package/dist/esm/{types/src → src}/features/quantityChangeDrawer/QuoteChangeSummarySection.d.ts +0 -0
- /package/dist/esm/{types/src → src}/features/quantityChangeDrawer/quantityChangeDrawerDesktop/QuantityChangeDrawerDesktop.d.ts +0 -0
- /package/dist/esm/{types/src → src}/graphql/QuoteRequests.d.ts +0 -0
- /package/dist/esm/{types/src → src}/graphql/SubscriptionRequests.d.ts +0 -0
- /package/dist/esm/{types/src → src}/graphql/mutations/accountUpdate.d.ts +0 -0
- /package/dist/esm/{types/src → src}/graphql/mutations/checkout.d.ts +0 -0
- /package/dist/esm/{types/src → src}/graphql/mutations/quoteAddCoupon.d.ts +0 -0
- /package/dist/esm/{types/src → src}/graphql/mutations/quoteRecalculateTaxes.d.ts +0 -0
- /package/dist/esm/{types/src → src}/graphql/mutations/quoteSubscriptionReinstate.d.ts +0 -0
- /package/dist/esm/{types/src → src}/graphql/queries/getBranding.d.ts +0 -0
- /package/dist/esm/{types/src → src}/graphql/queries/getCurrentUserData.d.ts +0 -0
- /package/dist/esm/{types/src → src}/graphql/queries/getFeatureUsage.d.ts +0 -0
- /package/dist/esm/{types/src → src}/graphql/queries/getFormattedInvoice.d.ts +0 -0
- /package/dist/esm/{types/src → src}/graphql/queries/getInvoice.d.ts +0 -0
- /package/dist/esm/{types/src → src}/graphql/queries/getPlanChangeOptions.d.ts +0 -0
- /package/dist/esm/{types/src → src}/graphql/queries/getQuote.d.ts +0 -0
- /package/dist/esm/{types/src → src}/graphql/queries/getSubscriptions.d.ts +0 -0
- /package/dist/esm/{types/src → src}/graphql/queries/getTransactions.d.ts +0 -0
- /package/dist/esm/{types/src → src}/hooks/index.d.ts +0 -0
- /package/dist/esm/{types/src → src}/hooks/quotes/useSendAcceptQuote.d.ts +0 -0
- /package/dist/esm/{types/src → src}/hooks/quotes/useSigningComplete.d.ts +0 -0
- /package/dist/esm/{types/src → src}/hooks/subscriptions/useSubscriptions.d.ts +0 -0
- /package/dist/esm/{types/src → src}/hooks/useCurrentUserData.d.ts +0 -0
- /package/dist/esm/{types/src → src}/hooks/useFocusFirstInput.d.ts +0 -0
- /package/dist/esm/{types/src → src}/hooks/useHasTaxPlugin.d.ts +0 -0
- /package/dist/esm/{types/src → src}/hooks/useIsExpired.d.ts +0 -0
- /package/dist/esm/{types/src → src}/hooks/useIsMobile.d.ts +0 -0
- /package/dist/esm/{types/src → src}/hooks/usePaymentMethod.d.ts +0 -0
- /package/dist/esm/{types/src → src}/hooks/useSigningPlugins.d.ts +0 -0
- /package/dist/esm/{types/src → src}/index.d.ts +0 -0
- /package/dist/esm/{types/src → src}/mocks/browser.d.ts +0 -0
- /package/dist/esm/{types/src → src}/stories/Button.d.ts +0 -0
- /package/dist/esm/{types/src → src}/stories/Button.stories.d.ts +0 -0
- /package/dist/esm/{types/src → src}/stories/Header.d.ts +0 -0
- /package/dist/esm/{types/src → src}/stories/Header.stories.d.ts +0 -0
- /package/dist/esm/{types/src → src}/stories/Page.d.ts +0 -0
- /package/dist/esm/{types/src → src}/stories/Page.stories.d.ts +0 -0
- /package/dist/esm/{types/src → src}/utils.d.ts +0 -0
- /package/dist/esm/{types/vite.config.d.ts → vite.config.d.ts} +0 -0
package/dist/esm/index.js
CHANGED
|
@@ -2,11 +2,12 @@ import { jsx, Fragment, jsxs } from 'react/jsx-runtime';
|
|
|
2
2
|
import * as React from 'react';
|
|
3
3
|
import React__default, { createContext, useContext, useEffect, useState, useMemo, useRef } from 'react';
|
|
4
4
|
import { Markup } from 'interweave';
|
|
5
|
-
import { ConfigProvider, Button, Checkbox, Input, Divider, Modal, Form, Tag, Popconfirm, Drawer, Select, Dropdown } from 'antd';
|
|
5
|
+
import { ConfigProvider, Button, Typography, Checkbox, Input, Divider, Modal, Form, Tag, Popconfirm, Drawer, Select, Image, Dropdown } from 'antd';
|
|
6
6
|
import styled from 'styled-components';
|
|
7
|
-
import { DEFAULT_ACCENT_COLOR, DEFAULT_BRAND_COLOR, DEFAULT_SECONDARY_COLOR, DEFAULT_TOP_NAV_IMAGE_URL, gqlRequest, createGraphQLClient, Misc,
|
|
7
|
+
import { DEFAULT_ACCENT_COLOR, DEFAULT_BRAND_COLOR, DEFAULT_SECONDARY_COLOR, DEFAULT_TOP_NAV_IMAGE_URL, gqlRequest, createGraphQLClient, Misc, INPUT_BORDER_COLOR, SLATE_50, SLATE_400, SLATE_200, QueryKeyFactory, useDownloadFile, NotificationUtils, invokePlugin, useIsMobile as useIsMobile$1, GRAY_500, GRAY_200, CHARCOAL_GRAY, StringUtils, usePaymentPlugins, ApiUtils, PAYABLE_INVOICE_STATES, DOCUMENT_NAME as DOCUMENT_NAME$1, QuoteInvoiceUtils, usePlugins, GraphqlUtils, MARK_PRO, Lists, getTaxationRequiredAccountFields, getAccount, useCurrentUserData, SLATE_500, PRIMARY_COLOR, FrontendTransaction, SLATE_600, WHITE, TransactionKind, SubscriptionState as SubscriptionState$2, MODAL_MAX_HEIGHT, DataInterval, TAG_COLORS, ChargeType } from '@bunnyapp/common';
|
|
8
8
|
import { QueryClient, QueryClientProvider, useQuery, useMutation, useQueryClient, keepPreviousData } from '@tanstack/react-query';
|
|
9
9
|
import { RecoilRoot, atom, useRecoilValue, useSetRecoilState, useRecoilState } from 'recoil';
|
|
10
|
+
import theme from 'antd/lib/theme';
|
|
10
11
|
import { useElements, useStripe, PaymentElement, Elements } from '@stripe/react-stripe-js';
|
|
11
12
|
import { loadStripe } from '@stripe/stripe-js/pure';
|
|
12
13
|
import { capitalize, startCase, cloneDeep, omit } from 'lodash';
|
|
@@ -51,8 +52,8 @@ function __awaiter(thisArg, _arguments, P, generator) {
|
|
|
51
52
|
}
|
|
52
53
|
|
|
53
54
|
function __generator(thisArg, body) {
|
|
54
|
-
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
|
55
|
-
return g =
|
|
55
|
+
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
|
|
56
|
+
return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
56
57
|
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
57
58
|
function step(op) {
|
|
58
59
|
if (f) throw new TypeError("Generator is already executing.");
|
|
@@ -292,563 +293,535 @@ var classnames = {exports: {}};
|
|
|
292
293
|
|
|
293
294
|
var classNames = classnames.exports;
|
|
294
295
|
|
|
296
|
+
const round = Math.round;
|
|
297
|
+
|
|
295
298
|
/**
|
|
296
|
-
*
|
|
297
|
-
*
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
n = max === 360 ? n : Math.min(max, Math.max(0, parseFloat(n)));
|
|
305
|
-
// Automatically convert percentage into number
|
|
306
|
-
if (isPercent) {
|
|
307
|
-
n = parseInt(String(n * max), 10) / 100;
|
|
308
|
-
}
|
|
309
|
-
// Handle floating point rounding errors
|
|
310
|
-
if (Math.abs(n - max) < 0.000001) {
|
|
311
|
-
return 1;
|
|
312
|
-
}
|
|
313
|
-
// Convert into [0, 1] range if it isn't already
|
|
314
|
-
if (max === 360) {
|
|
315
|
-
// If n is a hue given in degrees,
|
|
316
|
-
// wrap around out-of-range values into [0, 360] range
|
|
317
|
-
// then convert into [0, 1].
|
|
318
|
-
n = (n < 0 ? (n % max) + max : n % max) / parseFloat(String(max));
|
|
319
|
-
}
|
|
320
|
-
else {
|
|
321
|
-
// If n not a hue given in degrees
|
|
322
|
-
// Convert into [0, 1] range if it isn't already.
|
|
323
|
-
n = (n % max) / parseFloat(String(max));
|
|
324
|
-
}
|
|
325
|
-
return n;
|
|
326
|
-
}
|
|
327
|
-
/**
|
|
328
|
-
* Need to handle 1.0 as 100%, since once it is a number, there is no difference between it and 1
|
|
329
|
-
* <http://stackoverflow.com/questions/7422072/javascript-how-to-detect-number-as-a-decimal-including-1-0>
|
|
330
|
-
* @hidden
|
|
331
|
-
*/
|
|
332
|
-
function isOnePointZero(n) {
|
|
333
|
-
return typeof n === 'string' && n.indexOf('.') !== -1 && parseFloat(n) === 1;
|
|
334
|
-
}
|
|
335
|
-
/**
|
|
336
|
-
* Check to see if string passed in is a percentage
|
|
337
|
-
* @hidden
|
|
338
|
-
*/
|
|
339
|
-
function isPercentage(n) {
|
|
340
|
-
return typeof n === 'string' && n.indexOf('%') !== -1;
|
|
341
|
-
}
|
|
342
|
-
/**
|
|
343
|
-
* Return a valid alpha value [0,1] with all invalid values being set to 1
|
|
344
|
-
* @hidden
|
|
345
|
-
*/
|
|
346
|
-
function boundAlpha(a) {
|
|
347
|
-
a = parseFloat(a);
|
|
348
|
-
if (isNaN(a) || a < 0 || a > 1) {
|
|
349
|
-
a = 1;
|
|
350
|
-
}
|
|
351
|
-
return a;
|
|
352
|
-
}
|
|
353
|
-
/**
|
|
354
|
-
* Replace a decimal with it's percentage value
|
|
355
|
-
* @hidden
|
|
356
|
-
*/
|
|
357
|
-
function convertToPercentage(n) {
|
|
358
|
-
if (n <= 1) {
|
|
359
|
-
return "".concat(Number(n) * 100, "%");
|
|
360
|
-
}
|
|
361
|
-
return n;
|
|
362
|
-
}
|
|
363
|
-
/**
|
|
364
|
-
* Force a hex value to have 2 characters
|
|
365
|
-
* @hidden
|
|
299
|
+
* Support format, alpha unit will check the % mark:
|
|
300
|
+
* - rgba(102, 204, 255, .5) -> [102, 204, 255, 0.5]
|
|
301
|
+
* - rgb(102 204 255 / .5) -> [102, 204, 255, 0.5]
|
|
302
|
+
* - rgb(100%, 50%, 0% / 50%) -> [255, 128, 0, 0.5]
|
|
303
|
+
* - hsl(270, 60, 40, .5) -> [270, 60, 40, 0.5]
|
|
304
|
+
* - hsl(270deg 60% 40% / 50%) -> [270, 60, 40, 0.5]
|
|
305
|
+
*
|
|
306
|
+
* When `base` is provided, the percentage value will be divided by `base`.
|
|
366
307
|
*/
|
|
367
|
-
function
|
|
368
|
-
|
|
308
|
+
function splitColorStr(str, parseNum) {
|
|
309
|
+
const match = str
|
|
310
|
+
// Remove str before `(`
|
|
311
|
+
.replace(/^[^(]*\((.*)/, '$1')
|
|
312
|
+
// Remove str after `)`
|
|
313
|
+
.replace(/\).*/, '').match(/\d*\.?\d+%?/g) || [];
|
|
314
|
+
const numList = match.map(item => parseFloat(item));
|
|
315
|
+
for (let i = 0; i < 3; i += 1) {
|
|
316
|
+
numList[i] = parseNum(numList[i] || 0, match[i] || '', i);
|
|
317
|
+
}
|
|
318
|
+
|
|
319
|
+
// For alpha. 50% should be 0.5
|
|
320
|
+
if (match[3]) {
|
|
321
|
+
numList[3] = match[3].includes('%') ? numList[3] / 100 : numList[3];
|
|
322
|
+
} else {
|
|
323
|
+
// By default, alpha is 1
|
|
324
|
+
numList[3] = 1;
|
|
325
|
+
}
|
|
326
|
+
return numList;
|
|
369
327
|
}
|
|
328
|
+
const parseHSVorHSL = (num, _, index) => index === 0 ? num : num / 100;
|
|
370
329
|
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
r: bound01(r, 255) * 255,
|
|
382
|
-
g: bound01(g, 255) * 255,
|
|
383
|
-
b: bound01(b, 255) * 255,
|
|
384
|
-
};
|
|
330
|
+
/** round and limit number to integer between 0-255 */
|
|
331
|
+
function limitRange(value, max) {
|
|
332
|
+
const mergedMax = max || 255;
|
|
333
|
+
if (value > mergedMax) {
|
|
334
|
+
return mergedMax;
|
|
335
|
+
}
|
|
336
|
+
if (value < 0) {
|
|
337
|
+
return 0;
|
|
338
|
+
}
|
|
339
|
+
return value;
|
|
385
340
|
}
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
341
|
+
class FastColor {
|
|
342
|
+
constructor(input) {
|
|
343
|
+
/**
|
|
344
|
+
* All FastColor objects are valid. So isValid is always true. This property is kept to be compatible with TinyColor.
|
|
345
|
+
*/
|
|
346
|
+
_defineProperty(this, "isValid", true);
|
|
347
|
+
/**
|
|
348
|
+
* Red, R in RGB
|
|
349
|
+
*/
|
|
350
|
+
_defineProperty(this, "r", 0);
|
|
351
|
+
/**
|
|
352
|
+
* Green, G in RGB
|
|
353
|
+
*/
|
|
354
|
+
_defineProperty(this, "g", 0);
|
|
355
|
+
/**
|
|
356
|
+
* Blue, B in RGB
|
|
357
|
+
*/
|
|
358
|
+
_defineProperty(this, "b", 0);
|
|
359
|
+
/**
|
|
360
|
+
* Alpha/Opacity, A in RGBA/HSLA
|
|
361
|
+
*/
|
|
362
|
+
_defineProperty(this, "a", 1);
|
|
363
|
+
// HSV privates
|
|
364
|
+
_defineProperty(this, "_h", void 0);
|
|
365
|
+
_defineProperty(this, "_s", void 0);
|
|
366
|
+
_defineProperty(this, "_l", void 0);
|
|
367
|
+
_defineProperty(this, "_v", void 0);
|
|
368
|
+
// intermediate variables to calculate HSL/HSV
|
|
369
|
+
_defineProperty(this, "_max", void 0);
|
|
370
|
+
_defineProperty(this, "_min", void 0);
|
|
371
|
+
_defineProperty(this, "_brightness", void 0);
|
|
372
|
+
/**
|
|
373
|
+
* Always check 3 char in the object to determine the format.
|
|
374
|
+
* We not use function in check to save bundle size.
|
|
375
|
+
* e.g. 'rgb' -> { r: 0, g: 0, b: 0 }.
|
|
376
|
+
*/
|
|
377
|
+
function matchFormat(str) {
|
|
378
|
+
return str[0] in input && str[1] in input && str[2] in input;
|
|
389
379
|
}
|
|
390
|
-
if (
|
|
391
|
-
|
|
380
|
+
if (!input) ; else if (typeof input === 'string') {
|
|
381
|
+
const trimStr = input.trim();
|
|
382
|
+
function matchPrefix(prefix) {
|
|
383
|
+
return trimStr.startsWith(prefix);
|
|
384
|
+
}
|
|
385
|
+
if (/^#?[A-F\d]{3,8}$/i.test(trimStr)) {
|
|
386
|
+
this.fromHexString(trimStr);
|
|
387
|
+
} else if (matchPrefix('rgb')) {
|
|
388
|
+
this.fromRgbString(trimStr);
|
|
389
|
+
} else if (matchPrefix('hsl')) {
|
|
390
|
+
this.fromHslString(trimStr);
|
|
391
|
+
} else if (matchPrefix('hsv') || matchPrefix('hsb')) {
|
|
392
|
+
this.fromHsvString(trimStr);
|
|
393
|
+
}
|
|
394
|
+
} else if (input instanceof FastColor) {
|
|
395
|
+
this.r = input.r;
|
|
396
|
+
this.g = input.g;
|
|
397
|
+
this.b = input.b;
|
|
398
|
+
this.a = input.a;
|
|
399
|
+
this._h = input._h;
|
|
400
|
+
this._s = input._s;
|
|
401
|
+
this._l = input._l;
|
|
402
|
+
this._v = input._v;
|
|
403
|
+
} else if (matchFormat('rgb')) {
|
|
404
|
+
this.r = limitRange(input.r);
|
|
405
|
+
this.g = limitRange(input.g);
|
|
406
|
+
this.b = limitRange(input.b);
|
|
407
|
+
this.a = typeof input.a === 'number' ? limitRange(input.a, 1) : 1;
|
|
408
|
+
} else if (matchFormat('hsl')) {
|
|
409
|
+
this.fromHsl(input);
|
|
410
|
+
} else if (matchFormat('hsv')) {
|
|
411
|
+
this.fromHsv(input);
|
|
412
|
+
} else {
|
|
413
|
+
throw new Error('@ant-design/fast-color: unsupported input ' + JSON.stringify(input));
|
|
392
414
|
}
|
|
393
|
-
|
|
394
|
-
|
|
415
|
+
}
|
|
416
|
+
|
|
417
|
+
// ======================= Setter =======================
|
|
418
|
+
|
|
419
|
+
setR(value) {
|
|
420
|
+
return this._sc('r', value);
|
|
421
|
+
}
|
|
422
|
+
setG(value) {
|
|
423
|
+
return this._sc('g', value);
|
|
424
|
+
}
|
|
425
|
+
setB(value) {
|
|
426
|
+
return this._sc('b', value);
|
|
427
|
+
}
|
|
428
|
+
setA(value) {
|
|
429
|
+
return this._sc('a', value, 1);
|
|
430
|
+
}
|
|
431
|
+
setHue(value) {
|
|
432
|
+
const hsv = this.toHsv();
|
|
433
|
+
hsv.h = value;
|
|
434
|
+
return this._c(hsv);
|
|
435
|
+
}
|
|
436
|
+
|
|
437
|
+
// ======================= Getter =======================
|
|
438
|
+
/**
|
|
439
|
+
* Returns the perceived luminance of a color, from 0-1.
|
|
440
|
+
* @see http://www.w3.org/TR/2008/REC-WCAG20-20081211/#relativeluminancedef
|
|
441
|
+
*/
|
|
442
|
+
getLuminance() {
|
|
443
|
+
function adjustGamma(raw) {
|
|
444
|
+
const val = raw / 255;
|
|
445
|
+
return val <= 0.03928 ? val / 12.92 : Math.pow((val + 0.055) / 1.055, 2.4);
|
|
395
446
|
}
|
|
396
|
-
|
|
397
|
-
|
|
447
|
+
const R = adjustGamma(this.r);
|
|
448
|
+
const G = adjustGamma(this.g);
|
|
449
|
+
const B = adjustGamma(this.b);
|
|
450
|
+
return 0.2126 * R + 0.7152 * G + 0.0722 * B;
|
|
451
|
+
}
|
|
452
|
+
getHue() {
|
|
453
|
+
if (typeof this._h === 'undefined') {
|
|
454
|
+
const delta = this.getMax() - this.getMin();
|
|
455
|
+
if (delta === 0) {
|
|
456
|
+
this._h = 0;
|
|
457
|
+
} else {
|
|
458
|
+
this._h = round(60 * (this.r === this.getMax() ? (this.g - this.b) / delta + (this.g < this.b ? 6 : 0) : this.g === this.getMax() ? (this.b - this.r) / delta + 2 : (this.r - this.g) / delta + 4));
|
|
459
|
+
}
|
|
398
460
|
}
|
|
399
|
-
|
|
400
|
-
|
|
461
|
+
return this._h;
|
|
462
|
+
}
|
|
463
|
+
getSaturation() {
|
|
464
|
+
if (typeof this._s === 'undefined') {
|
|
465
|
+
const delta = this.getMax() - this.getMin();
|
|
466
|
+
if (delta === 0) {
|
|
467
|
+
this._s = 0;
|
|
468
|
+
} else {
|
|
469
|
+
this._s = delta / this.getMax();
|
|
470
|
+
}
|
|
401
471
|
}
|
|
402
|
-
return
|
|
403
|
-
}
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
* *Assumes:* h is contained in [0, 1] or [0, 360] and s and l are contained [0, 1] or [0, 100]
|
|
408
|
-
* *Returns:* { r, g, b } in the set [0, 255]
|
|
409
|
-
*/
|
|
410
|
-
function hslToRgb(h, s, l) {
|
|
411
|
-
var r;
|
|
412
|
-
var g;
|
|
413
|
-
var b;
|
|
414
|
-
h = bound01(h, 360);
|
|
415
|
-
s = bound01(s, 100);
|
|
416
|
-
l = bound01(l, 100);
|
|
417
|
-
if (s === 0) {
|
|
418
|
-
// achromatic
|
|
419
|
-
g = l;
|
|
420
|
-
b = l;
|
|
421
|
-
r = l;
|
|
472
|
+
return this._s;
|
|
473
|
+
}
|
|
474
|
+
getLightness() {
|
|
475
|
+
if (typeof this._l === 'undefined') {
|
|
476
|
+
this._l = (this.getMax() + this.getMin()) / 510;
|
|
422
477
|
}
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
b = hue2rgb(p, q, h - 1 / 3);
|
|
478
|
+
return this._l;
|
|
479
|
+
}
|
|
480
|
+
getValue() {
|
|
481
|
+
if (typeof this._v === 'undefined') {
|
|
482
|
+
this._v = this.getMax() / 255;
|
|
429
483
|
}
|
|
430
|
-
return
|
|
431
|
-
}
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
b = bound01(b, 255);
|
|
442
|
-
var max = Math.max(r, g, b);
|
|
443
|
-
var min = Math.min(r, g, b);
|
|
444
|
-
var h = 0;
|
|
445
|
-
var v = max;
|
|
446
|
-
var d = max - min;
|
|
447
|
-
var s = max === 0 ? 0 : d / max;
|
|
448
|
-
if (max === min) {
|
|
449
|
-
h = 0; // achromatic
|
|
484
|
+
return this._v;
|
|
485
|
+
}
|
|
486
|
+
|
|
487
|
+
/**
|
|
488
|
+
* Returns the perceived brightness of the color, from 0-255.
|
|
489
|
+
* Note: this is not the b of HSB
|
|
490
|
+
* @see http://www.w3.org/TR/AERT#color-contrast
|
|
491
|
+
*/
|
|
492
|
+
getBrightness() {
|
|
493
|
+
if (typeof this._brightness === 'undefined') {
|
|
494
|
+
this._brightness = (this.r * 299 + this.g * 587 + this.b * 114) / 1000;
|
|
450
495
|
}
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
}
|
|
463
|
-
h /= 6;
|
|
496
|
+
return this._brightness;
|
|
497
|
+
}
|
|
498
|
+
|
|
499
|
+
// ======================== Func ========================
|
|
500
|
+
|
|
501
|
+
darken(amount = 10) {
|
|
502
|
+
const h = this.getHue();
|
|
503
|
+
const s = this.getSaturation();
|
|
504
|
+
let l = this.getLightness() - amount / 100;
|
|
505
|
+
if (l < 0) {
|
|
506
|
+
l = 0;
|
|
464
507
|
}
|
|
465
|
-
return {
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
var f = h - i;
|
|
479
|
-
var p = v * (1 - s);
|
|
480
|
-
var q = v * (1 - f * s);
|
|
481
|
-
var t = v * (1 - (1 - f) * s);
|
|
482
|
-
var mod = i % 6;
|
|
483
|
-
var r = [v, q, p, p, t, v][mod];
|
|
484
|
-
var g = [t, v, v, q, p, p][mod];
|
|
485
|
-
var b = [p, p, t, v, v, q][mod];
|
|
486
|
-
return { r: r * 255, g: g * 255, b: b * 255 };
|
|
487
|
-
}
|
|
488
|
-
/**
|
|
489
|
-
* Converts an RGB color to hex
|
|
490
|
-
*
|
|
491
|
-
* Assumes r, g, and b are contained in the set [0, 255]
|
|
492
|
-
* Returns a 3 or 6 character hex
|
|
493
|
-
*/
|
|
494
|
-
function rgbToHex(r, g, b, allow3Char) {
|
|
495
|
-
var hex = [
|
|
496
|
-
pad2(Math.round(r).toString(16)),
|
|
497
|
-
pad2(Math.round(g).toString(16)),
|
|
498
|
-
pad2(Math.round(b).toString(16)),
|
|
499
|
-
];
|
|
500
|
-
// Return a 3 character hex if possible
|
|
501
|
-
if (allow3Char &&
|
|
502
|
-
hex[0].startsWith(hex[0].charAt(1)) &&
|
|
503
|
-
hex[1].startsWith(hex[1].charAt(1)) &&
|
|
504
|
-
hex[2].startsWith(hex[2].charAt(1))) {
|
|
505
|
-
return hex[0].charAt(0) + hex[1].charAt(0) + hex[2].charAt(0);
|
|
508
|
+
return this._c({
|
|
509
|
+
h,
|
|
510
|
+
s,
|
|
511
|
+
l,
|
|
512
|
+
a: this.a
|
|
513
|
+
});
|
|
514
|
+
}
|
|
515
|
+
lighten(amount = 10) {
|
|
516
|
+
const h = this.getHue();
|
|
517
|
+
const s = this.getSaturation();
|
|
518
|
+
let l = this.getLightness() + amount / 100;
|
|
519
|
+
if (l > 1) {
|
|
520
|
+
l = 1;
|
|
506
521
|
}
|
|
507
|
-
return
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
}
|
|
513
|
-
|
|
514
|
-
function parseIntFromHex(val) {
|
|
515
|
-
return parseInt(val, 16);
|
|
516
|
-
}
|
|
522
|
+
return this._c({
|
|
523
|
+
h,
|
|
524
|
+
s,
|
|
525
|
+
l,
|
|
526
|
+
a: this.a
|
|
527
|
+
});
|
|
528
|
+
}
|
|
517
529
|
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
|
|
550
|
-
|
|
551
|
-
|
|
552
|
-
|
|
553
|
-
|
|
554
|
-
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
|
|
560
|
-
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
|
|
565
|
-
|
|
566
|
-
|
|
567
|
-
|
|
568
|
-
|
|
569
|
-
|
|
570
|
-
|
|
571
|
-
|
|
572
|
-
|
|
573
|
-
|
|
574
|
-
|
|
575
|
-
|
|
576
|
-
|
|
577
|
-
|
|
578
|
-
|
|
579
|
-
|
|
580
|
-
|
|
581
|
-
|
|
582
|
-
|
|
583
|
-
|
|
584
|
-
|
|
585
|
-
|
|
586
|
-
|
|
587
|
-
|
|
588
|
-
|
|
589
|
-
|
|
590
|
-
|
|
591
|
-
|
|
592
|
-
|
|
593
|
-
|
|
594
|
-
|
|
595
|
-
|
|
596
|
-
|
|
597
|
-
|
|
598
|
-
|
|
599
|
-
|
|
600
|
-
|
|
601
|
-
|
|
602
|
-
lightslategrey: '#778899',
|
|
603
|
-
lightsteelblue: '#b0c4de',
|
|
604
|
-
lightyellow: '#ffffe0',
|
|
605
|
-
lime: '#00ff00',
|
|
606
|
-
limegreen: '#32cd32',
|
|
607
|
-
linen: '#faf0e6',
|
|
608
|
-
magenta: '#ff00ff',
|
|
609
|
-
maroon: '#800000',
|
|
610
|
-
mediumaquamarine: '#66cdaa',
|
|
611
|
-
mediumblue: '#0000cd',
|
|
612
|
-
mediumorchid: '#ba55d3',
|
|
613
|
-
mediumpurple: '#9370db',
|
|
614
|
-
mediumseagreen: '#3cb371',
|
|
615
|
-
mediumslateblue: '#7b68ee',
|
|
616
|
-
mediumspringgreen: '#00fa9a',
|
|
617
|
-
mediumturquoise: '#48d1cc',
|
|
618
|
-
mediumvioletred: '#c71585',
|
|
619
|
-
midnightblue: '#191970',
|
|
620
|
-
mintcream: '#f5fffa',
|
|
621
|
-
mistyrose: '#ffe4e1',
|
|
622
|
-
moccasin: '#ffe4b5',
|
|
623
|
-
navajowhite: '#ffdead',
|
|
624
|
-
navy: '#000080',
|
|
625
|
-
oldlace: '#fdf5e6',
|
|
626
|
-
olive: '#808000',
|
|
627
|
-
olivedrab: '#6b8e23',
|
|
628
|
-
orange: '#ffa500',
|
|
629
|
-
orangered: '#ff4500',
|
|
630
|
-
orchid: '#da70d6',
|
|
631
|
-
palegoldenrod: '#eee8aa',
|
|
632
|
-
palegreen: '#98fb98',
|
|
633
|
-
paleturquoise: '#afeeee',
|
|
634
|
-
palevioletred: '#db7093',
|
|
635
|
-
papayawhip: '#ffefd5',
|
|
636
|
-
peachpuff: '#ffdab9',
|
|
637
|
-
peru: '#cd853f',
|
|
638
|
-
pink: '#ffc0cb',
|
|
639
|
-
plum: '#dda0dd',
|
|
640
|
-
powderblue: '#b0e0e6',
|
|
641
|
-
purple: '#800080',
|
|
642
|
-
rebeccapurple: '#663399',
|
|
643
|
-
red: '#ff0000',
|
|
644
|
-
rosybrown: '#bc8f8f',
|
|
645
|
-
royalblue: '#4169e1',
|
|
646
|
-
saddlebrown: '#8b4513',
|
|
647
|
-
salmon: '#fa8072',
|
|
648
|
-
sandybrown: '#f4a460',
|
|
649
|
-
seagreen: '#2e8b57',
|
|
650
|
-
seashell: '#fff5ee',
|
|
651
|
-
sienna: '#a0522d',
|
|
652
|
-
silver: '#c0c0c0',
|
|
653
|
-
skyblue: '#87ceeb',
|
|
654
|
-
slateblue: '#6a5acd',
|
|
655
|
-
slategray: '#708090',
|
|
656
|
-
slategrey: '#708090',
|
|
657
|
-
snow: '#fffafa',
|
|
658
|
-
springgreen: '#00ff7f',
|
|
659
|
-
steelblue: '#4682b4',
|
|
660
|
-
tan: '#d2b48c',
|
|
661
|
-
teal: '#008080',
|
|
662
|
-
thistle: '#d8bfd8',
|
|
663
|
-
tomato: '#ff6347',
|
|
664
|
-
turquoise: '#40e0d0',
|
|
665
|
-
violet: '#ee82ee',
|
|
666
|
-
wheat: '#f5deb3',
|
|
667
|
-
white: '#ffffff',
|
|
668
|
-
whitesmoke: '#f5f5f5',
|
|
669
|
-
yellow: '#ffff00',
|
|
670
|
-
yellowgreen: '#9acd32',
|
|
671
|
-
};
|
|
672
|
-
|
|
673
|
-
/* eslint-disable @typescript-eslint/no-redundant-type-constituents */
|
|
674
|
-
/**
|
|
675
|
-
* Given a string or object, convert that input to RGB
|
|
676
|
-
*
|
|
677
|
-
* Possible string inputs:
|
|
678
|
-
* ```
|
|
679
|
-
* "red"
|
|
680
|
-
* "#f00" or "f00"
|
|
681
|
-
* "#ff0000" or "ff0000"
|
|
682
|
-
* "#ff000000" or "ff000000"
|
|
683
|
-
* "rgb 255 0 0" or "rgb (255, 0, 0)"
|
|
684
|
-
* "rgb 1.0 0 0" or "rgb (1, 0, 0)"
|
|
685
|
-
* "rgba (255, 0, 0, 1)" or "rgba 255, 0, 0, 1"
|
|
686
|
-
* "rgba (1.0, 0, 0, 1)" or "rgba 1.0, 0, 0, 1"
|
|
687
|
-
* "hsl(0, 100%, 50%)" or "hsl 0 100% 50%"
|
|
688
|
-
* "hsla(0, 100%, 50%, 1)" or "hsla 0 100% 50%, 1"
|
|
689
|
-
* "hsv(0, 100%, 100%)" or "hsv 0 100% 100%"
|
|
690
|
-
* ```
|
|
691
|
-
*/
|
|
692
|
-
function inputToRGB(color) {
|
|
693
|
-
var rgb = { r: 0, g: 0, b: 0 };
|
|
694
|
-
var a = 1;
|
|
695
|
-
var s = null;
|
|
696
|
-
var v = null;
|
|
697
|
-
var l = null;
|
|
698
|
-
var ok = false;
|
|
699
|
-
var format = false;
|
|
700
|
-
if (typeof color === 'string') {
|
|
701
|
-
color = stringInputToObject(color);
|
|
702
|
-
}
|
|
703
|
-
if (typeof color === 'object') {
|
|
704
|
-
if (isValidCSSUnit(color.r) && isValidCSSUnit(color.g) && isValidCSSUnit(color.b)) {
|
|
705
|
-
rgb = rgbToRgb(color.r, color.g, color.b);
|
|
706
|
-
ok = true;
|
|
707
|
-
format = String(color.r).substr(-1) === '%' ? 'prgb' : 'rgb';
|
|
708
|
-
}
|
|
709
|
-
else if (isValidCSSUnit(color.h) && isValidCSSUnit(color.s) && isValidCSSUnit(color.v)) {
|
|
710
|
-
s = convertToPercentage(color.s);
|
|
711
|
-
v = convertToPercentage(color.v);
|
|
712
|
-
rgb = hsvToRgb(color.h, s, v);
|
|
713
|
-
ok = true;
|
|
714
|
-
format = 'hsv';
|
|
715
|
-
}
|
|
716
|
-
else if (isValidCSSUnit(color.h) && isValidCSSUnit(color.s) && isValidCSSUnit(color.l)) {
|
|
717
|
-
s = convertToPercentage(color.s);
|
|
718
|
-
l = convertToPercentage(color.l);
|
|
719
|
-
rgb = hslToRgb(color.h, s, l);
|
|
720
|
-
ok = true;
|
|
721
|
-
format = 'hsl';
|
|
722
|
-
}
|
|
723
|
-
if (Object.prototype.hasOwnProperty.call(color, 'a')) {
|
|
724
|
-
a = color.a;
|
|
725
|
-
}
|
|
530
|
+
/**
|
|
531
|
+
* Mix the current color a given amount with another color, from 0 to 100.
|
|
532
|
+
* 0 means no mixing (return current color).
|
|
533
|
+
*/
|
|
534
|
+
mix(input, amount = 50) {
|
|
535
|
+
const color = this._c(input);
|
|
536
|
+
const p = amount / 100;
|
|
537
|
+
const calc = key => (color[key] - this[key]) * p + this[key];
|
|
538
|
+
const rgba = {
|
|
539
|
+
r: round(calc('r')),
|
|
540
|
+
g: round(calc('g')),
|
|
541
|
+
b: round(calc('b')),
|
|
542
|
+
a: round(calc('a') * 100) / 100
|
|
543
|
+
};
|
|
544
|
+
return this._c(rgba);
|
|
545
|
+
}
|
|
546
|
+
|
|
547
|
+
/**
|
|
548
|
+
* Mix the color with pure white, from 0 to 100.
|
|
549
|
+
* Providing 0 will do nothing, providing 100 will always return white.
|
|
550
|
+
*/
|
|
551
|
+
tint(amount = 10) {
|
|
552
|
+
return this.mix({
|
|
553
|
+
r: 255,
|
|
554
|
+
g: 255,
|
|
555
|
+
b: 255,
|
|
556
|
+
a: 1
|
|
557
|
+
}, amount);
|
|
558
|
+
}
|
|
559
|
+
|
|
560
|
+
/**
|
|
561
|
+
* Mix the color with pure black, from 0 to 100.
|
|
562
|
+
* Providing 0 will do nothing, providing 100 will always return black.
|
|
563
|
+
*/
|
|
564
|
+
shade(amount = 10) {
|
|
565
|
+
return this.mix({
|
|
566
|
+
r: 0,
|
|
567
|
+
g: 0,
|
|
568
|
+
b: 0,
|
|
569
|
+
a: 1
|
|
570
|
+
}, amount);
|
|
571
|
+
}
|
|
572
|
+
onBackground(background) {
|
|
573
|
+
const bg = this._c(background);
|
|
574
|
+
const alpha = this.a + bg.a * (1 - this.a);
|
|
575
|
+
const calc = key => {
|
|
576
|
+
return round((this[key] * this.a + bg[key] * bg.a * (1 - this.a)) / alpha);
|
|
577
|
+
};
|
|
578
|
+
return this._c({
|
|
579
|
+
r: calc('r'),
|
|
580
|
+
g: calc('g'),
|
|
581
|
+
b: calc('b'),
|
|
582
|
+
a: alpha
|
|
583
|
+
});
|
|
584
|
+
}
|
|
585
|
+
|
|
586
|
+
// ======================= Status =======================
|
|
587
|
+
isDark() {
|
|
588
|
+
return this.getBrightness() < 128;
|
|
589
|
+
}
|
|
590
|
+
isLight() {
|
|
591
|
+
return this.getBrightness() >= 128;
|
|
592
|
+
}
|
|
593
|
+
|
|
594
|
+
// ======================== MISC ========================
|
|
595
|
+
equals(other) {
|
|
596
|
+
return this.r === other.r && this.g === other.g && this.b === other.b && this.a === other.a;
|
|
597
|
+
}
|
|
598
|
+
clone() {
|
|
599
|
+
return this._c(this);
|
|
600
|
+
}
|
|
601
|
+
|
|
602
|
+
// ======================= Format =======================
|
|
603
|
+
toHexString() {
|
|
604
|
+
let hex = '#';
|
|
605
|
+
const rHex = (this.r || 0).toString(16);
|
|
606
|
+
hex += rHex.length === 2 ? rHex : '0' + rHex;
|
|
607
|
+
const gHex = (this.g || 0).toString(16);
|
|
608
|
+
hex += gHex.length === 2 ? gHex : '0' + gHex;
|
|
609
|
+
const bHex = (this.b || 0).toString(16);
|
|
610
|
+
hex += bHex.length === 2 ? bHex : '0' + bHex;
|
|
611
|
+
if (typeof this.a === 'number' && this.a >= 0 && this.a < 1) {
|
|
612
|
+
const aHex = round(this.a * 255).toString(16);
|
|
613
|
+
hex += aHex.length === 2 ? aHex : '0' + aHex;
|
|
726
614
|
}
|
|
727
|
-
|
|
615
|
+
return hex;
|
|
616
|
+
}
|
|
617
|
+
|
|
618
|
+
/** CSS support color pattern */
|
|
619
|
+
toHsl() {
|
|
728
620
|
return {
|
|
729
|
-
|
|
730
|
-
|
|
731
|
-
|
|
732
|
-
|
|
733
|
-
b: Math.min(255, Math.max(rgb.b, 0)),
|
|
734
|
-
a: a,
|
|
621
|
+
h: this.getHue(),
|
|
622
|
+
s: this.getSaturation(),
|
|
623
|
+
l: this.getLightness(),
|
|
624
|
+
a: this.a
|
|
735
625
|
};
|
|
736
|
-
}
|
|
737
|
-
|
|
738
|
-
|
|
739
|
-
|
|
740
|
-
|
|
741
|
-
|
|
742
|
-
|
|
743
|
-
|
|
744
|
-
|
|
745
|
-
|
|
746
|
-
|
|
747
|
-
|
|
748
|
-
|
|
749
|
-
|
|
750
|
-
|
|
751
|
-
|
|
752
|
-
|
|
753
|
-
|
|
754
|
-
|
|
755
|
-
|
|
756
|
-
|
|
757
|
-
|
|
758
|
-
|
|
759
|
-
|
|
760
|
-
|
|
761
|
-
|
|
762
|
-
|
|
763
|
-
|
|
764
|
-
|
|
765
|
-
|
|
766
|
-
|
|
767
|
-
|
|
768
|
-
|
|
769
|
-
|
|
770
|
-
|
|
771
|
-
|
|
772
|
-
|
|
773
|
-
|
|
774
|
-
|
|
775
|
-
|
|
776
|
-
|
|
777
|
-
|
|
778
|
-
|
|
779
|
-
|
|
780
|
-
|
|
781
|
-
|
|
782
|
-
|
|
783
|
-
if (match) {
|
|
784
|
-
return { r: match[1], g: match[2], b: match[3] };
|
|
785
|
-
}
|
|
786
|
-
match = matchers.rgba.exec(color);
|
|
787
|
-
if (match) {
|
|
788
|
-
return { r: match[1], g: match[2], b: match[3], a: match[4] };
|
|
789
|
-
}
|
|
790
|
-
match = matchers.hsl.exec(color);
|
|
791
|
-
if (match) {
|
|
792
|
-
return { h: match[1], s: match[2], l: match[3] };
|
|
626
|
+
}
|
|
627
|
+
|
|
628
|
+
/** CSS support color pattern */
|
|
629
|
+
toHslString() {
|
|
630
|
+
const h = this.getHue();
|
|
631
|
+
const s = round(this.getSaturation() * 100);
|
|
632
|
+
const l = round(this.getLightness() * 100);
|
|
633
|
+
return this.a !== 1 ? `hsla(${h},${s}%,${l}%,${this.a})` : `hsl(${h},${s}%,${l}%)`;
|
|
634
|
+
}
|
|
635
|
+
|
|
636
|
+
/** Same as toHsb */
|
|
637
|
+
toHsv() {
|
|
638
|
+
return {
|
|
639
|
+
h: this.getHue(),
|
|
640
|
+
s: this.getSaturation(),
|
|
641
|
+
v: this.getValue(),
|
|
642
|
+
a: this.a
|
|
643
|
+
};
|
|
644
|
+
}
|
|
645
|
+
toRgb() {
|
|
646
|
+
return {
|
|
647
|
+
r: this.r,
|
|
648
|
+
g: this.g,
|
|
649
|
+
b: this.b,
|
|
650
|
+
a: this.a
|
|
651
|
+
};
|
|
652
|
+
}
|
|
653
|
+
toRgbString() {
|
|
654
|
+
return this.a !== 1 ? `rgba(${this.r},${this.g},${this.b},${this.a})` : `rgb(${this.r},${this.g},${this.b})`;
|
|
655
|
+
}
|
|
656
|
+
toString() {
|
|
657
|
+
return this.toRgbString();
|
|
658
|
+
}
|
|
659
|
+
|
|
660
|
+
// ====================== Privates ======================
|
|
661
|
+
/** Return a new FastColor object with one channel changed */
|
|
662
|
+
_sc(rgb, value, max) {
|
|
663
|
+
const clone = this.clone();
|
|
664
|
+
clone[rgb] = limitRange(value, max);
|
|
665
|
+
return clone;
|
|
666
|
+
}
|
|
667
|
+
_c(input) {
|
|
668
|
+
return new this.constructor(input);
|
|
669
|
+
}
|
|
670
|
+
getMax() {
|
|
671
|
+
if (typeof this._max === 'undefined') {
|
|
672
|
+
this._max = Math.max(this.r, this.g, this.b);
|
|
793
673
|
}
|
|
794
|
-
|
|
795
|
-
|
|
796
|
-
|
|
674
|
+
return this._max;
|
|
675
|
+
}
|
|
676
|
+
getMin() {
|
|
677
|
+
if (typeof this._min === 'undefined') {
|
|
678
|
+
this._min = Math.min(this.r, this.g, this.b);
|
|
797
679
|
}
|
|
798
|
-
|
|
799
|
-
|
|
800
|
-
|
|
680
|
+
return this._min;
|
|
681
|
+
}
|
|
682
|
+
fromHexString(trimStr) {
|
|
683
|
+
const withoutPrefix = trimStr.replace('#', '');
|
|
684
|
+
function connectNum(index1, index2) {
|
|
685
|
+
return parseInt(withoutPrefix[index1] + withoutPrefix[index2 || index1], 16);
|
|
801
686
|
}
|
|
802
|
-
|
|
803
|
-
|
|
804
|
-
|
|
687
|
+
if (withoutPrefix.length < 6) {
|
|
688
|
+
// #rgb or #rgba
|
|
689
|
+
this.r = connectNum(0);
|
|
690
|
+
this.g = connectNum(1);
|
|
691
|
+
this.b = connectNum(2);
|
|
692
|
+
this.a = withoutPrefix[3] ? connectNum(3) / 255 : 1;
|
|
693
|
+
} else {
|
|
694
|
+
// #rrggbb or #rrggbbaa
|
|
695
|
+
this.r = connectNum(0, 1);
|
|
696
|
+
this.g = connectNum(2, 3);
|
|
697
|
+
this.b = connectNum(4, 5);
|
|
698
|
+
this.a = withoutPrefix[6] ? connectNum(6, 7) / 255 : 1;
|
|
805
699
|
}
|
|
806
|
-
|
|
807
|
-
|
|
808
|
-
|
|
809
|
-
|
|
810
|
-
|
|
811
|
-
|
|
812
|
-
|
|
813
|
-
|
|
814
|
-
|
|
700
|
+
}
|
|
701
|
+
fromHsl({
|
|
702
|
+
h,
|
|
703
|
+
s,
|
|
704
|
+
l,
|
|
705
|
+
a
|
|
706
|
+
}) {
|
|
707
|
+
this._h = h % 360;
|
|
708
|
+
this._s = s;
|
|
709
|
+
this._l = l;
|
|
710
|
+
this.a = typeof a === 'number' ? a : 1;
|
|
711
|
+
if (s <= 0) {
|
|
712
|
+
const rgb = round(l * 255);
|
|
713
|
+
this.r = rgb;
|
|
714
|
+
this.g = rgb;
|
|
715
|
+
this.b = rgb;
|
|
815
716
|
}
|
|
816
|
-
|
|
817
|
-
|
|
818
|
-
|
|
819
|
-
|
|
820
|
-
|
|
821
|
-
|
|
822
|
-
|
|
823
|
-
|
|
717
|
+
let r = 0,
|
|
718
|
+
g = 0,
|
|
719
|
+
b = 0;
|
|
720
|
+
const huePrime = h / 60;
|
|
721
|
+
const chroma = (1 - Math.abs(2 * l - 1)) * s;
|
|
722
|
+
const secondComponent = chroma * (1 - Math.abs(huePrime % 2 - 1));
|
|
723
|
+
if (huePrime >= 0 && huePrime < 1) {
|
|
724
|
+
r = chroma;
|
|
725
|
+
g = secondComponent;
|
|
726
|
+
} else if (huePrime >= 1 && huePrime < 2) {
|
|
727
|
+
r = secondComponent;
|
|
728
|
+
g = chroma;
|
|
729
|
+
} else if (huePrime >= 2 && huePrime < 3) {
|
|
730
|
+
g = chroma;
|
|
731
|
+
b = secondComponent;
|
|
732
|
+
} else if (huePrime >= 3 && huePrime < 4) {
|
|
733
|
+
g = secondComponent;
|
|
734
|
+
b = chroma;
|
|
735
|
+
} else if (huePrime >= 4 && huePrime < 5) {
|
|
736
|
+
r = secondComponent;
|
|
737
|
+
b = chroma;
|
|
738
|
+
} else if (huePrime >= 5 && huePrime < 6) {
|
|
739
|
+
r = chroma;
|
|
740
|
+
b = secondComponent;
|
|
824
741
|
}
|
|
825
|
-
|
|
826
|
-
|
|
827
|
-
|
|
828
|
-
|
|
829
|
-
|
|
830
|
-
|
|
831
|
-
|
|
832
|
-
|
|
833
|
-
|
|
742
|
+
const lightnessModification = l - chroma / 2;
|
|
743
|
+
this.r = round((r + lightnessModification) * 255);
|
|
744
|
+
this.g = round((g + lightnessModification) * 255);
|
|
745
|
+
this.b = round((b + lightnessModification) * 255);
|
|
746
|
+
}
|
|
747
|
+
fromHsv({
|
|
748
|
+
h,
|
|
749
|
+
s,
|
|
750
|
+
v,
|
|
751
|
+
a
|
|
752
|
+
}) {
|
|
753
|
+
this._h = h % 360;
|
|
754
|
+
this._s = s;
|
|
755
|
+
this._v = v;
|
|
756
|
+
this.a = typeof a === 'number' ? a : 1;
|
|
757
|
+
const vv = round(v * 255);
|
|
758
|
+
this.r = vv;
|
|
759
|
+
this.g = vv;
|
|
760
|
+
this.b = vv;
|
|
761
|
+
if (s <= 0) {
|
|
762
|
+
return;
|
|
834
763
|
}
|
|
835
|
-
|
|
836
|
-
|
|
837
|
-
|
|
838
|
-
|
|
839
|
-
|
|
840
|
-
|
|
841
|
-
|
|
842
|
-
|
|
764
|
+
const hh = h / 60;
|
|
765
|
+
const i = Math.floor(hh);
|
|
766
|
+
const ff = hh - i;
|
|
767
|
+
const p = round(v * (1.0 - s) * 255);
|
|
768
|
+
const q = round(v * (1.0 - s * ff) * 255);
|
|
769
|
+
const t = round(v * (1.0 - s * (1.0 - ff)) * 255);
|
|
770
|
+
switch (i) {
|
|
771
|
+
case 0:
|
|
772
|
+
this.g = t;
|
|
773
|
+
this.b = p;
|
|
774
|
+
break;
|
|
775
|
+
case 1:
|
|
776
|
+
this.r = q;
|
|
777
|
+
this.b = p;
|
|
778
|
+
break;
|
|
779
|
+
case 2:
|
|
780
|
+
this.r = p;
|
|
781
|
+
this.b = t;
|
|
782
|
+
break;
|
|
783
|
+
case 3:
|
|
784
|
+
this.r = p;
|
|
785
|
+
this.g = q;
|
|
786
|
+
break;
|
|
787
|
+
case 4:
|
|
788
|
+
this.r = t;
|
|
789
|
+
this.g = p;
|
|
790
|
+
break;
|
|
791
|
+
case 5:
|
|
792
|
+
default:
|
|
793
|
+
this.g = p;
|
|
794
|
+
this.b = q;
|
|
795
|
+
break;
|
|
843
796
|
}
|
|
844
|
-
|
|
845
|
-
|
|
846
|
-
|
|
847
|
-
|
|
848
|
-
|
|
849
|
-
|
|
850
|
-
|
|
851
|
-
|
|
797
|
+
}
|
|
798
|
+
fromHsvString(trimStr) {
|
|
799
|
+
const cells = splitColorStr(trimStr, parseHSVorHSL);
|
|
800
|
+
this.fromHsv({
|
|
801
|
+
h: cells[0],
|
|
802
|
+
s: cells[1],
|
|
803
|
+
v: cells[2],
|
|
804
|
+
a: cells[3]
|
|
805
|
+
});
|
|
806
|
+
}
|
|
807
|
+
fromHslString(trimStr) {
|
|
808
|
+
const cells = splitColorStr(trimStr, parseHSVorHSL);
|
|
809
|
+
this.fromHsl({
|
|
810
|
+
h: cells[0],
|
|
811
|
+
s: cells[1],
|
|
812
|
+
l: cells[2],
|
|
813
|
+
a: cells[3]
|
|
814
|
+
});
|
|
815
|
+
}
|
|
816
|
+
fromRgbString(trimStr) {
|
|
817
|
+
const cells = splitColorStr(trimStr, (num, txt) =>
|
|
818
|
+
// Convert percentage to number. e.g. 50% -> 128
|
|
819
|
+
txt.includes('%') ? round(num / 100 * 255) : num);
|
|
820
|
+
this.r = cells[0];
|
|
821
|
+
this.g = cells[1];
|
|
822
|
+
this.b = cells[2];
|
|
823
|
+
this.a = cells[3];
|
|
824
|
+
}
|
|
852
825
|
}
|
|
853
826
|
|
|
854
827
|
var hueStep = 2; // 色相阶梯
|
|
@@ -858,73 +831,39 @@ var brightnessStep1 = 0.05; // 亮度阶梯,浅色部分
|
|
|
858
831
|
var brightnessStep2 = 0.15; // 亮度阶梯,深色部分
|
|
859
832
|
var lightColorCount = 5; // 浅色数量,主色上
|
|
860
833
|
var darkColorCount = 4; // 深色数量,主色下
|
|
834
|
+
|
|
861
835
|
// 暗色主题颜色映射关系表
|
|
862
836
|
var darkColorMap = [{
|
|
863
837
|
index: 7,
|
|
864
|
-
|
|
838
|
+
amount: 15
|
|
865
839
|
}, {
|
|
866
840
|
index: 6,
|
|
867
|
-
|
|
841
|
+
amount: 25
|
|
868
842
|
}, {
|
|
869
843
|
index: 5,
|
|
870
|
-
|
|
844
|
+
amount: 30
|
|
871
845
|
}, {
|
|
872
846
|
index: 5,
|
|
873
|
-
|
|
847
|
+
amount: 45
|
|
874
848
|
}, {
|
|
875
849
|
index: 5,
|
|
876
|
-
|
|
850
|
+
amount: 65
|
|
877
851
|
}, {
|
|
878
852
|
index: 5,
|
|
879
|
-
|
|
853
|
+
amount: 85
|
|
880
854
|
}, {
|
|
881
855
|
index: 4,
|
|
882
|
-
|
|
856
|
+
amount: 90
|
|
883
857
|
}, {
|
|
884
858
|
index: 3,
|
|
885
|
-
|
|
859
|
+
amount: 95
|
|
886
860
|
}, {
|
|
887
861
|
index: 2,
|
|
888
|
-
|
|
862
|
+
amount: 97
|
|
889
863
|
}, {
|
|
890
864
|
index: 1,
|
|
891
|
-
|
|
865
|
+
amount: 98
|
|
892
866
|
}];
|
|
893
|
-
// Wrapper function ported from TinyColor.prototype.toHsv
|
|
894
|
-
// Keep it here because of `hsv.h * 360`
|
|
895
|
-
function toHsv(_ref) {
|
|
896
|
-
var r = _ref.r,
|
|
897
|
-
g = _ref.g,
|
|
898
|
-
b = _ref.b;
|
|
899
|
-
var hsv = rgbToHsv(r, g, b);
|
|
900
|
-
return {
|
|
901
|
-
h: hsv.h * 360,
|
|
902
|
-
s: hsv.s,
|
|
903
|
-
v: hsv.v
|
|
904
|
-
};
|
|
905
|
-
}
|
|
906
|
-
|
|
907
|
-
// Wrapper function ported from TinyColor.prototype.toHexString
|
|
908
|
-
// Keep it here because of the prefix `#`
|
|
909
|
-
function toHex(_ref2) {
|
|
910
|
-
var r = _ref2.r,
|
|
911
|
-
g = _ref2.g,
|
|
912
|
-
b = _ref2.b;
|
|
913
|
-
return "#".concat(rgbToHex(r, g, b, false));
|
|
914
|
-
}
|
|
915
|
-
|
|
916
|
-
// Wrapper function ported from TinyColor.prototype.mix, not treeshakable.
|
|
917
|
-
// Amount in range [0, 1]
|
|
918
|
-
// Assume color1 & color2 has no alpha, since the following src code did so.
|
|
919
|
-
function mix(rgb1, rgb2, amount) {
|
|
920
|
-
var p = amount / 100;
|
|
921
|
-
var rgb = {
|
|
922
|
-
r: (rgb2.r - rgb1.r) * p + rgb1.r,
|
|
923
|
-
g: (rgb2.g - rgb1.g) * p + rgb1.g,
|
|
924
|
-
b: (rgb2.b - rgb1.b) * p + rgb1.b
|
|
925
|
-
};
|
|
926
|
-
return rgb;
|
|
927
|
-
}
|
|
928
867
|
function getHue(hsv, i, light) {
|
|
929
868
|
var hue;
|
|
930
869
|
// 根据色相不同,色相转向不同
|
|
@@ -964,7 +903,7 @@ function getSaturation(hsv, i, light) {
|
|
|
964
903
|
if (saturation < 0.06) {
|
|
965
904
|
saturation = 0.06;
|
|
966
905
|
}
|
|
967
|
-
return
|
|
906
|
+
return Math.round(saturation * 100) / 100;
|
|
968
907
|
}
|
|
969
908
|
function getValue(hsv, i, light) {
|
|
970
909
|
var value;
|
|
@@ -973,45 +912,44 @@ function getValue(hsv, i, light) {
|
|
|
973
912
|
} else {
|
|
974
913
|
value = hsv.v - brightnessStep2 * i;
|
|
975
914
|
}
|
|
976
|
-
|
|
977
|
-
|
|
978
|
-
|
|
979
|
-
return Number(value.toFixed(2));
|
|
915
|
+
// Clamp value between 0 and 1
|
|
916
|
+
value = Math.max(0, Math.min(1, value));
|
|
917
|
+
return Math.round(value * 100) / 100;
|
|
980
918
|
}
|
|
981
919
|
function generate$1(color) {
|
|
982
920
|
var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
983
921
|
var patterns = [];
|
|
984
|
-
var pColor =
|
|
922
|
+
var pColor = new FastColor(color);
|
|
923
|
+
var hsv = pColor.toHsv();
|
|
985
924
|
for (var i = lightColorCount; i > 0; i -= 1) {
|
|
986
|
-
var
|
|
987
|
-
var colorString = toHex(inputToRGB({
|
|
925
|
+
var c = new FastColor({
|
|
988
926
|
h: getHue(hsv, i, true),
|
|
989
927
|
s: getSaturation(hsv, i, true),
|
|
990
928
|
v: getValue(hsv, i, true)
|
|
991
|
-
})
|
|
992
|
-
patterns.push(
|
|
929
|
+
});
|
|
930
|
+
patterns.push(c);
|
|
993
931
|
}
|
|
994
|
-
patterns.push(
|
|
932
|
+
patterns.push(pColor);
|
|
995
933
|
for (var _i = 1; _i <= darkColorCount; _i += 1) {
|
|
996
|
-
var
|
|
997
|
-
|
|
998
|
-
|
|
999
|
-
|
|
1000
|
-
|
|
1001
|
-
|
|
1002
|
-
patterns.push(_colorString);
|
|
934
|
+
var _c = new FastColor({
|
|
935
|
+
h: getHue(hsv, _i),
|
|
936
|
+
s: getSaturation(hsv, _i),
|
|
937
|
+
v: getValue(hsv, _i)
|
|
938
|
+
});
|
|
939
|
+
patterns.push(_c);
|
|
1003
940
|
}
|
|
1004
941
|
|
|
1005
942
|
// dark theme patterns
|
|
1006
943
|
if (opts.theme === 'dark') {
|
|
1007
|
-
return darkColorMap.map(function (
|
|
1008
|
-
var index =
|
|
1009
|
-
|
|
1010
|
-
|
|
1011
|
-
return darkColorString;
|
|
944
|
+
return darkColorMap.map(function (_ref) {
|
|
945
|
+
var index = _ref.index,
|
|
946
|
+
amount = _ref.amount;
|
|
947
|
+
return new FastColor(opts.backgroundColor || '#141414').mix(patterns[index], amount).toHexString();
|
|
1012
948
|
});
|
|
1013
949
|
}
|
|
1014
|
-
return patterns
|
|
950
|
+
return patterns.map(function (c) {
|
|
951
|
+
return c.toHexString();
|
|
952
|
+
});
|
|
1015
953
|
}
|
|
1016
954
|
|
|
1017
955
|
// Generated by script. Do NOT modify!
|
|
@@ -1498,11 +1436,29 @@ var BankOutlined = function BankOutlined(props, ref) {
|
|
|
1498
1436
|
};
|
|
1499
1437
|
|
|
1500
1438
|
/** */
|
|
1501
|
-
var RefIcon$
|
|
1439
|
+
var RefIcon$4 = /*#__PURE__*/React.forwardRef(BankOutlined);
|
|
1440
|
+
if (process.env.NODE_ENV !== 'production') {
|
|
1441
|
+
RefIcon$4.displayName = 'BankOutlined';
|
|
1442
|
+
}
|
|
1443
|
+
var BankOutlined$1 = RefIcon$4;
|
|
1444
|
+
|
|
1445
|
+
// This icon file is generated automatically.
|
|
1446
|
+
var CheckCircleFilled$2 = { "icon": { "tag": "svg", "attrs": { "viewBox": "64 64 896 896", "focusable": "false" }, "children": [{ "tag": "path", "attrs": { "d": "M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm193.5 301.7l-210.6 292a31.8 31.8 0 01-51.7 0L318.5 484.9c-3.8-5.3 0-12.7 6.5-12.7h46.9c10.2 0 19.9 4.9 25.9 13.3l71.2 98.8 157.2-218c6-8.3 15.6-13.3 25.9-13.3H699c6.5 0 10.3 7.4 6.5 12.7z" } }] }, "name": "check-circle", "theme": "filled" };
|
|
1447
|
+
var CheckCircleFilledSvg = CheckCircleFilled$2;
|
|
1448
|
+
|
|
1449
|
+
var CheckCircleFilled = function CheckCircleFilled(props, ref) {
|
|
1450
|
+
return /*#__PURE__*/React.createElement(AntdIcon, _extends({}, props, {
|
|
1451
|
+
ref: ref,
|
|
1452
|
+
icon: CheckCircleFilledSvg
|
|
1453
|
+
}));
|
|
1454
|
+
};
|
|
1455
|
+
|
|
1456
|
+
/** */
|
|
1457
|
+
var RefIcon$3 = /*#__PURE__*/React.forwardRef(CheckCircleFilled);
|
|
1502
1458
|
if (process.env.NODE_ENV !== 'production') {
|
|
1503
|
-
RefIcon$3.displayName = '
|
|
1459
|
+
RefIcon$3.displayName = 'CheckCircleFilled';
|
|
1504
1460
|
}
|
|
1505
|
-
var
|
|
1461
|
+
var CheckCircleFilled$1 = RefIcon$3;
|
|
1506
1462
|
|
|
1507
1463
|
// This icon file is generated automatically.
|
|
1508
1464
|
var CloseOutlined$2 = { "icon": { "tag": "svg", "attrs": { "fill-rule": "evenodd", "viewBox": "64 64 896 896", "focusable": "false" }, "children": [{ "tag": "path", "attrs": { "d": "M799.86 166.31c.02 0 .04.02.08.06l57.69 57.7c.04.03.05.05.06.08a.12.12 0 010 .06c0 .03-.02.05-.06.09L569.93 512l287.7 287.7c.04.04.05.06.06.09a.12.12 0 010 .07c0 .02-.02.04-.06.08l-57.7 57.69c-.03.04-.05.05-.07.06a.12.12 0 01-.07 0c-.03 0-.05-.02-.09-.06L512 569.93l-287.7 287.7c-.04.04-.06.05-.09.06a.12.12 0 01-.07 0c-.02 0-.04-.02-.08-.06l-57.69-57.7c-.04-.03-.05-.05-.06-.07a.12.12 0 010-.07c0-.03.02-.05.06-.09L454.07 512l-287.7-287.7c-.04-.04-.05-.06-.06-.09a.12.12 0 010-.07c0-.02.02-.04.06-.08l57.7-57.69c.03-.04.05-.05.07-.06a.12.12 0 01.07 0c.03 0 .05.02.09.06L512 454.07l287.7-287.7c.04-.04.06-.05.09-.06a.12.12 0 01.07 0z" } }] }, "name": "close", "theme": "outlined" };
|
|
@@ -1565,14 +1521,14 @@ var BrandContext = createContext({
|
|
|
1565
1521
|
topNavImageUrl: DEFAULT_TOP_NAV_IMAGE_URL,
|
|
1566
1522
|
});
|
|
1567
1523
|
|
|
1568
|
-
var MUTATION$
|
|
1524
|
+
var MUTATION$8 = "{\n entityBranding {\n accentColor\n brandColor\n topNavImageUrl\n }\n }";
|
|
1569
1525
|
var getBranding = function (_a) {
|
|
1570
1526
|
var token = _a.token, subdomain = _a.subdomain;
|
|
1571
1527
|
return __awaiter(void 0, void 0, void 0, function () {
|
|
1572
1528
|
var response;
|
|
1573
1529
|
return __generator(this, function (_b) {
|
|
1574
1530
|
switch (_b.label) {
|
|
1575
|
-
case 0: return [4 /*yield*/, gqlRequest({ query: MUTATION$
|
|
1531
|
+
case 0: return [4 /*yield*/, gqlRequest({ query: MUTATION$8, token: token, subdomain: subdomain })];
|
|
1576
1532
|
case 1:
|
|
1577
1533
|
response = _b.sent();
|
|
1578
1534
|
return [2 /*return*/, response === null || response === void 0 ? void 0 : response.entityBranding];
|
|
@@ -1650,10 +1606,10 @@ var BunnyContext = createContext({});
|
|
|
1650
1606
|
var queryClient$1 = new QueryClient();
|
|
1651
1607
|
// Every component shares similar props and functionality, which this wrapper handles.
|
|
1652
1608
|
function BunnyProvider(_a) {
|
|
1653
|
-
var children = _a.children, token = _a.token, subdomain = _a.subdomain, window = _a.window, accountId = _a.accountId;
|
|
1609
|
+
var children = _a.children, token = _a.token, subdomain = _a.subdomain, window = _a.window, accountId = _a.accountId, _b = _a.darkMode, darkMode = _b === void 0 ? false : _b;
|
|
1654
1610
|
var graphQLClient = createGraphQLClient(subdomain || "", window, token);
|
|
1655
1611
|
var isMobile = useIsMobile(window);
|
|
1656
|
-
var
|
|
1612
|
+
var _c = useState(undefined), branding = _c[0], setBranding = _c[1];
|
|
1657
1613
|
// ====== START - Copied straight from PageContainer.tsx ========
|
|
1658
1614
|
var entityBranding = useMemo(function () {
|
|
1659
1615
|
var _a;
|
|
@@ -1683,16 +1639,36 @@ function BunnyProvider(_a) {
|
|
|
1683
1639
|
document.getElementsByTagName("head")[0].removeChild(script);
|
|
1684
1640
|
};
|
|
1685
1641
|
}, []);
|
|
1686
|
-
return (jsx(BunnyContext.Provider, __assign({ value: {
|
|
1642
|
+
return (jsx(BunnyContext.Provider, __assign({ value: {
|
|
1643
|
+
subdomain: subdomain,
|
|
1644
|
+
graphQLClient: graphQLClient,
|
|
1645
|
+
window: window,
|
|
1646
|
+
token: token,
|
|
1647
|
+
accountId: accountId,
|
|
1648
|
+
darkMode: darkMode,
|
|
1649
|
+
} }, { children: jsx(QueryClientProvider, __assign({ client: queryClient$1 }, { children: jsx(RecoilRoot, { children: jsx(BrandContext.Provider, __assign({ value: entityBranding }, { children: jsx(ConfigProvider, __assign({ theme: {
|
|
1650
|
+
algorithm: darkMode
|
|
1651
|
+
? theme.darkAlgorithm
|
|
1652
|
+
: theme.defaultAlgorithm,
|
|
1687
1653
|
token: {
|
|
1688
1654
|
borderRadius: 4,
|
|
1689
1655
|
colorPrimary: entityBranding.brandColor,
|
|
1690
1656
|
colorLink: entityBranding.brandColor,
|
|
1691
1657
|
colorLinkActive: entityBranding.brandColor,
|
|
1692
1658
|
colorLinkHover: entityBranding.brandColor,
|
|
1693
|
-
fontFamily:
|
|
1659
|
+
fontFamily: "Inter",
|
|
1694
1660
|
colorBorder: INPUT_BORDER_COLOR,
|
|
1695
1661
|
},
|
|
1662
|
+
components: {
|
|
1663
|
+
Drawer: {
|
|
1664
|
+
colorBgElevated: darkMode
|
|
1665
|
+
? "var(--row-background-dark)"
|
|
1666
|
+
: SLATE_50,
|
|
1667
|
+
},
|
|
1668
|
+
Divider: {
|
|
1669
|
+
colorSplit: darkMode ? SLATE_400 : SLATE_200,
|
|
1670
|
+
},
|
|
1671
|
+
},
|
|
1696
1672
|
} }, { children: jsx(SecondaryWrapper, __assign({ setBranding: setBranding }, { children: children })) })) })) }) })) })));
|
|
1697
1673
|
}
|
|
1698
1674
|
function SecondaryWrapper(_a) {
|
|
@@ -1702,10 +1678,10 @@ function SecondaryWrapper(_a) {
|
|
|
1702
1678
|
queryKey: QueryKeyFactory.default.brandingKey,
|
|
1703
1679
|
queryFn: function () { return getBranding({ token: token, subdomain: subdomain }); },
|
|
1704
1680
|
}).data;
|
|
1705
|
-
useQuery({
|
|
1681
|
+
var _c = useQuery({
|
|
1706
1682
|
queryKey: QueryKeyFactory.default.currentUserKey,
|
|
1707
|
-
queryFn: function () { return getCurrentUserData({ token: token
|
|
1708
|
-
});
|
|
1683
|
+
queryFn: function () { return getCurrentUserData({ token: token }); },
|
|
1684
|
+
}); _c.data; _c.isLoading;
|
|
1709
1685
|
useEffect(function () {
|
|
1710
1686
|
if (brandingData) {
|
|
1711
1687
|
setBranding(brandingData);
|
|
@@ -1720,11 +1696,11 @@ var InvoiceQuoteView = function (_a) {
|
|
|
1720
1696
|
var downloadFile = useDownloadFile(formattedInvoice === null || formattedInvoice === void 0 ? void 0 : formattedInvoice.id, onDownloadError);
|
|
1721
1697
|
var secondaryColor = useContext(BrandContext).secondaryColor;
|
|
1722
1698
|
var _b = useContext(BunnyContext), token = _b.token, subdomain = _b.subdomain;
|
|
1723
|
-
return (jsxs("div", __assign({ className: "flex flex-col w-full grow ".concat(isMobile ? "overflow-hidden" : "") }, { children: [formattedInvoice
|
|
1699
|
+
return (jsxs("div", __assign({ className: "flex flex-col w-full grow ".concat(isMobile ? "overflow-hidden" : "") }, { children: [formattedInvoice ? (jsxs("div", __assign({ className: "flex justify-between items-center pb-4 ".concat(isMobile ? "shadow-padding-x" : ""), id: "acceptance" }, { children: [jsx("div", { children: onBackButtonClick ? (jsx(Button, __assign({ className: "text-xs pl-0", onClick: onBackButtonClick, style: {
|
|
1724
1700
|
color: secondaryColor,
|
|
1725
|
-
}, type: "link" }, { children: backButtonName || "Back" }))) }), jsx(Button, __assign({ icon: jsx(DownloadOutlined$1, {}), onClick: function () {
|
|
1701
|
+
}, type: "link" }, { children: backButtonName || "Back" }))) : null }), jsx(Button, __assign({ icon: jsx(DownloadOutlined$1, {}), onClick: function () {
|
|
1726
1702
|
return downloadFile(subdomain + "/api/pdf/invoice/" + formattedInvoice.id, token);
|
|
1727
|
-
} }, { children: "Download" }))] }))), isMobile ? (jsxs(MarkupContainer, __assign({ className: "flex flex-col gap-4 grow w-full shadow-padding-xb overflow-auto" }, { children: [jsx(Markup, { content: html }), children] }))) : (jsxs(MarkupContainer, __assign({ className: "flex flex-col gap-4 p-2 w-full bg-white shadow-md rounded-md", style: {
|
|
1703
|
+
} }, { children: "Download" }))] }))) : null, isMobile ? (jsxs(MarkupContainer, __assign({ className: "flex flex-col gap-4 grow w-full shadow-padding-xb overflow-auto" }, { children: [jsx(Markup, { content: html }), children] }))) : (jsxs(MarkupContainer, __assign({ className: "flex flex-col gap-4 p-2 w-full bg-white shadow-md rounded-md", style: {
|
|
1728
1704
|
minWidth: "750px",
|
|
1729
1705
|
} }, { children: [jsx(Markup, { content: html }), children] })))] })));
|
|
1730
1706
|
};
|
|
@@ -1757,7 +1733,7 @@ function styleInject(css, ref) {
|
|
|
1757
1733
|
}
|
|
1758
1734
|
}
|
|
1759
1735
|
|
|
1760
|
-
var css_248z = ".ant-tag {\n border: none;\n border-radius: 14px;\n font-family: Inter, system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Helvetica Neue, Arial, Noto Sans, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol, Noto Color Emoji;\n font-weight: 500;\n white-space: nowrap;\n margin: 0;\n}\n.ant-tag-blue {\n color: #3b82f6 !important;\n background: #bfdbfe !important;\n}\n.ant-tag-green {\n color: #059669 !important;\n background: #a7f3d0 !important;\n}\n.ant-tag-red {\n color: #ef4444 !important;\n background: #fecaca !important;\n}\n.ant-tag-orange {\n color: #f97316 !important;\n background: #fed7aa !important;\n}\n.ant-tag-yellow {\n color: #f59e0b !important;\n background: #fde68a !important;\n}\n.ant-tag-purple {\n color: #8b5cf6 !important;\n background: #ddd6fe !important;\n}\n.ant-tag-black {\n color: white !important;\n background: black !important;\n}\n.ant-popover {\n z-index: 1050;\n}\n.ant-popover-inner-content {\n display: flex;\n flex-direction: column;\n gap: 0.5rem;\n max-width: 300px;\n}\n.ant-popover-message-title {\n padding: 0;\n text-align: center;\n font-size: 1rem;\n}\n.ant-popover-buttons {\n display: flex;\n align-items: center;\n justify-content: center;\n}\n.ant-btn-primary:disabled {\n background: #eef0f2 !important;\n color: rgba(0, 0, 0, 0.25) !important;\n border: none;\n}\n.ant-btn {\n font-family: Inter, system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Helvetica Neue, Arial, Noto Sans, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol, Noto Color Emoji;\n font-weight: 500;\n box-shadow: none;\n text-shadow: none;\n outline: none !important;\n line-height: 1;\n font-size: 0.875rem;\n font-weight: normal;\n}\n.ant-btn > span {\n font-family: Inter, system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Helvetica Neue, Arial, Noto Sans, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol, Noto Color Emoji;\n}\n.ant-btn-lg {\n height: 44px !important;\n}\n.ant-btn-default:disabled {\n border-color: rgba(113, 125, 148, 0.2) !important;\n}\n.ant-btn-link {\n border: none !important;\n font-family: Inter, system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Helvetica Neue, Arial, Noto Sans, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol, Noto Color Emoji;\n}\n.ant-btn-link > span {\n font-family: Inter, system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Helvetica Neue, Arial, Noto Sans, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol, Noto Color Emoji;\n}\n.ant-btn-link:disabled {\n background-color: transparent !important;\n color: #717d94 !important;\n}\n.ant-btn-link:disabled:hover {\n background-color: transparent !important;\n}\n.ant-input,\n.ant-picker,\n.ant-select,\n.ant-input-affix-wrapper {\n font-size: 0.875rem;\n color: #232323;\n background: white;\n box-shadow: none !important;\n border: 1px solid #e2e8f0;\n}\n.ant-input:not(:focus) {\n border-color: #e2e8f0 !important;\n}\n.ant-input-affix-wrapper:not(.ant-input-affix-wrapper-focused) .ant-input-prefix {\n color: rgba(0, 0, 0, 0.25) !important;\n}\n.ant-input-affix-wrapper .ant-input-prefix {\n transition: color 0.3s;\n}\n.ant-select-selector {\n box-shadow: none !important;\n background-color: transparent !important;\n border: none !important;\n}\n.ant-form-item-label {\n text-transform: none !important;\n font-size: 0.75rem;\n padding-bottom: 2px !important;\n}\n.ant-form-item-label > label {\n width: 100%;\n color: #4b5563 !important;\n}\n.ant-form-item-explain-error {\n font-size: 11px;\n min-height: 11px;\n line-height: 11px;\n padding-top: 2px;\n}\n.ant-form-item {\n margin-bottom: 0;\n}\n.ant-notification {\n width: min-content;\n}\n.ant-notification-topRight {\n right: 0 !important;\n left: 0 !important;\n margin-left: auto !important;\n margin-right: auto !important;\n}\n.ant-notification-notice-wrapper {\n width: 350px !important;\n overflow: hidden !important;\n}\n.ant-notification-notice {\n padding: 16px !important;\n width: 350px !important;\n display: flex !important;\n box-shadow: 0px 6px 10px rgba(0, 0, 0, 0.08), 0px 1px 18px rgba(0, 0, 0, 0.08), 0px 3px 5px rgba(0, 0, 0, 0.16) !important;\n}\n.ant-notification-notice-description {\n padding: 0 14px 0 0 !important;\n color: #232323 !important;\n font-size: 14px !important;\n word-break: break-all !important;\n overflow-wrap: break-word !important;\n}\n.ant-notification-notice-success {\n background-color: #edfffa !important;\n}\n.ant-notification-notice-error {\n background-color: #fff8f4 !important;\n}\n.ant-notification-notice-error .ant-notification-notice-message {\n color: #ff6e1c !important;\n font-family: Inter, system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Helvetica Neue, Arial, Noto Sans, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol, Noto Color Emoji !important;\n font-weight: 500;\n}\n.ant-notification-notice-error .ant-notification-notice-icon {\n color: #ff6e1c;\n}\n.ant-notification-notice-success .ant-notification-notice-message {\n color: #00b76a !important;\n font-family: Inter, system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Helvetica Neue, Arial, Noto Sans, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol, Noto Color Emoji !important;\n font-weight: 500;\n}\n.ant-notification-notice-success .ant-notification-notice-icon {\n color: #00b76a !important;\n}\n.ant-notification-notice-message {\n margin-bottom: 0 !important;\n}\n.ant-notification-notice-close {\n top: 16px !important;\n right: 16px !important;\n}\n.ant-divider {\n margin: 0;\n border-block-color: #e2e8f0 !important;\n border-inline-color: #e2e8f0 !important;\n}\n.ant-menu-submenu-popup > .ant-menu .ant-menu-item {\n display: flex !important;\n align-items: center !important;\n}\n.ant-menu-submenu::after {\n display: none !important;\n}\n.ant-drawer-body {\n background-color: #f8fafc !important;\n}\n.ant-drawer-header {\n padding-right: 1rem !important;\n padding-left: 1rem !important;\n}\n.ant-drawer-title {\n font-weight: 400 !important;\n}\n.ant-drawer-header-title {\n flex-direction: row-reverse !important;\n align-items: start !important ;\n}\n.ant-drawer-close {\n margin-inline-end: 0 !important;\n}\n@media (min-width: 768px) {\n .ant-input,\n .ant-picker,\n .ant-select,\n .ant-input-affix-wrapper {\n font-size: 1rem !important;\n }\n .ant-drawer-header {\n padding-right: 1.5rem !important;\n padding-left: 1.5rem !important;\n }\n}\n.plan-step-line {\n height: 1px;\n min-width: 128px;\n background: #717d94;\n}\n.plan-step-number {\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 9999px;\n border: 1px solid #717d94;\n background: white;\n width: 24px;\n height: 24px;\n color: #717d94;\n}\n.plan-step-number.active {\n border: none;\n color: white;\n background: #ff6e1c;\n}\n.hidden {\n display: none;\n}\n.cardElement {\n padding: 8px 11px;\n border: 1px solid #e5e7eb;\n background-color: white;\n font-family: Inter !important;\n}\n.tooltip {\n visibility: hidden;\n position: absolute !important;\n}\n.has-tooltip:hover .tooltip {\n visibility: visible;\n z-index: 100;\n}\n.show-on-hover {\n opacity: 0;\n}\n.show-on-hover-container:hover .show-on-hover {\n opacity: 1;\n}\n.pdf-only {\n display: none !important;\n}\n.notes p {\n margin: 0;\n padding: 0;\n padding-bottom: 0.25rem;\n}\n#form-element #finix-form-container .field-holder label {\n color: #717d94 !important;\n font-size: 12px !important;\n}\n#form-element #finix-form-container > *:first-child,\n#form-element #finix-form-container > *:last-child {\n margin-top: 0 !important;\n}\n#form-element #finix-form-container > *:not(:first-child):not(:last-child) {\n margin-top: 12px !important;\n}\n#form-element #finix-form-container .field-array > * {\n margin-top: 0 !important;\n}\n#form-element #finix-form-container .field-holder .field,\n#form-element #finix-form-container iframe {\n height: 34px !important;\n}\n#form-element #finix-form-container .field {\n margin-top: 0 !important;\n padding-top: 2px !important;\n}\n#form-element #finix-form-container .field-holder .validation {\n font-size: 11px !important;\n color: #ff4d4f !important;\n}\n.icon-path {\n transition: fill 0.3s;\n}\n.shadow-padding-x {\n padding-right: 1rem;\n padding-left: 1rem;\n}\n.shadow-padding-xb {\n padding-right: 1rem;\n padding-left: 1rem;\n padding-bottom: 0.5rem;\n}\n.content-container {\n width: 100%;\n margin: 0 auto;\n}\n@media (min-width: 1220px) {\n .content-container {\n width: 1220px !important;\n margin: 0 auto;\n }\n}\n@media (min-width: 768px) {\n .shadow-padding-x {\n padding-right: 2rem;\n padding-left: 2rem;\n }\n .shadow-padding-xb {\n padding-right: 2rem;\n padding-left: 2rem;\n padding-bottom: 0.5rem;\n }\n .sm\\:flex {\n display: flex !important;\n }\n .sm\\:hidden {\n display: none !important;\n }\n}\n.relative {\n position: relative;\n}\n.absolute {\n position: absolute;\n}\n.fixed {\n position: fixed;\n}\n.top-0 {\n top: 0;\n}\n.right-0 {\n right: 0;\n}\n.bottom-0 {\n bottom: 0;\n}\n.left-0 {\n left: 0;\n}\n.overflow-hidden {\n overflow: hidden !important;\n}\n.overflow-auto {\n overflow: auto;\n}\n.overflow-visible {\n overflow: visible;\n}\n.z-50 {\n z-index: 50;\n}\n.-top-1\\/10 {\n top: -10%;\n}\n.rounded {\n border-radius: 0.25rem;\n}\n.rounded-md {\n border-radius: 0.375rem;\n}\n.rounded-lg {\n border-radius: 0.5rem;\n}\n.rounded-xl {\n border-radius: 0.75rem;\n}\n.rounded-full {\n border-radius: 9999px;\n}\n.rounded-tr {\n border-top-right-radius: 0.25rem;\n}\n.rounded-br {\n border-bottom-right-radius: 0.25rem;\n}\n.rounded-bl {\n border-bottom-left-radius: 0.25rem;\n}\n.rounded-tl {\n border-top-left-radius: 0.25rem;\n}\n.rounded-t {\n border-top-right-radius: 0.25rem;\n border-top-left-radius: 0.25rem;\n}\n.grid {\n display: grid;\n}\n.contents {\n display: contents;\n}\n.flex {\n display: flex;\n}\n.flex-col {\n flex-direction: column;\n}\n.flex-wrap {\n flex-wrap: wrap;\n}\n.grow {\n flex-grow: 1;\n}\n.shrink {\n flex-shrink: 1;\n}\n.shrink-0 {\n flex-shrink: 0;\n}\n.basis-0 {\n flex-basis: 0;\n}\n.max-w-32 {\n max-width: 8rem;\n}\n.items-center {\n align-items: center;\n}\n.items-end {\n align-items: flex-end;\n}\n.items-start {\n align-items: flex-start;\n}\n.justify-center {\n justify-content: center;\n}\n.justify-between {\n justify-content: space-between;\n}\n.justify-end {\n justify-content: flex-end;\n}\n.justify-start {\n justify-content: flex-start;\n}\n.whitespace-nowrap {\n white-space: nowrap;\n}\n.underline {\n text-decoration: underline;\n}\n.no-underline {\n text-decoration: none;\n}\n.text-nowrap {\n white-space: nowrap;\n}\n.text-white {\n color: white;\n}\n.text-xxs {\n font-size: 0.625rem;\n}\n.text-xs {\n font-size: 0.75rem;\n}\n.text-sm {\n font-size: 0.875rem;\n}\n.text-base {\n font-size: 1rem;\n}\n.text-lg {\n font-size: 1.125rem;\n}\n.text-xl {\n font-size: 1.25rem;\n}\n.text-2xl {\n font-size: 1.5rem;\n}\n.text-3xl {\n font-size: 2rem;\n}\n.text-4xl {\n font-size: 2.5rem;\n}\n.text-5xl {\n font-size: 3rem;\n}\n.text-left {\n text-align: left;\n}\n.text-center {\n text-align: center;\n}\n.text-right {\n text-align: right;\n}\n.text-gray {\n color: #808080 !important;\n}\n.text-blue-gray {\n color: #717d94;\n}\n.text-primary {\n color: #ff6e1c;\n}\n.text-secondary {\n color: #4956dc;\n}\n.capitalize {\n text-transform: capitalize !important;\n}\n.font-normal {\n font-weight: 400;\n}\n.font-medium {\n font-weight: 500;\n}\n.font-bold {\n font-weight: 700;\n}\n.bg-transparent {\n background-color: transparent;\n}\n.bg-white {\n background-color: white;\n}\n.border-collapse {\n border-collapse: collapse;\n}\n.border-t-solid {\n border-top-style: solid;\n}\n.border-b-solid {\n border-bottom-style: solid;\n}\n.border-t-1 {\n border-top-width: 1px;\n}\n.border-b-1 {\n border-bottom-width: 1px;\n}\n.gap-0 {\n gap: 0 !important;\n}\n.gap-0\\.5 {\n gap: 0.125rem;\n}\n.gap-1 {\n gap: 0.25rem;\n}\n.gap-2 {\n gap: 0.5rem;\n}\n.gap-3 {\n gap: 0.75rem;\n}\n.gap-4 {\n gap: 1rem !important;\n}\n.gap-5 {\n gap: 1.25rem;\n}\n.gap-6 {\n gap: 1.5rem !important;\n}\n.gap-8 {\n gap: 2rem !important;\n}\n.gap-12 {\n gap: 3rem !important;\n}\n/* Padding Utilities */\n.p-0 {\n padding: 0;\n}\n.p-1 {\n padding: 0.25rem;\n}\n.p-2 {\n padding: 0.5rem;\n}\n.p-3 {\n padding: 0.75rem;\n}\n.p-4 {\n padding: 1rem;\n}\n.p-5 {\n padding: 1.25rem;\n}\n.p-6 {\n padding: 1.5rem;\n}\n.p-8 {\n padding: 2rem;\n}\n/* Padding X Utilities */\n.px-0 {\n padding-right: 0;\n padding-left: 0;\n}\n.px-1 {\n padding-right: 0.25rem;\n padding-left: 0.25rem;\n}\n.px-2 {\n padding-right: 0.5rem;\n padding-left: 0.5rem;\n}\n.px-3 {\n padding-right: 0.75rem;\n padding-left: 0.75rem;\n}\n.px-4 {\n padding-right: 1rem;\n padding-left: 1rem;\n}\n.px-5 {\n padding-right: 1.25rem;\n padding-left: 1.25rem;\n}\n.px-6 {\n padding-right: 1.5rem;\n padding-left: 1.5rem;\n}\n.px-8 {\n padding-right: 2rem;\n padding-left: 2rem;\n}\n.px-12 {\n padding-right: 3rem;\n padding-left: 3rem;\n}\n/* Padding Y Utilities */\n.py-0 {\n padding-top: 0;\n padding-bottom: 0;\n}\n.py-1 {\n padding-top: 0.25rem;\n padding-bottom: 0.25rem;\n}\n.py-2 {\n padding-top: 0.5rem;\n padding-bottom: 0.5rem;\n}\n.py-3 {\n padding-top: 0.75rem;\n padding-bottom: 0.75rem;\n}\n.py-4 {\n padding-top: 1rem;\n padding-bottom: 1rem;\n}\n.py-6 {\n padding-top: 1.5rem;\n padding-bottom: 1.5rem;\n}\n/* Padding Top Utilities */\n.pt-0 {\n padding-top: 0;\n}\n.pt-1 {\n padding-top: 0.25rem;\n}\n.pt-2 {\n padding-top: 0.5rem;\n}\n.pt-3 {\n padding-top: 0.75rem;\n}\n.pt-4 {\n padding-top: 1rem;\n}\n.pt-5 {\n padding-top: 1.25rem;\n}\n.pt-6 {\n padding-top: 1.5rem;\n}\n.pt-8 {\n padding-top: 2rem;\n}\n/* Padding Right Utilities */\n.pr-0 {\n padding-right: 0;\n}\n.pr-4 {\n padding-right: 1rem;\n}\n.pr-8 {\n padding-right: 2rem;\n}\n/* Padding Bottom Utilities */\n.pb-0 {\n padding-bottom: 0;\n}\n.pb-1 {\n padding-bottom: 0.25rem;\n}\n.pb-2 {\n padding-bottom: 0.5rem;\n}\n.pb-3 {\n padding-bottom: 0.75rem;\n}\n.pb-4 {\n padding-bottom: 1rem;\n}\n.pb-5 {\n padding-bottom: 1.25rem;\n}\n.pb-6 {\n padding-bottom: 1.5rem;\n}\n.pb-8 {\n padding-bottom: 2rem;\n}\n/* Padding Left Utilities */\n.pl-0 {\n padding-left: 0;\n}\n.pl-1 {\n padding-left: 0.25rem;\n}\n.pl-2 {\n padding-left: 0.5rem;\n}\n.pl-4 {\n padding-left: 1rem;\n}\n.pl-8 {\n padding-left: 2rem;\n}\n/* Margin Utilities */\n.ml-2 {\n margin-left: 0.5rem;\n}\n.ml-6 {\n margin-left: 1.5rem;\n}\n.ml-8 {\n margin-left: 2rem;\n}\n.mb-0 {\n margin-bottom: 0;\n}\n.mb-1 {\n margin-bottom: 0.25rem;\n}\n.mb-2 {\n margin-bottom: 0.5rem;\n}\n.mb-3 {\n margin-bottom: 0.75rem;\n}\n.mb-4 {\n margin-bottom: 1rem;\n}\n.mb-5 {\n margin-bottom: 1.25rem;\n}\n.mb-6 {\n margin-bottom: 1.5rem;\n}\n.mb-8 {\n margin-bottom: 2rem;\n}\n.mr-2 {\n margin-right: 0.5rem;\n}\n.mr-4 {\n margin-right: 1rem;\n}\n.mr-6 {\n margin-right: 1.5rem;\n}\n.mr-8 {\n margin-right: 2rem;\n}\n.mt-1 {\n margin-top: 0.25rem;\n}\n.mt-2 {\n margin-top: 0.5rem;\n}\n.mt-4 {\n margin-top: 1rem;\n}\n.mt-5 {\n margin-top: 1.25rem;\n}\n.mt-6 {\n margin-top: 1.5rem;\n}\n.mt-8 {\n margin-top: 2rem;\n}\n.my-1 {\n margin-top: 0.25rem;\n margin-bottom: 0.25rem;\n}\n.my-2 {\n margin-top: 0.5rem;\n margin-bottom: 0.5rem;\n}\n.my-4 {\n margin-top: 1rem;\n margin-bottom: 1rem;\n}\n.w-full {\n width: 100%;\n}\n.w-1\\/2 {\n width: 50%;\n}\n.w-1\\/3 {\n width: 33.333333%;\n}\n.w-2\\/3 {\n width: 66.666667%;\n}\n.w-4 {\n width: 1rem;\n}\n.w-14 {\n width: 3.5rem;\n /* 56px */\n}\n.w-20 {\n width: 5rem;\n /* 80px */\n}\n.h-full {\n height: 100%;\n}\n.h-4 {\n height: 1rem;\n}\n.h-5 {\n height: 1.25rem;\n}\n.h-6 {\n height: 1.5rem;\n}\n.h-8 {\n height: 2rem;\n}\n.h-14 {\n height: 3.5rem;\n /* 56px */\n}\n.h-80 {\n height: 20rem;\n}\n.h-96 {\n height: 24rem;\n}\n.cursor-pointer {\n cursor: pointer;\n}\n.cursor-not-allowed {\n cursor: not-allowed;\n}\n.grid-cols-2 {\n grid-template-columns: repeat(2, minmax(0, 1fr));\n}\n.grid-cols-3 {\n grid-template-columns: repeat(3, minmax(0, 1fr));\n}\n.grid-cols-4 {\n grid-template-columns: repeat(4, minMax(0, 1fr));\n}\n.col-span-2 {\n grid-column: span 2 / span 2;\n}\n.col-span-3 {\n grid-column: span 3 / span 3;\n}\n.col-span-4 {\n grid-column: span 4 / span 4;\n}\n.col-span-full {\n grid-column: 1 / -1;\n}\n/* Background colors */\n.bg-black {\n background-color: #000000;\n}\n.bg-slate-50 {\n background-color: #f8fafc;\n}\n.bg-slate-100 {\n background-color: #f1f5f9;\n}\n.bg-slate-200 {\n background-color: #e2e8f0;\n}\n.bg-slate-300 {\n background-color: #cbd5e1;\n}\n.bg-slate-400 {\n background-color: #94a3b8;\n}\n.bg-slate-500 {\n background-color: #64748b;\n}\n.bg-slate-600 {\n background-color: #475569;\n}\n.bg-slate-700 {\n background-color: #334155;\n}\n.bg-slate-800 {\n background-color: #1e293b;\n}\n.bg-slate-900 {\n background-color: #0f172a;\n}\n.bg-slate-950 {\n background-color: #020617;\n}\n.bg-gray-50 {\n background-color: #f9fafb;\n}\n.bg-gray-100 {\n background-color: #f3f4f6;\n}\n.bg-gray-200 {\n background-color: #e5e7eb;\n}\n.bg-gray-300 {\n background-color: #d1d5db;\n}\n.bg-gray-400 {\n background-color: #9ca3af;\n}\n.bg-gray-500 {\n background-color: #6b7280;\n}\n.bg-gray-600 {\n background-color: #4b5563;\n}\n.bg-gray-700 {\n background-color: #374151;\n}\n.bg-gray-800 {\n background-color: #1f2937;\n}\n.bg-gray-900 {\n background-color: #111827;\n}\n.bg-gray-950 {\n background-color: #030712;\n}\n.bg-green-200 {\n background-color: #a7f3d0;\n}\n.bg-blue-50 {\n background-color: #eff6ff;\n}\n.bg-blue-100 {\n background-color: #dbeafe;\n}\n.bg-blue-200 {\n background-color: #bfdbfe;\n}\n.bg-blue-300 {\n background-color: #93c5fd;\n}\n.bg-blue-400 {\n background-color: #60a5fa;\n}\n.bg-blue-500 {\n background-color: #3b82f6;\n}\n.bg-blue-600 {\n background-color: #2563eb;\n}\n.bg-blue-700 {\n background-color: #1d4ed8;\n}\n.bg-blue-800 {\n background-color: #1e40af;\n}\n.bg-blue-900 {\n background-color: #1e3a8a;\n}\n.bg-blue-950 {\n background-color: #172554;\n}\n.bg-orange-50 {\n background-color: #fff7ed;\n}\n.bg-orange-100 {\n background-color: #ffedd5;\n}\n.bg-orange-200 {\n background-color: #fed7aa;\n}\n.bg-orange-300 {\n background-color: #fdba74;\n}\n.bg-orange-400 {\n background-color: #fb923c;\n}\n.bg-orange-500 {\n background-color: #f97316;\n}\n.bg-orange-600 {\n background-color: #ea580c;\n}\n.bg-orange-700 {\n background-color: #c2410c;\n}\n.bg-orange-800 {\n background-color: #9a3412;\n}\n.bg-orange-900 {\n background-color: #7c2d12;\n}\n.bg-orange-950 {\n background-color: #431407;\n}\n.bg-yellow-200 {\n background-color: #fde68a;\n}\n.bg-red-200 {\n background-color: #fecaca;\n}\n/* Text colors */\n.text-black {\n color: #000000;\n}\n.text-white {\n color: #ffffff;\n}\n.text-slate-50 {\n color: #f8fafc;\n}\n.text-slate-100 {\n color: #f1f5f9;\n}\n.text-slate-200 {\n color: #e2e8f0;\n}\n.text-slate-300 {\n color: #cbd5e1;\n}\n.text-slate-400 {\n color: #94a3b8;\n}\n.text-slate-500 {\n color: #64748b;\n}\n.text-slate-600 {\n color: #475569;\n}\n.text-slate-700 {\n color: #334155;\n}\n.text-slate-800 {\n color: #1e293b;\n}\n.text-slate-900 {\n color: #0f172a;\n}\n.text-slate-950 {\n color: #020617;\n}\n.text-gray-50 {\n color: #f9fafb;\n}\n.text-gray-100 {\n color: #f3f4f6;\n}\n.text-gray-200 {\n color: #e5e7eb;\n}\n.text-gray-300 {\n color: #d1d5db;\n}\n.text-gray-400 {\n color: #9ca3af;\n}\n.text-gray-500 {\n color: #6b7280;\n}\n.text-gray-600 {\n color: #4b5563;\n}\n.text-gray-700 {\n color: #374151;\n}\n.text-gray-800 {\n color: #1f2937;\n}\n.text-gray-900 {\n color: #111827;\n}\n.text-gray-950 {\n color: #030712;\n}\n.text-green-600 {\n color: #059669;\n}\n.text-green-700 {\n color: #047857;\n}\n.text-blue-50 {\n color: #eff6ff;\n}\n.text-blue-100 {\n color: #dbeafe;\n}\n.text-blue-200 {\n color: #bfdbfe;\n}\n.text-blue-300 {\n color: #93c5fd;\n}\n.text-blue-400 {\n color: #60a5fa;\n}\n.text-blue-500 {\n color: #3b82f6;\n}\n.text-blue-600 {\n color: #2563eb;\n}\n.text-blue-700 {\n color: #1d4ed8;\n}\n.text-blue-800 {\n color: #1e40af;\n}\n.text-blue-900 {\n color: #1e3a8a;\n}\n.text-blue-950 {\n color: #172554;\n}\n.text-orange-50 {\n color: #fff7ed;\n}\n.text-orange-100 {\n color: #ffedd5;\n}\n.text-orange-200 {\n color: #fed7aa;\n}\n.text-orange-300 {\n color: #fdba74;\n}\n.text-orange-400 {\n color: #fb923c;\n}\n.text-orange-500 {\n color: #f97316;\n}\n.text-orange-600 {\n color: #ea580c;\n}\n.text-orange-700 {\n color: #c2410c;\n}\n.text-orange-800 {\n color: #9a3412;\n}\n.text-orange-900 {\n color: #7c2d12;\n}\n.text-orange-950 {\n color: #431407;\n}\n.text-yellow-500 {\n color: #f59e0b;\n}\n.text-yellow-700 {\n color: #b45309;\n}\n.text-red-500 {\n color: #ef4444;\n}\n.text-red-700 {\n color: #b91c1c;\n}\n.border {\n border-width: 1px;\n}\n.border-2 {\n border-width: 2px;\n}\n.border-l {\n border-left-width: 1px;\n}\n.border-dashed {\n border-style: dashed;\n}\n.border-solid {\n border-style: solid;\n}\n.border-slate-50 {\n border-color: #f8fafc;\n}\n.border-slate-100 {\n border-color: #f1f5f9;\n}\n.border-slate-200 {\n border-color: #e2e8f0;\n}\n.border-slate-300 {\n border-color: #cbd5e1;\n}\n.border-slate-400 {\n border-color: #94a3b8;\n}\n.border-slate-500 {\n border-color: #64748b;\n}\n.border-slate-600 {\n border-color: #475569;\n}\n.border-slate-700 {\n border-color: #334155;\n}\n.border-slate-800 {\n border-color: #1e293b;\n}\n.border-slate-900 {\n border-color: #0f172a;\n}\n.border-slate-950 {\n border-color: #020617;\n}\n.origin-center {\n transform-origin: center;\n}\n.rotate-45 {\n transform: rotate(45deg);\n}\n.translate-x-2\\/4 {\n transform: translateX(50%);\n}\n.-translate-x-2\\/4 {\n transform: translateX(-50%);\n}\n.translate-y-2\\/4 {\n transform: translateY(50%);\n}\n.translate-y-full {\n transform: translateY(100%);\n}\n.-translate-y-full {\n transform: translateY(-100%);\n}\n.shadow-sm {\n box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.05);\n}\n.shadow {\n box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 2px -1px rgba(0, 0, 0, 0.1);\n}\n.shadow-md {\n box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -2px rgba(0, 0, 0, 0.1);\n}\n.shadow-lg {\n box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -4px rgba(0, 0, 0, 0.1);\n}\n.shadow-xl {\n box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 8px 10px -6px rgba(0, 0, 0, 0.1);\n}\n.shadow-2xl {\n box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.25);\n}\n.shadow-inner {\n box-shadow: inset 0 2px 4px 0 rgba(0, 0, 0, 0.05);\n}\n.shadow-none {\n box-shadow: 0 0 #0000;\n}\n@media (min-width: 768px) {\n .sm\\:flex {\n display: flex !important;\n }\n .sm\\:hidden {\n display: none !important;\n }\n}\n* {\n margin: 0;\n padding: 0;\n box-sizing: border-box !important;\n font-family: Inter, system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Helvetica Neue, Arial, Noto Sans, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol, Noto Color Emoji;\n line-height: 1.15;\n}\nbody {\n color: #232323;\n background-color: #f8fafc;\n}\nth {\n font-weight: normal;\n}\ncode {\n font-family: source-code-pro, Menlo, Monaco, Consolas, \"Courier New\", monospace;\n}\n@media only screen and (max-width: 768px) {\n select,\n textarea,\n input[type=\"text\"],\n input[type=\"password\"],\n input[type=\"datetime\"],\n input[type=\"datetime-local\"],\n input[type=\"date\"],\n input[type=\"month\"],\n input[type=\"time\"],\n input[type=\"week\"],\n input[type=\"number\"],\n input[type=\"email\"],\n input[type=\"url\"],\n input[type=\"search\"],\n input[type=\"tel\"],\n input[type=\"color\"] {\n font-size: 16px !important;\n }\n}\n@keyframes App-logo-spin {\n from {\n transform: rotate(0deg);\n }\n to {\n transform: rotate(360deg);\n }\n}\n";
|
|
1736
|
+
var css_248z = "@font-face {\n font-family: 'Inter';\n font-style: normal;\n font-weight: 400;\n font-display: swap;\n src: url(https://fonts.gstatic.com/s/inter/v18/UcCO3FwrK3iLTeHuS_nVMrMxCp50SjIw2boKoduKmMEVuLyfMZg.ttf) format('truetype');\n}\n@font-face {\n font-family: 'Inter';\n font-style: normal;\n font-weight: 600;\n font-display: swap;\n src: url(https://fonts.gstatic.com/s/inter/v18/UcCO3FwrK3iLTeHuS_nVMrMxCp50SjIw2boKoduKmMEVuGKYMZg.ttf) format('truetype');\n}\n.ant-tag {\n border: none;\n border-radius: 14px;\n font-family: Inter, system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Helvetica Neue, Arial, Noto Sans, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol, Noto Color Emoji;\n font-weight: 500;\n white-space: nowrap;\n margin: 0;\n}\n.ant-tag-blue {\n color: #3b82f6 !important;\n background: #bfdbfe !important;\n}\n.ant-tag-green {\n color: #059669 !important;\n background: #a7f3d0 !important;\n}\n.ant-tag-red {\n color: #ef4444 !important;\n background: #fecaca !important;\n}\n.ant-tag-orange {\n color: #f97316 !important;\n background: #fed7aa !important;\n}\n.ant-tag-yellow {\n color: #f59e0b !important;\n background: #fde68a !important;\n}\n.ant-tag-purple {\n color: #8b5cf6 !important;\n background: #ddd6fe !important;\n}\n.ant-tag-black {\n color: white !important;\n background: black !important;\n}\n.ant-popover {\n z-index: 1050;\n}\n.ant-popover-inner-content {\n display: flex;\n flex-direction: column;\n gap: 0.5rem;\n max-width: 300px;\n}\n.ant-popover-message-title {\n padding: 0;\n text-align: center;\n font-size: 1rem;\n}\n.ant-popover-buttons {\n display: flex;\n align-items: center;\n justify-content: center;\n}\n.ant-btn-primary:disabled {\n background: #eef0f2 !important;\n color: rgba(0, 0, 0, 0.25) !important;\n border: none;\n}\n.ant-btn {\n font-family: Inter, system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Helvetica Neue, Arial, Noto Sans, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol, Noto Color Emoji;\n font-weight: 500;\n box-shadow: none;\n text-shadow: none;\n outline: none !important;\n line-height: 1;\n font-size: 0.875rem;\n font-weight: normal;\n}\n.ant-btn > span {\n font-family: Inter, system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Helvetica Neue, Arial, Noto Sans, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol, Noto Color Emoji;\n}\n.ant-btn-lg {\n height: 44px !important;\n}\n.ant-btn-default:disabled {\n border-color: rgba(113, 125, 148, 0.2) !important;\n}\n.ant-btn-link {\n border: none !important;\n font-family: Inter, system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Helvetica Neue, Arial, Noto Sans, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol, Noto Color Emoji;\n}\n.ant-btn-link > span {\n font-family: Inter, system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Helvetica Neue, Arial, Noto Sans, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol, Noto Color Emoji;\n}\n.ant-btn-link:disabled {\n background-color: transparent !important;\n color: #717d94 !important;\n}\n.ant-btn-link:disabled:hover {\n background-color: transparent !important;\n}\n.ant-input-affix-wrapper .ant-input-prefix {\n transition: color 0.3s;\n}\n.ant-select-selector {\n box-shadow: none !important;\n background-color: transparent !important;\n border: none !important;\n}\n.ant-form-item-label {\n text-transform: none !important;\n font-size: 0.75rem;\n padding-bottom: 2px !important;\n}\n.ant-form-item-label > label {\n width: 100%;\n color: #4b5563 !important;\n}\n.ant-form-item-explain-error {\n font-size: 11px;\n min-height: 11px;\n line-height: 11px;\n padding-top: 2px;\n}\n.ant-form-item {\n margin-bottom: 0;\n}\n.ant-notification {\n width: min-content;\n}\n.ant-notification-topRight {\n right: 0 !important;\n left: 0 !important;\n margin-left: auto !important;\n margin-right: auto !important;\n}\n.ant-notification-notice-wrapper {\n width: 350px !important;\n overflow: hidden !important;\n}\n.ant-notification-notice {\n padding: 16px !important;\n width: 350px !important;\n display: flex !important;\n box-shadow: 0px 6px 10px rgba(0, 0, 0, 0.08), 0px 1px 18px rgba(0, 0, 0, 0.08), 0px 3px 5px rgba(0, 0, 0, 0.16) !important;\n}\n.ant-notification-notice-description {\n padding: 0 14px 0 0 !important;\n color: #232323 !important;\n font-size: 14px !important;\n word-break: break-all !important;\n overflow-wrap: break-word !important;\n}\n.ant-notification-notice-success {\n background-color: #edfffa !important;\n}\n.ant-notification-notice-error {\n background-color: #fff8f4 !important;\n}\n.ant-notification-notice-error .ant-notification-notice-message {\n color: #ff6e1c !important;\n font-family: Inter, system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Helvetica Neue, Arial, Noto Sans, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol, Noto Color Emoji !important;\n font-weight: 500;\n}\n.ant-notification-notice-error .ant-notification-notice-icon {\n color: #ff6e1c;\n}\n.ant-notification-notice-success .ant-notification-notice-message {\n color: #00b76a !important;\n font-family: Inter, system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Helvetica Neue, Arial, Noto Sans, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol, Noto Color Emoji !important;\n font-weight: 500;\n}\n.ant-notification-notice-success .ant-notification-notice-icon {\n color: #00b76a !important;\n}\n.ant-notification-notice-message {\n margin-bottom: 0 !important;\n}\n.ant-notification-notice-close {\n top: 16px !important;\n right: 16px !important;\n}\n.ant-divider {\n margin: 0;\n}\n.ant-menu-submenu-popup > .ant-menu .ant-menu-item {\n display: flex !important;\n align-items: center !important;\n}\n.ant-menu-submenu::after {\n display: none !important;\n}\n.ant-drawer-title {\n font-weight: 400 !important;\n}\n.ant-drawer-header-title {\n flex-direction: row-reverse !important;\n align-items: start !important ;\n}\n.ant-drawer-close {\n margin-inline-end: 0 !important;\n}\n@media (min-width: 768px) {\n .ant-input,\n .ant-picker,\n .ant-select,\n .ant-input-affix-wrapper {\n font-size: 1rem !important;\n }\n .ant-drawer-header {\n padding-right: 1.5rem !important;\n padding-left: 1.5rem !important;\n }\n}\n:root {\n --row-background: #ffffff;\n --row-background-alternate: rgba(100, 116, 139, 0.04);\n --row-background-dark: #121212;\n --row-background-alternate-dark: #1e1e1e;\n}\n.plan-step-line {\n height: 1px;\n min-width: 128px;\n background: #717d94;\n}\n.plan-step-number {\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 9999px;\n border: 1px solid #717d94;\n background: white;\n width: 24px;\n height: 24px;\n color: #717d94;\n}\n.plan-step-number.active {\n border: none;\n color: white;\n background: #ff6e1c;\n}\n.hidden {\n display: none;\n}\n.cardElement {\n padding: 8px 11px;\n border: 1px solid #e5e7eb;\n background-color: white;\n font-family: Inter !important;\n}\n.tooltip {\n visibility: hidden;\n position: absolute !important;\n}\n.has-tooltip:hover .tooltip {\n visibility: visible;\n z-index: 100;\n}\n.show-on-hover {\n opacity: 0;\n}\n.show-on-hover-container:hover .show-on-hover {\n opacity: 1;\n}\n.pdf-only {\n display: none !important;\n}\n.notes p {\n margin: 0;\n padding: 0;\n padding-bottom: 0.25rem;\n}\n#form-element #finix-form-container .field-holder label {\n color: #717d94 !important;\n font-size: 12px !important;\n}\n#form-element #finix-form-container > *:first-child,\n#form-element #finix-form-container > *:last-child {\n margin-top: 0 !important;\n}\n#form-element #finix-form-container > *:not(:first-child):not(:last-child) {\n margin-top: 12px !important;\n}\n#form-element #finix-form-container .field-array > * {\n margin-top: 0 !important;\n}\n#form-element #finix-form-container .field-holder .field,\n#form-element #finix-form-container iframe {\n height: 34px !important;\n}\n#form-element #finix-form-container .field {\n margin-top: 0 !important;\n padding-top: 2px !important;\n}\n#form-element #finix-form-container .field-holder .validation {\n font-size: 11px !important;\n color: #ff4d4f !important;\n}\n.icon-path {\n transition: fill 0.3s;\n}\n.shadow-padding-x {\n padding-right: 1rem;\n padding-left: 1rem;\n}\n.shadow-padding-xb {\n padding-right: 1rem;\n padding-left: 1rem;\n padding-bottom: 0.5rem;\n}\n.content-container {\n width: 100%;\n margin: 0 auto;\n}\n@media (min-width: 1220px) {\n .content-container {\n width: 1220px !important;\n margin: 0 auto;\n }\n}\n@media (min-width: 768px) {\n .shadow-padding-x {\n padding-right: 2rem;\n padding-left: 2rem;\n }\n .shadow-padding-xb {\n padding-right: 2rem;\n padding-left: 2rem;\n padding-bottom: 0.5rem;\n }\n .sm\\:flex {\n display: flex !important;\n }\n .sm\\:hidden {\n display: none !important;\n }\n}\n.relative {\n position: relative;\n}\n.absolute {\n position: absolute;\n}\n.fixed {\n position: fixed;\n}\n.top-0 {\n top: 0;\n}\n.right-0 {\n right: 0;\n}\n.bottom-0 {\n bottom: 0;\n}\n.left-0 {\n left: 0;\n}\n.overflow-hidden {\n overflow: hidden !important;\n}\n.overflow-auto {\n overflow: auto;\n}\n.overflow-visible {\n overflow: visible;\n}\n.z-50 {\n z-index: 50;\n}\n.-top-1\\/10 {\n top: -10%;\n}\n.rounded {\n border-radius: 0.25rem;\n}\n.rounded-md {\n border-radius: 0.375rem;\n}\n.rounded-lg {\n border-radius: 0.5rem;\n}\n.rounded-xl {\n border-radius: 0.75rem;\n}\n.rounded-full {\n border-radius: 9999px;\n}\n.rounded-tr {\n border-top-right-radius: 0.25rem;\n}\n.rounded-br {\n border-bottom-right-radius: 0.25rem;\n}\n.rounded-bl {\n border-bottom-left-radius: 0.25rem;\n}\n.rounded-tl {\n border-top-left-radius: 0.25rem;\n}\n.rounded-t {\n border-top-right-radius: 0.25rem;\n border-top-left-radius: 0.25rem;\n}\n.grid {\n display: grid;\n}\n.contents {\n display: contents;\n}\n.flex {\n display: flex;\n}\n.flex-col {\n flex-direction: column;\n}\n.flex-wrap {\n flex-wrap: wrap;\n}\n.grow {\n flex-grow: 1;\n}\n.shrink {\n flex-shrink: 1;\n}\n.shrink-0 {\n flex-shrink: 0;\n}\n.basis-0 {\n flex-basis: 0;\n}\n.max-w-32 {\n max-width: 8rem;\n}\n.items-center {\n align-items: center;\n}\n.items-end {\n align-items: flex-end;\n}\n.items-start {\n align-items: flex-start;\n}\n.justify-center {\n justify-content: center;\n}\n.justify-between {\n justify-content: space-between;\n}\n.justify-end {\n justify-content: flex-end;\n}\n.justify-start {\n justify-content: flex-start;\n}\n.whitespace-nowrap {\n white-space: nowrap;\n}\n.underline {\n text-decoration: underline;\n}\n.no-underline {\n text-decoration: none;\n}\n.text-nowrap {\n white-space: nowrap;\n}\n.text-white {\n color: white;\n}\n.text-xxs {\n font-size: 0.625rem;\n}\n.text-xs {\n font-size: 0.75rem;\n}\n.text-sm {\n font-size: 0.875rem;\n}\n.text-base {\n font-size: 1rem;\n}\n.text-lg {\n font-size: 1.125rem;\n}\n.text-xl {\n font-size: 1.25rem;\n}\n.text-2xl {\n font-size: 1.5rem;\n}\n.text-3xl {\n font-size: 2rem;\n}\n.text-4xl {\n font-size: 2.5rem;\n}\n.text-5xl {\n font-size: 3rem;\n}\n.text-left {\n text-align: left;\n}\n.text-center {\n text-align: center;\n}\n.text-right {\n text-align: right;\n}\n.text-gray {\n color: #808080 !important;\n}\n.text-gray-400 {\n color: #9ca3af !important;\n}\n.text-gray-500 {\n color: #6b7280 !important;\n}\n.text-blue-gray {\n color: #717d94;\n}\n.text-primary {\n color: #ff6e1c;\n}\n.text-secondary {\n color: #4956dc;\n}\n.capitalize {\n text-transform: capitalize !important;\n}\n.font-normal {\n font-weight: 400;\n}\n.font-medium {\n font-weight: 500;\n}\n.font-bold {\n font-weight: 700;\n}\n.bg-transparent {\n background-color: transparent;\n}\n.bg-white {\n background-color: white;\n}\n.border-collapse {\n border-collapse: collapse;\n}\n.border-t-solid {\n border-top-style: solid;\n}\n.border-b-solid {\n border-bottom-style: solid;\n}\n.border-t-1 {\n border-top-width: 1px;\n}\n.border-b-1 {\n border-bottom-width: 1px;\n}\n.gap-0 {\n gap: 0 !important;\n}\n.gap-0\\.5 {\n gap: 0.125rem;\n}\n.gap-1 {\n gap: 0.25rem;\n}\n.gap-2 {\n gap: 0.5rem;\n}\n.gap-3 {\n gap: 0.75rem;\n}\n.gap-4 {\n gap: 1rem !important;\n}\n.gap-5 {\n gap: 1.25rem;\n}\n.gap-6 {\n gap: 1.5rem !important;\n}\n.gap-8 {\n gap: 2rem !important;\n}\n.gap-12 {\n gap: 3rem !important;\n}\n/* Padding Utilities */\n.p-0 {\n padding: 0;\n}\n.p-1 {\n padding: 0.25rem;\n}\n.p-2 {\n padding: 0.5rem;\n}\n.p-3 {\n padding: 0.75rem;\n}\n.p-4 {\n padding: 1rem;\n}\n.p-5 {\n padding: 1.25rem;\n}\n.p-6 {\n padding: 1.5rem;\n}\n.p-8 {\n padding: 2rem;\n}\n/* Padding X Utilities */\n.px-0 {\n padding-right: 0;\n padding-left: 0;\n}\n.px-1 {\n padding-right: 0.25rem;\n padding-left: 0.25rem;\n}\n.px-2 {\n padding-right: 0.5rem;\n padding-left: 0.5rem;\n}\n.px-3 {\n padding-right: 0.75rem;\n padding-left: 0.75rem;\n}\n.px-4 {\n padding-right: 1rem;\n padding-left: 1rem;\n}\n.px-5 {\n padding-right: 1.25rem;\n padding-left: 1.25rem;\n}\n.px-6 {\n padding-right: 1.5rem;\n padding-left: 1.5rem;\n}\n.px-8 {\n padding-right: 2rem;\n padding-left: 2rem;\n}\n.px-12 {\n padding-right: 3rem;\n padding-left: 3rem;\n}\n/* Padding Y Utilities */\n.py-0 {\n padding-top: 0;\n padding-bottom: 0;\n}\n.py-1 {\n padding-top: 0.25rem;\n padding-bottom: 0.25rem;\n}\n.py-2 {\n padding-top: 0.5rem;\n padding-bottom: 0.5rem;\n}\n.py-3 {\n padding-top: 0.75rem;\n padding-bottom: 0.75rem;\n}\n.py-4 {\n padding-top: 1rem;\n padding-bottom: 1rem;\n}\n.py-6 {\n padding-top: 1.5rem;\n padding-bottom: 1.5rem;\n}\n/* Padding Top Utilities */\n.pt-0 {\n padding-top: 0;\n}\n.pt-1 {\n padding-top: 0.25rem;\n}\n.pt-2 {\n padding-top: 0.5rem;\n}\n.pt-3 {\n padding-top: 0.75rem;\n}\n.pt-4 {\n padding-top: 1rem;\n}\n.pt-5 {\n padding-top: 1.25rem;\n}\n.pt-6 {\n padding-top: 1.5rem;\n}\n.pt-8 {\n padding-top: 2rem;\n}\n/* Padding Right Utilities */\n.pr-0 {\n padding-right: 0;\n}\n.pr-4 {\n padding-right: 1rem;\n}\n.pr-8 {\n padding-right: 2rem;\n}\n/* Padding Bottom Utilities */\n.pb-0 {\n padding-bottom: 0;\n}\n.pb-1 {\n padding-bottom: 0.25rem;\n}\n.pb-2 {\n padding-bottom: 0.5rem;\n}\n.pb-3 {\n padding-bottom: 0.75rem;\n}\n.pb-4 {\n padding-bottom: 1rem;\n}\n.pb-5 {\n padding-bottom: 1.25rem;\n}\n.pb-6 {\n padding-bottom: 1.5rem;\n}\n.pb-8 {\n padding-bottom: 2rem;\n}\n/* Padding Left Utilities */\n.pl-0 {\n padding-left: 0;\n}\n.pl-1 {\n padding-left: 0.25rem;\n}\n.pl-2 {\n padding-left: 0.5rem;\n}\n.pl-4 {\n padding-left: 1rem;\n}\n.pl-8 {\n padding-left: 2rem;\n}\n/* Space Utilities */\n.space-y-2 {\n gap: 0.5rem;\n}\n.space-y-4 {\n gap: 1rem;\n}\n.space-y-8 {\n gap: 2rem;\n}\n/* Margin Utilities */\n.ml-2 {\n margin-left: 0.5rem;\n}\n.ml-6 {\n margin-left: 1.5rem;\n}\n.ml-8 {\n margin-left: 2rem;\n}\n.mb-0 {\n margin-bottom: 0;\n}\n.mb-1 {\n margin-bottom: 0.25rem;\n}\n.mb-2 {\n margin-bottom: 0.5rem;\n}\n.mb-3 {\n margin-bottom: 0.75rem;\n}\n.mb-4 {\n margin-bottom: 1rem;\n}\n.mb-5 {\n margin-bottom: 1.25rem;\n}\n.mb-6 {\n margin-bottom: 1.5rem;\n}\n.mb-8 {\n margin-bottom: 2rem;\n}\n.mr-2 {\n margin-right: 0.5rem;\n}\n.mr-4 {\n margin-right: 1rem;\n}\n.mr-6 {\n margin-right: 1.5rem;\n}\n.mr-8 {\n margin-right: 2rem;\n}\n.mt-0 {\n margin-top: 0;\n}\n.mt-1 {\n margin-top: 0.25rem;\n}\n.mt-2 {\n margin-top: 0.5rem;\n}\n.mt-4 {\n margin-top: 1rem;\n}\n.mt-5 {\n margin-top: 1.25rem;\n}\n.mt-6 {\n margin-top: 1.5rem;\n}\n.mt-8 {\n margin-top: 2rem;\n}\n.my-1 {\n margin-top: 0.25rem;\n margin-bottom: 0.25rem;\n}\n.my-2 {\n margin-top: 0.5rem;\n margin-bottom: 0.5rem;\n}\n.my-4 {\n margin-top: 1rem;\n margin-bottom: 1rem;\n}\n.my-8 {\n margin-top: 2rem;\n margin-bottom: 2rem;\n}\n.my-12 {\n margin-top: 3rem;\n margin-bottom: 3rem;\n}\n.mx-2 {\n margin-left: 0.5rem;\n margin-right: 0.5rem;\n}\n.mx-4 {\n margin-left: 1rem;\n margin-right: 1rem;\n}\n.mx-8 {\n margin-left: 2rem;\n margin-right: 2rem;\n}\n.w-full {\n width: 100%;\n}\n.w-1\\/2 {\n width: 50%;\n}\n.w-1\\/3 {\n width: 33.333333%;\n}\n.w-2\\/3 {\n width: 66.666667%;\n}\n.w-4 {\n width: 1rem;\n}\n.w-14 {\n width: 3.5rem;\n /* 56px */\n}\n.w-20 {\n width: 5rem;\n /* 80px */\n}\n.h-full {\n height: 100%;\n}\n.h-4 {\n height: 1rem;\n}\n.h-5 {\n height: 1.25rem;\n}\n.h-6 {\n height: 1.5rem;\n}\n.h-8 {\n height: 2rem;\n}\n.h-14 {\n height: 3.5rem;\n /* 56px */\n}\n.h-80 {\n height: 20rem;\n}\n.h-96 {\n height: 24rem;\n}\n.cursor-pointer {\n cursor: pointer;\n}\n.cursor-not-allowed {\n cursor: not-allowed;\n}\n.grid-cols-2 {\n grid-template-columns: repeat(2, minmax(0, 1fr));\n}\n.grid-cols-3 {\n grid-template-columns: repeat(3, minmax(0, 1fr));\n}\n.grid-cols-4 {\n grid-template-columns: repeat(4, minMax(0, 1fr));\n}\n.col-span-2 {\n grid-column: span 2 / span 2;\n}\n.col-span-3 {\n grid-column: span 3 / span 3;\n}\n.col-span-4 {\n grid-column: span 4 / span 4;\n}\n.col-span-full {\n grid-column: 1 / -1;\n}\n/* Background colors */\n.bg-black {\n background-color: #000000;\n}\n.bg-slate-50 {\n background-color: #f8fafc;\n}\n.bg-slate-100 {\n background-color: #f1f5f9;\n}\n.bg-slate-200 {\n background-color: #e2e8f0;\n}\n.bg-slate-300 {\n background-color: #cbd5e1;\n}\n.bg-slate-400 {\n background-color: #94a3b8;\n}\n.bg-slate-500 {\n background-color: #64748b;\n}\n.bg-slate-600 {\n background-color: #475569;\n}\n.bg-slate-700 {\n background-color: #334155;\n}\n.bg-slate-800 {\n background-color: #1e293b;\n}\n.bg-slate-900 {\n background-color: #0f172a;\n}\n.bg-slate-950 {\n background-color: #020617;\n}\n.bg-gray-50 {\n background-color: #f9fafb;\n}\n.bg-gray-100 {\n background-color: #f3f4f6;\n}\n.bg-gray-200 {\n background-color: #e5e7eb;\n}\n.bg-gray-300 {\n background-color: #d1d5db;\n}\n.bg-gray-400 {\n background-color: #9ca3af;\n}\n.bg-gray-500 {\n background-color: #6b7280;\n}\n.bg-gray-600 {\n background-color: #4b5563;\n}\n.bg-gray-700 {\n background-color: #374151;\n}\n.bg-gray-800 {\n background-color: #1f2937;\n}\n.bg-gray-900 {\n background-color: #111827;\n}\n.bg-gray-950 {\n background-color: #030712;\n}\n.bg-green-200 {\n background-color: #a7f3d0;\n}\n.bg-green-500 {\n background-color: #10b981;\n}\n.bg-blue-50 {\n background-color: #eff6ff;\n}\n.bg-blue-100 {\n background-color: #dbeafe;\n}\n.bg-blue-200 {\n background-color: #bfdbfe;\n}\n.bg-blue-300 {\n background-color: #93c5fd;\n}\n.bg-blue-400 {\n background-color: #60a5fa;\n}\n.bg-blue-500 {\n background-color: #3b82f6;\n}\n.bg-blue-600 {\n background-color: #2563eb;\n}\n.bg-blue-700 {\n background-color: #1d4ed8;\n}\n.bg-blue-800 {\n background-color: #1e40af;\n}\n.bg-blue-900 {\n background-color: #1e3a8a;\n}\n.bg-blue-950 {\n background-color: #172554;\n}\n.bg-orange-50 {\n background-color: #fff7ed;\n}\n.bg-orange-100 {\n background-color: #ffedd5;\n}\n.bg-orange-200 {\n background-color: #fed7aa;\n}\n.bg-orange-300 {\n background-color: #fdba74;\n}\n.bg-orange-400 {\n background-color: #fb923c;\n}\n.bg-orange-500 {\n background-color: #f97316;\n}\n.bg-orange-600 {\n background-color: #ea580c;\n}\n.bg-orange-700 {\n background-color: #c2410c;\n}\n.bg-orange-800 {\n background-color: #9a3412;\n}\n.bg-orange-900 {\n background-color: #7c2d12;\n}\n.bg-orange-950 {\n background-color: #431407;\n}\n.bg-yellow-200 {\n background-color: #fde68a;\n}\n.bg-red-200 {\n background-color: #fecaca;\n}\n/* Text colors */\n.text-black {\n color: #000000;\n}\n.text-white {\n color: #ffffff;\n}\n.text-slate-50 {\n color: #f8fafc;\n}\n.text-slate-100 {\n color: #f1f5f9;\n}\n.text-slate-200 {\n color: #e2e8f0;\n}\n.text-slate-300 {\n color: #cbd5e1;\n}\n.text-slate-400 {\n color: #94a3b8;\n}\n.text-slate-500 {\n color: #64748b;\n}\n.text-slate-600 {\n color: #475569;\n}\n.text-slate-700 {\n color: #334155;\n}\n.text-slate-800 {\n color: #1e293b;\n}\n.text-slate-900 {\n color: #0f172a;\n}\n.text-slate-950 {\n color: #020617;\n}\n.text-gray-50 {\n color: #f9fafb;\n}\n.text-gray-100 {\n color: #f3f4f6;\n}\n.text-gray-200 {\n color: #e5e7eb;\n}\n.text-gray-300 {\n color: #d1d5db;\n}\n.text-gray-400 {\n color: #9ca3af;\n}\n.text-gray-500 {\n color: #6b7280;\n}\n.text-gray-600 {\n color: #4b5563;\n}\n.text-gray-700 {\n color: #374151;\n}\n.text-gray-800 {\n color: #1f2937;\n}\n.text-gray-900 {\n color: #111827;\n}\n.text-gray-950 {\n color: #030712;\n}\n.text-green-600 {\n color: #059669;\n}\n.text-green-700 {\n color: #047857;\n}\n.text-blue-50 {\n color: #eff6ff;\n}\n.text-blue-100 {\n color: #dbeafe;\n}\n.text-blue-200 {\n color: #bfdbfe;\n}\n.text-blue-300 {\n color: #93c5fd;\n}\n.text-blue-400 {\n color: #60a5fa;\n}\n.text-blue-500 {\n color: #3b82f6;\n}\n.text-blue-600 {\n color: #2563eb;\n}\n.text-blue-700 {\n color: #1d4ed8;\n}\n.text-blue-800 {\n color: #1e40af;\n}\n.text-blue-900 {\n color: #1e3a8a;\n}\n.text-blue-950 {\n color: #172554;\n}\n.text-orange-50 {\n color: #fff7ed;\n}\n.text-orange-100 {\n color: #ffedd5;\n}\n.text-orange-200 {\n color: #fed7aa;\n}\n.text-orange-300 {\n color: #fdba74;\n}\n.text-orange-400 {\n color: #fb923c;\n}\n.text-orange-500 {\n color: #f97316;\n}\n.text-orange-600 {\n color: #ea580c;\n}\n.text-orange-700 {\n color: #c2410c;\n}\n.text-orange-800 {\n color: #9a3412;\n}\n.text-orange-900 {\n color: #7c2d12;\n}\n.text-orange-950 {\n color: #431407;\n}\n.text-yellow-500 {\n color: #f59e0b;\n}\n.text-yellow-700 {\n color: #b45309;\n}\n.text-red-500 {\n color: #ef4444;\n}\n.text-red-700 {\n color: #b91c1c;\n}\n.border {\n border-width: 1px;\n}\n.border-2 {\n border-width: 2px;\n}\n.border-l {\n border-left-width: 1px;\n}\n.border-dashed {\n border-style: dashed;\n}\n.border-solid {\n border-style: solid;\n}\n.border-slate-50 {\n border-color: #f8fafc;\n}\n.border-slate-100 {\n border-color: #f1f5f9;\n}\n.border-slate-200 {\n border-color: #e2e8f0;\n}\n.border-slate-300 {\n border-color: #cbd5e1;\n}\n.border-slate-400 {\n border-color: #94a3b8;\n}\n.border-slate-500 {\n border-color: #64748b;\n}\n.border-slate-600 {\n border-color: #475569;\n}\n.border-slate-700 {\n border-color: #334155;\n}\n.border-slate-800 {\n border-color: #1e293b;\n}\n.border-slate-900 {\n border-color: #0f172a;\n}\n.border-slate-950 {\n border-color: #020617;\n}\n.border-gray-400 {\n border-color: #9ca3af;\n}\n.border-gray-500 {\n border-color: #6b7280;\n}\n.origin-center {\n transform-origin: center;\n}\n.rotate-45 {\n transform: rotate(45deg);\n}\n.translate-x-2\\/4 {\n transform: translateX(50%);\n}\n.-translate-x-2\\/4 {\n transform: translateX(-50%);\n}\n.translate-y-2\\/4 {\n transform: translateY(50%);\n}\n.translate-y-full {\n transform: translateY(100%);\n}\n.-translate-y-full {\n transform: translateY(-100%);\n}\n.shadow-sm {\n box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.05);\n}\n.shadow {\n box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 2px -1px rgba(0, 0, 0, 0.1);\n}\n.shadow-md {\n box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -2px rgba(0, 0, 0, 0.1);\n}\n.shadow-lg {\n box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -4px rgba(0, 0, 0, 0.1);\n}\n.shadow-xl {\n box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 8px 10px -6px rgba(0, 0, 0, 0.1);\n}\n.shadow-2xl {\n box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.25);\n}\n.shadow-inner {\n box-shadow: inset 0 2px 4px 0 rgba(0, 0, 0, 0.05);\n}\n.shadow-none {\n box-shadow: 0 0 #0000;\n}\n@media (min-width: 768px) {\n .sm\\:flex {\n display: flex !important;\n }\n .sm\\:hidden {\n display: none !important;\n }\n}\n* {\n margin: 0;\n padding: 0;\n box-sizing: border-box !important;\n font-family: Inter, system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Helvetica Neue, Arial, Noto Sans, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol, Noto Color Emoji;\n line-height: 1.15;\n}\nbody {\n color: #232323;\n background-color: #f8fafc;\n}\nth {\n font-weight: normal;\n}\ncode {\n font-family: source-code-pro, Menlo, Monaco, Consolas, \"Courier New\", monospace;\n}\n@media only screen and (max-width: 768px) {\n select,\n textarea,\n input[type=\"text\"],\n input[type=\"password\"],\n input[type=\"datetime\"],\n input[type=\"datetime-local\"],\n input[type=\"date\"],\n input[type=\"month\"],\n input[type=\"time\"],\n input[type=\"week\"],\n input[type=\"number\"],\n input[type=\"email\"],\n input[type=\"url\"],\n input[type=\"search\"],\n input[type=\"tel\"],\n input[type=\"color\"] {\n font-size: 16px !important;\n }\n}\n@keyframes App-logo-spin {\n from {\n transform: rotate(0deg);\n }\n to {\n transform: rotate(360deg);\n }\n}\n";
|
|
1761
1737
|
styleInject(css_248z);
|
|
1762
1738
|
|
|
1763
1739
|
var paymentMethodsQuery = "query paymentMethods ($filter: String, $first: Int, $sort: String) {\n paymentMethods (filter: $filter, first: $first, sort: $sort) {\n nodes {\n id\n disabled\n pluginId\n accountId\n expirationDate\n plugin {\n guid\n id\n }\n state\n metadata {\n issuer\n identifier\n kind\n description\n icon\n }\n }\n }\n}";
|
|
@@ -1785,12 +1761,16 @@ var CardIcon = function () {
|
|
|
1785
1761
|
return (jsxs("svg", __assign({ width: "18", height: "18", viewBox: "0 0 18 18", fill: "none", xmlns: "http://www.w3.org/2000/svg" }, { children: [jsx("path", { d: "M15 3.75H3C2.17157 3.75 1.5 4.42157 1.5 5.25V12.75C1.5 13.5784 2.17157 14.25 3 14.25H15C15.8284 14.25 16.5 13.5784 16.5 12.75V5.25C16.5 4.42157 15.8284 3.75 15 3.75Z", stroke: SLATE_400, strokeWidth: "1.5", strokeLinecap: "round", strokeLinejoin: "round" }), jsx("path", { d: "M1.5 7.5H16.5", stroke: SLATE_400, strokeWidth: "1.5", strokeLinecap: "round", strokeLinejoin: "round" })] })));
|
|
1786
1762
|
};
|
|
1787
1763
|
|
|
1764
|
+
var Text$d = Typography.Text;
|
|
1788
1765
|
var PaymentOption = function (_a) {
|
|
1789
1766
|
var selected = _a.selected, paymentOption = _a.paymentOption, onClick = _a.onClick, name = _a.name;
|
|
1790
1767
|
var brandColor = useContext(BrandContext).brandColor;
|
|
1768
|
+
var darkMode = useContext(BunnyContext).darkMode;
|
|
1791
1769
|
var isAch = name === null || name === void 0 ? void 0 : name.toLowerCase().includes("ach");
|
|
1792
1770
|
var isCard = name === null || name === void 0 ? void 0 : name.toLowerCase().includes("card");
|
|
1793
|
-
return (jsxs(PaymentOptionContainer, __assign({ "$brandColor": brandColor, "$selected": selected, className: "flex justify-between items-center w-full cursor-pointer py-2 px-4 rounded border-solid
|
|
1771
|
+
return (jsxs(PaymentOptionContainer, __assign({ "$brandColor": brandColor, "$selected": selected, className: "flex justify-between items-center w-full cursor-pointer py-2 px-4 rounded border-solid ".concat(darkMode
|
|
1772
|
+
? "var(--row-background-dark) border-gray-500"
|
|
1773
|
+
: "bg-slate-50 border-slate-200", " border"), onClick: function () { return onClick(paymentOption); } }, { children: [jsxs("div", __assign({ className: "flex gap-2 items-center" }, { children: [jsx(Checkbox, { checked: selected, className: darkMode ? "border-gray-400" : "" }), jsx(Text$d, { children: name })] })), isAch ? (jsx(BankOutlined$1, { className: "text-slate-400" })) : isCard ? (jsx(CardIcon, {})) : (jsx(CardIcon, {}))] })));
|
|
1794
1774
|
};
|
|
1795
1775
|
var PaymentOptionContainer = styled.div(templateObject_1$8 || (templateObject_1$8 = __makeTemplateObject(["\n transition: border 0.3s ease;\n\n ", "\n\n &:hover {\n border-color: ", ";\n }\n"], ["\n transition: border 0.3s ease;\n\n ", "\n\n &:hover {\n border-color: ", ";\n }\n"])), function (_a) {
|
|
1796
1776
|
var $brandColor = _a.$brandColor, $selected = _a.$selected;
|
|
@@ -1907,16 +1887,28 @@ var useStripePlugin = function (plugin, token, subdomain, accountId) {
|
|
|
1907
1887
|
return stripe;
|
|
1908
1888
|
};
|
|
1909
1889
|
|
|
1890
|
+
var PaymentContext = createContext({});
|
|
1891
|
+
|
|
1910
1892
|
var CheckoutFooter = function (_a) {
|
|
1911
1893
|
var amountDue = _a.amountDue, currencyId = _a.currencyId, isSaving = _a.isSaving, onPaymentSubmit = _a.onPaymentSubmit, onlySavePaymentMethod = _a.onlySavePaymentMethod, noPadding = _a.noPadding;
|
|
1912
1894
|
var isMobile = useIsMobile$1();
|
|
1913
|
-
|
|
1914
|
-
|
|
1915
|
-
|
|
1916
|
-
|
|
1917
|
-
|
|
1918
|
-
|
|
1919
|
-
|
|
1895
|
+
var invoice = useContext(InvoiceCheckoutContext).invoice;
|
|
1896
|
+
var displayPayButtonNameAnyways = useContext(PaymentContext).displayPayButtonNameAnyways;
|
|
1897
|
+
var buttonName = function () {
|
|
1898
|
+
return onlySavePaymentMethod && !displayPayButtonNameAnyways
|
|
1899
|
+
? isSaving
|
|
1900
|
+
? "Saving"
|
|
1901
|
+
: "Save"
|
|
1902
|
+
: isSaving
|
|
1903
|
+
? "Paying"
|
|
1904
|
+
: "Pay";
|
|
1905
|
+
};
|
|
1906
|
+
useEffect(function () {
|
|
1907
|
+
if (invoice) {
|
|
1908
|
+
onPaymentSubmit();
|
|
1909
|
+
}
|
|
1910
|
+
}, [invoice]);
|
|
1911
|
+
return (jsx("div", __assign({ className: "flex justify-end gap-2 ".concat(noPadding ? "" : "pt-6") }, { children: jsx(Button, __assign({ className: "w-full", disabled: isSaving, onClick: onPaymentSubmit, size: isMobile ? "large" : "middle", type: "primary" }, { children: "".concat(buttonName()).concat(amountDue && currencyId
|
|
1920
1912
|
? " ".concat(Misc.formatCurrency(amountDue, currencyId))
|
|
1921
1913
|
: "") })) })));
|
|
1922
1914
|
};
|
|
@@ -2008,10 +2000,11 @@ var PaymentMethodForm$1 = function (_a) {
|
|
|
2008
2000
|
// Hooks
|
|
2009
2001
|
var elements = useElements();
|
|
2010
2002
|
var stripe = useStripe();
|
|
2011
|
-
var _b = useContext(BunnyContext), token = _b.token, subdomain = _b.subdomain
|
|
2003
|
+
var _b = useContext(BunnyContext), token = _b.token, subdomain = _b.subdomain;
|
|
2004
|
+
var accountId = useContext(PaymentContext).accountId;
|
|
2012
2005
|
// Handlers
|
|
2013
2006
|
var onSubmit = function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
2014
|
-
var submitError, response, clientSecret, intentResponse, paymentMethodId, error_1;
|
|
2007
|
+
var submitError, response, clientSecret, intentResponse, paymentMethodId, paymentMethodResponse, error_1;
|
|
2015
2008
|
var _a, _b;
|
|
2016
2009
|
return __generator(this, function (_c) {
|
|
2017
2010
|
switch (_c.label) {
|
|
@@ -2059,8 +2052,17 @@ var PaymentMethodForm$1 = function (_a) {
|
|
|
2059
2052
|
accountId: accountId,
|
|
2060
2053
|
})];
|
|
2061
2054
|
case 4:
|
|
2062
|
-
_c.sent();
|
|
2063
|
-
onPaymentSuccess({
|
|
2055
|
+
paymentMethodResponse = _c.sent();
|
|
2056
|
+
onPaymentSuccess({
|
|
2057
|
+
pluginPaymentResponse: {
|
|
2058
|
+
savePaymentMethod: true,
|
|
2059
|
+
plugin: plugin,
|
|
2060
|
+
token: paymentMethodResponse.token,
|
|
2061
|
+
},
|
|
2062
|
+
savedPaymentMethodResponse: {
|
|
2063
|
+
paymentMethodId: paymentMethodResponse.payload[0].id,
|
|
2064
|
+
},
|
|
2065
|
+
});
|
|
2064
2066
|
return [3 /*break*/, 6];
|
|
2065
2067
|
case 5:
|
|
2066
2068
|
error_1 = _c.sent();
|
|
@@ -2076,7 +2078,8 @@ var PaymentMethodForm$1 = function (_a) {
|
|
|
2076
2078
|
// This is just a wrapper to fetch the stripe object and pass it to the form
|
|
2077
2079
|
var StripeForm = function (_a) {
|
|
2078
2080
|
var payable = _a.payable, plugin = _a.plugin, isSaving = _a.isSaving, setIsSaving = _a.setIsSaving, onFail = _a.onFail, onPaymentSuccess = _a.onPaymentSuccess;
|
|
2079
|
-
var _b = useContext(BunnyContext), token = _b.token, subdomain = _b.subdomain
|
|
2081
|
+
var _b = useContext(BunnyContext), token = _b.token, subdomain = _b.subdomain;
|
|
2082
|
+
var accountId = useContext(PaymentContext).accountId;
|
|
2080
2083
|
var stripe = useStripePlugin(plugin, token, subdomain, accountId);
|
|
2081
2084
|
var onlySavePaymentMethod = !payable;
|
|
2082
2085
|
if (!stripe)
|
|
@@ -2104,6 +2107,10 @@ var StripeForm = function (_a) {
|
|
|
2104
2107
|
}
|
|
2105
2108
|
};
|
|
2106
2109
|
|
|
2110
|
+
var getQuoteAmountDue = function (quote) {
|
|
2111
|
+
return quote.amountDue;
|
|
2112
|
+
};
|
|
2113
|
+
|
|
2107
2114
|
// Simulated payment creation and confirmation
|
|
2108
2115
|
var confirmPayment = function (_a) {
|
|
2109
2116
|
var amount = _a.amount, currency = _a.currency, cardDetails = _a.cardDetails;
|
|
@@ -2170,34 +2177,34 @@ var storePayment = function (options, plugin, accountId, subdomain) { return __a
|
|
|
2170
2177
|
});
|
|
2171
2178
|
}); };
|
|
2172
2179
|
|
|
2173
|
-
var
|
|
2174
|
-
var formatCardNumber = function (cardNumber) {
|
|
2175
|
-
return cardNumber.replace(/(\d{4})(?=\d)/g, "$1 ");
|
|
2176
|
-
};
|
|
2177
|
-
var DemoPayCardNumber = function (_a) {
|
|
2180
|
+
var DemoPayCardCvc = function (_a) {
|
|
2178
2181
|
var autoFocus = _a.autoFocus, onChange = _a.onChange, placeholder = _a.placeholder, value = _a.value;
|
|
2179
2182
|
var onKeyPress = function (event) {
|
|
2180
2183
|
if (!isDigit(event.key) && !isValidKey(event.keyCode))
|
|
2181
2184
|
event.preventDefault();
|
|
2182
2185
|
};
|
|
2183
2186
|
var onNumberChange = function (event) {
|
|
2184
|
-
var
|
|
2185
|
-
onChange(
|
|
2187
|
+
var cvc = event.target.value.replace(/\D/g, "");
|
|
2188
|
+
onChange(cvc);
|
|
2186
2189
|
};
|
|
2187
|
-
return (jsx("div", __assign({ className: "grow" }, { children: jsx(Input, { autoFocus: autoFocus,
|
|
2190
|
+
return (jsx("div", __assign({ className: "grow" }, { children: jsx(Input, { autoFocus: autoFocus, onKeyDown: onKeyPress, onKeyUp: onKeyPress, onChange: onNumberChange, value: value, maxLength: 3, placeholder: placeholder || "CVC" }) })));
|
|
2188
2191
|
};
|
|
2189
2192
|
|
|
2190
|
-
var
|
|
2193
|
+
var CARD_NUMBER_MAX_LENGTH = 19; // Why 19 instead of 16? Because we add spaces
|
|
2194
|
+
var formatCardNumber = function (cardNumber) {
|
|
2195
|
+
return cardNumber.replace(/(\d{4})(?=\d)/g, "$1 ");
|
|
2196
|
+
};
|
|
2197
|
+
var DemoPayCardNumber = function (_a) {
|
|
2191
2198
|
var autoFocus = _a.autoFocus, onChange = _a.onChange, placeholder = _a.placeholder, value = _a.value;
|
|
2192
2199
|
var onKeyPress = function (event) {
|
|
2193
2200
|
if (!isDigit(event.key) && !isValidKey(event.keyCode))
|
|
2194
2201
|
event.preventDefault();
|
|
2195
2202
|
};
|
|
2196
2203
|
var onNumberChange = function (event) {
|
|
2197
|
-
var
|
|
2198
|
-
onChange(
|
|
2204
|
+
var number = event.target.value.replace(/\s/g, "");
|
|
2205
|
+
onChange(number);
|
|
2199
2206
|
};
|
|
2200
|
-
return (jsx("div", __assign({ className: "grow" }, { children: jsx(Input, { autoFocus: autoFocus, onKeyDown: onKeyPress, onKeyUp: onKeyPress, onChange: onNumberChange,
|
|
2207
|
+
return (jsx("div", __assign({ className: "grow" }, { children: jsx(Input, { autoFocus: autoFocus, maxLength: CARD_NUMBER_MAX_LENGTH, onKeyDown: onKeyPress, onKeyUp: onKeyPress, onChange: onNumberChange, placeholder: placeholder || "Card Number", value: formatCardNumber(value) }) })));
|
|
2201
2208
|
};
|
|
2202
2209
|
|
|
2203
2210
|
var DemoPayExpiry = function (_a) {
|
|
@@ -2213,15 +2220,13 @@ var DemoPayExpiry = function (_a) {
|
|
|
2213
2220
|
return (jsx("div", __assign({ className: "grow" }, { children: jsx(Input, { autoFocus: autoFocus, onKeyDown: onKeyPress, onKeyUp: onKeyPress, onChange: onNumberChange, value: formatCardExpiry(value), maxLength: 5, placeholder: placeholder || "MM/YY" }) })));
|
|
2214
2221
|
};
|
|
2215
2222
|
|
|
2216
|
-
var
|
|
2217
|
-
return quote.amountDue;
|
|
2218
|
-
};
|
|
2219
|
-
|
|
2223
|
+
var Text$c = Typography.Text;
|
|
2220
2224
|
var TEST_CARD = "4242424242424242";
|
|
2221
2225
|
var DemoPayForm = function (_a) {
|
|
2222
2226
|
var isSaving = _a.isSaving, invoice = _a.invoice, onFail = _a.onFail, onPaymentSuccess = _a.onPaymentSuccess, plugin = _a.plugin, quote = _a.quote, setIsSaving = _a.setIsSaving;
|
|
2223
2227
|
// Context
|
|
2224
|
-
var _b = useContext(BunnyContext), token = _b.token, subdomain = _b.subdomain,
|
|
2228
|
+
var _b = useContext(BunnyContext), token = _b.token, subdomain = _b.subdomain, darkMode = _b.darkMode;
|
|
2229
|
+
var accountId = useContext(PaymentContext).accountId;
|
|
2225
2230
|
// Local state
|
|
2226
2231
|
var _c = useState(false), savePaymentMethod = _c[0], setSavePaymentMethod = _c[1];
|
|
2227
2232
|
var _d = useState({
|
|
@@ -2233,12 +2238,13 @@ var DemoPayForm = function (_a) {
|
|
|
2233
2238
|
var currencyId = (quote === null || quote === void 0 ? void 0 : quote.currencyId) || (invoice === null || invoice === void 0 ? void 0 : invoice.currency);
|
|
2234
2239
|
var onlySavePaymentMethod = !quote && !invoice;
|
|
2235
2240
|
var onPaymentSubmit = function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
2236
|
-
var response, response, error_1;
|
|
2241
|
+
var response, paymentMethodId, response, error_1;
|
|
2237
2242
|
return __generator(this, function (_a) {
|
|
2238
2243
|
switch (_a.label) {
|
|
2239
2244
|
case 0:
|
|
2240
2245
|
_a.trys.push([0, 6, , 7]);
|
|
2241
2246
|
if (!onlySavePaymentMethod) return [3 /*break*/, 2];
|
|
2247
|
+
setIsSaving(true);
|
|
2242
2248
|
return [4 /*yield*/, storePayment({
|
|
2243
2249
|
testCreditCardNumber: unformatCardNumber(cardDetails.number),
|
|
2244
2250
|
testCreditCardCvc: cardDetails.cvc.toString(),
|
|
@@ -2247,12 +2253,22 @@ var DemoPayForm = function (_a) {
|
|
|
2247
2253
|
}, plugin, accountId, subdomain)];
|
|
2248
2254
|
case 1:
|
|
2249
2255
|
response = _a.sent();
|
|
2256
|
+
paymentMethodId = response.payload[0].id;
|
|
2250
2257
|
if (response.status !== "success")
|
|
2251
2258
|
throw new Error(response === null || response === void 0 ? void 0 : response.message);
|
|
2252
|
-
onPaymentSuccess({
|
|
2253
|
-
|
|
2254
|
-
|
|
2255
|
-
|
|
2259
|
+
onPaymentSuccess({
|
|
2260
|
+
pluginPaymentResponse: {
|
|
2261
|
+
plugin: plugin,
|
|
2262
|
+
token: response.token,
|
|
2263
|
+
savePaymentMethod: savePaymentMethod,
|
|
2264
|
+
},
|
|
2265
|
+
savedPaymentMethodResponse: {
|
|
2266
|
+
paymentMethodId: paymentMethodId,
|
|
2267
|
+
},
|
|
2268
|
+
});
|
|
2269
|
+
return [3 /*break*/, 5];
|
|
2270
|
+
case 2:
|
|
2271
|
+
if (!(amountDue !== undefined && currencyId)) return [3 /*break*/, 4];
|
|
2256
2272
|
setIsSaving(true);
|
|
2257
2273
|
if (cardDetails.number !== TEST_CARD)
|
|
2258
2274
|
throw new Error("Only the card number 4242 4242 4242 4242 will be accepted.");
|
|
@@ -2276,6 +2292,7 @@ var DemoPayForm = function (_a) {
|
|
|
2276
2292
|
savePaymentMethod: savePaymentMethod,
|
|
2277
2293
|
},
|
|
2278
2294
|
});
|
|
2295
|
+
setIsSaving(false);
|
|
2279
2296
|
return [3 /*break*/, 5];
|
|
2280
2297
|
case 4:
|
|
2281
2298
|
onFail(new Error("No amount or currencyId"));
|
|
@@ -2298,9 +2315,15 @@ var DemoPayForm = function (_a) {
|
|
|
2298
2315
|
var onCardCvcChange = function (cvc) {
|
|
2299
2316
|
setCardDetails(__assign(__assign({}, cardDetails), { cvc: cvc }));
|
|
2300
2317
|
};
|
|
2301
|
-
return (jsxs("div", __assign({ className: "flex flex-col gap-2" }, { children: [jsxs(StyledInputs, __assign({ className: "flex flex-col gap-2" }, { children: [jsx(DemoPayCardNumber, { onChange: onCardNumberChange, value: cardDetails.number }), jsxs("div", __assign({ className: "flex gap-2" }, { children: [jsx(DemoPayExpiry, { onChange: onCardExpiryChange, value: cardDetails.expiry }), jsx(DemoPayCardCvc, { onChange: onCardCvcChange, value: cardDetails.cvc })] }))] })), jsx(
|
|
2318
|
+
return (jsxs("div", __assign({ className: "flex flex-col gap-2" }, { children: [jsxs(StyledInputs, __assign({ className: "flex flex-col gap-2", darkMode: darkMode !== null && darkMode !== void 0 ? darkMode : false }, { children: [jsx(DemoPayCardNumber, { onChange: onCardNumberChange, value: cardDetails.number }), jsxs("div", __assign({ className: "flex gap-2" }, { children: [jsx(DemoPayExpiry, { onChange: onCardExpiryChange, value: cardDetails.expiry }), jsx(DemoPayCardCvc, { onChange: onCardCvcChange, value: cardDetails.cvc })] }))] })), jsx(Text$c, __assign({ className: "text-xs" }, { children: "DemoPay is for testing only." })), !onlySavePaymentMethod && (jsx(Checkbox, __assign({ className: "mt-2", onChange: function (e) { return setSavePaymentMethod(e.target.checked); } }, { children: "Save as primary payment method" }))), jsx(CheckoutFooter, { amountDue: amountDue, currencyId: currencyId, isSaving: isSaving, onPaymentSubmit: onPaymentSubmit, onlySavePaymentMethod: onlySavePaymentMethod })] })));
|
|
2302
2319
|
};
|
|
2303
|
-
var StyledInputs = styled.div(templateObject_1$7 || (templateObject_1$7 = __makeTemplateObject(["\n .ant-input {\n background-color:
|
|
2320
|
+
var StyledInputs = styled.div(templateObject_1$7 || (templateObject_1$7 = __makeTemplateObject(["\n .ant-input {\n background-color: ", " !important;\n }\n .ant-input:not(:focus) {\n border-color: ", " !important;\n }\n"], ["\n .ant-input {\n background-color: ", " !important;\n }\n .ant-input:not(:focus) {\n border-color: ", " !important;\n }\n"])), function (_a) {
|
|
2321
|
+
var darkMode = _a.darkMode;
|
|
2322
|
+
return darkMode ? "var(--row-background-dark)" : "white";
|
|
2323
|
+
}, function (_a) {
|
|
2324
|
+
var darkMode = _a.darkMode;
|
|
2325
|
+
return darkMode ? GRAY_500 : GRAY_200;
|
|
2326
|
+
});
|
|
2304
2327
|
var templateObject_1$7;
|
|
2305
2328
|
|
|
2306
2329
|
var finixStyles = function (isMobile) { return ({
|
|
@@ -2391,7 +2414,8 @@ var formatFinixError = function (response) {
|
|
|
2391
2414
|
var FinixCardPaymentForm = function (_a) {
|
|
2392
2415
|
var finixConfig = _a.formData, invoice = _a.invoice, isSaving = _a.isSaving, onFail = _a.onFail, onPaymentSuccess = _a.onPaymentSuccess, plugin = _a.plugin, quote = _a.quote, setIsSaving = _a.setIsSaving;
|
|
2393
2416
|
// Context
|
|
2394
|
-
var _b = useContext(BunnyContext), token = _b.token, subdomain = _b.subdomain
|
|
2417
|
+
var _b = useContext(BunnyContext), token = _b.token, subdomain = _b.subdomain;
|
|
2418
|
+
var accountId = useContext(PaymentContext).accountId;
|
|
2395
2419
|
var isMobile = useIsMobile$1();
|
|
2396
2420
|
// Local state
|
|
2397
2421
|
var _c = useState(false), savePaymentMethod = _c[0], setSavePaymentMethod = _c[1];
|
|
@@ -2733,7 +2757,7 @@ var PaymentForm = function (_a) {
|
|
|
2733
2757
|
return (jsx(ActualPaymentForm, { invoice: invoice, isSaving: isSaving, onFail: onFail, onPaymentSuccess: onPaymentSuccess, quote: quote, setIsSaving: setIsSaving }));
|
|
2734
2758
|
};
|
|
2735
2759
|
|
|
2736
|
-
var MUTATION$
|
|
2760
|
+
var MUTATION$7 = "\n mutation checkout(\n $invoiceId: ID,\n $quoteId: ID,\n $paymentMethodId: ID,\n $paymentMethodData: CheckoutPaymentMethodAttributes\n ) {\n checkout(\n invoiceId: $invoiceId,\n quoteId: $quoteId,\n paymentMethodId: $paymentMethodId,\n paymentMethodData: $paymentMethodData\n ) {\n invoice {\n id\n state\n amount\n amountDue\n }\n payment {\n id\n state\n amount\n }\n paymentApplication {\n id\n invoiceId\n paymentId\n }\n transaction {\n id\n amount\n }\n }\n }\n";
|
|
2737
2761
|
var checkout = function (_a) {
|
|
2738
2762
|
var quoteId = _a.quoteId, invoiceId = _a.invoiceId, paymentMethodId = _a.paymentMethodId, paymentMethodData = _a.paymentMethodData, token = _a.token, subdomain = _a.subdomain;
|
|
2739
2763
|
return __awaiter(void 0, void 0, void 0, function () {
|
|
@@ -2750,7 +2774,7 @@ var checkout = function (_a) {
|
|
|
2750
2774
|
mutationVars.paymentMethodData = __assign(__assign({}, paymentMethodData), { metadata: paymentMethodData.metadata });
|
|
2751
2775
|
}
|
|
2752
2776
|
return [4 /*yield*/, gqlRequest({
|
|
2753
|
-
query: MUTATION$
|
|
2777
|
+
query: MUTATION$7,
|
|
2754
2778
|
token: token,
|
|
2755
2779
|
vars: mutationVars,
|
|
2756
2780
|
subdomain: subdomain,
|
|
@@ -2768,8 +2792,9 @@ var checkout = function (_a) {
|
|
|
2768
2792
|
});
|
|
2769
2793
|
};
|
|
2770
2794
|
|
|
2795
|
+
var InvoiceCheckoutContext = createContext({});
|
|
2771
2796
|
var InvoiceCheckout = function (_a) {
|
|
2772
|
-
var isSaving = _a.isSaving, onSuccess = _a.onSuccess, onFail = _a.onFail, invoice = _a.invoice, setIsSaving = _a.setIsSaving;
|
|
2797
|
+
var isSaving = _a.isSaving, onSuccess = _a.onSuccess, onFail = _a.onFail, invoice = _a.invoice, setIsSaving = _a.setIsSaving, preCheckout = _a.preCheckout, setIsPreCheckoutLoading = _a.setIsPreCheckoutLoading, isPreCheckoutLoading = _a.isPreCheckoutLoading, payImmediatelyGivenInvoice = _a.payImmediatelyGivenInvoice, checkoutButtonName = _a.checkoutButtonName;
|
|
2773
2798
|
var _b = useContext(BunnyContext), subdomain = _b.subdomain, token = _b.token;
|
|
2774
2799
|
var checkoutMutation = useMutation({
|
|
2775
2800
|
mutationFn: function (_a) {
|
|
@@ -2777,7 +2802,7 @@ var InvoiceCheckout = function (_a) {
|
|
|
2777
2802
|
if (savedPaymentMethod) {
|
|
2778
2803
|
var paymentMethodId = savedPaymentMethod.paymentMethodId;
|
|
2779
2804
|
return checkout({
|
|
2780
|
-
invoiceId: invoice.id,
|
|
2805
|
+
invoiceId: invoice === null || invoice === void 0 ? void 0 : invoice.id,
|
|
2781
2806
|
paymentMethodId: paymentMethodId,
|
|
2782
2807
|
token: token,
|
|
2783
2808
|
subdomain: subdomain,
|
|
@@ -2787,7 +2812,7 @@ var InvoiceCheckout = function (_a) {
|
|
|
2787
2812
|
var plugin = pluginPaymentMethod.plugin, savePaymentMethod = pluginPaymentMethod.savePaymentMethod, metadata = pluginPaymentMethod.metadata;
|
|
2788
2813
|
var paymentToken = pluginPaymentMethod.token;
|
|
2789
2814
|
return checkout({
|
|
2790
|
-
invoiceId: invoice.id,
|
|
2815
|
+
invoiceId: invoice === null || invoice === void 0 ? void 0 : invoice.id,
|
|
2791
2816
|
paymentMethodData: {
|
|
2792
2817
|
metadata: metadata,
|
|
2793
2818
|
pluginGuid: plugin.guid,
|
|
@@ -2833,7 +2858,14 @@ var InvoiceCheckout = function (_a) {
|
|
|
2833
2858
|
});
|
|
2834
2859
|
});
|
|
2835
2860
|
};
|
|
2836
|
-
return (jsx(
|
|
2861
|
+
return (jsx(InvoiceCheckoutContext.Provider, __assign({ value: {
|
|
2862
|
+
preCheckout: preCheckout,
|
|
2863
|
+
payImmediatelyGivenInvoice: payImmediatelyGivenInvoice,
|
|
2864
|
+
checkoutButtonName: checkoutButtonName,
|
|
2865
|
+
invoice: invoice,
|
|
2866
|
+
setIsPreCheckoutLoading: setIsPreCheckoutLoading,
|
|
2867
|
+
isPreCheckoutLoading: isPreCheckoutLoading,
|
|
2868
|
+
} }, { children: jsx(PaymentForm, { isSaving: isSaving, onPaymentSuccess: handleCheckout, onFail: onFail, invoice: invoice, setIsSaving: setIsSaving }) })));
|
|
2837
2869
|
};
|
|
2838
2870
|
|
|
2839
2871
|
var fetchPDF = function (window, apiEndpoint, invoiceUuid) { return __awaiter(void 0, void 0, void 0, function () {
|
|
@@ -2879,7 +2911,7 @@ function InvoicePDF(_a) {
|
|
|
2879
2911
|
}, title: "Invoice PDF", width: "100%" }));
|
|
2880
2912
|
}
|
|
2881
2913
|
|
|
2882
|
-
var MUTATION$
|
|
2914
|
+
var MUTATION$6 = "\nquery FormattedInvoice($id: ID) {\n formattedInvoice(id: $id) {\n amount\n amountDue\n amountPaid\n billingCity\n billingCountry\n billingState\n billingStreet\n billingZip\n createdAt\n credits\n currency\n currencyId\n currencySymbol\n customerBillingCity\n customerBillingContact\n customerBillingCountry\n customerBillingState\n customerBillingStreet\n customerBillingZip\n customerName\n dueAt\n html\n id\n isLegacy\n netPaymentDays\n number\n payableId\n poNumber\n printedState\n smallUnitAmountDue\n state\n subscriptionEndDate\n subscriptionStartDate\n subtotal\n taxAmount\n taxNumber\n uuid\n vendorName\n formattedLines {\n amount\n billingPeriodEnd\n billingPeriodStart\n chargeType\n discount\n frequency\n lineText\n position\n price\n priceDecimals\n priceListChargeId\n priceListChargeName\n priceListName\n prorationRate\n quantity\n unitOfMeasure\n priceTiers {\n price\n starts\n }\n }\n }\n}";
|
|
2883
2915
|
var getFormattedInvoice = function (_a) {
|
|
2884
2916
|
var id = _a.id, token = _a.token, subdomain = _a.subdomain;
|
|
2885
2917
|
return __awaiter(void 0, void 0, void 0, function () {
|
|
@@ -2889,7 +2921,7 @@ var getFormattedInvoice = function (_a) {
|
|
|
2889
2921
|
case 0:
|
|
2890
2922
|
vars = { id: id };
|
|
2891
2923
|
return [4 /*yield*/, gqlRequest({
|
|
2892
|
-
query: MUTATION$
|
|
2924
|
+
query: MUTATION$6,
|
|
2893
2925
|
token: token,
|
|
2894
2926
|
vars: vars,
|
|
2895
2927
|
subdomain: subdomain,
|
|
@@ -2945,7 +2977,7 @@ function ActualInvoice(_a) {
|
|
|
2945
2977
|
return (jsxs(Fragment, { children: [jsxs(Helmet, { children: [jsxs("title", { children: [formattedInvoice.vendorName, " ", DOCUMENT_NAME$1.INVOICE] }), jsx("meta", { name: "description", content: QuoteInvoiceUtils.quoteMetaDescription(formattedInvoice.vendorName) }), jsx("meta", { property: "og:type", content: "website" }), jsx("meta", { property: "og:title", content: QuoteInvoiceUtils.quoteMetaTitle({
|
|
2946
2978
|
vendorName: formattedInvoice.vendorName,
|
|
2947
2979
|
documentName: DOCUMENT_NAME$1.INVOICE,
|
|
2948
|
-
}) }), jsx("meta", { property: "og:description", content: QuoteInvoiceUtils.quoteMetaDescription(formattedInvoice.vendorName) })] }), jsxs("div", __assign({ className: "flex gap-6 ".concat(isMobile ? "flex-col w-full overflow-hidden" : "shadow-padding-xb") }, { children: [formattedInvoice.isLegacy ? (jsx("div", __assign({ className: "flex justify-center w-full
|
|
2980
|
+
}) }), jsx("meta", { property: "og:description", content: QuoteInvoiceUtils.quoteMetaDescription(formattedInvoice.vendorName) })] }), jsxs("div", __assign({ className: "flex gap-6 ".concat(isMobile ? "flex-col w-full overflow-hidden" : "shadow-padding-xb") }, { children: [formattedInvoice.isLegacy ? (jsx("div", __assign({ className: "flex justify-center w-full" }, { children: jsx(InvoicePDF, { invoiceUuid: formattedInvoice.uuid, subdomain: subdomain }) }))) : (invoiceQuoteViewComponent || (jsx(InvoiceQuoteView, { html: formattedInvoice.html, isMobile: isMobile, formattedInvoice: formattedInvoice, backButtonName: backButtonName, onBackButtonClick: onBackButtonClick }))), !isMobile && isInvoicePayable && (jsx(Divider, { className: "h-full", type: "vertical" })), isInvoicePayable && (jsx(InvoiceCheckout, { invoice: formattedInvoice, isSaving: isSaving, onFail: function (error) {
|
|
2949
2981
|
onFail(error);
|
|
2950
2982
|
setIsSaving(false);
|
|
2951
2983
|
}, onSuccess: onSuccess, setIsSaving: setIsSaving }))] }))] }));
|
|
@@ -2955,8 +2987,6 @@ function Invoice(_a) {
|
|
|
2955
2987
|
return (jsx(HelmetProvider, { children: jsx(ActualInvoice, { id: id, invoiceQuoteViewComponent: invoiceQuoteViewComponent, backButtonName: backButtonName, onBackButtonClick: onBackButtonClick, onPaymentSuccess: onPaymentSuccess }) }));
|
|
2956
2988
|
}
|
|
2957
2989
|
|
|
2958
|
-
var QuoteContext = createContext({});
|
|
2959
|
-
|
|
2960
2990
|
var DOCUMENT_NAME;
|
|
2961
2991
|
(function (DOCUMENT_NAME) {
|
|
2962
2992
|
DOCUMENT_NAME["INVOICE"] = "invoice";
|
|
@@ -3082,7 +3112,7 @@ var useSigningComplete = function (_a) {
|
|
|
3082
3112
|
var queryClient = useQueryClient();
|
|
3083
3113
|
var searchParams = useContext(NavigationContext).searchParams;
|
|
3084
3114
|
// Check for return param from docusign and show cosmetic quote acceptance
|
|
3085
|
-
var eventParam = searchParams.get("event");
|
|
3115
|
+
var eventParam = searchParams ? searchParams.get("event") : null;
|
|
3086
3116
|
useEffect(function () {
|
|
3087
3117
|
if (data && eventParam === "signing_complete") {
|
|
3088
3118
|
data.state = "ACCEPTED";
|
|
@@ -3166,8 +3196,6 @@ var PandadocPollingModal = function (_a) {
|
|
|
3166
3196
|
handleAllErrorFormats(rsp.errors);
|
|
3167
3197
|
else if (rsp.data.quotePollSigningUrl.status === "document.sent") {
|
|
3168
3198
|
setVisible(false);
|
|
3169
|
-
console.log("rsp", rsp);
|
|
3170
|
-
console.log("rsp.data.quotePollSigningUrl.redirectUri", rsp.data.quotePollSigningUrl.redirectUri);
|
|
3171
3199
|
window.location.href = rsp.data.quotePollSigningUrl.redirectUri;
|
|
3172
3200
|
}
|
|
3173
3201
|
setInfoMessage(rsp.data.quotePollSigningUrl.infoMessage || "");
|
|
@@ -3187,55 +3215,42 @@ var PandadocPollingModal = function (_a) {
|
|
|
3187
3215
|
return (jsxs(Modal, __assign({ title: "Uploading quote to Pandadoc", open: isVisible, closable: false, footer: null }, { children: [jsxs("div", __assign({ className: "py-4 text-center" }, { children: ["This may take a few seconds", ".".repeat(numberOfPolls)] })), jsx("div", __assign({ className: "text-center" }, { children: infoMessage }))] })));
|
|
3188
3216
|
};
|
|
3189
3217
|
|
|
3190
|
-
var
|
|
3191
|
-
var getFormattedQuote = function (
|
|
3192
|
-
var
|
|
3193
|
-
return
|
|
3194
|
-
|
|
3195
|
-
|
|
3196
|
-
|
|
3197
|
-
|
|
3198
|
-
|
|
3199
|
-
|
|
3200
|
-
|
|
3201
|
-
|
|
3202
|
-
|
|
3203
|
-
|
|
3204
|
-
|
|
3205
|
-
|
|
3206
|
-
|
|
3207
|
-
|
|
3208
|
-
|
|
3209
|
-
|
|
3210
|
-
return [4 /*yield*/, response.json()];
|
|
3211
|
-
case 2:
|
|
3212
|
-
_a = _b.sent(), data = _a.data, errors = _a.errors;
|
|
3213
|
-
if (errors) {
|
|
3214
|
-
throw new Error(errors[0].message);
|
|
3215
|
-
}
|
|
3216
|
-
formattedLines = data.formattedQuote.formattedLines;
|
|
3217
|
-
decimals = Math.max.apply(Math, formattedLines.map(function (x) { return x.priceDecimals; }));
|
|
3218
|
-
formattedLines.forEach(function (line) {
|
|
3219
|
-
line.priceDecimals = decimals;
|
|
3220
|
-
});
|
|
3221
|
-
return [2 /*return*/, data === null || data === void 0 ? void 0 : data.formattedQuote];
|
|
3222
|
-
}
|
|
3218
|
+
var MUTATION$5 = "\n query formattedQuote ($id: ID) {\n formattedQuote (id: $id) {\n payableId\n acceptedAt\n acceptedByName\n amount\n amountDue\n amountsByPeriod {\n id\n name\n amount\n }\n object { documents { id filename size date url } }\n billingCity\n billingCountry\n billingState\n billingStreet\n billingZip\n contactName\n currency\n customerBillingCity\n customerBillingCountry\n customerBillingState\n customerBillingStreet\n customerBillingZip\n customerName\n discount\n discountValue\n duration\n endDate\n expiresAt\n html\n formattedLines {\n amount\n amountsByPeriod {\n quantity\n id\n name\n startDate\n endDate\n amount\n amountsByTier {\n id\n tier {\n starts\n ends\n price\n }\n quantity\n amount\n }\n prorationRate\n }\n billingPeriodEnd\n billingPeriodStart\n chargeType\n discount\n frequency\n isRamp\n periods\n planName\n position\n price\n priceDecimals\n priceListChargeId\n priceListChargeName\n priceListId\n priceListName\n priceTiers {\n price\n starts\n }\n pricingModel\n productName\n prorationRate\n quantity\n showProductNameOnLineItem\n taxCode\n trialEndDate\n trialStartDate\n unitOfMeasure\n vatCode\n }\n netPaymentDays\n notes\n number\n poNumberRequired\n salesContactEmail\n sharedAt\n startDate\n state\n subtotal\n taxAmount\n taxNumberLabel\n taxNumberRequired\n vendorName\n }\n }";
|
|
3219
|
+
var getFormattedQuote = function (_a) {
|
|
3220
|
+
var id = _a.id, token = _a.token, subdomain = _a.subdomain;
|
|
3221
|
+
return __awaiter(void 0, void 0, void 0, function () {
|
|
3222
|
+
var vars, response;
|
|
3223
|
+
return __generator(this, function (_b) {
|
|
3224
|
+
switch (_b.label) {
|
|
3225
|
+
case 0:
|
|
3226
|
+
vars = { id: id };
|
|
3227
|
+
return [4 /*yield*/, gqlRequest({
|
|
3228
|
+
query: MUTATION$5,
|
|
3229
|
+
token: token,
|
|
3230
|
+
vars: vars,
|
|
3231
|
+
subdomain: subdomain,
|
|
3232
|
+
})];
|
|
3233
|
+
case 1:
|
|
3234
|
+
response = _b.sent();
|
|
3235
|
+
return [2 /*return*/, response === null || response === void 0 ? void 0 : response.formattedQuote];
|
|
3236
|
+
}
|
|
3237
|
+
});
|
|
3223
3238
|
});
|
|
3224
|
-
}
|
|
3239
|
+
};
|
|
3225
3240
|
|
|
3226
3241
|
var documentName = DOCUMENT_NAME.QUOTE;
|
|
3227
|
-
function ActualQuote() {
|
|
3228
|
-
var
|
|
3229
|
-
var id =
|
|
3230
|
-
var
|
|
3242
|
+
function ActualQuote(_a) {
|
|
3243
|
+
var _b, _c;
|
|
3244
|
+
var id = _a.id;
|
|
3245
|
+
var _d = useContext(BunnyContext), token = _d.token, subdomain = _d.subdomain;
|
|
3231
3246
|
var entityBranding = useContext(BrandContext);
|
|
3232
3247
|
var isMobile = useIsMobile$1();
|
|
3233
3248
|
// Queries
|
|
3234
|
-
var
|
|
3249
|
+
var _e = useQuery({
|
|
3235
3250
|
queryKey: QueryKeyFactory.default.createQuoteKey(token),
|
|
3236
|
-
queryFn: function () { return getFormattedQuote(token, subdomain, id); },
|
|
3251
|
+
queryFn: function () { return getFormattedQuote({ token: token, subdomain: subdomain, id: id }); },
|
|
3237
3252
|
placeholderData: keepPreviousData,
|
|
3238
|
-
}).data;
|
|
3253
|
+
}), data = _e.data; _e.isLoading; _e.isError; _e.error;
|
|
3239
3254
|
useQuery({
|
|
3240
3255
|
queryKey: QueryKeyFactory.default.currentUserKey,
|
|
3241
3256
|
queryFn: function () { return getCurrentUserData({ token: token, subdomain: subdomain }); },
|
|
@@ -3244,7 +3259,7 @@ function ActualQuote() {
|
|
|
3244
3259
|
// Hooks
|
|
3245
3260
|
var downloadFile = useDownloadFile(id);
|
|
3246
3261
|
var isExpired = useIsExpired(formattedQuote === null || formattedQuote === void 0 ? void 0 : formattedQuote.expiresAt);
|
|
3247
|
-
var
|
|
3262
|
+
var _f = useSendAcceptQuote(token, subdomain, id), acceptBoxVisible = _f.acceptBoxVisible, isAccepting = _f.isAccepting, sendAccept = _f.sendAccept, setAcceptBoxVisible = _f.setAcceptBoxVisible, setIsAccepting = _f.setIsAccepting, startAcceptance = _f.startAcceptance, pandadocPollingModalVisible = _f.pandadocPollingModalVisible, setPandadocPollingModalVisible = _f.setPandadocPollingModalVisible;
|
|
3248
3263
|
useSigningComplete({ data: formattedQuote, token: token });
|
|
3249
3264
|
if (!formattedQuote) {
|
|
3250
3265
|
return jsx(Fragment, {});
|
|
@@ -3254,25 +3269,30 @@ function ActualQuote() {
|
|
|
3254
3269
|
documentName: documentName,
|
|
3255
3270
|
}) }), jsx("meta", { property: "og:description", content: QuoteInvoiceUtils.quoteMetaDescription(formattedQuote.vendorName) })] }), jsxs("div", __assign({ className: "flex shadow-padding-x ".concat(isMobile ? "flex-col gap-1" : "items-center gap-2", " justify-end pb-4"), id: "acceptance", style: {
|
|
3256
3271
|
color: entityBranding.secondaryColor,
|
|
3257
|
-
} }, { children: [
|
|
3258
|
-
formattedQuote.state === "APPLIED"
|
|
3272
|
+
} }, { children: [formattedQuote.state === "ACCEPTED" ||
|
|
3273
|
+
formattedQuote.state === "APPLIED" ? (jsxs("div", { children: [formattedQuote.state === "ACCEPTED" &&
|
|
3259
3274
|
formattedQuote.acceptedAt &&
|
|
3260
3275
|
"Quote was accepted by ".concat(formattedQuote.acceptedByName, " on ").concat(Misc.formatDate(formattedQuote.acceptedAt)), formattedQuote.state === "APPLIED" &&
|
|
3261
3276
|
formattedQuote.acceptedAt &&
|
|
3262
|
-
"Quote is now applied. Accepted by ".concat(formattedQuote.acceptedByName, " on ").concat(Misc.formatDate(formattedQuote.acceptedAt))] })), jsxs("div", __assign({ className: isMobile
|
|
3277
|
+
"Quote is now applied. Accepted by ".concat(formattedQuote.acceptedByName, " on ").concat(Misc.formatDate(formattedQuote.acceptedAt))] })) : null, jsxs("div", __assign({ className: isMobile
|
|
3263
3278
|
? "flex w-full justify-between gap-2"
|
|
3264
|
-
: "flex items-center justify-end gap-2" }, { children: [!isMobile
|
|
3265
|
-
formattedQuote.state !== "APPLIED"
|
|
3279
|
+
: "flex items-center justify-end gap-2" }, { children: [!isMobile ? (jsx(Button, __assign({ icon: jsx(DownloadOutlined$1, {}), onClick: function () { return downloadFile(subdomain + "/api/pdf/quote", token); } }, { children: "Download" }))) : null, formattedQuote.state !== "ACCEPTED" &&
|
|
3280
|
+
formattedQuote.state !== "APPLIED" ? (jsx(Button, __assign({ disabled: isExpired || isAccepting, onClick: function () { return startAcceptance(); }, type: "primary" }, { children: isExpired ? "Quote is expired" : "Accept quote" }))) : null] }))] })), jsx("div", __assign({ className: "flex ".concat(isMobile ? "flex-col w-full overflow-hidden" : "shadow-padding-xb") }, { children: jsx(InvoiceQuoteView, __assign({ html: formattedQuote.html, isMobile: isMobile }, { children: ((_c = (_b = formattedQuote.object) === null || _b === void 0 ? void 0 : _b.documents) === null || _c === void 0 ? void 0 : _c.length) > 0 ? (jsx("div", __assign({ className: "flex flex-col items-end" }, { children: formattedQuote.object.documents.map(function (doc, index) {
|
|
3266
3281
|
return (jsx(Button, __assign({ download: doc.filename, href: doc.url, type: "link" }, { children: doc.filename }), index));
|
|
3267
|
-
}) }))) })) })), jsx(AcceptQuoteModal, { acceptBoxVisible: acceptBoxVisible, formattedQuote: formattedQuote, setAcceptBoxVisible: setAcceptBoxVisible, setIsAccepting: setIsAccepting, sendAccept: sendAccept }), jsx(PandadocPollingModal, { isVisible: pandadocPollingModalVisible, setVisible: setPandadocPollingModalVisible, id: id })] }));
|
|
3282
|
+
}) }))) : null })) })), jsx(AcceptQuoteModal, { acceptBoxVisible: acceptBoxVisible, formattedQuote: formattedQuote, setAcceptBoxVisible: setAcceptBoxVisible, setIsAccepting: setIsAccepting, sendAccept: sendAccept }), jsx(PandadocPollingModal, { isVisible: pandadocPollingModalVisible, setVisible: setPandadocPollingModalVisible, id: id })] }));
|
|
3268
3283
|
}
|
|
3269
3284
|
styled.div(templateObject_1$5 || (templateObject_1$5 = __makeTemplateObject(["\n span {\n width: 100%;\n }\n"], ["\n span {\n width: 100%;\n }\n"])));
|
|
3270
3285
|
function Quote(_a) {
|
|
3271
3286
|
var id = _a.id;
|
|
3272
|
-
return (jsx(HelmetProvider, { children: jsx(
|
|
3287
|
+
return (jsx(HelmetProvider, { children: jsx(ActualQuote, { id: id }) }));
|
|
3273
3288
|
}
|
|
3274
3289
|
var templateObject_1$5;
|
|
3275
3290
|
|
|
3291
|
+
var DrawerHeader = function (_a) {
|
|
3292
|
+
var description = _a.description, onClose = _a.onClose, title = _a.title;
|
|
3293
|
+
return (jsxs("div", __assign({ className: "flex flex-col gap-4" }, { children: [jsxs("div", __assign({ className: "flex items-center justify-between gap-2" }, { children: [jsx("div", __assign({ className: "text-xl" }, { children: title })), jsx("button", __assign({ onClick: onClose, className: "ant-drawer-close" }, { children: jsx(CloseOutlined$1, {}) }))] })), description && jsx("div", __assign({ className: "text-xs" }, { children: description }))] })));
|
|
3294
|
+
};
|
|
3295
|
+
|
|
3276
3296
|
var LargeCardIcon = function () {
|
|
3277
3297
|
return (jsx("svg", __assign({ width: "72", height: "56", viewBox: "0 0 72 56", fill: "none", xmlns: "http://www.w3.org/2000/svg" }, { children: jsx("path", { d: "M8 0H64C68.375 0 72 3.625 72 8V12H0V8C0 3.625 3.5 0 8 0ZM72 24V48C72 52.5 68.375 56 64 56H8C3.5 56 0 52.5 0 48V24H72ZM14 40C12.875 40 12 41 12 42C12 43.125 12.875 44 14 44H22C23 44 24 43.125 24 42C24 41 23 40 22 40H14ZM28 42C28 43.125 28.875 44 30 44H46C47 44 48 43.125 48 42C48 41 47 40 46 40H30C28.875 40 28 41 28 42Z", fill: "#E2E8F0" }) })));
|
|
3278
3298
|
};
|
|
@@ -3284,11 +3304,15 @@ var PlusIcon = function (_a) {
|
|
|
3284
3304
|
|
|
3285
3305
|
var PaymentMethodContext = createContext({});
|
|
3286
3306
|
|
|
3287
|
-
|
|
3288
|
-
var
|
|
3289
|
-
var
|
|
3290
|
-
return (jsx("div", __assign({ className: "flex flex-col
|
|
3307
|
+
var Card = function (_a) {
|
|
3308
|
+
var children = _a.children, className = _a.className, style = _a.style;
|
|
3309
|
+
var darkMode = useContext(BunnyContext).darkMode;
|
|
3310
|
+
return (jsx("div", __assign({ className: "flex flex-col rounded-md shadow-md ".concat(className), style: __assign(__assign({}, style), { backgroundColor: darkMode
|
|
3311
|
+
? "var(--row-background-dark)"
|
|
3312
|
+
: "var(--row-background)" }) }, { children: children })));
|
|
3291
3313
|
};
|
|
3314
|
+
|
|
3315
|
+
var Text$b = Typography.Text;
|
|
3292
3316
|
var CreditCard = function (_a) {
|
|
3293
3317
|
var _b, _c, _d;
|
|
3294
3318
|
var onClickRemove = _a.onClickRemove, onClickUpdate = _a.onClickUpdate, paymentMethodData = _a.paymentMethodData;
|
|
@@ -3299,11 +3323,11 @@ var CreditCard = function (_a) {
|
|
|
3299
3323
|
};
|
|
3300
3324
|
var isMobile = useIsMobile$1();
|
|
3301
3325
|
var processPublicUrl = useContext(PaymentMethodContext).processPublicUrl;
|
|
3302
|
-
return (jsxs(Card
|
|
3326
|
+
return (jsxs(Card, __assign({ className: "shadow-md m-0" }, { children: [jsxs("div", __assign({ className: "flex items-center justify-between gap-4 p-4" }, { children: [jsxs("div", __assign({ className: "flex items-center gap-4" }, { children: [jsxs("div", __assign({ className: "flex items-center gap-2" }, { children: [getCardImage((_b = paymentMethodData === null || paymentMethodData === void 0 ? void 0 : paymentMethodData.metadata) === null || _b === void 0 ? void 0 : _b.issuer) && (jsx("img", { alt: "Card", width: "24px", src: "".concat(processPublicUrl, "/").concat(getCardImage((_c = paymentMethodData === null || paymentMethodData === void 0 ? void 0 : paymentMethodData.metadata) === null || _c === void 0 ? void 0 : _c.issuer)) })), jsx(Text$b, { children: (_d = paymentMethodData === null || paymentMethodData === void 0 ? void 0 : paymentMethodData.metadata) === null || _d === void 0 ? void 0 : _d.description })] })), jsx(Tag, __assign({ color: isExpired(paymentMethodData) ? "red" : "green" }, { children: isExpired(paymentMethodData) ? "Expired" : "Valid" }))] })), !isMobile && (jsx(CardActions, { onClickRemove: onClickRemove, onClickUpdate: onClickUpdate }))] })), dayjs(paymentMethodData === null || paymentMethodData === void 0 ? void 0 : paymentMethodData.expirationDate).isValid() && (jsxs(Fragment, { children: [jsx(Divider, {}), jsxs("div", __assign({ className: "flex flex-col p-4" }, { children: [jsx(CardAttribute, { title: "EXPIRATION", value: dayjs(paymentMethodData === null || paymentMethodData === void 0 ? void 0 : paymentMethodData.expirationDate).format("MM/YY") }), isMobile && (jsx(CardActions, { onClickRemove: onClickRemove, onClickUpdate: onClickUpdate }))] }))] }))] })));
|
|
3303
3327
|
};
|
|
3304
3328
|
var CardAttribute = function (_a) {
|
|
3305
3329
|
var title = _a.title, value = _a.value;
|
|
3306
|
-
return (jsxs("div", __assign({ className: "flex flex-col gap-2" }, { children: [jsx("div", __assign({ className: "text-slate-400", style: { fontSize: "11px" } }, { children: title })), jsx(
|
|
3330
|
+
return (jsxs("div", __assign({ className: "flex flex-col gap-2" }, { children: [jsx("div", __assign({ className: "text-slate-400", style: { fontSize: "11px" } }, { children: title })), jsx(Text$b, { children: value })] })));
|
|
3307
3331
|
};
|
|
3308
3332
|
var CardActions = function (_a) {
|
|
3309
3333
|
var onClickRemove = _a.onClickRemove, onClickUpdate = _a.onClickUpdate;
|
|
@@ -3322,14 +3346,9 @@ var getCardImage = function (issuer) {
|
|
|
3322
3346
|
return "mc_symbol_opt_73_3x.png";
|
|
3323
3347
|
};
|
|
3324
3348
|
|
|
3325
|
-
var DrawerHeader = function (_a) {
|
|
3326
|
-
var description = _a.description, onClose = _a.onClose, title = _a.title;
|
|
3327
|
-
return (jsxs("div", __assign({ className: "flex flex-col gap-4" }, { children: [jsxs("div", __assign({ className: "flex items-center justify-between gap-2" }, { children: [jsx("div", __assign({ className: "text-xl" }, { children: title })), jsx("button", __assign({ onClick: onClose, className: "ant-drawer-close" }, { children: jsx(CloseOutlined$1, {}) }))] })), description && jsx("div", __assign({ className: "text-xs" }, { children: description }))] })));
|
|
3328
|
-
};
|
|
3329
|
-
|
|
3330
3349
|
var ActualPaymentMethod = function () {
|
|
3331
|
-
var _a = useContext(BunnyContext), token = _a.token, subdomain = _a.subdomain, graphQLClient = _a.graphQLClient
|
|
3332
|
-
var
|
|
3350
|
+
var _a = useContext(BunnyContext), token = _a.token, subdomain = _a.subdomain, graphQLClient = _a.graphQLClient;
|
|
3351
|
+
var accountId = useContext(PaymentContext).accountId;
|
|
3333
3352
|
// Hooks
|
|
3334
3353
|
var queryClient = useQueryClient();
|
|
3335
3354
|
var paymentPlugins = usePaymentPlugins({ subdomain: subdomain, token: token }).paymentPlugins;
|
|
@@ -3379,7 +3398,7 @@ var ActualPaymentMethod = function () {
|
|
|
3379
3398
|
};
|
|
3380
3399
|
if (data === undefined)
|
|
3381
3400
|
return jsx(Fragment, {});
|
|
3382
|
-
return (jsxs(Fragment, { children: [data ? (jsx(CreditCard, { onClickRemove: onClickRemove, onClickUpdate: function () { return setShowModal(true); }, paymentMethodData: data })) : (jsx(EmptyCard, { onClick: function () { return setShowModal(true); } })),
|
|
3401
|
+
return (jsxs(Fragment, { children: [data ? (jsx(CreditCard, { onClickRemove: onClickRemove, onClickUpdate: function () { return setShowModal(true); }, paymentMethodData: data })) : (jsx(EmptyCard, { onClick: function () { return setShowModal(true); } })), jsx(Drawer, __assign({ closeIcon: null, onClose: function () { return setShowModal(false); }, open: showModal, styles: {
|
|
3383
3402
|
body: isMobile
|
|
3384
3403
|
? {
|
|
3385
3404
|
padding: "1rem 0 0",
|
|
@@ -3399,7 +3418,7 @@ function PaymentMethod(_a) {
|
|
|
3399
3418
|
return (jsx(PaymentMethodContext.Provider, __assign({ value: { footer: footer, processPublicUrl: processPublicUrl } }, { children: jsx(ActualPaymentMethod, {}) })));
|
|
3400
3419
|
}
|
|
3401
3420
|
|
|
3402
|
-
var MUTATION$
|
|
3421
|
+
var MUTATION$4 = "\nmutation accountUpdate(\n $id: ID!,\n $attributes: AccountAttributes!) {\n accountUpdate(\n id: $id,\n attributes: $attributes\n ) {\n account { id }\n errors\n }\n }\n";
|
|
3403
3422
|
var accountUpdate = function (_a) {
|
|
3404
3423
|
var accountId = _a.accountId, attributes = _a.attributes, token = _a.token;
|
|
3405
3424
|
return __awaiter(void 0, void 0, void 0, function () {
|
|
@@ -3409,7 +3428,7 @@ var accountUpdate = function (_a) {
|
|
|
3409
3428
|
switch (_c.label) {
|
|
3410
3429
|
case 0:
|
|
3411
3430
|
vars = { id: accountId, attributes: attributes };
|
|
3412
|
-
return [4 /*yield*/, gqlRequest({ query: MUTATION$
|
|
3431
|
+
return [4 /*yield*/, gqlRequest({ query: MUTATION$4, token: token, vars: vars })];
|
|
3413
3432
|
case 1:
|
|
3414
3433
|
response = _c.sent();
|
|
3415
3434
|
errors = (_b = response === null || response === void 0 ? void 0 : response.accountUpdate) === null || _b === void 0 ? void 0 : _b.errors;
|
|
@@ -3473,6 +3492,8 @@ var QuoteCheckout = function (_a) {
|
|
|
3473
3492
|
var checkoutMutation = useMutation({
|
|
3474
3493
|
mutationFn: function (_a) {
|
|
3475
3494
|
var pluginPaymentMethod = _a.pluginPaymentMethod, savedPaymentMethod = _a.storedPaymentMethod;
|
|
3495
|
+
if (!quote)
|
|
3496
|
+
throw new Error("Quote is required");
|
|
3476
3497
|
if (!paymentRequired)
|
|
3477
3498
|
return checkout({ quoteId: quote.id, token: token, subdomain: subdomain });
|
|
3478
3499
|
if (savedPaymentMethod) {
|
|
@@ -3675,6 +3696,277 @@ var Checkout = function (_a) {
|
|
|
3675
3696
|
}, setIsSaving: setIsSaving }))] }))] })) })));
|
|
3676
3697
|
};
|
|
3677
3698
|
|
|
3699
|
+
var MUTATION$3 = function () { return "\nmutation AccountSignup (\n $entityId: ID!,\n $pluginId: String!,\n $paymentMethodId: String,\n $priceListCode: String!,\n $accountId: ID!,\n $quoteId: ID!\n) {\n accountSignup(\n entityId: $entityId,\n pluginId: $pluginId,\n paymentMethodId: $paymentMethodId,\n priceListCode: $priceListCode,\n accountId: $accountId,\n quoteId: $quoteId\n ) {\n errors\n quote {\n acceptedByName\n acceptedByTitle\n accountId\n amount\n amountDue\n applicationDate\n applied\n backdatedPeriods\n backdatedQuote\n billingDay\n contactId\n createdAt\n credits\n currencyId\n dealId\n discount\n discountValue\n endDate\n evergreen\n expiresAt\n id\n invoiceImmediately\n invoiceImmediatelyAvailable\n invoiceUntil\n isPendingApprovalRequest\n kind\n message\n name\n netPaymentDays\n notes\n number\n ownerId\n payableId\n periodAmount\n poNumber\n requiresApproval\n smallUnitAmountDue\n splitInvoice\n startDate\n state\n subtotal\n taxAmount\n taxCode\n updatedAt\n uuid\n }\n }\n}"; };
|
|
3700
|
+
var accountSignup = function (_a) {
|
|
3701
|
+
var token = _a.token, subdomain = _a.subdomain, entityId = _a.entityId, accountId = _a.accountId, quoteId = _a.quoteId, paymentToken = _a.paymentToken, paymentMethodId = _a.paymentMethodId, pluginId = _a.pluginId, priceListCode = _a.priceListCode;
|
|
3702
|
+
return __awaiter(void 0, void 0, void 0, function () {
|
|
3703
|
+
var vars, response, errors;
|
|
3704
|
+
var _b;
|
|
3705
|
+
return __generator(this, function (_c) {
|
|
3706
|
+
switch (_c.label) {
|
|
3707
|
+
case 0:
|
|
3708
|
+
vars = {
|
|
3709
|
+
entityId: entityId,
|
|
3710
|
+
accountId: accountId,
|
|
3711
|
+
quoteId: quoteId,
|
|
3712
|
+
paymentToken: paymentToken,
|
|
3713
|
+
pluginId: pluginId,
|
|
3714
|
+
paymentMethodId: paymentMethodId,
|
|
3715
|
+
priceListCode: priceListCode,
|
|
3716
|
+
};
|
|
3717
|
+
return [4 /*yield*/, gqlRequest({
|
|
3718
|
+
query: MUTATION$3(),
|
|
3719
|
+
token: token,
|
|
3720
|
+
vars: vars,
|
|
3721
|
+
subdomain: subdomain,
|
|
3722
|
+
})];
|
|
3723
|
+
case 1:
|
|
3724
|
+
response = _c.sent();
|
|
3725
|
+
errors = (_b = response === null || response === void 0 ? void 0 : response.accountSignup) === null || _b === void 0 ? void 0 : _b.errors;
|
|
3726
|
+
if (errors)
|
|
3727
|
+
throw errors;
|
|
3728
|
+
return [2 /*return*/, response === null || response === void 0 ? void 0 : response.accountSignup];
|
|
3729
|
+
}
|
|
3730
|
+
});
|
|
3731
|
+
});
|
|
3732
|
+
};
|
|
3733
|
+
|
|
3734
|
+
var MUTATION$2 = function () { return "\nmutation QuoteAccountSignup (\n $accountName: String!,\n $billingContact: ContactAttributes!,\n $entityId: ID!,\n $priceListCode: String!\n) {\n quoteAccountSignup(\n entityId: $entityId,\n priceListCode: $priceListCode,\n accountName: $accountName,\n billingContact: $billingContact\n ) {\n account {\n id\n }\n amount\n currencyId\n quoteId\n errors\n }\n}"; };
|
|
3735
|
+
var quoteAccountSignup = function (_a) {
|
|
3736
|
+
var token = _a.token, subdomain = _a.subdomain, entityId = _a.entityId, priceListCode = _a.priceListCode, accountName = _a.accountName, billingContact = _a.billingContact;
|
|
3737
|
+
return __awaiter(void 0, void 0, void 0, function () {
|
|
3738
|
+
var vars, response, errors;
|
|
3739
|
+
var _b;
|
|
3740
|
+
return __generator(this, function (_c) {
|
|
3741
|
+
switch (_c.label) {
|
|
3742
|
+
case 0:
|
|
3743
|
+
vars = {
|
|
3744
|
+
entityId: entityId,
|
|
3745
|
+
priceListCode: priceListCode,
|
|
3746
|
+
accountName: accountName,
|
|
3747
|
+
billingContact: billingContact,
|
|
3748
|
+
};
|
|
3749
|
+
return [4 /*yield*/, gqlRequest({
|
|
3750
|
+
query: MUTATION$2(),
|
|
3751
|
+
token: token,
|
|
3752
|
+
vars: vars,
|
|
3753
|
+
subdomain: subdomain,
|
|
3754
|
+
})];
|
|
3755
|
+
case 1:
|
|
3756
|
+
response = _c.sent();
|
|
3757
|
+
errors = (_b = response === null || response === void 0 ? void 0 : response.quoteAccountSignup) === null || _b === void 0 ? void 0 : _b.errors;
|
|
3758
|
+
if (errors)
|
|
3759
|
+
throw errors;
|
|
3760
|
+
return [2 /*return*/, response === null || response === void 0 ? void 0 : response.quoteAccountSignup];
|
|
3761
|
+
}
|
|
3762
|
+
});
|
|
3763
|
+
});
|
|
3764
|
+
};
|
|
3765
|
+
|
|
3766
|
+
var MUTATION$1 = function () { return "\nquery PriceList($code: String!) {\n priceList (code: $code) {\n basePrice\n code\n createdAt\n currencyId\n id\n isVisible\n name\n periodMonths\n planId\n priceDescription\n productId\n sku\n trialAllowed\n trialLengthDays\n updatedAt\n }\n}"; };
|
|
3767
|
+
var getPriceList = function (_a) {
|
|
3768
|
+
var token = _a.token, code = _a.code, subdomain = _a.subdomain;
|
|
3769
|
+
return __awaiter(void 0, void 0, void 0, function () {
|
|
3770
|
+
var response;
|
|
3771
|
+
return __generator(this, function (_b) {
|
|
3772
|
+
switch (_b.label) {
|
|
3773
|
+
case 0: return [4 /*yield*/, gqlRequest({
|
|
3774
|
+
query: MUTATION$1(),
|
|
3775
|
+
token: token,
|
|
3776
|
+
vars: { code: code },
|
|
3777
|
+
subdomain: subdomain,
|
|
3778
|
+
})];
|
|
3779
|
+
case 1:
|
|
3780
|
+
response = _b.sent();
|
|
3781
|
+
return [2 /*return*/, response === null || response === void 0 ? void 0 : response.priceList];
|
|
3782
|
+
}
|
|
3783
|
+
});
|
|
3784
|
+
});
|
|
3785
|
+
};
|
|
3786
|
+
|
|
3787
|
+
function PaymentForms(_a) {
|
|
3788
|
+
var quote = _a.quote, paying = _a.paying, setIsPaying = _a.setIsPaying, handlePaymentSaveSuccess = _a.handlePaymentSaveSuccess, handleSubmit = _a.handleSubmit, proceedingToPayment = _a.proceedingToPayment, accountId = _a.accountId;
|
|
3789
|
+
return (jsx(Fragment, { children: quote ? (jsx(Fragment, { children: accountId && (jsx(PaymentContext.Provider, __assign({ value: { accountId: accountId, displayPayButtonNameAnyways: true } }, { children: jsx(PaymentForm, { isSaving: paying, setIsSaving: setIsPaying, onFail: function () {
|
|
3790
|
+
console.log("payment saving failed darn");
|
|
3791
|
+
}, onPaymentSuccess: handlePaymentSaveSuccess }) }))) })) : (jsx(InitialSignupForm, { onSubmit: handleSubmit, submitting: proceedingToPayment })) }));
|
|
3792
|
+
}
|
|
3793
|
+
function InitialSignupForm(_a) {
|
|
3794
|
+
var onSubmit = _a.onSubmit, submitting = _a.submitting;
|
|
3795
|
+
var _b = useState({
|
|
3796
|
+
firstName: "",
|
|
3797
|
+
lastName: "",
|
|
3798
|
+
email: "",
|
|
3799
|
+
accountName: "",
|
|
3800
|
+
}), formData = _b[0], setFormData = _b[1];
|
|
3801
|
+
var handleInputChange = function (e) {
|
|
3802
|
+
var _a;
|
|
3803
|
+
var _b = e.target, name = _b.name, value = _b.value;
|
|
3804
|
+
setFormData(__assign(__assign({}, formData), (_a = {}, _a[name] = value, _a)));
|
|
3805
|
+
};
|
|
3806
|
+
return (jsxs(Form, __assign({ className: "flex w-1/2 flex-col justify-between h-full", onFinish: function () { return onSubmit(formData); } }, { children: [jsxs("div", __assign({ className: "flex flex-col space-y-2" }, { children: [jsx(Form.Item, __assign({ rules: [{ required: true, message: "Please input your first name!" }], initialValue: formData.firstName }, { children: jsx(Input, { placeholder: "First name", value: formData.firstName, onChange: function (e) {
|
|
3807
|
+
handleInputChange(e);
|
|
3808
|
+
setFormData(__assign(__assign({}, formData), { firstName: e.target.value }));
|
|
3809
|
+
} }) })), jsx(Form.Item, __assign({ rules: [{ required: true, message: "Please input your last name!" }], initialValue: formData.lastName }, { children: jsx(Input, { placeholder: "Last name", value: formData.lastName, onChange: function (e) {
|
|
3810
|
+
handleInputChange(e);
|
|
3811
|
+
setFormData(__assign(__assign({}, formData), { lastName: e.target.value }));
|
|
3812
|
+
} }) })), jsx(Form.Item, __assign({ rules: [
|
|
3813
|
+
{ required: true, message: "Please input your email!" },
|
|
3814
|
+
{ type: "email", message: "Please enter a valid email!" },
|
|
3815
|
+
], initialValue: formData.email }, { children: jsx(Input, { placeholder: "Email", value: formData.email, onChange: function (e) {
|
|
3816
|
+
handleInputChange(e);
|
|
3817
|
+
setFormData(__assign(__assign({}, formData), { email: e.target.value }));
|
|
3818
|
+
} }) })), jsx(Form.Item, __assign({ rules: [
|
|
3819
|
+
{ required: true, message: "Please input your account name!" },
|
|
3820
|
+
], initialValue: formData.accountName }, { children: jsx(Input, { placeholder: "Account name", value: formData.accountName, onChange: function (e) {
|
|
3821
|
+
handleInputChange(e);
|
|
3822
|
+
setFormData(__assign(__assign({}, formData), { accountName: e.target.value }));
|
|
3823
|
+
} }) }))] })), jsx(Form.Item, { children: jsx(Button, __assign({ type: "primary", htmlType: "submit", loading: submitting, className: "w-full mt-4" }, { children: "Proceed to payment" })) })] })));
|
|
3824
|
+
}
|
|
3825
|
+
|
|
3826
|
+
var Title = Typography.Title, Text$a = Typography.Text;
|
|
3827
|
+
function PaymentSuccessDisplay(_a) {
|
|
3828
|
+
var className = _a.className, amountPaid = _a.amountPaid, style = _a.style, redirectUrl = _a.redirectUrl;
|
|
3829
|
+
var window = useContext(BunnyContext).window;
|
|
3830
|
+
var companyName = useCurrentUserData().companyName;
|
|
3831
|
+
return (jsxs("div", __assign({ className: "flex flex-col items-center justify-center h-full ".concat(className), style: style }, { children: [jsx(CheckCircleFilled$1, { style: { fontSize: "48px", color: "rgb(52 211 153)" } }), jsxs(Title, __assign({ level: 3, className: "mt-2 m-0" }, { children: ["Payment of ", Misc.formatCurrency(amountPaid, "USD"), " successful"] })), redirectUrl && (jsxs(Text$a, __assign({ className: "text-slate-500 cursor-pointer underline", onClick: function () { return (window.location.href = redirectUrl); } }, { children: ["Back to ", companyName] })))] })));
|
|
3832
|
+
}
|
|
3833
|
+
|
|
3834
|
+
var Text$9 = Typography.Text;
|
|
3835
|
+
function PriceListDisplay(_a) {
|
|
3836
|
+
var priceListData = _a.priceListData, topNavImageUrl = _a.topNavImageUrl;
|
|
3837
|
+
if (!priceListData)
|
|
3838
|
+
return null;
|
|
3839
|
+
return (jsx(Fragment, { children: jsx("div", __assign({ className: "flex flex-col justify-between h-full my-12" }, { children: jsxs("div", __assign({ className: "flex flex-col space-y-8" }, { children: [jsx(Image, { width: 24, src: topNavImageUrl, alt: "Logo", preview: false }), jsxs("div", __assign({ className: "flex flex-col" }, { children: [jsx(Text$9, __assign({ className: "text-slate-500 font-bold text-lg" }, { children: priceListData.name })), jsxs(Text$9, __assign({ className: "font-bold text-xl" }, { children: [Misc.formatCurrency(priceListData.basePrice, priceListData.currencyId), " ", "/ month"] }))] })), jsxs("div", __assign({ className: "flex flex-col" }, { children: [jsxs(Text$9, __assign({ style: { fontSize: "16px" }, className: "text-slate-500" }, { children: [priceListData.trialLengthDays, " day trial"] })), jsx(Text$9, __assign({ className: "text-slate-500", style: { fontSize: "12px" } }, { children: "You will not be charged until the last day of the trial." }))] }))] })) })) }));
|
|
3840
|
+
}
|
|
3841
|
+
|
|
3842
|
+
var BunnyFooterIcon = function (_a) {
|
|
3843
|
+
var color = _a.color;
|
|
3844
|
+
return (jsxs("svg", __assign({ width: "45", height: "15", viewBox: "0 0 39 13", fill: "none", xmlns: "http://www.w3.org/2000/svg" }, { children: [jsxs("g", __assign({ clipPath: "url(#clip0_6_851)" }, { children: [jsx("path", { className: "icon-path", d: "M14.5898 7.19708C14.5898 9.35053 13.0926 10.325 11.2495 10.325C9.39955 10.325 7.90234 9.35001 7.90234 7.18967V3.26221H10.1125V7.00052C10.1125 7.87719 10.5855 8.27725 11.2495 8.27725C11.9061 8.27725 12.3865 7.87719 12.3865 7.00052V3.26221H14.5898V7.19708Z", fill: color }), jsx("path", { className: "icon-path", d: "M31.8943 12.9625H29.4793L31.8523 8.62816L28.9355 3.26221H31.4708L33.0457 6.35524L34.5924 3.26221H37.0075L31.8943 12.9625Z", fill: color }), jsx("path", { className: "icon-path", d: "M15.1602 5.96827C15.1602 3.8148 16.6574 2.84033 18.5005 2.84033C20.3504 2.84033 21.8476 3.81533 21.8476 5.97568V10.1473H19.6374V6.16483C19.6374 5.28815 19.1645 4.8881 18.5005 4.8881C17.8439 4.8881 17.3634 5.28815 17.3634 6.16483V10.1473H15.1602V5.96827Z", fill: color }), jsx("path", { className: "icon-path", d: "M22.4316 5.96827C22.4316 3.8148 23.9289 2.84033 25.7719 2.84033C27.6219 2.84033 29.1191 3.81533 29.1191 5.97568V10.1473H26.9089V6.16483C26.9089 5.28815 26.4359 4.8881 25.7719 4.8881C25.1154 4.8881 24.6349 5.28815 24.6349 6.16483V10.1473H22.4316V5.96827Z", fill: color }), jsx("path", { className: "icon-path", d: "M7.40511 6.68957C7.40511 8.7236 6.02815 10.3227 4.17816 10.3227C3.23907 10.3227 2.61071 9.94378 2.19358 9.40371V10.1404H0.0605469V0.0405273H2.26381V3.91939C2.68041 3.42158 3.28802 3.07069 4.17763 3.07069C6.02759 3.07069 7.40511 4.66981 7.40511 6.68957ZM2.17229 6.69642C2.17229 7.60802 2.77937 8.2744 3.64823 8.2744C4.53783 8.2744 5.13107 7.59372 5.13107 6.69642C5.13107 5.79912 4.53783 5.11844 3.64823 5.11844C2.77937 5.11844 2.17229 5.78482 2.17229 6.69642Z", fill: color }), jsx("path", { className: "icon-path", d: "M38.966 8.94801C38.966 9.76181 38.2668 10.4631 37.4618 10.4631C36.6499 10.4631 35.9434 9.76181 35.9434 8.94801C35.9434 8.14846 36.6494 7.46094 37.4618 7.46094C38.2668 7.46094 38.966 8.14846 38.966 8.94801Z", fill: color })] })), jsx("defs", { children: jsx("clipPath", __assign({ id: "clip0_6_851" }, { children: jsx("rect", { width: "39", height: "13", fill: "white" }) })) })] })));
|
|
3845
|
+
};
|
|
3846
|
+
|
|
3847
|
+
var Footer = function (_a) {
|
|
3848
|
+
var className = _a.className;
|
|
3849
|
+
var _b = useCurrentUserData(), privacyUrl = _b.privacyUrl, termsUrl = _b.termsUrl;
|
|
3850
|
+
var window = useContext(BunnyContext).window;
|
|
3851
|
+
var isMobile = useIsMobile(window);
|
|
3852
|
+
var quotePreviewData = useRecoilValue(planPickerQuoteDataState);
|
|
3853
|
+
var selectedPriceList = quotePreviewData === null || quotePreviewData === void 0 ? void 0 : quotePreviewData.priceList;
|
|
3854
|
+
if (selectedPriceList && isMobile)
|
|
3855
|
+
return null;
|
|
3856
|
+
return (jsxs("div", __assign({ className: "flex items-center justify-between shrink-0 ".concat(className, " ").concat(isMobile ? "flex-col gap-2 grow" : "") }, { children: [(termsUrl || privacyUrl) && (jsxs("div", __assign({ className: "flex items-center gap-3" }, { children: [termsUrl && (jsx(StyedLink, __assign({ className: "text-xs text-slate-400", href: termsUrl, rel: "noopener noreferrer", target: "_blank", type: "text" }, { children: "Terms" }))), privacyUrl && (jsx(StyedLink, __assign({ className: "text-xs text-slate-400", href: privacyUrl, rel: "noopener noreferrer", target: "_blank", type: "text" }, { children: "Privacy" })))] }))), jsx(BunnyMarketingLink, {})] })));
|
|
3857
|
+
};
|
|
3858
|
+
var BunnyMarketingLink = function () {
|
|
3859
|
+
var _a = useState(false), isHovered = _a[0], setIsHovered = _a[1];
|
|
3860
|
+
var window = useContext(BunnyContext).window;
|
|
3861
|
+
var isMobile = useIsMobile(window);
|
|
3862
|
+
return (jsx("div", __assign({ className: "flex items-end justify-end ".concat(isMobile ? "" : "grow") }, { children: jsx(StyledBunnyLink, __assign({ className: "flex items-end justify-end text-slate-400", href: "https://bunny.com/", rel: "noopener noreferrer", target: "_blank", type: "text" }, { children: jsxs("div", __assign({ className: "flex items-center", onMouseEnter: function () { return setIsHovered(true); }, onMouseLeave: function () { return setIsHovered(false); } }, { children: ["Powered by\u00A0", jsx("div", __assign({ style: { paddingTop: "5px" } }, { children: jsx(BunnyFooterIcon, { color: isHovered ? PRIMARY_COLOR : SLATE_400 }) }))] })) })) })));
|
|
3863
|
+
};
|
|
3864
|
+
var StyedLink = styled.a(templateObject_1$4 || (templateObject_1$4 = __makeTemplateObject(["\n color: ", ";\n transition: color 0.3s;\n &:hover {\n color: ", ";\n }\n"], ["\n color: ", ";\n transition: color 0.3s;\n &:hover {\n color: ", ";\n }\n"])), SLATE_400, SLATE_500);
|
|
3865
|
+
var StyledBunnyLink = styled(StyedLink)(templateObject_2 || (templateObject_2 = __makeTemplateObject(["\n &:hover {\n color: ", " !important;\n }\n"], ["\n &:hover {\n color: ", " !important;\n }\n"])), PRIMARY_COLOR);
|
|
3866
|
+
var templateObject_1$4, templateObject_2;
|
|
3867
|
+
|
|
3868
|
+
function Signup(_a) {
|
|
3869
|
+
var priceListCode = _a.priceListCode, redirectUrl = _a.redirectUrl;
|
|
3870
|
+
// Hooks
|
|
3871
|
+
var _b = useContext(BunnyContext), subdomain = _b.subdomain, token = _b.token, window = _b.window;
|
|
3872
|
+
useQuery({
|
|
3873
|
+
queryKey: QueryKeyFactory.default.currentUserKey,
|
|
3874
|
+
queryFn: function () { return getCurrentUserData({ token: token, subdomain: subdomain }); },
|
|
3875
|
+
});
|
|
3876
|
+
var isMobile = useIsMobile(window);
|
|
3877
|
+
var topNavImageUrl = useContext(BrandContext).topNavImageUrl;
|
|
3878
|
+
var entityId = useCurrentUserData().entityId;
|
|
3879
|
+
var _c = useState(undefined), quote = _c[0], setQuote = _c[1];
|
|
3880
|
+
var _d = useState(undefined), accountId = _d[0], setAccountId = _d[1];
|
|
3881
|
+
var _e = useState(undefined), quoteId = _e[0], setQuoteId = _e[1];
|
|
3882
|
+
var _f = useState(undefined), formData = _f[0], setFormData = _f[1];
|
|
3883
|
+
var _g = useState(false), proceedingToPayment = _g[0], setProceedingToPayment = _g[1];
|
|
3884
|
+
var _h = useState(false), paying = _h[0], setIsPaying = _h[1];
|
|
3885
|
+
var _j = useState(false), purchaseSucceeded = _j[0], setPurchaseSucceeded = _j[1];
|
|
3886
|
+
// Queries
|
|
3887
|
+
var priceListData = useQuery({
|
|
3888
|
+
queryKey: ["priceList", priceListCode],
|
|
3889
|
+
queryFn: function () { return getPriceList({ token: token, subdomain: subdomain, code: priceListCode }); },
|
|
3890
|
+
}).data;
|
|
3891
|
+
function handleSubmit(formData) {
|
|
3892
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
3893
|
+
var data;
|
|
3894
|
+
return __generator(this, function (_a) {
|
|
3895
|
+
switch (_a.label) {
|
|
3896
|
+
case 0:
|
|
3897
|
+
setProceedingToPayment(true);
|
|
3898
|
+
setFormData(formData);
|
|
3899
|
+
return [4 /*yield*/, quoteAccountSignup({
|
|
3900
|
+
token: token,
|
|
3901
|
+
subdomain: subdomain,
|
|
3902
|
+
entityId: entityId,
|
|
3903
|
+
priceListCode: priceListCode,
|
|
3904
|
+
accountName: formData.accountName,
|
|
3905
|
+
billingContact: {
|
|
3906
|
+
firstName: formData.firstName,
|
|
3907
|
+
lastName: formData.lastName,
|
|
3908
|
+
email: formData.email,
|
|
3909
|
+
},
|
|
3910
|
+
})];
|
|
3911
|
+
case 1:
|
|
3912
|
+
data = _a.sent();
|
|
3913
|
+
setAccountId(data.account.id);
|
|
3914
|
+
setQuoteId(data.quoteId);
|
|
3915
|
+
setProceedingToPayment(false);
|
|
3916
|
+
setQuote({
|
|
3917
|
+
amountDue: data.amount,
|
|
3918
|
+
currencyId: data.currencyId,
|
|
3919
|
+
});
|
|
3920
|
+
return [2 /*return*/];
|
|
3921
|
+
}
|
|
3922
|
+
});
|
|
3923
|
+
});
|
|
3924
|
+
}
|
|
3925
|
+
function handlePaymentSaveSuccess(paymentSuccess) {
|
|
3926
|
+
var _a;
|
|
3927
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
3928
|
+
var response, plugin;
|
|
3929
|
+
return __generator(this, function (_b) {
|
|
3930
|
+
switch (_b.label) {
|
|
3931
|
+
case 0:
|
|
3932
|
+
if (!formData) {
|
|
3933
|
+
throw new Error("Form data is required");
|
|
3934
|
+
}
|
|
3935
|
+
response = paymentSuccess.pluginPaymentResponse;
|
|
3936
|
+
plugin = response === null || response === void 0 ? void 0 : response.plugin;
|
|
3937
|
+
if (!(plugin === null || plugin === void 0 ? void 0 : plugin.id)) {
|
|
3938
|
+
throw new Error("Plugin ID is required");
|
|
3939
|
+
}
|
|
3940
|
+
if (!accountId) {
|
|
3941
|
+
throw new Error("Account ID is required");
|
|
3942
|
+
}
|
|
3943
|
+
return [4 /*yield*/, accountSignup({
|
|
3944
|
+
token: token,
|
|
3945
|
+
subdomain: subdomain,
|
|
3946
|
+
entityId: entityId,
|
|
3947
|
+
quoteId: quoteId,
|
|
3948
|
+
paymentMethodId: (_a = paymentSuccess.savedPaymentMethodResponse) === null || _a === void 0 ? void 0 : _a.paymentMethodId.toString(),
|
|
3949
|
+
pluginId: plugin.id.toString(),
|
|
3950
|
+
priceListCode: priceListCode,
|
|
3951
|
+
accountId: accountId,
|
|
3952
|
+
})];
|
|
3953
|
+
case 1:
|
|
3954
|
+
_b.sent();
|
|
3955
|
+
setIsPaying(false);
|
|
3956
|
+
setPurchaseSucceeded(true);
|
|
3957
|
+
return [2 /*return*/];
|
|
3958
|
+
}
|
|
3959
|
+
});
|
|
3960
|
+
});
|
|
3961
|
+
}
|
|
3962
|
+
if (isMobile) {
|
|
3963
|
+
return (jsx(Card, __assign({ className: "p-4 flex flex-col" }, { children: purchaseSucceeded ? (jsx(PaymentSuccessDisplay, { className: "w-full", amountPaid: (quote === null || quote === void 0 ? void 0 : quote.amountDue) || 0, redirectUrl: redirectUrl })) : (jsxs("div", __assign({ className: "flex ".concat(isMobile ? "flex-col" : "flex-row", " h-full w-full") }, { children: [jsx("div", __assign({ className: "flex flex-col items-center" }, { children: jsx(PriceListDisplay, { priceListData: priceListData, topNavImageUrl: topNavImageUrl }) })), jsx("div", __assign({ className: "mx-8" }, { children: jsx(Divider, { className: "h-full" }) })), jsx("div", __assign({ className: "flex items-center justify-center my-12" }, { children: jsx(PaymentForms, { quote: quote, paying: paying, setIsPaying: setIsPaying, handlePaymentSaveSuccess: handlePaymentSaveSuccess, handleSubmit: handleSubmit, proceedingToPayment: proceedingToPayment, accountId: accountId || "" }) }))] }))) })));
|
|
3964
|
+
}
|
|
3965
|
+
else {
|
|
3966
|
+
return (jsxs(Fragment, { children: [jsx(Card, __assign({ className: "p-4 flex flex-col w-screen h-screen" }, { children: purchaseSucceeded ? (jsx(PaymentSuccessDisplay, { className: "w-full", amountPaid: (quote === null || quote === void 0 ? void 0 : quote.amountDue) || 0, redirectUrl: redirectUrl })) : (jsxs("div", __assign({ className: "flex ".concat(isMobile ? "flex-col" : "flex-row", " h-full w-full") }, { children: [jsx("div", __assign({ className: "flex flex-col w-1/2 items-center" }, { children: jsx(PriceListDisplay, { priceListData: priceListData, topNavImageUrl: topNavImageUrl }) })), jsx("div", __assign({ className: "my-4" }, { children: jsx(Divider, { className: "h-full", type: "vertical" }) })), jsx("div", __assign({ className: "flex w-1/2 items-center justify-center my-12" }, { children: jsx(PaymentForms, { quote: quote, paying: paying, setIsPaying: setIsPaying, handlePaymentSaveSuccess: handlePaymentSaveSuccess, handleSubmit: handleSubmit, proceedingToPayment: proceedingToPayment, accountId: accountId || "" }) }))] }))) })), jsx(Footer, {})] }));
|
|
3967
|
+
}
|
|
3968
|
+
}
|
|
3969
|
+
|
|
3678
3970
|
var StateTag = function (_a) {
|
|
3679
3971
|
var state = _a.state;
|
|
3680
3972
|
return jsx(Tag, __assign({ color: getColor(state) }, { children: capitalize(startCase(state)) }));
|
|
@@ -3709,12 +4001,13 @@ var TransactionGridCell = styled.div.withConfig({
|
|
|
3709
4001
|
shouldForwardProp: function (prop) {
|
|
3710
4002
|
return !["gridColumn", "padding", "right"].includes(prop);
|
|
3711
4003
|
},
|
|
3712
|
-
})(templateObject_1$
|
|
3713
|
-
var templateObject_1$
|
|
4004
|
+
})(templateObject_1$3 || (templateObject_1$3 = __makeTemplateObject(["\n ", "\n\n display: flex;\n align-items: center;\n justify-content: ", ";\n\n text-align: ", ";\n white-space: nowrap;\n font-size: 14px;\n color: ", ";\n\n background-color: inherit;\n\n padding: 1rem;\n min-width: 48px;\n"], ["\n ", "\n\n display: flex;\n align-items: center;\n justify-content: ", ";\n\n text-align: ", ";\n white-space: nowrap;\n font-size: 14px;\n color: ", ";\n\n background-color: inherit;\n\n padding: 1rem;\n min-width: 48px;\n"])), function (props) { return props.gridColumn && "grid-column: ".concat(props.gridColumn, ";"); }, function (props) { return (props.right ? "flex-end" : "flex-start"); }, function (props) { return (props.right ? "right" : "left"); }, SLATE_600);
|
|
4005
|
+
var templateObject_1$3;
|
|
3714
4006
|
|
|
4007
|
+
var Text$8 = Typography.Text;
|
|
3715
4008
|
var TransactionDate = function (_a) {
|
|
3716
4009
|
var date = _a.date;
|
|
3717
|
-
return jsx("
|
|
4010
|
+
return jsx(Text$8, __assign({ className: "text-sm" }, { children: Misc.formatDate(date) }));
|
|
3718
4011
|
};
|
|
3719
4012
|
|
|
3720
4013
|
var isInvoice = function (transaction) {
|
|
@@ -3729,8 +4022,15 @@ var TransactionRowTitle = function (_a) {
|
|
|
3729
4022
|
return (jsx("span", __assign({ className: "text-slate-400", style: { fontSize: "11px" } }, { children: invoice.number })));
|
|
3730
4023
|
};
|
|
3731
4024
|
|
|
4025
|
+
// TODO: delete
|
|
4026
|
+
var ArrowDownToLine = function (_a) {
|
|
4027
|
+
var className = _a.className, _b = _a.color, color = _b === void 0 ? SLATE_600 : _b;
|
|
4028
|
+
return (jsxs("svg", __assign({ className: className, fill: "none", height: "16", viewBox: "0 0 16 16", width: "16", xmlns: "http://www.w3.org/2000/svg" }, { children: [jsx("path", { d: "M8 11.3333V2", stroke: color, strokeWidth: "1.5", strokeLinecap: "round", strokeLinejoin: "round" }), jsx("path", { d: "M4 7.33301L8 11.333L12 7.33301", stroke: color, strokeWidth: "1.5", strokeLinecap: "round", strokeLinejoin: "round" }), jsx("path", { d: "M12.6654 14H3.33203", stroke: color, strokeWidth: "1.5", strokeLinecap: "round", strokeLinejoin: "round" })] })));
|
|
4029
|
+
};
|
|
4030
|
+
|
|
3732
4031
|
var TransactionDownload = function (_a) {
|
|
3733
4032
|
var transaction = _a.transaction, token = _a.token, subdomain = _a.subdomain;
|
|
4033
|
+
var darkMode = useContext(BunnyContext).darkMode;
|
|
3734
4034
|
var downloadFile = useDownloadFile();
|
|
3735
4035
|
var isMobile = useIsMobile$1();
|
|
3736
4036
|
var isClickable = transaction.kind === "INVOICE";
|
|
@@ -3739,11 +4039,12 @@ var TransactionDownload = function (_a) {
|
|
|
3739
4039
|
return (jsx("div", __assign({ onClick: function (e) {
|
|
3740
4040
|
e.stopPropagation();
|
|
3741
4041
|
downloadFile("".concat(subdomain, "/api/pdf/invoice/").concat(transaction.transactionableId), token);
|
|
3742
|
-
} }, { children: jsx(ArrowDownToLine, { className: isMobile ? "" : "show-on-hover" }) })));
|
|
4042
|
+
} }, { children: jsx(ArrowDownToLine, { className: "".concat(isMobile ? "" : "show-on-hover"), color: darkMode ? WHITE : SLATE_600 }) })));
|
|
3743
4043
|
};
|
|
3744
4044
|
|
|
4045
|
+
var Text$7 = Typography.Text;
|
|
3745
4046
|
var TransactionsEmptyState = function () {
|
|
3746
|
-
return (jsx(
|
|
4047
|
+
return (jsx(Text$7, __assign({ className: "flex justify-center p-4 text-base" }, { children: "There are no invoices" })));
|
|
3747
4048
|
};
|
|
3748
4049
|
|
|
3749
4050
|
var TransactionsListContext = createContext({});
|
|
@@ -3807,10 +4108,11 @@ var useGraphQLRequest = function () { return function (query, token, variables)
|
|
|
3807
4108
|
});
|
|
3808
4109
|
}); }; };
|
|
3809
4110
|
|
|
4111
|
+
var Text$6 = Typography.Text;
|
|
3810
4112
|
var TransactionsListDesktop = function (_a) {
|
|
3811
4113
|
var transactions = _a.transactions, onTransactionClick = _a.onTransactionClick;
|
|
3812
4114
|
var columns = useContext(TransactionsListContext).columns;
|
|
3813
|
-
var _b = useContext(BunnyContext), token = _b.token, subdomain = _b.subdomain;
|
|
4115
|
+
var _b = useContext(BunnyContext), token = _b.token, subdomain = _b.subdomain, darkMode = _b.darkMode;
|
|
3814
4116
|
var showAmount = columns.includes("amount");
|
|
3815
4117
|
var showDateAndTitle = columns.includes("date-and-title");
|
|
3816
4118
|
var showDownload = columns.includes("download");
|
|
@@ -3822,15 +4124,18 @@ var TransactionsListDesktop = function (_a) {
|
|
|
3822
4124
|
return (jsxs("div", __assign({ className: "contents ".concat(isClickable && "cursor-pointer", " show-on-hover-container"), onClick: function () {
|
|
3823
4125
|
onTransactionClick(transaction);
|
|
3824
4126
|
}, style: {
|
|
3825
|
-
backgroundColor: index % 2 === 0
|
|
3826
|
-
|
|
4127
|
+
backgroundColor: index % 2 === 0
|
|
4128
|
+
? "var(--row-background".concat(darkMode ? "-dark" : "", ")")
|
|
4129
|
+
: "var(--row-background-alternate".concat(darkMode ? "-dark" : "", ")"),
|
|
4130
|
+
} }, { children: [showDateAndTitle && (jsxs(Fragment, { children: [jsx(TransactionGridCell, __assign({ right: false }, { children: jsx(TransactionDate, { date: transaction.createdAt }) })), jsxs(TransactionGridCell, __assign({ right: false, className: "flex items-center gap-2" }, { children: [jsx(Text$6, { children: capitalizeFirstLetter(transaction.kind.toLowerCase()) }), jsx(TransactionRowTitle, { transaction: transaction })] }))] })), showDownload && (jsx(TransactionGridCell, { children: jsx(TransactionDownload, { transaction: transaction, token: token, subdomain: subdomain }) })), showState && (jsx(TransactionGridCell, __assign({ right: true }, { children: jsx(StateTag, { state: transaction.state }) }))), showAmount && (jsx(TransactionGridCell, __assign({ right: true }, { children: jsx(Text$6, { children: Misc.formatCurrency(transaction.transactionable.amount || transaction.amount, transaction.currencyId) }) })))] }), index));
|
|
3827
4131
|
});
|
|
3828
4132
|
};
|
|
3829
4133
|
|
|
4134
|
+
var Text$5 = Typography.Text;
|
|
3830
4135
|
var TransactionsListMobile = function (_a) {
|
|
3831
4136
|
var transactions = _a.transactions, onTransactionClick = _a.onTransactionClick;
|
|
3832
4137
|
var columns = useContext(TransactionsListContext).columns;
|
|
3833
|
-
var _b = useContext(BunnyContext), token = _b.token, subdomain = _b.subdomain;
|
|
4138
|
+
var _b = useContext(BunnyContext), token = _b.token, subdomain = _b.subdomain, darkMode = _b.darkMode;
|
|
3834
4139
|
var showAmount = columns.includes("amount");
|
|
3835
4140
|
var showDateAndTitle = columns.includes("date-and-title");
|
|
3836
4141
|
var showDownload = columns.includes("download");
|
|
@@ -3842,8 +4147,10 @@ var TransactionsListMobile = function (_a) {
|
|
|
3842
4147
|
return (jsxs("div", __assign({ className: "contents ".concat(isClickable && "cursor-pointer", " show-on-hover-container"), onClick: function () {
|
|
3843
4148
|
onTransactionClick(transaction);
|
|
3844
4149
|
}, style: {
|
|
3845
|
-
backgroundColor: index % 2 === 0
|
|
3846
|
-
|
|
4150
|
+
backgroundColor: index % 2 === 0
|
|
4151
|
+
? "var(--row-background".concat(darkMode ? "-dark" : "", ")")
|
|
4152
|
+
: "var(--row-background-alternate".concat(darkMode ? "-dark" : "", ")"),
|
|
4153
|
+
} }, { children: [jsx(TransactionGridCell, { children: jsxs("div", __assign({ className: "flex flex-col gap-2" }, { children: [jsxs("div", __assign({ className: "flex items-center gap-2" }, { children: [showDateAndTitle && (jsxs(Fragment, { children: [jsx(Text$5, { children: capitalizeFirstLetter(transaction.kind.toLowerCase()) }), jsx(TransactionRowTitle, { transaction: transaction })] })), showState && jsx(StateTag, { state: transaction.state })] })), jsxs("div", __assign({ className: "flex items-center gap-2" }, { children: [showDateAndTitle && (jsx(TransactionDate, { date: transaction.createdAt })), showAmount && showDateAndTitle && jsx(Text$5, { children: "\u00B7" }), showAmount && (jsx(Text$5, { children: Misc.formatCurrency(transaction.transactionable.amount, transaction.currencyId) }))] }))] })) }), showDownload && (jsx(TransactionGridCell, __assign({ right: true }, { children: jsx(TransactionDownload, { transaction: transaction, token: token, subdomain: subdomain }) })))] }), index));
|
|
3847
4154
|
});
|
|
3848
4155
|
};
|
|
3849
4156
|
|
|
@@ -3865,6 +4172,7 @@ var getTransactions = function (filter, token, subdomain, kindsToShow) { return
|
|
|
3865
4172
|
})];
|
|
3866
4173
|
case 1:
|
|
3867
4174
|
response = _d.sent();
|
|
4175
|
+
console.log("response", response);
|
|
3868
4176
|
return [4 /*yield*/, response.json()];
|
|
3869
4177
|
case 2:
|
|
3870
4178
|
_a = _d.sent(), data = _a.data, errors = _a.errors;
|
|
@@ -3892,6 +4200,7 @@ var PageContent = function (_a) {
|
|
|
3892
4200
|
return (jsx("div", __assign({ className: className, ref: pageContentRef, style: style }, { children: children })));
|
|
3893
4201
|
};
|
|
3894
4202
|
|
|
4203
|
+
var Text$4 = Typography.Text;
|
|
3895
4204
|
var PageHeaderWithActions = function (_a) {
|
|
3896
4205
|
var children = _a.children, title = _a.title;
|
|
3897
4206
|
var isMobile = useIsMobile$1();
|
|
@@ -3900,11 +4209,12 @@ var PageHeaderWithActions = function (_a) {
|
|
|
3900
4209
|
var PageSubTitle = function (_a) {
|
|
3901
4210
|
var title = _a.title;
|
|
3902
4211
|
var secondaryColor = useContext(BrandContext).secondaryColor;
|
|
3903
|
-
|
|
4212
|
+
var darkMode = useContext(BunnyContext).darkMode;
|
|
4213
|
+
return (jsx(Text$4, __assign({ className: "shrink-0 font-medium", style: { color: darkMode ? undefined : secondaryColor } }, { children: title })));
|
|
3904
4214
|
};
|
|
3905
4215
|
|
|
3906
4216
|
function ActualTransactions() {
|
|
3907
|
-
var _a = useContext(TransactionsListContext), showSearchBar = _a.showSearchBar, showTitle = _a.showTitle, transactionComponent = _a.transactionComponent, useModal = _a.useModal, onTransactionClick = _a.onTransactionClick, suppressTransactionDisplay = _a.suppressTransactionDisplay, kindsToShow = _a.kindsToShow, className = _a.className, shadow = _a.shadow
|
|
4217
|
+
var _a = useContext(TransactionsListContext), showSearchBar = _a.showSearchBar, showTitle = _a.showTitle, transactionComponent = _a.transactionComponent, useModal = _a.useModal, onTransactionClick = _a.onTransactionClick, suppressTransactionDisplay = _a.suppressTransactionDisplay, kindsToShow = _a.kindsToShow, className = _a.className, shadow = _a.shadow; _a.searchBarClassName; var style = _a.style;
|
|
3908
4218
|
// Context
|
|
3909
4219
|
var columns = useContext(TransactionsListContext).columns;
|
|
3910
4220
|
var _b = useContext(BunnyContext), token = _b.token, subdomain = _b.subdomain;
|
|
@@ -3965,16 +4275,26 @@ function ActualTransactions() {
|
|
|
3965
4275
|
}
|
|
3966
4276
|
return templateColumns.join(" ");
|
|
3967
4277
|
};
|
|
3968
|
-
return (jsxs(
|
|
3969
|
-
|
|
3970
|
-
|
|
4278
|
+
return (jsxs("div", __assign({ style: style }, { children: [jsx(PageHeaderWithActions, __assign({ title: showTitle ? "Past transactions" : undefined }, { children: showSearchBar && (jsx("div", { children: jsx(Input
|
|
4279
|
+
// className={
|
|
4280
|
+
// searchBarClassName
|
|
4281
|
+
// ? searchBarClassName
|
|
4282
|
+
// : "border border-slate-200"
|
|
4283
|
+
// }
|
|
4284
|
+
, {
|
|
4285
|
+
// className={
|
|
4286
|
+
// searchBarClassName
|
|
4287
|
+
// ? searchBarClassName
|
|
4288
|
+
// : "border border-slate-200"
|
|
4289
|
+
// }
|
|
4290
|
+
onChange: function (e) {
|
|
3971
4291
|
if (isNaN(Number(e.target.value))) {
|
|
3972
4292
|
return;
|
|
3973
4293
|
}
|
|
3974
4294
|
setSearch(e.target.value);
|
|
3975
4295
|
}, prefix: jsx(SearchOutlined$1, {}), placeholder: "Search by id #", style: {
|
|
3976
4296
|
minWidth: "300px",
|
|
3977
|
-
}, value: search }) })) })), jsx(PageContent, __assign({ className: "flex w-full shadow-padding-xb ".concat(isMobile ? "overflow-hidden" : "", " ").concat(className) }, { children: jsx("div", __assign({ className: "grid w-full
|
|
4297
|
+
}, value: search }) })) })), jsx(PageContent, __assign({ className: "flex w-full shadow-padding-xb ".concat(isMobile ? "overflow-hidden" : "", " ").concat(className) }, { children: jsx("div", __assign({ className: "grid w-full rounded-md overflow-auto ".concat("shadow-".concat(shadow)), style: {
|
|
3978
4298
|
gridTemplateColumns: gridTemplateColumns(),
|
|
3979
4299
|
} }, { children: isMobile ? (jsx(Fragment, { children: TransactionsListMobile({
|
|
3980
4300
|
transactions: transactions,
|
|
@@ -3982,7 +4302,7 @@ function ActualTransactions() {
|
|
|
3982
4302
|
}) })) : (jsx(Fragment, { children: TransactionsListDesktop({
|
|
3983
4303
|
transactions: transactions,
|
|
3984
4304
|
onTransactionClick: handleTransactionClick,
|
|
3985
|
-
}) })) })) })), useModal ? (jsx(Modal, __assign({ title: "Basic Modal", open: drawerOpen, onOk: function () { return setDrawerOpen(false); }, onCancel: function () { return setDrawerOpen(false); }, width: 900, footer: null }, { children: jsx(Invoice, { id: (selectedTransaction === null || selectedTransaction === void 0 ? void 0 : selectedTransaction.transactionableId) || "" }) }))) : (jsx(Drawer, __assign({ title: "Invoice", onClose: function () { return setDrawerOpen(false); }, open: drawerOpen, width: 900 }, { children: transactionComponent ? (transactionComponent) : (selectedTransaction === null || selectedTransaction === void 0 ? void 0 : selectedTransaction.kind) === "INVOICE" ? (jsx(Invoice, { id: selectedTransaction.transactionableId })) : (jsx("div", { children: "Not an invoice, or no transaction selected" })) })))] }));
|
|
4305
|
+
}) })) })) })), useModal ? (jsx(Modal, __assign({ title: "Basic Modal", open: drawerOpen, onOk: function () { return setDrawerOpen(false); }, onCancel: function () { return setDrawerOpen(false); }, width: 900, footer: null }, { children: jsx(Invoice, { id: (selectedTransaction === null || selectedTransaction === void 0 ? void 0 : selectedTransaction.transactionableId) || "" }) }))) : (jsx(Drawer, __assign({ title: "Invoice", onClose: function () { return setDrawerOpen(false); }, open: drawerOpen, width: 900 }, { children: transactionComponent ? (transactionComponent) : (selectedTransaction === null || selectedTransaction === void 0 ? void 0 : selectedTransaction.kind) === "INVOICE" ? (jsx(Invoice, { id: selectedTransaction.transactionableId })) : (jsx("div", { children: "Not an invoice, or no transaction selected" })) })))] })));
|
|
3986
4306
|
}
|
|
3987
4307
|
// Create a client
|
|
3988
4308
|
var queryClient = new QueryClient();
|
|
@@ -3992,7 +4312,7 @@ function Transactions(_a) {
|
|
|
3992
4312
|
TransactionKind.PAYMENT,
|
|
3993
4313
|
TransactionKind.REFUND,
|
|
3994
4314
|
TransactionKind.WRITE_OFF,
|
|
3995
|
-
] : _h;
|
|
4315
|
+
] : _h, style = _a.style;
|
|
3996
4316
|
var contextValues = {
|
|
3997
4317
|
showSearchBar: showSearchBar,
|
|
3998
4318
|
showTitle: showTitle,
|
|
@@ -4005,6 +4325,7 @@ function Transactions(_a) {
|
|
|
4005
4325
|
onTransactionClick: onTransactionClick,
|
|
4006
4326
|
suppressTransactionDisplay: suppressTransactionDisplay,
|
|
4007
4327
|
kindsToShow: kindsToShow,
|
|
4328
|
+
style: style,
|
|
4008
4329
|
};
|
|
4009
4330
|
return (jsx(QueryClientProvider, __assign({ client: queryClient }, { children: jsx(TransactionsListContext.Provider, __assign({ value: contextValues }, { children: jsx(ActualTransactions, {}) })) })));
|
|
4010
4331
|
}
|
|
@@ -4470,29 +4791,7 @@ var ErrorView = function (_a) {
|
|
|
4470
4791
|
return (jsxs("div", __assign({ className: "flex flex-col w-full", style: { marginTop: "80px" } }, { children: [jsx("div", __assign({ style: { fontSize: "32px" } }, { children: message })), children] })));
|
|
4471
4792
|
};
|
|
4472
4793
|
|
|
4473
|
-
var
|
|
4474
|
-
var color = _a.color;
|
|
4475
|
-
return (jsxs("svg", __assign({ width: "45", height: "15", viewBox: "0 0 39 13", fill: "none", xmlns: "http://www.w3.org/2000/svg" }, { children: [jsxs("g", __assign({ clipPath: "url(#clip0_6_851)" }, { children: [jsx("path", { className: "icon-path", d: "M14.5898 7.19708C14.5898 9.35053 13.0926 10.325 11.2495 10.325C9.39955 10.325 7.90234 9.35001 7.90234 7.18967V3.26221H10.1125V7.00052C10.1125 7.87719 10.5855 8.27725 11.2495 8.27725C11.9061 8.27725 12.3865 7.87719 12.3865 7.00052V3.26221H14.5898V7.19708Z", fill: color }), jsx("path", { className: "icon-path", d: "M31.8943 12.9625H29.4793L31.8523 8.62816L28.9355 3.26221H31.4708L33.0457 6.35524L34.5924 3.26221H37.0075L31.8943 12.9625Z", fill: color }), jsx("path", { className: "icon-path", d: "M15.1602 5.96827C15.1602 3.8148 16.6574 2.84033 18.5005 2.84033C20.3504 2.84033 21.8476 3.81533 21.8476 5.97568V10.1473H19.6374V6.16483C19.6374 5.28815 19.1645 4.8881 18.5005 4.8881C17.8439 4.8881 17.3634 5.28815 17.3634 6.16483V10.1473H15.1602V5.96827Z", fill: color }), jsx("path", { className: "icon-path", d: "M22.4316 5.96827C22.4316 3.8148 23.9289 2.84033 25.7719 2.84033C27.6219 2.84033 29.1191 3.81533 29.1191 5.97568V10.1473H26.9089V6.16483C26.9089 5.28815 26.4359 4.8881 25.7719 4.8881C25.1154 4.8881 24.6349 5.28815 24.6349 6.16483V10.1473H22.4316V5.96827Z", fill: color }), jsx("path", { className: "icon-path", d: "M7.40511 6.68957C7.40511 8.7236 6.02815 10.3227 4.17816 10.3227C3.23907 10.3227 2.61071 9.94378 2.19358 9.40371V10.1404H0.0605469V0.0405273H2.26381V3.91939C2.68041 3.42158 3.28802 3.07069 4.17763 3.07069C6.02759 3.07069 7.40511 4.66981 7.40511 6.68957ZM2.17229 6.69642C2.17229 7.60802 2.77937 8.2744 3.64823 8.2744C4.53783 8.2744 5.13107 7.59372 5.13107 6.69642C5.13107 5.79912 4.53783 5.11844 3.64823 5.11844C2.77937 5.11844 2.17229 5.78482 2.17229 6.69642Z", fill: color }), jsx("path", { className: "icon-path", d: "M38.966 8.94801C38.966 9.76181 38.2668 10.4631 37.4618 10.4631C36.6499 10.4631 35.9434 9.76181 35.9434 8.94801C35.9434 8.14846 36.6494 7.46094 37.4618 7.46094C38.2668 7.46094 38.966 8.14846 38.966 8.94801Z", fill: color })] })), jsx("defs", { children: jsx("clipPath", __assign({ id: "clip0_6_851" }, { children: jsx("rect", { width: "39", height: "13", fill: "white" }) })) })] })));
|
|
4476
|
-
};
|
|
4477
|
-
|
|
4478
|
-
var Footer = function () {
|
|
4479
|
-
var _a = useCurrentUserData(), privacyUrl = _a.privacyUrl, termsUrl = _a.termsUrl;
|
|
4480
|
-
var isMobile = useIsMobile$1();
|
|
4481
|
-
var quotePreviewData = useRecoilValue(planPickerQuoteDataState);
|
|
4482
|
-
var selectedPriceList = quotePreviewData === null || quotePreviewData === void 0 ? void 0 : quotePreviewData.priceList;
|
|
4483
|
-
if (selectedPriceList && isMobile)
|
|
4484
|
-
return null;
|
|
4485
|
-
return (jsxs("div", __assign({ className: "flex items-center justify-between shrink-0 ".concat(isMobile ? "flex-col gap-2 grow" : "px-12") }, { children: [(termsUrl || privacyUrl) && (jsxs("div", __assign({ className: "flex items-center gap-3" }, { children: [termsUrl && (jsx(StyedLink, __assign({ className: "text-xs text-slate-400", href: termsUrl, rel: "noopener noreferrer", target: "_blank", type: "text" }, { children: "Terms" }))), privacyUrl && (jsx(StyedLink, __assign({ className: "text-xs text-slate-400", href: privacyUrl, rel: "noopener noreferrer", target: "_blank", type: "text" }, { children: "Privacy" })))] }))), jsx(BunnyMarketingLink, {})] })));
|
|
4486
|
-
};
|
|
4487
|
-
var BunnyMarketingLink = function () {
|
|
4488
|
-
var _a = useState(false), isHovered = _a[0], setIsHovered = _a[1];
|
|
4489
|
-
var isMobile = useIsMobile$1();
|
|
4490
|
-
return (jsx("div", __assign({ className: "flex items-end justify-end ".concat(isMobile ? "" : "grow") }, { children: jsx(StyledBunnyLink, __assign({ className: "flex items-end justify-end text-slate-400", href: "https://bunny.com/", rel: "noopener noreferrer", target: "_blank", type: "text" }, { children: jsxs("div", __assign({ className: "flex items-center", onMouseEnter: function () { return setIsHovered(true); }, onMouseLeave: function () { return setIsHovered(false); } }, { children: ["Powered by\u00A0", jsx("div", __assign({ style: { paddingTop: "5px" } }, { children: jsx(BunnyFooterIcon, { color: isHovered ? PRIMARY_COLOR : SLATE_400 }) }))] })) })) })));
|
|
4491
|
-
};
|
|
4492
|
-
var StyedLink = styled.a(templateObject_1$3 || (templateObject_1$3 = __makeTemplateObject(["\n color: ", ";\n transition: color 0.3s;\n &:hover {\n color: ", ";\n }\n"], ["\n color: ", ";\n transition: color 0.3s;\n &:hover {\n color: ", ";\n }\n"])), SLATE_400, SLATE_500);
|
|
4493
|
-
var StyledBunnyLink = styled(StyedLink)(templateObject_2 || (templateObject_2 = __makeTemplateObject(["\n &:hover {\n color: ", " !important;\n }\n"], ["\n &:hover {\n color: ", " !important;\n }\n"])), PRIMARY_COLOR);
|
|
4494
|
-
var templateObject_1$3, templateObject_2;
|
|
4495
|
-
|
|
4794
|
+
var Text$3 = Typography.Text;
|
|
4496
4795
|
var HideExpiredToggle = function (_a) {
|
|
4497
4796
|
var hideExpired = _a.hideExpired, setHideExpired = _a.setHideExpired, subscriptions = _a.subscriptions;
|
|
4498
4797
|
var isMobile = useIsMobile$1();
|
|
@@ -4506,16 +4805,11 @@ var HideExpiredToggle = function (_a) {
|
|
|
4506
4805
|
return null;
|
|
4507
4806
|
return (jsxs("div", __assign({ className: "flex items-center gap-4 pl-4" }, { children: [!isMobile && jsx(Divider, { className: "h-5", type: "vertical" }), jsx(StyledCheckbox, { children: jsx(Checkbox, __assign({ checked: hideExpired, onChange: function (e) { return setHideExpired(e.target.checked); }, style: {
|
|
4508
4807
|
color: secondaryColor,
|
|
4509
|
-
} }, { children: isMobile ? "Hide inactive" : "Hide inactive subscriptions" })) })] })));
|
|
4808
|
+
} }, { children: jsx(Text$3, { children: isMobile ? "Hide inactive" : "Hide inactive subscriptions" }) })) })] })));
|
|
4510
4809
|
};
|
|
4511
4810
|
var StyledCheckbox = styled.div(templateObject_1$2 || (templateObject_1$2 = __makeTemplateObject(["\n .ant-checkbox-wrapper span {\n padding-inline-end: 0 !important;\n }\n"], ["\n .ant-checkbox-wrapper span {\n padding-inline-end: 0 !important;\n }\n"])));
|
|
4512
4811
|
var templateObject_1$2;
|
|
4513
4812
|
|
|
4514
|
-
var SubscriptionsListCell = function (_a) {
|
|
4515
|
-
var children = _a.children, className = _a.className, gridColumn = _a.gridColumn, right = _a.right, style = _a.style;
|
|
4516
|
-
return (jsx("div", __assign({ className: "flex items-center text-sm whitespace-nowrap ".concat(className), style: __assign({ gridColumn: gridColumn, textAlign: right ? "right" : "left", justifyContent: right ? "flex-end" : "flex-start" }, style) }, { children: children })));
|
|
4517
|
-
};
|
|
4518
|
-
|
|
4519
4813
|
var SubscriptionState;
|
|
4520
4814
|
(function (SubscriptionState) {
|
|
4521
4815
|
SubscriptionState["ACTIVE"] = "ACTIVE";
|
|
@@ -4526,195 +4820,20 @@ var SubscriptionState;
|
|
|
4526
4820
|
})(SubscriptionState || (SubscriptionState = {}));
|
|
4527
4821
|
var SubscriptionState$1 = SubscriptionState;
|
|
4528
4822
|
|
|
4529
|
-
var
|
|
4530
|
-
|
|
4531
|
-
|
|
4532
|
-
};
|
|
4533
|
-
|
|
4534
|
-
var MUTATION = "\nmutation quoteSubscriptionReinstate($ids: [ID!]!) {\n quoteSubscriptionReinstate(ids: $ids) {\n quote {\n id\n uuid\n accountId\n dealId\n name\n amount\n taxAmount\n discount\n netPaymentDays\n acceptedByName\n acceptedByTitle\n state\n billingDay\n evergreen\n requiresApproval\n isPendingApprovalRequest\n poNumber\n kind\n currencyId\n ownerId\n contactId\n quoteChanges {\n id\n priceListId\n charges {\n id\n pricingModel\n chargeType\n billingPeriod\n price\n priceDecimals\n tieredAveragePrice\n quantity\n quantityMin\n quantityMax\n discount\n amount\n prorationRate\n name\n invoiceLineText\n createdAt\n updatedAt\n startDate\n endDate\n billingPeriodAmounts { id amount prorationRate }\n currencyId\n couponId\n feature { id name code isUnit unitName }\n priceTiers { starts price }\n }\n }\n expiresAt\n createdAt\n updatedAt\n startDate\n endDate\n invoiceUntil\n applicationDate\n applied\n endDateOptions {\n endDate\n label\n }\n invoiceUntilOptions {\n endDate\n label\n }\n notes\n message\n amountsByPeriod {\n id\n name\n amount\n }\n subtotal\n credits\n discountValue\n }\n }\n}\n";
|
|
4535
|
-
var getGuoteSubscriptionReinstate = function (_a) {
|
|
4536
|
-
var ids = _a.ids, token = _a.token, subdomain = _a.subdomain;
|
|
4823
|
+
var FEATURE_USAGE_MUTATION = "\nquery GetFeatureUsage($id: ID!) {\n featureUsageHistogram(subscriptionChargeId: $id) {\n subscriptionCharge { \n id\n name\n amount\n currentPeriodPriceByTiers { \n tier { starts price } \n quantity\n amount\n }\n }\n feature { id name }\n periodRange\n dataInterval\n data {\n periodStart\n periodEnd\n intervals {\n intervalStart\n intervalUsage\n }\n intervalsTotal\n }\n }\n}\n";
|
|
4824
|
+
var getFeatureUsage = function (_a) {
|
|
4825
|
+
var subscriptionChargeId = _a.subscriptionChargeId; _a.startDate; _a.endDate; _a.dataInterval; var token = _a.token;
|
|
4537
4826
|
return __awaiter(void 0, void 0, void 0, function () {
|
|
4538
|
-
var vars, response
|
|
4827
|
+
var vars, response;
|
|
4828
|
+
var _b;
|
|
4539
4829
|
return __generator(this, function (_c) {
|
|
4540
4830
|
switch (_c.label) {
|
|
4541
4831
|
case 0:
|
|
4542
|
-
vars = {
|
|
4832
|
+
vars = {
|
|
4833
|
+
id: subscriptionChargeId,
|
|
4834
|
+
};
|
|
4543
4835
|
return [4 /*yield*/, gqlRequest({
|
|
4544
|
-
query:
|
|
4545
|
-
token: token,
|
|
4546
|
-
vars: vars,
|
|
4547
|
-
subdomain: subdomain,
|
|
4548
|
-
})];
|
|
4549
|
-
case 1:
|
|
4550
|
-
response = _c.sent();
|
|
4551
|
-
_b = response === null || response === void 0 ? void 0 : response.quoteSubscriptionReinstate, errors = _b.errors, quote = _b.quote;
|
|
4552
|
-
if (errors)
|
|
4553
|
-
throw errors;
|
|
4554
|
-
return [2 /*return*/, quote];
|
|
4555
|
-
}
|
|
4556
|
-
});
|
|
4557
|
-
});
|
|
4558
|
-
};
|
|
4559
|
-
|
|
4560
|
-
var useCancelSubscription = function () {
|
|
4561
|
-
var graphQLRequest = useGraphQLRequest();
|
|
4562
|
-
return function (subscriptionIds, token) { return __awaiter(void 0, void 0, void 0, function () {
|
|
4563
|
-
var data;
|
|
4564
|
-
var _a;
|
|
4565
|
-
return __generator(this, function (_b) {
|
|
4566
|
-
switch (_b.label) {
|
|
4567
|
-
case 0: return [4 /*yield*/, graphQLRequest("\n mutation SubscriptionCancel($subscriptionIds: [ID!]!) {\n subscriptionCancel(ids: $subscriptionIds) {\n subscriptions {\n accountId\n state\n }\n }\n }", token, { subscriptionIds: subscriptionIds })];
|
|
4568
|
-
case 1:
|
|
4569
|
-
data = _b.sent();
|
|
4570
|
-
return [2 /*return*/, (_a = data === null || data === void 0 ? void 0 : data.subscriptions) === null || _a === void 0 ? void 0 : _a.nodes];
|
|
4571
|
-
}
|
|
4572
|
-
});
|
|
4573
|
-
}); };
|
|
4574
|
-
};
|
|
4575
|
-
|
|
4576
|
-
var SubscriptionCardActions = function (_a) {
|
|
4577
|
-
var _b, _c;
|
|
4578
|
-
var planChangeOptions = _a.planChangeOptions, subscription = _a.subscription, setEditingQuoteData = _a.setEditingQuoteData, setPayModalVisible = _a.setPayModalVisible;
|
|
4579
|
-
// Context
|
|
4580
|
-
var _d = useContext(BunnyContext), token = _d.token, subdomain = _d.subdomain;
|
|
4581
|
-
var _e = useContext(SubscriptionsContext), onChangePlanClick = _e.onChangePlanClick, onClickUpgrade = _e.onClickUpgrade, isTempViewOnly = _e.isTempViewOnly;
|
|
4582
|
-
// Hooks
|
|
4583
|
-
var showSuccessNotification = NotificationUtils.useSuccessNotification();
|
|
4584
|
-
var cancelSubscription = useCancelSubscription();
|
|
4585
|
-
var queryClient = useQueryClient();
|
|
4586
|
-
// const navigate = usePortalNavigate();
|
|
4587
|
-
// const handleUpgradingSubscriptionChange =
|
|
4588
|
-
// useHandleUpgradingSubscriptionChange();
|
|
4589
|
-
// Derived state
|
|
4590
|
-
var canShowCancelButton = subscription.plan.selfServiceCancel;
|
|
4591
|
-
var productPlans = (_b = planChangeOptions === null || planChangeOptions === void 0 ? void 0 : planChangeOptions.plans) === null || _b === void 0 ? void 0 : _b.filter(function (plan) { var _a; return ((_a = plan.priceLists) === null || _a === void 0 ? void 0 : _a.length) > 0 && plan.productId === subscription.product.id; });
|
|
4592
|
-
var canShowChangePlanButton = ((productPlans === null || productPlans === void 0 ? void 0 : productPlans.length) || 0) > 0;
|
|
4593
|
-
// Mutations
|
|
4594
|
-
var subscriptionCancel = useMutation({
|
|
4595
|
-
mutationFn: function () { return cancelSubscription([subscription.id], token); },
|
|
4596
|
-
onSuccess: function () {
|
|
4597
|
-
queryClient.invalidateQueries({
|
|
4598
|
-
queryKey: QueryKeyFactory.default.createTableKey("subscriptions"),
|
|
4599
|
-
});
|
|
4600
|
-
showSuccessNotification("Subscription canceled");
|
|
4601
|
-
},
|
|
4602
|
-
});
|
|
4603
|
-
useMutation({
|
|
4604
|
-
mutationFn: function () {
|
|
4605
|
-
return getGuoteSubscriptionReinstate({
|
|
4606
|
-
ids: [subscription.id],
|
|
4607
|
-
token: token,
|
|
4608
|
-
subdomain: subdomain,
|
|
4609
|
-
});
|
|
4610
|
-
},
|
|
4611
|
-
onSuccess: function (quote) {
|
|
4612
|
-
setEditingQuoteData({ id: quote.id, isTrial: false });
|
|
4613
|
-
setPayModalVisible(true);
|
|
4614
|
-
},
|
|
4615
|
-
});
|
|
4616
|
-
// Handlers
|
|
4617
|
-
var handleChangePlanClick = function () {
|
|
4618
|
-
// handleUpgradingSubscriptionChange({
|
|
4619
|
-
// subscription,
|
|
4620
|
-
// });
|
|
4621
|
-
console.log("handleChangePlanClick handleUpgradingSubscriptionChange not implemented");
|
|
4622
|
-
// navigate("plan-manager", {
|
|
4623
|
-
// subscriptionUpgradeId: subscription.id,
|
|
4624
|
-
// });
|
|
4625
|
-
onChangePlanClick();
|
|
4626
|
-
};
|
|
4627
|
-
return (canShowChangePlanButton || canShowCancelButton) &&
|
|
4628
|
-
canShowSubscriptionActions(subscription) ? (jsxs(Fragment, { children: [!isTempViewOnly && canShowCancelButton && (jsx(Popconfirm, __assign({ icon: null, onConfirm: function () { return subscriptionCancel.mutate(); }, title: "Cancel subscription" }, { children: jsx(Button, __assign({ className: "p-0", type: "link" }, { children: "Cancel subscription" })) }))), !isTempViewOnly && canShowChangePlanButton && (jsx(Button, __assign({ onClick: function () { return handleChangePlanClick(); }, type: "primary" }, { children: "Change plan" })))] })) : ((_c = subscription.state) === null || _c === void 0 ? void 0 : _c.toUpperCase()) === SubscriptionState$2.TRIAL ? (jsx(Fragment, { children: !isTempViewOnly && (jsx(Button, __assign({ onClick: function () {
|
|
4629
|
-
// handleUpgradingSubscriptionChange({
|
|
4630
|
-
// subscription,
|
|
4631
|
-
// });
|
|
4632
|
-
console.log("onClickUpgrade handleUpgradingSubscriptionChange not implemented");
|
|
4633
|
-
// navigate("plan-manager", {
|
|
4634
|
-
// subscriptionUpgradeId: subscription.id,
|
|
4635
|
-
// });
|
|
4636
|
-
onClickUpgrade();
|
|
4637
|
-
}, type: "primary" }, { children: "Upgrade" }))) })) : null;
|
|
4638
|
-
};
|
|
4639
|
-
|
|
4640
|
-
var getSubscriptionStatusText = function (subscription) {
|
|
4641
|
-
var cancellationDate = subscription.cancellationDate, state = subscription.state, evergreen = subscription.evergreen, endDate = subscription.endDate;
|
|
4642
|
-
if (cancellationDate &&
|
|
4643
|
-
(state === null || state === void 0 ? void 0 : state.toUpperCase()) !== SubscriptionState$2.CANCELED &&
|
|
4644
|
-
(state === null || state === void 0 ? void 0 : state.toUpperCase()) !== SubscriptionState$2.EXPIRED) {
|
|
4645
|
-
return (jsxs(Tag, __assign({ color: "red" }, { children: ["Canceled - ends on ", Misc.formatDate(cancellationDate)] })));
|
|
4646
|
-
}
|
|
4647
|
-
if (evergreen) {
|
|
4648
|
-
return "Renews on ".concat(Misc.formatDate(endDate));
|
|
4649
|
-
}
|
|
4650
|
-
if ((state === null || state === void 0 ? void 0 : state.toUpperCase()) === SubscriptionState$2.CANCELED ||
|
|
4651
|
-
(state === null || state === void 0 ? void 0 : state.toUpperCase()) === SubscriptionState$2.EXPIRED) {
|
|
4652
|
-
return "Ended on ".concat(Misc.formatDate(endDate));
|
|
4653
|
-
}
|
|
4654
|
-
return "Ends on ".concat(Misc.formatDate(endDate));
|
|
4655
|
-
};
|
|
4656
|
-
var SubscriptionCardHeader = function (_a) {
|
|
4657
|
-
var _b, _c, _d, _e, _f;
|
|
4658
|
-
var planChangeOptions = _a.planChangeOptions, setEditingQuoteData = _a.setEditingQuoteData, setPayModalVisible = _a.setPayModalVisible, subscription = _a.subscription;
|
|
4659
|
-
var isMobile = useIsMobile$1();
|
|
4660
|
-
// Derived state
|
|
4661
|
-
var trialDaysLeft = dayjs(subscription.trialEndDate).diff(dayjs(), "days");
|
|
4662
|
-
var isTrial = ((_b = subscription.state) === null || _b === void 0 ? void 0 : _b.toUpperCase()) === SubscriptionState$2.TRIAL;
|
|
4663
|
-
return (jsxs("div", __assign({ className: "flex items-center justify-between" }, { children: [jsxs("div", __assign({ className: "flex flex-col gap-2" }, { children: [((_c = subscription === null || subscription === void 0 ? void 0 : subscription.product) === null || _c === void 0 ? void 0 : _c.name) && (jsx("div", __assign({ className: "font-medium text-orange-500", style: { fontSize: "11px" } }, { children: (_d = subscription.product.name) === null || _d === void 0 ? void 0 : _d.toUpperCase() }))), jsxs("div", __assign({ className: "flex grow items-center gap-2" }, { children: [((_e = subscription === null || subscription === void 0 ? void 0 : subscription.plan) === null || _e === void 0 ? void 0 : _e.name) && (jsx("span", __assign({ className: "text-lg" }, { children: subscription.plan.name }))), jsxs(Tag, __assign({ className: "ant-tag-".concat(TAG_COLORS[(_f = subscription.state) === null || _f === void 0 ? void 0 : _f.toUpperCase()]) }, { children: [capitalize(subscription.state.toLowerCase()), isTrial ? " (".concat(trialDaysLeft, " days left)") : ""] }))] }))] })), jsxs("div", __assign({ className: "flex items-center gap-6" }, { children: [jsx("div", __assign({ className: "grow text-xs" }, { children: getSubscriptionStatusText(subscription) })), !isMobile && (jsx(SubscriptionCardActions, { planChangeOptions: planChangeOptions, subscription: subscription, setEditingQuoteData: setEditingQuoteData, setPayModalVisible: setPayModalVisible }))] }))] })));
|
|
4664
|
-
};
|
|
4665
|
-
|
|
4666
|
-
var SubscriptionCardColumnHeaders = function (_a) {
|
|
4667
|
-
var columns = _a.columns;
|
|
4668
|
-
return columns.map(function (subscriptionColumn, index) { return (jsx("div", __assign({ className: "text-slate-400 ".concat(subscriptionColumn.className), style: { fontSize: "11px" } }, { children: subscriptionColumn.title }), index)); });
|
|
4669
|
-
};
|
|
4670
|
-
|
|
4671
|
-
var BillingPeriodConverter;
|
|
4672
|
-
(function (BillingPeriodConverter) {
|
|
4673
|
-
BillingPeriodConverter["ONCE"] = "once";
|
|
4674
|
-
BillingPeriodConverter["MONTHLY"] = "monthly";
|
|
4675
|
-
BillingPeriodConverter["ANNUAL"] = "annually";
|
|
4676
|
-
BillingPeriodConverter["SEMI_ANNUAL"] = "semi annually";
|
|
4677
|
-
BillingPeriodConverter["QUARTERLY"] = "quarterly";
|
|
4678
|
-
})(BillingPeriodConverter || (BillingPeriodConverter = {}));
|
|
4679
|
-
var SubscriptionChargeTotal = function (_a) {
|
|
4680
|
-
var charge = _a.charge, subscription = _a.subscription;
|
|
4681
|
-
var isMobile = useIsMobile$1();
|
|
4682
|
-
return (jsxs("div", __assign({ className: "flex gap-1 ".concat(isMobile ? "flex-col" : "") }, { children: [jsx("div", { children: Misc.formatCurrency(Number(charge.periodPrice), subscription.currencyId) }), charge.billingPeriod && (jsx("div", { children: BillingPeriodConverter[charge.billingPeriod] }))] })));
|
|
4683
|
-
};
|
|
4684
|
-
|
|
4685
|
-
var SubscriptionChargeUnitPrice = function (_a) {
|
|
4686
|
-
var _b, _c;
|
|
4687
|
-
var charge = _a.charge, subscription = _a.subscription;
|
|
4688
|
-
var _d = useState(false), showPriceTiers = _d[0], setShowPriceTiers = _d[1];
|
|
4689
|
-
if ((_c = (_b = charge.priceListCharge) === null || _b === void 0 ? void 0 : _b.priceListChargeTiers) === null || _c === void 0 ? void 0 : _c.length) {
|
|
4690
|
-
return (jsx(Dropdown, __assign({ dropdownRender: function () {
|
|
4691
|
-
var _a, _b;
|
|
4692
|
-
return (jsx("div", __assign({ className: "flex flex-col rounded border border-solid border-slate-200 bg-white p-2" }, { children: jsx("div", __assign({ className: "grid grid-cols-2", style: { columnGap: "0.5rem" } }, { children: (_b = (_a = charge.priceListCharge) === null || _a === void 0 ? void 0 : _a.priceListChargeTiers) === null || _b === void 0 ? void 0 : _b.map(function (tier, index) {
|
|
4693
|
-
var _a, _b, _c, _d, _e;
|
|
4694
|
-
var ends = ((_c = (_b = (_a = charge.priceListCharge) === null || _a === void 0 ? void 0 : _a.priceListChargeTiers) === null || _b === void 0 ? void 0 : _b[index + 1]) === null || _c === void 0 ? void 0 : _c.starts)
|
|
4695
|
-
? ((_e = (_d = charge.priceListCharge) === null || _d === void 0 ? void 0 : _d.priceListChargeTiers[index + 1]) === null || _e === void 0 ? void 0 : _e.starts) - 1
|
|
4696
|
-
: "∞";
|
|
4697
|
-
return (jsxs("div", __assign({ className: "contents" }, { children: [jsxs("div", __assign({ className: "whitespace-nowrap" }, { children: [tier.starts.toLocaleString(), " - ", ends.toLocaleString(), " ", ":"] })), jsx("div", __assign({ className: "whitespace-nowrap text-right" }, { children: Misc.formatCurrency(tier.price, subscription.currencyId, charge.priceDecimals) }))] }), index));
|
|
4698
|
-
}) })) })));
|
|
4699
|
-
}, onOpenChange: setShowPriceTiers, open: showPriceTiers, trigger: ["click"] }, { children: jsx("div", __assign({ className: "cursor-pointer underline", onClick: function () { return setShowPriceTiers(!showPriceTiers); } }, { children: showPriceTiers ? "hide details" : "show details" })) })));
|
|
4700
|
-
}
|
|
4701
|
-
return (jsx(Fragment, { children: Misc.formatCurrency(charge.discountedPrice, subscription.currencyId) }));
|
|
4702
|
-
};
|
|
4703
|
-
|
|
4704
|
-
var FEATURE_USAGE_MUTATION = "\nquery GetFeatureUsage($id: ID!) {\n featureUsageHistogram(subscriptionChargeId: $id) {\n subscriptionCharge { \n id\n name\n amount\n currentPeriodPriceByTiers { \n tier { starts price } \n quantity\n amount\n }\n }\n feature { id name }\n periodRange\n dataInterval\n data {\n periodStart\n periodEnd\n intervals {\n intervalStart\n intervalUsage\n }\n intervalsTotal\n }\n }\n}\n";
|
|
4705
|
-
var getFeatureUsage = function (_a) {
|
|
4706
|
-
var subscriptionChargeId = _a.subscriptionChargeId; _a.startDate; _a.endDate; _a.dataInterval; var token = _a.token;
|
|
4707
|
-
return __awaiter(void 0, void 0, void 0, function () {
|
|
4708
|
-
var vars, response;
|
|
4709
|
-
var _b;
|
|
4710
|
-
return __generator(this, function (_c) {
|
|
4711
|
-
switch (_c.label) {
|
|
4712
|
-
case 0:
|
|
4713
|
-
vars = {
|
|
4714
|
-
id: subscriptionChargeId,
|
|
4715
|
-
};
|
|
4716
|
-
return [4 /*yield*/, gqlRequest({
|
|
4717
|
-
query: FEATURE_USAGE_MUTATION,
|
|
4836
|
+
query: FEATURE_USAGE_MUTATION,
|
|
4718
4837
|
token: token,
|
|
4719
4838
|
vars: vars,
|
|
4720
4839
|
})];
|
|
@@ -4885,6 +5004,191 @@ var FeatureBarChart = function (_a) {
|
|
|
4885
5004
|
var StyledBarChart = styled(BarChart)(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\n .recharts-surface {\n overflow: visible;\n }\n"], ["\n .recharts-surface {\n overflow: visible;\n }\n"])));
|
|
4886
5005
|
var templateObject_1;
|
|
4887
5006
|
|
|
5007
|
+
var MUTATION = "\nmutation quoteSubscriptionReinstate($ids: [ID!]!) {\n quoteSubscriptionReinstate(ids: $ids) {\n quote {\n id\n uuid\n accountId\n dealId\n name\n amount\n taxAmount\n discount\n netPaymentDays\n acceptedByName\n acceptedByTitle\n state\n billingDay\n evergreen\n requiresApproval\n isPendingApprovalRequest\n poNumber\n kind\n currencyId\n ownerId\n contactId\n quoteChanges {\n id\n priceListId\n charges {\n id\n pricingModel\n chargeType\n billingPeriod\n price\n priceDecimals\n tieredAveragePrice\n quantity\n quantityMin\n quantityMax\n discount\n amount\n prorationRate\n name\n invoiceLineText\n createdAt\n updatedAt\n startDate\n endDate\n billingPeriodAmounts { id amount prorationRate }\n currencyId\n couponId\n feature { id name code isUnit unitName }\n priceTiers { starts price }\n }\n }\n expiresAt\n createdAt\n updatedAt\n startDate\n endDate\n invoiceUntil\n applicationDate\n applied\n endDateOptions {\n endDate\n label\n }\n invoiceUntilOptions {\n endDate\n label\n }\n notes\n message\n amountsByPeriod {\n id\n name\n amount\n }\n subtotal\n credits\n discountValue\n }\n }\n}\n";
|
|
5008
|
+
var getGuoteSubscriptionReinstate = function (_a) {
|
|
5009
|
+
var ids = _a.ids, token = _a.token, subdomain = _a.subdomain;
|
|
5010
|
+
return __awaiter(void 0, void 0, void 0, function () {
|
|
5011
|
+
var vars, response, _b, errors, quote;
|
|
5012
|
+
return __generator(this, function (_c) {
|
|
5013
|
+
switch (_c.label) {
|
|
5014
|
+
case 0:
|
|
5015
|
+
vars = { ids: ids };
|
|
5016
|
+
return [4 /*yield*/, gqlRequest({
|
|
5017
|
+
query: MUTATION,
|
|
5018
|
+
token: token,
|
|
5019
|
+
vars: vars,
|
|
5020
|
+
subdomain: subdomain,
|
|
5021
|
+
})];
|
|
5022
|
+
case 1:
|
|
5023
|
+
response = _c.sent();
|
|
5024
|
+
_b = response === null || response === void 0 ? void 0 : response.quoteSubscriptionReinstate, errors = _b.errors, quote = _b.quote;
|
|
5025
|
+
if (errors)
|
|
5026
|
+
throw errors;
|
|
5027
|
+
return [2 /*return*/, quote];
|
|
5028
|
+
}
|
|
5029
|
+
});
|
|
5030
|
+
});
|
|
5031
|
+
};
|
|
5032
|
+
|
|
5033
|
+
var useCancelSubscription = function () {
|
|
5034
|
+
var graphQLRequest = useGraphQLRequest();
|
|
5035
|
+
return function (subscriptionIds, token) { return __awaiter(void 0, void 0, void 0, function () {
|
|
5036
|
+
var data;
|
|
5037
|
+
var _a;
|
|
5038
|
+
return __generator(this, function (_b) {
|
|
5039
|
+
switch (_b.label) {
|
|
5040
|
+
case 0: return [4 /*yield*/, graphQLRequest("\n mutation SubscriptionCancel($subscriptionIds: [ID!]!) {\n subscriptionCancel(ids: $subscriptionIds) {\n subscriptions {\n accountId\n state\n }\n }\n }", token, { subscriptionIds: subscriptionIds })];
|
|
5041
|
+
case 1:
|
|
5042
|
+
data = _b.sent();
|
|
5043
|
+
return [2 /*return*/, (_a = data === null || data === void 0 ? void 0 : data.subscriptions) === null || _a === void 0 ? void 0 : _a.nodes];
|
|
5044
|
+
}
|
|
5045
|
+
});
|
|
5046
|
+
}); };
|
|
5047
|
+
};
|
|
5048
|
+
|
|
5049
|
+
var SubscriptionCardActions = function (_a) {
|
|
5050
|
+
var _b, _c;
|
|
5051
|
+
var planChangeOptions = _a.planChangeOptions, subscription = _a.subscription, setEditingQuoteData = _a.setEditingQuoteData, setPayModalVisible = _a.setPayModalVisible;
|
|
5052
|
+
// Context
|
|
5053
|
+
var _d = useContext(BunnyContext), token = _d.token, subdomain = _d.subdomain;
|
|
5054
|
+
var _e = useContext(SubscriptionsContext), onChangePlanClick = _e.onChangePlanClick, onClickUpgrade = _e.onClickUpgrade, isTempViewOnly = _e.isTempViewOnly;
|
|
5055
|
+
// Hooks
|
|
5056
|
+
var showSuccessNotification = NotificationUtils.useSuccessNotification();
|
|
5057
|
+
var cancelSubscription = useCancelSubscription();
|
|
5058
|
+
var queryClient = useQueryClient();
|
|
5059
|
+
// const navigate = usePortalNavigate();
|
|
5060
|
+
// const handleUpgradingSubscriptionChange =
|
|
5061
|
+
// useHandleUpgradingSubscriptionChange();
|
|
5062
|
+
// Derived state
|
|
5063
|
+
var canShowCancelButton = subscription.plan.selfServiceCancel;
|
|
5064
|
+
var productPlans = (_b = planChangeOptions === null || planChangeOptions === void 0 ? void 0 : planChangeOptions.plans) === null || _b === void 0 ? void 0 : _b.filter(function (plan) { var _a; return ((_a = plan.priceLists) === null || _a === void 0 ? void 0 : _a.length) > 0 && plan.productId === subscription.product.id; });
|
|
5065
|
+
var canShowChangePlanButton = ((productPlans === null || productPlans === void 0 ? void 0 : productPlans.length) || 0) > 0;
|
|
5066
|
+
// Mutations
|
|
5067
|
+
var subscriptionCancel = useMutation({
|
|
5068
|
+
mutationFn: function () { return cancelSubscription([subscription.id], token); },
|
|
5069
|
+
onSuccess: function () {
|
|
5070
|
+
queryClient.invalidateQueries({
|
|
5071
|
+
queryKey: QueryKeyFactory.default.createTableKey("subscriptions"),
|
|
5072
|
+
});
|
|
5073
|
+
showSuccessNotification("Subscription canceled");
|
|
5074
|
+
},
|
|
5075
|
+
});
|
|
5076
|
+
useMutation({
|
|
5077
|
+
mutationFn: function () {
|
|
5078
|
+
return getGuoteSubscriptionReinstate({
|
|
5079
|
+
ids: [subscription.id],
|
|
5080
|
+
token: token,
|
|
5081
|
+
subdomain: subdomain,
|
|
5082
|
+
});
|
|
5083
|
+
},
|
|
5084
|
+
onSuccess: function (quote) {
|
|
5085
|
+
setEditingQuoteData({ id: quote.id, isTrial: false });
|
|
5086
|
+
setPayModalVisible(true);
|
|
5087
|
+
},
|
|
5088
|
+
});
|
|
5089
|
+
// Handlers
|
|
5090
|
+
var handleChangePlanClick = function () {
|
|
5091
|
+
// handleUpgradingSubscriptionChange({
|
|
5092
|
+
// subscription,
|
|
5093
|
+
// });
|
|
5094
|
+
console.log("handleChangePlanClick handleUpgradingSubscriptionChange not implemented");
|
|
5095
|
+
// navigate("plan-manager", {
|
|
5096
|
+
// subscriptionUpgradeId: subscription.id,
|
|
5097
|
+
// });
|
|
5098
|
+
onChangePlanClick();
|
|
5099
|
+
};
|
|
5100
|
+
return (canShowChangePlanButton || canShowCancelButton) &&
|
|
5101
|
+
canShowSubscriptionActions(subscription) ? (jsxs(Fragment, { children: [!isTempViewOnly && canShowCancelButton && (jsx(Popconfirm, __assign({ icon: null, onConfirm: function () { return subscriptionCancel.mutate(); }, title: "Cancel subscription" }, { children: jsx(Button, __assign({ className: "p-0", type: "link" }, { children: "Cancel subscription" })) }))), !isTempViewOnly && canShowChangePlanButton && (jsx(Button, __assign({ onClick: function () { return handleChangePlanClick(); }, type: "primary" }, { children: "Change plan" })))] })) : ((_c = subscription.state) === null || _c === void 0 ? void 0 : _c.toUpperCase()) === SubscriptionState$2.TRIAL ? (jsx(Fragment, { children: !isTempViewOnly && (jsx(Button, __assign({ onClick: function () {
|
|
5102
|
+
// handleUpgradingSubscriptionChange({
|
|
5103
|
+
// subscription,
|
|
5104
|
+
// });
|
|
5105
|
+
console.log("onClickUpgrade handleUpgradingSubscriptionChange not implemented");
|
|
5106
|
+
// navigate("plan-manager", {
|
|
5107
|
+
// subscriptionUpgradeId: subscription.id,
|
|
5108
|
+
// });
|
|
5109
|
+
onClickUpgrade();
|
|
5110
|
+
}, type: "primary" }, { children: "Upgrade" }))) })) : null;
|
|
5111
|
+
};
|
|
5112
|
+
|
|
5113
|
+
var Text$2 = Typography.Text;
|
|
5114
|
+
var getSubscriptionStatusText = function (subscription) {
|
|
5115
|
+
var cancellationDate = subscription.cancellationDate, state = subscription.state, evergreen = subscription.evergreen, endDate = subscription.endDate;
|
|
5116
|
+
if (cancellationDate &&
|
|
5117
|
+
(state === null || state === void 0 ? void 0 : state.toUpperCase()) !== SubscriptionState$2.CANCELED &&
|
|
5118
|
+
(state === null || state === void 0 ? void 0 : state.toUpperCase()) !== SubscriptionState$2.EXPIRED) {
|
|
5119
|
+
return (jsxs(Tag, __assign({ color: "red" }, { children: ["Canceled - ends on ", Misc.formatDate(cancellationDate)] })));
|
|
5120
|
+
}
|
|
5121
|
+
if (evergreen) {
|
|
5122
|
+
return "Renews on ".concat(Misc.formatDate(endDate));
|
|
5123
|
+
}
|
|
5124
|
+
if ((state === null || state === void 0 ? void 0 : state.toUpperCase()) === SubscriptionState$2.CANCELED ||
|
|
5125
|
+
(state === null || state === void 0 ? void 0 : state.toUpperCase()) === SubscriptionState$2.EXPIRED) {
|
|
5126
|
+
return "Ended on ".concat(Misc.formatDate(endDate));
|
|
5127
|
+
}
|
|
5128
|
+
return "Ends on ".concat(Misc.formatDate(endDate));
|
|
5129
|
+
};
|
|
5130
|
+
var SubscriptionCardHeader = function (_a) {
|
|
5131
|
+
var _b, _c, _d, _e, _f;
|
|
5132
|
+
var planChangeOptions = _a.planChangeOptions, setEditingQuoteData = _a.setEditingQuoteData, setPayModalVisible = _a.setPayModalVisible, subscription = _a.subscription;
|
|
5133
|
+
var darkMode = useContext(BunnyContext).darkMode;
|
|
5134
|
+
var isMobile = useIsMobile$1();
|
|
5135
|
+
// Derived state
|
|
5136
|
+
var trialDaysLeft = dayjs(subscription.trialEndDate).diff(dayjs(), "days");
|
|
5137
|
+
var isTrial = ((_b = subscription.state) === null || _b === void 0 ? void 0 : _b.toUpperCase()) === SubscriptionState$2.TRIAL;
|
|
5138
|
+
return (jsxs("div", __assign({ className: "flex items-center justify-between", style: {
|
|
5139
|
+
backgroundColor: darkMode ? "var(--row-background-dark)" : "",
|
|
5140
|
+
} }, { children: [jsxs("div", __assign({ className: "flex flex-col gap-2" }, { children: [((_c = subscription === null || subscription === void 0 ? void 0 : subscription.product) === null || _c === void 0 ? void 0 : _c.name) && (jsx("div", __assign({ className: "font-medium text-orange-500", style: { fontSize: "11px" } }, { children: (_d = subscription.product.name) === null || _d === void 0 ? void 0 : _d.toUpperCase() }))), jsxs("div", __assign({ className: "flex grow items-center gap-2" }, { children: [((_e = subscription === null || subscription === void 0 ? void 0 : subscription.plan) === null || _e === void 0 ? void 0 : _e.name) && (jsx(Text$2, __assign({ className: "text-lg" }, { children: subscription.plan.name }))), jsxs(Tag, __assign({ className: "ant-tag-".concat(TAG_COLORS[(_f = subscription.state) === null || _f === void 0 ? void 0 : _f.toUpperCase()]) }, { children: [capitalize(subscription.state.toLowerCase()), isTrial ? " (".concat(trialDaysLeft, " days left)") : ""] }))] }))] })), jsxs("div", __assign({ className: "flex items-center gap-6" }, { children: [jsx(Text$2, __assign({ className: "grow text-xs" }, { children: getSubscriptionStatusText(subscription) })), !isMobile && (jsx(SubscriptionCardActions, { planChangeOptions: planChangeOptions, subscription: subscription, setEditingQuoteData: setEditingQuoteData, setPayModalVisible: setPayModalVisible }))] }))] })));
|
|
5141
|
+
};
|
|
5142
|
+
|
|
5143
|
+
var BillingPeriodConverter;
|
|
5144
|
+
(function (BillingPeriodConverter) {
|
|
5145
|
+
BillingPeriodConverter["ONCE"] = "once";
|
|
5146
|
+
BillingPeriodConverter["MONTHLY"] = "monthly";
|
|
5147
|
+
BillingPeriodConverter["ANNUAL"] = "annually";
|
|
5148
|
+
BillingPeriodConverter["SEMI_ANNUAL"] = "semi annually";
|
|
5149
|
+
BillingPeriodConverter["QUARTERLY"] = "quarterly";
|
|
5150
|
+
})(BillingPeriodConverter || (BillingPeriodConverter = {}));
|
|
5151
|
+
var SubscriptionChargeTotal = function (_a) {
|
|
5152
|
+
var charge = _a.charge, subscription = _a.subscription;
|
|
5153
|
+
var isMobile = useIsMobile$1();
|
|
5154
|
+
return (jsxs("div", __assign({ className: "flex gap-1 ".concat(isMobile ? "flex-col" : "") }, { children: [jsx("div", { children: Misc.formatCurrency(Number(charge.periodPrice), subscription.currencyId) }), charge.billingPeriod && (jsx("div", { children: BillingPeriodConverter[charge.billingPeriod] }))] })));
|
|
5155
|
+
};
|
|
5156
|
+
|
|
5157
|
+
var SubscriptionChargeUnitPrice = function (_a) {
|
|
5158
|
+
var _b, _c;
|
|
5159
|
+
var charge = _a.charge, subscription = _a.subscription;
|
|
5160
|
+
var darkMode = useContext(BunnyContext).darkMode;
|
|
5161
|
+
var _d = useState(false), showPriceTiers = _d[0], setShowPriceTiers = _d[1];
|
|
5162
|
+
if ((_c = (_b = charge.priceListCharge) === null || _b === void 0 ? void 0 : _b.priceListChargeTiers) === null || _c === void 0 ? void 0 : _c.length) {
|
|
5163
|
+
return (jsx(Dropdown, __assign({ dropdownRender: function () {
|
|
5164
|
+
var _a, _b;
|
|
5165
|
+
return (jsx("div", __assign({ className: "flex flex-col rounded border border-solid border-slate-200 p-2", style: {
|
|
5166
|
+
backgroundColor: darkMode
|
|
5167
|
+
? "var(--row-background-dark)"
|
|
5168
|
+
: "var(--row-background)",
|
|
5169
|
+
} }, { children: jsx("div", __assign({ className: "grid grid-cols-2", style: { columnGap: "0.5rem" } }, { children: (_b = (_a = charge.priceListCharge) === null || _a === void 0 ? void 0 : _a.priceListChargeTiers) === null || _b === void 0 ? void 0 : _b.map(function (tier, index) {
|
|
5170
|
+
var _a, _b, _c, _d, _e;
|
|
5171
|
+
var ends = ((_c = (_b = (_a = charge.priceListCharge) === null || _a === void 0 ? void 0 : _a.priceListChargeTiers) === null || _b === void 0 ? void 0 : _b[index + 1]) === null || _c === void 0 ? void 0 : _c.starts)
|
|
5172
|
+
? ((_e = (_d = charge.priceListCharge) === null || _d === void 0 ? void 0 : _d.priceListChargeTiers[index + 1]) === null || _e === void 0 ? void 0 : _e.starts) - 1
|
|
5173
|
+
: "∞";
|
|
5174
|
+
return (jsxs("div", __assign({ className: "contents" }, { children: [jsxs("div", __assign({ className: "whitespace-nowrap" }, { children: [tier.starts.toLocaleString(), " - ", ends.toLocaleString(), " ", ":"] })), jsx("div", __assign({ className: "whitespace-nowrap text-right" }, { children: Misc.formatCurrency(tier.price, subscription.currencyId, charge.priceDecimals) }))] }), index));
|
|
5175
|
+
}) })) })));
|
|
5176
|
+
}, onOpenChange: setShowPriceTiers, open: showPriceTiers, trigger: ["click"] }, { children: jsx("div", __assign({ className: "cursor-pointer underline", onClick: function () { return setShowPriceTiers(!showPriceTiers); } }, { children: showPriceTiers ? "hide details" : "show details" })) })));
|
|
5177
|
+
}
|
|
5178
|
+
return (jsx(Fragment, { children: Misc.formatCurrency(charge.discountedPrice, subscription.currencyId) }));
|
|
5179
|
+
};
|
|
5180
|
+
|
|
5181
|
+
var SubscriptionCardColumnHeaders = function (_a) {
|
|
5182
|
+
var columns = _a.columns;
|
|
5183
|
+
return columns.map(function (subscriptionColumn, index) { return (jsx("div", __assign({ className: "text-slate-400 ".concat(subscriptionColumn.className), style: { fontSize: "11px" } }, { children: subscriptionColumn.title }), index)); });
|
|
5184
|
+
};
|
|
5185
|
+
|
|
5186
|
+
var Text$1 = Typography.Text;
|
|
5187
|
+
var SubscriptionsListCell = function (_a) {
|
|
5188
|
+
var children = _a.children, className = _a.className, gridColumn = _a.gridColumn, right = _a.right, style = _a.style;
|
|
5189
|
+
return (jsx(Text$1, __assign({ className: "flex items-center text-sm whitespace-nowrap ".concat(className), style: __assign({ gridColumn: gridColumn, textAlign: right ? "right" : "left", justifyContent: right ? "flex-end" : "flex-start" }, style) }, { children: children })));
|
|
5190
|
+
};
|
|
5191
|
+
|
|
4888
5192
|
var createCardColumns = function () { return [
|
|
4889
5193
|
{
|
|
4890
5194
|
title: "CHARGE",
|
|
@@ -4963,9 +5267,10 @@ var SubscriptionCardDesktopRow = function (_a) {
|
|
|
4963
5267
|
: charge.quantity })), jsx(SubscriptionsListCell, __assign({ right: true }, { children: jsx(SubscriptionChargeUnitPrice, { charge: charge, subscription: subscription }) })), jsx(SubscriptionsListCell, __assign({ right: true }, { children: jsx(SubscriptionChargeTotal, { charge: charge, subscription: subscription }) }))] })));
|
|
4964
5268
|
};
|
|
4965
5269
|
|
|
5270
|
+
var Text = Typography.Text;
|
|
4966
5271
|
var SubscriptionCardCellMobile = function (_a) {
|
|
4967
5272
|
var children = _a.children, className = _a.className, style = _a.style;
|
|
4968
|
-
return (jsx(
|
|
5273
|
+
return (jsx(Text, __assign({ className: className, style: style }, { children: children })));
|
|
4969
5274
|
};
|
|
4970
5275
|
|
|
4971
5276
|
var CHARGE_COLUMNS = [
|
|
@@ -4988,8 +5293,12 @@ var CHARGE_COLUMNS = [
|
|
|
4988
5293
|
var SubscriptionCard = function (_a) {
|
|
4989
5294
|
var _b;
|
|
4990
5295
|
var planChangeOptions = _a.planChangeOptions, setEditingQuoteData = _a.setEditingQuoteData, setPayModalVisible = _a.setPayModalVisible, subscription = _a.subscription;
|
|
5296
|
+
var darkMode = useContext(BunnyContext).darkMode;
|
|
4991
5297
|
// Derived state
|
|
4992
5298
|
var isTrial = ((_b = subscription.state) === null || _b === void 0 ? void 0 : _b.toUpperCase()) === SubscriptionState$1.TRIAL;
|
|
5299
|
+
var backgroundColor = darkMode
|
|
5300
|
+
? "var(--row-background-dark)"
|
|
5301
|
+
: "var(--row-background)";
|
|
4993
5302
|
return (jsx(Card, { children: jsxs("div", __assign({ className: "flex flex-col p-4" }, { children: [jsx(SubscriptionCardHeader, { planChangeOptions: planChangeOptions, setEditingQuoteData: setEditingQuoteData, setPayModalVisible: setPayModalVisible, subscription: subscription }), jsx(Divider, { className: "my-4", style: {
|
|
4994
5303
|
gridColumn: "1 / -1",
|
|
4995
5304
|
width: "calc(100% + 32px)",
|
|
@@ -4998,6 +5307,7 @@ var SubscriptionCard = function (_a) {
|
|
|
4998
5307
|
columnGap: "0.5rem",
|
|
4999
5308
|
gridTemplateColumns: "1fr auto auto auto",
|
|
5000
5309
|
rowGap: "0.75rem",
|
|
5310
|
+
backgroundColor: backgroundColor,
|
|
5001
5311
|
} }, { children: [CHARGE_COLUMNS.map(function (subscriptionColumn, index) { return (jsx(SubscriptionCardCellMobile, __assign({ className: "text-slate-400 ".concat(subscriptionColumn.className), style: { fontSize: "11px" } }, { children: subscriptionColumn.title }), index)); }), subscription.charges.map(function (charge, chargeIndex) {
|
|
5002
5312
|
if ((isTrial && !charge.trial) || (!isTrial && charge.trial))
|
|
5003
5313
|
return null;
|
|
@@ -5140,4 +5450,4 @@ var Subscriptions = function (_a) {
|
|
|
5140
5450
|
} }, { children: (subscriptions === null || subscriptions === void 0 ? void 0 : subscriptions.length) > 0 ? (jsx(SubscriptionsList, { hideExpired: hideExpired, planChangeOptions: planChangeOptions, setEditingQuoteData: setEditingQuoteData, setPayModalVisible: setPayModalVisible, subscriptions: subscriptions })) : (jsx("div", __assign({ className: "flex flex-col items-center w-full" }, { children: jsx(ErrorView, { message: "You have no subscriptions with ".concat(companyName, " yet") }) }))) })), isMobile && (jsx("div", __assign({ className: "pt-4 pb-2" }, { children: jsx(SubscriptionsNavigation, { hideExpired: hideExpired, setHideExpired: setHideExpired, setQuantityDrawerOpen: setQuantityDrawerOpen, subscriptions: subscriptions }) }))), jsx(Footer, {}), jsx(QuantityChangeDrawerDesktop, { editingQuote: quote, editingQuoteData: editingQuoteData, onClose: onClose, open: quantityDrawerOpen, openCheckout: function () { return setPayModalVisible(true); }, setEditingQuoteData: setEditingQuoteData, subscriptions: subscriptions }), jsx(Checkout, { onCancel: onCancel, onSuccess: onSuccess, onFail: onFail, open: payModalVisible, quote: quote, token: token, isMobile: isMobile })] })));
|
|
5141
5451
|
};
|
|
5142
5452
|
|
|
5143
|
-
export { BunnyProvider, Checkout, Invoice, PaymentMethod, Quote, Subscriptions, Transactions, getQuoteAmountDue, usePaymentMethod };
|
|
5453
|
+
export { BunnyProvider, Checkout, Invoice, PaymentMethod, Quote, Signup, Subscriptions, Transactions, getQuoteAmountDue, usePaymentMethod };
|