@burdenoff/microfe-billing 2026.515.1 → 2026.515.2

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.
@@ -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.withdrawals",
344
+ featureFlag: "billing.credits",
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.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
+ {"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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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@burdenoff/microfe-billing",
3
- "version": "2026.515.1",
3
+ "version": "2026.515.2",
4
4
  "description": "Billing microfrontend for Burdenoff products",
5
5
  "type": "module",
6
6
  "files": [