@burdenoff/microfe-billing 2026.516.1 → 2026.517.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/billing/BillingUserRoutes.js +1 -1
- package/dist/billing/BillingUserRoutes.js.map +1 -1
- package/dist/billing/modules/billing/hooks/useInvoices.d.ts +0 -1
- package/dist/billing/modules/billing/hooks/useInvoices.d.ts.map +1 -1
- package/dist/billing/modules/billing/hooks/useInvoices.js +20 -26
- package/dist/billing/modules/billing/hooks/useInvoices.js.map +1 -1
- package/dist/billing/modules/billing/pages/InvoicesListPage.d.ts.map +1 -1
- package/dist/billing/modules/billing/pages/InvoicesListPage.js +176 -170
- package/dist/billing/modules/billing/pages/InvoicesListPage.js.map +1 -1
- package/dist/billing/modules/billing/pages/RefundsPage.js +1 -1
- package/dist/billing/modules/billing/pages/RefundsPage.js.map +1 -1
- package/dist/billing/modules/checkout/components/OrderSummary.js +4 -4
- package/dist/billing/modules/checkout/components/OrderSummary.js.map +1 -1
- package/dist/billing/modules/checkout/pages/CheckoutPage.d.ts.map +1 -1
- package/dist/billing/modules/checkout/pages/CheckoutPage.js +2 -2
- package/dist/billing/modules/checkout/pages/CheckoutPage.js.map +1 -1
- package/dist/billing/modules/credits/pages/CreditWithdrawalPage.d.ts.map +1 -1
- package/dist/billing/modules/credits/pages/CreditWithdrawalPage.js +178 -209
- package/dist/billing/modules/credits/pages/CreditWithdrawalPage.js.map +1 -1
- package/dist/billing/modules/dashboard/pages/OverviewPage.js +2 -2
- package/dist/billing/modules/dashboard/pages/OverviewPage.js.map +1 -1
- package/dist/billing/modules/discounts/pages/DiscountsListPage.js +2 -2
- package/dist/billing/modules/discounts/pages/DiscountsListPage.js.map +1 -1
- package/dist/billing/modules/earnings/api.d.ts +0 -4
- package/dist/billing/modules/earnings/api.d.ts.map +1 -1
- package/dist/billing/modules/earnings/api.js +10 -14
- package/dist/billing/modules/earnings/api.js.map +1 -1
- package/dist/billing/modules/earnings/pages/PayoutAdminPage.d.ts.map +1 -1
- package/dist/billing/modules/earnings/pages/PayoutAdminPage.js +233 -523
- package/dist/billing/modules/earnings/pages/PayoutAdminPage.js.map +1 -1
- package/dist/billing/modules/quota/pages/QuotaPage.js +1 -1
- package/dist/billing/modules/quota/pages/QuotaPage.js.map +1 -1
- package/dist/billing/modules/quota/pages/QuotaTemplateCreatePage.d.ts.map +1 -1
- package/dist/billing/modules/quota/pages/QuotaTemplateCreatePage.js +44 -101
- package/dist/billing/modules/quota/pages/QuotaTemplateCreatePage.js.map +1 -1
- package/dist/billing/modules/quota/pages/QuotaTemplateEditPage.d.ts.map +1 -1
- package/dist/billing/modules/quota/pages/QuotaTemplateEditPage.js +46 -105
- package/dist/billing/modules/quota/pages/QuotaTemplateEditPage.js.map +1 -1
- package/dist/billing/modules/subscriptions/hooks/useSubscriptions.d.ts +1 -1
- package/dist/billing/modules/subscriptions/hooks/useSubscriptions.d.ts.map +1 -1
- package/dist/billing/modules/subscriptions/hooks/useSubscriptions.js +15 -16
- package/dist/billing/modules/subscriptions/hooks/useSubscriptions.js.map +1 -1
- package/dist/billing/modules/subscriptions/pages/SubscriptionsListPage.d.ts.map +1 -1
- package/dist/billing/modules/subscriptions/pages/SubscriptionsListPage.js +165 -158
- package/dist/billing/modules/subscriptions/pages/SubscriptionsListPage.js.map +1 -1
- package/dist/billing/modules/usage/pages/UsagePage.d.ts.map +1 -1
- package/dist/billing/modules/usage/pages/UsagePage.js +3 -3
- package/dist/billing/modules/usage/pages/UsagePage.js.map +1 -1
- package/dist/billing/shared/types/graphql.d.ts +0 -2
- package/dist/billing/shared/types/graphql.d.ts.map +1 -1
- package/dist/billing/shared/types/graphql.js.map +1 -1
- package/dist/generated/global-operations.d.ts +0 -48
- package/dist/generated/global-operations.d.ts.map +1 -1
- package/dist/generated/global-operations.js +293 -310
- package/dist/generated/global-operations.js.map +1 -1
- package/dist/generated/global-types.d.ts +0 -9
- package/dist/generated/global-types.d.ts.map +1 -1
- package/dist/generated/global-types.js.map +1 -1
- package/package.json +1 -1
|
@@ -341,7 +341,7 @@ function W() {
|
|
|
341
341
|
path: "credits/withdraw",
|
|
342
342
|
element: /* @__PURE__ */ m(H, {
|
|
343
343
|
title: "Credit withdrawal",
|
|
344
|
-
featureFlag: "billing.credits",
|
|
344
|
+
featureFlag: "billing.credits.withdrawals",
|
|
345
345
|
permission: "canWithdrawCredits",
|
|
346
346
|
eventName: "billing.credit.viewed",
|
|
347
347
|
children: /* @__PURE__ */ m(a, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BillingUserRoutes.js","names":[],"sources":["../../src/billing/BillingUserRoutes.tsx"],"sourcesContent":["import { lazy, Suspense, useEffect, type ReactNode } from 'react';\nimport { Navigate, Route, Routes, useLocation, useNavigate } from 'react-router-dom';\nimport { FeatureGate } from '@burdenoff/fe-libs/shared/feature-flags';\nimport { AccessDenied } from './shared/components';\nimport { useBillingEventEmitter, type BillingDomainEvent } from './hooks/useBillingEventEmitter';\nimport { useBillingPermissions } from './hooks/useBillingPermissions';\nimport { useBilling } from './providers/BillingProvider';\n\n// Eager load - main entry point\nimport { OverviewPage } from './modules/dashboard';\n\n// Lazy loaded pages - Subscriptions\nconst SubscriptionsListPage = lazy(() =>\n import('./modules/subscriptions').then((m) => ({ default: m.SubscriptionsListPage }))\n);\nconst SubscriptionDetailPage = lazy(() =>\n import('./modules/subscriptions').then((m) => ({ default: m.SubscriptionDetailPage }))\n);\nconst UpgradeSubscriptionPage = lazy(() =>\n import('./modules/subscriptions').then((m) => ({ default: m.UpgradeSubscriptionPage }))\n);\n\n// Lazy loaded pages - Plans (user browse pages, no create/edit/toggle)\nconst PlansBrowsePage = lazy(() =>\n import('./modules/plans').then((m) => ({ default: m.PlansBrowsePage }))\n);\nconst PlanBrowseDetailPage = lazy(() =>\n import('./modules/plans').then((m) => ({ default: m.PlanBrowseDetailPage }))\n);\n\n// Lazy loaded pages - Addons (user browse pages, no create/edit/toggle)\nconst AddonsBrowsePage = lazy(() =>\n import('./modules/addons').then((m) => ({ default: m.AddonsBrowsePage }))\n);\nconst AddonBrowseDetailPage = lazy(() =>\n import('./modules/addons').then((m) => ({ default: m.AddonBrowseDetailPage }))\n);\n\n// Lazy loaded pages - Billing (Invoices, Transactions, Payments, Refunds)\nconst InvoicesListPage = lazy(() =>\n import('./modules/billing').then((m) => ({ default: m.InvoicesListPage }))\n);\nconst InvoiceDetailPage = lazy(() =>\n import('./modules/billing').then((m) => ({ default: m.InvoiceDetailPage }))\n);\nconst TransactionsPage = lazy(() =>\n import('./modules/billing').then((m) => ({ default: m.TransactionsPage }))\n);\nconst PaymentMethodsPage = lazy(() =>\n import('./modules/billing').then((m) => ({ default: m.PaymentMethodsPage }))\n);\n\n// Lazy loaded pages - Credits\nconst CreditsPage = lazy(() =>\n import('./modules/credits').then((m) => ({ default: m.CreditsPage }))\n);\nconst CreditTransactionsPage = lazy(() =>\n import('./modules/credits').then((m) => ({ default: m.CreditTransactionsPage }))\n);\nconst CreditWithdrawalPage = lazy(() =>\n import('./modules/credits').then((m) => ({ default: m.CreditWithdrawalPage }))\n);\n\n// Lazy loaded pages - Quota (consumer view only)\nconst QuotaPage = lazy(() => import('./modules/quota').then((m) => ({ default: m.QuotaPage })));\n\n// Lazy loaded pages - Usage\nconst UsagePage = lazy(() => import('./modules/usage').then((m) => ({ default: m.UsagePage })));\n\n// Lazy loaded pages - Checkout\nconst CheckoutPage = lazy(() =>\n import('./modules/checkout').then((m) => ({ default: m.CheckoutPage }))\n);\n\n// Lazy loaded pages - Store\nconst StoreCheckoutPage = lazy(() =>\n import('./modules/store').then((m) => ({ default: m.StoreCheckoutPage }))\n);\n\n// Lazy loaded pages - Settings\nconst SettingsPage = lazy(() =>\n import('./modules/settings').then((m) => ({ default: m.SettingsPage }))\n);\nconst TeamPermissionsPage = lazy(() =>\n import('./modules/settings').then((m) => ({ default: m.TeamPermissionsPage }))\n);\nconst AffiliateDashboardPage = lazy(() =>\n import('./modules/affiliate').then((m) => ({ default: m.AffiliateDashboardPage }))\n);\nconst EarningsPage = lazy(() =>\n import('./modules/earnings').then((m) => ({ default: m.EarningsPage }))\n);\nconst PayoutsPage = lazy(() =>\n import('./modules/earnings').then((m) => ({ default: m.PayoutsPage }))\n);\n\nfunction PageLoader() {\n return (\n <div className=\"flex min-h-[400px] items-center justify-center\">\n <div className=\"h-8 w-8 animate-spin rounded-full border-4 border-primary border-t-transparent\" />\n </div>\n );\n}\n\nfunction DefaultRedirect() {\n const { basePath } = useBilling();\n const { search } = useLocation();\n const routerNavigate = useNavigate();\n const base = basePath && basePath !== '/' ? basePath.replace(/\\/$/, '') : '';\n useEffect(() => {\n routerNavigate(`${base}/overview${search}`, { replace: true });\n }, [base, routerNavigate, search]);\n return null;\n}\n\ntype BillingPermissions = ReturnType<typeof useBillingPermissions>;\ntype BillingPermissionKey = Exclude<\n {\n [K in keyof BillingPermissions]: BillingPermissions[K] extends boolean ? K : never;\n }[keyof BillingPermissions],\n 'isLoading'\n>;\n\ninterface BillingRouteGateProps {\n title: string;\n featureFlag: string;\n permission: BillingPermissionKey;\n eventName: BillingDomainEvent;\n children: ReactNode;\n}\n\nfunction FeatureDisabled({ title, featureFlag }: { title: string; featureFlag: string }) {\n return (\n <div className=\"flex min-h-[400px] items-center justify-center p-6\">\n <div className=\"max-w-md rounded-lg border border-border bg-card p-6 text-center shadow-sm\">\n <h2 className=\"text-lg font-semibold text-foreground\">{title} is not enabled</h2>\n <p className=\"mt-2 text-sm text-muted-foreground\">\n Ask an administrator to enable the <span className=\"font-mono\">{featureFlag}</span>{' '}\n feature flag for this organization.\n </p>\n </div>\n </div>\n );\n}\n\nfunction BillingRouteGate({\n title,\n featureFlag,\n permission,\n eventName,\n children,\n}: BillingRouteGateProps) {\n const permissions = useBillingPermissions();\n const { emit } = useBillingEventEmitter();\n const hasPermission = Boolean(permissions[permission]);\n\n useEffect(() => {\n if (hasPermission) {\n emit(eventName, { source: 'BillingUserRoutes' });\n }\n }, [emit, eventName, hasPermission]);\n\n if (permissions.isLoading) {\n return <PageLoader />;\n }\n\n return (\n <FeatureGate\n flag={featureFlag}\n defaultValue\n fallback={<FeatureDisabled title={title} featureFlag={featureFlag} />}\n >\n {hasPermission ? (\n children\n ) : (\n <AccessDenied message={`You don't have permission to access ${title}.`} />\n )}\n </FeatureGate>\n );\n}\n\nfunction guardedPage(props: BillingRouteGateProps): ReactNode {\n return <BillingRouteGate {...props} />;\n}\n\n/**\n * User-facing billing routes.\n * Includes overview, subscriptions, plan/addon browsing (read-only),\n * invoices, payments, credits, quota usage, checkout, and settings.\n */\nexport function BillingUserRoutes() {\n return (\n <Routes>\n <Route index element={<Navigate to=\"overview\" replace />} />\n\n {/* Dashboard */}\n <Route\n path=\"overview\"\n element={guardedPage({\n title: 'Billing overview',\n featureFlag: 'billing.overview',\n permission: 'canViewBillingAccount',\n eventName: 'billing.billing_account.viewed',\n children: <OverviewPage />,\n })}\n />\n\n {/* Subscriptions */}\n <Route\n path=\"subscriptions\"\n element={\n <BillingRouteGate\n title=\"Subscriptions\"\n featureFlag=\"billing.subscriptions\"\n permission=\"canViewSubscriptions\"\n eventName=\"billing.subscription.viewed\"\n >\n <Suspense fallback={<PageLoader />}>\n <SubscriptionsListPage />\n </Suspense>\n </BillingRouteGate>\n }\n />\n <Route\n path=\"subscriptions/:subscriptionId\"\n element={\n <BillingRouteGate\n title=\"Subscription details\"\n featureFlag=\"billing.subscriptions\"\n permission=\"canViewSubscriptions\"\n eventName=\"billing.subscription.viewed\"\n >\n <Suspense fallback={<PageLoader />}>\n <SubscriptionDetailPage />\n </Suspense>\n </BillingRouteGate>\n }\n />\n <Route\n path=\"subscriptions/:subscriptionId/upgrade\"\n element={\n <BillingRouteGate\n title=\"Subscription upgrade\"\n featureFlag=\"billing.subscriptions.upgrade\"\n permission=\"canCreateSubscription\"\n eventName=\"billing.subscription.viewed\"\n >\n <Suspense fallback={<PageLoader />}>\n <UpgradeSubscriptionPage />\n </Suspense>\n </BillingRouteGate>\n }\n />\n\n {/* Plans - user browse pages */}\n <Route\n path=\"plans\"\n element={\n <BillingRouteGate\n title=\"Plans\"\n featureFlag=\"billing.plans\"\n permission=\"canViewPlans\"\n eventName=\"billing.plan.viewed\"\n >\n <Suspense fallback={<PageLoader />}>\n <PlansBrowsePage />\n </Suspense>\n </BillingRouteGate>\n }\n />\n <Route\n path=\"plans/:planId\"\n element={\n <BillingRouteGate\n title=\"Plan details\"\n featureFlag=\"billing.plans\"\n permission=\"canViewPlans\"\n eventName=\"billing.plan.viewed\"\n >\n <Suspense fallback={<PageLoader />}>\n <PlanBrowseDetailPage />\n </Suspense>\n </BillingRouteGate>\n }\n />\n\n {/* Addons - user browse pages */}\n <Route\n path=\"addons\"\n element={\n <BillingRouteGate\n title=\"Addons\"\n featureFlag=\"billing.addons\"\n permission=\"canViewAddons\"\n eventName=\"billing.addon.viewed\"\n >\n <Suspense fallback={<PageLoader />}>\n <AddonsBrowsePage />\n </Suspense>\n </BillingRouteGate>\n }\n />\n <Route\n path=\"addons/:addonId\"\n element={\n <BillingRouteGate\n title=\"Addon details\"\n featureFlag=\"billing.addons\"\n permission=\"canViewAddons\"\n eventName=\"billing.addon.viewed\"\n >\n <Suspense fallback={<PageLoader />}>\n <AddonBrowseDetailPage />\n </Suspense>\n </BillingRouteGate>\n }\n />\n\n {/* Checkout */}\n <Route\n path=\"checkout\"\n element={\n <BillingRouteGate\n title=\"Checkout\"\n featureFlag=\"billing.checkout\"\n permission=\"canProcessPayment\"\n eventName=\"billing.checkout.viewed\"\n >\n <Suspense fallback={<PageLoader />}>\n <CheckoutPage />\n </Suspense>\n </BillingRouteGate>\n }\n />\n <Route\n path=\"checkout/:planId\"\n element={\n <BillingRouteGate\n title=\"Plan checkout\"\n featureFlag=\"billing.checkout\"\n permission=\"canProcessPayment\"\n eventName=\"billing.checkout.viewed\"\n >\n <Suspense fallback={<PageLoader />}>\n <CheckoutPage />\n </Suspense>\n </BillingRouteGate>\n }\n />\n <Route\n path=\"checkout/credits\"\n element={\n <BillingRouteGate\n title=\"Credits checkout\"\n featureFlag=\"billing.checkout.credits\"\n permission=\"canProcessPayment\"\n eventName=\"billing.checkout.viewed\"\n >\n <Suspense fallback={<PageLoader />}>\n <CheckoutPage />\n </Suspense>\n </BillingRouteGate>\n }\n />\n <Route\n path=\"checkout/addon/:addonId\"\n element={\n <BillingRouteGate\n title=\"Addon checkout\"\n featureFlag=\"billing.checkout.addons\"\n permission=\"canProcessPayment\"\n eventName=\"billing.checkout.viewed\"\n >\n <Suspense fallback={<PageLoader />}>\n <CheckoutPage />\n </Suspense>\n </BillingRouteGate>\n }\n />\n <Route\n path=\"checkout/addons\"\n element={\n <BillingRouteGate\n title=\"Addons checkout\"\n featureFlag=\"billing.checkout.addons\"\n permission=\"canProcessPayment\"\n eventName=\"billing.checkout.viewed\"\n >\n <Suspense fallback={<PageLoader />}>\n <CheckoutPage />\n </Suspense>\n </BillingRouteGate>\n }\n />\n <Route\n path=\"checkout/store/:storeOrderId\"\n element={\n <BillingRouteGate\n title=\"Store order checkout\"\n featureFlag=\"billing.checkout.store\"\n permission=\"canProcessPayment\"\n eventName=\"billing.checkout.viewed\"\n >\n <Suspense fallback={<PageLoader />}>\n <CheckoutPage />\n </Suspense>\n </BillingRouteGate>\n }\n />\n\n {/* Store Checkout - Legacy */}\n <Route\n path=\"store/:orderId\"\n element={\n <BillingRouteGate\n title=\"Store checkout\"\n featureFlag=\"billing.checkout.store\"\n permission=\"canProcessPayment\"\n eventName=\"billing.checkout.viewed\"\n >\n <Suspense fallback={<PageLoader />}>\n <StoreCheckoutPage />\n </Suspense>\n </BillingRouteGate>\n }\n />\n\n {/* Invoices */}\n <Route\n path=\"invoices\"\n element={\n <BillingRouteGate\n title=\"Invoices\"\n featureFlag=\"billing.invoices\"\n permission=\"canViewInvoices\"\n eventName=\"billing.invoice.viewed\"\n >\n <Suspense fallback={<PageLoader />}>\n <InvoicesListPage />\n </Suspense>\n </BillingRouteGate>\n }\n />\n <Route\n path=\"invoices/:invoiceId\"\n element={\n <BillingRouteGate\n title=\"Invoice details\"\n featureFlag=\"billing.invoices\"\n permission=\"canViewInvoices\"\n eventName=\"billing.invoice.viewed\"\n >\n <Suspense fallback={<PageLoader />}>\n <InvoiceDetailPage />\n </Suspense>\n </BillingRouteGate>\n }\n />\n\n {/* Payment Methods */}\n <Route\n path=\"payment-methods\"\n element={\n <BillingRouteGate\n title=\"Payment methods\"\n featureFlag=\"billing.payment_methods\"\n permission=\"canViewPaymentMethods\"\n eventName=\"billing.payment_method.viewed\"\n >\n <Suspense fallback={<PageLoader />}>\n <PaymentMethodsPage />\n </Suspense>\n </BillingRouteGate>\n }\n />\n <Route\n path=\"payment-methods/add\"\n element={\n <BillingRouteGate\n title=\"Add payment method\"\n featureFlag=\"billing.payment_methods\"\n permission=\"canManagePaymentMethods\"\n eventName=\"billing.payment_method.viewed\"\n >\n <Suspense fallback={<PageLoader />}>\n <PaymentMethodsPage />\n </Suspense>\n </BillingRouteGate>\n }\n />\n\n {/* Credits */}\n <Route\n path=\"credits\"\n element={\n <BillingRouteGate\n title=\"Credits\"\n featureFlag=\"billing.credits\"\n permission=\"canViewCredits\"\n eventName=\"billing.credit.viewed\"\n >\n <Suspense fallback={<PageLoader />}>\n <CreditsPage />\n </Suspense>\n </BillingRouteGate>\n }\n />\n <Route\n path=\"credits/withdraw\"\n element={\n <BillingRouteGate\n title=\"Credit withdrawal\"\n featureFlag=\"billing.credits\"\n permission=\"canWithdrawCredits\"\n eventName=\"billing.credit.viewed\"\n >\n <Suspense fallback={<PageLoader />}>\n <CreditWithdrawalPage />\n </Suspense>\n </BillingRouteGate>\n }\n />\n <Route\n path=\"creditTransactions/:billingAccountId\"\n element={\n <BillingRouteGate\n title=\"Credit transactions\"\n featureFlag=\"billing.credits\"\n permission=\"canViewCredits\"\n eventName=\"billing.credit.viewed\"\n >\n <Suspense fallback={<PageLoader />}>\n <CreditTransactionsPage />\n </Suspense>\n </BillingRouteGate>\n }\n />\n\n {/* Quota Usage (consumer view) */}\n <Route\n path=\"quota\"\n element={\n <BillingRouteGate\n title=\"Quota\"\n featureFlag=\"billing.quota\"\n permission=\"canViewQuotas\"\n eventName=\"billing.quota.viewed\"\n >\n <Suspense fallback={<PageLoader />}>\n <QuotaPage />\n </Suspense>\n </BillingRouteGate>\n }\n />\n\n {/* Usage */}\n <Route\n path=\"usage\"\n element={\n <BillingRouteGate\n title=\"Usage\"\n featureFlag=\"billing.usage\"\n permission=\"canViewUsage\"\n eventName=\"billing.usage.viewed\"\n >\n <Suspense fallback={<PageLoader />}>\n <UsagePage />\n </Suspense>\n </BillingRouteGate>\n }\n />\n\n <Route\n path=\"affiliate\"\n element={\n <BillingRouteGate\n title=\"Affiliate dashboard\"\n featureFlag=\"billing.affiliate\"\n permission=\"canManagePaymentMethods\"\n eventName=\"billing.affiliate.viewed\"\n >\n <Suspense fallback={<PageLoader />}>\n <AffiliateDashboardPage />\n </Suspense>\n </BillingRouteGate>\n }\n />\n\n <Route\n path=\"earnings\"\n element={\n <BillingRouteGate\n title=\"Earnings\"\n featureFlag=\"billing.earnings\"\n permission=\"canViewBillingAccount\"\n eventName=\"billing.earning.viewed\"\n >\n <Suspense fallback={<PageLoader />}>\n <EarningsPage />\n </Suspense>\n </BillingRouteGate>\n }\n />\n\n <Route\n path=\"payouts\"\n element={\n <BillingRouteGate\n title=\"Payouts\"\n featureFlag=\"billing.payouts\"\n permission=\"canViewBillingAccount\"\n eventName=\"billing.payout.viewed\"\n >\n <Suspense fallback={<PageLoader />}>\n <PayoutsPage />\n </Suspense>\n </BillingRouteGate>\n }\n />\n\n {/* Transaction History */}\n <Route\n path=\"transactions/:billingAccountId\"\n element={\n <BillingRouteGate\n title=\"Transactions\"\n featureFlag=\"billing.transactions\"\n permission=\"canViewPayments\"\n eventName=\"billing.transaction.viewed\"\n >\n <Suspense fallback={<PageLoader />}>\n <TransactionsPage />\n </Suspense>\n </BillingRouteGate>\n }\n />\n\n {/* Settings */}\n <Route\n path=\"settings\"\n element={\n <BillingRouteGate\n title=\"Billing settings\"\n featureFlag=\"billing.settings\"\n permission=\"canManageBillingAccount\"\n eventName=\"billing.billing_account.viewed\"\n >\n <Suspense fallback={<PageLoader />}>\n <SettingsPage />\n </Suspense>\n </BillingRouteGate>\n }\n />\n\n {/* Team & Permissions — billing-scope role assignments.\n * Gated on `isBillingAdmin` (billing:manage), not the broader\n * `canManageBillingAccount` (billing:update), because role\n * assignment is a privilege-escalation surface and the server-side\n * RBAC contract reserves it for Billing Admins only. */}\n <Route\n path=\"team-permissions\"\n element={\n <BillingRouteGate\n title=\"Team & Permissions\"\n featureFlag=\"billing.team_permissions\"\n permission=\"isBillingAdmin\"\n eventName=\"billing.billing_account.viewed\"\n >\n <Suspense fallback={<PageLoader />}>\n <TeamPermissionsPage />\n </Suspense>\n </BillingRouteGate>\n }\n />\n\n {/* Catch-all */}\n <Route path=\"*\" element={<DefaultRedirect />} />\n </Routes>\n );\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"BillingUserRoutes.js","names":[],"sources":["../../src/billing/BillingUserRoutes.tsx"],"sourcesContent":["import { lazy, Suspense, useEffect, type ReactNode } from 'react';\nimport { Navigate, Route, Routes, useLocation, useNavigate } from 'react-router-dom';\nimport { FeatureGate } from '@burdenoff/fe-libs/shared/feature-flags';\nimport { AccessDenied } from './shared/components';\nimport { useBillingEventEmitter, type BillingDomainEvent } from './hooks/useBillingEventEmitter';\nimport { useBillingPermissions } from './hooks/useBillingPermissions';\nimport { useBilling } from './providers/BillingProvider';\n\n// Eager load - main entry point\nimport { OverviewPage } from './modules/dashboard';\n\n// Lazy loaded pages - Subscriptions\nconst SubscriptionsListPage = lazy(() =>\n import('./modules/subscriptions').then((m) => ({ default: m.SubscriptionsListPage }))\n);\nconst SubscriptionDetailPage = lazy(() =>\n import('./modules/subscriptions').then((m) => ({ default: m.SubscriptionDetailPage }))\n);\nconst UpgradeSubscriptionPage = lazy(() =>\n import('./modules/subscriptions').then((m) => ({ default: m.UpgradeSubscriptionPage }))\n);\n\n// Lazy loaded pages - Plans (user browse pages, no create/edit/toggle)\nconst PlansBrowsePage = lazy(() =>\n import('./modules/plans').then((m) => ({ default: m.PlansBrowsePage }))\n);\nconst PlanBrowseDetailPage = lazy(() =>\n import('./modules/plans').then((m) => ({ default: m.PlanBrowseDetailPage }))\n);\n\n// Lazy loaded pages - Addons (user browse pages, no create/edit/toggle)\nconst AddonsBrowsePage = lazy(() =>\n import('./modules/addons').then((m) => ({ default: m.AddonsBrowsePage }))\n);\nconst AddonBrowseDetailPage = lazy(() =>\n import('./modules/addons').then((m) => ({ default: m.AddonBrowseDetailPage }))\n);\n\n// Lazy loaded pages - Billing (Invoices, Transactions, Payments, Refunds)\nconst InvoicesListPage = lazy(() =>\n import('./modules/billing').then((m) => ({ default: m.InvoicesListPage }))\n);\nconst InvoiceDetailPage = lazy(() =>\n import('./modules/billing').then((m) => ({ default: m.InvoiceDetailPage }))\n);\nconst TransactionsPage = lazy(() =>\n import('./modules/billing').then((m) => ({ default: m.TransactionsPage }))\n);\nconst PaymentMethodsPage = lazy(() =>\n import('./modules/billing').then((m) => ({ default: m.PaymentMethodsPage }))\n);\n\n// Lazy loaded pages - Credits\nconst CreditsPage = lazy(() =>\n import('./modules/credits').then((m) => ({ default: m.CreditsPage }))\n);\nconst CreditTransactionsPage = lazy(() =>\n import('./modules/credits').then((m) => ({ default: m.CreditTransactionsPage }))\n);\nconst CreditWithdrawalPage = lazy(() =>\n import('./modules/credits').then((m) => ({ default: m.CreditWithdrawalPage }))\n);\n\n// Lazy loaded pages - Quota (consumer view only)\nconst QuotaPage = lazy(() => import('./modules/quota').then((m) => ({ default: m.QuotaPage })));\n\n// Lazy loaded pages - Usage\nconst UsagePage = lazy(() => import('./modules/usage').then((m) => ({ default: m.UsagePage })));\n\n// Lazy loaded pages - Checkout\nconst CheckoutPage = lazy(() =>\n import('./modules/checkout').then((m) => ({ default: m.CheckoutPage }))\n);\n\n// Lazy loaded pages - Store\nconst StoreCheckoutPage = lazy(() =>\n import('./modules/store').then((m) => ({ default: m.StoreCheckoutPage }))\n);\n\n// Lazy loaded pages - Settings\nconst SettingsPage = lazy(() =>\n import('./modules/settings').then((m) => ({ default: m.SettingsPage }))\n);\nconst TeamPermissionsPage = lazy(() =>\n import('./modules/settings').then((m) => ({ default: m.TeamPermissionsPage }))\n);\nconst AffiliateDashboardPage = lazy(() =>\n import('./modules/affiliate').then((m) => ({ default: m.AffiliateDashboardPage }))\n);\nconst EarningsPage = lazy(() =>\n import('./modules/earnings').then((m) => ({ default: m.EarningsPage }))\n);\nconst PayoutsPage = lazy(() =>\n import('./modules/earnings').then((m) => ({ default: m.PayoutsPage }))\n);\n\nfunction PageLoader() {\n return (\n <div className=\"flex min-h-[400px] items-center justify-center\">\n <div className=\"h-8 w-8 animate-spin rounded-full border-4 border-primary border-t-transparent\" />\n </div>\n );\n}\n\nfunction DefaultRedirect() {\n const { basePath } = useBilling();\n const { search } = useLocation();\n const routerNavigate = useNavigate();\n const base = basePath && basePath !== '/' ? basePath.replace(/\\/$/, '') : '';\n useEffect(() => {\n routerNavigate(`${base}/overview${search}`, { replace: true });\n }, [base, routerNavigate, search]);\n return null;\n}\n\ntype BillingPermissions = ReturnType<typeof useBillingPermissions>;\ntype BillingPermissionKey = Exclude<\n {\n [K in keyof BillingPermissions]: BillingPermissions[K] extends boolean ? K : never;\n }[keyof BillingPermissions],\n 'isLoading'\n>;\n\ninterface BillingRouteGateProps {\n title: string;\n featureFlag: string;\n permission: BillingPermissionKey;\n eventName: BillingDomainEvent;\n children: ReactNode;\n}\n\nfunction FeatureDisabled({ title, featureFlag }: { title: string; featureFlag: string }) {\n return (\n <div className=\"flex min-h-[400px] items-center justify-center p-6\">\n <div className=\"max-w-md rounded-lg border border-border bg-card p-6 text-center shadow-sm\">\n <h2 className=\"text-lg font-semibold text-foreground\">{title} is not enabled</h2>\n <p className=\"mt-2 text-sm text-muted-foreground\">\n Ask an administrator to enable the <span className=\"font-mono\">{featureFlag}</span>{' '}\n feature flag for this organization.\n </p>\n </div>\n </div>\n );\n}\n\nfunction BillingRouteGate({\n title,\n featureFlag,\n permission,\n eventName,\n children,\n}: BillingRouteGateProps) {\n const permissions = useBillingPermissions();\n const { emit } = useBillingEventEmitter();\n const hasPermission = Boolean(permissions[permission]);\n\n useEffect(() => {\n if (hasPermission) {\n emit(eventName, { source: 'BillingUserRoutes' });\n }\n }, [emit, eventName, hasPermission]);\n\n if (permissions.isLoading) {\n return <PageLoader />;\n }\n\n return (\n <FeatureGate\n flag={featureFlag}\n defaultValue\n fallback={<FeatureDisabled title={title} featureFlag={featureFlag} />}\n >\n {hasPermission ? (\n children\n ) : (\n <AccessDenied message={`You don't have permission to access ${title}.`} />\n )}\n </FeatureGate>\n );\n}\n\nfunction guardedPage(props: BillingRouteGateProps): ReactNode {\n return <BillingRouteGate {...props} />;\n}\n\n/**\n * User-facing billing routes.\n * Includes overview, subscriptions, plan/addon browsing (read-only),\n * invoices, payments, credits, quota usage, checkout, and settings.\n */\nexport function BillingUserRoutes() {\n return (\n <Routes>\n <Route index element={<Navigate to=\"overview\" replace />} />\n\n {/* Dashboard */}\n <Route\n path=\"overview\"\n element={guardedPage({\n title: 'Billing overview',\n featureFlag: 'billing.overview',\n permission: 'canViewBillingAccount',\n eventName: 'billing.billing_account.viewed',\n children: <OverviewPage />,\n })}\n />\n\n {/* Subscriptions */}\n <Route\n path=\"subscriptions\"\n element={\n <BillingRouteGate\n title=\"Subscriptions\"\n featureFlag=\"billing.subscriptions\"\n permission=\"canViewSubscriptions\"\n eventName=\"billing.subscription.viewed\"\n >\n <Suspense fallback={<PageLoader />}>\n <SubscriptionsListPage />\n </Suspense>\n </BillingRouteGate>\n }\n />\n <Route\n path=\"subscriptions/:subscriptionId\"\n element={\n <BillingRouteGate\n title=\"Subscription details\"\n featureFlag=\"billing.subscriptions\"\n permission=\"canViewSubscriptions\"\n eventName=\"billing.subscription.viewed\"\n >\n <Suspense fallback={<PageLoader />}>\n <SubscriptionDetailPage />\n </Suspense>\n </BillingRouteGate>\n }\n />\n <Route\n path=\"subscriptions/:subscriptionId/upgrade\"\n element={\n <BillingRouteGate\n title=\"Subscription upgrade\"\n featureFlag=\"billing.subscriptions.upgrade\"\n permission=\"canCreateSubscription\"\n eventName=\"billing.subscription.viewed\"\n >\n <Suspense fallback={<PageLoader />}>\n <UpgradeSubscriptionPage />\n </Suspense>\n </BillingRouteGate>\n }\n />\n\n {/* Plans - user browse pages */}\n <Route\n path=\"plans\"\n element={\n <BillingRouteGate\n title=\"Plans\"\n featureFlag=\"billing.plans\"\n permission=\"canViewPlans\"\n eventName=\"billing.plan.viewed\"\n >\n <Suspense fallback={<PageLoader />}>\n <PlansBrowsePage />\n </Suspense>\n </BillingRouteGate>\n }\n />\n <Route\n path=\"plans/:planId\"\n element={\n <BillingRouteGate\n title=\"Plan details\"\n featureFlag=\"billing.plans\"\n permission=\"canViewPlans\"\n eventName=\"billing.plan.viewed\"\n >\n <Suspense fallback={<PageLoader />}>\n <PlanBrowseDetailPage />\n </Suspense>\n </BillingRouteGate>\n }\n />\n\n {/* Addons - user browse pages */}\n <Route\n path=\"addons\"\n element={\n <BillingRouteGate\n title=\"Addons\"\n featureFlag=\"billing.addons\"\n permission=\"canViewAddons\"\n eventName=\"billing.addon.viewed\"\n >\n <Suspense fallback={<PageLoader />}>\n <AddonsBrowsePage />\n </Suspense>\n </BillingRouteGate>\n }\n />\n <Route\n path=\"addons/:addonId\"\n element={\n <BillingRouteGate\n title=\"Addon details\"\n featureFlag=\"billing.addons\"\n permission=\"canViewAddons\"\n eventName=\"billing.addon.viewed\"\n >\n <Suspense fallback={<PageLoader />}>\n <AddonBrowseDetailPage />\n </Suspense>\n </BillingRouteGate>\n }\n />\n\n {/* Checkout */}\n <Route\n path=\"checkout\"\n element={\n <BillingRouteGate\n title=\"Checkout\"\n featureFlag=\"billing.checkout\"\n permission=\"canProcessPayment\"\n eventName=\"billing.checkout.viewed\"\n >\n <Suspense fallback={<PageLoader />}>\n <CheckoutPage />\n </Suspense>\n </BillingRouteGate>\n }\n />\n <Route\n path=\"checkout/:planId\"\n element={\n <BillingRouteGate\n title=\"Plan checkout\"\n featureFlag=\"billing.checkout\"\n permission=\"canProcessPayment\"\n eventName=\"billing.checkout.viewed\"\n >\n <Suspense fallback={<PageLoader />}>\n <CheckoutPage />\n </Suspense>\n </BillingRouteGate>\n }\n />\n <Route\n path=\"checkout/credits\"\n element={\n <BillingRouteGate\n title=\"Credits checkout\"\n featureFlag=\"billing.checkout.credits\"\n permission=\"canProcessPayment\"\n eventName=\"billing.checkout.viewed\"\n >\n <Suspense fallback={<PageLoader />}>\n <CheckoutPage />\n </Suspense>\n </BillingRouteGate>\n }\n />\n <Route\n path=\"checkout/addon/:addonId\"\n element={\n <BillingRouteGate\n title=\"Addon checkout\"\n featureFlag=\"billing.checkout.addons\"\n permission=\"canProcessPayment\"\n eventName=\"billing.checkout.viewed\"\n >\n <Suspense fallback={<PageLoader />}>\n <CheckoutPage />\n </Suspense>\n </BillingRouteGate>\n }\n />\n <Route\n path=\"checkout/addons\"\n element={\n <BillingRouteGate\n title=\"Addons checkout\"\n featureFlag=\"billing.checkout.addons\"\n permission=\"canProcessPayment\"\n eventName=\"billing.checkout.viewed\"\n >\n <Suspense fallback={<PageLoader />}>\n <CheckoutPage />\n </Suspense>\n </BillingRouteGate>\n }\n />\n <Route\n path=\"checkout/store/:storeOrderId\"\n element={\n <BillingRouteGate\n title=\"Store order checkout\"\n featureFlag=\"billing.checkout.store\"\n permission=\"canProcessPayment\"\n eventName=\"billing.checkout.viewed\"\n >\n <Suspense fallback={<PageLoader />}>\n <CheckoutPage />\n </Suspense>\n </BillingRouteGate>\n }\n />\n\n {/* Store Checkout - Legacy */}\n <Route\n path=\"store/:orderId\"\n element={\n <BillingRouteGate\n title=\"Store checkout\"\n featureFlag=\"billing.checkout.store\"\n permission=\"canProcessPayment\"\n eventName=\"billing.checkout.viewed\"\n >\n <Suspense fallback={<PageLoader />}>\n <StoreCheckoutPage />\n </Suspense>\n </BillingRouteGate>\n }\n />\n\n {/* Invoices */}\n <Route\n path=\"invoices\"\n element={\n <BillingRouteGate\n title=\"Invoices\"\n featureFlag=\"billing.invoices\"\n permission=\"canViewInvoices\"\n eventName=\"billing.invoice.viewed\"\n >\n <Suspense fallback={<PageLoader />}>\n <InvoicesListPage />\n </Suspense>\n </BillingRouteGate>\n }\n />\n <Route\n path=\"invoices/:invoiceId\"\n element={\n <BillingRouteGate\n title=\"Invoice details\"\n featureFlag=\"billing.invoices\"\n permission=\"canViewInvoices\"\n eventName=\"billing.invoice.viewed\"\n >\n <Suspense fallback={<PageLoader />}>\n <InvoiceDetailPage />\n </Suspense>\n </BillingRouteGate>\n }\n />\n\n {/* Payment Methods */}\n <Route\n path=\"payment-methods\"\n element={\n <BillingRouteGate\n title=\"Payment methods\"\n featureFlag=\"billing.payment_methods\"\n permission=\"canViewPaymentMethods\"\n eventName=\"billing.payment_method.viewed\"\n >\n <Suspense fallback={<PageLoader />}>\n <PaymentMethodsPage />\n </Suspense>\n </BillingRouteGate>\n }\n />\n <Route\n path=\"payment-methods/add\"\n element={\n <BillingRouteGate\n title=\"Add payment method\"\n featureFlag=\"billing.payment_methods\"\n permission=\"canManagePaymentMethods\"\n eventName=\"billing.payment_method.viewed\"\n >\n <Suspense fallback={<PageLoader />}>\n <PaymentMethodsPage />\n </Suspense>\n </BillingRouteGate>\n }\n />\n\n {/* Credits */}\n <Route\n path=\"credits\"\n element={\n <BillingRouteGate\n title=\"Credits\"\n featureFlag=\"billing.credits\"\n permission=\"canViewCredits\"\n eventName=\"billing.credit.viewed\"\n >\n <Suspense fallback={<PageLoader />}>\n <CreditsPage />\n </Suspense>\n </BillingRouteGate>\n }\n />\n <Route\n path=\"credits/withdraw\"\n element={\n <BillingRouteGate\n title=\"Credit withdrawal\"\n featureFlag=\"billing.credits.withdrawals\"\n permission=\"canWithdrawCredits\"\n eventName=\"billing.credit.viewed\"\n >\n <Suspense fallback={<PageLoader />}>\n <CreditWithdrawalPage />\n </Suspense>\n </BillingRouteGate>\n }\n />\n <Route\n path=\"creditTransactions/:billingAccountId\"\n element={\n <BillingRouteGate\n title=\"Credit transactions\"\n featureFlag=\"billing.credits\"\n permission=\"canViewCredits\"\n eventName=\"billing.credit.viewed\"\n >\n <Suspense fallback={<PageLoader />}>\n <CreditTransactionsPage />\n </Suspense>\n </BillingRouteGate>\n }\n />\n\n {/* Quota Usage (consumer view) */}\n <Route\n path=\"quota\"\n element={\n <BillingRouteGate\n title=\"Quota\"\n featureFlag=\"billing.quota\"\n permission=\"canViewQuotas\"\n eventName=\"billing.quota.viewed\"\n >\n <Suspense fallback={<PageLoader />}>\n <QuotaPage />\n </Suspense>\n </BillingRouteGate>\n }\n />\n\n {/* Usage */}\n <Route\n path=\"usage\"\n element={\n <BillingRouteGate\n title=\"Usage\"\n featureFlag=\"billing.usage\"\n permission=\"canViewUsage\"\n eventName=\"billing.usage.viewed\"\n >\n <Suspense fallback={<PageLoader />}>\n <UsagePage />\n </Suspense>\n </BillingRouteGate>\n }\n />\n\n <Route\n path=\"affiliate\"\n element={\n <BillingRouteGate\n title=\"Affiliate dashboard\"\n featureFlag=\"billing.affiliate\"\n permission=\"canManagePaymentMethods\"\n eventName=\"billing.affiliate.viewed\"\n >\n <Suspense fallback={<PageLoader />}>\n <AffiliateDashboardPage />\n </Suspense>\n </BillingRouteGate>\n }\n />\n\n <Route\n path=\"earnings\"\n element={\n <BillingRouteGate\n title=\"Earnings\"\n featureFlag=\"billing.earnings\"\n permission=\"canViewBillingAccount\"\n eventName=\"billing.earning.viewed\"\n >\n <Suspense fallback={<PageLoader />}>\n <EarningsPage />\n </Suspense>\n </BillingRouteGate>\n }\n />\n\n <Route\n path=\"payouts\"\n element={\n <BillingRouteGate\n title=\"Payouts\"\n featureFlag=\"billing.payouts\"\n permission=\"canViewBillingAccount\"\n eventName=\"billing.payout.viewed\"\n >\n <Suspense fallback={<PageLoader />}>\n <PayoutsPage />\n </Suspense>\n </BillingRouteGate>\n }\n />\n\n {/* Transaction History */}\n <Route\n path=\"transactions/:billingAccountId\"\n element={\n <BillingRouteGate\n title=\"Transactions\"\n featureFlag=\"billing.transactions\"\n permission=\"canViewPayments\"\n eventName=\"billing.transaction.viewed\"\n >\n <Suspense fallback={<PageLoader />}>\n <TransactionsPage />\n </Suspense>\n </BillingRouteGate>\n }\n />\n\n {/* Settings */}\n <Route\n path=\"settings\"\n element={\n <BillingRouteGate\n title=\"Billing settings\"\n featureFlag=\"billing.settings\"\n permission=\"canManageBillingAccount\"\n eventName=\"billing.billing_account.viewed\"\n >\n <Suspense fallback={<PageLoader />}>\n <SettingsPage />\n </Suspense>\n </BillingRouteGate>\n }\n />\n\n {/* Team & Permissions — billing-scope role assignments.\n * Gated on `isBillingAdmin` (billing:manage), not the broader\n * `canManageBillingAccount` (billing:update), because role\n * assignment is a privilege-escalation surface and the server-side\n * RBAC contract reserves it for Billing Admins only. */}\n <Route\n path=\"team-permissions\"\n element={\n <BillingRouteGate\n title=\"Team & Permissions\"\n featureFlag=\"billing.team_permissions\"\n permission=\"isBillingAdmin\"\n eventName=\"billing.billing_account.viewed\"\n >\n <Suspense fallback={<PageLoader />}>\n <TeamPermissionsPage />\n </Suspense>\n </BillingRouteGate>\n }\n />\n\n {/* Catch-all */}\n <Route path=\"*\" element={<DefaultRedirect />} />\n </Routes>\n );\n}\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useInvoices.d.ts","sourceRoot":"","sources":["../../../../../src/billing/modules/billing/hooks/useInvoices.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAcH,OAAO,KAAK,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAEpE,UAAU,kBAAkB;IAC1B,MAAM,CAAC,EAAE,aAAa,CAAC;IACvB,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,UAAU,iBAAiB;IACzB,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,YAAY,EAAE,OAAO,EAAE,CAAC;IACxB,YAAY,EAAE,OAAO,EAAE,CAAC;IACxB,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,EAAE,KAAK,GAAG,SAAS,CAAC;IACzB,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC9B;AAED,UAAU,2BAA2B;IACnC,MAAM,CAAC,EAAE,aAAa,CAAC;IACvB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"useInvoices.d.ts","sourceRoot":"","sources":["../../../../../src/billing/modules/billing/hooks/useInvoices.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAcH,OAAO,KAAK,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAEpE,UAAU,kBAAkB;IAC1B,MAAM,CAAC,EAAE,aAAa,CAAC;IACvB,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,UAAU,iBAAiB;IACzB,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,YAAY,EAAE,OAAO,EAAE,CAAC;IACxB,YAAY,EAAE,OAAO,EAAE,CAAC;IACxB,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,EAAE,KAAK,GAAG,SAAS,CAAC;IACzB,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC9B;AAED,UAAU,2BAA2B;IACnC,MAAM,CAAC,EAAE,aAAa,CAAC;IACvB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,UAAU,0BAA0B;IAClC,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,EAAE,KAAK,GAAG,SAAS,CAAC;IACzB,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC9B;AAED,UAAU,gBAAgB;IACxB,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC;IACxB,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,EAAE,KAAK,GAAG,SAAS,CAAC;IACzB,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC9B;AAED,UAAU,yBAAyB;IACjC,eAAe,EAAE,CAAC,cAAc,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IACxF,UAAU,EAAE,CACV,SAAS,EAAE,MAAM,EACjB,eAAe,EAAE,MAAM,EACvB,gBAAgB,EAAE,MAAM,KACrB,OAAO,CAAC,OAAO,CAAC,CAAC;IACtB,WAAW,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAC/E,YAAY,EAAE,OAAO,CAAC;IACtB,QAAQ,EAAE,OAAO,CAAC;IAClB,SAAS,EAAE,OAAO,CAAC;CACpB;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,OAAO,GAAE,kBAAuB,GAAG,iBAAiB,CA8B/E;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAClC,OAAO,GAAE,2BAAgC,GACxC,0BAA0B,CAuB5B;AAED;;GAEG;AACH,wBAAgB,UAAU,CACxB,EAAE,EAAE,MAAM,GAAG,SAAS,EACtB,gBAAgB,EAAE,MAAM,GAAG,SAAS,GACnC,gBAAgB,CAiBlB;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,aAAa,EAAE,MAAM,GAAG,SAAS,EACjC,gBAAgB,EAAE,MAAM,GAAG,SAAS,GACnC,gBAAgB,CAiBlB;AAED;;GAEG;AACH,wBAAgB,mBAAmB,IAAI,yBAAyB,CAmE/D"}
|
|
@@ -1,33 +1,27 @@
|
|
|
1
|
-
import { GetInvoicesDocument as e, useGenerateInvoiceMutation as t, useGetInvoiceQuery as n,
|
|
2
|
-
import { useCallback as o } from "react";
|
|
3
|
-
import { useApolloClient as
|
|
1
|
+
import { GetInvoicesDocument as e, useGenerateInvoiceMutation as t, useGetInvoiceQuery as n, useGetInvoicesQuery as r, usePayInvoiceMutation as i, useVoidInvoiceMutation as a } from "../../../../generated/global-operations.js";
|
|
2
|
+
import { useCallback as o, useMemo as s } from "react";
|
|
3
|
+
import { useApolloClient as c } from "@apollo/client/react";
|
|
4
4
|
//#region src/billing/modules/billing/hooks/useInvoices.ts
|
|
5
|
-
function
|
|
6
|
-
let { status: t, billingAccountId: n
|
|
5
|
+
function l(e = {}) {
|
|
6
|
+
let { status: t, billingAccountId: n } = e, { data: i, loading: a, error: c, refetch: l } = r({
|
|
7
7
|
variables: {
|
|
8
8
|
status: t,
|
|
9
|
-
billingAccountId: n
|
|
10
|
-
page: i,
|
|
11
|
-
pageSize: a,
|
|
12
|
-
search: s || void 0
|
|
9
|
+
billingAccountId: n
|
|
13
10
|
},
|
|
14
11
|
fetchPolicy: "cache-and-network"
|
|
15
|
-
}),
|
|
16
|
-
await d();
|
|
17
|
-
}, [d]);
|
|
12
|
+
}), u = s(() => i?.getInvoices || [], [i?.getInvoices]);
|
|
18
13
|
return {
|
|
19
|
-
invoices:
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
refetch: f
|
|
14
|
+
invoices: u,
|
|
15
|
+
openInvoices: s(() => u.filter((e) => e.status === "OPEN"), [u]),
|
|
16
|
+
paidInvoices: s(() => u.filter((e) => e.status === "PAID"), [u]),
|
|
17
|
+
isLoading: a,
|
|
18
|
+
error: c,
|
|
19
|
+
refetch: o(async () => {
|
|
20
|
+
await l();
|
|
21
|
+
}, [l])
|
|
28
22
|
};
|
|
29
23
|
}
|
|
30
|
-
function
|
|
24
|
+
function u(e, t) {
|
|
31
25
|
let { data: r, loading: i, error: a, refetch: s } = n({
|
|
32
26
|
variables: {
|
|
33
27
|
id: e,
|
|
@@ -45,8 +39,8 @@ function l(e, t) {
|
|
|
45
39
|
refetch: c
|
|
46
40
|
};
|
|
47
41
|
}
|
|
48
|
-
function
|
|
49
|
-
let n =
|
|
42
|
+
function d() {
|
|
43
|
+
let n = c(), [r, { loading: s }] = t(), [l, { loading: u }] = i(), [d, { loading: f }] = a();
|
|
50
44
|
return {
|
|
51
45
|
generateInvoice: o(async (t, i) => {
|
|
52
46
|
try {
|
|
@@ -82,12 +76,12 @@ function u() {
|
|
|
82
76
|
throw console.error("Failed to void invoice:", e), e;
|
|
83
77
|
}
|
|
84
78
|
}, [d, n]),
|
|
85
|
-
isGenerating:
|
|
79
|
+
isGenerating: s,
|
|
86
80
|
isPaying: u,
|
|
87
81
|
isVoiding: f
|
|
88
82
|
};
|
|
89
83
|
}
|
|
90
84
|
//#endregion
|
|
91
|
-
export {
|
|
85
|
+
export { u as useInvoice, d as useInvoiceMutations, l as useInvoices };
|
|
92
86
|
|
|
93
87
|
//# sourceMappingURL=useInvoices.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useInvoices.js","names":[],"sources":["../../../../../src/billing/modules/billing/hooks/useInvoices.ts"],"sourcesContent":["/**\n * Billing Module - useInvoices Hook\n * Provides access to invoice data and mutations\n */\n\nimport { useApolloClient } from '@apollo/client/react';\nimport { useCallback, useMemo } from 'react';\nimport {\n useGetInvoicesQuery,\n useGetInvoiceQuery,\n useGetInvoiceByNumberQuery,\n useGenerateInvoiceMutation,\n usePayInvoiceMutation,\n useVoidInvoiceMutation,\n GetInvoicesDocument,\n useGetPaginatedInvoicesQuery,\n} from '../../../../generated/global-operations';\nimport type { Invoice, InvoiceStatus } from '../../../shared/types';\n\ninterface UseInvoicesOptions {\n status?: InvoiceStatus;\n billingAccountId?: string;\n}\n\ninterface UseInvoicesResult {\n invoices: Invoice[];\n openInvoices: Invoice[];\n paidInvoices: Invoice[];\n isLoading: boolean;\n error: Error | undefined;\n refetch: () => Promise<void>;\n}\n\ninterface UsePaginatedInvoicesOptions {\n status?: InvoiceStatus;\n billingAccountId?: string;\n page?: number;\n pageSize?: number;\n
|
|
1
|
+
{"version":3,"file":"useInvoices.js","names":[],"sources":["../../../../../src/billing/modules/billing/hooks/useInvoices.ts"],"sourcesContent":["/**\n * Billing Module - useInvoices Hook\n * Provides access to invoice data and mutations\n */\n\nimport { useApolloClient } from '@apollo/client/react';\nimport { useCallback, useMemo } from 'react';\nimport {\n useGetInvoicesQuery,\n useGetInvoiceQuery,\n useGetInvoiceByNumberQuery,\n useGenerateInvoiceMutation,\n usePayInvoiceMutation,\n useVoidInvoiceMutation,\n GetInvoicesDocument,\n useGetPaginatedInvoicesQuery,\n} from '../../../../generated/global-operations';\nimport type { Invoice, InvoiceStatus } from '../../../shared/types';\n\ninterface UseInvoicesOptions {\n status?: InvoiceStatus;\n billingAccountId?: string;\n}\n\ninterface UseInvoicesResult {\n invoices: Invoice[];\n openInvoices: Invoice[];\n paidInvoices: Invoice[];\n isLoading: boolean;\n error: Error | undefined;\n refetch: () => Promise<void>;\n}\n\ninterface UsePaginatedInvoicesOptions {\n status?: InvoiceStatus;\n billingAccountId?: string;\n page?: number;\n pageSize?: number;\n}\n\ninterface UsePaginatedInvoicesResult {\n invoices: Invoice[];\n totalCount: number;\n hasMore: boolean;\n page: number;\n pageSize: number;\n totalPages: number;\n isLoading: boolean;\n error: Error | undefined;\n refetch: () => Promise<void>;\n}\n\ninterface UseInvoiceResult {\n invoice: Invoice | null;\n isLoading: boolean;\n error: Error | undefined;\n refetch: () => Promise<void>;\n}\n\ninterface UseInvoiceMutationsResult {\n generateInvoice: (subscriptionId: string, billingAccountId: string) => Promise<Invoice>;\n payInvoice: (\n invoiceId: string,\n paymentMethodId: string,\n billingAccountId: string\n ) => Promise<Invoice>;\n voidInvoice: (invoiceId: string, billingAccountId: string) => Promise<Invoice>;\n isGenerating: boolean;\n isPaying: boolean;\n isVoiding: boolean;\n}\n\n/**\n * Hook for fetching invoices\n */\nexport function useInvoices(options: UseInvoicesOptions = {}): UseInvoicesResult {\n const { status, billingAccountId } = options;\n\n const { data, loading, error, refetch } = useGetInvoicesQuery({\n variables: { status, billingAccountId },\n fetchPolicy: 'cache-and-network',\n });\n\n const invoices = useMemo<Invoice[]>(() => data?.getInvoices || [], [data?.getInvoices]);\n\n const openInvoices = useMemo(() => {\n return invoices.filter((inv) => inv.status === ('OPEN' as InvoiceStatus));\n }, [invoices]);\n\n const paidInvoices = useMemo(() => {\n return invoices.filter((inv) => inv.status === ('PAID' as InvoiceStatus));\n }, [invoices]);\n\n const handleRefetch = useCallback(async () => {\n await refetch();\n }, [refetch]);\n\n return {\n invoices,\n openInvoices,\n paidInvoices,\n isLoading: loading,\n error: error as Error | undefined,\n refetch: handleRefetch,\n };\n}\n\n/**\n * Hook for fetching paginated invoices\n */\nexport function usePaginatedInvoices(\n options: UsePaginatedInvoicesOptions = {}\n): UsePaginatedInvoicesResult {\n const { status, billingAccountId, page = 1, pageSize = 20 } = options;\n\n const { data, loading, error, refetch } = useGetPaginatedInvoicesQuery({\n variables: { status, billingAccountId, page, pageSize },\n fetchPolicy: 'cache-and-network',\n });\n\n const handleRefetch = useCallback(async () => {\n await refetch();\n }, [refetch]);\n\n return {\n invoices: data?.getPaginatedInvoices?.invoices || [],\n totalCount: data?.getPaginatedInvoices?.totalCount || 0,\n hasMore: data?.getPaginatedInvoices?.hasMore || false,\n page: data?.getPaginatedInvoices?.page || 1,\n pageSize: data?.getPaginatedInvoices?.pageSize || pageSize,\n totalPages: data?.getPaginatedInvoices?.totalPages || 0,\n isLoading: loading,\n error: error as Error | undefined,\n refetch: handleRefetch,\n };\n}\n\n/**\n * Hook for fetching a single invoice by ID\n */\nexport function useInvoice(\n id: string | undefined,\n billingAccountId: string | undefined\n): UseInvoiceResult {\n const { data, loading, error, refetch } = useGetInvoiceQuery({\n variables: { id: id!, billingAccountId: billingAccountId! },\n skip: !id || !billingAccountId,\n fetchPolicy: 'cache-and-network',\n });\n\n const handleRefetch = useCallback(async () => {\n await refetch();\n }, [refetch]);\n\n return {\n invoice: data?.getInvoice || null,\n isLoading: loading,\n error: error as Error | undefined,\n refetch: handleRefetch,\n };\n}\n\n/**\n * Hook for fetching an invoice by number\n */\nexport function useInvoiceByNumber(\n invoiceNumber: string | undefined,\n billingAccountId: string | undefined\n): UseInvoiceResult {\n const { data, loading, error, refetch } = useGetInvoiceByNumberQuery({\n variables: { invoiceNumber: invoiceNumber!, billingAccountId: billingAccountId! },\n skip: !invoiceNumber || !billingAccountId,\n fetchPolicy: 'cache-and-network',\n });\n\n const handleRefetch = useCallback(async () => {\n await refetch();\n }, [refetch]);\n\n return {\n invoice: data?.getInvoiceByNumber || null,\n isLoading: loading,\n error: error as Error | undefined,\n refetch: handleRefetch,\n };\n}\n\n/**\n * Hook for invoice mutations\n */\nexport function useInvoiceMutations(): UseInvoiceMutationsResult {\n const client = useApolloClient();\n\n const [generateInvoiceMutation, { loading: isGenerating }] = useGenerateInvoiceMutation();\n const [payInvoiceMutation, { loading: isPaying }] = usePayInvoiceMutation();\n const [voidInvoiceMutation, { loading: isVoiding }] = useVoidInvoiceMutation();\n\n const generateInvoice = useCallback(\n async (subscriptionId: string, billingAccountId: string): Promise<Invoice> => {\n try {\n const { data } = await generateInvoiceMutation({\n variables: { subscriptionId, billingAccountId },\n });\n await client.refetchQueries({ include: [GetInvoicesDocument] });\n return data!.generateInvoice;\n } catch (error) {\n console.error('Failed to generate invoice:', error);\n throw error;\n }\n },\n [generateInvoiceMutation, client]\n );\n\n const payInvoice = useCallback(\n async (\n invoiceId: string,\n paymentMethodId: string,\n billingAccountId: string\n ): Promise<Invoice> => {\n try {\n const { data } = await payInvoiceMutation({\n variables: { invoiceId, paymentMethodId, billingAccountId },\n });\n await client.refetchQueries({ include: [GetInvoicesDocument] });\n return data!.payInvoice;\n } catch (error) {\n console.error('Failed to pay invoice:', error);\n throw error;\n }\n },\n [payInvoiceMutation, client]\n );\n\n const voidInvoice = useCallback(\n async (invoiceId: string, billingAccountId: string): Promise<Invoice> => {\n try {\n const { data } = await voidInvoiceMutation({\n variables: { invoiceId, billingAccountId },\n });\n await client.refetchQueries({ include: [GetInvoicesDocument] });\n return data!.voidInvoice;\n } catch (error) {\n console.error('Failed to void invoice:', error);\n throw error;\n }\n },\n [voidInvoiceMutation, client]\n );\n\n return {\n generateInvoice,\n payInvoice,\n voidInvoice,\n isGenerating,\n isPaying,\n isVoiding,\n };\n}\n"],"mappings":";;;;AA2EA,SAAgB,EAAY,IAA8B,EAAE,EAAqB;CAC/E,IAAM,EAAE,WAAQ,wBAAqB,GAE/B,EAAE,SAAM,YAAS,UAAO,eAAY,EAAoB;EAC5D,WAAW;GAAE;GAAQ;GAAkB;EACvC,aAAa;EACd,CAAC,EAEI,IAAW,QAAyB,GAAM,eAAe,EAAE,EAAE,CAAC,GAAM,YAAY,CAAC;AAcvF,QAAO;EACL;EACA,cAdmB,QACZ,EAAS,QAAQ,MAAQ,EAAI,WAAY,OAAyB,EACxE,CAAC,EAAS,CAAC;EAaZ,cAXmB,QACZ,EAAS,QAAQ,MAAQ,EAAI,WAAY,OAAyB,EACxE,CAAC,EAAS,CAAC;EAUZ,WAAW;EACJ;EACP,SAVoB,EAAY,YAAY;AAC5C,SAAM,GAAS;KACd,CAAC,EAAQ,CAAC;EASZ;;AAoCH,SAAgB,EACd,GACA,GACkB;CAClB,IAAM,EAAE,SAAM,YAAS,UAAO,eAAY,EAAmB;EAC3D,WAAW;GAAM;GAAuB;GAAmB;EAC3D,MAAM,CAAC,KAAM,CAAC;EACd,aAAa;EACd,CAAC,EAEI,IAAgB,EAAY,YAAY;AAC5C,QAAM,GAAS;IACd,CAAC,EAAQ,CAAC;AAEb,QAAO;EACL,SAAS,GAAM,cAAc;EAC7B,WAAW;EACJ;EACP,SAAS;EACV;;AA+BH,SAAgB,IAAiD;CAC/D,IAAM,IAAS,GAAiB,EAE1B,CAAC,GAAyB,EAAE,SAAS,OAAkB,GAA4B,EACnF,CAAC,GAAoB,EAAE,SAAS,OAAc,GAAuB,EACrE,CAAC,GAAqB,EAAE,SAAS,OAAe,GAAwB;AAsD9E,QAAO;EACL,iBArDsB,EACtB,OAAO,GAAwB,MAA+C;AAC5E,OAAI;IACF,IAAM,EAAE,YAAS,MAAM,EAAwB,EAC7C,WAAW;KAAE;KAAgB;KAAkB,EAChD,CAAC;AAEF,WADA,MAAM,EAAO,eAAe,EAAE,SAAS,CAAC,EAAoB,EAAE,CAAC,EACxD,EAAM;YACN,GAAO;AAEd,UADA,QAAQ,MAAM,+BAA+B,EAAM,EAC7C;;KAGV,CAAC,GAAyB,EAAO,CAClC;EAwCC,YAtCiB,EACjB,OACE,GACA,GACA,MACqB;AACrB,OAAI;IACF,IAAM,EAAE,YAAS,MAAM,EAAmB,EACxC,WAAW;KAAE;KAAW;KAAiB;KAAkB,EAC5D,CAAC;AAEF,WADA,MAAM,EAAO,eAAe,EAAE,SAAS,CAAC,EAAoB,EAAE,CAAC,EACxD,EAAM;YACN,GAAO;AAEd,UADA,QAAQ,MAAM,0BAA0B,EAAM,EACxC;;KAGV,CAAC,GAAoB,EAAO,CAC7B;EAqBC,aAnBkB,EAClB,OAAO,GAAmB,MAA+C;AACvE,OAAI;IACF,IAAM,EAAE,YAAS,MAAM,EAAoB,EACzC,WAAW;KAAE;KAAW;KAAkB,EAC3C,CAAC;AAEF,WADA,MAAM,EAAO,eAAe,EAAE,SAAS,CAAC,EAAoB,EAAE,CAAC,EACxD,EAAM;YACN,GAAO;AAEd,UADA,QAAQ,MAAM,2BAA2B,EAAM,EACzC;;KAGV,CAAC,GAAqB,EAAO,CAC9B;EAMC;EACA;EACA;EACD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"InvoicesListPage.d.ts","sourceRoot":"","sources":["../../../../../src/billing/modules/billing/pages/InvoicesListPage.tsx"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,
|
|
1
|
+
{"version":3,"file":"InvoicesListPage.d.ts","sourceRoot":"","sources":["../../../../../src/billing/modules/billing/pages/InvoicesListPage.tsx"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAgC,KAAK,EAAE,EAAE,MAAM,OAAO,CAAC;AAwB9D,eAAO,MAAM,gBAAgB,EAAE,EAsV9B,CAAC"}
|